From 835db974b5cd69028b6dca0c441acde25005469b Mon Sep 17 00:00:00 2001 From: Kristoffer Dalby Date: Mon, 30 Mar 2026 17:10:53 +0000 Subject: [PATCH] testdata: strip unused fields from all test data files (23MB -> 4MB) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Strip fields not consumed by any test from all 594 HuJSON test data files: grant_results/ (248 files, 21MB -> 1.8MB): - Remove: timestamp, propagation_wait_seconds, input.policy_file, input.grants_section, input.api_endpoint, input.api_method, topology.nodes.mts_name, topology.nodes.socket, topology.nodes.user_id, captures.commands, captures.packet_filter_matches, captures.whois - V14-V16, V26-V36: keep stripped netmap (Peers.Name/AllowedIPs/PrimaryRoutes + PacketFilterRules) for via_compat_test.go compatibility - V17-V25: strip netmap (old topology, incompatible with via_compat harness) acl_results/ (215 files, 1.4MB -> 1.2MB): - Remove: timestamp, propagation_wait_seconds, input.policy_file, input.api_endpoint, input.api_response_code, entire topology section (parsed by Go struct but completely ignored — nodes are hardcoded) routes_results/ (92 files, unchanged — topology is actively used): - Remove: timestamp, propagation_wait_seconds, input.policy_file, input.api_endpoint, input.api_response_code ssh_results/ (39 files, unchanged — minimal to begin with): - Remove: policy_file --- .../v2/testdata/acl_results/ACL-A01.hujson | 112 +- .../v2/testdata/acl_results/ACL-A02.hujson | 112 +- .../v2/testdata/acl_results/ACL-A03.hujson | 113 +- .../v2/testdata/acl_results/ACL-A04.hujson | 127 +- .../v2/testdata/acl_results/ACL-A05.hujson | 112 +- .../v2/testdata/acl_results/ACL-A06.hujson | 112 +- .../v2/testdata/acl_results/ACL-A07.hujson | 128 +- .../v2/testdata/acl_results/ACL-A08.hujson | 112 +- .../v2/testdata/acl_results/ACL-A09.hujson | 127 +- .../v2/testdata/acl_results/ACL-A10.hujson | 117 +- .../v2/testdata/acl_results/ACL-A11.hujson | 117 +- .../v2/testdata/acl_results/ACL-A12.hujson | 127 +- .../v2/testdata/acl_results/ACL-A13.hujson | 127 +- .../v2/testdata/acl_results/ACL-A14.hujson | 127 +- .../v2/testdata/acl_results/ACL-A15.hujson | 113 +- .../v2/testdata/acl_results/ACL-A16.hujson | 113 +- .../v2/testdata/acl_results/ACL-A17.hujson | 129 +- .../v2/testdata/acl_results/ACL-AH01.hujson | 153 +- .../v2/testdata/acl_results/ACL-AH02.hujson | 118 +- .../v2/testdata/acl_results/ACL-AH03.hujson | 114 +- .../v2/testdata/acl_results/ACL-AH04.hujson | 117 +- .../v2/testdata/acl_results/ACL-AH05.hujson | 112 +- .../v2/testdata/acl_results/ACL-AH06.hujson | 112 +- .../v2/testdata/acl_results/ACL-AR01.hujson | 125 +- .../v2/testdata/acl_results/ACL-AR02.hujson | 137 +- .../v2/testdata/acl_results/ACL-AR03.hujson | 133 +- .../v2/testdata/acl_results/ACL-AR04.hujson | 143 +- .../v2/testdata/acl_results/ACL-AR05.hujson | 146 +- .../v2/testdata/acl_results/ACL-AR06.hujson | 125 +- .../v2/testdata/acl_results/ACL-AT01.hujson | 116 +- .../v2/testdata/acl_results/ACL-AT02.hujson | 116 +- .../v2/testdata/acl_results/ACL-AT03.hujson | 116 +- .../v2/testdata/acl_results/ACL-AT04.hujson | 120 +- .../v2/testdata/acl_results/ACL-AT05.hujson | 130 +- .../v2/testdata/acl_results/ACL-AT06.hujson | 156 +- .../v2/testdata/acl_results/ACL-AU01.hujson | 117 +- .../v2/testdata/acl_results/ACL-AU02.hujson | 117 +- .../v2/testdata/acl_results/ACL-AU03.hujson | 127 +- .../v2/testdata/acl_results/ACL-AU04.hujson | 112 +- .../v2/testdata/acl_results/ACL-AU05.hujson | 112 +- .../v2/testdata/acl_results/ACL-AU06.hujson | 114 +- .../v2/testdata/acl_results/ACL-C01.hujson | 133 +- .../v2/testdata/acl_results/ACL-C02.hujson | 139 +- .../v2/testdata/acl_results/ACL-C03.hujson | 147 +- .../v2/testdata/acl_results/ACL-C04.hujson | 161 +- .../v2/testdata/acl_results/ACL-C05.hujson | 123 +- .../v2/testdata/acl_results/ACL-C06.hujson | 116 +- .../v2/testdata/acl_results/ACL-C07.hujson | 141 +- .../v2/testdata/acl_results/ACL-C08.hujson | 116 +- .../v2/testdata/acl_results/ACL-C09.hujson | 189 +- .../v2/testdata/acl_results/ACL-C10.hujson | 144 +- .../v2/testdata/acl_results/ACL-D01.hujson | 125 +- .../v2/testdata/acl_results/ACL-D02.hujson | 118 +- .../v2/testdata/acl_results/ACL-D03.hujson | 153 +- .../v2/testdata/acl_results/ACL-D04.hujson | 145 +- .../v2/testdata/acl_results/ACL-D05.hujson | 113 +- .../v2/testdata/acl_results/ACL-D06.hujson | 113 +- .../v2/testdata/acl_results/ACL-D07.hujson | 113 +- .../v2/testdata/acl_results/ACL-D08.hujson | 135 +- .../v2/testdata/acl_results/ACL-E01.hujson | 144 +- .../v2/testdata/acl_results/ACL-E02.hujson | 152 +- .../v2/testdata/acl_results/ACL-E03.hujson | 144 +- .../v2/testdata/acl_results/ACL-E04.hujson | 112 +- .../v2/testdata/acl_results/ACL-E05.hujson | 112 +- .../v2/testdata/acl_results/ACL-E06.hujson | 112 +- .../v2/testdata/acl_results/ACL-E07.hujson | 117 +- .../v2/testdata/acl_results/ACL-E08.hujson | 117 +- .../v2/testdata/acl_results/ACL-E09.hujson | 118 +- .../v2/testdata/acl_results/ACL-ERR01.hujson | 61 +- .../v2/testdata/acl_results/ACL-ERR02.hujson | 61 +- .../v2/testdata/acl_results/ACL-ERR03.hujson | 61 +- .../v2/testdata/acl_results/ACL-ERR04.hujson | 61 +- .../v2/testdata/acl_results/ACL-ERR05.hujson | 61 +- .../v2/testdata/acl_results/ACL-ERR06.hujson | 61 +- .../v2/testdata/acl_results/ACL-ERR07.hujson | 61 +- .../v2/testdata/acl_results/ACL-ERR08.hujson | 69 +- .../v2/testdata/acl_results/ACL-ERR09.hujson | 69 +- .../v2/testdata/acl_results/ACL-H01.hujson | 112 +- .../v2/testdata/acl_results/ACL-H02.hujson | 144 +- .../v2/testdata/acl_results/ACL-H03.hujson | 116 +- .../v2/testdata/acl_results/ACL-H04.hujson | 112 +- .../v2/testdata/acl_results/ACL-H05.hujson | 113 +- .../v2/testdata/acl_results/ACL-H06.hujson | 119 +- .../v2/testdata/acl_results/ACL-H07.hujson | 117 +- .../v2/testdata/acl_results/ACL-H08.hujson | 112 +- .../v2/testdata/acl_results/ACL-K01.hujson | 108 +- .../v2/testdata/acl_results/ACL-K02.hujson | 123 +- .../v2/testdata/acl_results/ACL-K03.hujson | 108 +- .../v2/testdata/acl_results/ACL-K04.hujson | 108 +- .../v2/testdata/acl_results/ACL-K05.hujson | 112 +- .../v2/testdata/acl_results/ACL-M01.hujson | 114 +- .../v2/testdata/acl_results/ACL-M02.hujson | 119 +- .../v2/testdata/acl_results/ACL-M03.hujson | 119 +- .../v2/testdata/acl_results/ACL-M04.hujson | 120 +- .../v2/testdata/acl_results/ACL-M05.hujson | 120 +- .../v2/testdata/acl_results/ACL-M06.hujson | 113 +- .../v2/testdata/acl_results/ACL-M07.hujson | 113 +- .../v2/testdata/acl_results/ACL-M08.hujson | 113 +- .../v2/testdata/acl_results/ACL-M09.hujson | 119 +- .../v2/testdata/acl_results/ACL-M10.hujson | 119 +- .../v2/testdata/acl_results/ACL-MR01.hujson | 130 +- .../v2/testdata/acl_results/ACL-MR02.hujson | 125 +- .../v2/testdata/acl_results/ACL-MR03.hujson | 130 +- .../v2/testdata/acl_results/ACL-MR04.hujson | 125 +- .../v2/testdata/acl_results/ACL-MR05.hujson | 120 +- .../v2/testdata/acl_results/ACL-MR06.hujson | 135 +- .../v2/testdata/acl_results/ACL-MR07.hujson | 132 +- .../v2/testdata/acl_results/ACL-MR08.hujson | 143 +- .../v2/testdata/acl_results/ACL-MR09.hujson | 133 +- .../v2/testdata/acl_results/ACL-MR10.hujson | 143 +- .../v2/testdata/acl_results/ACL-MR11.hujson | 125 +- .../v2/testdata/acl_results/ACL-MR12.hujson | 125 +- .../v2/testdata/acl_results/ACL-MR13.hujson | 156 +- .../v2/testdata/acl_results/ACL-MR14.hujson | 122 +- .../v2/testdata/acl_results/ACL-MR15.hujson | 125 +- .../v2/testdata/acl_results/ACL-MR16.hujson | 128 +- .../v2/testdata/acl_results/ACL-MR17.hujson | 160 +- .../v2/testdata/acl_results/ACL-MR18.hujson | 163 +- .../v2/testdata/acl_results/ACL-MR19.hujson | 120 +- .../v2/testdata/acl_results/ACL-MR20.hujson | 129 +- .../v2/testdata/acl_results/ACL-MR21.hujson | 136 +- .../v2/testdata/acl_results/ACL-MR22.hujson | 159 +- .../v2/testdata/acl_results/ACL-MR23.hujson | 172 +- .../v2/testdata/acl_results/ACL-MU01.hujson | 130 +- .../v2/testdata/acl_results/ACL-MU02.hujson | 122 +- .../v2/testdata/acl_results/ACL-MU03.hujson | 132 +- .../v2/testdata/acl_results/ACL-MU04.hujson | 135 +- .../v2/testdata/acl_results/ACL-MU05.hujson | 112 +- .../v2/testdata/acl_results/ACL-MU06.hujson | 112 +- .../v2/testdata/acl_results/ACL-MU07.hujson | 114 +- .../v2/testdata/acl_results/ACL-MU08.hujson | 114 +- .../v2/testdata/acl_results/ACL-O01.hujson | 120 +- .../v2/testdata/acl_results/ACL-O02.hujson | 120 +- .../v2/testdata/acl_results/ACL-O03.hujson | 123 +- .../v2/testdata/acl_results/ACL-O04.hujson | 123 +- .../v2/testdata/acl_results/ACL-P01.hujson | 112 +- .../v2/testdata/acl_results/ACL-P02.hujson | 112 +- .../v2/testdata/acl_results/ACL-P03.hujson | 112 +- .../v2/testdata/acl_results/ACL-P04.hujson | 116 +- .../v2/testdata/acl_results/ACL-P05.hujson | 116 +- .../v2/testdata/acl_results/ACL-P06.hujson | 116 +- .../v2/testdata/acl_results/ACL-PF01.hujson | 117 +- .../v2/testdata/acl_results/ACL-PF02.hujson | 117 +- .../v2/testdata/acl_results/ACL-PF03.hujson | 117 +- .../v2/testdata/acl_results/ACL-PF04.hujson | 117 +- .../v2/testdata/acl_results/ACL-PF05.hujson | 117 +- .../v2/testdata/acl_results/ACL-R01.hujson | 130 +- .../v2/testdata/acl_results/ACL-R02.hujson | 130 +- .../v2/testdata/acl_results/ACL-R03.hujson | 125 +- .../v2/testdata/acl_results/ACL-R04.hujson | 130 +- .../v2/testdata/acl_results/ACL-R05.hujson | 125 +- .../v2/testdata/acl_results/ACL-R06.hujson | 143 +- .../v2/testdata/acl_results/ACL-R07.hujson | 148 +- .../v2/testdata/acl_results/ACL-R08.hujson | 143 +- .../v2/testdata/acl_results/ACL-R09.hujson | 135 +- .../v2/testdata/acl_results/ACL-R10.hujson | 135 +- .../v2/testdata/acl_results/ACL-RS01.hujson | 116 +- .../v2/testdata/acl_results/ACL-RS02.hujson | 119 +- .../v2/testdata/acl_results/ACL-RS03.hujson | 119 +- .../v2/testdata/acl_results/ACL-RS04.hujson | 117 +- .../v2/testdata/acl_results/ACL-RS05.hujson | 119 +- .../v2/testdata/acl_results/ACL-RS06.hujson | 125 +- .../v2/testdata/acl_results/ACL-RS07.hujson | 121 +- .../v2/testdata/acl_results/ACL-S01.hujson | 127 +- .../v2/testdata/acl_results/ACL-S02.hujson | 117 +- .../v2/testdata/acl_results/ACL-S03.hujson | 122 +- .../v2/testdata/acl_results/ACL-S04.hujson | 61 +- .../v2/testdata/acl_results/ACL-S05.hujson | 61 +- .../v2/testdata/acl_results/ACL-S06.hujson | 61 +- .../v2/testdata/acl_results/ACL-S07.hujson | 135 +- .../v2/testdata/acl_results/ACL-S08.hujson | 128 +- .../v2/testdata/acl_results/ACL-S09.hujson | 128 +- .../v2/testdata/acl_results/ACL-S10.hujson | 135 +- .../v2/testdata/acl_results/ACL-SF01.hujson | 127 +- .../v2/testdata/acl_results/ACL-SF02.hujson | 122 +- .../v2/testdata/acl_results/ACL-SF03.hujson | 61 +- .../v2/testdata/acl_results/ACL-SF04.hujson | 61 +- .../v2/testdata/acl_results/ACL-SF05.hujson | 61 +- .../v2/testdata/acl_results/ACL-SF06.hujson | 128 +- .../v2/testdata/acl_results/ACL-SF07.hujson | 128 +- .../v2/testdata/acl_results/ACL-SF08.hujson | 62 +- .../v2/testdata/acl_results/ACL-SF09.hujson | 135 +- .../v2/testdata/acl_results/ACL-SF10.hujson | 128 +- .../v2/testdata/acl_results/ACL-SF11.hujson | 128 +- .../v2/testdata/acl_results/ACL-SF12.hujson | 117 +- .../v2/testdata/acl_results/ACL-SF13.hujson | 117 +- .../v2/testdata/acl_results/ACL-T01.hujson | 117 +- .../v2/testdata/acl_results/ACL-T02.hujson | 152 +- .../v2/testdata/acl_results/ACL-T03.hujson | 120 +- .../v2/testdata/acl_results/ACL-T04.hujson | 112 +- .../v2/testdata/acl_results/ACL-T05.hujson | 129 +- .../v2/testdata/acl_results/ACL-T06.hujson | 112 +- .../v2/testdata/acl_results/ACL-T07.hujson | 117 +- .../v2/testdata/acl_results/ACL-T08.hujson | 114 +- .../v2/testdata/acl_results/ACL-T09.hujson | 117 +- .../v2/testdata/acl_results/ACL-T10.hujson | 116 +- .../v2/testdata/acl_results/ACL-U01.hujson | 152 +- .../v2/testdata/acl_results/ACL-U02.hujson | 112 +- .../v2/testdata/acl_results/ACL-U03.hujson | 152 +- .../v2/testdata/acl_results/ACL-U04.hujson | 112 +- .../v2/testdata/acl_results/ACL-U05.hujson | 119 +- .../v2/testdata/acl_results/ACL-U06.hujson | 117 +- .../v2/testdata/acl_results/ACL-U07.hujson | 152 +- .../v2/testdata/acl_results/ACL-U08.hujson | 123 +- .../v2/testdata/acl_results/ACL-U09.hujson | 117 +- .../v2/testdata/acl_results/ACL-U10.hujson | 112 +- .../v2/testdata/acl_results/ACL-U11.hujson | 120 +- .../v2/testdata/acl_results/ACL-U12.hujson | 120 +- .../v2/testdata/acl_results/ACL-W01.hujson | 112 +- .../v2/testdata/acl_results/ACL-W02.hujson | 144 +- .../v2/testdata/acl_results/ACL-W03.hujson | 144 +- .../v2/testdata/acl_results/ACL-W04.hujson | 112 +- .../v2/testdata/acl_results/ACL-W05.hujson | 112 +- .../v2/testdata/acl_results/ACL-W06.hujson | 112 +- .../v2/testdata/acl_results/ACL-W07.hujson | 112 +- .../v2/testdata/grant_results/GRANT-A1.hujson | 3097 +-- .../v2/testdata/grant_results/GRANT-A2.hujson | 67 +- .../v2/testdata/grant_results/GRANT-A3.hujson | 2761 +-- .../v2/testdata/grant_results/GRANT-A4.hujson | 3076 +-- .../v2/testdata/grant_results/GRANT-A5.hujson | 67 +- .../v2/testdata/grant_results/GRANT-A6.hujson | 685 +- .../v2/testdata/grant_results/GRANT-B1.hujson | 1118 +- .../v2/testdata/grant_results/GRANT-B2.hujson | 1171 +- .../v2/testdata/grant_results/GRANT-B3.hujson | 3355 +-- .../v2/testdata/grant_results/GRANT-B4.hujson | 3615 +-- .../v2/testdata/grant_results/GRANT-B5.hujson | 3355 +-- .../v2/testdata/grant_results/GRANT-C1.hujson | 3462 +-- .../v2/testdata/grant_results/GRANT-C2.hujson | 3718 +-- .../v2/testdata/grant_results/GRANT-C3.hujson | 3937 +--- .../v2/testdata/grant_results/GRANT-C4.hujson | 3891 +--- .../v2/testdata/grant_results/GRANT-C5.hujson | 4010 +--- .../v2/testdata/grant_results/GRANT-C6.hujson | 3772 +-- .../v2/testdata/grant_results/GRANT-D1.hujson | 782 +- .../v2/testdata/grant_results/GRANT-D2.hujson | 878 +- .../v2/testdata/grant_results/GRANT-D3.hujson | 596 +- .../v2/testdata/grant_results/GRANT-D4.hujson | 596 +- .../v2/testdata/grant_results/GRANT-D5.hujson | 596 +- .../v2/testdata/grant_results/GRANT-D6.hujson | 595 +- .../v2/testdata/grant_results/GRANT-D7.hujson | 877 +- .../v2/testdata/grant_results/GRANT-E1.hujson | 1160 +- .../v2/testdata/grant_results/GRANT-E2.hujson | 1760 +- .../v2/testdata/grant_results/GRANT-E3.hujson | 73 +- .../v2/testdata/grant_results/GRANT-E4.hujson | 2268 +- .../v2/testdata/grant_results/GRANT-E5.hujson | 3015 +-- .../v2/testdata/grant_results/GRANT-E6.hujson | 1160 +- .../v2/testdata/grant_results/GRANT-E7.hujson | 1160 +- .../v2/testdata/grant_results/GRANT-E8.hujson | 1154 +- .../v2/testdata/grant_results/GRANT-F1.hujson | 1282 +- .../v2/testdata/grant_results/GRANT-F2.hujson | 832 +- .../v2/testdata/grant_results/GRANT-F3.hujson | 1294 +- .../v2/testdata/grant_results/GRANT-F4.hujson | 4965 +--- .../v2/testdata/grant_results/GRANT-G1.hujson | 1229 +- .../v2/testdata/grant_results/GRANT-G2.hujson | 1279 +- .../v2/testdata/grant_results/GRANT-G3.hujson | 1220 +- .../v2/testdata/grant_results/GRANT-G4.hujson | 1217 +- .../v2/testdata/grant_results/GRANT-G5.hujson | 3409 +-- .../v2/testdata/grant_results/GRANT-G6.hujson | 3563 +-- .../v2/testdata/grant_results/GRANT-H1.hujson | 63 +- .../testdata/grant_results/GRANT-H10.hujson | 67 +- .../v2/testdata/grant_results/GRANT-H2.hujson | 3426 +-- .../v2/testdata/grant_results/GRANT-H3.hujson | 63 +- .../v2/testdata/grant_results/GRANT-H4.hujson | 467 +- .../v2/testdata/grant_results/GRANT-H5.hujson | 467 +- .../v2/testdata/grant_results/GRANT-H6.hujson | 695 +- .../v2/testdata/grant_results/GRANT-H7.hujson | 67 +- .../v2/testdata/grant_results/GRANT-H8.hujson | 63 +- .../v2/testdata/grant_results/GRANT-H9.hujson | 67 +- .../v2/testdata/grant_results/GRANT-I1.hujson | 1143 +- .../v2/testdata/grant_results/GRANT-I2.hujson | 1147 +- .../v2/testdata/grant_results/GRANT-I3.hujson | 1144 +- .../v2/testdata/grant_results/GRANT-I4.hujson | 71 +- .../v2/testdata/grant_results/GRANT-J1.hujson | 1143 +- .../v2/testdata/grant_results/GRANT-J2.hujson | 1143 +- .../v2/testdata/grant_results/GRANT-J3.hujson | 1139 +- .../v2/testdata/grant_results/GRANT-J4.hujson | 1201 +- .../v2/testdata/grant_results/GRANT-J5.hujson | 1143 +- .../v2/testdata/grant_results/GRANT-J6.hujson | 1139 +- .../v2/testdata/grant_results/GRANT-J7.hujson | 67 +- .../v2/testdata/grant_results/GRANT-K1.hujson | 3298 +-- .../testdata/grant_results/GRANT-K10.hujson | 67 +- .../testdata/grant_results/GRANT-K11.hujson | 5520 +---- .../testdata/grant_results/GRANT-K12.hujson | 1113 +- .../testdata/grant_results/GRANT-K13.hujson | 1154 +- .../testdata/grant_results/GRANT-K14.hujson | 590 +- .../testdata/grant_results/GRANT-K15.hujson | 1136 +- .../testdata/grant_results/GRANT-K16.hujson | 3356 +-- .../testdata/grant_results/GRANT-K17.hujson | 3356 +-- .../testdata/grant_results/GRANT-K18.hujson | 4137 +--- .../testdata/grant_results/GRANT-K19.hujson | 4281 +--- .../v2/testdata/grant_results/GRANT-K2.hujson | 3308 +-- .../testdata/grant_results/GRANT-K20.hujson | 688 +- .../testdata/grant_results/GRANT-K21.hujson | 1727 +- .../testdata/grant_results/GRANT-K22.hujson | 1139 +- .../testdata/grant_results/GRANT-K23.hujson | 67 +- .../testdata/grant_results/GRANT-K24.hujson | 3462 +-- .../testdata/grant_results/GRANT-K25.hujson | 3462 +-- .../testdata/grant_results/GRANT-K26.hujson | 2330 +- .../testdata/grant_results/GRANT-K27.hujson | 570 +- .../testdata/grant_results/GRANT-K28.hujson | 775 +- .../testdata/grant_results/GRANT-K29.hujson | 451 +- .../v2/testdata/grant_results/GRANT-K3.hujson | 3375 +-- .../testdata/grant_results/GRANT-K30.hujson | 74 +- .../v2/testdata/grant_results/GRANT-K4.hujson | 1193 +- .../v2/testdata/grant_results/GRANT-K5.hujson | 1634 +- .../v2/testdata/grant_results/GRANT-K6.hujson | 1131 +- .../v2/testdata/grant_results/GRANT-K7.hujson | 67 +- .../v2/testdata/grant_results/GRANT-K8.hujson | 67 +- .../v2/testdata/grant_results/GRANT-K9.hujson | 67 +- .../testdata/grant_results/GRANT-P01_1.hujson | 3308 +-- .../testdata/grant_results/GRANT-P01_2.hujson | 1316 +- .../testdata/grant_results/GRANT-P01_3.hujson | 685 +- .../testdata/grant_results/GRANT-P01_4.hujson | 1132 +- .../testdata/grant_results/GRANT-P01_5.hujson | 469 +- .../testdata/grant_results/GRANT-P02_1.hujson | 1324 +- .../testdata/grant_results/GRANT-P02_2.hujson | 1139 +- .../testdata/grant_results/GRANT-P02_3.hujson | 1324 +- .../testdata/grant_results/GRANT-P02_4.hujson | 1139 +- .../grant_results/GRANT-P02_5_CORRECT.hujson | 722 +- .../grant_results/GRANT-P02_5_NAIVE.hujson | 735 +- .../testdata/grant_results/GRANT-P03_1.hujson | 1324 +- .../testdata/grant_results/GRANT-P03_2.hujson | 1139 +- .../testdata/grant_results/GRANT-P03_3.hujson | 587 +- .../testdata/grant_results/GRANT-P03_4.hujson | 685 +- .../testdata/grant_results/GRANT-P04_1.hujson | 2332 +- .../testdata/grant_results/GRANT-P04_2.hujson | 2995 +-- .../testdata/grant_results/GRANT-P04_3.hujson | 67 +- .../testdata/grant_results/GRANT-P04_4.hujson | 469 +- .../testdata/grant_results/GRANT-P05_1.hujson | 1132 +- .../testdata/grant_results/GRANT-P05_2.hujson | 1316 +- .../testdata/grant_results/GRANT-P05_3.hujson | 1322 +- .../testdata/grant_results/GRANT-P06_1.hujson | 1143 +- .../testdata/grant_results/GRANT-P06_2.hujson | 1143 +- .../testdata/grant_results/GRANT-P06_3.hujson | 1139 +- .../testdata/grant_results/GRANT-P06_4.hujson | 1139 +- .../testdata/grant_results/GRANT-P06_5.hujson | 1139 +- .../testdata/grant_results/GRANT-P06_6.hujson | 1169 +- .../testdata/grant_results/GRANT-P06_7.hujson | 1139 +- .../testdata/grant_results/GRANT-P08_1.hujson | 633 +- .../testdata/grant_results/GRANT-P08_2.hujson | 1233 +- .../testdata/grant_results/GRANT-P08_3.hujson | 469 +- .../testdata/grant_results/GRANT-P08_4.hujson | 649 +- .../testdata/grant_results/GRANT-P08_5.hujson | 855 +- .../testdata/grant_results/GRANT-P08_6.hujson | 1183 +- .../testdata/grant_results/GRANT-P08_7.hujson | 3352 +-- .../testdata/grant_results/GRANT-P08_8.hujson | 1138 +- .../grant_results/GRANT-P09_10A.hujson | 904 +- .../grant_results/GRANT-P09_10B.hujson | 3409 +-- .../grant_results/GRANT-P09_10C.hujson | 1229 +- .../grant_results/GRANT-P09_10D.hujson | 1003 +- .../grant_results/GRANT-P09_11A.hujson | 892 +- .../grant_results/GRANT-P09_11B.hujson | 589 +- .../grant_results/GRANT-P09_11C_NAIVE.hujson | 988 +- .../grant_results/GRANT-P09_11D.hujson | 1750 +- .../grant_results/GRANT-P09_12A.hujson | 680 +- .../grant_results/GRANT-P09_12B.hujson | 722 +- .../grant_results/GRANT-P09_13A.hujson | 67 +- .../grant_results/GRANT-P09_13B.hujson | 67 +- .../grant_results/GRANT-P09_13C.hujson | 69 +- .../grant_results/GRANT-P09_13D.hujson | 67 +- .../grant_results/GRANT-P09_13E.hujson | 553 +- .../grant_results/GRANT-P09_13F.hujson | 497 +- .../grant_results/GRANT-P09_13G.hujson | 497 +- .../GRANT-P09_13H_CORRECT.hujson | 82 +- .../grant_results/GRANT-P09_13H_NAIVE.hujson | 69 +- .../grant_results/GRANT-P09_14A.hujson | 618 +- .../grant_results/GRANT-P09_14B.hujson | 721 +- .../grant_results/GRANT-P09_14C.hujson | 3352 +-- .../grant_results/GRANT-P09_14D.hujson | 855 +- .../grant_results/GRANT-P09_14E.hujson | 857 +- .../grant_results/GRANT-P09_14F.hujson | 3517 +-- .../grant_results/GRANT-P09_14G.hujson | 818 +- .../grant_results/GRANT-P09_14H.hujson | 1355 +- .../grant_results/GRANT-P09_14I.hujson | 3370 +-- .../grant_results/GRANT-P09_1A.hujson | 862 +- .../grant_results/GRANT-P09_1B.hujson | 1140 +- .../grant_results/GRANT-P09_1C.hujson | 685 +- .../grant_results/GRANT-P09_1D.hujson | 685 +- .../grant_results/GRANT-P09_1E.hujson | 679 +- .../grant_results/GRANT-P09_2A_CORRECT.hujson | 722 +- .../grant_results/GRANT-P09_2A_NAIVE.hujson | 735 +- .../grant_results/GRANT-P09_2B_CORRECT.hujson | 611 +- .../grant_results/GRANT-P09_2B_NAIVE.hujson | 617 +- .../grant_results/GRANT-P09_2C.hujson | 707 +- .../grant_results/GRANT-P09_3A.hujson | 588 +- .../grant_results/GRANT-P09_3B.hujson | 771 +- .../grant_results/GRANT-P09_3C.hujson | 595 +- .../grant_results/GRANT-P09_4A.hujson | 769 +- .../grant_results/GRANT-P09_4B.hujson | 953 +- .../grant_results/GRANT-P09_4C.hujson | 580 +- .../grant_results/GRANT-P09_4D.hujson | 586 +- .../grant_results/GRANT-P09_4E.hujson | 553 +- .../grant_results/GRANT-P09_4F.hujson | 586 +- .../grant_results/GRANT-P09_4G.hujson | 580 +- .../grant_results/GRANT-P09_5A.hujson | 685 +- .../grant_results/GRANT-P09_5B.hujson | 685 +- .../grant_results/GRANT-P09_5C_NAIVE.hujson | 735 +- .../grant_results/GRANT-P09_6A.hujson | 1721 +- .../grant_results/GRANT-P09_6B.hujson | 469 +- .../grant_results/GRANT-P09_6C.hujson | 587 +- .../grant_results/GRANT-P09_6D.hujson | 581 +- .../grant_results/GRANT-P09_7A.hujson | 1159 +- .../grant_results/GRANT-P09_7B_NAIVE.hujson | 1330 +- .../grant_results/GRANT-P09_7C.hujson | 3323 +-- .../grant_results/GRANT-P09_7D_NAIVE.hujson | 2982 +-- .../grant_results/GRANT-P09_8A.hujson | 773 +- .../grant_results/GRANT-P09_8B.hujson | 589 +- .../grant_results/GRANT-P09_8C.hujson | 603 +- .../grant_results/GRANT-P09_9A.hujson | 2711 +-- .../grant_results/GRANT-P09_9B.hujson | 2611 +-- .../grant_results/GRANT-P09_9C.hujson | 3317 +-- .../testdata/grant_results/GRANT-P10_1.hujson | 3308 +-- .../testdata/grant_results/GRANT-P10_2.hujson | 497 +- .../testdata/grant_results/GRANT-P10_3.hujson | 1138 +- .../testdata/grant_results/GRANT-P10_4.hujson | 765 +- .../testdata/grant_results/GRANT-P11_1.hujson | 3308 +-- .../testdata/grant_results/GRANT-P11_2.hujson | 497 +- .../testdata/grant_results/GRANT-P11_3.hujson | 469 +- .../testdata/grant_results/GRANT-P13_1.hujson | 765 +- .../testdata/grant_results/GRANT-P13_2.hujson | 1138 +- .../testdata/grant_results/GRANT-P13_3.hujson | 1154 +- .../testdata/grant_results/GRANT-P13_4.hujson | 823 +- .../testdata/grant_results/GRANT-P15_1.hujson | 765 +- .../testdata/grant_results/GRANT-P15_2.hujson | 469 +- .../testdata/grant_results/GRANT-P15_3.hujson | 765 +- .../testdata/grant_results/GRANT-P15_4.hujson | 469 +- .../testdata/grant_results/GRANT-P15_5.hujson | 469 +- .../testdata/grant_results/GRANT-P15_6.hujson | 469 +- .../testdata/grant_results/GRANT-V01.hujson | 69 +- .../testdata/grant_results/GRANT-V02.hujson | 1192 +- .../testdata/grant_results/GRANT-V03.hujson | 1191 +- .../testdata/grant_results/GRANT-V04.hujson | 63 +- .../testdata/grant_results/GRANT-V05.hujson | 67 +- .../testdata/grant_results/GRANT-V06.hujson | 1824 +- .../testdata/grant_results/GRANT-V07.hujson | 469 +- .../testdata/grant_results/GRANT-V08.hujson | 64 +- .../testdata/grant_results/GRANT-V09.hujson | 1239 +- .../testdata/grant_results/GRANT-V10.hujson | 1238 +- .../testdata/grant_results/GRANT-V11.hujson | 586 +- .../testdata/grant_results/GRANT-V12.hujson | 770 +- .../testdata/grant_results/GRANT-V13.hujson | 696 +- .../testdata/grant_results/GRANT-V14.hujson | 16779 +------------- .../testdata/grant_results/GRANT-V15.hujson | 16779 +------------- .../testdata/grant_results/GRANT-V16.hujson | 16782 +------------- .../testdata/grant_results/GRANT-V17.hujson | 1144 +- .../testdata/grant_results/GRANT-V18.hujson | 69 +- .../testdata/grant_results/GRANT-V19.hujson | 905 +- .../testdata/grant_results/GRANT-V20.hujson | 818 +- .../testdata/grant_results/GRANT-V21.hujson | 1144 +- .../testdata/grant_results/GRANT-V22.hujson | 74 +- .../testdata/grant_results/GRANT-V23.hujson | 1163 +- .../testdata/grant_results/GRANT-V24.hujson | 69 +- .../testdata/grant_results/GRANT-V25.hujson | 582 +- .../testdata/grant_results/GRANT-V26.hujson | 16779 +------------- .../testdata/grant_results/GRANT-V27.hujson | 16781 +------------- .../testdata/grant_results/GRANT-V28.hujson | 16798 +------------- .../testdata/grant_results/GRANT-V29.hujson | 17144 +------------- .../testdata/grant_results/GRANT-V30.hujson | 17178 +------------- .../testdata/grant_results/GRANT-V31.hujson | 17827 +------------- .../testdata/grant_results/GRANT-V32.hujson | 17242 +------------- .../testdata/grant_results/GRANT-V33.hujson | 17175 +------------- .../testdata/grant_results/GRANT-V34.hujson | 16782 +------------- .../testdata/grant_results/GRANT-V35.hujson | 16821 +------------- .../testdata/grant_results/GRANT-V36.hujson | 19255 +--------------- ...dcard_acl_includes_routes_in_srcips.hujson | 159 +- ...ES-a2_tag_based_acl_excludes_routes.hujson | 159 +- ...a3_explicit_subnet_filter_to_router.hujson | 159 +- ...UTES-a3b_autogroup_member_to_subnet.hujson | 159 +- ...UTES-a4_multiple_routes_same_router.hujson | 159 +- .../ROUTES-a5_host_alias_to_subnet.hujson | 159 +- ...10_exit_routes_not_in_primaryroutes.hujson | 159 +- ...ROUTES-b1_exit_routes_not_in_srcips.hujson | 159 +- ...ES-b2_tag_exit_excludes_exit_routes.hujson | 173 +- ...UTES-b3_exit_node_advertises_routes.hujson | 159 +- ...4_multi_router_has_both_route_types.hujson | 159 +- .../ROUTES-b5_exit_with_wildcard_dst.hujson | 159 +- .../ROUTES-b6_exit_node_option_field.hujson | 243 +- .../ROUTES-b7_multiple_exit_nodes.hujson | 243 +- ...ES-b8_autogroup_internet_no_filters.hujson | 159 +- ...ROUTES-b9_exit_routes_in_allowedips.hujson | 159 +- ...OUTES-d10_auto_approval_retroactive.hujson | 159 +- ...UTES-d11_overlapping_auto_approvers.hujson | 159 +- ...ROUTES-d1_basic_route_auto_approval.hujson | 159 +- .../ROUTES-d2_nested_prefix_approval.hujson | 159 +- .../ROUTES-d3_exact_prefix_approval.hujson | 159 +- .../ROUTES-d4_prefix_not_covered.hujson | 159 +- .../ROUTES-d5_wrong_tag_not_approved.hujson | 159 +- .../ROUTES-d6_exit_node_auto_approval.hujson | 159 +- ...TES-d7_exit_auto_approval_wrong_tag.hujson | 243 +- ...ES-d8_auto_approval_acl_interaction.hujson | 159 +- ...auto_approval_triggers_on_advertise.hujson | 159 +- ...OUTES-e1_ha_two_routers_same_subnet.hujson | 159 +- .../ROUTES-e2_ha_primary_in_allowedips.hujson | 159 +- ...ha_secondary_no_route_in_allowedips.hujson | 159 +- ...S-e4_ha_both_get_filters_host_alias.hujson | 159 +- ...UTES-e5_first_advertiser_is_primary.hujson | 159 +- ...f1_filter_on_destination_not_source.hujson | 159 +- .../ROUTES-f2_subnet_as_acl_source.hujson | 171 +- ...ROUTES-f3_wildcard_src_specific_dst.hujson | 159 +- ...ROUTES-f4_specific_src_wildcard_dst.hujson | 159 +- ...UTES-f5_bidirectional_subnet_access.hujson | 179 +- .../ROUTES-f6_filter_srcips_expansion.hujson | 159 +- ...S-f7_filter_dstports_shows_acl_cidr.hujson | 159 +- .../ROUTES-f8_route_enabled_acl_denies.hujson | 159 +- ...ROUTES-f9_route_disabled_acl_allows.hujson | 159 +- .../ROUTES-g1_port_restriction_subnet.hujson | 159 +- .../ROUTES-g2_port_range_subnet.hujson | 159 +- .../ROUTES-g3_multiple_ports_subnet.hujson | 159 +- .../ROUTES-g4_protocol_icmp_subnet.hujson | 167 +- .../ROUTES-g5_protocol_tcp_only.hujson | 167 +- .../ROUTES-g6_protocol_udp_only.hujson | 167 +- .../ROUTES-g7_all_ports_wildcard.hujson | 159 +- .../ROUTES-g8_default_ipproto.hujson | 159 +- .../ROUTES-h10_very_small_prefix.hujson | 159 +- .../ROUTES-h11_ipv6_small_prefix.hujson | 159 +- .../ROUTES-h1_wildcard_srcips_format.hujson | 159 +- .../ROUTES-h2_wildcard_dstports_format.hujson | 159 +- .../ROUTES-h3_cgnat_range_expansion.hujson | 159 +- .../ROUTES-h4_ipv6_range_in_srcips.hujson | 159 +- .../ROUTES-h5_subnet_overlaps_cgnat.hujson | 159 +- ...-h6_loopback_routes_not_distributed.hujson | 159 +- .../ROUTES-h7_two_nodes_same_subnet.hujson | 159 +- .../ROUTES-h8_cgnat_overlap_blocked.hujson | 159 +- .../ROUTES-h9_large_prefix_works.hujson | 159 +- .../ROUTES-i1_ipv6_subnet_route.hujson | 159 +- .../ROUTES-i2_ipv6_exit_route.hujson | 159 +- .../ROUTES-i3_ipv6_in_wildcard_srcips.hujson | 159 +- .../ROUTES-i4_ipv6_specific_acl.hujson | 159 +- .../ROUTES-i5_ipv6_parent_child_routes.hujson | 159 +- .../ROUTES-i6_dual_stack_node.hujson | 167 +- .../ROUTES-i7_ipv6_exit_coverage.hujson | 159 +- ...ES-o10_acl_dest_covered_by_multiple.hujson | 159 +- .../ROUTES-o11_acl_dest_not_covered.hujson | 159 +- .../ROUTES-o12_filter_dest_is_acl_cidr.hujson | 159 +- ...ES-o1_overlapping_routes_not_merged.hujson | 159 +- ...OUTES-o2_ha_routers_both_get_filter.hujson | 159 +- ...TES-o3_parent_child_different_nodes.hujson | 159 +- .../ROUTES-o4_three_way_hierarchy.hujson | 159 +- ...S-o5_sibling_routes_with_parent_acl.hujson | 159 +- ...S-o6_exit_route_expands_filter_dist.hujson | 159 +- .../ROUTES-o7_specific_ip_targeting.hujson | 159 +- ...TES-o8_same_node_overlapping_routes.hujson | 159 +- ...OUTES-o9_different_nodes_same_route.hujson | 159 +- ...ROUTES-r1_exit_covers_external_dest.hujson | 159 +- ...S-r2_parent_route_covers_child_dest.hujson | 159 +- ...OUTES-r3_sibling_routes_no_coverage.hujson | 159 +- .../ROUTES-r4_exact_match_route.hujson | 159 +- ...OUTES-r5_route_coverage_check_logic.hujson | 159 +- .../ROUTES-r6_ipv6_route_coverage.hujson | 159 +- .../ROUTES-r7_exit_ipv6_coverage.hujson | 159 +- .../ROUTES-r8_mixed_ipv4_ipv6_coverage.hujson | 160 +- ...S-t1_tags_resolve_to_ips_not_routes.hujson | 159 +- .../ROUTES-t2_tag_to_tag_with_exit.hujson | 173 +- ...UTES-t3_tag_src_includes_all_tagged.hujson | 159 +- ...UTES-t4_tag_dst_includes_all_tagged.hujson | 159 +- .../ROUTES-t5_multi_tag_node_in_both.hujson | 159 +- .../v2/testdata/ssh_results/SSH-A1.hujson | 63 +- .../v2/testdata/ssh_results/SSH-A2.hujson | 64 +- .../v2/testdata/ssh_results/SSH-A3.hujson | 64 +- .../v2/testdata/ssh_results/SSH-A4.hujson | 61 +- .../v2/testdata/ssh_results/SSH-A5.hujson | 60 +- .../v2/testdata/ssh_results/SSH-A6.hujson | 1 - .../v2/testdata/ssh_results/SSH-A7.hujson | 1 - .../v2/testdata/ssh_results/SSH-A8.hujson | 1 - .../v2/testdata/ssh_results/SSH-B1.hujson | 45 +- .../v2/testdata/ssh_results/SSH-B2.hujson | 52 +- .../v2/testdata/ssh_results/SSH-B3.hujson | 45 +- .../v2/testdata/ssh_results/SSH-B5.hujson | 52 +- .../v2/testdata/ssh_results/SSH-B6.hujson | 52 +- .../v2/testdata/ssh_results/SSH-C1.hujson | 63 +- .../v2/testdata/ssh_results/SSH-C2.hujson | 60 +- .../v2/testdata/ssh_results/SSH-C3.hujson | 43 +- .../v2/testdata/ssh_results/SSH-C4.hujson | 83 +- .../v2/testdata/ssh_results/SSH-D10.hujson | 126 +- .../v2/testdata/ssh_results/SSH-D11.hujson | 154 +- .../v2/testdata/ssh_results/SSH-D12.hujson | 154 +- .../v2/testdata/ssh_results/SSH-D2.hujson | 148 +- .../v2/testdata/ssh_results/SSH-D3.hujson | 149 +- .../v2/testdata/ssh_results/SSH-D4.hujson | 154 +- .../v2/testdata/ssh_results/SSH-D5.hujson | 155 +- .../v2/testdata/ssh_results/SSH-D6.hujson | 154 +- .../v2/testdata/ssh_results/SSH-D7.hujson | 155 +- .../v2/testdata/ssh_results/SSH-D8.hujson | 87 +- .../v2/testdata/ssh_results/SSH-D9.hujson | 87 +- .../v2/testdata/ssh_results/SSH-E3.hujson | 21 +- .../v2/testdata/ssh_results/SSH-E4.hujson | 21 +- .../v2/testdata/ssh_results/SSH-E5.hujson | 54 +- .../v2/testdata/ssh_results/SSH-E6.hujson | 1 - .../v2/testdata/ssh_results/SSH-F1.hujson | 99 +- .../v2/testdata/ssh_results/SSH-F2.hujson | 1 - .../v2/testdata/ssh_results/SSH-F3.hujson | 253 +- .../v2/testdata/ssh_results/SSH-F4.hujson | 254 +- .../v2/testdata/ssh_results/SSH-F5.hujson | 226 +- .../v2/testdata/ssh_results/SSH-G1.hujson | 67 +- .../v2/testdata/ssh_results/SSH-G2.hujson | 67 +- 594 files changed, 45359 insertions(+), 535977 deletions(-) diff --git a/hscontrol/policy/v2/testdata/acl_results/ACL-A01.hujson b/hscontrol/policy/v2/testdata/acl_results/ACL-A01.hujson index 6d7c9ee81..11ba61634 100644 --- a/hscontrol/policy/v2/testdata/acl_results/ACL-A01.hujson +++ b/hscontrol/policy/v2/testdata/acl_results/ACL-A01.hujson @@ -5,23 +5,37 @@ // Expected: Rules on 8 of 8 nodes { "test_id": "ACL-A01", - "timestamp": "2026-03-17T14:16:33Z", - "propagation_wait_seconds": 10, "input": { - "policy_file": "acl_policies/acl_a01.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -31,74 +45,28 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "acls": [ { "action": "accept", - "src": ["autogroup:member"], - "dst": ["*:*"] + "src": [ + "autogroup:member" + ], + "dst": [ + "*:*" + ] } ] - }, - "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", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] - }, - "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": { diff --git a/hscontrol/policy/v2/testdata/acl_results/ACL-A02.hujson b/hscontrol/policy/v2/testdata/acl_results/ACL-A02.hujson index 78fbb205e..50f94d6b2 100644 --- a/hscontrol/policy/v2/testdata/acl_results/ACL-A02.hujson +++ b/hscontrol/policy/v2/testdata/acl_results/ACL-A02.hujson @@ -5,23 +5,37 @@ // Expected: Rules on 8 of 8 nodes { "test_id": "ACL-A02", - "timestamp": "2026-03-17T14:16:44Z", - "propagation_wait_seconds": 10, "input": { - "policy_file": "acl_policies/acl_a02.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -31,74 +45,28 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "acls": [ { "action": "accept", - "src": ["autogroup:tagged"], - "dst": ["*:*"] + "src": [ + "autogroup:tagged" + ], + "dst": [ + "*:*" + ] } ] - }, - "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", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] - }, - "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": { diff --git a/hscontrol/policy/v2/testdata/acl_results/ACL-A03.hujson b/hscontrol/policy/v2/testdata/acl_results/ACL-A03.hujson index 7af4bd7dd..435a26e6f 100644 --- a/hscontrol/policy/v2/testdata/acl_results/ACL-A03.hujson +++ b/hscontrol/policy/v2/testdata/acl_results/ACL-A03.hujson @@ -5,23 +5,37 @@ // Expected: Rules on tagged-server { "test_id": "ACL-A03", - "timestamp": "2026-03-17T14:16:54Z", - "propagation_wait_seconds": 10, "input": { - "policy_file": "acl_policies/acl_a03.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -31,74 +45,29 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "acls": [ { "action": "accept", - "src": ["autogroup:member", "tag:client"], - "dst": ["tag:server:22"] + "src": [ + "autogroup:member", + "tag:client" + ], + "dst": [ + "tag:server:22" + ] } ] - }, - "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", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] - }, - "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": { diff --git a/hscontrol/policy/v2/testdata/acl_results/ACL-A04.hujson b/hscontrol/policy/v2/testdata/acl_results/ACL-A04.hujson index 5018ca302..6c24b4fae 100644 --- a/hscontrol/policy/v2/testdata/acl_results/ACL-A04.hujson +++ b/hscontrol/policy/v2/testdata/acl_results/ACL-A04.hujson @@ -5,23 +5,37 @@ // Expected: Rules on user-kris, user-mon, user1 { "test_id": "ACL-A04", - "timestamp": "2026-03-17T14:17:04Z", - "propagation_wait_seconds": 10, "input": { - "policy_file": "acl_policies/acl_a04.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -31,74 +45,28 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "acls": [ { "action": "accept", - "src": ["*"], - "dst": ["autogroup:self:*"] + "src": [ + "*" + ], + "dst": [ + "autogroup:self:*" + ] } ] - }, - "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", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] - }, - "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": { @@ -120,7 +88,10 @@ "user-kris": { "packet_filter_rules": [ { - "SrcIPs": ["100.110.121.96", "fd7a:115c:a1e0::1737:7960"], + "SrcIPs": [ + "100.110.121.96", + "fd7a:115c:a1e0::1737:7960" + ], "DstPorts": [ { "IP": "100.110.121.96", @@ -143,7 +114,10 @@ "user-mon": { "packet_filter_rules": [ { - "SrcIPs": ["100.103.90.82", "fd7a:115c:a1e0::9e37:5a52"], + "SrcIPs": [ + "100.103.90.82", + "fd7a:115c:a1e0::9e37:5a52" + ], "DstPorts": [ { "IP": "100.103.90.82", @@ -166,7 +140,10 @@ "user1": { "packet_filter_rules": [ { - "SrcIPs": ["100.90.199.68", "fd7a:115c:a1e0::2d01:c747"], + "SrcIPs": [ + "100.90.199.68", + "fd7a:115c:a1e0::2d01:c747" + ], "DstPorts": [ { "IP": "100.90.199.68", diff --git a/hscontrol/policy/v2/testdata/acl_results/ACL-A05.hujson b/hscontrol/policy/v2/testdata/acl_results/ACL-A05.hujson index 0d9c2a625..35ab85e09 100644 --- a/hscontrol/policy/v2/testdata/acl_results/ACL-A05.hujson +++ b/hscontrol/policy/v2/testdata/acl_results/ACL-A05.hujson @@ -5,23 +5,37 @@ // Expected: No filter rules { "test_id": "ACL-A05", - "timestamp": "2026-03-17T14:17:15Z", - "propagation_wait_seconds": 10, "input": { - "policy_file": "acl_policies/acl_a05.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -31,74 +45,28 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "acls": [ { "action": "accept", - "src": ["*"], - "dst": ["autogroup:internet:*"] + "src": [ + "*" + ], + "dst": [ + "autogroup:internet:*" + ] } ] - }, - "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", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] - }, - "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": { diff --git a/hscontrol/policy/v2/testdata/acl_results/ACL-A06.hujson b/hscontrol/policy/v2/testdata/acl_results/ACL-A06.hujson index 9c4eb3748..3c576c1da 100644 --- a/hscontrol/policy/v2/testdata/acl_results/ACL-A06.hujson +++ b/hscontrol/policy/v2/testdata/acl_results/ACL-A06.hujson @@ -5,23 +5,37 @@ // Expected: Rules on user-kris, user-mon, user1 { "test_id": "ACL-A06", - "timestamp": "2026-03-17T14:17:25Z", - "propagation_wait_seconds": 10, "input": { - "policy_file": "acl_policies/acl_a06.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -31,74 +45,28 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "acls": [ { "action": "accept", - "src": ["*"], - "dst": ["autogroup:member:*"] + "src": [ + "*" + ], + "dst": [ + "autogroup:member:*" + ] } ] - }, - "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", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] - }, - "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": { diff --git a/hscontrol/policy/v2/testdata/acl_results/ACL-A07.hujson b/hscontrol/policy/v2/testdata/acl_results/ACL-A07.hujson index 5ec2d15c8..17d55aede 100644 --- a/hscontrol/policy/v2/testdata/acl_results/ACL-A07.hujson +++ b/hscontrol/policy/v2/testdata/acl_results/ACL-A07.hujson @@ -5,23 +5,37 @@ // Expected: Rules on tagged-server, user-kris, user-mon, user1 { "test_id": "ACL-A07", - "timestamp": "2026-03-17T14:17:36Z", - "propagation_wait_seconds": 10, "input": { - "policy_file": "acl_policies/acl_a07.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -31,74 +45,29 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "acls": [ { "action": "accept", - "src": ["*"], - "dst": ["autogroup:self:*", "tag:server:22"] + "src": [ + "*" + ], + "dst": [ + "autogroup:self:*", + "tag:server:22" + ] } ] - }, - "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", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] - }, - "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": { @@ -145,7 +114,10 @@ "user-kris": { "packet_filter_rules": [ { - "SrcIPs": ["100.110.121.96", "fd7a:115c:a1e0::1737:7960"], + "SrcIPs": [ + "100.110.121.96", + "fd7a:115c:a1e0::1737:7960" + ], "DstPorts": [ { "IP": "100.110.121.96", @@ -168,7 +140,10 @@ "user-mon": { "packet_filter_rules": [ { - "SrcIPs": ["100.103.90.82", "fd7a:115c:a1e0::9e37:5a52"], + "SrcIPs": [ + "100.103.90.82", + "fd7a:115c:a1e0::9e37:5a52" + ], "DstPorts": [ { "IP": "100.103.90.82", @@ -191,7 +166,10 @@ "user1": { "packet_filter_rules": [ { - "SrcIPs": ["100.90.199.68", "fd7a:115c:a1e0::2d01:c747"], + "SrcIPs": [ + "100.90.199.68", + "fd7a:115c:a1e0::2d01:c747" + ], "DstPorts": [ { "IP": "100.90.199.68", diff --git a/hscontrol/policy/v2/testdata/acl_results/ACL-A08.hujson b/hscontrol/policy/v2/testdata/acl_results/ACL-A08.hujson index b66e77639..8c71ae1d2 100644 --- a/hscontrol/policy/v2/testdata/acl_results/ACL-A08.hujson +++ b/hscontrol/policy/v2/testdata/acl_results/ACL-A08.hujson @@ -5,23 +5,37 @@ // Expected: Rules on exit-node, subnet-router, tagged-client, tagged-prod, tagged-server { "test_id": "ACL-A08", - "timestamp": "2026-03-17T14:17:47Z", - "propagation_wait_seconds": 10, "input": { - "policy_file": "acl_policies/acl_a08.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -31,74 +45,28 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "acls": [ { "action": "accept", - "src": ["*"], - "dst": ["autogroup:tagged:*"] + "src": [ + "*" + ], + "dst": [ + "autogroup:tagged:*" + ] } ] - }, - "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", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] - }, - "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": { diff --git a/hscontrol/policy/v2/testdata/acl_results/ACL-A09.hujson b/hscontrol/policy/v2/testdata/acl_results/ACL-A09.hujson index 032d83cdb..3ad337c9b 100644 --- a/hscontrol/policy/v2/testdata/acl_results/ACL-A09.hujson +++ b/hscontrol/policy/v2/testdata/acl_results/ACL-A09.hujson @@ -5,23 +5,37 @@ // Expected: Rules on user-kris, user-mon, user1 { "test_id": "ACL-A09", - "timestamp": "2026-03-17T14:17:57Z", - "propagation_wait_seconds": 10, "input": { - "policy_file": "acl_policies/acl_a09.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -31,74 +45,28 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "acls": [ { "action": "accept", - "src": ["autogroup:member"], - "dst": ["autogroup:self:*"] + "src": [ + "autogroup:member" + ], + "dst": [ + "autogroup:self:*" + ] } ] - }, - "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", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] - }, - "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": { @@ -120,7 +88,10 @@ "user-kris": { "packet_filter_rules": [ { - "SrcIPs": ["100.110.121.96", "fd7a:115c:a1e0::1737:7960"], + "SrcIPs": [ + "100.110.121.96", + "fd7a:115c:a1e0::1737:7960" + ], "DstPorts": [ { "IP": "100.110.121.96", @@ -143,7 +114,10 @@ "user-mon": { "packet_filter_rules": [ { - "SrcIPs": ["100.103.90.82", "fd7a:115c:a1e0::9e37:5a52"], + "SrcIPs": [ + "100.103.90.82", + "fd7a:115c:a1e0::9e37:5a52" + ], "DstPorts": [ { "IP": "100.103.90.82", @@ -166,7 +140,10 @@ "user1": { "packet_filter_rules": [ { - "SrcIPs": ["100.90.199.68", "fd7a:115c:a1e0::2d01:c747"], + "SrcIPs": [ + "100.90.199.68", + "fd7a:115c:a1e0::2d01:c747" + ], "DstPorts": [ { "IP": "100.90.199.68", diff --git a/hscontrol/policy/v2/testdata/acl_results/ACL-A10.hujson b/hscontrol/policy/v2/testdata/acl_results/ACL-A10.hujson index b0445bb22..fb5244f9d 100644 --- a/hscontrol/policy/v2/testdata/acl_results/ACL-A10.hujson +++ b/hscontrol/policy/v2/testdata/acl_results/ACL-A10.hujson @@ -5,23 +5,37 @@ // Expected: Rules on user1 { "test_id": "ACL-A10", - "timestamp": "2026-03-17T14:18:08Z", - "propagation_wait_seconds": 10, "input": { - "policy_file": "acl_policies/acl_a10.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -31,74 +45,28 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "acls": [ { "action": "accept", - "src": ["kratail2tid@passkey"], - "dst": ["autogroup:self:*"] + "src": [ + "kratail2tid@passkey" + ], + "dst": [ + "autogroup:self:*" + ] } ] - }, - "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", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] - }, - "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": { @@ -126,7 +94,10 @@ "user1": { "packet_filter_rules": [ { - "SrcIPs": ["100.90.199.68", "fd7a:115c:a1e0::2d01:c747"], + "SrcIPs": [ + "100.90.199.68", + "fd7a:115c:a1e0::2d01:c747" + ], "DstPorts": [ { "IP": "100.90.199.68", diff --git a/hscontrol/policy/v2/testdata/acl_results/ACL-A11.hujson b/hscontrol/policy/v2/testdata/acl_results/ACL-A11.hujson index f86e67225..023014245 100644 --- a/hscontrol/policy/v2/testdata/acl_results/ACL-A11.hujson +++ b/hscontrol/policy/v2/testdata/acl_results/ACL-A11.hujson @@ -5,23 +5,37 @@ // Expected: Rules on user1 { "test_id": "ACL-A11", - "timestamp": "2026-03-17T14:18:18Z", - "propagation_wait_seconds": 10, "input": { - "policy_file": "acl_policies/acl_a11.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -31,74 +45,28 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "acls": [ { "action": "accept", - "src": ["group:admins"], - "dst": ["autogroup:self:*"] + "src": [ + "group:admins" + ], + "dst": [ + "autogroup:self:*" + ] } ] - }, - "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", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] - }, - "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": { @@ -126,7 +94,10 @@ "user1": { "packet_filter_rules": [ { - "SrcIPs": ["100.90.199.68", "fd7a:115c:a1e0::2d01:c747"], + "SrcIPs": [ + "100.90.199.68", + "fd7a:115c:a1e0::2d01:c747" + ], "DstPorts": [ { "IP": "100.90.199.68", diff --git a/hscontrol/policy/v2/testdata/acl_results/ACL-A12.hujson b/hscontrol/policy/v2/testdata/acl_results/ACL-A12.hujson index 9d774e81d..a11e258e1 100644 --- a/hscontrol/policy/v2/testdata/acl_results/ACL-A12.hujson +++ b/hscontrol/policy/v2/testdata/acl_results/ACL-A12.hujson @@ -5,23 +5,37 @@ // Expected: Rules on user-kris, user-mon, user1 { "test_id": "ACL-A12", - "timestamp": "2026-03-17T14:18:28Z", - "propagation_wait_seconds": 10, "input": { - "policy_file": "acl_policies/acl_a12.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -31,74 +45,28 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "acls": [ { "action": "accept", - "src": ["*"], - "dst": ["autogroup:self:22"] + "src": [ + "*" + ], + "dst": [ + "autogroup:self:22" + ] } ] - }, - "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", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] - }, - "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": { @@ -120,7 +88,10 @@ "user-kris": { "packet_filter_rules": [ { - "SrcIPs": ["100.110.121.96", "fd7a:115c:a1e0::1737:7960"], + "SrcIPs": [ + "100.110.121.96", + "fd7a:115c:a1e0::1737:7960" + ], "DstPorts": [ { "IP": "100.110.121.96", @@ -143,7 +114,10 @@ "user-mon": { "packet_filter_rules": [ { - "SrcIPs": ["100.103.90.82", "fd7a:115c:a1e0::9e37:5a52"], + "SrcIPs": [ + "100.103.90.82", + "fd7a:115c:a1e0::9e37:5a52" + ], "DstPorts": [ { "IP": "100.103.90.82", @@ -166,7 +140,10 @@ "user1": { "packet_filter_rules": [ { - "SrcIPs": ["100.90.199.68", "fd7a:115c:a1e0::2d01:c747"], + "SrcIPs": [ + "100.90.199.68", + "fd7a:115c:a1e0::2d01:c747" + ], "DstPorts": [ { "IP": "100.90.199.68", diff --git a/hscontrol/policy/v2/testdata/acl_results/ACL-A13.hujson b/hscontrol/policy/v2/testdata/acl_results/ACL-A13.hujson index 47287b980..497367f77 100644 --- a/hscontrol/policy/v2/testdata/acl_results/ACL-A13.hujson +++ b/hscontrol/policy/v2/testdata/acl_results/ACL-A13.hujson @@ -5,23 +5,37 @@ // Expected: Rules on user-kris, user-mon, user1 { "test_id": "ACL-A13", - "timestamp": "2026-03-17T14:18:39Z", - "propagation_wait_seconds": 10, "input": { - "policy_file": "acl_policies/acl_a13.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -31,74 +45,28 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "acls": [ { "action": "accept", - "src": ["*"], - "dst": ["autogroup:self:80-443"] + "src": [ + "*" + ], + "dst": [ + "autogroup:self:80-443" + ] } ] - }, - "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", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] - }, - "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": { @@ -120,7 +88,10 @@ "user-kris": { "packet_filter_rules": [ { - "SrcIPs": ["100.110.121.96", "fd7a:115c:a1e0::1737:7960"], + "SrcIPs": [ + "100.110.121.96", + "fd7a:115c:a1e0::1737:7960" + ], "DstPorts": [ { "IP": "100.110.121.96", @@ -143,7 +114,10 @@ "user-mon": { "packet_filter_rules": [ { - "SrcIPs": ["100.103.90.82", "fd7a:115c:a1e0::9e37:5a52"], + "SrcIPs": [ + "100.103.90.82", + "fd7a:115c:a1e0::9e37:5a52" + ], "DstPorts": [ { "IP": "100.103.90.82", @@ -166,7 +140,10 @@ "user1": { "packet_filter_rules": [ { - "SrcIPs": ["100.90.199.68", "fd7a:115c:a1e0::2d01:c747"], + "SrcIPs": [ + "100.90.199.68", + "fd7a:115c:a1e0::2d01:c747" + ], "DstPorts": [ { "IP": "100.90.199.68", diff --git a/hscontrol/policy/v2/testdata/acl_results/ACL-A14.hujson b/hscontrol/policy/v2/testdata/acl_results/ACL-A14.hujson index e6daf80c8..ec3f23bc7 100644 --- a/hscontrol/policy/v2/testdata/acl_results/ACL-A14.hujson +++ b/hscontrol/policy/v2/testdata/acl_results/ACL-A14.hujson @@ -5,23 +5,37 @@ // Expected: Rules on user-kris, user-mon, user1 { "test_id": "ACL-A14", - "timestamp": "2026-03-17T14:18:49Z", - "propagation_wait_seconds": 10, "input": { - "policy_file": "acl_policies/acl_a14.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -31,74 +45,28 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "acls": [ { "action": "accept", - "src": ["*"], - "dst": ["autogroup:self:22,80,443"] + "src": [ + "*" + ], + "dst": [ + "autogroup:self:22,80,443" + ] } ] - }, - "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", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] - }, - "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": { @@ -120,7 +88,10 @@ "user-kris": { "packet_filter_rules": [ { - "SrcIPs": ["100.110.121.96", "fd7a:115c:a1e0::1737:7960"], + "SrcIPs": [ + "100.110.121.96", + "fd7a:115c:a1e0::1737:7960" + ], "DstPorts": [ { "IP": "100.110.121.96", @@ -171,7 +142,10 @@ "user-mon": { "packet_filter_rules": [ { - "SrcIPs": ["100.103.90.82", "fd7a:115c:a1e0::9e37:5a52"], + "SrcIPs": [ + "100.103.90.82", + "fd7a:115c:a1e0::9e37:5a52" + ], "DstPorts": [ { "IP": "100.103.90.82", @@ -222,7 +196,10 @@ "user1": { "packet_filter_rules": [ { - "SrcIPs": ["100.90.199.68", "fd7a:115c:a1e0::2d01:c747"], + "SrcIPs": [ + "100.90.199.68", + "fd7a:115c:a1e0::2d01:c747" + ], "DstPorts": [ { "IP": "100.90.199.68", diff --git a/hscontrol/policy/v2/testdata/acl_results/ACL-A15.hujson b/hscontrol/policy/v2/testdata/acl_results/ACL-A15.hujson index 451f1371c..c1ef49b23 100644 --- a/hscontrol/policy/v2/testdata/acl_results/ACL-A15.hujson +++ b/hscontrol/policy/v2/testdata/acl_results/ACL-A15.hujson @@ -5,23 +5,37 @@ // Expected: Rules on 8 of 8 nodes { "test_id": "ACL-A15", - "timestamp": "2026-03-17T14:19:00Z", - "propagation_wait_seconds": 10, "input": { - "policy_file": "acl_policies/acl_a15.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -31,74 +45,29 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "acls": [ { "action": "accept", - "src": ["autogroup:member", "autogroup:tagged"], - "dst": ["*:*"] + "src": [ + "autogroup:member", + "autogroup:tagged" + ], + "dst": [ + "*:*" + ] } ] - }, - "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", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] - }, - "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": { diff --git a/hscontrol/policy/v2/testdata/acl_results/ACL-A16.hujson b/hscontrol/policy/v2/testdata/acl_results/ACL-A16.hujson index 3c335233f..191bc5311 100644 --- a/hscontrol/policy/v2/testdata/acl_results/ACL-A16.hujson +++ b/hscontrol/policy/v2/testdata/acl_results/ACL-A16.hujson @@ -5,23 +5,37 @@ // Expected: Rules on tagged-server { "test_id": "ACL-A16", - "timestamp": "2026-03-17T14:19:10Z", - "propagation_wait_seconds": 10, "input": { - "policy_file": "acl_policies/acl_a16.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -31,74 +45,29 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "acls": [ { "action": "accept", - "src": ["autogroup:member", "autogroup:tagged"], - "dst": ["tag:server:22"] + "src": [ + "autogroup:member", + "autogroup:tagged" + ], + "dst": [ + "tag:server:22" + ] } ] - }, - "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", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] - }, - "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": { diff --git a/hscontrol/policy/v2/testdata/acl_results/ACL-A17.hujson b/hscontrol/policy/v2/testdata/acl_results/ACL-A17.hujson index 961984da8..ea3a904ea 100644 --- a/hscontrol/policy/v2/testdata/acl_results/ACL-A17.hujson +++ b/hscontrol/policy/v2/testdata/acl_results/ACL-A17.hujson @@ -5,23 +5,37 @@ // Expected: Rules on tagged-server, user-kris, user-mon, user1 { "test_id": "ACL-A17", - "timestamp": "2026-03-17T14:19:21Z", - "propagation_wait_seconds": 10, "input": { - "policy_file": "acl_policies/acl_a17.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -31,74 +45,30 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "acls": [ { "action": "accept", - "src": ["*"], - "dst": ["autogroup:self:*", "tag:server:22", "autogroup:member:80"] + "src": [ + "*" + ], + "dst": [ + "autogroup:self:*", + "tag:server:22", + "autogroup:member:80" + ] } ] - }, - "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", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] - }, - "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": { @@ -169,7 +139,10 @@ ] }, { - "SrcIPs": ["100.110.121.96", "fd7a:115c:a1e0::1737:7960"], + "SrcIPs": [ + "100.110.121.96", + "fd7a:115c:a1e0::1737:7960" + ], "DstPorts": [ { "IP": "100.110.121.96", @@ -216,7 +189,10 @@ ] }, { - "SrcIPs": ["100.103.90.82", "fd7a:115c:a1e0::9e37:5a52"], + "SrcIPs": [ + "100.103.90.82", + "fd7a:115c:a1e0::9e37:5a52" + ], "DstPorts": [ { "IP": "100.103.90.82", @@ -263,7 +239,10 @@ ] }, { - "SrcIPs": ["100.90.199.68", "fd7a:115c:a1e0::2d01:c747"], + "SrcIPs": [ + "100.90.199.68", + "fd7a:115c:a1e0::2d01:c747" + ], "DstPorts": [ { "IP": "100.90.199.68", diff --git a/hscontrol/policy/v2/testdata/acl_results/ACL-AH01.hujson b/hscontrol/policy/v2/testdata/acl_results/ACL-AH01.hujson index 752eec0b6..92dd3b168 100644 --- a/hscontrol/policy/v2/testdata/acl_results/ACL-AH01.hujson +++ b/hscontrol/policy/v2/testdata/acl_results/ACL-AH01.hujson @@ -5,23 +5,37 @@ // Expected: Rules on 8 of 8 nodes { "test_id": "ACL-AH01", - "timestamp": "2026-03-17T14:19:31Z", - "propagation_wait_seconds": 10, "input": { - "policy_file": "acl_policies/acl_ah01.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -31,81 +45,39 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "acls": [ { "action": "accept", - "src": ["internal", "subnet24"], - "dst": ["*:*"] + "src": [ + "internal", + "subnet24" + ], + "dst": [ + "*:*" + ] } ] - }, - "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", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] - }, - "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": [ { - "SrcIPs": ["10.0.0.0/8", "192.168.1.0/24"], + "SrcIPs": [ + "10.0.0.0/8", + "192.168.1.0/24" + ], "DstPorts": [ { "IP": "*", @@ -121,7 +93,10 @@ "subnet-router": { "packet_filter_rules": [ { - "SrcIPs": ["10.0.0.0/8", "192.168.1.0/24"], + "SrcIPs": [ + "10.0.0.0/8", + "192.168.1.0/24" + ], "DstPorts": [ { "IP": "*", @@ -137,7 +112,10 @@ "tagged-client": { "packet_filter_rules": [ { - "SrcIPs": ["10.0.0.0/8", "192.168.1.0/24"], + "SrcIPs": [ + "10.0.0.0/8", + "192.168.1.0/24" + ], "DstPorts": [ { "IP": "*", @@ -153,7 +131,10 @@ "tagged-prod": { "packet_filter_rules": [ { - "SrcIPs": ["10.0.0.0/8", "192.168.1.0/24"], + "SrcIPs": [ + "10.0.0.0/8", + "192.168.1.0/24" + ], "DstPorts": [ { "IP": "*", @@ -169,7 +150,10 @@ "tagged-server": { "packet_filter_rules": [ { - "SrcIPs": ["10.0.0.0/8", "192.168.1.0/24"], + "SrcIPs": [ + "10.0.0.0/8", + "192.168.1.0/24" + ], "DstPorts": [ { "IP": "*", @@ -185,7 +169,10 @@ "user-kris": { "packet_filter_rules": [ { - "SrcIPs": ["10.0.0.0/8", "192.168.1.0/24"], + "SrcIPs": [ + "10.0.0.0/8", + "192.168.1.0/24" + ], "DstPorts": [ { "IP": "*", @@ -201,7 +188,10 @@ "user-mon": { "packet_filter_rules": [ { - "SrcIPs": ["10.0.0.0/8", "192.168.1.0/24"], + "SrcIPs": [ + "10.0.0.0/8", + "192.168.1.0/24" + ], "DstPorts": [ { "IP": "*", @@ -217,7 +207,10 @@ "user1": { "packet_filter_rules": [ { - "SrcIPs": ["10.0.0.0/8", "192.168.1.0/24"], + "SrcIPs": [ + "10.0.0.0/8", + "192.168.1.0/24" + ], "DstPorts": [ { "IP": "*", diff --git a/hscontrol/policy/v2/testdata/acl_results/ACL-AH02.hujson b/hscontrol/policy/v2/testdata/acl_results/ACL-AH02.hujson index 60ff7475d..d5873f3ec 100644 --- a/hscontrol/policy/v2/testdata/acl_results/ACL-AH02.hujson +++ b/hscontrol/policy/v2/testdata/acl_results/ACL-AH02.hujson @@ -5,23 +5,37 @@ // Expected: Rules on tagged-server { "test_id": "ACL-AH02", - "timestamp": "2026-03-17T14:19:42Z", - "propagation_wait_seconds": 10, "input": { - "policy_file": "acl_policies/acl_ah02.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -31,74 +45,29 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "acls": [ { "action": "accept", - "src": ["internal", "100.108.74.26"], - "dst": ["tag:server:22"] + "src": [ + "internal", + "100.108.74.26" + ], + "dst": [ + "tag:server:22" + ] } ] - }, - "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", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] - }, - "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": { @@ -117,7 +86,10 @@ "tagged-server": { "packet_filter_rules": [ { - "SrcIPs": ["10.0.0.0/8", "100.108.74.26"], + "SrcIPs": [ + "10.0.0.0/8", + "100.108.74.26" + ], "DstPorts": [ { "IP": "100.108.74.26", diff --git a/hscontrol/policy/v2/testdata/acl_results/ACL-AH03.hujson b/hscontrol/policy/v2/testdata/acl_results/ACL-AH03.hujson index b14798948..be602f48e 100644 --- a/hscontrol/policy/v2/testdata/acl_results/ACL-AH03.hujson +++ b/hscontrol/policy/v2/testdata/acl_results/ACL-AH03.hujson @@ -5,23 +5,37 @@ // Expected: Rules on subnet-router, tagged-server { "test_id": "ACL-AH03", - "timestamp": "2026-03-17T14:19:52Z", - "propagation_wait_seconds": 10, "input": { - "policy_file": "acl_policies/acl_ah03.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -31,74 +45,30 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "acls": [ { "action": "accept", - "src": ["*"], - "dst": ["internal:22", "subnet24:80", "tag:server:443"] + "src": [ + "*" + ], + "dst": [ + "internal:22", + "subnet24:80", + "tag:server:443" + ] } ] - }, - "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", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] - }, - "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": { diff --git a/hscontrol/policy/v2/testdata/acl_results/ACL-AH04.hujson b/hscontrol/policy/v2/testdata/acl_results/ACL-AH04.hujson index 98f50e2bb..3d3f2be68 100644 --- a/hscontrol/policy/v2/testdata/acl_results/ACL-AH04.hujson +++ b/hscontrol/policy/v2/testdata/acl_results/ACL-AH04.hujson @@ -5,23 +5,37 @@ // Expected: Rules on tagged-server { "test_id": "ACL-AH04", - "timestamp": "2026-03-17T14:20:02Z", - "propagation_wait_seconds": 10, "input": { - "policy_file": "acl_policies/acl_ah04.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -31,74 +45,29 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "acls": [ { "action": "accept", - "src": ["internal", "10.0.0.0/8"], - "dst": ["tag:server:22"] + "src": [ + "internal", + "10.0.0.0/8" + ], + "dst": [ + "tag:server:22" + ] } ] - }, - "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", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] - }, - "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": { @@ -117,7 +86,9 @@ "tagged-server": { "packet_filter_rules": [ { - "SrcIPs": ["10.0.0.0/8"], + "SrcIPs": [ + "10.0.0.0/8" + ], "DstPorts": [ { "IP": "100.108.74.26", diff --git a/hscontrol/policy/v2/testdata/acl_results/ACL-AH05.hujson b/hscontrol/policy/v2/testdata/acl_results/ACL-AH05.hujson index faec62f4c..ac32e0cde 100644 --- a/hscontrol/policy/v2/testdata/acl_results/ACL-AH05.hujson +++ b/hscontrol/policy/v2/testdata/acl_results/ACL-AH05.hujson @@ -5,23 +5,37 @@ // Expected: Rules on subnet-router { "test_id": "ACL-AH05", - "timestamp": "2026-03-17T14:20:13Z", - "propagation_wait_seconds": 10, "input": { - "policy_file": "acl_policies/acl_ah05.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -31,74 +45,28 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "acls": [ { "action": "accept", - "src": ["*"], - "dst": ["internal:22"] + "src": [ + "*" + ], + "dst": [ + "internal:22" + ] } ] - }, - "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", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] - }, - "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": { diff --git a/hscontrol/policy/v2/testdata/acl_results/ACL-AH06.hujson b/hscontrol/policy/v2/testdata/acl_results/ACL-AH06.hujson index bba92897e..48c003255 100644 --- a/hscontrol/policy/v2/testdata/acl_results/ACL-AH06.hujson +++ b/hscontrol/policy/v2/testdata/acl_results/ACL-AH06.hujson @@ -5,23 +5,37 @@ // Expected: Rules on subnet-router { "test_id": "ACL-AH06", - "timestamp": "2026-03-17T14:20:23Z", - "propagation_wait_seconds": 10, "input": { - "policy_file": "acl_policies/acl_ah06.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -31,74 +45,28 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "acls": [ { "action": "accept", - "src": ["*"], - "dst": ["10.0.0.0/8:22"] + "src": [ + "*" + ], + "dst": [ + "10.0.0.0/8:22" + ] } ] - }, - "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", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] - }, - "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": { diff --git a/hscontrol/policy/v2/testdata/acl_results/ACL-AR01.hujson b/hscontrol/policy/v2/testdata/acl_results/ACL-AR01.hujson index 8c3776aa0..8d85fbdf7 100644 --- a/hscontrol/policy/v2/testdata/acl_results/ACL-AR01.hujson +++ b/hscontrol/policy/v2/testdata/acl_results/ACL-AR01.hujson @@ -7,23 +7,37 @@ // Expected: Rules on tagged-server { "test_id": "ACL-AR01", - "timestamp": "2026-03-17T14:20:34Z", - "propagation_wait_seconds": 10, "input": { - "policy_file": "acl_policies/acl_ar01.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -33,79 +47,37 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "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"] + "src": [ + "tag:client" + ], + "dst": [ + "tag:server:22" + ] }, { "action": "accept", - "src": ["tag:client"], - "dst": ["tag:server:80,443"] + "src": [ + "tag:client" + ], + "dst": [ + "tag:server:80,443" + ] } ] - }, - "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", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] - }, - "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": { @@ -124,7 +96,10 @@ "tagged-server": { "packet_filter_rules": [ { - "SrcIPs": ["100.83.200.69", "fd7a:115c:a1e0::c537:c845"], + "SrcIPs": [ + "100.83.200.69", + "fd7a:115c:a1e0::c537:c845" + ], "DstPorts": [ { "IP": "100.108.74.26", diff --git a/hscontrol/policy/v2/testdata/acl_results/ACL-AR02.hujson b/hscontrol/policy/v2/testdata/acl_results/ACL-AR02.hujson index 1e12094af..d2ed01f09 100644 --- a/hscontrol/policy/v2/testdata/acl_results/ACL-AR02.hujson +++ b/hscontrol/policy/v2/testdata/acl_results/ACL-AR02.hujson @@ -8,23 +8,37 @@ // Expected: Rules on tagged-server { "test_id": "ACL-AR02", - "timestamp": "2026-03-17T14:20:44Z", - "propagation_wait_seconds": 10, "input": { - "policy_file": "acl_policies/acl_ar02.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -34,85 +48,47 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "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"] + "src": [ + "tag:client" + ], + "dst": [ + "tag:server:22" + ] }, { "action": "accept", - "src": ["tag:client"], - "dst": ["tag:server:80,443"] + "src": [ + "tag:client" + ], + "dst": [ + "tag:server:80,443" + ] }, { "action": "accept", - "src": ["*"], + "src": [ + "*" + ], "proto": "udp", - "dst": ["tag:server:53"] + "dst": [ + "tag:server:53" + ] } ] - }, - "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", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] - }, - "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": { @@ -131,7 +107,10 @@ "tagged-server": { "packet_filter_rules": [ { - "SrcIPs": ["100.83.200.69", "fd7a:115c:a1e0::c537:c845"], + "SrcIPs": [ + "100.83.200.69", + "fd7a:115c:a1e0::c537:c845" + ], "DstPorts": [ { "IP": "100.108.74.26", @@ -200,7 +179,9 @@ } } ], - "IPProto": [17] + "IPProto": [ + 17 + ] } ] }, diff --git a/hscontrol/policy/v2/testdata/acl_results/ACL-AR03.hujson b/hscontrol/policy/v2/testdata/acl_results/ACL-AR03.hujson index 48d2901c3..1c02253fc 100644 --- a/hscontrol/policy/v2/testdata/acl_results/ACL-AR03.hujson +++ b/hscontrol/policy/v2/testdata/acl_results/ACL-AR03.hujson @@ -8,23 +8,37 @@ // Expected: Rules on tagged-server { "test_id": "ACL-AR03", - "timestamp": "2026-03-17T14:20:55Z", - "propagation_wait_seconds": 10, "input": { - "policy_file": "acl_policies/acl_ar03.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -34,84 +48,46 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "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"] + "src": [ + "tag:client" + ], + "dst": [ + "tag:server:22" + ] }, { "action": "accept", - "src": ["tag:client"], - "dst": ["tag:server:80"] + "src": [ + "tag:client" + ], + "dst": [ + "tag:server:80" + ] }, { "action": "accept", - "src": ["tag:client"], - "dst": ["tag:server:443"] + "src": [ + "tag:client" + ], + "dst": [ + "tag:server:443" + ] } ] - }, - "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", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] - }, - "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": { @@ -130,7 +106,10 @@ "tagged-server": { "packet_filter_rules": [ { - "SrcIPs": ["100.83.200.69", "fd7a:115c:a1e0::c537:c845"], + "SrcIPs": [ + "100.83.200.69", + "fd7a:115c:a1e0::c537:c845" + ], "DstPorts": [ { "IP": "100.108.74.26", diff --git a/hscontrol/policy/v2/testdata/acl_results/ACL-AR04.hujson b/hscontrol/policy/v2/testdata/acl_results/ACL-AR04.hujson index a18e679f7..974bad60a 100644 --- a/hscontrol/policy/v2/testdata/acl_results/ACL-AR04.hujson +++ b/hscontrol/policy/v2/testdata/acl_results/ACL-AR04.hujson @@ -8,23 +8,37 @@ // Expected: Rules on tagged-server { "test_id": "ACL-AR04", - "timestamp": "2026-03-17T14:21:05Z", - "propagation_wait_seconds": 10, "input": { - "policy_file": "acl_policies/acl_ar04.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -34,84 +48,46 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "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"] + "src": [ + "tag:client" + ], + "dst": [ + "tag:server:22" + ] }, { "action": "accept", - "src": ["tag:prod"], - "dst": ["tag:server:22"] + "src": [ + "tag:prod" + ], + "dst": [ + "tag:server:22" + ] }, { "action": "accept", - "src": ["tag:router"], - "dst": ["tag:server:22"] + "src": [ + "tag:router" + ], + "dst": [ + "tag:server:22" + ] } ] - }, - "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", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] - }, - "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": { @@ -130,7 +106,10 @@ "tagged-server": { "packet_filter_rules": [ { - "SrcIPs": ["100.83.200.69", "fd7a:115c:a1e0::c537:c845"], + "SrcIPs": [ + "100.83.200.69", + "fd7a:115c:a1e0::c537:c845" + ], "DstPorts": [ { "IP": "100.108.74.26", @@ -149,7 +128,10 @@ ] }, { - "SrcIPs": ["100.103.8.15", "fd7a:115c:a1e0::5b37:80f"], + "SrcIPs": [ + "100.103.8.15", + "fd7a:115c:a1e0::5b37:80f" + ], "DstPorts": [ { "IP": "100.108.74.26", @@ -168,7 +150,10 @@ ] }, { - "SrcIPs": ["100.92.142.61", "fd7a:115c:a1e0::3e37:8e3d"], + "SrcIPs": [ + "100.92.142.61", + "fd7a:115c:a1e0::3e37:8e3d" + ], "DstPorts": [ { "IP": "100.108.74.26", diff --git a/hscontrol/policy/v2/testdata/acl_results/ACL-AR05.hujson b/hscontrol/policy/v2/testdata/acl_results/ACL-AR05.hujson index b4eb5f27b..14dcafcf2 100644 --- a/hscontrol/policy/v2/testdata/acl_results/ACL-AR05.hujson +++ b/hscontrol/policy/v2/testdata/acl_results/ACL-AR05.hujson @@ -9,23 +9,37 @@ // Expected: Rules on tagged-server { "test_id": "ACL-AR05", - "timestamp": "2026-03-17T14:21:16Z", - "propagation_wait_seconds": 10, "input": { - "policy_file": "acl_policies/acl_ar05.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -35,89 +49,55 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "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"] + "src": [ + "tag:client" + ], + "dst": [ + "tag:server:22" + ] }, { "action": "accept", - "src": ["tag:client"], - "dst": ["tag:server:80"] + "src": [ + "tag:client" + ], + "dst": [ + "tag:server:80" + ] }, { "action": "accept", - "src": ["tag:prod"], - "dst": ["tag:server:22"] + "src": [ + "tag:prod" + ], + "dst": [ + "tag:server:22" + ] }, { "action": "accept", - "src": ["tag:prod"], - "dst": ["tag:server:443"] + "src": [ + "tag:prod" + ], + "dst": [ + "tag:server:443" + ] } ] - }, - "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", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] - }, - "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": { @@ -136,7 +116,10 @@ "tagged-server": { "packet_filter_rules": [ { - "SrcIPs": ["100.83.200.69", "fd7a:115c:a1e0::c537:c845"], + "SrcIPs": [ + "100.83.200.69", + "fd7a:115c:a1e0::c537:c845" + ], "DstPorts": [ { "IP": "100.108.74.26", @@ -169,7 +152,10 @@ ] }, { - "SrcIPs": ["100.103.8.15", "fd7a:115c:a1e0::5b37:80f"], + "SrcIPs": [ + "100.103.8.15", + "fd7a:115c:a1e0::5b37:80f" + ], "DstPorts": [ { "IP": "100.108.74.26", diff --git a/hscontrol/policy/v2/testdata/acl_results/ACL-AR06.hujson b/hscontrol/policy/v2/testdata/acl_results/ACL-AR06.hujson index ee770f44c..549dc4a4a 100644 --- a/hscontrol/policy/v2/testdata/acl_results/ACL-AR06.hujson +++ b/hscontrol/policy/v2/testdata/acl_results/ACL-AR06.hujson @@ -7,23 +7,37 @@ // Expected: Rules on tagged-server { "test_id": "ACL-AR06", - "timestamp": "2026-03-17T14:21:26Z", - "propagation_wait_seconds": 10, "input": { - "policy_file": "acl_policies/acl_ar06.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -33,79 +47,37 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "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"] + "src": [ + "tag:client" + ], + "dst": [ + "tag:server:22" + ] }, { "action": "accept", - "src": ["*"], - "dst": ["tag:server:80"] + "src": [ + "*" + ], + "dst": [ + "tag:server:80" + ] } ] - }, - "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", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] - }, - "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": { @@ -124,7 +96,10 @@ "tagged-server": { "packet_filter_rules": [ { - "SrcIPs": ["100.83.200.69", "fd7a:115c:a1e0::c537:c845"], + "SrcIPs": [ + "100.83.200.69", + "fd7a:115c:a1e0::c537:c845" + ], "DstPorts": [ { "IP": "100.108.74.26", diff --git a/hscontrol/policy/v2/testdata/acl_results/ACL-AT01.hujson b/hscontrol/policy/v2/testdata/acl_results/ACL-AT01.hujson index e3387743d..b98acb335 100644 --- a/hscontrol/policy/v2/testdata/acl_results/ACL-AT01.hujson +++ b/hscontrol/policy/v2/testdata/acl_results/ACL-AT01.hujson @@ -5,23 +5,37 @@ // Expected: Rules on 8 of 8 nodes { "test_id": "ACL-AT01", - "timestamp": "2026-03-17T14:21:36Z", - "propagation_wait_seconds": 10, "input": { - "policy_file": "acl_policies/acl_at01.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -31,74 +45,32 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "acls": [ { "action": "accept", - "src": ["tag:server", "tag:client", "tag:prod", "tag:router", "tag:exit"], - "dst": ["*:*"] + "src": [ + "tag:server", + "tag:client", + "tag:prod", + "tag:router", + "tag:exit" + ], + "dst": [ + "*:*" + ] } ] - }, - "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", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] - }, - "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": { diff --git a/hscontrol/policy/v2/testdata/acl_results/ACL-AT02.hujson b/hscontrol/policy/v2/testdata/acl_results/ACL-AT02.hujson index ecf74fbb1..21e38018e 100644 --- a/hscontrol/policy/v2/testdata/acl_results/ACL-AT02.hujson +++ b/hscontrol/policy/v2/testdata/acl_results/ACL-AT02.hujson @@ -5,23 +5,37 @@ // Expected: Rules on exit-node, subnet-router, tagged-client, tagged-prod, tagged-server { "test_id": "ACL-AT02", - "timestamp": "2026-03-17T14:21:47Z", - "propagation_wait_seconds": 10, "input": { - "policy_file": "acl_policies/acl_at02.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -31,74 +45,32 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "acls": [ { "action": "accept", - "src": ["*"], - "dst": ["tag:server:22", "tag:client:22", "tag:prod:22", "tag:router:22", "tag:exit:22"] + "src": [ + "*" + ], + "dst": [ + "tag:server:22", + "tag:client:22", + "tag:prod:22", + "tag:router:22", + "tag:exit:22" + ] } ] - }, - "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", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] - }, - "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": { diff --git a/hscontrol/policy/v2/testdata/acl_results/ACL-AT03.hujson b/hscontrol/policy/v2/testdata/acl_results/ACL-AT03.hujson index 899df47f2..2636356d6 100644 --- a/hscontrol/policy/v2/testdata/acl_results/ACL-AT03.hujson +++ b/hscontrol/policy/v2/testdata/acl_results/ACL-AT03.hujson @@ -5,23 +5,37 @@ // Expected: Rules on user-kris, user-mon, user1 { "test_id": "ACL-AT03", - "timestamp": "2026-03-17T14:21:57Z", - "propagation_wait_seconds": 10, "input": { - "policy_file": "acl_policies/acl_at03.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -31,74 +45,32 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "acls": [ { "action": "accept", - "src": ["tag:server", "tag:client", "tag:prod", "tag:router", "tag:exit"], - "dst": ["autogroup:member:22"] + "src": [ + "tag:server", + "tag:client", + "tag:prod", + "tag:router", + "tag:exit" + ], + "dst": [ + "autogroup:member:22" + ] } ] - }, - "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", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] - }, - "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": { diff --git a/hscontrol/policy/v2/testdata/acl_results/ACL-AT04.hujson b/hscontrol/policy/v2/testdata/acl_results/ACL-AT04.hujson index 392ec196a..2b52cb205 100644 --- a/hscontrol/policy/v2/testdata/acl_results/ACL-AT04.hujson +++ b/hscontrol/policy/v2/testdata/acl_results/ACL-AT04.hujson @@ -7,23 +7,37 @@ // Expected: Rules on tagged-server { "test_id": "ACL-AT04", - "timestamp": "2026-03-17T14:22:08Z", - "propagation_wait_seconds": 10, "input": { - "policy_file": "acl_policies/acl_at04.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -33,79 +47,37 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "acls": [ { "action": "accept", - "src": ["autogroup:tagged"], - "dst": ["tag:server:22"] + "src": [ + "autogroup:tagged" + ], + "dst": [ + "tag:server:22" + ] }, { "action": "accept", - "src": ["autogroup:member"], - "dst": ["tag:server:80"] + "src": [ + "autogroup:member" + ], + "dst": [ + "tag:server:80" + ] } ] - }, - "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", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] - }, - "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": { diff --git a/hscontrol/policy/v2/testdata/acl_results/ACL-AT05.hujson b/hscontrol/policy/v2/testdata/acl_results/ACL-AT05.hujson index d98bd4ad1..d75d1f761 100644 --- a/hscontrol/policy/v2/testdata/acl_results/ACL-AT05.hujson +++ b/hscontrol/policy/v2/testdata/acl_results/ACL-AT05.hujson @@ -7,23 +7,37 @@ // Expected: Rules on tagged-client, tagged-server { "test_id": "ACL-AT05", - "timestamp": "2026-03-17T14:22:18Z", - "propagation_wait_seconds": 10, "input": { - "policy_file": "acl_policies/acl_at05.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -33,79 +47,37 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "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"] + "src": [ + "tag:client" + ], + "dst": [ + "tag:server:22" + ] }, { "action": "accept", - "src": ["tag:server"], - "dst": ["tag:client:22"] + "src": [ + "tag:server" + ], + "dst": [ + "tag:client:22" + ] } ] - }, - "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", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] - }, - "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": { @@ -118,7 +90,10 @@ "tagged-client": { "packet_filter_rules": [ { - "SrcIPs": ["100.108.74.26", "fd7a:115c:a1e0::b901:4a87"], + "SrcIPs": [ + "100.108.74.26", + "fd7a:115c:a1e0::b901:4a87" + ], "DstPorts": [ { "IP": "100.83.200.69", @@ -144,7 +119,10 @@ "tagged-server": { "packet_filter_rules": [ { - "SrcIPs": ["100.83.200.69", "fd7a:115c:a1e0::c537:c845"], + "SrcIPs": [ + "100.83.200.69", + "fd7a:115c:a1e0::c537:c845" + ], "DstPorts": [ { "IP": "100.108.74.26", diff --git a/hscontrol/policy/v2/testdata/acl_results/ACL-AT06.hujson b/hscontrol/policy/v2/testdata/acl_results/ACL-AT06.hujson index 25a76eddd..27effc5fc 100644 --- a/hscontrol/policy/v2/testdata/acl_results/ACL-AT06.hujson +++ b/hscontrol/policy/v2/testdata/acl_results/ACL-AT06.hujson @@ -9,23 +9,37 @@ // Expected: Rules on tagged-client, tagged-prod, tagged-server { "test_id": "ACL-AT06", - "timestamp": "2026-03-17T14:22:29Z", - "propagation_wait_seconds": 10, "input": { - "policy_file": "acl_policies/acl_at06.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -35,89 +49,55 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "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"] + "src": [ + "tag:client" + ], + "dst": [ + "tag:server:22" + ] }, { "action": "accept", - "src": ["tag:server"], - "dst": ["tag:prod:5432"] + "src": [ + "tag:server" + ], + "dst": [ + "tag:prod:5432" + ] }, { "action": "accept", - "src": ["tag:prod"], - "dst": ["tag:client:80"] + "src": [ + "tag:prod" + ], + "dst": [ + "tag:client:80" + ] }, { "action": "accept", - "src": ["tag:client"], - "dst": ["tag:prod:443"] + "src": [ + "tag:client" + ], + "dst": [ + "tag:prod:443" + ] } ] - }, - "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", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] - }, - "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": { @@ -130,7 +110,10 @@ "tagged-client": { "packet_filter_rules": [ { - "SrcIPs": ["100.103.8.15", "fd7a:115c:a1e0::5b37:80f"], + "SrcIPs": [ + "100.103.8.15", + "fd7a:115c:a1e0::5b37:80f" + ], "DstPorts": [ { "IP": "100.83.200.69", @@ -153,7 +136,10 @@ "tagged-prod": { "packet_filter_rules": [ { - "SrcIPs": ["100.83.200.69", "fd7a:115c:a1e0::c537:c845"], + "SrcIPs": [ + "100.83.200.69", + "fd7a:115c:a1e0::c537:c845" + ], "DstPorts": [ { "IP": "100.103.8.15", @@ -172,7 +158,10 @@ ] }, { - "SrcIPs": ["100.108.74.26", "fd7a:115c:a1e0::b901:4a87"], + "SrcIPs": [ + "100.108.74.26", + "fd7a:115c:a1e0::b901:4a87" + ], "DstPorts": [ { "IP": "100.103.8.15", @@ -195,7 +184,10 @@ "tagged-server": { "packet_filter_rules": [ { - "SrcIPs": ["100.83.200.69", "fd7a:115c:a1e0::c537:c845"], + "SrcIPs": [ + "100.83.200.69", + "fd7a:115c:a1e0::c537:c845" + ], "DstPorts": [ { "IP": "100.108.74.26", diff --git a/hscontrol/policy/v2/testdata/acl_results/ACL-AU01.hujson b/hscontrol/policy/v2/testdata/acl_results/ACL-AU01.hujson index 2f5f50a1e..60740e737 100644 --- a/hscontrol/policy/v2/testdata/acl_results/ACL-AU01.hujson +++ b/hscontrol/policy/v2/testdata/acl_results/ACL-AU01.hujson @@ -5,23 +5,37 @@ // Expected: Rules on tagged-server { "test_id": "ACL-AU01", - "timestamp": "2026-03-17T14:22:39Z", - "propagation_wait_seconds": 10, "input": { - "policy_file": "acl_policies/acl_au01.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -31,74 +45,28 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "acls": [ { "action": "accept", - "src": ["kristoffer@dalby.cc"], - "dst": ["tag:server:22"] + "src": [ + "kristoffer@dalby.cc" + ], + "dst": [ + "tag:server:22" + ] } ] - }, - "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", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] - }, - "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": { @@ -117,7 +85,10 @@ "tagged-server": { "packet_filter_rules": [ { - "SrcIPs": ["100.110.121.96", "fd7a:115c:a1e0::1737:7960"], + "SrcIPs": [ + "100.110.121.96", + "fd7a:115c:a1e0::1737:7960" + ], "DstPorts": [ { "IP": "100.108.74.26", diff --git a/hscontrol/policy/v2/testdata/acl_results/ACL-AU02.hujson b/hscontrol/policy/v2/testdata/acl_results/ACL-AU02.hujson index 353211fab..29a555ab6 100644 --- a/hscontrol/policy/v2/testdata/acl_results/ACL-AU02.hujson +++ b/hscontrol/policy/v2/testdata/acl_results/ACL-AU02.hujson @@ -5,23 +5,37 @@ // Expected: Rules on tagged-prod { "test_id": "ACL-AU02", - "timestamp": "2026-03-17T14:22:49Z", - "propagation_wait_seconds": 10, "input": { - "policy_file": "acl_policies/acl_au02.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -31,74 +45,28 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "acls": [ { "action": "accept", - "src": ["monitorpasskeykradalby@passkey"], - "dst": ["tag:prod:5432"] + "src": [ + "monitorpasskeykradalby@passkey" + ], + "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", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] - }, - "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": { @@ -114,7 +82,10 @@ "tagged-prod": { "packet_filter_rules": [ { - "SrcIPs": ["100.103.90.82", "fd7a:115c:a1e0::9e37:5a52"], + "SrcIPs": [ + "100.103.90.82", + "fd7a:115c:a1e0::9e37:5a52" + ], "DstPorts": [ { "IP": "100.103.8.15", diff --git a/hscontrol/policy/v2/testdata/acl_results/ACL-AU03.hujson b/hscontrol/policy/v2/testdata/acl_results/ACL-AU03.hujson index 6a8db0d4c..5c8d0dbe7 100644 --- a/hscontrol/policy/v2/testdata/acl_results/ACL-AU03.hujson +++ b/hscontrol/policy/v2/testdata/acl_results/ACL-AU03.hujson @@ -5,23 +5,37 @@ // Expected: Rules on tagged-prod, tagged-server { "test_id": "ACL-AU03", - "timestamp": "2026-03-17T14:23:00Z", - "propagation_wait_seconds": 10, "input": { - "policy_file": "acl_policies/acl_au03.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -31,74 +45,29 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "acls": [ { "action": "accept", - "src": ["group:developers"], - "dst": ["tag:server:22", "tag:prod:5432"] + "src": [ + "group:developers" + ], + "dst": [ + "tag:server:22", + "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", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] - }, - "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": { @@ -114,7 +83,12 @@ "tagged-prod": { "packet_filter_rules": [ { - "SrcIPs": ["100.110.121.96", "100.90.199.68", "fd7a:115c:a1e0::1737:7960", "fd7a:115c:a1e0::2d01:c747"], + "SrcIPs": [ + "100.110.121.96", + "100.90.199.68", + "fd7a:115c:a1e0::1737:7960", + "fd7a:115c:a1e0::2d01:c747" + ], "DstPorts": [ { "IP": "100.103.8.15", @@ -137,7 +111,12 @@ "tagged-server": { "packet_filter_rules": [ { - "SrcIPs": ["100.110.121.96", "100.90.199.68", "fd7a:115c:a1e0::1737:7960", "fd7a:115c:a1e0::2d01:c747"], + "SrcIPs": [ + "100.110.121.96", + "100.90.199.68", + "fd7a:115c:a1e0::1737:7960", + "fd7a:115c:a1e0::2d01:c747" + ], "DstPorts": [ { "IP": "100.108.74.26", diff --git a/hscontrol/policy/v2/testdata/acl_results/ACL-AU04.hujson b/hscontrol/policy/v2/testdata/acl_results/ACL-AU04.hujson index 86d6bafaa..8a57f8800 100644 --- a/hscontrol/policy/v2/testdata/acl_results/ACL-AU04.hujson +++ b/hscontrol/policy/v2/testdata/acl_results/ACL-AU04.hujson @@ -5,23 +5,37 @@ // Expected: Rules on user-kris, user1 { "test_id": "ACL-AU04", - "timestamp": "2026-03-17T14:23:10Z", - "propagation_wait_seconds": 10, "input": { - "policy_file": "acl_policies/acl_au04.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -31,74 +45,28 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "acls": [ { "action": "accept", - "src": ["*"], - "dst": ["group:developers:22"] + "src": [ + "*" + ], + "dst": [ + "group:developers:22" + ] } ] - }, - "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", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] - }, - "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": { diff --git a/hscontrol/policy/v2/testdata/acl_results/ACL-AU05.hujson b/hscontrol/policy/v2/testdata/acl_results/ACL-AU05.hujson index ae8947065..970d9c424 100644 --- a/hscontrol/policy/v2/testdata/acl_results/ACL-AU05.hujson +++ b/hscontrol/policy/v2/testdata/acl_results/ACL-AU05.hujson @@ -5,23 +5,37 @@ // Expected: Rules on user-mon { "test_id": "ACL-AU05", - "timestamp": "2026-03-17T14:23:21Z", - "propagation_wait_seconds": 10, "input": { - "policy_file": "acl_policies/acl_au05.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -31,74 +45,28 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "acls": [ { "action": "accept", - "src": ["*"], - "dst": ["group:monitors:*"] + "src": [ + "*" + ], + "dst": [ + "group:monitors:*" + ] } ] - }, - "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", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] - }, - "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": { diff --git a/hscontrol/policy/v2/testdata/acl_results/ACL-AU06.hujson b/hscontrol/policy/v2/testdata/acl_results/ACL-AU06.hujson index d87204d43..0670d2745 100644 --- a/hscontrol/policy/v2/testdata/acl_results/ACL-AU06.hujson +++ b/hscontrol/policy/v2/testdata/acl_results/ACL-AU06.hujson @@ -5,23 +5,37 @@ // Expected: Rules on tagged-server { "test_id": "ACL-AU06", - "timestamp": "2026-03-17T14:23:31Z", - "propagation_wait_seconds": 10, "input": { - "policy_file": "acl_policies/acl_au06.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -31,74 +45,30 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "acls": [ { "action": "accept", - "src": ["group:admins", "group:developers", "group:monitors"], - "dst": ["tag:server:22"] + "src": [ + "group:admins", + "group:developers", + "group:monitors" + ], + "dst": [ + "tag:server:22" + ] } ] - }, - "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", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] - }, - "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": { diff --git a/hscontrol/policy/v2/testdata/acl_results/ACL-C01.hujson b/hscontrol/policy/v2/testdata/acl_results/ACL-C01.hujson index b04495578..56186e6ea 100644 --- a/hscontrol/policy/v2/testdata/acl_results/ACL-C01.hujson +++ b/hscontrol/policy/v2/testdata/acl_results/ACL-C01.hujson @@ -8,23 +8,37 @@ // Expected: Rules on tagged-prod, tagged-server { "test_id": "ACL-C01", - "timestamp": "2026-03-17T14:23:42Z", - "propagation_wait_seconds": 10, "input": { - "policy_file": "acl_policies/acl_c01.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -34,84 +48,46 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "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"] + "src": [ + "tag:client" + ], + "dst": [ + "tag:server:22" + ] }, { "action": "accept", - "src": ["autogroup:member"], - "dst": ["tag:server:80"] + "src": [ + "autogroup:member" + ], + "dst": [ + "tag:server:80" + ] }, { "action": "accept", - "src": ["*"], - "dst": ["tag:prod:5432"] + "src": [ + "*" + ], + "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", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] - }, - "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": { @@ -155,7 +131,10 @@ "tagged-server": { "packet_filter_rules": [ { - "SrcIPs": ["100.83.200.69", "fd7a:115c:a1e0::c537:c845"], + "SrcIPs": [ + "100.83.200.69", + "fd7a:115c:a1e0::c537:c845" + ], "DstPorts": [ { "IP": "100.108.74.26", diff --git a/hscontrol/policy/v2/testdata/acl_results/ACL-C02.hujson b/hscontrol/policy/v2/testdata/acl_results/ACL-C02.hujson index 023bcede7..597a87fa9 100644 --- a/hscontrol/policy/v2/testdata/acl_results/ACL-C02.hujson +++ b/hscontrol/policy/v2/testdata/acl_results/ACL-C02.hujson @@ -8,23 +8,37 @@ // Expected: Rules on tagged-prod, tagged-server { "test_id": "ACL-C02", - "timestamp": "2026-03-17T14:23:52Z", - "propagation_wait_seconds": 10, "input": { - "policy_file": "acl_policies/acl_c02.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -34,84 +48,47 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "acls": [ { "action": "accept", - "src": ["tag:client", "autogroup:member"], - "dst": ["tag:server:22"] + "src": [ + "tag:client", + "autogroup:member" + ], + "dst": [ + "tag:server:22" + ] }, { "action": "accept", - "src": ["tag:prod"], - "dst": ["tag:server:80"] + "src": [ + "tag:prod" + ], + "dst": [ + "tag:server:80" + ] }, { "action": "accept", - "src": ["group:admins"], - "dst": ["tag:prod:5432"] + "src": [ + "group:admins" + ], + "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", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] - }, - "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": { @@ -127,7 +104,10 @@ "tagged-prod": { "packet_filter_rules": [ { - "SrcIPs": ["100.90.199.68", "fd7a:115c:a1e0::2d01:c747"], + "SrcIPs": [ + "100.90.199.68", + "fd7a:115c:a1e0::2d01:c747" + ], "DstPorts": [ { "IP": "100.103.8.15", @@ -178,7 +158,10 @@ ] }, { - "SrcIPs": ["100.103.8.15", "fd7a:115c:a1e0::5b37:80f"], + "SrcIPs": [ + "100.103.8.15", + "fd7a:115c:a1e0::5b37:80f" + ], "DstPorts": [ { "IP": "100.108.74.26", diff --git a/hscontrol/policy/v2/testdata/acl_results/ACL-C03.hujson b/hscontrol/policy/v2/testdata/acl_results/ACL-C03.hujson index 8c6a47f9e..d01b4e1d4 100644 --- a/hscontrol/policy/v2/testdata/acl_results/ACL-C03.hujson +++ b/hscontrol/policy/v2/testdata/acl_results/ACL-C03.hujson @@ -7,23 +7,37 @@ // Expected: Rules on tagged-prod, tagged-server, user-kris, user-mon, user1 { "test_id": "ACL-C03", - "timestamp": "2026-03-17T14:24:03Z", - "propagation_wait_seconds": 10, "input": { - "policy_file": "acl_policies/acl_c03.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -33,79 +47,39 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "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", "tag:prod:5432", "webserver:80"] + "src": [ + "tag:client" + ], + "dst": [ + "tag:server:22", + "tag:prod:5432", + "webserver:80" + ] }, { "action": "accept", - "src": ["autogroup:member"], - "dst": ["autogroup:self:*"] + "src": [ + "autogroup:member" + ], + "dst": [ + "autogroup:self:*" + ] } ] - }, - "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", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] - }, - "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": { @@ -121,7 +95,10 @@ "tagged-prod": { "packet_filter_rules": [ { - "SrcIPs": ["100.83.200.69", "fd7a:115c:a1e0::c537:c845"], + "SrcIPs": [ + "100.83.200.69", + "fd7a:115c:a1e0::c537:c845" + ], "DstPorts": [ { "IP": "100.103.8.15", @@ -144,7 +121,10 @@ "tagged-server": { "packet_filter_rules": [ { - "SrcIPs": ["100.83.200.69", "fd7a:115c:a1e0::c537:c845"], + "SrcIPs": [ + "100.83.200.69", + "fd7a:115c:a1e0::c537:c845" + ], "DstPorts": [ { "IP": "100.108.74.26", @@ -174,7 +154,10 @@ "user-kris": { "packet_filter_rules": [ { - "SrcIPs": ["100.110.121.96", "fd7a:115c:a1e0::1737:7960"], + "SrcIPs": [ + "100.110.121.96", + "fd7a:115c:a1e0::1737:7960" + ], "DstPorts": [ { "IP": "100.110.121.96", @@ -197,7 +180,10 @@ "user-mon": { "packet_filter_rules": [ { - "SrcIPs": ["100.103.90.82", "fd7a:115c:a1e0::9e37:5a52"], + "SrcIPs": [ + "100.103.90.82", + "fd7a:115c:a1e0::9e37:5a52" + ], "DstPorts": [ { "IP": "100.103.90.82", @@ -220,7 +206,10 @@ "user1": { "packet_filter_rules": [ { - "SrcIPs": ["100.90.199.68", "fd7a:115c:a1e0::2d01:c747"], + "SrcIPs": [ + "100.90.199.68", + "fd7a:115c:a1e0::2d01:c747" + ], "DstPorts": [ { "IP": "100.90.199.68", diff --git a/hscontrol/policy/v2/testdata/acl_results/ACL-C04.hujson b/hscontrol/policy/v2/testdata/acl_results/ACL-C04.hujson index 21f979ce1..a5eb78bb9 100644 --- a/hscontrol/policy/v2/testdata/acl_results/ACL-C04.hujson +++ b/hscontrol/policy/v2/testdata/acl_results/ACL-C04.hujson @@ -9,23 +9,37 @@ // Expected: Rules on tagged-prod, tagged-server, user-kris, user-mon, user1 { "test_id": "ACL-C04", - "timestamp": "2026-03-17T14:24:13Z", - "propagation_wait_seconds": 10, "input": { - "policy_file": "acl_policies/acl_c04.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -35,89 +49,55 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "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"] + "src": [ + "tag:client" + ], + "dst": [ + "tag:server:22" + ] }, { "action": "accept", - "src": ["tag:server"], - "dst": ["tag:prod:5432"] + "src": [ + "tag:server" + ], + "dst": [ + "tag:prod:5432" + ] }, { "action": "accept", - "src": ["autogroup:member"], - "dst": ["autogroup:self:*"] + "src": [ + "autogroup:member" + ], + "dst": [ + "autogroup:self:*" + ] }, { "action": "accept", - "src": ["*"], - "dst": ["autogroup:internet:*"] + "src": [ + "*" + ], + "dst": [ + "autogroup:internet:*" + ] } ] - }, - "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", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] - }, - "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": { @@ -133,7 +113,10 @@ "tagged-prod": { "packet_filter_rules": [ { - "SrcIPs": ["100.108.74.26", "fd7a:115c:a1e0::b901:4a87"], + "SrcIPs": [ + "100.108.74.26", + "fd7a:115c:a1e0::b901:4a87" + ], "DstPorts": [ { "IP": "100.103.8.15", @@ -156,7 +139,10 @@ "tagged-server": { "packet_filter_rules": [ { - "SrcIPs": ["100.83.200.69", "fd7a:115c:a1e0::c537:c845"], + "SrcIPs": [ + "100.83.200.69", + "fd7a:115c:a1e0::c537:c845" + ], "DstPorts": [ { "IP": "100.108.74.26", @@ -179,7 +165,10 @@ "user-kris": { "packet_filter_rules": [ { - "SrcIPs": ["100.110.121.96", "fd7a:115c:a1e0::1737:7960"], + "SrcIPs": [ + "100.110.121.96", + "fd7a:115c:a1e0::1737:7960" + ], "DstPorts": [ { "IP": "100.110.121.96", @@ -202,7 +191,10 @@ "user-mon": { "packet_filter_rules": [ { - "SrcIPs": ["100.103.90.82", "fd7a:115c:a1e0::9e37:5a52"], + "SrcIPs": [ + "100.103.90.82", + "fd7a:115c:a1e0::9e37:5a52" + ], "DstPorts": [ { "IP": "100.103.90.82", @@ -225,7 +217,10 @@ "user1": { "packet_filter_rules": [ { - "SrcIPs": ["100.90.199.68", "fd7a:115c:a1e0::2d01:c747"], + "SrcIPs": [ + "100.90.199.68", + "fd7a:115c:a1e0::2d01:c747" + ], "DstPorts": [ { "IP": "100.90.199.68", diff --git a/hscontrol/policy/v2/testdata/acl_results/ACL-C05.hujson b/hscontrol/policy/v2/testdata/acl_results/ACL-C05.hujson index 88d66a87d..9cb5a0c40 100644 --- a/hscontrol/policy/v2/testdata/acl_results/ACL-C05.hujson +++ b/hscontrol/policy/v2/testdata/acl_results/ACL-C05.hujson @@ -5,23 +5,37 @@ // Expected: Rules on 8 of 8 nodes { "test_id": "ACL-C05", - "timestamp": "2026-03-17T14:24:23Z", - "propagation_wait_seconds": 10, "input": { - "policy_file": "acl_policies/acl_c05.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -31,15 +45,23 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "acls": [ { "action": "accept", - "src": ["*"], + "src": [ + "*" + ], "dst": [ "tag:server:22", "tag:prod:5432", @@ -51,62 +73,6 @@ ] } ] - }, - "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", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] - }, - "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": { @@ -277,7 +243,10 @@ ] }, { - "SrcIPs": ["100.110.121.96", "fd7a:115c:a1e0::1737:7960"], + "SrcIPs": [ + "100.110.121.96", + "fd7a:115c:a1e0::1737:7960" + ], "DstPorts": [ { "IP": "100.110.121.96", @@ -324,7 +293,10 @@ ] }, { - "SrcIPs": ["100.103.90.82", "fd7a:115c:a1e0::9e37:5a52"], + "SrcIPs": [ + "100.103.90.82", + "fd7a:115c:a1e0::9e37:5a52" + ], "DstPorts": [ { "IP": "100.103.90.82", @@ -371,7 +343,10 @@ ] }, { - "SrcIPs": ["100.90.199.68", "fd7a:115c:a1e0::2d01:c747"], + "SrcIPs": [ + "100.90.199.68", + "fd7a:115c:a1e0::2d01:c747" + ], "DstPorts": [ { "IP": "100.90.199.68", diff --git a/hscontrol/policy/v2/testdata/acl_results/ACL-C06.hujson b/hscontrol/policy/v2/testdata/acl_results/ACL-C06.hujson index 74a0be1b5..b308b3bb6 100644 --- a/hscontrol/policy/v2/testdata/acl_results/ACL-C06.hujson +++ b/hscontrol/policy/v2/testdata/acl_results/ACL-C06.hujson @@ -5,23 +5,37 @@ // Expected: Rules on tagged-server { "test_id": "ACL-C06", - "timestamp": "2026-03-17T14:24:34Z", - "propagation_wait_seconds": 10, "input": { - "policy_file": "acl_policies/acl_c06.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -31,74 +45,32 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "acls": [ { "action": "accept", - "src": ["tag:client", "tag:prod", "tag:server", "autogroup:member", "group:admins"], - "dst": ["tag:server:22"] + "src": [ + "tag:client", + "tag:prod", + "tag:server", + "autogroup:member", + "group:admins" + ], + "dst": [ + "tag:server:22" + ] } ] - }, - "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", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] - }, - "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": { diff --git a/hscontrol/policy/v2/testdata/acl_results/ACL-C07.hujson b/hscontrol/policy/v2/testdata/acl_results/ACL-C07.hujson index aedd29858..e3b870541 100644 --- a/hscontrol/policy/v2/testdata/acl_results/ACL-C07.hujson +++ b/hscontrol/policy/v2/testdata/acl_results/ACL-C07.hujson @@ -9,23 +9,37 @@ // Expected: Rules on tagged-server { "test_id": "ACL-C07", - "timestamp": "2026-03-17T14:24:44Z", - "propagation_wait_seconds": 10, "input": { - "policy_file": "acl_policies/acl_c07.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -35,89 +49,55 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "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"] + "src": [ + "tag:client" + ], + "dst": [ + "tag:server:22" + ] }, { "action": "accept", - "src": ["tag:client"], - "dst": ["tag:server:80"] + "src": [ + "tag:client" + ], + "dst": [ + "tag:server:80" + ] }, { "action": "accept", - "src": ["tag:client"], - "dst": ["tag:server:443"] + "src": [ + "tag:client" + ], + "dst": [ + "tag:server:443" + ] }, { "action": "accept", - "src": ["tag:client"], - "dst": ["tag:server:8080"] + "src": [ + "tag:client" + ], + "dst": [ + "tag:server:8080" + ] } ] - }, - "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", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] - }, - "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": { @@ -136,7 +116,10 @@ "tagged-server": { "packet_filter_rules": [ { - "SrcIPs": ["100.83.200.69", "fd7a:115c:a1e0::c537:c845"], + "SrcIPs": [ + "100.83.200.69", + "fd7a:115c:a1e0::c537:c845" + ], "DstPorts": [ { "IP": "100.108.74.26", diff --git a/hscontrol/policy/v2/testdata/acl_results/ACL-C08.hujson b/hscontrol/policy/v2/testdata/acl_results/ACL-C08.hujson index e6d5e69a2..07a7c8364 100644 --- a/hscontrol/policy/v2/testdata/acl_results/ACL-C08.hujson +++ b/hscontrol/policy/v2/testdata/acl_results/ACL-C08.hujson @@ -5,23 +5,37 @@ // Expected: Rules on exit-node, subnet-router, tagged-client, tagged-prod, tagged-server { "test_id": "ACL-C08", - "timestamp": "2026-03-17T14:24:55Z", - "propagation_wait_seconds": 10, "input": { - "policy_file": "acl_policies/acl_c08.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -31,74 +45,32 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "acls": [ { "action": "accept", - "src": ["*"], - "dst": ["tag:server:22", "tag:prod:22", "tag:client:22", "tag:router:22", "tag:exit:22"] + "src": [ + "*" + ], + "dst": [ + "tag:server:22", + "tag:prod:22", + "tag:client:22", + "tag:router:22", + "tag:exit:22" + ] } ] - }, - "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", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] - }, - "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": { diff --git a/hscontrol/policy/v2/testdata/acl_results/ACL-C09.hujson b/hscontrol/policy/v2/testdata/acl_results/ACL-C09.hujson index c0b3ea2a7..5743dfa6e 100644 --- a/hscontrol/policy/v2/testdata/acl_results/ACL-C09.hujson +++ b/hscontrol/policy/v2/testdata/acl_results/ACL-C09.hujson @@ -9,23 +9,37 @@ // Expected: Rules on subnet-router, tagged-prod, tagged-server, user-kris, user-mon, user1 { "test_id": "ACL-C09", - "timestamp": "2026-03-17T14:25:05Z", - "propagation_wait_seconds": 10, "input": { - "policy_file": "acl_policies/acl_c09.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -35,99 +49,73 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "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"] + "src": [ + "tag:client" + ], + "dst": [ + "tag:server:22" + ] }, { "action": "accept", - "src": ["tag:client"], - "dst": ["tag:prod:22"] + "src": [ + "tag:client" + ], + "dst": [ + "tag:prod:22" + ] }, { "action": "accept", - "src": ["tag:server"], - "dst": ["tag:prod:5432"] + "src": [ + "tag:server" + ], + "dst": [ + "tag:prod:5432" + ] }, { "action": "accept", - "src": ["autogroup:member"], - "dst": ["autogroup:self:*"] + "src": [ + "autogroup:member" + ], + "dst": [ + "autogroup:self:*" + ] }, { "action": "accept", - "src": ["group:developers"], - "dst": ["tag:router:*"] + "src": [ + "group:developers" + ], + "dst": [ + "tag:router:*" + ] }, { "action": "accept", - "src": ["*"], - "dst": ["autogroup:internet:*"] + "src": [ + "*" + ], + "dst": [ + "autogroup:internet:*" + ] } ] - }, - "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", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] - }, - "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": { @@ -137,7 +125,12 @@ "subnet-router": { "packet_filter_rules": [ { - "SrcIPs": ["100.110.121.96", "100.90.199.68", "fd7a:115c:a1e0::1737:7960", "fd7a:115c:a1e0::2d01:c747"], + "SrcIPs": [ + "100.110.121.96", + "100.90.199.68", + "fd7a:115c:a1e0::1737:7960", + "fd7a:115c:a1e0::2d01:c747" + ], "DstPorts": [ { "IP": "100.92.142.61", @@ -163,7 +156,10 @@ "tagged-prod": { "packet_filter_rules": [ { - "SrcIPs": ["100.83.200.69", "fd7a:115c:a1e0::c537:c845"], + "SrcIPs": [ + "100.83.200.69", + "fd7a:115c:a1e0::c537:c845" + ], "DstPorts": [ { "IP": "100.103.8.15", @@ -182,7 +178,10 @@ ] }, { - "SrcIPs": ["100.108.74.26", "fd7a:115c:a1e0::b901:4a87"], + "SrcIPs": [ + "100.108.74.26", + "fd7a:115c:a1e0::b901:4a87" + ], "DstPorts": [ { "IP": "100.103.8.15", @@ -205,7 +204,10 @@ "tagged-server": { "packet_filter_rules": [ { - "SrcIPs": ["100.83.200.69", "fd7a:115c:a1e0::c537:c845"], + "SrcIPs": [ + "100.83.200.69", + "fd7a:115c:a1e0::c537:c845" + ], "DstPorts": [ { "IP": "100.108.74.26", @@ -228,7 +230,10 @@ "user-kris": { "packet_filter_rules": [ { - "SrcIPs": ["100.110.121.96", "fd7a:115c:a1e0::1737:7960"], + "SrcIPs": [ + "100.110.121.96", + "fd7a:115c:a1e0::1737:7960" + ], "DstPorts": [ { "IP": "100.110.121.96", @@ -251,7 +256,10 @@ "user-mon": { "packet_filter_rules": [ { - "SrcIPs": ["100.103.90.82", "fd7a:115c:a1e0::9e37:5a52"], + "SrcIPs": [ + "100.103.90.82", + "fd7a:115c:a1e0::9e37:5a52" + ], "DstPorts": [ { "IP": "100.103.90.82", @@ -274,7 +282,10 @@ "user1": { "packet_filter_rules": [ { - "SrcIPs": ["100.90.199.68", "fd7a:115c:a1e0::2d01:c747"], + "SrcIPs": [ + "100.90.199.68", + "fd7a:115c:a1e0::2d01:c747" + ], "DstPorts": [ { "IP": "100.90.199.68", diff --git a/hscontrol/policy/v2/testdata/acl_results/ACL-C10.hujson b/hscontrol/policy/v2/testdata/acl_results/ACL-C10.hujson index 74c0deeca..ad4205d17 100644 --- a/hscontrol/policy/v2/testdata/acl_results/ACL-C10.hujson +++ b/hscontrol/policy/v2/testdata/acl_results/ACL-C10.hujson @@ -8,23 +8,37 @@ // Expected: Rules on 8 of 8 nodes { "test_id": "ACL-C10", - "timestamp": "2026-03-17T14:25:16Z", - "propagation_wait_seconds": 10, "input": { - "policy_file": "acl_policies/acl_c10.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -34,84 +48,47 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "acls": [ { "action": "accept", - "src": ["autogroup:member"], - "dst": ["autogroup:self:*"] + "src": [ + "autogroup:member" + ], + "dst": [ + "autogroup:self:*" + ] }, { "action": "accept", - "src": ["autogroup:member"], - "dst": ["tag:server:22", "tag:prod:5432"] + "src": [ + "autogroup:member" + ], + "dst": [ + "tag:server:22", + "tag:prod:5432" + ] }, { "action": "accept", - "src": ["autogroup:tagged"], - "dst": ["autogroup:tagged:*"] + "src": [ + "autogroup:tagged" + ], + "dst": [ + "autogroup:tagged:*" + ] } ] - }, - "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", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] - }, - "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": { @@ -340,7 +317,10 @@ "user-kris": { "packet_filter_rules": [ { - "SrcIPs": ["100.110.121.96", "fd7a:115c:a1e0::1737:7960"], + "SrcIPs": [ + "100.110.121.96", + "fd7a:115c:a1e0::1737:7960" + ], "DstPorts": [ { "IP": "100.110.121.96", @@ -363,7 +343,10 @@ "user-mon": { "packet_filter_rules": [ { - "SrcIPs": ["100.103.90.82", "fd7a:115c:a1e0::9e37:5a52"], + "SrcIPs": [ + "100.103.90.82", + "fd7a:115c:a1e0::9e37:5a52" + ], "DstPorts": [ { "IP": "100.103.90.82", @@ -386,7 +369,10 @@ "user1": { "packet_filter_rules": [ { - "SrcIPs": ["100.90.199.68", "fd7a:115c:a1e0::2d01:c747"], + "SrcIPs": [ + "100.90.199.68", + "fd7a:115c:a1e0::2d01:c747" + ], "DstPorts": [ { "IP": "100.90.199.68", diff --git a/hscontrol/policy/v2/testdata/acl_results/ACL-D01.hujson b/hscontrol/policy/v2/testdata/acl_results/ACL-D01.hujson index 2f960bee9..f84a85002 100644 --- a/hscontrol/policy/v2/testdata/acl_results/ACL-D01.hujson +++ b/hscontrol/policy/v2/testdata/acl_results/ACL-D01.hujson @@ -7,23 +7,37 @@ // Expected: Rules on tagged-server { "test_id": "ACL-D01", - "timestamp": "2026-03-17T14:25:26Z", - "propagation_wait_seconds": 10, "input": { - "policy_file": "acl_policies/acl_d01.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -33,79 +47,37 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "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"] + "src": [ + "tag:client" + ], + "dst": [ + "tag:server:22" + ] }, { "action": "accept", - "src": ["*"], - "dst": ["tag:server:22"] + "src": [ + "*" + ], + "dst": [ + "tag:server:22" + ] } ] - }, - "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", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] - }, - "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": { @@ -124,7 +96,10 @@ "tagged-server": { "packet_filter_rules": [ { - "SrcIPs": ["100.83.200.69", "fd7a:115c:a1e0::c537:c845"], + "SrcIPs": [ + "100.83.200.69", + "fd7a:115c:a1e0::c537:c845" + ], "DstPorts": [ { "IP": "100.108.74.26", diff --git a/hscontrol/policy/v2/testdata/acl_results/ACL-D02.hujson b/hscontrol/policy/v2/testdata/acl_results/ACL-D02.hujson index f931be28b..241fa8bd1 100644 --- a/hscontrol/policy/v2/testdata/acl_results/ACL-D02.hujson +++ b/hscontrol/policy/v2/testdata/acl_results/ACL-D02.hujson @@ -5,23 +5,37 @@ // Expected: Rules on tagged-server { "test_id": "ACL-D02", - "timestamp": "2026-03-17T14:25:37Z", - "propagation_wait_seconds": 10, "input": { - "policy_file": "acl_policies/acl_d02.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -31,74 +45,29 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "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", "webserver:22"] + "src": [ + "tag:client" + ], + "dst": [ + "tag:server:22", + "webserver:22" + ] } ] - }, - "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", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] - }, - "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": { @@ -117,7 +86,10 @@ "tagged-server": { "packet_filter_rules": [ { - "SrcIPs": ["100.83.200.69", "fd7a:115c:a1e0::c537:c845"], + "SrcIPs": [ + "100.83.200.69", + "fd7a:115c:a1e0::c537:c845" + ], "DstPorts": [ { "IP": "100.108.74.26", diff --git a/hscontrol/policy/v2/testdata/acl_results/ACL-D03.hujson b/hscontrol/policy/v2/testdata/acl_results/ACL-D03.hujson index ed23fd27f..8f60e4d87 100644 --- a/hscontrol/policy/v2/testdata/acl_results/ACL-D03.hujson +++ b/hscontrol/policy/v2/testdata/acl_results/ACL-D03.hujson @@ -5,23 +5,37 @@ // Expected: Rules on 8 of 8 nodes { "test_id": "ACL-D03", - "timestamp": "2026-03-17T14:25:47Z", - "propagation_wait_seconds": 10, "input": { - "policy_file": "acl_policies/acl_d03.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -31,81 +45,39 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "acls": [ { "action": "accept", - "src": ["100.108.74.26", "tag:server"], - "dst": ["*:*"] + "src": [ + "100.108.74.26", + "tag:server" + ], + "dst": [ + "*:*" + ] } ] - }, - "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", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] - }, - "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": [ { - "SrcIPs": ["100.108.74.26", "fd7a:115c:a1e0::b901:4a87"], + "SrcIPs": [ + "100.108.74.26", + "fd7a:115c:a1e0::b901:4a87" + ], "DstPorts": [ { "IP": "*", @@ -121,7 +93,10 @@ "subnet-router": { "packet_filter_rules": [ { - "SrcIPs": ["100.108.74.26", "fd7a:115c:a1e0::b901:4a87"], + "SrcIPs": [ + "100.108.74.26", + "fd7a:115c:a1e0::b901:4a87" + ], "DstPorts": [ { "IP": "*", @@ -137,7 +112,10 @@ "tagged-client": { "packet_filter_rules": [ { - "SrcIPs": ["100.108.74.26", "fd7a:115c:a1e0::b901:4a87"], + "SrcIPs": [ + "100.108.74.26", + "fd7a:115c:a1e0::b901:4a87" + ], "DstPorts": [ { "IP": "*", @@ -153,7 +131,10 @@ "tagged-prod": { "packet_filter_rules": [ { - "SrcIPs": ["100.108.74.26", "fd7a:115c:a1e0::b901:4a87"], + "SrcIPs": [ + "100.108.74.26", + "fd7a:115c:a1e0::b901:4a87" + ], "DstPorts": [ { "IP": "*", @@ -169,7 +150,10 @@ "tagged-server": { "packet_filter_rules": [ { - "SrcIPs": ["100.108.74.26", "fd7a:115c:a1e0::b901:4a87"], + "SrcIPs": [ + "100.108.74.26", + "fd7a:115c:a1e0::b901:4a87" + ], "DstPorts": [ { "IP": "*", @@ -185,7 +169,10 @@ "user-kris": { "packet_filter_rules": [ { - "SrcIPs": ["100.108.74.26", "fd7a:115c:a1e0::b901:4a87"], + "SrcIPs": [ + "100.108.74.26", + "fd7a:115c:a1e0::b901:4a87" + ], "DstPorts": [ { "IP": "*", @@ -201,7 +188,10 @@ "user-mon": { "packet_filter_rules": [ { - "SrcIPs": ["100.108.74.26", "fd7a:115c:a1e0::b901:4a87"], + "SrcIPs": [ + "100.108.74.26", + "fd7a:115c:a1e0::b901:4a87" + ], "DstPorts": [ { "IP": "*", @@ -217,7 +207,10 @@ "user1": { "packet_filter_rules": [ { - "SrcIPs": ["100.108.74.26", "fd7a:115c:a1e0::b901:4a87"], + "SrcIPs": [ + "100.108.74.26", + "fd7a:115c:a1e0::b901:4a87" + ], "DstPorts": [ { "IP": "*", diff --git a/hscontrol/policy/v2/testdata/acl_results/ACL-D04.hujson b/hscontrol/policy/v2/testdata/acl_results/ACL-D04.hujson index df03b84cc..7270d8b8e 100644 --- a/hscontrol/policy/v2/testdata/acl_results/ACL-D04.hujson +++ b/hscontrol/policy/v2/testdata/acl_results/ACL-D04.hujson @@ -5,23 +5,37 @@ // Expected: Rules on 8 of 8 nodes { "test_id": "ACL-D04", - "timestamp": "2026-03-17T14:25:57Z", - "propagation_wait_seconds": 10, "input": { - "policy_file": "acl_policies/acl_d04.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -31,81 +45,38 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "acls": [ { "action": "accept", - "src": ["100.108.74.26", "webserver"], - "dst": ["*:*"] + "src": [ + "100.108.74.26", + "webserver" + ], + "dst": [ + "*:*" + ] } ] - }, - "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", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] - }, - "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": [ { - "SrcIPs": ["100.108.74.26"], + "SrcIPs": [ + "100.108.74.26" + ], "DstPorts": [ { "IP": "*", @@ -121,7 +92,9 @@ "subnet-router": { "packet_filter_rules": [ { - "SrcIPs": ["100.108.74.26"], + "SrcIPs": [ + "100.108.74.26" + ], "DstPorts": [ { "IP": "*", @@ -137,7 +110,9 @@ "tagged-client": { "packet_filter_rules": [ { - "SrcIPs": ["100.108.74.26"], + "SrcIPs": [ + "100.108.74.26" + ], "DstPorts": [ { "IP": "*", @@ -153,7 +128,9 @@ "tagged-prod": { "packet_filter_rules": [ { - "SrcIPs": ["100.108.74.26"], + "SrcIPs": [ + "100.108.74.26" + ], "DstPorts": [ { "IP": "*", @@ -169,7 +146,9 @@ "tagged-server": { "packet_filter_rules": [ { - "SrcIPs": ["100.108.74.26"], + "SrcIPs": [ + "100.108.74.26" + ], "DstPorts": [ { "IP": "*", @@ -185,7 +164,9 @@ "user-kris": { "packet_filter_rules": [ { - "SrcIPs": ["100.108.74.26"], + "SrcIPs": [ + "100.108.74.26" + ], "DstPorts": [ { "IP": "*", @@ -201,7 +182,9 @@ "user-mon": { "packet_filter_rules": [ { - "SrcIPs": ["100.108.74.26"], + "SrcIPs": [ + "100.108.74.26" + ], "DstPorts": [ { "IP": "*", @@ -217,7 +200,9 @@ "user1": { "packet_filter_rules": [ { - "SrcIPs": ["100.108.74.26"], + "SrcIPs": [ + "100.108.74.26" + ], "DstPorts": [ { "IP": "*", diff --git a/hscontrol/policy/v2/testdata/acl_results/ACL-D05.hujson b/hscontrol/policy/v2/testdata/acl_results/ACL-D05.hujson index c1c1a7ad5..4524118f0 100644 --- a/hscontrol/policy/v2/testdata/acl_results/ACL-D05.hujson +++ b/hscontrol/policy/v2/testdata/acl_results/ACL-D05.hujson @@ -5,23 +5,37 @@ // Expected: Rules on tagged-server { "test_id": "ACL-D05", - "timestamp": "2026-03-17T14:26:08Z", - "propagation_wait_seconds": 10, "input": { - "policy_file": "acl_policies/acl_d05.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -31,74 +45,29 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "acls": [ { "action": "accept", - "src": ["*"], - "dst": ["100.108.74.26:22", "tag:server:22"] + "src": [ + "*" + ], + "dst": [ + "100.108.74.26:22", + "tag:server:22" + ] } ] - }, - "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", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] - }, - "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": { diff --git a/hscontrol/policy/v2/testdata/acl_results/ACL-D06.hujson b/hscontrol/policy/v2/testdata/acl_results/ACL-D06.hujson index f859ac5ee..ad4758be6 100644 --- a/hscontrol/policy/v2/testdata/acl_results/ACL-D06.hujson +++ b/hscontrol/policy/v2/testdata/acl_results/ACL-D06.hujson @@ -5,23 +5,37 @@ // Expected: Rules on tagged-server { "test_id": "ACL-D06", - "timestamp": "2026-03-17T14:26:18Z", - "propagation_wait_seconds": 10, "input": { - "policy_file": "acl_policies/acl_d06.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -31,74 +45,29 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "acls": [ { "action": "accept", - "src": ["*"], - "dst": ["100.108.74.26:22", "webserver:22"] + "src": [ + "*" + ], + "dst": [ + "100.108.74.26:22", + "webserver:22" + ] } ] - }, - "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", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] - }, - "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": { diff --git a/hscontrol/policy/v2/testdata/acl_results/ACL-D07.hujson b/hscontrol/policy/v2/testdata/acl_results/ACL-D07.hujson index 439b5bf74..e2385e957 100644 --- a/hscontrol/policy/v2/testdata/acl_results/ACL-D07.hujson +++ b/hscontrol/policy/v2/testdata/acl_results/ACL-D07.hujson @@ -5,23 +5,37 @@ // Expected: Rules on 8 of 8 nodes { "test_id": "ACL-D07", - "timestamp": "2026-03-17T14:26:29Z", - "propagation_wait_seconds": 10, "input": { - "policy_file": "acl_policies/acl_d07.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -31,74 +45,29 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "acls": [ { "action": "accept", - "src": ["autogroup:member", "autogroup:tagged"], - "dst": ["*:*"] + "src": [ + "autogroup:member", + "autogroup:tagged" + ], + "dst": [ + "*:*" + ] } ] - }, - "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", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] - }, - "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": { diff --git a/hscontrol/policy/v2/testdata/acl_results/ACL-D08.hujson b/hscontrol/policy/v2/testdata/acl_results/ACL-D08.hujson index 3289ea339..55638c490 100644 --- a/hscontrol/policy/v2/testdata/acl_results/ACL-D08.hujson +++ b/hscontrol/policy/v2/testdata/acl_results/ACL-D08.hujson @@ -7,23 +7,37 @@ // Expected: Rules on user-kris, user-mon, user1 { "test_id": "ACL-D08", - "timestamp": "2026-03-17T14:26:39Z", - "propagation_wait_seconds": 10, "input": { - "policy_file": "acl_policies/acl_d08.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -33,79 +47,37 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "acls": [ { "action": "accept", - "src": ["*"], - "dst": ["autogroup:self:*"] + "src": [ + "*" + ], + "dst": [ + "autogroup:self:*" + ] }, { "action": "accept", - "src": ["kratail2tid@passkey"], - "dst": ["kratail2tid@passkey:*"] + "src": [ + "kratail2tid@passkey" + ], + "dst": [ + "kratail2tid@passkey:*" + ] } ] - }, - "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", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] - }, - "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": { @@ -127,7 +99,10 @@ "user-kris": { "packet_filter_rules": [ { - "SrcIPs": ["100.110.121.96", "fd7a:115c:a1e0::1737:7960"], + "SrcIPs": [ + "100.110.121.96", + "fd7a:115c:a1e0::1737:7960" + ], "DstPorts": [ { "IP": "100.110.121.96", @@ -150,7 +125,10 @@ "user-mon": { "packet_filter_rules": [ { - "SrcIPs": ["100.103.90.82", "fd7a:115c:a1e0::9e37:5a52"], + "SrcIPs": [ + "100.103.90.82", + "fd7a:115c:a1e0::9e37:5a52" + ], "DstPorts": [ { "IP": "100.103.90.82", @@ -173,7 +151,10 @@ "user1": { "packet_filter_rules": [ { - "SrcIPs": ["100.90.199.68", "fd7a:115c:a1e0::2d01:c747"], + "SrcIPs": [ + "100.90.199.68", + "fd7a:115c:a1e0::2d01:c747" + ], "DstPorts": [ { "IP": "100.90.199.68", diff --git a/hscontrol/policy/v2/testdata/acl_results/ACL-E01.hujson b/hscontrol/policy/v2/testdata/acl_results/ACL-E01.hujson index c7cd63846..535d8bebd 100644 --- a/hscontrol/policy/v2/testdata/acl_results/ACL-E01.hujson +++ b/hscontrol/policy/v2/testdata/acl_results/ACL-E01.hujson @@ -5,23 +5,37 @@ // Expected: Rules on 8 of 8 nodes { "test_id": "ACL-E01", - "timestamp": "2026-03-17T14:26:50Z", - "propagation_wait_seconds": 10, "input": { - "policy_file": "acl_policies/acl_e01.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -31,81 +45,37 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "acls": [ { "action": "accept", - "src": ["100.108.74.26"], - "dst": ["*:*"] + "src": [ + "100.108.74.26" + ], + "dst": [ + "*:*" + ] } ] - }, - "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", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] - }, - "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": [ { - "SrcIPs": ["100.108.74.26"], + "SrcIPs": [ + "100.108.74.26" + ], "DstPorts": [ { "IP": "*", @@ -121,7 +91,9 @@ "subnet-router": { "packet_filter_rules": [ { - "SrcIPs": ["100.108.74.26"], + "SrcIPs": [ + "100.108.74.26" + ], "DstPorts": [ { "IP": "*", @@ -137,7 +109,9 @@ "tagged-client": { "packet_filter_rules": [ { - "SrcIPs": ["100.108.74.26"], + "SrcIPs": [ + "100.108.74.26" + ], "DstPorts": [ { "IP": "*", @@ -153,7 +127,9 @@ "tagged-prod": { "packet_filter_rules": [ { - "SrcIPs": ["100.108.74.26"], + "SrcIPs": [ + "100.108.74.26" + ], "DstPorts": [ { "IP": "*", @@ -169,7 +145,9 @@ "tagged-server": { "packet_filter_rules": [ { - "SrcIPs": ["100.108.74.26"], + "SrcIPs": [ + "100.108.74.26" + ], "DstPorts": [ { "IP": "*", @@ -185,7 +163,9 @@ "user-kris": { "packet_filter_rules": [ { - "SrcIPs": ["100.108.74.26"], + "SrcIPs": [ + "100.108.74.26" + ], "DstPorts": [ { "IP": "*", @@ -201,7 +181,9 @@ "user-mon": { "packet_filter_rules": [ { - "SrcIPs": ["100.108.74.26"], + "SrcIPs": [ + "100.108.74.26" + ], "DstPorts": [ { "IP": "*", @@ -217,7 +199,9 @@ "user1": { "packet_filter_rules": [ { - "SrcIPs": ["100.108.74.26"], + "SrcIPs": [ + "100.108.74.26" + ], "DstPorts": [ { "IP": "*", diff --git a/hscontrol/policy/v2/testdata/acl_results/ACL-E02.hujson b/hscontrol/policy/v2/testdata/acl_results/ACL-E02.hujson index 69b238725..96b7b9ff5 100644 --- a/hscontrol/policy/v2/testdata/acl_results/ACL-E02.hujson +++ b/hscontrol/policy/v2/testdata/acl_results/ACL-E02.hujson @@ -5,23 +5,37 @@ // Expected: Rules on 8 of 8 nodes { "test_id": "ACL-E02", - "timestamp": "2026-03-17T14:27:00Z", - "propagation_wait_seconds": 10, "input": { - "policy_file": "acl_policies/acl_e02.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -31,81 +45,38 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "acls": [ { "action": "accept", - "src": ["tag:server"], - "dst": ["*:*"] + "src": [ + "tag:server" + ], + "dst": [ + "*:*" + ] } ] - }, - "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", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] - }, - "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": [ { - "SrcIPs": ["100.108.74.26", "fd7a:115c:a1e0::b901:4a87"], + "SrcIPs": [ + "100.108.74.26", + "fd7a:115c:a1e0::b901:4a87" + ], "DstPorts": [ { "IP": "*", @@ -121,7 +92,10 @@ "subnet-router": { "packet_filter_rules": [ { - "SrcIPs": ["100.108.74.26", "fd7a:115c:a1e0::b901:4a87"], + "SrcIPs": [ + "100.108.74.26", + "fd7a:115c:a1e0::b901:4a87" + ], "DstPorts": [ { "IP": "*", @@ -137,7 +111,10 @@ "tagged-client": { "packet_filter_rules": [ { - "SrcIPs": ["100.108.74.26", "fd7a:115c:a1e0::b901:4a87"], + "SrcIPs": [ + "100.108.74.26", + "fd7a:115c:a1e0::b901:4a87" + ], "DstPorts": [ { "IP": "*", @@ -153,7 +130,10 @@ "tagged-prod": { "packet_filter_rules": [ { - "SrcIPs": ["100.108.74.26", "fd7a:115c:a1e0::b901:4a87"], + "SrcIPs": [ + "100.108.74.26", + "fd7a:115c:a1e0::b901:4a87" + ], "DstPorts": [ { "IP": "*", @@ -169,7 +149,10 @@ "tagged-server": { "packet_filter_rules": [ { - "SrcIPs": ["100.108.74.26", "fd7a:115c:a1e0::b901:4a87"], + "SrcIPs": [ + "100.108.74.26", + "fd7a:115c:a1e0::b901:4a87" + ], "DstPorts": [ { "IP": "*", @@ -185,7 +168,10 @@ "user-kris": { "packet_filter_rules": [ { - "SrcIPs": ["100.108.74.26", "fd7a:115c:a1e0::b901:4a87"], + "SrcIPs": [ + "100.108.74.26", + "fd7a:115c:a1e0::b901:4a87" + ], "DstPorts": [ { "IP": "*", @@ -201,7 +187,10 @@ "user-mon": { "packet_filter_rules": [ { - "SrcIPs": ["100.108.74.26", "fd7a:115c:a1e0::b901:4a87"], + "SrcIPs": [ + "100.108.74.26", + "fd7a:115c:a1e0::b901:4a87" + ], "DstPorts": [ { "IP": "*", @@ -217,7 +206,10 @@ "user1": { "packet_filter_rules": [ { - "SrcIPs": ["100.108.74.26", "fd7a:115c:a1e0::b901:4a87"], + "SrcIPs": [ + "100.108.74.26", + "fd7a:115c:a1e0::b901:4a87" + ], "DstPorts": [ { "IP": "*", diff --git a/hscontrol/policy/v2/testdata/acl_results/ACL-E03.hujson b/hscontrol/policy/v2/testdata/acl_results/ACL-E03.hujson index e771f0a33..0e546ffbb 100644 --- a/hscontrol/policy/v2/testdata/acl_results/ACL-E03.hujson +++ b/hscontrol/policy/v2/testdata/acl_results/ACL-E03.hujson @@ -5,23 +5,37 @@ // Expected: Rules on 8 of 8 nodes { "test_id": "ACL-E03", - "timestamp": "2026-03-17T14:27:11Z", - "propagation_wait_seconds": 10, "input": { - "policy_file": "acl_policies/acl_e03.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -31,81 +45,37 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "acls": [ { "action": "accept", - "src": ["webserver"], - "dst": ["*:*"] + "src": [ + "webserver" + ], + "dst": [ + "*:*" + ] } ] - }, - "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", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] - }, - "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": [ { - "SrcIPs": ["100.108.74.26"], + "SrcIPs": [ + "100.108.74.26" + ], "DstPorts": [ { "IP": "*", @@ -121,7 +91,9 @@ "subnet-router": { "packet_filter_rules": [ { - "SrcIPs": ["100.108.74.26"], + "SrcIPs": [ + "100.108.74.26" + ], "DstPorts": [ { "IP": "*", @@ -137,7 +109,9 @@ "tagged-client": { "packet_filter_rules": [ { - "SrcIPs": ["100.108.74.26"], + "SrcIPs": [ + "100.108.74.26" + ], "DstPorts": [ { "IP": "*", @@ -153,7 +127,9 @@ "tagged-prod": { "packet_filter_rules": [ { - "SrcIPs": ["100.108.74.26"], + "SrcIPs": [ + "100.108.74.26" + ], "DstPorts": [ { "IP": "*", @@ -169,7 +145,9 @@ "tagged-server": { "packet_filter_rules": [ { - "SrcIPs": ["100.108.74.26"], + "SrcIPs": [ + "100.108.74.26" + ], "DstPorts": [ { "IP": "*", @@ -185,7 +163,9 @@ "user-kris": { "packet_filter_rules": [ { - "SrcIPs": ["100.108.74.26"], + "SrcIPs": [ + "100.108.74.26" + ], "DstPorts": [ { "IP": "*", @@ -201,7 +181,9 @@ "user-mon": { "packet_filter_rules": [ { - "SrcIPs": ["100.108.74.26"], + "SrcIPs": [ + "100.108.74.26" + ], "DstPorts": [ { "IP": "*", @@ -217,7 +199,9 @@ "user1": { "packet_filter_rules": [ { - "SrcIPs": ["100.108.74.26"], + "SrcIPs": [ + "100.108.74.26" + ], "DstPorts": [ { "IP": "*", diff --git a/hscontrol/policy/v2/testdata/acl_results/ACL-E04.hujson b/hscontrol/policy/v2/testdata/acl_results/ACL-E04.hujson index 5aff3a18b..4a7eb388d 100644 --- a/hscontrol/policy/v2/testdata/acl_results/ACL-E04.hujson +++ b/hscontrol/policy/v2/testdata/acl_results/ACL-E04.hujson @@ -5,23 +5,37 @@ // Expected: Rules on tagged-server { "test_id": "ACL-E04", - "timestamp": "2026-03-17T14:27:21Z", - "propagation_wait_seconds": 10, "input": { - "policy_file": "acl_policies/acl_e04.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -31,74 +45,28 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "acls": [ { "action": "accept", - "src": ["*"], - "dst": ["100.108.74.26:22"] + "src": [ + "*" + ], + "dst": [ + "100.108.74.26:22" + ] } ] - }, - "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", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] - }, - "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": { diff --git a/hscontrol/policy/v2/testdata/acl_results/ACL-E05.hujson b/hscontrol/policy/v2/testdata/acl_results/ACL-E05.hujson index bf8b182e5..a7a77be80 100644 --- a/hscontrol/policy/v2/testdata/acl_results/ACL-E05.hujson +++ b/hscontrol/policy/v2/testdata/acl_results/ACL-E05.hujson @@ -5,23 +5,37 @@ // Expected: Rules on tagged-server { "test_id": "ACL-E05", - "timestamp": "2026-03-17T14:27:32Z", - "propagation_wait_seconds": 10, "input": { - "policy_file": "acl_policies/acl_e05.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -31,74 +45,28 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "acls": [ { "action": "accept", - "src": ["*"], - "dst": ["tag:server:22"] + "src": [ + "*" + ], + "dst": [ + "tag:server:22" + ] } ] - }, - "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", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] - }, - "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": { diff --git a/hscontrol/policy/v2/testdata/acl_results/ACL-E06.hujson b/hscontrol/policy/v2/testdata/acl_results/ACL-E06.hujson index 1e3397723..d3f900ce9 100644 --- a/hscontrol/policy/v2/testdata/acl_results/ACL-E06.hujson +++ b/hscontrol/policy/v2/testdata/acl_results/ACL-E06.hujson @@ -5,23 +5,37 @@ // Expected: Rules on tagged-server { "test_id": "ACL-E06", - "timestamp": "2026-03-17T14:27:42Z", - "propagation_wait_seconds": 10, "input": { - "policy_file": "acl_policies/acl_e06.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -31,74 +45,28 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "acls": [ { "action": "accept", - "src": ["*"], - "dst": ["webserver:22"] + "src": [ + "*" + ], + "dst": [ + "webserver:22" + ] } ] - }, - "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", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] - }, - "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": { diff --git a/hscontrol/policy/v2/testdata/acl_results/ACL-E07.hujson b/hscontrol/policy/v2/testdata/acl_results/ACL-E07.hujson index ea54c36ca..dfebb69a0 100644 --- a/hscontrol/policy/v2/testdata/acl_results/ACL-E07.hujson +++ b/hscontrol/policy/v2/testdata/acl_results/ACL-E07.hujson @@ -5,23 +5,37 @@ // Expected: Rules on tagged-server { "test_id": "ACL-E07", - "timestamp": "2026-03-17T14:27:52Z", - "propagation_wait_seconds": 10, "input": { - "policy_file": "acl_policies/acl_e07.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -31,74 +45,28 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "acls": [ { "action": "accept", - "src": ["kratail2tid@passkey"], - "dst": ["tag:server:22"] + "src": [ + "kratail2tid@passkey" + ], + "dst": [ + "tag:server:22" + ] } ] - }, - "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", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] - }, - "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": { @@ -117,7 +85,10 @@ "tagged-server": { "packet_filter_rules": [ { - "SrcIPs": ["100.90.199.68", "fd7a:115c:a1e0::2d01:c747"], + "SrcIPs": [ + "100.90.199.68", + "fd7a:115c:a1e0::2d01:c747" + ], "DstPorts": [ { "IP": "100.108.74.26", diff --git a/hscontrol/policy/v2/testdata/acl_results/ACL-E08.hujson b/hscontrol/policy/v2/testdata/acl_results/ACL-E08.hujson index 3f7b4ee73..9b71ac5f6 100644 --- a/hscontrol/policy/v2/testdata/acl_results/ACL-E08.hujson +++ b/hscontrol/policy/v2/testdata/acl_results/ACL-E08.hujson @@ -5,23 +5,37 @@ // Expected: Rules on tagged-server { "test_id": "ACL-E08", - "timestamp": "2026-03-17T14:28:03Z", - "propagation_wait_seconds": 10, "input": { - "policy_file": "acl_policies/acl_e08.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -31,74 +45,28 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "acls": [ { "action": "accept", - "src": ["group:admins"], - "dst": ["tag:server:22"] + "src": [ + "group:admins" + ], + "dst": [ + "tag:server:22" + ] } ] - }, - "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", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] - }, - "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": { @@ -117,7 +85,10 @@ "tagged-server": { "packet_filter_rules": [ { - "SrcIPs": ["100.90.199.68", "fd7a:115c:a1e0::2d01:c747"], + "SrcIPs": [ + "100.90.199.68", + "fd7a:115c:a1e0::2d01:c747" + ], "DstPorts": [ { "IP": "100.108.74.26", diff --git a/hscontrol/policy/v2/testdata/acl_results/ACL-E09.hujson b/hscontrol/policy/v2/testdata/acl_results/ACL-E09.hujson index adabc8f53..a7b68e017 100644 --- a/hscontrol/policy/v2/testdata/acl_results/ACL-E09.hujson +++ b/hscontrol/policy/v2/testdata/acl_results/ACL-E09.hujson @@ -5,23 +5,37 @@ // Expected: Rules on tagged-server { "test_id": "ACL-E09", - "timestamp": "2026-03-17T14:28:13Z", - "propagation_wait_seconds": 10, "input": { - "policy_file": "acl_policies/acl_e09.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -31,74 +45,29 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "acls": [ { "action": "accept", - "src": ["kratail2tid@passkey", "group:admins"], - "dst": ["tag:server:22"] + "src": [ + "kratail2tid@passkey", + "group:admins" + ], + "dst": [ + "tag:server:22" + ] } ] - }, - "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", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] - }, - "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": { @@ -117,7 +86,10 @@ "tagged-server": { "packet_filter_rules": [ { - "SrcIPs": ["100.90.199.68", "fd7a:115c:a1e0::2d01:c747"], + "SrcIPs": [ + "100.90.199.68", + "fd7a:115c:a1e0::2d01:c747" + ], "DstPorts": [ { "IP": "100.108.74.26", diff --git a/hscontrol/policy/v2/testdata/acl_results/ACL-ERR01.hujson b/hscontrol/policy/v2/testdata/acl_results/ACL-ERR01.hujson index 895c04f9f..8cdf8e896 100644 --- a/hscontrol/policy/v2/testdata/acl_results/ACL-ERR01.hujson +++ b/hscontrol/policy/v2/testdata/acl_results/ACL-ERR01.hujson @@ -5,23 +5,38 @@ // Expected: Error — src=tag not found: "tag:nonexistent" { "test_id": "ACL-ERR01", - "timestamp": "2026-03-17T14:28:24Z", "error": true, "input": { - "policy_file": "acl_policies/acl_err01.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -31,21 +46,31 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "acls": [ { "action": "accept", - "src": ["tag:nonexistent"], - "dst": ["tag:server:22"] + "src": [ + "tag:nonexistent" + ], + "dst": [ + "tag:server:22" + ] } ] }, - "api_endpoint": "https://api.tailscale.com/api/v2/tailnet/kratail2tid%40passkey/acl", - "api_response_code": 400, - "api_response_body": { "message": "src=tag not found: \"tag:nonexistent\"" } + "api_response_body": { + "message": "src=tag not found: \"tag:nonexistent\"" + } } } diff --git a/hscontrol/policy/v2/testdata/acl_results/ACL-ERR02.hujson b/hscontrol/policy/v2/testdata/acl_results/ACL-ERR02.hujson index 1fb9b6d4e..667d6fde1 100644 --- a/hscontrol/policy/v2/testdata/acl_results/ACL-ERR02.hujson +++ b/hscontrol/policy/v2/testdata/acl_results/ACL-ERR02.hujson @@ -5,23 +5,38 @@ // Expected: Error — "autogroup:self" not valid on the src side of a rule { "test_id": "ACL-ERR02", - "timestamp": "2026-03-17T14:28:24Z", "error": true, "input": { - "policy_file": "acl_policies/acl_err02.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -31,21 +46,31 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "acls": [ { "action": "accept", - "src": ["autogroup:self"], - "dst": ["tag:server:22"] + "src": [ + "autogroup:self" + ], + "dst": [ + "tag:server:22" + ] } ] }, - "api_endpoint": "https://api.tailscale.com/api/v2/tailnet/kratail2tid%40passkey/acl", - "api_response_code": 400, - "api_response_body": { "message": "\"autogroup:self\" not valid on the src side of a rule" } + "api_response_body": { + "message": "\"autogroup:self\" not valid on the src side of a rule" + } } } diff --git a/hscontrol/policy/v2/testdata/acl_results/ACL-ERR03.hujson b/hscontrol/policy/v2/testdata/acl_results/ACL-ERR03.hujson index 3131e0425..ef362ac6d 100644 --- a/hscontrol/policy/v2/testdata/acl_results/ACL-ERR03.hujson +++ b/hscontrol/policy/v2/testdata/acl_results/ACL-ERR03.hujson @@ -5,23 +5,38 @@ // Expected: Error — dst="autogroup:self": port range "self": invalid first integer { "test_id": "ACL-ERR03", - "timestamp": "2026-03-17T14:28:24Z", "error": true, "input": { - "policy_file": "acl_policies/acl_err03.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -31,21 +46,31 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "acls": [ { "action": "accept", - "src": ["*"], - "dst": ["autogroup:self"] + "src": [ + "*" + ], + "dst": [ + "autogroup:self" + ] } ] }, - "api_endpoint": "https://api.tailscale.com/api/v2/tailnet/kratail2tid%40passkey/acl", - "api_response_code": 400, - "api_response_body": { "message": "dst=\"autogroup:self\": port range \"self\": invalid first integer" } + "api_response_body": { + "message": "dst=\"autogroup:self\": port range \"self\": invalid first integer" + } } } diff --git a/hscontrol/policy/v2/testdata/acl_results/ACL-ERR04.hujson b/hscontrol/policy/v2/testdata/acl_results/ACL-ERR04.hujson index cd8d824e4..0e5326c6d 100644 --- a/hscontrol/policy/v2/testdata/acl_results/ACL-ERR04.hujson +++ b/hscontrol/policy/v2/testdata/acl_results/ACL-ERR04.hujson @@ -5,23 +5,38 @@ // Expected: Error — src=tag not found: "tag:nonexistent" { "test_id": "ACL-ERR04", - "timestamp": "2026-03-17T14:28:25Z", "error": true, "input": { - "policy_file": "acl_policies/acl_err04.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -31,21 +46,31 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "acls": [ { "action": "accept", - "src": ["tag:nonexistent"], - "dst": ["*:*"] + "src": [ + "tag:nonexistent" + ], + "dst": [ + "*:*" + ] } ] }, - "api_endpoint": "https://api.tailscale.com/api/v2/tailnet/kratail2tid%40passkey/acl", - "api_response_code": 400, - "api_response_body": { "message": "src=tag not found: \"tag:nonexistent\"" } + "api_response_body": { + "message": "src=tag not found: \"tag:nonexistent\"" + } } } diff --git a/hscontrol/policy/v2/testdata/acl_results/ACL-ERR05.hujson b/hscontrol/policy/v2/testdata/acl_results/ACL-ERR05.hujson index 5a1c892c5..5af0ee25b 100644 --- a/hscontrol/policy/v2/testdata/acl_results/ACL-ERR05.hujson +++ b/hscontrol/policy/v2/testdata/acl_results/ACL-ERR05.hujson @@ -5,23 +5,38 @@ // Expected: Error — dst="tag:nonexistent": tag not found: "tag:nonexistent" { "test_id": "ACL-ERR05", - "timestamp": "2026-03-17T14:28:25Z", "error": true, "input": { - "policy_file": "acl_policies/acl_err05.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -31,21 +46,31 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "acls": [ { "action": "accept", - "src": ["*"], - "dst": ["tag:nonexistent:22"] + "src": [ + "*" + ], + "dst": [ + "tag:nonexistent:22" + ] } ] }, - "api_endpoint": "https://api.tailscale.com/api/v2/tailnet/kratail2tid%40passkey/acl", - "api_response_code": 400, - "api_response_body": { "message": "dst=\"tag:nonexistent\": tag not found: \"tag:nonexistent\"" } + "api_response_body": { + "message": "dst=\"tag:nonexistent\": tag not found: \"tag:nonexistent\"" + } } } diff --git a/hscontrol/policy/v2/testdata/acl_results/ACL-ERR06.hujson b/hscontrol/policy/v2/testdata/acl_results/ACL-ERR06.hujson index 6e410e78d..4a9eda0cf 100644 --- a/hscontrol/policy/v2/testdata/acl_results/ACL-ERR06.hujson +++ b/hscontrol/policy/v2/testdata/acl_results/ACL-ERR06.hujson @@ -5,23 +5,38 @@ // Expected: Error — action="deny" is not supported { "test_id": "ACL-ERR06", - "timestamp": "2026-03-17T14:28:25Z", "error": true, "input": { - "policy_file": "acl_policies/acl_err06.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -31,21 +46,31 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "acls": [ { "action": "deny", - "src": ["tag:client"], - "dst": ["tag:server:22"] + "src": [ + "tag:client" + ], + "dst": [ + "tag:server:22" + ] } ] }, - "api_endpoint": "https://api.tailscale.com/api/v2/tailnet/kratail2tid%40passkey/acl", - "api_response_code": 400, - "api_response_body": { "message": "action=\"deny\" is not supported" } + "api_response_body": { + "message": "action=\"deny\" is not supported" + } } } diff --git a/hscontrol/policy/v2/testdata/acl_results/ACL-ERR07.hujson b/hscontrol/policy/v2/testdata/acl_results/ACL-ERR07.hujson index 7d271710c..eec426e0f 100644 --- a/hscontrol/policy/v2/testdata/acl_results/ACL-ERR07.hujson +++ b/hscontrol/policy/v2/testdata/acl_results/ACL-ERR07.hujson @@ -5,23 +5,38 @@ // Expected: Error — dst="tag:server:ssh": port range "ssh": invalid first integer { "test_id": "ACL-ERR07", - "timestamp": "2026-03-17T14:28:29Z", "error": true, "input": { - "policy_file": "acl_policies/acl_err07.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -31,21 +46,31 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "acls": [ { "action": "accept", - "src": ["*"], - "dst": ["tag:server:ssh"] + "src": [ + "*" + ], + "dst": [ + "tag:server:ssh" + ] } ] }, - "api_endpoint": "https://api.tailscale.com/api/v2/tailnet/kratail2tid%40passkey/acl", - "api_response_code": 400, - "api_response_body": { "message": "dst=\"tag:server:ssh\": port range \"ssh\": invalid first integer" } + "api_response_body": { + "message": "dst=\"tag:server:ssh\": port range \"ssh\": invalid first integer" + } } } diff --git a/hscontrol/policy/v2/testdata/acl_results/ACL-ERR08.hujson b/hscontrol/policy/v2/testdata/acl_results/ACL-ERR08.hujson index f04066933..95a7f51da 100644 --- a/hscontrol/policy/v2/testdata/acl_results/ACL-ERR08.hujson +++ b/hscontrol/policy/v2/testdata/acl_results/ACL-ERR08.hujson @@ -7,23 +7,38 @@ // Expected: Error — autogroup:self can only be used with users, groups, or supported autogroups { "test_id": "ACL-ERR08", - "timestamp": "2026-03-17T14:28:34Z", "error": true, "input": { - "policy_file": "acl_policies/acl_err08.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -33,26 +48,40 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "acls": [ { "action": "accept", - "src": ["*"], - "dst": ["autogroup:self:*"] + "src": [ + "*" + ], + "dst": [ + "autogroup:self:*" + ] }, { "action": "accept", - "src": ["tag:client"], - "dst": ["autogroup:self:22"] + "src": [ + "tag:client" + ], + "dst": [ + "autogroup:self:22" + ] } ] }, - "api_endpoint": "https://api.tailscale.com/api/v2/tailnet/kratail2tid%40passkey/acl", - "api_response_code": 400, - "api_response_body": { "message": "autogroup:self can only be used with users, groups, or supported autogroups" } + "api_response_body": { + "message": "autogroup:self can only be used with users, groups, or supported autogroups" + } } } diff --git a/hscontrol/policy/v2/testdata/acl_results/ACL-ERR09.hujson b/hscontrol/policy/v2/testdata/acl_results/ACL-ERR09.hujson index cbbc0b1b8..4843b638a 100644 --- a/hscontrol/policy/v2/testdata/acl_results/ACL-ERR09.hujson +++ b/hscontrol/policy/v2/testdata/acl_results/ACL-ERR09.hujson @@ -7,23 +7,38 @@ // Expected: Error — autogroup:self can only be used with users, groups, or supported autogroups { "test_id": "ACL-ERR09", - "timestamp": "2026-03-17T14:28:39Z", "error": true, "input": { - "policy_file": "acl_policies/acl_err09.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -33,26 +48,40 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "acls": [ { "action": "accept", - "src": ["*"], - "dst": ["autogroup:self:*"] + "src": [ + "*" + ], + "dst": [ + "autogroup:self:*" + ] }, { "action": "accept", - "src": ["autogroup:tagged"], - "dst": ["autogroup:self:22"] + "src": [ + "autogroup:tagged" + ], + "dst": [ + "autogroup:self:22" + ] } ] }, - "api_endpoint": "https://api.tailscale.com/api/v2/tailnet/kratail2tid%40passkey/acl", - "api_response_code": 400, - "api_response_body": { "message": "autogroup:self can only be used with users, groups, or supported autogroups" } + "api_response_body": { + "message": "autogroup:self can only be used with users, groups, or supported autogroups" + } } } diff --git a/hscontrol/policy/v2/testdata/acl_results/ACL-H01.hujson b/hscontrol/policy/v2/testdata/acl_results/ACL-H01.hujson index 5a7e33910..554fcc35e 100644 --- a/hscontrol/policy/v2/testdata/acl_results/ACL-H01.hujson +++ b/hscontrol/policy/v2/testdata/acl_results/ACL-H01.hujson @@ -5,23 +5,37 @@ // Expected: Rules on tagged-server { "test_id": "ACL-H01", - "timestamp": "2026-03-17T14:28:44Z", - "propagation_wait_seconds": 10, "input": { - "policy_file": "acl_policies/acl_h01.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -31,74 +45,28 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "acls": [ { "action": "accept", - "src": ["*"], - "dst": ["webserver:80"] + "src": [ + "*" + ], + "dst": [ + "webserver:80" + ] } ] - }, - "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", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] - }, - "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": { diff --git a/hscontrol/policy/v2/testdata/acl_results/ACL-H02.hujson b/hscontrol/policy/v2/testdata/acl_results/ACL-H02.hujson index 91ef5e840..1fd430961 100644 --- a/hscontrol/policy/v2/testdata/acl_results/ACL-H02.hujson +++ b/hscontrol/policy/v2/testdata/acl_results/ACL-H02.hujson @@ -5,23 +5,37 @@ // Expected: Rules on 8 of 8 nodes { "test_id": "ACL-H02", - "timestamp": "2026-03-17T14:28:59Z", - "propagation_wait_seconds": 10, "input": { - "policy_file": "acl_policies/acl_h02.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -31,81 +45,37 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "acls": [ { "action": "accept", - "src": ["webserver"], - "dst": ["*:*"] + "src": [ + "webserver" + ], + "dst": [ + "*:*" + ] } ] - }, - "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", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] - }, - "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": [ { - "SrcIPs": ["100.108.74.26"], + "SrcIPs": [ + "100.108.74.26" + ], "DstPorts": [ { "IP": "*", @@ -121,7 +91,9 @@ "subnet-router": { "packet_filter_rules": [ { - "SrcIPs": ["100.108.74.26"], + "SrcIPs": [ + "100.108.74.26" + ], "DstPorts": [ { "IP": "*", @@ -137,7 +109,9 @@ "tagged-client": { "packet_filter_rules": [ { - "SrcIPs": ["100.108.74.26"], + "SrcIPs": [ + "100.108.74.26" + ], "DstPorts": [ { "IP": "*", @@ -153,7 +127,9 @@ "tagged-prod": { "packet_filter_rules": [ { - "SrcIPs": ["100.108.74.26"], + "SrcIPs": [ + "100.108.74.26" + ], "DstPorts": [ { "IP": "*", @@ -169,7 +145,9 @@ "tagged-server": { "packet_filter_rules": [ { - "SrcIPs": ["100.108.74.26"], + "SrcIPs": [ + "100.108.74.26" + ], "DstPorts": [ { "IP": "*", @@ -185,7 +163,9 @@ "user-kris": { "packet_filter_rules": [ { - "SrcIPs": ["100.108.74.26"], + "SrcIPs": [ + "100.108.74.26" + ], "DstPorts": [ { "IP": "*", @@ -201,7 +181,9 @@ "user-mon": { "packet_filter_rules": [ { - "SrcIPs": ["100.108.74.26"], + "SrcIPs": [ + "100.108.74.26" + ], "DstPorts": [ { "IP": "*", @@ -217,7 +199,9 @@ "user1": { "packet_filter_rules": [ { - "SrcIPs": ["100.108.74.26"], + "SrcIPs": [ + "100.108.74.26" + ], "DstPorts": [ { "IP": "*", diff --git a/hscontrol/policy/v2/testdata/acl_results/ACL-H03.hujson b/hscontrol/policy/v2/testdata/acl_results/ACL-H03.hujson index 9f6c2cdfc..309b98eb2 100644 --- a/hscontrol/policy/v2/testdata/acl_results/ACL-H03.hujson +++ b/hscontrol/policy/v2/testdata/acl_results/ACL-H03.hujson @@ -5,23 +5,37 @@ // Expected: Rules on tagged-server { "test_id": "ACL-H03", - "timestamp": "2026-03-17T14:29:10Z", - "propagation_wait_seconds": 10, "input": { - "policy_file": "acl_policies/acl_h03.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -31,74 +45,28 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "acls": [ { "action": "accept", - "src": ["internal"], - "dst": ["tag:server:22"] + "src": [ + "internal" + ], + "dst": [ + "tag:server:22" + ] } ] - }, - "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", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] - }, - "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": { @@ -117,7 +85,9 @@ "tagged-server": { "packet_filter_rules": [ { - "SrcIPs": ["10.0.0.0/8"], + "SrcIPs": [ + "10.0.0.0/8" + ], "DstPorts": [ { "IP": "100.108.74.26", diff --git a/hscontrol/policy/v2/testdata/acl_results/ACL-H04.hujson b/hscontrol/policy/v2/testdata/acl_results/ACL-H04.hujson index 1e3f6278c..7cede609b 100644 --- a/hscontrol/policy/v2/testdata/acl_results/ACL-H04.hujson +++ b/hscontrol/policy/v2/testdata/acl_results/ACL-H04.hujson @@ -5,23 +5,37 @@ // Expected: Rules on subnet-router { "test_id": "ACL-H04", - "timestamp": "2026-03-17T14:29:20Z", - "propagation_wait_seconds": 10, "input": { - "policy_file": "acl_policies/acl_h04.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -31,74 +45,28 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "acls": [ { "action": "accept", - "src": ["*"], - "dst": ["internal:22"] + "src": [ + "*" + ], + "dst": [ + "internal:22" + ] } ] - }, - "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", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] - }, - "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": { diff --git a/hscontrol/policy/v2/testdata/acl_results/ACL-H05.hujson b/hscontrol/policy/v2/testdata/acl_results/ACL-H05.hujson index 862bbff10..537ebaaf7 100644 --- a/hscontrol/policy/v2/testdata/acl_results/ACL-H05.hujson +++ b/hscontrol/policy/v2/testdata/acl_results/ACL-H05.hujson @@ -5,23 +5,37 @@ // Expected: Rules on tagged-prod, tagged-server { "test_id": "ACL-H05", - "timestamp": "2026-03-17T14:29:31Z", - "propagation_wait_seconds": 10, "input": { - "policy_file": "acl_policies/acl_h05.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -31,74 +45,29 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "acls": [ { "action": "accept", - "src": ["*"], - "dst": ["webserver:22", "prodbox:5432"] + "src": [ + "*" + ], + "dst": [ + "webserver:22", + "prodbox: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", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] - }, - "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": { diff --git a/hscontrol/policy/v2/testdata/acl_results/ACL-H06.hujson b/hscontrol/policy/v2/testdata/acl_results/ACL-H06.hujson index fb82cf07a..b62d98efb 100644 --- a/hscontrol/policy/v2/testdata/acl_results/ACL-H06.hujson +++ b/hscontrol/policy/v2/testdata/acl_results/ACL-H06.hujson @@ -5,23 +5,37 @@ // Expected: Rules on tagged-server { "test_id": "ACL-H06", - "timestamp": "2026-03-17T14:29:41Z", - "propagation_wait_seconds": 10, "input": { - "policy_file": "acl_policies/acl_h06.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -31,74 +45,29 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "acls": [ { "action": "accept", - "src": ["webserver", "tag:client"], - "dst": ["tag:server:22"] + "src": [ + "webserver", + "tag:client" + ], + "dst": [ + "tag:server:22" + ] } ] - }, - "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", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] - }, - "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": { @@ -117,7 +86,11 @@ "tagged-server": { "packet_filter_rules": [ { - "SrcIPs": ["100.108.74.26", "100.83.200.69", "fd7a:115c:a1e0::c537:c845"], + "SrcIPs": [ + "100.108.74.26", + "100.83.200.69", + "fd7a:115c:a1e0::c537:c845" + ], "DstPorts": [ { "IP": "100.108.74.26", diff --git a/hscontrol/policy/v2/testdata/acl_results/ACL-H07.hujson b/hscontrol/policy/v2/testdata/acl_results/ACL-H07.hujson index eefabf1ca..123bbc34c 100644 --- a/hscontrol/policy/v2/testdata/acl_results/ACL-H07.hujson +++ b/hscontrol/policy/v2/testdata/acl_results/ACL-H07.hujson @@ -5,23 +5,37 @@ // Expected: Rules on tagged-server { "test_id": "ACL-H07", - "timestamp": "2026-03-17T14:29:52Z", - "propagation_wait_seconds": 10, "input": { - "policy_file": "acl_policies/acl_h07.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -31,74 +45,28 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "acls": [ { "action": "accept", - "src": ["group:admins"], - "dst": ["webserver:22"] + "src": [ + "group:admins" + ], + "dst": [ + "webserver:22" + ] } ] - }, - "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", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] - }, - "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": { @@ -117,7 +85,10 @@ "tagged-server": { "packet_filter_rules": [ { - "SrcIPs": ["100.90.199.68", "fd7a:115c:a1e0::2d01:c747"], + "SrcIPs": [ + "100.90.199.68", + "fd7a:115c:a1e0::2d01:c747" + ], "DstPorts": [ { "IP": "100.108.74.26", diff --git a/hscontrol/policy/v2/testdata/acl_results/ACL-H08.hujson b/hscontrol/policy/v2/testdata/acl_results/ACL-H08.hujson index 25b86b41b..4e5f67140 100644 --- a/hscontrol/policy/v2/testdata/acl_results/ACL-H08.hujson +++ b/hscontrol/policy/v2/testdata/acl_results/ACL-H08.hujson @@ -5,23 +5,37 @@ // Expected: No filter rules { "test_id": "ACL-H08", - "timestamp": "2026-03-17T14:30:02Z", - "propagation_wait_seconds": 10, "input": { - "policy_file": "acl_policies/acl_h08.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -31,74 +45,28 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "acls": [ { "action": "accept", - "src": ["*"], - "dst": ["subnet24:80"] + "src": [ + "*" + ], + "dst": [ + "subnet24:80" + ] } ] - }, - "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", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] - }, - "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": { diff --git a/hscontrol/policy/v2/testdata/acl_results/ACL-K01.hujson b/hscontrol/policy/v2/testdata/acl_results/ACL-K01.hujson index 3302edd26..d70f5cf69 100644 --- a/hscontrol/policy/v2/testdata/acl_results/ACL-K01.hujson +++ b/hscontrol/policy/v2/testdata/acl_results/ACL-K01.hujson @@ -5,23 +5,37 @@ // Expected: Rules on tagged-server { "test_id": "ACL-K01", - "timestamp": "2026-03-17T14:30:13Z", - "propagation_wait_seconds": 10, "input": { - "policy_file": "acl_policies/acl_k01.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -31,9 +45,15 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "acls": [ @@ -48,65 +68,11 @@ "webserver", "100.90.199.68" ], - "dst": ["tag:server:22"] + "dst": [ + "tag:server:22" + ] } ] - }, - "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", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] - }, - "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": { diff --git a/hscontrol/policy/v2/testdata/acl_results/ACL-K02.hujson b/hscontrol/policy/v2/testdata/acl_results/ACL-K02.hujson index 589f94db6..4e5c18d7e 100644 --- a/hscontrol/policy/v2/testdata/acl_results/ACL-K02.hujson +++ b/hscontrol/policy/v2/testdata/acl_results/ACL-K02.hujson @@ -5,23 +5,37 @@ // Expected: Rules on tagged-prod, tagged-server, user1 { "test_id": "ACL-K02", - "timestamp": "2026-03-17T14:30:23Z", - "propagation_wait_seconds": 10, "input": { - "policy_file": "acl_policies/acl_k02.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -31,15 +45,23 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "acls": [ { "action": "accept", - "src": ["tag:client"], + "src": [ + "tag:client" + ], "dst": [ "tag:server:22", "tag:prod:5432", @@ -51,62 +73,6 @@ ] } ] - }, - "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", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] - }, - "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": { @@ -122,7 +88,10 @@ "tagged-prod": { "packet_filter_rules": [ { - "SrcIPs": ["100.83.200.69", "fd7a:115c:a1e0::c537:c845"], + "SrcIPs": [ + "100.83.200.69", + "fd7a:115c:a1e0::c537:c845" + ], "DstPorts": [ { "IP": "100.103.8.15", @@ -152,7 +121,10 @@ "tagged-server": { "packet_filter_rules": [ { - "SrcIPs": ["100.83.200.69", "fd7a:115c:a1e0::c537:c845"], + "SrcIPs": [ + "100.83.200.69", + "fd7a:115c:a1e0::c537:c845" + ], "DstPorts": [ { "IP": "100.108.74.26", @@ -195,7 +167,10 @@ "user1": { "packet_filter_rules": [ { - "SrcIPs": ["100.83.200.69", "fd7a:115c:a1e0::c537:c845"], + "SrcIPs": [ + "100.83.200.69", + "fd7a:115c:a1e0::c537:c845" + ], "DstPorts": [ { "IP": "100.90.199.68", diff --git a/hscontrol/policy/v2/testdata/acl_results/ACL-K03.hujson b/hscontrol/policy/v2/testdata/acl_results/ACL-K03.hujson index 5e9488605..3c8727b03 100644 --- a/hscontrol/policy/v2/testdata/acl_results/ACL-K03.hujson +++ b/hscontrol/policy/v2/testdata/acl_results/ACL-K03.hujson @@ -5,23 +5,37 @@ // Expected: Rules on 8 of 8 nodes { "test_id": "ACL-K03", - "timestamp": "2026-03-17T14:30:34Z", - "propagation_wait_seconds": 10, "input": { - "policy_file": "acl_policies/acl_k03.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -31,9 +45,15 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "acls": [ @@ -51,65 +71,11 @@ "webserver", "prodbox" ], - "dst": ["*:*"] + "dst": [ + "*:*" + ] } ] - }, - "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", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] - }, - "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": { diff --git a/hscontrol/policy/v2/testdata/acl_results/ACL-K04.hujson b/hscontrol/policy/v2/testdata/acl_results/ACL-K04.hujson index 5cfa27552..f318689f4 100644 --- a/hscontrol/policy/v2/testdata/acl_results/ACL-K04.hujson +++ b/hscontrol/policy/v2/testdata/acl_results/ACL-K04.hujson @@ -5,23 +5,37 @@ // Expected: Rules on tagged-client, tagged-prod, tagged-server { "test_id": "ACL-K04", - "timestamp": "2026-03-17T14:30:44Z", - "propagation_wait_seconds": 10, "input": { - "policy_file": "acl_policies/acl_k04.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -31,15 +45,23 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "acls": [ { "action": "accept", - "src": ["*"], + "src": [ + "*" + ], "dst": [ "tag:server:22", "tag:server:80", @@ -53,62 +75,6 @@ ] } ] - }, - "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", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] - }, - "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": { diff --git a/hscontrol/policy/v2/testdata/acl_results/ACL-K05.hujson b/hscontrol/policy/v2/testdata/acl_results/ACL-K05.hujson index fb717a68b..ede4545c9 100644 --- a/hscontrol/policy/v2/testdata/acl_results/ACL-K05.hujson +++ b/hscontrol/policy/v2/testdata/acl_results/ACL-K05.hujson @@ -5,23 +5,37 @@ // Expected: Rules on tagged-server, user1 { "test_id": "ACL-K05", - "timestamp": "2026-03-17T14:30:54Z", - "propagation_wait_seconds": 10, "input": { - "policy_file": "acl_policies/acl_k05.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -31,9 +45,15 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "acls": [ @@ -48,65 +68,15 @@ "100.83.200.69", "100.103.8.15" ], - "dst": ["tag:server:22", "webserver:80", "100.108.74.26:443", "group:admins:8080", "kratail2tid@passkey:9000"] + "dst": [ + "tag:server:22", + "webserver:80", + "100.108.74.26:443", + "group:admins:8080", + "kratail2tid@passkey:9000" + ] } ] - }, - "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", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] - }, - "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": { diff --git a/hscontrol/policy/v2/testdata/acl_results/ACL-M01.hujson b/hscontrol/policy/v2/testdata/acl_results/ACL-M01.hujson index dd4202e26..f2a35a248 100644 --- a/hscontrol/policy/v2/testdata/acl_results/ACL-M01.hujson +++ b/hscontrol/policy/v2/testdata/acl_results/ACL-M01.hujson @@ -5,23 +5,37 @@ // Expected: Rules on tagged-server { "test_id": "ACL-M01", - "timestamp": "2026-03-17T14:31:05Z", - "propagation_wait_seconds": 10, "input": { - "policy_file": "acl_policies/acl_m01.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -31,74 +45,30 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "acls": [ { "action": "accept", - "src": ["kratail2tid@passkey", "tag:client", "group:monitors"], - "dst": ["tag:server:22"] + "src": [ + "kratail2tid@passkey", + "tag:client", + "group:monitors" + ], + "dst": [ + "tag:server:22" + ] } ] - }, - "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", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] - }, - "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": { diff --git a/hscontrol/policy/v2/testdata/acl_results/ACL-M02.hujson b/hscontrol/policy/v2/testdata/acl_results/ACL-M02.hujson index d68b12c37..23e01b526 100644 --- a/hscontrol/policy/v2/testdata/acl_results/ACL-M02.hujson +++ b/hscontrol/policy/v2/testdata/acl_results/ACL-M02.hujson @@ -5,23 +5,37 @@ // Expected: Rules on tagged-server { "test_id": "ACL-M02", - "timestamp": "2026-03-17T14:31:15Z", - "propagation_wait_seconds": 10, "input": { - "policy_file": "acl_policies/acl_m02.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -31,74 +45,29 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "acls": [ { "action": "accept", - "src": ["100.90.199.68", "tag:client"], - "dst": ["tag:server:22"] + "src": [ + "100.90.199.68", + "tag:client" + ], + "dst": [ + "tag:server:22" + ] } ] - }, - "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", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] - }, - "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": { @@ -117,7 +86,11 @@ "tagged-server": { "packet_filter_rules": [ { - "SrcIPs": ["100.83.200.69", "100.90.199.68", "fd7a:115c:a1e0::c537:c845"], + "SrcIPs": [ + "100.83.200.69", + "100.90.199.68", + "fd7a:115c:a1e0::c537:c845" + ], "DstPorts": [ { "IP": "100.108.74.26", diff --git a/hscontrol/policy/v2/testdata/acl_results/ACL-M03.hujson b/hscontrol/policy/v2/testdata/acl_results/ACL-M03.hujson index 2d6f50ecf..40b2eda93 100644 --- a/hscontrol/policy/v2/testdata/acl_results/ACL-M03.hujson +++ b/hscontrol/policy/v2/testdata/acl_results/ACL-M03.hujson @@ -5,23 +5,37 @@ // Expected: Rules on tagged-prod { "test_id": "ACL-M03", - "timestamp": "2026-03-17T14:31:26Z", - "propagation_wait_seconds": 10, "input": { - "policy_file": "acl_policies/acl_m03.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -31,74 +45,29 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "acls": [ { "action": "accept", - "src": ["webserver", "tag:client"], - "dst": ["tag:prod:5432"] + "src": [ + "webserver", + "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", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] - }, - "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": { @@ -114,7 +83,11 @@ "tagged-prod": { "packet_filter_rules": [ { - "SrcIPs": ["100.108.74.26", "100.83.200.69", "fd7a:115c:a1e0::c537:c845"], + "SrcIPs": [ + "100.108.74.26", + "100.83.200.69", + "fd7a:115c:a1e0::c537:c845" + ], "DstPorts": [ { "IP": "100.103.8.15", diff --git a/hscontrol/policy/v2/testdata/acl_results/ACL-M04.hujson b/hscontrol/policy/v2/testdata/acl_results/ACL-M04.hujson index 4946d0fcc..44f91d4e8 100644 --- a/hscontrol/policy/v2/testdata/acl_results/ACL-M04.hujson +++ b/hscontrol/policy/v2/testdata/acl_results/ACL-M04.hujson @@ -5,23 +5,37 @@ // Expected: Rules on tagged-server { "test_id": "ACL-M04", - "timestamp": "2026-03-17T14:31:36Z", - "propagation_wait_seconds": 10, "input": { - "policy_file": "acl_policies/acl_m04.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -31,74 +45,29 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "acls": [ { "action": "accept", - "src": ["group:admins", "tag:client"], - "dst": ["tag:server:22"] + "src": [ + "group:admins", + "tag:client" + ], + "dst": [ + "tag:server:22" + ] } ] - }, - "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", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] - }, - "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": { @@ -117,7 +86,12 @@ "tagged-server": { "packet_filter_rules": [ { - "SrcIPs": ["100.83.200.69", "100.90.199.68", "fd7a:115c:a1e0::2d01:c747", "fd7a:115c:a1e0::c537:c845"], + "SrcIPs": [ + "100.83.200.69", + "100.90.199.68", + "fd7a:115c:a1e0::2d01:c747", + "fd7a:115c:a1e0::c537:c845" + ], "DstPorts": [ { "IP": "100.108.74.26", diff --git a/hscontrol/policy/v2/testdata/acl_results/ACL-M05.hujson b/hscontrol/policy/v2/testdata/acl_results/ACL-M05.hujson index 50e5c7f65..9af2e0e6e 100644 --- a/hscontrol/policy/v2/testdata/acl_results/ACL-M05.hujson +++ b/hscontrol/policy/v2/testdata/acl_results/ACL-M05.hujson @@ -5,23 +5,37 @@ // Expected: Rules on tagged-server { "test_id": "ACL-M05", - "timestamp": "2026-03-17T14:31:47Z", - "propagation_wait_seconds": 10, "input": { - "policy_file": "acl_policies/acl_m05.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -31,74 +45,29 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "acls": [ { "action": "accept", - "src": ["kratail2tid@passkey", "group:monitors"], - "dst": ["tag:server:22"] + "src": [ + "kratail2tid@passkey", + "group:monitors" + ], + "dst": [ + "tag:server:22" + ] } ] - }, - "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", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] - }, - "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": { @@ -117,7 +86,12 @@ "tagged-server": { "packet_filter_rules": [ { - "SrcIPs": ["100.103.90.82", "100.90.199.68", "fd7a:115c:a1e0::2d01:c747", "fd7a:115c:a1e0::9e37:5a52"], + "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", diff --git a/hscontrol/policy/v2/testdata/acl_results/ACL-M06.hujson b/hscontrol/policy/v2/testdata/acl_results/ACL-M06.hujson index faafbfbb9..e4b5a3aea 100644 --- a/hscontrol/policy/v2/testdata/acl_results/ACL-M06.hujson +++ b/hscontrol/policy/v2/testdata/acl_results/ACL-M06.hujson @@ -5,23 +5,37 @@ // Expected: Rules on tagged-server { "test_id": "ACL-M06", - "timestamp": "2026-03-17T14:31:57Z", - "propagation_wait_seconds": 10, "input": { - "policy_file": "acl_policies/acl_m06.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -31,74 +45,29 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "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"] + "src": [ + "*", + "tag:client" + ], + "dst": [ + "tag:server:22" + ] } ] - }, - "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", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] - }, - "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": { diff --git a/hscontrol/policy/v2/testdata/acl_results/ACL-M07.hujson b/hscontrol/policy/v2/testdata/acl_results/ACL-M07.hujson index cc181df66..dd5605d1e 100644 --- a/hscontrol/policy/v2/testdata/acl_results/ACL-M07.hujson +++ b/hscontrol/policy/v2/testdata/acl_results/ACL-M07.hujson @@ -5,23 +5,37 @@ // Expected: Rules on tagged-server { "test_id": "ACL-M07", - "timestamp": "2026-03-17T14:32:08Z", - "propagation_wait_seconds": 10, "input": { - "policy_file": "acl_policies/acl_m07.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -31,74 +45,29 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "acls": [ { "action": "accept", - "src": ["autogroup:member", "tag:client"], - "dst": ["tag:server:22,80,443"] + "src": [ + "autogroup:member", + "tag:client" + ], + "dst": [ + "tag:server:22,80,443" + ] } ] - }, - "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", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] - }, - "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": { diff --git a/hscontrol/policy/v2/testdata/acl_results/ACL-M08.hujson b/hscontrol/policy/v2/testdata/acl_results/ACL-M08.hujson index fe83ac4a3..c134be373 100644 --- a/hscontrol/policy/v2/testdata/acl_results/ACL-M08.hujson +++ b/hscontrol/policy/v2/testdata/acl_results/ACL-M08.hujson @@ -5,23 +5,37 @@ // Expected: Rules on tagged-server { "test_id": "ACL-M08", - "timestamp": "2026-03-17T14:32:18Z", - "propagation_wait_seconds": 10, "input": { - "policy_file": "acl_policies/acl_m08.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -31,74 +45,29 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "acls": [ { "action": "accept", - "src": ["autogroup:member", "tag:client"], - "dst": ["tag:server:80-443"] + "src": [ + "autogroup:member", + "tag:client" + ], + "dst": [ + "tag:server:80-443" + ] } ] - }, - "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", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] - }, - "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": { diff --git a/hscontrol/policy/v2/testdata/acl_results/ACL-M09.hujson b/hscontrol/policy/v2/testdata/acl_results/ACL-M09.hujson index 3fb50dbdf..25c1a50d9 100644 --- a/hscontrol/policy/v2/testdata/acl_results/ACL-M09.hujson +++ b/hscontrol/policy/v2/testdata/acl_results/ACL-M09.hujson @@ -5,23 +5,37 @@ // Expected: Rules on tagged-server { "test_id": "ACL-M09", - "timestamp": "2026-03-17T14:32:29Z", - "propagation_wait_seconds": 10, "input": { - "policy_file": "acl_policies/acl_m09.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -31,74 +45,29 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "acls": [ { "action": "accept", - "src": ["tag:client", "internal"], - "dst": ["tag:server:22"] + "src": [ + "tag:client", + "internal" + ], + "dst": [ + "tag:server:22" + ] } ] - }, - "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", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] - }, - "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": { @@ -117,7 +86,11 @@ "tagged-server": { "packet_filter_rules": [ { - "SrcIPs": ["10.0.0.0/8", "100.83.200.69", "fd7a:115c:a1e0::c537:c845"], + "SrcIPs": [ + "10.0.0.0/8", + "100.83.200.69", + "fd7a:115c:a1e0::c537:c845" + ], "DstPorts": [ { "IP": "100.108.74.26", diff --git a/hscontrol/policy/v2/testdata/acl_results/ACL-M10.hujson b/hscontrol/policy/v2/testdata/acl_results/ACL-M10.hujson index a71adfe90..39351772f 100644 --- a/hscontrol/policy/v2/testdata/acl_results/ACL-M10.hujson +++ b/hscontrol/policy/v2/testdata/acl_results/ACL-M10.hujson @@ -5,23 +5,37 @@ // Expected: Rules on tagged-server { "test_id": "ACL-M10", - "timestamp": "2026-03-17T14:32:39Z", - "propagation_wait_seconds": 10, "input": { - "policy_file": "acl_policies/acl_m10.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -31,74 +45,29 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "acls": [ { "action": "accept", - "src": ["100.92.142.61", "tag:client"], - "dst": ["tag:server:22"] + "src": [ + "100.92.142.61", + "tag:client" + ], + "dst": [ + "tag:server:22" + ] } ] - }, - "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", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] - }, - "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": { @@ -117,7 +86,11 @@ "tagged-server": { "packet_filter_rules": [ { - "SrcIPs": ["100.83.200.69", "100.92.142.61", "fd7a:115c:a1e0::c537:c845"], + "SrcIPs": [ + "100.83.200.69", + "100.92.142.61", + "fd7a:115c:a1e0::c537:c845" + ], "DstPorts": [ { "IP": "100.108.74.26", diff --git a/hscontrol/policy/v2/testdata/acl_results/ACL-MR01.hujson b/hscontrol/policy/v2/testdata/acl_results/ACL-MR01.hujson index 921a7a3b0..347d0d594 100644 --- a/hscontrol/policy/v2/testdata/acl_results/ACL-MR01.hujson +++ b/hscontrol/policy/v2/testdata/acl_results/ACL-MR01.hujson @@ -7,23 +7,37 @@ // Expected: Rules on tagged-prod, tagged-server { "test_id": "ACL-MR01", - "timestamp": "2026-03-17T14:32:50Z", - "propagation_wait_seconds": 10, "input": { - "policy_file": "acl_policies/acl_mr01.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -33,79 +47,37 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "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"] + "src": [ + "tag:client" + ], + "dst": [ + "tag:server:22" + ] }, { "action": "accept", - "src": ["tag:client"], - "dst": ["tag:prod:5432"] + "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", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] - }, - "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": { @@ -121,7 +93,10 @@ "tagged-prod": { "packet_filter_rules": [ { - "SrcIPs": ["100.83.200.69", "fd7a:115c:a1e0::c537:c845"], + "SrcIPs": [ + "100.83.200.69", + "fd7a:115c:a1e0::c537:c845" + ], "DstPorts": [ { "IP": "100.103.8.15", @@ -144,7 +119,10 @@ "tagged-server": { "packet_filter_rules": [ { - "SrcIPs": ["100.83.200.69", "fd7a:115c:a1e0::c537:c845"], + "SrcIPs": [ + "100.83.200.69", + "fd7a:115c:a1e0::c537:c845" + ], "DstPorts": [ { "IP": "100.108.74.26", diff --git a/hscontrol/policy/v2/testdata/acl_results/ACL-MR02.hujson b/hscontrol/policy/v2/testdata/acl_results/ACL-MR02.hujson index c13adef79..da7e16688 100644 --- a/hscontrol/policy/v2/testdata/acl_results/ACL-MR02.hujson +++ b/hscontrol/policy/v2/testdata/acl_results/ACL-MR02.hujson @@ -7,23 +7,37 @@ // Expected: Rules on tagged-server { "test_id": "ACL-MR02", - "timestamp": "2026-03-17T14:33:00Z", - "propagation_wait_seconds": 10, "input": { - "policy_file": "acl_policies/acl_mr02.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -33,79 +47,37 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "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"] + "src": [ + "tag:client" + ], + "dst": [ + "tag:server:22" + ] }, { "action": "accept", - "src": ["tag:client"], - "dst": ["tag:server:80"] + "src": [ + "tag:client" + ], + "dst": [ + "tag:server:80" + ] } ] - }, - "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", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] - }, - "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": { @@ -124,7 +96,10 @@ "tagged-server": { "packet_filter_rules": [ { - "SrcIPs": ["100.83.200.69", "fd7a:115c:a1e0::c537:c845"], + "SrcIPs": [ + "100.83.200.69", + "fd7a:115c:a1e0::c537:c845" + ], "DstPorts": [ { "IP": "100.108.74.26", diff --git a/hscontrol/policy/v2/testdata/acl_results/ACL-MR03.hujson b/hscontrol/policy/v2/testdata/acl_results/ACL-MR03.hujson index ea7b2cd4f..92370f990 100644 --- a/hscontrol/policy/v2/testdata/acl_results/ACL-MR03.hujson +++ b/hscontrol/policy/v2/testdata/acl_results/ACL-MR03.hujson @@ -7,23 +7,37 @@ // Expected: Rules on tagged-server { "test_id": "ACL-MR03", - "timestamp": "2026-03-17T14:33:10Z", - "propagation_wait_seconds": 10, "input": { - "policy_file": "acl_policies/acl_mr03.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -33,79 +47,37 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "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"] + "src": [ + "tag:client" + ], + "dst": [ + "tag:server:22" + ] }, { "action": "accept", - "src": ["tag:prod"], - "dst": ["tag:server:22"] + "src": [ + "tag:prod" + ], + "dst": [ + "tag:server:22" + ] } ] - }, - "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", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] - }, - "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": { @@ -124,7 +96,10 @@ "tagged-server": { "packet_filter_rules": [ { - "SrcIPs": ["100.83.200.69", "fd7a:115c:a1e0::c537:c845"], + "SrcIPs": [ + "100.83.200.69", + "fd7a:115c:a1e0::c537:c845" + ], "DstPorts": [ { "IP": "100.108.74.26", @@ -143,7 +118,10 @@ ] }, { - "SrcIPs": ["100.103.8.15", "fd7a:115c:a1e0::5b37:80f"], + "SrcIPs": [ + "100.103.8.15", + "fd7a:115c:a1e0::5b37:80f" + ], "DstPorts": [ { "IP": "100.108.74.26", diff --git a/hscontrol/policy/v2/testdata/acl_results/ACL-MR04.hujson b/hscontrol/policy/v2/testdata/acl_results/ACL-MR04.hujson index 17a820dc9..84bae7362 100644 --- a/hscontrol/policy/v2/testdata/acl_results/ACL-MR04.hujson +++ b/hscontrol/policy/v2/testdata/acl_results/ACL-MR04.hujson @@ -7,23 +7,37 @@ // Expected: Rules on tagged-server { "test_id": "ACL-MR04", - "timestamp": "2026-03-17T14:33:21Z", - "propagation_wait_seconds": 10, "input": { - "policy_file": "acl_policies/acl_mr04.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -33,79 +47,37 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "acls": [ { "action": "accept", - "src": ["group:admins"], - "dst": ["tag:server:22"] + "src": [ + "group:admins" + ], + "dst": [ + "tag:server:22" + ] }, { "action": "accept", - "src": ["kratail2tid@passkey"], - "dst": ["tag:server:22"] + "src": [ + "kratail2tid@passkey" + ], + "dst": [ + "tag:server:22" + ] } ] - }, - "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", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] - }, - "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": { @@ -124,7 +96,10 @@ "tagged-server": { "packet_filter_rules": [ { - "SrcIPs": ["100.90.199.68", "fd7a:115c:a1e0::2d01:c747"], + "SrcIPs": [ + "100.90.199.68", + "fd7a:115c:a1e0::2d01:c747" + ], "DstPorts": [ { "IP": "100.108.74.26", diff --git a/hscontrol/policy/v2/testdata/acl_results/ACL-MR05.hujson b/hscontrol/policy/v2/testdata/acl_results/ACL-MR05.hujson index 9bf05a078..76d777767 100644 --- a/hscontrol/policy/v2/testdata/acl_results/ACL-MR05.hujson +++ b/hscontrol/policy/v2/testdata/acl_results/ACL-MR05.hujson @@ -7,23 +7,37 @@ // Expected: Rules on user1 { "test_id": "ACL-MR05", - "timestamp": "2026-03-17T14:33:31Z", - "propagation_wait_seconds": 10, "input": { - "policy_file": "acl_policies/acl_mr05.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -33,79 +47,37 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "acls": [ { "action": "accept", - "src": ["*"], - "dst": ["group:admins:22"] + "src": [ + "*" + ], + "dst": [ + "group:admins:22" + ] }, { "action": "accept", - "src": ["*"], - "dst": ["kratail2tid@passkey:22"] + "src": [ + "*" + ], + "dst": [ + "kratail2tid@passkey:22" + ] } ] - }, - "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", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] - }, - "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": { diff --git a/hscontrol/policy/v2/testdata/acl_results/ACL-MR06.hujson b/hscontrol/policy/v2/testdata/acl_results/ACL-MR06.hujson index 394f336d4..80594dbbd 100644 --- a/hscontrol/policy/v2/testdata/acl_results/ACL-MR06.hujson +++ b/hscontrol/policy/v2/testdata/acl_results/ACL-MR06.hujson @@ -7,23 +7,37 @@ // Expected: Rules on user-kris, user-mon, user1 { "test_id": "ACL-MR06", - "timestamp": "2026-03-17T14:33:42Z", - "propagation_wait_seconds": 10, "input": { - "policy_file": "acl_policies/acl_mr06.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -33,79 +47,37 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "acls": [ { "action": "accept", - "src": ["tag:client"], - "dst": ["autogroup:member:22"] + "src": [ + "tag:client" + ], + "dst": [ + "autogroup:member:22" + ] }, { "action": "accept", - "src": ["tag:client"], - "dst": ["group:admins:22"] + "src": [ + "tag:client" + ], + "dst": [ + "group:admins:22" + ] } ] - }, - "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", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] - }, - "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": { @@ -127,7 +99,10 @@ "user-kris": { "packet_filter_rules": [ { - "SrcIPs": ["100.83.200.69", "fd7a:115c:a1e0::c537:c845"], + "SrcIPs": [ + "100.83.200.69", + "fd7a:115c:a1e0::c537:c845" + ], "DstPorts": [ { "IP": "100.110.121.96", @@ -150,7 +125,10 @@ "user-mon": { "packet_filter_rules": [ { - "SrcIPs": ["100.83.200.69", "fd7a:115c:a1e0::c537:c845"], + "SrcIPs": [ + "100.83.200.69", + "fd7a:115c:a1e0::c537:c845" + ], "DstPorts": [ { "IP": "100.103.90.82", @@ -173,7 +151,10 @@ "user1": { "packet_filter_rules": [ { - "SrcIPs": ["100.83.200.69", "fd7a:115c:a1e0::c537:c845"], + "SrcIPs": [ + "100.83.200.69", + "fd7a:115c:a1e0::c537:c845" + ], "DstPorts": [ { "IP": "100.90.199.68", diff --git a/hscontrol/policy/v2/testdata/acl_results/ACL-MR07.hujson b/hscontrol/policy/v2/testdata/acl_results/ACL-MR07.hujson index c63c8f701..9866bec2a 100644 --- a/hscontrol/policy/v2/testdata/acl_results/ACL-MR07.hujson +++ b/hscontrol/policy/v2/testdata/acl_results/ACL-MR07.hujson @@ -7,23 +7,37 @@ // Expected: Rules on subnet-router, tagged-prod, tagged-server { "test_id": "ACL-MR07", - "timestamp": "2026-03-17T14:33:52Z", - "propagation_wait_seconds": 10, "input": { - "policy_file": "acl_policies/acl_mr07.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -33,79 +47,39 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "acls": [ { "action": "accept", - "src": ["*"], - "dst": ["tag:server:22", "tag:prod:5432"] + "src": [ + "*" + ], + "dst": [ + "tag:server:22", + "tag:prod:5432" + ] }, { "action": "accept", - "src": ["tag:client"], - "dst": ["tag:server:80", "tag:router:443"] + "src": [ + "tag:client" + ], + "dst": [ + "tag:server:80", + "tag:router:443" + ] } ] - }, - "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", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] - }, - "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": { @@ -115,7 +89,10 @@ "subnet-router": { "packet_filter_rules": [ { - "SrcIPs": ["100.83.200.69", "fd7a:115c:a1e0::c537:c845"], + "SrcIPs": [ + "100.83.200.69", + "fd7a:115c:a1e0::c537:c845" + ], "DstPorts": [ { "IP": "100.92.142.61", @@ -193,7 +170,10 @@ ] }, { - "SrcIPs": ["100.83.200.69", "fd7a:115c:a1e0::c537:c845"], + "SrcIPs": [ + "100.83.200.69", + "fd7a:115c:a1e0::c537:c845" + ], "DstPorts": [ { "IP": "100.108.74.26", diff --git a/hscontrol/policy/v2/testdata/acl_results/ACL-MR08.hujson b/hscontrol/policy/v2/testdata/acl_results/ACL-MR08.hujson index 41dd9cb1b..0e0e4d58e 100644 --- a/hscontrol/policy/v2/testdata/acl_results/ACL-MR08.hujson +++ b/hscontrol/policy/v2/testdata/acl_results/ACL-MR08.hujson @@ -8,23 +8,37 @@ // Expected: Rules on tagged-server { "test_id": "ACL-MR08", - "timestamp": "2026-03-17T14:34:03Z", - "propagation_wait_seconds": 10, "input": { - "policy_file": "acl_policies/acl_mr08.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -34,84 +48,46 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "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"] + "src": [ + "tag:client" + ], + "dst": [ + "tag:server:22" + ] }, { "action": "accept", - "src": ["tag:prod"], - "dst": ["tag:server:80"] + "src": [ + "tag:prod" + ], + "dst": [ + "tag:server:80" + ] }, { "action": "accept", - "src": ["tag:router"], - "dst": ["tag:server:443"] + "src": [ + "tag:router" + ], + "dst": [ + "tag:server:443" + ] } ] - }, - "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", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] - }, - "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": { @@ -130,7 +106,10 @@ "tagged-server": { "packet_filter_rules": [ { - "SrcIPs": ["100.83.200.69", "fd7a:115c:a1e0::c537:c845"], + "SrcIPs": [ + "100.83.200.69", + "fd7a:115c:a1e0::c537:c845" + ], "DstPorts": [ { "IP": "100.108.74.26", @@ -149,7 +128,10 @@ ] }, { - "SrcIPs": ["100.103.8.15", "fd7a:115c:a1e0::5b37:80f"], + "SrcIPs": [ + "100.103.8.15", + "fd7a:115c:a1e0::5b37:80f" + ], "DstPorts": [ { "IP": "100.108.74.26", @@ -168,7 +150,10 @@ ] }, { - "SrcIPs": ["100.92.142.61", "fd7a:115c:a1e0::3e37:8e3d"], + "SrcIPs": [ + "100.92.142.61", + "fd7a:115c:a1e0::3e37:8e3d" + ], "DstPorts": [ { "IP": "100.108.74.26", diff --git a/hscontrol/policy/v2/testdata/acl_results/ACL-MR09.hujson b/hscontrol/policy/v2/testdata/acl_results/ACL-MR09.hujson index 5dfce887b..b051fb105 100644 --- a/hscontrol/policy/v2/testdata/acl_results/ACL-MR09.hujson +++ b/hscontrol/policy/v2/testdata/acl_results/ACL-MR09.hujson @@ -8,23 +8,37 @@ // Expected: Rules on tagged-server { "test_id": "ACL-MR09", - "timestamp": "2026-03-17T14:34:13Z", - "propagation_wait_seconds": 10, "input": { - "policy_file": "acl_policies/acl_mr09.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -34,84 +48,46 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "acls": [ { "action": "accept", - "src": ["autogroup:member"], - "dst": ["tag:server:22"] + "src": [ + "autogroup:member" + ], + "dst": [ + "tag:server:22" + ] }, { "action": "accept", - "src": ["group:admins"], - "dst": ["tag:server:22"] + "src": [ + "group:admins" + ], + "dst": [ + "tag:server:22" + ] }, { "action": "accept", - "src": ["kratail2tid@passkey"], - "dst": ["tag:server:22"] + "src": [ + "kratail2tid@passkey" + ], + "dst": [ + "tag:server:22" + ] } ] - }, - "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", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] - }, - "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": { @@ -156,7 +132,10 @@ ] }, { - "SrcIPs": ["100.90.199.68", "fd7a:115c:a1e0::2d01:c747"], + "SrcIPs": [ + "100.90.199.68", + "fd7a:115c:a1e0::2d01:c747" + ], "DstPorts": [ { "IP": "100.108.74.26", diff --git a/hscontrol/policy/v2/testdata/acl_results/ACL-MR10.hujson b/hscontrol/policy/v2/testdata/acl_results/ACL-MR10.hujson index 86a8d541c..0f652aeb2 100644 --- a/hscontrol/policy/v2/testdata/acl_results/ACL-MR10.hujson +++ b/hscontrol/policy/v2/testdata/acl_results/ACL-MR10.hujson @@ -8,23 +8,37 @@ // Expected: Rules on subnet-router, tagged-prod, tagged-server { "test_id": "ACL-MR10", - "timestamp": "2026-03-17T14:34:23Z", - "propagation_wait_seconds": 10, "input": { - "policy_file": "acl_policies/acl_mr10.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -34,84 +48,46 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "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"] + "src": [ + "tag:client" + ], + "dst": [ + "tag:server:22" + ] }, { "action": "accept", - "src": ["tag:client"], - "dst": ["tag:prod:22"] + "src": [ + "tag:client" + ], + "dst": [ + "tag:prod:22" + ] }, { "action": "accept", - "src": ["tag:client"], - "dst": ["tag:router:22"] + "src": [ + "tag:client" + ], + "dst": [ + "tag:router:22" + ] } ] - }, - "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", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] - }, - "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": { @@ -121,7 +97,10 @@ "subnet-router": { "packet_filter_rules": [ { - "SrcIPs": ["100.83.200.69", "fd7a:115c:a1e0::c537:c845"], + "SrcIPs": [ + "100.83.200.69", + "fd7a:115c:a1e0::c537:c845" + ], "DstPorts": [ { "IP": "100.92.142.61", @@ -147,7 +126,10 @@ "tagged-prod": { "packet_filter_rules": [ { - "SrcIPs": ["100.83.200.69", "fd7a:115c:a1e0::c537:c845"], + "SrcIPs": [ + "100.83.200.69", + "fd7a:115c:a1e0::c537:c845" + ], "DstPorts": [ { "IP": "100.103.8.15", @@ -170,7 +152,10 @@ "tagged-server": { "packet_filter_rules": [ { - "SrcIPs": ["100.83.200.69", "fd7a:115c:a1e0::c537:c845"], + "SrcIPs": [ + "100.83.200.69", + "fd7a:115c:a1e0::c537:c845" + ], "DstPorts": [ { "IP": "100.108.74.26", diff --git a/hscontrol/policy/v2/testdata/acl_results/ACL-MR11.hujson b/hscontrol/policy/v2/testdata/acl_results/ACL-MR11.hujson index 78e2db711..e9714b01e 100644 --- a/hscontrol/policy/v2/testdata/acl_results/ACL-MR11.hujson +++ b/hscontrol/policy/v2/testdata/acl_results/ACL-MR11.hujson @@ -7,23 +7,37 @@ // Expected: Rules on user-kris, user-mon, user1 { "test_id": "ACL-MR11", - "timestamp": "2026-03-17T14:34:34Z", - "propagation_wait_seconds": 10, "input": { - "policy_file": "acl_policies/acl_mr11.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -33,79 +47,37 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "acls": [ { "action": "accept", - "src": ["autogroup:member"], - "dst": ["autogroup:member:22"] + "src": [ + "autogroup:member" + ], + "dst": [ + "autogroup:member:22" + ] }, { "action": "accept", - "src": ["group:admins"], - "dst": ["group:admins:22"] + "src": [ + "group:admins" + ], + "dst": [ + "group:admins:22" + ] } ] - }, - "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", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] - }, - "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": { @@ -213,7 +185,10 @@ ] }, { - "SrcIPs": ["100.90.199.68", "fd7a:115c:a1e0::2d01:c747"], + "SrcIPs": [ + "100.90.199.68", + "fd7a:115c:a1e0::2d01:c747" + ], "DstPorts": [ { "IP": "100.90.199.68", diff --git a/hscontrol/policy/v2/testdata/acl_results/ACL-MR12.hujson b/hscontrol/policy/v2/testdata/acl_results/ACL-MR12.hujson index 087ed2fb1..5c99f5014 100644 --- a/hscontrol/policy/v2/testdata/acl_results/ACL-MR12.hujson +++ b/hscontrol/policy/v2/testdata/acl_results/ACL-MR12.hujson @@ -7,23 +7,37 @@ // Expected: Rules on user1 { "test_id": "ACL-MR12", - "timestamp": "2026-03-17T14:34:44Z", - "propagation_wait_seconds": 10, "input": { - "policy_file": "acl_policies/acl_mr12.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -33,79 +47,37 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "acls": [ { "action": "accept", - "src": ["kratail2tid@passkey"], - "dst": ["kratail2tid@passkey:22"] + "src": [ + "kratail2tid@passkey" + ], + "dst": [ + "kratail2tid@passkey:22" + ] }, { "action": "accept", - "src": ["group:admins"], - "dst": ["kratail2tid@passkey:80"] + "src": [ + "group:admins" + ], + "dst": [ + "kratail2tid@passkey:80" + ] } ] - }, - "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", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] - }, - "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": { @@ -133,7 +105,10 @@ "user1": { "packet_filter_rules": [ { - "SrcIPs": ["100.90.199.68", "fd7a:115c:a1e0::2d01:c747"], + "SrcIPs": [ + "100.90.199.68", + "fd7a:115c:a1e0::2d01:c747" + ], "DstPorts": [ { "IP": "100.90.199.68", diff --git a/hscontrol/policy/v2/testdata/acl_results/ACL-MR13.hujson b/hscontrol/policy/v2/testdata/acl_results/ACL-MR13.hujson index c451b79fd..08ae7a43d 100644 --- a/hscontrol/policy/v2/testdata/acl_results/ACL-MR13.hujson +++ b/hscontrol/policy/v2/testdata/acl_results/ACL-MR13.hujson @@ -7,23 +7,37 @@ // Expected: Rules on exit-node, subnet-router, tagged-client, tagged-prod, tagged-server { "test_id": "ACL-MR13", - "timestamp": "2026-03-17T14:34:55Z", - "propagation_wait_seconds": 10, "input": { - "policy_file": "acl_policies/acl_mr13.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -33,79 +47,38 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "acls": [ { "action": "accept", - "src": ["autogroup:tagged"], - "dst": ["autogroup:tagged:22"] + "src": [ + "autogroup:tagged" + ], + "dst": [ + "autogroup:tagged:22" + ] }, { "action": "accept", - "src": ["tag:client", "tag:prod"], - "dst": ["autogroup:tagged:80"] + "src": [ + "tag:client", + "tag:prod" + ], + "dst": [ + "autogroup:tagged:80" + ] } ] - }, - "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", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] - }, - "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": { @@ -142,7 +115,12 @@ ] }, { - "SrcIPs": ["100.103.8.15", "100.83.200.69", "fd7a:115c:a1e0::5b37:80f", "fd7a:115c:a1e0::c537:c845"], + "SrcIPs": [ + "100.103.8.15", + "100.83.200.69", + "fd7a:115c:a1e0::5b37:80f", + "fd7a:115c:a1e0::c537:c845" + ], "DstPorts": [ { "IP": "100.85.66.106", @@ -195,7 +173,12 @@ ] }, { - "SrcIPs": ["100.103.8.15", "100.83.200.69", "fd7a:115c:a1e0::5b37:80f", "fd7a:115c:a1e0::c537:c845"], + "SrcIPs": [ + "100.103.8.15", + "100.83.200.69", + "fd7a:115c:a1e0::5b37:80f", + "fd7a:115c:a1e0::c537:c845" + ], "DstPorts": [ { "IP": "100.92.142.61", @@ -248,7 +231,12 @@ ] }, { - "SrcIPs": ["100.103.8.15", "100.83.200.69", "fd7a:115c:a1e0::5b37:80f", "fd7a:115c:a1e0::c537:c845"], + "SrcIPs": [ + "100.103.8.15", + "100.83.200.69", + "fd7a:115c:a1e0::5b37:80f", + "fd7a:115c:a1e0::c537:c845" + ], "DstPorts": [ { "IP": "100.83.200.69", @@ -301,7 +289,12 @@ ] }, { - "SrcIPs": ["100.103.8.15", "100.83.200.69", "fd7a:115c:a1e0::5b37:80f", "fd7a:115c:a1e0::c537:c845"], + "SrcIPs": [ + "100.103.8.15", + "100.83.200.69", + "fd7a:115c:a1e0::5b37:80f", + "fd7a:115c:a1e0::c537:c845" + ], "DstPorts": [ { "IP": "100.103.8.15", @@ -354,7 +347,12 @@ ] }, { - "SrcIPs": ["100.103.8.15", "100.83.200.69", "fd7a:115c:a1e0::5b37:80f", "fd7a:115c:a1e0::c537:c845"], + "SrcIPs": [ + "100.103.8.15", + "100.83.200.69", + "fd7a:115c:a1e0::5b37:80f", + "fd7a:115c:a1e0::c537:c845" + ], "DstPorts": [ { "IP": "100.108.74.26", diff --git a/hscontrol/policy/v2/testdata/acl_results/ACL-MR14.hujson b/hscontrol/policy/v2/testdata/acl_results/ACL-MR14.hujson index a7db2b996..cdfd648f0 100644 --- a/hscontrol/policy/v2/testdata/acl_results/ACL-MR14.hujson +++ b/hscontrol/policy/v2/testdata/acl_results/ACL-MR14.hujson @@ -7,23 +7,37 @@ // Expected: Rules on 8 of 8 nodes { "test_id": "ACL-MR14", - "timestamp": "2026-03-17T14:35:05Z", - "propagation_wait_seconds": 10, "input": { - "policy_file": "acl_policies/acl_mr14.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -33,79 +47,39 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "acls": [ { "action": "accept", - "src": ["autogroup:member", "autogroup:tagged"], - "dst": ["autogroup:member:22", "autogroup:tagged:80"] + "src": [ + "autogroup:member", + "autogroup:tagged" + ], + "dst": [ + "autogroup:member:22", + "autogroup:tagged:80" + ] }, { "action": "accept", - "src": ["*"], - "dst": ["*:443"] + "src": [ + "*" + ], + "dst": [ + "*:443" + ] } ] - }, - "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", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] - }, - "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": { diff --git a/hscontrol/policy/v2/testdata/acl_results/ACL-MR15.hujson b/hscontrol/policy/v2/testdata/acl_results/ACL-MR15.hujson index 7dac19ef9..2d4e4fe20 100644 --- a/hscontrol/policy/v2/testdata/acl_results/ACL-MR15.hujson +++ b/hscontrol/policy/v2/testdata/acl_results/ACL-MR15.hujson @@ -7,23 +7,37 @@ // Expected: Rules on 8 of 8 nodes { "test_id": "ACL-MR15", - "timestamp": "2026-03-17T14:35:16Z", - "propagation_wait_seconds": 10, "input": { - "policy_file": "acl_policies/acl_mr15.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -33,79 +47,37 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "acls": [ { "action": "accept", - "src": ["*"], - "dst": ["*:*"] + "src": [ + "*" + ], + "dst": [ + "*:*" + ] }, { "action": "accept", - "src": ["tag:client"], - "dst": ["tag:server:22"] + "src": [ + "tag:client" + ], + "dst": [ + "tag:server:22" + ] } ] - }, - "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", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] - }, - "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": { @@ -213,7 +185,10 @@ ] }, { - "SrcIPs": ["100.83.200.69", "fd7a:115c:a1e0::c537:c845"], + "SrcIPs": [ + "100.83.200.69", + "fd7a:115c:a1e0::c537:c845" + ], "DstPorts": [ { "IP": "100.108.74.26", diff --git a/hscontrol/policy/v2/testdata/acl_results/ACL-MR16.hujson b/hscontrol/policy/v2/testdata/acl_results/ACL-MR16.hujson index b06bb22af..893cda8be 100644 --- a/hscontrol/policy/v2/testdata/acl_results/ACL-MR16.hujson +++ b/hscontrol/policy/v2/testdata/acl_results/ACL-MR16.hujson @@ -8,23 +8,37 @@ // Expected: Rules on 8 of 8 nodes { "test_id": "ACL-MR16", - "timestamp": "2026-03-17T14:35:26Z", - "propagation_wait_seconds": 10, "input": { - "policy_file": "acl_policies/acl_mr16.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -34,84 +48,46 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "acls": [ { "action": "accept", - "src": ["*"], - "dst": ["tag:server:22"] + "src": [ + "*" + ], + "dst": [ + "tag:server:22" + ] }, { "action": "accept", - "src": ["*"], - "dst": ["tag:prod:5432"] + "src": [ + "*" + ], + "dst": [ + "tag:prod:5432" + ] }, { "action": "accept", - "src": ["*"], - "dst": ["*:80"] + "src": [ + "*" + ], + "dst": [ + "*:80" + ] } ] - }, - "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", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] - }, - "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": { diff --git a/hscontrol/policy/v2/testdata/acl_results/ACL-MR17.hujson b/hscontrol/policy/v2/testdata/acl_results/ACL-MR17.hujson index d9d3c0420..542e76aa3 100644 --- a/hscontrol/policy/v2/testdata/acl_results/ACL-MR17.hujson +++ b/hscontrol/policy/v2/testdata/acl_results/ACL-MR17.hujson @@ -7,23 +7,37 @@ // Expected: Rules on 8 of 8 nodes { "test_id": "ACL-MR17", - "timestamp": "2026-03-17T14:35:37Z", - "propagation_wait_seconds": 10, "input": { - "policy_file": "acl_policies/acl_mr17.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -33,86 +47,47 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "acls": [ { "action": "accept", - "src": ["tag:client"], - "dst": ["*:*"] + "src": [ + "tag:client" + ], + "dst": [ + "*:*" + ] }, { "action": "accept", - "src": ["tag:client"], - "dst": ["tag:server:22"] + "src": [ + "tag:client" + ], + "dst": [ + "tag:server:22" + ] } ] - }, - "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", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] - }, - "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": [ { - "SrcIPs": ["100.83.200.69", "fd7a:115c:a1e0::c537:c845"], + "SrcIPs": [ + "100.83.200.69", + "fd7a:115c:a1e0::c537:c845" + ], "DstPorts": [ { "IP": "*", @@ -128,7 +103,10 @@ "subnet-router": { "packet_filter_rules": [ { - "SrcIPs": ["100.83.200.69", "fd7a:115c:a1e0::c537:c845"], + "SrcIPs": [ + "100.83.200.69", + "fd7a:115c:a1e0::c537:c845" + ], "DstPorts": [ { "IP": "*", @@ -144,7 +122,10 @@ "tagged-client": { "packet_filter_rules": [ { - "SrcIPs": ["100.83.200.69", "fd7a:115c:a1e0::c537:c845"], + "SrcIPs": [ + "100.83.200.69", + "fd7a:115c:a1e0::c537:c845" + ], "DstPorts": [ { "IP": "*", @@ -160,7 +141,10 @@ "tagged-prod": { "packet_filter_rules": [ { - "SrcIPs": ["100.83.200.69", "fd7a:115c:a1e0::c537:c845"], + "SrcIPs": [ + "100.83.200.69", + "fd7a:115c:a1e0::c537:c845" + ], "DstPorts": [ { "IP": "*", @@ -176,7 +160,10 @@ "tagged-server": { "packet_filter_rules": [ { - "SrcIPs": ["100.83.200.69", "fd7a:115c:a1e0::c537:c845"], + "SrcIPs": [ + "100.83.200.69", + "fd7a:115c:a1e0::c537:c845" + ], "DstPorts": [ { "IP": "*", @@ -206,7 +193,10 @@ "user-kris": { "packet_filter_rules": [ { - "SrcIPs": ["100.83.200.69", "fd7a:115c:a1e0::c537:c845"], + "SrcIPs": [ + "100.83.200.69", + "fd7a:115c:a1e0::c537:c845" + ], "DstPorts": [ { "IP": "*", @@ -222,7 +212,10 @@ "user-mon": { "packet_filter_rules": [ { - "SrcIPs": ["100.83.200.69", "fd7a:115c:a1e0::c537:c845"], + "SrcIPs": [ + "100.83.200.69", + "fd7a:115c:a1e0::c537:c845" + ], "DstPorts": [ { "IP": "*", @@ -238,7 +231,10 @@ "user1": { "packet_filter_rules": [ { - "SrcIPs": ["100.83.200.69", "fd7a:115c:a1e0::c537:c845"], + "SrcIPs": [ + "100.83.200.69", + "fd7a:115c:a1e0::c537:c845" + ], "DstPorts": [ { "IP": "*", diff --git a/hscontrol/policy/v2/testdata/acl_results/ACL-MR18.hujson b/hscontrol/policy/v2/testdata/acl_results/ACL-MR18.hujson index c854621ad..63fb17a8f 100644 --- a/hscontrol/policy/v2/testdata/acl_results/ACL-MR18.hujson +++ b/hscontrol/policy/v2/testdata/acl_results/ACL-MR18.hujson @@ -7,23 +7,37 @@ // Expected: Rules on 8 of 8 nodes { "test_id": "ACL-MR18", - "timestamp": "2026-03-17T14:35:47Z", - "propagation_wait_seconds": 10, "input": { - "policy_file": "acl_policies/acl_mr18.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -33,86 +47,50 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "acls": [ { "action": "accept", - "src": ["*"], - "dst": ["tag:server:22", "tag:prod:5432", "tag:client:80"] + "src": [ + "*" + ], + "dst": [ + "tag:server:22", + "tag:prod:5432", + "tag:client:80" + ] }, { "action": "accept", - "src": ["tag:client"], - "dst": ["tag:server:80", "*:443"] + "src": [ + "tag:client" + ], + "dst": [ + "tag:server:80", + "*:443" + ] } ] - }, - "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", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] - }, - "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": [ { - "SrcIPs": ["100.83.200.69", "fd7a:115c:a1e0::c537:c845"], + "SrcIPs": [ + "100.83.200.69", + "fd7a:115c:a1e0::c537:c845" + ], "DstPorts": [ { "IP": "*", @@ -128,7 +106,10 @@ "subnet-router": { "packet_filter_rules": [ { - "SrcIPs": ["100.83.200.69", "fd7a:115c:a1e0::c537:c845"], + "SrcIPs": [ + "100.83.200.69", + "fd7a:115c:a1e0::c537:c845" + ], "DstPorts": [ { "IP": "*", @@ -168,7 +149,10 @@ ] }, { - "SrcIPs": ["100.83.200.69", "fd7a:115c:a1e0::c537:c845"], + "SrcIPs": [ + "100.83.200.69", + "fd7a:115c:a1e0::c537:c845" + ], "DstPorts": [ { "IP": "*", @@ -208,7 +192,10 @@ ] }, { - "SrcIPs": ["100.83.200.69", "fd7a:115c:a1e0::c537:c845"], + "SrcIPs": [ + "100.83.200.69", + "fd7a:115c:a1e0::c537:c845" + ], "DstPorts": [ { "IP": "*", @@ -248,7 +235,10 @@ ] }, { - "SrcIPs": ["100.83.200.69", "fd7a:115c:a1e0::c537:c845"], + "SrcIPs": [ + "100.83.200.69", + "fd7a:115c:a1e0::c537:c845" + ], "DstPorts": [ { "IP": "*", @@ -278,7 +268,10 @@ "user-kris": { "packet_filter_rules": [ { - "SrcIPs": ["100.83.200.69", "fd7a:115c:a1e0::c537:c845"], + "SrcIPs": [ + "100.83.200.69", + "fd7a:115c:a1e0::c537:c845" + ], "DstPorts": [ { "IP": "*", @@ -294,7 +287,10 @@ "user-mon": { "packet_filter_rules": [ { - "SrcIPs": ["100.83.200.69", "fd7a:115c:a1e0::c537:c845"], + "SrcIPs": [ + "100.83.200.69", + "fd7a:115c:a1e0::c537:c845" + ], "DstPorts": [ { "IP": "*", @@ -310,7 +306,10 @@ "user1": { "packet_filter_rules": [ { - "SrcIPs": ["100.83.200.69", "fd7a:115c:a1e0::c537:c845"], + "SrcIPs": [ + "100.83.200.69", + "fd7a:115c:a1e0::c537:c845" + ], "DstPorts": [ { "IP": "*", diff --git a/hscontrol/policy/v2/testdata/acl_results/ACL-MR19.hujson b/hscontrol/policy/v2/testdata/acl_results/ACL-MR19.hujson index de536dda8..3e4a5bb18 100644 --- a/hscontrol/policy/v2/testdata/acl_results/ACL-MR19.hujson +++ b/hscontrol/policy/v2/testdata/acl_results/ACL-MR19.hujson @@ -7,23 +7,37 @@ // Expected: Rules on 8 of 8 nodes { "test_id": "ACL-MR19", - "timestamp": "2026-03-17T14:35:58Z", - "propagation_wait_seconds": 10, "input": { - "policy_file": "acl_policies/acl_mr19.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -33,79 +47,37 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "acls": [ { "action": "accept", - "src": ["autogroup:tagged"], - "dst": ["*:*"] + "src": [ + "autogroup:tagged" + ], + "dst": [ + "*:*" + ] }, { "action": "accept", - "src": ["autogroup:member"], - "dst": ["*:*"] + "src": [ + "autogroup:member" + ], + "dst": [ + "*:*" + ] } ] - }, - "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", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] - }, - "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": { diff --git a/hscontrol/policy/v2/testdata/acl_results/ACL-MR20.hujson b/hscontrol/policy/v2/testdata/acl_results/ACL-MR20.hujson index db9069b7f..feb762a32 100644 --- a/hscontrol/policy/v2/testdata/acl_results/ACL-MR20.hujson +++ b/hscontrol/policy/v2/testdata/acl_results/ACL-MR20.hujson @@ -7,23 +7,37 @@ // Expected: Rules on tagged-server, user1 { "test_id": "ACL-MR20", - "timestamp": "2026-03-17T14:36:08Z", - "propagation_wait_seconds": 10, "input": { - "policy_file": "acl_policies/acl_mr20.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -33,79 +47,41 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "acls": [ { "action": "accept", - "src": ["autogroup:member", "group:admins", "kratail2tid@passkey"], - "dst": ["tag:server:22"] + "src": [ + "autogroup:member", + "group:admins", + "kratail2tid@passkey" + ], + "dst": [ + "tag:server:22" + ] }, { "action": "accept", - "src": ["tag:server", "webserver", "100.108.74.26"], - "dst": ["group:admins:80"] + "src": [ + "tag:server", + "webserver", + "100.108.74.26" + ], + "dst": [ + "group:admins:80" + ] } ] - }, - "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", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] - }, - "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": { @@ -160,7 +136,10 @@ "user1": { "packet_filter_rules": [ { - "SrcIPs": ["100.108.74.26", "fd7a:115c:a1e0::b901:4a87"], + "SrcIPs": [ + "100.108.74.26", + "fd7a:115c:a1e0::b901:4a87" + ], "DstPorts": [ { "IP": "100.90.199.68", diff --git a/hscontrol/policy/v2/testdata/acl_results/ACL-MR21.hujson b/hscontrol/policy/v2/testdata/acl_results/ACL-MR21.hujson index 6fba8ee16..1d6fd681a 100644 --- a/hscontrol/policy/v2/testdata/acl_results/ACL-MR21.hujson +++ b/hscontrol/policy/v2/testdata/acl_results/ACL-MR21.hujson @@ -9,23 +9,37 @@ // Expected: Rules on tagged-client, tagged-prod, tagged-server { "test_id": "ACL-MR21", - "timestamp": "2026-03-17T14:36:18Z", - "propagation_wait_seconds": 10, "input": { - "policy_file": "acl_policies/acl_mr21.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -35,89 +49,55 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "acls": [ { "action": "accept", - "src": ["autogroup:member"], - "dst": ["tag:server:22"] + "src": [ + "autogroup:member" + ], + "dst": [ + "tag:server:22" + ] }, { "action": "accept", - "src": ["autogroup:member"], - "dst": ["tag:prod:5432"] + "src": [ + "autogroup:member" + ], + "dst": [ + "tag:prod:5432" + ] }, { "action": "accept", - "src": ["autogroup:member"], - "dst": ["tag:client:80"] + "src": [ + "autogroup:member" + ], + "dst": [ + "tag:client:80" + ] }, { "action": "accept", - "src": ["autogroup:member"], - "dst": ["webserver:443"] + "src": [ + "autogroup:member" + ], + "dst": [ + "webserver:443" + ] } ] - }, - "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", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] - }, - "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": { diff --git a/hscontrol/policy/v2/testdata/acl_results/ACL-MR22.hujson b/hscontrol/policy/v2/testdata/acl_results/ACL-MR22.hujson index 970ffb7ed..1aca77b15 100644 --- a/hscontrol/policy/v2/testdata/acl_results/ACL-MR22.hujson +++ b/hscontrol/policy/v2/testdata/acl_results/ACL-MR22.hujson @@ -9,23 +9,37 @@ // Expected: Rules on subnet-router, tagged-prod, tagged-server { "test_id": "ACL-MR22", - "timestamp": "2026-03-17T14:36:29Z", - "propagation_wait_seconds": 10, "input": { - "policy_file": "acl_policies/acl_mr22.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -35,94 +49,64 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "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"] + "src": [ + "tag:client" + ], + "dst": [ + "tag:server:22" + ] }, { "action": "accept", - "src": ["tag:client"], - "dst": ["tag:prod:22"] + "src": [ + "tag:client" + ], + "dst": [ + "tag:prod:22" + ] }, { "action": "accept", - "src": ["tag:client"], - "dst": ["tag:router:22"] + "src": [ + "tag:client" + ], + "dst": [ + "tag:router:22" + ] }, { "action": "accept", - "src": ["tag:client"], - "dst": ["webserver:22"] + "src": [ + "tag:client" + ], + "dst": [ + "webserver:22" + ] }, { "action": "accept", - "src": ["tag:client"], - "dst": ["prodbox:22"] + "src": [ + "tag:client" + ], + "dst": [ + "prodbox:22" + ] } ] - }, - "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", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] - }, - "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": { @@ -132,7 +116,10 @@ "subnet-router": { "packet_filter_rules": [ { - "SrcIPs": ["100.83.200.69", "fd7a:115c:a1e0::c537:c845"], + "SrcIPs": [ + "100.83.200.69", + "fd7a:115c:a1e0::c537:c845" + ], "DstPorts": [ { "IP": "100.92.142.61", @@ -158,7 +145,10 @@ "tagged-prod": { "packet_filter_rules": [ { - "SrcIPs": ["100.83.200.69", "fd7a:115c:a1e0::c537:c845"], + "SrcIPs": [ + "100.83.200.69", + "fd7a:115c:a1e0::c537:c845" + ], "DstPorts": [ { "IP": "100.103.8.15", @@ -188,7 +178,10 @@ "tagged-server": { "packet_filter_rules": [ { - "SrcIPs": ["100.83.200.69", "fd7a:115c:a1e0::c537:c845"], + "SrcIPs": [ + "100.83.200.69", + "fd7a:115c:a1e0::c537:c845" + ], "DstPorts": [ { "IP": "100.108.74.26", diff --git a/hscontrol/policy/v2/testdata/acl_results/ACL-MR23.hujson b/hscontrol/policy/v2/testdata/acl_results/ACL-MR23.hujson index 8d2ad9685..707fbcfb5 100644 --- a/hscontrol/policy/v2/testdata/acl_results/ACL-MR23.hujson +++ b/hscontrol/policy/v2/testdata/acl_results/ACL-MR23.hujson @@ -9,23 +9,37 @@ // Expected: Rules on 8 of 8 nodes { "test_id": "ACL-MR23", - "timestamp": "2026-03-17T14:36:39Z", - "propagation_wait_seconds": 10, "input": { - "policy_file": "acl_policies/acl_mr23.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -35,99 +49,73 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "acls": [ { "action": "accept", - "src": ["tag:server"], - "dst": ["tag:server:22"] + "src": [ + "tag:server" + ], + "dst": [ + "tag:server:22" + ] }, { "action": "accept", - "src": ["tag:client"], - "dst": ["tag:client:22"] + "src": [ + "tag:client" + ], + "dst": [ + "tag:client:22" + ] }, { "action": "accept", - "src": ["tag:prod"], - "dst": ["tag:prod:22"] + "src": [ + "tag:prod" + ], + "dst": [ + "tag:prod:22" + ] }, { "action": "accept", - "src": ["tag:router"], - "dst": ["tag:router:22"] + "src": [ + "tag:router" + ], + "dst": [ + "tag:router:22" + ] }, { "action": "accept", - "src": ["autogroup:member"], - "dst": ["*:80"] + "src": [ + "autogroup:member" + ], + "dst": [ + "*:80" + ] }, { "action": "accept", - "src": ["*"], - "dst": ["autogroup:member:443"] + "src": [ + "*" + ], + "dst": [ + "autogroup:member:443" + ] } ] - }, - "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", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] - }, - "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": { @@ -157,7 +145,10 @@ "subnet-router": { "packet_filter_rules": [ { - "SrcIPs": ["100.92.142.61", "fd7a:115c:a1e0::3e37:8e3d"], + "SrcIPs": [ + "100.92.142.61", + "fd7a:115c:a1e0::3e37:8e3d" + ], "DstPorts": [ { "IP": "100.92.142.61", @@ -199,7 +190,10 @@ "tagged-client": { "packet_filter_rules": [ { - "SrcIPs": ["100.83.200.69", "fd7a:115c:a1e0::c537:c845"], + "SrcIPs": [ + "100.83.200.69", + "fd7a:115c:a1e0::c537:c845" + ], "DstPorts": [ { "IP": "100.83.200.69", @@ -241,7 +235,10 @@ "tagged-prod": { "packet_filter_rules": [ { - "SrcIPs": ["100.103.8.15", "fd7a:115c:a1e0::5b37:80f"], + "SrcIPs": [ + "100.103.8.15", + "fd7a:115c:a1e0::5b37:80f" + ], "DstPorts": [ { "IP": "100.103.8.15", @@ -283,7 +280,10 @@ "tagged-server": { "packet_filter_rules": [ { - "SrcIPs": ["100.108.74.26", "fd7a:115c:a1e0::b901:4a87"], + "SrcIPs": [ + "100.108.74.26", + "fd7a:115c:a1e0::b901:4a87" + ], "DstPorts": [ { "IP": "100.108.74.26", diff --git a/hscontrol/policy/v2/testdata/acl_results/ACL-MU01.hujson b/hscontrol/policy/v2/testdata/acl_results/ACL-MU01.hujson index 83b0b5543..1175ffb1a 100644 --- a/hscontrol/policy/v2/testdata/acl_results/ACL-MU01.hujson +++ b/hscontrol/policy/v2/testdata/acl_results/ACL-MU01.hujson @@ -7,23 +7,37 @@ // Expected: Rules on tagged-server { "test_id": "ACL-MU01", - "timestamp": "2026-03-17T14:36:50Z", - "propagation_wait_seconds": 10, "input": { - "policy_file": "acl_policies/acl_mu01.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -33,79 +47,37 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "acls": [ { "action": "accept", - "src": ["kratail2tid@passkey"], - "dst": ["tag:server:22"] + "src": [ + "kratail2tid@passkey" + ], + "dst": [ + "tag:server:22" + ] }, { "action": "accept", - "src": ["kristoffer@dalby.cc"], - "dst": ["tag:server:80"] + "src": [ + "kristoffer@dalby.cc" + ], + "dst": [ + "tag:server:80" + ] } ] - }, - "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", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] - }, - "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": { @@ -124,7 +96,10 @@ "tagged-server": { "packet_filter_rules": [ { - "SrcIPs": ["100.90.199.68", "fd7a:115c:a1e0::2d01:c747"], + "SrcIPs": [ + "100.90.199.68", + "fd7a:115c:a1e0::2d01:c747" + ], "DstPorts": [ { "IP": "100.108.74.26", @@ -143,7 +118,10 @@ ] }, { - "SrcIPs": ["100.110.121.96", "fd7a:115c:a1e0::1737:7960"], + "SrcIPs": [ + "100.110.121.96", + "fd7a:115c:a1e0::1737:7960" + ], "DstPorts": [ { "IP": "100.108.74.26", diff --git a/hscontrol/policy/v2/testdata/acl_results/ACL-MU02.hujson b/hscontrol/policy/v2/testdata/acl_results/ACL-MU02.hujson index e835b02b3..853482286 100644 --- a/hscontrol/policy/v2/testdata/acl_results/ACL-MU02.hujson +++ b/hscontrol/policy/v2/testdata/acl_results/ACL-MU02.hujson @@ -5,23 +5,37 @@ // Expected: Rules on user-kris, user1 { "test_id": "ACL-MU02", - "timestamp": "2026-03-17T14:37:00Z", - "propagation_wait_seconds": 10, "input": { - "policy_file": "acl_policies/acl_mu02.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -31,74 +45,28 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "acls": [ { "action": "accept", - "src": ["group:developers"], - "dst": ["autogroup:self:*"] + "src": [ + "group:developers" + ], + "dst": [ + "autogroup:self:*" + ] } ] - }, - "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", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] - }, - "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": { @@ -120,7 +88,10 @@ "user-kris": { "packet_filter_rules": [ { - "SrcIPs": ["100.110.121.96", "fd7a:115c:a1e0::1737:7960"], + "SrcIPs": [ + "100.110.121.96", + "fd7a:115c:a1e0::1737:7960" + ], "DstPorts": [ { "IP": "100.110.121.96", @@ -146,7 +117,10 @@ "user1": { "packet_filter_rules": [ { - "SrcIPs": ["100.90.199.68", "fd7a:115c:a1e0::2d01:c747"], + "SrcIPs": [ + "100.90.199.68", + "fd7a:115c:a1e0::2d01:c747" + ], "DstPorts": [ { "IP": "100.90.199.68", diff --git a/hscontrol/policy/v2/testdata/acl_results/ACL-MU03.hujson b/hscontrol/policy/v2/testdata/acl_results/ACL-MU03.hujson index c449727e7..8e8a80007 100644 --- a/hscontrol/policy/v2/testdata/acl_results/ACL-MU03.hujson +++ b/hscontrol/policy/v2/testdata/acl_results/ACL-MU03.hujson @@ -7,23 +7,37 @@ // Expected: Rules on tagged-prod, tagged-server { "test_id": "ACL-MU03", - "timestamp": "2026-03-17T14:37:11Z", - "propagation_wait_seconds": 10, "input": { - "policy_file": "acl_policies/acl_mu03.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -33,79 +47,37 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "acls": [ { "action": "accept", - "src": ["group:developers"], - "dst": ["tag:server:22"] + "src": [ + "group:developers" + ], + "dst": [ + "tag:server:22" + ] }, { "action": "accept", - "src": ["group:monitors"], - "dst": ["tag:prod:5432"] + "src": [ + "group:monitors" + ], + "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", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] - }, - "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": { @@ -121,7 +93,10 @@ "tagged-prod": { "packet_filter_rules": [ { - "SrcIPs": ["100.103.90.82", "fd7a:115c:a1e0::9e37:5a52"], + "SrcIPs": [ + "100.103.90.82", + "fd7a:115c:a1e0::9e37:5a52" + ], "DstPorts": [ { "IP": "100.103.8.15", @@ -144,7 +119,12 @@ "tagged-server": { "packet_filter_rules": [ { - "SrcIPs": ["100.110.121.96", "100.90.199.68", "fd7a:115c:a1e0::1737:7960", "fd7a:115c:a1e0::2d01:c747"], + "SrcIPs": [ + "100.110.121.96", + "100.90.199.68", + "fd7a:115c:a1e0::1737:7960", + "fd7a:115c:a1e0::2d01:c747" + ], "DstPorts": [ { "IP": "100.108.74.26", diff --git a/hscontrol/policy/v2/testdata/acl_results/ACL-MU04.hujson b/hscontrol/policy/v2/testdata/acl_results/ACL-MU04.hujson index d211db52d..0ce5d0bb3 100644 --- a/hscontrol/policy/v2/testdata/acl_results/ACL-MU04.hujson +++ b/hscontrol/policy/v2/testdata/acl_results/ACL-MU04.hujson @@ -7,23 +7,37 @@ // Expected: Rules on user-kris, user-mon, user1 { "test_id": "ACL-MU04", - "timestamp": "2026-03-17T14:37:21Z", - "propagation_wait_seconds": 10, "input": { - "policy_file": "acl_policies/acl_mu04.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -33,79 +47,37 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "acls": [ { "action": "accept", - "src": ["autogroup:member"], - "dst": ["autogroup:self:*"] + "src": [ + "autogroup:member" + ], + "dst": [ + "autogroup:self:*" + ] }, { "action": "accept", - "src": ["autogroup:member"], - "dst": ["autogroup:member:22"] + "src": [ + "autogroup:member" + ], + "dst": [ + "autogroup:member:22" + ] } ] - }, - "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", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] - }, - "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": { @@ -127,7 +99,10 @@ "user-kris": { "packet_filter_rules": [ { - "SrcIPs": ["100.110.121.96", "fd7a:115c:a1e0::1737:7960"], + "SrcIPs": [ + "100.110.121.96", + "fd7a:115c:a1e0::1737:7960" + ], "DstPorts": [ { "IP": "100.110.121.96", @@ -176,7 +151,10 @@ "user-mon": { "packet_filter_rules": [ { - "SrcIPs": ["100.103.90.82", "fd7a:115c:a1e0::9e37:5a52"], + "SrcIPs": [ + "100.103.90.82", + "fd7a:115c:a1e0::9e37:5a52" + ], "DstPorts": [ { "IP": "100.103.90.82", @@ -225,7 +203,10 @@ "user1": { "packet_filter_rules": [ { - "SrcIPs": ["100.90.199.68", "fd7a:115c:a1e0::2d01:c747"], + "SrcIPs": [ + "100.90.199.68", + "fd7a:115c:a1e0::2d01:c747" + ], "DstPorts": [ { "IP": "100.90.199.68", diff --git a/hscontrol/policy/v2/testdata/acl_results/ACL-MU05.hujson b/hscontrol/policy/v2/testdata/acl_results/ACL-MU05.hujson index 706339624..076143e95 100644 --- a/hscontrol/policy/v2/testdata/acl_results/ACL-MU05.hujson +++ b/hscontrol/policy/v2/testdata/acl_results/ACL-MU05.hujson @@ -5,23 +5,37 @@ // Expected: Rules on user1 { "test_id": "ACL-MU05", - "timestamp": "2026-03-17T14:37:32Z", - "propagation_wait_seconds": 10, "input": { - "policy_file": "acl_policies/acl_mu05.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -31,74 +45,28 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "acls": [ { "action": "accept", - "src": ["*"], - "dst": ["kratail2tid@passkey:22"] + "src": [ + "*" + ], + "dst": [ + "kratail2tid@passkey:22" + ] } ] - }, - "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", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] - }, - "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": { diff --git a/hscontrol/policy/v2/testdata/acl_results/ACL-MU06.hujson b/hscontrol/policy/v2/testdata/acl_results/ACL-MU06.hujson index 9c958a0eb..a04f48393 100644 --- a/hscontrol/policy/v2/testdata/acl_results/ACL-MU06.hujson +++ b/hscontrol/policy/v2/testdata/acl_results/ACL-MU06.hujson @@ -5,23 +5,37 @@ // Expected: Rules on user-kris { "test_id": "ACL-MU06", - "timestamp": "2026-03-17T14:37:42Z", - "propagation_wait_seconds": 10, "input": { - "policy_file": "acl_policies/acl_mu06.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -31,74 +45,28 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "acls": [ { "action": "accept", - "src": ["*"], - "dst": ["kristoffer@dalby.cc:*"] + "src": [ + "*" + ], + "dst": [ + "kristoffer@dalby.cc:*" + ] } ] - }, - "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", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] - }, - "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": { diff --git a/hscontrol/policy/v2/testdata/acl_results/ACL-MU07.hujson b/hscontrol/policy/v2/testdata/acl_results/ACL-MU07.hujson index 6648757ef..8e62959f4 100644 --- a/hscontrol/policy/v2/testdata/acl_results/ACL-MU07.hujson +++ b/hscontrol/policy/v2/testdata/acl_results/ACL-MU07.hujson @@ -5,23 +5,37 @@ // Expected: Rules on 8 of 8 nodes { "test_id": "ACL-MU07", - "timestamp": "2026-03-17T14:37:53Z", - "propagation_wait_seconds": 10, "input": { - "policy_file": "acl_policies/acl_mu07.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -31,74 +45,30 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "acls": [ { "action": "accept", - "src": ["kratail2tid@passkey", "kristoffer@dalby.cc", "monitorpasskeykradalby@passkey"], - "dst": ["*:*"] + "src": [ + "kratail2tid@passkey", + "kristoffer@dalby.cc", + "monitorpasskeykradalby@passkey" + ], + "dst": [ + "*:*" + ] } ] - }, - "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", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] - }, - "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": { diff --git a/hscontrol/policy/v2/testdata/acl_results/ACL-MU08.hujson b/hscontrol/policy/v2/testdata/acl_results/ACL-MU08.hujson index cd1e69a6c..937f25444 100644 --- a/hscontrol/policy/v2/testdata/acl_results/ACL-MU08.hujson +++ b/hscontrol/policy/v2/testdata/acl_results/ACL-MU08.hujson @@ -5,23 +5,37 @@ // Expected: Rules on user-kris, user-mon, user1 { "test_id": "ACL-MU08", - "timestamp": "2026-03-17T14:38:03Z", - "propagation_wait_seconds": 10, "input": { - "policy_file": "acl_policies/acl_mu08.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -31,74 +45,30 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "acls": [ { "action": "accept", - "src": ["*"], - "dst": ["kratail2tid@passkey:22", "kristoffer@dalby.cc:22", "monitorpasskeykradalby@passkey:22"] + "src": [ + "*" + ], + "dst": [ + "kratail2tid@passkey:22", + "kristoffer@dalby.cc:22", + "monitorpasskeykradalby@passkey:22" + ] } ] - }, - "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", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] - }, - "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": { diff --git a/hscontrol/policy/v2/testdata/acl_results/ACL-O01.hujson b/hscontrol/policy/v2/testdata/acl_results/ACL-O01.hujson index bf58f0676..f518f483b 100644 --- a/hscontrol/policy/v2/testdata/acl_results/ACL-O01.hujson +++ b/hscontrol/policy/v2/testdata/acl_results/ACL-O01.hujson @@ -5,23 +5,37 @@ // Expected: Rules on tagged-server { "test_id": "ACL-O01", - "timestamp": "2026-03-17T14:38:13Z", - "propagation_wait_seconds": 10, "input": { - "policy_file": "acl_policies/acl_o01.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -31,74 +45,29 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "acls": [ { "action": "accept", - "src": ["tag:client", "tag:prod"], - "dst": ["tag:server:22"] + "src": [ + "tag:client", + "tag:prod" + ], + "dst": [ + "tag:server:22" + ] } ] - }, - "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", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] - }, - "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": { @@ -117,7 +86,12 @@ "tagged-server": { "packet_filter_rules": [ { - "SrcIPs": ["100.103.8.15", "100.83.200.69", "fd7a:115c:a1e0::5b37:80f", "fd7a:115c:a1e0::c537:c845"], + "SrcIPs": [ + "100.103.8.15", + "100.83.200.69", + "fd7a:115c:a1e0::5b37:80f", + "fd7a:115c:a1e0::c537:c845" + ], "DstPorts": [ { "IP": "100.108.74.26", diff --git a/hscontrol/policy/v2/testdata/acl_results/ACL-O02.hujson b/hscontrol/policy/v2/testdata/acl_results/ACL-O02.hujson index bdfd69507..9e1e7be28 100644 --- a/hscontrol/policy/v2/testdata/acl_results/ACL-O02.hujson +++ b/hscontrol/policy/v2/testdata/acl_results/ACL-O02.hujson @@ -5,23 +5,37 @@ // Expected: Rules on tagged-server { "test_id": "ACL-O02", - "timestamp": "2026-03-17T14:38:24Z", - "propagation_wait_seconds": 10, "input": { - "policy_file": "acl_policies/acl_o02.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -31,74 +45,29 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "acls": [ { "action": "accept", - "src": ["tag:prod", "tag:client"], - "dst": ["tag:server:22"] + "src": [ + "tag:prod", + "tag:client" + ], + "dst": [ + "tag:server:22" + ] } ] - }, - "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", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] - }, - "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": { @@ -117,7 +86,12 @@ "tagged-server": { "packet_filter_rules": [ { - "SrcIPs": ["100.103.8.15", "100.83.200.69", "fd7a:115c:a1e0::5b37:80f", "fd7a:115c:a1e0::c537:c845"], + "SrcIPs": [ + "100.103.8.15", + "100.83.200.69", + "fd7a:115c:a1e0::5b37:80f", + "fd7a:115c:a1e0::c537:c845" + ], "DstPorts": [ { "IP": "100.108.74.26", diff --git a/hscontrol/policy/v2/testdata/acl_results/ACL-O03.hujson b/hscontrol/policy/v2/testdata/acl_results/ACL-O03.hujson index 02eea762a..8a83a0ee0 100644 --- a/hscontrol/policy/v2/testdata/acl_results/ACL-O03.hujson +++ b/hscontrol/policy/v2/testdata/acl_results/ACL-O03.hujson @@ -5,23 +5,37 @@ // Expected: Rules on tagged-prod, tagged-server { "test_id": "ACL-O03", - "timestamp": "2026-03-17T14:38:34Z", - "propagation_wait_seconds": 10, "input": { - "policy_file": "acl_policies/acl_o03.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -31,74 +45,29 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "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", "tag:prod:5432"] + "src": [ + "tag:client" + ], + "dst": [ + "tag:server:22", + "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", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] - }, - "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": { @@ -114,7 +83,10 @@ "tagged-prod": { "packet_filter_rules": [ { - "SrcIPs": ["100.83.200.69", "fd7a:115c:a1e0::c537:c845"], + "SrcIPs": [ + "100.83.200.69", + "fd7a:115c:a1e0::c537:c845" + ], "DstPorts": [ { "IP": "100.103.8.15", @@ -137,7 +109,10 @@ "tagged-server": { "packet_filter_rules": [ { - "SrcIPs": ["100.83.200.69", "fd7a:115c:a1e0::c537:c845"], + "SrcIPs": [ + "100.83.200.69", + "fd7a:115c:a1e0::c537:c845" + ], "DstPorts": [ { "IP": "100.108.74.26", diff --git a/hscontrol/policy/v2/testdata/acl_results/ACL-O04.hujson b/hscontrol/policy/v2/testdata/acl_results/ACL-O04.hujson index 5900ad359..7fb960e5d 100644 --- a/hscontrol/policy/v2/testdata/acl_results/ACL-O04.hujson +++ b/hscontrol/policy/v2/testdata/acl_results/ACL-O04.hujson @@ -5,23 +5,37 @@ // Expected: Rules on tagged-prod, tagged-server { "test_id": "ACL-O04", - "timestamp": "2026-03-17T14:38:45Z", - "propagation_wait_seconds": 10, "input": { - "policy_file": "acl_policies/acl_o04.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -31,74 +45,29 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "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:prod:5432", "tag:server:22"] + "src": [ + "tag:client" + ], + "dst": [ + "tag:prod:5432", + "tag:server:22" + ] } ] - }, - "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", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] - }, - "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": { @@ -114,7 +83,10 @@ "tagged-prod": { "packet_filter_rules": [ { - "SrcIPs": ["100.83.200.69", "fd7a:115c:a1e0::c537:c845"], + "SrcIPs": [ + "100.83.200.69", + "fd7a:115c:a1e0::c537:c845" + ], "DstPorts": [ { "IP": "100.103.8.15", @@ -137,7 +109,10 @@ "tagged-server": { "packet_filter_rules": [ { - "SrcIPs": ["100.83.200.69", "fd7a:115c:a1e0::c537:c845"], + "SrcIPs": [ + "100.83.200.69", + "fd7a:115c:a1e0::c537:c845" + ], "DstPorts": [ { "IP": "100.108.74.26", diff --git a/hscontrol/policy/v2/testdata/acl_results/ACL-P01.hujson b/hscontrol/policy/v2/testdata/acl_results/ACL-P01.hujson index a9ce56c79..52bee80c6 100644 --- a/hscontrol/policy/v2/testdata/acl_results/ACL-P01.hujson +++ b/hscontrol/policy/v2/testdata/acl_results/ACL-P01.hujson @@ -5,23 +5,37 @@ // Expected: Rules on tagged-server { "test_id": "ACL-P01", - "timestamp": "2026-03-17T14:38:55Z", - "propagation_wait_seconds": 10, "input": { - "policy_file": "acl_policies/acl_p01.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -31,74 +45,28 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "acls": [ { "action": "accept", - "src": ["*"], - "dst": ["tag:server:*"] + "src": [ + "*" + ], + "dst": [ + "tag:server:*" + ] } ] - }, - "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", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] - }, - "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": { diff --git a/hscontrol/policy/v2/testdata/acl_results/ACL-P02.hujson b/hscontrol/policy/v2/testdata/acl_results/ACL-P02.hujson index d17d3bf0d..430141551 100644 --- a/hscontrol/policy/v2/testdata/acl_results/ACL-P02.hujson +++ b/hscontrol/policy/v2/testdata/acl_results/ACL-P02.hujson @@ -5,23 +5,37 @@ // Expected: Rules on tagged-server { "test_id": "ACL-P02", - "timestamp": "2026-03-17T14:39:06Z", - "propagation_wait_seconds": 10, "input": { - "policy_file": "acl_policies/acl_p02.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -31,74 +45,28 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "acls": [ { "action": "accept", - "src": ["*"], - "dst": ["tag:server:80-443"] + "src": [ + "*" + ], + "dst": [ + "tag:server:80-443" + ] } ] - }, - "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", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] - }, - "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": { diff --git a/hscontrol/policy/v2/testdata/acl_results/ACL-P03.hujson b/hscontrol/policy/v2/testdata/acl_results/ACL-P03.hujson index cfdc96d1f..d2dbd89a6 100644 --- a/hscontrol/policy/v2/testdata/acl_results/ACL-P03.hujson +++ b/hscontrol/policy/v2/testdata/acl_results/ACL-P03.hujson @@ -5,23 +5,37 @@ // Expected: Rules on tagged-server { "test_id": "ACL-P03", - "timestamp": "2026-03-17T14:39:16Z", - "propagation_wait_seconds": 10, "input": { - "policy_file": "acl_policies/acl_p03.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -31,74 +45,28 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "acls": [ { "action": "accept", - "src": ["*"], - "dst": ["tag:server:22,80,443"] + "src": [ + "*" + ], + "dst": [ + "tag:server:22,80,443" + ] } ] - }, - "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", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] - }, - "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": { diff --git a/hscontrol/policy/v2/testdata/acl_results/ACL-P04.hujson b/hscontrol/policy/v2/testdata/acl_results/ACL-P04.hujson index 357df7b25..30e839127 100644 --- a/hscontrol/policy/v2/testdata/acl_results/ACL-P04.hujson +++ b/hscontrol/policy/v2/testdata/acl_results/ACL-P04.hujson @@ -5,23 +5,37 @@ // Expected: Rules on tagged-server { "test_id": "ACL-P04", - "timestamp": "2026-03-17T14:39:27Z", - "propagation_wait_seconds": 10, "input": { - "policy_file": "acl_policies/acl_p04.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -31,75 +45,29 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "acls": [ { "action": "accept", - "src": ["*"], - "dst": ["tag:server:22"], + "src": [ + "*" + ], + "dst": [ + "tag:server:22" + ], "proto": "tcp" } ] - }, - "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", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] - }, - "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": { @@ -140,7 +108,9 @@ } } ], - "IPProto": [6] + "IPProto": [ + 6 + ] } ] }, diff --git a/hscontrol/policy/v2/testdata/acl_results/ACL-P05.hujson b/hscontrol/policy/v2/testdata/acl_results/ACL-P05.hujson index 596497760..a36c6766a 100644 --- a/hscontrol/policy/v2/testdata/acl_results/ACL-P05.hujson +++ b/hscontrol/policy/v2/testdata/acl_results/ACL-P05.hujson @@ -5,23 +5,37 @@ // Expected: Rules on tagged-server { "test_id": "ACL-P05", - "timestamp": "2026-03-17T14:39:37Z", - "propagation_wait_seconds": 10, "input": { - "policy_file": "acl_policies/acl_p05.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -31,75 +45,29 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "acls": [ { "action": "accept", - "src": ["*"], - "dst": ["tag:server:53"], + "src": [ + "*" + ], + "dst": [ + "tag:server:53" + ], "proto": "udp" } ] - }, - "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", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] - }, - "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": { @@ -140,7 +108,9 @@ } } ], - "IPProto": [17] + "IPProto": [ + 17 + ] } ] }, diff --git a/hscontrol/policy/v2/testdata/acl_results/ACL-P06.hujson b/hscontrol/policy/v2/testdata/acl_results/ACL-P06.hujson index 8cf5aacdd..5d87a845f 100644 --- a/hscontrol/policy/v2/testdata/acl_results/ACL-P06.hujson +++ b/hscontrol/policy/v2/testdata/acl_results/ACL-P06.hujson @@ -5,23 +5,37 @@ // Expected: Rules on tagged-server { "test_id": "ACL-P06", - "timestamp": "2026-03-17T14:39:48Z", - "propagation_wait_seconds": 10, "input": { - "policy_file": "acl_policies/acl_p06.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -31,75 +45,29 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "acls": [ { "action": "accept", - "src": ["*"], - "dst": ["tag:server:*"], + "src": [ + "*" + ], + "dst": [ + "tag:server:*" + ], "proto": "1" } ] - }, - "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", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] - }, - "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": { @@ -140,7 +108,9 @@ } } ], - "IPProto": [1] + "IPProto": [ + 1 + ] } ] }, diff --git a/hscontrol/policy/v2/testdata/acl_results/ACL-PF01.hujson b/hscontrol/policy/v2/testdata/acl_results/ACL-PF01.hujson index 58616778f..45e1de447 100644 --- a/hscontrol/policy/v2/testdata/acl_results/ACL-PF01.hujson +++ b/hscontrol/policy/v2/testdata/acl_results/ACL-PF01.hujson @@ -5,23 +5,37 @@ // Expected: Rules on tagged-server { "test_id": "ACL-PF01", - "timestamp": "2026-03-17T14:39:58Z", - "propagation_wait_seconds": 10, "input": { - "policy_file": "acl_policies/acl_pf01.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -31,74 +45,28 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "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"] + "src": [ + "tag:client" + ], + "dst": [ + "tag:server:22" + ] } ] - }, - "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", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] - }, - "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": { @@ -117,7 +85,10 @@ "tagged-server": { "packet_filter_rules": [ { - "SrcIPs": ["100.83.200.69", "fd7a:115c:a1e0::c537:c845"], + "SrcIPs": [ + "100.83.200.69", + "fd7a:115c:a1e0::c537:c845" + ], "DstPorts": [ { "IP": "100.108.74.26", diff --git a/hscontrol/policy/v2/testdata/acl_results/ACL-PF02.hujson b/hscontrol/policy/v2/testdata/acl_results/ACL-PF02.hujson index 8a927696c..15af63462 100644 --- a/hscontrol/policy/v2/testdata/acl_results/ACL-PF02.hujson +++ b/hscontrol/policy/v2/testdata/acl_results/ACL-PF02.hujson @@ -5,23 +5,37 @@ // Expected: Rules on tagged-server { "test_id": "ACL-PF02", - "timestamp": "2026-03-17T14:40:09Z", - "propagation_wait_seconds": 10, "input": { - "policy_file": "acl_policies/acl_pf02.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -31,74 +45,28 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "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:80-443"] + "src": [ + "tag:client" + ], + "dst": [ + "tag:server:80-443" + ] } ] - }, - "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", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] - }, - "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": { @@ -117,7 +85,10 @@ "tagged-server": { "packet_filter_rules": [ { - "SrcIPs": ["100.83.200.69", "fd7a:115c:a1e0::c537:c845"], + "SrcIPs": [ + "100.83.200.69", + "fd7a:115c:a1e0::c537:c845" + ], "DstPorts": [ { "IP": "100.108.74.26", diff --git a/hscontrol/policy/v2/testdata/acl_results/ACL-PF03.hujson b/hscontrol/policy/v2/testdata/acl_results/ACL-PF03.hujson index 72ec55ad3..8be133c8a 100644 --- a/hscontrol/policy/v2/testdata/acl_results/ACL-PF03.hujson +++ b/hscontrol/policy/v2/testdata/acl_results/ACL-PF03.hujson @@ -5,23 +5,37 @@ // Expected: Rules on tagged-server { "test_id": "ACL-PF03", - "timestamp": "2026-03-17T14:40:19Z", - "propagation_wait_seconds": 10, "input": { - "policy_file": "acl_policies/acl_pf03.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -31,74 +45,28 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "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,80,443"] + "src": [ + "tag:client" + ], + "dst": [ + "tag:server:22,80,443" + ] } ] - }, - "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", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] - }, - "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": { @@ -117,7 +85,10 @@ "tagged-server": { "packet_filter_rules": [ { - "SrcIPs": ["100.83.200.69", "fd7a:115c:a1e0::c537:c845"], + "SrcIPs": [ + "100.83.200.69", + "fd7a:115c:a1e0::c537:c845" + ], "DstPorts": [ { "IP": "100.108.74.26", diff --git a/hscontrol/policy/v2/testdata/acl_results/ACL-PF04.hujson b/hscontrol/policy/v2/testdata/acl_results/ACL-PF04.hujson index 66b9f0410..30dd8f8bb 100644 --- a/hscontrol/policy/v2/testdata/acl_results/ACL-PF04.hujson +++ b/hscontrol/policy/v2/testdata/acl_results/ACL-PF04.hujson @@ -5,23 +5,37 @@ // Expected: Rules on tagged-server { "test_id": "ACL-PF04", - "timestamp": "2026-03-17T14:40:29Z", - "propagation_wait_seconds": 10, "input": { - "policy_file": "acl_policies/acl_pf04.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -31,74 +45,28 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "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:*"] + "src": [ + "tag:client" + ], + "dst": [ + "tag:server:*" + ] } ] - }, - "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", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] - }, - "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": { @@ -117,7 +85,10 @@ "tagged-server": { "packet_filter_rules": [ { - "SrcIPs": ["100.83.200.69", "fd7a:115c:a1e0::c537:c845"], + "SrcIPs": [ + "100.83.200.69", + "fd7a:115c:a1e0::c537:c845" + ], "DstPorts": [ { "IP": "100.108.74.26", diff --git a/hscontrol/policy/v2/testdata/acl_results/ACL-PF05.hujson b/hscontrol/policy/v2/testdata/acl_results/ACL-PF05.hujson index bd5961b1a..e2997c4f0 100644 --- a/hscontrol/policy/v2/testdata/acl_results/ACL-PF05.hujson +++ b/hscontrol/policy/v2/testdata/acl_results/ACL-PF05.hujson @@ -5,23 +5,37 @@ // Expected: Rules on tagged-server { "test_id": "ACL-PF05", - "timestamp": "2026-03-17T14:40:40Z", - "propagation_wait_seconds": 10, "input": { - "policy_file": "acl_policies/acl_pf05.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -31,74 +45,28 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "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:1-65535"] + "src": [ + "tag:client" + ], + "dst": [ + "tag:server:1-65535" + ] } ] - }, - "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", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] - }, - "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": { @@ -117,7 +85,10 @@ "tagged-server": { "packet_filter_rules": [ { - "SrcIPs": ["100.83.200.69", "fd7a:115c:a1e0::c537:c845"], + "SrcIPs": [ + "100.83.200.69", + "fd7a:115c:a1e0::c537:c845" + ], "DstPorts": [ { "IP": "100.108.74.26", diff --git a/hscontrol/policy/v2/testdata/acl_results/ACL-R01.hujson b/hscontrol/policy/v2/testdata/acl_results/ACL-R01.hujson index 670b9549e..fadfed486 100644 --- a/hscontrol/policy/v2/testdata/acl_results/ACL-R01.hujson +++ b/hscontrol/policy/v2/testdata/acl_results/ACL-R01.hujson @@ -7,23 +7,37 @@ // Expected: Rules on tagged-server { "test_id": "ACL-R01", - "timestamp": "2026-03-17T14:40:50Z", - "propagation_wait_seconds": 10, "input": { - "policy_file": "acl_policies/acl_r01.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -33,79 +47,37 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "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"] + "src": [ + "tag:client" + ], + "dst": [ + "tag:server:22" + ] }, { "action": "accept", - "src": ["tag:prod"], - "dst": ["tag:server:80"] + "src": [ + "tag:prod" + ], + "dst": [ + "tag:server:80" + ] } ] - }, - "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", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] - }, - "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": { @@ -124,7 +96,10 @@ "tagged-server": { "packet_filter_rules": [ { - "SrcIPs": ["100.83.200.69", "fd7a:115c:a1e0::c537:c845"], + "SrcIPs": [ + "100.83.200.69", + "fd7a:115c:a1e0::c537:c845" + ], "DstPorts": [ { "IP": "100.108.74.26", @@ -143,7 +118,10 @@ ] }, { - "SrcIPs": ["100.103.8.15", "fd7a:115c:a1e0::5b37:80f"], + "SrcIPs": [ + "100.103.8.15", + "fd7a:115c:a1e0::5b37:80f" + ], "DstPorts": [ { "IP": "100.108.74.26", diff --git a/hscontrol/policy/v2/testdata/acl_results/ACL-R02.hujson b/hscontrol/policy/v2/testdata/acl_results/ACL-R02.hujson index b9d3c0e1b..974147265 100644 --- a/hscontrol/policy/v2/testdata/acl_results/ACL-R02.hujson +++ b/hscontrol/policy/v2/testdata/acl_results/ACL-R02.hujson @@ -7,23 +7,37 @@ // Expected: Rules on tagged-prod, tagged-server { "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: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"] + "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", @@ -33,79 +47,37 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "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"] + "src": [ + "tag:client" + ], + "dst": [ + "tag:server:22" + ] }, { "action": "accept", - "src": ["tag:client"], - "dst": ["tag:prod:5432"] + "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", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] - }, - "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": { @@ -121,7 +93,10 @@ "tagged-prod": { "packet_filter_rules": [ { - "SrcIPs": ["100.83.200.69", "fd7a:115c:a1e0::c537:c845"], + "SrcIPs": [ + "100.83.200.69", + "fd7a:115c:a1e0::c537:c845" + ], "DstPorts": [ { "IP": "100.103.8.15", @@ -144,7 +119,10 @@ "tagged-server": { "packet_filter_rules": [ { - "SrcIPs": ["100.83.200.69", "fd7a:115c:a1e0::c537:c845"], + "SrcIPs": [ + "100.83.200.69", + "fd7a:115c:a1e0::c537:c845" + ], "DstPorts": [ { "IP": "100.108.74.26", diff --git a/hscontrol/policy/v2/testdata/acl_results/ACL-R03.hujson b/hscontrol/policy/v2/testdata/acl_results/ACL-R03.hujson index f9fd8832b..5b5553ead 100644 --- a/hscontrol/policy/v2/testdata/acl_results/ACL-R03.hujson +++ b/hscontrol/policy/v2/testdata/acl_results/ACL-R03.hujson @@ -7,23 +7,37 @@ // Expected: Rules on tagged-server { "test_id": "ACL-R03", - "timestamp": "2026-03-17T14:41:11Z", - "propagation_wait_seconds": 10, "input": { - "policy_file": "acl_policies/acl_r03.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -33,79 +47,37 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "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"] + "src": [ + "tag:client" + ], + "dst": [ + "tag:server:22" + ] }, { "action": "accept", - "src": ["tag:client"], - "dst": ["tag:server:80"] + "src": [ + "tag:client" + ], + "dst": [ + "tag:server:80" + ] } ] - }, - "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", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] - }, - "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": { @@ -124,7 +96,10 @@ "tagged-server": { "packet_filter_rules": [ { - "SrcIPs": ["100.83.200.69", "fd7a:115c:a1e0::c537:c845"], + "SrcIPs": [ + "100.83.200.69", + "fd7a:115c:a1e0::c537:c845" + ], "DstPorts": [ { "IP": "100.108.74.26", diff --git a/hscontrol/policy/v2/testdata/acl_results/ACL-R04.hujson b/hscontrol/policy/v2/testdata/acl_results/ACL-R04.hujson index 38e0f9ede..2c8a35c4a 100644 --- a/hscontrol/policy/v2/testdata/acl_results/ACL-R04.hujson +++ b/hscontrol/policy/v2/testdata/acl_results/ACL-R04.hujson @@ -7,23 +7,37 @@ // Expected: Rules on tagged-server { "test_id": "ACL-R04", - "timestamp": "2026-03-17T14:41:22Z", - "propagation_wait_seconds": 10, "input": { - "policy_file": "acl_policies/acl_r04.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -33,79 +47,37 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "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"] + "src": [ + "tag:client" + ], + "dst": [ + "tag:server:22" + ] }, { "action": "accept", - "src": ["group:admins"], - "dst": ["tag:server:22"] + "src": [ + "group:admins" + ], + "dst": [ + "tag:server:22" + ] } ] - }, - "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", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] - }, - "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": { @@ -124,7 +96,10 @@ "tagged-server": { "packet_filter_rules": [ { - "SrcIPs": ["100.83.200.69", "fd7a:115c:a1e0::c537:c845"], + "SrcIPs": [ + "100.83.200.69", + "fd7a:115c:a1e0::c537:c845" + ], "DstPorts": [ { "IP": "100.108.74.26", @@ -143,7 +118,10 @@ ] }, { - "SrcIPs": ["100.90.199.68", "fd7a:115c:a1e0::2d01:c747"], + "SrcIPs": [ + "100.90.199.68", + "fd7a:115c:a1e0::2d01:c747" + ], "DstPorts": [ { "IP": "100.108.74.26", diff --git a/hscontrol/policy/v2/testdata/acl_results/ACL-R05.hujson b/hscontrol/policy/v2/testdata/acl_results/ACL-R05.hujson index 4979bb9a7..0180b71ee 100644 --- a/hscontrol/policy/v2/testdata/acl_results/ACL-R05.hujson +++ b/hscontrol/policy/v2/testdata/acl_results/ACL-R05.hujson @@ -7,23 +7,37 @@ // Expected: Rules on 8 of 8 nodes { "test_id": "ACL-R05", - "timestamp": "2026-03-17T14:41:32Z", - "propagation_wait_seconds": 10, "input": { - "policy_file": "acl_policies/acl_r05.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -33,79 +47,37 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "acls": [ { "action": "accept", - "src": ["*"], - "dst": ["*:*"] + "src": [ + "*" + ], + "dst": [ + "*:*" + ] }, { "action": "accept", - "src": ["tag:client"], - "dst": ["tag:server:22"] + "src": [ + "tag:client" + ], + "dst": [ + "tag:server:22" + ] } ] - }, - "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", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] - }, - "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": { @@ -213,7 +185,10 @@ ] }, { - "SrcIPs": ["100.83.200.69", "fd7a:115c:a1e0::c537:c845"], + "SrcIPs": [ + "100.83.200.69", + "fd7a:115c:a1e0::c537:c845" + ], "DstPorts": [ { "IP": "100.108.74.26", diff --git a/hscontrol/policy/v2/testdata/acl_results/ACL-R06.hujson b/hscontrol/policy/v2/testdata/acl_results/ACL-R06.hujson index 6167e55f6..687c550a4 100644 --- a/hscontrol/policy/v2/testdata/acl_results/ACL-R06.hujson +++ b/hscontrol/policy/v2/testdata/acl_results/ACL-R06.hujson @@ -8,23 +8,37 @@ // Expected: Rules on tagged-server { "test_id": "ACL-R06", - "timestamp": "2026-03-17T14:41:43Z", - "propagation_wait_seconds": 10, "input": { - "policy_file": "acl_policies/acl_r06.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -34,84 +48,46 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "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"] + "src": [ + "tag:client" + ], + "dst": [ + "tag:server:22" + ] }, { "action": "accept", - "src": ["tag:prod"], - "dst": ["tag:server:80"] + "src": [ + "tag:prod" + ], + "dst": [ + "tag:server:80" + ] }, { "action": "accept", - "src": ["group:admins"], - "dst": ["tag:server:443"] + "src": [ + "group:admins" + ], + "dst": [ + "tag:server:443" + ] } ] - }, - "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", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] - }, - "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": { @@ -130,7 +106,10 @@ "tagged-server": { "packet_filter_rules": [ { - "SrcIPs": ["100.83.200.69", "fd7a:115c:a1e0::c537:c845"], + "SrcIPs": [ + "100.83.200.69", + "fd7a:115c:a1e0::c537:c845" + ], "DstPorts": [ { "IP": "100.108.74.26", @@ -149,7 +128,10 @@ ] }, { - "SrcIPs": ["100.103.8.15", "fd7a:115c:a1e0::5b37:80f"], + "SrcIPs": [ + "100.103.8.15", + "fd7a:115c:a1e0::5b37:80f" + ], "DstPorts": [ { "IP": "100.108.74.26", @@ -168,7 +150,10 @@ ] }, { - "SrcIPs": ["100.90.199.68", "fd7a:115c:a1e0::2d01:c747"], + "SrcIPs": [ + "100.90.199.68", + "fd7a:115c:a1e0::2d01:c747" + ], "DstPorts": [ { "IP": "100.108.74.26", diff --git a/hscontrol/policy/v2/testdata/acl_results/ACL-R07.hujson b/hscontrol/policy/v2/testdata/acl_results/ACL-R07.hujson index c89bc7c3a..743402406 100644 --- a/hscontrol/policy/v2/testdata/acl_results/ACL-R07.hujson +++ b/hscontrol/policy/v2/testdata/acl_results/ACL-R07.hujson @@ -8,23 +8,37 @@ // Expected: Rules on tagged-prod, tagged-server, user-kris, user-mon, user1 { "test_id": "ACL-R07", - "timestamp": "2026-03-17T14:41:53Z", - "propagation_wait_seconds": 10, "input": { - "policy_file": "acl_policies/acl_r07.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -34,84 +48,46 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "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"] + "src": [ + "tag:client" + ], + "dst": [ + "tag:server:22" + ] }, { "action": "accept", - "src": ["autogroup:member"], - "dst": ["tag:prod:5432"] + "src": [ + "autogroup:member" + ], + "dst": [ + "tag:prod:5432" + ] }, { "action": "accept", - "src": ["*"], - "dst": ["autogroup:self:*"] + "src": [ + "*" + ], + "dst": [ + "autogroup:self:*" + ] } ] - }, - "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", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] - }, - "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": { @@ -157,7 +133,10 @@ "tagged-server": { "packet_filter_rules": [ { - "SrcIPs": ["100.83.200.69", "fd7a:115c:a1e0::c537:c845"], + "SrcIPs": [ + "100.83.200.69", + "fd7a:115c:a1e0::c537:c845" + ], "DstPorts": [ { "IP": "100.108.74.26", @@ -180,7 +159,10 @@ "user-kris": { "packet_filter_rules": [ { - "SrcIPs": ["100.110.121.96", "fd7a:115c:a1e0::1737:7960"], + "SrcIPs": [ + "100.110.121.96", + "fd7a:115c:a1e0::1737:7960" + ], "DstPorts": [ { "IP": "100.110.121.96", @@ -203,7 +185,10 @@ "user-mon": { "packet_filter_rules": [ { - "SrcIPs": ["100.103.90.82", "fd7a:115c:a1e0::9e37:5a52"], + "SrcIPs": [ + "100.103.90.82", + "fd7a:115c:a1e0::9e37:5a52" + ], "DstPorts": [ { "IP": "100.103.90.82", @@ -226,7 +211,10 @@ "user1": { "packet_filter_rules": [ { - "SrcIPs": ["100.90.199.68", "fd7a:115c:a1e0::2d01:c747"], + "SrcIPs": [ + "100.90.199.68", + "fd7a:115c:a1e0::2d01:c747" + ], "DstPorts": [ { "IP": "100.90.199.68", diff --git a/hscontrol/policy/v2/testdata/acl_results/ACL-R08.hujson b/hscontrol/policy/v2/testdata/acl_results/ACL-R08.hujson index 58a509125..78dee1a5e 100644 --- a/hscontrol/policy/v2/testdata/acl_results/ACL-R08.hujson +++ b/hscontrol/policy/v2/testdata/acl_results/ACL-R08.hujson @@ -8,23 +8,37 @@ // Expected: Rules on tagged-client, tagged-prod, tagged-server { "test_id": "ACL-R08", - "timestamp": "2026-03-17T14:42:04Z", - "propagation_wait_seconds": 10, "input": { - "policy_file": "acl_policies/acl_r08.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -34,84 +48,46 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "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"] + "src": [ + "tag:client" + ], + "dst": [ + "tag:server:22" + ] }, { "action": "accept", - "src": ["tag:server"], - "dst": ["tag:prod:5432"] + "src": [ + "tag:server" + ], + "dst": [ + "tag:prod:5432" + ] }, { "action": "accept", - "src": ["tag:prod"], - "dst": ["tag:client:80"] + "src": [ + "tag:prod" + ], + "dst": [ + "tag:client:80" + ] } ] - }, - "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", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] - }, - "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": { @@ -124,7 +100,10 @@ "tagged-client": { "packet_filter_rules": [ { - "SrcIPs": ["100.103.8.15", "fd7a:115c:a1e0::5b37:80f"], + "SrcIPs": [ + "100.103.8.15", + "fd7a:115c:a1e0::5b37:80f" + ], "DstPorts": [ { "IP": "100.83.200.69", @@ -147,7 +126,10 @@ "tagged-prod": { "packet_filter_rules": [ { - "SrcIPs": ["100.108.74.26", "fd7a:115c:a1e0::b901:4a87"], + "SrcIPs": [ + "100.108.74.26", + "fd7a:115c:a1e0::b901:4a87" + ], "DstPorts": [ { "IP": "100.103.8.15", @@ -170,7 +152,10 @@ "tagged-server": { "packet_filter_rules": [ { - "SrcIPs": ["100.83.200.69", "fd7a:115c:a1e0::c537:c845"], + "SrcIPs": [ + "100.83.200.69", + "fd7a:115c:a1e0::c537:c845" + ], "DstPorts": [ { "IP": "100.108.74.26", diff --git a/hscontrol/policy/v2/testdata/acl_results/ACL-R09.hujson b/hscontrol/policy/v2/testdata/acl_results/ACL-R09.hujson index f0616523e..a9b0c85ad 100644 --- a/hscontrol/policy/v2/testdata/acl_results/ACL-R09.hujson +++ b/hscontrol/policy/v2/testdata/acl_results/ACL-R09.hujson @@ -7,23 +7,37 @@ // Expected: Rules on tagged-server, user-kris, user-mon, user1 { "test_id": "ACL-R09", - "timestamp": "2026-03-17T14:42:14Z", - "propagation_wait_seconds": 10, "input": { - "policy_file": "acl_policies/acl_r09.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -33,79 +47,37 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "acls": [ { "action": "accept", - "src": ["autogroup:member"], - "dst": ["autogroup:self:*"] + "src": [ + "autogroup:member" + ], + "dst": [ + "autogroup:self:*" + ] }, { "action": "accept", - "src": ["autogroup:member"], - "dst": ["tag:server:22"] + "src": [ + "autogroup:member" + ], + "dst": [ + "tag:server:22" + ] } ] - }, - "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", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] - }, - "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": { @@ -154,7 +126,10 @@ "user-kris": { "packet_filter_rules": [ { - "SrcIPs": ["100.110.121.96", "fd7a:115c:a1e0::1737:7960"], + "SrcIPs": [ + "100.110.121.96", + "fd7a:115c:a1e0::1737:7960" + ], "DstPorts": [ { "IP": "100.110.121.96", @@ -177,7 +152,10 @@ "user-mon": { "packet_filter_rules": [ { - "SrcIPs": ["100.103.90.82", "fd7a:115c:a1e0::9e37:5a52"], + "SrcIPs": [ + "100.103.90.82", + "fd7a:115c:a1e0::9e37:5a52" + ], "DstPorts": [ { "IP": "100.103.90.82", @@ -200,7 +178,10 @@ "user1": { "packet_filter_rules": [ { - "SrcIPs": ["100.90.199.68", "fd7a:115c:a1e0::2d01:c747"], + "SrcIPs": [ + "100.90.199.68", + "fd7a:115c:a1e0::2d01:c747" + ], "DstPorts": [ { "IP": "100.90.199.68", diff --git a/hscontrol/policy/v2/testdata/acl_results/ACL-R10.hujson b/hscontrol/policy/v2/testdata/acl_results/ACL-R10.hujson index 30523edc6..e738ddedc 100644 --- a/hscontrol/policy/v2/testdata/acl_results/ACL-R10.hujson +++ b/hscontrol/policy/v2/testdata/acl_results/ACL-R10.hujson @@ -7,23 +7,37 @@ // Expected: Rules on 8 of 8 nodes { "test_id": "ACL-R10", - "timestamp": "2026-03-17T14:42:25Z", - "propagation_wait_seconds": 10, "input": { - "policy_file": "acl_policies/acl_r10.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -33,79 +47,37 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "acls": [ { "action": "accept", - "src": ["*"], - "dst": ["autogroup:self:*"] + "src": [ + "*" + ], + "dst": [ + "autogroup:self:*" + ] }, { "action": "accept", - "src": ["*"], - "dst": ["autogroup:tagged:*"] + "src": [ + "*" + ], + "dst": [ + "autogroup:tagged:*" + ] } ] - }, - "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", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] - }, - "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": { @@ -252,7 +224,10 @@ "user-kris": { "packet_filter_rules": [ { - "SrcIPs": ["100.110.121.96", "fd7a:115c:a1e0::1737:7960"], + "SrcIPs": [ + "100.110.121.96", + "fd7a:115c:a1e0::1737:7960" + ], "DstPorts": [ { "IP": "100.110.121.96", @@ -275,7 +250,10 @@ "user-mon": { "packet_filter_rules": [ { - "SrcIPs": ["100.103.90.82", "fd7a:115c:a1e0::9e37:5a52"], + "SrcIPs": [ + "100.103.90.82", + "fd7a:115c:a1e0::9e37:5a52" + ], "DstPorts": [ { "IP": "100.103.90.82", @@ -298,7 +276,10 @@ "user1": { "packet_filter_rules": [ { - "SrcIPs": ["100.90.199.68", "fd7a:115c:a1e0::2d01:c747"], + "SrcIPs": [ + "100.90.199.68", + "fd7a:115c:a1e0::2d01:c747" + ], "DstPorts": [ { "IP": "100.90.199.68", diff --git a/hscontrol/policy/v2/testdata/acl_results/ACL-RS01.hujson b/hscontrol/policy/v2/testdata/acl_results/ACL-RS01.hujson index 67b8aae98..c92265ba4 100644 --- a/hscontrol/policy/v2/testdata/acl_results/ACL-RS01.hujson +++ b/hscontrol/policy/v2/testdata/acl_results/ACL-RS01.hujson @@ -5,23 +5,37 @@ // Expected: Rules on tagged-server { "test_id": "ACL-RS01", - "timestamp": "2026-03-17T14:42:35Z", - "propagation_wait_seconds": 10, "input": { - "policy_file": "acl_policies/acl_rs01.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -31,74 +45,32 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "acls": [ { "action": "accept", - "src": ["autogroup:member", "group:admins", "group:developers", "kratail2tid@passkey", "100.90.199.68"], - "dst": ["tag:server:22"] + "src": [ + "autogroup:member", + "group:admins", + "group:developers", + "kratail2tid@passkey", + "100.90.199.68" + ], + "dst": [ + "tag:server:22" + ] } ] - }, - "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", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] - }, - "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": { diff --git a/hscontrol/policy/v2/testdata/acl_results/ACL-RS02.hujson b/hscontrol/policy/v2/testdata/acl_results/ACL-RS02.hujson index 03e6906da..a0fb75325 100644 --- a/hscontrol/policy/v2/testdata/acl_results/ACL-RS02.hujson +++ b/hscontrol/policy/v2/testdata/acl_results/ACL-RS02.hujson @@ -5,23 +5,37 @@ // Expected: Rules on tagged-client { "test_id": "ACL-RS02", - "timestamp": "2026-03-17T14:42:45Z", - "propagation_wait_seconds": 10, "input": { - "policy_file": "acl_policies/acl_rs02.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -31,74 +45,30 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "acls": [ { "action": "accept", - "src": ["tag:server", "webserver", "100.108.74.26"], - "dst": ["tag:client:22"] + "src": [ + "tag:server", + "webserver", + "100.108.74.26" + ], + "dst": [ + "tag:client:22" + ] } ] - }, - "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", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] - }, - "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": { @@ -111,7 +81,10 @@ "tagged-client": { "packet_filter_rules": [ { - "SrcIPs": ["100.108.74.26", "fd7a:115c:a1e0::b901:4a87"], + "SrcIPs": [ + "100.108.74.26", + "fd7a:115c:a1e0::b901:4a87" + ], "DstPorts": [ { "IP": "100.83.200.69", diff --git a/hscontrol/policy/v2/testdata/acl_results/ACL-RS03.hujson b/hscontrol/policy/v2/testdata/acl_results/ACL-RS03.hujson index 0b919ee82..162d2e2d7 100644 --- a/hscontrol/policy/v2/testdata/acl_results/ACL-RS03.hujson +++ b/hscontrol/policy/v2/testdata/acl_results/ACL-RS03.hujson @@ -5,23 +5,37 @@ // Expected: Rules on tagged-server { "test_id": "ACL-RS03", - "timestamp": "2026-03-17T14:42:56Z", - "propagation_wait_seconds": 10, "input": { - "policy_file": "acl_policies/acl_rs03.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -31,74 +45,30 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "acls": [ { "action": "accept", - "src": ["tag:prod", "prodbox", "100.103.8.15"], - "dst": ["tag:server:22"] + "src": [ + "tag:prod", + "prodbox", + "100.103.8.15" + ], + "dst": [ + "tag:server:22" + ] } ] - }, - "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", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] - }, - "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": { @@ -117,7 +87,10 @@ "tagged-server": { "packet_filter_rules": [ { - "SrcIPs": ["100.103.8.15", "fd7a:115c:a1e0::5b37:80f"], + "SrcIPs": [ + "100.103.8.15", + "fd7a:115c:a1e0::5b37:80f" + ], "DstPorts": [ { "IP": "100.108.74.26", diff --git a/hscontrol/policy/v2/testdata/acl_results/ACL-RS04.hujson b/hscontrol/policy/v2/testdata/acl_results/ACL-RS04.hujson index 4d226e8bf..3dddb2bb3 100644 --- a/hscontrol/policy/v2/testdata/acl_results/ACL-RS04.hujson +++ b/hscontrol/policy/v2/testdata/acl_results/ACL-RS04.hujson @@ -5,23 +5,37 @@ // Expected: Rules on user-kris, user-mon, user1 { "test_id": "ACL-RS04", - "timestamp": "2026-03-17T14:43:06Z", - "propagation_wait_seconds": 10, "input": { - "policy_file": "acl_policies/acl_rs04.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -31,74 +45,33 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "acls": [ { "action": "accept", - "src": ["autogroup:tagged", "tag:server", "tag:client", "tag:prod", "tag:router", "tag:exit"], - "dst": ["autogroup:member:22"] + "src": [ + "autogroup:tagged", + "tag:server", + "tag:client", + "tag:prod", + "tag:router", + "tag:exit" + ], + "dst": [ + "autogroup:member:22" + ] } ] - }, - "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", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] - }, - "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": { diff --git a/hscontrol/policy/v2/testdata/acl_results/ACL-RS05.hujson b/hscontrol/policy/v2/testdata/acl_results/ACL-RS05.hujson index e00e0de2d..232d4ec4c 100644 --- a/hscontrol/policy/v2/testdata/acl_results/ACL-RS05.hujson +++ b/hscontrol/policy/v2/testdata/acl_results/ACL-RS05.hujson @@ -5,23 +5,37 @@ // Expected: Rules on tagged-server { "test_id": "ACL-RS05", - "timestamp": "2026-03-17T14:43:17Z", - "propagation_wait_seconds": 10, "input": { - "policy_file": "acl_policies/acl_rs05.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -31,74 +45,30 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "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", "webserver:22", "100.108.74.26:22"] + "src": [ + "tag:client" + ], + "dst": [ + "tag:server:22", + "webserver:22", + "100.108.74.26:22" + ] } ] - }, - "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", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] - }, - "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": { @@ -117,7 +87,10 @@ "tagged-server": { "packet_filter_rules": [ { - "SrcIPs": ["100.83.200.69", "fd7a:115c:a1e0::c537:c845"], + "SrcIPs": [ + "100.83.200.69", + "fd7a:115c:a1e0::c537:c845" + ], "DstPorts": [ { "IP": "100.108.74.26", diff --git a/hscontrol/policy/v2/testdata/acl_results/ACL-RS06.hujson b/hscontrol/policy/v2/testdata/acl_results/ACL-RS06.hujson index 588d0aba9..ed2acd21e 100644 --- a/hscontrol/policy/v2/testdata/acl_results/ACL-RS06.hujson +++ b/hscontrol/policy/v2/testdata/acl_results/ACL-RS06.hujson @@ -5,23 +5,37 @@ // Expected: Rules on user-kris, user1 { "test_id": "ACL-RS06", - "timestamp": "2026-03-17T14:43:27Z", - "propagation_wait_seconds": 10, "input": { - "policy_file": "acl_policies/acl_rs06.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -31,74 +45,31 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "acls": [ { "action": "accept", - "src": ["tag:client"], - "dst": ["group:admins:22", "group:developers:22", "kratail2tid@passkey:22", "100.90.199.68:22"] + "src": [ + "tag:client" + ], + "dst": [ + "group:admins:22", + "group:developers:22", + "kratail2tid@passkey:22", + "100.90.199.68:22" + ] } ] - }, - "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", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] - }, - "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": { @@ -120,7 +91,10 @@ "user-kris": { "packet_filter_rules": [ { - "SrcIPs": ["100.83.200.69", "fd7a:115c:a1e0::c537:c845"], + "SrcIPs": [ + "100.83.200.69", + "fd7a:115c:a1e0::c537:c845" + ], "DstPorts": [ { "IP": "100.110.121.96", @@ -146,7 +120,10 @@ "user1": { "packet_filter_rules": [ { - "SrcIPs": ["100.83.200.69", "fd7a:115c:a1e0::c537:c845"], + "SrcIPs": [ + "100.83.200.69", + "fd7a:115c:a1e0::c537:c845" + ], "DstPorts": [ { "IP": "100.90.199.68", diff --git a/hscontrol/policy/v2/testdata/acl_results/ACL-RS07.hujson b/hscontrol/policy/v2/testdata/acl_results/ACL-RS07.hujson index d092decef..7b5a9b7a5 100644 --- a/hscontrol/policy/v2/testdata/acl_results/ACL-RS07.hujson +++ b/hscontrol/policy/v2/testdata/acl_results/ACL-RS07.hujson @@ -5,23 +5,37 @@ // Expected: Rules on tagged-server { "test_id": "ACL-RS07", - "timestamp": "2026-03-17T14:43:38Z", - "propagation_wait_seconds": 10, "input": { - "policy_file": "acl_policies/acl_rs07.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -31,74 +45,32 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "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", "tag:server:80", "tag:server:443", "webserver:8080", "100.108.74.26:9000"] + "src": [ + "tag:client" + ], + "dst": [ + "tag:server:22", + "tag:server:80", + "tag:server:443", + "webserver:8080", + "100.108.74.26:9000" + ] } ] - }, - "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", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] - }, - "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": { @@ -117,7 +89,10 @@ "tagged-server": { "packet_filter_rules": [ { - "SrcIPs": ["100.83.200.69", "fd7a:115c:a1e0::c537:c845"], + "SrcIPs": [ + "100.83.200.69", + "fd7a:115c:a1e0::c537:c845" + ], "DstPorts": [ { "IP": "100.108.74.26", diff --git a/hscontrol/policy/v2/testdata/acl_results/ACL-S01.hujson b/hscontrol/policy/v2/testdata/acl_results/ACL-S01.hujson index 962b9bf42..36665a683 100644 --- a/hscontrol/policy/v2/testdata/acl_results/ACL-S01.hujson +++ b/hscontrol/policy/v2/testdata/acl_results/ACL-S01.hujson @@ -5,23 +5,37 @@ // Expected: Rules on user-kris, user-mon, user1 { "test_id": "ACL-S01", - "timestamp": "2026-03-17T14:43:48Z", - "propagation_wait_seconds": 10, "input": { - "policy_file": "acl_policies/acl_s01.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -31,74 +45,28 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "acls": [ { "action": "accept", - "src": ["autogroup:member"], - "dst": ["autogroup:self:22"] + "src": [ + "autogroup:member" + ], + "dst": [ + "autogroup:self:22" + ] } ] - }, - "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", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] - }, - "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": { @@ -120,7 +88,10 @@ "user-kris": { "packet_filter_rules": [ { - "SrcIPs": ["100.110.121.96", "fd7a:115c:a1e0::1737:7960"], + "SrcIPs": [ + "100.110.121.96", + "fd7a:115c:a1e0::1737:7960" + ], "DstPorts": [ { "IP": "100.110.121.96", @@ -143,7 +114,10 @@ "user-mon": { "packet_filter_rules": [ { - "SrcIPs": ["100.103.90.82", "fd7a:115c:a1e0::9e37:5a52"], + "SrcIPs": [ + "100.103.90.82", + "fd7a:115c:a1e0::9e37:5a52" + ], "DstPorts": [ { "IP": "100.103.90.82", @@ -166,7 +140,10 @@ "user1": { "packet_filter_rules": [ { - "SrcIPs": ["100.90.199.68", "fd7a:115c:a1e0::2d01:c747"], + "SrcIPs": [ + "100.90.199.68", + "fd7a:115c:a1e0::2d01:c747" + ], "DstPorts": [ { "IP": "100.90.199.68", diff --git a/hscontrol/policy/v2/testdata/acl_results/ACL-S02.hujson b/hscontrol/policy/v2/testdata/acl_results/ACL-S02.hujson index b9d0edfb4..66ae1ac5a 100644 --- a/hscontrol/policy/v2/testdata/acl_results/ACL-S02.hujson +++ b/hscontrol/policy/v2/testdata/acl_results/ACL-S02.hujson @@ -5,23 +5,37 @@ // Expected: Rules on user1 { "test_id": "ACL-S02", - "timestamp": "2026-03-17T14:43:59Z", - "propagation_wait_seconds": 10, "input": { - "policy_file": "acl_policies/acl_s02.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -31,74 +45,28 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "acls": [ { "action": "accept", - "src": ["group:admins"], - "dst": ["autogroup:self:*"] + "src": [ + "group:admins" + ], + "dst": [ + "autogroup:self:*" + ] } ] - }, - "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", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] - }, - "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": { @@ -126,7 +94,10 @@ "user1": { "packet_filter_rules": [ { - "SrcIPs": ["100.90.199.68", "fd7a:115c:a1e0::2d01:c747"], + "SrcIPs": [ + "100.90.199.68", + "fd7a:115c:a1e0::2d01:c747" + ], "DstPorts": [ { "IP": "100.90.199.68", diff --git a/hscontrol/policy/v2/testdata/acl_results/ACL-S03.hujson b/hscontrol/policy/v2/testdata/acl_results/ACL-S03.hujson index 4932dac4c..1cf695482 100644 --- a/hscontrol/policy/v2/testdata/acl_results/ACL-S03.hujson +++ b/hscontrol/policy/v2/testdata/acl_results/ACL-S03.hujson @@ -5,23 +5,37 @@ // Expected: Rules on user-kris, user1 { "test_id": "ACL-S03", - "timestamp": "2026-03-17T14:44:09Z", - "propagation_wait_seconds": 10, "input": { - "policy_file": "acl_policies/acl_s03.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -31,74 +45,28 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "acls": [ { "action": "accept", - "src": ["group:developers"], - "dst": ["autogroup:self:22"] + "src": [ + "group:developers" + ], + "dst": [ + "autogroup:self:22" + ] } ] - }, - "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", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] - }, - "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": { @@ -120,7 +88,10 @@ "user-kris": { "packet_filter_rules": [ { - "SrcIPs": ["100.110.121.96", "fd7a:115c:a1e0::1737:7960"], + "SrcIPs": [ + "100.110.121.96", + "fd7a:115c:a1e0::1737:7960" + ], "DstPorts": [ { "IP": "100.110.121.96", @@ -146,7 +117,10 @@ "user1": { "packet_filter_rules": [ { - "SrcIPs": ["100.90.199.68", "fd7a:115c:a1e0::2d01:c747"], + "SrcIPs": [ + "100.90.199.68", + "fd7a:115c:a1e0::2d01:c747" + ], "DstPorts": [ { "IP": "100.90.199.68", diff --git a/hscontrol/policy/v2/testdata/acl_results/ACL-S04.hujson b/hscontrol/policy/v2/testdata/acl_results/ACL-S04.hujson index 16413db9e..cff7723e4 100644 --- a/hscontrol/policy/v2/testdata/acl_results/ACL-S04.hujson +++ b/hscontrol/policy/v2/testdata/acl_results/ACL-S04.hujson @@ -5,23 +5,38 @@ // Expected: Error — autogroup:self can only be used with users, groups, or supported autogroups { "test_id": "ACL-S04", - "timestamp": "2026-03-17T14:44:20Z", "error": true, "input": { - "policy_file": "acl_policies/acl_s04.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -31,21 +46,31 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "acls": [ { "action": "accept", - "src": ["autogroup:tagged"], - "dst": ["autogroup:self:*"] + "src": [ + "autogroup:tagged" + ], + "dst": [ + "autogroup:self:*" + ] } ] }, - "api_endpoint": "https://api.tailscale.com/api/v2/tailnet/kratail2tid%40passkey/acl", - "api_response_code": 400, - "api_response_body": { "message": "autogroup:self can only be used with users, groups, or supported autogroups" } + "api_response_body": { + "message": "autogroup:self can only be used with users, groups, or supported autogroups" + } } } diff --git a/hscontrol/policy/v2/testdata/acl_results/ACL-S05.hujson b/hscontrol/policy/v2/testdata/acl_results/ACL-S05.hujson index a60a6df91..8ecb25832 100644 --- a/hscontrol/policy/v2/testdata/acl_results/ACL-S05.hujson +++ b/hscontrol/policy/v2/testdata/acl_results/ACL-S05.hujson @@ -5,23 +5,38 @@ // Expected: Error — autogroup:self can only be used with users, groups, or supported autogroups { "test_id": "ACL-S05", - "timestamp": "2026-03-17T14:44:20Z", "error": true, "input": { - "policy_file": "acl_policies/acl_s05.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -31,21 +46,31 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "acls": [ { "action": "accept", - "src": ["100.90.199.68"], - "dst": ["autogroup:self:*"] + "src": [ + "100.90.199.68" + ], + "dst": [ + "autogroup:self:*" + ] } ] }, - "api_endpoint": "https://api.tailscale.com/api/v2/tailnet/kratail2tid%40passkey/acl", - "api_response_code": 400, - "api_response_body": { "message": "autogroup:self can only be used with users, groups, or supported autogroups" } + "api_response_body": { + "message": "autogroup:self can only be used with users, groups, or supported autogroups" + } } } diff --git a/hscontrol/policy/v2/testdata/acl_results/ACL-S06.hujson b/hscontrol/policy/v2/testdata/acl_results/ACL-S06.hujson index 2d932d595..aca62f595 100644 --- a/hscontrol/policy/v2/testdata/acl_results/ACL-S06.hujson +++ b/hscontrol/policy/v2/testdata/acl_results/ACL-S06.hujson @@ -5,23 +5,38 @@ // Expected: Error — autogroup:self can only be used with users, groups, or supported autogroups { "test_id": "ACL-S06", - "timestamp": "2026-03-17T14:44:20Z", "error": true, "input": { - "policy_file": "acl_policies/acl_s06.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -31,21 +46,31 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "acls": [ { "action": "accept", - "src": ["webserver"], - "dst": ["autogroup:self:*"] + "src": [ + "webserver" + ], + "dst": [ + "autogroup:self:*" + ] } ] }, - "api_endpoint": "https://api.tailscale.com/api/v2/tailnet/kratail2tid%40passkey/acl", - "api_response_code": 400, - "api_response_body": { "message": "autogroup:self can only be used with users, groups, or supported autogroups" } + "api_response_body": { + "message": "autogroup:self can only be used with users, groups, or supported autogroups" + } } } diff --git a/hscontrol/policy/v2/testdata/acl_results/ACL-S07.hujson b/hscontrol/policy/v2/testdata/acl_results/ACL-S07.hujson index 6d8fab138..1b1c26c5d 100644 --- a/hscontrol/policy/v2/testdata/acl_results/ACL-S07.hujson +++ b/hscontrol/policy/v2/testdata/acl_results/ACL-S07.hujson @@ -7,23 +7,37 @@ // Expected: Rules on tagged-server, user-kris, user-mon, user1 { "test_id": "ACL-S07", - "timestamp": "2026-03-17T14:44:20Z", - "propagation_wait_seconds": 10, "input": { - "policy_file": "acl_policies/acl_s07.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -33,79 +47,37 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "acls": [ { "action": "accept", - "src": ["*"], - "dst": ["autogroup:self:*"] + "src": [ + "*" + ], + "dst": [ + "autogroup:self:*" + ] }, { "action": "accept", - "src": ["*"], - "dst": ["tag:server:22"] + "src": [ + "*" + ], + "dst": [ + "tag:server:22" + ] } ] - }, - "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", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] - }, - "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": { @@ -152,7 +124,10 @@ "user-kris": { "packet_filter_rules": [ { - "SrcIPs": ["100.110.121.96", "fd7a:115c:a1e0::1737:7960"], + "SrcIPs": [ + "100.110.121.96", + "fd7a:115c:a1e0::1737:7960" + ], "DstPorts": [ { "IP": "100.110.121.96", @@ -175,7 +150,10 @@ "user-mon": { "packet_filter_rules": [ { - "SrcIPs": ["100.103.90.82", "fd7a:115c:a1e0::9e37:5a52"], + "SrcIPs": [ + "100.103.90.82", + "fd7a:115c:a1e0::9e37:5a52" + ], "DstPorts": [ { "IP": "100.103.90.82", @@ -198,7 +176,10 @@ "user1": { "packet_filter_rules": [ { - "SrcIPs": ["100.90.199.68", "fd7a:115c:a1e0::2d01:c747"], + "SrcIPs": [ + "100.90.199.68", + "fd7a:115c:a1e0::2d01:c747" + ], "DstPorts": [ { "IP": "100.90.199.68", diff --git a/hscontrol/policy/v2/testdata/acl_results/ACL-S08.hujson b/hscontrol/policy/v2/testdata/acl_results/ACL-S08.hujson index 91ebfcb3f..074352f35 100644 --- a/hscontrol/policy/v2/testdata/acl_results/ACL-S08.hujson +++ b/hscontrol/policy/v2/testdata/acl_results/ACL-S08.hujson @@ -5,23 +5,37 @@ // Expected: Rules on user-kris, user-mon, user1 { "test_id": "ACL-S08", - "timestamp": "2026-03-17T14:44:31Z", - "propagation_wait_seconds": 10, "input": { - "policy_file": "acl_policies/acl_s08.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -31,74 +45,29 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "acls": [ { "action": "accept", - "src": ["*"], - "dst": ["autogroup:self:*", "autogroup:member:22"] + "src": [ + "*" + ], + "dst": [ + "autogroup:self:*", + "autogroup:member:22" + ] } ] - }, - "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", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] - }, - "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": { @@ -120,7 +89,10 @@ "user-kris": { "packet_filter_rules": [ { - "SrcIPs": ["100.110.121.96", "fd7a:115c:a1e0::1737:7960"], + "SrcIPs": [ + "100.110.121.96", + "fd7a:115c:a1e0::1737:7960" + ], "DstPorts": [ { "IP": "100.110.121.96", @@ -167,7 +139,10 @@ "user-mon": { "packet_filter_rules": [ { - "SrcIPs": ["100.103.90.82", "fd7a:115c:a1e0::9e37:5a52"], + "SrcIPs": [ + "100.103.90.82", + "fd7a:115c:a1e0::9e37:5a52" + ], "DstPorts": [ { "IP": "100.103.90.82", @@ -214,7 +189,10 @@ "user1": { "packet_filter_rules": [ { - "SrcIPs": ["100.90.199.68", "fd7a:115c:a1e0::2d01:c747"], + "SrcIPs": [ + "100.90.199.68", + "fd7a:115c:a1e0::2d01:c747" + ], "DstPorts": [ { "IP": "100.90.199.68", diff --git a/hscontrol/policy/v2/testdata/acl_results/ACL-S09.hujson b/hscontrol/policy/v2/testdata/acl_results/ACL-S09.hujson index 6e30fcc30..7f171568f 100644 --- a/hscontrol/policy/v2/testdata/acl_results/ACL-S09.hujson +++ b/hscontrol/policy/v2/testdata/acl_results/ACL-S09.hujson @@ -5,23 +5,37 @@ // Expected: Rules on user-kris, user-mon, user1 { "test_id": "ACL-S09", - "timestamp": "2026-03-17T14:44:41Z", - "propagation_wait_seconds": 10, "input": { - "policy_file": "acl_policies/acl_s09.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -31,74 +45,29 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "acls": [ { "action": "accept", - "src": ["*"], - "dst": ["autogroup:self:22", "autogroup:self:80"] + "src": [ + "*" + ], + "dst": [ + "autogroup:self:22", + "autogroup:self:80" + ] } ] - }, - "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", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] - }, - "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": { @@ -120,7 +89,10 @@ "user-kris": { "packet_filter_rules": [ { - "SrcIPs": ["100.110.121.96", "fd7a:115c:a1e0::1737:7960"], + "SrcIPs": [ + "100.110.121.96", + "fd7a:115c:a1e0::1737:7960" + ], "DstPorts": [ { "IP": "100.110.121.96", @@ -157,7 +129,10 @@ "user-mon": { "packet_filter_rules": [ { - "SrcIPs": ["100.103.90.82", "fd7a:115c:a1e0::9e37:5a52"], + "SrcIPs": [ + "100.103.90.82", + "fd7a:115c:a1e0::9e37:5a52" + ], "DstPorts": [ { "IP": "100.103.90.82", @@ -194,7 +169,10 @@ "user1": { "packet_filter_rules": [ { - "SrcIPs": ["100.90.199.68", "fd7a:115c:a1e0::2d01:c747"], + "SrcIPs": [ + "100.90.199.68", + "fd7a:115c:a1e0::2d01:c747" + ], "DstPorts": [ { "IP": "100.90.199.68", diff --git a/hscontrol/policy/v2/testdata/acl_results/ACL-S10.hujson b/hscontrol/policy/v2/testdata/acl_results/ACL-S10.hujson index b3f66472b..112e19111 100644 --- a/hscontrol/policy/v2/testdata/acl_results/ACL-S10.hujson +++ b/hscontrol/policy/v2/testdata/acl_results/ACL-S10.hujson @@ -7,23 +7,37 @@ // Expected: Rules on user-kris, user-mon, user1 { "test_id": "ACL-S10", - "timestamp": "2026-03-17T14:44:52Z", - "propagation_wait_seconds": 10, "input": { - "policy_file": "acl_policies/acl_s10.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -33,79 +47,37 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "acls": [ { "action": "accept", - "src": ["*"], - "dst": ["autogroup:self:22"] + "src": [ + "*" + ], + "dst": [ + "autogroup:self:22" + ] }, { "action": "accept", - "src": ["*"], - "dst": ["autogroup:self:80"] + "src": [ + "*" + ], + "dst": [ + "autogroup:self:80" + ] } ] - }, - "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", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] - }, - "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": { @@ -127,7 +99,10 @@ "user-kris": { "packet_filter_rules": [ { - "SrcIPs": ["100.110.121.96", "fd7a:115c:a1e0::1737:7960"], + "SrcIPs": [ + "100.110.121.96", + "fd7a:115c:a1e0::1737:7960" + ], "DstPorts": [ { "IP": "100.110.121.96", @@ -164,7 +139,10 @@ "user-mon": { "packet_filter_rules": [ { - "SrcIPs": ["100.103.90.82", "fd7a:115c:a1e0::9e37:5a52"], + "SrcIPs": [ + "100.103.90.82", + "fd7a:115c:a1e0::9e37:5a52" + ], "DstPorts": [ { "IP": "100.103.90.82", @@ -201,7 +179,10 @@ "user1": { "packet_filter_rules": [ { - "SrcIPs": ["100.90.199.68", "fd7a:115c:a1e0::2d01:c747"], + "SrcIPs": [ + "100.90.199.68", + "fd7a:115c:a1e0::2d01:c747" + ], "DstPorts": [ { "IP": "100.90.199.68", diff --git a/hscontrol/policy/v2/testdata/acl_results/ACL-SF01.hujson b/hscontrol/policy/v2/testdata/acl_results/ACL-SF01.hujson index d9165c231..f7eabc406 100644 --- a/hscontrol/policy/v2/testdata/acl_results/ACL-SF01.hujson +++ b/hscontrol/policy/v2/testdata/acl_results/ACL-SF01.hujson @@ -5,23 +5,37 @@ // Expected: Rules on user-kris, user-mon, user1 { "test_id": "ACL-SF01", - "timestamp": "2026-03-17T14:45:02Z", - "propagation_wait_seconds": 10, "input": { - "policy_file": "acl_policies/acl_sf01.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -31,74 +45,28 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "acls": [ { "action": "accept", - "src": ["autogroup:member"], - "dst": ["autogroup:self:22"] + "src": [ + "autogroup:member" + ], + "dst": [ + "autogroup:self:22" + ] } ] - }, - "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", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] - }, - "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": { @@ -120,7 +88,10 @@ "user-kris": { "packet_filter_rules": [ { - "SrcIPs": ["100.110.121.96", "fd7a:115c:a1e0::1737:7960"], + "SrcIPs": [ + "100.110.121.96", + "fd7a:115c:a1e0::1737:7960" + ], "DstPorts": [ { "IP": "100.110.121.96", @@ -143,7 +114,10 @@ "user-mon": { "packet_filter_rules": [ { - "SrcIPs": ["100.103.90.82", "fd7a:115c:a1e0::9e37:5a52"], + "SrcIPs": [ + "100.103.90.82", + "fd7a:115c:a1e0::9e37:5a52" + ], "DstPorts": [ { "IP": "100.103.90.82", @@ -166,7 +140,10 @@ "user1": { "packet_filter_rules": [ { - "SrcIPs": ["100.90.199.68", "fd7a:115c:a1e0::2d01:c747"], + "SrcIPs": [ + "100.90.199.68", + "fd7a:115c:a1e0::2d01:c747" + ], "DstPorts": [ { "IP": "100.90.199.68", diff --git a/hscontrol/policy/v2/testdata/acl_results/ACL-SF02.hujson b/hscontrol/policy/v2/testdata/acl_results/ACL-SF02.hujson index 65ac95747..a07218bee 100644 --- a/hscontrol/policy/v2/testdata/acl_results/ACL-SF02.hujson +++ b/hscontrol/policy/v2/testdata/acl_results/ACL-SF02.hujson @@ -5,23 +5,37 @@ // Expected: Rules on user-kris, user1 { "test_id": "ACL-SF02", - "timestamp": "2026-03-17T14:45:13Z", - "propagation_wait_seconds": 10, "input": { - "policy_file": "acl_policies/acl_sf02.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -31,74 +45,28 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "acls": [ { "action": "accept", - "src": ["group:developers"], - "dst": ["autogroup:self:*"] + "src": [ + "group:developers" + ], + "dst": [ + "autogroup:self:*" + ] } ] - }, - "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", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] - }, - "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": { @@ -120,7 +88,10 @@ "user-kris": { "packet_filter_rules": [ { - "SrcIPs": ["100.110.121.96", "fd7a:115c:a1e0::1737:7960"], + "SrcIPs": [ + "100.110.121.96", + "fd7a:115c:a1e0::1737:7960" + ], "DstPorts": [ { "IP": "100.110.121.96", @@ -146,7 +117,10 @@ "user1": { "packet_filter_rules": [ { - "SrcIPs": ["100.90.199.68", "fd7a:115c:a1e0::2d01:c747"], + "SrcIPs": [ + "100.90.199.68", + "fd7a:115c:a1e0::2d01:c747" + ], "DstPorts": [ { "IP": "100.90.199.68", diff --git a/hscontrol/policy/v2/testdata/acl_results/ACL-SF03.hujson b/hscontrol/policy/v2/testdata/acl_results/ACL-SF03.hujson index 7b0cbe91f..744aca191 100644 --- a/hscontrol/policy/v2/testdata/acl_results/ACL-SF03.hujson +++ b/hscontrol/policy/v2/testdata/acl_results/ACL-SF03.hujson @@ -5,23 +5,38 @@ // Expected: Error — autogroup:self can only be used with users, groups, or supported autogroups { "test_id": "ACL-SF03", - "timestamp": "2026-03-17T14:45:23Z", "error": true, "input": { - "policy_file": "acl_policies/acl_sf03.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -31,21 +46,31 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "acls": [ { "action": "accept", - "src": ["tag:client"], - "dst": ["autogroup:self:*"] + "src": [ + "tag:client" + ], + "dst": [ + "autogroup:self:*" + ] } ] }, - "api_endpoint": "https://api.tailscale.com/api/v2/tailnet/kratail2tid%40passkey/acl", - "api_response_code": 400, - "api_response_body": { "message": "autogroup:self can only be used with users, groups, or supported autogroups" } + "api_response_body": { + "message": "autogroup:self can only be used with users, groups, or supported autogroups" + } } } diff --git a/hscontrol/policy/v2/testdata/acl_results/ACL-SF04.hujson b/hscontrol/policy/v2/testdata/acl_results/ACL-SF04.hujson index 6fad9191a..5c1e37037 100644 --- a/hscontrol/policy/v2/testdata/acl_results/ACL-SF04.hujson +++ b/hscontrol/policy/v2/testdata/acl_results/ACL-SF04.hujson @@ -5,23 +5,38 @@ // Expected: Error — autogroup:self can only be used with users, groups, or supported autogroups { "test_id": "ACL-SF04", - "timestamp": "2026-03-17T14:45:23Z", "error": true, "input": { - "policy_file": "acl_policies/acl_sf04.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -31,21 +46,31 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "acls": [ { "action": "accept", - "src": ["webserver"], - "dst": ["autogroup:self:*"] + "src": [ + "webserver" + ], + "dst": [ + "autogroup:self:*" + ] } ] }, - "api_endpoint": "https://api.tailscale.com/api/v2/tailnet/kratail2tid%40passkey/acl", - "api_response_code": 400, - "api_response_body": { "message": "autogroup:self can only be used with users, groups, or supported autogroups" } + "api_response_body": { + "message": "autogroup:self can only be used with users, groups, or supported autogroups" + } } } diff --git a/hscontrol/policy/v2/testdata/acl_results/ACL-SF05.hujson b/hscontrol/policy/v2/testdata/acl_results/ACL-SF05.hujson index a12e82276..f4f4b21c4 100644 --- a/hscontrol/policy/v2/testdata/acl_results/ACL-SF05.hujson +++ b/hscontrol/policy/v2/testdata/acl_results/ACL-SF05.hujson @@ -5,23 +5,38 @@ // Expected: Error — autogroup:self can only be used with users, groups, or supported autogroups { "test_id": "ACL-SF05", - "timestamp": "2026-03-17T14:45:24Z", "error": true, "input": { - "policy_file": "acl_policies/acl_sf05.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -31,21 +46,31 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "acls": [ { "action": "accept", - "src": ["100.90.199.68"], - "dst": ["autogroup:self:*"] + "src": [ + "100.90.199.68" + ], + "dst": [ + "autogroup:self:*" + ] } ] }, - "api_endpoint": "https://api.tailscale.com/api/v2/tailnet/kratail2tid%40passkey/acl", - "api_response_code": 400, - "api_response_body": { "message": "autogroup:self can only be used with users, groups, or supported autogroups" } + "api_response_body": { + "message": "autogroup:self can only be used with users, groups, or supported autogroups" + } } } diff --git a/hscontrol/policy/v2/testdata/acl_results/ACL-SF06.hujson b/hscontrol/policy/v2/testdata/acl_results/ACL-SF06.hujson index 84be509a2..8b40565fe 100644 --- a/hscontrol/policy/v2/testdata/acl_results/ACL-SF06.hujson +++ b/hscontrol/policy/v2/testdata/acl_results/ACL-SF06.hujson @@ -5,23 +5,37 @@ // Expected: Rules on tagged-server, user-kris, user-mon, user1 { "test_id": "ACL-SF06", - "timestamp": "2026-03-17T14:45:24Z", - "propagation_wait_seconds": 10, "input": { - "policy_file": "acl_policies/acl_sf06.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -31,74 +45,29 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "acls": [ { "action": "accept", - "src": ["*"], - "dst": ["autogroup:self:*", "tag:server:22"] + "src": [ + "*" + ], + "dst": [ + "autogroup:self:*", + "tag:server:22" + ] } ] - }, - "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", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] - }, - "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": { @@ -145,7 +114,10 @@ "user-kris": { "packet_filter_rules": [ { - "SrcIPs": ["100.110.121.96", "fd7a:115c:a1e0::1737:7960"], + "SrcIPs": [ + "100.110.121.96", + "fd7a:115c:a1e0::1737:7960" + ], "DstPorts": [ { "IP": "100.110.121.96", @@ -168,7 +140,10 @@ "user-mon": { "packet_filter_rules": [ { - "SrcIPs": ["100.103.90.82", "fd7a:115c:a1e0::9e37:5a52"], + "SrcIPs": [ + "100.103.90.82", + "fd7a:115c:a1e0::9e37:5a52" + ], "DstPorts": [ { "IP": "100.103.90.82", @@ -191,7 +166,10 @@ "user1": { "packet_filter_rules": [ { - "SrcIPs": ["100.90.199.68", "fd7a:115c:a1e0::2d01:c747"], + "SrcIPs": [ + "100.90.199.68", + "fd7a:115c:a1e0::2d01:c747" + ], "DstPorts": [ { "IP": "100.90.199.68", diff --git a/hscontrol/policy/v2/testdata/acl_results/ACL-SF07.hujson b/hscontrol/policy/v2/testdata/acl_results/ACL-SF07.hujson index 286a300e2..c0504e034 100644 --- a/hscontrol/policy/v2/testdata/acl_results/ACL-SF07.hujson +++ b/hscontrol/policy/v2/testdata/acl_results/ACL-SF07.hujson @@ -5,23 +5,37 @@ // Expected: Rules on user-kris, user-mon, user1 { "test_id": "ACL-SF07", - "timestamp": "2026-03-17T14:45:34Z", - "propagation_wait_seconds": 10, "input": { - "policy_file": "acl_policies/acl_sf07.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -31,74 +45,29 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "acls": [ { "action": "accept", - "src": ["*"], - "dst": ["autogroup:self:*", "group:admins:22"] + "src": [ + "*" + ], + "dst": [ + "autogroup:self:*", + "group:admins:22" + ] } ] - }, - "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", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] - }, - "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": { @@ -120,7 +89,10 @@ "user-kris": { "packet_filter_rules": [ { - "SrcIPs": ["100.110.121.96", "fd7a:115c:a1e0::1737:7960"], + "SrcIPs": [ + "100.110.121.96", + "fd7a:115c:a1e0::1737:7960" + ], "DstPorts": [ { "IP": "100.110.121.96", @@ -143,7 +115,10 @@ "user-mon": { "packet_filter_rules": [ { - "SrcIPs": ["100.103.90.82", "fd7a:115c:a1e0::9e37:5a52"], + "SrcIPs": [ + "100.103.90.82", + "fd7a:115c:a1e0::9e37:5a52" + ], "DstPorts": [ { "IP": "100.103.90.82", @@ -190,7 +165,10 @@ ] }, { - "SrcIPs": ["100.90.199.68", "fd7a:115c:a1e0::2d01:c747"], + "SrcIPs": [ + "100.90.199.68", + "fd7a:115c:a1e0::2d01:c747" + ], "DstPorts": [ { "IP": "100.90.199.68", diff --git a/hscontrol/policy/v2/testdata/acl_results/ACL-SF08.hujson b/hscontrol/policy/v2/testdata/acl_results/ACL-SF08.hujson index 527756913..f455bcba3 100644 --- a/hscontrol/policy/v2/testdata/acl_results/ACL-SF08.hujson +++ b/hscontrol/policy/v2/testdata/acl_results/ACL-SF08.hujson @@ -5,23 +5,38 @@ // Expected: Error — autogroup:self can only be used with users, groups, or supported autogroups { "test_id": "ACL-SF08", - "timestamp": "2026-03-17T14:45:45Z", "error": true, "input": { - "policy_file": "acl_policies/acl_sf08.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -31,21 +46,32 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "acls": [ { "action": "accept", - "src": ["autogroup:member", "tag:client"], - "dst": ["autogroup:self:*"] + "src": [ + "autogroup:member", + "tag:client" + ], + "dst": [ + "autogroup:self:*" + ] } ] }, - "api_endpoint": "https://api.tailscale.com/api/v2/tailnet/kratail2tid%40passkey/acl", - "api_response_code": 400, - "api_response_body": { "message": "autogroup:self can only be used with users, groups, or supported autogroups" } + "api_response_body": { + "message": "autogroup:self can only be used with users, groups, or supported autogroups" + } } } diff --git a/hscontrol/policy/v2/testdata/acl_results/ACL-SF09.hujson b/hscontrol/policy/v2/testdata/acl_results/ACL-SF09.hujson index 7b3d9efa9..cf60379b2 100644 --- a/hscontrol/policy/v2/testdata/acl_results/ACL-SF09.hujson +++ b/hscontrol/policy/v2/testdata/acl_results/ACL-SF09.hujson @@ -7,23 +7,37 @@ // Expected: Rules on user-kris, user-mon, user1 { "test_id": "ACL-SF09", - "timestamp": "2026-03-17T14:45:45Z", - "propagation_wait_seconds": 10, "input": { - "policy_file": "acl_policies/acl_sf09.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -33,79 +47,37 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "acls": [ { "action": "accept", - "src": ["*"], - "dst": ["autogroup:self:22"] + "src": [ + "*" + ], + "dst": [ + "autogroup:self:22" + ] }, { "action": "accept", - "src": ["*"], - "dst": ["autogroup:self:80"] + "src": [ + "*" + ], + "dst": [ + "autogroup:self:80" + ] } ] - }, - "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", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] - }, - "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": { @@ -127,7 +99,10 @@ "user-kris": { "packet_filter_rules": [ { - "SrcIPs": ["100.110.121.96", "fd7a:115c:a1e0::1737:7960"], + "SrcIPs": [ + "100.110.121.96", + "fd7a:115c:a1e0::1737:7960" + ], "DstPorts": [ { "IP": "100.110.121.96", @@ -164,7 +139,10 @@ "user-mon": { "packet_filter_rules": [ { - "SrcIPs": ["100.103.90.82", "fd7a:115c:a1e0::9e37:5a52"], + "SrcIPs": [ + "100.103.90.82", + "fd7a:115c:a1e0::9e37:5a52" + ], "DstPorts": [ { "IP": "100.103.90.82", @@ -201,7 +179,10 @@ "user1": { "packet_filter_rules": [ { - "SrcIPs": ["100.90.199.68", "fd7a:115c:a1e0::2d01:c747"], + "SrcIPs": [ + "100.90.199.68", + "fd7a:115c:a1e0::2d01:c747" + ], "DstPorts": [ { "IP": "100.90.199.68", diff --git a/hscontrol/policy/v2/testdata/acl_results/ACL-SF10.hujson b/hscontrol/policy/v2/testdata/acl_results/ACL-SF10.hujson index fb182f011..24f061b8b 100644 --- a/hscontrol/policy/v2/testdata/acl_results/ACL-SF10.hujson +++ b/hscontrol/policy/v2/testdata/acl_results/ACL-SF10.hujson @@ -5,23 +5,37 @@ // Expected: Rules on user-kris, user-mon, user1 { "test_id": "ACL-SF10", - "timestamp": "2026-03-17T14:45:55Z", - "propagation_wait_seconds": 10, "input": { - "policy_file": "acl_policies/acl_sf10.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -31,74 +45,29 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "acls": [ { "action": "accept", - "src": ["*"], - "dst": ["autogroup:self:22", "autogroup:self:80"] + "src": [ + "*" + ], + "dst": [ + "autogroup:self:22", + "autogroup:self:80" + ] } ] - }, - "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", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] - }, - "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": { @@ -120,7 +89,10 @@ "user-kris": { "packet_filter_rules": [ { - "SrcIPs": ["100.110.121.96", "fd7a:115c:a1e0::1737:7960"], + "SrcIPs": [ + "100.110.121.96", + "fd7a:115c:a1e0::1737:7960" + ], "DstPorts": [ { "IP": "100.110.121.96", @@ -157,7 +129,10 @@ "user-mon": { "packet_filter_rules": [ { - "SrcIPs": ["100.103.90.82", "fd7a:115c:a1e0::9e37:5a52"], + "SrcIPs": [ + "100.103.90.82", + "fd7a:115c:a1e0::9e37:5a52" + ], "DstPorts": [ { "IP": "100.103.90.82", @@ -194,7 +169,10 @@ "user1": { "packet_filter_rules": [ { - "SrcIPs": ["100.90.199.68", "fd7a:115c:a1e0::2d01:c747"], + "SrcIPs": [ + "100.90.199.68", + "fd7a:115c:a1e0::2d01:c747" + ], "DstPorts": [ { "IP": "100.90.199.68", diff --git a/hscontrol/policy/v2/testdata/acl_results/ACL-SF11.hujson b/hscontrol/policy/v2/testdata/acl_results/ACL-SF11.hujson index 1efe4e600..afc9409c2 100644 --- a/hscontrol/policy/v2/testdata/acl_results/ACL-SF11.hujson +++ b/hscontrol/policy/v2/testdata/acl_results/ACL-SF11.hujson @@ -5,23 +5,37 @@ // Expected: Rules on user-kris, user-mon, user1 { "test_id": "ACL-SF11", - "timestamp": "2026-03-17T14:46:06Z", - "propagation_wait_seconds": 10, "input": { - "policy_file": "acl_policies/acl_sf11.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -31,74 +45,29 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "acls": [ { "action": "accept", - "src": ["*"], - "dst": ["autogroup:self:22", "kratail2tid@passkey:22"] + "src": [ + "*" + ], + "dst": [ + "autogroup:self:22", + "kratail2tid@passkey:22" + ] } ] - }, - "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", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] - }, - "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": { @@ -120,7 +89,10 @@ "user-kris": { "packet_filter_rules": [ { - "SrcIPs": ["100.110.121.96", "fd7a:115c:a1e0::1737:7960"], + "SrcIPs": [ + "100.110.121.96", + "fd7a:115c:a1e0::1737:7960" + ], "DstPorts": [ { "IP": "100.110.121.96", @@ -143,7 +115,10 @@ "user-mon": { "packet_filter_rules": [ { - "SrcIPs": ["100.103.90.82", "fd7a:115c:a1e0::9e37:5a52"], + "SrcIPs": [ + "100.103.90.82", + "fd7a:115c:a1e0::9e37:5a52" + ], "DstPorts": [ { "IP": "100.103.90.82", @@ -190,7 +165,10 @@ ] }, { - "SrcIPs": ["100.90.199.68", "fd7a:115c:a1e0::2d01:c747"], + "SrcIPs": [ + "100.90.199.68", + "fd7a:115c:a1e0::2d01:c747" + ], "DstPorts": [ { "IP": "100.90.199.68", diff --git a/hscontrol/policy/v2/testdata/acl_results/ACL-SF12.hujson b/hscontrol/policy/v2/testdata/acl_results/ACL-SF12.hujson index 0841551f5..1bd7e4d85 100644 --- a/hscontrol/policy/v2/testdata/acl_results/ACL-SF12.hujson +++ b/hscontrol/policy/v2/testdata/acl_results/ACL-SF12.hujson @@ -5,23 +5,37 @@ // Expected: Rules on user-kris { "test_id": "ACL-SF12", - "timestamp": "2026-03-17T14:46:16Z", - "propagation_wait_seconds": 10, "input": { - "policy_file": "acl_policies/acl_sf12.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -31,74 +45,28 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "acls": [ { "action": "accept", - "src": ["kristoffer@dalby.cc"], - "dst": ["autogroup:self:*"] + "src": [ + "kristoffer@dalby.cc" + ], + "dst": [ + "autogroup:self:*" + ] } ] - }, - "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", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] - }, - "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": { @@ -120,7 +88,10 @@ "user-kris": { "packet_filter_rules": [ { - "SrcIPs": ["100.110.121.96", "fd7a:115c:a1e0::1737:7960"], + "SrcIPs": [ + "100.110.121.96", + "fd7a:115c:a1e0::1737:7960" + ], "DstPorts": [ { "IP": "100.110.121.96", diff --git a/hscontrol/policy/v2/testdata/acl_results/ACL-SF13.hujson b/hscontrol/policy/v2/testdata/acl_results/ACL-SF13.hujson index b9e60aca0..17d361839 100644 --- a/hscontrol/policy/v2/testdata/acl_results/ACL-SF13.hujson +++ b/hscontrol/policy/v2/testdata/acl_results/ACL-SF13.hujson @@ -5,23 +5,37 @@ // Expected: Rules on user-mon { "test_id": "ACL-SF13", - "timestamp": "2026-03-17T14:46:27Z", - "propagation_wait_seconds": 10, "input": { - "policy_file": "acl_policies/acl_sf13.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -31,74 +45,28 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "acls": [ { "action": "accept", - "src": ["group:monitors"], - "dst": ["autogroup:self:22"] + "src": [ + "group:monitors" + ], + "dst": [ + "autogroup:self:22" + ] } ] - }, - "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", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] - }, - "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": { @@ -123,7 +91,10 @@ "user-mon": { "packet_filter_rules": [ { - "SrcIPs": ["100.103.90.82", "fd7a:115c:a1e0::9e37:5a52"], + "SrcIPs": [ + "100.103.90.82", + "fd7a:115c:a1e0::9e37:5a52" + ], "DstPorts": [ { "IP": "100.103.90.82", diff --git a/hscontrol/policy/v2/testdata/acl_results/ACL-T01.hujson b/hscontrol/policy/v2/testdata/acl_results/ACL-T01.hujson index c8722a6f6..879f10060 100644 --- a/hscontrol/policy/v2/testdata/acl_results/ACL-T01.hujson +++ b/hscontrol/policy/v2/testdata/acl_results/ACL-T01.hujson @@ -5,23 +5,37 @@ // Expected: Rules on tagged-server { "test_id": "ACL-T01", - "timestamp": "2026-03-17T14:46:37Z", - "propagation_wait_seconds": 10, "input": { - "policy_file": "acl_policies/acl_t01.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -31,74 +45,28 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "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"] + "src": [ + "tag:client" + ], + "dst": [ + "tag:server:22" + ] } ] - }, - "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", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] - }, - "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": { @@ -117,7 +85,10 @@ "tagged-server": { "packet_filter_rules": [ { - "SrcIPs": ["100.83.200.69", "fd7a:115c:a1e0::c537:c845"], + "SrcIPs": [ + "100.83.200.69", + "fd7a:115c:a1e0::c537:c845" + ], "DstPorts": [ { "IP": "100.108.74.26", diff --git a/hscontrol/policy/v2/testdata/acl_results/ACL-T02.hujson b/hscontrol/policy/v2/testdata/acl_results/ACL-T02.hujson index ca7e3fc95..e95b001af 100644 --- a/hscontrol/policy/v2/testdata/acl_results/ACL-T02.hujson +++ b/hscontrol/policy/v2/testdata/acl_results/ACL-T02.hujson @@ -5,23 +5,37 @@ // Expected: Rules on 8 of 8 nodes { "test_id": "ACL-T02", - "timestamp": "2026-03-17T14:46:48Z", - "propagation_wait_seconds": 10, "input": { - "policy_file": "acl_policies/acl_t02.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -31,81 +45,38 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "acls": [ { "action": "accept", - "src": ["tag:client"], - "dst": ["*:*"] + "src": [ + "tag:client" + ], + "dst": [ + "*:*" + ] } ] - }, - "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", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] - }, - "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": [ { - "SrcIPs": ["100.83.200.69", "fd7a:115c:a1e0::c537:c845"], + "SrcIPs": [ + "100.83.200.69", + "fd7a:115c:a1e0::c537:c845" + ], "DstPorts": [ { "IP": "*", @@ -121,7 +92,10 @@ "subnet-router": { "packet_filter_rules": [ { - "SrcIPs": ["100.83.200.69", "fd7a:115c:a1e0::c537:c845"], + "SrcIPs": [ + "100.83.200.69", + "fd7a:115c:a1e0::c537:c845" + ], "DstPorts": [ { "IP": "*", @@ -137,7 +111,10 @@ "tagged-client": { "packet_filter_rules": [ { - "SrcIPs": ["100.83.200.69", "fd7a:115c:a1e0::c537:c845"], + "SrcIPs": [ + "100.83.200.69", + "fd7a:115c:a1e0::c537:c845" + ], "DstPorts": [ { "IP": "*", @@ -153,7 +130,10 @@ "tagged-prod": { "packet_filter_rules": [ { - "SrcIPs": ["100.83.200.69", "fd7a:115c:a1e0::c537:c845"], + "SrcIPs": [ + "100.83.200.69", + "fd7a:115c:a1e0::c537:c845" + ], "DstPorts": [ { "IP": "*", @@ -169,7 +149,10 @@ "tagged-server": { "packet_filter_rules": [ { - "SrcIPs": ["100.83.200.69", "fd7a:115c:a1e0::c537:c845"], + "SrcIPs": [ + "100.83.200.69", + "fd7a:115c:a1e0::c537:c845" + ], "DstPorts": [ { "IP": "*", @@ -185,7 +168,10 @@ "user-kris": { "packet_filter_rules": [ { - "SrcIPs": ["100.83.200.69", "fd7a:115c:a1e0::c537:c845"], + "SrcIPs": [ + "100.83.200.69", + "fd7a:115c:a1e0::c537:c845" + ], "DstPorts": [ { "IP": "*", @@ -201,7 +187,10 @@ "user-mon": { "packet_filter_rules": [ { - "SrcIPs": ["100.83.200.69", "fd7a:115c:a1e0::c537:c845"], + "SrcIPs": [ + "100.83.200.69", + "fd7a:115c:a1e0::c537:c845" + ], "DstPorts": [ { "IP": "*", @@ -217,7 +206,10 @@ "user1": { "packet_filter_rules": [ { - "SrcIPs": ["100.83.200.69", "fd7a:115c:a1e0::c537:c845"], + "SrcIPs": [ + "100.83.200.69", + "fd7a:115c:a1e0::c537:c845" + ], "DstPorts": [ { "IP": "*", diff --git a/hscontrol/policy/v2/testdata/acl_results/ACL-T03.hujson b/hscontrol/policy/v2/testdata/acl_results/ACL-T03.hujson index 01e8598b3..072e28a7d 100644 --- a/hscontrol/policy/v2/testdata/acl_results/ACL-T03.hujson +++ b/hscontrol/policy/v2/testdata/acl_results/ACL-T03.hujson @@ -5,23 +5,37 @@ // Expected: Rules on tagged-server { "test_id": "ACL-T03", - "timestamp": "2026-03-17T14:46:58Z", - "propagation_wait_seconds": 10, "input": { - "policy_file": "acl_policies/acl_t03.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -31,74 +45,29 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "acls": [ { "action": "accept", - "src": ["tag:client", "tag:prod"], - "dst": ["tag:server:22"] + "src": [ + "tag:client", + "tag:prod" + ], + "dst": [ + "tag:server:22" + ] } ] - }, - "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", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] - }, - "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": { @@ -117,7 +86,12 @@ "tagged-server": { "packet_filter_rules": [ { - "SrcIPs": ["100.103.8.15", "100.83.200.69", "fd7a:115c:a1e0::5b37:80f", "fd7a:115c:a1e0::c537:c845"], + "SrcIPs": [ + "100.103.8.15", + "100.83.200.69", + "fd7a:115c:a1e0::5b37:80f", + "fd7a:115c:a1e0::c537:c845" + ], "DstPorts": [ { "IP": "100.108.74.26", diff --git a/hscontrol/policy/v2/testdata/acl_results/ACL-T04.hujson b/hscontrol/policy/v2/testdata/acl_results/ACL-T04.hujson index 7dfb0040a..d35e77fc6 100644 --- a/hscontrol/policy/v2/testdata/acl_results/ACL-T04.hujson +++ b/hscontrol/policy/v2/testdata/acl_results/ACL-T04.hujson @@ -5,23 +5,37 @@ // Expected: Rules on tagged-server { "test_id": "ACL-T04", - "timestamp": "2026-03-17T14:47:09Z", - "propagation_wait_seconds": 10, "input": { - "policy_file": "acl_policies/acl_t04.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -31,74 +45,28 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "acls": [ { "action": "accept", - "src": ["*"], - "dst": ["tag:server:22"] + "src": [ + "*" + ], + "dst": [ + "tag:server:22" + ] } ] - }, - "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", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] - }, - "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": { diff --git a/hscontrol/policy/v2/testdata/acl_results/ACL-T05.hujson b/hscontrol/policy/v2/testdata/acl_results/ACL-T05.hujson index bc8f35910..5d758cc0e 100644 --- a/hscontrol/policy/v2/testdata/acl_results/ACL-T05.hujson +++ b/hscontrol/policy/v2/testdata/acl_results/ACL-T05.hujson @@ -5,23 +5,37 @@ // Expected: Rules on subnet-router, tagged-prod, tagged-server { "test_id": "ACL-T05", - "timestamp": "2026-03-17T14:47:19Z", - "propagation_wait_seconds": 10, "input": { - "policy_file": "acl_policies/acl_t05.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -31,74 +45,30 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "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", "tag:prod:5432", "tag:router:80"] + "src": [ + "tag:client" + ], + "dst": [ + "tag:server:22", + "tag:prod:5432", + "tag:router:80" + ] } ] - }, - "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", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] - }, - "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": { @@ -108,7 +78,10 @@ "subnet-router": { "packet_filter_rules": [ { - "SrcIPs": ["100.83.200.69", "fd7a:115c:a1e0::c537:c845"], + "SrcIPs": [ + "100.83.200.69", + "fd7a:115c:a1e0::c537:c845" + ], "DstPorts": [ { "IP": "100.92.142.61", @@ -134,7 +107,10 @@ "tagged-prod": { "packet_filter_rules": [ { - "SrcIPs": ["100.83.200.69", "fd7a:115c:a1e0::c537:c845"], + "SrcIPs": [ + "100.83.200.69", + "fd7a:115c:a1e0::c537:c845" + ], "DstPorts": [ { "IP": "100.103.8.15", @@ -157,7 +133,10 @@ "tagged-server": { "packet_filter_rules": [ { - "SrcIPs": ["100.83.200.69", "fd7a:115c:a1e0::c537:c845"], + "SrcIPs": [ + "100.83.200.69", + "fd7a:115c:a1e0::c537:c845" + ], "DstPorts": [ { "IP": "100.108.74.26", diff --git a/hscontrol/policy/v2/testdata/acl_results/ACL-T06.hujson b/hscontrol/policy/v2/testdata/acl_results/ACL-T06.hujson index 479a43809..181d90ed1 100644 --- a/hscontrol/policy/v2/testdata/acl_results/ACL-T06.hujson +++ b/hscontrol/policy/v2/testdata/acl_results/ACL-T06.hujson @@ -5,23 +5,37 @@ // Expected: Rules on tagged-prod { "test_id": "ACL-T06", - "timestamp": "2026-03-17T14:47:29Z", - "propagation_wait_seconds": 10, "input": { - "policy_file": "acl_policies/acl_t06.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -31,74 +45,28 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "acls": [ { "action": "accept", - "src": ["autogroup:tagged"], - "dst": ["tag:prod:5432"] + "src": [ + "autogroup:tagged" + ], + "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", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] - }, - "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": { diff --git a/hscontrol/policy/v2/testdata/acl_results/ACL-T07.hujson b/hscontrol/policy/v2/testdata/acl_results/ACL-T07.hujson index 8dd47d6f2..179d98da6 100644 --- a/hscontrol/policy/v2/testdata/acl_results/ACL-T07.hujson +++ b/hscontrol/policy/v2/testdata/acl_results/ACL-T07.hujson @@ -5,23 +5,37 @@ // Expected: Rules on tagged-prod { "test_id": "ACL-T07", - "timestamp": "2026-03-17T14:47:40Z", - "propagation_wait_seconds": 10, "input": { - "policy_file": "acl_policies/acl_t07.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -31,74 +45,28 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "acls": [ { "action": "accept", - "src": ["tag:server"], - "dst": ["tag:prod:5432"] + "src": [ + "tag:server" + ], + "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", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] - }, - "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": { @@ -114,7 +82,10 @@ "tagged-prod": { "packet_filter_rules": [ { - "SrcIPs": ["100.108.74.26", "fd7a:115c:a1e0::b901:4a87"], + "SrcIPs": [ + "100.108.74.26", + "fd7a:115c:a1e0::b901:4a87" + ], "DstPorts": [ { "IP": "100.103.8.15", diff --git a/hscontrol/policy/v2/testdata/acl_results/ACL-T08.hujson b/hscontrol/policy/v2/testdata/acl_results/ACL-T08.hujson index af127da18..2ab2e0e73 100644 --- a/hscontrol/policy/v2/testdata/acl_results/ACL-T08.hujson +++ b/hscontrol/policy/v2/testdata/acl_results/ACL-T08.hujson @@ -5,23 +5,37 @@ // Expected: Rules on subnet-router { "test_id": "ACL-T08", - "timestamp": "2026-03-17T14:47:50Z", - "propagation_wait_seconds": 10, "input": { - "policy_file": "acl_policies/acl_t08.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -31,74 +45,30 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "acls": [ { "action": "accept", - "src": ["tag:client", "tag:server", "tag:prod"], - "dst": ["tag:router:*"] + "src": [ + "tag:client", + "tag:server", + "tag:prod" + ], + "dst": [ + "tag:router:*" + ] } ] - }, - "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", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] - }, - "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": { diff --git a/hscontrol/policy/v2/testdata/acl_results/ACL-T09.hujson b/hscontrol/policy/v2/testdata/acl_results/ACL-T09.hujson index 9816989a5..5f9e088ae 100644 --- a/hscontrol/policy/v2/testdata/acl_results/ACL-T09.hujson +++ b/hscontrol/policy/v2/testdata/acl_results/ACL-T09.hujson @@ -5,23 +5,37 @@ // Expected: Rules on tagged-server { "test_id": "ACL-T09", - "timestamp": "2026-03-17T14:48:01Z", - "propagation_wait_seconds": 10, "input": { - "policy_file": "acl_policies/acl_t09.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -31,74 +45,28 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "acls": [ { "action": "accept", - "src": ["tag:client"], - "dst": ["100.108.74.26:22"] + "src": [ + "tag:client" + ], + "dst": [ + "100.108.74.26:22" + ] } ] - }, - "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", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] - }, - "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": { @@ -117,7 +85,10 @@ "tagged-server": { "packet_filter_rules": [ { - "SrcIPs": ["100.83.200.69", "fd7a:115c:a1e0::c537:c845"], + "SrcIPs": [ + "100.83.200.69", + "fd7a:115c:a1e0::c537:c845" + ], "DstPorts": [ { "IP": "100.108.74.26", diff --git a/hscontrol/policy/v2/testdata/acl_results/ACL-T10.hujson b/hscontrol/policy/v2/testdata/acl_results/ACL-T10.hujson index 895764812..527375ee2 100644 --- a/hscontrol/policy/v2/testdata/acl_results/ACL-T10.hujson +++ b/hscontrol/policy/v2/testdata/acl_results/ACL-T10.hujson @@ -5,23 +5,37 @@ // Expected: Rules on tagged-server { "test_id": "ACL-T10", - "timestamp": "2026-03-17T14:48:11Z", - "propagation_wait_seconds": 10, "input": { - "policy_file": "acl_policies/acl_t10.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -31,74 +45,28 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "acls": [ { "action": "accept", - "src": ["100.83.200.69"], - "dst": ["tag:server:22"] + "src": [ + "100.83.200.69" + ], + "dst": [ + "tag:server:22" + ] } ] - }, - "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", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] - }, - "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": { @@ -117,7 +85,9 @@ "tagged-server": { "packet_filter_rules": [ { - "SrcIPs": ["100.83.200.69"], + "SrcIPs": [ + "100.83.200.69" + ], "DstPorts": [ { "IP": "100.108.74.26", diff --git a/hscontrol/policy/v2/testdata/acl_results/ACL-U01.hujson b/hscontrol/policy/v2/testdata/acl_results/ACL-U01.hujson index 45e8f8520..a4f8211ff 100644 --- a/hscontrol/policy/v2/testdata/acl_results/ACL-U01.hujson +++ b/hscontrol/policy/v2/testdata/acl_results/ACL-U01.hujson @@ -5,23 +5,37 @@ // Expected: Rules on 8 of 8 nodes { "test_id": "ACL-U01", - "timestamp": "2026-03-17T14:48:22Z", - "propagation_wait_seconds": 10, "input": { - "policy_file": "acl_policies/acl_u01.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -31,81 +45,38 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "acls": [ { "action": "accept", - "src": ["kratail2tid@passkey"], - "dst": ["*:*"] + "src": [ + "kratail2tid@passkey" + ], + "dst": [ + "*:*" + ] } ] - }, - "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", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] - }, - "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": [ { - "SrcIPs": ["100.90.199.68", "fd7a:115c:a1e0::2d01:c747"], + "SrcIPs": [ + "100.90.199.68", + "fd7a:115c:a1e0::2d01:c747" + ], "DstPorts": [ { "IP": "*", @@ -121,7 +92,10 @@ "subnet-router": { "packet_filter_rules": [ { - "SrcIPs": ["100.90.199.68", "fd7a:115c:a1e0::2d01:c747"], + "SrcIPs": [ + "100.90.199.68", + "fd7a:115c:a1e0::2d01:c747" + ], "DstPorts": [ { "IP": "*", @@ -137,7 +111,10 @@ "tagged-client": { "packet_filter_rules": [ { - "SrcIPs": ["100.90.199.68", "fd7a:115c:a1e0::2d01:c747"], + "SrcIPs": [ + "100.90.199.68", + "fd7a:115c:a1e0::2d01:c747" + ], "DstPorts": [ { "IP": "*", @@ -153,7 +130,10 @@ "tagged-prod": { "packet_filter_rules": [ { - "SrcIPs": ["100.90.199.68", "fd7a:115c:a1e0::2d01:c747"], + "SrcIPs": [ + "100.90.199.68", + "fd7a:115c:a1e0::2d01:c747" + ], "DstPorts": [ { "IP": "*", @@ -169,7 +149,10 @@ "tagged-server": { "packet_filter_rules": [ { - "SrcIPs": ["100.90.199.68", "fd7a:115c:a1e0::2d01:c747"], + "SrcIPs": [ + "100.90.199.68", + "fd7a:115c:a1e0::2d01:c747" + ], "DstPorts": [ { "IP": "*", @@ -185,7 +168,10 @@ "user-kris": { "packet_filter_rules": [ { - "SrcIPs": ["100.90.199.68", "fd7a:115c:a1e0::2d01:c747"], + "SrcIPs": [ + "100.90.199.68", + "fd7a:115c:a1e0::2d01:c747" + ], "DstPorts": [ { "IP": "*", @@ -201,7 +187,10 @@ "user-mon": { "packet_filter_rules": [ { - "SrcIPs": ["100.90.199.68", "fd7a:115c:a1e0::2d01:c747"], + "SrcIPs": [ + "100.90.199.68", + "fd7a:115c:a1e0::2d01:c747" + ], "DstPorts": [ { "IP": "*", @@ -217,7 +206,10 @@ "user1": { "packet_filter_rules": [ { - "SrcIPs": ["100.90.199.68", "fd7a:115c:a1e0::2d01:c747"], + "SrcIPs": [ + "100.90.199.68", + "fd7a:115c:a1e0::2d01:c747" + ], "DstPorts": [ { "IP": "*", diff --git a/hscontrol/policy/v2/testdata/acl_results/ACL-U02.hujson b/hscontrol/policy/v2/testdata/acl_results/ACL-U02.hujson index 03597cf25..aa21299e8 100644 --- a/hscontrol/policy/v2/testdata/acl_results/ACL-U02.hujson +++ b/hscontrol/policy/v2/testdata/acl_results/ACL-U02.hujson @@ -5,23 +5,37 @@ // Expected: Rules on user1 { "test_id": "ACL-U02", - "timestamp": "2026-03-17T14:48:32Z", - "propagation_wait_seconds": 10, "input": { - "policy_file": "acl_policies/acl_u02.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -31,74 +45,28 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "acls": [ { "action": "accept", - "src": ["*"], - "dst": ["kratail2tid@passkey:*"] + "src": [ + "*" + ], + "dst": [ + "kratail2tid@passkey:*" + ] } ] - }, - "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", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] - }, - "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": { diff --git a/hscontrol/policy/v2/testdata/acl_results/ACL-U03.hujson b/hscontrol/policy/v2/testdata/acl_results/ACL-U03.hujson index 11a3c5ebf..a0aabdd7e 100644 --- a/hscontrol/policy/v2/testdata/acl_results/ACL-U03.hujson +++ b/hscontrol/policy/v2/testdata/acl_results/ACL-U03.hujson @@ -5,23 +5,37 @@ // Expected: Rules on 8 of 8 nodes { "test_id": "ACL-U03", - "timestamp": "2026-03-17T14:48:43Z", - "propagation_wait_seconds": 10, "input": { - "policy_file": "acl_policies/acl_u03.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -31,81 +45,38 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "acls": [ { "action": "accept", - "src": ["group:admins"], - "dst": ["*:*"] + "src": [ + "group:admins" + ], + "dst": [ + "*:*" + ] } ] - }, - "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", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] - }, - "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": [ { - "SrcIPs": ["100.90.199.68", "fd7a:115c:a1e0::2d01:c747"], + "SrcIPs": [ + "100.90.199.68", + "fd7a:115c:a1e0::2d01:c747" + ], "DstPorts": [ { "IP": "*", @@ -121,7 +92,10 @@ "subnet-router": { "packet_filter_rules": [ { - "SrcIPs": ["100.90.199.68", "fd7a:115c:a1e0::2d01:c747"], + "SrcIPs": [ + "100.90.199.68", + "fd7a:115c:a1e0::2d01:c747" + ], "DstPorts": [ { "IP": "*", @@ -137,7 +111,10 @@ "tagged-client": { "packet_filter_rules": [ { - "SrcIPs": ["100.90.199.68", "fd7a:115c:a1e0::2d01:c747"], + "SrcIPs": [ + "100.90.199.68", + "fd7a:115c:a1e0::2d01:c747" + ], "DstPorts": [ { "IP": "*", @@ -153,7 +130,10 @@ "tagged-prod": { "packet_filter_rules": [ { - "SrcIPs": ["100.90.199.68", "fd7a:115c:a1e0::2d01:c747"], + "SrcIPs": [ + "100.90.199.68", + "fd7a:115c:a1e0::2d01:c747" + ], "DstPorts": [ { "IP": "*", @@ -169,7 +149,10 @@ "tagged-server": { "packet_filter_rules": [ { - "SrcIPs": ["100.90.199.68", "fd7a:115c:a1e0::2d01:c747"], + "SrcIPs": [ + "100.90.199.68", + "fd7a:115c:a1e0::2d01:c747" + ], "DstPorts": [ { "IP": "*", @@ -185,7 +168,10 @@ "user-kris": { "packet_filter_rules": [ { - "SrcIPs": ["100.90.199.68", "fd7a:115c:a1e0::2d01:c747"], + "SrcIPs": [ + "100.90.199.68", + "fd7a:115c:a1e0::2d01:c747" + ], "DstPorts": [ { "IP": "*", @@ -201,7 +187,10 @@ "user-mon": { "packet_filter_rules": [ { - "SrcIPs": ["100.90.199.68", "fd7a:115c:a1e0::2d01:c747"], + "SrcIPs": [ + "100.90.199.68", + "fd7a:115c:a1e0::2d01:c747" + ], "DstPorts": [ { "IP": "*", @@ -217,7 +206,10 @@ "user1": { "packet_filter_rules": [ { - "SrcIPs": ["100.90.199.68", "fd7a:115c:a1e0::2d01:c747"], + "SrcIPs": [ + "100.90.199.68", + "fd7a:115c:a1e0::2d01:c747" + ], "DstPorts": [ { "IP": "*", diff --git a/hscontrol/policy/v2/testdata/acl_results/ACL-U04.hujson b/hscontrol/policy/v2/testdata/acl_results/ACL-U04.hujson index 9850ba12b..d6dd1db7c 100644 --- a/hscontrol/policy/v2/testdata/acl_results/ACL-U04.hujson +++ b/hscontrol/policy/v2/testdata/acl_results/ACL-U04.hujson @@ -5,23 +5,37 @@ // Expected: Rules on user1 { "test_id": "ACL-U04", - "timestamp": "2026-03-17T14:48:53Z", - "propagation_wait_seconds": 10, "input": { - "policy_file": "acl_policies/acl_u04.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -31,74 +45,28 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "acls": [ { "action": "accept", - "src": ["*"], - "dst": ["group:admins:*"] + "src": [ + "*" + ], + "dst": [ + "group:admins:*" + ] } ] - }, - "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", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] - }, - "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": { diff --git a/hscontrol/policy/v2/testdata/acl_results/ACL-U05.hujson b/hscontrol/policy/v2/testdata/acl_results/ACL-U05.hujson index d8bb3d500..515e939cd 100644 --- a/hscontrol/policy/v2/testdata/acl_results/ACL-U05.hujson +++ b/hscontrol/policy/v2/testdata/acl_results/ACL-U05.hujson @@ -5,23 +5,37 @@ // Expected: Rules on tagged-server { "test_id": "ACL-U05", - "timestamp": "2026-03-17T14:49:03Z", - "propagation_wait_seconds": 10, "input": { - "policy_file": "acl_policies/acl_u05.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -31,74 +45,28 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "acls": [ { "action": "accept", - "src": ["group:developers"], - "dst": ["tag:server:22"] + "src": [ + "group:developers" + ], + "dst": [ + "tag:server:22" + ] } ] - }, - "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", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] - }, - "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": { @@ -117,7 +85,12 @@ "tagged-server": { "packet_filter_rules": [ { - "SrcIPs": ["100.110.121.96", "100.90.199.68", "fd7a:115c:a1e0::1737:7960", "fd7a:115c:a1e0::2d01:c747"], + "SrcIPs": [ + "100.110.121.96", + "100.90.199.68", + "fd7a:115c:a1e0::1737:7960", + "fd7a:115c:a1e0::2d01:c747" + ], "DstPorts": [ { "IP": "100.108.74.26", diff --git a/hscontrol/policy/v2/testdata/acl_results/ACL-U06.hujson b/hscontrol/policy/v2/testdata/acl_results/ACL-U06.hujson index 433fce45a..3d79b8a72 100644 --- a/hscontrol/policy/v2/testdata/acl_results/ACL-U06.hujson +++ b/hscontrol/policy/v2/testdata/acl_results/ACL-U06.hujson @@ -5,23 +5,37 @@ // Expected: Rules on tagged-server { "test_id": "ACL-U06", - "timestamp": "2026-03-17T14:49:14Z", - "propagation_wait_seconds": 10, "input": { - "policy_file": "acl_policies/acl_u06.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -31,74 +45,28 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "acls": [ { "action": "accept", - "src": ["kratail2tid@passkey"], - "dst": ["tag:server:22"] + "src": [ + "kratail2tid@passkey" + ], + "dst": [ + "tag:server:22" + ] } ] - }, - "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", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] - }, - "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": { @@ -117,7 +85,10 @@ "tagged-server": { "packet_filter_rules": [ { - "SrcIPs": ["100.90.199.68", "fd7a:115c:a1e0::2d01:c747"], + "SrcIPs": [ + "100.90.199.68", + "fd7a:115c:a1e0::2d01:c747" + ], "DstPorts": [ { "IP": "100.108.74.26", diff --git a/hscontrol/policy/v2/testdata/acl_results/ACL-U07.hujson b/hscontrol/policy/v2/testdata/acl_results/ACL-U07.hujson index b420d3f61..046e727ac 100644 --- a/hscontrol/policy/v2/testdata/acl_results/ACL-U07.hujson +++ b/hscontrol/policy/v2/testdata/acl_results/ACL-U07.hujson @@ -5,23 +5,37 @@ // Expected: Rules on 8 of 8 nodes { "test_id": "ACL-U07", - "timestamp": "2026-03-17T14:49:24Z", - "propagation_wait_seconds": 10, "input": { - "policy_file": "acl_policies/acl_u07.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -31,81 +45,38 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "acls": [ { "action": "accept", - "src": ["kristoffer@dalby.cc"], - "dst": ["*:*"] + "src": [ + "kristoffer@dalby.cc" + ], + "dst": [ + "*:*" + ] } ] - }, - "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", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] - }, - "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": [ { - "SrcIPs": ["100.110.121.96", "fd7a:115c:a1e0::1737:7960"], + "SrcIPs": [ + "100.110.121.96", + "fd7a:115c:a1e0::1737:7960" + ], "DstPorts": [ { "IP": "*", @@ -121,7 +92,10 @@ "subnet-router": { "packet_filter_rules": [ { - "SrcIPs": ["100.110.121.96", "fd7a:115c:a1e0::1737:7960"], + "SrcIPs": [ + "100.110.121.96", + "fd7a:115c:a1e0::1737:7960" + ], "DstPorts": [ { "IP": "*", @@ -137,7 +111,10 @@ "tagged-client": { "packet_filter_rules": [ { - "SrcIPs": ["100.110.121.96", "fd7a:115c:a1e0::1737:7960"], + "SrcIPs": [ + "100.110.121.96", + "fd7a:115c:a1e0::1737:7960" + ], "DstPorts": [ { "IP": "*", @@ -153,7 +130,10 @@ "tagged-prod": { "packet_filter_rules": [ { - "SrcIPs": ["100.110.121.96", "fd7a:115c:a1e0::1737:7960"], + "SrcIPs": [ + "100.110.121.96", + "fd7a:115c:a1e0::1737:7960" + ], "DstPorts": [ { "IP": "*", @@ -169,7 +149,10 @@ "tagged-server": { "packet_filter_rules": [ { - "SrcIPs": ["100.110.121.96", "fd7a:115c:a1e0::1737:7960"], + "SrcIPs": [ + "100.110.121.96", + "fd7a:115c:a1e0::1737:7960" + ], "DstPorts": [ { "IP": "*", @@ -185,7 +168,10 @@ "user-kris": { "packet_filter_rules": [ { - "SrcIPs": ["100.110.121.96", "fd7a:115c:a1e0::1737:7960"], + "SrcIPs": [ + "100.110.121.96", + "fd7a:115c:a1e0::1737:7960" + ], "DstPorts": [ { "IP": "*", @@ -201,7 +187,10 @@ "user-mon": { "packet_filter_rules": [ { - "SrcIPs": ["100.110.121.96", "fd7a:115c:a1e0::1737:7960"], + "SrcIPs": [ + "100.110.121.96", + "fd7a:115c:a1e0::1737:7960" + ], "DstPorts": [ { "IP": "*", @@ -217,7 +206,10 @@ "user1": { "packet_filter_rules": [ { - "SrcIPs": ["100.110.121.96", "fd7a:115c:a1e0::1737:7960"], + "SrcIPs": [ + "100.110.121.96", + "fd7a:115c:a1e0::1737:7960" + ], "DstPorts": [ { "IP": "*", diff --git a/hscontrol/policy/v2/testdata/acl_results/ACL-U08.hujson b/hscontrol/policy/v2/testdata/acl_results/ACL-U08.hujson index 58d7b34f6..7e88f7399 100644 --- a/hscontrol/policy/v2/testdata/acl_results/ACL-U08.hujson +++ b/hscontrol/policy/v2/testdata/acl_results/ACL-U08.hujson @@ -5,23 +5,37 @@ // Expected: Rules on tagged-prod, tagged-server { "test_id": "ACL-U08", - "timestamp": "2026-03-17T14:49:35Z", - "propagation_wait_seconds": 10, "input": { - "policy_file": "acl_policies/acl_u08.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -31,74 +45,29 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "acls": [ { "action": "accept", - "src": ["group:admins"], - "dst": ["tag:server:22", "tag:prod:5432"] + "src": [ + "group:admins" + ], + "dst": [ + "tag:server:22", + "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", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] - }, - "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": { @@ -114,7 +83,10 @@ "tagged-prod": { "packet_filter_rules": [ { - "SrcIPs": ["100.90.199.68", "fd7a:115c:a1e0::2d01:c747"], + "SrcIPs": [ + "100.90.199.68", + "fd7a:115c:a1e0::2d01:c747" + ], "DstPorts": [ { "IP": "100.103.8.15", @@ -137,7 +109,10 @@ "tagged-server": { "packet_filter_rules": [ { - "SrcIPs": ["100.90.199.68", "fd7a:115c:a1e0::2d01:c747"], + "SrcIPs": [ + "100.90.199.68", + "fd7a:115c:a1e0::2d01:c747" + ], "DstPorts": [ { "IP": "100.108.74.26", diff --git a/hscontrol/policy/v2/testdata/acl_results/ACL-U09.hujson b/hscontrol/policy/v2/testdata/acl_results/ACL-U09.hujson index c0a4d1a07..1b362a222 100644 --- a/hscontrol/policy/v2/testdata/acl_results/ACL-U09.hujson +++ b/hscontrol/policy/v2/testdata/acl_results/ACL-U09.hujson @@ -5,23 +5,37 @@ // Expected: Rules on tagged-server { "test_id": "ACL-U09", - "timestamp": "2026-03-17T14:49:45Z", - "propagation_wait_seconds": 10, "input": { - "policy_file": "acl_policies/acl_u09.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -31,74 +45,28 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "acls": [ { "action": "accept", - "src": ["group:monitors"], - "dst": ["tag:server:*"] + "src": [ + "group:monitors" + ], + "dst": [ + "tag:server:*" + ] } ] - }, - "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", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] - }, - "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": { @@ -117,7 +85,10 @@ "tagged-server": { "packet_filter_rules": [ { - "SrcIPs": ["100.103.90.82", "fd7a:115c:a1e0::9e37:5a52"], + "SrcIPs": [ + "100.103.90.82", + "fd7a:115c:a1e0::9e37:5a52" + ], "DstPorts": [ { "IP": "100.108.74.26", diff --git a/hscontrol/policy/v2/testdata/acl_results/ACL-U10.hujson b/hscontrol/policy/v2/testdata/acl_results/ACL-U10.hujson index 4116ea366..a76f1a785 100644 --- a/hscontrol/policy/v2/testdata/acl_results/ACL-U10.hujson +++ b/hscontrol/policy/v2/testdata/acl_results/ACL-U10.hujson @@ -5,23 +5,37 @@ // Expected: No filter rules { "test_id": "ACL-U10", - "timestamp": "2026-03-17T14:49:56Z", - "propagation_wait_seconds": 10, "input": { - "policy_file": "acl_policies/acl_u10.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -31,74 +45,28 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "acls": [ { "action": "accept", - "src": ["group:empty"], - "dst": ["*:*"] + "src": [ + "group:empty" + ], + "dst": [ + "*:*" + ] } ] - }, - "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", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] - }, - "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": { diff --git a/hscontrol/policy/v2/testdata/acl_results/ACL-U11.hujson b/hscontrol/policy/v2/testdata/acl_results/ACL-U11.hujson index d2ef544bc..91db1baf8 100644 --- a/hscontrol/policy/v2/testdata/acl_results/ACL-U11.hujson +++ b/hscontrol/policy/v2/testdata/acl_results/ACL-U11.hujson @@ -5,23 +5,37 @@ // Expected: Rules on tagged-server { "test_id": "ACL-U11", - "timestamp": "2026-03-17T14:50:06Z", - "propagation_wait_seconds": 10, "input": { - "policy_file": "acl_policies/acl_u11.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -31,74 +45,29 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "acls": [ { "action": "accept", - "src": ["kratail2tid@passkey", "tag:client"], - "dst": ["tag:server:22"] + "src": [ + "kratail2tid@passkey", + "tag:client" + ], + "dst": [ + "tag:server:22" + ] } ] - }, - "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", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] - }, - "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": { @@ -117,7 +86,12 @@ "tagged-server": { "packet_filter_rules": [ { - "SrcIPs": ["100.83.200.69", "100.90.199.68", "fd7a:115c:a1e0::2d01:c747", "fd7a:115c:a1e0::c537:c845"], + "SrcIPs": [ + "100.83.200.69", + "100.90.199.68", + "fd7a:115c:a1e0::2d01:c747", + "fd7a:115c:a1e0::c537:c845" + ], "DstPorts": [ { "IP": "100.108.74.26", diff --git a/hscontrol/policy/v2/testdata/acl_results/ACL-U12.hujson b/hscontrol/policy/v2/testdata/acl_results/ACL-U12.hujson index 5633999d8..fba2a8dcb 100644 --- a/hscontrol/policy/v2/testdata/acl_results/ACL-U12.hujson +++ b/hscontrol/policy/v2/testdata/acl_results/ACL-U12.hujson @@ -5,23 +5,37 @@ // Expected: Rules on tagged-server { "test_id": "ACL-U12", - "timestamp": "2026-03-17T14:50:17Z", - "propagation_wait_seconds": 10, "input": { - "policy_file": "acl_policies/acl_u12.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -31,74 +45,29 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "acls": [ { "action": "accept", - "src": ["group:admins", "tag:client"], - "dst": ["tag:server:22"] + "src": [ + "group:admins", + "tag:client" + ], + "dst": [ + "tag:server:22" + ] } ] - }, - "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", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] - }, - "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": { @@ -117,7 +86,12 @@ "tagged-server": { "packet_filter_rules": [ { - "SrcIPs": ["100.83.200.69", "100.90.199.68", "fd7a:115c:a1e0::2d01:c747", "fd7a:115c:a1e0::c537:c845"], + "SrcIPs": [ + "100.83.200.69", + "100.90.199.68", + "fd7a:115c:a1e0::2d01:c747", + "fd7a:115c:a1e0::c537:c845" + ], "DstPorts": [ { "IP": "100.108.74.26", diff --git a/hscontrol/policy/v2/testdata/acl_results/ACL-W01.hujson b/hscontrol/policy/v2/testdata/acl_results/ACL-W01.hujson index 1be7ad05c..eb344da3b 100644 --- a/hscontrol/policy/v2/testdata/acl_results/ACL-W01.hujson +++ b/hscontrol/policy/v2/testdata/acl_results/ACL-W01.hujson @@ -5,23 +5,37 @@ // Expected: Rules on 8 of 8 nodes { "test_id": "ACL-W01", - "timestamp": "2026-03-17T14:50:27Z", - "propagation_wait_seconds": 10, "input": { - "policy_file": "acl_policies/acl_w01.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -31,74 +45,28 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "acls": [ { "action": "accept", - "src": ["*"], - "dst": ["*:*"] + "src": [ + "*" + ], + "dst": [ + "*:*" + ] } ] - }, - "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", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] - }, - "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": { diff --git a/hscontrol/policy/v2/testdata/acl_results/ACL-W02.hujson b/hscontrol/policy/v2/testdata/acl_results/ACL-W02.hujson index 0ccc8f2e9..54cbacd42 100644 --- a/hscontrol/policy/v2/testdata/acl_results/ACL-W02.hujson +++ b/hscontrol/policy/v2/testdata/acl_results/ACL-W02.hujson @@ -5,23 +5,37 @@ // Expected: Rules on 8 of 8 nodes { "test_id": "ACL-W02", - "timestamp": "2026-03-17T14:50:38Z", - "propagation_wait_seconds": 10, "input": { - "policy_file": "acl_policies/acl_w02.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -31,81 +45,37 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "acls": [ { "action": "accept", - "src": ["100.90.199.68"], - "dst": ["*:*"] + "src": [ + "100.90.199.68" + ], + "dst": [ + "*:*" + ] } ] - }, - "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", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] - }, - "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": [ { - "SrcIPs": ["100.90.199.68"], + "SrcIPs": [ + "100.90.199.68" + ], "DstPorts": [ { "IP": "*", @@ -121,7 +91,9 @@ "subnet-router": { "packet_filter_rules": [ { - "SrcIPs": ["100.90.199.68"], + "SrcIPs": [ + "100.90.199.68" + ], "DstPorts": [ { "IP": "*", @@ -137,7 +109,9 @@ "tagged-client": { "packet_filter_rules": [ { - "SrcIPs": ["100.90.199.68"], + "SrcIPs": [ + "100.90.199.68" + ], "DstPorts": [ { "IP": "*", @@ -153,7 +127,9 @@ "tagged-prod": { "packet_filter_rules": [ { - "SrcIPs": ["100.90.199.68"], + "SrcIPs": [ + "100.90.199.68" + ], "DstPorts": [ { "IP": "*", @@ -169,7 +145,9 @@ "tagged-server": { "packet_filter_rules": [ { - "SrcIPs": ["100.90.199.68"], + "SrcIPs": [ + "100.90.199.68" + ], "DstPorts": [ { "IP": "*", @@ -185,7 +163,9 @@ "user-kris": { "packet_filter_rules": [ { - "SrcIPs": ["100.90.199.68"], + "SrcIPs": [ + "100.90.199.68" + ], "DstPorts": [ { "IP": "*", @@ -201,7 +181,9 @@ "user-mon": { "packet_filter_rules": [ { - "SrcIPs": ["100.90.199.68"], + "SrcIPs": [ + "100.90.199.68" + ], "DstPorts": [ { "IP": "*", @@ -217,7 +199,9 @@ "user1": { "packet_filter_rules": [ { - "SrcIPs": ["100.90.199.68"], + "SrcIPs": [ + "100.90.199.68" + ], "DstPorts": [ { "IP": "*", diff --git a/hscontrol/policy/v2/testdata/acl_results/ACL-W03.hujson b/hscontrol/policy/v2/testdata/acl_results/ACL-W03.hujson index a323c82ea..434855e24 100644 --- a/hscontrol/policy/v2/testdata/acl_results/ACL-W03.hujson +++ b/hscontrol/policy/v2/testdata/acl_results/ACL-W03.hujson @@ -5,23 +5,37 @@ // Expected: Rules on 8 of 8 nodes { "test_id": "ACL-W03", - "timestamp": "2026-03-17T14:50:48Z", - "propagation_wait_seconds": 10, "input": { - "policy_file": "acl_policies/acl_w03.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -31,81 +45,37 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "acls": [ { "action": "accept", - "src": ["100.64.0.0/16"], - "dst": ["*:*"] + "src": [ + "100.64.0.0/16" + ], + "dst": [ + "*:*" + ] } ] - }, - "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", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] - }, - "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": [ { - "SrcIPs": ["100.64.0.0/16"], + "SrcIPs": [ + "100.64.0.0/16" + ], "DstPorts": [ { "IP": "*", @@ -121,7 +91,9 @@ "subnet-router": { "packet_filter_rules": [ { - "SrcIPs": ["100.64.0.0/16"], + "SrcIPs": [ + "100.64.0.0/16" + ], "DstPorts": [ { "IP": "*", @@ -137,7 +109,9 @@ "tagged-client": { "packet_filter_rules": [ { - "SrcIPs": ["100.64.0.0/16"], + "SrcIPs": [ + "100.64.0.0/16" + ], "DstPorts": [ { "IP": "*", @@ -153,7 +127,9 @@ "tagged-prod": { "packet_filter_rules": [ { - "SrcIPs": ["100.64.0.0/16"], + "SrcIPs": [ + "100.64.0.0/16" + ], "DstPorts": [ { "IP": "*", @@ -169,7 +145,9 @@ "tagged-server": { "packet_filter_rules": [ { - "SrcIPs": ["100.64.0.0/16"], + "SrcIPs": [ + "100.64.0.0/16" + ], "DstPorts": [ { "IP": "*", @@ -185,7 +163,9 @@ "user-kris": { "packet_filter_rules": [ { - "SrcIPs": ["100.64.0.0/16"], + "SrcIPs": [ + "100.64.0.0/16" + ], "DstPorts": [ { "IP": "*", @@ -201,7 +181,9 @@ "user-mon": { "packet_filter_rules": [ { - "SrcIPs": ["100.64.0.0/16"], + "SrcIPs": [ + "100.64.0.0/16" + ], "DstPorts": [ { "IP": "*", @@ -217,7 +199,9 @@ "user1": { "packet_filter_rules": [ { - "SrcIPs": ["100.64.0.0/16"], + "SrcIPs": [ + "100.64.0.0/16" + ], "DstPorts": [ { "IP": "*", diff --git a/hscontrol/policy/v2/testdata/acl_results/ACL-W04.hujson b/hscontrol/policy/v2/testdata/acl_results/ACL-W04.hujson index 9ade48fb1..01d4c30ef 100644 --- a/hscontrol/policy/v2/testdata/acl_results/ACL-W04.hujson +++ b/hscontrol/policy/v2/testdata/acl_results/ACL-W04.hujson @@ -5,23 +5,37 @@ // Expected: Rules on tagged-server { "test_id": "ACL-W04", - "timestamp": "2026-03-17T14:50:59Z", - "propagation_wait_seconds": 10, "input": { - "policy_file": "acl_policies/acl_w04.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -31,74 +45,28 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "acls": [ { "action": "accept", - "src": ["*"], - "dst": ["100.108.74.26:*"] + "src": [ + "*" + ], + "dst": [ + "100.108.74.26:*" + ] } ] - }, - "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", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] - }, - "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": { diff --git a/hscontrol/policy/v2/testdata/acl_results/ACL-W05.hujson b/hscontrol/policy/v2/testdata/acl_results/ACL-W05.hujson index 6b4018049..94723e425 100644 --- a/hscontrol/policy/v2/testdata/acl_results/ACL-W05.hujson +++ b/hscontrol/policy/v2/testdata/acl_results/ACL-W05.hujson @@ -5,23 +5,37 @@ // Expected: No filter rules { "test_id": "ACL-W05", - "timestamp": "2026-03-17T14:51:09Z", - "propagation_wait_seconds": 10, "input": { - "policy_file": "acl_policies/acl_w05.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -31,74 +45,28 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "acls": [ { "action": "accept", - "src": ["*"], - "dst": ["100.64.0.0/12:*"] + "src": [ + "*" + ], + "dst": [ + "100.64.0.0/12:*" + ] } ] - }, - "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", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] - }, - "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": { diff --git a/hscontrol/policy/v2/testdata/acl_results/ACL-W06.hujson b/hscontrol/policy/v2/testdata/acl_results/ACL-W06.hujson index 1129093a0..25a01de7d 100644 --- a/hscontrol/policy/v2/testdata/acl_results/ACL-W06.hujson +++ b/hscontrol/policy/v2/testdata/acl_results/ACL-W06.hujson @@ -5,23 +5,37 @@ // Expected: Rules on 8 of 8 nodes { "test_id": "ACL-W06", - "timestamp": "2026-03-17T14:51:20Z", - "propagation_wait_seconds": 10, "input": { - "policy_file": "acl_policies/acl_w06.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -31,74 +45,28 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "acls": [ { "action": "accept", - "src": ["*"], - "dst": ["*:80"] + "src": [ + "*" + ], + "dst": [ + "*:80" + ] } ] - }, - "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", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] - }, - "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": { diff --git a/hscontrol/policy/v2/testdata/acl_results/ACL-W07.hujson b/hscontrol/policy/v2/testdata/acl_results/ACL-W07.hujson index 71cbe35a9..113767e89 100644 --- a/hscontrol/policy/v2/testdata/acl_results/ACL-W07.hujson +++ b/hscontrol/policy/v2/testdata/acl_results/ACL-W07.hujson @@ -5,23 +5,37 @@ // Expected: Rules on 8 of 8 nodes { "test_id": "ACL-W07", - "timestamp": "2026-03-17T14:51:30Z", - "propagation_wait_seconds": 10, "input": { - "policy_file": "acl_policies/acl_w07.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -31,74 +45,28 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "acls": [ { "action": "accept", - "src": ["*"], - "dst": ["*:443"] + "src": [ + "*" + ], + "dst": [ + "*:443" + ] } ] - }, - "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", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] - }, - "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": { diff --git a/hscontrol/policy/v2/testdata/grant_results/GRANT-A1.hujson b/hscontrol/policy/v2/testdata/grant_results/GRANT-A1.hujson index 7ad33eb5c..7f297c3bd 100644 --- a/hscontrol/policy/v2/testdata/grant_results/GRANT-A1.hujson +++ b/hscontrol/policy/v2/testdata/grant_results/GRANT-A1.hujson @@ -5,23 +5,37 @@ // Expected: Rules on 7 nodes { "test_id": "GRANT-A1", - "timestamp": "2026-02-23T00:15:55Z", - "propagation_wait_seconds": 15, "input": { - "policy_file": "/home/kradalby/acl-explore/grant_policies/grant_a1.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -30,106 +44,89 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "grants": [ { - "src": ["*"], - "dst": ["*"], + "src": [ + "*" + ], + "dst": [ + "*" + ], "app": { - "example.com/cap/basic": [{}] + "example.com/cap/basic": [ + {} + ] } } ] }, - "grants_section": [ - { - "src": ["*"], - "dst": ["*"], - "app": { - "example.com/cap/basic": [{}] - } - } - ], - "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"], + "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"], + "tags": [ + "tag:router" + ], "ipv4": "100.92.142.61", - "ipv6": "fd7a:115c:a1e0::3e37:8e3d", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] + "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"], + "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": "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"], + "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" @@ -138,10 +135,6 @@ }, "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": [ @@ -152,424 +145,21 @@ ], "CapGrant": [ { - "Dsts": ["100.85.66.106/32", "fd7a:115c:a1e0::7c37:426a/128"], + "Dsts": [ + "100.85.66.106/32", + "fd7a:115c:a1e0::7c37:426a/128" + ], "CapMap": { - "example.com/cap/basic": [{}] + "example.com/cap/basic": [ + {} + ] } } ] } - ], - "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.85.66.106/32", - "Cap": "example.com/cap/basic", - "Values": [{}] - }, - { - "Dst": "fd7a:115c:a1e0::7c37:426a/128", - "Cap": "example.com/cap/basic", - "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": { - "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": { - "example.com/cap/basic": [{}] - } - } - }, - "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": { - "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/basic": [{}] - } - } - }, - "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": { - "Node": { - "ID": 301794218943819, - "StableID": "neJag6dgM311CNTRL", - "Name": "tagged-prod.tail78f774.ts.net.", - "User": 1260082990019555, - "Key": "nodekey:54c79503322a5d0a9701ce19d11963cfff9c05667ac06ef976af86275ba7080e", - "DiscoKey": "discokey:948166e45d474f8c241083571e42623091801428142583b3810df46ea6662d6b", - "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:34627", - "10.65.0.27:34627", - "172.17.0.1:34627", - "172.18.0.1:34627", - "172.19.0.1:34627" - ], - "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"], - "LastSeen": "2026-02-23T00:20:00.1Z", - "Online": false, - "ComputedName": "tagged-prod", - "ComputedNameWithHost": "tagged-prod" - }, - "UserProfile": { - "ID": 1260082990019555, - "LoginName": "tagged-devices", - "DisplayName": "Tagged Devices" - }, - "CapMap": { - "example.com/cap/basic": [{}] - } - } - }, - "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": { - "example.com/cap/basic": [{}] - } - } - }, - "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": { - "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/basic": [{}] - } - } - }, - "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": { - "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/basic": [{}] - } - } - }, - "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": { - "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/basic": [{}] - } - } - } - } + ] }, "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": [ @@ -580,423 +170,21 @@ ], "CapGrant": [ { - "Dsts": ["100.92.142.61/32", "fd7a:115c:a1e0::3e37:8e3d/128"], + "Dsts": [ + "100.92.142.61/32", + "fd7a:115c:a1e0::3e37:8e3d/128" + ], "CapMap": { - "example.com/cap/basic": [{}] + "example.com/cap/basic": [ + {} + ] } } ] } - ], - "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.92.142.61/32", - "Cap": "example.com/cap/basic", - "Values": [{}] - }, - { - "Dst": "fd7a:115c:a1e0::3e37:8e3d/128", - "Cap": "example.com/cap/basic", - "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": { - "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/basic": [{}] - } - } - }, - "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": { - "example.com/cap/basic": [{}] - } - } - }, - "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:948166e45d474f8c241083571e42623091801428142583b3810df46ea6662d6b", - "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:34627", - "10.65.0.27:34627", - "172.17.0.1:34627", - "172.18.0.1:34627", - "172.19.0.1:34627" - ], - "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"], - "LastSeen": "2026-02-23T00:20:00.1Z", - "Online": false, - "ComputedName": "tagged-prod", - "ComputedNameWithHost": "tagged-prod" - }, - "UserProfile": { - "ID": 1260082990019555, - "LoginName": "tagged-devices", - "DisplayName": "Tagged Devices" - }, - "CapMap": { - "example.com/cap/basic": [{}] - } - } - }, - "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": { - "example.com/cap/basic": [{}] - } - } - }, - "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": { - "example.com/cap/basic": [{}] - } - } - }, - "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": { - "example.com/cap/basic": [{}] - } - } - }, - "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": { - "example.com/cap/basic": [{}] - } - } - } - } + ] }, "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": [ @@ -1007,469 +195,24 @@ ], "CapGrant": [ { - "Dsts": ["100.83.200.69/32", "fd7a:115c:a1e0::c537:c845/128"], + "Dsts": [ + "100.83.200.69/32", + "fd7a:115c:a1e0::c537:c845/128" + ], "CapMap": { - "example.com/cap/basic": [{}] + "example.com/cap/basic": [ + {} + ] } } ] } - ], - "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.83.200.69/32", - "Cap": "example.com/cap/basic", - "Values": [{}] - }, - { - "Dst": "fd7a:115c:a1e0::c537:c845/128", - "Cap": "example.com/cap/basic", - "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": { - "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/basic": [{}] - } - } - }, - "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": { - "example.com/cap/basic": [{}] - } - } - }, - "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": { - "Node": { - "ID": 301794218943819, - "StableID": "neJag6dgM311CNTRL", - "Name": "tagged-prod.tail78f774.ts.net.", - "User": 1260082990019555, - "Key": "nodekey:54c79503322a5d0a9701ce19d11963cfff9c05667ac06ef976af86275ba7080e", - "DiscoKey": "discokey:948166e45d474f8c241083571e42623091801428142583b3810df46ea6662d6b", - "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:34627", - "10.65.0.27:34627", - "172.17.0.1:34627", - "172.18.0.1:34627", - "172.19.0.1:34627" - ], - "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"], - "LastSeen": "2026-02-23T00:20:00.1Z", - "Online": false, - "ComputedName": "tagged-prod", - "ComputedNameWithHost": "tagged-prod" - }, - "UserProfile": { - "ID": 1260082990019555, - "LoginName": "tagged-devices", - "DisplayName": "Tagged Devices" - }, - "CapMap": { - "example.com/cap/basic": [{}] - } - } - }, - "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": { - "example.com/cap/basic": [{}] - } - } - }, - "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": { - "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/basic": [{}] - } - } - }, - "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": { - "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/basic": [{}] - } - } - }, - "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": { - "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/basic": [{}] - } - } - } - } + ] }, "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 - } - } + "packet_filter_rules": 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": [ @@ -1480,425 +223,21 @@ ], "CapGrant": [ { - "Dsts": ["100.108.74.26/32", "fd7a:115c:a1e0::b901:4a87/128"], + "Dsts": [ + "100.108.74.26/32", + "fd7a:115c:a1e0::b901:4a87/128" + ], "CapMap": { - "example.com/cap/basic": [{}] + "example.com/cap/basic": [ + {} + ] } } ] } - ], - "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": "example.com/cap/basic", - "Values": [{}] - }, - { - "Dst": "fd7a:115c:a1e0::b901:4a87/128", - "Cap": "example.com/cap/basic", - "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/basic": [{}] - } - } - }, - "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": { - "example.com/cap/basic": [{}] - } - } - }, - "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/basic": [{}] - } - } - }, - "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:948166e45d474f8c241083571e42623091801428142583b3810df46ea6662d6b", - "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:34627", - "10.65.0.27:34627", - "172.17.0.1:34627", - "172.18.0.1:34627", - "172.19.0.1:34627" - ], - "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"], - "LastSeen": "2026-02-23T00:20:00.1Z", - "Online": false, - "ComputedName": "tagged-prod", - "ComputedNameWithHost": "tagged-prod" - }, - "UserProfile": { - "ID": 1260082990019555, - "LoginName": "tagged-devices", - "DisplayName": "Tagged Devices" - }, - "CapMap": { - "example.com/cap/basic": [{}] - } - } - }, - "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/basic": [{}] - } - } - }, - "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/basic": [{}] - } - } - }, - "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, - "LastSeen": "2026-02-22T20:30:00.1Z", - "Online": true, - "ComputedName": "user1", - "ComputedNameWithHost": "user1" - }, - "UserProfile": { - "ID": 4156223528223174, - "LoginName": "kratail2tid@passkey", - "DisplayName": "kratail2tid" - }, - "CapMap": { - "example.com/cap/basic": [{}] - } - } - } - } + ] }, "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": [ @@ -1909,427 +248,21 @@ ], "CapGrant": [ { - "Dsts": ["100.110.121.96/32", "fd7a:115c:a1e0::1737:7960/128"], + "Dsts": [ + "100.110.121.96/32", + "fd7a:115c:a1e0::1737:7960/128" + ], "CapMap": { - "example.com/cap/basic": [{}] + "example.com/cap/basic": [ + {} + ] } } ] } - ], - "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.110.121.96/32", - "Cap": "example.com/cap/basic", - "Values": [{}] - }, - { - "Dst": "fd7a:115c:a1e0::1737:7960/128", - "Cap": "example.com/cap/basic", - "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": { - "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/basic": [{}] - } - } - }, - "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": { - "example.com/cap/basic": [{}] - } - } - }, - "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": { - "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/basic": [{}] - } - } - }, - "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": { - "Node": { - "ID": 301794218943819, - "StableID": "neJag6dgM311CNTRL", - "Name": "tagged-prod.tail78f774.ts.net.", - "User": 1260082990019555, - "Key": "nodekey:54c79503322a5d0a9701ce19d11963cfff9c05667ac06ef976af86275ba7080e", - "DiscoKey": "discokey:948166e45d474f8c241083571e42623091801428142583b3810df46ea6662d6b", - "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:34627", - "10.65.0.27:34627", - "172.17.0.1:34627", - "172.18.0.1:34627", - "172.19.0.1:34627" - ], - "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"], - "LastSeen": "2026-02-23T00:20:00.1Z", - "Online": false, - "ComputedName": "tagged-prod", - "ComputedNameWithHost": "tagged-prod" - }, - "UserProfile": { - "ID": 1260082990019555, - "LoginName": "tagged-devices", - "DisplayName": "Tagged Devices" - }, - "CapMap": { - "example.com/cap/basic": [{}] - } - } - }, - "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"], - "LastSeen": "2026-02-22T07:30:00.1Z", - "Online": true, - "ComputedName": "tagged-server", - "ComputedNameWithHost": "tagged-server" - }, - "UserProfile": { - "ID": 1260082990019555, - "LoginName": "tagged-devices", - "DisplayName": "Tagged Devices" - }, - "CapMap": { - "example.com/cap/basic": [{}] - } - } - }, - "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": { - "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, - "LastSeen": "2026-02-21T20:00:00.1Z", - "Online": true, - "ComputedName": "user-mon", - "ComputedNameWithHost": "user-mon" - }, - "UserProfile": { - "ID": 3982058329734709, - "LoginName": "monitorpasskeykradalby@passkey", - "DisplayName": "monitorpasskeykradalby" - }, - "CapMap": { - "example.com/cap/basic": [{}] - } - } - }, - "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": { - "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, - "LastSeen": "2026-02-22T20:30:00.1Z", - "Online": true, - "ComputedName": "user1", - "ComputedNameWithHost": "user1" - }, - "UserProfile": { - "ID": 4156223528223174, - "LoginName": "kratail2tid@passkey", - "DisplayName": "kratail2tid" - }, - "CapMap": { - "example.com/cap/basic": [{}] - } - } - } - } + ] }, "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": [ @@ -2340,426 +273,21 @@ ], "CapGrant": [ { - "Dsts": ["100.103.90.82/32", "fd7a:115c:a1e0::9e37:5a52/128"], + "Dsts": [ + "100.103.90.82/32", + "fd7a:115c:a1e0::9e37:5a52/128" + ], "CapMap": { - "example.com/cap/basic": [{}] + "example.com/cap/basic": [ + {} + ] } } ] } - ], - "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.103.90.82/32", - "Cap": "example.com/cap/basic", - "Values": [{}] - }, - { - "Dst": "fd7a:115c:a1e0::9e37:5a52/128", - "Cap": "example.com/cap/basic", - "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": { - "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/basic": [{}] - } - } - }, - "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": { - "example.com/cap/basic": [{}] - } - } - }, - "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": { - "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/basic": [{}] - } - } - }, - "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": { - "Node": { - "ID": 301794218943819, - "StableID": "neJag6dgM311CNTRL", - "Name": "tagged-prod.tail78f774.ts.net.", - "User": 1260082990019555, - "Key": "nodekey:54c79503322a5d0a9701ce19d11963cfff9c05667ac06ef976af86275ba7080e", - "DiscoKey": "discokey:948166e45d474f8c241083571e42623091801428142583b3810df46ea6662d6b", - "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:34627", - "10.65.0.27:34627", - "172.17.0.1:34627", - "172.18.0.1:34627", - "172.19.0.1:34627" - ], - "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"], - "LastSeen": "2026-02-23T00:20:00.1Z", - "Online": false, - "ComputedName": "tagged-prod", - "ComputedNameWithHost": "tagged-prod" - }, - "UserProfile": { - "ID": 1260082990019555, - "LoginName": "tagged-devices", - "DisplayName": "Tagged Devices" - }, - "CapMap": { - "example.com/cap/basic": [{}] - } - } - }, - "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"], - "LastSeen": "2026-02-22T07:30:00.1Z", - "Online": true, - "ComputedName": "tagged-server", - "ComputedNameWithHost": "tagged-server" - }, - "UserProfile": { - "ID": 1260082990019555, - "LoginName": "tagged-devices", - "DisplayName": "Tagged Devices" - }, - "CapMap": { - "example.com/cap/basic": [{}] - } - } - }, - "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": { - "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/basic": [{}] - } - } - }, - "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": { - "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, - "LastSeen": "2026-02-22T20:30:00.1Z", - "Online": true, - "ComputedName": "user1", - "ComputedNameWithHost": "user1" - }, - "UserProfile": { - "ID": 4156223528223174, - "LoginName": "kratail2tid@passkey", - "DisplayName": "kratail2tid" - }, - "CapMap": { - "example.com/cap/basic": [{}] - } - } - } - } + ] }, "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": [ @@ -2770,418 +298,19 @@ ], "CapGrant": [ { - "Dsts": ["100.90.199.68/32", "fd7a:115c:a1e0::2d01:c747/128"], + "Dsts": [ + "100.90.199.68/32", + "fd7a:115c:a1e0::2d01:c747/128" + ], "CapMap": { - "example.com/cap/basic": [{}] + "example.com/cap/basic": [ + {} + ] } } ] } - ], - "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.90.199.68/32", - "Cap": "example.com/cap/basic", - "Values": [{}] - }, - { - "Dst": "fd7a:115c:a1e0::2d01:c747/128", - "Cap": "example.com/cap/basic", - "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": { - "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/basic": [{}] - } - } - }, - "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": { - "example.com/cap/basic": [{}] - } - } - }, - "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": { - "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/basic": [{}] - } - } - }, - "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": { - "Node": { - "ID": 301794218943819, - "StableID": "neJag6dgM311CNTRL", - "Name": "tagged-prod.tail78f774.ts.net.", - "User": 1260082990019555, - "Key": "nodekey:54c79503322a5d0a9701ce19d11963cfff9c05667ac06ef976af86275ba7080e", - "DiscoKey": "discokey:948166e45d474f8c241083571e42623091801428142583b3810df46ea6662d6b", - "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:34627", - "10.65.0.27:34627", - "172.17.0.1:34627", - "172.18.0.1:34627", - "172.19.0.1:34627" - ], - "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"], - "LastSeen": "2026-02-23T00:20:00.1Z", - "Online": false, - "ComputedName": "tagged-prod", - "ComputedNameWithHost": "tagged-prod" - }, - "UserProfile": { - "ID": 1260082990019555, - "LoginName": "tagged-devices", - "DisplayName": "Tagged Devices" - }, - "CapMap": { - "example.com/cap/basic": [{}] - } - } - }, - "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": { - "example.com/cap/basic": [{}] - } - } - }, - "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": { - "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/basic": [{}] - } - } - }, - "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": { - "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/basic": [{}] - } - } - } - } + ] } } } diff --git a/hscontrol/policy/v2/testdata/grant_results/GRANT-A2.hujson b/hscontrol/policy/v2/testdata/grant_results/GRANT-A2.hujson index f783ba96b..9f4d4a79a 100644 --- a/hscontrol/policy/v2/testdata/grant_results/GRANT-A2.hujson +++ b/hscontrol/policy/v2/testdata/grant_results/GRANT-A2.hujson @@ -5,24 +5,38 @@ // Expected: Error (HTTP 400) — capability name must have the form {domain}/{path} { "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: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"] + "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", @@ -31,25 +45,36 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "grants": [ { - "src": ["*"], - "dst": ["*"], + "src": [ + "*" + ], + "dst": [ + "*" + ], "app": { - "https://tailscale.com/cap/ingress": [{}] + "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}" } + "api_response_body": { + "message": "capability name must have the form {domain}/{path}" + } } } diff --git a/hscontrol/policy/v2/testdata/grant_results/GRANT-A3.hujson b/hscontrol/policy/v2/testdata/grant_results/GRANT-A3.hujson index 4b8b0f669..97736e016 100644 --- a/hscontrol/policy/v2/testdata/grant_results/GRANT-A3.hujson +++ b/hscontrol/policy/v2/testdata/grant_results/GRANT-A3.hujson @@ -5,23 +5,37 @@ // Expected: Rules on 7 nodes { "test_id": "GRANT-A3", - "timestamp": "2026-02-23T00:17:41Z", - "propagation_wait_seconds": 15, "input": { - "policy_file": "/home/kradalby/acl-explore/grant_policies/grant_a3.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -30,106 +44,89 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "grants": [ { - "src": ["*"], - "dst": ["*"], + "src": [ + "*" + ], + "dst": [ + "*" + ], "app": { - "tailscale.com/cap/webui": [{}] + "tailscale.com/cap/webui": [ + {} + ] } } ] }, - "grants_section": [ - { - "src": ["*"], - "dst": ["*"], - "app": { - "tailscale.com/cap/webui": [{}] - } - } - ], - "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"], + "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"], + "tags": [ + "tag:router" + ], "ipv4": "100.92.142.61", - "ipv6": "fd7a:115c:a1e0::3e37:8e3d", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] + "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"], + "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"], + "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" @@ -138,10 +135,6 @@ }, "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": [ @@ -152,376 +145,21 @@ ], "CapGrant": [ { - "Dsts": ["100.85.66.106/32", "fd7a:115c:a1e0::7c37:426a/128"], + "Dsts": [ + "100.85.66.106/32", + "fd7a:115c:a1e0::7c37:426a/128" + ], "CapMap": { - "tailscale.com/cap/webui": [{}] + "tailscale.com/cap/webui": [ + {} + ] } } ] } - ], - "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.85.66.106/32", - "Cap": "tailscale.com/cap/webui", - "Values": [{}] - }, - { - "Dst": "fd7a:115c:a1e0::7c37:426a/128", - "Cap": "tailscale.com/cap/webui", - "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": { - "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/webui": [{}] - } - } - }, - "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": { - "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/webui": [{}] - } - } - }, - "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": { - "tailscale.com/cap/webui": [{}] - } - } - }, - "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": { - "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/webui": [{}] - } - } - }, - "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": { - "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/webui": [{}] - } - } - }, - "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": { - "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/webui": [{}] - } - } - } - } + ] }, "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": [ @@ -532,375 +170,21 @@ ], "CapGrant": [ { - "Dsts": ["100.92.142.61/32", "fd7a:115c:a1e0::3e37:8e3d/128"], + "Dsts": [ + "100.92.142.61/32", + "fd7a:115c:a1e0::3e37:8e3d/128" + ], "CapMap": { - "tailscale.com/cap/webui": [{}] + "tailscale.com/cap/webui": [ + {} + ] } } ] } - ], - "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.92.142.61/32", - "Cap": "tailscale.com/cap/webui", - "Values": [{}] - }, - { - "Dst": "fd7a:115c:a1e0::3e37:8e3d/128", - "Cap": "tailscale.com/cap/webui", - "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": { - "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/webui": [{}] - } - } - }, - "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": { - "tailscale.com/cap/webui": [{}] - } - } - }, - "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": { - "tailscale.com/cap/webui": [{}] - } - } - }, - "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": { - "tailscale.com/cap/webui": [{}] - } - } - }, - "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": { - "tailscale.com/cap/webui": [{}] - } - } - }, - "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": { - "tailscale.com/cap/webui": [{}] - } - } - } - } + ] }, "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": [ @@ -911,421 +195,24 @@ ], "CapGrant": [ { - "Dsts": ["100.83.200.69/32", "fd7a:115c:a1e0::c537:c845/128"], + "Dsts": [ + "100.83.200.69/32", + "fd7a:115c:a1e0::c537:c845/128" + ], "CapMap": { - "tailscale.com/cap/webui": [{}] + "tailscale.com/cap/webui": [ + {} + ] } } ] } - ], - "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.83.200.69/32", - "Cap": "tailscale.com/cap/webui", - "Values": [{}] - }, - { - "Dst": "fd7a:115c:a1e0::c537:c845/128", - "Cap": "tailscale.com/cap/webui", - "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": { - "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/webui": [{}] - } - } - }, - "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": { - "tailscale.com/cap/webui": [{}] - } - } - }, - "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": { - "tailscale.com/cap/webui": [{}] - } - } - }, - "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": { - "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/webui": [{}] - } - } - }, - "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": { - "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/webui": [{}] - } - } - }, - "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": { - "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/webui": [{}] - } - } - } - } + ] }, "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 - } - } + "packet_filter_rules": 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": [ @@ -1336,377 +223,21 @@ ], "CapGrant": [ { - "Dsts": ["100.108.74.26/32", "fd7a:115c:a1e0::b901:4a87/128"], + "Dsts": [ + "100.108.74.26/32", + "fd7a:115c:a1e0::b901:4a87/128" + ], "CapMap": { - "tailscale.com/cap/webui": [{}] + "tailscale.com/cap/webui": [ + {} + ] } } ] } - ], - "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/webui", - "Values": [{}] - }, - { - "Dst": "fd7a:115c:a1e0::b901:4a87/128", - "Cap": "tailscale.com/cap/webui", - "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": { - "tailscale.com/cap/webui": [{}] - } - } - }, - "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/webui": [{}] - } - } - }, - "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/webui": [{}] - } - } - }, - "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/webui": [{}] - } - } - }, - "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/webui": [{}] - } - } - }, - "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, - "LastSeen": "2026-02-22T20:30:00.1Z", - "Online": true, - "ComputedName": "user1", - "ComputedNameWithHost": "user1" - }, - "UserProfile": { - "ID": 4156223528223174, - "LoginName": "kratail2tid@passkey", - "DisplayName": "kratail2tid" - }, - "CapMap": { - "tailscale.com/cap/webui": [{}] - } - } - } - } + ] }, "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": [ @@ -1717,379 +248,21 @@ ], "CapGrant": [ { - "Dsts": ["100.110.121.96/32", "fd7a:115c:a1e0::1737:7960/128"], + "Dsts": [ + "100.110.121.96/32", + "fd7a:115c:a1e0::1737:7960/128" + ], "CapMap": { - "tailscale.com/cap/webui": [{}] + "tailscale.com/cap/webui": [ + {} + ] } } ] } - ], - "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.110.121.96/32", - "Cap": "tailscale.com/cap/webui", - "Values": [{}] - }, - { - "Dst": "fd7a:115c:a1e0::1737:7960/128", - "Cap": "tailscale.com/cap/webui", - "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": { - "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/webui": [{}] - } - } - }, - "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": { - "tailscale.com/cap/webui": [{}] - } - } - }, - "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": { - "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/webui": [{}] - } - } - }, - "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"], - "LastSeen": "2026-02-22T07:30:00.1Z", - "Online": true, - "ComputedName": "tagged-server", - "ComputedNameWithHost": "tagged-server" - }, - "UserProfile": { - "ID": 1260082990019555, - "LoginName": "tagged-devices", - "DisplayName": "Tagged Devices" - }, - "CapMap": { - "tailscale.com/cap/webui": [{}] - } - } - }, - "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": { - "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, - "LastSeen": "2026-02-21T20:00:00.1Z", - "Online": true, - "ComputedName": "user-mon", - "ComputedNameWithHost": "user-mon" - }, - "UserProfile": { - "ID": 3982058329734709, - "LoginName": "monitorpasskeykradalby@passkey", - "DisplayName": "monitorpasskeykradalby" - }, - "CapMap": { - "tailscale.com/cap/webui": [{}] - } - } - }, - "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": { - "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, - "LastSeen": "2026-02-22T20:30:00.1Z", - "Online": true, - "ComputedName": "user1", - "ComputedNameWithHost": "user1" - }, - "UserProfile": { - "ID": 4156223528223174, - "LoginName": "kratail2tid@passkey", - "DisplayName": "kratail2tid" - }, - "CapMap": { - "tailscale.com/cap/webui": [{}] - } - } - } - } + ] }, "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": [ @@ -2100,378 +273,21 @@ ], "CapGrant": [ { - "Dsts": ["100.103.90.82/32", "fd7a:115c:a1e0::9e37:5a52/128"], + "Dsts": [ + "100.103.90.82/32", + "fd7a:115c:a1e0::9e37:5a52/128" + ], "CapMap": { - "tailscale.com/cap/webui": [{}] + "tailscale.com/cap/webui": [ + {} + ] } } ] } - ], - "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.103.90.82/32", - "Cap": "tailscale.com/cap/webui", - "Values": [{}] - }, - { - "Dst": "fd7a:115c:a1e0::9e37:5a52/128", - "Cap": "tailscale.com/cap/webui", - "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": { - "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/webui": [{}] - } - } - }, - "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": { - "tailscale.com/cap/webui": [{}] - } - } - }, - "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": { - "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/webui": [{}] - } - } - }, - "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"], - "LastSeen": "2026-02-22T07:30:00.1Z", - "Online": true, - "ComputedName": "tagged-server", - "ComputedNameWithHost": "tagged-server" - }, - "UserProfile": { - "ID": 1260082990019555, - "LoginName": "tagged-devices", - "DisplayName": "Tagged Devices" - }, - "CapMap": { - "tailscale.com/cap/webui": [{}] - } - } - }, - "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": { - "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/webui": [{}] - } - } - }, - "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": { - "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, - "LastSeen": "2026-02-22T20:30:00.1Z", - "Online": true, - "ComputedName": "user1", - "ComputedNameWithHost": "user1" - }, - "UserProfile": { - "ID": 4156223528223174, - "LoginName": "kratail2tid@passkey", - "DisplayName": "kratail2tid" - }, - "CapMap": { - "tailscale.com/cap/webui": [{}] - } - } - } - } + ] }, "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": [ @@ -2482,370 +298,19 @@ ], "CapGrant": [ { - "Dsts": ["100.90.199.68/32", "fd7a:115c:a1e0::2d01:c747/128"], + "Dsts": [ + "100.90.199.68/32", + "fd7a:115c:a1e0::2d01:c747/128" + ], "CapMap": { - "tailscale.com/cap/webui": [{}] + "tailscale.com/cap/webui": [ + {} + ] } } ] } - ], - "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.90.199.68/32", - "Cap": "tailscale.com/cap/webui", - "Values": [{}] - }, - { - "Dst": "fd7a:115c:a1e0::2d01:c747/128", - "Cap": "tailscale.com/cap/webui", - "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": { - "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/webui": [{}] - } - } - }, - "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": { - "tailscale.com/cap/webui": [{}] - } - } - }, - "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": { - "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/webui": [{}] - } - } - }, - "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": { - "tailscale.com/cap/webui": [{}] - } - } - }, - "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": { - "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/webui": [{}] - } - } - }, - "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": { - "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/webui": [{}] - } - } - } - } + ] } } } diff --git a/hscontrol/policy/v2/testdata/grant_results/GRANT-A4.hujson b/hscontrol/policy/v2/testdata/grant_results/GRANT-A4.hujson index 628f09c76..769dedb04 100644 --- a/hscontrol/policy/v2/testdata/grant_results/GRANT-A4.hujson +++ b/hscontrol/policy/v2/testdata/grant_results/GRANT-A4.hujson @@ -5,23 +5,37 @@ // Expected: Rules on 7 nodes { "test_id": "GRANT-A4", - "timestamp": "2026-02-23T00:18:54Z", - "propagation_wait_seconds": 15, "input": { - "policy_file": "/home/kradalby/acl-explore/grant_policies/grant_a4.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -30,106 +44,89 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "grants": [ { - "src": ["*"], - "dst": ["*"], + "src": [ + "*" + ], + "dst": [ + "*" + ], "app": { - "tailscale.com/cap/relay": [{}] + "tailscale.com/cap/relay": [ + {} + ] } } ] }, - "grants_section": [ - { - "src": ["*"], - "dst": ["*"], - "app": { - "tailscale.com/cap/relay": [{}] - } - } - ], - "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"], + "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"], + "tags": [ + "tag:router" + ], "ipv4": "100.92.142.61", - "ipv6": "fd7a:115c:a1e0::3e37:8e3d", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] + "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"], + "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"], + "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" @@ -138,10 +135,6 @@ }, "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": [ @@ -152,9 +145,14 @@ ], "CapGrant": [ { - "Dsts": ["100.85.66.106/32", "fd7a:115c:a1e0::7c37:426a/128"], + "Dsts": [ + "100.85.66.106/32", + "fd7a:115c:a1e0::7c37:426a/128" + ], "CapMap": { - "tailscale.com/cap/relay": [{}] + "tailscale.com/cap/relay": [ + {} + ] } } ] @@ -168,416 +166,19 @@ ], "CapGrant": [ { - "Dsts": ["100.85.66.106/32", "fd7a:115c:a1e0::7c37:426a/128"], + "Dsts": [ + "100.85.66.106/32", + "fd7a:115c:a1e0::7c37:426a/128" + ], "CapMap": { "tailscale.com/cap/relay-target": null } } ] } - ], - "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.85.66.106/32", - "Cap": "tailscale.com/cap/relay", - "Values": [{}] - }, - { - "Dst": "fd7a:115c:a1e0::7c37:426a/128", - "Cap": "tailscale.com/cap/relay", - "Values": [{}] - } - ] - }, - { - "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.85.66.106/32", - "Cap": "tailscale.com/cap/relay-target", - "Values": null - }, - { - "Dst": "fd7a:115c:a1e0::7c37:426a/128", - "Cap": "tailscale.com/cap/relay-target", - "Values": null - } - ] - } - ], - "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": { - "tailscale.com/cap/relay": [{}], - "tailscale.com/cap/relay-target": 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": { - "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/relay": [{}], - "tailscale.com/cap/relay-target": 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": { - "tailscale.com/cap/relay": [{}], - "tailscale.com/cap/relay-target": 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": { - "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/relay": [{}], - "tailscale.com/cap/relay-target": 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": { - "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/relay": [{}], - "tailscale.com/cap/relay-target": 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": { - "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/relay": [{}], - "tailscale.com/cap/relay-target": 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": [ @@ -588,9 +189,14 @@ ], "CapGrant": [ { - "Dsts": ["100.92.142.61/32", "fd7a:115c:a1e0::3e37:8e3d/128"], + "Dsts": [ + "100.92.142.61/32", + "fd7a:115c:a1e0::3e37:8e3d/128" + ], "CapMap": { - "tailscale.com/cap/relay": [{}] + "tailscale.com/cap/relay": [ + {} + ] } } ] @@ -604,415 +210,19 @@ ], "CapGrant": [ { - "Dsts": ["100.92.142.61/32", "fd7a:115c:a1e0::3e37:8e3d/128"], + "Dsts": [ + "100.92.142.61/32", + "fd7a:115c:a1e0::3e37:8e3d/128" + ], "CapMap": { "tailscale.com/cap/relay-target": null } } ] } - ], - "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.92.142.61/32", - "Cap": "tailscale.com/cap/relay", - "Values": [{}] - }, - { - "Dst": "fd7a:115c:a1e0::3e37:8e3d/128", - "Cap": "tailscale.com/cap/relay", - "Values": [{}] - } - ] - }, - { - "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.92.142.61/32", - "Cap": "tailscale.com/cap/relay-target", - "Values": null - }, - { - "Dst": "fd7a:115c:a1e0::3e37:8e3d/128", - "Cap": "tailscale.com/cap/relay-target", - "Values": null - } - ] - } - ], - "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": { - "tailscale.com/cap/relay": [{}], - "tailscale.com/cap/relay-target": 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": { - "tailscale.com/cap/relay": [{}], - "tailscale.com/cap/relay-target": 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": { - "tailscale.com/cap/relay": [{}], - "tailscale.com/cap/relay-target": 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": { - "tailscale.com/cap/relay": [{}], - "tailscale.com/cap/relay-target": 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": { - "tailscale.com/cap/relay": [{}], - "tailscale.com/cap/relay-target": 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": { - "tailscale.com/cap/relay": [{}], - "tailscale.com/cap/relay-target": 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": [ @@ -1023,9 +233,14 @@ ], "CapGrant": [ { - "Dsts": ["100.83.200.69/32", "fd7a:115c:a1e0::c537:c845/128"], + "Dsts": [ + "100.83.200.69/32", + "fd7a:115c:a1e0::c537:c845/128" + ], "CapMap": { - "tailscale.com/cap/relay": [{}] + "tailscale.com/cap/relay": [ + {} + ] } } ] @@ -1039,461 +254,22 @@ ], "CapGrant": [ { - "Dsts": ["100.83.200.69/32", "fd7a:115c:a1e0::c537:c845/128"], + "Dsts": [ + "100.83.200.69/32", + "fd7a:115c:a1e0::c537:c845/128" + ], "CapMap": { "tailscale.com/cap/relay-target": null } } ] } - ], - "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.83.200.69/32", - "Cap": "tailscale.com/cap/relay", - "Values": [{}] - }, - { - "Dst": "fd7a:115c:a1e0::c537:c845/128", - "Cap": "tailscale.com/cap/relay", - "Values": [{}] - } - ] - }, - { - "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.83.200.69/32", - "Cap": "tailscale.com/cap/relay-target", - "Values": null - }, - { - "Dst": "fd7a:115c:a1e0::c537:c845/128", - "Cap": "tailscale.com/cap/relay-target", - "Values": null - } - ] - } - ], - "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": { - "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/relay": [{}], - "tailscale.com/cap/relay-target": 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": { - "tailscale.com/cap/relay": [{}], - "tailscale.com/cap/relay-target": 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": { - "tailscale.com/cap/relay": [{}], - "tailscale.com/cap/relay-target": 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": { - "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/relay": [{}], - "tailscale.com/cap/relay-target": 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": { - "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/relay": [{}], - "tailscale.com/cap/relay-target": 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": { - "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/relay": [{}], - "tailscale.com/cap/relay-target": 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 - } - } + "packet_filter_rules": 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": [ @@ -1504,9 +280,14 @@ ], "CapGrant": [ { - "Dsts": ["100.108.74.26/32", "fd7a:115c:a1e0::b901:4a87/128"], + "Dsts": [ + "100.108.74.26/32", + "fd7a:115c:a1e0::b901:4a87/128" + ], "CapMap": { - "tailscale.com/cap/relay": [{}] + "tailscale.com/cap/relay": [ + {} + ] } } ] @@ -1520,417 +301,19 @@ ], "CapGrant": [ { - "Dsts": ["100.108.74.26/32", "fd7a:115c:a1e0::b901:4a87/128"], + "Dsts": [ + "100.108.74.26/32", + "fd7a:115c:a1e0::b901:4a87/128" + ], "CapMap": { "tailscale.com/cap/relay-target": null } } ] } - ], - "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/relay", - "Values": [{}] - }, - { - "Dst": "fd7a:115c:a1e0::b901:4a87/128", - "Cap": "tailscale.com/cap/relay", - "Values": [{}] - } - ] - }, - { - "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/relay-target", - "Values": null - }, - { - "Dst": "fd7a:115c:a1e0::b901:4a87/128", - "Cap": "tailscale.com/cap/relay-target", - "Values": null - } - ] - } - ], - "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/relay": [{}], - "tailscale.com/cap/relay-target": 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": { - "tailscale.com/cap/relay": [{}], - "tailscale.com/cap/relay-target": 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": { - "tailscale.com/cap/relay": [{}], - "tailscale.com/cap/relay-target": 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": { - "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/relay": [{}], - "tailscale.com/cap/relay-target": 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": { - "tailscale.com/cap/relay": [{}], - "tailscale.com/cap/relay-target": 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, - "LastSeen": "2026-02-22T20:30:00.1Z", - "Online": true, - "ComputedName": "user1", - "ComputedNameWithHost": "user1" - }, - "UserProfile": { - "ID": 4156223528223174, - "LoginName": "kratail2tid@passkey", - "DisplayName": "kratail2tid" - }, - "CapMap": { - "tailscale.com/cap/relay": [{}], - "tailscale.com/cap/relay-target": 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": [ @@ -1941,9 +324,14 @@ ], "CapGrant": [ { - "Dsts": ["100.110.121.96/32", "fd7a:115c:a1e0::1737:7960/128"], + "Dsts": [ + "100.110.121.96/32", + "fd7a:115c:a1e0::1737:7960/128" + ], "CapMap": { - "tailscale.com/cap/relay": [{}] + "tailscale.com/cap/relay": [ + {} + ] } } ] @@ -1957,419 +345,19 @@ ], "CapGrant": [ { - "Dsts": ["100.110.121.96/32", "fd7a:115c:a1e0::1737:7960/128"], + "Dsts": [ + "100.110.121.96/32", + "fd7a:115c:a1e0::1737:7960/128" + ], "CapMap": { "tailscale.com/cap/relay-target": null } } ] } - ], - "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.110.121.96/32", - "Cap": "tailscale.com/cap/relay", - "Values": [{}] - }, - { - "Dst": "fd7a:115c:a1e0::1737:7960/128", - "Cap": "tailscale.com/cap/relay", - "Values": [{}] - } - ] - }, - { - "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.110.121.96/32", - "Cap": "tailscale.com/cap/relay-target", - "Values": null - }, - { - "Dst": "fd7a:115c:a1e0::1737:7960/128", - "Cap": "tailscale.com/cap/relay-target", - "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": { - "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/relay": [{}], - "tailscale.com/cap/relay-target": 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": { - "tailscale.com/cap/relay": [{}], - "tailscale.com/cap/relay-target": 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": { - "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/relay": [{}], - "tailscale.com/cap/relay-target": 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"], - "LastSeen": "2026-02-22T07:30:00.1Z", - "Online": true, - "ComputedName": "tagged-server", - "ComputedNameWithHost": "tagged-server" - }, - "UserProfile": { - "ID": 1260082990019555, - "LoginName": "tagged-devices", - "DisplayName": "Tagged Devices" - }, - "CapMap": { - "tailscale.com/cap/relay": [{}], - "tailscale.com/cap/relay-target": 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": { - "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, - "LastSeen": "2026-02-21T20:00:00.1Z", - "Online": true, - "ComputedName": "user-mon", - "ComputedNameWithHost": "user-mon" - }, - "UserProfile": { - "ID": 3982058329734709, - "LoginName": "monitorpasskeykradalby@passkey", - "DisplayName": "monitorpasskeykradalby" - }, - "CapMap": { - "tailscale.com/cap/relay": [{}], - "tailscale.com/cap/relay-target": 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": { - "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, - "LastSeen": "2026-02-22T20:30:00.1Z", - "Online": true, - "ComputedName": "user1", - "ComputedNameWithHost": "user1" - }, - "UserProfile": { - "ID": 4156223528223174, - "LoginName": "kratail2tid@passkey", - "DisplayName": "kratail2tid" - }, - "CapMap": { - "tailscale.com/cap/relay": [{}], - "tailscale.com/cap/relay-target": 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": [ @@ -2380,9 +368,14 @@ ], "CapGrant": [ { - "Dsts": ["100.103.90.82/32", "fd7a:115c:a1e0::9e37:5a52/128"], + "Dsts": [ + "100.103.90.82/32", + "fd7a:115c:a1e0::9e37:5a52/128" + ], "CapMap": { - "tailscale.com/cap/relay": [{}] + "tailscale.com/cap/relay": [ + {} + ] } } ] @@ -2396,418 +389,19 @@ ], "CapGrant": [ { - "Dsts": ["100.103.90.82/32", "fd7a:115c:a1e0::9e37:5a52/128"], + "Dsts": [ + "100.103.90.82/32", + "fd7a:115c:a1e0::9e37:5a52/128" + ], "CapMap": { "tailscale.com/cap/relay-target": null } } ] } - ], - "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.103.90.82/32", - "Cap": "tailscale.com/cap/relay", - "Values": [{}] - }, - { - "Dst": "fd7a:115c:a1e0::9e37:5a52/128", - "Cap": "tailscale.com/cap/relay", - "Values": [{}] - } - ] - }, - { - "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.103.90.82/32", - "Cap": "tailscale.com/cap/relay-target", - "Values": null - }, - { - "Dst": "fd7a:115c:a1e0::9e37:5a52/128", - "Cap": "tailscale.com/cap/relay-target", - "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": { - "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/relay": [{}], - "tailscale.com/cap/relay-target": 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": { - "tailscale.com/cap/relay": [{}], - "tailscale.com/cap/relay-target": 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": { - "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/relay": [{}], - "tailscale.com/cap/relay-target": 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"], - "LastSeen": "2026-02-22T07:30:00.1Z", - "Online": true, - "ComputedName": "tagged-server", - "ComputedNameWithHost": "tagged-server" - }, - "UserProfile": { - "ID": 1260082990019555, - "LoginName": "tagged-devices", - "DisplayName": "Tagged Devices" - }, - "CapMap": { - "tailscale.com/cap/relay": [{}], - "tailscale.com/cap/relay-target": 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": { - "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/relay": [{}], - "tailscale.com/cap/relay-target": 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": { - "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, - "LastSeen": "2026-02-22T20:30:00.1Z", - "Online": true, - "ComputedName": "user1", - "ComputedNameWithHost": "user1" - }, - "UserProfile": { - "ID": 4156223528223174, - "LoginName": "kratail2tid@passkey", - "DisplayName": "kratail2tid" - }, - "CapMap": { - "tailscale.com/cap/relay": [{}], - "tailscale.com/cap/relay-target": 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": [ @@ -2818,9 +412,14 @@ ], "CapGrant": [ { - "Dsts": ["100.90.199.68/32", "fd7a:115c:a1e0::2d01:c747/128"], + "Dsts": [ + "100.90.199.68/32", + "fd7a:115c:a1e0::2d01:c747/128" + ], "CapMap": { - "tailscale.com/cap/relay": [{}] + "tailscale.com/cap/relay": [ + {} + ] } } ] @@ -2834,410 +433,17 @@ ], "CapGrant": [ { - "Dsts": ["100.90.199.68/32", "fd7a:115c:a1e0::2d01:c747/128"], + "Dsts": [ + "100.90.199.68/32", + "fd7a:115c:a1e0::2d01:c747/128" + ], "CapMap": { "tailscale.com/cap/relay-target": null } } ] } - ], - "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.90.199.68/32", - "Cap": "tailscale.com/cap/relay", - "Values": [{}] - }, - { - "Dst": "fd7a:115c:a1e0::2d01:c747/128", - "Cap": "tailscale.com/cap/relay", - "Values": [{}] - } - ] - }, - { - "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.90.199.68/32", - "Cap": "tailscale.com/cap/relay-target", - "Values": null - }, - { - "Dst": "fd7a:115c:a1e0::2d01:c747/128", - "Cap": "tailscale.com/cap/relay-target", - "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": { - "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/relay": [{}], - "tailscale.com/cap/relay-target": 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": { - "tailscale.com/cap/relay": [{}], - "tailscale.com/cap/relay-target": 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": { - "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/relay": [{}], - "tailscale.com/cap/relay-target": 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": { - "tailscale.com/cap/relay": [{}], - "tailscale.com/cap/relay-target": 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": { - "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/relay": [{}], - "tailscale.com/cap/relay-target": 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": { - "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/relay": [{}], - "tailscale.com/cap/relay-target": null - } - } - } - } + ] } } } diff --git a/hscontrol/policy/v2/testdata/grant_results/GRANT-A5.hujson b/hscontrol/policy/v2/testdata/grant_results/GRANT-A5.hujson index 9b8543eb4..acdcc81f3 100644 --- a/hscontrol/policy/v2/testdata/grant_results/GRANT-A5.hujson +++ b/hscontrol/policy/v2/testdata/grant_results/GRANT-A5.hujson @@ -5,24 +5,38 @@ // Expected: Error (HTTP 400) — capability name must not be in the tailscale.com domain { "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: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"] + "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", @@ -31,25 +45,36 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "grants": [ { - "src": ["*"], - "dst": ["*"], + "src": [ + "*" + ], + "dst": [ + "*" + ], "app": { - "tailscale.com/cap/relay-target": [{}] + "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" } + "api_response_body": { + "message": "capability name must not be in the tailscale.com domain" + } } } diff --git a/hscontrol/policy/v2/testdata/grant_results/GRANT-A6.hujson b/hscontrol/policy/v2/testdata/grant_results/GRANT-A6.hujson index f44867f6a..61fa8771e 100644 --- a/hscontrol/policy/v2/testdata/grant_results/GRANT-A6.hujson +++ b/hscontrol/policy/v2/testdata/grant_results/GRANT-A6.hujson @@ -5,23 +5,37 @@ // Expected: Rules on user-kris, user-mon, user1 { "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: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"] + "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", @@ -30,19 +44,31 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "grants": [ { - "src": ["autogroup:member"], - "dst": ["autogroup:self"], + "src": [ + "autogroup:member" + ], + "dst": [ + "autogroup:self" + ], "app": { "tailscale.com/cap/drive": [ { - "shares": ["*"], + "shares": [ + "*" + ], "access": "rw" } ] @@ -50,96 +76,62 @@ } ] }, - "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"], + "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"], + "tags": [ + "tag:router" + ], "ipv4": "100.92.142.61", - "ipv6": "fd7a:115c:a1e0::3e37:8e3d", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] + "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"], + "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"], + "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" @@ -148,245 +140,39 @@ }, "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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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"], + "SrcIPs": [ + "100.110.121.96", + "fd7a:115c:a1e0::1737:7960" + ], "CapGrant": [ { - "Dsts": ["100.110.121.96/32", "fd7a:115c:a1e0::1737:7960/128"], + "Dsts": [ + "100.110.121.96/32", + "fd7a:115c:a1e0::1737:7960/128" + ], "CapMap": { "tailscale.com/cap/drive": [ { - "shares": ["*"], + "shares": [ + "*" + ], "access": "rw" } ] @@ -395,118 +181,43 @@ ] }, { - "SrcIPs": ["100.110.121.96", "fd7a:115c:a1e0::1737:7960"], + "SrcIPs": [ + "100.110.121.96", + "fd7a:115c:a1e0::1737:7960" + ], "CapGrant": [ { - "Dsts": ["100.110.121.96/32", "fd7a:115c:a1e0::1737:7960/128"], + "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"], + "SrcIPs": [ + "100.103.90.82", + "fd7a:115c:a1e0::9e37:5a52" + ], "CapGrant": [ { - "Dsts": ["100.103.90.82/32", "fd7a:115c:a1e0::9e37:5a52/128"], + "Dsts": [ + "100.103.90.82/32", + "fd7a:115c:a1e0::9e37:5a52/128" + ], "CapMap": { "tailscale.com/cap/drive": [ { - "shares": ["*"], + "shares": [ + "*" + ], "access": "rw" } ] @@ -515,118 +226,43 @@ ] }, { - "SrcIPs": ["100.103.90.82", "fd7a:115c:a1e0::9e37:5a52"], + "SrcIPs": [ + "100.103.90.82", + "fd7a:115c:a1e0::9e37:5a52" + ], "CapGrant": [ { - "Dsts": ["100.103.90.82/32", "fd7a:115c:a1e0::9e37:5a52/128"], + "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"], + "SrcIPs": [ + "100.90.199.68", + "fd7a:115c:a1e0::2d01:c747" + ], "CapGrant": [ { - "Dsts": ["100.90.199.68/32", "fd7a:115c:a1e0::2d01:c747/128"], + "Dsts": [ + "100.90.199.68/32", + "fd7a:115c:a1e0::2d01:c747/128" + ], "CapMap": { "tailscale.com/cap/drive": [ { - "shares": ["*"], + "shares": [ + "*" + ], "access": "rw" } ] @@ -635,102 +271,23 @@ ] }, { - "SrcIPs": ["100.90.199.68", "fd7a:115c:a1e0::2d01:c747"], + "SrcIPs": [ + "100.90.199.68", + "fd7a:115c:a1e0::2d01:c747" + ], "CapGrant": [ { - "Dsts": ["100.90.199.68/32", "fd7a:115c:a1e0::2d01:c747/128"], + "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 - } - } + ] } } } diff --git a/hscontrol/policy/v2/testdata/grant_results/GRANT-B1.hujson b/hscontrol/policy/v2/testdata/grant_results/GRANT-B1.hujson index 601ebca7d..87b04c228 100644 --- a/hscontrol/policy/v2/testdata/grant_results/GRANT-B1.hujson +++ b/hscontrol/policy/v2/testdata/grant_results/GRANT-B1.hujson @@ -5,23 +5,37 @@ // Expected: Rules on tagged-server { "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: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"] + "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", @@ -30,20 +44,32 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "grants": [ { - "src": ["*"], - "dst": ["tag:server"], + "src": [ + "*" + ], + "dst": [ + "tag:server" + ], "app": { "tailscale.com/cap/kubernetes": [ { "impersonate": { - "groups": ["system:masters"] + "groups": [ + "system:masters" + ] } } ] @@ -51,97 +77,62 @@ } ] }, - "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"], + "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"], + "tags": [ + "tag:router" + ], "ipv4": "100.92.142.61", - "ipv6": "fd7a:115c:a1e0::3e37:8e3d", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] + "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"], + "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"], + "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" @@ -150,325 +141,18 @@ }, "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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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": [ @@ -479,12 +163,17 @@ ], "CapGrant": [ { - "Dsts": ["100.108.74.26/32", "fd7a:115c:a1e0::b901:4a87/128"], + "Dsts": [ + "100.108.74.26/32", + "fd7a:115c:a1e0::b901:4a87/128" + ], "CapMap": { "tailscale.com/cap/kubernetes": [ { "impersonate": { - "groups": ["system:masters"] + "groups": [ + "system:masters" + ] } } ] @@ -492,681 +181,16 @@ } ] } - ], - "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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": null } } } diff --git a/hscontrol/policy/v2/testdata/grant_results/GRANT-B2.hujson b/hscontrol/policy/v2/testdata/grant_results/GRANT-B2.hujson index 37f771230..501330e70 100644 --- a/hscontrol/policy/v2/testdata/grant_results/GRANT-B2.hujson +++ b/hscontrol/policy/v2/testdata/grant_results/GRANT-B2.hujson @@ -5,23 +5,37 @@ // Expected: Rules on tagged-server { "test_id": "GRANT-B2", - "timestamp": "2026-02-23T00:22:39Z", - "propagation_wait_seconds": 15, "input": { - "policy_file": "/home/kradalby/acl-explore/grant_policies/grant_b2.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -30,25 +44,39 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "grants": [ { - "src": ["*"], - "dst": ["tag:server"], + "src": [ + "*" + ], + "dst": [ + "tag:server" + ], "app": { "tailscale.com/cap/kubernetes": [ { "impersonate": { - "groups": ["readers"] + "groups": [ + "readers" + ] } }, { "impersonate": { - "groups": ["writers"] + "groups": [ + "writers" + ] } } ] @@ -56,102 +84,62 @@ } ] }, - "grants_section": [ - { - "src": ["*"], - "dst": ["tag:server"], - "app": { - "tailscale.com/cap/kubernetes": [ - { - "impersonate": { - "groups": ["readers"] - } - }, - { - "impersonate": { - "groups": ["writers"] - } - } - ] - } - } - ], - "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"], + "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"], + "tags": [ + "tag:router" + ], "ipv4": "100.92.142.61", - "ipv6": "fd7a:115c:a1e0::3e37:8e3d", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] + "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"], + "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"], + "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" @@ -160,325 +148,18 @@ }, "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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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": [ @@ -489,17 +170,24 @@ ], "CapGrant": [ { - "Dsts": ["100.108.74.26/32", "fd7a:115c:a1e0::b901:4a87/128"], + "Dsts": [ + "100.108.74.26/32", + "fd7a:115c:a1e0::b901:4a87/128" + ], "CapMap": { "tailscale.com/cap/kubernetes": [ { "impersonate": { - "groups": ["readers"] + "groups": [ + "readers" + ] } }, { "impersonate": { - "groups": ["writers"] + "groups": [ + "writers" + ] } } ] @@ -507,721 +195,16 @@ } ] } - ], - "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": ["readers"] - } - }, - { - "impersonate": { - "groups": ["writers"] - } - } - ] - }, - { - "Dst": "fd7a:115c:a1e0::b901:4a87/128", - "Cap": "tailscale.com/cap/kubernetes", - "Values": [ - { - "impersonate": { - "groups": ["readers"] - } - }, - { - "impersonate": { - "groups": ["writers"] - } - } - ] - } - ] - } - ], - "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": ["readers"] - } - }, - { - "impersonate": { - "groups": ["writers"] - } - } - ] - } - } - }, - "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": ["readers"] - } - }, - { - "impersonate": { - "groups": ["writers"] - } - } - ] - } - } - }, - "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": ["readers"] - } - }, - { - "impersonate": { - "groups": ["writers"] - } - } - ] - } - } - }, - "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": ["readers"] - } - }, - { - "impersonate": { - "groups": ["writers"] - } - } - ] - } - } - }, - "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": ["readers"] - } - }, - { - "impersonate": { - "groups": ["writers"] - } - } - ] - } - } - }, - "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": ["readers"] - } - }, - { - "impersonate": { - "groups": ["writers"] - } - } - ] - } - } - } - } + ] }, "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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": null } } } diff --git a/hscontrol/policy/v2/testdata/grant_results/GRANT-B3.hujson b/hscontrol/policy/v2/testdata/grant_results/GRANT-B3.hujson index 45650204e..2be580adb 100644 --- a/hscontrol/policy/v2/testdata/grant_results/GRANT-B3.hujson +++ b/hscontrol/policy/v2/testdata/grant_results/GRANT-B3.hujson @@ -5,23 +5,37 @@ // Expected: Rules on 7 nodes { "test_id": "GRANT-B3", - "timestamp": "2026-02-23T00:23:52Z", - "propagation_wait_seconds": 15, "input": { - "policy_file": "/home/kradalby/acl-explore/grant_policies/grant_b3.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -30,19 +44,31 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "grants": [ { - "src": ["*"], - "dst": ["*"], + "src": [ + "*" + ], + "dst": [ + "*" + ], "app": { "tailscale.com/cap/drive": [ { - "shares": ["docs"], + "shares": [ + "docs" + ], "access": "ro" } ] @@ -50,96 +76,62 @@ } ] }, - "grants_section": [ - { - "src": ["*"], - "dst": ["*"], - "app": { - "tailscale.com/cap/drive": [ - { - "shares": ["docs"], - "access": "ro" - } - ] - } - } - ], - "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"], + "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"], + "tags": [ + "tag:router" + ], "ipv4": "100.92.142.61", - "ipv6": "fd7a:115c:a1e0::3e37:8e3d", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] + "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"], + "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"], + "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" @@ -148,10 +140,6 @@ }, "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": [ @@ -162,11 +150,16 @@ ], "CapGrant": [ { - "Dsts": ["100.85.66.106/32", "fd7a:115c:a1e0::7c37:426a/128"], + "Dsts": [ + "100.85.66.106/32", + "fd7a:115c:a1e0::7c37:426a/128" + ], "CapMap": { "tailscale.com/cap/drive": [ { - "shares": ["docs"], + "shares": [ + "docs" + ], "access": "ro" } ] @@ -183,456 +176,19 @@ ], "CapGrant": [ { - "Dsts": ["100.85.66.106/32", "fd7a:115c:a1e0::7c37:426a/128"], + "Dsts": [ + "100.85.66.106/32", + "fd7a:115c:a1e0::7c37:426a/128" + ], "CapMap": { "tailscale.com/cap/drive-sharer": null } } ] } - ], - "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.85.66.106/32", - "Cap": "tailscale.com/cap/drive", - "Values": [ - { - "shares": ["docs"], - "access": "ro" - } - ] - }, - { - "Dst": "fd7a:115c:a1e0::7c37:426a/128", - "Cap": "tailscale.com/cap/drive", - "Values": [ - { - "shares": ["docs"], - "access": "ro" - } - ] - } - ] - }, - { - "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.85.66.106/32", - "Cap": "tailscale.com/cap/drive-sharer", - "Values": null - }, - { - "Dst": "fd7a:115c:a1e0::7c37:426a/128", - "Cap": "tailscale.com/cap/drive-sharer", - "Values": null - } - ] - } - ], - "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": { - "tailscale.com/cap/drive": [ - { - "shares": ["docs"], - "access": "ro" - } - ], - "tailscale.com/cap/drive-sharer": 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": { - "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/drive": [ - { - "shares": ["docs"], - "access": "ro" - } - ], - "tailscale.com/cap/drive-sharer": 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": { - "tailscale.com/cap/drive": [ - { - "shares": ["docs"], - "access": "ro" - } - ], - "tailscale.com/cap/drive-sharer": 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": { - "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/drive": [ - { - "shares": ["docs"], - "access": "ro" - } - ], - "tailscale.com/cap/drive-sharer": 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": { - "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/drive": [ - { - "shares": ["docs"], - "access": "ro" - } - ], - "tailscale.com/cap/drive-sharer": 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": { - "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/drive": [ - { - "shares": ["docs"], - "access": "ro" - } - ], - "tailscale.com/cap/drive-sharer": 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": [ @@ -643,11 +199,16 @@ ], "CapGrant": [ { - "Dsts": ["100.92.142.61/32", "fd7a:115c:a1e0::3e37:8e3d/128"], + "Dsts": [ + "100.92.142.61/32", + "fd7a:115c:a1e0::3e37:8e3d/128" + ], "CapMap": { "tailscale.com/cap/drive": [ { - "shares": ["docs"], + "shares": [ + "docs" + ], "access": "ro" } ] @@ -664,455 +225,19 @@ ], "CapGrant": [ { - "Dsts": ["100.92.142.61/32", "fd7a:115c:a1e0::3e37:8e3d/128"], + "Dsts": [ + "100.92.142.61/32", + "fd7a:115c:a1e0::3e37:8e3d/128" + ], "CapMap": { "tailscale.com/cap/drive-sharer": null } } ] } - ], - "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.92.142.61/32", - "Cap": "tailscale.com/cap/drive", - "Values": [ - { - "shares": ["docs"], - "access": "ro" - } - ] - }, - { - "Dst": "fd7a:115c:a1e0::3e37:8e3d/128", - "Cap": "tailscale.com/cap/drive", - "Values": [ - { - "shares": ["docs"], - "access": "ro" - } - ] - } - ] - }, - { - "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.92.142.61/32", - "Cap": "tailscale.com/cap/drive-sharer", - "Values": null - }, - { - "Dst": "fd7a:115c:a1e0::3e37:8e3d/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/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": { - "tailscale.com/cap/drive": [ - { - "shares": ["docs"], - "access": "ro" - } - ], - "tailscale.com/cap/drive-sharer": 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": { - "tailscale.com/cap/drive": [ - { - "shares": ["docs"], - "access": "ro" - } - ], - "tailscale.com/cap/drive-sharer": 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": { - "tailscale.com/cap/drive": [ - { - "shares": ["docs"], - "access": "ro" - } - ], - "tailscale.com/cap/drive-sharer": 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": { - "tailscale.com/cap/drive": [ - { - "shares": ["docs"], - "access": "ro" - } - ], - "tailscale.com/cap/drive-sharer": 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": { - "tailscale.com/cap/drive": [ - { - "shares": ["docs"], - "access": "ro" - } - ], - "tailscale.com/cap/drive-sharer": 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": { - "tailscale.com/cap/drive": [ - { - "shares": ["docs"], - "access": "ro" - } - ], - "tailscale.com/cap/drive-sharer": 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": [ @@ -1123,11 +248,16 @@ ], "CapGrant": [ { - "Dsts": ["100.83.200.69/32", "fd7a:115c:a1e0::c537:c845/128"], + "Dsts": [ + "100.83.200.69/32", + "fd7a:115c:a1e0::c537:c845/128" + ], "CapMap": { "tailscale.com/cap/drive": [ { - "shares": ["docs"], + "shares": [ + "docs" + ], "access": "ro" } ] @@ -1144,501 +274,22 @@ ], "CapGrant": [ { - "Dsts": ["100.83.200.69/32", "fd7a:115c:a1e0::c537:c845/128"], + "Dsts": [ + "100.83.200.69/32", + "fd7a:115c:a1e0::c537:c845/128" + ], "CapMap": { "tailscale.com/cap/drive-sharer": null } } ] } - ], - "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.83.200.69/32", - "Cap": "tailscale.com/cap/drive", - "Values": [ - { - "shares": ["docs"], - "access": "ro" - } - ] - }, - { - "Dst": "fd7a:115c:a1e0::c537:c845/128", - "Cap": "tailscale.com/cap/drive", - "Values": [ - { - "shares": ["docs"], - "access": "ro" - } - ] - } - ] - }, - { - "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.83.200.69/32", - "Cap": "tailscale.com/cap/drive-sharer", - "Values": null - }, - { - "Dst": "fd7a:115c:a1e0::c537:c845/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/tagged-client/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/drive": [ - { - "shares": ["docs"], - "access": "ro" - } - ], - "tailscale.com/cap/drive-sharer": 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": { - "tailscale.com/cap/drive": [ - { - "shares": ["docs"], - "access": "ro" - } - ], - "tailscale.com/cap/drive-sharer": 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": { - "tailscale.com/cap/drive": [ - { - "shares": ["docs"], - "access": "ro" - } - ], - "tailscale.com/cap/drive-sharer": 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": { - "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/drive": [ - { - "shares": ["docs"], - "access": "ro" - } - ], - "tailscale.com/cap/drive-sharer": 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": { - "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/drive": [ - { - "shares": ["docs"], - "access": "ro" - } - ], - "tailscale.com/cap/drive-sharer": 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": { - "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/drive": [ - { - "shares": ["docs"], - "access": "ro" - } - ], - "tailscale.com/cap/drive-sharer": 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 - } - } + "packet_filter_rules": 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": [ @@ -1649,11 +300,16 @@ ], "CapGrant": [ { - "Dsts": ["100.108.74.26/32", "fd7a:115c:a1e0::b901:4a87/128"], + "Dsts": [ + "100.108.74.26/32", + "fd7a:115c:a1e0::b901:4a87/128" + ], "CapMap": { "tailscale.com/cap/drive": [ { - "shares": ["docs"], + "shares": [ + "docs" + ], "access": "ro" } ] @@ -1670,456 +326,19 @@ ], "CapGrant": [ { - "Dsts": ["100.108.74.26/32", "fd7a:115c:a1e0::b901:4a87/128"], + "Dsts": [ + "100.108.74.26/32", + "fd7a:115c:a1e0::b901:4a87/128" + ], "CapMap": { "tailscale.com/cap/drive-sharer": null } } ] } - ], - "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/drive", - "Values": [ - { - "shares": ["docs"], - "access": "ro" - } - ] - }, - { - "Dst": "fd7a:115c:a1e0::b901:4a87/128", - "Cap": "tailscale.com/cap/drive", - "Values": [ - { - "shares": ["docs"], - "access": "ro" - } - ] - } - ] - }, - { - "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/drive-sharer", - "Values": null - }, - { - "Dst": "fd7a:115c:a1e0::b901:4a87/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/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/drive": [ - { - "shares": ["docs"], - "access": "ro" - } - ], - "tailscale.com/cap/drive-sharer": 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": { - "tailscale.com/cap/drive": [ - { - "shares": ["docs"], - "access": "ro" - } - ], - "tailscale.com/cap/drive-sharer": 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": { - "tailscale.com/cap/drive": [ - { - "shares": ["docs"], - "access": "ro" - } - ], - "tailscale.com/cap/drive-sharer": 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": { - "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/drive": [ - { - "shares": ["docs"], - "access": "ro" - } - ], - "tailscale.com/cap/drive-sharer": 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": { - "tailscale.com/cap/drive": [ - { - "shares": ["docs"], - "access": "ro" - } - ], - "tailscale.com/cap/drive-sharer": 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": { - "tailscale.com/cap/drive": [ - { - "shares": ["docs"], - "access": "ro" - } - ], - "tailscale.com/cap/drive-sharer": 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": [ @@ -2130,11 +349,16 @@ ], "CapGrant": [ { - "Dsts": ["100.110.121.96/32", "fd7a:115c:a1e0::1737:7960/128"], + "Dsts": [ + "100.110.121.96/32", + "fd7a:115c:a1e0::1737:7960/128" + ], "CapMap": { "tailscale.com/cap/drive": [ { - "shares": ["docs"], + "shares": [ + "docs" + ], "access": "ro" } ] @@ -2151,456 +375,19 @@ ], "CapGrant": [ { - "Dsts": ["100.110.121.96/32", "fd7a:115c:a1e0::1737:7960/128"], + "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": [ - "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.110.121.96/32", - "Cap": "tailscale.com/cap/drive", - "Values": [ - { - "shares": ["docs"], - "access": "ro" - } - ] - }, - { - "Dst": "fd7a:115c:a1e0::1737:7960/128", - "Cap": "tailscale.com/cap/drive", - "Values": [ - { - "shares": ["docs"], - "access": "ro" - } - ] - } - ] - }, - { - "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.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": { - "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/drive": [ - { - "shares": ["docs"], - "access": "ro" - } - ], - "tailscale.com/cap/drive-sharer": 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": { - "tailscale.com/cap/drive": [ - { - "shares": ["docs"], - "access": "ro" - } - ], - "tailscale.com/cap/drive-sharer": 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": { - "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/drive": [ - { - "shares": ["docs"], - "access": "ro" - } - ], - "tailscale.com/cap/drive-sharer": 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": { - "tailscale.com/cap/drive": [ - { - "shares": ["docs"], - "access": "ro" - } - ], - "tailscale.com/cap/drive-sharer": 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": { - "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/drive": [ - { - "shares": ["docs"], - "access": "ro" - } - ], - "tailscale.com/cap/drive-sharer": 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": { - "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/drive": [ - { - "shares": ["docs"], - "access": "ro" - } - ], - "tailscale.com/cap/drive-sharer": 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": [ @@ -2611,11 +398,16 @@ ], "CapGrant": [ { - "Dsts": ["100.103.90.82/32", "fd7a:115c:a1e0::9e37:5a52/128"], + "Dsts": [ + "100.103.90.82/32", + "fd7a:115c:a1e0::9e37:5a52/128" + ], "CapMap": { "tailscale.com/cap/drive": [ { - "shares": ["docs"], + "shares": [ + "docs" + ], "access": "ro" } ] @@ -2632,456 +424,19 @@ ], "CapGrant": [ { - "Dsts": ["100.103.90.82/32", "fd7a:115c:a1e0::9e37:5a52/128"], + "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": [ - "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.103.90.82/32", - "Cap": "tailscale.com/cap/drive", - "Values": [ - { - "shares": ["docs"], - "access": "ro" - } - ] - }, - { - "Dst": "fd7a:115c:a1e0::9e37:5a52/128", - "Cap": "tailscale.com/cap/drive", - "Values": [ - { - "shares": ["docs"], - "access": "ro" - } - ] - } - ] - }, - { - "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.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": { - "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/drive": [ - { - "shares": ["docs"], - "access": "ro" - } - ], - "tailscale.com/cap/drive-sharer": 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": { - "tailscale.com/cap/drive": [ - { - "shares": ["docs"], - "access": "ro" - } - ], - "tailscale.com/cap/drive-sharer": 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": { - "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/drive": [ - { - "shares": ["docs"], - "access": "ro" - } - ], - "tailscale.com/cap/drive-sharer": 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": { - "tailscale.com/cap/drive": [ - { - "shares": ["docs"], - "access": "ro" - } - ], - "tailscale.com/cap/drive-sharer": 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": { - "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/drive": [ - { - "shares": ["docs"], - "access": "ro" - } - ], - "tailscale.com/cap/drive-sharer": 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": { - "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/drive": [ - { - "shares": ["docs"], - "access": "ro" - } - ], - "tailscale.com/cap/drive-sharer": 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": [ @@ -3092,11 +447,16 @@ ], "CapGrant": [ { - "Dsts": ["100.90.199.68/32", "fd7a:115c:a1e0::2d01:c747/128"], + "Dsts": [ + "100.90.199.68/32", + "fd7a:115c:a1e0::2d01:c747/128" + ], "CapMap": { "tailscale.com/cap/drive": [ { - "shares": ["docs"], + "shares": [ + "docs" + ], "access": "ro" } ] @@ -3113,450 +473,17 @@ ], "CapGrant": [ { - "Dsts": ["100.90.199.68/32", "fd7a:115c:a1e0::2d01:c747/128"], + "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": [ - "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.90.199.68/32", - "Cap": "tailscale.com/cap/drive", - "Values": [ - { - "shares": ["docs"], - "access": "ro" - } - ] - }, - { - "Dst": "fd7a:115c:a1e0::2d01:c747/128", - "Cap": "tailscale.com/cap/drive", - "Values": [ - { - "shares": ["docs"], - "access": "ro" - } - ] - } - ] - }, - { - "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.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": { - "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/drive": [ - { - "shares": ["docs"], - "access": "ro" - } - ], - "tailscale.com/cap/drive-sharer": 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": { - "tailscale.com/cap/drive": [ - { - "shares": ["docs"], - "access": "ro" - } - ], - "tailscale.com/cap/drive-sharer": 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": { - "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/drive": [ - { - "shares": ["docs"], - "access": "ro" - } - ], - "tailscale.com/cap/drive-sharer": 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": { - "tailscale.com/cap/drive": [ - { - "shares": ["docs"], - "access": "ro" - } - ], - "tailscale.com/cap/drive-sharer": 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": { - "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/drive": [ - { - "shares": ["docs"], - "access": "ro" - } - ], - "tailscale.com/cap/drive-sharer": 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": { - "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/drive": [ - { - "shares": ["docs"], - "access": "ro" - } - ], - "tailscale.com/cap/drive-sharer": null - } - } - } - } + ] } } } diff --git a/hscontrol/policy/v2/testdata/grant_results/GRANT-B4.hujson b/hscontrol/policy/v2/testdata/grant_results/GRANT-B4.hujson index 72910917b..60c27ab9e 100644 --- a/hscontrol/policy/v2/testdata/grant_results/GRANT-B4.hujson +++ b/hscontrol/policy/v2/testdata/grant_results/GRANT-B4.hujson @@ -5,23 +5,37 @@ // Expected: Rules on 7 nodes { "test_id": "GRANT-B4", - "timestamp": "2026-02-23T00:25:05Z", - "propagation_wait_seconds": 15, "input": { - "policy_file": "/home/kradalby/acl-explore/grant_policies/grant_b4.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -30,23 +44,37 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "grants": [ { - "src": ["*"], - "dst": ["*"], + "src": [ + "*" + ], + "dst": [ + "*" + ], "app": { "tailscale.com/cap/drive": [ { - "shares": ["docs"], + "shares": [ + "docs" + ], "access": "ro" }, { - "shares": ["photos"], + "shares": [ + "photos" + ], "access": "rw" } ] @@ -54,100 +82,62 @@ } ] }, - "grants_section": [ - { - "src": ["*"], - "dst": ["*"], - "app": { - "tailscale.com/cap/drive": [ - { - "shares": ["docs"], - "access": "ro" - }, - { - "shares": ["photos"], - "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"], + "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"], + "tags": [ + "tag:router" + ], "ipv4": "100.92.142.61", - "ipv6": "fd7a:115c:a1e0::3e37:8e3d", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] + "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"], + "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"], + "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" @@ -156,10 +146,6 @@ }, "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": [ @@ -170,15 +156,22 @@ ], "CapGrant": [ { - "Dsts": ["100.85.66.106/32", "fd7a:115c:a1e0::7c37:426a/128"], + "Dsts": [ + "100.85.66.106/32", + "fd7a:115c:a1e0::7c37:426a/128" + ], "CapMap": { "tailscale.com/cap/drive": [ { - "shares": ["docs"], + "shares": [ + "docs" + ], "access": "ro" }, { - "shares": ["photos"], + "shares": [ + "photos" + ], "access": "rw" } ] @@ -195,488 +188,19 @@ ], "CapGrant": [ { - "Dsts": ["100.85.66.106/32", "fd7a:115c:a1e0::7c37:426a/128"], + "Dsts": [ + "100.85.66.106/32", + "fd7a:115c:a1e0::7c37:426a/128" + ], "CapMap": { "tailscale.com/cap/drive-sharer": null } } ] } - ], - "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.85.66.106/32", - "Cap": "tailscale.com/cap/drive", - "Values": [ - { - "shares": ["docs"], - "access": "ro" - }, - { - "shares": ["photos"], - "access": "rw" - } - ] - }, - { - "Dst": "fd7a:115c:a1e0::7c37:426a/128", - "Cap": "tailscale.com/cap/drive", - "Values": [ - { - "shares": ["docs"], - "access": "ro" - }, - { - "shares": ["photos"], - "access": "rw" - } - ] - } - ] - }, - { - "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.85.66.106/32", - "Cap": "tailscale.com/cap/drive-sharer", - "Values": null - }, - { - "Dst": "fd7a:115c:a1e0::7c37:426a/128", - "Cap": "tailscale.com/cap/drive-sharer", - "Values": null - } - ] - } - ], - "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": { - "tailscale.com/cap/drive": [ - { - "shares": ["docs"], - "access": "ro" - }, - { - "shares": ["photos"], - "access": "rw" - } - ], - "tailscale.com/cap/drive-sharer": 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": { - "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/drive": [ - { - "shares": ["docs"], - "access": "ro" - }, - { - "shares": ["photos"], - "access": "rw" - } - ], - "tailscale.com/cap/drive-sharer": 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": { - "tailscale.com/cap/drive": [ - { - "shares": ["docs"], - "access": "ro" - }, - { - "shares": ["photos"], - "access": "rw" - } - ], - "tailscale.com/cap/drive-sharer": 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": { - "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/drive": [ - { - "shares": ["docs"], - "access": "ro" - }, - { - "shares": ["photos"], - "access": "rw" - } - ], - "tailscale.com/cap/drive-sharer": 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": { - "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/drive": [ - { - "shares": ["docs"], - "access": "ro" - }, - { - "shares": ["photos"], - "access": "rw" - } - ], - "tailscale.com/cap/drive-sharer": 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": { - "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/drive": [ - { - "shares": ["docs"], - "access": "ro" - }, - { - "shares": ["photos"], - "access": "rw" - } - ], - "tailscale.com/cap/drive-sharer": 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": [ @@ -687,15 +211,22 @@ ], "CapGrant": [ { - "Dsts": ["100.92.142.61/32", "fd7a:115c:a1e0::3e37:8e3d/128"], + "Dsts": [ + "100.92.142.61/32", + "fd7a:115c:a1e0::3e37:8e3d/128" + ], "CapMap": { "tailscale.com/cap/drive": [ { - "shares": ["docs"], + "shares": [ + "docs" + ], "access": "ro" }, { - "shares": ["photos"], + "shares": [ + "photos" + ], "access": "rw" } ] @@ -712,487 +243,19 @@ ], "CapGrant": [ { - "Dsts": ["100.92.142.61/32", "fd7a:115c:a1e0::3e37:8e3d/128"], + "Dsts": [ + "100.92.142.61/32", + "fd7a:115c:a1e0::3e37:8e3d/128" + ], "CapMap": { "tailscale.com/cap/drive-sharer": null } } ] } - ], - "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.92.142.61/32", - "Cap": "tailscale.com/cap/drive", - "Values": [ - { - "shares": ["docs"], - "access": "ro" - }, - { - "shares": ["photos"], - "access": "rw" - } - ] - }, - { - "Dst": "fd7a:115c:a1e0::3e37:8e3d/128", - "Cap": "tailscale.com/cap/drive", - "Values": [ - { - "shares": ["docs"], - "access": "ro" - }, - { - "shares": ["photos"], - "access": "rw" - } - ] - } - ] - }, - { - "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.92.142.61/32", - "Cap": "tailscale.com/cap/drive-sharer", - "Values": null - }, - { - "Dst": "fd7a:115c:a1e0::3e37:8e3d/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/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": { - "tailscale.com/cap/drive": [ - { - "shares": ["docs"], - "access": "ro" - }, - { - "shares": ["photos"], - "access": "rw" - } - ], - "tailscale.com/cap/drive-sharer": 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": { - "tailscale.com/cap/drive": [ - { - "shares": ["docs"], - "access": "ro" - }, - { - "shares": ["photos"], - "access": "rw" - } - ], - "tailscale.com/cap/drive-sharer": 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": { - "tailscale.com/cap/drive": [ - { - "shares": ["docs"], - "access": "ro" - }, - { - "shares": ["photos"], - "access": "rw" - } - ], - "tailscale.com/cap/drive-sharer": 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": { - "tailscale.com/cap/drive": [ - { - "shares": ["docs"], - "access": "ro" - }, - { - "shares": ["photos"], - "access": "rw" - } - ], - "tailscale.com/cap/drive-sharer": 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": { - "tailscale.com/cap/drive": [ - { - "shares": ["docs"], - "access": "ro" - }, - { - "shares": ["photos"], - "access": "rw" - } - ], - "tailscale.com/cap/drive-sharer": 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": { - "tailscale.com/cap/drive": [ - { - "shares": ["docs"], - "access": "ro" - }, - { - "shares": ["photos"], - "access": "rw" - } - ], - "tailscale.com/cap/drive-sharer": 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": [ @@ -1203,15 +266,22 @@ ], "CapGrant": [ { - "Dsts": ["100.83.200.69/32", "fd7a:115c:a1e0::c537:c845/128"], + "Dsts": [ + "100.83.200.69/32", + "fd7a:115c:a1e0::c537:c845/128" + ], "CapMap": { "tailscale.com/cap/drive": [ { - "shares": ["docs"], + "shares": [ + "docs" + ], "access": "ro" }, { - "shares": ["photos"], + "shares": [ + "photos" + ], "access": "rw" } ] @@ -1228,533 +298,22 @@ ], "CapGrant": [ { - "Dsts": ["100.83.200.69/32", "fd7a:115c:a1e0::c537:c845/128"], + "Dsts": [ + "100.83.200.69/32", + "fd7a:115c:a1e0::c537:c845/128" + ], "CapMap": { "tailscale.com/cap/drive-sharer": null } } ] } - ], - "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.83.200.69/32", - "Cap": "tailscale.com/cap/drive", - "Values": [ - { - "shares": ["docs"], - "access": "ro" - }, - { - "shares": ["photos"], - "access": "rw" - } - ] - }, - { - "Dst": "fd7a:115c:a1e0::c537:c845/128", - "Cap": "tailscale.com/cap/drive", - "Values": [ - { - "shares": ["docs"], - "access": "ro" - }, - { - "shares": ["photos"], - "access": "rw" - } - ] - } - ] - }, - { - "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.83.200.69/32", - "Cap": "tailscale.com/cap/drive-sharer", - "Values": null - }, - { - "Dst": "fd7a:115c:a1e0::c537:c845/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/tagged-client/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/drive": [ - { - "shares": ["docs"], - "access": "ro" - }, - { - "shares": ["photos"], - "access": "rw" - } - ], - "tailscale.com/cap/drive-sharer": 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": { - "tailscale.com/cap/drive": [ - { - "shares": ["docs"], - "access": "ro" - }, - { - "shares": ["photos"], - "access": "rw" - } - ], - "tailscale.com/cap/drive-sharer": 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": { - "tailscale.com/cap/drive": [ - { - "shares": ["docs"], - "access": "ro" - }, - { - "shares": ["photos"], - "access": "rw" - } - ], - "tailscale.com/cap/drive-sharer": 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": { - "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/drive": [ - { - "shares": ["docs"], - "access": "ro" - }, - { - "shares": ["photos"], - "access": "rw" - } - ], - "tailscale.com/cap/drive-sharer": 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": { - "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/drive": [ - { - "shares": ["docs"], - "access": "ro" - }, - { - "shares": ["photos"], - "access": "rw" - } - ], - "tailscale.com/cap/drive-sharer": 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": { - "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/drive": [ - { - "shares": ["docs"], - "access": "ro" - }, - { - "shares": ["photos"], - "access": "rw" - } - ], - "tailscale.com/cap/drive-sharer": 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 - } - } + "packet_filter_rules": 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": [ @@ -1765,15 +324,22 @@ ], "CapGrant": [ { - "Dsts": ["100.108.74.26/32", "fd7a:115c:a1e0::b901:4a87/128"], + "Dsts": [ + "100.108.74.26/32", + "fd7a:115c:a1e0::b901:4a87/128" + ], "CapMap": { "tailscale.com/cap/drive": [ { - "shares": ["docs"], + "shares": [ + "docs" + ], "access": "ro" }, { - "shares": ["photos"], + "shares": [ + "photos" + ], "access": "rw" } ] @@ -1790,488 +356,19 @@ ], "CapGrant": [ { - "Dsts": ["100.108.74.26/32", "fd7a:115c:a1e0::b901:4a87/128"], + "Dsts": [ + "100.108.74.26/32", + "fd7a:115c:a1e0::b901:4a87/128" + ], "CapMap": { "tailscale.com/cap/drive-sharer": null } } ] } - ], - "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/drive", - "Values": [ - { - "shares": ["docs"], - "access": "ro" - }, - { - "shares": ["photos"], - "access": "rw" - } - ] - }, - { - "Dst": "fd7a:115c:a1e0::b901:4a87/128", - "Cap": "tailscale.com/cap/drive", - "Values": [ - { - "shares": ["docs"], - "access": "ro" - }, - { - "shares": ["photos"], - "access": "rw" - } - ] - } - ] - }, - { - "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/drive-sharer", - "Values": null - }, - { - "Dst": "fd7a:115c:a1e0::b901:4a87/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/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/drive": [ - { - "shares": ["docs"], - "access": "ro" - }, - { - "shares": ["photos"], - "access": "rw" - } - ], - "tailscale.com/cap/drive-sharer": 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": { - "tailscale.com/cap/drive": [ - { - "shares": ["docs"], - "access": "ro" - }, - { - "shares": ["photos"], - "access": "rw" - } - ], - "tailscale.com/cap/drive-sharer": 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": { - "tailscale.com/cap/drive": [ - { - "shares": ["docs"], - "access": "ro" - }, - { - "shares": ["photos"], - "access": "rw" - } - ], - "tailscale.com/cap/drive-sharer": 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": { - "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/drive": [ - { - "shares": ["docs"], - "access": "ro" - }, - { - "shares": ["photos"], - "access": "rw" - } - ], - "tailscale.com/cap/drive-sharer": 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": { - "tailscale.com/cap/drive": [ - { - "shares": ["docs"], - "access": "ro" - }, - { - "shares": ["photos"], - "access": "rw" - } - ], - "tailscale.com/cap/drive-sharer": 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": { - "tailscale.com/cap/drive": [ - { - "shares": ["docs"], - "access": "ro" - }, - { - "shares": ["photos"], - "access": "rw" - } - ], - "tailscale.com/cap/drive-sharer": 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": [ @@ -2282,15 +379,22 @@ ], "CapGrant": [ { - "Dsts": ["100.110.121.96/32", "fd7a:115c:a1e0::1737:7960/128"], + "Dsts": [ + "100.110.121.96/32", + "fd7a:115c:a1e0::1737:7960/128" + ], "CapMap": { "tailscale.com/cap/drive": [ { - "shares": ["docs"], + "shares": [ + "docs" + ], "access": "ro" }, { - "shares": ["photos"], + "shares": [ + "photos" + ], "access": "rw" } ] @@ -2307,488 +411,19 @@ ], "CapGrant": [ { - "Dsts": ["100.110.121.96/32", "fd7a:115c:a1e0::1737:7960/128"], + "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": [ - "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.110.121.96/32", - "Cap": "tailscale.com/cap/drive", - "Values": [ - { - "shares": ["docs"], - "access": "ro" - }, - { - "shares": ["photos"], - "access": "rw" - } - ] - }, - { - "Dst": "fd7a:115c:a1e0::1737:7960/128", - "Cap": "tailscale.com/cap/drive", - "Values": [ - { - "shares": ["docs"], - "access": "ro" - }, - { - "shares": ["photos"], - "access": "rw" - } - ] - } - ] - }, - { - "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.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": { - "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/drive": [ - { - "shares": ["docs"], - "access": "ro" - }, - { - "shares": ["photos"], - "access": "rw" - } - ], - "tailscale.com/cap/drive-sharer": 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": { - "tailscale.com/cap/drive": [ - { - "shares": ["docs"], - "access": "ro" - }, - { - "shares": ["photos"], - "access": "rw" - } - ], - "tailscale.com/cap/drive-sharer": 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": { - "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/drive": [ - { - "shares": ["docs"], - "access": "ro" - }, - { - "shares": ["photos"], - "access": "rw" - } - ], - "tailscale.com/cap/drive-sharer": 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": { - "tailscale.com/cap/drive": [ - { - "shares": ["docs"], - "access": "ro" - }, - { - "shares": ["photos"], - "access": "rw" - } - ], - "tailscale.com/cap/drive-sharer": 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": { - "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/drive": [ - { - "shares": ["docs"], - "access": "ro" - }, - { - "shares": ["photos"], - "access": "rw" - } - ], - "tailscale.com/cap/drive-sharer": 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": { - "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/drive": [ - { - "shares": ["docs"], - "access": "ro" - }, - { - "shares": ["photos"], - "access": "rw" - } - ], - "tailscale.com/cap/drive-sharer": 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": [ @@ -2799,15 +434,22 @@ ], "CapGrant": [ { - "Dsts": ["100.103.90.82/32", "fd7a:115c:a1e0::9e37:5a52/128"], + "Dsts": [ + "100.103.90.82/32", + "fd7a:115c:a1e0::9e37:5a52/128" + ], "CapMap": { "tailscale.com/cap/drive": [ { - "shares": ["docs"], + "shares": [ + "docs" + ], "access": "ro" }, { - "shares": ["photos"], + "shares": [ + "photos" + ], "access": "rw" } ] @@ -2824,488 +466,19 @@ ], "CapGrant": [ { - "Dsts": ["100.103.90.82/32", "fd7a:115c:a1e0::9e37:5a52/128"], + "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": [ - "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.103.90.82/32", - "Cap": "tailscale.com/cap/drive", - "Values": [ - { - "shares": ["docs"], - "access": "ro" - }, - { - "shares": ["photos"], - "access": "rw" - } - ] - }, - { - "Dst": "fd7a:115c:a1e0::9e37:5a52/128", - "Cap": "tailscale.com/cap/drive", - "Values": [ - { - "shares": ["docs"], - "access": "ro" - }, - { - "shares": ["photos"], - "access": "rw" - } - ] - } - ] - }, - { - "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.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": { - "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/drive": [ - { - "shares": ["docs"], - "access": "ro" - }, - { - "shares": ["photos"], - "access": "rw" - } - ], - "tailscale.com/cap/drive-sharer": 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": { - "tailscale.com/cap/drive": [ - { - "shares": ["docs"], - "access": "ro" - }, - { - "shares": ["photos"], - "access": "rw" - } - ], - "tailscale.com/cap/drive-sharer": 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": { - "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/drive": [ - { - "shares": ["docs"], - "access": "ro" - }, - { - "shares": ["photos"], - "access": "rw" - } - ], - "tailscale.com/cap/drive-sharer": 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": { - "tailscale.com/cap/drive": [ - { - "shares": ["docs"], - "access": "ro" - }, - { - "shares": ["photos"], - "access": "rw" - } - ], - "tailscale.com/cap/drive-sharer": 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": { - "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/drive": [ - { - "shares": ["docs"], - "access": "ro" - }, - { - "shares": ["photos"], - "access": "rw" - } - ], - "tailscale.com/cap/drive-sharer": 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": { - "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/drive": [ - { - "shares": ["docs"], - "access": "ro" - }, - { - "shares": ["photos"], - "access": "rw" - } - ], - "tailscale.com/cap/drive-sharer": 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": [ @@ -3316,15 +489,22 @@ ], "CapGrant": [ { - "Dsts": ["100.90.199.68/32", "fd7a:115c:a1e0::2d01:c747/128"], + "Dsts": [ + "100.90.199.68/32", + "fd7a:115c:a1e0::2d01:c747/128" + ], "CapMap": { "tailscale.com/cap/drive": [ { - "shares": ["docs"], + "shares": [ + "docs" + ], "access": "ro" }, { - "shares": ["photos"], + "shares": [ + "photos" + ], "access": "rw" } ] @@ -3341,482 +521,17 @@ ], "CapGrant": [ { - "Dsts": ["100.90.199.68/32", "fd7a:115c:a1e0::2d01:c747/128"], + "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": [ - "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.90.199.68/32", - "Cap": "tailscale.com/cap/drive", - "Values": [ - { - "shares": ["docs"], - "access": "ro" - }, - { - "shares": ["photos"], - "access": "rw" - } - ] - }, - { - "Dst": "fd7a:115c:a1e0::2d01:c747/128", - "Cap": "tailscale.com/cap/drive", - "Values": [ - { - "shares": ["docs"], - "access": "ro" - }, - { - "shares": ["photos"], - "access": "rw" - } - ] - } - ] - }, - { - "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.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": { - "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/drive": [ - { - "shares": ["docs"], - "access": "ro" - }, - { - "shares": ["photos"], - "access": "rw" - } - ], - "tailscale.com/cap/drive-sharer": 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": { - "tailscale.com/cap/drive": [ - { - "shares": ["docs"], - "access": "ro" - }, - { - "shares": ["photos"], - "access": "rw" - } - ], - "tailscale.com/cap/drive-sharer": 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": { - "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/drive": [ - { - "shares": ["docs"], - "access": "ro" - }, - { - "shares": ["photos"], - "access": "rw" - } - ], - "tailscale.com/cap/drive-sharer": 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": { - "tailscale.com/cap/drive": [ - { - "shares": ["docs"], - "access": "ro" - }, - { - "shares": ["photos"], - "access": "rw" - } - ], - "tailscale.com/cap/drive-sharer": 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": { - "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/drive": [ - { - "shares": ["docs"], - "access": "ro" - }, - { - "shares": ["photos"], - "access": "rw" - } - ], - "tailscale.com/cap/drive-sharer": 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": { - "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/drive": [ - { - "shares": ["docs"], - "access": "ro" - }, - { - "shares": ["photos"], - "access": "rw" - } - ], - "tailscale.com/cap/drive-sharer": null - } - } - } - } + ] } } } diff --git a/hscontrol/policy/v2/testdata/grant_results/GRANT-B5.hujson b/hscontrol/policy/v2/testdata/grant_results/GRANT-B5.hujson index 3c8ca624d..cc9d17310 100644 --- a/hscontrol/policy/v2/testdata/grant_results/GRANT-B5.hujson +++ b/hscontrol/policy/v2/testdata/grant_results/GRANT-B5.hujson @@ -5,23 +5,37 @@ // Expected: Rules on 7 nodes { "test_id": "GRANT-B5", - "timestamp": "2026-02-23T00:26:19Z", - "propagation_wait_seconds": 15, "input": { - "policy_file": "/home/kradalby/acl-explore/grant_policies/grant_b5.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -30,19 +44,31 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "grants": [ { - "src": ["*"], - "dst": ["*"], + "src": [ + "*" + ], + "dst": [ + "*" + ], "app": { "tailscale.com/cap/drive": [ { - "shares": ["*"], + "shares": [ + "*" + ], "access": "rw" } ] @@ -50,96 +76,62 @@ } ] }, - "grants_section": [ - { - "src": ["*"], - "dst": ["*"], - "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"], + "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"], + "tags": [ + "tag:router" + ], "ipv4": "100.92.142.61", - "ipv6": "fd7a:115c:a1e0::3e37:8e3d", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] + "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"], + "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"], + "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" @@ -148,10 +140,6 @@ }, "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": [ @@ -162,11 +150,16 @@ ], "CapGrant": [ { - "Dsts": ["100.85.66.106/32", "fd7a:115c:a1e0::7c37:426a/128"], + "Dsts": [ + "100.85.66.106/32", + "fd7a:115c:a1e0::7c37:426a/128" + ], "CapMap": { "tailscale.com/cap/drive": [ { - "shares": ["*"], + "shares": [ + "*" + ], "access": "rw" } ] @@ -183,456 +176,19 @@ ], "CapGrant": [ { - "Dsts": ["100.85.66.106/32", "fd7a:115c:a1e0::7c37:426a/128"], + "Dsts": [ + "100.85.66.106/32", + "fd7a:115c:a1e0::7c37:426a/128" + ], "CapMap": { "tailscale.com/cap/drive-sharer": null } } ] } - ], - "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.85.66.106/32", - "Cap": "tailscale.com/cap/drive", - "Values": [ - { - "shares": ["*"], - "access": "rw" - } - ] - }, - { - "Dst": "fd7a:115c:a1e0::7c37:426a/128", - "Cap": "tailscale.com/cap/drive", - "Values": [ - { - "shares": ["*"], - "access": "rw" - } - ] - } - ] - }, - { - "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.85.66.106/32", - "Cap": "tailscale.com/cap/drive-sharer", - "Values": null - }, - { - "Dst": "fd7a:115c:a1e0::7c37:426a/128", - "Cap": "tailscale.com/cap/drive-sharer", - "Values": null - } - ] - } - ], - "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": { - "tailscale.com/cap/drive": [ - { - "shares": ["*"], - "access": "rw" - } - ], - "tailscale.com/cap/drive-sharer": 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": { - "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/drive": [ - { - "shares": ["*"], - "access": "rw" - } - ], - "tailscale.com/cap/drive-sharer": 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": { - "tailscale.com/cap/drive": [ - { - "shares": ["*"], - "access": "rw" - } - ], - "tailscale.com/cap/drive-sharer": 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": { - "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/drive": [ - { - "shares": ["*"], - "access": "rw" - } - ], - "tailscale.com/cap/drive-sharer": 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": { - "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/drive": [ - { - "shares": ["*"], - "access": "rw" - } - ], - "tailscale.com/cap/drive-sharer": 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": { - "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/drive": [ - { - "shares": ["*"], - "access": "rw" - } - ], - "tailscale.com/cap/drive-sharer": 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": [ @@ -643,11 +199,16 @@ ], "CapGrant": [ { - "Dsts": ["100.92.142.61/32", "fd7a:115c:a1e0::3e37:8e3d/128"], + "Dsts": [ + "100.92.142.61/32", + "fd7a:115c:a1e0::3e37:8e3d/128" + ], "CapMap": { "tailscale.com/cap/drive": [ { - "shares": ["*"], + "shares": [ + "*" + ], "access": "rw" } ] @@ -664,455 +225,19 @@ ], "CapGrant": [ { - "Dsts": ["100.92.142.61/32", "fd7a:115c:a1e0::3e37:8e3d/128"], + "Dsts": [ + "100.92.142.61/32", + "fd7a:115c:a1e0::3e37:8e3d/128" + ], "CapMap": { "tailscale.com/cap/drive-sharer": null } } ] } - ], - "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.92.142.61/32", - "Cap": "tailscale.com/cap/drive", - "Values": [ - { - "shares": ["*"], - "access": "rw" - } - ] - }, - { - "Dst": "fd7a:115c:a1e0::3e37:8e3d/128", - "Cap": "tailscale.com/cap/drive", - "Values": [ - { - "shares": ["*"], - "access": "rw" - } - ] - } - ] - }, - { - "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.92.142.61/32", - "Cap": "tailscale.com/cap/drive-sharer", - "Values": null - }, - { - "Dst": "fd7a:115c:a1e0::3e37:8e3d/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/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": { - "tailscale.com/cap/drive": [ - { - "shares": ["*"], - "access": "rw" - } - ], - "tailscale.com/cap/drive-sharer": 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": { - "tailscale.com/cap/drive": [ - { - "shares": ["*"], - "access": "rw" - } - ], - "tailscale.com/cap/drive-sharer": 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": { - "tailscale.com/cap/drive": [ - { - "shares": ["*"], - "access": "rw" - } - ], - "tailscale.com/cap/drive-sharer": 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": { - "tailscale.com/cap/drive": [ - { - "shares": ["*"], - "access": "rw" - } - ], - "tailscale.com/cap/drive-sharer": 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": { - "tailscale.com/cap/drive": [ - { - "shares": ["*"], - "access": "rw" - } - ], - "tailscale.com/cap/drive-sharer": 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": { - "tailscale.com/cap/drive": [ - { - "shares": ["*"], - "access": "rw" - } - ], - "tailscale.com/cap/drive-sharer": 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": [ @@ -1123,11 +248,16 @@ ], "CapGrant": [ { - "Dsts": ["100.83.200.69/32", "fd7a:115c:a1e0::c537:c845/128"], + "Dsts": [ + "100.83.200.69/32", + "fd7a:115c:a1e0::c537:c845/128" + ], "CapMap": { "tailscale.com/cap/drive": [ { - "shares": ["*"], + "shares": [ + "*" + ], "access": "rw" } ] @@ -1144,501 +274,22 @@ ], "CapGrant": [ { - "Dsts": ["100.83.200.69/32", "fd7a:115c:a1e0::c537:c845/128"], + "Dsts": [ + "100.83.200.69/32", + "fd7a:115c:a1e0::c537:c845/128" + ], "CapMap": { "tailscale.com/cap/drive-sharer": null } } ] } - ], - "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.83.200.69/32", - "Cap": "tailscale.com/cap/drive", - "Values": [ - { - "shares": ["*"], - "access": "rw" - } - ] - }, - { - "Dst": "fd7a:115c:a1e0::c537:c845/128", - "Cap": "tailscale.com/cap/drive", - "Values": [ - { - "shares": ["*"], - "access": "rw" - } - ] - } - ] - }, - { - "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.83.200.69/32", - "Cap": "tailscale.com/cap/drive-sharer", - "Values": null - }, - { - "Dst": "fd7a:115c:a1e0::c537:c845/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/tagged-client/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/drive": [ - { - "shares": ["*"], - "access": "rw" - } - ], - "tailscale.com/cap/drive-sharer": 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": { - "tailscale.com/cap/drive": [ - { - "shares": ["*"], - "access": "rw" - } - ], - "tailscale.com/cap/drive-sharer": 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": { - "tailscale.com/cap/drive": [ - { - "shares": ["*"], - "access": "rw" - } - ], - "tailscale.com/cap/drive-sharer": 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": { - "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/drive": [ - { - "shares": ["*"], - "access": "rw" - } - ], - "tailscale.com/cap/drive-sharer": 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": { - "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/drive": [ - { - "shares": ["*"], - "access": "rw" - } - ], - "tailscale.com/cap/drive-sharer": 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": { - "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/drive": [ - { - "shares": ["*"], - "access": "rw" - } - ], - "tailscale.com/cap/drive-sharer": 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 - } - } + "packet_filter_rules": 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": [ @@ -1649,11 +300,16 @@ ], "CapGrant": [ { - "Dsts": ["100.108.74.26/32", "fd7a:115c:a1e0::b901:4a87/128"], + "Dsts": [ + "100.108.74.26/32", + "fd7a:115c:a1e0::b901:4a87/128" + ], "CapMap": { "tailscale.com/cap/drive": [ { - "shares": ["*"], + "shares": [ + "*" + ], "access": "rw" } ] @@ -1670,456 +326,19 @@ ], "CapGrant": [ { - "Dsts": ["100.108.74.26/32", "fd7a:115c:a1e0::b901:4a87/128"], + "Dsts": [ + "100.108.74.26/32", + "fd7a:115c:a1e0::b901:4a87/128" + ], "CapMap": { "tailscale.com/cap/drive-sharer": null } } ] } - ], - "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/drive", - "Values": [ - { - "shares": ["*"], - "access": "rw" - } - ] - }, - { - "Dst": "fd7a:115c:a1e0::b901:4a87/128", - "Cap": "tailscale.com/cap/drive", - "Values": [ - { - "shares": ["*"], - "access": "rw" - } - ] - } - ] - }, - { - "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/drive-sharer", - "Values": null - }, - { - "Dst": "fd7a:115c:a1e0::b901:4a87/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/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/drive": [ - { - "shares": ["*"], - "access": "rw" - } - ], - "tailscale.com/cap/drive-sharer": 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": { - "tailscale.com/cap/drive": [ - { - "shares": ["*"], - "access": "rw" - } - ], - "tailscale.com/cap/drive-sharer": 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": { - "tailscale.com/cap/drive": [ - { - "shares": ["*"], - "access": "rw" - } - ], - "tailscale.com/cap/drive-sharer": 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": { - "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/drive": [ - { - "shares": ["*"], - "access": "rw" - } - ], - "tailscale.com/cap/drive-sharer": 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": { - "tailscale.com/cap/drive": [ - { - "shares": ["*"], - "access": "rw" - } - ], - "tailscale.com/cap/drive-sharer": 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": { - "tailscale.com/cap/drive": [ - { - "shares": ["*"], - "access": "rw" - } - ], - "tailscale.com/cap/drive-sharer": 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": [ @@ -2130,11 +349,16 @@ ], "CapGrant": [ { - "Dsts": ["100.110.121.96/32", "fd7a:115c:a1e0::1737:7960/128"], + "Dsts": [ + "100.110.121.96/32", + "fd7a:115c:a1e0::1737:7960/128" + ], "CapMap": { "tailscale.com/cap/drive": [ { - "shares": ["*"], + "shares": [ + "*" + ], "access": "rw" } ] @@ -2151,456 +375,19 @@ ], "CapGrant": [ { - "Dsts": ["100.110.121.96/32", "fd7a:115c:a1e0::1737:7960/128"], + "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": [ - "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.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": [ - "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.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": { - "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/drive": [ - { - "shares": ["*"], - "access": "rw" - } - ], - "tailscale.com/cap/drive-sharer": 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": { - "tailscale.com/cap/drive": [ - { - "shares": ["*"], - "access": "rw" - } - ], - "tailscale.com/cap/drive-sharer": 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": { - "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/drive": [ - { - "shares": ["*"], - "access": "rw" - } - ], - "tailscale.com/cap/drive-sharer": 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": { - "tailscale.com/cap/drive": [ - { - "shares": ["*"], - "access": "rw" - } - ], - "tailscale.com/cap/drive-sharer": 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": { - "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/drive": [ - { - "shares": ["*"], - "access": "rw" - } - ], - "tailscale.com/cap/drive-sharer": 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": { - "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/drive": [ - { - "shares": ["*"], - "access": "rw" - } - ], - "tailscale.com/cap/drive-sharer": 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": [ @@ -2611,11 +398,16 @@ ], "CapGrant": [ { - "Dsts": ["100.103.90.82/32", "fd7a:115c:a1e0::9e37:5a52/128"], + "Dsts": [ + "100.103.90.82/32", + "fd7a:115c:a1e0::9e37:5a52/128" + ], "CapMap": { "tailscale.com/cap/drive": [ { - "shares": ["*"], + "shares": [ + "*" + ], "access": "rw" } ] @@ -2632,456 +424,19 @@ ], "CapGrant": [ { - "Dsts": ["100.103.90.82/32", "fd7a:115c:a1e0::9e37:5a52/128"], + "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": [ - "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.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": [ - "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.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": { - "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/drive": [ - { - "shares": ["*"], - "access": "rw" - } - ], - "tailscale.com/cap/drive-sharer": 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": { - "tailscale.com/cap/drive": [ - { - "shares": ["*"], - "access": "rw" - } - ], - "tailscale.com/cap/drive-sharer": 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": { - "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/drive": [ - { - "shares": ["*"], - "access": "rw" - } - ], - "tailscale.com/cap/drive-sharer": 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": { - "tailscale.com/cap/drive": [ - { - "shares": ["*"], - "access": "rw" - } - ], - "tailscale.com/cap/drive-sharer": 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": { - "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/drive": [ - { - "shares": ["*"], - "access": "rw" - } - ], - "tailscale.com/cap/drive-sharer": 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": { - "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/drive": [ - { - "shares": ["*"], - "access": "rw" - } - ], - "tailscale.com/cap/drive-sharer": 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": [ @@ -3092,11 +447,16 @@ ], "CapGrant": [ { - "Dsts": ["100.90.199.68/32", "fd7a:115c:a1e0::2d01:c747/128"], + "Dsts": [ + "100.90.199.68/32", + "fd7a:115c:a1e0::2d01:c747/128" + ], "CapMap": { "tailscale.com/cap/drive": [ { - "shares": ["*"], + "shares": [ + "*" + ], "access": "rw" } ] @@ -3113,450 +473,17 @@ ], "CapGrant": [ { - "Dsts": ["100.90.199.68/32", "fd7a:115c:a1e0::2d01:c747/128"], + "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": [ - "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.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": [ - "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.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": { - "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/drive": [ - { - "shares": ["*"], - "access": "rw" - } - ], - "tailscale.com/cap/drive-sharer": 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": { - "tailscale.com/cap/drive": [ - { - "shares": ["*"], - "access": "rw" - } - ], - "tailscale.com/cap/drive-sharer": 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": { - "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/drive": [ - { - "shares": ["*"], - "access": "rw" - } - ], - "tailscale.com/cap/drive-sharer": 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": { - "tailscale.com/cap/drive": [ - { - "shares": ["*"], - "access": "rw" - } - ], - "tailscale.com/cap/drive-sharer": 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": { - "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/drive": [ - { - "shares": ["*"], - "access": "rw" - } - ], - "tailscale.com/cap/drive-sharer": 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": { - "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/drive": [ - { - "shares": ["*"], - "access": "rw" - } - ], - "tailscale.com/cap/drive-sharer": null - } - } - } - } + ] } } } diff --git a/hscontrol/policy/v2/testdata/grant_results/GRANT-C1.hujson b/hscontrol/policy/v2/testdata/grant_results/GRANT-C1.hujson index 60dc71d0b..6d41beab7 100644 --- a/hscontrol/policy/v2/testdata/grant_results/GRANT-C1.hujson +++ b/hscontrol/policy/v2/testdata/grant_results/GRANT-C1.hujson @@ -5,23 +5,37 @@ // Expected: Rules on 8 nodes { "test_id": "GRANT-C1", - "timestamp": "2026-02-23T00:28:11Z", - "propagation_wait_seconds": 15, "input": { - "policy_file": "/home/kradalby/acl-explore/grant_policies/grant_c1.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -30,106 +44,91 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "grants": [ { - "src": ["*"], - "dst": ["*"], + "src": [ + "*" + ], + "dst": [ + "*" + ], "app": { - "example.com/cap/test": [{}] + "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"], + "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"], + "tags": [ + "tag:router" + ], "ipv4": "100.92.142.61", - "ipv6": "fd7a:115c:a1e0::3e37:8e3d", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] + "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"], + "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"], + "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"], + "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" @@ -138,10 +137,6 @@ }, "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": [ @@ -152,423 +147,21 @@ ], "CapGrant": [ { - "Dsts": ["100.85.66.106/32", "fd7a:115c:a1e0::7c37:426a/128"], + "Dsts": [ + "100.85.66.106/32", + "fd7a:115c:a1e0::7c37:426a/128" + ], "CapMap": { - "example.com/cap/test": [{}] + "example.com/cap/test": [ + {} + ] } } ] } - ], - "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.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": { - "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": { - "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/exit-node/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/exit-node/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.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": { - "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/exit-node/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/exit-node/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/exit-node/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": [{}] - } - } - } - } + ] }, "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": [ @@ -579,422 +172,21 @@ ], "CapGrant": [ { - "Dsts": ["100.92.142.61/32", "fd7a:115c:a1e0::3e37:8e3d/128"], + "Dsts": [ + "100.92.142.61/32", + "fd7a:115c:a1e0::3e37:8e3d/128" + ], "CapMap": { - "example.com/cap/test": [{}] + "example.com/cap/test": [ + {} + ] } } ] } - ], - "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.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": { - "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.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": { - "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/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": { - "example.com/cap/test": [{}] - } - } - }, - "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": { - "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/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": { - "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/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": { - "example.com/cap/test": [{}] - } - } - }, - "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": { - "example.com/cap/test": [{}] - } - } - } - } + ] }, "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": [ @@ -1005,423 +197,21 @@ ], "CapGrant": [ { - "Dsts": ["100.83.200.69/32", "fd7a:115c:a1e0::c537:c845/128"], + "Dsts": [ + "100.83.200.69/32", + "fd7a:115c:a1e0::c537:c845/128" + ], "CapMap": { - "example.com/cap/test": [{}] + "example.com/cap/test": [ + {} + ] } } ] } - ], - "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.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": { - "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-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": { - "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-client/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.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": { - "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-client/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-client/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-client/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": [{}] - } - } - } - } + ] }, "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": [ @@ -1432,423 +222,21 @@ ], "CapGrant": [ { - "Dsts": ["100.103.8.15/32", "fd7a:115c:a1e0::5b37:80f/128"], + "Dsts": [ + "100.103.8.15/32", + "fd7a:115c:a1e0::5b37:80f/128" + ], "CapMap": { - "example.com/cap/test": [{}] + "example.com/cap/test": [ + {} + ] } } ] } - ], - "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.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": { - "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-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": { - "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-prod/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.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": { - "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-prod/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-prod/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-prod/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": [{}] - } - } - } - } + ] }, "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": [ @@ -1859,423 +247,21 @@ ], "CapGrant": [ { - "Dsts": ["100.108.74.26/32", "fd7a:115c:a1e0::b901:4a87/128"], + "Dsts": [ + "100.108.74.26/32", + "fd7a:115c:a1e0::b901:4a87/128" + ], "CapMap": { - "example.com/cap/test": [{}] + "example.com/cap/test": [ + {} + ] } } ] } - ], - "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": "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", "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": { - "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": { - "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": [ { "SrcIPs": [ @@ -2286,423 +272,21 @@ ], "CapGrant": [ { - "Dsts": ["100.110.121.96/32", "fd7a:115c:a1e0::1737:7960/128"], + "Dsts": [ + "100.110.121.96/32", + "fd7a:115c:a1e0::1737:7960/128" + ], "CapMap": { - "example.com/cap/test": [{}] + "example.com/cap/test": [ + {} + ] } } ] } - ], - "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.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": { - "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/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": { - "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/user-kris/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/user-kris/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.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": { - "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/user-kris/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/user-kris/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-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": [ @@ -2713,423 +297,21 @@ ], "CapGrant": [ { - "Dsts": ["100.103.90.82/32", "fd7a:115c:a1e0::9e37:5a52/128"], + "Dsts": [ + "100.103.90.82/32", + "fd7a:115c:a1e0::9e37:5a52/128" + ], "CapMap": { - "example.com/cap/test": [{}] + "example.com/cap/test": [ + {} + ] } } ] } - ], - "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.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": { - "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/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": { - "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/user-mon/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/user-mon/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.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": { - "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/user-mon/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.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": { - "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": [{}] - } - } - } - } + ] }, "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": [ @@ -3140,417 +322,19 @@ ], "CapGrant": [ { - "Dsts": ["100.90.199.68/32", "fd7a:115c:a1e0::2d01:c747/128"], + "Dsts": [ + "100.90.199.68/32", + "fd7a:115c:a1e0::2d01:c747/128" + ], "CapMap": { - "example.com/cap/test": [{}] + "example.com/cap/test": [ + {} + ] } } ] } - ], - "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.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": { - "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/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": { - "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/user1/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/user1/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.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": { - "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/user1/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/user1/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": [{}] - } - } - } - } + ] } } } diff --git a/hscontrol/policy/v2/testdata/grant_results/GRANT-C2.hujson b/hscontrol/policy/v2/testdata/grant_results/GRANT-C2.hujson index 3640df85e..469b1df38 100644 --- a/hscontrol/policy/v2/testdata/grant_results/GRANT-C2.hujson +++ b/hscontrol/policy/v2/testdata/grant_results/GRANT-C2.hujson @@ -5,23 +5,37 @@ // Expected: Rules on 8 nodes { "test_id": "GRANT-C2", - "timestamp": "2026-02-23T00:28:28Z", - "propagation_wait_seconds": 15, "input": { - "policy_file": "/home/kradalby/acl-explore/grant_policies/grant_c2.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -30,15 +44,25 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "grants": [ { - "src": ["*"], - "dst": ["*"], + "src": [ + "*" + ], + "dst": [ + "*" + ], "app": { "example.com/cap/test": [ { @@ -49,95 +73,64 @@ } ] }, - "grants_section": [ - { - "src": ["*"], - "dst": ["*"], - "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"], + "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"], + "tags": [ + "tag:router" + ], "ipv4": "100.92.142.61", - "ipv6": "fd7a:115c:a1e0::3e37:8e3d", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] + "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"], + "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"], + "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"], + "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" @@ -146,10 +139,6 @@ }, "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": [ @@ -160,7 +149,10 @@ ], "CapGrant": [ { - "Dsts": ["100.85.66.106/32", "fd7a:115c:a1e0::7c37:426a/128"], + "Dsts": [ + "100.85.66.106/32", + "fd7a:115c:a1e0::7c37:426a/128" + ], "CapMap": { "example.com/cap/test": [ { @@ -171,452 +163,9 @@ } ] } - ], - "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.85.66.106/32", - "Cap": "example.com/cap/test", - "Values": [ - { - "role": "admin" - } - ] - }, - { - "Dst": "fd7a:115c:a1e0::7c37:426a/128", - "Cap": "example.com/cap/test", - "Values": [ - { - "role": "admin" - } - ] - } - ] - } - ], - "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": { - "example.com/cap/test": [ - { - "role": "admin" - } - ] - } - } - }, - "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": { - "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": [ - { - "role": "admin" - } - ] - } - } - }, - "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": { - "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": [ - { - "role": "admin" - } - ] - } - } - }, - "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": { - "example.com/cap/test": [ - { - "role": "admin" - } - ] - } - } - }, - "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": { - "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/exit-node/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/exit-node/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" - } - ] - } - } - } - } + ] }, "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": [ @@ -627,7 +176,10 @@ ], "CapGrant": [ { - "Dsts": ["100.92.142.61/32", "fd7a:115c:a1e0::3e37:8e3d/128"], + "Dsts": [ + "100.92.142.61/32", + "fd7a:115c:a1e0::3e37:8e3d/128" + ], "CapMap": { "example.com/cap/test": [ { @@ -638,451 +190,9 @@ } ] } - ], - "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.92.142.61/32", - "Cap": "example.com/cap/test", - "Values": [ - { - "role": "admin" - } - ] - }, - { - "Dst": "fd7a:115c:a1e0::3e37:8e3d/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/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": { - "example.com/cap/test": [ - { - "role": "admin" - } - ] - } - } - }, - "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": { - "example.com/cap/test": [ - { - "role": "admin" - } - ] - } - } - }, - "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": { - "example.com/cap/test": [ - { - "role": "admin" - } - ] - } - } - }, - "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": { - "example.com/cap/test": [ - { - "role": "admin" - } - ] - } - } - }, - "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": { - "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/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": { - "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/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": { - "example.com/cap/test": [ - { - "role": "admin" - } - ] - } - } - } - } + ] }, "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": [ @@ -1093,7 +203,10 @@ ], "CapGrant": [ { - "Dsts": ["100.83.200.69/32", "fd7a:115c:a1e0::c537:c845/128"], + "Dsts": [ + "100.83.200.69/32", + "fd7a:115c:a1e0::c537:c845/128" + ], "CapMap": { "example.com/cap/test": [ { @@ -1104,452 +217,9 @@ } ] } - ], - "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.83.200.69/32", - "Cap": "example.com/cap/test", - "Values": [ - { - "role": "admin" - } - ] - }, - { - "Dst": "fd7a:115c:a1e0::c537:c845/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-client/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": [ - { - "role": "admin" - } - ] - } - } - }, - "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": { - "example.com/cap/test": [ - { - "role": "admin" - } - ] - } - } - }, - "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": { - "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": [ - { - "role": "admin" - } - ] - } - } - }, - "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": { - "example.com/cap/test": [ - { - "role": "admin" - } - ] - } - } - }, - "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": { - "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-client/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-client/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" - } - ] - } - } - } - } + ] }, "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": [ @@ -1560,7 +230,10 @@ ], "CapGrant": [ { - "Dsts": ["100.103.8.15/32", "fd7a:115c:a1e0::5b37:80f/128"], + "Dsts": [ + "100.103.8.15/32", + "fd7a:115c:a1e0::5b37:80f/128" + ], "CapMap": { "example.com/cap/test": [ { @@ -1571,452 +244,9 @@ } ] } - ], - "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.103.8.15/32", - "Cap": "example.com/cap/test", - "Values": [ - { - "role": "admin" - } - ] - }, - { - "Dst": "fd7a:115c:a1e0::5b37:80f/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-prod/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": [ - { - "role": "admin" - } - ] - } - } - }, - "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": { - "example.com/cap/test": [ - { - "role": "admin" - } - ] - } - } - }, - "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": { - "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": [ - { - "role": "admin" - } - ] - } - } - }, - "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": { - "example.com/cap/test": [ - { - "role": "admin" - } - ] - } - } - }, - "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": { - "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-prod/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-prod/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" - } - ] - } - } - } - } + ] }, "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": [ @@ -2027,7 +257,10 @@ ], "CapGrant": [ { - "Dsts": ["100.108.74.26/32", "fd7a:115c:a1e0::b901:4a87/128"], + "Dsts": [ + "100.108.74.26/32", + "fd7a:115c:a1e0::b901:4a87/128" + ], "CapMap": { "example.com/cap/test": [ { @@ -2038,452 +271,9 @@ } ] } - ], - "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": "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": { - "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": [ - { - "role": "admin" - } - ] - } - } - }, - "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": { - "example.com/cap/test": [ - { - "role": "admin" - } - ] - } - } - }, - "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": [ - { - "role": "admin" - } - ] - } - } - }, - "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": [ - { - "role": "admin" - } - ] - } - } - }, - "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": [ { "SrcIPs": [ @@ -2494,7 +284,10 @@ ], "CapGrant": [ { - "Dsts": ["100.110.121.96/32", "fd7a:115c:a1e0::1737:7960/128"], + "Dsts": [ + "100.110.121.96/32", + "fd7a:115c:a1e0::1737:7960/128" + ], "CapMap": { "example.com/cap/test": [ { @@ -2505,452 +298,9 @@ } ] } - ], - "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.110.121.96/32", - "Cap": "example.com/cap/test", - "Values": [ - { - "role": "admin" - } - ] - }, - { - "Dst": "fd7a:115c:a1e0::1737:7960/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/user-kris/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": [ - { - "role": "admin" - } - ] - } - } - }, - "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": { - "example.com/cap/test": [ - { - "role": "admin" - } - ] - } - } - }, - "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": { - "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": [ - { - "role": "admin" - } - ] - } - } - }, - "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": { - "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": [ - { - "role": "admin" - } - ] - } - } - }, - "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": { - "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/user-kris/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/user-kris/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-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": [ @@ -2961,7 +311,10 @@ ], "CapGrant": [ { - "Dsts": ["100.103.90.82/32", "fd7a:115c:a1e0::9e37:5a52/128"], + "Dsts": [ + "100.103.90.82/32", + "fd7a:115c:a1e0::9e37:5a52/128" + ], "CapMap": { "example.com/cap/test": [ { @@ -2972,452 +325,9 @@ } ] } - ], - "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.103.90.82/32", - "Cap": "example.com/cap/test", - "Values": [ - { - "role": "admin" - } - ] - }, - { - "Dst": "fd7a:115c:a1e0::9e37:5a52/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/user-mon/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": [ - { - "role": "admin" - } - ] - } - } - }, - "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": { - "example.com/cap/test": [ - { - "role": "admin" - } - ] - } - } - }, - "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": { - "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": [ - { - "role": "admin" - } - ] - } - } - }, - "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": { - "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": [ - { - "role": "admin" - } - ] - } - } - }, - "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": { - "example.com/cap/test": [ - { - "role": "admin" - } - ] - } - } - }, - "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": { - "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.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": { - "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" - } - ] - } - } - } - } + ] }, "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": [ @@ -3428,7 +338,10 @@ ], "CapGrant": [ { - "Dsts": ["100.90.199.68/32", "fd7a:115c:a1e0::2d01:c747/128"], + "Dsts": [ + "100.90.199.68/32", + "fd7a:115c:a1e0::2d01:c747/128" + ], "CapMap": { "example.com/cap/test": [ { @@ -3439,446 +352,7 @@ } ] } - ], - "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.90.199.68/32", - "Cap": "example.com/cap/test", - "Values": [ - { - "role": "admin" - } - ] - }, - { - "Dst": "fd7a:115c:a1e0::2d01:c747/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/user1/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": [ - { - "role": "admin" - } - ] - } - } - }, - "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": { - "example.com/cap/test": [ - { - "role": "admin" - } - ] - } - } - }, - "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": { - "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": [ - { - "role": "admin" - } - ] - } - } - }, - "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": { - "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": [ - { - "role": "admin" - } - ] - } - } - }, - "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": { - "example.com/cap/test": [ - { - "role": "admin" - } - ] - } - } - }, - "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": { - "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/user1/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" - } - ] - } - } - } - } + ] } } } diff --git a/hscontrol/policy/v2/testdata/grant_results/GRANT-C3.hujson b/hscontrol/policy/v2/testdata/grant_results/GRANT-C3.hujson index 9cb65feac..b03297933 100644 --- a/hscontrol/policy/v2/testdata/grant_results/GRANT-C3.hujson +++ b/hscontrol/policy/v2/testdata/grant_results/GRANT-C3.hujson @@ -5,23 +5,37 @@ // Expected: Rules on 8 nodes { "test_id": "GRANT-C3", - "timestamp": "2026-02-23T00:28:45Z", - "propagation_wait_seconds": 15, "input": { - "policy_file": "/home/kradalby/acl-explore/grant_policies/grant_c3.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -30,15 +44,25 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "grants": [ { - "src": ["*"], - "dst": ["*"], + "src": [ + "*" + ], + "dst": [ + "*" + ], "app": { "example.com/cap/test": [ { @@ -52,98 +76,64 @@ } ] }, - "grants_section": [ - { - "src": ["*"], - "dst": ["*"], - "app": { - "example.com/cap/test": [ - { - "role": "admin" - }, - { - "role": "viewer" - } - ] - } - } - ], - "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"], + "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"], + "tags": [ + "tag:router" + ], "ipv4": "100.92.142.61", - "ipv6": "fd7a:115c:a1e0::3e37:8e3d", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] + "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"], + "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"], + "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"], + "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" @@ -152,10 +142,6 @@ }, "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": [ @@ -166,7 +152,10 @@ ], "CapGrant": [ { - "Dsts": ["100.85.66.106/32", "fd7a:115c:a1e0::7c37:426a/128"], + "Dsts": [ + "100.85.66.106/32", + "fd7a:115c:a1e0::7c37:426a/128" + ], "CapMap": { "example.com/cap/test": [ { @@ -180,479 +169,9 @@ } ] } - ], - "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.85.66.106/32", - "Cap": "example.com/cap/test", - "Values": [ - { - "role": "admin" - }, - { - "role": "viewer" - } - ] - }, - { - "Dst": "fd7a:115c:a1e0::7c37:426a/128", - "Cap": "example.com/cap/test", - "Values": [ - { - "role": "admin" - }, - { - "role": "viewer" - } - ] - } - ] - } - ], - "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": { - "example.com/cap/test": [ - { - "role": "admin" - }, - { - "role": "viewer" - } - ] - } - } - }, - "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": { - "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": [ - { - "role": "admin" - }, - { - "role": "viewer" - } - ] - } - } - }, - "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": { - "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": [ - { - "role": "admin" - }, - { - "role": "viewer" - } - ] - } - } - }, - "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": { - "example.com/cap/test": [ - { - "role": "admin" - }, - { - "role": "viewer" - } - ] - } - } - }, - "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": { - "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" - }, - { - "role": "viewer" - } - ] - } - } - }, - "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": { - "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" - }, - { - "role": "viewer" - } - ] - } - } - }, - "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": { - "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" - }, - { - "role": "viewer" - } - ] - } - } - } - } + ] }, "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": [ @@ -663,7 +182,10 @@ ], "CapGrant": [ { - "Dsts": ["100.92.142.61/32", "fd7a:115c:a1e0::3e37:8e3d/128"], + "Dsts": [ + "100.92.142.61/32", + "fd7a:115c:a1e0::3e37:8e3d/128" + ], "CapMap": { "example.com/cap/test": [ { @@ -677,478 +199,9 @@ } ] } - ], - "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.92.142.61/32", - "Cap": "example.com/cap/test", - "Values": [ - { - "role": "admin" - }, - { - "role": "viewer" - } - ] - }, - { - "Dst": "fd7a:115c:a1e0::3e37:8e3d/128", - "Cap": "example.com/cap/test", - "Values": [ - { - "role": "admin" - }, - { - "role": "viewer" - } - ] - } - ] - } - ], - "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": { - "example.com/cap/test": [ - { - "role": "admin" - }, - { - "role": "viewer" - } - ] - } - } - }, - "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": { - "example.com/cap/test": [ - { - "role": "admin" - }, - { - "role": "viewer" - } - ] - } - } - }, - "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": { - "example.com/cap/test": [ - { - "role": "admin" - }, - { - "role": "viewer" - } - ] - } - } - }, - "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": { - "example.com/cap/test": [ - { - "role": "admin" - }, - { - "role": "viewer" - } - ] - } - } - }, - "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": { - "example.com/cap/test": [ - { - "role": "admin" - }, - { - "role": "viewer" - } - ] - } - } - }, - "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": { - "example.com/cap/test": [ - { - "role": "admin" - }, - { - "role": "viewer" - } - ] - } - } - }, - "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": { - "example.com/cap/test": [ - { - "role": "admin" - }, - { - "role": "viewer" - } - ] - } - } - } - } + ] }, "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": [ @@ -1159,7 +212,10 @@ ], "CapGrant": [ { - "Dsts": ["100.83.200.69/32", "fd7a:115c:a1e0::c537:c845/128"], + "Dsts": [ + "100.83.200.69/32", + "fd7a:115c:a1e0::c537:c845/128" + ], "CapMap": { "example.com/cap/test": [ { @@ -1173,479 +229,9 @@ } ] } - ], - "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.83.200.69/32", - "Cap": "example.com/cap/test", - "Values": [ - { - "role": "admin" - }, - { - "role": "viewer" - } - ] - }, - { - "Dst": "fd7a:115c:a1e0::c537:c845/128", - "Cap": "example.com/cap/test", - "Values": [ - { - "role": "admin" - }, - { - "role": "viewer" - } - ] - } - ] - } - ], - "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": { - "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": [ - { - "role": "admin" - }, - { - "role": "viewer" - } - ] - } - } - }, - "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": { - "example.com/cap/test": [ - { - "role": "admin" - }, - { - "role": "viewer" - } - ] - } - } - }, - "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": { - "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": [ - { - "role": "admin" - }, - { - "role": "viewer" - } - ] - } - } - }, - "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": { - "example.com/cap/test": [ - { - "role": "admin" - }, - { - "role": "viewer" - } - ] - } - } - }, - "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": { - "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" - }, - { - "role": "viewer" - } - ] - } - } - }, - "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": { - "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" - }, - { - "role": "viewer" - } - ] - } - } - }, - "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": { - "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" - }, - { - "role": "viewer" - } - ] - } - } - } - } + ] }, "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": [ @@ -1656,7 +242,10 @@ ], "CapGrant": [ { - "Dsts": ["100.103.8.15/32", "fd7a:115c:a1e0::5b37:80f/128"], + "Dsts": [ + "100.103.8.15/32", + "fd7a:115c:a1e0::5b37:80f/128" + ], "CapMap": { "example.com/cap/test": [ { @@ -1670,479 +259,9 @@ } ] } - ], - "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.103.8.15/32", - "Cap": "example.com/cap/test", - "Values": [ - { - "role": "admin" - }, - { - "role": "viewer" - } - ] - }, - { - "Dst": "fd7a:115c:a1e0::5b37:80f/128", - "Cap": "example.com/cap/test", - "Values": [ - { - "role": "admin" - }, - { - "role": "viewer" - } - ] - } - ] - } - ], - "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": { - "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": [ - { - "role": "admin" - }, - { - "role": "viewer" - } - ] - } - } - }, - "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": { - "example.com/cap/test": [ - { - "role": "admin" - }, - { - "role": "viewer" - } - ] - } - } - }, - "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": { - "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": [ - { - "role": "admin" - }, - { - "role": "viewer" - } - ] - } - } - }, - "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": { - "example.com/cap/test": [ - { - "role": "admin" - }, - { - "role": "viewer" - } - ] - } - } - }, - "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": { - "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" - }, - { - "role": "viewer" - } - ] - } - } - }, - "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": { - "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" - }, - { - "role": "viewer" - } - ] - } - } - }, - "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": { - "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" - }, - { - "role": "viewer" - } - ] - } - } - } - } + ] }, "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": [ @@ -2153,7 +272,10 @@ ], "CapGrant": [ { - "Dsts": ["100.108.74.26/32", "fd7a:115c:a1e0::b901:4a87/128"], + "Dsts": [ + "100.108.74.26/32", + "fd7a:115c:a1e0::b901:4a87/128" + ], "CapMap": { "example.com/cap/test": [ { @@ -2167,479 +289,9 @@ } ] } - ], - "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": "example.com/cap/test", - "Values": [ - { - "role": "admin" - }, - { - "role": "viewer" - } - ] - }, - { - "Dst": "fd7a:115c:a1e0::b901:4a87/128", - "Cap": "example.com/cap/test", - "Values": [ - { - "role": "admin" - }, - { - "role": "viewer" - } - ] - } - ] - } - ], - "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": [ - { - "role": "admin" - }, - { - "role": "viewer" - } - ] - } - } - }, - "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": { - "example.com/cap/test": [ - { - "role": "admin" - }, - { - "role": "viewer" - } - ] - } - } - }, - "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": [ - { - "role": "admin" - }, - { - "role": "viewer" - } - ] - } - } - }, - "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": [ - { - "role": "admin" - }, - { - "role": "viewer" - } - ] - } - } - }, - "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" - }, - { - "role": "viewer" - } - ] - } - } - }, - "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" - }, - { - "role": "viewer" - } - ] - } - } - }, - "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" - }, - { - "role": "viewer" - } - ] - } - } - } - } + ] }, "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": [ @@ -2650,7 +302,10 @@ ], "CapGrant": [ { - "Dsts": ["100.110.121.96/32", "fd7a:115c:a1e0::1737:7960/128"], + "Dsts": [ + "100.110.121.96/32", + "fd7a:115c:a1e0::1737:7960/128" + ], "CapMap": { "example.com/cap/test": [ { @@ -2664,479 +319,9 @@ } ] } - ], - "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.110.121.96/32", - "Cap": "example.com/cap/test", - "Values": [ - { - "role": "admin" - }, - { - "role": "viewer" - } - ] - }, - { - "Dst": "fd7a:115c:a1e0::1737:7960/128", - "Cap": "example.com/cap/test", - "Values": [ - { - "role": "admin" - }, - { - "role": "viewer" - } - ] - } - ] - } - ], - "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": { - "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": [ - { - "role": "admin" - }, - { - "role": "viewer" - } - ] - } - } - }, - "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": { - "example.com/cap/test": [ - { - "role": "admin" - }, - { - "role": "viewer" - } - ] - } - } - }, - "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": { - "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": [ - { - "role": "admin" - }, - { - "role": "viewer" - } - ] - } - } - }, - "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": { - "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": [ - { - "role": "admin" - }, - { - "role": "viewer" - } - ] - } - } - }, - "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": { - "example.com/cap/test": [ - { - "role": "admin" - }, - { - "role": "viewer" - } - ] - } - } - }, - "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": { - "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" - }, - { - "role": "viewer" - } - ] - } - } - }, - "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": { - "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" - }, - { - "role": "viewer" - } - ] - } - } - } - } + ] }, "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": [ @@ -3147,7 +332,10 @@ ], "CapGrant": [ { - "Dsts": ["100.103.90.82/32", "fd7a:115c:a1e0::9e37:5a52/128"], + "Dsts": [ + "100.103.90.82/32", + "fd7a:115c:a1e0::9e37:5a52/128" + ], "CapMap": { "example.com/cap/test": [ { @@ -3161,479 +349,9 @@ } ] } - ], - "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.103.90.82/32", - "Cap": "example.com/cap/test", - "Values": [ - { - "role": "admin" - }, - { - "role": "viewer" - } - ] - }, - { - "Dst": "fd7a:115c:a1e0::9e37:5a52/128", - "Cap": "example.com/cap/test", - "Values": [ - { - "role": "admin" - }, - { - "role": "viewer" - } - ] - } - ] - } - ], - "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": { - "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": [ - { - "role": "admin" - }, - { - "role": "viewer" - } - ] - } - } - }, - "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": { - "example.com/cap/test": [ - { - "role": "admin" - }, - { - "role": "viewer" - } - ] - } - } - }, - "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": { - "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": [ - { - "role": "admin" - }, - { - "role": "viewer" - } - ] - } - } - }, - "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": { - "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": [ - { - "role": "admin" - }, - { - "role": "viewer" - } - ] - } - } - }, - "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": { - "example.com/cap/test": [ - { - "role": "admin" - }, - { - "role": "viewer" - } - ] - } - } - }, - "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": { - "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" - }, - { - "role": "viewer" - } - ] - } - } - }, - "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": { - "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" - }, - { - "role": "viewer" - } - ] - } - } - } - } + ] }, "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": [ @@ -3644,7 +362,10 @@ ], "CapGrant": [ { - "Dsts": ["100.90.199.68/32", "fd7a:115c:a1e0::2d01:c747/128"], + "Dsts": [ + "100.90.199.68/32", + "fd7a:115c:a1e0::2d01:c747/128" + ], "CapMap": { "example.com/cap/test": [ { @@ -3658,473 +379,7 @@ } ] } - ], - "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.90.199.68/32", - "Cap": "example.com/cap/test", - "Values": [ - { - "role": "admin" - }, - { - "role": "viewer" - } - ] - }, - { - "Dst": "fd7a:115c:a1e0::2d01:c747/128", - "Cap": "example.com/cap/test", - "Values": [ - { - "role": "admin" - }, - { - "role": "viewer" - } - ] - } - ] - } - ], - "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": { - "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": [ - { - "role": "admin" - }, - { - "role": "viewer" - } - ] - } - } - }, - "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": { - "example.com/cap/test": [ - { - "role": "admin" - }, - { - "role": "viewer" - } - ] - } - } - }, - "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": { - "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": [ - { - "role": "admin" - }, - { - "role": "viewer" - } - ] - } - } - }, - "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": { - "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": [ - { - "role": "admin" - }, - { - "role": "viewer" - } - ] - } - } - }, - "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": { - "example.com/cap/test": [ - { - "role": "admin" - }, - { - "role": "viewer" - } - ] - } - } - }, - "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": { - "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" - }, - { - "role": "viewer" - } - ] - } - } - }, - "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": { - "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" - }, - { - "role": "viewer" - } - ] - } - } - } - } + ] } } } diff --git a/hscontrol/policy/v2/testdata/grant_results/GRANT-C4.hujson b/hscontrol/policy/v2/testdata/grant_results/GRANT-C4.hujson index da6d51c48..30531edfa 100644 --- a/hscontrol/policy/v2/testdata/grant_results/GRANT-C4.hujson +++ b/hscontrol/policy/v2/testdata/grant_results/GRANT-C4.hujson @@ -5,23 +5,37 @@ // Expected: Rules on 8 nodes { "test_id": "GRANT-C4", - "timestamp": "2026-02-23T00:29:02Z", - "propagation_wait_seconds": 15, "input": { - "policy_file": "/home/kradalby/acl-explore/grant_policies/grant_c4.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -30,17 +44,29 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "grants": [ { - "src": ["*"], - "dst": ["*"], + "src": [ + "*" + ], + "dst": [ + "*" + ], "app": { - "example.com/cap/one": [{}], + "example.com/cap/one": [ + {} + ], "example.com/cap/two": [ { "level": "high" @@ -50,96 +76,64 @@ } ] }, - "grants_section": [ - { - "src": ["*"], - "dst": ["*"], - "app": { - "example.com/cap/one": [{}], - "example.com/cap/two": [ - { - "level": "high" - } - ] - } - } - ], - "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"], + "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"], + "tags": [ + "tag:router" + ], "ipv4": "100.92.142.61", - "ipv6": "fd7a:115c:a1e0::3e37:8e3d", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] + "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"], + "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"], + "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"], + "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" @@ -148,10 +142,6 @@ }, "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": [ @@ -162,9 +152,14 @@ ], "CapGrant": [ { - "Dsts": ["100.85.66.106/32", "fd7a:115c:a1e0::7c37:426a/128"], + "Dsts": [ + "100.85.66.106/32", + "fd7a:115c:a1e0::7c37:426a/128" + ], "CapMap": { - "example.com/cap/one": [{}], + "example.com/cap/one": [ + {} + ], "example.com/cap/two": [ { "level": "high" @@ -174,469 +169,9 @@ } ] } - ], - "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.85.66.106/32", - "Cap": "example.com/cap/one", - "Values": [{}] - }, - { - "Dst": "100.85.66.106/32", - "Cap": "example.com/cap/two", - "Values": [ - { - "level": "high" - } - ] - }, - { - "Dst": "fd7a:115c:a1e0::7c37:426a/128", - "Cap": "example.com/cap/one", - "Values": [{}] - }, - { - "Dst": "fd7a:115c:a1e0::7c37:426a/128", - "Cap": "example.com/cap/two", - "Values": [ - { - "level": "high" - } - ] - } - ] - } - ], - "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": { - "example.com/cap/one": [{}], - "example.com/cap/two": [ - { - "level": "high" - } - ] - } - } - }, - "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": { - "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/one": [{}], - "example.com/cap/two": [ - { - "level": "high" - } - ] - } - } - }, - "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": { - "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/one": [{}], - "example.com/cap/two": [ - { - "level": "high" - } - ] - } - } - }, - "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": { - "example.com/cap/one": [{}], - "example.com/cap/two": [ - { - "level": "high" - } - ] - } - } - }, - "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": { - "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/one": [{}], - "example.com/cap/two": [ - { - "level": "high" - } - ] - } - } - }, - "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": { - "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/one": [{}], - "example.com/cap/two": [ - { - "level": "high" - } - ] - } - } - }, - "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": { - "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/one": [{}], - "example.com/cap/two": [ - { - "level": "high" - } - ] - } - } - } - } + ] }, "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": [ @@ -647,9 +182,14 @@ ], "CapGrant": [ { - "Dsts": ["100.92.142.61/32", "fd7a:115c:a1e0::3e37:8e3d/128"], + "Dsts": [ + "100.92.142.61/32", + "fd7a:115c:a1e0::3e37:8e3d/128" + ], "CapMap": { - "example.com/cap/one": [{}], + "example.com/cap/one": [ + {} + ], "example.com/cap/two": [ { "level": "high" @@ -659,468 +199,9 @@ } ] } - ], - "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.92.142.61/32", - "Cap": "example.com/cap/one", - "Values": [{}] - }, - { - "Dst": "100.92.142.61/32", - "Cap": "example.com/cap/two", - "Values": [ - { - "level": "high" - } - ] - }, - { - "Dst": "fd7a:115c:a1e0::3e37:8e3d/128", - "Cap": "example.com/cap/one", - "Values": [{}] - }, - { - "Dst": "fd7a:115c:a1e0::3e37:8e3d/128", - "Cap": "example.com/cap/two", - "Values": [ - { - "level": "high" - } - ] - } - ] - } - ], - "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": { - "example.com/cap/one": [{}], - "example.com/cap/two": [ - { - "level": "high" - } - ] - } - } - }, - "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": { - "example.com/cap/one": [{}], - "example.com/cap/two": [ - { - "level": "high" - } - ] - } - } - }, - "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": { - "example.com/cap/one": [{}], - "example.com/cap/two": [ - { - "level": "high" - } - ] - } - } - }, - "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": { - "example.com/cap/one": [{}], - "example.com/cap/two": [ - { - "level": "high" - } - ] - } - } - }, - "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": { - "example.com/cap/one": [{}], - "example.com/cap/two": [ - { - "level": "high" - } - ] - } - } - }, - "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": { - "example.com/cap/one": [{}], - "example.com/cap/two": [ - { - "level": "high" - } - ] - } - } - }, - "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": { - "example.com/cap/one": [{}], - "example.com/cap/two": [ - { - "level": "high" - } - ] - } - } - } - } + ] }, "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": [ @@ -1131,9 +212,14 @@ ], "CapGrant": [ { - "Dsts": ["100.83.200.69/32", "fd7a:115c:a1e0::c537:c845/128"], + "Dsts": [ + "100.83.200.69/32", + "fd7a:115c:a1e0::c537:c845/128" + ], "CapMap": { - "example.com/cap/one": [{}], + "example.com/cap/one": [ + {} + ], "example.com/cap/two": [ { "level": "high" @@ -1143,469 +229,9 @@ } ] } - ], - "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.83.200.69/32", - "Cap": "example.com/cap/one", - "Values": [{}] - }, - { - "Dst": "100.83.200.69/32", - "Cap": "example.com/cap/two", - "Values": [ - { - "level": "high" - } - ] - }, - { - "Dst": "fd7a:115c:a1e0::c537:c845/128", - "Cap": "example.com/cap/one", - "Values": [{}] - }, - { - "Dst": "fd7a:115c:a1e0::c537:c845/128", - "Cap": "example.com/cap/two", - "Values": [ - { - "level": "high" - } - ] - } - ] - } - ], - "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": { - "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/one": [{}], - "example.com/cap/two": [ - { - "level": "high" - } - ] - } - } - }, - "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": { - "example.com/cap/one": [{}], - "example.com/cap/two": [ - { - "level": "high" - } - ] - } - } - }, - "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": { - "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/one": [{}], - "example.com/cap/two": [ - { - "level": "high" - } - ] - } - } - }, - "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": { - "example.com/cap/one": [{}], - "example.com/cap/two": [ - { - "level": "high" - } - ] - } - } - }, - "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": { - "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/one": [{}], - "example.com/cap/two": [ - { - "level": "high" - } - ] - } - } - }, - "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": { - "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/one": [{}], - "example.com/cap/two": [ - { - "level": "high" - } - ] - } - } - }, - "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": { - "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/one": [{}], - "example.com/cap/two": [ - { - "level": "high" - } - ] - } - } - } - } + ] }, "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": [ @@ -1616,9 +242,14 @@ ], "CapGrant": [ { - "Dsts": ["100.103.8.15/32", "fd7a:115c:a1e0::5b37:80f/128"], + "Dsts": [ + "100.103.8.15/32", + "fd7a:115c:a1e0::5b37:80f/128" + ], "CapMap": { - "example.com/cap/one": [{}], + "example.com/cap/one": [ + {} + ], "example.com/cap/two": [ { "level": "high" @@ -1628,469 +259,9 @@ } ] } - ], - "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.103.8.15/32", - "Cap": "example.com/cap/one", - "Values": [{}] - }, - { - "Dst": "100.103.8.15/32", - "Cap": "example.com/cap/two", - "Values": [ - { - "level": "high" - } - ] - }, - { - "Dst": "fd7a:115c:a1e0::5b37:80f/128", - "Cap": "example.com/cap/one", - "Values": [{}] - }, - { - "Dst": "fd7a:115c:a1e0::5b37:80f/128", - "Cap": "example.com/cap/two", - "Values": [ - { - "level": "high" - } - ] - } - ] - } - ], - "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": { - "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/one": [{}], - "example.com/cap/two": [ - { - "level": "high" - } - ] - } - } - }, - "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": { - "example.com/cap/one": [{}], - "example.com/cap/two": [ - { - "level": "high" - } - ] - } - } - }, - "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": { - "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/one": [{}], - "example.com/cap/two": [ - { - "level": "high" - } - ] - } - } - }, - "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": { - "example.com/cap/one": [{}], - "example.com/cap/two": [ - { - "level": "high" - } - ] - } - } - }, - "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": { - "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/one": [{}], - "example.com/cap/two": [ - { - "level": "high" - } - ] - } - } - }, - "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": { - "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/one": [{}], - "example.com/cap/two": [ - { - "level": "high" - } - ] - } - } - }, - "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": { - "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/one": [{}], - "example.com/cap/two": [ - { - "level": "high" - } - ] - } - } - } - } + ] }, "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": [ @@ -2101,9 +272,14 @@ ], "CapGrant": [ { - "Dsts": ["100.108.74.26/32", "fd7a:115c:a1e0::b901:4a87/128"], + "Dsts": [ + "100.108.74.26/32", + "fd7a:115c:a1e0::b901:4a87/128" + ], "CapMap": { - "example.com/cap/one": [{}], + "example.com/cap/one": [ + {} + ], "example.com/cap/two": [ { "level": "high" @@ -2113,469 +289,9 @@ } ] } - ], - "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": "example.com/cap/one", - "Values": [{}] - }, - { - "Dst": "100.108.74.26/32", - "Cap": "example.com/cap/two", - "Values": [ - { - "level": "high" - } - ] - }, - { - "Dst": "fd7a:115c:a1e0::b901:4a87/128", - "Cap": "example.com/cap/one", - "Values": [{}] - }, - { - "Dst": "fd7a:115c:a1e0::b901:4a87/128", - "Cap": "example.com/cap/two", - "Values": [ - { - "level": "high" - } - ] - } - ] - } - ], - "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/one": [{}], - "example.com/cap/two": [ - { - "level": "high" - } - ] - } - } - }, - "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": { - "example.com/cap/one": [{}], - "example.com/cap/two": [ - { - "level": "high" - } - ] - } - } - }, - "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/one": [{}], - "example.com/cap/two": [ - { - "level": "high" - } - ] - } - } - }, - "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/one": [{}], - "example.com/cap/two": [ - { - "level": "high" - } - ] - } - } - }, - "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/one": [{}], - "example.com/cap/two": [ - { - "level": "high" - } - ] - } - } - }, - "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/one": [{}], - "example.com/cap/two": [ - { - "level": "high" - } - ] - } - } - }, - "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/one": [{}], - "example.com/cap/two": [ - { - "level": "high" - } - ] - } - } - } - } + ] }, "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": [ @@ -2586,9 +302,14 @@ ], "CapGrant": [ { - "Dsts": ["100.110.121.96/32", "fd7a:115c:a1e0::1737:7960/128"], + "Dsts": [ + "100.110.121.96/32", + "fd7a:115c:a1e0::1737:7960/128" + ], "CapMap": { - "example.com/cap/one": [{}], + "example.com/cap/one": [ + {} + ], "example.com/cap/two": [ { "level": "high" @@ -2598,469 +319,9 @@ } ] } - ], - "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.110.121.96/32", - "Cap": "example.com/cap/two", - "Values": [ - { - "level": "high" - } - ] - }, - { - "Dst": "100.110.121.96/32", - "Cap": "example.com/cap/one", - "Values": [{}] - }, - { - "Dst": "fd7a:115c:a1e0::1737:7960/128", - "Cap": "example.com/cap/one", - "Values": [{}] - }, - { - "Dst": "fd7a:115c:a1e0::1737:7960/128", - "Cap": "example.com/cap/two", - "Values": [ - { - "level": "high" - } - ] - } - ] - } - ], - "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": { - "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/one": [{}], - "example.com/cap/two": [ - { - "level": "high" - } - ] - } - } - }, - "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": { - "example.com/cap/one": [{}], - "example.com/cap/two": [ - { - "level": "high" - } - ] - } - } - }, - "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": { - "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/one": [{}], - "example.com/cap/two": [ - { - "level": "high" - } - ] - } - } - }, - "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": { - "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/one": [{}], - "example.com/cap/two": [ - { - "level": "high" - } - ] - } - } - }, - "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": { - "example.com/cap/one": [{}], - "example.com/cap/two": [ - { - "level": "high" - } - ] - } - } - }, - "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": { - "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/one": [{}], - "example.com/cap/two": [ - { - "level": "high" - } - ] - } - } - }, - "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": { - "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/one": [{}], - "example.com/cap/two": [ - { - "level": "high" - } - ] - } - } - } - } + ] }, "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": [ @@ -3071,9 +332,14 @@ ], "CapGrant": [ { - "Dsts": ["100.103.90.82/32", "fd7a:115c:a1e0::9e37:5a52/128"], + "Dsts": [ + "100.103.90.82/32", + "fd7a:115c:a1e0::9e37:5a52/128" + ], "CapMap": { - "example.com/cap/one": [{}], + "example.com/cap/one": [ + {} + ], "example.com/cap/two": [ { "level": "high" @@ -3083,469 +349,9 @@ } ] } - ], - "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.103.90.82/32", - "Cap": "example.com/cap/one", - "Values": [{}] - }, - { - "Dst": "100.103.90.82/32", - "Cap": "example.com/cap/two", - "Values": [ - { - "level": "high" - } - ] - }, - { - "Dst": "fd7a:115c:a1e0::9e37:5a52/128", - "Cap": "example.com/cap/two", - "Values": [ - { - "level": "high" - } - ] - }, - { - "Dst": "fd7a:115c:a1e0::9e37:5a52/128", - "Cap": "example.com/cap/one", - "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": { - "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/one": [{}], - "example.com/cap/two": [ - { - "level": "high" - } - ] - } - } - }, - "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": { - "example.com/cap/one": [{}], - "example.com/cap/two": [ - { - "level": "high" - } - ] - } - } - }, - "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": { - "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/one": [{}], - "example.com/cap/two": [ - { - "level": "high" - } - ] - } - } - }, - "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": { - "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/one": [{}], - "example.com/cap/two": [ - { - "level": "high" - } - ] - } - } - }, - "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": { - "example.com/cap/one": [{}], - "example.com/cap/two": [ - { - "level": "high" - } - ] - } - } - }, - "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": { - "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/one": [{}], - "example.com/cap/two": [ - { - "level": "high" - } - ] - } - } - }, - "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": { - "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/one": [{}], - "example.com/cap/two": [ - { - "level": "high" - } - ] - } - } - } - } + ] }, "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": [ @@ -3556,9 +362,14 @@ ], "CapGrant": [ { - "Dsts": ["100.90.199.68/32", "fd7a:115c:a1e0::2d01:c747/128"], + "Dsts": [ + "100.90.199.68/32", + "fd7a:115c:a1e0::2d01:c747/128" + ], "CapMap": { - "example.com/cap/one": [{}], + "example.com/cap/one": [ + {} + ], "example.com/cap/two": [ { "level": "high" @@ -3568,463 +379,7 @@ } ] } - ], - "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.90.199.68/32", - "Cap": "example.com/cap/one", - "Values": [{}] - }, - { - "Dst": "100.90.199.68/32", - "Cap": "example.com/cap/two", - "Values": [ - { - "level": "high" - } - ] - }, - { - "Dst": "fd7a:115c:a1e0::2d01:c747/128", - "Cap": "example.com/cap/one", - "Values": [{}] - }, - { - "Dst": "fd7a:115c:a1e0::2d01:c747/128", - "Cap": "example.com/cap/two", - "Values": [ - { - "level": "high" - } - ] - } - ] - } - ], - "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": { - "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/one": [{}], - "example.com/cap/two": [ - { - "level": "high" - } - ] - } - } - }, - "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": { - "example.com/cap/one": [{}], - "example.com/cap/two": [ - { - "level": "high" - } - ] - } - } - }, - "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": { - "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/one": [{}], - "example.com/cap/two": [ - { - "level": "high" - } - ] - } - } - }, - "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": { - "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/one": [{}], - "example.com/cap/two": [ - { - "level": "high" - } - ] - } - } - }, - "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": { - "example.com/cap/one": [{}], - "example.com/cap/two": [ - { - "level": "high" - } - ] - } - } - }, - "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": { - "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/one": [{}], - "example.com/cap/two": [ - { - "level": "high" - } - ] - } - } - }, - "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": { - "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/one": [{}], - "example.com/cap/two": [ - { - "level": "high" - } - ] - } - } - } - } + ] } } } diff --git a/hscontrol/policy/v2/testdata/grant_results/GRANT-C5.hujson b/hscontrol/policy/v2/testdata/grant_results/GRANT-C5.hujson index b37e62bb7..10316e7a8 100644 --- a/hscontrol/policy/v2/testdata/grant_results/GRANT-C5.hujson +++ b/hscontrol/policy/v2/testdata/grant_results/GRANT-C5.hujson @@ -5,23 +5,37 @@ // Expected: Rules on 8 nodes { "test_id": "GRANT-C5", - "timestamp": "2026-02-23T00:29:18Z", - "propagation_wait_seconds": 15, "input": { - "policy_file": "/home/kradalby/acl-explore/grant_policies/grant_c5.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -30,15 +44,25 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "grants": [ { - "src": ["*"], - "dst": ["*"], + "src": [ + "*" + ], + "dst": [ + "*" + ], "app": { "example.com/cap/complex": [ { @@ -53,99 +77,64 @@ } ] }, - "grants_section": [ - { - "src": ["*"], - "dst": ["*"], - "app": { - "example.com/cap/complex": [ - { - "nested": { - "deep": { - "value": 42 - } - } - } - ] - } - } - ], - "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"], + "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"], + "tags": [ + "tag:router" + ], "ipv4": "100.92.142.61", - "ipv6": "fd7a:115c:a1e0::3e37:8e3d", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] + "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"], + "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"], + "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"], + "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" @@ -154,10 +143,6 @@ }, "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": [ @@ -168,7 +153,10 @@ ], "CapGrant": [ { - "Dsts": ["100.85.66.106/32", "fd7a:115c:a1e0::7c37:426a/128"], + "Dsts": [ + "100.85.66.106/32", + "fd7a:115c:a1e0::7c37:426a/128" + ], "CapMap": { "example.com/cap/complex": [ { @@ -183,488 +171,9 @@ } ] } - ], - "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.85.66.106/32", - "Cap": "example.com/cap/complex", - "Values": [ - { - "nested": { - "deep": { - "value": 42 - } - } - } - ] - }, - { - "Dst": "fd7a:115c:a1e0::7c37:426a/128", - "Cap": "example.com/cap/complex", - "Values": [ - { - "nested": { - "deep": { - "value": 42 - } - } - } - ] - } - ] - } - ], - "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": { - "example.com/cap/complex": [ - { - "nested": { - "deep": { - "value": 42 - } - } - } - ] - } - } - }, - "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": { - "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/complex": [ - { - "nested": { - "deep": { - "value": 42 - } - } - } - ] - } - } - }, - "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": { - "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/complex": [ - { - "nested": { - "deep": { - "value": 42 - } - } - } - ] - } - } - }, - "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": { - "example.com/cap/complex": [ - { - "nested": { - "deep": { - "value": 42 - } - } - } - ] - } - } - }, - "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": { - "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/complex": [ - { - "nested": { - "deep": { - "value": 42 - } - } - } - ] - } - } - }, - "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": { - "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/complex": [ - { - "nested": { - "deep": { - "value": 42 - } - } - } - ] - } - } - }, - "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": { - "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/complex": [ - { - "nested": { - "deep": { - "value": 42 - } - } - } - ] - } - } - } - } + ] }, "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": [ @@ -675,7 +184,10 @@ ], "CapGrant": [ { - "Dsts": ["100.92.142.61/32", "fd7a:115c:a1e0::3e37:8e3d/128"], + "Dsts": [ + "100.92.142.61/32", + "fd7a:115c:a1e0::3e37:8e3d/128" + ], "CapMap": { "example.com/cap/complex": [ { @@ -690,487 +202,9 @@ } ] } - ], - "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.92.142.61/32", - "Cap": "example.com/cap/complex", - "Values": [ - { - "nested": { - "deep": { - "value": 42 - } - } - } - ] - }, - { - "Dst": "fd7a:115c:a1e0::3e37:8e3d/128", - "Cap": "example.com/cap/complex", - "Values": [ - { - "nested": { - "deep": { - "value": 42 - } - } - } - ] - } - ] - } - ], - "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": { - "example.com/cap/complex": [ - { - "nested": { - "deep": { - "value": 42 - } - } - } - ] - } - } - }, - "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": { - "example.com/cap/complex": [ - { - "nested": { - "deep": { - "value": 42 - } - } - } - ] - } - } - }, - "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": { - "example.com/cap/complex": [ - { - "nested": { - "deep": { - "value": 42 - } - } - } - ] - } - } - }, - "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": { - "example.com/cap/complex": [ - { - "nested": { - "deep": { - "value": 42 - } - } - } - ] - } - } - }, - "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": { - "example.com/cap/complex": [ - { - "nested": { - "deep": { - "value": 42 - } - } - } - ] - } - } - }, - "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": { - "example.com/cap/complex": [ - { - "nested": { - "deep": { - "value": 42 - } - } - } - ] - } - } - }, - "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": { - "example.com/cap/complex": [ - { - "nested": { - "deep": { - "value": 42 - } - } - } - ] - } - } - } - } + ] }, "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": [ @@ -1181,7 +215,10 @@ ], "CapGrant": [ { - "Dsts": ["100.83.200.69/32", "fd7a:115c:a1e0::c537:c845/128"], + "Dsts": [ + "100.83.200.69/32", + "fd7a:115c:a1e0::c537:c845/128" + ], "CapMap": { "example.com/cap/complex": [ { @@ -1196,488 +233,9 @@ } ] } - ], - "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.83.200.69/32", - "Cap": "example.com/cap/complex", - "Values": [ - { - "nested": { - "deep": { - "value": 42 - } - } - } - ] - }, - { - "Dst": "fd7a:115c:a1e0::c537:c845/128", - "Cap": "example.com/cap/complex", - "Values": [ - { - "nested": { - "deep": { - "value": 42 - } - } - } - ] - } - ] - } - ], - "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": { - "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/complex": [ - { - "nested": { - "deep": { - "value": 42 - } - } - } - ] - } - } - }, - "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": { - "example.com/cap/complex": [ - { - "nested": { - "deep": { - "value": 42 - } - } - } - ] - } - } - }, - "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": { - "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/complex": [ - { - "nested": { - "deep": { - "value": 42 - } - } - } - ] - } - } - }, - "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": { - "example.com/cap/complex": [ - { - "nested": { - "deep": { - "value": 42 - } - } - } - ] - } - } - }, - "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": { - "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/complex": [ - { - "nested": { - "deep": { - "value": 42 - } - } - } - ] - } - } - }, - "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": { - "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/complex": [ - { - "nested": { - "deep": { - "value": 42 - } - } - } - ] - } - } - }, - "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": { - "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/complex": [ - { - "nested": { - "deep": { - "value": 42 - } - } - } - ] - } - } - } - } + ] }, "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": [ @@ -1688,7 +246,10 @@ ], "CapGrant": [ { - "Dsts": ["100.103.8.15/32", "fd7a:115c:a1e0::5b37:80f/128"], + "Dsts": [ + "100.103.8.15/32", + "fd7a:115c:a1e0::5b37:80f/128" + ], "CapMap": { "example.com/cap/complex": [ { @@ -1703,488 +264,9 @@ } ] } - ], - "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.103.8.15/32", - "Cap": "example.com/cap/complex", - "Values": [ - { - "nested": { - "deep": { - "value": 42 - } - } - } - ] - }, - { - "Dst": "fd7a:115c:a1e0::5b37:80f/128", - "Cap": "example.com/cap/complex", - "Values": [ - { - "nested": { - "deep": { - "value": 42 - } - } - } - ] - } - ] - } - ], - "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": { - "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/complex": [ - { - "nested": { - "deep": { - "value": 42 - } - } - } - ] - } - } - }, - "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": { - "example.com/cap/complex": [ - { - "nested": { - "deep": { - "value": 42 - } - } - } - ] - } - } - }, - "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": { - "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/complex": [ - { - "nested": { - "deep": { - "value": 42 - } - } - } - ] - } - } - }, - "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": { - "example.com/cap/complex": [ - { - "nested": { - "deep": { - "value": 42 - } - } - } - ] - } - } - }, - "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": { - "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/complex": [ - { - "nested": { - "deep": { - "value": 42 - } - } - } - ] - } - } - }, - "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": { - "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/complex": [ - { - "nested": { - "deep": { - "value": 42 - } - } - } - ] - } - } - }, - "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": { - "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/complex": [ - { - "nested": { - "deep": { - "value": 42 - } - } - } - ] - } - } - } - } + ] }, "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": [ @@ -2195,7 +277,10 @@ ], "CapGrant": [ { - "Dsts": ["100.108.74.26/32", "fd7a:115c:a1e0::b901:4a87/128"], + "Dsts": [ + "100.108.74.26/32", + "fd7a:115c:a1e0::b901:4a87/128" + ], "CapMap": { "example.com/cap/complex": [ { @@ -2210,488 +295,9 @@ } ] } - ], - "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": "example.com/cap/complex", - "Values": [ - { - "nested": { - "deep": { - "value": 42 - } - } - } - ] - }, - { - "Dst": "fd7a:115c:a1e0::b901:4a87/128", - "Cap": "example.com/cap/complex", - "Values": [ - { - "nested": { - "deep": { - "value": 42 - } - } - } - ] - } - ] - } - ], - "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/complex": [ - { - "nested": { - "deep": { - "value": 42 - } - } - } - ] - } - } - }, - "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": { - "example.com/cap/complex": [ - { - "nested": { - "deep": { - "value": 42 - } - } - } - ] - } - } - }, - "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/complex": [ - { - "nested": { - "deep": { - "value": 42 - } - } - } - ] - } - } - }, - "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/complex": [ - { - "nested": { - "deep": { - "value": 42 - } - } - } - ] - } - } - }, - "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/complex": [ - { - "nested": { - "deep": { - "value": 42 - } - } - } - ] - } - } - }, - "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/complex": [ - { - "nested": { - "deep": { - "value": 42 - } - } - } - ] - } - } - }, - "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/complex": [ - { - "nested": { - "deep": { - "value": 42 - } - } - } - ] - } - } - } - } + ] }, "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": [ @@ -2702,7 +308,10 @@ ], "CapGrant": [ { - "Dsts": ["100.110.121.96/32", "fd7a:115c:a1e0::1737:7960/128"], + "Dsts": [ + "100.110.121.96/32", + "fd7a:115c:a1e0::1737:7960/128" + ], "CapMap": { "example.com/cap/complex": [ { @@ -2717,488 +326,9 @@ } ] } - ], - "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.110.121.96/32", - "Cap": "example.com/cap/complex", - "Values": [ - { - "nested": { - "deep": { - "value": 42 - } - } - } - ] - }, - { - "Dst": "fd7a:115c:a1e0::1737:7960/128", - "Cap": "example.com/cap/complex", - "Values": [ - { - "nested": { - "deep": { - "value": 42 - } - } - } - ] - } - ] - } - ], - "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": { - "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/complex": [ - { - "nested": { - "deep": { - "value": 42 - } - } - } - ] - } - } - }, - "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": { - "example.com/cap/complex": [ - { - "nested": { - "deep": { - "value": 42 - } - } - } - ] - } - } - }, - "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": { - "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/complex": [ - { - "nested": { - "deep": { - "value": 42 - } - } - } - ] - } - } - }, - "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": { - "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/complex": [ - { - "nested": { - "deep": { - "value": 42 - } - } - } - ] - } - } - }, - "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": { - "example.com/cap/complex": [ - { - "nested": { - "deep": { - "value": 42 - } - } - } - ] - } - } - }, - "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": { - "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/complex": [ - { - "nested": { - "deep": { - "value": 42 - } - } - } - ] - } - } - }, - "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": { - "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/complex": [ - { - "nested": { - "deep": { - "value": 42 - } - } - } - ] - } - } - } - } + ] }, "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": [ @@ -3209,7 +339,10 @@ ], "CapGrant": [ { - "Dsts": ["100.103.90.82/32", "fd7a:115c:a1e0::9e37:5a52/128"], + "Dsts": [ + "100.103.90.82/32", + "fd7a:115c:a1e0::9e37:5a52/128" + ], "CapMap": { "example.com/cap/complex": [ { @@ -3224,488 +357,9 @@ } ] } - ], - "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.103.90.82/32", - "Cap": "example.com/cap/complex", - "Values": [ - { - "nested": { - "deep": { - "value": 42 - } - } - } - ] - }, - { - "Dst": "fd7a:115c:a1e0::9e37:5a52/128", - "Cap": "example.com/cap/complex", - "Values": [ - { - "nested": { - "deep": { - "value": 42 - } - } - } - ] - } - ] - } - ], - "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": { - "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/complex": [ - { - "nested": { - "deep": { - "value": 42 - } - } - } - ] - } - } - }, - "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": { - "example.com/cap/complex": [ - { - "nested": { - "deep": { - "value": 42 - } - } - } - ] - } - } - }, - "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": { - "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/complex": [ - { - "nested": { - "deep": { - "value": 42 - } - } - } - ] - } - } - }, - "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": { - "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/complex": [ - { - "nested": { - "deep": { - "value": 42 - } - } - } - ] - } - } - }, - "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": { - "example.com/cap/complex": [ - { - "nested": { - "deep": { - "value": 42 - } - } - } - ] - } - } - }, - "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": { - "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/complex": [ - { - "nested": { - "deep": { - "value": 42 - } - } - } - ] - } - } - }, - "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": { - "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/complex": [ - { - "nested": { - "deep": { - "value": 42 - } - } - } - ] - } - } - } - } + ] }, "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": [ @@ -3716,7 +370,10 @@ ], "CapGrant": [ { - "Dsts": ["100.90.199.68/32", "fd7a:115c:a1e0::2d01:c747/128"], + "Dsts": [ + "100.90.199.68/32", + "fd7a:115c:a1e0::2d01:c747/128" + ], "CapMap": { "example.com/cap/complex": [ { @@ -3731,482 +388,7 @@ } ] } - ], - "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.90.199.68/32", - "Cap": "example.com/cap/complex", - "Values": [ - { - "nested": { - "deep": { - "value": 42 - } - } - } - ] - }, - { - "Dst": "fd7a:115c:a1e0::2d01:c747/128", - "Cap": "example.com/cap/complex", - "Values": [ - { - "nested": { - "deep": { - "value": 42 - } - } - } - ] - } - ] - } - ], - "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": { - "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/complex": [ - { - "nested": { - "deep": { - "value": 42 - } - } - } - ] - } - } - }, - "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": { - "example.com/cap/complex": [ - { - "nested": { - "deep": { - "value": 42 - } - } - } - ] - } - } - }, - "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": { - "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/complex": [ - { - "nested": { - "deep": { - "value": 42 - } - } - } - ] - } - } - }, - "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": { - "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/complex": [ - { - "nested": { - "deep": { - "value": 42 - } - } - } - ] - } - } - }, - "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": { - "example.com/cap/complex": [ - { - "nested": { - "deep": { - "value": 42 - } - } - } - ] - } - } - }, - "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": { - "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/complex": [ - { - "nested": { - "deep": { - "value": 42 - } - } - } - ] - } - } - }, - "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": { - "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/complex": [ - { - "nested": { - "deep": { - "value": 42 - } - } - } - ] - } - } - } - } + ] } } } diff --git a/hscontrol/policy/v2/testdata/grant_results/GRANT-C6.hujson b/hscontrol/policy/v2/testdata/grant_results/GRANT-C6.hujson index 1d966ec90..6ea8c9162 100644 --- a/hscontrol/policy/v2/testdata/grant_results/GRANT-C6.hujson +++ b/hscontrol/policy/v2/testdata/grant_results/GRANT-C6.hujson @@ -5,23 +5,37 @@ // Expected: Rules on 8 nodes { "test_id": "GRANT-C6", - "timestamp": "2026-02-23T00:29:35Z", - "propagation_wait_seconds": 15, "input": { - "policy_file": "/home/kradalby/acl-explore/grant_policies/grant_c6.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -30,114 +44,97 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "grants": [ { - "src": ["*"], - "dst": ["*"], + "src": [ + "*" + ], + "dst": [ + "*" + ], "app": { "example.com/cap/array": [ { - "items": [1, 2, 3] + "items": [ + 1, + 2, + 3 + ] } ] } } ] }, - "grants_section": [ - { - "src": ["*"], - "dst": ["*"], - "app": { - "example.com/cap/array": [ - { - "items": [1, 2, 3] - } - ] - } - } - ], - "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"], + "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"], + "tags": [ + "tag:router" + ], "ipv4": "100.92.142.61", - "ipv6": "fd7a:115c:a1e0::3e37:8e3d", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] + "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"], + "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"], + "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"], + "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" @@ -146,10 +143,6 @@ }, "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": [ @@ -160,463 +153,27 @@ ], "CapGrant": [ { - "Dsts": ["100.85.66.106/32", "fd7a:115c:a1e0::7c37:426a/128"], + "Dsts": [ + "100.85.66.106/32", + "fd7a:115c:a1e0::7c37:426a/128" + ], "CapMap": { "example.com/cap/array": [ { - "items": [1, 2, 3] + "items": [ + 1, + 2, + 3 + ] } ] } } ] } - ], - "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.85.66.106/32", - "Cap": "example.com/cap/array", - "Values": [ - { - "items": [1, 2, 3] - } - ] - }, - { - "Dst": "fd7a:115c:a1e0::7c37:426a/128", - "Cap": "example.com/cap/array", - "Values": [ - { - "items": [1, 2, 3] - } - ] - } - ] - } - ], - "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": { - "example.com/cap/array": [ - { - "items": [1, 2, 3] - } - ] - } - } - }, - "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": { - "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/array": [ - { - "items": [1, 2, 3] - } - ] - } - } - }, - "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": { - "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/array": [ - { - "items": [1, 2, 3] - } - ] - } - } - }, - "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": { - "example.com/cap/array": [ - { - "items": [1, 2, 3] - } - ] - } - } - }, - "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": { - "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/array": [ - { - "items": [1, 2, 3] - } - ] - } - } - }, - "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": { - "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/array": [ - { - "items": [1, 2, 3] - } - ] - } - } - }, - "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": { - "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/array": [ - { - "items": [1, 2, 3] - } - ] - } - } - } - } + ] }, "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": [ @@ -627,462 +184,27 @@ ], "CapGrant": [ { - "Dsts": ["100.92.142.61/32", "fd7a:115c:a1e0::3e37:8e3d/128"], + "Dsts": [ + "100.92.142.61/32", + "fd7a:115c:a1e0::3e37:8e3d/128" + ], "CapMap": { "example.com/cap/array": [ { - "items": [1, 2, 3] + "items": [ + 1, + 2, + 3 + ] } ] } } ] } - ], - "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.92.142.61/32", - "Cap": "example.com/cap/array", - "Values": [ - { - "items": [1, 2, 3] - } - ] - }, - { - "Dst": "fd7a:115c:a1e0::3e37:8e3d/128", - "Cap": "example.com/cap/array", - "Values": [ - { - "items": [1, 2, 3] - } - ] - } - ] - } - ], - "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": { - "example.com/cap/array": [ - { - "items": [1, 2, 3] - } - ] - } - } - }, - "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": { - "example.com/cap/array": [ - { - "items": [1, 2, 3] - } - ] - } - } - }, - "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": { - "example.com/cap/array": [ - { - "items": [1, 2, 3] - } - ] - } - } - }, - "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": { - "example.com/cap/array": [ - { - "items": [1, 2, 3] - } - ] - } - } - }, - "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": { - "example.com/cap/array": [ - { - "items": [1, 2, 3] - } - ] - } - } - }, - "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": { - "example.com/cap/array": [ - { - "items": [1, 2, 3] - } - ] - } - } - }, - "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": { - "example.com/cap/array": [ - { - "items": [1, 2, 3] - } - ] - } - } - } - } + ] }, "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": [ @@ -1093,463 +215,27 @@ ], "CapGrant": [ { - "Dsts": ["100.83.200.69/32", "fd7a:115c:a1e0::c537:c845/128"], + "Dsts": [ + "100.83.200.69/32", + "fd7a:115c:a1e0::c537:c845/128" + ], "CapMap": { "example.com/cap/array": [ { - "items": [1, 2, 3] + "items": [ + 1, + 2, + 3 + ] } ] } } ] } - ], - "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.83.200.69/32", - "Cap": "example.com/cap/array", - "Values": [ - { - "items": [1, 2, 3] - } - ] - }, - { - "Dst": "fd7a:115c:a1e0::c537:c845/128", - "Cap": "example.com/cap/array", - "Values": [ - { - "items": [1, 2, 3] - } - ] - } - ] - } - ], - "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": { - "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/array": [ - { - "items": [1, 2, 3] - } - ] - } - } - }, - "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": { - "example.com/cap/array": [ - { - "items": [1, 2, 3] - } - ] - } - } - }, - "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": { - "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/array": [ - { - "items": [1, 2, 3] - } - ] - } - } - }, - "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": { - "example.com/cap/array": [ - { - "items": [1, 2, 3] - } - ] - } - } - }, - "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": { - "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/array": [ - { - "items": [1, 2, 3] - } - ] - } - } - }, - "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": { - "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/array": [ - { - "items": [1, 2, 3] - } - ] - } - } - }, - "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": { - "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/array": [ - { - "items": [1, 2, 3] - } - ] - } - } - } - } + ] }, "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": [ @@ -1560,463 +246,27 @@ ], "CapGrant": [ { - "Dsts": ["100.103.8.15/32", "fd7a:115c:a1e0::5b37:80f/128"], + "Dsts": [ + "100.103.8.15/32", + "fd7a:115c:a1e0::5b37:80f/128" + ], "CapMap": { "example.com/cap/array": [ { - "items": [1, 2, 3] + "items": [ + 1, + 2, + 3 + ] } ] } } ] } - ], - "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.103.8.15/32", - "Cap": "example.com/cap/array", - "Values": [ - { - "items": [1, 2, 3] - } - ] - }, - { - "Dst": "fd7a:115c:a1e0::5b37:80f/128", - "Cap": "example.com/cap/array", - "Values": [ - { - "items": [1, 2, 3] - } - ] - } - ] - } - ], - "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": { - "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/array": [ - { - "items": [1, 2, 3] - } - ] - } - } - }, - "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": { - "example.com/cap/array": [ - { - "items": [1, 2, 3] - } - ] - } - } - }, - "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": { - "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/array": [ - { - "items": [1, 2, 3] - } - ] - } - } - }, - "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": { - "example.com/cap/array": [ - { - "items": [1, 2, 3] - } - ] - } - } - }, - "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": { - "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/array": [ - { - "items": [1, 2, 3] - } - ] - } - } - }, - "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": { - "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/array": [ - { - "items": [1, 2, 3] - } - ] - } - } - }, - "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": { - "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/array": [ - { - "items": [1, 2, 3] - } - ] - } - } - } - } + ] }, "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": [ @@ -2027,463 +277,27 @@ ], "CapGrant": [ { - "Dsts": ["100.108.74.26/32", "fd7a:115c:a1e0::b901:4a87/128"], + "Dsts": [ + "100.108.74.26/32", + "fd7a:115c:a1e0::b901:4a87/128" + ], "CapMap": { "example.com/cap/array": [ { - "items": [1, 2, 3] + "items": [ + 1, + 2, + 3 + ] } ] } } ] } - ], - "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": "example.com/cap/array", - "Values": [ - { - "items": [1, 2, 3] - } - ] - }, - { - "Dst": "fd7a:115c:a1e0::b901:4a87/128", - "Cap": "example.com/cap/array", - "Values": [ - { - "items": [1, 2, 3] - } - ] - } - ] - } - ], - "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/array": [ - { - "items": [1, 2, 3] - } - ] - } - } - }, - "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": { - "example.com/cap/array": [ - { - "items": [1, 2, 3] - } - ] - } - } - }, - "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/array": [ - { - "items": [1, 2, 3] - } - ] - } - } - }, - "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/array": [ - { - "items": [1, 2, 3] - } - ] - } - } - }, - "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/array": [ - { - "items": [1, 2, 3] - } - ] - } - } - }, - "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/array": [ - { - "items": [1, 2, 3] - } - ] - } - } - }, - "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/array": [ - { - "items": [1, 2, 3] - } - ] - } - } - } - } + ] }, "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": [ @@ -2494,463 +308,27 @@ ], "CapGrant": [ { - "Dsts": ["100.110.121.96/32", "fd7a:115c:a1e0::1737:7960/128"], + "Dsts": [ + "100.110.121.96/32", + "fd7a:115c:a1e0::1737:7960/128" + ], "CapMap": { "example.com/cap/array": [ { - "items": [1, 2, 3] + "items": [ + 1, + 2, + 3 + ] } ] } } ] } - ], - "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.110.121.96/32", - "Cap": "example.com/cap/array", - "Values": [ - { - "items": [1, 2, 3] - } - ] - }, - { - "Dst": "fd7a:115c:a1e0::1737:7960/128", - "Cap": "example.com/cap/array", - "Values": [ - { - "items": [1, 2, 3] - } - ] - } - ] - } - ], - "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": { - "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/array": [ - { - "items": [1, 2, 3] - } - ] - } - } - }, - "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": { - "example.com/cap/array": [ - { - "items": [1, 2, 3] - } - ] - } - } - }, - "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": { - "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/array": [ - { - "items": [1, 2, 3] - } - ] - } - } - }, - "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": { - "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/array": [ - { - "items": [1, 2, 3] - } - ] - } - } - }, - "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": { - "example.com/cap/array": [ - { - "items": [1, 2, 3] - } - ] - } - } - }, - "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": { - "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/array": [ - { - "items": [1, 2, 3] - } - ] - } - } - }, - "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": { - "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/array": [ - { - "items": [1, 2, 3] - } - ] - } - } - } - } + ] }, "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": [ @@ -2961,463 +339,27 @@ ], "CapGrant": [ { - "Dsts": ["100.103.90.82/32", "fd7a:115c:a1e0::9e37:5a52/128"], + "Dsts": [ + "100.103.90.82/32", + "fd7a:115c:a1e0::9e37:5a52/128" + ], "CapMap": { "example.com/cap/array": [ { - "items": [1, 2, 3] + "items": [ + 1, + 2, + 3 + ] } ] } } ] } - ], - "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.103.90.82/32", - "Cap": "example.com/cap/array", - "Values": [ - { - "items": [1, 2, 3] - } - ] - }, - { - "Dst": "fd7a:115c:a1e0::9e37:5a52/128", - "Cap": "example.com/cap/array", - "Values": [ - { - "items": [1, 2, 3] - } - ] - } - ] - } - ], - "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": { - "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/array": [ - { - "items": [1, 2, 3] - } - ] - } - } - }, - "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": { - "example.com/cap/array": [ - { - "items": [1, 2, 3] - } - ] - } - } - }, - "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": { - "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/array": [ - { - "items": [1, 2, 3] - } - ] - } - } - }, - "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": { - "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/array": [ - { - "items": [1, 2, 3] - } - ] - } - } - }, - "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": { - "example.com/cap/array": [ - { - "items": [1, 2, 3] - } - ] - } - } - }, - "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": { - "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/array": [ - { - "items": [1, 2, 3] - } - ] - } - } - }, - "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": { - "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/array": [ - { - "items": [1, 2, 3] - } - ] - } - } - } - } + ] }, "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": [ @@ -3428,457 +370,25 @@ ], "CapGrant": [ { - "Dsts": ["100.90.199.68/32", "fd7a:115c:a1e0::2d01:c747/128"], + "Dsts": [ + "100.90.199.68/32", + "fd7a:115c:a1e0::2d01:c747/128" + ], "CapMap": { "example.com/cap/array": [ { - "items": [1, 2, 3] + "items": [ + 1, + 2, + 3 + ] } ] } } ] } - ], - "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.90.199.68/32", - "Cap": "example.com/cap/array", - "Values": [ - { - "items": [1, 2, 3] - } - ] - }, - { - "Dst": "fd7a:115c:a1e0::2d01:c747/128", - "Cap": "example.com/cap/array", - "Values": [ - { - "items": [1, 2, 3] - } - ] - } - ] - } - ], - "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": { - "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/array": [ - { - "items": [1, 2, 3] - } - ] - } - } - }, - "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": { - "example.com/cap/array": [ - { - "items": [1, 2, 3] - } - ] - } - } - }, - "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": { - "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/array": [ - { - "items": [1, 2, 3] - } - ] - } - } - }, - "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": { - "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/array": [ - { - "items": [1, 2, 3] - } - ] - } - } - }, - "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": { - "example.com/cap/array": [ - { - "items": [1, 2, 3] - } - ] - } - } - }, - "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": { - "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/array": [ - { - "items": [1, 2, 3] - } - ] - } - } - }, - "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": { - "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/array": [ - { - "items": [1, 2, 3] - } - ] - } - } - } - } + ] } } } diff --git a/hscontrol/policy/v2/testdata/grant_results/GRANT-D1.hujson b/hscontrol/policy/v2/testdata/grant_results/GRANT-D1.hujson index 9a1417e71..79a54857a 100644 --- a/hscontrol/policy/v2/testdata/grant_results/GRANT-D1.hujson +++ b/hscontrol/policy/v2/testdata/grant_results/GRANT-D1.hujson @@ -5,23 +5,37 @@ // Expected: Rules on tagged-server { "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: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"] + "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", @@ -30,106 +44,91 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "grants": [ { - "src": ["autogroup:member"], - "dst": ["tag:server"], + "src": [ + "autogroup:member" + ], + "dst": [ + "tag:server" + ], "app": { - "example.com/cap/test": [{}] + "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"], + "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"], + "tags": [ + "tag:router" + ], "ipv4": "100.92.142.61", - "ipv6": "fd7a:115c:a1e0::3e37:8e3d", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] + "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"], + "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"], + "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"], + "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" @@ -138,190 +137,18 @@ }, "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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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": [ @@ -334,489 +161,28 @@ ], "CapGrant": [ { - "Dsts": ["100.108.74.26/32", "fd7a:115c:a1e0::b901:4a87/128"], + "Dsts": [ + "100.108.74.26/32", + "fd7a:115c:a1e0::b901:4a87/128" + ], "CapMap": { - "example.com/cap/test": [{}] + "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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": null } } } diff --git a/hscontrol/policy/v2/testdata/grant_results/GRANT-D2.hujson b/hscontrol/policy/v2/testdata/grant_results/GRANT-D2.hujson index bf24acc72..761633834 100644 --- a/hscontrol/policy/v2/testdata/grant_results/GRANT-D2.hujson +++ b/hscontrol/policy/v2/testdata/grant_results/GRANT-D2.hujson @@ -5,23 +5,37 @@ // Expected: Rules on tagged-server { "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: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"] + "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", @@ -30,106 +44,91 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "grants": [ { - "src": ["autogroup:tagged"], - "dst": ["tag:server"], + "src": [ + "autogroup:tagged" + ], + "dst": [ + "tag:server" + ], "app": { - "example.com/cap/test": [{}] + "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"], + "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"], + "tags": [ + "tag:router" + ], "ipv4": "100.92.142.61", - "ipv6": "fd7a:115c:a1e0::3e37:8e3d", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] + "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"], + "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"], + "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"], + "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" @@ -138,370 +137,18 @@ }, "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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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": [ @@ -518,405 +165,28 @@ ], "CapGrant": [ { - "Dsts": ["100.108.74.26/32", "fd7a:115c:a1e0::b901:4a87/128"], + "Dsts": [ + "100.108.74.26/32", + "fd7a:115c:a1e0::b901:4a87/128" + ], "CapMap": { - "example.com/cap/test": [{}] + "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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": null } } } diff --git a/hscontrol/policy/v2/testdata/grant_results/GRANT-D3.hujson b/hscontrol/policy/v2/testdata/grant_results/GRANT-D3.hujson index 0ee48dc3a..cdea6a7d2 100644 --- a/hscontrol/policy/v2/testdata/grant_results/GRANT-D3.hujson +++ b/hscontrol/policy/v2/testdata/grant_results/GRANT-D3.hujson @@ -5,23 +5,37 @@ // Expected: Rules on tagged-server { "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: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"] + "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", @@ -30,106 +44,91 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "grants": [ { - "src": ["group:admins"], - "dst": ["tag:server"], + "src": [ + "group:admins" + ], + "dst": [ + "tag:server" + ], "app": { - "example.com/cap/test": [{}] + "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"], + "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"], + "tags": [ + "tag:router" + ], "ipv4": "100.92.142.61", - "ipv6": "fd7a:115c:a1e0::3e37:8e3d", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] + "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"], + "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"], + "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"], + "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" @@ -138,487 +137,48 @@ }, "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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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"], + "SrcIPs": [ + "100.90.199.68", + "fd7a:115c:a1e0::2d01:c747" + ], "CapGrant": [ { - "Dsts": ["100.108.74.26/32", "fd7a:115c:a1e0::b901:4a87/128"], + "Dsts": [ + "100.108.74.26/32", + "fd7a:115c:a1e0::b901:4a87/128" + ], "CapMap": { - "example.com/cap/test": [{}] + "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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": null } } } diff --git a/hscontrol/policy/v2/testdata/grant_results/GRANT-D4.hujson b/hscontrol/policy/v2/testdata/grant_results/GRANT-D4.hujson index a817691f5..444b1b094 100644 --- a/hscontrol/policy/v2/testdata/grant_results/GRANT-D4.hujson +++ b/hscontrol/policy/v2/testdata/grant_results/GRANT-D4.hujson @@ -5,23 +5,37 @@ // Expected: Rules on tagged-server { "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: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"] + "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", @@ -30,106 +44,91 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "grants": [ { - "src": ["kratail2tid@passkey"], - "dst": ["tag:server"], + "src": [ + "kratail2tid@passkey" + ], + "dst": [ + "tag:server" + ], "app": { - "example.com/cap/test": [{}] + "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"], + "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"], + "tags": [ + "tag:router" + ], "ipv4": "100.92.142.61", - "ipv6": "fd7a:115c:a1e0::3e37:8e3d", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] + "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"], + "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"], + "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"], + "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" @@ -138,487 +137,48 @@ }, "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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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"], + "SrcIPs": [ + "100.90.199.68", + "fd7a:115c:a1e0::2d01:c747" + ], "CapGrant": [ { - "Dsts": ["100.108.74.26/32", "fd7a:115c:a1e0::b901:4a87/128"], + "Dsts": [ + "100.108.74.26/32", + "fd7a:115c:a1e0::b901:4a87/128" + ], "CapMap": { - "example.com/cap/test": [{}] + "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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": null } } } diff --git a/hscontrol/policy/v2/testdata/grant_results/GRANT-D5.hujson b/hscontrol/policy/v2/testdata/grant_results/GRANT-D5.hujson index 22cddc51f..e4f07bbcc 100644 --- a/hscontrol/policy/v2/testdata/grant_results/GRANT-D5.hujson +++ b/hscontrol/policy/v2/testdata/grant_results/GRANT-D5.hujson @@ -5,23 +5,37 @@ // Expected: Rules on tagged-server { "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: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"] + "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", @@ -30,106 +44,91 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "grants": [ { - "src": ["tag:prod"], - "dst": ["tag:server"], + "src": [ + "tag:prod" + ], + "dst": [ + "tag:server" + ], "app": { - "example.com/cap/test": [{}] + "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"], + "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"], + "tags": [ + "tag:router" + ], "ipv4": "100.92.142.61", - "ipv6": "fd7a:115c:a1e0::3e37:8e3d", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] + "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"], + "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"], + "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"], + "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" @@ -138,487 +137,48 @@ }, "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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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"], + "SrcIPs": [ + "100.103.8.15", + "fd7a:115c:a1e0::5b37:80f" + ], "CapGrant": [ { - "Dsts": ["100.108.74.26/32", "fd7a:115c:a1e0::b901:4a87/128"], + "Dsts": [ + "100.108.74.26/32", + "fd7a:115c:a1e0::b901:4a87/128" + ], "CapMap": { - "example.com/cap/test": [{}] + "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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": null } } } diff --git a/hscontrol/policy/v2/testdata/grant_results/GRANT-D6.hujson b/hscontrol/policy/v2/testdata/grant_results/GRANT-D6.hujson index 9a0123470..b2917cac7 100644 --- a/hscontrol/policy/v2/testdata/grant_results/GRANT-D6.hujson +++ b/hscontrol/policy/v2/testdata/grant_results/GRANT-D6.hujson @@ -5,23 +5,37 @@ // Expected: Rules on tagged-server { "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: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"] + "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", @@ -30,106 +44,91 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "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"], + "src": [ + "100.90.199.68" + ], + "dst": [ + "tag:server" + ], "app": { - "example.com/cap/test": [{}] + "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"], + "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"], + "tags": [ + "tag:router" + ], "ipv4": "100.92.142.61", - "ipv6": "fd7a:115c:a1e0::3e37:8e3d", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] + "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"], + "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"], + "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"], + "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" @@ -138,487 +137,47 @@ }, "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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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"], + "SrcIPs": [ + "100.90.199.68" + ], "CapGrant": [ { - "Dsts": ["100.108.74.26/32", "fd7a:115c:a1e0::b901:4a87/128"], + "Dsts": [ + "100.108.74.26/32", + "fd7a:115c:a1e0::b901:4a87/128" + ], "CapMap": { - "example.com/cap/test": [{}] + "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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": null } } } diff --git a/hscontrol/policy/v2/testdata/grant_results/GRANT-D7.hujson b/hscontrol/policy/v2/testdata/grant_results/GRANT-D7.hujson index 45eff2deb..95d817c50 100644 --- a/hscontrol/policy/v2/testdata/grant_results/GRANT-D7.hujson +++ b/hscontrol/policy/v2/testdata/grant_results/GRANT-D7.hujson @@ -5,23 +5,37 @@ // Expected: Rules on tagged-server { "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: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"] + "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", @@ -30,106 +44,92 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "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"], + "src": [ + "autogroup:member", + "tag:prod" + ], + "dst": [ + "tag:server" + ], "app": { - "example.com/cap/test": [{}] + "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"], + "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"], + "tags": [ + "tag:router" + ], "ipv4": "100.92.142.61", - "ipv6": "fd7a:115c:a1e0::3e37:8e3d", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] + "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"], + "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"], + "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"], + "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" @@ -138,235 +138,18 @@ }, "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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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": [ @@ -381,538 +164,28 @@ ], "CapGrant": [ { - "Dsts": ["100.108.74.26/32", "fd7a:115c:a1e0::b901:4a87/128"], + "Dsts": [ + "100.108.74.26/32", + "fd7a:115c:a1e0::b901:4a87/128" + ], "CapMap": { - "example.com/cap/test": [{}] + "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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": null } } } diff --git a/hscontrol/policy/v2/testdata/grant_results/GRANT-E1.hujson b/hscontrol/policy/v2/testdata/grant_results/GRANT-E1.hujson index a5ee337e1..f10eae2c4 100644 --- a/hscontrol/policy/v2/testdata/grant_results/GRANT-E1.hujson +++ b/hscontrol/policy/v2/testdata/grant_results/GRANT-E1.hujson @@ -5,23 +5,37 @@ // Expected: Rules on tagged-server { "test_id": "GRANT-E1", - "timestamp": "2026-02-23T00:31:50Z", - "propagation_wait_seconds": 15, "input": { - "policy_file": "/home/kradalby/acl-explore/grant_policies/grant_e1.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -30,106 +44,91 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "grants": [ { - "src": ["*"], - "dst": ["tag:server"], + "src": [ + "*" + ], + "dst": [ + "tag:server" + ], "app": { - "example.com/cap/test": [{}] + "example.com/cap/test": [ + {} + ] } } ] }, - "grants_section": [ - { - "src": ["*"], - "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"], + "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"], + "tags": [ + "tag:router" + ], "ipv4": "100.92.142.61", - "ipv6": "fd7a:115c:a1e0::3e37:8e3d", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] + "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"], + "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"], + "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"], + "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" @@ -138,370 +137,18 @@ }, "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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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": [ @@ -512,687 +159,28 @@ ], "CapGrant": [ { - "Dsts": ["100.108.74.26/32", "fd7a:115c:a1e0::b901:4a87/128"], + "Dsts": [ + "100.108.74.26/32", + "fd7a:115c:a1e0::b901:4a87/128" + ], "CapMap": { - "example.com/cap/test": [{}] + "example.com/cap/test": [ + {} + ] } } ] } - ], - "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": "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", "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": { - "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": { - "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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": null } } } diff --git a/hscontrol/policy/v2/testdata/grant_results/GRANT-E2.hujson b/hscontrol/policy/v2/testdata/grant_results/GRANT-E2.hujson index 7a1f5bb9d..3b8e5d691 100644 --- a/hscontrol/policy/v2/testdata/grant_results/GRANT-E2.hujson +++ b/hscontrol/policy/v2/testdata/grant_results/GRANT-E2.hujson @@ -5,23 +5,37 @@ // Expected: Rules on tagged-prod, tagged-server { "test_id": "GRANT-E2", - "timestamp": "2026-02-23T00:32:07Z", - "propagation_wait_seconds": 15, "input": { - "policy_file": "/home/kradalby/acl-explore/grant_policies/grant_e2.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -30,106 +44,92 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "grants": [ { - "src": ["*"], - "dst": ["tag:server", "tag:prod"], + "src": [ + "*" + ], + "dst": [ + "tag:server", + "tag:prod" + ], "app": { - "example.com/cap/test": [{}] + "example.com/cap/test": [ + {} + ] } } ] }, - "grants_section": [ - { - "src": ["*"], - "dst": ["tag:server", "tag:prod"], - "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"], + "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"], + "tags": [ + "tag:router" + ], "ipv4": "100.92.142.61", - "ipv6": "fd7a:115c:a1e0::3e37:8e3d", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] + "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"], + "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"], + "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"], + "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" @@ -138,415 +138,15 @@ }, "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": { - "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/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 - } - } + "packet_filter_rules": 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": { - "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": 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 - } - } + "packet_filter_rules": 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": { - "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/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 - } - } + "packet_filter_rules": 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": [ @@ -557,423 +157,21 @@ ], "CapGrant": [ { - "Dsts": ["100.103.8.15/32", "fd7a:115c:a1e0::5b37:80f/128"], + "Dsts": [ + "100.103.8.15/32", + "fd7a:115c:a1e0::5b37:80f/128" + ], "CapMap": { - "example.com/cap/test": [{}] + "example.com/cap/test": [ + {} + ] } } ] } - ], - "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.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": { - "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-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": { - "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-prod/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.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": { - "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-prod/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-prod/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-prod/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": [{}] - } - } - } - } + ] }, "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": [ @@ -984,822 +182,28 @@ ], "CapGrant": [ { - "Dsts": ["100.108.74.26/32", "fd7a:115c:a1e0::b901:4a87/128"], + "Dsts": [ + "100.108.74.26/32", + "fd7a:115c:a1e0::b901:4a87/128" + ], "CapMap": { - "example.com/cap/test": [{}] + "example.com/cap/test": [ + {} + ] } } ] } - ], - "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": "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", "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": { - "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": { - "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": { - "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/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 - } - } + "packet_filter_rules": 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": { - "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/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 - } - } + "packet_filter_rules": 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": { - "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/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 - } - } + "packet_filter_rules": null } } } diff --git a/hscontrol/policy/v2/testdata/grant_results/GRANT-E3.hujson b/hscontrol/policy/v2/testdata/grant_results/GRANT-E3.hujson index b7afd28d2..5c2ec3cd2 100644 --- a/hscontrol/policy/v2/testdata/grant_results/GRANT-E3.hujson +++ b/hscontrol/policy/v2/testdata/grant_results/GRANT-E3.hujson @@ -5,24 +5,38 @@ // Expected: Error (HTTP 400) — autogroup:self can only be used with users, groups, or supported autogroups { "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: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"] + "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", @@ -31,19 +45,31 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "grants": [ { - "src": ["*"], - "dst": ["autogroup:self"], + "src": [ + "*" + ], + "dst": [ + "autogroup:self" + ], "app": { "tailscale.com/cap/drive": [ { - "shares": ["*"], + "shares": [ + "*" + ], "access": "rw" } ] @@ -51,16 +77,9 @@ } ] }, - "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" } + "api_response_body": { + "message": "autogroup:self can only be used with users, groups, or supported autogroups" + } } } diff --git a/hscontrol/policy/v2/testdata/grant_results/GRANT-E4.hujson b/hscontrol/policy/v2/testdata/grant_results/GRANT-E4.hujson index df5ef74fe..e17ad9b98 100644 --- a/hscontrol/policy/v2/testdata/grant_results/GRANT-E4.hujson +++ b/hscontrol/policy/v2/testdata/grant_results/GRANT-E4.hujson @@ -5,23 +5,37 @@ // Expected: Rules on user-kris, user-mon, user1 { "test_id": "GRANT-E4", - "timestamp": "2026-02-23T00:32:23Z", - "propagation_wait_seconds": 15, "input": { - "policy_file": "/home/kradalby/acl-explore/grant_policies/grant_e4.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -30,106 +44,91 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "grants": [ { - "src": ["*"], - "dst": ["autogroup:member"], + "src": [ + "*" + ], + "dst": [ + "autogroup:member" + ], "app": { - "example.com/cap/test": [{}] + "example.com/cap/test": [ + {} + ] } } ] }, - "grants_section": [ - { - "src": ["*"], - "dst": ["autogroup:member"], - "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"], + "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"], + "tags": [ + "tag:router" + ], "ipv4": "100.92.142.61", - "ipv6": "fd7a:115c:a1e0::3e37:8e3d", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] + "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"], + "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"], + "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"], + "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" @@ -138,910 +137,21 @@ }, "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": { - "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/exit-node/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/exit-node/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 - } - } - } + "packet_filter_rules": 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": { - "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 - } - } - } + "packet_filter_rules": 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": { - "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-client/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-client/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 - } - } - } + "packet_filter_rules": 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": { - "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-prod/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-prod/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 - } - } - } + "packet_filter_rules": 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": { - "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 - } - } - } + "packet_filter_rules": 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": [ @@ -1052,423 +162,21 @@ ], "CapGrant": [ { - "Dsts": ["100.110.121.96/32", "fd7a:115c:a1e0::1737:7960/128"], + "Dsts": [ + "100.110.121.96/32", + "fd7a:115c:a1e0::1737:7960/128" + ], "CapMap": { - "example.com/cap/test": [{}] + "example.com/cap/test": [ + {} + ] } } ] } - ], - "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.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": { - "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/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": { - "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/user-kris/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/user-kris/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.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": { - "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/user-kris/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/user-kris/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-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": [ @@ -1479,423 +187,21 @@ ], "CapGrant": [ { - "Dsts": ["100.103.90.82/32", "fd7a:115c:a1e0::9e37:5a52/128"], + "Dsts": [ + "100.103.90.82/32", + "fd7a:115c:a1e0::9e37:5a52/128" + ], "CapMap": { - "example.com/cap/test": [{}] + "example.com/cap/test": [ + {} + ] } } ] } - ], - "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.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": { - "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/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": { - "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/user-mon/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/user-mon/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.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": { - "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/user-mon/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.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": { - "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": [{}] - } - } - } - } + ] }, "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": [ @@ -1906,417 +212,19 @@ ], "CapGrant": [ { - "Dsts": ["100.90.199.68/32", "fd7a:115c:a1e0::2d01:c747/128"], + "Dsts": [ + "100.90.199.68/32", + "fd7a:115c:a1e0::2d01:c747/128" + ], "CapMap": { - "example.com/cap/test": [{}] + "example.com/cap/test": [ + {} + ] } } ] } - ], - "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.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": { - "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/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": { - "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/user1/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/user1/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.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": { - "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/user1/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/user1/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": [{}] - } - } - } - } + ] } } } diff --git a/hscontrol/policy/v2/testdata/grant_results/GRANT-E5.hujson b/hscontrol/policy/v2/testdata/grant_results/GRANT-E5.hujson index f3be1fbc4..66a47c6fd 100644 --- a/hscontrol/policy/v2/testdata/grant_results/GRANT-E5.hujson +++ b/hscontrol/policy/v2/testdata/grant_results/GRANT-E5.hujson @@ -5,23 +5,37 @@ // Expected: Rules on exit-node, subnet-router, tagged-client, tagged-prod, tagged-server { "test_id": "GRANT-E5", - "timestamp": "2026-02-23T00:32:40Z", - "propagation_wait_seconds": 15, "input": { - "policy_file": "/home/kradalby/acl-explore/grant_policies/grant_e5.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -30,106 +44,91 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "grants": [ { - "src": ["*"], - "dst": ["autogroup:tagged"], + "src": [ + "*" + ], + "dst": [ + "autogroup:tagged" + ], "app": { - "example.com/cap/test": [{}] + "example.com/cap/test": [ + {} + ] } } ] }, - "grants_section": [ - { - "src": ["*"], - "dst": ["autogroup:tagged"], - "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"], + "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"], + "tags": [ + "tag:router" + ], "ipv4": "100.92.142.61", - "ipv6": "fd7a:115c:a1e0::3e37:8e3d", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] + "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"], + "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"], + "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"], + "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" @@ -138,10 +137,6 @@ }, "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": [ @@ -152,423 +147,21 @@ ], "CapGrant": [ { - "Dsts": ["100.85.66.106/32", "fd7a:115c:a1e0::7c37:426a/128"], + "Dsts": [ + "100.85.66.106/32", + "fd7a:115c:a1e0::7c37:426a/128" + ], "CapMap": { - "example.com/cap/test": [{}] + "example.com/cap/test": [ + {} + ] } } ] } - ], - "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.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": { - "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": { - "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/exit-node/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/exit-node/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.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": { - "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/exit-node/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/exit-node/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/exit-node/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": [{}] - } - } - } - } + ] }, "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": [ @@ -579,422 +172,21 @@ ], "CapGrant": [ { - "Dsts": ["100.92.142.61/32", "fd7a:115c:a1e0::3e37:8e3d/128"], + "Dsts": [ + "100.92.142.61/32", + "fd7a:115c:a1e0::3e37:8e3d/128" + ], "CapMap": { - "example.com/cap/test": [{}] + "example.com/cap/test": [ + {} + ] } } ] } - ], - "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.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": { - "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.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": { - "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/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": { - "example.com/cap/test": [{}] - } - } - }, - "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": { - "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/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": { - "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/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": { - "example.com/cap/test": [{}] - } - } - }, - "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": { - "example.com/cap/test": [{}] - } - } - } - } + ] }, "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": [ @@ -1005,423 +197,21 @@ ], "CapGrant": [ { - "Dsts": ["100.83.200.69/32", "fd7a:115c:a1e0::c537:c845/128"], + "Dsts": [ + "100.83.200.69/32", + "fd7a:115c:a1e0::c537:c845/128" + ], "CapMap": { - "example.com/cap/test": [{}] + "example.com/cap/test": [ + {} + ] } } ] } - ], - "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.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": { - "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-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": { - "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-client/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.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": { - "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-client/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-client/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-client/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": [{}] - } - } - } - } + ] }, "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": [ @@ -1432,423 +222,21 @@ ], "CapGrant": [ { - "Dsts": ["100.103.8.15/32", "fd7a:115c:a1e0::5b37:80f/128"], + "Dsts": [ + "100.103.8.15/32", + "fd7a:115c:a1e0::5b37:80f/128" + ], "CapMap": { - "example.com/cap/test": [{}] + "example.com/cap/test": [ + {} + ] } } ] } - ], - "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.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": { - "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-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": { - "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-prod/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.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": { - "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-prod/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-prod/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-prod/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": [{}] - } - } - } - } + ] }, "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": [ @@ -1859,1227 +247,28 @@ ], "CapGrant": [ { - "Dsts": ["100.108.74.26/32", "fd7a:115c:a1e0::b901:4a87/128"], + "Dsts": [ + "100.108.74.26/32", + "fd7a:115c:a1e0::b901:4a87/128" + ], "CapMap": { - "example.com/cap/test": [{}] + "example.com/cap/test": [ + {} + ] } } ] } - ], - "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": "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", "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": { - "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": { - "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": { - "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/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"], - "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": 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": { - "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/user-kris/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/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 - } - } + "packet_filter_rules": 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": { - "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/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"], - "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": 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": { - "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/user-mon/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/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 - } - } + "packet_filter_rules": 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": { - "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/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"], - "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": 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": { - "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/user1/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/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 - } - } + "packet_filter_rules": null } } } diff --git a/hscontrol/policy/v2/testdata/grant_results/GRANT-E6.hujson b/hscontrol/policy/v2/testdata/grant_results/GRANT-E6.hujson index 4aafe410c..df9d2e2d0 100644 --- a/hscontrol/policy/v2/testdata/grant_results/GRANT-E6.hujson +++ b/hscontrol/policy/v2/testdata/grant_results/GRANT-E6.hujson @@ -5,23 +5,37 @@ // Expected: Rules on user1 { "test_id": "GRANT-E6", - "timestamp": "2026-02-23T00:32:57Z", - "propagation_wait_seconds": 15, "input": { - "policy_file": "/home/kradalby/acl-explore/grant_policies/grant_e6.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -30,106 +44,91 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "grants": [ { - "src": ["*"], - "dst": ["group:admins"], + "src": [ + "*" + ], + "dst": [ + "group:admins" + ], "app": { - "example.com/cap/test": [{}] + "example.com/cap/test": [ + {} + ] } } ] }, - "grants_section": [ - { - "src": ["*"], - "dst": ["group:admins"], - "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"], + "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"], + "tags": [ + "tag:router" + ], "ipv4": "100.92.142.61", - "ipv6": "fd7a:115c:a1e0::3e37:8e3d", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] + "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"], + "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"], + "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"], + "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" @@ -138,640 +137,27 @@ }, "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": { - "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 - } - } - } + "packet_filter_rules": 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": { - "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 - } - } - } + "packet_filter_rules": 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": { - "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 - } - } - } + "packet_filter_rules": 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": { - "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 - } - } - } + "packet_filter_rules": 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": { - "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 - } - } - } + "packet_filter_rules": 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": { - "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 - } - } - } + "packet_filter_rules": 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": { - "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 - } - } - } + "packet_filter_rules": 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": [ @@ -782,417 +168,19 @@ ], "CapGrant": [ { - "Dsts": ["100.90.199.68/32", "fd7a:115c:a1e0::2d01:c747/128"], + "Dsts": [ + "100.90.199.68/32", + "fd7a:115c:a1e0::2d01:c747/128" + ], "CapMap": { - "example.com/cap/test": [{}] + "example.com/cap/test": [ + {} + ] } } ] } - ], - "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.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": { - "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/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": { - "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/user1/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/user1/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.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": { - "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/user1/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/user1/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": [{}] - } - } - } - } + ] } } } diff --git a/hscontrol/policy/v2/testdata/grant_results/GRANT-E7.hujson b/hscontrol/policy/v2/testdata/grant_results/GRANT-E7.hujson index 371ad5989..8df0e6897 100644 --- a/hscontrol/policy/v2/testdata/grant_results/GRANT-E7.hujson +++ b/hscontrol/policy/v2/testdata/grant_results/GRANT-E7.hujson @@ -5,23 +5,37 @@ // Expected: Rules on user1 { "test_id": "GRANT-E7", - "timestamp": "2026-02-23T00:33:14Z", - "propagation_wait_seconds": 15, "input": { - "policy_file": "/home/kradalby/acl-explore/grant_policies/grant_e7.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -30,106 +44,91 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "grants": [ { - "src": ["*"], - "dst": ["kratail2tid@passkey"], + "src": [ + "*" + ], + "dst": [ + "kratail2tid@passkey" + ], "app": { - "example.com/cap/test": [{}] + "example.com/cap/test": [ + {} + ] } } ] }, - "grants_section": [ - { - "src": ["*"], - "dst": ["kratail2tid@passkey"], - "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"], + "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"], + "tags": [ + "tag:router" + ], "ipv4": "100.92.142.61", - "ipv6": "fd7a:115c:a1e0::3e37:8e3d", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] + "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"], + "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"], + "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"], + "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" @@ -138,640 +137,27 @@ }, "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": { - "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 - } - } - } + "packet_filter_rules": 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": { - "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 - } - } - } + "packet_filter_rules": 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": { - "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 - } - } - } + "packet_filter_rules": 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": { - "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 - } - } - } + "packet_filter_rules": 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": { - "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 - } - } - } + "packet_filter_rules": 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": { - "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 - } - } - } + "packet_filter_rules": 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": { - "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 - } - } - } + "packet_filter_rules": 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": [ @@ -782,417 +168,19 @@ ], "CapGrant": [ { - "Dsts": ["100.90.199.68/32", "fd7a:115c:a1e0::2d01:c747/128"], + "Dsts": [ + "100.90.199.68/32", + "fd7a:115c:a1e0::2d01:c747/128" + ], "CapMap": { - "example.com/cap/test": [{}] + "example.com/cap/test": [ + {} + ] } } ] } - ], - "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.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": { - "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/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": { - "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/user1/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/user1/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.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": { - "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/user1/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/user1/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": [{}] - } - } - } - } + ] } } } diff --git a/hscontrol/policy/v2/testdata/grant_results/GRANT-E8.hujson b/hscontrol/policy/v2/testdata/grant_results/GRANT-E8.hujson index 55661838f..a09a75238 100644 --- a/hscontrol/policy/v2/testdata/grant_results/GRANT-E8.hujson +++ b/hscontrol/policy/v2/testdata/grant_results/GRANT-E8.hujson @@ -5,23 +5,37 @@ // Expected: Rules on tagged-server { "test_id": "GRANT-E8", - "timestamp": "2026-02-23T00:33:31Z", - "propagation_wait_seconds": 15, "input": { - "policy_file": "/home/kradalby/acl-explore/grant_policies/grant_e8.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -30,106 +44,91 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "grants": [ { - "src": ["*"], - "dst": ["100.108.74.26"], + "src": [ + "*" + ], + "dst": [ + "100.108.74.26" + ], "app": { - "example.com/cap/test": [{}] + "example.com/cap/test": [ + {} + ] } } ] }, - "grants_section": [ - { - "src": ["*"], - "dst": ["100.108.74.26"], - "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"], + "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"], + "tags": [ + "tag:router" + ], "ipv4": "100.92.142.61", - "ipv6": "fd7a:115c:a1e0::3e37:8e3d", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] + "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"], + "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"], + "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"], + "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" @@ -138,370 +137,18 @@ }, "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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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": [ @@ -512,682 +159,27 @@ ], "CapGrant": [ { - "Dsts": ["100.108.74.26/32"], + "Dsts": [ + "100.108.74.26/32" + ], "CapMap": { - "example.com/cap/test": [{}] + "example.com/cap/test": [ + {} + ] } } ] } - ], - "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": "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", "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": { - "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": { - "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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": null } } } diff --git a/hscontrol/policy/v2/testdata/grant_results/GRANT-F1.hujson b/hscontrol/policy/v2/testdata/grant_results/GRANT-F1.hujson index b1ae7d00e..d44a2ba3a 100644 --- a/hscontrol/policy/v2/testdata/grant_results/GRANT-F1.hujson +++ b/hscontrol/policy/v2/testdata/grant_results/GRANT-F1.hujson @@ -5,23 +5,37 @@ // Expected: Rules on tagged-server { "test_id": "GRANT-F1", - "timestamp": "2026-02-23T00:33:47Z", - "propagation_wait_seconds": 15, "input": { - "policy_file": "/home/kradalby/acl-explore/grant_policies/grant_f1.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -30,21 +44,36 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "grants": [ { - "src": ["*"], - "dst": ["tag:server"], - "ip": ["tcp:80", "tcp:443"], + "src": [ + "*" + ], + "dst": [ + "tag:server" + ], + "ip": [ + "tcp:80", + "tcp:443" + ], "app": { "tailscale.com/cap/kubernetes": [ { "impersonate": { - "groups": ["system:masters"] + "groups": [ + "system:masters" + ] } } ] @@ -52,98 +81,64 @@ } ] }, - "grants_section": [ - { - "src": ["*"], - "dst": ["tag:server"], - "ip": ["tcp:80", "tcp:443"], - "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"], + "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"], + "tags": [ + "tag:router" + ], "ipv4": "100.92.142.61", - "ipv6": "fd7a:115c:a1e0::3e37:8e3d", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] + "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"], + "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"], + "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"], + "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" @@ -152,370 +147,18 @@ }, "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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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": [ @@ -554,7 +197,9 @@ } } ], - "IPProto": [6] + "IPProto": [ + 6 + ] }, { "SrcIPs": [ @@ -565,12 +210,17 @@ ], "CapGrant": [ { - "Dsts": ["100.108.74.26/32", "fd7a:115c:a1e0::b901:4a87/128"], + "Dsts": [ + "100.108.74.26/32", + "fd7a:115c:a1e0::b901:4a87/128" + ], "CapMap": { "tailscale.com/cap/kubernetes": [ { "impersonate": { - "groups": ["system:masters"] + "groups": [ + "system:masters" + ] } } ] @@ -578,786 +228,16 @@ } ] } - ], - "packet_filter_matches": [ - { - "IPProto": [6], - "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": [ - { - "Net": "100.108.74.26/32", - "Ports": { - "First": 80, - "Last": 80 - } - }, - { - "Net": "100.108.74.26/32", - "Ports": { - "First": 443, - "Last": 443 - } - }, - { - "Net": "fd7a:115c:a1e0::b901:4a87/128", - "Ports": { - "First": 80, - "Last": 80 - } - }, - { - "Net": "fd7a:115c:a1e0::b901:4a87/128", - "Ports": { - "First": 443, - "Last": 443 - } - } - ], - "Caps": [] - }, - { - "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"] - } - } - ] - } - } - }, - "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": { - "tailscale.com/cap/kubernetes": [ - { - "impersonate": { - "groups": ["system:masters"] - } - } - ] - } - } - }, - "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 - }, - "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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": null } } } diff --git a/hscontrol/policy/v2/testdata/grant_results/GRANT-F2.hujson b/hscontrol/policy/v2/testdata/grant_results/GRANT-F2.hujson index 1f87438b4..30d45af27 100644 --- a/hscontrol/policy/v2/testdata/grant_results/GRANT-F2.hujson +++ b/hscontrol/policy/v2/testdata/grant_results/GRANT-F2.hujson @@ -5,23 +5,37 @@ // Expected: Rules on tagged-server { "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: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"] + "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", @@ -30,16 +44,28 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "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": ["*"], + "src": [ + "autogroup:member" + ], + "dst": [ + "tag:server" + ], + "ip": [ + "*" + ], "app": { "example.com/cap/test": [ { @@ -50,96 +76,64 @@ } ] }, - "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"], + "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"], + "tags": [ + "tag:router" + ], "ipv4": "100.92.142.61", - "ipv6": "fd7a:115c:a1e0::3e37:8e3d", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] + "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"], + "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"], + "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"], + "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" @@ -148,190 +142,18 @@ }, "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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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": [ @@ -370,7 +192,10 @@ ], "CapGrant": [ { - "Dsts": ["100.108.74.26/32", "fd7a:115c:a1e0::b901:4a87/128"], + "Dsts": [ + "100.108.74.26/32", + "fd7a:115c:a1e0::b901:4a87/128" + ], "CapMap": { "example.com/cap/test": [ { @@ -381,531 +206,16 @@ } ] } - ], - "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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": null } } } diff --git a/hscontrol/policy/v2/testdata/grant_results/GRANT-F3.hujson b/hscontrol/policy/v2/testdata/grant_results/GRANT-F3.hujson index 94e1f81d1..a52ac522e 100644 --- a/hscontrol/policy/v2/testdata/grant_results/GRANT-F3.hujson +++ b/hscontrol/policy/v2/testdata/grant_results/GRANT-F3.hujson @@ -7,23 +7,37 @@ // Expected: Rules on tagged-server { "test_id": "GRANT-F3", - "timestamp": "2026-02-23T00:34:21Z", - "propagation_wait_seconds": 15, "input": { - "policy_file": "/home/kradalby/acl-explore/grant_policies/grant_f3.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -32,25 +46,44 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "grants": [ { - "src": ["*"], - "dst": ["tag:server"], - "ip": ["tcp:80", "tcp:443"] + "src": [ + "*" + ], + "dst": [ + "tag:server" + ], + "ip": [ + "tcp:80", + "tcp:443" + ] }, { - "src": ["*"], - "dst": ["tag:server"], + "src": [ + "*" + ], + "dst": [ + "tag:server" + ], "app": { "tailscale.com/cap/kubernetes": [ { "impersonate": { - "groups": ["system:masters"] + "groups": [ + "system:masters" + ] } } ] @@ -58,102 +91,64 @@ } ] }, - "grants_section": [ - { - "src": ["*"], - "dst": ["tag:server"], - "ip": ["tcp:80", "tcp:443"] - }, - { - "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"], + "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"], + "tags": [ + "tag:router" + ], "ipv4": "100.92.142.61", - "ipv6": "fd7a:115c:a1e0::3e37:8e3d", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] + "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"], + "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"], + "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"], + "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" @@ -162,370 +157,18 @@ }, "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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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": [ @@ -564,7 +207,9 @@ } } ], - "IPProto": [6] + "IPProto": [ + 6 + ] }, { "SrcIPs": [ @@ -575,12 +220,17 @@ ], "CapGrant": [ { - "Dsts": ["100.108.74.26/32", "fd7a:115c:a1e0::b901:4a87/128"], + "Dsts": [ + "100.108.74.26/32", + "fd7a:115c:a1e0::b901:4a87/128" + ], "CapMap": { "tailscale.com/cap/kubernetes": [ { "impersonate": { - "groups": ["system:masters"] + "groups": [ + "system:masters" + ] } } ] @@ -588,786 +238,16 @@ } ] } - ], - "packet_filter_matches": [ - { - "IPProto": [6], - "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": [ - { - "Net": "100.108.74.26/32", - "Ports": { - "First": 80, - "Last": 80 - } - }, - { - "Net": "100.108.74.26/32", - "Ports": { - "First": 443, - "Last": 443 - } - }, - { - "Net": "fd7a:115c:a1e0::b901:4a87/128", - "Ports": { - "First": 80, - "Last": 80 - } - }, - { - "Net": "fd7a:115c:a1e0::b901:4a87/128", - "Ports": { - "First": 443, - "Last": 443 - } - } - ], - "Caps": [] - }, - { - "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"] - } - } - ] - } - } - }, - "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": { - "tailscale.com/cap/kubernetes": [ - { - "impersonate": { - "groups": ["system:masters"] - } - } - ] - } - } - }, - "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 - }, - "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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": null } } } diff --git a/hscontrol/policy/v2/testdata/grant_results/GRANT-F4.hujson b/hscontrol/policy/v2/testdata/grant_results/GRANT-F4.hujson index 7067e68b8..e598deafa 100644 --- a/hscontrol/policy/v2/testdata/grant_results/GRANT-F4.hujson +++ b/hscontrol/policy/v2/testdata/grant_results/GRANT-F4.hujson @@ -5,23 +5,37 @@ // Expected: Rules on 8 nodes { "test_id": "GRANT-F4", - "timestamp": "2026-02-23T00:34:38Z", - "propagation_wait_seconds": 15, "input": { - "policy_file": "/home/kradalby/acl-explore/grant_policies/grant_f4.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -30,20 +44,34 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "grants": [ { - "src": ["*"], - "dst": ["*"], - "ip": ["tcp:443"], + "src": [ + "*" + ], + "dst": [ + "*" + ], + "ip": [ + "tcp:443" + ], "app": { "tailscale.com/cap/drive": [ { - "shares": ["*"], + "shares": [ + "*" + ], "access": "rw" } ], @@ -56,102 +84,64 @@ } ] }, - "grants_section": [ - { - "src": ["*"], - "dst": ["*"], - "ip": ["tcp:443"], - "app": { - "tailscale.com/cap/drive": [ - { - "shares": ["*"], - "access": "rw" - } - ], - "example.com/cap/extra": [ - { - "mode": "full" - } - ] - } - } - ], - "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"], + "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"], + "tags": [ + "tag:router" + ], "ipv4": "100.92.142.61", - "ipv6": "fd7a:115c:a1e0::3e37:8e3d", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] + "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"], + "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"], + "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"], + "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" @@ -160,10 +150,6 @@ }, "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": [ @@ -181,7 +167,9 @@ } } ], - "IPProto": [6] + "IPProto": [ + 6 + ] }, { "SrcIPs": [ @@ -192,7 +180,10 @@ ], "CapGrant": [ { - "Dsts": ["100.85.66.106/32", "fd7a:115c:a1e0::7c37:426a/128"], + "Dsts": [ + "100.85.66.106/32", + "fd7a:115c:a1e0::7c37:426a/128" + ], "CapMap": { "example.com/cap/extra": [ { @@ -201,7 +192,9 @@ ], "tailscale.com/cap/drive": [ { - "shares": ["*"], + "shares": [ + "*" + ], "access": "rw" } ] @@ -218,600 +211,19 @@ ], "CapGrant": [ { - "Dsts": ["100.85.66.106/32", "fd7a:115c:a1e0::7c37:426a/128"], + "Dsts": [ + "100.85.66.106/32", + "fd7a:115c:a1e0::7c37:426a/128" + ], "CapMap": { "tailscale.com/cap/drive-sharer": null } } ] } - ], - "packet_filter_matches": [ - { - "IPProto": [6], - "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": [ - { - "Net": "0.0.0.0/0", - "Ports": { - "First": 443, - "Last": 443 - } - }, - { - "Net": "::/0", - "Ports": { - "First": 443, - "Last": 443 - } - } - ], - "Caps": [] - }, - { - "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.85.66.106/32", - "Cap": "example.com/cap/extra", - "Values": [ - { - "mode": "full" - } - ] - }, - { - "Dst": "100.85.66.106/32", - "Cap": "tailscale.com/cap/drive", - "Values": [ - { - "shares": ["*"], - "access": "rw" - } - ] - }, - { - "Dst": "fd7a:115c:a1e0::7c37:426a/128", - "Cap": "example.com/cap/extra", - "Values": [ - { - "mode": "full" - } - ] - }, - { - "Dst": "fd7a:115c:a1e0::7c37:426a/128", - "Cap": "tailscale.com/cap/drive", - "Values": [ - { - "shares": ["*"], - "access": "rw" - } - ] - } - ] - }, - { - "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.85.66.106/32", - "Cap": "tailscale.com/cap/drive-sharer", - "Values": null - }, - { - "Dst": "fd7a:115c:a1e0::7c37:426a/128", - "Cap": "tailscale.com/cap/drive-sharer", - "Values": null - } - ] - } - ], - "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": { - "example.com/cap/extra": [ - { - "mode": "full" - } - ], - "tailscale.com/cap/drive": [ - { - "shares": ["*"], - "access": "rw" - } - ], - "tailscale.com/cap/drive-sharer": 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": { - "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/extra": [ - { - "mode": "full" - } - ], - "tailscale.com/cap/drive": [ - { - "shares": ["*"], - "access": "rw" - } - ], - "tailscale.com/cap/drive-sharer": 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": { - "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/extra": [ - { - "mode": "full" - } - ], - "tailscale.com/cap/drive": [ - { - "shares": ["*"], - "access": "rw" - } - ], - "tailscale.com/cap/drive-sharer": 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": { - "example.com/cap/extra": [ - { - "mode": "full" - } - ], - "tailscale.com/cap/drive": [ - { - "shares": ["*"], - "access": "rw" - } - ], - "tailscale.com/cap/drive-sharer": 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": { - "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/extra": [ - { - "mode": "full" - } - ], - "tailscale.com/cap/drive": [ - { - "shares": ["*"], - "access": "rw" - } - ], - "tailscale.com/cap/drive-sharer": 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": { - "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/extra": [ - { - "mode": "full" - } - ], - "tailscale.com/cap/drive": [ - { - "shares": ["*"], - "access": "rw" - } - ], - "tailscale.com/cap/drive-sharer": 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": { - "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/extra": [ - { - "mode": "full" - } - ], - "tailscale.com/cap/drive": [ - { - "shares": ["*"], - "access": "rw" - } - ], - "tailscale.com/cap/drive-sharer": 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": [ @@ -829,7 +241,9 @@ } } ], - "IPProto": [6] + "IPProto": [ + 6 + ] }, { "SrcIPs": [ @@ -840,7 +254,10 @@ ], "CapGrant": [ { - "Dsts": ["100.92.142.61/32", "fd7a:115c:a1e0::3e37:8e3d/128"], + "Dsts": [ + "100.92.142.61/32", + "fd7a:115c:a1e0::3e37:8e3d/128" + ], "CapMap": { "example.com/cap/extra": [ { @@ -849,7 +266,9 @@ ], "tailscale.com/cap/drive": [ { - "shares": ["*"], + "shares": [ + "*" + ], "access": "rw" } ] @@ -866,599 +285,19 @@ ], "CapGrant": [ { - "Dsts": ["100.92.142.61/32", "fd7a:115c:a1e0::3e37:8e3d/128"], + "Dsts": [ + "100.92.142.61/32", + "fd7a:115c:a1e0::3e37:8e3d/128" + ], "CapMap": { "tailscale.com/cap/drive-sharer": null } } ] } - ], - "packet_filter_matches": [ - { - "IPProto": [6], - "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": [ - { - "Net": "0.0.0.0/0", - "Ports": { - "First": 443, - "Last": 443 - } - }, - { - "Net": "::/0", - "Ports": { - "First": 443, - "Last": 443 - } - } - ], - "Caps": [] - }, - { - "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.92.142.61/32", - "Cap": "example.com/cap/extra", - "Values": [ - { - "mode": "full" - } - ] - }, - { - "Dst": "100.92.142.61/32", - "Cap": "tailscale.com/cap/drive", - "Values": [ - { - "shares": ["*"], - "access": "rw" - } - ] - }, - { - "Dst": "fd7a:115c:a1e0::3e37:8e3d/128", - "Cap": "example.com/cap/extra", - "Values": [ - { - "mode": "full" - } - ] - }, - { - "Dst": "fd7a:115c:a1e0::3e37:8e3d/128", - "Cap": "tailscale.com/cap/drive", - "Values": [ - { - "shares": ["*"], - "access": "rw" - } - ] - } - ] - }, - { - "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.92.142.61/32", - "Cap": "tailscale.com/cap/drive-sharer", - "Values": null - }, - { - "Dst": "fd7a:115c:a1e0::3e37:8e3d/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/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": { - "example.com/cap/extra": [ - { - "mode": "full" - } - ], - "tailscale.com/cap/drive": [ - { - "shares": ["*"], - "access": "rw" - } - ], - "tailscale.com/cap/drive-sharer": 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": { - "example.com/cap/extra": [ - { - "mode": "full" - } - ], - "tailscale.com/cap/drive": [ - { - "shares": ["*"], - "access": "rw" - } - ], - "tailscale.com/cap/drive-sharer": 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": { - "example.com/cap/extra": [ - { - "mode": "full" - } - ], - "tailscale.com/cap/drive": [ - { - "shares": ["*"], - "access": "rw" - } - ], - "tailscale.com/cap/drive-sharer": 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": { - "example.com/cap/extra": [ - { - "mode": "full" - } - ], - "tailscale.com/cap/drive": [ - { - "shares": ["*"], - "access": "rw" - } - ], - "tailscale.com/cap/drive-sharer": 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": { - "example.com/cap/extra": [ - { - "mode": "full" - } - ], - "tailscale.com/cap/drive": [ - { - "shares": ["*"], - "access": "rw" - } - ], - "tailscale.com/cap/drive-sharer": 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": { - "example.com/cap/extra": [ - { - "mode": "full" - } - ], - "tailscale.com/cap/drive": [ - { - "shares": ["*"], - "access": "rw" - } - ], - "tailscale.com/cap/drive-sharer": 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": { - "example.com/cap/extra": [ - { - "mode": "full" - } - ], - "tailscale.com/cap/drive": [ - { - "shares": ["*"], - "access": "rw" - } - ], - "tailscale.com/cap/drive-sharer": 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": [ @@ -1476,7 +315,9 @@ } } ], - "IPProto": [6] + "IPProto": [ + 6 + ] }, { "SrcIPs": [ @@ -1487,7 +328,10 @@ ], "CapGrant": [ { - "Dsts": ["100.83.200.69/32", "fd7a:115c:a1e0::c537:c845/128"], + "Dsts": [ + "100.83.200.69/32", + "fd7a:115c:a1e0::c537:c845/128" + ], "CapMap": { "example.com/cap/extra": [ { @@ -1496,7 +340,9 @@ ], "tailscale.com/cap/drive": [ { - "shares": ["*"], + "shares": [ + "*" + ], "access": "rw" } ] @@ -1513,600 +359,19 @@ ], "CapGrant": [ { - "Dsts": ["100.83.200.69/32", "fd7a:115c:a1e0::c537:c845/128"], + "Dsts": [ + "100.83.200.69/32", + "fd7a:115c:a1e0::c537:c845/128" + ], "CapMap": { "tailscale.com/cap/drive-sharer": null } } ] } - ], - "packet_filter_matches": [ - { - "IPProto": [6], - "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": [ - { - "Net": "0.0.0.0/0", - "Ports": { - "First": 443, - "Last": 443 - } - }, - { - "Net": "::/0", - "Ports": { - "First": 443, - "Last": 443 - } - } - ], - "Caps": [] - }, - { - "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.83.200.69/32", - "Cap": "example.com/cap/extra", - "Values": [ - { - "mode": "full" - } - ] - }, - { - "Dst": "100.83.200.69/32", - "Cap": "tailscale.com/cap/drive", - "Values": [ - { - "shares": ["*"], - "access": "rw" - } - ] - }, - { - "Dst": "fd7a:115c:a1e0::c537:c845/128", - "Cap": "example.com/cap/extra", - "Values": [ - { - "mode": "full" - } - ] - }, - { - "Dst": "fd7a:115c:a1e0::c537:c845/128", - "Cap": "tailscale.com/cap/drive", - "Values": [ - { - "shares": ["*"], - "access": "rw" - } - ] - } - ] - }, - { - "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.83.200.69/32", - "Cap": "tailscale.com/cap/drive-sharer", - "Values": null - }, - { - "Dst": "fd7a:115c:a1e0::c537:c845/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/tagged-client/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/extra": [ - { - "mode": "full" - } - ], - "tailscale.com/cap/drive": [ - { - "shares": ["*"], - "access": "rw" - } - ], - "tailscale.com/cap/drive-sharer": 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": { - "example.com/cap/extra": [ - { - "mode": "full" - } - ], - "tailscale.com/cap/drive": [ - { - "shares": ["*"], - "access": "rw" - } - ], - "tailscale.com/cap/drive-sharer": 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": { - "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/extra": [ - { - "mode": "full" - } - ], - "tailscale.com/cap/drive": [ - { - "shares": ["*"], - "access": "rw" - } - ], - "tailscale.com/cap/drive-sharer": 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": { - "example.com/cap/extra": [ - { - "mode": "full" - } - ], - "tailscale.com/cap/drive": [ - { - "shares": ["*"], - "access": "rw" - } - ], - "tailscale.com/cap/drive-sharer": 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": { - "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/extra": [ - { - "mode": "full" - } - ], - "tailscale.com/cap/drive": [ - { - "shares": ["*"], - "access": "rw" - } - ], - "tailscale.com/cap/drive-sharer": 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": { - "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/extra": [ - { - "mode": "full" - } - ], - "tailscale.com/cap/drive": [ - { - "shares": ["*"], - "access": "rw" - } - ], - "tailscale.com/cap/drive-sharer": 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": { - "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/extra": [ - { - "mode": "full" - } - ], - "tailscale.com/cap/drive": [ - { - "shares": ["*"], - "access": "rw" - } - ], - "tailscale.com/cap/drive-sharer": 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": [ @@ -2124,7 +389,9 @@ } } ], - "IPProto": [6] + "IPProto": [ + 6 + ] }, { "SrcIPs": [ @@ -2135,7 +402,10 @@ ], "CapGrant": [ { - "Dsts": ["100.103.8.15/32", "fd7a:115c:a1e0::5b37:80f/128"], + "Dsts": [ + "100.103.8.15/32", + "fd7a:115c:a1e0::5b37:80f/128" + ], "CapMap": { "example.com/cap/extra": [ { @@ -2144,7 +414,9 @@ ], "tailscale.com/cap/drive": [ { - "shares": ["*"], + "shares": [ + "*" + ], "access": "rw" } ] @@ -2161,600 +433,19 @@ ], "CapGrant": [ { - "Dsts": ["100.103.8.15/32", "fd7a:115c:a1e0::5b37:80f/128"], + "Dsts": [ + "100.103.8.15/32", + "fd7a:115c:a1e0::5b37:80f/128" + ], "CapMap": { "tailscale.com/cap/drive-sharer": null } } ] } - ], - "packet_filter_matches": [ - { - "IPProto": [6], - "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": [ - { - "Net": "0.0.0.0/0", - "Ports": { - "First": 443, - "Last": 443 - } - }, - { - "Net": "::/0", - "Ports": { - "First": 443, - "Last": 443 - } - } - ], - "Caps": [] - }, - { - "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.103.8.15/32", - "Cap": "example.com/cap/extra", - "Values": [ - { - "mode": "full" - } - ] - }, - { - "Dst": "100.103.8.15/32", - "Cap": "tailscale.com/cap/drive", - "Values": [ - { - "shares": ["*"], - "access": "rw" - } - ] - }, - { - "Dst": "fd7a:115c:a1e0::5b37:80f/128", - "Cap": "example.com/cap/extra", - "Values": [ - { - "mode": "full" - } - ] - }, - { - "Dst": "fd7a:115c:a1e0::5b37:80f/128", - "Cap": "tailscale.com/cap/drive", - "Values": [ - { - "shares": ["*"], - "access": "rw" - } - ] - } - ] - }, - { - "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.103.8.15/32", - "Cap": "tailscale.com/cap/drive-sharer", - "Values": null - }, - { - "Dst": "fd7a:115c:a1e0::5b37:80f/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/tagged-prod/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/extra": [ - { - "mode": "full" - } - ], - "tailscale.com/cap/drive": [ - { - "shares": ["*"], - "access": "rw" - } - ], - "tailscale.com/cap/drive-sharer": 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": { - "example.com/cap/extra": [ - { - "mode": "full" - } - ], - "tailscale.com/cap/drive": [ - { - "shares": ["*"], - "access": "rw" - } - ], - "tailscale.com/cap/drive-sharer": 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": { - "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/extra": [ - { - "mode": "full" - } - ], - "tailscale.com/cap/drive": [ - { - "shares": ["*"], - "access": "rw" - } - ], - "tailscale.com/cap/drive-sharer": 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": { - "example.com/cap/extra": [ - { - "mode": "full" - } - ], - "tailscale.com/cap/drive": [ - { - "shares": ["*"], - "access": "rw" - } - ], - "tailscale.com/cap/drive-sharer": 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": { - "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/extra": [ - { - "mode": "full" - } - ], - "tailscale.com/cap/drive": [ - { - "shares": ["*"], - "access": "rw" - } - ], - "tailscale.com/cap/drive-sharer": 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": { - "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/extra": [ - { - "mode": "full" - } - ], - "tailscale.com/cap/drive": [ - { - "shares": ["*"], - "access": "rw" - } - ], - "tailscale.com/cap/drive-sharer": 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": { - "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/extra": [ - { - "mode": "full" - } - ], - "tailscale.com/cap/drive": [ - { - "shares": ["*"], - "access": "rw" - } - ], - "tailscale.com/cap/drive-sharer": 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": [ @@ -2772,7 +463,9 @@ } } ], - "IPProto": [6] + "IPProto": [ + 6 + ] }, { "SrcIPs": [ @@ -2783,7 +476,10 @@ ], "CapGrant": [ { - "Dsts": ["100.108.74.26/32", "fd7a:115c:a1e0::b901:4a87/128"], + "Dsts": [ + "100.108.74.26/32", + "fd7a:115c:a1e0::b901:4a87/128" + ], "CapMap": { "example.com/cap/extra": [ { @@ -2792,7 +488,9 @@ ], "tailscale.com/cap/drive": [ { - "shares": ["*"], + "shares": [ + "*" + ], "access": "rw" } ] @@ -2809,600 +507,19 @@ ], "CapGrant": [ { - "Dsts": ["100.108.74.26/32", "fd7a:115c:a1e0::b901:4a87/128"], + "Dsts": [ + "100.108.74.26/32", + "fd7a:115c:a1e0::b901:4a87/128" + ], "CapMap": { "tailscale.com/cap/drive-sharer": null } } ] } - ], - "packet_filter_matches": [ - { - "IPProto": [6], - "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": [ - { - "Net": "0.0.0.0/0", - "Ports": { - "First": 443, - "Last": 443 - } - }, - { - "Net": "::/0", - "Ports": { - "First": 443, - "Last": 443 - } - } - ], - "Caps": [] - }, - { - "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/drive", - "Values": [ - { - "shares": ["*"], - "access": "rw" - } - ] - }, - { - "Dst": "100.108.74.26/32", - "Cap": "example.com/cap/extra", - "Values": [ - { - "mode": "full" - } - ] - }, - { - "Dst": "fd7a:115c:a1e0::b901:4a87/128", - "Cap": "tailscale.com/cap/drive", - "Values": [ - { - "shares": ["*"], - "access": "rw" - } - ] - }, - { - "Dst": "fd7a:115c:a1e0::b901:4a87/128", - "Cap": "example.com/cap/extra", - "Values": [ - { - "mode": "full" - } - ] - } - ] - }, - { - "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/drive-sharer", - "Values": null - }, - { - "Dst": "fd7a:115c:a1e0::b901:4a87/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/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/extra": [ - { - "mode": "full" - } - ], - "tailscale.com/cap/drive": [ - { - "shares": ["*"], - "access": "rw" - } - ], - "tailscale.com/cap/drive-sharer": 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": { - "example.com/cap/extra": [ - { - "mode": "full" - } - ], - "tailscale.com/cap/drive": [ - { - "shares": ["*"], - "access": "rw" - } - ], - "tailscale.com/cap/drive-sharer": 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": { - "example.com/cap/extra": [ - { - "mode": "full" - } - ], - "tailscale.com/cap/drive": [ - { - "shares": ["*"], - "access": "rw" - } - ], - "tailscale.com/cap/drive-sharer": 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/extra": [ - { - "mode": "full" - } - ], - "tailscale.com/cap/drive": [ - { - "shares": ["*"], - "access": "rw" - } - ], - "tailscale.com/cap/drive-sharer": 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/extra": [ - { - "mode": "full" - } - ], - "tailscale.com/cap/drive": [ - { - "shares": ["*"], - "access": "rw" - } - ], - "tailscale.com/cap/drive-sharer": 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": { - "example.com/cap/extra": [ - { - "mode": "full" - } - ], - "tailscale.com/cap/drive": [ - { - "shares": ["*"], - "access": "rw" - } - ], - "tailscale.com/cap/drive-sharer": 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/extra": [ - { - "mode": "full" - } - ], - "tailscale.com/cap/drive": [ - { - "shares": ["*"], - "access": "rw" - } - ], - "tailscale.com/cap/drive-sharer": 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": [ @@ -3420,7 +537,9 @@ } } ], - "IPProto": [6] + "IPProto": [ + 6 + ] }, { "SrcIPs": [ @@ -3431,7 +550,10 @@ ], "CapGrant": [ { - "Dsts": ["100.110.121.96/32", "fd7a:115c:a1e0::1737:7960/128"], + "Dsts": [ + "100.110.121.96/32", + "fd7a:115c:a1e0::1737:7960/128" + ], "CapMap": { "example.com/cap/extra": [ { @@ -3440,7 +562,9 @@ ], "tailscale.com/cap/drive": [ { - "shares": ["*"], + "shares": [ + "*" + ], "access": "rw" } ] @@ -3457,600 +581,19 @@ ], "CapGrant": [ { - "Dsts": ["100.110.121.96/32", "fd7a:115c:a1e0::1737:7960/128"], + "Dsts": [ + "100.110.121.96/32", + "fd7a:115c:a1e0::1737:7960/128" + ], "CapMap": { "tailscale.com/cap/drive-sharer": null } } ] } - ], - "packet_filter_matches": [ - { - "IPProto": [6], - "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": [ - { - "Net": "0.0.0.0/0", - "Ports": { - "First": 443, - "Last": 443 - } - }, - { - "Net": "::/0", - "Ports": { - "First": 443, - "Last": 443 - } - } - ], - "Caps": [] - }, - { - "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.110.121.96/32", - "Cap": "example.com/cap/extra", - "Values": [ - { - "mode": "full" - } - ] - }, - { - "Dst": "100.110.121.96/32", - "Cap": "tailscale.com/cap/drive", - "Values": [ - { - "shares": ["*"], - "access": "rw" - } - ] - }, - { - "Dst": "fd7a:115c:a1e0::1737:7960/128", - "Cap": "example.com/cap/extra", - "Values": [ - { - "mode": "full" - } - ] - }, - { - "Dst": "fd7a:115c:a1e0::1737:7960/128", - "Cap": "tailscale.com/cap/drive", - "Values": [ - { - "shares": ["*"], - "access": "rw" - } - ] - } - ] - }, - { - "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.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": { - "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/extra": [ - { - "mode": "full" - } - ], - "tailscale.com/cap/drive": [ - { - "shares": ["*"], - "access": "rw" - } - ], - "tailscale.com/cap/drive-sharer": 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": { - "example.com/cap/extra": [ - { - "mode": "full" - } - ], - "tailscale.com/cap/drive": [ - { - "shares": ["*"], - "access": "rw" - } - ], - "tailscale.com/cap/drive-sharer": 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": { - "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/extra": [ - { - "mode": "full" - } - ], - "tailscale.com/cap/drive": [ - { - "shares": ["*"], - "access": "rw" - } - ], - "tailscale.com/cap/drive-sharer": 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": { - "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/extra": [ - { - "mode": "full" - } - ], - "tailscale.com/cap/drive": [ - { - "shares": ["*"], - "access": "rw" - } - ], - "tailscale.com/cap/drive-sharer": 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": { - "example.com/cap/extra": [ - { - "mode": "full" - } - ], - "tailscale.com/cap/drive": [ - { - "shares": ["*"], - "access": "rw" - } - ], - "tailscale.com/cap/drive-sharer": 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": { - "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/extra": [ - { - "mode": "full" - } - ], - "tailscale.com/cap/drive": [ - { - "shares": ["*"], - "access": "rw" - } - ], - "tailscale.com/cap/drive-sharer": 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": { - "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/extra": [ - { - "mode": "full" - } - ], - "tailscale.com/cap/drive": [ - { - "shares": ["*"], - "access": "rw" - } - ], - "tailscale.com/cap/drive-sharer": 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": [ @@ -4068,7 +611,9 @@ } } ], - "IPProto": [6] + "IPProto": [ + 6 + ] }, { "SrcIPs": [ @@ -4079,7 +624,10 @@ ], "CapGrant": [ { - "Dsts": ["100.103.90.82/32", "fd7a:115c:a1e0::9e37:5a52/128"], + "Dsts": [ + "100.103.90.82/32", + "fd7a:115c:a1e0::9e37:5a52/128" + ], "CapMap": { "example.com/cap/extra": [ { @@ -4088,7 +636,9 @@ ], "tailscale.com/cap/drive": [ { - "shares": ["*"], + "shares": [ + "*" + ], "access": "rw" } ] @@ -4105,600 +655,19 @@ ], "CapGrant": [ { - "Dsts": ["100.103.90.82/32", "fd7a:115c:a1e0::9e37:5a52/128"], + "Dsts": [ + "100.103.90.82/32", + "fd7a:115c:a1e0::9e37:5a52/128" + ], "CapMap": { "tailscale.com/cap/drive-sharer": null } } ] } - ], - "packet_filter_matches": [ - { - "IPProto": [6], - "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": [ - { - "Net": "0.0.0.0/0", - "Ports": { - "First": 443, - "Last": 443 - } - }, - { - "Net": "::/0", - "Ports": { - "First": 443, - "Last": 443 - } - } - ], - "Caps": [] - }, - { - "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.103.90.82/32", - "Cap": "example.com/cap/extra", - "Values": [ - { - "mode": "full" - } - ] - }, - { - "Dst": "100.103.90.82/32", - "Cap": "tailscale.com/cap/drive", - "Values": [ - { - "shares": ["*"], - "access": "rw" - } - ] - }, - { - "Dst": "fd7a:115c:a1e0::9e37:5a52/128", - "Cap": "example.com/cap/extra", - "Values": [ - { - "mode": "full" - } - ] - }, - { - "Dst": "fd7a:115c:a1e0::9e37:5a52/128", - "Cap": "tailscale.com/cap/drive", - "Values": [ - { - "shares": ["*"], - "access": "rw" - } - ] - } - ] - }, - { - "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.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": { - "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/extra": [ - { - "mode": "full" - } - ], - "tailscale.com/cap/drive": [ - { - "shares": ["*"], - "access": "rw" - } - ], - "tailscale.com/cap/drive-sharer": 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": { - "example.com/cap/extra": [ - { - "mode": "full" - } - ], - "tailscale.com/cap/drive": [ - { - "shares": ["*"], - "access": "rw" - } - ], - "tailscale.com/cap/drive-sharer": 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": { - "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/extra": [ - { - "mode": "full" - } - ], - "tailscale.com/cap/drive": [ - { - "shares": ["*"], - "access": "rw" - } - ], - "tailscale.com/cap/drive-sharer": 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": { - "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/extra": [ - { - "mode": "full" - } - ], - "tailscale.com/cap/drive": [ - { - "shares": ["*"], - "access": "rw" - } - ], - "tailscale.com/cap/drive-sharer": 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": { - "example.com/cap/extra": [ - { - "mode": "full" - } - ], - "tailscale.com/cap/drive": [ - { - "shares": ["*"], - "access": "rw" - } - ], - "tailscale.com/cap/drive-sharer": 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": { - "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/extra": [ - { - "mode": "full" - } - ], - "tailscale.com/cap/drive": [ - { - "shares": ["*"], - "access": "rw" - } - ], - "tailscale.com/cap/drive-sharer": 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": { - "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/extra": [ - { - "mode": "full" - } - ], - "tailscale.com/cap/drive": [ - { - "shares": ["*"], - "access": "rw" - } - ], - "tailscale.com/cap/drive-sharer": 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": [ @@ -4716,7 +685,9 @@ } } ], - "IPProto": [6] + "IPProto": [ + 6 + ] }, { "SrcIPs": [ @@ -4727,7 +698,10 @@ ], "CapGrant": [ { - "Dsts": ["100.90.199.68/32", "fd7a:115c:a1e0::2d01:c747/128"], + "Dsts": [ + "100.90.199.68/32", + "fd7a:115c:a1e0::2d01:c747/128" + ], "CapMap": { "example.com/cap/extra": [ { @@ -4736,7 +710,9 @@ ], "tailscale.com/cap/drive": [ { - "shares": ["*"], + "shares": [ + "*" + ], "access": "rw" } ] @@ -4753,594 +729,17 @@ ], "CapGrant": [ { - "Dsts": ["100.90.199.68/32", "fd7a:115c:a1e0::2d01:c747/128"], + "Dsts": [ + "100.90.199.68/32", + "fd7a:115c:a1e0::2d01:c747/128" + ], "CapMap": { "tailscale.com/cap/drive-sharer": null } } ] } - ], - "packet_filter_matches": [ - { - "IPProto": [6], - "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": [ - { - "Net": "0.0.0.0/0", - "Ports": { - "First": 443, - "Last": 443 - } - }, - { - "Net": "::/0", - "Ports": { - "First": 443, - "Last": 443 - } - } - ], - "Caps": [] - }, - { - "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.90.199.68/32", - "Cap": "example.com/cap/extra", - "Values": [ - { - "mode": "full" - } - ] - }, - { - "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" - } - ] - }, - { - "Dst": "fd7a:115c:a1e0::2d01:c747/128", - "Cap": "example.com/cap/extra", - "Values": [ - { - "mode": "full" - } - ] - } - ] - }, - { - "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.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": { - "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/extra": [ - { - "mode": "full" - } - ], - "tailscale.com/cap/drive": [ - { - "shares": ["*"], - "access": "rw" - } - ], - "tailscale.com/cap/drive-sharer": 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": { - "example.com/cap/extra": [ - { - "mode": "full" - } - ], - "tailscale.com/cap/drive": [ - { - "shares": ["*"], - "access": "rw" - } - ], - "tailscale.com/cap/drive-sharer": 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": { - "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/extra": [ - { - "mode": "full" - } - ], - "tailscale.com/cap/drive": [ - { - "shares": ["*"], - "access": "rw" - } - ], - "tailscale.com/cap/drive-sharer": 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": { - "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/extra": [ - { - "mode": "full" - } - ], - "tailscale.com/cap/drive": [ - { - "shares": ["*"], - "access": "rw" - } - ], - "tailscale.com/cap/drive-sharer": 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": { - "example.com/cap/extra": [ - { - "mode": "full" - } - ], - "tailscale.com/cap/drive": [ - { - "shares": ["*"], - "access": "rw" - } - ], - "tailscale.com/cap/drive-sharer": 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": { - "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/extra": [ - { - "mode": "full" - } - ], - "tailscale.com/cap/drive": [ - { - "shares": ["*"], - "access": "rw" - } - ], - "tailscale.com/cap/drive-sharer": 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": { - "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/extra": [ - { - "mode": "full" - } - ], - "tailscale.com/cap/drive": [ - { - "shares": ["*"], - "access": "rw" - } - ], - "tailscale.com/cap/drive-sharer": null - } - } - } - } + ] } } } diff --git a/hscontrol/policy/v2/testdata/grant_results/GRANT-G1.hujson b/hscontrol/policy/v2/testdata/grant_results/GRANT-G1.hujson index 9e9e9c387..fa1fe2f49 100644 --- a/hscontrol/policy/v2/testdata/grant_results/GRANT-G1.hujson +++ b/hscontrol/policy/v2/testdata/grant_results/GRANT-G1.hujson @@ -7,23 +7,37 @@ // Expected: Rules on tagged-server { "test_id": "GRANT-G1", - "timestamp": "2026-02-23T00:34:55Z", - "propagation_wait_seconds": 15, "input": { - "policy_file": "/home/kradalby/acl-explore/grant_policies/grant_g1.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -32,120 +46,104 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "grants": [ { - "src": ["*"], - "dst": ["tag:server"], + "src": [ + "*" + ], + "dst": [ + "tag:server" + ], "app": { - "example.com/cap/one": [{}] + "example.com/cap/one": [ + {} + ] } }, { - "src": ["*"], - "dst": ["tag:server"], + "src": [ + "*" + ], + "dst": [ + "tag:server" + ], "app": { - "example.com/cap/two": [{}] + "example.com/cap/two": [ + {} + ] } } ] }, - "grants_section": [ - { - "src": ["*"], - "dst": ["tag:server"], - "app": { - "example.com/cap/one": [{}] - } - }, - { - "src": ["*"], - "dst": ["tag:server"], - "app": { - "example.com/cap/two": [{}] - } - } - ], - "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"], + "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"], + "tags": [ + "tag:router" + ], "ipv4": "100.92.142.61", - "ipv6": "fd7a:115c:a1e0::3e37:8e3d", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] + "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"], + "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"], + "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"], + "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" @@ -154,370 +152,18 @@ }, "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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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": [ @@ -528,9 +174,14 @@ ], "CapGrant": [ { - "Dsts": ["100.108.74.26/32", "fd7a:115c:a1e0::b901:4a87/128"], + "Dsts": [ + "100.108.74.26/32", + "fd7a:115c:a1e0::b901:4a87/128" + ], "CapMap": { - "example.com/cap/one": [{}] + "example.com/cap/one": [ + {} + ] } } ] @@ -544,728 +195,28 @@ ], "CapGrant": [ { - "Dsts": ["100.108.74.26/32", "fd7a:115c:a1e0::b901:4a87/128"], + "Dsts": [ + "100.108.74.26/32", + "fd7a:115c:a1e0::b901:4a87/128" + ], "CapMap": { - "example.com/cap/two": [{}] + "example.com/cap/two": [ + {} + ] } } ] } - ], - "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": "example.com/cap/one", - "Values": [{}] - }, - { - "Dst": "fd7a:115c:a1e0::b901:4a87/128", - "Cap": "example.com/cap/one", - "Values": [{}] - } - ] - }, - { - "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": "example.com/cap/two", - "Values": [{}] - }, - { - "Dst": "fd7a:115c:a1e0::b901:4a87/128", - "Cap": "example.com/cap/two", - "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/one": [{}], - "example.com/cap/two": [{}] - } - } - }, - "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": { - "example.com/cap/one": [{}], - "example.com/cap/two": [{}] - } - } - }, - "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/one": [{}], - "example.com/cap/two": [{}] - } - } - }, - "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/one": [{}], - "example.com/cap/two": [{}] - } - } - }, - "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/one": [{}], - "example.com/cap/two": [{}] - } - } - }, - "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/one": [{}], - "example.com/cap/two": [{}] - } - } - }, - "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/one": [{}], - "example.com/cap/two": [{}] - } - } - } - } + ] }, "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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": null } } } diff --git a/hscontrol/policy/v2/testdata/grant_results/GRANT-G2.hujson b/hscontrol/policy/v2/testdata/grant_results/GRANT-G2.hujson index 3d6225d80..fb9d5b3ab 100644 --- a/hscontrol/policy/v2/testdata/grant_results/GRANT-G2.hujson +++ b/hscontrol/policy/v2/testdata/grant_results/GRANT-G2.hujson @@ -7,23 +7,37 @@ // Expected: Rules on tagged-server { "test_id": "GRANT-G2", - "timestamp": "2026-02-23T00:35:12Z", - "propagation_wait_seconds": 15, "input": { - "policy_file": "/home/kradalby/acl-explore/grant_policies/grant_g2.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -32,15 +46,25 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "grants": [ { - "src": ["*"], - "dst": ["tag:server"], + "src": [ + "*" + ], + "dst": [ + "tag:server" + ], "app": { "example.com/cap/test": [ { @@ -50,8 +74,12 @@ } }, { - "src": ["*"], - "dst": ["tag:server"], + "src": [ + "*" + ], + "dst": [ + "tag:server" + ], "app": { "example.com/cap/test": [ { @@ -62,106 +90,64 @@ } ] }, - "grants_section": [ - { - "src": ["*"], - "dst": ["tag:server"], - "app": { - "example.com/cap/test": [ - { - "v": 1 - } - ] - } - }, - { - "src": ["*"], - "dst": ["tag:server"], - "app": { - "example.com/cap/test": [ - { - "v": 2 - } - ] - } - } - ], - "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"], + "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"], + "tags": [ + "tag:router" + ], "ipv4": "100.92.142.61", - "ipv6": "fd7a:115c:a1e0::3e37:8e3d", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] + "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"], + "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"], + "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"], + "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" @@ -170,370 +156,18 @@ }, "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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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": [ @@ -544,7 +178,10 @@ ], "CapGrant": [ { - "Dsts": ["100.108.74.26/32", "fd7a:115c:a1e0::b901:4a87/128"], + "Dsts": [ + "100.108.74.26/32", + "fd7a:115c:a1e0::b901:4a87/128" + ], "CapMap": { "example.com/cap/test": [ { @@ -564,7 +201,10 @@ ], "CapGrant": [ { - "Dsts": ["100.108.74.26/32", "fd7a:115c:a1e0::b901:4a87/128"], + "Dsts": [ + "100.108.74.26/32", + "fd7a:115c:a1e0::b901:4a87/128" + ], "CapMap": { "example.com/cap/test": [ { @@ -575,779 +215,16 @@ } ] } - ], - "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": "example.com/cap/test", - "Values": [ - { - "v": 1 - } - ] - }, - { - "Dst": "fd7a:115c:a1e0::b901:4a87/128", - "Cap": "example.com/cap/test", - "Values": [ - { - "v": 1 - } - ] - } - ] - }, - { - "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": "example.com/cap/test", - "Values": [ - { - "v": 2 - } - ] - }, - { - "Dst": "fd7a:115c:a1e0::b901:4a87/128", - "Cap": "example.com/cap/test", - "Values": [ - { - "v": 2 - } - ] - } - ] - } - ], - "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": [ - { - "v": 1 - }, - { - "v": 2 - } - ] - } - } - }, - "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": { - "example.com/cap/test": [ - { - "v": 1 - }, - { - "v": 2 - } - ] - } - } - }, - "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": [ - { - "v": 1 - }, - { - "v": 2 - } - ] - } - } - }, - "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": [ - { - "v": 1 - }, - { - "v": 2 - } - ] - } - } - }, - "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": [ - { - "v": 1 - }, - { - "v": 2 - } - ] - } - } - }, - "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": [ - { - "v": 1 - }, - { - "v": 2 - } - ] - } - } - }, - "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": [ - { - "v": 1 - }, - { - "v": 2 - } - ] - } - } - } - } + ] }, "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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": null } } } diff --git a/hscontrol/policy/v2/testdata/grant_results/GRANT-G3.hujson b/hscontrol/policy/v2/testdata/grant_results/GRANT-G3.hujson index 8c15c762e..322cb05d7 100644 --- a/hscontrol/policy/v2/testdata/grant_results/GRANT-G3.hujson +++ b/hscontrol/policy/v2/testdata/grant_results/GRANT-G3.hujson @@ -7,23 +7,37 @@ // Expected: Rules on tagged-server { "test_id": "GRANT-G3", - "timestamp": "2026-02-23T00:35:28Z", - "propagation_wait_seconds": 15, "input": { - "policy_file": "/home/kradalby/acl-explore/grant_policies/grant_g3.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -32,22 +46,38 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "grants": [ { - "src": ["*"], - "dst": ["tag:server"], + "src": [ + "*" + ], + "dst": [ + "tag:server" + ], "app": { - "example.com/cap/test": [{}] + "example.com/cap/test": [ + {} + ] } }, { - "src": ["tag:client"], - "dst": ["tag:server"], + "src": [ + "tag:client" + ], + "dst": [ + "tag:server" + ], "app": { "example.com/cap/test": [ { @@ -58,102 +88,64 @@ } ] }, - "grants_section": [ - { - "src": ["*"], - "dst": ["tag:server"], - "app": { - "example.com/cap/test": [{}] - } - }, - { - "src": ["tag:client"], - "dst": ["tag:server"], - "app": { - "example.com/cap/test": [ - { - "extra": true - } - ] - } - } - ], - "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"], + "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"], + "tags": [ + "tag:router" + ], "ipv4": "100.92.142.61", - "ipv6": "fd7a:115c:a1e0::3e37:8e3d", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] + "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"], + "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"], + "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"], + "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" @@ -162,370 +154,18 @@ }, "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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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": [ @@ -536,18 +176,29 @@ ], "CapGrant": [ { - "Dsts": ["100.108.74.26/32", "fd7a:115c:a1e0::b901:4a87/128"], + "Dsts": [ + "100.108.74.26/32", + "fd7a:115c:a1e0::b901:4a87/128" + ], "CapMap": { - "example.com/cap/test": [{}] + "example.com/cap/test": [ + {} + ] } } ] }, { - "SrcIPs": ["100.83.200.69", "fd7a:115c:a1e0::c537:c845"], + "SrcIPs": [ + "100.83.200.69", + "fd7a:115c:a1e0::c537:c845" + ], "CapGrant": [ { - "Dsts": ["100.108.74.26/32", "fd7a:115c:a1e0::b901:4a87/128"], + "Dsts": [ + "100.108.74.26/32", + "fd7a:115c:a1e0::b901:4a87/128" + ], "CapMap": { "example.com/cap/test": [ { @@ -558,711 +209,16 @@ } ] } - ], - "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": "example.com/cap/test", - "Values": [{}] - }, - { - "Dst": "fd7a:115c:a1e0::b901:4a87/128", - "Cap": "example.com/cap/test", - "Values": [{}] - } - ] - }, - { - "IPProto": [6, 17, 1, 58], - "Srcs": ["100.83.200.69/32", "fd7a:115c:a1e0::c537:c845/128"], - "SrcCaps": null, - "Dsts": [], - "Caps": [ - { - "Dst": "100.108.74.26/32", - "Cap": "example.com/cap/test", - "Values": [ - { - "extra": true - } - ] - }, - { - "Dst": "fd7a:115c:a1e0::b901:4a87/128", - "Cap": "example.com/cap/test", - "Values": [ - { - "extra": true - } - ] - } - ] - } - ], - "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", "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": { - "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": [ - {}, - { - "extra": true - } - ] - } - } - }, - "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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": null } } } diff --git a/hscontrol/policy/v2/testdata/grant_results/GRANT-G4.hujson b/hscontrol/policy/v2/testdata/grant_results/GRANT-G4.hujson index 5141ac543..933ef3825 100644 --- a/hscontrol/policy/v2/testdata/grant_results/GRANT-G4.hujson +++ b/hscontrol/policy/v2/testdata/grant_results/GRANT-G4.hujson @@ -7,23 +7,37 @@ // Expected: Rules on tagged-server { "test_id": "GRANT-G4", - "timestamp": "2026-02-23T00:35:45Z", - "propagation_wait_seconds": 15, "input": { - "policy_file": "/home/kradalby/acl-explore/grant_policies/grant_g4.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -32,116 +46,102 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "grants": [ { - "src": ["*"], - "dst": ["tag:server"], + "src": [ + "*" + ], + "dst": [ + "tag:server" + ], "app": { - "example.com/cap/test": [{}] + "example.com/cap/test": [ + {} + ] } }, { - "src": ["*"], - "dst": ["tag:server"], - "ip": ["tcp:80"] + "src": [ + "*" + ], + "dst": [ + "tag:server" + ], + "ip": [ + "tcp:80" + ] } ] }, - "grants_section": [ - { - "src": ["*"], - "dst": ["tag:server"], - "app": { - "example.com/cap/test": [{}] - } - }, - { - "src": ["*"], - "dst": ["tag:server"], - "ip": ["tcp:80"] - } - ], - "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"], + "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"], + "tags": [ + "tag:router" + ], "ipv4": "100.92.142.61", - "ipv6": "fd7a:115c:a1e0::3e37:8e3d", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] + "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"], + "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"], + "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"], + "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" @@ -150,370 +150,18 @@ }, "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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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": [ @@ -524,9 +172,14 @@ ], "CapGrant": [ { - "Dsts": ["100.108.74.26/32", "fd7a:115c:a1e0::b901:4a87/128"], + "Dsts": [ + "100.108.74.26/32", + "fd7a:115c:a1e0::b901:4a87/128" + ], "CapMap": { - "example.com/cap/test": [{}] + "example.com/cap/test": [ + {} + ] } } ] @@ -554,720 +207,20 @@ } } ], - "IPProto": [6] - } - ], - "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": "example.com/cap/test", - "Values": [{}] - }, - { - "Dst": "fd7a:115c:a1e0::b901:4a87/128", - "Cap": "example.com/cap/test", - "Values": [{}] - } + "IPProto": [ + 6 ] - }, - { - "IPProto": [6], - "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": [ - { - "Net": "100.108.74.26/32", - "Ports": { - "First": 80, - "Last": 80 - } - }, - { - "Net": "fd7a:115c:a1e0::b901:4a87/128", - "Ports": { - "First": 80, - "Last": 80 - } - } - ], - "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": { - "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", "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": { - "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": { - "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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": null } } } diff --git a/hscontrol/policy/v2/testdata/grant_results/GRANT-G5.hujson b/hscontrol/policy/v2/testdata/grant_results/GRANT-G5.hujson index 0206a108e..ab494e942 100644 --- a/hscontrol/policy/v2/testdata/grant_results/GRANT-G5.hujson +++ b/hscontrol/policy/v2/testdata/grant_results/GRANT-G5.hujson @@ -8,23 +8,37 @@ // Expected: Rules on 8 nodes { "test_id": "GRANT-G5", - "timestamp": "2026-02-23T00:36:02Z", - "propagation_wait_seconds": 15, "input": { - "policy_file": "/home/kradalby/acl-explore/grant_policies/grant_g5.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -33,126 +47,113 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "grants": [ { - "src": ["*"], - "dst": ["*"], - "ip": ["*"] + "src": [ + "*" + ], + "dst": [ + "*" + ], + "ip": [ + "*" + ] }, { - "src": ["tag:client"], - "dst": ["tag:server"], + "src": [ + "tag:client" + ], + "dst": [ + "tag:server" + ], "app": { - "example.com/cap/test": [{}] + "example.com/cap/test": [ + {} + ] } }, { - "src": ["autogroup:member"], - "dst": ["tag:server"], - "ip": ["tcp:443"] + "src": [ + "autogroup:member" + ], + "dst": [ + "tag:server" + ], + "ip": [ + "tcp:443" + ] } ] }, - "grants_section": [ - { - "src": ["*"], - "dst": ["*"], - "ip": ["*"] - }, - { - "src": ["tag:client"], - "dst": ["tag:server"], - "app": { - "example.com/cap/test": [{}] - } - }, - { - "src": ["autogroup:member"], - "dst": ["tag:server"], - "ip": ["tcp:443"] - } - ], - "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"], + "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"], + "tags": [ + "tag:router" + ], "ipv4": "100.92.142.61", - "ipv6": "fd7a:115c:a1e0::3e37:8e3d", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] + "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"], + "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"], + "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"], + "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" @@ -161,10 +162,6 @@ }, "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": [ @@ -183,406 +180,9 @@ } ] } - ], - "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": [ - { - "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": { - "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": { - "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/exit-node/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/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": { - "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/exit-node/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/exit-node/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 - } - } - } + ] }, "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": [ @@ -601,405 +201,9 @@ } ] } - ], - "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": [ - { - "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": { - "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": [ { "SrcIPs": [ @@ -1018,406 +222,9 @@ } ] } - ], - "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": [ - { - "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": { - "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-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": { - "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/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": { - "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-client/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-client/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-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": [ @@ -1436,406 +243,9 @@ } ] } - ], - "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": [ - { - "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": { - "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-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": { - "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.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": { - "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-prod/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-prod/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-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": [ @@ -1855,12 +265,20 @@ ] }, { - "SrcIPs": ["100.83.200.69", "fd7a:115c:a1e0::c537:c845"], + "SrcIPs": [ + "100.83.200.69", + "fd7a:115c:a1e0::c537:c845" + ], "CapGrant": [ { - "Dsts": ["100.108.74.26/32", "fd7a:115c:a1e0::b901:4a87/128"], + "Dsts": [ + "100.108.74.26/32", + "fd7a:115c:a1e0::b901:4a87/128" + ], "CapMap": { - "example.com/cap/test": [{}] + "example.com/cap/test": [ + {} + ] } } ] @@ -1890,457 +308,13 @@ } } ], - "IPProto": [6] - } - ], - "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": [ - { - "Net": "0.0.0.0/0", - "Ports": { - "First": 0, - "Last": 65535 - } - }, - { - "Net": "::/0", - "Ports": { - "First": 0, - "Last": 65535 - } - } - ], - "Caps": [] - }, - { - "IPProto": [6, 17, 1, 58], - "Srcs": ["100.83.200.69/32", "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": [{}] - } + "IPProto": [ + 6 ] - }, - { - "IPProto": [6], - "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": 443, - "Last": 443 - } - }, - { - "Net": "fd7a:115c:a1e0::b901:4a87/128", - "Ports": { - "First": 443, - "Last": 443 - } - } - ], - "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": { - "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": 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": [ { "SrcIPs": [ @@ -2359,406 +333,9 @@ } ] } - ], - "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": [ - { - "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": { - "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/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": { - "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/user-kris/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/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": { - "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/user-kris/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-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": [ @@ -2777,406 +354,9 @@ } ] } - ], - "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": [ - { - "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": { - "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/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": { - "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/user-mon/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/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": { - "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.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": { - "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 - } - } - } + ] }, "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": [ @@ -3195,400 +375,7 @@ } ] } - ], - "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": [ - { - "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": { - "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/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": { - "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/user1/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/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": { - "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/user1/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 - } - } - } + ] } } } diff --git a/hscontrol/policy/v2/testdata/grant_results/GRANT-G6.hujson b/hscontrol/policy/v2/testdata/grant_results/GRANT-G6.hujson index 01707dece..19ce42fd7 100644 --- a/hscontrol/policy/v2/testdata/grant_results/GRANT-G6.hujson +++ b/hscontrol/policy/v2/testdata/grant_results/GRANT-G6.hujson @@ -7,23 +7,37 @@ // Expected: Rules on 8 nodes { "test_id": "GRANT-G6", - "timestamp": "2026-02-23T00:36:19Z", - "propagation_wait_seconds": 15, "input": { - "policy_file": "/home/kradalby/acl-explore/grant_policies/grant_g6.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -32,22 +46,38 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "grants": [ { - "src": ["*"], - "dst": ["*"], + "src": [ + "*" + ], + "dst": [ + "*" + ], "app": { - "example.com/cap/test": [{}] + "example.com/cap/test": [ + {} + ] } }, { - "src": ["*"], - "dst": ["tag:server"], + "src": [ + "*" + ], + "dst": [ + "tag:server" + ], "app": { "example.com/cap/test": [ { @@ -58,102 +88,64 @@ } ] }, - "grants_section": [ - { - "src": ["*"], - "dst": ["*"], - "app": { - "example.com/cap/test": [{}] - } - }, - { - "src": ["*"], - "dst": ["tag:server"], - "app": { - "example.com/cap/test": [ - { - "special": true - } - ] - } - } - ], - "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"], + "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"], + "tags": [ + "tag:router" + ], "ipv4": "100.92.142.61", - "ipv6": "fd7a:115c:a1e0::3e37:8e3d", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] + "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"], + "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"], + "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"], + "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" @@ -162,10 +154,6 @@ }, "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": [ @@ -176,423 +164,21 @@ ], "CapGrant": [ { - "Dsts": ["100.85.66.106/32", "fd7a:115c:a1e0::7c37:426a/128"], + "Dsts": [ + "100.85.66.106/32", + "fd7a:115c:a1e0::7c37:426a/128" + ], "CapMap": { - "example.com/cap/test": [{}] + "example.com/cap/test": [ + {} + ] } } ] } - ], - "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.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": { - "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": { - "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/exit-node/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/exit-node/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.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": { - "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/exit-node/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/exit-node/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/exit-node/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": [{}] - } - } - } - } + ] }, "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": [ @@ -603,422 +189,21 @@ ], "CapGrant": [ { - "Dsts": ["100.92.142.61/32", "fd7a:115c:a1e0::3e37:8e3d/128"], + "Dsts": [ + "100.92.142.61/32", + "fd7a:115c:a1e0::3e37:8e3d/128" + ], "CapMap": { - "example.com/cap/test": [{}] + "example.com/cap/test": [ + {} + ] } } ] } - ], - "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.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": { - "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.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": { - "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/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": { - "example.com/cap/test": [{}] - } - } - }, - "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": { - "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/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": { - "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/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": { - "example.com/cap/test": [{}] - } - } - }, - "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": { - "example.com/cap/test": [{}] - } - } - } - } + ] }, "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": [ @@ -1029,423 +214,21 @@ ], "CapGrant": [ { - "Dsts": ["100.83.200.69/32", "fd7a:115c:a1e0::c537:c845/128"], + "Dsts": [ + "100.83.200.69/32", + "fd7a:115c:a1e0::c537:c845/128" + ], "CapMap": { - "example.com/cap/test": [{}] + "example.com/cap/test": [ + {} + ] } } ] } - ], - "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.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": { - "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-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": { - "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-client/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.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": { - "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-client/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-client/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-client/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": [{}] - } - } - } - } + ] }, "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": [ @@ -1456,423 +239,21 @@ ], "CapGrant": [ { - "Dsts": ["100.103.8.15/32", "fd7a:115c:a1e0::5b37:80f/128"], + "Dsts": [ + "100.103.8.15/32", + "fd7a:115c:a1e0::5b37:80f/128" + ], "CapMap": { - "example.com/cap/test": [{}] + "example.com/cap/test": [ + {} + ] } } ] } - ], - "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.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": { - "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-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": { - "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-prod/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.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": { - "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-prod/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-prod/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-prod/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": [{}] - } - } - } - } + ] }, "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": [ @@ -1883,9 +264,14 @@ ], "CapGrant": [ { - "Dsts": ["100.108.74.26/32", "fd7a:115c:a1e0::b901:4a87/128"], + "Dsts": [ + "100.108.74.26/32", + "fd7a:115c:a1e0::b901:4a87/128" + ], "CapMap": { - "example.com/cap/test": [{}] + "example.com/cap/test": [ + {} + ] } } ] @@ -1899,7 +285,10 @@ ], "CapGrant": [ { - "Dsts": ["100.108.74.26/32", "fd7a:115c:a1e0::b901:4a87/128"], + "Dsts": [ + "100.108.74.26/32", + "fd7a:115c:a1e0::b901:4a87/128" + ], "CapMap": { "example.com/cap/test": [ { @@ -1910,493 +299,9 @@ } ] } - ], - "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": "example.com/cap/test", - "Values": [{}] - }, - { - "Dst": "fd7a:115c:a1e0::b901:4a87/128", - "Cap": "example.com/cap/test", - "Values": [{}] - } - ] - }, - { - "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": "example.com/cap/test", - "Values": [ - { - "special": true - } - ] - }, - { - "Dst": "fd7a:115c:a1e0::b901:4a87/128", - "Cap": "example.com/cap/test", - "Values": [ - { - "special": true - } - ] - } - ] - } - ], - "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": [ - {}, - { - "special": true - } - ] - } - } - }, - "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": { - "example.com/cap/test": [ - {}, - { - "special": true - } - ] - } - } - }, - "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": [ - {}, - { - "special": true - } - ] - } - } - }, - "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": [ - {}, - { - "special": true - } - ] - } - } - }, - "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": [ - {}, - { - "special": true - } - ] - } - } - }, - "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": [ - {}, - { - "special": true - } - ] - } - } - }, - "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": [ - {}, - { - "special": true - } - ] - } - } - } - } + ] }, "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": [ @@ -2407,423 +312,21 @@ ], "CapGrant": [ { - "Dsts": ["100.110.121.96/32", "fd7a:115c:a1e0::1737:7960/128"], + "Dsts": [ + "100.110.121.96/32", + "fd7a:115c:a1e0::1737:7960/128" + ], "CapMap": { - "example.com/cap/test": [{}] + "example.com/cap/test": [ + {} + ] } } ] } - ], - "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.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": { - "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/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": { - "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/user-kris/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/user-kris/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.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": { - "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/user-kris/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/user-kris/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-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": [ @@ -2834,423 +337,21 @@ ], "CapGrant": [ { - "Dsts": ["100.103.90.82/32", "fd7a:115c:a1e0::9e37:5a52/128"], + "Dsts": [ + "100.103.90.82/32", + "fd7a:115c:a1e0::9e37:5a52/128" + ], "CapMap": { - "example.com/cap/test": [{}] + "example.com/cap/test": [ + {} + ] } } ] } - ], - "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.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": { - "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/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": { - "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/user-mon/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/user-mon/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.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": { - "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/user-mon/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.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": { - "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": [{}] - } - } - } - } + ] }, "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": [ @@ -3261,417 +362,19 @@ ], "CapGrant": [ { - "Dsts": ["100.90.199.68/32", "fd7a:115c:a1e0::2d01:c747/128"], + "Dsts": [ + "100.90.199.68/32", + "fd7a:115c:a1e0::2d01:c747/128" + ], "CapMap": { - "example.com/cap/test": [{}] + "example.com/cap/test": [ + {} + ] } } ] } - ], - "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.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": { - "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/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": { - "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/user1/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/user1/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.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": { - "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/user1/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/user1/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": [{}] - } - } - } - } + ] } } } diff --git a/hscontrol/policy/v2/testdata/grant_results/GRANT-H1.hujson b/hscontrol/policy/v2/testdata/grant_results/GRANT-H1.hujson index eb1c0941b..86977acdd 100644 --- a/hscontrol/policy/v2/testdata/grant_results/GRANT-H1.hujson +++ b/hscontrol/policy/v2/testdata/grant_results/GRANT-H1.hujson @@ -5,24 +5,38 @@ // Expected: Error (HTTP 400) — ip and app can not both be empty { "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: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"] + "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", @@ -31,23 +45,32 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "grants": [ { - "src": ["*"], - "dst": ["*"], + "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" } + "api_response_body": { + "message": "ip and app can not both be empty" + } } } diff --git a/hscontrol/policy/v2/testdata/grant_results/GRANT-H10.hujson b/hscontrol/policy/v2/testdata/grant_results/GRANT-H10.hujson index c60e285a2..5c768e006 100644 --- a/hscontrol/policy/v2/testdata/grant_results/GRANT-H10.hujson +++ b/hscontrol/policy/v2/testdata/grant_results/GRANT-H10.hujson @@ -5,24 +5,38 @@ // Expected: Error (HTTP 400) — "autogroup:self" not valid on the src side of a rule { "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: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"] + "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", @@ -31,25 +45,36 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "grants": [ { - "src": ["autogroup:self"], - "dst": ["*"], + "src": [ + "autogroup:self" + ], + "dst": [ + "*" + ], "app": { - "example.com/cap/test": [{}] + "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" } + "api_response_body": { + "message": "\"autogroup:self\" not valid on the src side of a rule" + } } } diff --git a/hscontrol/policy/v2/testdata/grant_results/GRANT-H2.hujson b/hscontrol/policy/v2/testdata/grant_results/GRANT-H2.hujson index 8b938c9d5..cac4d715d 100644 --- a/hscontrol/policy/v2/testdata/grant_results/GRANT-H2.hujson +++ b/hscontrol/policy/v2/testdata/grant_results/GRANT-H2.hujson @@ -5,23 +5,37 @@ // Expected: Rules on 8 nodes { "test_id": "GRANT-H2", - "timestamp": "2026-02-23T00:36:36Z", - "propagation_wait_seconds": 15, "input": { - "policy_file": "/home/kradalby/acl-explore/grant_policies/grant_h2.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -30,106 +44,89 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "grants": [ { - "src": ["*"], - "dst": ["*"], + "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"], + "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"], + "tags": [ + "tag:router" + ], "ipv4": "100.92.142.61", - "ipv6": "fd7a:115c:a1e0::3e37:8e3d", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] + "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"], + "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"], + "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"], + "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" @@ -138,10 +135,6 @@ }, "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": [ @@ -152,423 +145,19 @@ ], "CapGrant": [ { - "Dsts": ["100.85.66.106/32", "fd7a:115c:a1e0::7c37:426a/128"], + "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": [ - "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.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": { - "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": { - "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/exit-node/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/exit-node/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.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": { - "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/exit-node/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/exit-node/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/exit-node/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": [] - } - } - } - } + ] }, "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": [ @@ -579,422 +168,19 @@ ], "CapGrant": [ { - "Dsts": ["100.92.142.61/32", "fd7a:115c:a1e0::3e37:8e3d/128"], + "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": [ - "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.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": { - "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.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": { - "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/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": { - "example.com/cap/test": [] - } - } - }, - "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": { - "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/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": { - "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/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": { - "example.com/cap/test": [] - } - } - }, - "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": { - "example.com/cap/test": [] - } - } - } - } + ] }, "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": [ @@ -1005,423 +191,19 @@ ], "CapGrant": [ { - "Dsts": ["100.83.200.69/32", "fd7a:115c:a1e0::c537:c845/128"], + "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": [ - "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.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": { - "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-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": { - "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-client/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.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": { - "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-client/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-client/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-client/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": [] - } - } - } - } + ] }, "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": [ @@ -1432,423 +214,19 @@ ], "CapGrant": [ { - "Dsts": ["100.103.8.15/32", "fd7a:115c:a1e0::5b37:80f/128"], + "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": [ - "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.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": { - "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-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": { - "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-prod/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.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": { - "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-prod/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-prod/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-prod/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": [] - } - } - } - } + ] }, "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": [ @@ -1859,423 +237,19 @@ ], "CapGrant": [ { - "Dsts": ["100.108.74.26/32", "fd7a:115c:a1e0::b901:4a87/128"], + "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": [ - "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": "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", "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": { - "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": { - "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": [ { "SrcIPs": [ @@ -2286,423 +260,19 @@ ], "CapGrant": [ { - "Dsts": ["100.110.121.96/32", "fd7a:115c:a1e0::1737:7960/128"], + "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": [ - "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.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": { - "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/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": { - "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/user-kris/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/user-kris/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.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": { - "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/user-kris/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/user-kris/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-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": [ @@ -2713,423 +283,19 @@ ], "CapGrant": [ { - "Dsts": ["100.103.90.82/32", "fd7a:115c:a1e0::9e37:5a52/128"], + "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": [ - "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.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": { - "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/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": { - "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/user-mon/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/user-mon/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.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": { - "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/user-mon/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.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": { - "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": [] - } - } - } - } + ] }, "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": [ @@ -3140,417 +306,17 @@ ], "CapGrant": [ { - "Dsts": ["100.90.199.68/32", "fd7a:115c:a1e0::2d01:c747/128"], + "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": [ - "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.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": { - "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/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": { - "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/user1/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/user1/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.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": { - "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/user1/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/user1/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": [] - } - } - } - } + ] } } } diff --git a/hscontrol/policy/v2/testdata/grant_results/GRANT-H3.hujson b/hscontrol/policy/v2/testdata/grant_results/GRANT-H3.hujson index 48d3f2d38..00d3ad415 100644 --- a/hscontrol/policy/v2/testdata/grant_results/GRANT-H3.hujson +++ b/hscontrol/policy/v2/testdata/grant_results/GRANT-H3.hujson @@ -5,24 +5,38 @@ // Expected: Error (HTTP 400) — ip and app can not both be empty { "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: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"] + "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", @@ -31,23 +45,32 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "grants": [ { - "src": ["*"], - "dst": ["*"], + "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" } + "api_response_body": { + "message": "ip and app can not both be empty" + } } } diff --git a/hscontrol/policy/v2/testdata/grant_results/GRANT-H4.hujson b/hscontrol/policy/v2/testdata/grant_results/GRANT-H4.hujson index ec0afa57a..19c133b6c 100644 --- a/hscontrol/policy/v2/testdata/grant_results/GRANT-H4.hujson +++ b/hscontrol/policy/v2/testdata/grant_results/GRANT-H4.hujson @@ -5,23 +5,37 @@ // Expected: No filter rules on any node { "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: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"] + "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", @@ -30,106 +44,89 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "grants": [ { "src": [], - "dst": ["*"], + "dst": [ + "*" + ], "app": { - "example.com/cap/test": [{}] + "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"], + "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"], + "tags": [ + "tag:router" + ], "ipv4": "100.92.142.61", - "ipv6": "fd7a:115c:a1e0::3e37:8e3d", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] + "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"], + "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"], + "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"], + "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" @@ -138,364 +135,28 @@ }, "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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": null } } } diff --git a/hscontrol/policy/v2/testdata/grant_results/GRANT-H5.hujson b/hscontrol/policy/v2/testdata/grant_results/GRANT-H5.hujson index 4ea34273a..9447303be 100644 --- a/hscontrol/policy/v2/testdata/grant_results/GRANT-H5.hujson +++ b/hscontrol/policy/v2/testdata/grant_results/GRANT-H5.hujson @@ -5,23 +5,37 @@ // Expected: No filter rules on any node { "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: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"] + "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", @@ -30,106 +44,89 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "grants": [ { - "src": ["*"], + "src": [ + "*" + ], "dst": [], "app": { - "example.com/cap/test": [{}] + "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"], + "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"], + "tags": [ + "tag:router" + ], "ipv4": "100.92.142.61", - "ipv6": "fd7a:115c:a1e0::3e37:8e3d", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] + "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"], + "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"], + "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"], + "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" @@ -138,364 +135,28 @@ }, "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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": null } } } diff --git a/hscontrol/policy/v2/testdata/grant_results/GRANT-H6.hujson b/hscontrol/policy/v2/testdata/grant_results/GRANT-H6.hujson index 7d2049d71..2ae45d6d6 100644 --- a/hscontrol/policy/v2/testdata/grant_results/GRANT-H6.hujson +++ b/hscontrol/policy/v2/testdata/grant_results/GRANT-H6.hujson @@ -5,23 +5,37 @@ // Expected: Rules on 8 nodes { "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: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"] + "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", @@ -30,106 +44,91 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "grants": [ { - "src": ["group:empty"], - "dst": ["*"], + "src": [ + "group:empty" + ], + "dst": [ + "*" + ], "app": { - "example.com/cap/test": [{}] + "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"], + "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"], + "tags": [ + "tag:router" + ], "ipv4": "100.92.142.61", - "ipv6": "fd7a:115c:a1e0::3e37:8e3d", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] + "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"], + "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"], + "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"], + "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" @@ -138,612 +137,164 @@ }, "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"], + "Dsts": [ + "100.85.66.106/32", + "fd7a:115c:a1e0::7c37:426a/128" + ], "CapMap": { - "example.com/cap/test": [{}] + "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"], + "Dsts": [ + "100.92.142.61/32", + "fd7a:115c:a1e0::3e37:8e3d/128" + ], "CapMap": { - "example.com/cap/test": [{}] + "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"], + "Dsts": [ + "100.83.200.69/32", + "fd7a:115c:a1e0::c537:c845/128" + ], "CapMap": { - "example.com/cap/test": [{}] + "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"], + "Dsts": [ + "100.103.8.15/32", + "fd7a:115c:a1e0::5b37:80f/128" + ], "CapMap": { - "example.com/cap/test": [{}] + "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"], + "Dsts": [ + "100.108.74.26/32", + "fd7a:115c:a1e0::b901:4a87/128" + ], "CapMap": { - "example.com/cap/test": [{}] + "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"], + "Dsts": [ + "100.110.121.96/32", + "fd7a:115c:a1e0::1737:7960/128" + ], "CapMap": { - "example.com/cap/test": [{}] + "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"], + "Dsts": [ + "100.103.90.82/32", + "fd7a:115c:a1e0::9e37:5a52/128" + ], "CapMap": { - "example.com/cap/test": [{}] + "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"], + "Dsts": [ + "100.90.199.68/32", + "fd7a:115c:a1e0::2d01:c747/128" + ], "CapMap": { - "example.com/cap/test": [{}] + "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 - } - } + ] } } } diff --git a/hscontrol/policy/v2/testdata/grant_results/GRANT-H7.hujson b/hscontrol/policy/v2/testdata/grant_results/GRANT-H7.hujson index c34b843bd..b767863d8 100644 --- a/hscontrol/policy/v2/testdata/grant_results/GRANT-H7.hujson +++ b/hscontrol/policy/v2/testdata/grant_results/GRANT-H7.hujson @@ -5,24 +5,38 @@ // Expected: Error (HTTP 400) — src=tag not found: "tag:nonexistent" { "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: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"] + "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", @@ -31,25 +45,36 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "grants": [ { - "src": ["tag:nonexistent"], - "dst": ["*"], + "src": [ + "tag:nonexistent" + ], + "dst": [ + "*" + ], "app": { - "example.com/cap/test": [{}] + "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\"" } + "api_response_body": { + "message": "src=tag not found: \"tag:nonexistent\"" + } } } diff --git a/hscontrol/policy/v2/testdata/grant_results/GRANT-H8.hujson b/hscontrol/policy/v2/testdata/grant_results/GRANT-H8.hujson index 1cf7fec33..e56eb191f 100644 --- a/hscontrol/policy/v2/testdata/grant_results/GRANT-H8.hujson +++ b/hscontrol/policy/v2/testdata/grant_results/GRANT-H8.hujson @@ -5,24 +5,38 @@ // Expected: Error (HTTP 400) — ip and app can not both be empty { "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: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"] + "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", @@ -31,22 +45,31 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "grants": [ { - "src": ["*"], - "dst": ["*"] + "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" } + "api_response_body": { + "message": "ip and app can not both be empty" + } } } diff --git a/hscontrol/policy/v2/testdata/grant_results/GRANT-H9.hujson b/hscontrol/policy/v2/testdata/grant_results/GRANT-H9.hujson index 5f80bed9c..71c7aaecc 100644 --- a/hscontrol/policy/v2/testdata/grant_results/GRANT-H9.hujson +++ b/hscontrol/policy/v2/testdata/grant_results/GRANT-H9.hujson @@ -5,24 +5,38 @@ // Expected: Error (HTTP 400) — autogroup:self can only be used with users, groups, or supported autogroups { "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: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"] + "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", @@ -31,25 +45,36 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "grants": [ { - "src": ["*"], - "dst": ["autogroup:self"], + "src": [ + "*" + ], + "dst": [ + "autogroup:self" + ], "app": { - "example.com/cap/test": [{}] + "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" } + "api_response_body": { + "message": "autogroup:self can only be used with users, groups, or supported autogroups" + } } } diff --git a/hscontrol/policy/v2/testdata/grant_results/GRANT-I1.hujson b/hscontrol/policy/v2/testdata/grant_results/GRANT-I1.hujson index c1036a1c3..7856af78f 100644 --- a/hscontrol/policy/v2/testdata/grant_results/GRANT-I1.hujson +++ b/hscontrol/policy/v2/testdata/grant_results/GRANT-I1.hujson @@ -5,23 +5,37 @@ // Expected: Rules on subnet-router { "test_id": "GRANT-I1", - "timestamp": "2026-02-23T00:37:45Z", - "propagation_wait_seconds": 15, "input": { - "policy_file": "/home/kradalby/acl-explore/grant_policies/grant_i1.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -30,104 +44,92 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "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"], - "ip": ["*"] + "src": [ + "*" + ], + "dst": [ + "10.33.0.0/16" + ], + "via": [ + "tag:router" + ], + "ip": [ + "*" + ] } ] }, - "grants_section": [ - { - "src": ["*"], - "dst": ["10.33.0.0/16"], - "via": ["tag:router"], - "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"], + "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"], + "tags": [ + "tag:router" + ], "ipv4": "100.92.142.61", - "ipv6": "fd7a:115c:a1e0::3e37:8e3d", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] + "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"], + "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"], + "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"], + "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" @@ -136,101 +138,9 @@ }, "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 - } - } + "packet_filter_rules": 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": [ @@ -249,938 +159,25 @@ } ] } - ], - "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": [ - { - "Net": "10.33.0.0/16", - "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": { - "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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": null } } } diff --git a/hscontrol/policy/v2/testdata/grant_results/GRANT-I2.hujson b/hscontrol/policy/v2/testdata/grant_results/GRANT-I2.hujson index ab512719c..51ceb2d1f 100644 --- a/hscontrol/policy/v2/testdata/grant_results/GRANT-I2.hujson +++ b/hscontrol/policy/v2/testdata/grant_results/GRANT-I2.hujson @@ -5,23 +5,37 @@ // Expected: Rules on subnet-router { "test_id": "GRANT-I2", - "timestamp": "2026-02-23T00:38:02Z", - "propagation_wait_seconds": 15, "input": { - "policy_file": "/home/kradalby/acl-explore/grant_policies/grant_i2.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -30,104 +44,92 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "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"], - "ip": ["tcp:80"] + "src": [ + "*" + ], + "dst": [ + "10.33.0.0/16" + ], + "via": [ + "tag:router" + ], + "ip": [ + "tcp:80" + ] } ] }, - "grants_section": [ - { - "src": ["*"], - "dst": ["10.33.0.0/16"], - "via": ["tag:router"], - "ip": ["tcp:80"] - } - ], - "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"], + "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"], + "tags": [ + "tag:router" + ], "ipv4": "100.92.142.61", - "ipv6": "fd7a:115c:a1e0::3e37:8e3d", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] + "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"], + "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"], + "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"], + "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" @@ -136,101 +138,9 @@ }, "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 - } - } + "packet_filter_rules": 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": [ @@ -248,940 +158,29 @@ } } ], - "IPProto": [6] + "IPProto": [ + 6 + ] } - ], - "packet_filter_matches": [ - { - "IPProto": [6], - "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": [ - { - "Net": "10.33.0.0/16", - "Ports": { - "First": 80, - "Last": 80 - } - } - ], - "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": { - "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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": null } } } diff --git a/hscontrol/policy/v2/testdata/grant_results/GRANT-I3.hujson b/hscontrol/policy/v2/testdata/grant_results/GRANT-I3.hujson index 90fbc8a26..7623951a8 100644 --- a/hscontrol/policy/v2/testdata/grant_results/GRANT-I3.hujson +++ b/hscontrol/policy/v2/testdata/grant_results/GRANT-I3.hujson @@ -5,23 +5,37 @@ // Expected: Rules on subnet-router { "test_id": "GRANT-I3", - "timestamp": "2026-02-23T00:38:18Z", - "propagation_wait_seconds": 15, "input": { - "policy_file": "/home/kradalby/acl-explore/grant_policies/grant_i3.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -30,104 +44,93 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "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:exit"], - "ip": ["*"] + "src": [ + "*" + ], + "dst": [ + "10.33.0.0/16" + ], + "via": [ + "tag:router", + "tag:exit" + ], + "ip": [ + "*" + ] } ] }, - "grants_section": [ - { - "src": ["*"], - "dst": ["10.33.0.0/16"], - "via": ["tag:router", "tag:exit"], - "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"], + "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"], + "tags": [ + "tag:router" + ], "ipv4": "100.92.142.61", - "ipv6": "fd7a:115c:a1e0::3e37:8e3d", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] + "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"], + "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"], + "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"], + "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" @@ -136,101 +139,9 @@ }, "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 - } - } + "packet_filter_rules": 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": [ @@ -249,938 +160,25 @@ } ] } - ], - "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": [ - { - "Net": "10.33.0.0/16", - "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": { - "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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": null } } } diff --git a/hscontrol/policy/v2/testdata/grant_results/GRANT-I4.hujson b/hscontrol/policy/v2/testdata/grant_results/GRANT-I4.hujson index 3619e2d17..648bbeb7a 100644 --- a/hscontrol/policy/v2/testdata/grant_results/GRANT-I4.hujson +++ b/hscontrol/policy/v2/testdata/grant_results/GRANT-I4.hujson @@ -5,24 +5,38 @@ // Expected: Error (HTTP 400) — via can only be a tag { "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: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"] + "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", @@ -31,24 +45,37 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "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": ["*"] + "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" } + "api_response_body": { + "message": "via can only be a tag" + } } } diff --git a/hscontrol/policy/v2/testdata/grant_results/GRANT-J1.hujson b/hscontrol/policy/v2/testdata/grant_results/GRANT-J1.hujson index d7c5e3f95..eeedeed8c 100644 --- a/hscontrol/policy/v2/testdata/grant_results/GRANT-J1.hujson +++ b/hscontrol/policy/v2/testdata/grant_results/GRANT-J1.hujson @@ -5,23 +5,37 @@ // Expected: Rules on tagged-server { "test_id": "GRANT-J1", - "timestamp": "2026-02-23T00:38:36Z", - "propagation_wait_seconds": 15, "input": { - "policy_file": "/home/kradalby/acl-explore/grant_policies/grant_j1.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -30,102 +44,89 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "grants": [ { - "src": ["*"], - "dst": ["tag:server"], - "ip": ["tcp:22"] + "src": [ + "*" + ], + "dst": [ + "tag:server" + ], + "ip": [ + "tcp:22" + ] } ] }, - "grants_section": [ - { - "src": ["*"], - "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"], + "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"], + "tags": [ + "tag:router" + ], "ipv4": "100.92.142.61", - "ipv6": "fd7a:115c:a1e0::3e37:8e3d", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] + "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"], + "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"], + "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"], + "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" @@ -134,370 +135,18 @@ }, "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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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": [ @@ -522,672 +171,20 @@ } } ], - "IPProto": [6] + "IPProto": [ + 6 + ] } - ], - "packet_filter_matches": [ - { - "IPProto": [6], - "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": [ - { - "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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": null } } } diff --git a/hscontrol/policy/v2/testdata/grant_results/GRANT-J2.hujson b/hscontrol/policy/v2/testdata/grant_results/GRANT-J2.hujson index f8d75ec3b..8453309c7 100644 --- a/hscontrol/policy/v2/testdata/grant_results/GRANT-J2.hujson +++ b/hscontrol/policy/v2/testdata/grant_results/GRANT-J2.hujson @@ -5,23 +5,37 @@ // Expected: Rules on tagged-server { "test_id": "GRANT-J2", - "timestamp": "2026-02-23T00:38:53Z", - "propagation_wait_seconds": 15, "input": { - "policy_file": "/home/kradalby/acl-explore/grant_policies/grant_j2.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -30,102 +44,89 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "grants": [ { - "src": ["*"], - "dst": ["tag:server"], - "ip": ["udp:53"] + "src": [ + "*" + ], + "dst": [ + "tag:server" + ], + "ip": [ + "udp:53" + ] } ] }, - "grants_section": [ - { - "src": ["*"], - "dst": ["tag:server"], - "ip": ["udp:53"] - } - ], - "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"], + "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"], + "tags": [ + "tag:router" + ], "ipv4": "100.92.142.61", - "ipv6": "fd7a:115c:a1e0::3e37:8e3d", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] + "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"], + "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"], + "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"], + "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" @@ -134,370 +135,18 @@ }, "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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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": [ @@ -522,672 +171,20 @@ } } ], - "IPProto": [17] + "IPProto": [ + 17 + ] } - ], - "packet_filter_matches": [ - { - "IPProto": [17], - "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": [ - { - "Net": "100.108.74.26/32", - "Ports": { - "First": 53, - "Last": 53 - } - }, - { - "Net": "fd7a:115c:a1e0::b901:4a87/128", - "Ports": { - "First": 53, - "Last": 53 - } - } - ], - "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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": null } } } diff --git a/hscontrol/policy/v2/testdata/grant_results/GRANT-J3.hujson b/hscontrol/policy/v2/testdata/grant_results/GRANT-J3.hujson index a2f687efd..127fb63f5 100644 --- a/hscontrol/policy/v2/testdata/grant_results/GRANT-J3.hujson +++ b/hscontrol/policy/v2/testdata/grant_results/GRANT-J3.hujson @@ -5,23 +5,37 @@ // Expected: Rules on tagged-server { "test_id": "GRANT-J3", - "timestamp": "2026-02-23T00:39:09Z", - "propagation_wait_seconds": 15, "input": { - "policy_file": "/home/kradalby/acl-explore/grant_policies/grant_j3.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -30,102 +44,89 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "grants": [ { - "src": ["*"], - "dst": ["tag:server"], - "ip": ["*"] + "src": [ + "*" + ], + "dst": [ + "tag:server" + ], + "ip": [ + "*" + ] } ] }, - "grants_section": [ - { - "src": ["*"], - "dst": ["tag:server"], - "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"], + "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"], + "tags": [ + "tag:router" + ], "ipv4": "100.92.142.61", - "ipv6": "fd7a:115c:a1e0::3e37:8e3d", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] + "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"], + "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"], + "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"], + "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" @@ -134,370 +135,18 @@ }, "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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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": [ @@ -523,670 +172,16 @@ } ] } - ], - "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": [ - { - "Net": "100.108.74.26/32", - "Ports": { - "First": 0, - "Last": 65535 - } - }, - { - "Net": "fd7a:115c:a1e0::b901:4a87/128", - "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": { - "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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": null } } } diff --git a/hscontrol/policy/v2/testdata/grant_results/GRANT-J4.hujson b/hscontrol/policy/v2/testdata/grant_results/GRANT-J4.hujson index 024ae19b5..73eea49c0 100644 --- a/hscontrol/policy/v2/testdata/grant_results/GRANT-J4.hujson +++ b/hscontrol/policy/v2/testdata/grant_results/GRANT-J4.hujson @@ -5,23 +5,37 @@ // Expected: Rules on tagged-server { "test_id": "GRANT-J4", - "timestamp": "2026-02-23T00:39:26Z", - "propagation_wait_seconds": 15, "input": { - "policy_file": "/home/kradalby/acl-explore/grant_policies/grant_j4.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -30,102 +44,91 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "grants": [ { - "src": ["*"], - "dst": ["tag:server"], - "ip": ["tcp:80", "udp:53", "tcp:443"] + "src": [ + "*" + ], + "dst": [ + "tag:server" + ], + "ip": [ + "tcp:80", + "udp:53", + "tcp:443" + ] } ] }, - "grants_section": [ - { - "src": ["*"], - "dst": ["tag:server"], - "ip": ["tcp:80", "udp:53", "tcp:443"] - } - ], - "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"], + "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"], + "tags": [ + "tag:router" + ], "ipv4": "100.92.142.61", - "ipv6": "fd7a:115c:a1e0::3e37:8e3d", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] + "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"], + "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"], + "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"], + "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" @@ -134,370 +137,18 @@ }, "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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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": [ @@ -536,7 +187,9 @@ } } ], - "IPProto": [6] + "IPProto": [ + 6 + ] }, { "SrcIPs": [ @@ -561,724 +214,20 @@ } } ], - "IPProto": [17] + "IPProto": [ + 17 + ] } - ], - "packet_filter_matches": [ - { - "IPProto": [6], - "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": [ - { - "Net": "100.108.74.26/32", - "Ports": { - "First": 80, - "Last": 80 - } - }, - { - "Net": "100.108.74.26/32", - "Ports": { - "First": 443, - "Last": 443 - } - }, - { - "Net": "fd7a:115c:a1e0::b901:4a87/128", - "Ports": { - "First": 80, - "Last": 80 - } - }, - { - "Net": "fd7a:115c:a1e0::b901:4a87/128", - "Ports": { - "First": 443, - "Last": 443 - } - } - ], - "Caps": [] - }, - { - "IPProto": [17], - "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": [ - { - "Net": "100.108.74.26/32", - "Ports": { - "First": 53, - "Last": 53 - } - }, - { - "Net": "fd7a:115c:a1e0::b901:4a87/128", - "Ports": { - "First": 53, - "Last": 53 - } - } - ], - "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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": null } } } diff --git a/hscontrol/policy/v2/testdata/grant_results/GRANT-J5.hujson b/hscontrol/policy/v2/testdata/grant_results/GRANT-J5.hujson index 9df3cea24..cbdc4c8e5 100644 --- a/hscontrol/policy/v2/testdata/grant_results/GRANT-J5.hujson +++ b/hscontrol/policy/v2/testdata/grant_results/GRANT-J5.hujson @@ -5,23 +5,37 @@ // Expected: Rules on tagged-server { "test_id": "GRANT-J5", - "timestamp": "2026-02-23T00:39:43Z", - "propagation_wait_seconds": 15, "input": { - "policy_file": "/home/kradalby/acl-explore/grant_policies/grant_j5.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -30,102 +44,89 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "grants": [ { - "src": ["*"], - "dst": ["tag:server"], - "ip": ["tcp:80-443"] + "src": [ + "*" + ], + "dst": [ + "tag:server" + ], + "ip": [ + "tcp:80-443" + ] } ] }, - "grants_section": [ - { - "src": ["*"], - "dst": ["tag:server"], - "ip": ["tcp:80-443"] - } - ], - "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"], + "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"], + "tags": [ + "tag:router" + ], "ipv4": "100.92.142.61", - "ipv6": "fd7a:115c:a1e0::3e37:8e3d", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] + "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"], + "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"], + "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"], + "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" @@ -134,370 +135,18 @@ }, "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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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": [ @@ -522,672 +171,20 @@ } } ], - "IPProto": [6] + "IPProto": [ + 6 + ] } - ], - "packet_filter_matches": [ - { - "IPProto": [6], - "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": [ - { - "Net": "100.108.74.26/32", - "Ports": { - "First": 80, - "Last": 443 - } - }, - { - "Net": "fd7a:115c:a1e0::b901:4a87/128", - "Ports": { - "First": 80, - "Last": 443 - } - } - ], - "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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": null } } } diff --git a/hscontrol/policy/v2/testdata/grant_results/GRANT-J6.hujson b/hscontrol/policy/v2/testdata/grant_results/GRANT-J6.hujson index 4f4c2ea39..ca1926e83 100644 --- a/hscontrol/policy/v2/testdata/grant_results/GRANT-J6.hujson +++ b/hscontrol/policy/v2/testdata/grant_results/GRANT-J6.hujson @@ -5,23 +5,37 @@ // Expected: Rules on tagged-server { "test_id": "GRANT-J6", - "timestamp": "2026-02-23T00:40:00Z", - "propagation_wait_seconds": 15, "input": { - "policy_file": "/home/kradalby/acl-explore/grant_policies/grant_j6.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -30,102 +44,89 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "grants": [ { - "src": ["*"], - "dst": ["tag:server"], - "ip": ["80"] + "src": [ + "*" + ], + "dst": [ + "tag:server" + ], + "ip": [ + "80" + ] } ] }, - "grants_section": [ - { - "src": ["*"], - "dst": ["tag:server"], - "ip": ["80"] - } - ], - "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"], + "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"], + "tags": [ + "tag:router" + ], "ipv4": "100.92.142.61", - "ipv6": "fd7a:115c:a1e0::3e37:8e3d", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] + "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"], + "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"], + "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"], + "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" @@ -134,370 +135,18 @@ }, "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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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": [ @@ -523,670 +172,16 @@ } ] } - ], - "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": [ - { - "Net": "100.108.74.26/32", - "Ports": { - "First": 80, - "Last": 80 - } - }, - { - "Net": "fd7a:115c:a1e0::b901:4a87/128", - "Ports": { - "First": 80, - "Last": 80 - } - } - ], - "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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": null } } } diff --git a/hscontrol/policy/v2/testdata/grant_results/GRANT-J7.hujson b/hscontrol/policy/v2/testdata/grant_results/GRANT-J7.hujson index 4c4ffbec1..fafddfaae 100644 --- a/hscontrol/policy/v2/testdata/grant_results/GRANT-J7.hujson +++ b/hscontrol/policy/v2/testdata/grant_results/GRANT-J7.hujson @@ -5,24 +5,38 @@ // Expected: Error (HTTP 400) — port range "icmp": invalid first integer { "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: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"] + "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", @@ -31,23 +45,34 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "grants": [ { - "src": ["*"], - "dst": ["tag:server"], - "ip": ["icmp"] + "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" } + "api_response_body": { + "message": "port range \"icmp\": invalid first integer" + } } } diff --git a/hscontrol/policy/v2/testdata/grant_results/GRANT-K1.hujson b/hscontrol/policy/v2/testdata/grant_results/GRANT-K1.hujson index c96adb38f..c1f93ad10 100644 --- a/hscontrol/policy/v2/testdata/grant_results/GRANT-K1.hujson +++ b/hscontrol/policy/v2/testdata/grant_results/GRANT-K1.hujson @@ -6,23 +6,37 @@ // Expected: Rules on 8 nodes { "test_id": "GRANT-K1", - "timestamp": "2026-02-23T02:53:51Z", - "propagation_wait_seconds": 15, "input": { - "policy_file": "grant_policies/grant_k1.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -31,96 +45,87 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "acls": [ { "action": "accept", - "src": ["*"], - "dst": ["*:*"] + "src": [ + "*" + ], + "dst": [ + "*:*" + ] } ] }, - "grants_section": null, - "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"], + "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"], + "tags": [ + "tag:router" + ], "ipv4": "100.92.142.61", - "ipv6": "fd7a:115c:a1e0::3e37:8e3d", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] + "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"], + "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"], + "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"], + "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" @@ -129,10 +134,6 @@ }, "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": [ @@ -151,406 +152,9 @@ } ] } - ], - "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": [ - { - "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": { - "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": { - "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/exit-node/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/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": { - "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/exit-node/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/exit-node/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 - } - } - } + ] }, "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": [ @@ -569,405 +173,9 @@ } ] } - ], - "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": [ - { - "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": { - "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": [ { "SrcIPs": [ @@ -986,406 +194,9 @@ } ] } - ], - "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": [ - { - "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": { - "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-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": { - "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/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": { - "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-client/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-client/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-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": [ @@ -1404,406 +215,9 @@ } ] } - ], - "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": [ - { - "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": { - "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-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": { - "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.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": { - "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-prod/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-prod/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-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": [ @@ -1822,406 +236,9 @@ } ] } - ], - "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": [ - { - "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": { - "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": [ { "SrcIPs": [ @@ -2240,406 +257,9 @@ } ] } - ], - "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": [ - { - "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": { - "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/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": { - "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/user-kris/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/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": { - "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/user-kris/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-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": [ @@ -2658,406 +278,9 @@ } ] } - ], - "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": [ - { - "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": { - "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/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": { - "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/user-mon/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/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": { - "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.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": { - "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 - } - } - } + ] }, "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": [ @@ -3076,400 +299,7 @@ } ] } - ], - "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": [ - { - "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": { - "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/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": { - "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/user1/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/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": { - "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/user1/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 - } - } - } + ] } } } diff --git a/hscontrol/policy/v2/testdata/grant_results/GRANT-K10.hujson b/hscontrol/policy/v2/testdata/grant_results/GRANT-K10.hujson index 0deb2029e..ed5fbaece 100644 --- a/hscontrol/policy/v2/testdata/grant_results/GRANT-K10.hujson +++ b/hscontrol/policy/v2/testdata/grant_results/GRANT-K10.hujson @@ -5,24 +5,38 @@ // Expected: Error (HTTP 400) — capability name must not be in the tailscale.com domain { "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: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"] + "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", @@ -31,25 +45,36 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "grants": [ { - "src": ["*"], - "dst": ["*"], + "src": [ + "*" + ], + "dst": [ + "*" + ], "app": { - "tailscale.com/cap/funnel": [{}] + "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" } + "api_response_body": { + "message": "capability name must not be in the tailscale.com domain" + } } } diff --git a/hscontrol/policy/v2/testdata/grant_results/GRANT-K11.hujson b/hscontrol/policy/v2/testdata/grant_results/GRANT-K11.hujson index e41b21eed..c247e33a0 100644 --- a/hscontrol/policy/v2/testdata/grant_results/GRANT-K11.hujson +++ b/hscontrol/policy/v2/testdata/grant_results/GRANT-K11.hujson @@ -5,23 +5,37 @@ // Expected: Rules on 8 nodes { "test_id": "GRANT-K11", - "timestamp": "2026-02-23T02:55:39Z", - "propagation_wait_seconds": 15, "input": { - "policy_file": "grant_policies/grant_k11.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -30,28 +44,46 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "grants": [ { - "src": ["*"], - "dst": ["*"], + "src": [ + "*" + ], + "dst": [ + "*" + ], "app": { - "tailscale.com/cap/webui": [{}], - "tailscale.com/cap/relay": [{}], + "tailscale.com/cap/webui": [ + {} + ], + "tailscale.com/cap/relay": [ + {} + ], "tailscale.com/cap/kubernetes": [ { "impersonate": { - "groups": ["system:masters"] + "groups": [ + "system:masters" + ] } } ], "tailscale.com/cap/drive": [ { - "shares": ["*"], + "shares": [ + "*" + ], "access": "rw" } ] @@ -59,105 +91,64 @@ } ] }, - "grants_section": [ - { - "src": ["*"], - "dst": ["*"], - "app": { - "tailscale.com/cap/webui": [{}], - "tailscale.com/cap/relay": [{}], - "tailscale.com/cap/kubernetes": [ - { - "impersonate": { - "groups": ["system:masters"] - } - } - ], - "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"], + "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"], + "tags": [ + "tag:router" + ], "ipv4": "100.92.142.61", - "ipv6": "fd7a:115c:a1e0::3e37:8e3d", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] + "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"], + "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"], + "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"], + "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" @@ -166,10 +157,6 @@ }, "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": [ @@ -180,23 +167,34 @@ ], "CapGrant": [ { - "Dsts": ["100.85.66.106/32", "fd7a:115c:a1e0::7c37:426a/128"], + "Dsts": [ + "100.85.66.106/32", + "fd7a:115c:a1e0::7c37:426a/128" + ], "CapMap": { "tailscale.com/cap/drive": [ { - "shares": ["*"], + "shares": [ + "*" + ], "access": "rw" } ], "tailscale.com/cap/kubernetes": [ { "impersonate": { - "groups": ["system:masters"] + "groups": [ + "system:masters" + ] } } ], - "tailscale.com/cap/relay": [{}], - "tailscale.com/cap/webui": [{}] + "tailscale.com/cap/relay": [ + {} + ], + "tailscale.com/cap/webui": [ + {} + ] } } ] @@ -210,7 +208,10 @@ ], "CapGrant": [ { - "Dsts": ["100.85.66.106/32", "fd7a:115c:a1e0::7c37:426a/128"], + "Dsts": [ + "100.85.66.106/32", + "fd7a:115c:a1e0::7c37:426a/128" + ], "CapMap": { "tailscale.com/cap/drive-sharer": null } @@ -226,655 +227,19 @@ ], "CapGrant": [ { - "Dsts": ["100.85.66.106/32", "fd7a:115c:a1e0::7c37:426a/128"], + "Dsts": [ + "100.85.66.106/32", + "fd7a:115c:a1e0::7c37:426a/128" + ], "CapMap": { "tailscale.com/cap/relay-target": null } } ] } - ], - "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.85.66.106/32", - "Cap": "tailscale.com/cap/drive", - "Values": [ - { - "shares": ["*"], - "access": "rw" - } - ] - }, - { - "Dst": "100.85.66.106/32", - "Cap": "tailscale.com/cap/kubernetes", - "Values": [ - { - "impersonate": { - "groups": ["system:masters"] - } - } - ] - }, - { - "Dst": "100.85.66.106/32", - "Cap": "tailscale.com/cap/relay", - "Values": [{}] - }, - { - "Dst": "100.85.66.106/32", - "Cap": "tailscale.com/cap/webui", - "Values": [{}] - }, - { - "Dst": "fd7a:115c:a1e0::7c37:426a/128", - "Cap": "tailscale.com/cap/relay", - "Values": [{}] - }, - { - "Dst": "fd7a:115c:a1e0::7c37:426a/128", - "Cap": "tailscale.com/cap/webui", - "Values": [{}] - }, - { - "Dst": "fd7a:115c:a1e0::7c37:426a/128", - "Cap": "tailscale.com/cap/drive", - "Values": [ - { - "shares": ["*"], - "access": "rw" - } - ] - }, - { - "Dst": "fd7a:115c:a1e0::7c37:426a/128", - "Cap": "tailscale.com/cap/kubernetes", - "Values": [ - { - "impersonate": { - "groups": ["system:masters"] - } - } - ] - } - ] - }, - { - "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.85.66.106/32", - "Cap": "tailscale.com/cap/drive-sharer", - "Values": null - }, - { - "Dst": "fd7a:115c:a1e0::7c37:426a/128", - "Cap": "tailscale.com/cap/drive-sharer", - "Values": null - } - ] - }, - { - "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.85.66.106/32", - "Cap": "tailscale.com/cap/relay-target", - "Values": null - }, - { - "Dst": "fd7a:115c:a1e0::7c37:426a/128", - "Cap": "tailscale.com/cap/relay-target", - "Values": null - } - ] - } - ], - "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": { - "tailscale.com/cap/drive": [ - { - "shares": ["*"], - "access": "rw" - } - ], - "tailscale.com/cap/drive-sharer": null, - "tailscale.com/cap/kubernetes": [ - { - "impersonate": { - "groups": ["system:masters"] - } - } - ], - "tailscale.com/cap/relay": [{}], - "tailscale.com/cap/relay-target": null, - "tailscale.com/cap/webui": [{}] - } - } - }, - "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": { - "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/drive": [ - { - "shares": ["*"], - "access": "rw" - } - ], - "tailscale.com/cap/drive-sharer": null, - "tailscale.com/cap/kubernetes": [ - { - "impersonate": { - "groups": ["system:masters"] - } - } - ], - "tailscale.com/cap/relay": [{}], - "tailscale.com/cap/relay-target": null, - "tailscale.com/cap/webui": [{}] - } - } - }, - "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": { - "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": { - "tailscale.com/cap/drive": [ - { - "shares": ["*"], - "access": "rw" - } - ], - "tailscale.com/cap/drive-sharer": null, - "tailscale.com/cap/kubernetes": [ - { - "impersonate": { - "groups": ["system:masters"] - } - } - ], - "tailscale.com/cap/relay": [{}], - "tailscale.com/cap/relay-target": null, - "tailscale.com/cap/webui": [{}] - } - } - }, - "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": { - "tailscale.com/cap/drive": [ - { - "shares": ["*"], - "access": "rw" - } - ], - "tailscale.com/cap/drive-sharer": null, - "tailscale.com/cap/kubernetes": [ - { - "impersonate": { - "groups": ["system:masters"] - } - } - ], - "tailscale.com/cap/relay": [{}], - "tailscale.com/cap/relay-target": null, - "tailscale.com/cap/webui": [{}] - } - } - }, - "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": { - "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/drive": [ - { - "shares": ["*"], - "access": "rw" - } - ], - "tailscale.com/cap/drive-sharer": null, - "tailscale.com/cap/kubernetes": [ - { - "impersonate": { - "groups": ["system:masters"] - } - } - ], - "tailscale.com/cap/relay": [{}], - "tailscale.com/cap/relay-target": null, - "tailscale.com/cap/webui": [{}] - } - } - }, - "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": { - "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/drive": [ - { - "shares": ["*"], - "access": "rw" - } - ], - "tailscale.com/cap/drive-sharer": null, - "tailscale.com/cap/kubernetes": [ - { - "impersonate": { - "groups": ["system:masters"] - } - } - ], - "tailscale.com/cap/relay": [{}], - "tailscale.com/cap/relay-target": null, - "tailscale.com/cap/webui": [{}] - } - } - }, - "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": { - "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/drive": [ - { - "shares": ["*"], - "access": "rw" - } - ], - "tailscale.com/cap/drive-sharer": null, - "tailscale.com/cap/kubernetes": [ - { - "impersonate": { - "groups": ["system:masters"] - } - } - ], - "tailscale.com/cap/relay": [{}], - "tailscale.com/cap/relay-target": null, - "tailscale.com/cap/webui": [{}] - } - } - } - } + ] }, "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": [ @@ -885,23 +250,34 @@ ], "CapGrant": [ { - "Dsts": ["100.92.142.61/32", "fd7a:115c:a1e0::3e37:8e3d/128"], + "Dsts": [ + "100.92.142.61/32", + "fd7a:115c:a1e0::3e37:8e3d/128" + ], "CapMap": { "tailscale.com/cap/drive": [ { - "shares": ["*"], + "shares": [ + "*" + ], "access": "rw" } ], "tailscale.com/cap/kubernetes": [ { "impersonate": { - "groups": ["system:masters"] + "groups": [ + "system:masters" + ] } } ], - "tailscale.com/cap/relay": [{}], - "tailscale.com/cap/webui": [{}] + "tailscale.com/cap/relay": [ + {} + ], + "tailscale.com/cap/webui": [ + {} + ] } } ] @@ -915,7 +291,10 @@ ], "CapGrant": [ { - "Dsts": ["100.92.142.61/32", "fd7a:115c:a1e0::3e37:8e3d/128"], + "Dsts": [ + "100.92.142.61/32", + "fd7a:115c:a1e0::3e37:8e3d/128" + ], "CapMap": { "tailscale.com/cap/drive-sharer": null } @@ -931,654 +310,19 @@ ], "CapGrant": [ { - "Dsts": ["100.92.142.61/32", "fd7a:115c:a1e0::3e37:8e3d/128"], + "Dsts": [ + "100.92.142.61/32", + "fd7a:115c:a1e0::3e37:8e3d/128" + ], "CapMap": { "tailscale.com/cap/relay-target": null } } ] } - ], - "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.92.142.61/32", - "Cap": "tailscale.com/cap/drive", - "Values": [ - { - "shares": ["*"], - "access": "rw" - } - ] - }, - { - "Dst": "100.92.142.61/32", - "Cap": "tailscale.com/cap/kubernetes", - "Values": [ - { - "impersonate": { - "groups": ["system:masters"] - } - } - ] - }, - { - "Dst": "100.92.142.61/32", - "Cap": "tailscale.com/cap/relay", - "Values": [{}] - }, - { - "Dst": "100.92.142.61/32", - "Cap": "tailscale.com/cap/webui", - "Values": [{}] - }, - { - "Dst": "fd7a:115c:a1e0::3e37:8e3d/128", - "Cap": "tailscale.com/cap/webui", - "Values": [{}] - }, - { - "Dst": "fd7a:115c:a1e0::3e37:8e3d/128", - "Cap": "tailscale.com/cap/drive", - "Values": [ - { - "shares": ["*"], - "access": "rw" - } - ] - }, - { - "Dst": "fd7a:115c:a1e0::3e37:8e3d/128", - "Cap": "tailscale.com/cap/kubernetes", - "Values": [ - { - "impersonate": { - "groups": ["system:masters"] - } - } - ] - }, - { - "Dst": "fd7a:115c:a1e0::3e37:8e3d/128", - "Cap": "tailscale.com/cap/relay", - "Values": [{}] - } - ] - }, - { - "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.92.142.61/32", - "Cap": "tailscale.com/cap/drive-sharer", - "Values": null - }, - { - "Dst": "fd7a:115c:a1e0::3e37:8e3d/128", - "Cap": "tailscale.com/cap/drive-sharer", - "Values": null - } - ] - }, - { - "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.92.142.61/32", - "Cap": "tailscale.com/cap/relay-target", - "Values": null - }, - { - "Dst": "fd7a:115c:a1e0::3e37:8e3d/128", - "Cap": "tailscale.com/cap/relay-target", - "Values": null - } - ] - } - ], - "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": { - "tailscale.com/cap/drive": [ - { - "shares": ["*"], - "access": "rw" - } - ], - "tailscale.com/cap/drive-sharer": null, - "tailscale.com/cap/kubernetes": [ - { - "impersonate": { - "groups": ["system:masters"] - } - } - ], - "tailscale.com/cap/relay": [{}], - "tailscale.com/cap/relay-target": null, - "tailscale.com/cap/webui": [{}] - } - } - }, - "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": { - "tailscale.com/cap/drive": [ - { - "shares": ["*"], - "access": "rw" - } - ], - "tailscale.com/cap/drive-sharer": null, - "tailscale.com/cap/kubernetes": [ - { - "impersonate": { - "groups": ["system:masters"] - } - } - ], - "tailscale.com/cap/relay": [{}], - "tailscale.com/cap/relay-target": null, - "tailscale.com/cap/webui": [{}] - } - } - }, - "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": { - "tailscale.com/cap/drive": [ - { - "shares": ["*"], - "access": "rw" - } - ], - "tailscale.com/cap/drive-sharer": null, - "tailscale.com/cap/kubernetes": [ - { - "impersonate": { - "groups": ["system:masters"] - } - } - ], - "tailscale.com/cap/relay": [{}], - "tailscale.com/cap/relay-target": null, - "tailscale.com/cap/webui": [{}] - } - } - }, - "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": { - "tailscale.com/cap/drive": [ - { - "shares": ["*"], - "access": "rw" - } - ], - "tailscale.com/cap/drive-sharer": null, - "tailscale.com/cap/kubernetes": [ - { - "impersonate": { - "groups": ["system:masters"] - } - } - ], - "tailscale.com/cap/relay": [{}], - "tailscale.com/cap/relay-target": null, - "tailscale.com/cap/webui": [{}] - } - } - }, - "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": { - "tailscale.com/cap/drive": [ - { - "shares": ["*"], - "access": "rw" - } - ], - "tailscale.com/cap/drive-sharer": null, - "tailscale.com/cap/kubernetes": [ - { - "impersonate": { - "groups": ["system:masters"] - } - } - ], - "tailscale.com/cap/relay": [{}], - "tailscale.com/cap/relay-target": null, - "tailscale.com/cap/webui": [{}] - } - } - }, - "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": { - "tailscale.com/cap/drive": [ - { - "shares": ["*"], - "access": "rw" - } - ], - "tailscale.com/cap/drive-sharer": null, - "tailscale.com/cap/kubernetes": [ - { - "impersonate": { - "groups": ["system:masters"] - } - } - ], - "tailscale.com/cap/relay": [{}], - "tailscale.com/cap/relay-target": null, - "tailscale.com/cap/webui": [{}] - } - } - }, - "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": { - "tailscale.com/cap/drive": [ - { - "shares": ["*"], - "access": "rw" - } - ], - "tailscale.com/cap/drive-sharer": null, - "tailscale.com/cap/kubernetes": [ - { - "impersonate": { - "groups": ["system:masters"] - } - } - ], - "tailscale.com/cap/relay": [{}], - "tailscale.com/cap/relay-target": null, - "tailscale.com/cap/webui": [{}] - } - } - } - } + ] }, "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": [ @@ -1589,23 +333,34 @@ ], "CapGrant": [ { - "Dsts": ["100.83.200.69/32", "fd7a:115c:a1e0::c537:c845/128"], + "Dsts": [ + "100.83.200.69/32", + "fd7a:115c:a1e0::c537:c845/128" + ], "CapMap": { "tailscale.com/cap/drive": [ { - "shares": ["*"], + "shares": [ + "*" + ], "access": "rw" } ], "tailscale.com/cap/kubernetes": [ { "impersonate": { - "groups": ["system:masters"] + "groups": [ + "system:masters" + ] } } ], - "tailscale.com/cap/relay": [{}], - "tailscale.com/cap/webui": [{}] + "tailscale.com/cap/relay": [ + {} + ], + "tailscale.com/cap/webui": [ + {} + ] } } ] @@ -1619,7 +374,10 @@ ], "CapGrant": [ { - "Dsts": ["100.83.200.69/32", "fd7a:115c:a1e0::c537:c845/128"], + "Dsts": [ + "100.83.200.69/32", + "fd7a:115c:a1e0::c537:c845/128" + ], "CapMap": { "tailscale.com/cap/drive-sharer": null } @@ -1635,655 +393,19 @@ ], "CapGrant": [ { - "Dsts": ["100.83.200.69/32", "fd7a:115c:a1e0::c537:c845/128"], + "Dsts": [ + "100.83.200.69/32", + "fd7a:115c:a1e0::c537:c845/128" + ], "CapMap": { "tailscale.com/cap/relay-target": null } } ] } - ], - "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.83.200.69/32", - "Cap": "tailscale.com/cap/drive", - "Values": [ - { - "shares": ["*"], - "access": "rw" - } - ] - }, - { - "Dst": "100.83.200.69/32", - "Cap": "tailscale.com/cap/kubernetes", - "Values": [ - { - "impersonate": { - "groups": ["system:masters"] - } - } - ] - }, - { - "Dst": "100.83.200.69/32", - "Cap": "tailscale.com/cap/relay", - "Values": [{}] - }, - { - "Dst": "100.83.200.69/32", - "Cap": "tailscale.com/cap/webui", - "Values": [{}] - }, - { - "Dst": "fd7a:115c:a1e0::c537:c845/128", - "Cap": "tailscale.com/cap/webui", - "Values": [{}] - }, - { - "Dst": "fd7a:115c:a1e0::c537:c845/128", - "Cap": "tailscale.com/cap/drive", - "Values": [ - { - "shares": ["*"], - "access": "rw" - } - ] - }, - { - "Dst": "fd7a:115c:a1e0::c537:c845/128", - "Cap": "tailscale.com/cap/kubernetes", - "Values": [ - { - "impersonate": { - "groups": ["system:masters"] - } - } - ] - }, - { - "Dst": "fd7a:115c:a1e0::c537:c845/128", - "Cap": "tailscale.com/cap/relay", - "Values": [{}] - } - ] - }, - { - "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.83.200.69/32", - "Cap": "tailscale.com/cap/drive-sharer", - "Values": null - }, - { - "Dst": "fd7a:115c:a1e0::c537:c845/128", - "Cap": "tailscale.com/cap/drive-sharer", - "Values": null - } - ] - }, - { - "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.83.200.69/32", - "Cap": "tailscale.com/cap/relay-target", - "Values": null - }, - { - "Dst": "fd7a:115c:a1e0::c537:c845/128", - "Cap": "tailscale.com/cap/relay-target", - "Values": null - } - ] - } - ], - "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": { - "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/drive": [ - { - "shares": ["*"], - "access": "rw" - } - ], - "tailscale.com/cap/drive-sharer": null, - "tailscale.com/cap/kubernetes": [ - { - "impersonate": { - "groups": ["system:masters"] - } - } - ], - "tailscale.com/cap/relay": [{}], - "tailscale.com/cap/relay-target": null, - "tailscale.com/cap/webui": [{}] - } - } - }, - "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": { - "tailscale.com/cap/drive": [ - { - "shares": ["*"], - "access": "rw" - } - ], - "tailscale.com/cap/drive-sharer": null, - "tailscale.com/cap/kubernetes": [ - { - "impersonate": { - "groups": ["system:masters"] - } - } - ], - "tailscale.com/cap/relay": [{}], - "tailscale.com/cap/relay-target": null, - "tailscale.com/cap/webui": [{}] - } - } - }, - "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": { - "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": { - "tailscale.com/cap/drive": [ - { - "shares": ["*"], - "access": "rw" - } - ], - "tailscale.com/cap/drive-sharer": null, - "tailscale.com/cap/kubernetes": [ - { - "impersonate": { - "groups": ["system:masters"] - } - } - ], - "tailscale.com/cap/relay": [{}], - "tailscale.com/cap/relay-target": null, - "tailscale.com/cap/webui": [{}] - } - } - }, - "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": { - "tailscale.com/cap/drive": [ - { - "shares": ["*"], - "access": "rw" - } - ], - "tailscale.com/cap/drive-sharer": null, - "tailscale.com/cap/kubernetes": [ - { - "impersonate": { - "groups": ["system:masters"] - } - } - ], - "tailscale.com/cap/relay": [{}], - "tailscale.com/cap/relay-target": null, - "tailscale.com/cap/webui": [{}] - } - } - }, - "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": { - "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/drive": [ - { - "shares": ["*"], - "access": "rw" - } - ], - "tailscale.com/cap/drive-sharer": null, - "tailscale.com/cap/kubernetes": [ - { - "impersonate": { - "groups": ["system:masters"] - } - } - ], - "tailscale.com/cap/relay": [{}], - "tailscale.com/cap/relay-target": null, - "tailscale.com/cap/webui": [{}] - } - } - }, - "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": { - "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/drive": [ - { - "shares": ["*"], - "access": "rw" - } - ], - "tailscale.com/cap/drive-sharer": null, - "tailscale.com/cap/kubernetes": [ - { - "impersonate": { - "groups": ["system:masters"] - } - } - ], - "tailscale.com/cap/relay": [{}], - "tailscale.com/cap/relay-target": null, - "tailscale.com/cap/webui": [{}] - } - } - }, - "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": { - "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/drive": [ - { - "shares": ["*"], - "access": "rw" - } - ], - "tailscale.com/cap/drive-sharer": null, - "tailscale.com/cap/kubernetes": [ - { - "impersonate": { - "groups": ["system:masters"] - } - } - ], - "tailscale.com/cap/relay": [{}], - "tailscale.com/cap/relay-target": null, - "tailscale.com/cap/webui": [{}] - } - } - } - } + ] }, "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": [ @@ -2294,23 +416,34 @@ ], "CapGrant": [ { - "Dsts": ["100.103.8.15/32", "fd7a:115c:a1e0::5b37:80f/128"], + "Dsts": [ + "100.103.8.15/32", + "fd7a:115c:a1e0::5b37:80f/128" + ], "CapMap": { "tailscale.com/cap/drive": [ { - "shares": ["*"], + "shares": [ + "*" + ], "access": "rw" } ], "tailscale.com/cap/kubernetes": [ { "impersonate": { - "groups": ["system:masters"] + "groups": [ + "system:masters" + ] } } ], - "tailscale.com/cap/relay": [{}], - "tailscale.com/cap/webui": [{}] + "tailscale.com/cap/relay": [ + {} + ], + "tailscale.com/cap/webui": [ + {} + ] } } ] @@ -2324,7 +457,10 @@ ], "CapGrant": [ { - "Dsts": ["100.103.8.15/32", "fd7a:115c:a1e0::5b37:80f/128"], + "Dsts": [ + "100.103.8.15/32", + "fd7a:115c:a1e0::5b37:80f/128" + ], "CapMap": { "tailscale.com/cap/drive-sharer": null } @@ -2340,655 +476,19 @@ ], "CapGrant": [ { - "Dsts": ["100.103.8.15/32", "fd7a:115c:a1e0::5b37:80f/128"], + "Dsts": [ + "100.103.8.15/32", + "fd7a:115c:a1e0::5b37:80f/128" + ], "CapMap": { "tailscale.com/cap/relay-target": null } } ] } - ], - "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.103.8.15/32", - "Cap": "tailscale.com/cap/drive", - "Values": [ - { - "shares": ["*"], - "access": "rw" - } - ] - }, - { - "Dst": "100.103.8.15/32", - "Cap": "tailscale.com/cap/kubernetes", - "Values": [ - { - "impersonate": { - "groups": ["system:masters"] - } - } - ] - }, - { - "Dst": "100.103.8.15/32", - "Cap": "tailscale.com/cap/relay", - "Values": [{}] - }, - { - "Dst": "100.103.8.15/32", - "Cap": "tailscale.com/cap/webui", - "Values": [{}] - }, - { - "Dst": "fd7a:115c:a1e0::5b37:80f/128", - "Cap": "tailscale.com/cap/drive", - "Values": [ - { - "shares": ["*"], - "access": "rw" - } - ] - }, - { - "Dst": "fd7a:115c:a1e0::5b37:80f/128", - "Cap": "tailscale.com/cap/kubernetes", - "Values": [ - { - "impersonate": { - "groups": ["system:masters"] - } - } - ] - }, - { - "Dst": "fd7a:115c:a1e0::5b37:80f/128", - "Cap": "tailscale.com/cap/relay", - "Values": [{}] - }, - { - "Dst": "fd7a:115c:a1e0::5b37:80f/128", - "Cap": "tailscale.com/cap/webui", - "Values": [{}] - } - ] - }, - { - "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.103.8.15/32", - "Cap": "tailscale.com/cap/drive-sharer", - "Values": null - }, - { - "Dst": "fd7a:115c:a1e0::5b37:80f/128", - "Cap": "tailscale.com/cap/drive-sharer", - "Values": null - } - ] - }, - { - "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.103.8.15/32", - "Cap": "tailscale.com/cap/relay-target", - "Values": null - }, - { - "Dst": "fd7a:115c:a1e0::5b37:80f/128", - "Cap": "tailscale.com/cap/relay-target", - "Values": 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": { - "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/drive": [ - { - "shares": ["*"], - "access": "rw" - } - ], - "tailscale.com/cap/drive-sharer": null, - "tailscale.com/cap/kubernetes": [ - { - "impersonate": { - "groups": ["system:masters"] - } - } - ], - "tailscale.com/cap/relay": [{}], - "tailscale.com/cap/relay-target": null, - "tailscale.com/cap/webui": [{}] - } - } - }, - "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": { - "tailscale.com/cap/drive": [ - { - "shares": ["*"], - "access": "rw" - } - ], - "tailscale.com/cap/drive-sharer": null, - "tailscale.com/cap/kubernetes": [ - { - "impersonate": { - "groups": ["system:masters"] - } - } - ], - "tailscale.com/cap/relay": [{}], - "tailscale.com/cap/relay-target": null, - "tailscale.com/cap/webui": [{}] - } - } - }, - "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": { - "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/drive": [ - { - "shares": ["*"], - "access": "rw" - } - ], - "tailscale.com/cap/drive-sharer": null, - "tailscale.com/cap/kubernetes": [ - { - "impersonate": { - "groups": ["system:masters"] - } - } - ], - "tailscale.com/cap/relay": [{}], - "tailscale.com/cap/relay-target": null, - "tailscale.com/cap/webui": [{}] - } - } - }, - "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": { - "tailscale.com/cap/drive": [ - { - "shares": ["*"], - "access": "rw" - } - ], - "tailscale.com/cap/drive-sharer": null, - "tailscale.com/cap/kubernetes": [ - { - "impersonate": { - "groups": ["system:masters"] - } - } - ], - "tailscale.com/cap/relay": [{}], - "tailscale.com/cap/relay-target": null, - "tailscale.com/cap/webui": [{}] - } - } - }, - "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": { - "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/drive": [ - { - "shares": ["*"], - "access": "rw" - } - ], - "tailscale.com/cap/drive-sharer": null, - "tailscale.com/cap/kubernetes": [ - { - "impersonate": { - "groups": ["system:masters"] - } - } - ], - "tailscale.com/cap/relay": [{}], - "tailscale.com/cap/relay-target": null, - "tailscale.com/cap/webui": [{}] - } - } - }, - "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": { - "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/drive": [ - { - "shares": ["*"], - "access": "rw" - } - ], - "tailscale.com/cap/drive-sharer": null, - "tailscale.com/cap/kubernetes": [ - { - "impersonate": { - "groups": ["system:masters"] - } - } - ], - "tailscale.com/cap/relay": [{}], - "tailscale.com/cap/relay-target": null, - "tailscale.com/cap/webui": [{}] - } - } - }, - "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": { - "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/drive": [ - { - "shares": ["*"], - "access": "rw" - } - ], - "tailscale.com/cap/drive-sharer": null, - "tailscale.com/cap/kubernetes": [ - { - "impersonate": { - "groups": ["system:masters"] - } - } - ], - "tailscale.com/cap/relay": [{}], - "tailscale.com/cap/relay-target": null, - "tailscale.com/cap/webui": [{}] - } - } - } - } + ] }, "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": [ @@ -2999,23 +499,34 @@ ], "CapGrant": [ { - "Dsts": ["100.108.74.26/32", "fd7a:115c:a1e0::b901:4a87/128"], + "Dsts": [ + "100.108.74.26/32", + "fd7a:115c:a1e0::b901:4a87/128" + ], "CapMap": { "tailscale.com/cap/drive": [ { - "shares": ["*"], + "shares": [ + "*" + ], "access": "rw" } ], "tailscale.com/cap/kubernetes": [ { "impersonate": { - "groups": ["system:masters"] + "groups": [ + "system:masters" + ] } } ], - "tailscale.com/cap/relay": [{}], - "tailscale.com/cap/webui": [{}] + "tailscale.com/cap/relay": [ + {} + ], + "tailscale.com/cap/webui": [ + {} + ] } } ] @@ -3029,7 +540,10 @@ ], "CapGrant": [ { - "Dsts": ["100.108.74.26/32", "fd7a:115c:a1e0::b901:4a87/128"], + "Dsts": [ + "100.108.74.26/32", + "fd7a:115c:a1e0::b901:4a87/128" + ], "CapMap": { "tailscale.com/cap/drive-sharer": null } @@ -3045,655 +559,19 @@ ], "CapGrant": [ { - "Dsts": ["100.108.74.26/32", "fd7a:115c:a1e0::b901:4a87/128"], + "Dsts": [ + "100.108.74.26/32", + "fd7a:115c:a1e0::b901:4a87/128" + ], "CapMap": { "tailscale.com/cap/relay-target": null } } ] } - ], - "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/drive", - "Values": [ - { - "shares": ["*"], - "access": "rw" - } - ] - }, - { - "Dst": "100.108.74.26/32", - "Cap": "tailscale.com/cap/kubernetes", - "Values": [ - { - "impersonate": { - "groups": ["system:masters"] - } - } - ] - }, - { - "Dst": "100.108.74.26/32", - "Cap": "tailscale.com/cap/relay", - "Values": [{}] - }, - { - "Dst": "100.108.74.26/32", - "Cap": "tailscale.com/cap/webui", - "Values": [{}] - }, - { - "Dst": "fd7a:115c:a1e0::b901:4a87/128", - "Cap": "tailscale.com/cap/relay", - "Values": [{}] - }, - { - "Dst": "fd7a:115c:a1e0::b901:4a87/128", - "Cap": "tailscale.com/cap/webui", - "Values": [{}] - }, - { - "Dst": "fd7a:115c:a1e0::b901:4a87/128", - "Cap": "tailscale.com/cap/drive", - "Values": [ - { - "shares": ["*"], - "access": "rw" - } - ] - }, - { - "Dst": "fd7a:115c:a1e0::b901:4a87/128", - "Cap": "tailscale.com/cap/kubernetes", - "Values": [ - { - "impersonate": { - "groups": ["system:masters"] - } - } - ] - } - ] - }, - { - "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/drive-sharer", - "Values": null - }, - { - "Dst": "fd7a:115c:a1e0::b901:4a87/128", - "Cap": "tailscale.com/cap/drive-sharer", - "Values": null - } - ] - }, - { - "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/relay-target", - "Values": null - }, - { - "Dst": "fd7a:115c:a1e0::b901:4a87/128", - "Cap": "tailscale.com/cap/relay-target", - "Values": null - } - ] - } - ], - "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/drive": [ - { - "shares": ["*"], - "access": "rw" - } - ], - "tailscale.com/cap/drive-sharer": null, - "tailscale.com/cap/kubernetes": [ - { - "impersonate": { - "groups": ["system:masters"] - } - } - ], - "tailscale.com/cap/relay": [{}], - "tailscale.com/cap/relay-target": null, - "tailscale.com/cap/webui": [{}] - } - } - }, - "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/drive": [ - { - "shares": ["*"], - "access": "rw" - } - ], - "tailscale.com/cap/drive-sharer": null, - "tailscale.com/cap/kubernetes": [ - { - "impersonate": { - "groups": ["system:masters"] - } - } - ], - "tailscale.com/cap/relay": [{}], - "tailscale.com/cap/relay-target": null, - "tailscale.com/cap/webui": [{}] - } - } - }, - "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/drive": [ - { - "shares": ["*"], - "access": "rw" - } - ], - "tailscale.com/cap/drive-sharer": null, - "tailscale.com/cap/kubernetes": [ - { - "impersonate": { - "groups": ["system:masters"] - } - } - ], - "tailscale.com/cap/relay": [{}], - "tailscale.com/cap/relay-target": null, - "tailscale.com/cap/webui": [{}] - } - } - }, - "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": { - "tailscale.com/cap/drive": [ - { - "shares": ["*"], - "access": "rw" - } - ], - "tailscale.com/cap/drive-sharer": null, - "tailscale.com/cap/kubernetes": [ - { - "impersonate": { - "groups": ["system:masters"] - } - } - ], - "tailscale.com/cap/relay": [{}], - "tailscale.com/cap/relay-target": null, - "tailscale.com/cap/webui": [{}] - } - } - }, - "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/drive": [ - { - "shares": ["*"], - "access": "rw" - } - ], - "tailscale.com/cap/drive-sharer": null, - "tailscale.com/cap/kubernetes": [ - { - "impersonate": { - "groups": ["system:masters"] - } - } - ], - "tailscale.com/cap/relay": [{}], - "tailscale.com/cap/relay-target": null, - "tailscale.com/cap/webui": [{}] - } - } - }, - "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/drive": [ - { - "shares": ["*"], - "access": "rw" - } - ], - "tailscale.com/cap/drive-sharer": null, - "tailscale.com/cap/kubernetes": [ - { - "impersonate": { - "groups": ["system:masters"] - } - } - ], - "tailscale.com/cap/relay": [{}], - "tailscale.com/cap/relay-target": null, - "tailscale.com/cap/webui": [{}] - } - } - }, - "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/drive": [ - { - "shares": ["*"], - "access": "rw" - } - ], - "tailscale.com/cap/drive-sharer": null, - "tailscale.com/cap/kubernetes": [ - { - "impersonate": { - "groups": ["system:masters"] - } - } - ], - "tailscale.com/cap/relay": [{}], - "tailscale.com/cap/relay-target": null, - "tailscale.com/cap/webui": [{}] - } - } - } - } + ] }, "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": [ @@ -3704,23 +582,34 @@ ], "CapGrant": [ { - "Dsts": ["100.110.121.96/32", "fd7a:115c:a1e0::1737:7960/128"], + "Dsts": [ + "100.110.121.96/32", + "fd7a:115c:a1e0::1737:7960/128" + ], "CapMap": { "tailscale.com/cap/drive": [ { - "shares": ["*"], + "shares": [ + "*" + ], "access": "rw" } ], "tailscale.com/cap/kubernetes": [ { "impersonate": { - "groups": ["system:masters"] + "groups": [ + "system:masters" + ] } } ], - "tailscale.com/cap/relay": [{}], - "tailscale.com/cap/webui": [{}] + "tailscale.com/cap/relay": [ + {} + ], + "tailscale.com/cap/webui": [ + {} + ] } } ] @@ -3734,7 +623,10 @@ ], "CapGrant": [ { - "Dsts": ["100.110.121.96/32", "fd7a:115c:a1e0::1737:7960/128"], + "Dsts": [ + "100.110.121.96/32", + "fd7a:115c:a1e0::1737:7960/128" + ], "CapMap": { "tailscale.com/cap/drive-sharer": null } @@ -3750,655 +642,19 @@ ], "CapGrant": [ { - "Dsts": ["100.110.121.96/32", "fd7a:115c:a1e0::1737:7960/128"], + "Dsts": [ + "100.110.121.96/32", + "fd7a:115c:a1e0::1737:7960/128" + ], "CapMap": { "tailscale.com/cap/relay-target": null } } ] } - ], - "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.110.121.96/32", - "Cap": "tailscale.com/cap/kubernetes", - "Values": [ - { - "impersonate": { - "groups": ["system:masters"] - } - } - ] - }, - { - "Dst": "100.110.121.96/32", - "Cap": "tailscale.com/cap/relay", - "Values": [{}] - }, - { - "Dst": "100.110.121.96/32", - "Cap": "tailscale.com/cap/webui", - "Values": [{}] - }, - { - "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" - } - ] - }, - { - "Dst": "fd7a:115c:a1e0::1737:7960/128", - "Cap": "tailscale.com/cap/kubernetes", - "Values": [ - { - "impersonate": { - "groups": ["system:masters"] - } - } - ] - }, - { - "Dst": "fd7a:115c:a1e0::1737:7960/128", - "Cap": "tailscale.com/cap/relay", - "Values": [{}] - }, - { - "Dst": "fd7a:115c:a1e0::1737:7960/128", - "Cap": "tailscale.com/cap/webui", - "Values": [{}] - } - ] - }, - { - "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.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 - } - ] - }, - { - "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.110.121.96/32", - "Cap": "tailscale.com/cap/relay-target", - "Values": null - }, - { - "Dst": "fd7a:115c:a1e0::1737:7960/128", - "Cap": "tailscale.com/cap/relay-target", - "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": { - "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/drive": [ - { - "shares": ["*"], - "access": "rw" - } - ], - "tailscale.com/cap/drive-sharer": null, - "tailscale.com/cap/kubernetes": [ - { - "impersonate": { - "groups": ["system:masters"] - } - } - ], - "tailscale.com/cap/relay": [{}], - "tailscale.com/cap/relay-target": null, - "tailscale.com/cap/webui": [{}] - } - } - }, - "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": { - "tailscale.com/cap/drive": [ - { - "shares": ["*"], - "access": "rw" - } - ], - "tailscale.com/cap/drive-sharer": null, - "tailscale.com/cap/kubernetes": [ - { - "impersonate": { - "groups": ["system:masters"] - } - } - ], - "tailscale.com/cap/relay": [{}], - "tailscale.com/cap/relay-target": null, - "tailscale.com/cap/webui": [{}] - } - } - }, - "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": { - "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/drive": [ - { - "shares": ["*"], - "access": "rw" - } - ], - "tailscale.com/cap/drive-sharer": null, - "tailscale.com/cap/kubernetes": [ - { - "impersonate": { - "groups": ["system:masters"] - } - } - ], - "tailscale.com/cap/relay": [{}], - "tailscale.com/cap/relay-target": null, - "tailscale.com/cap/webui": [{}] - } - } - }, - "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": { - "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": { - "tailscale.com/cap/drive": [ - { - "shares": ["*"], - "access": "rw" - } - ], - "tailscale.com/cap/drive-sharer": null, - "tailscale.com/cap/kubernetes": [ - { - "impersonate": { - "groups": ["system:masters"] - } - } - ], - "tailscale.com/cap/relay": [{}], - "tailscale.com/cap/relay-target": null, - "tailscale.com/cap/webui": [{}] - } - } - }, - "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": { - "tailscale.com/cap/drive": [ - { - "shares": ["*"], - "access": "rw" - } - ], - "tailscale.com/cap/drive-sharer": null, - "tailscale.com/cap/kubernetes": [ - { - "impersonate": { - "groups": ["system:masters"] - } - } - ], - "tailscale.com/cap/relay": [{}], - "tailscale.com/cap/relay-target": null, - "tailscale.com/cap/webui": [{}] - } - } - }, - "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": { - "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/drive": [ - { - "shares": ["*"], - "access": "rw" - } - ], - "tailscale.com/cap/drive-sharer": null, - "tailscale.com/cap/kubernetes": [ - { - "impersonate": { - "groups": ["system:masters"] - } - } - ], - "tailscale.com/cap/relay": [{}], - "tailscale.com/cap/relay-target": null, - "tailscale.com/cap/webui": [{}] - } - } - }, - "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": { - "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/drive": [ - { - "shares": ["*"], - "access": "rw" - } - ], - "tailscale.com/cap/drive-sharer": null, - "tailscale.com/cap/kubernetes": [ - { - "impersonate": { - "groups": ["system:masters"] - } - } - ], - "tailscale.com/cap/relay": [{}], - "tailscale.com/cap/relay-target": null, - "tailscale.com/cap/webui": [{}] - } - } - } - } + ] }, "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": [ @@ -4409,23 +665,34 @@ ], "CapGrant": [ { - "Dsts": ["100.103.90.82/32", "fd7a:115c:a1e0::9e37:5a52/128"], + "Dsts": [ + "100.103.90.82/32", + "fd7a:115c:a1e0::9e37:5a52/128" + ], "CapMap": { "tailscale.com/cap/drive": [ { - "shares": ["*"], + "shares": [ + "*" + ], "access": "rw" } ], "tailscale.com/cap/kubernetes": [ { "impersonate": { - "groups": ["system:masters"] + "groups": [ + "system:masters" + ] } } ], - "tailscale.com/cap/relay": [{}], - "tailscale.com/cap/webui": [{}] + "tailscale.com/cap/relay": [ + {} + ], + "tailscale.com/cap/webui": [ + {} + ] } } ] @@ -4439,7 +706,10 @@ ], "CapGrant": [ { - "Dsts": ["100.103.90.82/32", "fd7a:115c:a1e0::9e37:5a52/128"], + "Dsts": [ + "100.103.90.82/32", + "fd7a:115c:a1e0::9e37:5a52/128" + ], "CapMap": { "tailscale.com/cap/drive-sharer": null } @@ -4455,655 +725,19 @@ ], "CapGrant": [ { - "Dsts": ["100.103.90.82/32", "fd7a:115c:a1e0::9e37:5a52/128"], + "Dsts": [ + "100.103.90.82/32", + "fd7a:115c:a1e0::9e37:5a52/128" + ], "CapMap": { "tailscale.com/cap/relay-target": null } } ] } - ], - "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.103.90.82/32", - "Cap": "tailscale.com/cap/webui", - "Values": [{}] - }, - { - "Dst": "100.103.90.82/32", - "Cap": "tailscale.com/cap/drive", - "Values": [ - { - "shares": ["*"], - "access": "rw" - } - ] - }, - { - "Dst": "100.103.90.82/32", - "Cap": "tailscale.com/cap/kubernetes", - "Values": [ - { - "impersonate": { - "groups": ["system:masters"] - } - } - ] - }, - { - "Dst": "100.103.90.82/32", - "Cap": "tailscale.com/cap/relay", - "Values": [{}] - }, - { - "Dst": "fd7a:115c:a1e0::9e37:5a52/128", - "Cap": "tailscale.com/cap/webui", - "Values": [{}] - }, - { - "Dst": "fd7a:115c:a1e0::9e37:5a52/128", - "Cap": "tailscale.com/cap/drive", - "Values": [ - { - "shares": ["*"], - "access": "rw" - } - ] - }, - { - "Dst": "fd7a:115c:a1e0::9e37:5a52/128", - "Cap": "tailscale.com/cap/kubernetes", - "Values": [ - { - "impersonate": { - "groups": ["system:masters"] - } - } - ] - }, - { - "Dst": "fd7a:115c:a1e0::9e37:5a52/128", - "Cap": "tailscale.com/cap/relay", - "Values": [{}] - } - ] - }, - { - "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.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 - } - ] - }, - { - "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.103.90.82/32", - "Cap": "tailscale.com/cap/relay-target", - "Values": null - }, - { - "Dst": "fd7a:115c:a1e0::9e37:5a52/128", - "Cap": "tailscale.com/cap/relay-target", - "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": { - "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/drive": [ - { - "shares": ["*"], - "access": "rw" - } - ], - "tailscale.com/cap/drive-sharer": null, - "tailscale.com/cap/kubernetes": [ - { - "impersonate": { - "groups": ["system:masters"] - } - } - ], - "tailscale.com/cap/relay": [{}], - "tailscale.com/cap/relay-target": null, - "tailscale.com/cap/webui": [{}] - } - } - }, - "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": { - "tailscale.com/cap/drive": [ - { - "shares": ["*"], - "access": "rw" - } - ], - "tailscale.com/cap/drive-sharer": null, - "tailscale.com/cap/kubernetes": [ - { - "impersonate": { - "groups": ["system:masters"] - } - } - ], - "tailscale.com/cap/relay": [{}], - "tailscale.com/cap/relay-target": null, - "tailscale.com/cap/webui": [{}] - } - } - }, - "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": { - "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/drive": [ - { - "shares": ["*"], - "access": "rw" - } - ], - "tailscale.com/cap/drive-sharer": null, - "tailscale.com/cap/kubernetes": [ - { - "impersonate": { - "groups": ["system:masters"] - } - } - ], - "tailscale.com/cap/relay": [{}], - "tailscale.com/cap/relay-target": null, - "tailscale.com/cap/webui": [{}] - } - } - }, - "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": { - "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": { - "tailscale.com/cap/drive": [ - { - "shares": ["*"], - "access": "rw" - } - ], - "tailscale.com/cap/drive-sharer": null, - "tailscale.com/cap/kubernetes": [ - { - "impersonate": { - "groups": ["system:masters"] - } - } - ], - "tailscale.com/cap/relay": [{}], - "tailscale.com/cap/relay-target": null, - "tailscale.com/cap/webui": [{}] - } - } - }, - "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": { - "tailscale.com/cap/drive": [ - { - "shares": ["*"], - "access": "rw" - } - ], - "tailscale.com/cap/drive-sharer": null, - "tailscale.com/cap/kubernetes": [ - { - "impersonate": { - "groups": ["system:masters"] - } - } - ], - "tailscale.com/cap/relay": [{}], - "tailscale.com/cap/relay-target": null, - "tailscale.com/cap/webui": [{}] - } - } - }, - "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": { - "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/drive": [ - { - "shares": ["*"], - "access": "rw" - } - ], - "tailscale.com/cap/drive-sharer": null, - "tailscale.com/cap/kubernetes": [ - { - "impersonate": { - "groups": ["system:masters"] - } - } - ], - "tailscale.com/cap/relay": [{}], - "tailscale.com/cap/relay-target": null, - "tailscale.com/cap/webui": [{}] - } - } - }, - "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": { - "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/drive": [ - { - "shares": ["*"], - "access": "rw" - } - ], - "tailscale.com/cap/drive-sharer": null, - "tailscale.com/cap/kubernetes": [ - { - "impersonate": { - "groups": ["system:masters"] - } - } - ], - "tailscale.com/cap/relay": [{}], - "tailscale.com/cap/relay-target": null, - "tailscale.com/cap/webui": [{}] - } - } - } - } + ] }, "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": [ @@ -5114,23 +748,34 @@ ], "CapGrant": [ { - "Dsts": ["100.90.199.68/32", "fd7a:115c:a1e0::2d01:c747/128"], + "Dsts": [ + "100.90.199.68/32", + "fd7a:115c:a1e0::2d01:c747/128" + ], "CapMap": { "tailscale.com/cap/drive": [ { - "shares": ["*"], + "shares": [ + "*" + ], "access": "rw" } ], "tailscale.com/cap/kubernetes": [ { "impersonate": { - "groups": ["system:masters"] + "groups": [ + "system:masters" + ] } } ], - "tailscale.com/cap/relay": [{}], - "tailscale.com/cap/webui": [{}] + "tailscale.com/cap/relay": [ + {} + ], + "tailscale.com/cap/webui": [ + {} + ] } } ] @@ -5144,7 +789,10 @@ ], "CapGrant": [ { - "Dsts": ["100.90.199.68/32", "fd7a:115c:a1e0::2d01:c747/128"], + "Dsts": [ + "100.90.199.68/32", + "fd7a:115c:a1e0::2d01:c747/128" + ], "CapMap": { "tailscale.com/cap/drive-sharer": null } @@ -5160,649 +808,17 @@ ], "CapGrant": [ { - "Dsts": ["100.90.199.68/32", "fd7a:115c:a1e0::2d01:c747/128"], + "Dsts": [ + "100.90.199.68/32", + "fd7a:115c:a1e0::2d01:c747/128" + ], "CapMap": { "tailscale.com/cap/relay-target": null } } ] } - ], - "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.90.199.68/32", - "Cap": "tailscale.com/cap/relay", - "Values": [{}] - }, - { - "Dst": "100.90.199.68/32", - "Cap": "tailscale.com/cap/webui", - "Values": [{}] - }, - { - "Dst": "100.90.199.68/32", - "Cap": "tailscale.com/cap/drive", - "Values": [ - { - "shares": ["*"], - "access": "rw" - } - ] - }, - { - "Dst": "100.90.199.68/32", - "Cap": "tailscale.com/cap/kubernetes", - "Values": [ - { - "impersonate": { - "groups": ["system:masters"] - } - } - ] - }, - { - "Dst": "fd7a:115c:a1e0::2d01:c747/128", - "Cap": "tailscale.com/cap/drive", - "Values": [ - { - "shares": ["*"], - "access": "rw" - } - ] - }, - { - "Dst": "fd7a:115c:a1e0::2d01:c747/128", - "Cap": "tailscale.com/cap/kubernetes", - "Values": [ - { - "impersonate": { - "groups": ["system:masters"] - } - } - ] - }, - { - "Dst": "fd7a:115c:a1e0::2d01:c747/128", - "Cap": "tailscale.com/cap/relay", - "Values": [{}] - }, - { - "Dst": "fd7a:115c:a1e0::2d01:c747/128", - "Cap": "tailscale.com/cap/webui", - "Values": [{}] - } - ] - }, - { - "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.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 - } - ] - }, - { - "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.90.199.68/32", - "Cap": "tailscale.com/cap/relay-target", - "Values": null - }, - { - "Dst": "fd7a:115c:a1e0::2d01:c747/128", - "Cap": "tailscale.com/cap/relay-target", - "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": { - "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/drive": [ - { - "shares": ["*"], - "access": "rw" - } - ], - "tailscale.com/cap/drive-sharer": null, - "tailscale.com/cap/kubernetes": [ - { - "impersonate": { - "groups": ["system:masters"] - } - } - ], - "tailscale.com/cap/relay": [{}], - "tailscale.com/cap/relay-target": null, - "tailscale.com/cap/webui": [{}] - } - } - }, - "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": { - "tailscale.com/cap/drive": [ - { - "shares": ["*"], - "access": "rw" - } - ], - "tailscale.com/cap/drive-sharer": null, - "tailscale.com/cap/kubernetes": [ - { - "impersonate": { - "groups": ["system:masters"] - } - } - ], - "tailscale.com/cap/relay": [{}], - "tailscale.com/cap/relay-target": null, - "tailscale.com/cap/webui": [{}] - } - } - }, - "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": { - "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/drive": [ - { - "shares": ["*"], - "access": "rw" - } - ], - "tailscale.com/cap/drive-sharer": null, - "tailscale.com/cap/kubernetes": [ - { - "impersonate": { - "groups": ["system:masters"] - } - } - ], - "tailscale.com/cap/relay": [{}], - "tailscale.com/cap/relay-target": null, - "tailscale.com/cap/webui": [{}] - } - } - }, - "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": { - "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": { - "tailscale.com/cap/drive": [ - { - "shares": ["*"], - "access": "rw" - } - ], - "tailscale.com/cap/drive-sharer": null, - "tailscale.com/cap/kubernetes": [ - { - "impersonate": { - "groups": ["system:masters"] - } - } - ], - "tailscale.com/cap/relay": [{}], - "tailscale.com/cap/relay-target": null, - "tailscale.com/cap/webui": [{}] - } - } - }, - "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": { - "tailscale.com/cap/drive": [ - { - "shares": ["*"], - "access": "rw" - } - ], - "tailscale.com/cap/drive-sharer": null, - "tailscale.com/cap/kubernetes": [ - { - "impersonate": { - "groups": ["system:masters"] - } - } - ], - "tailscale.com/cap/relay": [{}], - "tailscale.com/cap/relay-target": null, - "tailscale.com/cap/webui": [{}] - } - } - }, - "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": { - "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/drive": [ - { - "shares": ["*"], - "access": "rw" - } - ], - "tailscale.com/cap/drive-sharer": null, - "tailscale.com/cap/kubernetes": [ - { - "impersonate": { - "groups": ["system:masters"] - } - } - ], - "tailscale.com/cap/relay": [{}], - "tailscale.com/cap/relay-target": null, - "tailscale.com/cap/webui": [{}] - } - } - }, - "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": { - "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/drive": [ - { - "shares": ["*"], - "access": "rw" - } - ], - "tailscale.com/cap/drive-sharer": null, - "tailscale.com/cap/kubernetes": [ - { - "impersonate": { - "groups": ["system:masters"] - } - } - ], - "tailscale.com/cap/relay": [{}], - "tailscale.com/cap/relay-target": null, - "tailscale.com/cap/webui": [{}] - } - } - } - } + ] } } } diff --git a/hscontrol/policy/v2/testdata/grant_results/GRANT-K12.hujson b/hscontrol/policy/v2/testdata/grant_results/GRANT-K12.hujson index c37eef273..2a9bd23d1 100644 --- a/hscontrol/policy/v2/testdata/grant_results/GRANT-K12.hujson +++ b/hscontrol/policy/v2/testdata/grant_results/GRANT-K12.hujson @@ -5,23 +5,37 @@ // Expected: No filter rules on any node { "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: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"] + "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", @@ -30,16 +44,28 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "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"], + "src": [ + "*" + ], + "dst": [ + "10.33.0.0/16" + ], + "via": [ + "tag:router" + ], "app": { "example.com/cap/subnet-access": [ { @@ -50,96 +76,64 @@ } ] }, - "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"], + "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"], + "tags": [ + "tag:router" + ], "ipv4": "100.92.142.61", - "ipv6": "fd7a:115c:a1e0::3e37:8e3d", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] + "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"], + "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"], + "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"], + "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" @@ -148,1001 +142,28 @@ }, "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 - } - } + "packet_filter_rules": 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 - } - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": null } } } diff --git a/hscontrol/policy/v2/testdata/grant_results/GRANT-K13.hujson b/hscontrol/policy/v2/testdata/grant_results/GRANT-K13.hujson index 5733bc6f3..2c38605b3 100644 --- a/hscontrol/policy/v2/testdata/grant_results/GRANT-K13.hujson +++ b/hscontrol/policy/v2/testdata/grant_results/GRANT-K13.hujson @@ -5,23 +5,37 @@ // Expected: Rules on subnet-router { "test_id": "GRANT-K13", - "timestamp": "2026-02-23T02:56:12Z", - "propagation_wait_seconds": 15, "input": { - "policy_file": "grant_policies/grant_k13.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -30,17 +44,31 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "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"], - "ip": ["tcp:80"], + "src": [ + "*" + ], + "dst": [ + "10.33.0.0/16" + ], + "via": [ + "tag:router" + ], + "ip": [ + "tcp:80" + ], "app": { "example.com/cap/subnet-access": [ { @@ -51,97 +79,64 @@ } ] }, - "grants_section": [ - { - "src": ["*"], - "dst": ["10.33.0.0/16"], - "via": ["tag:router"], - "ip": ["tcp:80"], - "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"], + "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"], + "tags": [ + "tag:router" + ], "ipv4": "100.92.142.61", - "ipv6": "fd7a:115c:a1e0::3e37:8e3d", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] + "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"], + "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"], + "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"], + "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" @@ -150,101 +145,9 @@ }, "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 - } - } + "packet_filter_rules": 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": [ @@ -262,940 +165,29 @@ } } ], - "IPProto": [6] + "IPProto": [ + 6 + ] } - ], - "packet_filter_matches": [ - { - "IPProto": [6], - "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": [ - { - "Net": "10.33.0.0/16", - "Ports": { - "First": 80, - "Last": 80 - } - } - ], - "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": { - "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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": null } } } diff --git a/hscontrol/policy/v2/testdata/grant_results/GRANT-K14.hujson b/hscontrol/policy/v2/testdata/grant_results/GRANT-K14.hujson index 3b6a9c39b..70a8eddf0 100644 --- a/hscontrol/policy/v2/testdata/grant_results/GRANT-K14.hujson +++ b/hscontrol/policy/v2/testdata/grant_results/GRANT-K14.hujson @@ -5,23 +5,37 @@ // Expected: Rules on tagged-server { "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: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"] + "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", @@ -30,102 +44,89 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "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"] + "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"], + "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"], + "tags": [ + "tag:router" + ], "ipv4": "100.92.142.61", - "ipv6": "fd7a:115c:a1e0::3e37:8e3d", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] + "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"], + "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"], + "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"], + "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" @@ -134,238 +135,23 @@ }, "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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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"], + "SrcIPs": [ + "fd7a:115c:a1e0::c537:c845" + ], "DstPorts": [ { "IP": "100.108.74.26", @@ -382,250 +168,20 @@ } } ], - "IPProto": [6] + "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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": null } } } diff --git a/hscontrol/policy/v2/testdata/grant_results/GRANT-K15.hujson b/hscontrol/policy/v2/testdata/grant_results/GRANT-K15.hujson index 19b1c914e..ac3669c79 100644 --- a/hscontrol/policy/v2/testdata/grant_results/GRANT-K15.hujson +++ b/hscontrol/policy/v2/testdata/grant_results/GRANT-K15.hujson @@ -5,23 +5,37 @@ // Expected: Rules on tagged-server { "test_id": "GRANT-K15", - "timestamp": "2026-02-23T02:56:45Z", - "propagation_wait_seconds": 15, "input": { - "policy_file": "grant_policies/grant_k15.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -30,102 +44,89 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "grants": [ { - "src": ["*"], - "dst": ["fd7a:115c:a1e0::b901:4a87"], - "ip": ["tcp:22"] + "src": [ + "*" + ], + "dst": [ + "fd7a:115c:a1e0::b901:4a87" + ], + "ip": [ + "tcp:22" + ] } ] }, - "grants_section": [ - { - "src": ["*"], - "dst": ["fd7a:115c:a1e0::b901:4a87"], - "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"], + "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"], + "tags": [ + "tag:router" + ], "ipv4": "100.92.142.61", - "ipv6": "fd7a:115c:a1e0::3e37:8e3d", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] + "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"], + "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"], + "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"], + "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" @@ -134,370 +135,18 @@ }, "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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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": [ @@ -515,665 +164,20 @@ } } ], - "IPProto": [6] + "IPProto": [ + 6 + ] } - ], - "packet_filter_matches": [ - { - "IPProto": [6], - "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": [ - { - "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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": null } } } diff --git a/hscontrol/policy/v2/testdata/grant_results/GRANT-K16.hujson b/hscontrol/policy/v2/testdata/grant_results/GRANT-K16.hujson index 56d8492c7..88b43e20c 100644 --- a/hscontrol/policy/v2/testdata/grant_results/GRANT-K16.hujson +++ b/hscontrol/policy/v2/testdata/grant_results/GRANT-K16.hujson @@ -7,23 +7,37 @@ // Expected: Rules on 8 nodes { "test_id": "GRANT-K16", - "timestamp": "2026-02-23T02:57:02Z", - "propagation_wait_seconds": 15, "input": { - "policy_file": "grant_policies/grant_k16.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -32,112 +46,100 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "grants": [ { - "src": ["tag:client"], - "dst": ["tag:server"], - "ip": ["tcp:22"] + "src": [ + "tag:client" + ], + "dst": [ + "tag:server" + ], + "ip": [ + "tcp:22" + ] }, { - "src": ["*"], - "dst": ["*"], - "ip": ["*"] + "src": [ + "*" + ], + "dst": [ + "*" + ], + "ip": [ + "*" + ] } ] }, - "grants_section": [ - { - "src": ["tag:client"], - "dst": ["tag:server"], - "ip": ["tcp:22"] - }, - { - "src": ["*"], - "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"], + "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"], + "tags": [ + "tag:router" + ], "ipv4": "100.92.142.61", - "ipv6": "fd7a:115c:a1e0::3e37:8e3d", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] + "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"], + "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"], + "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"], + "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" @@ -146,10 +148,6 @@ }, "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": [ @@ -168,406 +166,9 @@ } ] } - ], - "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": [ - { - "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": { - "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": { - "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/exit-node/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/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": { - "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/exit-node/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/exit-node/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 - } - } - } + ] }, "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": [ @@ -586,405 +187,9 @@ } ] } - ], - "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": [ - { - "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": { - "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": [ { "SrcIPs": [ @@ -1003,406 +208,9 @@ } ] } - ], - "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": [ - { - "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": { - "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-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": { - "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/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": { - "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-client/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-client/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-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": [ @@ -1421,409 +229,15 @@ } ] } - ], - "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": [ - { - "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": { - "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-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": { - "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.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": { - "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-prod/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-prod/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-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.83.200.69", "fd7a:115c:a1e0::c537:c845"], + "SrcIPs": [ + "100.83.200.69", + "fd7a:115c:a1e0::c537:c845" + ], "DstPorts": [ { "IP": "100.108.74.26", @@ -1840,7 +254,9 @@ } } ], - "IPProto": [6] + "IPProto": [ + 6 + ] }, { "SrcIPs": [ @@ -1859,428 +275,9 @@ } ] } - ], - "packet_filter_matches": [ - { - "IPProto": [6], - "Srcs": ["100.83.200.69/32", "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": [] - }, - { - "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": [ - { - "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": { - "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": [ { "SrcIPs": [ @@ -2299,406 +296,9 @@ } ] } - ], - "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": [ - { - "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": { - "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/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": { - "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/user-kris/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/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": { - "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/user-kris/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-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": [ @@ -2717,406 +317,9 @@ } ] } - ], - "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": [ - { - "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": { - "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/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": { - "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/user-mon/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/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": { - "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.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": { - "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 - } - } - } + ] }, "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": [ @@ -3135,400 +338,7 @@ } ] } - ], - "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": [ - { - "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": { - "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/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": { - "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/user1/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/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": { - "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/user1/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 - } - } - } + ] } } } diff --git a/hscontrol/policy/v2/testdata/grant_results/GRANT-K17.hujson b/hscontrol/policy/v2/testdata/grant_results/GRANT-K17.hujson index f87deb743..6ad645fdd 100644 --- a/hscontrol/policy/v2/testdata/grant_results/GRANT-K17.hujson +++ b/hscontrol/policy/v2/testdata/grant_results/GRANT-K17.hujson @@ -7,23 +7,37 @@ // Expected: Rules on 8 nodes { "test_id": "GRANT-K17", - "timestamp": "2026-02-23T02:57:18Z", - "propagation_wait_seconds": 15, "input": { - "policy_file": "grant_policies/grant_k17.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -32,112 +46,100 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "grants": [ { - "src": ["*"], - "dst": ["*"], - "ip": ["*"] + "src": [ + "*" + ], + "dst": [ + "*" + ], + "ip": [ + "*" + ] }, { - "src": ["tag:client"], - "dst": ["tag:server"], - "ip": ["tcp:22"] + "src": [ + "tag:client" + ], + "dst": [ + "tag:server" + ], + "ip": [ + "tcp:22" + ] } ] }, - "grants_section": [ - { - "src": ["*"], - "dst": ["*"], - "ip": ["*"] - }, - { - "src": ["tag:client"], - "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"], + "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"], + "tags": [ + "tag:router" + ], "ipv4": "100.92.142.61", - "ipv6": "fd7a:115c:a1e0::3e37:8e3d", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] + "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"], + "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"], + "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"], + "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" @@ -146,10 +148,6 @@ }, "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": [ @@ -168,406 +166,9 @@ } ] } - ], - "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": [ - { - "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": { - "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": { - "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/exit-node/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/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": { - "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/exit-node/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/exit-node/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 - } - } - } + ] }, "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": [ @@ -586,405 +187,9 @@ } ] } - ], - "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": [ - { - "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": { - "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": [ { "SrcIPs": [ @@ -1003,406 +208,9 @@ } ] } - ], - "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": [ - { - "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": { - "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-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": { - "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/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": { - "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-client/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-client/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-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": [ @@ -1421,406 +229,9 @@ } ] } - ], - "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": [ - { - "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": { - "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-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": { - "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.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": { - "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-prod/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-prod/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-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": [ @@ -1840,7 +251,10 @@ ] }, { - "SrcIPs": ["100.83.200.69", "fd7a:115c:a1e0::c537:c845"], + "SrcIPs": [ + "100.83.200.69", + "fd7a:115c:a1e0::c537:c845" + ], "DstPorts": [ { "IP": "100.108.74.26", @@ -1857,430 +271,13 @@ } } ], - "IPProto": [6] + "IPProto": [ + 6 + ] } - ], - "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": [ - { - "Net": "0.0.0.0/0", - "Ports": { - "First": 0, - "Last": 65535 - } - }, - { - "Net": "::/0", - "Ports": { - "First": 0, - "Last": 65535 - } - } - ], - "Caps": [] - }, - { - "IPProto": [6], - "Srcs": ["100.83.200.69/32", "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": { - "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": [ { "SrcIPs": [ @@ -2299,406 +296,9 @@ } ] } - ], - "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": [ - { - "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": { - "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/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": { - "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/user-kris/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/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": { - "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/user-kris/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-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": [ @@ -2717,406 +317,9 @@ } ] } - ], - "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": [ - { - "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": { - "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/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": { - "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/user-mon/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/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": { - "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.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": { - "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 - } - } - } + ] }, "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": [ @@ -3135,400 +338,7 @@ } ] } - ], - "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": [ - { - "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": { - "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/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": { - "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/user1/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/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": { - "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/user1/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 - } - } - } + ] } } } diff --git a/hscontrol/policy/v2/testdata/grant_results/GRANT-K18.hujson b/hscontrol/policy/v2/testdata/grant_results/GRANT-K18.hujson index 00776f73b..3bfb3c4ba 100644 --- a/hscontrol/policy/v2/testdata/grant_results/GRANT-K18.hujson +++ b/hscontrol/policy/v2/testdata/grant_results/GRANT-K18.hujson @@ -7,23 +7,37 @@ // Expected: Rules on 8 nodes { "test_id": "GRANT-K18", - "timestamp": "2026-02-23T02:57:35Z", - "propagation_wait_seconds": 15, "input": { - "policy_file": "grant_policies/grant_k18.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -32,22 +46,38 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "grants": [ { - "src": ["*"], - "dst": ["*"], + "src": [ + "*" + ], + "dst": [ + "*" + ], "app": { - "example.com/cap/one": [{}] + "example.com/cap/one": [ + {} + ] } }, { - "src": ["*"], - "dst": ["*"], + "src": [ + "*" + ], + "dst": [ + "*" + ], "app": { "example.com/cap/two": [ { @@ -58,102 +88,64 @@ } ] }, - "grants_section": [ - { - "src": ["*"], - "dst": ["*"], - "app": { - "example.com/cap/one": [{}] - } - }, - { - "src": ["*"], - "dst": ["*"], - "app": { - "example.com/cap/two": [ - { - "v": 42 - } - ] - } - } - ], - "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"], + "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"], + "tags": [ + "tag:router" + ], "ipv4": "100.92.142.61", - "ipv6": "fd7a:115c:a1e0::3e37:8e3d", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] + "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"], + "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"], + "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"], + "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" @@ -162,10 +154,6 @@ }, "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": [ @@ -176,9 +164,14 @@ ], "CapGrant": [ { - "Dsts": ["100.85.66.106/32", "fd7a:115c:a1e0::7c37:426a/128"], + "Dsts": [ + "100.85.66.106/32", + "fd7a:115c:a1e0::7c37:426a/128" + ], "CapMap": { - "example.com/cap/one": [{}] + "example.com/cap/one": [ + {} + ] } } ] @@ -192,7 +185,10 @@ ], "CapGrant": [ { - "Dsts": ["100.85.66.106/32", "fd7a:115c:a1e0::7c37:426a/128"], + "Dsts": [ + "100.85.66.106/32", + "fd7a:115c:a1e0::7c37:426a/128" + ], "CapMap": { "example.com/cap/two": [ { @@ -203,493 +199,9 @@ } ] } - ], - "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.85.66.106/32", - "Cap": "example.com/cap/one", - "Values": [{}] - }, - { - "Dst": "fd7a:115c:a1e0::7c37:426a/128", - "Cap": "example.com/cap/one", - "Values": [{}] - } - ] - }, - { - "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.85.66.106/32", - "Cap": "example.com/cap/two", - "Values": [ - { - "v": 42 - } - ] - }, - { - "Dst": "fd7a:115c:a1e0::7c37:426a/128", - "Cap": "example.com/cap/two", - "Values": [ - { - "v": 42 - } - ] - } - ] - } - ], - "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": { - "example.com/cap/one": [{}], - "example.com/cap/two": [ - { - "v": 42 - } - ] - } - } - }, - "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": { - "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/one": [{}], - "example.com/cap/two": [ - { - "v": 42 - } - ] - } - } - }, - "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": { - "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/one": [{}], - "example.com/cap/two": [ - { - "v": 42 - } - ] - } - } - }, - "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": { - "example.com/cap/one": [{}], - "example.com/cap/two": [ - { - "v": 42 - } - ] - } - } - }, - "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": { - "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/one": [{}], - "example.com/cap/two": [ - { - "v": 42 - } - ] - } - } - }, - "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": { - "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/one": [{}], - "example.com/cap/two": [ - { - "v": 42 - } - ] - } - } - }, - "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": { - "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/one": [{}], - "example.com/cap/two": [ - { - "v": 42 - } - ] - } - } - } - } + ] }, "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": [ @@ -700,9 +212,14 @@ ], "CapGrant": [ { - "Dsts": ["100.92.142.61/32", "fd7a:115c:a1e0::3e37:8e3d/128"], + "Dsts": [ + "100.92.142.61/32", + "fd7a:115c:a1e0::3e37:8e3d/128" + ], "CapMap": { - "example.com/cap/one": [{}] + "example.com/cap/one": [ + {} + ] } } ] @@ -716,7 +233,10 @@ ], "CapGrant": [ { - "Dsts": ["100.92.142.61/32", "fd7a:115c:a1e0::3e37:8e3d/128"], + "Dsts": [ + "100.92.142.61/32", + "fd7a:115c:a1e0::3e37:8e3d/128" + ], "CapMap": { "example.com/cap/two": [ { @@ -727,492 +247,9 @@ } ] } - ], - "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.92.142.61/32", - "Cap": "example.com/cap/one", - "Values": [{}] - }, - { - "Dst": "fd7a:115c:a1e0::3e37:8e3d/128", - "Cap": "example.com/cap/one", - "Values": [{}] - } - ] - }, - { - "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.92.142.61/32", - "Cap": "example.com/cap/two", - "Values": [ - { - "v": 42 - } - ] - }, - { - "Dst": "fd7a:115c:a1e0::3e37:8e3d/128", - "Cap": "example.com/cap/two", - "Values": [ - { - "v": 42 - } - ] - } - ] - } - ], - "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": { - "example.com/cap/one": [{}], - "example.com/cap/two": [ - { - "v": 42 - } - ] - } - } - }, - "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": { - "example.com/cap/one": [{}], - "example.com/cap/two": [ - { - "v": 42 - } - ] - } - } - }, - "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": { - "example.com/cap/one": [{}], - "example.com/cap/two": [ - { - "v": 42 - } - ] - } - } - }, - "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": { - "example.com/cap/one": [{}], - "example.com/cap/two": [ - { - "v": 42 - } - ] - } - } - }, - "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": { - "example.com/cap/one": [{}], - "example.com/cap/two": [ - { - "v": 42 - } - ] - } - } - }, - "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": { - "example.com/cap/one": [{}], - "example.com/cap/two": [ - { - "v": 42 - } - ] - } - } - }, - "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": { - "example.com/cap/one": [{}], - "example.com/cap/two": [ - { - "v": 42 - } - ] - } - } - } - } + ] }, "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": [ @@ -1223,9 +260,14 @@ ], "CapGrant": [ { - "Dsts": ["100.83.200.69/32", "fd7a:115c:a1e0::c537:c845/128"], + "Dsts": [ + "100.83.200.69/32", + "fd7a:115c:a1e0::c537:c845/128" + ], "CapMap": { - "example.com/cap/one": [{}] + "example.com/cap/one": [ + {} + ] } } ] @@ -1239,7 +281,10 @@ ], "CapGrant": [ { - "Dsts": ["100.83.200.69/32", "fd7a:115c:a1e0::c537:c845/128"], + "Dsts": [ + "100.83.200.69/32", + "fd7a:115c:a1e0::c537:c845/128" + ], "CapMap": { "example.com/cap/two": [ { @@ -1250,493 +295,9 @@ } ] } - ], - "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.83.200.69/32", - "Cap": "example.com/cap/one", - "Values": [{}] - }, - { - "Dst": "fd7a:115c:a1e0::c537:c845/128", - "Cap": "example.com/cap/one", - "Values": [{}] - } - ] - }, - { - "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.83.200.69/32", - "Cap": "example.com/cap/two", - "Values": [ - { - "v": 42 - } - ] - }, - { - "Dst": "fd7a:115c:a1e0::c537:c845/128", - "Cap": "example.com/cap/two", - "Values": [ - { - "v": 42 - } - ] - } - ] - } - ], - "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": { - "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/one": [{}], - "example.com/cap/two": [ - { - "v": 42 - } - ] - } - } - }, - "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": { - "example.com/cap/one": [{}], - "example.com/cap/two": [ - { - "v": 42 - } - ] - } - } - }, - "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": { - "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/one": [{}], - "example.com/cap/two": [ - { - "v": 42 - } - ] - } - } - }, - "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": { - "example.com/cap/one": [{}], - "example.com/cap/two": [ - { - "v": 42 - } - ] - } - } - }, - "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": { - "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/one": [{}], - "example.com/cap/two": [ - { - "v": 42 - } - ] - } - } - }, - "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": { - "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/one": [{}], - "example.com/cap/two": [ - { - "v": 42 - } - ] - } - } - }, - "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": { - "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/one": [{}], - "example.com/cap/two": [ - { - "v": 42 - } - ] - } - } - } - } + ] }, "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": [ @@ -1747,9 +308,14 @@ ], "CapGrant": [ { - "Dsts": ["100.103.8.15/32", "fd7a:115c:a1e0::5b37:80f/128"], + "Dsts": [ + "100.103.8.15/32", + "fd7a:115c:a1e0::5b37:80f/128" + ], "CapMap": { - "example.com/cap/one": [{}] + "example.com/cap/one": [ + {} + ] } } ] @@ -1763,7 +329,10 @@ ], "CapGrant": [ { - "Dsts": ["100.103.8.15/32", "fd7a:115c:a1e0::5b37:80f/128"], + "Dsts": [ + "100.103.8.15/32", + "fd7a:115c:a1e0::5b37:80f/128" + ], "CapMap": { "example.com/cap/two": [ { @@ -1774,493 +343,9 @@ } ] } - ], - "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.103.8.15/32", - "Cap": "example.com/cap/one", - "Values": [{}] - }, - { - "Dst": "fd7a:115c:a1e0::5b37:80f/128", - "Cap": "example.com/cap/one", - "Values": [{}] - } - ] - }, - { - "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.103.8.15/32", - "Cap": "example.com/cap/two", - "Values": [ - { - "v": 42 - } - ] - }, - { - "Dst": "fd7a:115c:a1e0::5b37:80f/128", - "Cap": "example.com/cap/two", - "Values": [ - { - "v": 42 - } - ] - } - ] - } - ], - "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": { - "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/one": [{}], - "example.com/cap/two": [ - { - "v": 42 - } - ] - } - } - }, - "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": { - "example.com/cap/one": [{}], - "example.com/cap/two": [ - { - "v": 42 - } - ] - } - } - }, - "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": { - "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/one": [{}], - "example.com/cap/two": [ - { - "v": 42 - } - ] - } - } - }, - "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": { - "example.com/cap/one": [{}], - "example.com/cap/two": [ - { - "v": 42 - } - ] - } - } - }, - "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": { - "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/one": [{}], - "example.com/cap/two": [ - { - "v": 42 - } - ] - } - } - }, - "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": { - "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/one": [{}], - "example.com/cap/two": [ - { - "v": 42 - } - ] - } - } - }, - "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": { - "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/one": [{}], - "example.com/cap/two": [ - { - "v": 42 - } - ] - } - } - } - } + ] }, "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": [ @@ -2271,9 +356,14 @@ ], "CapGrant": [ { - "Dsts": ["100.108.74.26/32", "fd7a:115c:a1e0::b901:4a87/128"], + "Dsts": [ + "100.108.74.26/32", + "fd7a:115c:a1e0::b901:4a87/128" + ], "CapMap": { - "example.com/cap/one": [{}] + "example.com/cap/one": [ + {} + ] } } ] @@ -2287,7 +377,10 @@ ], "CapGrant": [ { - "Dsts": ["100.108.74.26/32", "fd7a:115c:a1e0::b901:4a87/128"], + "Dsts": [ + "100.108.74.26/32", + "fd7a:115c:a1e0::b901:4a87/128" + ], "CapMap": { "example.com/cap/two": [ { @@ -2298,493 +391,9 @@ } ] } - ], - "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": "example.com/cap/one", - "Values": [{}] - }, - { - "Dst": "fd7a:115c:a1e0::b901:4a87/128", - "Cap": "example.com/cap/one", - "Values": [{}] - } - ] - }, - { - "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": "example.com/cap/two", - "Values": [ - { - "v": 42 - } - ] - }, - { - "Dst": "fd7a:115c:a1e0::b901:4a87/128", - "Cap": "example.com/cap/two", - "Values": [ - { - "v": 42 - } - ] - } - ] - } - ], - "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/one": [{}], - "example.com/cap/two": [ - { - "v": 42 - } - ] - } - } - }, - "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": { - "example.com/cap/one": [{}], - "example.com/cap/two": [ - { - "v": 42 - } - ] - } - } - }, - "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/one": [{}], - "example.com/cap/two": [ - { - "v": 42 - } - ] - } - } - }, - "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/one": [{}], - "example.com/cap/two": [ - { - "v": 42 - } - ] - } - } - }, - "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/one": [{}], - "example.com/cap/two": [ - { - "v": 42 - } - ] - } - } - }, - "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/one": [{}], - "example.com/cap/two": [ - { - "v": 42 - } - ] - } - } - }, - "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/one": [{}], - "example.com/cap/two": [ - { - "v": 42 - } - ] - } - } - } - } + ] }, "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": [ @@ -2795,9 +404,14 @@ ], "CapGrant": [ { - "Dsts": ["100.110.121.96/32", "fd7a:115c:a1e0::1737:7960/128"], + "Dsts": [ + "100.110.121.96/32", + "fd7a:115c:a1e0::1737:7960/128" + ], "CapMap": { - "example.com/cap/one": [{}] + "example.com/cap/one": [ + {} + ] } } ] @@ -2811,7 +425,10 @@ ], "CapGrant": [ { - "Dsts": ["100.110.121.96/32", "fd7a:115c:a1e0::1737:7960/128"], + "Dsts": [ + "100.110.121.96/32", + "fd7a:115c:a1e0::1737:7960/128" + ], "CapMap": { "example.com/cap/two": [ { @@ -2822,493 +439,9 @@ } ] } - ], - "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.110.121.96/32", - "Cap": "example.com/cap/one", - "Values": [{}] - }, - { - "Dst": "fd7a:115c:a1e0::1737:7960/128", - "Cap": "example.com/cap/one", - "Values": [{}] - } - ] - }, - { - "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.110.121.96/32", - "Cap": "example.com/cap/two", - "Values": [ - { - "v": 42 - } - ] - }, - { - "Dst": "fd7a:115c:a1e0::1737:7960/128", - "Cap": "example.com/cap/two", - "Values": [ - { - "v": 42 - } - ] - } - ] - } - ], - "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": { - "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/one": [{}], - "example.com/cap/two": [ - { - "v": 42 - } - ] - } - } - }, - "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": { - "example.com/cap/one": [{}], - "example.com/cap/two": [ - { - "v": 42 - } - ] - } - } - }, - "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": { - "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/one": [{}], - "example.com/cap/two": [ - { - "v": 42 - } - ] - } - } - }, - "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": { - "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/one": [{}], - "example.com/cap/two": [ - { - "v": 42 - } - ] - } - } - }, - "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": { - "example.com/cap/one": [{}], - "example.com/cap/two": [ - { - "v": 42 - } - ] - } - } - }, - "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": { - "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/one": [{}], - "example.com/cap/two": [ - { - "v": 42 - } - ] - } - } - }, - "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": { - "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/one": [{}], - "example.com/cap/two": [ - { - "v": 42 - } - ] - } - } - } - } + ] }, "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": [ @@ -3319,9 +452,14 @@ ], "CapGrant": [ { - "Dsts": ["100.103.90.82/32", "fd7a:115c:a1e0::9e37:5a52/128"], + "Dsts": [ + "100.103.90.82/32", + "fd7a:115c:a1e0::9e37:5a52/128" + ], "CapMap": { - "example.com/cap/one": [{}] + "example.com/cap/one": [ + {} + ] } } ] @@ -3335,7 +473,10 @@ ], "CapGrant": [ { - "Dsts": ["100.103.90.82/32", "fd7a:115c:a1e0::9e37:5a52/128"], + "Dsts": [ + "100.103.90.82/32", + "fd7a:115c:a1e0::9e37:5a52/128" + ], "CapMap": { "example.com/cap/two": [ { @@ -3346,493 +487,9 @@ } ] } - ], - "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.103.90.82/32", - "Cap": "example.com/cap/one", - "Values": [{}] - }, - { - "Dst": "fd7a:115c:a1e0::9e37:5a52/128", - "Cap": "example.com/cap/one", - "Values": [{}] - } - ] - }, - { - "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.103.90.82/32", - "Cap": "example.com/cap/two", - "Values": [ - { - "v": 42 - } - ] - }, - { - "Dst": "fd7a:115c:a1e0::9e37:5a52/128", - "Cap": "example.com/cap/two", - "Values": [ - { - "v": 42 - } - ] - } - ] - } - ], - "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": { - "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/one": [{}], - "example.com/cap/two": [ - { - "v": 42 - } - ] - } - } - }, - "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": { - "example.com/cap/one": [{}], - "example.com/cap/two": [ - { - "v": 42 - } - ] - } - } - }, - "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": { - "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/one": [{}], - "example.com/cap/two": [ - { - "v": 42 - } - ] - } - } - }, - "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": { - "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/one": [{}], - "example.com/cap/two": [ - { - "v": 42 - } - ] - } - } - }, - "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": { - "example.com/cap/one": [{}], - "example.com/cap/two": [ - { - "v": 42 - } - ] - } - } - }, - "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": { - "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/one": [{}], - "example.com/cap/two": [ - { - "v": 42 - } - ] - } - } - }, - "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": { - "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/one": [{}], - "example.com/cap/two": [ - { - "v": 42 - } - ] - } - } - } - } + ] }, "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": [ @@ -3843,9 +500,14 @@ ], "CapGrant": [ { - "Dsts": ["100.90.199.68/32", "fd7a:115c:a1e0::2d01:c747/128"], + "Dsts": [ + "100.90.199.68/32", + "fd7a:115c:a1e0::2d01:c747/128" + ], "CapMap": { - "example.com/cap/one": [{}] + "example.com/cap/one": [ + {} + ] } } ] @@ -3859,7 +521,10 @@ ], "CapGrant": [ { - "Dsts": ["100.90.199.68/32", "fd7a:115c:a1e0::2d01:c747/128"], + "Dsts": [ + "100.90.199.68/32", + "fd7a:115c:a1e0::2d01:c747/128" + ], "CapMap": { "example.com/cap/two": [ { @@ -3870,487 +535,7 @@ } ] } - ], - "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.90.199.68/32", - "Cap": "example.com/cap/one", - "Values": [{}] - }, - { - "Dst": "fd7a:115c:a1e0::2d01:c747/128", - "Cap": "example.com/cap/one", - "Values": [{}] - } - ] - }, - { - "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.90.199.68/32", - "Cap": "example.com/cap/two", - "Values": [ - { - "v": 42 - } - ] - }, - { - "Dst": "fd7a:115c:a1e0::2d01:c747/128", - "Cap": "example.com/cap/two", - "Values": [ - { - "v": 42 - } - ] - } - ] - } - ], - "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": { - "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/one": [{}], - "example.com/cap/two": [ - { - "v": 42 - } - ] - } - } - }, - "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": { - "example.com/cap/one": [{}], - "example.com/cap/two": [ - { - "v": 42 - } - ] - } - } - }, - "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": { - "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/one": [{}], - "example.com/cap/two": [ - { - "v": 42 - } - ] - } - } - }, - "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": { - "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/one": [{}], - "example.com/cap/two": [ - { - "v": 42 - } - ] - } - } - }, - "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": { - "example.com/cap/one": [{}], - "example.com/cap/two": [ - { - "v": 42 - } - ] - } - } - }, - "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": { - "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/one": [{}], - "example.com/cap/two": [ - { - "v": 42 - } - ] - } - } - }, - "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": { - "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/one": [{}], - "example.com/cap/two": [ - { - "v": 42 - } - ] - } - } - } - } + ] } } } diff --git a/hscontrol/policy/v2/testdata/grant_results/GRANT-K19.hujson b/hscontrol/policy/v2/testdata/grant_results/GRANT-K19.hujson index 69390baef..e1d7c23ca 100644 --- a/hscontrol/policy/v2/testdata/grant_results/GRANT-K19.hujson +++ b/hscontrol/policy/v2/testdata/grant_results/GRANT-K19.hujson @@ -7,23 +7,37 @@ // Expected: Rules on 8 nodes { "test_id": "GRANT-K19", - "timestamp": "2026-02-23T02:57:52Z", - "propagation_wait_seconds": 15, "input": { - "policy_file": "grant_policies/grant_k19.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -32,15 +46,25 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "grants": [ { - "src": ["*"], - "dst": ["*"], + "src": [ + "*" + ], + "dst": [ + "*" + ], "app": { "example.com/cap/test": [ { @@ -50,8 +74,12 @@ } }, { - "src": ["*"], - "dst": ["*"], + "src": [ + "*" + ], + "dst": [ + "*" + ], "app": { "example.com/cap/test": [ { @@ -62,106 +90,64 @@ } ] }, - "grants_section": [ - { - "src": ["*"], - "dst": ["*"], - "app": { - "example.com/cap/test": [ - { - "v": 1 - } - ] - } - }, - { - "src": ["*"], - "dst": ["*"], - "app": { - "example.com/cap/test": [ - { - "v": 2 - } - ] - } - } - ], - "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"], + "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"], + "tags": [ + "tag:router" + ], "ipv4": "100.92.142.61", - "ipv6": "fd7a:115c:a1e0::3e37:8e3d", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] + "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"], + "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"], + "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"], + "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" @@ -170,10 +156,6 @@ }, "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": [ @@ -184,7 +166,10 @@ ], "CapGrant": [ { - "Dsts": ["100.85.66.106/32", "fd7a:115c:a1e0::7c37:426a/128"], + "Dsts": [ + "100.85.66.106/32", + "fd7a:115c:a1e0::7c37:426a/128" + ], "CapMap": { "example.com/cap/test": [ { @@ -204,7 +189,10 @@ ], "CapGrant": [ { - "Dsts": ["100.85.66.106/32", "fd7a:115c:a1e0::7c37:426a/128"], + "Dsts": [ + "100.85.66.106/32", + "fd7a:115c:a1e0::7c37:426a/128" + ], "CapMap": { "example.com/cap/test": [ { @@ -215,515 +203,9 @@ } ] } - ], - "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.85.66.106/32", - "Cap": "example.com/cap/test", - "Values": [ - { - "v": 1 - } - ] - }, - { - "Dst": "fd7a:115c:a1e0::7c37:426a/128", - "Cap": "example.com/cap/test", - "Values": [ - { - "v": 1 - } - ] - } - ] - }, - { - "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.85.66.106/32", - "Cap": "example.com/cap/test", - "Values": [ - { - "v": 2 - } - ] - }, - { - "Dst": "fd7a:115c:a1e0::7c37:426a/128", - "Cap": "example.com/cap/test", - "Values": [ - { - "v": 2 - } - ] - } - ] - } - ], - "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": { - "example.com/cap/test": [ - { - "v": 1 - }, - { - "v": 2 - } - ] - } - } - }, - "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": { - "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": [ - { - "v": 1 - }, - { - "v": 2 - } - ] - } - } - }, - "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": { - "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": [ - { - "v": 1 - }, - { - "v": 2 - } - ] - } - } - }, - "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": { - "example.com/cap/test": [ - { - "v": 1 - }, - { - "v": 2 - } - ] - } - } - }, - "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": { - "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": [ - { - "v": 1 - }, - { - "v": 2 - } - ] - } - } - }, - "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": { - "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": [ - { - "v": 1 - }, - { - "v": 2 - } - ] - } - } - }, - "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": { - "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": [ - { - "v": 1 - }, - { - "v": 2 - } - ] - } - } - } - } + ] }, "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": [ @@ -734,7 +216,10 @@ ], "CapGrant": [ { - "Dsts": ["100.92.142.61/32", "fd7a:115c:a1e0::3e37:8e3d/128"], + "Dsts": [ + "100.92.142.61/32", + "fd7a:115c:a1e0::3e37:8e3d/128" + ], "CapMap": { "example.com/cap/test": [ { @@ -754,7 +239,10 @@ ], "CapGrant": [ { - "Dsts": ["100.92.142.61/32", "fd7a:115c:a1e0::3e37:8e3d/128"], + "Dsts": [ + "100.92.142.61/32", + "fd7a:115c:a1e0::3e37:8e3d/128" + ], "CapMap": { "example.com/cap/test": [ { @@ -765,514 +253,9 @@ } ] } - ], - "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.92.142.61/32", - "Cap": "example.com/cap/test", - "Values": [ - { - "v": 1 - } - ] - }, - { - "Dst": "fd7a:115c:a1e0::3e37:8e3d/128", - "Cap": "example.com/cap/test", - "Values": [ - { - "v": 1 - } - ] - } - ] - }, - { - "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.92.142.61/32", - "Cap": "example.com/cap/test", - "Values": [ - { - "v": 2 - } - ] - }, - { - "Dst": "fd7a:115c:a1e0::3e37:8e3d/128", - "Cap": "example.com/cap/test", - "Values": [ - { - "v": 2 - } - ] - } - ] - } - ], - "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": { - "example.com/cap/test": [ - { - "v": 1 - }, - { - "v": 2 - } - ] - } - } - }, - "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": { - "example.com/cap/test": [ - { - "v": 1 - }, - { - "v": 2 - } - ] - } - } - }, - "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": { - "example.com/cap/test": [ - { - "v": 1 - }, - { - "v": 2 - } - ] - } - } - }, - "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": { - "example.com/cap/test": [ - { - "v": 1 - }, - { - "v": 2 - } - ] - } - } - }, - "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": { - "example.com/cap/test": [ - { - "v": 1 - }, - { - "v": 2 - } - ] - } - } - }, - "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": { - "example.com/cap/test": [ - { - "v": 1 - }, - { - "v": 2 - } - ] - } - } - }, - "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": { - "example.com/cap/test": [ - { - "v": 1 - }, - { - "v": 2 - } - ] - } - } - } - } + ] }, "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": [ @@ -1283,7 +266,10 @@ ], "CapGrant": [ { - "Dsts": ["100.83.200.69/32", "fd7a:115c:a1e0::c537:c845/128"], + "Dsts": [ + "100.83.200.69/32", + "fd7a:115c:a1e0::c537:c845/128" + ], "CapMap": { "example.com/cap/test": [ { @@ -1303,7 +289,10 @@ ], "CapGrant": [ { - "Dsts": ["100.83.200.69/32", "fd7a:115c:a1e0::c537:c845/128"], + "Dsts": [ + "100.83.200.69/32", + "fd7a:115c:a1e0::c537:c845/128" + ], "CapMap": { "example.com/cap/test": [ { @@ -1314,515 +303,9 @@ } ] } - ], - "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.83.200.69/32", - "Cap": "example.com/cap/test", - "Values": [ - { - "v": 1 - } - ] - }, - { - "Dst": "fd7a:115c:a1e0::c537:c845/128", - "Cap": "example.com/cap/test", - "Values": [ - { - "v": 1 - } - ] - } - ] - }, - { - "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.83.200.69/32", - "Cap": "example.com/cap/test", - "Values": [ - { - "v": 2 - } - ] - }, - { - "Dst": "fd7a:115c:a1e0::c537:c845/128", - "Cap": "example.com/cap/test", - "Values": [ - { - "v": 2 - } - ] - } - ] - } - ], - "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": { - "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": [ - { - "v": 1 - }, - { - "v": 2 - } - ] - } - } - }, - "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": { - "example.com/cap/test": [ - { - "v": 1 - }, - { - "v": 2 - } - ] - } - } - }, - "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": { - "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": [ - { - "v": 1 - }, - { - "v": 2 - } - ] - } - } - }, - "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": { - "example.com/cap/test": [ - { - "v": 1 - }, - { - "v": 2 - } - ] - } - } - }, - "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": { - "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": [ - { - "v": 1 - }, - { - "v": 2 - } - ] - } - } - }, - "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": { - "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": [ - { - "v": 1 - }, - { - "v": 2 - } - ] - } - } - }, - "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": { - "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": [ - { - "v": 1 - }, - { - "v": 2 - } - ] - } - } - } - } + ] }, "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": [ @@ -1833,7 +316,10 @@ ], "CapGrant": [ { - "Dsts": ["100.103.8.15/32", "fd7a:115c:a1e0::5b37:80f/128"], + "Dsts": [ + "100.103.8.15/32", + "fd7a:115c:a1e0::5b37:80f/128" + ], "CapMap": { "example.com/cap/test": [ { @@ -1853,7 +339,10 @@ ], "CapGrant": [ { - "Dsts": ["100.103.8.15/32", "fd7a:115c:a1e0::5b37:80f/128"], + "Dsts": [ + "100.103.8.15/32", + "fd7a:115c:a1e0::5b37:80f/128" + ], "CapMap": { "example.com/cap/test": [ { @@ -1864,515 +353,9 @@ } ] } - ], - "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.103.8.15/32", - "Cap": "example.com/cap/test", - "Values": [ - { - "v": 1 - } - ] - }, - { - "Dst": "fd7a:115c:a1e0::5b37:80f/128", - "Cap": "example.com/cap/test", - "Values": [ - { - "v": 1 - } - ] - } - ] - }, - { - "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.103.8.15/32", - "Cap": "example.com/cap/test", - "Values": [ - { - "v": 2 - } - ] - }, - { - "Dst": "fd7a:115c:a1e0::5b37:80f/128", - "Cap": "example.com/cap/test", - "Values": [ - { - "v": 2 - } - ] - } - ] - } - ], - "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": { - "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": [ - { - "v": 1 - }, - { - "v": 2 - } - ] - } - } - }, - "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": { - "example.com/cap/test": [ - { - "v": 1 - }, - { - "v": 2 - } - ] - } - } - }, - "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": { - "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": [ - { - "v": 1 - }, - { - "v": 2 - } - ] - } - } - }, - "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": { - "example.com/cap/test": [ - { - "v": 1 - }, - { - "v": 2 - } - ] - } - } - }, - "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": { - "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": [ - { - "v": 1 - }, - { - "v": 2 - } - ] - } - } - }, - "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": { - "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": [ - { - "v": 1 - }, - { - "v": 2 - } - ] - } - } - }, - "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": { - "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": [ - { - "v": 1 - }, - { - "v": 2 - } - ] - } - } - } - } + ] }, "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": [ @@ -2383,7 +366,10 @@ ], "CapGrant": [ { - "Dsts": ["100.108.74.26/32", "fd7a:115c:a1e0::b901:4a87/128"], + "Dsts": [ + "100.108.74.26/32", + "fd7a:115c:a1e0::b901:4a87/128" + ], "CapMap": { "example.com/cap/test": [ { @@ -2403,7 +389,10 @@ ], "CapGrant": [ { - "Dsts": ["100.108.74.26/32", "fd7a:115c:a1e0::b901:4a87/128"], + "Dsts": [ + "100.108.74.26/32", + "fd7a:115c:a1e0::b901:4a87/128" + ], "CapMap": { "example.com/cap/test": [ { @@ -2414,515 +403,9 @@ } ] } - ], - "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": "example.com/cap/test", - "Values": [ - { - "v": 1 - } - ] - }, - { - "Dst": "fd7a:115c:a1e0::b901:4a87/128", - "Cap": "example.com/cap/test", - "Values": [ - { - "v": 1 - } - ] - } - ] - }, - { - "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": "example.com/cap/test", - "Values": [ - { - "v": 2 - } - ] - }, - { - "Dst": "fd7a:115c:a1e0::b901:4a87/128", - "Cap": "example.com/cap/test", - "Values": [ - { - "v": 2 - } - ] - } - ] - } - ], - "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": [ - { - "v": 1 - }, - { - "v": 2 - } - ] - } - } - }, - "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": { - "example.com/cap/test": [ - { - "v": 1 - }, - { - "v": 2 - } - ] - } - } - }, - "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": [ - { - "v": 1 - }, - { - "v": 2 - } - ] - } - } - }, - "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": [ - { - "v": 1 - }, - { - "v": 2 - } - ] - } - } - }, - "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": [ - { - "v": 1 - }, - { - "v": 2 - } - ] - } - } - }, - "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": [ - { - "v": 1 - }, - { - "v": 2 - } - ] - } - } - }, - "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": [ - { - "v": 1 - }, - { - "v": 2 - } - ] - } - } - } - } + ] }, "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": [ @@ -2933,7 +416,10 @@ ], "CapGrant": [ { - "Dsts": ["100.110.121.96/32", "fd7a:115c:a1e0::1737:7960/128"], + "Dsts": [ + "100.110.121.96/32", + "fd7a:115c:a1e0::1737:7960/128" + ], "CapMap": { "example.com/cap/test": [ { @@ -2953,7 +439,10 @@ ], "CapGrant": [ { - "Dsts": ["100.110.121.96/32", "fd7a:115c:a1e0::1737:7960/128"], + "Dsts": [ + "100.110.121.96/32", + "fd7a:115c:a1e0::1737:7960/128" + ], "CapMap": { "example.com/cap/test": [ { @@ -2964,515 +453,9 @@ } ] } - ], - "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.110.121.96/32", - "Cap": "example.com/cap/test", - "Values": [ - { - "v": 1 - } - ] - }, - { - "Dst": "fd7a:115c:a1e0::1737:7960/128", - "Cap": "example.com/cap/test", - "Values": [ - { - "v": 1 - } - ] - } - ] - }, - { - "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.110.121.96/32", - "Cap": "example.com/cap/test", - "Values": [ - { - "v": 2 - } - ] - }, - { - "Dst": "fd7a:115c:a1e0::1737:7960/128", - "Cap": "example.com/cap/test", - "Values": [ - { - "v": 2 - } - ] - } - ] - } - ], - "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": { - "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": [ - { - "v": 1 - }, - { - "v": 2 - } - ] - } - } - }, - "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": { - "example.com/cap/test": [ - { - "v": 1 - }, - { - "v": 2 - } - ] - } - } - }, - "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": { - "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": [ - { - "v": 1 - }, - { - "v": 2 - } - ] - } - } - }, - "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": { - "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": [ - { - "v": 1 - }, - { - "v": 2 - } - ] - } - } - }, - "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": { - "example.com/cap/test": [ - { - "v": 1 - }, - { - "v": 2 - } - ] - } - } - }, - "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": { - "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": [ - { - "v": 1 - }, - { - "v": 2 - } - ] - } - } - }, - "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": { - "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": [ - { - "v": 1 - }, - { - "v": 2 - } - ] - } - } - } - } + ] }, "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": [ @@ -3483,7 +466,10 @@ ], "CapGrant": [ { - "Dsts": ["100.103.90.82/32", "fd7a:115c:a1e0::9e37:5a52/128"], + "Dsts": [ + "100.103.90.82/32", + "fd7a:115c:a1e0::9e37:5a52/128" + ], "CapMap": { "example.com/cap/test": [ { @@ -3503,7 +489,10 @@ ], "CapGrant": [ { - "Dsts": ["100.103.90.82/32", "fd7a:115c:a1e0::9e37:5a52/128"], + "Dsts": [ + "100.103.90.82/32", + "fd7a:115c:a1e0::9e37:5a52/128" + ], "CapMap": { "example.com/cap/test": [ { @@ -3514,515 +503,9 @@ } ] } - ], - "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.103.90.82/32", - "Cap": "example.com/cap/test", - "Values": [ - { - "v": 1 - } - ] - }, - { - "Dst": "fd7a:115c:a1e0::9e37:5a52/128", - "Cap": "example.com/cap/test", - "Values": [ - { - "v": 1 - } - ] - } - ] - }, - { - "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.103.90.82/32", - "Cap": "example.com/cap/test", - "Values": [ - { - "v": 2 - } - ] - }, - { - "Dst": "fd7a:115c:a1e0::9e37:5a52/128", - "Cap": "example.com/cap/test", - "Values": [ - { - "v": 2 - } - ] - } - ] - } - ], - "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": { - "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": [ - { - "v": 1 - }, - { - "v": 2 - } - ] - } - } - }, - "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": { - "example.com/cap/test": [ - { - "v": 1 - }, - { - "v": 2 - } - ] - } - } - }, - "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": { - "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": [ - { - "v": 1 - }, - { - "v": 2 - } - ] - } - } - }, - "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": { - "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": [ - { - "v": 1 - }, - { - "v": 2 - } - ] - } - } - }, - "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": { - "example.com/cap/test": [ - { - "v": 1 - }, - { - "v": 2 - } - ] - } - } - }, - "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": { - "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": [ - { - "v": 1 - }, - { - "v": 2 - } - ] - } - } - }, - "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": { - "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": [ - { - "v": 1 - }, - { - "v": 2 - } - ] - } - } - } - } + ] }, "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": [ @@ -4033,7 +516,10 @@ ], "CapGrant": [ { - "Dsts": ["100.90.199.68/32", "fd7a:115c:a1e0::2d01:c747/128"], + "Dsts": [ + "100.90.199.68/32", + "fd7a:115c:a1e0::2d01:c747/128" + ], "CapMap": { "example.com/cap/test": [ { @@ -4053,7 +539,10 @@ ], "CapGrant": [ { - "Dsts": ["100.90.199.68/32", "fd7a:115c:a1e0::2d01:c747/128"], + "Dsts": [ + "100.90.199.68/32", + "fd7a:115c:a1e0::2d01:c747/128" + ], "CapMap": { "example.com/cap/test": [ { @@ -4064,509 +553,7 @@ } ] } - ], - "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.90.199.68/32", - "Cap": "example.com/cap/test", - "Values": [ - { - "v": 1 - } - ] - }, - { - "Dst": "fd7a:115c:a1e0::2d01:c747/128", - "Cap": "example.com/cap/test", - "Values": [ - { - "v": 1 - } - ] - } - ] - }, - { - "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.90.199.68/32", - "Cap": "example.com/cap/test", - "Values": [ - { - "v": 2 - } - ] - }, - { - "Dst": "fd7a:115c:a1e0::2d01:c747/128", - "Cap": "example.com/cap/test", - "Values": [ - { - "v": 2 - } - ] - } - ] - } - ], - "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": { - "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": [ - { - "v": 1 - }, - { - "v": 2 - } - ] - } - } - }, - "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": { - "example.com/cap/test": [ - { - "v": 1 - }, - { - "v": 2 - } - ] - } - } - }, - "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": { - "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": [ - { - "v": 1 - }, - { - "v": 2 - } - ] - } - } - }, - "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": { - "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": [ - { - "v": 1 - }, - { - "v": 2 - } - ] - } - } - }, - "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": { - "example.com/cap/test": [ - { - "v": 1 - }, - { - "v": 2 - } - ] - } - } - }, - "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": { - "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": [ - { - "v": 1 - }, - { - "v": 2 - } - ] - } - } - }, - "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": { - "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": [ - { - "v": 1 - }, - { - "v": 2 - } - ] - } - } - } - } + ] } } } diff --git a/hscontrol/policy/v2/testdata/grant_results/GRANT-K2.hujson b/hscontrol/policy/v2/testdata/grant_results/GRANT-K2.hujson index f00b8d2da..1e612067f 100644 --- a/hscontrol/policy/v2/testdata/grant_results/GRANT-K2.hujson +++ b/hscontrol/policy/v2/testdata/grant_results/GRANT-K2.hujson @@ -5,23 +5,37 @@ // Expected: Rules on 8 nodes { "test_id": "GRANT-K2", - "timestamp": "2026-02-23T02:54:08Z", - "propagation_wait_seconds": 15, "input": { - "policy_file": "grant_policies/grant_k2.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -30,102 +44,89 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "grants": [ { - "src": ["*"], - "dst": ["*"], - "ip": ["*"] + "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": 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"], + "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"], + "tags": [ + "tag:router" + ], "ipv4": "100.92.142.61", - "ipv6": "fd7a:115c:a1e0::3e37:8e3d", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] + "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"], + "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"], + "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"], + "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" @@ -134,10 +135,6 @@ }, "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": [ @@ -156,406 +153,9 @@ } ] } - ], - "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": [ - { - "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": { - "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": { - "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/exit-node/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/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": { - "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/exit-node/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/exit-node/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 - } - } - } + ] }, "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": [ @@ -574,405 +174,9 @@ } ] } - ], - "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": [ - { - "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": { - "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": [ { "SrcIPs": [ @@ -991,406 +195,9 @@ } ] } - ], - "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": [ - { - "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": { - "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-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": { - "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/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": { - "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-client/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-client/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-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": [ @@ -1409,406 +216,9 @@ } ] } - ], - "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": [ - { - "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": { - "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-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": { - "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.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": { - "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-prod/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-prod/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-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": [ @@ -1827,406 +237,9 @@ } ] } - ], - "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": [ - { - "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": { - "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": [ { "SrcIPs": [ @@ -2245,406 +258,9 @@ } ] } - ], - "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": [ - { - "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": { - "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/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": { - "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/user-kris/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/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": { - "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/user-kris/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-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": [ @@ -2663,406 +279,9 @@ } ] } - ], - "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": [ - { - "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": { - "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/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": { - "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/user-mon/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/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": { - "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.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": { - "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 - } - } - } + ] }, "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": [ @@ -3081,400 +300,7 @@ } ] } - ], - "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": [ - { - "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": { - "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/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": { - "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/user1/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/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": { - "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/user1/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 - } - } - } + ] } } } diff --git a/hscontrol/policy/v2/testdata/grant_results/GRANT-K20.hujson b/hscontrol/policy/v2/testdata/grant_results/GRANT-K20.hujson index e3710b819..337be3f06 100644 --- a/hscontrol/policy/v2/testdata/grant_results/GRANT-K20.hujson +++ b/hscontrol/policy/v2/testdata/grant_results/GRANT-K20.hujson @@ -5,23 +5,37 @@ // Expected: Rules on tagged-server { "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: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"] + "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", @@ -30,102 +44,89 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "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"] + "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"], + "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"], + "tags": [ + "tag:router" + ], "ipv4": "100.92.142.61", - "ipv6": "fd7a:115c:a1e0::3e37:8e3d", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] + "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"], + "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"], + "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"], + "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" @@ -134,193 +135,26 @@ }, "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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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"], + "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", @@ -337,390 +171,20 @@ } } ], - "IPProto": [6] + "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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": null } } } diff --git a/hscontrol/policy/v2/testdata/grant_results/GRANT-K21.hujson b/hscontrol/policy/v2/testdata/grant_results/GRANT-K21.hujson index 5d42367c0..d1d62a4da 100644 --- a/hscontrol/policy/v2/testdata/grant_results/GRANT-K21.hujson +++ b/hscontrol/policy/v2/testdata/grant_results/GRANT-K21.hujson @@ -5,23 +5,37 @@ // Expected: Rules on user-mon, user1 { "test_id": "GRANT-K21", - "timestamp": "2026-02-23T02:58:30Z", - "propagation_wait_seconds": 15, "input": { - "policy_file": "grant_policies/grant_k21.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -30,102 +44,89 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "grants": [ { - "src": ["*"], - "dst": ["user:*@passkey"], - "ip": ["tcp:22"] + "src": [ + "*" + ], + "dst": [ + "user:*@passkey" + ], + "ip": [ + "tcp:22" + ] } ] }, - "grants_section": [ - { - "src": ["*"], - "dst": ["user:*@passkey"], - "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"], + "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"], + "tags": [ + "tag:router" + ], "ipv4": "100.92.142.61", - "ipv6": "fd7a:115c:a1e0::3e37:8e3d", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] + "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"], + "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"], + "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"], + "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" @@ -134,820 +135,24 @@ }, "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": { - "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/exit-node/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 - } - } - } + "packet_filter_rules": 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": { - "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 - } - } - } + "packet_filter_rules": 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": { - "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-client/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 - } - } - } + "packet_filter_rules": 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": { - "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-prod/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 - } - } - } + "packet_filter_rules": 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": { - "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 - } - } - } + "packet_filter_rules": 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": { - "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/user-kris/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 - } - } - } + "packet_filter_rules": 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": [ @@ -972,408 +177,13 @@ } } ], - "IPProto": [6] + "IPProto": [ + 6 + ] } - ], - "packet_filter_matches": [ - { - "IPProto": [6], - "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": [ - { - "Net": "100.103.90.82/32", - "Ports": { - "First": 22, - "Last": 22 - } - }, - { - "Net": "fd7a:115c:a1e0::9e37:5a52/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/user-mon/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/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": { - "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/user-mon/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/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": { - "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.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": { - "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 - } - } - } + ] }, "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": [ @@ -1398,402 +208,11 @@ } } ], - "IPProto": [6] + "IPProto": [ + 6 + ] } - ], - "packet_filter_matches": [ - { - "IPProto": [6], - "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": [ - { - "Net": "100.90.199.68/32", - "Ports": { - "First": 22, - "Last": 22 - } - }, - { - "Net": "fd7a:115c:a1e0::2d01:c747/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/user1/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/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": { - "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/user1/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/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": { - "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/user1/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 - } - } - } + ] } } } diff --git a/hscontrol/policy/v2/testdata/grant_results/GRANT-K22.hujson b/hscontrol/policy/v2/testdata/grant_results/GRANT-K22.hujson index 02b83af5f..de4ef47ae 100644 --- a/hscontrol/policy/v2/testdata/grant_results/GRANT-K22.hujson +++ b/hscontrol/policy/v2/testdata/grant_results/GRANT-K22.hujson @@ -5,23 +5,37 @@ // Expected: Rules on tagged-server { "test_id": "GRANT-K22", - "timestamp": "2026-02-23T02:58:46Z", - "propagation_wait_seconds": 15, "input": { - "policy_file": "grant_policies/grant_k22.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -30,102 +44,89 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "grants": [ { - "src": ["*"], - "dst": ["tag:server"], - "ip": ["47"] + "src": [ + "*" + ], + "dst": [ + "tag:server" + ], + "ip": [ + "47" + ] } ] }, - "grants_section": [ - { - "src": ["*"], - "dst": ["tag:server"], - "ip": ["47"] - } - ], - "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"], + "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"], + "tags": [ + "tag:router" + ], "ipv4": "100.92.142.61", - "ipv6": "fd7a:115c:a1e0::3e37:8e3d", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] + "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"], + "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"], + "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"], + "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" @@ -134,370 +135,18 @@ }, "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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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": [ @@ -523,670 +172,16 @@ } ] } - ], - "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": [ - { - "Net": "100.108.74.26/32", - "Ports": { - "First": 47, - "Last": 47 - } - }, - { - "Net": "fd7a:115c:a1e0::b901:4a87/128", - "Ports": { - "First": 47, - "Last": 47 - } - } - ], - "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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": null } } } diff --git a/hscontrol/policy/v2/testdata/grant_results/GRANT-K23.hujson b/hscontrol/policy/v2/testdata/grant_results/GRANT-K23.hujson index 794d29326..4cc6c3a49 100644 --- a/hscontrol/policy/v2/testdata/grant_results/GRANT-K23.hujson +++ b/hscontrol/policy/v2/testdata/grant_results/GRANT-K23.hujson @@ -5,24 +5,38 @@ // Expected: Error (HTTP 400) — port range "0": first port must be >0, or use '*' for wildcard { "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: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"] + "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", @@ -31,23 +45,34 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "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"] + "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" } + "api_response_body": { + "message": "port range \"0\": first port must be >0, or use '*' for wildcard" + } } } diff --git a/hscontrol/policy/v2/testdata/grant_results/GRANT-K24.hujson b/hscontrol/policy/v2/testdata/grant_results/GRANT-K24.hujson index d725364fc..ab64ba61c 100644 --- a/hscontrol/policy/v2/testdata/grant_results/GRANT-K24.hujson +++ b/hscontrol/policy/v2/testdata/grant_results/GRANT-K24.hujson @@ -5,23 +5,37 @@ // Expected: Rules on 8 nodes { "test_id": "GRANT-K24", - "timestamp": "2026-02-23T02:59:03Z", - "propagation_wait_seconds": 15, "input": { - "policy_file": "grant_policies/grant_k24.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -30,106 +44,91 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "grants": [ { - "src": ["*"], - "dst": ["*"], + "src": [ + "*" + ], + "dst": [ + "*" + ], "app": { - "example.com/a/b/c/d/e/f": [{}] + "example.com/a/b/c/d/e/f": [ + {} + ] } } ] }, - "grants_section": [ - { - "src": ["*"], - "dst": ["*"], - "app": { - "example.com/a/b/c/d/e/f": [{}] - } - } - ], - "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"], + "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"], + "tags": [ + "tag:router" + ], "ipv4": "100.92.142.61", - "ipv6": "fd7a:115c:a1e0::3e37:8e3d", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] + "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"], + "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"], + "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"], + "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" @@ -138,10 +137,6 @@ }, "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": [ @@ -152,423 +147,21 @@ ], "CapGrant": [ { - "Dsts": ["100.85.66.106/32", "fd7a:115c:a1e0::7c37:426a/128"], + "Dsts": [ + "100.85.66.106/32", + "fd7a:115c:a1e0::7c37:426a/128" + ], "CapMap": { - "example.com/a/b/c/d/e/f": [{}] + "example.com/a/b/c/d/e/f": [ + {} + ] } } ] } - ], - "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.85.66.106/32", - "Cap": "example.com/a/b/c/d/e/f", - "Values": [{}] - }, - { - "Dst": "fd7a:115c:a1e0::7c37:426a/128", - "Cap": "example.com/a/b/c/d/e/f", - "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": { - "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": { - "example.com/a/b/c/d/e/f": [{}] - } - } - }, - "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": { - "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/a/b/c/d/e/f": [{}] - } - } - }, - "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": { - "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/a/b/c/d/e/f": [{}] - } - } - }, - "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": { - "example.com/a/b/c/d/e/f": [{}] - } - } - }, - "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": { - "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/a/b/c/d/e/f": [{}] - } - } - }, - "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": { - "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/a/b/c/d/e/f": [{}] - } - } - }, - "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": { - "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/a/b/c/d/e/f": [{}] - } - } - } - } + ] }, "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": [ @@ -579,422 +172,21 @@ ], "CapGrant": [ { - "Dsts": ["100.92.142.61/32", "fd7a:115c:a1e0::3e37:8e3d/128"], + "Dsts": [ + "100.92.142.61/32", + "fd7a:115c:a1e0::3e37:8e3d/128" + ], "CapMap": { - "example.com/a/b/c/d/e/f": [{}] + "example.com/a/b/c/d/e/f": [ + {} + ] } } ] } - ], - "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.92.142.61/32", - "Cap": "example.com/a/b/c/d/e/f", - "Values": [{}] - }, - { - "Dst": "fd7a:115c:a1e0::3e37:8e3d/128", - "Cap": "example.com/a/b/c/d/e/f", - "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": { - "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/a/b/c/d/e/f": [{}] - } - } - }, - "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": { - "example.com/a/b/c/d/e/f": [{}] - } - } - }, - "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": { - "example.com/a/b/c/d/e/f": [{}] - } - } - }, - "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": { - "example.com/a/b/c/d/e/f": [{}] - } - } - }, - "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": { - "example.com/a/b/c/d/e/f": [{}] - } - } - }, - "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": { - "example.com/a/b/c/d/e/f": [{}] - } - } - }, - "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": { - "example.com/a/b/c/d/e/f": [{}] - } - } - } - } + ] }, "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": [ @@ -1005,423 +197,21 @@ ], "CapGrant": [ { - "Dsts": ["100.83.200.69/32", "fd7a:115c:a1e0::c537:c845/128"], + "Dsts": [ + "100.83.200.69/32", + "fd7a:115c:a1e0::c537:c845/128" + ], "CapMap": { - "example.com/a/b/c/d/e/f": [{}] + "example.com/a/b/c/d/e/f": [ + {} + ] } } ] } - ], - "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.83.200.69/32", - "Cap": "example.com/a/b/c/d/e/f", - "Values": [{}] - }, - { - "Dst": "fd7a:115c:a1e0::c537:c845/128", - "Cap": "example.com/a/b/c/d/e/f", - "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": { - "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/a/b/c/d/e/f": [{}] - } - } - }, - "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": { - "example.com/a/b/c/d/e/f": [{}] - } - } - }, - "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": { - "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/a/b/c/d/e/f": [{}] - } - } - }, - "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": { - "example.com/a/b/c/d/e/f": [{}] - } - } - }, - "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": { - "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/a/b/c/d/e/f": [{}] - } - } - }, - "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": { - "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/a/b/c/d/e/f": [{}] - } - } - }, - "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": { - "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/a/b/c/d/e/f": [{}] - } - } - } - } + ] }, "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": [ @@ -1432,423 +222,21 @@ ], "CapGrant": [ { - "Dsts": ["100.103.8.15/32", "fd7a:115c:a1e0::5b37:80f/128"], + "Dsts": [ + "100.103.8.15/32", + "fd7a:115c:a1e0::5b37:80f/128" + ], "CapMap": { - "example.com/a/b/c/d/e/f": [{}] + "example.com/a/b/c/d/e/f": [ + {} + ] } } ] } - ], - "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.103.8.15/32", - "Cap": "example.com/a/b/c/d/e/f", - "Values": [{}] - }, - { - "Dst": "fd7a:115c:a1e0::5b37:80f/128", - "Cap": "example.com/a/b/c/d/e/f", - "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": { - "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/a/b/c/d/e/f": [{}] - } - } - }, - "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": { - "example.com/a/b/c/d/e/f": [{}] - } - } - }, - "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": { - "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/a/b/c/d/e/f": [{}] - } - } - }, - "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": { - "example.com/a/b/c/d/e/f": [{}] - } - } - }, - "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": { - "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/a/b/c/d/e/f": [{}] - } - } - }, - "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": { - "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/a/b/c/d/e/f": [{}] - } - } - }, - "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": { - "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/a/b/c/d/e/f": [{}] - } - } - } - } + ] }, "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": [ @@ -1859,423 +247,21 @@ ], "CapGrant": [ { - "Dsts": ["100.108.74.26/32", "fd7a:115c:a1e0::b901:4a87/128"], + "Dsts": [ + "100.108.74.26/32", + "fd7a:115c:a1e0::b901:4a87/128" + ], "CapMap": { - "example.com/a/b/c/d/e/f": [{}] + "example.com/a/b/c/d/e/f": [ + {} + ] } } ] } - ], - "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": "example.com/a/b/c/d/e/f", - "Values": [{}] - }, - { - "Dst": "fd7a:115c:a1e0::b901:4a87/128", - "Cap": "example.com/a/b/c/d/e/f", - "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/a/b/c/d/e/f": [{}] - } - } - }, - "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": { - "example.com/a/b/c/d/e/f": [{}] - } - } - }, - "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/a/b/c/d/e/f": [{}] - } - } - }, - "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/a/b/c/d/e/f": [{}] - } - } - }, - "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/a/b/c/d/e/f": [{}] - } - } - }, - "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/a/b/c/d/e/f": [{}] - } - } - }, - "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/a/b/c/d/e/f": [{}] - } - } - } - } + ] }, "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": [ @@ -2286,423 +272,21 @@ ], "CapGrant": [ { - "Dsts": ["100.110.121.96/32", "fd7a:115c:a1e0::1737:7960/128"], + "Dsts": [ + "100.110.121.96/32", + "fd7a:115c:a1e0::1737:7960/128" + ], "CapMap": { - "example.com/a/b/c/d/e/f": [{}] + "example.com/a/b/c/d/e/f": [ + {} + ] } } ] } - ], - "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.110.121.96/32", - "Cap": "example.com/a/b/c/d/e/f", - "Values": [{}] - }, - { - "Dst": "fd7a:115c:a1e0::1737:7960/128", - "Cap": "example.com/a/b/c/d/e/f", - "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": { - "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/a/b/c/d/e/f": [{}] - } - } - }, - "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": { - "example.com/a/b/c/d/e/f": [{}] - } - } - }, - "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": { - "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/a/b/c/d/e/f": [{}] - } - } - }, - "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": { - "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/a/b/c/d/e/f": [{}] - } - } - }, - "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": { - "example.com/a/b/c/d/e/f": [{}] - } - } - }, - "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": { - "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/a/b/c/d/e/f": [{}] - } - } - }, - "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": { - "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/a/b/c/d/e/f": [{}] - } - } - } - } + ] }, "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": [ @@ -2713,423 +297,21 @@ ], "CapGrant": [ { - "Dsts": ["100.103.90.82/32", "fd7a:115c:a1e0::9e37:5a52/128"], + "Dsts": [ + "100.103.90.82/32", + "fd7a:115c:a1e0::9e37:5a52/128" + ], "CapMap": { - "example.com/a/b/c/d/e/f": [{}] + "example.com/a/b/c/d/e/f": [ + {} + ] } } ] } - ], - "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.103.90.82/32", - "Cap": "example.com/a/b/c/d/e/f", - "Values": [{}] - }, - { - "Dst": "fd7a:115c:a1e0::9e37:5a52/128", - "Cap": "example.com/a/b/c/d/e/f", - "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": { - "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/a/b/c/d/e/f": [{}] - } - } - }, - "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": { - "example.com/a/b/c/d/e/f": [{}] - } - } - }, - "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": { - "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/a/b/c/d/e/f": [{}] - } - } - }, - "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": { - "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/a/b/c/d/e/f": [{}] - } - } - }, - "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": { - "example.com/a/b/c/d/e/f": [{}] - } - } - }, - "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": { - "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/a/b/c/d/e/f": [{}] - } - } - }, - "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": { - "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/a/b/c/d/e/f": [{}] - } - } - } - } + ] }, "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": [ @@ -3140,417 +322,19 @@ ], "CapGrant": [ { - "Dsts": ["100.90.199.68/32", "fd7a:115c:a1e0::2d01:c747/128"], + "Dsts": [ + "100.90.199.68/32", + "fd7a:115c:a1e0::2d01:c747/128" + ], "CapMap": { - "example.com/a/b/c/d/e/f": [{}] + "example.com/a/b/c/d/e/f": [ + {} + ] } } ] } - ], - "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.90.199.68/32", - "Cap": "example.com/a/b/c/d/e/f", - "Values": [{}] - }, - { - "Dst": "fd7a:115c:a1e0::2d01:c747/128", - "Cap": "example.com/a/b/c/d/e/f", - "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": { - "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/a/b/c/d/e/f": [{}] - } - } - }, - "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": { - "example.com/a/b/c/d/e/f": [{}] - } - } - }, - "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": { - "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/a/b/c/d/e/f": [{}] - } - } - }, - "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": { - "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/a/b/c/d/e/f": [{}] - } - } - }, - "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": { - "example.com/a/b/c/d/e/f": [{}] - } - } - }, - "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": { - "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/a/b/c/d/e/f": [{}] - } - } - }, - "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": { - "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/a/b/c/d/e/f": [{}] - } - } - } - } + ] } } } diff --git a/hscontrol/policy/v2/testdata/grant_results/GRANT-K25.hujson b/hscontrol/policy/v2/testdata/grant_results/GRANT-K25.hujson index 0a4ed47eb..439926afa 100644 --- a/hscontrol/policy/v2/testdata/grant_results/GRANT-K25.hujson +++ b/hscontrol/policy/v2/testdata/grant_results/GRANT-K25.hujson @@ -5,23 +5,37 @@ // Expected: Rules on 8 nodes { "test_id": "GRANT-K25", - "timestamp": "2026-02-23T02:59:19Z", - "propagation_wait_seconds": 15, "input": { - "policy_file": "grant_policies/grant_k25.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -30,106 +44,91 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "grants": [ { - "src": ["*"], - "dst": ["*"], + "src": [ + "*" + ], + "dst": [ + "*" + ], "app": { - "my-company.internal/cap/access": [{}] + "my-company.internal/cap/access": [ + {} + ] } } ] }, - "grants_section": [ - { - "src": ["*"], - "dst": ["*"], - "app": { - "my-company.internal/cap/access": [{}] - } - } - ], - "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"], + "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"], + "tags": [ + "tag:router" + ], "ipv4": "100.92.142.61", - "ipv6": "fd7a:115c:a1e0::3e37:8e3d", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] + "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"], + "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"], + "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"], + "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" @@ -138,10 +137,6 @@ }, "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": [ @@ -152,423 +147,21 @@ ], "CapGrant": [ { - "Dsts": ["100.85.66.106/32", "fd7a:115c:a1e0::7c37:426a/128"], + "Dsts": [ + "100.85.66.106/32", + "fd7a:115c:a1e0::7c37:426a/128" + ], "CapMap": { - "my-company.internal/cap/access": [{}] + "my-company.internal/cap/access": [ + {} + ] } } ] } - ], - "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.85.66.106/32", - "Cap": "my-company.internal/cap/access", - "Values": [{}] - }, - { - "Dst": "fd7a:115c:a1e0::7c37:426a/128", - "Cap": "my-company.internal/cap/access", - "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": { - "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": { - "my-company.internal/cap/access": [{}] - } - } - }, - "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": { - "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": { - "my-company.internal/cap/access": [{}] - } - } - }, - "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": { - "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": { - "my-company.internal/cap/access": [{}] - } - } - }, - "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": { - "my-company.internal/cap/access": [{}] - } - } - }, - "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": { - "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": { - "my-company.internal/cap/access": [{}] - } - } - }, - "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": { - "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": { - "my-company.internal/cap/access": [{}] - } - } - }, - "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": { - "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": { - "my-company.internal/cap/access": [{}] - } - } - } - } + ] }, "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": [ @@ -579,422 +172,21 @@ ], "CapGrant": [ { - "Dsts": ["100.92.142.61/32", "fd7a:115c:a1e0::3e37:8e3d/128"], + "Dsts": [ + "100.92.142.61/32", + "fd7a:115c:a1e0::3e37:8e3d/128" + ], "CapMap": { - "my-company.internal/cap/access": [{}] + "my-company.internal/cap/access": [ + {} + ] } } ] } - ], - "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.92.142.61/32", - "Cap": "my-company.internal/cap/access", - "Values": [{}] - }, - { - "Dst": "fd7a:115c:a1e0::3e37:8e3d/128", - "Cap": "my-company.internal/cap/access", - "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": { - "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": { - "my-company.internal/cap/access": [{}] - } - } - }, - "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": { - "my-company.internal/cap/access": [{}] - } - } - }, - "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": { - "my-company.internal/cap/access": [{}] - } - } - }, - "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": { - "my-company.internal/cap/access": [{}] - } - } - }, - "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": { - "my-company.internal/cap/access": [{}] - } - } - }, - "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": { - "my-company.internal/cap/access": [{}] - } - } - }, - "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": { - "my-company.internal/cap/access": [{}] - } - } - } - } + ] }, "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": [ @@ -1005,423 +197,21 @@ ], "CapGrant": [ { - "Dsts": ["100.83.200.69/32", "fd7a:115c:a1e0::c537:c845/128"], + "Dsts": [ + "100.83.200.69/32", + "fd7a:115c:a1e0::c537:c845/128" + ], "CapMap": { - "my-company.internal/cap/access": [{}] + "my-company.internal/cap/access": [ + {} + ] } } ] } - ], - "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.83.200.69/32", - "Cap": "my-company.internal/cap/access", - "Values": [{}] - }, - { - "Dst": "fd7a:115c:a1e0::c537:c845/128", - "Cap": "my-company.internal/cap/access", - "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": { - "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": { - "my-company.internal/cap/access": [{}] - } - } - }, - "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": { - "my-company.internal/cap/access": [{}] - } - } - }, - "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": { - "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": { - "my-company.internal/cap/access": [{}] - } - } - }, - "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": { - "my-company.internal/cap/access": [{}] - } - } - }, - "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": { - "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": { - "my-company.internal/cap/access": [{}] - } - } - }, - "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": { - "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": { - "my-company.internal/cap/access": [{}] - } - } - }, - "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": { - "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": { - "my-company.internal/cap/access": [{}] - } - } - } - } + ] }, "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": [ @@ -1432,423 +222,21 @@ ], "CapGrant": [ { - "Dsts": ["100.103.8.15/32", "fd7a:115c:a1e0::5b37:80f/128"], + "Dsts": [ + "100.103.8.15/32", + "fd7a:115c:a1e0::5b37:80f/128" + ], "CapMap": { - "my-company.internal/cap/access": [{}] + "my-company.internal/cap/access": [ + {} + ] } } ] } - ], - "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.103.8.15/32", - "Cap": "my-company.internal/cap/access", - "Values": [{}] - }, - { - "Dst": "fd7a:115c:a1e0::5b37:80f/128", - "Cap": "my-company.internal/cap/access", - "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": { - "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": { - "my-company.internal/cap/access": [{}] - } - } - }, - "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": { - "my-company.internal/cap/access": [{}] - } - } - }, - "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": { - "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": { - "my-company.internal/cap/access": [{}] - } - } - }, - "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": { - "my-company.internal/cap/access": [{}] - } - } - }, - "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": { - "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": { - "my-company.internal/cap/access": [{}] - } - } - }, - "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": { - "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": { - "my-company.internal/cap/access": [{}] - } - } - }, - "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": { - "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": { - "my-company.internal/cap/access": [{}] - } - } - } - } + ] }, "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": [ @@ -1859,423 +247,21 @@ ], "CapGrant": [ { - "Dsts": ["100.108.74.26/32", "fd7a:115c:a1e0::b901:4a87/128"], + "Dsts": [ + "100.108.74.26/32", + "fd7a:115c:a1e0::b901:4a87/128" + ], "CapMap": { - "my-company.internal/cap/access": [{}] + "my-company.internal/cap/access": [ + {} + ] } } ] } - ], - "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": "my-company.internal/cap/access", - "Values": [{}] - }, - { - "Dst": "fd7a:115c:a1e0::b901:4a87/128", - "Cap": "my-company.internal/cap/access", - "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": { - "my-company.internal/cap/access": [{}] - } - } - }, - "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": { - "my-company.internal/cap/access": [{}] - } - } - }, - "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": { - "my-company.internal/cap/access": [{}] - } - } - }, - "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": { - "my-company.internal/cap/access": [{}] - } - } - }, - "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": { - "my-company.internal/cap/access": [{}] - } - } - }, - "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": { - "my-company.internal/cap/access": [{}] - } - } - }, - "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": { - "my-company.internal/cap/access": [{}] - } - } - } - } + ] }, "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": [ @@ -2286,423 +272,21 @@ ], "CapGrant": [ { - "Dsts": ["100.110.121.96/32", "fd7a:115c:a1e0::1737:7960/128"], + "Dsts": [ + "100.110.121.96/32", + "fd7a:115c:a1e0::1737:7960/128" + ], "CapMap": { - "my-company.internal/cap/access": [{}] + "my-company.internal/cap/access": [ + {} + ] } } ] } - ], - "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.110.121.96/32", - "Cap": "my-company.internal/cap/access", - "Values": [{}] - }, - { - "Dst": "fd7a:115c:a1e0::1737:7960/128", - "Cap": "my-company.internal/cap/access", - "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": { - "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": { - "my-company.internal/cap/access": [{}] - } - } - }, - "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": { - "my-company.internal/cap/access": [{}] - } - } - }, - "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": { - "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": { - "my-company.internal/cap/access": [{}] - } - } - }, - "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": { - "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": { - "my-company.internal/cap/access": [{}] - } - } - }, - "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": { - "my-company.internal/cap/access": [{}] - } - } - }, - "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": { - "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": { - "my-company.internal/cap/access": [{}] - } - } - }, - "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": { - "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": { - "my-company.internal/cap/access": [{}] - } - } - } - } + ] }, "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": [ @@ -2713,423 +297,21 @@ ], "CapGrant": [ { - "Dsts": ["100.103.90.82/32", "fd7a:115c:a1e0::9e37:5a52/128"], + "Dsts": [ + "100.103.90.82/32", + "fd7a:115c:a1e0::9e37:5a52/128" + ], "CapMap": { - "my-company.internal/cap/access": [{}] + "my-company.internal/cap/access": [ + {} + ] } } ] } - ], - "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.103.90.82/32", - "Cap": "my-company.internal/cap/access", - "Values": [{}] - }, - { - "Dst": "fd7a:115c:a1e0::9e37:5a52/128", - "Cap": "my-company.internal/cap/access", - "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": { - "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": { - "my-company.internal/cap/access": [{}] - } - } - }, - "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": { - "my-company.internal/cap/access": [{}] - } - } - }, - "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": { - "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": { - "my-company.internal/cap/access": [{}] - } - } - }, - "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": { - "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": { - "my-company.internal/cap/access": [{}] - } - } - }, - "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": { - "my-company.internal/cap/access": [{}] - } - } - }, - "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": { - "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": { - "my-company.internal/cap/access": [{}] - } - } - }, - "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": { - "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": { - "my-company.internal/cap/access": [{}] - } - } - } - } + ] }, "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": [ @@ -3140,417 +322,19 @@ ], "CapGrant": [ { - "Dsts": ["100.90.199.68/32", "fd7a:115c:a1e0::2d01:c747/128"], + "Dsts": [ + "100.90.199.68/32", + "fd7a:115c:a1e0::2d01:c747/128" + ], "CapMap": { - "my-company.internal/cap/access": [{}] + "my-company.internal/cap/access": [ + {} + ] } } ] } - ], - "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.90.199.68/32", - "Cap": "my-company.internal/cap/access", - "Values": [{}] - }, - { - "Dst": "fd7a:115c:a1e0::2d01:c747/128", - "Cap": "my-company.internal/cap/access", - "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": { - "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": { - "my-company.internal/cap/access": [{}] - } - } - }, - "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": { - "my-company.internal/cap/access": [{}] - } - } - }, - "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": { - "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": { - "my-company.internal/cap/access": [{}] - } - } - }, - "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": { - "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": { - "my-company.internal/cap/access": [{}] - } - } - }, - "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": { - "my-company.internal/cap/access": [{}] - } - } - }, - "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": { - "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": { - "my-company.internal/cap/access": [{}] - } - } - }, - "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": { - "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": { - "my-company.internal/cap/access": [{}] - } - } - } - } + ] } } } diff --git a/hscontrol/policy/v2/testdata/grant_results/GRANT-K26.hujson b/hscontrol/policy/v2/testdata/grant_results/GRANT-K26.hujson index e41b19eb9..1e75062af 100644 --- a/hscontrol/policy/v2/testdata/grant_results/GRANT-K26.hujson +++ b/hscontrol/policy/v2/testdata/grant_results/GRANT-K26.hujson @@ -5,23 +5,37 @@ // Expected: Rules on 8 nodes { "test_id": "GRANT-K26", - "timestamp": "2026-02-23T02:59:36Z", - "propagation_wait_seconds": 15, "input": { - "policy_file": "grant_policies/grant_k26.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -30,102 +44,90 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "grants": [ { - "src": ["autogroup:member"], - "dst": ["autogroup:member", "autogroup:tagged"], - "ip": ["*"] + "src": [ + "autogroup:member" + ], + "dst": [ + "autogroup:member", + "autogroup:tagged" + ], + "ip": [ + "*" + ] } ] }, - "grants_section": [ - { - "src": ["autogroup:member"], - "dst": ["autogroup:member", "autogroup:tagged"], - "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"], + "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"], + "tags": [ + "tag:router" + ], "ipv4": "100.92.142.61", - "ipv6": "fd7a:115c:a1e0::3e37:8e3d", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] + "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"], + "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"], + "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"], + "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" @@ -134,10 +136,6 @@ }, "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": [ @@ -165,216 +163,9 @@ } ] } - ], - "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.85.66.106/32", - "Ports": { - "First": 0, - "Last": 65535 - } - }, - { - "Net": "fd7a:115c:a1e0::7c37:426a/128", - "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": { - "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/exit-node/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/exit-node/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 - } - } - } + ] }, "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": [ @@ -402,216 +193,9 @@ } ] } - ], - "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.92.142.61/32", - "Ports": { - "First": 0, - "Last": 65535 - } - }, - { - "Net": "fd7a:115c:a1e0::3e37:8e3d/128", - "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": { - "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": [ { "SrcIPs": [ @@ -639,216 +223,9 @@ } ] } - ], - "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.83.200.69/32", - "Ports": { - "First": 0, - "Last": 65535 - } - }, - { - "Net": "fd7a:115c:a1e0::c537:c845/128", - "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": { - "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-client/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-client/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-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": [ @@ -876,216 +253,9 @@ } ] } - ], - "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.103.8.15/32", - "Ports": { - "First": 0, - "Last": 65535 - } - }, - { - "Net": "fd7a:115c:a1e0::5b37:80f/128", - "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": { - "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-prod/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-prod/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-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": [ @@ -1113,216 +283,9 @@ } ] } - ], - "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": [] - } - ], - "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": 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": [ { "SrcIPs": [ @@ -1350,396 +313,9 @@ } ] } - ], - "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.110.121.96/32", - "Ports": { - "First": 0, - "Last": 65535 - } - }, - { - "Net": "fd7a:115c:a1e0::1737:7960/128", - "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": { - "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/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"], - "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": 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": { - "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/user-kris/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/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": { - "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/user-kris/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-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": [ @@ -1767,396 +343,9 @@ } ] } - ], - "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.103.90.82/32", - "Ports": { - "First": 0, - "Last": 65535 - } - }, - { - "Net": "fd7a:115c:a1e0::9e37:5a52/128", - "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": { - "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/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"], - "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": 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": { - "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/user-mon/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/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": { - "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.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": { - "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 - } - } - } + ] }, "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": [ @@ -2184,390 +373,7 @@ } ] } - ], - "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.90.199.68/32", - "Ports": { - "First": 0, - "Last": 65535 - } - }, - { - "Net": "fd7a:115c:a1e0::2d01:c747/128", - "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": { - "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/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"], - "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": 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": { - "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/user1/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/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": { - "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/user1/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 - } - } - } + ] } } } diff --git a/hscontrol/policy/v2/testdata/grant_results/GRANT-K27.hujson b/hscontrol/policy/v2/testdata/grant_results/GRANT-K27.hujson index eadd45b63..bf979816a 100644 --- a/hscontrol/policy/v2/testdata/grant_results/GRANT-K27.hujson +++ b/hscontrol/policy/v2/testdata/grant_results/GRANT-K27.hujson @@ -5,23 +5,37 @@ // Expected: Rules on user-kris, user-mon, user1 { "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: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"] + "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", @@ -30,106 +44,91 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "grants": [ { - "src": ["autogroup:member"], - "dst": ["autogroup:self"], + "src": [ + "autogroup:member" + ], + "dst": [ + "autogroup:self" + ], "app": { - "example.com/cap/self-service": [{}] + "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"], + "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"], + "tags": [ + "tag:router" + ], "ipv4": "100.92.142.61", - "ipv6": "fd7a:115c:a1e0::3e37:8e3d", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] + "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"], + "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"], + "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"], + "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" @@ -138,457 +137,88 @@ }, "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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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"], + "SrcIPs": [ + "100.110.121.96", + "fd7a:115c:a1e0::1737:7960" + ], "CapGrant": [ { - "Dsts": ["100.110.121.96/32", "fd7a:115c:a1e0::1737:7960/128"], + "Dsts": [ + "100.110.121.96/32", + "fd7a:115c:a1e0::1737:7960/128" + ], "CapMap": { - "example.com/cap/self-service": [{}] + "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"], + "SrcIPs": [ + "100.103.90.82", + "fd7a:115c:a1e0::9e37:5a52" + ], "CapGrant": [ { - "Dsts": ["100.103.90.82/32", "fd7a:115c:a1e0::9e37:5a52/128"], + "Dsts": [ + "100.103.90.82/32", + "fd7a:115c:a1e0::9e37:5a52/128" + ], "CapMap": { - "example.com/cap/self-service": [{}] + "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"], + "SrcIPs": [ + "100.90.199.68", + "fd7a:115c:a1e0::2d01:c747" + ], "CapGrant": [ { - "Dsts": ["100.90.199.68/32", "fd7a:115c:a1e0::2d01:c747/128"], + "Dsts": [ + "100.90.199.68/32", + "fd7a:115c:a1e0::2d01:c747/128" + ], "CapMap": { - "example.com/cap/self-service": [{}] + "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 - } - } + ] } } } diff --git a/hscontrol/policy/v2/testdata/grant_results/GRANT-K28.hujson b/hscontrol/policy/v2/testdata/grant_results/GRANT-K28.hujson index 4a89b98ff..3c1613810 100644 --- a/hscontrol/policy/v2/testdata/grant_results/GRANT-K28.hujson +++ b/hscontrol/policy/v2/testdata/grant_results/GRANT-K28.hujson @@ -5,23 +5,37 @@ // Expected: Rules on user-kris, user-mon, user1 { "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: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"] + "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", @@ -30,20 +44,34 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "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": ["*"], + "src": [ + "autogroup:member" + ], + "dst": [ + "autogroup:self" + ], + "ip": [ + "*" + ], "app": { "tailscale.com/cap/drive": [ { - "shares": ["*"], + "shares": [ + "*" + ], "access": "rw" } ] @@ -51,97 +79,64 @@ } ] }, - "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"], + "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"], + "tags": [ + "tag:router" + ], "ipv4": "100.92.142.61", - "ipv6": "fd7a:115c:a1e0::3e37:8e3d", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] + "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"], + "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"], + "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"], + "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" @@ -150,238 +145,27 @@ }, "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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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"], + "SrcIPs": [ + "100.110.121.96", + "fd7a:115c:a1e0::1737:7960" + ], "DstPorts": [ { "IP": "100.110.121.96", @@ -400,14 +184,22 @@ ] }, { - "SrcIPs": ["100.110.121.96", "fd7a:115c:a1e0::1737:7960"], + "SrcIPs": [ + "100.110.121.96", + "fd7a:115c:a1e0::1737:7960" + ], "CapGrant": [ { - "Dsts": ["100.110.121.96/32", "fd7a:115c:a1e0::1737:7960/128"], + "Dsts": [ + "100.110.121.96/32", + "fd7a:115c:a1e0::1737:7960/128" + ], "CapMap": { "tailscale.com/cap/drive": [ { - "shares": ["*"], + "shares": [ + "*" + ], "access": "rw" } ] @@ -416,133 +208,31 @@ ] }, { - "SrcIPs": ["100.110.121.96", "fd7a:115c:a1e0::1737:7960"], + "SrcIPs": [ + "100.110.121.96", + "fd7a:115c:a1e0::1737:7960" + ], "CapGrant": [ { - "Dsts": ["100.110.121.96/32", "fd7a:115c:a1e0::1737:7960/128"], + "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"], + "SrcIPs": [ + "100.103.90.82", + "fd7a:115c:a1e0::9e37:5a52" + ], "DstPorts": [ { "IP": "100.103.90.82", @@ -561,14 +251,22 @@ ] }, { - "SrcIPs": ["100.103.90.82", "fd7a:115c:a1e0::9e37:5a52"], + "SrcIPs": [ + "100.103.90.82", + "fd7a:115c:a1e0::9e37:5a52" + ], "CapGrant": [ { - "Dsts": ["100.103.90.82/32", "fd7a:115c:a1e0::9e37:5a52/128"], + "Dsts": [ + "100.103.90.82/32", + "fd7a:115c:a1e0::9e37:5a52/128" + ], "CapMap": { "tailscale.com/cap/drive": [ { - "shares": ["*"], + "shares": [ + "*" + ], "access": "rw" } ] @@ -577,133 +275,31 @@ ] }, { - "SrcIPs": ["100.103.90.82", "fd7a:115c:a1e0::9e37:5a52"], + "SrcIPs": [ + "100.103.90.82", + "fd7a:115c:a1e0::9e37:5a52" + ], "CapGrant": [ { - "Dsts": ["100.103.90.82/32", "fd7a:115c:a1e0::9e37:5a52/128"], + "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"], + "SrcIPs": [ + "100.90.199.68", + "fd7a:115c:a1e0::2d01:c747" + ], "DstPorts": [ { "IP": "100.90.199.68", @@ -722,14 +318,22 @@ ] }, { - "SrcIPs": ["100.90.199.68", "fd7a:115c:a1e0::2d01:c747"], + "SrcIPs": [ + "100.90.199.68", + "fd7a:115c:a1e0::2d01:c747" + ], "CapGrant": [ { - "Dsts": ["100.90.199.68/32", "fd7a:115c:a1e0::2d01:c747/128"], + "Dsts": [ + "100.90.199.68/32", + "fd7a:115c:a1e0::2d01:c747/128" + ], "CapMap": { "tailscale.com/cap/drive": [ { - "shares": ["*"], + "shares": [ + "*" + ], "access": "rw" } ] @@ -738,124 +342,23 @@ ] }, { - "SrcIPs": ["100.90.199.68", "fd7a:115c:a1e0::2d01:c747"], + "SrcIPs": [ + "100.90.199.68", + "fd7a:115c:a1e0::2d01:c747" + ], "CapGrant": [ { - "Dsts": ["100.90.199.68/32", "fd7a:115c:a1e0::2d01:c747/128"], + "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 - } - } + ] } } } diff --git a/hscontrol/policy/v2/testdata/grant_results/GRANT-K29.hujson b/hscontrol/policy/v2/testdata/grant_results/GRANT-K29.hujson index d7fdf9326..0d62e4faf 100644 --- a/hscontrol/policy/v2/testdata/grant_results/GRANT-K29.hujson +++ b/hscontrol/policy/v2/testdata/grant_results/GRANT-K29.hujson @@ -3,23 +3,37 @@ // Expected: No filter rules on any node { "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: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"] + "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", @@ -28,90 +42,77 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "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"], + "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"], + "tags": [ + "tag:router" + ], "ipv4": "100.92.142.61", - "ipv6": "fd7a:115c:a1e0::3e37:8e3d", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] + "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"], + "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"], + "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"], + "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" @@ -120,364 +121,28 @@ }, "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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": null } } } diff --git a/hscontrol/policy/v2/testdata/grant_results/GRANT-K3.hujson b/hscontrol/policy/v2/testdata/grant_results/GRANT-K3.hujson index 00862f4cb..6da653ad7 100644 --- a/hscontrol/policy/v2/testdata/grant_results/GRANT-K3.hujson +++ b/hscontrol/policy/v2/testdata/grant_results/GRANT-K3.hujson @@ -6,23 +6,37 @@ // Expected: Rules on 8 nodes { "test_id": "GRANT-K3", - "timestamp": "2026-02-23T02:54:24Z", - "propagation_wait_seconds": 15, "input": { - "policy_file": "grant_policies/grant_k3.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -31,113 +45,102 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "acls": [ { "action": "accept", - "src": ["*"], - "dst": ["*:*"] + "src": [ + "*" + ], + "dst": [ + "*:*" + ] } ], "grants": [ { - "src": ["*"], - "dst": ["tag:server"], + "src": [ + "*" + ], + "dst": [ + "tag:server" + ], "app": { - "example.com/cap/test": [{}] + "example.com/cap/test": [ + {} + ] } } ] }, - "grants_section": [ - { - "src": ["*"], - "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"], + "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"], + "tags": [ + "tag:router" + ], "ipv4": "100.92.142.61", - "ipv6": "fd7a:115c:a1e0::3e37:8e3d", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] + "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"], + "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"], + "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"], + "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" @@ -146,10 +149,6 @@ }, "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": [ @@ -168,406 +167,9 @@ } ] } - ], - "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": [ - { - "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": { - "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": { - "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/exit-node/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/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": { - "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/exit-node/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/exit-node/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 - } - } - } + ] }, "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": [ @@ -586,405 +188,9 @@ } ] } - ], - "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": [ - { - "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": { - "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": [ { "SrcIPs": [ @@ -1003,406 +209,9 @@ } ] } - ], - "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": [ - { - "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": { - "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-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": { - "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/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": { - "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-client/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-client/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-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": [ @@ -1421,406 +230,9 @@ } ] } - ], - "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": [ - { - "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": { - "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-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": { - "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.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": { - "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-prod/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-prod/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-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": [ @@ -1831,9 +243,14 @@ ], "CapGrant": [ { - "Dsts": ["100.108.74.26/32", "fd7a:115c:a1e0::b901:4a87/128"], + "Dsts": [ + "100.108.74.26/32", + "fd7a:115c:a1e0::b901:4a87/128" + ], "CapMap": { - "example.com/cap/test": [{}] + "example.com/cap/test": [ + {} + ] } } ] @@ -1855,454 +272,9 @@ } ] } - ], - "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": "example.com/cap/test", - "Values": [{}] - }, - { - "Dst": "fd7a:115c:a1e0::b901:4a87/128", - "Cap": "example.com/cap/test", - "Values": [{}] - } - ] - }, - { - "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": [ - { - "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": { - "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", "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": { - "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": { - "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": [ { "SrcIPs": [ @@ -2321,406 +293,9 @@ } ] } - ], - "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": [ - { - "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": { - "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/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": { - "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/user-kris/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/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": { - "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/user-kris/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-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": [ @@ -2739,406 +314,9 @@ } ] } - ], - "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": [ - { - "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": { - "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/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": { - "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/user-mon/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/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": { - "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.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": { - "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 - } - } - } + ] }, "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": [ @@ -3157,400 +335,7 @@ } ] } - ], - "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": [ - { - "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": { - "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/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": { - "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/user1/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/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": { - "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/user1/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 - } - } - } + ] } } } diff --git a/hscontrol/policy/v2/testdata/grant_results/GRANT-K30.hujson b/hscontrol/policy/v2/testdata/grant_results/GRANT-K30.hujson index 06e64c0a8..ff17f65a5 100644 --- a/hscontrol/policy/v2/testdata/grant_results/GRANT-K30.hujson +++ b/hscontrol/policy/v2/testdata/grant_results/GRANT-K30.hujson @@ -5,24 +5,38 @@ // Expected: Error (HTTP 400) — tag "tag:nonexistent" not found { "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: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"] + "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", @@ -31,26 +45,38 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "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": ["*"] + "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" } + "api_response_body": { + "message": "tag \"tag:nonexistent\" not found" + } } } diff --git a/hscontrol/policy/v2/testdata/grant_results/GRANT-K4.hujson b/hscontrol/policy/v2/testdata/grant_results/GRANT-K4.hujson index 6beb03e09..6b934dfb6 100644 --- a/hscontrol/policy/v2/testdata/grant_results/GRANT-K4.hujson +++ b/hscontrol/policy/v2/testdata/grant_results/GRANT-K4.hujson @@ -6,23 +6,37 @@ // Expected: Rules on tagged-server { "test_id": "GRANT-K4", - "timestamp": "2026-02-23T02:54:40Z", - "propagation_wait_seconds": 15, "input": { - "policy_file": "grant_policies/grant_k4.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -31,109 +45,101 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "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"] + "src": [ + "tag:client" + ], + "dst": [ + "tag:server:22" + ] } ], "grants": [ { - "src": ["*"], - "dst": ["tag:server"], - "ip": ["tcp:80", "tcp:443"] + "src": [ + "*" + ], + "dst": [ + "tag:server" + ], + "ip": [ + "tcp:80", + "tcp:443" + ] } ] }, - "grants_section": [ - { - "src": ["*"], - "dst": ["tag:server"], - "ip": ["tcp:80", "tcp:443"] - } - ], - "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"], + "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"], + "tags": [ + "tag:router" + ], "ipv4": "100.92.142.61", - "ipv6": "fd7a:115c:a1e0::3e37:8e3d", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] + "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"], + "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"], + "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"], + "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" @@ -142,370 +148,18 @@ }, "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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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": [ @@ -544,10 +198,15 @@ } } ], - "IPProto": [6] + "IPProto": [ + 6 + ] }, { - "SrcIPs": ["100.83.200.69", "fd7a:115c:a1e0::c537:c845"], + "SrcIPs": [ + "100.83.200.69", + "fd7a:115c:a1e0::c537:c845" + ], "DstPorts": [ { "IP": "100.108.74.26", @@ -565,706 +224,16 @@ } ] } - ], - "packet_filter_matches": [ - { - "IPProto": [6], - "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": [ - { - "Net": "100.108.74.26/32", - "Ports": { - "First": 80, - "Last": 80 - } - }, - { - "Net": "100.108.74.26/32", - "Ports": { - "First": 443, - "Last": 443 - } - }, - { - "Net": "fd7a:115c:a1e0::b901:4a87/128", - "Ports": { - "First": 80, - "Last": 80 - } - }, - { - "Net": "fd7a:115c:a1e0::b901:4a87/128", - "Ports": { - "First": 443, - "Last": 443 - } - } - ], - "Caps": [] - }, - { - "IPProto": [6, 17, 1, 58], - "Srcs": ["100.83.200.69/32", "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": { - "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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": null } } } diff --git a/hscontrol/policy/v2/testdata/grant_results/GRANT-K5.hujson b/hscontrol/policy/v2/testdata/grant_results/GRANT-K5.hujson index 22fe3877b..ad44c4783 100644 --- a/hscontrol/policy/v2/testdata/grant_results/GRANT-K5.hujson +++ b/hscontrol/policy/v2/testdata/grant_results/GRANT-K5.hujson @@ -8,23 +8,37 @@ // Expected: Rules on subnet-router, tagged-server { "test_id": "GRANT-K5", - "timestamp": "2026-02-23T02:54:57Z", - "propagation_wait_seconds": 15, "input": { - "policy_file": "grant_policies/grant_k5.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -33,137 +47,122 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "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"] + "src": [ + "tag:client" + ], + "dst": [ + "tag:server:22" + ] } ], "grants": [ { - "src": ["autogroup:member"], - "dst": ["tag:server"], + "src": [ + "autogroup:member" + ], + "dst": [ + "tag:server" + ], "app": { "tailscale.com/cap/kubernetes": [ { "impersonate": { - "groups": ["system:masters"] + "groups": [ + "system:masters" + ] } } ] } }, { - "src": ["*"], - "dst": ["10.33.0.0/16"], - "via": ["tag:router"], - "ip": ["*"] + "src": [ + "*" + ], + "dst": [ + "10.33.0.0/16" + ], + "via": [ + "tag:router" + ], + "ip": [ + "*" + ] } ] }, - "grants_section": [ - { - "src": ["autogroup:member"], - "dst": ["tag:server"], - "app": { - "tailscale.com/cap/kubernetes": [ - { - "impersonate": { - "groups": ["system:masters"] - } - } - ] - } - }, - { - "src": ["*"], - "dst": ["10.33.0.0/16"], - "via": ["tag:router"], - "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"], + "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"], + "tags": [ + "tag:router" + ], "ipv4": "100.92.142.61", - "ipv6": "fd7a:115c:a1e0::3e37:8e3d", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] + "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"], + "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"], + "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"], + "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" @@ -172,101 +171,9 @@ }, "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 - } - } + "packet_filter_rules": 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": [ @@ -285,625 +192,15 @@ } ] } - ], - "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": [ - { - "Net": "10.33.0.0/16", - "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": { - "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": { - "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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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": [ @@ -916,12 +213,17 @@ ], "CapGrant": [ { - "Dsts": ["100.108.74.26/32", "fd7a:115c:a1e0::b901:4a87/128"], + "Dsts": [ + "100.108.74.26/32", + "fd7a:115c:a1e0::b901:4a87/128" + ], "CapMap": { "tailscale.com/cap/kubernetes": [ { "impersonate": { - "groups": ["system:masters"] + "groups": [ + "system:masters" + ] } } ] @@ -930,7 +232,10 @@ ] }, { - "SrcIPs": ["100.83.200.69", "fd7a:115c:a1e0::c537:c845"], + "SrcIPs": [ + "100.83.200.69", + "fd7a:115c:a1e0::c537:c845" + ], "DstPorts": [ { "IP": "100.108.74.26", @@ -948,763 +253,16 @@ } ] } - ], - "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": "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"] - } - } - ] - } - ] - }, - { - "IPProto": [6, 17, 1, 58], - "Srcs": ["100.83.200.69/32", "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": { - "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": 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": { - "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": { - "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 - } - } + "packet_filter_rules": 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": { - "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 - } - } + "packet_filter_rules": 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": { - "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 - } - } + "packet_filter_rules": null } } } diff --git a/hscontrol/policy/v2/testdata/grant_results/GRANT-K6.hujson b/hscontrol/policy/v2/testdata/grant_results/GRANT-K6.hujson index d065062c9..b20786bf4 100644 --- a/hscontrol/policy/v2/testdata/grant_results/GRANT-K6.hujson +++ b/hscontrol/policy/v2/testdata/grant_results/GRANT-K6.hujson @@ -5,23 +5,37 @@ // Expected: Rules on tagged-server { "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: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"] + "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", @@ -30,102 +44,89 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "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"] + "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"], + "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"], + "tags": [ + "tag:router" + ], "ipv4": "100.92.142.61", - "ipv6": "fd7a:115c:a1e0::3e37:8e3d", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] + "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"], + "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"], + "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"], + "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" @@ -134,373 +135,23 @@ }, "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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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": ["*"], + "SrcIPs": [ + "*" + ], "DstPorts": [ { "IP": "100.108.74.26", @@ -517,656 +168,20 @@ } } ], - "IPProto": [6] + "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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": null } } } diff --git a/hscontrol/policy/v2/testdata/grant_results/GRANT-K7.hujson b/hscontrol/policy/v2/testdata/grant_results/GRANT-K7.hujson index a1de97674..a39599075 100644 --- a/hscontrol/policy/v2/testdata/grant_results/GRANT-K7.hujson +++ b/hscontrol/policy/v2/testdata/grant_results/GRANT-K7.hujson @@ -5,24 +5,38 @@ // Expected: Error (HTTP 400) — cannot use autogroup:danger-all as a dst { "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: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"] + "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", @@ -31,23 +45,34 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "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"] + "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" } + "api_response_body": { + "message": "cannot use autogroup:danger-all as a dst" + } } } diff --git a/hscontrol/policy/v2/testdata/grant_results/GRANT-K8.hujson b/hscontrol/policy/v2/testdata/grant_results/GRANT-K8.hujson index 0107edd33..9a7bf19c4 100644 --- a/hscontrol/policy/v2/testdata/grant_results/GRANT-K8.hujson +++ b/hscontrol/policy/v2/testdata/grant_results/GRANT-K8.hujson @@ -5,24 +5,38 @@ // Expected: Error (HTTP 400) — cannot use autogroup:danger-all as a dst { "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: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"] + "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", @@ -31,23 +45,34 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "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": ["*"] + "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" } + "api_response_body": { + "message": "cannot use autogroup:danger-all as a dst" + } } } diff --git a/hscontrol/policy/v2/testdata/grant_results/GRANT-K9.hujson b/hscontrol/policy/v2/testdata/grant_results/GRANT-K9.hujson index 61b9601db..da82cd89e 100644 --- a/hscontrol/policy/v2/testdata/grant_results/GRANT-K9.hujson +++ b/hscontrol/policy/v2/testdata/grant_results/GRANT-K9.hujson @@ -5,24 +5,38 @@ // Expected: Error (HTTP 400) — capability name must not be in the tailscale.com domain { "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: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"] + "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", @@ -31,25 +45,36 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "grants": [ { - "src": ["*"], - "dst": ["*"], + "src": [ + "*" + ], + "dst": [ + "*" + ], "app": { - "tailscale.com/cap/ingress": [{}] + "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" } + "api_response_body": { + "message": "capability name must not be in the tailscale.com domain" + } } } diff --git a/hscontrol/policy/v2/testdata/grant_results/GRANT-P01_1.hujson b/hscontrol/policy/v2/testdata/grant_results/GRANT-P01_1.hujson index 1ea6de3ea..fc572a14b 100644 --- a/hscontrol/policy/v2/testdata/grant_results/GRANT-P01_1.hujson +++ b/hscontrol/policy/v2/testdata/grant_results/GRANT-P01_1.hujson @@ -5,23 +5,37 @@ // Expected: Rules on 8 nodes { "test_id": "GRANT-P01_1", - "timestamp": "2026-02-23T00:42:55Z", - "propagation_wait_seconds": 15, "input": { - "policy_file": "/home/kradalby/acl-explore/grant_policies/grant_p01_1.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -30,102 +44,89 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "grants": [ { - "src": ["*"], - "dst": ["*"], - "ip": ["*"] + "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": 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"], + "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"], + "tags": [ + "tag:router" + ], "ipv4": "100.92.142.61", - "ipv6": "fd7a:115c:a1e0::3e37:8e3d", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] + "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"], + "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"], + "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"], + "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" @@ -134,10 +135,6 @@ }, "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": [ @@ -156,406 +153,9 @@ } ] } - ], - "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": [ - { - "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": { - "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": { - "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/exit-node/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/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": { - "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/exit-node/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/exit-node/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 - } - } - } + ] }, "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": [ @@ -574,405 +174,9 @@ } ] } - ], - "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": [ - { - "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": { - "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": [ { "SrcIPs": [ @@ -991,406 +195,9 @@ } ] } - ], - "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": [ - { - "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": { - "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-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": { - "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/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": { - "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-client/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-client/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-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": [ @@ -1409,406 +216,9 @@ } ] } - ], - "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": [ - { - "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": { - "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-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": { - "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.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": { - "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-prod/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-prod/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-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": [ @@ -1827,406 +237,9 @@ } ] } - ], - "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": [ - { - "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": { - "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": [ { "SrcIPs": [ @@ -2245,406 +258,9 @@ } ] } - ], - "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": [ - { - "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": { - "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/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": { - "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/user-kris/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/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": { - "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/user-kris/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-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": [ @@ -2663,406 +279,9 @@ } ] } - ], - "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": [ - { - "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": { - "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/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": { - "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/user-mon/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/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": { - "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.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": { - "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 - } - } - } + ] }, "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": [ @@ -3081,400 +300,7 @@ } ] } - ], - "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": [ - { - "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": { - "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/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": { - "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/user1/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/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": { - "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/user1/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 - } - } - } + ] } } } diff --git a/hscontrol/policy/v2/testdata/grant_results/GRANT-P01_2.hujson b/hscontrol/policy/v2/testdata/grant_results/GRANT-P01_2.hujson index e822a6197..a067452b4 100644 --- a/hscontrol/policy/v2/testdata/grant_results/GRANT-P01_2.hujson +++ b/hscontrol/policy/v2/testdata/grant_results/GRANT-P01_2.hujson @@ -5,23 +5,37 @@ // Expected: Rules on 8 nodes { "test_id": "GRANT-P01_2", - "timestamp": "2026-02-23T00:43:12Z", - "propagation_wait_seconds": 15, "input": { - "policy_file": "/home/kradalby/acl-explore/grant_policies/grant_p01_2.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -30,102 +44,89 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "grants": [ { - "src": ["100.90.199.68"], - "dst": ["*"], - "ip": ["*"] + "src": [ + "100.90.199.68" + ], + "dst": [ + "*" + ], + "ip": [ + "*" + ] } ] }, - "grants_section": [ - { - "src": ["100.90.199.68"], - "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"], + "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"], + "tags": [ + "tag:router" + ], "ipv4": "100.92.142.61", - "ipv6": "fd7a:115c:a1e0::3e37:8e3d", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] + "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"], + "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"], + "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"], + "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" @@ -134,13 +135,11 @@ }, "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.90.199.68"], + "SrcIPs": [ + "100.90.199.68" + ], "DstPorts": [ { "IP": "*", @@ -151,122 +150,14 @@ } ] } - ], - "packet_filter_matches": [ - { - "IPProto": [6, 17, 1, 58], - "Srcs": ["100.90.199.68/32"], - "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": { - "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 - } - } - } + ] }, "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.90.199.68"], + "SrcIPs": [ + "100.90.199.68" + ], "DstPorts": [ { "IP": "*", @@ -277,122 +168,14 @@ } ] } - ], - "packet_filter_matches": [ - { - "IPProto": [6, 17, 1, 58], - "Srcs": ["100.90.199.68/32"], - "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": { - "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": [ { - "SrcIPs": ["100.90.199.68"], + "SrcIPs": [ + "100.90.199.68" + ], "DstPorts": [ { "IP": "*", @@ -403,122 +186,14 @@ } ] } - ], - "packet_filter_matches": [ - { - "IPProto": [6, 17, 1, 58], - "Srcs": ["100.90.199.68/32"], - "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": { - "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-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.90.199.68"], + "SrcIPs": [ + "100.90.199.68" + ], "DstPorts": [ { "IP": "*", @@ -529,122 +204,14 @@ } ] } - ], - "packet_filter_matches": [ - { - "IPProto": [6, 17, 1, 58], - "Srcs": ["100.90.199.68/32"], - "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": { - "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-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"], + "SrcIPs": [ + "100.90.199.68" + ], "DstPorts": [ { "IP": "*", @@ -655,122 +222,14 @@ } ] } - ], - "packet_filter_matches": [ - { - "IPProto": [6, 17, 1, 58], - "Srcs": ["100.90.199.68/32"], - "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": { - "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": [ { - "SrcIPs": ["100.90.199.68"], + "SrcIPs": [ + "100.90.199.68" + ], "DstPorts": [ { "IP": "*", @@ -781,122 +240,14 @@ } ] } - ], - "packet_filter_matches": [ - { - "IPProto": [6, 17, 1, 58], - "Srcs": ["100.90.199.68/32"], - "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": { - "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-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.90.199.68"], + "SrcIPs": [ + "100.90.199.68" + ], "DstPorts": [ { "IP": "*", @@ -907,122 +258,14 @@ } ] } - ], - "packet_filter_matches": [ - { - "IPProto": [6, 17, 1, 58], - "Srcs": ["100.90.199.68/32"], - "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": { - "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 - } - } - } + ] }, "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"], + "SrcIPs": [ + "100.90.199.68" + ], "DstPorts": [ { "IP": "*", @@ -1033,384 +276,7 @@ } ] } - ], - "packet_filter_matches": [ - { - "IPProto": [6, 17, 1, 58], - "Srcs": ["100.90.199.68/32"], - "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": { - "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/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": { - "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/user1/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/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": { - "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/user1/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 - } - } - } + ] } } } diff --git a/hscontrol/policy/v2/testdata/grant_results/GRANT-P01_3.hujson b/hscontrol/policy/v2/testdata/grant_results/GRANT-P01_3.hujson index 02eabb4c9..bad623d47 100644 --- a/hscontrol/policy/v2/testdata/grant_results/GRANT-P01_3.hujson +++ b/hscontrol/policy/v2/testdata/grant_results/GRANT-P01_3.hujson @@ -5,23 +5,37 @@ // Expected: Rules on 8 nodes { "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: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"] + "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", @@ -30,102 +44,89 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "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": ["*"] + "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"], + "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"], + "tags": [ + "tag:router" + ], "ipv4": "100.92.142.61", - "ipv6": "fd7a:115c:a1e0::3e37:8e3d", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] + "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"], + "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"], + "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"], + "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" @@ -134,13 +135,11 @@ }, "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"], + "SrcIPs": [ + "100.64.0.0/16" + ], "DstPorts": [ { "IP": "*", @@ -151,77 +150,14 @@ } ] } - ], - "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"], + "SrcIPs": [ + "100.64.0.0/16" + ], "DstPorts": [ { "IP": "*", @@ -232,77 +168,14 @@ } ] } - ], - "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"], + "SrcIPs": [ + "100.64.0.0/16" + ], "DstPorts": [ { "IP": "*", @@ -313,77 +186,14 @@ } ] } - ], - "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"], + "SrcIPs": [ + "100.64.0.0/16" + ], "DstPorts": [ { "IP": "*", @@ -394,77 +204,14 @@ } ] } - ], - "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"], + "SrcIPs": [ + "100.64.0.0/16" + ], "DstPorts": [ { "IP": "*", @@ -475,77 +222,14 @@ } ] } - ], - "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"], + "SrcIPs": [ + "100.64.0.0/16" + ], "DstPorts": [ { "IP": "*", @@ -556,77 +240,14 @@ } ] } - ], - "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"], + "SrcIPs": [ + "100.64.0.0/16" + ], "DstPorts": [ { "IP": "*", @@ -637,77 +258,14 @@ } ] } - ], - "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"], + "SrcIPs": [ + "100.64.0.0/16" + ], "DstPorts": [ { "IP": "*", @@ -718,68 +276,7 @@ } ] } - ], - "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 - } - } + ] } } } diff --git a/hscontrol/policy/v2/testdata/grant_results/GRANT-P01_4.hujson b/hscontrol/policy/v2/testdata/grant_results/GRANT-P01_4.hujson index b16ccf55c..6e07f6a17 100644 --- a/hscontrol/policy/v2/testdata/grant_results/GRANT-P01_4.hujson +++ b/hscontrol/policy/v2/testdata/grant_results/GRANT-P01_4.hujson @@ -5,23 +5,37 @@ // Expected: Rules on tagged-server { "test_id": "GRANT-P01_4", - "timestamp": "2026-02-23T00:43:46Z", - "propagation_wait_seconds": 15, "input": { - "policy_file": "/home/kradalby/acl-explore/grant_policies/grant_p01_4.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -30,102 +44,89 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "grants": [ { - "src": ["*"], - "dst": ["100.108.74.26"], - "ip": ["*"] + "src": [ + "*" + ], + "dst": [ + "100.108.74.26" + ], + "ip": [ + "*" + ] } ] }, - "grants_section": [ - { - "src": ["*"], - "dst": ["100.108.74.26"], - "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"], + "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"], + "tags": [ + "tag:router" + ], "ipv4": "100.92.142.61", - "ipv6": "fd7a:115c:a1e0::3e37:8e3d", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] + "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"], + "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"], + "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"], + "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" @@ -134,370 +135,18 @@ }, "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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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": [ @@ -516,663 +165,16 @@ } ] } - ], - "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": [ - { - "Net": "100.108.74.26/32", - "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": { - "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": 8, - "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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": null } } } diff --git a/hscontrol/policy/v2/testdata/grant_results/GRANT-P01_5.hujson b/hscontrol/policy/v2/testdata/grant_results/GRANT-P01_5.hujson index 4d21fc0f5..722418cc2 100644 --- a/hscontrol/policy/v2/testdata/grant_results/GRANT-P01_5.hujson +++ b/hscontrol/policy/v2/testdata/grant_results/GRANT-P01_5.hujson @@ -5,23 +5,37 @@ // Expected: No filter rules on any node { "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: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"] + "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", @@ -30,102 +44,89 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "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": ["*"] + "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"], + "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"], + "tags": [ + "tag:router" + ], "ipv4": "100.92.142.61", - "ipv6": "fd7a:115c:a1e0::3e37:8e3d", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] + "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"], + "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"], + "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"], + "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" @@ -134,364 +135,28 @@ }, "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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": null } } } diff --git a/hscontrol/policy/v2/testdata/grant_results/GRANT-P02_1.hujson b/hscontrol/policy/v2/testdata/grant_results/GRANT-P02_1.hujson index 5bab5b8a4..37ba57a38 100644 --- a/hscontrol/policy/v2/testdata/grant_results/GRANT-P02_1.hujson +++ b/hscontrol/policy/v2/testdata/grant_results/GRANT-P02_1.hujson @@ -5,23 +5,37 @@ // Expected: Rules on 8 nodes { "test_id": "GRANT-P02_1", - "timestamp": "2026-02-23T00:44:20Z", - "propagation_wait_seconds": 15, "input": { - "policy_file": "/home/kradalby/acl-explore/grant_policies/grant_p02_1.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -30,102 +44,89 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "grants": [ { - "src": ["kratail2tid@passkey"], - "dst": ["*"], - "ip": ["*"] + "src": [ + "kratail2tid@passkey" + ], + "dst": [ + "*" + ], + "ip": [ + "*" + ] } ] }, - "grants_section": [ - { - "src": ["kratail2tid@passkey"], - "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"], + "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"], + "tags": [ + "tag:router" + ], "ipv4": "100.92.142.61", - "ipv6": "fd7a:115c:a1e0::3e37:8e3d", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] + "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"], + "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"], + "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"], + "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" @@ -134,13 +135,12 @@ }, "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.90.199.68", "fd7a:115c:a1e0::2d01:c747"], + "SrcIPs": [ + "100.90.199.68", + "fd7a:115c:a1e0::2d01:c747" + ], "DstPorts": [ { "IP": "*", @@ -151,122 +151,15 @@ } ] } - ], - "packet_filter_matches": [ - { - "IPProto": [6, 17, 1, 58], - "Srcs": ["100.90.199.68/32", "fd7a:115c:a1e0::2d01:c747/128"], - "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": { - "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": 8, - "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 - } - } - } + ] }, "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.90.199.68", "fd7a:115c:a1e0::2d01:c747"], + "SrcIPs": [ + "100.90.199.68", + "fd7a:115c:a1e0::2d01:c747" + ], "DstPorts": [ { "IP": "*", @@ -277,122 +170,15 @@ } ] } - ], - "packet_filter_matches": [ - { - "IPProto": [6, 17, 1, 58], - "Srcs": ["100.90.199.68/32", "fd7a:115c:a1e0::2d01:c747/128"], - "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": { - "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": 8, - "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": [ { - "SrcIPs": ["100.90.199.68", "fd7a:115c:a1e0::2d01:c747"], + "SrcIPs": [ + "100.90.199.68", + "fd7a:115c:a1e0::2d01:c747" + ], "DstPorts": [ { "IP": "*", @@ -403,122 +189,15 @@ } ] } - ], - "packet_filter_matches": [ - { - "IPProto": [6, 17, 1, 58], - "Srcs": ["100.90.199.68/32", "fd7a:115c:a1e0::2d01:c747/128"], - "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": { - "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": 8, - "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-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.90.199.68", "fd7a:115c:a1e0::2d01:c747"], + "SrcIPs": [ + "100.90.199.68", + "fd7a:115c:a1e0::2d01:c747" + ], "DstPorts": [ { "IP": "*", @@ -529,122 +208,15 @@ } ] } - ], - "packet_filter_matches": [ - { - "IPProto": [6, 17, 1, 58], - "Srcs": ["100.90.199.68/32", "fd7a:115c:a1e0::2d01:c747/128"], - "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": { - "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": 8, - "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-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"], + "SrcIPs": [ + "100.90.199.68", + "fd7a:115c:a1e0::2d01:c747" + ], "DstPorts": [ { "IP": "*", @@ -655,122 +227,15 @@ } ] } - ], - "packet_filter_matches": [ - { - "IPProto": [6, 17, 1, 58], - "Srcs": ["100.90.199.68/32", "fd7a:115c:a1e0::2d01:c747/128"], - "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": { - "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": 8, - "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": [ { - "SrcIPs": ["100.90.199.68", "fd7a:115c:a1e0::2d01:c747"], + "SrcIPs": [ + "100.90.199.68", + "fd7a:115c:a1e0::2d01:c747" + ], "DstPorts": [ { "IP": "*", @@ -781,122 +246,15 @@ } ] } - ], - "packet_filter_matches": [ - { - "IPProto": [6, 17, 1, 58], - "Srcs": ["100.90.199.68/32", "fd7a:115c:a1e0::2d01:c747/128"], - "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": { - "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": 8, - "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-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.90.199.68", "fd7a:115c:a1e0::2d01:c747"], + "SrcIPs": [ + "100.90.199.68", + "fd7a:115c:a1e0::2d01:c747" + ], "DstPorts": [ { "IP": "*", @@ -907,122 +265,15 @@ } ] } - ], - "packet_filter_matches": [ - { - "IPProto": [6, 17, 1, 58], - "Srcs": ["100.90.199.68/32", "fd7a:115c:a1e0::2d01:c747/128"], - "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": { - "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": 8, - "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 - } - } - } + ] }, "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"], + "SrcIPs": [ + "100.90.199.68", + "fd7a:115c:a1e0::2d01:c747" + ], "DstPorts": [ { "IP": "*", @@ -1033,384 +284,7 @@ } ] } - ], - "packet_filter_matches": [ - { - "IPProto": [6, 17, 1, 58], - "Srcs": ["100.90.199.68/32", "fd7a:115c:a1e0::2d01:c747/128"], - "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": { - "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/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": { - "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/user1/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/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": { - "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/user1/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 - } - } - } + ] } } } diff --git a/hscontrol/policy/v2/testdata/grant_results/GRANT-P02_2.hujson b/hscontrol/policy/v2/testdata/grant_results/GRANT-P02_2.hujson index 9ebee3a94..3a79b456a 100644 --- a/hscontrol/policy/v2/testdata/grant_results/GRANT-P02_2.hujson +++ b/hscontrol/policy/v2/testdata/grant_results/GRANT-P02_2.hujson @@ -5,23 +5,37 @@ // Expected: Rules on user1 { "test_id": "GRANT-P02_2", - "timestamp": "2026-02-23T00:44:36Z", - "propagation_wait_seconds": 15, "input": { - "policy_file": "/home/kradalby/acl-explore/grant_policies/grant_p02_2.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -30,102 +44,89 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "grants": [ { - "src": ["*"], - "dst": ["kratail2tid@passkey"], - "ip": ["*"] + "src": [ + "*" + ], + "dst": [ + "kratail2tid@passkey" + ], + "ip": [ + "*" + ] } ] }, - "grants_section": [ - { - "src": ["*"], - "dst": ["kratail2tid@passkey"], - "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"], + "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"], + "tags": [ + "tag:router" + ], "ipv4": "100.92.142.61", - "ipv6": "fd7a:115c:a1e0::3e37:8e3d", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] + "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"], + "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"], + "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"], + "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" @@ -134,640 +135,27 @@ }, "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": { - "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": 8, - "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 - } - } - } + "packet_filter_rules": 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": { - "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": 8, - "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 - } - } - } + "packet_filter_rules": 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": { - "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": 8, - "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 - } - } - } + "packet_filter_rules": 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": { - "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": 8, - "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 - } - } - } + "packet_filter_rules": 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": { - "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": 8, - "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 - } - } - } + "packet_filter_rules": 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": { - "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": 8, - "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 - } - } - } + "packet_filter_rules": 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": { - "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": 8, - "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 - } - } - } + "packet_filter_rules": 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": [ @@ -793,400 +181,7 @@ } ] } - ], - "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": [ - { - "Net": "100.90.199.68/32", - "Ports": { - "First": 0, - "Last": 65535 - } - }, - { - "Net": "fd7a:115c:a1e0::2d01:c747/128", - "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": { - "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/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": { - "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/user1/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/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": { - "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/user1/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 - } - } - } + ] } } } diff --git a/hscontrol/policy/v2/testdata/grant_results/GRANT-P02_3.hujson b/hscontrol/policy/v2/testdata/grant_results/GRANT-P02_3.hujson index 0ca99c53f..c0ace6336 100644 --- a/hscontrol/policy/v2/testdata/grant_results/GRANT-P02_3.hujson +++ b/hscontrol/policy/v2/testdata/grant_results/GRANT-P02_3.hujson @@ -5,23 +5,37 @@ // Expected: Rules on 8 nodes { "test_id": "GRANT-P02_3", - "timestamp": "2026-02-23T00:44:53Z", - "propagation_wait_seconds": 15, "input": { - "policy_file": "/home/kradalby/acl-explore/grant_policies/grant_p02_3.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -30,102 +44,89 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "grants": [ { - "src": ["group:admins"], - "dst": ["*"], - "ip": ["*"] + "src": [ + "group:admins" + ], + "dst": [ + "*" + ], + "ip": [ + "*" + ] } ] }, - "grants_section": [ - { - "src": ["group:admins"], - "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"], + "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"], + "tags": [ + "tag:router" + ], "ipv4": "100.92.142.61", - "ipv6": "fd7a:115c:a1e0::3e37:8e3d", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] + "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"], + "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"], + "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"], + "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" @@ -134,13 +135,12 @@ }, "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.90.199.68", "fd7a:115c:a1e0::2d01:c747"], + "SrcIPs": [ + "100.90.199.68", + "fd7a:115c:a1e0::2d01:c747" + ], "DstPorts": [ { "IP": "*", @@ -151,122 +151,15 @@ } ] } - ], - "packet_filter_matches": [ - { - "IPProto": [6, 17, 1, 58], - "Srcs": ["100.90.199.68/32", "fd7a:115c:a1e0::2d01:c747/128"], - "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": { - "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": 8, - "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 - } - } - } + ] }, "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.90.199.68", "fd7a:115c:a1e0::2d01:c747"], + "SrcIPs": [ + "100.90.199.68", + "fd7a:115c:a1e0::2d01:c747" + ], "DstPorts": [ { "IP": "*", @@ -277,122 +170,15 @@ } ] } - ], - "packet_filter_matches": [ - { - "IPProto": [6, 17, 1, 58], - "Srcs": ["100.90.199.68/32", "fd7a:115c:a1e0::2d01:c747/128"], - "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": { - "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": 8, - "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": [ { - "SrcIPs": ["100.90.199.68", "fd7a:115c:a1e0::2d01:c747"], + "SrcIPs": [ + "100.90.199.68", + "fd7a:115c:a1e0::2d01:c747" + ], "DstPorts": [ { "IP": "*", @@ -403,122 +189,15 @@ } ] } - ], - "packet_filter_matches": [ - { - "IPProto": [6, 17, 1, 58], - "Srcs": ["100.90.199.68/32", "fd7a:115c:a1e0::2d01:c747/128"], - "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": { - "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": 8, - "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-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.90.199.68", "fd7a:115c:a1e0::2d01:c747"], + "SrcIPs": [ + "100.90.199.68", + "fd7a:115c:a1e0::2d01:c747" + ], "DstPorts": [ { "IP": "*", @@ -529,122 +208,15 @@ } ] } - ], - "packet_filter_matches": [ - { - "IPProto": [6, 17, 1, 58], - "Srcs": ["100.90.199.68/32", "fd7a:115c:a1e0::2d01:c747/128"], - "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": { - "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": 8, - "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-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"], + "SrcIPs": [ + "100.90.199.68", + "fd7a:115c:a1e0::2d01:c747" + ], "DstPorts": [ { "IP": "*", @@ -655,122 +227,15 @@ } ] } - ], - "packet_filter_matches": [ - { - "IPProto": [6, 17, 1, 58], - "Srcs": ["100.90.199.68/32", "fd7a:115c:a1e0::2d01:c747/128"], - "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": { - "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": 8, - "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": [ { - "SrcIPs": ["100.90.199.68", "fd7a:115c:a1e0::2d01:c747"], + "SrcIPs": [ + "100.90.199.68", + "fd7a:115c:a1e0::2d01:c747" + ], "DstPorts": [ { "IP": "*", @@ -781,122 +246,15 @@ } ] } - ], - "packet_filter_matches": [ - { - "IPProto": [6, 17, 1, 58], - "Srcs": ["100.90.199.68/32", "fd7a:115c:a1e0::2d01:c747/128"], - "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": { - "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": 8, - "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-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.90.199.68", "fd7a:115c:a1e0::2d01:c747"], + "SrcIPs": [ + "100.90.199.68", + "fd7a:115c:a1e0::2d01:c747" + ], "DstPorts": [ { "IP": "*", @@ -907,122 +265,15 @@ } ] } - ], - "packet_filter_matches": [ - { - "IPProto": [6, 17, 1, 58], - "Srcs": ["100.90.199.68/32", "fd7a:115c:a1e0::2d01:c747/128"], - "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": { - "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": 8, - "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 - } - } - } + ] }, "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"], + "SrcIPs": [ + "100.90.199.68", + "fd7a:115c:a1e0::2d01:c747" + ], "DstPorts": [ { "IP": "*", @@ -1033,384 +284,7 @@ } ] } - ], - "packet_filter_matches": [ - { - "IPProto": [6, 17, 1, 58], - "Srcs": ["100.90.199.68/32", "fd7a:115c:a1e0::2d01:c747/128"], - "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": { - "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/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": { - "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/user1/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/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": { - "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/user1/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 - } - } - } + ] } } } diff --git a/hscontrol/policy/v2/testdata/grant_results/GRANT-P02_4.hujson b/hscontrol/policy/v2/testdata/grant_results/GRANT-P02_4.hujson index 12b46fe95..eec02dd5f 100644 --- a/hscontrol/policy/v2/testdata/grant_results/GRANT-P02_4.hujson +++ b/hscontrol/policy/v2/testdata/grant_results/GRANT-P02_4.hujson @@ -5,23 +5,37 @@ // Expected: Rules on user1 { "test_id": "GRANT-P02_4", - "timestamp": "2026-02-23T00:45:10Z", - "propagation_wait_seconds": 15, "input": { - "policy_file": "/home/kradalby/acl-explore/grant_policies/grant_p02_4.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -30,102 +44,89 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "grants": [ { - "src": ["*"], - "dst": ["group:admins"], - "ip": ["*"] + "src": [ + "*" + ], + "dst": [ + "group:admins" + ], + "ip": [ + "*" + ] } ] }, - "grants_section": [ - { - "src": ["*"], - "dst": ["group:admins"], - "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"], + "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"], + "tags": [ + "tag:router" + ], "ipv4": "100.92.142.61", - "ipv6": "fd7a:115c:a1e0::3e37:8e3d", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] + "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"], + "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"], + "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"], + "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" @@ -134,640 +135,27 @@ }, "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": { - "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": 8, - "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 - } - } - } + "packet_filter_rules": 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": { - "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": 8, - "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 - } - } - } + "packet_filter_rules": 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": { - "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": 8, - "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 - } - } - } + "packet_filter_rules": 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": { - "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": 8, - "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 - } - } - } + "packet_filter_rules": 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": { - "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": 8, - "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 - } - } - } + "packet_filter_rules": 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": { - "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": 8, - "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 - } - } - } + "packet_filter_rules": 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": { - "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": 8, - "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 - } - } - } + "packet_filter_rules": 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": [ @@ -793,400 +181,7 @@ } ] } - ], - "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": [ - { - "Net": "100.90.199.68/32", - "Ports": { - "First": 0, - "Last": 65535 - } - }, - { - "Net": "fd7a:115c:a1e0::2d01:c747/128", - "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": { - "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/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": { - "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/user1/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/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": { - "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/user1/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 - } - } - } + ] } } } diff --git a/hscontrol/policy/v2/testdata/grant_results/GRANT-P02_5_CORRECT.hujson b/hscontrol/policy/v2/testdata/grant_results/GRANT-P02_5_CORRECT.hujson index a9cfccd21..aa0cfb9db 100644 --- a/hscontrol/policy/v2/testdata/grant_results/GRANT-P02_5_CORRECT.hujson +++ b/hscontrol/policy/v2/testdata/grant_results/GRANT-P02_5_CORRECT.hujson @@ -7,23 +7,37 @@ // Expected: Rules on tagged-prod, tagged-server { "test_id": "GRANT-P02_5_CORRECT", - "timestamp": "2026-02-23T00:45:26Z", - "propagation_wait_seconds": 15, "input": { - "policy_file": "/home/kradalby/acl-explore/grant_policies/grant_p02_5_correct.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -32,112 +46,100 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "grants": [ { - "src": ["tag:client"], - "dst": ["tag:server"], - "ip": ["22"] + "src": [ + "tag:client" + ], + "dst": [ + "tag:server" + ], + "ip": [ + "22" + ] }, { - "src": ["tag:client"], - "dst": ["tag:prod"], - "ip": ["5432"] + "src": [ + "tag:client" + ], + "dst": [ + "tag:prod" + ], + "ip": [ + "5432" + ] } ] }, - "grants_section": [ - { - "src": ["tag:client"], - "dst": ["tag:server"], - "ip": ["22"] - }, - { - "src": ["tag:client"], - "dst": ["tag:prod"], - "ip": ["5432"] - } - ], - "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"], + "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"], + "tags": [ + "tag:router" + ], "ipv4": "100.92.142.61", - "ipv6": "fd7a:115c:a1e0::3e37:8e3d", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] + "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"], + "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"], + "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"], + "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" @@ -146,238 +148,21 @@ }, "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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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": { - "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/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 - } - } + "packet_filter_rules": 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.83.200.69", "fd7a:115c:a1e0::c537:c845"], + "SrcIPs": [ + "100.83.200.69", + "fd7a:115c:a1e0::c537:c845" + ], "DstPorts": [ { "IP": "100.103.8.15", @@ -395,122 +180,15 @@ } ] } - ], - "packet_filter_matches": [ - { - "IPProto": [6, 17, 1, 58], - "Srcs": ["100.83.200.69/32", "fd7a:115c:a1e0::c537:c845/128"], - "SrcCaps": null, - "Dsts": [ - { - "Net": "100.103.8.15/32", - "Ports": { - "First": 5432, - "Last": 5432 - } - }, - { - "Net": "fd7a:115c:a1e0::5b37:80f/128", - "Ports": { - "First": 5432, - "Last": 5432 - } - } - ], - "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": { - "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.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.83.200.69", "fd7a:115c:a1e0::c537:c845"], + "SrcIPs": [ + "100.83.200.69", + "fd7a:115c:a1e0::c537:c845" + ], "DstPorts": [ { "IP": "100.108.74.26", @@ -528,248 +206,16 @@ } ] } - ], - "packet_filter_matches": [ - { - "IPProto": [6, 17, 1, 58], - "Srcs": ["100.83.200.69/32", "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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": null } } } diff --git a/hscontrol/policy/v2/testdata/grant_results/GRANT-P02_5_NAIVE.hujson b/hscontrol/policy/v2/testdata/grant_results/GRANT-P02_5_NAIVE.hujson index 70b5d404b..724ee430f 100644 --- a/hscontrol/policy/v2/testdata/grant_results/GRANT-P02_5_NAIVE.hujson +++ b/hscontrol/policy/v2/testdata/grant_results/GRANT-P02_5_NAIVE.hujson @@ -5,23 +5,37 @@ // Expected: Rules on tagged-prod, tagged-server { "test_id": "GRANT-P02_5_NAIVE", - "timestamp": "2026-02-23T00:45:42Z", - "propagation_wait_seconds": 15, "input": { - "policy_file": "/home/kradalby/acl-explore/grant_policies/grant_p02_5_naive.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -30,102 +44,91 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "grants": [ { - "src": ["tag:client"], - "dst": ["tag:server", "tag:prod"], - "ip": ["22", "5432"] + "src": [ + "tag:client" + ], + "dst": [ + "tag:server", + "tag:prod" + ], + "ip": [ + "22", + "5432" + ] } ] }, - "grants_section": [ - { - "src": ["tag:client"], - "dst": ["tag:server", "tag:prod"], - "ip": ["22", "5432"] - } - ], - "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"], + "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"], + "tags": [ + "tag:router" + ], "ipv4": "100.92.142.61", - "ipv6": "fd7a:115c:a1e0::3e37:8e3d", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] + "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"], + "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"], + "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"], + "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" @@ -134,238 +137,21 @@ }, "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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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": { - "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/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 - } - } + "packet_filter_rules": 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.83.200.69", "fd7a:115c:a1e0::c537:c845"], + "SrcIPs": [ + "100.83.200.69", + "fd7a:115c:a1e0::c537:c845" + ], "DstPorts": [ { "IP": "100.103.8.15", @@ -397,136 +183,15 @@ } ] } - ], - "packet_filter_matches": [ - { - "IPProto": [6, 17, 1, 58], - "Srcs": ["100.83.200.69/32", "fd7a:115c:a1e0::c537:c845/128"], - "SrcCaps": null, - "Dsts": [ - { - "Net": "100.103.8.15/32", - "Ports": { - "First": 22, - "Last": 22 - } - }, - { - "Net": "100.103.8.15/32", - "Ports": { - "First": 5432, - "Last": 5432 - } - }, - { - "Net": "fd7a:115c:a1e0::5b37:80f/128", - "Ports": { - "First": 22, - "Last": 22 - } - }, - { - "Net": "fd7a:115c:a1e0::5b37:80f/128", - "Ports": { - "First": 5432, - "Last": 5432 - } - } - ], - "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": { - "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.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.83.200.69", "fd7a:115c:a1e0::c537:c845"], + "SrcIPs": [ + "100.83.200.69", + "fd7a:115c:a1e0::c537:c845" + ], "DstPorts": [ { "IP": "100.108.74.26", @@ -558,262 +223,16 @@ } ] } - ], - "packet_filter_matches": [ - { - "IPProto": [6, 17, 1, 58], - "Srcs": ["100.83.200.69/32", "fd7a:115c:a1e0::c537:c845/128"], - "SrcCaps": null, - "Dsts": [ - { - "Net": "100.108.74.26/32", - "Ports": { - "First": 22, - "Last": 22 - } - }, - { - "Net": "100.108.74.26/32", - "Ports": { - "First": 5432, - "Last": 5432 - } - }, - { - "Net": "fd7a:115c:a1e0::b901:4a87/128", - "Ports": { - "First": 22, - "Last": 22 - } - }, - { - "Net": "fd7a:115c:a1e0::b901:4a87/128", - "Ports": { - "First": 5432, - "Last": 5432 - } - } - ], - "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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": null } } } diff --git a/hscontrol/policy/v2/testdata/grant_results/GRANT-P03_1.hujson b/hscontrol/policy/v2/testdata/grant_results/GRANT-P03_1.hujson index e3510f420..754bed4b6 100644 --- a/hscontrol/policy/v2/testdata/grant_results/GRANT-P03_1.hujson +++ b/hscontrol/policy/v2/testdata/grant_results/GRANT-P03_1.hujson @@ -5,23 +5,37 @@ // Expected: Rules on 8 nodes { "test_id": "GRANT-P03_1", - "timestamp": "2026-02-23T00:45:58Z", - "propagation_wait_seconds": 15, "input": { - "policy_file": "/home/kradalby/acl-explore/grant_policies/grant_p03_1.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -30,102 +44,89 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "grants": [ { - "src": ["tag:client"], - "dst": ["*"], - "ip": ["*"] + "src": [ + "tag:client" + ], + "dst": [ + "*" + ], + "ip": [ + "*" + ] } ] }, - "grants_section": [ - { - "src": ["tag:client"], - "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"], + "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"], + "tags": [ + "tag:router" + ], "ipv4": "100.92.142.61", - "ipv6": "fd7a:115c:a1e0::3e37:8e3d", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] + "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"], + "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"], + "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"], + "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" @@ -134,13 +135,12 @@ }, "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.83.200.69", "fd7a:115c:a1e0::c537:c845"], + "SrcIPs": [ + "100.83.200.69", + "fd7a:115c:a1e0::c537:c845" + ], "DstPorts": [ { "IP": "*", @@ -151,122 +151,15 @@ } ] } - ], - "packet_filter_matches": [ - { - "IPProto": [6, 17, 1, 58], - "Srcs": ["100.83.200.69/32", "fd7a:115c:a1e0::c537:c845/128"], - "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": { - "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/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.83.200.69", "fd7a:115c:a1e0::c537:c845"], + "SrcIPs": [ + "100.83.200.69", + "fd7a:115c:a1e0::c537:c845" + ], "DstPorts": [ { "IP": "*", @@ -277,122 +170,15 @@ } ] } - ], - "packet_filter_matches": [ - { - "IPProto": [6, 17, 1, 58], - "Srcs": ["100.83.200.69/32", "fd7a:115c:a1e0::c537:c845/128"], - "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": { - "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": 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.83.200.69", "fd7a:115c:a1e0::c537:c845"], + "SrcIPs": [ + "100.83.200.69", + "fd7a:115c:a1e0::c537:c845" + ], "DstPorts": [ { "IP": "*", @@ -403,393 +189,15 @@ } ] } - ], - "packet_filter_matches": [ - { - "IPProto": [6, 17, 1, 58], - "Srcs": ["100.83.200.69/32", "fd7a:115c:a1e0::c537:c845/128"], - "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": { - "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-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": { - "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/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": { - "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-client/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-client/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": 8, - "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-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.83.200.69", "fd7a:115c:a1e0::c537:c845"], + "SrcIPs": [ + "100.83.200.69", + "fd7a:115c:a1e0::c537:c845" + ], "DstPorts": [ { "IP": "*", @@ -800,122 +208,15 @@ } ] } - ], - "packet_filter_matches": [ - { - "IPProto": [6, 17, 1, 58], - "Srcs": ["100.83.200.69/32", "fd7a:115c:a1e0::c537:c845/128"], - "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": { - "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.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.83.200.69", "fd7a:115c:a1e0::c537:c845"], + "SrcIPs": [ + "100.83.200.69", + "fd7a:115c:a1e0::c537:c845" + ], "DstPorts": [ { "IP": "*", @@ -926,122 +227,15 @@ } ] } - ], - "packet_filter_matches": [ - { - "IPProto": [6, 17, 1, 58], - "Srcs": ["100.83.200.69/32", "fd7a:115c:a1e0::c537:c845/128"], - "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": { - "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": [ { - "SrcIPs": ["100.83.200.69", "fd7a:115c:a1e0::c537:c845"], + "SrcIPs": [ + "100.83.200.69", + "fd7a:115c:a1e0::c537:c845" + ], "DstPorts": [ { "IP": "*", @@ -1052,122 +246,15 @@ } ] } - ], - "packet_filter_matches": [ - { - "IPProto": [6, 17, 1, 58], - "Srcs": ["100.83.200.69/32", "fd7a:115c:a1e0::c537:c845/128"], - "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": { - "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/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.83.200.69", "fd7a:115c:a1e0::c537:c845"], + "SrcIPs": [ + "100.83.200.69", + "fd7a:115c:a1e0::c537:c845" + ], "DstPorts": [ { "IP": "*", @@ -1178,122 +265,15 @@ } ] } - ], - "packet_filter_matches": [ - { - "IPProto": [6, 17, 1, 58], - "Srcs": ["100.83.200.69/32", "fd7a:115c:a1e0::c537:c845/128"], - "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": { - "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/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.83.200.69", "fd7a:115c:a1e0::c537:c845"], + "SrcIPs": [ + "100.83.200.69", + "fd7a:115c:a1e0::c537:c845" + ], "DstPorts": [ { "IP": "*", @@ -1304,113 +284,7 @@ } ] } - ], - "packet_filter_matches": [ - { - "IPProto": [6, 17, 1, 58], - "Srcs": ["100.83.200.69/32", "fd7a:115c:a1e0::c537:c845/128"], - "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": { - "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/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 - } - } + ] } } } diff --git a/hscontrol/policy/v2/testdata/grant_results/GRANT-P03_2.hujson b/hscontrol/policy/v2/testdata/grant_results/GRANT-P03_2.hujson index 147bece0b..9b039da35 100644 --- a/hscontrol/policy/v2/testdata/grant_results/GRANT-P03_2.hujson +++ b/hscontrol/policy/v2/testdata/grant_results/GRANT-P03_2.hujson @@ -5,23 +5,37 @@ // Expected: Rules on tagged-server { "test_id": "GRANT-P03_2", - "timestamp": "2026-02-23T00:46:15Z", - "propagation_wait_seconds": 15, "input": { - "policy_file": "/home/kradalby/acl-explore/grant_policies/grant_p03_2.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -30,102 +44,89 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "grants": [ { - "src": ["*"], - "dst": ["tag:server"], - "ip": ["22"] + "src": [ + "*" + ], + "dst": [ + "tag:server" + ], + "ip": [ + "22" + ] } ] }, - "grants_section": [ - { - "src": ["*"], - "dst": ["tag:server"], - "ip": ["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"], + "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"], + "tags": [ + "tag:router" + ], "ipv4": "100.92.142.61", - "ipv6": "fd7a:115c:a1e0::3e37:8e3d", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] + "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"], + "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"], + "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"], + "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" @@ -134,370 +135,18 @@ }, "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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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": [ @@ -523,670 +172,16 @@ } ] } - ], - "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": [ - { - "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": 8, - "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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": null } } } diff --git a/hscontrol/policy/v2/testdata/grant_results/GRANT-P03_3.hujson b/hscontrol/policy/v2/testdata/grant_results/GRANT-P03_3.hujson index 5a81aa736..9cc7c4bf1 100644 --- a/hscontrol/policy/v2/testdata/grant_results/GRANT-P03_3.hujson +++ b/hscontrol/policy/v2/testdata/grant_results/GRANT-P03_3.hujson @@ -5,23 +5,37 @@ // Expected: Rules on tagged-server { "test_id": "GRANT-P03_3", - "timestamp": "2026-02-23T00:46:32Z", - "propagation_wait_seconds": 15, "input": { - "policy_file": "/home/kradalby/acl-explore/grant_policies/grant_p03_3.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -30,102 +44,89 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "grants": [ { - "src": ["tag:client"], - "dst": ["tag:server"], - "ip": ["22"] + "src": [ + "tag:client" + ], + "dst": [ + "tag:server" + ], + "ip": [ + "22" + ] } ] }, - "grants_section": [ - { - "src": ["tag:client"], - "dst": ["tag:server"], - "ip": ["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"], + "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"], + "tags": [ + "tag:router" + ], "ipv4": "100.92.142.61", - "ipv6": "fd7a:115c:a1e0::3e37:8e3d", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] + "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"], + "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"], + "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"], + "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" @@ -134,238 +135,24 @@ }, "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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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.83.200.69", "fd7a:115c:a1e0::c537:c845"], + "SrcIPs": [ + "100.83.200.69", + "fd7a:115c:a1e0::c537:c845" + ], "DstPorts": [ { "IP": "100.108.74.26", @@ -383,248 +170,16 @@ } ] } - ], - "packet_filter_matches": [ - { - "IPProto": [6, 17, 1, 58], - "Srcs": ["100.83.200.69/32", "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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": null } } } diff --git a/hscontrol/policy/v2/testdata/grant_results/GRANT-P03_4.hujson b/hscontrol/policy/v2/testdata/grant_results/GRANT-P03_4.hujson index a17a48c95..4b9ddf54b 100644 --- a/hscontrol/policy/v2/testdata/grant_results/GRANT-P03_4.hujson +++ b/hscontrol/policy/v2/testdata/grant_results/GRANT-P03_4.hujson @@ -5,23 +5,37 @@ // Expected: Rules on tagged-server { "test_id": "GRANT-P03_4", - "timestamp": "2026-02-23T00:46:49Z", - "propagation_wait_seconds": 15, "input": { - "policy_file": "/home/kradalby/acl-explore/grant_policies/grant_p03_4.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -30,102 +44,90 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "grants": [ { - "src": ["tag:client", "tag:prod"], - "dst": ["tag:server"], - "ip": ["22"] + "src": [ + "tag:client", + "tag:prod" + ], + "dst": [ + "tag:server" + ], + "ip": [ + "22" + ] } ] }, - "grants_section": [ - { - "src": ["tag:client", "tag:prod"], - "dst": ["tag:server"], - "ip": ["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"], + "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"], + "tags": [ + "tag:router" + ], "ipv4": "100.92.142.61", - "ipv6": "fd7a:115c:a1e0::3e37:8e3d", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] + "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"], + "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"], + "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"], + "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" @@ -134,283 +136,26 @@ }, "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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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.83.200.69", "fd7a:115c:a1e0::5b37:80f", "fd7a:115c:a1e0::c537:c845"], + "SrcIPs": [ + "100.103.8.15", + "100.83.200.69", + "fd7a:115c:a1e0::5b37:80f", + "fd7a:115c:a1e0::c537:c845" + ], "DstPorts": [ { "IP": "100.108.74.26", @@ -428,298 +173,16 @@ } ] } - ], - "packet_filter_matches": [ - { - "IPProto": [6, 17, 1, 58], - "Srcs": [ - "100.103.8.15/32", - "100.83.200.69/32", - "fd7a:115c:a1e0::5b37:80f/128", - "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": { - "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": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": null } } } diff --git a/hscontrol/policy/v2/testdata/grant_results/GRANT-P04_1.hujson b/hscontrol/policy/v2/testdata/grant_results/GRANT-P04_1.hujson index 794f7fa70..347d8fbc2 100644 --- a/hscontrol/policy/v2/testdata/grant_results/GRANT-P04_1.hujson +++ b/hscontrol/policy/v2/testdata/grant_results/GRANT-P04_1.hujson @@ -5,23 +5,37 @@ // Expected: Rules on 8 nodes { "test_id": "GRANT-P04_1", - "timestamp": "2026-02-23T00:47:06Z", - "propagation_wait_seconds": 15, "input": { - "policy_file": "/home/kradalby/acl-explore/grant_policies/grant_p04_1.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -30,102 +44,89 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "grants": [ { - "src": ["autogroup:member"], - "dst": ["*"], - "ip": ["*"] + "src": [ + "autogroup:member" + ], + "dst": [ + "*" + ], + "ip": [ + "*" + ] } ] }, - "grants_section": [ - { - "src": ["autogroup:member"], - "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"], + "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"], + "tags": [ + "tag:router" + ], "ipv4": "100.92.142.61", - "ipv6": "fd7a:115c:a1e0::3e37:8e3d", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] + "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"], + "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"], + "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"], + "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" @@ -134,10 +135,6 @@ }, "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": [ @@ -158,216 +155,9 @@ } ] } - ], - "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": "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": { - "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/exit-node/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/exit-node/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": 8, - "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 - } - } - } + ] }, "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": [ @@ -388,216 +178,9 @@ } ] } - ], - "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": "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": { - "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": 8, - "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": [ { "SrcIPs": [ @@ -618,216 +201,9 @@ } ] } - ], - "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": "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": { - "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-client/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-client/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": 8, - "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-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": [ @@ -848,216 +224,9 @@ } ] } - ], - "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": "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": { - "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-prod/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-prod/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": 8, - "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-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": [ @@ -1078,216 +247,9 @@ } ] } - ], - "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": "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": { - "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": 8, - "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": [ { "SrcIPs": [ @@ -1308,397 +270,9 @@ } ] } - ], - "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": "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": { - "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/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": { - "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/user-kris/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/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": { - "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/user-kris/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": 8, - "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-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": [ @@ -1719,397 +293,9 @@ } ] } - ], - "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": "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": { - "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/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": { - "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/user-mon/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/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": { - "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.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": { - "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": 8, - "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 - } - } - } + ] }, "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": [ @@ -2130,391 +316,7 @@ } ] } - ], - "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": "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": { - "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/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": { - "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/user1/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/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": { - "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/user1/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 - } - } - } + ] } } } diff --git a/hscontrol/policy/v2/testdata/grant_results/GRANT-P04_2.hujson b/hscontrol/policy/v2/testdata/grant_results/GRANT-P04_2.hujson index 7fec4353b..9d6e33a26 100644 --- a/hscontrol/policy/v2/testdata/grant_results/GRANT-P04_2.hujson +++ b/hscontrol/policy/v2/testdata/grant_results/GRANT-P04_2.hujson @@ -5,23 +5,37 @@ // Expected: Rules on 8 nodes { "test_id": "GRANT-P04_2", - "timestamp": "2026-02-23T00:47:22Z", - "propagation_wait_seconds": 15, "input": { - "policy_file": "/home/kradalby/acl-explore/grant_policies/grant_p04_2.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -30,102 +44,89 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "grants": [ { - "src": ["autogroup:tagged"], - "dst": ["*"], - "ip": ["*"] + "src": [ + "autogroup:tagged" + ], + "dst": [ + "*" + ], + "ip": [ + "*" + ] } ] }, - "grants_section": [ - { - "src": ["autogroup:tagged"], - "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"], + "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"], + "tags": [ + "tag:router" + ], "ipv4": "100.92.142.61", - "ipv6": "fd7a:115c:a1e0::3e37:8e3d", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] + "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"], + "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"], + "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"], + "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" @@ -134,10 +135,6 @@ }, "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": [ @@ -162,401 +159,9 @@ } ] } - ], - "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": [ - { - "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": { - "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": { - "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/exit-node/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/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": { - "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/exit-node/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/exit-node/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": 8, - "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 - } - } - } + ] }, "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": [ @@ -581,400 +186,9 @@ } ] } - ], - "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": [ - { - "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": { - "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": 8, - "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": [ { "SrcIPs": [ @@ -999,401 +213,9 @@ } ] } - ], - "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": [ - { - "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": { - "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-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": { - "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/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": { - "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-client/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-client/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": 8, - "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-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": [ @@ -1418,401 +240,9 @@ } ] } - ], - "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": [ - { - "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": { - "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-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": { - "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.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": { - "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-prod/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-prod/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": 8, - "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-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": [ @@ -1837,401 +267,9 @@ } ] } - ], - "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": [ - { - "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": { - "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": 8, - "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": [ { "SrcIPs": [ @@ -2256,310 +294,9 @@ } ] } - ], - "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": [ - { - "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": { - "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/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"], - "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": 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": { - "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/user-kris/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/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": [ { "SrcIPs": [ @@ -2584,310 +321,9 @@ } ] } - ], - "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": [ - { - "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": { - "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/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"], - "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": 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": { - "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/user-mon/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/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": [ { "SrcIPs": [ @@ -2912,304 +348,7 @@ } ] } - ], - "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": [ - { - "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": { - "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/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"], - "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": 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": { - "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/user1/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/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 - } - } + ] } } } diff --git a/hscontrol/policy/v2/testdata/grant_results/GRANT-P04_3.hujson b/hscontrol/policy/v2/testdata/grant_results/GRANT-P04_3.hujson index e85f12ceb..f6a7d71fb 100644 --- a/hscontrol/policy/v2/testdata/grant_results/GRANT-P04_3.hujson +++ b/hscontrol/policy/v2/testdata/grant_results/GRANT-P04_3.hujson @@ -5,24 +5,38 @@ // Expected: Error (HTTP 400) — autogroup:self can only be used with users, groups, or supported autogroups { "test_id": "GRANT-P04_3", - "description": "", - "timestamp": "2026-02-23T00:47:39Z", "error": true, "input": { - "policy_file": "/home/kradalby/acl-explore/grant_policies/grant_p04_3.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -31,23 +45,34 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "grants": [ { - "src": ["*"], - "dst": ["autogroup:self"], - "ip": ["*"] + "src": [ + "*" + ], + "dst": [ + "autogroup:self" + ], + "ip": [ + "*" + ] } ] }, - "grants_section": [{ "src": ["*"], "dst": ["autogroup:self"], "ip": ["*"] }], - "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" } + "api_response_body": { + "message": "autogroup:self can only be used with users, groups, or supported autogroups" + } } } diff --git a/hscontrol/policy/v2/testdata/grant_results/GRANT-P04_4.hujson b/hscontrol/policy/v2/testdata/grant_results/GRANT-P04_4.hujson index 8644469aa..b6442a5c3 100644 --- a/hscontrol/policy/v2/testdata/grant_results/GRANT-P04_4.hujson +++ b/hscontrol/policy/v2/testdata/grant_results/GRANT-P04_4.hujson @@ -5,23 +5,37 @@ // Expected: No filter rules on any node { "test_id": "GRANT-P04_4", - "timestamp": "2026-02-23T00:47:40Z", - "propagation_wait_seconds": 15, "input": { - "policy_file": "/home/kradalby/acl-explore/grant_policies/grant_p04_4.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -30,102 +44,89 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "grants": [ { - "src": ["*"], - "dst": ["autogroup:internet"], - "ip": ["*"] + "src": [ + "*" + ], + "dst": [ + "autogroup:internet" + ], + "ip": [ + "*" + ] } ] }, - "grants_section": [ - { - "src": ["*"], - "dst": ["autogroup:internet"], - "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"], + "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"], + "tags": [ + "tag:router" + ], "ipv4": "100.92.142.61", - "ipv6": "fd7a:115c:a1e0::3e37:8e3d", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] + "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"], + "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"], + "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"], + "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" @@ -134,364 +135,28 @@ }, "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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": null } } } diff --git a/hscontrol/policy/v2/testdata/grant_results/GRANT-P05_1.hujson b/hscontrol/policy/v2/testdata/grant_results/GRANT-P05_1.hujson index a60f748b3..e14f4e961 100644 --- a/hscontrol/policy/v2/testdata/grant_results/GRANT-P05_1.hujson +++ b/hscontrol/policy/v2/testdata/grant_results/GRANT-P05_1.hujson @@ -5,23 +5,37 @@ // Expected: Rules on tagged-server { "test_id": "GRANT-P05_1", - "timestamp": "2026-02-23T00:47:56Z", - "propagation_wait_seconds": 15, "input": { - "policy_file": "/home/kradalby/acl-explore/grant_policies/grant_p05_1.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -30,102 +44,89 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "grants": [ { - "src": ["*"], - "dst": ["webserver"], - "ip": ["80"] + "src": [ + "*" + ], + "dst": [ + "webserver" + ], + "ip": [ + "80" + ] } ] }, - "grants_section": [ - { - "src": ["*"], - "dst": ["webserver"], - "ip": ["80"] - } - ], - "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"], + "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"], + "tags": [ + "tag:router" + ], "ipv4": "100.92.142.61", - "ipv6": "fd7a:115c:a1e0::3e37:8e3d", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] + "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"], + "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"], + "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"], + "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" @@ -134,370 +135,18 @@ }, "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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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": [ @@ -516,663 +165,16 @@ } ] } - ], - "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": [ - { - "Net": "100.108.74.26/32", - "Ports": { - "First": 80, - "Last": 80 - } - } - ], - "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": 8, - "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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": null } } } diff --git a/hscontrol/policy/v2/testdata/grant_results/GRANT-P05_2.hujson b/hscontrol/policy/v2/testdata/grant_results/GRANT-P05_2.hujson index d6a5b35b5..cbf3d7b5b 100644 --- a/hscontrol/policy/v2/testdata/grant_results/GRANT-P05_2.hujson +++ b/hscontrol/policy/v2/testdata/grant_results/GRANT-P05_2.hujson @@ -5,23 +5,37 @@ // Expected: Rules on 8 nodes { "test_id": "GRANT-P05_2", - "timestamp": "2026-02-23T00:48:13Z", - "propagation_wait_seconds": 15, "input": { - "policy_file": "/home/kradalby/acl-explore/grant_policies/grant_p05_2.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -30,102 +44,89 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "grants": [ { - "src": ["webserver"], - "dst": ["*"], - "ip": ["*"] + "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 }, "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"], + "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"], + "tags": [ + "tag:router" + ], "ipv4": "100.92.142.61", - "ipv6": "fd7a:115c:a1e0::3e37:8e3d", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] + "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"], + "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"], + "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"], + "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" @@ -134,13 +135,11 @@ }, "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.108.74.26"], + "SrcIPs": [ + "100.108.74.26" + ], "DstPorts": [ { "IP": "*", @@ -151,122 +150,14 @@ } ] } - ], - "packet_filter_matches": [ - { - "IPProto": [6, 17, 1, 58], - "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 - } - } - ], - "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": { - "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": [ { - "SrcIPs": ["100.108.74.26"], + "SrcIPs": [ + "100.108.74.26" + ], "DstPorts": [ { "IP": "*", @@ -277,122 +168,14 @@ } ] } - ], - "packet_filter_matches": [ - { - "IPProto": [6, 17, 1, 58], - "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 - } - } - ], - "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": { - "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": [ { - "SrcIPs": ["100.108.74.26"], + "SrcIPs": [ + "100.108.74.26" + ], "DstPorts": [ { "IP": "*", @@ -403,122 +186,14 @@ } ] } - ], - "packet_filter_matches": [ - { - "IPProto": [6, 17, 1, 58], - "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 - } - } - ], - "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": { - "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": [ { - "SrcIPs": ["100.108.74.26"], + "SrcIPs": [ + "100.108.74.26" + ], "DstPorts": [ { "IP": "*", @@ -529,122 +204,14 @@ } ] } - ], - "packet_filter_matches": [ - { - "IPProto": [6, 17, 1, 58], - "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 - } - } - ], - "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": { - "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.108.74.26"], + "SrcIPs": [ + "100.108.74.26" + ], "DstPorts": [ { "IP": "*", @@ -655,393 +222,14 @@ } ] } - ], - "packet_filter_matches": [ - { - "IPProto": [6, 17, 1, 58], - "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 - } - } - ], - "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": 8, - "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": [ { - "SrcIPs": ["100.108.74.26"], + "SrcIPs": [ + "100.108.74.26" + ], "DstPorts": [ { "IP": "*", @@ -1052,122 +240,14 @@ } ] } - ], - "packet_filter_matches": [ - { - "IPProto": [6, 17, 1, 58], - "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 - } - } - ], - "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": { - "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": [ { - "SrcIPs": ["100.108.74.26"], + "SrcIPs": [ + "100.108.74.26" + ], "DstPorts": [ { "IP": "*", @@ -1178,122 +258,14 @@ } ] } - ], - "packet_filter_matches": [ - { - "IPProto": [6, 17, 1, 58], - "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 - } - } - ], - "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": { - "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": [ { - "SrcIPs": ["100.108.74.26"], + "SrcIPs": [ + "100.108.74.26" + ], "DstPorts": [ { "IP": "*", @@ -1304,113 +276,7 @@ } ] } - ], - "packet_filter_matches": [ - { - "IPProto": [6, 17, 1, 58], - "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 - } - } - ], - "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": { - "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 - } - } + ] } } } diff --git a/hscontrol/policy/v2/testdata/grant_results/GRANT-P05_3.hujson b/hscontrol/policy/v2/testdata/grant_results/GRANT-P05_3.hujson index 20e6fb1cc..ca266f59d 100644 --- a/hscontrol/policy/v2/testdata/grant_results/GRANT-P05_3.hujson +++ b/hscontrol/policy/v2/testdata/grant_results/GRANT-P05_3.hujson @@ -5,23 +5,37 @@ // Expected: Rules on 8 nodes { "test_id": "GRANT-P05_3", - "timestamp": "2026-02-23T00:48:30Z", - "propagation_wait_seconds": 15, "input": { - "policy_file": "/home/kradalby/acl-explore/grant_policies/grant_p05_3.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -30,102 +44,89 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "grants": [ { - "src": ["internal"], - "dst": ["*"], - "ip": ["*"] + "src": [ + "internal" + ], + "dst": [ + "*" + ], + "ip": [ + "*" + ] } ] }, - "grants_section": [ - { - "src": ["internal"], - "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"], + "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"], + "tags": [ + "tag:router" + ], "ipv4": "100.92.142.61", - "ipv6": "fd7a:115c:a1e0::3e37:8e3d", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] + "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"], + "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"], + "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"], + "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" @@ -134,13 +135,11 @@ }, "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": ["10.0.0.0/8"], + "SrcIPs": [ + "10.0.0.0/8" + ], "DstPorts": [ { "IP": "*", @@ -151,123 +150,14 @@ } ] } - ], - "packet_filter_matches": [ - { - "IPProto": [6, 17, 1, 58], - "Srcs": ["10.0.0.0/8"], - "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": { - "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": [ { - "SrcIPs": ["10.0.0.0/8"], + "SrcIPs": [ + "10.0.0.0/8" + ], "DstPorts": [ { "IP": "*", @@ -278,392 +168,14 @@ } ] } - ], - "packet_filter_matches": [ - { - "IPProto": [6, 17, 1, 58], - "Srcs": ["10.0.0.0/8"], - "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": { - "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": 8, - "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": [ { - "SrcIPs": ["10.0.0.0/8"], + "SrcIPs": [ + "10.0.0.0/8" + ], "DstPorts": [ { "IP": "*", @@ -674,123 +186,14 @@ } ] } - ], - "packet_filter_matches": [ - { - "IPProto": [6, 17, 1, 58], - "Srcs": ["10.0.0.0/8"], - "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": { - "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": [ { - "SrcIPs": ["10.0.0.0/8"], + "SrcIPs": [ + "10.0.0.0/8" + ], "DstPorts": [ { "IP": "*", @@ -801,123 +204,14 @@ } ] } - ], - "packet_filter_matches": [ - { - "IPProto": [6, 17, 1, 58], - "Srcs": ["10.0.0.0/8"], - "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": { - "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": [ { - "SrcIPs": ["10.0.0.0/8"], + "SrcIPs": [ + "10.0.0.0/8" + ], "DstPorts": [ { "IP": "*", @@ -928,123 +222,14 @@ } ] } - ], - "packet_filter_matches": [ - { - "IPProto": [6, 17, 1, 58], - "Srcs": ["10.0.0.0/8"], - "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": { - "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": [ { - "SrcIPs": ["10.0.0.0/8"], + "SrcIPs": [ + "10.0.0.0/8" + ], "DstPorts": [ { "IP": "*", @@ -1055,123 +240,14 @@ } ] } - ], - "packet_filter_matches": [ - { - "IPProto": [6, 17, 1, 58], - "Srcs": ["10.0.0.0/8"], - "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": { - "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": [ { - "SrcIPs": ["10.0.0.0/8"], + "SrcIPs": [ + "10.0.0.0/8" + ], "DstPorts": [ { "IP": "*", @@ -1182,123 +258,14 @@ } ] } - ], - "packet_filter_matches": [ - { - "IPProto": [6, 17, 1, 58], - "Srcs": ["10.0.0.0/8"], - "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": { - "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": [ { - "SrcIPs": ["10.0.0.0/8"], + "SrcIPs": [ + "10.0.0.0/8" + ], "DstPorts": [ { "IP": "*", @@ -1309,114 +276,7 @@ } ] } - ], - "packet_filter_matches": [ - { - "IPProto": [6, 17, 1, 58], - "Srcs": ["10.0.0.0/8"], - "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": { - "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 - } - } + ] } } } diff --git a/hscontrol/policy/v2/testdata/grant_results/GRANT-P06_1.hujson b/hscontrol/policy/v2/testdata/grant_results/GRANT-P06_1.hujson index ab58ee1de..148f72aee 100644 --- a/hscontrol/policy/v2/testdata/grant_results/GRANT-P06_1.hujson +++ b/hscontrol/policy/v2/testdata/grant_results/GRANT-P06_1.hujson @@ -5,23 +5,37 @@ // Expected: Rules on tagged-server { "test_id": "GRANT-P06_1", - "timestamp": "2026-02-23T00:48:47Z", - "propagation_wait_seconds": 15, "input": { - "policy_file": "/home/kradalby/acl-explore/grant_policies/grant_p06_1.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -30,102 +44,89 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "grants": [ { - "src": ["*"], - "dst": ["tag:server"], - "ip": ["tcp:22"] + "src": [ + "*" + ], + "dst": [ + "tag:server" + ], + "ip": [ + "tcp:22" + ] } ] }, - "grants_section": [ - { - "src": ["*"], - "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"], + "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"], + "tags": [ + "tag:router" + ], "ipv4": "100.92.142.61", - "ipv6": "fd7a:115c:a1e0::3e37:8e3d", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] + "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"], + "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"], + "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"], + "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" @@ -134,370 +135,18 @@ }, "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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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": [ @@ -522,672 +171,20 @@ } } ], - "IPProto": [6] + "IPProto": [ + 6 + ] } - ], - "packet_filter_matches": [ - { - "IPProto": [6], - "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": [ - { - "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": 8, - "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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": null } } } diff --git a/hscontrol/policy/v2/testdata/grant_results/GRANT-P06_2.hujson b/hscontrol/policy/v2/testdata/grant_results/GRANT-P06_2.hujson index fca9ad471..d4abbab66 100644 --- a/hscontrol/policy/v2/testdata/grant_results/GRANT-P06_2.hujson +++ b/hscontrol/policy/v2/testdata/grant_results/GRANT-P06_2.hujson @@ -5,23 +5,37 @@ // Expected: Rules on tagged-server { "test_id": "GRANT-P06_2", - "timestamp": "2026-02-23T00:49:03Z", - "propagation_wait_seconds": 15, "input": { - "policy_file": "/home/kradalby/acl-explore/grant_policies/grant_p06_2.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -30,102 +44,89 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "grants": [ { - "src": ["*"], - "dst": ["tag:server"], - "ip": ["udp:53"] + "src": [ + "*" + ], + "dst": [ + "tag:server" + ], + "ip": [ + "udp:53" + ] } ] }, - "grants_section": [ - { - "src": ["*"], - "dst": ["tag:server"], - "ip": ["udp:53"] - } - ], - "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"], + "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"], + "tags": [ + "tag:router" + ], "ipv4": "100.92.142.61", - "ipv6": "fd7a:115c:a1e0::3e37:8e3d", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] + "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"], + "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"], + "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"], + "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" @@ -134,370 +135,18 @@ }, "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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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": [ @@ -522,672 +171,20 @@ } } ], - "IPProto": [17] + "IPProto": [ + 17 + ] } - ], - "packet_filter_matches": [ - { - "IPProto": [17], - "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": [ - { - "Net": "100.108.74.26/32", - "Ports": { - "First": 53, - "Last": 53 - } - }, - { - "Net": "fd7a:115c:a1e0::b901:4a87/128", - "Ports": { - "First": 53, - "Last": 53 - } - } - ], - "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": 8, - "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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": null } } } diff --git a/hscontrol/policy/v2/testdata/grant_results/GRANT-P06_3.hujson b/hscontrol/policy/v2/testdata/grant_results/GRANT-P06_3.hujson index 32bcb8f46..9b0b3edf2 100644 --- a/hscontrol/policy/v2/testdata/grant_results/GRANT-P06_3.hujson +++ b/hscontrol/policy/v2/testdata/grant_results/GRANT-P06_3.hujson @@ -5,23 +5,37 @@ // Expected: Rules on tagged-server { "test_id": "GRANT-P06_3", - "timestamp": "2026-02-23T00:49:20Z", - "propagation_wait_seconds": 15, "input": { - "policy_file": "/home/kradalby/acl-explore/grant_policies/grant_p06_3.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -30,102 +44,89 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "grants": [ { - "src": ["*"], - "dst": ["tag:server"], - "ip": ["*"] + "src": [ + "*" + ], + "dst": [ + "tag:server" + ], + "ip": [ + "*" + ] } ] }, - "grants_section": [ - { - "src": ["*"], - "dst": ["tag:server"], - "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"], + "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"], + "tags": [ + "tag:router" + ], "ipv4": "100.92.142.61", - "ipv6": "fd7a:115c:a1e0::3e37:8e3d", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] + "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"], + "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"], + "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"], + "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" @@ -134,370 +135,18 @@ }, "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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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": [ @@ -523,670 +172,16 @@ } ] } - ], - "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": [ - { - "Net": "100.108.74.26/32", - "Ports": { - "First": 0, - "Last": 65535 - } - }, - { - "Net": "fd7a:115c:a1e0::b901:4a87/128", - "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": { - "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": 8, - "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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": null } } } diff --git a/hscontrol/policy/v2/testdata/grant_results/GRANT-P06_4.hujson b/hscontrol/policy/v2/testdata/grant_results/GRANT-P06_4.hujson index ce5816f58..8979898db 100644 --- a/hscontrol/policy/v2/testdata/grant_results/GRANT-P06_4.hujson +++ b/hscontrol/policy/v2/testdata/grant_results/GRANT-P06_4.hujson @@ -5,23 +5,37 @@ // Expected: Rules on tagged-server { "test_id": "GRANT-P06_4", - "timestamp": "2026-02-23T00:49:37Z", - "propagation_wait_seconds": 15, "input": { - "policy_file": "/home/kradalby/acl-explore/grant_policies/grant_p06_4.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -30,102 +44,89 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "grants": [ { - "src": ["*"], - "dst": ["tag:server"], - "ip": ["22"] + "src": [ + "*" + ], + "dst": [ + "tag:server" + ], + "ip": [ + "22" + ] } ] }, - "grants_section": [ - { - "src": ["*"], - "dst": ["tag:server"], - "ip": ["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"], + "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"], + "tags": [ + "tag:router" + ], "ipv4": "100.92.142.61", - "ipv6": "fd7a:115c:a1e0::3e37:8e3d", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] + "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"], + "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"], + "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"], + "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" @@ -134,370 +135,18 @@ }, "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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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": [ @@ -523,670 +172,16 @@ } ] } - ], - "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": [ - { - "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": 8, - "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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": null } } } diff --git a/hscontrol/policy/v2/testdata/grant_results/GRANT-P06_5.hujson b/hscontrol/policy/v2/testdata/grant_results/GRANT-P06_5.hujson index d81f711df..d2ea68670 100644 --- a/hscontrol/policy/v2/testdata/grant_results/GRANT-P06_5.hujson +++ b/hscontrol/policy/v2/testdata/grant_results/GRANT-P06_5.hujson @@ -5,23 +5,37 @@ // Expected: Rules on tagged-server { "test_id": "GRANT-P06_5", - "timestamp": "2026-02-23T00:49:55Z", - "propagation_wait_seconds": 15, "input": { - "policy_file": "/home/kradalby/acl-explore/grant_policies/grant_p06_5.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -30,102 +44,89 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "grants": [ { - "src": ["*"], - "dst": ["tag:server"], - "ip": ["80-443"] + "src": [ + "*" + ], + "dst": [ + "tag:server" + ], + "ip": [ + "80-443" + ] } ] }, - "grants_section": [ - { - "src": ["*"], - "dst": ["tag:server"], - "ip": ["80-443"] - } - ], - "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"], + "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"], + "tags": [ + "tag:router" + ], "ipv4": "100.92.142.61", - "ipv6": "fd7a:115c:a1e0::3e37:8e3d", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] + "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"], + "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"], + "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"], + "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" @@ -134,370 +135,18 @@ }, "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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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": [ @@ -523,670 +172,16 @@ } ] } - ], - "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": [ - { - "Net": "100.108.74.26/32", - "Ports": { - "First": 80, - "Last": 443 - } - }, - { - "Net": "fd7a:115c:a1e0::b901:4a87/128", - "Ports": { - "First": 80, - "Last": 443 - } - } - ], - "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": 8, - "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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": null } } } diff --git a/hscontrol/policy/v2/testdata/grant_results/GRANT-P06_6.hujson b/hscontrol/policy/v2/testdata/grant_results/GRANT-P06_6.hujson index da7f83d80..85932563c 100644 --- a/hscontrol/policy/v2/testdata/grant_results/GRANT-P06_6.hujson +++ b/hscontrol/policy/v2/testdata/grant_results/GRANT-P06_6.hujson @@ -5,23 +5,37 @@ // Expected: Rules on tagged-server { "test_id": "GRANT-P06_6", - "timestamp": "2026-02-23T00:50:11Z", - "propagation_wait_seconds": 15, "input": { - "policy_file": "/home/kradalby/acl-explore/grant_policies/grant_p06_6.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -30,102 +44,91 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "grants": [ { - "src": ["*"], - "dst": ["tag:server"], - "ip": ["22", "80", "443"] + "src": [ + "*" + ], + "dst": [ + "tag:server" + ], + "ip": [ + "22", + "80", + "443" + ] } ] }, - "grants_section": [ - { - "src": ["*"], - "dst": ["tag:server"], - "ip": ["22", "80", "443"] - } - ], - "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"], + "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"], + "tags": [ + "tag:router" + ], "ipv4": "100.92.142.61", - "ipv6": "fd7a:115c:a1e0::3e37:8e3d", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] + "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"], + "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"], + "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"], + "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" @@ -134,370 +137,18 @@ }, "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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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": [ @@ -551,698 +202,16 @@ } ] } - ], - "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": [ - { - "Net": "100.108.74.26/32", - "Ports": { - "First": 22, - "Last": 22 - } - }, - { - "Net": "100.108.74.26/32", - "Ports": { - "First": 80, - "Last": 80 - } - }, - { - "Net": "100.108.74.26/32", - "Ports": { - "First": 443, - "Last": 443 - } - }, - { - "Net": "fd7a:115c:a1e0::b901:4a87/128", - "Ports": { - "First": 22, - "Last": 22 - } - }, - { - "Net": "fd7a:115c:a1e0::b901:4a87/128", - "Ports": { - "First": 80, - "Last": 80 - } - }, - { - "Net": "fd7a:115c:a1e0::b901:4a87/128", - "Ports": { - "First": 443, - "Last": 443 - } - } - ], - "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": 8, - "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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": null } } } diff --git a/hscontrol/policy/v2/testdata/grant_results/GRANT-P06_7.hujson b/hscontrol/policy/v2/testdata/grant_results/GRANT-P06_7.hujson index 6f0c83f62..eba6350c7 100644 --- a/hscontrol/policy/v2/testdata/grant_results/GRANT-P06_7.hujson +++ b/hscontrol/policy/v2/testdata/grant_results/GRANT-P06_7.hujson @@ -5,23 +5,37 @@ // Expected: Rules on tagged-server { "test_id": "GRANT-P06_7", - "timestamp": "2026-02-23T00:50:27Z", - "propagation_wait_seconds": 15, "input": { - "policy_file": "/home/kradalby/acl-explore/grant_policies/grant_p06_7.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -30,102 +44,89 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "grants": [ { - "src": ["*"], - "dst": ["tag:server"], - "ip": ["*"] + "src": [ + "*" + ], + "dst": [ + "tag:server" + ], + "ip": [ + "*" + ] } ] }, - "grants_section": [ - { - "src": ["*"], - "dst": ["tag:server"], - "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"], + "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"], + "tags": [ + "tag:router" + ], "ipv4": "100.92.142.61", - "ipv6": "fd7a:115c:a1e0::3e37:8e3d", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] + "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"], + "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"], + "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"], + "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" @@ -134,370 +135,18 @@ }, "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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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": [ @@ -523,670 +172,16 @@ } ] } - ], - "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": [ - { - "Net": "100.108.74.26/32", - "Ports": { - "First": 0, - "Last": 65535 - } - }, - { - "Net": "fd7a:115c:a1e0::b901:4a87/128", - "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": { - "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": 8, - "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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": null } } } diff --git a/hscontrol/policy/v2/testdata/grant_results/GRANT-P08_1.hujson b/hscontrol/policy/v2/testdata/grant_results/GRANT-P08_1.hujson index f7b31995d..5cd9f9614 100644 --- a/hscontrol/policy/v2/testdata/grant_results/GRANT-P08_1.hujson +++ b/hscontrol/policy/v2/testdata/grant_results/GRANT-P08_1.hujson @@ -7,23 +7,37 @@ // Expected: Rules on tagged-server { "test_id": "GRANT-P08_1", - "timestamp": "2026-02-23T00:50:53Z", - "propagation_wait_seconds": 15, "input": { - "policy_file": "/home/kradalby/acl-explore/grant_policies/grant_p08_1.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -32,112 +46,101 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "grants": [ { - "src": ["tag:client"], - "dst": ["tag:server"], - "ip": ["22"] + "src": [ + "tag:client" + ], + "dst": [ + "tag:server" + ], + "ip": [ + "22" + ] }, { - "src": ["tag:client"], - "dst": ["tag:server"], - "ip": ["80", "443"] + "src": [ + "tag:client" + ], + "dst": [ + "tag:server" + ], + "ip": [ + "80", + "443" + ] } ] }, - "grants_section": [ - { - "src": ["tag:client"], - "dst": ["tag:server"], - "ip": ["22"] - }, - { - "src": ["tag:client"], - "dst": ["tag:server"], - "ip": ["80", "443"] - } - ], - "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"], + "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"], + "tags": [ + "tag:router" + ], "ipv4": "100.92.142.61", - "ipv6": "fd7a:115c:a1e0::3e37:8e3d", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] + "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"], + "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"], + "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"], + "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" @@ -146,238 +149,24 @@ }, "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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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.83.200.69", "fd7a:115c:a1e0::c537:c845"], + "SrcIPs": [ + "100.83.200.69", + "fd7a:115c:a1e0::c537:c845" + ], "DstPorts": [ { "IP": "100.108.74.26", @@ -423,276 +212,16 @@ } ] } - ], - "packet_filter_matches": [ - { - "IPProto": [6, 17, 1, 58], - "Srcs": ["100.83.200.69/32", "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 - } - }, - { - "Net": "100.108.74.26/32", - "Ports": { - "First": 80, - "Last": 80 - } - }, - { - "Net": "100.108.74.26/32", - "Ports": { - "First": 443, - "Last": 443 - } - }, - { - "Net": "fd7a:115c:a1e0::b901:4a87/128", - "Ports": { - "First": 80, - "Last": 80 - } - }, - { - "Net": "fd7a:115c:a1e0::b901:4a87/128", - "Ports": { - "First": 443, - "Last": 443 - } - } - ], - "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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": null } } } diff --git a/hscontrol/policy/v2/testdata/grant_results/GRANT-P08_2.hujson b/hscontrol/policy/v2/testdata/grant_results/GRANT-P08_2.hujson index 73d7812cf..c39fa7313 100644 --- a/hscontrol/policy/v2/testdata/grant_results/GRANT-P08_2.hujson +++ b/hscontrol/policy/v2/testdata/grant_results/GRANT-P08_2.hujson @@ -8,23 +8,37 @@ // Expected: Rules on tagged-server { "test_id": "GRANT-P08_2", - "timestamp": "2026-02-23T00:51:09Z", - "propagation_wait_seconds": 15, "input": { - "policy_file": "/home/kradalby/acl-explore/grant_policies/grant_p08_2.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -33,122 +47,112 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "grants": [ { - "src": ["tag:client"], - "dst": ["tag:server"], - "ip": ["22"] + "src": [ + "tag:client" + ], + "dst": [ + "tag:server" + ], + "ip": [ + "22" + ] }, { - "src": ["tag:client"], - "dst": ["tag:server"], - "ip": ["80", "443"] + "src": [ + "tag:client" + ], + "dst": [ + "tag:server" + ], + "ip": [ + "80", + "443" + ] }, { - "src": ["*"], - "dst": ["tag:server"], - "ip": ["udp:53"] + "src": [ + "*" + ], + "dst": [ + "tag:server" + ], + "ip": [ + "udp:53" + ] } ] }, - "grants_section": [ - { - "src": ["tag:client"], - "dst": ["tag:server"], - "ip": ["22"] - }, - { - "src": ["tag:client"], - "dst": ["tag:server"], - "ip": ["80", "443"] - }, - { - "src": ["*"], - "dst": ["tag:server"], - "ip": ["udp:53"] - } - ], - "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"], + "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"], + "tags": [ + "tag:router" + ], "ipv4": "100.92.142.61", - "ipv6": "fd7a:115c:a1e0::3e37:8e3d", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] + "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"], + "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"], + "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"], + "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" @@ -157,373 +161,24 @@ }, "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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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.83.200.69", "fd7a:115c:a1e0::c537:c845"], + "SrcIPs": [ + "100.83.200.69", + "fd7a:115c:a1e0::c537:c845" + ], "DstPorts": [ { "IP": "100.108.74.26", @@ -592,722 +247,20 @@ } } ], - "IPProto": [17] + "IPProto": [ + 17 + ] } - ], - "packet_filter_matches": [ - { - "IPProto": [6, 17, 1, 58], - "Srcs": ["100.83.200.69/32", "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 - } - }, - { - "Net": "100.108.74.26/32", - "Ports": { - "First": 80, - "Last": 80 - } - }, - { - "Net": "100.108.74.26/32", - "Ports": { - "First": 443, - "Last": 443 - } - }, - { - "Net": "fd7a:115c:a1e0::b901:4a87/128", - "Ports": { - "First": 80, - "Last": 80 - } - }, - { - "Net": "fd7a:115c:a1e0::b901:4a87/128", - "Ports": { - "First": 443, - "Last": 443 - } - } - ], - "Caps": [] - }, - { - "IPProto": [17], - "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": [ - { - "Net": "100.108.74.26/32", - "Ports": { - "First": 53, - "Last": 53 - } - }, - { - "Net": "fd7a:115c:a1e0::b901:4a87/128", - "Ports": { - "First": 53, - "Last": 53 - } - } - ], - "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": 8, - "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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": null } } } diff --git a/hscontrol/policy/v2/testdata/grant_results/GRANT-P08_3.hujson b/hscontrol/policy/v2/testdata/grant_results/GRANT-P08_3.hujson index 03e308b89..cd1f657d1 100644 --- a/hscontrol/policy/v2/testdata/grant_results/GRANT-P08_3.hujson +++ b/hscontrol/policy/v2/testdata/grant_results/GRANT-P08_3.hujson @@ -5,23 +5,37 @@ // Expected: No filter rules on any node { "test_id": "GRANT-P08_3", - "timestamp": "2026-02-23T00:51:25Z", - "propagation_wait_seconds": 15, "input": { - "policy_file": "/home/kradalby/acl-explore/grant_policies/grant_p08_3.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -30,102 +44,89 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "grants": [ { - "src": ["group:empty"], - "dst": ["*"], - "ip": ["*"] + "src": [ + "group:empty" + ], + "dst": [ + "*" + ], + "ip": [ + "*" + ] } ] }, - "grants_section": [ - { - "src": ["group:empty"], - "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"], + "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"], + "tags": [ + "tag:router" + ], "ipv4": "100.92.142.61", - "ipv6": "fd7a:115c:a1e0::3e37:8e3d", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] + "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"], + "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"], + "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"], + "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" @@ -134,364 +135,28 @@ }, "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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": null } } } diff --git a/hscontrol/policy/v2/testdata/grant_results/GRANT-P08_4.hujson b/hscontrol/policy/v2/testdata/grant_results/GRANT-P08_4.hujson index e74a5b0bd..dab78a5db 100644 --- a/hscontrol/policy/v2/testdata/grant_results/GRANT-P08_4.hujson +++ b/hscontrol/policy/v2/testdata/grant_results/GRANT-P08_4.hujson @@ -8,23 +8,37 @@ // Expected: Rules on tagged-server { "test_id": "GRANT-P08_4", - "timestamp": "2026-02-23T00:51:42Z", - "propagation_wait_seconds": 15, "input": { - "policy_file": "/home/kradalby/acl-explore/grant_policies/grant_p08_4.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -33,122 +47,111 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "grants": [ { - "src": ["tag:client"], - "dst": ["tag:server"], - "ip": ["22"] + "src": [ + "tag:client" + ], + "dst": [ + "tag:server" + ], + "ip": [ + "22" + ] }, { - "src": ["tag:client"], - "dst": ["tag:server"], - "ip": ["80"] + "src": [ + "tag:client" + ], + "dst": [ + "tag:server" + ], + "ip": [ + "80" + ] }, { - "src": ["tag:client"], - "dst": ["tag:server"], - "ip": ["443"] + "src": [ + "tag:client" + ], + "dst": [ + "tag:server" + ], + "ip": [ + "443" + ] } ] }, - "grants_section": [ - { - "src": ["tag:client"], - "dst": ["tag:server"], - "ip": ["22"] - }, - { - "src": ["tag:client"], - "dst": ["tag:server"], - "ip": ["80"] - }, - { - "src": ["tag:client"], - "dst": ["tag:server"], - "ip": ["443"] - } - ], - "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"], + "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"], + "tags": [ + "tag:router" + ], "ipv4": "100.92.142.61", - "ipv6": "fd7a:115c:a1e0::3e37:8e3d", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] + "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"], + "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"], + "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"], + "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" @@ -157,238 +160,24 @@ }, "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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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.83.200.69", "fd7a:115c:a1e0::c537:c845"], + "SrcIPs": [ + "100.83.200.69", + "fd7a:115c:a1e0::c537:c845" + ], "DstPorts": [ { "IP": "100.108.74.26", @@ -434,276 +223,16 @@ } ] } - ], - "packet_filter_matches": [ - { - "IPProto": [6, 17, 1, 58], - "Srcs": ["100.83.200.69/32", "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 - } - }, - { - "Net": "100.108.74.26/32", - "Ports": { - "First": 80, - "Last": 80 - } - }, - { - "Net": "fd7a:115c:a1e0::b901:4a87/128", - "Ports": { - "First": 80, - "Last": 80 - } - }, - { - "Net": "100.108.74.26/32", - "Ports": { - "First": 443, - "Last": 443 - } - }, - { - "Net": "fd7a:115c:a1e0::b901:4a87/128", - "Ports": { - "First": 443, - "Last": 443 - } - } - ], - "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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": null } } } diff --git a/hscontrol/policy/v2/testdata/grant_results/GRANT-P08_5.hujson b/hscontrol/policy/v2/testdata/grant_results/GRANT-P08_5.hujson index 6a5b168fe..433304d3b 100644 --- a/hscontrol/policy/v2/testdata/grant_results/GRANT-P08_5.hujson +++ b/hscontrol/policy/v2/testdata/grant_results/GRANT-P08_5.hujson @@ -8,23 +8,37 @@ // Expected: Rules on tagged-server { "test_id": "GRANT-P08_5", - "timestamp": "2026-02-23T00:51:58Z", - "propagation_wait_seconds": 15, "input": { - "policy_file": "/home/kradalby/acl-explore/grant_policies/grant_p08_5.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -33,122 +47,111 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "grants": [ { - "src": ["tag:client"], - "dst": ["tag:server"], - "ip": ["22"] + "src": [ + "tag:client" + ], + "dst": [ + "tag:server" + ], + "ip": [ + "22" + ] }, { - "src": ["tag:prod"], - "dst": ["tag:server"], - "ip": ["22"] + "src": [ + "tag:prod" + ], + "dst": [ + "tag:server" + ], + "ip": [ + "22" + ] }, { - "src": ["tag:router"], - "dst": ["tag:server"], - "ip": ["22"] + "src": [ + "tag:router" + ], + "dst": [ + "tag:server" + ], + "ip": [ + "22" + ] } ] }, - "grants_section": [ - { - "src": ["tag:client"], - "dst": ["tag:server"], - "ip": ["22"] - }, - { - "src": ["tag:prod"], - "dst": ["tag:server"], - "ip": ["22"] - }, - { - "src": ["tag:router"], - "dst": ["tag:server"], - "ip": ["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"], + "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"], + "tags": [ + "tag:router" + ], "ipv4": "100.92.142.61", - "ipv6": "fd7a:115c:a1e0::3e37:8e3d", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] + "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"], + "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"], + "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"], + "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" @@ -157,328 +160,24 @@ }, "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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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.83.200.69", "fd7a:115c:a1e0::c537:c845"], + "SrcIPs": [ + "100.83.200.69", + "fd7a:115c:a1e0::c537:c845" + ], "DstPorts": [ { "IP": "100.108.74.26", @@ -497,7 +196,10 @@ ] }, { - "SrcIPs": ["100.103.8.15", "fd7a:115c:a1e0::5b37:80f"], + "SrcIPs": [ + "100.103.8.15", + "fd7a:115c:a1e0::5b37:80f" + ], "DstPorts": [ { "IP": "100.108.74.26", @@ -516,7 +218,10 @@ ] }, { - "SrcIPs": ["100.92.142.61", "fd7a:115c:a1e0::3e37:8e3d"], + "SrcIPs": [ + "100.92.142.61", + "fd7a:115c:a1e0::3e37:8e3d" + ], "DstPorts": [ { "IP": "100.108.74.26", @@ -534,382 +239,16 @@ } ] } - ], - "packet_filter_matches": [ - { - "IPProto": [6, 17, 1, 58], - "Srcs": ["100.83.200.69/32", "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": [] - }, - { - "IPProto": [6, 17, 1, 58], - "Srcs": ["100.103.8.15/32", "fd7a:115c:a1e0::5b37:80f/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": [] - }, - { - "IPProto": [6, 17, 1, 58], - "Srcs": ["100.92.142.61/32", "fd7a:115c:a1e0::3e37:8e3d/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": { - "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": 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": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": null } } } diff --git a/hscontrol/policy/v2/testdata/grant_results/GRANT-P08_6.hujson b/hscontrol/policy/v2/testdata/grant_results/GRANT-P08_6.hujson index dfcd289ca..439936b75 100644 --- a/hscontrol/policy/v2/testdata/grant_results/GRANT-P08_6.hujson +++ b/hscontrol/policy/v2/testdata/grant_results/GRANT-P08_6.hujson @@ -7,23 +7,37 @@ // Expected: Rules on tagged-server { "test_id": "GRANT-P08_6", - "timestamp": "2026-02-23T00:52:14Z", - "propagation_wait_seconds": 15, "input": { - "policy_file": "/home/kradalby/acl-explore/grant_policies/grant_p08_6.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -32,112 +46,100 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "grants": [ { - "src": ["tag:client"], - "dst": ["tag:server"], - "ip": ["22"] + "src": [ + "tag:client" + ], + "dst": [ + "tag:server" + ], + "ip": [ + "22" + ] }, { - "src": ["*"], - "dst": ["tag:server"], - "ip": ["80"] + "src": [ + "*" + ], + "dst": [ + "tag:server" + ], + "ip": [ + "80" + ] } ] }, - "grants_section": [ - { - "src": ["tag:client"], - "dst": ["tag:server"], - "ip": ["22"] - }, - { - "src": ["*"], - "dst": ["tag:server"], - "ip": ["80"] - } - ], - "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"], + "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"], + "tags": [ + "tag:router" + ], "ipv4": "100.92.142.61", - "ipv6": "fd7a:115c:a1e0::3e37:8e3d", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] + "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"], + "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"], + "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"], + "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" @@ -146,373 +148,24 @@ }, "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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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.83.200.69", "fd7a:115c:a1e0::c537:c845"], + "SrcIPs": [ + "100.83.200.69", + "fd7a:115c:a1e0::c537:c845" + ], "DstPorts": [ { "IP": "100.108.74.26", @@ -554,692 +207,16 @@ } ] } - ], - "packet_filter_matches": [ - { - "IPProto": [6, 17, 1, 58], - "Srcs": ["100.83.200.69/32", "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": [] - }, - { - "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": [ - { - "Net": "100.108.74.26/32", - "Ports": { - "First": 80, - "Last": 80 - } - }, - { - "Net": "fd7a:115c:a1e0::b901:4a87/128", - "Ports": { - "First": 80, - "Last": 80 - } - } - ], - "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": 8, - "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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": null } } } diff --git a/hscontrol/policy/v2/testdata/grant_results/GRANT-P08_7.hujson b/hscontrol/policy/v2/testdata/grant_results/GRANT-P08_7.hujson index 31f300e08..259af2f98 100644 --- a/hscontrol/policy/v2/testdata/grant_results/GRANT-P08_7.hujson +++ b/hscontrol/policy/v2/testdata/grant_results/GRANT-P08_7.hujson @@ -7,23 +7,37 @@ // Expected: Rules on 8 nodes { "test_id": "GRANT-P08_7", - "timestamp": "2026-02-23T00:52:30Z", - "propagation_wait_seconds": 15, "input": { - "policy_file": "/home/kradalby/acl-explore/grant_policies/grant_p08_7.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -32,112 +46,100 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "grants": [ { - "src": ["*"], - "dst": ["*"], - "ip": ["*"] + "src": [ + "*" + ], + "dst": [ + "*" + ], + "ip": [ + "*" + ] }, { - "src": ["tag:client"], - "dst": ["tag:server"], - "ip": ["22"] + "src": [ + "tag:client" + ], + "dst": [ + "tag:server" + ], + "ip": [ + "22" + ] } ] }, - "grants_section": [ - { - "src": ["*"], - "dst": ["*"], - "ip": ["*"] - }, - { - "src": ["tag:client"], - "dst": ["tag:server"], - "ip": ["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"], + "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"], + "tags": [ + "tag:router" + ], "ipv4": "100.92.142.61", - "ipv6": "fd7a:115c:a1e0::3e37:8e3d", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] + "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"], + "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"], + "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"], + "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" @@ -146,10 +148,6 @@ }, "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": [ @@ -168,406 +166,9 @@ } ] } - ], - "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": [ - { - "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": { - "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": { - "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/exit-node/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/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": { - "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/exit-node/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/exit-node/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": 8, - "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 - } - } - } + ] }, "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": [ @@ -586,405 +187,9 @@ } ] } - ], - "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": [ - { - "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": { - "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": 8, - "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": [ { "SrcIPs": [ @@ -1003,406 +208,9 @@ } ] } - ], - "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": [ - { - "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": { - "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-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": { - "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/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": { - "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-client/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-client/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": 8, - "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-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": [ @@ -1421,406 +229,9 @@ } ] } - ], - "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": [ - { - "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": { - "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-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": { - "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.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": { - "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-prod/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-prod/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": 8, - "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-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": [ @@ -1840,7 +251,10 @@ ] }, { - "SrcIPs": ["100.83.200.69", "fd7a:115c:a1e0::c537:c845"], + "SrcIPs": [ + "100.83.200.69", + "fd7a:115c:a1e0::c537:c845" + ], "DstPorts": [ { "IP": "100.108.74.26", @@ -1858,428 +272,9 @@ } ] } - ], - "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": [ - { - "Net": "0.0.0.0/0", - "Ports": { - "First": 0, - "Last": 65535 - } - }, - { - "Net": "::/0", - "Ports": { - "First": 0, - "Last": 65535 - } - } - ], - "Caps": [] - }, - { - "IPProto": [6, 17, 1, 58], - "Srcs": ["100.83.200.69/32", "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": { - "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": 8, - "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": [ { "SrcIPs": [ @@ -2298,406 +293,9 @@ } ] } - ], - "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": [ - { - "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": { - "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/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": { - "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/user-kris/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/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": { - "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/user-kris/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": 8, - "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-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": [ @@ -2716,406 +314,9 @@ } ] } - ], - "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": [ - { - "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": { - "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/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": { - "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/user-mon/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/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": { - "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.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": { - "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": 8, - "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 - } - } - } + ] }, "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": [ @@ -3134,400 +335,7 @@ } ] } - ], - "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": [ - { - "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": { - "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/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": { - "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/user1/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/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": { - "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/user1/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 - } - } - } + ] } } } diff --git a/hscontrol/policy/v2/testdata/grant_results/GRANT-P08_8.hujson b/hscontrol/policy/v2/testdata/grant_results/GRANT-P08_8.hujson index cf8f64e0f..5ff8b65ed 100644 --- a/hscontrol/policy/v2/testdata/grant_results/GRANT-P08_8.hujson +++ b/hscontrol/policy/v2/testdata/grant_results/GRANT-P08_8.hujson @@ -5,23 +5,37 @@ // Expected: Rules on subnet-router { "test_id": "GRANT-P08_8", - "timestamp": "2026-02-23T00:52:47Z", - "propagation_wait_seconds": 15, "input": { - "policy_file": "/home/kradalby/acl-explore/grant_policies/grant_p08_8.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -30,102 +44,89 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "grants": [ { - "src": ["*"], - "dst": ["10.0.0.0/8"], - "ip": ["22"] + "src": [ + "*" + ], + "dst": [ + "10.0.0.0/8" + ], + "ip": [ + "22" + ] } ] }, - "grants_section": [ - { - "src": ["*"], - "dst": ["10.0.0.0/8"], - "ip": ["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"], + "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"], + "tags": [ + "tag:router" + ], "ipv4": "100.92.142.61", - "ipv6": "fd7a:115c:a1e0::3e37:8e3d", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] + "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"], + "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"], + "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"], + "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" @@ -134,101 +135,9 @@ }, "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 - } - } + "packet_filter_rules": 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": [ @@ -247,938 +156,25 @@ } ] } - ], - "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": [ - { - "Net": "10.0.0.0/8", - "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/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": 8, - "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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": null } } } diff --git a/hscontrol/policy/v2/testdata/grant_results/GRANT-P09_10A.hujson b/hscontrol/policy/v2/testdata/grant_results/GRANT-P09_10A.hujson index 322a75b2d..03f2b752e 100644 --- a/hscontrol/policy/v2/testdata/grant_results/GRANT-P09_10A.hujson +++ b/hscontrol/policy/v2/testdata/grant_results/GRANT-P09_10A.hujson @@ -7,23 +7,37 @@ // Expected: Rules on tagged-server, user1 { "test_id": "GRANT-P09_10A", - "timestamp": "2026-02-23T00:53:03Z", - "propagation_wait_seconds": 15, "input": { - "policy_file": "/home/kradalby/acl-explore/grant_policies/grant_p09_10a.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -32,112 +46,100 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "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": ["22"] + "src": [ + "autogroup:member" + ], + "dst": [ + "tag:server" + ], + "ip": [ + "22" + ] }, { - "src": ["tag:client"], - "dst": ["group:admins"], - "ip": ["80"] + "src": [ + "tag:client" + ], + "dst": [ + "group:admins" + ], + "ip": [ + "80" + ] } ] }, - "grants_section": [ - { - "src": ["autogroup:member"], - "dst": ["tag:server"], - "ip": ["22"] - }, - { - "src": ["tag:client"], - "dst": ["group:admins"], - "ip": ["80"] - } - ], - "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"], + "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"], + "tags": [ + "tag:router" + ], "ipv4": "100.92.142.61", - "ipv6": "fd7a:115c:a1e0::3e37:8e3d", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] + "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"], + "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"], + "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"], + "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" @@ -146,235 +148,18 @@ }, "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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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": { - "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": 8, - "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 - } - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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": [ @@ -402,399 +187,21 @@ } ] } - ], - "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": 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": { - "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": 8, - "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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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.83.200.69", "fd7a:115c:a1e0::c537:c845"], + "SrcIPs": [ + "100.83.200.69", + "fd7a:115c:a1e0::c537:c845" + ], "DstPorts": [ { "IP": "100.90.199.68", @@ -812,158 +219,7 @@ } ] } - ], - "packet_filter_matches": [ - { - "IPProto": [6, 17, 1, 58], - "Srcs": ["100.83.200.69/32", "fd7a:115c:a1e0::c537:c845/128"], - "SrcCaps": null, - "Dsts": [ - { - "Net": "100.90.199.68/32", - "Ports": { - "First": 80, - "Last": 80 - } - }, - { - "Net": "fd7a:115c:a1e0::2d01:c747/128", - "Ports": { - "First": 80, - "Last": 80 - } - } - ], - "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": { - "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/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 - } - } + ] } } } diff --git a/hscontrol/policy/v2/testdata/grant_results/GRANT-P09_10B.hujson b/hscontrol/policy/v2/testdata/grant_results/GRANT-P09_10B.hujson index fd1b6bc99..d54bb21af 100644 --- a/hscontrol/policy/v2/testdata/grant_results/GRANT-P09_10B.hujson +++ b/hscontrol/policy/v2/testdata/grant_results/GRANT-P09_10B.hujson @@ -7,23 +7,37 @@ // Expected: Rules on 8 nodes { "test_id": "GRANT-P09_10B", - "timestamp": "2026-02-23T00:53:19Z", - "propagation_wait_seconds": 15, "input": { - "policy_file": "/home/kradalby/acl-explore/grant_policies/grant_p09_10b.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -32,112 +46,100 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "grants": [ { - "src": ["group:admins"], - "dst": ["*"], - "ip": ["*"] + "src": [ + "group:admins" + ], + "dst": [ + "*" + ], + "ip": [ + "*" + ] }, { - "src": ["autogroup:tagged"], - "dst": ["*"], - "ip": ["*"] + "src": [ + "autogroup:tagged" + ], + "dst": [ + "*" + ], + "ip": [ + "*" + ] } ] }, - "grants_section": [ - { - "src": ["group:admins"], - "dst": ["*"], - "ip": ["*"] - }, - { - "src": ["autogroup:tagged"], - "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"], + "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"], + "tags": [ + "tag:router" + ], "ipv4": "100.92.142.61", - "ipv6": "fd7a:115c:a1e0::3e37:8e3d", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] + "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"], + "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"], + "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"], + "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" @@ -146,13 +148,12 @@ }, "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.90.199.68", "fd7a:115c:a1e0::2d01:c747"], + "SrcIPs": [ + "100.90.199.68", + "fd7a:115c:a1e0::2d01:c747" + ], "DstPorts": [ { "IP": "*", @@ -186,426 +187,15 @@ } ] } - ], - "packet_filter_matches": [ - { - "IPProto": [6, 17, 1, 58], - "Srcs": ["100.90.199.68/32", "fd7a:115c:a1e0::2d01:c747/128"], - "SrcCaps": null, - "Dsts": [ - { - "Net": "0.0.0.0/0", - "Ports": { - "First": 0, - "Last": 65535 - } - }, - { - "Net": "::/0", - "Ports": { - "First": 0, - "Last": 65535 - } - } - ], - "Caps": [] - }, - { - "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": [ - { - "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": { - "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": { - "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/exit-node/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/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": { - "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/exit-node/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/exit-node/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": 8, - "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 - } - } - } + ] }, "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.90.199.68", "fd7a:115c:a1e0::2d01:c747"], + "SrcIPs": [ + "100.90.199.68", + "fd7a:115c:a1e0::2d01:c747" + ], "DstPorts": [ { "IP": "*", @@ -639,425 +229,15 @@ } ] } - ], - "packet_filter_matches": [ - { - "IPProto": [6, 17, 1, 58], - "Srcs": ["100.90.199.68/32", "fd7a:115c:a1e0::2d01:c747/128"], - "SrcCaps": null, - "Dsts": [ - { - "Net": "0.0.0.0/0", - "Ports": { - "First": 0, - "Last": 65535 - } - }, - { - "Net": "::/0", - "Ports": { - "First": 0, - "Last": 65535 - } - } - ], - "Caps": [] - }, - { - "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": [ - { - "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": { - "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": 8, - "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": [ { - "SrcIPs": ["100.90.199.68", "fd7a:115c:a1e0::2d01:c747"], + "SrcIPs": [ + "100.90.199.68", + "fd7a:115c:a1e0::2d01:c747" + ], "DstPorts": [ { "IP": "*", @@ -1091,426 +271,15 @@ } ] } - ], - "packet_filter_matches": [ - { - "IPProto": [6, 17, 1, 58], - "Srcs": ["100.90.199.68/32", "fd7a:115c:a1e0::2d01:c747/128"], - "SrcCaps": null, - "Dsts": [ - { - "Net": "0.0.0.0/0", - "Ports": { - "First": 0, - "Last": 65535 - } - }, - { - "Net": "::/0", - "Ports": { - "First": 0, - "Last": 65535 - } - } - ], - "Caps": [] - }, - { - "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": [ - { - "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": { - "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-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": { - "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/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": { - "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-client/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-client/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": 8, - "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-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.90.199.68", "fd7a:115c:a1e0::2d01:c747"], + "SrcIPs": [ + "100.90.199.68", + "fd7a:115c:a1e0::2d01:c747" + ], "DstPorts": [ { "IP": "*", @@ -1544,426 +313,15 @@ } ] } - ], - "packet_filter_matches": [ - { - "IPProto": [6, 17, 1, 58], - "Srcs": ["100.90.199.68/32", "fd7a:115c:a1e0::2d01:c747/128"], - "SrcCaps": null, - "Dsts": [ - { - "Net": "0.0.0.0/0", - "Ports": { - "First": 0, - "Last": 65535 - } - }, - { - "Net": "::/0", - "Ports": { - "First": 0, - "Last": 65535 - } - } - ], - "Caps": [] - }, - { - "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": [ - { - "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": { - "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-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": { - "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.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": { - "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-prod/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-prod/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": 8, - "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-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"], + "SrcIPs": [ + "100.90.199.68", + "fd7a:115c:a1e0::2d01:c747" + ], "DstPorts": [ { "IP": "*", @@ -1997,426 +355,15 @@ } ] } - ], - "packet_filter_matches": [ - { - "IPProto": [6, 17, 1, 58], - "Srcs": ["100.90.199.68/32", "fd7a:115c:a1e0::2d01:c747/128"], - "SrcCaps": null, - "Dsts": [ - { - "Net": "0.0.0.0/0", - "Ports": { - "First": 0, - "Last": 65535 - } - }, - { - "Net": "::/0", - "Ports": { - "First": 0, - "Last": 65535 - } - } - ], - "Caps": [] - }, - { - "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": [ - { - "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": { - "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": 8, - "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": [ { - "SrcIPs": ["100.90.199.68", "fd7a:115c:a1e0::2d01:c747"], + "SrcIPs": [ + "100.90.199.68", + "fd7a:115c:a1e0::2d01:c747" + ], "DstPorts": [ { "IP": "*", @@ -2450,380 +397,15 @@ } ] } - ], - "packet_filter_matches": [ - { - "IPProto": [6, 17, 1, 58], - "Srcs": ["100.90.199.68/32", "fd7a:115c:a1e0::2d01:c747/128"], - "SrcCaps": null, - "Dsts": [ - { - "Net": "0.0.0.0/0", - "Ports": { - "First": 0, - "Last": 65535 - } - }, - { - "Net": "::/0", - "Ports": { - "First": 0, - "Last": 65535 - } - } - ], - "Caps": [] - }, - { - "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": [ - { - "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": { - "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/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"], - "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": 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": { - "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/user-kris/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/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": { - "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": 8, - "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-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.90.199.68", "fd7a:115c:a1e0::2d01:c747"], + "SrcIPs": [ + "100.90.199.68", + "fd7a:115c:a1e0::2d01:c747" + ], "DstPorts": [ { "IP": "*", @@ -2857,380 +439,15 @@ } ] } - ], - "packet_filter_matches": [ - { - "IPProto": [6, 17, 1, 58], - "Srcs": ["100.90.199.68/32", "fd7a:115c:a1e0::2d01:c747/128"], - "SrcCaps": null, - "Dsts": [ - { - "Net": "0.0.0.0/0", - "Ports": { - "First": 0, - "Last": 65535 - } - }, - { - "Net": "::/0", - "Ports": { - "First": 0, - "Last": 65535 - } - } - ], - "Caps": [] - }, - { - "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": [ - { - "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": { - "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/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"], - "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": 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": { - "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/user-mon/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/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": { - "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": 8, - "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 - } - } - } + ] }, "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"], + "SrcIPs": [ + "100.90.199.68", + "fd7a:115c:a1e0::2d01:c747" + ], "DstPorts": [ { "IP": "*", @@ -3264,417 +481,7 @@ } ] } - ], - "packet_filter_matches": [ - { - "IPProto": [6, 17, 1, 58], - "Srcs": ["100.90.199.68/32", "fd7a:115c:a1e0::2d01:c747/128"], - "SrcCaps": null, - "Dsts": [ - { - "Net": "0.0.0.0/0", - "Ports": { - "First": 0, - "Last": 65535 - } - }, - { - "Net": "::/0", - "Ports": { - "First": 0, - "Last": 65535 - } - } - ], - "Caps": [] - }, - { - "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": [ - { - "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": { - "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/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": { - "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/user1/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/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": { - "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/user1/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 - } - } - } + ] } } } diff --git a/hscontrol/policy/v2/testdata/grant_results/GRANT-P09_10C.hujson b/hscontrol/policy/v2/testdata/grant_results/GRANT-P09_10C.hujson index 0d4654306..069306e30 100644 --- a/hscontrol/policy/v2/testdata/grant_results/GRANT-P09_10C.hujson +++ b/hscontrol/policy/v2/testdata/grant_results/GRANT-P09_10C.hujson @@ -8,23 +8,37 @@ // Expected: Rules on tagged-server { "test_id": "GRANT-P09_10C", - "timestamp": "2026-02-23T00:53:35Z", - "propagation_wait_seconds": 15, "input": { - "policy_file": "/home/kradalby/acl-explore/grant_policies/grant_p09_10c.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -33,122 +47,111 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "grants": [ { - "src": ["*"], - "dst": ["tag:server"], - "ip": ["22"] + "src": [ + "*" + ], + "dst": [ + "tag:server" + ], + "ip": [ + "22" + ] }, { - "src": ["tag:client"], - "dst": ["tag:server"], - "ip": ["80"] + "src": [ + "tag:client" + ], + "dst": [ + "tag:server" + ], + "ip": [ + "80" + ] }, { - "src": ["autogroup:member"], - "dst": ["tag:server"], - "ip": ["443"] + "src": [ + "autogroup:member" + ], + "dst": [ + "tag:server" + ], + "ip": [ + "443" + ] } ] }, - "grants_section": [ - { - "src": ["*"], - "dst": ["tag:server"], - "ip": ["22"] - }, - { - "src": ["tag:client"], - "dst": ["tag:server"], - "ip": ["80"] - }, - { - "src": ["autogroup:member"], - "dst": ["tag:server"], - "ip": ["443"] - } - ], - "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"], + "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"], + "tags": [ + "tag:router" + ], "ipv4": "100.92.142.61", - "ipv6": "fd7a:115c:a1e0::3e37:8e3d", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] + "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"], + "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"], + "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"], + "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" @@ -157,370 +160,18 @@ }, "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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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": [ @@ -547,7 +198,10 @@ ] }, { - "SrcIPs": ["100.83.200.69", "fd7a:115c:a1e0::c537:c845"], + "SrcIPs": [ + "100.83.200.69", + "fd7a:115c:a1e0::c537:c845" + ], "DstPorts": [ { "IP": "100.108.74.26", @@ -591,721 +245,16 @@ } ] } - ], - "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": [ - { - "Net": "100.108.74.26/32", - "Ports": { - "First": 22, - "Last": 22 - } - }, - { - "Net": "fd7a:115c:a1e0::b901:4a87/128", - "Ports": { - "First": 22, - "Last": 22 - } - } - ], - "Caps": [] - }, - { - "IPProto": [6, 17, 1, 58], - "Srcs": ["100.83.200.69/32", "fd7a:115c:a1e0::c537:c845/128"], - "SrcCaps": null, - "Dsts": [ - { - "Net": "100.108.74.26/32", - "Ports": { - "First": 80, - "Last": 80 - } - }, - { - "Net": "fd7a:115c:a1e0::b901:4a87/128", - "Ports": { - "First": 80, - "Last": 80 - } - } - ], - "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": [ - { - "Net": "100.108.74.26/32", - "Ports": { - "First": 443, - "Last": 443 - } - }, - { - "Net": "fd7a:115c:a1e0::b901:4a87/128", - "Ports": { - "First": 443, - "Last": 443 - } - } - ], - "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": 8, - "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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": null } } } diff --git a/hscontrol/policy/v2/testdata/grant_results/GRANT-P09_10D.hujson b/hscontrol/policy/v2/testdata/grant_results/GRANT-P09_10D.hujson index bd6a72409..ba5eaa0d8 100644 --- a/hscontrol/policy/v2/testdata/grant_results/GRANT-P09_10D.hujson +++ b/hscontrol/policy/v2/testdata/grant_results/GRANT-P09_10D.hujson @@ -7,23 +7,37 @@ // Expected: Rules on subnet-router, tagged-server { "test_id": "GRANT-P09_10D", - "timestamp": "2026-02-23T00:53:52Z", - "propagation_wait_seconds": 15, "input": { - "policy_file": "/home/kradalby/acl-explore/grant_policies/grant_p09_10d.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -32,112 +46,102 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "grants": [ { - "src": ["tag:client", "tag:prod"], - "dst": ["tag:server"], - "ip": ["22"] + "src": [ + "tag:client", + "tag:prod" + ], + "dst": [ + "tag:server" + ], + "ip": [ + "22" + ] }, { - "src": ["autogroup:member", "group:admins"], - "dst": ["tag:router"], - "ip": ["5432"] + "src": [ + "autogroup:member", + "group:admins" + ], + "dst": [ + "tag:router" + ], + "ip": [ + "5432" + ] } ] }, - "grants_section": [ - { - "src": ["tag:client", "tag:prod"], - "dst": ["tag:server"], - "ip": ["22"] - }, - { - "src": ["autogroup:member", "group:admins"], - "dst": ["tag:router"], - "ip": ["5432"] - } - ], - "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"], + "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"], + "tags": [ + "tag:router" + ], "ipv4": "100.92.142.61", - "ipv6": "fd7a:115c:a1e0::3e37:8e3d", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] + "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"], + "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"], + "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"], + "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" @@ -146,55 +150,9 @@ }, "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 - } - } + "packet_filter_rules": 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": [ @@ -222,399 +180,23 @@ } ] } - ], - "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.92.142.61/32", - "Ports": { - "First": 5432, - "Last": 5432 - } - }, - { - "Net": "fd7a:115c:a1e0::3e37:8e3d/128", - "Ports": { - "First": 5432, - "Last": 5432 - } - } - ], - "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": { - "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": 8, - "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": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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.83.200.69", "fd7a:115c:a1e0::5b37:80f", "fd7a:115c:a1e0::c537:c845"], + "SrcIPs": [ + "100.103.8.15", + "100.83.200.69", + "fd7a:115c:a1e0::5b37:80f", + "fd7a:115c:a1e0::c537:c845" + ], "DstPorts": [ { "IP": "100.108.74.26", @@ -632,433 +214,16 @@ } ] } - ], - "packet_filter_matches": [ - { - "IPProto": [6, 17, 1, 58], - "Srcs": [ - "100.103.8.15/32", - "100.83.200.69/32", - "fd7a:115c:a1e0::5b37:80f/128", - "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": { - "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": 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"], - "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": 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 - } - } + "packet_filter_rules": 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"], - "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": 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 - } - } + "packet_filter_rules": 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"], - "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": 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 - } - } + "packet_filter_rules": null } } } diff --git a/hscontrol/policy/v2/testdata/grant_results/GRANT-P09_11A.hujson b/hscontrol/policy/v2/testdata/grant_results/GRANT-P09_11A.hujson index b9ed5ec1e..419c6c10a 100644 --- a/hscontrol/policy/v2/testdata/grant_results/GRANT-P09_11A.hujson +++ b/hscontrol/policy/v2/testdata/grant_results/GRANT-P09_11A.hujson @@ -5,23 +5,37 @@ // Expected: Rules on tagged-server { "test_id": "GRANT-P09_11A", - "timestamp": "2026-02-23T00:54:08Z", - "propagation_wait_seconds": 15, "input": { - "policy_file": "/home/kradalby/acl-explore/grant_policies/grant_p09_11a.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -30,102 +44,92 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "grants": [ { - "src": ["autogroup:member", "tag:client"], - "dst": ["tag:server"], - "ip": ["22", "80", "443"] + "src": [ + "autogroup:member", + "tag:client" + ], + "dst": [ + "tag:server" + ], + "ip": [ + "22", + "80", + "443" + ] } ] }, - "grants_section": [ - { - "src": ["autogroup:member", "tag:client"], - "dst": ["tag:server"], - "ip": ["22", "80", "443"] - } - ], - "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"], + "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"], + "tags": [ + "tag:router" + ], "ipv4": "100.92.142.61", - "ipv6": "fd7a:115c:a1e0::3e37:8e3d", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] + "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"], + "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"], + "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"], + "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" @@ -134,235 +138,18 @@ }, "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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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": [ @@ -420,555 +207,16 @@ } ] } - ], - "packet_filter_matches": [ - { - "IPProto": [6, 17, 1, 58], - "Srcs": [ - "100.103.90.82/32", - "100.110.121.96/32", - "100.83.200.69/32", - "100.90.199.68/32", - "fd7a:115c:a1e0::1737:7960/128", - "fd7a:115c:a1e0::2d01:c747/128", - "fd7a:115c:a1e0::9e37:5a52/128", - "fd7a:115c:a1e0::c537:c845/128" - ], - "SrcCaps": null, - "Dsts": [ - { - "Net": "100.108.74.26/32", - "Ports": { - "First": 22, - "Last": 22 - } - }, - { - "Net": "100.108.74.26/32", - "Ports": { - "First": 80, - "Last": 80 - } - }, - { - "Net": "100.108.74.26/32", - "Ports": { - "First": 443, - "Last": 443 - } - }, - { - "Net": "fd7a:115c:a1e0::b901:4a87/128", - "Ports": { - "First": 22, - "Last": 22 - } - }, - { - "Net": "fd7a:115c:a1e0::b901:4a87/128", - "Ports": { - "First": 80, - "Last": 80 - } - }, - { - "Net": "fd7a:115c:a1e0::b901:4a87/128", - "Ports": { - "First": 443, - "Last": 443 - } - } - ], - "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": { - "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": 8, - "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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": null } } } diff --git a/hscontrol/policy/v2/testdata/grant_results/GRANT-P09_11B.hujson b/hscontrol/policy/v2/testdata/grant_results/GRANT-P09_11B.hujson index 3a1dba6dc..cef49bebb 100644 --- a/hscontrol/policy/v2/testdata/grant_results/GRANT-P09_11B.hujson +++ b/hscontrol/policy/v2/testdata/grant_results/GRANT-P09_11B.hujson @@ -5,23 +5,37 @@ // Expected: Rules on tagged-server { "test_id": "GRANT-P09_11B", - "timestamp": "2026-02-23T00:54:24Z", - "propagation_wait_seconds": 15, "input": { - "policy_file": "/home/kradalby/acl-explore/grant_policies/grant_p09_11b.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -30,102 +44,90 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "grants": [ { - "src": ["group:admins", "webserver"], - "dst": ["tag:server"], - "ip": ["80-443"] + "src": [ + "group:admins", + "webserver" + ], + "dst": [ + "tag:server" + ], + "ip": [ + "80-443" + ] } ] }, - "grants_section": [ - { - "src": ["group:admins", "webserver"], - "dst": ["tag:server"], - "ip": ["80-443"] - } - ], - "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"], + "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"], + "tags": [ + "tag:router" + ], "ipv4": "100.92.142.61", - "ipv6": "fd7a:115c:a1e0::3e37:8e3d", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] + "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"], + "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"], + "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"], + "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" @@ -134,193 +136,25 @@ }, "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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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.108.74.26", "100.90.199.68", "fd7a:115c:a1e0::2d01:c747"], + "SrcIPs": [ + "100.108.74.26", + "100.90.199.68", + "fd7a:115c:a1e0::2d01:c747" + ], "DstPorts": [ { "IP": "100.108.74.26", @@ -338,293 +172,16 @@ } ] } - ], - "packet_filter_matches": [ - { - "IPProto": [6, 17, 1, 58], - "Srcs": ["100.108.74.26/32", "100.90.199.68/32", "fd7a:115c:a1e0::2d01:c747/128"], - "SrcCaps": null, - "Dsts": [ - { - "Net": "100.108.74.26/32", - "Ports": { - "First": 80, - "Last": 443 - } - }, - { - "Net": "fd7a:115c:a1e0::b901:4a87/128", - "Ports": { - "First": 80, - "Last": 443 - } - } - ], - "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": { - "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": 8, - "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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": null } } } diff --git a/hscontrol/policy/v2/testdata/grant_results/GRANT-P09_11C_NAIVE.hujson b/hscontrol/policy/v2/testdata/grant_results/GRANT-P09_11C_NAIVE.hujson index a55e663b4..c23e02a76 100644 --- a/hscontrol/policy/v2/testdata/grant_results/GRANT-P09_11C_NAIVE.hujson +++ b/hscontrol/policy/v2/testdata/grant_results/GRANT-P09_11C_NAIVE.hujson @@ -5,23 +5,37 @@ // Expected: Rules on subnet-router, tagged-server { "test_id": "GRANT-P09_11C_NAIVE", - "timestamp": "2026-02-23T00:54:41Z", - "propagation_wait_seconds": 15, "input": { - "policy_file": "/home/kradalby/acl-explore/grant_policies/grant_p09_11c_naive.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -30,102 +44,94 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "grants": [ { - "src": ["tag:client", "tag:prod"], - "dst": ["tag:server", "tag:router"], - "ip": ["22", "80-443", "5432", "3306"] + "src": [ + "tag:client", + "tag:prod" + ], + "dst": [ + "tag:server", + "tag:router" + ], + "ip": [ + "22", + "80-443", + "5432", + "3306" + ] } ] }, - "grants_section": [ - { - "src": ["tag:client", "tag:prod"], - "dst": ["tag:server", "tag:router"], - "ip": ["22", "80-443", "5432", "3306"] - } - ], - "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"], + "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"], + "tags": [ + "tag:router" + ], "ipv4": "100.92.142.61", - "ipv6": "fd7a:115c:a1e0::3e37:8e3d", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] + "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"], + "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"], + "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"], + "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" @@ -134,58 +140,17 @@ }, "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 - } - } + "packet_filter_rules": 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.103.8.15", "100.83.200.69", "fd7a:115c:a1e0::5b37:80f", "fd7a:115c:a1e0::c537:c845"], + "SrcIPs": [ + "100.103.8.15", + "100.83.200.69", + "fd7a:115c:a1e0::5b37:80f", + "fd7a:115c:a1e0::c537:c845" + ], "DstPorts": [ { "IP": "100.92.142.61", @@ -245,484 +210,23 @@ } ] } - ], - "packet_filter_matches": [ - { - "IPProto": [6, 17, 1, 58], - "Srcs": [ - "100.103.8.15/32", - "100.83.200.69/32", - "fd7a:115c:a1e0::5b37:80f/128", - "fd7a:115c:a1e0::c537:c845/128" - ], - "SrcCaps": null, - "Dsts": [ - { - "Net": "100.92.142.61/32", - "Ports": { - "First": 22, - "Last": 22 - } - }, - { - "Net": "100.92.142.61/32", - "Ports": { - "First": 80, - "Last": 443 - } - }, - { - "Net": "100.92.142.61/32", - "Ports": { - "First": 5432, - "Last": 5432 - } - }, - { - "Net": "100.92.142.61/32", - "Ports": { - "First": 3306, - "Last": 3306 - } - }, - { - "Net": "fd7a:115c:a1e0::3e37:8e3d/128", - "Ports": { - "First": 22, - "Last": 22 - } - }, - { - "Net": "fd7a:115c:a1e0::3e37:8e3d/128", - "Ports": { - "First": 80, - "Last": 443 - } - }, - { - "Net": "fd7a:115c:a1e0::3e37:8e3d/128", - "Ports": { - "First": 5432, - "Last": 5432 - } - }, - { - "Net": "fd7a:115c:a1e0::3e37:8e3d/128", - "Ports": { - "First": 3306, - "Last": 3306 - } - } - ], - "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": { - "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": 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": { - "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": 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 - } - } + "packet_filter_rules": 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"], - "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": 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 - } - } + "packet_filter_rules": 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.83.200.69", "fd7a:115c:a1e0::5b37:80f", "fd7a:115c:a1e0::c537:c845"], + "SrcIPs": [ + "100.103.8.15", + "100.83.200.69", + "fd7a:115c:a1e0::5b37:80f", + "fd7a:115c:a1e0::c537:c845" + ], "DstPorts": [ { "IP": "100.108.74.26", @@ -782,340 +286,16 @@ } ] } - ], - "packet_filter_matches": [ - { - "IPProto": [6, 17, 1, 58], - "Srcs": [ - "100.103.8.15/32", - "100.83.200.69/32", - "fd7a:115c:a1e0::5b37:80f/128", - "fd7a:115c:a1e0::c537:c845/128" - ], - "SrcCaps": null, - "Dsts": [ - { - "Net": "100.108.74.26/32", - "Ports": { - "First": 22, - "Last": 22 - } - }, - { - "Net": "100.108.74.26/32", - "Ports": { - "First": 80, - "Last": 443 - } - }, - { - "Net": "100.108.74.26/32", - "Ports": { - "First": 5432, - "Last": 5432 - } - }, - { - "Net": "100.108.74.26/32", - "Ports": { - "First": 3306, - "Last": 3306 - } - }, - { - "Net": "fd7a:115c:a1e0::b901:4a87/128", - "Ports": { - "First": 22, - "Last": 22 - } - }, - { - "Net": "fd7a:115c:a1e0::b901:4a87/128", - "Ports": { - "First": 80, - "Last": 443 - } - }, - { - "Net": "fd7a:115c:a1e0::b901:4a87/128", - "Ports": { - "First": 5432, - "Last": 5432 - } - }, - { - "Net": "fd7a:115c:a1e0::b901:4a87/128", - "Ports": { - "First": 3306, - "Last": 3306 - } - } - ], - "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": { - "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": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": null } } } diff --git a/hscontrol/policy/v2/testdata/grant_results/GRANT-P09_11D.hujson b/hscontrol/policy/v2/testdata/grant_results/GRANT-P09_11D.hujson index 36eaf9daf..0aa6b6199 100644 --- a/hscontrol/policy/v2/testdata/grant_results/GRANT-P09_11D.hujson +++ b/hscontrol/policy/v2/testdata/grant_results/GRANT-P09_11D.hujson @@ -5,23 +5,37 @@ // Expected: Rules on subnet-router, tagged-server { "test_id": "GRANT-P09_11D", - "timestamp": "2026-02-23T00:54:57Z", - "propagation_wait_seconds": 15, "input": { - "policy_file": "/home/kradalby/acl-explore/grant_policies/grant_p09_11d.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -30,102 +44,92 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "grants": [ { - "src": ["autogroup:tagged", "autogroup:member"], - "dst": ["tag:server", "tag:router"], - "ip": ["*", "5432"] + "src": [ + "autogroup:tagged", + "autogroup:member" + ], + "dst": [ + "tag:server", + "tag:router" + ], + "ip": [ + "*", + "5432" + ] } ] }, - "grants_section": [ - { - "src": ["autogroup:tagged", "autogroup:member"], - "dst": ["tag:server", "tag:router"], - "ip": ["*", "5432"] - } - ], - "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"], + "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"], + "tags": [ + "tag:router" + ], "ipv4": "100.92.142.61", - "ipv6": "fd7a:115c:a1e0::3e37:8e3d", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] + "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"], + "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"], + "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"], + "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" @@ -134,145 +138,9 @@ }, "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"], - "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": 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 - } - } + "packet_filter_rules": 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": [ @@ -324,690 +192,15 @@ } ] } - ], - "packet_filter_matches": [ - { - "IPProto": [6, 17, 1, 58], - "Srcs": [ - "100.103.8.15/32", - "100.103.90.82/32", - "100.108.74.26/32", - "100.110.121.96/32", - "100.83.200.69/32", - "100.85.66.106/32", - "100.90.199.68/32", - "100.92.142.61/32", - "fd7a:115c:a1e0::1737:7960/128", - "fd7a:115c:a1e0::2d01:c747/128", - "fd7a:115c:a1e0::3e37:8e3d/128", - "fd7a:115c:a1e0::5b37:80f/128", - "fd7a:115c:a1e0::7c37:426a/128", - "fd7a:115c:a1e0::9e37:5a52/128", - "fd7a:115c:a1e0::b901:4a87/128", - "fd7a:115c:a1e0::c537:c845/128" - ], - "SrcCaps": null, - "Dsts": [ - { - "Net": "100.92.142.61/32", - "Ports": { - "First": 0, - "Last": 65535 - } - }, - { - "Net": "100.92.142.61/32", - "Ports": { - "First": 5432, - "Last": 5432 - } - }, - { - "Net": "fd7a:115c:a1e0::3e37:8e3d/128", - "Ports": { - "First": 0, - "Last": 65535 - } - }, - { - "Net": "fd7a:115c:a1e0::3e37:8e3d/128", - "Ports": { - "First": 5432, - "Last": 5432 - } - } - ], - "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": { - "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": 8, - "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"], - "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": 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 - } - } + "packet_filter_rules": 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"], - "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": 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 - } - } + "packet_filter_rules": 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": [ @@ -1059,819 +252,16 @@ } ] } - ], - "packet_filter_matches": [ - { - "IPProto": [6, 17, 1, 58], - "Srcs": [ - "100.103.8.15/32", - "100.103.90.82/32", - "100.108.74.26/32", - "100.110.121.96/32", - "100.83.200.69/32", - "100.85.66.106/32", - "100.90.199.68/32", - "100.92.142.61/32", - "fd7a:115c:a1e0::1737:7960/128", - "fd7a:115c:a1e0::2d01:c747/128", - "fd7a:115c:a1e0::3e37:8e3d/128", - "fd7a:115c:a1e0::5b37:80f/128", - "fd7a:115c:a1e0::7c37:426a/128", - "fd7a:115c:a1e0::9e37:5a52/128", - "fd7a:115c:a1e0::b901:4a87/128", - "fd7a:115c:a1e0::c537:c845/128" - ], - "SrcCaps": null, - "Dsts": [ - { - "Net": "100.108.74.26/32", - "Ports": { - "First": 0, - "Last": 65535 - } - }, - { - "Net": "100.108.74.26/32", - "Ports": { - "First": 5432, - "Last": 5432 - } - }, - { - "Net": "fd7a:115c:a1e0::b901:4a87/128", - "Ports": { - "First": 0, - "Last": 65535 - } - }, - { - "Net": "fd7a:115c:a1e0::b901:4a87/128", - "Ports": { - "First": 5432, - "Last": 5432 - } - } - ], - "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"], - "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": 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": 8, - "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": { - "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": 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 - } - } + "packet_filter_rules": 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"], - "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": 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 - } - } + "packet_filter_rules": 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"], - "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": 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 - } - } + "packet_filter_rules": null } } } diff --git a/hscontrol/policy/v2/testdata/grant_results/GRANT-P09_12A.hujson b/hscontrol/policy/v2/testdata/grant_results/GRANT-P09_12A.hujson index 2d8ac6cf5..4c965f4ca 100644 --- a/hscontrol/policy/v2/testdata/grant_results/GRANT-P09_12A.hujson +++ b/hscontrol/policy/v2/testdata/grant_results/GRANT-P09_12A.hujson @@ -5,23 +5,37 @@ // Expected: Rules on tagged-server { "test_id": "GRANT-P09_12A", - "timestamp": "2026-02-23T00:55:13Z", - "propagation_wait_seconds": 15, "input": { - "policy_file": "/home/kradalby/acl-explore/grant_policies/grant_p09_12a.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -30,102 +44,90 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "grants": [ { - "src": ["internal", "tag:client"], - "dst": ["tag:server"], - "ip": ["22"] + "src": [ + "internal", + "tag:client" + ], + "dst": [ + "tag:server" + ], + "ip": [ + "22" + ] } ] }, - "grants_section": [ - { - "src": ["internal", "tag:client"], - "dst": ["tag:server"], - "ip": ["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"], + "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"], + "tags": [ + "tag:router" + ], "ipv4": "100.92.142.61", - "ipv6": "fd7a:115c:a1e0::3e37:8e3d", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] + "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"], + "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"], + "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"], + "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" @@ -134,283 +136,25 @@ }, "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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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.0.0.0/8", "100.83.200.69", "fd7a:115c:a1e0::c537:c845"], + "SrcIPs": [ + "10.0.0.0/8", + "100.83.200.69", + "fd7a:115c:a1e0::c537:c845" + ], "DstPorts": [ { "IP": "100.108.74.26", @@ -428,294 +172,16 @@ } ] } - ], - "packet_filter_matches": [ - { - "IPProto": [6, 17, 1, 58], - "Srcs": ["10.0.0.0/8", "100.83.200.69/32", "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": { - "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": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": null } } } diff --git a/hscontrol/policy/v2/testdata/grant_results/GRANT-P09_12B.hujson b/hscontrol/policy/v2/testdata/grant_results/GRANT-P09_12B.hujson index a01709942..94a6446be 100644 --- a/hscontrol/policy/v2/testdata/grant_results/GRANT-P09_12B.hujson +++ b/hscontrol/policy/v2/testdata/grant_results/GRANT-P09_12B.hujson @@ -5,23 +5,37 @@ // Expected: Rules on subnet-router, tagged-server { "test_id": "GRANT-P09_12B", - "timestamp": "2026-02-23T00:55:30Z", - "propagation_wait_seconds": 15, "input": { - "policy_file": "/home/kradalby/acl-explore/grant_policies/grant_p09_12b.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -30,102 +44,91 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "grants": [ { - "src": ["tag:client"], - "dst": ["internal", "tag:server"], - "ip": ["22", "80"] + "src": [ + "tag:client" + ], + "dst": [ + "internal", + "tag:server" + ], + "ip": [ + "22", + "80" + ] } ] }, - "grants_section": [ - { - "src": ["tag:client"], - "dst": ["internal", "tag:server"], - "ip": ["22", "80"] - } - ], - "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"], + "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"], + "tags": [ + "tag:router" + ], "ipv4": "100.92.142.61", - "ipv6": "fd7a:115c:a1e0::3e37:8e3d", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] + "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"], + "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"], + "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"], + "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" @@ -134,58 +137,15 @@ }, "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 - } - } + "packet_filter_rules": 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.83.200.69", "fd7a:115c:a1e0::c537:c845"], + "SrcIPs": [ + "100.83.200.69", + "fd7a:115c:a1e0::c537:c845" + ], "DstPorts": [ { "IP": "10.0.0.0/8", @@ -203,303 +163,21 @@ } ] } - ], - "packet_filter_matches": [ - { - "IPProto": [6, 17, 1, 58], - "Srcs": ["100.83.200.69/32", "fd7a:115c:a1e0::c537:c845/128"], - "SrcCaps": null, - "Dsts": [ - { - "Net": "10.0.0.0/8", - "Ports": { - "First": 22, - "Last": 22 - } - }, - { - "Net": "10.0.0.0/8", - "Ports": { - "First": 80, - "Last": 80 - } - } - ], - "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": { - "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": 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": { - "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": { - "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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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.83.200.69", "fd7a:115c:a1e0::c537:c845"], + "SrcIPs": [ + "100.83.200.69", + "fd7a:115c:a1e0::c537:c845" + ], "DstPorts": [ { "IP": "100.108.74.26", @@ -531,262 +209,16 @@ } ] } - ], - "packet_filter_matches": [ - { - "IPProto": [6, 17, 1, 58], - "Srcs": ["100.83.200.69/32", "fd7a:115c:a1e0::c537:c845/128"], - "SrcCaps": null, - "Dsts": [ - { - "Net": "100.108.74.26/32", - "Ports": { - "First": 22, - "Last": 22 - } - }, - { - "Net": "100.108.74.26/32", - "Ports": { - "First": 80, - "Last": 80 - } - }, - { - "Net": "fd7a:115c:a1e0::b901:4a87/128", - "Ports": { - "First": 22, - "Last": 22 - } - }, - { - "Net": "fd7a:115c:a1e0::b901:4a87/128", - "Ports": { - "First": 80, - "Last": 80 - } - } - ], - "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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": null } } } diff --git a/hscontrol/policy/v2/testdata/grant_results/GRANT-P09_13A.hujson b/hscontrol/policy/v2/testdata/grant_results/GRANT-P09_13A.hujson index e77a2614a..f79aa885b 100644 --- a/hscontrol/policy/v2/testdata/grant_results/GRANT-P09_13A.hujson +++ b/hscontrol/policy/v2/testdata/grant_results/GRANT-P09_13A.hujson @@ -5,24 +5,38 @@ // Expected: Error (HTTP 400) — autogroup:self can only be used with users, groups, or supported autogroups { "test_id": "GRANT-P09_13A", - "description": "", - "timestamp": "2026-02-23T00:55:46Z", "error": true, "input": { - "policy_file": "/home/kradalby/acl-explore/grant_policies/grant_p09_13a.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -31,23 +45,34 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "grants": [ { - "src": ["*"], - "dst": ["autogroup:self"], - "ip": ["*"] + "src": [ + "*" + ], + "dst": [ + "autogroup:self" + ], + "ip": [ + "*" + ] } ] }, - "grants_section": [{ "src": ["*"], "dst": ["autogroup:self"], "ip": ["*"] }], - "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" } + "api_response_body": { + "message": "autogroup:self can only be used with users, groups, or supported autogroups" + } } } diff --git a/hscontrol/policy/v2/testdata/grant_results/GRANT-P09_13B.hujson b/hscontrol/policy/v2/testdata/grant_results/GRANT-P09_13B.hujson index 40bb1ddd8..421051d81 100644 --- a/hscontrol/policy/v2/testdata/grant_results/GRANT-P09_13B.hujson +++ b/hscontrol/policy/v2/testdata/grant_results/GRANT-P09_13B.hujson @@ -5,24 +5,38 @@ // Expected: Error (HTTP 400) — autogroup:self can only be used with users, groups, or supported autogroups { "test_id": "GRANT-P09_13B", - "description": "", - "timestamp": "2026-02-23T00:55:46Z", "error": true, "input": { - "policy_file": "/home/kradalby/acl-explore/grant_policies/grant_p09_13b.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -31,23 +45,34 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "grants": [ { - "src": ["*"], - "dst": ["autogroup:self"], - "ip": ["22"] + "src": [ + "*" + ], + "dst": [ + "autogroup:self" + ], + "ip": [ + "22" + ] } ] }, - "grants_section": [{ "src": ["*"], "dst": ["autogroup:self"], "ip": ["22"] }], - "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" } + "api_response_body": { + "message": "autogroup:self can only be used with users, groups, or supported autogroups" + } } } diff --git a/hscontrol/policy/v2/testdata/grant_results/GRANT-P09_13C.hujson b/hscontrol/policy/v2/testdata/grant_results/GRANT-P09_13C.hujson index e0104fb73..6565a70dd 100644 --- a/hscontrol/policy/v2/testdata/grant_results/GRANT-P09_13C.hujson +++ b/hscontrol/policy/v2/testdata/grant_results/GRANT-P09_13C.hujson @@ -5,24 +5,38 @@ // Expected: Error (HTTP 400) — autogroup:self can only be used with users, groups, or supported autogroups { "test_id": "GRANT-P09_13C", - "description": "", - "timestamp": "2026-02-23T00:55:46Z", "error": true, "input": { - "policy_file": "/home/kradalby/acl-explore/grant_policies/grant_p09_13c.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -31,23 +45,36 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "grants": [ { - "src": ["*"], - "dst": ["autogroup:self"], - "ip": ["22", "80", "443"] + "src": [ + "*" + ], + "dst": [ + "autogroup:self" + ], + "ip": [ + "22", + "80", + "443" + ] } ] }, - "grants_section": [{ "src": ["*"], "dst": ["autogroup:self"], "ip": ["22", "80", "443"] }], - "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" } + "api_response_body": { + "message": "autogroup:self can only be used with users, groups, or supported autogroups" + } } } diff --git a/hscontrol/policy/v2/testdata/grant_results/GRANT-P09_13D.hujson b/hscontrol/policy/v2/testdata/grant_results/GRANT-P09_13D.hujson index a8ffb71c0..9578aad90 100644 --- a/hscontrol/policy/v2/testdata/grant_results/GRANT-P09_13D.hujson +++ b/hscontrol/policy/v2/testdata/grant_results/GRANT-P09_13D.hujson @@ -5,24 +5,38 @@ // Expected: Error (HTTP 400) — autogroup:self can only be used with users, groups, or supported autogroups { "test_id": "GRANT-P09_13D", - "description": "", - "timestamp": "2026-02-23T00:55:46Z", "error": true, "input": { - "policy_file": "/home/kradalby/acl-explore/grant_policies/grant_p09_13d.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -31,23 +45,34 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "grants": [ { - "src": ["*"], - "dst": ["autogroup:self"], - "ip": ["80-443"] + "src": [ + "*" + ], + "dst": [ + "autogroup:self" + ], + "ip": [ + "80-443" + ] } ] }, - "grants_section": [{ "src": ["*"], "dst": ["autogroup:self"], "ip": ["80-443"] }], - "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" } + "api_response_body": { + "message": "autogroup:self can only be used with users, groups, or supported autogroups" + } } } diff --git a/hscontrol/policy/v2/testdata/grant_results/GRANT-P09_13E.hujson b/hscontrol/policy/v2/testdata/grant_results/GRANT-P09_13E.hujson index 8e308bfa6..fda3262f8 100644 --- a/hscontrol/policy/v2/testdata/grant_results/GRANT-P09_13E.hujson +++ b/hscontrol/policy/v2/testdata/grant_results/GRANT-P09_13E.hujson @@ -5,23 +5,37 @@ // Expected: Rules on user-kris, user-mon, user1 { "test_id": "GRANT-P09_13E", - "timestamp": "2026-02-23T00:55:47Z", - "propagation_wait_seconds": 15, "input": { - "policy_file": "/home/kradalby/acl-explore/grant_policies/grant_p09_13e.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -30,102 +44,89 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "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": ["*"] + "src": [ + "autogroup:member" + ], + "dst": [ + "autogroup:self" + ], + "ip": [ + "*" + ] } ] }, - "grants_section": [ - { - "src": ["autogroup:member"], - "dst": ["autogroup:self"], - "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"], + "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"], + "tags": [ + "tag:router" + ], "ipv4": "100.92.142.61", - "ipv6": "fd7a:115c:a1e0::3e37:8e3d", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] + "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"], + "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"], + "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"], + "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" @@ -134,238 +135,27 @@ }, "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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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"], + "SrcIPs": [ + "100.110.121.96", + "fd7a:115c:a1e0::1737:7960" + ], "DstPorts": [ { "IP": "100.110.121.96", @@ -383,77 +173,15 @@ } ] } - ], - "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": [] - } - ], - "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"], + "SrcIPs": [ + "100.103.90.82", + "fd7a:115c:a1e0::9e37:5a52" + ], "DstPorts": [ { "IP": "100.103.90.82", @@ -471,77 +199,15 @@ } ] } - ], - "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": [] - } - ], - "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"], + "SrcIPs": [ + "100.90.199.68", + "fd7a:115c:a1e0::2d01:c747" + ], "DstPorts": [ { "IP": "100.90.199.68", @@ -559,68 +225,7 @@ } ] } - ], - "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": [] - } - ], - "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 - } - } + ] } } } diff --git a/hscontrol/policy/v2/testdata/grant_results/GRANT-P09_13F.hujson b/hscontrol/policy/v2/testdata/grant_results/GRANT-P09_13F.hujson index b3401e753..50713b681 100644 --- a/hscontrol/policy/v2/testdata/grant_results/GRANT-P09_13F.hujson +++ b/hscontrol/policy/v2/testdata/grant_results/GRANT-P09_13F.hujson @@ -5,23 +5,37 @@ // Expected: Rules on user1 { "test_id": "GRANT-P09_13F", - "timestamp": "2026-02-23T00:56:03Z", - "propagation_wait_seconds": 15, "input": { - "policy_file": "/home/kradalby/acl-explore/grant_policies/grant_p09_13f.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -30,102 +44,89 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "grants": [ { - "src": ["kratail2tid@passkey"], - "dst": ["autogroup:self"], - "ip": ["*"] + "src": [ + "kratail2tid@passkey" + ], + "dst": [ + "autogroup:self" + ], + "ip": [ + "*" + ] } ] }, - "grants_section": [ - { - "src": ["kratail2tid@passkey"], - "dst": ["autogroup:self"], - "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"], + "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"], + "tags": [ + "tag:router" + ], "ipv4": "100.92.142.61", - "ipv6": "fd7a:115c:a1e0::3e37:8e3d", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] + "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"], + "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"], + "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"], + "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" @@ -134,328 +135,33 @@ }, "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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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"], + "SrcIPs": [ + "100.90.199.68", + "fd7a:115c:a1e0::2d01:c747" + ], "DstPorts": [ { "IP": "100.90.199.68", @@ -473,68 +179,7 @@ } ] } - ], - "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": [] - } - ], - "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 - } - } + ] } } } diff --git a/hscontrol/policy/v2/testdata/grant_results/GRANT-P09_13G.hujson b/hscontrol/policy/v2/testdata/grant_results/GRANT-P09_13G.hujson index 4dd17f403..42362d034 100644 --- a/hscontrol/policy/v2/testdata/grant_results/GRANT-P09_13G.hujson +++ b/hscontrol/policy/v2/testdata/grant_results/GRANT-P09_13G.hujson @@ -5,23 +5,37 @@ // Expected: Rules on user1 { "test_id": "GRANT-P09_13G", - "timestamp": "2026-02-23T00:56:19Z", - "propagation_wait_seconds": 15, "input": { - "policy_file": "/home/kradalby/acl-explore/grant_policies/grant_p09_13g.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -30,102 +44,89 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "grants": [ { - "src": ["group:admins"], - "dst": ["autogroup:self"], - "ip": ["*"] + "src": [ + "group:admins" + ], + "dst": [ + "autogroup:self" + ], + "ip": [ + "*" + ] } ] }, - "grants_section": [ - { - "src": ["group:admins"], - "dst": ["autogroup:self"], - "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"], + "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"], + "tags": [ + "tag:router" + ], "ipv4": "100.92.142.61", - "ipv6": "fd7a:115c:a1e0::3e37:8e3d", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] + "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"], + "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"], + "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"], + "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" @@ -134,328 +135,33 @@ }, "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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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"], + "SrcIPs": [ + "100.90.199.68", + "fd7a:115c:a1e0::2d01:c747" + ], "DstPorts": [ { "IP": "100.90.199.68", @@ -473,68 +179,7 @@ } ] } - ], - "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": [] - } - ], - "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 - } - } + ] } } } diff --git a/hscontrol/policy/v2/testdata/grant_results/GRANT-P09_13H_CORRECT.hujson b/hscontrol/policy/v2/testdata/grant_results/GRANT-P09_13H_CORRECT.hujson index dae9f5ab4..a072904ec 100644 --- a/hscontrol/policy/v2/testdata/grant_results/GRANT-P09_13H_CORRECT.hujson +++ b/hscontrol/policy/v2/testdata/grant_results/GRANT-P09_13H_CORRECT.hujson @@ -7,24 +7,38 @@ // Expected: Error (HTTP 400) — autogroup:self can only be used with users, groups, or supported autogroups { "test_id": "GRANT-P09_13H_CORRECT", - "description": "", - "timestamp": "2026-02-23T00:56:36Z", "error": true, "input": { - "policy_file": "/home/kradalby/acl-explore/grant_policies/grant_p09_13h_correct.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -33,31 +47,45 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "grants": [ { - "src": ["*"], - "dst": ["autogroup:self"], - "ip": ["*"] + "src": [ + "*" + ], + "dst": [ + "autogroup:self" + ], + "ip": [ + "*" + ] }, { - "src": ["*"], - "dst": ["tag:server"], - "ip": ["22"] + "src": [ + "*" + ], + "dst": [ + "tag:server" + ], + "ip": [ + "22" + ] } ] }, - "grants_section": [ - { "src": ["*"], "dst": ["autogroup:self"], "ip": ["*"] }, - { "src": ["*"], "dst": ["tag:server"], "ip": ["22"] } - ], - "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" } + "api_response_body": { + "message": "autogroup:self can only be used with users, groups, or supported autogroups" + } } } diff --git a/hscontrol/policy/v2/testdata/grant_results/GRANT-P09_13H_NAIVE.hujson b/hscontrol/policy/v2/testdata/grant_results/GRANT-P09_13H_NAIVE.hujson index acab45d30..754473596 100644 --- a/hscontrol/policy/v2/testdata/grant_results/GRANT-P09_13H_NAIVE.hujson +++ b/hscontrol/policy/v2/testdata/grant_results/GRANT-P09_13H_NAIVE.hujson @@ -5,24 +5,38 @@ // Expected: Error (HTTP 400) — autogroup:self can only be used with users, groups, or supported autogroups { "test_id": "GRANT-P09_13H_NAIVE", - "description": "", - "timestamp": "2026-02-23T00:56:36Z", "error": true, "input": { - "policy_file": "/home/kradalby/acl-explore/grant_policies/grant_p09_13h_naive.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -31,23 +45,36 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "grants": [ { - "src": ["*"], - "dst": ["autogroup:self", "tag:server"], - "ip": ["*", "22"] + "src": [ + "*" + ], + "dst": [ + "autogroup:self", + "tag:server" + ], + "ip": [ + "*", + "22" + ] } ] }, - "grants_section": [{ "src": ["*"], "dst": ["autogroup:self", "tag:server"], "ip": ["*", "22"] }], - "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" } + "api_response_body": { + "message": "autogroup:self can only be used with users, groups, or supported autogroups" + } } } diff --git a/hscontrol/policy/v2/testdata/grant_results/GRANT-P09_14A.hujson b/hscontrol/policy/v2/testdata/grant_results/GRANT-P09_14A.hujson index a59f6bb82..e69081b57 100644 --- a/hscontrol/policy/v2/testdata/grant_results/GRANT-P09_14A.hujson +++ b/hscontrol/policy/v2/testdata/grant_results/GRANT-P09_14A.hujson @@ -7,23 +7,37 @@ // Expected: Rules on tagged-server { "test_id": "GRANT-P09_14A", - "timestamp": "2026-02-23T00:56:36Z", - "propagation_wait_seconds": 15, "input": { - "policy_file": "/home/kradalby/acl-explore/grant_policies/grant_p09_14a.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -32,112 +46,100 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "grants": [ { - "src": ["tag:client"], - "dst": ["tag:server"], - "ip": ["22"] + "src": [ + "tag:client" + ], + "dst": [ + "tag:server" + ], + "ip": [ + "22" + ] }, { - "src": ["tag:client"], - "dst": ["tag:server"], - "ip": ["80"] + "src": [ + "tag:client" + ], + "dst": [ + "tag:server" + ], + "ip": [ + "80" + ] } ] }, - "grants_section": [ - { - "src": ["tag:client"], - "dst": ["tag:server"], - "ip": ["22"] - }, - { - "src": ["tag:client"], - "dst": ["tag:server"], - "ip": ["80"] - } - ], - "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"], + "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"], + "tags": [ + "tag:router" + ], "ipv4": "100.92.142.61", - "ipv6": "fd7a:115c:a1e0::3e37:8e3d", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] + "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"], + "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"], + "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"], + "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" @@ -146,238 +148,24 @@ }, "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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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.83.200.69", "fd7a:115c:a1e0::c537:c845"], + "SrcIPs": [ + "100.83.200.69", + "fd7a:115c:a1e0::c537:c845" + ], "DstPorts": [ { "IP": "100.108.74.26", @@ -409,262 +197,16 @@ } ] } - ], - "packet_filter_matches": [ - { - "IPProto": [6, 17, 1, 58], - "Srcs": ["100.83.200.69/32", "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 - } - }, - { - "Net": "100.108.74.26/32", - "Ports": { - "First": 80, - "Last": 80 - } - }, - { - "Net": "fd7a:115c:a1e0::b901:4a87/128", - "Ports": { - "First": 80, - "Last": 80 - } - } - ], - "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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": null } } } diff --git a/hscontrol/policy/v2/testdata/grant_results/GRANT-P09_14B.hujson b/hscontrol/policy/v2/testdata/grant_results/GRANT-P09_14B.hujson index 56ccb8bbd..bde4875c9 100644 --- a/hscontrol/policy/v2/testdata/grant_results/GRANT-P09_14B.hujson +++ b/hscontrol/policy/v2/testdata/grant_results/GRANT-P09_14B.hujson @@ -7,23 +7,37 @@ // Expected: Rules on tagged-server { "test_id": "GRANT-P09_14B", - "timestamp": "2026-02-23T00:56:52Z", - "propagation_wait_seconds": 15, "input": { - "policy_file": "/home/kradalby/acl-explore/grant_policies/grant_p09_14b.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -32,112 +46,100 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "grants": [ { - "src": ["tag:client"], - "dst": ["tag:server"], - "ip": ["22"] + "src": [ + "tag:client" + ], + "dst": [ + "tag:server" + ], + "ip": [ + "22" + ] }, { - "src": ["tag:prod"], - "dst": ["tag:server"], - "ip": ["22"] + "src": [ + "tag:prod" + ], + "dst": [ + "tag:server" + ], + "ip": [ + "22" + ] } ] }, - "grants_section": [ - { - "src": ["tag:client"], - "dst": ["tag:server"], - "ip": ["22"] - }, - { - "src": ["tag:prod"], - "dst": ["tag:server"], - "ip": ["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"], + "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"], + "tags": [ + "tag:router" + ], "ipv4": "100.92.142.61", - "ipv6": "fd7a:115c:a1e0::3e37:8e3d", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] + "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"], + "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"], + "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"], + "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" @@ -146,283 +148,24 @@ }, "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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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.83.200.69", "fd7a:115c:a1e0::c537:c845"], + "SrcIPs": [ + "100.83.200.69", + "fd7a:115c:a1e0::c537:c845" + ], "DstPorts": [ { "IP": "100.108.74.26", @@ -441,7 +184,10 @@ ] }, { - "SrcIPs": ["100.103.8.15", "fd7a:115c:a1e0::5b37:80f"], + "SrcIPs": [ + "100.103.8.15", + "fd7a:115c:a1e0::5b37:80f" + ], "DstPorts": [ { "IP": "100.108.74.26", @@ -459,315 +205,16 @@ } ] } - ], - "packet_filter_matches": [ - { - "IPProto": [6, 17, 1, 58], - "Srcs": ["100.83.200.69/32", "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": [] - }, - { - "IPProto": [6, 17, 1, 58], - "Srcs": ["100.103.8.15/32", "fd7a:115c:a1e0::5b37:80f/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": { - "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": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": null } } } diff --git a/hscontrol/policy/v2/testdata/grant_results/GRANT-P09_14C.hujson b/hscontrol/policy/v2/testdata/grant_results/GRANT-P09_14C.hujson index 6e56d55fb..4bf2fc90a 100644 --- a/hscontrol/policy/v2/testdata/grant_results/GRANT-P09_14C.hujson +++ b/hscontrol/policy/v2/testdata/grant_results/GRANT-P09_14C.hujson @@ -7,23 +7,37 @@ // Expected: Rules on 8 nodes { "test_id": "GRANT-P09_14C", - "timestamp": "2026-02-23T00:57:09Z", - "propagation_wait_seconds": 15, "input": { - "policy_file": "/home/kradalby/acl-explore/grant_policies/grant_p09_14c.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -32,112 +46,100 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "grants": [ { - "src": ["*"], - "dst": ["*"], - "ip": ["*"] + "src": [ + "*" + ], + "dst": [ + "*" + ], + "ip": [ + "*" + ] }, { - "src": ["tag:client"], - "dst": ["tag:server"], - "ip": ["22"] + "src": [ + "tag:client" + ], + "dst": [ + "tag:server" + ], + "ip": [ + "22" + ] } ] }, - "grants_section": [ - { - "src": ["*"], - "dst": ["*"], - "ip": ["*"] - }, - { - "src": ["tag:client"], - "dst": ["tag:server"], - "ip": ["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"], + "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"], + "tags": [ + "tag:router" + ], "ipv4": "100.92.142.61", - "ipv6": "fd7a:115c:a1e0::3e37:8e3d", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] + "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"], + "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"], + "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"], + "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" @@ -146,10 +148,6 @@ }, "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": [ @@ -168,406 +166,9 @@ } ] } - ], - "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": [ - { - "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": { - "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": { - "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/exit-node/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/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": { - "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/exit-node/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/exit-node/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 - } - } - } + ] }, "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": [ @@ -586,405 +187,9 @@ } ] } - ], - "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": [ - { - "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": { - "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": [ { "SrcIPs": [ @@ -1003,406 +208,9 @@ } ] } - ], - "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": [ - { - "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": { - "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-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": { - "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/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": { - "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-client/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-client/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-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": [ @@ -1421,406 +229,9 @@ } ] } - ], - "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": [ - { - "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": { - "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-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": { - "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.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": { - "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-prod/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-prod/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-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": [ @@ -1840,7 +251,10 @@ ] }, { - "SrcIPs": ["100.83.200.69", "fd7a:115c:a1e0::c537:c845"], + "SrcIPs": [ + "100.83.200.69", + "fd7a:115c:a1e0::c537:c845" + ], "DstPorts": [ { "IP": "100.108.74.26", @@ -1858,428 +272,9 @@ } ] } - ], - "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": [ - { - "Net": "0.0.0.0/0", - "Ports": { - "First": 0, - "Last": 65535 - } - }, - { - "Net": "::/0", - "Ports": { - "First": 0, - "Last": 65535 - } - } - ], - "Caps": [] - }, - { - "IPProto": [6, 17, 1, 58], - "Srcs": ["100.83.200.69/32", "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": { - "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": [ { "SrcIPs": [ @@ -2298,406 +293,9 @@ } ] } - ], - "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": [ - { - "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": { - "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/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": { - "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/user-kris/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/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": { - "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/user-kris/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-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": [ @@ -2716,406 +314,9 @@ } ] } - ], - "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": [ - { - "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": { - "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/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": { - "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/user-mon/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/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": { - "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.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": { - "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 - } - } - } + ] }, "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": [ @@ -3134,400 +335,7 @@ } ] } - ], - "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": [ - { - "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": { - "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/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": { - "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/user1/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/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": { - "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/user1/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 - } - } - } + ] } } } diff --git a/hscontrol/policy/v2/testdata/grant_results/GRANT-P09_14D.hujson b/hscontrol/policy/v2/testdata/grant_results/GRANT-P09_14D.hujson index 33fecbe00..be5d31668 100644 --- a/hscontrol/policy/v2/testdata/grant_results/GRANT-P09_14D.hujson +++ b/hscontrol/policy/v2/testdata/grant_results/GRANT-P09_14D.hujson @@ -8,23 +8,37 @@ // Expected: Rules on tagged-server { "test_id": "GRANT-P09_14D", - "timestamp": "2026-02-23T00:57:25Z", - "propagation_wait_seconds": 15, "input": { - "policy_file": "/home/kradalby/acl-explore/grant_policies/grant_p09_14d.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -33,122 +47,111 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "grants": [ { - "src": ["tag:client"], - "dst": ["tag:server"], - "ip": ["22"] + "src": [ + "tag:client" + ], + "dst": [ + "tag:server" + ], + "ip": [ + "22" + ] }, { - "src": ["tag:prod"], - "dst": ["tag:server"], - "ip": ["80"] + "src": [ + "tag:prod" + ], + "dst": [ + "tag:server" + ], + "ip": [ + "80" + ] }, { - "src": ["tag:router"], - "dst": ["tag:server"], - "ip": ["443"] + "src": [ + "tag:router" + ], + "dst": [ + "tag:server" + ], + "ip": [ + "443" + ] } ] }, - "grants_section": [ - { - "src": ["tag:client"], - "dst": ["tag:server"], - "ip": ["22"] - }, - { - "src": ["tag:prod"], - "dst": ["tag:server"], - "ip": ["80"] - }, - { - "src": ["tag:router"], - "dst": ["tag:server"], - "ip": ["443"] - } - ], - "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"], + "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"], + "tags": [ + "tag:router" + ], "ipv4": "100.92.142.61", - "ipv6": "fd7a:115c:a1e0::3e37:8e3d", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] + "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"], + "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"], + "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"], + "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" @@ -157,328 +160,24 @@ }, "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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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.83.200.69", "fd7a:115c:a1e0::c537:c845"], + "SrcIPs": [ + "100.83.200.69", + "fd7a:115c:a1e0::c537:c845" + ], "DstPorts": [ { "IP": "100.108.74.26", @@ -497,7 +196,10 @@ ] }, { - "SrcIPs": ["100.103.8.15", "fd7a:115c:a1e0::5b37:80f"], + "SrcIPs": [ + "100.103.8.15", + "fd7a:115c:a1e0::5b37:80f" + ], "DstPorts": [ { "IP": "100.108.74.26", @@ -516,7 +218,10 @@ ] }, { - "SrcIPs": ["100.92.142.61", "fd7a:115c:a1e0::3e37:8e3d"], + "SrcIPs": [ + "100.92.142.61", + "fd7a:115c:a1e0::3e37:8e3d" + ], "DstPorts": [ { "IP": "100.108.74.26", @@ -534,382 +239,16 @@ } ] } - ], - "packet_filter_matches": [ - { - "IPProto": [6, 17, 1, 58], - "Srcs": ["100.83.200.69/32", "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": [] - }, - { - "IPProto": [6, 17, 1, 58], - "Srcs": ["100.103.8.15/32", "fd7a:115c:a1e0::5b37:80f/128"], - "SrcCaps": null, - "Dsts": [ - { - "Net": "100.108.74.26/32", - "Ports": { - "First": 80, - "Last": 80 - } - }, - { - "Net": "fd7a:115c:a1e0::b901:4a87/128", - "Ports": { - "First": 80, - "Last": 80 - } - } - ], - "Caps": [] - }, - { - "IPProto": [6, 17, 1, 58], - "Srcs": ["100.92.142.61/32", "fd7a:115c:a1e0::3e37:8e3d/128"], - "SrcCaps": null, - "Dsts": [ - { - "Net": "100.108.74.26/32", - "Ports": { - "First": 443, - "Last": 443 - } - }, - { - "Net": "fd7a:115c:a1e0::b901:4a87/128", - "Ports": { - "First": 443, - "Last": 443 - } - } - ], - "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": { - "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": 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": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": null } } } diff --git a/hscontrol/policy/v2/testdata/grant_results/GRANT-P09_14E.hujson b/hscontrol/policy/v2/testdata/grant_results/GRANT-P09_14E.hujson index b7ff46bde..bdcfcf9f2 100644 --- a/hscontrol/policy/v2/testdata/grant_results/GRANT-P09_14E.hujson +++ b/hscontrol/policy/v2/testdata/grant_results/GRANT-P09_14E.hujson @@ -8,23 +8,37 @@ // Expected: Rules on subnet-router, tagged-prod, tagged-server { "test_id": "GRANT-P09_14E", - "timestamp": "2026-02-23T00:57:41Z", - "propagation_wait_seconds": 15, "input": { - "policy_file": "/home/kradalby/acl-explore/grant_policies/grant_p09_14e.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -33,122 +47,111 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "grants": [ { - "src": ["tag:client"], - "dst": ["tag:server"], - "ip": ["22"] + "src": [ + "tag:client" + ], + "dst": [ + "tag:server" + ], + "ip": [ + "22" + ] }, { - "src": ["tag:client"], - "dst": ["tag:prod"], - "ip": ["5432"] + "src": [ + "tag:client" + ], + "dst": [ + "tag:prod" + ], + "ip": [ + "5432" + ] }, { - "src": ["tag:client"], - "dst": ["tag:router"], - "ip": ["80"] + "src": [ + "tag:client" + ], + "dst": [ + "tag:router" + ], + "ip": [ + "80" + ] } ] }, - "grants_section": [ - { - "src": ["tag:client"], - "dst": ["tag:server"], - "ip": ["22"] - }, - { - "src": ["tag:client"], - "dst": ["tag:prod"], - "ip": ["5432"] - }, - { - "src": ["tag:client"], - "dst": ["tag:router"], - "ip": ["80"] - } - ], - "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"], + "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"], + "tags": [ + "tag:router" + ], "ipv4": "100.92.142.61", - "ipv6": "fd7a:115c:a1e0::3e37:8e3d", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] + "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"], + "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"], + "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"], + "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" @@ -157,58 +160,15 @@ }, "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 - } - } + "packet_filter_rules": 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.83.200.69", "fd7a:115c:a1e0::c537:c845"], + "SrcIPs": [ + "100.83.200.69", + "fd7a:115c:a1e0::c537:c845" + ], "DstPorts": [ { "IP": "100.92.142.61", @@ -226,302 +186,18 @@ } ] } - ], - "packet_filter_matches": [ - { - "IPProto": [6, 17, 1, 58], - "Srcs": ["100.83.200.69/32", "fd7a:115c:a1e0::c537:c845/128"], - "SrcCaps": null, - "Dsts": [ - { - "Net": "100.92.142.61/32", - "Ports": { - "First": 80, - "Last": 80 - } - }, - { - "Net": "fd7a:115c:a1e0::3e37:8e3d/128", - "Ports": { - "First": 80, - "Last": 80 - } - } - ], - "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": { - "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": 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": { - "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": 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": { - "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/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 - } - } + "packet_filter_rules": 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.83.200.69", "fd7a:115c:a1e0::c537:c845"], + "SrcIPs": [ + "100.83.200.69", + "fd7a:115c:a1e0::c537:c845" + ], "DstPorts": [ { "IP": "100.103.8.15", @@ -539,122 +215,15 @@ } ] } - ], - "packet_filter_matches": [ - { - "IPProto": [6, 17, 1, 58], - "Srcs": ["100.83.200.69/32", "fd7a:115c:a1e0::c537:c845/128"], - "SrcCaps": null, - "Dsts": [ - { - "Net": "100.103.8.15/32", - "Ports": { - "First": 5432, - "Last": 5432 - } - }, - { - "Net": "fd7a:115c:a1e0::5b37:80f/128", - "Ports": { - "First": 5432, - "Last": 5432 - } - } - ], - "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": { - "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.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.83.200.69", "fd7a:115c:a1e0::c537:c845"], + "SrcIPs": [ + "100.83.200.69", + "fd7a:115c:a1e0::c537:c845" + ], "DstPorts": [ { "IP": "100.108.74.26", @@ -672,248 +241,16 @@ } ] } - ], - "packet_filter_matches": [ - { - "IPProto": [6, 17, 1, 58], - "Srcs": ["100.83.200.69/32", "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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": null } } } diff --git a/hscontrol/policy/v2/testdata/grant_results/GRANT-P09_14F.hujson b/hscontrol/policy/v2/testdata/grant_results/GRANT-P09_14F.hujson index b80b30cfb..f80d7d1c4 100644 --- a/hscontrol/policy/v2/testdata/grant_results/GRANT-P09_14F.hujson +++ b/hscontrol/policy/v2/testdata/grant_results/GRANT-P09_14F.hujson @@ -7,23 +7,37 @@ // Expected: Rules on 8 nodes { "test_id": "GRANT-P09_14F", - "timestamp": "2026-02-23T00:57:57Z", - "propagation_wait_seconds": 15, "input": { - "policy_file": "/home/kradalby/acl-explore/grant_policies/grant_p09_14f.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -32,112 +46,100 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "grants": [ { - "src": ["autogroup:tagged"], - "dst": ["*"], - "ip": ["*"] + "src": [ + "autogroup:tagged" + ], + "dst": [ + "*" + ], + "ip": [ + "*" + ] }, { - "src": ["autogroup:member"], - "dst": ["*"], - "ip": ["*"] + "src": [ + "autogroup:member" + ], + "dst": [ + "*" + ], + "ip": [ + "*" + ] } ] }, - "grants_section": [ - { - "src": ["autogroup:tagged"], - "dst": ["*"], - "ip": ["*"] - }, - { - "src": ["autogroup:member"], - "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"], + "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"], + "tags": [ + "tag:router" + ], "ipv4": "100.92.142.61", - "ipv6": "fd7a:115c:a1e0::3e37:8e3d", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] + "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"], + "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"], + "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"], + "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" @@ -146,10 +148,6 @@ }, "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": [ @@ -193,430 +191,9 @@ } ] } - ], - "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": [ - { - "Net": "0.0.0.0/0", - "Ports": { - "First": 0, - "Last": 65535 - } - }, - { - "Net": "::/0", - "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": [ - { - "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": { - "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": { - "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/exit-node/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/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": { - "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/exit-node/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/exit-node/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 - } - } - } + ] }, "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": [ @@ -660,429 +237,9 @@ } ] } - ], - "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": [ - { - "Net": "0.0.0.0/0", - "Ports": { - "First": 0, - "Last": 65535 - } - }, - { - "Net": "::/0", - "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": [ - { - "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": { - "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": [ { "SrcIPs": [ @@ -1126,430 +283,9 @@ } ] } - ], - "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": [ - { - "Net": "0.0.0.0/0", - "Ports": { - "First": 0, - "Last": 65535 - } - }, - { - "Net": "::/0", - "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": [ - { - "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": { - "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-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": { - "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/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": { - "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-client/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-client/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-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": [ @@ -1593,430 +329,9 @@ } ] } - ], - "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": [ - { - "Net": "0.0.0.0/0", - "Ports": { - "First": 0, - "Last": 65535 - } - }, - { - "Net": "::/0", - "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": [ - { - "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": { - "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-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": { - "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.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": { - "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-prod/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-prod/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-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": [ @@ -2060,430 +375,9 @@ } ] } - ], - "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": [ - { - "Net": "0.0.0.0/0", - "Ports": { - "First": 0, - "Last": 65535 - } - }, - { - "Net": "::/0", - "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": [ - { - "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": { - "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": [ { "SrcIPs": [ @@ -2527,430 +421,9 @@ } ] } - ], - "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": [ - { - "Net": "0.0.0.0/0", - "Ports": { - "First": 0, - "Last": 65535 - } - }, - { - "Net": "::/0", - "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": [ - { - "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": { - "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/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": { - "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/user-kris/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/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": { - "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/user-kris/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-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": [ @@ -2994,430 +467,9 @@ } ] } - ], - "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": [ - { - "Net": "0.0.0.0/0", - "Ports": { - "First": 0, - "Last": 65535 - } - }, - { - "Net": "::/0", - "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": [ - { - "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": { - "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/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": { - "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/user-mon/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/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": { - "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.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": { - "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 - } - } - } + ] }, "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": [ @@ -3461,424 +513,7 @@ } ] } - ], - "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": [ - { - "Net": "0.0.0.0/0", - "Ports": { - "First": 0, - "Last": 65535 - } - }, - { - "Net": "::/0", - "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": [ - { - "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": { - "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/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": { - "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/user1/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/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": { - "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/user1/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 - } - } - } + ] } } } diff --git a/hscontrol/policy/v2/testdata/grant_results/GRANT-P09_14G.hujson b/hscontrol/policy/v2/testdata/grant_results/GRANT-P09_14G.hujson index d403dbe27..8959cb38e 100644 --- a/hscontrol/policy/v2/testdata/grant_results/GRANT-P09_14G.hujson +++ b/hscontrol/policy/v2/testdata/grant_results/GRANT-P09_14G.hujson @@ -7,23 +7,37 @@ // Expected: Rules on tagged-server, user1 { "test_id": "GRANT-P09_14G", - "timestamp": "2026-02-23T00:58:14Z", - "propagation_wait_seconds": 15, "input": { - "policy_file": "/home/kradalby/acl-explore/grant_policies/grant_p09_14g.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -32,112 +46,104 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "grants": [ { - "src": ["autogroup:member", "group:admins", "kratail2tid@passkey"], - "dst": ["tag:server"], - "ip": ["22"] + "src": [ + "autogroup:member", + "group:admins", + "kratail2tid@passkey" + ], + "dst": [ + "tag:server" + ], + "ip": [ + "22" + ] }, { - "src": ["tag:server", "webserver", "100.108.74.26"], - "dst": ["group:admins"], - "ip": ["80"] + "src": [ + "tag:server", + "webserver", + "100.108.74.26" + ], + "dst": [ + "group:admins" + ], + "ip": [ + "80" + ] } ] }, - "grants_section": [ - { - "src": ["autogroup:member", "group:admins", "kratail2tid@passkey"], - "dst": ["tag:server"], - "ip": ["22"] - }, - { - "src": ["tag:server", "webserver", "100.108.74.26"], - "dst": ["group:admins"], - "ip": ["80"] - } - ], - "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"], + "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"], + "tags": [ + "tag:router" + ], "ipv4": "100.92.142.61", - "ipv6": "fd7a:115c:a1e0::3e37:8e3d", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] + "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"], + "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"], + "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"], + "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" @@ -146,190 +152,18 @@ }, "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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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": [ @@ -357,399 +191,21 @@ } ] } - ], - "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": 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": { - "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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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.108.74.26", "fd7a:115c:a1e0::b901:4a87"], + "SrcIPs": [ + "100.108.74.26", + "fd7a:115c:a1e0::b901:4a87" + ], "DstPorts": [ { "IP": "100.90.199.68", @@ -767,113 +223,7 @@ } ] } - ], - "packet_filter_matches": [ - { - "IPProto": [6, 17, 1, 58], - "Srcs": ["100.108.74.26/32", "fd7a:115c:a1e0::b901:4a87/128"], - "SrcCaps": null, - "Dsts": [ - { - "Net": "100.90.199.68/32", - "Ports": { - "First": 80, - "Last": 80 - } - }, - { - "Net": "fd7a:115c:a1e0::2d01:c747/128", - "Ports": { - "First": 80, - "Last": 80 - } - } - ], - "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": { - "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 - } - } + ] } } } diff --git a/hscontrol/policy/v2/testdata/grant_results/GRANT-P09_14H.hujson b/hscontrol/policy/v2/testdata/grant_results/GRANT-P09_14H.hujson index 890cac768..fdc1248cf 100644 --- a/hscontrol/policy/v2/testdata/grant_results/GRANT-P09_14H.hujson +++ b/hscontrol/policy/v2/testdata/grant_results/GRANT-P09_14H.hujson @@ -7,23 +7,37 @@ // Expected: Rules on 8 nodes { "test_id": "GRANT-P09_14H", - "timestamp": "2026-02-23T00:58:30Z", - "propagation_wait_seconds": 15, "input": { - "policy_file": "/home/kradalby/acl-explore/grant_policies/grant_p09_14h.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -32,112 +46,100 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "grants": [ { - "src": ["tag:client"], - "dst": ["*"], - "ip": ["*"] + "src": [ + "tag:client" + ], + "dst": [ + "*" + ], + "ip": [ + "*" + ] }, { - "src": ["tag:client"], - "dst": ["tag:server"], - "ip": ["22"] + "src": [ + "tag:client" + ], + "dst": [ + "tag:server" + ], + "ip": [ + "22" + ] } ] }, - "grants_section": [ - { - "src": ["tag:client"], - "dst": ["*"], - "ip": ["*"] - }, - { - "src": ["tag:client"], - "dst": ["tag:server"], - "ip": ["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"], + "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"], + "tags": [ + "tag:router" + ], "ipv4": "100.92.142.61", - "ipv6": "fd7a:115c:a1e0::3e37:8e3d", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] + "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"], + "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"], + "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"], + "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" @@ -146,13 +148,12 @@ }, "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.83.200.69", "fd7a:115c:a1e0::c537:c845"], + "SrcIPs": [ + "100.83.200.69", + "fd7a:115c:a1e0::c537:c845" + ], "DstPorts": [ { "IP": "*", @@ -163,122 +164,15 @@ } ] } - ], - "packet_filter_matches": [ - { - "IPProto": [6, 17, 1, 58], - "Srcs": ["100.83.200.69/32", "fd7a:115c:a1e0::c537:c845/128"], - "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": { - "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/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.83.200.69", "fd7a:115c:a1e0::c537:c845"], + "SrcIPs": [ + "100.83.200.69", + "fd7a:115c:a1e0::c537:c845" + ], "DstPorts": [ { "IP": "*", @@ -289,122 +183,15 @@ } ] } - ], - "packet_filter_matches": [ - { - "IPProto": [6, 17, 1, 58], - "Srcs": ["100.83.200.69/32", "fd7a:115c:a1e0::c537:c845/128"], - "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": { - "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": 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.83.200.69", "fd7a:115c:a1e0::c537:c845"], + "SrcIPs": [ + "100.83.200.69", + "fd7a:115c:a1e0::c537:c845" + ], "DstPorts": [ { "IP": "*", @@ -415,393 +202,15 @@ } ] } - ], - "packet_filter_matches": [ - { - "IPProto": [6, 17, 1, 58], - "Srcs": ["100.83.200.69/32", "fd7a:115c:a1e0::c537:c845/128"], - "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": { - "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-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": { - "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/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": { - "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-client/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-client/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-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.83.200.69", "fd7a:115c:a1e0::c537:c845"], + "SrcIPs": [ + "100.83.200.69", + "fd7a:115c:a1e0::c537:c845" + ], "DstPorts": [ { "IP": "*", @@ -812,122 +221,15 @@ } ] } - ], - "packet_filter_matches": [ - { - "IPProto": [6, 17, 1, 58], - "Srcs": ["100.83.200.69/32", "fd7a:115c:a1e0::c537:c845/128"], - "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": { - "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.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.83.200.69", "fd7a:115c:a1e0::c537:c845"], + "SrcIPs": [ + "100.83.200.69", + "fd7a:115c:a1e0::c537:c845" + ], "DstPorts": [ { "IP": "*", @@ -952,136 +254,15 @@ } ] } - ], - "packet_filter_matches": [ - { - "IPProto": [6, 17, 1, 58], - "Srcs": ["100.83.200.69/32", "fd7a:115c:a1e0::c537:c845/128"], - "SrcCaps": null, - "Dsts": [ - { - "Net": "0.0.0.0/0", - "Ports": { - "First": 0, - "Last": 65535 - } - }, - { - "Net": "::/0", - "Ports": { - "First": 0, - "Last": 65535 - } - }, - { - "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": [ { - "SrcIPs": ["100.83.200.69", "fd7a:115c:a1e0::c537:c845"], + "SrcIPs": [ + "100.83.200.69", + "fd7a:115c:a1e0::c537:c845" + ], "DstPorts": [ { "IP": "*", @@ -1092,122 +273,15 @@ } ] } - ], - "packet_filter_matches": [ - { - "IPProto": [6, 17, 1, 58], - "Srcs": ["100.83.200.69/32", "fd7a:115c:a1e0::c537:c845/128"], - "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": { - "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/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.83.200.69", "fd7a:115c:a1e0::c537:c845"], + "SrcIPs": [ + "100.83.200.69", + "fd7a:115c:a1e0::c537:c845" + ], "DstPorts": [ { "IP": "*", @@ -1218,122 +292,15 @@ } ] } - ], - "packet_filter_matches": [ - { - "IPProto": [6, 17, 1, 58], - "Srcs": ["100.83.200.69/32", "fd7a:115c:a1e0::c537:c845/128"], - "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": { - "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/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.83.200.69", "fd7a:115c:a1e0::c537:c845"], + "SrcIPs": [ + "100.83.200.69", + "fd7a:115c:a1e0::c537:c845" + ], "DstPorts": [ { "IP": "*", @@ -1344,113 +311,7 @@ } ] } - ], - "packet_filter_matches": [ - { - "IPProto": [6, 17, 1, 58], - "Srcs": ["100.83.200.69/32", "fd7a:115c:a1e0::c537:c845/128"], - "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": { - "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/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 - } - } + ] } } } diff --git a/hscontrol/policy/v2/testdata/grant_results/GRANT-P09_14I.hujson b/hscontrol/policy/v2/testdata/grant_results/GRANT-P09_14I.hujson index bfd63ae1a..c16e1e99c 100644 --- a/hscontrol/policy/v2/testdata/grant_results/GRANT-P09_14I.hujson +++ b/hscontrol/policy/v2/testdata/grant_results/GRANT-P09_14I.hujson @@ -8,23 +8,37 @@ // Expected: Rules on 8 nodes { "test_id": "GRANT-P09_14I", - "timestamp": "2026-02-23T00:58:46Z", - "propagation_wait_seconds": 15, "input": { - "policy_file": "/home/kradalby/acl-explore/grant_policies/grant_p09_14i.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -33,122 +47,111 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "grants": [ { - "src": ["*"], - "dst": ["tag:server"], - "ip": ["22"] + "src": [ + "*" + ], + "dst": [ + "tag:server" + ], + "ip": [ + "22" + ] }, { - "src": ["*"], - "dst": ["tag:prod"], - "ip": ["5432"] + "src": [ + "*" + ], + "dst": [ + "tag:prod" + ], + "ip": [ + "5432" + ] }, { - "src": ["*"], - "dst": ["*"], - "ip": ["80"] + "src": [ + "*" + ], + "dst": [ + "*" + ], + "ip": [ + "80" + ] } ] }, - "grants_section": [ - { - "src": ["*"], - "dst": ["tag:server"], - "ip": ["22"] - }, - { - "src": ["*"], - "dst": ["tag:prod"], - "ip": ["5432"] - }, - { - "src": ["*"], - "dst": ["*"], - "ip": ["80"] - } - ], - "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"], + "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"], + "tags": [ + "tag:router" + ], "ipv4": "100.92.142.61", - "ipv6": "fd7a:115c:a1e0::3e37:8e3d", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] + "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"], + "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"], + "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"], + "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" @@ -157,10 +160,6 @@ }, "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": [ @@ -179,406 +178,9 @@ } ] } - ], - "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": [ - { - "Net": "0.0.0.0/0", - "Ports": { - "First": 80, - "Last": 80 - } - }, - { - "Net": "::/0", - "Ports": { - "First": 80, - "Last": 80 - } - } - ], - "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": { - "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": { - "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/exit-node/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/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": { - "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/exit-node/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/exit-node/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 - } - } - } + ] }, "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": [ @@ -597,405 +199,9 @@ } ] } - ], - "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": [ - { - "Net": "0.0.0.0/0", - "Ports": { - "First": 80, - "Last": 80 - } - }, - { - "Net": "::/0", - "Ports": { - "First": 80, - "Last": 80 - } - } - ], - "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": { - "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": [ { "SrcIPs": [ @@ -1014,406 +220,9 @@ } ] } - ], - "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": [ - { - "Net": "0.0.0.0/0", - "Ports": { - "First": 80, - "Last": 80 - } - }, - { - "Net": "::/0", - "Ports": { - "First": 80, - "Last": 80 - } - } - ], - "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": { - "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-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": { - "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/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": { - "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-client/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-client/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-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": [ @@ -1446,420 +255,9 @@ } ] } - ], - "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": [ - { - "Net": "100.103.8.15/32", - "Ports": { - "First": 5432, - "Last": 5432 - } - }, - { - "Net": "fd7a:115c:a1e0::5b37:80f/128", - "Ports": { - "First": 5432, - "Last": 5432 - } - }, - { - "Net": "0.0.0.0/0", - "Ports": { - "First": 80, - "Last": 80 - } - }, - { - "Net": "::/0", - "Ports": { - "First": 80, - "Last": 80 - } - } - ], - "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": { - "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-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": { - "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.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": { - "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-prod/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-prod/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-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": [ @@ -1892,420 +290,9 @@ } ] } - ], - "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": [ - { - "Net": "100.108.74.26/32", - "Ports": { - "First": 22, - "Last": 22 - } - }, - { - "Net": "fd7a:115c:a1e0::b901:4a87/128", - "Ports": { - "First": 22, - "Last": 22 - } - }, - { - "Net": "0.0.0.0/0", - "Ports": { - "First": 80, - "Last": 80 - } - }, - { - "Net": "::/0", - "Ports": { - "First": 80, - "Last": 80 - } - } - ], - "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": [ { "SrcIPs": [ @@ -2324,406 +311,9 @@ } ] } - ], - "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": [ - { - "Net": "0.0.0.0/0", - "Ports": { - "First": 80, - "Last": 80 - } - }, - { - "Net": "::/0", - "Ports": { - "First": 80, - "Last": 80 - } - } - ], - "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": { - "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/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": { - "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/user-kris/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/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": { - "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/user-kris/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-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": [ @@ -2742,406 +332,9 @@ } ] } - ], - "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": [ - { - "Net": "0.0.0.0/0", - "Ports": { - "First": 80, - "Last": 80 - } - }, - { - "Net": "::/0", - "Ports": { - "First": 80, - "Last": 80 - } - } - ], - "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": { - "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/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": { - "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/user-mon/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/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": { - "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.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": { - "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 - } - } - } + ] }, "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": [ @@ -3160,400 +353,7 @@ } ] } - ], - "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": [ - { - "Net": "0.0.0.0/0", - "Ports": { - "First": 80, - "Last": 80 - } - }, - { - "Net": "::/0", - "Ports": { - "First": 80, - "Last": 80 - } - } - ], - "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": { - "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/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": { - "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/user1/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/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": { - "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/user1/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 - } - } - } + ] } } } diff --git a/hscontrol/policy/v2/testdata/grant_results/GRANT-P09_1A.hujson b/hscontrol/policy/v2/testdata/grant_results/GRANT-P09_1A.hujson index ec7c627b7..2133f76ae 100644 --- a/hscontrol/policy/v2/testdata/grant_results/GRANT-P09_1A.hujson +++ b/hscontrol/policy/v2/testdata/grant_results/GRANT-P09_1A.hujson @@ -5,23 +5,37 @@ // Expected: Rules on tagged-server { "test_id": "GRANT-P09_1A", - "timestamp": "2026-02-23T00:59:02Z", - "propagation_wait_seconds": 15, "input": { - "policy_file": "/home/kradalby/acl-explore/grant_policies/grant_p09_1a.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -30,102 +44,90 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "grants": [ { - "src": ["autogroup:member", "tag:client"], - "dst": ["tag:server"], - "ip": ["22"] + "src": [ + "autogroup:member", + "tag:client" + ], + "dst": [ + "tag:server" + ], + "ip": [ + "22" + ] } ] }, - "grants_section": [ - { - "src": ["autogroup:member", "tag:client"], - "dst": ["tag:server"], - "ip": ["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"], + "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"], + "tags": [ + "tag:router" + ], "ipv4": "100.92.142.61", - "ipv6": "fd7a:115c:a1e0::3e37:8e3d", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] + "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"], + "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"], + "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"], + "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" @@ -134,235 +136,18 @@ }, "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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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": [ @@ -392,527 +177,16 @@ } ] } - ], - "packet_filter_matches": [ - { - "IPProto": [6, 17, 1, 58], - "Srcs": [ - "100.103.90.82/32", - "100.110.121.96/32", - "100.83.200.69/32", - "100.90.199.68/32", - "fd7a:115c:a1e0::1737:7960/128", - "fd7a:115c:a1e0::2d01:c747/128", - "fd7a:115c:a1e0::9e37:5a52/128", - "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": { - "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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": null } } } diff --git a/hscontrol/policy/v2/testdata/grant_results/GRANT-P09_1B.hujson b/hscontrol/policy/v2/testdata/grant_results/GRANT-P09_1B.hujson index 29c365e00..5c11bda6a 100644 --- a/hscontrol/policy/v2/testdata/grant_results/GRANT-P09_1B.hujson +++ b/hscontrol/policy/v2/testdata/grant_results/GRANT-P09_1B.hujson @@ -5,23 +5,37 @@ // Expected: Rules on tagged-server { "test_id": "GRANT-P09_1B", - "timestamp": "2026-02-23T00:59:19Z", - "propagation_wait_seconds": 15, "input": { - "policy_file": "/home/kradalby/acl-explore/grant_policies/grant_p09_1b.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -30,102 +44,90 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "grants": [ { - "src": ["autogroup:tagged", "autogroup:member"], - "dst": ["tag:server"], - "ip": ["22"] + "src": [ + "autogroup:tagged", + "autogroup:member" + ], + "dst": [ + "tag:server" + ], + "ip": [ + "22" + ] } ] }, - "grants_section": [ - { - "src": ["autogroup:tagged", "autogroup:member"], - "dst": ["tag:server"], - "ip": ["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"], + "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"], + "tags": [ + "tag:router" + ], "ipv4": "100.92.142.61", - "ipv6": "fd7a:115c:a1e0::3e37:8e3d", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] + "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"], + "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"], + "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"], + "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" @@ -134,370 +136,18 @@ }, "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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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": [ @@ -535,670 +185,16 @@ } ] } - ], - "packet_filter_matches": [ - { - "IPProto": [6, 17, 1, 58], - "Srcs": [ - "100.103.8.15/32", - "100.103.90.82/32", - "100.108.74.26/32", - "100.110.121.96/32", - "100.83.200.69/32", - "100.85.66.106/32", - "100.90.199.68/32", - "100.92.142.61/32", - "fd7a:115c:a1e0::1737:7960/128", - "fd7a:115c:a1e0::2d01:c747/128", - "fd7a:115c:a1e0::3e37:8e3d/128", - "fd7a:115c:a1e0::5b37:80f/128", - "fd7a:115c:a1e0::7c37:426a/128", - "fd7a:115c:a1e0::9e37:5a52/128", - "fd7a:115c:a1e0::b901:4a87/128", - "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": { - "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"], - "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": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": null } } } diff --git a/hscontrol/policy/v2/testdata/grant_results/GRANT-P09_1C.hujson b/hscontrol/policy/v2/testdata/grant_results/GRANT-P09_1C.hujson index d24b11377..1023f1c37 100644 --- a/hscontrol/policy/v2/testdata/grant_results/GRANT-P09_1C.hujson +++ b/hscontrol/policy/v2/testdata/grant_results/GRANT-P09_1C.hujson @@ -5,23 +5,37 @@ // Expected: Rules on tagged-server { "test_id": "GRANT-P09_1C", - "timestamp": "2026-02-23T00:59:35Z", - "propagation_wait_seconds": 15, "input": { - "policy_file": "/home/kradalby/acl-explore/grant_policies/grant_p09_1c.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -30,102 +44,90 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "grants": [ { - "src": ["group:admins", "tag:client"], - "dst": ["tag:server"], - "ip": ["22"] + "src": [ + "group:admins", + "tag:client" + ], + "dst": [ + "tag:server" + ], + "ip": [ + "22" + ] } ] }, - "grants_section": [ - { - "src": ["group:admins", "tag:client"], - "dst": ["tag:server"], - "ip": ["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"], + "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"], + "tags": [ + "tag:router" + ], "ipv4": "100.92.142.61", - "ipv6": "fd7a:115c:a1e0::3e37:8e3d", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] + "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"], + "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"], + "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"], + "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" @@ -134,238 +136,26 @@ }, "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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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.83.200.69", "100.90.199.68", "fd7a:115c:a1e0::2d01:c747", "fd7a:115c:a1e0::c537:c845"], + "SrcIPs": [ + "100.83.200.69", + "100.90.199.68", + "fd7a:115c:a1e0::2d01:c747", + "fd7a:115c:a1e0::c537:c845" + ], "DstPorts": [ { "IP": "100.108.74.26", @@ -383,343 +173,16 @@ } ] } - ], - "packet_filter_matches": [ - { - "IPProto": [6, 17, 1, 58], - "Srcs": [ - "100.83.200.69/32", - "100.90.199.68/32", - "fd7a:115c:a1e0::2d01:c747/128", - "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": { - "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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": null } } } diff --git a/hscontrol/policy/v2/testdata/grant_results/GRANT-P09_1D.hujson b/hscontrol/policy/v2/testdata/grant_results/GRANT-P09_1D.hujson index 9db2c8bd0..fdfce3724 100644 --- a/hscontrol/policy/v2/testdata/grant_results/GRANT-P09_1D.hujson +++ b/hscontrol/policy/v2/testdata/grant_results/GRANT-P09_1D.hujson @@ -5,23 +5,37 @@ // Expected: Rules on tagged-server { "test_id": "GRANT-P09_1D", - "timestamp": "2026-02-23T00:59:51Z", - "propagation_wait_seconds": 15, "input": { - "policy_file": "/home/kradalby/acl-explore/grant_policies/grant_p09_1d.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -30,102 +44,90 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "grants": [ { - "src": ["kratail2tid@passkey", "tag:client"], - "dst": ["tag:server"], - "ip": ["22"] + "src": [ + "kratail2tid@passkey", + "tag:client" + ], + "dst": [ + "tag:server" + ], + "ip": [ + "22" + ] } ] }, - "grants_section": [ - { - "src": ["kratail2tid@passkey", "tag:client"], - "dst": ["tag:server"], - "ip": ["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"], + "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"], + "tags": [ + "tag:router" + ], "ipv4": "100.92.142.61", - "ipv6": "fd7a:115c:a1e0::3e37:8e3d", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] + "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"], + "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"], + "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"], + "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" @@ -134,238 +136,26 @@ }, "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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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.83.200.69", "100.90.199.68", "fd7a:115c:a1e0::2d01:c747", "fd7a:115c:a1e0::c537:c845"], + "SrcIPs": [ + "100.83.200.69", + "100.90.199.68", + "fd7a:115c:a1e0::2d01:c747", + "fd7a:115c:a1e0::c537:c845" + ], "DstPorts": [ { "IP": "100.108.74.26", @@ -383,343 +173,16 @@ } ] } - ], - "packet_filter_matches": [ - { - "IPProto": [6, 17, 1, 58], - "Srcs": [ - "100.83.200.69/32", - "100.90.199.68/32", - "fd7a:115c:a1e0::2d01:c747/128", - "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": { - "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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": null } } } diff --git a/hscontrol/policy/v2/testdata/grant_results/GRANT-P09_1E.hujson b/hscontrol/policy/v2/testdata/grant_results/GRANT-P09_1E.hujson index 71811b399..3c3b51772 100644 --- a/hscontrol/policy/v2/testdata/grant_results/GRANT-P09_1E.hujson +++ b/hscontrol/policy/v2/testdata/grant_results/GRANT-P09_1E.hujson @@ -5,23 +5,37 @@ // Expected: Rules on tagged-server { "test_id": "GRANT-P09_1E", - "timestamp": "2026-02-23T01:00:07Z", - "propagation_wait_seconds": 15, "input": { - "policy_file": "/home/kradalby/acl-explore/grant_policies/grant_p09_1e.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -30,102 +44,90 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "grants": [ { - "src": ["100.90.199.68", "tag:client"], - "dst": ["tag:server"], - "ip": ["22"] + "src": [ + "100.90.199.68", + "tag:client" + ], + "dst": [ + "tag:server" + ], + "ip": [ + "22" + ] } ] }, - "grants_section": [ - { - "src": ["100.90.199.68", "tag:client"], - "dst": ["tag:server"], - "ip": ["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"], + "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"], + "tags": [ + "tag:router" + ], "ipv4": "100.92.142.61", - "ipv6": "fd7a:115c:a1e0::3e37:8e3d", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] + "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"], + "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"], + "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"], + "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" @@ -134,238 +136,25 @@ }, "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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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.83.200.69", "100.90.199.68", "fd7a:115c:a1e0::c537:c845"], + "SrcIPs": [ + "100.83.200.69", + "100.90.199.68", + "fd7a:115c:a1e0::c537:c845" + ], "DstPorts": [ { "IP": "100.108.74.26", @@ -383,338 +172,16 @@ } ] } - ], - "packet_filter_matches": [ - { - "IPProto": [6, 17, 1, 58], - "Srcs": ["100.83.200.69/32", "100.90.199.68/32", "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": { - "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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": null } } } diff --git a/hscontrol/policy/v2/testdata/grant_results/GRANT-P09_2A_CORRECT.hujson b/hscontrol/policy/v2/testdata/grant_results/GRANT-P09_2A_CORRECT.hujson index ed7b7cb50..f6ea9b722 100644 --- a/hscontrol/policy/v2/testdata/grant_results/GRANT-P09_2A_CORRECT.hujson +++ b/hscontrol/policy/v2/testdata/grant_results/GRANT-P09_2A_CORRECT.hujson @@ -7,23 +7,37 @@ // Expected: Rules on tagged-prod, tagged-server { "test_id": "GRANT-P09_2A_CORRECT", - "timestamp": "2026-02-23T01:00:24Z", - "propagation_wait_seconds": 15, "input": { - "policy_file": "/home/kradalby/acl-explore/grant_policies/grant_p09_2a_correct.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -32,112 +46,100 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "grants": [ { - "src": ["tag:client"], - "dst": ["tag:server"], - "ip": ["22"] + "src": [ + "tag:client" + ], + "dst": [ + "tag:server" + ], + "ip": [ + "22" + ] }, { - "src": ["tag:client"], - "dst": ["tag:prod"], - "ip": ["5432"] + "src": [ + "tag:client" + ], + "dst": [ + "tag:prod" + ], + "ip": [ + "5432" + ] } ] }, - "grants_section": [ - { - "src": ["tag:client"], - "dst": ["tag:server"], - "ip": ["22"] - }, - { - "src": ["tag:client"], - "dst": ["tag:prod"], - "ip": ["5432"] - } - ], - "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"], + "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"], + "tags": [ + "tag:router" + ], "ipv4": "100.92.142.61", - "ipv6": "fd7a:115c:a1e0::3e37:8e3d", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] + "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"], + "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"], + "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"], + "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" @@ -146,238 +148,21 @@ }, "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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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": { - "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/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 - } - } + "packet_filter_rules": 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.83.200.69", "fd7a:115c:a1e0::c537:c845"], + "SrcIPs": [ + "100.83.200.69", + "fd7a:115c:a1e0::c537:c845" + ], "DstPorts": [ { "IP": "100.103.8.15", @@ -395,122 +180,15 @@ } ] } - ], - "packet_filter_matches": [ - { - "IPProto": [6, 17, 1, 58], - "Srcs": ["100.83.200.69/32", "fd7a:115c:a1e0::c537:c845/128"], - "SrcCaps": null, - "Dsts": [ - { - "Net": "100.103.8.15/32", - "Ports": { - "First": 5432, - "Last": 5432 - } - }, - { - "Net": "fd7a:115c:a1e0::5b37:80f/128", - "Ports": { - "First": 5432, - "Last": 5432 - } - } - ], - "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": { - "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.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.83.200.69", "fd7a:115c:a1e0::c537:c845"], + "SrcIPs": [ + "100.83.200.69", + "fd7a:115c:a1e0::c537:c845" + ], "DstPorts": [ { "IP": "100.108.74.26", @@ -528,248 +206,16 @@ } ] } - ], - "packet_filter_matches": [ - { - "IPProto": [6, 17, 1, 58], - "Srcs": ["100.83.200.69/32", "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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": null } } } diff --git a/hscontrol/policy/v2/testdata/grant_results/GRANT-P09_2A_NAIVE.hujson b/hscontrol/policy/v2/testdata/grant_results/GRANT-P09_2A_NAIVE.hujson index 3c34fcb09..fff57da84 100644 --- a/hscontrol/policy/v2/testdata/grant_results/GRANT-P09_2A_NAIVE.hujson +++ b/hscontrol/policy/v2/testdata/grant_results/GRANT-P09_2A_NAIVE.hujson @@ -5,23 +5,37 @@ // Expected: Rules on tagged-prod, tagged-server { "test_id": "GRANT-P09_2A_NAIVE", - "timestamp": "2026-02-23T01:00:40Z", - "propagation_wait_seconds": 15, "input": { - "policy_file": "/home/kradalby/acl-explore/grant_policies/grant_p09_2a_naive.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -30,102 +44,91 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "grants": [ { - "src": ["tag:client"], - "dst": ["tag:server", "tag:prod"], - "ip": ["22", "5432"] + "src": [ + "tag:client" + ], + "dst": [ + "tag:server", + "tag:prod" + ], + "ip": [ + "22", + "5432" + ] } ] }, - "grants_section": [ - { - "src": ["tag:client"], - "dst": ["tag:server", "tag:prod"], - "ip": ["22", "5432"] - } - ], - "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"], + "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"], + "tags": [ + "tag:router" + ], "ipv4": "100.92.142.61", - "ipv6": "fd7a:115c:a1e0::3e37:8e3d", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] + "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"], + "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"], + "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"], + "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" @@ -134,238 +137,21 @@ }, "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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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": { - "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/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 - } - } + "packet_filter_rules": 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.83.200.69", "fd7a:115c:a1e0::c537:c845"], + "SrcIPs": [ + "100.83.200.69", + "fd7a:115c:a1e0::c537:c845" + ], "DstPorts": [ { "IP": "100.103.8.15", @@ -397,136 +183,15 @@ } ] } - ], - "packet_filter_matches": [ - { - "IPProto": [6, 17, 1, 58], - "Srcs": ["100.83.200.69/32", "fd7a:115c:a1e0::c537:c845/128"], - "SrcCaps": null, - "Dsts": [ - { - "Net": "100.103.8.15/32", - "Ports": { - "First": 22, - "Last": 22 - } - }, - { - "Net": "100.103.8.15/32", - "Ports": { - "First": 5432, - "Last": 5432 - } - }, - { - "Net": "fd7a:115c:a1e0::5b37:80f/128", - "Ports": { - "First": 22, - "Last": 22 - } - }, - { - "Net": "fd7a:115c:a1e0::5b37:80f/128", - "Ports": { - "First": 5432, - "Last": 5432 - } - } - ], - "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": { - "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.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.83.200.69", "fd7a:115c:a1e0::c537:c845"], + "SrcIPs": [ + "100.83.200.69", + "fd7a:115c:a1e0::c537:c845" + ], "DstPorts": [ { "IP": "100.108.74.26", @@ -558,262 +223,16 @@ } ] } - ], - "packet_filter_matches": [ - { - "IPProto": [6, 17, 1, 58], - "Srcs": ["100.83.200.69/32", "fd7a:115c:a1e0::c537:c845/128"], - "SrcCaps": null, - "Dsts": [ - { - "Net": "100.108.74.26/32", - "Ports": { - "First": 22, - "Last": 22 - } - }, - { - "Net": "100.108.74.26/32", - "Ports": { - "First": 5432, - "Last": 5432 - } - }, - { - "Net": "fd7a:115c:a1e0::b901:4a87/128", - "Ports": { - "First": 22, - "Last": 22 - } - }, - { - "Net": "fd7a:115c:a1e0::b901:4a87/128", - "Ports": { - "First": 5432, - "Last": 5432 - } - } - ], - "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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": null } } } diff --git a/hscontrol/policy/v2/testdata/grant_results/GRANT-P09_2B_CORRECT.hujson b/hscontrol/policy/v2/testdata/grant_results/GRANT-P09_2B_CORRECT.hujson index 16824ba7e..13825b8c1 100644 --- a/hscontrol/policy/v2/testdata/grant_results/GRANT-P09_2B_CORRECT.hujson +++ b/hscontrol/policy/v2/testdata/grant_results/GRANT-P09_2B_CORRECT.hujson @@ -7,23 +7,37 @@ // Expected: Rules on tagged-server { "test_id": "GRANT-P09_2B_CORRECT", - "timestamp": "2026-02-23T01:00:56Z", - "propagation_wait_seconds": 15, "input": { - "policy_file": "/home/kradalby/acl-explore/grant_policies/grant_p09_2b_correct.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -32,112 +46,100 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "grants": [ { - "src": ["tag:client"], - "dst": ["tag:server"], - "ip": ["22"] + "src": [ + "tag:client" + ], + "dst": [ + "tag:server" + ], + "ip": [ + "22" + ] }, { - "src": ["tag:client"], - "dst": ["webserver"], - "ip": ["80"] + "src": [ + "tag:client" + ], + "dst": [ + "webserver" + ], + "ip": [ + "80" + ] } ] }, - "grants_section": [ - { - "src": ["tag:client"], - "dst": ["tag:server"], - "ip": ["22"] - }, - { - "src": ["tag:client"], - "dst": ["webserver"], - "ip": ["80"] - } - ], - "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"], + "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"], + "tags": [ + "tag:router" + ], "ipv4": "100.92.142.61", - "ipv6": "fd7a:115c:a1e0::3e37:8e3d", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] + "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"], + "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"], + "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"], + "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" @@ -146,238 +148,24 @@ }, "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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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.83.200.69", "fd7a:115c:a1e0::c537:c845"], + "SrcIPs": [ + "100.83.200.69", + "fd7a:115c:a1e0::c537:c845" + ], "DstPorts": [ { "IP": "100.108.74.26", @@ -402,255 +190,16 @@ } ] } - ], - "packet_filter_matches": [ - { - "IPProto": [6, 17, 1, 58], - "Srcs": ["100.83.200.69/32", "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 - } - }, - { - "Net": "100.108.74.26/32", - "Ports": { - "First": 80, - "Last": 80 - } - } - ], - "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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": null } } } diff --git a/hscontrol/policy/v2/testdata/grant_results/GRANT-P09_2B_NAIVE.hujson b/hscontrol/policy/v2/testdata/grant_results/GRANT-P09_2B_NAIVE.hujson index a04860b26..f12012242 100644 --- a/hscontrol/policy/v2/testdata/grant_results/GRANT-P09_2B_NAIVE.hujson +++ b/hscontrol/policy/v2/testdata/grant_results/GRANT-P09_2B_NAIVE.hujson @@ -5,23 +5,37 @@ // Expected: Rules on tagged-server { "test_id": "GRANT-P09_2B_NAIVE", - "timestamp": "2026-02-23T01:01:12Z", - "propagation_wait_seconds": 15, "input": { - "policy_file": "/home/kradalby/acl-explore/grant_policies/grant_p09_2b_naive.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -30,102 +44,91 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "grants": [ { - "src": ["tag:client"], - "dst": ["tag:server", "webserver"], - "ip": ["22", "80"] + "src": [ + "tag:client" + ], + "dst": [ + "tag:server", + "webserver" + ], + "ip": [ + "22", + "80" + ] } ] }, - "grants_section": [ - { - "src": ["tag:client"], - "dst": ["tag:server", "webserver"], - "ip": ["22", "80"] - } - ], - "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"], + "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"], + "tags": [ + "tag:router" + ], "ipv4": "100.92.142.61", - "ipv6": "fd7a:115c:a1e0::3e37:8e3d", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] + "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"], + "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"], + "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"], + "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" @@ -134,238 +137,24 @@ }, "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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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.83.200.69", "fd7a:115c:a1e0::c537:c845"], + "SrcIPs": [ + "100.83.200.69", + "fd7a:115c:a1e0::c537:c845" + ], "DstPorts": [ { "IP": "100.108.74.26", @@ -411,276 +200,16 @@ } ] } - ], - "packet_filter_matches": [ - { - "IPProto": [6, 17, 1, 58], - "Srcs": ["100.83.200.69/32", "fd7a:115c:a1e0::c537:c845/128"], - "SrcCaps": null, - "Dsts": [ - { - "Net": "100.108.74.26/32", - "Ports": { - "First": 22, - "Last": 22 - } - }, - { - "Net": "100.108.74.26/32", - "Ports": { - "First": 80, - "Last": 80 - } - }, - { - "Net": "fd7a:115c:a1e0::b901:4a87/128", - "Ports": { - "First": 22, - "Last": 22 - } - }, - { - "Net": "fd7a:115c:a1e0::b901:4a87/128", - "Ports": { - "First": 80, - "Last": 80 - } - }, - { - "Net": "100.108.74.26/32", - "Ports": { - "First": 22, - "Last": 22 - } - }, - { - "Net": "100.108.74.26/32", - "Ports": { - "First": 80, - "Last": 80 - } - } - ], - "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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": null } } } diff --git a/hscontrol/policy/v2/testdata/grant_results/GRANT-P09_2C.hujson b/hscontrol/policy/v2/testdata/grant_results/GRANT-P09_2C.hujson index d3b85e0e1..506760673 100644 --- a/hscontrol/policy/v2/testdata/grant_results/GRANT-P09_2C.hujson +++ b/hscontrol/policy/v2/testdata/grant_results/GRANT-P09_2C.hujson @@ -5,23 +5,37 @@ // Expected: Rules on tagged-prod, tagged-server { "test_id": "GRANT-P09_2C", - "timestamp": "2026-02-23T01:01:29Z", - "propagation_wait_seconds": 15, "input": { - "policy_file": "/home/kradalby/acl-explore/grant_policies/grant_p09_2c.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -30,102 +44,91 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "grants": [ { - "src": ["tag:client"], - "dst": ["webserver", "prodbox"], - "ip": ["22", "5432"] + "src": [ + "tag:client" + ], + "dst": [ + "webserver", + "prodbox" + ], + "ip": [ + "22", + "5432" + ] } ] }, - "grants_section": [ - { - "src": ["tag:client"], - "dst": ["webserver", "prodbox"], - "ip": ["22", "5432"] - } - ], - "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"], + "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"], + "tags": [ + "tag:router" + ], "ipv4": "100.92.142.61", - "ipv6": "fd7a:115c:a1e0::3e37:8e3d", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] + "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"], + "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"], + "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"], + "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" @@ -134,238 +137,21 @@ }, "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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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": { - "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/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 - } - } + "packet_filter_rules": 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.83.200.69", "fd7a:115c:a1e0::c537:c845"], + "SrcIPs": [ + "100.83.200.69", + "fd7a:115c:a1e0::c537:c845" + ], "DstPorts": [ { "IP": "100.103.8.15", @@ -383,122 +169,15 @@ } ] } - ], - "packet_filter_matches": [ - { - "IPProto": [6, 17, 1, 58], - "Srcs": ["100.83.200.69/32", "fd7a:115c:a1e0::c537:c845/128"], - "SrcCaps": null, - "Dsts": [ - { - "Net": "100.103.8.15/32", - "Ports": { - "First": 22, - "Last": 22 - } - }, - { - "Net": "100.103.8.15/32", - "Ports": { - "First": 5432, - "Last": 5432 - } - } - ], - "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": { - "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.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.83.200.69", "fd7a:115c:a1e0::c537:c845"], + "SrcIPs": [ + "100.83.200.69", + "fd7a:115c:a1e0::c537:c845" + ], "DstPorts": [ { "IP": "100.108.74.26", @@ -516,248 +195,16 @@ } ] } - ], - "packet_filter_matches": [ - { - "IPProto": [6, 17, 1, 58], - "Srcs": ["100.83.200.69/32", "fd7a:115c:a1e0::c537:c845/128"], - "SrcCaps": null, - "Dsts": [ - { - "Net": "100.108.74.26/32", - "Ports": { - "First": 22, - "Last": 22 - } - }, - { - "Net": "100.108.74.26/32", - "Ports": { - "First": 5432, - "Last": 5432 - } - } - ], - "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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": null } } } diff --git a/hscontrol/policy/v2/testdata/grant_results/GRANT-P09_3A.hujson b/hscontrol/policy/v2/testdata/grant_results/GRANT-P09_3A.hujson index ee98c3e7a..5130dff4b 100644 --- a/hscontrol/policy/v2/testdata/grant_results/GRANT-P09_3A.hujson +++ b/hscontrol/policy/v2/testdata/grant_results/GRANT-P09_3A.hujson @@ -5,23 +5,37 @@ // Expected: Rules on tagged-client { "test_id": "GRANT-P09_3A", - "timestamp": "2026-02-23T01:01:45Z", - "propagation_wait_seconds": 15, "input": { - "policy_file": "/home/kradalby/acl-explore/grant_policies/grant_p09_3a.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -30,102 +44,90 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "grants": [ { - "src": ["tag:server", "webserver"], - "dst": ["tag:client"], - "ip": ["22"] + "src": [ + "tag:server", + "webserver" + ], + "dst": [ + "tag:client" + ], + "ip": [ + "22" + ] } ] }, - "grants_section": [ - { - "src": ["tag:server", "webserver"], - "dst": ["tag:client"], - "ip": ["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"], + "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"], + "tags": [ + "tag:router" + ], "ipv4": "100.92.142.61", - "ipv6": "fd7a:115c:a1e0::3e37:8e3d", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] + "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"], + "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"], + "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"], + "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" @@ -134,103 +136,18 @@ }, "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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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.108.74.26", "fd7a:115c:a1e0::b901:4a87"], + "SrcIPs": [ + "100.108.74.26", + "fd7a:115c:a1e0::b901:4a87" + ], "DstPorts": [ { "IP": "100.83.200.69", @@ -248,383 +165,22 @@ } ] } - ], - "packet_filter_matches": [ - { - "IPProto": [6, 17, 1, 58], - "Srcs": ["100.108.74.26/32", "fd7a:115c:a1e0::b901:4a87/128"], - "SrcCaps": null, - "Dsts": [ - { - "Net": "100.83.200.69/32", - "Ports": { - "First": 22, - "Last": 22 - } - }, - { - "Net": "fd7a:115c:a1e0::c537:c845/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-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 - } - } + "packet_filter_rules": 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": { - "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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": null } } } diff --git a/hscontrol/policy/v2/testdata/grant_results/GRANT-P09_3B.hujson b/hscontrol/policy/v2/testdata/grant_results/GRANT-P09_3B.hujson index f45537d98..0e7ffb587 100644 --- a/hscontrol/policy/v2/testdata/grant_results/GRANT-P09_3B.hujson +++ b/hscontrol/policy/v2/testdata/grant_results/GRANT-P09_3B.hujson @@ -5,23 +5,37 @@ // Expected: Rules on tagged-server { "test_id": "GRANT-P09_3B", - "timestamp": "2026-02-23T01:02:02Z", - "propagation_wait_seconds": 15, "input": { - "policy_file": "/home/kradalby/acl-explore/grant_policies/grant_p09_3b.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -30,102 +44,91 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "grants": [ { - "src": ["autogroup:member", "kratail2tid@passkey", "group:admins"], - "dst": ["tag:server"], - "ip": ["22"] + "src": [ + "autogroup:member", + "kratail2tid@passkey", + "group:admins" + ], + "dst": [ + "tag:server" + ], + "ip": [ + "22" + ] } ] }, - "grants_section": [ - { - "src": ["autogroup:member", "kratail2tid@passkey", "group:admins"], - "dst": ["tag:server"], - "ip": ["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"], + "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"], + "tags": [ + "tag:router" + ], "ipv4": "100.92.142.61", - "ipv6": "fd7a:115c:a1e0::3e37:8e3d", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] + "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"], + "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"], + "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"], + "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" @@ -134,190 +137,18 @@ }, "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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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": [ @@ -345,480 +176,16 @@ } ] } - ], - "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": 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": { - "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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": null } } } diff --git a/hscontrol/policy/v2/testdata/grant_results/GRANT-P09_3C.hujson b/hscontrol/policy/v2/testdata/grant_results/GRANT-P09_3C.hujson index 20b96ae75..7ed092aed 100644 --- a/hscontrol/policy/v2/testdata/grant_results/GRANT-P09_3C.hujson +++ b/hscontrol/policy/v2/testdata/grant_results/GRANT-P09_3C.hujson @@ -5,23 +5,37 @@ // Expected: Rules on tagged-server { "test_id": "GRANT-P09_3C", - "timestamp": "2026-02-23T01:02:18Z", - "propagation_wait_seconds": 15, "input": { - "policy_file": "/home/kradalby/acl-explore/grant_policies/grant_p09_3c.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -30,102 +44,90 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "grants": [ { - "src": ["tag:client"], - "dst": ["tag:server", "webserver"], - "ip": ["22"] + "src": [ + "tag:client" + ], + "dst": [ + "tag:server", + "webserver" + ], + "ip": [ + "22" + ] } ] }, - "grants_section": [ - { - "src": ["tag:client"], - "dst": ["tag:server", "webserver"], - "ip": ["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"], + "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"], + "tags": [ + "tag:router" + ], "ipv4": "100.92.142.61", - "ipv6": "fd7a:115c:a1e0::3e37:8e3d", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] + "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"], + "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"], + "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"], + "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" @@ -134,238 +136,24 @@ }, "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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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.83.200.69", "fd7a:115c:a1e0::c537:c845"], + "SrcIPs": [ + "100.83.200.69", + "fd7a:115c:a1e0::c537:c845" + ], "DstPorts": [ { "IP": "100.108.74.26", @@ -390,255 +178,16 @@ } ] } - ], - "packet_filter_matches": [ - { - "IPProto": [6, 17, 1, 58], - "Srcs": ["100.83.200.69/32", "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 - } - }, - { - "Net": "100.108.74.26/32", - "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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": null } } } diff --git a/hscontrol/policy/v2/testdata/grant_results/GRANT-P09_4A.hujson b/hscontrol/policy/v2/testdata/grant_results/GRANT-P09_4A.hujson index fc34e880f..e8856d4af 100644 --- a/hscontrol/policy/v2/testdata/grant_results/GRANT-P09_4A.hujson +++ b/hscontrol/policy/v2/testdata/grant_results/GRANT-P09_4A.hujson @@ -5,23 +5,37 @@ // Expected: Rules on tagged-server { "test_id": "GRANT-P09_4A", - "timestamp": "2026-02-23T01:02:35Z", - "propagation_wait_seconds": 15, "input": { - "policy_file": "/home/kradalby/acl-explore/grant_policies/grant_p09_4a.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -30,102 +44,89 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "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": ["22"] + "src": [ + "autogroup:member" + ], + "dst": [ + "tag:server" + ], + "ip": [ + "22" + ] } ] }, - "grants_section": [ - { - "src": ["autogroup:member"], - "dst": ["tag:server"], - "ip": ["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"], + "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"], + "tags": [ + "tag:router" + ], "ipv4": "100.92.142.61", - "ipv6": "fd7a:115c:a1e0::3e37:8e3d", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] + "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"], + "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"], + "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"], + "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" @@ -134,190 +135,18 @@ }, "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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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": [ @@ -345,480 +174,16 @@ } ] } - ], - "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": 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": { - "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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": null } } } diff --git a/hscontrol/policy/v2/testdata/grant_results/GRANT-P09_4B.hujson b/hscontrol/policy/v2/testdata/grant_results/GRANT-P09_4B.hujson index 332bd490e..25fdecbc6 100644 --- a/hscontrol/policy/v2/testdata/grant_results/GRANT-P09_4B.hujson +++ b/hscontrol/policy/v2/testdata/grant_results/GRANT-P09_4B.hujson @@ -5,23 +5,37 @@ // Expected: Rules on user1 { "test_id": "GRANT-P09_4B", - "timestamp": "2026-02-23T01:02:52Z", - "propagation_wait_seconds": 15, "input": { - "policy_file": "/home/kradalby/acl-explore/grant_policies/grant_p09_4b.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -30,102 +44,89 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "grants": [ { - "src": ["autogroup:tagged"], - "dst": ["kratail2tid@passkey"], - "ip": ["22"] + "src": [ + "autogroup:tagged" + ], + "dst": [ + "kratail2tid@passkey" + ], + "ip": [ + "22" + ] } ] }, - "grants_section": [ - { - "src": ["autogroup:tagged"], - "dst": ["kratail2tid@passkey"], - "ip": ["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"], + "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"], + "tags": [ + "tag:router" + ], "ipv4": "100.92.142.61", - "ipv6": "fd7a:115c:a1e0::3e37:8e3d", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] + "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"], + "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"], + "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"], + "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" @@ -134,550 +135,27 @@ }, "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": { - "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 - } - } - } + "packet_filter_rules": 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": { - "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 - } - } - } + "packet_filter_rules": 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": { - "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 - } - } - } + "packet_filter_rules": 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": { - "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 - } - } - } + "packet_filter_rules": 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": { - "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 - } - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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": [ @@ -709,304 +187,7 @@ } ] } - ], - "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": [ - { - "Net": "100.90.199.68/32", - "Ports": { - "First": 22, - "Last": 22 - } - }, - { - "Net": "fd7a:115c:a1e0::2d01:c747/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/user1/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/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"], - "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": 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": { - "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/user1/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/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 - } - } + ] } } } diff --git a/hscontrol/policy/v2/testdata/grant_results/GRANT-P09_4C.hujson b/hscontrol/policy/v2/testdata/grant_results/GRANT-P09_4C.hujson index 4c0e12c40..30bebe07e 100644 --- a/hscontrol/policy/v2/testdata/grant_results/GRANT-P09_4C.hujson +++ b/hscontrol/policy/v2/testdata/grant_results/GRANT-P09_4C.hujson @@ -5,23 +5,37 @@ // Expected: Rules on tagged-server { "test_id": "GRANT-P09_4C", - "timestamp": "2026-02-23T01:03:09Z", - "propagation_wait_seconds": 15, "input": { - "policy_file": "/home/kradalby/acl-explore/grant_policies/grant_p09_4c.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -30,102 +44,89 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "grants": [ { - "src": ["group:admins"], - "dst": ["webserver"], - "ip": ["22"] + "src": [ + "group:admins" + ], + "dst": [ + "webserver" + ], + "ip": [ + "22" + ] } ] }, - "grants_section": [ - { - "src": ["group:admins"], - "dst": ["webserver"], - "ip": ["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"], + "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"], + "tags": [ + "tag:router" + ], "ipv4": "100.92.142.61", - "ipv6": "fd7a:115c:a1e0::3e37:8e3d", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] + "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"], + "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"], + "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"], + "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" @@ -134,193 +135,24 @@ }, "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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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"], + "SrcIPs": [ + "100.90.199.68", + "fd7a:115c:a1e0::2d01:c747" + ], "DstPorts": [ { "IP": "100.108.74.26", @@ -331,286 +163,16 @@ } ] } - ], - "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.108.74.26/32", - "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": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": null } } } diff --git a/hscontrol/policy/v2/testdata/grant_results/GRANT-P09_4D.hujson b/hscontrol/policy/v2/testdata/grant_results/GRANT-P09_4D.hujson index f2e2a26d0..8f423ba41 100644 --- a/hscontrol/policy/v2/testdata/grant_results/GRANT-P09_4D.hujson +++ b/hscontrol/policy/v2/testdata/grant_results/GRANT-P09_4D.hujson @@ -5,23 +5,37 @@ // Expected: Rules on user1 { "test_id": "GRANT-P09_4D", - "timestamp": "2026-02-23T01:03:26Z", - "propagation_wait_seconds": 15, "input": { - "policy_file": "/home/kradalby/acl-explore/grant_policies/grant_p09_4d.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -30,102 +44,89 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "grants": [ { - "src": ["webserver"], - "dst": ["group:admins"], - "ip": ["22"] + "src": [ + "webserver" + ], + "dst": [ + "group:admins" + ], + "ip": [ + "22" + ] } ] }, - "grants_section": [ - { - "src": ["webserver"], - "dst": ["group:admins"], - "ip": ["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"], + "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"], + "tags": [ + "tag:router" + ], "ipv4": "100.92.142.61", - "ipv6": "fd7a:115c:a1e0::3e37:8e3d", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] + "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"], + "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"], + "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"], + "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" @@ -134,373 +135,32 @@ }, "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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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": { - "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 - } - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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.108.74.26"], + "SrcIPs": [ + "100.108.74.26" + ], "DstPorts": [ { "IP": "100.90.199.68", @@ -518,113 +178,7 @@ } ] } - ], - "packet_filter_matches": [ - { - "IPProto": [6, 17, 1, 58], - "Srcs": ["100.108.74.26/32"], - "SrcCaps": null, - "Dsts": [ - { - "Net": "100.90.199.68/32", - "Ports": { - "First": 22, - "Last": 22 - } - }, - { - "Net": "fd7a:115c:a1e0::2d01:c747/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/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 - } - } + ] } } } diff --git a/hscontrol/policy/v2/testdata/grant_results/GRANT-P09_4E.hujson b/hscontrol/policy/v2/testdata/grant_results/GRANT-P09_4E.hujson index 0d27813d9..12d89306b 100644 --- a/hscontrol/policy/v2/testdata/grant_results/GRANT-P09_4E.hujson +++ b/hscontrol/policy/v2/testdata/grant_results/GRANT-P09_4E.hujson @@ -5,23 +5,37 @@ // Expected: Rules on user-kris, user-mon, user1 { "test_id": "GRANT-P09_4E", - "timestamp": "2026-02-23T01:03:42Z", - "propagation_wait_seconds": 15, "input": { - "policy_file": "/home/kradalby/acl-explore/grant_policies/grant_p09_4e.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -30,102 +44,89 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "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": ["*"] + "src": [ + "autogroup:member" + ], + "dst": [ + "autogroup:self" + ], + "ip": [ + "*" + ] } ] }, - "grants_section": [ - { - "src": ["autogroup:member"], - "dst": ["autogroup:self"], - "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"], + "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"], + "tags": [ + "tag:router" + ], "ipv4": "100.92.142.61", - "ipv6": "fd7a:115c:a1e0::3e37:8e3d", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] + "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"], + "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"], + "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"], + "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" @@ -134,238 +135,27 @@ }, "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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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"], + "SrcIPs": [ + "100.110.121.96", + "fd7a:115c:a1e0::1737:7960" + ], "DstPorts": [ { "IP": "100.110.121.96", @@ -383,77 +173,15 @@ } ] } - ], - "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": [] - } - ], - "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"], + "SrcIPs": [ + "100.103.90.82", + "fd7a:115c:a1e0::9e37:5a52" + ], "DstPorts": [ { "IP": "100.103.90.82", @@ -471,77 +199,15 @@ } ] } - ], - "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": [] - } - ], - "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"], + "SrcIPs": [ + "100.90.199.68", + "fd7a:115c:a1e0::2d01:c747" + ], "DstPorts": [ { "IP": "100.90.199.68", @@ -559,68 +225,7 @@ } ] } - ], - "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": [] - } - ], - "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 - } - } + ] } } } diff --git a/hscontrol/policy/v2/testdata/grant_results/GRANT-P09_4F.hujson b/hscontrol/policy/v2/testdata/grant_results/GRANT-P09_4F.hujson index 3be008efe..3df540c37 100644 --- a/hscontrol/policy/v2/testdata/grant_results/GRANT-P09_4F.hujson +++ b/hscontrol/policy/v2/testdata/grant_results/GRANT-P09_4F.hujson @@ -5,23 +5,37 @@ // Expected: Rules on tagged-server { "test_id": "GRANT-P09_4F", - "timestamp": "2026-02-23T01:03:58Z", - "propagation_wait_seconds": 15, "input": { - "policy_file": "/home/kradalby/acl-explore/grant_policies/grant_p09_4f.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -30,102 +44,89 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "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"], - "ip": ["22"] + "src": [ + "100.90.199.68" + ], + "dst": [ + "tag:server" + ], + "ip": [ + "22" + ] } ] }, - "grants_section": [ - { - "src": ["100.90.199.68"], - "dst": ["tag:server"], - "ip": ["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"], + "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"], + "tags": [ + "tag:router" + ], "ipv4": "100.92.142.61", - "ipv6": "fd7a:115c:a1e0::3e37:8e3d", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] + "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"], + "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"], + "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"], + "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" @@ -134,193 +135,23 @@ }, "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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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"], + "SrcIPs": [ + "100.90.199.68" + ], "DstPorts": [ { "IP": "100.108.74.26", @@ -338,293 +169,16 @@ } ] } - ], - "packet_filter_matches": [ - { - "IPProto": [6, 17, 1, 58], - "Srcs": ["100.90.199.68/32"], - "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": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": null } } } diff --git a/hscontrol/policy/v2/testdata/grant_results/GRANT-P09_4G.hujson b/hscontrol/policy/v2/testdata/grant_results/GRANT-P09_4G.hujson index 3a39ebaf8..cb1a3e626 100644 --- a/hscontrol/policy/v2/testdata/grant_results/GRANT-P09_4G.hujson +++ b/hscontrol/policy/v2/testdata/grant_results/GRANT-P09_4G.hujson @@ -5,23 +5,37 @@ // Expected: Rules on tagged-server { "test_id": "GRANT-P09_4G", - "timestamp": "2026-02-23T01:04:15Z", - "propagation_wait_seconds": 15, "input": { - "policy_file": "/home/kradalby/acl-explore/grant_policies/grant_p09_4g.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -30,102 +44,89 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "grants": [ { - "src": ["tag:client"], - "dst": ["100.108.74.26"], - "ip": ["22"] + "src": [ + "tag:client" + ], + "dst": [ + "100.108.74.26" + ], + "ip": [ + "22" + ] } ] }, - "grants_section": [ - { - "src": ["tag:client"], - "dst": ["100.108.74.26"], - "ip": ["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"], + "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"], + "tags": [ + "tag:router" + ], "ipv4": "100.92.142.61", - "ipv6": "fd7a:115c:a1e0::3e37:8e3d", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] + "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"], + "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"], + "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"], + "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" @@ -134,238 +135,24 @@ }, "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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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.83.200.69", "fd7a:115c:a1e0::c537:c845"], + "SrcIPs": [ + "100.83.200.69", + "fd7a:115c:a1e0::c537:c845" + ], "DstPorts": [ { "IP": "100.108.74.26", @@ -376,241 +163,16 @@ } ] } - ], - "packet_filter_matches": [ - { - "IPProto": [6, 17, 1, 58], - "Srcs": ["100.83.200.69/32", "fd7a:115c:a1e0::c537:c845/128"], - "SrcCaps": null, - "Dsts": [ - { - "Net": "100.108.74.26/32", - "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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": null } } } diff --git a/hscontrol/policy/v2/testdata/grant_results/GRANT-P09_5A.hujson b/hscontrol/policy/v2/testdata/grant_results/GRANT-P09_5A.hujson index ee9f1fa2a..1ee58c932 100644 --- a/hscontrol/policy/v2/testdata/grant_results/GRANT-P09_5A.hujson +++ b/hscontrol/policy/v2/testdata/grant_results/GRANT-P09_5A.hujson @@ -5,23 +5,37 @@ // Expected: Rules on tagged-server { "test_id": "GRANT-P09_5A", - "timestamp": "2026-02-23T01:04:32Z", - "propagation_wait_seconds": 15, "input": { - "policy_file": "/home/kradalby/acl-explore/grant_policies/grant_p09_5a.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -30,102 +44,90 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "grants": [ { - "src": ["tag:client", "tag:prod"], - "dst": ["tag:server"], - "ip": ["22"] + "src": [ + "tag:client", + "tag:prod" + ], + "dst": [ + "tag:server" + ], + "ip": [ + "22" + ] } ] }, - "grants_section": [ - { - "src": ["tag:client", "tag:prod"], - "dst": ["tag:server"], - "ip": ["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"], + "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"], + "tags": [ + "tag:router" + ], "ipv4": "100.92.142.61", - "ipv6": "fd7a:115c:a1e0::3e37:8e3d", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] + "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"], + "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"], + "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"], + "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" @@ -134,283 +136,26 @@ }, "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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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.83.200.69", "fd7a:115c:a1e0::5b37:80f", "fd7a:115c:a1e0::c537:c845"], + "SrcIPs": [ + "100.103.8.15", + "100.83.200.69", + "fd7a:115c:a1e0::5b37:80f", + "fd7a:115c:a1e0::c537:c845" + ], "DstPorts": [ { "IP": "100.108.74.26", @@ -428,298 +173,16 @@ } ] } - ], - "packet_filter_matches": [ - { - "IPProto": [6, 17, 1, 58], - "Srcs": [ - "100.103.8.15/32", - "100.83.200.69/32", - "fd7a:115c:a1e0::5b37:80f/128", - "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": { - "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": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": null } } } diff --git a/hscontrol/policy/v2/testdata/grant_results/GRANT-P09_5B.hujson b/hscontrol/policy/v2/testdata/grant_results/GRANT-P09_5B.hujson index 972d5d3f5..fc58a5667 100644 --- a/hscontrol/policy/v2/testdata/grant_results/GRANT-P09_5B.hujson +++ b/hscontrol/policy/v2/testdata/grant_results/GRANT-P09_5B.hujson @@ -5,23 +5,37 @@ // Expected: Rules on tagged-server { "test_id": "GRANT-P09_5B", - "timestamp": "2026-02-23T01:04:49Z", - "propagation_wait_seconds": 15, "input": { - "policy_file": "/home/kradalby/acl-explore/grant_policies/grant_p09_5b.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -30,102 +44,90 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "grants": [ { - "src": ["tag:prod", "tag:client"], - "dst": ["tag:server"], - "ip": ["22"] + "src": [ + "tag:prod", + "tag:client" + ], + "dst": [ + "tag:server" + ], + "ip": [ + "22" + ] } ] }, - "grants_section": [ - { - "src": ["tag:prod", "tag:client"], - "dst": ["tag:server"], - "ip": ["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"], + "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"], + "tags": [ + "tag:router" + ], "ipv4": "100.92.142.61", - "ipv6": "fd7a:115c:a1e0::3e37:8e3d", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] + "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"], + "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"], + "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"], + "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" @@ -134,283 +136,26 @@ }, "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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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.83.200.69", "fd7a:115c:a1e0::5b37:80f", "fd7a:115c:a1e0::c537:c845"], + "SrcIPs": [ + "100.103.8.15", + "100.83.200.69", + "fd7a:115c:a1e0::5b37:80f", + "fd7a:115c:a1e0::c537:c845" + ], "DstPorts": [ { "IP": "100.108.74.26", @@ -428,298 +173,16 @@ } ] } - ], - "packet_filter_matches": [ - { - "IPProto": [6, 17, 1, 58], - "Srcs": [ - "100.103.8.15/32", - "100.83.200.69/32", - "fd7a:115c:a1e0::5b37:80f/128", - "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": { - "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": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": null } } } diff --git a/hscontrol/policy/v2/testdata/grant_results/GRANT-P09_5C_NAIVE.hujson b/hscontrol/policy/v2/testdata/grant_results/GRANT-P09_5C_NAIVE.hujson index b77643a32..e073ad4e2 100644 --- a/hscontrol/policy/v2/testdata/grant_results/GRANT-P09_5C_NAIVE.hujson +++ b/hscontrol/policy/v2/testdata/grant_results/GRANT-P09_5C_NAIVE.hujson @@ -5,23 +5,37 @@ // Expected: Rules on tagged-prod, tagged-server { "test_id": "GRANT-P09_5C_NAIVE", - "timestamp": "2026-02-23T01:05:06Z", - "propagation_wait_seconds": 15, "input": { - "policy_file": "/home/kradalby/acl-explore/grant_policies/grant_p09_5c_naive.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -30,102 +44,91 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "grants": [ { - "src": ["tag:client"], - "dst": ["tag:server", "tag:prod"], - "ip": ["22", "80"] + "src": [ + "tag:client" + ], + "dst": [ + "tag:server", + "tag:prod" + ], + "ip": [ + "22", + "80" + ] } ] }, - "grants_section": [ - { - "src": ["tag:client"], - "dst": ["tag:server", "tag:prod"], - "ip": ["22", "80"] - } - ], - "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"], + "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"], + "tags": [ + "tag:router" + ], "ipv4": "100.92.142.61", - "ipv6": "fd7a:115c:a1e0::3e37:8e3d", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] + "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"], + "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"], + "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"], + "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" @@ -134,238 +137,21 @@ }, "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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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": { - "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/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 - } - } + "packet_filter_rules": 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.83.200.69", "fd7a:115c:a1e0::c537:c845"], + "SrcIPs": [ + "100.83.200.69", + "fd7a:115c:a1e0::c537:c845" + ], "DstPorts": [ { "IP": "100.103.8.15", @@ -397,136 +183,15 @@ } ] } - ], - "packet_filter_matches": [ - { - "IPProto": [6, 17, 1, 58], - "Srcs": ["100.83.200.69/32", "fd7a:115c:a1e0::c537:c845/128"], - "SrcCaps": null, - "Dsts": [ - { - "Net": "100.103.8.15/32", - "Ports": { - "First": 22, - "Last": 22 - } - }, - { - "Net": "100.103.8.15/32", - "Ports": { - "First": 80, - "Last": 80 - } - }, - { - "Net": "fd7a:115c:a1e0::5b37:80f/128", - "Ports": { - "First": 22, - "Last": 22 - } - }, - { - "Net": "fd7a:115c:a1e0::5b37:80f/128", - "Ports": { - "First": 80, - "Last": 80 - } - } - ], - "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": { - "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.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.83.200.69", "fd7a:115c:a1e0::c537:c845"], + "SrcIPs": [ + "100.83.200.69", + "fd7a:115c:a1e0::c537:c845" + ], "DstPorts": [ { "IP": "100.108.74.26", @@ -558,262 +223,16 @@ } ] } - ], - "packet_filter_matches": [ - { - "IPProto": [6, 17, 1, 58], - "Srcs": ["100.83.200.69/32", "fd7a:115c:a1e0::c537:c845/128"], - "SrcCaps": null, - "Dsts": [ - { - "Net": "100.108.74.26/32", - "Ports": { - "First": 22, - "Last": 22 - } - }, - { - "Net": "100.108.74.26/32", - "Ports": { - "First": 80, - "Last": 80 - } - }, - { - "Net": "fd7a:115c:a1e0::b901:4a87/128", - "Ports": { - "First": 22, - "Last": 22 - } - }, - { - "Net": "fd7a:115c:a1e0::b901:4a87/128", - "Ports": { - "First": 80, - "Last": 80 - } - } - ], - "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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": null } } } diff --git a/hscontrol/policy/v2/testdata/grant_results/GRANT-P09_6A.hujson b/hscontrol/policy/v2/testdata/grant_results/GRANT-P09_6A.hujson index 6837eface..817eb3828 100644 --- a/hscontrol/policy/v2/testdata/grant_results/GRANT-P09_6A.hujson +++ b/hscontrol/policy/v2/testdata/grant_results/GRANT-P09_6A.hujson @@ -5,23 +5,37 @@ // Expected: Rules on tagged-prod, tagged-server { "test_id": "GRANT-P09_6A", - "timestamp": "2026-02-23T01:05:22Z", - "propagation_wait_seconds": 15, "input": { - "policy_file": "/home/kradalby/acl-explore/grant_policies/grant_p09_6a.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -30,102 +44,91 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "grants": [ { - "src": ["*"], - "dst": ["webserver", "prodbox"], - "ip": ["22", "5432"] + "src": [ + "*" + ], + "dst": [ + "webserver", + "prodbox" + ], + "ip": [ + "22", + "5432" + ] } ] }, - "grants_section": [ - { - "src": ["*"], - "dst": ["webserver", "prodbox"], - "ip": ["22", "5432"] - } - ], - "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"], + "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"], + "tags": [ + "tag:router" + ], "ipv4": "100.92.142.61", - "ipv6": "fd7a:115c:a1e0::3e37:8e3d", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] + "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"], + "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"], + "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"], + "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" @@ -134,415 +137,15 @@ }, "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": { - "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/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 - } - } + "packet_filter_rules": 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": { - "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": 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 - } - } + "packet_filter_rules": 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": { - "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/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 - } - } + "packet_filter_rules": 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": [ @@ -568,406 +171,9 @@ } ] } - ], - "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": [ - { - "Net": "100.103.8.15/32", - "Ports": { - "First": 22, - "Last": 22 - } - }, - { - "Net": "100.103.8.15/32", - "Ports": { - "First": 5432, - "Last": 5432 - } - } - ], - "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": { - "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-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": { - "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.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": { - "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-prod/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-prod/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-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": [ @@ -993,805 +199,16 @@ } ] } - ], - "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": [ - { - "Net": "100.108.74.26/32", - "Ports": { - "First": 22, - "Last": 22 - } - }, - { - "Net": "100.108.74.26/32", - "Ports": { - "First": 5432, - "Last": 5432 - } - } - ], - "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": { - "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/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 - } - } + "packet_filter_rules": 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": { - "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/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 - } - } + "packet_filter_rules": 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": { - "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/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 - } - } + "packet_filter_rules": null } } } diff --git a/hscontrol/policy/v2/testdata/grant_results/GRANT-P09_6B.hujson b/hscontrol/policy/v2/testdata/grant_results/GRANT-P09_6B.hujson index 442e99fb4..707f10957 100644 --- a/hscontrol/policy/v2/testdata/grant_results/GRANT-P09_6B.hujson +++ b/hscontrol/policy/v2/testdata/grant_results/GRANT-P09_6B.hujson @@ -5,23 +5,37 @@ // Expected: No filter rules on any node { "test_id": "GRANT-P09_6B", - "timestamp": "2026-02-23T01:05:39Z", - "propagation_wait_seconds": 15, "input": { - "policy_file": "/home/kradalby/acl-explore/grant_policies/grant_p09_6b.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -30,102 +44,89 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "grants": [ { - "src": ["group:empty"], - "dst": ["tag:server"], - "ip": ["22"] + "src": [ + "group:empty" + ], + "dst": [ + "tag:server" + ], + "ip": [ + "22" + ] } ] }, - "grants_section": [ - { - "src": ["group:empty"], - "dst": ["tag:server"], - "ip": ["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"], + "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"], + "tags": [ + "tag:router" + ], "ipv4": "100.92.142.61", - "ipv6": "fd7a:115c:a1e0::3e37:8e3d", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] + "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"], + "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"], + "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"], + "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" @@ -134,364 +135,28 @@ }, "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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": null } } } diff --git a/hscontrol/policy/v2/testdata/grant_results/GRANT-P09_6C.hujson b/hscontrol/policy/v2/testdata/grant_results/GRANT-P09_6C.hujson index 7b7287acd..832bccbb3 100644 --- a/hscontrol/policy/v2/testdata/grant_results/GRANT-P09_6C.hujson +++ b/hscontrol/policy/v2/testdata/grant_results/GRANT-P09_6C.hujson @@ -5,23 +5,37 @@ // Expected: Rules on tagged-server { "test_id": "GRANT-P09_6C", - "timestamp": "2026-02-23T01:05:56Z", - "propagation_wait_seconds": 15, "input": { - "policy_file": "/home/kradalby/acl-explore/grant_policies/grant_p09_6c.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -30,102 +44,89 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "grants": [ { - "src": ["internal"], - "dst": ["tag:server"], - "ip": ["22"] + "src": [ + "internal" + ], + "dst": [ + "tag:server" + ], + "ip": [ + "22" + ] } ] }, - "grants_section": [ - { - "src": ["internal"], - "dst": ["tag:server"], - "ip": ["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"], + "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"], + "tags": [ + "tag:router" + ], "ipv4": "100.92.142.61", - "ipv6": "fd7a:115c:a1e0::3e37:8e3d", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] + "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"], + "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"], + "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"], + "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" @@ -134,238 +135,23 @@ }, "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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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.0.0.0/8"], + "SrcIPs": [ + "10.0.0.0/8" + ], "DstPorts": [ { "IP": "100.108.74.26", @@ -383,249 +169,16 @@ } ] } - ], - "packet_filter_matches": [ - { - "IPProto": [6, 17, 1, 58], - "Srcs": ["10.0.0.0/8"], - "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": { - "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": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": null } } } diff --git a/hscontrol/policy/v2/testdata/grant_results/GRANT-P09_6D.hujson b/hscontrol/policy/v2/testdata/grant_results/GRANT-P09_6D.hujson index 8647b546a..03e6d5c40 100644 --- a/hscontrol/policy/v2/testdata/grant_results/GRANT-P09_6D.hujson +++ b/hscontrol/policy/v2/testdata/grant_results/GRANT-P09_6D.hujson @@ -5,23 +5,37 @@ // Expected: Rules on subnet-router { "test_id": "GRANT-P09_6D", - "timestamp": "2026-02-23T01:06:13Z", - "propagation_wait_seconds": 15, "input": { - "policy_file": "/home/kradalby/acl-explore/grant_policies/grant_p09_6d.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -30,102 +44,89 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "grants": [ { - "src": ["tag:client"], - "dst": ["internal"], - "ip": ["22"] + "src": [ + "tag:client" + ], + "dst": [ + "internal" + ], + "ip": [ + "22" + ] } ] }, - "grants_section": [ - { - "src": ["tag:client"], - "dst": ["internal"], - "ip": ["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"], + "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"], + "tags": [ + "tag:router" + ], "ipv4": "100.92.142.61", - "ipv6": "fd7a:115c:a1e0::3e37:8e3d", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] + "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"], + "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"], + "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"], + "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" @@ -134,58 +135,15 @@ }, "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 - } - } + "packet_filter_rules": 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.83.200.69", "fd7a:115c:a1e0::c537:c845"], + "SrcIPs": [ + "100.83.200.69", + "fd7a:115c:a1e0::c537:c845" + ], "DstPorts": [ { "IP": "10.0.0.0/8", @@ -196,422 +154,25 @@ } ] } - ], - "packet_filter_matches": [ - { - "IPProto": [6, 17, 1, 58], - "Srcs": ["100.83.200.69/32", "fd7a:115c:a1e0::c537:c845/128"], - "SrcCaps": null, - "Dsts": [ - { - "Net": "10.0.0.0/8", - "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/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": { - "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": 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": { - "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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": null } } } diff --git a/hscontrol/policy/v2/testdata/grant_results/GRANT-P09_7A.hujson b/hscontrol/policy/v2/testdata/grant_results/GRANT-P09_7A.hujson index 3ee575f45..a7fda3da8 100644 --- a/hscontrol/policy/v2/testdata/grant_results/GRANT-P09_7A.hujson +++ b/hscontrol/policy/v2/testdata/grant_results/GRANT-P09_7A.hujson @@ -5,23 +5,37 @@ // Expected: Rules on tagged-server { "test_id": "GRANT-P09_7A", - "timestamp": "2026-02-23T01:06:30Z", - "propagation_wait_seconds": 15, "input": { - "policy_file": "/home/kradalby/acl-explore/grant_policies/grant_p09_7a.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -30,9 +44,15 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "grants": [ @@ -46,102 +66,73 @@ "webserver", "100.90.199.68" ], - "dst": ["tag:server"], - "ip": ["22"] + "dst": [ + "tag:server" + ], + "ip": [ + "22" + ] } ] }, - "grants_section": [ - { - "src": [ - "*", - "autogroup:member", - "autogroup:tagged", - "group:admins", - "tag:client", - "webserver", - "100.90.199.68" - ], - "dst": ["tag:server"], - "ip": ["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"], + "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"], + "tags": [ + "tag:router" + ], "ipv4": "100.92.142.61", - "ipv6": "fd7a:115c:a1e0::3e37:8e3d", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] + "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"], + "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"], + "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"], + "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" @@ -150,370 +141,18 @@ }, "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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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": [ @@ -555,686 +194,16 @@ } ] } - ], - "packet_filter_matches": [ - { - "IPProto": [6, 17, 1, 58], - "Srcs": [ - "10.33.0.0/16", - "100.103.8.15/32", - "100.103.90.82/32", - "100.108.74.26/32", - "100.110.121.96/32", - "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", - "100.83.200.69/32", - "100.85.66.106/32", - "100.90.199.68/32", - "100.92.142.61/32", - "fd7a:115c:a1e0::/48", - "fd7a:115c:a1e0::1737:7960/128", - "fd7a:115c:a1e0::2d01:c747/128", - "fd7a:115c:a1e0::3e37:8e3d/128", - "fd7a:115c:a1e0::5b37:80f/128", - "fd7a:115c:a1e0::7c37:426a/128", - "fd7a:115c:a1e0::9e37:5a52/128", - "fd7a:115c:a1e0::b901:4a87/128", - "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": { - "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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": null } } } diff --git a/hscontrol/policy/v2/testdata/grant_results/GRANT-P09_7B_NAIVE.hujson b/hscontrol/policy/v2/testdata/grant_results/GRANT-P09_7B_NAIVE.hujson index c1adef93c..a9c6954df 100644 --- a/hscontrol/policy/v2/testdata/grant_results/GRANT-P09_7B_NAIVE.hujson +++ b/hscontrol/policy/v2/testdata/grant_results/GRANT-P09_7B_NAIVE.hujson @@ -5,23 +5,37 @@ // Expected: Rules on tagged-prod, tagged-server, user1 { "test_id": "GRANT-P09_7B_NAIVE", - "timestamp": "2026-02-23T01:06:47Z", - "propagation_wait_seconds": 15, "input": { - "policy_file": "/home/kradalby/acl-explore/grant_policies/grant_p09_7b_naive.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -30,14 +44,22 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "grants": [ { - "src": ["tag:client"], + "src": [ + "tag:client" + ], "dst": [ "tag:server", "tag:prod", @@ -47,101 +69,76 @@ "kratail2tid@passkey", "100.108.74.26" ], - "ip": ["22", "5432", "80", "443", "8080", "3000", "9000"] + "ip": [ + "22", + "5432", + "80", + "443", + "8080", + "3000", + "9000" + ] } ] }, - "grants_section": [ - { - "src": ["tag:client"], - "dst": [ - "tag:server", - "tag:prod", - "webserver", - "prodbox", - "group:admins", - "kratail2tid@passkey", - "100.108.74.26" - ], - "ip": ["22", "5432", "80", "443", "8080", "3000", "9000"] - } - ], - "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"], + "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"], + "tags": [ + "tag:router" + ], "ipv4": "100.92.142.61", - "ipv6": "fd7a:115c:a1e0::3e37:8e3d", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] + "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"], + "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"], + "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"], + "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" @@ -150,283 +147,21 @@ }, "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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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": { - "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/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": { - "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 - } - } - } + "packet_filter_rules": 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.83.200.69", "fd7a:115c:a1e0::c537:c845"], + "SrcIPs": [ + "100.83.200.69", + "fd7a:115c:a1e0::c537:c845" + ], "DstPorts": [ { "IP": "100.103.8.15", @@ -577,255 +312,15 @@ } ] } - ], - "packet_filter_matches": [ - { - "IPProto": [6, 17, 1, 58], - "Srcs": ["100.83.200.69/32", "fd7a:115c:a1e0::c537:c845/128"], - "SrcCaps": null, - "Dsts": [ - { - "Net": "100.103.8.15/32", - "Ports": { - "First": 22, - "Last": 22 - } - }, - { - "Net": "100.103.8.15/32", - "Ports": { - "First": 5432, - "Last": 5432 - } - }, - { - "Net": "100.103.8.15/32", - "Ports": { - "First": 80, - "Last": 80 - } - }, - { - "Net": "100.103.8.15/32", - "Ports": { - "First": 443, - "Last": 443 - } - }, - { - "Net": "100.103.8.15/32", - "Ports": { - "First": 8080, - "Last": 8080 - } - }, - { - "Net": "100.103.8.15/32", - "Ports": { - "First": 3000, - "Last": 3000 - } - }, - { - "Net": "100.103.8.15/32", - "Ports": { - "First": 9000, - "Last": 9000 - } - }, - { - "Net": "fd7a:115c:a1e0::5b37:80f/128", - "Ports": { - "First": 22, - "Last": 22 - } - }, - { - "Net": "fd7a:115c:a1e0::5b37:80f/128", - "Ports": { - "First": 5432, - "Last": 5432 - } - }, - { - "Net": "fd7a:115c:a1e0::5b37:80f/128", - "Ports": { - "First": 80, - "Last": 80 - } - }, - { - "Net": "fd7a:115c:a1e0::5b37:80f/128", - "Ports": { - "First": 443, - "Last": 443 - } - }, - { - "Net": "fd7a:115c:a1e0::5b37:80f/128", - "Ports": { - "First": 8080, - "Last": 8080 - } - }, - { - "Net": "fd7a:115c:a1e0::5b37:80f/128", - "Ports": { - "First": 3000, - "Last": 3000 - } - }, - { - "Net": "fd7a:115c:a1e0::5b37:80f/128", - "Ports": { - "First": 9000, - "Last": 9000 - } - }, - { - "Net": "100.103.8.15/32", - "Ports": { - "First": 22, - "Last": 22 - } - }, - { - "Net": "100.103.8.15/32", - "Ports": { - "First": 5432, - "Last": 5432 - } - }, - { - "Net": "100.103.8.15/32", - "Ports": { - "First": 80, - "Last": 80 - } - }, - { - "Net": "100.103.8.15/32", - "Ports": { - "First": 443, - "Last": 443 - } - }, - { - "Net": "100.103.8.15/32", - "Ports": { - "First": 8080, - "Last": 8080 - } - }, - { - "Net": "100.103.8.15/32", - "Ports": { - "First": 3000, - "Last": 3000 - } - }, - { - "Net": "100.103.8.15/32", - "Ports": { - "First": 9000, - "Last": 9000 - } - } - ], - "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": { - "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.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.83.200.69", "fd7a:115c:a1e0::c537:c845"], + "SrcIPs": [ + "100.83.200.69", + "fd7a:115c:a1e0::c537:c845" + ], "DstPorts": [ { "IP": "100.108.74.26", @@ -1025,394 +520,21 @@ } ] } - ], - "packet_filter_matches": [ - { - "IPProto": [6, 17, 1, 58], - "Srcs": ["100.83.200.69/32", "fd7a:115c:a1e0::c537:c845/128"], - "SrcCaps": null, - "Dsts": [ - { - "Net": "100.108.74.26/32", - "Ports": { - "First": 22, - "Last": 22 - } - }, - { - "Net": "100.108.74.26/32", - "Ports": { - "First": 5432, - "Last": 5432 - } - }, - { - "Net": "100.108.74.26/32", - "Ports": { - "First": 80, - "Last": 80 - } - }, - { - "Net": "100.108.74.26/32", - "Ports": { - "First": 443, - "Last": 443 - } - }, - { - "Net": "100.108.74.26/32", - "Ports": { - "First": 8080, - "Last": 8080 - } - }, - { - "Net": "100.108.74.26/32", - "Ports": { - "First": 3000, - "Last": 3000 - } - }, - { - "Net": "100.108.74.26/32", - "Ports": { - "First": 9000, - "Last": 9000 - } - }, - { - "Net": "fd7a:115c:a1e0::b901:4a87/128", - "Ports": { - "First": 22, - "Last": 22 - } - }, - { - "Net": "fd7a:115c:a1e0::b901:4a87/128", - "Ports": { - "First": 5432, - "Last": 5432 - } - }, - { - "Net": "fd7a:115c:a1e0::b901:4a87/128", - "Ports": { - "First": 80, - "Last": 80 - } - }, - { - "Net": "fd7a:115c:a1e0::b901:4a87/128", - "Ports": { - "First": 443, - "Last": 443 - } - }, - { - "Net": "fd7a:115c:a1e0::b901:4a87/128", - "Ports": { - "First": 8080, - "Last": 8080 - } - }, - { - "Net": "fd7a:115c:a1e0::b901:4a87/128", - "Ports": { - "First": 3000, - "Last": 3000 - } - }, - { - "Net": "fd7a:115c:a1e0::b901:4a87/128", - "Ports": { - "First": 9000, - "Last": 9000 - } - }, - { - "Net": "100.108.74.26/32", - "Ports": { - "First": 22, - "Last": 22 - } - }, - { - "Net": "100.108.74.26/32", - "Ports": { - "First": 5432, - "Last": 5432 - } - }, - { - "Net": "100.108.74.26/32", - "Ports": { - "First": 80, - "Last": 80 - } - }, - { - "Net": "100.108.74.26/32", - "Ports": { - "First": 443, - "Last": 443 - } - }, - { - "Net": "100.108.74.26/32", - "Ports": { - "First": 8080, - "Last": 8080 - } - }, - { - "Net": "100.108.74.26/32", - "Ports": { - "First": 3000, - "Last": 3000 - } - }, - { - "Net": "100.108.74.26/32", - "Ports": { - "First": 9000, - "Last": 9000 - } - }, - { - "Net": "100.108.74.26/32", - "Ports": { - "First": 22, - "Last": 22 - } - }, - { - "Net": "100.108.74.26/32", - "Ports": { - "First": 5432, - "Last": 5432 - } - }, - { - "Net": "100.108.74.26/32", - "Ports": { - "First": 80, - "Last": 80 - } - }, - { - "Net": "100.108.74.26/32", - "Ports": { - "First": 443, - "Last": 443 - } - }, - { - "Net": "100.108.74.26/32", - "Ports": { - "First": 8080, - "Last": 8080 - } - }, - { - "Net": "100.108.74.26/32", - "Ports": { - "First": 3000, - "Last": 3000 - } - }, - { - "Net": "100.108.74.26/32", - "Ports": { - "First": 9000, - "Last": 9000 - } - } - ], - "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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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.83.200.69", "fd7a:115c:a1e0::c537:c845"], + "SrcIPs": [ + "100.83.200.69", + "fd7a:115c:a1e0::c537:c845" + ], "DstPorts": [ { "IP": "100.90.199.68", @@ -1612,295 +734,7 @@ } ] } - ], - "packet_filter_matches": [ - { - "IPProto": [6, 17, 1, 58], - "Srcs": ["100.83.200.69/32", "fd7a:115c:a1e0::c537:c845/128"], - "SrcCaps": null, - "Dsts": [ - { - "Net": "100.90.199.68/32", - "Ports": { - "First": 22, - "Last": 22 - } - }, - { - "Net": "100.90.199.68/32", - "Ports": { - "First": 5432, - "Last": 5432 - } - }, - { - "Net": "100.90.199.68/32", - "Ports": { - "First": 80, - "Last": 80 - } - }, - { - "Net": "100.90.199.68/32", - "Ports": { - "First": 443, - "Last": 443 - } - }, - { - "Net": "100.90.199.68/32", - "Ports": { - "First": 8080, - "Last": 8080 - } - }, - { - "Net": "100.90.199.68/32", - "Ports": { - "First": 3000, - "Last": 3000 - } - }, - { - "Net": "100.90.199.68/32", - "Ports": { - "First": 9000, - "Last": 9000 - } - }, - { - "Net": "fd7a:115c:a1e0::2d01:c747/128", - "Ports": { - "First": 22, - "Last": 22 - } - }, - { - "Net": "fd7a:115c:a1e0::2d01:c747/128", - "Ports": { - "First": 5432, - "Last": 5432 - } - }, - { - "Net": "fd7a:115c:a1e0::2d01:c747/128", - "Ports": { - "First": 80, - "Last": 80 - } - }, - { - "Net": "fd7a:115c:a1e0::2d01:c747/128", - "Ports": { - "First": 443, - "Last": 443 - } - }, - { - "Net": "fd7a:115c:a1e0::2d01:c747/128", - "Ports": { - "First": 8080, - "Last": 8080 - } - }, - { - "Net": "fd7a:115c:a1e0::2d01:c747/128", - "Ports": { - "First": 3000, - "Last": 3000 - } - }, - { - "Net": "fd7a:115c:a1e0::2d01:c747/128", - "Ports": { - "First": 9000, - "Last": 9000 - } - }, - { - "Net": "100.90.199.68/32", - "Ports": { - "First": 22, - "Last": 22 - } - }, - { - "Net": "100.90.199.68/32", - "Ports": { - "First": 5432, - "Last": 5432 - } - }, - { - "Net": "100.90.199.68/32", - "Ports": { - "First": 80, - "Last": 80 - } - }, - { - "Net": "100.90.199.68/32", - "Ports": { - "First": 443, - "Last": 443 - } - }, - { - "Net": "100.90.199.68/32", - "Ports": { - "First": 8080, - "Last": 8080 - } - }, - { - "Net": "100.90.199.68/32", - "Ports": { - "First": 3000, - "Last": 3000 - } - }, - { - "Net": "100.90.199.68/32", - "Ports": { - "First": 9000, - "Last": 9000 - } - }, - { - "Net": "fd7a:115c:a1e0::2d01:c747/128", - "Ports": { - "First": 22, - "Last": 22 - } - }, - { - "Net": "fd7a:115c:a1e0::2d01:c747/128", - "Ports": { - "First": 5432, - "Last": 5432 - } - }, - { - "Net": "fd7a:115c:a1e0::2d01:c747/128", - "Ports": { - "First": 80, - "Last": 80 - } - }, - { - "Net": "fd7a:115c:a1e0::2d01:c747/128", - "Ports": { - "First": 443, - "Last": 443 - } - }, - { - "Net": "fd7a:115c:a1e0::2d01:c747/128", - "Ports": { - "First": 8080, - "Last": 8080 - } - }, - { - "Net": "fd7a:115c:a1e0::2d01:c747/128", - "Ports": { - "First": 3000, - "Last": 3000 - } - }, - { - "Net": "fd7a:115c:a1e0::2d01:c747/128", - "Ports": { - "First": 9000, - "Last": 9000 - } - } - ], - "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": { - "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/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 - } - } + ] } } } diff --git a/hscontrol/policy/v2/testdata/grant_results/GRANT-P09_7C.hujson b/hscontrol/policy/v2/testdata/grant_results/GRANT-P09_7C.hujson index e629abb9f..4b10e77f2 100644 --- a/hscontrol/policy/v2/testdata/grant_results/GRANT-P09_7C.hujson +++ b/hscontrol/policy/v2/testdata/grant_results/GRANT-P09_7C.hujson @@ -5,23 +5,37 @@ // Expected: Rules on 8 nodes { "test_id": "GRANT-P09_7C", - "timestamp": "2026-02-23T01:07:03Z", - "propagation_wait_seconds": 15, "input": { - "policy_file": "/home/kradalby/acl-explore/grant_policies/grant_p09_7c.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -30,9 +44,15 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "grants": [ @@ -49,105 +69,73 @@ "webserver", "prodbox" ], - "dst": ["*"], - "ip": ["*"] + "dst": [ + "*" + ], + "ip": [ + "*" + ] } ] }, - "grants_section": [ - { - "src": [ - "autogroup:member", - "autogroup:tagged", - "group:admins", - "group:developers", - "kratail2tid@passkey", - "tag:client", - "tag:prod", - "tag:router", - "webserver", - "prodbox" - ], - "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"], + "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"], + "tags": [ + "tag:router" + ], "ipv4": "100.92.142.61", - "ipv6": "fd7a:115c:a1e0::3e37:8e3d", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] + "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"], + "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"], + "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"], + "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" @@ -156,10 +144,6 @@ }, "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": [ @@ -190,407 +174,9 @@ } ] } - ], - "packet_filter_matches": [ - { - "IPProto": [6, 17, 1, 58], - "Srcs": [ - "100.103.8.15/32", - "100.103.90.82/32", - "100.108.74.26/32", - "100.110.121.96/32", - "100.83.200.69/32", - "100.85.66.106/32", - "100.90.199.68/32", - "100.92.142.61/32", - "fd7a:115c:a1e0::1737:7960/128", - "fd7a:115c:a1e0::2d01:c747/128", - "fd7a:115c:a1e0::3e37:8e3d/128", - "fd7a:115c:a1e0::5b37:80f/128", - "fd7a:115c:a1e0::7c37:426a/128", - "fd7a:115c:a1e0::9e37:5a52/128", - "fd7a:115c:a1e0::b901:4a87/128", - "fd7a:115c:a1e0::c537:c845/128" - ], - "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": { - "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": { - "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/exit-node/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/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": { - "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/exit-node/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/exit-node/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 - } - } - } + ] }, "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": [ @@ -621,406 +207,9 @@ } ] } - ], - "packet_filter_matches": [ - { - "IPProto": [6, 17, 1, 58], - "Srcs": [ - "100.103.8.15/32", - "100.103.90.82/32", - "100.108.74.26/32", - "100.110.121.96/32", - "100.83.200.69/32", - "100.85.66.106/32", - "100.90.199.68/32", - "100.92.142.61/32", - "fd7a:115c:a1e0::1737:7960/128", - "fd7a:115c:a1e0::2d01:c747/128", - "fd7a:115c:a1e0::3e37:8e3d/128", - "fd7a:115c:a1e0::5b37:80f/128", - "fd7a:115c:a1e0::7c37:426a/128", - "fd7a:115c:a1e0::9e37:5a52/128", - "fd7a:115c:a1e0::b901:4a87/128", - "fd7a:115c:a1e0::c537:c845/128" - ], - "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": { - "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": [ { "SrcIPs": [ @@ -1051,407 +240,9 @@ } ] } - ], - "packet_filter_matches": [ - { - "IPProto": [6, 17, 1, 58], - "Srcs": [ - "100.103.8.15/32", - "100.103.90.82/32", - "100.108.74.26/32", - "100.110.121.96/32", - "100.83.200.69/32", - "100.85.66.106/32", - "100.90.199.68/32", - "100.92.142.61/32", - "fd7a:115c:a1e0::1737:7960/128", - "fd7a:115c:a1e0::2d01:c747/128", - "fd7a:115c:a1e0::3e37:8e3d/128", - "fd7a:115c:a1e0::5b37:80f/128", - "fd7a:115c:a1e0::7c37:426a/128", - "fd7a:115c:a1e0::9e37:5a52/128", - "fd7a:115c:a1e0::b901:4a87/128", - "fd7a:115c:a1e0::c537:c845/128" - ], - "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": { - "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-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": { - "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/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": { - "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-client/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-client/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-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": [ @@ -1482,407 +273,9 @@ } ] } - ], - "packet_filter_matches": [ - { - "IPProto": [6, 17, 1, 58], - "Srcs": [ - "100.103.8.15/32", - "100.103.90.82/32", - "100.108.74.26/32", - "100.110.121.96/32", - "100.83.200.69/32", - "100.85.66.106/32", - "100.90.199.68/32", - "100.92.142.61/32", - "fd7a:115c:a1e0::1737:7960/128", - "fd7a:115c:a1e0::2d01:c747/128", - "fd7a:115c:a1e0::3e37:8e3d/128", - "fd7a:115c:a1e0::5b37:80f/128", - "fd7a:115c:a1e0::7c37:426a/128", - "fd7a:115c:a1e0::9e37:5a52/128", - "fd7a:115c:a1e0::b901:4a87/128", - "fd7a:115c:a1e0::c537:c845/128" - ], - "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": { - "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-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": { - "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.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": { - "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-prod/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-prod/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-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": [ @@ -1913,407 +306,9 @@ } ] } - ], - "packet_filter_matches": [ - { - "IPProto": [6, 17, 1, 58], - "Srcs": [ - "100.103.8.15/32", - "100.103.90.82/32", - "100.108.74.26/32", - "100.110.121.96/32", - "100.83.200.69/32", - "100.85.66.106/32", - "100.90.199.68/32", - "100.92.142.61/32", - "fd7a:115c:a1e0::1737:7960/128", - "fd7a:115c:a1e0::2d01:c747/128", - "fd7a:115c:a1e0::3e37:8e3d/128", - "fd7a:115c:a1e0::5b37:80f/128", - "fd7a:115c:a1e0::7c37:426a/128", - "fd7a:115c:a1e0::9e37:5a52/128", - "fd7a:115c:a1e0::b901:4a87/128", - "fd7a:115c:a1e0::c537:c845/128" - ], - "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": { - "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": [ { "SrcIPs": [ @@ -2344,407 +339,9 @@ } ] } - ], - "packet_filter_matches": [ - { - "IPProto": [6, 17, 1, 58], - "Srcs": [ - "100.103.8.15/32", - "100.103.90.82/32", - "100.108.74.26/32", - "100.110.121.96/32", - "100.83.200.69/32", - "100.85.66.106/32", - "100.90.199.68/32", - "100.92.142.61/32", - "fd7a:115c:a1e0::1737:7960/128", - "fd7a:115c:a1e0::2d01:c747/128", - "fd7a:115c:a1e0::3e37:8e3d/128", - "fd7a:115c:a1e0::5b37:80f/128", - "fd7a:115c:a1e0::7c37:426a/128", - "fd7a:115c:a1e0::9e37:5a52/128", - "fd7a:115c:a1e0::b901:4a87/128", - "fd7a:115c:a1e0::c537:c845/128" - ], - "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": { - "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/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": { - "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/user-kris/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/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": { - "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/user-kris/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-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": [ @@ -2775,407 +372,9 @@ } ] } - ], - "packet_filter_matches": [ - { - "IPProto": [6, 17, 1, 58], - "Srcs": [ - "100.103.8.15/32", - "100.103.90.82/32", - "100.108.74.26/32", - "100.110.121.96/32", - "100.83.200.69/32", - "100.85.66.106/32", - "100.90.199.68/32", - "100.92.142.61/32", - "fd7a:115c:a1e0::1737:7960/128", - "fd7a:115c:a1e0::2d01:c747/128", - "fd7a:115c:a1e0::3e37:8e3d/128", - "fd7a:115c:a1e0::5b37:80f/128", - "fd7a:115c:a1e0::7c37:426a/128", - "fd7a:115c:a1e0::9e37:5a52/128", - "fd7a:115c:a1e0::b901:4a87/128", - "fd7a:115c:a1e0::c537:c845/128" - ], - "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": { - "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/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": { - "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/user-mon/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/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": { - "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.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": { - "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 - } - } - } + ] }, "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": [ @@ -3206,401 +405,7 @@ } ] } - ], - "packet_filter_matches": [ - { - "IPProto": [6, 17, 1, 58], - "Srcs": [ - "100.103.8.15/32", - "100.103.90.82/32", - "100.108.74.26/32", - "100.110.121.96/32", - "100.83.200.69/32", - "100.85.66.106/32", - "100.90.199.68/32", - "100.92.142.61/32", - "fd7a:115c:a1e0::1737:7960/128", - "fd7a:115c:a1e0::2d01:c747/128", - "fd7a:115c:a1e0::3e37:8e3d/128", - "fd7a:115c:a1e0::5b37:80f/128", - "fd7a:115c:a1e0::7c37:426a/128", - "fd7a:115c:a1e0::9e37:5a52/128", - "fd7a:115c:a1e0::b901:4a87/128", - "fd7a:115c:a1e0::c537:c845/128" - ], - "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": { - "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/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": { - "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/user1/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/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": { - "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/user1/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 - } - } - } + ] } } } diff --git a/hscontrol/policy/v2/testdata/grant_results/GRANT-P09_7D_NAIVE.hujson b/hscontrol/policy/v2/testdata/grant_results/GRANT-P09_7D_NAIVE.hujson index b3247fba8..ddd728773 100644 --- a/hscontrol/policy/v2/testdata/grant_results/GRANT-P09_7D_NAIVE.hujson +++ b/hscontrol/policy/v2/testdata/grant_results/GRANT-P09_7D_NAIVE.hujson @@ -5,23 +5,37 @@ // Expected: Rules on subnet-router, tagged-client, tagged-prod, tagged-server { "test_id": "GRANT-P09_7D_NAIVE", - "timestamp": "2026-02-23T01:07:20Z", - "propagation_wait_seconds": 15, "input": { - "policy_file": "/home/kradalby/acl-explore/grant_policies/grant_p09_7d_naive.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -30,102 +44,99 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "grants": [ { - "src": ["*"], - "dst": ["tag:server", "tag:prod", "tag:client", "tag:router", "webserver", "prodbox"], - "ip": ["22", "80", "443", "5432", "3306", "8080"] + "src": [ + "*" + ], + "dst": [ + "tag:server", + "tag:prod", + "tag:client", + "tag:router", + "webserver", + "prodbox" + ], + "ip": [ + "22", + "80", + "443", + "5432", + "3306", + "8080" + ] } ] }, - "grants_section": [ - { - "src": ["*"], - "dst": ["tag:server", "tag:prod", "tag:client", "tag:router", "webserver", "prodbox"], - "ip": ["22", "80", "443", "5432", "3306", "8080"] - } - ], - "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"], + "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"], + "tags": [ + "tag:router" + ], "ipv4": "100.92.142.61", - "ipv6": "fd7a:115c:a1e0::3e37:8e3d", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] + "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"], + "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"], + "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"], + "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" @@ -134,235 +145,9 @@ }, "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"], - "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": 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": { - "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/exit-node/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/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 - } - } + "packet_filter_rules": 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": [ @@ -458,475 +243,9 @@ } ] } - ], - "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": [ - { - "Net": "100.92.142.61/32", - "Ports": { - "First": 22, - "Last": 22 - } - }, - { - "Net": "100.92.142.61/32", - "Ports": { - "First": 80, - "Last": 80 - } - }, - { - "Net": "100.92.142.61/32", - "Ports": { - "First": 443, - "Last": 443 - } - }, - { - "Net": "100.92.142.61/32", - "Ports": { - "First": 5432, - "Last": 5432 - } - }, - { - "Net": "100.92.142.61/32", - "Ports": { - "First": 3306, - "Last": 3306 - } - }, - { - "Net": "100.92.142.61/32", - "Ports": { - "First": 8080, - "Last": 8080 - } - }, - { - "Net": "fd7a:115c:a1e0::3e37:8e3d/128", - "Ports": { - "First": 22, - "Last": 22 - } - }, - { - "Net": "fd7a:115c:a1e0::3e37:8e3d/128", - "Ports": { - "First": 80, - "Last": 80 - } - }, - { - "Net": "fd7a:115c:a1e0::3e37:8e3d/128", - "Ports": { - "First": 443, - "Last": 443 - } - }, - { - "Net": "fd7a:115c:a1e0::3e37:8e3d/128", - "Ports": { - "First": 5432, - "Last": 5432 - } - }, - { - "Net": "fd7a:115c:a1e0::3e37:8e3d/128", - "Ports": { - "First": 3306, - "Last": 3306 - } - }, - { - "Net": "fd7a:115c:a1e0::3e37:8e3d/128", - "Ports": { - "First": 8080, - "Last": 8080 - } - } - ], - "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": { - "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": [ { "SrcIPs": [ @@ -1022,476 +341,9 @@ } ] } - ], - "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": [ - { - "Net": "100.83.200.69/32", - "Ports": { - "First": 22, - "Last": 22 - } - }, - { - "Net": "100.83.200.69/32", - "Ports": { - "First": 80, - "Last": 80 - } - }, - { - "Net": "100.83.200.69/32", - "Ports": { - "First": 443, - "Last": 443 - } - }, - { - "Net": "100.83.200.69/32", - "Ports": { - "First": 5432, - "Last": 5432 - } - }, - { - "Net": "100.83.200.69/32", - "Ports": { - "First": 3306, - "Last": 3306 - } - }, - { - "Net": "100.83.200.69/32", - "Ports": { - "First": 8080, - "Last": 8080 - } - }, - { - "Net": "fd7a:115c:a1e0::c537:c845/128", - "Ports": { - "First": 22, - "Last": 22 - } - }, - { - "Net": "fd7a:115c:a1e0::c537:c845/128", - "Ports": { - "First": 80, - "Last": 80 - } - }, - { - "Net": "fd7a:115c:a1e0::c537:c845/128", - "Ports": { - "First": 443, - "Last": 443 - } - }, - { - "Net": "fd7a:115c:a1e0::c537:c845/128", - "Ports": { - "First": 5432, - "Last": 5432 - } - }, - { - "Net": "fd7a:115c:a1e0::c537:c845/128", - "Ports": { - "First": 3306, - "Last": 3306 - } - }, - { - "Net": "fd7a:115c:a1e0::c537:c845/128", - "Ports": { - "First": 8080, - "Last": 8080 - } - } - ], - "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": { - "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-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": { - "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/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": { - "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-client/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-client/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-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": [ @@ -1629,518 +481,9 @@ } ] } - ], - "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": [ - { - "Net": "100.103.8.15/32", - "Ports": { - "First": 22, - "Last": 22 - } - }, - { - "Net": "100.103.8.15/32", - "Ports": { - "First": 80, - "Last": 80 - } - }, - { - "Net": "100.103.8.15/32", - "Ports": { - "First": 443, - "Last": 443 - } - }, - { - "Net": "100.103.8.15/32", - "Ports": { - "First": 5432, - "Last": 5432 - } - }, - { - "Net": "100.103.8.15/32", - "Ports": { - "First": 3306, - "Last": 3306 - } - }, - { - "Net": "100.103.8.15/32", - "Ports": { - "First": 8080, - "Last": 8080 - } - }, - { - "Net": "fd7a:115c:a1e0::5b37:80f/128", - "Ports": { - "First": 22, - "Last": 22 - } - }, - { - "Net": "fd7a:115c:a1e0::5b37:80f/128", - "Ports": { - "First": 80, - "Last": 80 - } - }, - { - "Net": "fd7a:115c:a1e0::5b37:80f/128", - "Ports": { - "First": 443, - "Last": 443 - } - }, - { - "Net": "fd7a:115c:a1e0::5b37:80f/128", - "Ports": { - "First": 5432, - "Last": 5432 - } - }, - { - "Net": "fd7a:115c:a1e0::5b37:80f/128", - "Ports": { - "First": 3306, - "Last": 3306 - } - }, - { - "Net": "fd7a:115c:a1e0::5b37:80f/128", - "Ports": { - "First": 8080, - "Last": 8080 - } - }, - { - "Net": "100.103.8.15/32", - "Ports": { - "First": 22, - "Last": 22 - } - }, - { - "Net": "100.103.8.15/32", - "Ports": { - "First": 80, - "Last": 80 - } - }, - { - "Net": "100.103.8.15/32", - "Ports": { - "First": 443, - "Last": 443 - } - }, - { - "Net": "100.103.8.15/32", - "Ports": { - "First": 5432, - "Last": 5432 - } - }, - { - "Net": "100.103.8.15/32", - "Ports": { - "First": 3306, - "Last": 3306 - } - }, - { - "Net": "100.103.8.15/32", - "Ports": { - "First": 8080, - "Last": 8080 - } - } - ], - "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": { - "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-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": { - "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.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": { - "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-prod/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-prod/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-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": [ @@ -2278,1187 +621,16 @@ } ] } - ], - "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": [ - { - "Net": "100.108.74.26/32", - "Ports": { - "First": 22, - "Last": 22 - } - }, - { - "Net": "100.108.74.26/32", - "Ports": { - "First": 80, - "Last": 80 - } - }, - { - "Net": "100.108.74.26/32", - "Ports": { - "First": 443, - "Last": 443 - } - }, - { - "Net": "100.108.74.26/32", - "Ports": { - "First": 5432, - "Last": 5432 - } - }, - { - "Net": "100.108.74.26/32", - "Ports": { - "First": 3306, - "Last": 3306 - } - }, - { - "Net": "100.108.74.26/32", - "Ports": { - "First": 8080, - "Last": 8080 - } - }, - { - "Net": "fd7a:115c:a1e0::b901:4a87/128", - "Ports": { - "First": 22, - "Last": 22 - } - }, - { - "Net": "fd7a:115c:a1e0::b901:4a87/128", - "Ports": { - "First": 80, - "Last": 80 - } - }, - { - "Net": "fd7a:115c:a1e0::b901:4a87/128", - "Ports": { - "First": 443, - "Last": 443 - } - }, - { - "Net": "fd7a:115c:a1e0::b901:4a87/128", - "Ports": { - "First": 5432, - "Last": 5432 - } - }, - { - "Net": "fd7a:115c:a1e0::b901:4a87/128", - "Ports": { - "First": 3306, - "Last": 3306 - } - }, - { - "Net": "fd7a:115c:a1e0::b901:4a87/128", - "Ports": { - "First": 8080, - "Last": 8080 - } - }, - { - "Net": "100.108.74.26/32", - "Ports": { - "First": 22, - "Last": 22 - } - }, - { - "Net": "100.108.74.26/32", - "Ports": { - "First": 80, - "Last": 80 - } - }, - { - "Net": "100.108.74.26/32", - "Ports": { - "First": 443, - "Last": 443 - } - }, - { - "Net": "100.108.74.26/32", - "Ports": { - "First": 5432, - "Last": 5432 - } - }, - { - "Net": "100.108.74.26/32", - "Ports": { - "First": 3306, - "Last": 3306 - } - }, - { - "Net": "100.108.74.26/32", - "Ports": { - "First": 8080, - "Last": 8080 - } - } - ], - "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": { - "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": 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": { - "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/user-kris/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/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 - } - } + "packet_filter_rules": 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"], - "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": 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": { - "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/user-mon/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/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 - } - } + "packet_filter_rules": 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"], - "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": 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": { - "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/user1/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/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 - } - } + "packet_filter_rules": null } } } diff --git a/hscontrol/policy/v2/testdata/grant_results/GRANT-P09_8A.hujson b/hscontrol/policy/v2/testdata/grant_results/GRANT-P09_8A.hujson index 02f2bfa65..f69018a2f 100644 --- a/hscontrol/policy/v2/testdata/grant_results/GRANT-P09_8A.hujson +++ b/hscontrol/policy/v2/testdata/grant_results/GRANT-P09_8A.hujson @@ -5,23 +5,37 @@ // Expected: Rules on tagged-server { "test_id": "GRANT-P09_8A", - "timestamp": "2026-02-23T01:07:38Z", - "propagation_wait_seconds": 15, "input": { - "policy_file": "/home/kradalby/acl-explore/grant_policies/grant_p09_8a.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -30,102 +44,93 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "grants": [ { - "src": ["autogroup:member", "group:admins", "group:developers", "kratail2tid@passkey", "100.90.199.68"], - "dst": ["tag:server"], - "ip": ["22"] + "src": [ + "autogroup:member", + "group:admins", + "group:developers", + "kratail2tid@passkey", + "100.90.199.68" + ], + "dst": [ + "tag:server" + ], + "ip": [ + "22" + ] } ] }, - "grants_section": [ - { - "src": ["autogroup:member", "group:admins", "group:developers", "kratail2tid@passkey", "100.90.199.68"], - "dst": ["tag:server"], - "ip": ["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"], + "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"], + "tags": [ + "tag:router" + ], "ipv4": "100.92.142.61", - "ipv6": "fd7a:115c:a1e0::3e37:8e3d", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] + "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"], + "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"], + "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"], + "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" @@ -134,190 +139,18 @@ }, "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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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": [ @@ -345,480 +178,16 @@ } ] } - ], - "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": 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": { - "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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": null } } } diff --git a/hscontrol/policy/v2/testdata/grant_results/GRANT-P09_8B.hujson b/hscontrol/policy/v2/testdata/grant_results/GRANT-P09_8B.hujson index 1a1bb6790..844423f9e 100644 --- a/hscontrol/policy/v2/testdata/grant_results/GRANT-P09_8B.hujson +++ b/hscontrol/policy/v2/testdata/grant_results/GRANT-P09_8B.hujson @@ -5,23 +5,37 @@ // Expected: Rules on tagged-client { "test_id": "GRANT-P09_8B", - "timestamp": "2026-02-23T01:07:54Z", - "propagation_wait_seconds": 15, "input": { - "policy_file": "/home/kradalby/acl-explore/grant_policies/grant_p09_8b.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -30,102 +44,91 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "grants": [ { - "src": ["tag:server", "webserver", "100.108.74.26"], - "dst": ["tag:client"], - "ip": ["22"] + "src": [ + "tag:server", + "webserver", + "100.108.74.26" + ], + "dst": [ + "tag:client" + ], + "ip": [ + "22" + ] } ] }, - "grants_section": [ - { - "src": ["tag:server", "webserver", "100.108.74.26"], - "dst": ["tag:client"], - "ip": ["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"], + "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"], + "tags": [ + "tag:router" + ], "ipv4": "100.92.142.61", - "ipv6": "fd7a:115c:a1e0::3e37:8e3d", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] + "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"], + "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"], + "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"], + "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" @@ -134,103 +137,18 @@ }, "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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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.108.74.26", "fd7a:115c:a1e0::b901:4a87"], + "SrcIPs": [ + "100.108.74.26", + "fd7a:115c:a1e0::b901:4a87" + ], "DstPorts": [ { "IP": "100.83.200.69", @@ -248,383 +166,22 @@ } ] } - ], - "packet_filter_matches": [ - { - "IPProto": [6, 17, 1, 58], - "Srcs": ["100.108.74.26/32", "fd7a:115c:a1e0::b901:4a87/128"], - "SrcCaps": null, - "Dsts": [ - { - "Net": "100.83.200.69/32", - "Ports": { - "First": 22, - "Last": 22 - } - }, - { - "Net": "fd7a:115c:a1e0::c537:c845/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-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 - } - } + "packet_filter_rules": 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": { - "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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": null } } } diff --git a/hscontrol/policy/v2/testdata/grant_results/GRANT-P09_8C.hujson b/hscontrol/policy/v2/testdata/grant_results/GRANT-P09_8C.hujson index b9fb5f2b0..fc9ce10f0 100644 --- a/hscontrol/policy/v2/testdata/grant_results/GRANT-P09_8C.hujson +++ b/hscontrol/policy/v2/testdata/grant_results/GRANT-P09_8C.hujson @@ -5,23 +5,37 @@ // Expected: Rules on tagged-server { "test_id": "GRANT-P09_8C", - "timestamp": "2026-02-23T01:08:11Z", - "propagation_wait_seconds": 15, "input": { - "policy_file": "/home/kradalby/acl-explore/grant_policies/grant_p09_8c.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -30,102 +44,91 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "grants": [ { - "src": ["tag:client"], - "dst": ["tag:server", "webserver", "100.108.74.26"], - "ip": ["22"] + "src": [ + "tag:client" + ], + "dst": [ + "tag:server", + "webserver", + "100.108.74.26" + ], + "ip": [ + "22" + ] } ] }, - "grants_section": [ - { - "src": ["tag:client"], - "dst": ["tag:server", "webserver", "100.108.74.26"], - "ip": ["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"], + "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"], + "tags": [ + "tag:router" + ], "ipv4": "100.92.142.61", - "ipv6": "fd7a:115c:a1e0::3e37:8e3d", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] + "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"], + "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"], + "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"], + "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" @@ -134,238 +137,24 @@ }, "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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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.83.200.69", "fd7a:115c:a1e0::c537:c845"], + "SrcIPs": [ + "100.83.200.69", + "fd7a:115c:a1e0::c537:c845" + ], "DstPorts": [ { "IP": "100.108.74.26", @@ -397,262 +186,16 @@ } ] } - ], - "packet_filter_matches": [ - { - "IPProto": [6, 17, 1, 58], - "Srcs": ["100.83.200.69/32", "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 - } - }, - { - "Net": "100.108.74.26/32", - "Ports": { - "First": 22, - "Last": 22 - } - }, - { - "Net": "100.108.74.26/32", - "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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": null } } } diff --git a/hscontrol/policy/v2/testdata/grant_results/GRANT-P09_9A.hujson b/hscontrol/policy/v2/testdata/grant_results/GRANT-P09_9A.hujson index fd0eafe09..f2ee0dd77 100644 --- a/hscontrol/policy/v2/testdata/grant_results/GRANT-P09_9A.hujson +++ b/hscontrol/policy/v2/testdata/grant_results/GRANT-P09_9A.hujson @@ -5,23 +5,37 @@ // Expected: Rules on 8 nodes { "test_id": "GRANT-P09_9A", - "timestamp": "2026-02-23T01:08:28Z", - "propagation_wait_seconds": 15, "input": { - "policy_file": "/home/kradalby/acl-explore/grant_policies/grant_p09_9a.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -30,102 +44,92 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "grants": [ { - "src": ["tag:server", "tag:client", "tag:prod", "tag:router"], - "dst": ["*"], - "ip": ["*"] + "src": [ + "tag:server", + "tag:client", + "tag:prod", + "tag:router" + ], + "dst": [ + "*" + ], + "ip": [ + "*" + ] } ] }, - "grants_section": [ - { - "src": ["tag:server", "tag:client", "tag:prod", "tag:router"], - "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"], + "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"], + "tags": [ + "tag:router" + ], "ipv4": "100.92.142.61", - "ipv6": "fd7a:115c:a1e0::3e37:8e3d", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] + "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"], + "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"], + "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"], + "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" @@ -134,10 +138,6 @@ }, "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": [ @@ -160,263 +160,9 @@ } ] } - ], - "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.92.142.61/32", - "fd7a:115c:a1e0::3e37:8e3d/128", - "fd7a:115c:a1e0::5b37:80f/128", - "fd7a:115c:a1e0::b901:4a87/128", - "fd7a:115c:a1e0::c537:c845/128" - ], - "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": { - "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": 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": { - "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/exit-node/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/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": [ { "SrcIPs": [ @@ -439,398 +185,9 @@ } ] } - ], - "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.92.142.61/32", - "fd7a:115c:a1e0::3e37:8e3d/128", - "fd7a:115c:a1e0::5b37:80f/128", - "fd7a:115c:a1e0::b901:4a87/128", - "fd7a:115c:a1e0::c537:c845/128" - ], - "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": { - "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": [ { "SrcIPs": [ @@ -853,399 +210,9 @@ } ] } - ], - "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.92.142.61/32", - "fd7a:115c:a1e0::3e37:8e3d/128", - "fd7a:115c:a1e0::5b37:80f/128", - "fd7a:115c:a1e0::b901:4a87/128", - "fd7a:115c:a1e0::c537:c845/128" - ], - "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": { - "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-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": { - "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/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": { - "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-client/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-client/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-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": [ @@ -1268,399 +235,9 @@ } ] } - ], - "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.92.142.61/32", - "fd7a:115c:a1e0::3e37:8e3d/128", - "fd7a:115c:a1e0::5b37:80f/128", - "fd7a:115c:a1e0::b901:4a87/128", - "fd7a:115c:a1e0::c537:c845/128" - ], - "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": { - "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-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": { - "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.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": { - "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-prod/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-prod/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-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": [ @@ -1683,399 +260,9 @@ } ] } - ], - "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.92.142.61/32", - "fd7a:115c:a1e0::3e37:8e3d/128", - "fd7a:115c:a1e0::5b37:80f/128", - "fd7a:115c:a1e0::b901:4a87/128", - "fd7a:115c:a1e0::c537:c845/128" - ], - "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": { - "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": [ { "SrcIPs": [ @@ -2098,263 +285,9 @@ } ] } - ], - "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.92.142.61/32", - "fd7a:115c:a1e0::3e37:8e3d/128", - "fd7a:115c:a1e0::5b37:80f/128", - "fd7a:115c:a1e0::b901:4a87/128", - "fd7a:115c:a1e0::c537:c845/128" - ], - "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": { - "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": 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": { - "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/user-kris/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/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": [ { "SrcIPs": [ @@ -2377,263 +310,9 @@ } ] } - ], - "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.92.142.61/32", - "fd7a:115c:a1e0::3e37:8e3d/128", - "fd7a:115c:a1e0::5b37:80f/128", - "fd7a:115c:a1e0::b901:4a87/128", - "fd7a:115c:a1e0::c537:c845/128" - ], - "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": { - "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": 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": { - "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/user-mon/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/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": [ { "SrcIPs": [ @@ -2656,257 +335,7 @@ } ] } - ], - "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.92.142.61/32", - "fd7a:115c:a1e0::3e37:8e3d/128", - "fd7a:115c:a1e0::5b37:80f/128", - "fd7a:115c:a1e0::b901:4a87/128", - "fd7a:115c:a1e0::c537:c845/128" - ], - "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": { - "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": 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": { - "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/user1/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/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 - } - } + ] } } } diff --git a/hscontrol/policy/v2/testdata/grant_results/GRANT-P09_9B.hujson b/hscontrol/policy/v2/testdata/grant_results/GRANT-P09_9B.hujson index 4c3f7a378..2a3ec7880 100644 --- a/hscontrol/policy/v2/testdata/grant_results/GRANT-P09_9B.hujson +++ b/hscontrol/policy/v2/testdata/grant_results/GRANT-P09_9B.hujson @@ -5,23 +5,37 @@ // Expected: Rules on subnet-router, tagged-client, tagged-prod, tagged-server { "test_id": "GRANT-P09_9B", - "timestamp": "2026-02-23T01:08:45Z", - "propagation_wait_seconds": 15, "input": { - "policy_file": "/home/kradalby/acl-explore/grant_policies/grant_p09_9b.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -30,102 +44,92 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "grants": [ { - "src": ["*"], - "dst": ["tag:server", "tag:client", "tag:prod", "tag:router"], - "ip": ["22"] + "src": [ + "*" + ], + "dst": [ + "tag:server", + "tag:client", + "tag:prod", + "tag:router" + ], + "ip": [ + "22" + ] } ] }, - "grants_section": [ - { - "src": ["*"], - "dst": ["tag:server", "tag:client", "tag:prod", "tag:router"], - "ip": ["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"], + "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"], + "tags": [ + "tag:router" + ], "ipv4": "100.92.142.61", - "ipv6": "fd7a:115c:a1e0::3e37:8e3d", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] + "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"], + "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"], + "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"], + "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" @@ -134,235 +138,9 @@ }, "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"], - "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": 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": { - "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/exit-node/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/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 - } - } + "packet_filter_rules": 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": [ @@ -388,405 +166,9 @@ } ] } - ], - "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": [ - { - "Net": "100.92.142.61/32", - "Ports": { - "First": 22, - "Last": 22 - } - }, - { - "Net": "fd7a:115c:a1e0::3e37:8e3d/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/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": [ { "SrcIPs": [ @@ -812,406 +194,9 @@ } ] } - ], - "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": [ - { - "Net": "100.83.200.69/32", - "Ports": { - "First": 22, - "Last": 22 - } - }, - { - "Net": "fd7a:115c:a1e0::c537:c845/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-client/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-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": { - "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/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": { - "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-client/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-client/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-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": [ @@ -1237,406 +222,9 @@ } ] } - ], - "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": [ - { - "Net": "100.103.8.15/32", - "Ports": { - "First": 22, - "Last": 22 - } - }, - { - "Net": "fd7a:115c:a1e0::5b37:80f/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-prod/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-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": { - "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.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": { - "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-prod/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-prod/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-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": [ @@ -1662,1075 +250,16 @@ } ] } - ], - "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": [ - { - "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": { - "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": 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": { - "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/user-kris/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/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 - } - } + "packet_filter_rules": 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"], - "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": 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": { - "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/user-mon/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/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 - } - } + "packet_filter_rules": 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"], - "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": 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": { - "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/user1/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/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 - } - } + "packet_filter_rules": null } } } diff --git a/hscontrol/policy/v2/testdata/grant_results/GRANT-P09_9C.hujson b/hscontrol/policy/v2/testdata/grant_results/GRANT-P09_9C.hujson index 948408cf1..ce7615e02 100644 --- a/hscontrol/policy/v2/testdata/grant_results/GRANT-P09_9C.hujson +++ b/hscontrol/policy/v2/testdata/grant_results/GRANT-P09_9C.hujson @@ -5,23 +5,37 @@ // Expected: Rules on 8 nodes { "test_id": "GRANT-P09_9C", - "timestamp": "2026-02-23T01:09:02Z", - "propagation_wait_seconds": 15, "input": { - "policy_file": "/home/kradalby/acl-explore/grant_policies/grant_p09_9c.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -30,102 +44,90 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "grants": [ { - "src": ["autogroup:member", "autogroup:tagged"], - "dst": ["*"], - "ip": ["*"] + "src": [ + "autogroup:member", + "autogroup:tagged" + ], + "dst": [ + "*" + ], + "ip": [ + "*" + ] } ] }, - "grants_section": [ - { - "src": ["autogroup:member", "autogroup:tagged"], - "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"], + "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"], + "tags": [ + "tag:router" + ], "ipv4": "100.92.142.61", - "ipv6": "fd7a:115c:a1e0::3e37:8e3d", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] + "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"], + "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"], + "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"], + "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" @@ -134,10 +136,6 @@ }, "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": [ @@ -168,407 +166,9 @@ } ] } - ], - "packet_filter_matches": [ - { - "IPProto": [6, 17, 1, 58], - "Srcs": [ - "100.103.8.15/32", - "100.103.90.82/32", - "100.108.74.26/32", - "100.110.121.96/32", - "100.83.200.69/32", - "100.85.66.106/32", - "100.90.199.68/32", - "100.92.142.61/32", - "fd7a:115c:a1e0::1737:7960/128", - "fd7a:115c:a1e0::2d01:c747/128", - "fd7a:115c:a1e0::3e37:8e3d/128", - "fd7a:115c:a1e0::5b37:80f/128", - "fd7a:115c:a1e0::7c37:426a/128", - "fd7a:115c:a1e0::9e37:5a52/128", - "fd7a:115c:a1e0::b901:4a87/128", - "fd7a:115c:a1e0::c537:c845/128" - ], - "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": { - "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": { - "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/exit-node/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/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": { - "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/exit-node/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/exit-node/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 - } - } - } + ] }, "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": [ @@ -599,406 +199,9 @@ } ] } - ], - "packet_filter_matches": [ - { - "IPProto": [6, 17, 1, 58], - "Srcs": [ - "100.103.8.15/32", - "100.103.90.82/32", - "100.108.74.26/32", - "100.110.121.96/32", - "100.83.200.69/32", - "100.85.66.106/32", - "100.90.199.68/32", - "100.92.142.61/32", - "fd7a:115c:a1e0::1737:7960/128", - "fd7a:115c:a1e0::2d01:c747/128", - "fd7a:115c:a1e0::3e37:8e3d/128", - "fd7a:115c:a1e0::5b37:80f/128", - "fd7a:115c:a1e0::7c37:426a/128", - "fd7a:115c:a1e0::9e37:5a52/128", - "fd7a:115c:a1e0::b901:4a87/128", - "fd7a:115c:a1e0::c537:c845/128" - ], - "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": { - "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": [ { "SrcIPs": [ @@ -1029,407 +232,9 @@ } ] } - ], - "packet_filter_matches": [ - { - "IPProto": [6, 17, 1, 58], - "Srcs": [ - "100.103.8.15/32", - "100.103.90.82/32", - "100.108.74.26/32", - "100.110.121.96/32", - "100.83.200.69/32", - "100.85.66.106/32", - "100.90.199.68/32", - "100.92.142.61/32", - "fd7a:115c:a1e0::1737:7960/128", - "fd7a:115c:a1e0::2d01:c747/128", - "fd7a:115c:a1e0::3e37:8e3d/128", - "fd7a:115c:a1e0::5b37:80f/128", - "fd7a:115c:a1e0::7c37:426a/128", - "fd7a:115c:a1e0::9e37:5a52/128", - "fd7a:115c:a1e0::b901:4a87/128", - "fd7a:115c:a1e0::c537:c845/128" - ], - "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": { - "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-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": { - "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/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": { - "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-client/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-client/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-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": [ @@ -1460,407 +265,9 @@ } ] } - ], - "packet_filter_matches": [ - { - "IPProto": [6, 17, 1, 58], - "Srcs": [ - "100.103.8.15/32", - "100.103.90.82/32", - "100.108.74.26/32", - "100.110.121.96/32", - "100.83.200.69/32", - "100.85.66.106/32", - "100.90.199.68/32", - "100.92.142.61/32", - "fd7a:115c:a1e0::1737:7960/128", - "fd7a:115c:a1e0::2d01:c747/128", - "fd7a:115c:a1e0::3e37:8e3d/128", - "fd7a:115c:a1e0::5b37:80f/128", - "fd7a:115c:a1e0::7c37:426a/128", - "fd7a:115c:a1e0::9e37:5a52/128", - "fd7a:115c:a1e0::b901:4a87/128", - "fd7a:115c:a1e0::c537:c845/128" - ], - "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": { - "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-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": { - "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.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": { - "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-prod/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-prod/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-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": [ @@ -1891,407 +298,9 @@ } ] } - ], - "packet_filter_matches": [ - { - "IPProto": [6, 17, 1, 58], - "Srcs": [ - "100.103.8.15/32", - "100.103.90.82/32", - "100.108.74.26/32", - "100.110.121.96/32", - "100.83.200.69/32", - "100.85.66.106/32", - "100.90.199.68/32", - "100.92.142.61/32", - "fd7a:115c:a1e0::1737:7960/128", - "fd7a:115c:a1e0::2d01:c747/128", - "fd7a:115c:a1e0::3e37:8e3d/128", - "fd7a:115c:a1e0::5b37:80f/128", - "fd7a:115c:a1e0::7c37:426a/128", - "fd7a:115c:a1e0::9e37:5a52/128", - "fd7a:115c:a1e0::b901:4a87/128", - "fd7a:115c:a1e0::c537:c845/128" - ], - "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": { - "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": [ { "SrcIPs": [ @@ -2322,407 +331,9 @@ } ] } - ], - "packet_filter_matches": [ - { - "IPProto": [6, 17, 1, 58], - "Srcs": [ - "100.103.8.15/32", - "100.103.90.82/32", - "100.108.74.26/32", - "100.110.121.96/32", - "100.83.200.69/32", - "100.85.66.106/32", - "100.90.199.68/32", - "100.92.142.61/32", - "fd7a:115c:a1e0::1737:7960/128", - "fd7a:115c:a1e0::2d01:c747/128", - "fd7a:115c:a1e0::3e37:8e3d/128", - "fd7a:115c:a1e0::5b37:80f/128", - "fd7a:115c:a1e0::7c37:426a/128", - "fd7a:115c:a1e0::9e37:5a52/128", - "fd7a:115c:a1e0::b901:4a87/128", - "fd7a:115c:a1e0::c537:c845/128" - ], - "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": { - "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/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": { - "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/user-kris/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/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": { - "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/user-kris/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-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": [ @@ -2753,407 +364,9 @@ } ] } - ], - "packet_filter_matches": [ - { - "IPProto": [6, 17, 1, 58], - "Srcs": [ - "100.103.8.15/32", - "100.103.90.82/32", - "100.108.74.26/32", - "100.110.121.96/32", - "100.83.200.69/32", - "100.85.66.106/32", - "100.90.199.68/32", - "100.92.142.61/32", - "fd7a:115c:a1e0::1737:7960/128", - "fd7a:115c:a1e0::2d01:c747/128", - "fd7a:115c:a1e0::3e37:8e3d/128", - "fd7a:115c:a1e0::5b37:80f/128", - "fd7a:115c:a1e0::7c37:426a/128", - "fd7a:115c:a1e0::9e37:5a52/128", - "fd7a:115c:a1e0::b901:4a87/128", - "fd7a:115c:a1e0::c537:c845/128" - ], - "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": { - "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/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": { - "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/user-mon/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/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": { - "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.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": { - "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 - } - } - } + ] }, "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": [ @@ -3184,401 +397,7 @@ } ] } - ], - "packet_filter_matches": [ - { - "IPProto": [6, 17, 1, 58], - "Srcs": [ - "100.103.8.15/32", - "100.103.90.82/32", - "100.108.74.26/32", - "100.110.121.96/32", - "100.83.200.69/32", - "100.85.66.106/32", - "100.90.199.68/32", - "100.92.142.61/32", - "fd7a:115c:a1e0::1737:7960/128", - "fd7a:115c:a1e0::2d01:c747/128", - "fd7a:115c:a1e0::3e37:8e3d/128", - "fd7a:115c:a1e0::5b37:80f/128", - "fd7a:115c:a1e0::7c37:426a/128", - "fd7a:115c:a1e0::9e37:5a52/128", - "fd7a:115c:a1e0::b901:4a87/128", - "fd7a:115c:a1e0::c537:c845/128" - ], - "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": { - "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/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": { - "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/user1/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/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": { - "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/user1/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 - } - } - } + ] } } } diff --git a/hscontrol/policy/v2/testdata/grant_results/GRANT-P10_1.hujson b/hscontrol/policy/v2/testdata/grant_results/GRANT-P10_1.hujson index f189cda50..548954238 100644 --- a/hscontrol/policy/v2/testdata/grant_results/GRANT-P10_1.hujson +++ b/hscontrol/policy/v2/testdata/grant_results/GRANT-P10_1.hujson @@ -5,23 +5,37 @@ // Expected: Rules on 8 nodes { "test_id": "GRANT-P10_1", - "timestamp": "2026-02-23T01:09:19Z", - "propagation_wait_seconds": 15, "input": { - "policy_file": "/home/kradalby/acl-explore/grant_policies/grant_p10_1.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -30,102 +44,89 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "grants": [ { - "src": ["*"], - "dst": ["*"], - "ip": ["*"] + "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": 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"], + "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"], + "tags": [ + "tag:router" + ], "ipv4": "100.92.142.61", - "ipv6": "fd7a:115c:a1e0::3e37:8e3d", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] + "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"], + "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"], + "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"], + "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" @@ -134,10 +135,6 @@ }, "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": [ @@ -156,406 +153,9 @@ } ] } - ], - "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": [ - { - "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": { - "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": { - "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/exit-node/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/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": { - "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/exit-node/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/exit-node/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 - } - } - } + ] }, "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": [ @@ -574,405 +174,9 @@ } ] } - ], - "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": [ - { - "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": { - "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": [ { "SrcIPs": [ @@ -991,406 +195,9 @@ } ] } - ], - "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": [ - { - "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": { - "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-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": { - "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/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": { - "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-client/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-client/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-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": [ @@ -1409,406 +216,9 @@ } ] } - ], - "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": [ - { - "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": { - "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-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": { - "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.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": { - "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-prod/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-prod/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-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": [ @@ -1827,406 +237,9 @@ } ] } - ], - "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": [ - { - "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": { - "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": [ { "SrcIPs": [ @@ -2245,406 +258,9 @@ } ] } - ], - "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": [ - { - "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": { - "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/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": { - "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/user-kris/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/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": { - "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/user-kris/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-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": [ @@ -2663,406 +279,9 @@ } ] } - ], - "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": [ - { - "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": { - "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/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": { - "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/user-mon/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/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": { - "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.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": { - "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 - } - } - } + ] }, "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": [ @@ -3081,400 +300,7 @@ } ] } - ], - "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": [ - { - "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": { - "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/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": { - "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/user1/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/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": { - "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/user1/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 - } - } - } + ] } } } diff --git a/hscontrol/policy/v2/testdata/grant_results/GRANT-P10_2.hujson b/hscontrol/policy/v2/testdata/grant_results/GRANT-P10_2.hujson index 9cf6d5e60..011303aaa 100644 --- a/hscontrol/policy/v2/testdata/grant_results/GRANT-P10_2.hujson +++ b/hscontrol/policy/v2/testdata/grant_results/GRANT-P10_2.hujson @@ -5,23 +5,37 @@ // Expected: Rules on subnet-router { "test_id": "GRANT-P10_2", - "timestamp": "2026-02-23T01:09:36Z", - "propagation_wait_seconds": 15, "input": { - "policy_file": "/home/kradalby/acl-explore/grant_policies/grant_p10_2.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -30,102 +44,89 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "grants": [ { - "src": ["tag:router"], - "dst": ["tag:router"], - "ip": ["*"] + "src": [ + "tag:router" + ], + "dst": [ + "tag:router" + ], + "ip": [ + "*" + ] } ] }, - "grants_section": [ - { - "src": ["tag:router"], - "dst": ["tag:router"], - "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"], + "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"], + "tags": [ + "tag:router" + ], "ipv4": "100.92.142.61", - "ipv6": "fd7a:115c:a1e0::3e37:8e3d", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] + "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"], + "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"], + "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"], + "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" @@ -134,58 +135,15 @@ }, "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 - } - } + "packet_filter_rules": 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.92.142.61", "fd7a:115c:a1e0::3e37:8e3d"], + "SrcIPs": [ + "100.92.142.61", + "fd7a:115c:a1e0::3e37:8e3d" + ], "DstPorts": [ { "IP": "100.92.142.61", @@ -203,338 +161,25 @@ } ] } - ], - "packet_filter_matches": [ - { - "IPProto": [6, 17, 1, 58], - "Srcs": ["100.92.142.61/32", "fd7a:115c:a1e0::3e37:8e3d/128"], - "SrcCaps": null, - "Dsts": [ - { - "Net": "100.92.142.61/32", - "Ports": { - "First": 0, - "Last": 65535 - } - }, - { - "Net": "fd7a:115c:a1e0::3e37:8e3d/128", - "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": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": null } } } diff --git a/hscontrol/policy/v2/testdata/grant_results/GRANT-P10_3.hujson b/hscontrol/policy/v2/testdata/grant_results/GRANT-P10_3.hujson index de225cd9c..a3d3e16a2 100644 --- a/hscontrol/policy/v2/testdata/grant_results/GRANT-P10_3.hujson +++ b/hscontrol/policy/v2/testdata/grant_results/GRANT-P10_3.hujson @@ -5,23 +5,37 @@ // Expected: Rules on subnet-router { "test_id": "GRANT-P10_3", - "timestamp": "2026-02-23T01:09:53Z", - "propagation_wait_seconds": 15, "input": { - "policy_file": "/home/kradalby/acl-explore/grant_policies/grant_p10_3.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -30,102 +44,89 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "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"], - "ip": ["*"] + "src": [ + "*" + ], + "dst": [ + "10.33.0.0/16" + ], + "ip": [ + "*" + ] } ] }, - "grants_section": [ - { - "src": ["*"], - "dst": ["10.33.0.0/16"], - "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"], + "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"], + "tags": [ + "tag:router" + ], "ipv4": "100.92.142.61", - "ipv6": "fd7a:115c:a1e0::3e37:8e3d", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] + "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"], + "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"], + "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"], + "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" @@ -134,101 +135,9 @@ }, "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 - } - } + "packet_filter_rules": 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": [ @@ -247,938 +156,25 @@ } ] } - ], - "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": [ - { - "Net": "10.33.0.0/16", - "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": { - "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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": null } } } diff --git a/hscontrol/policy/v2/testdata/grant_results/GRANT-P10_4.hujson b/hscontrol/policy/v2/testdata/grant_results/GRANT-P10_4.hujson index 833d18bd3..2fd359586 100644 --- a/hscontrol/policy/v2/testdata/grant_results/GRANT-P10_4.hujson +++ b/hscontrol/policy/v2/testdata/grant_results/GRANT-P10_4.hujson @@ -5,23 +5,37 @@ // Expected: Rules on subnet-router { "test_id": "GRANT-P10_4", - "timestamp": "2026-02-23T01:10:09Z", - "propagation_wait_seconds": 15, "input": { - "policy_file": "/home/kradalby/acl-explore/grant_policies/grant_p10_4.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -30,102 +44,89 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "grants": [ { - "src": ["autogroup:member"], - "dst": ["10.33.0.0/16"], - "ip": ["*"] + "src": [ + "autogroup:member" + ], + "dst": [ + "10.33.0.0/16" + ], + "ip": [ + "*" + ] } ] }, - "grants_section": [ - { - "src": ["autogroup:member"], - "dst": ["10.33.0.0/16"], - "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"], + "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"], + "tags": [ + "tag:router" + ], "ipv4": "100.92.142.61", - "ipv6": "fd7a:115c:a1e0::3e37:8e3d", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] + "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"], + "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"], + "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"], + "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" @@ -134,55 +135,9 @@ }, "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 - } - } + "packet_filter_rules": 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": [ @@ -203,611 +158,25 @@ } ] } - ], - "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": "10.33.0.0/16", - "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": { - "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": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": null } } } diff --git a/hscontrol/policy/v2/testdata/grant_results/GRANT-P11_1.hujson b/hscontrol/policy/v2/testdata/grant_results/GRANT-P11_1.hujson index 0377eedf5..01008524e 100644 --- a/hscontrol/policy/v2/testdata/grant_results/GRANT-P11_1.hujson +++ b/hscontrol/policy/v2/testdata/grant_results/GRANT-P11_1.hujson @@ -5,23 +5,37 @@ // Expected: Rules on 8 nodes { "test_id": "GRANT-P11_1", - "timestamp": "2026-02-23T01:10:26Z", - "propagation_wait_seconds": 15, "input": { - "policy_file": "/home/kradalby/acl-explore/grant_policies/grant_p11_1.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -30,102 +44,89 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "grants": [ { - "src": ["*"], - "dst": ["*"], - "ip": ["*"] + "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": 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"], + "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"], + "tags": [ + "tag:router" + ], "ipv4": "100.92.142.61", - "ipv6": "fd7a:115c:a1e0::3e37:8e3d", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] + "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"], + "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"], + "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"], + "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" @@ -134,10 +135,6 @@ }, "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": [ @@ -156,406 +153,9 @@ } ] } - ], - "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": [ - { - "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": { - "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": { - "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/exit-node/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/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": { - "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/exit-node/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/exit-node/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 - } - } - } + ] }, "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": [ @@ -574,405 +174,9 @@ } ] } - ], - "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": [ - { - "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": { - "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": [ { "SrcIPs": [ @@ -991,406 +195,9 @@ } ] } - ], - "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": [ - { - "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": { - "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-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": { - "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/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": { - "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-client/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-client/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-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": [ @@ -1409,406 +216,9 @@ } ] } - ], - "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": [ - { - "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": { - "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-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": { - "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.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": { - "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-prod/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-prod/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-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": [ @@ -1827,406 +237,9 @@ } ] } - ], - "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": [ - { - "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": { - "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": [ { "SrcIPs": [ @@ -2245,406 +258,9 @@ } ] } - ], - "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": [ - { - "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": { - "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/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": { - "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/user-kris/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/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": { - "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/user-kris/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-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": [ @@ -2663,406 +279,9 @@ } ] } - ], - "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": [ - { - "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": { - "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/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": { - "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/user-mon/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/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": { - "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.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": { - "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 - } - } - } + ] }, "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": [ @@ -3081,400 +300,7 @@ } ] } - ], - "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": [ - { - "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": { - "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/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": { - "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/user1/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/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": { - "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/user1/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 - } - } - } + ] } } } diff --git a/hscontrol/policy/v2/testdata/grant_results/GRANT-P11_2.hujson b/hscontrol/policy/v2/testdata/grant_results/GRANT-P11_2.hujson index 9383a4131..5922d7071 100644 --- a/hscontrol/policy/v2/testdata/grant_results/GRANT-P11_2.hujson +++ b/hscontrol/policy/v2/testdata/grant_results/GRANT-P11_2.hujson @@ -5,23 +5,37 @@ // Expected: Rules on exit-node { "test_id": "GRANT-P11_2", - "timestamp": "2026-02-23T01:10:43Z", - "propagation_wait_seconds": 15, "input": { - "policy_file": "/home/kradalby/acl-explore/grant_policies/grant_p11_2.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -30,102 +44,89 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "grants": [ { - "src": ["tag:exit"], - "dst": ["tag:exit"], - "ip": ["*"] + "src": [ + "tag:exit" + ], + "dst": [ + "tag:exit" + ], + "ip": [ + "*" + ] } ] }, - "grants_section": [ - { - "src": ["tag:exit"], - "dst": ["tag:exit"], - "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"], + "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"], + "tags": [ + "tag:router" + ], "ipv4": "100.92.142.61", - "ipv6": "fd7a:115c:a1e0::3e37:8e3d", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] + "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"], + "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"], + "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"], + "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" @@ -134,13 +135,12 @@ }, "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.85.66.106", "fd7a:115c:a1e0::7c37:426a"], + "SrcIPs": [ + "100.85.66.106", + "fd7a:115c:a1e0::7c37:426a" + ], "DstPorts": [ { "IP": "100.85.66.106", @@ -158,383 +158,28 @@ } ] } - ], - "packet_filter_matches": [ - { - "IPProto": [6, 17, 1, 58], - "Srcs": ["100.85.66.106/32", "fd7a:115c:a1e0::7c37:426a/128"], - "SrcCaps": null, - "Dsts": [ - { - "Net": "100.85.66.106/32", - "Ports": { - "First": 0, - "Last": 65535 - } - }, - { - "Net": "fd7a:115c:a1e0::7c37:426a/128", - "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": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": null } } } diff --git a/hscontrol/policy/v2/testdata/grant_results/GRANT-P11_3.hujson b/hscontrol/policy/v2/testdata/grant_results/GRANT-P11_3.hujson index 90fcdaeca..acf5e38db 100644 --- a/hscontrol/policy/v2/testdata/grant_results/GRANT-P11_3.hujson +++ b/hscontrol/policy/v2/testdata/grant_results/GRANT-P11_3.hujson @@ -5,23 +5,37 @@ // Expected: No filter rules on any node { "test_id": "GRANT-P11_3", - "timestamp": "2026-02-23T01:11:00Z", - "propagation_wait_seconds": 15, "input": { - "policy_file": "/home/kradalby/acl-explore/grant_policies/grant_p11_3.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -30,102 +44,89 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "grants": [ { - "src": ["autogroup:member"], - "dst": ["autogroup:internet"], - "ip": ["*"] + "src": [ + "autogroup:member" + ], + "dst": [ + "autogroup:internet" + ], + "ip": [ + "*" + ] } ] }, - "grants_section": [ - { - "src": ["autogroup:member"], - "dst": ["autogroup:internet"], - "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"], + "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"], + "tags": [ + "tag:router" + ], "ipv4": "100.92.142.61", - "ipv6": "fd7a:115c:a1e0::3e37:8e3d", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] + "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"], + "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"], + "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"], + "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" @@ -134,364 +135,28 @@ }, "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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": null } } } diff --git a/hscontrol/policy/v2/testdata/grant_results/GRANT-P13_1.hujson b/hscontrol/policy/v2/testdata/grant_results/GRANT-P13_1.hujson index b25ad760a..6d6038102 100644 --- a/hscontrol/policy/v2/testdata/grant_results/GRANT-P13_1.hujson +++ b/hscontrol/policy/v2/testdata/grant_results/GRANT-P13_1.hujson @@ -5,23 +5,37 @@ // Expected: Rules on subnet-router { "test_id": "GRANT-P13_1", - "timestamp": "2026-02-23T01:11:17Z", - "propagation_wait_seconds": 15, "input": { - "policy_file": "/home/kradalby/acl-explore/grant_policies/grant_p13_1.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -30,102 +44,89 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "grants": [ { - "src": ["autogroup:member"], - "dst": ["10.33.0.0/16"], - "ip": ["22"] + "src": [ + "autogroup:member" + ], + "dst": [ + "10.33.0.0/16" + ], + "ip": [ + "22" + ] } ] }, - "grants_section": [ - { - "src": ["autogroup:member"], - "dst": ["10.33.0.0/16"], - "ip": ["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"], + "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"], + "tags": [ + "tag:router" + ], "ipv4": "100.92.142.61", - "ipv6": "fd7a:115c:a1e0::3e37:8e3d", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] + "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"], + "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"], + "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"], + "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" @@ -134,55 +135,9 @@ }, "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 - } - } + "packet_filter_rules": 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": [ @@ -203,611 +158,25 @@ } ] } - ], - "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": "10.33.0.0/16", - "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/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": { - "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": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": null } } } diff --git a/hscontrol/policy/v2/testdata/grant_results/GRANT-P13_2.hujson b/hscontrol/policy/v2/testdata/grant_results/GRANT-P13_2.hujson index 60614ac15..b89794ffc 100644 --- a/hscontrol/policy/v2/testdata/grant_results/GRANT-P13_2.hujson +++ b/hscontrol/policy/v2/testdata/grant_results/GRANT-P13_2.hujson @@ -5,23 +5,37 @@ // Expected: Rules on subnet-router { "test_id": "GRANT-P13_2", - "timestamp": "2026-02-23T01:11:34Z", - "propagation_wait_seconds": 15, "input": { - "policy_file": "/home/kradalby/acl-explore/grant_policies/grant_p13_2.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -30,102 +44,89 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "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"], - "ip": ["80-443"] + "src": [ + "*" + ], + "dst": [ + "10.33.0.0/16" + ], + "ip": [ + "80-443" + ] } ] }, - "grants_section": [ - { - "src": ["*"], - "dst": ["10.33.0.0/16"], - "ip": ["80-443"] - } - ], - "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"], + "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"], + "tags": [ + "tag:router" + ], "ipv4": "100.92.142.61", - "ipv6": "fd7a:115c:a1e0::3e37:8e3d", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] + "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"], + "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"], + "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"], + "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" @@ -134,101 +135,9 @@ }, "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 - } - } + "packet_filter_rules": 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": [ @@ -247,938 +156,25 @@ } ] } - ], - "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": [ - { - "Net": "10.33.0.0/16", - "Ports": { - "First": 80, - "Last": 443 - } - } - ], - "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": { - "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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": null } } } diff --git a/hscontrol/policy/v2/testdata/grant_results/GRANT-P13_3.hujson b/hscontrol/policy/v2/testdata/grant_results/GRANT-P13_3.hujson index d3810bbec..ffa0f2533 100644 --- a/hscontrol/policy/v2/testdata/grant_results/GRANT-P13_3.hujson +++ b/hscontrol/policy/v2/testdata/grant_results/GRANT-P13_3.hujson @@ -5,23 +5,37 @@ // Expected: Rules on subnet-router { "test_id": "GRANT-P13_3", - "timestamp": "2026-02-23T01:11:50Z", - "propagation_wait_seconds": 15, "input": { - "policy_file": "/home/kradalby/acl-explore/grant_policies/grant_p13_3.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -30,102 +44,91 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "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"], - "ip": ["22", "80", "443"] + "src": [ + "*" + ], + "dst": [ + "10.33.0.0/16" + ], + "ip": [ + "22", + "80", + "443" + ] } ] }, - "grants_section": [ - { - "src": ["*"], - "dst": ["10.33.0.0/16"], - "ip": ["22", "80", "443"] - } - ], - "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"], + "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"], + "tags": [ + "tag:router" + ], "ipv4": "100.92.142.61", - "ipv6": "fd7a:115c:a1e0::3e37:8e3d", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] + "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"], + "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"], + "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"], + "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" @@ -134,101 +137,9 @@ }, "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 - } - } + "packet_filter_rules": 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": [ @@ -261,952 +172,25 @@ } ] } - ], - "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": [ - { - "Net": "10.33.0.0/16", - "Ports": { - "First": 22, - "Last": 22 - } - }, - { - "Net": "10.33.0.0/16", - "Ports": { - "First": 80, - "Last": 80 - } - }, - { - "Net": "10.33.0.0/16", - "Ports": { - "First": 443, - "Last": 443 - } - } - ], - "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": { - "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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": null } } } diff --git a/hscontrol/policy/v2/testdata/grant_results/GRANT-P13_4.hujson b/hscontrol/policy/v2/testdata/grant_results/GRANT-P13_4.hujson index 75eea7e4b..e77e90a72 100644 --- a/hscontrol/policy/v2/testdata/grant_results/GRANT-P13_4.hujson +++ b/hscontrol/policy/v2/testdata/grant_results/GRANT-P13_4.hujson @@ -5,23 +5,37 @@ // Expected: Rules on user-kris, user-mon, user1 { "test_id": "GRANT-P13_4", - "timestamp": "2026-02-23T01:12:07Z", - "propagation_wait_seconds": 15, "input": { - "policy_file": "/home/kradalby/acl-explore/grant_policies/grant_p13_4.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -30,102 +44,89 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "grants": [ { - "src": ["10.33.0.0/16"], - "dst": ["autogroup:member"], - "ip": ["*"] + "src": [ + "10.33.0.0/16" + ], + "dst": [ + "autogroup:member" + ], + "ip": [ + "*" + ] } ] }, - "grants_section": [ - { - "src": ["10.33.0.0/16"], - "dst": ["autogroup:member"], - "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"], + "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"], + "tags": [ + "tag:router" + ], "ipv4": "100.92.142.61", - "ipv6": "fd7a:115c:a1e0::3e37:8e3d", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] + "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"], + "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"], + "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"], + "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" @@ -134,373 +135,26 @@ }, "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 - } - } + "packet_filter_rules": 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": { - "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 - } - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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": ["10.33.0.0/16"], + "SrcIPs": [ + "10.33.0.0/16" + ], "DstPorts": [ { "IP": "100.110.121.96", @@ -518,123 +172,14 @@ } ] } - ], - "packet_filter_matches": [ - { - "IPProto": [6, 17, 1, 58], - "Srcs": ["10.33.0.0/16"], - "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": [] - } - ], - "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": [ { - "SrcIPs": ["10.33.0.0/16"], + "SrcIPs": [ + "10.33.0.0/16" + ], "DstPorts": [ { "IP": "100.103.90.82", @@ -652,123 +197,14 @@ } ] } - ], - "packet_filter_matches": [ - { - "IPProto": [6, 17, 1, 58], - "Srcs": ["10.33.0.0/16"], - "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": [] - } - ], - "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": [ { - "SrcIPs": ["10.33.0.0/16"], + "SrcIPs": [ + "10.33.0.0/16" + ], "DstPorts": [ { "IP": "100.90.199.68", @@ -786,114 +222,7 @@ } ] } - ], - "packet_filter_matches": [ - { - "IPProto": [6, 17, 1, 58], - "Srcs": ["10.33.0.0/16"], - "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": [] - } - ], - "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 - } - } + ] } } } diff --git a/hscontrol/policy/v2/testdata/grant_results/GRANT-P15_1.hujson b/hscontrol/policy/v2/testdata/grant_results/GRANT-P15_1.hujson index f5d183337..5135dd99c 100644 --- a/hscontrol/policy/v2/testdata/grant_results/GRANT-P15_1.hujson +++ b/hscontrol/policy/v2/testdata/grant_results/GRANT-P15_1.hujson @@ -5,23 +5,37 @@ // Expected: Rules on subnet-router { "test_id": "GRANT-P15_1", - "timestamp": "2026-02-23T01:12:24Z", - "propagation_wait_seconds": 15, "input": { - "policy_file": "/home/kradalby/acl-explore/grant_policies/grant_p15_1.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -30,102 +44,89 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "grants": [ { - "src": ["autogroup:member"], - "dst": ["10.33.1.0/24"], - "ip": ["22"] + "src": [ + "autogroup:member" + ], + "dst": [ + "10.33.1.0/24" + ], + "ip": [ + "22" + ] } ] }, - "grants_section": [ - { - "src": ["autogroup:member"], - "dst": ["10.33.1.0/24"], - "ip": ["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"], + "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"], + "tags": [ + "tag:router" + ], "ipv4": "100.92.142.61", - "ipv6": "fd7a:115c:a1e0::3e37:8e3d", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] + "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"], + "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"], + "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"], + "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" @@ -134,55 +135,9 @@ }, "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 - } - } + "packet_filter_rules": 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": [ @@ -203,611 +158,25 @@ } ] } - ], - "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": "10.33.1.0/24", - "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/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": { - "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": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": null } } } diff --git a/hscontrol/policy/v2/testdata/grant_results/GRANT-P15_2.hujson b/hscontrol/policy/v2/testdata/grant_results/GRANT-P15_2.hujson index 3ba8a535d..974fcac75 100644 --- a/hscontrol/policy/v2/testdata/grant_results/GRANT-P15_2.hujson +++ b/hscontrol/policy/v2/testdata/grant_results/GRANT-P15_2.hujson @@ -5,23 +5,37 @@ // Expected: No filter rules on any node { "test_id": "GRANT-P15_2", - "timestamp": "2026-02-23T01:12:41Z", - "propagation_wait_seconds": 15, "input": { - "policy_file": "/home/kradalby/acl-explore/grant_policies/grant_p15_2.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -30,102 +44,89 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "grants": [ { - "src": ["autogroup:member"], - "dst": ["10.1.0.0/16"], - "ip": ["22"] + "src": [ + "autogroup:member" + ], + "dst": [ + "10.1.0.0/16" + ], + "ip": [ + "22" + ] } ] }, - "grants_section": [ - { - "src": ["autogroup:member"], - "dst": ["10.1.0.0/16"], - "ip": ["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"], + "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"], + "tags": [ + "tag:router" + ], "ipv4": "100.92.142.61", - "ipv6": "fd7a:115c:a1e0::3e37:8e3d", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] + "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"], + "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"], + "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"], + "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" @@ -134,364 +135,28 @@ }, "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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": null } } } diff --git a/hscontrol/policy/v2/testdata/grant_results/GRANT-P15_3.hujson b/hscontrol/policy/v2/testdata/grant_results/GRANT-P15_3.hujson index bd5a02dde..32d2eba99 100644 --- a/hscontrol/policy/v2/testdata/grant_results/GRANT-P15_3.hujson +++ b/hscontrol/policy/v2/testdata/grant_results/GRANT-P15_3.hujson @@ -5,23 +5,37 @@ // Expected: Rules on subnet-router { "test_id": "GRANT-P15_3", - "timestamp": "2026-02-23T01:12:57Z", - "propagation_wait_seconds": 15, "input": { - "policy_file": "/home/kradalby/acl-explore/grant_policies/grant_p15_3.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -30,102 +44,89 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "grants": [ { - "src": ["autogroup:member"], - "dst": ["10.32.0.0/14"], - "ip": ["22"] + "src": [ + "autogroup:member" + ], + "dst": [ + "10.32.0.0/14" + ], + "ip": [ + "22" + ] } ] }, - "grants_section": [ - { - "src": ["autogroup:member"], - "dst": ["10.32.0.0/14"], - "ip": ["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"], + "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"], + "tags": [ + "tag:router" + ], "ipv4": "100.92.142.61", - "ipv6": "fd7a:115c:a1e0::3e37:8e3d", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] + "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"], + "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"], + "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"], + "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" @@ -134,55 +135,9 @@ }, "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 - } - } + "packet_filter_rules": 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": [ @@ -203,611 +158,25 @@ } ] } - ], - "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": "10.32.0.0/14", - "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/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": { - "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": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": null } } } diff --git a/hscontrol/policy/v2/testdata/grant_results/GRANT-P15_4.hujson b/hscontrol/policy/v2/testdata/grant_results/GRANT-P15_4.hujson index 435e4dcd9..0de845eea 100644 --- a/hscontrol/policy/v2/testdata/grant_results/GRANT-P15_4.hujson +++ b/hscontrol/policy/v2/testdata/grant_results/GRANT-P15_4.hujson @@ -5,23 +5,37 @@ // Expected: No filter rules on any node { "test_id": "GRANT-P15_4", - "timestamp": "2026-02-23T01:13:14Z", - "propagation_wait_seconds": 15, "input": { - "policy_file": "/home/kradalby/acl-explore/grant_policies/grant_p15_4.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -30,102 +44,89 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "grants": [ { - "src": ["autogroup:member"], - "dst": ["8.8.8.0/24"], - "ip": ["53"] + "src": [ + "autogroup:member" + ], + "dst": [ + "8.8.8.0/24" + ], + "ip": [ + "53" + ] } ] }, - "grants_section": [ - { - "src": ["autogroup:member"], - "dst": ["8.8.8.0/24"], - "ip": ["53"] - } - ], - "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"], + "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"], + "tags": [ + "tag:router" + ], "ipv4": "100.92.142.61", - "ipv6": "fd7a:115c:a1e0::3e37:8e3d", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] + "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"], + "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"], + "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"], + "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" @@ -134,364 +135,28 @@ }, "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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": null } } } diff --git a/hscontrol/policy/v2/testdata/grant_results/GRANT-P15_5.hujson b/hscontrol/policy/v2/testdata/grant_results/GRANT-P15_5.hujson index 5ea036aa6..ecb5ddb6f 100644 --- a/hscontrol/policy/v2/testdata/grant_results/GRANT-P15_5.hujson +++ b/hscontrol/policy/v2/testdata/grant_results/GRANT-P15_5.hujson @@ -5,23 +5,37 @@ // Expected: No filter rules on any node { "test_id": "GRANT-P15_5", - "timestamp": "2026-02-23T01:13:31Z", - "propagation_wait_seconds": 15, "input": { - "policy_file": "/home/kradalby/acl-explore/grant_policies/grant_p15_5.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -30,102 +44,89 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "grants": [ { - "src": ["autogroup:member"], - "dst": ["10.32.0.100/32"], - "ip": ["80"] + "src": [ + "autogroup:member" + ], + "dst": [ + "10.32.0.100/32" + ], + "ip": [ + "80" + ] } ] }, - "grants_section": [ - { - "src": ["autogroup:member"], - "dst": ["10.32.0.100/32"], - "ip": ["80"] - } - ], - "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"], + "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"], + "tags": [ + "tag:router" + ], "ipv4": "100.92.142.61", - "ipv6": "fd7a:115c:a1e0::3e37:8e3d", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] + "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"], + "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"], + "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"], + "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" @@ -134,364 +135,28 @@ }, "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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": null } } } diff --git a/hscontrol/policy/v2/testdata/grant_results/GRANT-P15_6.hujson b/hscontrol/policy/v2/testdata/grant_results/GRANT-P15_6.hujson index 4bf25f56e..195883154 100644 --- a/hscontrol/policy/v2/testdata/grant_results/GRANT-P15_6.hujson +++ b/hscontrol/policy/v2/testdata/grant_results/GRANT-P15_6.hujson @@ -5,23 +5,37 @@ // Expected: No filter rules on any node { "test_id": "GRANT-P15_6", - "timestamp": "2026-02-23T01:13:48Z", - "propagation_wait_seconds": 15, "input": { - "policy_file": "/home/kradalby/acl-explore/grant_policies/grant_p15_6.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -30,102 +44,89 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "grants": [ { - "src": ["autogroup:member"], - "dst": ["fd00:1::/64"], - "ip": ["443"] + "src": [ + "autogroup:member" + ], + "dst": [ + "fd00:1::/64" + ], + "ip": [ + "443" + ] } ] }, - "grants_section": [ - { - "src": ["autogroup:member"], - "dst": ["fd00:1::/64"], - "ip": ["443"] - } - ], - "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"], + "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"], + "tags": [ + "tag:router" + ], "ipv4": "100.92.142.61", - "ipv6": "fd7a:115c:a1e0::3e37:8e3d", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] + "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"], + "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"], + "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"], + "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" @@ -134,364 +135,28 @@ }, "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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": null } } } diff --git a/hscontrol/policy/v2/testdata/grant_results/GRANT-V01.hujson b/hscontrol/policy/v2/testdata/grant_results/GRANT-V01.hujson index 845fc0f21..c5dadb5c3 100644 --- a/hscontrol/policy/v2/testdata/grant_results/GRANT-V01.hujson +++ b/hscontrol/policy/v2/testdata/grant_results/GRANT-V01.hujson @@ -5,24 +5,38 @@ // Expected: Error (HTTP 400) — cannot use app grants with autogroup:internet { "test_id": "GRANT-V01", - "description": "", - "timestamp": "2026-02-23T15:12:54Z", "error": true, "input": { - "policy_file": "grant_policies_v2/grant_v01.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -31,15 +45,25 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "grants": [ { - "src": ["*"], - "dst": ["autogroup:internet"], + "src": [ + "*" + ], + "dst": [ + "autogroup:internet" + ], "app": { "example.com/cap/internet-access": [ { @@ -50,16 +74,9 @@ } ] }, - "grants_section": [ - { - "src": ["*"], - "dst": ["autogroup:internet"], - "app": { "example.com/cap/internet-access": [{ "level": "full" }] } - } - ], - "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 app grants with autogroup:internet" } + "api_response_body": { + "message": "cannot use app grants with autogroup:internet" + } } } diff --git a/hscontrol/policy/v2/testdata/grant_results/GRANT-V02.hujson b/hscontrol/policy/v2/testdata/grant_results/GRANT-V02.hujson index e2c4129f8..e4fcb381a 100644 --- a/hscontrol/policy/v2/testdata/grant_results/GRANT-V02.hujson +++ b/hscontrol/policy/v2/testdata/grant_results/GRANT-V02.hujson @@ -5,23 +5,37 @@ // Expected: Rules on exit-node { "test_id": "GRANT-V02", - "timestamp": "2026-02-23T15:39:40Z", - "propagation_wait_seconds": 8, "input": { - "policy_file": "grant_policies_v2/grant_v02.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -30,15 +44,25 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "grants": [ { - "src": ["*"], - "dst": ["tag:exit"], + "src": [ + "*" + ], + "dst": [ + "tag:exit" + ], "app": { "example.com/cap/exit-control": [ { @@ -49,95 +73,64 @@ } ] }, - "grants_section": [ - { - "src": ["*"], - "dst": ["tag:exit"], - "app": { - "example.com/cap/exit-control": [ - { - "mode": "full" - } - ] - } - } - ], - "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"], + "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"], + "tags": [ + "tag:router" + ], "ipv4": "100.92.142.61", - "ipv6": "fd7a:115c:a1e0::3e37:8e3d", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] + "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"], + "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"], + "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"], + "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" @@ -146,10 +139,6 @@ }, "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": [ @@ -160,7 +149,10 @@ ], "CapGrant": [ { - "Dsts": ["100.85.66.106/32", "fd7a:115c:a1e0::7c37:426a/128"], + "Dsts": [ + "100.85.66.106/32", + "fd7a:115c:a1e0::7c37:426a/128" + ], "CapMap": { "example.com/cap/exit-control": [ { @@ -171,1076 +163,28 @@ } ] } - ], - "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.85.66.106/32", - "Cap": "example.com/cap/exit-control", - "Values": [ - { - "mode": "full" - } - ] - }, - { - "Dst": "fd7a:115c:a1e0::7c37:426a/128", - "Cap": "example.com/cap/exit-control", - "Values": [ - { - "mode": "full" - } - ] - } - ] - } - ], - "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:9779fa96e2ddcd3dac863acc09b50304481964bfb3bccf52ff79d95bbd1a031d", - "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:57299", - "10.65.0.27:57299", - "172.17.0.1:57299", - "172.18.0.1:57299", - "172.19.0.1:57299" - ], - "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": { - "example.com/cap/exit-control": [ - { - "mode": "full" - } - ] - } - } - }, - "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": { - "Node": { - "ID": 4031348162889210, - "StableID": "nf7BTTgoUY11CNTRL", - "Name": "tagged-client.tail78f774.ts.net.", - "User": 1260082990019555, - "Key": "nodekey:3011e53353e49142ea56ae11f81e0dceae0d667093d04ee086dcb1e9c5d3c844", - "DiscoKey": "discokey:7e9099516456f84f9af01c51ce03bc38764c4c02bf6c73a6d4b2495771a6c449", - "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:47452", - "10.65.0.27:47452", - "172.17.0.1:47452", - "172.18.0.1:47452", - "172.19.0.1:47452" - ], - "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/exit-control": [ - { - "mode": "full" - } - ] - } - } - }, - "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": { - "Node": { - "ID": 301794218943819, - "StableID": "neJag6dgM311CNTRL", - "Name": "tagged-prod.tail78f774.ts.net.", - "User": 1260082990019555, - "Key": "nodekey:54c79503322a5d0a9701ce19d11963cfff9c05667ac06ef976af86275ba7080e", - "DiscoKey": "discokey:2dd2ca7f9f1378d3ec23a7d6ba57a735032f9a4f90b6c95b2c2385950ec7ae45", - "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:54907", - "10.65.0.27:54907", - "172.17.0.1:54907", - "172.18.0.1:54907", - "172.19.0.1:54907" - ], - "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/exit-control": [ - { - "mode": "full" - } - ] - } - } - }, - "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:9f71ff1e1652916263ef05d0a5e9d9e18239aa598f956b24c563c03a1088cb39", - "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:34495", - "10.65.0.27:34495", - "172.17.0.1:34495", - "172.18.0.1:34495", - "172.19.0.1:34495" - ], - "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": { - "example.com/cap/exit-control": [ - { - "mode": "full" - } - ] - } - } - }, - "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": { - "Node": { - "ID": 7728836216590060, - "StableID": "nf4dJTRQM321CNTRL", - "Name": "user-kris.tail78f774.ts.net.", - "User": 4538565228176803, - "Key": "nodekey:40d0f8f49fd519e4a4a2b7d278dcc8863254d4fb8b0219f1d1304cdd172e795f", - "KeyExpiry": "2026-08-19T14:09:34Z", - "DiscoKey": "discokey:9841ea823abefc7197a67b2b33ba551868a344e64ecd27e00d1a100e5e9e5427", - "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:42311", - "10.65.0.27:42311", - "172.17.0.1:42311", - "172.18.0.1:42311", - "172.19.0.1:42311" - ], - "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/exit-control": [ - { - "mode": "full" - } - ] - } - } - }, - "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": { - "Node": { - "ID": 1840115676059256, - "StableID": "nFzZ7giPNF11CNTRL", - "Name": "user-mon.tail78f774.ts.net.", - "User": 3982058329734709, - "Key": "nodekey:1ca6cca66d2b3811ec290c2f7ac30125c3568e19e303a8e30f6b165c9ee75a51", - "KeyExpiry": "2026-08-19T14:09:00Z", - "DiscoKey": "discokey:733598f0f74431b5b2b28fb5980d8b2f79b5ca5524664998d1d011a651643211", - "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:50398", - "10.65.0.27:50398", - "172.17.0.1:50398", - "172.18.0.1:50398", - "172.19.0.1:50398" - ], - "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/exit-control": [ - { - "mode": "full" - } - ] - } - } - }, - "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": { - "Node": { - "ID": 539541576444929, - "StableID": "nSq9YrqMD511CNTRL", - "Name": "user1.tail78f774.ts.net.", - "User": 4156223528223174, - "Key": "nodekey:96338a2cd2ea803c915ed8fdf882d66ca0c6a59d0fcf0bc4b3f928d22d1ac743", - "KeyExpiry": "2026-07-22T10:04:13Z", - "DiscoKey": "discokey:203d3bfbd67a06d210c027c546a05658fba93aeaea5042b12d50b93d31a5d156", - "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:44240", - "10.65.0.27:44240", - "172.17.0.1:44240", - "172.18.0.1:44240", - "172.19.0.1:44240" - ], - "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/exit-control": [ - { - "mode": "full" - } - ] - } - } - } - } + ] }, "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:701f9ed9296436d3251a9d00d061859edb5ee55602bc0ecf7c64330adc77c815", - "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:47924", - "10.65.0.27:47924", - "172.17.0.1:47924", - "172.18.0.1:47924", - "172.19.0.1:47924" - ], - "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": 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 - } - } + "packet_filter_rules": 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": { - "Node": { - "ID": 4041918547170221, - "StableID": "ngCb76MbZY11CNTRL", - "Name": "exit-node.tail78f774.ts.net.", - "User": 1260082990019555, - "Key": "nodekey:90f4a7b9dc024f1ddec414a49de2aa7611a2dd86efc9d7bae30862ad7c954269", - "DiscoKey": "discokey:701f9ed9296436d3251a9d00d061859edb5ee55602bc0ecf7c64330adc77c815", - "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:47924", - "10.65.0.27:47924", - "172.17.0.1:47924", - "172.18.0.1:47924", - "172.19.0.1:47924" - ], - "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-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 - } - } + "packet_filter_rules": 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": { - "Node": { - "ID": 4041918547170221, - "StableID": "ngCb76MbZY11CNTRL", - "Name": "exit-node.tail78f774.ts.net.", - "User": 1260082990019555, - "Key": "nodekey:90f4a7b9dc024f1ddec414a49de2aa7611a2dd86efc9d7bae30862ad7c954269", - "DiscoKey": "discokey:701f9ed9296436d3251a9d00d061859edb5ee55602bc0ecf7c64330adc77c815", - "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:47924", - "10.65.0.27:47924", - "172.17.0.1:47924", - "172.18.0.1:47924", - "172.19.0.1:47924" - ], - "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-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 - } - } + "packet_filter_rules": 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": { - "Node": { - "ID": 4041918547170221, - "StableID": "ngCb76MbZY11CNTRL", - "Name": "exit-node.tail78f774.ts.net.", - "User": 1260082990019555, - "Key": "nodekey:90f4a7b9dc024f1ddec414a49de2aa7611a2dd86efc9d7bae30862ad7c954269", - "DiscoKey": "discokey:701f9ed9296436d3251a9d00d061859edb5ee55602bc0ecf7c64330adc77c815", - "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:47924", - "10.65.0.27:47924", - "172.17.0.1:47924", - "172.18.0.1:47924", - "172.19.0.1:47924" - ], - "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": 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 - } - } + "packet_filter_rules": 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": { - "Node": { - "ID": 4041918547170221, - "StableID": "ngCb76MbZY11CNTRL", - "Name": "exit-node.tail78f774.ts.net.", - "User": 1260082990019555, - "Key": "nodekey:90f4a7b9dc024f1ddec414a49de2aa7611a2dd86efc9d7bae30862ad7c954269", - "DiscoKey": "discokey:701f9ed9296436d3251a9d00d061859edb5ee55602bc0ecf7c64330adc77c815", - "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:47924", - "10.65.0.27:47924", - "172.17.0.1:47924", - "172.18.0.1:47924", - "172.19.0.1:47924" - ], - "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/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 - } - } + "packet_filter_rules": 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": { - "Node": { - "ID": 4041918547170221, - "StableID": "ngCb76MbZY11CNTRL", - "Name": "exit-node.tail78f774.ts.net.", - "User": 1260082990019555, - "Key": "nodekey:90f4a7b9dc024f1ddec414a49de2aa7611a2dd86efc9d7bae30862ad7c954269", - "DiscoKey": "discokey:701f9ed9296436d3251a9d00d061859edb5ee55602bc0ecf7c64330adc77c815", - "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:47924", - "10.65.0.27:47924", - "172.17.0.1:47924", - "172.18.0.1:47924", - "172.19.0.1:47924" - ], - "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/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 - } - } + "packet_filter_rules": 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": { - "Node": { - "ID": 4041918547170221, - "StableID": "ngCb76MbZY11CNTRL", - "Name": "exit-node.tail78f774.ts.net.", - "User": 1260082990019555, - "Key": "nodekey:90f4a7b9dc024f1ddec414a49de2aa7611a2dd86efc9d7bae30862ad7c954269", - "DiscoKey": "discokey:701f9ed9296436d3251a9d00d061859edb5ee55602bc0ecf7c64330adc77c815", - "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:47924", - "10.65.0.27:47924", - "172.17.0.1:47924", - "172.18.0.1:47924", - "172.19.0.1:47924" - ], - "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/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 - } - } + "packet_filter_rules": null } } } diff --git a/hscontrol/policy/v2/testdata/grant_results/GRANT-V03.hujson b/hscontrol/policy/v2/testdata/grant_results/GRANT-V03.hujson index 3c9200ba8..e51c94b1c 100644 --- a/hscontrol/policy/v2/testdata/grant_results/GRANT-V03.hujson +++ b/hscontrol/policy/v2/testdata/grant_results/GRANT-V03.hujson @@ -5,23 +5,37 @@ // Expected: Rules on subnet-router { "test_id": "GRANT-V03", - "timestamp": "2026-02-23T15:39:49Z", - "propagation_wait_seconds": 8, "input": { - "policy_file": "grant_policies_v2/grant_v03.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -30,15 +44,25 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "grants": [ { - "src": ["*"], - "dst": ["tag:router"], + "src": [ + "*" + ], + "dst": [ + "tag:router" + ], "app": { "example.com/cap/router-admin": [ { @@ -49,95 +73,64 @@ } ] }, - "grants_section": [ - { - "src": ["*"], - "dst": ["tag:router"], - "app": { - "example.com/cap/router-admin": [ - { - "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"], + "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"], + "tags": [ + "tag:router" + ], "ipv4": "100.92.142.61", - "ipv6": "fd7a:115c:a1e0::3e37:8e3d", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] + "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"], + "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"], + "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"], + "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" @@ -146,100 +139,9 @@ }, "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:9779fa96e2ddcd3dac863acc09b50304481964bfb3bccf52ff79d95bbd1a031d", - "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:57299", - "10.65.0.27:57299", - "172.17.0.1:57299", - "172.18.0.1:57299", - "172.19.0.1:57299" - ], - "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": 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 - } - } + "packet_filter_rules": 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": [ @@ -250,7 +152,10 @@ ], "CapGrant": [ { - "Dsts": ["100.92.142.61/32", "fd7a:115c:a1e0::3e37:8e3d/128"], + "Dsts": [ + "100.92.142.61/32", + "fd7a:115c:a1e0::3e37:8e3d/128" + ], "CapMap": { "example.com/cap/router-admin": [ { @@ -261,985 +166,25 @@ } ] } - ], - "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.92.142.61/32", - "Cap": "example.com/cap/router-admin", - "Values": [ - { - "role": "admin" - } - ] - }, - { - "Dst": "fd7a:115c:a1e0::3e37:8e3d/128", - "Cap": "example.com/cap/router-admin", - "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/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:701f9ed9296436d3251a9d00d061859edb5ee55602bc0ecf7c64330adc77c815", - "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:47924", - "10.65.0.27:47924", - "172.17.0.1:47924", - "172.18.0.1:47924", - "172.19.0.1:47924" - ], - "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/router-admin": [ - { - "role": "admin" - } - ] - } - } - }, - "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:7e9099516456f84f9af01c51ce03bc38764c4c02bf6c73a6d4b2495771a6c449", - "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:47452", - "10.65.0.27:47452", - "172.17.0.1:47452", - "172.18.0.1:47452", - "172.19.0.1:47452" - ], - "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/router-admin": [ - { - "role": "admin" - } - ] - } - } - }, - "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:2dd2ca7f9f1378d3ec23a7d6ba57a735032f9a4f90b6c95b2c2385950ec7ae45", - "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:54907", - "10.65.0.27:54907", - "172.17.0.1:54907", - "172.18.0.1:54907", - "172.19.0.1:54907" - ], - "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/router-admin": [ - { - "role": "admin" - } - ] - } - } - }, - "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:9f71ff1e1652916263ef05d0a5e9d9e18239aa598f956b24c563c03a1088cb39", - "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:34495", - "10.65.0.27:34495", - "172.17.0.1:34495", - "172.18.0.1:34495", - "172.19.0.1:34495" - ], - "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": { - "example.com/cap/router-admin": [ - { - "role": "admin" - } - ] - } - } - }, - "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:9841ea823abefc7197a67b2b33ba551868a344e64ecd27e00d1a100e5e9e5427", - "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:42311", - "10.65.0.27:42311", - "172.17.0.1:42311", - "172.18.0.1:42311", - "172.19.0.1:42311" - ], - "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/router-admin": [ - { - "role": "admin" - } - ] - } - } - }, - "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:733598f0f74431b5b2b28fb5980d8b2f79b5ca5524664998d1d011a651643211", - "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:50398", - "10.65.0.27:50398", - "172.17.0.1:50398", - "172.18.0.1:50398", - "172.19.0.1:50398" - ], - "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/router-admin": [ - { - "role": "admin" - } - ] - } - } - }, - "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:203d3bfbd67a06d210c027c546a05658fba93aeaea5042b12d50b93d31a5d156", - "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:44240", - "10.65.0.27:44240", - "172.17.0.1:44240", - "172.18.0.1:44240", - "172.19.0.1:44240" - ], - "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/router-admin": [ - { - "role": "admin" - } - ] - } - } - } - } + ] }, "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:9779fa96e2ddcd3dac863acc09b50304481964bfb3bccf52ff79d95bbd1a031d", - "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:57299", - "10.65.0.27:57299", - "172.17.0.1:57299", - "172.18.0.1:57299", - "172.19.0.1:57299" - ], - "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": 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 - } - } + "packet_filter_rules": 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:9779fa96e2ddcd3dac863acc09b50304481964bfb3bccf52ff79d95bbd1a031d", - "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:57299", - "10.65.0.27:57299", - "172.17.0.1:57299", - "172.18.0.1:57299", - "172.19.0.1:57299" - ], - "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": 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 - } - } + "packet_filter_rules": 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:9779fa96e2ddcd3dac863acc09b50304481964bfb3bccf52ff79d95bbd1a031d", - "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:57299", - "10.65.0.27:57299", - "172.17.0.1:57299", - "172.18.0.1:57299", - "172.19.0.1:57299" - ], - "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": 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 - } - } + "packet_filter_rules": 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:9779fa96e2ddcd3dac863acc09b50304481964bfb3bccf52ff79d95bbd1a031d", - "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:57299", - "10.65.0.27:57299", - "172.17.0.1:57299", - "172.18.0.1:57299", - "172.19.0.1:57299" - ], - "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": 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 - } - } + "packet_filter_rules": 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:9779fa96e2ddcd3dac863acc09b50304481964bfb3bccf52ff79d95bbd1a031d", - "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:57299", - "10.65.0.27:57299", - "172.17.0.1:57299", - "172.18.0.1:57299", - "172.19.0.1:57299" - ], - "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": 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 - } - } + "packet_filter_rules": 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:9779fa96e2ddcd3dac863acc09b50304481964bfb3bccf52ff79d95bbd1a031d", - "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:57299", - "10.65.0.27:57299", - "172.17.0.1:57299", - "172.18.0.1:57299", - "172.19.0.1:57299" - ], - "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": 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 - } - } + "packet_filter_rules": null } } } diff --git a/hscontrol/policy/v2/testdata/grant_results/GRANT-V04.hujson b/hscontrol/policy/v2/testdata/grant_results/GRANT-V04.hujson index ce4f822cd..8d001b03c 100644 --- a/hscontrol/policy/v2/testdata/grant_results/GRANT-V04.hujson +++ b/hscontrol/policy/v2/testdata/grant_results/GRANT-V04.hujson @@ -5,24 +5,38 @@ // Expected: Error (HTTP 400) — dst "0.0.0.0/0": to allow all IP addresses, use "*" or "autogroup:internet" { "test_id": "GRANT-V04", - "description": "", - "timestamp": "2026-02-23T15:39:59Z", "error": true, "input": { - "policy_file": "grant_policies_v2/grant_v04.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -31,24 +45,33 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "grants": [ { - "src": ["*"], - "dst": ["0.0.0.0/0"], + "src": [ + "*" + ], + "dst": [ + "0.0.0.0/0" + ], "app": { - "example.com/cap/global-access": [{}] + "example.com/cap/global-access": [ + {} + ] } } ] }, - "grants_section": [{ "src": ["*"], "dst": ["0.0.0.0/0"], "app": { "example.com/cap/global-access": [{}] } }], - "api_endpoint": "https://api.tailscale.com/api/v2/tailnet/kratail2tid%40passkey/acl", - "api_method": "POST", "api_response_code": 400, "api_response_body": { "message": "dst \"0.0.0.0/0\": to allow all IP addresses, use \"*\" or \"autogroup:internet\"" diff --git a/hscontrol/policy/v2/testdata/grant_results/GRANT-V05.hujson b/hscontrol/policy/v2/testdata/grant_results/GRANT-V05.hujson index 2c668c712..8600b387b 100644 --- a/hscontrol/policy/v2/testdata/grant_results/GRANT-V05.hujson +++ b/hscontrol/policy/v2/testdata/grant_results/GRANT-V05.hujson @@ -5,24 +5,38 @@ // Expected: Error (HTTP 400) — dst "::/0": to allow all IP addresses, use "*" or "autogroup:internet" { "test_id": "GRANT-V05", - "description": "", - "timestamp": "2026-02-23T15:39:59Z", "error": true, "input": { - "policy_file": "grant_policies_v2/grant_v05.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -31,25 +45,36 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "grants": [ { - "src": ["*"], - "dst": ["::/0"], + "src": [ + "*" + ], + "dst": [ + "::/0" + ], "app": { - "example.com/cap/global-v6": [{}] + "example.com/cap/global-v6": [ + {} + ] } } ] }, - "grants_section": [{ "src": ["*"], "dst": ["::/0"], "app": { "example.com/cap/global-v6": [{}] } }], - "api_endpoint": "https://api.tailscale.com/api/v2/tailnet/kratail2tid%40passkey/acl", - "api_method": "POST", "api_response_code": 400, - "api_response_body": { "message": "dst \"::/0\": to allow all IP addresses, use \"*\" or \"autogroup:internet\"" } + "api_response_body": { + "message": "dst \"::/0\": to allow all IP addresses, use \"*\" or \"autogroup:internet\"" + } } } diff --git a/hscontrol/policy/v2/testdata/grant_results/GRANT-V06.hujson b/hscontrol/policy/v2/testdata/grant_results/GRANT-V06.hujson index 1912e3be7..6a6bb2f41 100644 --- a/hscontrol/policy/v2/testdata/grant_results/GRANT-V06.hujson +++ b/hscontrol/policy/v2/testdata/grant_results/GRANT-V06.hujson @@ -5,23 +5,37 @@ // Expected: Rules on exit-node, tagged-server { "test_id": "GRANT-V06", - "timestamp": "2026-02-23T15:39:59Z", - "propagation_wait_seconds": 8, "input": { - "policy_file": "grant_policies_v2/grant_v06.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -30,15 +44,26 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "grants": [ { - "src": ["*"], - "dst": ["tag:server", "tag:exit"], + "src": [ + "*" + ], + "dst": [ + "tag:server", + "tag:exit" + ], "app": { "example.com/cap/multi-dst": [ { @@ -49,95 +74,64 @@ } ] }, - "grants_section": [ - { - "src": ["*"], - "dst": ["tag:server", "tag:exit"], - "app": { - "example.com/cap/multi-dst": [ - { - "scope": "both" - } - ] - } - } - ], - "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"], + "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"], + "tags": [ + "tag:router" + ], "ipv4": "100.92.142.61", - "ipv6": "fd7a:115c:a1e0::3e37:8e3d", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] + "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"], + "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"], + "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"], + "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" @@ -146,10 +140,6 @@ }, "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": [ @@ -160,7 +150,10 @@ ], "CapGrant": [ { - "Dsts": ["100.85.66.106/32", "fd7a:115c:a1e0::7c37:426a/128"], + "Dsts": [ + "100.85.66.106/32", + "fd7a:115c:a1e0::7c37:426a/128" + ], "CapMap": { "example.com/cap/multi-dst": [ { @@ -171,857 +164,18 @@ } ] } - ], - "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.85.66.106/32", - "Cap": "example.com/cap/multi-dst", - "Values": [ - { - "scope": "both" - } - ] - }, - { - "Dst": "fd7a:115c:a1e0::7c37:426a/128", - "Cap": "example.com/cap/multi-dst", - "Values": [ - { - "scope": "both" - } - ] - } - ] - } - ], - "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:9779fa96e2ddcd3dac863acc09b50304481964bfb3bccf52ff79d95bbd1a031d", - "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:57299", - "10.65.0.27:57299", - "172.17.0.1:57299", - "172.18.0.1:57299", - "172.19.0.1:57299" - ], - "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": { - "example.com/cap/multi-dst": [ - { - "scope": "both" - } - ] - } - } - }, - "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": { - "Node": { - "ID": 4031348162889210, - "StableID": "nf7BTTgoUY11CNTRL", - "Name": "tagged-client.tail78f774.ts.net.", - "User": 1260082990019555, - "Key": "nodekey:3011e53353e49142ea56ae11f81e0dceae0d667093d04ee086dcb1e9c5d3c844", - "DiscoKey": "discokey:7e9099516456f84f9af01c51ce03bc38764c4c02bf6c73a6d4b2495771a6c449", - "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:47452", - "10.65.0.27:47452", - "172.17.0.1:47452", - "172.18.0.1:47452", - "172.19.0.1:47452" - ], - "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/multi-dst": [ - { - "scope": "both" - } - ] - } - } - }, - "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": { - "Node": { - "ID": 301794218943819, - "StableID": "neJag6dgM311CNTRL", - "Name": "tagged-prod.tail78f774.ts.net.", - "User": 1260082990019555, - "Key": "nodekey:54c79503322a5d0a9701ce19d11963cfff9c05667ac06ef976af86275ba7080e", - "DiscoKey": "discokey:2dd2ca7f9f1378d3ec23a7d6ba57a735032f9a4f90b6c95b2c2385950ec7ae45", - "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:54907", - "10.65.0.27:54907", - "172.17.0.1:54907", - "172.18.0.1:54907", - "172.19.0.1:54907" - ], - "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/multi-dst": [ - { - "scope": "both" - } - ] - } - } - }, - "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:9f71ff1e1652916263ef05d0a5e9d9e18239aa598f956b24c563c03a1088cb39", - "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:34495", - "10.65.0.27:34495", - "172.17.0.1:34495", - "172.18.0.1:34495", - "172.19.0.1:34495" - ], - "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": { - "example.com/cap/multi-dst": [ - { - "scope": "both" - } - ] - } - } - }, - "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": { - "Node": { - "ID": 7728836216590060, - "StableID": "nf4dJTRQM321CNTRL", - "Name": "user-kris.tail78f774.ts.net.", - "User": 4538565228176803, - "Key": "nodekey:40d0f8f49fd519e4a4a2b7d278dcc8863254d4fb8b0219f1d1304cdd172e795f", - "KeyExpiry": "2026-08-19T14:09:34Z", - "DiscoKey": "discokey:9841ea823abefc7197a67b2b33ba551868a344e64ecd27e00d1a100e5e9e5427", - "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:42311", - "10.65.0.27:42311", - "172.17.0.1:42311", - "172.18.0.1:42311", - "172.19.0.1:42311" - ], - "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/multi-dst": [ - { - "scope": "both" - } - ] - } - } - }, - "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": { - "Node": { - "ID": 1840115676059256, - "StableID": "nFzZ7giPNF11CNTRL", - "Name": "user-mon.tail78f774.ts.net.", - "User": 3982058329734709, - "Key": "nodekey:1ca6cca66d2b3811ec290c2f7ac30125c3568e19e303a8e30f6b165c9ee75a51", - "KeyExpiry": "2026-08-19T14:09:00Z", - "DiscoKey": "discokey:733598f0f74431b5b2b28fb5980d8b2f79b5ca5524664998d1d011a651643211", - "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:50398", - "10.65.0.27:50398", - "172.17.0.1:50398", - "172.18.0.1:50398", - "172.19.0.1:50398" - ], - "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/multi-dst": [ - { - "scope": "both" - } - ] - } - } - }, - "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": { - "Node": { - "ID": 539541576444929, - "StableID": "nSq9YrqMD511CNTRL", - "Name": "user1.tail78f774.ts.net.", - "User": 4156223528223174, - "Key": "nodekey:96338a2cd2ea803c915ed8fdf882d66ca0c6a59d0fcf0bc4b3f928d22d1ac743", - "KeyExpiry": "2026-07-22T10:04:13Z", - "DiscoKey": "discokey:203d3bfbd67a06d210c027c546a05658fba93aeaea5042b12d50b93d31a5d156", - "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:44240", - "10.65.0.27:44240", - "172.17.0.1:44240", - "172.18.0.1:44240", - "172.19.0.1:44240" - ], - "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/multi-dst": [ - { - "scope": "both" - } - ] - } - } - } - } + ] }, "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:701f9ed9296436d3251a9d00d061859edb5ee55602bc0ecf7c64330adc77c815", - "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:47924", - "10.65.0.27:47924", - "172.17.0.1:47924", - "172.18.0.1:47924", - "172.19.0.1:47924" - ], - "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": 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:9f71ff1e1652916263ef05d0a5e9d9e18239aa598f956b24c563c03a1088cb39", - "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:34495", - "10.65.0.27:34495", - "172.17.0.1:34495", - "172.18.0.1:34495", - "172.19.0.1:34495" - ], - "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 - } - } + "packet_filter_rules": 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": { - "Node": { - "ID": 4041918547170221, - "StableID": "ngCb76MbZY11CNTRL", - "Name": "exit-node.tail78f774.ts.net.", - "User": 1260082990019555, - "Key": "nodekey:90f4a7b9dc024f1ddec414a49de2aa7611a2dd86efc9d7bae30862ad7c954269", - "DiscoKey": "discokey:701f9ed9296436d3251a9d00d061859edb5ee55602bc0ecf7c64330adc77c815", - "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:47924", - "10.65.0.27:47924", - "172.17.0.1:47924", - "172.18.0.1:47924", - "172.19.0.1:47924" - ], - "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-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:9f71ff1e1652916263ef05d0a5e9d9e18239aa598f956b24c563c03a1088cb39", - "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:34495", - "10.65.0.27:34495", - "172.17.0.1:34495", - "172.18.0.1:34495", - "172.19.0.1:34495" - ], - "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 - } - } + "packet_filter_rules": 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": { - "Node": { - "ID": 4041918547170221, - "StableID": "ngCb76MbZY11CNTRL", - "Name": "exit-node.tail78f774.ts.net.", - "User": 1260082990019555, - "Key": "nodekey:90f4a7b9dc024f1ddec414a49de2aa7611a2dd86efc9d7bae30862ad7c954269", - "DiscoKey": "discokey:701f9ed9296436d3251a9d00d061859edb5ee55602bc0ecf7c64330adc77c815", - "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:47924", - "10.65.0.27:47924", - "172.17.0.1:47924", - "172.18.0.1:47924", - "172.19.0.1:47924" - ], - "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-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:9f71ff1e1652916263ef05d0a5e9d9e18239aa598f956b24c563c03a1088cb39", - "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:34495", - "10.65.0.27:34495", - "172.17.0.1:34495", - "172.18.0.1:34495", - "172.19.0.1:34495" - ], - "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 - } - } + "packet_filter_rules": 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": [ @@ -1032,7 +186,10 @@ ], "CapGrant": [ { - "Dsts": ["100.108.74.26/32", "fd7a:115c:a1e0::b901:4a87/128"], + "Dsts": [ + "100.108.74.26/32", + "fd7a:115c:a1e0::b901:4a87/128" + ], "CapMap": { "example.com/cap/multi-dst": [ { @@ -1043,851 +200,16 @@ } ] } - ], - "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": "example.com/cap/multi-dst", - "Values": [ - { - "scope": "both" - } - ] - }, - { - "Dst": "fd7a:115c:a1e0::b901:4a87/128", - "Cap": "example.com/cap/multi-dst", - "Values": [ - { - "scope": "both" - } - ] - } - ] - } - ], - "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:701f9ed9296436d3251a9d00d061859edb5ee55602bc0ecf7c64330adc77c815", - "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:47924", - "10.65.0.27:47924", - "172.17.0.1:47924", - "172.18.0.1:47924", - "172.19.0.1:47924" - ], - "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/multi-dst": [ - { - "scope": "both" - } - ] - } - } - }, - "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:9779fa96e2ddcd3dac863acc09b50304481964bfb3bccf52ff79d95bbd1a031d", - "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:57299", - "10.65.0.27:57299", - "172.17.0.1:57299", - "172.18.0.1:57299", - "172.19.0.1:57299" - ], - "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": { - "example.com/cap/multi-dst": [ - { - "scope": "both" - } - ] - } - } - }, - "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:7e9099516456f84f9af01c51ce03bc38764c4c02bf6c73a6d4b2495771a6c449", - "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:47452", - "10.65.0.27:47452", - "172.17.0.1:47452", - "172.18.0.1:47452", - "172.19.0.1:47452" - ], - "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/multi-dst": [ - { - "scope": "both" - } - ] - } - } - }, - "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:2dd2ca7f9f1378d3ec23a7d6ba57a735032f9a4f90b6c95b2c2385950ec7ae45", - "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:54907", - "10.65.0.27:54907", - "172.17.0.1:54907", - "172.18.0.1:54907", - "172.19.0.1:54907" - ], - "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/multi-dst": [ - { - "scope": "both" - } - ] - } - } - }, - "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:9841ea823abefc7197a67b2b33ba551868a344e64ecd27e00d1a100e5e9e5427", - "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:42311", - "10.65.0.27:42311", - "172.17.0.1:42311", - "172.18.0.1:42311", - "172.19.0.1:42311" - ], - "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/multi-dst": [ - { - "scope": "both" - } - ] - } - } - }, - "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:733598f0f74431b5b2b28fb5980d8b2f79b5ca5524664998d1d011a651643211", - "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:50398", - "10.65.0.27:50398", - "172.17.0.1:50398", - "172.18.0.1:50398", - "172.19.0.1:50398" - ], - "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/multi-dst": [ - { - "scope": "both" - } - ] - } - } - }, - "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:203d3bfbd67a06d210c027c546a05658fba93aeaea5042b12d50b93d31a5d156", - "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:44240", - "10.65.0.27:44240", - "172.17.0.1:44240", - "172.18.0.1:44240", - "172.19.0.1:44240" - ], - "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/multi-dst": [ - { - "scope": "both" - } - ] - } - } - } - } + ] }, "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": { - "Node": { - "ID": 4041918547170221, - "StableID": "ngCb76MbZY11CNTRL", - "Name": "exit-node.tail78f774.ts.net.", - "User": 1260082990019555, - "Key": "nodekey:90f4a7b9dc024f1ddec414a49de2aa7611a2dd86efc9d7bae30862ad7c954269", - "DiscoKey": "discokey:701f9ed9296436d3251a9d00d061859edb5ee55602bc0ecf7c64330adc77c815", - "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:47924", - "10.65.0.27:47924", - "172.17.0.1:47924", - "172.18.0.1:47924", - "172.19.0.1:47924" - ], - "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/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:9f71ff1e1652916263ef05d0a5e9d9e18239aa598f956b24c563c03a1088cb39", - "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:34495", - "10.65.0.27:34495", - "172.17.0.1:34495", - "172.18.0.1:34495", - "172.19.0.1:34495" - ], - "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 - } - } + "packet_filter_rules": 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": { - "Node": { - "ID": 4041918547170221, - "StableID": "ngCb76MbZY11CNTRL", - "Name": "exit-node.tail78f774.ts.net.", - "User": 1260082990019555, - "Key": "nodekey:90f4a7b9dc024f1ddec414a49de2aa7611a2dd86efc9d7bae30862ad7c954269", - "DiscoKey": "discokey:701f9ed9296436d3251a9d00d061859edb5ee55602bc0ecf7c64330adc77c815", - "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:47924", - "10.65.0.27:47924", - "172.17.0.1:47924", - "172.18.0.1:47924", - "172.19.0.1:47924" - ], - "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/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:9f71ff1e1652916263ef05d0a5e9d9e18239aa598f956b24c563c03a1088cb39", - "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:34495", - "10.65.0.27:34495", - "172.17.0.1:34495", - "172.18.0.1:34495", - "172.19.0.1:34495" - ], - "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 - } - } + "packet_filter_rules": 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": { - "Node": { - "ID": 4041918547170221, - "StableID": "ngCb76MbZY11CNTRL", - "Name": "exit-node.tail78f774.ts.net.", - "User": 1260082990019555, - "Key": "nodekey:90f4a7b9dc024f1ddec414a49de2aa7611a2dd86efc9d7bae30862ad7c954269", - "DiscoKey": "discokey:701f9ed9296436d3251a9d00d061859edb5ee55602bc0ecf7c64330adc77c815", - "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:47924", - "10.65.0.27:47924", - "172.17.0.1:47924", - "172.18.0.1:47924", - "172.19.0.1:47924" - ], - "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/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:9f71ff1e1652916263ef05d0a5e9d9e18239aa598f956b24c563c03a1088cb39", - "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:34495", - "10.65.0.27:34495", - "172.17.0.1:34495", - "172.18.0.1:34495", - "172.19.0.1:34495" - ], - "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 - } - } + "packet_filter_rules": null } } } diff --git a/hscontrol/policy/v2/testdata/grant_results/GRANT-V07.hujson b/hscontrol/policy/v2/testdata/grant_results/GRANT-V07.hujson index a8fe64643..510f70ebb 100644 --- a/hscontrol/policy/v2/testdata/grant_results/GRANT-V07.hujson +++ b/hscontrol/policy/v2/testdata/grant_results/GRANT-V07.hujson @@ -5,23 +5,37 @@ // Expected: No filter rules on any node { "test_id": "GRANT-V07", - "timestamp": "2026-02-23T15:40:09Z", - "propagation_wait_seconds": 8, "input": { - "policy_file": "grant_policies_v2/grant_v07.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -30,102 +44,89 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "grants": [ { - "src": ["*"], - "dst": ["autogroup:internet"], - "ip": ["tcp:443"] + "src": [ + "*" + ], + "dst": [ + "autogroup:internet" + ], + "ip": [ + "tcp:443" + ] } ] }, - "grants_section": [ - { - "src": ["*"], - "dst": ["autogroup:internet"], - "ip": ["tcp:443"] - } - ], - "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"], + "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"], + "tags": [ + "tag:router" + ], "ipv4": "100.92.142.61", - "ipv6": "fd7a:115c:a1e0::3e37:8e3d", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] + "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"], + "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"], + "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"], + "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" @@ -134,364 +135,28 @@ }, "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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": null } } } diff --git a/hscontrol/policy/v2/testdata/grant_results/GRANT-V08.hujson b/hscontrol/policy/v2/testdata/grant_results/GRANT-V08.hujson index e0dcda8a0..f47c9d459 100644 --- a/hscontrol/policy/v2/testdata/grant_results/GRANT-V08.hujson +++ b/hscontrol/policy/v2/testdata/grant_results/GRANT-V08.hujson @@ -5,24 +5,38 @@ // Expected: Error (HTTP 400) — dst "0.0.0.0/0": to allow all IP addresses, use "*" or "autogroup:internet" { "test_id": "GRANT-V08", - "description": "", - "timestamp": "2026-02-23T15:40:19Z", "error": true, "input": { - "policy_file": "grant_policies_v2/grant_v08.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -31,22 +45,32 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "grants": [ { - "src": ["*"], - "dst": ["0.0.0.0/0"], - "ip": ["tcp:80", "tcp:443"] + "src": [ + "*" + ], + "dst": [ + "0.0.0.0/0" + ], + "ip": [ + "tcp:80", + "tcp:443" + ] } ] }, - "grants_section": [{ "src": ["*"], "dst": ["0.0.0.0/0"], "ip": ["tcp:80", "tcp:443"] }], - "api_endpoint": "https://api.tailscale.com/api/v2/tailnet/kratail2tid%40passkey/acl", - "api_method": "POST", "api_response_code": 400, "api_response_body": { "message": "dst \"0.0.0.0/0\": to allow all IP addresses, use \"*\" or \"autogroup:internet\"" diff --git a/hscontrol/policy/v2/testdata/grant_results/GRANT-V09.hujson b/hscontrol/policy/v2/testdata/grant_results/GRANT-V09.hujson index 700a2127b..09b2d410f 100644 --- a/hscontrol/policy/v2/testdata/grant_results/GRANT-V09.hujson +++ b/hscontrol/policy/v2/testdata/grant_results/GRANT-V09.hujson @@ -5,23 +5,37 @@ // Expected: Rules on exit-node { "test_id": "GRANT-V09", - "timestamp": "2026-02-23T15:40:19Z", - "propagation_wait_seconds": 8, "input": { - "policy_file": "grant_policies_v2/grant_v09.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -30,16 +44,28 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "grants": [ { - "src": ["*"], - "dst": ["tag:exit"], - "ip": ["tcp:443"], + "src": [ + "*" + ], + "dst": [ + "tag:exit" + ], + "ip": [ + "tcp:443" + ], "app": { "example.com/cap/exit-mixed": [ { @@ -50,96 +76,64 @@ } ] }, - "grants_section": [ - { - "src": ["*"], - "dst": ["tag:exit"], - "ip": ["tcp:443"], - "app": { - "example.com/cap/exit-mixed": [ - { - "mode": "proxy" - } - ] - } - } - ], - "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"], + "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"], + "tags": [ + "tag:router" + ], "ipv4": "100.92.142.61", - "ipv6": "fd7a:115c:a1e0::3e37:8e3d", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] + "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"], + "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"], + "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"], + "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" @@ -148,10 +142,6 @@ }, "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": [ @@ -176,7 +166,9 @@ } } ], - "IPProto": [6] + "IPProto": [ + 6 + ] }, { "SrcIPs": [ @@ -187,7 +179,10 @@ ], "CapGrant": [ { - "Dsts": ["100.85.66.106/32", "fd7a:115c:a1e0::7c37:426a/128"], + "Dsts": [ + "100.85.66.106/32", + "fd7a:115c:a1e0::7c37:426a/128" + ], "CapMap": { "example.com/cap/exit-mixed": [ { @@ -198,1114 +193,28 @@ } ] } - ], - "packet_filter_matches": [ - { - "IPProto": [6], - "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": [ - { - "Net": "100.85.66.106/32", - "Ports": { - "First": 443, - "Last": 443 - } - }, - { - "Net": "fd7a:115c:a1e0::7c37:426a/128", - "Ports": { - "First": 443, - "Last": 443 - } - } - ], - "Caps": [] - }, - { - "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.85.66.106/32", - "Cap": "example.com/cap/exit-mixed", - "Values": [ - { - "mode": "proxy" - } - ] - }, - { - "Dst": "fd7a:115c:a1e0::7c37:426a/128", - "Cap": "example.com/cap/exit-mixed", - "Values": [ - { - "mode": "proxy" - } - ] - } - ] - } - ], - "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:9779fa96e2ddcd3dac863acc09b50304481964bfb3bccf52ff79d95bbd1a031d", - "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:57299", - "10.65.0.27:57299", - "172.17.0.1:57299", - "172.18.0.1:57299", - "172.19.0.1:57299" - ], - "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": { - "example.com/cap/exit-mixed": [ - { - "mode": "proxy" - } - ] - } - } - }, - "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": { - "Node": { - "ID": 4031348162889210, - "StableID": "nf7BTTgoUY11CNTRL", - "Name": "tagged-client.tail78f774.ts.net.", - "User": 1260082990019555, - "Key": "nodekey:3011e53353e49142ea56ae11f81e0dceae0d667093d04ee086dcb1e9c5d3c844", - "DiscoKey": "discokey:7e9099516456f84f9af01c51ce03bc38764c4c02bf6c73a6d4b2495771a6c449", - "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:47452", - "10.65.0.27:47452", - "172.17.0.1:47452", - "172.18.0.1:47452", - "172.19.0.1:47452" - ], - "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/exit-mixed": [ - { - "mode": "proxy" - } - ] - } - } - }, - "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": { - "Node": { - "ID": 301794218943819, - "StableID": "neJag6dgM311CNTRL", - "Name": "tagged-prod.tail78f774.ts.net.", - "User": 1260082990019555, - "Key": "nodekey:54c79503322a5d0a9701ce19d11963cfff9c05667ac06ef976af86275ba7080e", - "DiscoKey": "discokey:2dd2ca7f9f1378d3ec23a7d6ba57a735032f9a4f90b6c95b2c2385950ec7ae45", - "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:54907", - "10.65.0.27:54907", - "172.17.0.1:54907", - "172.18.0.1:54907", - "172.19.0.1:54907" - ], - "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/exit-mixed": [ - { - "mode": "proxy" - } - ] - } - } - }, - "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:9f71ff1e1652916263ef05d0a5e9d9e18239aa598f956b24c563c03a1088cb39", - "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:34495", - "10.65.0.27:34495", - "172.17.0.1:34495", - "172.18.0.1:34495", - "172.19.0.1:34495" - ], - "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": { - "example.com/cap/exit-mixed": [ - { - "mode": "proxy" - } - ] - } - } - }, - "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": { - "Node": { - "ID": 7728836216590060, - "StableID": "nf4dJTRQM321CNTRL", - "Name": "user-kris.tail78f774.ts.net.", - "User": 4538565228176803, - "Key": "nodekey:40d0f8f49fd519e4a4a2b7d278dcc8863254d4fb8b0219f1d1304cdd172e795f", - "KeyExpiry": "2026-08-19T14:09:34Z", - "DiscoKey": "discokey:9841ea823abefc7197a67b2b33ba551868a344e64ecd27e00d1a100e5e9e5427", - "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:42311", - "10.65.0.27:42311", - "172.17.0.1:42311", - "172.18.0.1:42311", - "172.19.0.1:42311" - ], - "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/exit-mixed": [ - { - "mode": "proxy" - } - ] - } - } - }, - "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": { - "Node": { - "ID": 1840115676059256, - "StableID": "nFzZ7giPNF11CNTRL", - "Name": "user-mon.tail78f774.ts.net.", - "User": 3982058329734709, - "Key": "nodekey:1ca6cca66d2b3811ec290c2f7ac30125c3568e19e303a8e30f6b165c9ee75a51", - "KeyExpiry": "2026-08-19T14:09:00Z", - "DiscoKey": "discokey:733598f0f74431b5b2b28fb5980d8b2f79b5ca5524664998d1d011a651643211", - "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:50398", - "10.65.0.27:50398", - "172.17.0.1:50398", - "172.18.0.1:50398", - "172.19.0.1:50398" - ], - "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/exit-mixed": [ - { - "mode": "proxy" - } - ] - } - } - }, - "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": { - "Node": { - "ID": 539541576444929, - "StableID": "nSq9YrqMD511CNTRL", - "Name": "user1.tail78f774.ts.net.", - "User": 4156223528223174, - "Key": "nodekey:96338a2cd2ea803c915ed8fdf882d66ca0c6a59d0fcf0bc4b3f928d22d1ac743", - "KeyExpiry": "2026-07-22T10:04:13Z", - "DiscoKey": "discokey:203d3bfbd67a06d210c027c546a05658fba93aeaea5042b12d50b93d31a5d156", - "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:44240", - "10.65.0.27:44240", - "172.17.0.1:44240", - "172.18.0.1:44240", - "172.19.0.1:44240" - ], - "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/exit-mixed": [ - { - "mode": "proxy" - } - ] - } - } - } - } + ] }, "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:701f9ed9296436d3251a9d00d061859edb5ee55602bc0ecf7c64330adc77c815", - "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:47924", - "10.65.0.27:47924", - "172.17.0.1:47924", - "172.18.0.1:47924", - "172.19.0.1:47924" - ], - "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": 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 - } - } + "packet_filter_rules": 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": { - "Node": { - "ID": 4041918547170221, - "StableID": "ngCb76MbZY11CNTRL", - "Name": "exit-node.tail78f774.ts.net.", - "User": 1260082990019555, - "Key": "nodekey:90f4a7b9dc024f1ddec414a49de2aa7611a2dd86efc9d7bae30862ad7c954269", - "DiscoKey": "discokey:701f9ed9296436d3251a9d00d061859edb5ee55602bc0ecf7c64330adc77c815", - "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:47924", - "10.65.0.27:47924", - "172.17.0.1:47924", - "172.18.0.1:47924", - "172.19.0.1:47924" - ], - "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-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 - } - } + "packet_filter_rules": 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": { - "Node": { - "ID": 4041918547170221, - "StableID": "ngCb76MbZY11CNTRL", - "Name": "exit-node.tail78f774.ts.net.", - "User": 1260082990019555, - "Key": "nodekey:90f4a7b9dc024f1ddec414a49de2aa7611a2dd86efc9d7bae30862ad7c954269", - "DiscoKey": "discokey:701f9ed9296436d3251a9d00d061859edb5ee55602bc0ecf7c64330adc77c815", - "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:47924", - "10.65.0.27:47924", - "172.17.0.1:47924", - "172.18.0.1:47924", - "172.19.0.1:47924" - ], - "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-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 - } - } + "packet_filter_rules": 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": { - "Node": { - "ID": 4041918547170221, - "StableID": "ngCb76MbZY11CNTRL", - "Name": "exit-node.tail78f774.ts.net.", - "User": 1260082990019555, - "Key": "nodekey:90f4a7b9dc024f1ddec414a49de2aa7611a2dd86efc9d7bae30862ad7c954269", - "DiscoKey": "discokey:701f9ed9296436d3251a9d00d061859edb5ee55602bc0ecf7c64330adc77c815", - "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:47924", - "10.65.0.27:47924", - "172.17.0.1:47924", - "172.18.0.1:47924", - "172.19.0.1:47924" - ], - "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": 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 - } - } + "packet_filter_rules": 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": { - "Node": { - "ID": 4041918547170221, - "StableID": "ngCb76MbZY11CNTRL", - "Name": "exit-node.tail78f774.ts.net.", - "User": 1260082990019555, - "Key": "nodekey:90f4a7b9dc024f1ddec414a49de2aa7611a2dd86efc9d7bae30862ad7c954269", - "DiscoKey": "discokey:701f9ed9296436d3251a9d00d061859edb5ee55602bc0ecf7c64330adc77c815", - "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:47924", - "10.65.0.27:47924", - "172.17.0.1:47924", - "172.18.0.1:47924", - "172.19.0.1:47924" - ], - "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/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 - } - } + "packet_filter_rules": 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": { - "Node": { - "ID": 4041918547170221, - "StableID": "ngCb76MbZY11CNTRL", - "Name": "exit-node.tail78f774.ts.net.", - "User": 1260082990019555, - "Key": "nodekey:90f4a7b9dc024f1ddec414a49de2aa7611a2dd86efc9d7bae30862ad7c954269", - "DiscoKey": "discokey:701f9ed9296436d3251a9d00d061859edb5ee55602bc0ecf7c64330adc77c815", - "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:47924", - "10.65.0.27:47924", - "172.17.0.1:47924", - "172.18.0.1:47924", - "172.19.0.1:47924" - ], - "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/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 - } - } + "packet_filter_rules": 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": { - "Node": { - "ID": 4041918547170221, - "StableID": "ngCb76MbZY11CNTRL", - "Name": "exit-node.tail78f774.ts.net.", - "User": 1260082990019555, - "Key": "nodekey:90f4a7b9dc024f1ddec414a49de2aa7611a2dd86efc9d7bae30862ad7c954269", - "DiscoKey": "discokey:701f9ed9296436d3251a9d00d061859edb5ee55602bc0ecf7c64330adc77c815", - "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:47924", - "10.65.0.27:47924", - "172.17.0.1:47924", - "172.18.0.1:47924", - "172.19.0.1:47924" - ], - "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/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 - } - } + "packet_filter_rules": null } } } diff --git a/hscontrol/policy/v2/testdata/grant_results/GRANT-V10.hujson b/hscontrol/policy/v2/testdata/grant_results/GRANT-V10.hujson index 19b9b7cf6..4ca81d078 100644 --- a/hscontrol/policy/v2/testdata/grant_results/GRANT-V10.hujson +++ b/hscontrol/policy/v2/testdata/grant_results/GRANT-V10.hujson @@ -5,23 +5,37 @@ // Expected: Rules on subnet-router { "test_id": "GRANT-V10", - "timestamp": "2026-02-23T15:40:28Z", - "propagation_wait_seconds": 8, "input": { - "policy_file": "grant_policies_v2/grant_v10.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -30,16 +44,28 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "grants": [ { - "src": ["*"], - "dst": ["tag:router"], - "ip": ["tcp:80"], + "src": [ + "*" + ], + "dst": [ + "tag:router" + ], + "ip": [ + "tcp:80" + ], "app": { "example.com/cap/router-mixed": [ { @@ -50,96 +76,64 @@ } ] }, - "grants_section": [ - { - "src": ["*"], - "dst": ["tag:router"], - "ip": ["tcp:80"], - "app": { - "example.com/cap/router-mixed": [ - { - "role": "viewer" - } - ] - } - } - ], - "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"], + "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"], + "tags": [ + "tag:router" + ], "ipv4": "100.92.142.61", - "ipv6": "fd7a:115c:a1e0::3e37:8e3d", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] + "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"], + "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"], + "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"], + "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" @@ -148,100 +142,9 @@ }, "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:9779fa96e2ddcd3dac863acc09b50304481964bfb3bccf52ff79d95bbd1a031d", - "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:57299", - "10.65.0.27:57299", - "172.17.0.1:57299", - "172.18.0.1:57299", - "172.19.0.1:57299" - ], - "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": 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 - } - } + "packet_filter_rules": 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": [ @@ -266,7 +169,9 @@ } } ], - "IPProto": [6] + "IPProto": [ + 6 + ] }, { "SrcIPs": [ @@ -277,7 +182,10 @@ ], "CapGrant": [ { - "Dsts": ["100.92.142.61/32", "fd7a:115c:a1e0::3e37:8e3d/128"], + "Dsts": [ + "100.92.142.61/32", + "fd7a:115c:a1e0::3e37:8e3d/128" + ], "CapMap": { "example.com/cap/router-mixed": [ { @@ -288,1023 +196,25 @@ } ] } - ], - "packet_filter_matches": [ - { - "IPProto": [6], - "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": [ - { - "Net": "100.92.142.61/32", - "Ports": { - "First": 80, - "Last": 80 - } - }, - { - "Net": "fd7a:115c:a1e0::3e37:8e3d/128", - "Ports": { - "First": 80, - "Last": 80 - } - } - ], - "Caps": [] - }, - { - "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.92.142.61/32", - "Cap": "example.com/cap/router-mixed", - "Values": [ - { - "role": "viewer" - } - ] - }, - { - "Dst": "fd7a:115c:a1e0::3e37:8e3d/128", - "Cap": "example.com/cap/router-mixed", - "Values": [ - { - "role": "viewer" - } - ] - } - ] - } - ], - "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:701f9ed9296436d3251a9d00d061859edb5ee55602bc0ecf7c64330adc77c815", - "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:47924", - "10.65.0.27:47924", - "172.17.0.1:47924", - "172.18.0.1:47924", - "172.19.0.1:47924" - ], - "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/router-mixed": [ - { - "role": "viewer" - } - ] - } - } - }, - "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:7e9099516456f84f9af01c51ce03bc38764c4c02bf6c73a6d4b2495771a6c449", - "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:47452", - "10.65.0.27:47452", - "172.17.0.1:47452", - "172.18.0.1:47452", - "172.19.0.1:47452" - ], - "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/router-mixed": [ - { - "role": "viewer" - } - ] - } - } - }, - "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:2dd2ca7f9f1378d3ec23a7d6ba57a735032f9a4f90b6c95b2c2385950ec7ae45", - "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:54907", - "10.65.0.27:54907", - "172.17.0.1:54907", - "172.18.0.1:54907", - "172.19.0.1:54907" - ], - "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/router-mixed": [ - { - "role": "viewer" - } - ] - } - } - }, - "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:9f71ff1e1652916263ef05d0a5e9d9e18239aa598f956b24c563c03a1088cb39", - "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:34495", - "10.65.0.27:34495", - "172.17.0.1:34495", - "172.18.0.1:34495", - "172.19.0.1:34495" - ], - "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": { - "example.com/cap/router-mixed": [ - { - "role": "viewer" - } - ] - } - } - }, - "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:9841ea823abefc7197a67b2b33ba551868a344e64ecd27e00d1a100e5e9e5427", - "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:42311", - "10.65.0.27:42311", - "172.17.0.1:42311", - "172.18.0.1:42311", - "172.19.0.1:42311" - ], - "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/router-mixed": [ - { - "role": "viewer" - } - ] - } - } - }, - "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:733598f0f74431b5b2b28fb5980d8b2f79b5ca5524664998d1d011a651643211", - "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:50398", - "10.65.0.27:50398", - "172.17.0.1:50398", - "172.18.0.1:50398", - "172.19.0.1:50398" - ], - "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/router-mixed": [ - { - "role": "viewer" - } - ] - } - } - }, - "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:203d3bfbd67a06d210c027c546a05658fba93aeaea5042b12d50b93d31a5d156", - "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:44240", - "10.65.0.27:44240", - "172.17.0.1:44240", - "172.18.0.1:44240", - "172.19.0.1:44240" - ], - "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/router-mixed": [ - { - "role": "viewer" - } - ] - } - } - } - } + ] }, "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:9779fa96e2ddcd3dac863acc09b50304481964bfb3bccf52ff79d95bbd1a031d", - "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:57299", - "10.65.0.27:57299", - "172.17.0.1:57299", - "172.18.0.1:57299", - "172.19.0.1:57299" - ], - "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": 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 - } - } + "packet_filter_rules": 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:9779fa96e2ddcd3dac863acc09b50304481964bfb3bccf52ff79d95bbd1a031d", - "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:57299", - "10.65.0.27:57299", - "172.17.0.1:57299", - "172.18.0.1:57299", - "172.19.0.1:57299" - ], - "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": 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 - } - } + "packet_filter_rules": 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:9779fa96e2ddcd3dac863acc09b50304481964bfb3bccf52ff79d95bbd1a031d", - "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:57299", - "10.65.0.27:57299", - "172.17.0.1:57299", - "172.18.0.1:57299", - "172.19.0.1:57299" - ], - "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": 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 - } - } + "packet_filter_rules": 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:9779fa96e2ddcd3dac863acc09b50304481964bfb3bccf52ff79d95bbd1a031d", - "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:57299", - "10.65.0.27:57299", - "172.17.0.1:57299", - "172.18.0.1:57299", - "172.19.0.1:57299" - ], - "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": 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 - } - } + "packet_filter_rules": 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:9779fa96e2ddcd3dac863acc09b50304481964bfb3bccf52ff79d95bbd1a031d", - "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:57299", - "10.65.0.27:57299", - "172.17.0.1:57299", - "172.18.0.1:57299", - "172.19.0.1:57299" - ], - "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": 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 - } - } + "packet_filter_rules": 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:9779fa96e2ddcd3dac863acc09b50304481964bfb3bccf52ff79d95bbd1a031d", - "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:57299", - "10.65.0.27:57299", - "172.17.0.1:57299", - "172.18.0.1:57299", - "172.19.0.1:57299" - ], - "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": 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 - } - } + "packet_filter_rules": null } } } diff --git a/hscontrol/policy/v2/testdata/grant_results/GRANT-V11.hujson b/hscontrol/policy/v2/testdata/grant_results/GRANT-V11.hujson index 9d74ff03e..844961974 100644 --- a/hscontrol/policy/v2/testdata/grant_results/GRANT-V11.hujson +++ b/hscontrol/policy/v2/testdata/grant_results/GRANT-V11.hujson @@ -5,23 +5,37 @@ // Expected: Rules on subnet-router { "test_id": "GRANT-V11", - "timestamp": "2026-02-23T15:40:38Z", - "propagation_wait_seconds": 8, "input": { - "policy_file": "grant_policies_v2/grant_v11.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -30,104 +44,92 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "grants": [ { - "src": ["tag:client"], - "dst": ["10.33.0.0/16"], - "via": ["tag:router"], - "ip": ["*"] + "src": [ + "tag:client" + ], + "dst": [ + "10.33.0.0/16" + ], + "via": [ + "tag:router" + ], + "ip": [ + "*" + ] } ] }, - "grants_section": [ - { - "src": ["tag:client"], - "dst": ["10.33.0.0/16"], - "via": ["tag:router"], - "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"], + "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"], + "tags": [ + "tag:router" + ], "ipv4": "100.92.142.61", - "ipv6": "fd7a:115c:a1e0::3e37:8e3d", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] + "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"], + "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"], + "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"], + "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" @@ -136,58 +138,15 @@ }, "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 - } - } + "packet_filter_rules": 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.83.200.69", "fd7a:115c:a1e0::c537:c845"], + "SrcIPs": [ + "100.83.200.69", + "fd7a:115c:a1e0::c537:c845" + ], "DstPorts": [ { "IP": "10.33.0.0/16", @@ -198,422 +157,25 @@ } ] } - ], - "packet_filter_matches": [ - { - "IPProto": [6, 17, 1, 58], - "Srcs": ["100.83.200.69/32", "fd7a:115c:a1e0::c537:c845/128"], - "SrcCaps": null, - "Dsts": [ - { - "Net": "10.33.0.0/16", - "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": { - "Node": { - "ID": 4031348162889210, - "StableID": "nf7BTTgoUY11CNTRL", - "Name": "tagged-client.tail78f774.ts.net.", - "User": 1260082990019555, - "Key": "nodekey:3011e53353e49142ea56ae11f81e0dceae0d667093d04ee086dcb1e9c5d3c844", - "DiscoKey": "discokey:7e9099516456f84f9af01c51ce03bc38764c4c02bf6c73a6d4b2495771a6c449", - "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:47452", - "10.65.0.27:47452", - "172.17.0.1:47452", - "172.18.0.1:47452", - "172.19.0.1:47452" - ], - "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": 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": { - "Node": { - "ID": 7489538288452506, - "StableID": "nTPEqJU2V121CNTRL", - "Name": "subnet-router.tail78f774.ts.net.", - "User": 1260082990019555, - "Key": "nodekey:887ae2351c09c3b952f1f42bdac4095ec396ebf15824a746e4193c003e9c8e3c", - "DiscoKey": "discokey:9779fa96e2ddcd3dac863acc09b50304481964bfb3bccf52ff79d95bbd1a031d", - "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:57299", - "10.65.0.27:57299", - "172.17.0.1:57299", - "172.18.0.1:57299", - "172.19.0.1:57299" - ], - "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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": null } } } diff --git a/hscontrol/policy/v2/testdata/grant_results/GRANT-V12.hujson b/hscontrol/policy/v2/testdata/grant_results/GRANT-V12.hujson index 07450de76..545564362 100644 --- a/hscontrol/policy/v2/testdata/grant_results/GRANT-V12.hujson +++ b/hscontrol/policy/v2/testdata/grant_results/GRANT-V12.hujson @@ -5,23 +5,37 @@ // Expected: Rules on subnet-router { "test_id": "GRANT-V12", - "timestamp": "2026-02-23T15:40:48Z", - "propagation_wait_seconds": 8, "input": { - "policy_file": "grant_policies_v2/grant_v12.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -30,104 +44,92 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "grants": [ { - "src": ["autogroup:member"], - "dst": ["10.33.0.0/16"], - "via": ["tag:router"], - "ip": ["*"] + "src": [ + "autogroup:member" + ], + "dst": [ + "10.33.0.0/16" + ], + "via": [ + "tag:router" + ], + "ip": [ + "*" + ] } ] }, - "grants_section": [ - { - "src": ["autogroup:member"], - "dst": ["10.33.0.0/16"], - "via": ["tag:router"], - "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"], + "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"], + "tags": [ + "tag:router" + ], "ipv4": "100.92.142.61", - "ipv6": "fd7a:115c:a1e0::3e37:8e3d", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] + "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"], + "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"], + "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"], + "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" @@ -136,55 +138,9 @@ }, "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 - } - } + "packet_filter_rules": 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": [ @@ -205,611 +161,25 @@ } ] } - ], - "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": "10.33.0.0/16", - "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": { - "Node": { - "ID": 7728836216590060, - "StableID": "nf4dJTRQM321CNTRL", - "Name": "user-kris.tail78f774.ts.net.", - "User": 4538565228176803, - "Key": "nodekey:40d0f8f49fd519e4a4a2b7d278dcc8863254d4fb8b0219f1d1304cdd172e795f", - "KeyExpiry": "2026-08-19T14:09:34Z", - "DiscoKey": "discokey:9841ea823abefc7197a67b2b33ba551868a344e64ecd27e00d1a100e5e9e5427", - "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:42311", - "10.65.0.27:42311", - "172.17.0.1:42311", - "172.18.0.1:42311", - "172.19.0.1:42311" - ], - "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:733598f0f74431b5b2b28fb5980d8b2f79b5ca5524664998d1d011a651643211", - "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:50398", - "10.65.0.27:50398", - "172.17.0.1:50398", - "172.18.0.1:50398", - "172.19.0.1:50398" - ], - "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:203d3bfbd67a06d210c027c546a05658fba93aeaea5042b12d50b93d31a5d156", - "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:44240", - "10.65.0.27:44240", - "172.17.0.1:44240", - "172.18.0.1:44240", - "172.19.0.1:44240" - ], - "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": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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:9779fa96e2ddcd3dac863acc09b50304481964bfb3bccf52ff79d95bbd1a031d", - "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:57299", - "10.65.0.27:57299", - "172.17.0.1:57299", - "172.18.0.1:57299", - "172.19.0.1:57299" - ], - "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 - } - } + "packet_filter_rules": 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:9779fa96e2ddcd3dac863acc09b50304481964bfb3bccf52ff79d95bbd1a031d", - "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:57299", - "10.65.0.27:57299", - "172.17.0.1:57299", - "172.18.0.1:57299", - "172.19.0.1:57299" - ], - "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 - } - } + "packet_filter_rules": 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:9779fa96e2ddcd3dac863acc09b50304481964bfb3bccf52ff79d95bbd1a031d", - "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:57299", - "10.65.0.27:57299", - "172.17.0.1:57299", - "172.18.0.1:57299", - "172.19.0.1:57299" - ], - "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 - } - } + "packet_filter_rules": null } } } diff --git a/hscontrol/policy/v2/testdata/grant_results/GRANT-V13.hujson b/hscontrol/policy/v2/testdata/grant_results/GRANT-V13.hujson index f45facd31..9ff2c9afe 100644 --- a/hscontrol/policy/v2/testdata/grant_results/GRANT-V13.hujson +++ b/hscontrol/policy/v2/testdata/grant_results/GRANT-V13.hujson @@ -5,23 +5,37 @@ // Expected: Rules on subnet-router { "test_id": "GRANT-V13", - "timestamp": "2026-02-23T15:40:58Z", - "propagation_wait_seconds": 8, "input": { - "policy_file": "grant_policies_v2/grant_v13.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -30,104 +44,93 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "grants": [ { - "src": ["group:developers"], - "dst": ["10.33.0.0/16"], - "via": ["tag:router"], - "ip": ["tcp:80", "tcp:443"] + "src": [ + "group:developers" + ], + "dst": [ + "10.33.0.0/16" + ], + "via": [ + "tag:router" + ], + "ip": [ + "tcp:80", + "tcp:443" + ] } ] }, - "grants_section": [ - { - "src": ["group:developers"], - "dst": ["10.33.0.0/16"], - "via": ["tag:router"], - "ip": ["tcp:80", "tcp:443"] - } - ], - "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"], + "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"], + "tags": [ + "tag:router" + ], "ipv4": "100.92.142.61", - "ipv6": "fd7a:115c:a1e0::3e37:8e3d", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] + "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"], + "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"], + "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"], + "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" @@ -136,58 +139,17 @@ }, "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 - } - } + "packet_filter_rules": 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.110.121.96", "100.90.199.68", "fd7a:115c:a1e0::1737:7960", "fd7a:115c:a1e0::2d01:c747"], + "SrcIPs": [ + "100.110.121.96", + "100.90.199.68", + "fd7a:115c:a1e0::1737:7960", + "fd7a:115c:a1e0::2d01:c747" + ], "DstPorts": [ { "IP": "10.33.0.0/16", @@ -204,527 +166,29 @@ } } ], - "IPProto": [6] + "IPProto": [ + 6 + ] } - ], - "packet_filter_matches": [ - { - "IPProto": [6], - "Srcs": [ - "100.110.121.96/32", - "100.90.199.68/32", - "fd7a:115c:a1e0::1737:7960/128", - "fd7a:115c:a1e0::2d01:c747/128" - ], - "SrcCaps": null, - "Dsts": [ - { - "Net": "10.33.0.0/16", - "Ports": { - "First": 80, - "Last": 80 - } - }, - { - "Net": "10.33.0.0/16", - "Ports": { - "First": 443, - "Last": 443 - } - } - ], - "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": { - "Node": { - "ID": 7728836216590060, - "StableID": "nf4dJTRQM321CNTRL", - "Name": "user-kris.tail78f774.ts.net.", - "User": 4538565228176803, - "Key": "nodekey:40d0f8f49fd519e4a4a2b7d278dcc8863254d4fb8b0219f1d1304cdd172e795f", - "KeyExpiry": "2026-08-19T14:09:34Z", - "DiscoKey": "discokey:9841ea823abefc7197a67b2b33ba551868a344e64ecd27e00d1a100e5e9e5427", - "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:42311", - "10.65.0.27:42311", - "172.17.0.1:42311", - "172.18.0.1:42311", - "172.19.0.1:42311" - ], - "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": 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:203d3bfbd67a06d210c027c546a05658fba93aeaea5042b12d50b93d31a5d156", - "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:44240", - "10.65.0.27:44240", - "172.17.0.1:44240", - "172.18.0.1:44240", - "172.19.0.1:44240" - ], - "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": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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:9779fa96e2ddcd3dac863acc09b50304481964bfb3bccf52ff79d95bbd1a031d", - "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:57299", - "10.65.0.27:57299", - "172.17.0.1:57299", - "172.18.0.1:57299", - "172.19.0.1:57299" - ], - "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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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:9779fa96e2ddcd3dac863acc09b50304481964bfb3bccf52ff79d95bbd1a031d", - "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:57299", - "10.65.0.27:57299", - "172.17.0.1:57299", - "172.18.0.1:57299", - "172.19.0.1:57299" - ], - "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 - } - } + "packet_filter_rules": null } } } diff --git a/hscontrol/policy/v2/testdata/grant_results/GRANT-V14.hujson b/hscontrol/policy/v2/testdata/grant_results/GRANT-V14.hujson index bce483a19..99eac87b9 100644 --- a/hscontrol/policy/v2/testdata/grant_results/GRANT-V14.hujson +++ b/hscontrol/policy/v2/testdata/grant_results/GRANT-V14.hujson @@ -5,29 +5,55 @@ // Expected: No filter rules on any node { "test_id": "GRANT-V14", - "timestamp": "2026-03-28T11:50:41Z", - "propagation_wait_seconds": 8, "input": { - "policy_file": "grant_policies_via/grant_v14.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"], - "tag:exit-a": ["kratail2tid@passkey"], - "tag:exit-b": ["kratail2tid@passkey"], - "tag:group-a": ["kratail2tid@passkey"], - "tag:group-b": ["kratail2tid@passkey"], - "tag:router-a": ["kratail2tid@passkey"], - "tag:router-b": ["kratail2tid@passkey"] + "tag:server": [ + "kratail2tid@passkey" + ], + "tag:prod": [ + "kratail2tid@passkey" + ], + "tag:client": [ + "kratail2tid@passkey" + ], + "tag:router": [ + "kratail2tid@passkey" + ], + "tag:exit": [ + "kratail2tid@passkey" + ], + "tag:exit-a": [ + "kratail2tid@passkey" + ], + "tag:exit-b": [ + "kratail2tid@passkey" + ], + "tag:group-a": [ + "kratail2tid@passkey" + ], + "tag:group-b": [ + "kratail2tid@passkey" + ], + "tag:router-a": [ + "kratail2tid@passkey" + ], + "tag:router-b": [ + "kratail2tid@passkey" + ] }, "hosts": { "webserver": "100.108.74.26", @@ -36,160 +62,159 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "10.44.0.0/16": ["tag:router-a"], - "10.55.0.0/16": ["tag:router-b"], - "0.0.0.0/0": ["tag:exit", "tag:exit-a", "tag:exit-b"], - "::/0": ["tag:exit", "tag:exit-a", "tag:exit-b"] + "10.33.0.0/16": [ + "tag:router" + ], + "10.44.0.0/16": [ + "tag:router-a" + ], + "10.55.0.0/16": [ + "tag:router-b" + ], + "0.0.0.0/0": [ + "tag:exit", + "tag:exit-a", + "tag:exit-b" + ], + "::/0": [ + "tag:exit", + "tag:exit-a", + "tag:exit-b" + ] } }, "grants": [ { - "src": ["tag:client"], - "dst": ["autogroup:internet"], - "via": ["tag:exit"], - "ip": ["*"] + "src": [ + "tag:client" + ], + "dst": [ + "autogroup:internet" + ], + "via": [ + "tag:exit" + ], + "ip": [ + "*" + ] } ] }, - "grants_section": [{ "src": ["tag:client"], "dst": ["autogroup:internet"], "via": ["tag:exit"], "ip": ["*"] }], - "api_endpoint": "https://api.tailscale.com/api/v2/tailnet/kratail2tid%40passkey/acl", - "api_method": "POST", "api_response_code": 200 }, "topology": { "nodes": { "exit-a": { - "mts_name": "exit-a", - "socket": "/home/kradalby/.config/multi-tailscale-dev/exit-a/tailscaled.sock", "hostname": "exit-a", - "user_id": 3118755726458377, - "tags": ["tag:exit-a"], + "tags": [ + "tag:exit-a" + ], "ipv4": "100.124.195.93", "ipv6": "fd7a:115c:a1e0::7837:c35d" }, "exit-b": { - "mts_name": "exit-b", - "socket": "/home/kradalby/.config/multi-tailscale-dev/exit-b/tailscaled.sock", "hostname": "exit-b", - "user_id": 2230775583277936, - "tags": ["tag:exit-b"], + "tags": [ + "tag:exit-b" + ], "ipv4": "100.116.18.24", "ipv6": "fd7a:115c:a1e0::ff37:1218" }, "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"], + "tags": [ + "tag:exit" + ], "ipv4": "100.85.66.106", "ipv6": "fd7a:115c:a1e0::7c37:426a" }, "group-a-client": { - "mts_name": "group-a-client", - "socket": "/home/kradalby/.config/multi-tailscale-dev/group-a-client/tailscaled.sock", "hostname": "group-a-client", - "user_id": 6999435610919250, - "tags": ["tag:group-a"], + "tags": [ + "tag:group-a" + ], "ipv4": "100.107.162.14", "ipv6": "fd7a:115c:a1e0::a237:a20e" }, "group-b-client": { - "mts_name": "group-b-client", - "socket": "/home/kradalby/.config/multi-tailscale-dev/group-b-client/tailscaled.sock", "hostname": "group-b-client", - "user_id": 1008089393782498, - "tags": ["tag:group-b"], + "tags": [ + "tag:group-b" + ], "ipv4": "100.77.135.18", "ipv6": "fd7a:115c:a1e0::4b37:8712" }, "multi-exit-router": { - "mts_name": "multi-exit-router", - "socket": "/home/kradalby/.config/multi-tailscale-dev/multi-exit-router/tailscaled.sock", "hostname": "multi-exit-router", - "user_id": 6294409699640722, - "tags": ["tag:exit", "tag:router"], + "tags": [ + "tag:exit", + "tag:router" + ], "ipv4": "100.105.127.107", "ipv6": "fd7a:115c:a1e0::ad37:7f6b" }, "router-a": { - "mts_name": "router-a", - "socket": "/home/kradalby/.config/multi-tailscale-dev/router-a/tailscaled.sock", "hostname": "router-a", - "user_id": 50590507314324, - "tags": ["tag:router-a"], + "tags": [ + "tag:router-a" + ], "ipv4": "100.109.43.124", "ipv6": "fd7a:115c:a1e0::a537:2b7c" }, "router-b": { - "mts_name": "router-b", - "socket": "/home/kradalby/.config/multi-tailscale-dev/router-b/tailscaled.sock", "hostname": "router-b", - "user_id": 1399889648409786, - "tags": ["tag:router-b"], + "tags": [ + "tag:router-b" + ], "ipv4": "100.65.172.123", "ipv6": "fd7a:115c:a1e0::5a37:ac7c" }, "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"], + "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"], + "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"], + "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"], + "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" @@ -198,16660 +223,108 @@ }, "captures": { "exit-a": { - "commands": { - "packet_filter_rules": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-a/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-a/tailscaled.sock debug localapi POST debug-packet-filter-matches" - }, "packet_filter_rules": null, - "packet_filter_matches": [], - "whois": { - "100.116.18.24": { - "peer_name": "exit-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-a/tailscaled.sock whois --json 100.116.18.24", - "response": null - }, - "100.85.66.106": { - "peer_name": "exit-node", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-a/tailscaled.sock whois --json 100.85.66.106", - "response": null - }, - "100.107.162.14": { - "peer_name": "group-a-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-a/tailscaled.sock whois --json 100.107.162.14", - "response": null - }, - "100.77.135.18": { - "peer_name": "group-b-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-a/tailscaled.sock whois --json 100.77.135.18", - "response": null - }, - "100.105.127.107": { - "peer_name": "multi-exit-router", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-a/tailscaled.sock whois --json 100.105.127.107", - "response": null - }, - "100.109.43.124": { - "peer_name": "router-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-a/tailscaled.sock whois --json 100.109.43.124", - "response": null - }, - "100.65.172.123": { - "peer_name": "router-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-a/tailscaled.sock whois --json 100.65.172.123", - "response": null - }, - "100.92.142.61": { - "peer_name": "subnet-router", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-a/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-a/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-a/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-a/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-a/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-a/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-a/tailscaled.sock whois --json 100.90.199.68", - "response": null - } - }, "netmap": { - "SelfNode": { - "ID": 3118755726458377, - "StableID": "nvFTscRVMR11CNTRL", - "Name": "exit-a.tail78f774.ts.net.", - "User": 3118755726458377, - "Key": "nodekey:21ab6fa3288e3bf8cecced295316c6327f427649765eb1746cc6ee9978bcc35c", - "DiscoKey": "discokey:0c8595f67987ed47cf551646d6266c21a635d622409d10745cc08f6922066e49", - "Addresses": ["100.124.195.93/32", "fd7a:115c:a1e0::7837:c35d/128"], - "AllowedIPs": ["100.124.195.93/32", "fd7a:115c:a1e0::7837:c35d/128"], - "Endpoints": ["77.164.248.136:37550", "10.65.0.27:37550", "172.17.0.1:37550"], - "Hostinfo": { - "Hostname": "exit-a", - "RoutableIPs": ["0.0.0.0/0", "::/0"], - "RequestTags": ["tag:exit-a"], - "Services": [ - { "Proto": "peerapi4", "Port": 57826 }, - { "Proto": "peerapi6", "Port": 57826 }, - { "Proto": "peerapi-dns-proxy", "Port": 1 } - ] - }, - "Created": "2026-03-28T10:37:56.932966573Z", - "Tags": ["tag:exit-a"], - "MachineAuthorized": true, - "CapMap": { - "https://tailscale.com/cap/file-sharing": null, - "https://tailscale.com/cap/is-owner": null, - "https://tailscale.com/cap/ssh": null, - "https://tailscale.com/cap/tailnet-lock": null, - "probe-udp-lifetime": null, - "ssh-behavior-v1": null, - "ssh-env-vars": null, - "store-appc-routes": null, - "tailnet-display-name": ["kratail2tid@passkey"] - }, - "ComputedName": "exit-a", - "ComputedNameWithHost": "exit-a" - }, - "AllCaps": [ - "ssh-behavior-v1", - "tailnet-display-name", - "https://tailscale.com/cap/tailnet-lock", - "probe-udp-lifetime", - "store-appc-routes", - "https://tailscale.com/cap/ssh", - "https://tailscale.com/cap/is-owner", - "ssh-env-vars", - "https://tailscale.com/cap/file-sharing" - ], - "NodeKey": "nodekey:21ab6fa3288e3bf8cecced295316c6327f427649765eb1746cc6ee9978bcc35c", - "MachineKey": "mkey:d4a36168723163165bbdcb0b17762903171593d01c26c5bb12216932f6d10876", "Peers": [], - "DNS": { - "Routes": { - "tail78f774.ts.net.": null, - "ts.net.": [{ "Addr": "199.247.155.53" }, { "Addr": "2620:111:8007::53" }] - }, - "Domains": ["tail78f774.ts.net"], - "Proxied": true, - "ExitNodeFilteredSet": [".ts.net", ".tailscale.net"] - }, - "PacketFilter": [], - "PacketFilterRules": null, - "SSHPolicy": { "rules": [] }, - "CollectServices": false, - "DERPMap": { - "Regions": { - "1": { - "RegionID": 1, - "RegionCode": "nyc", - "RegionName": "New York City", - "Latitude": 40.7128, - "Longitude": -74.006, - "Nodes": [ - { - "Name": "1h", - "RegionID": 1, - "HostName": "derp1h.tailscale.com", - "IPv4": "199.38.181.93", - "IPv6": "2607:f740:f::afd", - "CanPort80": true - }, - { - "Name": "1g", - "RegionID": 1, - "HostName": "derp1g.tailscale.com", - "IPv4": "209.177.145.120", - "IPv6": "2607:f740:f::3eb", - "CanPort80": true - }, - { - "Name": "1i", - "RegionID": 1, - "HostName": "derp1i.tailscale.com", - "IPv4": "199.38.181.103", - "IPv6": "2607:f740:f::e19", - "CanPort80": true - }, - { - "Name": "1f", - "RegionID": 1, - "HostName": "derp1f.tailscale.com", - "IPv4": "199.38.181.104", - "IPv6": "2607:f740:f::bc", - "CanPort80": true - } - ] - }, - "10": { - "RegionID": 10, - "RegionCode": "sea", - "RegionName": "Seattle", - "Latitude": 47.609722, - "Longitude": -122.333056, - "Nodes": [ - { - "Name": "10c", - "RegionID": 10, - "HostName": "derp10c.tailscale.com", - "IPv4": "192.73.240.121", - "IPv6": "2607:f740:14::40c", - "CanPort80": true - }, - { - "Name": "10d", - "RegionID": 10, - "HostName": "derp10d.tailscale.com", - "IPv4": "192.73.240.132", - "IPv6": "2607:f740:14::500", - "CanPort80": true - }, - { - "Name": "10b", - "RegionID": 10, - "HostName": "derp10b.tailscale.com", - "IPv4": "192.73.240.161", - "IPv6": "2607:f740:14::61c", - "CanPort80": true - } - ] - }, - "11": { - "RegionID": 11, - "RegionCode": "sao", - "RegionName": "São Paulo", - "Latitude": -23.55, - "Longitude": -46.633333, - "Nodes": [ - { - "Name": "11f", - "RegionID": 11, - "HostName": "derp11f.tailscale.com", - "IPv4": "172.237.61.197", - "IPv6": "2600:3c0d::2000:3bff:fe44:6166", - "CanPort80": true - }, - { - "Name": "11g", - "RegionID": 11, - "HostName": "derp11g.tailscale.com", - "IPv4": "172.237.61.190", - "IPv6": "2600:3c0d::2000:62ff:febe:2e67", - "CanPort80": true - }, - { - "Name": "11e", - "RegionID": 11, - "HostName": "derp11e.tailscale.com", - "IPv4": "172.237.61.194", - "IPv6": "2600:3c0d::2000:d2ff:fe43:1790", - "CanPort80": true - } - ] - }, - "12": { - "RegionID": 12, - "RegionCode": "ord", - "RegionName": "Chicago", - "Latitude": 41.881944, - "Longitude": -87.627778, - "Nodes": [ - { - "Name": "12e", - "RegionID": 12, - "HostName": "derp12e.tailscale.com", - "IPv4": "209.177.158.15", - "IPv6": "2607:f740:e::b17", - "CanPort80": true - }, - { - "Name": "12f", - "RegionID": 12, - "HostName": "derp12f.tailscale.com", - "IPv4": "199.38.182.118", - "IPv6": "2607:f740:e::4c8", - "CanPort80": true - }, - { - "Name": "12d", - "RegionID": 12, - "HostName": "derp12d.tailscale.com", - "IPv4": "209.177.158.246", - "IPv6": "2607:f740:e::811", - "CanPort80": true - } - ] - }, - "13": { - "RegionID": 13, - "RegionCode": "den", - "RegionName": "Denver", - "Latitude": 39.7392, - "Longitude": -104.9849, - "Nodes": [ - { - "Name": "13c", - "RegionID": 13, - "HostName": "derp13c.tailscale.com", - "IPv4": "192.73.242.28", - "IPv6": "2607:f740:16::5c", - "CanPort80": true - }, - { - "Name": "13d", - "RegionID": 13, - "HostName": "derp13d.tailscale.com", - "IPv4": "192.73.242.204", - "IPv6": "2607:f740:16::c23", - "CanPort80": true - }, - { - "Name": "13b", - "RegionID": 13, - "HostName": "derp13b.tailscale.com", - "IPv4": "192.73.242.187", - "IPv6": "2607:f740:16::640", - "CanPort80": true - } - ] - }, - "14": { - "RegionID": 14, - "RegionCode": "ams", - "RegionName": "Amsterdam", - "Latitude": 52.372778, - "Longitude": 4.893611, - "Nodes": [ - { - "Name": "14c", - "RegionID": 14, - "HostName": "derp14c.tailscale.com", - "IPv4": "176.58.93.147", - "IPv6": "2a00:dd80:3c::b09", - "CanPort80": true - }, - { - "Name": "14d", - "RegionID": 14, - "HostName": "derp14d.tailscale.com", - "IPv4": "176.58.93.154", - "IPv6": "2a00:dd80:3c::3d5", - "CanPort80": true - }, - { - "Name": "14b", - "RegionID": 14, - "HostName": "derp14b.tailscale.com", - "IPv4": "176.58.93.248", - "IPv6": "2a00:dd80:3c::807", - "CanPort80": true - } - ] - }, - "15": { - "RegionID": 15, - "RegionCode": "jnb", - "RegionName": "Johannesburg", - "Latitude": -26.204444, - "Longitude": 28.045556, - "Nodes": [ - { - "Name": "15c", - "RegionID": 15, - "HostName": "derp15c.tailscale.com", - "IPv4": "102.67.165.185", - "IPv6": "2c0f:edb0:0:10::b59", - "CanPort80": true - }, - { - "Name": "15d", - "RegionID": 15, - "HostName": "derp15d.tailscale.com", - "IPv4": "102.67.165.36", - "IPv6": "2c0f:edb0:0:10::599", - "CanPort80": true - }, - { - "Name": "15b", - "RegionID": 15, - "HostName": "derp15b.tailscale.com", - "IPv4": "102.67.165.90", - "IPv6": "2c0f:edb0:0:10::963", - "CanPort80": true - } - ] - }, - "16": { - "RegionID": 16, - "RegionCode": "mia", - "RegionName": "Miami", - "Latitude": 25.78, - "Longitude": -80.21, - "Nodes": [ - { - "Name": "16c", - "RegionID": 16, - "HostName": "derp16c.tailscale.com", - "IPv4": "192.73.243.229", - "IPv6": "2607:f740:17::4e4", - "CanPort80": true - }, - { - "Name": "16d", - "RegionID": 16, - "HostName": "derp16d.tailscale.com", - "IPv4": "192.73.243.141", - "IPv6": "2607:f740:17::475", - "CanPort80": true - }, - { - "Name": "16b", - "RegionID": 16, - "HostName": "derp16b.tailscale.com", - "IPv4": "192.73.243.135", - "IPv6": "2607:f740:17::476", - "CanPort80": true - } - ] - }, - "17": { - "RegionID": 17, - "RegionCode": "lax", - "RegionName": "Los Angeles", - "Latitude": 34.05, - "Longitude": -118.25, - "Nodes": [ - { - "Name": "17c", - "RegionID": 17, - "HostName": "derp17c.tailscale.com", - "IPv4": "208.111.40.12", - "IPv6": "2607:f740:c::10", - "CanPort80": true - }, - { - "Name": "17d", - "RegionID": 17, - "HostName": "derp17d.tailscale.com", - "IPv4": "208.111.40.216", - "IPv6": "2607:f740:c::e1b", - "CanPort80": true - }, - { - "Name": "17b", - "RegionID": 17, - "HostName": "derp17b.tailscale.com", - "IPv4": "192.73.244.245", - "IPv6": "2607:f740:c::646", - "CanPort80": true - } - ] - }, - "18": { - "RegionID": 18, - "RegionCode": "par", - "RegionName": "Paris", - "Latitude": 48.856667, - "Longitude": 2.352222, - "Nodes": [ - { - "Name": "18c", - "RegionID": 18, - "HostName": "derp18c.tailscale.com", - "IPv4": "176.58.90.207", - "IPv6": "2a00:dd80:3e::c19", - "CanPort80": true - }, - { - "Name": "18d", - "RegionID": 18, - "HostName": "derp18d.tailscale.com", - "IPv4": "176.58.90.104", - "IPv6": "2a00:dd80:3e::f2e", - "CanPort80": true - }, - { - "Name": "18b", - "RegionID": 18, - "HostName": "derp18b.tailscale.com", - "IPv4": "176.58.90.147", - "IPv6": "2a00:dd80:3e::363", - "CanPort80": true - } - ] - }, - "19": { - "RegionID": 19, - "RegionCode": "mad", - "RegionName": "Madrid", - "Latitude": 40.416944, - "Longitude": -3.703333, - "Nodes": [ - { - "Name": "19c", - "RegionID": 19, - "HostName": "derp19c.tailscale.com", - "IPv4": "45.159.97.61", - "IPv6": "2a00:dd80:14:10::20", - "CanPort80": true - }, - { - "Name": "19d", - "RegionID": 19, - "HostName": "derp19d.tailscale.com", - "IPv4": "45.159.97.233", - "IPv6": "2a00:dd80:14:10::34a", - "CanPort80": true - }, - { - "Name": "19b", - "RegionID": 19, - "HostName": "derp19b.tailscale.com", - "IPv4": "45.159.97.144", - "IPv6": "2a00:dd80:14:10::335", - "CanPort80": true - } - ] - }, - "2": { - "RegionID": 2, - "RegionCode": "sfo", - "RegionName": "San Francisco", - "Latitude": 37.7775, - "Longitude": -122.416389, - "Nodes": [ - { - "Name": "2e", - "RegionID": 2, - "HostName": "derp2e.tailscale.com", - "IPv4": "192.73.252.134", - "IPv6": "2607:f740:0:3f::44c", - "CanPort80": true - }, - { - "Name": "2f", - "RegionID": 2, - "HostName": "derp2f.tailscale.com", - "IPv4": "208.111.34.178", - "IPv6": "2607:f740:0:3f::f4", - "CanPort80": true - }, - { - "Name": "2d", - "RegionID": 2, - "HostName": "derp2d.tailscale.com", - "IPv4": "192.73.252.65", - "IPv6": "2607:f740:0:3f::287", - "CanPort80": true - } - ] - }, - "20": { - "RegionID": 20, - "RegionCode": "hkg", - "RegionName": "Hong Kong", - "Latitude": 22.3193, - "Longitude": 114.1694, - "Nodes": [ - { - "Name": "20c", - "RegionID": 20, - "HostName": "derp20c.tailscale.com", - "IPv4": "205.147.105.30", - "IPv6": "2403:2500:8000:1::5fb", - "CanPort80": true - }, - { - "Name": "20d", - "RegionID": 20, - "HostName": "derp20d.tailscale.com", - "IPv4": "205.147.105.78", - "IPv6": "2403:2500:8000:1::e9a", - "CanPort80": true - }, - { - "Name": "20b", - "RegionID": 20, - "HostName": "derp20b.tailscale.com", - "IPv4": "103.6.84.152", - "IPv6": "2403:2500:8000:1::ef6", - "CanPort80": true - } - ] - }, - "21": { - "RegionID": 21, - "RegionCode": "tor", - "RegionName": "Toronto", - "Latitude": 43.741667, - "Longitude": -79.373333, - "Nodes": [ - { - "Name": "21c", - "RegionID": 21, - "HostName": "derp21c.tailscale.com", - "IPv4": "162.248.221.215", - "IPv6": "2607:f740:50::f10", - "CanPort80": true - }, - { - "Name": "21d", - "RegionID": 21, - "HostName": "derp21d.tailscale.com", - "IPv4": "162.248.221.248", - "IPv6": "2607:f740:50::ca4", - "CanPort80": true - }, - { - "Name": "21b", - "RegionID": 21, - "HostName": "derp21b.tailscale.com", - "IPv4": "162.248.221.199", - "IPv6": "2607:f740:50::1d1", - "CanPort80": true - } - ] - }, - "22": { - "RegionID": 22, - "RegionCode": "waw", - "RegionName": "Warsaw", - "Latitude": 52.23, - "Longitude": 21.011111, - "Nodes": [ - { - "Name": "22c", - "RegionID": 22, - "HostName": "derp22c.tailscale.com", - "IPv4": "45.159.98.253", - "IPv6": "2a00:dd80:40:100::3f", - "CanPort80": true - }, - { - "Name": "22d", - "RegionID": 22, - "HostName": "derp22d.tailscale.com", - "IPv4": "45.159.98.145", - "IPv6": "2a00:dd80:40:100::211", - "CanPort80": true - }, - { - "Name": "22b", - "RegionID": 22, - "HostName": "derp22b.tailscale.com", - "IPv4": "45.159.98.196", - "IPv6": "2a00:dd80:40:100::316", - "CanPort80": true - } - ] - }, - "23": { - "RegionID": 23, - "RegionCode": "dbi", - "RegionName": "Dubai", - "Latitude": 25.263056, - "Longitude": 55.297222, - "Nodes": [ - { - "Name": "23c", - "RegionID": 23, - "HostName": "derp23c.tailscale.com", - "IPv4": "185.34.3.207", - "IPv6": "2a00:dd80:3f:100::a50", - "CanPort80": true - }, - { - "Name": "23d", - "RegionID": 23, - "HostName": "derp23d.tailscale.com", - "IPv4": "185.34.3.75", - "IPv6": "2a00:dd80:3f:100::97e", - "CanPort80": true - }, - { - "Name": "23b", - "RegionID": 23, - "HostName": "derp23b.tailscale.com", - "IPv4": "185.34.3.232", - "IPv6": "2a00:dd80:3f:100::76f", - "CanPort80": true - } - ] - }, - "24": { - "RegionID": 24, - "RegionCode": "hnl", - "RegionName": "Honolulu", - "Latitude": 21.306944, - "Longitude": -157.858333, - "Nodes": [ - { - "Name": "24c", - "RegionID": 24, - "HostName": "derp24c.tailscale.com", - "IPv4": "208.83.233.233", - "IPv6": "2001:19f0:c000:c591:5400:04ff:fe26:2c5f", - "CanPort80": true - }, - { - "Name": "24d", - "RegionID": 24, - "HostName": "derp24d.tailscale.com", - "IPv4": "208.72.155.133", - "IPv6": "2001:19f0:c000:c564:5400:04ff:fe26:2ba8", - "CanPort80": true - }, - { - "Name": "24b", - "RegionID": 24, - "HostName": "derp24b.tailscale.com", - "IPv4": "208.83.234.151", - "IPv6": "2001:19f0:c000:c586:5400:04ff:fe26:2ba6", - "CanPort80": true - } - ] - }, - "25": { - "RegionID": 25, - "RegionCode": "nai", - "RegionName": "Nairobi", - "Latitude": -1.286389, - "Longitude": 36.817222, - "Nodes": [ - { - "Name": "25c", - "RegionID": 25, - "HostName": "derp25c.tailscale.com", - "IPv4": "102.67.167.37", - "IPv6": "2c0f:edb0:2000:1::2c7", - "CanPort80": true - }, - { - "Name": "25d", - "RegionID": 25, - "HostName": "derp25d.tailscale.com", - "IPv4": "102.67.167.188", - "IPv6": "2c0f:edb0:2000:1::188", - "CanPort80": true - }, - { - "Name": "25b", - "RegionID": 25, - "HostName": "derp25b.tailscale.com", - "IPv4": "102.67.167.245", - "IPv6": "2c0f:edb0:2000:1::2e9", - "CanPort80": true - } - ] - }, - "26": { - "RegionID": 26, - "RegionCode": "nue", - "RegionName": "Nuremberg", - "Latitude": 49.453889, - "Longitude": 11.0775, - "Nodes": [ - { - "Name": "26c", - "RegionID": 26, - "HostName": "derp26c.tailscale.com", - "IPv4": "49.12.193.137", - "IPv6": "2a01:4f8:1c1c:5c70::1", - "CanPort80": true - }, - { - "Name": "26d", - "RegionID": 26, - "HostName": "derp26d.tailscale.com", - "IPv4": "49.13.204.141", - "IPv6": "2a01:4f8:1c0c:7d06::1", - "CanPort80": true - }, - { - "Name": "26b", - "RegionID": 26, - "HostName": "derp26b.tailscale.com", - "IPv4": "167.235.72.200", - "IPv6": "2a01:4f8:1c1c:47b6::1", - "CanPort80": true - } - ] - }, - "27": { - "RegionID": 27, - "RegionCode": "iad", - "RegionName": "Ashburn", - "Latitude": 39.03, - "Longitude": -77.471111, - "Nodes": [ - { - "Name": "27d", - "RegionID": 27, - "HostName": "derp27d.tailscale.com", - "IPv4": "178.156.152.106", - "IPv6": "2a01:4ff:f0:3c8e::1", - "CanPort80": true - }, - { - "Name": "27c", - "RegionID": 27, - "HostName": "derp27c.tailscale.com", - "IPv4": "178.156.152.91", - "IPv6": "2a01:4ff:f0:3913::1", - "CanPort80": true - }, - { - "Name": "27e", - "RegionID": 27, - "HostName": "derp27e.tailscale.com", - "IPv4": "178.156.134.232", - "IPv6": "2a01:4ff:f0:28d4::1", - "CanPort80": true - }, - { - "Name": "27b", - "RegionID": 27, - "HostName": "derp27b.tailscale.com", - "IPv4": "5.161.218.233", - "IPv6": "2a01:4ff:f0:3db9::1", - "CanPort80": true - } - ] - }, - "28": { - "RegionID": 28, - "RegionCode": "hel", - "RegionName": "Helsinki", - "Latitude": 60.170833, - "Longitude": 24.9375, - "Nodes": [ - { - "Name": "28c", - "RegionID": 28, - "HostName": "derp28c.tailscale.com", - "IPv4": "95.217.2.165", - "IPv6": "2a01:4f9:c012:cd74::1", - "CanPort80": true - }, - { - "Name": "28d", - "RegionID": 28, - "HostName": "derp28d.tailscale.com", - "IPv4": "157.180.28.32", - "IPv6": "2a01:4f9:c012:2e5b::1", - "CanPort80": true - }, - { - "Name": "28b", - "RegionID": 28, - "HostName": "derp28b.tailscale.com", - "IPv4": "65.109.143.62", - "IPv6": "2a01:4f9:c012:d55c::1", - "CanPort80": true - } - ] - }, - "3": { - "RegionID": 3, - "RegionCode": "sin", - "RegionName": "Singapore", - "Latitude": 1.3521, - "Longitude": 103.8198, - "Nodes": [ - { - "Name": "3g", - "RegionID": 3, - "HostName": "derp3g.tailscale.com", - "IPv4": "172.237.72.79", - "IPv6": "2600:3c15::2000:adff:fe08:6fab", - "CanPort80": true - }, - { - "Name": "3f", - "RegionID": 3, - "HostName": "derp3f.tailscale.com", - "IPv4": "172.237.72.8", - "IPv6": "2600:3c15::2000:53ff:fe48:a668", - "CanPort80": true - }, - { - "Name": "3h", - "RegionID": 3, - "HostName": "derp3h.tailscale.com", - "IPv4": "172.237.66.30", - "IPv6": "2600:3c15::2000:3dff:fe44:50aa", - "CanPort80": true - }, - { - "Name": "3e", - "RegionID": 3, - "HostName": "derp3e.tailscale.com", - "IPv4": "172.237.72.43", - "IPv6": "2600:3c15::2000:6cff:fee4:d799", - "CanPort80": true - } - ] - }, - "4": { - "RegionID": 4, - "RegionCode": "fra", - "RegionName": "Frankfurt", - "Latitude": 50.1109, - "Longitude": 8.6821, - "Nodes": [ - { - "Name": "4h", - "RegionID": 4, - "HostName": "derp4h.tailscale.com", - "IPv4": "185.40.234.77", - "IPv6": "2a00:dd80:20::bcf", - "CanPort80": true - }, - { - "Name": "4g", - "RegionID": 4, - "HostName": "derp4g.tailscale.com", - "IPv4": "185.40.234.113", - "IPv6": "2a00:dd80:20::8f", - "CanPort80": true - }, - { - "Name": "4i", - "RegionID": 4, - "HostName": "derp4i.tailscale.com", - "IPv4": "185.40.234.53", - "IPv6": "2a00:dd80:20::8a6", - "CanPort80": true - }, - { - "Name": "4f", - "RegionID": 4, - "HostName": "derp4f.tailscale.com", - "IPv4": "185.40.234.219", - "IPv6": "2a00:dd80:20::a25", - "CanPort80": true - } - ] - }, - "5": { - "RegionID": 5, - "RegionCode": "syd", - "RegionName": "Sydney", - "Latitude": -33.867778, - "Longitude": 151.21, - "Nodes": [ - { - "Name": "5f", - "RegionID": 5, - "HostName": "derp5f.tailscale.com", - "IPv4": "172.105.166.103", - "IPv6": "2400:8907::2000:ccff:fe1f:80da", - "CanPort80": true - }, - { - "Name": "5g", - "RegionID": 5, - "HostName": "derp5g.tailscale.com", - "IPv4": "172.105.169.57", - "IPv6": "2400:8907::2000:2fff:fea7:57f4", - "CanPort80": true - }, - { - "Name": "5e", - "RegionID": 5, - "HostName": "derp5e.tailscale.com", - "IPv4": "172.105.179.230", - "IPv6": "2400:8907::2000:ceff:fe8d:4f4e", - "CanPort80": true - } - ] - }, - "6": { - "RegionID": 6, - "RegionCode": "blr", - "RegionName": "Bengaluru", - "Latitude": 12.9716, - "Longitude": 77.5946, - "Nodes": [ - { - "Name": "6a", - "RegionID": 6, - "HostName": "derp6.tailscale.com", - "IPv4": "68.183.90.120", - "IPv6": "2400:6180:100:d0::982:d001", - "CanPort80": true - } - ] - }, - "7": { - "RegionID": 7, - "RegionCode": "tok", - "RegionName": "Tokyo", - "Latitude": 35.6764, - "Longitude": 139.65, - "Nodes": [ - { - "Name": "7g", - "RegionID": 7, - "HostName": "derp7g.tailscale.com", - "IPv4": "172.238.6.179", - "IPv6": "2600:3c18::2000:3fff:fe80:3ebd", - "CanPort80": true - }, - { - "Name": "7f", - "RegionID": 7, - "HostName": "derp7f.tailscale.com", - "IPv4": "172.238.6.34", - "IPv6": "2600:3c18::2000:acff:fe8e:3ed5", - "CanPort80": true - }, - { - "Name": "7h", - "RegionID": 7, - "HostName": "derp7h.tailscale.com", - "IPv4": "172.237.28.183", - "IPv6": "2600:3c18::2000:b1ff:fea9:4560", - "CanPort80": true - }, - { - "Name": "7e", - "RegionID": 7, - "HostName": "derp7e.tailscale.com", - "IPv4": "172.238.6.180", - "IPv6": "2600:3c18::2000:60ff:fe0f:6e83", - "STUNOnly": true, - "CanPort80": true - } - ] - }, - "8": { - "RegionID": 8, - "RegionCode": "lhr", - "RegionName": "London", - "Latitude": 51.5072, - "Longitude": 0.1276, - "Nodes": [ - { - "Name": "8f", - "RegionID": 8, - "HostName": "derp8f.tailscale.com", - "IPv4": "176.58.88.183", - "IPv6": "2a00:dd80:3a::dfa", - "CanPort80": true - }, - { - "Name": "8g", - "RegionID": 8, - "HostName": "derp8g.tailscale.com", - "IPv4": "176.58.92.254", - "IPv6": "2a00:dd80:3a::ed", - "CanPort80": true - }, - { - "Name": "8e", - "RegionID": 8, - "HostName": "derp8e.tailscale.com", - "IPv4": "176.58.92.144", - "IPv6": "2a00:dd80:3a::b33", - "CanPort80": true - } - ] - }, - "9": { - "RegionID": 9, - "RegionCode": "dfw", - "RegionName": "Dallas", - "Latitude": 32.779167, - "Longitude": -96.808889, - "Nodes": [ - { - "Name": "9e", - "RegionID": 9, - "HostName": "derp9e.tailscale.com", - "IPv4": "192.73.248.83", - "IPv6": "2607:f740:100::359", - "CanPort80": true - }, - { - "Name": "9f", - "RegionID": 9, - "HostName": "derp9f.tailscale.com", - "IPv4": "209.177.156.197", - "IPv6": "2607:f740:100::cad", - "CanPort80": true - }, - { - "Name": "9d", - "RegionID": 9, - "HostName": "derp9d.tailscale.com", - "IPv4": "209.177.156.94", - "IPv6": "2607:f740:100::c05", - "CanPort80": true - } - ] - } - } - }, - "DisplayMessages": null, - "TKAEnabled": false, - "TKAHead": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", - "Domain": "kratail2tid@passkey", - "DomainAuditLogID": "", - "UserProfiles": { - "3118755726458377": { - "ID": 3118755726458377, - "LoginName": "exit-a.tail78f774.ts.net", - "DisplayName": "exit-a" - } - } + "PacketFilterRules": null } }, "exit-b": { - "commands": { - "packet_filter_rules": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-b/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-b/tailscaled.sock debug localapi POST debug-packet-filter-matches" - }, "packet_filter_rules": null, - "packet_filter_matches": [], - "whois": { - "100.124.195.93": { - "peer_name": "exit-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-b/tailscaled.sock whois --json 100.124.195.93", - "response": null - }, - "100.85.66.106": { - "peer_name": "exit-node", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-b/tailscaled.sock whois --json 100.85.66.106", - "response": null - }, - "100.107.162.14": { - "peer_name": "group-a-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-b/tailscaled.sock whois --json 100.107.162.14", - "response": null - }, - "100.77.135.18": { - "peer_name": "group-b-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-b/tailscaled.sock whois --json 100.77.135.18", - "response": null - }, - "100.105.127.107": { - "peer_name": "multi-exit-router", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-b/tailscaled.sock whois --json 100.105.127.107", - "response": null - }, - "100.109.43.124": { - "peer_name": "router-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-b/tailscaled.sock whois --json 100.109.43.124", - "response": null - }, - "100.65.172.123": { - "peer_name": "router-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-b/tailscaled.sock whois --json 100.65.172.123", - "response": null - }, - "100.92.142.61": { - "peer_name": "subnet-router", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-b/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-b/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-b/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-b/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-b/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-b/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-b/tailscaled.sock whois --json 100.90.199.68", - "response": null - } - }, "netmap": { - "SelfNode": { - "ID": 2230775583277936, - "StableID": "ndK1N8hKRJ11CNTRL", - "Name": "exit-b.tail78f774.ts.net.", - "User": 2230775583277936, - "Key": "nodekey:265e1377372be0d036773ac41339bf7b53ed18e9f67f196d7d517abeff741217", - "DiscoKey": "discokey:63071b08ff89860a2d98005f8f6f65f3b92e05b7b1338b1be71e4ad866f12728", - "Addresses": ["100.116.18.24/32", "fd7a:115c:a1e0::ff37:1218/128"], - "AllowedIPs": ["100.116.18.24/32", "fd7a:115c:a1e0::ff37:1218/128"], - "Endpoints": ["77.164.248.136:35565", "10.65.0.27:35565", "172.17.0.1:35565"], - "Hostinfo": { - "Hostname": "exit-b", - "RoutableIPs": ["0.0.0.0/0", "::/0"], - "RequestTags": ["tag:exit-b"], - "Services": [ - { "Proto": "peerapi4", "Port": 61723 }, - { "Proto": "peerapi6", "Port": 61723 }, - { "Proto": "peerapi-dns-proxy", "Port": 1 } - ] - }, - "Created": "2026-03-28T10:38:00.655990366Z", - "Tags": ["tag:exit-b"], - "MachineAuthorized": true, - "CapMap": { - "https://tailscale.com/cap/file-sharing": null, - "https://tailscale.com/cap/is-owner": null, - "https://tailscale.com/cap/ssh": null, - "https://tailscale.com/cap/tailnet-lock": null, - "probe-udp-lifetime": null, - "ssh-behavior-v1": null, - "ssh-env-vars": null, - "store-appc-routes": null, - "tailnet-display-name": ["kratail2tid@passkey"] - }, - "ComputedName": "exit-b", - "ComputedNameWithHost": "exit-b" - }, - "AllCaps": [ - "https://tailscale.com/cap/file-sharing", - "probe-udp-lifetime", - "ssh-env-vars", - "store-appc-routes", - "https://tailscale.com/cap/tailnet-lock", - "https://tailscale.com/cap/is-owner", - "ssh-behavior-v1", - "tailnet-display-name", - "https://tailscale.com/cap/ssh" - ], - "NodeKey": "nodekey:265e1377372be0d036773ac41339bf7b53ed18e9f67f196d7d517abeff741217", - "MachineKey": "mkey:f4cbc28e2db0f8d8a6a5fc3991b055477e5efc6c025d24b72d3509fa3743401c", "Peers": [], - "DNS": { - "Routes": { - "tail78f774.ts.net.": null, - "ts.net.": [{ "Addr": "199.247.155.53" }, { "Addr": "2620:111:8007::53" }] - }, - "Domains": ["tail78f774.ts.net"], - "Proxied": true, - "ExitNodeFilteredSet": [".ts.net", ".tailscale.net"] - }, - "PacketFilter": [], - "PacketFilterRules": null, - "SSHPolicy": { "rules": [] }, - "CollectServices": false, - "DERPMap": { - "Regions": { - "1": { - "RegionID": 1, - "RegionCode": "nyc", - "RegionName": "New York City", - "Latitude": 40.7128, - "Longitude": -74.006, - "Nodes": [ - { - "Name": "1h", - "RegionID": 1, - "HostName": "derp1h.tailscale.com", - "IPv4": "199.38.181.93", - "IPv6": "2607:f740:f::afd", - "CanPort80": true - }, - { - "Name": "1g", - "RegionID": 1, - "HostName": "derp1g.tailscale.com", - "IPv4": "209.177.145.120", - "IPv6": "2607:f740:f::3eb", - "CanPort80": true - }, - { - "Name": "1i", - "RegionID": 1, - "HostName": "derp1i.tailscale.com", - "IPv4": "199.38.181.103", - "IPv6": "2607:f740:f::e19", - "CanPort80": true - }, - { - "Name": "1f", - "RegionID": 1, - "HostName": "derp1f.tailscale.com", - "IPv4": "199.38.181.104", - "IPv6": "2607:f740:f::bc", - "CanPort80": true - } - ] - }, - "10": { - "RegionID": 10, - "RegionCode": "sea", - "RegionName": "Seattle", - "Latitude": 47.609722, - "Longitude": -122.333056, - "Nodes": [ - { - "Name": "10c", - "RegionID": 10, - "HostName": "derp10c.tailscale.com", - "IPv4": "192.73.240.121", - "IPv6": "2607:f740:14::40c", - "CanPort80": true - }, - { - "Name": "10d", - "RegionID": 10, - "HostName": "derp10d.tailscale.com", - "IPv4": "192.73.240.132", - "IPv6": "2607:f740:14::500", - "CanPort80": true - }, - { - "Name": "10b", - "RegionID": 10, - "HostName": "derp10b.tailscale.com", - "IPv4": "192.73.240.161", - "IPv6": "2607:f740:14::61c", - "CanPort80": true - } - ] - }, - "11": { - "RegionID": 11, - "RegionCode": "sao", - "RegionName": "São Paulo", - "Latitude": -23.55, - "Longitude": -46.633333, - "Nodes": [ - { - "Name": "11f", - "RegionID": 11, - "HostName": "derp11f.tailscale.com", - "IPv4": "172.237.61.197", - "IPv6": "2600:3c0d::2000:3bff:fe44:6166", - "CanPort80": true - }, - { - "Name": "11g", - "RegionID": 11, - "HostName": "derp11g.tailscale.com", - "IPv4": "172.237.61.190", - "IPv6": "2600:3c0d::2000:62ff:febe:2e67", - "CanPort80": true - }, - { - "Name": "11e", - "RegionID": 11, - "HostName": "derp11e.tailscale.com", - "IPv4": "172.237.61.194", - "IPv6": "2600:3c0d::2000:d2ff:fe43:1790", - "CanPort80": true - } - ] - }, - "12": { - "RegionID": 12, - "RegionCode": "ord", - "RegionName": "Chicago", - "Latitude": 41.881944, - "Longitude": -87.627778, - "Nodes": [ - { - "Name": "12e", - "RegionID": 12, - "HostName": "derp12e.tailscale.com", - "IPv4": "209.177.158.15", - "IPv6": "2607:f740:e::b17", - "CanPort80": true - }, - { - "Name": "12f", - "RegionID": 12, - "HostName": "derp12f.tailscale.com", - "IPv4": "199.38.182.118", - "IPv6": "2607:f740:e::4c8", - "CanPort80": true - }, - { - "Name": "12d", - "RegionID": 12, - "HostName": "derp12d.tailscale.com", - "IPv4": "209.177.158.246", - "IPv6": "2607:f740:e::811", - "CanPort80": true - } - ] - }, - "13": { - "RegionID": 13, - "RegionCode": "den", - "RegionName": "Denver", - "Latitude": 39.7392, - "Longitude": -104.9849, - "Nodes": [ - { - "Name": "13c", - "RegionID": 13, - "HostName": "derp13c.tailscale.com", - "IPv4": "192.73.242.28", - "IPv6": "2607:f740:16::5c", - "CanPort80": true - }, - { - "Name": "13d", - "RegionID": 13, - "HostName": "derp13d.tailscale.com", - "IPv4": "192.73.242.204", - "IPv6": "2607:f740:16::c23", - "CanPort80": true - }, - { - "Name": "13b", - "RegionID": 13, - "HostName": "derp13b.tailscale.com", - "IPv4": "192.73.242.187", - "IPv6": "2607:f740:16::640", - "CanPort80": true - } - ] - }, - "14": { - "RegionID": 14, - "RegionCode": "ams", - "RegionName": "Amsterdam", - "Latitude": 52.372778, - "Longitude": 4.893611, - "Nodes": [ - { - "Name": "14c", - "RegionID": 14, - "HostName": "derp14c.tailscale.com", - "IPv4": "176.58.93.147", - "IPv6": "2a00:dd80:3c::b09", - "CanPort80": true - }, - { - "Name": "14d", - "RegionID": 14, - "HostName": "derp14d.tailscale.com", - "IPv4": "176.58.93.154", - "IPv6": "2a00:dd80:3c::3d5", - "CanPort80": true - }, - { - "Name": "14b", - "RegionID": 14, - "HostName": "derp14b.tailscale.com", - "IPv4": "176.58.93.248", - "IPv6": "2a00:dd80:3c::807", - "CanPort80": true - } - ] - }, - "15": { - "RegionID": 15, - "RegionCode": "jnb", - "RegionName": "Johannesburg", - "Latitude": -26.204444, - "Longitude": 28.045556, - "Nodes": [ - { - "Name": "15c", - "RegionID": 15, - "HostName": "derp15c.tailscale.com", - "IPv4": "102.67.165.185", - "IPv6": "2c0f:edb0:0:10::b59", - "CanPort80": true - }, - { - "Name": "15d", - "RegionID": 15, - "HostName": "derp15d.tailscale.com", - "IPv4": "102.67.165.36", - "IPv6": "2c0f:edb0:0:10::599", - "CanPort80": true - }, - { - "Name": "15b", - "RegionID": 15, - "HostName": "derp15b.tailscale.com", - "IPv4": "102.67.165.90", - "IPv6": "2c0f:edb0:0:10::963", - "CanPort80": true - } - ] - }, - "16": { - "RegionID": 16, - "RegionCode": "mia", - "RegionName": "Miami", - "Latitude": 25.78, - "Longitude": -80.21, - "Nodes": [ - { - "Name": "16c", - "RegionID": 16, - "HostName": "derp16c.tailscale.com", - "IPv4": "192.73.243.229", - "IPv6": "2607:f740:17::4e4", - "CanPort80": true - }, - { - "Name": "16d", - "RegionID": 16, - "HostName": "derp16d.tailscale.com", - "IPv4": "192.73.243.141", - "IPv6": "2607:f740:17::475", - "CanPort80": true - }, - { - "Name": "16b", - "RegionID": 16, - "HostName": "derp16b.tailscale.com", - "IPv4": "192.73.243.135", - "IPv6": "2607:f740:17::476", - "CanPort80": true - } - ] - }, - "17": { - "RegionID": 17, - "RegionCode": "lax", - "RegionName": "Los Angeles", - "Latitude": 34.05, - "Longitude": -118.25, - "Nodes": [ - { - "Name": "17c", - "RegionID": 17, - "HostName": "derp17c.tailscale.com", - "IPv4": "208.111.40.12", - "IPv6": "2607:f740:c::10", - "CanPort80": true - }, - { - "Name": "17d", - "RegionID": 17, - "HostName": "derp17d.tailscale.com", - "IPv4": "208.111.40.216", - "IPv6": "2607:f740:c::e1b", - "CanPort80": true - }, - { - "Name": "17b", - "RegionID": 17, - "HostName": "derp17b.tailscale.com", - "IPv4": "192.73.244.245", - "IPv6": "2607:f740:c::646", - "CanPort80": true - } - ] - }, - "18": { - "RegionID": 18, - "RegionCode": "par", - "RegionName": "Paris", - "Latitude": 48.856667, - "Longitude": 2.352222, - "Nodes": [ - { - "Name": "18c", - "RegionID": 18, - "HostName": "derp18c.tailscale.com", - "IPv4": "176.58.90.207", - "IPv6": "2a00:dd80:3e::c19", - "CanPort80": true - }, - { - "Name": "18d", - "RegionID": 18, - "HostName": "derp18d.tailscale.com", - "IPv4": "176.58.90.104", - "IPv6": "2a00:dd80:3e::f2e", - "CanPort80": true - }, - { - "Name": "18b", - "RegionID": 18, - "HostName": "derp18b.tailscale.com", - "IPv4": "176.58.90.147", - "IPv6": "2a00:dd80:3e::363", - "CanPort80": true - } - ] - }, - "19": { - "RegionID": 19, - "RegionCode": "mad", - "RegionName": "Madrid", - "Latitude": 40.416944, - "Longitude": -3.703333, - "Nodes": [ - { - "Name": "19c", - "RegionID": 19, - "HostName": "derp19c.tailscale.com", - "IPv4": "45.159.97.61", - "IPv6": "2a00:dd80:14:10::20", - "CanPort80": true - }, - { - "Name": "19d", - "RegionID": 19, - "HostName": "derp19d.tailscale.com", - "IPv4": "45.159.97.233", - "IPv6": "2a00:dd80:14:10::34a", - "CanPort80": true - }, - { - "Name": "19b", - "RegionID": 19, - "HostName": "derp19b.tailscale.com", - "IPv4": "45.159.97.144", - "IPv6": "2a00:dd80:14:10::335", - "CanPort80": true - } - ] - }, - "2": { - "RegionID": 2, - "RegionCode": "sfo", - "RegionName": "San Francisco", - "Latitude": 37.7775, - "Longitude": -122.416389, - "Nodes": [ - { - "Name": "2e", - "RegionID": 2, - "HostName": "derp2e.tailscale.com", - "IPv4": "192.73.252.134", - "IPv6": "2607:f740:0:3f::44c", - "CanPort80": true - }, - { - "Name": "2f", - "RegionID": 2, - "HostName": "derp2f.tailscale.com", - "IPv4": "208.111.34.178", - "IPv6": "2607:f740:0:3f::f4", - "CanPort80": true - }, - { - "Name": "2d", - "RegionID": 2, - "HostName": "derp2d.tailscale.com", - "IPv4": "192.73.252.65", - "IPv6": "2607:f740:0:3f::287", - "CanPort80": true - } - ] - }, - "20": { - "RegionID": 20, - "RegionCode": "hkg", - "RegionName": "Hong Kong", - "Latitude": 22.3193, - "Longitude": 114.1694, - "Nodes": [ - { - "Name": "20c", - "RegionID": 20, - "HostName": "derp20c.tailscale.com", - "IPv4": "205.147.105.30", - "IPv6": "2403:2500:8000:1::5fb", - "CanPort80": true - }, - { - "Name": "20d", - "RegionID": 20, - "HostName": "derp20d.tailscale.com", - "IPv4": "205.147.105.78", - "IPv6": "2403:2500:8000:1::e9a", - "CanPort80": true - }, - { - "Name": "20b", - "RegionID": 20, - "HostName": "derp20b.tailscale.com", - "IPv4": "103.6.84.152", - "IPv6": "2403:2500:8000:1::ef6", - "CanPort80": true - } - ] - }, - "21": { - "RegionID": 21, - "RegionCode": "tor", - "RegionName": "Toronto", - "Latitude": 43.741667, - "Longitude": -79.373333, - "Nodes": [ - { - "Name": "21c", - "RegionID": 21, - "HostName": "derp21c.tailscale.com", - "IPv4": "162.248.221.215", - "IPv6": "2607:f740:50::f10", - "CanPort80": true - }, - { - "Name": "21d", - "RegionID": 21, - "HostName": "derp21d.tailscale.com", - "IPv4": "162.248.221.248", - "IPv6": "2607:f740:50::ca4", - "CanPort80": true - }, - { - "Name": "21b", - "RegionID": 21, - "HostName": "derp21b.tailscale.com", - "IPv4": "162.248.221.199", - "IPv6": "2607:f740:50::1d1", - "CanPort80": true - } - ] - }, - "22": { - "RegionID": 22, - "RegionCode": "waw", - "RegionName": "Warsaw", - "Latitude": 52.23, - "Longitude": 21.011111, - "Nodes": [ - { - "Name": "22c", - "RegionID": 22, - "HostName": "derp22c.tailscale.com", - "IPv4": "45.159.98.253", - "IPv6": "2a00:dd80:40:100::3f", - "CanPort80": true - }, - { - "Name": "22d", - "RegionID": 22, - "HostName": "derp22d.tailscale.com", - "IPv4": "45.159.98.145", - "IPv6": "2a00:dd80:40:100::211", - "CanPort80": true - }, - { - "Name": "22b", - "RegionID": 22, - "HostName": "derp22b.tailscale.com", - "IPv4": "45.159.98.196", - "IPv6": "2a00:dd80:40:100::316", - "CanPort80": true - } - ] - }, - "23": { - "RegionID": 23, - "RegionCode": "dbi", - "RegionName": "Dubai", - "Latitude": 25.263056, - "Longitude": 55.297222, - "Nodes": [ - { - "Name": "23c", - "RegionID": 23, - "HostName": "derp23c.tailscale.com", - "IPv4": "185.34.3.207", - "IPv6": "2a00:dd80:3f:100::a50", - "CanPort80": true - }, - { - "Name": "23d", - "RegionID": 23, - "HostName": "derp23d.tailscale.com", - "IPv4": "185.34.3.75", - "IPv6": "2a00:dd80:3f:100::97e", - "CanPort80": true - }, - { - "Name": "23b", - "RegionID": 23, - "HostName": "derp23b.tailscale.com", - "IPv4": "185.34.3.232", - "IPv6": "2a00:dd80:3f:100::76f", - "CanPort80": true - } - ] - }, - "24": { - "RegionID": 24, - "RegionCode": "hnl", - "RegionName": "Honolulu", - "Latitude": 21.306944, - "Longitude": -157.858333, - "Nodes": [ - { - "Name": "24c", - "RegionID": 24, - "HostName": "derp24c.tailscale.com", - "IPv4": "208.83.233.233", - "IPv6": "2001:19f0:c000:c591:5400:04ff:fe26:2c5f", - "CanPort80": true - }, - { - "Name": "24d", - "RegionID": 24, - "HostName": "derp24d.tailscale.com", - "IPv4": "208.72.155.133", - "IPv6": "2001:19f0:c000:c564:5400:04ff:fe26:2ba8", - "CanPort80": true - }, - { - "Name": "24b", - "RegionID": 24, - "HostName": "derp24b.tailscale.com", - "IPv4": "208.83.234.151", - "IPv6": "2001:19f0:c000:c586:5400:04ff:fe26:2ba6", - "CanPort80": true - } - ] - }, - "25": { - "RegionID": 25, - "RegionCode": "nai", - "RegionName": "Nairobi", - "Latitude": -1.286389, - "Longitude": 36.817222, - "Nodes": [ - { - "Name": "25c", - "RegionID": 25, - "HostName": "derp25c.tailscale.com", - "IPv4": "102.67.167.37", - "IPv6": "2c0f:edb0:2000:1::2c7", - "CanPort80": true - }, - { - "Name": "25d", - "RegionID": 25, - "HostName": "derp25d.tailscale.com", - "IPv4": "102.67.167.188", - "IPv6": "2c0f:edb0:2000:1::188", - "CanPort80": true - }, - { - "Name": "25b", - "RegionID": 25, - "HostName": "derp25b.tailscale.com", - "IPv4": "102.67.167.245", - "IPv6": "2c0f:edb0:2000:1::2e9", - "CanPort80": true - } - ] - }, - "26": { - "RegionID": 26, - "RegionCode": "nue", - "RegionName": "Nuremberg", - "Latitude": 49.453889, - "Longitude": 11.0775, - "Nodes": [ - { - "Name": "26c", - "RegionID": 26, - "HostName": "derp26c.tailscale.com", - "IPv4": "49.12.193.137", - "IPv6": "2a01:4f8:1c1c:5c70::1", - "CanPort80": true - }, - { - "Name": "26d", - "RegionID": 26, - "HostName": "derp26d.tailscale.com", - "IPv4": "49.13.204.141", - "IPv6": "2a01:4f8:1c0c:7d06::1", - "CanPort80": true - }, - { - "Name": "26b", - "RegionID": 26, - "HostName": "derp26b.tailscale.com", - "IPv4": "167.235.72.200", - "IPv6": "2a01:4f8:1c1c:47b6::1", - "CanPort80": true - } - ] - }, - "27": { - "RegionID": 27, - "RegionCode": "iad", - "RegionName": "Ashburn", - "Latitude": 39.03, - "Longitude": -77.471111, - "Nodes": [ - { - "Name": "27d", - "RegionID": 27, - "HostName": "derp27d.tailscale.com", - "IPv4": "178.156.152.106", - "IPv6": "2a01:4ff:f0:3c8e::1", - "CanPort80": true - }, - { - "Name": "27c", - "RegionID": 27, - "HostName": "derp27c.tailscale.com", - "IPv4": "178.156.152.91", - "IPv6": "2a01:4ff:f0:3913::1", - "CanPort80": true - }, - { - "Name": "27e", - "RegionID": 27, - "HostName": "derp27e.tailscale.com", - "IPv4": "178.156.134.232", - "IPv6": "2a01:4ff:f0:28d4::1", - "CanPort80": true - }, - { - "Name": "27b", - "RegionID": 27, - "HostName": "derp27b.tailscale.com", - "IPv4": "5.161.218.233", - "IPv6": "2a01:4ff:f0:3db9::1", - "CanPort80": true - } - ] - }, - "28": { - "RegionID": 28, - "RegionCode": "hel", - "RegionName": "Helsinki", - "Latitude": 60.170833, - "Longitude": 24.9375, - "Nodes": [ - { - "Name": "28c", - "RegionID": 28, - "HostName": "derp28c.tailscale.com", - "IPv4": "95.217.2.165", - "IPv6": "2a01:4f9:c012:cd74::1", - "CanPort80": true - }, - { - "Name": "28d", - "RegionID": 28, - "HostName": "derp28d.tailscale.com", - "IPv4": "157.180.28.32", - "IPv6": "2a01:4f9:c012:2e5b::1", - "CanPort80": true - }, - { - "Name": "28b", - "RegionID": 28, - "HostName": "derp28b.tailscale.com", - "IPv4": "65.109.143.62", - "IPv6": "2a01:4f9:c012:d55c::1", - "CanPort80": true - } - ] - }, - "3": { - "RegionID": 3, - "RegionCode": "sin", - "RegionName": "Singapore", - "Latitude": 1.3521, - "Longitude": 103.8198, - "Nodes": [ - { - "Name": "3g", - "RegionID": 3, - "HostName": "derp3g.tailscale.com", - "IPv4": "172.237.72.79", - "IPv6": "2600:3c15::2000:adff:fe08:6fab", - "CanPort80": true - }, - { - "Name": "3f", - "RegionID": 3, - "HostName": "derp3f.tailscale.com", - "IPv4": "172.237.72.8", - "IPv6": "2600:3c15::2000:53ff:fe48:a668", - "CanPort80": true - }, - { - "Name": "3h", - "RegionID": 3, - "HostName": "derp3h.tailscale.com", - "IPv4": "172.237.66.30", - "IPv6": "2600:3c15::2000:3dff:fe44:50aa", - "CanPort80": true - }, - { - "Name": "3e", - "RegionID": 3, - "HostName": "derp3e.tailscale.com", - "IPv4": "172.237.72.43", - "IPv6": "2600:3c15::2000:6cff:fee4:d799", - "CanPort80": true - } - ] - }, - "4": { - "RegionID": 4, - "RegionCode": "fra", - "RegionName": "Frankfurt", - "Latitude": 50.1109, - "Longitude": 8.6821, - "Nodes": [ - { - "Name": "4h", - "RegionID": 4, - "HostName": "derp4h.tailscale.com", - "IPv4": "185.40.234.77", - "IPv6": "2a00:dd80:20::bcf", - "CanPort80": true - }, - { - "Name": "4g", - "RegionID": 4, - "HostName": "derp4g.tailscale.com", - "IPv4": "185.40.234.113", - "IPv6": "2a00:dd80:20::8f", - "CanPort80": true - }, - { - "Name": "4i", - "RegionID": 4, - "HostName": "derp4i.tailscale.com", - "IPv4": "185.40.234.53", - "IPv6": "2a00:dd80:20::8a6", - "CanPort80": true - }, - { - "Name": "4f", - "RegionID": 4, - "HostName": "derp4f.tailscale.com", - "IPv4": "185.40.234.219", - "IPv6": "2a00:dd80:20::a25", - "CanPort80": true - } - ] - }, - "5": { - "RegionID": 5, - "RegionCode": "syd", - "RegionName": "Sydney", - "Latitude": -33.867778, - "Longitude": 151.21, - "Nodes": [ - { - "Name": "5f", - "RegionID": 5, - "HostName": "derp5f.tailscale.com", - "IPv4": "172.105.166.103", - "IPv6": "2400:8907::2000:ccff:fe1f:80da", - "CanPort80": true - }, - { - "Name": "5g", - "RegionID": 5, - "HostName": "derp5g.tailscale.com", - "IPv4": "172.105.169.57", - "IPv6": "2400:8907::2000:2fff:fea7:57f4", - "CanPort80": true - }, - { - "Name": "5e", - "RegionID": 5, - "HostName": "derp5e.tailscale.com", - "IPv4": "172.105.179.230", - "IPv6": "2400:8907::2000:ceff:fe8d:4f4e", - "CanPort80": true - } - ] - }, - "6": { - "RegionID": 6, - "RegionCode": "blr", - "RegionName": "Bengaluru", - "Latitude": 12.9716, - "Longitude": 77.5946, - "Nodes": [ - { - "Name": "6a", - "RegionID": 6, - "HostName": "derp6.tailscale.com", - "IPv4": "68.183.90.120", - "IPv6": "2400:6180:100:d0::982:d001", - "CanPort80": true - } - ] - }, - "7": { - "RegionID": 7, - "RegionCode": "tok", - "RegionName": "Tokyo", - "Latitude": 35.6764, - "Longitude": 139.65, - "Nodes": [ - { - "Name": "7g", - "RegionID": 7, - "HostName": "derp7g.tailscale.com", - "IPv4": "172.238.6.179", - "IPv6": "2600:3c18::2000:3fff:fe80:3ebd", - "CanPort80": true - }, - { - "Name": "7f", - "RegionID": 7, - "HostName": "derp7f.tailscale.com", - "IPv4": "172.238.6.34", - "IPv6": "2600:3c18::2000:acff:fe8e:3ed5", - "CanPort80": true - }, - { - "Name": "7h", - "RegionID": 7, - "HostName": "derp7h.tailscale.com", - "IPv4": "172.237.28.183", - "IPv6": "2600:3c18::2000:b1ff:fea9:4560", - "CanPort80": true - }, - { - "Name": "7e", - "RegionID": 7, - "HostName": "derp7e.tailscale.com", - "IPv4": "172.238.6.180", - "IPv6": "2600:3c18::2000:60ff:fe0f:6e83", - "STUNOnly": true, - "CanPort80": true - } - ] - }, - "8": { - "RegionID": 8, - "RegionCode": "lhr", - "RegionName": "London", - "Latitude": 51.5072, - "Longitude": 0.1276, - "Nodes": [ - { - "Name": "8f", - "RegionID": 8, - "HostName": "derp8f.tailscale.com", - "IPv4": "176.58.88.183", - "IPv6": "2a00:dd80:3a::dfa", - "CanPort80": true - }, - { - "Name": "8g", - "RegionID": 8, - "HostName": "derp8g.tailscale.com", - "IPv4": "176.58.92.254", - "IPv6": "2a00:dd80:3a::ed", - "CanPort80": true - }, - { - "Name": "8e", - "RegionID": 8, - "HostName": "derp8e.tailscale.com", - "IPv4": "176.58.92.144", - "IPv6": "2a00:dd80:3a::b33", - "CanPort80": true - } - ] - }, - "9": { - "RegionID": 9, - "RegionCode": "dfw", - "RegionName": "Dallas", - "Latitude": 32.779167, - "Longitude": -96.808889, - "Nodes": [ - { - "Name": "9e", - "RegionID": 9, - "HostName": "derp9e.tailscale.com", - "IPv4": "192.73.248.83", - "IPv6": "2607:f740:100::359", - "CanPort80": true - }, - { - "Name": "9f", - "RegionID": 9, - "HostName": "derp9f.tailscale.com", - "IPv4": "209.177.156.197", - "IPv6": "2607:f740:100::cad", - "CanPort80": true - }, - { - "Name": "9d", - "RegionID": 9, - "HostName": "derp9d.tailscale.com", - "IPv4": "209.177.156.94", - "IPv6": "2607:f740:100::c05", - "CanPort80": true - } - ] - } - } - }, - "DisplayMessages": null, - "TKAEnabled": false, - "TKAHead": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", - "Domain": "kratail2tid@passkey", - "DomainAuditLogID": "", - "UserProfiles": { - "2230775583277936": { - "ID": 2230775583277936, - "LoginName": "exit-b.tail78f774.ts.net", - "DisplayName": "exit-b" - } - } + "PacketFilterRules": null } }, "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.124.195.93": { - "peer_name": "exit-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-node/tailscaled.sock whois --json 100.124.195.93", - "response": null - }, - "100.116.18.24": { - "peer_name": "exit-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-node/tailscaled.sock whois --json 100.116.18.24", - "response": null - }, - "100.107.162.14": { - "peer_name": "group-a-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-node/tailscaled.sock whois --json 100.107.162.14", - "response": null - }, - "100.77.135.18": { - "peer_name": "group-b-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-node/tailscaled.sock whois --json 100.77.135.18", - "response": null - }, - "100.105.127.107": { - "peer_name": "multi-exit-router", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-node/tailscaled.sock whois --json 100.105.127.107", - "response": null - }, - "100.109.43.124": { - "peer_name": "router-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-node/tailscaled.sock whois --json 100.109.43.124", - "response": null - }, - "100.65.172.123": { - "peer_name": "router-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-node/tailscaled.sock whois --json 100.65.172.123", - "response": null - }, - "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 - } - }, "netmap": { - "SelfNode": { - "ID": 4041918547170221, - "StableID": "ngCb76MbZY11CNTRL", - "Name": "exit-node.tail78f774.ts.net.", - "User": 4041918547170221, - "Key": "nodekey:90f4a7b9dc024f1ddec414a49de2aa7611a2dd86efc9d7bae30862ad7c954269", - "DiscoKey": "discokey:6f1a76215431d7100538970473d97b4fde0e0a19b91035d1cba40b59ad79b437", - "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:36712", "10.65.0.27:36712", "172.17.0.1:36712"], - "Hostinfo": { - "Hostname": "exit-node", - "RoutableIPs": ["0.0.0.0/0", "::/0"], - "RequestTags": ["tag:exit"], - "Services": [ - { "Proto": "peerapi4", "Port": 37000 }, - { "Proto": "peerapi6", "Port": 37000 }, - { "Proto": "peerapi-dns-proxy", "Port": 1 } - ] - }, - "Created": "2026-02-23T00:13:20.566112173Z", - "Tags": ["tag:exit"], - "MachineAuthorized": true, - "CapMap": { - "https://tailscale.com/cap/file-sharing": null, - "https://tailscale.com/cap/is-owner": null, - "https://tailscale.com/cap/ssh": null, - "https://tailscale.com/cap/tailnet-lock": null, - "probe-udp-lifetime": null, - "ssh-behavior-v1": null, - "ssh-env-vars": null, - "store-appc-routes": null, - "tailnet-display-name": ["kratail2tid@passkey"] - }, - "ComputedName": "exit-node", - "ComputedNameWithHost": "exit-node" - }, - "AllCaps": [ - "tailnet-display-name", - "ssh-env-vars", - "probe-udp-lifetime", - "ssh-behavior-v1", - "https://tailscale.com/cap/ssh", - "https://tailscale.com/cap/tailnet-lock", - "store-appc-routes", - "https://tailscale.com/cap/file-sharing", - "https://tailscale.com/cap/is-owner" - ], - "NodeKey": "nodekey:90f4a7b9dc024f1ddec414a49de2aa7611a2dd86efc9d7bae30862ad7c954269", - "MachineKey": "mkey:e3be47b2090e55400f3e64825cd3092841529cd7b5b775e9e4553f12308abc2a", "Peers": [], - "DNS": { - "Routes": { - "tail78f774.ts.net.": null, - "ts.net.": [{ "Addr": "199.247.155.53" }, { "Addr": "2620:111:8007::53" }] - }, - "Domains": ["tail78f774.ts.net"], - "Proxied": true, - "ExitNodeFilteredSet": [".ts.net", ".tailscale.net"] - }, - "PacketFilter": [], - "PacketFilterRules": null, - "SSHPolicy": { "rules": [] }, - "CollectServices": false, - "DERPMap": { - "Regions": { - "1": { - "RegionID": 1, - "RegionCode": "nyc", - "RegionName": "New York City", - "Latitude": 40.7128, - "Longitude": -74.006, - "Nodes": [ - { - "Name": "1h", - "RegionID": 1, - "HostName": "derp1h.tailscale.com", - "IPv4": "199.38.181.93", - "IPv6": "2607:f740:f::afd", - "CanPort80": true - }, - { - "Name": "1g", - "RegionID": 1, - "HostName": "derp1g.tailscale.com", - "IPv4": "209.177.145.120", - "IPv6": "2607:f740:f::3eb", - "CanPort80": true - }, - { - "Name": "1i", - "RegionID": 1, - "HostName": "derp1i.tailscale.com", - "IPv4": "199.38.181.103", - "IPv6": "2607:f740:f::e19", - "CanPort80": true - }, - { - "Name": "1f", - "RegionID": 1, - "HostName": "derp1f.tailscale.com", - "IPv4": "199.38.181.104", - "IPv6": "2607:f740:f::bc", - "CanPort80": true - } - ] - }, - "10": { - "RegionID": 10, - "RegionCode": "sea", - "RegionName": "Seattle", - "Latitude": 47.609722, - "Longitude": -122.333056, - "Nodes": [ - { - "Name": "10c", - "RegionID": 10, - "HostName": "derp10c.tailscale.com", - "IPv4": "192.73.240.121", - "IPv6": "2607:f740:14::40c", - "CanPort80": true - }, - { - "Name": "10d", - "RegionID": 10, - "HostName": "derp10d.tailscale.com", - "IPv4": "192.73.240.132", - "IPv6": "2607:f740:14::500", - "CanPort80": true - }, - { - "Name": "10b", - "RegionID": 10, - "HostName": "derp10b.tailscale.com", - "IPv4": "192.73.240.161", - "IPv6": "2607:f740:14::61c", - "CanPort80": true - } - ] - }, - "11": { - "RegionID": 11, - "RegionCode": "sao", - "RegionName": "São Paulo", - "Latitude": -23.55, - "Longitude": -46.633333, - "Nodes": [ - { - "Name": "11f", - "RegionID": 11, - "HostName": "derp11f.tailscale.com", - "IPv4": "172.237.61.197", - "IPv6": "2600:3c0d::2000:3bff:fe44:6166", - "CanPort80": true - }, - { - "Name": "11g", - "RegionID": 11, - "HostName": "derp11g.tailscale.com", - "IPv4": "172.237.61.190", - "IPv6": "2600:3c0d::2000:62ff:febe:2e67", - "CanPort80": true - }, - { - "Name": "11e", - "RegionID": 11, - "HostName": "derp11e.tailscale.com", - "IPv4": "172.237.61.194", - "IPv6": "2600:3c0d::2000:d2ff:fe43:1790", - "CanPort80": true - } - ] - }, - "12": { - "RegionID": 12, - "RegionCode": "ord", - "RegionName": "Chicago", - "Latitude": 41.881944, - "Longitude": -87.627778, - "Nodes": [ - { - "Name": "12e", - "RegionID": 12, - "HostName": "derp12e.tailscale.com", - "IPv4": "209.177.158.15", - "IPv6": "2607:f740:e::b17", - "CanPort80": true - }, - { - "Name": "12f", - "RegionID": 12, - "HostName": "derp12f.tailscale.com", - "IPv4": "199.38.182.118", - "IPv6": "2607:f740:e::4c8", - "CanPort80": true - }, - { - "Name": "12d", - "RegionID": 12, - "HostName": "derp12d.tailscale.com", - "IPv4": "209.177.158.246", - "IPv6": "2607:f740:e::811", - "CanPort80": true - } - ] - }, - "13": { - "RegionID": 13, - "RegionCode": "den", - "RegionName": "Denver", - "Latitude": 39.7392, - "Longitude": -104.9849, - "Nodes": [ - { - "Name": "13c", - "RegionID": 13, - "HostName": "derp13c.tailscale.com", - "IPv4": "192.73.242.28", - "IPv6": "2607:f740:16::5c", - "CanPort80": true - }, - { - "Name": "13d", - "RegionID": 13, - "HostName": "derp13d.tailscale.com", - "IPv4": "192.73.242.204", - "IPv6": "2607:f740:16::c23", - "CanPort80": true - }, - { - "Name": "13b", - "RegionID": 13, - "HostName": "derp13b.tailscale.com", - "IPv4": "192.73.242.187", - "IPv6": "2607:f740:16::640", - "CanPort80": true - } - ] - }, - "14": { - "RegionID": 14, - "RegionCode": "ams", - "RegionName": "Amsterdam", - "Latitude": 52.372778, - "Longitude": 4.893611, - "Nodes": [ - { - "Name": "14c", - "RegionID": 14, - "HostName": "derp14c.tailscale.com", - "IPv4": "176.58.93.147", - "IPv6": "2a00:dd80:3c::b09", - "CanPort80": true - }, - { - "Name": "14d", - "RegionID": 14, - "HostName": "derp14d.tailscale.com", - "IPv4": "176.58.93.154", - "IPv6": "2a00:dd80:3c::3d5", - "CanPort80": true - }, - { - "Name": "14b", - "RegionID": 14, - "HostName": "derp14b.tailscale.com", - "IPv4": "176.58.93.248", - "IPv6": "2a00:dd80:3c::807", - "CanPort80": true - } - ] - }, - "15": { - "RegionID": 15, - "RegionCode": "jnb", - "RegionName": "Johannesburg", - "Latitude": -26.204444, - "Longitude": 28.045556, - "Nodes": [ - { - "Name": "15c", - "RegionID": 15, - "HostName": "derp15c.tailscale.com", - "IPv4": "102.67.165.185", - "IPv6": "2c0f:edb0:0:10::b59", - "CanPort80": true - }, - { - "Name": "15d", - "RegionID": 15, - "HostName": "derp15d.tailscale.com", - "IPv4": "102.67.165.36", - "IPv6": "2c0f:edb0:0:10::599", - "CanPort80": true - }, - { - "Name": "15b", - "RegionID": 15, - "HostName": "derp15b.tailscale.com", - "IPv4": "102.67.165.90", - "IPv6": "2c0f:edb0:0:10::963", - "CanPort80": true - } - ] - }, - "16": { - "RegionID": 16, - "RegionCode": "mia", - "RegionName": "Miami", - "Latitude": 25.78, - "Longitude": -80.21, - "Nodes": [ - { - "Name": "16c", - "RegionID": 16, - "HostName": "derp16c.tailscale.com", - "IPv4": "192.73.243.229", - "IPv6": "2607:f740:17::4e4", - "CanPort80": true - }, - { - "Name": "16d", - "RegionID": 16, - "HostName": "derp16d.tailscale.com", - "IPv4": "192.73.243.141", - "IPv6": "2607:f740:17::475", - "CanPort80": true - }, - { - "Name": "16b", - "RegionID": 16, - "HostName": "derp16b.tailscale.com", - "IPv4": "192.73.243.135", - "IPv6": "2607:f740:17::476", - "CanPort80": true - } - ] - }, - "17": { - "RegionID": 17, - "RegionCode": "lax", - "RegionName": "Los Angeles", - "Latitude": 34.05, - "Longitude": -118.25, - "Nodes": [ - { - "Name": "17c", - "RegionID": 17, - "HostName": "derp17c.tailscale.com", - "IPv4": "208.111.40.12", - "IPv6": "2607:f740:c::10", - "CanPort80": true - }, - { - "Name": "17d", - "RegionID": 17, - "HostName": "derp17d.tailscale.com", - "IPv4": "208.111.40.216", - "IPv6": "2607:f740:c::e1b", - "CanPort80": true - }, - { - "Name": "17b", - "RegionID": 17, - "HostName": "derp17b.tailscale.com", - "IPv4": "192.73.244.245", - "IPv6": "2607:f740:c::646", - "CanPort80": true - } - ] - }, - "18": { - "RegionID": 18, - "RegionCode": "par", - "RegionName": "Paris", - "Latitude": 48.856667, - "Longitude": 2.352222, - "Nodes": [ - { - "Name": "18c", - "RegionID": 18, - "HostName": "derp18c.tailscale.com", - "IPv4": "176.58.90.207", - "IPv6": "2a00:dd80:3e::c19", - "CanPort80": true - }, - { - "Name": "18d", - "RegionID": 18, - "HostName": "derp18d.tailscale.com", - "IPv4": "176.58.90.104", - "IPv6": "2a00:dd80:3e::f2e", - "CanPort80": true - }, - { - "Name": "18b", - "RegionID": 18, - "HostName": "derp18b.tailscale.com", - "IPv4": "176.58.90.147", - "IPv6": "2a00:dd80:3e::363", - "CanPort80": true - } - ] - }, - "19": { - "RegionID": 19, - "RegionCode": "mad", - "RegionName": "Madrid", - "Latitude": 40.416944, - "Longitude": -3.703333, - "Nodes": [ - { - "Name": "19c", - "RegionID": 19, - "HostName": "derp19c.tailscale.com", - "IPv4": "45.159.97.61", - "IPv6": "2a00:dd80:14:10::20", - "CanPort80": true - }, - { - "Name": "19d", - "RegionID": 19, - "HostName": "derp19d.tailscale.com", - "IPv4": "45.159.97.233", - "IPv6": "2a00:dd80:14:10::34a", - "CanPort80": true - }, - { - "Name": "19b", - "RegionID": 19, - "HostName": "derp19b.tailscale.com", - "IPv4": "45.159.97.144", - "IPv6": "2a00:dd80:14:10::335", - "CanPort80": true - } - ] - }, - "2": { - "RegionID": 2, - "RegionCode": "sfo", - "RegionName": "San Francisco", - "Latitude": 37.7775, - "Longitude": -122.416389, - "Nodes": [ - { - "Name": "2e", - "RegionID": 2, - "HostName": "derp2e.tailscale.com", - "IPv4": "192.73.252.134", - "IPv6": "2607:f740:0:3f::44c", - "CanPort80": true - }, - { - "Name": "2f", - "RegionID": 2, - "HostName": "derp2f.tailscale.com", - "IPv4": "208.111.34.178", - "IPv6": "2607:f740:0:3f::f4", - "CanPort80": true - }, - { - "Name": "2d", - "RegionID": 2, - "HostName": "derp2d.tailscale.com", - "IPv4": "192.73.252.65", - "IPv6": "2607:f740:0:3f::287", - "CanPort80": true - } - ] - }, - "20": { - "RegionID": 20, - "RegionCode": "hkg", - "RegionName": "Hong Kong", - "Latitude": 22.3193, - "Longitude": 114.1694, - "Nodes": [ - { - "Name": "20c", - "RegionID": 20, - "HostName": "derp20c.tailscale.com", - "IPv4": "205.147.105.30", - "IPv6": "2403:2500:8000:1::5fb", - "CanPort80": true - }, - { - "Name": "20d", - "RegionID": 20, - "HostName": "derp20d.tailscale.com", - "IPv4": "205.147.105.78", - "IPv6": "2403:2500:8000:1::e9a", - "CanPort80": true - }, - { - "Name": "20b", - "RegionID": 20, - "HostName": "derp20b.tailscale.com", - "IPv4": "103.6.84.152", - "IPv6": "2403:2500:8000:1::ef6", - "CanPort80": true - } - ] - }, - "21": { - "RegionID": 21, - "RegionCode": "tor", - "RegionName": "Toronto", - "Latitude": 43.741667, - "Longitude": -79.373333, - "Nodes": [ - { - "Name": "21c", - "RegionID": 21, - "HostName": "derp21c.tailscale.com", - "IPv4": "162.248.221.215", - "IPv6": "2607:f740:50::f10", - "CanPort80": true - }, - { - "Name": "21d", - "RegionID": 21, - "HostName": "derp21d.tailscale.com", - "IPv4": "162.248.221.248", - "IPv6": "2607:f740:50::ca4", - "CanPort80": true - }, - { - "Name": "21b", - "RegionID": 21, - "HostName": "derp21b.tailscale.com", - "IPv4": "162.248.221.199", - "IPv6": "2607:f740:50::1d1", - "CanPort80": true - } - ] - }, - "22": { - "RegionID": 22, - "RegionCode": "waw", - "RegionName": "Warsaw", - "Latitude": 52.23, - "Longitude": 21.011111, - "Nodes": [ - { - "Name": "22c", - "RegionID": 22, - "HostName": "derp22c.tailscale.com", - "IPv4": "45.159.98.253", - "IPv6": "2a00:dd80:40:100::3f", - "CanPort80": true - }, - { - "Name": "22d", - "RegionID": 22, - "HostName": "derp22d.tailscale.com", - "IPv4": "45.159.98.145", - "IPv6": "2a00:dd80:40:100::211", - "CanPort80": true - }, - { - "Name": "22b", - "RegionID": 22, - "HostName": "derp22b.tailscale.com", - "IPv4": "45.159.98.196", - "IPv6": "2a00:dd80:40:100::316", - "CanPort80": true - } - ] - }, - "23": { - "RegionID": 23, - "RegionCode": "dbi", - "RegionName": "Dubai", - "Latitude": 25.263056, - "Longitude": 55.297222, - "Nodes": [ - { - "Name": "23c", - "RegionID": 23, - "HostName": "derp23c.tailscale.com", - "IPv4": "185.34.3.207", - "IPv6": "2a00:dd80:3f:100::a50", - "CanPort80": true - }, - { - "Name": "23d", - "RegionID": 23, - "HostName": "derp23d.tailscale.com", - "IPv4": "185.34.3.75", - "IPv6": "2a00:dd80:3f:100::97e", - "CanPort80": true - }, - { - "Name": "23b", - "RegionID": 23, - "HostName": "derp23b.tailscale.com", - "IPv4": "185.34.3.232", - "IPv6": "2a00:dd80:3f:100::76f", - "CanPort80": true - } - ] - }, - "24": { - "RegionID": 24, - "RegionCode": "hnl", - "RegionName": "Honolulu", - "Latitude": 21.306944, - "Longitude": -157.858333, - "Nodes": [ - { - "Name": "24c", - "RegionID": 24, - "HostName": "derp24c.tailscale.com", - "IPv4": "208.83.233.233", - "IPv6": "2001:19f0:c000:c591:5400:04ff:fe26:2c5f", - "CanPort80": true - }, - { - "Name": "24d", - "RegionID": 24, - "HostName": "derp24d.tailscale.com", - "IPv4": "208.72.155.133", - "IPv6": "2001:19f0:c000:c564:5400:04ff:fe26:2ba8", - "CanPort80": true - }, - { - "Name": "24b", - "RegionID": 24, - "HostName": "derp24b.tailscale.com", - "IPv4": "208.83.234.151", - "IPv6": "2001:19f0:c000:c586:5400:04ff:fe26:2ba6", - "CanPort80": true - } - ] - }, - "25": { - "RegionID": 25, - "RegionCode": "nai", - "RegionName": "Nairobi", - "Latitude": -1.286389, - "Longitude": 36.817222, - "Nodes": [ - { - "Name": "25c", - "RegionID": 25, - "HostName": "derp25c.tailscale.com", - "IPv4": "102.67.167.37", - "IPv6": "2c0f:edb0:2000:1::2c7", - "CanPort80": true - }, - { - "Name": "25d", - "RegionID": 25, - "HostName": "derp25d.tailscale.com", - "IPv4": "102.67.167.188", - "IPv6": "2c0f:edb0:2000:1::188", - "CanPort80": true - }, - { - "Name": "25b", - "RegionID": 25, - "HostName": "derp25b.tailscale.com", - "IPv4": "102.67.167.245", - "IPv6": "2c0f:edb0:2000:1::2e9", - "CanPort80": true - } - ] - }, - "26": { - "RegionID": 26, - "RegionCode": "nue", - "RegionName": "Nuremberg", - "Latitude": 49.453889, - "Longitude": 11.0775, - "Nodes": [ - { - "Name": "26c", - "RegionID": 26, - "HostName": "derp26c.tailscale.com", - "IPv4": "49.12.193.137", - "IPv6": "2a01:4f8:1c1c:5c70::1", - "CanPort80": true - }, - { - "Name": "26d", - "RegionID": 26, - "HostName": "derp26d.tailscale.com", - "IPv4": "49.13.204.141", - "IPv6": "2a01:4f8:1c0c:7d06::1", - "CanPort80": true - }, - { - "Name": "26b", - "RegionID": 26, - "HostName": "derp26b.tailscale.com", - "IPv4": "167.235.72.200", - "IPv6": "2a01:4f8:1c1c:47b6::1", - "CanPort80": true - } - ] - }, - "27": { - "RegionID": 27, - "RegionCode": "iad", - "RegionName": "Ashburn", - "Latitude": 39.03, - "Longitude": -77.471111, - "Nodes": [ - { - "Name": "27d", - "RegionID": 27, - "HostName": "derp27d.tailscale.com", - "IPv4": "178.156.152.106", - "IPv6": "2a01:4ff:f0:3c8e::1", - "CanPort80": true - }, - { - "Name": "27c", - "RegionID": 27, - "HostName": "derp27c.tailscale.com", - "IPv4": "178.156.152.91", - "IPv6": "2a01:4ff:f0:3913::1", - "CanPort80": true - }, - { - "Name": "27e", - "RegionID": 27, - "HostName": "derp27e.tailscale.com", - "IPv4": "178.156.134.232", - "IPv6": "2a01:4ff:f0:28d4::1", - "CanPort80": true - }, - { - "Name": "27b", - "RegionID": 27, - "HostName": "derp27b.tailscale.com", - "IPv4": "5.161.218.233", - "IPv6": "2a01:4ff:f0:3db9::1", - "CanPort80": true - } - ] - }, - "28": { - "RegionID": 28, - "RegionCode": "hel", - "RegionName": "Helsinki", - "Latitude": 60.170833, - "Longitude": 24.9375, - "Nodes": [ - { - "Name": "28c", - "RegionID": 28, - "HostName": "derp28c.tailscale.com", - "IPv4": "95.217.2.165", - "IPv6": "2a01:4f9:c012:cd74::1", - "CanPort80": true - }, - { - "Name": "28d", - "RegionID": 28, - "HostName": "derp28d.tailscale.com", - "IPv4": "157.180.28.32", - "IPv6": "2a01:4f9:c012:2e5b::1", - "CanPort80": true - }, - { - "Name": "28b", - "RegionID": 28, - "HostName": "derp28b.tailscale.com", - "IPv4": "65.109.143.62", - "IPv6": "2a01:4f9:c012:d55c::1", - "CanPort80": true - } - ] - }, - "3": { - "RegionID": 3, - "RegionCode": "sin", - "RegionName": "Singapore", - "Latitude": 1.3521, - "Longitude": 103.8198, - "Nodes": [ - { - "Name": "3g", - "RegionID": 3, - "HostName": "derp3g.tailscale.com", - "IPv4": "172.237.72.79", - "IPv6": "2600:3c15::2000:adff:fe08:6fab", - "CanPort80": true - }, - { - "Name": "3f", - "RegionID": 3, - "HostName": "derp3f.tailscale.com", - "IPv4": "172.237.72.8", - "IPv6": "2600:3c15::2000:53ff:fe48:a668", - "CanPort80": true - }, - { - "Name": "3h", - "RegionID": 3, - "HostName": "derp3h.tailscale.com", - "IPv4": "172.237.66.30", - "IPv6": "2600:3c15::2000:3dff:fe44:50aa", - "CanPort80": true - }, - { - "Name": "3e", - "RegionID": 3, - "HostName": "derp3e.tailscale.com", - "IPv4": "172.237.72.43", - "IPv6": "2600:3c15::2000:6cff:fee4:d799", - "CanPort80": true - } - ] - }, - "4": { - "RegionID": 4, - "RegionCode": "fra", - "RegionName": "Frankfurt", - "Latitude": 50.1109, - "Longitude": 8.6821, - "Nodes": [ - { - "Name": "4h", - "RegionID": 4, - "HostName": "derp4h.tailscale.com", - "IPv4": "185.40.234.77", - "IPv6": "2a00:dd80:20::bcf", - "CanPort80": true - }, - { - "Name": "4g", - "RegionID": 4, - "HostName": "derp4g.tailscale.com", - "IPv4": "185.40.234.113", - "IPv6": "2a00:dd80:20::8f", - "CanPort80": true - }, - { - "Name": "4i", - "RegionID": 4, - "HostName": "derp4i.tailscale.com", - "IPv4": "185.40.234.53", - "IPv6": "2a00:dd80:20::8a6", - "CanPort80": true - }, - { - "Name": "4f", - "RegionID": 4, - "HostName": "derp4f.tailscale.com", - "IPv4": "185.40.234.219", - "IPv6": "2a00:dd80:20::a25", - "CanPort80": true - } - ] - }, - "5": { - "RegionID": 5, - "RegionCode": "syd", - "RegionName": "Sydney", - "Latitude": -33.867778, - "Longitude": 151.21, - "Nodes": [ - { - "Name": "5f", - "RegionID": 5, - "HostName": "derp5f.tailscale.com", - "IPv4": "172.105.166.103", - "IPv6": "2400:8907::2000:ccff:fe1f:80da", - "CanPort80": true - }, - { - "Name": "5g", - "RegionID": 5, - "HostName": "derp5g.tailscale.com", - "IPv4": "172.105.169.57", - "IPv6": "2400:8907::2000:2fff:fea7:57f4", - "CanPort80": true - }, - { - "Name": "5e", - "RegionID": 5, - "HostName": "derp5e.tailscale.com", - "IPv4": "172.105.179.230", - "IPv6": "2400:8907::2000:ceff:fe8d:4f4e", - "CanPort80": true - } - ] - }, - "6": { - "RegionID": 6, - "RegionCode": "blr", - "RegionName": "Bengaluru", - "Latitude": 12.9716, - "Longitude": 77.5946, - "Nodes": [ - { - "Name": "6a", - "RegionID": 6, - "HostName": "derp6.tailscale.com", - "IPv4": "68.183.90.120", - "IPv6": "2400:6180:100:d0::982:d001", - "CanPort80": true - } - ] - }, - "7": { - "RegionID": 7, - "RegionCode": "tok", - "RegionName": "Tokyo", - "Latitude": 35.6764, - "Longitude": 139.65, - "Nodes": [ - { - "Name": "7g", - "RegionID": 7, - "HostName": "derp7g.tailscale.com", - "IPv4": "172.238.6.179", - "IPv6": "2600:3c18::2000:3fff:fe80:3ebd", - "CanPort80": true - }, - { - "Name": "7f", - "RegionID": 7, - "HostName": "derp7f.tailscale.com", - "IPv4": "172.238.6.34", - "IPv6": "2600:3c18::2000:acff:fe8e:3ed5", - "CanPort80": true - }, - { - "Name": "7h", - "RegionID": 7, - "HostName": "derp7h.tailscale.com", - "IPv4": "172.237.28.183", - "IPv6": "2600:3c18::2000:b1ff:fea9:4560", - "CanPort80": true - }, - { - "Name": "7e", - "RegionID": 7, - "HostName": "derp7e.tailscale.com", - "IPv4": "172.238.6.180", - "IPv6": "2600:3c18::2000:60ff:fe0f:6e83", - "STUNOnly": true, - "CanPort80": true - } - ] - }, - "8": { - "RegionID": 8, - "RegionCode": "lhr", - "RegionName": "London", - "Latitude": 51.5072, - "Longitude": 0.1276, - "Nodes": [ - { - "Name": "8f", - "RegionID": 8, - "HostName": "derp8f.tailscale.com", - "IPv4": "176.58.88.183", - "IPv6": "2a00:dd80:3a::dfa", - "CanPort80": true - }, - { - "Name": "8g", - "RegionID": 8, - "HostName": "derp8g.tailscale.com", - "IPv4": "176.58.92.254", - "IPv6": "2a00:dd80:3a::ed", - "CanPort80": true - }, - { - "Name": "8e", - "RegionID": 8, - "HostName": "derp8e.tailscale.com", - "IPv4": "176.58.92.144", - "IPv6": "2a00:dd80:3a::b33", - "CanPort80": true - } - ] - }, - "9": { - "RegionID": 9, - "RegionCode": "dfw", - "RegionName": "Dallas", - "Latitude": 32.779167, - "Longitude": -96.808889, - "Nodes": [ - { - "Name": "9e", - "RegionID": 9, - "HostName": "derp9e.tailscale.com", - "IPv4": "192.73.248.83", - "IPv6": "2607:f740:100::359", - "CanPort80": true - }, - { - "Name": "9f", - "RegionID": 9, - "HostName": "derp9f.tailscale.com", - "IPv4": "209.177.156.197", - "IPv6": "2607:f740:100::cad", - "CanPort80": true - }, - { - "Name": "9d", - "RegionID": 9, - "HostName": "derp9d.tailscale.com", - "IPv4": "209.177.156.94", - "IPv6": "2607:f740:100::c05", - "CanPort80": true - } - ] - } - } - }, - "DisplayMessages": null, - "TKAEnabled": false, - "TKAHead": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", - "Domain": "kratail2tid@passkey", - "DomainAuditLogID": "", - "UserProfiles": { - "4041918547170221": { - "ID": 4041918547170221, - "LoginName": "exit-node.tail78f774.ts.net", - "DisplayName": "exit-node" - } - } + "PacketFilterRules": null } }, "group-a-client": { - "commands": { - "packet_filter_rules": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/group-a-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/group-a-client/tailscaled.sock debug localapi POST debug-packet-filter-matches" - }, "packet_filter_rules": null, - "packet_filter_matches": [], - "whois": { - "100.124.195.93": { - "peer_name": "exit-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/group-a-client/tailscaled.sock whois --json 100.124.195.93", - "response": null - }, - "100.116.18.24": { - "peer_name": "exit-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/group-a-client/tailscaled.sock whois --json 100.116.18.24", - "response": null - }, - "100.85.66.106": { - "peer_name": "exit-node", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/group-a-client/tailscaled.sock whois --json 100.85.66.106", - "response": null - }, - "100.77.135.18": { - "peer_name": "group-b-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/group-a-client/tailscaled.sock whois --json 100.77.135.18", - "response": null - }, - "100.105.127.107": { - "peer_name": "multi-exit-router", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/group-a-client/tailscaled.sock whois --json 100.105.127.107", - "response": null - }, - "100.109.43.124": { - "peer_name": "router-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/group-a-client/tailscaled.sock whois --json 100.109.43.124", - "response": null - }, - "100.65.172.123": { - "peer_name": "router-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/group-a-client/tailscaled.sock whois --json 100.65.172.123", - "response": null - }, - "100.92.142.61": { - "peer_name": "subnet-router", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/group-a-client/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/group-a-client/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/group-a-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/group-a-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/group-a-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/group-a-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/group-a-client/tailscaled.sock whois --json 100.90.199.68", - "response": null - } - }, "netmap": { - "SelfNode": { - "ID": 6999435610919250, - "StableID": "nyckVfJ4fw11CNTRL", - "Name": "group-a-client.tail78f774.ts.net.", - "User": 6999435610919250, - "Key": "nodekey:802726716bd4942fceb5e444218c930040fadb082698b57ea3eb59a6a26ba20d", - "DiscoKey": "discokey:bc93c2d3b81606e44eb1c96d721e7cd73c9497aa7d3efbe2f5e0d1e2e95b190f", - "Addresses": ["100.107.162.14/32", "fd7a:115c:a1e0::a237:a20e/128"], - "AllowedIPs": ["100.107.162.14/32", "fd7a:115c:a1e0::a237:a20e/128"], - "Endpoints": ["77.164.248.136:51980", "10.65.0.27:51980", "172.17.0.1:51980"], - "Hostinfo": { - "Hostname": "group-a-client", - "RequestTags": ["tag:group-a"], - "Services": [ - { "Proto": "peerapi4", "Port": 36543 }, - { "Proto": "peerapi6", "Port": 36543 }, - { "Proto": "peerapi-dns-proxy", "Port": 1 } - ] - }, - "Created": "2026-03-28T10:38:04.339428828Z", - "Tags": ["tag:group-a"], - "MachineAuthorized": true, - "CapMap": { - "https://tailscale.com/cap/file-sharing": null, - "https://tailscale.com/cap/is-owner": null, - "https://tailscale.com/cap/ssh": null, - "https://tailscale.com/cap/tailnet-lock": null, - "probe-udp-lifetime": null, - "ssh-behavior-v1": null, - "ssh-env-vars": null, - "store-appc-routes": null, - "tailnet-display-name": ["kratail2tid@passkey"] - }, - "ComputedName": "group-a-client", - "ComputedNameWithHost": "group-a-client" - }, - "AllCaps": [ - "probe-udp-lifetime", - "https://tailscale.com/cap/is-owner", - "https://tailscale.com/cap/ssh", - "ssh-behavior-v1", - "tailnet-display-name", - "https://tailscale.com/cap/tailnet-lock", - "store-appc-routes", - "ssh-env-vars", - "https://tailscale.com/cap/file-sharing" - ], - "NodeKey": "nodekey:802726716bd4942fceb5e444218c930040fadb082698b57ea3eb59a6a26ba20d", - "MachineKey": "mkey:fd2d0c2953440569b6c045d6bb1826bf138bf65b4ed4433532e4d91e09fd6b6b", "Peers": [], - "DNS": { - "Routes": { - "tail78f774.ts.net.": null, - "ts.net.": [{ "Addr": "199.247.155.53" }, { "Addr": "2620:111:8007::53" }] - }, - "Domains": ["tail78f774.ts.net"], - "Proxied": true, - "ExitNodeFilteredSet": [".ts.net", ".tailscale.net"] - }, - "PacketFilter": [], - "PacketFilterRules": null, - "SSHPolicy": { "rules": [] }, - "CollectServices": false, - "DERPMap": { - "Regions": { - "1": { - "RegionID": 1, - "RegionCode": "nyc", - "RegionName": "New York City", - "Latitude": 40.7128, - "Longitude": -74.006, - "Nodes": [ - { - "Name": "1h", - "RegionID": 1, - "HostName": "derp1h.tailscale.com", - "IPv4": "199.38.181.93", - "IPv6": "2607:f740:f::afd", - "CanPort80": true - }, - { - "Name": "1g", - "RegionID": 1, - "HostName": "derp1g.tailscale.com", - "IPv4": "209.177.145.120", - "IPv6": "2607:f740:f::3eb", - "CanPort80": true - }, - { - "Name": "1i", - "RegionID": 1, - "HostName": "derp1i.tailscale.com", - "IPv4": "199.38.181.103", - "IPv6": "2607:f740:f::e19", - "CanPort80": true - }, - { - "Name": "1f", - "RegionID": 1, - "HostName": "derp1f.tailscale.com", - "IPv4": "199.38.181.104", - "IPv6": "2607:f740:f::bc", - "CanPort80": true - } - ] - }, - "10": { - "RegionID": 10, - "RegionCode": "sea", - "RegionName": "Seattle", - "Latitude": 47.609722, - "Longitude": -122.333056, - "Nodes": [ - { - "Name": "10c", - "RegionID": 10, - "HostName": "derp10c.tailscale.com", - "IPv4": "192.73.240.121", - "IPv6": "2607:f740:14::40c", - "CanPort80": true - }, - { - "Name": "10d", - "RegionID": 10, - "HostName": "derp10d.tailscale.com", - "IPv4": "192.73.240.132", - "IPv6": "2607:f740:14::500", - "CanPort80": true - }, - { - "Name": "10b", - "RegionID": 10, - "HostName": "derp10b.tailscale.com", - "IPv4": "192.73.240.161", - "IPv6": "2607:f740:14::61c", - "CanPort80": true - } - ] - }, - "11": { - "RegionID": 11, - "RegionCode": "sao", - "RegionName": "São Paulo", - "Latitude": -23.55, - "Longitude": -46.633333, - "Nodes": [ - { - "Name": "11f", - "RegionID": 11, - "HostName": "derp11f.tailscale.com", - "IPv4": "172.237.61.197", - "IPv6": "2600:3c0d::2000:3bff:fe44:6166", - "CanPort80": true - }, - { - "Name": "11g", - "RegionID": 11, - "HostName": "derp11g.tailscale.com", - "IPv4": "172.237.61.190", - "IPv6": "2600:3c0d::2000:62ff:febe:2e67", - "CanPort80": true - }, - { - "Name": "11e", - "RegionID": 11, - "HostName": "derp11e.tailscale.com", - "IPv4": "172.237.61.194", - "IPv6": "2600:3c0d::2000:d2ff:fe43:1790", - "CanPort80": true - } - ] - }, - "12": { - "RegionID": 12, - "RegionCode": "ord", - "RegionName": "Chicago", - "Latitude": 41.881944, - "Longitude": -87.627778, - "Nodes": [ - { - "Name": "12e", - "RegionID": 12, - "HostName": "derp12e.tailscale.com", - "IPv4": "209.177.158.15", - "IPv6": "2607:f740:e::b17", - "CanPort80": true - }, - { - "Name": "12f", - "RegionID": 12, - "HostName": "derp12f.tailscale.com", - "IPv4": "199.38.182.118", - "IPv6": "2607:f740:e::4c8", - "CanPort80": true - }, - { - "Name": "12d", - "RegionID": 12, - "HostName": "derp12d.tailscale.com", - "IPv4": "209.177.158.246", - "IPv6": "2607:f740:e::811", - "CanPort80": true - } - ] - }, - "13": { - "RegionID": 13, - "RegionCode": "den", - "RegionName": "Denver", - "Latitude": 39.7392, - "Longitude": -104.9849, - "Nodes": [ - { - "Name": "13c", - "RegionID": 13, - "HostName": "derp13c.tailscale.com", - "IPv4": "192.73.242.28", - "IPv6": "2607:f740:16::5c", - "CanPort80": true - }, - { - "Name": "13d", - "RegionID": 13, - "HostName": "derp13d.tailscale.com", - "IPv4": "192.73.242.204", - "IPv6": "2607:f740:16::c23", - "CanPort80": true - }, - { - "Name": "13b", - "RegionID": 13, - "HostName": "derp13b.tailscale.com", - "IPv4": "192.73.242.187", - "IPv6": "2607:f740:16::640", - "CanPort80": true - } - ] - }, - "14": { - "RegionID": 14, - "RegionCode": "ams", - "RegionName": "Amsterdam", - "Latitude": 52.372778, - "Longitude": 4.893611, - "Nodes": [ - { - "Name": "14c", - "RegionID": 14, - "HostName": "derp14c.tailscale.com", - "IPv4": "176.58.93.147", - "IPv6": "2a00:dd80:3c::b09", - "CanPort80": true - }, - { - "Name": "14d", - "RegionID": 14, - "HostName": "derp14d.tailscale.com", - "IPv4": "176.58.93.154", - "IPv6": "2a00:dd80:3c::3d5", - "CanPort80": true - }, - { - "Name": "14b", - "RegionID": 14, - "HostName": "derp14b.tailscale.com", - "IPv4": "176.58.93.248", - "IPv6": "2a00:dd80:3c::807", - "CanPort80": true - } - ] - }, - "15": { - "RegionID": 15, - "RegionCode": "jnb", - "RegionName": "Johannesburg", - "Latitude": -26.204444, - "Longitude": 28.045556, - "Nodes": [ - { - "Name": "15c", - "RegionID": 15, - "HostName": "derp15c.tailscale.com", - "IPv4": "102.67.165.185", - "IPv6": "2c0f:edb0:0:10::b59", - "CanPort80": true - }, - { - "Name": "15d", - "RegionID": 15, - "HostName": "derp15d.tailscale.com", - "IPv4": "102.67.165.36", - "IPv6": "2c0f:edb0:0:10::599", - "CanPort80": true - }, - { - "Name": "15b", - "RegionID": 15, - "HostName": "derp15b.tailscale.com", - "IPv4": "102.67.165.90", - "IPv6": "2c0f:edb0:0:10::963", - "CanPort80": true - } - ] - }, - "16": { - "RegionID": 16, - "RegionCode": "mia", - "RegionName": "Miami", - "Latitude": 25.78, - "Longitude": -80.21, - "Nodes": [ - { - "Name": "16c", - "RegionID": 16, - "HostName": "derp16c.tailscale.com", - "IPv4": "192.73.243.229", - "IPv6": "2607:f740:17::4e4", - "CanPort80": true - }, - { - "Name": "16d", - "RegionID": 16, - "HostName": "derp16d.tailscale.com", - "IPv4": "192.73.243.141", - "IPv6": "2607:f740:17::475", - "CanPort80": true - }, - { - "Name": "16b", - "RegionID": 16, - "HostName": "derp16b.tailscale.com", - "IPv4": "192.73.243.135", - "IPv6": "2607:f740:17::476", - "CanPort80": true - } - ] - }, - "17": { - "RegionID": 17, - "RegionCode": "lax", - "RegionName": "Los Angeles", - "Latitude": 34.05, - "Longitude": -118.25, - "Nodes": [ - { - "Name": "17c", - "RegionID": 17, - "HostName": "derp17c.tailscale.com", - "IPv4": "208.111.40.12", - "IPv6": "2607:f740:c::10", - "CanPort80": true - }, - { - "Name": "17d", - "RegionID": 17, - "HostName": "derp17d.tailscale.com", - "IPv4": "208.111.40.216", - "IPv6": "2607:f740:c::e1b", - "CanPort80": true - }, - { - "Name": "17b", - "RegionID": 17, - "HostName": "derp17b.tailscale.com", - "IPv4": "192.73.244.245", - "IPv6": "2607:f740:c::646", - "CanPort80": true - } - ] - }, - "18": { - "RegionID": 18, - "RegionCode": "par", - "RegionName": "Paris", - "Latitude": 48.856667, - "Longitude": 2.352222, - "Nodes": [ - { - "Name": "18c", - "RegionID": 18, - "HostName": "derp18c.tailscale.com", - "IPv4": "176.58.90.207", - "IPv6": "2a00:dd80:3e::c19", - "CanPort80": true - }, - { - "Name": "18d", - "RegionID": 18, - "HostName": "derp18d.tailscale.com", - "IPv4": "176.58.90.104", - "IPv6": "2a00:dd80:3e::f2e", - "CanPort80": true - }, - { - "Name": "18b", - "RegionID": 18, - "HostName": "derp18b.tailscale.com", - "IPv4": "176.58.90.147", - "IPv6": "2a00:dd80:3e::363", - "CanPort80": true - } - ] - }, - "19": { - "RegionID": 19, - "RegionCode": "mad", - "RegionName": "Madrid", - "Latitude": 40.416944, - "Longitude": -3.703333, - "Nodes": [ - { - "Name": "19c", - "RegionID": 19, - "HostName": "derp19c.tailscale.com", - "IPv4": "45.159.97.61", - "IPv6": "2a00:dd80:14:10::20", - "CanPort80": true - }, - { - "Name": "19d", - "RegionID": 19, - "HostName": "derp19d.tailscale.com", - "IPv4": "45.159.97.233", - "IPv6": "2a00:dd80:14:10::34a", - "CanPort80": true - }, - { - "Name": "19b", - "RegionID": 19, - "HostName": "derp19b.tailscale.com", - "IPv4": "45.159.97.144", - "IPv6": "2a00:dd80:14:10::335", - "CanPort80": true - } - ] - }, - "2": { - "RegionID": 2, - "RegionCode": "sfo", - "RegionName": "San Francisco", - "Latitude": 37.7775, - "Longitude": -122.416389, - "Nodes": [ - { - "Name": "2e", - "RegionID": 2, - "HostName": "derp2e.tailscale.com", - "IPv4": "192.73.252.134", - "IPv6": "2607:f740:0:3f::44c", - "CanPort80": true - }, - { - "Name": "2f", - "RegionID": 2, - "HostName": "derp2f.tailscale.com", - "IPv4": "208.111.34.178", - "IPv6": "2607:f740:0:3f::f4", - "CanPort80": true - }, - { - "Name": "2d", - "RegionID": 2, - "HostName": "derp2d.tailscale.com", - "IPv4": "192.73.252.65", - "IPv6": "2607:f740:0:3f::287", - "CanPort80": true - } - ] - }, - "20": { - "RegionID": 20, - "RegionCode": "hkg", - "RegionName": "Hong Kong", - "Latitude": 22.3193, - "Longitude": 114.1694, - "Nodes": [ - { - "Name": "20c", - "RegionID": 20, - "HostName": "derp20c.tailscale.com", - "IPv4": "205.147.105.30", - "IPv6": "2403:2500:8000:1::5fb", - "CanPort80": true - }, - { - "Name": "20d", - "RegionID": 20, - "HostName": "derp20d.tailscale.com", - "IPv4": "205.147.105.78", - "IPv6": "2403:2500:8000:1::e9a", - "CanPort80": true - }, - { - "Name": "20b", - "RegionID": 20, - "HostName": "derp20b.tailscale.com", - "IPv4": "103.6.84.152", - "IPv6": "2403:2500:8000:1::ef6", - "CanPort80": true - } - ] - }, - "21": { - "RegionID": 21, - "RegionCode": "tor", - "RegionName": "Toronto", - "Latitude": 43.741667, - "Longitude": -79.373333, - "Nodes": [ - { - "Name": "21c", - "RegionID": 21, - "HostName": "derp21c.tailscale.com", - "IPv4": "162.248.221.215", - "IPv6": "2607:f740:50::f10", - "CanPort80": true - }, - { - "Name": "21d", - "RegionID": 21, - "HostName": "derp21d.tailscale.com", - "IPv4": "162.248.221.248", - "IPv6": "2607:f740:50::ca4", - "CanPort80": true - }, - { - "Name": "21b", - "RegionID": 21, - "HostName": "derp21b.tailscale.com", - "IPv4": "162.248.221.199", - "IPv6": "2607:f740:50::1d1", - "CanPort80": true - } - ] - }, - "22": { - "RegionID": 22, - "RegionCode": "waw", - "RegionName": "Warsaw", - "Latitude": 52.23, - "Longitude": 21.011111, - "Nodes": [ - { - "Name": "22c", - "RegionID": 22, - "HostName": "derp22c.tailscale.com", - "IPv4": "45.159.98.253", - "IPv6": "2a00:dd80:40:100::3f", - "CanPort80": true - }, - { - "Name": "22d", - "RegionID": 22, - "HostName": "derp22d.tailscale.com", - "IPv4": "45.159.98.145", - "IPv6": "2a00:dd80:40:100::211", - "CanPort80": true - }, - { - "Name": "22b", - "RegionID": 22, - "HostName": "derp22b.tailscale.com", - "IPv4": "45.159.98.196", - "IPv6": "2a00:dd80:40:100::316", - "CanPort80": true - } - ] - }, - "23": { - "RegionID": 23, - "RegionCode": "dbi", - "RegionName": "Dubai", - "Latitude": 25.263056, - "Longitude": 55.297222, - "Nodes": [ - { - "Name": "23c", - "RegionID": 23, - "HostName": "derp23c.tailscale.com", - "IPv4": "185.34.3.207", - "IPv6": "2a00:dd80:3f:100::a50", - "CanPort80": true - }, - { - "Name": "23d", - "RegionID": 23, - "HostName": "derp23d.tailscale.com", - "IPv4": "185.34.3.75", - "IPv6": "2a00:dd80:3f:100::97e", - "CanPort80": true - }, - { - "Name": "23b", - "RegionID": 23, - "HostName": "derp23b.tailscale.com", - "IPv4": "185.34.3.232", - "IPv6": "2a00:dd80:3f:100::76f", - "CanPort80": true - } - ] - }, - "24": { - "RegionID": 24, - "RegionCode": "hnl", - "RegionName": "Honolulu", - "Latitude": 21.306944, - "Longitude": -157.858333, - "Nodes": [ - { - "Name": "24c", - "RegionID": 24, - "HostName": "derp24c.tailscale.com", - "IPv4": "208.83.233.233", - "IPv6": "2001:19f0:c000:c591:5400:04ff:fe26:2c5f", - "CanPort80": true - }, - { - "Name": "24d", - "RegionID": 24, - "HostName": "derp24d.tailscale.com", - "IPv4": "208.72.155.133", - "IPv6": "2001:19f0:c000:c564:5400:04ff:fe26:2ba8", - "CanPort80": true - }, - { - "Name": "24b", - "RegionID": 24, - "HostName": "derp24b.tailscale.com", - "IPv4": "208.83.234.151", - "IPv6": "2001:19f0:c000:c586:5400:04ff:fe26:2ba6", - "CanPort80": true - } - ] - }, - "25": { - "RegionID": 25, - "RegionCode": "nai", - "RegionName": "Nairobi", - "Latitude": -1.286389, - "Longitude": 36.817222, - "Nodes": [ - { - "Name": "25c", - "RegionID": 25, - "HostName": "derp25c.tailscale.com", - "IPv4": "102.67.167.37", - "IPv6": "2c0f:edb0:2000:1::2c7", - "CanPort80": true - }, - { - "Name": "25d", - "RegionID": 25, - "HostName": "derp25d.tailscale.com", - "IPv4": "102.67.167.188", - "IPv6": "2c0f:edb0:2000:1::188", - "CanPort80": true - }, - { - "Name": "25b", - "RegionID": 25, - "HostName": "derp25b.tailscale.com", - "IPv4": "102.67.167.245", - "IPv6": "2c0f:edb0:2000:1::2e9", - "CanPort80": true - } - ] - }, - "26": { - "RegionID": 26, - "RegionCode": "nue", - "RegionName": "Nuremberg", - "Latitude": 49.453889, - "Longitude": 11.0775, - "Nodes": [ - { - "Name": "26c", - "RegionID": 26, - "HostName": "derp26c.tailscale.com", - "IPv4": "49.12.193.137", - "IPv6": "2a01:4f8:1c1c:5c70::1", - "CanPort80": true - }, - { - "Name": "26d", - "RegionID": 26, - "HostName": "derp26d.tailscale.com", - "IPv4": "49.13.204.141", - "IPv6": "2a01:4f8:1c0c:7d06::1", - "CanPort80": true - }, - { - "Name": "26b", - "RegionID": 26, - "HostName": "derp26b.tailscale.com", - "IPv4": "167.235.72.200", - "IPv6": "2a01:4f8:1c1c:47b6::1", - "CanPort80": true - } - ] - }, - "27": { - "RegionID": 27, - "RegionCode": "iad", - "RegionName": "Ashburn", - "Latitude": 39.03, - "Longitude": -77.471111, - "Nodes": [ - { - "Name": "27d", - "RegionID": 27, - "HostName": "derp27d.tailscale.com", - "IPv4": "178.156.152.106", - "IPv6": "2a01:4ff:f0:3c8e::1", - "CanPort80": true - }, - { - "Name": "27c", - "RegionID": 27, - "HostName": "derp27c.tailscale.com", - "IPv4": "178.156.152.91", - "IPv6": "2a01:4ff:f0:3913::1", - "CanPort80": true - }, - { - "Name": "27e", - "RegionID": 27, - "HostName": "derp27e.tailscale.com", - "IPv4": "178.156.134.232", - "IPv6": "2a01:4ff:f0:28d4::1", - "CanPort80": true - }, - { - "Name": "27b", - "RegionID": 27, - "HostName": "derp27b.tailscale.com", - "IPv4": "5.161.218.233", - "IPv6": "2a01:4ff:f0:3db9::1", - "CanPort80": true - } - ] - }, - "28": { - "RegionID": 28, - "RegionCode": "hel", - "RegionName": "Helsinki", - "Latitude": 60.170833, - "Longitude": 24.9375, - "Nodes": [ - { - "Name": "28c", - "RegionID": 28, - "HostName": "derp28c.tailscale.com", - "IPv4": "95.217.2.165", - "IPv6": "2a01:4f9:c012:cd74::1", - "CanPort80": true - }, - { - "Name": "28d", - "RegionID": 28, - "HostName": "derp28d.tailscale.com", - "IPv4": "157.180.28.32", - "IPv6": "2a01:4f9:c012:2e5b::1", - "CanPort80": true - }, - { - "Name": "28b", - "RegionID": 28, - "HostName": "derp28b.tailscale.com", - "IPv4": "65.109.143.62", - "IPv6": "2a01:4f9:c012:d55c::1", - "CanPort80": true - } - ] - }, - "3": { - "RegionID": 3, - "RegionCode": "sin", - "RegionName": "Singapore", - "Latitude": 1.3521, - "Longitude": 103.8198, - "Nodes": [ - { - "Name": "3g", - "RegionID": 3, - "HostName": "derp3g.tailscale.com", - "IPv4": "172.237.72.79", - "IPv6": "2600:3c15::2000:adff:fe08:6fab", - "CanPort80": true - }, - { - "Name": "3f", - "RegionID": 3, - "HostName": "derp3f.tailscale.com", - "IPv4": "172.237.72.8", - "IPv6": "2600:3c15::2000:53ff:fe48:a668", - "CanPort80": true - }, - { - "Name": "3h", - "RegionID": 3, - "HostName": "derp3h.tailscale.com", - "IPv4": "172.237.66.30", - "IPv6": "2600:3c15::2000:3dff:fe44:50aa", - "CanPort80": true - }, - { - "Name": "3e", - "RegionID": 3, - "HostName": "derp3e.tailscale.com", - "IPv4": "172.237.72.43", - "IPv6": "2600:3c15::2000:6cff:fee4:d799", - "CanPort80": true - } - ] - }, - "4": { - "RegionID": 4, - "RegionCode": "fra", - "RegionName": "Frankfurt", - "Latitude": 50.1109, - "Longitude": 8.6821, - "Nodes": [ - { - "Name": "4h", - "RegionID": 4, - "HostName": "derp4h.tailscale.com", - "IPv4": "185.40.234.77", - "IPv6": "2a00:dd80:20::bcf", - "CanPort80": true - }, - { - "Name": "4g", - "RegionID": 4, - "HostName": "derp4g.tailscale.com", - "IPv4": "185.40.234.113", - "IPv6": "2a00:dd80:20::8f", - "CanPort80": true - }, - { - "Name": "4i", - "RegionID": 4, - "HostName": "derp4i.tailscale.com", - "IPv4": "185.40.234.53", - "IPv6": "2a00:dd80:20::8a6", - "CanPort80": true - }, - { - "Name": "4f", - "RegionID": 4, - "HostName": "derp4f.tailscale.com", - "IPv4": "185.40.234.219", - "IPv6": "2a00:dd80:20::a25", - "CanPort80": true - } - ] - }, - "5": { - "RegionID": 5, - "RegionCode": "syd", - "RegionName": "Sydney", - "Latitude": -33.867778, - "Longitude": 151.21, - "Nodes": [ - { - "Name": "5f", - "RegionID": 5, - "HostName": "derp5f.tailscale.com", - "IPv4": "172.105.166.103", - "IPv6": "2400:8907::2000:ccff:fe1f:80da", - "CanPort80": true - }, - { - "Name": "5g", - "RegionID": 5, - "HostName": "derp5g.tailscale.com", - "IPv4": "172.105.169.57", - "IPv6": "2400:8907::2000:2fff:fea7:57f4", - "CanPort80": true - }, - { - "Name": "5e", - "RegionID": 5, - "HostName": "derp5e.tailscale.com", - "IPv4": "172.105.179.230", - "IPv6": "2400:8907::2000:ceff:fe8d:4f4e", - "CanPort80": true - } - ] - }, - "6": { - "RegionID": 6, - "RegionCode": "blr", - "RegionName": "Bengaluru", - "Latitude": 12.9716, - "Longitude": 77.5946, - "Nodes": [ - { - "Name": "6a", - "RegionID": 6, - "HostName": "derp6.tailscale.com", - "IPv4": "68.183.90.120", - "IPv6": "2400:6180:100:d0::982:d001", - "CanPort80": true - } - ] - }, - "7": { - "RegionID": 7, - "RegionCode": "tok", - "RegionName": "Tokyo", - "Latitude": 35.6764, - "Longitude": 139.65, - "Nodes": [ - { - "Name": "7g", - "RegionID": 7, - "HostName": "derp7g.tailscale.com", - "IPv4": "172.238.6.179", - "IPv6": "2600:3c18::2000:3fff:fe80:3ebd", - "CanPort80": true - }, - { - "Name": "7f", - "RegionID": 7, - "HostName": "derp7f.tailscale.com", - "IPv4": "172.238.6.34", - "IPv6": "2600:3c18::2000:acff:fe8e:3ed5", - "CanPort80": true - }, - { - "Name": "7h", - "RegionID": 7, - "HostName": "derp7h.tailscale.com", - "IPv4": "172.237.28.183", - "IPv6": "2600:3c18::2000:b1ff:fea9:4560", - "CanPort80": true - }, - { - "Name": "7e", - "RegionID": 7, - "HostName": "derp7e.tailscale.com", - "IPv4": "172.238.6.180", - "IPv6": "2600:3c18::2000:60ff:fe0f:6e83", - "STUNOnly": true, - "CanPort80": true - } - ] - }, - "8": { - "RegionID": 8, - "RegionCode": "lhr", - "RegionName": "London", - "Latitude": 51.5072, - "Longitude": 0.1276, - "Nodes": [ - { - "Name": "8f", - "RegionID": 8, - "HostName": "derp8f.tailscale.com", - "IPv4": "176.58.88.183", - "IPv6": "2a00:dd80:3a::dfa", - "CanPort80": true - }, - { - "Name": "8g", - "RegionID": 8, - "HostName": "derp8g.tailscale.com", - "IPv4": "176.58.92.254", - "IPv6": "2a00:dd80:3a::ed", - "CanPort80": true - }, - { - "Name": "8e", - "RegionID": 8, - "HostName": "derp8e.tailscale.com", - "IPv4": "176.58.92.144", - "IPv6": "2a00:dd80:3a::b33", - "CanPort80": true - } - ] - }, - "9": { - "RegionID": 9, - "RegionCode": "dfw", - "RegionName": "Dallas", - "Latitude": 32.779167, - "Longitude": -96.808889, - "Nodes": [ - { - "Name": "9e", - "RegionID": 9, - "HostName": "derp9e.tailscale.com", - "IPv4": "192.73.248.83", - "IPv6": "2607:f740:100::359", - "CanPort80": true - }, - { - "Name": "9f", - "RegionID": 9, - "HostName": "derp9f.tailscale.com", - "IPv4": "209.177.156.197", - "IPv6": "2607:f740:100::cad", - "CanPort80": true - }, - { - "Name": "9d", - "RegionID": 9, - "HostName": "derp9d.tailscale.com", - "IPv4": "209.177.156.94", - "IPv6": "2607:f740:100::c05", - "CanPort80": true - } - ] - } - } - }, - "DisplayMessages": null, - "TKAEnabled": false, - "TKAHead": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", - "Domain": "kratail2tid@passkey", - "DomainAuditLogID": "", - "UserProfiles": { - "6999435610919250": { - "ID": 6999435610919250, - "LoginName": "group-a-client.tail78f774.ts.net", - "DisplayName": "group-a-client" - } - } + "PacketFilterRules": null } }, "group-b-client": { - "commands": { - "packet_filter_rules": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/group-b-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/group-b-client/tailscaled.sock debug localapi POST debug-packet-filter-matches" - }, "packet_filter_rules": null, - "packet_filter_matches": [], - "whois": { - "100.124.195.93": { - "peer_name": "exit-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/group-b-client/tailscaled.sock whois --json 100.124.195.93", - "response": null - }, - "100.116.18.24": { - "peer_name": "exit-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/group-b-client/tailscaled.sock whois --json 100.116.18.24", - "response": null - }, - "100.85.66.106": { - "peer_name": "exit-node", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/group-b-client/tailscaled.sock whois --json 100.85.66.106", - "response": null - }, - "100.107.162.14": { - "peer_name": "group-a-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/group-b-client/tailscaled.sock whois --json 100.107.162.14", - "response": null - }, - "100.105.127.107": { - "peer_name": "multi-exit-router", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/group-b-client/tailscaled.sock whois --json 100.105.127.107", - "response": null - }, - "100.109.43.124": { - "peer_name": "router-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/group-b-client/tailscaled.sock whois --json 100.109.43.124", - "response": null - }, - "100.65.172.123": { - "peer_name": "router-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/group-b-client/tailscaled.sock whois --json 100.65.172.123", - "response": null - }, - "100.92.142.61": { - "peer_name": "subnet-router", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/group-b-client/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/group-b-client/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/group-b-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/group-b-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/group-b-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/group-b-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/group-b-client/tailscaled.sock whois --json 100.90.199.68", - "response": null - } - }, "netmap": { - "SelfNode": { - "ID": 1008089393782498, - "StableID": "ndUwgLoZs811CNTRL", - "Name": "group-b-client.tail78f774.ts.net.", - "User": 1008089393782498, - "Key": "nodekey:ef35a655163204a08b33e09fdc24709f1e3aaa7f40de4efd5549cf014b4d8711", - "DiscoKey": "discokey:e972182cda0d0b459c91b2881624b81749a7e44390a5dde1b9bc17c1ae67715a", - "Addresses": ["100.77.135.18/32", "fd7a:115c:a1e0::4b37:8712/128"], - "AllowedIPs": ["100.77.135.18/32", "fd7a:115c:a1e0::4b37:8712/128"], - "Endpoints": ["77.164.248.136:49377", "10.65.0.27:49377", "172.17.0.1:49377"], - "Hostinfo": { - "Hostname": "group-b-client", - "RequestTags": ["tag:group-b"], - "Services": [ - { "Proto": "peerapi4", "Port": 47173 }, - { "Proto": "peerapi6", "Port": 47173 }, - { "Proto": "peerapi-dns-proxy", "Port": 1 } - ] - }, - "Created": "2026-03-28T10:38:08.031309668Z", - "Tags": ["tag:group-b"], - "MachineAuthorized": true, - "CapMap": { - "https://tailscale.com/cap/file-sharing": null, - "https://tailscale.com/cap/is-owner": null, - "https://tailscale.com/cap/ssh": null, - "https://tailscale.com/cap/tailnet-lock": null, - "probe-udp-lifetime": null, - "ssh-behavior-v1": null, - "ssh-env-vars": null, - "store-appc-routes": null, - "tailnet-display-name": ["kratail2tid@passkey"] - }, - "ComputedName": "group-b-client", - "ComputedNameWithHost": "group-b-client" - }, - "AllCaps": [ - "https://tailscale.com/cap/ssh", - "ssh-env-vars", - "probe-udp-lifetime", - "https://tailscale.com/cap/tailnet-lock", - "store-appc-routes", - "https://tailscale.com/cap/is-owner", - "ssh-behavior-v1", - "tailnet-display-name", - "https://tailscale.com/cap/file-sharing" - ], - "NodeKey": "nodekey:ef35a655163204a08b33e09fdc24709f1e3aaa7f40de4efd5549cf014b4d8711", - "MachineKey": "mkey:f151b3ba7be457f1484c96d8daf48e032d8c9ed890a7f9b2f32c51458a19a05c", "Peers": [], - "DNS": { - "Routes": { - "tail78f774.ts.net.": null, - "ts.net.": [{ "Addr": "199.247.155.53" }, { "Addr": "2620:111:8007::53" }] - }, - "Domains": ["tail78f774.ts.net"], - "Proxied": true, - "ExitNodeFilteredSet": [".ts.net", ".tailscale.net"] - }, - "PacketFilter": [], - "PacketFilterRules": null, - "SSHPolicy": { "rules": [] }, - "CollectServices": false, - "DERPMap": { - "Regions": { - "1": { - "RegionID": 1, - "RegionCode": "nyc", - "RegionName": "New York City", - "Latitude": 40.7128, - "Longitude": -74.006, - "Nodes": [ - { - "Name": "1h", - "RegionID": 1, - "HostName": "derp1h.tailscale.com", - "IPv4": "199.38.181.93", - "IPv6": "2607:f740:f::afd", - "CanPort80": true - }, - { - "Name": "1g", - "RegionID": 1, - "HostName": "derp1g.tailscale.com", - "IPv4": "209.177.145.120", - "IPv6": "2607:f740:f::3eb", - "CanPort80": true - }, - { - "Name": "1i", - "RegionID": 1, - "HostName": "derp1i.tailscale.com", - "IPv4": "199.38.181.103", - "IPv6": "2607:f740:f::e19", - "CanPort80": true - }, - { - "Name": "1f", - "RegionID": 1, - "HostName": "derp1f.tailscale.com", - "IPv4": "199.38.181.104", - "IPv6": "2607:f740:f::bc", - "CanPort80": true - } - ] - }, - "10": { - "RegionID": 10, - "RegionCode": "sea", - "RegionName": "Seattle", - "Latitude": 47.609722, - "Longitude": -122.333056, - "Nodes": [ - { - "Name": "10c", - "RegionID": 10, - "HostName": "derp10c.tailscale.com", - "IPv4": "192.73.240.121", - "IPv6": "2607:f740:14::40c", - "CanPort80": true - }, - { - "Name": "10d", - "RegionID": 10, - "HostName": "derp10d.tailscale.com", - "IPv4": "192.73.240.132", - "IPv6": "2607:f740:14::500", - "CanPort80": true - }, - { - "Name": "10b", - "RegionID": 10, - "HostName": "derp10b.tailscale.com", - "IPv4": "192.73.240.161", - "IPv6": "2607:f740:14::61c", - "CanPort80": true - } - ] - }, - "11": { - "RegionID": 11, - "RegionCode": "sao", - "RegionName": "São Paulo", - "Latitude": -23.55, - "Longitude": -46.633333, - "Nodes": [ - { - "Name": "11f", - "RegionID": 11, - "HostName": "derp11f.tailscale.com", - "IPv4": "172.237.61.197", - "IPv6": "2600:3c0d::2000:3bff:fe44:6166", - "CanPort80": true - }, - { - "Name": "11g", - "RegionID": 11, - "HostName": "derp11g.tailscale.com", - "IPv4": "172.237.61.190", - "IPv6": "2600:3c0d::2000:62ff:febe:2e67", - "CanPort80": true - }, - { - "Name": "11e", - "RegionID": 11, - "HostName": "derp11e.tailscale.com", - "IPv4": "172.237.61.194", - "IPv6": "2600:3c0d::2000:d2ff:fe43:1790", - "CanPort80": true - } - ] - }, - "12": { - "RegionID": 12, - "RegionCode": "ord", - "RegionName": "Chicago", - "Latitude": 41.881944, - "Longitude": -87.627778, - "Nodes": [ - { - "Name": "12e", - "RegionID": 12, - "HostName": "derp12e.tailscale.com", - "IPv4": "209.177.158.15", - "IPv6": "2607:f740:e::b17", - "CanPort80": true - }, - { - "Name": "12f", - "RegionID": 12, - "HostName": "derp12f.tailscale.com", - "IPv4": "199.38.182.118", - "IPv6": "2607:f740:e::4c8", - "CanPort80": true - }, - { - "Name": "12d", - "RegionID": 12, - "HostName": "derp12d.tailscale.com", - "IPv4": "209.177.158.246", - "IPv6": "2607:f740:e::811", - "CanPort80": true - } - ] - }, - "13": { - "RegionID": 13, - "RegionCode": "den", - "RegionName": "Denver", - "Latitude": 39.7392, - "Longitude": -104.9849, - "Nodes": [ - { - "Name": "13c", - "RegionID": 13, - "HostName": "derp13c.tailscale.com", - "IPv4": "192.73.242.28", - "IPv6": "2607:f740:16::5c", - "CanPort80": true - }, - { - "Name": "13d", - "RegionID": 13, - "HostName": "derp13d.tailscale.com", - "IPv4": "192.73.242.204", - "IPv6": "2607:f740:16::c23", - "CanPort80": true - }, - { - "Name": "13b", - "RegionID": 13, - "HostName": "derp13b.tailscale.com", - "IPv4": "192.73.242.187", - "IPv6": "2607:f740:16::640", - "CanPort80": true - } - ] - }, - "14": { - "RegionID": 14, - "RegionCode": "ams", - "RegionName": "Amsterdam", - "Latitude": 52.372778, - "Longitude": 4.893611, - "Nodes": [ - { - "Name": "14c", - "RegionID": 14, - "HostName": "derp14c.tailscale.com", - "IPv4": "176.58.93.147", - "IPv6": "2a00:dd80:3c::b09", - "CanPort80": true - }, - { - "Name": "14d", - "RegionID": 14, - "HostName": "derp14d.tailscale.com", - "IPv4": "176.58.93.154", - "IPv6": "2a00:dd80:3c::3d5", - "CanPort80": true - }, - { - "Name": "14b", - "RegionID": 14, - "HostName": "derp14b.tailscale.com", - "IPv4": "176.58.93.248", - "IPv6": "2a00:dd80:3c::807", - "CanPort80": true - } - ] - }, - "15": { - "RegionID": 15, - "RegionCode": "jnb", - "RegionName": "Johannesburg", - "Latitude": -26.204444, - "Longitude": 28.045556, - "Nodes": [ - { - "Name": "15c", - "RegionID": 15, - "HostName": "derp15c.tailscale.com", - "IPv4": "102.67.165.185", - "IPv6": "2c0f:edb0:0:10::b59", - "CanPort80": true - }, - { - "Name": "15d", - "RegionID": 15, - "HostName": "derp15d.tailscale.com", - "IPv4": "102.67.165.36", - "IPv6": "2c0f:edb0:0:10::599", - "CanPort80": true - }, - { - "Name": "15b", - "RegionID": 15, - "HostName": "derp15b.tailscale.com", - "IPv4": "102.67.165.90", - "IPv6": "2c0f:edb0:0:10::963", - "CanPort80": true - } - ] - }, - "16": { - "RegionID": 16, - "RegionCode": "mia", - "RegionName": "Miami", - "Latitude": 25.78, - "Longitude": -80.21, - "Nodes": [ - { - "Name": "16c", - "RegionID": 16, - "HostName": "derp16c.tailscale.com", - "IPv4": "192.73.243.229", - "IPv6": "2607:f740:17::4e4", - "CanPort80": true - }, - { - "Name": "16d", - "RegionID": 16, - "HostName": "derp16d.tailscale.com", - "IPv4": "192.73.243.141", - "IPv6": "2607:f740:17::475", - "CanPort80": true - }, - { - "Name": "16b", - "RegionID": 16, - "HostName": "derp16b.tailscale.com", - "IPv4": "192.73.243.135", - "IPv6": "2607:f740:17::476", - "CanPort80": true - } - ] - }, - "17": { - "RegionID": 17, - "RegionCode": "lax", - "RegionName": "Los Angeles", - "Latitude": 34.05, - "Longitude": -118.25, - "Nodes": [ - { - "Name": "17c", - "RegionID": 17, - "HostName": "derp17c.tailscale.com", - "IPv4": "208.111.40.12", - "IPv6": "2607:f740:c::10", - "CanPort80": true - }, - { - "Name": "17d", - "RegionID": 17, - "HostName": "derp17d.tailscale.com", - "IPv4": "208.111.40.216", - "IPv6": "2607:f740:c::e1b", - "CanPort80": true - }, - { - "Name": "17b", - "RegionID": 17, - "HostName": "derp17b.tailscale.com", - "IPv4": "192.73.244.245", - "IPv6": "2607:f740:c::646", - "CanPort80": true - } - ] - }, - "18": { - "RegionID": 18, - "RegionCode": "par", - "RegionName": "Paris", - "Latitude": 48.856667, - "Longitude": 2.352222, - "Nodes": [ - { - "Name": "18c", - "RegionID": 18, - "HostName": "derp18c.tailscale.com", - "IPv4": "176.58.90.207", - "IPv6": "2a00:dd80:3e::c19", - "CanPort80": true - }, - { - "Name": "18d", - "RegionID": 18, - "HostName": "derp18d.tailscale.com", - "IPv4": "176.58.90.104", - "IPv6": "2a00:dd80:3e::f2e", - "CanPort80": true - }, - { - "Name": "18b", - "RegionID": 18, - "HostName": "derp18b.tailscale.com", - "IPv4": "176.58.90.147", - "IPv6": "2a00:dd80:3e::363", - "CanPort80": true - } - ] - }, - "19": { - "RegionID": 19, - "RegionCode": "mad", - "RegionName": "Madrid", - "Latitude": 40.416944, - "Longitude": -3.703333, - "Nodes": [ - { - "Name": "19c", - "RegionID": 19, - "HostName": "derp19c.tailscale.com", - "IPv4": "45.159.97.61", - "IPv6": "2a00:dd80:14:10::20", - "CanPort80": true - }, - { - "Name": "19d", - "RegionID": 19, - "HostName": "derp19d.tailscale.com", - "IPv4": "45.159.97.233", - "IPv6": "2a00:dd80:14:10::34a", - "CanPort80": true - }, - { - "Name": "19b", - "RegionID": 19, - "HostName": "derp19b.tailscale.com", - "IPv4": "45.159.97.144", - "IPv6": "2a00:dd80:14:10::335", - "CanPort80": true - } - ] - }, - "2": { - "RegionID": 2, - "RegionCode": "sfo", - "RegionName": "San Francisco", - "Latitude": 37.7775, - "Longitude": -122.416389, - "Nodes": [ - { - "Name": "2e", - "RegionID": 2, - "HostName": "derp2e.tailscale.com", - "IPv4": "192.73.252.134", - "IPv6": "2607:f740:0:3f::44c", - "CanPort80": true - }, - { - "Name": "2f", - "RegionID": 2, - "HostName": "derp2f.tailscale.com", - "IPv4": "208.111.34.178", - "IPv6": "2607:f740:0:3f::f4", - "CanPort80": true - }, - { - "Name": "2d", - "RegionID": 2, - "HostName": "derp2d.tailscale.com", - "IPv4": "192.73.252.65", - "IPv6": "2607:f740:0:3f::287", - "CanPort80": true - } - ] - }, - "20": { - "RegionID": 20, - "RegionCode": "hkg", - "RegionName": "Hong Kong", - "Latitude": 22.3193, - "Longitude": 114.1694, - "Nodes": [ - { - "Name": "20c", - "RegionID": 20, - "HostName": "derp20c.tailscale.com", - "IPv4": "205.147.105.30", - "IPv6": "2403:2500:8000:1::5fb", - "CanPort80": true - }, - { - "Name": "20d", - "RegionID": 20, - "HostName": "derp20d.tailscale.com", - "IPv4": "205.147.105.78", - "IPv6": "2403:2500:8000:1::e9a", - "CanPort80": true - }, - { - "Name": "20b", - "RegionID": 20, - "HostName": "derp20b.tailscale.com", - "IPv4": "103.6.84.152", - "IPv6": "2403:2500:8000:1::ef6", - "CanPort80": true - } - ] - }, - "21": { - "RegionID": 21, - "RegionCode": "tor", - "RegionName": "Toronto", - "Latitude": 43.741667, - "Longitude": -79.373333, - "Nodes": [ - { - "Name": "21c", - "RegionID": 21, - "HostName": "derp21c.tailscale.com", - "IPv4": "162.248.221.215", - "IPv6": "2607:f740:50::f10", - "CanPort80": true - }, - { - "Name": "21d", - "RegionID": 21, - "HostName": "derp21d.tailscale.com", - "IPv4": "162.248.221.248", - "IPv6": "2607:f740:50::ca4", - "CanPort80": true - }, - { - "Name": "21b", - "RegionID": 21, - "HostName": "derp21b.tailscale.com", - "IPv4": "162.248.221.199", - "IPv6": "2607:f740:50::1d1", - "CanPort80": true - } - ] - }, - "22": { - "RegionID": 22, - "RegionCode": "waw", - "RegionName": "Warsaw", - "Latitude": 52.23, - "Longitude": 21.011111, - "Nodes": [ - { - "Name": "22c", - "RegionID": 22, - "HostName": "derp22c.tailscale.com", - "IPv4": "45.159.98.253", - "IPv6": "2a00:dd80:40:100::3f", - "CanPort80": true - }, - { - "Name": "22d", - "RegionID": 22, - "HostName": "derp22d.tailscale.com", - "IPv4": "45.159.98.145", - "IPv6": "2a00:dd80:40:100::211", - "CanPort80": true - }, - { - "Name": "22b", - "RegionID": 22, - "HostName": "derp22b.tailscale.com", - "IPv4": "45.159.98.196", - "IPv6": "2a00:dd80:40:100::316", - "CanPort80": true - } - ] - }, - "23": { - "RegionID": 23, - "RegionCode": "dbi", - "RegionName": "Dubai", - "Latitude": 25.263056, - "Longitude": 55.297222, - "Nodes": [ - { - "Name": "23c", - "RegionID": 23, - "HostName": "derp23c.tailscale.com", - "IPv4": "185.34.3.207", - "IPv6": "2a00:dd80:3f:100::a50", - "CanPort80": true - }, - { - "Name": "23d", - "RegionID": 23, - "HostName": "derp23d.tailscale.com", - "IPv4": "185.34.3.75", - "IPv6": "2a00:dd80:3f:100::97e", - "CanPort80": true - }, - { - "Name": "23b", - "RegionID": 23, - "HostName": "derp23b.tailscale.com", - "IPv4": "185.34.3.232", - "IPv6": "2a00:dd80:3f:100::76f", - "CanPort80": true - } - ] - }, - "24": { - "RegionID": 24, - "RegionCode": "hnl", - "RegionName": "Honolulu", - "Latitude": 21.306944, - "Longitude": -157.858333, - "Nodes": [ - { - "Name": "24c", - "RegionID": 24, - "HostName": "derp24c.tailscale.com", - "IPv4": "208.83.233.233", - "IPv6": "2001:19f0:c000:c591:5400:04ff:fe26:2c5f", - "CanPort80": true - }, - { - "Name": "24d", - "RegionID": 24, - "HostName": "derp24d.tailscale.com", - "IPv4": "208.72.155.133", - "IPv6": "2001:19f0:c000:c564:5400:04ff:fe26:2ba8", - "CanPort80": true - }, - { - "Name": "24b", - "RegionID": 24, - "HostName": "derp24b.tailscale.com", - "IPv4": "208.83.234.151", - "IPv6": "2001:19f0:c000:c586:5400:04ff:fe26:2ba6", - "CanPort80": true - } - ] - }, - "25": { - "RegionID": 25, - "RegionCode": "nai", - "RegionName": "Nairobi", - "Latitude": -1.286389, - "Longitude": 36.817222, - "Nodes": [ - { - "Name": "25c", - "RegionID": 25, - "HostName": "derp25c.tailscale.com", - "IPv4": "102.67.167.37", - "IPv6": "2c0f:edb0:2000:1::2c7", - "CanPort80": true - }, - { - "Name": "25d", - "RegionID": 25, - "HostName": "derp25d.tailscale.com", - "IPv4": "102.67.167.188", - "IPv6": "2c0f:edb0:2000:1::188", - "CanPort80": true - }, - { - "Name": "25b", - "RegionID": 25, - "HostName": "derp25b.tailscale.com", - "IPv4": "102.67.167.245", - "IPv6": "2c0f:edb0:2000:1::2e9", - "CanPort80": true - } - ] - }, - "26": { - "RegionID": 26, - "RegionCode": "nue", - "RegionName": "Nuremberg", - "Latitude": 49.453889, - "Longitude": 11.0775, - "Nodes": [ - { - "Name": "26c", - "RegionID": 26, - "HostName": "derp26c.tailscale.com", - "IPv4": "49.12.193.137", - "IPv6": "2a01:4f8:1c1c:5c70::1", - "CanPort80": true - }, - { - "Name": "26d", - "RegionID": 26, - "HostName": "derp26d.tailscale.com", - "IPv4": "49.13.204.141", - "IPv6": "2a01:4f8:1c0c:7d06::1", - "CanPort80": true - }, - { - "Name": "26b", - "RegionID": 26, - "HostName": "derp26b.tailscale.com", - "IPv4": "167.235.72.200", - "IPv6": "2a01:4f8:1c1c:47b6::1", - "CanPort80": true - } - ] - }, - "27": { - "RegionID": 27, - "RegionCode": "iad", - "RegionName": "Ashburn", - "Latitude": 39.03, - "Longitude": -77.471111, - "Nodes": [ - { - "Name": "27d", - "RegionID": 27, - "HostName": "derp27d.tailscale.com", - "IPv4": "178.156.152.106", - "IPv6": "2a01:4ff:f0:3c8e::1", - "CanPort80": true - }, - { - "Name": "27c", - "RegionID": 27, - "HostName": "derp27c.tailscale.com", - "IPv4": "178.156.152.91", - "IPv6": "2a01:4ff:f0:3913::1", - "CanPort80": true - }, - { - "Name": "27e", - "RegionID": 27, - "HostName": "derp27e.tailscale.com", - "IPv4": "178.156.134.232", - "IPv6": "2a01:4ff:f0:28d4::1", - "CanPort80": true - }, - { - "Name": "27b", - "RegionID": 27, - "HostName": "derp27b.tailscale.com", - "IPv4": "5.161.218.233", - "IPv6": "2a01:4ff:f0:3db9::1", - "CanPort80": true - } - ] - }, - "28": { - "RegionID": 28, - "RegionCode": "hel", - "RegionName": "Helsinki", - "Latitude": 60.170833, - "Longitude": 24.9375, - "Nodes": [ - { - "Name": "28c", - "RegionID": 28, - "HostName": "derp28c.tailscale.com", - "IPv4": "95.217.2.165", - "IPv6": "2a01:4f9:c012:cd74::1", - "CanPort80": true - }, - { - "Name": "28d", - "RegionID": 28, - "HostName": "derp28d.tailscale.com", - "IPv4": "157.180.28.32", - "IPv6": "2a01:4f9:c012:2e5b::1", - "CanPort80": true - }, - { - "Name": "28b", - "RegionID": 28, - "HostName": "derp28b.tailscale.com", - "IPv4": "65.109.143.62", - "IPv6": "2a01:4f9:c012:d55c::1", - "CanPort80": true - } - ] - }, - "3": { - "RegionID": 3, - "RegionCode": "sin", - "RegionName": "Singapore", - "Latitude": 1.3521, - "Longitude": 103.8198, - "Nodes": [ - { - "Name": "3g", - "RegionID": 3, - "HostName": "derp3g.tailscale.com", - "IPv4": "172.237.72.79", - "IPv6": "2600:3c15::2000:adff:fe08:6fab", - "CanPort80": true - }, - { - "Name": "3f", - "RegionID": 3, - "HostName": "derp3f.tailscale.com", - "IPv4": "172.237.72.8", - "IPv6": "2600:3c15::2000:53ff:fe48:a668", - "CanPort80": true - }, - { - "Name": "3h", - "RegionID": 3, - "HostName": "derp3h.tailscale.com", - "IPv4": "172.237.66.30", - "IPv6": "2600:3c15::2000:3dff:fe44:50aa", - "CanPort80": true - }, - { - "Name": "3e", - "RegionID": 3, - "HostName": "derp3e.tailscale.com", - "IPv4": "172.237.72.43", - "IPv6": "2600:3c15::2000:6cff:fee4:d799", - "CanPort80": true - } - ] - }, - "4": { - "RegionID": 4, - "RegionCode": "fra", - "RegionName": "Frankfurt", - "Latitude": 50.1109, - "Longitude": 8.6821, - "Nodes": [ - { - "Name": "4h", - "RegionID": 4, - "HostName": "derp4h.tailscale.com", - "IPv4": "185.40.234.77", - "IPv6": "2a00:dd80:20::bcf", - "CanPort80": true - }, - { - "Name": "4g", - "RegionID": 4, - "HostName": "derp4g.tailscale.com", - "IPv4": "185.40.234.113", - "IPv6": "2a00:dd80:20::8f", - "CanPort80": true - }, - { - "Name": "4i", - "RegionID": 4, - "HostName": "derp4i.tailscale.com", - "IPv4": "185.40.234.53", - "IPv6": "2a00:dd80:20::8a6", - "CanPort80": true - }, - { - "Name": "4f", - "RegionID": 4, - "HostName": "derp4f.tailscale.com", - "IPv4": "185.40.234.219", - "IPv6": "2a00:dd80:20::a25", - "CanPort80": true - } - ] - }, - "5": { - "RegionID": 5, - "RegionCode": "syd", - "RegionName": "Sydney", - "Latitude": -33.867778, - "Longitude": 151.21, - "Nodes": [ - { - "Name": "5f", - "RegionID": 5, - "HostName": "derp5f.tailscale.com", - "IPv4": "172.105.166.103", - "IPv6": "2400:8907::2000:ccff:fe1f:80da", - "CanPort80": true - }, - { - "Name": "5g", - "RegionID": 5, - "HostName": "derp5g.tailscale.com", - "IPv4": "172.105.169.57", - "IPv6": "2400:8907::2000:2fff:fea7:57f4", - "CanPort80": true - }, - { - "Name": "5e", - "RegionID": 5, - "HostName": "derp5e.tailscale.com", - "IPv4": "172.105.179.230", - "IPv6": "2400:8907::2000:ceff:fe8d:4f4e", - "CanPort80": true - } - ] - }, - "6": { - "RegionID": 6, - "RegionCode": "blr", - "RegionName": "Bengaluru", - "Latitude": 12.9716, - "Longitude": 77.5946, - "Nodes": [ - { - "Name": "6a", - "RegionID": 6, - "HostName": "derp6.tailscale.com", - "IPv4": "68.183.90.120", - "IPv6": "2400:6180:100:d0::982:d001", - "CanPort80": true - } - ] - }, - "7": { - "RegionID": 7, - "RegionCode": "tok", - "RegionName": "Tokyo", - "Latitude": 35.6764, - "Longitude": 139.65, - "Nodes": [ - { - "Name": "7g", - "RegionID": 7, - "HostName": "derp7g.tailscale.com", - "IPv4": "172.238.6.179", - "IPv6": "2600:3c18::2000:3fff:fe80:3ebd", - "CanPort80": true - }, - { - "Name": "7f", - "RegionID": 7, - "HostName": "derp7f.tailscale.com", - "IPv4": "172.238.6.34", - "IPv6": "2600:3c18::2000:acff:fe8e:3ed5", - "CanPort80": true - }, - { - "Name": "7h", - "RegionID": 7, - "HostName": "derp7h.tailscale.com", - "IPv4": "172.237.28.183", - "IPv6": "2600:3c18::2000:b1ff:fea9:4560", - "CanPort80": true - }, - { - "Name": "7e", - "RegionID": 7, - "HostName": "derp7e.tailscale.com", - "IPv4": "172.238.6.180", - "IPv6": "2600:3c18::2000:60ff:fe0f:6e83", - "STUNOnly": true, - "CanPort80": true - } - ] - }, - "8": { - "RegionID": 8, - "RegionCode": "lhr", - "RegionName": "London", - "Latitude": 51.5072, - "Longitude": 0.1276, - "Nodes": [ - { - "Name": "8f", - "RegionID": 8, - "HostName": "derp8f.tailscale.com", - "IPv4": "176.58.88.183", - "IPv6": "2a00:dd80:3a::dfa", - "CanPort80": true - }, - { - "Name": "8g", - "RegionID": 8, - "HostName": "derp8g.tailscale.com", - "IPv4": "176.58.92.254", - "IPv6": "2a00:dd80:3a::ed", - "CanPort80": true - }, - { - "Name": "8e", - "RegionID": 8, - "HostName": "derp8e.tailscale.com", - "IPv4": "176.58.92.144", - "IPv6": "2a00:dd80:3a::b33", - "CanPort80": true - } - ] - }, - "9": { - "RegionID": 9, - "RegionCode": "dfw", - "RegionName": "Dallas", - "Latitude": 32.779167, - "Longitude": -96.808889, - "Nodes": [ - { - "Name": "9e", - "RegionID": 9, - "HostName": "derp9e.tailscale.com", - "IPv4": "192.73.248.83", - "IPv6": "2607:f740:100::359", - "CanPort80": true - }, - { - "Name": "9f", - "RegionID": 9, - "HostName": "derp9f.tailscale.com", - "IPv4": "209.177.156.197", - "IPv6": "2607:f740:100::cad", - "CanPort80": true - }, - { - "Name": "9d", - "RegionID": 9, - "HostName": "derp9d.tailscale.com", - "IPv4": "209.177.156.94", - "IPv6": "2607:f740:100::c05", - "CanPort80": true - } - ] - } - } - }, - "DisplayMessages": null, - "TKAEnabled": false, - "TKAHead": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", - "Domain": "kratail2tid@passkey", - "DomainAuditLogID": "", - "UserProfiles": { - "1008089393782498": { - "ID": 1008089393782498, - "LoginName": "group-b-client.tail78f774.ts.net", - "DisplayName": "group-b-client" - } - } + "PacketFilterRules": null } }, "multi-exit-router": { - "commands": { - "packet_filter_rules": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/multi-exit-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/multi-exit-router/tailscaled.sock debug localapi POST debug-packet-filter-matches" - }, "packet_filter_rules": null, - "packet_filter_matches": [], - "whois": { - "100.124.195.93": { - "peer_name": "exit-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/multi-exit-router/tailscaled.sock whois --json 100.124.195.93", - "response": null - }, - "100.116.18.24": { - "peer_name": "exit-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/multi-exit-router/tailscaled.sock whois --json 100.116.18.24", - "response": null - }, - "100.85.66.106": { - "peer_name": "exit-node", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/multi-exit-router/tailscaled.sock whois --json 100.85.66.106", - "response": null - }, - "100.107.162.14": { - "peer_name": "group-a-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/multi-exit-router/tailscaled.sock whois --json 100.107.162.14", - "response": null - }, - "100.77.135.18": { - "peer_name": "group-b-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/multi-exit-router/tailscaled.sock whois --json 100.77.135.18", - "response": null - }, - "100.109.43.124": { - "peer_name": "router-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/multi-exit-router/tailscaled.sock whois --json 100.109.43.124", - "response": null - }, - "100.65.172.123": { - "peer_name": "router-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/multi-exit-router/tailscaled.sock whois --json 100.65.172.123", - "response": null - }, - "100.92.142.61": { - "peer_name": "subnet-router", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/multi-exit-router/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/multi-exit-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/multi-exit-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/multi-exit-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/multi-exit-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/multi-exit-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/multi-exit-router/tailscaled.sock whois --json 100.90.199.68", - "response": null - } - }, "netmap": { - "SelfNode": { - "ID": 6294409699640722, - "StableID": "nMQuxDUk9r11CNTRL", - "Name": "multi-exit-router.tail78f774.ts.net.", - "User": 6294409699640722, - "Key": "nodekey:b854a0d64eba757cd3215c5bd78149cc0f927e35a2ad20342e88a15ead297f6a", - "DiscoKey": "discokey:762c82dd308809f511c6ac86dcc2642585837358fdd24958d55f16883c8e6c58", - "Addresses": ["100.105.127.107/32", "fd7a:115c:a1e0::ad37:7f6b/128"], - "AllowedIPs": ["100.105.127.107/32", "fd7a:115c:a1e0::ad37:7f6b/128", "10.33.0.0/16"], - "Endpoints": ["77.164.248.136:50766", "10.65.0.27:50766", "172.17.0.1:50766"], - "Hostinfo": { - "Hostname": "multi-exit-router", - "RoutableIPs": ["0.0.0.0/0", "::/0", "10.33.0.0/16"], - "RequestTags": ["tag:exit", "tag:router"], - "Services": [ - { "Proto": "peerapi4", "Port": 62548 }, - { "Proto": "peerapi6", "Port": 62548 }, - { "Proto": "peerapi-dns-proxy", "Port": 1 } - ] - }, - "Created": "2026-03-28T10:38:19.117098852Z", - "Tags": ["tag:exit", "tag:router"], - "PrimaryRoutes": ["10.33.0.0/16"], - "MachineAuthorized": true, - "CapMap": { - "https://tailscale.com/cap/file-sharing": null, - "https://tailscale.com/cap/is-owner": null, - "https://tailscale.com/cap/ssh": null, - "https://tailscale.com/cap/tailnet-lock": null, - "probe-udp-lifetime": null, - "ssh-behavior-v1": null, - "ssh-env-vars": null, - "store-appc-routes": null, - "tailnet-display-name": ["kratail2tid@passkey"] - }, - "ComputedName": "multi-exit-router", - "ComputedNameWithHost": "multi-exit-router" - }, - "AllCaps": [ - "https://tailscale.com/cap/ssh", - "probe-udp-lifetime", - "ssh-behavior-v1", - "https://tailscale.com/cap/file-sharing", - "tailnet-display-name", - "https://tailscale.com/cap/is-owner", - "store-appc-routes", - "https://tailscale.com/cap/tailnet-lock", - "ssh-env-vars" - ], - "NodeKey": "nodekey:b854a0d64eba757cd3215c5bd78149cc0f927e35a2ad20342e88a15ead297f6a", - "MachineKey": "mkey:91bee804809f30d07bfc29cf556844288fc3d45e0572469a3cb0799a535fda7d", "Peers": [], - "DNS": { - "Routes": { - "tail78f774.ts.net.": null, - "ts.net.": [{ "Addr": "199.247.155.53" }, { "Addr": "2620:111:8007::53" }] - }, - "Domains": ["tail78f774.ts.net"], - "Proxied": true, - "ExitNodeFilteredSet": [".ts.net", ".tailscale.net"] - }, - "PacketFilter": [], - "PacketFilterRules": null, - "SSHPolicy": { "rules": [] }, - "CollectServices": false, - "DERPMap": { - "Regions": { - "1": { - "RegionID": 1, - "RegionCode": "nyc", - "RegionName": "New York City", - "Latitude": 40.7128, - "Longitude": -74.006, - "Nodes": [ - { - "Name": "1h", - "RegionID": 1, - "HostName": "derp1h.tailscale.com", - "IPv4": "199.38.181.93", - "IPv6": "2607:f740:f::afd", - "CanPort80": true - }, - { - "Name": "1g", - "RegionID": 1, - "HostName": "derp1g.tailscale.com", - "IPv4": "209.177.145.120", - "IPv6": "2607:f740:f::3eb", - "CanPort80": true - }, - { - "Name": "1i", - "RegionID": 1, - "HostName": "derp1i.tailscale.com", - "IPv4": "199.38.181.103", - "IPv6": "2607:f740:f::e19", - "CanPort80": true - }, - { - "Name": "1f", - "RegionID": 1, - "HostName": "derp1f.tailscale.com", - "IPv4": "199.38.181.104", - "IPv6": "2607:f740:f::bc", - "CanPort80": true - } - ] - }, - "10": { - "RegionID": 10, - "RegionCode": "sea", - "RegionName": "Seattle", - "Latitude": 47.609722, - "Longitude": -122.333056, - "Nodes": [ - { - "Name": "10c", - "RegionID": 10, - "HostName": "derp10c.tailscale.com", - "IPv4": "192.73.240.121", - "IPv6": "2607:f740:14::40c", - "CanPort80": true - }, - { - "Name": "10d", - "RegionID": 10, - "HostName": "derp10d.tailscale.com", - "IPv4": "192.73.240.132", - "IPv6": "2607:f740:14::500", - "CanPort80": true - }, - { - "Name": "10b", - "RegionID": 10, - "HostName": "derp10b.tailscale.com", - "IPv4": "192.73.240.161", - "IPv6": "2607:f740:14::61c", - "CanPort80": true - } - ] - }, - "11": { - "RegionID": 11, - "RegionCode": "sao", - "RegionName": "São Paulo", - "Latitude": -23.55, - "Longitude": -46.633333, - "Nodes": [ - { - "Name": "11f", - "RegionID": 11, - "HostName": "derp11f.tailscale.com", - "IPv4": "172.237.61.197", - "IPv6": "2600:3c0d::2000:3bff:fe44:6166", - "CanPort80": true - }, - { - "Name": "11g", - "RegionID": 11, - "HostName": "derp11g.tailscale.com", - "IPv4": "172.237.61.190", - "IPv6": "2600:3c0d::2000:62ff:febe:2e67", - "CanPort80": true - }, - { - "Name": "11e", - "RegionID": 11, - "HostName": "derp11e.tailscale.com", - "IPv4": "172.237.61.194", - "IPv6": "2600:3c0d::2000:d2ff:fe43:1790", - "CanPort80": true - } - ] - }, - "12": { - "RegionID": 12, - "RegionCode": "ord", - "RegionName": "Chicago", - "Latitude": 41.881944, - "Longitude": -87.627778, - "Nodes": [ - { - "Name": "12e", - "RegionID": 12, - "HostName": "derp12e.tailscale.com", - "IPv4": "209.177.158.15", - "IPv6": "2607:f740:e::b17", - "CanPort80": true - }, - { - "Name": "12f", - "RegionID": 12, - "HostName": "derp12f.tailscale.com", - "IPv4": "199.38.182.118", - "IPv6": "2607:f740:e::4c8", - "CanPort80": true - }, - { - "Name": "12d", - "RegionID": 12, - "HostName": "derp12d.tailscale.com", - "IPv4": "209.177.158.246", - "IPv6": "2607:f740:e::811", - "CanPort80": true - } - ] - }, - "13": { - "RegionID": 13, - "RegionCode": "den", - "RegionName": "Denver", - "Latitude": 39.7392, - "Longitude": -104.9849, - "Nodes": [ - { - "Name": "13c", - "RegionID": 13, - "HostName": "derp13c.tailscale.com", - "IPv4": "192.73.242.28", - "IPv6": "2607:f740:16::5c", - "CanPort80": true - }, - { - "Name": "13d", - "RegionID": 13, - "HostName": "derp13d.tailscale.com", - "IPv4": "192.73.242.204", - "IPv6": "2607:f740:16::c23", - "CanPort80": true - }, - { - "Name": "13b", - "RegionID": 13, - "HostName": "derp13b.tailscale.com", - "IPv4": "192.73.242.187", - "IPv6": "2607:f740:16::640", - "CanPort80": true - } - ] - }, - "14": { - "RegionID": 14, - "RegionCode": "ams", - "RegionName": "Amsterdam", - "Latitude": 52.372778, - "Longitude": 4.893611, - "Nodes": [ - { - "Name": "14c", - "RegionID": 14, - "HostName": "derp14c.tailscale.com", - "IPv4": "176.58.93.147", - "IPv6": "2a00:dd80:3c::b09", - "CanPort80": true - }, - { - "Name": "14d", - "RegionID": 14, - "HostName": "derp14d.tailscale.com", - "IPv4": "176.58.93.154", - "IPv6": "2a00:dd80:3c::3d5", - "CanPort80": true - }, - { - "Name": "14b", - "RegionID": 14, - "HostName": "derp14b.tailscale.com", - "IPv4": "176.58.93.248", - "IPv6": "2a00:dd80:3c::807", - "CanPort80": true - } - ] - }, - "15": { - "RegionID": 15, - "RegionCode": "jnb", - "RegionName": "Johannesburg", - "Latitude": -26.204444, - "Longitude": 28.045556, - "Nodes": [ - { - "Name": "15c", - "RegionID": 15, - "HostName": "derp15c.tailscale.com", - "IPv4": "102.67.165.185", - "IPv6": "2c0f:edb0:0:10::b59", - "CanPort80": true - }, - { - "Name": "15d", - "RegionID": 15, - "HostName": "derp15d.tailscale.com", - "IPv4": "102.67.165.36", - "IPv6": "2c0f:edb0:0:10::599", - "CanPort80": true - }, - { - "Name": "15b", - "RegionID": 15, - "HostName": "derp15b.tailscale.com", - "IPv4": "102.67.165.90", - "IPv6": "2c0f:edb0:0:10::963", - "CanPort80": true - } - ] - }, - "16": { - "RegionID": 16, - "RegionCode": "mia", - "RegionName": "Miami", - "Latitude": 25.78, - "Longitude": -80.21, - "Nodes": [ - { - "Name": "16c", - "RegionID": 16, - "HostName": "derp16c.tailscale.com", - "IPv4": "192.73.243.229", - "IPv6": "2607:f740:17::4e4", - "CanPort80": true - }, - { - "Name": "16d", - "RegionID": 16, - "HostName": "derp16d.tailscale.com", - "IPv4": "192.73.243.141", - "IPv6": "2607:f740:17::475", - "CanPort80": true - }, - { - "Name": "16b", - "RegionID": 16, - "HostName": "derp16b.tailscale.com", - "IPv4": "192.73.243.135", - "IPv6": "2607:f740:17::476", - "CanPort80": true - } - ] - }, - "17": { - "RegionID": 17, - "RegionCode": "lax", - "RegionName": "Los Angeles", - "Latitude": 34.05, - "Longitude": -118.25, - "Nodes": [ - { - "Name": "17c", - "RegionID": 17, - "HostName": "derp17c.tailscale.com", - "IPv4": "208.111.40.12", - "IPv6": "2607:f740:c::10", - "CanPort80": true - }, - { - "Name": "17d", - "RegionID": 17, - "HostName": "derp17d.tailscale.com", - "IPv4": "208.111.40.216", - "IPv6": "2607:f740:c::e1b", - "CanPort80": true - }, - { - "Name": "17b", - "RegionID": 17, - "HostName": "derp17b.tailscale.com", - "IPv4": "192.73.244.245", - "IPv6": "2607:f740:c::646", - "CanPort80": true - } - ] - }, - "18": { - "RegionID": 18, - "RegionCode": "par", - "RegionName": "Paris", - "Latitude": 48.856667, - "Longitude": 2.352222, - "Nodes": [ - { - "Name": "18c", - "RegionID": 18, - "HostName": "derp18c.tailscale.com", - "IPv4": "176.58.90.207", - "IPv6": "2a00:dd80:3e::c19", - "CanPort80": true - }, - { - "Name": "18d", - "RegionID": 18, - "HostName": "derp18d.tailscale.com", - "IPv4": "176.58.90.104", - "IPv6": "2a00:dd80:3e::f2e", - "CanPort80": true - }, - { - "Name": "18b", - "RegionID": 18, - "HostName": "derp18b.tailscale.com", - "IPv4": "176.58.90.147", - "IPv6": "2a00:dd80:3e::363", - "CanPort80": true - } - ] - }, - "19": { - "RegionID": 19, - "RegionCode": "mad", - "RegionName": "Madrid", - "Latitude": 40.416944, - "Longitude": -3.703333, - "Nodes": [ - { - "Name": "19c", - "RegionID": 19, - "HostName": "derp19c.tailscale.com", - "IPv4": "45.159.97.61", - "IPv6": "2a00:dd80:14:10::20", - "CanPort80": true - }, - { - "Name": "19d", - "RegionID": 19, - "HostName": "derp19d.tailscale.com", - "IPv4": "45.159.97.233", - "IPv6": "2a00:dd80:14:10::34a", - "CanPort80": true - }, - { - "Name": "19b", - "RegionID": 19, - "HostName": "derp19b.tailscale.com", - "IPv4": "45.159.97.144", - "IPv6": "2a00:dd80:14:10::335", - "CanPort80": true - } - ] - }, - "2": { - "RegionID": 2, - "RegionCode": "sfo", - "RegionName": "San Francisco", - "Latitude": 37.7775, - "Longitude": -122.416389, - "Nodes": [ - { - "Name": "2e", - "RegionID": 2, - "HostName": "derp2e.tailscale.com", - "IPv4": "192.73.252.134", - "IPv6": "2607:f740:0:3f::44c", - "CanPort80": true - }, - { - "Name": "2f", - "RegionID": 2, - "HostName": "derp2f.tailscale.com", - "IPv4": "208.111.34.178", - "IPv6": "2607:f740:0:3f::f4", - "CanPort80": true - }, - { - "Name": "2d", - "RegionID": 2, - "HostName": "derp2d.tailscale.com", - "IPv4": "192.73.252.65", - "IPv6": "2607:f740:0:3f::287", - "CanPort80": true - } - ] - }, - "20": { - "RegionID": 20, - "RegionCode": "hkg", - "RegionName": "Hong Kong", - "Latitude": 22.3193, - "Longitude": 114.1694, - "Nodes": [ - { - "Name": "20c", - "RegionID": 20, - "HostName": "derp20c.tailscale.com", - "IPv4": "205.147.105.30", - "IPv6": "2403:2500:8000:1::5fb", - "CanPort80": true - }, - { - "Name": "20d", - "RegionID": 20, - "HostName": "derp20d.tailscale.com", - "IPv4": "205.147.105.78", - "IPv6": "2403:2500:8000:1::e9a", - "CanPort80": true - }, - { - "Name": "20b", - "RegionID": 20, - "HostName": "derp20b.tailscale.com", - "IPv4": "103.6.84.152", - "IPv6": "2403:2500:8000:1::ef6", - "CanPort80": true - } - ] - }, - "21": { - "RegionID": 21, - "RegionCode": "tor", - "RegionName": "Toronto", - "Latitude": 43.741667, - "Longitude": -79.373333, - "Nodes": [ - { - "Name": "21c", - "RegionID": 21, - "HostName": "derp21c.tailscale.com", - "IPv4": "162.248.221.215", - "IPv6": "2607:f740:50::f10", - "CanPort80": true - }, - { - "Name": "21d", - "RegionID": 21, - "HostName": "derp21d.tailscale.com", - "IPv4": "162.248.221.248", - "IPv6": "2607:f740:50::ca4", - "CanPort80": true - }, - { - "Name": "21b", - "RegionID": 21, - "HostName": "derp21b.tailscale.com", - "IPv4": "162.248.221.199", - "IPv6": "2607:f740:50::1d1", - "CanPort80": true - } - ] - }, - "22": { - "RegionID": 22, - "RegionCode": "waw", - "RegionName": "Warsaw", - "Latitude": 52.23, - "Longitude": 21.011111, - "Nodes": [ - { - "Name": "22c", - "RegionID": 22, - "HostName": "derp22c.tailscale.com", - "IPv4": "45.159.98.253", - "IPv6": "2a00:dd80:40:100::3f", - "CanPort80": true - }, - { - "Name": "22d", - "RegionID": 22, - "HostName": "derp22d.tailscale.com", - "IPv4": "45.159.98.145", - "IPv6": "2a00:dd80:40:100::211", - "CanPort80": true - }, - { - "Name": "22b", - "RegionID": 22, - "HostName": "derp22b.tailscale.com", - "IPv4": "45.159.98.196", - "IPv6": "2a00:dd80:40:100::316", - "CanPort80": true - } - ] - }, - "23": { - "RegionID": 23, - "RegionCode": "dbi", - "RegionName": "Dubai", - "Latitude": 25.263056, - "Longitude": 55.297222, - "Nodes": [ - { - "Name": "23c", - "RegionID": 23, - "HostName": "derp23c.tailscale.com", - "IPv4": "185.34.3.207", - "IPv6": "2a00:dd80:3f:100::a50", - "CanPort80": true - }, - { - "Name": "23d", - "RegionID": 23, - "HostName": "derp23d.tailscale.com", - "IPv4": "185.34.3.75", - "IPv6": "2a00:dd80:3f:100::97e", - "CanPort80": true - }, - { - "Name": "23b", - "RegionID": 23, - "HostName": "derp23b.tailscale.com", - "IPv4": "185.34.3.232", - "IPv6": "2a00:dd80:3f:100::76f", - "CanPort80": true - } - ] - }, - "24": { - "RegionID": 24, - "RegionCode": "hnl", - "RegionName": "Honolulu", - "Latitude": 21.306944, - "Longitude": -157.858333, - "Nodes": [ - { - "Name": "24c", - "RegionID": 24, - "HostName": "derp24c.tailscale.com", - "IPv4": "208.83.233.233", - "IPv6": "2001:19f0:c000:c591:5400:04ff:fe26:2c5f", - "CanPort80": true - }, - { - "Name": "24d", - "RegionID": 24, - "HostName": "derp24d.tailscale.com", - "IPv4": "208.72.155.133", - "IPv6": "2001:19f0:c000:c564:5400:04ff:fe26:2ba8", - "CanPort80": true - }, - { - "Name": "24b", - "RegionID": 24, - "HostName": "derp24b.tailscale.com", - "IPv4": "208.83.234.151", - "IPv6": "2001:19f0:c000:c586:5400:04ff:fe26:2ba6", - "CanPort80": true - } - ] - }, - "25": { - "RegionID": 25, - "RegionCode": "nai", - "RegionName": "Nairobi", - "Latitude": -1.286389, - "Longitude": 36.817222, - "Nodes": [ - { - "Name": "25c", - "RegionID": 25, - "HostName": "derp25c.tailscale.com", - "IPv4": "102.67.167.37", - "IPv6": "2c0f:edb0:2000:1::2c7", - "CanPort80": true - }, - { - "Name": "25d", - "RegionID": 25, - "HostName": "derp25d.tailscale.com", - "IPv4": "102.67.167.188", - "IPv6": "2c0f:edb0:2000:1::188", - "CanPort80": true - }, - { - "Name": "25b", - "RegionID": 25, - "HostName": "derp25b.tailscale.com", - "IPv4": "102.67.167.245", - "IPv6": "2c0f:edb0:2000:1::2e9", - "CanPort80": true - } - ] - }, - "26": { - "RegionID": 26, - "RegionCode": "nue", - "RegionName": "Nuremberg", - "Latitude": 49.453889, - "Longitude": 11.0775, - "Nodes": [ - { - "Name": "26c", - "RegionID": 26, - "HostName": "derp26c.tailscale.com", - "IPv4": "49.12.193.137", - "IPv6": "2a01:4f8:1c1c:5c70::1", - "CanPort80": true - }, - { - "Name": "26d", - "RegionID": 26, - "HostName": "derp26d.tailscale.com", - "IPv4": "49.13.204.141", - "IPv6": "2a01:4f8:1c0c:7d06::1", - "CanPort80": true - }, - { - "Name": "26b", - "RegionID": 26, - "HostName": "derp26b.tailscale.com", - "IPv4": "167.235.72.200", - "IPv6": "2a01:4f8:1c1c:47b6::1", - "CanPort80": true - } - ] - }, - "27": { - "RegionID": 27, - "RegionCode": "iad", - "RegionName": "Ashburn", - "Latitude": 39.03, - "Longitude": -77.471111, - "Nodes": [ - { - "Name": "27d", - "RegionID": 27, - "HostName": "derp27d.tailscale.com", - "IPv4": "178.156.152.106", - "IPv6": "2a01:4ff:f0:3c8e::1", - "CanPort80": true - }, - { - "Name": "27c", - "RegionID": 27, - "HostName": "derp27c.tailscale.com", - "IPv4": "178.156.152.91", - "IPv6": "2a01:4ff:f0:3913::1", - "CanPort80": true - }, - { - "Name": "27e", - "RegionID": 27, - "HostName": "derp27e.tailscale.com", - "IPv4": "178.156.134.232", - "IPv6": "2a01:4ff:f0:28d4::1", - "CanPort80": true - }, - { - "Name": "27b", - "RegionID": 27, - "HostName": "derp27b.tailscale.com", - "IPv4": "5.161.218.233", - "IPv6": "2a01:4ff:f0:3db9::1", - "CanPort80": true - } - ] - }, - "28": { - "RegionID": 28, - "RegionCode": "hel", - "RegionName": "Helsinki", - "Latitude": 60.170833, - "Longitude": 24.9375, - "Nodes": [ - { - "Name": "28c", - "RegionID": 28, - "HostName": "derp28c.tailscale.com", - "IPv4": "95.217.2.165", - "IPv6": "2a01:4f9:c012:cd74::1", - "CanPort80": true - }, - { - "Name": "28d", - "RegionID": 28, - "HostName": "derp28d.tailscale.com", - "IPv4": "157.180.28.32", - "IPv6": "2a01:4f9:c012:2e5b::1", - "CanPort80": true - }, - { - "Name": "28b", - "RegionID": 28, - "HostName": "derp28b.tailscale.com", - "IPv4": "65.109.143.62", - "IPv6": "2a01:4f9:c012:d55c::1", - "CanPort80": true - } - ] - }, - "3": { - "RegionID": 3, - "RegionCode": "sin", - "RegionName": "Singapore", - "Latitude": 1.3521, - "Longitude": 103.8198, - "Nodes": [ - { - "Name": "3g", - "RegionID": 3, - "HostName": "derp3g.tailscale.com", - "IPv4": "172.237.72.79", - "IPv6": "2600:3c15::2000:adff:fe08:6fab", - "CanPort80": true - }, - { - "Name": "3f", - "RegionID": 3, - "HostName": "derp3f.tailscale.com", - "IPv4": "172.237.72.8", - "IPv6": "2600:3c15::2000:53ff:fe48:a668", - "CanPort80": true - }, - { - "Name": "3h", - "RegionID": 3, - "HostName": "derp3h.tailscale.com", - "IPv4": "172.237.66.30", - "IPv6": "2600:3c15::2000:3dff:fe44:50aa", - "CanPort80": true - }, - { - "Name": "3e", - "RegionID": 3, - "HostName": "derp3e.tailscale.com", - "IPv4": "172.237.72.43", - "IPv6": "2600:3c15::2000:6cff:fee4:d799", - "CanPort80": true - } - ] - }, - "4": { - "RegionID": 4, - "RegionCode": "fra", - "RegionName": "Frankfurt", - "Latitude": 50.1109, - "Longitude": 8.6821, - "Nodes": [ - { - "Name": "4h", - "RegionID": 4, - "HostName": "derp4h.tailscale.com", - "IPv4": "185.40.234.77", - "IPv6": "2a00:dd80:20::bcf", - "CanPort80": true - }, - { - "Name": "4g", - "RegionID": 4, - "HostName": "derp4g.tailscale.com", - "IPv4": "185.40.234.113", - "IPv6": "2a00:dd80:20::8f", - "CanPort80": true - }, - { - "Name": "4i", - "RegionID": 4, - "HostName": "derp4i.tailscale.com", - "IPv4": "185.40.234.53", - "IPv6": "2a00:dd80:20::8a6", - "CanPort80": true - }, - { - "Name": "4f", - "RegionID": 4, - "HostName": "derp4f.tailscale.com", - "IPv4": "185.40.234.219", - "IPv6": "2a00:dd80:20::a25", - "CanPort80": true - } - ] - }, - "5": { - "RegionID": 5, - "RegionCode": "syd", - "RegionName": "Sydney", - "Latitude": -33.867778, - "Longitude": 151.21, - "Nodes": [ - { - "Name": "5f", - "RegionID": 5, - "HostName": "derp5f.tailscale.com", - "IPv4": "172.105.166.103", - "IPv6": "2400:8907::2000:ccff:fe1f:80da", - "CanPort80": true - }, - { - "Name": "5g", - "RegionID": 5, - "HostName": "derp5g.tailscale.com", - "IPv4": "172.105.169.57", - "IPv6": "2400:8907::2000:2fff:fea7:57f4", - "CanPort80": true - }, - { - "Name": "5e", - "RegionID": 5, - "HostName": "derp5e.tailscale.com", - "IPv4": "172.105.179.230", - "IPv6": "2400:8907::2000:ceff:fe8d:4f4e", - "CanPort80": true - } - ] - }, - "6": { - "RegionID": 6, - "RegionCode": "blr", - "RegionName": "Bengaluru", - "Latitude": 12.9716, - "Longitude": 77.5946, - "Nodes": [ - { - "Name": "6a", - "RegionID": 6, - "HostName": "derp6.tailscale.com", - "IPv4": "68.183.90.120", - "IPv6": "2400:6180:100:d0::982:d001", - "CanPort80": true - } - ] - }, - "7": { - "RegionID": 7, - "RegionCode": "tok", - "RegionName": "Tokyo", - "Latitude": 35.6764, - "Longitude": 139.65, - "Nodes": [ - { - "Name": "7g", - "RegionID": 7, - "HostName": "derp7g.tailscale.com", - "IPv4": "172.238.6.179", - "IPv6": "2600:3c18::2000:3fff:fe80:3ebd", - "CanPort80": true - }, - { - "Name": "7f", - "RegionID": 7, - "HostName": "derp7f.tailscale.com", - "IPv4": "172.238.6.34", - "IPv6": "2600:3c18::2000:acff:fe8e:3ed5", - "CanPort80": true - }, - { - "Name": "7h", - "RegionID": 7, - "HostName": "derp7h.tailscale.com", - "IPv4": "172.237.28.183", - "IPv6": "2600:3c18::2000:b1ff:fea9:4560", - "CanPort80": true - }, - { - "Name": "7e", - "RegionID": 7, - "HostName": "derp7e.tailscale.com", - "IPv4": "172.238.6.180", - "IPv6": "2600:3c18::2000:60ff:fe0f:6e83", - "STUNOnly": true, - "CanPort80": true - } - ] - }, - "8": { - "RegionID": 8, - "RegionCode": "lhr", - "RegionName": "London", - "Latitude": 51.5072, - "Longitude": 0.1276, - "Nodes": [ - { - "Name": "8f", - "RegionID": 8, - "HostName": "derp8f.tailscale.com", - "IPv4": "176.58.88.183", - "IPv6": "2a00:dd80:3a::dfa", - "CanPort80": true - }, - { - "Name": "8g", - "RegionID": 8, - "HostName": "derp8g.tailscale.com", - "IPv4": "176.58.92.254", - "IPv6": "2a00:dd80:3a::ed", - "CanPort80": true - }, - { - "Name": "8e", - "RegionID": 8, - "HostName": "derp8e.tailscale.com", - "IPv4": "176.58.92.144", - "IPv6": "2a00:dd80:3a::b33", - "CanPort80": true - } - ] - }, - "9": { - "RegionID": 9, - "RegionCode": "dfw", - "RegionName": "Dallas", - "Latitude": 32.779167, - "Longitude": -96.808889, - "Nodes": [ - { - "Name": "9e", - "RegionID": 9, - "HostName": "derp9e.tailscale.com", - "IPv4": "192.73.248.83", - "IPv6": "2607:f740:100::359", - "CanPort80": true - }, - { - "Name": "9f", - "RegionID": 9, - "HostName": "derp9f.tailscale.com", - "IPv4": "209.177.156.197", - "IPv6": "2607:f740:100::cad", - "CanPort80": true - }, - { - "Name": "9d", - "RegionID": 9, - "HostName": "derp9d.tailscale.com", - "IPv4": "209.177.156.94", - "IPv6": "2607:f740:100::c05", - "CanPort80": true - } - ] - } - } - }, - "DisplayMessages": null, - "TKAEnabled": false, - "TKAHead": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", - "Domain": "kratail2tid@passkey", - "DomainAuditLogID": "", - "UserProfiles": { - "6294409699640722": { - "ID": 6294409699640722, - "LoginName": "multi-exit-router.tail78f774.ts.net", - "DisplayName": "multi-exit-router" - } - } + "PacketFilterRules": null } }, "router-a": { - "commands": { - "packet_filter_rules": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/router-a/tailscaled.sock debug localapi POST debug-packet-filter-rules", - "packet_filter_matches": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/router-a/tailscaled.sock debug localapi POST debug-packet-filter-matches" - }, "packet_filter_rules": null, - "packet_filter_matches": [], - "whois": { - "100.124.195.93": { - "peer_name": "exit-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/router-a/tailscaled.sock whois --json 100.124.195.93", - "response": null - }, - "100.116.18.24": { - "peer_name": "exit-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/router-a/tailscaled.sock whois --json 100.116.18.24", - "response": null - }, - "100.85.66.106": { - "peer_name": "exit-node", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/router-a/tailscaled.sock whois --json 100.85.66.106", - "response": null - }, - "100.107.162.14": { - "peer_name": "group-a-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/router-a/tailscaled.sock whois --json 100.107.162.14", - "response": null - }, - "100.77.135.18": { - "peer_name": "group-b-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/router-a/tailscaled.sock whois --json 100.77.135.18", - "response": null - }, - "100.105.127.107": { - "peer_name": "multi-exit-router", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/router-a/tailscaled.sock whois --json 100.105.127.107", - "response": null - }, - "100.65.172.123": { - "peer_name": "router-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/router-a/tailscaled.sock whois --json 100.65.172.123", - "response": null - }, - "100.92.142.61": { - "peer_name": "subnet-router", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/router-a/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/router-a/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/router-a/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/router-a/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/router-a/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/router-a/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/router-a/tailscaled.sock whois --json 100.90.199.68", - "response": null - } - }, "netmap": { - "SelfNode": { - "ID": 50590507314324, - "StableID": "n3kktkvuP111CNTRL", - "Name": "router-a.tail78f774.ts.net.", - "User": 50590507314324, - "Key": "nodekey:b4566fef38b3b2b15684fc8890f5fbaea4525b467825f57a02801969a5ed2b7b", - "DiscoKey": "discokey:368ba711a8394633b4626eb7cd8e6a2df90d8e554505dc032ea9658ceee0f731", - "Addresses": ["100.109.43.124/32", "fd7a:115c:a1e0::a537:2b7c/128"], - "AllowedIPs": ["100.109.43.124/32", "fd7a:115c:a1e0::a537:2b7c/128", "10.44.0.0/16"], - "Endpoints": ["77.164.248.136:34130", "10.65.0.27:34130", "172.17.0.1:34130"], - "Hostinfo": { - "Hostname": "router-a", - "RoutableIPs": ["10.44.0.0/16"], - "RequestTags": ["tag:router-a"], - "Services": [ - { "Proto": "peerapi4", "Port": 49439 }, - { "Proto": "peerapi6", "Port": 49439 }, - { "Proto": "peerapi-dns-proxy", "Port": 1 } - ] - }, - "Created": "2026-03-28T10:38:11.734910312Z", - "Tags": ["tag:router-a"], - "PrimaryRoutes": ["10.44.0.0/16"], - "MachineAuthorized": true, - "CapMap": { - "https://tailscale.com/cap/file-sharing": null, - "https://tailscale.com/cap/is-owner": null, - "https://tailscale.com/cap/ssh": null, - "https://tailscale.com/cap/tailnet-lock": null, - "probe-udp-lifetime": null, - "ssh-behavior-v1": null, - "ssh-env-vars": null, - "store-appc-routes": null, - "tailnet-display-name": ["kratail2tid@passkey"] - }, - "ComputedName": "router-a", - "ComputedNameWithHost": "router-a" - }, - "AllCaps": [ - "https://tailscale.com/cap/ssh", - "probe-udp-lifetime", - "ssh-env-vars", - "store-appc-routes", - "ssh-behavior-v1", - "https://tailscale.com/cap/tailnet-lock", - "tailnet-display-name", - "https://tailscale.com/cap/file-sharing", - "https://tailscale.com/cap/is-owner" - ], - "NodeKey": "nodekey:b4566fef38b3b2b15684fc8890f5fbaea4525b467825f57a02801969a5ed2b7b", - "MachineKey": "mkey:868ba8a45654990c1c153c5ce33ef50ddd8d769841335e42decda4462d1dcf4e", "Peers": [], - "DNS": { - "Routes": { - "tail78f774.ts.net.": null, - "ts.net.": [{ "Addr": "199.247.155.53" }, { "Addr": "2620:111:8007::53" }] - }, - "Domains": ["tail78f774.ts.net"], - "Proxied": true, - "ExitNodeFilteredSet": [".ts.net", ".tailscale.net"] - }, - "PacketFilter": [], - "PacketFilterRules": null, - "SSHPolicy": { "rules": [] }, - "CollectServices": false, - "DERPMap": { - "Regions": { - "1": { - "RegionID": 1, - "RegionCode": "nyc", - "RegionName": "New York City", - "Latitude": 40.7128, - "Longitude": -74.006, - "Nodes": [ - { - "Name": "1h", - "RegionID": 1, - "HostName": "derp1h.tailscale.com", - "IPv4": "199.38.181.93", - "IPv6": "2607:f740:f::afd", - "CanPort80": true - }, - { - "Name": "1g", - "RegionID": 1, - "HostName": "derp1g.tailscale.com", - "IPv4": "209.177.145.120", - "IPv6": "2607:f740:f::3eb", - "CanPort80": true - }, - { - "Name": "1i", - "RegionID": 1, - "HostName": "derp1i.tailscale.com", - "IPv4": "199.38.181.103", - "IPv6": "2607:f740:f::e19", - "CanPort80": true - }, - { - "Name": "1f", - "RegionID": 1, - "HostName": "derp1f.tailscale.com", - "IPv4": "199.38.181.104", - "IPv6": "2607:f740:f::bc", - "CanPort80": true - } - ] - }, - "10": { - "RegionID": 10, - "RegionCode": "sea", - "RegionName": "Seattle", - "Latitude": 47.609722, - "Longitude": -122.333056, - "Nodes": [ - { - "Name": "10c", - "RegionID": 10, - "HostName": "derp10c.tailscale.com", - "IPv4": "192.73.240.121", - "IPv6": "2607:f740:14::40c", - "CanPort80": true - }, - { - "Name": "10d", - "RegionID": 10, - "HostName": "derp10d.tailscale.com", - "IPv4": "192.73.240.132", - "IPv6": "2607:f740:14::500", - "CanPort80": true - }, - { - "Name": "10b", - "RegionID": 10, - "HostName": "derp10b.tailscale.com", - "IPv4": "192.73.240.161", - "IPv6": "2607:f740:14::61c", - "CanPort80": true - } - ] - }, - "11": { - "RegionID": 11, - "RegionCode": "sao", - "RegionName": "São Paulo", - "Latitude": -23.55, - "Longitude": -46.633333, - "Nodes": [ - { - "Name": "11f", - "RegionID": 11, - "HostName": "derp11f.tailscale.com", - "IPv4": "172.237.61.197", - "IPv6": "2600:3c0d::2000:3bff:fe44:6166", - "CanPort80": true - }, - { - "Name": "11g", - "RegionID": 11, - "HostName": "derp11g.tailscale.com", - "IPv4": "172.237.61.190", - "IPv6": "2600:3c0d::2000:62ff:febe:2e67", - "CanPort80": true - }, - { - "Name": "11e", - "RegionID": 11, - "HostName": "derp11e.tailscale.com", - "IPv4": "172.237.61.194", - "IPv6": "2600:3c0d::2000:d2ff:fe43:1790", - "CanPort80": true - } - ] - }, - "12": { - "RegionID": 12, - "RegionCode": "ord", - "RegionName": "Chicago", - "Latitude": 41.881944, - "Longitude": -87.627778, - "Nodes": [ - { - "Name": "12e", - "RegionID": 12, - "HostName": "derp12e.tailscale.com", - "IPv4": "209.177.158.15", - "IPv6": "2607:f740:e::b17", - "CanPort80": true - }, - { - "Name": "12f", - "RegionID": 12, - "HostName": "derp12f.tailscale.com", - "IPv4": "199.38.182.118", - "IPv6": "2607:f740:e::4c8", - "CanPort80": true - }, - { - "Name": "12d", - "RegionID": 12, - "HostName": "derp12d.tailscale.com", - "IPv4": "209.177.158.246", - "IPv6": "2607:f740:e::811", - "CanPort80": true - } - ] - }, - "13": { - "RegionID": 13, - "RegionCode": "den", - "RegionName": "Denver", - "Latitude": 39.7392, - "Longitude": -104.9849, - "Nodes": [ - { - "Name": "13c", - "RegionID": 13, - "HostName": "derp13c.tailscale.com", - "IPv4": "192.73.242.28", - "IPv6": "2607:f740:16::5c", - "CanPort80": true - }, - { - "Name": "13d", - "RegionID": 13, - "HostName": "derp13d.tailscale.com", - "IPv4": "192.73.242.204", - "IPv6": "2607:f740:16::c23", - "CanPort80": true - }, - { - "Name": "13b", - "RegionID": 13, - "HostName": "derp13b.tailscale.com", - "IPv4": "192.73.242.187", - "IPv6": "2607:f740:16::640", - "CanPort80": true - } - ] - }, - "14": { - "RegionID": 14, - "RegionCode": "ams", - "RegionName": "Amsterdam", - "Latitude": 52.372778, - "Longitude": 4.893611, - "Nodes": [ - { - "Name": "14c", - "RegionID": 14, - "HostName": "derp14c.tailscale.com", - "IPv4": "176.58.93.147", - "IPv6": "2a00:dd80:3c::b09", - "CanPort80": true - }, - { - "Name": "14d", - "RegionID": 14, - "HostName": "derp14d.tailscale.com", - "IPv4": "176.58.93.154", - "IPv6": "2a00:dd80:3c::3d5", - "CanPort80": true - }, - { - "Name": "14b", - "RegionID": 14, - "HostName": "derp14b.tailscale.com", - "IPv4": "176.58.93.248", - "IPv6": "2a00:dd80:3c::807", - "CanPort80": true - } - ] - }, - "15": { - "RegionID": 15, - "RegionCode": "jnb", - "RegionName": "Johannesburg", - "Latitude": -26.204444, - "Longitude": 28.045556, - "Nodes": [ - { - "Name": "15c", - "RegionID": 15, - "HostName": "derp15c.tailscale.com", - "IPv4": "102.67.165.185", - "IPv6": "2c0f:edb0:0:10::b59", - "CanPort80": true - }, - { - "Name": "15d", - "RegionID": 15, - "HostName": "derp15d.tailscale.com", - "IPv4": "102.67.165.36", - "IPv6": "2c0f:edb0:0:10::599", - "CanPort80": true - }, - { - "Name": "15b", - "RegionID": 15, - "HostName": "derp15b.tailscale.com", - "IPv4": "102.67.165.90", - "IPv6": "2c0f:edb0:0:10::963", - "CanPort80": true - } - ] - }, - "16": { - "RegionID": 16, - "RegionCode": "mia", - "RegionName": "Miami", - "Latitude": 25.78, - "Longitude": -80.21, - "Nodes": [ - { - "Name": "16c", - "RegionID": 16, - "HostName": "derp16c.tailscale.com", - "IPv4": "192.73.243.229", - "IPv6": "2607:f740:17::4e4", - "CanPort80": true - }, - { - "Name": "16d", - "RegionID": 16, - "HostName": "derp16d.tailscale.com", - "IPv4": "192.73.243.141", - "IPv6": "2607:f740:17::475", - "CanPort80": true - }, - { - "Name": "16b", - "RegionID": 16, - "HostName": "derp16b.tailscale.com", - "IPv4": "192.73.243.135", - "IPv6": "2607:f740:17::476", - "CanPort80": true - } - ] - }, - "17": { - "RegionID": 17, - "RegionCode": "lax", - "RegionName": "Los Angeles", - "Latitude": 34.05, - "Longitude": -118.25, - "Nodes": [ - { - "Name": "17c", - "RegionID": 17, - "HostName": "derp17c.tailscale.com", - "IPv4": "208.111.40.12", - "IPv6": "2607:f740:c::10", - "CanPort80": true - }, - { - "Name": "17d", - "RegionID": 17, - "HostName": "derp17d.tailscale.com", - "IPv4": "208.111.40.216", - "IPv6": "2607:f740:c::e1b", - "CanPort80": true - }, - { - "Name": "17b", - "RegionID": 17, - "HostName": "derp17b.tailscale.com", - "IPv4": "192.73.244.245", - "IPv6": "2607:f740:c::646", - "CanPort80": true - } - ] - }, - "18": { - "RegionID": 18, - "RegionCode": "par", - "RegionName": "Paris", - "Latitude": 48.856667, - "Longitude": 2.352222, - "Nodes": [ - { - "Name": "18c", - "RegionID": 18, - "HostName": "derp18c.tailscale.com", - "IPv4": "176.58.90.207", - "IPv6": "2a00:dd80:3e::c19", - "CanPort80": true - }, - { - "Name": "18d", - "RegionID": 18, - "HostName": "derp18d.tailscale.com", - "IPv4": "176.58.90.104", - "IPv6": "2a00:dd80:3e::f2e", - "CanPort80": true - }, - { - "Name": "18b", - "RegionID": 18, - "HostName": "derp18b.tailscale.com", - "IPv4": "176.58.90.147", - "IPv6": "2a00:dd80:3e::363", - "CanPort80": true - } - ] - }, - "19": { - "RegionID": 19, - "RegionCode": "mad", - "RegionName": "Madrid", - "Latitude": 40.416944, - "Longitude": -3.703333, - "Nodes": [ - { - "Name": "19c", - "RegionID": 19, - "HostName": "derp19c.tailscale.com", - "IPv4": "45.159.97.61", - "IPv6": "2a00:dd80:14:10::20", - "CanPort80": true - }, - { - "Name": "19d", - "RegionID": 19, - "HostName": "derp19d.tailscale.com", - "IPv4": "45.159.97.233", - "IPv6": "2a00:dd80:14:10::34a", - "CanPort80": true - }, - { - "Name": "19b", - "RegionID": 19, - "HostName": "derp19b.tailscale.com", - "IPv4": "45.159.97.144", - "IPv6": "2a00:dd80:14:10::335", - "CanPort80": true - } - ] - }, - "2": { - "RegionID": 2, - "RegionCode": "sfo", - "RegionName": "San Francisco", - "Latitude": 37.7775, - "Longitude": -122.416389, - "Nodes": [ - { - "Name": "2e", - "RegionID": 2, - "HostName": "derp2e.tailscale.com", - "IPv4": "192.73.252.134", - "IPv6": "2607:f740:0:3f::44c", - "CanPort80": true - }, - { - "Name": "2f", - "RegionID": 2, - "HostName": "derp2f.tailscale.com", - "IPv4": "208.111.34.178", - "IPv6": "2607:f740:0:3f::f4", - "CanPort80": true - }, - { - "Name": "2d", - "RegionID": 2, - "HostName": "derp2d.tailscale.com", - "IPv4": "192.73.252.65", - "IPv6": "2607:f740:0:3f::287", - "CanPort80": true - } - ] - }, - "20": { - "RegionID": 20, - "RegionCode": "hkg", - "RegionName": "Hong Kong", - "Latitude": 22.3193, - "Longitude": 114.1694, - "Nodes": [ - { - "Name": "20c", - "RegionID": 20, - "HostName": "derp20c.tailscale.com", - "IPv4": "205.147.105.30", - "IPv6": "2403:2500:8000:1::5fb", - "CanPort80": true - }, - { - "Name": "20d", - "RegionID": 20, - "HostName": "derp20d.tailscale.com", - "IPv4": "205.147.105.78", - "IPv6": "2403:2500:8000:1::e9a", - "CanPort80": true - }, - { - "Name": "20b", - "RegionID": 20, - "HostName": "derp20b.tailscale.com", - "IPv4": "103.6.84.152", - "IPv6": "2403:2500:8000:1::ef6", - "CanPort80": true - } - ] - }, - "21": { - "RegionID": 21, - "RegionCode": "tor", - "RegionName": "Toronto", - "Latitude": 43.741667, - "Longitude": -79.373333, - "Nodes": [ - { - "Name": "21c", - "RegionID": 21, - "HostName": "derp21c.tailscale.com", - "IPv4": "162.248.221.215", - "IPv6": "2607:f740:50::f10", - "CanPort80": true - }, - { - "Name": "21d", - "RegionID": 21, - "HostName": "derp21d.tailscale.com", - "IPv4": "162.248.221.248", - "IPv6": "2607:f740:50::ca4", - "CanPort80": true - }, - { - "Name": "21b", - "RegionID": 21, - "HostName": "derp21b.tailscale.com", - "IPv4": "162.248.221.199", - "IPv6": "2607:f740:50::1d1", - "CanPort80": true - } - ] - }, - "22": { - "RegionID": 22, - "RegionCode": "waw", - "RegionName": "Warsaw", - "Latitude": 52.23, - "Longitude": 21.011111, - "Nodes": [ - { - "Name": "22c", - "RegionID": 22, - "HostName": "derp22c.tailscale.com", - "IPv4": "45.159.98.253", - "IPv6": "2a00:dd80:40:100::3f", - "CanPort80": true - }, - { - "Name": "22d", - "RegionID": 22, - "HostName": "derp22d.tailscale.com", - "IPv4": "45.159.98.145", - "IPv6": "2a00:dd80:40:100::211", - "CanPort80": true - }, - { - "Name": "22b", - "RegionID": 22, - "HostName": "derp22b.tailscale.com", - "IPv4": "45.159.98.196", - "IPv6": "2a00:dd80:40:100::316", - "CanPort80": true - } - ] - }, - "23": { - "RegionID": 23, - "RegionCode": "dbi", - "RegionName": "Dubai", - "Latitude": 25.263056, - "Longitude": 55.297222, - "Nodes": [ - { - "Name": "23c", - "RegionID": 23, - "HostName": "derp23c.tailscale.com", - "IPv4": "185.34.3.207", - "IPv6": "2a00:dd80:3f:100::a50", - "CanPort80": true - }, - { - "Name": "23d", - "RegionID": 23, - "HostName": "derp23d.tailscale.com", - "IPv4": "185.34.3.75", - "IPv6": "2a00:dd80:3f:100::97e", - "CanPort80": true - }, - { - "Name": "23b", - "RegionID": 23, - "HostName": "derp23b.tailscale.com", - "IPv4": "185.34.3.232", - "IPv6": "2a00:dd80:3f:100::76f", - "CanPort80": true - } - ] - }, - "24": { - "RegionID": 24, - "RegionCode": "hnl", - "RegionName": "Honolulu", - "Latitude": 21.306944, - "Longitude": -157.858333, - "Nodes": [ - { - "Name": "24c", - "RegionID": 24, - "HostName": "derp24c.tailscale.com", - "IPv4": "208.83.233.233", - "IPv6": "2001:19f0:c000:c591:5400:04ff:fe26:2c5f", - "CanPort80": true - }, - { - "Name": "24d", - "RegionID": 24, - "HostName": "derp24d.tailscale.com", - "IPv4": "208.72.155.133", - "IPv6": "2001:19f0:c000:c564:5400:04ff:fe26:2ba8", - "CanPort80": true - }, - { - "Name": "24b", - "RegionID": 24, - "HostName": "derp24b.tailscale.com", - "IPv4": "208.83.234.151", - "IPv6": "2001:19f0:c000:c586:5400:04ff:fe26:2ba6", - "CanPort80": true - } - ] - }, - "25": { - "RegionID": 25, - "RegionCode": "nai", - "RegionName": "Nairobi", - "Latitude": -1.286389, - "Longitude": 36.817222, - "Nodes": [ - { - "Name": "25c", - "RegionID": 25, - "HostName": "derp25c.tailscale.com", - "IPv4": "102.67.167.37", - "IPv6": "2c0f:edb0:2000:1::2c7", - "CanPort80": true - }, - { - "Name": "25d", - "RegionID": 25, - "HostName": "derp25d.tailscale.com", - "IPv4": "102.67.167.188", - "IPv6": "2c0f:edb0:2000:1::188", - "CanPort80": true - }, - { - "Name": "25b", - "RegionID": 25, - "HostName": "derp25b.tailscale.com", - "IPv4": "102.67.167.245", - "IPv6": "2c0f:edb0:2000:1::2e9", - "CanPort80": true - } - ] - }, - "26": { - "RegionID": 26, - "RegionCode": "nue", - "RegionName": "Nuremberg", - "Latitude": 49.453889, - "Longitude": 11.0775, - "Nodes": [ - { - "Name": "26c", - "RegionID": 26, - "HostName": "derp26c.tailscale.com", - "IPv4": "49.12.193.137", - "IPv6": "2a01:4f8:1c1c:5c70::1", - "CanPort80": true - }, - { - "Name": "26d", - "RegionID": 26, - "HostName": "derp26d.tailscale.com", - "IPv4": "49.13.204.141", - "IPv6": "2a01:4f8:1c0c:7d06::1", - "CanPort80": true - }, - { - "Name": "26b", - "RegionID": 26, - "HostName": "derp26b.tailscale.com", - "IPv4": "167.235.72.200", - "IPv6": "2a01:4f8:1c1c:47b6::1", - "CanPort80": true - } - ] - }, - "27": { - "RegionID": 27, - "RegionCode": "iad", - "RegionName": "Ashburn", - "Latitude": 39.03, - "Longitude": -77.471111, - "Nodes": [ - { - "Name": "27d", - "RegionID": 27, - "HostName": "derp27d.tailscale.com", - "IPv4": "178.156.152.106", - "IPv6": "2a01:4ff:f0:3c8e::1", - "CanPort80": true - }, - { - "Name": "27c", - "RegionID": 27, - "HostName": "derp27c.tailscale.com", - "IPv4": "178.156.152.91", - "IPv6": "2a01:4ff:f0:3913::1", - "CanPort80": true - }, - { - "Name": "27e", - "RegionID": 27, - "HostName": "derp27e.tailscale.com", - "IPv4": "178.156.134.232", - "IPv6": "2a01:4ff:f0:28d4::1", - "CanPort80": true - }, - { - "Name": "27b", - "RegionID": 27, - "HostName": "derp27b.tailscale.com", - "IPv4": "5.161.218.233", - "IPv6": "2a01:4ff:f0:3db9::1", - "CanPort80": true - } - ] - }, - "28": { - "RegionID": 28, - "RegionCode": "hel", - "RegionName": "Helsinki", - "Latitude": 60.170833, - "Longitude": 24.9375, - "Nodes": [ - { - "Name": "28c", - "RegionID": 28, - "HostName": "derp28c.tailscale.com", - "IPv4": "95.217.2.165", - "IPv6": "2a01:4f9:c012:cd74::1", - "CanPort80": true - }, - { - "Name": "28d", - "RegionID": 28, - "HostName": "derp28d.tailscale.com", - "IPv4": "157.180.28.32", - "IPv6": "2a01:4f9:c012:2e5b::1", - "CanPort80": true - }, - { - "Name": "28b", - "RegionID": 28, - "HostName": "derp28b.tailscale.com", - "IPv4": "65.109.143.62", - "IPv6": "2a01:4f9:c012:d55c::1", - "CanPort80": true - } - ] - }, - "3": { - "RegionID": 3, - "RegionCode": "sin", - "RegionName": "Singapore", - "Latitude": 1.3521, - "Longitude": 103.8198, - "Nodes": [ - { - "Name": "3g", - "RegionID": 3, - "HostName": "derp3g.tailscale.com", - "IPv4": "172.237.72.79", - "IPv6": "2600:3c15::2000:adff:fe08:6fab", - "CanPort80": true - }, - { - "Name": "3f", - "RegionID": 3, - "HostName": "derp3f.tailscale.com", - "IPv4": "172.237.72.8", - "IPv6": "2600:3c15::2000:53ff:fe48:a668", - "CanPort80": true - }, - { - "Name": "3h", - "RegionID": 3, - "HostName": "derp3h.tailscale.com", - "IPv4": "172.237.66.30", - "IPv6": "2600:3c15::2000:3dff:fe44:50aa", - "CanPort80": true - }, - { - "Name": "3e", - "RegionID": 3, - "HostName": "derp3e.tailscale.com", - "IPv4": "172.237.72.43", - "IPv6": "2600:3c15::2000:6cff:fee4:d799", - "CanPort80": true - } - ] - }, - "4": { - "RegionID": 4, - "RegionCode": "fra", - "RegionName": "Frankfurt", - "Latitude": 50.1109, - "Longitude": 8.6821, - "Nodes": [ - { - "Name": "4h", - "RegionID": 4, - "HostName": "derp4h.tailscale.com", - "IPv4": "185.40.234.77", - "IPv6": "2a00:dd80:20::bcf", - "CanPort80": true - }, - { - "Name": "4g", - "RegionID": 4, - "HostName": "derp4g.tailscale.com", - "IPv4": "185.40.234.113", - "IPv6": "2a00:dd80:20::8f", - "CanPort80": true - }, - { - "Name": "4i", - "RegionID": 4, - "HostName": "derp4i.tailscale.com", - "IPv4": "185.40.234.53", - "IPv6": "2a00:dd80:20::8a6", - "CanPort80": true - }, - { - "Name": "4f", - "RegionID": 4, - "HostName": "derp4f.tailscale.com", - "IPv4": "185.40.234.219", - "IPv6": "2a00:dd80:20::a25", - "CanPort80": true - } - ] - }, - "5": { - "RegionID": 5, - "RegionCode": "syd", - "RegionName": "Sydney", - "Latitude": -33.867778, - "Longitude": 151.21, - "Nodes": [ - { - "Name": "5f", - "RegionID": 5, - "HostName": "derp5f.tailscale.com", - "IPv4": "172.105.166.103", - "IPv6": "2400:8907::2000:ccff:fe1f:80da", - "CanPort80": true - }, - { - "Name": "5g", - "RegionID": 5, - "HostName": "derp5g.tailscale.com", - "IPv4": "172.105.169.57", - "IPv6": "2400:8907::2000:2fff:fea7:57f4", - "CanPort80": true - }, - { - "Name": "5e", - "RegionID": 5, - "HostName": "derp5e.tailscale.com", - "IPv4": "172.105.179.230", - "IPv6": "2400:8907::2000:ceff:fe8d:4f4e", - "CanPort80": true - } - ] - }, - "6": { - "RegionID": 6, - "RegionCode": "blr", - "RegionName": "Bengaluru", - "Latitude": 12.9716, - "Longitude": 77.5946, - "Nodes": [ - { - "Name": "6a", - "RegionID": 6, - "HostName": "derp6.tailscale.com", - "IPv4": "68.183.90.120", - "IPv6": "2400:6180:100:d0::982:d001", - "CanPort80": true - } - ] - }, - "7": { - "RegionID": 7, - "RegionCode": "tok", - "RegionName": "Tokyo", - "Latitude": 35.6764, - "Longitude": 139.65, - "Nodes": [ - { - "Name": "7g", - "RegionID": 7, - "HostName": "derp7g.tailscale.com", - "IPv4": "172.238.6.179", - "IPv6": "2600:3c18::2000:3fff:fe80:3ebd", - "CanPort80": true - }, - { - "Name": "7f", - "RegionID": 7, - "HostName": "derp7f.tailscale.com", - "IPv4": "172.238.6.34", - "IPv6": "2600:3c18::2000:acff:fe8e:3ed5", - "CanPort80": true - }, - { - "Name": "7h", - "RegionID": 7, - "HostName": "derp7h.tailscale.com", - "IPv4": "172.237.28.183", - "IPv6": "2600:3c18::2000:b1ff:fea9:4560", - "CanPort80": true - }, - { - "Name": "7e", - "RegionID": 7, - "HostName": "derp7e.tailscale.com", - "IPv4": "172.238.6.180", - "IPv6": "2600:3c18::2000:60ff:fe0f:6e83", - "STUNOnly": true, - "CanPort80": true - } - ] - }, - "8": { - "RegionID": 8, - "RegionCode": "lhr", - "RegionName": "London", - "Latitude": 51.5072, - "Longitude": 0.1276, - "Nodes": [ - { - "Name": "8f", - "RegionID": 8, - "HostName": "derp8f.tailscale.com", - "IPv4": "176.58.88.183", - "IPv6": "2a00:dd80:3a::dfa", - "CanPort80": true - }, - { - "Name": "8g", - "RegionID": 8, - "HostName": "derp8g.tailscale.com", - "IPv4": "176.58.92.254", - "IPv6": "2a00:dd80:3a::ed", - "CanPort80": true - }, - { - "Name": "8e", - "RegionID": 8, - "HostName": "derp8e.tailscale.com", - "IPv4": "176.58.92.144", - "IPv6": "2a00:dd80:3a::b33", - "CanPort80": true - } - ] - }, - "9": { - "RegionID": 9, - "RegionCode": "dfw", - "RegionName": "Dallas", - "Latitude": 32.779167, - "Longitude": -96.808889, - "Nodes": [ - { - "Name": "9e", - "RegionID": 9, - "HostName": "derp9e.tailscale.com", - "IPv4": "192.73.248.83", - "IPv6": "2607:f740:100::359", - "CanPort80": true - }, - { - "Name": "9f", - "RegionID": 9, - "HostName": "derp9f.tailscale.com", - "IPv4": "209.177.156.197", - "IPv6": "2607:f740:100::cad", - "CanPort80": true - }, - { - "Name": "9d", - "RegionID": 9, - "HostName": "derp9d.tailscale.com", - "IPv4": "209.177.156.94", - "IPv6": "2607:f740:100::c05", - "CanPort80": true - } - ] - } - } - }, - "DisplayMessages": null, - "TKAEnabled": false, - "TKAHead": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", - "Domain": "kratail2tid@passkey", - "DomainAuditLogID": "", - "UserProfiles": { - "50590507314324": { - "ID": 50590507314324, - "LoginName": "router-a.tail78f774.ts.net", - "DisplayName": "router-a" - } - } + "PacketFilterRules": null } }, "router-b": { - "commands": { - "packet_filter_rules": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/router-b/tailscaled.sock debug localapi POST debug-packet-filter-rules", - "packet_filter_matches": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/router-b/tailscaled.sock debug localapi POST debug-packet-filter-matches" - }, "packet_filter_rules": null, - "packet_filter_matches": [], - "whois": { - "100.124.195.93": { - "peer_name": "exit-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/router-b/tailscaled.sock whois --json 100.124.195.93", - "response": null - }, - "100.116.18.24": { - "peer_name": "exit-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/router-b/tailscaled.sock whois --json 100.116.18.24", - "response": null - }, - "100.85.66.106": { - "peer_name": "exit-node", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/router-b/tailscaled.sock whois --json 100.85.66.106", - "response": null - }, - "100.107.162.14": { - "peer_name": "group-a-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/router-b/tailscaled.sock whois --json 100.107.162.14", - "response": null - }, - "100.77.135.18": { - "peer_name": "group-b-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/router-b/tailscaled.sock whois --json 100.77.135.18", - "response": null - }, - "100.105.127.107": { - "peer_name": "multi-exit-router", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/router-b/tailscaled.sock whois --json 100.105.127.107", - "response": null - }, - "100.109.43.124": { - "peer_name": "router-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/router-b/tailscaled.sock whois --json 100.109.43.124", - "response": null - }, - "100.92.142.61": { - "peer_name": "subnet-router", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/router-b/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/router-b/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/router-b/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/router-b/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/router-b/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/router-b/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/router-b/tailscaled.sock whois --json 100.90.199.68", - "response": null - } - }, "netmap": { - "SelfNode": { - "ID": 1399889648409786, - "StableID": "nPHvXBj1wB11CNTRL", - "Name": "router-b.tail78f774.ts.net.", - "User": 1399889648409786, - "Key": "nodekey:4e6d3473c516cea37bcefdf4368932c623fd91c24aee1aacc27ca8165a41ac7a", - "DiscoKey": "discokey:dd5532635b8e3ddf25186e36671c16dd17c005c8b6a6862f4b5cc4e4f459e705", - "Addresses": ["100.65.172.123/32", "fd7a:115c:a1e0::5a37:ac7c/128"], - "AllowedIPs": ["100.65.172.123/32", "fd7a:115c:a1e0::5a37:ac7c/128", "10.55.0.0/16"], - "Endpoints": ["77.164.248.136:35931", "10.65.0.27:35931", "172.17.0.1:35931"], - "Hostinfo": { - "Hostname": "router-b", - "RoutableIPs": ["10.55.0.0/16"], - "RequestTags": ["tag:router-b"], - "Services": [ - { "Proto": "peerapi4", "Port": 58804 }, - { "Proto": "peerapi6", "Port": 58804 }, - { "Proto": "peerapi-dns-proxy", "Port": 1 } - ] - }, - "Created": "2026-03-28T10:38:15.42735258Z", - "Tags": ["tag:router-b"], - "PrimaryRoutes": ["10.55.0.0/16"], - "MachineAuthorized": true, - "CapMap": { - "https://tailscale.com/cap/file-sharing": null, - "https://tailscale.com/cap/is-owner": null, - "https://tailscale.com/cap/ssh": null, - "https://tailscale.com/cap/tailnet-lock": null, - "probe-udp-lifetime": null, - "ssh-behavior-v1": null, - "ssh-env-vars": null, - "store-appc-routes": null, - "tailnet-display-name": ["kratail2tid@passkey"] - }, - "ComputedName": "router-b", - "ComputedNameWithHost": "router-b" - }, - "AllCaps": [ - "https://tailscale.com/cap/tailnet-lock", - "tailnet-display-name", - "store-appc-routes", - "https://tailscale.com/cap/is-owner", - "https://tailscale.com/cap/ssh", - "https://tailscale.com/cap/file-sharing", - "ssh-env-vars", - "probe-udp-lifetime", - "ssh-behavior-v1" - ], - "NodeKey": "nodekey:4e6d3473c516cea37bcefdf4368932c623fd91c24aee1aacc27ca8165a41ac7a", - "MachineKey": "mkey:d040ca033391d3dedae7b2ad7ec3334646cda7aeca501780bdaa37addec3c228", "Peers": [], - "DNS": { - "Routes": { - "tail78f774.ts.net.": null, - "ts.net.": [{ "Addr": "199.247.155.53" }, { "Addr": "2620:111:8007::53" }] - }, - "Domains": ["tail78f774.ts.net"], - "Proxied": true, - "ExitNodeFilteredSet": [".ts.net", ".tailscale.net"] - }, - "PacketFilter": [], - "PacketFilterRules": null, - "SSHPolicy": { "rules": [] }, - "CollectServices": false, - "DERPMap": { - "Regions": { - "1": { - "RegionID": 1, - "RegionCode": "nyc", - "RegionName": "New York City", - "Latitude": 40.7128, - "Longitude": -74.006, - "Nodes": [ - { - "Name": "1h", - "RegionID": 1, - "HostName": "derp1h.tailscale.com", - "IPv4": "199.38.181.93", - "IPv6": "2607:f740:f::afd", - "CanPort80": true - }, - { - "Name": "1g", - "RegionID": 1, - "HostName": "derp1g.tailscale.com", - "IPv4": "209.177.145.120", - "IPv6": "2607:f740:f::3eb", - "CanPort80": true - }, - { - "Name": "1i", - "RegionID": 1, - "HostName": "derp1i.tailscale.com", - "IPv4": "199.38.181.103", - "IPv6": "2607:f740:f::e19", - "CanPort80": true - }, - { - "Name": "1f", - "RegionID": 1, - "HostName": "derp1f.tailscale.com", - "IPv4": "199.38.181.104", - "IPv6": "2607:f740:f::bc", - "CanPort80": true - } - ] - }, - "10": { - "RegionID": 10, - "RegionCode": "sea", - "RegionName": "Seattle", - "Latitude": 47.609722, - "Longitude": -122.333056, - "Nodes": [ - { - "Name": "10c", - "RegionID": 10, - "HostName": "derp10c.tailscale.com", - "IPv4": "192.73.240.121", - "IPv6": "2607:f740:14::40c", - "CanPort80": true - }, - { - "Name": "10d", - "RegionID": 10, - "HostName": "derp10d.tailscale.com", - "IPv4": "192.73.240.132", - "IPv6": "2607:f740:14::500", - "CanPort80": true - }, - { - "Name": "10b", - "RegionID": 10, - "HostName": "derp10b.tailscale.com", - "IPv4": "192.73.240.161", - "IPv6": "2607:f740:14::61c", - "CanPort80": true - } - ] - }, - "11": { - "RegionID": 11, - "RegionCode": "sao", - "RegionName": "São Paulo", - "Latitude": -23.55, - "Longitude": -46.633333, - "Nodes": [ - { - "Name": "11f", - "RegionID": 11, - "HostName": "derp11f.tailscale.com", - "IPv4": "172.237.61.197", - "IPv6": "2600:3c0d::2000:3bff:fe44:6166", - "CanPort80": true - }, - { - "Name": "11g", - "RegionID": 11, - "HostName": "derp11g.tailscale.com", - "IPv4": "172.237.61.190", - "IPv6": "2600:3c0d::2000:62ff:febe:2e67", - "CanPort80": true - }, - { - "Name": "11e", - "RegionID": 11, - "HostName": "derp11e.tailscale.com", - "IPv4": "172.237.61.194", - "IPv6": "2600:3c0d::2000:d2ff:fe43:1790", - "CanPort80": true - } - ] - }, - "12": { - "RegionID": 12, - "RegionCode": "ord", - "RegionName": "Chicago", - "Latitude": 41.881944, - "Longitude": -87.627778, - "Nodes": [ - { - "Name": "12e", - "RegionID": 12, - "HostName": "derp12e.tailscale.com", - "IPv4": "209.177.158.15", - "IPv6": "2607:f740:e::b17", - "CanPort80": true - }, - { - "Name": "12f", - "RegionID": 12, - "HostName": "derp12f.tailscale.com", - "IPv4": "199.38.182.118", - "IPv6": "2607:f740:e::4c8", - "CanPort80": true - }, - { - "Name": "12d", - "RegionID": 12, - "HostName": "derp12d.tailscale.com", - "IPv4": "209.177.158.246", - "IPv6": "2607:f740:e::811", - "CanPort80": true - } - ] - }, - "13": { - "RegionID": 13, - "RegionCode": "den", - "RegionName": "Denver", - "Latitude": 39.7392, - "Longitude": -104.9849, - "Nodes": [ - { - "Name": "13c", - "RegionID": 13, - "HostName": "derp13c.tailscale.com", - "IPv4": "192.73.242.28", - "IPv6": "2607:f740:16::5c", - "CanPort80": true - }, - { - "Name": "13d", - "RegionID": 13, - "HostName": "derp13d.tailscale.com", - "IPv4": "192.73.242.204", - "IPv6": "2607:f740:16::c23", - "CanPort80": true - }, - { - "Name": "13b", - "RegionID": 13, - "HostName": "derp13b.tailscale.com", - "IPv4": "192.73.242.187", - "IPv6": "2607:f740:16::640", - "CanPort80": true - } - ] - }, - "14": { - "RegionID": 14, - "RegionCode": "ams", - "RegionName": "Amsterdam", - "Latitude": 52.372778, - "Longitude": 4.893611, - "Nodes": [ - { - "Name": "14c", - "RegionID": 14, - "HostName": "derp14c.tailscale.com", - "IPv4": "176.58.93.147", - "IPv6": "2a00:dd80:3c::b09", - "CanPort80": true - }, - { - "Name": "14d", - "RegionID": 14, - "HostName": "derp14d.tailscale.com", - "IPv4": "176.58.93.154", - "IPv6": "2a00:dd80:3c::3d5", - "CanPort80": true - }, - { - "Name": "14b", - "RegionID": 14, - "HostName": "derp14b.tailscale.com", - "IPv4": "176.58.93.248", - "IPv6": "2a00:dd80:3c::807", - "CanPort80": true - } - ] - }, - "15": { - "RegionID": 15, - "RegionCode": "jnb", - "RegionName": "Johannesburg", - "Latitude": -26.204444, - "Longitude": 28.045556, - "Nodes": [ - { - "Name": "15c", - "RegionID": 15, - "HostName": "derp15c.tailscale.com", - "IPv4": "102.67.165.185", - "IPv6": "2c0f:edb0:0:10::b59", - "CanPort80": true - }, - { - "Name": "15d", - "RegionID": 15, - "HostName": "derp15d.tailscale.com", - "IPv4": "102.67.165.36", - "IPv6": "2c0f:edb0:0:10::599", - "CanPort80": true - }, - { - "Name": "15b", - "RegionID": 15, - "HostName": "derp15b.tailscale.com", - "IPv4": "102.67.165.90", - "IPv6": "2c0f:edb0:0:10::963", - "CanPort80": true - } - ] - }, - "16": { - "RegionID": 16, - "RegionCode": "mia", - "RegionName": "Miami", - "Latitude": 25.78, - "Longitude": -80.21, - "Nodes": [ - { - "Name": "16c", - "RegionID": 16, - "HostName": "derp16c.tailscale.com", - "IPv4": "192.73.243.229", - "IPv6": "2607:f740:17::4e4", - "CanPort80": true - }, - { - "Name": "16d", - "RegionID": 16, - "HostName": "derp16d.tailscale.com", - "IPv4": "192.73.243.141", - "IPv6": "2607:f740:17::475", - "CanPort80": true - }, - { - "Name": "16b", - "RegionID": 16, - "HostName": "derp16b.tailscale.com", - "IPv4": "192.73.243.135", - "IPv6": "2607:f740:17::476", - "CanPort80": true - } - ] - }, - "17": { - "RegionID": 17, - "RegionCode": "lax", - "RegionName": "Los Angeles", - "Latitude": 34.05, - "Longitude": -118.25, - "Nodes": [ - { - "Name": "17c", - "RegionID": 17, - "HostName": "derp17c.tailscale.com", - "IPv4": "208.111.40.12", - "IPv6": "2607:f740:c::10", - "CanPort80": true - }, - { - "Name": "17d", - "RegionID": 17, - "HostName": "derp17d.tailscale.com", - "IPv4": "208.111.40.216", - "IPv6": "2607:f740:c::e1b", - "CanPort80": true - }, - { - "Name": "17b", - "RegionID": 17, - "HostName": "derp17b.tailscale.com", - "IPv4": "192.73.244.245", - "IPv6": "2607:f740:c::646", - "CanPort80": true - } - ] - }, - "18": { - "RegionID": 18, - "RegionCode": "par", - "RegionName": "Paris", - "Latitude": 48.856667, - "Longitude": 2.352222, - "Nodes": [ - { - "Name": "18c", - "RegionID": 18, - "HostName": "derp18c.tailscale.com", - "IPv4": "176.58.90.207", - "IPv6": "2a00:dd80:3e::c19", - "CanPort80": true - }, - { - "Name": "18d", - "RegionID": 18, - "HostName": "derp18d.tailscale.com", - "IPv4": "176.58.90.104", - "IPv6": "2a00:dd80:3e::f2e", - "CanPort80": true - }, - { - "Name": "18b", - "RegionID": 18, - "HostName": "derp18b.tailscale.com", - "IPv4": "176.58.90.147", - "IPv6": "2a00:dd80:3e::363", - "CanPort80": true - } - ] - }, - "19": { - "RegionID": 19, - "RegionCode": "mad", - "RegionName": "Madrid", - "Latitude": 40.416944, - "Longitude": -3.703333, - "Nodes": [ - { - "Name": "19c", - "RegionID": 19, - "HostName": "derp19c.tailscale.com", - "IPv4": "45.159.97.61", - "IPv6": "2a00:dd80:14:10::20", - "CanPort80": true - }, - { - "Name": "19d", - "RegionID": 19, - "HostName": "derp19d.tailscale.com", - "IPv4": "45.159.97.233", - "IPv6": "2a00:dd80:14:10::34a", - "CanPort80": true - }, - { - "Name": "19b", - "RegionID": 19, - "HostName": "derp19b.tailscale.com", - "IPv4": "45.159.97.144", - "IPv6": "2a00:dd80:14:10::335", - "CanPort80": true - } - ] - }, - "2": { - "RegionID": 2, - "RegionCode": "sfo", - "RegionName": "San Francisco", - "Latitude": 37.7775, - "Longitude": -122.416389, - "Nodes": [ - { - "Name": "2e", - "RegionID": 2, - "HostName": "derp2e.tailscale.com", - "IPv4": "192.73.252.134", - "IPv6": "2607:f740:0:3f::44c", - "CanPort80": true - }, - { - "Name": "2f", - "RegionID": 2, - "HostName": "derp2f.tailscale.com", - "IPv4": "208.111.34.178", - "IPv6": "2607:f740:0:3f::f4", - "CanPort80": true - }, - { - "Name": "2d", - "RegionID": 2, - "HostName": "derp2d.tailscale.com", - "IPv4": "192.73.252.65", - "IPv6": "2607:f740:0:3f::287", - "CanPort80": true - } - ] - }, - "20": { - "RegionID": 20, - "RegionCode": "hkg", - "RegionName": "Hong Kong", - "Latitude": 22.3193, - "Longitude": 114.1694, - "Nodes": [ - { - "Name": "20c", - "RegionID": 20, - "HostName": "derp20c.tailscale.com", - "IPv4": "205.147.105.30", - "IPv6": "2403:2500:8000:1::5fb", - "CanPort80": true - }, - { - "Name": "20d", - "RegionID": 20, - "HostName": "derp20d.tailscale.com", - "IPv4": "205.147.105.78", - "IPv6": "2403:2500:8000:1::e9a", - "CanPort80": true - }, - { - "Name": "20b", - "RegionID": 20, - "HostName": "derp20b.tailscale.com", - "IPv4": "103.6.84.152", - "IPv6": "2403:2500:8000:1::ef6", - "CanPort80": true - } - ] - }, - "21": { - "RegionID": 21, - "RegionCode": "tor", - "RegionName": "Toronto", - "Latitude": 43.741667, - "Longitude": -79.373333, - "Nodes": [ - { - "Name": "21c", - "RegionID": 21, - "HostName": "derp21c.tailscale.com", - "IPv4": "162.248.221.215", - "IPv6": "2607:f740:50::f10", - "CanPort80": true - }, - { - "Name": "21d", - "RegionID": 21, - "HostName": "derp21d.tailscale.com", - "IPv4": "162.248.221.248", - "IPv6": "2607:f740:50::ca4", - "CanPort80": true - }, - { - "Name": "21b", - "RegionID": 21, - "HostName": "derp21b.tailscale.com", - "IPv4": "162.248.221.199", - "IPv6": "2607:f740:50::1d1", - "CanPort80": true - } - ] - }, - "22": { - "RegionID": 22, - "RegionCode": "waw", - "RegionName": "Warsaw", - "Latitude": 52.23, - "Longitude": 21.011111, - "Nodes": [ - { - "Name": "22c", - "RegionID": 22, - "HostName": "derp22c.tailscale.com", - "IPv4": "45.159.98.253", - "IPv6": "2a00:dd80:40:100::3f", - "CanPort80": true - }, - { - "Name": "22d", - "RegionID": 22, - "HostName": "derp22d.tailscale.com", - "IPv4": "45.159.98.145", - "IPv6": "2a00:dd80:40:100::211", - "CanPort80": true - }, - { - "Name": "22b", - "RegionID": 22, - "HostName": "derp22b.tailscale.com", - "IPv4": "45.159.98.196", - "IPv6": "2a00:dd80:40:100::316", - "CanPort80": true - } - ] - }, - "23": { - "RegionID": 23, - "RegionCode": "dbi", - "RegionName": "Dubai", - "Latitude": 25.263056, - "Longitude": 55.297222, - "Nodes": [ - { - "Name": "23c", - "RegionID": 23, - "HostName": "derp23c.tailscale.com", - "IPv4": "185.34.3.207", - "IPv6": "2a00:dd80:3f:100::a50", - "CanPort80": true - }, - { - "Name": "23d", - "RegionID": 23, - "HostName": "derp23d.tailscale.com", - "IPv4": "185.34.3.75", - "IPv6": "2a00:dd80:3f:100::97e", - "CanPort80": true - }, - { - "Name": "23b", - "RegionID": 23, - "HostName": "derp23b.tailscale.com", - "IPv4": "185.34.3.232", - "IPv6": "2a00:dd80:3f:100::76f", - "CanPort80": true - } - ] - }, - "24": { - "RegionID": 24, - "RegionCode": "hnl", - "RegionName": "Honolulu", - "Latitude": 21.306944, - "Longitude": -157.858333, - "Nodes": [ - { - "Name": "24c", - "RegionID": 24, - "HostName": "derp24c.tailscale.com", - "IPv4": "208.83.233.233", - "IPv6": "2001:19f0:c000:c591:5400:04ff:fe26:2c5f", - "CanPort80": true - }, - { - "Name": "24d", - "RegionID": 24, - "HostName": "derp24d.tailscale.com", - "IPv4": "208.72.155.133", - "IPv6": "2001:19f0:c000:c564:5400:04ff:fe26:2ba8", - "CanPort80": true - }, - { - "Name": "24b", - "RegionID": 24, - "HostName": "derp24b.tailscale.com", - "IPv4": "208.83.234.151", - "IPv6": "2001:19f0:c000:c586:5400:04ff:fe26:2ba6", - "CanPort80": true - } - ] - }, - "25": { - "RegionID": 25, - "RegionCode": "nai", - "RegionName": "Nairobi", - "Latitude": -1.286389, - "Longitude": 36.817222, - "Nodes": [ - { - "Name": "25c", - "RegionID": 25, - "HostName": "derp25c.tailscale.com", - "IPv4": "102.67.167.37", - "IPv6": "2c0f:edb0:2000:1::2c7", - "CanPort80": true - }, - { - "Name": "25d", - "RegionID": 25, - "HostName": "derp25d.tailscale.com", - "IPv4": "102.67.167.188", - "IPv6": "2c0f:edb0:2000:1::188", - "CanPort80": true - }, - { - "Name": "25b", - "RegionID": 25, - "HostName": "derp25b.tailscale.com", - "IPv4": "102.67.167.245", - "IPv6": "2c0f:edb0:2000:1::2e9", - "CanPort80": true - } - ] - }, - "26": { - "RegionID": 26, - "RegionCode": "nue", - "RegionName": "Nuremberg", - "Latitude": 49.453889, - "Longitude": 11.0775, - "Nodes": [ - { - "Name": "26c", - "RegionID": 26, - "HostName": "derp26c.tailscale.com", - "IPv4": "49.12.193.137", - "IPv6": "2a01:4f8:1c1c:5c70::1", - "CanPort80": true - }, - { - "Name": "26d", - "RegionID": 26, - "HostName": "derp26d.tailscale.com", - "IPv4": "49.13.204.141", - "IPv6": "2a01:4f8:1c0c:7d06::1", - "CanPort80": true - }, - { - "Name": "26b", - "RegionID": 26, - "HostName": "derp26b.tailscale.com", - "IPv4": "167.235.72.200", - "IPv6": "2a01:4f8:1c1c:47b6::1", - "CanPort80": true - } - ] - }, - "27": { - "RegionID": 27, - "RegionCode": "iad", - "RegionName": "Ashburn", - "Latitude": 39.03, - "Longitude": -77.471111, - "Nodes": [ - { - "Name": "27d", - "RegionID": 27, - "HostName": "derp27d.tailscale.com", - "IPv4": "178.156.152.106", - "IPv6": "2a01:4ff:f0:3c8e::1", - "CanPort80": true - }, - { - "Name": "27c", - "RegionID": 27, - "HostName": "derp27c.tailscale.com", - "IPv4": "178.156.152.91", - "IPv6": "2a01:4ff:f0:3913::1", - "CanPort80": true - }, - { - "Name": "27e", - "RegionID": 27, - "HostName": "derp27e.tailscale.com", - "IPv4": "178.156.134.232", - "IPv6": "2a01:4ff:f0:28d4::1", - "CanPort80": true - }, - { - "Name": "27b", - "RegionID": 27, - "HostName": "derp27b.tailscale.com", - "IPv4": "5.161.218.233", - "IPv6": "2a01:4ff:f0:3db9::1", - "CanPort80": true - } - ] - }, - "28": { - "RegionID": 28, - "RegionCode": "hel", - "RegionName": "Helsinki", - "Latitude": 60.170833, - "Longitude": 24.9375, - "Nodes": [ - { - "Name": "28c", - "RegionID": 28, - "HostName": "derp28c.tailscale.com", - "IPv4": "95.217.2.165", - "IPv6": "2a01:4f9:c012:cd74::1", - "CanPort80": true - }, - { - "Name": "28d", - "RegionID": 28, - "HostName": "derp28d.tailscale.com", - "IPv4": "157.180.28.32", - "IPv6": "2a01:4f9:c012:2e5b::1", - "CanPort80": true - }, - { - "Name": "28b", - "RegionID": 28, - "HostName": "derp28b.tailscale.com", - "IPv4": "65.109.143.62", - "IPv6": "2a01:4f9:c012:d55c::1", - "CanPort80": true - } - ] - }, - "3": { - "RegionID": 3, - "RegionCode": "sin", - "RegionName": "Singapore", - "Latitude": 1.3521, - "Longitude": 103.8198, - "Nodes": [ - { - "Name": "3g", - "RegionID": 3, - "HostName": "derp3g.tailscale.com", - "IPv4": "172.237.72.79", - "IPv6": "2600:3c15::2000:adff:fe08:6fab", - "CanPort80": true - }, - { - "Name": "3f", - "RegionID": 3, - "HostName": "derp3f.tailscale.com", - "IPv4": "172.237.72.8", - "IPv6": "2600:3c15::2000:53ff:fe48:a668", - "CanPort80": true - }, - { - "Name": "3h", - "RegionID": 3, - "HostName": "derp3h.tailscale.com", - "IPv4": "172.237.66.30", - "IPv6": "2600:3c15::2000:3dff:fe44:50aa", - "CanPort80": true - }, - { - "Name": "3e", - "RegionID": 3, - "HostName": "derp3e.tailscale.com", - "IPv4": "172.237.72.43", - "IPv6": "2600:3c15::2000:6cff:fee4:d799", - "CanPort80": true - } - ] - }, - "4": { - "RegionID": 4, - "RegionCode": "fra", - "RegionName": "Frankfurt", - "Latitude": 50.1109, - "Longitude": 8.6821, - "Nodes": [ - { - "Name": "4h", - "RegionID": 4, - "HostName": "derp4h.tailscale.com", - "IPv4": "185.40.234.77", - "IPv6": "2a00:dd80:20::bcf", - "CanPort80": true - }, - { - "Name": "4g", - "RegionID": 4, - "HostName": "derp4g.tailscale.com", - "IPv4": "185.40.234.113", - "IPv6": "2a00:dd80:20::8f", - "CanPort80": true - }, - { - "Name": "4i", - "RegionID": 4, - "HostName": "derp4i.tailscale.com", - "IPv4": "185.40.234.53", - "IPv6": "2a00:dd80:20::8a6", - "CanPort80": true - }, - { - "Name": "4f", - "RegionID": 4, - "HostName": "derp4f.tailscale.com", - "IPv4": "185.40.234.219", - "IPv6": "2a00:dd80:20::a25", - "CanPort80": true - } - ] - }, - "5": { - "RegionID": 5, - "RegionCode": "syd", - "RegionName": "Sydney", - "Latitude": -33.867778, - "Longitude": 151.21, - "Nodes": [ - { - "Name": "5f", - "RegionID": 5, - "HostName": "derp5f.tailscale.com", - "IPv4": "172.105.166.103", - "IPv6": "2400:8907::2000:ccff:fe1f:80da", - "CanPort80": true - }, - { - "Name": "5g", - "RegionID": 5, - "HostName": "derp5g.tailscale.com", - "IPv4": "172.105.169.57", - "IPv6": "2400:8907::2000:2fff:fea7:57f4", - "CanPort80": true - }, - { - "Name": "5e", - "RegionID": 5, - "HostName": "derp5e.tailscale.com", - "IPv4": "172.105.179.230", - "IPv6": "2400:8907::2000:ceff:fe8d:4f4e", - "CanPort80": true - } - ] - }, - "6": { - "RegionID": 6, - "RegionCode": "blr", - "RegionName": "Bengaluru", - "Latitude": 12.9716, - "Longitude": 77.5946, - "Nodes": [ - { - "Name": "6a", - "RegionID": 6, - "HostName": "derp6.tailscale.com", - "IPv4": "68.183.90.120", - "IPv6": "2400:6180:100:d0::982:d001", - "CanPort80": true - } - ] - }, - "7": { - "RegionID": 7, - "RegionCode": "tok", - "RegionName": "Tokyo", - "Latitude": 35.6764, - "Longitude": 139.65, - "Nodes": [ - { - "Name": "7g", - "RegionID": 7, - "HostName": "derp7g.tailscale.com", - "IPv4": "172.238.6.179", - "IPv6": "2600:3c18::2000:3fff:fe80:3ebd", - "CanPort80": true - }, - { - "Name": "7f", - "RegionID": 7, - "HostName": "derp7f.tailscale.com", - "IPv4": "172.238.6.34", - "IPv6": "2600:3c18::2000:acff:fe8e:3ed5", - "CanPort80": true - }, - { - "Name": "7h", - "RegionID": 7, - "HostName": "derp7h.tailscale.com", - "IPv4": "172.237.28.183", - "IPv6": "2600:3c18::2000:b1ff:fea9:4560", - "CanPort80": true - }, - { - "Name": "7e", - "RegionID": 7, - "HostName": "derp7e.tailscale.com", - "IPv4": "172.238.6.180", - "IPv6": "2600:3c18::2000:60ff:fe0f:6e83", - "STUNOnly": true, - "CanPort80": true - } - ] - }, - "8": { - "RegionID": 8, - "RegionCode": "lhr", - "RegionName": "London", - "Latitude": 51.5072, - "Longitude": 0.1276, - "Nodes": [ - { - "Name": "8f", - "RegionID": 8, - "HostName": "derp8f.tailscale.com", - "IPv4": "176.58.88.183", - "IPv6": "2a00:dd80:3a::dfa", - "CanPort80": true - }, - { - "Name": "8g", - "RegionID": 8, - "HostName": "derp8g.tailscale.com", - "IPv4": "176.58.92.254", - "IPv6": "2a00:dd80:3a::ed", - "CanPort80": true - }, - { - "Name": "8e", - "RegionID": 8, - "HostName": "derp8e.tailscale.com", - "IPv4": "176.58.92.144", - "IPv6": "2a00:dd80:3a::b33", - "CanPort80": true - } - ] - }, - "9": { - "RegionID": 9, - "RegionCode": "dfw", - "RegionName": "Dallas", - "Latitude": 32.779167, - "Longitude": -96.808889, - "Nodes": [ - { - "Name": "9e", - "RegionID": 9, - "HostName": "derp9e.tailscale.com", - "IPv4": "192.73.248.83", - "IPv6": "2607:f740:100::359", - "CanPort80": true - }, - { - "Name": "9f", - "RegionID": 9, - "HostName": "derp9f.tailscale.com", - "IPv4": "209.177.156.197", - "IPv6": "2607:f740:100::cad", - "CanPort80": true - }, - { - "Name": "9d", - "RegionID": 9, - "HostName": "derp9d.tailscale.com", - "IPv4": "209.177.156.94", - "IPv6": "2607:f740:100::c05", - "CanPort80": true - } - ] - } - } - }, - "DisplayMessages": null, - "TKAEnabled": false, - "TKAHead": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", - "Domain": "kratail2tid@passkey", - "DomainAuditLogID": "", - "UserProfiles": { - "1399889648409786": { - "ID": 1399889648409786, - "LoginName": "router-b.tail78f774.ts.net", - "DisplayName": "router-b" - } - } + "PacketFilterRules": 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.124.195.93": { - "peer_name": "exit-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/subnet-router/tailscaled.sock whois --json 100.124.195.93", - "response": null - }, - "100.116.18.24": { - "peer_name": "exit-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/subnet-router/tailscaled.sock whois --json 100.116.18.24", - "response": null - }, - "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.107.162.14": { - "peer_name": "group-a-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/subnet-router/tailscaled.sock whois --json 100.107.162.14", - "response": null - }, - "100.77.135.18": { - "peer_name": "group-b-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/subnet-router/tailscaled.sock whois --json 100.77.135.18", - "response": null - }, - "100.105.127.107": { - "peer_name": "multi-exit-router", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/subnet-router/tailscaled.sock whois --json 100.105.127.107", - "response": null - }, - "100.109.43.124": { - "peer_name": "router-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/subnet-router/tailscaled.sock whois --json 100.109.43.124", - "response": null - }, - "100.65.172.123": { - "peer_name": "router-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/subnet-router/tailscaled.sock whois --json 100.65.172.123", - "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 - } - }, "netmap": { - "SelfNode": { - "ID": 7489538288452506, - "StableID": "nTPEqJU2V121CNTRL", - "Name": "subnet-router.tail78f774.ts.net.", - "User": 7489538288452506, - "Key": "nodekey:887ae2351c09c3b952f1f42bdac4095ec396ebf15824a746e4193c003e9c8e3c", - "DiscoKey": "discokey:9e3167ceaf53735a2fcaa7d3a85ad3a6118274deb448326d594849275014cc56", - "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:58597", "10.65.0.27:58597", "172.17.0.1:58597"], - "Hostinfo": { - "Hostname": "subnet-router", - "RoutableIPs": ["10.33.0.0/16"], - "RequestTags": ["tag:router"], - "Services": [ - { "Proto": "peerapi4", "Port": 63250 }, - { "Proto": "peerapi6", "Port": 63250 }, - { "Proto": "peerapi-dns-proxy", "Port": 1 } - ] - }, - "Created": "2026-02-23T00:13:15.731478784Z", - "Tags": ["tag:router"], - "MachineAuthorized": true, - "CapMap": { - "https://tailscale.com/cap/file-sharing": null, - "https://tailscale.com/cap/is-owner": null, - "https://tailscale.com/cap/ssh": null, - "https://tailscale.com/cap/tailnet-lock": null, - "probe-udp-lifetime": null, - "ssh-behavior-v1": null, - "ssh-env-vars": null, - "store-appc-routes": null, - "tailnet-display-name": ["kratail2tid@passkey"] - }, - "ComputedName": "subnet-router", - "ComputedNameWithHost": "subnet-router" - }, - "AllCaps": [ - "https://tailscale.com/cap/is-owner", - "https://tailscale.com/cap/tailnet-lock", - "probe-udp-lifetime", - "store-appc-routes", - "https://tailscale.com/cap/file-sharing", - "tailnet-display-name", - "ssh-behavior-v1", - "ssh-env-vars", - "https://tailscale.com/cap/ssh" - ], - "NodeKey": "nodekey:887ae2351c09c3b952f1f42bdac4095ec396ebf15824a746e4193c003e9c8e3c", - "MachineKey": "mkey:324efa54cc51a7b4f266f6a236904c755d32b6e547a76ad3c1d1e9d348de682a", "Peers": [], - "DNS": { - "Routes": { - "tail78f774.ts.net.": null, - "ts.net.": [{ "Addr": "199.247.155.53" }, { "Addr": "2620:111:8007::53" }] - }, - "Domains": ["tail78f774.ts.net"], - "Proxied": true, - "ExitNodeFilteredSet": [".ts.net", ".tailscale.net"] - }, - "PacketFilter": [], - "PacketFilterRules": null, - "SSHPolicy": { "rules": [] }, - "CollectServices": false, - "DERPMap": { - "Regions": { - "1": { - "RegionID": 1, - "RegionCode": "nyc", - "RegionName": "New York City", - "Latitude": 40.7128, - "Longitude": -74.006, - "Nodes": [ - { - "Name": "1h", - "RegionID": 1, - "HostName": "derp1h.tailscale.com", - "IPv4": "199.38.181.93", - "IPv6": "2607:f740:f::afd", - "CanPort80": true - }, - { - "Name": "1g", - "RegionID": 1, - "HostName": "derp1g.tailscale.com", - "IPv4": "209.177.145.120", - "IPv6": "2607:f740:f::3eb", - "CanPort80": true - }, - { - "Name": "1i", - "RegionID": 1, - "HostName": "derp1i.tailscale.com", - "IPv4": "199.38.181.103", - "IPv6": "2607:f740:f::e19", - "CanPort80": true - }, - { - "Name": "1f", - "RegionID": 1, - "HostName": "derp1f.tailscale.com", - "IPv4": "199.38.181.104", - "IPv6": "2607:f740:f::bc", - "CanPort80": true - } - ] - }, - "10": { - "RegionID": 10, - "RegionCode": "sea", - "RegionName": "Seattle", - "Latitude": 47.609722, - "Longitude": -122.333056, - "Nodes": [ - { - "Name": "10c", - "RegionID": 10, - "HostName": "derp10c.tailscale.com", - "IPv4": "192.73.240.121", - "IPv6": "2607:f740:14::40c", - "CanPort80": true - }, - { - "Name": "10d", - "RegionID": 10, - "HostName": "derp10d.tailscale.com", - "IPv4": "192.73.240.132", - "IPv6": "2607:f740:14::500", - "CanPort80": true - }, - { - "Name": "10b", - "RegionID": 10, - "HostName": "derp10b.tailscale.com", - "IPv4": "192.73.240.161", - "IPv6": "2607:f740:14::61c", - "CanPort80": true - } - ] - }, - "11": { - "RegionID": 11, - "RegionCode": "sao", - "RegionName": "São Paulo", - "Latitude": -23.55, - "Longitude": -46.633333, - "Nodes": [ - { - "Name": "11f", - "RegionID": 11, - "HostName": "derp11f.tailscale.com", - "IPv4": "172.237.61.197", - "IPv6": "2600:3c0d::2000:3bff:fe44:6166", - "CanPort80": true - }, - { - "Name": "11g", - "RegionID": 11, - "HostName": "derp11g.tailscale.com", - "IPv4": "172.237.61.190", - "IPv6": "2600:3c0d::2000:62ff:febe:2e67", - "CanPort80": true - }, - { - "Name": "11e", - "RegionID": 11, - "HostName": "derp11e.tailscale.com", - "IPv4": "172.237.61.194", - "IPv6": "2600:3c0d::2000:d2ff:fe43:1790", - "CanPort80": true - } - ] - }, - "12": { - "RegionID": 12, - "RegionCode": "ord", - "RegionName": "Chicago", - "Latitude": 41.881944, - "Longitude": -87.627778, - "Nodes": [ - { - "Name": "12e", - "RegionID": 12, - "HostName": "derp12e.tailscale.com", - "IPv4": "209.177.158.15", - "IPv6": "2607:f740:e::b17", - "CanPort80": true - }, - { - "Name": "12f", - "RegionID": 12, - "HostName": "derp12f.tailscale.com", - "IPv4": "199.38.182.118", - "IPv6": "2607:f740:e::4c8", - "CanPort80": true - }, - { - "Name": "12d", - "RegionID": 12, - "HostName": "derp12d.tailscale.com", - "IPv4": "209.177.158.246", - "IPv6": "2607:f740:e::811", - "CanPort80": true - } - ] - }, - "13": { - "RegionID": 13, - "RegionCode": "den", - "RegionName": "Denver", - "Latitude": 39.7392, - "Longitude": -104.9849, - "Nodes": [ - { - "Name": "13c", - "RegionID": 13, - "HostName": "derp13c.tailscale.com", - "IPv4": "192.73.242.28", - "IPv6": "2607:f740:16::5c", - "CanPort80": true - }, - { - "Name": "13d", - "RegionID": 13, - "HostName": "derp13d.tailscale.com", - "IPv4": "192.73.242.204", - "IPv6": "2607:f740:16::c23", - "CanPort80": true - }, - { - "Name": "13b", - "RegionID": 13, - "HostName": "derp13b.tailscale.com", - "IPv4": "192.73.242.187", - "IPv6": "2607:f740:16::640", - "CanPort80": true - } - ] - }, - "14": { - "RegionID": 14, - "RegionCode": "ams", - "RegionName": "Amsterdam", - "Latitude": 52.372778, - "Longitude": 4.893611, - "Nodes": [ - { - "Name": "14c", - "RegionID": 14, - "HostName": "derp14c.tailscale.com", - "IPv4": "176.58.93.147", - "IPv6": "2a00:dd80:3c::b09", - "CanPort80": true - }, - { - "Name": "14d", - "RegionID": 14, - "HostName": "derp14d.tailscale.com", - "IPv4": "176.58.93.154", - "IPv6": "2a00:dd80:3c::3d5", - "CanPort80": true - }, - { - "Name": "14b", - "RegionID": 14, - "HostName": "derp14b.tailscale.com", - "IPv4": "176.58.93.248", - "IPv6": "2a00:dd80:3c::807", - "CanPort80": true - } - ] - }, - "15": { - "RegionID": 15, - "RegionCode": "jnb", - "RegionName": "Johannesburg", - "Latitude": -26.204444, - "Longitude": 28.045556, - "Nodes": [ - { - "Name": "15c", - "RegionID": 15, - "HostName": "derp15c.tailscale.com", - "IPv4": "102.67.165.185", - "IPv6": "2c0f:edb0:0:10::b59", - "CanPort80": true - }, - { - "Name": "15d", - "RegionID": 15, - "HostName": "derp15d.tailscale.com", - "IPv4": "102.67.165.36", - "IPv6": "2c0f:edb0:0:10::599", - "CanPort80": true - }, - { - "Name": "15b", - "RegionID": 15, - "HostName": "derp15b.tailscale.com", - "IPv4": "102.67.165.90", - "IPv6": "2c0f:edb0:0:10::963", - "CanPort80": true - } - ] - }, - "16": { - "RegionID": 16, - "RegionCode": "mia", - "RegionName": "Miami", - "Latitude": 25.78, - "Longitude": -80.21, - "Nodes": [ - { - "Name": "16c", - "RegionID": 16, - "HostName": "derp16c.tailscale.com", - "IPv4": "192.73.243.229", - "IPv6": "2607:f740:17::4e4", - "CanPort80": true - }, - { - "Name": "16d", - "RegionID": 16, - "HostName": "derp16d.tailscale.com", - "IPv4": "192.73.243.141", - "IPv6": "2607:f740:17::475", - "CanPort80": true - }, - { - "Name": "16b", - "RegionID": 16, - "HostName": "derp16b.tailscale.com", - "IPv4": "192.73.243.135", - "IPv6": "2607:f740:17::476", - "CanPort80": true - } - ] - }, - "17": { - "RegionID": 17, - "RegionCode": "lax", - "RegionName": "Los Angeles", - "Latitude": 34.05, - "Longitude": -118.25, - "Nodes": [ - { - "Name": "17c", - "RegionID": 17, - "HostName": "derp17c.tailscale.com", - "IPv4": "208.111.40.12", - "IPv6": "2607:f740:c::10", - "CanPort80": true - }, - { - "Name": "17d", - "RegionID": 17, - "HostName": "derp17d.tailscale.com", - "IPv4": "208.111.40.216", - "IPv6": "2607:f740:c::e1b", - "CanPort80": true - }, - { - "Name": "17b", - "RegionID": 17, - "HostName": "derp17b.tailscale.com", - "IPv4": "192.73.244.245", - "IPv6": "2607:f740:c::646", - "CanPort80": true - } - ] - }, - "18": { - "RegionID": 18, - "RegionCode": "par", - "RegionName": "Paris", - "Latitude": 48.856667, - "Longitude": 2.352222, - "Nodes": [ - { - "Name": "18c", - "RegionID": 18, - "HostName": "derp18c.tailscale.com", - "IPv4": "176.58.90.207", - "IPv6": "2a00:dd80:3e::c19", - "CanPort80": true - }, - { - "Name": "18d", - "RegionID": 18, - "HostName": "derp18d.tailscale.com", - "IPv4": "176.58.90.104", - "IPv6": "2a00:dd80:3e::f2e", - "CanPort80": true - }, - { - "Name": "18b", - "RegionID": 18, - "HostName": "derp18b.tailscale.com", - "IPv4": "176.58.90.147", - "IPv6": "2a00:dd80:3e::363", - "CanPort80": true - } - ] - }, - "19": { - "RegionID": 19, - "RegionCode": "mad", - "RegionName": "Madrid", - "Latitude": 40.416944, - "Longitude": -3.703333, - "Nodes": [ - { - "Name": "19c", - "RegionID": 19, - "HostName": "derp19c.tailscale.com", - "IPv4": "45.159.97.61", - "IPv6": "2a00:dd80:14:10::20", - "CanPort80": true - }, - { - "Name": "19d", - "RegionID": 19, - "HostName": "derp19d.tailscale.com", - "IPv4": "45.159.97.233", - "IPv6": "2a00:dd80:14:10::34a", - "CanPort80": true - }, - { - "Name": "19b", - "RegionID": 19, - "HostName": "derp19b.tailscale.com", - "IPv4": "45.159.97.144", - "IPv6": "2a00:dd80:14:10::335", - "CanPort80": true - } - ] - }, - "2": { - "RegionID": 2, - "RegionCode": "sfo", - "RegionName": "San Francisco", - "Latitude": 37.7775, - "Longitude": -122.416389, - "Nodes": [ - { - "Name": "2e", - "RegionID": 2, - "HostName": "derp2e.tailscale.com", - "IPv4": "192.73.252.134", - "IPv6": "2607:f740:0:3f::44c", - "CanPort80": true - }, - { - "Name": "2f", - "RegionID": 2, - "HostName": "derp2f.tailscale.com", - "IPv4": "208.111.34.178", - "IPv6": "2607:f740:0:3f::f4", - "CanPort80": true - }, - { - "Name": "2d", - "RegionID": 2, - "HostName": "derp2d.tailscale.com", - "IPv4": "192.73.252.65", - "IPv6": "2607:f740:0:3f::287", - "CanPort80": true - } - ] - }, - "20": { - "RegionID": 20, - "RegionCode": "hkg", - "RegionName": "Hong Kong", - "Latitude": 22.3193, - "Longitude": 114.1694, - "Nodes": [ - { - "Name": "20c", - "RegionID": 20, - "HostName": "derp20c.tailscale.com", - "IPv4": "205.147.105.30", - "IPv6": "2403:2500:8000:1::5fb", - "CanPort80": true - }, - { - "Name": "20d", - "RegionID": 20, - "HostName": "derp20d.tailscale.com", - "IPv4": "205.147.105.78", - "IPv6": "2403:2500:8000:1::e9a", - "CanPort80": true - }, - { - "Name": "20b", - "RegionID": 20, - "HostName": "derp20b.tailscale.com", - "IPv4": "103.6.84.152", - "IPv6": "2403:2500:8000:1::ef6", - "CanPort80": true - } - ] - }, - "21": { - "RegionID": 21, - "RegionCode": "tor", - "RegionName": "Toronto", - "Latitude": 43.741667, - "Longitude": -79.373333, - "Nodes": [ - { - "Name": "21c", - "RegionID": 21, - "HostName": "derp21c.tailscale.com", - "IPv4": "162.248.221.215", - "IPv6": "2607:f740:50::f10", - "CanPort80": true - }, - { - "Name": "21d", - "RegionID": 21, - "HostName": "derp21d.tailscale.com", - "IPv4": "162.248.221.248", - "IPv6": "2607:f740:50::ca4", - "CanPort80": true - }, - { - "Name": "21b", - "RegionID": 21, - "HostName": "derp21b.tailscale.com", - "IPv4": "162.248.221.199", - "IPv6": "2607:f740:50::1d1", - "CanPort80": true - } - ] - }, - "22": { - "RegionID": 22, - "RegionCode": "waw", - "RegionName": "Warsaw", - "Latitude": 52.23, - "Longitude": 21.011111, - "Nodes": [ - { - "Name": "22c", - "RegionID": 22, - "HostName": "derp22c.tailscale.com", - "IPv4": "45.159.98.253", - "IPv6": "2a00:dd80:40:100::3f", - "CanPort80": true - }, - { - "Name": "22d", - "RegionID": 22, - "HostName": "derp22d.tailscale.com", - "IPv4": "45.159.98.145", - "IPv6": "2a00:dd80:40:100::211", - "CanPort80": true - }, - { - "Name": "22b", - "RegionID": 22, - "HostName": "derp22b.tailscale.com", - "IPv4": "45.159.98.196", - "IPv6": "2a00:dd80:40:100::316", - "CanPort80": true - } - ] - }, - "23": { - "RegionID": 23, - "RegionCode": "dbi", - "RegionName": "Dubai", - "Latitude": 25.263056, - "Longitude": 55.297222, - "Nodes": [ - { - "Name": "23c", - "RegionID": 23, - "HostName": "derp23c.tailscale.com", - "IPv4": "185.34.3.207", - "IPv6": "2a00:dd80:3f:100::a50", - "CanPort80": true - }, - { - "Name": "23d", - "RegionID": 23, - "HostName": "derp23d.tailscale.com", - "IPv4": "185.34.3.75", - "IPv6": "2a00:dd80:3f:100::97e", - "CanPort80": true - }, - { - "Name": "23b", - "RegionID": 23, - "HostName": "derp23b.tailscale.com", - "IPv4": "185.34.3.232", - "IPv6": "2a00:dd80:3f:100::76f", - "CanPort80": true - } - ] - }, - "24": { - "RegionID": 24, - "RegionCode": "hnl", - "RegionName": "Honolulu", - "Latitude": 21.306944, - "Longitude": -157.858333, - "Nodes": [ - { - "Name": "24c", - "RegionID": 24, - "HostName": "derp24c.tailscale.com", - "IPv4": "208.83.233.233", - "IPv6": "2001:19f0:c000:c591:5400:04ff:fe26:2c5f", - "CanPort80": true - }, - { - "Name": "24d", - "RegionID": 24, - "HostName": "derp24d.tailscale.com", - "IPv4": "208.72.155.133", - "IPv6": "2001:19f0:c000:c564:5400:04ff:fe26:2ba8", - "CanPort80": true - }, - { - "Name": "24b", - "RegionID": 24, - "HostName": "derp24b.tailscale.com", - "IPv4": "208.83.234.151", - "IPv6": "2001:19f0:c000:c586:5400:04ff:fe26:2ba6", - "CanPort80": true - } - ] - }, - "25": { - "RegionID": 25, - "RegionCode": "nai", - "RegionName": "Nairobi", - "Latitude": -1.286389, - "Longitude": 36.817222, - "Nodes": [ - { - "Name": "25c", - "RegionID": 25, - "HostName": "derp25c.tailscale.com", - "IPv4": "102.67.167.37", - "IPv6": "2c0f:edb0:2000:1::2c7", - "CanPort80": true - }, - { - "Name": "25d", - "RegionID": 25, - "HostName": "derp25d.tailscale.com", - "IPv4": "102.67.167.188", - "IPv6": "2c0f:edb0:2000:1::188", - "CanPort80": true - }, - { - "Name": "25b", - "RegionID": 25, - "HostName": "derp25b.tailscale.com", - "IPv4": "102.67.167.245", - "IPv6": "2c0f:edb0:2000:1::2e9", - "CanPort80": true - } - ] - }, - "26": { - "RegionID": 26, - "RegionCode": "nue", - "RegionName": "Nuremberg", - "Latitude": 49.453889, - "Longitude": 11.0775, - "Nodes": [ - { - "Name": "26c", - "RegionID": 26, - "HostName": "derp26c.tailscale.com", - "IPv4": "49.12.193.137", - "IPv6": "2a01:4f8:1c1c:5c70::1", - "CanPort80": true - }, - { - "Name": "26d", - "RegionID": 26, - "HostName": "derp26d.tailscale.com", - "IPv4": "49.13.204.141", - "IPv6": "2a01:4f8:1c0c:7d06::1", - "CanPort80": true - }, - { - "Name": "26b", - "RegionID": 26, - "HostName": "derp26b.tailscale.com", - "IPv4": "167.235.72.200", - "IPv6": "2a01:4f8:1c1c:47b6::1", - "CanPort80": true - } - ] - }, - "27": { - "RegionID": 27, - "RegionCode": "iad", - "RegionName": "Ashburn", - "Latitude": 39.03, - "Longitude": -77.471111, - "Nodes": [ - { - "Name": "27d", - "RegionID": 27, - "HostName": "derp27d.tailscale.com", - "IPv4": "178.156.152.106", - "IPv6": "2a01:4ff:f0:3c8e::1", - "CanPort80": true - }, - { - "Name": "27c", - "RegionID": 27, - "HostName": "derp27c.tailscale.com", - "IPv4": "178.156.152.91", - "IPv6": "2a01:4ff:f0:3913::1", - "CanPort80": true - }, - { - "Name": "27e", - "RegionID": 27, - "HostName": "derp27e.tailscale.com", - "IPv4": "178.156.134.232", - "IPv6": "2a01:4ff:f0:28d4::1", - "CanPort80": true - }, - { - "Name": "27b", - "RegionID": 27, - "HostName": "derp27b.tailscale.com", - "IPv4": "5.161.218.233", - "IPv6": "2a01:4ff:f0:3db9::1", - "CanPort80": true - } - ] - }, - "28": { - "RegionID": 28, - "RegionCode": "hel", - "RegionName": "Helsinki", - "Latitude": 60.170833, - "Longitude": 24.9375, - "Nodes": [ - { - "Name": "28c", - "RegionID": 28, - "HostName": "derp28c.tailscale.com", - "IPv4": "95.217.2.165", - "IPv6": "2a01:4f9:c012:cd74::1", - "CanPort80": true - }, - { - "Name": "28d", - "RegionID": 28, - "HostName": "derp28d.tailscale.com", - "IPv4": "157.180.28.32", - "IPv6": "2a01:4f9:c012:2e5b::1", - "CanPort80": true - }, - { - "Name": "28b", - "RegionID": 28, - "HostName": "derp28b.tailscale.com", - "IPv4": "65.109.143.62", - "IPv6": "2a01:4f9:c012:d55c::1", - "CanPort80": true - } - ] - }, - "3": { - "RegionID": 3, - "RegionCode": "sin", - "RegionName": "Singapore", - "Latitude": 1.3521, - "Longitude": 103.8198, - "Nodes": [ - { - "Name": "3g", - "RegionID": 3, - "HostName": "derp3g.tailscale.com", - "IPv4": "172.237.72.79", - "IPv6": "2600:3c15::2000:adff:fe08:6fab", - "CanPort80": true - }, - { - "Name": "3f", - "RegionID": 3, - "HostName": "derp3f.tailscale.com", - "IPv4": "172.237.72.8", - "IPv6": "2600:3c15::2000:53ff:fe48:a668", - "CanPort80": true - }, - { - "Name": "3h", - "RegionID": 3, - "HostName": "derp3h.tailscale.com", - "IPv4": "172.237.66.30", - "IPv6": "2600:3c15::2000:3dff:fe44:50aa", - "CanPort80": true - }, - { - "Name": "3e", - "RegionID": 3, - "HostName": "derp3e.tailscale.com", - "IPv4": "172.237.72.43", - "IPv6": "2600:3c15::2000:6cff:fee4:d799", - "CanPort80": true - } - ] - }, - "4": { - "RegionID": 4, - "RegionCode": "fra", - "RegionName": "Frankfurt", - "Latitude": 50.1109, - "Longitude": 8.6821, - "Nodes": [ - { - "Name": "4h", - "RegionID": 4, - "HostName": "derp4h.tailscale.com", - "IPv4": "185.40.234.77", - "IPv6": "2a00:dd80:20::bcf", - "CanPort80": true - }, - { - "Name": "4g", - "RegionID": 4, - "HostName": "derp4g.tailscale.com", - "IPv4": "185.40.234.113", - "IPv6": "2a00:dd80:20::8f", - "CanPort80": true - }, - { - "Name": "4i", - "RegionID": 4, - "HostName": "derp4i.tailscale.com", - "IPv4": "185.40.234.53", - "IPv6": "2a00:dd80:20::8a6", - "CanPort80": true - }, - { - "Name": "4f", - "RegionID": 4, - "HostName": "derp4f.tailscale.com", - "IPv4": "185.40.234.219", - "IPv6": "2a00:dd80:20::a25", - "CanPort80": true - } - ] - }, - "5": { - "RegionID": 5, - "RegionCode": "syd", - "RegionName": "Sydney", - "Latitude": -33.867778, - "Longitude": 151.21, - "Nodes": [ - { - "Name": "5f", - "RegionID": 5, - "HostName": "derp5f.tailscale.com", - "IPv4": "172.105.166.103", - "IPv6": "2400:8907::2000:ccff:fe1f:80da", - "CanPort80": true - }, - { - "Name": "5g", - "RegionID": 5, - "HostName": "derp5g.tailscale.com", - "IPv4": "172.105.169.57", - "IPv6": "2400:8907::2000:2fff:fea7:57f4", - "CanPort80": true - }, - { - "Name": "5e", - "RegionID": 5, - "HostName": "derp5e.tailscale.com", - "IPv4": "172.105.179.230", - "IPv6": "2400:8907::2000:ceff:fe8d:4f4e", - "CanPort80": true - } - ] - }, - "6": { - "RegionID": 6, - "RegionCode": "blr", - "RegionName": "Bengaluru", - "Latitude": 12.9716, - "Longitude": 77.5946, - "Nodes": [ - { - "Name": "6a", - "RegionID": 6, - "HostName": "derp6.tailscale.com", - "IPv4": "68.183.90.120", - "IPv6": "2400:6180:100:d0::982:d001", - "CanPort80": true - } - ] - }, - "7": { - "RegionID": 7, - "RegionCode": "tok", - "RegionName": "Tokyo", - "Latitude": 35.6764, - "Longitude": 139.65, - "Nodes": [ - { - "Name": "7g", - "RegionID": 7, - "HostName": "derp7g.tailscale.com", - "IPv4": "172.238.6.179", - "IPv6": "2600:3c18::2000:3fff:fe80:3ebd", - "CanPort80": true - }, - { - "Name": "7f", - "RegionID": 7, - "HostName": "derp7f.tailscale.com", - "IPv4": "172.238.6.34", - "IPv6": "2600:3c18::2000:acff:fe8e:3ed5", - "CanPort80": true - }, - { - "Name": "7h", - "RegionID": 7, - "HostName": "derp7h.tailscale.com", - "IPv4": "172.237.28.183", - "IPv6": "2600:3c18::2000:b1ff:fea9:4560", - "CanPort80": true - }, - { - "Name": "7e", - "RegionID": 7, - "HostName": "derp7e.tailscale.com", - "IPv4": "172.238.6.180", - "IPv6": "2600:3c18::2000:60ff:fe0f:6e83", - "STUNOnly": true, - "CanPort80": true - } - ] - }, - "8": { - "RegionID": 8, - "RegionCode": "lhr", - "RegionName": "London", - "Latitude": 51.5072, - "Longitude": 0.1276, - "Nodes": [ - { - "Name": "8f", - "RegionID": 8, - "HostName": "derp8f.tailscale.com", - "IPv4": "176.58.88.183", - "IPv6": "2a00:dd80:3a::dfa", - "CanPort80": true - }, - { - "Name": "8g", - "RegionID": 8, - "HostName": "derp8g.tailscale.com", - "IPv4": "176.58.92.254", - "IPv6": "2a00:dd80:3a::ed", - "CanPort80": true - }, - { - "Name": "8e", - "RegionID": 8, - "HostName": "derp8e.tailscale.com", - "IPv4": "176.58.92.144", - "IPv6": "2a00:dd80:3a::b33", - "CanPort80": true - } - ] - }, - "9": { - "RegionID": 9, - "RegionCode": "dfw", - "RegionName": "Dallas", - "Latitude": 32.779167, - "Longitude": -96.808889, - "Nodes": [ - { - "Name": "9e", - "RegionID": 9, - "HostName": "derp9e.tailscale.com", - "IPv4": "192.73.248.83", - "IPv6": "2607:f740:100::359", - "CanPort80": true - }, - { - "Name": "9f", - "RegionID": 9, - "HostName": "derp9f.tailscale.com", - "IPv4": "209.177.156.197", - "IPv6": "2607:f740:100::cad", - "CanPort80": true - }, - { - "Name": "9d", - "RegionID": 9, - "HostName": "derp9d.tailscale.com", - "IPv4": "209.177.156.94", - "IPv6": "2607:f740:100::c05", - "CanPort80": true - } - ] - } - } - }, - "DisplayMessages": null, - "TKAEnabled": false, - "TKAHead": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", - "Domain": "kratail2tid@passkey", - "DomainAuditLogID": "", - "UserProfiles": { - "7489538288452506": { - "ID": 7489538288452506, - "LoginName": "subnet-router.tail78f774.ts.net", - "DisplayName": "subnet-router" - } - } + "PacketFilterRules": 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.124.195.93": { - "peer_name": "exit-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-client/tailscaled.sock whois --json 100.124.195.93", - "response": null - }, - "100.116.18.24": { - "peer_name": "exit-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-client/tailscaled.sock whois --json 100.116.18.24", - "response": null - }, - "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.107.162.14": { - "peer_name": "group-a-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-client/tailscaled.sock whois --json 100.107.162.14", - "response": null - }, - "100.77.135.18": { - "peer_name": "group-b-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-client/tailscaled.sock whois --json 100.77.135.18", - "response": null - }, - "100.105.127.107": { - "peer_name": "multi-exit-router", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-client/tailscaled.sock whois --json 100.105.127.107", - "response": null - }, - "100.109.43.124": { - "peer_name": "router-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-client/tailscaled.sock whois --json 100.109.43.124", - "response": null - }, - "100.65.172.123": { - "peer_name": "router-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-client/tailscaled.sock whois --json 100.65.172.123", - "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 - } - }, "netmap": { - "SelfNode": { - "ID": 4031348162889210, - "StableID": "nf7BTTgoUY11CNTRL", - "Name": "tagged-client.tail78f774.ts.net.", - "User": 4031348162889210, - "Key": "nodekey:3011e53353e49142ea56ae11f81e0dceae0d667093d04ee086dcb1e9c5d3c844", - "DiscoKey": "discokey:64af337a7e8b61dce500da3b8f7d0a95fc6fe0e57c2f9e57b9b484a9b4acbe1e", - "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:47143", "10.65.0.27:47143", "172.17.0.1:47143"], - "Hostinfo": { - "Hostname": "tagged-client", - "RequestTags": ["tag:client"], - "Services": [ - { "Proto": "peerapi4", "Port": 41378 }, - { "Proto": "peerapi6", "Port": 41378 }, - { "Proto": "peerapi-dns-proxy", "Port": 1 } - ] - }, - "Created": "2026-02-23T00:13:11.017324028Z", - "Tags": ["tag:client"], - "MachineAuthorized": true, - "CapMap": { - "https://tailscale.com/cap/file-sharing": null, - "https://tailscale.com/cap/is-owner": null, - "https://tailscale.com/cap/ssh": null, - "https://tailscale.com/cap/tailnet-lock": null, - "probe-udp-lifetime": null, - "ssh-behavior-v1": null, - "ssh-env-vars": null, - "store-appc-routes": null, - "tailnet-display-name": ["kratail2tid@passkey"] - }, - "ComputedName": "tagged-client", - "ComputedNameWithHost": "tagged-client" - }, - "AllCaps": [ - "https://tailscale.com/cap/is-owner", - "probe-udp-lifetime", - "https://tailscale.com/cap/file-sharing", - "tailnet-display-name", - "https://tailscale.com/cap/ssh", - "store-appc-routes", - "ssh-behavior-v1", - "https://tailscale.com/cap/tailnet-lock", - "ssh-env-vars" - ], - "NodeKey": "nodekey:3011e53353e49142ea56ae11f81e0dceae0d667093d04ee086dcb1e9c5d3c844", - "MachineKey": "mkey:92af46ce21e67878315fe620545c207854ab6cec2d03adc106c50f64f9692711", "Peers": [], - "DNS": { - "Routes": { - "tail78f774.ts.net.": null, - "ts.net.": [{ "Addr": "199.247.155.53" }, { "Addr": "2620:111:8007::53" }] - }, - "Domains": ["tail78f774.ts.net"], - "Proxied": true, - "ExitNodeFilteredSet": [".ts.net", ".tailscale.net"] - }, - "PacketFilter": [], - "PacketFilterRules": null, - "SSHPolicy": { "rules": [] }, - "CollectServices": false, - "DERPMap": { - "Regions": { - "1": { - "RegionID": 1, - "RegionCode": "nyc", - "RegionName": "New York City", - "Latitude": 40.7128, - "Longitude": -74.006, - "Nodes": [ - { - "Name": "1h", - "RegionID": 1, - "HostName": "derp1h.tailscale.com", - "IPv4": "199.38.181.93", - "IPv6": "2607:f740:f::afd", - "CanPort80": true - }, - { - "Name": "1g", - "RegionID": 1, - "HostName": "derp1g.tailscale.com", - "IPv4": "209.177.145.120", - "IPv6": "2607:f740:f::3eb", - "CanPort80": true - }, - { - "Name": "1i", - "RegionID": 1, - "HostName": "derp1i.tailscale.com", - "IPv4": "199.38.181.103", - "IPv6": "2607:f740:f::e19", - "CanPort80": true - }, - { - "Name": "1f", - "RegionID": 1, - "HostName": "derp1f.tailscale.com", - "IPv4": "199.38.181.104", - "IPv6": "2607:f740:f::bc", - "CanPort80": true - } - ] - }, - "10": { - "RegionID": 10, - "RegionCode": "sea", - "RegionName": "Seattle", - "Latitude": 47.609722, - "Longitude": -122.333056, - "Nodes": [ - { - "Name": "10c", - "RegionID": 10, - "HostName": "derp10c.tailscale.com", - "IPv4": "192.73.240.121", - "IPv6": "2607:f740:14::40c", - "CanPort80": true - }, - { - "Name": "10d", - "RegionID": 10, - "HostName": "derp10d.tailscale.com", - "IPv4": "192.73.240.132", - "IPv6": "2607:f740:14::500", - "CanPort80": true - }, - { - "Name": "10b", - "RegionID": 10, - "HostName": "derp10b.tailscale.com", - "IPv4": "192.73.240.161", - "IPv6": "2607:f740:14::61c", - "CanPort80": true - } - ] - }, - "11": { - "RegionID": 11, - "RegionCode": "sao", - "RegionName": "São Paulo", - "Latitude": -23.55, - "Longitude": -46.633333, - "Nodes": [ - { - "Name": "11f", - "RegionID": 11, - "HostName": "derp11f.tailscale.com", - "IPv4": "172.237.61.197", - "IPv6": "2600:3c0d::2000:3bff:fe44:6166", - "CanPort80": true - }, - { - "Name": "11g", - "RegionID": 11, - "HostName": "derp11g.tailscale.com", - "IPv4": "172.237.61.190", - "IPv6": "2600:3c0d::2000:62ff:febe:2e67", - "CanPort80": true - }, - { - "Name": "11e", - "RegionID": 11, - "HostName": "derp11e.tailscale.com", - "IPv4": "172.237.61.194", - "IPv6": "2600:3c0d::2000:d2ff:fe43:1790", - "CanPort80": true - } - ] - }, - "12": { - "RegionID": 12, - "RegionCode": "ord", - "RegionName": "Chicago", - "Latitude": 41.881944, - "Longitude": -87.627778, - "Nodes": [ - { - "Name": "12e", - "RegionID": 12, - "HostName": "derp12e.tailscale.com", - "IPv4": "209.177.158.15", - "IPv6": "2607:f740:e::b17", - "CanPort80": true - }, - { - "Name": "12f", - "RegionID": 12, - "HostName": "derp12f.tailscale.com", - "IPv4": "199.38.182.118", - "IPv6": "2607:f740:e::4c8", - "CanPort80": true - }, - { - "Name": "12d", - "RegionID": 12, - "HostName": "derp12d.tailscale.com", - "IPv4": "209.177.158.246", - "IPv6": "2607:f740:e::811", - "CanPort80": true - } - ] - }, - "13": { - "RegionID": 13, - "RegionCode": "den", - "RegionName": "Denver", - "Latitude": 39.7392, - "Longitude": -104.9849, - "Nodes": [ - { - "Name": "13c", - "RegionID": 13, - "HostName": "derp13c.tailscale.com", - "IPv4": "192.73.242.28", - "IPv6": "2607:f740:16::5c", - "CanPort80": true - }, - { - "Name": "13d", - "RegionID": 13, - "HostName": "derp13d.tailscale.com", - "IPv4": "192.73.242.204", - "IPv6": "2607:f740:16::c23", - "CanPort80": true - }, - { - "Name": "13b", - "RegionID": 13, - "HostName": "derp13b.tailscale.com", - "IPv4": "192.73.242.187", - "IPv6": "2607:f740:16::640", - "CanPort80": true - } - ] - }, - "14": { - "RegionID": 14, - "RegionCode": "ams", - "RegionName": "Amsterdam", - "Latitude": 52.372778, - "Longitude": 4.893611, - "Nodes": [ - { - "Name": "14c", - "RegionID": 14, - "HostName": "derp14c.tailscale.com", - "IPv4": "176.58.93.147", - "IPv6": "2a00:dd80:3c::b09", - "CanPort80": true - }, - { - "Name": "14d", - "RegionID": 14, - "HostName": "derp14d.tailscale.com", - "IPv4": "176.58.93.154", - "IPv6": "2a00:dd80:3c::3d5", - "CanPort80": true - }, - { - "Name": "14b", - "RegionID": 14, - "HostName": "derp14b.tailscale.com", - "IPv4": "176.58.93.248", - "IPv6": "2a00:dd80:3c::807", - "CanPort80": true - } - ] - }, - "15": { - "RegionID": 15, - "RegionCode": "jnb", - "RegionName": "Johannesburg", - "Latitude": -26.204444, - "Longitude": 28.045556, - "Nodes": [ - { - "Name": "15c", - "RegionID": 15, - "HostName": "derp15c.tailscale.com", - "IPv4": "102.67.165.185", - "IPv6": "2c0f:edb0:0:10::b59", - "CanPort80": true - }, - { - "Name": "15d", - "RegionID": 15, - "HostName": "derp15d.tailscale.com", - "IPv4": "102.67.165.36", - "IPv6": "2c0f:edb0:0:10::599", - "CanPort80": true - }, - { - "Name": "15b", - "RegionID": 15, - "HostName": "derp15b.tailscale.com", - "IPv4": "102.67.165.90", - "IPv6": "2c0f:edb0:0:10::963", - "CanPort80": true - } - ] - }, - "16": { - "RegionID": 16, - "RegionCode": "mia", - "RegionName": "Miami", - "Latitude": 25.78, - "Longitude": -80.21, - "Nodes": [ - { - "Name": "16c", - "RegionID": 16, - "HostName": "derp16c.tailscale.com", - "IPv4": "192.73.243.229", - "IPv6": "2607:f740:17::4e4", - "CanPort80": true - }, - { - "Name": "16d", - "RegionID": 16, - "HostName": "derp16d.tailscale.com", - "IPv4": "192.73.243.141", - "IPv6": "2607:f740:17::475", - "CanPort80": true - }, - { - "Name": "16b", - "RegionID": 16, - "HostName": "derp16b.tailscale.com", - "IPv4": "192.73.243.135", - "IPv6": "2607:f740:17::476", - "CanPort80": true - } - ] - }, - "17": { - "RegionID": 17, - "RegionCode": "lax", - "RegionName": "Los Angeles", - "Latitude": 34.05, - "Longitude": -118.25, - "Nodes": [ - { - "Name": "17c", - "RegionID": 17, - "HostName": "derp17c.tailscale.com", - "IPv4": "208.111.40.12", - "IPv6": "2607:f740:c::10", - "CanPort80": true - }, - { - "Name": "17d", - "RegionID": 17, - "HostName": "derp17d.tailscale.com", - "IPv4": "208.111.40.216", - "IPv6": "2607:f740:c::e1b", - "CanPort80": true - }, - { - "Name": "17b", - "RegionID": 17, - "HostName": "derp17b.tailscale.com", - "IPv4": "192.73.244.245", - "IPv6": "2607:f740:c::646", - "CanPort80": true - } - ] - }, - "18": { - "RegionID": 18, - "RegionCode": "par", - "RegionName": "Paris", - "Latitude": 48.856667, - "Longitude": 2.352222, - "Nodes": [ - { - "Name": "18c", - "RegionID": 18, - "HostName": "derp18c.tailscale.com", - "IPv4": "176.58.90.207", - "IPv6": "2a00:dd80:3e::c19", - "CanPort80": true - }, - { - "Name": "18d", - "RegionID": 18, - "HostName": "derp18d.tailscale.com", - "IPv4": "176.58.90.104", - "IPv6": "2a00:dd80:3e::f2e", - "CanPort80": true - }, - { - "Name": "18b", - "RegionID": 18, - "HostName": "derp18b.tailscale.com", - "IPv4": "176.58.90.147", - "IPv6": "2a00:dd80:3e::363", - "CanPort80": true - } - ] - }, - "19": { - "RegionID": 19, - "RegionCode": "mad", - "RegionName": "Madrid", - "Latitude": 40.416944, - "Longitude": -3.703333, - "Nodes": [ - { - "Name": "19c", - "RegionID": 19, - "HostName": "derp19c.tailscale.com", - "IPv4": "45.159.97.61", - "IPv6": "2a00:dd80:14:10::20", - "CanPort80": true - }, - { - "Name": "19d", - "RegionID": 19, - "HostName": "derp19d.tailscale.com", - "IPv4": "45.159.97.233", - "IPv6": "2a00:dd80:14:10::34a", - "CanPort80": true - }, - { - "Name": "19b", - "RegionID": 19, - "HostName": "derp19b.tailscale.com", - "IPv4": "45.159.97.144", - "IPv6": "2a00:dd80:14:10::335", - "CanPort80": true - } - ] - }, - "2": { - "RegionID": 2, - "RegionCode": "sfo", - "RegionName": "San Francisco", - "Latitude": 37.7775, - "Longitude": -122.416389, - "Nodes": [ - { - "Name": "2e", - "RegionID": 2, - "HostName": "derp2e.tailscale.com", - "IPv4": "192.73.252.134", - "IPv6": "2607:f740:0:3f::44c", - "CanPort80": true - }, - { - "Name": "2f", - "RegionID": 2, - "HostName": "derp2f.tailscale.com", - "IPv4": "208.111.34.178", - "IPv6": "2607:f740:0:3f::f4", - "CanPort80": true - }, - { - "Name": "2d", - "RegionID": 2, - "HostName": "derp2d.tailscale.com", - "IPv4": "192.73.252.65", - "IPv6": "2607:f740:0:3f::287", - "CanPort80": true - } - ] - }, - "20": { - "RegionID": 20, - "RegionCode": "hkg", - "RegionName": "Hong Kong", - "Latitude": 22.3193, - "Longitude": 114.1694, - "Nodes": [ - { - "Name": "20c", - "RegionID": 20, - "HostName": "derp20c.tailscale.com", - "IPv4": "205.147.105.30", - "IPv6": "2403:2500:8000:1::5fb", - "CanPort80": true - }, - { - "Name": "20d", - "RegionID": 20, - "HostName": "derp20d.tailscale.com", - "IPv4": "205.147.105.78", - "IPv6": "2403:2500:8000:1::e9a", - "CanPort80": true - }, - { - "Name": "20b", - "RegionID": 20, - "HostName": "derp20b.tailscale.com", - "IPv4": "103.6.84.152", - "IPv6": "2403:2500:8000:1::ef6", - "CanPort80": true - } - ] - }, - "21": { - "RegionID": 21, - "RegionCode": "tor", - "RegionName": "Toronto", - "Latitude": 43.741667, - "Longitude": -79.373333, - "Nodes": [ - { - "Name": "21c", - "RegionID": 21, - "HostName": "derp21c.tailscale.com", - "IPv4": "162.248.221.215", - "IPv6": "2607:f740:50::f10", - "CanPort80": true - }, - { - "Name": "21d", - "RegionID": 21, - "HostName": "derp21d.tailscale.com", - "IPv4": "162.248.221.248", - "IPv6": "2607:f740:50::ca4", - "CanPort80": true - }, - { - "Name": "21b", - "RegionID": 21, - "HostName": "derp21b.tailscale.com", - "IPv4": "162.248.221.199", - "IPv6": "2607:f740:50::1d1", - "CanPort80": true - } - ] - }, - "22": { - "RegionID": 22, - "RegionCode": "waw", - "RegionName": "Warsaw", - "Latitude": 52.23, - "Longitude": 21.011111, - "Nodes": [ - { - "Name": "22c", - "RegionID": 22, - "HostName": "derp22c.tailscale.com", - "IPv4": "45.159.98.253", - "IPv6": "2a00:dd80:40:100::3f", - "CanPort80": true - }, - { - "Name": "22d", - "RegionID": 22, - "HostName": "derp22d.tailscale.com", - "IPv4": "45.159.98.145", - "IPv6": "2a00:dd80:40:100::211", - "CanPort80": true - }, - { - "Name": "22b", - "RegionID": 22, - "HostName": "derp22b.tailscale.com", - "IPv4": "45.159.98.196", - "IPv6": "2a00:dd80:40:100::316", - "CanPort80": true - } - ] - }, - "23": { - "RegionID": 23, - "RegionCode": "dbi", - "RegionName": "Dubai", - "Latitude": 25.263056, - "Longitude": 55.297222, - "Nodes": [ - { - "Name": "23c", - "RegionID": 23, - "HostName": "derp23c.tailscale.com", - "IPv4": "185.34.3.207", - "IPv6": "2a00:dd80:3f:100::a50", - "CanPort80": true - }, - { - "Name": "23d", - "RegionID": 23, - "HostName": "derp23d.tailscale.com", - "IPv4": "185.34.3.75", - "IPv6": "2a00:dd80:3f:100::97e", - "CanPort80": true - }, - { - "Name": "23b", - "RegionID": 23, - "HostName": "derp23b.tailscale.com", - "IPv4": "185.34.3.232", - "IPv6": "2a00:dd80:3f:100::76f", - "CanPort80": true - } - ] - }, - "24": { - "RegionID": 24, - "RegionCode": "hnl", - "RegionName": "Honolulu", - "Latitude": 21.306944, - "Longitude": -157.858333, - "Nodes": [ - { - "Name": "24c", - "RegionID": 24, - "HostName": "derp24c.tailscale.com", - "IPv4": "208.83.233.233", - "IPv6": "2001:19f0:c000:c591:5400:04ff:fe26:2c5f", - "CanPort80": true - }, - { - "Name": "24d", - "RegionID": 24, - "HostName": "derp24d.tailscale.com", - "IPv4": "208.72.155.133", - "IPv6": "2001:19f0:c000:c564:5400:04ff:fe26:2ba8", - "CanPort80": true - }, - { - "Name": "24b", - "RegionID": 24, - "HostName": "derp24b.tailscale.com", - "IPv4": "208.83.234.151", - "IPv6": "2001:19f0:c000:c586:5400:04ff:fe26:2ba6", - "CanPort80": true - } - ] - }, - "25": { - "RegionID": 25, - "RegionCode": "nai", - "RegionName": "Nairobi", - "Latitude": -1.286389, - "Longitude": 36.817222, - "Nodes": [ - { - "Name": "25c", - "RegionID": 25, - "HostName": "derp25c.tailscale.com", - "IPv4": "102.67.167.37", - "IPv6": "2c0f:edb0:2000:1::2c7", - "CanPort80": true - }, - { - "Name": "25d", - "RegionID": 25, - "HostName": "derp25d.tailscale.com", - "IPv4": "102.67.167.188", - "IPv6": "2c0f:edb0:2000:1::188", - "CanPort80": true - }, - { - "Name": "25b", - "RegionID": 25, - "HostName": "derp25b.tailscale.com", - "IPv4": "102.67.167.245", - "IPv6": "2c0f:edb0:2000:1::2e9", - "CanPort80": true - } - ] - }, - "26": { - "RegionID": 26, - "RegionCode": "nue", - "RegionName": "Nuremberg", - "Latitude": 49.453889, - "Longitude": 11.0775, - "Nodes": [ - { - "Name": "26c", - "RegionID": 26, - "HostName": "derp26c.tailscale.com", - "IPv4": "49.12.193.137", - "IPv6": "2a01:4f8:1c1c:5c70::1", - "CanPort80": true - }, - { - "Name": "26d", - "RegionID": 26, - "HostName": "derp26d.tailscale.com", - "IPv4": "49.13.204.141", - "IPv6": "2a01:4f8:1c0c:7d06::1", - "CanPort80": true - }, - { - "Name": "26b", - "RegionID": 26, - "HostName": "derp26b.tailscale.com", - "IPv4": "167.235.72.200", - "IPv6": "2a01:4f8:1c1c:47b6::1", - "CanPort80": true - } - ] - }, - "27": { - "RegionID": 27, - "RegionCode": "iad", - "RegionName": "Ashburn", - "Latitude": 39.03, - "Longitude": -77.471111, - "Nodes": [ - { - "Name": "27d", - "RegionID": 27, - "HostName": "derp27d.tailscale.com", - "IPv4": "178.156.152.106", - "IPv6": "2a01:4ff:f0:3c8e::1", - "CanPort80": true - }, - { - "Name": "27c", - "RegionID": 27, - "HostName": "derp27c.tailscale.com", - "IPv4": "178.156.152.91", - "IPv6": "2a01:4ff:f0:3913::1", - "CanPort80": true - }, - { - "Name": "27e", - "RegionID": 27, - "HostName": "derp27e.tailscale.com", - "IPv4": "178.156.134.232", - "IPv6": "2a01:4ff:f0:28d4::1", - "CanPort80": true - }, - { - "Name": "27b", - "RegionID": 27, - "HostName": "derp27b.tailscale.com", - "IPv4": "5.161.218.233", - "IPv6": "2a01:4ff:f0:3db9::1", - "CanPort80": true - } - ] - }, - "28": { - "RegionID": 28, - "RegionCode": "hel", - "RegionName": "Helsinki", - "Latitude": 60.170833, - "Longitude": 24.9375, - "Nodes": [ - { - "Name": "28c", - "RegionID": 28, - "HostName": "derp28c.tailscale.com", - "IPv4": "95.217.2.165", - "IPv6": "2a01:4f9:c012:cd74::1", - "CanPort80": true - }, - { - "Name": "28d", - "RegionID": 28, - "HostName": "derp28d.tailscale.com", - "IPv4": "157.180.28.32", - "IPv6": "2a01:4f9:c012:2e5b::1", - "CanPort80": true - }, - { - "Name": "28b", - "RegionID": 28, - "HostName": "derp28b.tailscale.com", - "IPv4": "65.109.143.62", - "IPv6": "2a01:4f9:c012:d55c::1", - "CanPort80": true - } - ] - }, - "3": { - "RegionID": 3, - "RegionCode": "sin", - "RegionName": "Singapore", - "Latitude": 1.3521, - "Longitude": 103.8198, - "Nodes": [ - { - "Name": "3g", - "RegionID": 3, - "HostName": "derp3g.tailscale.com", - "IPv4": "172.237.72.79", - "IPv6": "2600:3c15::2000:adff:fe08:6fab", - "CanPort80": true - }, - { - "Name": "3f", - "RegionID": 3, - "HostName": "derp3f.tailscale.com", - "IPv4": "172.237.72.8", - "IPv6": "2600:3c15::2000:53ff:fe48:a668", - "CanPort80": true - }, - { - "Name": "3h", - "RegionID": 3, - "HostName": "derp3h.tailscale.com", - "IPv4": "172.237.66.30", - "IPv6": "2600:3c15::2000:3dff:fe44:50aa", - "CanPort80": true - }, - { - "Name": "3e", - "RegionID": 3, - "HostName": "derp3e.tailscale.com", - "IPv4": "172.237.72.43", - "IPv6": "2600:3c15::2000:6cff:fee4:d799", - "CanPort80": true - } - ] - }, - "4": { - "RegionID": 4, - "RegionCode": "fra", - "RegionName": "Frankfurt", - "Latitude": 50.1109, - "Longitude": 8.6821, - "Nodes": [ - { - "Name": "4h", - "RegionID": 4, - "HostName": "derp4h.tailscale.com", - "IPv4": "185.40.234.77", - "IPv6": "2a00:dd80:20::bcf", - "CanPort80": true - }, - { - "Name": "4g", - "RegionID": 4, - "HostName": "derp4g.tailscale.com", - "IPv4": "185.40.234.113", - "IPv6": "2a00:dd80:20::8f", - "CanPort80": true - }, - { - "Name": "4i", - "RegionID": 4, - "HostName": "derp4i.tailscale.com", - "IPv4": "185.40.234.53", - "IPv6": "2a00:dd80:20::8a6", - "CanPort80": true - }, - { - "Name": "4f", - "RegionID": 4, - "HostName": "derp4f.tailscale.com", - "IPv4": "185.40.234.219", - "IPv6": "2a00:dd80:20::a25", - "CanPort80": true - } - ] - }, - "5": { - "RegionID": 5, - "RegionCode": "syd", - "RegionName": "Sydney", - "Latitude": -33.867778, - "Longitude": 151.21, - "Nodes": [ - { - "Name": "5f", - "RegionID": 5, - "HostName": "derp5f.tailscale.com", - "IPv4": "172.105.166.103", - "IPv6": "2400:8907::2000:ccff:fe1f:80da", - "CanPort80": true - }, - { - "Name": "5g", - "RegionID": 5, - "HostName": "derp5g.tailscale.com", - "IPv4": "172.105.169.57", - "IPv6": "2400:8907::2000:2fff:fea7:57f4", - "CanPort80": true - }, - { - "Name": "5e", - "RegionID": 5, - "HostName": "derp5e.tailscale.com", - "IPv4": "172.105.179.230", - "IPv6": "2400:8907::2000:ceff:fe8d:4f4e", - "CanPort80": true - } - ] - }, - "6": { - "RegionID": 6, - "RegionCode": "blr", - "RegionName": "Bengaluru", - "Latitude": 12.9716, - "Longitude": 77.5946, - "Nodes": [ - { - "Name": "6a", - "RegionID": 6, - "HostName": "derp6.tailscale.com", - "IPv4": "68.183.90.120", - "IPv6": "2400:6180:100:d0::982:d001", - "CanPort80": true - } - ] - }, - "7": { - "RegionID": 7, - "RegionCode": "tok", - "RegionName": "Tokyo", - "Latitude": 35.6764, - "Longitude": 139.65, - "Nodes": [ - { - "Name": "7g", - "RegionID": 7, - "HostName": "derp7g.tailscale.com", - "IPv4": "172.238.6.179", - "IPv6": "2600:3c18::2000:3fff:fe80:3ebd", - "CanPort80": true - }, - { - "Name": "7f", - "RegionID": 7, - "HostName": "derp7f.tailscale.com", - "IPv4": "172.238.6.34", - "IPv6": "2600:3c18::2000:acff:fe8e:3ed5", - "CanPort80": true - }, - { - "Name": "7h", - "RegionID": 7, - "HostName": "derp7h.tailscale.com", - "IPv4": "172.237.28.183", - "IPv6": "2600:3c18::2000:b1ff:fea9:4560", - "CanPort80": true - }, - { - "Name": "7e", - "RegionID": 7, - "HostName": "derp7e.tailscale.com", - "IPv4": "172.238.6.180", - "IPv6": "2600:3c18::2000:60ff:fe0f:6e83", - "STUNOnly": true, - "CanPort80": true - } - ] - }, - "8": { - "RegionID": 8, - "RegionCode": "lhr", - "RegionName": "London", - "Latitude": 51.5072, - "Longitude": 0.1276, - "Nodes": [ - { - "Name": "8f", - "RegionID": 8, - "HostName": "derp8f.tailscale.com", - "IPv4": "176.58.88.183", - "IPv6": "2a00:dd80:3a::dfa", - "CanPort80": true - }, - { - "Name": "8g", - "RegionID": 8, - "HostName": "derp8g.tailscale.com", - "IPv4": "176.58.92.254", - "IPv6": "2a00:dd80:3a::ed", - "CanPort80": true - }, - { - "Name": "8e", - "RegionID": 8, - "HostName": "derp8e.tailscale.com", - "IPv4": "176.58.92.144", - "IPv6": "2a00:dd80:3a::b33", - "CanPort80": true - } - ] - }, - "9": { - "RegionID": 9, - "RegionCode": "dfw", - "RegionName": "Dallas", - "Latitude": 32.779167, - "Longitude": -96.808889, - "Nodes": [ - { - "Name": "9e", - "RegionID": 9, - "HostName": "derp9e.tailscale.com", - "IPv4": "192.73.248.83", - "IPv6": "2607:f740:100::359", - "CanPort80": true - }, - { - "Name": "9f", - "RegionID": 9, - "HostName": "derp9f.tailscale.com", - "IPv4": "209.177.156.197", - "IPv6": "2607:f740:100::cad", - "CanPort80": true - }, - { - "Name": "9d", - "RegionID": 9, - "HostName": "derp9d.tailscale.com", - "IPv4": "209.177.156.94", - "IPv6": "2607:f740:100::c05", - "CanPort80": true - } - ] - } - } - }, - "DisplayMessages": null, - "TKAEnabled": false, - "TKAHead": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", - "Domain": "kratail2tid@passkey", - "DomainAuditLogID": "", - "UserProfiles": { - "4031348162889210": { - "ID": 4031348162889210, - "LoginName": "tagged-client.tail78f774.ts.net", - "DisplayName": "tagged-client" - } - } + "PacketFilterRules": 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.124.195.93": { - "peer_name": "exit-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-prod/tailscaled.sock whois --json 100.124.195.93", - "response": null - }, - "100.116.18.24": { - "peer_name": "exit-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-prod/tailscaled.sock whois --json 100.116.18.24", - "response": null - }, - "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.107.162.14": { - "peer_name": "group-a-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-prod/tailscaled.sock whois --json 100.107.162.14", - "response": null - }, - "100.77.135.18": { - "peer_name": "group-b-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-prod/tailscaled.sock whois --json 100.77.135.18", - "response": null - }, - "100.105.127.107": { - "peer_name": "multi-exit-router", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-prod/tailscaled.sock whois --json 100.105.127.107", - "response": null - }, - "100.109.43.124": { - "peer_name": "router-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-prod/tailscaled.sock whois --json 100.109.43.124", - "response": null - }, - "100.65.172.123": { - "peer_name": "router-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-prod/tailscaled.sock whois --json 100.65.172.123", - "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 - } - }, "netmap": { - "SelfNode": { - "ID": 301794218943819, - "StableID": "neJag6dgM311CNTRL", - "Name": "tagged-prod.tail78f774.ts.net.", - "User": 301794218943819, - "Key": "nodekey:54c79503322a5d0a9701ce19d11963cfff9c05667ac06ef976af86275ba7080e", - "DiscoKey": "discokey:5e4985009b42b7c82ffb2cb5fa735a90f967f6b3f886b71268ebbeffa324556b", - "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:46164", "10.65.0.27:46164", "172.17.0.1:46164"], - "Hostinfo": { - "Hostname": "tagged-prod", - "Services": [ - { "Proto": "peerapi4", "Port": 37678 }, - { "Proto": "peerapi6", "Port": 37678 }, - { "Proto": "peerapi-dns-proxy", "Port": 1 } - ] - }, - "Created": "2026-02-20T14:03:12.89283153Z", - "Tags": ["tag:prod"], - "MachineAuthorized": true, - "CapMap": { - "https://tailscale.com/cap/file-sharing": null, - "https://tailscale.com/cap/is-owner": null, - "https://tailscale.com/cap/ssh": null, - "https://tailscale.com/cap/tailnet-lock": null, - "probe-udp-lifetime": null, - "ssh-behavior-v1": null, - "ssh-env-vars": null, - "store-appc-routes": null, - "tailnet-display-name": ["kratail2tid@passkey"] - }, - "ComputedName": "tagged-prod", - "ComputedNameWithHost": "tagged-prod" - }, - "AllCaps": [ - "probe-udp-lifetime", - "https://tailscale.com/cap/file-sharing", - "ssh-env-vars", - "store-appc-routes", - "https://tailscale.com/cap/ssh", - "ssh-behavior-v1", - "https://tailscale.com/cap/tailnet-lock", - "tailnet-display-name", - "https://tailscale.com/cap/is-owner" - ], - "NodeKey": "nodekey:54c79503322a5d0a9701ce19d11963cfff9c05667ac06ef976af86275ba7080e", - "MachineKey": "mkey:af805e02d1594ab20eaf3e2df5b379eec6453fa649344fcd564b7bae20e46a63", "Peers": [], - "DNS": { - "Routes": { - "tail78f774.ts.net.": null, - "ts.net.": [{ "Addr": "199.247.155.53" }, { "Addr": "2620:111:8007::53" }] - }, - "Domains": ["tail78f774.ts.net"], - "Proxied": true, - "ExitNodeFilteredSet": [".ts.net", ".tailscale.net"] - }, - "PacketFilter": [], - "PacketFilterRules": null, - "SSHPolicy": { "rules": [] }, - "CollectServices": false, - "DERPMap": { - "Regions": { - "1": { - "RegionID": 1, - "RegionCode": "nyc", - "RegionName": "New York City", - "Latitude": 40.7128, - "Longitude": -74.006, - "Nodes": [ - { - "Name": "1h", - "RegionID": 1, - "HostName": "derp1h.tailscale.com", - "IPv4": "199.38.181.93", - "IPv6": "2607:f740:f::afd", - "CanPort80": true - }, - { - "Name": "1g", - "RegionID": 1, - "HostName": "derp1g.tailscale.com", - "IPv4": "209.177.145.120", - "IPv6": "2607:f740:f::3eb", - "CanPort80": true - }, - { - "Name": "1i", - "RegionID": 1, - "HostName": "derp1i.tailscale.com", - "IPv4": "199.38.181.103", - "IPv6": "2607:f740:f::e19", - "CanPort80": true - }, - { - "Name": "1f", - "RegionID": 1, - "HostName": "derp1f.tailscale.com", - "IPv4": "199.38.181.104", - "IPv6": "2607:f740:f::bc", - "CanPort80": true - } - ] - }, - "10": { - "RegionID": 10, - "RegionCode": "sea", - "RegionName": "Seattle", - "Latitude": 47.609722, - "Longitude": -122.333056, - "Nodes": [ - { - "Name": "10c", - "RegionID": 10, - "HostName": "derp10c.tailscale.com", - "IPv4": "192.73.240.121", - "IPv6": "2607:f740:14::40c", - "CanPort80": true - }, - { - "Name": "10d", - "RegionID": 10, - "HostName": "derp10d.tailscale.com", - "IPv4": "192.73.240.132", - "IPv6": "2607:f740:14::500", - "CanPort80": true - }, - { - "Name": "10b", - "RegionID": 10, - "HostName": "derp10b.tailscale.com", - "IPv4": "192.73.240.161", - "IPv6": "2607:f740:14::61c", - "CanPort80": true - } - ] - }, - "11": { - "RegionID": 11, - "RegionCode": "sao", - "RegionName": "São Paulo", - "Latitude": -23.55, - "Longitude": -46.633333, - "Nodes": [ - { - "Name": "11f", - "RegionID": 11, - "HostName": "derp11f.tailscale.com", - "IPv4": "172.237.61.197", - "IPv6": "2600:3c0d::2000:3bff:fe44:6166", - "CanPort80": true - }, - { - "Name": "11g", - "RegionID": 11, - "HostName": "derp11g.tailscale.com", - "IPv4": "172.237.61.190", - "IPv6": "2600:3c0d::2000:62ff:febe:2e67", - "CanPort80": true - }, - { - "Name": "11e", - "RegionID": 11, - "HostName": "derp11e.tailscale.com", - "IPv4": "172.237.61.194", - "IPv6": "2600:3c0d::2000:d2ff:fe43:1790", - "CanPort80": true - } - ] - }, - "12": { - "RegionID": 12, - "RegionCode": "ord", - "RegionName": "Chicago", - "Latitude": 41.881944, - "Longitude": -87.627778, - "Nodes": [ - { - "Name": "12e", - "RegionID": 12, - "HostName": "derp12e.tailscale.com", - "IPv4": "209.177.158.15", - "IPv6": "2607:f740:e::b17", - "CanPort80": true - }, - { - "Name": "12f", - "RegionID": 12, - "HostName": "derp12f.tailscale.com", - "IPv4": "199.38.182.118", - "IPv6": "2607:f740:e::4c8", - "CanPort80": true - }, - { - "Name": "12d", - "RegionID": 12, - "HostName": "derp12d.tailscale.com", - "IPv4": "209.177.158.246", - "IPv6": "2607:f740:e::811", - "CanPort80": true - } - ] - }, - "13": { - "RegionID": 13, - "RegionCode": "den", - "RegionName": "Denver", - "Latitude": 39.7392, - "Longitude": -104.9849, - "Nodes": [ - { - "Name": "13c", - "RegionID": 13, - "HostName": "derp13c.tailscale.com", - "IPv4": "192.73.242.28", - "IPv6": "2607:f740:16::5c", - "CanPort80": true - }, - { - "Name": "13d", - "RegionID": 13, - "HostName": "derp13d.tailscale.com", - "IPv4": "192.73.242.204", - "IPv6": "2607:f740:16::c23", - "CanPort80": true - }, - { - "Name": "13b", - "RegionID": 13, - "HostName": "derp13b.tailscale.com", - "IPv4": "192.73.242.187", - "IPv6": "2607:f740:16::640", - "CanPort80": true - } - ] - }, - "14": { - "RegionID": 14, - "RegionCode": "ams", - "RegionName": "Amsterdam", - "Latitude": 52.372778, - "Longitude": 4.893611, - "Nodes": [ - { - "Name": "14c", - "RegionID": 14, - "HostName": "derp14c.tailscale.com", - "IPv4": "176.58.93.147", - "IPv6": "2a00:dd80:3c::b09", - "CanPort80": true - }, - { - "Name": "14d", - "RegionID": 14, - "HostName": "derp14d.tailscale.com", - "IPv4": "176.58.93.154", - "IPv6": "2a00:dd80:3c::3d5", - "CanPort80": true - }, - { - "Name": "14b", - "RegionID": 14, - "HostName": "derp14b.tailscale.com", - "IPv4": "176.58.93.248", - "IPv6": "2a00:dd80:3c::807", - "CanPort80": true - } - ] - }, - "15": { - "RegionID": 15, - "RegionCode": "jnb", - "RegionName": "Johannesburg", - "Latitude": -26.204444, - "Longitude": 28.045556, - "Nodes": [ - { - "Name": "15c", - "RegionID": 15, - "HostName": "derp15c.tailscale.com", - "IPv4": "102.67.165.185", - "IPv6": "2c0f:edb0:0:10::b59", - "CanPort80": true - }, - { - "Name": "15d", - "RegionID": 15, - "HostName": "derp15d.tailscale.com", - "IPv4": "102.67.165.36", - "IPv6": "2c0f:edb0:0:10::599", - "CanPort80": true - }, - { - "Name": "15b", - "RegionID": 15, - "HostName": "derp15b.tailscale.com", - "IPv4": "102.67.165.90", - "IPv6": "2c0f:edb0:0:10::963", - "CanPort80": true - } - ] - }, - "16": { - "RegionID": 16, - "RegionCode": "mia", - "RegionName": "Miami", - "Latitude": 25.78, - "Longitude": -80.21, - "Nodes": [ - { - "Name": "16c", - "RegionID": 16, - "HostName": "derp16c.tailscale.com", - "IPv4": "192.73.243.229", - "IPv6": "2607:f740:17::4e4", - "CanPort80": true - }, - { - "Name": "16d", - "RegionID": 16, - "HostName": "derp16d.tailscale.com", - "IPv4": "192.73.243.141", - "IPv6": "2607:f740:17::475", - "CanPort80": true - }, - { - "Name": "16b", - "RegionID": 16, - "HostName": "derp16b.tailscale.com", - "IPv4": "192.73.243.135", - "IPv6": "2607:f740:17::476", - "CanPort80": true - } - ] - }, - "17": { - "RegionID": 17, - "RegionCode": "lax", - "RegionName": "Los Angeles", - "Latitude": 34.05, - "Longitude": -118.25, - "Nodes": [ - { - "Name": "17c", - "RegionID": 17, - "HostName": "derp17c.tailscale.com", - "IPv4": "208.111.40.12", - "IPv6": "2607:f740:c::10", - "CanPort80": true - }, - { - "Name": "17d", - "RegionID": 17, - "HostName": "derp17d.tailscale.com", - "IPv4": "208.111.40.216", - "IPv6": "2607:f740:c::e1b", - "CanPort80": true - }, - { - "Name": "17b", - "RegionID": 17, - "HostName": "derp17b.tailscale.com", - "IPv4": "192.73.244.245", - "IPv6": "2607:f740:c::646", - "CanPort80": true - } - ] - }, - "18": { - "RegionID": 18, - "RegionCode": "par", - "RegionName": "Paris", - "Latitude": 48.856667, - "Longitude": 2.352222, - "Nodes": [ - { - "Name": "18c", - "RegionID": 18, - "HostName": "derp18c.tailscale.com", - "IPv4": "176.58.90.207", - "IPv6": "2a00:dd80:3e::c19", - "CanPort80": true - }, - { - "Name": "18d", - "RegionID": 18, - "HostName": "derp18d.tailscale.com", - "IPv4": "176.58.90.104", - "IPv6": "2a00:dd80:3e::f2e", - "CanPort80": true - }, - { - "Name": "18b", - "RegionID": 18, - "HostName": "derp18b.tailscale.com", - "IPv4": "176.58.90.147", - "IPv6": "2a00:dd80:3e::363", - "CanPort80": true - } - ] - }, - "19": { - "RegionID": 19, - "RegionCode": "mad", - "RegionName": "Madrid", - "Latitude": 40.416944, - "Longitude": -3.703333, - "Nodes": [ - { - "Name": "19c", - "RegionID": 19, - "HostName": "derp19c.tailscale.com", - "IPv4": "45.159.97.61", - "IPv6": "2a00:dd80:14:10::20", - "CanPort80": true - }, - { - "Name": "19d", - "RegionID": 19, - "HostName": "derp19d.tailscale.com", - "IPv4": "45.159.97.233", - "IPv6": "2a00:dd80:14:10::34a", - "CanPort80": true - }, - { - "Name": "19b", - "RegionID": 19, - "HostName": "derp19b.tailscale.com", - "IPv4": "45.159.97.144", - "IPv6": "2a00:dd80:14:10::335", - "CanPort80": true - } - ] - }, - "2": { - "RegionID": 2, - "RegionCode": "sfo", - "RegionName": "San Francisco", - "Latitude": 37.7775, - "Longitude": -122.416389, - "Nodes": [ - { - "Name": "2e", - "RegionID": 2, - "HostName": "derp2e.tailscale.com", - "IPv4": "192.73.252.134", - "IPv6": "2607:f740:0:3f::44c", - "CanPort80": true - }, - { - "Name": "2f", - "RegionID": 2, - "HostName": "derp2f.tailscale.com", - "IPv4": "208.111.34.178", - "IPv6": "2607:f740:0:3f::f4", - "CanPort80": true - }, - { - "Name": "2d", - "RegionID": 2, - "HostName": "derp2d.tailscale.com", - "IPv4": "192.73.252.65", - "IPv6": "2607:f740:0:3f::287", - "CanPort80": true - } - ] - }, - "20": { - "RegionID": 20, - "RegionCode": "hkg", - "RegionName": "Hong Kong", - "Latitude": 22.3193, - "Longitude": 114.1694, - "Nodes": [ - { - "Name": "20c", - "RegionID": 20, - "HostName": "derp20c.tailscale.com", - "IPv4": "205.147.105.30", - "IPv6": "2403:2500:8000:1::5fb", - "CanPort80": true - }, - { - "Name": "20d", - "RegionID": 20, - "HostName": "derp20d.tailscale.com", - "IPv4": "205.147.105.78", - "IPv6": "2403:2500:8000:1::e9a", - "CanPort80": true - }, - { - "Name": "20b", - "RegionID": 20, - "HostName": "derp20b.tailscale.com", - "IPv4": "103.6.84.152", - "IPv6": "2403:2500:8000:1::ef6", - "CanPort80": true - } - ] - }, - "21": { - "RegionID": 21, - "RegionCode": "tor", - "RegionName": "Toronto", - "Latitude": 43.741667, - "Longitude": -79.373333, - "Nodes": [ - { - "Name": "21c", - "RegionID": 21, - "HostName": "derp21c.tailscale.com", - "IPv4": "162.248.221.215", - "IPv6": "2607:f740:50::f10", - "CanPort80": true - }, - { - "Name": "21d", - "RegionID": 21, - "HostName": "derp21d.tailscale.com", - "IPv4": "162.248.221.248", - "IPv6": "2607:f740:50::ca4", - "CanPort80": true - }, - { - "Name": "21b", - "RegionID": 21, - "HostName": "derp21b.tailscale.com", - "IPv4": "162.248.221.199", - "IPv6": "2607:f740:50::1d1", - "CanPort80": true - } - ] - }, - "22": { - "RegionID": 22, - "RegionCode": "waw", - "RegionName": "Warsaw", - "Latitude": 52.23, - "Longitude": 21.011111, - "Nodes": [ - { - "Name": "22c", - "RegionID": 22, - "HostName": "derp22c.tailscale.com", - "IPv4": "45.159.98.253", - "IPv6": "2a00:dd80:40:100::3f", - "CanPort80": true - }, - { - "Name": "22d", - "RegionID": 22, - "HostName": "derp22d.tailscale.com", - "IPv4": "45.159.98.145", - "IPv6": "2a00:dd80:40:100::211", - "CanPort80": true - }, - { - "Name": "22b", - "RegionID": 22, - "HostName": "derp22b.tailscale.com", - "IPv4": "45.159.98.196", - "IPv6": "2a00:dd80:40:100::316", - "CanPort80": true - } - ] - }, - "23": { - "RegionID": 23, - "RegionCode": "dbi", - "RegionName": "Dubai", - "Latitude": 25.263056, - "Longitude": 55.297222, - "Nodes": [ - { - "Name": "23c", - "RegionID": 23, - "HostName": "derp23c.tailscale.com", - "IPv4": "185.34.3.207", - "IPv6": "2a00:dd80:3f:100::a50", - "CanPort80": true - }, - { - "Name": "23d", - "RegionID": 23, - "HostName": "derp23d.tailscale.com", - "IPv4": "185.34.3.75", - "IPv6": "2a00:dd80:3f:100::97e", - "CanPort80": true - }, - { - "Name": "23b", - "RegionID": 23, - "HostName": "derp23b.tailscale.com", - "IPv4": "185.34.3.232", - "IPv6": "2a00:dd80:3f:100::76f", - "CanPort80": true - } - ] - }, - "24": { - "RegionID": 24, - "RegionCode": "hnl", - "RegionName": "Honolulu", - "Latitude": 21.306944, - "Longitude": -157.858333, - "Nodes": [ - { - "Name": "24c", - "RegionID": 24, - "HostName": "derp24c.tailscale.com", - "IPv4": "208.83.233.233", - "IPv6": "2001:19f0:c000:c591:5400:04ff:fe26:2c5f", - "CanPort80": true - }, - { - "Name": "24d", - "RegionID": 24, - "HostName": "derp24d.tailscale.com", - "IPv4": "208.72.155.133", - "IPv6": "2001:19f0:c000:c564:5400:04ff:fe26:2ba8", - "CanPort80": true - }, - { - "Name": "24b", - "RegionID": 24, - "HostName": "derp24b.tailscale.com", - "IPv4": "208.83.234.151", - "IPv6": "2001:19f0:c000:c586:5400:04ff:fe26:2ba6", - "CanPort80": true - } - ] - }, - "25": { - "RegionID": 25, - "RegionCode": "nai", - "RegionName": "Nairobi", - "Latitude": -1.286389, - "Longitude": 36.817222, - "Nodes": [ - { - "Name": "25c", - "RegionID": 25, - "HostName": "derp25c.tailscale.com", - "IPv4": "102.67.167.37", - "IPv6": "2c0f:edb0:2000:1::2c7", - "CanPort80": true - }, - { - "Name": "25d", - "RegionID": 25, - "HostName": "derp25d.tailscale.com", - "IPv4": "102.67.167.188", - "IPv6": "2c0f:edb0:2000:1::188", - "CanPort80": true - }, - { - "Name": "25b", - "RegionID": 25, - "HostName": "derp25b.tailscale.com", - "IPv4": "102.67.167.245", - "IPv6": "2c0f:edb0:2000:1::2e9", - "CanPort80": true - } - ] - }, - "26": { - "RegionID": 26, - "RegionCode": "nue", - "RegionName": "Nuremberg", - "Latitude": 49.453889, - "Longitude": 11.0775, - "Nodes": [ - { - "Name": "26c", - "RegionID": 26, - "HostName": "derp26c.tailscale.com", - "IPv4": "49.12.193.137", - "IPv6": "2a01:4f8:1c1c:5c70::1", - "CanPort80": true - }, - { - "Name": "26d", - "RegionID": 26, - "HostName": "derp26d.tailscale.com", - "IPv4": "49.13.204.141", - "IPv6": "2a01:4f8:1c0c:7d06::1", - "CanPort80": true - }, - { - "Name": "26b", - "RegionID": 26, - "HostName": "derp26b.tailscale.com", - "IPv4": "167.235.72.200", - "IPv6": "2a01:4f8:1c1c:47b6::1", - "CanPort80": true - } - ] - }, - "27": { - "RegionID": 27, - "RegionCode": "iad", - "RegionName": "Ashburn", - "Latitude": 39.03, - "Longitude": -77.471111, - "Nodes": [ - { - "Name": "27d", - "RegionID": 27, - "HostName": "derp27d.tailscale.com", - "IPv4": "178.156.152.106", - "IPv6": "2a01:4ff:f0:3c8e::1", - "CanPort80": true - }, - { - "Name": "27c", - "RegionID": 27, - "HostName": "derp27c.tailscale.com", - "IPv4": "178.156.152.91", - "IPv6": "2a01:4ff:f0:3913::1", - "CanPort80": true - }, - { - "Name": "27e", - "RegionID": 27, - "HostName": "derp27e.tailscale.com", - "IPv4": "178.156.134.232", - "IPv6": "2a01:4ff:f0:28d4::1", - "CanPort80": true - }, - { - "Name": "27b", - "RegionID": 27, - "HostName": "derp27b.tailscale.com", - "IPv4": "5.161.218.233", - "IPv6": "2a01:4ff:f0:3db9::1", - "CanPort80": true - } - ] - }, - "28": { - "RegionID": 28, - "RegionCode": "hel", - "RegionName": "Helsinki", - "Latitude": 60.170833, - "Longitude": 24.9375, - "Nodes": [ - { - "Name": "28c", - "RegionID": 28, - "HostName": "derp28c.tailscale.com", - "IPv4": "95.217.2.165", - "IPv6": "2a01:4f9:c012:cd74::1", - "CanPort80": true - }, - { - "Name": "28d", - "RegionID": 28, - "HostName": "derp28d.tailscale.com", - "IPv4": "157.180.28.32", - "IPv6": "2a01:4f9:c012:2e5b::1", - "CanPort80": true - }, - { - "Name": "28b", - "RegionID": 28, - "HostName": "derp28b.tailscale.com", - "IPv4": "65.109.143.62", - "IPv6": "2a01:4f9:c012:d55c::1", - "CanPort80": true - } - ] - }, - "3": { - "RegionID": 3, - "RegionCode": "sin", - "RegionName": "Singapore", - "Latitude": 1.3521, - "Longitude": 103.8198, - "Nodes": [ - { - "Name": "3g", - "RegionID": 3, - "HostName": "derp3g.tailscale.com", - "IPv4": "172.237.72.79", - "IPv6": "2600:3c15::2000:adff:fe08:6fab", - "CanPort80": true - }, - { - "Name": "3f", - "RegionID": 3, - "HostName": "derp3f.tailscale.com", - "IPv4": "172.237.72.8", - "IPv6": "2600:3c15::2000:53ff:fe48:a668", - "CanPort80": true - }, - { - "Name": "3h", - "RegionID": 3, - "HostName": "derp3h.tailscale.com", - "IPv4": "172.237.66.30", - "IPv6": "2600:3c15::2000:3dff:fe44:50aa", - "CanPort80": true - }, - { - "Name": "3e", - "RegionID": 3, - "HostName": "derp3e.tailscale.com", - "IPv4": "172.237.72.43", - "IPv6": "2600:3c15::2000:6cff:fee4:d799", - "CanPort80": true - } - ] - }, - "4": { - "RegionID": 4, - "RegionCode": "fra", - "RegionName": "Frankfurt", - "Latitude": 50.1109, - "Longitude": 8.6821, - "Nodes": [ - { - "Name": "4h", - "RegionID": 4, - "HostName": "derp4h.tailscale.com", - "IPv4": "185.40.234.77", - "IPv6": "2a00:dd80:20::bcf", - "CanPort80": true - }, - { - "Name": "4g", - "RegionID": 4, - "HostName": "derp4g.tailscale.com", - "IPv4": "185.40.234.113", - "IPv6": "2a00:dd80:20::8f", - "CanPort80": true - }, - { - "Name": "4i", - "RegionID": 4, - "HostName": "derp4i.tailscale.com", - "IPv4": "185.40.234.53", - "IPv6": "2a00:dd80:20::8a6", - "CanPort80": true - }, - { - "Name": "4f", - "RegionID": 4, - "HostName": "derp4f.tailscale.com", - "IPv4": "185.40.234.219", - "IPv6": "2a00:dd80:20::a25", - "CanPort80": true - } - ] - }, - "5": { - "RegionID": 5, - "RegionCode": "syd", - "RegionName": "Sydney", - "Latitude": -33.867778, - "Longitude": 151.21, - "Nodes": [ - { - "Name": "5f", - "RegionID": 5, - "HostName": "derp5f.tailscale.com", - "IPv4": "172.105.166.103", - "IPv6": "2400:8907::2000:ccff:fe1f:80da", - "CanPort80": true - }, - { - "Name": "5g", - "RegionID": 5, - "HostName": "derp5g.tailscale.com", - "IPv4": "172.105.169.57", - "IPv6": "2400:8907::2000:2fff:fea7:57f4", - "CanPort80": true - }, - { - "Name": "5e", - "RegionID": 5, - "HostName": "derp5e.tailscale.com", - "IPv4": "172.105.179.230", - "IPv6": "2400:8907::2000:ceff:fe8d:4f4e", - "CanPort80": true - } - ] - }, - "6": { - "RegionID": 6, - "RegionCode": "blr", - "RegionName": "Bengaluru", - "Latitude": 12.9716, - "Longitude": 77.5946, - "Nodes": [ - { - "Name": "6a", - "RegionID": 6, - "HostName": "derp6.tailscale.com", - "IPv4": "68.183.90.120", - "IPv6": "2400:6180:100:d0::982:d001", - "CanPort80": true - } - ] - }, - "7": { - "RegionID": 7, - "RegionCode": "tok", - "RegionName": "Tokyo", - "Latitude": 35.6764, - "Longitude": 139.65, - "Nodes": [ - { - "Name": "7g", - "RegionID": 7, - "HostName": "derp7g.tailscale.com", - "IPv4": "172.238.6.179", - "IPv6": "2600:3c18::2000:3fff:fe80:3ebd", - "CanPort80": true - }, - { - "Name": "7f", - "RegionID": 7, - "HostName": "derp7f.tailscale.com", - "IPv4": "172.238.6.34", - "IPv6": "2600:3c18::2000:acff:fe8e:3ed5", - "CanPort80": true - }, - { - "Name": "7h", - "RegionID": 7, - "HostName": "derp7h.tailscale.com", - "IPv4": "172.237.28.183", - "IPv6": "2600:3c18::2000:b1ff:fea9:4560", - "CanPort80": true - }, - { - "Name": "7e", - "RegionID": 7, - "HostName": "derp7e.tailscale.com", - "IPv4": "172.238.6.180", - "IPv6": "2600:3c18::2000:60ff:fe0f:6e83", - "STUNOnly": true, - "CanPort80": true - } - ] - }, - "8": { - "RegionID": 8, - "RegionCode": "lhr", - "RegionName": "London", - "Latitude": 51.5072, - "Longitude": 0.1276, - "Nodes": [ - { - "Name": "8f", - "RegionID": 8, - "HostName": "derp8f.tailscale.com", - "IPv4": "176.58.88.183", - "IPv6": "2a00:dd80:3a::dfa", - "CanPort80": true - }, - { - "Name": "8g", - "RegionID": 8, - "HostName": "derp8g.tailscale.com", - "IPv4": "176.58.92.254", - "IPv6": "2a00:dd80:3a::ed", - "CanPort80": true - }, - { - "Name": "8e", - "RegionID": 8, - "HostName": "derp8e.tailscale.com", - "IPv4": "176.58.92.144", - "IPv6": "2a00:dd80:3a::b33", - "CanPort80": true - } - ] - }, - "9": { - "RegionID": 9, - "RegionCode": "dfw", - "RegionName": "Dallas", - "Latitude": 32.779167, - "Longitude": -96.808889, - "Nodes": [ - { - "Name": "9e", - "RegionID": 9, - "HostName": "derp9e.tailscale.com", - "IPv4": "192.73.248.83", - "IPv6": "2607:f740:100::359", - "CanPort80": true - }, - { - "Name": "9f", - "RegionID": 9, - "HostName": "derp9f.tailscale.com", - "IPv4": "209.177.156.197", - "IPv6": "2607:f740:100::cad", - "CanPort80": true - }, - { - "Name": "9d", - "RegionID": 9, - "HostName": "derp9d.tailscale.com", - "IPv4": "209.177.156.94", - "IPv6": "2607:f740:100::c05", - "CanPort80": true - } - ] - } - } - }, - "DisplayMessages": null, - "TKAEnabled": false, - "TKAHead": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", - "Domain": "kratail2tid@passkey", - "DomainAuditLogID": "", - "UserProfiles": { - "301794218943819": { - "ID": 301794218943819, - "LoginName": "tagged-prod.tail78f774.ts.net", - "DisplayName": "tagged-prod" - } - } + "PacketFilterRules": 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.124.195.93": { - "peer_name": "exit-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-server/tailscaled.sock whois --json 100.124.195.93", - "response": null - }, - "100.116.18.24": { - "peer_name": "exit-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-server/tailscaled.sock whois --json 100.116.18.24", - "response": null - }, - "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.107.162.14": { - "peer_name": "group-a-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-server/tailscaled.sock whois --json 100.107.162.14", - "response": null - }, - "100.77.135.18": { - "peer_name": "group-b-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-server/tailscaled.sock whois --json 100.77.135.18", - "response": null - }, - "100.105.127.107": { - "peer_name": "multi-exit-router", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-server/tailscaled.sock whois --json 100.105.127.107", - "response": null - }, - "100.109.43.124": { - "peer_name": "router-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-server/tailscaled.sock whois --json 100.109.43.124", - "response": null - }, - "100.65.172.123": { - "peer_name": "router-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-server/tailscaled.sock whois --json 100.65.172.123", - "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 - } - }, "netmap": { - "SelfNode": { - "ID": 1440249486084758, - "StableID": "nXRbBtuHFC11CNTRL", - "Name": "tagged-server.tail78f774.ts.net.", - "User": 1440249486084758, - "Key": "nodekey:7d5c34b3e8082069d0a82838165c33f8e1b5eb32c6211c2d23d4fe8fb9ec4a19", - "DiscoKey": "discokey:aa5732e314175928eff41cc8f8a7b6edd4694b7d00e420a6573ecc11a88cb203", - "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:57971", "10.65.0.27:57971", "172.17.0.1:57971"], - "Hostinfo": { - "Hostname": "tagged-server", - "Services": [ - { "Proto": "peerapi4", "Port": 46499 }, - { "Proto": "peerapi6", "Port": 46499 }, - { "Proto": "peerapi-dns-proxy", "Port": 1 } - ] - }, - "Created": "2026-01-23T10:10:26.365653609Z", - "Tags": ["tag:server"], - "MachineAuthorized": true, - "CapMap": { - "https://tailscale.com/cap/file-sharing": null, - "https://tailscale.com/cap/is-owner": null, - "https://tailscale.com/cap/ssh": null, - "https://tailscale.com/cap/tailnet-lock": null, - "probe-udp-lifetime": null, - "ssh-behavior-v1": null, - "ssh-env-vars": null, - "store-appc-routes": null, - "tailnet-display-name": ["kratail2tid@passkey"] - }, - "ComputedName": "tagged-server", - "ComputedNameWithHost": "tagged-server" - }, - "AllCaps": [ - "probe-udp-lifetime", - "store-appc-routes", - "tailnet-display-name", - "https://tailscale.com/cap/file-sharing", - "https://tailscale.com/cap/ssh", - "ssh-behavior-v1", - "ssh-env-vars", - "https://tailscale.com/cap/is-owner", - "https://tailscale.com/cap/tailnet-lock" - ], - "NodeKey": "nodekey:7d5c34b3e8082069d0a82838165c33f8e1b5eb32c6211c2d23d4fe8fb9ec4a19", - "MachineKey": "mkey:7d9c55c88bb618638f3f049b95c797f64eb0259810146d2644fef3e53acfdf6b", "Peers": [], - "DNS": { - "Routes": { - "tail78f774.ts.net.": null, - "ts.net.": [{ "Addr": "199.247.155.53" }, { "Addr": "2620:111:8007::53" }] - }, - "Domains": ["tail78f774.ts.net"], - "Proxied": true, - "ExitNodeFilteredSet": [".ts.net", ".tailscale.net"] - }, - "PacketFilter": [], - "PacketFilterRules": null, - "SSHPolicy": { "rules": [] }, - "CollectServices": false, - "DERPMap": { - "Regions": { - "1": { - "RegionID": 1, - "RegionCode": "nyc", - "RegionName": "New York City", - "Latitude": 40.7128, - "Longitude": -74.006, - "Nodes": [ - { - "Name": "1h", - "RegionID": 1, - "HostName": "derp1h.tailscale.com", - "IPv4": "199.38.181.93", - "IPv6": "2607:f740:f::afd", - "CanPort80": true - }, - { - "Name": "1g", - "RegionID": 1, - "HostName": "derp1g.tailscale.com", - "IPv4": "209.177.145.120", - "IPv6": "2607:f740:f::3eb", - "CanPort80": true - }, - { - "Name": "1i", - "RegionID": 1, - "HostName": "derp1i.tailscale.com", - "IPv4": "199.38.181.103", - "IPv6": "2607:f740:f::e19", - "CanPort80": true - }, - { - "Name": "1f", - "RegionID": 1, - "HostName": "derp1f.tailscale.com", - "IPv4": "199.38.181.104", - "IPv6": "2607:f740:f::bc", - "CanPort80": true - } - ] - }, - "10": { - "RegionID": 10, - "RegionCode": "sea", - "RegionName": "Seattle", - "Latitude": 47.609722, - "Longitude": -122.333056, - "Nodes": [ - { - "Name": "10c", - "RegionID": 10, - "HostName": "derp10c.tailscale.com", - "IPv4": "192.73.240.121", - "IPv6": "2607:f740:14::40c", - "CanPort80": true - }, - { - "Name": "10d", - "RegionID": 10, - "HostName": "derp10d.tailscale.com", - "IPv4": "192.73.240.132", - "IPv6": "2607:f740:14::500", - "CanPort80": true - }, - { - "Name": "10b", - "RegionID": 10, - "HostName": "derp10b.tailscale.com", - "IPv4": "192.73.240.161", - "IPv6": "2607:f740:14::61c", - "CanPort80": true - } - ] - }, - "11": { - "RegionID": 11, - "RegionCode": "sao", - "RegionName": "São Paulo", - "Latitude": -23.55, - "Longitude": -46.633333, - "Nodes": [ - { - "Name": "11f", - "RegionID": 11, - "HostName": "derp11f.tailscale.com", - "IPv4": "172.237.61.197", - "IPv6": "2600:3c0d::2000:3bff:fe44:6166", - "CanPort80": true - }, - { - "Name": "11g", - "RegionID": 11, - "HostName": "derp11g.tailscale.com", - "IPv4": "172.237.61.190", - "IPv6": "2600:3c0d::2000:62ff:febe:2e67", - "CanPort80": true - }, - { - "Name": "11e", - "RegionID": 11, - "HostName": "derp11e.tailscale.com", - "IPv4": "172.237.61.194", - "IPv6": "2600:3c0d::2000:d2ff:fe43:1790", - "CanPort80": true - } - ] - }, - "12": { - "RegionID": 12, - "RegionCode": "ord", - "RegionName": "Chicago", - "Latitude": 41.881944, - "Longitude": -87.627778, - "Nodes": [ - { - "Name": "12e", - "RegionID": 12, - "HostName": "derp12e.tailscale.com", - "IPv4": "209.177.158.15", - "IPv6": "2607:f740:e::b17", - "CanPort80": true - }, - { - "Name": "12f", - "RegionID": 12, - "HostName": "derp12f.tailscale.com", - "IPv4": "199.38.182.118", - "IPv6": "2607:f740:e::4c8", - "CanPort80": true - }, - { - "Name": "12d", - "RegionID": 12, - "HostName": "derp12d.tailscale.com", - "IPv4": "209.177.158.246", - "IPv6": "2607:f740:e::811", - "CanPort80": true - } - ] - }, - "13": { - "RegionID": 13, - "RegionCode": "den", - "RegionName": "Denver", - "Latitude": 39.7392, - "Longitude": -104.9849, - "Nodes": [ - { - "Name": "13c", - "RegionID": 13, - "HostName": "derp13c.tailscale.com", - "IPv4": "192.73.242.28", - "IPv6": "2607:f740:16::5c", - "CanPort80": true - }, - { - "Name": "13d", - "RegionID": 13, - "HostName": "derp13d.tailscale.com", - "IPv4": "192.73.242.204", - "IPv6": "2607:f740:16::c23", - "CanPort80": true - }, - { - "Name": "13b", - "RegionID": 13, - "HostName": "derp13b.tailscale.com", - "IPv4": "192.73.242.187", - "IPv6": "2607:f740:16::640", - "CanPort80": true - } - ] - }, - "14": { - "RegionID": 14, - "RegionCode": "ams", - "RegionName": "Amsterdam", - "Latitude": 52.372778, - "Longitude": 4.893611, - "Nodes": [ - { - "Name": "14c", - "RegionID": 14, - "HostName": "derp14c.tailscale.com", - "IPv4": "176.58.93.147", - "IPv6": "2a00:dd80:3c::b09", - "CanPort80": true - }, - { - "Name": "14d", - "RegionID": 14, - "HostName": "derp14d.tailscale.com", - "IPv4": "176.58.93.154", - "IPv6": "2a00:dd80:3c::3d5", - "CanPort80": true - }, - { - "Name": "14b", - "RegionID": 14, - "HostName": "derp14b.tailscale.com", - "IPv4": "176.58.93.248", - "IPv6": "2a00:dd80:3c::807", - "CanPort80": true - } - ] - }, - "15": { - "RegionID": 15, - "RegionCode": "jnb", - "RegionName": "Johannesburg", - "Latitude": -26.204444, - "Longitude": 28.045556, - "Nodes": [ - { - "Name": "15c", - "RegionID": 15, - "HostName": "derp15c.tailscale.com", - "IPv4": "102.67.165.185", - "IPv6": "2c0f:edb0:0:10::b59", - "CanPort80": true - }, - { - "Name": "15d", - "RegionID": 15, - "HostName": "derp15d.tailscale.com", - "IPv4": "102.67.165.36", - "IPv6": "2c0f:edb0:0:10::599", - "CanPort80": true - }, - { - "Name": "15b", - "RegionID": 15, - "HostName": "derp15b.tailscale.com", - "IPv4": "102.67.165.90", - "IPv6": "2c0f:edb0:0:10::963", - "CanPort80": true - } - ] - }, - "16": { - "RegionID": 16, - "RegionCode": "mia", - "RegionName": "Miami", - "Latitude": 25.78, - "Longitude": -80.21, - "Nodes": [ - { - "Name": "16c", - "RegionID": 16, - "HostName": "derp16c.tailscale.com", - "IPv4": "192.73.243.229", - "IPv6": "2607:f740:17::4e4", - "CanPort80": true - }, - { - "Name": "16d", - "RegionID": 16, - "HostName": "derp16d.tailscale.com", - "IPv4": "192.73.243.141", - "IPv6": "2607:f740:17::475", - "CanPort80": true - }, - { - "Name": "16b", - "RegionID": 16, - "HostName": "derp16b.tailscale.com", - "IPv4": "192.73.243.135", - "IPv6": "2607:f740:17::476", - "CanPort80": true - } - ] - }, - "17": { - "RegionID": 17, - "RegionCode": "lax", - "RegionName": "Los Angeles", - "Latitude": 34.05, - "Longitude": -118.25, - "Nodes": [ - { - "Name": "17c", - "RegionID": 17, - "HostName": "derp17c.tailscale.com", - "IPv4": "208.111.40.12", - "IPv6": "2607:f740:c::10", - "CanPort80": true - }, - { - "Name": "17d", - "RegionID": 17, - "HostName": "derp17d.tailscale.com", - "IPv4": "208.111.40.216", - "IPv6": "2607:f740:c::e1b", - "CanPort80": true - }, - { - "Name": "17b", - "RegionID": 17, - "HostName": "derp17b.tailscale.com", - "IPv4": "192.73.244.245", - "IPv6": "2607:f740:c::646", - "CanPort80": true - } - ] - }, - "18": { - "RegionID": 18, - "RegionCode": "par", - "RegionName": "Paris", - "Latitude": 48.856667, - "Longitude": 2.352222, - "Nodes": [ - { - "Name": "18c", - "RegionID": 18, - "HostName": "derp18c.tailscale.com", - "IPv4": "176.58.90.207", - "IPv6": "2a00:dd80:3e::c19", - "CanPort80": true - }, - { - "Name": "18d", - "RegionID": 18, - "HostName": "derp18d.tailscale.com", - "IPv4": "176.58.90.104", - "IPv6": "2a00:dd80:3e::f2e", - "CanPort80": true - }, - { - "Name": "18b", - "RegionID": 18, - "HostName": "derp18b.tailscale.com", - "IPv4": "176.58.90.147", - "IPv6": "2a00:dd80:3e::363", - "CanPort80": true - } - ] - }, - "19": { - "RegionID": 19, - "RegionCode": "mad", - "RegionName": "Madrid", - "Latitude": 40.416944, - "Longitude": -3.703333, - "Nodes": [ - { - "Name": "19c", - "RegionID": 19, - "HostName": "derp19c.tailscale.com", - "IPv4": "45.159.97.61", - "IPv6": "2a00:dd80:14:10::20", - "CanPort80": true - }, - { - "Name": "19d", - "RegionID": 19, - "HostName": "derp19d.tailscale.com", - "IPv4": "45.159.97.233", - "IPv6": "2a00:dd80:14:10::34a", - "CanPort80": true - }, - { - "Name": "19b", - "RegionID": 19, - "HostName": "derp19b.tailscale.com", - "IPv4": "45.159.97.144", - "IPv6": "2a00:dd80:14:10::335", - "CanPort80": true - } - ] - }, - "2": { - "RegionID": 2, - "RegionCode": "sfo", - "RegionName": "San Francisco", - "Latitude": 37.7775, - "Longitude": -122.416389, - "Nodes": [ - { - "Name": "2e", - "RegionID": 2, - "HostName": "derp2e.tailscale.com", - "IPv4": "192.73.252.134", - "IPv6": "2607:f740:0:3f::44c", - "CanPort80": true - }, - { - "Name": "2f", - "RegionID": 2, - "HostName": "derp2f.tailscale.com", - "IPv4": "208.111.34.178", - "IPv6": "2607:f740:0:3f::f4", - "CanPort80": true - }, - { - "Name": "2d", - "RegionID": 2, - "HostName": "derp2d.tailscale.com", - "IPv4": "192.73.252.65", - "IPv6": "2607:f740:0:3f::287", - "CanPort80": true - } - ] - }, - "20": { - "RegionID": 20, - "RegionCode": "hkg", - "RegionName": "Hong Kong", - "Latitude": 22.3193, - "Longitude": 114.1694, - "Nodes": [ - { - "Name": "20c", - "RegionID": 20, - "HostName": "derp20c.tailscale.com", - "IPv4": "205.147.105.30", - "IPv6": "2403:2500:8000:1::5fb", - "CanPort80": true - }, - { - "Name": "20d", - "RegionID": 20, - "HostName": "derp20d.tailscale.com", - "IPv4": "205.147.105.78", - "IPv6": "2403:2500:8000:1::e9a", - "CanPort80": true - }, - { - "Name": "20b", - "RegionID": 20, - "HostName": "derp20b.tailscale.com", - "IPv4": "103.6.84.152", - "IPv6": "2403:2500:8000:1::ef6", - "CanPort80": true - } - ] - }, - "21": { - "RegionID": 21, - "RegionCode": "tor", - "RegionName": "Toronto", - "Latitude": 43.741667, - "Longitude": -79.373333, - "Nodes": [ - { - "Name": "21c", - "RegionID": 21, - "HostName": "derp21c.tailscale.com", - "IPv4": "162.248.221.215", - "IPv6": "2607:f740:50::f10", - "CanPort80": true - }, - { - "Name": "21d", - "RegionID": 21, - "HostName": "derp21d.tailscale.com", - "IPv4": "162.248.221.248", - "IPv6": "2607:f740:50::ca4", - "CanPort80": true - }, - { - "Name": "21b", - "RegionID": 21, - "HostName": "derp21b.tailscale.com", - "IPv4": "162.248.221.199", - "IPv6": "2607:f740:50::1d1", - "CanPort80": true - } - ] - }, - "22": { - "RegionID": 22, - "RegionCode": "waw", - "RegionName": "Warsaw", - "Latitude": 52.23, - "Longitude": 21.011111, - "Nodes": [ - { - "Name": "22c", - "RegionID": 22, - "HostName": "derp22c.tailscale.com", - "IPv4": "45.159.98.253", - "IPv6": "2a00:dd80:40:100::3f", - "CanPort80": true - }, - { - "Name": "22d", - "RegionID": 22, - "HostName": "derp22d.tailscale.com", - "IPv4": "45.159.98.145", - "IPv6": "2a00:dd80:40:100::211", - "CanPort80": true - }, - { - "Name": "22b", - "RegionID": 22, - "HostName": "derp22b.tailscale.com", - "IPv4": "45.159.98.196", - "IPv6": "2a00:dd80:40:100::316", - "CanPort80": true - } - ] - }, - "23": { - "RegionID": 23, - "RegionCode": "dbi", - "RegionName": "Dubai", - "Latitude": 25.263056, - "Longitude": 55.297222, - "Nodes": [ - { - "Name": "23c", - "RegionID": 23, - "HostName": "derp23c.tailscale.com", - "IPv4": "185.34.3.207", - "IPv6": "2a00:dd80:3f:100::a50", - "CanPort80": true - }, - { - "Name": "23d", - "RegionID": 23, - "HostName": "derp23d.tailscale.com", - "IPv4": "185.34.3.75", - "IPv6": "2a00:dd80:3f:100::97e", - "CanPort80": true - }, - { - "Name": "23b", - "RegionID": 23, - "HostName": "derp23b.tailscale.com", - "IPv4": "185.34.3.232", - "IPv6": "2a00:dd80:3f:100::76f", - "CanPort80": true - } - ] - }, - "24": { - "RegionID": 24, - "RegionCode": "hnl", - "RegionName": "Honolulu", - "Latitude": 21.306944, - "Longitude": -157.858333, - "Nodes": [ - { - "Name": "24c", - "RegionID": 24, - "HostName": "derp24c.tailscale.com", - "IPv4": "208.83.233.233", - "IPv6": "2001:19f0:c000:c591:5400:04ff:fe26:2c5f", - "CanPort80": true - }, - { - "Name": "24d", - "RegionID": 24, - "HostName": "derp24d.tailscale.com", - "IPv4": "208.72.155.133", - "IPv6": "2001:19f0:c000:c564:5400:04ff:fe26:2ba8", - "CanPort80": true - }, - { - "Name": "24b", - "RegionID": 24, - "HostName": "derp24b.tailscale.com", - "IPv4": "208.83.234.151", - "IPv6": "2001:19f0:c000:c586:5400:04ff:fe26:2ba6", - "CanPort80": true - } - ] - }, - "25": { - "RegionID": 25, - "RegionCode": "nai", - "RegionName": "Nairobi", - "Latitude": -1.286389, - "Longitude": 36.817222, - "Nodes": [ - { - "Name": "25c", - "RegionID": 25, - "HostName": "derp25c.tailscale.com", - "IPv4": "102.67.167.37", - "IPv6": "2c0f:edb0:2000:1::2c7", - "CanPort80": true - }, - { - "Name": "25d", - "RegionID": 25, - "HostName": "derp25d.tailscale.com", - "IPv4": "102.67.167.188", - "IPv6": "2c0f:edb0:2000:1::188", - "CanPort80": true - }, - { - "Name": "25b", - "RegionID": 25, - "HostName": "derp25b.tailscale.com", - "IPv4": "102.67.167.245", - "IPv6": "2c0f:edb0:2000:1::2e9", - "CanPort80": true - } - ] - }, - "26": { - "RegionID": 26, - "RegionCode": "nue", - "RegionName": "Nuremberg", - "Latitude": 49.453889, - "Longitude": 11.0775, - "Nodes": [ - { - "Name": "26c", - "RegionID": 26, - "HostName": "derp26c.tailscale.com", - "IPv4": "49.12.193.137", - "IPv6": "2a01:4f8:1c1c:5c70::1", - "CanPort80": true - }, - { - "Name": "26d", - "RegionID": 26, - "HostName": "derp26d.tailscale.com", - "IPv4": "49.13.204.141", - "IPv6": "2a01:4f8:1c0c:7d06::1", - "CanPort80": true - }, - { - "Name": "26b", - "RegionID": 26, - "HostName": "derp26b.tailscale.com", - "IPv4": "167.235.72.200", - "IPv6": "2a01:4f8:1c1c:47b6::1", - "CanPort80": true - } - ] - }, - "27": { - "RegionID": 27, - "RegionCode": "iad", - "RegionName": "Ashburn", - "Latitude": 39.03, - "Longitude": -77.471111, - "Nodes": [ - { - "Name": "27d", - "RegionID": 27, - "HostName": "derp27d.tailscale.com", - "IPv4": "178.156.152.106", - "IPv6": "2a01:4ff:f0:3c8e::1", - "CanPort80": true - }, - { - "Name": "27c", - "RegionID": 27, - "HostName": "derp27c.tailscale.com", - "IPv4": "178.156.152.91", - "IPv6": "2a01:4ff:f0:3913::1", - "CanPort80": true - }, - { - "Name": "27e", - "RegionID": 27, - "HostName": "derp27e.tailscale.com", - "IPv4": "178.156.134.232", - "IPv6": "2a01:4ff:f0:28d4::1", - "CanPort80": true - }, - { - "Name": "27b", - "RegionID": 27, - "HostName": "derp27b.tailscale.com", - "IPv4": "5.161.218.233", - "IPv6": "2a01:4ff:f0:3db9::1", - "CanPort80": true - } - ] - }, - "28": { - "RegionID": 28, - "RegionCode": "hel", - "RegionName": "Helsinki", - "Latitude": 60.170833, - "Longitude": 24.9375, - "Nodes": [ - { - "Name": "28c", - "RegionID": 28, - "HostName": "derp28c.tailscale.com", - "IPv4": "95.217.2.165", - "IPv6": "2a01:4f9:c012:cd74::1", - "CanPort80": true - }, - { - "Name": "28d", - "RegionID": 28, - "HostName": "derp28d.tailscale.com", - "IPv4": "157.180.28.32", - "IPv6": "2a01:4f9:c012:2e5b::1", - "CanPort80": true - }, - { - "Name": "28b", - "RegionID": 28, - "HostName": "derp28b.tailscale.com", - "IPv4": "65.109.143.62", - "IPv6": "2a01:4f9:c012:d55c::1", - "CanPort80": true - } - ] - }, - "3": { - "RegionID": 3, - "RegionCode": "sin", - "RegionName": "Singapore", - "Latitude": 1.3521, - "Longitude": 103.8198, - "Nodes": [ - { - "Name": "3g", - "RegionID": 3, - "HostName": "derp3g.tailscale.com", - "IPv4": "172.237.72.79", - "IPv6": "2600:3c15::2000:adff:fe08:6fab", - "CanPort80": true - }, - { - "Name": "3f", - "RegionID": 3, - "HostName": "derp3f.tailscale.com", - "IPv4": "172.237.72.8", - "IPv6": "2600:3c15::2000:53ff:fe48:a668", - "CanPort80": true - }, - { - "Name": "3h", - "RegionID": 3, - "HostName": "derp3h.tailscale.com", - "IPv4": "172.237.66.30", - "IPv6": "2600:3c15::2000:3dff:fe44:50aa", - "CanPort80": true - }, - { - "Name": "3e", - "RegionID": 3, - "HostName": "derp3e.tailscale.com", - "IPv4": "172.237.72.43", - "IPv6": "2600:3c15::2000:6cff:fee4:d799", - "CanPort80": true - } - ] - }, - "4": { - "RegionID": 4, - "RegionCode": "fra", - "RegionName": "Frankfurt", - "Latitude": 50.1109, - "Longitude": 8.6821, - "Nodes": [ - { - "Name": "4h", - "RegionID": 4, - "HostName": "derp4h.tailscale.com", - "IPv4": "185.40.234.77", - "IPv6": "2a00:dd80:20::bcf", - "CanPort80": true - }, - { - "Name": "4g", - "RegionID": 4, - "HostName": "derp4g.tailscale.com", - "IPv4": "185.40.234.113", - "IPv6": "2a00:dd80:20::8f", - "CanPort80": true - }, - { - "Name": "4i", - "RegionID": 4, - "HostName": "derp4i.tailscale.com", - "IPv4": "185.40.234.53", - "IPv6": "2a00:dd80:20::8a6", - "CanPort80": true - }, - { - "Name": "4f", - "RegionID": 4, - "HostName": "derp4f.tailscale.com", - "IPv4": "185.40.234.219", - "IPv6": "2a00:dd80:20::a25", - "CanPort80": true - } - ] - }, - "5": { - "RegionID": 5, - "RegionCode": "syd", - "RegionName": "Sydney", - "Latitude": -33.867778, - "Longitude": 151.21, - "Nodes": [ - { - "Name": "5f", - "RegionID": 5, - "HostName": "derp5f.tailscale.com", - "IPv4": "172.105.166.103", - "IPv6": "2400:8907::2000:ccff:fe1f:80da", - "CanPort80": true - }, - { - "Name": "5g", - "RegionID": 5, - "HostName": "derp5g.tailscale.com", - "IPv4": "172.105.169.57", - "IPv6": "2400:8907::2000:2fff:fea7:57f4", - "CanPort80": true - }, - { - "Name": "5e", - "RegionID": 5, - "HostName": "derp5e.tailscale.com", - "IPv4": "172.105.179.230", - "IPv6": "2400:8907::2000:ceff:fe8d:4f4e", - "CanPort80": true - } - ] - }, - "6": { - "RegionID": 6, - "RegionCode": "blr", - "RegionName": "Bengaluru", - "Latitude": 12.9716, - "Longitude": 77.5946, - "Nodes": [ - { - "Name": "6a", - "RegionID": 6, - "HostName": "derp6.tailscale.com", - "IPv4": "68.183.90.120", - "IPv6": "2400:6180:100:d0::982:d001", - "CanPort80": true - } - ] - }, - "7": { - "RegionID": 7, - "RegionCode": "tok", - "RegionName": "Tokyo", - "Latitude": 35.6764, - "Longitude": 139.65, - "Nodes": [ - { - "Name": "7g", - "RegionID": 7, - "HostName": "derp7g.tailscale.com", - "IPv4": "172.238.6.179", - "IPv6": "2600:3c18::2000:3fff:fe80:3ebd", - "CanPort80": true - }, - { - "Name": "7f", - "RegionID": 7, - "HostName": "derp7f.tailscale.com", - "IPv4": "172.238.6.34", - "IPv6": "2600:3c18::2000:acff:fe8e:3ed5", - "CanPort80": true - }, - { - "Name": "7h", - "RegionID": 7, - "HostName": "derp7h.tailscale.com", - "IPv4": "172.237.28.183", - "IPv6": "2600:3c18::2000:b1ff:fea9:4560", - "CanPort80": true - }, - { - "Name": "7e", - "RegionID": 7, - "HostName": "derp7e.tailscale.com", - "IPv4": "172.238.6.180", - "IPv6": "2600:3c18::2000:60ff:fe0f:6e83", - "STUNOnly": true, - "CanPort80": true - } - ] - }, - "8": { - "RegionID": 8, - "RegionCode": "lhr", - "RegionName": "London", - "Latitude": 51.5072, - "Longitude": 0.1276, - "Nodes": [ - { - "Name": "8f", - "RegionID": 8, - "HostName": "derp8f.tailscale.com", - "IPv4": "176.58.88.183", - "IPv6": "2a00:dd80:3a::dfa", - "CanPort80": true - }, - { - "Name": "8g", - "RegionID": 8, - "HostName": "derp8g.tailscale.com", - "IPv4": "176.58.92.254", - "IPv6": "2a00:dd80:3a::ed", - "CanPort80": true - }, - { - "Name": "8e", - "RegionID": 8, - "HostName": "derp8e.tailscale.com", - "IPv4": "176.58.92.144", - "IPv6": "2a00:dd80:3a::b33", - "CanPort80": true - } - ] - }, - "9": { - "RegionID": 9, - "RegionCode": "dfw", - "RegionName": "Dallas", - "Latitude": 32.779167, - "Longitude": -96.808889, - "Nodes": [ - { - "Name": "9e", - "RegionID": 9, - "HostName": "derp9e.tailscale.com", - "IPv4": "192.73.248.83", - "IPv6": "2607:f740:100::359", - "CanPort80": true - }, - { - "Name": "9f", - "RegionID": 9, - "HostName": "derp9f.tailscale.com", - "IPv4": "209.177.156.197", - "IPv6": "2607:f740:100::cad", - "CanPort80": true - }, - { - "Name": "9d", - "RegionID": 9, - "HostName": "derp9d.tailscale.com", - "IPv4": "209.177.156.94", - "IPv6": "2607:f740:100::c05", - "CanPort80": true - } - ] - } - } - }, - "DisplayMessages": null, - "TKAEnabled": false, - "TKAHead": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", - "Domain": "kratail2tid@passkey", - "DomainAuditLogID": "", - "UserProfiles": { - "1440249486084758": { - "ID": 1440249486084758, - "LoginName": "tagged-server.tail78f774.ts.net", - "DisplayName": "tagged-server" - } - } + "PacketFilterRules": 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.124.195.93": { - "peer_name": "exit-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-kris/tailscaled.sock whois --json 100.124.195.93", - "response": null - }, - "100.116.18.24": { - "peer_name": "exit-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-kris/tailscaled.sock whois --json 100.116.18.24", - "response": null - }, - "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.107.162.14": { - "peer_name": "group-a-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-kris/tailscaled.sock whois --json 100.107.162.14", - "response": null - }, - "100.77.135.18": { - "peer_name": "group-b-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-kris/tailscaled.sock whois --json 100.77.135.18", - "response": null - }, - "100.105.127.107": { - "peer_name": "multi-exit-router", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-kris/tailscaled.sock whois --json 100.105.127.107", - "response": null - }, - "100.109.43.124": { - "peer_name": "router-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-kris/tailscaled.sock whois --json 100.109.43.124", - "response": null - }, - "100.65.172.123": { - "peer_name": "router-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-kris/tailscaled.sock whois --json 100.65.172.123", - "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 - } - }, "netmap": { - "SelfNode": { - "ID": 7728836216590060, - "StableID": "nf4dJTRQM321CNTRL", - "Name": "user-kris.tail78f774.ts.net.", - "User": 4538565228176803, - "Key": "nodekey:40d0f8f49fd519e4a4a2b7d278dcc8863254d4fb8b0219f1d1304cdd172e795f", - "KeyExpiry": "2026-08-19T14:09:34Z", - "DiscoKey": "discokey:60de987544859962048376b0950731bfa8017a7fc7df694ef376d4bb42eb9871", - "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:59717", "10.65.0.27:59717", "172.17.0.1:59717"], - "Hostinfo": { - "Hostname": "user-kris", - "Services": [ - { "Proto": "peerapi4", "Port": 40159 }, - { "Proto": "peerapi6", "Port": 40159 }, - { "Proto": "peerapi-dns-proxy", "Port": 1 } - ] - }, - "Created": "2026-02-20T14:09:34.803901523Z", - "MachineAuthorized": true, - "CapMap": { - "https://tailscale.com/cap/file-sharing": null, - "https://tailscale.com/cap/is-admin": null, - "https://tailscale.com/cap/ssh": null, - "https://tailscale.com/cap/tailnet-lock": null, - "probe-udp-lifetime": null, - "ssh-behavior-v1": null, - "ssh-env-vars": null, - "store-appc-routes": null, - "tailnet-display-name": ["kratail2tid@passkey"] - }, - "ComputedName": "user-kris", - "ComputedNameWithHost": "user-kris" - }, - "AllCaps": [ - "ssh-env-vars", - "https://tailscale.com/cap/file-sharing", - "https://tailscale.com/cap/ssh", - "ssh-behavior-v1", - "probe-udp-lifetime", - "store-appc-routes", - "tailnet-display-name", - "https://tailscale.com/cap/tailnet-lock", - "https://tailscale.com/cap/is-admin" - ], - "NodeKey": "nodekey:40d0f8f49fd519e4a4a2b7d278dcc8863254d4fb8b0219f1d1304cdd172e795f", - "MachineKey": "mkey:ff16066d907c58407972ee4a05a30386bd21bc0b420d8f9290eb70b95b3e1457", "Peers": [], - "DNS": { - "Routes": { - "tail78f774.ts.net.": null, - "ts.net.": [{ "Addr": "199.247.155.53" }, { "Addr": "2620:111:8007::53" }] - }, - "Domains": ["tail78f774.ts.net"], - "Proxied": true, - "ExitNodeFilteredSet": [".ts.net", ".tailscale.net"] - }, - "PacketFilter": [], - "PacketFilterRules": null, - "SSHPolicy": { "rules": [] }, - "CollectServices": false, - "DERPMap": { - "Regions": { - "1": { - "RegionID": 1, - "RegionCode": "nyc", - "RegionName": "New York City", - "Latitude": 40.7128, - "Longitude": -74.006, - "Nodes": [ - { - "Name": "1h", - "RegionID": 1, - "HostName": "derp1h.tailscale.com", - "IPv4": "199.38.181.93", - "IPv6": "2607:f740:f::afd", - "CanPort80": true - }, - { - "Name": "1g", - "RegionID": 1, - "HostName": "derp1g.tailscale.com", - "IPv4": "209.177.145.120", - "IPv6": "2607:f740:f::3eb", - "CanPort80": true - }, - { - "Name": "1i", - "RegionID": 1, - "HostName": "derp1i.tailscale.com", - "IPv4": "199.38.181.103", - "IPv6": "2607:f740:f::e19", - "CanPort80": true - }, - { - "Name": "1f", - "RegionID": 1, - "HostName": "derp1f.tailscale.com", - "IPv4": "199.38.181.104", - "IPv6": "2607:f740:f::bc", - "CanPort80": true - } - ] - }, - "10": { - "RegionID": 10, - "RegionCode": "sea", - "RegionName": "Seattle", - "Latitude": 47.609722, - "Longitude": -122.333056, - "Nodes": [ - { - "Name": "10c", - "RegionID": 10, - "HostName": "derp10c.tailscale.com", - "IPv4": "192.73.240.121", - "IPv6": "2607:f740:14::40c", - "CanPort80": true - }, - { - "Name": "10d", - "RegionID": 10, - "HostName": "derp10d.tailscale.com", - "IPv4": "192.73.240.132", - "IPv6": "2607:f740:14::500", - "CanPort80": true - }, - { - "Name": "10b", - "RegionID": 10, - "HostName": "derp10b.tailscale.com", - "IPv4": "192.73.240.161", - "IPv6": "2607:f740:14::61c", - "CanPort80": true - } - ] - }, - "11": { - "RegionID": 11, - "RegionCode": "sao", - "RegionName": "São Paulo", - "Latitude": -23.55, - "Longitude": -46.633333, - "Nodes": [ - { - "Name": "11f", - "RegionID": 11, - "HostName": "derp11f.tailscale.com", - "IPv4": "172.237.61.197", - "IPv6": "2600:3c0d::2000:3bff:fe44:6166", - "CanPort80": true - }, - { - "Name": "11g", - "RegionID": 11, - "HostName": "derp11g.tailscale.com", - "IPv4": "172.237.61.190", - "IPv6": "2600:3c0d::2000:62ff:febe:2e67", - "CanPort80": true - }, - { - "Name": "11e", - "RegionID": 11, - "HostName": "derp11e.tailscale.com", - "IPv4": "172.237.61.194", - "IPv6": "2600:3c0d::2000:d2ff:fe43:1790", - "CanPort80": true - } - ] - }, - "12": { - "RegionID": 12, - "RegionCode": "ord", - "RegionName": "Chicago", - "Latitude": 41.881944, - "Longitude": -87.627778, - "Nodes": [ - { - "Name": "12e", - "RegionID": 12, - "HostName": "derp12e.tailscale.com", - "IPv4": "209.177.158.15", - "IPv6": "2607:f740:e::b17", - "CanPort80": true - }, - { - "Name": "12f", - "RegionID": 12, - "HostName": "derp12f.tailscale.com", - "IPv4": "199.38.182.118", - "IPv6": "2607:f740:e::4c8", - "CanPort80": true - }, - { - "Name": "12d", - "RegionID": 12, - "HostName": "derp12d.tailscale.com", - "IPv4": "209.177.158.246", - "IPv6": "2607:f740:e::811", - "CanPort80": true - } - ] - }, - "13": { - "RegionID": 13, - "RegionCode": "den", - "RegionName": "Denver", - "Latitude": 39.7392, - "Longitude": -104.9849, - "Nodes": [ - { - "Name": "13c", - "RegionID": 13, - "HostName": "derp13c.tailscale.com", - "IPv4": "192.73.242.28", - "IPv6": "2607:f740:16::5c", - "CanPort80": true - }, - { - "Name": "13d", - "RegionID": 13, - "HostName": "derp13d.tailscale.com", - "IPv4": "192.73.242.204", - "IPv6": "2607:f740:16::c23", - "CanPort80": true - }, - { - "Name": "13b", - "RegionID": 13, - "HostName": "derp13b.tailscale.com", - "IPv4": "192.73.242.187", - "IPv6": "2607:f740:16::640", - "CanPort80": true - } - ] - }, - "14": { - "RegionID": 14, - "RegionCode": "ams", - "RegionName": "Amsterdam", - "Latitude": 52.372778, - "Longitude": 4.893611, - "Nodes": [ - { - "Name": "14c", - "RegionID": 14, - "HostName": "derp14c.tailscale.com", - "IPv4": "176.58.93.147", - "IPv6": "2a00:dd80:3c::b09", - "CanPort80": true - }, - { - "Name": "14d", - "RegionID": 14, - "HostName": "derp14d.tailscale.com", - "IPv4": "176.58.93.154", - "IPv6": "2a00:dd80:3c::3d5", - "CanPort80": true - }, - { - "Name": "14b", - "RegionID": 14, - "HostName": "derp14b.tailscale.com", - "IPv4": "176.58.93.248", - "IPv6": "2a00:dd80:3c::807", - "CanPort80": true - } - ] - }, - "15": { - "RegionID": 15, - "RegionCode": "jnb", - "RegionName": "Johannesburg", - "Latitude": -26.204444, - "Longitude": 28.045556, - "Nodes": [ - { - "Name": "15c", - "RegionID": 15, - "HostName": "derp15c.tailscale.com", - "IPv4": "102.67.165.185", - "IPv6": "2c0f:edb0:0:10::b59", - "CanPort80": true - }, - { - "Name": "15d", - "RegionID": 15, - "HostName": "derp15d.tailscale.com", - "IPv4": "102.67.165.36", - "IPv6": "2c0f:edb0:0:10::599", - "CanPort80": true - }, - { - "Name": "15b", - "RegionID": 15, - "HostName": "derp15b.tailscale.com", - "IPv4": "102.67.165.90", - "IPv6": "2c0f:edb0:0:10::963", - "CanPort80": true - } - ] - }, - "16": { - "RegionID": 16, - "RegionCode": "mia", - "RegionName": "Miami", - "Latitude": 25.78, - "Longitude": -80.21, - "Nodes": [ - { - "Name": "16c", - "RegionID": 16, - "HostName": "derp16c.tailscale.com", - "IPv4": "192.73.243.229", - "IPv6": "2607:f740:17::4e4", - "CanPort80": true - }, - { - "Name": "16d", - "RegionID": 16, - "HostName": "derp16d.tailscale.com", - "IPv4": "192.73.243.141", - "IPv6": "2607:f740:17::475", - "CanPort80": true - }, - { - "Name": "16b", - "RegionID": 16, - "HostName": "derp16b.tailscale.com", - "IPv4": "192.73.243.135", - "IPv6": "2607:f740:17::476", - "CanPort80": true - } - ] - }, - "17": { - "RegionID": 17, - "RegionCode": "lax", - "RegionName": "Los Angeles", - "Latitude": 34.05, - "Longitude": -118.25, - "Nodes": [ - { - "Name": "17c", - "RegionID": 17, - "HostName": "derp17c.tailscale.com", - "IPv4": "208.111.40.12", - "IPv6": "2607:f740:c::10", - "CanPort80": true - }, - { - "Name": "17d", - "RegionID": 17, - "HostName": "derp17d.tailscale.com", - "IPv4": "208.111.40.216", - "IPv6": "2607:f740:c::e1b", - "CanPort80": true - }, - { - "Name": "17b", - "RegionID": 17, - "HostName": "derp17b.tailscale.com", - "IPv4": "192.73.244.245", - "IPv6": "2607:f740:c::646", - "CanPort80": true - } - ] - }, - "18": { - "RegionID": 18, - "RegionCode": "par", - "RegionName": "Paris", - "Latitude": 48.856667, - "Longitude": 2.352222, - "Nodes": [ - { - "Name": "18c", - "RegionID": 18, - "HostName": "derp18c.tailscale.com", - "IPv4": "176.58.90.207", - "IPv6": "2a00:dd80:3e::c19", - "CanPort80": true - }, - { - "Name": "18d", - "RegionID": 18, - "HostName": "derp18d.tailscale.com", - "IPv4": "176.58.90.104", - "IPv6": "2a00:dd80:3e::f2e", - "CanPort80": true - }, - { - "Name": "18b", - "RegionID": 18, - "HostName": "derp18b.tailscale.com", - "IPv4": "176.58.90.147", - "IPv6": "2a00:dd80:3e::363", - "CanPort80": true - } - ] - }, - "19": { - "RegionID": 19, - "RegionCode": "mad", - "RegionName": "Madrid", - "Latitude": 40.416944, - "Longitude": -3.703333, - "Nodes": [ - { - "Name": "19c", - "RegionID": 19, - "HostName": "derp19c.tailscale.com", - "IPv4": "45.159.97.61", - "IPv6": "2a00:dd80:14:10::20", - "CanPort80": true - }, - { - "Name": "19d", - "RegionID": 19, - "HostName": "derp19d.tailscale.com", - "IPv4": "45.159.97.233", - "IPv6": "2a00:dd80:14:10::34a", - "CanPort80": true - }, - { - "Name": "19b", - "RegionID": 19, - "HostName": "derp19b.tailscale.com", - "IPv4": "45.159.97.144", - "IPv6": "2a00:dd80:14:10::335", - "CanPort80": true - } - ] - }, - "2": { - "RegionID": 2, - "RegionCode": "sfo", - "RegionName": "San Francisco", - "Latitude": 37.7775, - "Longitude": -122.416389, - "Nodes": [ - { - "Name": "2e", - "RegionID": 2, - "HostName": "derp2e.tailscale.com", - "IPv4": "192.73.252.134", - "IPv6": "2607:f740:0:3f::44c", - "CanPort80": true - }, - { - "Name": "2f", - "RegionID": 2, - "HostName": "derp2f.tailscale.com", - "IPv4": "208.111.34.178", - "IPv6": "2607:f740:0:3f::f4", - "CanPort80": true - }, - { - "Name": "2d", - "RegionID": 2, - "HostName": "derp2d.tailscale.com", - "IPv4": "192.73.252.65", - "IPv6": "2607:f740:0:3f::287", - "CanPort80": true - } - ] - }, - "20": { - "RegionID": 20, - "RegionCode": "hkg", - "RegionName": "Hong Kong", - "Latitude": 22.3193, - "Longitude": 114.1694, - "Nodes": [ - { - "Name": "20c", - "RegionID": 20, - "HostName": "derp20c.tailscale.com", - "IPv4": "205.147.105.30", - "IPv6": "2403:2500:8000:1::5fb", - "CanPort80": true - }, - { - "Name": "20d", - "RegionID": 20, - "HostName": "derp20d.tailscale.com", - "IPv4": "205.147.105.78", - "IPv6": "2403:2500:8000:1::e9a", - "CanPort80": true - }, - { - "Name": "20b", - "RegionID": 20, - "HostName": "derp20b.tailscale.com", - "IPv4": "103.6.84.152", - "IPv6": "2403:2500:8000:1::ef6", - "CanPort80": true - } - ] - }, - "21": { - "RegionID": 21, - "RegionCode": "tor", - "RegionName": "Toronto", - "Latitude": 43.741667, - "Longitude": -79.373333, - "Nodes": [ - { - "Name": "21c", - "RegionID": 21, - "HostName": "derp21c.tailscale.com", - "IPv4": "162.248.221.215", - "IPv6": "2607:f740:50::f10", - "CanPort80": true - }, - { - "Name": "21d", - "RegionID": 21, - "HostName": "derp21d.tailscale.com", - "IPv4": "162.248.221.248", - "IPv6": "2607:f740:50::ca4", - "CanPort80": true - }, - { - "Name": "21b", - "RegionID": 21, - "HostName": "derp21b.tailscale.com", - "IPv4": "162.248.221.199", - "IPv6": "2607:f740:50::1d1", - "CanPort80": true - } - ] - }, - "22": { - "RegionID": 22, - "RegionCode": "waw", - "RegionName": "Warsaw", - "Latitude": 52.23, - "Longitude": 21.011111, - "Nodes": [ - { - "Name": "22c", - "RegionID": 22, - "HostName": "derp22c.tailscale.com", - "IPv4": "45.159.98.253", - "IPv6": "2a00:dd80:40:100::3f", - "CanPort80": true - }, - { - "Name": "22d", - "RegionID": 22, - "HostName": "derp22d.tailscale.com", - "IPv4": "45.159.98.145", - "IPv6": "2a00:dd80:40:100::211", - "CanPort80": true - }, - { - "Name": "22b", - "RegionID": 22, - "HostName": "derp22b.tailscale.com", - "IPv4": "45.159.98.196", - "IPv6": "2a00:dd80:40:100::316", - "CanPort80": true - } - ] - }, - "23": { - "RegionID": 23, - "RegionCode": "dbi", - "RegionName": "Dubai", - "Latitude": 25.263056, - "Longitude": 55.297222, - "Nodes": [ - { - "Name": "23c", - "RegionID": 23, - "HostName": "derp23c.tailscale.com", - "IPv4": "185.34.3.207", - "IPv6": "2a00:dd80:3f:100::a50", - "CanPort80": true - }, - { - "Name": "23d", - "RegionID": 23, - "HostName": "derp23d.tailscale.com", - "IPv4": "185.34.3.75", - "IPv6": "2a00:dd80:3f:100::97e", - "CanPort80": true - }, - { - "Name": "23b", - "RegionID": 23, - "HostName": "derp23b.tailscale.com", - "IPv4": "185.34.3.232", - "IPv6": "2a00:dd80:3f:100::76f", - "CanPort80": true - } - ] - }, - "24": { - "RegionID": 24, - "RegionCode": "hnl", - "RegionName": "Honolulu", - "Latitude": 21.306944, - "Longitude": -157.858333, - "Nodes": [ - { - "Name": "24c", - "RegionID": 24, - "HostName": "derp24c.tailscale.com", - "IPv4": "208.83.233.233", - "IPv6": "2001:19f0:c000:c591:5400:04ff:fe26:2c5f", - "CanPort80": true - }, - { - "Name": "24d", - "RegionID": 24, - "HostName": "derp24d.tailscale.com", - "IPv4": "208.72.155.133", - "IPv6": "2001:19f0:c000:c564:5400:04ff:fe26:2ba8", - "CanPort80": true - }, - { - "Name": "24b", - "RegionID": 24, - "HostName": "derp24b.tailscale.com", - "IPv4": "208.83.234.151", - "IPv6": "2001:19f0:c000:c586:5400:04ff:fe26:2ba6", - "CanPort80": true - } - ] - }, - "25": { - "RegionID": 25, - "RegionCode": "nai", - "RegionName": "Nairobi", - "Latitude": -1.286389, - "Longitude": 36.817222, - "Nodes": [ - { - "Name": "25c", - "RegionID": 25, - "HostName": "derp25c.tailscale.com", - "IPv4": "102.67.167.37", - "IPv6": "2c0f:edb0:2000:1::2c7", - "CanPort80": true - }, - { - "Name": "25d", - "RegionID": 25, - "HostName": "derp25d.tailscale.com", - "IPv4": "102.67.167.188", - "IPv6": "2c0f:edb0:2000:1::188", - "CanPort80": true - }, - { - "Name": "25b", - "RegionID": 25, - "HostName": "derp25b.tailscale.com", - "IPv4": "102.67.167.245", - "IPv6": "2c0f:edb0:2000:1::2e9", - "CanPort80": true - } - ] - }, - "26": { - "RegionID": 26, - "RegionCode": "nue", - "RegionName": "Nuremberg", - "Latitude": 49.453889, - "Longitude": 11.0775, - "Nodes": [ - { - "Name": "26c", - "RegionID": 26, - "HostName": "derp26c.tailscale.com", - "IPv4": "49.12.193.137", - "IPv6": "2a01:4f8:1c1c:5c70::1", - "CanPort80": true - }, - { - "Name": "26d", - "RegionID": 26, - "HostName": "derp26d.tailscale.com", - "IPv4": "49.13.204.141", - "IPv6": "2a01:4f8:1c0c:7d06::1", - "CanPort80": true - }, - { - "Name": "26b", - "RegionID": 26, - "HostName": "derp26b.tailscale.com", - "IPv4": "167.235.72.200", - "IPv6": "2a01:4f8:1c1c:47b6::1", - "CanPort80": true - } - ] - }, - "27": { - "RegionID": 27, - "RegionCode": "iad", - "RegionName": "Ashburn", - "Latitude": 39.03, - "Longitude": -77.471111, - "Nodes": [ - { - "Name": "27d", - "RegionID": 27, - "HostName": "derp27d.tailscale.com", - "IPv4": "178.156.152.106", - "IPv6": "2a01:4ff:f0:3c8e::1", - "CanPort80": true - }, - { - "Name": "27c", - "RegionID": 27, - "HostName": "derp27c.tailscale.com", - "IPv4": "178.156.152.91", - "IPv6": "2a01:4ff:f0:3913::1", - "CanPort80": true - }, - { - "Name": "27e", - "RegionID": 27, - "HostName": "derp27e.tailscale.com", - "IPv4": "178.156.134.232", - "IPv6": "2a01:4ff:f0:28d4::1", - "CanPort80": true - }, - { - "Name": "27b", - "RegionID": 27, - "HostName": "derp27b.tailscale.com", - "IPv4": "5.161.218.233", - "IPv6": "2a01:4ff:f0:3db9::1", - "CanPort80": true - } - ] - }, - "28": { - "RegionID": 28, - "RegionCode": "hel", - "RegionName": "Helsinki", - "Latitude": 60.170833, - "Longitude": 24.9375, - "Nodes": [ - { - "Name": "28c", - "RegionID": 28, - "HostName": "derp28c.tailscale.com", - "IPv4": "95.217.2.165", - "IPv6": "2a01:4f9:c012:cd74::1", - "CanPort80": true - }, - { - "Name": "28d", - "RegionID": 28, - "HostName": "derp28d.tailscale.com", - "IPv4": "157.180.28.32", - "IPv6": "2a01:4f9:c012:2e5b::1", - "CanPort80": true - }, - { - "Name": "28b", - "RegionID": 28, - "HostName": "derp28b.tailscale.com", - "IPv4": "65.109.143.62", - "IPv6": "2a01:4f9:c012:d55c::1", - "CanPort80": true - } - ] - }, - "3": { - "RegionID": 3, - "RegionCode": "sin", - "RegionName": "Singapore", - "Latitude": 1.3521, - "Longitude": 103.8198, - "Nodes": [ - { - "Name": "3g", - "RegionID": 3, - "HostName": "derp3g.tailscale.com", - "IPv4": "172.237.72.79", - "IPv6": "2600:3c15::2000:adff:fe08:6fab", - "CanPort80": true - }, - { - "Name": "3f", - "RegionID": 3, - "HostName": "derp3f.tailscale.com", - "IPv4": "172.237.72.8", - "IPv6": "2600:3c15::2000:53ff:fe48:a668", - "CanPort80": true - }, - { - "Name": "3h", - "RegionID": 3, - "HostName": "derp3h.tailscale.com", - "IPv4": "172.237.66.30", - "IPv6": "2600:3c15::2000:3dff:fe44:50aa", - "CanPort80": true - }, - { - "Name": "3e", - "RegionID": 3, - "HostName": "derp3e.tailscale.com", - "IPv4": "172.237.72.43", - "IPv6": "2600:3c15::2000:6cff:fee4:d799", - "CanPort80": true - } - ] - }, - "4": { - "RegionID": 4, - "RegionCode": "fra", - "RegionName": "Frankfurt", - "Latitude": 50.1109, - "Longitude": 8.6821, - "Nodes": [ - { - "Name": "4h", - "RegionID": 4, - "HostName": "derp4h.tailscale.com", - "IPv4": "185.40.234.77", - "IPv6": "2a00:dd80:20::bcf", - "CanPort80": true - }, - { - "Name": "4g", - "RegionID": 4, - "HostName": "derp4g.tailscale.com", - "IPv4": "185.40.234.113", - "IPv6": "2a00:dd80:20::8f", - "CanPort80": true - }, - { - "Name": "4i", - "RegionID": 4, - "HostName": "derp4i.tailscale.com", - "IPv4": "185.40.234.53", - "IPv6": "2a00:dd80:20::8a6", - "CanPort80": true - }, - { - "Name": "4f", - "RegionID": 4, - "HostName": "derp4f.tailscale.com", - "IPv4": "185.40.234.219", - "IPv6": "2a00:dd80:20::a25", - "CanPort80": true - } - ] - }, - "5": { - "RegionID": 5, - "RegionCode": "syd", - "RegionName": "Sydney", - "Latitude": -33.867778, - "Longitude": 151.21, - "Nodes": [ - { - "Name": "5f", - "RegionID": 5, - "HostName": "derp5f.tailscale.com", - "IPv4": "172.105.166.103", - "IPv6": "2400:8907::2000:ccff:fe1f:80da", - "CanPort80": true - }, - { - "Name": "5g", - "RegionID": 5, - "HostName": "derp5g.tailscale.com", - "IPv4": "172.105.169.57", - "IPv6": "2400:8907::2000:2fff:fea7:57f4", - "CanPort80": true - }, - { - "Name": "5e", - "RegionID": 5, - "HostName": "derp5e.tailscale.com", - "IPv4": "172.105.179.230", - "IPv6": "2400:8907::2000:ceff:fe8d:4f4e", - "CanPort80": true - } - ] - }, - "6": { - "RegionID": 6, - "RegionCode": "blr", - "RegionName": "Bengaluru", - "Latitude": 12.9716, - "Longitude": 77.5946, - "Nodes": [ - { - "Name": "6a", - "RegionID": 6, - "HostName": "derp6.tailscale.com", - "IPv4": "68.183.90.120", - "IPv6": "2400:6180:100:d0::982:d001", - "CanPort80": true - } - ] - }, - "7": { - "RegionID": 7, - "RegionCode": "tok", - "RegionName": "Tokyo", - "Latitude": 35.6764, - "Longitude": 139.65, - "Nodes": [ - { - "Name": "7g", - "RegionID": 7, - "HostName": "derp7g.tailscale.com", - "IPv4": "172.238.6.179", - "IPv6": "2600:3c18::2000:3fff:fe80:3ebd", - "CanPort80": true - }, - { - "Name": "7f", - "RegionID": 7, - "HostName": "derp7f.tailscale.com", - "IPv4": "172.238.6.34", - "IPv6": "2600:3c18::2000:acff:fe8e:3ed5", - "CanPort80": true - }, - { - "Name": "7h", - "RegionID": 7, - "HostName": "derp7h.tailscale.com", - "IPv4": "172.237.28.183", - "IPv6": "2600:3c18::2000:b1ff:fea9:4560", - "CanPort80": true - }, - { - "Name": "7e", - "RegionID": 7, - "HostName": "derp7e.tailscale.com", - "IPv4": "172.238.6.180", - "IPv6": "2600:3c18::2000:60ff:fe0f:6e83", - "STUNOnly": true, - "CanPort80": true - } - ] - }, - "8": { - "RegionID": 8, - "RegionCode": "lhr", - "RegionName": "London", - "Latitude": 51.5072, - "Longitude": 0.1276, - "Nodes": [ - { - "Name": "8f", - "RegionID": 8, - "HostName": "derp8f.tailscale.com", - "IPv4": "176.58.88.183", - "IPv6": "2a00:dd80:3a::dfa", - "CanPort80": true - }, - { - "Name": "8g", - "RegionID": 8, - "HostName": "derp8g.tailscale.com", - "IPv4": "176.58.92.254", - "IPv6": "2a00:dd80:3a::ed", - "CanPort80": true - }, - { - "Name": "8e", - "RegionID": 8, - "HostName": "derp8e.tailscale.com", - "IPv4": "176.58.92.144", - "IPv6": "2a00:dd80:3a::b33", - "CanPort80": true - } - ] - }, - "9": { - "RegionID": 9, - "RegionCode": "dfw", - "RegionName": "Dallas", - "Latitude": 32.779167, - "Longitude": -96.808889, - "Nodes": [ - { - "Name": "9e", - "RegionID": 9, - "HostName": "derp9e.tailscale.com", - "IPv4": "192.73.248.83", - "IPv6": "2607:f740:100::359", - "CanPort80": true - }, - { - "Name": "9f", - "RegionID": 9, - "HostName": "derp9f.tailscale.com", - "IPv4": "209.177.156.197", - "IPv6": "2607:f740:100::cad", - "CanPort80": true - }, - { - "Name": "9d", - "RegionID": 9, - "HostName": "derp9d.tailscale.com", - "IPv4": "209.177.156.94", - "IPv6": "2607:f740:100::c05", - "CanPort80": true - } - ] - } - } - }, - "DisplayMessages": null, - "TKAEnabled": false, - "TKAHead": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", - "Domain": "kratail2tid@passkey", - "DomainAuditLogID": "", - "UserProfiles": { - "4538565228176803": { - "ID": 4538565228176803, - "LoginName": "kristoffer@dalby.cc", - "DisplayName": "kristoffer" - } - } + "PacketFilterRules": 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.124.195.93": { - "peer_name": "exit-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-mon/tailscaled.sock whois --json 100.124.195.93", - "response": null - }, - "100.116.18.24": { - "peer_name": "exit-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-mon/tailscaled.sock whois --json 100.116.18.24", - "response": null - }, - "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.107.162.14": { - "peer_name": "group-a-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-mon/tailscaled.sock whois --json 100.107.162.14", - "response": null - }, - "100.77.135.18": { - "peer_name": "group-b-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-mon/tailscaled.sock whois --json 100.77.135.18", - "response": null - }, - "100.105.127.107": { - "peer_name": "multi-exit-router", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-mon/tailscaled.sock whois --json 100.105.127.107", - "response": null - }, - "100.109.43.124": { - "peer_name": "router-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-mon/tailscaled.sock whois --json 100.109.43.124", - "response": null - }, - "100.65.172.123": { - "peer_name": "router-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-mon/tailscaled.sock whois --json 100.65.172.123", - "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 - } - }, "netmap": { - "SelfNode": { - "ID": 1840115676059256, - "StableID": "nFzZ7giPNF11CNTRL", - "Name": "user-mon.tail78f774.ts.net.", - "User": 3982058329734709, - "Key": "nodekey:1ca6cca66d2b3811ec290c2f7ac30125c3568e19e303a8e30f6b165c9ee75a51", - "KeyExpiry": "2026-08-19T14:09:00Z", - "DiscoKey": "discokey:67ba1473894f09b564073adb12b27df2a45c513afd9e48922a0346d5d2715d12", - "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:36593", "10.65.0.27:36593", "172.17.0.1:36593"], - "Hostinfo": { - "Hostname": "user-mon", - "Services": [ - { "Proto": "peerapi4", "Port": 33201 }, - { "Proto": "peerapi6", "Port": 33201 }, - { "Proto": "peerapi-dns-proxy", "Port": 1 } - ] - }, - "Created": "2026-02-20T14:09:00.203639664Z", - "MachineAuthorized": true, - "CapMap": { - "https://tailscale.com/cap/file-sharing": null, - "https://tailscale.com/cap/is-admin": null, - "https://tailscale.com/cap/ssh": null, - "https://tailscale.com/cap/tailnet-lock": null, - "probe-udp-lifetime": null, - "ssh-behavior-v1": null, - "ssh-env-vars": null, - "store-appc-routes": null, - "tailnet-display-name": ["kratail2tid@passkey"] - }, - "ComputedName": "user-mon", - "ComputedNameWithHost": "user-mon" - }, - "AllCaps": [ - "https://tailscale.com/cap/file-sharing", - "probe-udp-lifetime", - "tailnet-display-name", - "store-appc-routes", - "https://tailscale.com/cap/ssh", - "ssh-env-vars", - "https://tailscale.com/cap/is-admin", - "ssh-behavior-v1", - "https://tailscale.com/cap/tailnet-lock" - ], - "NodeKey": "nodekey:1ca6cca66d2b3811ec290c2f7ac30125c3568e19e303a8e30f6b165c9ee75a51", - "MachineKey": "mkey:d63fc325663eef5dabd4d236e1fa5a26ed14ad31ea0711840cf755a5e8a9df39", "Peers": [], - "DNS": { - "Routes": { - "tail78f774.ts.net.": null, - "ts.net.": [{ "Addr": "199.247.155.53" }, { "Addr": "2620:111:8007::53" }] - }, - "Domains": ["tail78f774.ts.net"], - "Proxied": true, - "ExitNodeFilteredSet": [".ts.net", ".tailscale.net"] - }, - "PacketFilter": [], - "PacketFilterRules": null, - "SSHPolicy": { "rules": [] }, - "CollectServices": false, - "DERPMap": { - "Regions": { - "1": { - "RegionID": 1, - "RegionCode": "nyc", - "RegionName": "New York City", - "Latitude": 40.7128, - "Longitude": -74.006, - "Nodes": [ - { - "Name": "1h", - "RegionID": 1, - "HostName": "derp1h.tailscale.com", - "IPv4": "199.38.181.93", - "IPv6": "2607:f740:f::afd", - "CanPort80": true - }, - { - "Name": "1g", - "RegionID": 1, - "HostName": "derp1g.tailscale.com", - "IPv4": "209.177.145.120", - "IPv6": "2607:f740:f::3eb", - "CanPort80": true - }, - { - "Name": "1i", - "RegionID": 1, - "HostName": "derp1i.tailscale.com", - "IPv4": "199.38.181.103", - "IPv6": "2607:f740:f::e19", - "CanPort80": true - }, - { - "Name": "1f", - "RegionID": 1, - "HostName": "derp1f.tailscale.com", - "IPv4": "199.38.181.104", - "IPv6": "2607:f740:f::bc", - "CanPort80": true - } - ] - }, - "10": { - "RegionID": 10, - "RegionCode": "sea", - "RegionName": "Seattle", - "Latitude": 47.609722, - "Longitude": -122.333056, - "Nodes": [ - { - "Name": "10c", - "RegionID": 10, - "HostName": "derp10c.tailscale.com", - "IPv4": "192.73.240.121", - "IPv6": "2607:f740:14::40c", - "CanPort80": true - }, - { - "Name": "10d", - "RegionID": 10, - "HostName": "derp10d.tailscale.com", - "IPv4": "192.73.240.132", - "IPv6": "2607:f740:14::500", - "CanPort80": true - }, - { - "Name": "10b", - "RegionID": 10, - "HostName": "derp10b.tailscale.com", - "IPv4": "192.73.240.161", - "IPv6": "2607:f740:14::61c", - "CanPort80": true - } - ] - }, - "11": { - "RegionID": 11, - "RegionCode": "sao", - "RegionName": "São Paulo", - "Latitude": -23.55, - "Longitude": -46.633333, - "Nodes": [ - { - "Name": "11f", - "RegionID": 11, - "HostName": "derp11f.tailscale.com", - "IPv4": "172.237.61.197", - "IPv6": "2600:3c0d::2000:3bff:fe44:6166", - "CanPort80": true - }, - { - "Name": "11g", - "RegionID": 11, - "HostName": "derp11g.tailscale.com", - "IPv4": "172.237.61.190", - "IPv6": "2600:3c0d::2000:62ff:febe:2e67", - "CanPort80": true - }, - { - "Name": "11e", - "RegionID": 11, - "HostName": "derp11e.tailscale.com", - "IPv4": "172.237.61.194", - "IPv6": "2600:3c0d::2000:d2ff:fe43:1790", - "CanPort80": true - } - ] - }, - "12": { - "RegionID": 12, - "RegionCode": "ord", - "RegionName": "Chicago", - "Latitude": 41.881944, - "Longitude": -87.627778, - "Nodes": [ - { - "Name": "12e", - "RegionID": 12, - "HostName": "derp12e.tailscale.com", - "IPv4": "209.177.158.15", - "IPv6": "2607:f740:e::b17", - "CanPort80": true - }, - { - "Name": "12f", - "RegionID": 12, - "HostName": "derp12f.tailscale.com", - "IPv4": "199.38.182.118", - "IPv6": "2607:f740:e::4c8", - "CanPort80": true - }, - { - "Name": "12d", - "RegionID": 12, - "HostName": "derp12d.tailscale.com", - "IPv4": "209.177.158.246", - "IPv6": "2607:f740:e::811", - "CanPort80": true - } - ] - }, - "13": { - "RegionID": 13, - "RegionCode": "den", - "RegionName": "Denver", - "Latitude": 39.7392, - "Longitude": -104.9849, - "Nodes": [ - { - "Name": "13c", - "RegionID": 13, - "HostName": "derp13c.tailscale.com", - "IPv4": "192.73.242.28", - "IPv6": "2607:f740:16::5c", - "CanPort80": true - }, - { - "Name": "13d", - "RegionID": 13, - "HostName": "derp13d.tailscale.com", - "IPv4": "192.73.242.204", - "IPv6": "2607:f740:16::c23", - "CanPort80": true - }, - { - "Name": "13b", - "RegionID": 13, - "HostName": "derp13b.tailscale.com", - "IPv4": "192.73.242.187", - "IPv6": "2607:f740:16::640", - "CanPort80": true - } - ] - }, - "14": { - "RegionID": 14, - "RegionCode": "ams", - "RegionName": "Amsterdam", - "Latitude": 52.372778, - "Longitude": 4.893611, - "Nodes": [ - { - "Name": "14c", - "RegionID": 14, - "HostName": "derp14c.tailscale.com", - "IPv4": "176.58.93.147", - "IPv6": "2a00:dd80:3c::b09", - "CanPort80": true - }, - { - "Name": "14d", - "RegionID": 14, - "HostName": "derp14d.tailscale.com", - "IPv4": "176.58.93.154", - "IPv6": "2a00:dd80:3c::3d5", - "CanPort80": true - }, - { - "Name": "14b", - "RegionID": 14, - "HostName": "derp14b.tailscale.com", - "IPv4": "176.58.93.248", - "IPv6": "2a00:dd80:3c::807", - "CanPort80": true - } - ] - }, - "15": { - "RegionID": 15, - "RegionCode": "jnb", - "RegionName": "Johannesburg", - "Latitude": -26.204444, - "Longitude": 28.045556, - "Nodes": [ - { - "Name": "15c", - "RegionID": 15, - "HostName": "derp15c.tailscale.com", - "IPv4": "102.67.165.185", - "IPv6": "2c0f:edb0:0:10::b59", - "CanPort80": true - }, - { - "Name": "15d", - "RegionID": 15, - "HostName": "derp15d.tailscale.com", - "IPv4": "102.67.165.36", - "IPv6": "2c0f:edb0:0:10::599", - "CanPort80": true - }, - { - "Name": "15b", - "RegionID": 15, - "HostName": "derp15b.tailscale.com", - "IPv4": "102.67.165.90", - "IPv6": "2c0f:edb0:0:10::963", - "CanPort80": true - } - ] - }, - "16": { - "RegionID": 16, - "RegionCode": "mia", - "RegionName": "Miami", - "Latitude": 25.78, - "Longitude": -80.21, - "Nodes": [ - { - "Name": "16c", - "RegionID": 16, - "HostName": "derp16c.tailscale.com", - "IPv4": "192.73.243.229", - "IPv6": "2607:f740:17::4e4", - "CanPort80": true - }, - { - "Name": "16d", - "RegionID": 16, - "HostName": "derp16d.tailscale.com", - "IPv4": "192.73.243.141", - "IPv6": "2607:f740:17::475", - "CanPort80": true - }, - { - "Name": "16b", - "RegionID": 16, - "HostName": "derp16b.tailscale.com", - "IPv4": "192.73.243.135", - "IPv6": "2607:f740:17::476", - "CanPort80": true - } - ] - }, - "17": { - "RegionID": 17, - "RegionCode": "lax", - "RegionName": "Los Angeles", - "Latitude": 34.05, - "Longitude": -118.25, - "Nodes": [ - { - "Name": "17c", - "RegionID": 17, - "HostName": "derp17c.tailscale.com", - "IPv4": "208.111.40.12", - "IPv6": "2607:f740:c::10", - "CanPort80": true - }, - { - "Name": "17d", - "RegionID": 17, - "HostName": "derp17d.tailscale.com", - "IPv4": "208.111.40.216", - "IPv6": "2607:f740:c::e1b", - "CanPort80": true - }, - { - "Name": "17b", - "RegionID": 17, - "HostName": "derp17b.tailscale.com", - "IPv4": "192.73.244.245", - "IPv6": "2607:f740:c::646", - "CanPort80": true - } - ] - }, - "18": { - "RegionID": 18, - "RegionCode": "par", - "RegionName": "Paris", - "Latitude": 48.856667, - "Longitude": 2.352222, - "Nodes": [ - { - "Name": "18c", - "RegionID": 18, - "HostName": "derp18c.tailscale.com", - "IPv4": "176.58.90.207", - "IPv6": "2a00:dd80:3e::c19", - "CanPort80": true - }, - { - "Name": "18d", - "RegionID": 18, - "HostName": "derp18d.tailscale.com", - "IPv4": "176.58.90.104", - "IPv6": "2a00:dd80:3e::f2e", - "CanPort80": true - }, - { - "Name": "18b", - "RegionID": 18, - "HostName": "derp18b.tailscale.com", - "IPv4": "176.58.90.147", - "IPv6": "2a00:dd80:3e::363", - "CanPort80": true - } - ] - }, - "19": { - "RegionID": 19, - "RegionCode": "mad", - "RegionName": "Madrid", - "Latitude": 40.416944, - "Longitude": -3.703333, - "Nodes": [ - { - "Name": "19c", - "RegionID": 19, - "HostName": "derp19c.tailscale.com", - "IPv4": "45.159.97.61", - "IPv6": "2a00:dd80:14:10::20", - "CanPort80": true - }, - { - "Name": "19d", - "RegionID": 19, - "HostName": "derp19d.tailscale.com", - "IPv4": "45.159.97.233", - "IPv6": "2a00:dd80:14:10::34a", - "CanPort80": true - }, - { - "Name": "19b", - "RegionID": 19, - "HostName": "derp19b.tailscale.com", - "IPv4": "45.159.97.144", - "IPv6": "2a00:dd80:14:10::335", - "CanPort80": true - } - ] - }, - "2": { - "RegionID": 2, - "RegionCode": "sfo", - "RegionName": "San Francisco", - "Latitude": 37.7775, - "Longitude": -122.416389, - "Nodes": [ - { - "Name": "2e", - "RegionID": 2, - "HostName": "derp2e.tailscale.com", - "IPv4": "192.73.252.134", - "IPv6": "2607:f740:0:3f::44c", - "CanPort80": true - }, - { - "Name": "2f", - "RegionID": 2, - "HostName": "derp2f.tailscale.com", - "IPv4": "208.111.34.178", - "IPv6": "2607:f740:0:3f::f4", - "CanPort80": true - }, - { - "Name": "2d", - "RegionID": 2, - "HostName": "derp2d.tailscale.com", - "IPv4": "192.73.252.65", - "IPv6": "2607:f740:0:3f::287", - "CanPort80": true - } - ] - }, - "20": { - "RegionID": 20, - "RegionCode": "hkg", - "RegionName": "Hong Kong", - "Latitude": 22.3193, - "Longitude": 114.1694, - "Nodes": [ - { - "Name": "20c", - "RegionID": 20, - "HostName": "derp20c.tailscale.com", - "IPv4": "205.147.105.30", - "IPv6": "2403:2500:8000:1::5fb", - "CanPort80": true - }, - { - "Name": "20d", - "RegionID": 20, - "HostName": "derp20d.tailscale.com", - "IPv4": "205.147.105.78", - "IPv6": "2403:2500:8000:1::e9a", - "CanPort80": true - }, - { - "Name": "20b", - "RegionID": 20, - "HostName": "derp20b.tailscale.com", - "IPv4": "103.6.84.152", - "IPv6": "2403:2500:8000:1::ef6", - "CanPort80": true - } - ] - }, - "21": { - "RegionID": 21, - "RegionCode": "tor", - "RegionName": "Toronto", - "Latitude": 43.741667, - "Longitude": -79.373333, - "Nodes": [ - { - "Name": "21c", - "RegionID": 21, - "HostName": "derp21c.tailscale.com", - "IPv4": "162.248.221.215", - "IPv6": "2607:f740:50::f10", - "CanPort80": true - }, - { - "Name": "21d", - "RegionID": 21, - "HostName": "derp21d.tailscale.com", - "IPv4": "162.248.221.248", - "IPv6": "2607:f740:50::ca4", - "CanPort80": true - }, - { - "Name": "21b", - "RegionID": 21, - "HostName": "derp21b.tailscale.com", - "IPv4": "162.248.221.199", - "IPv6": "2607:f740:50::1d1", - "CanPort80": true - } - ] - }, - "22": { - "RegionID": 22, - "RegionCode": "waw", - "RegionName": "Warsaw", - "Latitude": 52.23, - "Longitude": 21.011111, - "Nodes": [ - { - "Name": "22c", - "RegionID": 22, - "HostName": "derp22c.tailscale.com", - "IPv4": "45.159.98.253", - "IPv6": "2a00:dd80:40:100::3f", - "CanPort80": true - }, - { - "Name": "22d", - "RegionID": 22, - "HostName": "derp22d.tailscale.com", - "IPv4": "45.159.98.145", - "IPv6": "2a00:dd80:40:100::211", - "CanPort80": true - }, - { - "Name": "22b", - "RegionID": 22, - "HostName": "derp22b.tailscale.com", - "IPv4": "45.159.98.196", - "IPv6": "2a00:dd80:40:100::316", - "CanPort80": true - } - ] - }, - "23": { - "RegionID": 23, - "RegionCode": "dbi", - "RegionName": "Dubai", - "Latitude": 25.263056, - "Longitude": 55.297222, - "Nodes": [ - { - "Name": "23c", - "RegionID": 23, - "HostName": "derp23c.tailscale.com", - "IPv4": "185.34.3.207", - "IPv6": "2a00:dd80:3f:100::a50", - "CanPort80": true - }, - { - "Name": "23d", - "RegionID": 23, - "HostName": "derp23d.tailscale.com", - "IPv4": "185.34.3.75", - "IPv6": "2a00:dd80:3f:100::97e", - "CanPort80": true - }, - { - "Name": "23b", - "RegionID": 23, - "HostName": "derp23b.tailscale.com", - "IPv4": "185.34.3.232", - "IPv6": "2a00:dd80:3f:100::76f", - "CanPort80": true - } - ] - }, - "24": { - "RegionID": 24, - "RegionCode": "hnl", - "RegionName": "Honolulu", - "Latitude": 21.306944, - "Longitude": -157.858333, - "Nodes": [ - { - "Name": "24c", - "RegionID": 24, - "HostName": "derp24c.tailscale.com", - "IPv4": "208.83.233.233", - "IPv6": "2001:19f0:c000:c591:5400:04ff:fe26:2c5f", - "CanPort80": true - }, - { - "Name": "24d", - "RegionID": 24, - "HostName": "derp24d.tailscale.com", - "IPv4": "208.72.155.133", - "IPv6": "2001:19f0:c000:c564:5400:04ff:fe26:2ba8", - "CanPort80": true - }, - { - "Name": "24b", - "RegionID": 24, - "HostName": "derp24b.tailscale.com", - "IPv4": "208.83.234.151", - "IPv6": "2001:19f0:c000:c586:5400:04ff:fe26:2ba6", - "CanPort80": true - } - ] - }, - "25": { - "RegionID": 25, - "RegionCode": "nai", - "RegionName": "Nairobi", - "Latitude": -1.286389, - "Longitude": 36.817222, - "Nodes": [ - { - "Name": "25c", - "RegionID": 25, - "HostName": "derp25c.tailscale.com", - "IPv4": "102.67.167.37", - "IPv6": "2c0f:edb0:2000:1::2c7", - "CanPort80": true - }, - { - "Name": "25d", - "RegionID": 25, - "HostName": "derp25d.tailscale.com", - "IPv4": "102.67.167.188", - "IPv6": "2c0f:edb0:2000:1::188", - "CanPort80": true - }, - { - "Name": "25b", - "RegionID": 25, - "HostName": "derp25b.tailscale.com", - "IPv4": "102.67.167.245", - "IPv6": "2c0f:edb0:2000:1::2e9", - "CanPort80": true - } - ] - }, - "26": { - "RegionID": 26, - "RegionCode": "nue", - "RegionName": "Nuremberg", - "Latitude": 49.453889, - "Longitude": 11.0775, - "Nodes": [ - { - "Name": "26c", - "RegionID": 26, - "HostName": "derp26c.tailscale.com", - "IPv4": "49.12.193.137", - "IPv6": "2a01:4f8:1c1c:5c70::1", - "CanPort80": true - }, - { - "Name": "26d", - "RegionID": 26, - "HostName": "derp26d.tailscale.com", - "IPv4": "49.13.204.141", - "IPv6": "2a01:4f8:1c0c:7d06::1", - "CanPort80": true - }, - { - "Name": "26b", - "RegionID": 26, - "HostName": "derp26b.tailscale.com", - "IPv4": "167.235.72.200", - "IPv6": "2a01:4f8:1c1c:47b6::1", - "CanPort80": true - } - ] - }, - "27": { - "RegionID": 27, - "RegionCode": "iad", - "RegionName": "Ashburn", - "Latitude": 39.03, - "Longitude": -77.471111, - "Nodes": [ - { - "Name": "27d", - "RegionID": 27, - "HostName": "derp27d.tailscale.com", - "IPv4": "178.156.152.106", - "IPv6": "2a01:4ff:f0:3c8e::1", - "CanPort80": true - }, - { - "Name": "27c", - "RegionID": 27, - "HostName": "derp27c.tailscale.com", - "IPv4": "178.156.152.91", - "IPv6": "2a01:4ff:f0:3913::1", - "CanPort80": true - }, - { - "Name": "27e", - "RegionID": 27, - "HostName": "derp27e.tailscale.com", - "IPv4": "178.156.134.232", - "IPv6": "2a01:4ff:f0:28d4::1", - "CanPort80": true - }, - { - "Name": "27b", - "RegionID": 27, - "HostName": "derp27b.tailscale.com", - "IPv4": "5.161.218.233", - "IPv6": "2a01:4ff:f0:3db9::1", - "CanPort80": true - } - ] - }, - "28": { - "RegionID": 28, - "RegionCode": "hel", - "RegionName": "Helsinki", - "Latitude": 60.170833, - "Longitude": 24.9375, - "Nodes": [ - { - "Name": "28c", - "RegionID": 28, - "HostName": "derp28c.tailscale.com", - "IPv4": "95.217.2.165", - "IPv6": "2a01:4f9:c012:cd74::1", - "CanPort80": true - }, - { - "Name": "28d", - "RegionID": 28, - "HostName": "derp28d.tailscale.com", - "IPv4": "157.180.28.32", - "IPv6": "2a01:4f9:c012:2e5b::1", - "CanPort80": true - }, - { - "Name": "28b", - "RegionID": 28, - "HostName": "derp28b.tailscale.com", - "IPv4": "65.109.143.62", - "IPv6": "2a01:4f9:c012:d55c::1", - "CanPort80": true - } - ] - }, - "3": { - "RegionID": 3, - "RegionCode": "sin", - "RegionName": "Singapore", - "Latitude": 1.3521, - "Longitude": 103.8198, - "Nodes": [ - { - "Name": "3g", - "RegionID": 3, - "HostName": "derp3g.tailscale.com", - "IPv4": "172.237.72.79", - "IPv6": "2600:3c15::2000:adff:fe08:6fab", - "CanPort80": true - }, - { - "Name": "3f", - "RegionID": 3, - "HostName": "derp3f.tailscale.com", - "IPv4": "172.237.72.8", - "IPv6": "2600:3c15::2000:53ff:fe48:a668", - "CanPort80": true - }, - { - "Name": "3h", - "RegionID": 3, - "HostName": "derp3h.tailscale.com", - "IPv4": "172.237.66.30", - "IPv6": "2600:3c15::2000:3dff:fe44:50aa", - "CanPort80": true - }, - { - "Name": "3e", - "RegionID": 3, - "HostName": "derp3e.tailscale.com", - "IPv4": "172.237.72.43", - "IPv6": "2600:3c15::2000:6cff:fee4:d799", - "CanPort80": true - } - ] - }, - "4": { - "RegionID": 4, - "RegionCode": "fra", - "RegionName": "Frankfurt", - "Latitude": 50.1109, - "Longitude": 8.6821, - "Nodes": [ - { - "Name": "4h", - "RegionID": 4, - "HostName": "derp4h.tailscale.com", - "IPv4": "185.40.234.77", - "IPv6": "2a00:dd80:20::bcf", - "CanPort80": true - }, - { - "Name": "4g", - "RegionID": 4, - "HostName": "derp4g.tailscale.com", - "IPv4": "185.40.234.113", - "IPv6": "2a00:dd80:20::8f", - "CanPort80": true - }, - { - "Name": "4i", - "RegionID": 4, - "HostName": "derp4i.tailscale.com", - "IPv4": "185.40.234.53", - "IPv6": "2a00:dd80:20::8a6", - "CanPort80": true - }, - { - "Name": "4f", - "RegionID": 4, - "HostName": "derp4f.tailscale.com", - "IPv4": "185.40.234.219", - "IPv6": "2a00:dd80:20::a25", - "CanPort80": true - } - ] - }, - "5": { - "RegionID": 5, - "RegionCode": "syd", - "RegionName": "Sydney", - "Latitude": -33.867778, - "Longitude": 151.21, - "Nodes": [ - { - "Name": "5f", - "RegionID": 5, - "HostName": "derp5f.tailscale.com", - "IPv4": "172.105.166.103", - "IPv6": "2400:8907::2000:ccff:fe1f:80da", - "CanPort80": true - }, - { - "Name": "5g", - "RegionID": 5, - "HostName": "derp5g.tailscale.com", - "IPv4": "172.105.169.57", - "IPv6": "2400:8907::2000:2fff:fea7:57f4", - "CanPort80": true - }, - { - "Name": "5e", - "RegionID": 5, - "HostName": "derp5e.tailscale.com", - "IPv4": "172.105.179.230", - "IPv6": "2400:8907::2000:ceff:fe8d:4f4e", - "CanPort80": true - } - ] - }, - "6": { - "RegionID": 6, - "RegionCode": "blr", - "RegionName": "Bengaluru", - "Latitude": 12.9716, - "Longitude": 77.5946, - "Nodes": [ - { - "Name": "6a", - "RegionID": 6, - "HostName": "derp6.tailscale.com", - "IPv4": "68.183.90.120", - "IPv6": "2400:6180:100:d0::982:d001", - "CanPort80": true - } - ] - }, - "7": { - "RegionID": 7, - "RegionCode": "tok", - "RegionName": "Tokyo", - "Latitude": 35.6764, - "Longitude": 139.65, - "Nodes": [ - { - "Name": "7g", - "RegionID": 7, - "HostName": "derp7g.tailscale.com", - "IPv4": "172.238.6.179", - "IPv6": "2600:3c18::2000:3fff:fe80:3ebd", - "CanPort80": true - }, - { - "Name": "7f", - "RegionID": 7, - "HostName": "derp7f.tailscale.com", - "IPv4": "172.238.6.34", - "IPv6": "2600:3c18::2000:acff:fe8e:3ed5", - "CanPort80": true - }, - { - "Name": "7h", - "RegionID": 7, - "HostName": "derp7h.tailscale.com", - "IPv4": "172.237.28.183", - "IPv6": "2600:3c18::2000:b1ff:fea9:4560", - "CanPort80": true - }, - { - "Name": "7e", - "RegionID": 7, - "HostName": "derp7e.tailscale.com", - "IPv4": "172.238.6.180", - "IPv6": "2600:3c18::2000:60ff:fe0f:6e83", - "STUNOnly": true, - "CanPort80": true - } - ] - }, - "8": { - "RegionID": 8, - "RegionCode": "lhr", - "RegionName": "London", - "Latitude": 51.5072, - "Longitude": 0.1276, - "Nodes": [ - { - "Name": "8f", - "RegionID": 8, - "HostName": "derp8f.tailscale.com", - "IPv4": "176.58.88.183", - "IPv6": "2a00:dd80:3a::dfa", - "CanPort80": true - }, - { - "Name": "8g", - "RegionID": 8, - "HostName": "derp8g.tailscale.com", - "IPv4": "176.58.92.254", - "IPv6": "2a00:dd80:3a::ed", - "CanPort80": true - }, - { - "Name": "8e", - "RegionID": 8, - "HostName": "derp8e.tailscale.com", - "IPv4": "176.58.92.144", - "IPv6": "2a00:dd80:3a::b33", - "CanPort80": true - } - ] - }, - "9": { - "RegionID": 9, - "RegionCode": "dfw", - "RegionName": "Dallas", - "Latitude": 32.779167, - "Longitude": -96.808889, - "Nodes": [ - { - "Name": "9e", - "RegionID": 9, - "HostName": "derp9e.tailscale.com", - "IPv4": "192.73.248.83", - "IPv6": "2607:f740:100::359", - "CanPort80": true - }, - { - "Name": "9f", - "RegionID": 9, - "HostName": "derp9f.tailscale.com", - "IPv4": "209.177.156.197", - "IPv6": "2607:f740:100::cad", - "CanPort80": true - }, - { - "Name": "9d", - "RegionID": 9, - "HostName": "derp9d.tailscale.com", - "IPv4": "209.177.156.94", - "IPv6": "2607:f740:100::c05", - "CanPort80": true - } - ] - } - } - }, - "DisplayMessages": null, - "TKAEnabled": false, - "TKAHead": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", - "Domain": "kratail2tid@passkey", - "DomainAuditLogID": "", - "UserProfiles": { - "3982058329734709": { - "ID": 3982058329734709, - "LoginName": "monitorpasskeykradalby@passkey", - "DisplayName": "monitorpasskeykradalby" - } - } + "PacketFilterRules": 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.124.195.93": { - "peer_name": "exit-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user1/tailscaled.sock whois --json 100.124.195.93", - "response": null - }, - "100.116.18.24": { - "peer_name": "exit-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user1/tailscaled.sock whois --json 100.116.18.24", - "response": null - }, - "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.107.162.14": { - "peer_name": "group-a-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user1/tailscaled.sock whois --json 100.107.162.14", - "response": null - }, - "100.77.135.18": { - "peer_name": "group-b-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user1/tailscaled.sock whois --json 100.77.135.18", - "response": null - }, - "100.105.127.107": { - "peer_name": "multi-exit-router", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user1/tailscaled.sock whois --json 100.105.127.107", - "response": null - }, - "100.109.43.124": { - "peer_name": "router-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user1/tailscaled.sock whois --json 100.109.43.124", - "response": null - }, - "100.65.172.123": { - "peer_name": "router-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user1/tailscaled.sock whois --json 100.65.172.123", - "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 - } - }, "netmap": { - "SelfNode": { - "ID": 539541576444929, - "StableID": "nSq9YrqMD511CNTRL", - "Name": "user1.tail78f774.ts.net.", - "User": 4156223528223174, - "Key": "nodekey:96338a2cd2ea803c915ed8fdf882d66ca0c6a59d0fcf0bc4b3f928d22d1ac743", - "KeyExpiry": "2026-07-22T10:04:13Z", - "DiscoKey": "discokey:94c62b25a93d1474bcbf8b0e5f79763e3b093993c831b0a40e98b875827b232a", - "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:43259", "10.65.0.27:43259", "172.17.0.1:43259"], - "Hostinfo": { - "Hostname": "user1", - "Services": [ - { "Proto": "peerapi4", "Port": 46708 }, - { "Proto": "peerapi6", "Port": 46708 }, - { "Proto": "peerapi-dns-proxy", "Port": 1 } - ] - }, - "Created": "2026-01-23T10:04:13.531671894Z", - "MachineAuthorized": true, - "CapMap": { - "https://tailscale.com/cap/file-sharing": null, - "https://tailscale.com/cap/is-admin": null, - "https://tailscale.com/cap/is-owner": null, - "https://tailscale.com/cap/ssh": null, - "https://tailscale.com/cap/tailnet-lock": null, - "probe-udp-lifetime": null, - "ssh-behavior-v1": null, - "ssh-env-vars": null, - "store-appc-routes": null, - "tailnet-display-name": ["kratail2tid@passkey"] - }, - "ComputedName": "user1", - "ComputedNameWithHost": "user1" - }, - "AllCaps": [ - "https://tailscale.com/cap/file-sharing", - "tailnet-display-name", - "https://tailscale.com/cap/ssh", - "https://tailscale.com/cap/tailnet-lock", - "probe-udp-lifetime", - "https://tailscale.com/cap/is-admin", - "store-appc-routes", - "ssh-env-vars", - "ssh-behavior-v1", - "https://tailscale.com/cap/is-owner" - ], - "NodeKey": "nodekey:96338a2cd2ea803c915ed8fdf882d66ca0c6a59d0fcf0bc4b3f928d22d1ac743", - "MachineKey": "mkey:98b7ed0fef020882cab4324b39ac93b60741794e722411083d0d3cf703833f4a", "Peers": [], - "DNS": { - "Routes": { - "tail78f774.ts.net.": null, - "ts.net.": [{ "Addr": "199.247.155.53" }, { "Addr": "2620:111:8007::53" }] - }, - "Domains": ["tail78f774.ts.net"], - "Proxied": true, - "ExitNodeFilteredSet": [".ts.net", ".tailscale.net"] - }, - "PacketFilter": [], - "PacketFilterRules": null, - "SSHPolicy": { "rules": [] }, - "CollectServices": false, - "DERPMap": { - "Regions": { - "1": { - "RegionID": 1, - "RegionCode": "nyc", - "RegionName": "New York City", - "Latitude": 40.7128, - "Longitude": -74.006, - "Nodes": [ - { - "Name": "1h", - "RegionID": 1, - "HostName": "derp1h.tailscale.com", - "IPv4": "199.38.181.93", - "IPv6": "2607:f740:f::afd", - "CanPort80": true - }, - { - "Name": "1g", - "RegionID": 1, - "HostName": "derp1g.tailscale.com", - "IPv4": "209.177.145.120", - "IPv6": "2607:f740:f::3eb", - "CanPort80": true - }, - { - "Name": "1i", - "RegionID": 1, - "HostName": "derp1i.tailscale.com", - "IPv4": "199.38.181.103", - "IPv6": "2607:f740:f::e19", - "CanPort80": true - }, - { - "Name": "1f", - "RegionID": 1, - "HostName": "derp1f.tailscale.com", - "IPv4": "199.38.181.104", - "IPv6": "2607:f740:f::bc", - "CanPort80": true - } - ] - }, - "10": { - "RegionID": 10, - "RegionCode": "sea", - "RegionName": "Seattle", - "Latitude": 47.609722, - "Longitude": -122.333056, - "Nodes": [ - { - "Name": "10c", - "RegionID": 10, - "HostName": "derp10c.tailscale.com", - "IPv4": "192.73.240.121", - "IPv6": "2607:f740:14::40c", - "CanPort80": true - }, - { - "Name": "10d", - "RegionID": 10, - "HostName": "derp10d.tailscale.com", - "IPv4": "192.73.240.132", - "IPv6": "2607:f740:14::500", - "CanPort80": true - }, - { - "Name": "10b", - "RegionID": 10, - "HostName": "derp10b.tailscale.com", - "IPv4": "192.73.240.161", - "IPv6": "2607:f740:14::61c", - "CanPort80": true - } - ] - }, - "11": { - "RegionID": 11, - "RegionCode": "sao", - "RegionName": "São Paulo", - "Latitude": -23.55, - "Longitude": -46.633333, - "Nodes": [ - { - "Name": "11f", - "RegionID": 11, - "HostName": "derp11f.tailscale.com", - "IPv4": "172.237.61.197", - "IPv6": "2600:3c0d::2000:3bff:fe44:6166", - "CanPort80": true - }, - { - "Name": "11g", - "RegionID": 11, - "HostName": "derp11g.tailscale.com", - "IPv4": "172.237.61.190", - "IPv6": "2600:3c0d::2000:62ff:febe:2e67", - "CanPort80": true - }, - { - "Name": "11e", - "RegionID": 11, - "HostName": "derp11e.tailscale.com", - "IPv4": "172.237.61.194", - "IPv6": "2600:3c0d::2000:d2ff:fe43:1790", - "CanPort80": true - } - ] - }, - "12": { - "RegionID": 12, - "RegionCode": "ord", - "RegionName": "Chicago", - "Latitude": 41.881944, - "Longitude": -87.627778, - "Nodes": [ - { - "Name": "12e", - "RegionID": 12, - "HostName": "derp12e.tailscale.com", - "IPv4": "209.177.158.15", - "IPv6": "2607:f740:e::b17", - "CanPort80": true - }, - { - "Name": "12f", - "RegionID": 12, - "HostName": "derp12f.tailscale.com", - "IPv4": "199.38.182.118", - "IPv6": "2607:f740:e::4c8", - "CanPort80": true - }, - { - "Name": "12d", - "RegionID": 12, - "HostName": "derp12d.tailscale.com", - "IPv4": "209.177.158.246", - "IPv6": "2607:f740:e::811", - "CanPort80": true - } - ] - }, - "13": { - "RegionID": 13, - "RegionCode": "den", - "RegionName": "Denver", - "Latitude": 39.7392, - "Longitude": -104.9849, - "Nodes": [ - { - "Name": "13c", - "RegionID": 13, - "HostName": "derp13c.tailscale.com", - "IPv4": "192.73.242.28", - "IPv6": "2607:f740:16::5c", - "CanPort80": true - }, - { - "Name": "13d", - "RegionID": 13, - "HostName": "derp13d.tailscale.com", - "IPv4": "192.73.242.204", - "IPv6": "2607:f740:16::c23", - "CanPort80": true - }, - { - "Name": "13b", - "RegionID": 13, - "HostName": "derp13b.tailscale.com", - "IPv4": "192.73.242.187", - "IPv6": "2607:f740:16::640", - "CanPort80": true - } - ] - }, - "14": { - "RegionID": 14, - "RegionCode": "ams", - "RegionName": "Amsterdam", - "Latitude": 52.372778, - "Longitude": 4.893611, - "Nodes": [ - { - "Name": "14c", - "RegionID": 14, - "HostName": "derp14c.tailscale.com", - "IPv4": "176.58.93.147", - "IPv6": "2a00:dd80:3c::b09", - "CanPort80": true - }, - { - "Name": "14d", - "RegionID": 14, - "HostName": "derp14d.tailscale.com", - "IPv4": "176.58.93.154", - "IPv6": "2a00:dd80:3c::3d5", - "CanPort80": true - }, - { - "Name": "14b", - "RegionID": 14, - "HostName": "derp14b.tailscale.com", - "IPv4": "176.58.93.248", - "IPv6": "2a00:dd80:3c::807", - "CanPort80": true - } - ] - }, - "15": { - "RegionID": 15, - "RegionCode": "jnb", - "RegionName": "Johannesburg", - "Latitude": -26.204444, - "Longitude": 28.045556, - "Nodes": [ - { - "Name": "15c", - "RegionID": 15, - "HostName": "derp15c.tailscale.com", - "IPv4": "102.67.165.185", - "IPv6": "2c0f:edb0:0:10::b59", - "CanPort80": true - }, - { - "Name": "15d", - "RegionID": 15, - "HostName": "derp15d.tailscale.com", - "IPv4": "102.67.165.36", - "IPv6": "2c0f:edb0:0:10::599", - "CanPort80": true - }, - { - "Name": "15b", - "RegionID": 15, - "HostName": "derp15b.tailscale.com", - "IPv4": "102.67.165.90", - "IPv6": "2c0f:edb0:0:10::963", - "CanPort80": true - } - ] - }, - "16": { - "RegionID": 16, - "RegionCode": "mia", - "RegionName": "Miami", - "Latitude": 25.78, - "Longitude": -80.21, - "Nodes": [ - { - "Name": "16c", - "RegionID": 16, - "HostName": "derp16c.tailscale.com", - "IPv4": "192.73.243.229", - "IPv6": "2607:f740:17::4e4", - "CanPort80": true - }, - { - "Name": "16d", - "RegionID": 16, - "HostName": "derp16d.tailscale.com", - "IPv4": "192.73.243.141", - "IPv6": "2607:f740:17::475", - "CanPort80": true - }, - { - "Name": "16b", - "RegionID": 16, - "HostName": "derp16b.tailscale.com", - "IPv4": "192.73.243.135", - "IPv6": "2607:f740:17::476", - "CanPort80": true - } - ] - }, - "17": { - "RegionID": 17, - "RegionCode": "lax", - "RegionName": "Los Angeles", - "Latitude": 34.05, - "Longitude": -118.25, - "Nodes": [ - { - "Name": "17c", - "RegionID": 17, - "HostName": "derp17c.tailscale.com", - "IPv4": "208.111.40.12", - "IPv6": "2607:f740:c::10", - "CanPort80": true - }, - { - "Name": "17d", - "RegionID": 17, - "HostName": "derp17d.tailscale.com", - "IPv4": "208.111.40.216", - "IPv6": "2607:f740:c::e1b", - "CanPort80": true - }, - { - "Name": "17b", - "RegionID": 17, - "HostName": "derp17b.tailscale.com", - "IPv4": "192.73.244.245", - "IPv6": "2607:f740:c::646", - "CanPort80": true - } - ] - }, - "18": { - "RegionID": 18, - "RegionCode": "par", - "RegionName": "Paris", - "Latitude": 48.856667, - "Longitude": 2.352222, - "Nodes": [ - { - "Name": "18c", - "RegionID": 18, - "HostName": "derp18c.tailscale.com", - "IPv4": "176.58.90.207", - "IPv6": "2a00:dd80:3e::c19", - "CanPort80": true - }, - { - "Name": "18d", - "RegionID": 18, - "HostName": "derp18d.tailscale.com", - "IPv4": "176.58.90.104", - "IPv6": "2a00:dd80:3e::f2e", - "CanPort80": true - }, - { - "Name": "18b", - "RegionID": 18, - "HostName": "derp18b.tailscale.com", - "IPv4": "176.58.90.147", - "IPv6": "2a00:dd80:3e::363", - "CanPort80": true - } - ] - }, - "19": { - "RegionID": 19, - "RegionCode": "mad", - "RegionName": "Madrid", - "Latitude": 40.416944, - "Longitude": -3.703333, - "Nodes": [ - { - "Name": "19c", - "RegionID": 19, - "HostName": "derp19c.tailscale.com", - "IPv4": "45.159.97.61", - "IPv6": "2a00:dd80:14:10::20", - "CanPort80": true - }, - { - "Name": "19d", - "RegionID": 19, - "HostName": "derp19d.tailscale.com", - "IPv4": "45.159.97.233", - "IPv6": "2a00:dd80:14:10::34a", - "CanPort80": true - }, - { - "Name": "19b", - "RegionID": 19, - "HostName": "derp19b.tailscale.com", - "IPv4": "45.159.97.144", - "IPv6": "2a00:dd80:14:10::335", - "CanPort80": true - } - ] - }, - "2": { - "RegionID": 2, - "RegionCode": "sfo", - "RegionName": "San Francisco", - "Latitude": 37.7775, - "Longitude": -122.416389, - "Nodes": [ - { - "Name": "2e", - "RegionID": 2, - "HostName": "derp2e.tailscale.com", - "IPv4": "192.73.252.134", - "IPv6": "2607:f740:0:3f::44c", - "CanPort80": true - }, - { - "Name": "2f", - "RegionID": 2, - "HostName": "derp2f.tailscale.com", - "IPv4": "208.111.34.178", - "IPv6": "2607:f740:0:3f::f4", - "CanPort80": true - }, - { - "Name": "2d", - "RegionID": 2, - "HostName": "derp2d.tailscale.com", - "IPv4": "192.73.252.65", - "IPv6": "2607:f740:0:3f::287", - "CanPort80": true - } - ] - }, - "20": { - "RegionID": 20, - "RegionCode": "hkg", - "RegionName": "Hong Kong", - "Latitude": 22.3193, - "Longitude": 114.1694, - "Nodes": [ - { - "Name": "20c", - "RegionID": 20, - "HostName": "derp20c.tailscale.com", - "IPv4": "205.147.105.30", - "IPv6": "2403:2500:8000:1::5fb", - "CanPort80": true - }, - { - "Name": "20d", - "RegionID": 20, - "HostName": "derp20d.tailscale.com", - "IPv4": "205.147.105.78", - "IPv6": "2403:2500:8000:1::e9a", - "CanPort80": true - }, - { - "Name": "20b", - "RegionID": 20, - "HostName": "derp20b.tailscale.com", - "IPv4": "103.6.84.152", - "IPv6": "2403:2500:8000:1::ef6", - "CanPort80": true - } - ] - }, - "21": { - "RegionID": 21, - "RegionCode": "tor", - "RegionName": "Toronto", - "Latitude": 43.741667, - "Longitude": -79.373333, - "Nodes": [ - { - "Name": "21c", - "RegionID": 21, - "HostName": "derp21c.tailscale.com", - "IPv4": "162.248.221.215", - "IPv6": "2607:f740:50::f10", - "CanPort80": true - }, - { - "Name": "21d", - "RegionID": 21, - "HostName": "derp21d.tailscale.com", - "IPv4": "162.248.221.248", - "IPv6": "2607:f740:50::ca4", - "CanPort80": true - }, - { - "Name": "21b", - "RegionID": 21, - "HostName": "derp21b.tailscale.com", - "IPv4": "162.248.221.199", - "IPv6": "2607:f740:50::1d1", - "CanPort80": true - } - ] - }, - "22": { - "RegionID": 22, - "RegionCode": "waw", - "RegionName": "Warsaw", - "Latitude": 52.23, - "Longitude": 21.011111, - "Nodes": [ - { - "Name": "22c", - "RegionID": 22, - "HostName": "derp22c.tailscale.com", - "IPv4": "45.159.98.253", - "IPv6": "2a00:dd80:40:100::3f", - "CanPort80": true - }, - { - "Name": "22d", - "RegionID": 22, - "HostName": "derp22d.tailscale.com", - "IPv4": "45.159.98.145", - "IPv6": "2a00:dd80:40:100::211", - "CanPort80": true - }, - { - "Name": "22b", - "RegionID": 22, - "HostName": "derp22b.tailscale.com", - "IPv4": "45.159.98.196", - "IPv6": "2a00:dd80:40:100::316", - "CanPort80": true - } - ] - }, - "23": { - "RegionID": 23, - "RegionCode": "dbi", - "RegionName": "Dubai", - "Latitude": 25.263056, - "Longitude": 55.297222, - "Nodes": [ - { - "Name": "23c", - "RegionID": 23, - "HostName": "derp23c.tailscale.com", - "IPv4": "185.34.3.207", - "IPv6": "2a00:dd80:3f:100::a50", - "CanPort80": true - }, - { - "Name": "23d", - "RegionID": 23, - "HostName": "derp23d.tailscale.com", - "IPv4": "185.34.3.75", - "IPv6": "2a00:dd80:3f:100::97e", - "CanPort80": true - }, - { - "Name": "23b", - "RegionID": 23, - "HostName": "derp23b.tailscale.com", - "IPv4": "185.34.3.232", - "IPv6": "2a00:dd80:3f:100::76f", - "CanPort80": true - } - ] - }, - "24": { - "RegionID": 24, - "RegionCode": "hnl", - "RegionName": "Honolulu", - "Latitude": 21.306944, - "Longitude": -157.858333, - "Nodes": [ - { - "Name": "24c", - "RegionID": 24, - "HostName": "derp24c.tailscale.com", - "IPv4": "208.83.233.233", - "IPv6": "2001:19f0:c000:c591:5400:04ff:fe26:2c5f", - "CanPort80": true - }, - { - "Name": "24d", - "RegionID": 24, - "HostName": "derp24d.tailscale.com", - "IPv4": "208.72.155.133", - "IPv6": "2001:19f0:c000:c564:5400:04ff:fe26:2ba8", - "CanPort80": true - }, - { - "Name": "24b", - "RegionID": 24, - "HostName": "derp24b.tailscale.com", - "IPv4": "208.83.234.151", - "IPv6": "2001:19f0:c000:c586:5400:04ff:fe26:2ba6", - "CanPort80": true - } - ] - }, - "25": { - "RegionID": 25, - "RegionCode": "nai", - "RegionName": "Nairobi", - "Latitude": -1.286389, - "Longitude": 36.817222, - "Nodes": [ - { - "Name": "25c", - "RegionID": 25, - "HostName": "derp25c.tailscale.com", - "IPv4": "102.67.167.37", - "IPv6": "2c0f:edb0:2000:1::2c7", - "CanPort80": true - }, - { - "Name": "25d", - "RegionID": 25, - "HostName": "derp25d.tailscale.com", - "IPv4": "102.67.167.188", - "IPv6": "2c0f:edb0:2000:1::188", - "CanPort80": true - }, - { - "Name": "25b", - "RegionID": 25, - "HostName": "derp25b.tailscale.com", - "IPv4": "102.67.167.245", - "IPv6": "2c0f:edb0:2000:1::2e9", - "CanPort80": true - } - ] - }, - "26": { - "RegionID": 26, - "RegionCode": "nue", - "RegionName": "Nuremberg", - "Latitude": 49.453889, - "Longitude": 11.0775, - "Nodes": [ - { - "Name": "26c", - "RegionID": 26, - "HostName": "derp26c.tailscale.com", - "IPv4": "49.12.193.137", - "IPv6": "2a01:4f8:1c1c:5c70::1", - "CanPort80": true - }, - { - "Name": "26d", - "RegionID": 26, - "HostName": "derp26d.tailscale.com", - "IPv4": "49.13.204.141", - "IPv6": "2a01:4f8:1c0c:7d06::1", - "CanPort80": true - }, - { - "Name": "26b", - "RegionID": 26, - "HostName": "derp26b.tailscale.com", - "IPv4": "167.235.72.200", - "IPv6": "2a01:4f8:1c1c:47b6::1", - "CanPort80": true - } - ] - }, - "27": { - "RegionID": 27, - "RegionCode": "iad", - "RegionName": "Ashburn", - "Latitude": 39.03, - "Longitude": -77.471111, - "Nodes": [ - { - "Name": "27d", - "RegionID": 27, - "HostName": "derp27d.tailscale.com", - "IPv4": "178.156.152.106", - "IPv6": "2a01:4ff:f0:3c8e::1", - "CanPort80": true - }, - { - "Name": "27c", - "RegionID": 27, - "HostName": "derp27c.tailscale.com", - "IPv4": "178.156.152.91", - "IPv6": "2a01:4ff:f0:3913::1", - "CanPort80": true - }, - { - "Name": "27e", - "RegionID": 27, - "HostName": "derp27e.tailscale.com", - "IPv4": "178.156.134.232", - "IPv6": "2a01:4ff:f0:28d4::1", - "CanPort80": true - }, - { - "Name": "27b", - "RegionID": 27, - "HostName": "derp27b.tailscale.com", - "IPv4": "5.161.218.233", - "IPv6": "2a01:4ff:f0:3db9::1", - "CanPort80": true - } - ] - }, - "28": { - "RegionID": 28, - "RegionCode": "hel", - "RegionName": "Helsinki", - "Latitude": 60.170833, - "Longitude": 24.9375, - "Nodes": [ - { - "Name": "28c", - "RegionID": 28, - "HostName": "derp28c.tailscale.com", - "IPv4": "95.217.2.165", - "IPv6": "2a01:4f9:c012:cd74::1", - "CanPort80": true - }, - { - "Name": "28d", - "RegionID": 28, - "HostName": "derp28d.tailscale.com", - "IPv4": "157.180.28.32", - "IPv6": "2a01:4f9:c012:2e5b::1", - "CanPort80": true - }, - { - "Name": "28b", - "RegionID": 28, - "HostName": "derp28b.tailscale.com", - "IPv4": "65.109.143.62", - "IPv6": "2a01:4f9:c012:d55c::1", - "CanPort80": true - } - ] - }, - "3": { - "RegionID": 3, - "RegionCode": "sin", - "RegionName": "Singapore", - "Latitude": 1.3521, - "Longitude": 103.8198, - "Nodes": [ - { - "Name": "3g", - "RegionID": 3, - "HostName": "derp3g.tailscale.com", - "IPv4": "172.237.72.79", - "IPv6": "2600:3c15::2000:adff:fe08:6fab", - "CanPort80": true - }, - { - "Name": "3f", - "RegionID": 3, - "HostName": "derp3f.tailscale.com", - "IPv4": "172.237.72.8", - "IPv6": "2600:3c15::2000:53ff:fe48:a668", - "CanPort80": true - }, - { - "Name": "3h", - "RegionID": 3, - "HostName": "derp3h.tailscale.com", - "IPv4": "172.237.66.30", - "IPv6": "2600:3c15::2000:3dff:fe44:50aa", - "CanPort80": true - }, - { - "Name": "3e", - "RegionID": 3, - "HostName": "derp3e.tailscale.com", - "IPv4": "172.237.72.43", - "IPv6": "2600:3c15::2000:6cff:fee4:d799", - "CanPort80": true - } - ] - }, - "4": { - "RegionID": 4, - "RegionCode": "fra", - "RegionName": "Frankfurt", - "Latitude": 50.1109, - "Longitude": 8.6821, - "Nodes": [ - { - "Name": "4h", - "RegionID": 4, - "HostName": "derp4h.tailscale.com", - "IPv4": "185.40.234.77", - "IPv6": "2a00:dd80:20::bcf", - "CanPort80": true - }, - { - "Name": "4g", - "RegionID": 4, - "HostName": "derp4g.tailscale.com", - "IPv4": "185.40.234.113", - "IPv6": "2a00:dd80:20::8f", - "CanPort80": true - }, - { - "Name": "4i", - "RegionID": 4, - "HostName": "derp4i.tailscale.com", - "IPv4": "185.40.234.53", - "IPv6": "2a00:dd80:20::8a6", - "CanPort80": true - }, - { - "Name": "4f", - "RegionID": 4, - "HostName": "derp4f.tailscale.com", - "IPv4": "185.40.234.219", - "IPv6": "2a00:dd80:20::a25", - "CanPort80": true - } - ] - }, - "5": { - "RegionID": 5, - "RegionCode": "syd", - "RegionName": "Sydney", - "Latitude": -33.867778, - "Longitude": 151.21, - "Nodes": [ - { - "Name": "5f", - "RegionID": 5, - "HostName": "derp5f.tailscale.com", - "IPv4": "172.105.166.103", - "IPv6": "2400:8907::2000:ccff:fe1f:80da", - "CanPort80": true - }, - { - "Name": "5g", - "RegionID": 5, - "HostName": "derp5g.tailscale.com", - "IPv4": "172.105.169.57", - "IPv6": "2400:8907::2000:2fff:fea7:57f4", - "CanPort80": true - }, - { - "Name": "5e", - "RegionID": 5, - "HostName": "derp5e.tailscale.com", - "IPv4": "172.105.179.230", - "IPv6": "2400:8907::2000:ceff:fe8d:4f4e", - "CanPort80": true - } - ] - }, - "6": { - "RegionID": 6, - "RegionCode": "blr", - "RegionName": "Bengaluru", - "Latitude": 12.9716, - "Longitude": 77.5946, - "Nodes": [ - { - "Name": "6a", - "RegionID": 6, - "HostName": "derp6.tailscale.com", - "IPv4": "68.183.90.120", - "IPv6": "2400:6180:100:d0::982:d001", - "CanPort80": true - } - ] - }, - "7": { - "RegionID": 7, - "RegionCode": "tok", - "RegionName": "Tokyo", - "Latitude": 35.6764, - "Longitude": 139.65, - "Nodes": [ - { - "Name": "7g", - "RegionID": 7, - "HostName": "derp7g.tailscale.com", - "IPv4": "172.238.6.179", - "IPv6": "2600:3c18::2000:3fff:fe80:3ebd", - "CanPort80": true - }, - { - "Name": "7f", - "RegionID": 7, - "HostName": "derp7f.tailscale.com", - "IPv4": "172.238.6.34", - "IPv6": "2600:3c18::2000:acff:fe8e:3ed5", - "CanPort80": true - }, - { - "Name": "7h", - "RegionID": 7, - "HostName": "derp7h.tailscale.com", - "IPv4": "172.237.28.183", - "IPv6": "2600:3c18::2000:b1ff:fea9:4560", - "CanPort80": true - }, - { - "Name": "7e", - "RegionID": 7, - "HostName": "derp7e.tailscale.com", - "IPv4": "172.238.6.180", - "IPv6": "2600:3c18::2000:60ff:fe0f:6e83", - "STUNOnly": true, - "CanPort80": true - } - ] - }, - "8": { - "RegionID": 8, - "RegionCode": "lhr", - "RegionName": "London", - "Latitude": 51.5072, - "Longitude": 0.1276, - "Nodes": [ - { - "Name": "8f", - "RegionID": 8, - "HostName": "derp8f.tailscale.com", - "IPv4": "176.58.88.183", - "IPv6": "2a00:dd80:3a::dfa", - "CanPort80": true - }, - { - "Name": "8g", - "RegionID": 8, - "HostName": "derp8g.tailscale.com", - "IPv4": "176.58.92.254", - "IPv6": "2a00:dd80:3a::ed", - "CanPort80": true - }, - { - "Name": "8e", - "RegionID": 8, - "HostName": "derp8e.tailscale.com", - "IPv4": "176.58.92.144", - "IPv6": "2a00:dd80:3a::b33", - "CanPort80": true - } - ] - }, - "9": { - "RegionID": 9, - "RegionCode": "dfw", - "RegionName": "Dallas", - "Latitude": 32.779167, - "Longitude": -96.808889, - "Nodes": [ - { - "Name": "9e", - "RegionID": 9, - "HostName": "derp9e.tailscale.com", - "IPv4": "192.73.248.83", - "IPv6": "2607:f740:100::359", - "CanPort80": true - }, - { - "Name": "9f", - "RegionID": 9, - "HostName": "derp9f.tailscale.com", - "IPv4": "209.177.156.197", - "IPv6": "2607:f740:100::cad", - "CanPort80": true - }, - { - "Name": "9d", - "RegionID": 9, - "HostName": "derp9d.tailscale.com", - "IPv4": "209.177.156.94", - "IPv6": "2607:f740:100::c05", - "CanPort80": true - } - ] - } - } - }, - "DisplayMessages": null, - "TKAEnabled": false, - "TKAHead": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", - "Domain": "kratail2tid@passkey", - "DomainAuditLogID": "", - "UserProfiles": { - "4156223528223174": { - "ID": 4156223528223174, - "LoginName": "kratail2tid@passkey", - "DisplayName": "kratail2tid" - } - } + "PacketFilterRules": null } } } diff --git a/hscontrol/policy/v2/testdata/grant_results/GRANT-V15.hujson b/hscontrol/policy/v2/testdata/grant_results/GRANT-V15.hujson index 3315b70bf..e5cad1245 100644 --- a/hscontrol/policy/v2/testdata/grant_results/GRANT-V15.hujson +++ b/hscontrol/policy/v2/testdata/grant_results/GRANT-V15.hujson @@ -5,29 +5,55 @@ // Expected: No filter rules on any node { "test_id": "GRANT-V15", - "timestamp": "2026-03-28T11:50:55Z", - "propagation_wait_seconds": 8, "input": { - "policy_file": "grant_policies_via/grant_v15.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"], - "tag:exit-a": ["kratail2tid@passkey"], - "tag:exit-b": ["kratail2tid@passkey"], - "tag:group-a": ["kratail2tid@passkey"], - "tag:group-b": ["kratail2tid@passkey"], - "tag:router-a": ["kratail2tid@passkey"], - "tag:router-b": ["kratail2tid@passkey"] + "tag:server": [ + "kratail2tid@passkey" + ], + "tag:prod": [ + "kratail2tid@passkey" + ], + "tag:client": [ + "kratail2tid@passkey" + ], + "tag:router": [ + "kratail2tid@passkey" + ], + "tag:exit": [ + "kratail2tid@passkey" + ], + "tag:exit-a": [ + "kratail2tid@passkey" + ], + "tag:exit-b": [ + "kratail2tid@passkey" + ], + "tag:group-a": [ + "kratail2tid@passkey" + ], + "tag:group-b": [ + "kratail2tid@passkey" + ], + "tag:router-a": [ + "kratail2tid@passkey" + ], + "tag:router-b": [ + "kratail2tid@passkey" + ] }, "hosts": { "webserver": "100.108.74.26", @@ -36,160 +62,159 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "10.44.0.0/16": ["tag:router-a"], - "10.55.0.0/16": ["tag:router-b"], - "0.0.0.0/0": ["tag:exit", "tag:exit-a", "tag:exit-b"], - "::/0": ["tag:exit", "tag:exit-a", "tag:exit-b"] + "10.33.0.0/16": [ + "tag:router" + ], + "10.44.0.0/16": [ + "tag:router-a" + ], + "10.55.0.0/16": [ + "tag:router-b" + ], + "0.0.0.0/0": [ + "tag:exit", + "tag:exit-a", + "tag:exit-b" + ], + "::/0": [ + "tag:exit", + "tag:exit-a", + "tag:exit-b" + ] } }, "grants": [ { - "src": ["*"], - "dst": ["autogroup:internet"], - "via": ["tag:exit"], - "ip": ["*"] + "src": [ + "*" + ], + "dst": [ + "autogroup:internet" + ], + "via": [ + "tag:exit" + ], + "ip": [ + "*" + ] } ] }, - "grants_section": [{ "src": ["*"], "dst": ["autogroup:internet"], "via": ["tag:exit"], "ip": ["*"] }], - "api_endpoint": "https://api.tailscale.com/api/v2/tailnet/kratail2tid%40passkey/acl", - "api_method": "POST", "api_response_code": 200 }, "topology": { "nodes": { "exit-a": { - "mts_name": "exit-a", - "socket": "/home/kradalby/.config/multi-tailscale-dev/exit-a/tailscaled.sock", "hostname": "exit-a", - "user_id": 3118755726458377, - "tags": ["tag:exit-a"], + "tags": [ + "tag:exit-a" + ], "ipv4": "100.124.195.93", "ipv6": "fd7a:115c:a1e0::7837:c35d" }, "exit-b": { - "mts_name": "exit-b", - "socket": "/home/kradalby/.config/multi-tailscale-dev/exit-b/tailscaled.sock", "hostname": "exit-b", - "user_id": 2230775583277936, - "tags": ["tag:exit-b"], + "tags": [ + "tag:exit-b" + ], "ipv4": "100.116.18.24", "ipv6": "fd7a:115c:a1e0::ff37:1218" }, "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"], + "tags": [ + "tag:exit" + ], "ipv4": "100.85.66.106", "ipv6": "fd7a:115c:a1e0::7c37:426a" }, "group-a-client": { - "mts_name": "group-a-client", - "socket": "/home/kradalby/.config/multi-tailscale-dev/group-a-client/tailscaled.sock", "hostname": "group-a-client", - "user_id": 6999435610919250, - "tags": ["tag:group-a"], + "tags": [ + "tag:group-a" + ], "ipv4": "100.107.162.14", "ipv6": "fd7a:115c:a1e0::a237:a20e" }, "group-b-client": { - "mts_name": "group-b-client", - "socket": "/home/kradalby/.config/multi-tailscale-dev/group-b-client/tailscaled.sock", "hostname": "group-b-client", - "user_id": 1008089393782498, - "tags": ["tag:group-b"], + "tags": [ + "tag:group-b" + ], "ipv4": "100.77.135.18", "ipv6": "fd7a:115c:a1e0::4b37:8712" }, "multi-exit-router": { - "mts_name": "multi-exit-router", - "socket": "/home/kradalby/.config/multi-tailscale-dev/multi-exit-router/tailscaled.sock", "hostname": "multi-exit-router", - "user_id": 6294409699640722, - "tags": ["tag:exit", "tag:router"], + "tags": [ + "tag:exit", + "tag:router" + ], "ipv4": "100.105.127.107", "ipv6": "fd7a:115c:a1e0::ad37:7f6b" }, "router-a": { - "mts_name": "router-a", - "socket": "/home/kradalby/.config/multi-tailscale-dev/router-a/tailscaled.sock", "hostname": "router-a", - "user_id": 50590507314324, - "tags": ["tag:router-a"], + "tags": [ + "tag:router-a" + ], "ipv4": "100.109.43.124", "ipv6": "fd7a:115c:a1e0::a537:2b7c" }, "router-b": { - "mts_name": "router-b", - "socket": "/home/kradalby/.config/multi-tailscale-dev/router-b/tailscaled.sock", "hostname": "router-b", - "user_id": 1399889648409786, - "tags": ["tag:router-b"], + "tags": [ + "tag:router-b" + ], "ipv4": "100.65.172.123", "ipv6": "fd7a:115c:a1e0::5a37:ac7c" }, "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"], + "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"], + "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"], + "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"], + "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" @@ -198,16660 +223,108 @@ }, "captures": { "exit-a": { - "commands": { - "packet_filter_rules": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-a/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-a/tailscaled.sock debug localapi POST debug-packet-filter-matches" - }, "packet_filter_rules": null, - "packet_filter_matches": [], - "whois": { - "100.116.18.24": { - "peer_name": "exit-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-a/tailscaled.sock whois --json 100.116.18.24", - "response": null - }, - "100.85.66.106": { - "peer_name": "exit-node", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-a/tailscaled.sock whois --json 100.85.66.106", - "response": null - }, - "100.107.162.14": { - "peer_name": "group-a-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-a/tailscaled.sock whois --json 100.107.162.14", - "response": null - }, - "100.77.135.18": { - "peer_name": "group-b-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-a/tailscaled.sock whois --json 100.77.135.18", - "response": null - }, - "100.105.127.107": { - "peer_name": "multi-exit-router", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-a/tailscaled.sock whois --json 100.105.127.107", - "response": null - }, - "100.109.43.124": { - "peer_name": "router-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-a/tailscaled.sock whois --json 100.109.43.124", - "response": null - }, - "100.65.172.123": { - "peer_name": "router-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-a/tailscaled.sock whois --json 100.65.172.123", - "response": null - }, - "100.92.142.61": { - "peer_name": "subnet-router", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-a/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-a/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-a/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-a/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-a/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-a/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-a/tailscaled.sock whois --json 100.90.199.68", - "response": null - } - }, "netmap": { - "SelfNode": { - "ID": 3118755726458377, - "StableID": "nvFTscRVMR11CNTRL", - "Name": "exit-a.tail78f774.ts.net.", - "User": 3118755726458377, - "Key": "nodekey:21ab6fa3288e3bf8cecced295316c6327f427649765eb1746cc6ee9978bcc35c", - "DiscoKey": "discokey:0c8595f67987ed47cf551646d6266c21a635d622409d10745cc08f6922066e49", - "Addresses": ["100.124.195.93/32", "fd7a:115c:a1e0::7837:c35d/128"], - "AllowedIPs": ["100.124.195.93/32", "fd7a:115c:a1e0::7837:c35d/128"], - "Endpoints": ["77.164.248.136:37550", "10.65.0.27:37550", "172.17.0.1:37550"], - "Hostinfo": { - "Hostname": "exit-a", - "RoutableIPs": ["0.0.0.0/0", "::/0"], - "RequestTags": ["tag:exit-a"], - "Services": [ - { "Proto": "peerapi4", "Port": 57826 }, - { "Proto": "peerapi6", "Port": 57826 }, - { "Proto": "peerapi-dns-proxy", "Port": 1 } - ] - }, - "Created": "2026-03-28T10:37:56.932966573Z", - "Tags": ["tag:exit-a"], - "MachineAuthorized": true, - "CapMap": { - "https://tailscale.com/cap/file-sharing": null, - "https://tailscale.com/cap/is-owner": null, - "https://tailscale.com/cap/ssh": null, - "https://tailscale.com/cap/tailnet-lock": null, - "probe-udp-lifetime": null, - "ssh-behavior-v1": null, - "ssh-env-vars": null, - "store-appc-routes": null, - "tailnet-display-name": ["kratail2tid@passkey"] - }, - "ComputedName": "exit-a", - "ComputedNameWithHost": "exit-a" - }, - "AllCaps": [ - "https://tailscale.com/cap/is-owner", - "ssh-env-vars", - "store-appc-routes", - "tailnet-display-name", - "probe-udp-lifetime", - "https://tailscale.com/cap/file-sharing", - "ssh-behavior-v1", - "https://tailscale.com/cap/ssh", - "https://tailscale.com/cap/tailnet-lock" - ], - "NodeKey": "nodekey:21ab6fa3288e3bf8cecced295316c6327f427649765eb1746cc6ee9978bcc35c", - "MachineKey": "mkey:d4a36168723163165bbdcb0b17762903171593d01c26c5bb12216932f6d10876", "Peers": [], - "DNS": { - "Routes": { - "tail78f774.ts.net.": null, - "ts.net.": [{ "Addr": "199.247.155.53" }, { "Addr": "2620:111:8007::53" }] - }, - "Domains": ["tail78f774.ts.net"], - "Proxied": true, - "ExitNodeFilteredSet": [".ts.net", ".tailscale.net"] - }, - "PacketFilter": [], - "PacketFilterRules": null, - "SSHPolicy": { "rules": [] }, - "CollectServices": false, - "DERPMap": { - "Regions": { - "1": { - "RegionID": 1, - "RegionCode": "nyc", - "RegionName": "New York City", - "Latitude": 40.7128, - "Longitude": -74.006, - "Nodes": [ - { - "Name": "1h", - "RegionID": 1, - "HostName": "derp1h.tailscale.com", - "IPv4": "199.38.181.93", - "IPv6": "2607:f740:f::afd", - "CanPort80": true - }, - { - "Name": "1g", - "RegionID": 1, - "HostName": "derp1g.tailscale.com", - "IPv4": "209.177.145.120", - "IPv6": "2607:f740:f::3eb", - "CanPort80": true - }, - { - "Name": "1i", - "RegionID": 1, - "HostName": "derp1i.tailscale.com", - "IPv4": "199.38.181.103", - "IPv6": "2607:f740:f::e19", - "CanPort80": true - }, - { - "Name": "1f", - "RegionID": 1, - "HostName": "derp1f.tailscale.com", - "IPv4": "199.38.181.104", - "IPv6": "2607:f740:f::bc", - "CanPort80": true - } - ] - }, - "10": { - "RegionID": 10, - "RegionCode": "sea", - "RegionName": "Seattle", - "Latitude": 47.609722, - "Longitude": -122.333056, - "Nodes": [ - { - "Name": "10c", - "RegionID": 10, - "HostName": "derp10c.tailscale.com", - "IPv4": "192.73.240.121", - "IPv6": "2607:f740:14::40c", - "CanPort80": true - }, - { - "Name": "10d", - "RegionID": 10, - "HostName": "derp10d.tailscale.com", - "IPv4": "192.73.240.132", - "IPv6": "2607:f740:14::500", - "CanPort80": true - }, - { - "Name": "10b", - "RegionID": 10, - "HostName": "derp10b.tailscale.com", - "IPv4": "192.73.240.161", - "IPv6": "2607:f740:14::61c", - "CanPort80": true - } - ] - }, - "11": { - "RegionID": 11, - "RegionCode": "sao", - "RegionName": "São Paulo", - "Latitude": -23.55, - "Longitude": -46.633333, - "Nodes": [ - { - "Name": "11f", - "RegionID": 11, - "HostName": "derp11f.tailscale.com", - "IPv4": "172.237.61.197", - "IPv6": "2600:3c0d::2000:3bff:fe44:6166", - "CanPort80": true - }, - { - "Name": "11g", - "RegionID": 11, - "HostName": "derp11g.tailscale.com", - "IPv4": "172.237.61.190", - "IPv6": "2600:3c0d::2000:62ff:febe:2e67", - "CanPort80": true - }, - { - "Name": "11e", - "RegionID": 11, - "HostName": "derp11e.tailscale.com", - "IPv4": "172.237.61.194", - "IPv6": "2600:3c0d::2000:d2ff:fe43:1790", - "CanPort80": true - } - ] - }, - "12": { - "RegionID": 12, - "RegionCode": "ord", - "RegionName": "Chicago", - "Latitude": 41.881944, - "Longitude": -87.627778, - "Nodes": [ - { - "Name": "12e", - "RegionID": 12, - "HostName": "derp12e.tailscale.com", - "IPv4": "209.177.158.15", - "IPv6": "2607:f740:e::b17", - "CanPort80": true - }, - { - "Name": "12f", - "RegionID": 12, - "HostName": "derp12f.tailscale.com", - "IPv4": "199.38.182.118", - "IPv6": "2607:f740:e::4c8", - "CanPort80": true - }, - { - "Name": "12d", - "RegionID": 12, - "HostName": "derp12d.tailscale.com", - "IPv4": "209.177.158.246", - "IPv6": "2607:f740:e::811", - "CanPort80": true - } - ] - }, - "13": { - "RegionID": 13, - "RegionCode": "den", - "RegionName": "Denver", - "Latitude": 39.7392, - "Longitude": -104.9849, - "Nodes": [ - { - "Name": "13c", - "RegionID": 13, - "HostName": "derp13c.tailscale.com", - "IPv4": "192.73.242.28", - "IPv6": "2607:f740:16::5c", - "CanPort80": true - }, - { - "Name": "13d", - "RegionID": 13, - "HostName": "derp13d.tailscale.com", - "IPv4": "192.73.242.204", - "IPv6": "2607:f740:16::c23", - "CanPort80": true - }, - { - "Name": "13b", - "RegionID": 13, - "HostName": "derp13b.tailscale.com", - "IPv4": "192.73.242.187", - "IPv6": "2607:f740:16::640", - "CanPort80": true - } - ] - }, - "14": { - "RegionID": 14, - "RegionCode": "ams", - "RegionName": "Amsterdam", - "Latitude": 52.372778, - "Longitude": 4.893611, - "Nodes": [ - { - "Name": "14c", - "RegionID": 14, - "HostName": "derp14c.tailscale.com", - "IPv4": "176.58.93.147", - "IPv6": "2a00:dd80:3c::b09", - "CanPort80": true - }, - { - "Name": "14d", - "RegionID": 14, - "HostName": "derp14d.tailscale.com", - "IPv4": "176.58.93.154", - "IPv6": "2a00:dd80:3c::3d5", - "CanPort80": true - }, - { - "Name": "14b", - "RegionID": 14, - "HostName": "derp14b.tailscale.com", - "IPv4": "176.58.93.248", - "IPv6": "2a00:dd80:3c::807", - "CanPort80": true - } - ] - }, - "15": { - "RegionID": 15, - "RegionCode": "jnb", - "RegionName": "Johannesburg", - "Latitude": -26.204444, - "Longitude": 28.045556, - "Nodes": [ - { - "Name": "15c", - "RegionID": 15, - "HostName": "derp15c.tailscale.com", - "IPv4": "102.67.165.185", - "IPv6": "2c0f:edb0:0:10::b59", - "CanPort80": true - }, - { - "Name": "15d", - "RegionID": 15, - "HostName": "derp15d.tailscale.com", - "IPv4": "102.67.165.36", - "IPv6": "2c0f:edb0:0:10::599", - "CanPort80": true - }, - { - "Name": "15b", - "RegionID": 15, - "HostName": "derp15b.tailscale.com", - "IPv4": "102.67.165.90", - "IPv6": "2c0f:edb0:0:10::963", - "CanPort80": true - } - ] - }, - "16": { - "RegionID": 16, - "RegionCode": "mia", - "RegionName": "Miami", - "Latitude": 25.78, - "Longitude": -80.21, - "Nodes": [ - { - "Name": "16c", - "RegionID": 16, - "HostName": "derp16c.tailscale.com", - "IPv4": "192.73.243.229", - "IPv6": "2607:f740:17::4e4", - "CanPort80": true - }, - { - "Name": "16d", - "RegionID": 16, - "HostName": "derp16d.tailscale.com", - "IPv4": "192.73.243.141", - "IPv6": "2607:f740:17::475", - "CanPort80": true - }, - { - "Name": "16b", - "RegionID": 16, - "HostName": "derp16b.tailscale.com", - "IPv4": "192.73.243.135", - "IPv6": "2607:f740:17::476", - "CanPort80": true - } - ] - }, - "17": { - "RegionID": 17, - "RegionCode": "lax", - "RegionName": "Los Angeles", - "Latitude": 34.05, - "Longitude": -118.25, - "Nodes": [ - { - "Name": "17c", - "RegionID": 17, - "HostName": "derp17c.tailscale.com", - "IPv4": "208.111.40.12", - "IPv6": "2607:f740:c::10", - "CanPort80": true - }, - { - "Name": "17d", - "RegionID": 17, - "HostName": "derp17d.tailscale.com", - "IPv4": "208.111.40.216", - "IPv6": "2607:f740:c::e1b", - "CanPort80": true - }, - { - "Name": "17b", - "RegionID": 17, - "HostName": "derp17b.tailscale.com", - "IPv4": "192.73.244.245", - "IPv6": "2607:f740:c::646", - "CanPort80": true - } - ] - }, - "18": { - "RegionID": 18, - "RegionCode": "par", - "RegionName": "Paris", - "Latitude": 48.856667, - "Longitude": 2.352222, - "Nodes": [ - { - "Name": "18c", - "RegionID": 18, - "HostName": "derp18c.tailscale.com", - "IPv4": "176.58.90.207", - "IPv6": "2a00:dd80:3e::c19", - "CanPort80": true - }, - { - "Name": "18d", - "RegionID": 18, - "HostName": "derp18d.tailscale.com", - "IPv4": "176.58.90.104", - "IPv6": "2a00:dd80:3e::f2e", - "CanPort80": true - }, - { - "Name": "18b", - "RegionID": 18, - "HostName": "derp18b.tailscale.com", - "IPv4": "176.58.90.147", - "IPv6": "2a00:dd80:3e::363", - "CanPort80": true - } - ] - }, - "19": { - "RegionID": 19, - "RegionCode": "mad", - "RegionName": "Madrid", - "Latitude": 40.416944, - "Longitude": -3.703333, - "Nodes": [ - { - "Name": "19c", - "RegionID": 19, - "HostName": "derp19c.tailscale.com", - "IPv4": "45.159.97.61", - "IPv6": "2a00:dd80:14:10::20", - "CanPort80": true - }, - { - "Name": "19d", - "RegionID": 19, - "HostName": "derp19d.tailscale.com", - "IPv4": "45.159.97.233", - "IPv6": "2a00:dd80:14:10::34a", - "CanPort80": true - }, - { - "Name": "19b", - "RegionID": 19, - "HostName": "derp19b.tailscale.com", - "IPv4": "45.159.97.144", - "IPv6": "2a00:dd80:14:10::335", - "CanPort80": true - } - ] - }, - "2": { - "RegionID": 2, - "RegionCode": "sfo", - "RegionName": "San Francisco", - "Latitude": 37.7775, - "Longitude": -122.416389, - "Nodes": [ - { - "Name": "2e", - "RegionID": 2, - "HostName": "derp2e.tailscale.com", - "IPv4": "192.73.252.134", - "IPv6": "2607:f740:0:3f::44c", - "CanPort80": true - }, - { - "Name": "2f", - "RegionID": 2, - "HostName": "derp2f.tailscale.com", - "IPv4": "208.111.34.178", - "IPv6": "2607:f740:0:3f::f4", - "CanPort80": true - }, - { - "Name": "2d", - "RegionID": 2, - "HostName": "derp2d.tailscale.com", - "IPv4": "192.73.252.65", - "IPv6": "2607:f740:0:3f::287", - "CanPort80": true - } - ] - }, - "20": { - "RegionID": 20, - "RegionCode": "hkg", - "RegionName": "Hong Kong", - "Latitude": 22.3193, - "Longitude": 114.1694, - "Nodes": [ - { - "Name": "20c", - "RegionID": 20, - "HostName": "derp20c.tailscale.com", - "IPv4": "205.147.105.30", - "IPv6": "2403:2500:8000:1::5fb", - "CanPort80": true - }, - { - "Name": "20d", - "RegionID": 20, - "HostName": "derp20d.tailscale.com", - "IPv4": "205.147.105.78", - "IPv6": "2403:2500:8000:1::e9a", - "CanPort80": true - }, - { - "Name": "20b", - "RegionID": 20, - "HostName": "derp20b.tailscale.com", - "IPv4": "103.6.84.152", - "IPv6": "2403:2500:8000:1::ef6", - "CanPort80": true - } - ] - }, - "21": { - "RegionID": 21, - "RegionCode": "tor", - "RegionName": "Toronto", - "Latitude": 43.741667, - "Longitude": -79.373333, - "Nodes": [ - { - "Name": "21c", - "RegionID": 21, - "HostName": "derp21c.tailscale.com", - "IPv4": "162.248.221.215", - "IPv6": "2607:f740:50::f10", - "CanPort80": true - }, - { - "Name": "21d", - "RegionID": 21, - "HostName": "derp21d.tailscale.com", - "IPv4": "162.248.221.248", - "IPv6": "2607:f740:50::ca4", - "CanPort80": true - }, - { - "Name": "21b", - "RegionID": 21, - "HostName": "derp21b.tailscale.com", - "IPv4": "162.248.221.199", - "IPv6": "2607:f740:50::1d1", - "CanPort80": true - } - ] - }, - "22": { - "RegionID": 22, - "RegionCode": "waw", - "RegionName": "Warsaw", - "Latitude": 52.23, - "Longitude": 21.011111, - "Nodes": [ - { - "Name": "22c", - "RegionID": 22, - "HostName": "derp22c.tailscale.com", - "IPv4": "45.159.98.253", - "IPv6": "2a00:dd80:40:100::3f", - "CanPort80": true - }, - { - "Name": "22d", - "RegionID": 22, - "HostName": "derp22d.tailscale.com", - "IPv4": "45.159.98.145", - "IPv6": "2a00:dd80:40:100::211", - "CanPort80": true - }, - { - "Name": "22b", - "RegionID": 22, - "HostName": "derp22b.tailscale.com", - "IPv4": "45.159.98.196", - "IPv6": "2a00:dd80:40:100::316", - "CanPort80": true - } - ] - }, - "23": { - "RegionID": 23, - "RegionCode": "dbi", - "RegionName": "Dubai", - "Latitude": 25.263056, - "Longitude": 55.297222, - "Nodes": [ - { - "Name": "23c", - "RegionID": 23, - "HostName": "derp23c.tailscale.com", - "IPv4": "185.34.3.207", - "IPv6": "2a00:dd80:3f:100::a50", - "CanPort80": true - }, - { - "Name": "23d", - "RegionID": 23, - "HostName": "derp23d.tailscale.com", - "IPv4": "185.34.3.75", - "IPv6": "2a00:dd80:3f:100::97e", - "CanPort80": true - }, - { - "Name": "23b", - "RegionID": 23, - "HostName": "derp23b.tailscale.com", - "IPv4": "185.34.3.232", - "IPv6": "2a00:dd80:3f:100::76f", - "CanPort80": true - } - ] - }, - "24": { - "RegionID": 24, - "RegionCode": "hnl", - "RegionName": "Honolulu", - "Latitude": 21.306944, - "Longitude": -157.858333, - "Nodes": [ - { - "Name": "24c", - "RegionID": 24, - "HostName": "derp24c.tailscale.com", - "IPv4": "208.83.233.233", - "IPv6": "2001:19f0:c000:c591:5400:04ff:fe26:2c5f", - "CanPort80": true - }, - { - "Name": "24d", - "RegionID": 24, - "HostName": "derp24d.tailscale.com", - "IPv4": "208.72.155.133", - "IPv6": "2001:19f0:c000:c564:5400:04ff:fe26:2ba8", - "CanPort80": true - }, - { - "Name": "24b", - "RegionID": 24, - "HostName": "derp24b.tailscale.com", - "IPv4": "208.83.234.151", - "IPv6": "2001:19f0:c000:c586:5400:04ff:fe26:2ba6", - "CanPort80": true - } - ] - }, - "25": { - "RegionID": 25, - "RegionCode": "nai", - "RegionName": "Nairobi", - "Latitude": -1.286389, - "Longitude": 36.817222, - "Nodes": [ - { - "Name": "25c", - "RegionID": 25, - "HostName": "derp25c.tailscale.com", - "IPv4": "102.67.167.37", - "IPv6": "2c0f:edb0:2000:1::2c7", - "CanPort80": true - }, - { - "Name": "25d", - "RegionID": 25, - "HostName": "derp25d.tailscale.com", - "IPv4": "102.67.167.188", - "IPv6": "2c0f:edb0:2000:1::188", - "CanPort80": true - }, - { - "Name": "25b", - "RegionID": 25, - "HostName": "derp25b.tailscale.com", - "IPv4": "102.67.167.245", - "IPv6": "2c0f:edb0:2000:1::2e9", - "CanPort80": true - } - ] - }, - "26": { - "RegionID": 26, - "RegionCode": "nue", - "RegionName": "Nuremberg", - "Latitude": 49.453889, - "Longitude": 11.0775, - "Nodes": [ - { - "Name": "26c", - "RegionID": 26, - "HostName": "derp26c.tailscale.com", - "IPv4": "49.12.193.137", - "IPv6": "2a01:4f8:1c1c:5c70::1", - "CanPort80": true - }, - { - "Name": "26d", - "RegionID": 26, - "HostName": "derp26d.tailscale.com", - "IPv4": "49.13.204.141", - "IPv6": "2a01:4f8:1c0c:7d06::1", - "CanPort80": true - }, - { - "Name": "26b", - "RegionID": 26, - "HostName": "derp26b.tailscale.com", - "IPv4": "167.235.72.200", - "IPv6": "2a01:4f8:1c1c:47b6::1", - "CanPort80": true - } - ] - }, - "27": { - "RegionID": 27, - "RegionCode": "iad", - "RegionName": "Ashburn", - "Latitude": 39.03, - "Longitude": -77.471111, - "Nodes": [ - { - "Name": "27d", - "RegionID": 27, - "HostName": "derp27d.tailscale.com", - "IPv4": "178.156.152.106", - "IPv6": "2a01:4ff:f0:3c8e::1", - "CanPort80": true - }, - { - "Name": "27c", - "RegionID": 27, - "HostName": "derp27c.tailscale.com", - "IPv4": "178.156.152.91", - "IPv6": "2a01:4ff:f0:3913::1", - "CanPort80": true - }, - { - "Name": "27e", - "RegionID": 27, - "HostName": "derp27e.tailscale.com", - "IPv4": "178.156.134.232", - "IPv6": "2a01:4ff:f0:28d4::1", - "CanPort80": true - }, - { - "Name": "27b", - "RegionID": 27, - "HostName": "derp27b.tailscale.com", - "IPv4": "5.161.218.233", - "IPv6": "2a01:4ff:f0:3db9::1", - "CanPort80": true - } - ] - }, - "28": { - "RegionID": 28, - "RegionCode": "hel", - "RegionName": "Helsinki", - "Latitude": 60.170833, - "Longitude": 24.9375, - "Nodes": [ - { - "Name": "28c", - "RegionID": 28, - "HostName": "derp28c.tailscale.com", - "IPv4": "95.217.2.165", - "IPv6": "2a01:4f9:c012:cd74::1", - "CanPort80": true - }, - { - "Name": "28d", - "RegionID": 28, - "HostName": "derp28d.tailscale.com", - "IPv4": "157.180.28.32", - "IPv6": "2a01:4f9:c012:2e5b::1", - "CanPort80": true - }, - { - "Name": "28b", - "RegionID": 28, - "HostName": "derp28b.tailscale.com", - "IPv4": "65.109.143.62", - "IPv6": "2a01:4f9:c012:d55c::1", - "CanPort80": true - } - ] - }, - "3": { - "RegionID": 3, - "RegionCode": "sin", - "RegionName": "Singapore", - "Latitude": 1.3521, - "Longitude": 103.8198, - "Nodes": [ - { - "Name": "3g", - "RegionID": 3, - "HostName": "derp3g.tailscale.com", - "IPv4": "172.237.72.79", - "IPv6": "2600:3c15::2000:adff:fe08:6fab", - "CanPort80": true - }, - { - "Name": "3f", - "RegionID": 3, - "HostName": "derp3f.tailscale.com", - "IPv4": "172.237.72.8", - "IPv6": "2600:3c15::2000:53ff:fe48:a668", - "CanPort80": true - }, - { - "Name": "3h", - "RegionID": 3, - "HostName": "derp3h.tailscale.com", - "IPv4": "172.237.66.30", - "IPv6": "2600:3c15::2000:3dff:fe44:50aa", - "CanPort80": true - }, - { - "Name": "3e", - "RegionID": 3, - "HostName": "derp3e.tailscale.com", - "IPv4": "172.237.72.43", - "IPv6": "2600:3c15::2000:6cff:fee4:d799", - "CanPort80": true - } - ] - }, - "4": { - "RegionID": 4, - "RegionCode": "fra", - "RegionName": "Frankfurt", - "Latitude": 50.1109, - "Longitude": 8.6821, - "Nodes": [ - { - "Name": "4h", - "RegionID": 4, - "HostName": "derp4h.tailscale.com", - "IPv4": "185.40.234.77", - "IPv6": "2a00:dd80:20::bcf", - "CanPort80": true - }, - { - "Name": "4g", - "RegionID": 4, - "HostName": "derp4g.tailscale.com", - "IPv4": "185.40.234.113", - "IPv6": "2a00:dd80:20::8f", - "CanPort80": true - }, - { - "Name": "4i", - "RegionID": 4, - "HostName": "derp4i.tailscale.com", - "IPv4": "185.40.234.53", - "IPv6": "2a00:dd80:20::8a6", - "CanPort80": true - }, - { - "Name": "4f", - "RegionID": 4, - "HostName": "derp4f.tailscale.com", - "IPv4": "185.40.234.219", - "IPv6": "2a00:dd80:20::a25", - "CanPort80": true - } - ] - }, - "5": { - "RegionID": 5, - "RegionCode": "syd", - "RegionName": "Sydney", - "Latitude": -33.867778, - "Longitude": 151.21, - "Nodes": [ - { - "Name": "5f", - "RegionID": 5, - "HostName": "derp5f.tailscale.com", - "IPv4": "172.105.166.103", - "IPv6": "2400:8907::2000:ccff:fe1f:80da", - "CanPort80": true - }, - { - "Name": "5g", - "RegionID": 5, - "HostName": "derp5g.tailscale.com", - "IPv4": "172.105.169.57", - "IPv6": "2400:8907::2000:2fff:fea7:57f4", - "CanPort80": true - }, - { - "Name": "5e", - "RegionID": 5, - "HostName": "derp5e.tailscale.com", - "IPv4": "172.105.179.230", - "IPv6": "2400:8907::2000:ceff:fe8d:4f4e", - "CanPort80": true - } - ] - }, - "6": { - "RegionID": 6, - "RegionCode": "blr", - "RegionName": "Bengaluru", - "Latitude": 12.9716, - "Longitude": 77.5946, - "Nodes": [ - { - "Name": "6a", - "RegionID": 6, - "HostName": "derp6.tailscale.com", - "IPv4": "68.183.90.120", - "IPv6": "2400:6180:100:d0::982:d001", - "CanPort80": true - } - ] - }, - "7": { - "RegionID": 7, - "RegionCode": "tok", - "RegionName": "Tokyo", - "Latitude": 35.6764, - "Longitude": 139.65, - "Nodes": [ - { - "Name": "7g", - "RegionID": 7, - "HostName": "derp7g.tailscale.com", - "IPv4": "172.238.6.179", - "IPv6": "2600:3c18::2000:3fff:fe80:3ebd", - "CanPort80": true - }, - { - "Name": "7f", - "RegionID": 7, - "HostName": "derp7f.tailscale.com", - "IPv4": "172.238.6.34", - "IPv6": "2600:3c18::2000:acff:fe8e:3ed5", - "CanPort80": true - }, - { - "Name": "7h", - "RegionID": 7, - "HostName": "derp7h.tailscale.com", - "IPv4": "172.237.28.183", - "IPv6": "2600:3c18::2000:b1ff:fea9:4560", - "CanPort80": true - }, - { - "Name": "7e", - "RegionID": 7, - "HostName": "derp7e.tailscale.com", - "IPv4": "172.238.6.180", - "IPv6": "2600:3c18::2000:60ff:fe0f:6e83", - "STUNOnly": true, - "CanPort80": true - } - ] - }, - "8": { - "RegionID": 8, - "RegionCode": "lhr", - "RegionName": "London", - "Latitude": 51.5072, - "Longitude": 0.1276, - "Nodes": [ - { - "Name": "8f", - "RegionID": 8, - "HostName": "derp8f.tailscale.com", - "IPv4": "176.58.88.183", - "IPv6": "2a00:dd80:3a::dfa", - "CanPort80": true - }, - { - "Name": "8g", - "RegionID": 8, - "HostName": "derp8g.tailscale.com", - "IPv4": "176.58.92.254", - "IPv6": "2a00:dd80:3a::ed", - "CanPort80": true - }, - { - "Name": "8e", - "RegionID": 8, - "HostName": "derp8e.tailscale.com", - "IPv4": "176.58.92.144", - "IPv6": "2a00:dd80:3a::b33", - "CanPort80": true - } - ] - }, - "9": { - "RegionID": 9, - "RegionCode": "dfw", - "RegionName": "Dallas", - "Latitude": 32.779167, - "Longitude": -96.808889, - "Nodes": [ - { - "Name": "9e", - "RegionID": 9, - "HostName": "derp9e.tailscale.com", - "IPv4": "192.73.248.83", - "IPv6": "2607:f740:100::359", - "CanPort80": true - }, - { - "Name": "9f", - "RegionID": 9, - "HostName": "derp9f.tailscale.com", - "IPv4": "209.177.156.197", - "IPv6": "2607:f740:100::cad", - "CanPort80": true - }, - { - "Name": "9d", - "RegionID": 9, - "HostName": "derp9d.tailscale.com", - "IPv4": "209.177.156.94", - "IPv6": "2607:f740:100::c05", - "CanPort80": true - } - ] - } - } - }, - "DisplayMessages": null, - "TKAEnabled": false, - "TKAHead": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", - "Domain": "kratail2tid@passkey", - "DomainAuditLogID": "", - "UserProfiles": { - "3118755726458377": { - "ID": 3118755726458377, - "LoginName": "exit-a.tail78f774.ts.net", - "DisplayName": "exit-a" - } - } + "PacketFilterRules": null } }, "exit-b": { - "commands": { - "packet_filter_rules": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-b/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-b/tailscaled.sock debug localapi POST debug-packet-filter-matches" - }, "packet_filter_rules": null, - "packet_filter_matches": [], - "whois": { - "100.124.195.93": { - "peer_name": "exit-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-b/tailscaled.sock whois --json 100.124.195.93", - "response": null - }, - "100.85.66.106": { - "peer_name": "exit-node", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-b/tailscaled.sock whois --json 100.85.66.106", - "response": null - }, - "100.107.162.14": { - "peer_name": "group-a-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-b/tailscaled.sock whois --json 100.107.162.14", - "response": null - }, - "100.77.135.18": { - "peer_name": "group-b-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-b/tailscaled.sock whois --json 100.77.135.18", - "response": null - }, - "100.105.127.107": { - "peer_name": "multi-exit-router", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-b/tailscaled.sock whois --json 100.105.127.107", - "response": null - }, - "100.109.43.124": { - "peer_name": "router-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-b/tailscaled.sock whois --json 100.109.43.124", - "response": null - }, - "100.65.172.123": { - "peer_name": "router-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-b/tailscaled.sock whois --json 100.65.172.123", - "response": null - }, - "100.92.142.61": { - "peer_name": "subnet-router", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-b/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-b/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-b/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-b/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-b/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-b/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-b/tailscaled.sock whois --json 100.90.199.68", - "response": null - } - }, "netmap": { - "SelfNode": { - "ID": 2230775583277936, - "StableID": "ndK1N8hKRJ11CNTRL", - "Name": "exit-b.tail78f774.ts.net.", - "User": 2230775583277936, - "Key": "nodekey:265e1377372be0d036773ac41339bf7b53ed18e9f67f196d7d517abeff741217", - "DiscoKey": "discokey:63071b08ff89860a2d98005f8f6f65f3b92e05b7b1338b1be71e4ad866f12728", - "Addresses": ["100.116.18.24/32", "fd7a:115c:a1e0::ff37:1218/128"], - "AllowedIPs": ["100.116.18.24/32", "fd7a:115c:a1e0::ff37:1218/128"], - "Endpoints": ["77.164.248.136:35565", "10.65.0.27:35565", "172.17.0.1:35565"], - "Hostinfo": { - "Hostname": "exit-b", - "RoutableIPs": ["0.0.0.0/0", "::/0"], - "RequestTags": ["tag:exit-b"], - "Services": [ - { "Proto": "peerapi4", "Port": 61723 }, - { "Proto": "peerapi6", "Port": 61723 }, - { "Proto": "peerapi-dns-proxy", "Port": 1 } - ] - }, - "Created": "2026-03-28T10:38:00.655990366Z", - "Tags": ["tag:exit-b"], - "MachineAuthorized": true, - "CapMap": { - "https://tailscale.com/cap/file-sharing": null, - "https://tailscale.com/cap/is-owner": null, - "https://tailscale.com/cap/ssh": null, - "https://tailscale.com/cap/tailnet-lock": null, - "probe-udp-lifetime": null, - "ssh-behavior-v1": null, - "ssh-env-vars": null, - "store-appc-routes": null, - "tailnet-display-name": ["kratail2tid@passkey"] - }, - "ComputedName": "exit-b", - "ComputedNameWithHost": "exit-b" - }, - "AllCaps": [ - "tailnet-display-name", - "https://tailscale.com/cap/ssh", - "probe-udp-lifetime", - "ssh-env-vars", - "store-appc-routes", - "https://tailscale.com/cap/file-sharing", - "https://tailscale.com/cap/tailnet-lock", - "https://tailscale.com/cap/is-owner", - "ssh-behavior-v1" - ], - "NodeKey": "nodekey:265e1377372be0d036773ac41339bf7b53ed18e9f67f196d7d517abeff741217", - "MachineKey": "mkey:f4cbc28e2db0f8d8a6a5fc3991b055477e5efc6c025d24b72d3509fa3743401c", "Peers": [], - "DNS": { - "Routes": { - "tail78f774.ts.net.": null, - "ts.net.": [{ "Addr": "199.247.155.53" }, { "Addr": "2620:111:8007::53" }] - }, - "Domains": ["tail78f774.ts.net"], - "Proxied": true, - "ExitNodeFilteredSet": [".ts.net", ".tailscale.net"] - }, - "PacketFilter": [], - "PacketFilterRules": null, - "SSHPolicy": { "rules": [] }, - "CollectServices": false, - "DERPMap": { - "Regions": { - "1": { - "RegionID": 1, - "RegionCode": "nyc", - "RegionName": "New York City", - "Latitude": 40.7128, - "Longitude": -74.006, - "Nodes": [ - { - "Name": "1h", - "RegionID": 1, - "HostName": "derp1h.tailscale.com", - "IPv4": "199.38.181.93", - "IPv6": "2607:f740:f::afd", - "CanPort80": true - }, - { - "Name": "1g", - "RegionID": 1, - "HostName": "derp1g.tailscale.com", - "IPv4": "209.177.145.120", - "IPv6": "2607:f740:f::3eb", - "CanPort80": true - }, - { - "Name": "1i", - "RegionID": 1, - "HostName": "derp1i.tailscale.com", - "IPv4": "199.38.181.103", - "IPv6": "2607:f740:f::e19", - "CanPort80": true - }, - { - "Name": "1f", - "RegionID": 1, - "HostName": "derp1f.tailscale.com", - "IPv4": "199.38.181.104", - "IPv6": "2607:f740:f::bc", - "CanPort80": true - } - ] - }, - "10": { - "RegionID": 10, - "RegionCode": "sea", - "RegionName": "Seattle", - "Latitude": 47.609722, - "Longitude": -122.333056, - "Nodes": [ - { - "Name": "10c", - "RegionID": 10, - "HostName": "derp10c.tailscale.com", - "IPv4": "192.73.240.121", - "IPv6": "2607:f740:14::40c", - "CanPort80": true - }, - { - "Name": "10d", - "RegionID": 10, - "HostName": "derp10d.tailscale.com", - "IPv4": "192.73.240.132", - "IPv6": "2607:f740:14::500", - "CanPort80": true - }, - { - "Name": "10b", - "RegionID": 10, - "HostName": "derp10b.tailscale.com", - "IPv4": "192.73.240.161", - "IPv6": "2607:f740:14::61c", - "CanPort80": true - } - ] - }, - "11": { - "RegionID": 11, - "RegionCode": "sao", - "RegionName": "São Paulo", - "Latitude": -23.55, - "Longitude": -46.633333, - "Nodes": [ - { - "Name": "11f", - "RegionID": 11, - "HostName": "derp11f.tailscale.com", - "IPv4": "172.237.61.197", - "IPv6": "2600:3c0d::2000:3bff:fe44:6166", - "CanPort80": true - }, - { - "Name": "11g", - "RegionID": 11, - "HostName": "derp11g.tailscale.com", - "IPv4": "172.237.61.190", - "IPv6": "2600:3c0d::2000:62ff:febe:2e67", - "CanPort80": true - }, - { - "Name": "11e", - "RegionID": 11, - "HostName": "derp11e.tailscale.com", - "IPv4": "172.237.61.194", - "IPv6": "2600:3c0d::2000:d2ff:fe43:1790", - "CanPort80": true - } - ] - }, - "12": { - "RegionID": 12, - "RegionCode": "ord", - "RegionName": "Chicago", - "Latitude": 41.881944, - "Longitude": -87.627778, - "Nodes": [ - { - "Name": "12e", - "RegionID": 12, - "HostName": "derp12e.tailscale.com", - "IPv4": "209.177.158.15", - "IPv6": "2607:f740:e::b17", - "CanPort80": true - }, - { - "Name": "12f", - "RegionID": 12, - "HostName": "derp12f.tailscale.com", - "IPv4": "199.38.182.118", - "IPv6": "2607:f740:e::4c8", - "CanPort80": true - }, - { - "Name": "12d", - "RegionID": 12, - "HostName": "derp12d.tailscale.com", - "IPv4": "209.177.158.246", - "IPv6": "2607:f740:e::811", - "CanPort80": true - } - ] - }, - "13": { - "RegionID": 13, - "RegionCode": "den", - "RegionName": "Denver", - "Latitude": 39.7392, - "Longitude": -104.9849, - "Nodes": [ - { - "Name": "13c", - "RegionID": 13, - "HostName": "derp13c.tailscale.com", - "IPv4": "192.73.242.28", - "IPv6": "2607:f740:16::5c", - "CanPort80": true - }, - { - "Name": "13d", - "RegionID": 13, - "HostName": "derp13d.tailscale.com", - "IPv4": "192.73.242.204", - "IPv6": "2607:f740:16::c23", - "CanPort80": true - }, - { - "Name": "13b", - "RegionID": 13, - "HostName": "derp13b.tailscale.com", - "IPv4": "192.73.242.187", - "IPv6": "2607:f740:16::640", - "CanPort80": true - } - ] - }, - "14": { - "RegionID": 14, - "RegionCode": "ams", - "RegionName": "Amsterdam", - "Latitude": 52.372778, - "Longitude": 4.893611, - "Nodes": [ - { - "Name": "14c", - "RegionID": 14, - "HostName": "derp14c.tailscale.com", - "IPv4": "176.58.93.147", - "IPv6": "2a00:dd80:3c::b09", - "CanPort80": true - }, - { - "Name": "14d", - "RegionID": 14, - "HostName": "derp14d.tailscale.com", - "IPv4": "176.58.93.154", - "IPv6": "2a00:dd80:3c::3d5", - "CanPort80": true - }, - { - "Name": "14b", - "RegionID": 14, - "HostName": "derp14b.tailscale.com", - "IPv4": "176.58.93.248", - "IPv6": "2a00:dd80:3c::807", - "CanPort80": true - } - ] - }, - "15": { - "RegionID": 15, - "RegionCode": "jnb", - "RegionName": "Johannesburg", - "Latitude": -26.204444, - "Longitude": 28.045556, - "Nodes": [ - { - "Name": "15c", - "RegionID": 15, - "HostName": "derp15c.tailscale.com", - "IPv4": "102.67.165.185", - "IPv6": "2c0f:edb0:0:10::b59", - "CanPort80": true - }, - { - "Name": "15d", - "RegionID": 15, - "HostName": "derp15d.tailscale.com", - "IPv4": "102.67.165.36", - "IPv6": "2c0f:edb0:0:10::599", - "CanPort80": true - }, - { - "Name": "15b", - "RegionID": 15, - "HostName": "derp15b.tailscale.com", - "IPv4": "102.67.165.90", - "IPv6": "2c0f:edb0:0:10::963", - "CanPort80": true - } - ] - }, - "16": { - "RegionID": 16, - "RegionCode": "mia", - "RegionName": "Miami", - "Latitude": 25.78, - "Longitude": -80.21, - "Nodes": [ - { - "Name": "16c", - "RegionID": 16, - "HostName": "derp16c.tailscale.com", - "IPv4": "192.73.243.229", - "IPv6": "2607:f740:17::4e4", - "CanPort80": true - }, - { - "Name": "16d", - "RegionID": 16, - "HostName": "derp16d.tailscale.com", - "IPv4": "192.73.243.141", - "IPv6": "2607:f740:17::475", - "CanPort80": true - }, - { - "Name": "16b", - "RegionID": 16, - "HostName": "derp16b.tailscale.com", - "IPv4": "192.73.243.135", - "IPv6": "2607:f740:17::476", - "CanPort80": true - } - ] - }, - "17": { - "RegionID": 17, - "RegionCode": "lax", - "RegionName": "Los Angeles", - "Latitude": 34.05, - "Longitude": -118.25, - "Nodes": [ - { - "Name": "17c", - "RegionID": 17, - "HostName": "derp17c.tailscale.com", - "IPv4": "208.111.40.12", - "IPv6": "2607:f740:c::10", - "CanPort80": true - }, - { - "Name": "17d", - "RegionID": 17, - "HostName": "derp17d.tailscale.com", - "IPv4": "208.111.40.216", - "IPv6": "2607:f740:c::e1b", - "CanPort80": true - }, - { - "Name": "17b", - "RegionID": 17, - "HostName": "derp17b.tailscale.com", - "IPv4": "192.73.244.245", - "IPv6": "2607:f740:c::646", - "CanPort80": true - } - ] - }, - "18": { - "RegionID": 18, - "RegionCode": "par", - "RegionName": "Paris", - "Latitude": 48.856667, - "Longitude": 2.352222, - "Nodes": [ - { - "Name": "18c", - "RegionID": 18, - "HostName": "derp18c.tailscale.com", - "IPv4": "176.58.90.207", - "IPv6": "2a00:dd80:3e::c19", - "CanPort80": true - }, - { - "Name": "18d", - "RegionID": 18, - "HostName": "derp18d.tailscale.com", - "IPv4": "176.58.90.104", - "IPv6": "2a00:dd80:3e::f2e", - "CanPort80": true - }, - { - "Name": "18b", - "RegionID": 18, - "HostName": "derp18b.tailscale.com", - "IPv4": "176.58.90.147", - "IPv6": "2a00:dd80:3e::363", - "CanPort80": true - } - ] - }, - "19": { - "RegionID": 19, - "RegionCode": "mad", - "RegionName": "Madrid", - "Latitude": 40.416944, - "Longitude": -3.703333, - "Nodes": [ - { - "Name": "19c", - "RegionID": 19, - "HostName": "derp19c.tailscale.com", - "IPv4": "45.159.97.61", - "IPv6": "2a00:dd80:14:10::20", - "CanPort80": true - }, - { - "Name": "19d", - "RegionID": 19, - "HostName": "derp19d.tailscale.com", - "IPv4": "45.159.97.233", - "IPv6": "2a00:dd80:14:10::34a", - "CanPort80": true - }, - { - "Name": "19b", - "RegionID": 19, - "HostName": "derp19b.tailscale.com", - "IPv4": "45.159.97.144", - "IPv6": "2a00:dd80:14:10::335", - "CanPort80": true - } - ] - }, - "2": { - "RegionID": 2, - "RegionCode": "sfo", - "RegionName": "San Francisco", - "Latitude": 37.7775, - "Longitude": -122.416389, - "Nodes": [ - { - "Name": "2e", - "RegionID": 2, - "HostName": "derp2e.tailscale.com", - "IPv4": "192.73.252.134", - "IPv6": "2607:f740:0:3f::44c", - "CanPort80": true - }, - { - "Name": "2f", - "RegionID": 2, - "HostName": "derp2f.tailscale.com", - "IPv4": "208.111.34.178", - "IPv6": "2607:f740:0:3f::f4", - "CanPort80": true - }, - { - "Name": "2d", - "RegionID": 2, - "HostName": "derp2d.tailscale.com", - "IPv4": "192.73.252.65", - "IPv6": "2607:f740:0:3f::287", - "CanPort80": true - } - ] - }, - "20": { - "RegionID": 20, - "RegionCode": "hkg", - "RegionName": "Hong Kong", - "Latitude": 22.3193, - "Longitude": 114.1694, - "Nodes": [ - { - "Name": "20c", - "RegionID": 20, - "HostName": "derp20c.tailscale.com", - "IPv4": "205.147.105.30", - "IPv6": "2403:2500:8000:1::5fb", - "CanPort80": true - }, - { - "Name": "20d", - "RegionID": 20, - "HostName": "derp20d.tailscale.com", - "IPv4": "205.147.105.78", - "IPv6": "2403:2500:8000:1::e9a", - "CanPort80": true - }, - { - "Name": "20b", - "RegionID": 20, - "HostName": "derp20b.tailscale.com", - "IPv4": "103.6.84.152", - "IPv6": "2403:2500:8000:1::ef6", - "CanPort80": true - } - ] - }, - "21": { - "RegionID": 21, - "RegionCode": "tor", - "RegionName": "Toronto", - "Latitude": 43.741667, - "Longitude": -79.373333, - "Nodes": [ - { - "Name": "21c", - "RegionID": 21, - "HostName": "derp21c.tailscale.com", - "IPv4": "162.248.221.215", - "IPv6": "2607:f740:50::f10", - "CanPort80": true - }, - { - "Name": "21d", - "RegionID": 21, - "HostName": "derp21d.tailscale.com", - "IPv4": "162.248.221.248", - "IPv6": "2607:f740:50::ca4", - "CanPort80": true - }, - { - "Name": "21b", - "RegionID": 21, - "HostName": "derp21b.tailscale.com", - "IPv4": "162.248.221.199", - "IPv6": "2607:f740:50::1d1", - "CanPort80": true - } - ] - }, - "22": { - "RegionID": 22, - "RegionCode": "waw", - "RegionName": "Warsaw", - "Latitude": 52.23, - "Longitude": 21.011111, - "Nodes": [ - { - "Name": "22c", - "RegionID": 22, - "HostName": "derp22c.tailscale.com", - "IPv4": "45.159.98.253", - "IPv6": "2a00:dd80:40:100::3f", - "CanPort80": true - }, - { - "Name": "22d", - "RegionID": 22, - "HostName": "derp22d.tailscale.com", - "IPv4": "45.159.98.145", - "IPv6": "2a00:dd80:40:100::211", - "CanPort80": true - }, - { - "Name": "22b", - "RegionID": 22, - "HostName": "derp22b.tailscale.com", - "IPv4": "45.159.98.196", - "IPv6": "2a00:dd80:40:100::316", - "CanPort80": true - } - ] - }, - "23": { - "RegionID": 23, - "RegionCode": "dbi", - "RegionName": "Dubai", - "Latitude": 25.263056, - "Longitude": 55.297222, - "Nodes": [ - { - "Name": "23c", - "RegionID": 23, - "HostName": "derp23c.tailscale.com", - "IPv4": "185.34.3.207", - "IPv6": "2a00:dd80:3f:100::a50", - "CanPort80": true - }, - { - "Name": "23d", - "RegionID": 23, - "HostName": "derp23d.tailscale.com", - "IPv4": "185.34.3.75", - "IPv6": "2a00:dd80:3f:100::97e", - "CanPort80": true - }, - { - "Name": "23b", - "RegionID": 23, - "HostName": "derp23b.tailscale.com", - "IPv4": "185.34.3.232", - "IPv6": "2a00:dd80:3f:100::76f", - "CanPort80": true - } - ] - }, - "24": { - "RegionID": 24, - "RegionCode": "hnl", - "RegionName": "Honolulu", - "Latitude": 21.306944, - "Longitude": -157.858333, - "Nodes": [ - { - "Name": "24c", - "RegionID": 24, - "HostName": "derp24c.tailscale.com", - "IPv4": "208.83.233.233", - "IPv6": "2001:19f0:c000:c591:5400:04ff:fe26:2c5f", - "CanPort80": true - }, - { - "Name": "24d", - "RegionID": 24, - "HostName": "derp24d.tailscale.com", - "IPv4": "208.72.155.133", - "IPv6": "2001:19f0:c000:c564:5400:04ff:fe26:2ba8", - "CanPort80": true - }, - { - "Name": "24b", - "RegionID": 24, - "HostName": "derp24b.tailscale.com", - "IPv4": "208.83.234.151", - "IPv6": "2001:19f0:c000:c586:5400:04ff:fe26:2ba6", - "CanPort80": true - } - ] - }, - "25": { - "RegionID": 25, - "RegionCode": "nai", - "RegionName": "Nairobi", - "Latitude": -1.286389, - "Longitude": 36.817222, - "Nodes": [ - { - "Name": "25c", - "RegionID": 25, - "HostName": "derp25c.tailscale.com", - "IPv4": "102.67.167.37", - "IPv6": "2c0f:edb0:2000:1::2c7", - "CanPort80": true - }, - { - "Name": "25d", - "RegionID": 25, - "HostName": "derp25d.tailscale.com", - "IPv4": "102.67.167.188", - "IPv6": "2c0f:edb0:2000:1::188", - "CanPort80": true - }, - { - "Name": "25b", - "RegionID": 25, - "HostName": "derp25b.tailscale.com", - "IPv4": "102.67.167.245", - "IPv6": "2c0f:edb0:2000:1::2e9", - "CanPort80": true - } - ] - }, - "26": { - "RegionID": 26, - "RegionCode": "nue", - "RegionName": "Nuremberg", - "Latitude": 49.453889, - "Longitude": 11.0775, - "Nodes": [ - { - "Name": "26c", - "RegionID": 26, - "HostName": "derp26c.tailscale.com", - "IPv4": "49.12.193.137", - "IPv6": "2a01:4f8:1c1c:5c70::1", - "CanPort80": true - }, - { - "Name": "26d", - "RegionID": 26, - "HostName": "derp26d.tailscale.com", - "IPv4": "49.13.204.141", - "IPv6": "2a01:4f8:1c0c:7d06::1", - "CanPort80": true - }, - { - "Name": "26b", - "RegionID": 26, - "HostName": "derp26b.tailscale.com", - "IPv4": "167.235.72.200", - "IPv6": "2a01:4f8:1c1c:47b6::1", - "CanPort80": true - } - ] - }, - "27": { - "RegionID": 27, - "RegionCode": "iad", - "RegionName": "Ashburn", - "Latitude": 39.03, - "Longitude": -77.471111, - "Nodes": [ - { - "Name": "27d", - "RegionID": 27, - "HostName": "derp27d.tailscale.com", - "IPv4": "178.156.152.106", - "IPv6": "2a01:4ff:f0:3c8e::1", - "CanPort80": true - }, - { - "Name": "27c", - "RegionID": 27, - "HostName": "derp27c.tailscale.com", - "IPv4": "178.156.152.91", - "IPv6": "2a01:4ff:f0:3913::1", - "CanPort80": true - }, - { - "Name": "27e", - "RegionID": 27, - "HostName": "derp27e.tailscale.com", - "IPv4": "178.156.134.232", - "IPv6": "2a01:4ff:f0:28d4::1", - "CanPort80": true - }, - { - "Name": "27b", - "RegionID": 27, - "HostName": "derp27b.tailscale.com", - "IPv4": "5.161.218.233", - "IPv6": "2a01:4ff:f0:3db9::1", - "CanPort80": true - } - ] - }, - "28": { - "RegionID": 28, - "RegionCode": "hel", - "RegionName": "Helsinki", - "Latitude": 60.170833, - "Longitude": 24.9375, - "Nodes": [ - { - "Name": "28c", - "RegionID": 28, - "HostName": "derp28c.tailscale.com", - "IPv4": "95.217.2.165", - "IPv6": "2a01:4f9:c012:cd74::1", - "CanPort80": true - }, - { - "Name": "28d", - "RegionID": 28, - "HostName": "derp28d.tailscale.com", - "IPv4": "157.180.28.32", - "IPv6": "2a01:4f9:c012:2e5b::1", - "CanPort80": true - }, - { - "Name": "28b", - "RegionID": 28, - "HostName": "derp28b.tailscale.com", - "IPv4": "65.109.143.62", - "IPv6": "2a01:4f9:c012:d55c::1", - "CanPort80": true - } - ] - }, - "3": { - "RegionID": 3, - "RegionCode": "sin", - "RegionName": "Singapore", - "Latitude": 1.3521, - "Longitude": 103.8198, - "Nodes": [ - { - "Name": "3g", - "RegionID": 3, - "HostName": "derp3g.tailscale.com", - "IPv4": "172.237.72.79", - "IPv6": "2600:3c15::2000:adff:fe08:6fab", - "CanPort80": true - }, - { - "Name": "3f", - "RegionID": 3, - "HostName": "derp3f.tailscale.com", - "IPv4": "172.237.72.8", - "IPv6": "2600:3c15::2000:53ff:fe48:a668", - "CanPort80": true - }, - { - "Name": "3h", - "RegionID": 3, - "HostName": "derp3h.tailscale.com", - "IPv4": "172.237.66.30", - "IPv6": "2600:3c15::2000:3dff:fe44:50aa", - "CanPort80": true - }, - { - "Name": "3e", - "RegionID": 3, - "HostName": "derp3e.tailscale.com", - "IPv4": "172.237.72.43", - "IPv6": "2600:3c15::2000:6cff:fee4:d799", - "CanPort80": true - } - ] - }, - "4": { - "RegionID": 4, - "RegionCode": "fra", - "RegionName": "Frankfurt", - "Latitude": 50.1109, - "Longitude": 8.6821, - "Nodes": [ - { - "Name": "4h", - "RegionID": 4, - "HostName": "derp4h.tailscale.com", - "IPv4": "185.40.234.77", - "IPv6": "2a00:dd80:20::bcf", - "CanPort80": true - }, - { - "Name": "4g", - "RegionID": 4, - "HostName": "derp4g.tailscale.com", - "IPv4": "185.40.234.113", - "IPv6": "2a00:dd80:20::8f", - "CanPort80": true - }, - { - "Name": "4i", - "RegionID": 4, - "HostName": "derp4i.tailscale.com", - "IPv4": "185.40.234.53", - "IPv6": "2a00:dd80:20::8a6", - "CanPort80": true - }, - { - "Name": "4f", - "RegionID": 4, - "HostName": "derp4f.tailscale.com", - "IPv4": "185.40.234.219", - "IPv6": "2a00:dd80:20::a25", - "CanPort80": true - } - ] - }, - "5": { - "RegionID": 5, - "RegionCode": "syd", - "RegionName": "Sydney", - "Latitude": -33.867778, - "Longitude": 151.21, - "Nodes": [ - { - "Name": "5f", - "RegionID": 5, - "HostName": "derp5f.tailscale.com", - "IPv4": "172.105.166.103", - "IPv6": "2400:8907::2000:ccff:fe1f:80da", - "CanPort80": true - }, - { - "Name": "5g", - "RegionID": 5, - "HostName": "derp5g.tailscale.com", - "IPv4": "172.105.169.57", - "IPv6": "2400:8907::2000:2fff:fea7:57f4", - "CanPort80": true - }, - { - "Name": "5e", - "RegionID": 5, - "HostName": "derp5e.tailscale.com", - "IPv4": "172.105.179.230", - "IPv6": "2400:8907::2000:ceff:fe8d:4f4e", - "CanPort80": true - } - ] - }, - "6": { - "RegionID": 6, - "RegionCode": "blr", - "RegionName": "Bengaluru", - "Latitude": 12.9716, - "Longitude": 77.5946, - "Nodes": [ - { - "Name": "6a", - "RegionID": 6, - "HostName": "derp6.tailscale.com", - "IPv4": "68.183.90.120", - "IPv6": "2400:6180:100:d0::982:d001", - "CanPort80": true - } - ] - }, - "7": { - "RegionID": 7, - "RegionCode": "tok", - "RegionName": "Tokyo", - "Latitude": 35.6764, - "Longitude": 139.65, - "Nodes": [ - { - "Name": "7g", - "RegionID": 7, - "HostName": "derp7g.tailscale.com", - "IPv4": "172.238.6.179", - "IPv6": "2600:3c18::2000:3fff:fe80:3ebd", - "CanPort80": true - }, - { - "Name": "7f", - "RegionID": 7, - "HostName": "derp7f.tailscale.com", - "IPv4": "172.238.6.34", - "IPv6": "2600:3c18::2000:acff:fe8e:3ed5", - "CanPort80": true - }, - { - "Name": "7h", - "RegionID": 7, - "HostName": "derp7h.tailscale.com", - "IPv4": "172.237.28.183", - "IPv6": "2600:3c18::2000:b1ff:fea9:4560", - "CanPort80": true - }, - { - "Name": "7e", - "RegionID": 7, - "HostName": "derp7e.tailscale.com", - "IPv4": "172.238.6.180", - "IPv6": "2600:3c18::2000:60ff:fe0f:6e83", - "STUNOnly": true, - "CanPort80": true - } - ] - }, - "8": { - "RegionID": 8, - "RegionCode": "lhr", - "RegionName": "London", - "Latitude": 51.5072, - "Longitude": 0.1276, - "Nodes": [ - { - "Name": "8f", - "RegionID": 8, - "HostName": "derp8f.tailscale.com", - "IPv4": "176.58.88.183", - "IPv6": "2a00:dd80:3a::dfa", - "CanPort80": true - }, - { - "Name": "8g", - "RegionID": 8, - "HostName": "derp8g.tailscale.com", - "IPv4": "176.58.92.254", - "IPv6": "2a00:dd80:3a::ed", - "CanPort80": true - }, - { - "Name": "8e", - "RegionID": 8, - "HostName": "derp8e.tailscale.com", - "IPv4": "176.58.92.144", - "IPv6": "2a00:dd80:3a::b33", - "CanPort80": true - } - ] - }, - "9": { - "RegionID": 9, - "RegionCode": "dfw", - "RegionName": "Dallas", - "Latitude": 32.779167, - "Longitude": -96.808889, - "Nodes": [ - { - "Name": "9e", - "RegionID": 9, - "HostName": "derp9e.tailscale.com", - "IPv4": "192.73.248.83", - "IPv6": "2607:f740:100::359", - "CanPort80": true - }, - { - "Name": "9f", - "RegionID": 9, - "HostName": "derp9f.tailscale.com", - "IPv4": "209.177.156.197", - "IPv6": "2607:f740:100::cad", - "CanPort80": true - }, - { - "Name": "9d", - "RegionID": 9, - "HostName": "derp9d.tailscale.com", - "IPv4": "209.177.156.94", - "IPv6": "2607:f740:100::c05", - "CanPort80": true - } - ] - } - } - }, - "DisplayMessages": null, - "TKAEnabled": false, - "TKAHead": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", - "Domain": "kratail2tid@passkey", - "DomainAuditLogID": "", - "UserProfiles": { - "2230775583277936": { - "ID": 2230775583277936, - "LoginName": "exit-b.tail78f774.ts.net", - "DisplayName": "exit-b" - } - } + "PacketFilterRules": null } }, "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.124.195.93": { - "peer_name": "exit-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-node/tailscaled.sock whois --json 100.124.195.93", - "response": null - }, - "100.116.18.24": { - "peer_name": "exit-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-node/tailscaled.sock whois --json 100.116.18.24", - "response": null - }, - "100.107.162.14": { - "peer_name": "group-a-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-node/tailscaled.sock whois --json 100.107.162.14", - "response": null - }, - "100.77.135.18": { - "peer_name": "group-b-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-node/tailscaled.sock whois --json 100.77.135.18", - "response": null - }, - "100.105.127.107": { - "peer_name": "multi-exit-router", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-node/tailscaled.sock whois --json 100.105.127.107", - "response": null - }, - "100.109.43.124": { - "peer_name": "router-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-node/tailscaled.sock whois --json 100.109.43.124", - "response": null - }, - "100.65.172.123": { - "peer_name": "router-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-node/tailscaled.sock whois --json 100.65.172.123", - "response": null - }, - "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 - } - }, "netmap": { - "SelfNode": { - "ID": 4041918547170221, - "StableID": "ngCb76MbZY11CNTRL", - "Name": "exit-node.tail78f774.ts.net.", - "User": 4041918547170221, - "Key": "nodekey:90f4a7b9dc024f1ddec414a49de2aa7611a2dd86efc9d7bae30862ad7c954269", - "DiscoKey": "discokey:6f1a76215431d7100538970473d97b4fde0e0a19b91035d1cba40b59ad79b437", - "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:36712", "10.65.0.27:36712", "172.17.0.1:36712"], - "Hostinfo": { - "Hostname": "exit-node", - "RoutableIPs": ["0.0.0.0/0", "::/0"], - "RequestTags": ["tag:exit"], - "Services": [ - { "Proto": "peerapi4", "Port": 37000 }, - { "Proto": "peerapi6", "Port": 37000 }, - { "Proto": "peerapi-dns-proxy", "Port": 1 } - ] - }, - "Created": "2026-02-23T00:13:20.566112173Z", - "Tags": ["tag:exit"], - "MachineAuthorized": true, - "CapMap": { - "https://tailscale.com/cap/file-sharing": null, - "https://tailscale.com/cap/is-owner": null, - "https://tailscale.com/cap/ssh": null, - "https://tailscale.com/cap/tailnet-lock": null, - "probe-udp-lifetime": null, - "ssh-behavior-v1": null, - "ssh-env-vars": null, - "store-appc-routes": null, - "tailnet-display-name": ["kratail2tid@passkey"] - }, - "ComputedName": "exit-node", - "ComputedNameWithHost": "exit-node" - }, - "AllCaps": [ - "https://tailscale.com/cap/is-owner", - "ssh-behavior-v1", - "https://tailscale.com/cap/tailnet-lock", - "store-appc-routes", - "tailnet-display-name", - "ssh-env-vars", - "https://tailscale.com/cap/file-sharing", - "probe-udp-lifetime", - "https://tailscale.com/cap/ssh" - ], - "NodeKey": "nodekey:90f4a7b9dc024f1ddec414a49de2aa7611a2dd86efc9d7bae30862ad7c954269", - "MachineKey": "mkey:e3be47b2090e55400f3e64825cd3092841529cd7b5b775e9e4553f12308abc2a", "Peers": [], - "DNS": { - "Routes": { - "tail78f774.ts.net.": null, - "ts.net.": [{ "Addr": "199.247.155.53" }, { "Addr": "2620:111:8007::53" }] - }, - "Domains": ["tail78f774.ts.net"], - "Proxied": true, - "ExitNodeFilteredSet": [".ts.net", ".tailscale.net"] - }, - "PacketFilter": [], - "PacketFilterRules": null, - "SSHPolicy": { "rules": [] }, - "CollectServices": false, - "DERPMap": { - "Regions": { - "1": { - "RegionID": 1, - "RegionCode": "nyc", - "RegionName": "New York City", - "Latitude": 40.7128, - "Longitude": -74.006, - "Nodes": [ - { - "Name": "1h", - "RegionID": 1, - "HostName": "derp1h.tailscale.com", - "IPv4": "199.38.181.93", - "IPv6": "2607:f740:f::afd", - "CanPort80": true - }, - { - "Name": "1g", - "RegionID": 1, - "HostName": "derp1g.tailscale.com", - "IPv4": "209.177.145.120", - "IPv6": "2607:f740:f::3eb", - "CanPort80": true - }, - { - "Name": "1i", - "RegionID": 1, - "HostName": "derp1i.tailscale.com", - "IPv4": "199.38.181.103", - "IPv6": "2607:f740:f::e19", - "CanPort80": true - }, - { - "Name": "1f", - "RegionID": 1, - "HostName": "derp1f.tailscale.com", - "IPv4": "199.38.181.104", - "IPv6": "2607:f740:f::bc", - "CanPort80": true - } - ] - }, - "10": { - "RegionID": 10, - "RegionCode": "sea", - "RegionName": "Seattle", - "Latitude": 47.609722, - "Longitude": -122.333056, - "Nodes": [ - { - "Name": "10c", - "RegionID": 10, - "HostName": "derp10c.tailscale.com", - "IPv4": "192.73.240.121", - "IPv6": "2607:f740:14::40c", - "CanPort80": true - }, - { - "Name": "10d", - "RegionID": 10, - "HostName": "derp10d.tailscale.com", - "IPv4": "192.73.240.132", - "IPv6": "2607:f740:14::500", - "CanPort80": true - }, - { - "Name": "10b", - "RegionID": 10, - "HostName": "derp10b.tailscale.com", - "IPv4": "192.73.240.161", - "IPv6": "2607:f740:14::61c", - "CanPort80": true - } - ] - }, - "11": { - "RegionID": 11, - "RegionCode": "sao", - "RegionName": "São Paulo", - "Latitude": -23.55, - "Longitude": -46.633333, - "Nodes": [ - { - "Name": "11f", - "RegionID": 11, - "HostName": "derp11f.tailscale.com", - "IPv4": "172.237.61.197", - "IPv6": "2600:3c0d::2000:3bff:fe44:6166", - "CanPort80": true - }, - { - "Name": "11g", - "RegionID": 11, - "HostName": "derp11g.tailscale.com", - "IPv4": "172.237.61.190", - "IPv6": "2600:3c0d::2000:62ff:febe:2e67", - "CanPort80": true - }, - { - "Name": "11e", - "RegionID": 11, - "HostName": "derp11e.tailscale.com", - "IPv4": "172.237.61.194", - "IPv6": "2600:3c0d::2000:d2ff:fe43:1790", - "CanPort80": true - } - ] - }, - "12": { - "RegionID": 12, - "RegionCode": "ord", - "RegionName": "Chicago", - "Latitude": 41.881944, - "Longitude": -87.627778, - "Nodes": [ - { - "Name": "12e", - "RegionID": 12, - "HostName": "derp12e.tailscale.com", - "IPv4": "209.177.158.15", - "IPv6": "2607:f740:e::b17", - "CanPort80": true - }, - { - "Name": "12f", - "RegionID": 12, - "HostName": "derp12f.tailscale.com", - "IPv4": "199.38.182.118", - "IPv6": "2607:f740:e::4c8", - "CanPort80": true - }, - { - "Name": "12d", - "RegionID": 12, - "HostName": "derp12d.tailscale.com", - "IPv4": "209.177.158.246", - "IPv6": "2607:f740:e::811", - "CanPort80": true - } - ] - }, - "13": { - "RegionID": 13, - "RegionCode": "den", - "RegionName": "Denver", - "Latitude": 39.7392, - "Longitude": -104.9849, - "Nodes": [ - { - "Name": "13c", - "RegionID": 13, - "HostName": "derp13c.tailscale.com", - "IPv4": "192.73.242.28", - "IPv6": "2607:f740:16::5c", - "CanPort80": true - }, - { - "Name": "13d", - "RegionID": 13, - "HostName": "derp13d.tailscale.com", - "IPv4": "192.73.242.204", - "IPv6": "2607:f740:16::c23", - "CanPort80": true - }, - { - "Name": "13b", - "RegionID": 13, - "HostName": "derp13b.tailscale.com", - "IPv4": "192.73.242.187", - "IPv6": "2607:f740:16::640", - "CanPort80": true - } - ] - }, - "14": { - "RegionID": 14, - "RegionCode": "ams", - "RegionName": "Amsterdam", - "Latitude": 52.372778, - "Longitude": 4.893611, - "Nodes": [ - { - "Name": "14c", - "RegionID": 14, - "HostName": "derp14c.tailscale.com", - "IPv4": "176.58.93.147", - "IPv6": "2a00:dd80:3c::b09", - "CanPort80": true - }, - { - "Name": "14d", - "RegionID": 14, - "HostName": "derp14d.tailscale.com", - "IPv4": "176.58.93.154", - "IPv6": "2a00:dd80:3c::3d5", - "CanPort80": true - }, - { - "Name": "14b", - "RegionID": 14, - "HostName": "derp14b.tailscale.com", - "IPv4": "176.58.93.248", - "IPv6": "2a00:dd80:3c::807", - "CanPort80": true - } - ] - }, - "15": { - "RegionID": 15, - "RegionCode": "jnb", - "RegionName": "Johannesburg", - "Latitude": -26.204444, - "Longitude": 28.045556, - "Nodes": [ - { - "Name": "15c", - "RegionID": 15, - "HostName": "derp15c.tailscale.com", - "IPv4": "102.67.165.185", - "IPv6": "2c0f:edb0:0:10::b59", - "CanPort80": true - }, - { - "Name": "15d", - "RegionID": 15, - "HostName": "derp15d.tailscale.com", - "IPv4": "102.67.165.36", - "IPv6": "2c0f:edb0:0:10::599", - "CanPort80": true - }, - { - "Name": "15b", - "RegionID": 15, - "HostName": "derp15b.tailscale.com", - "IPv4": "102.67.165.90", - "IPv6": "2c0f:edb0:0:10::963", - "CanPort80": true - } - ] - }, - "16": { - "RegionID": 16, - "RegionCode": "mia", - "RegionName": "Miami", - "Latitude": 25.78, - "Longitude": -80.21, - "Nodes": [ - { - "Name": "16c", - "RegionID": 16, - "HostName": "derp16c.tailscale.com", - "IPv4": "192.73.243.229", - "IPv6": "2607:f740:17::4e4", - "CanPort80": true - }, - { - "Name": "16d", - "RegionID": 16, - "HostName": "derp16d.tailscale.com", - "IPv4": "192.73.243.141", - "IPv6": "2607:f740:17::475", - "CanPort80": true - }, - { - "Name": "16b", - "RegionID": 16, - "HostName": "derp16b.tailscale.com", - "IPv4": "192.73.243.135", - "IPv6": "2607:f740:17::476", - "CanPort80": true - } - ] - }, - "17": { - "RegionID": 17, - "RegionCode": "lax", - "RegionName": "Los Angeles", - "Latitude": 34.05, - "Longitude": -118.25, - "Nodes": [ - { - "Name": "17c", - "RegionID": 17, - "HostName": "derp17c.tailscale.com", - "IPv4": "208.111.40.12", - "IPv6": "2607:f740:c::10", - "CanPort80": true - }, - { - "Name": "17d", - "RegionID": 17, - "HostName": "derp17d.tailscale.com", - "IPv4": "208.111.40.216", - "IPv6": "2607:f740:c::e1b", - "CanPort80": true - }, - { - "Name": "17b", - "RegionID": 17, - "HostName": "derp17b.tailscale.com", - "IPv4": "192.73.244.245", - "IPv6": "2607:f740:c::646", - "CanPort80": true - } - ] - }, - "18": { - "RegionID": 18, - "RegionCode": "par", - "RegionName": "Paris", - "Latitude": 48.856667, - "Longitude": 2.352222, - "Nodes": [ - { - "Name": "18c", - "RegionID": 18, - "HostName": "derp18c.tailscale.com", - "IPv4": "176.58.90.207", - "IPv6": "2a00:dd80:3e::c19", - "CanPort80": true - }, - { - "Name": "18d", - "RegionID": 18, - "HostName": "derp18d.tailscale.com", - "IPv4": "176.58.90.104", - "IPv6": "2a00:dd80:3e::f2e", - "CanPort80": true - }, - { - "Name": "18b", - "RegionID": 18, - "HostName": "derp18b.tailscale.com", - "IPv4": "176.58.90.147", - "IPv6": "2a00:dd80:3e::363", - "CanPort80": true - } - ] - }, - "19": { - "RegionID": 19, - "RegionCode": "mad", - "RegionName": "Madrid", - "Latitude": 40.416944, - "Longitude": -3.703333, - "Nodes": [ - { - "Name": "19c", - "RegionID": 19, - "HostName": "derp19c.tailscale.com", - "IPv4": "45.159.97.61", - "IPv6": "2a00:dd80:14:10::20", - "CanPort80": true - }, - { - "Name": "19d", - "RegionID": 19, - "HostName": "derp19d.tailscale.com", - "IPv4": "45.159.97.233", - "IPv6": "2a00:dd80:14:10::34a", - "CanPort80": true - }, - { - "Name": "19b", - "RegionID": 19, - "HostName": "derp19b.tailscale.com", - "IPv4": "45.159.97.144", - "IPv6": "2a00:dd80:14:10::335", - "CanPort80": true - } - ] - }, - "2": { - "RegionID": 2, - "RegionCode": "sfo", - "RegionName": "San Francisco", - "Latitude": 37.7775, - "Longitude": -122.416389, - "Nodes": [ - { - "Name": "2e", - "RegionID": 2, - "HostName": "derp2e.tailscale.com", - "IPv4": "192.73.252.134", - "IPv6": "2607:f740:0:3f::44c", - "CanPort80": true - }, - { - "Name": "2f", - "RegionID": 2, - "HostName": "derp2f.tailscale.com", - "IPv4": "208.111.34.178", - "IPv6": "2607:f740:0:3f::f4", - "CanPort80": true - }, - { - "Name": "2d", - "RegionID": 2, - "HostName": "derp2d.tailscale.com", - "IPv4": "192.73.252.65", - "IPv6": "2607:f740:0:3f::287", - "CanPort80": true - } - ] - }, - "20": { - "RegionID": 20, - "RegionCode": "hkg", - "RegionName": "Hong Kong", - "Latitude": 22.3193, - "Longitude": 114.1694, - "Nodes": [ - { - "Name": "20c", - "RegionID": 20, - "HostName": "derp20c.tailscale.com", - "IPv4": "205.147.105.30", - "IPv6": "2403:2500:8000:1::5fb", - "CanPort80": true - }, - { - "Name": "20d", - "RegionID": 20, - "HostName": "derp20d.tailscale.com", - "IPv4": "205.147.105.78", - "IPv6": "2403:2500:8000:1::e9a", - "CanPort80": true - }, - { - "Name": "20b", - "RegionID": 20, - "HostName": "derp20b.tailscale.com", - "IPv4": "103.6.84.152", - "IPv6": "2403:2500:8000:1::ef6", - "CanPort80": true - } - ] - }, - "21": { - "RegionID": 21, - "RegionCode": "tor", - "RegionName": "Toronto", - "Latitude": 43.741667, - "Longitude": -79.373333, - "Nodes": [ - { - "Name": "21c", - "RegionID": 21, - "HostName": "derp21c.tailscale.com", - "IPv4": "162.248.221.215", - "IPv6": "2607:f740:50::f10", - "CanPort80": true - }, - { - "Name": "21d", - "RegionID": 21, - "HostName": "derp21d.tailscale.com", - "IPv4": "162.248.221.248", - "IPv6": "2607:f740:50::ca4", - "CanPort80": true - }, - { - "Name": "21b", - "RegionID": 21, - "HostName": "derp21b.tailscale.com", - "IPv4": "162.248.221.199", - "IPv6": "2607:f740:50::1d1", - "CanPort80": true - } - ] - }, - "22": { - "RegionID": 22, - "RegionCode": "waw", - "RegionName": "Warsaw", - "Latitude": 52.23, - "Longitude": 21.011111, - "Nodes": [ - { - "Name": "22c", - "RegionID": 22, - "HostName": "derp22c.tailscale.com", - "IPv4": "45.159.98.253", - "IPv6": "2a00:dd80:40:100::3f", - "CanPort80": true - }, - { - "Name": "22d", - "RegionID": 22, - "HostName": "derp22d.tailscale.com", - "IPv4": "45.159.98.145", - "IPv6": "2a00:dd80:40:100::211", - "CanPort80": true - }, - { - "Name": "22b", - "RegionID": 22, - "HostName": "derp22b.tailscale.com", - "IPv4": "45.159.98.196", - "IPv6": "2a00:dd80:40:100::316", - "CanPort80": true - } - ] - }, - "23": { - "RegionID": 23, - "RegionCode": "dbi", - "RegionName": "Dubai", - "Latitude": 25.263056, - "Longitude": 55.297222, - "Nodes": [ - { - "Name": "23c", - "RegionID": 23, - "HostName": "derp23c.tailscale.com", - "IPv4": "185.34.3.207", - "IPv6": "2a00:dd80:3f:100::a50", - "CanPort80": true - }, - { - "Name": "23d", - "RegionID": 23, - "HostName": "derp23d.tailscale.com", - "IPv4": "185.34.3.75", - "IPv6": "2a00:dd80:3f:100::97e", - "CanPort80": true - }, - { - "Name": "23b", - "RegionID": 23, - "HostName": "derp23b.tailscale.com", - "IPv4": "185.34.3.232", - "IPv6": "2a00:dd80:3f:100::76f", - "CanPort80": true - } - ] - }, - "24": { - "RegionID": 24, - "RegionCode": "hnl", - "RegionName": "Honolulu", - "Latitude": 21.306944, - "Longitude": -157.858333, - "Nodes": [ - { - "Name": "24c", - "RegionID": 24, - "HostName": "derp24c.tailscale.com", - "IPv4": "208.83.233.233", - "IPv6": "2001:19f0:c000:c591:5400:04ff:fe26:2c5f", - "CanPort80": true - }, - { - "Name": "24d", - "RegionID": 24, - "HostName": "derp24d.tailscale.com", - "IPv4": "208.72.155.133", - "IPv6": "2001:19f0:c000:c564:5400:04ff:fe26:2ba8", - "CanPort80": true - }, - { - "Name": "24b", - "RegionID": 24, - "HostName": "derp24b.tailscale.com", - "IPv4": "208.83.234.151", - "IPv6": "2001:19f0:c000:c586:5400:04ff:fe26:2ba6", - "CanPort80": true - } - ] - }, - "25": { - "RegionID": 25, - "RegionCode": "nai", - "RegionName": "Nairobi", - "Latitude": -1.286389, - "Longitude": 36.817222, - "Nodes": [ - { - "Name": "25c", - "RegionID": 25, - "HostName": "derp25c.tailscale.com", - "IPv4": "102.67.167.37", - "IPv6": "2c0f:edb0:2000:1::2c7", - "CanPort80": true - }, - { - "Name": "25d", - "RegionID": 25, - "HostName": "derp25d.tailscale.com", - "IPv4": "102.67.167.188", - "IPv6": "2c0f:edb0:2000:1::188", - "CanPort80": true - }, - { - "Name": "25b", - "RegionID": 25, - "HostName": "derp25b.tailscale.com", - "IPv4": "102.67.167.245", - "IPv6": "2c0f:edb0:2000:1::2e9", - "CanPort80": true - } - ] - }, - "26": { - "RegionID": 26, - "RegionCode": "nue", - "RegionName": "Nuremberg", - "Latitude": 49.453889, - "Longitude": 11.0775, - "Nodes": [ - { - "Name": "26c", - "RegionID": 26, - "HostName": "derp26c.tailscale.com", - "IPv4": "49.12.193.137", - "IPv6": "2a01:4f8:1c1c:5c70::1", - "CanPort80": true - }, - { - "Name": "26d", - "RegionID": 26, - "HostName": "derp26d.tailscale.com", - "IPv4": "49.13.204.141", - "IPv6": "2a01:4f8:1c0c:7d06::1", - "CanPort80": true - }, - { - "Name": "26b", - "RegionID": 26, - "HostName": "derp26b.tailscale.com", - "IPv4": "167.235.72.200", - "IPv6": "2a01:4f8:1c1c:47b6::1", - "CanPort80": true - } - ] - }, - "27": { - "RegionID": 27, - "RegionCode": "iad", - "RegionName": "Ashburn", - "Latitude": 39.03, - "Longitude": -77.471111, - "Nodes": [ - { - "Name": "27d", - "RegionID": 27, - "HostName": "derp27d.tailscale.com", - "IPv4": "178.156.152.106", - "IPv6": "2a01:4ff:f0:3c8e::1", - "CanPort80": true - }, - { - "Name": "27c", - "RegionID": 27, - "HostName": "derp27c.tailscale.com", - "IPv4": "178.156.152.91", - "IPv6": "2a01:4ff:f0:3913::1", - "CanPort80": true - }, - { - "Name": "27e", - "RegionID": 27, - "HostName": "derp27e.tailscale.com", - "IPv4": "178.156.134.232", - "IPv6": "2a01:4ff:f0:28d4::1", - "CanPort80": true - }, - { - "Name": "27b", - "RegionID": 27, - "HostName": "derp27b.tailscale.com", - "IPv4": "5.161.218.233", - "IPv6": "2a01:4ff:f0:3db9::1", - "CanPort80": true - } - ] - }, - "28": { - "RegionID": 28, - "RegionCode": "hel", - "RegionName": "Helsinki", - "Latitude": 60.170833, - "Longitude": 24.9375, - "Nodes": [ - { - "Name": "28c", - "RegionID": 28, - "HostName": "derp28c.tailscale.com", - "IPv4": "95.217.2.165", - "IPv6": "2a01:4f9:c012:cd74::1", - "CanPort80": true - }, - { - "Name": "28d", - "RegionID": 28, - "HostName": "derp28d.tailscale.com", - "IPv4": "157.180.28.32", - "IPv6": "2a01:4f9:c012:2e5b::1", - "CanPort80": true - }, - { - "Name": "28b", - "RegionID": 28, - "HostName": "derp28b.tailscale.com", - "IPv4": "65.109.143.62", - "IPv6": "2a01:4f9:c012:d55c::1", - "CanPort80": true - } - ] - }, - "3": { - "RegionID": 3, - "RegionCode": "sin", - "RegionName": "Singapore", - "Latitude": 1.3521, - "Longitude": 103.8198, - "Nodes": [ - { - "Name": "3g", - "RegionID": 3, - "HostName": "derp3g.tailscale.com", - "IPv4": "172.237.72.79", - "IPv6": "2600:3c15::2000:adff:fe08:6fab", - "CanPort80": true - }, - { - "Name": "3f", - "RegionID": 3, - "HostName": "derp3f.tailscale.com", - "IPv4": "172.237.72.8", - "IPv6": "2600:3c15::2000:53ff:fe48:a668", - "CanPort80": true - }, - { - "Name": "3h", - "RegionID": 3, - "HostName": "derp3h.tailscale.com", - "IPv4": "172.237.66.30", - "IPv6": "2600:3c15::2000:3dff:fe44:50aa", - "CanPort80": true - }, - { - "Name": "3e", - "RegionID": 3, - "HostName": "derp3e.tailscale.com", - "IPv4": "172.237.72.43", - "IPv6": "2600:3c15::2000:6cff:fee4:d799", - "CanPort80": true - } - ] - }, - "4": { - "RegionID": 4, - "RegionCode": "fra", - "RegionName": "Frankfurt", - "Latitude": 50.1109, - "Longitude": 8.6821, - "Nodes": [ - { - "Name": "4h", - "RegionID": 4, - "HostName": "derp4h.tailscale.com", - "IPv4": "185.40.234.77", - "IPv6": "2a00:dd80:20::bcf", - "CanPort80": true - }, - { - "Name": "4g", - "RegionID": 4, - "HostName": "derp4g.tailscale.com", - "IPv4": "185.40.234.113", - "IPv6": "2a00:dd80:20::8f", - "CanPort80": true - }, - { - "Name": "4i", - "RegionID": 4, - "HostName": "derp4i.tailscale.com", - "IPv4": "185.40.234.53", - "IPv6": "2a00:dd80:20::8a6", - "CanPort80": true - }, - { - "Name": "4f", - "RegionID": 4, - "HostName": "derp4f.tailscale.com", - "IPv4": "185.40.234.219", - "IPv6": "2a00:dd80:20::a25", - "CanPort80": true - } - ] - }, - "5": { - "RegionID": 5, - "RegionCode": "syd", - "RegionName": "Sydney", - "Latitude": -33.867778, - "Longitude": 151.21, - "Nodes": [ - { - "Name": "5f", - "RegionID": 5, - "HostName": "derp5f.tailscale.com", - "IPv4": "172.105.166.103", - "IPv6": "2400:8907::2000:ccff:fe1f:80da", - "CanPort80": true - }, - { - "Name": "5g", - "RegionID": 5, - "HostName": "derp5g.tailscale.com", - "IPv4": "172.105.169.57", - "IPv6": "2400:8907::2000:2fff:fea7:57f4", - "CanPort80": true - }, - { - "Name": "5e", - "RegionID": 5, - "HostName": "derp5e.tailscale.com", - "IPv4": "172.105.179.230", - "IPv6": "2400:8907::2000:ceff:fe8d:4f4e", - "CanPort80": true - } - ] - }, - "6": { - "RegionID": 6, - "RegionCode": "blr", - "RegionName": "Bengaluru", - "Latitude": 12.9716, - "Longitude": 77.5946, - "Nodes": [ - { - "Name": "6a", - "RegionID": 6, - "HostName": "derp6.tailscale.com", - "IPv4": "68.183.90.120", - "IPv6": "2400:6180:100:d0::982:d001", - "CanPort80": true - } - ] - }, - "7": { - "RegionID": 7, - "RegionCode": "tok", - "RegionName": "Tokyo", - "Latitude": 35.6764, - "Longitude": 139.65, - "Nodes": [ - { - "Name": "7g", - "RegionID": 7, - "HostName": "derp7g.tailscale.com", - "IPv4": "172.238.6.179", - "IPv6": "2600:3c18::2000:3fff:fe80:3ebd", - "CanPort80": true - }, - { - "Name": "7f", - "RegionID": 7, - "HostName": "derp7f.tailscale.com", - "IPv4": "172.238.6.34", - "IPv6": "2600:3c18::2000:acff:fe8e:3ed5", - "CanPort80": true - }, - { - "Name": "7h", - "RegionID": 7, - "HostName": "derp7h.tailscale.com", - "IPv4": "172.237.28.183", - "IPv6": "2600:3c18::2000:b1ff:fea9:4560", - "CanPort80": true - }, - { - "Name": "7e", - "RegionID": 7, - "HostName": "derp7e.tailscale.com", - "IPv4": "172.238.6.180", - "IPv6": "2600:3c18::2000:60ff:fe0f:6e83", - "STUNOnly": true, - "CanPort80": true - } - ] - }, - "8": { - "RegionID": 8, - "RegionCode": "lhr", - "RegionName": "London", - "Latitude": 51.5072, - "Longitude": 0.1276, - "Nodes": [ - { - "Name": "8f", - "RegionID": 8, - "HostName": "derp8f.tailscale.com", - "IPv4": "176.58.88.183", - "IPv6": "2a00:dd80:3a::dfa", - "CanPort80": true - }, - { - "Name": "8g", - "RegionID": 8, - "HostName": "derp8g.tailscale.com", - "IPv4": "176.58.92.254", - "IPv6": "2a00:dd80:3a::ed", - "CanPort80": true - }, - { - "Name": "8e", - "RegionID": 8, - "HostName": "derp8e.tailscale.com", - "IPv4": "176.58.92.144", - "IPv6": "2a00:dd80:3a::b33", - "CanPort80": true - } - ] - }, - "9": { - "RegionID": 9, - "RegionCode": "dfw", - "RegionName": "Dallas", - "Latitude": 32.779167, - "Longitude": -96.808889, - "Nodes": [ - { - "Name": "9e", - "RegionID": 9, - "HostName": "derp9e.tailscale.com", - "IPv4": "192.73.248.83", - "IPv6": "2607:f740:100::359", - "CanPort80": true - }, - { - "Name": "9f", - "RegionID": 9, - "HostName": "derp9f.tailscale.com", - "IPv4": "209.177.156.197", - "IPv6": "2607:f740:100::cad", - "CanPort80": true - }, - { - "Name": "9d", - "RegionID": 9, - "HostName": "derp9d.tailscale.com", - "IPv4": "209.177.156.94", - "IPv6": "2607:f740:100::c05", - "CanPort80": true - } - ] - } - } - }, - "DisplayMessages": null, - "TKAEnabled": false, - "TKAHead": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", - "Domain": "kratail2tid@passkey", - "DomainAuditLogID": "", - "UserProfiles": { - "4041918547170221": { - "ID": 4041918547170221, - "LoginName": "exit-node.tail78f774.ts.net", - "DisplayName": "exit-node" - } - } + "PacketFilterRules": null } }, "group-a-client": { - "commands": { - "packet_filter_rules": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/group-a-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/group-a-client/tailscaled.sock debug localapi POST debug-packet-filter-matches" - }, "packet_filter_rules": null, - "packet_filter_matches": [], - "whois": { - "100.124.195.93": { - "peer_name": "exit-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/group-a-client/tailscaled.sock whois --json 100.124.195.93", - "response": null - }, - "100.116.18.24": { - "peer_name": "exit-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/group-a-client/tailscaled.sock whois --json 100.116.18.24", - "response": null - }, - "100.85.66.106": { - "peer_name": "exit-node", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/group-a-client/tailscaled.sock whois --json 100.85.66.106", - "response": null - }, - "100.77.135.18": { - "peer_name": "group-b-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/group-a-client/tailscaled.sock whois --json 100.77.135.18", - "response": null - }, - "100.105.127.107": { - "peer_name": "multi-exit-router", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/group-a-client/tailscaled.sock whois --json 100.105.127.107", - "response": null - }, - "100.109.43.124": { - "peer_name": "router-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/group-a-client/tailscaled.sock whois --json 100.109.43.124", - "response": null - }, - "100.65.172.123": { - "peer_name": "router-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/group-a-client/tailscaled.sock whois --json 100.65.172.123", - "response": null - }, - "100.92.142.61": { - "peer_name": "subnet-router", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/group-a-client/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/group-a-client/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/group-a-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/group-a-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/group-a-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/group-a-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/group-a-client/tailscaled.sock whois --json 100.90.199.68", - "response": null - } - }, "netmap": { - "SelfNode": { - "ID": 6999435610919250, - "StableID": "nyckVfJ4fw11CNTRL", - "Name": "group-a-client.tail78f774.ts.net.", - "User": 6999435610919250, - "Key": "nodekey:802726716bd4942fceb5e444218c930040fadb082698b57ea3eb59a6a26ba20d", - "DiscoKey": "discokey:bc93c2d3b81606e44eb1c96d721e7cd73c9497aa7d3efbe2f5e0d1e2e95b190f", - "Addresses": ["100.107.162.14/32", "fd7a:115c:a1e0::a237:a20e/128"], - "AllowedIPs": ["100.107.162.14/32", "fd7a:115c:a1e0::a237:a20e/128"], - "Endpoints": ["77.164.248.136:51980", "10.65.0.27:51980", "172.17.0.1:51980"], - "Hostinfo": { - "Hostname": "group-a-client", - "RequestTags": ["tag:group-a"], - "Services": [ - { "Proto": "peerapi4", "Port": 36543 }, - { "Proto": "peerapi6", "Port": 36543 }, - { "Proto": "peerapi-dns-proxy", "Port": 1 } - ] - }, - "Created": "2026-03-28T10:38:04.339428828Z", - "Tags": ["tag:group-a"], - "MachineAuthorized": true, - "CapMap": { - "https://tailscale.com/cap/file-sharing": null, - "https://tailscale.com/cap/is-owner": null, - "https://tailscale.com/cap/ssh": null, - "https://tailscale.com/cap/tailnet-lock": null, - "probe-udp-lifetime": null, - "ssh-behavior-v1": null, - "ssh-env-vars": null, - "store-appc-routes": null, - "tailnet-display-name": ["kratail2tid@passkey"] - }, - "ComputedName": "group-a-client", - "ComputedNameWithHost": "group-a-client" - }, - "AllCaps": [ - "tailnet-display-name", - "probe-udp-lifetime", - "https://tailscale.com/cap/is-owner", - "https://tailscale.com/cap/ssh", - "ssh-behavior-v1", - "ssh-env-vars", - "https://tailscale.com/cap/tailnet-lock", - "https://tailscale.com/cap/file-sharing", - "store-appc-routes" - ], - "NodeKey": "nodekey:802726716bd4942fceb5e444218c930040fadb082698b57ea3eb59a6a26ba20d", - "MachineKey": "mkey:fd2d0c2953440569b6c045d6bb1826bf138bf65b4ed4433532e4d91e09fd6b6b", "Peers": [], - "DNS": { - "Routes": { - "tail78f774.ts.net.": null, - "ts.net.": [{ "Addr": "199.247.155.53" }, { "Addr": "2620:111:8007::53" }] - }, - "Domains": ["tail78f774.ts.net"], - "Proxied": true, - "ExitNodeFilteredSet": [".ts.net", ".tailscale.net"] - }, - "PacketFilter": [], - "PacketFilterRules": null, - "SSHPolicy": { "rules": [] }, - "CollectServices": false, - "DERPMap": { - "Regions": { - "1": { - "RegionID": 1, - "RegionCode": "nyc", - "RegionName": "New York City", - "Latitude": 40.7128, - "Longitude": -74.006, - "Nodes": [ - { - "Name": "1h", - "RegionID": 1, - "HostName": "derp1h.tailscale.com", - "IPv4": "199.38.181.93", - "IPv6": "2607:f740:f::afd", - "CanPort80": true - }, - { - "Name": "1g", - "RegionID": 1, - "HostName": "derp1g.tailscale.com", - "IPv4": "209.177.145.120", - "IPv6": "2607:f740:f::3eb", - "CanPort80": true - }, - { - "Name": "1i", - "RegionID": 1, - "HostName": "derp1i.tailscale.com", - "IPv4": "199.38.181.103", - "IPv6": "2607:f740:f::e19", - "CanPort80": true - }, - { - "Name": "1f", - "RegionID": 1, - "HostName": "derp1f.tailscale.com", - "IPv4": "199.38.181.104", - "IPv6": "2607:f740:f::bc", - "CanPort80": true - } - ] - }, - "10": { - "RegionID": 10, - "RegionCode": "sea", - "RegionName": "Seattle", - "Latitude": 47.609722, - "Longitude": -122.333056, - "Nodes": [ - { - "Name": "10c", - "RegionID": 10, - "HostName": "derp10c.tailscale.com", - "IPv4": "192.73.240.121", - "IPv6": "2607:f740:14::40c", - "CanPort80": true - }, - { - "Name": "10d", - "RegionID": 10, - "HostName": "derp10d.tailscale.com", - "IPv4": "192.73.240.132", - "IPv6": "2607:f740:14::500", - "CanPort80": true - }, - { - "Name": "10b", - "RegionID": 10, - "HostName": "derp10b.tailscale.com", - "IPv4": "192.73.240.161", - "IPv6": "2607:f740:14::61c", - "CanPort80": true - } - ] - }, - "11": { - "RegionID": 11, - "RegionCode": "sao", - "RegionName": "São Paulo", - "Latitude": -23.55, - "Longitude": -46.633333, - "Nodes": [ - { - "Name": "11f", - "RegionID": 11, - "HostName": "derp11f.tailscale.com", - "IPv4": "172.237.61.197", - "IPv6": "2600:3c0d::2000:3bff:fe44:6166", - "CanPort80": true - }, - { - "Name": "11g", - "RegionID": 11, - "HostName": "derp11g.tailscale.com", - "IPv4": "172.237.61.190", - "IPv6": "2600:3c0d::2000:62ff:febe:2e67", - "CanPort80": true - }, - { - "Name": "11e", - "RegionID": 11, - "HostName": "derp11e.tailscale.com", - "IPv4": "172.237.61.194", - "IPv6": "2600:3c0d::2000:d2ff:fe43:1790", - "CanPort80": true - } - ] - }, - "12": { - "RegionID": 12, - "RegionCode": "ord", - "RegionName": "Chicago", - "Latitude": 41.881944, - "Longitude": -87.627778, - "Nodes": [ - { - "Name": "12e", - "RegionID": 12, - "HostName": "derp12e.tailscale.com", - "IPv4": "209.177.158.15", - "IPv6": "2607:f740:e::b17", - "CanPort80": true - }, - { - "Name": "12f", - "RegionID": 12, - "HostName": "derp12f.tailscale.com", - "IPv4": "199.38.182.118", - "IPv6": "2607:f740:e::4c8", - "CanPort80": true - }, - { - "Name": "12d", - "RegionID": 12, - "HostName": "derp12d.tailscale.com", - "IPv4": "209.177.158.246", - "IPv6": "2607:f740:e::811", - "CanPort80": true - } - ] - }, - "13": { - "RegionID": 13, - "RegionCode": "den", - "RegionName": "Denver", - "Latitude": 39.7392, - "Longitude": -104.9849, - "Nodes": [ - { - "Name": "13c", - "RegionID": 13, - "HostName": "derp13c.tailscale.com", - "IPv4": "192.73.242.28", - "IPv6": "2607:f740:16::5c", - "CanPort80": true - }, - { - "Name": "13d", - "RegionID": 13, - "HostName": "derp13d.tailscale.com", - "IPv4": "192.73.242.204", - "IPv6": "2607:f740:16::c23", - "CanPort80": true - }, - { - "Name": "13b", - "RegionID": 13, - "HostName": "derp13b.tailscale.com", - "IPv4": "192.73.242.187", - "IPv6": "2607:f740:16::640", - "CanPort80": true - } - ] - }, - "14": { - "RegionID": 14, - "RegionCode": "ams", - "RegionName": "Amsterdam", - "Latitude": 52.372778, - "Longitude": 4.893611, - "Nodes": [ - { - "Name": "14c", - "RegionID": 14, - "HostName": "derp14c.tailscale.com", - "IPv4": "176.58.93.147", - "IPv6": "2a00:dd80:3c::b09", - "CanPort80": true - }, - { - "Name": "14d", - "RegionID": 14, - "HostName": "derp14d.tailscale.com", - "IPv4": "176.58.93.154", - "IPv6": "2a00:dd80:3c::3d5", - "CanPort80": true - }, - { - "Name": "14b", - "RegionID": 14, - "HostName": "derp14b.tailscale.com", - "IPv4": "176.58.93.248", - "IPv6": "2a00:dd80:3c::807", - "CanPort80": true - } - ] - }, - "15": { - "RegionID": 15, - "RegionCode": "jnb", - "RegionName": "Johannesburg", - "Latitude": -26.204444, - "Longitude": 28.045556, - "Nodes": [ - { - "Name": "15c", - "RegionID": 15, - "HostName": "derp15c.tailscale.com", - "IPv4": "102.67.165.185", - "IPv6": "2c0f:edb0:0:10::b59", - "CanPort80": true - }, - { - "Name": "15d", - "RegionID": 15, - "HostName": "derp15d.tailscale.com", - "IPv4": "102.67.165.36", - "IPv6": "2c0f:edb0:0:10::599", - "CanPort80": true - }, - { - "Name": "15b", - "RegionID": 15, - "HostName": "derp15b.tailscale.com", - "IPv4": "102.67.165.90", - "IPv6": "2c0f:edb0:0:10::963", - "CanPort80": true - } - ] - }, - "16": { - "RegionID": 16, - "RegionCode": "mia", - "RegionName": "Miami", - "Latitude": 25.78, - "Longitude": -80.21, - "Nodes": [ - { - "Name": "16c", - "RegionID": 16, - "HostName": "derp16c.tailscale.com", - "IPv4": "192.73.243.229", - "IPv6": "2607:f740:17::4e4", - "CanPort80": true - }, - { - "Name": "16d", - "RegionID": 16, - "HostName": "derp16d.tailscale.com", - "IPv4": "192.73.243.141", - "IPv6": "2607:f740:17::475", - "CanPort80": true - }, - { - "Name": "16b", - "RegionID": 16, - "HostName": "derp16b.tailscale.com", - "IPv4": "192.73.243.135", - "IPv6": "2607:f740:17::476", - "CanPort80": true - } - ] - }, - "17": { - "RegionID": 17, - "RegionCode": "lax", - "RegionName": "Los Angeles", - "Latitude": 34.05, - "Longitude": -118.25, - "Nodes": [ - { - "Name": "17c", - "RegionID": 17, - "HostName": "derp17c.tailscale.com", - "IPv4": "208.111.40.12", - "IPv6": "2607:f740:c::10", - "CanPort80": true - }, - { - "Name": "17d", - "RegionID": 17, - "HostName": "derp17d.tailscale.com", - "IPv4": "208.111.40.216", - "IPv6": "2607:f740:c::e1b", - "CanPort80": true - }, - { - "Name": "17b", - "RegionID": 17, - "HostName": "derp17b.tailscale.com", - "IPv4": "192.73.244.245", - "IPv6": "2607:f740:c::646", - "CanPort80": true - } - ] - }, - "18": { - "RegionID": 18, - "RegionCode": "par", - "RegionName": "Paris", - "Latitude": 48.856667, - "Longitude": 2.352222, - "Nodes": [ - { - "Name": "18c", - "RegionID": 18, - "HostName": "derp18c.tailscale.com", - "IPv4": "176.58.90.207", - "IPv6": "2a00:dd80:3e::c19", - "CanPort80": true - }, - { - "Name": "18d", - "RegionID": 18, - "HostName": "derp18d.tailscale.com", - "IPv4": "176.58.90.104", - "IPv6": "2a00:dd80:3e::f2e", - "CanPort80": true - }, - { - "Name": "18b", - "RegionID": 18, - "HostName": "derp18b.tailscale.com", - "IPv4": "176.58.90.147", - "IPv6": "2a00:dd80:3e::363", - "CanPort80": true - } - ] - }, - "19": { - "RegionID": 19, - "RegionCode": "mad", - "RegionName": "Madrid", - "Latitude": 40.416944, - "Longitude": -3.703333, - "Nodes": [ - { - "Name": "19c", - "RegionID": 19, - "HostName": "derp19c.tailscale.com", - "IPv4": "45.159.97.61", - "IPv6": "2a00:dd80:14:10::20", - "CanPort80": true - }, - { - "Name": "19d", - "RegionID": 19, - "HostName": "derp19d.tailscale.com", - "IPv4": "45.159.97.233", - "IPv6": "2a00:dd80:14:10::34a", - "CanPort80": true - }, - { - "Name": "19b", - "RegionID": 19, - "HostName": "derp19b.tailscale.com", - "IPv4": "45.159.97.144", - "IPv6": "2a00:dd80:14:10::335", - "CanPort80": true - } - ] - }, - "2": { - "RegionID": 2, - "RegionCode": "sfo", - "RegionName": "San Francisco", - "Latitude": 37.7775, - "Longitude": -122.416389, - "Nodes": [ - { - "Name": "2e", - "RegionID": 2, - "HostName": "derp2e.tailscale.com", - "IPv4": "192.73.252.134", - "IPv6": "2607:f740:0:3f::44c", - "CanPort80": true - }, - { - "Name": "2f", - "RegionID": 2, - "HostName": "derp2f.tailscale.com", - "IPv4": "208.111.34.178", - "IPv6": "2607:f740:0:3f::f4", - "CanPort80": true - }, - { - "Name": "2d", - "RegionID": 2, - "HostName": "derp2d.tailscale.com", - "IPv4": "192.73.252.65", - "IPv6": "2607:f740:0:3f::287", - "CanPort80": true - } - ] - }, - "20": { - "RegionID": 20, - "RegionCode": "hkg", - "RegionName": "Hong Kong", - "Latitude": 22.3193, - "Longitude": 114.1694, - "Nodes": [ - { - "Name": "20c", - "RegionID": 20, - "HostName": "derp20c.tailscale.com", - "IPv4": "205.147.105.30", - "IPv6": "2403:2500:8000:1::5fb", - "CanPort80": true - }, - { - "Name": "20d", - "RegionID": 20, - "HostName": "derp20d.tailscale.com", - "IPv4": "205.147.105.78", - "IPv6": "2403:2500:8000:1::e9a", - "CanPort80": true - }, - { - "Name": "20b", - "RegionID": 20, - "HostName": "derp20b.tailscale.com", - "IPv4": "103.6.84.152", - "IPv6": "2403:2500:8000:1::ef6", - "CanPort80": true - } - ] - }, - "21": { - "RegionID": 21, - "RegionCode": "tor", - "RegionName": "Toronto", - "Latitude": 43.741667, - "Longitude": -79.373333, - "Nodes": [ - { - "Name": "21c", - "RegionID": 21, - "HostName": "derp21c.tailscale.com", - "IPv4": "162.248.221.215", - "IPv6": "2607:f740:50::f10", - "CanPort80": true - }, - { - "Name": "21d", - "RegionID": 21, - "HostName": "derp21d.tailscale.com", - "IPv4": "162.248.221.248", - "IPv6": "2607:f740:50::ca4", - "CanPort80": true - }, - { - "Name": "21b", - "RegionID": 21, - "HostName": "derp21b.tailscale.com", - "IPv4": "162.248.221.199", - "IPv6": "2607:f740:50::1d1", - "CanPort80": true - } - ] - }, - "22": { - "RegionID": 22, - "RegionCode": "waw", - "RegionName": "Warsaw", - "Latitude": 52.23, - "Longitude": 21.011111, - "Nodes": [ - { - "Name": "22c", - "RegionID": 22, - "HostName": "derp22c.tailscale.com", - "IPv4": "45.159.98.253", - "IPv6": "2a00:dd80:40:100::3f", - "CanPort80": true - }, - { - "Name": "22d", - "RegionID": 22, - "HostName": "derp22d.tailscale.com", - "IPv4": "45.159.98.145", - "IPv6": "2a00:dd80:40:100::211", - "CanPort80": true - }, - { - "Name": "22b", - "RegionID": 22, - "HostName": "derp22b.tailscale.com", - "IPv4": "45.159.98.196", - "IPv6": "2a00:dd80:40:100::316", - "CanPort80": true - } - ] - }, - "23": { - "RegionID": 23, - "RegionCode": "dbi", - "RegionName": "Dubai", - "Latitude": 25.263056, - "Longitude": 55.297222, - "Nodes": [ - { - "Name": "23c", - "RegionID": 23, - "HostName": "derp23c.tailscale.com", - "IPv4": "185.34.3.207", - "IPv6": "2a00:dd80:3f:100::a50", - "CanPort80": true - }, - { - "Name": "23d", - "RegionID": 23, - "HostName": "derp23d.tailscale.com", - "IPv4": "185.34.3.75", - "IPv6": "2a00:dd80:3f:100::97e", - "CanPort80": true - }, - { - "Name": "23b", - "RegionID": 23, - "HostName": "derp23b.tailscale.com", - "IPv4": "185.34.3.232", - "IPv6": "2a00:dd80:3f:100::76f", - "CanPort80": true - } - ] - }, - "24": { - "RegionID": 24, - "RegionCode": "hnl", - "RegionName": "Honolulu", - "Latitude": 21.306944, - "Longitude": -157.858333, - "Nodes": [ - { - "Name": "24c", - "RegionID": 24, - "HostName": "derp24c.tailscale.com", - "IPv4": "208.83.233.233", - "IPv6": "2001:19f0:c000:c591:5400:04ff:fe26:2c5f", - "CanPort80": true - }, - { - "Name": "24d", - "RegionID": 24, - "HostName": "derp24d.tailscale.com", - "IPv4": "208.72.155.133", - "IPv6": "2001:19f0:c000:c564:5400:04ff:fe26:2ba8", - "CanPort80": true - }, - { - "Name": "24b", - "RegionID": 24, - "HostName": "derp24b.tailscale.com", - "IPv4": "208.83.234.151", - "IPv6": "2001:19f0:c000:c586:5400:04ff:fe26:2ba6", - "CanPort80": true - } - ] - }, - "25": { - "RegionID": 25, - "RegionCode": "nai", - "RegionName": "Nairobi", - "Latitude": -1.286389, - "Longitude": 36.817222, - "Nodes": [ - { - "Name": "25c", - "RegionID": 25, - "HostName": "derp25c.tailscale.com", - "IPv4": "102.67.167.37", - "IPv6": "2c0f:edb0:2000:1::2c7", - "CanPort80": true - }, - { - "Name": "25d", - "RegionID": 25, - "HostName": "derp25d.tailscale.com", - "IPv4": "102.67.167.188", - "IPv6": "2c0f:edb0:2000:1::188", - "CanPort80": true - }, - { - "Name": "25b", - "RegionID": 25, - "HostName": "derp25b.tailscale.com", - "IPv4": "102.67.167.245", - "IPv6": "2c0f:edb0:2000:1::2e9", - "CanPort80": true - } - ] - }, - "26": { - "RegionID": 26, - "RegionCode": "nue", - "RegionName": "Nuremberg", - "Latitude": 49.453889, - "Longitude": 11.0775, - "Nodes": [ - { - "Name": "26c", - "RegionID": 26, - "HostName": "derp26c.tailscale.com", - "IPv4": "49.12.193.137", - "IPv6": "2a01:4f8:1c1c:5c70::1", - "CanPort80": true - }, - { - "Name": "26d", - "RegionID": 26, - "HostName": "derp26d.tailscale.com", - "IPv4": "49.13.204.141", - "IPv6": "2a01:4f8:1c0c:7d06::1", - "CanPort80": true - }, - { - "Name": "26b", - "RegionID": 26, - "HostName": "derp26b.tailscale.com", - "IPv4": "167.235.72.200", - "IPv6": "2a01:4f8:1c1c:47b6::1", - "CanPort80": true - } - ] - }, - "27": { - "RegionID": 27, - "RegionCode": "iad", - "RegionName": "Ashburn", - "Latitude": 39.03, - "Longitude": -77.471111, - "Nodes": [ - { - "Name": "27d", - "RegionID": 27, - "HostName": "derp27d.tailscale.com", - "IPv4": "178.156.152.106", - "IPv6": "2a01:4ff:f0:3c8e::1", - "CanPort80": true - }, - { - "Name": "27c", - "RegionID": 27, - "HostName": "derp27c.tailscale.com", - "IPv4": "178.156.152.91", - "IPv6": "2a01:4ff:f0:3913::1", - "CanPort80": true - }, - { - "Name": "27e", - "RegionID": 27, - "HostName": "derp27e.tailscale.com", - "IPv4": "178.156.134.232", - "IPv6": "2a01:4ff:f0:28d4::1", - "CanPort80": true - }, - { - "Name": "27b", - "RegionID": 27, - "HostName": "derp27b.tailscale.com", - "IPv4": "5.161.218.233", - "IPv6": "2a01:4ff:f0:3db9::1", - "CanPort80": true - } - ] - }, - "28": { - "RegionID": 28, - "RegionCode": "hel", - "RegionName": "Helsinki", - "Latitude": 60.170833, - "Longitude": 24.9375, - "Nodes": [ - { - "Name": "28c", - "RegionID": 28, - "HostName": "derp28c.tailscale.com", - "IPv4": "95.217.2.165", - "IPv6": "2a01:4f9:c012:cd74::1", - "CanPort80": true - }, - { - "Name": "28d", - "RegionID": 28, - "HostName": "derp28d.tailscale.com", - "IPv4": "157.180.28.32", - "IPv6": "2a01:4f9:c012:2e5b::1", - "CanPort80": true - }, - { - "Name": "28b", - "RegionID": 28, - "HostName": "derp28b.tailscale.com", - "IPv4": "65.109.143.62", - "IPv6": "2a01:4f9:c012:d55c::1", - "CanPort80": true - } - ] - }, - "3": { - "RegionID": 3, - "RegionCode": "sin", - "RegionName": "Singapore", - "Latitude": 1.3521, - "Longitude": 103.8198, - "Nodes": [ - { - "Name": "3g", - "RegionID": 3, - "HostName": "derp3g.tailscale.com", - "IPv4": "172.237.72.79", - "IPv6": "2600:3c15::2000:adff:fe08:6fab", - "CanPort80": true - }, - { - "Name": "3f", - "RegionID": 3, - "HostName": "derp3f.tailscale.com", - "IPv4": "172.237.72.8", - "IPv6": "2600:3c15::2000:53ff:fe48:a668", - "CanPort80": true - }, - { - "Name": "3h", - "RegionID": 3, - "HostName": "derp3h.tailscale.com", - "IPv4": "172.237.66.30", - "IPv6": "2600:3c15::2000:3dff:fe44:50aa", - "CanPort80": true - }, - { - "Name": "3e", - "RegionID": 3, - "HostName": "derp3e.tailscale.com", - "IPv4": "172.237.72.43", - "IPv6": "2600:3c15::2000:6cff:fee4:d799", - "CanPort80": true - } - ] - }, - "4": { - "RegionID": 4, - "RegionCode": "fra", - "RegionName": "Frankfurt", - "Latitude": 50.1109, - "Longitude": 8.6821, - "Nodes": [ - { - "Name": "4h", - "RegionID": 4, - "HostName": "derp4h.tailscale.com", - "IPv4": "185.40.234.77", - "IPv6": "2a00:dd80:20::bcf", - "CanPort80": true - }, - { - "Name": "4g", - "RegionID": 4, - "HostName": "derp4g.tailscale.com", - "IPv4": "185.40.234.113", - "IPv6": "2a00:dd80:20::8f", - "CanPort80": true - }, - { - "Name": "4i", - "RegionID": 4, - "HostName": "derp4i.tailscale.com", - "IPv4": "185.40.234.53", - "IPv6": "2a00:dd80:20::8a6", - "CanPort80": true - }, - { - "Name": "4f", - "RegionID": 4, - "HostName": "derp4f.tailscale.com", - "IPv4": "185.40.234.219", - "IPv6": "2a00:dd80:20::a25", - "CanPort80": true - } - ] - }, - "5": { - "RegionID": 5, - "RegionCode": "syd", - "RegionName": "Sydney", - "Latitude": -33.867778, - "Longitude": 151.21, - "Nodes": [ - { - "Name": "5f", - "RegionID": 5, - "HostName": "derp5f.tailscale.com", - "IPv4": "172.105.166.103", - "IPv6": "2400:8907::2000:ccff:fe1f:80da", - "CanPort80": true - }, - { - "Name": "5g", - "RegionID": 5, - "HostName": "derp5g.tailscale.com", - "IPv4": "172.105.169.57", - "IPv6": "2400:8907::2000:2fff:fea7:57f4", - "CanPort80": true - }, - { - "Name": "5e", - "RegionID": 5, - "HostName": "derp5e.tailscale.com", - "IPv4": "172.105.179.230", - "IPv6": "2400:8907::2000:ceff:fe8d:4f4e", - "CanPort80": true - } - ] - }, - "6": { - "RegionID": 6, - "RegionCode": "blr", - "RegionName": "Bengaluru", - "Latitude": 12.9716, - "Longitude": 77.5946, - "Nodes": [ - { - "Name": "6a", - "RegionID": 6, - "HostName": "derp6.tailscale.com", - "IPv4": "68.183.90.120", - "IPv6": "2400:6180:100:d0::982:d001", - "CanPort80": true - } - ] - }, - "7": { - "RegionID": 7, - "RegionCode": "tok", - "RegionName": "Tokyo", - "Latitude": 35.6764, - "Longitude": 139.65, - "Nodes": [ - { - "Name": "7g", - "RegionID": 7, - "HostName": "derp7g.tailscale.com", - "IPv4": "172.238.6.179", - "IPv6": "2600:3c18::2000:3fff:fe80:3ebd", - "CanPort80": true - }, - { - "Name": "7f", - "RegionID": 7, - "HostName": "derp7f.tailscale.com", - "IPv4": "172.238.6.34", - "IPv6": "2600:3c18::2000:acff:fe8e:3ed5", - "CanPort80": true - }, - { - "Name": "7h", - "RegionID": 7, - "HostName": "derp7h.tailscale.com", - "IPv4": "172.237.28.183", - "IPv6": "2600:3c18::2000:b1ff:fea9:4560", - "CanPort80": true - }, - { - "Name": "7e", - "RegionID": 7, - "HostName": "derp7e.tailscale.com", - "IPv4": "172.238.6.180", - "IPv6": "2600:3c18::2000:60ff:fe0f:6e83", - "STUNOnly": true, - "CanPort80": true - } - ] - }, - "8": { - "RegionID": 8, - "RegionCode": "lhr", - "RegionName": "London", - "Latitude": 51.5072, - "Longitude": 0.1276, - "Nodes": [ - { - "Name": "8f", - "RegionID": 8, - "HostName": "derp8f.tailscale.com", - "IPv4": "176.58.88.183", - "IPv6": "2a00:dd80:3a::dfa", - "CanPort80": true - }, - { - "Name": "8g", - "RegionID": 8, - "HostName": "derp8g.tailscale.com", - "IPv4": "176.58.92.254", - "IPv6": "2a00:dd80:3a::ed", - "CanPort80": true - }, - { - "Name": "8e", - "RegionID": 8, - "HostName": "derp8e.tailscale.com", - "IPv4": "176.58.92.144", - "IPv6": "2a00:dd80:3a::b33", - "CanPort80": true - } - ] - }, - "9": { - "RegionID": 9, - "RegionCode": "dfw", - "RegionName": "Dallas", - "Latitude": 32.779167, - "Longitude": -96.808889, - "Nodes": [ - { - "Name": "9e", - "RegionID": 9, - "HostName": "derp9e.tailscale.com", - "IPv4": "192.73.248.83", - "IPv6": "2607:f740:100::359", - "CanPort80": true - }, - { - "Name": "9f", - "RegionID": 9, - "HostName": "derp9f.tailscale.com", - "IPv4": "209.177.156.197", - "IPv6": "2607:f740:100::cad", - "CanPort80": true - }, - { - "Name": "9d", - "RegionID": 9, - "HostName": "derp9d.tailscale.com", - "IPv4": "209.177.156.94", - "IPv6": "2607:f740:100::c05", - "CanPort80": true - } - ] - } - } - }, - "DisplayMessages": null, - "TKAEnabled": false, - "TKAHead": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", - "Domain": "kratail2tid@passkey", - "DomainAuditLogID": "", - "UserProfiles": { - "6999435610919250": { - "ID": 6999435610919250, - "LoginName": "group-a-client.tail78f774.ts.net", - "DisplayName": "group-a-client" - } - } + "PacketFilterRules": null } }, "group-b-client": { - "commands": { - "packet_filter_rules": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/group-b-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/group-b-client/tailscaled.sock debug localapi POST debug-packet-filter-matches" - }, "packet_filter_rules": null, - "packet_filter_matches": [], - "whois": { - "100.124.195.93": { - "peer_name": "exit-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/group-b-client/tailscaled.sock whois --json 100.124.195.93", - "response": null - }, - "100.116.18.24": { - "peer_name": "exit-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/group-b-client/tailscaled.sock whois --json 100.116.18.24", - "response": null - }, - "100.85.66.106": { - "peer_name": "exit-node", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/group-b-client/tailscaled.sock whois --json 100.85.66.106", - "response": null - }, - "100.107.162.14": { - "peer_name": "group-a-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/group-b-client/tailscaled.sock whois --json 100.107.162.14", - "response": null - }, - "100.105.127.107": { - "peer_name": "multi-exit-router", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/group-b-client/tailscaled.sock whois --json 100.105.127.107", - "response": null - }, - "100.109.43.124": { - "peer_name": "router-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/group-b-client/tailscaled.sock whois --json 100.109.43.124", - "response": null - }, - "100.65.172.123": { - "peer_name": "router-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/group-b-client/tailscaled.sock whois --json 100.65.172.123", - "response": null - }, - "100.92.142.61": { - "peer_name": "subnet-router", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/group-b-client/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/group-b-client/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/group-b-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/group-b-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/group-b-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/group-b-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/group-b-client/tailscaled.sock whois --json 100.90.199.68", - "response": null - } - }, "netmap": { - "SelfNode": { - "ID": 1008089393782498, - "StableID": "ndUwgLoZs811CNTRL", - "Name": "group-b-client.tail78f774.ts.net.", - "User": 1008089393782498, - "Key": "nodekey:ef35a655163204a08b33e09fdc24709f1e3aaa7f40de4efd5549cf014b4d8711", - "DiscoKey": "discokey:e972182cda0d0b459c91b2881624b81749a7e44390a5dde1b9bc17c1ae67715a", - "Addresses": ["100.77.135.18/32", "fd7a:115c:a1e0::4b37:8712/128"], - "AllowedIPs": ["100.77.135.18/32", "fd7a:115c:a1e0::4b37:8712/128"], - "Endpoints": ["77.164.248.136:49377", "10.65.0.27:49377", "172.17.0.1:49377"], - "Hostinfo": { - "Hostname": "group-b-client", - "RequestTags": ["tag:group-b"], - "Services": [ - { "Proto": "peerapi4", "Port": 47173 }, - { "Proto": "peerapi6", "Port": 47173 }, - { "Proto": "peerapi-dns-proxy", "Port": 1 } - ] - }, - "Created": "2026-03-28T10:38:08.031309668Z", - "Tags": ["tag:group-b"], - "MachineAuthorized": true, - "CapMap": { - "https://tailscale.com/cap/file-sharing": null, - "https://tailscale.com/cap/is-owner": null, - "https://tailscale.com/cap/ssh": null, - "https://tailscale.com/cap/tailnet-lock": null, - "probe-udp-lifetime": null, - "ssh-behavior-v1": null, - "ssh-env-vars": null, - "store-appc-routes": null, - "tailnet-display-name": ["kratail2tid@passkey"] - }, - "ComputedName": "group-b-client", - "ComputedNameWithHost": "group-b-client" - }, - "AllCaps": [ - "ssh-env-vars", - "https://tailscale.com/cap/is-owner", - "probe-udp-lifetime", - "ssh-behavior-v1", - "tailnet-display-name", - "https://tailscale.com/cap/file-sharing", - "https://tailscale.com/cap/ssh", - "store-appc-routes", - "https://tailscale.com/cap/tailnet-lock" - ], - "NodeKey": "nodekey:ef35a655163204a08b33e09fdc24709f1e3aaa7f40de4efd5549cf014b4d8711", - "MachineKey": "mkey:f151b3ba7be457f1484c96d8daf48e032d8c9ed890a7f9b2f32c51458a19a05c", "Peers": [], - "DNS": { - "Routes": { - "tail78f774.ts.net.": null, - "ts.net.": [{ "Addr": "199.247.155.53" }, { "Addr": "2620:111:8007::53" }] - }, - "Domains": ["tail78f774.ts.net"], - "Proxied": true, - "ExitNodeFilteredSet": [".ts.net", ".tailscale.net"] - }, - "PacketFilter": [], - "PacketFilterRules": null, - "SSHPolicy": { "rules": [] }, - "CollectServices": false, - "DERPMap": { - "Regions": { - "1": { - "RegionID": 1, - "RegionCode": "nyc", - "RegionName": "New York City", - "Latitude": 40.7128, - "Longitude": -74.006, - "Nodes": [ - { - "Name": "1h", - "RegionID": 1, - "HostName": "derp1h.tailscale.com", - "IPv4": "199.38.181.93", - "IPv6": "2607:f740:f::afd", - "CanPort80": true - }, - { - "Name": "1g", - "RegionID": 1, - "HostName": "derp1g.tailscale.com", - "IPv4": "209.177.145.120", - "IPv6": "2607:f740:f::3eb", - "CanPort80": true - }, - { - "Name": "1i", - "RegionID": 1, - "HostName": "derp1i.tailscale.com", - "IPv4": "199.38.181.103", - "IPv6": "2607:f740:f::e19", - "CanPort80": true - }, - { - "Name": "1f", - "RegionID": 1, - "HostName": "derp1f.tailscale.com", - "IPv4": "199.38.181.104", - "IPv6": "2607:f740:f::bc", - "CanPort80": true - } - ] - }, - "10": { - "RegionID": 10, - "RegionCode": "sea", - "RegionName": "Seattle", - "Latitude": 47.609722, - "Longitude": -122.333056, - "Nodes": [ - { - "Name": "10c", - "RegionID": 10, - "HostName": "derp10c.tailscale.com", - "IPv4": "192.73.240.121", - "IPv6": "2607:f740:14::40c", - "CanPort80": true - }, - { - "Name": "10d", - "RegionID": 10, - "HostName": "derp10d.tailscale.com", - "IPv4": "192.73.240.132", - "IPv6": "2607:f740:14::500", - "CanPort80": true - }, - { - "Name": "10b", - "RegionID": 10, - "HostName": "derp10b.tailscale.com", - "IPv4": "192.73.240.161", - "IPv6": "2607:f740:14::61c", - "CanPort80": true - } - ] - }, - "11": { - "RegionID": 11, - "RegionCode": "sao", - "RegionName": "São Paulo", - "Latitude": -23.55, - "Longitude": -46.633333, - "Nodes": [ - { - "Name": "11f", - "RegionID": 11, - "HostName": "derp11f.tailscale.com", - "IPv4": "172.237.61.197", - "IPv6": "2600:3c0d::2000:3bff:fe44:6166", - "CanPort80": true - }, - { - "Name": "11g", - "RegionID": 11, - "HostName": "derp11g.tailscale.com", - "IPv4": "172.237.61.190", - "IPv6": "2600:3c0d::2000:62ff:febe:2e67", - "CanPort80": true - }, - { - "Name": "11e", - "RegionID": 11, - "HostName": "derp11e.tailscale.com", - "IPv4": "172.237.61.194", - "IPv6": "2600:3c0d::2000:d2ff:fe43:1790", - "CanPort80": true - } - ] - }, - "12": { - "RegionID": 12, - "RegionCode": "ord", - "RegionName": "Chicago", - "Latitude": 41.881944, - "Longitude": -87.627778, - "Nodes": [ - { - "Name": "12e", - "RegionID": 12, - "HostName": "derp12e.tailscale.com", - "IPv4": "209.177.158.15", - "IPv6": "2607:f740:e::b17", - "CanPort80": true - }, - { - "Name": "12f", - "RegionID": 12, - "HostName": "derp12f.tailscale.com", - "IPv4": "199.38.182.118", - "IPv6": "2607:f740:e::4c8", - "CanPort80": true - }, - { - "Name": "12d", - "RegionID": 12, - "HostName": "derp12d.tailscale.com", - "IPv4": "209.177.158.246", - "IPv6": "2607:f740:e::811", - "CanPort80": true - } - ] - }, - "13": { - "RegionID": 13, - "RegionCode": "den", - "RegionName": "Denver", - "Latitude": 39.7392, - "Longitude": -104.9849, - "Nodes": [ - { - "Name": "13c", - "RegionID": 13, - "HostName": "derp13c.tailscale.com", - "IPv4": "192.73.242.28", - "IPv6": "2607:f740:16::5c", - "CanPort80": true - }, - { - "Name": "13d", - "RegionID": 13, - "HostName": "derp13d.tailscale.com", - "IPv4": "192.73.242.204", - "IPv6": "2607:f740:16::c23", - "CanPort80": true - }, - { - "Name": "13b", - "RegionID": 13, - "HostName": "derp13b.tailscale.com", - "IPv4": "192.73.242.187", - "IPv6": "2607:f740:16::640", - "CanPort80": true - } - ] - }, - "14": { - "RegionID": 14, - "RegionCode": "ams", - "RegionName": "Amsterdam", - "Latitude": 52.372778, - "Longitude": 4.893611, - "Nodes": [ - { - "Name": "14c", - "RegionID": 14, - "HostName": "derp14c.tailscale.com", - "IPv4": "176.58.93.147", - "IPv6": "2a00:dd80:3c::b09", - "CanPort80": true - }, - { - "Name": "14d", - "RegionID": 14, - "HostName": "derp14d.tailscale.com", - "IPv4": "176.58.93.154", - "IPv6": "2a00:dd80:3c::3d5", - "CanPort80": true - }, - { - "Name": "14b", - "RegionID": 14, - "HostName": "derp14b.tailscale.com", - "IPv4": "176.58.93.248", - "IPv6": "2a00:dd80:3c::807", - "CanPort80": true - } - ] - }, - "15": { - "RegionID": 15, - "RegionCode": "jnb", - "RegionName": "Johannesburg", - "Latitude": -26.204444, - "Longitude": 28.045556, - "Nodes": [ - { - "Name": "15c", - "RegionID": 15, - "HostName": "derp15c.tailscale.com", - "IPv4": "102.67.165.185", - "IPv6": "2c0f:edb0:0:10::b59", - "CanPort80": true - }, - { - "Name": "15d", - "RegionID": 15, - "HostName": "derp15d.tailscale.com", - "IPv4": "102.67.165.36", - "IPv6": "2c0f:edb0:0:10::599", - "CanPort80": true - }, - { - "Name": "15b", - "RegionID": 15, - "HostName": "derp15b.tailscale.com", - "IPv4": "102.67.165.90", - "IPv6": "2c0f:edb0:0:10::963", - "CanPort80": true - } - ] - }, - "16": { - "RegionID": 16, - "RegionCode": "mia", - "RegionName": "Miami", - "Latitude": 25.78, - "Longitude": -80.21, - "Nodes": [ - { - "Name": "16c", - "RegionID": 16, - "HostName": "derp16c.tailscale.com", - "IPv4": "192.73.243.229", - "IPv6": "2607:f740:17::4e4", - "CanPort80": true - }, - { - "Name": "16d", - "RegionID": 16, - "HostName": "derp16d.tailscale.com", - "IPv4": "192.73.243.141", - "IPv6": "2607:f740:17::475", - "CanPort80": true - }, - { - "Name": "16b", - "RegionID": 16, - "HostName": "derp16b.tailscale.com", - "IPv4": "192.73.243.135", - "IPv6": "2607:f740:17::476", - "CanPort80": true - } - ] - }, - "17": { - "RegionID": 17, - "RegionCode": "lax", - "RegionName": "Los Angeles", - "Latitude": 34.05, - "Longitude": -118.25, - "Nodes": [ - { - "Name": "17c", - "RegionID": 17, - "HostName": "derp17c.tailscale.com", - "IPv4": "208.111.40.12", - "IPv6": "2607:f740:c::10", - "CanPort80": true - }, - { - "Name": "17d", - "RegionID": 17, - "HostName": "derp17d.tailscale.com", - "IPv4": "208.111.40.216", - "IPv6": "2607:f740:c::e1b", - "CanPort80": true - }, - { - "Name": "17b", - "RegionID": 17, - "HostName": "derp17b.tailscale.com", - "IPv4": "192.73.244.245", - "IPv6": "2607:f740:c::646", - "CanPort80": true - } - ] - }, - "18": { - "RegionID": 18, - "RegionCode": "par", - "RegionName": "Paris", - "Latitude": 48.856667, - "Longitude": 2.352222, - "Nodes": [ - { - "Name": "18c", - "RegionID": 18, - "HostName": "derp18c.tailscale.com", - "IPv4": "176.58.90.207", - "IPv6": "2a00:dd80:3e::c19", - "CanPort80": true - }, - { - "Name": "18d", - "RegionID": 18, - "HostName": "derp18d.tailscale.com", - "IPv4": "176.58.90.104", - "IPv6": "2a00:dd80:3e::f2e", - "CanPort80": true - }, - { - "Name": "18b", - "RegionID": 18, - "HostName": "derp18b.tailscale.com", - "IPv4": "176.58.90.147", - "IPv6": "2a00:dd80:3e::363", - "CanPort80": true - } - ] - }, - "19": { - "RegionID": 19, - "RegionCode": "mad", - "RegionName": "Madrid", - "Latitude": 40.416944, - "Longitude": -3.703333, - "Nodes": [ - { - "Name": "19c", - "RegionID": 19, - "HostName": "derp19c.tailscale.com", - "IPv4": "45.159.97.61", - "IPv6": "2a00:dd80:14:10::20", - "CanPort80": true - }, - { - "Name": "19d", - "RegionID": 19, - "HostName": "derp19d.tailscale.com", - "IPv4": "45.159.97.233", - "IPv6": "2a00:dd80:14:10::34a", - "CanPort80": true - }, - { - "Name": "19b", - "RegionID": 19, - "HostName": "derp19b.tailscale.com", - "IPv4": "45.159.97.144", - "IPv6": "2a00:dd80:14:10::335", - "CanPort80": true - } - ] - }, - "2": { - "RegionID": 2, - "RegionCode": "sfo", - "RegionName": "San Francisco", - "Latitude": 37.7775, - "Longitude": -122.416389, - "Nodes": [ - { - "Name": "2e", - "RegionID": 2, - "HostName": "derp2e.tailscale.com", - "IPv4": "192.73.252.134", - "IPv6": "2607:f740:0:3f::44c", - "CanPort80": true - }, - { - "Name": "2f", - "RegionID": 2, - "HostName": "derp2f.tailscale.com", - "IPv4": "208.111.34.178", - "IPv6": "2607:f740:0:3f::f4", - "CanPort80": true - }, - { - "Name": "2d", - "RegionID": 2, - "HostName": "derp2d.tailscale.com", - "IPv4": "192.73.252.65", - "IPv6": "2607:f740:0:3f::287", - "CanPort80": true - } - ] - }, - "20": { - "RegionID": 20, - "RegionCode": "hkg", - "RegionName": "Hong Kong", - "Latitude": 22.3193, - "Longitude": 114.1694, - "Nodes": [ - { - "Name": "20c", - "RegionID": 20, - "HostName": "derp20c.tailscale.com", - "IPv4": "205.147.105.30", - "IPv6": "2403:2500:8000:1::5fb", - "CanPort80": true - }, - { - "Name": "20d", - "RegionID": 20, - "HostName": "derp20d.tailscale.com", - "IPv4": "205.147.105.78", - "IPv6": "2403:2500:8000:1::e9a", - "CanPort80": true - }, - { - "Name": "20b", - "RegionID": 20, - "HostName": "derp20b.tailscale.com", - "IPv4": "103.6.84.152", - "IPv6": "2403:2500:8000:1::ef6", - "CanPort80": true - } - ] - }, - "21": { - "RegionID": 21, - "RegionCode": "tor", - "RegionName": "Toronto", - "Latitude": 43.741667, - "Longitude": -79.373333, - "Nodes": [ - { - "Name": "21c", - "RegionID": 21, - "HostName": "derp21c.tailscale.com", - "IPv4": "162.248.221.215", - "IPv6": "2607:f740:50::f10", - "CanPort80": true - }, - { - "Name": "21d", - "RegionID": 21, - "HostName": "derp21d.tailscale.com", - "IPv4": "162.248.221.248", - "IPv6": "2607:f740:50::ca4", - "CanPort80": true - }, - { - "Name": "21b", - "RegionID": 21, - "HostName": "derp21b.tailscale.com", - "IPv4": "162.248.221.199", - "IPv6": "2607:f740:50::1d1", - "CanPort80": true - } - ] - }, - "22": { - "RegionID": 22, - "RegionCode": "waw", - "RegionName": "Warsaw", - "Latitude": 52.23, - "Longitude": 21.011111, - "Nodes": [ - { - "Name": "22c", - "RegionID": 22, - "HostName": "derp22c.tailscale.com", - "IPv4": "45.159.98.253", - "IPv6": "2a00:dd80:40:100::3f", - "CanPort80": true - }, - { - "Name": "22d", - "RegionID": 22, - "HostName": "derp22d.tailscale.com", - "IPv4": "45.159.98.145", - "IPv6": "2a00:dd80:40:100::211", - "CanPort80": true - }, - { - "Name": "22b", - "RegionID": 22, - "HostName": "derp22b.tailscale.com", - "IPv4": "45.159.98.196", - "IPv6": "2a00:dd80:40:100::316", - "CanPort80": true - } - ] - }, - "23": { - "RegionID": 23, - "RegionCode": "dbi", - "RegionName": "Dubai", - "Latitude": 25.263056, - "Longitude": 55.297222, - "Nodes": [ - { - "Name": "23c", - "RegionID": 23, - "HostName": "derp23c.tailscale.com", - "IPv4": "185.34.3.207", - "IPv6": "2a00:dd80:3f:100::a50", - "CanPort80": true - }, - { - "Name": "23d", - "RegionID": 23, - "HostName": "derp23d.tailscale.com", - "IPv4": "185.34.3.75", - "IPv6": "2a00:dd80:3f:100::97e", - "CanPort80": true - }, - { - "Name": "23b", - "RegionID": 23, - "HostName": "derp23b.tailscale.com", - "IPv4": "185.34.3.232", - "IPv6": "2a00:dd80:3f:100::76f", - "CanPort80": true - } - ] - }, - "24": { - "RegionID": 24, - "RegionCode": "hnl", - "RegionName": "Honolulu", - "Latitude": 21.306944, - "Longitude": -157.858333, - "Nodes": [ - { - "Name": "24c", - "RegionID": 24, - "HostName": "derp24c.tailscale.com", - "IPv4": "208.83.233.233", - "IPv6": "2001:19f0:c000:c591:5400:04ff:fe26:2c5f", - "CanPort80": true - }, - { - "Name": "24d", - "RegionID": 24, - "HostName": "derp24d.tailscale.com", - "IPv4": "208.72.155.133", - "IPv6": "2001:19f0:c000:c564:5400:04ff:fe26:2ba8", - "CanPort80": true - }, - { - "Name": "24b", - "RegionID": 24, - "HostName": "derp24b.tailscale.com", - "IPv4": "208.83.234.151", - "IPv6": "2001:19f0:c000:c586:5400:04ff:fe26:2ba6", - "CanPort80": true - } - ] - }, - "25": { - "RegionID": 25, - "RegionCode": "nai", - "RegionName": "Nairobi", - "Latitude": -1.286389, - "Longitude": 36.817222, - "Nodes": [ - { - "Name": "25c", - "RegionID": 25, - "HostName": "derp25c.tailscale.com", - "IPv4": "102.67.167.37", - "IPv6": "2c0f:edb0:2000:1::2c7", - "CanPort80": true - }, - { - "Name": "25d", - "RegionID": 25, - "HostName": "derp25d.tailscale.com", - "IPv4": "102.67.167.188", - "IPv6": "2c0f:edb0:2000:1::188", - "CanPort80": true - }, - { - "Name": "25b", - "RegionID": 25, - "HostName": "derp25b.tailscale.com", - "IPv4": "102.67.167.245", - "IPv6": "2c0f:edb0:2000:1::2e9", - "CanPort80": true - } - ] - }, - "26": { - "RegionID": 26, - "RegionCode": "nue", - "RegionName": "Nuremberg", - "Latitude": 49.453889, - "Longitude": 11.0775, - "Nodes": [ - { - "Name": "26c", - "RegionID": 26, - "HostName": "derp26c.tailscale.com", - "IPv4": "49.12.193.137", - "IPv6": "2a01:4f8:1c1c:5c70::1", - "CanPort80": true - }, - { - "Name": "26d", - "RegionID": 26, - "HostName": "derp26d.tailscale.com", - "IPv4": "49.13.204.141", - "IPv6": "2a01:4f8:1c0c:7d06::1", - "CanPort80": true - }, - { - "Name": "26b", - "RegionID": 26, - "HostName": "derp26b.tailscale.com", - "IPv4": "167.235.72.200", - "IPv6": "2a01:4f8:1c1c:47b6::1", - "CanPort80": true - } - ] - }, - "27": { - "RegionID": 27, - "RegionCode": "iad", - "RegionName": "Ashburn", - "Latitude": 39.03, - "Longitude": -77.471111, - "Nodes": [ - { - "Name": "27d", - "RegionID": 27, - "HostName": "derp27d.tailscale.com", - "IPv4": "178.156.152.106", - "IPv6": "2a01:4ff:f0:3c8e::1", - "CanPort80": true - }, - { - "Name": "27c", - "RegionID": 27, - "HostName": "derp27c.tailscale.com", - "IPv4": "178.156.152.91", - "IPv6": "2a01:4ff:f0:3913::1", - "CanPort80": true - }, - { - "Name": "27e", - "RegionID": 27, - "HostName": "derp27e.tailscale.com", - "IPv4": "178.156.134.232", - "IPv6": "2a01:4ff:f0:28d4::1", - "CanPort80": true - }, - { - "Name": "27b", - "RegionID": 27, - "HostName": "derp27b.tailscale.com", - "IPv4": "5.161.218.233", - "IPv6": "2a01:4ff:f0:3db9::1", - "CanPort80": true - } - ] - }, - "28": { - "RegionID": 28, - "RegionCode": "hel", - "RegionName": "Helsinki", - "Latitude": 60.170833, - "Longitude": 24.9375, - "Nodes": [ - { - "Name": "28c", - "RegionID": 28, - "HostName": "derp28c.tailscale.com", - "IPv4": "95.217.2.165", - "IPv6": "2a01:4f9:c012:cd74::1", - "CanPort80": true - }, - { - "Name": "28d", - "RegionID": 28, - "HostName": "derp28d.tailscale.com", - "IPv4": "157.180.28.32", - "IPv6": "2a01:4f9:c012:2e5b::1", - "CanPort80": true - }, - { - "Name": "28b", - "RegionID": 28, - "HostName": "derp28b.tailscale.com", - "IPv4": "65.109.143.62", - "IPv6": "2a01:4f9:c012:d55c::1", - "CanPort80": true - } - ] - }, - "3": { - "RegionID": 3, - "RegionCode": "sin", - "RegionName": "Singapore", - "Latitude": 1.3521, - "Longitude": 103.8198, - "Nodes": [ - { - "Name": "3g", - "RegionID": 3, - "HostName": "derp3g.tailscale.com", - "IPv4": "172.237.72.79", - "IPv6": "2600:3c15::2000:adff:fe08:6fab", - "CanPort80": true - }, - { - "Name": "3f", - "RegionID": 3, - "HostName": "derp3f.tailscale.com", - "IPv4": "172.237.72.8", - "IPv6": "2600:3c15::2000:53ff:fe48:a668", - "CanPort80": true - }, - { - "Name": "3h", - "RegionID": 3, - "HostName": "derp3h.tailscale.com", - "IPv4": "172.237.66.30", - "IPv6": "2600:3c15::2000:3dff:fe44:50aa", - "CanPort80": true - }, - { - "Name": "3e", - "RegionID": 3, - "HostName": "derp3e.tailscale.com", - "IPv4": "172.237.72.43", - "IPv6": "2600:3c15::2000:6cff:fee4:d799", - "CanPort80": true - } - ] - }, - "4": { - "RegionID": 4, - "RegionCode": "fra", - "RegionName": "Frankfurt", - "Latitude": 50.1109, - "Longitude": 8.6821, - "Nodes": [ - { - "Name": "4h", - "RegionID": 4, - "HostName": "derp4h.tailscale.com", - "IPv4": "185.40.234.77", - "IPv6": "2a00:dd80:20::bcf", - "CanPort80": true - }, - { - "Name": "4g", - "RegionID": 4, - "HostName": "derp4g.tailscale.com", - "IPv4": "185.40.234.113", - "IPv6": "2a00:dd80:20::8f", - "CanPort80": true - }, - { - "Name": "4i", - "RegionID": 4, - "HostName": "derp4i.tailscale.com", - "IPv4": "185.40.234.53", - "IPv6": "2a00:dd80:20::8a6", - "CanPort80": true - }, - { - "Name": "4f", - "RegionID": 4, - "HostName": "derp4f.tailscale.com", - "IPv4": "185.40.234.219", - "IPv6": "2a00:dd80:20::a25", - "CanPort80": true - } - ] - }, - "5": { - "RegionID": 5, - "RegionCode": "syd", - "RegionName": "Sydney", - "Latitude": -33.867778, - "Longitude": 151.21, - "Nodes": [ - { - "Name": "5f", - "RegionID": 5, - "HostName": "derp5f.tailscale.com", - "IPv4": "172.105.166.103", - "IPv6": "2400:8907::2000:ccff:fe1f:80da", - "CanPort80": true - }, - { - "Name": "5g", - "RegionID": 5, - "HostName": "derp5g.tailscale.com", - "IPv4": "172.105.169.57", - "IPv6": "2400:8907::2000:2fff:fea7:57f4", - "CanPort80": true - }, - { - "Name": "5e", - "RegionID": 5, - "HostName": "derp5e.tailscale.com", - "IPv4": "172.105.179.230", - "IPv6": "2400:8907::2000:ceff:fe8d:4f4e", - "CanPort80": true - } - ] - }, - "6": { - "RegionID": 6, - "RegionCode": "blr", - "RegionName": "Bengaluru", - "Latitude": 12.9716, - "Longitude": 77.5946, - "Nodes": [ - { - "Name": "6a", - "RegionID": 6, - "HostName": "derp6.tailscale.com", - "IPv4": "68.183.90.120", - "IPv6": "2400:6180:100:d0::982:d001", - "CanPort80": true - } - ] - }, - "7": { - "RegionID": 7, - "RegionCode": "tok", - "RegionName": "Tokyo", - "Latitude": 35.6764, - "Longitude": 139.65, - "Nodes": [ - { - "Name": "7g", - "RegionID": 7, - "HostName": "derp7g.tailscale.com", - "IPv4": "172.238.6.179", - "IPv6": "2600:3c18::2000:3fff:fe80:3ebd", - "CanPort80": true - }, - { - "Name": "7f", - "RegionID": 7, - "HostName": "derp7f.tailscale.com", - "IPv4": "172.238.6.34", - "IPv6": "2600:3c18::2000:acff:fe8e:3ed5", - "CanPort80": true - }, - { - "Name": "7h", - "RegionID": 7, - "HostName": "derp7h.tailscale.com", - "IPv4": "172.237.28.183", - "IPv6": "2600:3c18::2000:b1ff:fea9:4560", - "CanPort80": true - }, - { - "Name": "7e", - "RegionID": 7, - "HostName": "derp7e.tailscale.com", - "IPv4": "172.238.6.180", - "IPv6": "2600:3c18::2000:60ff:fe0f:6e83", - "STUNOnly": true, - "CanPort80": true - } - ] - }, - "8": { - "RegionID": 8, - "RegionCode": "lhr", - "RegionName": "London", - "Latitude": 51.5072, - "Longitude": 0.1276, - "Nodes": [ - { - "Name": "8f", - "RegionID": 8, - "HostName": "derp8f.tailscale.com", - "IPv4": "176.58.88.183", - "IPv6": "2a00:dd80:3a::dfa", - "CanPort80": true - }, - { - "Name": "8g", - "RegionID": 8, - "HostName": "derp8g.tailscale.com", - "IPv4": "176.58.92.254", - "IPv6": "2a00:dd80:3a::ed", - "CanPort80": true - }, - { - "Name": "8e", - "RegionID": 8, - "HostName": "derp8e.tailscale.com", - "IPv4": "176.58.92.144", - "IPv6": "2a00:dd80:3a::b33", - "CanPort80": true - } - ] - }, - "9": { - "RegionID": 9, - "RegionCode": "dfw", - "RegionName": "Dallas", - "Latitude": 32.779167, - "Longitude": -96.808889, - "Nodes": [ - { - "Name": "9e", - "RegionID": 9, - "HostName": "derp9e.tailscale.com", - "IPv4": "192.73.248.83", - "IPv6": "2607:f740:100::359", - "CanPort80": true - }, - { - "Name": "9f", - "RegionID": 9, - "HostName": "derp9f.tailscale.com", - "IPv4": "209.177.156.197", - "IPv6": "2607:f740:100::cad", - "CanPort80": true - }, - { - "Name": "9d", - "RegionID": 9, - "HostName": "derp9d.tailscale.com", - "IPv4": "209.177.156.94", - "IPv6": "2607:f740:100::c05", - "CanPort80": true - } - ] - } - } - }, - "DisplayMessages": null, - "TKAEnabled": false, - "TKAHead": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", - "Domain": "kratail2tid@passkey", - "DomainAuditLogID": "", - "UserProfiles": { - "1008089393782498": { - "ID": 1008089393782498, - "LoginName": "group-b-client.tail78f774.ts.net", - "DisplayName": "group-b-client" - } - } + "PacketFilterRules": null } }, "multi-exit-router": { - "commands": { - "packet_filter_rules": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/multi-exit-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/multi-exit-router/tailscaled.sock debug localapi POST debug-packet-filter-matches" - }, "packet_filter_rules": null, - "packet_filter_matches": [], - "whois": { - "100.124.195.93": { - "peer_name": "exit-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/multi-exit-router/tailscaled.sock whois --json 100.124.195.93", - "response": null - }, - "100.116.18.24": { - "peer_name": "exit-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/multi-exit-router/tailscaled.sock whois --json 100.116.18.24", - "response": null - }, - "100.85.66.106": { - "peer_name": "exit-node", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/multi-exit-router/tailscaled.sock whois --json 100.85.66.106", - "response": null - }, - "100.107.162.14": { - "peer_name": "group-a-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/multi-exit-router/tailscaled.sock whois --json 100.107.162.14", - "response": null - }, - "100.77.135.18": { - "peer_name": "group-b-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/multi-exit-router/tailscaled.sock whois --json 100.77.135.18", - "response": null - }, - "100.109.43.124": { - "peer_name": "router-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/multi-exit-router/tailscaled.sock whois --json 100.109.43.124", - "response": null - }, - "100.65.172.123": { - "peer_name": "router-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/multi-exit-router/tailscaled.sock whois --json 100.65.172.123", - "response": null - }, - "100.92.142.61": { - "peer_name": "subnet-router", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/multi-exit-router/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/multi-exit-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/multi-exit-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/multi-exit-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/multi-exit-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/multi-exit-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/multi-exit-router/tailscaled.sock whois --json 100.90.199.68", - "response": null - } - }, "netmap": { - "SelfNode": { - "ID": 6294409699640722, - "StableID": "nMQuxDUk9r11CNTRL", - "Name": "multi-exit-router.tail78f774.ts.net.", - "User": 6294409699640722, - "Key": "nodekey:b854a0d64eba757cd3215c5bd78149cc0f927e35a2ad20342e88a15ead297f6a", - "DiscoKey": "discokey:762c82dd308809f511c6ac86dcc2642585837358fdd24958d55f16883c8e6c58", - "Addresses": ["100.105.127.107/32", "fd7a:115c:a1e0::ad37:7f6b/128"], - "AllowedIPs": ["100.105.127.107/32", "fd7a:115c:a1e0::ad37:7f6b/128", "10.33.0.0/16"], - "Endpoints": ["77.164.248.136:50766", "10.65.0.27:50766", "172.17.0.1:50766"], - "Hostinfo": { - "Hostname": "multi-exit-router", - "RoutableIPs": ["0.0.0.0/0", "::/0", "10.33.0.0/16"], - "RequestTags": ["tag:exit", "tag:router"], - "Services": [ - { "Proto": "peerapi4", "Port": 62548 }, - { "Proto": "peerapi6", "Port": 62548 }, - { "Proto": "peerapi-dns-proxy", "Port": 1 } - ] - }, - "Created": "2026-03-28T10:38:19.117098852Z", - "Tags": ["tag:exit", "tag:router"], - "PrimaryRoutes": ["10.33.0.0/16"], - "MachineAuthorized": true, - "CapMap": { - "https://tailscale.com/cap/file-sharing": null, - "https://tailscale.com/cap/is-owner": null, - "https://tailscale.com/cap/ssh": null, - "https://tailscale.com/cap/tailnet-lock": null, - "probe-udp-lifetime": null, - "ssh-behavior-v1": null, - "ssh-env-vars": null, - "store-appc-routes": null, - "tailnet-display-name": ["kratail2tid@passkey"] - }, - "ComputedName": "multi-exit-router", - "ComputedNameWithHost": "multi-exit-router" - }, - "AllCaps": [ - "https://tailscale.com/cap/ssh", - "ssh-behavior-v1", - "https://tailscale.com/cap/is-owner", - "store-appc-routes", - "https://tailscale.com/cap/tailnet-lock", - "ssh-env-vars", - "probe-udp-lifetime", - "tailnet-display-name", - "https://tailscale.com/cap/file-sharing" - ], - "NodeKey": "nodekey:b854a0d64eba757cd3215c5bd78149cc0f927e35a2ad20342e88a15ead297f6a", - "MachineKey": "mkey:91bee804809f30d07bfc29cf556844288fc3d45e0572469a3cb0799a535fda7d", "Peers": [], - "DNS": { - "Routes": { - "tail78f774.ts.net.": null, - "ts.net.": [{ "Addr": "199.247.155.53" }, { "Addr": "2620:111:8007::53" }] - }, - "Domains": ["tail78f774.ts.net"], - "Proxied": true, - "ExitNodeFilteredSet": [".ts.net", ".tailscale.net"] - }, - "PacketFilter": [], - "PacketFilterRules": null, - "SSHPolicy": { "rules": [] }, - "CollectServices": false, - "DERPMap": { - "Regions": { - "1": { - "RegionID": 1, - "RegionCode": "nyc", - "RegionName": "New York City", - "Latitude": 40.7128, - "Longitude": -74.006, - "Nodes": [ - { - "Name": "1h", - "RegionID": 1, - "HostName": "derp1h.tailscale.com", - "IPv4": "199.38.181.93", - "IPv6": "2607:f740:f::afd", - "CanPort80": true - }, - { - "Name": "1g", - "RegionID": 1, - "HostName": "derp1g.tailscale.com", - "IPv4": "209.177.145.120", - "IPv6": "2607:f740:f::3eb", - "CanPort80": true - }, - { - "Name": "1i", - "RegionID": 1, - "HostName": "derp1i.tailscale.com", - "IPv4": "199.38.181.103", - "IPv6": "2607:f740:f::e19", - "CanPort80": true - }, - { - "Name": "1f", - "RegionID": 1, - "HostName": "derp1f.tailscale.com", - "IPv4": "199.38.181.104", - "IPv6": "2607:f740:f::bc", - "CanPort80": true - } - ] - }, - "10": { - "RegionID": 10, - "RegionCode": "sea", - "RegionName": "Seattle", - "Latitude": 47.609722, - "Longitude": -122.333056, - "Nodes": [ - { - "Name": "10c", - "RegionID": 10, - "HostName": "derp10c.tailscale.com", - "IPv4": "192.73.240.121", - "IPv6": "2607:f740:14::40c", - "CanPort80": true - }, - { - "Name": "10d", - "RegionID": 10, - "HostName": "derp10d.tailscale.com", - "IPv4": "192.73.240.132", - "IPv6": "2607:f740:14::500", - "CanPort80": true - }, - { - "Name": "10b", - "RegionID": 10, - "HostName": "derp10b.tailscale.com", - "IPv4": "192.73.240.161", - "IPv6": "2607:f740:14::61c", - "CanPort80": true - } - ] - }, - "11": { - "RegionID": 11, - "RegionCode": "sao", - "RegionName": "São Paulo", - "Latitude": -23.55, - "Longitude": -46.633333, - "Nodes": [ - { - "Name": "11f", - "RegionID": 11, - "HostName": "derp11f.tailscale.com", - "IPv4": "172.237.61.197", - "IPv6": "2600:3c0d::2000:3bff:fe44:6166", - "CanPort80": true - }, - { - "Name": "11g", - "RegionID": 11, - "HostName": "derp11g.tailscale.com", - "IPv4": "172.237.61.190", - "IPv6": "2600:3c0d::2000:62ff:febe:2e67", - "CanPort80": true - }, - { - "Name": "11e", - "RegionID": 11, - "HostName": "derp11e.tailscale.com", - "IPv4": "172.237.61.194", - "IPv6": "2600:3c0d::2000:d2ff:fe43:1790", - "CanPort80": true - } - ] - }, - "12": { - "RegionID": 12, - "RegionCode": "ord", - "RegionName": "Chicago", - "Latitude": 41.881944, - "Longitude": -87.627778, - "Nodes": [ - { - "Name": "12e", - "RegionID": 12, - "HostName": "derp12e.tailscale.com", - "IPv4": "209.177.158.15", - "IPv6": "2607:f740:e::b17", - "CanPort80": true - }, - { - "Name": "12f", - "RegionID": 12, - "HostName": "derp12f.tailscale.com", - "IPv4": "199.38.182.118", - "IPv6": "2607:f740:e::4c8", - "CanPort80": true - }, - { - "Name": "12d", - "RegionID": 12, - "HostName": "derp12d.tailscale.com", - "IPv4": "209.177.158.246", - "IPv6": "2607:f740:e::811", - "CanPort80": true - } - ] - }, - "13": { - "RegionID": 13, - "RegionCode": "den", - "RegionName": "Denver", - "Latitude": 39.7392, - "Longitude": -104.9849, - "Nodes": [ - { - "Name": "13c", - "RegionID": 13, - "HostName": "derp13c.tailscale.com", - "IPv4": "192.73.242.28", - "IPv6": "2607:f740:16::5c", - "CanPort80": true - }, - { - "Name": "13d", - "RegionID": 13, - "HostName": "derp13d.tailscale.com", - "IPv4": "192.73.242.204", - "IPv6": "2607:f740:16::c23", - "CanPort80": true - }, - { - "Name": "13b", - "RegionID": 13, - "HostName": "derp13b.tailscale.com", - "IPv4": "192.73.242.187", - "IPv6": "2607:f740:16::640", - "CanPort80": true - } - ] - }, - "14": { - "RegionID": 14, - "RegionCode": "ams", - "RegionName": "Amsterdam", - "Latitude": 52.372778, - "Longitude": 4.893611, - "Nodes": [ - { - "Name": "14c", - "RegionID": 14, - "HostName": "derp14c.tailscale.com", - "IPv4": "176.58.93.147", - "IPv6": "2a00:dd80:3c::b09", - "CanPort80": true - }, - { - "Name": "14d", - "RegionID": 14, - "HostName": "derp14d.tailscale.com", - "IPv4": "176.58.93.154", - "IPv6": "2a00:dd80:3c::3d5", - "CanPort80": true - }, - { - "Name": "14b", - "RegionID": 14, - "HostName": "derp14b.tailscale.com", - "IPv4": "176.58.93.248", - "IPv6": "2a00:dd80:3c::807", - "CanPort80": true - } - ] - }, - "15": { - "RegionID": 15, - "RegionCode": "jnb", - "RegionName": "Johannesburg", - "Latitude": -26.204444, - "Longitude": 28.045556, - "Nodes": [ - { - "Name": "15c", - "RegionID": 15, - "HostName": "derp15c.tailscale.com", - "IPv4": "102.67.165.185", - "IPv6": "2c0f:edb0:0:10::b59", - "CanPort80": true - }, - { - "Name": "15d", - "RegionID": 15, - "HostName": "derp15d.tailscale.com", - "IPv4": "102.67.165.36", - "IPv6": "2c0f:edb0:0:10::599", - "CanPort80": true - }, - { - "Name": "15b", - "RegionID": 15, - "HostName": "derp15b.tailscale.com", - "IPv4": "102.67.165.90", - "IPv6": "2c0f:edb0:0:10::963", - "CanPort80": true - } - ] - }, - "16": { - "RegionID": 16, - "RegionCode": "mia", - "RegionName": "Miami", - "Latitude": 25.78, - "Longitude": -80.21, - "Nodes": [ - { - "Name": "16c", - "RegionID": 16, - "HostName": "derp16c.tailscale.com", - "IPv4": "192.73.243.229", - "IPv6": "2607:f740:17::4e4", - "CanPort80": true - }, - { - "Name": "16d", - "RegionID": 16, - "HostName": "derp16d.tailscale.com", - "IPv4": "192.73.243.141", - "IPv6": "2607:f740:17::475", - "CanPort80": true - }, - { - "Name": "16b", - "RegionID": 16, - "HostName": "derp16b.tailscale.com", - "IPv4": "192.73.243.135", - "IPv6": "2607:f740:17::476", - "CanPort80": true - } - ] - }, - "17": { - "RegionID": 17, - "RegionCode": "lax", - "RegionName": "Los Angeles", - "Latitude": 34.05, - "Longitude": -118.25, - "Nodes": [ - { - "Name": "17c", - "RegionID": 17, - "HostName": "derp17c.tailscale.com", - "IPv4": "208.111.40.12", - "IPv6": "2607:f740:c::10", - "CanPort80": true - }, - { - "Name": "17d", - "RegionID": 17, - "HostName": "derp17d.tailscale.com", - "IPv4": "208.111.40.216", - "IPv6": "2607:f740:c::e1b", - "CanPort80": true - }, - { - "Name": "17b", - "RegionID": 17, - "HostName": "derp17b.tailscale.com", - "IPv4": "192.73.244.245", - "IPv6": "2607:f740:c::646", - "CanPort80": true - } - ] - }, - "18": { - "RegionID": 18, - "RegionCode": "par", - "RegionName": "Paris", - "Latitude": 48.856667, - "Longitude": 2.352222, - "Nodes": [ - { - "Name": "18c", - "RegionID": 18, - "HostName": "derp18c.tailscale.com", - "IPv4": "176.58.90.207", - "IPv6": "2a00:dd80:3e::c19", - "CanPort80": true - }, - { - "Name": "18d", - "RegionID": 18, - "HostName": "derp18d.tailscale.com", - "IPv4": "176.58.90.104", - "IPv6": "2a00:dd80:3e::f2e", - "CanPort80": true - }, - { - "Name": "18b", - "RegionID": 18, - "HostName": "derp18b.tailscale.com", - "IPv4": "176.58.90.147", - "IPv6": "2a00:dd80:3e::363", - "CanPort80": true - } - ] - }, - "19": { - "RegionID": 19, - "RegionCode": "mad", - "RegionName": "Madrid", - "Latitude": 40.416944, - "Longitude": -3.703333, - "Nodes": [ - { - "Name": "19c", - "RegionID": 19, - "HostName": "derp19c.tailscale.com", - "IPv4": "45.159.97.61", - "IPv6": "2a00:dd80:14:10::20", - "CanPort80": true - }, - { - "Name": "19d", - "RegionID": 19, - "HostName": "derp19d.tailscale.com", - "IPv4": "45.159.97.233", - "IPv6": "2a00:dd80:14:10::34a", - "CanPort80": true - }, - { - "Name": "19b", - "RegionID": 19, - "HostName": "derp19b.tailscale.com", - "IPv4": "45.159.97.144", - "IPv6": "2a00:dd80:14:10::335", - "CanPort80": true - } - ] - }, - "2": { - "RegionID": 2, - "RegionCode": "sfo", - "RegionName": "San Francisco", - "Latitude": 37.7775, - "Longitude": -122.416389, - "Nodes": [ - { - "Name": "2e", - "RegionID": 2, - "HostName": "derp2e.tailscale.com", - "IPv4": "192.73.252.134", - "IPv6": "2607:f740:0:3f::44c", - "CanPort80": true - }, - { - "Name": "2f", - "RegionID": 2, - "HostName": "derp2f.tailscale.com", - "IPv4": "208.111.34.178", - "IPv6": "2607:f740:0:3f::f4", - "CanPort80": true - }, - { - "Name": "2d", - "RegionID": 2, - "HostName": "derp2d.tailscale.com", - "IPv4": "192.73.252.65", - "IPv6": "2607:f740:0:3f::287", - "CanPort80": true - } - ] - }, - "20": { - "RegionID": 20, - "RegionCode": "hkg", - "RegionName": "Hong Kong", - "Latitude": 22.3193, - "Longitude": 114.1694, - "Nodes": [ - { - "Name": "20c", - "RegionID": 20, - "HostName": "derp20c.tailscale.com", - "IPv4": "205.147.105.30", - "IPv6": "2403:2500:8000:1::5fb", - "CanPort80": true - }, - { - "Name": "20d", - "RegionID": 20, - "HostName": "derp20d.tailscale.com", - "IPv4": "205.147.105.78", - "IPv6": "2403:2500:8000:1::e9a", - "CanPort80": true - }, - { - "Name": "20b", - "RegionID": 20, - "HostName": "derp20b.tailscale.com", - "IPv4": "103.6.84.152", - "IPv6": "2403:2500:8000:1::ef6", - "CanPort80": true - } - ] - }, - "21": { - "RegionID": 21, - "RegionCode": "tor", - "RegionName": "Toronto", - "Latitude": 43.741667, - "Longitude": -79.373333, - "Nodes": [ - { - "Name": "21c", - "RegionID": 21, - "HostName": "derp21c.tailscale.com", - "IPv4": "162.248.221.215", - "IPv6": "2607:f740:50::f10", - "CanPort80": true - }, - { - "Name": "21d", - "RegionID": 21, - "HostName": "derp21d.tailscale.com", - "IPv4": "162.248.221.248", - "IPv6": "2607:f740:50::ca4", - "CanPort80": true - }, - { - "Name": "21b", - "RegionID": 21, - "HostName": "derp21b.tailscale.com", - "IPv4": "162.248.221.199", - "IPv6": "2607:f740:50::1d1", - "CanPort80": true - } - ] - }, - "22": { - "RegionID": 22, - "RegionCode": "waw", - "RegionName": "Warsaw", - "Latitude": 52.23, - "Longitude": 21.011111, - "Nodes": [ - { - "Name": "22c", - "RegionID": 22, - "HostName": "derp22c.tailscale.com", - "IPv4": "45.159.98.253", - "IPv6": "2a00:dd80:40:100::3f", - "CanPort80": true - }, - { - "Name": "22d", - "RegionID": 22, - "HostName": "derp22d.tailscale.com", - "IPv4": "45.159.98.145", - "IPv6": "2a00:dd80:40:100::211", - "CanPort80": true - }, - { - "Name": "22b", - "RegionID": 22, - "HostName": "derp22b.tailscale.com", - "IPv4": "45.159.98.196", - "IPv6": "2a00:dd80:40:100::316", - "CanPort80": true - } - ] - }, - "23": { - "RegionID": 23, - "RegionCode": "dbi", - "RegionName": "Dubai", - "Latitude": 25.263056, - "Longitude": 55.297222, - "Nodes": [ - { - "Name": "23c", - "RegionID": 23, - "HostName": "derp23c.tailscale.com", - "IPv4": "185.34.3.207", - "IPv6": "2a00:dd80:3f:100::a50", - "CanPort80": true - }, - { - "Name": "23d", - "RegionID": 23, - "HostName": "derp23d.tailscale.com", - "IPv4": "185.34.3.75", - "IPv6": "2a00:dd80:3f:100::97e", - "CanPort80": true - }, - { - "Name": "23b", - "RegionID": 23, - "HostName": "derp23b.tailscale.com", - "IPv4": "185.34.3.232", - "IPv6": "2a00:dd80:3f:100::76f", - "CanPort80": true - } - ] - }, - "24": { - "RegionID": 24, - "RegionCode": "hnl", - "RegionName": "Honolulu", - "Latitude": 21.306944, - "Longitude": -157.858333, - "Nodes": [ - { - "Name": "24c", - "RegionID": 24, - "HostName": "derp24c.tailscale.com", - "IPv4": "208.83.233.233", - "IPv6": "2001:19f0:c000:c591:5400:04ff:fe26:2c5f", - "CanPort80": true - }, - { - "Name": "24d", - "RegionID": 24, - "HostName": "derp24d.tailscale.com", - "IPv4": "208.72.155.133", - "IPv6": "2001:19f0:c000:c564:5400:04ff:fe26:2ba8", - "CanPort80": true - }, - { - "Name": "24b", - "RegionID": 24, - "HostName": "derp24b.tailscale.com", - "IPv4": "208.83.234.151", - "IPv6": "2001:19f0:c000:c586:5400:04ff:fe26:2ba6", - "CanPort80": true - } - ] - }, - "25": { - "RegionID": 25, - "RegionCode": "nai", - "RegionName": "Nairobi", - "Latitude": -1.286389, - "Longitude": 36.817222, - "Nodes": [ - { - "Name": "25c", - "RegionID": 25, - "HostName": "derp25c.tailscale.com", - "IPv4": "102.67.167.37", - "IPv6": "2c0f:edb0:2000:1::2c7", - "CanPort80": true - }, - { - "Name": "25d", - "RegionID": 25, - "HostName": "derp25d.tailscale.com", - "IPv4": "102.67.167.188", - "IPv6": "2c0f:edb0:2000:1::188", - "CanPort80": true - }, - { - "Name": "25b", - "RegionID": 25, - "HostName": "derp25b.tailscale.com", - "IPv4": "102.67.167.245", - "IPv6": "2c0f:edb0:2000:1::2e9", - "CanPort80": true - } - ] - }, - "26": { - "RegionID": 26, - "RegionCode": "nue", - "RegionName": "Nuremberg", - "Latitude": 49.453889, - "Longitude": 11.0775, - "Nodes": [ - { - "Name": "26c", - "RegionID": 26, - "HostName": "derp26c.tailscale.com", - "IPv4": "49.12.193.137", - "IPv6": "2a01:4f8:1c1c:5c70::1", - "CanPort80": true - }, - { - "Name": "26d", - "RegionID": 26, - "HostName": "derp26d.tailscale.com", - "IPv4": "49.13.204.141", - "IPv6": "2a01:4f8:1c0c:7d06::1", - "CanPort80": true - }, - { - "Name": "26b", - "RegionID": 26, - "HostName": "derp26b.tailscale.com", - "IPv4": "167.235.72.200", - "IPv6": "2a01:4f8:1c1c:47b6::1", - "CanPort80": true - } - ] - }, - "27": { - "RegionID": 27, - "RegionCode": "iad", - "RegionName": "Ashburn", - "Latitude": 39.03, - "Longitude": -77.471111, - "Nodes": [ - { - "Name": "27d", - "RegionID": 27, - "HostName": "derp27d.tailscale.com", - "IPv4": "178.156.152.106", - "IPv6": "2a01:4ff:f0:3c8e::1", - "CanPort80": true - }, - { - "Name": "27c", - "RegionID": 27, - "HostName": "derp27c.tailscale.com", - "IPv4": "178.156.152.91", - "IPv6": "2a01:4ff:f0:3913::1", - "CanPort80": true - }, - { - "Name": "27e", - "RegionID": 27, - "HostName": "derp27e.tailscale.com", - "IPv4": "178.156.134.232", - "IPv6": "2a01:4ff:f0:28d4::1", - "CanPort80": true - }, - { - "Name": "27b", - "RegionID": 27, - "HostName": "derp27b.tailscale.com", - "IPv4": "5.161.218.233", - "IPv6": "2a01:4ff:f0:3db9::1", - "CanPort80": true - } - ] - }, - "28": { - "RegionID": 28, - "RegionCode": "hel", - "RegionName": "Helsinki", - "Latitude": 60.170833, - "Longitude": 24.9375, - "Nodes": [ - { - "Name": "28c", - "RegionID": 28, - "HostName": "derp28c.tailscale.com", - "IPv4": "95.217.2.165", - "IPv6": "2a01:4f9:c012:cd74::1", - "CanPort80": true - }, - { - "Name": "28d", - "RegionID": 28, - "HostName": "derp28d.tailscale.com", - "IPv4": "157.180.28.32", - "IPv6": "2a01:4f9:c012:2e5b::1", - "CanPort80": true - }, - { - "Name": "28b", - "RegionID": 28, - "HostName": "derp28b.tailscale.com", - "IPv4": "65.109.143.62", - "IPv6": "2a01:4f9:c012:d55c::1", - "CanPort80": true - } - ] - }, - "3": { - "RegionID": 3, - "RegionCode": "sin", - "RegionName": "Singapore", - "Latitude": 1.3521, - "Longitude": 103.8198, - "Nodes": [ - { - "Name": "3g", - "RegionID": 3, - "HostName": "derp3g.tailscale.com", - "IPv4": "172.237.72.79", - "IPv6": "2600:3c15::2000:adff:fe08:6fab", - "CanPort80": true - }, - { - "Name": "3f", - "RegionID": 3, - "HostName": "derp3f.tailscale.com", - "IPv4": "172.237.72.8", - "IPv6": "2600:3c15::2000:53ff:fe48:a668", - "CanPort80": true - }, - { - "Name": "3h", - "RegionID": 3, - "HostName": "derp3h.tailscale.com", - "IPv4": "172.237.66.30", - "IPv6": "2600:3c15::2000:3dff:fe44:50aa", - "CanPort80": true - }, - { - "Name": "3e", - "RegionID": 3, - "HostName": "derp3e.tailscale.com", - "IPv4": "172.237.72.43", - "IPv6": "2600:3c15::2000:6cff:fee4:d799", - "CanPort80": true - } - ] - }, - "4": { - "RegionID": 4, - "RegionCode": "fra", - "RegionName": "Frankfurt", - "Latitude": 50.1109, - "Longitude": 8.6821, - "Nodes": [ - { - "Name": "4h", - "RegionID": 4, - "HostName": "derp4h.tailscale.com", - "IPv4": "185.40.234.77", - "IPv6": "2a00:dd80:20::bcf", - "CanPort80": true - }, - { - "Name": "4g", - "RegionID": 4, - "HostName": "derp4g.tailscale.com", - "IPv4": "185.40.234.113", - "IPv6": "2a00:dd80:20::8f", - "CanPort80": true - }, - { - "Name": "4i", - "RegionID": 4, - "HostName": "derp4i.tailscale.com", - "IPv4": "185.40.234.53", - "IPv6": "2a00:dd80:20::8a6", - "CanPort80": true - }, - { - "Name": "4f", - "RegionID": 4, - "HostName": "derp4f.tailscale.com", - "IPv4": "185.40.234.219", - "IPv6": "2a00:dd80:20::a25", - "CanPort80": true - } - ] - }, - "5": { - "RegionID": 5, - "RegionCode": "syd", - "RegionName": "Sydney", - "Latitude": -33.867778, - "Longitude": 151.21, - "Nodes": [ - { - "Name": "5f", - "RegionID": 5, - "HostName": "derp5f.tailscale.com", - "IPv4": "172.105.166.103", - "IPv6": "2400:8907::2000:ccff:fe1f:80da", - "CanPort80": true - }, - { - "Name": "5g", - "RegionID": 5, - "HostName": "derp5g.tailscale.com", - "IPv4": "172.105.169.57", - "IPv6": "2400:8907::2000:2fff:fea7:57f4", - "CanPort80": true - }, - { - "Name": "5e", - "RegionID": 5, - "HostName": "derp5e.tailscale.com", - "IPv4": "172.105.179.230", - "IPv6": "2400:8907::2000:ceff:fe8d:4f4e", - "CanPort80": true - } - ] - }, - "6": { - "RegionID": 6, - "RegionCode": "blr", - "RegionName": "Bengaluru", - "Latitude": 12.9716, - "Longitude": 77.5946, - "Nodes": [ - { - "Name": "6a", - "RegionID": 6, - "HostName": "derp6.tailscale.com", - "IPv4": "68.183.90.120", - "IPv6": "2400:6180:100:d0::982:d001", - "CanPort80": true - } - ] - }, - "7": { - "RegionID": 7, - "RegionCode": "tok", - "RegionName": "Tokyo", - "Latitude": 35.6764, - "Longitude": 139.65, - "Nodes": [ - { - "Name": "7g", - "RegionID": 7, - "HostName": "derp7g.tailscale.com", - "IPv4": "172.238.6.179", - "IPv6": "2600:3c18::2000:3fff:fe80:3ebd", - "CanPort80": true - }, - { - "Name": "7f", - "RegionID": 7, - "HostName": "derp7f.tailscale.com", - "IPv4": "172.238.6.34", - "IPv6": "2600:3c18::2000:acff:fe8e:3ed5", - "CanPort80": true - }, - { - "Name": "7h", - "RegionID": 7, - "HostName": "derp7h.tailscale.com", - "IPv4": "172.237.28.183", - "IPv6": "2600:3c18::2000:b1ff:fea9:4560", - "CanPort80": true - }, - { - "Name": "7e", - "RegionID": 7, - "HostName": "derp7e.tailscale.com", - "IPv4": "172.238.6.180", - "IPv6": "2600:3c18::2000:60ff:fe0f:6e83", - "STUNOnly": true, - "CanPort80": true - } - ] - }, - "8": { - "RegionID": 8, - "RegionCode": "lhr", - "RegionName": "London", - "Latitude": 51.5072, - "Longitude": 0.1276, - "Nodes": [ - { - "Name": "8f", - "RegionID": 8, - "HostName": "derp8f.tailscale.com", - "IPv4": "176.58.88.183", - "IPv6": "2a00:dd80:3a::dfa", - "CanPort80": true - }, - { - "Name": "8g", - "RegionID": 8, - "HostName": "derp8g.tailscale.com", - "IPv4": "176.58.92.254", - "IPv6": "2a00:dd80:3a::ed", - "CanPort80": true - }, - { - "Name": "8e", - "RegionID": 8, - "HostName": "derp8e.tailscale.com", - "IPv4": "176.58.92.144", - "IPv6": "2a00:dd80:3a::b33", - "CanPort80": true - } - ] - }, - "9": { - "RegionID": 9, - "RegionCode": "dfw", - "RegionName": "Dallas", - "Latitude": 32.779167, - "Longitude": -96.808889, - "Nodes": [ - { - "Name": "9e", - "RegionID": 9, - "HostName": "derp9e.tailscale.com", - "IPv4": "192.73.248.83", - "IPv6": "2607:f740:100::359", - "CanPort80": true - }, - { - "Name": "9f", - "RegionID": 9, - "HostName": "derp9f.tailscale.com", - "IPv4": "209.177.156.197", - "IPv6": "2607:f740:100::cad", - "CanPort80": true - }, - { - "Name": "9d", - "RegionID": 9, - "HostName": "derp9d.tailscale.com", - "IPv4": "209.177.156.94", - "IPv6": "2607:f740:100::c05", - "CanPort80": true - } - ] - } - } - }, - "DisplayMessages": null, - "TKAEnabled": false, - "TKAHead": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", - "Domain": "kratail2tid@passkey", - "DomainAuditLogID": "", - "UserProfiles": { - "6294409699640722": { - "ID": 6294409699640722, - "LoginName": "multi-exit-router.tail78f774.ts.net", - "DisplayName": "multi-exit-router" - } - } + "PacketFilterRules": null } }, "router-a": { - "commands": { - "packet_filter_rules": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/router-a/tailscaled.sock debug localapi POST debug-packet-filter-rules", - "packet_filter_matches": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/router-a/tailscaled.sock debug localapi POST debug-packet-filter-matches" - }, "packet_filter_rules": null, - "packet_filter_matches": [], - "whois": { - "100.124.195.93": { - "peer_name": "exit-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/router-a/tailscaled.sock whois --json 100.124.195.93", - "response": null - }, - "100.116.18.24": { - "peer_name": "exit-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/router-a/tailscaled.sock whois --json 100.116.18.24", - "response": null - }, - "100.85.66.106": { - "peer_name": "exit-node", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/router-a/tailscaled.sock whois --json 100.85.66.106", - "response": null - }, - "100.107.162.14": { - "peer_name": "group-a-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/router-a/tailscaled.sock whois --json 100.107.162.14", - "response": null - }, - "100.77.135.18": { - "peer_name": "group-b-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/router-a/tailscaled.sock whois --json 100.77.135.18", - "response": null - }, - "100.105.127.107": { - "peer_name": "multi-exit-router", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/router-a/tailscaled.sock whois --json 100.105.127.107", - "response": null - }, - "100.65.172.123": { - "peer_name": "router-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/router-a/tailscaled.sock whois --json 100.65.172.123", - "response": null - }, - "100.92.142.61": { - "peer_name": "subnet-router", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/router-a/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/router-a/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/router-a/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/router-a/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/router-a/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/router-a/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/router-a/tailscaled.sock whois --json 100.90.199.68", - "response": null - } - }, "netmap": { - "SelfNode": { - "ID": 50590507314324, - "StableID": "n3kktkvuP111CNTRL", - "Name": "router-a.tail78f774.ts.net.", - "User": 50590507314324, - "Key": "nodekey:b4566fef38b3b2b15684fc8890f5fbaea4525b467825f57a02801969a5ed2b7b", - "DiscoKey": "discokey:368ba711a8394633b4626eb7cd8e6a2df90d8e554505dc032ea9658ceee0f731", - "Addresses": ["100.109.43.124/32", "fd7a:115c:a1e0::a537:2b7c/128"], - "AllowedIPs": ["100.109.43.124/32", "fd7a:115c:a1e0::a537:2b7c/128", "10.44.0.0/16"], - "Endpoints": ["77.164.248.136:34130", "10.65.0.27:34130", "172.17.0.1:34130"], - "Hostinfo": { - "Hostname": "router-a", - "RoutableIPs": ["10.44.0.0/16"], - "RequestTags": ["tag:router-a"], - "Services": [ - { "Proto": "peerapi4", "Port": 49439 }, - { "Proto": "peerapi6", "Port": 49439 }, - { "Proto": "peerapi-dns-proxy", "Port": 1 } - ] - }, - "Created": "2026-03-28T10:38:11.734910312Z", - "Tags": ["tag:router-a"], - "PrimaryRoutes": ["10.44.0.0/16"], - "MachineAuthorized": true, - "CapMap": { - "https://tailscale.com/cap/file-sharing": null, - "https://tailscale.com/cap/is-owner": null, - "https://tailscale.com/cap/ssh": null, - "https://tailscale.com/cap/tailnet-lock": null, - "probe-udp-lifetime": null, - "ssh-behavior-v1": null, - "ssh-env-vars": null, - "store-appc-routes": null, - "tailnet-display-name": ["kratail2tid@passkey"] - }, - "ComputedName": "router-a", - "ComputedNameWithHost": "router-a" - }, - "AllCaps": [ - "probe-udp-lifetime", - "store-appc-routes", - "tailnet-display-name", - "https://tailscale.com/cap/is-owner", - "ssh-behavior-v1", - "ssh-env-vars", - "https://tailscale.com/cap/file-sharing", - "https://tailscale.com/cap/ssh", - "https://tailscale.com/cap/tailnet-lock" - ], - "NodeKey": "nodekey:b4566fef38b3b2b15684fc8890f5fbaea4525b467825f57a02801969a5ed2b7b", - "MachineKey": "mkey:868ba8a45654990c1c153c5ce33ef50ddd8d769841335e42decda4462d1dcf4e", "Peers": [], - "DNS": { - "Routes": { - "tail78f774.ts.net.": null, - "ts.net.": [{ "Addr": "199.247.155.53" }, { "Addr": "2620:111:8007::53" }] - }, - "Domains": ["tail78f774.ts.net"], - "Proxied": true, - "ExitNodeFilteredSet": [".ts.net", ".tailscale.net"] - }, - "PacketFilter": [], - "PacketFilterRules": null, - "SSHPolicy": { "rules": [] }, - "CollectServices": false, - "DERPMap": { - "Regions": { - "1": { - "RegionID": 1, - "RegionCode": "nyc", - "RegionName": "New York City", - "Latitude": 40.7128, - "Longitude": -74.006, - "Nodes": [ - { - "Name": "1h", - "RegionID": 1, - "HostName": "derp1h.tailscale.com", - "IPv4": "199.38.181.93", - "IPv6": "2607:f740:f::afd", - "CanPort80": true - }, - { - "Name": "1g", - "RegionID": 1, - "HostName": "derp1g.tailscale.com", - "IPv4": "209.177.145.120", - "IPv6": "2607:f740:f::3eb", - "CanPort80": true - }, - { - "Name": "1i", - "RegionID": 1, - "HostName": "derp1i.tailscale.com", - "IPv4": "199.38.181.103", - "IPv6": "2607:f740:f::e19", - "CanPort80": true - }, - { - "Name": "1f", - "RegionID": 1, - "HostName": "derp1f.tailscale.com", - "IPv4": "199.38.181.104", - "IPv6": "2607:f740:f::bc", - "CanPort80": true - } - ] - }, - "10": { - "RegionID": 10, - "RegionCode": "sea", - "RegionName": "Seattle", - "Latitude": 47.609722, - "Longitude": -122.333056, - "Nodes": [ - { - "Name": "10c", - "RegionID": 10, - "HostName": "derp10c.tailscale.com", - "IPv4": "192.73.240.121", - "IPv6": "2607:f740:14::40c", - "CanPort80": true - }, - { - "Name": "10d", - "RegionID": 10, - "HostName": "derp10d.tailscale.com", - "IPv4": "192.73.240.132", - "IPv6": "2607:f740:14::500", - "CanPort80": true - }, - { - "Name": "10b", - "RegionID": 10, - "HostName": "derp10b.tailscale.com", - "IPv4": "192.73.240.161", - "IPv6": "2607:f740:14::61c", - "CanPort80": true - } - ] - }, - "11": { - "RegionID": 11, - "RegionCode": "sao", - "RegionName": "São Paulo", - "Latitude": -23.55, - "Longitude": -46.633333, - "Nodes": [ - { - "Name": "11f", - "RegionID": 11, - "HostName": "derp11f.tailscale.com", - "IPv4": "172.237.61.197", - "IPv6": "2600:3c0d::2000:3bff:fe44:6166", - "CanPort80": true - }, - { - "Name": "11g", - "RegionID": 11, - "HostName": "derp11g.tailscale.com", - "IPv4": "172.237.61.190", - "IPv6": "2600:3c0d::2000:62ff:febe:2e67", - "CanPort80": true - }, - { - "Name": "11e", - "RegionID": 11, - "HostName": "derp11e.tailscale.com", - "IPv4": "172.237.61.194", - "IPv6": "2600:3c0d::2000:d2ff:fe43:1790", - "CanPort80": true - } - ] - }, - "12": { - "RegionID": 12, - "RegionCode": "ord", - "RegionName": "Chicago", - "Latitude": 41.881944, - "Longitude": -87.627778, - "Nodes": [ - { - "Name": "12e", - "RegionID": 12, - "HostName": "derp12e.tailscale.com", - "IPv4": "209.177.158.15", - "IPv6": "2607:f740:e::b17", - "CanPort80": true - }, - { - "Name": "12f", - "RegionID": 12, - "HostName": "derp12f.tailscale.com", - "IPv4": "199.38.182.118", - "IPv6": "2607:f740:e::4c8", - "CanPort80": true - }, - { - "Name": "12d", - "RegionID": 12, - "HostName": "derp12d.tailscale.com", - "IPv4": "209.177.158.246", - "IPv6": "2607:f740:e::811", - "CanPort80": true - } - ] - }, - "13": { - "RegionID": 13, - "RegionCode": "den", - "RegionName": "Denver", - "Latitude": 39.7392, - "Longitude": -104.9849, - "Nodes": [ - { - "Name": "13c", - "RegionID": 13, - "HostName": "derp13c.tailscale.com", - "IPv4": "192.73.242.28", - "IPv6": "2607:f740:16::5c", - "CanPort80": true - }, - { - "Name": "13d", - "RegionID": 13, - "HostName": "derp13d.tailscale.com", - "IPv4": "192.73.242.204", - "IPv6": "2607:f740:16::c23", - "CanPort80": true - }, - { - "Name": "13b", - "RegionID": 13, - "HostName": "derp13b.tailscale.com", - "IPv4": "192.73.242.187", - "IPv6": "2607:f740:16::640", - "CanPort80": true - } - ] - }, - "14": { - "RegionID": 14, - "RegionCode": "ams", - "RegionName": "Amsterdam", - "Latitude": 52.372778, - "Longitude": 4.893611, - "Nodes": [ - { - "Name": "14c", - "RegionID": 14, - "HostName": "derp14c.tailscale.com", - "IPv4": "176.58.93.147", - "IPv6": "2a00:dd80:3c::b09", - "CanPort80": true - }, - { - "Name": "14d", - "RegionID": 14, - "HostName": "derp14d.tailscale.com", - "IPv4": "176.58.93.154", - "IPv6": "2a00:dd80:3c::3d5", - "CanPort80": true - }, - { - "Name": "14b", - "RegionID": 14, - "HostName": "derp14b.tailscale.com", - "IPv4": "176.58.93.248", - "IPv6": "2a00:dd80:3c::807", - "CanPort80": true - } - ] - }, - "15": { - "RegionID": 15, - "RegionCode": "jnb", - "RegionName": "Johannesburg", - "Latitude": -26.204444, - "Longitude": 28.045556, - "Nodes": [ - { - "Name": "15c", - "RegionID": 15, - "HostName": "derp15c.tailscale.com", - "IPv4": "102.67.165.185", - "IPv6": "2c0f:edb0:0:10::b59", - "CanPort80": true - }, - { - "Name": "15d", - "RegionID": 15, - "HostName": "derp15d.tailscale.com", - "IPv4": "102.67.165.36", - "IPv6": "2c0f:edb0:0:10::599", - "CanPort80": true - }, - { - "Name": "15b", - "RegionID": 15, - "HostName": "derp15b.tailscale.com", - "IPv4": "102.67.165.90", - "IPv6": "2c0f:edb0:0:10::963", - "CanPort80": true - } - ] - }, - "16": { - "RegionID": 16, - "RegionCode": "mia", - "RegionName": "Miami", - "Latitude": 25.78, - "Longitude": -80.21, - "Nodes": [ - { - "Name": "16c", - "RegionID": 16, - "HostName": "derp16c.tailscale.com", - "IPv4": "192.73.243.229", - "IPv6": "2607:f740:17::4e4", - "CanPort80": true - }, - { - "Name": "16d", - "RegionID": 16, - "HostName": "derp16d.tailscale.com", - "IPv4": "192.73.243.141", - "IPv6": "2607:f740:17::475", - "CanPort80": true - }, - { - "Name": "16b", - "RegionID": 16, - "HostName": "derp16b.tailscale.com", - "IPv4": "192.73.243.135", - "IPv6": "2607:f740:17::476", - "CanPort80": true - } - ] - }, - "17": { - "RegionID": 17, - "RegionCode": "lax", - "RegionName": "Los Angeles", - "Latitude": 34.05, - "Longitude": -118.25, - "Nodes": [ - { - "Name": "17c", - "RegionID": 17, - "HostName": "derp17c.tailscale.com", - "IPv4": "208.111.40.12", - "IPv6": "2607:f740:c::10", - "CanPort80": true - }, - { - "Name": "17d", - "RegionID": 17, - "HostName": "derp17d.tailscale.com", - "IPv4": "208.111.40.216", - "IPv6": "2607:f740:c::e1b", - "CanPort80": true - }, - { - "Name": "17b", - "RegionID": 17, - "HostName": "derp17b.tailscale.com", - "IPv4": "192.73.244.245", - "IPv6": "2607:f740:c::646", - "CanPort80": true - } - ] - }, - "18": { - "RegionID": 18, - "RegionCode": "par", - "RegionName": "Paris", - "Latitude": 48.856667, - "Longitude": 2.352222, - "Nodes": [ - { - "Name": "18c", - "RegionID": 18, - "HostName": "derp18c.tailscale.com", - "IPv4": "176.58.90.207", - "IPv6": "2a00:dd80:3e::c19", - "CanPort80": true - }, - { - "Name": "18d", - "RegionID": 18, - "HostName": "derp18d.tailscale.com", - "IPv4": "176.58.90.104", - "IPv6": "2a00:dd80:3e::f2e", - "CanPort80": true - }, - { - "Name": "18b", - "RegionID": 18, - "HostName": "derp18b.tailscale.com", - "IPv4": "176.58.90.147", - "IPv6": "2a00:dd80:3e::363", - "CanPort80": true - } - ] - }, - "19": { - "RegionID": 19, - "RegionCode": "mad", - "RegionName": "Madrid", - "Latitude": 40.416944, - "Longitude": -3.703333, - "Nodes": [ - { - "Name": "19c", - "RegionID": 19, - "HostName": "derp19c.tailscale.com", - "IPv4": "45.159.97.61", - "IPv6": "2a00:dd80:14:10::20", - "CanPort80": true - }, - { - "Name": "19d", - "RegionID": 19, - "HostName": "derp19d.tailscale.com", - "IPv4": "45.159.97.233", - "IPv6": "2a00:dd80:14:10::34a", - "CanPort80": true - }, - { - "Name": "19b", - "RegionID": 19, - "HostName": "derp19b.tailscale.com", - "IPv4": "45.159.97.144", - "IPv6": "2a00:dd80:14:10::335", - "CanPort80": true - } - ] - }, - "2": { - "RegionID": 2, - "RegionCode": "sfo", - "RegionName": "San Francisco", - "Latitude": 37.7775, - "Longitude": -122.416389, - "Nodes": [ - { - "Name": "2e", - "RegionID": 2, - "HostName": "derp2e.tailscale.com", - "IPv4": "192.73.252.134", - "IPv6": "2607:f740:0:3f::44c", - "CanPort80": true - }, - { - "Name": "2f", - "RegionID": 2, - "HostName": "derp2f.tailscale.com", - "IPv4": "208.111.34.178", - "IPv6": "2607:f740:0:3f::f4", - "CanPort80": true - }, - { - "Name": "2d", - "RegionID": 2, - "HostName": "derp2d.tailscale.com", - "IPv4": "192.73.252.65", - "IPv6": "2607:f740:0:3f::287", - "CanPort80": true - } - ] - }, - "20": { - "RegionID": 20, - "RegionCode": "hkg", - "RegionName": "Hong Kong", - "Latitude": 22.3193, - "Longitude": 114.1694, - "Nodes": [ - { - "Name": "20c", - "RegionID": 20, - "HostName": "derp20c.tailscale.com", - "IPv4": "205.147.105.30", - "IPv6": "2403:2500:8000:1::5fb", - "CanPort80": true - }, - { - "Name": "20d", - "RegionID": 20, - "HostName": "derp20d.tailscale.com", - "IPv4": "205.147.105.78", - "IPv6": "2403:2500:8000:1::e9a", - "CanPort80": true - }, - { - "Name": "20b", - "RegionID": 20, - "HostName": "derp20b.tailscale.com", - "IPv4": "103.6.84.152", - "IPv6": "2403:2500:8000:1::ef6", - "CanPort80": true - } - ] - }, - "21": { - "RegionID": 21, - "RegionCode": "tor", - "RegionName": "Toronto", - "Latitude": 43.741667, - "Longitude": -79.373333, - "Nodes": [ - { - "Name": "21c", - "RegionID": 21, - "HostName": "derp21c.tailscale.com", - "IPv4": "162.248.221.215", - "IPv6": "2607:f740:50::f10", - "CanPort80": true - }, - { - "Name": "21d", - "RegionID": 21, - "HostName": "derp21d.tailscale.com", - "IPv4": "162.248.221.248", - "IPv6": "2607:f740:50::ca4", - "CanPort80": true - }, - { - "Name": "21b", - "RegionID": 21, - "HostName": "derp21b.tailscale.com", - "IPv4": "162.248.221.199", - "IPv6": "2607:f740:50::1d1", - "CanPort80": true - } - ] - }, - "22": { - "RegionID": 22, - "RegionCode": "waw", - "RegionName": "Warsaw", - "Latitude": 52.23, - "Longitude": 21.011111, - "Nodes": [ - { - "Name": "22c", - "RegionID": 22, - "HostName": "derp22c.tailscale.com", - "IPv4": "45.159.98.253", - "IPv6": "2a00:dd80:40:100::3f", - "CanPort80": true - }, - { - "Name": "22d", - "RegionID": 22, - "HostName": "derp22d.tailscale.com", - "IPv4": "45.159.98.145", - "IPv6": "2a00:dd80:40:100::211", - "CanPort80": true - }, - { - "Name": "22b", - "RegionID": 22, - "HostName": "derp22b.tailscale.com", - "IPv4": "45.159.98.196", - "IPv6": "2a00:dd80:40:100::316", - "CanPort80": true - } - ] - }, - "23": { - "RegionID": 23, - "RegionCode": "dbi", - "RegionName": "Dubai", - "Latitude": 25.263056, - "Longitude": 55.297222, - "Nodes": [ - { - "Name": "23c", - "RegionID": 23, - "HostName": "derp23c.tailscale.com", - "IPv4": "185.34.3.207", - "IPv6": "2a00:dd80:3f:100::a50", - "CanPort80": true - }, - { - "Name": "23d", - "RegionID": 23, - "HostName": "derp23d.tailscale.com", - "IPv4": "185.34.3.75", - "IPv6": "2a00:dd80:3f:100::97e", - "CanPort80": true - }, - { - "Name": "23b", - "RegionID": 23, - "HostName": "derp23b.tailscale.com", - "IPv4": "185.34.3.232", - "IPv6": "2a00:dd80:3f:100::76f", - "CanPort80": true - } - ] - }, - "24": { - "RegionID": 24, - "RegionCode": "hnl", - "RegionName": "Honolulu", - "Latitude": 21.306944, - "Longitude": -157.858333, - "Nodes": [ - { - "Name": "24c", - "RegionID": 24, - "HostName": "derp24c.tailscale.com", - "IPv4": "208.83.233.233", - "IPv6": "2001:19f0:c000:c591:5400:04ff:fe26:2c5f", - "CanPort80": true - }, - { - "Name": "24d", - "RegionID": 24, - "HostName": "derp24d.tailscale.com", - "IPv4": "208.72.155.133", - "IPv6": "2001:19f0:c000:c564:5400:04ff:fe26:2ba8", - "CanPort80": true - }, - { - "Name": "24b", - "RegionID": 24, - "HostName": "derp24b.tailscale.com", - "IPv4": "208.83.234.151", - "IPv6": "2001:19f0:c000:c586:5400:04ff:fe26:2ba6", - "CanPort80": true - } - ] - }, - "25": { - "RegionID": 25, - "RegionCode": "nai", - "RegionName": "Nairobi", - "Latitude": -1.286389, - "Longitude": 36.817222, - "Nodes": [ - { - "Name": "25c", - "RegionID": 25, - "HostName": "derp25c.tailscale.com", - "IPv4": "102.67.167.37", - "IPv6": "2c0f:edb0:2000:1::2c7", - "CanPort80": true - }, - { - "Name": "25d", - "RegionID": 25, - "HostName": "derp25d.tailscale.com", - "IPv4": "102.67.167.188", - "IPv6": "2c0f:edb0:2000:1::188", - "CanPort80": true - }, - { - "Name": "25b", - "RegionID": 25, - "HostName": "derp25b.tailscale.com", - "IPv4": "102.67.167.245", - "IPv6": "2c0f:edb0:2000:1::2e9", - "CanPort80": true - } - ] - }, - "26": { - "RegionID": 26, - "RegionCode": "nue", - "RegionName": "Nuremberg", - "Latitude": 49.453889, - "Longitude": 11.0775, - "Nodes": [ - { - "Name": "26c", - "RegionID": 26, - "HostName": "derp26c.tailscale.com", - "IPv4": "49.12.193.137", - "IPv6": "2a01:4f8:1c1c:5c70::1", - "CanPort80": true - }, - { - "Name": "26d", - "RegionID": 26, - "HostName": "derp26d.tailscale.com", - "IPv4": "49.13.204.141", - "IPv6": "2a01:4f8:1c0c:7d06::1", - "CanPort80": true - }, - { - "Name": "26b", - "RegionID": 26, - "HostName": "derp26b.tailscale.com", - "IPv4": "167.235.72.200", - "IPv6": "2a01:4f8:1c1c:47b6::1", - "CanPort80": true - } - ] - }, - "27": { - "RegionID": 27, - "RegionCode": "iad", - "RegionName": "Ashburn", - "Latitude": 39.03, - "Longitude": -77.471111, - "Nodes": [ - { - "Name": "27d", - "RegionID": 27, - "HostName": "derp27d.tailscale.com", - "IPv4": "178.156.152.106", - "IPv6": "2a01:4ff:f0:3c8e::1", - "CanPort80": true - }, - { - "Name": "27c", - "RegionID": 27, - "HostName": "derp27c.tailscale.com", - "IPv4": "178.156.152.91", - "IPv6": "2a01:4ff:f0:3913::1", - "CanPort80": true - }, - { - "Name": "27e", - "RegionID": 27, - "HostName": "derp27e.tailscale.com", - "IPv4": "178.156.134.232", - "IPv6": "2a01:4ff:f0:28d4::1", - "CanPort80": true - }, - { - "Name": "27b", - "RegionID": 27, - "HostName": "derp27b.tailscale.com", - "IPv4": "5.161.218.233", - "IPv6": "2a01:4ff:f0:3db9::1", - "CanPort80": true - } - ] - }, - "28": { - "RegionID": 28, - "RegionCode": "hel", - "RegionName": "Helsinki", - "Latitude": 60.170833, - "Longitude": 24.9375, - "Nodes": [ - { - "Name": "28c", - "RegionID": 28, - "HostName": "derp28c.tailscale.com", - "IPv4": "95.217.2.165", - "IPv6": "2a01:4f9:c012:cd74::1", - "CanPort80": true - }, - { - "Name": "28d", - "RegionID": 28, - "HostName": "derp28d.tailscale.com", - "IPv4": "157.180.28.32", - "IPv6": "2a01:4f9:c012:2e5b::1", - "CanPort80": true - }, - { - "Name": "28b", - "RegionID": 28, - "HostName": "derp28b.tailscale.com", - "IPv4": "65.109.143.62", - "IPv6": "2a01:4f9:c012:d55c::1", - "CanPort80": true - } - ] - }, - "3": { - "RegionID": 3, - "RegionCode": "sin", - "RegionName": "Singapore", - "Latitude": 1.3521, - "Longitude": 103.8198, - "Nodes": [ - { - "Name": "3g", - "RegionID": 3, - "HostName": "derp3g.tailscale.com", - "IPv4": "172.237.72.79", - "IPv6": "2600:3c15::2000:adff:fe08:6fab", - "CanPort80": true - }, - { - "Name": "3f", - "RegionID": 3, - "HostName": "derp3f.tailscale.com", - "IPv4": "172.237.72.8", - "IPv6": "2600:3c15::2000:53ff:fe48:a668", - "CanPort80": true - }, - { - "Name": "3h", - "RegionID": 3, - "HostName": "derp3h.tailscale.com", - "IPv4": "172.237.66.30", - "IPv6": "2600:3c15::2000:3dff:fe44:50aa", - "CanPort80": true - }, - { - "Name": "3e", - "RegionID": 3, - "HostName": "derp3e.tailscale.com", - "IPv4": "172.237.72.43", - "IPv6": "2600:3c15::2000:6cff:fee4:d799", - "CanPort80": true - } - ] - }, - "4": { - "RegionID": 4, - "RegionCode": "fra", - "RegionName": "Frankfurt", - "Latitude": 50.1109, - "Longitude": 8.6821, - "Nodes": [ - { - "Name": "4h", - "RegionID": 4, - "HostName": "derp4h.tailscale.com", - "IPv4": "185.40.234.77", - "IPv6": "2a00:dd80:20::bcf", - "CanPort80": true - }, - { - "Name": "4g", - "RegionID": 4, - "HostName": "derp4g.tailscale.com", - "IPv4": "185.40.234.113", - "IPv6": "2a00:dd80:20::8f", - "CanPort80": true - }, - { - "Name": "4i", - "RegionID": 4, - "HostName": "derp4i.tailscale.com", - "IPv4": "185.40.234.53", - "IPv6": "2a00:dd80:20::8a6", - "CanPort80": true - }, - { - "Name": "4f", - "RegionID": 4, - "HostName": "derp4f.tailscale.com", - "IPv4": "185.40.234.219", - "IPv6": "2a00:dd80:20::a25", - "CanPort80": true - } - ] - }, - "5": { - "RegionID": 5, - "RegionCode": "syd", - "RegionName": "Sydney", - "Latitude": -33.867778, - "Longitude": 151.21, - "Nodes": [ - { - "Name": "5f", - "RegionID": 5, - "HostName": "derp5f.tailscale.com", - "IPv4": "172.105.166.103", - "IPv6": "2400:8907::2000:ccff:fe1f:80da", - "CanPort80": true - }, - { - "Name": "5g", - "RegionID": 5, - "HostName": "derp5g.tailscale.com", - "IPv4": "172.105.169.57", - "IPv6": "2400:8907::2000:2fff:fea7:57f4", - "CanPort80": true - }, - { - "Name": "5e", - "RegionID": 5, - "HostName": "derp5e.tailscale.com", - "IPv4": "172.105.179.230", - "IPv6": "2400:8907::2000:ceff:fe8d:4f4e", - "CanPort80": true - } - ] - }, - "6": { - "RegionID": 6, - "RegionCode": "blr", - "RegionName": "Bengaluru", - "Latitude": 12.9716, - "Longitude": 77.5946, - "Nodes": [ - { - "Name": "6a", - "RegionID": 6, - "HostName": "derp6.tailscale.com", - "IPv4": "68.183.90.120", - "IPv6": "2400:6180:100:d0::982:d001", - "CanPort80": true - } - ] - }, - "7": { - "RegionID": 7, - "RegionCode": "tok", - "RegionName": "Tokyo", - "Latitude": 35.6764, - "Longitude": 139.65, - "Nodes": [ - { - "Name": "7g", - "RegionID": 7, - "HostName": "derp7g.tailscale.com", - "IPv4": "172.238.6.179", - "IPv6": "2600:3c18::2000:3fff:fe80:3ebd", - "CanPort80": true - }, - { - "Name": "7f", - "RegionID": 7, - "HostName": "derp7f.tailscale.com", - "IPv4": "172.238.6.34", - "IPv6": "2600:3c18::2000:acff:fe8e:3ed5", - "CanPort80": true - }, - { - "Name": "7h", - "RegionID": 7, - "HostName": "derp7h.tailscale.com", - "IPv4": "172.237.28.183", - "IPv6": "2600:3c18::2000:b1ff:fea9:4560", - "CanPort80": true - }, - { - "Name": "7e", - "RegionID": 7, - "HostName": "derp7e.tailscale.com", - "IPv4": "172.238.6.180", - "IPv6": "2600:3c18::2000:60ff:fe0f:6e83", - "STUNOnly": true, - "CanPort80": true - } - ] - }, - "8": { - "RegionID": 8, - "RegionCode": "lhr", - "RegionName": "London", - "Latitude": 51.5072, - "Longitude": 0.1276, - "Nodes": [ - { - "Name": "8f", - "RegionID": 8, - "HostName": "derp8f.tailscale.com", - "IPv4": "176.58.88.183", - "IPv6": "2a00:dd80:3a::dfa", - "CanPort80": true - }, - { - "Name": "8g", - "RegionID": 8, - "HostName": "derp8g.tailscale.com", - "IPv4": "176.58.92.254", - "IPv6": "2a00:dd80:3a::ed", - "CanPort80": true - }, - { - "Name": "8e", - "RegionID": 8, - "HostName": "derp8e.tailscale.com", - "IPv4": "176.58.92.144", - "IPv6": "2a00:dd80:3a::b33", - "CanPort80": true - } - ] - }, - "9": { - "RegionID": 9, - "RegionCode": "dfw", - "RegionName": "Dallas", - "Latitude": 32.779167, - "Longitude": -96.808889, - "Nodes": [ - { - "Name": "9e", - "RegionID": 9, - "HostName": "derp9e.tailscale.com", - "IPv4": "192.73.248.83", - "IPv6": "2607:f740:100::359", - "CanPort80": true - }, - { - "Name": "9f", - "RegionID": 9, - "HostName": "derp9f.tailscale.com", - "IPv4": "209.177.156.197", - "IPv6": "2607:f740:100::cad", - "CanPort80": true - }, - { - "Name": "9d", - "RegionID": 9, - "HostName": "derp9d.tailscale.com", - "IPv4": "209.177.156.94", - "IPv6": "2607:f740:100::c05", - "CanPort80": true - } - ] - } - } - }, - "DisplayMessages": null, - "TKAEnabled": false, - "TKAHead": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", - "Domain": "kratail2tid@passkey", - "DomainAuditLogID": "", - "UserProfiles": { - "50590507314324": { - "ID": 50590507314324, - "LoginName": "router-a.tail78f774.ts.net", - "DisplayName": "router-a" - } - } + "PacketFilterRules": null } }, "router-b": { - "commands": { - "packet_filter_rules": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/router-b/tailscaled.sock debug localapi POST debug-packet-filter-rules", - "packet_filter_matches": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/router-b/tailscaled.sock debug localapi POST debug-packet-filter-matches" - }, "packet_filter_rules": null, - "packet_filter_matches": [], - "whois": { - "100.124.195.93": { - "peer_name": "exit-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/router-b/tailscaled.sock whois --json 100.124.195.93", - "response": null - }, - "100.116.18.24": { - "peer_name": "exit-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/router-b/tailscaled.sock whois --json 100.116.18.24", - "response": null - }, - "100.85.66.106": { - "peer_name": "exit-node", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/router-b/tailscaled.sock whois --json 100.85.66.106", - "response": null - }, - "100.107.162.14": { - "peer_name": "group-a-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/router-b/tailscaled.sock whois --json 100.107.162.14", - "response": null - }, - "100.77.135.18": { - "peer_name": "group-b-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/router-b/tailscaled.sock whois --json 100.77.135.18", - "response": null - }, - "100.105.127.107": { - "peer_name": "multi-exit-router", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/router-b/tailscaled.sock whois --json 100.105.127.107", - "response": null - }, - "100.109.43.124": { - "peer_name": "router-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/router-b/tailscaled.sock whois --json 100.109.43.124", - "response": null - }, - "100.92.142.61": { - "peer_name": "subnet-router", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/router-b/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/router-b/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/router-b/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/router-b/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/router-b/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/router-b/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/router-b/tailscaled.sock whois --json 100.90.199.68", - "response": null - } - }, "netmap": { - "SelfNode": { - "ID": 1399889648409786, - "StableID": "nPHvXBj1wB11CNTRL", - "Name": "router-b.tail78f774.ts.net.", - "User": 1399889648409786, - "Key": "nodekey:4e6d3473c516cea37bcefdf4368932c623fd91c24aee1aacc27ca8165a41ac7a", - "DiscoKey": "discokey:dd5532635b8e3ddf25186e36671c16dd17c005c8b6a6862f4b5cc4e4f459e705", - "Addresses": ["100.65.172.123/32", "fd7a:115c:a1e0::5a37:ac7c/128"], - "AllowedIPs": ["100.65.172.123/32", "fd7a:115c:a1e0::5a37:ac7c/128", "10.55.0.0/16"], - "Endpoints": ["77.164.248.136:35931", "10.65.0.27:35931", "172.17.0.1:35931"], - "Hostinfo": { - "Hostname": "router-b", - "RoutableIPs": ["10.55.0.0/16"], - "RequestTags": ["tag:router-b"], - "Services": [ - { "Proto": "peerapi4", "Port": 58804 }, - { "Proto": "peerapi6", "Port": 58804 }, - { "Proto": "peerapi-dns-proxy", "Port": 1 } - ] - }, - "Created": "2026-03-28T10:38:15.42735258Z", - "Tags": ["tag:router-b"], - "PrimaryRoutes": ["10.55.0.0/16"], - "MachineAuthorized": true, - "CapMap": { - "https://tailscale.com/cap/file-sharing": null, - "https://tailscale.com/cap/is-owner": null, - "https://tailscale.com/cap/ssh": null, - "https://tailscale.com/cap/tailnet-lock": null, - "probe-udp-lifetime": null, - "ssh-behavior-v1": null, - "ssh-env-vars": null, - "store-appc-routes": null, - "tailnet-display-name": ["kratail2tid@passkey"] - }, - "ComputedName": "router-b", - "ComputedNameWithHost": "router-b" - }, - "AllCaps": [ - "https://tailscale.com/cap/file-sharing", - "ssh-env-vars", - "tailnet-display-name", - "probe-udp-lifetime", - "store-appc-routes", - "ssh-behavior-v1", - "https://tailscale.com/cap/is-owner", - "https://tailscale.com/cap/ssh", - "https://tailscale.com/cap/tailnet-lock" - ], - "NodeKey": "nodekey:4e6d3473c516cea37bcefdf4368932c623fd91c24aee1aacc27ca8165a41ac7a", - "MachineKey": "mkey:d040ca033391d3dedae7b2ad7ec3334646cda7aeca501780bdaa37addec3c228", "Peers": [], - "DNS": { - "Routes": { - "tail78f774.ts.net.": null, - "ts.net.": [{ "Addr": "199.247.155.53" }, { "Addr": "2620:111:8007::53" }] - }, - "Domains": ["tail78f774.ts.net"], - "Proxied": true, - "ExitNodeFilteredSet": [".ts.net", ".tailscale.net"] - }, - "PacketFilter": [], - "PacketFilterRules": null, - "SSHPolicy": { "rules": [] }, - "CollectServices": false, - "DERPMap": { - "Regions": { - "1": { - "RegionID": 1, - "RegionCode": "nyc", - "RegionName": "New York City", - "Latitude": 40.7128, - "Longitude": -74.006, - "Nodes": [ - { - "Name": "1h", - "RegionID": 1, - "HostName": "derp1h.tailscale.com", - "IPv4": "199.38.181.93", - "IPv6": "2607:f740:f::afd", - "CanPort80": true - }, - { - "Name": "1g", - "RegionID": 1, - "HostName": "derp1g.tailscale.com", - "IPv4": "209.177.145.120", - "IPv6": "2607:f740:f::3eb", - "CanPort80": true - }, - { - "Name": "1i", - "RegionID": 1, - "HostName": "derp1i.tailscale.com", - "IPv4": "199.38.181.103", - "IPv6": "2607:f740:f::e19", - "CanPort80": true - }, - { - "Name": "1f", - "RegionID": 1, - "HostName": "derp1f.tailscale.com", - "IPv4": "199.38.181.104", - "IPv6": "2607:f740:f::bc", - "CanPort80": true - } - ] - }, - "10": { - "RegionID": 10, - "RegionCode": "sea", - "RegionName": "Seattle", - "Latitude": 47.609722, - "Longitude": -122.333056, - "Nodes": [ - { - "Name": "10c", - "RegionID": 10, - "HostName": "derp10c.tailscale.com", - "IPv4": "192.73.240.121", - "IPv6": "2607:f740:14::40c", - "CanPort80": true - }, - { - "Name": "10d", - "RegionID": 10, - "HostName": "derp10d.tailscale.com", - "IPv4": "192.73.240.132", - "IPv6": "2607:f740:14::500", - "CanPort80": true - }, - { - "Name": "10b", - "RegionID": 10, - "HostName": "derp10b.tailscale.com", - "IPv4": "192.73.240.161", - "IPv6": "2607:f740:14::61c", - "CanPort80": true - } - ] - }, - "11": { - "RegionID": 11, - "RegionCode": "sao", - "RegionName": "São Paulo", - "Latitude": -23.55, - "Longitude": -46.633333, - "Nodes": [ - { - "Name": "11f", - "RegionID": 11, - "HostName": "derp11f.tailscale.com", - "IPv4": "172.237.61.197", - "IPv6": "2600:3c0d::2000:3bff:fe44:6166", - "CanPort80": true - }, - { - "Name": "11g", - "RegionID": 11, - "HostName": "derp11g.tailscale.com", - "IPv4": "172.237.61.190", - "IPv6": "2600:3c0d::2000:62ff:febe:2e67", - "CanPort80": true - }, - { - "Name": "11e", - "RegionID": 11, - "HostName": "derp11e.tailscale.com", - "IPv4": "172.237.61.194", - "IPv6": "2600:3c0d::2000:d2ff:fe43:1790", - "CanPort80": true - } - ] - }, - "12": { - "RegionID": 12, - "RegionCode": "ord", - "RegionName": "Chicago", - "Latitude": 41.881944, - "Longitude": -87.627778, - "Nodes": [ - { - "Name": "12e", - "RegionID": 12, - "HostName": "derp12e.tailscale.com", - "IPv4": "209.177.158.15", - "IPv6": "2607:f740:e::b17", - "CanPort80": true - }, - { - "Name": "12f", - "RegionID": 12, - "HostName": "derp12f.tailscale.com", - "IPv4": "199.38.182.118", - "IPv6": "2607:f740:e::4c8", - "CanPort80": true - }, - { - "Name": "12d", - "RegionID": 12, - "HostName": "derp12d.tailscale.com", - "IPv4": "209.177.158.246", - "IPv6": "2607:f740:e::811", - "CanPort80": true - } - ] - }, - "13": { - "RegionID": 13, - "RegionCode": "den", - "RegionName": "Denver", - "Latitude": 39.7392, - "Longitude": -104.9849, - "Nodes": [ - { - "Name": "13c", - "RegionID": 13, - "HostName": "derp13c.tailscale.com", - "IPv4": "192.73.242.28", - "IPv6": "2607:f740:16::5c", - "CanPort80": true - }, - { - "Name": "13d", - "RegionID": 13, - "HostName": "derp13d.tailscale.com", - "IPv4": "192.73.242.204", - "IPv6": "2607:f740:16::c23", - "CanPort80": true - }, - { - "Name": "13b", - "RegionID": 13, - "HostName": "derp13b.tailscale.com", - "IPv4": "192.73.242.187", - "IPv6": "2607:f740:16::640", - "CanPort80": true - } - ] - }, - "14": { - "RegionID": 14, - "RegionCode": "ams", - "RegionName": "Amsterdam", - "Latitude": 52.372778, - "Longitude": 4.893611, - "Nodes": [ - { - "Name": "14c", - "RegionID": 14, - "HostName": "derp14c.tailscale.com", - "IPv4": "176.58.93.147", - "IPv6": "2a00:dd80:3c::b09", - "CanPort80": true - }, - { - "Name": "14d", - "RegionID": 14, - "HostName": "derp14d.tailscale.com", - "IPv4": "176.58.93.154", - "IPv6": "2a00:dd80:3c::3d5", - "CanPort80": true - }, - { - "Name": "14b", - "RegionID": 14, - "HostName": "derp14b.tailscale.com", - "IPv4": "176.58.93.248", - "IPv6": "2a00:dd80:3c::807", - "CanPort80": true - } - ] - }, - "15": { - "RegionID": 15, - "RegionCode": "jnb", - "RegionName": "Johannesburg", - "Latitude": -26.204444, - "Longitude": 28.045556, - "Nodes": [ - { - "Name": "15c", - "RegionID": 15, - "HostName": "derp15c.tailscale.com", - "IPv4": "102.67.165.185", - "IPv6": "2c0f:edb0:0:10::b59", - "CanPort80": true - }, - { - "Name": "15d", - "RegionID": 15, - "HostName": "derp15d.tailscale.com", - "IPv4": "102.67.165.36", - "IPv6": "2c0f:edb0:0:10::599", - "CanPort80": true - }, - { - "Name": "15b", - "RegionID": 15, - "HostName": "derp15b.tailscale.com", - "IPv4": "102.67.165.90", - "IPv6": "2c0f:edb0:0:10::963", - "CanPort80": true - } - ] - }, - "16": { - "RegionID": 16, - "RegionCode": "mia", - "RegionName": "Miami", - "Latitude": 25.78, - "Longitude": -80.21, - "Nodes": [ - { - "Name": "16c", - "RegionID": 16, - "HostName": "derp16c.tailscale.com", - "IPv4": "192.73.243.229", - "IPv6": "2607:f740:17::4e4", - "CanPort80": true - }, - { - "Name": "16d", - "RegionID": 16, - "HostName": "derp16d.tailscale.com", - "IPv4": "192.73.243.141", - "IPv6": "2607:f740:17::475", - "CanPort80": true - }, - { - "Name": "16b", - "RegionID": 16, - "HostName": "derp16b.tailscale.com", - "IPv4": "192.73.243.135", - "IPv6": "2607:f740:17::476", - "CanPort80": true - } - ] - }, - "17": { - "RegionID": 17, - "RegionCode": "lax", - "RegionName": "Los Angeles", - "Latitude": 34.05, - "Longitude": -118.25, - "Nodes": [ - { - "Name": "17c", - "RegionID": 17, - "HostName": "derp17c.tailscale.com", - "IPv4": "208.111.40.12", - "IPv6": "2607:f740:c::10", - "CanPort80": true - }, - { - "Name": "17d", - "RegionID": 17, - "HostName": "derp17d.tailscale.com", - "IPv4": "208.111.40.216", - "IPv6": "2607:f740:c::e1b", - "CanPort80": true - }, - { - "Name": "17b", - "RegionID": 17, - "HostName": "derp17b.tailscale.com", - "IPv4": "192.73.244.245", - "IPv6": "2607:f740:c::646", - "CanPort80": true - } - ] - }, - "18": { - "RegionID": 18, - "RegionCode": "par", - "RegionName": "Paris", - "Latitude": 48.856667, - "Longitude": 2.352222, - "Nodes": [ - { - "Name": "18c", - "RegionID": 18, - "HostName": "derp18c.tailscale.com", - "IPv4": "176.58.90.207", - "IPv6": "2a00:dd80:3e::c19", - "CanPort80": true - }, - { - "Name": "18d", - "RegionID": 18, - "HostName": "derp18d.tailscale.com", - "IPv4": "176.58.90.104", - "IPv6": "2a00:dd80:3e::f2e", - "CanPort80": true - }, - { - "Name": "18b", - "RegionID": 18, - "HostName": "derp18b.tailscale.com", - "IPv4": "176.58.90.147", - "IPv6": "2a00:dd80:3e::363", - "CanPort80": true - } - ] - }, - "19": { - "RegionID": 19, - "RegionCode": "mad", - "RegionName": "Madrid", - "Latitude": 40.416944, - "Longitude": -3.703333, - "Nodes": [ - { - "Name": "19c", - "RegionID": 19, - "HostName": "derp19c.tailscale.com", - "IPv4": "45.159.97.61", - "IPv6": "2a00:dd80:14:10::20", - "CanPort80": true - }, - { - "Name": "19d", - "RegionID": 19, - "HostName": "derp19d.tailscale.com", - "IPv4": "45.159.97.233", - "IPv6": "2a00:dd80:14:10::34a", - "CanPort80": true - }, - { - "Name": "19b", - "RegionID": 19, - "HostName": "derp19b.tailscale.com", - "IPv4": "45.159.97.144", - "IPv6": "2a00:dd80:14:10::335", - "CanPort80": true - } - ] - }, - "2": { - "RegionID": 2, - "RegionCode": "sfo", - "RegionName": "San Francisco", - "Latitude": 37.7775, - "Longitude": -122.416389, - "Nodes": [ - { - "Name": "2e", - "RegionID": 2, - "HostName": "derp2e.tailscale.com", - "IPv4": "192.73.252.134", - "IPv6": "2607:f740:0:3f::44c", - "CanPort80": true - }, - { - "Name": "2f", - "RegionID": 2, - "HostName": "derp2f.tailscale.com", - "IPv4": "208.111.34.178", - "IPv6": "2607:f740:0:3f::f4", - "CanPort80": true - }, - { - "Name": "2d", - "RegionID": 2, - "HostName": "derp2d.tailscale.com", - "IPv4": "192.73.252.65", - "IPv6": "2607:f740:0:3f::287", - "CanPort80": true - } - ] - }, - "20": { - "RegionID": 20, - "RegionCode": "hkg", - "RegionName": "Hong Kong", - "Latitude": 22.3193, - "Longitude": 114.1694, - "Nodes": [ - { - "Name": "20c", - "RegionID": 20, - "HostName": "derp20c.tailscale.com", - "IPv4": "205.147.105.30", - "IPv6": "2403:2500:8000:1::5fb", - "CanPort80": true - }, - { - "Name": "20d", - "RegionID": 20, - "HostName": "derp20d.tailscale.com", - "IPv4": "205.147.105.78", - "IPv6": "2403:2500:8000:1::e9a", - "CanPort80": true - }, - { - "Name": "20b", - "RegionID": 20, - "HostName": "derp20b.tailscale.com", - "IPv4": "103.6.84.152", - "IPv6": "2403:2500:8000:1::ef6", - "CanPort80": true - } - ] - }, - "21": { - "RegionID": 21, - "RegionCode": "tor", - "RegionName": "Toronto", - "Latitude": 43.741667, - "Longitude": -79.373333, - "Nodes": [ - { - "Name": "21c", - "RegionID": 21, - "HostName": "derp21c.tailscale.com", - "IPv4": "162.248.221.215", - "IPv6": "2607:f740:50::f10", - "CanPort80": true - }, - { - "Name": "21d", - "RegionID": 21, - "HostName": "derp21d.tailscale.com", - "IPv4": "162.248.221.248", - "IPv6": "2607:f740:50::ca4", - "CanPort80": true - }, - { - "Name": "21b", - "RegionID": 21, - "HostName": "derp21b.tailscale.com", - "IPv4": "162.248.221.199", - "IPv6": "2607:f740:50::1d1", - "CanPort80": true - } - ] - }, - "22": { - "RegionID": 22, - "RegionCode": "waw", - "RegionName": "Warsaw", - "Latitude": 52.23, - "Longitude": 21.011111, - "Nodes": [ - { - "Name": "22c", - "RegionID": 22, - "HostName": "derp22c.tailscale.com", - "IPv4": "45.159.98.253", - "IPv6": "2a00:dd80:40:100::3f", - "CanPort80": true - }, - { - "Name": "22d", - "RegionID": 22, - "HostName": "derp22d.tailscale.com", - "IPv4": "45.159.98.145", - "IPv6": "2a00:dd80:40:100::211", - "CanPort80": true - }, - { - "Name": "22b", - "RegionID": 22, - "HostName": "derp22b.tailscale.com", - "IPv4": "45.159.98.196", - "IPv6": "2a00:dd80:40:100::316", - "CanPort80": true - } - ] - }, - "23": { - "RegionID": 23, - "RegionCode": "dbi", - "RegionName": "Dubai", - "Latitude": 25.263056, - "Longitude": 55.297222, - "Nodes": [ - { - "Name": "23c", - "RegionID": 23, - "HostName": "derp23c.tailscale.com", - "IPv4": "185.34.3.207", - "IPv6": "2a00:dd80:3f:100::a50", - "CanPort80": true - }, - { - "Name": "23d", - "RegionID": 23, - "HostName": "derp23d.tailscale.com", - "IPv4": "185.34.3.75", - "IPv6": "2a00:dd80:3f:100::97e", - "CanPort80": true - }, - { - "Name": "23b", - "RegionID": 23, - "HostName": "derp23b.tailscale.com", - "IPv4": "185.34.3.232", - "IPv6": "2a00:dd80:3f:100::76f", - "CanPort80": true - } - ] - }, - "24": { - "RegionID": 24, - "RegionCode": "hnl", - "RegionName": "Honolulu", - "Latitude": 21.306944, - "Longitude": -157.858333, - "Nodes": [ - { - "Name": "24c", - "RegionID": 24, - "HostName": "derp24c.tailscale.com", - "IPv4": "208.83.233.233", - "IPv6": "2001:19f0:c000:c591:5400:04ff:fe26:2c5f", - "CanPort80": true - }, - { - "Name": "24d", - "RegionID": 24, - "HostName": "derp24d.tailscale.com", - "IPv4": "208.72.155.133", - "IPv6": "2001:19f0:c000:c564:5400:04ff:fe26:2ba8", - "CanPort80": true - }, - { - "Name": "24b", - "RegionID": 24, - "HostName": "derp24b.tailscale.com", - "IPv4": "208.83.234.151", - "IPv6": "2001:19f0:c000:c586:5400:04ff:fe26:2ba6", - "CanPort80": true - } - ] - }, - "25": { - "RegionID": 25, - "RegionCode": "nai", - "RegionName": "Nairobi", - "Latitude": -1.286389, - "Longitude": 36.817222, - "Nodes": [ - { - "Name": "25c", - "RegionID": 25, - "HostName": "derp25c.tailscale.com", - "IPv4": "102.67.167.37", - "IPv6": "2c0f:edb0:2000:1::2c7", - "CanPort80": true - }, - { - "Name": "25d", - "RegionID": 25, - "HostName": "derp25d.tailscale.com", - "IPv4": "102.67.167.188", - "IPv6": "2c0f:edb0:2000:1::188", - "CanPort80": true - }, - { - "Name": "25b", - "RegionID": 25, - "HostName": "derp25b.tailscale.com", - "IPv4": "102.67.167.245", - "IPv6": "2c0f:edb0:2000:1::2e9", - "CanPort80": true - } - ] - }, - "26": { - "RegionID": 26, - "RegionCode": "nue", - "RegionName": "Nuremberg", - "Latitude": 49.453889, - "Longitude": 11.0775, - "Nodes": [ - { - "Name": "26c", - "RegionID": 26, - "HostName": "derp26c.tailscale.com", - "IPv4": "49.12.193.137", - "IPv6": "2a01:4f8:1c1c:5c70::1", - "CanPort80": true - }, - { - "Name": "26d", - "RegionID": 26, - "HostName": "derp26d.tailscale.com", - "IPv4": "49.13.204.141", - "IPv6": "2a01:4f8:1c0c:7d06::1", - "CanPort80": true - }, - { - "Name": "26b", - "RegionID": 26, - "HostName": "derp26b.tailscale.com", - "IPv4": "167.235.72.200", - "IPv6": "2a01:4f8:1c1c:47b6::1", - "CanPort80": true - } - ] - }, - "27": { - "RegionID": 27, - "RegionCode": "iad", - "RegionName": "Ashburn", - "Latitude": 39.03, - "Longitude": -77.471111, - "Nodes": [ - { - "Name": "27d", - "RegionID": 27, - "HostName": "derp27d.tailscale.com", - "IPv4": "178.156.152.106", - "IPv6": "2a01:4ff:f0:3c8e::1", - "CanPort80": true - }, - { - "Name": "27c", - "RegionID": 27, - "HostName": "derp27c.tailscale.com", - "IPv4": "178.156.152.91", - "IPv6": "2a01:4ff:f0:3913::1", - "CanPort80": true - }, - { - "Name": "27e", - "RegionID": 27, - "HostName": "derp27e.tailscale.com", - "IPv4": "178.156.134.232", - "IPv6": "2a01:4ff:f0:28d4::1", - "CanPort80": true - }, - { - "Name": "27b", - "RegionID": 27, - "HostName": "derp27b.tailscale.com", - "IPv4": "5.161.218.233", - "IPv6": "2a01:4ff:f0:3db9::1", - "CanPort80": true - } - ] - }, - "28": { - "RegionID": 28, - "RegionCode": "hel", - "RegionName": "Helsinki", - "Latitude": 60.170833, - "Longitude": 24.9375, - "Nodes": [ - { - "Name": "28c", - "RegionID": 28, - "HostName": "derp28c.tailscale.com", - "IPv4": "95.217.2.165", - "IPv6": "2a01:4f9:c012:cd74::1", - "CanPort80": true - }, - { - "Name": "28d", - "RegionID": 28, - "HostName": "derp28d.tailscale.com", - "IPv4": "157.180.28.32", - "IPv6": "2a01:4f9:c012:2e5b::1", - "CanPort80": true - }, - { - "Name": "28b", - "RegionID": 28, - "HostName": "derp28b.tailscale.com", - "IPv4": "65.109.143.62", - "IPv6": "2a01:4f9:c012:d55c::1", - "CanPort80": true - } - ] - }, - "3": { - "RegionID": 3, - "RegionCode": "sin", - "RegionName": "Singapore", - "Latitude": 1.3521, - "Longitude": 103.8198, - "Nodes": [ - { - "Name": "3g", - "RegionID": 3, - "HostName": "derp3g.tailscale.com", - "IPv4": "172.237.72.79", - "IPv6": "2600:3c15::2000:adff:fe08:6fab", - "CanPort80": true - }, - { - "Name": "3f", - "RegionID": 3, - "HostName": "derp3f.tailscale.com", - "IPv4": "172.237.72.8", - "IPv6": "2600:3c15::2000:53ff:fe48:a668", - "CanPort80": true - }, - { - "Name": "3h", - "RegionID": 3, - "HostName": "derp3h.tailscale.com", - "IPv4": "172.237.66.30", - "IPv6": "2600:3c15::2000:3dff:fe44:50aa", - "CanPort80": true - }, - { - "Name": "3e", - "RegionID": 3, - "HostName": "derp3e.tailscale.com", - "IPv4": "172.237.72.43", - "IPv6": "2600:3c15::2000:6cff:fee4:d799", - "CanPort80": true - } - ] - }, - "4": { - "RegionID": 4, - "RegionCode": "fra", - "RegionName": "Frankfurt", - "Latitude": 50.1109, - "Longitude": 8.6821, - "Nodes": [ - { - "Name": "4h", - "RegionID": 4, - "HostName": "derp4h.tailscale.com", - "IPv4": "185.40.234.77", - "IPv6": "2a00:dd80:20::bcf", - "CanPort80": true - }, - { - "Name": "4g", - "RegionID": 4, - "HostName": "derp4g.tailscale.com", - "IPv4": "185.40.234.113", - "IPv6": "2a00:dd80:20::8f", - "CanPort80": true - }, - { - "Name": "4i", - "RegionID": 4, - "HostName": "derp4i.tailscale.com", - "IPv4": "185.40.234.53", - "IPv6": "2a00:dd80:20::8a6", - "CanPort80": true - }, - { - "Name": "4f", - "RegionID": 4, - "HostName": "derp4f.tailscale.com", - "IPv4": "185.40.234.219", - "IPv6": "2a00:dd80:20::a25", - "CanPort80": true - } - ] - }, - "5": { - "RegionID": 5, - "RegionCode": "syd", - "RegionName": "Sydney", - "Latitude": -33.867778, - "Longitude": 151.21, - "Nodes": [ - { - "Name": "5f", - "RegionID": 5, - "HostName": "derp5f.tailscale.com", - "IPv4": "172.105.166.103", - "IPv6": "2400:8907::2000:ccff:fe1f:80da", - "CanPort80": true - }, - { - "Name": "5g", - "RegionID": 5, - "HostName": "derp5g.tailscale.com", - "IPv4": "172.105.169.57", - "IPv6": "2400:8907::2000:2fff:fea7:57f4", - "CanPort80": true - }, - { - "Name": "5e", - "RegionID": 5, - "HostName": "derp5e.tailscale.com", - "IPv4": "172.105.179.230", - "IPv6": "2400:8907::2000:ceff:fe8d:4f4e", - "CanPort80": true - } - ] - }, - "6": { - "RegionID": 6, - "RegionCode": "blr", - "RegionName": "Bengaluru", - "Latitude": 12.9716, - "Longitude": 77.5946, - "Nodes": [ - { - "Name": "6a", - "RegionID": 6, - "HostName": "derp6.tailscale.com", - "IPv4": "68.183.90.120", - "IPv6": "2400:6180:100:d0::982:d001", - "CanPort80": true - } - ] - }, - "7": { - "RegionID": 7, - "RegionCode": "tok", - "RegionName": "Tokyo", - "Latitude": 35.6764, - "Longitude": 139.65, - "Nodes": [ - { - "Name": "7g", - "RegionID": 7, - "HostName": "derp7g.tailscale.com", - "IPv4": "172.238.6.179", - "IPv6": "2600:3c18::2000:3fff:fe80:3ebd", - "CanPort80": true - }, - { - "Name": "7f", - "RegionID": 7, - "HostName": "derp7f.tailscale.com", - "IPv4": "172.238.6.34", - "IPv6": "2600:3c18::2000:acff:fe8e:3ed5", - "CanPort80": true - }, - { - "Name": "7h", - "RegionID": 7, - "HostName": "derp7h.tailscale.com", - "IPv4": "172.237.28.183", - "IPv6": "2600:3c18::2000:b1ff:fea9:4560", - "CanPort80": true - }, - { - "Name": "7e", - "RegionID": 7, - "HostName": "derp7e.tailscale.com", - "IPv4": "172.238.6.180", - "IPv6": "2600:3c18::2000:60ff:fe0f:6e83", - "STUNOnly": true, - "CanPort80": true - } - ] - }, - "8": { - "RegionID": 8, - "RegionCode": "lhr", - "RegionName": "London", - "Latitude": 51.5072, - "Longitude": 0.1276, - "Nodes": [ - { - "Name": "8f", - "RegionID": 8, - "HostName": "derp8f.tailscale.com", - "IPv4": "176.58.88.183", - "IPv6": "2a00:dd80:3a::dfa", - "CanPort80": true - }, - { - "Name": "8g", - "RegionID": 8, - "HostName": "derp8g.tailscale.com", - "IPv4": "176.58.92.254", - "IPv6": "2a00:dd80:3a::ed", - "CanPort80": true - }, - { - "Name": "8e", - "RegionID": 8, - "HostName": "derp8e.tailscale.com", - "IPv4": "176.58.92.144", - "IPv6": "2a00:dd80:3a::b33", - "CanPort80": true - } - ] - }, - "9": { - "RegionID": 9, - "RegionCode": "dfw", - "RegionName": "Dallas", - "Latitude": 32.779167, - "Longitude": -96.808889, - "Nodes": [ - { - "Name": "9e", - "RegionID": 9, - "HostName": "derp9e.tailscale.com", - "IPv4": "192.73.248.83", - "IPv6": "2607:f740:100::359", - "CanPort80": true - }, - { - "Name": "9f", - "RegionID": 9, - "HostName": "derp9f.tailscale.com", - "IPv4": "209.177.156.197", - "IPv6": "2607:f740:100::cad", - "CanPort80": true - }, - { - "Name": "9d", - "RegionID": 9, - "HostName": "derp9d.tailscale.com", - "IPv4": "209.177.156.94", - "IPv6": "2607:f740:100::c05", - "CanPort80": true - } - ] - } - } - }, - "DisplayMessages": null, - "TKAEnabled": false, - "TKAHead": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", - "Domain": "kratail2tid@passkey", - "DomainAuditLogID": "", - "UserProfiles": { - "1399889648409786": { - "ID": 1399889648409786, - "LoginName": "router-b.tail78f774.ts.net", - "DisplayName": "router-b" - } - } + "PacketFilterRules": 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.124.195.93": { - "peer_name": "exit-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/subnet-router/tailscaled.sock whois --json 100.124.195.93", - "response": null - }, - "100.116.18.24": { - "peer_name": "exit-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/subnet-router/tailscaled.sock whois --json 100.116.18.24", - "response": null - }, - "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.107.162.14": { - "peer_name": "group-a-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/subnet-router/tailscaled.sock whois --json 100.107.162.14", - "response": null - }, - "100.77.135.18": { - "peer_name": "group-b-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/subnet-router/tailscaled.sock whois --json 100.77.135.18", - "response": null - }, - "100.105.127.107": { - "peer_name": "multi-exit-router", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/subnet-router/tailscaled.sock whois --json 100.105.127.107", - "response": null - }, - "100.109.43.124": { - "peer_name": "router-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/subnet-router/tailscaled.sock whois --json 100.109.43.124", - "response": null - }, - "100.65.172.123": { - "peer_name": "router-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/subnet-router/tailscaled.sock whois --json 100.65.172.123", - "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 - } - }, "netmap": { - "SelfNode": { - "ID": 7489538288452506, - "StableID": "nTPEqJU2V121CNTRL", - "Name": "subnet-router.tail78f774.ts.net.", - "User": 7489538288452506, - "Key": "nodekey:887ae2351c09c3b952f1f42bdac4095ec396ebf15824a746e4193c003e9c8e3c", - "DiscoKey": "discokey:9e3167ceaf53735a2fcaa7d3a85ad3a6118274deb448326d594849275014cc56", - "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:58597", "10.65.0.27:58597", "172.17.0.1:58597"], - "Hostinfo": { - "Hostname": "subnet-router", - "RoutableIPs": ["10.33.0.0/16"], - "RequestTags": ["tag:router"], - "Services": [ - { "Proto": "peerapi4", "Port": 63250 }, - { "Proto": "peerapi6", "Port": 63250 }, - { "Proto": "peerapi-dns-proxy", "Port": 1 } - ] - }, - "Created": "2026-02-23T00:13:15.731478784Z", - "Tags": ["tag:router"], - "MachineAuthorized": true, - "CapMap": { - "https://tailscale.com/cap/file-sharing": null, - "https://tailscale.com/cap/is-owner": null, - "https://tailscale.com/cap/ssh": null, - "https://tailscale.com/cap/tailnet-lock": null, - "probe-udp-lifetime": null, - "ssh-behavior-v1": null, - "ssh-env-vars": null, - "store-appc-routes": null, - "tailnet-display-name": ["kratail2tid@passkey"] - }, - "ComputedName": "subnet-router", - "ComputedNameWithHost": "subnet-router" - }, - "AllCaps": [ - "ssh-behavior-v1", - "ssh-env-vars", - "https://tailscale.com/cap/is-owner", - "tailnet-display-name", - "https://tailscale.com/cap/ssh", - "https://tailscale.com/cap/tailnet-lock", - "probe-udp-lifetime", - "store-appc-routes", - "https://tailscale.com/cap/file-sharing" - ], - "NodeKey": "nodekey:887ae2351c09c3b952f1f42bdac4095ec396ebf15824a746e4193c003e9c8e3c", - "MachineKey": "mkey:324efa54cc51a7b4f266f6a236904c755d32b6e547a76ad3c1d1e9d348de682a", "Peers": [], - "DNS": { - "Routes": { - "tail78f774.ts.net.": null, - "ts.net.": [{ "Addr": "199.247.155.53" }, { "Addr": "2620:111:8007::53" }] - }, - "Domains": ["tail78f774.ts.net"], - "Proxied": true, - "ExitNodeFilteredSet": [".ts.net", ".tailscale.net"] - }, - "PacketFilter": [], - "PacketFilterRules": null, - "SSHPolicy": { "rules": [] }, - "CollectServices": false, - "DERPMap": { - "Regions": { - "1": { - "RegionID": 1, - "RegionCode": "nyc", - "RegionName": "New York City", - "Latitude": 40.7128, - "Longitude": -74.006, - "Nodes": [ - { - "Name": "1h", - "RegionID": 1, - "HostName": "derp1h.tailscale.com", - "IPv4": "199.38.181.93", - "IPv6": "2607:f740:f::afd", - "CanPort80": true - }, - { - "Name": "1g", - "RegionID": 1, - "HostName": "derp1g.tailscale.com", - "IPv4": "209.177.145.120", - "IPv6": "2607:f740:f::3eb", - "CanPort80": true - }, - { - "Name": "1i", - "RegionID": 1, - "HostName": "derp1i.tailscale.com", - "IPv4": "199.38.181.103", - "IPv6": "2607:f740:f::e19", - "CanPort80": true - }, - { - "Name": "1f", - "RegionID": 1, - "HostName": "derp1f.tailscale.com", - "IPv4": "199.38.181.104", - "IPv6": "2607:f740:f::bc", - "CanPort80": true - } - ] - }, - "10": { - "RegionID": 10, - "RegionCode": "sea", - "RegionName": "Seattle", - "Latitude": 47.609722, - "Longitude": -122.333056, - "Nodes": [ - { - "Name": "10c", - "RegionID": 10, - "HostName": "derp10c.tailscale.com", - "IPv4": "192.73.240.121", - "IPv6": "2607:f740:14::40c", - "CanPort80": true - }, - { - "Name": "10d", - "RegionID": 10, - "HostName": "derp10d.tailscale.com", - "IPv4": "192.73.240.132", - "IPv6": "2607:f740:14::500", - "CanPort80": true - }, - { - "Name": "10b", - "RegionID": 10, - "HostName": "derp10b.tailscale.com", - "IPv4": "192.73.240.161", - "IPv6": "2607:f740:14::61c", - "CanPort80": true - } - ] - }, - "11": { - "RegionID": 11, - "RegionCode": "sao", - "RegionName": "São Paulo", - "Latitude": -23.55, - "Longitude": -46.633333, - "Nodes": [ - { - "Name": "11f", - "RegionID": 11, - "HostName": "derp11f.tailscale.com", - "IPv4": "172.237.61.197", - "IPv6": "2600:3c0d::2000:3bff:fe44:6166", - "CanPort80": true - }, - { - "Name": "11g", - "RegionID": 11, - "HostName": "derp11g.tailscale.com", - "IPv4": "172.237.61.190", - "IPv6": "2600:3c0d::2000:62ff:febe:2e67", - "CanPort80": true - }, - { - "Name": "11e", - "RegionID": 11, - "HostName": "derp11e.tailscale.com", - "IPv4": "172.237.61.194", - "IPv6": "2600:3c0d::2000:d2ff:fe43:1790", - "CanPort80": true - } - ] - }, - "12": { - "RegionID": 12, - "RegionCode": "ord", - "RegionName": "Chicago", - "Latitude": 41.881944, - "Longitude": -87.627778, - "Nodes": [ - { - "Name": "12e", - "RegionID": 12, - "HostName": "derp12e.tailscale.com", - "IPv4": "209.177.158.15", - "IPv6": "2607:f740:e::b17", - "CanPort80": true - }, - { - "Name": "12f", - "RegionID": 12, - "HostName": "derp12f.tailscale.com", - "IPv4": "199.38.182.118", - "IPv6": "2607:f740:e::4c8", - "CanPort80": true - }, - { - "Name": "12d", - "RegionID": 12, - "HostName": "derp12d.tailscale.com", - "IPv4": "209.177.158.246", - "IPv6": "2607:f740:e::811", - "CanPort80": true - } - ] - }, - "13": { - "RegionID": 13, - "RegionCode": "den", - "RegionName": "Denver", - "Latitude": 39.7392, - "Longitude": -104.9849, - "Nodes": [ - { - "Name": "13c", - "RegionID": 13, - "HostName": "derp13c.tailscale.com", - "IPv4": "192.73.242.28", - "IPv6": "2607:f740:16::5c", - "CanPort80": true - }, - { - "Name": "13d", - "RegionID": 13, - "HostName": "derp13d.tailscale.com", - "IPv4": "192.73.242.204", - "IPv6": "2607:f740:16::c23", - "CanPort80": true - }, - { - "Name": "13b", - "RegionID": 13, - "HostName": "derp13b.tailscale.com", - "IPv4": "192.73.242.187", - "IPv6": "2607:f740:16::640", - "CanPort80": true - } - ] - }, - "14": { - "RegionID": 14, - "RegionCode": "ams", - "RegionName": "Amsterdam", - "Latitude": 52.372778, - "Longitude": 4.893611, - "Nodes": [ - { - "Name": "14c", - "RegionID": 14, - "HostName": "derp14c.tailscale.com", - "IPv4": "176.58.93.147", - "IPv6": "2a00:dd80:3c::b09", - "CanPort80": true - }, - { - "Name": "14d", - "RegionID": 14, - "HostName": "derp14d.tailscale.com", - "IPv4": "176.58.93.154", - "IPv6": "2a00:dd80:3c::3d5", - "CanPort80": true - }, - { - "Name": "14b", - "RegionID": 14, - "HostName": "derp14b.tailscale.com", - "IPv4": "176.58.93.248", - "IPv6": "2a00:dd80:3c::807", - "CanPort80": true - } - ] - }, - "15": { - "RegionID": 15, - "RegionCode": "jnb", - "RegionName": "Johannesburg", - "Latitude": -26.204444, - "Longitude": 28.045556, - "Nodes": [ - { - "Name": "15c", - "RegionID": 15, - "HostName": "derp15c.tailscale.com", - "IPv4": "102.67.165.185", - "IPv6": "2c0f:edb0:0:10::b59", - "CanPort80": true - }, - { - "Name": "15d", - "RegionID": 15, - "HostName": "derp15d.tailscale.com", - "IPv4": "102.67.165.36", - "IPv6": "2c0f:edb0:0:10::599", - "CanPort80": true - }, - { - "Name": "15b", - "RegionID": 15, - "HostName": "derp15b.tailscale.com", - "IPv4": "102.67.165.90", - "IPv6": "2c0f:edb0:0:10::963", - "CanPort80": true - } - ] - }, - "16": { - "RegionID": 16, - "RegionCode": "mia", - "RegionName": "Miami", - "Latitude": 25.78, - "Longitude": -80.21, - "Nodes": [ - { - "Name": "16c", - "RegionID": 16, - "HostName": "derp16c.tailscale.com", - "IPv4": "192.73.243.229", - "IPv6": "2607:f740:17::4e4", - "CanPort80": true - }, - { - "Name": "16d", - "RegionID": 16, - "HostName": "derp16d.tailscale.com", - "IPv4": "192.73.243.141", - "IPv6": "2607:f740:17::475", - "CanPort80": true - }, - { - "Name": "16b", - "RegionID": 16, - "HostName": "derp16b.tailscale.com", - "IPv4": "192.73.243.135", - "IPv6": "2607:f740:17::476", - "CanPort80": true - } - ] - }, - "17": { - "RegionID": 17, - "RegionCode": "lax", - "RegionName": "Los Angeles", - "Latitude": 34.05, - "Longitude": -118.25, - "Nodes": [ - { - "Name": "17c", - "RegionID": 17, - "HostName": "derp17c.tailscale.com", - "IPv4": "208.111.40.12", - "IPv6": "2607:f740:c::10", - "CanPort80": true - }, - { - "Name": "17d", - "RegionID": 17, - "HostName": "derp17d.tailscale.com", - "IPv4": "208.111.40.216", - "IPv6": "2607:f740:c::e1b", - "CanPort80": true - }, - { - "Name": "17b", - "RegionID": 17, - "HostName": "derp17b.tailscale.com", - "IPv4": "192.73.244.245", - "IPv6": "2607:f740:c::646", - "CanPort80": true - } - ] - }, - "18": { - "RegionID": 18, - "RegionCode": "par", - "RegionName": "Paris", - "Latitude": 48.856667, - "Longitude": 2.352222, - "Nodes": [ - { - "Name": "18c", - "RegionID": 18, - "HostName": "derp18c.tailscale.com", - "IPv4": "176.58.90.207", - "IPv6": "2a00:dd80:3e::c19", - "CanPort80": true - }, - { - "Name": "18d", - "RegionID": 18, - "HostName": "derp18d.tailscale.com", - "IPv4": "176.58.90.104", - "IPv6": "2a00:dd80:3e::f2e", - "CanPort80": true - }, - { - "Name": "18b", - "RegionID": 18, - "HostName": "derp18b.tailscale.com", - "IPv4": "176.58.90.147", - "IPv6": "2a00:dd80:3e::363", - "CanPort80": true - } - ] - }, - "19": { - "RegionID": 19, - "RegionCode": "mad", - "RegionName": "Madrid", - "Latitude": 40.416944, - "Longitude": -3.703333, - "Nodes": [ - { - "Name": "19c", - "RegionID": 19, - "HostName": "derp19c.tailscale.com", - "IPv4": "45.159.97.61", - "IPv6": "2a00:dd80:14:10::20", - "CanPort80": true - }, - { - "Name": "19d", - "RegionID": 19, - "HostName": "derp19d.tailscale.com", - "IPv4": "45.159.97.233", - "IPv6": "2a00:dd80:14:10::34a", - "CanPort80": true - }, - { - "Name": "19b", - "RegionID": 19, - "HostName": "derp19b.tailscale.com", - "IPv4": "45.159.97.144", - "IPv6": "2a00:dd80:14:10::335", - "CanPort80": true - } - ] - }, - "2": { - "RegionID": 2, - "RegionCode": "sfo", - "RegionName": "San Francisco", - "Latitude": 37.7775, - "Longitude": -122.416389, - "Nodes": [ - { - "Name": "2e", - "RegionID": 2, - "HostName": "derp2e.tailscale.com", - "IPv4": "192.73.252.134", - "IPv6": "2607:f740:0:3f::44c", - "CanPort80": true - }, - { - "Name": "2f", - "RegionID": 2, - "HostName": "derp2f.tailscale.com", - "IPv4": "208.111.34.178", - "IPv6": "2607:f740:0:3f::f4", - "CanPort80": true - }, - { - "Name": "2d", - "RegionID": 2, - "HostName": "derp2d.tailscale.com", - "IPv4": "192.73.252.65", - "IPv6": "2607:f740:0:3f::287", - "CanPort80": true - } - ] - }, - "20": { - "RegionID": 20, - "RegionCode": "hkg", - "RegionName": "Hong Kong", - "Latitude": 22.3193, - "Longitude": 114.1694, - "Nodes": [ - { - "Name": "20c", - "RegionID": 20, - "HostName": "derp20c.tailscale.com", - "IPv4": "205.147.105.30", - "IPv6": "2403:2500:8000:1::5fb", - "CanPort80": true - }, - { - "Name": "20d", - "RegionID": 20, - "HostName": "derp20d.tailscale.com", - "IPv4": "205.147.105.78", - "IPv6": "2403:2500:8000:1::e9a", - "CanPort80": true - }, - { - "Name": "20b", - "RegionID": 20, - "HostName": "derp20b.tailscale.com", - "IPv4": "103.6.84.152", - "IPv6": "2403:2500:8000:1::ef6", - "CanPort80": true - } - ] - }, - "21": { - "RegionID": 21, - "RegionCode": "tor", - "RegionName": "Toronto", - "Latitude": 43.741667, - "Longitude": -79.373333, - "Nodes": [ - { - "Name": "21c", - "RegionID": 21, - "HostName": "derp21c.tailscale.com", - "IPv4": "162.248.221.215", - "IPv6": "2607:f740:50::f10", - "CanPort80": true - }, - { - "Name": "21d", - "RegionID": 21, - "HostName": "derp21d.tailscale.com", - "IPv4": "162.248.221.248", - "IPv6": "2607:f740:50::ca4", - "CanPort80": true - }, - { - "Name": "21b", - "RegionID": 21, - "HostName": "derp21b.tailscale.com", - "IPv4": "162.248.221.199", - "IPv6": "2607:f740:50::1d1", - "CanPort80": true - } - ] - }, - "22": { - "RegionID": 22, - "RegionCode": "waw", - "RegionName": "Warsaw", - "Latitude": 52.23, - "Longitude": 21.011111, - "Nodes": [ - { - "Name": "22c", - "RegionID": 22, - "HostName": "derp22c.tailscale.com", - "IPv4": "45.159.98.253", - "IPv6": "2a00:dd80:40:100::3f", - "CanPort80": true - }, - { - "Name": "22d", - "RegionID": 22, - "HostName": "derp22d.tailscale.com", - "IPv4": "45.159.98.145", - "IPv6": "2a00:dd80:40:100::211", - "CanPort80": true - }, - { - "Name": "22b", - "RegionID": 22, - "HostName": "derp22b.tailscale.com", - "IPv4": "45.159.98.196", - "IPv6": "2a00:dd80:40:100::316", - "CanPort80": true - } - ] - }, - "23": { - "RegionID": 23, - "RegionCode": "dbi", - "RegionName": "Dubai", - "Latitude": 25.263056, - "Longitude": 55.297222, - "Nodes": [ - { - "Name": "23c", - "RegionID": 23, - "HostName": "derp23c.tailscale.com", - "IPv4": "185.34.3.207", - "IPv6": "2a00:dd80:3f:100::a50", - "CanPort80": true - }, - { - "Name": "23d", - "RegionID": 23, - "HostName": "derp23d.tailscale.com", - "IPv4": "185.34.3.75", - "IPv6": "2a00:dd80:3f:100::97e", - "CanPort80": true - }, - { - "Name": "23b", - "RegionID": 23, - "HostName": "derp23b.tailscale.com", - "IPv4": "185.34.3.232", - "IPv6": "2a00:dd80:3f:100::76f", - "CanPort80": true - } - ] - }, - "24": { - "RegionID": 24, - "RegionCode": "hnl", - "RegionName": "Honolulu", - "Latitude": 21.306944, - "Longitude": -157.858333, - "Nodes": [ - { - "Name": "24c", - "RegionID": 24, - "HostName": "derp24c.tailscale.com", - "IPv4": "208.83.233.233", - "IPv6": "2001:19f0:c000:c591:5400:04ff:fe26:2c5f", - "CanPort80": true - }, - { - "Name": "24d", - "RegionID": 24, - "HostName": "derp24d.tailscale.com", - "IPv4": "208.72.155.133", - "IPv6": "2001:19f0:c000:c564:5400:04ff:fe26:2ba8", - "CanPort80": true - }, - { - "Name": "24b", - "RegionID": 24, - "HostName": "derp24b.tailscale.com", - "IPv4": "208.83.234.151", - "IPv6": "2001:19f0:c000:c586:5400:04ff:fe26:2ba6", - "CanPort80": true - } - ] - }, - "25": { - "RegionID": 25, - "RegionCode": "nai", - "RegionName": "Nairobi", - "Latitude": -1.286389, - "Longitude": 36.817222, - "Nodes": [ - { - "Name": "25c", - "RegionID": 25, - "HostName": "derp25c.tailscale.com", - "IPv4": "102.67.167.37", - "IPv6": "2c0f:edb0:2000:1::2c7", - "CanPort80": true - }, - { - "Name": "25d", - "RegionID": 25, - "HostName": "derp25d.tailscale.com", - "IPv4": "102.67.167.188", - "IPv6": "2c0f:edb0:2000:1::188", - "CanPort80": true - }, - { - "Name": "25b", - "RegionID": 25, - "HostName": "derp25b.tailscale.com", - "IPv4": "102.67.167.245", - "IPv6": "2c0f:edb0:2000:1::2e9", - "CanPort80": true - } - ] - }, - "26": { - "RegionID": 26, - "RegionCode": "nue", - "RegionName": "Nuremberg", - "Latitude": 49.453889, - "Longitude": 11.0775, - "Nodes": [ - { - "Name": "26c", - "RegionID": 26, - "HostName": "derp26c.tailscale.com", - "IPv4": "49.12.193.137", - "IPv6": "2a01:4f8:1c1c:5c70::1", - "CanPort80": true - }, - { - "Name": "26d", - "RegionID": 26, - "HostName": "derp26d.tailscale.com", - "IPv4": "49.13.204.141", - "IPv6": "2a01:4f8:1c0c:7d06::1", - "CanPort80": true - }, - { - "Name": "26b", - "RegionID": 26, - "HostName": "derp26b.tailscale.com", - "IPv4": "167.235.72.200", - "IPv6": "2a01:4f8:1c1c:47b6::1", - "CanPort80": true - } - ] - }, - "27": { - "RegionID": 27, - "RegionCode": "iad", - "RegionName": "Ashburn", - "Latitude": 39.03, - "Longitude": -77.471111, - "Nodes": [ - { - "Name": "27d", - "RegionID": 27, - "HostName": "derp27d.tailscale.com", - "IPv4": "178.156.152.106", - "IPv6": "2a01:4ff:f0:3c8e::1", - "CanPort80": true - }, - { - "Name": "27c", - "RegionID": 27, - "HostName": "derp27c.tailscale.com", - "IPv4": "178.156.152.91", - "IPv6": "2a01:4ff:f0:3913::1", - "CanPort80": true - }, - { - "Name": "27e", - "RegionID": 27, - "HostName": "derp27e.tailscale.com", - "IPv4": "178.156.134.232", - "IPv6": "2a01:4ff:f0:28d4::1", - "CanPort80": true - }, - { - "Name": "27b", - "RegionID": 27, - "HostName": "derp27b.tailscale.com", - "IPv4": "5.161.218.233", - "IPv6": "2a01:4ff:f0:3db9::1", - "CanPort80": true - } - ] - }, - "28": { - "RegionID": 28, - "RegionCode": "hel", - "RegionName": "Helsinki", - "Latitude": 60.170833, - "Longitude": 24.9375, - "Nodes": [ - { - "Name": "28c", - "RegionID": 28, - "HostName": "derp28c.tailscale.com", - "IPv4": "95.217.2.165", - "IPv6": "2a01:4f9:c012:cd74::1", - "CanPort80": true - }, - { - "Name": "28d", - "RegionID": 28, - "HostName": "derp28d.tailscale.com", - "IPv4": "157.180.28.32", - "IPv6": "2a01:4f9:c012:2e5b::1", - "CanPort80": true - }, - { - "Name": "28b", - "RegionID": 28, - "HostName": "derp28b.tailscale.com", - "IPv4": "65.109.143.62", - "IPv6": "2a01:4f9:c012:d55c::1", - "CanPort80": true - } - ] - }, - "3": { - "RegionID": 3, - "RegionCode": "sin", - "RegionName": "Singapore", - "Latitude": 1.3521, - "Longitude": 103.8198, - "Nodes": [ - { - "Name": "3g", - "RegionID": 3, - "HostName": "derp3g.tailscale.com", - "IPv4": "172.237.72.79", - "IPv6": "2600:3c15::2000:adff:fe08:6fab", - "CanPort80": true - }, - { - "Name": "3f", - "RegionID": 3, - "HostName": "derp3f.tailscale.com", - "IPv4": "172.237.72.8", - "IPv6": "2600:3c15::2000:53ff:fe48:a668", - "CanPort80": true - }, - { - "Name": "3h", - "RegionID": 3, - "HostName": "derp3h.tailscale.com", - "IPv4": "172.237.66.30", - "IPv6": "2600:3c15::2000:3dff:fe44:50aa", - "CanPort80": true - }, - { - "Name": "3e", - "RegionID": 3, - "HostName": "derp3e.tailscale.com", - "IPv4": "172.237.72.43", - "IPv6": "2600:3c15::2000:6cff:fee4:d799", - "CanPort80": true - } - ] - }, - "4": { - "RegionID": 4, - "RegionCode": "fra", - "RegionName": "Frankfurt", - "Latitude": 50.1109, - "Longitude": 8.6821, - "Nodes": [ - { - "Name": "4h", - "RegionID": 4, - "HostName": "derp4h.tailscale.com", - "IPv4": "185.40.234.77", - "IPv6": "2a00:dd80:20::bcf", - "CanPort80": true - }, - { - "Name": "4g", - "RegionID": 4, - "HostName": "derp4g.tailscale.com", - "IPv4": "185.40.234.113", - "IPv6": "2a00:dd80:20::8f", - "CanPort80": true - }, - { - "Name": "4i", - "RegionID": 4, - "HostName": "derp4i.tailscale.com", - "IPv4": "185.40.234.53", - "IPv6": "2a00:dd80:20::8a6", - "CanPort80": true - }, - { - "Name": "4f", - "RegionID": 4, - "HostName": "derp4f.tailscale.com", - "IPv4": "185.40.234.219", - "IPv6": "2a00:dd80:20::a25", - "CanPort80": true - } - ] - }, - "5": { - "RegionID": 5, - "RegionCode": "syd", - "RegionName": "Sydney", - "Latitude": -33.867778, - "Longitude": 151.21, - "Nodes": [ - { - "Name": "5f", - "RegionID": 5, - "HostName": "derp5f.tailscale.com", - "IPv4": "172.105.166.103", - "IPv6": "2400:8907::2000:ccff:fe1f:80da", - "CanPort80": true - }, - { - "Name": "5g", - "RegionID": 5, - "HostName": "derp5g.tailscale.com", - "IPv4": "172.105.169.57", - "IPv6": "2400:8907::2000:2fff:fea7:57f4", - "CanPort80": true - }, - { - "Name": "5e", - "RegionID": 5, - "HostName": "derp5e.tailscale.com", - "IPv4": "172.105.179.230", - "IPv6": "2400:8907::2000:ceff:fe8d:4f4e", - "CanPort80": true - } - ] - }, - "6": { - "RegionID": 6, - "RegionCode": "blr", - "RegionName": "Bengaluru", - "Latitude": 12.9716, - "Longitude": 77.5946, - "Nodes": [ - { - "Name": "6a", - "RegionID": 6, - "HostName": "derp6.tailscale.com", - "IPv4": "68.183.90.120", - "IPv6": "2400:6180:100:d0::982:d001", - "CanPort80": true - } - ] - }, - "7": { - "RegionID": 7, - "RegionCode": "tok", - "RegionName": "Tokyo", - "Latitude": 35.6764, - "Longitude": 139.65, - "Nodes": [ - { - "Name": "7g", - "RegionID": 7, - "HostName": "derp7g.tailscale.com", - "IPv4": "172.238.6.179", - "IPv6": "2600:3c18::2000:3fff:fe80:3ebd", - "CanPort80": true - }, - { - "Name": "7f", - "RegionID": 7, - "HostName": "derp7f.tailscale.com", - "IPv4": "172.238.6.34", - "IPv6": "2600:3c18::2000:acff:fe8e:3ed5", - "CanPort80": true - }, - { - "Name": "7h", - "RegionID": 7, - "HostName": "derp7h.tailscale.com", - "IPv4": "172.237.28.183", - "IPv6": "2600:3c18::2000:b1ff:fea9:4560", - "CanPort80": true - }, - { - "Name": "7e", - "RegionID": 7, - "HostName": "derp7e.tailscale.com", - "IPv4": "172.238.6.180", - "IPv6": "2600:3c18::2000:60ff:fe0f:6e83", - "STUNOnly": true, - "CanPort80": true - } - ] - }, - "8": { - "RegionID": 8, - "RegionCode": "lhr", - "RegionName": "London", - "Latitude": 51.5072, - "Longitude": 0.1276, - "Nodes": [ - { - "Name": "8f", - "RegionID": 8, - "HostName": "derp8f.tailscale.com", - "IPv4": "176.58.88.183", - "IPv6": "2a00:dd80:3a::dfa", - "CanPort80": true - }, - { - "Name": "8g", - "RegionID": 8, - "HostName": "derp8g.tailscale.com", - "IPv4": "176.58.92.254", - "IPv6": "2a00:dd80:3a::ed", - "CanPort80": true - }, - { - "Name": "8e", - "RegionID": 8, - "HostName": "derp8e.tailscale.com", - "IPv4": "176.58.92.144", - "IPv6": "2a00:dd80:3a::b33", - "CanPort80": true - } - ] - }, - "9": { - "RegionID": 9, - "RegionCode": "dfw", - "RegionName": "Dallas", - "Latitude": 32.779167, - "Longitude": -96.808889, - "Nodes": [ - { - "Name": "9e", - "RegionID": 9, - "HostName": "derp9e.tailscale.com", - "IPv4": "192.73.248.83", - "IPv6": "2607:f740:100::359", - "CanPort80": true - }, - { - "Name": "9f", - "RegionID": 9, - "HostName": "derp9f.tailscale.com", - "IPv4": "209.177.156.197", - "IPv6": "2607:f740:100::cad", - "CanPort80": true - }, - { - "Name": "9d", - "RegionID": 9, - "HostName": "derp9d.tailscale.com", - "IPv4": "209.177.156.94", - "IPv6": "2607:f740:100::c05", - "CanPort80": true - } - ] - } - } - }, - "DisplayMessages": null, - "TKAEnabled": false, - "TKAHead": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", - "Domain": "kratail2tid@passkey", - "DomainAuditLogID": "", - "UserProfiles": { - "7489538288452506": { - "ID": 7489538288452506, - "LoginName": "subnet-router.tail78f774.ts.net", - "DisplayName": "subnet-router" - } - } + "PacketFilterRules": 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.124.195.93": { - "peer_name": "exit-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-client/tailscaled.sock whois --json 100.124.195.93", - "response": null - }, - "100.116.18.24": { - "peer_name": "exit-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-client/tailscaled.sock whois --json 100.116.18.24", - "response": null - }, - "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.107.162.14": { - "peer_name": "group-a-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-client/tailscaled.sock whois --json 100.107.162.14", - "response": null - }, - "100.77.135.18": { - "peer_name": "group-b-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-client/tailscaled.sock whois --json 100.77.135.18", - "response": null - }, - "100.105.127.107": { - "peer_name": "multi-exit-router", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-client/tailscaled.sock whois --json 100.105.127.107", - "response": null - }, - "100.109.43.124": { - "peer_name": "router-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-client/tailscaled.sock whois --json 100.109.43.124", - "response": null - }, - "100.65.172.123": { - "peer_name": "router-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-client/tailscaled.sock whois --json 100.65.172.123", - "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 - } - }, "netmap": { - "SelfNode": { - "ID": 4031348162889210, - "StableID": "nf7BTTgoUY11CNTRL", - "Name": "tagged-client.tail78f774.ts.net.", - "User": 4031348162889210, - "Key": "nodekey:3011e53353e49142ea56ae11f81e0dceae0d667093d04ee086dcb1e9c5d3c844", - "DiscoKey": "discokey:64af337a7e8b61dce500da3b8f7d0a95fc6fe0e57c2f9e57b9b484a9b4acbe1e", - "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:47143", "10.65.0.27:47143", "172.17.0.1:47143"], - "Hostinfo": { - "Hostname": "tagged-client", - "RequestTags": ["tag:client"], - "Services": [ - { "Proto": "peerapi4", "Port": 41378 }, - { "Proto": "peerapi6", "Port": 41378 }, - { "Proto": "peerapi-dns-proxy", "Port": 1 } - ] - }, - "Created": "2026-02-23T00:13:11.017324028Z", - "Tags": ["tag:client"], - "MachineAuthorized": true, - "CapMap": { - "https://tailscale.com/cap/file-sharing": null, - "https://tailscale.com/cap/is-owner": null, - "https://tailscale.com/cap/ssh": null, - "https://tailscale.com/cap/tailnet-lock": null, - "probe-udp-lifetime": null, - "ssh-behavior-v1": null, - "ssh-env-vars": null, - "store-appc-routes": null, - "tailnet-display-name": ["kratail2tid@passkey"] - }, - "ComputedName": "tagged-client", - "ComputedNameWithHost": "tagged-client" - }, - "AllCaps": [ - "https://tailscale.com/cap/file-sharing", - "ssh-behavior-v1", - "ssh-env-vars", - "https://tailscale.com/cap/ssh", - "probe-udp-lifetime", - "store-appc-routes", - "https://tailscale.com/cap/tailnet-lock", - "tailnet-display-name", - "https://tailscale.com/cap/is-owner" - ], - "NodeKey": "nodekey:3011e53353e49142ea56ae11f81e0dceae0d667093d04ee086dcb1e9c5d3c844", - "MachineKey": "mkey:92af46ce21e67878315fe620545c207854ab6cec2d03adc106c50f64f9692711", "Peers": [], - "DNS": { - "Routes": { - "tail78f774.ts.net.": null, - "ts.net.": [{ "Addr": "199.247.155.53" }, { "Addr": "2620:111:8007::53" }] - }, - "Domains": ["tail78f774.ts.net"], - "Proxied": true, - "ExitNodeFilteredSet": [".ts.net", ".tailscale.net"] - }, - "PacketFilter": [], - "PacketFilterRules": null, - "SSHPolicy": { "rules": [] }, - "CollectServices": false, - "DERPMap": { - "Regions": { - "1": { - "RegionID": 1, - "RegionCode": "nyc", - "RegionName": "New York City", - "Latitude": 40.7128, - "Longitude": -74.006, - "Nodes": [ - { - "Name": "1h", - "RegionID": 1, - "HostName": "derp1h.tailscale.com", - "IPv4": "199.38.181.93", - "IPv6": "2607:f740:f::afd", - "CanPort80": true - }, - { - "Name": "1g", - "RegionID": 1, - "HostName": "derp1g.tailscale.com", - "IPv4": "209.177.145.120", - "IPv6": "2607:f740:f::3eb", - "CanPort80": true - }, - { - "Name": "1i", - "RegionID": 1, - "HostName": "derp1i.tailscale.com", - "IPv4": "199.38.181.103", - "IPv6": "2607:f740:f::e19", - "CanPort80": true - }, - { - "Name": "1f", - "RegionID": 1, - "HostName": "derp1f.tailscale.com", - "IPv4": "199.38.181.104", - "IPv6": "2607:f740:f::bc", - "CanPort80": true - } - ] - }, - "10": { - "RegionID": 10, - "RegionCode": "sea", - "RegionName": "Seattle", - "Latitude": 47.609722, - "Longitude": -122.333056, - "Nodes": [ - { - "Name": "10c", - "RegionID": 10, - "HostName": "derp10c.tailscale.com", - "IPv4": "192.73.240.121", - "IPv6": "2607:f740:14::40c", - "CanPort80": true - }, - { - "Name": "10d", - "RegionID": 10, - "HostName": "derp10d.tailscale.com", - "IPv4": "192.73.240.132", - "IPv6": "2607:f740:14::500", - "CanPort80": true - }, - { - "Name": "10b", - "RegionID": 10, - "HostName": "derp10b.tailscale.com", - "IPv4": "192.73.240.161", - "IPv6": "2607:f740:14::61c", - "CanPort80": true - } - ] - }, - "11": { - "RegionID": 11, - "RegionCode": "sao", - "RegionName": "São Paulo", - "Latitude": -23.55, - "Longitude": -46.633333, - "Nodes": [ - { - "Name": "11f", - "RegionID": 11, - "HostName": "derp11f.tailscale.com", - "IPv4": "172.237.61.197", - "IPv6": "2600:3c0d::2000:3bff:fe44:6166", - "CanPort80": true - }, - { - "Name": "11g", - "RegionID": 11, - "HostName": "derp11g.tailscale.com", - "IPv4": "172.237.61.190", - "IPv6": "2600:3c0d::2000:62ff:febe:2e67", - "CanPort80": true - }, - { - "Name": "11e", - "RegionID": 11, - "HostName": "derp11e.tailscale.com", - "IPv4": "172.237.61.194", - "IPv6": "2600:3c0d::2000:d2ff:fe43:1790", - "CanPort80": true - } - ] - }, - "12": { - "RegionID": 12, - "RegionCode": "ord", - "RegionName": "Chicago", - "Latitude": 41.881944, - "Longitude": -87.627778, - "Nodes": [ - { - "Name": "12e", - "RegionID": 12, - "HostName": "derp12e.tailscale.com", - "IPv4": "209.177.158.15", - "IPv6": "2607:f740:e::b17", - "CanPort80": true - }, - { - "Name": "12f", - "RegionID": 12, - "HostName": "derp12f.tailscale.com", - "IPv4": "199.38.182.118", - "IPv6": "2607:f740:e::4c8", - "CanPort80": true - }, - { - "Name": "12d", - "RegionID": 12, - "HostName": "derp12d.tailscale.com", - "IPv4": "209.177.158.246", - "IPv6": "2607:f740:e::811", - "CanPort80": true - } - ] - }, - "13": { - "RegionID": 13, - "RegionCode": "den", - "RegionName": "Denver", - "Latitude": 39.7392, - "Longitude": -104.9849, - "Nodes": [ - { - "Name": "13c", - "RegionID": 13, - "HostName": "derp13c.tailscale.com", - "IPv4": "192.73.242.28", - "IPv6": "2607:f740:16::5c", - "CanPort80": true - }, - { - "Name": "13d", - "RegionID": 13, - "HostName": "derp13d.tailscale.com", - "IPv4": "192.73.242.204", - "IPv6": "2607:f740:16::c23", - "CanPort80": true - }, - { - "Name": "13b", - "RegionID": 13, - "HostName": "derp13b.tailscale.com", - "IPv4": "192.73.242.187", - "IPv6": "2607:f740:16::640", - "CanPort80": true - } - ] - }, - "14": { - "RegionID": 14, - "RegionCode": "ams", - "RegionName": "Amsterdam", - "Latitude": 52.372778, - "Longitude": 4.893611, - "Nodes": [ - { - "Name": "14c", - "RegionID": 14, - "HostName": "derp14c.tailscale.com", - "IPv4": "176.58.93.147", - "IPv6": "2a00:dd80:3c::b09", - "CanPort80": true - }, - { - "Name": "14d", - "RegionID": 14, - "HostName": "derp14d.tailscale.com", - "IPv4": "176.58.93.154", - "IPv6": "2a00:dd80:3c::3d5", - "CanPort80": true - }, - { - "Name": "14b", - "RegionID": 14, - "HostName": "derp14b.tailscale.com", - "IPv4": "176.58.93.248", - "IPv6": "2a00:dd80:3c::807", - "CanPort80": true - } - ] - }, - "15": { - "RegionID": 15, - "RegionCode": "jnb", - "RegionName": "Johannesburg", - "Latitude": -26.204444, - "Longitude": 28.045556, - "Nodes": [ - { - "Name": "15c", - "RegionID": 15, - "HostName": "derp15c.tailscale.com", - "IPv4": "102.67.165.185", - "IPv6": "2c0f:edb0:0:10::b59", - "CanPort80": true - }, - { - "Name": "15d", - "RegionID": 15, - "HostName": "derp15d.tailscale.com", - "IPv4": "102.67.165.36", - "IPv6": "2c0f:edb0:0:10::599", - "CanPort80": true - }, - { - "Name": "15b", - "RegionID": 15, - "HostName": "derp15b.tailscale.com", - "IPv4": "102.67.165.90", - "IPv6": "2c0f:edb0:0:10::963", - "CanPort80": true - } - ] - }, - "16": { - "RegionID": 16, - "RegionCode": "mia", - "RegionName": "Miami", - "Latitude": 25.78, - "Longitude": -80.21, - "Nodes": [ - { - "Name": "16c", - "RegionID": 16, - "HostName": "derp16c.tailscale.com", - "IPv4": "192.73.243.229", - "IPv6": "2607:f740:17::4e4", - "CanPort80": true - }, - { - "Name": "16d", - "RegionID": 16, - "HostName": "derp16d.tailscale.com", - "IPv4": "192.73.243.141", - "IPv6": "2607:f740:17::475", - "CanPort80": true - }, - { - "Name": "16b", - "RegionID": 16, - "HostName": "derp16b.tailscale.com", - "IPv4": "192.73.243.135", - "IPv6": "2607:f740:17::476", - "CanPort80": true - } - ] - }, - "17": { - "RegionID": 17, - "RegionCode": "lax", - "RegionName": "Los Angeles", - "Latitude": 34.05, - "Longitude": -118.25, - "Nodes": [ - { - "Name": "17c", - "RegionID": 17, - "HostName": "derp17c.tailscale.com", - "IPv4": "208.111.40.12", - "IPv6": "2607:f740:c::10", - "CanPort80": true - }, - { - "Name": "17d", - "RegionID": 17, - "HostName": "derp17d.tailscale.com", - "IPv4": "208.111.40.216", - "IPv6": "2607:f740:c::e1b", - "CanPort80": true - }, - { - "Name": "17b", - "RegionID": 17, - "HostName": "derp17b.tailscale.com", - "IPv4": "192.73.244.245", - "IPv6": "2607:f740:c::646", - "CanPort80": true - } - ] - }, - "18": { - "RegionID": 18, - "RegionCode": "par", - "RegionName": "Paris", - "Latitude": 48.856667, - "Longitude": 2.352222, - "Nodes": [ - { - "Name": "18c", - "RegionID": 18, - "HostName": "derp18c.tailscale.com", - "IPv4": "176.58.90.207", - "IPv6": "2a00:dd80:3e::c19", - "CanPort80": true - }, - { - "Name": "18d", - "RegionID": 18, - "HostName": "derp18d.tailscale.com", - "IPv4": "176.58.90.104", - "IPv6": "2a00:dd80:3e::f2e", - "CanPort80": true - }, - { - "Name": "18b", - "RegionID": 18, - "HostName": "derp18b.tailscale.com", - "IPv4": "176.58.90.147", - "IPv6": "2a00:dd80:3e::363", - "CanPort80": true - } - ] - }, - "19": { - "RegionID": 19, - "RegionCode": "mad", - "RegionName": "Madrid", - "Latitude": 40.416944, - "Longitude": -3.703333, - "Nodes": [ - { - "Name": "19c", - "RegionID": 19, - "HostName": "derp19c.tailscale.com", - "IPv4": "45.159.97.61", - "IPv6": "2a00:dd80:14:10::20", - "CanPort80": true - }, - { - "Name": "19d", - "RegionID": 19, - "HostName": "derp19d.tailscale.com", - "IPv4": "45.159.97.233", - "IPv6": "2a00:dd80:14:10::34a", - "CanPort80": true - }, - { - "Name": "19b", - "RegionID": 19, - "HostName": "derp19b.tailscale.com", - "IPv4": "45.159.97.144", - "IPv6": "2a00:dd80:14:10::335", - "CanPort80": true - } - ] - }, - "2": { - "RegionID": 2, - "RegionCode": "sfo", - "RegionName": "San Francisco", - "Latitude": 37.7775, - "Longitude": -122.416389, - "Nodes": [ - { - "Name": "2e", - "RegionID": 2, - "HostName": "derp2e.tailscale.com", - "IPv4": "192.73.252.134", - "IPv6": "2607:f740:0:3f::44c", - "CanPort80": true - }, - { - "Name": "2f", - "RegionID": 2, - "HostName": "derp2f.tailscale.com", - "IPv4": "208.111.34.178", - "IPv6": "2607:f740:0:3f::f4", - "CanPort80": true - }, - { - "Name": "2d", - "RegionID": 2, - "HostName": "derp2d.tailscale.com", - "IPv4": "192.73.252.65", - "IPv6": "2607:f740:0:3f::287", - "CanPort80": true - } - ] - }, - "20": { - "RegionID": 20, - "RegionCode": "hkg", - "RegionName": "Hong Kong", - "Latitude": 22.3193, - "Longitude": 114.1694, - "Nodes": [ - { - "Name": "20c", - "RegionID": 20, - "HostName": "derp20c.tailscale.com", - "IPv4": "205.147.105.30", - "IPv6": "2403:2500:8000:1::5fb", - "CanPort80": true - }, - { - "Name": "20d", - "RegionID": 20, - "HostName": "derp20d.tailscale.com", - "IPv4": "205.147.105.78", - "IPv6": "2403:2500:8000:1::e9a", - "CanPort80": true - }, - { - "Name": "20b", - "RegionID": 20, - "HostName": "derp20b.tailscale.com", - "IPv4": "103.6.84.152", - "IPv6": "2403:2500:8000:1::ef6", - "CanPort80": true - } - ] - }, - "21": { - "RegionID": 21, - "RegionCode": "tor", - "RegionName": "Toronto", - "Latitude": 43.741667, - "Longitude": -79.373333, - "Nodes": [ - { - "Name": "21c", - "RegionID": 21, - "HostName": "derp21c.tailscale.com", - "IPv4": "162.248.221.215", - "IPv6": "2607:f740:50::f10", - "CanPort80": true - }, - { - "Name": "21d", - "RegionID": 21, - "HostName": "derp21d.tailscale.com", - "IPv4": "162.248.221.248", - "IPv6": "2607:f740:50::ca4", - "CanPort80": true - }, - { - "Name": "21b", - "RegionID": 21, - "HostName": "derp21b.tailscale.com", - "IPv4": "162.248.221.199", - "IPv6": "2607:f740:50::1d1", - "CanPort80": true - } - ] - }, - "22": { - "RegionID": 22, - "RegionCode": "waw", - "RegionName": "Warsaw", - "Latitude": 52.23, - "Longitude": 21.011111, - "Nodes": [ - { - "Name": "22c", - "RegionID": 22, - "HostName": "derp22c.tailscale.com", - "IPv4": "45.159.98.253", - "IPv6": "2a00:dd80:40:100::3f", - "CanPort80": true - }, - { - "Name": "22d", - "RegionID": 22, - "HostName": "derp22d.tailscale.com", - "IPv4": "45.159.98.145", - "IPv6": "2a00:dd80:40:100::211", - "CanPort80": true - }, - { - "Name": "22b", - "RegionID": 22, - "HostName": "derp22b.tailscale.com", - "IPv4": "45.159.98.196", - "IPv6": "2a00:dd80:40:100::316", - "CanPort80": true - } - ] - }, - "23": { - "RegionID": 23, - "RegionCode": "dbi", - "RegionName": "Dubai", - "Latitude": 25.263056, - "Longitude": 55.297222, - "Nodes": [ - { - "Name": "23c", - "RegionID": 23, - "HostName": "derp23c.tailscale.com", - "IPv4": "185.34.3.207", - "IPv6": "2a00:dd80:3f:100::a50", - "CanPort80": true - }, - { - "Name": "23d", - "RegionID": 23, - "HostName": "derp23d.tailscale.com", - "IPv4": "185.34.3.75", - "IPv6": "2a00:dd80:3f:100::97e", - "CanPort80": true - }, - { - "Name": "23b", - "RegionID": 23, - "HostName": "derp23b.tailscale.com", - "IPv4": "185.34.3.232", - "IPv6": "2a00:dd80:3f:100::76f", - "CanPort80": true - } - ] - }, - "24": { - "RegionID": 24, - "RegionCode": "hnl", - "RegionName": "Honolulu", - "Latitude": 21.306944, - "Longitude": -157.858333, - "Nodes": [ - { - "Name": "24c", - "RegionID": 24, - "HostName": "derp24c.tailscale.com", - "IPv4": "208.83.233.233", - "IPv6": "2001:19f0:c000:c591:5400:04ff:fe26:2c5f", - "CanPort80": true - }, - { - "Name": "24d", - "RegionID": 24, - "HostName": "derp24d.tailscale.com", - "IPv4": "208.72.155.133", - "IPv6": "2001:19f0:c000:c564:5400:04ff:fe26:2ba8", - "CanPort80": true - }, - { - "Name": "24b", - "RegionID": 24, - "HostName": "derp24b.tailscale.com", - "IPv4": "208.83.234.151", - "IPv6": "2001:19f0:c000:c586:5400:04ff:fe26:2ba6", - "CanPort80": true - } - ] - }, - "25": { - "RegionID": 25, - "RegionCode": "nai", - "RegionName": "Nairobi", - "Latitude": -1.286389, - "Longitude": 36.817222, - "Nodes": [ - { - "Name": "25c", - "RegionID": 25, - "HostName": "derp25c.tailscale.com", - "IPv4": "102.67.167.37", - "IPv6": "2c0f:edb0:2000:1::2c7", - "CanPort80": true - }, - { - "Name": "25d", - "RegionID": 25, - "HostName": "derp25d.tailscale.com", - "IPv4": "102.67.167.188", - "IPv6": "2c0f:edb0:2000:1::188", - "CanPort80": true - }, - { - "Name": "25b", - "RegionID": 25, - "HostName": "derp25b.tailscale.com", - "IPv4": "102.67.167.245", - "IPv6": "2c0f:edb0:2000:1::2e9", - "CanPort80": true - } - ] - }, - "26": { - "RegionID": 26, - "RegionCode": "nue", - "RegionName": "Nuremberg", - "Latitude": 49.453889, - "Longitude": 11.0775, - "Nodes": [ - { - "Name": "26c", - "RegionID": 26, - "HostName": "derp26c.tailscale.com", - "IPv4": "49.12.193.137", - "IPv6": "2a01:4f8:1c1c:5c70::1", - "CanPort80": true - }, - { - "Name": "26d", - "RegionID": 26, - "HostName": "derp26d.tailscale.com", - "IPv4": "49.13.204.141", - "IPv6": "2a01:4f8:1c0c:7d06::1", - "CanPort80": true - }, - { - "Name": "26b", - "RegionID": 26, - "HostName": "derp26b.tailscale.com", - "IPv4": "167.235.72.200", - "IPv6": "2a01:4f8:1c1c:47b6::1", - "CanPort80": true - } - ] - }, - "27": { - "RegionID": 27, - "RegionCode": "iad", - "RegionName": "Ashburn", - "Latitude": 39.03, - "Longitude": -77.471111, - "Nodes": [ - { - "Name": "27d", - "RegionID": 27, - "HostName": "derp27d.tailscale.com", - "IPv4": "178.156.152.106", - "IPv6": "2a01:4ff:f0:3c8e::1", - "CanPort80": true - }, - { - "Name": "27c", - "RegionID": 27, - "HostName": "derp27c.tailscale.com", - "IPv4": "178.156.152.91", - "IPv6": "2a01:4ff:f0:3913::1", - "CanPort80": true - }, - { - "Name": "27e", - "RegionID": 27, - "HostName": "derp27e.tailscale.com", - "IPv4": "178.156.134.232", - "IPv6": "2a01:4ff:f0:28d4::1", - "CanPort80": true - }, - { - "Name": "27b", - "RegionID": 27, - "HostName": "derp27b.tailscale.com", - "IPv4": "5.161.218.233", - "IPv6": "2a01:4ff:f0:3db9::1", - "CanPort80": true - } - ] - }, - "28": { - "RegionID": 28, - "RegionCode": "hel", - "RegionName": "Helsinki", - "Latitude": 60.170833, - "Longitude": 24.9375, - "Nodes": [ - { - "Name": "28c", - "RegionID": 28, - "HostName": "derp28c.tailscale.com", - "IPv4": "95.217.2.165", - "IPv6": "2a01:4f9:c012:cd74::1", - "CanPort80": true - }, - { - "Name": "28d", - "RegionID": 28, - "HostName": "derp28d.tailscale.com", - "IPv4": "157.180.28.32", - "IPv6": "2a01:4f9:c012:2e5b::1", - "CanPort80": true - }, - { - "Name": "28b", - "RegionID": 28, - "HostName": "derp28b.tailscale.com", - "IPv4": "65.109.143.62", - "IPv6": "2a01:4f9:c012:d55c::1", - "CanPort80": true - } - ] - }, - "3": { - "RegionID": 3, - "RegionCode": "sin", - "RegionName": "Singapore", - "Latitude": 1.3521, - "Longitude": 103.8198, - "Nodes": [ - { - "Name": "3g", - "RegionID": 3, - "HostName": "derp3g.tailscale.com", - "IPv4": "172.237.72.79", - "IPv6": "2600:3c15::2000:adff:fe08:6fab", - "CanPort80": true - }, - { - "Name": "3f", - "RegionID": 3, - "HostName": "derp3f.tailscale.com", - "IPv4": "172.237.72.8", - "IPv6": "2600:3c15::2000:53ff:fe48:a668", - "CanPort80": true - }, - { - "Name": "3h", - "RegionID": 3, - "HostName": "derp3h.tailscale.com", - "IPv4": "172.237.66.30", - "IPv6": "2600:3c15::2000:3dff:fe44:50aa", - "CanPort80": true - }, - { - "Name": "3e", - "RegionID": 3, - "HostName": "derp3e.tailscale.com", - "IPv4": "172.237.72.43", - "IPv6": "2600:3c15::2000:6cff:fee4:d799", - "CanPort80": true - } - ] - }, - "4": { - "RegionID": 4, - "RegionCode": "fra", - "RegionName": "Frankfurt", - "Latitude": 50.1109, - "Longitude": 8.6821, - "Nodes": [ - { - "Name": "4h", - "RegionID": 4, - "HostName": "derp4h.tailscale.com", - "IPv4": "185.40.234.77", - "IPv6": "2a00:dd80:20::bcf", - "CanPort80": true - }, - { - "Name": "4g", - "RegionID": 4, - "HostName": "derp4g.tailscale.com", - "IPv4": "185.40.234.113", - "IPv6": "2a00:dd80:20::8f", - "CanPort80": true - }, - { - "Name": "4i", - "RegionID": 4, - "HostName": "derp4i.tailscale.com", - "IPv4": "185.40.234.53", - "IPv6": "2a00:dd80:20::8a6", - "CanPort80": true - }, - { - "Name": "4f", - "RegionID": 4, - "HostName": "derp4f.tailscale.com", - "IPv4": "185.40.234.219", - "IPv6": "2a00:dd80:20::a25", - "CanPort80": true - } - ] - }, - "5": { - "RegionID": 5, - "RegionCode": "syd", - "RegionName": "Sydney", - "Latitude": -33.867778, - "Longitude": 151.21, - "Nodes": [ - { - "Name": "5f", - "RegionID": 5, - "HostName": "derp5f.tailscale.com", - "IPv4": "172.105.166.103", - "IPv6": "2400:8907::2000:ccff:fe1f:80da", - "CanPort80": true - }, - { - "Name": "5g", - "RegionID": 5, - "HostName": "derp5g.tailscale.com", - "IPv4": "172.105.169.57", - "IPv6": "2400:8907::2000:2fff:fea7:57f4", - "CanPort80": true - }, - { - "Name": "5e", - "RegionID": 5, - "HostName": "derp5e.tailscale.com", - "IPv4": "172.105.179.230", - "IPv6": "2400:8907::2000:ceff:fe8d:4f4e", - "CanPort80": true - } - ] - }, - "6": { - "RegionID": 6, - "RegionCode": "blr", - "RegionName": "Bengaluru", - "Latitude": 12.9716, - "Longitude": 77.5946, - "Nodes": [ - { - "Name": "6a", - "RegionID": 6, - "HostName": "derp6.tailscale.com", - "IPv4": "68.183.90.120", - "IPv6": "2400:6180:100:d0::982:d001", - "CanPort80": true - } - ] - }, - "7": { - "RegionID": 7, - "RegionCode": "tok", - "RegionName": "Tokyo", - "Latitude": 35.6764, - "Longitude": 139.65, - "Nodes": [ - { - "Name": "7g", - "RegionID": 7, - "HostName": "derp7g.tailscale.com", - "IPv4": "172.238.6.179", - "IPv6": "2600:3c18::2000:3fff:fe80:3ebd", - "CanPort80": true - }, - { - "Name": "7f", - "RegionID": 7, - "HostName": "derp7f.tailscale.com", - "IPv4": "172.238.6.34", - "IPv6": "2600:3c18::2000:acff:fe8e:3ed5", - "CanPort80": true - }, - { - "Name": "7h", - "RegionID": 7, - "HostName": "derp7h.tailscale.com", - "IPv4": "172.237.28.183", - "IPv6": "2600:3c18::2000:b1ff:fea9:4560", - "CanPort80": true - }, - { - "Name": "7e", - "RegionID": 7, - "HostName": "derp7e.tailscale.com", - "IPv4": "172.238.6.180", - "IPv6": "2600:3c18::2000:60ff:fe0f:6e83", - "STUNOnly": true, - "CanPort80": true - } - ] - }, - "8": { - "RegionID": 8, - "RegionCode": "lhr", - "RegionName": "London", - "Latitude": 51.5072, - "Longitude": 0.1276, - "Nodes": [ - { - "Name": "8f", - "RegionID": 8, - "HostName": "derp8f.tailscale.com", - "IPv4": "176.58.88.183", - "IPv6": "2a00:dd80:3a::dfa", - "CanPort80": true - }, - { - "Name": "8g", - "RegionID": 8, - "HostName": "derp8g.tailscale.com", - "IPv4": "176.58.92.254", - "IPv6": "2a00:dd80:3a::ed", - "CanPort80": true - }, - { - "Name": "8e", - "RegionID": 8, - "HostName": "derp8e.tailscale.com", - "IPv4": "176.58.92.144", - "IPv6": "2a00:dd80:3a::b33", - "CanPort80": true - } - ] - }, - "9": { - "RegionID": 9, - "RegionCode": "dfw", - "RegionName": "Dallas", - "Latitude": 32.779167, - "Longitude": -96.808889, - "Nodes": [ - { - "Name": "9e", - "RegionID": 9, - "HostName": "derp9e.tailscale.com", - "IPv4": "192.73.248.83", - "IPv6": "2607:f740:100::359", - "CanPort80": true - }, - { - "Name": "9f", - "RegionID": 9, - "HostName": "derp9f.tailscale.com", - "IPv4": "209.177.156.197", - "IPv6": "2607:f740:100::cad", - "CanPort80": true - }, - { - "Name": "9d", - "RegionID": 9, - "HostName": "derp9d.tailscale.com", - "IPv4": "209.177.156.94", - "IPv6": "2607:f740:100::c05", - "CanPort80": true - } - ] - } - } - }, - "DisplayMessages": null, - "TKAEnabled": false, - "TKAHead": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", - "Domain": "kratail2tid@passkey", - "DomainAuditLogID": "", - "UserProfiles": { - "4031348162889210": { - "ID": 4031348162889210, - "LoginName": "tagged-client.tail78f774.ts.net", - "DisplayName": "tagged-client" - } - } + "PacketFilterRules": 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.124.195.93": { - "peer_name": "exit-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-prod/tailscaled.sock whois --json 100.124.195.93", - "response": null - }, - "100.116.18.24": { - "peer_name": "exit-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-prod/tailscaled.sock whois --json 100.116.18.24", - "response": null - }, - "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.107.162.14": { - "peer_name": "group-a-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-prod/tailscaled.sock whois --json 100.107.162.14", - "response": null - }, - "100.77.135.18": { - "peer_name": "group-b-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-prod/tailscaled.sock whois --json 100.77.135.18", - "response": null - }, - "100.105.127.107": { - "peer_name": "multi-exit-router", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-prod/tailscaled.sock whois --json 100.105.127.107", - "response": null - }, - "100.109.43.124": { - "peer_name": "router-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-prod/tailscaled.sock whois --json 100.109.43.124", - "response": null - }, - "100.65.172.123": { - "peer_name": "router-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-prod/tailscaled.sock whois --json 100.65.172.123", - "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 - } - }, "netmap": { - "SelfNode": { - "ID": 301794218943819, - "StableID": "neJag6dgM311CNTRL", - "Name": "tagged-prod.tail78f774.ts.net.", - "User": 301794218943819, - "Key": "nodekey:54c79503322a5d0a9701ce19d11963cfff9c05667ac06ef976af86275ba7080e", - "DiscoKey": "discokey:5e4985009b42b7c82ffb2cb5fa735a90f967f6b3f886b71268ebbeffa324556b", - "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:46164", "10.65.0.27:46164", "172.17.0.1:46164"], - "Hostinfo": { - "Hostname": "tagged-prod", - "Services": [ - { "Proto": "peerapi4", "Port": 37678 }, - { "Proto": "peerapi6", "Port": 37678 }, - { "Proto": "peerapi-dns-proxy", "Port": 1 } - ] - }, - "Created": "2026-02-20T14:03:12.89283153Z", - "Tags": ["tag:prod"], - "MachineAuthorized": true, - "CapMap": { - "https://tailscale.com/cap/file-sharing": null, - "https://tailscale.com/cap/is-owner": null, - "https://tailscale.com/cap/ssh": null, - "https://tailscale.com/cap/tailnet-lock": null, - "probe-udp-lifetime": null, - "ssh-behavior-v1": null, - "ssh-env-vars": null, - "store-appc-routes": null, - "tailnet-display-name": ["kratail2tid@passkey"] - }, - "ComputedName": "tagged-prod", - "ComputedNameWithHost": "tagged-prod" - }, - "AllCaps": [ - "https://tailscale.com/cap/is-owner", - "https://tailscale.com/cap/tailnet-lock", - "ssh-env-vars", - "store-appc-routes", - "tailnet-display-name", - "probe-udp-lifetime", - "https://tailscale.com/cap/file-sharing", - "https://tailscale.com/cap/ssh", - "ssh-behavior-v1" - ], - "NodeKey": "nodekey:54c79503322a5d0a9701ce19d11963cfff9c05667ac06ef976af86275ba7080e", - "MachineKey": "mkey:af805e02d1594ab20eaf3e2df5b379eec6453fa649344fcd564b7bae20e46a63", "Peers": [], - "DNS": { - "Routes": { - "tail78f774.ts.net.": null, - "ts.net.": [{ "Addr": "199.247.155.53" }, { "Addr": "2620:111:8007::53" }] - }, - "Domains": ["tail78f774.ts.net"], - "Proxied": true, - "ExitNodeFilteredSet": [".ts.net", ".tailscale.net"] - }, - "PacketFilter": [], - "PacketFilterRules": null, - "SSHPolicy": { "rules": [] }, - "CollectServices": false, - "DERPMap": { - "Regions": { - "1": { - "RegionID": 1, - "RegionCode": "nyc", - "RegionName": "New York City", - "Latitude": 40.7128, - "Longitude": -74.006, - "Nodes": [ - { - "Name": "1h", - "RegionID": 1, - "HostName": "derp1h.tailscale.com", - "IPv4": "199.38.181.93", - "IPv6": "2607:f740:f::afd", - "CanPort80": true - }, - { - "Name": "1g", - "RegionID": 1, - "HostName": "derp1g.tailscale.com", - "IPv4": "209.177.145.120", - "IPv6": "2607:f740:f::3eb", - "CanPort80": true - }, - { - "Name": "1i", - "RegionID": 1, - "HostName": "derp1i.tailscale.com", - "IPv4": "199.38.181.103", - "IPv6": "2607:f740:f::e19", - "CanPort80": true - }, - { - "Name": "1f", - "RegionID": 1, - "HostName": "derp1f.tailscale.com", - "IPv4": "199.38.181.104", - "IPv6": "2607:f740:f::bc", - "CanPort80": true - } - ] - }, - "10": { - "RegionID": 10, - "RegionCode": "sea", - "RegionName": "Seattle", - "Latitude": 47.609722, - "Longitude": -122.333056, - "Nodes": [ - { - "Name": "10c", - "RegionID": 10, - "HostName": "derp10c.tailscale.com", - "IPv4": "192.73.240.121", - "IPv6": "2607:f740:14::40c", - "CanPort80": true - }, - { - "Name": "10d", - "RegionID": 10, - "HostName": "derp10d.tailscale.com", - "IPv4": "192.73.240.132", - "IPv6": "2607:f740:14::500", - "CanPort80": true - }, - { - "Name": "10b", - "RegionID": 10, - "HostName": "derp10b.tailscale.com", - "IPv4": "192.73.240.161", - "IPv6": "2607:f740:14::61c", - "CanPort80": true - } - ] - }, - "11": { - "RegionID": 11, - "RegionCode": "sao", - "RegionName": "São Paulo", - "Latitude": -23.55, - "Longitude": -46.633333, - "Nodes": [ - { - "Name": "11f", - "RegionID": 11, - "HostName": "derp11f.tailscale.com", - "IPv4": "172.237.61.197", - "IPv6": "2600:3c0d::2000:3bff:fe44:6166", - "CanPort80": true - }, - { - "Name": "11g", - "RegionID": 11, - "HostName": "derp11g.tailscale.com", - "IPv4": "172.237.61.190", - "IPv6": "2600:3c0d::2000:62ff:febe:2e67", - "CanPort80": true - }, - { - "Name": "11e", - "RegionID": 11, - "HostName": "derp11e.tailscale.com", - "IPv4": "172.237.61.194", - "IPv6": "2600:3c0d::2000:d2ff:fe43:1790", - "CanPort80": true - } - ] - }, - "12": { - "RegionID": 12, - "RegionCode": "ord", - "RegionName": "Chicago", - "Latitude": 41.881944, - "Longitude": -87.627778, - "Nodes": [ - { - "Name": "12e", - "RegionID": 12, - "HostName": "derp12e.tailscale.com", - "IPv4": "209.177.158.15", - "IPv6": "2607:f740:e::b17", - "CanPort80": true - }, - { - "Name": "12f", - "RegionID": 12, - "HostName": "derp12f.tailscale.com", - "IPv4": "199.38.182.118", - "IPv6": "2607:f740:e::4c8", - "CanPort80": true - }, - { - "Name": "12d", - "RegionID": 12, - "HostName": "derp12d.tailscale.com", - "IPv4": "209.177.158.246", - "IPv6": "2607:f740:e::811", - "CanPort80": true - } - ] - }, - "13": { - "RegionID": 13, - "RegionCode": "den", - "RegionName": "Denver", - "Latitude": 39.7392, - "Longitude": -104.9849, - "Nodes": [ - { - "Name": "13c", - "RegionID": 13, - "HostName": "derp13c.tailscale.com", - "IPv4": "192.73.242.28", - "IPv6": "2607:f740:16::5c", - "CanPort80": true - }, - { - "Name": "13d", - "RegionID": 13, - "HostName": "derp13d.tailscale.com", - "IPv4": "192.73.242.204", - "IPv6": "2607:f740:16::c23", - "CanPort80": true - }, - { - "Name": "13b", - "RegionID": 13, - "HostName": "derp13b.tailscale.com", - "IPv4": "192.73.242.187", - "IPv6": "2607:f740:16::640", - "CanPort80": true - } - ] - }, - "14": { - "RegionID": 14, - "RegionCode": "ams", - "RegionName": "Amsterdam", - "Latitude": 52.372778, - "Longitude": 4.893611, - "Nodes": [ - { - "Name": "14c", - "RegionID": 14, - "HostName": "derp14c.tailscale.com", - "IPv4": "176.58.93.147", - "IPv6": "2a00:dd80:3c::b09", - "CanPort80": true - }, - { - "Name": "14d", - "RegionID": 14, - "HostName": "derp14d.tailscale.com", - "IPv4": "176.58.93.154", - "IPv6": "2a00:dd80:3c::3d5", - "CanPort80": true - }, - { - "Name": "14b", - "RegionID": 14, - "HostName": "derp14b.tailscale.com", - "IPv4": "176.58.93.248", - "IPv6": "2a00:dd80:3c::807", - "CanPort80": true - } - ] - }, - "15": { - "RegionID": 15, - "RegionCode": "jnb", - "RegionName": "Johannesburg", - "Latitude": -26.204444, - "Longitude": 28.045556, - "Nodes": [ - { - "Name": "15c", - "RegionID": 15, - "HostName": "derp15c.tailscale.com", - "IPv4": "102.67.165.185", - "IPv6": "2c0f:edb0:0:10::b59", - "CanPort80": true - }, - { - "Name": "15d", - "RegionID": 15, - "HostName": "derp15d.tailscale.com", - "IPv4": "102.67.165.36", - "IPv6": "2c0f:edb0:0:10::599", - "CanPort80": true - }, - { - "Name": "15b", - "RegionID": 15, - "HostName": "derp15b.tailscale.com", - "IPv4": "102.67.165.90", - "IPv6": "2c0f:edb0:0:10::963", - "CanPort80": true - } - ] - }, - "16": { - "RegionID": 16, - "RegionCode": "mia", - "RegionName": "Miami", - "Latitude": 25.78, - "Longitude": -80.21, - "Nodes": [ - { - "Name": "16c", - "RegionID": 16, - "HostName": "derp16c.tailscale.com", - "IPv4": "192.73.243.229", - "IPv6": "2607:f740:17::4e4", - "CanPort80": true - }, - { - "Name": "16d", - "RegionID": 16, - "HostName": "derp16d.tailscale.com", - "IPv4": "192.73.243.141", - "IPv6": "2607:f740:17::475", - "CanPort80": true - }, - { - "Name": "16b", - "RegionID": 16, - "HostName": "derp16b.tailscale.com", - "IPv4": "192.73.243.135", - "IPv6": "2607:f740:17::476", - "CanPort80": true - } - ] - }, - "17": { - "RegionID": 17, - "RegionCode": "lax", - "RegionName": "Los Angeles", - "Latitude": 34.05, - "Longitude": -118.25, - "Nodes": [ - { - "Name": "17c", - "RegionID": 17, - "HostName": "derp17c.tailscale.com", - "IPv4": "208.111.40.12", - "IPv6": "2607:f740:c::10", - "CanPort80": true - }, - { - "Name": "17d", - "RegionID": 17, - "HostName": "derp17d.tailscale.com", - "IPv4": "208.111.40.216", - "IPv6": "2607:f740:c::e1b", - "CanPort80": true - }, - { - "Name": "17b", - "RegionID": 17, - "HostName": "derp17b.tailscale.com", - "IPv4": "192.73.244.245", - "IPv6": "2607:f740:c::646", - "CanPort80": true - } - ] - }, - "18": { - "RegionID": 18, - "RegionCode": "par", - "RegionName": "Paris", - "Latitude": 48.856667, - "Longitude": 2.352222, - "Nodes": [ - { - "Name": "18c", - "RegionID": 18, - "HostName": "derp18c.tailscale.com", - "IPv4": "176.58.90.207", - "IPv6": "2a00:dd80:3e::c19", - "CanPort80": true - }, - { - "Name": "18d", - "RegionID": 18, - "HostName": "derp18d.tailscale.com", - "IPv4": "176.58.90.104", - "IPv6": "2a00:dd80:3e::f2e", - "CanPort80": true - }, - { - "Name": "18b", - "RegionID": 18, - "HostName": "derp18b.tailscale.com", - "IPv4": "176.58.90.147", - "IPv6": "2a00:dd80:3e::363", - "CanPort80": true - } - ] - }, - "19": { - "RegionID": 19, - "RegionCode": "mad", - "RegionName": "Madrid", - "Latitude": 40.416944, - "Longitude": -3.703333, - "Nodes": [ - { - "Name": "19c", - "RegionID": 19, - "HostName": "derp19c.tailscale.com", - "IPv4": "45.159.97.61", - "IPv6": "2a00:dd80:14:10::20", - "CanPort80": true - }, - { - "Name": "19d", - "RegionID": 19, - "HostName": "derp19d.tailscale.com", - "IPv4": "45.159.97.233", - "IPv6": "2a00:dd80:14:10::34a", - "CanPort80": true - }, - { - "Name": "19b", - "RegionID": 19, - "HostName": "derp19b.tailscale.com", - "IPv4": "45.159.97.144", - "IPv6": "2a00:dd80:14:10::335", - "CanPort80": true - } - ] - }, - "2": { - "RegionID": 2, - "RegionCode": "sfo", - "RegionName": "San Francisco", - "Latitude": 37.7775, - "Longitude": -122.416389, - "Nodes": [ - { - "Name": "2e", - "RegionID": 2, - "HostName": "derp2e.tailscale.com", - "IPv4": "192.73.252.134", - "IPv6": "2607:f740:0:3f::44c", - "CanPort80": true - }, - { - "Name": "2f", - "RegionID": 2, - "HostName": "derp2f.tailscale.com", - "IPv4": "208.111.34.178", - "IPv6": "2607:f740:0:3f::f4", - "CanPort80": true - }, - { - "Name": "2d", - "RegionID": 2, - "HostName": "derp2d.tailscale.com", - "IPv4": "192.73.252.65", - "IPv6": "2607:f740:0:3f::287", - "CanPort80": true - } - ] - }, - "20": { - "RegionID": 20, - "RegionCode": "hkg", - "RegionName": "Hong Kong", - "Latitude": 22.3193, - "Longitude": 114.1694, - "Nodes": [ - { - "Name": "20c", - "RegionID": 20, - "HostName": "derp20c.tailscale.com", - "IPv4": "205.147.105.30", - "IPv6": "2403:2500:8000:1::5fb", - "CanPort80": true - }, - { - "Name": "20d", - "RegionID": 20, - "HostName": "derp20d.tailscale.com", - "IPv4": "205.147.105.78", - "IPv6": "2403:2500:8000:1::e9a", - "CanPort80": true - }, - { - "Name": "20b", - "RegionID": 20, - "HostName": "derp20b.tailscale.com", - "IPv4": "103.6.84.152", - "IPv6": "2403:2500:8000:1::ef6", - "CanPort80": true - } - ] - }, - "21": { - "RegionID": 21, - "RegionCode": "tor", - "RegionName": "Toronto", - "Latitude": 43.741667, - "Longitude": -79.373333, - "Nodes": [ - { - "Name": "21c", - "RegionID": 21, - "HostName": "derp21c.tailscale.com", - "IPv4": "162.248.221.215", - "IPv6": "2607:f740:50::f10", - "CanPort80": true - }, - { - "Name": "21d", - "RegionID": 21, - "HostName": "derp21d.tailscale.com", - "IPv4": "162.248.221.248", - "IPv6": "2607:f740:50::ca4", - "CanPort80": true - }, - { - "Name": "21b", - "RegionID": 21, - "HostName": "derp21b.tailscale.com", - "IPv4": "162.248.221.199", - "IPv6": "2607:f740:50::1d1", - "CanPort80": true - } - ] - }, - "22": { - "RegionID": 22, - "RegionCode": "waw", - "RegionName": "Warsaw", - "Latitude": 52.23, - "Longitude": 21.011111, - "Nodes": [ - { - "Name": "22c", - "RegionID": 22, - "HostName": "derp22c.tailscale.com", - "IPv4": "45.159.98.253", - "IPv6": "2a00:dd80:40:100::3f", - "CanPort80": true - }, - { - "Name": "22d", - "RegionID": 22, - "HostName": "derp22d.tailscale.com", - "IPv4": "45.159.98.145", - "IPv6": "2a00:dd80:40:100::211", - "CanPort80": true - }, - { - "Name": "22b", - "RegionID": 22, - "HostName": "derp22b.tailscale.com", - "IPv4": "45.159.98.196", - "IPv6": "2a00:dd80:40:100::316", - "CanPort80": true - } - ] - }, - "23": { - "RegionID": 23, - "RegionCode": "dbi", - "RegionName": "Dubai", - "Latitude": 25.263056, - "Longitude": 55.297222, - "Nodes": [ - { - "Name": "23c", - "RegionID": 23, - "HostName": "derp23c.tailscale.com", - "IPv4": "185.34.3.207", - "IPv6": "2a00:dd80:3f:100::a50", - "CanPort80": true - }, - { - "Name": "23d", - "RegionID": 23, - "HostName": "derp23d.tailscale.com", - "IPv4": "185.34.3.75", - "IPv6": "2a00:dd80:3f:100::97e", - "CanPort80": true - }, - { - "Name": "23b", - "RegionID": 23, - "HostName": "derp23b.tailscale.com", - "IPv4": "185.34.3.232", - "IPv6": "2a00:dd80:3f:100::76f", - "CanPort80": true - } - ] - }, - "24": { - "RegionID": 24, - "RegionCode": "hnl", - "RegionName": "Honolulu", - "Latitude": 21.306944, - "Longitude": -157.858333, - "Nodes": [ - { - "Name": "24c", - "RegionID": 24, - "HostName": "derp24c.tailscale.com", - "IPv4": "208.83.233.233", - "IPv6": "2001:19f0:c000:c591:5400:04ff:fe26:2c5f", - "CanPort80": true - }, - { - "Name": "24d", - "RegionID": 24, - "HostName": "derp24d.tailscale.com", - "IPv4": "208.72.155.133", - "IPv6": "2001:19f0:c000:c564:5400:04ff:fe26:2ba8", - "CanPort80": true - }, - { - "Name": "24b", - "RegionID": 24, - "HostName": "derp24b.tailscale.com", - "IPv4": "208.83.234.151", - "IPv6": "2001:19f0:c000:c586:5400:04ff:fe26:2ba6", - "CanPort80": true - } - ] - }, - "25": { - "RegionID": 25, - "RegionCode": "nai", - "RegionName": "Nairobi", - "Latitude": -1.286389, - "Longitude": 36.817222, - "Nodes": [ - { - "Name": "25c", - "RegionID": 25, - "HostName": "derp25c.tailscale.com", - "IPv4": "102.67.167.37", - "IPv6": "2c0f:edb0:2000:1::2c7", - "CanPort80": true - }, - { - "Name": "25d", - "RegionID": 25, - "HostName": "derp25d.tailscale.com", - "IPv4": "102.67.167.188", - "IPv6": "2c0f:edb0:2000:1::188", - "CanPort80": true - }, - { - "Name": "25b", - "RegionID": 25, - "HostName": "derp25b.tailscale.com", - "IPv4": "102.67.167.245", - "IPv6": "2c0f:edb0:2000:1::2e9", - "CanPort80": true - } - ] - }, - "26": { - "RegionID": 26, - "RegionCode": "nue", - "RegionName": "Nuremberg", - "Latitude": 49.453889, - "Longitude": 11.0775, - "Nodes": [ - { - "Name": "26c", - "RegionID": 26, - "HostName": "derp26c.tailscale.com", - "IPv4": "49.12.193.137", - "IPv6": "2a01:4f8:1c1c:5c70::1", - "CanPort80": true - }, - { - "Name": "26d", - "RegionID": 26, - "HostName": "derp26d.tailscale.com", - "IPv4": "49.13.204.141", - "IPv6": "2a01:4f8:1c0c:7d06::1", - "CanPort80": true - }, - { - "Name": "26b", - "RegionID": 26, - "HostName": "derp26b.tailscale.com", - "IPv4": "167.235.72.200", - "IPv6": "2a01:4f8:1c1c:47b6::1", - "CanPort80": true - } - ] - }, - "27": { - "RegionID": 27, - "RegionCode": "iad", - "RegionName": "Ashburn", - "Latitude": 39.03, - "Longitude": -77.471111, - "Nodes": [ - { - "Name": "27d", - "RegionID": 27, - "HostName": "derp27d.tailscale.com", - "IPv4": "178.156.152.106", - "IPv6": "2a01:4ff:f0:3c8e::1", - "CanPort80": true - }, - { - "Name": "27c", - "RegionID": 27, - "HostName": "derp27c.tailscale.com", - "IPv4": "178.156.152.91", - "IPv6": "2a01:4ff:f0:3913::1", - "CanPort80": true - }, - { - "Name": "27e", - "RegionID": 27, - "HostName": "derp27e.tailscale.com", - "IPv4": "178.156.134.232", - "IPv6": "2a01:4ff:f0:28d4::1", - "CanPort80": true - }, - { - "Name": "27b", - "RegionID": 27, - "HostName": "derp27b.tailscale.com", - "IPv4": "5.161.218.233", - "IPv6": "2a01:4ff:f0:3db9::1", - "CanPort80": true - } - ] - }, - "28": { - "RegionID": 28, - "RegionCode": "hel", - "RegionName": "Helsinki", - "Latitude": 60.170833, - "Longitude": 24.9375, - "Nodes": [ - { - "Name": "28c", - "RegionID": 28, - "HostName": "derp28c.tailscale.com", - "IPv4": "95.217.2.165", - "IPv6": "2a01:4f9:c012:cd74::1", - "CanPort80": true - }, - { - "Name": "28d", - "RegionID": 28, - "HostName": "derp28d.tailscale.com", - "IPv4": "157.180.28.32", - "IPv6": "2a01:4f9:c012:2e5b::1", - "CanPort80": true - }, - { - "Name": "28b", - "RegionID": 28, - "HostName": "derp28b.tailscale.com", - "IPv4": "65.109.143.62", - "IPv6": "2a01:4f9:c012:d55c::1", - "CanPort80": true - } - ] - }, - "3": { - "RegionID": 3, - "RegionCode": "sin", - "RegionName": "Singapore", - "Latitude": 1.3521, - "Longitude": 103.8198, - "Nodes": [ - { - "Name": "3g", - "RegionID": 3, - "HostName": "derp3g.tailscale.com", - "IPv4": "172.237.72.79", - "IPv6": "2600:3c15::2000:adff:fe08:6fab", - "CanPort80": true - }, - { - "Name": "3f", - "RegionID": 3, - "HostName": "derp3f.tailscale.com", - "IPv4": "172.237.72.8", - "IPv6": "2600:3c15::2000:53ff:fe48:a668", - "CanPort80": true - }, - { - "Name": "3h", - "RegionID": 3, - "HostName": "derp3h.tailscale.com", - "IPv4": "172.237.66.30", - "IPv6": "2600:3c15::2000:3dff:fe44:50aa", - "CanPort80": true - }, - { - "Name": "3e", - "RegionID": 3, - "HostName": "derp3e.tailscale.com", - "IPv4": "172.237.72.43", - "IPv6": "2600:3c15::2000:6cff:fee4:d799", - "CanPort80": true - } - ] - }, - "4": { - "RegionID": 4, - "RegionCode": "fra", - "RegionName": "Frankfurt", - "Latitude": 50.1109, - "Longitude": 8.6821, - "Nodes": [ - { - "Name": "4h", - "RegionID": 4, - "HostName": "derp4h.tailscale.com", - "IPv4": "185.40.234.77", - "IPv6": "2a00:dd80:20::bcf", - "CanPort80": true - }, - { - "Name": "4g", - "RegionID": 4, - "HostName": "derp4g.tailscale.com", - "IPv4": "185.40.234.113", - "IPv6": "2a00:dd80:20::8f", - "CanPort80": true - }, - { - "Name": "4i", - "RegionID": 4, - "HostName": "derp4i.tailscale.com", - "IPv4": "185.40.234.53", - "IPv6": "2a00:dd80:20::8a6", - "CanPort80": true - }, - { - "Name": "4f", - "RegionID": 4, - "HostName": "derp4f.tailscale.com", - "IPv4": "185.40.234.219", - "IPv6": "2a00:dd80:20::a25", - "CanPort80": true - } - ] - }, - "5": { - "RegionID": 5, - "RegionCode": "syd", - "RegionName": "Sydney", - "Latitude": -33.867778, - "Longitude": 151.21, - "Nodes": [ - { - "Name": "5f", - "RegionID": 5, - "HostName": "derp5f.tailscale.com", - "IPv4": "172.105.166.103", - "IPv6": "2400:8907::2000:ccff:fe1f:80da", - "CanPort80": true - }, - { - "Name": "5g", - "RegionID": 5, - "HostName": "derp5g.tailscale.com", - "IPv4": "172.105.169.57", - "IPv6": "2400:8907::2000:2fff:fea7:57f4", - "CanPort80": true - }, - { - "Name": "5e", - "RegionID": 5, - "HostName": "derp5e.tailscale.com", - "IPv4": "172.105.179.230", - "IPv6": "2400:8907::2000:ceff:fe8d:4f4e", - "CanPort80": true - } - ] - }, - "6": { - "RegionID": 6, - "RegionCode": "blr", - "RegionName": "Bengaluru", - "Latitude": 12.9716, - "Longitude": 77.5946, - "Nodes": [ - { - "Name": "6a", - "RegionID": 6, - "HostName": "derp6.tailscale.com", - "IPv4": "68.183.90.120", - "IPv6": "2400:6180:100:d0::982:d001", - "CanPort80": true - } - ] - }, - "7": { - "RegionID": 7, - "RegionCode": "tok", - "RegionName": "Tokyo", - "Latitude": 35.6764, - "Longitude": 139.65, - "Nodes": [ - { - "Name": "7g", - "RegionID": 7, - "HostName": "derp7g.tailscale.com", - "IPv4": "172.238.6.179", - "IPv6": "2600:3c18::2000:3fff:fe80:3ebd", - "CanPort80": true - }, - { - "Name": "7f", - "RegionID": 7, - "HostName": "derp7f.tailscale.com", - "IPv4": "172.238.6.34", - "IPv6": "2600:3c18::2000:acff:fe8e:3ed5", - "CanPort80": true - }, - { - "Name": "7h", - "RegionID": 7, - "HostName": "derp7h.tailscale.com", - "IPv4": "172.237.28.183", - "IPv6": "2600:3c18::2000:b1ff:fea9:4560", - "CanPort80": true - }, - { - "Name": "7e", - "RegionID": 7, - "HostName": "derp7e.tailscale.com", - "IPv4": "172.238.6.180", - "IPv6": "2600:3c18::2000:60ff:fe0f:6e83", - "STUNOnly": true, - "CanPort80": true - } - ] - }, - "8": { - "RegionID": 8, - "RegionCode": "lhr", - "RegionName": "London", - "Latitude": 51.5072, - "Longitude": 0.1276, - "Nodes": [ - { - "Name": "8f", - "RegionID": 8, - "HostName": "derp8f.tailscale.com", - "IPv4": "176.58.88.183", - "IPv6": "2a00:dd80:3a::dfa", - "CanPort80": true - }, - { - "Name": "8g", - "RegionID": 8, - "HostName": "derp8g.tailscale.com", - "IPv4": "176.58.92.254", - "IPv6": "2a00:dd80:3a::ed", - "CanPort80": true - }, - { - "Name": "8e", - "RegionID": 8, - "HostName": "derp8e.tailscale.com", - "IPv4": "176.58.92.144", - "IPv6": "2a00:dd80:3a::b33", - "CanPort80": true - } - ] - }, - "9": { - "RegionID": 9, - "RegionCode": "dfw", - "RegionName": "Dallas", - "Latitude": 32.779167, - "Longitude": -96.808889, - "Nodes": [ - { - "Name": "9e", - "RegionID": 9, - "HostName": "derp9e.tailscale.com", - "IPv4": "192.73.248.83", - "IPv6": "2607:f740:100::359", - "CanPort80": true - }, - { - "Name": "9f", - "RegionID": 9, - "HostName": "derp9f.tailscale.com", - "IPv4": "209.177.156.197", - "IPv6": "2607:f740:100::cad", - "CanPort80": true - }, - { - "Name": "9d", - "RegionID": 9, - "HostName": "derp9d.tailscale.com", - "IPv4": "209.177.156.94", - "IPv6": "2607:f740:100::c05", - "CanPort80": true - } - ] - } - } - }, - "DisplayMessages": null, - "TKAEnabled": false, - "TKAHead": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", - "Domain": "kratail2tid@passkey", - "DomainAuditLogID": "", - "UserProfiles": { - "301794218943819": { - "ID": 301794218943819, - "LoginName": "tagged-prod.tail78f774.ts.net", - "DisplayName": "tagged-prod" - } - } + "PacketFilterRules": 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.124.195.93": { - "peer_name": "exit-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-server/tailscaled.sock whois --json 100.124.195.93", - "response": null - }, - "100.116.18.24": { - "peer_name": "exit-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-server/tailscaled.sock whois --json 100.116.18.24", - "response": null - }, - "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.107.162.14": { - "peer_name": "group-a-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-server/tailscaled.sock whois --json 100.107.162.14", - "response": null - }, - "100.77.135.18": { - "peer_name": "group-b-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-server/tailscaled.sock whois --json 100.77.135.18", - "response": null - }, - "100.105.127.107": { - "peer_name": "multi-exit-router", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-server/tailscaled.sock whois --json 100.105.127.107", - "response": null - }, - "100.109.43.124": { - "peer_name": "router-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-server/tailscaled.sock whois --json 100.109.43.124", - "response": null - }, - "100.65.172.123": { - "peer_name": "router-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-server/tailscaled.sock whois --json 100.65.172.123", - "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 - } - }, "netmap": { - "SelfNode": { - "ID": 1440249486084758, - "StableID": "nXRbBtuHFC11CNTRL", - "Name": "tagged-server.tail78f774.ts.net.", - "User": 1440249486084758, - "Key": "nodekey:7d5c34b3e8082069d0a82838165c33f8e1b5eb32c6211c2d23d4fe8fb9ec4a19", - "DiscoKey": "discokey:aa5732e314175928eff41cc8f8a7b6edd4694b7d00e420a6573ecc11a88cb203", - "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:57971", "10.65.0.27:57971", "172.17.0.1:57971"], - "Hostinfo": { - "Hostname": "tagged-server", - "Services": [ - { "Proto": "peerapi4", "Port": 46499 }, - { "Proto": "peerapi6", "Port": 46499 }, - { "Proto": "peerapi-dns-proxy", "Port": 1 } - ] - }, - "Created": "2026-01-23T10:10:26.365653609Z", - "Tags": ["tag:server"], - "MachineAuthorized": true, - "CapMap": { - "https://tailscale.com/cap/file-sharing": null, - "https://tailscale.com/cap/is-owner": null, - "https://tailscale.com/cap/ssh": null, - "https://tailscale.com/cap/tailnet-lock": null, - "probe-udp-lifetime": null, - "ssh-behavior-v1": null, - "ssh-env-vars": null, - "store-appc-routes": null, - "tailnet-display-name": ["kratail2tid@passkey"] - }, - "ComputedName": "tagged-server", - "ComputedNameWithHost": "tagged-server" - }, - "AllCaps": [ - "https://tailscale.com/cap/is-owner", - "https://tailscale.com/cap/tailnet-lock", - "probe-udp-lifetime", - "store-appc-routes", - "tailnet-display-name", - "ssh-behavior-v1", - "https://tailscale.com/cap/file-sharing", - "https://tailscale.com/cap/ssh", - "ssh-env-vars" - ], - "NodeKey": "nodekey:7d5c34b3e8082069d0a82838165c33f8e1b5eb32c6211c2d23d4fe8fb9ec4a19", - "MachineKey": "mkey:7d9c55c88bb618638f3f049b95c797f64eb0259810146d2644fef3e53acfdf6b", "Peers": [], - "DNS": { - "Routes": { - "tail78f774.ts.net.": null, - "ts.net.": [{ "Addr": "199.247.155.53" }, { "Addr": "2620:111:8007::53" }] - }, - "Domains": ["tail78f774.ts.net"], - "Proxied": true, - "ExitNodeFilteredSet": [".ts.net", ".tailscale.net"] - }, - "PacketFilter": [], - "PacketFilterRules": null, - "SSHPolicy": { "rules": [] }, - "CollectServices": false, - "DERPMap": { - "Regions": { - "1": { - "RegionID": 1, - "RegionCode": "nyc", - "RegionName": "New York City", - "Latitude": 40.7128, - "Longitude": -74.006, - "Nodes": [ - { - "Name": "1h", - "RegionID": 1, - "HostName": "derp1h.tailscale.com", - "IPv4": "199.38.181.93", - "IPv6": "2607:f740:f::afd", - "CanPort80": true - }, - { - "Name": "1g", - "RegionID": 1, - "HostName": "derp1g.tailscale.com", - "IPv4": "209.177.145.120", - "IPv6": "2607:f740:f::3eb", - "CanPort80": true - }, - { - "Name": "1i", - "RegionID": 1, - "HostName": "derp1i.tailscale.com", - "IPv4": "199.38.181.103", - "IPv6": "2607:f740:f::e19", - "CanPort80": true - }, - { - "Name": "1f", - "RegionID": 1, - "HostName": "derp1f.tailscale.com", - "IPv4": "199.38.181.104", - "IPv6": "2607:f740:f::bc", - "CanPort80": true - } - ] - }, - "10": { - "RegionID": 10, - "RegionCode": "sea", - "RegionName": "Seattle", - "Latitude": 47.609722, - "Longitude": -122.333056, - "Nodes": [ - { - "Name": "10c", - "RegionID": 10, - "HostName": "derp10c.tailscale.com", - "IPv4": "192.73.240.121", - "IPv6": "2607:f740:14::40c", - "CanPort80": true - }, - { - "Name": "10d", - "RegionID": 10, - "HostName": "derp10d.tailscale.com", - "IPv4": "192.73.240.132", - "IPv6": "2607:f740:14::500", - "CanPort80": true - }, - { - "Name": "10b", - "RegionID": 10, - "HostName": "derp10b.tailscale.com", - "IPv4": "192.73.240.161", - "IPv6": "2607:f740:14::61c", - "CanPort80": true - } - ] - }, - "11": { - "RegionID": 11, - "RegionCode": "sao", - "RegionName": "São Paulo", - "Latitude": -23.55, - "Longitude": -46.633333, - "Nodes": [ - { - "Name": "11f", - "RegionID": 11, - "HostName": "derp11f.tailscale.com", - "IPv4": "172.237.61.197", - "IPv6": "2600:3c0d::2000:3bff:fe44:6166", - "CanPort80": true - }, - { - "Name": "11g", - "RegionID": 11, - "HostName": "derp11g.tailscale.com", - "IPv4": "172.237.61.190", - "IPv6": "2600:3c0d::2000:62ff:febe:2e67", - "CanPort80": true - }, - { - "Name": "11e", - "RegionID": 11, - "HostName": "derp11e.tailscale.com", - "IPv4": "172.237.61.194", - "IPv6": "2600:3c0d::2000:d2ff:fe43:1790", - "CanPort80": true - } - ] - }, - "12": { - "RegionID": 12, - "RegionCode": "ord", - "RegionName": "Chicago", - "Latitude": 41.881944, - "Longitude": -87.627778, - "Nodes": [ - { - "Name": "12e", - "RegionID": 12, - "HostName": "derp12e.tailscale.com", - "IPv4": "209.177.158.15", - "IPv6": "2607:f740:e::b17", - "CanPort80": true - }, - { - "Name": "12f", - "RegionID": 12, - "HostName": "derp12f.tailscale.com", - "IPv4": "199.38.182.118", - "IPv6": "2607:f740:e::4c8", - "CanPort80": true - }, - { - "Name": "12d", - "RegionID": 12, - "HostName": "derp12d.tailscale.com", - "IPv4": "209.177.158.246", - "IPv6": "2607:f740:e::811", - "CanPort80": true - } - ] - }, - "13": { - "RegionID": 13, - "RegionCode": "den", - "RegionName": "Denver", - "Latitude": 39.7392, - "Longitude": -104.9849, - "Nodes": [ - { - "Name": "13c", - "RegionID": 13, - "HostName": "derp13c.tailscale.com", - "IPv4": "192.73.242.28", - "IPv6": "2607:f740:16::5c", - "CanPort80": true - }, - { - "Name": "13d", - "RegionID": 13, - "HostName": "derp13d.tailscale.com", - "IPv4": "192.73.242.204", - "IPv6": "2607:f740:16::c23", - "CanPort80": true - }, - { - "Name": "13b", - "RegionID": 13, - "HostName": "derp13b.tailscale.com", - "IPv4": "192.73.242.187", - "IPv6": "2607:f740:16::640", - "CanPort80": true - } - ] - }, - "14": { - "RegionID": 14, - "RegionCode": "ams", - "RegionName": "Amsterdam", - "Latitude": 52.372778, - "Longitude": 4.893611, - "Nodes": [ - { - "Name": "14c", - "RegionID": 14, - "HostName": "derp14c.tailscale.com", - "IPv4": "176.58.93.147", - "IPv6": "2a00:dd80:3c::b09", - "CanPort80": true - }, - { - "Name": "14d", - "RegionID": 14, - "HostName": "derp14d.tailscale.com", - "IPv4": "176.58.93.154", - "IPv6": "2a00:dd80:3c::3d5", - "CanPort80": true - }, - { - "Name": "14b", - "RegionID": 14, - "HostName": "derp14b.tailscale.com", - "IPv4": "176.58.93.248", - "IPv6": "2a00:dd80:3c::807", - "CanPort80": true - } - ] - }, - "15": { - "RegionID": 15, - "RegionCode": "jnb", - "RegionName": "Johannesburg", - "Latitude": -26.204444, - "Longitude": 28.045556, - "Nodes": [ - { - "Name": "15c", - "RegionID": 15, - "HostName": "derp15c.tailscale.com", - "IPv4": "102.67.165.185", - "IPv6": "2c0f:edb0:0:10::b59", - "CanPort80": true - }, - { - "Name": "15d", - "RegionID": 15, - "HostName": "derp15d.tailscale.com", - "IPv4": "102.67.165.36", - "IPv6": "2c0f:edb0:0:10::599", - "CanPort80": true - }, - { - "Name": "15b", - "RegionID": 15, - "HostName": "derp15b.tailscale.com", - "IPv4": "102.67.165.90", - "IPv6": "2c0f:edb0:0:10::963", - "CanPort80": true - } - ] - }, - "16": { - "RegionID": 16, - "RegionCode": "mia", - "RegionName": "Miami", - "Latitude": 25.78, - "Longitude": -80.21, - "Nodes": [ - { - "Name": "16c", - "RegionID": 16, - "HostName": "derp16c.tailscale.com", - "IPv4": "192.73.243.229", - "IPv6": "2607:f740:17::4e4", - "CanPort80": true - }, - { - "Name": "16d", - "RegionID": 16, - "HostName": "derp16d.tailscale.com", - "IPv4": "192.73.243.141", - "IPv6": "2607:f740:17::475", - "CanPort80": true - }, - { - "Name": "16b", - "RegionID": 16, - "HostName": "derp16b.tailscale.com", - "IPv4": "192.73.243.135", - "IPv6": "2607:f740:17::476", - "CanPort80": true - } - ] - }, - "17": { - "RegionID": 17, - "RegionCode": "lax", - "RegionName": "Los Angeles", - "Latitude": 34.05, - "Longitude": -118.25, - "Nodes": [ - { - "Name": "17c", - "RegionID": 17, - "HostName": "derp17c.tailscale.com", - "IPv4": "208.111.40.12", - "IPv6": "2607:f740:c::10", - "CanPort80": true - }, - { - "Name": "17d", - "RegionID": 17, - "HostName": "derp17d.tailscale.com", - "IPv4": "208.111.40.216", - "IPv6": "2607:f740:c::e1b", - "CanPort80": true - }, - { - "Name": "17b", - "RegionID": 17, - "HostName": "derp17b.tailscale.com", - "IPv4": "192.73.244.245", - "IPv6": "2607:f740:c::646", - "CanPort80": true - } - ] - }, - "18": { - "RegionID": 18, - "RegionCode": "par", - "RegionName": "Paris", - "Latitude": 48.856667, - "Longitude": 2.352222, - "Nodes": [ - { - "Name": "18c", - "RegionID": 18, - "HostName": "derp18c.tailscale.com", - "IPv4": "176.58.90.207", - "IPv6": "2a00:dd80:3e::c19", - "CanPort80": true - }, - { - "Name": "18d", - "RegionID": 18, - "HostName": "derp18d.tailscale.com", - "IPv4": "176.58.90.104", - "IPv6": "2a00:dd80:3e::f2e", - "CanPort80": true - }, - { - "Name": "18b", - "RegionID": 18, - "HostName": "derp18b.tailscale.com", - "IPv4": "176.58.90.147", - "IPv6": "2a00:dd80:3e::363", - "CanPort80": true - } - ] - }, - "19": { - "RegionID": 19, - "RegionCode": "mad", - "RegionName": "Madrid", - "Latitude": 40.416944, - "Longitude": -3.703333, - "Nodes": [ - { - "Name": "19c", - "RegionID": 19, - "HostName": "derp19c.tailscale.com", - "IPv4": "45.159.97.61", - "IPv6": "2a00:dd80:14:10::20", - "CanPort80": true - }, - { - "Name": "19d", - "RegionID": 19, - "HostName": "derp19d.tailscale.com", - "IPv4": "45.159.97.233", - "IPv6": "2a00:dd80:14:10::34a", - "CanPort80": true - }, - { - "Name": "19b", - "RegionID": 19, - "HostName": "derp19b.tailscale.com", - "IPv4": "45.159.97.144", - "IPv6": "2a00:dd80:14:10::335", - "CanPort80": true - } - ] - }, - "2": { - "RegionID": 2, - "RegionCode": "sfo", - "RegionName": "San Francisco", - "Latitude": 37.7775, - "Longitude": -122.416389, - "Nodes": [ - { - "Name": "2e", - "RegionID": 2, - "HostName": "derp2e.tailscale.com", - "IPv4": "192.73.252.134", - "IPv6": "2607:f740:0:3f::44c", - "CanPort80": true - }, - { - "Name": "2f", - "RegionID": 2, - "HostName": "derp2f.tailscale.com", - "IPv4": "208.111.34.178", - "IPv6": "2607:f740:0:3f::f4", - "CanPort80": true - }, - { - "Name": "2d", - "RegionID": 2, - "HostName": "derp2d.tailscale.com", - "IPv4": "192.73.252.65", - "IPv6": "2607:f740:0:3f::287", - "CanPort80": true - } - ] - }, - "20": { - "RegionID": 20, - "RegionCode": "hkg", - "RegionName": "Hong Kong", - "Latitude": 22.3193, - "Longitude": 114.1694, - "Nodes": [ - { - "Name": "20c", - "RegionID": 20, - "HostName": "derp20c.tailscale.com", - "IPv4": "205.147.105.30", - "IPv6": "2403:2500:8000:1::5fb", - "CanPort80": true - }, - { - "Name": "20d", - "RegionID": 20, - "HostName": "derp20d.tailscale.com", - "IPv4": "205.147.105.78", - "IPv6": "2403:2500:8000:1::e9a", - "CanPort80": true - }, - { - "Name": "20b", - "RegionID": 20, - "HostName": "derp20b.tailscale.com", - "IPv4": "103.6.84.152", - "IPv6": "2403:2500:8000:1::ef6", - "CanPort80": true - } - ] - }, - "21": { - "RegionID": 21, - "RegionCode": "tor", - "RegionName": "Toronto", - "Latitude": 43.741667, - "Longitude": -79.373333, - "Nodes": [ - { - "Name": "21c", - "RegionID": 21, - "HostName": "derp21c.tailscale.com", - "IPv4": "162.248.221.215", - "IPv6": "2607:f740:50::f10", - "CanPort80": true - }, - { - "Name": "21d", - "RegionID": 21, - "HostName": "derp21d.tailscale.com", - "IPv4": "162.248.221.248", - "IPv6": "2607:f740:50::ca4", - "CanPort80": true - }, - { - "Name": "21b", - "RegionID": 21, - "HostName": "derp21b.tailscale.com", - "IPv4": "162.248.221.199", - "IPv6": "2607:f740:50::1d1", - "CanPort80": true - } - ] - }, - "22": { - "RegionID": 22, - "RegionCode": "waw", - "RegionName": "Warsaw", - "Latitude": 52.23, - "Longitude": 21.011111, - "Nodes": [ - { - "Name": "22c", - "RegionID": 22, - "HostName": "derp22c.tailscale.com", - "IPv4": "45.159.98.253", - "IPv6": "2a00:dd80:40:100::3f", - "CanPort80": true - }, - { - "Name": "22d", - "RegionID": 22, - "HostName": "derp22d.tailscale.com", - "IPv4": "45.159.98.145", - "IPv6": "2a00:dd80:40:100::211", - "CanPort80": true - }, - { - "Name": "22b", - "RegionID": 22, - "HostName": "derp22b.tailscale.com", - "IPv4": "45.159.98.196", - "IPv6": "2a00:dd80:40:100::316", - "CanPort80": true - } - ] - }, - "23": { - "RegionID": 23, - "RegionCode": "dbi", - "RegionName": "Dubai", - "Latitude": 25.263056, - "Longitude": 55.297222, - "Nodes": [ - { - "Name": "23c", - "RegionID": 23, - "HostName": "derp23c.tailscale.com", - "IPv4": "185.34.3.207", - "IPv6": "2a00:dd80:3f:100::a50", - "CanPort80": true - }, - { - "Name": "23d", - "RegionID": 23, - "HostName": "derp23d.tailscale.com", - "IPv4": "185.34.3.75", - "IPv6": "2a00:dd80:3f:100::97e", - "CanPort80": true - }, - { - "Name": "23b", - "RegionID": 23, - "HostName": "derp23b.tailscale.com", - "IPv4": "185.34.3.232", - "IPv6": "2a00:dd80:3f:100::76f", - "CanPort80": true - } - ] - }, - "24": { - "RegionID": 24, - "RegionCode": "hnl", - "RegionName": "Honolulu", - "Latitude": 21.306944, - "Longitude": -157.858333, - "Nodes": [ - { - "Name": "24c", - "RegionID": 24, - "HostName": "derp24c.tailscale.com", - "IPv4": "208.83.233.233", - "IPv6": "2001:19f0:c000:c591:5400:04ff:fe26:2c5f", - "CanPort80": true - }, - { - "Name": "24d", - "RegionID": 24, - "HostName": "derp24d.tailscale.com", - "IPv4": "208.72.155.133", - "IPv6": "2001:19f0:c000:c564:5400:04ff:fe26:2ba8", - "CanPort80": true - }, - { - "Name": "24b", - "RegionID": 24, - "HostName": "derp24b.tailscale.com", - "IPv4": "208.83.234.151", - "IPv6": "2001:19f0:c000:c586:5400:04ff:fe26:2ba6", - "CanPort80": true - } - ] - }, - "25": { - "RegionID": 25, - "RegionCode": "nai", - "RegionName": "Nairobi", - "Latitude": -1.286389, - "Longitude": 36.817222, - "Nodes": [ - { - "Name": "25c", - "RegionID": 25, - "HostName": "derp25c.tailscale.com", - "IPv4": "102.67.167.37", - "IPv6": "2c0f:edb0:2000:1::2c7", - "CanPort80": true - }, - { - "Name": "25d", - "RegionID": 25, - "HostName": "derp25d.tailscale.com", - "IPv4": "102.67.167.188", - "IPv6": "2c0f:edb0:2000:1::188", - "CanPort80": true - }, - { - "Name": "25b", - "RegionID": 25, - "HostName": "derp25b.tailscale.com", - "IPv4": "102.67.167.245", - "IPv6": "2c0f:edb0:2000:1::2e9", - "CanPort80": true - } - ] - }, - "26": { - "RegionID": 26, - "RegionCode": "nue", - "RegionName": "Nuremberg", - "Latitude": 49.453889, - "Longitude": 11.0775, - "Nodes": [ - { - "Name": "26c", - "RegionID": 26, - "HostName": "derp26c.tailscale.com", - "IPv4": "49.12.193.137", - "IPv6": "2a01:4f8:1c1c:5c70::1", - "CanPort80": true - }, - { - "Name": "26d", - "RegionID": 26, - "HostName": "derp26d.tailscale.com", - "IPv4": "49.13.204.141", - "IPv6": "2a01:4f8:1c0c:7d06::1", - "CanPort80": true - }, - { - "Name": "26b", - "RegionID": 26, - "HostName": "derp26b.tailscale.com", - "IPv4": "167.235.72.200", - "IPv6": "2a01:4f8:1c1c:47b6::1", - "CanPort80": true - } - ] - }, - "27": { - "RegionID": 27, - "RegionCode": "iad", - "RegionName": "Ashburn", - "Latitude": 39.03, - "Longitude": -77.471111, - "Nodes": [ - { - "Name": "27d", - "RegionID": 27, - "HostName": "derp27d.tailscale.com", - "IPv4": "178.156.152.106", - "IPv6": "2a01:4ff:f0:3c8e::1", - "CanPort80": true - }, - { - "Name": "27c", - "RegionID": 27, - "HostName": "derp27c.tailscale.com", - "IPv4": "178.156.152.91", - "IPv6": "2a01:4ff:f0:3913::1", - "CanPort80": true - }, - { - "Name": "27e", - "RegionID": 27, - "HostName": "derp27e.tailscale.com", - "IPv4": "178.156.134.232", - "IPv6": "2a01:4ff:f0:28d4::1", - "CanPort80": true - }, - { - "Name": "27b", - "RegionID": 27, - "HostName": "derp27b.tailscale.com", - "IPv4": "5.161.218.233", - "IPv6": "2a01:4ff:f0:3db9::1", - "CanPort80": true - } - ] - }, - "28": { - "RegionID": 28, - "RegionCode": "hel", - "RegionName": "Helsinki", - "Latitude": 60.170833, - "Longitude": 24.9375, - "Nodes": [ - { - "Name": "28c", - "RegionID": 28, - "HostName": "derp28c.tailscale.com", - "IPv4": "95.217.2.165", - "IPv6": "2a01:4f9:c012:cd74::1", - "CanPort80": true - }, - { - "Name": "28d", - "RegionID": 28, - "HostName": "derp28d.tailscale.com", - "IPv4": "157.180.28.32", - "IPv6": "2a01:4f9:c012:2e5b::1", - "CanPort80": true - }, - { - "Name": "28b", - "RegionID": 28, - "HostName": "derp28b.tailscale.com", - "IPv4": "65.109.143.62", - "IPv6": "2a01:4f9:c012:d55c::1", - "CanPort80": true - } - ] - }, - "3": { - "RegionID": 3, - "RegionCode": "sin", - "RegionName": "Singapore", - "Latitude": 1.3521, - "Longitude": 103.8198, - "Nodes": [ - { - "Name": "3g", - "RegionID": 3, - "HostName": "derp3g.tailscale.com", - "IPv4": "172.237.72.79", - "IPv6": "2600:3c15::2000:adff:fe08:6fab", - "CanPort80": true - }, - { - "Name": "3f", - "RegionID": 3, - "HostName": "derp3f.tailscale.com", - "IPv4": "172.237.72.8", - "IPv6": "2600:3c15::2000:53ff:fe48:a668", - "CanPort80": true - }, - { - "Name": "3h", - "RegionID": 3, - "HostName": "derp3h.tailscale.com", - "IPv4": "172.237.66.30", - "IPv6": "2600:3c15::2000:3dff:fe44:50aa", - "CanPort80": true - }, - { - "Name": "3e", - "RegionID": 3, - "HostName": "derp3e.tailscale.com", - "IPv4": "172.237.72.43", - "IPv6": "2600:3c15::2000:6cff:fee4:d799", - "CanPort80": true - } - ] - }, - "4": { - "RegionID": 4, - "RegionCode": "fra", - "RegionName": "Frankfurt", - "Latitude": 50.1109, - "Longitude": 8.6821, - "Nodes": [ - { - "Name": "4h", - "RegionID": 4, - "HostName": "derp4h.tailscale.com", - "IPv4": "185.40.234.77", - "IPv6": "2a00:dd80:20::bcf", - "CanPort80": true - }, - { - "Name": "4g", - "RegionID": 4, - "HostName": "derp4g.tailscale.com", - "IPv4": "185.40.234.113", - "IPv6": "2a00:dd80:20::8f", - "CanPort80": true - }, - { - "Name": "4i", - "RegionID": 4, - "HostName": "derp4i.tailscale.com", - "IPv4": "185.40.234.53", - "IPv6": "2a00:dd80:20::8a6", - "CanPort80": true - }, - { - "Name": "4f", - "RegionID": 4, - "HostName": "derp4f.tailscale.com", - "IPv4": "185.40.234.219", - "IPv6": "2a00:dd80:20::a25", - "CanPort80": true - } - ] - }, - "5": { - "RegionID": 5, - "RegionCode": "syd", - "RegionName": "Sydney", - "Latitude": -33.867778, - "Longitude": 151.21, - "Nodes": [ - { - "Name": "5f", - "RegionID": 5, - "HostName": "derp5f.tailscale.com", - "IPv4": "172.105.166.103", - "IPv6": "2400:8907::2000:ccff:fe1f:80da", - "CanPort80": true - }, - { - "Name": "5g", - "RegionID": 5, - "HostName": "derp5g.tailscale.com", - "IPv4": "172.105.169.57", - "IPv6": "2400:8907::2000:2fff:fea7:57f4", - "CanPort80": true - }, - { - "Name": "5e", - "RegionID": 5, - "HostName": "derp5e.tailscale.com", - "IPv4": "172.105.179.230", - "IPv6": "2400:8907::2000:ceff:fe8d:4f4e", - "CanPort80": true - } - ] - }, - "6": { - "RegionID": 6, - "RegionCode": "blr", - "RegionName": "Bengaluru", - "Latitude": 12.9716, - "Longitude": 77.5946, - "Nodes": [ - { - "Name": "6a", - "RegionID": 6, - "HostName": "derp6.tailscale.com", - "IPv4": "68.183.90.120", - "IPv6": "2400:6180:100:d0::982:d001", - "CanPort80": true - } - ] - }, - "7": { - "RegionID": 7, - "RegionCode": "tok", - "RegionName": "Tokyo", - "Latitude": 35.6764, - "Longitude": 139.65, - "Nodes": [ - { - "Name": "7g", - "RegionID": 7, - "HostName": "derp7g.tailscale.com", - "IPv4": "172.238.6.179", - "IPv6": "2600:3c18::2000:3fff:fe80:3ebd", - "CanPort80": true - }, - { - "Name": "7f", - "RegionID": 7, - "HostName": "derp7f.tailscale.com", - "IPv4": "172.238.6.34", - "IPv6": "2600:3c18::2000:acff:fe8e:3ed5", - "CanPort80": true - }, - { - "Name": "7h", - "RegionID": 7, - "HostName": "derp7h.tailscale.com", - "IPv4": "172.237.28.183", - "IPv6": "2600:3c18::2000:b1ff:fea9:4560", - "CanPort80": true - }, - { - "Name": "7e", - "RegionID": 7, - "HostName": "derp7e.tailscale.com", - "IPv4": "172.238.6.180", - "IPv6": "2600:3c18::2000:60ff:fe0f:6e83", - "STUNOnly": true, - "CanPort80": true - } - ] - }, - "8": { - "RegionID": 8, - "RegionCode": "lhr", - "RegionName": "London", - "Latitude": 51.5072, - "Longitude": 0.1276, - "Nodes": [ - { - "Name": "8f", - "RegionID": 8, - "HostName": "derp8f.tailscale.com", - "IPv4": "176.58.88.183", - "IPv6": "2a00:dd80:3a::dfa", - "CanPort80": true - }, - { - "Name": "8g", - "RegionID": 8, - "HostName": "derp8g.tailscale.com", - "IPv4": "176.58.92.254", - "IPv6": "2a00:dd80:3a::ed", - "CanPort80": true - }, - { - "Name": "8e", - "RegionID": 8, - "HostName": "derp8e.tailscale.com", - "IPv4": "176.58.92.144", - "IPv6": "2a00:dd80:3a::b33", - "CanPort80": true - } - ] - }, - "9": { - "RegionID": 9, - "RegionCode": "dfw", - "RegionName": "Dallas", - "Latitude": 32.779167, - "Longitude": -96.808889, - "Nodes": [ - { - "Name": "9e", - "RegionID": 9, - "HostName": "derp9e.tailscale.com", - "IPv4": "192.73.248.83", - "IPv6": "2607:f740:100::359", - "CanPort80": true - }, - { - "Name": "9f", - "RegionID": 9, - "HostName": "derp9f.tailscale.com", - "IPv4": "209.177.156.197", - "IPv6": "2607:f740:100::cad", - "CanPort80": true - }, - { - "Name": "9d", - "RegionID": 9, - "HostName": "derp9d.tailscale.com", - "IPv4": "209.177.156.94", - "IPv6": "2607:f740:100::c05", - "CanPort80": true - } - ] - } - } - }, - "DisplayMessages": null, - "TKAEnabled": false, - "TKAHead": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", - "Domain": "kratail2tid@passkey", - "DomainAuditLogID": "", - "UserProfiles": { - "1440249486084758": { - "ID": 1440249486084758, - "LoginName": "tagged-server.tail78f774.ts.net", - "DisplayName": "tagged-server" - } - } + "PacketFilterRules": 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.124.195.93": { - "peer_name": "exit-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-kris/tailscaled.sock whois --json 100.124.195.93", - "response": null - }, - "100.116.18.24": { - "peer_name": "exit-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-kris/tailscaled.sock whois --json 100.116.18.24", - "response": null - }, - "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.107.162.14": { - "peer_name": "group-a-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-kris/tailscaled.sock whois --json 100.107.162.14", - "response": null - }, - "100.77.135.18": { - "peer_name": "group-b-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-kris/tailscaled.sock whois --json 100.77.135.18", - "response": null - }, - "100.105.127.107": { - "peer_name": "multi-exit-router", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-kris/tailscaled.sock whois --json 100.105.127.107", - "response": null - }, - "100.109.43.124": { - "peer_name": "router-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-kris/tailscaled.sock whois --json 100.109.43.124", - "response": null - }, - "100.65.172.123": { - "peer_name": "router-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-kris/tailscaled.sock whois --json 100.65.172.123", - "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 - } - }, "netmap": { - "SelfNode": { - "ID": 7728836216590060, - "StableID": "nf4dJTRQM321CNTRL", - "Name": "user-kris.tail78f774.ts.net.", - "User": 4538565228176803, - "Key": "nodekey:40d0f8f49fd519e4a4a2b7d278dcc8863254d4fb8b0219f1d1304cdd172e795f", - "KeyExpiry": "2026-08-19T14:09:34Z", - "DiscoKey": "discokey:60de987544859962048376b0950731bfa8017a7fc7df694ef376d4bb42eb9871", - "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:59717", "10.65.0.27:59717", "172.17.0.1:59717"], - "Hostinfo": { - "Hostname": "user-kris", - "Services": [ - { "Proto": "peerapi4", "Port": 40159 }, - { "Proto": "peerapi6", "Port": 40159 }, - { "Proto": "peerapi-dns-proxy", "Port": 1 } - ] - }, - "Created": "2026-02-20T14:09:34.803901523Z", - "MachineAuthorized": true, - "CapMap": { - "https://tailscale.com/cap/file-sharing": null, - "https://tailscale.com/cap/is-admin": null, - "https://tailscale.com/cap/ssh": null, - "https://tailscale.com/cap/tailnet-lock": null, - "probe-udp-lifetime": null, - "ssh-behavior-v1": null, - "ssh-env-vars": null, - "store-appc-routes": null, - "tailnet-display-name": ["kratail2tid@passkey"] - }, - "ComputedName": "user-kris", - "ComputedNameWithHost": "user-kris" - }, - "AllCaps": [ - "ssh-behavior-v1", - "https://tailscale.com/cap/is-admin", - "probe-udp-lifetime", - "https://tailscale.com/cap/file-sharing", - "store-appc-routes", - "https://tailscale.com/cap/tailnet-lock", - "ssh-env-vars", - "https://tailscale.com/cap/ssh", - "tailnet-display-name" - ], - "NodeKey": "nodekey:40d0f8f49fd519e4a4a2b7d278dcc8863254d4fb8b0219f1d1304cdd172e795f", - "MachineKey": "mkey:ff16066d907c58407972ee4a05a30386bd21bc0b420d8f9290eb70b95b3e1457", "Peers": [], - "DNS": { - "Routes": { - "tail78f774.ts.net.": null, - "ts.net.": [{ "Addr": "199.247.155.53" }, { "Addr": "2620:111:8007::53" }] - }, - "Domains": ["tail78f774.ts.net"], - "Proxied": true, - "ExitNodeFilteredSet": [".ts.net", ".tailscale.net"] - }, - "PacketFilter": [], - "PacketFilterRules": null, - "SSHPolicy": { "rules": [] }, - "CollectServices": false, - "DERPMap": { - "Regions": { - "1": { - "RegionID": 1, - "RegionCode": "nyc", - "RegionName": "New York City", - "Latitude": 40.7128, - "Longitude": -74.006, - "Nodes": [ - { - "Name": "1h", - "RegionID": 1, - "HostName": "derp1h.tailscale.com", - "IPv4": "199.38.181.93", - "IPv6": "2607:f740:f::afd", - "CanPort80": true - }, - { - "Name": "1g", - "RegionID": 1, - "HostName": "derp1g.tailscale.com", - "IPv4": "209.177.145.120", - "IPv6": "2607:f740:f::3eb", - "CanPort80": true - }, - { - "Name": "1i", - "RegionID": 1, - "HostName": "derp1i.tailscale.com", - "IPv4": "199.38.181.103", - "IPv6": "2607:f740:f::e19", - "CanPort80": true - }, - { - "Name": "1f", - "RegionID": 1, - "HostName": "derp1f.tailscale.com", - "IPv4": "199.38.181.104", - "IPv6": "2607:f740:f::bc", - "CanPort80": true - } - ] - }, - "10": { - "RegionID": 10, - "RegionCode": "sea", - "RegionName": "Seattle", - "Latitude": 47.609722, - "Longitude": -122.333056, - "Nodes": [ - { - "Name": "10c", - "RegionID": 10, - "HostName": "derp10c.tailscale.com", - "IPv4": "192.73.240.121", - "IPv6": "2607:f740:14::40c", - "CanPort80": true - }, - { - "Name": "10d", - "RegionID": 10, - "HostName": "derp10d.tailscale.com", - "IPv4": "192.73.240.132", - "IPv6": "2607:f740:14::500", - "CanPort80": true - }, - { - "Name": "10b", - "RegionID": 10, - "HostName": "derp10b.tailscale.com", - "IPv4": "192.73.240.161", - "IPv6": "2607:f740:14::61c", - "CanPort80": true - } - ] - }, - "11": { - "RegionID": 11, - "RegionCode": "sao", - "RegionName": "São Paulo", - "Latitude": -23.55, - "Longitude": -46.633333, - "Nodes": [ - { - "Name": "11f", - "RegionID": 11, - "HostName": "derp11f.tailscale.com", - "IPv4": "172.237.61.197", - "IPv6": "2600:3c0d::2000:3bff:fe44:6166", - "CanPort80": true - }, - { - "Name": "11g", - "RegionID": 11, - "HostName": "derp11g.tailscale.com", - "IPv4": "172.237.61.190", - "IPv6": "2600:3c0d::2000:62ff:febe:2e67", - "CanPort80": true - }, - { - "Name": "11e", - "RegionID": 11, - "HostName": "derp11e.tailscale.com", - "IPv4": "172.237.61.194", - "IPv6": "2600:3c0d::2000:d2ff:fe43:1790", - "CanPort80": true - } - ] - }, - "12": { - "RegionID": 12, - "RegionCode": "ord", - "RegionName": "Chicago", - "Latitude": 41.881944, - "Longitude": -87.627778, - "Nodes": [ - { - "Name": "12e", - "RegionID": 12, - "HostName": "derp12e.tailscale.com", - "IPv4": "209.177.158.15", - "IPv6": "2607:f740:e::b17", - "CanPort80": true - }, - { - "Name": "12f", - "RegionID": 12, - "HostName": "derp12f.tailscale.com", - "IPv4": "199.38.182.118", - "IPv6": "2607:f740:e::4c8", - "CanPort80": true - }, - { - "Name": "12d", - "RegionID": 12, - "HostName": "derp12d.tailscale.com", - "IPv4": "209.177.158.246", - "IPv6": "2607:f740:e::811", - "CanPort80": true - } - ] - }, - "13": { - "RegionID": 13, - "RegionCode": "den", - "RegionName": "Denver", - "Latitude": 39.7392, - "Longitude": -104.9849, - "Nodes": [ - { - "Name": "13c", - "RegionID": 13, - "HostName": "derp13c.tailscale.com", - "IPv4": "192.73.242.28", - "IPv6": "2607:f740:16::5c", - "CanPort80": true - }, - { - "Name": "13d", - "RegionID": 13, - "HostName": "derp13d.tailscale.com", - "IPv4": "192.73.242.204", - "IPv6": "2607:f740:16::c23", - "CanPort80": true - }, - { - "Name": "13b", - "RegionID": 13, - "HostName": "derp13b.tailscale.com", - "IPv4": "192.73.242.187", - "IPv6": "2607:f740:16::640", - "CanPort80": true - } - ] - }, - "14": { - "RegionID": 14, - "RegionCode": "ams", - "RegionName": "Amsterdam", - "Latitude": 52.372778, - "Longitude": 4.893611, - "Nodes": [ - { - "Name": "14c", - "RegionID": 14, - "HostName": "derp14c.tailscale.com", - "IPv4": "176.58.93.147", - "IPv6": "2a00:dd80:3c::b09", - "CanPort80": true - }, - { - "Name": "14d", - "RegionID": 14, - "HostName": "derp14d.tailscale.com", - "IPv4": "176.58.93.154", - "IPv6": "2a00:dd80:3c::3d5", - "CanPort80": true - }, - { - "Name": "14b", - "RegionID": 14, - "HostName": "derp14b.tailscale.com", - "IPv4": "176.58.93.248", - "IPv6": "2a00:dd80:3c::807", - "CanPort80": true - } - ] - }, - "15": { - "RegionID": 15, - "RegionCode": "jnb", - "RegionName": "Johannesburg", - "Latitude": -26.204444, - "Longitude": 28.045556, - "Nodes": [ - { - "Name": "15c", - "RegionID": 15, - "HostName": "derp15c.tailscale.com", - "IPv4": "102.67.165.185", - "IPv6": "2c0f:edb0:0:10::b59", - "CanPort80": true - }, - { - "Name": "15d", - "RegionID": 15, - "HostName": "derp15d.tailscale.com", - "IPv4": "102.67.165.36", - "IPv6": "2c0f:edb0:0:10::599", - "CanPort80": true - }, - { - "Name": "15b", - "RegionID": 15, - "HostName": "derp15b.tailscale.com", - "IPv4": "102.67.165.90", - "IPv6": "2c0f:edb0:0:10::963", - "CanPort80": true - } - ] - }, - "16": { - "RegionID": 16, - "RegionCode": "mia", - "RegionName": "Miami", - "Latitude": 25.78, - "Longitude": -80.21, - "Nodes": [ - { - "Name": "16c", - "RegionID": 16, - "HostName": "derp16c.tailscale.com", - "IPv4": "192.73.243.229", - "IPv6": "2607:f740:17::4e4", - "CanPort80": true - }, - { - "Name": "16d", - "RegionID": 16, - "HostName": "derp16d.tailscale.com", - "IPv4": "192.73.243.141", - "IPv6": "2607:f740:17::475", - "CanPort80": true - }, - { - "Name": "16b", - "RegionID": 16, - "HostName": "derp16b.tailscale.com", - "IPv4": "192.73.243.135", - "IPv6": "2607:f740:17::476", - "CanPort80": true - } - ] - }, - "17": { - "RegionID": 17, - "RegionCode": "lax", - "RegionName": "Los Angeles", - "Latitude": 34.05, - "Longitude": -118.25, - "Nodes": [ - { - "Name": "17c", - "RegionID": 17, - "HostName": "derp17c.tailscale.com", - "IPv4": "208.111.40.12", - "IPv6": "2607:f740:c::10", - "CanPort80": true - }, - { - "Name": "17d", - "RegionID": 17, - "HostName": "derp17d.tailscale.com", - "IPv4": "208.111.40.216", - "IPv6": "2607:f740:c::e1b", - "CanPort80": true - }, - { - "Name": "17b", - "RegionID": 17, - "HostName": "derp17b.tailscale.com", - "IPv4": "192.73.244.245", - "IPv6": "2607:f740:c::646", - "CanPort80": true - } - ] - }, - "18": { - "RegionID": 18, - "RegionCode": "par", - "RegionName": "Paris", - "Latitude": 48.856667, - "Longitude": 2.352222, - "Nodes": [ - { - "Name": "18c", - "RegionID": 18, - "HostName": "derp18c.tailscale.com", - "IPv4": "176.58.90.207", - "IPv6": "2a00:dd80:3e::c19", - "CanPort80": true - }, - { - "Name": "18d", - "RegionID": 18, - "HostName": "derp18d.tailscale.com", - "IPv4": "176.58.90.104", - "IPv6": "2a00:dd80:3e::f2e", - "CanPort80": true - }, - { - "Name": "18b", - "RegionID": 18, - "HostName": "derp18b.tailscale.com", - "IPv4": "176.58.90.147", - "IPv6": "2a00:dd80:3e::363", - "CanPort80": true - } - ] - }, - "19": { - "RegionID": 19, - "RegionCode": "mad", - "RegionName": "Madrid", - "Latitude": 40.416944, - "Longitude": -3.703333, - "Nodes": [ - { - "Name": "19c", - "RegionID": 19, - "HostName": "derp19c.tailscale.com", - "IPv4": "45.159.97.61", - "IPv6": "2a00:dd80:14:10::20", - "CanPort80": true - }, - { - "Name": "19d", - "RegionID": 19, - "HostName": "derp19d.tailscale.com", - "IPv4": "45.159.97.233", - "IPv6": "2a00:dd80:14:10::34a", - "CanPort80": true - }, - { - "Name": "19b", - "RegionID": 19, - "HostName": "derp19b.tailscale.com", - "IPv4": "45.159.97.144", - "IPv6": "2a00:dd80:14:10::335", - "CanPort80": true - } - ] - }, - "2": { - "RegionID": 2, - "RegionCode": "sfo", - "RegionName": "San Francisco", - "Latitude": 37.7775, - "Longitude": -122.416389, - "Nodes": [ - { - "Name": "2e", - "RegionID": 2, - "HostName": "derp2e.tailscale.com", - "IPv4": "192.73.252.134", - "IPv6": "2607:f740:0:3f::44c", - "CanPort80": true - }, - { - "Name": "2f", - "RegionID": 2, - "HostName": "derp2f.tailscale.com", - "IPv4": "208.111.34.178", - "IPv6": "2607:f740:0:3f::f4", - "CanPort80": true - }, - { - "Name": "2d", - "RegionID": 2, - "HostName": "derp2d.tailscale.com", - "IPv4": "192.73.252.65", - "IPv6": "2607:f740:0:3f::287", - "CanPort80": true - } - ] - }, - "20": { - "RegionID": 20, - "RegionCode": "hkg", - "RegionName": "Hong Kong", - "Latitude": 22.3193, - "Longitude": 114.1694, - "Nodes": [ - { - "Name": "20c", - "RegionID": 20, - "HostName": "derp20c.tailscale.com", - "IPv4": "205.147.105.30", - "IPv6": "2403:2500:8000:1::5fb", - "CanPort80": true - }, - { - "Name": "20d", - "RegionID": 20, - "HostName": "derp20d.tailscale.com", - "IPv4": "205.147.105.78", - "IPv6": "2403:2500:8000:1::e9a", - "CanPort80": true - }, - { - "Name": "20b", - "RegionID": 20, - "HostName": "derp20b.tailscale.com", - "IPv4": "103.6.84.152", - "IPv6": "2403:2500:8000:1::ef6", - "CanPort80": true - } - ] - }, - "21": { - "RegionID": 21, - "RegionCode": "tor", - "RegionName": "Toronto", - "Latitude": 43.741667, - "Longitude": -79.373333, - "Nodes": [ - { - "Name": "21c", - "RegionID": 21, - "HostName": "derp21c.tailscale.com", - "IPv4": "162.248.221.215", - "IPv6": "2607:f740:50::f10", - "CanPort80": true - }, - { - "Name": "21d", - "RegionID": 21, - "HostName": "derp21d.tailscale.com", - "IPv4": "162.248.221.248", - "IPv6": "2607:f740:50::ca4", - "CanPort80": true - }, - { - "Name": "21b", - "RegionID": 21, - "HostName": "derp21b.tailscale.com", - "IPv4": "162.248.221.199", - "IPv6": "2607:f740:50::1d1", - "CanPort80": true - } - ] - }, - "22": { - "RegionID": 22, - "RegionCode": "waw", - "RegionName": "Warsaw", - "Latitude": 52.23, - "Longitude": 21.011111, - "Nodes": [ - { - "Name": "22c", - "RegionID": 22, - "HostName": "derp22c.tailscale.com", - "IPv4": "45.159.98.253", - "IPv6": "2a00:dd80:40:100::3f", - "CanPort80": true - }, - { - "Name": "22d", - "RegionID": 22, - "HostName": "derp22d.tailscale.com", - "IPv4": "45.159.98.145", - "IPv6": "2a00:dd80:40:100::211", - "CanPort80": true - }, - { - "Name": "22b", - "RegionID": 22, - "HostName": "derp22b.tailscale.com", - "IPv4": "45.159.98.196", - "IPv6": "2a00:dd80:40:100::316", - "CanPort80": true - } - ] - }, - "23": { - "RegionID": 23, - "RegionCode": "dbi", - "RegionName": "Dubai", - "Latitude": 25.263056, - "Longitude": 55.297222, - "Nodes": [ - { - "Name": "23c", - "RegionID": 23, - "HostName": "derp23c.tailscale.com", - "IPv4": "185.34.3.207", - "IPv6": "2a00:dd80:3f:100::a50", - "CanPort80": true - }, - { - "Name": "23d", - "RegionID": 23, - "HostName": "derp23d.tailscale.com", - "IPv4": "185.34.3.75", - "IPv6": "2a00:dd80:3f:100::97e", - "CanPort80": true - }, - { - "Name": "23b", - "RegionID": 23, - "HostName": "derp23b.tailscale.com", - "IPv4": "185.34.3.232", - "IPv6": "2a00:dd80:3f:100::76f", - "CanPort80": true - } - ] - }, - "24": { - "RegionID": 24, - "RegionCode": "hnl", - "RegionName": "Honolulu", - "Latitude": 21.306944, - "Longitude": -157.858333, - "Nodes": [ - { - "Name": "24c", - "RegionID": 24, - "HostName": "derp24c.tailscale.com", - "IPv4": "208.83.233.233", - "IPv6": "2001:19f0:c000:c591:5400:04ff:fe26:2c5f", - "CanPort80": true - }, - { - "Name": "24d", - "RegionID": 24, - "HostName": "derp24d.tailscale.com", - "IPv4": "208.72.155.133", - "IPv6": "2001:19f0:c000:c564:5400:04ff:fe26:2ba8", - "CanPort80": true - }, - { - "Name": "24b", - "RegionID": 24, - "HostName": "derp24b.tailscale.com", - "IPv4": "208.83.234.151", - "IPv6": "2001:19f0:c000:c586:5400:04ff:fe26:2ba6", - "CanPort80": true - } - ] - }, - "25": { - "RegionID": 25, - "RegionCode": "nai", - "RegionName": "Nairobi", - "Latitude": -1.286389, - "Longitude": 36.817222, - "Nodes": [ - { - "Name": "25c", - "RegionID": 25, - "HostName": "derp25c.tailscale.com", - "IPv4": "102.67.167.37", - "IPv6": "2c0f:edb0:2000:1::2c7", - "CanPort80": true - }, - { - "Name": "25d", - "RegionID": 25, - "HostName": "derp25d.tailscale.com", - "IPv4": "102.67.167.188", - "IPv6": "2c0f:edb0:2000:1::188", - "CanPort80": true - }, - { - "Name": "25b", - "RegionID": 25, - "HostName": "derp25b.tailscale.com", - "IPv4": "102.67.167.245", - "IPv6": "2c0f:edb0:2000:1::2e9", - "CanPort80": true - } - ] - }, - "26": { - "RegionID": 26, - "RegionCode": "nue", - "RegionName": "Nuremberg", - "Latitude": 49.453889, - "Longitude": 11.0775, - "Nodes": [ - { - "Name": "26c", - "RegionID": 26, - "HostName": "derp26c.tailscale.com", - "IPv4": "49.12.193.137", - "IPv6": "2a01:4f8:1c1c:5c70::1", - "CanPort80": true - }, - { - "Name": "26d", - "RegionID": 26, - "HostName": "derp26d.tailscale.com", - "IPv4": "49.13.204.141", - "IPv6": "2a01:4f8:1c0c:7d06::1", - "CanPort80": true - }, - { - "Name": "26b", - "RegionID": 26, - "HostName": "derp26b.tailscale.com", - "IPv4": "167.235.72.200", - "IPv6": "2a01:4f8:1c1c:47b6::1", - "CanPort80": true - } - ] - }, - "27": { - "RegionID": 27, - "RegionCode": "iad", - "RegionName": "Ashburn", - "Latitude": 39.03, - "Longitude": -77.471111, - "Nodes": [ - { - "Name": "27d", - "RegionID": 27, - "HostName": "derp27d.tailscale.com", - "IPv4": "178.156.152.106", - "IPv6": "2a01:4ff:f0:3c8e::1", - "CanPort80": true - }, - { - "Name": "27c", - "RegionID": 27, - "HostName": "derp27c.tailscale.com", - "IPv4": "178.156.152.91", - "IPv6": "2a01:4ff:f0:3913::1", - "CanPort80": true - }, - { - "Name": "27e", - "RegionID": 27, - "HostName": "derp27e.tailscale.com", - "IPv4": "178.156.134.232", - "IPv6": "2a01:4ff:f0:28d4::1", - "CanPort80": true - }, - { - "Name": "27b", - "RegionID": 27, - "HostName": "derp27b.tailscale.com", - "IPv4": "5.161.218.233", - "IPv6": "2a01:4ff:f0:3db9::1", - "CanPort80": true - } - ] - }, - "28": { - "RegionID": 28, - "RegionCode": "hel", - "RegionName": "Helsinki", - "Latitude": 60.170833, - "Longitude": 24.9375, - "Nodes": [ - { - "Name": "28c", - "RegionID": 28, - "HostName": "derp28c.tailscale.com", - "IPv4": "95.217.2.165", - "IPv6": "2a01:4f9:c012:cd74::1", - "CanPort80": true - }, - { - "Name": "28d", - "RegionID": 28, - "HostName": "derp28d.tailscale.com", - "IPv4": "157.180.28.32", - "IPv6": "2a01:4f9:c012:2e5b::1", - "CanPort80": true - }, - { - "Name": "28b", - "RegionID": 28, - "HostName": "derp28b.tailscale.com", - "IPv4": "65.109.143.62", - "IPv6": "2a01:4f9:c012:d55c::1", - "CanPort80": true - } - ] - }, - "3": { - "RegionID": 3, - "RegionCode": "sin", - "RegionName": "Singapore", - "Latitude": 1.3521, - "Longitude": 103.8198, - "Nodes": [ - { - "Name": "3g", - "RegionID": 3, - "HostName": "derp3g.tailscale.com", - "IPv4": "172.237.72.79", - "IPv6": "2600:3c15::2000:adff:fe08:6fab", - "CanPort80": true - }, - { - "Name": "3f", - "RegionID": 3, - "HostName": "derp3f.tailscale.com", - "IPv4": "172.237.72.8", - "IPv6": "2600:3c15::2000:53ff:fe48:a668", - "CanPort80": true - }, - { - "Name": "3h", - "RegionID": 3, - "HostName": "derp3h.tailscale.com", - "IPv4": "172.237.66.30", - "IPv6": "2600:3c15::2000:3dff:fe44:50aa", - "CanPort80": true - }, - { - "Name": "3e", - "RegionID": 3, - "HostName": "derp3e.tailscale.com", - "IPv4": "172.237.72.43", - "IPv6": "2600:3c15::2000:6cff:fee4:d799", - "CanPort80": true - } - ] - }, - "4": { - "RegionID": 4, - "RegionCode": "fra", - "RegionName": "Frankfurt", - "Latitude": 50.1109, - "Longitude": 8.6821, - "Nodes": [ - { - "Name": "4h", - "RegionID": 4, - "HostName": "derp4h.tailscale.com", - "IPv4": "185.40.234.77", - "IPv6": "2a00:dd80:20::bcf", - "CanPort80": true - }, - { - "Name": "4g", - "RegionID": 4, - "HostName": "derp4g.tailscale.com", - "IPv4": "185.40.234.113", - "IPv6": "2a00:dd80:20::8f", - "CanPort80": true - }, - { - "Name": "4i", - "RegionID": 4, - "HostName": "derp4i.tailscale.com", - "IPv4": "185.40.234.53", - "IPv6": "2a00:dd80:20::8a6", - "CanPort80": true - }, - { - "Name": "4f", - "RegionID": 4, - "HostName": "derp4f.tailscale.com", - "IPv4": "185.40.234.219", - "IPv6": "2a00:dd80:20::a25", - "CanPort80": true - } - ] - }, - "5": { - "RegionID": 5, - "RegionCode": "syd", - "RegionName": "Sydney", - "Latitude": -33.867778, - "Longitude": 151.21, - "Nodes": [ - { - "Name": "5f", - "RegionID": 5, - "HostName": "derp5f.tailscale.com", - "IPv4": "172.105.166.103", - "IPv6": "2400:8907::2000:ccff:fe1f:80da", - "CanPort80": true - }, - { - "Name": "5g", - "RegionID": 5, - "HostName": "derp5g.tailscale.com", - "IPv4": "172.105.169.57", - "IPv6": "2400:8907::2000:2fff:fea7:57f4", - "CanPort80": true - }, - { - "Name": "5e", - "RegionID": 5, - "HostName": "derp5e.tailscale.com", - "IPv4": "172.105.179.230", - "IPv6": "2400:8907::2000:ceff:fe8d:4f4e", - "CanPort80": true - } - ] - }, - "6": { - "RegionID": 6, - "RegionCode": "blr", - "RegionName": "Bengaluru", - "Latitude": 12.9716, - "Longitude": 77.5946, - "Nodes": [ - { - "Name": "6a", - "RegionID": 6, - "HostName": "derp6.tailscale.com", - "IPv4": "68.183.90.120", - "IPv6": "2400:6180:100:d0::982:d001", - "CanPort80": true - } - ] - }, - "7": { - "RegionID": 7, - "RegionCode": "tok", - "RegionName": "Tokyo", - "Latitude": 35.6764, - "Longitude": 139.65, - "Nodes": [ - { - "Name": "7g", - "RegionID": 7, - "HostName": "derp7g.tailscale.com", - "IPv4": "172.238.6.179", - "IPv6": "2600:3c18::2000:3fff:fe80:3ebd", - "CanPort80": true - }, - { - "Name": "7f", - "RegionID": 7, - "HostName": "derp7f.tailscale.com", - "IPv4": "172.238.6.34", - "IPv6": "2600:3c18::2000:acff:fe8e:3ed5", - "CanPort80": true - }, - { - "Name": "7h", - "RegionID": 7, - "HostName": "derp7h.tailscale.com", - "IPv4": "172.237.28.183", - "IPv6": "2600:3c18::2000:b1ff:fea9:4560", - "CanPort80": true - }, - { - "Name": "7e", - "RegionID": 7, - "HostName": "derp7e.tailscale.com", - "IPv4": "172.238.6.180", - "IPv6": "2600:3c18::2000:60ff:fe0f:6e83", - "STUNOnly": true, - "CanPort80": true - } - ] - }, - "8": { - "RegionID": 8, - "RegionCode": "lhr", - "RegionName": "London", - "Latitude": 51.5072, - "Longitude": 0.1276, - "Nodes": [ - { - "Name": "8f", - "RegionID": 8, - "HostName": "derp8f.tailscale.com", - "IPv4": "176.58.88.183", - "IPv6": "2a00:dd80:3a::dfa", - "CanPort80": true - }, - { - "Name": "8g", - "RegionID": 8, - "HostName": "derp8g.tailscale.com", - "IPv4": "176.58.92.254", - "IPv6": "2a00:dd80:3a::ed", - "CanPort80": true - }, - { - "Name": "8e", - "RegionID": 8, - "HostName": "derp8e.tailscale.com", - "IPv4": "176.58.92.144", - "IPv6": "2a00:dd80:3a::b33", - "CanPort80": true - } - ] - }, - "9": { - "RegionID": 9, - "RegionCode": "dfw", - "RegionName": "Dallas", - "Latitude": 32.779167, - "Longitude": -96.808889, - "Nodes": [ - { - "Name": "9e", - "RegionID": 9, - "HostName": "derp9e.tailscale.com", - "IPv4": "192.73.248.83", - "IPv6": "2607:f740:100::359", - "CanPort80": true - }, - { - "Name": "9f", - "RegionID": 9, - "HostName": "derp9f.tailscale.com", - "IPv4": "209.177.156.197", - "IPv6": "2607:f740:100::cad", - "CanPort80": true - }, - { - "Name": "9d", - "RegionID": 9, - "HostName": "derp9d.tailscale.com", - "IPv4": "209.177.156.94", - "IPv6": "2607:f740:100::c05", - "CanPort80": true - } - ] - } - } - }, - "DisplayMessages": null, - "TKAEnabled": false, - "TKAHead": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", - "Domain": "kratail2tid@passkey", - "DomainAuditLogID": "", - "UserProfiles": { - "4538565228176803": { - "ID": 4538565228176803, - "LoginName": "kristoffer@dalby.cc", - "DisplayName": "kristoffer" - } - } + "PacketFilterRules": 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.124.195.93": { - "peer_name": "exit-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-mon/tailscaled.sock whois --json 100.124.195.93", - "response": null - }, - "100.116.18.24": { - "peer_name": "exit-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-mon/tailscaled.sock whois --json 100.116.18.24", - "response": null - }, - "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.107.162.14": { - "peer_name": "group-a-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-mon/tailscaled.sock whois --json 100.107.162.14", - "response": null - }, - "100.77.135.18": { - "peer_name": "group-b-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-mon/tailscaled.sock whois --json 100.77.135.18", - "response": null - }, - "100.105.127.107": { - "peer_name": "multi-exit-router", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-mon/tailscaled.sock whois --json 100.105.127.107", - "response": null - }, - "100.109.43.124": { - "peer_name": "router-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-mon/tailscaled.sock whois --json 100.109.43.124", - "response": null - }, - "100.65.172.123": { - "peer_name": "router-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-mon/tailscaled.sock whois --json 100.65.172.123", - "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 - } - }, "netmap": { - "SelfNode": { - "ID": 1840115676059256, - "StableID": "nFzZ7giPNF11CNTRL", - "Name": "user-mon.tail78f774.ts.net.", - "User": 3982058329734709, - "Key": "nodekey:1ca6cca66d2b3811ec290c2f7ac30125c3568e19e303a8e30f6b165c9ee75a51", - "KeyExpiry": "2026-08-19T14:09:00Z", - "DiscoKey": "discokey:67ba1473894f09b564073adb12b27df2a45c513afd9e48922a0346d5d2715d12", - "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:36593", "10.65.0.27:36593", "172.17.0.1:36593"], - "Hostinfo": { - "Hostname": "user-mon", - "Services": [ - { "Proto": "peerapi4", "Port": 33201 }, - { "Proto": "peerapi6", "Port": 33201 }, - { "Proto": "peerapi-dns-proxy", "Port": 1 } - ] - }, - "Created": "2026-02-20T14:09:00.203639664Z", - "MachineAuthorized": true, - "CapMap": { - "https://tailscale.com/cap/file-sharing": null, - "https://tailscale.com/cap/is-admin": null, - "https://tailscale.com/cap/ssh": null, - "https://tailscale.com/cap/tailnet-lock": null, - "probe-udp-lifetime": null, - "ssh-behavior-v1": null, - "ssh-env-vars": null, - "store-appc-routes": null, - "tailnet-display-name": ["kratail2tid@passkey"] - }, - "ComputedName": "user-mon", - "ComputedNameWithHost": "user-mon" - }, - "AllCaps": [ - "probe-udp-lifetime", - "ssh-env-vars", - "tailnet-display-name", - "store-appc-routes", - "https://tailscale.com/cap/file-sharing", - "https://tailscale.com/cap/ssh", - "https://tailscale.com/cap/is-admin", - "ssh-behavior-v1", - "https://tailscale.com/cap/tailnet-lock" - ], - "NodeKey": "nodekey:1ca6cca66d2b3811ec290c2f7ac30125c3568e19e303a8e30f6b165c9ee75a51", - "MachineKey": "mkey:d63fc325663eef5dabd4d236e1fa5a26ed14ad31ea0711840cf755a5e8a9df39", "Peers": [], - "DNS": { - "Routes": { - "tail78f774.ts.net.": null, - "ts.net.": [{ "Addr": "199.247.155.53" }, { "Addr": "2620:111:8007::53" }] - }, - "Domains": ["tail78f774.ts.net"], - "Proxied": true, - "ExitNodeFilteredSet": [".ts.net", ".tailscale.net"] - }, - "PacketFilter": [], - "PacketFilterRules": null, - "SSHPolicy": { "rules": [] }, - "CollectServices": false, - "DERPMap": { - "Regions": { - "1": { - "RegionID": 1, - "RegionCode": "nyc", - "RegionName": "New York City", - "Latitude": 40.7128, - "Longitude": -74.006, - "Nodes": [ - { - "Name": "1h", - "RegionID": 1, - "HostName": "derp1h.tailscale.com", - "IPv4": "199.38.181.93", - "IPv6": "2607:f740:f::afd", - "CanPort80": true - }, - { - "Name": "1g", - "RegionID": 1, - "HostName": "derp1g.tailscale.com", - "IPv4": "209.177.145.120", - "IPv6": "2607:f740:f::3eb", - "CanPort80": true - }, - { - "Name": "1i", - "RegionID": 1, - "HostName": "derp1i.tailscale.com", - "IPv4": "199.38.181.103", - "IPv6": "2607:f740:f::e19", - "CanPort80": true - }, - { - "Name": "1f", - "RegionID": 1, - "HostName": "derp1f.tailscale.com", - "IPv4": "199.38.181.104", - "IPv6": "2607:f740:f::bc", - "CanPort80": true - } - ] - }, - "10": { - "RegionID": 10, - "RegionCode": "sea", - "RegionName": "Seattle", - "Latitude": 47.609722, - "Longitude": -122.333056, - "Nodes": [ - { - "Name": "10c", - "RegionID": 10, - "HostName": "derp10c.tailscale.com", - "IPv4": "192.73.240.121", - "IPv6": "2607:f740:14::40c", - "CanPort80": true - }, - { - "Name": "10d", - "RegionID": 10, - "HostName": "derp10d.tailscale.com", - "IPv4": "192.73.240.132", - "IPv6": "2607:f740:14::500", - "CanPort80": true - }, - { - "Name": "10b", - "RegionID": 10, - "HostName": "derp10b.tailscale.com", - "IPv4": "192.73.240.161", - "IPv6": "2607:f740:14::61c", - "CanPort80": true - } - ] - }, - "11": { - "RegionID": 11, - "RegionCode": "sao", - "RegionName": "São Paulo", - "Latitude": -23.55, - "Longitude": -46.633333, - "Nodes": [ - { - "Name": "11f", - "RegionID": 11, - "HostName": "derp11f.tailscale.com", - "IPv4": "172.237.61.197", - "IPv6": "2600:3c0d::2000:3bff:fe44:6166", - "CanPort80": true - }, - { - "Name": "11g", - "RegionID": 11, - "HostName": "derp11g.tailscale.com", - "IPv4": "172.237.61.190", - "IPv6": "2600:3c0d::2000:62ff:febe:2e67", - "CanPort80": true - }, - { - "Name": "11e", - "RegionID": 11, - "HostName": "derp11e.tailscale.com", - "IPv4": "172.237.61.194", - "IPv6": "2600:3c0d::2000:d2ff:fe43:1790", - "CanPort80": true - } - ] - }, - "12": { - "RegionID": 12, - "RegionCode": "ord", - "RegionName": "Chicago", - "Latitude": 41.881944, - "Longitude": -87.627778, - "Nodes": [ - { - "Name": "12e", - "RegionID": 12, - "HostName": "derp12e.tailscale.com", - "IPv4": "209.177.158.15", - "IPv6": "2607:f740:e::b17", - "CanPort80": true - }, - { - "Name": "12f", - "RegionID": 12, - "HostName": "derp12f.tailscale.com", - "IPv4": "199.38.182.118", - "IPv6": "2607:f740:e::4c8", - "CanPort80": true - }, - { - "Name": "12d", - "RegionID": 12, - "HostName": "derp12d.tailscale.com", - "IPv4": "209.177.158.246", - "IPv6": "2607:f740:e::811", - "CanPort80": true - } - ] - }, - "13": { - "RegionID": 13, - "RegionCode": "den", - "RegionName": "Denver", - "Latitude": 39.7392, - "Longitude": -104.9849, - "Nodes": [ - { - "Name": "13c", - "RegionID": 13, - "HostName": "derp13c.tailscale.com", - "IPv4": "192.73.242.28", - "IPv6": "2607:f740:16::5c", - "CanPort80": true - }, - { - "Name": "13d", - "RegionID": 13, - "HostName": "derp13d.tailscale.com", - "IPv4": "192.73.242.204", - "IPv6": "2607:f740:16::c23", - "CanPort80": true - }, - { - "Name": "13b", - "RegionID": 13, - "HostName": "derp13b.tailscale.com", - "IPv4": "192.73.242.187", - "IPv6": "2607:f740:16::640", - "CanPort80": true - } - ] - }, - "14": { - "RegionID": 14, - "RegionCode": "ams", - "RegionName": "Amsterdam", - "Latitude": 52.372778, - "Longitude": 4.893611, - "Nodes": [ - { - "Name": "14c", - "RegionID": 14, - "HostName": "derp14c.tailscale.com", - "IPv4": "176.58.93.147", - "IPv6": "2a00:dd80:3c::b09", - "CanPort80": true - }, - { - "Name": "14d", - "RegionID": 14, - "HostName": "derp14d.tailscale.com", - "IPv4": "176.58.93.154", - "IPv6": "2a00:dd80:3c::3d5", - "CanPort80": true - }, - { - "Name": "14b", - "RegionID": 14, - "HostName": "derp14b.tailscale.com", - "IPv4": "176.58.93.248", - "IPv6": "2a00:dd80:3c::807", - "CanPort80": true - } - ] - }, - "15": { - "RegionID": 15, - "RegionCode": "jnb", - "RegionName": "Johannesburg", - "Latitude": -26.204444, - "Longitude": 28.045556, - "Nodes": [ - { - "Name": "15c", - "RegionID": 15, - "HostName": "derp15c.tailscale.com", - "IPv4": "102.67.165.185", - "IPv6": "2c0f:edb0:0:10::b59", - "CanPort80": true - }, - { - "Name": "15d", - "RegionID": 15, - "HostName": "derp15d.tailscale.com", - "IPv4": "102.67.165.36", - "IPv6": "2c0f:edb0:0:10::599", - "CanPort80": true - }, - { - "Name": "15b", - "RegionID": 15, - "HostName": "derp15b.tailscale.com", - "IPv4": "102.67.165.90", - "IPv6": "2c0f:edb0:0:10::963", - "CanPort80": true - } - ] - }, - "16": { - "RegionID": 16, - "RegionCode": "mia", - "RegionName": "Miami", - "Latitude": 25.78, - "Longitude": -80.21, - "Nodes": [ - { - "Name": "16c", - "RegionID": 16, - "HostName": "derp16c.tailscale.com", - "IPv4": "192.73.243.229", - "IPv6": "2607:f740:17::4e4", - "CanPort80": true - }, - { - "Name": "16d", - "RegionID": 16, - "HostName": "derp16d.tailscale.com", - "IPv4": "192.73.243.141", - "IPv6": "2607:f740:17::475", - "CanPort80": true - }, - { - "Name": "16b", - "RegionID": 16, - "HostName": "derp16b.tailscale.com", - "IPv4": "192.73.243.135", - "IPv6": "2607:f740:17::476", - "CanPort80": true - } - ] - }, - "17": { - "RegionID": 17, - "RegionCode": "lax", - "RegionName": "Los Angeles", - "Latitude": 34.05, - "Longitude": -118.25, - "Nodes": [ - { - "Name": "17c", - "RegionID": 17, - "HostName": "derp17c.tailscale.com", - "IPv4": "208.111.40.12", - "IPv6": "2607:f740:c::10", - "CanPort80": true - }, - { - "Name": "17d", - "RegionID": 17, - "HostName": "derp17d.tailscale.com", - "IPv4": "208.111.40.216", - "IPv6": "2607:f740:c::e1b", - "CanPort80": true - }, - { - "Name": "17b", - "RegionID": 17, - "HostName": "derp17b.tailscale.com", - "IPv4": "192.73.244.245", - "IPv6": "2607:f740:c::646", - "CanPort80": true - } - ] - }, - "18": { - "RegionID": 18, - "RegionCode": "par", - "RegionName": "Paris", - "Latitude": 48.856667, - "Longitude": 2.352222, - "Nodes": [ - { - "Name": "18c", - "RegionID": 18, - "HostName": "derp18c.tailscale.com", - "IPv4": "176.58.90.207", - "IPv6": "2a00:dd80:3e::c19", - "CanPort80": true - }, - { - "Name": "18d", - "RegionID": 18, - "HostName": "derp18d.tailscale.com", - "IPv4": "176.58.90.104", - "IPv6": "2a00:dd80:3e::f2e", - "CanPort80": true - }, - { - "Name": "18b", - "RegionID": 18, - "HostName": "derp18b.tailscale.com", - "IPv4": "176.58.90.147", - "IPv6": "2a00:dd80:3e::363", - "CanPort80": true - } - ] - }, - "19": { - "RegionID": 19, - "RegionCode": "mad", - "RegionName": "Madrid", - "Latitude": 40.416944, - "Longitude": -3.703333, - "Nodes": [ - { - "Name": "19c", - "RegionID": 19, - "HostName": "derp19c.tailscale.com", - "IPv4": "45.159.97.61", - "IPv6": "2a00:dd80:14:10::20", - "CanPort80": true - }, - { - "Name": "19d", - "RegionID": 19, - "HostName": "derp19d.tailscale.com", - "IPv4": "45.159.97.233", - "IPv6": "2a00:dd80:14:10::34a", - "CanPort80": true - }, - { - "Name": "19b", - "RegionID": 19, - "HostName": "derp19b.tailscale.com", - "IPv4": "45.159.97.144", - "IPv6": "2a00:dd80:14:10::335", - "CanPort80": true - } - ] - }, - "2": { - "RegionID": 2, - "RegionCode": "sfo", - "RegionName": "San Francisco", - "Latitude": 37.7775, - "Longitude": -122.416389, - "Nodes": [ - { - "Name": "2e", - "RegionID": 2, - "HostName": "derp2e.tailscale.com", - "IPv4": "192.73.252.134", - "IPv6": "2607:f740:0:3f::44c", - "CanPort80": true - }, - { - "Name": "2f", - "RegionID": 2, - "HostName": "derp2f.tailscale.com", - "IPv4": "208.111.34.178", - "IPv6": "2607:f740:0:3f::f4", - "CanPort80": true - }, - { - "Name": "2d", - "RegionID": 2, - "HostName": "derp2d.tailscale.com", - "IPv4": "192.73.252.65", - "IPv6": "2607:f740:0:3f::287", - "CanPort80": true - } - ] - }, - "20": { - "RegionID": 20, - "RegionCode": "hkg", - "RegionName": "Hong Kong", - "Latitude": 22.3193, - "Longitude": 114.1694, - "Nodes": [ - { - "Name": "20c", - "RegionID": 20, - "HostName": "derp20c.tailscale.com", - "IPv4": "205.147.105.30", - "IPv6": "2403:2500:8000:1::5fb", - "CanPort80": true - }, - { - "Name": "20d", - "RegionID": 20, - "HostName": "derp20d.tailscale.com", - "IPv4": "205.147.105.78", - "IPv6": "2403:2500:8000:1::e9a", - "CanPort80": true - }, - { - "Name": "20b", - "RegionID": 20, - "HostName": "derp20b.tailscale.com", - "IPv4": "103.6.84.152", - "IPv6": "2403:2500:8000:1::ef6", - "CanPort80": true - } - ] - }, - "21": { - "RegionID": 21, - "RegionCode": "tor", - "RegionName": "Toronto", - "Latitude": 43.741667, - "Longitude": -79.373333, - "Nodes": [ - { - "Name": "21c", - "RegionID": 21, - "HostName": "derp21c.tailscale.com", - "IPv4": "162.248.221.215", - "IPv6": "2607:f740:50::f10", - "CanPort80": true - }, - { - "Name": "21d", - "RegionID": 21, - "HostName": "derp21d.tailscale.com", - "IPv4": "162.248.221.248", - "IPv6": "2607:f740:50::ca4", - "CanPort80": true - }, - { - "Name": "21b", - "RegionID": 21, - "HostName": "derp21b.tailscale.com", - "IPv4": "162.248.221.199", - "IPv6": "2607:f740:50::1d1", - "CanPort80": true - } - ] - }, - "22": { - "RegionID": 22, - "RegionCode": "waw", - "RegionName": "Warsaw", - "Latitude": 52.23, - "Longitude": 21.011111, - "Nodes": [ - { - "Name": "22c", - "RegionID": 22, - "HostName": "derp22c.tailscale.com", - "IPv4": "45.159.98.253", - "IPv6": "2a00:dd80:40:100::3f", - "CanPort80": true - }, - { - "Name": "22d", - "RegionID": 22, - "HostName": "derp22d.tailscale.com", - "IPv4": "45.159.98.145", - "IPv6": "2a00:dd80:40:100::211", - "CanPort80": true - }, - { - "Name": "22b", - "RegionID": 22, - "HostName": "derp22b.tailscale.com", - "IPv4": "45.159.98.196", - "IPv6": "2a00:dd80:40:100::316", - "CanPort80": true - } - ] - }, - "23": { - "RegionID": 23, - "RegionCode": "dbi", - "RegionName": "Dubai", - "Latitude": 25.263056, - "Longitude": 55.297222, - "Nodes": [ - { - "Name": "23c", - "RegionID": 23, - "HostName": "derp23c.tailscale.com", - "IPv4": "185.34.3.207", - "IPv6": "2a00:dd80:3f:100::a50", - "CanPort80": true - }, - { - "Name": "23d", - "RegionID": 23, - "HostName": "derp23d.tailscale.com", - "IPv4": "185.34.3.75", - "IPv6": "2a00:dd80:3f:100::97e", - "CanPort80": true - }, - { - "Name": "23b", - "RegionID": 23, - "HostName": "derp23b.tailscale.com", - "IPv4": "185.34.3.232", - "IPv6": "2a00:dd80:3f:100::76f", - "CanPort80": true - } - ] - }, - "24": { - "RegionID": 24, - "RegionCode": "hnl", - "RegionName": "Honolulu", - "Latitude": 21.306944, - "Longitude": -157.858333, - "Nodes": [ - { - "Name": "24c", - "RegionID": 24, - "HostName": "derp24c.tailscale.com", - "IPv4": "208.83.233.233", - "IPv6": "2001:19f0:c000:c591:5400:04ff:fe26:2c5f", - "CanPort80": true - }, - { - "Name": "24d", - "RegionID": 24, - "HostName": "derp24d.tailscale.com", - "IPv4": "208.72.155.133", - "IPv6": "2001:19f0:c000:c564:5400:04ff:fe26:2ba8", - "CanPort80": true - }, - { - "Name": "24b", - "RegionID": 24, - "HostName": "derp24b.tailscale.com", - "IPv4": "208.83.234.151", - "IPv6": "2001:19f0:c000:c586:5400:04ff:fe26:2ba6", - "CanPort80": true - } - ] - }, - "25": { - "RegionID": 25, - "RegionCode": "nai", - "RegionName": "Nairobi", - "Latitude": -1.286389, - "Longitude": 36.817222, - "Nodes": [ - { - "Name": "25c", - "RegionID": 25, - "HostName": "derp25c.tailscale.com", - "IPv4": "102.67.167.37", - "IPv6": "2c0f:edb0:2000:1::2c7", - "CanPort80": true - }, - { - "Name": "25d", - "RegionID": 25, - "HostName": "derp25d.tailscale.com", - "IPv4": "102.67.167.188", - "IPv6": "2c0f:edb0:2000:1::188", - "CanPort80": true - }, - { - "Name": "25b", - "RegionID": 25, - "HostName": "derp25b.tailscale.com", - "IPv4": "102.67.167.245", - "IPv6": "2c0f:edb0:2000:1::2e9", - "CanPort80": true - } - ] - }, - "26": { - "RegionID": 26, - "RegionCode": "nue", - "RegionName": "Nuremberg", - "Latitude": 49.453889, - "Longitude": 11.0775, - "Nodes": [ - { - "Name": "26c", - "RegionID": 26, - "HostName": "derp26c.tailscale.com", - "IPv4": "49.12.193.137", - "IPv6": "2a01:4f8:1c1c:5c70::1", - "CanPort80": true - }, - { - "Name": "26d", - "RegionID": 26, - "HostName": "derp26d.tailscale.com", - "IPv4": "49.13.204.141", - "IPv6": "2a01:4f8:1c0c:7d06::1", - "CanPort80": true - }, - { - "Name": "26b", - "RegionID": 26, - "HostName": "derp26b.tailscale.com", - "IPv4": "167.235.72.200", - "IPv6": "2a01:4f8:1c1c:47b6::1", - "CanPort80": true - } - ] - }, - "27": { - "RegionID": 27, - "RegionCode": "iad", - "RegionName": "Ashburn", - "Latitude": 39.03, - "Longitude": -77.471111, - "Nodes": [ - { - "Name": "27d", - "RegionID": 27, - "HostName": "derp27d.tailscale.com", - "IPv4": "178.156.152.106", - "IPv6": "2a01:4ff:f0:3c8e::1", - "CanPort80": true - }, - { - "Name": "27c", - "RegionID": 27, - "HostName": "derp27c.tailscale.com", - "IPv4": "178.156.152.91", - "IPv6": "2a01:4ff:f0:3913::1", - "CanPort80": true - }, - { - "Name": "27e", - "RegionID": 27, - "HostName": "derp27e.tailscale.com", - "IPv4": "178.156.134.232", - "IPv6": "2a01:4ff:f0:28d4::1", - "CanPort80": true - }, - { - "Name": "27b", - "RegionID": 27, - "HostName": "derp27b.tailscale.com", - "IPv4": "5.161.218.233", - "IPv6": "2a01:4ff:f0:3db9::1", - "CanPort80": true - } - ] - }, - "28": { - "RegionID": 28, - "RegionCode": "hel", - "RegionName": "Helsinki", - "Latitude": 60.170833, - "Longitude": 24.9375, - "Nodes": [ - { - "Name": "28c", - "RegionID": 28, - "HostName": "derp28c.tailscale.com", - "IPv4": "95.217.2.165", - "IPv6": "2a01:4f9:c012:cd74::1", - "CanPort80": true - }, - { - "Name": "28d", - "RegionID": 28, - "HostName": "derp28d.tailscale.com", - "IPv4": "157.180.28.32", - "IPv6": "2a01:4f9:c012:2e5b::1", - "CanPort80": true - }, - { - "Name": "28b", - "RegionID": 28, - "HostName": "derp28b.tailscale.com", - "IPv4": "65.109.143.62", - "IPv6": "2a01:4f9:c012:d55c::1", - "CanPort80": true - } - ] - }, - "3": { - "RegionID": 3, - "RegionCode": "sin", - "RegionName": "Singapore", - "Latitude": 1.3521, - "Longitude": 103.8198, - "Nodes": [ - { - "Name": "3g", - "RegionID": 3, - "HostName": "derp3g.tailscale.com", - "IPv4": "172.237.72.79", - "IPv6": "2600:3c15::2000:adff:fe08:6fab", - "CanPort80": true - }, - { - "Name": "3f", - "RegionID": 3, - "HostName": "derp3f.tailscale.com", - "IPv4": "172.237.72.8", - "IPv6": "2600:3c15::2000:53ff:fe48:a668", - "CanPort80": true - }, - { - "Name": "3h", - "RegionID": 3, - "HostName": "derp3h.tailscale.com", - "IPv4": "172.237.66.30", - "IPv6": "2600:3c15::2000:3dff:fe44:50aa", - "CanPort80": true - }, - { - "Name": "3e", - "RegionID": 3, - "HostName": "derp3e.tailscale.com", - "IPv4": "172.237.72.43", - "IPv6": "2600:3c15::2000:6cff:fee4:d799", - "CanPort80": true - } - ] - }, - "4": { - "RegionID": 4, - "RegionCode": "fra", - "RegionName": "Frankfurt", - "Latitude": 50.1109, - "Longitude": 8.6821, - "Nodes": [ - { - "Name": "4h", - "RegionID": 4, - "HostName": "derp4h.tailscale.com", - "IPv4": "185.40.234.77", - "IPv6": "2a00:dd80:20::bcf", - "CanPort80": true - }, - { - "Name": "4g", - "RegionID": 4, - "HostName": "derp4g.tailscale.com", - "IPv4": "185.40.234.113", - "IPv6": "2a00:dd80:20::8f", - "CanPort80": true - }, - { - "Name": "4i", - "RegionID": 4, - "HostName": "derp4i.tailscale.com", - "IPv4": "185.40.234.53", - "IPv6": "2a00:dd80:20::8a6", - "CanPort80": true - }, - { - "Name": "4f", - "RegionID": 4, - "HostName": "derp4f.tailscale.com", - "IPv4": "185.40.234.219", - "IPv6": "2a00:dd80:20::a25", - "CanPort80": true - } - ] - }, - "5": { - "RegionID": 5, - "RegionCode": "syd", - "RegionName": "Sydney", - "Latitude": -33.867778, - "Longitude": 151.21, - "Nodes": [ - { - "Name": "5f", - "RegionID": 5, - "HostName": "derp5f.tailscale.com", - "IPv4": "172.105.166.103", - "IPv6": "2400:8907::2000:ccff:fe1f:80da", - "CanPort80": true - }, - { - "Name": "5g", - "RegionID": 5, - "HostName": "derp5g.tailscale.com", - "IPv4": "172.105.169.57", - "IPv6": "2400:8907::2000:2fff:fea7:57f4", - "CanPort80": true - }, - { - "Name": "5e", - "RegionID": 5, - "HostName": "derp5e.tailscale.com", - "IPv4": "172.105.179.230", - "IPv6": "2400:8907::2000:ceff:fe8d:4f4e", - "CanPort80": true - } - ] - }, - "6": { - "RegionID": 6, - "RegionCode": "blr", - "RegionName": "Bengaluru", - "Latitude": 12.9716, - "Longitude": 77.5946, - "Nodes": [ - { - "Name": "6a", - "RegionID": 6, - "HostName": "derp6.tailscale.com", - "IPv4": "68.183.90.120", - "IPv6": "2400:6180:100:d0::982:d001", - "CanPort80": true - } - ] - }, - "7": { - "RegionID": 7, - "RegionCode": "tok", - "RegionName": "Tokyo", - "Latitude": 35.6764, - "Longitude": 139.65, - "Nodes": [ - { - "Name": "7g", - "RegionID": 7, - "HostName": "derp7g.tailscale.com", - "IPv4": "172.238.6.179", - "IPv6": "2600:3c18::2000:3fff:fe80:3ebd", - "CanPort80": true - }, - { - "Name": "7f", - "RegionID": 7, - "HostName": "derp7f.tailscale.com", - "IPv4": "172.238.6.34", - "IPv6": "2600:3c18::2000:acff:fe8e:3ed5", - "CanPort80": true - }, - { - "Name": "7h", - "RegionID": 7, - "HostName": "derp7h.tailscale.com", - "IPv4": "172.237.28.183", - "IPv6": "2600:3c18::2000:b1ff:fea9:4560", - "CanPort80": true - }, - { - "Name": "7e", - "RegionID": 7, - "HostName": "derp7e.tailscale.com", - "IPv4": "172.238.6.180", - "IPv6": "2600:3c18::2000:60ff:fe0f:6e83", - "STUNOnly": true, - "CanPort80": true - } - ] - }, - "8": { - "RegionID": 8, - "RegionCode": "lhr", - "RegionName": "London", - "Latitude": 51.5072, - "Longitude": 0.1276, - "Nodes": [ - { - "Name": "8f", - "RegionID": 8, - "HostName": "derp8f.tailscale.com", - "IPv4": "176.58.88.183", - "IPv6": "2a00:dd80:3a::dfa", - "CanPort80": true - }, - { - "Name": "8g", - "RegionID": 8, - "HostName": "derp8g.tailscale.com", - "IPv4": "176.58.92.254", - "IPv6": "2a00:dd80:3a::ed", - "CanPort80": true - }, - { - "Name": "8e", - "RegionID": 8, - "HostName": "derp8e.tailscale.com", - "IPv4": "176.58.92.144", - "IPv6": "2a00:dd80:3a::b33", - "CanPort80": true - } - ] - }, - "9": { - "RegionID": 9, - "RegionCode": "dfw", - "RegionName": "Dallas", - "Latitude": 32.779167, - "Longitude": -96.808889, - "Nodes": [ - { - "Name": "9e", - "RegionID": 9, - "HostName": "derp9e.tailscale.com", - "IPv4": "192.73.248.83", - "IPv6": "2607:f740:100::359", - "CanPort80": true - }, - { - "Name": "9f", - "RegionID": 9, - "HostName": "derp9f.tailscale.com", - "IPv4": "209.177.156.197", - "IPv6": "2607:f740:100::cad", - "CanPort80": true - }, - { - "Name": "9d", - "RegionID": 9, - "HostName": "derp9d.tailscale.com", - "IPv4": "209.177.156.94", - "IPv6": "2607:f740:100::c05", - "CanPort80": true - } - ] - } - } - }, - "DisplayMessages": null, - "TKAEnabled": false, - "TKAHead": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", - "Domain": "kratail2tid@passkey", - "DomainAuditLogID": "", - "UserProfiles": { - "3982058329734709": { - "ID": 3982058329734709, - "LoginName": "monitorpasskeykradalby@passkey", - "DisplayName": "monitorpasskeykradalby" - } - } + "PacketFilterRules": 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.124.195.93": { - "peer_name": "exit-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user1/tailscaled.sock whois --json 100.124.195.93", - "response": null - }, - "100.116.18.24": { - "peer_name": "exit-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user1/tailscaled.sock whois --json 100.116.18.24", - "response": null - }, - "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.107.162.14": { - "peer_name": "group-a-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user1/tailscaled.sock whois --json 100.107.162.14", - "response": null - }, - "100.77.135.18": { - "peer_name": "group-b-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user1/tailscaled.sock whois --json 100.77.135.18", - "response": null - }, - "100.105.127.107": { - "peer_name": "multi-exit-router", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user1/tailscaled.sock whois --json 100.105.127.107", - "response": null - }, - "100.109.43.124": { - "peer_name": "router-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user1/tailscaled.sock whois --json 100.109.43.124", - "response": null - }, - "100.65.172.123": { - "peer_name": "router-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user1/tailscaled.sock whois --json 100.65.172.123", - "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 - } - }, "netmap": { - "SelfNode": { - "ID": 539541576444929, - "StableID": "nSq9YrqMD511CNTRL", - "Name": "user1.tail78f774.ts.net.", - "User": 4156223528223174, - "Key": "nodekey:96338a2cd2ea803c915ed8fdf882d66ca0c6a59d0fcf0bc4b3f928d22d1ac743", - "KeyExpiry": "2026-07-22T10:04:13Z", - "DiscoKey": "discokey:94c62b25a93d1474bcbf8b0e5f79763e3b093993c831b0a40e98b875827b232a", - "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:43259", "10.65.0.27:43259", "172.17.0.1:43259"], - "Hostinfo": { - "Hostname": "user1", - "Services": [ - { "Proto": "peerapi4", "Port": 46708 }, - { "Proto": "peerapi6", "Port": 46708 }, - { "Proto": "peerapi-dns-proxy", "Port": 1 } - ] - }, - "Created": "2026-01-23T10:04:13.531671894Z", - "MachineAuthorized": true, - "CapMap": { - "https://tailscale.com/cap/file-sharing": null, - "https://tailscale.com/cap/is-admin": null, - "https://tailscale.com/cap/is-owner": null, - "https://tailscale.com/cap/ssh": null, - "https://tailscale.com/cap/tailnet-lock": null, - "probe-udp-lifetime": null, - "ssh-behavior-v1": null, - "ssh-env-vars": null, - "store-appc-routes": null, - "tailnet-display-name": ["kratail2tid@passkey"] - }, - "ComputedName": "user1", - "ComputedNameWithHost": "user1" - }, - "AllCaps": [ - "ssh-behavior-v1", - "tailnet-display-name", - "https://tailscale.com/cap/is-owner", - "https://tailscale.com/cap/ssh", - "https://tailscale.com/cap/tailnet-lock", - "probe-udp-lifetime", - "ssh-env-vars", - "https://tailscale.com/cap/file-sharing", - "https://tailscale.com/cap/is-admin", - "store-appc-routes" - ], - "NodeKey": "nodekey:96338a2cd2ea803c915ed8fdf882d66ca0c6a59d0fcf0bc4b3f928d22d1ac743", - "MachineKey": "mkey:98b7ed0fef020882cab4324b39ac93b60741794e722411083d0d3cf703833f4a", "Peers": [], - "DNS": { - "Routes": { - "tail78f774.ts.net.": null, - "ts.net.": [{ "Addr": "199.247.155.53" }, { "Addr": "2620:111:8007::53" }] - }, - "Domains": ["tail78f774.ts.net"], - "Proxied": true, - "ExitNodeFilteredSet": [".ts.net", ".tailscale.net"] - }, - "PacketFilter": [], - "PacketFilterRules": null, - "SSHPolicy": { "rules": [] }, - "CollectServices": false, - "DERPMap": { - "Regions": { - "1": { - "RegionID": 1, - "RegionCode": "nyc", - "RegionName": "New York City", - "Latitude": 40.7128, - "Longitude": -74.006, - "Nodes": [ - { - "Name": "1h", - "RegionID": 1, - "HostName": "derp1h.tailscale.com", - "IPv4": "199.38.181.93", - "IPv6": "2607:f740:f::afd", - "CanPort80": true - }, - { - "Name": "1g", - "RegionID": 1, - "HostName": "derp1g.tailscale.com", - "IPv4": "209.177.145.120", - "IPv6": "2607:f740:f::3eb", - "CanPort80": true - }, - { - "Name": "1i", - "RegionID": 1, - "HostName": "derp1i.tailscale.com", - "IPv4": "199.38.181.103", - "IPv6": "2607:f740:f::e19", - "CanPort80": true - }, - { - "Name": "1f", - "RegionID": 1, - "HostName": "derp1f.tailscale.com", - "IPv4": "199.38.181.104", - "IPv6": "2607:f740:f::bc", - "CanPort80": true - } - ] - }, - "10": { - "RegionID": 10, - "RegionCode": "sea", - "RegionName": "Seattle", - "Latitude": 47.609722, - "Longitude": -122.333056, - "Nodes": [ - { - "Name": "10c", - "RegionID": 10, - "HostName": "derp10c.tailscale.com", - "IPv4": "192.73.240.121", - "IPv6": "2607:f740:14::40c", - "CanPort80": true - }, - { - "Name": "10d", - "RegionID": 10, - "HostName": "derp10d.tailscale.com", - "IPv4": "192.73.240.132", - "IPv6": "2607:f740:14::500", - "CanPort80": true - }, - { - "Name": "10b", - "RegionID": 10, - "HostName": "derp10b.tailscale.com", - "IPv4": "192.73.240.161", - "IPv6": "2607:f740:14::61c", - "CanPort80": true - } - ] - }, - "11": { - "RegionID": 11, - "RegionCode": "sao", - "RegionName": "São Paulo", - "Latitude": -23.55, - "Longitude": -46.633333, - "Nodes": [ - { - "Name": "11f", - "RegionID": 11, - "HostName": "derp11f.tailscale.com", - "IPv4": "172.237.61.197", - "IPv6": "2600:3c0d::2000:3bff:fe44:6166", - "CanPort80": true - }, - { - "Name": "11g", - "RegionID": 11, - "HostName": "derp11g.tailscale.com", - "IPv4": "172.237.61.190", - "IPv6": "2600:3c0d::2000:62ff:febe:2e67", - "CanPort80": true - }, - { - "Name": "11e", - "RegionID": 11, - "HostName": "derp11e.tailscale.com", - "IPv4": "172.237.61.194", - "IPv6": "2600:3c0d::2000:d2ff:fe43:1790", - "CanPort80": true - } - ] - }, - "12": { - "RegionID": 12, - "RegionCode": "ord", - "RegionName": "Chicago", - "Latitude": 41.881944, - "Longitude": -87.627778, - "Nodes": [ - { - "Name": "12e", - "RegionID": 12, - "HostName": "derp12e.tailscale.com", - "IPv4": "209.177.158.15", - "IPv6": "2607:f740:e::b17", - "CanPort80": true - }, - { - "Name": "12f", - "RegionID": 12, - "HostName": "derp12f.tailscale.com", - "IPv4": "199.38.182.118", - "IPv6": "2607:f740:e::4c8", - "CanPort80": true - }, - { - "Name": "12d", - "RegionID": 12, - "HostName": "derp12d.tailscale.com", - "IPv4": "209.177.158.246", - "IPv6": "2607:f740:e::811", - "CanPort80": true - } - ] - }, - "13": { - "RegionID": 13, - "RegionCode": "den", - "RegionName": "Denver", - "Latitude": 39.7392, - "Longitude": -104.9849, - "Nodes": [ - { - "Name": "13c", - "RegionID": 13, - "HostName": "derp13c.tailscale.com", - "IPv4": "192.73.242.28", - "IPv6": "2607:f740:16::5c", - "CanPort80": true - }, - { - "Name": "13d", - "RegionID": 13, - "HostName": "derp13d.tailscale.com", - "IPv4": "192.73.242.204", - "IPv6": "2607:f740:16::c23", - "CanPort80": true - }, - { - "Name": "13b", - "RegionID": 13, - "HostName": "derp13b.tailscale.com", - "IPv4": "192.73.242.187", - "IPv6": "2607:f740:16::640", - "CanPort80": true - } - ] - }, - "14": { - "RegionID": 14, - "RegionCode": "ams", - "RegionName": "Amsterdam", - "Latitude": 52.372778, - "Longitude": 4.893611, - "Nodes": [ - { - "Name": "14c", - "RegionID": 14, - "HostName": "derp14c.tailscale.com", - "IPv4": "176.58.93.147", - "IPv6": "2a00:dd80:3c::b09", - "CanPort80": true - }, - { - "Name": "14d", - "RegionID": 14, - "HostName": "derp14d.tailscale.com", - "IPv4": "176.58.93.154", - "IPv6": "2a00:dd80:3c::3d5", - "CanPort80": true - }, - { - "Name": "14b", - "RegionID": 14, - "HostName": "derp14b.tailscale.com", - "IPv4": "176.58.93.248", - "IPv6": "2a00:dd80:3c::807", - "CanPort80": true - } - ] - }, - "15": { - "RegionID": 15, - "RegionCode": "jnb", - "RegionName": "Johannesburg", - "Latitude": -26.204444, - "Longitude": 28.045556, - "Nodes": [ - { - "Name": "15c", - "RegionID": 15, - "HostName": "derp15c.tailscale.com", - "IPv4": "102.67.165.185", - "IPv6": "2c0f:edb0:0:10::b59", - "CanPort80": true - }, - { - "Name": "15d", - "RegionID": 15, - "HostName": "derp15d.tailscale.com", - "IPv4": "102.67.165.36", - "IPv6": "2c0f:edb0:0:10::599", - "CanPort80": true - }, - { - "Name": "15b", - "RegionID": 15, - "HostName": "derp15b.tailscale.com", - "IPv4": "102.67.165.90", - "IPv6": "2c0f:edb0:0:10::963", - "CanPort80": true - } - ] - }, - "16": { - "RegionID": 16, - "RegionCode": "mia", - "RegionName": "Miami", - "Latitude": 25.78, - "Longitude": -80.21, - "Nodes": [ - { - "Name": "16c", - "RegionID": 16, - "HostName": "derp16c.tailscale.com", - "IPv4": "192.73.243.229", - "IPv6": "2607:f740:17::4e4", - "CanPort80": true - }, - { - "Name": "16d", - "RegionID": 16, - "HostName": "derp16d.tailscale.com", - "IPv4": "192.73.243.141", - "IPv6": "2607:f740:17::475", - "CanPort80": true - }, - { - "Name": "16b", - "RegionID": 16, - "HostName": "derp16b.tailscale.com", - "IPv4": "192.73.243.135", - "IPv6": "2607:f740:17::476", - "CanPort80": true - } - ] - }, - "17": { - "RegionID": 17, - "RegionCode": "lax", - "RegionName": "Los Angeles", - "Latitude": 34.05, - "Longitude": -118.25, - "Nodes": [ - { - "Name": "17c", - "RegionID": 17, - "HostName": "derp17c.tailscale.com", - "IPv4": "208.111.40.12", - "IPv6": "2607:f740:c::10", - "CanPort80": true - }, - { - "Name": "17d", - "RegionID": 17, - "HostName": "derp17d.tailscale.com", - "IPv4": "208.111.40.216", - "IPv6": "2607:f740:c::e1b", - "CanPort80": true - }, - { - "Name": "17b", - "RegionID": 17, - "HostName": "derp17b.tailscale.com", - "IPv4": "192.73.244.245", - "IPv6": "2607:f740:c::646", - "CanPort80": true - } - ] - }, - "18": { - "RegionID": 18, - "RegionCode": "par", - "RegionName": "Paris", - "Latitude": 48.856667, - "Longitude": 2.352222, - "Nodes": [ - { - "Name": "18c", - "RegionID": 18, - "HostName": "derp18c.tailscale.com", - "IPv4": "176.58.90.207", - "IPv6": "2a00:dd80:3e::c19", - "CanPort80": true - }, - { - "Name": "18d", - "RegionID": 18, - "HostName": "derp18d.tailscale.com", - "IPv4": "176.58.90.104", - "IPv6": "2a00:dd80:3e::f2e", - "CanPort80": true - }, - { - "Name": "18b", - "RegionID": 18, - "HostName": "derp18b.tailscale.com", - "IPv4": "176.58.90.147", - "IPv6": "2a00:dd80:3e::363", - "CanPort80": true - } - ] - }, - "19": { - "RegionID": 19, - "RegionCode": "mad", - "RegionName": "Madrid", - "Latitude": 40.416944, - "Longitude": -3.703333, - "Nodes": [ - { - "Name": "19c", - "RegionID": 19, - "HostName": "derp19c.tailscale.com", - "IPv4": "45.159.97.61", - "IPv6": "2a00:dd80:14:10::20", - "CanPort80": true - }, - { - "Name": "19d", - "RegionID": 19, - "HostName": "derp19d.tailscale.com", - "IPv4": "45.159.97.233", - "IPv6": "2a00:dd80:14:10::34a", - "CanPort80": true - }, - { - "Name": "19b", - "RegionID": 19, - "HostName": "derp19b.tailscale.com", - "IPv4": "45.159.97.144", - "IPv6": "2a00:dd80:14:10::335", - "CanPort80": true - } - ] - }, - "2": { - "RegionID": 2, - "RegionCode": "sfo", - "RegionName": "San Francisco", - "Latitude": 37.7775, - "Longitude": -122.416389, - "Nodes": [ - { - "Name": "2e", - "RegionID": 2, - "HostName": "derp2e.tailscale.com", - "IPv4": "192.73.252.134", - "IPv6": "2607:f740:0:3f::44c", - "CanPort80": true - }, - { - "Name": "2f", - "RegionID": 2, - "HostName": "derp2f.tailscale.com", - "IPv4": "208.111.34.178", - "IPv6": "2607:f740:0:3f::f4", - "CanPort80": true - }, - { - "Name": "2d", - "RegionID": 2, - "HostName": "derp2d.tailscale.com", - "IPv4": "192.73.252.65", - "IPv6": "2607:f740:0:3f::287", - "CanPort80": true - } - ] - }, - "20": { - "RegionID": 20, - "RegionCode": "hkg", - "RegionName": "Hong Kong", - "Latitude": 22.3193, - "Longitude": 114.1694, - "Nodes": [ - { - "Name": "20c", - "RegionID": 20, - "HostName": "derp20c.tailscale.com", - "IPv4": "205.147.105.30", - "IPv6": "2403:2500:8000:1::5fb", - "CanPort80": true - }, - { - "Name": "20d", - "RegionID": 20, - "HostName": "derp20d.tailscale.com", - "IPv4": "205.147.105.78", - "IPv6": "2403:2500:8000:1::e9a", - "CanPort80": true - }, - { - "Name": "20b", - "RegionID": 20, - "HostName": "derp20b.tailscale.com", - "IPv4": "103.6.84.152", - "IPv6": "2403:2500:8000:1::ef6", - "CanPort80": true - } - ] - }, - "21": { - "RegionID": 21, - "RegionCode": "tor", - "RegionName": "Toronto", - "Latitude": 43.741667, - "Longitude": -79.373333, - "Nodes": [ - { - "Name": "21c", - "RegionID": 21, - "HostName": "derp21c.tailscale.com", - "IPv4": "162.248.221.215", - "IPv6": "2607:f740:50::f10", - "CanPort80": true - }, - { - "Name": "21d", - "RegionID": 21, - "HostName": "derp21d.tailscale.com", - "IPv4": "162.248.221.248", - "IPv6": "2607:f740:50::ca4", - "CanPort80": true - }, - { - "Name": "21b", - "RegionID": 21, - "HostName": "derp21b.tailscale.com", - "IPv4": "162.248.221.199", - "IPv6": "2607:f740:50::1d1", - "CanPort80": true - } - ] - }, - "22": { - "RegionID": 22, - "RegionCode": "waw", - "RegionName": "Warsaw", - "Latitude": 52.23, - "Longitude": 21.011111, - "Nodes": [ - { - "Name": "22c", - "RegionID": 22, - "HostName": "derp22c.tailscale.com", - "IPv4": "45.159.98.253", - "IPv6": "2a00:dd80:40:100::3f", - "CanPort80": true - }, - { - "Name": "22d", - "RegionID": 22, - "HostName": "derp22d.tailscale.com", - "IPv4": "45.159.98.145", - "IPv6": "2a00:dd80:40:100::211", - "CanPort80": true - }, - { - "Name": "22b", - "RegionID": 22, - "HostName": "derp22b.tailscale.com", - "IPv4": "45.159.98.196", - "IPv6": "2a00:dd80:40:100::316", - "CanPort80": true - } - ] - }, - "23": { - "RegionID": 23, - "RegionCode": "dbi", - "RegionName": "Dubai", - "Latitude": 25.263056, - "Longitude": 55.297222, - "Nodes": [ - { - "Name": "23c", - "RegionID": 23, - "HostName": "derp23c.tailscale.com", - "IPv4": "185.34.3.207", - "IPv6": "2a00:dd80:3f:100::a50", - "CanPort80": true - }, - { - "Name": "23d", - "RegionID": 23, - "HostName": "derp23d.tailscale.com", - "IPv4": "185.34.3.75", - "IPv6": "2a00:dd80:3f:100::97e", - "CanPort80": true - }, - { - "Name": "23b", - "RegionID": 23, - "HostName": "derp23b.tailscale.com", - "IPv4": "185.34.3.232", - "IPv6": "2a00:dd80:3f:100::76f", - "CanPort80": true - } - ] - }, - "24": { - "RegionID": 24, - "RegionCode": "hnl", - "RegionName": "Honolulu", - "Latitude": 21.306944, - "Longitude": -157.858333, - "Nodes": [ - { - "Name": "24c", - "RegionID": 24, - "HostName": "derp24c.tailscale.com", - "IPv4": "208.83.233.233", - "IPv6": "2001:19f0:c000:c591:5400:04ff:fe26:2c5f", - "CanPort80": true - }, - { - "Name": "24d", - "RegionID": 24, - "HostName": "derp24d.tailscale.com", - "IPv4": "208.72.155.133", - "IPv6": "2001:19f0:c000:c564:5400:04ff:fe26:2ba8", - "CanPort80": true - }, - { - "Name": "24b", - "RegionID": 24, - "HostName": "derp24b.tailscale.com", - "IPv4": "208.83.234.151", - "IPv6": "2001:19f0:c000:c586:5400:04ff:fe26:2ba6", - "CanPort80": true - } - ] - }, - "25": { - "RegionID": 25, - "RegionCode": "nai", - "RegionName": "Nairobi", - "Latitude": -1.286389, - "Longitude": 36.817222, - "Nodes": [ - { - "Name": "25c", - "RegionID": 25, - "HostName": "derp25c.tailscale.com", - "IPv4": "102.67.167.37", - "IPv6": "2c0f:edb0:2000:1::2c7", - "CanPort80": true - }, - { - "Name": "25d", - "RegionID": 25, - "HostName": "derp25d.tailscale.com", - "IPv4": "102.67.167.188", - "IPv6": "2c0f:edb0:2000:1::188", - "CanPort80": true - }, - { - "Name": "25b", - "RegionID": 25, - "HostName": "derp25b.tailscale.com", - "IPv4": "102.67.167.245", - "IPv6": "2c0f:edb0:2000:1::2e9", - "CanPort80": true - } - ] - }, - "26": { - "RegionID": 26, - "RegionCode": "nue", - "RegionName": "Nuremberg", - "Latitude": 49.453889, - "Longitude": 11.0775, - "Nodes": [ - { - "Name": "26c", - "RegionID": 26, - "HostName": "derp26c.tailscale.com", - "IPv4": "49.12.193.137", - "IPv6": "2a01:4f8:1c1c:5c70::1", - "CanPort80": true - }, - { - "Name": "26d", - "RegionID": 26, - "HostName": "derp26d.tailscale.com", - "IPv4": "49.13.204.141", - "IPv6": "2a01:4f8:1c0c:7d06::1", - "CanPort80": true - }, - { - "Name": "26b", - "RegionID": 26, - "HostName": "derp26b.tailscale.com", - "IPv4": "167.235.72.200", - "IPv6": "2a01:4f8:1c1c:47b6::1", - "CanPort80": true - } - ] - }, - "27": { - "RegionID": 27, - "RegionCode": "iad", - "RegionName": "Ashburn", - "Latitude": 39.03, - "Longitude": -77.471111, - "Nodes": [ - { - "Name": "27d", - "RegionID": 27, - "HostName": "derp27d.tailscale.com", - "IPv4": "178.156.152.106", - "IPv6": "2a01:4ff:f0:3c8e::1", - "CanPort80": true - }, - { - "Name": "27c", - "RegionID": 27, - "HostName": "derp27c.tailscale.com", - "IPv4": "178.156.152.91", - "IPv6": "2a01:4ff:f0:3913::1", - "CanPort80": true - }, - { - "Name": "27e", - "RegionID": 27, - "HostName": "derp27e.tailscale.com", - "IPv4": "178.156.134.232", - "IPv6": "2a01:4ff:f0:28d4::1", - "CanPort80": true - }, - { - "Name": "27b", - "RegionID": 27, - "HostName": "derp27b.tailscale.com", - "IPv4": "5.161.218.233", - "IPv6": "2a01:4ff:f0:3db9::1", - "CanPort80": true - } - ] - }, - "28": { - "RegionID": 28, - "RegionCode": "hel", - "RegionName": "Helsinki", - "Latitude": 60.170833, - "Longitude": 24.9375, - "Nodes": [ - { - "Name": "28c", - "RegionID": 28, - "HostName": "derp28c.tailscale.com", - "IPv4": "95.217.2.165", - "IPv6": "2a01:4f9:c012:cd74::1", - "CanPort80": true - }, - { - "Name": "28d", - "RegionID": 28, - "HostName": "derp28d.tailscale.com", - "IPv4": "157.180.28.32", - "IPv6": "2a01:4f9:c012:2e5b::1", - "CanPort80": true - }, - { - "Name": "28b", - "RegionID": 28, - "HostName": "derp28b.tailscale.com", - "IPv4": "65.109.143.62", - "IPv6": "2a01:4f9:c012:d55c::1", - "CanPort80": true - } - ] - }, - "3": { - "RegionID": 3, - "RegionCode": "sin", - "RegionName": "Singapore", - "Latitude": 1.3521, - "Longitude": 103.8198, - "Nodes": [ - { - "Name": "3g", - "RegionID": 3, - "HostName": "derp3g.tailscale.com", - "IPv4": "172.237.72.79", - "IPv6": "2600:3c15::2000:adff:fe08:6fab", - "CanPort80": true - }, - { - "Name": "3f", - "RegionID": 3, - "HostName": "derp3f.tailscale.com", - "IPv4": "172.237.72.8", - "IPv6": "2600:3c15::2000:53ff:fe48:a668", - "CanPort80": true - }, - { - "Name": "3h", - "RegionID": 3, - "HostName": "derp3h.tailscale.com", - "IPv4": "172.237.66.30", - "IPv6": "2600:3c15::2000:3dff:fe44:50aa", - "CanPort80": true - }, - { - "Name": "3e", - "RegionID": 3, - "HostName": "derp3e.tailscale.com", - "IPv4": "172.237.72.43", - "IPv6": "2600:3c15::2000:6cff:fee4:d799", - "CanPort80": true - } - ] - }, - "4": { - "RegionID": 4, - "RegionCode": "fra", - "RegionName": "Frankfurt", - "Latitude": 50.1109, - "Longitude": 8.6821, - "Nodes": [ - { - "Name": "4h", - "RegionID": 4, - "HostName": "derp4h.tailscale.com", - "IPv4": "185.40.234.77", - "IPv6": "2a00:dd80:20::bcf", - "CanPort80": true - }, - { - "Name": "4g", - "RegionID": 4, - "HostName": "derp4g.tailscale.com", - "IPv4": "185.40.234.113", - "IPv6": "2a00:dd80:20::8f", - "CanPort80": true - }, - { - "Name": "4i", - "RegionID": 4, - "HostName": "derp4i.tailscale.com", - "IPv4": "185.40.234.53", - "IPv6": "2a00:dd80:20::8a6", - "CanPort80": true - }, - { - "Name": "4f", - "RegionID": 4, - "HostName": "derp4f.tailscale.com", - "IPv4": "185.40.234.219", - "IPv6": "2a00:dd80:20::a25", - "CanPort80": true - } - ] - }, - "5": { - "RegionID": 5, - "RegionCode": "syd", - "RegionName": "Sydney", - "Latitude": -33.867778, - "Longitude": 151.21, - "Nodes": [ - { - "Name": "5f", - "RegionID": 5, - "HostName": "derp5f.tailscale.com", - "IPv4": "172.105.166.103", - "IPv6": "2400:8907::2000:ccff:fe1f:80da", - "CanPort80": true - }, - { - "Name": "5g", - "RegionID": 5, - "HostName": "derp5g.tailscale.com", - "IPv4": "172.105.169.57", - "IPv6": "2400:8907::2000:2fff:fea7:57f4", - "CanPort80": true - }, - { - "Name": "5e", - "RegionID": 5, - "HostName": "derp5e.tailscale.com", - "IPv4": "172.105.179.230", - "IPv6": "2400:8907::2000:ceff:fe8d:4f4e", - "CanPort80": true - } - ] - }, - "6": { - "RegionID": 6, - "RegionCode": "blr", - "RegionName": "Bengaluru", - "Latitude": 12.9716, - "Longitude": 77.5946, - "Nodes": [ - { - "Name": "6a", - "RegionID": 6, - "HostName": "derp6.tailscale.com", - "IPv4": "68.183.90.120", - "IPv6": "2400:6180:100:d0::982:d001", - "CanPort80": true - } - ] - }, - "7": { - "RegionID": 7, - "RegionCode": "tok", - "RegionName": "Tokyo", - "Latitude": 35.6764, - "Longitude": 139.65, - "Nodes": [ - { - "Name": "7g", - "RegionID": 7, - "HostName": "derp7g.tailscale.com", - "IPv4": "172.238.6.179", - "IPv6": "2600:3c18::2000:3fff:fe80:3ebd", - "CanPort80": true - }, - { - "Name": "7f", - "RegionID": 7, - "HostName": "derp7f.tailscale.com", - "IPv4": "172.238.6.34", - "IPv6": "2600:3c18::2000:acff:fe8e:3ed5", - "CanPort80": true - }, - { - "Name": "7h", - "RegionID": 7, - "HostName": "derp7h.tailscale.com", - "IPv4": "172.237.28.183", - "IPv6": "2600:3c18::2000:b1ff:fea9:4560", - "CanPort80": true - }, - { - "Name": "7e", - "RegionID": 7, - "HostName": "derp7e.tailscale.com", - "IPv4": "172.238.6.180", - "IPv6": "2600:3c18::2000:60ff:fe0f:6e83", - "STUNOnly": true, - "CanPort80": true - } - ] - }, - "8": { - "RegionID": 8, - "RegionCode": "lhr", - "RegionName": "London", - "Latitude": 51.5072, - "Longitude": 0.1276, - "Nodes": [ - { - "Name": "8f", - "RegionID": 8, - "HostName": "derp8f.tailscale.com", - "IPv4": "176.58.88.183", - "IPv6": "2a00:dd80:3a::dfa", - "CanPort80": true - }, - { - "Name": "8g", - "RegionID": 8, - "HostName": "derp8g.tailscale.com", - "IPv4": "176.58.92.254", - "IPv6": "2a00:dd80:3a::ed", - "CanPort80": true - }, - { - "Name": "8e", - "RegionID": 8, - "HostName": "derp8e.tailscale.com", - "IPv4": "176.58.92.144", - "IPv6": "2a00:dd80:3a::b33", - "CanPort80": true - } - ] - }, - "9": { - "RegionID": 9, - "RegionCode": "dfw", - "RegionName": "Dallas", - "Latitude": 32.779167, - "Longitude": -96.808889, - "Nodes": [ - { - "Name": "9e", - "RegionID": 9, - "HostName": "derp9e.tailscale.com", - "IPv4": "192.73.248.83", - "IPv6": "2607:f740:100::359", - "CanPort80": true - }, - { - "Name": "9f", - "RegionID": 9, - "HostName": "derp9f.tailscale.com", - "IPv4": "209.177.156.197", - "IPv6": "2607:f740:100::cad", - "CanPort80": true - }, - { - "Name": "9d", - "RegionID": 9, - "HostName": "derp9d.tailscale.com", - "IPv4": "209.177.156.94", - "IPv6": "2607:f740:100::c05", - "CanPort80": true - } - ] - } - } - }, - "DisplayMessages": null, - "TKAEnabled": false, - "TKAHead": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", - "Domain": "kratail2tid@passkey", - "DomainAuditLogID": "", - "UserProfiles": { - "4156223528223174": { - "ID": 4156223528223174, - "LoginName": "kratail2tid@passkey", - "DisplayName": "kratail2tid" - } - } + "PacketFilterRules": null } } } diff --git a/hscontrol/policy/v2/testdata/grant_results/GRANT-V16.hujson b/hscontrol/policy/v2/testdata/grant_results/GRANT-V16.hujson index 01b8592a1..73f3811d7 100644 --- a/hscontrol/policy/v2/testdata/grant_results/GRANT-V16.hujson +++ b/hscontrol/policy/v2/testdata/grant_results/GRANT-V16.hujson @@ -5,29 +5,55 @@ // Expected: No filter rules on any node { "test_id": "GRANT-V16", - "timestamp": "2026-03-28T11:51:10Z", - "propagation_wait_seconds": 8, "input": { - "policy_file": "grant_policies_via/grant_v16.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"], - "tag:exit-a": ["kratail2tid@passkey"], - "tag:exit-b": ["kratail2tid@passkey"], - "tag:group-a": ["kratail2tid@passkey"], - "tag:group-b": ["kratail2tid@passkey"], - "tag:router-a": ["kratail2tid@passkey"], - "tag:router-b": ["kratail2tid@passkey"] + "tag:server": [ + "kratail2tid@passkey" + ], + "tag:prod": [ + "kratail2tid@passkey" + ], + "tag:client": [ + "kratail2tid@passkey" + ], + "tag:router": [ + "kratail2tid@passkey" + ], + "tag:exit": [ + "kratail2tid@passkey" + ], + "tag:exit-a": [ + "kratail2tid@passkey" + ], + "tag:exit-b": [ + "kratail2tid@passkey" + ], + "tag:group-a": [ + "kratail2tid@passkey" + ], + "tag:group-b": [ + "kratail2tid@passkey" + ], + "tag:router-a": [ + "kratail2tid@passkey" + ], + "tag:router-b": [ + "kratail2tid@passkey" + ] }, "hosts": { "webserver": "100.108.74.26", @@ -36,162 +62,160 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "10.44.0.0/16": ["tag:router-a"], - "10.55.0.0/16": ["tag:router-b"], - "0.0.0.0/0": ["tag:exit", "tag:exit-a", "tag:exit-b"], - "::/0": ["tag:exit", "tag:exit-a", "tag:exit-b"] + "10.33.0.0/16": [ + "tag:router" + ], + "10.44.0.0/16": [ + "tag:router-a" + ], + "10.55.0.0/16": [ + "tag:router-b" + ], + "0.0.0.0/0": [ + "tag:exit", + "tag:exit-a", + "tag:exit-b" + ], + "::/0": [ + "tag:exit", + "tag:exit-a", + "tag:exit-b" + ] } }, "grants": [ { - "src": ["tag:client", "autogroup:member"], - "dst": ["autogroup:internet"], - "via": ["tag:exit"], - "ip": ["*"] + "src": [ + "tag:client", + "autogroup:member" + ], + "dst": [ + "autogroup:internet" + ], + "via": [ + "tag:exit" + ], + "ip": [ + "*" + ] } ] }, - "grants_section": [ - { "src": ["tag:client", "autogroup:member"], "dst": ["autogroup:internet"], "via": ["tag:exit"], "ip": ["*"] } - ], - "api_endpoint": "https://api.tailscale.com/api/v2/tailnet/kratail2tid%40passkey/acl", - "api_method": "POST", "api_response_code": 200 }, "topology": { "nodes": { "exit-a": { - "mts_name": "exit-a", - "socket": "/home/kradalby/.config/multi-tailscale-dev/exit-a/tailscaled.sock", "hostname": "exit-a", - "user_id": 3118755726458377, - "tags": ["tag:exit-a"], + "tags": [ + "tag:exit-a" + ], "ipv4": "100.124.195.93", "ipv6": "fd7a:115c:a1e0::7837:c35d" }, "exit-b": { - "mts_name": "exit-b", - "socket": "/home/kradalby/.config/multi-tailscale-dev/exit-b/tailscaled.sock", "hostname": "exit-b", - "user_id": 2230775583277936, - "tags": ["tag:exit-b"], + "tags": [ + "tag:exit-b" + ], "ipv4": "100.116.18.24", "ipv6": "fd7a:115c:a1e0::ff37:1218" }, "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"], + "tags": [ + "tag:exit" + ], "ipv4": "100.85.66.106", "ipv6": "fd7a:115c:a1e0::7c37:426a" }, "group-a-client": { - "mts_name": "group-a-client", - "socket": "/home/kradalby/.config/multi-tailscale-dev/group-a-client/tailscaled.sock", "hostname": "group-a-client", - "user_id": 6999435610919250, - "tags": ["tag:group-a"], + "tags": [ + "tag:group-a" + ], "ipv4": "100.107.162.14", "ipv6": "fd7a:115c:a1e0::a237:a20e" }, "group-b-client": { - "mts_name": "group-b-client", - "socket": "/home/kradalby/.config/multi-tailscale-dev/group-b-client/tailscaled.sock", "hostname": "group-b-client", - "user_id": 1008089393782498, - "tags": ["tag:group-b"], + "tags": [ + "tag:group-b" + ], "ipv4": "100.77.135.18", "ipv6": "fd7a:115c:a1e0::4b37:8712" }, "multi-exit-router": { - "mts_name": "multi-exit-router", - "socket": "/home/kradalby/.config/multi-tailscale-dev/multi-exit-router/tailscaled.sock", "hostname": "multi-exit-router", - "user_id": 6294409699640722, - "tags": ["tag:exit", "tag:router"], + "tags": [ + "tag:exit", + "tag:router" + ], "ipv4": "100.105.127.107", "ipv6": "fd7a:115c:a1e0::ad37:7f6b" }, "router-a": { - "mts_name": "router-a", - "socket": "/home/kradalby/.config/multi-tailscale-dev/router-a/tailscaled.sock", "hostname": "router-a", - "user_id": 50590507314324, - "tags": ["tag:router-a"], + "tags": [ + "tag:router-a" + ], "ipv4": "100.109.43.124", "ipv6": "fd7a:115c:a1e0::a537:2b7c" }, "router-b": { - "mts_name": "router-b", - "socket": "/home/kradalby/.config/multi-tailscale-dev/router-b/tailscaled.sock", "hostname": "router-b", - "user_id": 1399889648409786, - "tags": ["tag:router-b"], + "tags": [ + "tag:router-b" + ], "ipv4": "100.65.172.123", "ipv6": "fd7a:115c:a1e0::5a37:ac7c" }, "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"], + "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"], + "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"], + "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"], + "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" @@ -200,16660 +224,108 @@ }, "captures": { "exit-a": { - "commands": { - "packet_filter_rules": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-a/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-a/tailscaled.sock debug localapi POST debug-packet-filter-matches" - }, "packet_filter_rules": null, - "packet_filter_matches": [], - "whois": { - "100.116.18.24": { - "peer_name": "exit-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-a/tailscaled.sock whois --json 100.116.18.24", - "response": null - }, - "100.85.66.106": { - "peer_name": "exit-node", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-a/tailscaled.sock whois --json 100.85.66.106", - "response": null - }, - "100.107.162.14": { - "peer_name": "group-a-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-a/tailscaled.sock whois --json 100.107.162.14", - "response": null - }, - "100.77.135.18": { - "peer_name": "group-b-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-a/tailscaled.sock whois --json 100.77.135.18", - "response": null - }, - "100.105.127.107": { - "peer_name": "multi-exit-router", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-a/tailscaled.sock whois --json 100.105.127.107", - "response": null - }, - "100.109.43.124": { - "peer_name": "router-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-a/tailscaled.sock whois --json 100.109.43.124", - "response": null - }, - "100.65.172.123": { - "peer_name": "router-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-a/tailscaled.sock whois --json 100.65.172.123", - "response": null - }, - "100.92.142.61": { - "peer_name": "subnet-router", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-a/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-a/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-a/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-a/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-a/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-a/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-a/tailscaled.sock whois --json 100.90.199.68", - "response": null - } - }, "netmap": { - "SelfNode": { - "ID": 3118755726458377, - "StableID": "nvFTscRVMR11CNTRL", - "Name": "exit-a.tail78f774.ts.net.", - "User": 3118755726458377, - "Key": "nodekey:21ab6fa3288e3bf8cecced295316c6327f427649765eb1746cc6ee9978bcc35c", - "DiscoKey": "discokey:0c8595f67987ed47cf551646d6266c21a635d622409d10745cc08f6922066e49", - "Addresses": ["100.124.195.93/32", "fd7a:115c:a1e0::7837:c35d/128"], - "AllowedIPs": ["100.124.195.93/32", "fd7a:115c:a1e0::7837:c35d/128"], - "Endpoints": ["77.164.248.136:37550", "10.65.0.27:37550", "172.17.0.1:37550"], - "Hostinfo": { - "Hostname": "exit-a", - "RoutableIPs": ["0.0.0.0/0", "::/0"], - "RequestTags": ["tag:exit-a"], - "Services": [ - { "Proto": "peerapi4", "Port": 57826 }, - { "Proto": "peerapi6", "Port": 57826 }, - { "Proto": "peerapi-dns-proxy", "Port": 1 } - ] - }, - "Created": "2026-03-28T10:37:56.932966573Z", - "Tags": ["tag:exit-a"], - "MachineAuthorized": true, - "CapMap": { - "https://tailscale.com/cap/file-sharing": null, - "https://tailscale.com/cap/is-owner": null, - "https://tailscale.com/cap/ssh": null, - "https://tailscale.com/cap/tailnet-lock": null, - "probe-udp-lifetime": null, - "ssh-behavior-v1": null, - "ssh-env-vars": null, - "store-appc-routes": null, - "tailnet-display-name": ["kratail2tid@passkey"] - }, - "ComputedName": "exit-a", - "ComputedNameWithHost": "exit-a" - }, - "AllCaps": [ - "https://tailscale.com/cap/tailnet-lock", - "probe-udp-lifetime", - "ssh-env-vars", - "ssh-behavior-v1", - "tailnet-display-name", - "https://tailscale.com/cap/is-owner", - "https://tailscale.com/cap/file-sharing", - "store-appc-routes", - "https://tailscale.com/cap/ssh" - ], - "NodeKey": "nodekey:21ab6fa3288e3bf8cecced295316c6327f427649765eb1746cc6ee9978bcc35c", - "MachineKey": "mkey:d4a36168723163165bbdcb0b17762903171593d01c26c5bb12216932f6d10876", "Peers": [], - "DNS": { - "Routes": { - "tail78f774.ts.net.": null, - "ts.net.": [{ "Addr": "199.247.155.53" }, { "Addr": "2620:111:8007::53" }] - }, - "Domains": ["tail78f774.ts.net"], - "Proxied": true, - "ExitNodeFilteredSet": [".ts.net", ".tailscale.net"] - }, - "PacketFilter": [], - "PacketFilterRules": null, - "SSHPolicy": { "rules": [] }, - "CollectServices": false, - "DERPMap": { - "Regions": { - "1": { - "RegionID": 1, - "RegionCode": "nyc", - "RegionName": "New York City", - "Latitude": 40.7128, - "Longitude": -74.006, - "Nodes": [ - { - "Name": "1h", - "RegionID": 1, - "HostName": "derp1h.tailscale.com", - "IPv4": "199.38.181.93", - "IPv6": "2607:f740:f::afd", - "CanPort80": true - }, - { - "Name": "1g", - "RegionID": 1, - "HostName": "derp1g.tailscale.com", - "IPv4": "209.177.145.120", - "IPv6": "2607:f740:f::3eb", - "CanPort80": true - }, - { - "Name": "1i", - "RegionID": 1, - "HostName": "derp1i.tailscale.com", - "IPv4": "199.38.181.103", - "IPv6": "2607:f740:f::e19", - "CanPort80": true - }, - { - "Name": "1f", - "RegionID": 1, - "HostName": "derp1f.tailscale.com", - "IPv4": "199.38.181.104", - "IPv6": "2607:f740:f::bc", - "CanPort80": true - } - ] - }, - "10": { - "RegionID": 10, - "RegionCode": "sea", - "RegionName": "Seattle", - "Latitude": 47.609722, - "Longitude": -122.333056, - "Nodes": [ - { - "Name": "10c", - "RegionID": 10, - "HostName": "derp10c.tailscale.com", - "IPv4": "192.73.240.121", - "IPv6": "2607:f740:14::40c", - "CanPort80": true - }, - { - "Name": "10d", - "RegionID": 10, - "HostName": "derp10d.tailscale.com", - "IPv4": "192.73.240.132", - "IPv6": "2607:f740:14::500", - "CanPort80": true - }, - { - "Name": "10b", - "RegionID": 10, - "HostName": "derp10b.tailscale.com", - "IPv4": "192.73.240.161", - "IPv6": "2607:f740:14::61c", - "CanPort80": true - } - ] - }, - "11": { - "RegionID": 11, - "RegionCode": "sao", - "RegionName": "São Paulo", - "Latitude": -23.55, - "Longitude": -46.633333, - "Nodes": [ - { - "Name": "11f", - "RegionID": 11, - "HostName": "derp11f.tailscale.com", - "IPv4": "172.237.61.197", - "IPv6": "2600:3c0d::2000:3bff:fe44:6166", - "CanPort80": true - }, - { - "Name": "11g", - "RegionID": 11, - "HostName": "derp11g.tailscale.com", - "IPv4": "172.237.61.190", - "IPv6": "2600:3c0d::2000:62ff:febe:2e67", - "CanPort80": true - }, - { - "Name": "11e", - "RegionID": 11, - "HostName": "derp11e.tailscale.com", - "IPv4": "172.237.61.194", - "IPv6": "2600:3c0d::2000:d2ff:fe43:1790", - "CanPort80": true - } - ] - }, - "12": { - "RegionID": 12, - "RegionCode": "ord", - "RegionName": "Chicago", - "Latitude": 41.881944, - "Longitude": -87.627778, - "Nodes": [ - { - "Name": "12e", - "RegionID": 12, - "HostName": "derp12e.tailscale.com", - "IPv4": "209.177.158.15", - "IPv6": "2607:f740:e::b17", - "CanPort80": true - }, - { - "Name": "12f", - "RegionID": 12, - "HostName": "derp12f.tailscale.com", - "IPv4": "199.38.182.118", - "IPv6": "2607:f740:e::4c8", - "CanPort80": true - }, - { - "Name": "12d", - "RegionID": 12, - "HostName": "derp12d.tailscale.com", - "IPv4": "209.177.158.246", - "IPv6": "2607:f740:e::811", - "CanPort80": true - } - ] - }, - "13": { - "RegionID": 13, - "RegionCode": "den", - "RegionName": "Denver", - "Latitude": 39.7392, - "Longitude": -104.9849, - "Nodes": [ - { - "Name": "13c", - "RegionID": 13, - "HostName": "derp13c.tailscale.com", - "IPv4": "192.73.242.28", - "IPv6": "2607:f740:16::5c", - "CanPort80": true - }, - { - "Name": "13d", - "RegionID": 13, - "HostName": "derp13d.tailscale.com", - "IPv4": "192.73.242.204", - "IPv6": "2607:f740:16::c23", - "CanPort80": true - }, - { - "Name": "13b", - "RegionID": 13, - "HostName": "derp13b.tailscale.com", - "IPv4": "192.73.242.187", - "IPv6": "2607:f740:16::640", - "CanPort80": true - } - ] - }, - "14": { - "RegionID": 14, - "RegionCode": "ams", - "RegionName": "Amsterdam", - "Latitude": 52.372778, - "Longitude": 4.893611, - "Nodes": [ - { - "Name": "14c", - "RegionID": 14, - "HostName": "derp14c.tailscale.com", - "IPv4": "176.58.93.147", - "IPv6": "2a00:dd80:3c::b09", - "CanPort80": true - }, - { - "Name": "14d", - "RegionID": 14, - "HostName": "derp14d.tailscale.com", - "IPv4": "176.58.93.154", - "IPv6": "2a00:dd80:3c::3d5", - "CanPort80": true - }, - { - "Name": "14b", - "RegionID": 14, - "HostName": "derp14b.tailscale.com", - "IPv4": "176.58.93.248", - "IPv6": "2a00:dd80:3c::807", - "CanPort80": true - } - ] - }, - "15": { - "RegionID": 15, - "RegionCode": "jnb", - "RegionName": "Johannesburg", - "Latitude": -26.204444, - "Longitude": 28.045556, - "Nodes": [ - { - "Name": "15c", - "RegionID": 15, - "HostName": "derp15c.tailscale.com", - "IPv4": "102.67.165.185", - "IPv6": "2c0f:edb0:0:10::b59", - "CanPort80": true - }, - { - "Name": "15d", - "RegionID": 15, - "HostName": "derp15d.tailscale.com", - "IPv4": "102.67.165.36", - "IPv6": "2c0f:edb0:0:10::599", - "CanPort80": true - }, - { - "Name": "15b", - "RegionID": 15, - "HostName": "derp15b.tailscale.com", - "IPv4": "102.67.165.90", - "IPv6": "2c0f:edb0:0:10::963", - "CanPort80": true - } - ] - }, - "16": { - "RegionID": 16, - "RegionCode": "mia", - "RegionName": "Miami", - "Latitude": 25.78, - "Longitude": -80.21, - "Nodes": [ - { - "Name": "16c", - "RegionID": 16, - "HostName": "derp16c.tailscale.com", - "IPv4": "192.73.243.229", - "IPv6": "2607:f740:17::4e4", - "CanPort80": true - }, - { - "Name": "16d", - "RegionID": 16, - "HostName": "derp16d.tailscale.com", - "IPv4": "192.73.243.141", - "IPv6": "2607:f740:17::475", - "CanPort80": true - }, - { - "Name": "16b", - "RegionID": 16, - "HostName": "derp16b.tailscale.com", - "IPv4": "192.73.243.135", - "IPv6": "2607:f740:17::476", - "CanPort80": true - } - ] - }, - "17": { - "RegionID": 17, - "RegionCode": "lax", - "RegionName": "Los Angeles", - "Latitude": 34.05, - "Longitude": -118.25, - "Nodes": [ - { - "Name": "17c", - "RegionID": 17, - "HostName": "derp17c.tailscale.com", - "IPv4": "208.111.40.12", - "IPv6": "2607:f740:c::10", - "CanPort80": true - }, - { - "Name": "17d", - "RegionID": 17, - "HostName": "derp17d.tailscale.com", - "IPv4": "208.111.40.216", - "IPv6": "2607:f740:c::e1b", - "CanPort80": true - }, - { - "Name": "17b", - "RegionID": 17, - "HostName": "derp17b.tailscale.com", - "IPv4": "192.73.244.245", - "IPv6": "2607:f740:c::646", - "CanPort80": true - } - ] - }, - "18": { - "RegionID": 18, - "RegionCode": "par", - "RegionName": "Paris", - "Latitude": 48.856667, - "Longitude": 2.352222, - "Nodes": [ - { - "Name": "18c", - "RegionID": 18, - "HostName": "derp18c.tailscale.com", - "IPv4": "176.58.90.207", - "IPv6": "2a00:dd80:3e::c19", - "CanPort80": true - }, - { - "Name": "18d", - "RegionID": 18, - "HostName": "derp18d.tailscale.com", - "IPv4": "176.58.90.104", - "IPv6": "2a00:dd80:3e::f2e", - "CanPort80": true - }, - { - "Name": "18b", - "RegionID": 18, - "HostName": "derp18b.tailscale.com", - "IPv4": "176.58.90.147", - "IPv6": "2a00:dd80:3e::363", - "CanPort80": true - } - ] - }, - "19": { - "RegionID": 19, - "RegionCode": "mad", - "RegionName": "Madrid", - "Latitude": 40.416944, - "Longitude": -3.703333, - "Nodes": [ - { - "Name": "19c", - "RegionID": 19, - "HostName": "derp19c.tailscale.com", - "IPv4": "45.159.97.61", - "IPv6": "2a00:dd80:14:10::20", - "CanPort80": true - }, - { - "Name": "19d", - "RegionID": 19, - "HostName": "derp19d.tailscale.com", - "IPv4": "45.159.97.233", - "IPv6": "2a00:dd80:14:10::34a", - "CanPort80": true - }, - { - "Name": "19b", - "RegionID": 19, - "HostName": "derp19b.tailscale.com", - "IPv4": "45.159.97.144", - "IPv6": "2a00:dd80:14:10::335", - "CanPort80": true - } - ] - }, - "2": { - "RegionID": 2, - "RegionCode": "sfo", - "RegionName": "San Francisco", - "Latitude": 37.7775, - "Longitude": -122.416389, - "Nodes": [ - { - "Name": "2e", - "RegionID": 2, - "HostName": "derp2e.tailscale.com", - "IPv4": "192.73.252.134", - "IPv6": "2607:f740:0:3f::44c", - "CanPort80": true - }, - { - "Name": "2f", - "RegionID": 2, - "HostName": "derp2f.tailscale.com", - "IPv4": "208.111.34.178", - "IPv6": "2607:f740:0:3f::f4", - "CanPort80": true - }, - { - "Name": "2d", - "RegionID": 2, - "HostName": "derp2d.tailscale.com", - "IPv4": "192.73.252.65", - "IPv6": "2607:f740:0:3f::287", - "CanPort80": true - } - ] - }, - "20": { - "RegionID": 20, - "RegionCode": "hkg", - "RegionName": "Hong Kong", - "Latitude": 22.3193, - "Longitude": 114.1694, - "Nodes": [ - { - "Name": "20c", - "RegionID": 20, - "HostName": "derp20c.tailscale.com", - "IPv4": "205.147.105.30", - "IPv6": "2403:2500:8000:1::5fb", - "CanPort80": true - }, - { - "Name": "20d", - "RegionID": 20, - "HostName": "derp20d.tailscale.com", - "IPv4": "205.147.105.78", - "IPv6": "2403:2500:8000:1::e9a", - "CanPort80": true - }, - { - "Name": "20b", - "RegionID": 20, - "HostName": "derp20b.tailscale.com", - "IPv4": "103.6.84.152", - "IPv6": "2403:2500:8000:1::ef6", - "CanPort80": true - } - ] - }, - "21": { - "RegionID": 21, - "RegionCode": "tor", - "RegionName": "Toronto", - "Latitude": 43.741667, - "Longitude": -79.373333, - "Nodes": [ - { - "Name": "21c", - "RegionID": 21, - "HostName": "derp21c.tailscale.com", - "IPv4": "162.248.221.215", - "IPv6": "2607:f740:50::f10", - "CanPort80": true - }, - { - "Name": "21d", - "RegionID": 21, - "HostName": "derp21d.tailscale.com", - "IPv4": "162.248.221.248", - "IPv6": "2607:f740:50::ca4", - "CanPort80": true - }, - { - "Name": "21b", - "RegionID": 21, - "HostName": "derp21b.tailscale.com", - "IPv4": "162.248.221.199", - "IPv6": "2607:f740:50::1d1", - "CanPort80": true - } - ] - }, - "22": { - "RegionID": 22, - "RegionCode": "waw", - "RegionName": "Warsaw", - "Latitude": 52.23, - "Longitude": 21.011111, - "Nodes": [ - { - "Name": "22c", - "RegionID": 22, - "HostName": "derp22c.tailscale.com", - "IPv4": "45.159.98.253", - "IPv6": "2a00:dd80:40:100::3f", - "CanPort80": true - }, - { - "Name": "22d", - "RegionID": 22, - "HostName": "derp22d.tailscale.com", - "IPv4": "45.159.98.145", - "IPv6": "2a00:dd80:40:100::211", - "CanPort80": true - }, - { - "Name": "22b", - "RegionID": 22, - "HostName": "derp22b.tailscale.com", - "IPv4": "45.159.98.196", - "IPv6": "2a00:dd80:40:100::316", - "CanPort80": true - } - ] - }, - "23": { - "RegionID": 23, - "RegionCode": "dbi", - "RegionName": "Dubai", - "Latitude": 25.263056, - "Longitude": 55.297222, - "Nodes": [ - { - "Name": "23c", - "RegionID": 23, - "HostName": "derp23c.tailscale.com", - "IPv4": "185.34.3.207", - "IPv6": "2a00:dd80:3f:100::a50", - "CanPort80": true - }, - { - "Name": "23d", - "RegionID": 23, - "HostName": "derp23d.tailscale.com", - "IPv4": "185.34.3.75", - "IPv6": "2a00:dd80:3f:100::97e", - "CanPort80": true - }, - { - "Name": "23b", - "RegionID": 23, - "HostName": "derp23b.tailscale.com", - "IPv4": "185.34.3.232", - "IPv6": "2a00:dd80:3f:100::76f", - "CanPort80": true - } - ] - }, - "24": { - "RegionID": 24, - "RegionCode": "hnl", - "RegionName": "Honolulu", - "Latitude": 21.306944, - "Longitude": -157.858333, - "Nodes": [ - { - "Name": "24c", - "RegionID": 24, - "HostName": "derp24c.tailscale.com", - "IPv4": "208.83.233.233", - "IPv6": "2001:19f0:c000:c591:5400:04ff:fe26:2c5f", - "CanPort80": true - }, - { - "Name": "24d", - "RegionID": 24, - "HostName": "derp24d.tailscale.com", - "IPv4": "208.72.155.133", - "IPv6": "2001:19f0:c000:c564:5400:04ff:fe26:2ba8", - "CanPort80": true - }, - { - "Name": "24b", - "RegionID": 24, - "HostName": "derp24b.tailscale.com", - "IPv4": "208.83.234.151", - "IPv6": "2001:19f0:c000:c586:5400:04ff:fe26:2ba6", - "CanPort80": true - } - ] - }, - "25": { - "RegionID": 25, - "RegionCode": "nai", - "RegionName": "Nairobi", - "Latitude": -1.286389, - "Longitude": 36.817222, - "Nodes": [ - { - "Name": "25c", - "RegionID": 25, - "HostName": "derp25c.tailscale.com", - "IPv4": "102.67.167.37", - "IPv6": "2c0f:edb0:2000:1::2c7", - "CanPort80": true - }, - { - "Name": "25d", - "RegionID": 25, - "HostName": "derp25d.tailscale.com", - "IPv4": "102.67.167.188", - "IPv6": "2c0f:edb0:2000:1::188", - "CanPort80": true - }, - { - "Name": "25b", - "RegionID": 25, - "HostName": "derp25b.tailscale.com", - "IPv4": "102.67.167.245", - "IPv6": "2c0f:edb0:2000:1::2e9", - "CanPort80": true - } - ] - }, - "26": { - "RegionID": 26, - "RegionCode": "nue", - "RegionName": "Nuremberg", - "Latitude": 49.453889, - "Longitude": 11.0775, - "Nodes": [ - { - "Name": "26c", - "RegionID": 26, - "HostName": "derp26c.tailscale.com", - "IPv4": "49.12.193.137", - "IPv6": "2a01:4f8:1c1c:5c70::1", - "CanPort80": true - }, - { - "Name": "26d", - "RegionID": 26, - "HostName": "derp26d.tailscale.com", - "IPv4": "49.13.204.141", - "IPv6": "2a01:4f8:1c0c:7d06::1", - "CanPort80": true - }, - { - "Name": "26b", - "RegionID": 26, - "HostName": "derp26b.tailscale.com", - "IPv4": "167.235.72.200", - "IPv6": "2a01:4f8:1c1c:47b6::1", - "CanPort80": true - } - ] - }, - "27": { - "RegionID": 27, - "RegionCode": "iad", - "RegionName": "Ashburn", - "Latitude": 39.03, - "Longitude": -77.471111, - "Nodes": [ - { - "Name": "27d", - "RegionID": 27, - "HostName": "derp27d.tailscale.com", - "IPv4": "178.156.152.106", - "IPv6": "2a01:4ff:f0:3c8e::1", - "CanPort80": true - }, - { - "Name": "27c", - "RegionID": 27, - "HostName": "derp27c.tailscale.com", - "IPv4": "178.156.152.91", - "IPv6": "2a01:4ff:f0:3913::1", - "CanPort80": true - }, - { - "Name": "27e", - "RegionID": 27, - "HostName": "derp27e.tailscale.com", - "IPv4": "178.156.134.232", - "IPv6": "2a01:4ff:f0:28d4::1", - "CanPort80": true - }, - { - "Name": "27b", - "RegionID": 27, - "HostName": "derp27b.tailscale.com", - "IPv4": "5.161.218.233", - "IPv6": "2a01:4ff:f0:3db9::1", - "CanPort80": true - } - ] - }, - "28": { - "RegionID": 28, - "RegionCode": "hel", - "RegionName": "Helsinki", - "Latitude": 60.170833, - "Longitude": 24.9375, - "Nodes": [ - { - "Name": "28c", - "RegionID": 28, - "HostName": "derp28c.tailscale.com", - "IPv4": "95.217.2.165", - "IPv6": "2a01:4f9:c012:cd74::1", - "CanPort80": true - }, - { - "Name": "28d", - "RegionID": 28, - "HostName": "derp28d.tailscale.com", - "IPv4": "157.180.28.32", - "IPv6": "2a01:4f9:c012:2e5b::1", - "CanPort80": true - }, - { - "Name": "28b", - "RegionID": 28, - "HostName": "derp28b.tailscale.com", - "IPv4": "65.109.143.62", - "IPv6": "2a01:4f9:c012:d55c::1", - "CanPort80": true - } - ] - }, - "3": { - "RegionID": 3, - "RegionCode": "sin", - "RegionName": "Singapore", - "Latitude": 1.3521, - "Longitude": 103.8198, - "Nodes": [ - { - "Name": "3g", - "RegionID": 3, - "HostName": "derp3g.tailscale.com", - "IPv4": "172.237.72.79", - "IPv6": "2600:3c15::2000:adff:fe08:6fab", - "CanPort80": true - }, - { - "Name": "3f", - "RegionID": 3, - "HostName": "derp3f.tailscale.com", - "IPv4": "172.237.72.8", - "IPv6": "2600:3c15::2000:53ff:fe48:a668", - "CanPort80": true - }, - { - "Name": "3h", - "RegionID": 3, - "HostName": "derp3h.tailscale.com", - "IPv4": "172.237.66.30", - "IPv6": "2600:3c15::2000:3dff:fe44:50aa", - "CanPort80": true - }, - { - "Name": "3e", - "RegionID": 3, - "HostName": "derp3e.tailscale.com", - "IPv4": "172.237.72.43", - "IPv6": "2600:3c15::2000:6cff:fee4:d799", - "CanPort80": true - } - ] - }, - "4": { - "RegionID": 4, - "RegionCode": "fra", - "RegionName": "Frankfurt", - "Latitude": 50.1109, - "Longitude": 8.6821, - "Nodes": [ - { - "Name": "4h", - "RegionID": 4, - "HostName": "derp4h.tailscale.com", - "IPv4": "185.40.234.77", - "IPv6": "2a00:dd80:20::bcf", - "CanPort80": true - }, - { - "Name": "4g", - "RegionID": 4, - "HostName": "derp4g.tailscale.com", - "IPv4": "185.40.234.113", - "IPv6": "2a00:dd80:20::8f", - "CanPort80": true - }, - { - "Name": "4i", - "RegionID": 4, - "HostName": "derp4i.tailscale.com", - "IPv4": "185.40.234.53", - "IPv6": "2a00:dd80:20::8a6", - "CanPort80": true - }, - { - "Name": "4f", - "RegionID": 4, - "HostName": "derp4f.tailscale.com", - "IPv4": "185.40.234.219", - "IPv6": "2a00:dd80:20::a25", - "CanPort80": true - } - ] - }, - "5": { - "RegionID": 5, - "RegionCode": "syd", - "RegionName": "Sydney", - "Latitude": -33.867778, - "Longitude": 151.21, - "Nodes": [ - { - "Name": "5f", - "RegionID": 5, - "HostName": "derp5f.tailscale.com", - "IPv4": "172.105.166.103", - "IPv6": "2400:8907::2000:ccff:fe1f:80da", - "CanPort80": true - }, - { - "Name": "5g", - "RegionID": 5, - "HostName": "derp5g.tailscale.com", - "IPv4": "172.105.169.57", - "IPv6": "2400:8907::2000:2fff:fea7:57f4", - "CanPort80": true - }, - { - "Name": "5e", - "RegionID": 5, - "HostName": "derp5e.tailscale.com", - "IPv4": "172.105.179.230", - "IPv6": "2400:8907::2000:ceff:fe8d:4f4e", - "CanPort80": true - } - ] - }, - "6": { - "RegionID": 6, - "RegionCode": "blr", - "RegionName": "Bengaluru", - "Latitude": 12.9716, - "Longitude": 77.5946, - "Nodes": [ - { - "Name": "6a", - "RegionID": 6, - "HostName": "derp6.tailscale.com", - "IPv4": "68.183.90.120", - "IPv6": "2400:6180:100:d0::982:d001", - "CanPort80": true - } - ] - }, - "7": { - "RegionID": 7, - "RegionCode": "tok", - "RegionName": "Tokyo", - "Latitude": 35.6764, - "Longitude": 139.65, - "Nodes": [ - { - "Name": "7g", - "RegionID": 7, - "HostName": "derp7g.tailscale.com", - "IPv4": "172.238.6.179", - "IPv6": "2600:3c18::2000:3fff:fe80:3ebd", - "CanPort80": true - }, - { - "Name": "7f", - "RegionID": 7, - "HostName": "derp7f.tailscale.com", - "IPv4": "172.238.6.34", - "IPv6": "2600:3c18::2000:acff:fe8e:3ed5", - "CanPort80": true - }, - { - "Name": "7h", - "RegionID": 7, - "HostName": "derp7h.tailscale.com", - "IPv4": "172.237.28.183", - "IPv6": "2600:3c18::2000:b1ff:fea9:4560", - "CanPort80": true - }, - { - "Name": "7e", - "RegionID": 7, - "HostName": "derp7e.tailscale.com", - "IPv4": "172.238.6.180", - "IPv6": "2600:3c18::2000:60ff:fe0f:6e83", - "STUNOnly": true, - "CanPort80": true - } - ] - }, - "8": { - "RegionID": 8, - "RegionCode": "lhr", - "RegionName": "London", - "Latitude": 51.5072, - "Longitude": 0.1276, - "Nodes": [ - { - "Name": "8f", - "RegionID": 8, - "HostName": "derp8f.tailscale.com", - "IPv4": "176.58.88.183", - "IPv6": "2a00:dd80:3a::dfa", - "CanPort80": true - }, - { - "Name": "8g", - "RegionID": 8, - "HostName": "derp8g.tailscale.com", - "IPv4": "176.58.92.254", - "IPv6": "2a00:dd80:3a::ed", - "CanPort80": true - }, - { - "Name": "8e", - "RegionID": 8, - "HostName": "derp8e.tailscale.com", - "IPv4": "176.58.92.144", - "IPv6": "2a00:dd80:3a::b33", - "CanPort80": true - } - ] - }, - "9": { - "RegionID": 9, - "RegionCode": "dfw", - "RegionName": "Dallas", - "Latitude": 32.779167, - "Longitude": -96.808889, - "Nodes": [ - { - "Name": "9e", - "RegionID": 9, - "HostName": "derp9e.tailscale.com", - "IPv4": "192.73.248.83", - "IPv6": "2607:f740:100::359", - "CanPort80": true - }, - { - "Name": "9f", - "RegionID": 9, - "HostName": "derp9f.tailscale.com", - "IPv4": "209.177.156.197", - "IPv6": "2607:f740:100::cad", - "CanPort80": true - }, - { - "Name": "9d", - "RegionID": 9, - "HostName": "derp9d.tailscale.com", - "IPv4": "209.177.156.94", - "IPv6": "2607:f740:100::c05", - "CanPort80": true - } - ] - } - } - }, - "DisplayMessages": null, - "TKAEnabled": false, - "TKAHead": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", - "Domain": "kratail2tid@passkey", - "DomainAuditLogID": "", - "UserProfiles": { - "3118755726458377": { - "ID": 3118755726458377, - "LoginName": "exit-a.tail78f774.ts.net", - "DisplayName": "exit-a" - } - } + "PacketFilterRules": null } }, "exit-b": { - "commands": { - "packet_filter_rules": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-b/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-b/tailscaled.sock debug localapi POST debug-packet-filter-matches" - }, "packet_filter_rules": null, - "packet_filter_matches": [], - "whois": { - "100.124.195.93": { - "peer_name": "exit-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-b/tailscaled.sock whois --json 100.124.195.93", - "response": null - }, - "100.85.66.106": { - "peer_name": "exit-node", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-b/tailscaled.sock whois --json 100.85.66.106", - "response": null - }, - "100.107.162.14": { - "peer_name": "group-a-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-b/tailscaled.sock whois --json 100.107.162.14", - "response": null - }, - "100.77.135.18": { - "peer_name": "group-b-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-b/tailscaled.sock whois --json 100.77.135.18", - "response": null - }, - "100.105.127.107": { - "peer_name": "multi-exit-router", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-b/tailscaled.sock whois --json 100.105.127.107", - "response": null - }, - "100.109.43.124": { - "peer_name": "router-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-b/tailscaled.sock whois --json 100.109.43.124", - "response": null - }, - "100.65.172.123": { - "peer_name": "router-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-b/tailscaled.sock whois --json 100.65.172.123", - "response": null - }, - "100.92.142.61": { - "peer_name": "subnet-router", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-b/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-b/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-b/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-b/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-b/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-b/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-b/tailscaled.sock whois --json 100.90.199.68", - "response": null - } - }, "netmap": { - "SelfNode": { - "ID": 2230775583277936, - "StableID": "ndK1N8hKRJ11CNTRL", - "Name": "exit-b.tail78f774.ts.net.", - "User": 2230775583277936, - "Key": "nodekey:265e1377372be0d036773ac41339bf7b53ed18e9f67f196d7d517abeff741217", - "DiscoKey": "discokey:63071b08ff89860a2d98005f8f6f65f3b92e05b7b1338b1be71e4ad866f12728", - "Addresses": ["100.116.18.24/32", "fd7a:115c:a1e0::ff37:1218/128"], - "AllowedIPs": ["100.116.18.24/32", "fd7a:115c:a1e0::ff37:1218/128"], - "Endpoints": ["77.164.248.136:35565", "10.65.0.27:35565", "172.17.0.1:35565"], - "Hostinfo": { - "Hostname": "exit-b", - "RoutableIPs": ["0.0.0.0/0", "::/0"], - "RequestTags": ["tag:exit-b"], - "Services": [ - { "Proto": "peerapi4", "Port": 61723 }, - { "Proto": "peerapi6", "Port": 61723 }, - { "Proto": "peerapi-dns-proxy", "Port": 1 } - ] - }, - "Created": "2026-03-28T10:38:00.655990366Z", - "Tags": ["tag:exit-b"], - "MachineAuthorized": true, - "CapMap": { - "https://tailscale.com/cap/file-sharing": null, - "https://tailscale.com/cap/is-owner": null, - "https://tailscale.com/cap/ssh": null, - "https://tailscale.com/cap/tailnet-lock": null, - "probe-udp-lifetime": null, - "ssh-behavior-v1": null, - "ssh-env-vars": null, - "store-appc-routes": null, - "tailnet-display-name": ["kratail2tid@passkey"] - }, - "ComputedName": "exit-b", - "ComputedNameWithHost": "exit-b" - }, - "AllCaps": [ - "store-appc-routes", - "ssh-behavior-v1", - "tailnet-display-name", - "https://tailscale.com/cap/file-sharing", - "https://tailscale.com/cap/tailnet-lock", - "https://tailscale.com/cap/is-owner", - "https://tailscale.com/cap/ssh", - "probe-udp-lifetime", - "ssh-env-vars" - ], - "NodeKey": "nodekey:265e1377372be0d036773ac41339bf7b53ed18e9f67f196d7d517abeff741217", - "MachineKey": "mkey:f4cbc28e2db0f8d8a6a5fc3991b055477e5efc6c025d24b72d3509fa3743401c", "Peers": [], - "DNS": { - "Routes": { - "tail78f774.ts.net.": null, - "ts.net.": [{ "Addr": "199.247.155.53" }, { "Addr": "2620:111:8007::53" }] - }, - "Domains": ["tail78f774.ts.net"], - "Proxied": true, - "ExitNodeFilteredSet": [".ts.net", ".tailscale.net"] - }, - "PacketFilter": [], - "PacketFilterRules": null, - "SSHPolicy": { "rules": [] }, - "CollectServices": false, - "DERPMap": { - "Regions": { - "1": { - "RegionID": 1, - "RegionCode": "nyc", - "RegionName": "New York City", - "Latitude": 40.7128, - "Longitude": -74.006, - "Nodes": [ - { - "Name": "1h", - "RegionID": 1, - "HostName": "derp1h.tailscale.com", - "IPv4": "199.38.181.93", - "IPv6": "2607:f740:f::afd", - "CanPort80": true - }, - { - "Name": "1g", - "RegionID": 1, - "HostName": "derp1g.tailscale.com", - "IPv4": "209.177.145.120", - "IPv6": "2607:f740:f::3eb", - "CanPort80": true - }, - { - "Name": "1i", - "RegionID": 1, - "HostName": "derp1i.tailscale.com", - "IPv4": "199.38.181.103", - "IPv6": "2607:f740:f::e19", - "CanPort80": true - }, - { - "Name": "1f", - "RegionID": 1, - "HostName": "derp1f.tailscale.com", - "IPv4": "199.38.181.104", - "IPv6": "2607:f740:f::bc", - "CanPort80": true - } - ] - }, - "10": { - "RegionID": 10, - "RegionCode": "sea", - "RegionName": "Seattle", - "Latitude": 47.609722, - "Longitude": -122.333056, - "Nodes": [ - { - "Name": "10c", - "RegionID": 10, - "HostName": "derp10c.tailscale.com", - "IPv4": "192.73.240.121", - "IPv6": "2607:f740:14::40c", - "CanPort80": true - }, - { - "Name": "10d", - "RegionID": 10, - "HostName": "derp10d.tailscale.com", - "IPv4": "192.73.240.132", - "IPv6": "2607:f740:14::500", - "CanPort80": true - }, - { - "Name": "10b", - "RegionID": 10, - "HostName": "derp10b.tailscale.com", - "IPv4": "192.73.240.161", - "IPv6": "2607:f740:14::61c", - "CanPort80": true - } - ] - }, - "11": { - "RegionID": 11, - "RegionCode": "sao", - "RegionName": "São Paulo", - "Latitude": -23.55, - "Longitude": -46.633333, - "Nodes": [ - { - "Name": "11f", - "RegionID": 11, - "HostName": "derp11f.tailscale.com", - "IPv4": "172.237.61.197", - "IPv6": "2600:3c0d::2000:3bff:fe44:6166", - "CanPort80": true - }, - { - "Name": "11g", - "RegionID": 11, - "HostName": "derp11g.tailscale.com", - "IPv4": "172.237.61.190", - "IPv6": "2600:3c0d::2000:62ff:febe:2e67", - "CanPort80": true - }, - { - "Name": "11e", - "RegionID": 11, - "HostName": "derp11e.tailscale.com", - "IPv4": "172.237.61.194", - "IPv6": "2600:3c0d::2000:d2ff:fe43:1790", - "CanPort80": true - } - ] - }, - "12": { - "RegionID": 12, - "RegionCode": "ord", - "RegionName": "Chicago", - "Latitude": 41.881944, - "Longitude": -87.627778, - "Nodes": [ - { - "Name": "12e", - "RegionID": 12, - "HostName": "derp12e.tailscale.com", - "IPv4": "209.177.158.15", - "IPv6": "2607:f740:e::b17", - "CanPort80": true - }, - { - "Name": "12f", - "RegionID": 12, - "HostName": "derp12f.tailscale.com", - "IPv4": "199.38.182.118", - "IPv6": "2607:f740:e::4c8", - "CanPort80": true - }, - { - "Name": "12d", - "RegionID": 12, - "HostName": "derp12d.tailscale.com", - "IPv4": "209.177.158.246", - "IPv6": "2607:f740:e::811", - "CanPort80": true - } - ] - }, - "13": { - "RegionID": 13, - "RegionCode": "den", - "RegionName": "Denver", - "Latitude": 39.7392, - "Longitude": -104.9849, - "Nodes": [ - { - "Name": "13c", - "RegionID": 13, - "HostName": "derp13c.tailscale.com", - "IPv4": "192.73.242.28", - "IPv6": "2607:f740:16::5c", - "CanPort80": true - }, - { - "Name": "13d", - "RegionID": 13, - "HostName": "derp13d.tailscale.com", - "IPv4": "192.73.242.204", - "IPv6": "2607:f740:16::c23", - "CanPort80": true - }, - { - "Name": "13b", - "RegionID": 13, - "HostName": "derp13b.tailscale.com", - "IPv4": "192.73.242.187", - "IPv6": "2607:f740:16::640", - "CanPort80": true - } - ] - }, - "14": { - "RegionID": 14, - "RegionCode": "ams", - "RegionName": "Amsterdam", - "Latitude": 52.372778, - "Longitude": 4.893611, - "Nodes": [ - { - "Name": "14c", - "RegionID": 14, - "HostName": "derp14c.tailscale.com", - "IPv4": "176.58.93.147", - "IPv6": "2a00:dd80:3c::b09", - "CanPort80": true - }, - { - "Name": "14d", - "RegionID": 14, - "HostName": "derp14d.tailscale.com", - "IPv4": "176.58.93.154", - "IPv6": "2a00:dd80:3c::3d5", - "CanPort80": true - }, - { - "Name": "14b", - "RegionID": 14, - "HostName": "derp14b.tailscale.com", - "IPv4": "176.58.93.248", - "IPv6": "2a00:dd80:3c::807", - "CanPort80": true - } - ] - }, - "15": { - "RegionID": 15, - "RegionCode": "jnb", - "RegionName": "Johannesburg", - "Latitude": -26.204444, - "Longitude": 28.045556, - "Nodes": [ - { - "Name": "15c", - "RegionID": 15, - "HostName": "derp15c.tailscale.com", - "IPv4": "102.67.165.185", - "IPv6": "2c0f:edb0:0:10::b59", - "CanPort80": true - }, - { - "Name": "15d", - "RegionID": 15, - "HostName": "derp15d.tailscale.com", - "IPv4": "102.67.165.36", - "IPv6": "2c0f:edb0:0:10::599", - "CanPort80": true - }, - { - "Name": "15b", - "RegionID": 15, - "HostName": "derp15b.tailscale.com", - "IPv4": "102.67.165.90", - "IPv6": "2c0f:edb0:0:10::963", - "CanPort80": true - } - ] - }, - "16": { - "RegionID": 16, - "RegionCode": "mia", - "RegionName": "Miami", - "Latitude": 25.78, - "Longitude": -80.21, - "Nodes": [ - { - "Name": "16c", - "RegionID": 16, - "HostName": "derp16c.tailscale.com", - "IPv4": "192.73.243.229", - "IPv6": "2607:f740:17::4e4", - "CanPort80": true - }, - { - "Name": "16d", - "RegionID": 16, - "HostName": "derp16d.tailscale.com", - "IPv4": "192.73.243.141", - "IPv6": "2607:f740:17::475", - "CanPort80": true - }, - { - "Name": "16b", - "RegionID": 16, - "HostName": "derp16b.tailscale.com", - "IPv4": "192.73.243.135", - "IPv6": "2607:f740:17::476", - "CanPort80": true - } - ] - }, - "17": { - "RegionID": 17, - "RegionCode": "lax", - "RegionName": "Los Angeles", - "Latitude": 34.05, - "Longitude": -118.25, - "Nodes": [ - { - "Name": "17c", - "RegionID": 17, - "HostName": "derp17c.tailscale.com", - "IPv4": "208.111.40.12", - "IPv6": "2607:f740:c::10", - "CanPort80": true - }, - { - "Name": "17d", - "RegionID": 17, - "HostName": "derp17d.tailscale.com", - "IPv4": "208.111.40.216", - "IPv6": "2607:f740:c::e1b", - "CanPort80": true - }, - { - "Name": "17b", - "RegionID": 17, - "HostName": "derp17b.tailscale.com", - "IPv4": "192.73.244.245", - "IPv6": "2607:f740:c::646", - "CanPort80": true - } - ] - }, - "18": { - "RegionID": 18, - "RegionCode": "par", - "RegionName": "Paris", - "Latitude": 48.856667, - "Longitude": 2.352222, - "Nodes": [ - { - "Name": "18c", - "RegionID": 18, - "HostName": "derp18c.tailscale.com", - "IPv4": "176.58.90.207", - "IPv6": "2a00:dd80:3e::c19", - "CanPort80": true - }, - { - "Name": "18d", - "RegionID": 18, - "HostName": "derp18d.tailscale.com", - "IPv4": "176.58.90.104", - "IPv6": "2a00:dd80:3e::f2e", - "CanPort80": true - }, - { - "Name": "18b", - "RegionID": 18, - "HostName": "derp18b.tailscale.com", - "IPv4": "176.58.90.147", - "IPv6": "2a00:dd80:3e::363", - "CanPort80": true - } - ] - }, - "19": { - "RegionID": 19, - "RegionCode": "mad", - "RegionName": "Madrid", - "Latitude": 40.416944, - "Longitude": -3.703333, - "Nodes": [ - { - "Name": "19c", - "RegionID": 19, - "HostName": "derp19c.tailscale.com", - "IPv4": "45.159.97.61", - "IPv6": "2a00:dd80:14:10::20", - "CanPort80": true - }, - { - "Name": "19d", - "RegionID": 19, - "HostName": "derp19d.tailscale.com", - "IPv4": "45.159.97.233", - "IPv6": "2a00:dd80:14:10::34a", - "CanPort80": true - }, - { - "Name": "19b", - "RegionID": 19, - "HostName": "derp19b.tailscale.com", - "IPv4": "45.159.97.144", - "IPv6": "2a00:dd80:14:10::335", - "CanPort80": true - } - ] - }, - "2": { - "RegionID": 2, - "RegionCode": "sfo", - "RegionName": "San Francisco", - "Latitude": 37.7775, - "Longitude": -122.416389, - "Nodes": [ - { - "Name": "2e", - "RegionID": 2, - "HostName": "derp2e.tailscale.com", - "IPv4": "192.73.252.134", - "IPv6": "2607:f740:0:3f::44c", - "CanPort80": true - }, - { - "Name": "2f", - "RegionID": 2, - "HostName": "derp2f.tailscale.com", - "IPv4": "208.111.34.178", - "IPv6": "2607:f740:0:3f::f4", - "CanPort80": true - }, - { - "Name": "2d", - "RegionID": 2, - "HostName": "derp2d.tailscale.com", - "IPv4": "192.73.252.65", - "IPv6": "2607:f740:0:3f::287", - "CanPort80": true - } - ] - }, - "20": { - "RegionID": 20, - "RegionCode": "hkg", - "RegionName": "Hong Kong", - "Latitude": 22.3193, - "Longitude": 114.1694, - "Nodes": [ - { - "Name": "20c", - "RegionID": 20, - "HostName": "derp20c.tailscale.com", - "IPv4": "205.147.105.30", - "IPv6": "2403:2500:8000:1::5fb", - "CanPort80": true - }, - { - "Name": "20d", - "RegionID": 20, - "HostName": "derp20d.tailscale.com", - "IPv4": "205.147.105.78", - "IPv6": "2403:2500:8000:1::e9a", - "CanPort80": true - }, - { - "Name": "20b", - "RegionID": 20, - "HostName": "derp20b.tailscale.com", - "IPv4": "103.6.84.152", - "IPv6": "2403:2500:8000:1::ef6", - "CanPort80": true - } - ] - }, - "21": { - "RegionID": 21, - "RegionCode": "tor", - "RegionName": "Toronto", - "Latitude": 43.741667, - "Longitude": -79.373333, - "Nodes": [ - { - "Name": "21c", - "RegionID": 21, - "HostName": "derp21c.tailscale.com", - "IPv4": "162.248.221.215", - "IPv6": "2607:f740:50::f10", - "CanPort80": true - }, - { - "Name": "21d", - "RegionID": 21, - "HostName": "derp21d.tailscale.com", - "IPv4": "162.248.221.248", - "IPv6": "2607:f740:50::ca4", - "CanPort80": true - }, - { - "Name": "21b", - "RegionID": 21, - "HostName": "derp21b.tailscale.com", - "IPv4": "162.248.221.199", - "IPv6": "2607:f740:50::1d1", - "CanPort80": true - } - ] - }, - "22": { - "RegionID": 22, - "RegionCode": "waw", - "RegionName": "Warsaw", - "Latitude": 52.23, - "Longitude": 21.011111, - "Nodes": [ - { - "Name": "22c", - "RegionID": 22, - "HostName": "derp22c.tailscale.com", - "IPv4": "45.159.98.253", - "IPv6": "2a00:dd80:40:100::3f", - "CanPort80": true - }, - { - "Name": "22d", - "RegionID": 22, - "HostName": "derp22d.tailscale.com", - "IPv4": "45.159.98.145", - "IPv6": "2a00:dd80:40:100::211", - "CanPort80": true - }, - { - "Name": "22b", - "RegionID": 22, - "HostName": "derp22b.tailscale.com", - "IPv4": "45.159.98.196", - "IPv6": "2a00:dd80:40:100::316", - "CanPort80": true - } - ] - }, - "23": { - "RegionID": 23, - "RegionCode": "dbi", - "RegionName": "Dubai", - "Latitude": 25.263056, - "Longitude": 55.297222, - "Nodes": [ - { - "Name": "23c", - "RegionID": 23, - "HostName": "derp23c.tailscale.com", - "IPv4": "185.34.3.207", - "IPv6": "2a00:dd80:3f:100::a50", - "CanPort80": true - }, - { - "Name": "23d", - "RegionID": 23, - "HostName": "derp23d.tailscale.com", - "IPv4": "185.34.3.75", - "IPv6": "2a00:dd80:3f:100::97e", - "CanPort80": true - }, - { - "Name": "23b", - "RegionID": 23, - "HostName": "derp23b.tailscale.com", - "IPv4": "185.34.3.232", - "IPv6": "2a00:dd80:3f:100::76f", - "CanPort80": true - } - ] - }, - "24": { - "RegionID": 24, - "RegionCode": "hnl", - "RegionName": "Honolulu", - "Latitude": 21.306944, - "Longitude": -157.858333, - "Nodes": [ - { - "Name": "24c", - "RegionID": 24, - "HostName": "derp24c.tailscale.com", - "IPv4": "208.83.233.233", - "IPv6": "2001:19f0:c000:c591:5400:04ff:fe26:2c5f", - "CanPort80": true - }, - { - "Name": "24d", - "RegionID": 24, - "HostName": "derp24d.tailscale.com", - "IPv4": "208.72.155.133", - "IPv6": "2001:19f0:c000:c564:5400:04ff:fe26:2ba8", - "CanPort80": true - }, - { - "Name": "24b", - "RegionID": 24, - "HostName": "derp24b.tailscale.com", - "IPv4": "208.83.234.151", - "IPv6": "2001:19f0:c000:c586:5400:04ff:fe26:2ba6", - "CanPort80": true - } - ] - }, - "25": { - "RegionID": 25, - "RegionCode": "nai", - "RegionName": "Nairobi", - "Latitude": -1.286389, - "Longitude": 36.817222, - "Nodes": [ - { - "Name": "25c", - "RegionID": 25, - "HostName": "derp25c.tailscale.com", - "IPv4": "102.67.167.37", - "IPv6": "2c0f:edb0:2000:1::2c7", - "CanPort80": true - }, - { - "Name": "25d", - "RegionID": 25, - "HostName": "derp25d.tailscale.com", - "IPv4": "102.67.167.188", - "IPv6": "2c0f:edb0:2000:1::188", - "CanPort80": true - }, - { - "Name": "25b", - "RegionID": 25, - "HostName": "derp25b.tailscale.com", - "IPv4": "102.67.167.245", - "IPv6": "2c0f:edb0:2000:1::2e9", - "CanPort80": true - } - ] - }, - "26": { - "RegionID": 26, - "RegionCode": "nue", - "RegionName": "Nuremberg", - "Latitude": 49.453889, - "Longitude": 11.0775, - "Nodes": [ - { - "Name": "26c", - "RegionID": 26, - "HostName": "derp26c.tailscale.com", - "IPv4": "49.12.193.137", - "IPv6": "2a01:4f8:1c1c:5c70::1", - "CanPort80": true - }, - { - "Name": "26d", - "RegionID": 26, - "HostName": "derp26d.tailscale.com", - "IPv4": "49.13.204.141", - "IPv6": "2a01:4f8:1c0c:7d06::1", - "CanPort80": true - }, - { - "Name": "26b", - "RegionID": 26, - "HostName": "derp26b.tailscale.com", - "IPv4": "167.235.72.200", - "IPv6": "2a01:4f8:1c1c:47b6::1", - "CanPort80": true - } - ] - }, - "27": { - "RegionID": 27, - "RegionCode": "iad", - "RegionName": "Ashburn", - "Latitude": 39.03, - "Longitude": -77.471111, - "Nodes": [ - { - "Name": "27d", - "RegionID": 27, - "HostName": "derp27d.tailscale.com", - "IPv4": "178.156.152.106", - "IPv6": "2a01:4ff:f0:3c8e::1", - "CanPort80": true - }, - { - "Name": "27c", - "RegionID": 27, - "HostName": "derp27c.tailscale.com", - "IPv4": "178.156.152.91", - "IPv6": "2a01:4ff:f0:3913::1", - "CanPort80": true - }, - { - "Name": "27e", - "RegionID": 27, - "HostName": "derp27e.tailscale.com", - "IPv4": "178.156.134.232", - "IPv6": "2a01:4ff:f0:28d4::1", - "CanPort80": true - }, - { - "Name": "27b", - "RegionID": 27, - "HostName": "derp27b.tailscale.com", - "IPv4": "5.161.218.233", - "IPv6": "2a01:4ff:f0:3db9::1", - "CanPort80": true - } - ] - }, - "28": { - "RegionID": 28, - "RegionCode": "hel", - "RegionName": "Helsinki", - "Latitude": 60.170833, - "Longitude": 24.9375, - "Nodes": [ - { - "Name": "28c", - "RegionID": 28, - "HostName": "derp28c.tailscale.com", - "IPv4": "95.217.2.165", - "IPv6": "2a01:4f9:c012:cd74::1", - "CanPort80": true - }, - { - "Name": "28d", - "RegionID": 28, - "HostName": "derp28d.tailscale.com", - "IPv4": "157.180.28.32", - "IPv6": "2a01:4f9:c012:2e5b::1", - "CanPort80": true - }, - { - "Name": "28b", - "RegionID": 28, - "HostName": "derp28b.tailscale.com", - "IPv4": "65.109.143.62", - "IPv6": "2a01:4f9:c012:d55c::1", - "CanPort80": true - } - ] - }, - "3": { - "RegionID": 3, - "RegionCode": "sin", - "RegionName": "Singapore", - "Latitude": 1.3521, - "Longitude": 103.8198, - "Nodes": [ - { - "Name": "3g", - "RegionID": 3, - "HostName": "derp3g.tailscale.com", - "IPv4": "172.237.72.79", - "IPv6": "2600:3c15::2000:adff:fe08:6fab", - "CanPort80": true - }, - { - "Name": "3f", - "RegionID": 3, - "HostName": "derp3f.tailscale.com", - "IPv4": "172.237.72.8", - "IPv6": "2600:3c15::2000:53ff:fe48:a668", - "CanPort80": true - }, - { - "Name": "3h", - "RegionID": 3, - "HostName": "derp3h.tailscale.com", - "IPv4": "172.237.66.30", - "IPv6": "2600:3c15::2000:3dff:fe44:50aa", - "CanPort80": true - }, - { - "Name": "3e", - "RegionID": 3, - "HostName": "derp3e.tailscale.com", - "IPv4": "172.237.72.43", - "IPv6": "2600:3c15::2000:6cff:fee4:d799", - "CanPort80": true - } - ] - }, - "4": { - "RegionID": 4, - "RegionCode": "fra", - "RegionName": "Frankfurt", - "Latitude": 50.1109, - "Longitude": 8.6821, - "Nodes": [ - { - "Name": "4h", - "RegionID": 4, - "HostName": "derp4h.tailscale.com", - "IPv4": "185.40.234.77", - "IPv6": "2a00:dd80:20::bcf", - "CanPort80": true - }, - { - "Name": "4g", - "RegionID": 4, - "HostName": "derp4g.tailscale.com", - "IPv4": "185.40.234.113", - "IPv6": "2a00:dd80:20::8f", - "CanPort80": true - }, - { - "Name": "4i", - "RegionID": 4, - "HostName": "derp4i.tailscale.com", - "IPv4": "185.40.234.53", - "IPv6": "2a00:dd80:20::8a6", - "CanPort80": true - }, - { - "Name": "4f", - "RegionID": 4, - "HostName": "derp4f.tailscale.com", - "IPv4": "185.40.234.219", - "IPv6": "2a00:dd80:20::a25", - "CanPort80": true - } - ] - }, - "5": { - "RegionID": 5, - "RegionCode": "syd", - "RegionName": "Sydney", - "Latitude": -33.867778, - "Longitude": 151.21, - "Nodes": [ - { - "Name": "5f", - "RegionID": 5, - "HostName": "derp5f.tailscale.com", - "IPv4": "172.105.166.103", - "IPv6": "2400:8907::2000:ccff:fe1f:80da", - "CanPort80": true - }, - { - "Name": "5g", - "RegionID": 5, - "HostName": "derp5g.tailscale.com", - "IPv4": "172.105.169.57", - "IPv6": "2400:8907::2000:2fff:fea7:57f4", - "CanPort80": true - }, - { - "Name": "5e", - "RegionID": 5, - "HostName": "derp5e.tailscale.com", - "IPv4": "172.105.179.230", - "IPv6": "2400:8907::2000:ceff:fe8d:4f4e", - "CanPort80": true - } - ] - }, - "6": { - "RegionID": 6, - "RegionCode": "blr", - "RegionName": "Bengaluru", - "Latitude": 12.9716, - "Longitude": 77.5946, - "Nodes": [ - { - "Name": "6a", - "RegionID": 6, - "HostName": "derp6.tailscale.com", - "IPv4": "68.183.90.120", - "IPv6": "2400:6180:100:d0::982:d001", - "CanPort80": true - } - ] - }, - "7": { - "RegionID": 7, - "RegionCode": "tok", - "RegionName": "Tokyo", - "Latitude": 35.6764, - "Longitude": 139.65, - "Nodes": [ - { - "Name": "7g", - "RegionID": 7, - "HostName": "derp7g.tailscale.com", - "IPv4": "172.238.6.179", - "IPv6": "2600:3c18::2000:3fff:fe80:3ebd", - "CanPort80": true - }, - { - "Name": "7f", - "RegionID": 7, - "HostName": "derp7f.tailscale.com", - "IPv4": "172.238.6.34", - "IPv6": "2600:3c18::2000:acff:fe8e:3ed5", - "CanPort80": true - }, - { - "Name": "7h", - "RegionID": 7, - "HostName": "derp7h.tailscale.com", - "IPv4": "172.237.28.183", - "IPv6": "2600:3c18::2000:b1ff:fea9:4560", - "CanPort80": true - }, - { - "Name": "7e", - "RegionID": 7, - "HostName": "derp7e.tailscale.com", - "IPv4": "172.238.6.180", - "IPv6": "2600:3c18::2000:60ff:fe0f:6e83", - "STUNOnly": true, - "CanPort80": true - } - ] - }, - "8": { - "RegionID": 8, - "RegionCode": "lhr", - "RegionName": "London", - "Latitude": 51.5072, - "Longitude": 0.1276, - "Nodes": [ - { - "Name": "8f", - "RegionID": 8, - "HostName": "derp8f.tailscale.com", - "IPv4": "176.58.88.183", - "IPv6": "2a00:dd80:3a::dfa", - "CanPort80": true - }, - { - "Name": "8g", - "RegionID": 8, - "HostName": "derp8g.tailscale.com", - "IPv4": "176.58.92.254", - "IPv6": "2a00:dd80:3a::ed", - "CanPort80": true - }, - { - "Name": "8e", - "RegionID": 8, - "HostName": "derp8e.tailscale.com", - "IPv4": "176.58.92.144", - "IPv6": "2a00:dd80:3a::b33", - "CanPort80": true - } - ] - }, - "9": { - "RegionID": 9, - "RegionCode": "dfw", - "RegionName": "Dallas", - "Latitude": 32.779167, - "Longitude": -96.808889, - "Nodes": [ - { - "Name": "9e", - "RegionID": 9, - "HostName": "derp9e.tailscale.com", - "IPv4": "192.73.248.83", - "IPv6": "2607:f740:100::359", - "CanPort80": true - }, - { - "Name": "9f", - "RegionID": 9, - "HostName": "derp9f.tailscale.com", - "IPv4": "209.177.156.197", - "IPv6": "2607:f740:100::cad", - "CanPort80": true - }, - { - "Name": "9d", - "RegionID": 9, - "HostName": "derp9d.tailscale.com", - "IPv4": "209.177.156.94", - "IPv6": "2607:f740:100::c05", - "CanPort80": true - } - ] - } - } - }, - "DisplayMessages": null, - "TKAEnabled": false, - "TKAHead": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", - "Domain": "kratail2tid@passkey", - "DomainAuditLogID": "", - "UserProfiles": { - "2230775583277936": { - "ID": 2230775583277936, - "LoginName": "exit-b.tail78f774.ts.net", - "DisplayName": "exit-b" - } - } + "PacketFilterRules": null } }, "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.124.195.93": { - "peer_name": "exit-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-node/tailscaled.sock whois --json 100.124.195.93", - "response": null - }, - "100.116.18.24": { - "peer_name": "exit-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-node/tailscaled.sock whois --json 100.116.18.24", - "response": null - }, - "100.107.162.14": { - "peer_name": "group-a-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-node/tailscaled.sock whois --json 100.107.162.14", - "response": null - }, - "100.77.135.18": { - "peer_name": "group-b-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-node/tailscaled.sock whois --json 100.77.135.18", - "response": null - }, - "100.105.127.107": { - "peer_name": "multi-exit-router", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-node/tailscaled.sock whois --json 100.105.127.107", - "response": null - }, - "100.109.43.124": { - "peer_name": "router-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-node/tailscaled.sock whois --json 100.109.43.124", - "response": null - }, - "100.65.172.123": { - "peer_name": "router-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-node/tailscaled.sock whois --json 100.65.172.123", - "response": null - }, - "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 - } - }, "netmap": { - "SelfNode": { - "ID": 4041918547170221, - "StableID": "ngCb76MbZY11CNTRL", - "Name": "exit-node.tail78f774.ts.net.", - "User": 4041918547170221, - "Key": "nodekey:90f4a7b9dc024f1ddec414a49de2aa7611a2dd86efc9d7bae30862ad7c954269", - "DiscoKey": "discokey:6f1a76215431d7100538970473d97b4fde0e0a19b91035d1cba40b59ad79b437", - "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:36712", "10.65.0.27:36712", "172.17.0.1:36712"], - "Hostinfo": { - "Hostname": "exit-node", - "RoutableIPs": ["0.0.0.0/0", "::/0"], - "RequestTags": ["tag:exit"], - "Services": [ - { "Proto": "peerapi4", "Port": 37000 }, - { "Proto": "peerapi6", "Port": 37000 }, - { "Proto": "peerapi-dns-proxy", "Port": 1 } - ] - }, - "Created": "2026-02-23T00:13:20.566112173Z", - "Tags": ["tag:exit"], - "MachineAuthorized": true, - "CapMap": { - "https://tailscale.com/cap/file-sharing": null, - "https://tailscale.com/cap/is-owner": null, - "https://tailscale.com/cap/ssh": null, - "https://tailscale.com/cap/tailnet-lock": null, - "probe-udp-lifetime": null, - "ssh-behavior-v1": null, - "ssh-env-vars": null, - "store-appc-routes": null, - "tailnet-display-name": ["kratail2tid@passkey"] - }, - "ComputedName": "exit-node", - "ComputedNameWithHost": "exit-node" - }, - "AllCaps": [ - "https://tailscale.com/cap/file-sharing", - "https://tailscale.com/cap/is-owner", - "probe-udp-lifetime", - "ssh-behavior-v1", - "ssh-env-vars", - "https://tailscale.com/cap/ssh", - "https://tailscale.com/cap/tailnet-lock", - "store-appc-routes", - "tailnet-display-name" - ], - "NodeKey": "nodekey:90f4a7b9dc024f1ddec414a49de2aa7611a2dd86efc9d7bae30862ad7c954269", - "MachineKey": "mkey:e3be47b2090e55400f3e64825cd3092841529cd7b5b775e9e4553f12308abc2a", "Peers": [], - "DNS": { - "Routes": { - "tail78f774.ts.net.": null, - "ts.net.": [{ "Addr": "199.247.155.53" }, { "Addr": "2620:111:8007::53" }] - }, - "Domains": ["tail78f774.ts.net"], - "Proxied": true, - "ExitNodeFilteredSet": [".ts.net", ".tailscale.net"] - }, - "PacketFilter": [], - "PacketFilterRules": null, - "SSHPolicy": { "rules": [] }, - "CollectServices": false, - "DERPMap": { - "Regions": { - "1": { - "RegionID": 1, - "RegionCode": "nyc", - "RegionName": "New York City", - "Latitude": 40.7128, - "Longitude": -74.006, - "Nodes": [ - { - "Name": "1h", - "RegionID": 1, - "HostName": "derp1h.tailscale.com", - "IPv4": "199.38.181.93", - "IPv6": "2607:f740:f::afd", - "CanPort80": true - }, - { - "Name": "1g", - "RegionID": 1, - "HostName": "derp1g.tailscale.com", - "IPv4": "209.177.145.120", - "IPv6": "2607:f740:f::3eb", - "CanPort80": true - }, - { - "Name": "1i", - "RegionID": 1, - "HostName": "derp1i.tailscale.com", - "IPv4": "199.38.181.103", - "IPv6": "2607:f740:f::e19", - "CanPort80": true - }, - { - "Name": "1f", - "RegionID": 1, - "HostName": "derp1f.tailscale.com", - "IPv4": "199.38.181.104", - "IPv6": "2607:f740:f::bc", - "CanPort80": true - } - ] - }, - "10": { - "RegionID": 10, - "RegionCode": "sea", - "RegionName": "Seattle", - "Latitude": 47.609722, - "Longitude": -122.333056, - "Nodes": [ - { - "Name": "10c", - "RegionID": 10, - "HostName": "derp10c.tailscale.com", - "IPv4": "192.73.240.121", - "IPv6": "2607:f740:14::40c", - "CanPort80": true - }, - { - "Name": "10d", - "RegionID": 10, - "HostName": "derp10d.tailscale.com", - "IPv4": "192.73.240.132", - "IPv6": "2607:f740:14::500", - "CanPort80": true - }, - { - "Name": "10b", - "RegionID": 10, - "HostName": "derp10b.tailscale.com", - "IPv4": "192.73.240.161", - "IPv6": "2607:f740:14::61c", - "CanPort80": true - } - ] - }, - "11": { - "RegionID": 11, - "RegionCode": "sao", - "RegionName": "São Paulo", - "Latitude": -23.55, - "Longitude": -46.633333, - "Nodes": [ - { - "Name": "11f", - "RegionID": 11, - "HostName": "derp11f.tailscale.com", - "IPv4": "172.237.61.197", - "IPv6": "2600:3c0d::2000:3bff:fe44:6166", - "CanPort80": true - }, - { - "Name": "11g", - "RegionID": 11, - "HostName": "derp11g.tailscale.com", - "IPv4": "172.237.61.190", - "IPv6": "2600:3c0d::2000:62ff:febe:2e67", - "CanPort80": true - }, - { - "Name": "11e", - "RegionID": 11, - "HostName": "derp11e.tailscale.com", - "IPv4": "172.237.61.194", - "IPv6": "2600:3c0d::2000:d2ff:fe43:1790", - "CanPort80": true - } - ] - }, - "12": { - "RegionID": 12, - "RegionCode": "ord", - "RegionName": "Chicago", - "Latitude": 41.881944, - "Longitude": -87.627778, - "Nodes": [ - { - "Name": "12e", - "RegionID": 12, - "HostName": "derp12e.tailscale.com", - "IPv4": "209.177.158.15", - "IPv6": "2607:f740:e::b17", - "CanPort80": true - }, - { - "Name": "12f", - "RegionID": 12, - "HostName": "derp12f.tailscale.com", - "IPv4": "199.38.182.118", - "IPv6": "2607:f740:e::4c8", - "CanPort80": true - }, - { - "Name": "12d", - "RegionID": 12, - "HostName": "derp12d.tailscale.com", - "IPv4": "209.177.158.246", - "IPv6": "2607:f740:e::811", - "CanPort80": true - } - ] - }, - "13": { - "RegionID": 13, - "RegionCode": "den", - "RegionName": "Denver", - "Latitude": 39.7392, - "Longitude": -104.9849, - "Nodes": [ - { - "Name": "13c", - "RegionID": 13, - "HostName": "derp13c.tailscale.com", - "IPv4": "192.73.242.28", - "IPv6": "2607:f740:16::5c", - "CanPort80": true - }, - { - "Name": "13d", - "RegionID": 13, - "HostName": "derp13d.tailscale.com", - "IPv4": "192.73.242.204", - "IPv6": "2607:f740:16::c23", - "CanPort80": true - }, - { - "Name": "13b", - "RegionID": 13, - "HostName": "derp13b.tailscale.com", - "IPv4": "192.73.242.187", - "IPv6": "2607:f740:16::640", - "CanPort80": true - } - ] - }, - "14": { - "RegionID": 14, - "RegionCode": "ams", - "RegionName": "Amsterdam", - "Latitude": 52.372778, - "Longitude": 4.893611, - "Nodes": [ - { - "Name": "14c", - "RegionID": 14, - "HostName": "derp14c.tailscale.com", - "IPv4": "176.58.93.147", - "IPv6": "2a00:dd80:3c::b09", - "CanPort80": true - }, - { - "Name": "14d", - "RegionID": 14, - "HostName": "derp14d.tailscale.com", - "IPv4": "176.58.93.154", - "IPv6": "2a00:dd80:3c::3d5", - "CanPort80": true - }, - { - "Name": "14b", - "RegionID": 14, - "HostName": "derp14b.tailscale.com", - "IPv4": "176.58.93.248", - "IPv6": "2a00:dd80:3c::807", - "CanPort80": true - } - ] - }, - "15": { - "RegionID": 15, - "RegionCode": "jnb", - "RegionName": "Johannesburg", - "Latitude": -26.204444, - "Longitude": 28.045556, - "Nodes": [ - { - "Name": "15c", - "RegionID": 15, - "HostName": "derp15c.tailscale.com", - "IPv4": "102.67.165.185", - "IPv6": "2c0f:edb0:0:10::b59", - "CanPort80": true - }, - { - "Name": "15d", - "RegionID": 15, - "HostName": "derp15d.tailscale.com", - "IPv4": "102.67.165.36", - "IPv6": "2c0f:edb0:0:10::599", - "CanPort80": true - }, - { - "Name": "15b", - "RegionID": 15, - "HostName": "derp15b.tailscale.com", - "IPv4": "102.67.165.90", - "IPv6": "2c0f:edb0:0:10::963", - "CanPort80": true - } - ] - }, - "16": { - "RegionID": 16, - "RegionCode": "mia", - "RegionName": "Miami", - "Latitude": 25.78, - "Longitude": -80.21, - "Nodes": [ - { - "Name": "16c", - "RegionID": 16, - "HostName": "derp16c.tailscale.com", - "IPv4": "192.73.243.229", - "IPv6": "2607:f740:17::4e4", - "CanPort80": true - }, - { - "Name": "16d", - "RegionID": 16, - "HostName": "derp16d.tailscale.com", - "IPv4": "192.73.243.141", - "IPv6": "2607:f740:17::475", - "CanPort80": true - }, - { - "Name": "16b", - "RegionID": 16, - "HostName": "derp16b.tailscale.com", - "IPv4": "192.73.243.135", - "IPv6": "2607:f740:17::476", - "CanPort80": true - } - ] - }, - "17": { - "RegionID": 17, - "RegionCode": "lax", - "RegionName": "Los Angeles", - "Latitude": 34.05, - "Longitude": -118.25, - "Nodes": [ - { - "Name": "17c", - "RegionID": 17, - "HostName": "derp17c.tailscale.com", - "IPv4": "208.111.40.12", - "IPv6": "2607:f740:c::10", - "CanPort80": true - }, - { - "Name": "17d", - "RegionID": 17, - "HostName": "derp17d.tailscale.com", - "IPv4": "208.111.40.216", - "IPv6": "2607:f740:c::e1b", - "CanPort80": true - }, - { - "Name": "17b", - "RegionID": 17, - "HostName": "derp17b.tailscale.com", - "IPv4": "192.73.244.245", - "IPv6": "2607:f740:c::646", - "CanPort80": true - } - ] - }, - "18": { - "RegionID": 18, - "RegionCode": "par", - "RegionName": "Paris", - "Latitude": 48.856667, - "Longitude": 2.352222, - "Nodes": [ - { - "Name": "18c", - "RegionID": 18, - "HostName": "derp18c.tailscale.com", - "IPv4": "176.58.90.207", - "IPv6": "2a00:dd80:3e::c19", - "CanPort80": true - }, - { - "Name": "18d", - "RegionID": 18, - "HostName": "derp18d.tailscale.com", - "IPv4": "176.58.90.104", - "IPv6": "2a00:dd80:3e::f2e", - "CanPort80": true - }, - { - "Name": "18b", - "RegionID": 18, - "HostName": "derp18b.tailscale.com", - "IPv4": "176.58.90.147", - "IPv6": "2a00:dd80:3e::363", - "CanPort80": true - } - ] - }, - "19": { - "RegionID": 19, - "RegionCode": "mad", - "RegionName": "Madrid", - "Latitude": 40.416944, - "Longitude": -3.703333, - "Nodes": [ - { - "Name": "19c", - "RegionID": 19, - "HostName": "derp19c.tailscale.com", - "IPv4": "45.159.97.61", - "IPv6": "2a00:dd80:14:10::20", - "CanPort80": true - }, - { - "Name": "19d", - "RegionID": 19, - "HostName": "derp19d.tailscale.com", - "IPv4": "45.159.97.233", - "IPv6": "2a00:dd80:14:10::34a", - "CanPort80": true - }, - { - "Name": "19b", - "RegionID": 19, - "HostName": "derp19b.tailscale.com", - "IPv4": "45.159.97.144", - "IPv6": "2a00:dd80:14:10::335", - "CanPort80": true - } - ] - }, - "2": { - "RegionID": 2, - "RegionCode": "sfo", - "RegionName": "San Francisco", - "Latitude": 37.7775, - "Longitude": -122.416389, - "Nodes": [ - { - "Name": "2e", - "RegionID": 2, - "HostName": "derp2e.tailscale.com", - "IPv4": "192.73.252.134", - "IPv6": "2607:f740:0:3f::44c", - "CanPort80": true - }, - { - "Name": "2f", - "RegionID": 2, - "HostName": "derp2f.tailscale.com", - "IPv4": "208.111.34.178", - "IPv6": "2607:f740:0:3f::f4", - "CanPort80": true - }, - { - "Name": "2d", - "RegionID": 2, - "HostName": "derp2d.tailscale.com", - "IPv4": "192.73.252.65", - "IPv6": "2607:f740:0:3f::287", - "CanPort80": true - } - ] - }, - "20": { - "RegionID": 20, - "RegionCode": "hkg", - "RegionName": "Hong Kong", - "Latitude": 22.3193, - "Longitude": 114.1694, - "Nodes": [ - { - "Name": "20c", - "RegionID": 20, - "HostName": "derp20c.tailscale.com", - "IPv4": "205.147.105.30", - "IPv6": "2403:2500:8000:1::5fb", - "CanPort80": true - }, - { - "Name": "20d", - "RegionID": 20, - "HostName": "derp20d.tailscale.com", - "IPv4": "205.147.105.78", - "IPv6": "2403:2500:8000:1::e9a", - "CanPort80": true - }, - { - "Name": "20b", - "RegionID": 20, - "HostName": "derp20b.tailscale.com", - "IPv4": "103.6.84.152", - "IPv6": "2403:2500:8000:1::ef6", - "CanPort80": true - } - ] - }, - "21": { - "RegionID": 21, - "RegionCode": "tor", - "RegionName": "Toronto", - "Latitude": 43.741667, - "Longitude": -79.373333, - "Nodes": [ - { - "Name": "21c", - "RegionID": 21, - "HostName": "derp21c.tailscale.com", - "IPv4": "162.248.221.215", - "IPv6": "2607:f740:50::f10", - "CanPort80": true - }, - { - "Name": "21d", - "RegionID": 21, - "HostName": "derp21d.tailscale.com", - "IPv4": "162.248.221.248", - "IPv6": "2607:f740:50::ca4", - "CanPort80": true - }, - { - "Name": "21b", - "RegionID": 21, - "HostName": "derp21b.tailscale.com", - "IPv4": "162.248.221.199", - "IPv6": "2607:f740:50::1d1", - "CanPort80": true - } - ] - }, - "22": { - "RegionID": 22, - "RegionCode": "waw", - "RegionName": "Warsaw", - "Latitude": 52.23, - "Longitude": 21.011111, - "Nodes": [ - { - "Name": "22c", - "RegionID": 22, - "HostName": "derp22c.tailscale.com", - "IPv4": "45.159.98.253", - "IPv6": "2a00:dd80:40:100::3f", - "CanPort80": true - }, - { - "Name": "22d", - "RegionID": 22, - "HostName": "derp22d.tailscale.com", - "IPv4": "45.159.98.145", - "IPv6": "2a00:dd80:40:100::211", - "CanPort80": true - }, - { - "Name": "22b", - "RegionID": 22, - "HostName": "derp22b.tailscale.com", - "IPv4": "45.159.98.196", - "IPv6": "2a00:dd80:40:100::316", - "CanPort80": true - } - ] - }, - "23": { - "RegionID": 23, - "RegionCode": "dbi", - "RegionName": "Dubai", - "Latitude": 25.263056, - "Longitude": 55.297222, - "Nodes": [ - { - "Name": "23c", - "RegionID": 23, - "HostName": "derp23c.tailscale.com", - "IPv4": "185.34.3.207", - "IPv6": "2a00:dd80:3f:100::a50", - "CanPort80": true - }, - { - "Name": "23d", - "RegionID": 23, - "HostName": "derp23d.tailscale.com", - "IPv4": "185.34.3.75", - "IPv6": "2a00:dd80:3f:100::97e", - "CanPort80": true - }, - { - "Name": "23b", - "RegionID": 23, - "HostName": "derp23b.tailscale.com", - "IPv4": "185.34.3.232", - "IPv6": "2a00:dd80:3f:100::76f", - "CanPort80": true - } - ] - }, - "24": { - "RegionID": 24, - "RegionCode": "hnl", - "RegionName": "Honolulu", - "Latitude": 21.306944, - "Longitude": -157.858333, - "Nodes": [ - { - "Name": "24c", - "RegionID": 24, - "HostName": "derp24c.tailscale.com", - "IPv4": "208.83.233.233", - "IPv6": "2001:19f0:c000:c591:5400:04ff:fe26:2c5f", - "CanPort80": true - }, - { - "Name": "24d", - "RegionID": 24, - "HostName": "derp24d.tailscale.com", - "IPv4": "208.72.155.133", - "IPv6": "2001:19f0:c000:c564:5400:04ff:fe26:2ba8", - "CanPort80": true - }, - { - "Name": "24b", - "RegionID": 24, - "HostName": "derp24b.tailscale.com", - "IPv4": "208.83.234.151", - "IPv6": "2001:19f0:c000:c586:5400:04ff:fe26:2ba6", - "CanPort80": true - } - ] - }, - "25": { - "RegionID": 25, - "RegionCode": "nai", - "RegionName": "Nairobi", - "Latitude": -1.286389, - "Longitude": 36.817222, - "Nodes": [ - { - "Name": "25c", - "RegionID": 25, - "HostName": "derp25c.tailscale.com", - "IPv4": "102.67.167.37", - "IPv6": "2c0f:edb0:2000:1::2c7", - "CanPort80": true - }, - { - "Name": "25d", - "RegionID": 25, - "HostName": "derp25d.tailscale.com", - "IPv4": "102.67.167.188", - "IPv6": "2c0f:edb0:2000:1::188", - "CanPort80": true - }, - { - "Name": "25b", - "RegionID": 25, - "HostName": "derp25b.tailscale.com", - "IPv4": "102.67.167.245", - "IPv6": "2c0f:edb0:2000:1::2e9", - "CanPort80": true - } - ] - }, - "26": { - "RegionID": 26, - "RegionCode": "nue", - "RegionName": "Nuremberg", - "Latitude": 49.453889, - "Longitude": 11.0775, - "Nodes": [ - { - "Name": "26c", - "RegionID": 26, - "HostName": "derp26c.tailscale.com", - "IPv4": "49.12.193.137", - "IPv6": "2a01:4f8:1c1c:5c70::1", - "CanPort80": true - }, - { - "Name": "26d", - "RegionID": 26, - "HostName": "derp26d.tailscale.com", - "IPv4": "49.13.204.141", - "IPv6": "2a01:4f8:1c0c:7d06::1", - "CanPort80": true - }, - { - "Name": "26b", - "RegionID": 26, - "HostName": "derp26b.tailscale.com", - "IPv4": "167.235.72.200", - "IPv6": "2a01:4f8:1c1c:47b6::1", - "CanPort80": true - } - ] - }, - "27": { - "RegionID": 27, - "RegionCode": "iad", - "RegionName": "Ashburn", - "Latitude": 39.03, - "Longitude": -77.471111, - "Nodes": [ - { - "Name": "27d", - "RegionID": 27, - "HostName": "derp27d.tailscale.com", - "IPv4": "178.156.152.106", - "IPv6": "2a01:4ff:f0:3c8e::1", - "CanPort80": true - }, - { - "Name": "27c", - "RegionID": 27, - "HostName": "derp27c.tailscale.com", - "IPv4": "178.156.152.91", - "IPv6": "2a01:4ff:f0:3913::1", - "CanPort80": true - }, - { - "Name": "27e", - "RegionID": 27, - "HostName": "derp27e.tailscale.com", - "IPv4": "178.156.134.232", - "IPv6": "2a01:4ff:f0:28d4::1", - "CanPort80": true - }, - { - "Name": "27b", - "RegionID": 27, - "HostName": "derp27b.tailscale.com", - "IPv4": "5.161.218.233", - "IPv6": "2a01:4ff:f0:3db9::1", - "CanPort80": true - } - ] - }, - "28": { - "RegionID": 28, - "RegionCode": "hel", - "RegionName": "Helsinki", - "Latitude": 60.170833, - "Longitude": 24.9375, - "Nodes": [ - { - "Name": "28c", - "RegionID": 28, - "HostName": "derp28c.tailscale.com", - "IPv4": "95.217.2.165", - "IPv6": "2a01:4f9:c012:cd74::1", - "CanPort80": true - }, - { - "Name": "28d", - "RegionID": 28, - "HostName": "derp28d.tailscale.com", - "IPv4": "157.180.28.32", - "IPv6": "2a01:4f9:c012:2e5b::1", - "CanPort80": true - }, - { - "Name": "28b", - "RegionID": 28, - "HostName": "derp28b.tailscale.com", - "IPv4": "65.109.143.62", - "IPv6": "2a01:4f9:c012:d55c::1", - "CanPort80": true - } - ] - }, - "3": { - "RegionID": 3, - "RegionCode": "sin", - "RegionName": "Singapore", - "Latitude": 1.3521, - "Longitude": 103.8198, - "Nodes": [ - { - "Name": "3g", - "RegionID": 3, - "HostName": "derp3g.tailscale.com", - "IPv4": "172.237.72.79", - "IPv6": "2600:3c15::2000:adff:fe08:6fab", - "CanPort80": true - }, - { - "Name": "3f", - "RegionID": 3, - "HostName": "derp3f.tailscale.com", - "IPv4": "172.237.72.8", - "IPv6": "2600:3c15::2000:53ff:fe48:a668", - "CanPort80": true - }, - { - "Name": "3h", - "RegionID": 3, - "HostName": "derp3h.tailscale.com", - "IPv4": "172.237.66.30", - "IPv6": "2600:3c15::2000:3dff:fe44:50aa", - "CanPort80": true - }, - { - "Name": "3e", - "RegionID": 3, - "HostName": "derp3e.tailscale.com", - "IPv4": "172.237.72.43", - "IPv6": "2600:3c15::2000:6cff:fee4:d799", - "CanPort80": true - } - ] - }, - "4": { - "RegionID": 4, - "RegionCode": "fra", - "RegionName": "Frankfurt", - "Latitude": 50.1109, - "Longitude": 8.6821, - "Nodes": [ - { - "Name": "4h", - "RegionID": 4, - "HostName": "derp4h.tailscale.com", - "IPv4": "185.40.234.77", - "IPv6": "2a00:dd80:20::bcf", - "CanPort80": true - }, - { - "Name": "4g", - "RegionID": 4, - "HostName": "derp4g.tailscale.com", - "IPv4": "185.40.234.113", - "IPv6": "2a00:dd80:20::8f", - "CanPort80": true - }, - { - "Name": "4i", - "RegionID": 4, - "HostName": "derp4i.tailscale.com", - "IPv4": "185.40.234.53", - "IPv6": "2a00:dd80:20::8a6", - "CanPort80": true - }, - { - "Name": "4f", - "RegionID": 4, - "HostName": "derp4f.tailscale.com", - "IPv4": "185.40.234.219", - "IPv6": "2a00:dd80:20::a25", - "CanPort80": true - } - ] - }, - "5": { - "RegionID": 5, - "RegionCode": "syd", - "RegionName": "Sydney", - "Latitude": -33.867778, - "Longitude": 151.21, - "Nodes": [ - { - "Name": "5f", - "RegionID": 5, - "HostName": "derp5f.tailscale.com", - "IPv4": "172.105.166.103", - "IPv6": "2400:8907::2000:ccff:fe1f:80da", - "CanPort80": true - }, - { - "Name": "5g", - "RegionID": 5, - "HostName": "derp5g.tailscale.com", - "IPv4": "172.105.169.57", - "IPv6": "2400:8907::2000:2fff:fea7:57f4", - "CanPort80": true - }, - { - "Name": "5e", - "RegionID": 5, - "HostName": "derp5e.tailscale.com", - "IPv4": "172.105.179.230", - "IPv6": "2400:8907::2000:ceff:fe8d:4f4e", - "CanPort80": true - } - ] - }, - "6": { - "RegionID": 6, - "RegionCode": "blr", - "RegionName": "Bengaluru", - "Latitude": 12.9716, - "Longitude": 77.5946, - "Nodes": [ - { - "Name": "6a", - "RegionID": 6, - "HostName": "derp6.tailscale.com", - "IPv4": "68.183.90.120", - "IPv6": "2400:6180:100:d0::982:d001", - "CanPort80": true - } - ] - }, - "7": { - "RegionID": 7, - "RegionCode": "tok", - "RegionName": "Tokyo", - "Latitude": 35.6764, - "Longitude": 139.65, - "Nodes": [ - { - "Name": "7g", - "RegionID": 7, - "HostName": "derp7g.tailscale.com", - "IPv4": "172.238.6.179", - "IPv6": "2600:3c18::2000:3fff:fe80:3ebd", - "CanPort80": true - }, - { - "Name": "7f", - "RegionID": 7, - "HostName": "derp7f.tailscale.com", - "IPv4": "172.238.6.34", - "IPv6": "2600:3c18::2000:acff:fe8e:3ed5", - "CanPort80": true - }, - { - "Name": "7h", - "RegionID": 7, - "HostName": "derp7h.tailscale.com", - "IPv4": "172.237.28.183", - "IPv6": "2600:3c18::2000:b1ff:fea9:4560", - "CanPort80": true - }, - { - "Name": "7e", - "RegionID": 7, - "HostName": "derp7e.tailscale.com", - "IPv4": "172.238.6.180", - "IPv6": "2600:3c18::2000:60ff:fe0f:6e83", - "STUNOnly": true, - "CanPort80": true - } - ] - }, - "8": { - "RegionID": 8, - "RegionCode": "lhr", - "RegionName": "London", - "Latitude": 51.5072, - "Longitude": 0.1276, - "Nodes": [ - { - "Name": "8f", - "RegionID": 8, - "HostName": "derp8f.tailscale.com", - "IPv4": "176.58.88.183", - "IPv6": "2a00:dd80:3a::dfa", - "CanPort80": true - }, - { - "Name": "8g", - "RegionID": 8, - "HostName": "derp8g.tailscale.com", - "IPv4": "176.58.92.254", - "IPv6": "2a00:dd80:3a::ed", - "CanPort80": true - }, - { - "Name": "8e", - "RegionID": 8, - "HostName": "derp8e.tailscale.com", - "IPv4": "176.58.92.144", - "IPv6": "2a00:dd80:3a::b33", - "CanPort80": true - } - ] - }, - "9": { - "RegionID": 9, - "RegionCode": "dfw", - "RegionName": "Dallas", - "Latitude": 32.779167, - "Longitude": -96.808889, - "Nodes": [ - { - "Name": "9e", - "RegionID": 9, - "HostName": "derp9e.tailscale.com", - "IPv4": "192.73.248.83", - "IPv6": "2607:f740:100::359", - "CanPort80": true - }, - { - "Name": "9f", - "RegionID": 9, - "HostName": "derp9f.tailscale.com", - "IPv4": "209.177.156.197", - "IPv6": "2607:f740:100::cad", - "CanPort80": true - }, - { - "Name": "9d", - "RegionID": 9, - "HostName": "derp9d.tailscale.com", - "IPv4": "209.177.156.94", - "IPv6": "2607:f740:100::c05", - "CanPort80": true - } - ] - } - } - }, - "DisplayMessages": null, - "TKAEnabled": false, - "TKAHead": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", - "Domain": "kratail2tid@passkey", - "DomainAuditLogID": "", - "UserProfiles": { - "4041918547170221": { - "ID": 4041918547170221, - "LoginName": "exit-node.tail78f774.ts.net", - "DisplayName": "exit-node" - } - } + "PacketFilterRules": null } }, "group-a-client": { - "commands": { - "packet_filter_rules": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/group-a-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/group-a-client/tailscaled.sock debug localapi POST debug-packet-filter-matches" - }, "packet_filter_rules": null, - "packet_filter_matches": [], - "whois": { - "100.124.195.93": { - "peer_name": "exit-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/group-a-client/tailscaled.sock whois --json 100.124.195.93", - "response": null - }, - "100.116.18.24": { - "peer_name": "exit-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/group-a-client/tailscaled.sock whois --json 100.116.18.24", - "response": null - }, - "100.85.66.106": { - "peer_name": "exit-node", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/group-a-client/tailscaled.sock whois --json 100.85.66.106", - "response": null - }, - "100.77.135.18": { - "peer_name": "group-b-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/group-a-client/tailscaled.sock whois --json 100.77.135.18", - "response": null - }, - "100.105.127.107": { - "peer_name": "multi-exit-router", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/group-a-client/tailscaled.sock whois --json 100.105.127.107", - "response": null - }, - "100.109.43.124": { - "peer_name": "router-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/group-a-client/tailscaled.sock whois --json 100.109.43.124", - "response": null - }, - "100.65.172.123": { - "peer_name": "router-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/group-a-client/tailscaled.sock whois --json 100.65.172.123", - "response": null - }, - "100.92.142.61": { - "peer_name": "subnet-router", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/group-a-client/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/group-a-client/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/group-a-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/group-a-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/group-a-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/group-a-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/group-a-client/tailscaled.sock whois --json 100.90.199.68", - "response": null - } - }, "netmap": { - "SelfNode": { - "ID": 6999435610919250, - "StableID": "nyckVfJ4fw11CNTRL", - "Name": "group-a-client.tail78f774.ts.net.", - "User": 6999435610919250, - "Key": "nodekey:802726716bd4942fceb5e444218c930040fadb082698b57ea3eb59a6a26ba20d", - "DiscoKey": "discokey:bc93c2d3b81606e44eb1c96d721e7cd73c9497aa7d3efbe2f5e0d1e2e95b190f", - "Addresses": ["100.107.162.14/32", "fd7a:115c:a1e0::a237:a20e/128"], - "AllowedIPs": ["100.107.162.14/32", "fd7a:115c:a1e0::a237:a20e/128"], - "Endpoints": ["77.164.248.136:51980", "10.65.0.27:51980", "172.17.0.1:51980"], - "Hostinfo": { - "Hostname": "group-a-client", - "RequestTags": ["tag:group-a"], - "Services": [ - { "Proto": "peerapi4", "Port": 36543 }, - { "Proto": "peerapi6", "Port": 36543 }, - { "Proto": "peerapi-dns-proxy", "Port": 1 } - ] - }, - "Created": "2026-03-28T10:38:04.339428828Z", - "Tags": ["tag:group-a"], - "MachineAuthorized": true, - "CapMap": { - "https://tailscale.com/cap/file-sharing": null, - "https://tailscale.com/cap/is-owner": null, - "https://tailscale.com/cap/ssh": null, - "https://tailscale.com/cap/tailnet-lock": null, - "probe-udp-lifetime": null, - "ssh-behavior-v1": null, - "ssh-env-vars": null, - "store-appc-routes": null, - "tailnet-display-name": ["kratail2tid@passkey"] - }, - "ComputedName": "group-a-client", - "ComputedNameWithHost": "group-a-client" - }, - "AllCaps": [ - "probe-udp-lifetime", - "store-appc-routes", - "https://tailscale.com/cap/is-owner", - "https://tailscale.com/cap/ssh", - "https://tailscale.com/cap/tailnet-lock", - "https://tailscale.com/cap/file-sharing", - "ssh-behavior-v1", - "ssh-env-vars", - "tailnet-display-name" - ], - "NodeKey": "nodekey:802726716bd4942fceb5e444218c930040fadb082698b57ea3eb59a6a26ba20d", - "MachineKey": "mkey:fd2d0c2953440569b6c045d6bb1826bf138bf65b4ed4433532e4d91e09fd6b6b", "Peers": [], - "DNS": { - "Routes": { - "tail78f774.ts.net.": null, - "ts.net.": [{ "Addr": "199.247.155.53" }, { "Addr": "2620:111:8007::53" }] - }, - "Domains": ["tail78f774.ts.net"], - "Proxied": true, - "ExitNodeFilteredSet": [".ts.net", ".tailscale.net"] - }, - "PacketFilter": [], - "PacketFilterRules": null, - "SSHPolicy": { "rules": [] }, - "CollectServices": false, - "DERPMap": { - "Regions": { - "1": { - "RegionID": 1, - "RegionCode": "nyc", - "RegionName": "New York City", - "Latitude": 40.7128, - "Longitude": -74.006, - "Nodes": [ - { - "Name": "1h", - "RegionID": 1, - "HostName": "derp1h.tailscale.com", - "IPv4": "199.38.181.93", - "IPv6": "2607:f740:f::afd", - "CanPort80": true - }, - { - "Name": "1g", - "RegionID": 1, - "HostName": "derp1g.tailscale.com", - "IPv4": "209.177.145.120", - "IPv6": "2607:f740:f::3eb", - "CanPort80": true - }, - { - "Name": "1i", - "RegionID": 1, - "HostName": "derp1i.tailscale.com", - "IPv4": "199.38.181.103", - "IPv6": "2607:f740:f::e19", - "CanPort80": true - }, - { - "Name": "1f", - "RegionID": 1, - "HostName": "derp1f.tailscale.com", - "IPv4": "199.38.181.104", - "IPv6": "2607:f740:f::bc", - "CanPort80": true - } - ] - }, - "10": { - "RegionID": 10, - "RegionCode": "sea", - "RegionName": "Seattle", - "Latitude": 47.609722, - "Longitude": -122.333056, - "Nodes": [ - { - "Name": "10c", - "RegionID": 10, - "HostName": "derp10c.tailscale.com", - "IPv4": "192.73.240.121", - "IPv6": "2607:f740:14::40c", - "CanPort80": true - }, - { - "Name": "10d", - "RegionID": 10, - "HostName": "derp10d.tailscale.com", - "IPv4": "192.73.240.132", - "IPv6": "2607:f740:14::500", - "CanPort80": true - }, - { - "Name": "10b", - "RegionID": 10, - "HostName": "derp10b.tailscale.com", - "IPv4": "192.73.240.161", - "IPv6": "2607:f740:14::61c", - "CanPort80": true - } - ] - }, - "11": { - "RegionID": 11, - "RegionCode": "sao", - "RegionName": "São Paulo", - "Latitude": -23.55, - "Longitude": -46.633333, - "Nodes": [ - { - "Name": "11f", - "RegionID": 11, - "HostName": "derp11f.tailscale.com", - "IPv4": "172.237.61.197", - "IPv6": "2600:3c0d::2000:3bff:fe44:6166", - "CanPort80": true - }, - { - "Name": "11g", - "RegionID": 11, - "HostName": "derp11g.tailscale.com", - "IPv4": "172.237.61.190", - "IPv6": "2600:3c0d::2000:62ff:febe:2e67", - "CanPort80": true - }, - { - "Name": "11e", - "RegionID": 11, - "HostName": "derp11e.tailscale.com", - "IPv4": "172.237.61.194", - "IPv6": "2600:3c0d::2000:d2ff:fe43:1790", - "CanPort80": true - } - ] - }, - "12": { - "RegionID": 12, - "RegionCode": "ord", - "RegionName": "Chicago", - "Latitude": 41.881944, - "Longitude": -87.627778, - "Nodes": [ - { - "Name": "12e", - "RegionID": 12, - "HostName": "derp12e.tailscale.com", - "IPv4": "209.177.158.15", - "IPv6": "2607:f740:e::b17", - "CanPort80": true - }, - { - "Name": "12f", - "RegionID": 12, - "HostName": "derp12f.tailscale.com", - "IPv4": "199.38.182.118", - "IPv6": "2607:f740:e::4c8", - "CanPort80": true - }, - { - "Name": "12d", - "RegionID": 12, - "HostName": "derp12d.tailscale.com", - "IPv4": "209.177.158.246", - "IPv6": "2607:f740:e::811", - "CanPort80": true - } - ] - }, - "13": { - "RegionID": 13, - "RegionCode": "den", - "RegionName": "Denver", - "Latitude": 39.7392, - "Longitude": -104.9849, - "Nodes": [ - { - "Name": "13c", - "RegionID": 13, - "HostName": "derp13c.tailscale.com", - "IPv4": "192.73.242.28", - "IPv6": "2607:f740:16::5c", - "CanPort80": true - }, - { - "Name": "13d", - "RegionID": 13, - "HostName": "derp13d.tailscale.com", - "IPv4": "192.73.242.204", - "IPv6": "2607:f740:16::c23", - "CanPort80": true - }, - { - "Name": "13b", - "RegionID": 13, - "HostName": "derp13b.tailscale.com", - "IPv4": "192.73.242.187", - "IPv6": "2607:f740:16::640", - "CanPort80": true - } - ] - }, - "14": { - "RegionID": 14, - "RegionCode": "ams", - "RegionName": "Amsterdam", - "Latitude": 52.372778, - "Longitude": 4.893611, - "Nodes": [ - { - "Name": "14c", - "RegionID": 14, - "HostName": "derp14c.tailscale.com", - "IPv4": "176.58.93.147", - "IPv6": "2a00:dd80:3c::b09", - "CanPort80": true - }, - { - "Name": "14d", - "RegionID": 14, - "HostName": "derp14d.tailscale.com", - "IPv4": "176.58.93.154", - "IPv6": "2a00:dd80:3c::3d5", - "CanPort80": true - }, - { - "Name": "14b", - "RegionID": 14, - "HostName": "derp14b.tailscale.com", - "IPv4": "176.58.93.248", - "IPv6": "2a00:dd80:3c::807", - "CanPort80": true - } - ] - }, - "15": { - "RegionID": 15, - "RegionCode": "jnb", - "RegionName": "Johannesburg", - "Latitude": -26.204444, - "Longitude": 28.045556, - "Nodes": [ - { - "Name": "15c", - "RegionID": 15, - "HostName": "derp15c.tailscale.com", - "IPv4": "102.67.165.185", - "IPv6": "2c0f:edb0:0:10::b59", - "CanPort80": true - }, - { - "Name": "15d", - "RegionID": 15, - "HostName": "derp15d.tailscale.com", - "IPv4": "102.67.165.36", - "IPv6": "2c0f:edb0:0:10::599", - "CanPort80": true - }, - { - "Name": "15b", - "RegionID": 15, - "HostName": "derp15b.tailscale.com", - "IPv4": "102.67.165.90", - "IPv6": "2c0f:edb0:0:10::963", - "CanPort80": true - } - ] - }, - "16": { - "RegionID": 16, - "RegionCode": "mia", - "RegionName": "Miami", - "Latitude": 25.78, - "Longitude": -80.21, - "Nodes": [ - { - "Name": "16c", - "RegionID": 16, - "HostName": "derp16c.tailscale.com", - "IPv4": "192.73.243.229", - "IPv6": "2607:f740:17::4e4", - "CanPort80": true - }, - { - "Name": "16d", - "RegionID": 16, - "HostName": "derp16d.tailscale.com", - "IPv4": "192.73.243.141", - "IPv6": "2607:f740:17::475", - "CanPort80": true - }, - { - "Name": "16b", - "RegionID": 16, - "HostName": "derp16b.tailscale.com", - "IPv4": "192.73.243.135", - "IPv6": "2607:f740:17::476", - "CanPort80": true - } - ] - }, - "17": { - "RegionID": 17, - "RegionCode": "lax", - "RegionName": "Los Angeles", - "Latitude": 34.05, - "Longitude": -118.25, - "Nodes": [ - { - "Name": "17c", - "RegionID": 17, - "HostName": "derp17c.tailscale.com", - "IPv4": "208.111.40.12", - "IPv6": "2607:f740:c::10", - "CanPort80": true - }, - { - "Name": "17d", - "RegionID": 17, - "HostName": "derp17d.tailscale.com", - "IPv4": "208.111.40.216", - "IPv6": "2607:f740:c::e1b", - "CanPort80": true - }, - { - "Name": "17b", - "RegionID": 17, - "HostName": "derp17b.tailscale.com", - "IPv4": "192.73.244.245", - "IPv6": "2607:f740:c::646", - "CanPort80": true - } - ] - }, - "18": { - "RegionID": 18, - "RegionCode": "par", - "RegionName": "Paris", - "Latitude": 48.856667, - "Longitude": 2.352222, - "Nodes": [ - { - "Name": "18c", - "RegionID": 18, - "HostName": "derp18c.tailscale.com", - "IPv4": "176.58.90.207", - "IPv6": "2a00:dd80:3e::c19", - "CanPort80": true - }, - { - "Name": "18d", - "RegionID": 18, - "HostName": "derp18d.tailscale.com", - "IPv4": "176.58.90.104", - "IPv6": "2a00:dd80:3e::f2e", - "CanPort80": true - }, - { - "Name": "18b", - "RegionID": 18, - "HostName": "derp18b.tailscale.com", - "IPv4": "176.58.90.147", - "IPv6": "2a00:dd80:3e::363", - "CanPort80": true - } - ] - }, - "19": { - "RegionID": 19, - "RegionCode": "mad", - "RegionName": "Madrid", - "Latitude": 40.416944, - "Longitude": -3.703333, - "Nodes": [ - { - "Name": "19c", - "RegionID": 19, - "HostName": "derp19c.tailscale.com", - "IPv4": "45.159.97.61", - "IPv6": "2a00:dd80:14:10::20", - "CanPort80": true - }, - { - "Name": "19d", - "RegionID": 19, - "HostName": "derp19d.tailscale.com", - "IPv4": "45.159.97.233", - "IPv6": "2a00:dd80:14:10::34a", - "CanPort80": true - }, - { - "Name": "19b", - "RegionID": 19, - "HostName": "derp19b.tailscale.com", - "IPv4": "45.159.97.144", - "IPv6": "2a00:dd80:14:10::335", - "CanPort80": true - } - ] - }, - "2": { - "RegionID": 2, - "RegionCode": "sfo", - "RegionName": "San Francisco", - "Latitude": 37.7775, - "Longitude": -122.416389, - "Nodes": [ - { - "Name": "2e", - "RegionID": 2, - "HostName": "derp2e.tailscale.com", - "IPv4": "192.73.252.134", - "IPv6": "2607:f740:0:3f::44c", - "CanPort80": true - }, - { - "Name": "2f", - "RegionID": 2, - "HostName": "derp2f.tailscale.com", - "IPv4": "208.111.34.178", - "IPv6": "2607:f740:0:3f::f4", - "CanPort80": true - }, - { - "Name": "2d", - "RegionID": 2, - "HostName": "derp2d.tailscale.com", - "IPv4": "192.73.252.65", - "IPv6": "2607:f740:0:3f::287", - "CanPort80": true - } - ] - }, - "20": { - "RegionID": 20, - "RegionCode": "hkg", - "RegionName": "Hong Kong", - "Latitude": 22.3193, - "Longitude": 114.1694, - "Nodes": [ - { - "Name": "20c", - "RegionID": 20, - "HostName": "derp20c.tailscale.com", - "IPv4": "205.147.105.30", - "IPv6": "2403:2500:8000:1::5fb", - "CanPort80": true - }, - { - "Name": "20d", - "RegionID": 20, - "HostName": "derp20d.tailscale.com", - "IPv4": "205.147.105.78", - "IPv6": "2403:2500:8000:1::e9a", - "CanPort80": true - }, - { - "Name": "20b", - "RegionID": 20, - "HostName": "derp20b.tailscale.com", - "IPv4": "103.6.84.152", - "IPv6": "2403:2500:8000:1::ef6", - "CanPort80": true - } - ] - }, - "21": { - "RegionID": 21, - "RegionCode": "tor", - "RegionName": "Toronto", - "Latitude": 43.741667, - "Longitude": -79.373333, - "Nodes": [ - { - "Name": "21c", - "RegionID": 21, - "HostName": "derp21c.tailscale.com", - "IPv4": "162.248.221.215", - "IPv6": "2607:f740:50::f10", - "CanPort80": true - }, - { - "Name": "21d", - "RegionID": 21, - "HostName": "derp21d.tailscale.com", - "IPv4": "162.248.221.248", - "IPv6": "2607:f740:50::ca4", - "CanPort80": true - }, - { - "Name": "21b", - "RegionID": 21, - "HostName": "derp21b.tailscale.com", - "IPv4": "162.248.221.199", - "IPv6": "2607:f740:50::1d1", - "CanPort80": true - } - ] - }, - "22": { - "RegionID": 22, - "RegionCode": "waw", - "RegionName": "Warsaw", - "Latitude": 52.23, - "Longitude": 21.011111, - "Nodes": [ - { - "Name": "22c", - "RegionID": 22, - "HostName": "derp22c.tailscale.com", - "IPv4": "45.159.98.253", - "IPv6": "2a00:dd80:40:100::3f", - "CanPort80": true - }, - { - "Name": "22d", - "RegionID": 22, - "HostName": "derp22d.tailscale.com", - "IPv4": "45.159.98.145", - "IPv6": "2a00:dd80:40:100::211", - "CanPort80": true - }, - { - "Name": "22b", - "RegionID": 22, - "HostName": "derp22b.tailscale.com", - "IPv4": "45.159.98.196", - "IPv6": "2a00:dd80:40:100::316", - "CanPort80": true - } - ] - }, - "23": { - "RegionID": 23, - "RegionCode": "dbi", - "RegionName": "Dubai", - "Latitude": 25.263056, - "Longitude": 55.297222, - "Nodes": [ - { - "Name": "23c", - "RegionID": 23, - "HostName": "derp23c.tailscale.com", - "IPv4": "185.34.3.207", - "IPv6": "2a00:dd80:3f:100::a50", - "CanPort80": true - }, - { - "Name": "23d", - "RegionID": 23, - "HostName": "derp23d.tailscale.com", - "IPv4": "185.34.3.75", - "IPv6": "2a00:dd80:3f:100::97e", - "CanPort80": true - }, - { - "Name": "23b", - "RegionID": 23, - "HostName": "derp23b.tailscale.com", - "IPv4": "185.34.3.232", - "IPv6": "2a00:dd80:3f:100::76f", - "CanPort80": true - } - ] - }, - "24": { - "RegionID": 24, - "RegionCode": "hnl", - "RegionName": "Honolulu", - "Latitude": 21.306944, - "Longitude": -157.858333, - "Nodes": [ - { - "Name": "24c", - "RegionID": 24, - "HostName": "derp24c.tailscale.com", - "IPv4": "208.83.233.233", - "IPv6": "2001:19f0:c000:c591:5400:04ff:fe26:2c5f", - "CanPort80": true - }, - { - "Name": "24d", - "RegionID": 24, - "HostName": "derp24d.tailscale.com", - "IPv4": "208.72.155.133", - "IPv6": "2001:19f0:c000:c564:5400:04ff:fe26:2ba8", - "CanPort80": true - }, - { - "Name": "24b", - "RegionID": 24, - "HostName": "derp24b.tailscale.com", - "IPv4": "208.83.234.151", - "IPv6": "2001:19f0:c000:c586:5400:04ff:fe26:2ba6", - "CanPort80": true - } - ] - }, - "25": { - "RegionID": 25, - "RegionCode": "nai", - "RegionName": "Nairobi", - "Latitude": -1.286389, - "Longitude": 36.817222, - "Nodes": [ - { - "Name": "25c", - "RegionID": 25, - "HostName": "derp25c.tailscale.com", - "IPv4": "102.67.167.37", - "IPv6": "2c0f:edb0:2000:1::2c7", - "CanPort80": true - }, - { - "Name": "25d", - "RegionID": 25, - "HostName": "derp25d.tailscale.com", - "IPv4": "102.67.167.188", - "IPv6": "2c0f:edb0:2000:1::188", - "CanPort80": true - }, - { - "Name": "25b", - "RegionID": 25, - "HostName": "derp25b.tailscale.com", - "IPv4": "102.67.167.245", - "IPv6": "2c0f:edb0:2000:1::2e9", - "CanPort80": true - } - ] - }, - "26": { - "RegionID": 26, - "RegionCode": "nue", - "RegionName": "Nuremberg", - "Latitude": 49.453889, - "Longitude": 11.0775, - "Nodes": [ - { - "Name": "26c", - "RegionID": 26, - "HostName": "derp26c.tailscale.com", - "IPv4": "49.12.193.137", - "IPv6": "2a01:4f8:1c1c:5c70::1", - "CanPort80": true - }, - { - "Name": "26d", - "RegionID": 26, - "HostName": "derp26d.tailscale.com", - "IPv4": "49.13.204.141", - "IPv6": "2a01:4f8:1c0c:7d06::1", - "CanPort80": true - }, - { - "Name": "26b", - "RegionID": 26, - "HostName": "derp26b.tailscale.com", - "IPv4": "167.235.72.200", - "IPv6": "2a01:4f8:1c1c:47b6::1", - "CanPort80": true - } - ] - }, - "27": { - "RegionID": 27, - "RegionCode": "iad", - "RegionName": "Ashburn", - "Latitude": 39.03, - "Longitude": -77.471111, - "Nodes": [ - { - "Name": "27d", - "RegionID": 27, - "HostName": "derp27d.tailscale.com", - "IPv4": "178.156.152.106", - "IPv6": "2a01:4ff:f0:3c8e::1", - "CanPort80": true - }, - { - "Name": "27c", - "RegionID": 27, - "HostName": "derp27c.tailscale.com", - "IPv4": "178.156.152.91", - "IPv6": "2a01:4ff:f0:3913::1", - "CanPort80": true - }, - { - "Name": "27e", - "RegionID": 27, - "HostName": "derp27e.tailscale.com", - "IPv4": "178.156.134.232", - "IPv6": "2a01:4ff:f0:28d4::1", - "CanPort80": true - }, - { - "Name": "27b", - "RegionID": 27, - "HostName": "derp27b.tailscale.com", - "IPv4": "5.161.218.233", - "IPv6": "2a01:4ff:f0:3db9::1", - "CanPort80": true - } - ] - }, - "28": { - "RegionID": 28, - "RegionCode": "hel", - "RegionName": "Helsinki", - "Latitude": 60.170833, - "Longitude": 24.9375, - "Nodes": [ - { - "Name": "28c", - "RegionID": 28, - "HostName": "derp28c.tailscale.com", - "IPv4": "95.217.2.165", - "IPv6": "2a01:4f9:c012:cd74::1", - "CanPort80": true - }, - { - "Name": "28d", - "RegionID": 28, - "HostName": "derp28d.tailscale.com", - "IPv4": "157.180.28.32", - "IPv6": "2a01:4f9:c012:2e5b::1", - "CanPort80": true - }, - { - "Name": "28b", - "RegionID": 28, - "HostName": "derp28b.tailscale.com", - "IPv4": "65.109.143.62", - "IPv6": "2a01:4f9:c012:d55c::1", - "CanPort80": true - } - ] - }, - "3": { - "RegionID": 3, - "RegionCode": "sin", - "RegionName": "Singapore", - "Latitude": 1.3521, - "Longitude": 103.8198, - "Nodes": [ - { - "Name": "3g", - "RegionID": 3, - "HostName": "derp3g.tailscale.com", - "IPv4": "172.237.72.79", - "IPv6": "2600:3c15::2000:adff:fe08:6fab", - "CanPort80": true - }, - { - "Name": "3f", - "RegionID": 3, - "HostName": "derp3f.tailscale.com", - "IPv4": "172.237.72.8", - "IPv6": "2600:3c15::2000:53ff:fe48:a668", - "CanPort80": true - }, - { - "Name": "3h", - "RegionID": 3, - "HostName": "derp3h.tailscale.com", - "IPv4": "172.237.66.30", - "IPv6": "2600:3c15::2000:3dff:fe44:50aa", - "CanPort80": true - }, - { - "Name": "3e", - "RegionID": 3, - "HostName": "derp3e.tailscale.com", - "IPv4": "172.237.72.43", - "IPv6": "2600:3c15::2000:6cff:fee4:d799", - "CanPort80": true - } - ] - }, - "4": { - "RegionID": 4, - "RegionCode": "fra", - "RegionName": "Frankfurt", - "Latitude": 50.1109, - "Longitude": 8.6821, - "Nodes": [ - { - "Name": "4h", - "RegionID": 4, - "HostName": "derp4h.tailscale.com", - "IPv4": "185.40.234.77", - "IPv6": "2a00:dd80:20::bcf", - "CanPort80": true - }, - { - "Name": "4g", - "RegionID": 4, - "HostName": "derp4g.tailscale.com", - "IPv4": "185.40.234.113", - "IPv6": "2a00:dd80:20::8f", - "CanPort80": true - }, - { - "Name": "4i", - "RegionID": 4, - "HostName": "derp4i.tailscale.com", - "IPv4": "185.40.234.53", - "IPv6": "2a00:dd80:20::8a6", - "CanPort80": true - }, - { - "Name": "4f", - "RegionID": 4, - "HostName": "derp4f.tailscale.com", - "IPv4": "185.40.234.219", - "IPv6": "2a00:dd80:20::a25", - "CanPort80": true - } - ] - }, - "5": { - "RegionID": 5, - "RegionCode": "syd", - "RegionName": "Sydney", - "Latitude": -33.867778, - "Longitude": 151.21, - "Nodes": [ - { - "Name": "5f", - "RegionID": 5, - "HostName": "derp5f.tailscale.com", - "IPv4": "172.105.166.103", - "IPv6": "2400:8907::2000:ccff:fe1f:80da", - "CanPort80": true - }, - { - "Name": "5g", - "RegionID": 5, - "HostName": "derp5g.tailscale.com", - "IPv4": "172.105.169.57", - "IPv6": "2400:8907::2000:2fff:fea7:57f4", - "CanPort80": true - }, - { - "Name": "5e", - "RegionID": 5, - "HostName": "derp5e.tailscale.com", - "IPv4": "172.105.179.230", - "IPv6": "2400:8907::2000:ceff:fe8d:4f4e", - "CanPort80": true - } - ] - }, - "6": { - "RegionID": 6, - "RegionCode": "blr", - "RegionName": "Bengaluru", - "Latitude": 12.9716, - "Longitude": 77.5946, - "Nodes": [ - { - "Name": "6a", - "RegionID": 6, - "HostName": "derp6.tailscale.com", - "IPv4": "68.183.90.120", - "IPv6": "2400:6180:100:d0::982:d001", - "CanPort80": true - } - ] - }, - "7": { - "RegionID": 7, - "RegionCode": "tok", - "RegionName": "Tokyo", - "Latitude": 35.6764, - "Longitude": 139.65, - "Nodes": [ - { - "Name": "7g", - "RegionID": 7, - "HostName": "derp7g.tailscale.com", - "IPv4": "172.238.6.179", - "IPv6": "2600:3c18::2000:3fff:fe80:3ebd", - "CanPort80": true - }, - { - "Name": "7f", - "RegionID": 7, - "HostName": "derp7f.tailscale.com", - "IPv4": "172.238.6.34", - "IPv6": "2600:3c18::2000:acff:fe8e:3ed5", - "CanPort80": true - }, - { - "Name": "7h", - "RegionID": 7, - "HostName": "derp7h.tailscale.com", - "IPv4": "172.237.28.183", - "IPv6": "2600:3c18::2000:b1ff:fea9:4560", - "CanPort80": true - }, - { - "Name": "7e", - "RegionID": 7, - "HostName": "derp7e.tailscale.com", - "IPv4": "172.238.6.180", - "IPv6": "2600:3c18::2000:60ff:fe0f:6e83", - "STUNOnly": true, - "CanPort80": true - } - ] - }, - "8": { - "RegionID": 8, - "RegionCode": "lhr", - "RegionName": "London", - "Latitude": 51.5072, - "Longitude": 0.1276, - "Nodes": [ - { - "Name": "8f", - "RegionID": 8, - "HostName": "derp8f.tailscale.com", - "IPv4": "176.58.88.183", - "IPv6": "2a00:dd80:3a::dfa", - "CanPort80": true - }, - { - "Name": "8g", - "RegionID": 8, - "HostName": "derp8g.tailscale.com", - "IPv4": "176.58.92.254", - "IPv6": "2a00:dd80:3a::ed", - "CanPort80": true - }, - { - "Name": "8e", - "RegionID": 8, - "HostName": "derp8e.tailscale.com", - "IPv4": "176.58.92.144", - "IPv6": "2a00:dd80:3a::b33", - "CanPort80": true - } - ] - }, - "9": { - "RegionID": 9, - "RegionCode": "dfw", - "RegionName": "Dallas", - "Latitude": 32.779167, - "Longitude": -96.808889, - "Nodes": [ - { - "Name": "9e", - "RegionID": 9, - "HostName": "derp9e.tailscale.com", - "IPv4": "192.73.248.83", - "IPv6": "2607:f740:100::359", - "CanPort80": true - }, - { - "Name": "9f", - "RegionID": 9, - "HostName": "derp9f.tailscale.com", - "IPv4": "209.177.156.197", - "IPv6": "2607:f740:100::cad", - "CanPort80": true - }, - { - "Name": "9d", - "RegionID": 9, - "HostName": "derp9d.tailscale.com", - "IPv4": "209.177.156.94", - "IPv6": "2607:f740:100::c05", - "CanPort80": true - } - ] - } - } - }, - "DisplayMessages": null, - "TKAEnabled": false, - "TKAHead": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", - "Domain": "kratail2tid@passkey", - "DomainAuditLogID": "", - "UserProfiles": { - "6999435610919250": { - "ID": 6999435610919250, - "LoginName": "group-a-client.tail78f774.ts.net", - "DisplayName": "group-a-client" - } - } + "PacketFilterRules": null } }, "group-b-client": { - "commands": { - "packet_filter_rules": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/group-b-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/group-b-client/tailscaled.sock debug localapi POST debug-packet-filter-matches" - }, "packet_filter_rules": null, - "packet_filter_matches": [], - "whois": { - "100.124.195.93": { - "peer_name": "exit-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/group-b-client/tailscaled.sock whois --json 100.124.195.93", - "response": null - }, - "100.116.18.24": { - "peer_name": "exit-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/group-b-client/tailscaled.sock whois --json 100.116.18.24", - "response": null - }, - "100.85.66.106": { - "peer_name": "exit-node", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/group-b-client/tailscaled.sock whois --json 100.85.66.106", - "response": null - }, - "100.107.162.14": { - "peer_name": "group-a-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/group-b-client/tailscaled.sock whois --json 100.107.162.14", - "response": null - }, - "100.105.127.107": { - "peer_name": "multi-exit-router", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/group-b-client/tailscaled.sock whois --json 100.105.127.107", - "response": null - }, - "100.109.43.124": { - "peer_name": "router-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/group-b-client/tailscaled.sock whois --json 100.109.43.124", - "response": null - }, - "100.65.172.123": { - "peer_name": "router-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/group-b-client/tailscaled.sock whois --json 100.65.172.123", - "response": null - }, - "100.92.142.61": { - "peer_name": "subnet-router", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/group-b-client/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/group-b-client/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/group-b-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/group-b-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/group-b-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/group-b-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/group-b-client/tailscaled.sock whois --json 100.90.199.68", - "response": null - } - }, "netmap": { - "SelfNode": { - "ID": 1008089393782498, - "StableID": "ndUwgLoZs811CNTRL", - "Name": "group-b-client.tail78f774.ts.net.", - "User": 1008089393782498, - "Key": "nodekey:ef35a655163204a08b33e09fdc24709f1e3aaa7f40de4efd5549cf014b4d8711", - "DiscoKey": "discokey:e972182cda0d0b459c91b2881624b81749a7e44390a5dde1b9bc17c1ae67715a", - "Addresses": ["100.77.135.18/32", "fd7a:115c:a1e0::4b37:8712/128"], - "AllowedIPs": ["100.77.135.18/32", "fd7a:115c:a1e0::4b37:8712/128"], - "Endpoints": ["77.164.248.136:49377", "10.65.0.27:49377", "172.17.0.1:49377"], - "Hostinfo": { - "Hostname": "group-b-client", - "RequestTags": ["tag:group-b"], - "Services": [ - { "Proto": "peerapi4", "Port": 47173 }, - { "Proto": "peerapi6", "Port": 47173 }, - { "Proto": "peerapi-dns-proxy", "Port": 1 } - ] - }, - "Created": "2026-03-28T10:38:08.031309668Z", - "Tags": ["tag:group-b"], - "MachineAuthorized": true, - "CapMap": { - "https://tailscale.com/cap/file-sharing": null, - "https://tailscale.com/cap/is-owner": null, - "https://tailscale.com/cap/ssh": null, - "https://tailscale.com/cap/tailnet-lock": null, - "probe-udp-lifetime": null, - "ssh-behavior-v1": null, - "ssh-env-vars": null, - "store-appc-routes": null, - "tailnet-display-name": ["kratail2tid@passkey"] - }, - "ComputedName": "group-b-client", - "ComputedNameWithHost": "group-b-client" - }, - "AllCaps": [ - "probe-udp-lifetime", - "ssh-behavior-v1", - "https://tailscale.com/cap/file-sharing", - "https://tailscale.com/cap/ssh", - "https://tailscale.com/cap/tailnet-lock", - "ssh-env-vars", - "store-appc-routes", - "tailnet-display-name", - "https://tailscale.com/cap/is-owner" - ], - "NodeKey": "nodekey:ef35a655163204a08b33e09fdc24709f1e3aaa7f40de4efd5549cf014b4d8711", - "MachineKey": "mkey:f151b3ba7be457f1484c96d8daf48e032d8c9ed890a7f9b2f32c51458a19a05c", "Peers": [], - "DNS": { - "Routes": { - "tail78f774.ts.net.": null, - "ts.net.": [{ "Addr": "199.247.155.53" }, { "Addr": "2620:111:8007::53" }] - }, - "Domains": ["tail78f774.ts.net"], - "Proxied": true, - "ExitNodeFilteredSet": [".ts.net", ".tailscale.net"] - }, - "PacketFilter": [], - "PacketFilterRules": null, - "SSHPolicy": { "rules": [] }, - "CollectServices": false, - "DERPMap": { - "Regions": { - "1": { - "RegionID": 1, - "RegionCode": "nyc", - "RegionName": "New York City", - "Latitude": 40.7128, - "Longitude": -74.006, - "Nodes": [ - { - "Name": "1h", - "RegionID": 1, - "HostName": "derp1h.tailscale.com", - "IPv4": "199.38.181.93", - "IPv6": "2607:f740:f::afd", - "CanPort80": true - }, - { - "Name": "1g", - "RegionID": 1, - "HostName": "derp1g.tailscale.com", - "IPv4": "209.177.145.120", - "IPv6": "2607:f740:f::3eb", - "CanPort80": true - }, - { - "Name": "1i", - "RegionID": 1, - "HostName": "derp1i.tailscale.com", - "IPv4": "199.38.181.103", - "IPv6": "2607:f740:f::e19", - "CanPort80": true - }, - { - "Name": "1f", - "RegionID": 1, - "HostName": "derp1f.tailscale.com", - "IPv4": "199.38.181.104", - "IPv6": "2607:f740:f::bc", - "CanPort80": true - } - ] - }, - "10": { - "RegionID": 10, - "RegionCode": "sea", - "RegionName": "Seattle", - "Latitude": 47.609722, - "Longitude": -122.333056, - "Nodes": [ - { - "Name": "10c", - "RegionID": 10, - "HostName": "derp10c.tailscale.com", - "IPv4": "192.73.240.121", - "IPv6": "2607:f740:14::40c", - "CanPort80": true - }, - { - "Name": "10d", - "RegionID": 10, - "HostName": "derp10d.tailscale.com", - "IPv4": "192.73.240.132", - "IPv6": "2607:f740:14::500", - "CanPort80": true - }, - { - "Name": "10b", - "RegionID": 10, - "HostName": "derp10b.tailscale.com", - "IPv4": "192.73.240.161", - "IPv6": "2607:f740:14::61c", - "CanPort80": true - } - ] - }, - "11": { - "RegionID": 11, - "RegionCode": "sao", - "RegionName": "São Paulo", - "Latitude": -23.55, - "Longitude": -46.633333, - "Nodes": [ - { - "Name": "11f", - "RegionID": 11, - "HostName": "derp11f.tailscale.com", - "IPv4": "172.237.61.197", - "IPv6": "2600:3c0d::2000:3bff:fe44:6166", - "CanPort80": true - }, - { - "Name": "11g", - "RegionID": 11, - "HostName": "derp11g.tailscale.com", - "IPv4": "172.237.61.190", - "IPv6": "2600:3c0d::2000:62ff:febe:2e67", - "CanPort80": true - }, - { - "Name": "11e", - "RegionID": 11, - "HostName": "derp11e.tailscale.com", - "IPv4": "172.237.61.194", - "IPv6": "2600:3c0d::2000:d2ff:fe43:1790", - "CanPort80": true - } - ] - }, - "12": { - "RegionID": 12, - "RegionCode": "ord", - "RegionName": "Chicago", - "Latitude": 41.881944, - "Longitude": -87.627778, - "Nodes": [ - { - "Name": "12e", - "RegionID": 12, - "HostName": "derp12e.tailscale.com", - "IPv4": "209.177.158.15", - "IPv6": "2607:f740:e::b17", - "CanPort80": true - }, - { - "Name": "12f", - "RegionID": 12, - "HostName": "derp12f.tailscale.com", - "IPv4": "199.38.182.118", - "IPv6": "2607:f740:e::4c8", - "CanPort80": true - }, - { - "Name": "12d", - "RegionID": 12, - "HostName": "derp12d.tailscale.com", - "IPv4": "209.177.158.246", - "IPv6": "2607:f740:e::811", - "CanPort80": true - } - ] - }, - "13": { - "RegionID": 13, - "RegionCode": "den", - "RegionName": "Denver", - "Latitude": 39.7392, - "Longitude": -104.9849, - "Nodes": [ - { - "Name": "13c", - "RegionID": 13, - "HostName": "derp13c.tailscale.com", - "IPv4": "192.73.242.28", - "IPv6": "2607:f740:16::5c", - "CanPort80": true - }, - { - "Name": "13d", - "RegionID": 13, - "HostName": "derp13d.tailscale.com", - "IPv4": "192.73.242.204", - "IPv6": "2607:f740:16::c23", - "CanPort80": true - }, - { - "Name": "13b", - "RegionID": 13, - "HostName": "derp13b.tailscale.com", - "IPv4": "192.73.242.187", - "IPv6": "2607:f740:16::640", - "CanPort80": true - } - ] - }, - "14": { - "RegionID": 14, - "RegionCode": "ams", - "RegionName": "Amsterdam", - "Latitude": 52.372778, - "Longitude": 4.893611, - "Nodes": [ - { - "Name": "14c", - "RegionID": 14, - "HostName": "derp14c.tailscale.com", - "IPv4": "176.58.93.147", - "IPv6": "2a00:dd80:3c::b09", - "CanPort80": true - }, - { - "Name": "14d", - "RegionID": 14, - "HostName": "derp14d.tailscale.com", - "IPv4": "176.58.93.154", - "IPv6": "2a00:dd80:3c::3d5", - "CanPort80": true - }, - { - "Name": "14b", - "RegionID": 14, - "HostName": "derp14b.tailscale.com", - "IPv4": "176.58.93.248", - "IPv6": "2a00:dd80:3c::807", - "CanPort80": true - } - ] - }, - "15": { - "RegionID": 15, - "RegionCode": "jnb", - "RegionName": "Johannesburg", - "Latitude": -26.204444, - "Longitude": 28.045556, - "Nodes": [ - { - "Name": "15c", - "RegionID": 15, - "HostName": "derp15c.tailscale.com", - "IPv4": "102.67.165.185", - "IPv6": "2c0f:edb0:0:10::b59", - "CanPort80": true - }, - { - "Name": "15d", - "RegionID": 15, - "HostName": "derp15d.tailscale.com", - "IPv4": "102.67.165.36", - "IPv6": "2c0f:edb0:0:10::599", - "CanPort80": true - }, - { - "Name": "15b", - "RegionID": 15, - "HostName": "derp15b.tailscale.com", - "IPv4": "102.67.165.90", - "IPv6": "2c0f:edb0:0:10::963", - "CanPort80": true - } - ] - }, - "16": { - "RegionID": 16, - "RegionCode": "mia", - "RegionName": "Miami", - "Latitude": 25.78, - "Longitude": -80.21, - "Nodes": [ - { - "Name": "16c", - "RegionID": 16, - "HostName": "derp16c.tailscale.com", - "IPv4": "192.73.243.229", - "IPv6": "2607:f740:17::4e4", - "CanPort80": true - }, - { - "Name": "16d", - "RegionID": 16, - "HostName": "derp16d.tailscale.com", - "IPv4": "192.73.243.141", - "IPv6": "2607:f740:17::475", - "CanPort80": true - }, - { - "Name": "16b", - "RegionID": 16, - "HostName": "derp16b.tailscale.com", - "IPv4": "192.73.243.135", - "IPv6": "2607:f740:17::476", - "CanPort80": true - } - ] - }, - "17": { - "RegionID": 17, - "RegionCode": "lax", - "RegionName": "Los Angeles", - "Latitude": 34.05, - "Longitude": -118.25, - "Nodes": [ - { - "Name": "17c", - "RegionID": 17, - "HostName": "derp17c.tailscale.com", - "IPv4": "208.111.40.12", - "IPv6": "2607:f740:c::10", - "CanPort80": true - }, - { - "Name": "17d", - "RegionID": 17, - "HostName": "derp17d.tailscale.com", - "IPv4": "208.111.40.216", - "IPv6": "2607:f740:c::e1b", - "CanPort80": true - }, - { - "Name": "17b", - "RegionID": 17, - "HostName": "derp17b.tailscale.com", - "IPv4": "192.73.244.245", - "IPv6": "2607:f740:c::646", - "CanPort80": true - } - ] - }, - "18": { - "RegionID": 18, - "RegionCode": "par", - "RegionName": "Paris", - "Latitude": 48.856667, - "Longitude": 2.352222, - "Nodes": [ - { - "Name": "18c", - "RegionID": 18, - "HostName": "derp18c.tailscale.com", - "IPv4": "176.58.90.207", - "IPv6": "2a00:dd80:3e::c19", - "CanPort80": true - }, - { - "Name": "18d", - "RegionID": 18, - "HostName": "derp18d.tailscale.com", - "IPv4": "176.58.90.104", - "IPv6": "2a00:dd80:3e::f2e", - "CanPort80": true - }, - { - "Name": "18b", - "RegionID": 18, - "HostName": "derp18b.tailscale.com", - "IPv4": "176.58.90.147", - "IPv6": "2a00:dd80:3e::363", - "CanPort80": true - } - ] - }, - "19": { - "RegionID": 19, - "RegionCode": "mad", - "RegionName": "Madrid", - "Latitude": 40.416944, - "Longitude": -3.703333, - "Nodes": [ - { - "Name": "19c", - "RegionID": 19, - "HostName": "derp19c.tailscale.com", - "IPv4": "45.159.97.61", - "IPv6": "2a00:dd80:14:10::20", - "CanPort80": true - }, - { - "Name": "19d", - "RegionID": 19, - "HostName": "derp19d.tailscale.com", - "IPv4": "45.159.97.233", - "IPv6": "2a00:dd80:14:10::34a", - "CanPort80": true - }, - { - "Name": "19b", - "RegionID": 19, - "HostName": "derp19b.tailscale.com", - "IPv4": "45.159.97.144", - "IPv6": "2a00:dd80:14:10::335", - "CanPort80": true - } - ] - }, - "2": { - "RegionID": 2, - "RegionCode": "sfo", - "RegionName": "San Francisco", - "Latitude": 37.7775, - "Longitude": -122.416389, - "Nodes": [ - { - "Name": "2e", - "RegionID": 2, - "HostName": "derp2e.tailscale.com", - "IPv4": "192.73.252.134", - "IPv6": "2607:f740:0:3f::44c", - "CanPort80": true - }, - { - "Name": "2f", - "RegionID": 2, - "HostName": "derp2f.tailscale.com", - "IPv4": "208.111.34.178", - "IPv6": "2607:f740:0:3f::f4", - "CanPort80": true - }, - { - "Name": "2d", - "RegionID": 2, - "HostName": "derp2d.tailscale.com", - "IPv4": "192.73.252.65", - "IPv6": "2607:f740:0:3f::287", - "CanPort80": true - } - ] - }, - "20": { - "RegionID": 20, - "RegionCode": "hkg", - "RegionName": "Hong Kong", - "Latitude": 22.3193, - "Longitude": 114.1694, - "Nodes": [ - { - "Name": "20c", - "RegionID": 20, - "HostName": "derp20c.tailscale.com", - "IPv4": "205.147.105.30", - "IPv6": "2403:2500:8000:1::5fb", - "CanPort80": true - }, - { - "Name": "20d", - "RegionID": 20, - "HostName": "derp20d.tailscale.com", - "IPv4": "205.147.105.78", - "IPv6": "2403:2500:8000:1::e9a", - "CanPort80": true - }, - { - "Name": "20b", - "RegionID": 20, - "HostName": "derp20b.tailscale.com", - "IPv4": "103.6.84.152", - "IPv6": "2403:2500:8000:1::ef6", - "CanPort80": true - } - ] - }, - "21": { - "RegionID": 21, - "RegionCode": "tor", - "RegionName": "Toronto", - "Latitude": 43.741667, - "Longitude": -79.373333, - "Nodes": [ - { - "Name": "21c", - "RegionID": 21, - "HostName": "derp21c.tailscale.com", - "IPv4": "162.248.221.215", - "IPv6": "2607:f740:50::f10", - "CanPort80": true - }, - { - "Name": "21d", - "RegionID": 21, - "HostName": "derp21d.tailscale.com", - "IPv4": "162.248.221.248", - "IPv6": "2607:f740:50::ca4", - "CanPort80": true - }, - { - "Name": "21b", - "RegionID": 21, - "HostName": "derp21b.tailscale.com", - "IPv4": "162.248.221.199", - "IPv6": "2607:f740:50::1d1", - "CanPort80": true - } - ] - }, - "22": { - "RegionID": 22, - "RegionCode": "waw", - "RegionName": "Warsaw", - "Latitude": 52.23, - "Longitude": 21.011111, - "Nodes": [ - { - "Name": "22c", - "RegionID": 22, - "HostName": "derp22c.tailscale.com", - "IPv4": "45.159.98.253", - "IPv6": "2a00:dd80:40:100::3f", - "CanPort80": true - }, - { - "Name": "22d", - "RegionID": 22, - "HostName": "derp22d.tailscale.com", - "IPv4": "45.159.98.145", - "IPv6": "2a00:dd80:40:100::211", - "CanPort80": true - }, - { - "Name": "22b", - "RegionID": 22, - "HostName": "derp22b.tailscale.com", - "IPv4": "45.159.98.196", - "IPv6": "2a00:dd80:40:100::316", - "CanPort80": true - } - ] - }, - "23": { - "RegionID": 23, - "RegionCode": "dbi", - "RegionName": "Dubai", - "Latitude": 25.263056, - "Longitude": 55.297222, - "Nodes": [ - { - "Name": "23c", - "RegionID": 23, - "HostName": "derp23c.tailscale.com", - "IPv4": "185.34.3.207", - "IPv6": "2a00:dd80:3f:100::a50", - "CanPort80": true - }, - { - "Name": "23d", - "RegionID": 23, - "HostName": "derp23d.tailscale.com", - "IPv4": "185.34.3.75", - "IPv6": "2a00:dd80:3f:100::97e", - "CanPort80": true - }, - { - "Name": "23b", - "RegionID": 23, - "HostName": "derp23b.tailscale.com", - "IPv4": "185.34.3.232", - "IPv6": "2a00:dd80:3f:100::76f", - "CanPort80": true - } - ] - }, - "24": { - "RegionID": 24, - "RegionCode": "hnl", - "RegionName": "Honolulu", - "Latitude": 21.306944, - "Longitude": -157.858333, - "Nodes": [ - { - "Name": "24c", - "RegionID": 24, - "HostName": "derp24c.tailscale.com", - "IPv4": "208.83.233.233", - "IPv6": "2001:19f0:c000:c591:5400:04ff:fe26:2c5f", - "CanPort80": true - }, - { - "Name": "24d", - "RegionID": 24, - "HostName": "derp24d.tailscale.com", - "IPv4": "208.72.155.133", - "IPv6": "2001:19f0:c000:c564:5400:04ff:fe26:2ba8", - "CanPort80": true - }, - { - "Name": "24b", - "RegionID": 24, - "HostName": "derp24b.tailscale.com", - "IPv4": "208.83.234.151", - "IPv6": "2001:19f0:c000:c586:5400:04ff:fe26:2ba6", - "CanPort80": true - } - ] - }, - "25": { - "RegionID": 25, - "RegionCode": "nai", - "RegionName": "Nairobi", - "Latitude": -1.286389, - "Longitude": 36.817222, - "Nodes": [ - { - "Name": "25c", - "RegionID": 25, - "HostName": "derp25c.tailscale.com", - "IPv4": "102.67.167.37", - "IPv6": "2c0f:edb0:2000:1::2c7", - "CanPort80": true - }, - { - "Name": "25d", - "RegionID": 25, - "HostName": "derp25d.tailscale.com", - "IPv4": "102.67.167.188", - "IPv6": "2c0f:edb0:2000:1::188", - "CanPort80": true - }, - { - "Name": "25b", - "RegionID": 25, - "HostName": "derp25b.tailscale.com", - "IPv4": "102.67.167.245", - "IPv6": "2c0f:edb0:2000:1::2e9", - "CanPort80": true - } - ] - }, - "26": { - "RegionID": 26, - "RegionCode": "nue", - "RegionName": "Nuremberg", - "Latitude": 49.453889, - "Longitude": 11.0775, - "Nodes": [ - { - "Name": "26c", - "RegionID": 26, - "HostName": "derp26c.tailscale.com", - "IPv4": "49.12.193.137", - "IPv6": "2a01:4f8:1c1c:5c70::1", - "CanPort80": true - }, - { - "Name": "26d", - "RegionID": 26, - "HostName": "derp26d.tailscale.com", - "IPv4": "49.13.204.141", - "IPv6": "2a01:4f8:1c0c:7d06::1", - "CanPort80": true - }, - { - "Name": "26b", - "RegionID": 26, - "HostName": "derp26b.tailscale.com", - "IPv4": "167.235.72.200", - "IPv6": "2a01:4f8:1c1c:47b6::1", - "CanPort80": true - } - ] - }, - "27": { - "RegionID": 27, - "RegionCode": "iad", - "RegionName": "Ashburn", - "Latitude": 39.03, - "Longitude": -77.471111, - "Nodes": [ - { - "Name": "27d", - "RegionID": 27, - "HostName": "derp27d.tailscale.com", - "IPv4": "178.156.152.106", - "IPv6": "2a01:4ff:f0:3c8e::1", - "CanPort80": true - }, - { - "Name": "27c", - "RegionID": 27, - "HostName": "derp27c.tailscale.com", - "IPv4": "178.156.152.91", - "IPv6": "2a01:4ff:f0:3913::1", - "CanPort80": true - }, - { - "Name": "27e", - "RegionID": 27, - "HostName": "derp27e.tailscale.com", - "IPv4": "178.156.134.232", - "IPv6": "2a01:4ff:f0:28d4::1", - "CanPort80": true - }, - { - "Name": "27b", - "RegionID": 27, - "HostName": "derp27b.tailscale.com", - "IPv4": "5.161.218.233", - "IPv6": "2a01:4ff:f0:3db9::1", - "CanPort80": true - } - ] - }, - "28": { - "RegionID": 28, - "RegionCode": "hel", - "RegionName": "Helsinki", - "Latitude": 60.170833, - "Longitude": 24.9375, - "Nodes": [ - { - "Name": "28c", - "RegionID": 28, - "HostName": "derp28c.tailscale.com", - "IPv4": "95.217.2.165", - "IPv6": "2a01:4f9:c012:cd74::1", - "CanPort80": true - }, - { - "Name": "28d", - "RegionID": 28, - "HostName": "derp28d.tailscale.com", - "IPv4": "157.180.28.32", - "IPv6": "2a01:4f9:c012:2e5b::1", - "CanPort80": true - }, - { - "Name": "28b", - "RegionID": 28, - "HostName": "derp28b.tailscale.com", - "IPv4": "65.109.143.62", - "IPv6": "2a01:4f9:c012:d55c::1", - "CanPort80": true - } - ] - }, - "3": { - "RegionID": 3, - "RegionCode": "sin", - "RegionName": "Singapore", - "Latitude": 1.3521, - "Longitude": 103.8198, - "Nodes": [ - { - "Name": "3g", - "RegionID": 3, - "HostName": "derp3g.tailscale.com", - "IPv4": "172.237.72.79", - "IPv6": "2600:3c15::2000:adff:fe08:6fab", - "CanPort80": true - }, - { - "Name": "3f", - "RegionID": 3, - "HostName": "derp3f.tailscale.com", - "IPv4": "172.237.72.8", - "IPv6": "2600:3c15::2000:53ff:fe48:a668", - "CanPort80": true - }, - { - "Name": "3h", - "RegionID": 3, - "HostName": "derp3h.tailscale.com", - "IPv4": "172.237.66.30", - "IPv6": "2600:3c15::2000:3dff:fe44:50aa", - "CanPort80": true - }, - { - "Name": "3e", - "RegionID": 3, - "HostName": "derp3e.tailscale.com", - "IPv4": "172.237.72.43", - "IPv6": "2600:3c15::2000:6cff:fee4:d799", - "CanPort80": true - } - ] - }, - "4": { - "RegionID": 4, - "RegionCode": "fra", - "RegionName": "Frankfurt", - "Latitude": 50.1109, - "Longitude": 8.6821, - "Nodes": [ - { - "Name": "4h", - "RegionID": 4, - "HostName": "derp4h.tailscale.com", - "IPv4": "185.40.234.77", - "IPv6": "2a00:dd80:20::bcf", - "CanPort80": true - }, - { - "Name": "4g", - "RegionID": 4, - "HostName": "derp4g.tailscale.com", - "IPv4": "185.40.234.113", - "IPv6": "2a00:dd80:20::8f", - "CanPort80": true - }, - { - "Name": "4i", - "RegionID": 4, - "HostName": "derp4i.tailscale.com", - "IPv4": "185.40.234.53", - "IPv6": "2a00:dd80:20::8a6", - "CanPort80": true - }, - { - "Name": "4f", - "RegionID": 4, - "HostName": "derp4f.tailscale.com", - "IPv4": "185.40.234.219", - "IPv6": "2a00:dd80:20::a25", - "CanPort80": true - } - ] - }, - "5": { - "RegionID": 5, - "RegionCode": "syd", - "RegionName": "Sydney", - "Latitude": -33.867778, - "Longitude": 151.21, - "Nodes": [ - { - "Name": "5f", - "RegionID": 5, - "HostName": "derp5f.tailscale.com", - "IPv4": "172.105.166.103", - "IPv6": "2400:8907::2000:ccff:fe1f:80da", - "CanPort80": true - }, - { - "Name": "5g", - "RegionID": 5, - "HostName": "derp5g.tailscale.com", - "IPv4": "172.105.169.57", - "IPv6": "2400:8907::2000:2fff:fea7:57f4", - "CanPort80": true - }, - { - "Name": "5e", - "RegionID": 5, - "HostName": "derp5e.tailscale.com", - "IPv4": "172.105.179.230", - "IPv6": "2400:8907::2000:ceff:fe8d:4f4e", - "CanPort80": true - } - ] - }, - "6": { - "RegionID": 6, - "RegionCode": "blr", - "RegionName": "Bengaluru", - "Latitude": 12.9716, - "Longitude": 77.5946, - "Nodes": [ - { - "Name": "6a", - "RegionID": 6, - "HostName": "derp6.tailscale.com", - "IPv4": "68.183.90.120", - "IPv6": "2400:6180:100:d0::982:d001", - "CanPort80": true - } - ] - }, - "7": { - "RegionID": 7, - "RegionCode": "tok", - "RegionName": "Tokyo", - "Latitude": 35.6764, - "Longitude": 139.65, - "Nodes": [ - { - "Name": "7g", - "RegionID": 7, - "HostName": "derp7g.tailscale.com", - "IPv4": "172.238.6.179", - "IPv6": "2600:3c18::2000:3fff:fe80:3ebd", - "CanPort80": true - }, - { - "Name": "7f", - "RegionID": 7, - "HostName": "derp7f.tailscale.com", - "IPv4": "172.238.6.34", - "IPv6": "2600:3c18::2000:acff:fe8e:3ed5", - "CanPort80": true - }, - { - "Name": "7h", - "RegionID": 7, - "HostName": "derp7h.tailscale.com", - "IPv4": "172.237.28.183", - "IPv6": "2600:3c18::2000:b1ff:fea9:4560", - "CanPort80": true - }, - { - "Name": "7e", - "RegionID": 7, - "HostName": "derp7e.tailscale.com", - "IPv4": "172.238.6.180", - "IPv6": "2600:3c18::2000:60ff:fe0f:6e83", - "STUNOnly": true, - "CanPort80": true - } - ] - }, - "8": { - "RegionID": 8, - "RegionCode": "lhr", - "RegionName": "London", - "Latitude": 51.5072, - "Longitude": 0.1276, - "Nodes": [ - { - "Name": "8f", - "RegionID": 8, - "HostName": "derp8f.tailscale.com", - "IPv4": "176.58.88.183", - "IPv6": "2a00:dd80:3a::dfa", - "CanPort80": true - }, - { - "Name": "8g", - "RegionID": 8, - "HostName": "derp8g.tailscale.com", - "IPv4": "176.58.92.254", - "IPv6": "2a00:dd80:3a::ed", - "CanPort80": true - }, - { - "Name": "8e", - "RegionID": 8, - "HostName": "derp8e.tailscale.com", - "IPv4": "176.58.92.144", - "IPv6": "2a00:dd80:3a::b33", - "CanPort80": true - } - ] - }, - "9": { - "RegionID": 9, - "RegionCode": "dfw", - "RegionName": "Dallas", - "Latitude": 32.779167, - "Longitude": -96.808889, - "Nodes": [ - { - "Name": "9e", - "RegionID": 9, - "HostName": "derp9e.tailscale.com", - "IPv4": "192.73.248.83", - "IPv6": "2607:f740:100::359", - "CanPort80": true - }, - { - "Name": "9f", - "RegionID": 9, - "HostName": "derp9f.tailscale.com", - "IPv4": "209.177.156.197", - "IPv6": "2607:f740:100::cad", - "CanPort80": true - }, - { - "Name": "9d", - "RegionID": 9, - "HostName": "derp9d.tailscale.com", - "IPv4": "209.177.156.94", - "IPv6": "2607:f740:100::c05", - "CanPort80": true - } - ] - } - } - }, - "DisplayMessages": null, - "TKAEnabled": false, - "TKAHead": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", - "Domain": "kratail2tid@passkey", - "DomainAuditLogID": "", - "UserProfiles": { - "1008089393782498": { - "ID": 1008089393782498, - "LoginName": "group-b-client.tail78f774.ts.net", - "DisplayName": "group-b-client" - } - } + "PacketFilterRules": null } }, "multi-exit-router": { - "commands": { - "packet_filter_rules": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/multi-exit-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/multi-exit-router/tailscaled.sock debug localapi POST debug-packet-filter-matches" - }, "packet_filter_rules": null, - "packet_filter_matches": [], - "whois": { - "100.124.195.93": { - "peer_name": "exit-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/multi-exit-router/tailscaled.sock whois --json 100.124.195.93", - "response": null - }, - "100.116.18.24": { - "peer_name": "exit-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/multi-exit-router/tailscaled.sock whois --json 100.116.18.24", - "response": null - }, - "100.85.66.106": { - "peer_name": "exit-node", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/multi-exit-router/tailscaled.sock whois --json 100.85.66.106", - "response": null - }, - "100.107.162.14": { - "peer_name": "group-a-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/multi-exit-router/tailscaled.sock whois --json 100.107.162.14", - "response": null - }, - "100.77.135.18": { - "peer_name": "group-b-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/multi-exit-router/tailscaled.sock whois --json 100.77.135.18", - "response": null - }, - "100.109.43.124": { - "peer_name": "router-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/multi-exit-router/tailscaled.sock whois --json 100.109.43.124", - "response": null - }, - "100.65.172.123": { - "peer_name": "router-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/multi-exit-router/tailscaled.sock whois --json 100.65.172.123", - "response": null - }, - "100.92.142.61": { - "peer_name": "subnet-router", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/multi-exit-router/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/multi-exit-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/multi-exit-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/multi-exit-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/multi-exit-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/multi-exit-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/multi-exit-router/tailscaled.sock whois --json 100.90.199.68", - "response": null - } - }, "netmap": { - "SelfNode": { - "ID": 6294409699640722, - "StableID": "nMQuxDUk9r11CNTRL", - "Name": "multi-exit-router.tail78f774.ts.net.", - "User": 6294409699640722, - "Key": "nodekey:b854a0d64eba757cd3215c5bd78149cc0f927e35a2ad20342e88a15ead297f6a", - "DiscoKey": "discokey:762c82dd308809f511c6ac86dcc2642585837358fdd24958d55f16883c8e6c58", - "Addresses": ["100.105.127.107/32", "fd7a:115c:a1e0::ad37:7f6b/128"], - "AllowedIPs": ["100.105.127.107/32", "fd7a:115c:a1e0::ad37:7f6b/128", "10.33.0.0/16"], - "Endpoints": ["77.164.248.136:50766", "10.65.0.27:50766", "172.17.0.1:50766"], - "Hostinfo": { - "Hostname": "multi-exit-router", - "RoutableIPs": ["0.0.0.0/0", "::/0", "10.33.0.0/16"], - "RequestTags": ["tag:exit", "tag:router"], - "Services": [ - { "Proto": "peerapi4", "Port": 62548 }, - { "Proto": "peerapi6", "Port": 62548 }, - { "Proto": "peerapi-dns-proxy", "Port": 1 } - ] - }, - "Created": "2026-03-28T10:38:19.117098852Z", - "Tags": ["tag:exit", "tag:router"], - "PrimaryRoutes": ["10.33.0.0/16"], - "MachineAuthorized": true, - "CapMap": { - "https://tailscale.com/cap/file-sharing": null, - "https://tailscale.com/cap/is-owner": null, - "https://tailscale.com/cap/ssh": null, - "https://tailscale.com/cap/tailnet-lock": null, - "probe-udp-lifetime": null, - "ssh-behavior-v1": null, - "ssh-env-vars": null, - "store-appc-routes": null, - "tailnet-display-name": ["kratail2tid@passkey"] - }, - "ComputedName": "multi-exit-router", - "ComputedNameWithHost": "multi-exit-router" - }, - "AllCaps": [ - "probe-udp-lifetime", - "tailnet-display-name", - "https://tailscale.com/cap/is-owner", - "store-appc-routes", - "https://tailscale.com/cap/tailnet-lock", - "ssh-env-vars", - "https://tailscale.com/cap/ssh", - "ssh-behavior-v1", - "https://tailscale.com/cap/file-sharing" - ], - "NodeKey": "nodekey:b854a0d64eba757cd3215c5bd78149cc0f927e35a2ad20342e88a15ead297f6a", - "MachineKey": "mkey:91bee804809f30d07bfc29cf556844288fc3d45e0572469a3cb0799a535fda7d", "Peers": [], - "DNS": { - "Routes": { - "tail78f774.ts.net.": null, - "ts.net.": [{ "Addr": "199.247.155.53" }, { "Addr": "2620:111:8007::53" }] - }, - "Domains": ["tail78f774.ts.net"], - "Proxied": true, - "ExitNodeFilteredSet": [".ts.net", ".tailscale.net"] - }, - "PacketFilter": [], - "PacketFilterRules": null, - "SSHPolicy": { "rules": [] }, - "CollectServices": false, - "DERPMap": { - "Regions": { - "1": { - "RegionID": 1, - "RegionCode": "nyc", - "RegionName": "New York City", - "Latitude": 40.7128, - "Longitude": -74.006, - "Nodes": [ - { - "Name": "1h", - "RegionID": 1, - "HostName": "derp1h.tailscale.com", - "IPv4": "199.38.181.93", - "IPv6": "2607:f740:f::afd", - "CanPort80": true - }, - { - "Name": "1g", - "RegionID": 1, - "HostName": "derp1g.tailscale.com", - "IPv4": "209.177.145.120", - "IPv6": "2607:f740:f::3eb", - "CanPort80": true - }, - { - "Name": "1i", - "RegionID": 1, - "HostName": "derp1i.tailscale.com", - "IPv4": "199.38.181.103", - "IPv6": "2607:f740:f::e19", - "CanPort80": true - }, - { - "Name": "1f", - "RegionID": 1, - "HostName": "derp1f.tailscale.com", - "IPv4": "199.38.181.104", - "IPv6": "2607:f740:f::bc", - "CanPort80": true - } - ] - }, - "10": { - "RegionID": 10, - "RegionCode": "sea", - "RegionName": "Seattle", - "Latitude": 47.609722, - "Longitude": -122.333056, - "Nodes": [ - { - "Name": "10c", - "RegionID": 10, - "HostName": "derp10c.tailscale.com", - "IPv4": "192.73.240.121", - "IPv6": "2607:f740:14::40c", - "CanPort80": true - }, - { - "Name": "10d", - "RegionID": 10, - "HostName": "derp10d.tailscale.com", - "IPv4": "192.73.240.132", - "IPv6": "2607:f740:14::500", - "CanPort80": true - }, - { - "Name": "10b", - "RegionID": 10, - "HostName": "derp10b.tailscale.com", - "IPv4": "192.73.240.161", - "IPv6": "2607:f740:14::61c", - "CanPort80": true - } - ] - }, - "11": { - "RegionID": 11, - "RegionCode": "sao", - "RegionName": "São Paulo", - "Latitude": -23.55, - "Longitude": -46.633333, - "Nodes": [ - { - "Name": "11f", - "RegionID": 11, - "HostName": "derp11f.tailscale.com", - "IPv4": "172.237.61.197", - "IPv6": "2600:3c0d::2000:3bff:fe44:6166", - "CanPort80": true - }, - { - "Name": "11g", - "RegionID": 11, - "HostName": "derp11g.tailscale.com", - "IPv4": "172.237.61.190", - "IPv6": "2600:3c0d::2000:62ff:febe:2e67", - "CanPort80": true - }, - { - "Name": "11e", - "RegionID": 11, - "HostName": "derp11e.tailscale.com", - "IPv4": "172.237.61.194", - "IPv6": "2600:3c0d::2000:d2ff:fe43:1790", - "CanPort80": true - } - ] - }, - "12": { - "RegionID": 12, - "RegionCode": "ord", - "RegionName": "Chicago", - "Latitude": 41.881944, - "Longitude": -87.627778, - "Nodes": [ - { - "Name": "12e", - "RegionID": 12, - "HostName": "derp12e.tailscale.com", - "IPv4": "209.177.158.15", - "IPv6": "2607:f740:e::b17", - "CanPort80": true - }, - { - "Name": "12f", - "RegionID": 12, - "HostName": "derp12f.tailscale.com", - "IPv4": "199.38.182.118", - "IPv6": "2607:f740:e::4c8", - "CanPort80": true - }, - { - "Name": "12d", - "RegionID": 12, - "HostName": "derp12d.tailscale.com", - "IPv4": "209.177.158.246", - "IPv6": "2607:f740:e::811", - "CanPort80": true - } - ] - }, - "13": { - "RegionID": 13, - "RegionCode": "den", - "RegionName": "Denver", - "Latitude": 39.7392, - "Longitude": -104.9849, - "Nodes": [ - { - "Name": "13c", - "RegionID": 13, - "HostName": "derp13c.tailscale.com", - "IPv4": "192.73.242.28", - "IPv6": "2607:f740:16::5c", - "CanPort80": true - }, - { - "Name": "13d", - "RegionID": 13, - "HostName": "derp13d.tailscale.com", - "IPv4": "192.73.242.204", - "IPv6": "2607:f740:16::c23", - "CanPort80": true - }, - { - "Name": "13b", - "RegionID": 13, - "HostName": "derp13b.tailscale.com", - "IPv4": "192.73.242.187", - "IPv6": "2607:f740:16::640", - "CanPort80": true - } - ] - }, - "14": { - "RegionID": 14, - "RegionCode": "ams", - "RegionName": "Amsterdam", - "Latitude": 52.372778, - "Longitude": 4.893611, - "Nodes": [ - { - "Name": "14c", - "RegionID": 14, - "HostName": "derp14c.tailscale.com", - "IPv4": "176.58.93.147", - "IPv6": "2a00:dd80:3c::b09", - "CanPort80": true - }, - { - "Name": "14d", - "RegionID": 14, - "HostName": "derp14d.tailscale.com", - "IPv4": "176.58.93.154", - "IPv6": "2a00:dd80:3c::3d5", - "CanPort80": true - }, - { - "Name": "14b", - "RegionID": 14, - "HostName": "derp14b.tailscale.com", - "IPv4": "176.58.93.248", - "IPv6": "2a00:dd80:3c::807", - "CanPort80": true - } - ] - }, - "15": { - "RegionID": 15, - "RegionCode": "jnb", - "RegionName": "Johannesburg", - "Latitude": -26.204444, - "Longitude": 28.045556, - "Nodes": [ - { - "Name": "15c", - "RegionID": 15, - "HostName": "derp15c.tailscale.com", - "IPv4": "102.67.165.185", - "IPv6": "2c0f:edb0:0:10::b59", - "CanPort80": true - }, - { - "Name": "15d", - "RegionID": 15, - "HostName": "derp15d.tailscale.com", - "IPv4": "102.67.165.36", - "IPv6": "2c0f:edb0:0:10::599", - "CanPort80": true - }, - { - "Name": "15b", - "RegionID": 15, - "HostName": "derp15b.tailscale.com", - "IPv4": "102.67.165.90", - "IPv6": "2c0f:edb0:0:10::963", - "CanPort80": true - } - ] - }, - "16": { - "RegionID": 16, - "RegionCode": "mia", - "RegionName": "Miami", - "Latitude": 25.78, - "Longitude": -80.21, - "Nodes": [ - { - "Name": "16c", - "RegionID": 16, - "HostName": "derp16c.tailscale.com", - "IPv4": "192.73.243.229", - "IPv6": "2607:f740:17::4e4", - "CanPort80": true - }, - { - "Name": "16d", - "RegionID": 16, - "HostName": "derp16d.tailscale.com", - "IPv4": "192.73.243.141", - "IPv6": "2607:f740:17::475", - "CanPort80": true - }, - { - "Name": "16b", - "RegionID": 16, - "HostName": "derp16b.tailscale.com", - "IPv4": "192.73.243.135", - "IPv6": "2607:f740:17::476", - "CanPort80": true - } - ] - }, - "17": { - "RegionID": 17, - "RegionCode": "lax", - "RegionName": "Los Angeles", - "Latitude": 34.05, - "Longitude": -118.25, - "Nodes": [ - { - "Name": "17c", - "RegionID": 17, - "HostName": "derp17c.tailscale.com", - "IPv4": "208.111.40.12", - "IPv6": "2607:f740:c::10", - "CanPort80": true - }, - { - "Name": "17d", - "RegionID": 17, - "HostName": "derp17d.tailscale.com", - "IPv4": "208.111.40.216", - "IPv6": "2607:f740:c::e1b", - "CanPort80": true - }, - { - "Name": "17b", - "RegionID": 17, - "HostName": "derp17b.tailscale.com", - "IPv4": "192.73.244.245", - "IPv6": "2607:f740:c::646", - "CanPort80": true - } - ] - }, - "18": { - "RegionID": 18, - "RegionCode": "par", - "RegionName": "Paris", - "Latitude": 48.856667, - "Longitude": 2.352222, - "Nodes": [ - { - "Name": "18c", - "RegionID": 18, - "HostName": "derp18c.tailscale.com", - "IPv4": "176.58.90.207", - "IPv6": "2a00:dd80:3e::c19", - "CanPort80": true - }, - { - "Name": "18d", - "RegionID": 18, - "HostName": "derp18d.tailscale.com", - "IPv4": "176.58.90.104", - "IPv6": "2a00:dd80:3e::f2e", - "CanPort80": true - }, - { - "Name": "18b", - "RegionID": 18, - "HostName": "derp18b.tailscale.com", - "IPv4": "176.58.90.147", - "IPv6": "2a00:dd80:3e::363", - "CanPort80": true - } - ] - }, - "19": { - "RegionID": 19, - "RegionCode": "mad", - "RegionName": "Madrid", - "Latitude": 40.416944, - "Longitude": -3.703333, - "Nodes": [ - { - "Name": "19c", - "RegionID": 19, - "HostName": "derp19c.tailscale.com", - "IPv4": "45.159.97.61", - "IPv6": "2a00:dd80:14:10::20", - "CanPort80": true - }, - { - "Name": "19d", - "RegionID": 19, - "HostName": "derp19d.tailscale.com", - "IPv4": "45.159.97.233", - "IPv6": "2a00:dd80:14:10::34a", - "CanPort80": true - }, - { - "Name": "19b", - "RegionID": 19, - "HostName": "derp19b.tailscale.com", - "IPv4": "45.159.97.144", - "IPv6": "2a00:dd80:14:10::335", - "CanPort80": true - } - ] - }, - "2": { - "RegionID": 2, - "RegionCode": "sfo", - "RegionName": "San Francisco", - "Latitude": 37.7775, - "Longitude": -122.416389, - "Nodes": [ - { - "Name": "2e", - "RegionID": 2, - "HostName": "derp2e.tailscale.com", - "IPv4": "192.73.252.134", - "IPv6": "2607:f740:0:3f::44c", - "CanPort80": true - }, - { - "Name": "2f", - "RegionID": 2, - "HostName": "derp2f.tailscale.com", - "IPv4": "208.111.34.178", - "IPv6": "2607:f740:0:3f::f4", - "CanPort80": true - }, - { - "Name": "2d", - "RegionID": 2, - "HostName": "derp2d.tailscale.com", - "IPv4": "192.73.252.65", - "IPv6": "2607:f740:0:3f::287", - "CanPort80": true - } - ] - }, - "20": { - "RegionID": 20, - "RegionCode": "hkg", - "RegionName": "Hong Kong", - "Latitude": 22.3193, - "Longitude": 114.1694, - "Nodes": [ - { - "Name": "20c", - "RegionID": 20, - "HostName": "derp20c.tailscale.com", - "IPv4": "205.147.105.30", - "IPv6": "2403:2500:8000:1::5fb", - "CanPort80": true - }, - { - "Name": "20d", - "RegionID": 20, - "HostName": "derp20d.tailscale.com", - "IPv4": "205.147.105.78", - "IPv6": "2403:2500:8000:1::e9a", - "CanPort80": true - }, - { - "Name": "20b", - "RegionID": 20, - "HostName": "derp20b.tailscale.com", - "IPv4": "103.6.84.152", - "IPv6": "2403:2500:8000:1::ef6", - "CanPort80": true - } - ] - }, - "21": { - "RegionID": 21, - "RegionCode": "tor", - "RegionName": "Toronto", - "Latitude": 43.741667, - "Longitude": -79.373333, - "Nodes": [ - { - "Name": "21c", - "RegionID": 21, - "HostName": "derp21c.tailscale.com", - "IPv4": "162.248.221.215", - "IPv6": "2607:f740:50::f10", - "CanPort80": true - }, - { - "Name": "21d", - "RegionID": 21, - "HostName": "derp21d.tailscale.com", - "IPv4": "162.248.221.248", - "IPv6": "2607:f740:50::ca4", - "CanPort80": true - }, - { - "Name": "21b", - "RegionID": 21, - "HostName": "derp21b.tailscale.com", - "IPv4": "162.248.221.199", - "IPv6": "2607:f740:50::1d1", - "CanPort80": true - } - ] - }, - "22": { - "RegionID": 22, - "RegionCode": "waw", - "RegionName": "Warsaw", - "Latitude": 52.23, - "Longitude": 21.011111, - "Nodes": [ - { - "Name": "22c", - "RegionID": 22, - "HostName": "derp22c.tailscale.com", - "IPv4": "45.159.98.253", - "IPv6": "2a00:dd80:40:100::3f", - "CanPort80": true - }, - { - "Name": "22d", - "RegionID": 22, - "HostName": "derp22d.tailscale.com", - "IPv4": "45.159.98.145", - "IPv6": "2a00:dd80:40:100::211", - "CanPort80": true - }, - { - "Name": "22b", - "RegionID": 22, - "HostName": "derp22b.tailscale.com", - "IPv4": "45.159.98.196", - "IPv6": "2a00:dd80:40:100::316", - "CanPort80": true - } - ] - }, - "23": { - "RegionID": 23, - "RegionCode": "dbi", - "RegionName": "Dubai", - "Latitude": 25.263056, - "Longitude": 55.297222, - "Nodes": [ - { - "Name": "23c", - "RegionID": 23, - "HostName": "derp23c.tailscale.com", - "IPv4": "185.34.3.207", - "IPv6": "2a00:dd80:3f:100::a50", - "CanPort80": true - }, - { - "Name": "23d", - "RegionID": 23, - "HostName": "derp23d.tailscale.com", - "IPv4": "185.34.3.75", - "IPv6": "2a00:dd80:3f:100::97e", - "CanPort80": true - }, - { - "Name": "23b", - "RegionID": 23, - "HostName": "derp23b.tailscale.com", - "IPv4": "185.34.3.232", - "IPv6": "2a00:dd80:3f:100::76f", - "CanPort80": true - } - ] - }, - "24": { - "RegionID": 24, - "RegionCode": "hnl", - "RegionName": "Honolulu", - "Latitude": 21.306944, - "Longitude": -157.858333, - "Nodes": [ - { - "Name": "24c", - "RegionID": 24, - "HostName": "derp24c.tailscale.com", - "IPv4": "208.83.233.233", - "IPv6": "2001:19f0:c000:c591:5400:04ff:fe26:2c5f", - "CanPort80": true - }, - { - "Name": "24d", - "RegionID": 24, - "HostName": "derp24d.tailscale.com", - "IPv4": "208.72.155.133", - "IPv6": "2001:19f0:c000:c564:5400:04ff:fe26:2ba8", - "CanPort80": true - }, - { - "Name": "24b", - "RegionID": 24, - "HostName": "derp24b.tailscale.com", - "IPv4": "208.83.234.151", - "IPv6": "2001:19f0:c000:c586:5400:04ff:fe26:2ba6", - "CanPort80": true - } - ] - }, - "25": { - "RegionID": 25, - "RegionCode": "nai", - "RegionName": "Nairobi", - "Latitude": -1.286389, - "Longitude": 36.817222, - "Nodes": [ - { - "Name": "25c", - "RegionID": 25, - "HostName": "derp25c.tailscale.com", - "IPv4": "102.67.167.37", - "IPv6": "2c0f:edb0:2000:1::2c7", - "CanPort80": true - }, - { - "Name": "25d", - "RegionID": 25, - "HostName": "derp25d.tailscale.com", - "IPv4": "102.67.167.188", - "IPv6": "2c0f:edb0:2000:1::188", - "CanPort80": true - }, - { - "Name": "25b", - "RegionID": 25, - "HostName": "derp25b.tailscale.com", - "IPv4": "102.67.167.245", - "IPv6": "2c0f:edb0:2000:1::2e9", - "CanPort80": true - } - ] - }, - "26": { - "RegionID": 26, - "RegionCode": "nue", - "RegionName": "Nuremberg", - "Latitude": 49.453889, - "Longitude": 11.0775, - "Nodes": [ - { - "Name": "26c", - "RegionID": 26, - "HostName": "derp26c.tailscale.com", - "IPv4": "49.12.193.137", - "IPv6": "2a01:4f8:1c1c:5c70::1", - "CanPort80": true - }, - { - "Name": "26d", - "RegionID": 26, - "HostName": "derp26d.tailscale.com", - "IPv4": "49.13.204.141", - "IPv6": "2a01:4f8:1c0c:7d06::1", - "CanPort80": true - }, - { - "Name": "26b", - "RegionID": 26, - "HostName": "derp26b.tailscale.com", - "IPv4": "167.235.72.200", - "IPv6": "2a01:4f8:1c1c:47b6::1", - "CanPort80": true - } - ] - }, - "27": { - "RegionID": 27, - "RegionCode": "iad", - "RegionName": "Ashburn", - "Latitude": 39.03, - "Longitude": -77.471111, - "Nodes": [ - { - "Name": "27d", - "RegionID": 27, - "HostName": "derp27d.tailscale.com", - "IPv4": "178.156.152.106", - "IPv6": "2a01:4ff:f0:3c8e::1", - "CanPort80": true - }, - { - "Name": "27c", - "RegionID": 27, - "HostName": "derp27c.tailscale.com", - "IPv4": "178.156.152.91", - "IPv6": "2a01:4ff:f0:3913::1", - "CanPort80": true - }, - { - "Name": "27e", - "RegionID": 27, - "HostName": "derp27e.tailscale.com", - "IPv4": "178.156.134.232", - "IPv6": "2a01:4ff:f0:28d4::1", - "CanPort80": true - }, - { - "Name": "27b", - "RegionID": 27, - "HostName": "derp27b.tailscale.com", - "IPv4": "5.161.218.233", - "IPv6": "2a01:4ff:f0:3db9::1", - "CanPort80": true - } - ] - }, - "28": { - "RegionID": 28, - "RegionCode": "hel", - "RegionName": "Helsinki", - "Latitude": 60.170833, - "Longitude": 24.9375, - "Nodes": [ - { - "Name": "28c", - "RegionID": 28, - "HostName": "derp28c.tailscale.com", - "IPv4": "95.217.2.165", - "IPv6": "2a01:4f9:c012:cd74::1", - "CanPort80": true - }, - { - "Name": "28d", - "RegionID": 28, - "HostName": "derp28d.tailscale.com", - "IPv4": "157.180.28.32", - "IPv6": "2a01:4f9:c012:2e5b::1", - "CanPort80": true - }, - { - "Name": "28b", - "RegionID": 28, - "HostName": "derp28b.tailscale.com", - "IPv4": "65.109.143.62", - "IPv6": "2a01:4f9:c012:d55c::1", - "CanPort80": true - } - ] - }, - "3": { - "RegionID": 3, - "RegionCode": "sin", - "RegionName": "Singapore", - "Latitude": 1.3521, - "Longitude": 103.8198, - "Nodes": [ - { - "Name": "3g", - "RegionID": 3, - "HostName": "derp3g.tailscale.com", - "IPv4": "172.237.72.79", - "IPv6": "2600:3c15::2000:adff:fe08:6fab", - "CanPort80": true - }, - { - "Name": "3f", - "RegionID": 3, - "HostName": "derp3f.tailscale.com", - "IPv4": "172.237.72.8", - "IPv6": "2600:3c15::2000:53ff:fe48:a668", - "CanPort80": true - }, - { - "Name": "3h", - "RegionID": 3, - "HostName": "derp3h.tailscale.com", - "IPv4": "172.237.66.30", - "IPv6": "2600:3c15::2000:3dff:fe44:50aa", - "CanPort80": true - }, - { - "Name": "3e", - "RegionID": 3, - "HostName": "derp3e.tailscale.com", - "IPv4": "172.237.72.43", - "IPv6": "2600:3c15::2000:6cff:fee4:d799", - "CanPort80": true - } - ] - }, - "4": { - "RegionID": 4, - "RegionCode": "fra", - "RegionName": "Frankfurt", - "Latitude": 50.1109, - "Longitude": 8.6821, - "Nodes": [ - { - "Name": "4h", - "RegionID": 4, - "HostName": "derp4h.tailscale.com", - "IPv4": "185.40.234.77", - "IPv6": "2a00:dd80:20::bcf", - "CanPort80": true - }, - { - "Name": "4g", - "RegionID": 4, - "HostName": "derp4g.tailscale.com", - "IPv4": "185.40.234.113", - "IPv6": "2a00:dd80:20::8f", - "CanPort80": true - }, - { - "Name": "4i", - "RegionID": 4, - "HostName": "derp4i.tailscale.com", - "IPv4": "185.40.234.53", - "IPv6": "2a00:dd80:20::8a6", - "CanPort80": true - }, - { - "Name": "4f", - "RegionID": 4, - "HostName": "derp4f.tailscale.com", - "IPv4": "185.40.234.219", - "IPv6": "2a00:dd80:20::a25", - "CanPort80": true - } - ] - }, - "5": { - "RegionID": 5, - "RegionCode": "syd", - "RegionName": "Sydney", - "Latitude": -33.867778, - "Longitude": 151.21, - "Nodes": [ - { - "Name": "5f", - "RegionID": 5, - "HostName": "derp5f.tailscale.com", - "IPv4": "172.105.166.103", - "IPv6": "2400:8907::2000:ccff:fe1f:80da", - "CanPort80": true - }, - { - "Name": "5g", - "RegionID": 5, - "HostName": "derp5g.tailscale.com", - "IPv4": "172.105.169.57", - "IPv6": "2400:8907::2000:2fff:fea7:57f4", - "CanPort80": true - }, - { - "Name": "5e", - "RegionID": 5, - "HostName": "derp5e.tailscale.com", - "IPv4": "172.105.179.230", - "IPv6": "2400:8907::2000:ceff:fe8d:4f4e", - "CanPort80": true - } - ] - }, - "6": { - "RegionID": 6, - "RegionCode": "blr", - "RegionName": "Bengaluru", - "Latitude": 12.9716, - "Longitude": 77.5946, - "Nodes": [ - { - "Name": "6a", - "RegionID": 6, - "HostName": "derp6.tailscale.com", - "IPv4": "68.183.90.120", - "IPv6": "2400:6180:100:d0::982:d001", - "CanPort80": true - } - ] - }, - "7": { - "RegionID": 7, - "RegionCode": "tok", - "RegionName": "Tokyo", - "Latitude": 35.6764, - "Longitude": 139.65, - "Nodes": [ - { - "Name": "7g", - "RegionID": 7, - "HostName": "derp7g.tailscale.com", - "IPv4": "172.238.6.179", - "IPv6": "2600:3c18::2000:3fff:fe80:3ebd", - "CanPort80": true - }, - { - "Name": "7f", - "RegionID": 7, - "HostName": "derp7f.tailscale.com", - "IPv4": "172.238.6.34", - "IPv6": "2600:3c18::2000:acff:fe8e:3ed5", - "CanPort80": true - }, - { - "Name": "7h", - "RegionID": 7, - "HostName": "derp7h.tailscale.com", - "IPv4": "172.237.28.183", - "IPv6": "2600:3c18::2000:b1ff:fea9:4560", - "CanPort80": true - }, - { - "Name": "7e", - "RegionID": 7, - "HostName": "derp7e.tailscale.com", - "IPv4": "172.238.6.180", - "IPv6": "2600:3c18::2000:60ff:fe0f:6e83", - "STUNOnly": true, - "CanPort80": true - } - ] - }, - "8": { - "RegionID": 8, - "RegionCode": "lhr", - "RegionName": "London", - "Latitude": 51.5072, - "Longitude": 0.1276, - "Nodes": [ - { - "Name": "8f", - "RegionID": 8, - "HostName": "derp8f.tailscale.com", - "IPv4": "176.58.88.183", - "IPv6": "2a00:dd80:3a::dfa", - "CanPort80": true - }, - { - "Name": "8g", - "RegionID": 8, - "HostName": "derp8g.tailscale.com", - "IPv4": "176.58.92.254", - "IPv6": "2a00:dd80:3a::ed", - "CanPort80": true - }, - { - "Name": "8e", - "RegionID": 8, - "HostName": "derp8e.tailscale.com", - "IPv4": "176.58.92.144", - "IPv6": "2a00:dd80:3a::b33", - "CanPort80": true - } - ] - }, - "9": { - "RegionID": 9, - "RegionCode": "dfw", - "RegionName": "Dallas", - "Latitude": 32.779167, - "Longitude": -96.808889, - "Nodes": [ - { - "Name": "9e", - "RegionID": 9, - "HostName": "derp9e.tailscale.com", - "IPv4": "192.73.248.83", - "IPv6": "2607:f740:100::359", - "CanPort80": true - }, - { - "Name": "9f", - "RegionID": 9, - "HostName": "derp9f.tailscale.com", - "IPv4": "209.177.156.197", - "IPv6": "2607:f740:100::cad", - "CanPort80": true - }, - { - "Name": "9d", - "RegionID": 9, - "HostName": "derp9d.tailscale.com", - "IPv4": "209.177.156.94", - "IPv6": "2607:f740:100::c05", - "CanPort80": true - } - ] - } - } - }, - "DisplayMessages": null, - "TKAEnabled": false, - "TKAHead": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", - "Domain": "kratail2tid@passkey", - "DomainAuditLogID": "", - "UserProfiles": { - "6294409699640722": { - "ID": 6294409699640722, - "LoginName": "multi-exit-router.tail78f774.ts.net", - "DisplayName": "multi-exit-router" - } - } + "PacketFilterRules": null } }, "router-a": { - "commands": { - "packet_filter_rules": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/router-a/tailscaled.sock debug localapi POST debug-packet-filter-rules", - "packet_filter_matches": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/router-a/tailscaled.sock debug localapi POST debug-packet-filter-matches" - }, "packet_filter_rules": null, - "packet_filter_matches": [], - "whois": { - "100.124.195.93": { - "peer_name": "exit-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/router-a/tailscaled.sock whois --json 100.124.195.93", - "response": null - }, - "100.116.18.24": { - "peer_name": "exit-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/router-a/tailscaled.sock whois --json 100.116.18.24", - "response": null - }, - "100.85.66.106": { - "peer_name": "exit-node", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/router-a/tailscaled.sock whois --json 100.85.66.106", - "response": null - }, - "100.107.162.14": { - "peer_name": "group-a-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/router-a/tailscaled.sock whois --json 100.107.162.14", - "response": null - }, - "100.77.135.18": { - "peer_name": "group-b-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/router-a/tailscaled.sock whois --json 100.77.135.18", - "response": null - }, - "100.105.127.107": { - "peer_name": "multi-exit-router", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/router-a/tailscaled.sock whois --json 100.105.127.107", - "response": null - }, - "100.65.172.123": { - "peer_name": "router-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/router-a/tailscaled.sock whois --json 100.65.172.123", - "response": null - }, - "100.92.142.61": { - "peer_name": "subnet-router", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/router-a/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/router-a/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/router-a/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/router-a/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/router-a/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/router-a/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/router-a/tailscaled.sock whois --json 100.90.199.68", - "response": null - } - }, "netmap": { - "SelfNode": { - "ID": 50590507314324, - "StableID": "n3kktkvuP111CNTRL", - "Name": "router-a.tail78f774.ts.net.", - "User": 50590507314324, - "Key": "nodekey:b4566fef38b3b2b15684fc8890f5fbaea4525b467825f57a02801969a5ed2b7b", - "DiscoKey": "discokey:368ba711a8394633b4626eb7cd8e6a2df90d8e554505dc032ea9658ceee0f731", - "Addresses": ["100.109.43.124/32", "fd7a:115c:a1e0::a537:2b7c/128"], - "AllowedIPs": ["100.109.43.124/32", "fd7a:115c:a1e0::a537:2b7c/128", "10.44.0.0/16"], - "Endpoints": ["77.164.248.136:34130", "10.65.0.27:34130", "172.17.0.1:34130"], - "Hostinfo": { - "Hostname": "router-a", - "RoutableIPs": ["10.44.0.0/16"], - "RequestTags": ["tag:router-a"], - "Services": [ - { "Proto": "peerapi4", "Port": 49439 }, - { "Proto": "peerapi6", "Port": 49439 }, - { "Proto": "peerapi-dns-proxy", "Port": 1 } - ] - }, - "Created": "2026-03-28T10:38:11.734910312Z", - "Tags": ["tag:router-a"], - "PrimaryRoutes": ["10.44.0.0/16"], - "MachineAuthorized": true, - "CapMap": { - "https://tailscale.com/cap/file-sharing": null, - "https://tailscale.com/cap/is-owner": null, - "https://tailscale.com/cap/ssh": null, - "https://tailscale.com/cap/tailnet-lock": null, - "probe-udp-lifetime": null, - "ssh-behavior-v1": null, - "ssh-env-vars": null, - "store-appc-routes": null, - "tailnet-display-name": ["kratail2tid@passkey"] - }, - "ComputedName": "router-a", - "ComputedNameWithHost": "router-a" - }, - "AllCaps": [ - "ssh-env-vars", - "tailnet-display-name", - "https://tailscale.com/cap/is-owner", - "https://tailscale.com/cap/ssh", - "store-appc-routes", - "https://tailscale.com/cap/file-sharing", - "ssh-behavior-v1", - "https://tailscale.com/cap/tailnet-lock", - "probe-udp-lifetime" - ], - "NodeKey": "nodekey:b4566fef38b3b2b15684fc8890f5fbaea4525b467825f57a02801969a5ed2b7b", - "MachineKey": "mkey:868ba8a45654990c1c153c5ce33ef50ddd8d769841335e42decda4462d1dcf4e", "Peers": [], - "DNS": { - "Routes": { - "tail78f774.ts.net.": null, - "ts.net.": [{ "Addr": "199.247.155.53" }, { "Addr": "2620:111:8007::53" }] - }, - "Domains": ["tail78f774.ts.net"], - "Proxied": true, - "ExitNodeFilteredSet": [".ts.net", ".tailscale.net"] - }, - "PacketFilter": [], - "PacketFilterRules": null, - "SSHPolicy": { "rules": [] }, - "CollectServices": false, - "DERPMap": { - "Regions": { - "1": { - "RegionID": 1, - "RegionCode": "nyc", - "RegionName": "New York City", - "Latitude": 40.7128, - "Longitude": -74.006, - "Nodes": [ - { - "Name": "1h", - "RegionID": 1, - "HostName": "derp1h.tailscale.com", - "IPv4": "199.38.181.93", - "IPv6": "2607:f740:f::afd", - "CanPort80": true - }, - { - "Name": "1g", - "RegionID": 1, - "HostName": "derp1g.tailscale.com", - "IPv4": "209.177.145.120", - "IPv6": "2607:f740:f::3eb", - "CanPort80": true - }, - { - "Name": "1i", - "RegionID": 1, - "HostName": "derp1i.tailscale.com", - "IPv4": "199.38.181.103", - "IPv6": "2607:f740:f::e19", - "CanPort80": true - }, - { - "Name": "1f", - "RegionID": 1, - "HostName": "derp1f.tailscale.com", - "IPv4": "199.38.181.104", - "IPv6": "2607:f740:f::bc", - "CanPort80": true - } - ] - }, - "10": { - "RegionID": 10, - "RegionCode": "sea", - "RegionName": "Seattle", - "Latitude": 47.609722, - "Longitude": -122.333056, - "Nodes": [ - { - "Name": "10c", - "RegionID": 10, - "HostName": "derp10c.tailscale.com", - "IPv4": "192.73.240.121", - "IPv6": "2607:f740:14::40c", - "CanPort80": true - }, - { - "Name": "10d", - "RegionID": 10, - "HostName": "derp10d.tailscale.com", - "IPv4": "192.73.240.132", - "IPv6": "2607:f740:14::500", - "CanPort80": true - }, - { - "Name": "10b", - "RegionID": 10, - "HostName": "derp10b.tailscale.com", - "IPv4": "192.73.240.161", - "IPv6": "2607:f740:14::61c", - "CanPort80": true - } - ] - }, - "11": { - "RegionID": 11, - "RegionCode": "sao", - "RegionName": "São Paulo", - "Latitude": -23.55, - "Longitude": -46.633333, - "Nodes": [ - { - "Name": "11f", - "RegionID": 11, - "HostName": "derp11f.tailscale.com", - "IPv4": "172.237.61.197", - "IPv6": "2600:3c0d::2000:3bff:fe44:6166", - "CanPort80": true - }, - { - "Name": "11g", - "RegionID": 11, - "HostName": "derp11g.tailscale.com", - "IPv4": "172.237.61.190", - "IPv6": "2600:3c0d::2000:62ff:febe:2e67", - "CanPort80": true - }, - { - "Name": "11e", - "RegionID": 11, - "HostName": "derp11e.tailscale.com", - "IPv4": "172.237.61.194", - "IPv6": "2600:3c0d::2000:d2ff:fe43:1790", - "CanPort80": true - } - ] - }, - "12": { - "RegionID": 12, - "RegionCode": "ord", - "RegionName": "Chicago", - "Latitude": 41.881944, - "Longitude": -87.627778, - "Nodes": [ - { - "Name": "12e", - "RegionID": 12, - "HostName": "derp12e.tailscale.com", - "IPv4": "209.177.158.15", - "IPv6": "2607:f740:e::b17", - "CanPort80": true - }, - { - "Name": "12f", - "RegionID": 12, - "HostName": "derp12f.tailscale.com", - "IPv4": "199.38.182.118", - "IPv6": "2607:f740:e::4c8", - "CanPort80": true - }, - { - "Name": "12d", - "RegionID": 12, - "HostName": "derp12d.tailscale.com", - "IPv4": "209.177.158.246", - "IPv6": "2607:f740:e::811", - "CanPort80": true - } - ] - }, - "13": { - "RegionID": 13, - "RegionCode": "den", - "RegionName": "Denver", - "Latitude": 39.7392, - "Longitude": -104.9849, - "Nodes": [ - { - "Name": "13c", - "RegionID": 13, - "HostName": "derp13c.tailscale.com", - "IPv4": "192.73.242.28", - "IPv6": "2607:f740:16::5c", - "CanPort80": true - }, - { - "Name": "13d", - "RegionID": 13, - "HostName": "derp13d.tailscale.com", - "IPv4": "192.73.242.204", - "IPv6": "2607:f740:16::c23", - "CanPort80": true - }, - { - "Name": "13b", - "RegionID": 13, - "HostName": "derp13b.tailscale.com", - "IPv4": "192.73.242.187", - "IPv6": "2607:f740:16::640", - "CanPort80": true - } - ] - }, - "14": { - "RegionID": 14, - "RegionCode": "ams", - "RegionName": "Amsterdam", - "Latitude": 52.372778, - "Longitude": 4.893611, - "Nodes": [ - { - "Name": "14c", - "RegionID": 14, - "HostName": "derp14c.tailscale.com", - "IPv4": "176.58.93.147", - "IPv6": "2a00:dd80:3c::b09", - "CanPort80": true - }, - { - "Name": "14d", - "RegionID": 14, - "HostName": "derp14d.tailscale.com", - "IPv4": "176.58.93.154", - "IPv6": "2a00:dd80:3c::3d5", - "CanPort80": true - }, - { - "Name": "14b", - "RegionID": 14, - "HostName": "derp14b.tailscale.com", - "IPv4": "176.58.93.248", - "IPv6": "2a00:dd80:3c::807", - "CanPort80": true - } - ] - }, - "15": { - "RegionID": 15, - "RegionCode": "jnb", - "RegionName": "Johannesburg", - "Latitude": -26.204444, - "Longitude": 28.045556, - "Nodes": [ - { - "Name": "15c", - "RegionID": 15, - "HostName": "derp15c.tailscale.com", - "IPv4": "102.67.165.185", - "IPv6": "2c0f:edb0:0:10::b59", - "CanPort80": true - }, - { - "Name": "15d", - "RegionID": 15, - "HostName": "derp15d.tailscale.com", - "IPv4": "102.67.165.36", - "IPv6": "2c0f:edb0:0:10::599", - "CanPort80": true - }, - { - "Name": "15b", - "RegionID": 15, - "HostName": "derp15b.tailscale.com", - "IPv4": "102.67.165.90", - "IPv6": "2c0f:edb0:0:10::963", - "CanPort80": true - } - ] - }, - "16": { - "RegionID": 16, - "RegionCode": "mia", - "RegionName": "Miami", - "Latitude": 25.78, - "Longitude": -80.21, - "Nodes": [ - { - "Name": "16c", - "RegionID": 16, - "HostName": "derp16c.tailscale.com", - "IPv4": "192.73.243.229", - "IPv6": "2607:f740:17::4e4", - "CanPort80": true - }, - { - "Name": "16d", - "RegionID": 16, - "HostName": "derp16d.tailscale.com", - "IPv4": "192.73.243.141", - "IPv6": "2607:f740:17::475", - "CanPort80": true - }, - { - "Name": "16b", - "RegionID": 16, - "HostName": "derp16b.tailscale.com", - "IPv4": "192.73.243.135", - "IPv6": "2607:f740:17::476", - "CanPort80": true - } - ] - }, - "17": { - "RegionID": 17, - "RegionCode": "lax", - "RegionName": "Los Angeles", - "Latitude": 34.05, - "Longitude": -118.25, - "Nodes": [ - { - "Name": "17c", - "RegionID": 17, - "HostName": "derp17c.tailscale.com", - "IPv4": "208.111.40.12", - "IPv6": "2607:f740:c::10", - "CanPort80": true - }, - { - "Name": "17d", - "RegionID": 17, - "HostName": "derp17d.tailscale.com", - "IPv4": "208.111.40.216", - "IPv6": "2607:f740:c::e1b", - "CanPort80": true - }, - { - "Name": "17b", - "RegionID": 17, - "HostName": "derp17b.tailscale.com", - "IPv4": "192.73.244.245", - "IPv6": "2607:f740:c::646", - "CanPort80": true - } - ] - }, - "18": { - "RegionID": 18, - "RegionCode": "par", - "RegionName": "Paris", - "Latitude": 48.856667, - "Longitude": 2.352222, - "Nodes": [ - { - "Name": "18c", - "RegionID": 18, - "HostName": "derp18c.tailscale.com", - "IPv4": "176.58.90.207", - "IPv6": "2a00:dd80:3e::c19", - "CanPort80": true - }, - { - "Name": "18d", - "RegionID": 18, - "HostName": "derp18d.tailscale.com", - "IPv4": "176.58.90.104", - "IPv6": "2a00:dd80:3e::f2e", - "CanPort80": true - }, - { - "Name": "18b", - "RegionID": 18, - "HostName": "derp18b.tailscale.com", - "IPv4": "176.58.90.147", - "IPv6": "2a00:dd80:3e::363", - "CanPort80": true - } - ] - }, - "19": { - "RegionID": 19, - "RegionCode": "mad", - "RegionName": "Madrid", - "Latitude": 40.416944, - "Longitude": -3.703333, - "Nodes": [ - { - "Name": "19c", - "RegionID": 19, - "HostName": "derp19c.tailscale.com", - "IPv4": "45.159.97.61", - "IPv6": "2a00:dd80:14:10::20", - "CanPort80": true - }, - { - "Name": "19d", - "RegionID": 19, - "HostName": "derp19d.tailscale.com", - "IPv4": "45.159.97.233", - "IPv6": "2a00:dd80:14:10::34a", - "CanPort80": true - }, - { - "Name": "19b", - "RegionID": 19, - "HostName": "derp19b.tailscale.com", - "IPv4": "45.159.97.144", - "IPv6": "2a00:dd80:14:10::335", - "CanPort80": true - } - ] - }, - "2": { - "RegionID": 2, - "RegionCode": "sfo", - "RegionName": "San Francisco", - "Latitude": 37.7775, - "Longitude": -122.416389, - "Nodes": [ - { - "Name": "2e", - "RegionID": 2, - "HostName": "derp2e.tailscale.com", - "IPv4": "192.73.252.134", - "IPv6": "2607:f740:0:3f::44c", - "CanPort80": true - }, - { - "Name": "2f", - "RegionID": 2, - "HostName": "derp2f.tailscale.com", - "IPv4": "208.111.34.178", - "IPv6": "2607:f740:0:3f::f4", - "CanPort80": true - }, - { - "Name": "2d", - "RegionID": 2, - "HostName": "derp2d.tailscale.com", - "IPv4": "192.73.252.65", - "IPv6": "2607:f740:0:3f::287", - "CanPort80": true - } - ] - }, - "20": { - "RegionID": 20, - "RegionCode": "hkg", - "RegionName": "Hong Kong", - "Latitude": 22.3193, - "Longitude": 114.1694, - "Nodes": [ - { - "Name": "20c", - "RegionID": 20, - "HostName": "derp20c.tailscale.com", - "IPv4": "205.147.105.30", - "IPv6": "2403:2500:8000:1::5fb", - "CanPort80": true - }, - { - "Name": "20d", - "RegionID": 20, - "HostName": "derp20d.tailscale.com", - "IPv4": "205.147.105.78", - "IPv6": "2403:2500:8000:1::e9a", - "CanPort80": true - }, - { - "Name": "20b", - "RegionID": 20, - "HostName": "derp20b.tailscale.com", - "IPv4": "103.6.84.152", - "IPv6": "2403:2500:8000:1::ef6", - "CanPort80": true - } - ] - }, - "21": { - "RegionID": 21, - "RegionCode": "tor", - "RegionName": "Toronto", - "Latitude": 43.741667, - "Longitude": -79.373333, - "Nodes": [ - { - "Name": "21c", - "RegionID": 21, - "HostName": "derp21c.tailscale.com", - "IPv4": "162.248.221.215", - "IPv6": "2607:f740:50::f10", - "CanPort80": true - }, - { - "Name": "21d", - "RegionID": 21, - "HostName": "derp21d.tailscale.com", - "IPv4": "162.248.221.248", - "IPv6": "2607:f740:50::ca4", - "CanPort80": true - }, - { - "Name": "21b", - "RegionID": 21, - "HostName": "derp21b.tailscale.com", - "IPv4": "162.248.221.199", - "IPv6": "2607:f740:50::1d1", - "CanPort80": true - } - ] - }, - "22": { - "RegionID": 22, - "RegionCode": "waw", - "RegionName": "Warsaw", - "Latitude": 52.23, - "Longitude": 21.011111, - "Nodes": [ - { - "Name": "22c", - "RegionID": 22, - "HostName": "derp22c.tailscale.com", - "IPv4": "45.159.98.253", - "IPv6": "2a00:dd80:40:100::3f", - "CanPort80": true - }, - { - "Name": "22d", - "RegionID": 22, - "HostName": "derp22d.tailscale.com", - "IPv4": "45.159.98.145", - "IPv6": "2a00:dd80:40:100::211", - "CanPort80": true - }, - { - "Name": "22b", - "RegionID": 22, - "HostName": "derp22b.tailscale.com", - "IPv4": "45.159.98.196", - "IPv6": "2a00:dd80:40:100::316", - "CanPort80": true - } - ] - }, - "23": { - "RegionID": 23, - "RegionCode": "dbi", - "RegionName": "Dubai", - "Latitude": 25.263056, - "Longitude": 55.297222, - "Nodes": [ - { - "Name": "23c", - "RegionID": 23, - "HostName": "derp23c.tailscale.com", - "IPv4": "185.34.3.207", - "IPv6": "2a00:dd80:3f:100::a50", - "CanPort80": true - }, - { - "Name": "23d", - "RegionID": 23, - "HostName": "derp23d.tailscale.com", - "IPv4": "185.34.3.75", - "IPv6": "2a00:dd80:3f:100::97e", - "CanPort80": true - }, - { - "Name": "23b", - "RegionID": 23, - "HostName": "derp23b.tailscale.com", - "IPv4": "185.34.3.232", - "IPv6": "2a00:dd80:3f:100::76f", - "CanPort80": true - } - ] - }, - "24": { - "RegionID": 24, - "RegionCode": "hnl", - "RegionName": "Honolulu", - "Latitude": 21.306944, - "Longitude": -157.858333, - "Nodes": [ - { - "Name": "24c", - "RegionID": 24, - "HostName": "derp24c.tailscale.com", - "IPv4": "208.83.233.233", - "IPv6": "2001:19f0:c000:c591:5400:04ff:fe26:2c5f", - "CanPort80": true - }, - { - "Name": "24d", - "RegionID": 24, - "HostName": "derp24d.tailscale.com", - "IPv4": "208.72.155.133", - "IPv6": "2001:19f0:c000:c564:5400:04ff:fe26:2ba8", - "CanPort80": true - }, - { - "Name": "24b", - "RegionID": 24, - "HostName": "derp24b.tailscale.com", - "IPv4": "208.83.234.151", - "IPv6": "2001:19f0:c000:c586:5400:04ff:fe26:2ba6", - "CanPort80": true - } - ] - }, - "25": { - "RegionID": 25, - "RegionCode": "nai", - "RegionName": "Nairobi", - "Latitude": -1.286389, - "Longitude": 36.817222, - "Nodes": [ - { - "Name": "25c", - "RegionID": 25, - "HostName": "derp25c.tailscale.com", - "IPv4": "102.67.167.37", - "IPv6": "2c0f:edb0:2000:1::2c7", - "CanPort80": true - }, - { - "Name": "25d", - "RegionID": 25, - "HostName": "derp25d.tailscale.com", - "IPv4": "102.67.167.188", - "IPv6": "2c0f:edb0:2000:1::188", - "CanPort80": true - }, - { - "Name": "25b", - "RegionID": 25, - "HostName": "derp25b.tailscale.com", - "IPv4": "102.67.167.245", - "IPv6": "2c0f:edb0:2000:1::2e9", - "CanPort80": true - } - ] - }, - "26": { - "RegionID": 26, - "RegionCode": "nue", - "RegionName": "Nuremberg", - "Latitude": 49.453889, - "Longitude": 11.0775, - "Nodes": [ - { - "Name": "26c", - "RegionID": 26, - "HostName": "derp26c.tailscale.com", - "IPv4": "49.12.193.137", - "IPv6": "2a01:4f8:1c1c:5c70::1", - "CanPort80": true - }, - { - "Name": "26d", - "RegionID": 26, - "HostName": "derp26d.tailscale.com", - "IPv4": "49.13.204.141", - "IPv6": "2a01:4f8:1c0c:7d06::1", - "CanPort80": true - }, - { - "Name": "26b", - "RegionID": 26, - "HostName": "derp26b.tailscale.com", - "IPv4": "167.235.72.200", - "IPv6": "2a01:4f8:1c1c:47b6::1", - "CanPort80": true - } - ] - }, - "27": { - "RegionID": 27, - "RegionCode": "iad", - "RegionName": "Ashburn", - "Latitude": 39.03, - "Longitude": -77.471111, - "Nodes": [ - { - "Name": "27d", - "RegionID": 27, - "HostName": "derp27d.tailscale.com", - "IPv4": "178.156.152.106", - "IPv6": "2a01:4ff:f0:3c8e::1", - "CanPort80": true - }, - { - "Name": "27c", - "RegionID": 27, - "HostName": "derp27c.tailscale.com", - "IPv4": "178.156.152.91", - "IPv6": "2a01:4ff:f0:3913::1", - "CanPort80": true - }, - { - "Name": "27e", - "RegionID": 27, - "HostName": "derp27e.tailscale.com", - "IPv4": "178.156.134.232", - "IPv6": "2a01:4ff:f0:28d4::1", - "CanPort80": true - }, - { - "Name": "27b", - "RegionID": 27, - "HostName": "derp27b.tailscale.com", - "IPv4": "5.161.218.233", - "IPv6": "2a01:4ff:f0:3db9::1", - "CanPort80": true - } - ] - }, - "28": { - "RegionID": 28, - "RegionCode": "hel", - "RegionName": "Helsinki", - "Latitude": 60.170833, - "Longitude": 24.9375, - "Nodes": [ - { - "Name": "28c", - "RegionID": 28, - "HostName": "derp28c.tailscale.com", - "IPv4": "95.217.2.165", - "IPv6": "2a01:4f9:c012:cd74::1", - "CanPort80": true - }, - { - "Name": "28d", - "RegionID": 28, - "HostName": "derp28d.tailscale.com", - "IPv4": "157.180.28.32", - "IPv6": "2a01:4f9:c012:2e5b::1", - "CanPort80": true - }, - { - "Name": "28b", - "RegionID": 28, - "HostName": "derp28b.tailscale.com", - "IPv4": "65.109.143.62", - "IPv6": "2a01:4f9:c012:d55c::1", - "CanPort80": true - } - ] - }, - "3": { - "RegionID": 3, - "RegionCode": "sin", - "RegionName": "Singapore", - "Latitude": 1.3521, - "Longitude": 103.8198, - "Nodes": [ - { - "Name": "3g", - "RegionID": 3, - "HostName": "derp3g.tailscale.com", - "IPv4": "172.237.72.79", - "IPv6": "2600:3c15::2000:adff:fe08:6fab", - "CanPort80": true - }, - { - "Name": "3f", - "RegionID": 3, - "HostName": "derp3f.tailscale.com", - "IPv4": "172.237.72.8", - "IPv6": "2600:3c15::2000:53ff:fe48:a668", - "CanPort80": true - }, - { - "Name": "3h", - "RegionID": 3, - "HostName": "derp3h.tailscale.com", - "IPv4": "172.237.66.30", - "IPv6": "2600:3c15::2000:3dff:fe44:50aa", - "CanPort80": true - }, - { - "Name": "3e", - "RegionID": 3, - "HostName": "derp3e.tailscale.com", - "IPv4": "172.237.72.43", - "IPv6": "2600:3c15::2000:6cff:fee4:d799", - "CanPort80": true - } - ] - }, - "4": { - "RegionID": 4, - "RegionCode": "fra", - "RegionName": "Frankfurt", - "Latitude": 50.1109, - "Longitude": 8.6821, - "Nodes": [ - { - "Name": "4h", - "RegionID": 4, - "HostName": "derp4h.tailscale.com", - "IPv4": "185.40.234.77", - "IPv6": "2a00:dd80:20::bcf", - "CanPort80": true - }, - { - "Name": "4g", - "RegionID": 4, - "HostName": "derp4g.tailscale.com", - "IPv4": "185.40.234.113", - "IPv6": "2a00:dd80:20::8f", - "CanPort80": true - }, - { - "Name": "4i", - "RegionID": 4, - "HostName": "derp4i.tailscale.com", - "IPv4": "185.40.234.53", - "IPv6": "2a00:dd80:20::8a6", - "CanPort80": true - }, - { - "Name": "4f", - "RegionID": 4, - "HostName": "derp4f.tailscale.com", - "IPv4": "185.40.234.219", - "IPv6": "2a00:dd80:20::a25", - "CanPort80": true - } - ] - }, - "5": { - "RegionID": 5, - "RegionCode": "syd", - "RegionName": "Sydney", - "Latitude": -33.867778, - "Longitude": 151.21, - "Nodes": [ - { - "Name": "5f", - "RegionID": 5, - "HostName": "derp5f.tailscale.com", - "IPv4": "172.105.166.103", - "IPv6": "2400:8907::2000:ccff:fe1f:80da", - "CanPort80": true - }, - { - "Name": "5g", - "RegionID": 5, - "HostName": "derp5g.tailscale.com", - "IPv4": "172.105.169.57", - "IPv6": "2400:8907::2000:2fff:fea7:57f4", - "CanPort80": true - }, - { - "Name": "5e", - "RegionID": 5, - "HostName": "derp5e.tailscale.com", - "IPv4": "172.105.179.230", - "IPv6": "2400:8907::2000:ceff:fe8d:4f4e", - "CanPort80": true - } - ] - }, - "6": { - "RegionID": 6, - "RegionCode": "blr", - "RegionName": "Bengaluru", - "Latitude": 12.9716, - "Longitude": 77.5946, - "Nodes": [ - { - "Name": "6a", - "RegionID": 6, - "HostName": "derp6.tailscale.com", - "IPv4": "68.183.90.120", - "IPv6": "2400:6180:100:d0::982:d001", - "CanPort80": true - } - ] - }, - "7": { - "RegionID": 7, - "RegionCode": "tok", - "RegionName": "Tokyo", - "Latitude": 35.6764, - "Longitude": 139.65, - "Nodes": [ - { - "Name": "7g", - "RegionID": 7, - "HostName": "derp7g.tailscale.com", - "IPv4": "172.238.6.179", - "IPv6": "2600:3c18::2000:3fff:fe80:3ebd", - "CanPort80": true - }, - { - "Name": "7f", - "RegionID": 7, - "HostName": "derp7f.tailscale.com", - "IPv4": "172.238.6.34", - "IPv6": "2600:3c18::2000:acff:fe8e:3ed5", - "CanPort80": true - }, - { - "Name": "7h", - "RegionID": 7, - "HostName": "derp7h.tailscale.com", - "IPv4": "172.237.28.183", - "IPv6": "2600:3c18::2000:b1ff:fea9:4560", - "CanPort80": true - }, - { - "Name": "7e", - "RegionID": 7, - "HostName": "derp7e.tailscale.com", - "IPv4": "172.238.6.180", - "IPv6": "2600:3c18::2000:60ff:fe0f:6e83", - "STUNOnly": true, - "CanPort80": true - } - ] - }, - "8": { - "RegionID": 8, - "RegionCode": "lhr", - "RegionName": "London", - "Latitude": 51.5072, - "Longitude": 0.1276, - "Nodes": [ - { - "Name": "8f", - "RegionID": 8, - "HostName": "derp8f.tailscale.com", - "IPv4": "176.58.88.183", - "IPv6": "2a00:dd80:3a::dfa", - "CanPort80": true - }, - { - "Name": "8g", - "RegionID": 8, - "HostName": "derp8g.tailscale.com", - "IPv4": "176.58.92.254", - "IPv6": "2a00:dd80:3a::ed", - "CanPort80": true - }, - { - "Name": "8e", - "RegionID": 8, - "HostName": "derp8e.tailscale.com", - "IPv4": "176.58.92.144", - "IPv6": "2a00:dd80:3a::b33", - "CanPort80": true - } - ] - }, - "9": { - "RegionID": 9, - "RegionCode": "dfw", - "RegionName": "Dallas", - "Latitude": 32.779167, - "Longitude": -96.808889, - "Nodes": [ - { - "Name": "9e", - "RegionID": 9, - "HostName": "derp9e.tailscale.com", - "IPv4": "192.73.248.83", - "IPv6": "2607:f740:100::359", - "CanPort80": true - }, - { - "Name": "9f", - "RegionID": 9, - "HostName": "derp9f.tailscale.com", - "IPv4": "209.177.156.197", - "IPv6": "2607:f740:100::cad", - "CanPort80": true - }, - { - "Name": "9d", - "RegionID": 9, - "HostName": "derp9d.tailscale.com", - "IPv4": "209.177.156.94", - "IPv6": "2607:f740:100::c05", - "CanPort80": true - } - ] - } - } - }, - "DisplayMessages": null, - "TKAEnabled": false, - "TKAHead": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", - "Domain": "kratail2tid@passkey", - "DomainAuditLogID": "", - "UserProfiles": { - "50590507314324": { - "ID": 50590507314324, - "LoginName": "router-a.tail78f774.ts.net", - "DisplayName": "router-a" - } - } + "PacketFilterRules": null } }, "router-b": { - "commands": { - "packet_filter_rules": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/router-b/tailscaled.sock debug localapi POST debug-packet-filter-rules", - "packet_filter_matches": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/router-b/tailscaled.sock debug localapi POST debug-packet-filter-matches" - }, "packet_filter_rules": null, - "packet_filter_matches": [], - "whois": { - "100.124.195.93": { - "peer_name": "exit-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/router-b/tailscaled.sock whois --json 100.124.195.93", - "response": null - }, - "100.116.18.24": { - "peer_name": "exit-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/router-b/tailscaled.sock whois --json 100.116.18.24", - "response": null - }, - "100.85.66.106": { - "peer_name": "exit-node", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/router-b/tailscaled.sock whois --json 100.85.66.106", - "response": null - }, - "100.107.162.14": { - "peer_name": "group-a-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/router-b/tailscaled.sock whois --json 100.107.162.14", - "response": null - }, - "100.77.135.18": { - "peer_name": "group-b-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/router-b/tailscaled.sock whois --json 100.77.135.18", - "response": null - }, - "100.105.127.107": { - "peer_name": "multi-exit-router", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/router-b/tailscaled.sock whois --json 100.105.127.107", - "response": null - }, - "100.109.43.124": { - "peer_name": "router-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/router-b/tailscaled.sock whois --json 100.109.43.124", - "response": null - }, - "100.92.142.61": { - "peer_name": "subnet-router", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/router-b/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/router-b/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/router-b/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/router-b/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/router-b/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/router-b/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/router-b/tailscaled.sock whois --json 100.90.199.68", - "response": null - } - }, "netmap": { - "SelfNode": { - "ID": 1399889648409786, - "StableID": "nPHvXBj1wB11CNTRL", - "Name": "router-b.tail78f774.ts.net.", - "User": 1399889648409786, - "Key": "nodekey:4e6d3473c516cea37bcefdf4368932c623fd91c24aee1aacc27ca8165a41ac7a", - "DiscoKey": "discokey:dd5532635b8e3ddf25186e36671c16dd17c005c8b6a6862f4b5cc4e4f459e705", - "Addresses": ["100.65.172.123/32", "fd7a:115c:a1e0::5a37:ac7c/128"], - "AllowedIPs": ["100.65.172.123/32", "fd7a:115c:a1e0::5a37:ac7c/128", "10.55.0.0/16"], - "Endpoints": ["77.164.248.136:35931", "10.65.0.27:35931", "172.17.0.1:35931"], - "Hostinfo": { - "Hostname": "router-b", - "RoutableIPs": ["10.55.0.0/16"], - "RequestTags": ["tag:router-b"], - "Services": [ - { "Proto": "peerapi4", "Port": 58804 }, - { "Proto": "peerapi6", "Port": 58804 }, - { "Proto": "peerapi-dns-proxy", "Port": 1 } - ] - }, - "Created": "2026-03-28T10:38:15.42735258Z", - "Tags": ["tag:router-b"], - "PrimaryRoutes": ["10.55.0.0/16"], - "MachineAuthorized": true, - "CapMap": { - "https://tailscale.com/cap/file-sharing": null, - "https://tailscale.com/cap/is-owner": null, - "https://tailscale.com/cap/ssh": null, - "https://tailscale.com/cap/tailnet-lock": null, - "probe-udp-lifetime": null, - "ssh-behavior-v1": null, - "ssh-env-vars": null, - "store-appc-routes": null, - "tailnet-display-name": ["kratail2tid@passkey"] - }, - "ComputedName": "router-b", - "ComputedNameWithHost": "router-b" - }, - "AllCaps": [ - "https://tailscale.com/cap/file-sharing", - "tailnet-display-name", - "https://tailscale.com/cap/ssh", - "ssh-env-vars", - "probe-udp-lifetime", - "store-appc-routes", - "ssh-behavior-v1", - "https://tailscale.com/cap/is-owner", - "https://tailscale.com/cap/tailnet-lock" - ], - "NodeKey": "nodekey:4e6d3473c516cea37bcefdf4368932c623fd91c24aee1aacc27ca8165a41ac7a", - "MachineKey": "mkey:d040ca033391d3dedae7b2ad7ec3334646cda7aeca501780bdaa37addec3c228", "Peers": [], - "DNS": { - "Routes": { - "tail78f774.ts.net.": null, - "ts.net.": [{ "Addr": "199.247.155.53" }, { "Addr": "2620:111:8007::53" }] - }, - "Domains": ["tail78f774.ts.net"], - "Proxied": true, - "ExitNodeFilteredSet": [".ts.net", ".tailscale.net"] - }, - "PacketFilter": [], - "PacketFilterRules": null, - "SSHPolicy": { "rules": [] }, - "CollectServices": false, - "DERPMap": { - "Regions": { - "1": { - "RegionID": 1, - "RegionCode": "nyc", - "RegionName": "New York City", - "Latitude": 40.7128, - "Longitude": -74.006, - "Nodes": [ - { - "Name": "1h", - "RegionID": 1, - "HostName": "derp1h.tailscale.com", - "IPv4": "199.38.181.93", - "IPv6": "2607:f740:f::afd", - "CanPort80": true - }, - { - "Name": "1g", - "RegionID": 1, - "HostName": "derp1g.tailscale.com", - "IPv4": "209.177.145.120", - "IPv6": "2607:f740:f::3eb", - "CanPort80": true - }, - { - "Name": "1i", - "RegionID": 1, - "HostName": "derp1i.tailscale.com", - "IPv4": "199.38.181.103", - "IPv6": "2607:f740:f::e19", - "CanPort80": true - }, - { - "Name": "1f", - "RegionID": 1, - "HostName": "derp1f.tailscale.com", - "IPv4": "199.38.181.104", - "IPv6": "2607:f740:f::bc", - "CanPort80": true - } - ] - }, - "10": { - "RegionID": 10, - "RegionCode": "sea", - "RegionName": "Seattle", - "Latitude": 47.609722, - "Longitude": -122.333056, - "Nodes": [ - { - "Name": "10c", - "RegionID": 10, - "HostName": "derp10c.tailscale.com", - "IPv4": "192.73.240.121", - "IPv6": "2607:f740:14::40c", - "CanPort80": true - }, - { - "Name": "10d", - "RegionID": 10, - "HostName": "derp10d.tailscale.com", - "IPv4": "192.73.240.132", - "IPv6": "2607:f740:14::500", - "CanPort80": true - }, - { - "Name": "10b", - "RegionID": 10, - "HostName": "derp10b.tailscale.com", - "IPv4": "192.73.240.161", - "IPv6": "2607:f740:14::61c", - "CanPort80": true - } - ] - }, - "11": { - "RegionID": 11, - "RegionCode": "sao", - "RegionName": "São Paulo", - "Latitude": -23.55, - "Longitude": -46.633333, - "Nodes": [ - { - "Name": "11f", - "RegionID": 11, - "HostName": "derp11f.tailscale.com", - "IPv4": "172.237.61.197", - "IPv6": "2600:3c0d::2000:3bff:fe44:6166", - "CanPort80": true - }, - { - "Name": "11g", - "RegionID": 11, - "HostName": "derp11g.tailscale.com", - "IPv4": "172.237.61.190", - "IPv6": "2600:3c0d::2000:62ff:febe:2e67", - "CanPort80": true - }, - { - "Name": "11e", - "RegionID": 11, - "HostName": "derp11e.tailscale.com", - "IPv4": "172.237.61.194", - "IPv6": "2600:3c0d::2000:d2ff:fe43:1790", - "CanPort80": true - } - ] - }, - "12": { - "RegionID": 12, - "RegionCode": "ord", - "RegionName": "Chicago", - "Latitude": 41.881944, - "Longitude": -87.627778, - "Nodes": [ - { - "Name": "12e", - "RegionID": 12, - "HostName": "derp12e.tailscale.com", - "IPv4": "209.177.158.15", - "IPv6": "2607:f740:e::b17", - "CanPort80": true - }, - { - "Name": "12f", - "RegionID": 12, - "HostName": "derp12f.tailscale.com", - "IPv4": "199.38.182.118", - "IPv6": "2607:f740:e::4c8", - "CanPort80": true - }, - { - "Name": "12d", - "RegionID": 12, - "HostName": "derp12d.tailscale.com", - "IPv4": "209.177.158.246", - "IPv6": "2607:f740:e::811", - "CanPort80": true - } - ] - }, - "13": { - "RegionID": 13, - "RegionCode": "den", - "RegionName": "Denver", - "Latitude": 39.7392, - "Longitude": -104.9849, - "Nodes": [ - { - "Name": "13c", - "RegionID": 13, - "HostName": "derp13c.tailscale.com", - "IPv4": "192.73.242.28", - "IPv6": "2607:f740:16::5c", - "CanPort80": true - }, - { - "Name": "13d", - "RegionID": 13, - "HostName": "derp13d.tailscale.com", - "IPv4": "192.73.242.204", - "IPv6": "2607:f740:16::c23", - "CanPort80": true - }, - { - "Name": "13b", - "RegionID": 13, - "HostName": "derp13b.tailscale.com", - "IPv4": "192.73.242.187", - "IPv6": "2607:f740:16::640", - "CanPort80": true - } - ] - }, - "14": { - "RegionID": 14, - "RegionCode": "ams", - "RegionName": "Amsterdam", - "Latitude": 52.372778, - "Longitude": 4.893611, - "Nodes": [ - { - "Name": "14c", - "RegionID": 14, - "HostName": "derp14c.tailscale.com", - "IPv4": "176.58.93.147", - "IPv6": "2a00:dd80:3c::b09", - "CanPort80": true - }, - { - "Name": "14d", - "RegionID": 14, - "HostName": "derp14d.tailscale.com", - "IPv4": "176.58.93.154", - "IPv6": "2a00:dd80:3c::3d5", - "CanPort80": true - }, - { - "Name": "14b", - "RegionID": 14, - "HostName": "derp14b.tailscale.com", - "IPv4": "176.58.93.248", - "IPv6": "2a00:dd80:3c::807", - "CanPort80": true - } - ] - }, - "15": { - "RegionID": 15, - "RegionCode": "jnb", - "RegionName": "Johannesburg", - "Latitude": -26.204444, - "Longitude": 28.045556, - "Nodes": [ - { - "Name": "15c", - "RegionID": 15, - "HostName": "derp15c.tailscale.com", - "IPv4": "102.67.165.185", - "IPv6": "2c0f:edb0:0:10::b59", - "CanPort80": true - }, - { - "Name": "15d", - "RegionID": 15, - "HostName": "derp15d.tailscale.com", - "IPv4": "102.67.165.36", - "IPv6": "2c0f:edb0:0:10::599", - "CanPort80": true - }, - { - "Name": "15b", - "RegionID": 15, - "HostName": "derp15b.tailscale.com", - "IPv4": "102.67.165.90", - "IPv6": "2c0f:edb0:0:10::963", - "CanPort80": true - } - ] - }, - "16": { - "RegionID": 16, - "RegionCode": "mia", - "RegionName": "Miami", - "Latitude": 25.78, - "Longitude": -80.21, - "Nodes": [ - { - "Name": "16c", - "RegionID": 16, - "HostName": "derp16c.tailscale.com", - "IPv4": "192.73.243.229", - "IPv6": "2607:f740:17::4e4", - "CanPort80": true - }, - { - "Name": "16d", - "RegionID": 16, - "HostName": "derp16d.tailscale.com", - "IPv4": "192.73.243.141", - "IPv6": "2607:f740:17::475", - "CanPort80": true - }, - { - "Name": "16b", - "RegionID": 16, - "HostName": "derp16b.tailscale.com", - "IPv4": "192.73.243.135", - "IPv6": "2607:f740:17::476", - "CanPort80": true - } - ] - }, - "17": { - "RegionID": 17, - "RegionCode": "lax", - "RegionName": "Los Angeles", - "Latitude": 34.05, - "Longitude": -118.25, - "Nodes": [ - { - "Name": "17c", - "RegionID": 17, - "HostName": "derp17c.tailscale.com", - "IPv4": "208.111.40.12", - "IPv6": "2607:f740:c::10", - "CanPort80": true - }, - { - "Name": "17d", - "RegionID": 17, - "HostName": "derp17d.tailscale.com", - "IPv4": "208.111.40.216", - "IPv6": "2607:f740:c::e1b", - "CanPort80": true - }, - { - "Name": "17b", - "RegionID": 17, - "HostName": "derp17b.tailscale.com", - "IPv4": "192.73.244.245", - "IPv6": "2607:f740:c::646", - "CanPort80": true - } - ] - }, - "18": { - "RegionID": 18, - "RegionCode": "par", - "RegionName": "Paris", - "Latitude": 48.856667, - "Longitude": 2.352222, - "Nodes": [ - { - "Name": "18c", - "RegionID": 18, - "HostName": "derp18c.tailscale.com", - "IPv4": "176.58.90.207", - "IPv6": "2a00:dd80:3e::c19", - "CanPort80": true - }, - { - "Name": "18d", - "RegionID": 18, - "HostName": "derp18d.tailscale.com", - "IPv4": "176.58.90.104", - "IPv6": "2a00:dd80:3e::f2e", - "CanPort80": true - }, - { - "Name": "18b", - "RegionID": 18, - "HostName": "derp18b.tailscale.com", - "IPv4": "176.58.90.147", - "IPv6": "2a00:dd80:3e::363", - "CanPort80": true - } - ] - }, - "19": { - "RegionID": 19, - "RegionCode": "mad", - "RegionName": "Madrid", - "Latitude": 40.416944, - "Longitude": -3.703333, - "Nodes": [ - { - "Name": "19c", - "RegionID": 19, - "HostName": "derp19c.tailscale.com", - "IPv4": "45.159.97.61", - "IPv6": "2a00:dd80:14:10::20", - "CanPort80": true - }, - { - "Name": "19d", - "RegionID": 19, - "HostName": "derp19d.tailscale.com", - "IPv4": "45.159.97.233", - "IPv6": "2a00:dd80:14:10::34a", - "CanPort80": true - }, - { - "Name": "19b", - "RegionID": 19, - "HostName": "derp19b.tailscale.com", - "IPv4": "45.159.97.144", - "IPv6": "2a00:dd80:14:10::335", - "CanPort80": true - } - ] - }, - "2": { - "RegionID": 2, - "RegionCode": "sfo", - "RegionName": "San Francisco", - "Latitude": 37.7775, - "Longitude": -122.416389, - "Nodes": [ - { - "Name": "2e", - "RegionID": 2, - "HostName": "derp2e.tailscale.com", - "IPv4": "192.73.252.134", - "IPv6": "2607:f740:0:3f::44c", - "CanPort80": true - }, - { - "Name": "2f", - "RegionID": 2, - "HostName": "derp2f.tailscale.com", - "IPv4": "208.111.34.178", - "IPv6": "2607:f740:0:3f::f4", - "CanPort80": true - }, - { - "Name": "2d", - "RegionID": 2, - "HostName": "derp2d.tailscale.com", - "IPv4": "192.73.252.65", - "IPv6": "2607:f740:0:3f::287", - "CanPort80": true - } - ] - }, - "20": { - "RegionID": 20, - "RegionCode": "hkg", - "RegionName": "Hong Kong", - "Latitude": 22.3193, - "Longitude": 114.1694, - "Nodes": [ - { - "Name": "20c", - "RegionID": 20, - "HostName": "derp20c.tailscale.com", - "IPv4": "205.147.105.30", - "IPv6": "2403:2500:8000:1::5fb", - "CanPort80": true - }, - { - "Name": "20d", - "RegionID": 20, - "HostName": "derp20d.tailscale.com", - "IPv4": "205.147.105.78", - "IPv6": "2403:2500:8000:1::e9a", - "CanPort80": true - }, - { - "Name": "20b", - "RegionID": 20, - "HostName": "derp20b.tailscale.com", - "IPv4": "103.6.84.152", - "IPv6": "2403:2500:8000:1::ef6", - "CanPort80": true - } - ] - }, - "21": { - "RegionID": 21, - "RegionCode": "tor", - "RegionName": "Toronto", - "Latitude": 43.741667, - "Longitude": -79.373333, - "Nodes": [ - { - "Name": "21c", - "RegionID": 21, - "HostName": "derp21c.tailscale.com", - "IPv4": "162.248.221.215", - "IPv6": "2607:f740:50::f10", - "CanPort80": true - }, - { - "Name": "21d", - "RegionID": 21, - "HostName": "derp21d.tailscale.com", - "IPv4": "162.248.221.248", - "IPv6": "2607:f740:50::ca4", - "CanPort80": true - }, - { - "Name": "21b", - "RegionID": 21, - "HostName": "derp21b.tailscale.com", - "IPv4": "162.248.221.199", - "IPv6": "2607:f740:50::1d1", - "CanPort80": true - } - ] - }, - "22": { - "RegionID": 22, - "RegionCode": "waw", - "RegionName": "Warsaw", - "Latitude": 52.23, - "Longitude": 21.011111, - "Nodes": [ - { - "Name": "22c", - "RegionID": 22, - "HostName": "derp22c.tailscale.com", - "IPv4": "45.159.98.253", - "IPv6": "2a00:dd80:40:100::3f", - "CanPort80": true - }, - { - "Name": "22d", - "RegionID": 22, - "HostName": "derp22d.tailscale.com", - "IPv4": "45.159.98.145", - "IPv6": "2a00:dd80:40:100::211", - "CanPort80": true - }, - { - "Name": "22b", - "RegionID": 22, - "HostName": "derp22b.tailscale.com", - "IPv4": "45.159.98.196", - "IPv6": "2a00:dd80:40:100::316", - "CanPort80": true - } - ] - }, - "23": { - "RegionID": 23, - "RegionCode": "dbi", - "RegionName": "Dubai", - "Latitude": 25.263056, - "Longitude": 55.297222, - "Nodes": [ - { - "Name": "23c", - "RegionID": 23, - "HostName": "derp23c.tailscale.com", - "IPv4": "185.34.3.207", - "IPv6": "2a00:dd80:3f:100::a50", - "CanPort80": true - }, - { - "Name": "23d", - "RegionID": 23, - "HostName": "derp23d.tailscale.com", - "IPv4": "185.34.3.75", - "IPv6": "2a00:dd80:3f:100::97e", - "CanPort80": true - }, - { - "Name": "23b", - "RegionID": 23, - "HostName": "derp23b.tailscale.com", - "IPv4": "185.34.3.232", - "IPv6": "2a00:dd80:3f:100::76f", - "CanPort80": true - } - ] - }, - "24": { - "RegionID": 24, - "RegionCode": "hnl", - "RegionName": "Honolulu", - "Latitude": 21.306944, - "Longitude": -157.858333, - "Nodes": [ - { - "Name": "24c", - "RegionID": 24, - "HostName": "derp24c.tailscale.com", - "IPv4": "208.83.233.233", - "IPv6": "2001:19f0:c000:c591:5400:04ff:fe26:2c5f", - "CanPort80": true - }, - { - "Name": "24d", - "RegionID": 24, - "HostName": "derp24d.tailscale.com", - "IPv4": "208.72.155.133", - "IPv6": "2001:19f0:c000:c564:5400:04ff:fe26:2ba8", - "CanPort80": true - }, - { - "Name": "24b", - "RegionID": 24, - "HostName": "derp24b.tailscale.com", - "IPv4": "208.83.234.151", - "IPv6": "2001:19f0:c000:c586:5400:04ff:fe26:2ba6", - "CanPort80": true - } - ] - }, - "25": { - "RegionID": 25, - "RegionCode": "nai", - "RegionName": "Nairobi", - "Latitude": -1.286389, - "Longitude": 36.817222, - "Nodes": [ - { - "Name": "25c", - "RegionID": 25, - "HostName": "derp25c.tailscale.com", - "IPv4": "102.67.167.37", - "IPv6": "2c0f:edb0:2000:1::2c7", - "CanPort80": true - }, - { - "Name": "25d", - "RegionID": 25, - "HostName": "derp25d.tailscale.com", - "IPv4": "102.67.167.188", - "IPv6": "2c0f:edb0:2000:1::188", - "CanPort80": true - }, - { - "Name": "25b", - "RegionID": 25, - "HostName": "derp25b.tailscale.com", - "IPv4": "102.67.167.245", - "IPv6": "2c0f:edb0:2000:1::2e9", - "CanPort80": true - } - ] - }, - "26": { - "RegionID": 26, - "RegionCode": "nue", - "RegionName": "Nuremberg", - "Latitude": 49.453889, - "Longitude": 11.0775, - "Nodes": [ - { - "Name": "26c", - "RegionID": 26, - "HostName": "derp26c.tailscale.com", - "IPv4": "49.12.193.137", - "IPv6": "2a01:4f8:1c1c:5c70::1", - "CanPort80": true - }, - { - "Name": "26d", - "RegionID": 26, - "HostName": "derp26d.tailscale.com", - "IPv4": "49.13.204.141", - "IPv6": "2a01:4f8:1c0c:7d06::1", - "CanPort80": true - }, - { - "Name": "26b", - "RegionID": 26, - "HostName": "derp26b.tailscale.com", - "IPv4": "167.235.72.200", - "IPv6": "2a01:4f8:1c1c:47b6::1", - "CanPort80": true - } - ] - }, - "27": { - "RegionID": 27, - "RegionCode": "iad", - "RegionName": "Ashburn", - "Latitude": 39.03, - "Longitude": -77.471111, - "Nodes": [ - { - "Name": "27d", - "RegionID": 27, - "HostName": "derp27d.tailscale.com", - "IPv4": "178.156.152.106", - "IPv6": "2a01:4ff:f0:3c8e::1", - "CanPort80": true - }, - { - "Name": "27c", - "RegionID": 27, - "HostName": "derp27c.tailscale.com", - "IPv4": "178.156.152.91", - "IPv6": "2a01:4ff:f0:3913::1", - "CanPort80": true - }, - { - "Name": "27e", - "RegionID": 27, - "HostName": "derp27e.tailscale.com", - "IPv4": "178.156.134.232", - "IPv6": "2a01:4ff:f0:28d4::1", - "CanPort80": true - }, - { - "Name": "27b", - "RegionID": 27, - "HostName": "derp27b.tailscale.com", - "IPv4": "5.161.218.233", - "IPv6": "2a01:4ff:f0:3db9::1", - "CanPort80": true - } - ] - }, - "28": { - "RegionID": 28, - "RegionCode": "hel", - "RegionName": "Helsinki", - "Latitude": 60.170833, - "Longitude": 24.9375, - "Nodes": [ - { - "Name": "28c", - "RegionID": 28, - "HostName": "derp28c.tailscale.com", - "IPv4": "95.217.2.165", - "IPv6": "2a01:4f9:c012:cd74::1", - "CanPort80": true - }, - { - "Name": "28d", - "RegionID": 28, - "HostName": "derp28d.tailscale.com", - "IPv4": "157.180.28.32", - "IPv6": "2a01:4f9:c012:2e5b::1", - "CanPort80": true - }, - { - "Name": "28b", - "RegionID": 28, - "HostName": "derp28b.tailscale.com", - "IPv4": "65.109.143.62", - "IPv6": "2a01:4f9:c012:d55c::1", - "CanPort80": true - } - ] - }, - "3": { - "RegionID": 3, - "RegionCode": "sin", - "RegionName": "Singapore", - "Latitude": 1.3521, - "Longitude": 103.8198, - "Nodes": [ - { - "Name": "3g", - "RegionID": 3, - "HostName": "derp3g.tailscale.com", - "IPv4": "172.237.72.79", - "IPv6": "2600:3c15::2000:adff:fe08:6fab", - "CanPort80": true - }, - { - "Name": "3f", - "RegionID": 3, - "HostName": "derp3f.tailscale.com", - "IPv4": "172.237.72.8", - "IPv6": "2600:3c15::2000:53ff:fe48:a668", - "CanPort80": true - }, - { - "Name": "3h", - "RegionID": 3, - "HostName": "derp3h.tailscale.com", - "IPv4": "172.237.66.30", - "IPv6": "2600:3c15::2000:3dff:fe44:50aa", - "CanPort80": true - }, - { - "Name": "3e", - "RegionID": 3, - "HostName": "derp3e.tailscale.com", - "IPv4": "172.237.72.43", - "IPv6": "2600:3c15::2000:6cff:fee4:d799", - "CanPort80": true - } - ] - }, - "4": { - "RegionID": 4, - "RegionCode": "fra", - "RegionName": "Frankfurt", - "Latitude": 50.1109, - "Longitude": 8.6821, - "Nodes": [ - { - "Name": "4h", - "RegionID": 4, - "HostName": "derp4h.tailscale.com", - "IPv4": "185.40.234.77", - "IPv6": "2a00:dd80:20::bcf", - "CanPort80": true - }, - { - "Name": "4g", - "RegionID": 4, - "HostName": "derp4g.tailscale.com", - "IPv4": "185.40.234.113", - "IPv6": "2a00:dd80:20::8f", - "CanPort80": true - }, - { - "Name": "4i", - "RegionID": 4, - "HostName": "derp4i.tailscale.com", - "IPv4": "185.40.234.53", - "IPv6": "2a00:dd80:20::8a6", - "CanPort80": true - }, - { - "Name": "4f", - "RegionID": 4, - "HostName": "derp4f.tailscale.com", - "IPv4": "185.40.234.219", - "IPv6": "2a00:dd80:20::a25", - "CanPort80": true - } - ] - }, - "5": { - "RegionID": 5, - "RegionCode": "syd", - "RegionName": "Sydney", - "Latitude": -33.867778, - "Longitude": 151.21, - "Nodes": [ - { - "Name": "5f", - "RegionID": 5, - "HostName": "derp5f.tailscale.com", - "IPv4": "172.105.166.103", - "IPv6": "2400:8907::2000:ccff:fe1f:80da", - "CanPort80": true - }, - { - "Name": "5g", - "RegionID": 5, - "HostName": "derp5g.tailscale.com", - "IPv4": "172.105.169.57", - "IPv6": "2400:8907::2000:2fff:fea7:57f4", - "CanPort80": true - }, - { - "Name": "5e", - "RegionID": 5, - "HostName": "derp5e.tailscale.com", - "IPv4": "172.105.179.230", - "IPv6": "2400:8907::2000:ceff:fe8d:4f4e", - "CanPort80": true - } - ] - }, - "6": { - "RegionID": 6, - "RegionCode": "blr", - "RegionName": "Bengaluru", - "Latitude": 12.9716, - "Longitude": 77.5946, - "Nodes": [ - { - "Name": "6a", - "RegionID": 6, - "HostName": "derp6.tailscale.com", - "IPv4": "68.183.90.120", - "IPv6": "2400:6180:100:d0::982:d001", - "CanPort80": true - } - ] - }, - "7": { - "RegionID": 7, - "RegionCode": "tok", - "RegionName": "Tokyo", - "Latitude": 35.6764, - "Longitude": 139.65, - "Nodes": [ - { - "Name": "7g", - "RegionID": 7, - "HostName": "derp7g.tailscale.com", - "IPv4": "172.238.6.179", - "IPv6": "2600:3c18::2000:3fff:fe80:3ebd", - "CanPort80": true - }, - { - "Name": "7f", - "RegionID": 7, - "HostName": "derp7f.tailscale.com", - "IPv4": "172.238.6.34", - "IPv6": "2600:3c18::2000:acff:fe8e:3ed5", - "CanPort80": true - }, - { - "Name": "7h", - "RegionID": 7, - "HostName": "derp7h.tailscale.com", - "IPv4": "172.237.28.183", - "IPv6": "2600:3c18::2000:b1ff:fea9:4560", - "CanPort80": true - }, - { - "Name": "7e", - "RegionID": 7, - "HostName": "derp7e.tailscale.com", - "IPv4": "172.238.6.180", - "IPv6": "2600:3c18::2000:60ff:fe0f:6e83", - "STUNOnly": true, - "CanPort80": true - } - ] - }, - "8": { - "RegionID": 8, - "RegionCode": "lhr", - "RegionName": "London", - "Latitude": 51.5072, - "Longitude": 0.1276, - "Nodes": [ - { - "Name": "8f", - "RegionID": 8, - "HostName": "derp8f.tailscale.com", - "IPv4": "176.58.88.183", - "IPv6": "2a00:dd80:3a::dfa", - "CanPort80": true - }, - { - "Name": "8g", - "RegionID": 8, - "HostName": "derp8g.tailscale.com", - "IPv4": "176.58.92.254", - "IPv6": "2a00:dd80:3a::ed", - "CanPort80": true - }, - { - "Name": "8e", - "RegionID": 8, - "HostName": "derp8e.tailscale.com", - "IPv4": "176.58.92.144", - "IPv6": "2a00:dd80:3a::b33", - "CanPort80": true - } - ] - }, - "9": { - "RegionID": 9, - "RegionCode": "dfw", - "RegionName": "Dallas", - "Latitude": 32.779167, - "Longitude": -96.808889, - "Nodes": [ - { - "Name": "9e", - "RegionID": 9, - "HostName": "derp9e.tailscale.com", - "IPv4": "192.73.248.83", - "IPv6": "2607:f740:100::359", - "CanPort80": true - }, - { - "Name": "9f", - "RegionID": 9, - "HostName": "derp9f.tailscale.com", - "IPv4": "209.177.156.197", - "IPv6": "2607:f740:100::cad", - "CanPort80": true - }, - { - "Name": "9d", - "RegionID": 9, - "HostName": "derp9d.tailscale.com", - "IPv4": "209.177.156.94", - "IPv6": "2607:f740:100::c05", - "CanPort80": true - } - ] - } - } - }, - "DisplayMessages": null, - "TKAEnabled": false, - "TKAHead": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", - "Domain": "kratail2tid@passkey", - "DomainAuditLogID": "", - "UserProfiles": { - "1399889648409786": { - "ID": 1399889648409786, - "LoginName": "router-b.tail78f774.ts.net", - "DisplayName": "router-b" - } - } + "PacketFilterRules": 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.124.195.93": { - "peer_name": "exit-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/subnet-router/tailscaled.sock whois --json 100.124.195.93", - "response": null - }, - "100.116.18.24": { - "peer_name": "exit-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/subnet-router/tailscaled.sock whois --json 100.116.18.24", - "response": null - }, - "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.107.162.14": { - "peer_name": "group-a-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/subnet-router/tailscaled.sock whois --json 100.107.162.14", - "response": null - }, - "100.77.135.18": { - "peer_name": "group-b-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/subnet-router/tailscaled.sock whois --json 100.77.135.18", - "response": null - }, - "100.105.127.107": { - "peer_name": "multi-exit-router", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/subnet-router/tailscaled.sock whois --json 100.105.127.107", - "response": null - }, - "100.109.43.124": { - "peer_name": "router-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/subnet-router/tailscaled.sock whois --json 100.109.43.124", - "response": null - }, - "100.65.172.123": { - "peer_name": "router-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/subnet-router/tailscaled.sock whois --json 100.65.172.123", - "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 - } - }, "netmap": { - "SelfNode": { - "ID": 7489538288452506, - "StableID": "nTPEqJU2V121CNTRL", - "Name": "subnet-router.tail78f774.ts.net.", - "User": 7489538288452506, - "Key": "nodekey:887ae2351c09c3b952f1f42bdac4095ec396ebf15824a746e4193c003e9c8e3c", - "DiscoKey": "discokey:9e3167ceaf53735a2fcaa7d3a85ad3a6118274deb448326d594849275014cc56", - "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:58597", "10.65.0.27:58597", "172.17.0.1:58597"], - "Hostinfo": { - "Hostname": "subnet-router", - "RoutableIPs": ["10.33.0.0/16"], - "RequestTags": ["tag:router"], - "Services": [ - { "Proto": "peerapi4", "Port": 63250 }, - { "Proto": "peerapi6", "Port": 63250 }, - { "Proto": "peerapi-dns-proxy", "Port": 1 } - ] - }, - "Created": "2026-02-23T00:13:15.731478784Z", - "Tags": ["tag:router"], - "MachineAuthorized": true, - "CapMap": { - "https://tailscale.com/cap/file-sharing": null, - "https://tailscale.com/cap/is-owner": null, - "https://tailscale.com/cap/ssh": null, - "https://tailscale.com/cap/tailnet-lock": null, - "probe-udp-lifetime": null, - "ssh-behavior-v1": null, - "ssh-env-vars": null, - "store-appc-routes": null, - "tailnet-display-name": ["kratail2tid@passkey"] - }, - "ComputedName": "subnet-router", - "ComputedNameWithHost": "subnet-router" - }, - "AllCaps": [ - "ssh-env-vars", - "https://tailscale.com/cap/ssh", - "https://tailscale.com/cap/is-owner", - "https://tailscale.com/cap/tailnet-lock", - "tailnet-display-name", - "ssh-behavior-v1", - "probe-udp-lifetime", - "store-appc-routes", - "https://tailscale.com/cap/file-sharing" - ], - "NodeKey": "nodekey:887ae2351c09c3b952f1f42bdac4095ec396ebf15824a746e4193c003e9c8e3c", - "MachineKey": "mkey:324efa54cc51a7b4f266f6a236904c755d32b6e547a76ad3c1d1e9d348de682a", "Peers": [], - "DNS": { - "Routes": { - "tail78f774.ts.net.": null, - "ts.net.": [{ "Addr": "199.247.155.53" }, { "Addr": "2620:111:8007::53" }] - }, - "Domains": ["tail78f774.ts.net"], - "Proxied": true, - "ExitNodeFilteredSet": [".ts.net", ".tailscale.net"] - }, - "PacketFilter": [], - "PacketFilterRules": null, - "SSHPolicy": { "rules": [] }, - "CollectServices": false, - "DERPMap": { - "Regions": { - "1": { - "RegionID": 1, - "RegionCode": "nyc", - "RegionName": "New York City", - "Latitude": 40.7128, - "Longitude": -74.006, - "Nodes": [ - { - "Name": "1h", - "RegionID": 1, - "HostName": "derp1h.tailscale.com", - "IPv4": "199.38.181.93", - "IPv6": "2607:f740:f::afd", - "CanPort80": true - }, - { - "Name": "1g", - "RegionID": 1, - "HostName": "derp1g.tailscale.com", - "IPv4": "209.177.145.120", - "IPv6": "2607:f740:f::3eb", - "CanPort80": true - }, - { - "Name": "1i", - "RegionID": 1, - "HostName": "derp1i.tailscale.com", - "IPv4": "199.38.181.103", - "IPv6": "2607:f740:f::e19", - "CanPort80": true - }, - { - "Name": "1f", - "RegionID": 1, - "HostName": "derp1f.tailscale.com", - "IPv4": "199.38.181.104", - "IPv6": "2607:f740:f::bc", - "CanPort80": true - } - ] - }, - "10": { - "RegionID": 10, - "RegionCode": "sea", - "RegionName": "Seattle", - "Latitude": 47.609722, - "Longitude": -122.333056, - "Nodes": [ - { - "Name": "10c", - "RegionID": 10, - "HostName": "derp10c.tailscale.com", - "IPv4": "192.73.240.121", - "IPv6": "2607:f740:14::40c", - "CanPort80": true - }, - { - "Name": "10d", - "RegionID": 10, - "HostName": "derp10d.tailscale.com", - "IPv4": "192.73.240.132", - "IPv6": "2607:f740:14::500", - "CanPort80": true - }, - { - "Name": "10b", - "RegionID": 10, - "HostName": "derp10b.tailscale.com", - "IPv4": "192.73.240.161", - "IPv6": "2607:f740:14::61c", - "CanPort80": true - } - ] - }, - "11": { - "RegionID": 11, - "RegionCode": "sao", - "RegionName": "São Paulo", - "Latitude": -23.55, - "Longitude": -46.633333, - "Nodes": [ - { - "Name": "11f", - "RegionID": 11, - "HostName": "derp11f.tailscale.com", - "IPv4": "172.237.61.197", - "IPv6": "2600:3c0d::2000:3bff:fe44:6166", - "CanPort80": true - }, - { - "Name": "11g", - "RegionID": 11, - "HostName": "derp11g.tailscale.com", - "IPv4": "172.237.61.190", - "IPv6": "2600:3c0d::2000:62ff:febe:2e67", - "CanPort80": true - }, - { - "Name": "11e", - "RegionID": 11, - "HostName": "derp11e.tailscale.com", - "IPv4": "172.237.61.194", - "IPv6": "2600:3c0d::2000:d2ff:fe43:1790", - "CanPort80": true - } - ] - }, - "12": { - "RegionID": 12, - "RegionCode": "ord", - "RegionName": "Chicago", - "Latitude": 41.881944, - "Longitude": -87.627778, - "Nodes": [ - { - "Name": "12e", - "RegionID": 12, - "HostName": "derp12e.tailscale.com", - "IPv4": "209.177.158.15", - "IPv6": "2607:f740:e::b17", - "CanPort80": true - }, - { - "Name": "12f", - "RegionID": 12, - "HostName": "derp12f.tailscale.com", - "IPv4": "199.38.182.118", - "IPv6": "2607:f740:e::4c8", - "CanPort80": true - }, - { - "Name": "12d", - "RegionID": 12, - "HostName": "derp12d.tailscale.com", - "IPv4": "209.177.158.246", - "IPv6": "2607:f740:e::811", - "CanPort80": true - } - ] - }, - "13": { - "RegionID": 13, - "RegionCode": "den", - "RegionName": "Denver", - "Latitude": 39.7392, - "Longitude": -104.9849, - "Nodes": [ - { - "Name": "13c", - "RegionID": 13, - "HostName": "derp13c.tailscale.com", - "IPv4": "192.73.242.28", - "IPv6": "2607:f740:16::5c", - "CanPort80": true - }, - { - "Name": "13d", - "RegionID": 13, - "HostName": "derp13d.tailscale.com", - "IPv4": "192.73.242.204", - "IPv6": "2607:f740:16::c23", - "CanPort80": true - }, - { - "Name": "13b", - "RegionID": 13, - "HostName": "derp13b.tailscale.com", - "IPv4": "192.73.242.187", - "IPv6": "2607:f740:16::640", - "CanPort80": true - } - ] - }, - "14": { - "RegionID": 14, - "RegionCode": "ams", - "RegionName": "Amsterdam", - "Latitude": 52.372778, - "Longitude": 4.893611, - "Nodes": [ - { - "Name": "14c", - "RegionID": 14, - "HostName": "derp14c.tailscale.com", - "IPv4": "176.58.93.147", - "IPv6": "2a00:dd80:3c::b09", - "CanPort80": true - }, - { - "Name": "14d", - "RegionID": 14, - "HostName": "derp14d.tailscale.com", - "IPv4": "176.58.93.154", - "IPv6": "2a00:dd80:3c::3d5", - "CanPort80": true - }, - { - "Name": "14b", - "RegionID": 14, - "HostName": "derp14b.tailscale.com", - "IPv4": "176.58.93.248", - "IPv6": "2a00:dd80:3c::807", - "CanPort80": true - } - ] - }, - "15": { - "RegionID": 15, - "RegionCode": "jnb", - "RegionName": "Johannesburg", - "Latitude": -26.204444, - "Longitude": 28.045556, - "Nodes": [ - { - "Name": "15c", - "RegionID": 15, - "HostName": "derp15c.tailscale.com", - "IPv4": "102.67.165.185", - "IPv6": "2c0f:edb0:0:10::b59", - "CanPort80": true - }, - { - "Name": "15d", - "RegionID": 15, - "HostName": "derp15d.tailscale.com", - "IPv4": "102.67.165.36", - "IPv6": "2c0f:edb0:0:10::599", - "CanPort80": true - }, - { - "Name": "15b", - "RegionID": 15, - "HostName": "derp15b.tailscale.com", - "IPv4": "102.67.165.90", - "IPv6": "2c0f:edb0:0:10::963", - "CanPort80": true - } - ] - }, - "16": { - "RegionID": 16, - "RegionCode": "mia", - "RegionName": "Miami", - "Latitude": 25.78, - "Longitude": -80.21, - "Nodes": [ - { - "Name": "16c", - "RegionID": 16, - "HostName": "derp16c.tailscale.com", - "IPv4": "192.73.243.229", - "IPv6": "2607:f740:17::4e4", - "CanPort80": true - }, - { - "Name": "16d", - "RegionID": 16, - "HostName": "derp16d.tailscale.com", - "IPv4": "192.73.243.141", - "IPv6": "2607:f740:17::475", - "CanPort80": true - }, - { - "Name": "16b", - "RegionID": 16, - "HostName": "derp16b.tailscale.com", - "IPv4": "192.73.243.135", - "IPv6": "2607:f740:17::476", - "CanPort80": true - } - ] - }, - "17": { - "RegionID": 17, - "RegionCode": "lax", - "RegionName": "Los Angeles", - "Latitude": 34.05, - "Longitude": -118.25, - "Nodes": [ - { - "Name": "17c", - "RegionID": 17, - "HostName": "derp17c.tailscale.com", - "IPv4": "208.111.40.12", - "IPv6": "2607:f740:c::10", - "CanPort80": true - }, - { - "Name": "17d", - "RegionID": 17, - "HostName": "derp17d.tailscale.com", - "IPv4": "208.111.40.216", - "IPv6": "2607:f740:c::e1b", - "CanPort80": true - }, - { - "Name": "17b", - "RegionID": 17, - "HostName": "derp17b.tailscale.com", - "IPv4": "192.73.244.245", - "IPv6": "2607:f740:c::646", - "CanPort80": true - } - ] - }, - "18": { - "RegionID": 18, - "RegionCode": "par", - "RegionName": "Paris", - "Latitude": 48.856667, - "Longitude": 2.352222, - "Nodes": [ - { - "Name": "18c", - "RegionID": 18, - "HostName": "derp18c.tailscale.com", - "IPv4": "176.58.90.207", - "IPv6": "2a00:dd80:3e::c19", - "CanPort80": true - }, - { - "Name": "18d", - "RegionID": 18, - "HostName": "derp18d.tailscale.com", - "IPv4": "176.58.90.104", - "IPv6": "2a00:dd80:3e::f2e", - "CanPort80": true - }, - { - "Name": "18b", - "RegionID": 18, - "HostName": "derp18b.tailscale.com", - "IPv4": "176.58.90.147", - "IPv6": "2a00:dd80:3e::363", - "CanPort80": true - } - ] - }, - "19": { - "RegionID": 19, - "RegionCode": "mad", - "RegionName": "Madrid", - "Latitude": 40.416944, - "Longitude": -3.703333, - "Nodes": [ - { - "Name": "19c", - "RegionID": 19, - "HostName": "derp19c.tailscale.com", - "IPv4": "45.159.97.61", - "IPv6": "2a00:dd80:14:10::20", - "CanPort80": true - }, - { - "Name": "19d", - "RegionID": 19, - "HostName": "derp19d.tailscale.com", - "IPv4": "45.159.97.233", - "IPv6": "2a00:dd80:14:10::34a", - "CanPort80": true - }, - { - "Name": "19b", - "RegionID": 19, - "HostName": "derp19b.tailscale.com", - "IPv4": "45.159.97.144", - "IPv6": "2a00:dd80:14:10::335", - "CanPort80": true - } - ] - }, - "2": { - "RegionID": 2, - "RegionCode": "sfo", - "RegionName": "San Francisco", - "Latitude": 37.7775, - "Longitude": -122.416389, - "Nodes": [ - { - "Name": "2e", - "RegionID": 2, - "HostName": "derp2e.tailscale.com", - "IPv4": "192.73.252.134", - "IPv6": "2607:f740:0:3f::44c", - "CanPort80": true - }, - { - "Name": "2f", - "RegionID": 2, - "HostName": "derp2f.tailscale.com", - "IPv4": "208.111.34.178", - "IPv6": "2607:f740:0:3f::f4", - "CanPort80": true - }, - { - "Name": "2d", - "RegionID": 2, - "HostName": "derp2d.tailscale.com", - "IPv4": "192.73.252.65", - "IPv6": "2607:f740:0:3f::287", - "CanPort80": true - } - ] - }, - "20": { - "RegionID": 20, - "RegionCode": "hkg", - "RegionName": "Hong Kong", - "Latitude": 22.3193, - "Longitude": 114.1694, - "Nodes": [ - { - "Name": "20c", - "RegionID": 20, - "HostName": "derp20c.tailscale.com", - "IPv4": "205.147.105.30", - "IPv6": "2403:2500:8000:1::5fb", - "CanPort80": true - }, - { - "Name": "20d", - "RegionID": 20, - "HostName": "derp20d.tailscale.com", - "IPv4": "205.147.105.78", - "IPv6": "2403:2500:8000:1::e9a", - "CanPort80": true - }, - { - "Name": "20b", - "RegionID": 20, - "HostName": "derp20b.tailscale.com", - "IPv4": "103.6.84.152", - "IPv6": "2403:2500:8000:1::ef6", - "CanPort80": true - } - ] - }, - "21": { - "RegionID": 21, - "RegionCode": "tor", - "RegionName": "Toronto", - "Latitude": 43.741667, - "Longitude": -79.373333, - "Nodes": [ - { - "Name": "21c", - "RegionID": 21, - "HostName": "derp21c.tailscale.com", - "IPv4": "162.248.221.215", - "IPv6": "2607:f740:50::f10", - "CanPort80": true - }, - { - "Name": "21d", - "RegionID": 21, - "HostName": "derp21d.tailscale.com", - "IPv4": "162.248.221.248", - "IPv6": "2607:f740:50::ca4", - "CanPort80": true - }, - { - "Name": "21b", - "RegionID": 21, - "HostName": "derp21b.tailscale.com", - "IPv4": "162.248.221.199", - "IPv6": "2607:f740:50::1d1", - "CanPort80": true - } - ] - }, - "22": { - "RegionID": 22, - "RegionCode": "waw", - "RegionName": "Warsaw", - "Latitude": 52.23, - "Longitude": 21.011111, - "Nodes": [ - { - "Name": "22c", - "RegionID": 22, - "HostName": "derp22c.tailscale.com", - "IPv4": "45.159.98.253", - "IPv6": "2a00:dd80:40:100::3f", - "CanPort80": true - }, - { - "Name": "22d", - "RegionID": 22, - "HostName": "derp22d.tailscale.com", - "IPv4": "45.159.98.145", - "IPv6": "2a00:dd80:40:100::211", - "CanPort80": true - }, - { - "Name": "22b", - "RegionID": 22, - "HostName": "derp22b.tailscale.com", - "IPv4": "45.159.98.196", - "IPv6": "2a00:dd80:40:100::316", - "CanPort80": true - } - ] - }, - "23": { - "RegionID": 23, - "RegionCode": "dbi", - "RegionName": "Dubai", - "Latitude": 25.263056, - "Longitude": 55.297222, - "Nodes": [ - { - "Name": "23c", - "RegionID": 23, - "HostName": "derp23c.tailscale.com", - "IPv4": "185.34.3.207", - "IPv6": "2a00:dd80:3f:100::a50", - "CanPort80": true - }, - { - "Name": "23d", - "RegionID": 23, - "HostName": "derp23d.tailscale.com", - "IPv4": "185.34.3.75", - "IPv6": "2a00:dd80:3f:100::97e", - "CanPort80": true - }, - { - "Name": "23b", - "RegionID": 23, - "HostName": "derp23b.tailscale.com", - "IPv4": "185.34.3.232", - "IPv6": "2a00:dd80:3f:100::76f", - "CanPort80": true - } - ] - }, - "24": { - "RegionID": 24, - "RegionCode": "hnl", - "RegionName": "Honolulu", - "Latitude": 21.306944, - "Longitude": -157.858333, - "Nodes": [ - { - "Name": "24c", - "RegionID": 24, - "HostName": "derp24c.tailscale.com", - "IPv4": "208.83.233.233", - "IPv6": "2001:19f0:c000:c591:5400:04ff:fe26:2c5f", - "CanPort80": true - }, - { - "Name": "24d", - "RegionID": 24, - "HostName": "derp24d.tailscale.com", - "IPv4": "208.72.155.133", - "IPv6": "2001:19f0:c000:c564:5400:04ff:fe26:2ba8", - "CanPort80": true - }, - { - "Name": "24b", - "RegionID": 24, - "HostName": "derp24b.tailscale.com", - "IPv4": "208.83.234.151", - "IPv6": "2001:19f0:c000:c586:5400:04ff:fe26:2ba6", - "CanPort80": true - } - ] - }, - "25": { - "RegionID": 25, - "RegionCode": "nai", - "RegionName": "Nairobi", - "Latitude": -1.286389, - "Longitude": 36.817222, - "Nodes": [ - { - "Name": "25c", - "RegionID": 25, - "HostName": "derp25c.tailscale.com", - "IPv4": "102.67.167.37", - "IPv6": "2c0f:edb0:2000:1::2c7", - "CanPort80": true - }, - { - "Name": "25d", - "RegionID": 25, - "HostName": "derp25d.tailscale.com", - "IPv4": "102.67.167.188", - "IPv6": "2c0f:edb0:2000:1::188", - "CanPort80": true - }, - { - "Name": "25b", - "RegionID": 25, - "HostName": "derp25b.tailscale.com", - "IPv4": "102.67.167.245", - "IPv6": "2c0f:edb0:2000:1::2e9", - "CanPort80": true - } - ] - }, - "26": { - "RegionID": 26, - "RegionCode": "nue", - "RegionName": "Nuremberg", - "Latitude": 49.453889, - "Longitude": 11.0775, - "Nodes": [ - { - "Name": "26c", - "RegionID": 26, - "HostName": "derp26c.tailscale.com", - "IPv4": "49.12.193.137", - "IPv6": "2a01:4f8:1c1c:5c70::1", - "CanPort80": true - }, - { - "Name": "26d", - "RegionID": 26, - "HostName": "derp26d.tailscale.com", - "IPv4": "49.13.204.141", - "IPv6": "2a01:4f8:1c0c:7d06::1", - "CanPort80": true - }, - { - "Name": "26b", - "RegionID": 26, - "HostName": "derp26b.tailscale.com", - "IPv4": "167.235.72.200", - "IPv6": "2a01:4f8:1c1c:47b6::1", - "CanPort80": true - } - ] - }, - "27": { - "RegionID": 27, - "RegionCode": "iad", - "RegionName": "Ashburn", - "Latitude": 39.03, - "Longitude": -77.471111, - "Nodes": [ - { - "Name": "27d", - "RegionID": 27, - "HostName": "derp27d.tailscale.com", - "IPv4": "178.156.152.106", - "IPv6": "2a01:4ff:f0:3c8e::1", - "CanPort80": true - }, - { - "Name": "27c", - "RegionID": 27, - "HostName": "derp27c.tailscale.com", - "IPv4": "178.156.152.91", - "IPv6": "2a01:4ff:f0:3913::1", - "CanPort80": true - }, - { - "Name": "27e", - "RegionID": 27, - "HostName": "derp27e.tailscale.com", - "IPv4": "178.156.134.232", - "IPv6": "2a01:4ff:f0:28d4::1", - "CanPort80": true - }, - { - "Name": "27b", - "RegionID": 27, - "HostName": "derp27b.tailscale.com", - "IPv4": "5.161.218.233", - "IPv6": "2a01:4ff:f0:3db9::1", - "CanPort80": true - } - ] - }, - "28": { - "RegionID": 28, - "RegionCode": "hel", - "RegionName": "Helsinki", - "Latitude": 60.170833, - "Longitude": 24.9375, - "Nodes": [ - { - "Name": "28c", - "RegionID": 28, - "HostName": "derp28c.tailscale.com", - "IPv4": "95.217.2.165", - "IPv6": "2a01:4f9:c012:cd74::1", - "CanPort80": true - }, - { - "Name": "28d", - "RegionID": 28, - "HostName": "derp28d.tailscale.com", - "IPv4": "157.180.28.32", - "IPv6": "2a01:4f9:c012:2e5b::1", - "CanPort80": true - }, - { - "Name": "28b", - "RegionID": 28, - "HostName": "derp28b.tailscale.com", - "IPv4": "65.109.143.62", - "IPv6": "2a01:4f9:c012:d55c::1", - "CanPort80": true - } - ] - }, - "3": { - "RegionID": 3, - "RegionCode": "sin", - "RegionName": "Singapore", - "Latitude": 1.3521, - "Longitude": 103.8198, - "Nodes": [ - { - "Name": "3g", - "RegionID": 3, - "HostName": "derp3g.tailscale.com", - "IPv4": "172.237.72.79", - "IPv6": "2600:3c15::2000:adff:fe08:6fab", - "CanPort80": true - }, - { - "Name": "3f", - "RegionID": 3, - "HostName": "derp3f.tailscale.com", - "IPv4": "172.237.72.8", - "IPv6": "2600:3c15::2000:53ff:fe48:a668", - "CanPort80": true - }, - { - "Name": "3h", - "RegionID": 3, - "HostName": "derp3h.tailscale.com", - "IPv4": "172.237.66.30", - "IPv6": "2600:3c15::2000:3dff:fe44:50aa", - "CanPort80": true - }, - { - "Name": "3e", - "RegionID": 3, - "HostName": "derp3e.tailscale.com", - "IPv4": "172.237.72.43", - "IPv6": "2600:3c15::2000:6cff:fee4:d799", - "CanPort80": true - } - ] - }, - "4": { - "RegionID": 4, - "RegionCode": "fra", - "RegionName": "Frankfurt", - "Latitude": 50.1109, - "Longitude": 8.6821, - "Nodes": [ - { - "Name": "4h", - "RegionID": 4, - "HostName": "derp4h.tailscale.com", - "IPv4": "185.40.234.77", - "IPv6": "2a00:dd80:20::bcf", - "CanPort80": true - }, - { - "Name": "4g", - "RegionID": 4, - "HostName": "derp4g.tailscale.com", - "IPv4": "185.40.234.113", - "IPv6": "2a00:dd80:20::8f", - "CanPort80": true - }, - { - "Name": "4i", - "RegionID": 4, - "HostName": "derp4i.tailscale.com", - "IPv4": "185.40.234.53", - "IPv6": "2a00:dd80:20::8a6", - "CanPort80": true - }, - { - "Name": "4f", - "RegionID": 4, - "HostName": "derp4f.tailscale.com", - "IPv4": "185.40.234.219", - "IPv6": "2a00:dd80:20::a25", - "CanPort80": true - } - ] - }, - "5": { - "RegionID": 5, - "RegionCode": "syd", - "RegionName": "Sydney", - "Latitude": -33.867778, - "Longitude": 151.21, - "Nodes": [ - { - "Name": "5f", - "RegionID": 5, - "HostName": "derp5f.tailscale.com", - "IPv4": "172.105.166.103", - "IPv6": "2400:8907::2000:ccff:fe1f:80da", - "CanPort80": true - }, - { - "Name": "5g", - "RegionID": 5, - "HostName": "derp5g.tailscale.com", - "IPv4": "172.105.169.57", - "IPv6": "2400:8907::2000:2fff:fea7:57f4", - "CanPort80": true - }, - { - "Name": "5e", - "RegionID": 5, - "HostName": "derp5e.tailscale.com", - "IPv4": "172.105.179.230", - "IPv6": "2400:8907::2000:ceff:fe8d:4f4e", - "CanPort80": true - } - ] - }, - "6": { - "RegionID": 6, - "RegionCode": "blr", - "RegionName": "Bengaluru", - "Latitude": 12.9716, - "Longitude": 77.5946, - "Nodes": [ - { - "Name": "6a", - "RegionID": 6, - "HostName": "derp6.tailscale.com", - "IPv4": "68.183.90.120", - "IPv6": "2400:6180:100:d0::982:d001", - "CanPort80": true - } - ] - }, - "7": { - "RegionID": 7, - "RegionCode": "tok", - "RegionName": "Tokyo", - "Latitude": 35.6764, - "Longitude": 139.65, - "Nodes": [ - { - "Name": "7g", - "RegionID": 7, - "HostName": "derp7g.tailscale.com", - "IPv4": "172.238.6.179", - "IPv6": "2600:3c18::2000:3fff:fe80:3ebd", - "CanPort80": true - }, - { - "Name": "7f", - "RegionID": 7, - "HostName": "derp7f.tailscale.com", - "IPv4": "172.238.6.34", - "IPv6": "2600:3c18::2000:acff:fe8e:3ed5", - "CanPort80": true - }, - { - "Name": "7h", - "RegionID": 7, - "HostName": "derp7h.tailscale.com", - "IPv4": "172.237.28.183", - "IPv6": "2600:3c18::2000:b1ff:fea9:4560", - "CanPort80": true - }, - { - "Name": "7e", - "RegionID": 7, - "HostName": "derp7e.tailscale.com", - "IPv4": "172.238.6.180", - "IPv6": "2600:3c18::2000:60ff:fe0f:6e83", - "STUNOnly": true, - "CanPort80": true - } - ] - }, - "8": { - "RegionID": 8, - "RegionCode": "lhr", - "RegionName": "London", - "Latitude": 51.5072, - "Longitude": 0.1276, - "Nodes": [ - { - "Name": "8f", - "RegionID": 8, - "HostName": "derp8f.tailscale.com", - "IPv4": "176.58.88.183", - "IPv6": "2a00:dd80:3a::dfa", - "CanPort80": true - }, - { - "Name": "8g", - "RegionID": 8, - "HostName": "derp8g.tailscale.com", - "IPv4": "176.58.92.254", - "IPv6": "2a00:dd80:3a::ed", - "CanPort80": true - }, - { - "Name": "8e", - "RegionID": 8, - "HostName": "derp8e.tailscale.com", - "IPv4": "176.58.92.144", - "IPv6": "2a00:dd80:3a::b33", - "CanPort80": true - } - ] - }, - "9": { - "RegionID": 9, - "RegionCode": "dfw", - "RegionName": "Dallas", - "Latitude": 32.779167, - "Longitude": -96.808889, - "Nodes": [ - { - "Name": "9e", - "RegionID": 9, - "HostName": "derp9e.tailscale.com", - "IPv4": "192.73.248.83", - "IPv6": "2607:f740:100::359", - "CanPort80": true - }, - { - "Name": "9f", - "RegionID": 9, - "HostName": "derp9f.tailscale.com", - "IPv4": "209.177.156.197", - "IPv6": "2607:f740:100::cad", - "CanPort80": true - }, - { - "Name": "9d", - "RegionID": 9, - "HostName": "derp9d.tailscale.com", - "IPv4": "209.177.156.94", - "IPv6": "2607:f740:100::c05", - "CanPort80": true - } - ] - } - } - }, - "DisplayMessages": null, - "TKAEnabled": false, - "TKAHead": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", - "Domain": "kratail2tid@passkey", - "DomainAuditLogID": "", - "UserProfiles": { - "7489538288452506": { - "ID": 7489538288452506, - "LoginName": "subnet-router.tail78f774.ts.net", - "DisplayName": "subnet-router" - } - } + "PacketFilterRules": 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.124.195.93": { - "peer_name": "exit-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-client/tailscaled.sock whois --json 100.124.195.93", - "response": null - }, - "100.116.18.24": { - "peer_name": "exit-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-client/tailscaled.sock whois --json 100.116.18.24", - "response": null - }, - "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.107.162.14": { - "peer_name": "group-a-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-client/tailscaled.sock whois --json 100.107.162.14", - "response": null - }, - "100.77.135.18": { - "peer_name": "group-b-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-client/tailscaled.sock whois --json 100.77.135.18", - "response": null - }, - "100.105.127.107": { - "peer_name": "multi-exit-router", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-client/tailscaled.sock whois --json 100.105.127.107", - "response": null - }, - "100.109.43.124": { - "peer_name": "router-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-client/tailscaled.sock whois --json 100.109.43.124", - "response": null - }, - "100.65.172.123": { - "peer_name": "router-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-client/tailscaled.sock whois --json 100.65.172.123", - "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 - } - }, "netmap": { - "SelfNode": { - "ID": 4031348162889210, - "StableID": "nf7BTTgoUY11CNTRL", - "Name": "tagged-client.tail78f774.ts.net.", - "User": 4031348162889210, - "Key": "nodekey:3011e53353e49142ea56ae11f81e0dceae0d667093d04ee086dcb1e9c5d3c844", - "DiscoKey": "discokey:64af337a7e8b61dce500da3b8f7d0a95fc6fe0e57c2f9e57b9b484a9b4acbe1e", - "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:47143", "10.65.0.27:47143", "172.17.0.1:47143"], - "Hostinfo": { - "Hostname": "tagged-client", - "RequestTags": ["tag:client"], - "Services": [ - { "Proto": "peerapi4", "Port": 41378 }, - { "Proto": "peerapi6", "Port": 41378 }, - { "Proto": "peerapi-dns-proxy", "Port": 1 } - ] - }, - "Created": "2026-02-23T00:13:11.017324028Z", - "Tags": ["tag:client"], - "MachineAuthorized": true, - "CapMap": { - "https://tailscale.com/cap/file-sharing": null, - "https://tailscale.com/cap/is-owner": null, - "https://tailscale.com/cap/ssh": null, - "https://tailscale.com/cap/tailnet-lock": null, - "probe-udp-lifetime": null, - "ssh-behavior-v1": null, - "ssh-env-vars": null, - "store-appc-routes": null, - "tailnet-display-name": ["kratail2tid@passkey"] - }, - "ComputedName": "tagged-client", - "ComputedNameWithHost": "tagged-client" - }, - "AllCaps": [ - "probe-udp-lifetime", - "store-appc-routes", - "ssh-env-vars", - "tailnet-display-name", - "https://tailscale.com/cap/file-sharing", - "ssh-behavior-v1", - "https://tailscale.com/cap/tailnet-lock", - "https://tailscale.com/cap/ssh", - "https://tailscale.com/cap/is-owner" - ], - "NodeKey": "nodekey:3011e53353e49142ea56ae11f81e0dceae0d667093d04ee086dcb1e9c5d3c844", - "MachineKey": "mkey:92af46ce21e67878315fe620545c207854ab6cec2d03adc106c50f64f9692711", "Peers": [], - "DNS": { - "Routes": { - "tail78f774.ts.net.": null, - "ts.net.": [{ "Addr": "199.247.155.53" }, { "Addr": "2620:111:8007::53" }] - }, - "Domains": ["tail78f774.ts.net"], - "Proxied": true, - "ExitNodeFilteredSet": [".ts.net", ".tailscale.net"] - }, - "PacketFilter": [], - "PacketFilterRules": null, - "SSHPolicy": { "rules": [] }, - "CollectServices": false, - "DERPMap": { - "Regions": { - "1": { - "RegionID": 1, - "RegionCode": "nyc", - "RegionName": "New York City", - "Latitude": 40.7128, - "Longitude": -74.006, - "Nodes": [ - { - "Name": "1h", - "RegionID": 1, - "HostName": "derp1h.tailscale.com", - "IPv4": "199.38.181.93", - "IPv6": "2607:f740:f::afd", - "CanPort80": true - }, - { - "Name": "1g", - "RegionID": 1, - "HostName": "derp1g.tailscale.com", - "IPv4": "209.177.145.120", - "IPv6": "2607:f740:f::3eb", - "CanPort80": true - }, - { - "Name": "1i", - "RegionID": 1, - "HostName": "derp1i.tailscale.com", - "IPv4": "199.38.181.103", - "IPv6": "2607:f740:f::e19", - "CanPort80": true - }, - { - "Name": "1f", - "RegionID": 1, - "HostName": "derp1f.tailscale.com", - "IPv4": "199.38.181.104", - "IPv6": "2607:f740:f::bc", - "CanPort80": true - } - ] - }, - "10": { - "RegionID": 10, - "RegionCode": "sea", - "RegionName": "Seattle", - "Latitude": 47.609722, - "Longitude": -122.333056, - "Nodes": [ - { - "Name": "10c", - "RegionID": 10, - "HostName": "derp10c.tailscale.com", - "IPv4": "192.73.240.121", - "IPv6": "2607:f740:14::40c", - "CanPort80": true - }, - { - "Name": "10d", - "RegionID": 10, - "HostName": "derp10d.tailscale.com", - "IPv4": "192.73.240.132", - "IPv6": "2607:f740:14::500", - "CanPort80": true - }, - { - "Name": "10b", - "RegionID": 10, - "HostName": "derp10b.tailscale.com", - "IPv4": "192.73.240.161", - "IPv6": "2607:f740:14::61c", - "CanPort80": true - } - ] - }, - "11": { - "RegionID": 11, - "RegionCode": "sao", - "RegionName": "São Paulo", - "Latitude": -23.55, - "Longitude": -46.633333, - "Nodes": [ - { - "Name": "11f", - "RegionID": 11, - "HostName": "derp11f.tailscale.com", - "IPv4": "172.237.61.197", - "IPv6": "2600:3c0d::2000:3bff:fe44:6166", - "CanPort80": true - }, - { - "Name": "11g", - "RegionID": 11, - "HostName": "derp11g.tailscale.com", - "IPv4": "172.237.61.190", - "IPv6": "2600:3c0d::2000:62ff:febe:2e67", - "CanPort80": true - }, - { - "Name": "11e", - "RegionID": 11, - "HostName": "derp11e.tailscale.com", - "IPv4": "172.237.61.194", - "IPv6": "2600:3c0d::2000:d2ff:fe43:1790", - "CanPort80": true - } - ] - }, - "12": { - "RegionID": 12, - "RegionCode": "ord", - "RegionName": "Chicago", - "Latitude": 41.881944, - "Longitude": -87.627778, - "Nodes": [ - { - "Name": "12e", - "RegionID": 12, - "HostName": "derp12e.tailscale.com", - "IPv4": "209.177.158.15", - "IPv6": "2607:f740:e::b17", - "CanPort80": true - }, - { - "Name": "12f", - "RegionID": 12, - "HostName": "derp12f.tailscale.com", - "IPv4": "199.38.182.118", - "IPv6": "2607:f740:e::4c8", - "CanPort80": true - }, - { - "Name": "12d", - "RegionID": 12, - "HostName": "derp12d.tailscale.com", - "IPv4": "209.177.158.246", - "IPv6": "2607:f740:e::811", - "CanPort80": true - } - ] - }, - "13": { - "RegionID": 13, - "RegionCode": "den", - "RegionName": "Denver", - "Latitude": 39.7392, - "Longitude": -104.9849, - "Nodes": [ - { - "Name": "13c", - "RegionID": 13, - "HostName": "derp13c.tailscale.com", - "IPv4": "192.73.242.28", - "IPv6": "2607:f740:16::5c", - "CanPort80": true - }, - { - "Name": "13d", - "RegionID": 13, - "HostName": "derp13d.tailscale.com", - "IPv4": "192.73.242.204", - "IPv6": "2607:f740:16::c23", - "CanPort80": true - }, - { - "Name": "13b", - "RegionID": 13, - "HostName": "derp13b.tailscale.com", - "IPv4": "192.73.242.187", - "IPv6": "2607:f740:16::640", - "CanPort80": true - } - ] - }, - "14": { - "RegionID": 14, - "RegionCode": "ams", - "RegionName": "Amsterdam", - "Latitude": 52.372778, - "Longitude": 4.893611, - "Nodes": [ - { - "Name": "14c", - "RegionID": 14, - "HostName": "derp14c.tailscale.com", - "IPv4": "176.58.93.147", - "IPv6": "2a00:dd80:3c::b09", - "CanPort80": true - }, - { - "Name": "14d", - "RegionID": 14, - "HostName": "derp14d.tailscale.com", - "IPv4": "176.58.93.154", - "IPv6": "2a00:dd80:3c::3d5", - "CanPort80": true - }, - { - "Name": "14b", - "RegionID": 14, - "HostName": "derp14b.tailscale.com", - "IPv4": "176.58.93.248", - "IPv6": "2a00:dd80:3c::807", - "CanPort80": true - } - ] - }, - "15": { - "RegionID": 15, - "RegionCode": "jnb", - "RegionName": "Johannesburg", - "Latitude": -26.204444, - "Longitude": 28.045556, - "Nodes": [ - { - "Name": "15c", - "RegionID": 15, - "HostName": "derp15c.tailscale.com", - "IPv4": "102.67.165.185", - "IPv6": "2c0f:edb0:0:10::b59", - "CanPort80": true - }, - { - "Name": "15d", - "RegionID": 15, - "HostName": "derp15d.tailscale.com", - "IPv4": "102.67.165.36", - "IPv6": "2c0f:edb0:0:10::599", - "CanPort80": true - }, - { - "Name": "15b", - "RegionID": 15, - "HostName": "derp15b.tailscale.com", - "IPv4": "102.67.165.90", - "IPv6": "2c0f:edb0:0:10::963", - "CanPort80": true - } - ] - }, - "16": { - "RegionID": 16, - "RegionCode": "mia", - "RegionName": "Miami", - "Latitude": 25.78, - "Longitude": -80.21, - "Nodes": [ - { - "Name": "16c", - "RegionID": 16, - "HostName": "derp16c.tailscale.com", - "IPv4": "192.73.243.229", - "IPv6": "2607:f740:17::4e4", - "CanPort80": true - }, - { - "Name": "16d", - "RegionID": 16, - "HostName": "derp16d.tailscale.com", - "IPv4": "192.73.243.141", - "IPv6": "2607:f740:17::475", - "CanPort80": true - }, - { - "Name": "16b", - "RegionID": 16, - "HostName": "derp16b.tailscale.com", - "IPv4": "192.73.243.135", - "IPv6": "2607:f740:17::476", - "CanPort80": true - } - ] - }, - "17": { - "RegionID": 17, - "RegionCode": "lax", - "RegionName": "Los Angeles", - "Latitude": 34.05, - "Longitude": -118.25, - "Nodes": [ - { - "Name": "17c", - "RegionID": 17, - "HostName": "derp17c.tailscale.com", - "IPv4": "208.111.40.12", - "IPv6": "2607:f740:c::10", - "CanPort80": true - }, - { - "Name": "17d", - "RegionID": 17, - "HostName": "derp17d.tailscale.com", - "IPv4": "208.111.40.216", - "IPv6": "2607:f740:c::e1b", - "CanPort80": true - }, - { - "Name": "17b", - "RegionID": 17, - "HostName": "derp17b.tailscale.com", - "IPv4": "192.73.244.245", - "IPv6": "2607:f740:c::646", - "CanPort80": true - } - ] - }, - "18": { - "RegionID": 18, - "RegionCode": "par", - "RegionName": "Paris", - "Latitude": 48.856667, - "Longitude": 2.352222, - "Nodes": [ - { - "Name": "18c", - "RegionID": 18, - "HostName": "derp18c.tailscale.com", - "IPv4": "176.58.90.207", - "IPv6": "2a00:dd80:3e::c19", - "CanPort80": true - }, - { - "Name": "18d", - "RegionID": 18, - "HostName": "derp18d.tailscale.com", - "IPv4": "176.58.90.104", - "IPv6": "2a00:dd80:3e::f2e", - "CanPort80": true - }, - { - "Name": "18b", - "RegionID": 18, - "HostName": "derp18b.tailscale.com", - "IPv4": "176.58.90.147", - "IPv6": "2a00:dd80:3e::363", - "CanPort80": true - } - ] - }, - "19": { - "RegionID": 19, - "RegionCode": "mad", - "RegionName": "Madrid", - "Latitude": 40.416944, - "Longitude": -3.703333, - "Nodes": [ - { - "Name": "19c", - "RegionID": 19, - "HostName": "derp19c.tailscale.com", - "IPv4": "45.159.97.61", - "IPv6": "2a00:dd80:14:10::20", - "CanPort80": true - }, - { - "Name": "19d", - "RegionID": 19, - "HostName": "derp19d.tailscale.com", - "IPv4": "45.159.97.233", - "IPv6": "2a00:dd80:14:10::34a", - "CanPort80": true - }, - { - "Name": "19b", - "RegionID": 19, - "HostName": "derp19b.tailscale.com", - "IPv4": "45.159.97.144", - "IPv6": "2a00:dd80:14:10::335", - "CanPort80": true - } - ] - }, - "2": { - "RegionID": 2, - "RegionCode": "sfo", - "RegionName": "San Francisco", - "Latitude": 37.7775, - "Longitude": -122.416389, - "Nodes": [ - { - "Name": "2e", - "RegionID": 2, - "HostName": "derp2e.tailscale.com", - "IPv4": "192.73.252.134", - "IPv6": "2607:f740:0:3f::44c", - "CanPort80": true - }, - { - "Name": "2f", - "RegionID": 2, - "HostName": "derp2f.tailscale.com", - "IPv4": "208.111.34.178", - "IPv6": "2607:f740:0:3f::f4", - "CanPort80": true - }, - { - "Name": "2d", - "RegionID": 2, - "HostName": "derp2d.tailscale.com", - "IPv4": "192.73.252.65", - "IPv6": "2607:f740:0:3f::287", - "CanPort80": true - } - ] - }, - "20": { - "RegionID": 20, - "RegionCode": "hkg", - "RegionName": "Hong Kong", - "Latitude": 22.3193, - "Longitude": 114.1694, - "Nodes": [ - { - "Name": "20c", - "RegionID": 20, - "HostName": "derp20c.tailscale.com", - "IPv4": "205.147.105.30", - "IPv6": "2403:2500:8000:1::5fb", - "CanPort80": true - }, - { - "Name": "20d", - "RegionID": 20, - "HostName": "derp20d.tailscale.com", - "IPv4": "205.147.105.78", - "IPv6": "2403:2500:8000:1::e9a", - "CanPort80": true - }, - { - "Name": "20b", - "RegionID": 20, - "HostName": "derp20b.tailscale.com", - "IPv4": "103.6.84.152", - "IPv6": "2403:2500:8000:1::ef6", - "CanPort80": true - } - ] - }, - "21": { - "RegionID": 21, - "RegionCode": "tor", - "RegionName": "Toronto", - "Latitude": 43.741667, - "Longitude": -79.373333, - "Nodes": [ - { - "Name": "21c", - "RegionID": 21, - "HostName": "derp21c.tailscale.com", - "IPv4": "162.248.221.215", - "IPv6": "2607:f740:50::f10", - "CanPort80": true - }, - { - "Name": "21d", - "RegionID": 21, - "HostName": "derp21d.tailscale.com", - "IPv4": "162.248.221.248", - "IPv6": "2607:f740:50::ca4", - "CanPort80": true - }, - { - "Name": "21b", - "RegionID": 21, - "HostName": "derp21b.tailscale.com", - "IPv4": "162.248.221.199", - "IPv6": "2607:f740:50::1d1", - "CanPort80": true - } - ] - }, - "22": { - "RegionID": 22, - "RegionCode": "waw", - "RegionName": "Warsaw", - "Latitude": 52.23, - "Longitude": 21.011111, - "Nodes": [ - { - "Name": "22c", - "RegionID": 22, - "HostName": "derp22c.tailscale.com", - "IPv4": "45.159.98.253", - "IPv6": "2a00:dd80:40:100::3f", - "CanPort80": true - }, - { - "Name": "22d", - "RegionID": 22, - "HostName": "derp22d.tailscale.com", - "IPv4": "45.159.98.145", - "IPv6": "2a00:dd80:40:100::211", - "CanPort80": true - }, - { - "Name": "22b", - "RegionID": 22, - "HostName": "derp22b.tailscale.com", - "IPv4": "45.159.98.196", - "IPv6": "2a00:dd80:40:100::316", - "CanPort80": true - } - ] - }, - "23": { - "RegionID": 23, - "RegionCode": "dbi", - "RegionName": "Dubai", - "Latitude": 25.263056, - "Longitude": 55.297222, - "Nodes": [ - { - "Name": "23c", - "RegionID": 23, - "HostName": "derp23c.tailscale.com", - "IPv4": "185.34.3.207", - "IPv6": "2a00:dd80:3f:100::a50", - "CanPort80": true - }, - { - "Name": "23d", - "RegionID": 23, - "HostName": "derp23d.tailscale.com", - "IPv4": "185.34.3.75", - "IPv6": "2a00:dd80:3f:100::97e", - "CanPort80": true - }, - { - "Name": "23b", - "RegionID": 23, - "HostName": "derp23b.tailscale.com", - "IPv4": "185.34.3.232", - "IPv6": "2a00:dd80:3f:100::76f", - "CanPort80": true - } - ] - }, - "24": { - "RegionID": 24, - "RegionCode": "hnl", - "RegionName": "Honolulu", - "Latitude": 21.306944, - "Longitude": -157.858333, - "Nodes": [ - { - "Name": "24c", - "RegionID": 24, - "HostName": "derp24c.tailscale.com", - "IPv4": "208.83.233.233", - "IPv6": "2001:19f0:c000:c591:5400:04ff:fe26:2c5f", - "CanPort80": true - }, - { - "Name": "24d", - "RegionID": 24, - "HostName": "derp24d.tailscale.com", - "IPv4": "208.72.155.133", - "IPv6": "2001:19f0:c000:c564:5400:04ff:fe26:2ba8", - "CanPort80": true - }, - { - "Name": "24b", - "RegionID": 24, - "HostName": "derp24b.tailscale.com", - "IPv4": "208.83.234.151", - "IPv6": "2001:19f0:c000:c586:5400:04ff:fe26:2ba6", - "CanPort80": true - } - ] - }, - "25": { - "RegionID": 25, - "RegionCode": "nai", - "RegionName": "Nairobi", - "Latitude": -1.286389, - "Longitude": 36.817222, - "Nodes": [ - { - "Name": "25c", - "RegionID": 25, - "HostName": "derp25c.tailscale.com", - "IPv4": "102.67.167.37", - "IPv6": "2c0f:edb0:2000:1::2c7", - "CanPort80": true - }, - { - "Name": "25d", - "RegionID": 25, - "HostName": "derp25d.tailscale.com", - "IPv4": "102.67.167.188", - "IPv6": "2c0f:edb0:2000:1::188", - "CanPort80": true - }, - { - "Name": "25b", - "RegionID": 25, - "HostName": "derp25b.tailscale.com", - "IPv4": "102.67.167.245", - "IPv6": "2c0f:edb0:2000:1::2e9", - "CanPort80": true - } - ] - }, - "26": { - "RegionID": 26, - "RegionCode": "nue", - "RegionName": "Nuremberg", - "Latitude": 49.453889, - "Longitude": 11.0775, - "Nodes": [ - { - "Name": "26c", - "RegionID": 26, - "HostName": "derp26c.tailscale.com", - "IPv4": "49.12.193.137", - "IPv6": "2a01:4f8:1c1c:5c70::1", - "CanPort80": true - }, - { - "Name": "26d", - "RegionID": 26, - "HostName": "derp26d.tailscale.com", - "IPv4": "49.13.204.141", - "IPv6": "2a01:4f8:1c0c:7d06::1", - "CanPort80": true - }, - { - "Name": "26b", - "RegionID": 26, - "HostName": "derp26b.tailscale.com", - "IPv4": "167.235.72.200", - "IPv6": "2a01:4f8:1c1c:47b6::1", - "CanPort80": true - } - ] - }, - "27": { - "RegionID": 27, - "RegionCode": "iad", - "RegionName": "Ashburn", - "Latitude": 39.03, - "Longitude": -77.471111, - "Nodes": [ - { - "Name": "27d", - "RegionID": 27, - "HostName": "derp27d.tailscale.com", - "IPv4": "178.156.152.106", - "IPv6": "2a01:4ff:f0:3c8e::1", - "CanPort80": true - }, - { - "Name": "27c", - "RegionID": 27, - "HostName": "derp27c.tailscale.com", - "IPv4": "178.156.152.91", - "IPv6": "2a01:4ff:f0:3913::1", - "CanPort80": true - }, - { - "Name": "27e", - "RegionID": 27, - "HostName": "derp27e.tailscale.com", - "IPv4": "178.156.134.232", - "IPv6": "2a01:4ff:f0:28d4::1", - "CanPort80": true - }, - { - "Name": "27b", - "RegionID": 27, - "HostName": "derp27b.tailscale.com", - "IPv4": "5.161.218.233", - "IPv6": "2a01:4ff:f0:3db9::1", - "CanPort80": true - } - ] - }, - "28": { - "RegionID": 28, - "RegionCode": "hel", - "RegionName": "Helsinki", - "Latitude": 60.170833, - "Longitude": 24.9375, - "Nodes": [ - { - "Name": "28c", - "RegionID": 28, - "HostName": "derp28c.tailscale.com", - "IPv4": "95.217.2.165", - "IPv6": "2a01:4f9:c012:cd74::1", - "CanPort80": true - }, - { - "Name": "28d", - "RegionID": 28, - "HostName": "derp28d.tailscale.com", - "IPv4": "157.180.28.32", - "IPv6": "2a01:4f9:c012:2e5b::1", - "CanPort80": true - }, - { - "Name": "28b", - "RegionID": 28, - "HostName": "derp28b.tailscale.com", - "IPv4": "65.109.143.62", - "IPv6": "2a01:4f9:c012:d55c::1", - "CanPort80": true - } - ] - }, - "3": { - "RegionID": 3, - "RegionCode": "sin", - "RegionName": "Singapore", - "Latitude": 1.3521, - "Longitude": 103.8198, - "Nodes": [ - { - "Name": "3g", - "RegionID": 3, - "HostName": "derp3g.tailscale.com", - "IPv4": "172.237.72.79", - "IPv6": "2600:3c15::2000:adff:fe08:6fab", - "CanPort80": true - }, - { - "Name": "3f", - "RegionID": 3, - "HostName": "derp3f.tailscale.com", - "IPv4": "172.237.72.8", - "IPv6": "2600:3c15::2000:53ff:fe48:a668", - "CanPort80": true - }, - { - "Name": "3h", - "RegionID": 3, - "HostName": "derp3h.tailscale.com", - "IPv4": "172.237.66.30", - "IPv6": "2600:3c15::2000:3dff:fe44:50aa", - "CanPort80": true - }, - { - "Name": "3e", - "RegionID": 3, - "HostName": "derp3e.tailscale.com", - "IPv4": "172.237.72.43", - "IPv6": "2600:3c15::2000:6cff:fee4:d799", - "CanPort80": true - } - ] - }, - "4": { - "RegionID": 4, - "RegionCode": "fra", - "RegionName": "Frankfurt", - "Latitude": 50.1109, - "Longitude": 8.6821, - "Nodes": [ - { - "Name": "4h", - "RegionID": 4, - "HostName": "derp4h.tailscale.com", - "IPv4": "185.40.234.77", - "IPv6": "2a00:dd80:20::bcf", - "CanPort80": true - }, - { - "Name": "4g", - "RegionID": 4, - "HostName": "derp4g.tailscale.com", - "IPv4": "185.40.234.113", - "IPv6": "2a00:dd80:20::8f", - "CanPort80": true - }, - { - "Name": "4i", - "RegionID": 4, - "HostName": "derp4i.tailscale.com", - "IPv4": "185.40.234.53", - "IPv6": "2a00:dd80:20::8a6", - "CanPort80": true - }, - { - "Name": "4f", - "RegionID": 4, - "HostName": "derp4f.tailscale.com", - "IPv4": "185.40.234.219", - "IPv6": "2a00:dd80:20::a25", - "CanPort80": true - } - ] - }, - "5": { - "RegionID": 5, - "RegionCode": "syd", - "RegionName": "Sydney", - "Latitude": -33.867778, - "Longitude": 151.21, - "Nodes": [ - { - "Name": "5f", - "RegionID": 5, - "HostName": "derp5f.tailscale.com", - "IPv4": "172.105.166.103", - "IPv6": "2400:8907::2000:ccff:fe1f:80da", - "CanPort80": true - }, - { - "Name": "5g", - "RegionID": 5, - "HostName": "derp5g.tailscale.com", - "IPv4": "172.105.169.57", - "IPv6": "2400:8907::2000:2fff:fea7:57f4", - "CanPort80": true - }, - { - "Name": "5e", - "RegionID": 5, - "HostName": "derp5e.tailscale.com", - "IPv4": "172.105.179.230", - "IPv6": "2400:8907::2000:ceff:fe8d:4f4e", - "CanPort80": true - } - ] - }, - "6": { - "RegionID": 6, - "RegionCode": "blr", - "RegionName": "Bengaluru", - "Latitude": 12.9716, - "Longitude": 77.5946, - "Nodes": [ - { - "Name": "6a", - "RegionID": 6, - "HostName": "derp6.tailscale.com", - "IPv4": "68.183.90.120", - "IPv6": "2400:6180:100:d0::982:d001", - "CanPort80": true - } - ] - }, - "7": { - "RegionID": 7, - "RegionCode": "tok", - "RegionName": "Tokyo", - "Latitude": 35.6764, - "Longitude": 139.65, - "Nodes": [ - { - "Name": "7g", - "RegionID": 7, - "HostName": "derp7g.tailscale.com", - "IPv4": "172.238.6.179", - "IPv6": "2600:3c18::2000:3fff:fe80:3ebd", - "CanPort80": true - }, - { - "Name": "7f", - "RegionID": 7, - "HostName": "derp7f.tailscale.com", - "IPv4": "172.238.6.34", - "IPv6": "2600:3c18::2000:acff:fe8e:3ed5", - "CanPort80": true - }, - { - "Name": "7h", - "RegionID": 7, - "HostName": "derp7h.tailscale.com", - "IPv4": "172.237.28.183", - "IPv6": "2600:3c18::2000:b1ff:fea9:4560", - "CanPort80": true - }, - { - "Name": "7e", - "RegionID": 7, - "HostName": "derp7e.tailscale.com", - "IPv4": "172.238.6.180", - "IPv6": "2600:3c18::2000:60ff:fe0f:6e83", - "STUNOnly": true, - "CanPort80": true - } - ] - }, - "8": { - "RegionID": 8, - "RegionCode": "lhr", - "RegionName": "London", - "Latitude": 51.5072, - "Longitude": 0.1276, - "Nodes": [ - { - "Name": "8f", - "RegionID": 8, - "HostName": "derp8f.tailscale.com", - "IPv4": "176.58.88.183", - "IPv6": "2a00:dd80:3a::dfa", - "CanPort80": true - }, - { - "Name": "8g", - "RegionID": 8, - "HostName": "derp8g.tailscale.com", - "IPv4": "176.58.92.254", - "IPv6": "2a00:dd80:3a::ed", - "CanPort80": true - }, - { - "Name": "8e", - "RegionID": 8, - "HostName": "derp8e.tailscale.com", - "IPv4": "176.58.92.144", - "IPv6": "2a00:dd80:3a::b33", - "CanPort80": true - } - ] - }, - "9": { - "RegionID": 9, - "RegionCode": "dfw", - "RegionName": "Dallas", - "Latitude": 32.779167, - "Longitude": -96.808889, - "Nodes": [ - { - "Name": "9e", - "RegionID": 9, - "HostName": "derp9e.tailscale.com", - "IPv4": "192.73.248.83", - "IPv6": "2607:f740:100::359", - "CanPort80": true - }, - { - "Name": "9f", - "RegionID": 9, - "HostName": "derp9f.tailscale.com", - "IPv4": "209.177.156.197", - "IPv6": "2607:f740:100::cad", - "CanPort80": true - }, - { - "Name": "9d", - "RegionID": 9, - "HostName": "derp9d.tailscale.com", - "IPv4": "209.177.156.94", - "IPv6": "2607:f740:100::c05", - "CanPort80": true - } - ] - } - } - }, - "DisplayMessages": null, - "TKAEnabled": false, - "TKAHead": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", - "Domain": "kratail2tid@passkey", - "DomainAuditLogID": "", - "UserProfiles": { - "4031348162889210": { - "ID": 4031348162889210, - "LoginName": "tagged-client.tail78f774.ts.net", - "DisplayName": "tagged-client" - } - } + "PacketFilterRules": 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.124.195.93": { - "peer_name": "exit-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-prod/tailscaled.sock whois --json 100.124.195.93", - "response": null - }, - "100.116.18.24": { - "peer_name": "exit-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-prod/tailscaled.sock whois --json 100.116.18.24", - "response": null - }, - "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.107.162.14": { - "peer_name": "group-a-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-prod/tailscaled.sock whois --json 100.107.162.14", - "response": null - }, - "100.77.135.18": { - "peer_name": "group-b-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-prod/tailscaled.sock whois --json 100.77.135.18", - "response": null - }, - "100.105.127.107": { - "peer_name": "multi-exit-router", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-prod/tailscaled.sock whois --json 100.105.127.107", - "response": null - }, - "100.109.43.124": { - "peer_name": "router-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-prod/tailscaled.sock whois --json 100.109.43.124", - "response": null - }, - "100.65.172.123": { - "peer_name": "router-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-prod/tailscaled.sock whois --json 100.65.172.123", - "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 - } - }, "netmap": { - "SelfNode": { - "ID": 301794218943819, - "StableID": "neJag6dgM311CNTRL", - "Name": "tagged-prod.tail78f774.ts.net.", - "User": 301794218943819, - "Key": "nodekey:54c79503322a5d0a9701ce19d11963cfff9c05667ac06ef976af86275ba7080e", - "DiscoKey": "discokey:5e4985009b42b7c82ffb2cb5fa735a90f967f6b3f886b71268ebbeffa324556b", - "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:46164", "10.65.0.27:46164", "172.17.0.1:46164"], - "Hostinfo": { - "Hostname": "tagged-prod", - "Services": [ - { "Proto": "peerapi4", "Port": 37678 }, - { "Proto": "peerapi6", "Port": 37678 }, - { "Proto": "peerapi-dns-proxy", "Port": 1 } - ] - }, - "Created": "2026-02-20T14:03:12.89283153Z", - "Tags": ["tag:prod"], - "MachineAuthorized": true, - "CapMap": { - "https://tailscale.com/cap/file-sharing": null, - "https://tailscale.com/cap/is-owner": null, - "https://tailscale.com/cap/ssh": null, - "https://tailscale.com/cap/tailnet-lock": null, - "probe-udp-lifetime": null, - "ssh-behavior-v1": null, - "ssh-env-vars": null, - "store-appc-routes": null, - "tailnet-display-name": ["kratail2tid@passkey"] - }, - "ComputedName": "tagged-prod", - "ComputedNameWithHost": "tagged-prod" - }, - "AllCaps": [ - "tailnet-display-name", - "https://tailscale.com/cap/is-owner", - "ssh-env-vars", - "store-appc-routes", - "https://tailscale.com/cap/ssh", - "ssh-behavior-v1", - "https://tailscale.com/cap/tailnet-lock", - "probe-udp-lifetime", - "https://tailscale.com/cap/file-sharing" - ], - "NodeKey": "nodekey:54c79503322a5d0a9701ce19d11963cfff9c05667ac06ef976af86275ba7080e", - "MachineKey": "mkey:af805e02d1594ab20eaf3e2df5b379eec6453fa649344fcd564b7bae20e46a63", "Peers": [], - "DNS": { - "Routes": { - "tail78f774.ts.net.": null, - "ts.net.": [{ "Addr": "199.247.155.53" }, { "Addr": "2620:111:8007::53" }] - }, - "Domains": ["tail78f774.ts.net"], - "Proxied": true, - "ExitNodeFilteredSet": [".ts.net", ".tailscale.net"] - }, - "PacketFilter": [], - "PacketFilterRules": null, - "SSHPolicy": { "rules": [] }, - "CollectServices": false, - "DERPMap": { - "Regions": { - "1": { - "RegionID": 1, - "RegionCode": "nyc", - "RegionName": "New York City", - "Latitude": 40.7128, - "Longitude": -74.006, - "Nodes": [ - { - "Name": "1h", - "RegionID": 1, - "HostName": "derp1h.tailscale.com", - "IPv4": "199.38.181.93", - "IPv6": "2607:f740:f::afd", - "CanPort80": true - }, - { - "Name": "1g", - "RegionID": 1, - "HostName": "derp1g.tailscale.com", - "IPv4": "209.177.145.120", - "IPv6": "2607:f740:f::3eb", - "CanPort80": true - }, - { - "Name": "1i", - "RegionID": 1, - "HostName": "derp1i.tailscale.com", - "IPv4": "199.38.181.103", - "IPv6": "2607:f740:f::e19", - "CanPort80": true - }, - { - "Name": "1f", - "RegionID": 1, - "HostName": "derp1f.tailscale.com", - "IPv4": "199.38.181.104", - "IPv6": "2607:f740:f::bc", - "CanPort80": true - } - ] - }, - "10": { - "RegionID": 10, - "RegionCode": "sea", - "RegionName": "Seattle", - "Latitude": 47.609722, - "Longitude": -122.333056, - "Nodes": [ - { - "Name": "10c", - "RegionID": 10, - "HostName": "derp10c.tailscale.com", - "IPv4": "192.73.240.121", - "IPv6": "2607:f740:14::40c", - "CanPort80": true - }, - { - "Name": "10d", - "RegionID": 10, - "HostName": "derp10d.tailscale.com", - "IPv4": "192.73.240.132", - "IPv6": "2607:f740:14::500", - "CanPort80": true - }, - { - "Name": "10b", - "RegionID": 10, - "HostName": "derp10b.tailscale.com", - "IPv4": "192.73.240.161", - "IPv6": "2607:f740:14::61c", - "CanPort80": true - } - ] - }, - "11": { - "RegionID": 11, - "RegionCode": "sao", - "RegionName": "São Paulo", - "Latitude": -23.55, - "Longitude": -46.633333, - "Nodes": [ - { - "Name": "11f", - "RegionID": 11, - "HostName": "derp11f.tailscale.com", - "IPv4": "172.237.61.197", - "IPv6": "2600:3c0d::2000:3bff:fe44:6166", - "CanPort80": true - }, - { - "Name": "11g", - "RegionID": 11, - "HostName": "derp11g.tailscale.com", - "IPv4": "172.237.61.190", - "IPv6": "2600:3c0d::2000:62ff:febe:2e67", - "CanPort80": true - }, - { - "Name": "11e", - "RegionID": 11, - "HostName": "derp11e.tailscale.com", - "IPv4": "172.237.61.194", - "IPv6": "2600:3c0d::2000:d2ff:fe43:1790", - "CanPort80": true - } - ] - }, - "12": { - "RegionID": 12, - "RegionCode": "ord", - "RegionName": "Chicago", - "Latitude": 41.881944, - "Longitude": -87.627778, - "Nodes": [ - { - "Name": "12e", - "RegionID": 12, - "HostName": "derp12e.tailscale.com", - "IPv4": "209.177.158.15", - "IPv6": "2607:f740:e::b17", - "CanPort80": true - }, - { - "Name": "12f", - "RegionID": 12, - "HostName": "derp12f.tailscale.com", - "IPv4": "199.38.182.118", - "IPv6": "2607:f740:e::4c8", - "CanPort80": true - }, - { - "Name": "12d", - "RegionID": 12, - "HostName": "derp12d.tailscale.com", - "IPv4": "209.177.158.246", - "IPv6": "2607:f740:e::811", - "CanPort80": true - } - ] - }, - "13": { - "RegionID": 13, - "RegionCode": "den", - "RegionName": "Denver", - "Latitude": 39.7392, - "Longitude": -104.9849, - "Nodes": [ - { - "Name": "13c", - "RegionID": 13, - "HostName": "derp13c.tailscale.com", - "IPv4": "192.73.242.28", - "IPv6": "2607:f740:16::5c", - "CanPort80": true - }, - { - "Name": "13d", - "RegionID": 13, - "HostName": "derp13d.tailscale.com", - "IPv4": "192.73.242.204", - "IPv6": "2607:f740:16::c23", - "CanPort80": true - }, - { - "Name": "13b", - "RegionID": 13, - "HostName": "derp13b.tailscale.com", - "IPv4": "192.73.242.187", - "IPv6": "2607:f740:16::640", - "CanPort80": true - } - ] - }, - "14": { - "RegionID": 14, - "RegionCode": "ams", - "RegionName": "Amsterdam", - "Latitude": 52.372778, - "Longitude": 4.893611, - "Nodes": [ - { - "Name": "14c", - "RegionID": 14, - "HostName": "derp14c.tailscale.com", - "IPv4": "176.58.93.147", - "IPv6": "2a00:dd80:3c::b09", - "CanPort80": true - }, - { - "Name": "14d", - "RegionID": 14, - "HostName": "derp14d.tailscale.com", - "IPv4": "176.58.93.154", - "IPv6": "2a00:dd80:3c::3d5", - "CanPort80": true - }, - { - "Name": "14b", - "RegionID": 14, - "HostName": "derp14b.tailscale.com", - "IPv4": "176.58.93.248", - "IPv6": "2a00:dd80:3c::807", - "CanPort80": true - } - ] - }, - "15": { - "RegionID": 15, - "RegionCode": "jnb", - "RegionName": "Johannesburg", - "Latitude": -26.204444, - "Longitude": 28.045556, - "Nodes": [ - { - "Name": "15c", - "RegionID": 15, - "HostName": "derp15c.tailscale.com", - "IPv4": "102.67.165.185", - "IPv6": "2c0f:edb0:0:10::b59", - "CanPort80": true - }, - { - "Name": "15d", - "RegionID": 15, - "HostName": "derp15d.tailscale.com", - "IPv4": "102.67.165.36", - "IPv6": "2c0f:edb0:0:10::599", - "CanPort80": true - }, - { - "Name": "15b", - "RegionID": 15, - "HostName": "derp15b.tailscale.com", - "IPv4": "102.67.165.90", - "IPv6": "2c0f:edb0:0:10::963", - "CanPort80": true - } - ] - }, - "16": { - "RegionID": 16, - "RegionCode": "mia", - "RegionName": "Miami", - "Latitude": 25.78, - "Longitude": -80.21, - "Nodes": [ - { - "Name": "16c", - "RegionID": 16, - "HostName": "derp16c.tailscale.com", - "IPv4": "192.73.243.229", - "IPv6": "2607:f740:17::4e4", - "CanPort80": true - }, - { - "Name": "16d", - "RegionID": 16, - "HostName": "derp16d.tailscale.com", - "IPv4": "192.73.243.141", - "IPv6": "2607:f740:17::475", - "CanPort80": true - }, - { - "Name": "16b", - "RegionID": 16, - "HostName": "derp16b.tailscale.com", - "IPv4": "192.73.243.135", - "IPv6": "2607:f740:17::476", - "CanPort80": true - } - ] - }, - "17": { - "RegionID": 17, - "RegionCode": "lax", - "RegionName": "Los Angeles", - "Latitude": 34.05, - "Longitude": -118.25, - "Nodes": [ - { - "Name": "17c", - "RegionID": 17, - "HostName": "derp17c.tailscale.com", - "IPv4": "208.111.40.12", - "IPv6": "2607:f740:c::10", - "CanPort80": true - }, - { - "Name": "17d", - "RegionID": 17, - "HostName": "derp17d.tailscale.com", - "IPv4": "208.111.40.216", - "IPv6": "2607:f740:c::e1b", - "CanPort80": true - }, - { - "Name": "17b", - "RegionID": 17, - "HostName": "derp17b.tailscale.com", - "IPv4": "192.73.244.245", - "IPv6": "2607:f740:c::646", - "CanPort80": true - } - ] - }, - "18": { - "RegionID": 18, - "RegionCode": "par", - "RegionName": "Paris", - "Latitude": 48.856667, - "Longitude": 2.352222, - "Nodes": [ - { - "Name": "18c", - "RegionID": 18, - "HostName": "derp18c.tailscale.com", - "IPv4": "176.58.90.207", - "IPv6": "2a00:dd80:3e::c19", - "CanPort80": true - }, - { - "Name": "18d", - "RegionID": 18, - "HostName": "derp18d.tailscale.com", - "IPv4": "176.58.90.104", - "IPv6": "2a00:dd80:3e::f2e", - "CanPort80": true - }, - { - "Name": "18b", - "RegionID": 18, - "HostName": "derp18b.tailscale.com", - "IPv4": "176.58.90.147", - "IPv6": "2a00:dd80:3e::363", - "CanPort80": true - } - ] - }, - "19": { - "RegionID": 19, - "RegionCode": "mad", - "RegionName": "Madrid", - "Latitude": 40.416944, - "Longitude": -3.703333, - "Nodes": [ - { - "Name": "19c", - "RegionID": 19, - "HostName": "derp19c.tailscale.com", - "IPv4": "45.159.97.61", - "IPv6": "2a00:dd80:14:10::20", - "CanPort80": true - }, - { - "Name": "19d", - "RegionID": 19, - "HostName": "derp19d.tailscale.com", - "IPv4": "45.159.97.233", - "IPv6": "2a00:dd80:14:10::34a", - "CanPort80": true - }, - { - "Name": "19b", - "RegionID": 19, - "HostName": "derp19b.tailscale.com", - "IPv4": "45.159.97.144", - "IPv6": "2a00:dd80:14:10::335", - "CanPort80": true - } - ] - }, - "2": { - "RegionID": 2, - "RegionCode": "sfo", - "RegionName": "San Francisco", - "Latitude": 37.7775, - "Longitude": -122.416389, - "Nodes": [ - { - "Name": "2e", - "RegionID": 2, - "HostName": "derp2e.tailscale.com", - "IPv4": "192.73.252.134", - "IPv6": "2607:f740:0:3f::44c", - "CanPort80": true - }, - { - "Name": "2f", - "RegionID": 2, - "HostName": "derp2f.tailscale.com", - "IPv4": "208.111.34.178", - "IPv6": "2607:f740:0:3f::f4", - "CanPort80": true - }, - { - "Name": "2d", - "RegionID": 2, - "HostName": "derp2d.tailscale.com", - "IPv4": "192.73.252.65", - "IPv6": "2607:f740:0:3f::287", - "CanPort80": true - } - ] - }, - "20": { - "RegionID": 20, - "RegionCode": "hkg", - "RegionName": "Hong Kong", - "Latitude": 22.3193, - "Longitude": 114.1694, - "Nodes": [ - { - "Name": "20c", - "RegionID": 20, - "HostName": "derp20c.tailscale.com", - "IPv4": "205.147.105.30", - "IPv6": "2403:2500:8000:1::5fb", - "CanPort80": true - }, - { - "Name": "20d", - "RegionID": 20, - "HostName": "derp20d.tailscale.com", - "IPv4": "205.147.105.78", - "IPv6": "2403:2500:8000:1::e9a", - "CanPort80": true - }, - { - "Name": "20b", - "RegionID": 20, - "HostName": "derp20b.tailscale.com", - "IPv4": "103.6.84.152", - "IPv6": "2403:2500:8000:1::ef6", - "CanPort80": true - } - ] - }, - "21": { - "RegionID": 21, - "RegionCode": "tor", - "RegionName": "Toronto", - "Latitude": 43.741667, - "Longitude": -79.373333, - "Nodes": [ - { - "Name": "21c", - "RegionID": 21, - "HostName": "derp21c.tailscale.com", - "IPv4": "162.248.221.215", - "IPv6": "2607:f740:50::f10", - "CanPort80": true - }, - { - "Name": "21d", - "RegionID": 21, - "HostName": "derp21d.tailscale.com", - "IPv4": "162.248.221.248", - "IPv6": "2607:f740:50::ca4", - "CanPort80": true - }, - { - "Name": "21b", - "RegionID": 21, - "HostName": "derp21b.tailscale.com", - "IPv4": "162.248.221.199", - "IPv6": "2607:f740:50::1d1", - "CanPort80": true - } - ] - }, - "22": { - "RegionID": 22, - "RegionCode": "waw", - "RegionName": "Warsaw", - "Latitude": 52.23, - "Longitude": 21.011111, - "Nodes": [ - { - "Name": "22c", - "RegionID": 22, - "HostName": "derp22c.tailscale.com", - "IPv4": "45.159.98.253", - "IPv6": "2a00:dd80:40:100::3f", - "CanPort80": true - }, - { - "Name": "22d", - "RegionID": 22, - "HostName": "derp22d.tailscale.com", - "IPv4": "45.159.98.145", - "IPv6": "2a00:dd80:40:100::211", - "CanPort80": true - }, - { - "Name": "22b", - "RegionID": 22, - "HostName": "derp22b.tailscale.com", - "IPv4": "45.159.98.196", - "IPv6": "2a00:dd80:40:100::316", - "CanPort80": true - } - ] - }, - "23": { - "RegionID": 23, - "RegionCode": "dbi", - "RegionName": "Dubai", - "Latitude": 25.263056, - "Longitude": 55.297222, - "Nodes": [ - { - "Name": "23c", - "RegionID": 23, - "HostName": "derp23c.tailscale.com", - "IPv4": "185.34.3.207", - "IPv6": "2a00:dd80:3f:100::a50", - "CanPort80": true - }, - { - "Name": "23d", - "RegionID": 23, - "HostName": "derp23d.tailscale.com", - "IPv4": "185.34.3.75", - "IPv6": "2a00:dd80:3f:100::97e", - "CanPort80": true - }, - { - "Name": "23b", - "RegionID": 23, - "HostName": "derp23b.tailscale.com", - "IPv4": "185.34.3.232", - "IPv6": "2a00:dd80:3f:100::76f", - "CanPort80": true - } - ] - }, - "24": { - "RegionID": 24, - "RegionCode": "hnl", - "RegionName": "Honolulu", - "Latitude": 21.306944, - "Longitude": -157.858333, - "Nodes": [ - { - "Name": "24c", - "RegionID": 24, - "HostName": "derp24c.tailscale.com", - "IPv4": "208.83.233.233", - "IPv6": "2001:19f0:c000:c591:5400:04ff:fe26:2c5f", - "CanPort80": true - }, - { - "Name": "24d", - "RegionID": 24, - "HostName": "derp24d.tailscale.com", - "IPv4": "208.72.155.133", - "IPv6": "2001:19f0:c000:c564:5400:04ff:fe26:2ba8", - "CanPort80": true - }, - { - "Name": "24b", - "RegionID": 24, - "HostName": "derp24b.tailscale.com", - "IPv4": "208.83.234.151", - "IPv6": "2001:19f0:c000:c586:5400:04ff:fe26:2ba6", - "CanPort80": true - } - ] - }, - "25": { - "RegionID": 25, - "RegionCode": "nai", - "RegionName": "Nairobi", - "Latitude": -1.286389, - "Longitude": 36.817222, - "Nodes": [ - { - "Name": "25c", - "RegionID": 25, - "HostName": "derp25c.tailscale.com", - "IPv4": "102.67.167.37", - "IPv6": "2c0f:edb0:2000:1::2c7", - "CanPort80": true - }, - { - "Name": "25d", - "RegionID": 25, - "HostName": "derp25d.tailscale.com", - "IPv4": "102.67.167.188", - "IPv6": "2c0f:edb0:2000:1::188", - "CanPort80": true - }, - { - "Name": "25b", - "RegionID": 25, - "HostName": "derp25b.tailscale.com", - "IPv4": "102.67.167.245", - "IPv6": "2c0f:edb0:2000:1::2e9", - "CanPort80": true - } - ] - }, - "26": { - "RegionID": 26, - "RegionCode": "nue", - "RegionName": "Nuremberg", - "Latitude": 49.453889, - "Longitude": 11.0775, - "Nodes": [ - { - "Name": "26c", - "RegionID": 26, - "HostName": "derp26c.tailscale.com", - "IPv4": "49.12.193.137", - "IPv6": "2a01:4f8:1c1c:5c70::1", - "CanPort80": true - }, - { - "Name": "26d", - "RegionID": 26, - "HostName": "derp26d.tailscale.com", - "IPv4": "49.13.204.141", - "IPv6": "2a01:4f8:1c0c:7d06::1", - "CanPort80": true - }, - { - "Name": "26b", - "RegionID": 26, - "HostName": "derp26b.tailscale.com", - "IPv4": "167.235.72.200", - "IPv6": "2a01:4f8:1c1c:47b6::1", - "CanPort80": true - } - ] - }, - "27": { - "RegionID": 27, - "RegionCode": "iad", - "RegionName": "Ashburn", - "Latitude": 39.03, - "Longitude": -77.471111, - "Nodes": [ - { - "Name": "27d", - "RegionID": 27, - "HostName": "derp27d.tailscale.com", - "IPv4": "178.156.152.106", - "IPv6": "2a01:4ff:f0:3c8e::1", - "CanPort80": true - }, - { - "Name": "27c", - "RegionID": 27, - "HostName": "derp27c.tailscale.com", - "IPv4": "178.156.152.91", - "IPv6": "2a01:4ff:f0:3913::1", - "CanPort80": true - }, - { - "Name": "27e", - "RegionID": 27, - "HostName": "derp27e.tailscale.com", - "IPv4": "178.156.134.232", - "IPv6": "2a01:4ff:f0:28d4::1", - "CanPort80": true - }, - { - "Name": "27b", - "RegionID": 27, - "HostName": "derp27b.tailscale.com", - "IPv4": "5.161.218.233", - "IPv6": "2a01:4ff:f0:3db9::1", - "CanPort80": true - } - ] - }, - "28": { - "RegionID": 28, - "RegionCode": "hel", - "RegionName": "Helsinki", - "Latitude": 60.170833, - "Longitude": 24.9375, - "Nodes": [ - { - "Name": "28c", - "RegionID": 28, - "HostName": "derp28c.tailscale.com", - "IPv4": "95.217.2.165", - "IPv6": "2a01:4f9:c012:cd74::1", - "CanPort80": true - }, - { - "Name": "28d", - "RegionID": 28, - "HostName": "derp28d.tailscale.com", - "IPv4": "157.180.28.32", - "IPv6": "2a01:4f9:c012:2e5b::1", - "CanPort80": true - }, - { - "Name": "28b", - "RegionID": 28, - "HostName": "derp28b.tailscale.com", - "IPv4": "65.109.143.62", - "IPv6": "2a01:4f9:c012:d55c::1", - "CanPort80": true - } - ] - }, - "3": { - "RegionID": 3, - "RegionCode": "sin", - "RegionName": "Singapore", - "Latitude": 1.3521, - "Longitude": 103.8198, - "Nodes": [ - { - "Name": "3g", - "RegionID": 3, - "HostName": "derp3g.tailscale.com", - "IPv4": "172.237.72.79", - "IPv6": "2600:3c15::2000:adff:fe08:6fab", - "CanPort80": true - }, - { - "Name": "3f", - "RegionID": 3, - "HostName": "derp3f.tailscale.com", - "IPv4": "172.237.72.8", - "IPv6": "2600:3c15::2000:53ff:fe48:a668", - "CanPort80": true - }, - { - "Name": "3h", - "RegionID": 3, - "HostName": "derp3h.tailscale.com", - "IPv4": "172.237.66.30", - "IPv6": "2600:3c15::2000:3dff:fe44:50aa", - "CanPort80": true - }, - { - "Name": "3e", - "RegionID": 3, - "HostName": "derp3e.tailscale.com", - "IPv4": "172.237.72.43", - "IPv6": "2600:3c15::2000:6cff:fee4:d799", - "CanPort80": true - } - ] - }, - "4": { - "RegionID": 4, - "RegionCode": "fra", - "RegionName": "Frankfurt", - "Latitude": 50.1109, - "Longitude": 8.6821, - "Nodes": [ - { - "Name": "4h", - "RegionID": 4, - "HostName": "derp4h.tailscale.com", - "IPv4": "185.40.234.77", - "IPv6": "2a00:dd80:20::bcf", - "CanPort80": true - }, - { - "Name": "4g", - "RegionID": 4, - "HostName": "derp4g.tailscale.com", - "IPv4": "185.40.234.113", - "IPv6": "2a00:dd80:20::8f", - "CanPort80": true - }, - { - "Name": "4i", - "RegionID": 4, - "HostName": "derp4i.tailscale.com", - "IPv4": "185.40.234.53", - "IPv6": "2a00:dd80:20::8a6", - "CanPort80": true - }, - { - "Name": "4f", - "RegionID": 4, - "HostName": "derp4f.tailscale.com", - "IPv4": "185.40.234.219", - "IPv6": "2a00:dd80:20::a25", - "CanPort80": true - } - ] - }, - "5": { - "RegionID": 5, - "RegionCode": "syd", - "RegionName": "Sydney", - "Latitude": -33.867778, - "Longitude": 151.21, - "Nodes": [ - { - "Name": "5f", - "RegionID": 5, - "HostName": "derp5f.tailscale.com", - "IPv4": "172.105.166.103", - "IPv6": "2400:8907::2000:ccff:fe1f:80da", - "CanPort80": true - }, - { - "Name": "5g", - "RegionID": 5, - "HostName": "derp5g.tailscale.com", - "IPv4": "172.105.169.57", - "IPv6": "2400:8907::2000:2fff:fea7:57f4", - "CanPort80": true - }, - { - "Name": "5e", - "RegionID": 5, - "HostName": "derp5e.tailscale.com", - "IPv4": "172.105.179.230", - "IPv6": "2400:8907::2000:ceff:fe8d:4f4e", - "CanPort80": true - } - ] - }, - "6": { - "RegionID": 6, - "RegionCode": "blr", - "RegionName": "Bengaluru", - "Latitude": 12.9716, - "Longitude": 77.5946, - "Nodes": [ - { - "Name": "6a", - "RegionID": 6, - "HostName": "derp6.tailscale.com", - "IPv4": "68.183.90.120", - "IPv6": "2400:6180:100:d0::982:d001", - "CanPort80": true - } - ] - }, - "7": { - "RegionID": 7, - "RegionCode": "tok", - "RegionName": "Tokyo", - "Latitude": 35.6764, - "Longitude": 139.65, - "Nodes": [ - { - "Name": "7g", - "RegionID": 7, - "HostName": "derp7g.tailscale.com", - "IPv4": "172.238.6.179", - "IPv6": "2600:3c18::2000:3fff:fe80:3ebd", - "CanPort80": true - }, - { - "Name": "7f", - "RegionID": 7, - "HostName": "derp7f.tailscale.com", - "IPv4": "172.238.6.34", - "IPv6": "2600:3c18::2000:acff:fe8e:3ed5", - "CanPort80": true - }, - { - "Name": "7h", - "RegionID": 7, - "HostName": "derp7h.tailscale.com", - "IPv4": "172.237.28.183", - "IPv6": "2600:3c18::2000:b1ff:fea9:4560", - "CanPort80": true - }, - { - "Name": "7e", - "RegionID": 7, - "HostName": "derp7e.tailscale.com", - "IPv4": "172.238.6.180", - "IPv6": "2600:3c18::2000:60ff:fe0f:6e83", - "STUNOnly": true, - "CanPort80": true - } - ] - }, - "8": { - "RegionID": 8, - "RegionCode": "lhr", - "RegionName": "London", - "Latitude": 51.5072, - "Longitude": 0.1276, - "Nodes": [ - { - "Name": "8f", - "RegionID": 8, - "HostName": "derp8f.tailscale.com", - "IPv4": "176.58.88.183", - "IPv6": "2a00:dd80:3a::dfa", - "CanPort80": true - }, - { - "Name": "8g", - "RegionID": 8, - "HostName": "derp8g.tailscale.com", - "IPv4": "176.58.92.254", - "IPv6": "2a00:dd80:3a::ed", - "CanPort80": true - }, - { - "Name": "8e", - "RegionID": 8, - "HostName": "derp8e.tailscale.com", - "IPv4": "176.58.92.144", - "IPv6": "2a00:dd80:3a::b33", - "CanPort80": true - } - ] - }, - "9": { - "RegionID": 9, - "RegionCode": "dfw", - "RegionName": "Dallas", - "Latitude": 32.779167, - "Longitude": -96.808889, - "Nodes": [ - { - "Name": "9e", - "RegionID": 9, - "HostName": "derp9e.tailscale.com", - "IPv4": "192.73.248.83", - "IPv6": "2607:f740:100::359", - "CanPort80": true - }, - { - "Name": "9f", - "RegionID": 9, - "HostName": "derp9f.tailscale.com", - "IPv4": "209.177.156.197", - "IPv6": "2607:f740:100::cad", - "CanPort80": true - }, - { - "Name": "9d", - "RegionID": 9, - "HostName": "derp9d.tailscale.com", - "IPv4": "209.177.156.94", - "IPv6": "2607:f740:100::c05", - "CanPort80": true - } - ] - } - } - }, - "DisplayMessages": null, - "TKAEnabled": false, - "TKAHead": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", - "Domain": "kratail2tid@passkey", - "DomainAuditLogID": "", - "UserProfiles": { - "301794218943819": { - "ID": 301794218943819, - "LoginName": "tagged-prod.tail78f774.ts.net", - "DisplayName": "tagged-prod" - } - } + "PacketFilterRules": 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.124.195.93": { - "peer_name": "exit-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-server/tailscaled.sock whois --json 100.124.195.93", - "response": null - }, - "100.116.18.24": { - "peer_name": "exit-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-server/tailscaled.sock whois --json 100.116.18.24", - "response": null - }, - "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.107.162.14": { - "peer_name": "group-a-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-server/tailscaled.sock whois --json 100.107.162.14", - "response": null - }, - "100.77.135.18": { - "peer_name": "group-b-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-server/tailscaled.sock whois --json 100.77.135.18", - "response": null - }, - "100.105.127.107": { - "peer_name": "multi-exit-router", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-server/tailscaled.sock whois --json 100.105.127.107", - "response": null - }, - "100.109.43.124": { - "peer_name": "router-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-server/tailscaled.sock whois --json 100.109.43.124", - "response": null - }, - "100.65.172.123": { - "peer_name": "router-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-server/tailscaled.sock whois --json 100.65.172.123", - "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 - } - }, "netmap": { - "SelfNode": { - "ID": 1440249486084758, - "StableID": "nXRbBtuHFC11CNTRL", - "Name": "tagged-server.tail78f774.ts.net.", - "User": 1440249486084758, - "Key": "nodekey:7d5c34b3e8082069d0a82838165c33f8e1b5eb32c6211c2d23d4fe8fb9ec4a19", - "DiscoKey": "discokey:aa5732e314175928eff41cc8f8a7b6edd4694b7d00e420a6573ecc11a88cb203", - "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:57971", "10.65.0.27:57971", "172.17.0.1:57971"], - "Hostinfo": { - "Hostname": "tagged-server", - "Services": [ - { "Proto": "peerapi4", "Port": 46499 }, - { "Proto": "peerapi6", "Port": 46499 }, - { "Proto": "peerapi-dns-proxy", "Port": 1 } - ] - }, - "Created": "2026-01-23T10:10:26.365653609Z", - "Tags": ["tag:server"], - "MachineAuthorized": true, - "CapMap": { - "https://tailscale.com/cap/file-sharing": null, - "https://tailscale.com/cap/is-owner": null, - "https://tailscale.com/cap/ssh": null, - "https://tailscale.com/cap/tailnet-lock": null, - "probe-udp-lifetime": null, - "ssh-behavior-v1": null, - "ssh-env-vars": null, - "store-appc-routes": null, - "tailnet-display-name": ["kratail2tid@passkey"] - }, - "ComputedName": "tagged-server", - "ComputedNameWithHost": "tagged-server" - }, - "AllCaps": [ - "https://tailscale.com/cap/tailnet-lock", - "tailnet-display-name", - "https://tailscale.com/cap/ssh", - "ssh-behavior-v1", - "https://tailscale.com/cap/file-sharing", - "https://tailscale.com/cap/is-owner", - "probe-udp-lifetime", - "store-appc-routes", - "ssh-env-vars" - ], - "NodeKey": "nodekey:7d5c34b3e8082069d0a82838165c33f8e1b5eb32c6211c2d23d4fe8fb9ec4a19", - "MachineKey": "mkey:7d9c55c88bb618638f3f049b95c797f64eb0259810146d2644fef3e53acfdf6b", "Peers": [], - "DNS": { - "Routes": { - "tail78f774.ts.net.": null, - "ts.net.": [{ "Addr": "199.247.155.53" }, { "Addr": "2620:111:8007::53" }] - }, - "Domains": ["tail78f774.ts.net"], - "Proxied": true, - "ExitNodeFilteredSet": [".ts.net", ".tailscale.net"] - }, - "PacketFilter": [], - "PacketFilterRules": null, - "SSHPolicy": { "rules": [] }, - "CollectServices": false, - "DERPMap": { - "Regions": { - "1": { - "RegionID": 1, - "RegionCode": "nyc", - "RegionName": "New York City", - "Latitude": 40.7128, - "Longitude": -74.006, - "Nodes": [ - { - "Name": "1h", - "RegionID": 1, - "HostName": "derp1h.tailscale.com", - "IPv4": "199.38.181.93", - "IPv6": "2607:f740:f::afd", - "CanPort80": true - }, - { - "Name": "1g", - "RegionID": 1, - "HostName": "derp1g.tailscale.com", - "IPv4": "209.177.145.120", - "IPv6": "2607:f740:f::3eb", - "CanPort80": true - }, - { - "Name": "1i", - "RegionID": 1, - "HostName": "derp1i.tailscale.com", - "IPv4": "199.38.181.103", - "IPv6": "2607:f740:f::e19", - "CanPort80": true - }, - { - "Name": "1f", - "RegionID": 1, - "HostName": "derp1f.tailscale.com", - "IPv4": "199.38.181.104", - "IPv6": "2607:f740:f::bc", - "CanPort80": true - } - ] - }, - "10": { - "RegionID": 10, - "RegionCode": "sea", - "RegionName": "Seattle", - "Latitude": 47.609722, - "Longitude": -122.333056, - "Nodes": [ - { - "Name": "10c", - "RegionID": 10, - "HostName": "derp10c.tailscale.com", - "IPv4": "192.73.240.121", - "IPv6": "2607:f740:14::40c", - "CanPort80": true - }, - { - "Name": "10d", - "RegionID": 10, - "HostName": "derp10d.tailscale.com", - "IPv4": "192.73.240.132", - "IPv6": "2607:f740:14::500", - "CanPort80": true - }, - { - "Name": "10b", - "RegionID": 10, - "HostName": "derp10b.tailscale.com", - "IPv4": "192.73.240.161", - "IPv6": "2607:f740:14::61c", - "CanPort80": true - } - ] - }, - "11": { - "RegionID": 11, - "RegionCode": "sao", - "RegionName": "São Paulo", - "Latitude": -23.55, - "Longitude": -46.633333, - "Nodes": [ - { - "Name": "11f", - "RegionID": 11, - "HostName": "derp11f.tailscale.com", - "IPv4": "172.237.61.197", - "IPv6": "2600:3c0d::2000:3bff:fe44:6166", - "CanPort80": true - }, - { - "Name": "11g", - "RegionID": 11, - "HostName": "derp11g.tailscale.com", - "IPv4": "172.237.61.190", - "IPv6": "2600:3c0d::2000:62ff:febe:2e67", - "CanPort80": true - }, - { - "Name": "11e", - "RegionID": 11, - "HostName": "derp11e.tailscale.com", - "IPv4": "172.237.61.194", - "IPv6": "2600:3c0d::2000:d2ff:fe43:1790", - "CanPort80": true - } - ] - }, - "12": { - "RegionID": 12, - "RegionCode": "ord", - "RegionName": "Chicago", - "Latitude": 41.881944, - "Longitude": -87.627778, - "Nodes": [ - { - "Name": "12e", - "RegionID": 12, - "HostName": "derp12e.tailscale.com", - "IPv4": "209.177.158.15", - "IPv6": "2607:f740:e::b17", - "CanPort80": true - }, - { - "Name": "12f", - "RegionID": 12, - "HostName": "derp12f.tailscale.com", - "IPv4": "199.38.182.118", - "IPv6": "2607:f740:e::4c8", - "CanPort80": true - }, - { - "Name": "12d", - "RegionID": 12, - "HostName": "derp12d.tailscale.com", - "IPv4": "209.177.158.246", - "IPv6": "2607:f740:e::811", - "CanPort80": true - } - ] - }, - "13": { - "RegionID": 13, - "RegionCode": "den", - "RegionName": "Denver", - "Latitude": 39.7392, - "Longitude": -104.9849, - "Nodes": [ - { - "Name": "13c", - "RegionID": 13, - "HostName": "derp13c.tailscale.com", - "IPv4": "192.73.242.28", - "IPv6": "2607:f740:16::5c", - "CanPort80": true - }, - { - "Name": "13d", - "RegionID": 13, - "HostName": "derp13d.tailscale.com", - "IPv4": "192.73.242.204", - "IPv6": "2607:f740:16::c23", - "CanPort80": true - }, - { - "Name": "13b", - "RegionID": 13, - "HostName": "derp13b.tailscale.com", - "IPv4": "192.73.242.187", - "IPv6": "2607:f740:16::640", - "CanPort80": true - } - ] - }, - "14": { - "RegionID": 14, - "RegionCode": "ams", - "RegionName": "Amsterdam", - "Latitude": 52.372778, - "Longitude": 4.893611, - "Nodes": [ - { - "Name": "14c", - "RegionID": 14, - "HostName": "derp14c.tailscale.com", - "IPv4": "176.58.93.147", - "IPv6": "2a00:dd80:3c::b09", - "CanPort80": true - }, - { - "Name": "14d", - "RegionID": 14, - "HostName": "derp14d.tailscale.com", - "IPv4": "176.58.93.154", - "IPv6": "2a00:dd80:3c::3d5", - "CanPort80": true - }, - { - "Name": "14b", - "RegionID": 14, - "HostName": "derp14b.tailscale.com", - "IPv4": "176.58.93.248", - "IPv6": "2a00:dd80:3c::807", - "CanPort80": true - } - ] - }, - "15": { - "RegionID": 15, - "RegionCode": "jnb", - "RegionName": "Johannesburg", - "Latitude": -26.204444, - "Longitude": 28.045556, - "Nodes": [ - { - "Name": "15c", - "RegionID": 15, - "HostName": "derp15c.tailscale.com", - "IPv4": "102.67.165.185", - "IPv6": "2c0f:edb0:0:10::b59", - "CanPort80": true - }, - { - "Name": "15d", - "RegionID": 15, - "HostName": "derp15d.tailscale.com", - "IPv4": "102.67.165.36", - "IPv6": "2c0f:edb0:0:10::599", - "CanPort80": true - }, - { - "Name": "15b", - "RegionID": 15, - "HostName": "derp15b.tailscale.com", - "IPv4": "102.67.165.90", - "IPv6": "2c0f:edb0:0:10::963", - "CanPort80": true - } - ] - }, - "16": { - "RegionID": 16, - "RegionCode": "mia", - "RegionName": "Miami", - "Latitude": 25.78, - "Longitude": -80.21, - "Nodes": [ - { - "Name": "16c", - "RegionID": 16, - "HostName": "derp16c.tailscale.com", - "IPv4": "192.73.243.229", - "IPv6": "2607:f740:17::4e4", - "CanPort80": true - }, - { - "Name": "16d", - "RegionID": 16, - "HostName": "derp16d.tailscale.com", - "IPv4": "192.73.243.141", - "IPv6": "2607:f740:17::475", - "CanPort80": true - }, - { - "Name": "16b", - "RegionID": 16, - "HostName": "derp16b.tailscale.com", - "IPv4": "192.73.243.135", - "IPv6": "2607:f740:17::476", - "CanPort80": true - } - ] - }, - "17": { - "RegionID": 17, - "RegionCode": "lax", - "RegionName": "Los Angeles", - "Latitude": 34.05, - "Longitude": -118.25, - "Nodes": [ - { - "Name": "17c", - "RegionID": 17, - "HostName": "derp17c.tailscale.com", - "IPv4": "208.111.40.12", - "IPv6": "2607:f740:c::10", - "CanPort80": true - }, - { - "Name": "17d", - "RegionID": 17, - "HostName": "derp17d.tailscale.com", - "IPv4": "208.111.40.216", - "IPv6": "2607:f740:c::e1b", - "CanPort80": true - }, - { - "Name": "17b", - "RegionID": 17, - "HostName": "derp17b.tailscale.com", - "IPv4": "192.73.244.245", - "IPv6": "2607:f740:c::646", - "CanPort80": true - } - ] - }, - "18": { - "RegionID": 18, - "RegionCode": "par", - "RegionName": "Paris", - "Latitude": 48.856667, - "Longitude": 2.352222, - "Nodes": [ - { - "Name": "18c", - "RegionID": 18, - "HostName": "derp18c.tailscale.com", - "IPv4": "176.58.90.207", - "IPv6": "2a00:dd80:3e::c19", - "CanPort80": true - }, - { - "Name": "18d", - "RegionID": 18, - "HostName": "derp18d.tailscale.com", - "IPv4": "176.58.90.104", - "IPv6": "2a00:dd80:3e::f2e", - "CanPort80": true - }, - { - "Name": "18b", - "RegionID": 18, - "HostName": "derp18b.tailscale.com", - "IPv4": "176.58.90.147", - "IPv6": "2a00:dd80:3e::363", - "CanPort80": true - } - ] - }, - "19": { - "RegionID": 19, - "RegionCode": "mad", - "RegionName": "Madrid", - "Latitude": 40.416944, - "Longitude": -3.703333, - "Nodes": [ - { - "Name": "19c", - "RegionID": 19, - "HostName": "derp19c.tailscale.com", - "IPv4": "45.159.97.61", - "IPv6": "2a00:dd80:14:10::20", - "CanPort80": true - }, - { - "Name": "19d", - "RegionID": 19, - "HostName": "derp19d.tailscale.com", - "IPv4": "45.159.97.233", - "IPv6": "2a00:dd80:14:10::34a", - "CanPort80": true - }, - { - "Name": "19b", - "RegionID": 19, - "HostName": "derp19b.tailscale.com", - "IPv4": "45.159.97.144", - "IPv6": "2a00:dd80:14:10::335", - "CanPort80": true - } - ] - }, - "2": { - "RegionID": 2, - "RegionCode": "sfo", - "RegionName": "San Francisco", - "Latitude": 37.7775, - "Longitude": -122.416389, - "Nodes": [ - { - "Name": "2e", - "RegionID": 2, - "HostName": "derp2e.tailscale.com", - "IPv4": "192.73.252.134", - "IPv6": "2607:f740:0:3f::44c", - "CanPort80": true - }, - { - "Name": "2f", - "RegionID": 2, - "HostName": "derp2f.tailscale.com", - "IPv4": "208.111.34.178", - "IPv6": "2607:f740:0:3f::f4", - "CanPort80": true - }, - { - "Name": "2d", - "RegionID": 2, - "HostName": "derp2d.tailscale.com", - "IPv4": "192.73.252.65", - "IPv6": "2607:f740:0:3f::287", - "CanPort80": true - } - ] - }, - "20": { - "RegionID": 20, - "RegionCode": "hkg", - "RegionName": "Hong Kong", - "Latitude": 22.3193, - "Longitude": 114.1694, - "Nodes": [ - { - "Name": "20c", - "RegionID": 20, - "HostName": "derp20c.tailscale.com", - "IPv4": "205.147.105.30", - "IPv6": "2403:2500:8000:1::5fb", - "CanPort80": true - }, - { - "Name": "20d", - "RegionID": 20, - "HostName": "derp20d.tailscale.com", - "IPv4": "205.147.105.78", - "IPv6": "2403:2500:8000:1::e9a", - "CanPort80": true - }, - { - "Name": "20b", - "RegionID": 20, - "HostName": "derp20b.tailscale.com", - "IPv4": "103.6.84.152", - "IPv6": "2403:2500:8000:1::ef6", - "CanPort80": true - } - ] - }, - "21": { - "RegionID": 21, - "RegionCode": "tor", - "RegionName": "Toronto", - "Latitude": 43.741667, - "Longitude": -79.373333, - "Nodes": [ - { - "Name": "21c", - "RegionID": 21, - "HostName": "derp21c.tailscale.com", - "IPv4": "162.248.221.215", - "IPv6": "2607:f740:50::f10", - "CanPort80": true - }, - { - "Name": "21d", - "RegionID": 21, - "HostName": "derp21d.tailscale.com", - "IPv4": "162.248.221.248", - "IPv6": "2607:f740:50::ca4", - "CanPort80": true - }, - { - "Name": "21b", - "RegionID": 21, - "HostName": "derp21b.tailscale.com", - "IPv4": "162.248.221.199", - "IPv6": "2607:f740:50::1d1", - "CanPort80": true - } - ] - }, - "22": { - "RegionID": 22, - "RegionCode": "waw", - "RegionName": "Warsaw", - "Latitude": 52.23, - "Longitude": 21.011111, - "Nodes": [ - { - "Name": "22c", - "RegionID": 22, - "HostName": "derp22c.tailscale.com", - "IPv4": "45.159.98.253", - "IPv6": "2a00:dd80:40:100::3f", - "CanPort80": true - }, - { - "Name": "22d", - "RegionID": 22, - "HostName": "derp22d.tailscale.com", - "IPv4": "45.159.98.145", - "IPv6": "2a00:dd80:40:100::211", - "CanPort80": true - }, - { - "Name": "22b", - "RegionID": 22, - "HostName": "derp22b.tailscale.com", - "IPv4": "45.159.98.196", - "IPv6": "2a00:dd80:40:100::316", - "CanPort80": true - } - ] - }, - "23": { - "RegionID": 23, - "RegionCode": "dbi", - "RegionName": "Dubai", - "Latitude": 25.263056, - "Longitude": 55.297222, - "Nodes": [ - { - "Name": "23c", - "RegionID": 23, - "HostName": "derp23c.tailscale.com", - "IPv4": "185.34.3.207", - "IPv6": "2a00:dd80:3f:100::a50", - "CanPort80": true - }, - { - "Name": "23d", - "RegionID": 23, - "HostName": "derp23d.tailscale.com", - "IPv4": "185.34.3.75", - "IPv6": "2a00:dd80:3f:100::97e", - "CanPort80": true - }, - { - "Name": "23b", - "RegionID": 23, - "HostName": "derp23b.tailscale.com", - "IPv4": "185.34.3.232", - "IPv6": "2a00:dd80:3f:100::76f", - "CanPort80": true - } - ] - }, - "24": { - "RegionID": 24, - "RegionCode": "hnl", - "RegionName": "Honolulu", - "Latitude": 21.306944, - "Longitude": -157.858333, - "Nodes": [ - { - "Name": "24c", - "RegionID": 24, - "HostName": "derp24c.tailscale.com", - "IPv4": "208.83.233.233", - "IPv6": "2001:19f0:c000:c591:5400:04ff:fe26:2c5f", - "CanPort80": true - }, - { - "Name": "24d", - "RegionID": 24, - "HostName": "derp24d.tailscale.com", - "IPv4": "208.72.155.133", - "IPv6": "2001:19f0:c000:c564:5400:04ff:fe26:2ba8", - "CanPort80": true - }, - { - "Name": "24b", - "RegionID": 24, - "HostName": "derp24b.tailscale.com", - "IPv4": "208.83.234.151", - "IPv6": "2001:19f0:c000:c586:5400:04ff:fe26:2ba6", - "CanPort80": true - } - ] - }, - "25": { - "RegionID": 25, - "RegionCode": "nai", - "RegionName": "Nairobi", - "Latitude": -1.286389, - "Longitude": 36.817222, - "Nodes": [ - { - "Name": "25c", - "RegionID": 25, - "HostName": "derp25c.tailscale.com", - "IPv4": "102.67.167.37", - "IPv6": "2c0f:edb0:2000:1::2c7", - "CanPort80": true - }, - { - "Name": "25d", - "RegionID": 25, - "HostName": "derp25d.tailscale.com", - "IPv4": "102.67.167.188", - "IPv6": "2c0f:edb0:2000:1::188", - "CanPort80": true - }, - { - "Name": "25b", - "RegionID": 25, - "HostName": "derp25b.tailscale.com", - "IPv4": "102.67.167.245", - "IPv6": "2c0f:edb0:2000:1::2e9", - "CanPort80": true - } - ] - }, - "26": { - "RegionID": 26, - "RegionCode": "nue", - "RegionName": "Nuremberg", - "Latitude": 49.453889, - "Longitude": 11.0775, - "Nodes": [ - { - "Name": "26c", - "RegionID": 26, - "HostName": "derp26c.tailscale.com", - "IPv4": "49.12.193.137", - "IPv6": "2a01:4f8:1c1c:5c70::1", - "CanPort80": true - }, - { - "Name": "26d", - "RegionID": 26, - "HostName": "derp26d.tailscale.com", - "IPv4": "49.13.204.141", - "IPv6": "2a01:4f8:1c0c:7d06::1", - "CanPort80": true - }, - { - "Name": "26b", - "RegionID": 26, - "HostName": "derp26b.tailscale.com", - "IPv4": "167.235.72.200", - "IPv6": "2a01:4f8:1c1c:47b6::1", - "CanPort80": true - } - ] - }, - "27": { - "RegionID": 27, - "RegionCode": "iad", - "RegionName": "Ashburn", - "Latitude": 39.03, - "Longitude": -77.471111, - "Nodes": [ - { - "Name": "27d", - "RegionID": 27, - "HostName": "derp27d.tailscale.com", - "IPv4": "178.156.152.106", - "IPv6": "2a01:4ff:f0:3c8e::1", - "CanPort80": true - }, - { - "Name": "27c", - "RegionID": 27, - "HostName": "derp27c.tailscale.com", - "IPv4": "178.156.152.91", - "IPv6": "2a01:4ff:f0:3913::1", - "CanPort80": true - }, - { - "Name": "27e", - "RegionID": 27, - "HostName": "derp27e.tailscale.com", - "IPv4": "178.156.134.232", - "IPv6": "2a01:4ff:f0:28d4::1", - "CanPort80": true - }, - { - "Name": "27b", - "RegionID": 27, - "HostName": "derp27b.tailscale.com", - "IPv4": "5.161.218.233", - "IPv6": "2a01:4ff:f0:3db9::1", - "CanPort80": true - } - ] - }, - "28": { - "RegionID": 28, - "RegionCode": "hel", - "RegionName": "Helsinki", - "Latitude": 60.170833, - "Longitude": 24.9375, - "Nodes": [ - { - "Name": "28c", - "RegionID": 28, - "HostName": "derp28c.tailscale.com", - "IPv4": "95.217.2.165", - "IPv6": "2a01:4f9:c012:cd74::1", - "CanPort80": true - }, - { - "Name": "28d", - "RegionID": 28, - "HostName": "derp28d.tailscale.com", - "IPv4": "157.180.28.32", - "IPv6": "2a01:4f9:c012:2e5b::1", - "CanPort80": true - }, - { - "Name": "28b", - "RegionID": 28, - "HostName": "derp28b.tailscale.com", - "IPv4": "65.109.143.62", - "IPv6": "2a01:4f9:c012:d55c::1", - "CanPort80": true - } - ] - }, - "3": { - "RegionID": 3, - "RegionCode": "sin", - "RegionName": "Singapore", - "Latitude": 1.3521, - "Longitude": 103.8198, - "Nodes": [ - { - "Name": "3g", - "RegionID": 3, - "HostName": "derp3g.tailscale.com", - "IPv4": "172.237.72.79", - "IPv6": "2600:3c15::2000:adff:fe08:6fab", - "CanPort80": true - }, - { - "Name": "3f", - "RegionID": 3, - "HostName": "derp3f.tailscale.com", - "IPv4": "172.237.72.8", - "IPv6": "2600:3c15::2000:53ff:fe48:a668", - "CanPort80": true - }, - { - "Name": "3h", - "RegionID": 3, - "HostName": "derp3h.tailscale.com", - "IPv4": "172.237.66.30", - "IPv6": "2600:3c15::2000:3dff:fe44:50aa", - "CanPort80": true - }, - { - "Name": "3e", - "RegionID": 3, - "HostName": "derp3e.tailscale.com", - "IPv4": "172.237.72.43", - "IPv6": "2600:3c15::2000:6cff:fee4:d799", - "CanPort80": true - } - ] - }, - "4": { - "RegionID": 4, - "RegionCode": "fra", - "RegionName": "Frankfurt", - "Latitude": 50.1109, - "Longitude": 8.6821, - "Nodes": [ - { - "Name": "4h", - "RegionID": 4, - "HostName": "derp4h.tailscale.com", - "IPv4": "185.40.234.77", - "IPv6": "2a00:dd80:20::bcf", - "CanPort80": true - }, - { - "Name": "4g", - "RegionID": 4, - "HostName": "derp4g.tailscale.com", - "IPv4": "185.40.234.113", - "IPv6": "2a00:dd80:20::8f", - "CanPort80": true - }, - { - "Name": "4i", - "RegionID": 4, - "HostName": "derp4i.tailscale.com", - "IPv4": "185.40.234.53", - "IPv6": "2a00:dd80:20::8a6", - "CanPort80": true - }, - { - "Name": "4f", - "RegionID": 4, - "HostName": "derp4f.tailscale.com", - "IPv4": "185.40.234.219", - "IPv6": "2a00:dd80:20::a25", - "CanPort80": true - } - ] - }, - "5": { - "RegionID": 5, - "RegionCode": "syd", - "RegionName": "Sydney", - "Latitude": -33.867778, - "Longitude": 151.21, - "Nodes": [ - { - "Name": "5f", - "RegionID": 5, - "HostName": "derp5f.tailscale.com", - "IPv4": "172.105.166.103", - "IPv6": "2400:8907::2000:ccff:fe1f:80da", - "CanPort80": true - }, - { - "Name": "5g", - "RegionID": 5, - "HostName": "derp5g.tailscale.com", - "IPv4": "172.105.169.57", - "IPv6": "2400:8907::2000:2fff:fea7:57f4", - "CanPort80": true - }, - { - "Name": "5e", - "RegionID": 5, - "HostName": "derp5e.tailscale.com", - "IPv4": "172.105.179.230", - "IPv6": "2400:8907::2000:ceff:fe8d:4f4e", - "CanPort80": true - } - ] - }, - "6": { - "RegionID": 6, - "RegionCode": "blr", - "RegionName": "Bengaluru", - "Latitude": 12.9716, - "Longitude": 77.5946, - "Nodes": [ - { - "Name": "6a", - "RegionID": 6, - "HostName": "derp6.tailscale.com", - "IPv4": "68.183.90.120", - "IPv6": "2400:6180:100:d0::982:d001", - "CanPort80": true - } - ] - }, - "7": { - "RegionID": 7, - "RegionCode": "tok", - "RegionName": "Tokyo", - "Latitude": 35.6764, - "Longitude": 139.65, - "Nodes": [ - { - "Name": "7g", - "RegionID": 7, - "HostName": "derp7g.tailscale.com", - "IPv4": "172.238.6.179", - "IPv6": "2600:3c18::2000:3fff:fe80:3ebd", - "CanPort80": true - }, - { - "Name": "7f", - "RegionID": 7, - "HostName": "derp7f.tailscale.com", - "IPv4": "172.238.6.34", - "IPv6": "2600:3c18::2000:acff:fe8e:3ed5", - "CanPort80": true - }, - { - "Name": "7h", - "RegionID": 7, - "HostName": "derp7h.tailscale.com", - "IPv4": "172.237.28.183", - "IPv6": "2600:3c18::2000:b1ff:fea9:4560", - "CanPort80": true - }, - { - "Name": "7e", - "RegionID": 7, - "HostName": "derp7e.tailscale.com", - "IPv4": "172.238.6.180", - "IPv6": "2600:3c18::2000:60ff:fe0f:6e83", - "STUNOnly": true, - "CanPort80": true - } - ] - }, - "8": { - "RegionID": 8, - "RegionCode": "lhr", - "RegionName": "London", - "Latitude": 51.5072, - "Longitude": 0.1276, - "Nodes": [ - { - "Name": "8f", - "RegionID": 8, - "HostName": "derp8f.tailscale.com", - "IPv4": "176.58.88.183", - "IPv6": "2a00:dd80:3a::dfa", - "CanPort80": true - }, - { - "Name": "8g", - "RegionID": 8, - "HostName": "derp8g.tailscale.com", - "IPv4": "176.58.92.254", - "IPv6": "2a00:dd80:3a::ed", - "CanPort80": true - }, - { - "Name": "8e", - "RegionID": 8, - "HostName": "derp8e.tailscale.com", - "IPv4": "176.58.92.144", - "IPv6": "2a00:dd80:3a::b33", - "CanPort80": true - } - ] - }, - "9": { - "RegionID": 9, - "RegionCode": "dfw", - "RegionName": "Dallas", - "Latitude": 32.779167, - "Longitude": -96.808889, - "Nodes": [ - { - "Name": "9e", - "RegionID": 9, - "HostName": "derp9e.tailscale.com", - "IPv4": "192.73.248.83", - "IPv6": "2607:f740:100::359", - "CanPort80": true - }, - { - "Name": "9f", - "RegionID": 9, - "HostName": "derp9f.tailscale.com", - "IPv4": "209.177.156.197", - "IPv6": "2607:f740:100::cad", - "CanPort80": true - }, - { - "Name": "9d", - "RegionID": 9, - "HostName": "derp9d.tailscale.com", - "IPv4": "209.177.156.94", - "IPv6": "2607:f740:100::c05", - "CanPort80": true - } - ] - } - } - }, - "DisplayMessages": null, - "TKAEnabled": false, - "TKAHead": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", - "Domain": "kratail2tid@passkey", - "DomainAuditLogID": "", - "UserProfiles": { - "1440249486084758": { - "ID": 1440249486084758, - "LoginName": "tagged-server.tail78f774.ts.net", - "DisplayName": "tagged-server" - } - } + "PacketFilterRules": 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.124.195.93": { - "peer_name": "exit-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-kris/tailscaled.sock whois --json 100.124.195.93", - "response": null - }, - "100.116.18.24": { - "peer_name": "exit-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-kris/tailscaled.sock whois --json 100.116.18.24", - "response": null - }, - "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.107.162.14": { - "peer_name": "group-a-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-kris/tailscaled.sock whois --json 100.107.162.14", - "response": null - }, - "100.77.135.18": { - "peer_name": "group-b-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-kris/tailscaled.sock whois --json 100.77.135.18", - "response": null - }, - "100.105.127.107": { - "peer_name": "multi-exit-router", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-kris/tailscaled.sock whois --json 100.105.127.107", - "response": null - }, - "100.109.43.124": { - "peer_name": "router-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-kris/tailscaled.sock whois --json 100.109.43.124", - "response": null - }, - "100.65.172.123": { - "peer_name": "router-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-kris/tailscaled.sock whois --json 100.65.172.123", - "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 - } - }, "netmap": { - "SelfNode": { - "ID": 7728836216590060, - "StableID": "nf4dJTRQM321CNTRL", - "Name": "user-kris.tail78f774.ts.net.", - "User": 4538565228176803, - "Key": "nodekey:40d0f8f49fd519e4a4a2b7d278dcc8863254d4fb8b0219f1d1304cdd172e795f", - "KeyExpiry": "2026-08-19T14:09:34Z", - "DiscoKey": "discokey:60de987544859962048376b0950731bfa8017a7fc7df694ef376d4bb42eb9871", - "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:59717", "10.65.0.27:59717", "172.17.0.1:59717"], - "Hostinfo": { - "Hostname": "user-kris", - "Services": [ - { "Proto": "peerapi4", "Port": 40159 }, - { "Proto": "peerapi6", "Port": 40159 }, - { "Proto": "peerapi-dns-proxy", "Port": 1 } - ] - }, - "Created": "2026-02-20T14:09:34.803901523Z", - "MachineAuthorized": true, - "CapMap": { - "https://tailscale.com/cap/file-sharing": null, - "https://tailscale.com/cap/is-admin": null, - "https://tailscale.com/cap/ssh": null, - "https://tailscale.com/cap/tailnet-lock": null, - "probe-udp-lifetime": null, - "ssh-behavior-v1": null, - "ssh-env-vars": null, - "store-appc-routes": null, - "tailnet-display-name": ["kratail2tid@passkey"] - }, - "ComputedName": "user-kris", - "ComputedNameWithHost": "user-kris" - }, - "AllCaps": [ - "https://tailscale.com/cap/file-sharing", - "https://tailscale.com/cap/ssh", - "tailnet-display-name", - "https://tailscale.com/cap/tailnet-lock", - "ssh-behavior-v1", - "store-appc-routes", - "https://tailscale.com/cap/is-admin", - "probe-udp-lifetime", - "ssh-env-vars" - ], - "NodeKey": "nodekey:40d0f8f49fd519e4a4a2b7d278dcc8863254d4fb8b0219f1d1304cdd172e795f", - "MachineKey": "mkey:ff16066d907c58407972ee4a05a30386bd21bc0b420d8f9290eb70b95b3e1457", "Peers": [], - "DNS": { - "Routes": { - "tail78f774.ts.net.": null, - "ts.net.": [{ "Addr": "199.247.155.53" }, { "Addr": "2620:111:8007::53" }] - }, - "Domains": ["tail78f774.ts.net"], - "Proxied": true, - "ExitNodeFilteredSet": [".ts.net", ".tailscale.net"] - }, - "PacketFilter": [], - "PacketFilterRules": null, - "SSHPolicy": { "rules": [] }, - "CollectServices": false, - "DERPMap": { - "Regions": { - "1": { - "RegionID": 1, - "RegionCode": "nyc", - "RegionName": "New York City", - "Latitude": 40.7128, - "Longitude": -74.006, - "Nodes": [ - { - "Name": "1h", - "RegionID": 1, - "HostName": "derp1h.tailscale.com", - "IPv4": "199.38.181.93", - "IPv6": "2607:f740:f::afd", - "CanPort80": true - }, - { - "Name": "1g", - "RegionID": 1, - "HostName": "derp1g.tailscale.com", - "IPv4": "209.177.145.120", - "IPv6": "2607:f740:f::3eb", - "CanPort80": true - }, - { - "Name": "1i", - "RegionID": 1, - "HostName": "derp1i.tailscale.com", - "IPv4": "199.38.181.103", - "IPv6": "2607:f740:f::e19", - "CanPort80": true - }, - { - "Name": "1f", - "RegionID": 1, - "HostName": "derp1f.tailscale.com", - "IPv4": "199.38.181.104", - "IPv6": "2607:f740:f::bc", - "CanPort80": true - } - ] - }, - "10": { - "RegionID": 10, - "RegionCode": "sea", - "RegionName": "Seattle", - "Latitude": 47.609722, - "Longitude": -122.333056, - "Nodes": [ - { - "Name": "10c", - "RegionID": 10, - "HostName": "derp10c.tailscale.com", - "IPv4": "192.73.240.121", - "IPv6": "2607:f740:14::40c", - "CanPort80": true - }, - { - "Name": "10d", - "RegionID": 10, - "HostName": "derp10d.tailscale.com", - "IPv4": "192.73.240.132", - "IPv6": "2607:f740:14::500", - "CanPort80": true - }, - { - "Name": "10b", - "RegionID": 10, - "HostName": "derp10b.tailscale.com", - "IPv4": "192.73.240.161", - "IPv6": "2607:f740:14::61c", - "CanPort80": true - } - ] - }, - "11": { - "RegionID": 11, - "RegionCode": "sao", - "RegionName": "São Paulo", - "Latitude": -23.55, - "Longitude": -46.633333, - "Nodes": [ - { - "Name": "11f", - "RegionID": 11, - "HostName": "derp11f.tailscale.com", - "IPv4": "172.237.61.197", - "IPv6": "2600:3c0d::2000:3bff:fe44:6166", - "CanPort80": true - }, - { - "Name": "11g", - "RegionID": 11, - "HostName": "derp11g.tailscale.com", - "IPv4": "172.237.61.190", - "IPv6": "2600:3c0d::2000:62ff:febe:2e67", - "CanPort80": true - }, - { - "Name": "11e", - "RegionID": 11, - "HostName": "derp11e.tailscale.com", - "IPv4": "172.237.61.194", - "IPv6": "2600:3c0d::2000:d2ff:fe43:1790", - "CanPort80": true - } - ] - }, - "12": { - "RegionID": 12, - "RegionCode": "ord", - "RegionName": "Chicago", - "Latitude": 41.881944, - "Longitude": -87.627778, - "Nodes": [ - { - "Name": "12e", - "RegionID": 12, - "HostName": "derp12e.tailscale.com", - "IPv4": "209.177.158.15", - "IPv6": "2607:f740:e::b17", - "CanPort80": true - }, - { - "Name": "12f", - "RegionID": 12, - "HostName": "derp12f.tailscale.com", - "IPv4": "199.38.182.118", - "IPv6": "2607:f740:e::4c8", - "CanPort80": true - }, - { - "Name": "12d", - "RegionID": 12, - "HostName": "derp12d.tailscale.com", - "IPv4": "209.177.158.246", - "IPv6": "2607:f740:e::811", - "CanPort80": true - } - ] - }, - "13": { - "RegionID": 13, - "RegionCode": "den", - "RegionName": "Denver", - "Latitude": 39.7392, - "Longitude": -104.9849, - "Nodes": [ - { - "Name": "13c", - "RegionID": 13, - "HostName": "derp13c.tailscale.com", - "IPv4": "192.73.242.28", - "IPv6": "2607:f740:16::5c", - "CanPort80": true - }, - { - "Name": "13d", - "RegionID": 13, - "HostName": "derp13d.tailscale.com", - "IPv4": "192.73.242.204", - "IPv6": "2607:f740:16::c23", - "CanPort80": true - }, - { - "Name": "13b", - "RegionID": 13, - "HostName": "derp13b.tailscale.com", - "IPv4": "192.73.242.187", - "IPv6": "2607:f740:16::640", - "CanPort80": true - } - ] - }, - "14": { - "RegionID": 14, - "RegionCode": "ams", - "RegionName": "Amsterdam", - "Latitude": 52.372778, - "Longitude": 4.893611, - "Nodes": [ - { - "Name": "14c", - "RegionID": 14, - "HostName": "derp14c.tailscale.com", - "IPv4": "176.58.93.147", - "IPv6": "2a00:dd80:3c::b09", - "CanPort80": true - }, - { - "Name": "14d", - "RegionID": 14, - "HostName": "derp14d.tailscale.com", - "IPv4": "176.58.93.154", - "IPv6": "2a00:dd80:3c::3d5", - "CanPort80": true - }, - { - "Name": "14b", - "RegionID": 14, - "HostName": "derp14b.tailscale.com", - "IPv4": "176.58.93.248", - "IPv6": "2a00:dd80:3c::807", - "CanPort80": true - } - ] - }, - "15": { - "RegionID": 15, - "RegionCode": "jnb", - "RegionName": "Johannesburg", - "Latitude": -26.204444, - "Longitude": 28.045556, - "Nodes": [ - { - "Name": "15c", - "RegionID": 15, - "HostName": "derp15c.tailscale.com", - "IPv4": "102.67.165.185", - "IPv6": "2c0f:edb0:0:10::b59", - "CanPort80": true - }, - { - "Name": "15d", - "RegionID": 15, - "HostName": "derp15d.tailscale.com", - "IPv4": "102.67.165.36", - "IPv6": "2c0f:edb0:0:10::599", - "CanPort80": true - }, - { - "Name": "15b", - "RegionID": 15, - "HostName": "derp15b.tailscale.com", - "IPv4": "102.67.165.90", - "IPv6": "2c0f:edb0:0:10::963", - "CanPort80": true - } - ] - }, - "16": { - "RegionID": 16, - "RegionCode": "mia", - "RegionName": "Miami", - "Latitude": 25.78, - "Longitude": -80.21, - "Nodes": [ - { - "Name": "16c", - "RegionID": 16, - "HostName": "derp16c.tailscale.com", - "IPv4": "192.73.243.229", - "IPv6": "2607:f740:17::4e4", - "CanPort80": true - }, - { - "Name": "16d", - "RegionID": 16, - "HostName": "derp16d.tailscale.com", - "IPv4": "192.73.243.141", - "IPv6": "2607:f740:17::475", - "CanPort80": true - }, - { - "Name": "16b", - "RegionID": 16, - "HostName": "derp16b.tailscale.com", - "IPv4": "192.73.243.135", - "IPv6": "2607:f740:17::476", - "CanPort80": true - } - ] - }, - "17": { - "RegionID": 17, - "RegionCode": "lax", - "RegionName": "Los Angeles", - "Latitude": 34.05, - "Longitude": -118.25, - "Nodes": [ - { - "Name": "17c", - "RegionID": 17, - "HostName": "derp17c.tailscale.com", - "IPv4": "208.111.40.12", - "IPv6": "2607:f740:c::10", - "CanPort80": true - }, - { - "Name": "17d", - "RegionID": 17, - "HostName": "derp17d.tailscale.com", - "IPv4": "208.111.40.216", - "IPv6": "2607:f740:c::e1b", - "CanPort80": true - }, - { - "Name": "17b", - "RegionID": 17, - "HostName": "derp17b.tailscale.com", - "IPv4": "192.73.244.245", - "IPv6": "2607:f740:c::646", - "CanPort80": true - } - ] - }, - "18": { - "RegionID": 18, - "RegionCode": "par", - "RegionName": "Paris", - "Latitude": 48.856667, - "Longitude": 2.352222, - "Nodes": [ - { - "Name": "18c", - "RegionID": 18, - "HostName": "derp18c.tailscale.com", - "IPv4": "176.58.90.207", - "IPv6": "2a00:dd80:3e::c19", - "CanPort80": true - }, - { - "Name": "18d", - "RegionID": 18, - "HostName": "derp18d.tailscale.com", - "IPv4": "176.58.90.104", - "IPv6": "2a00:dd80:3e::f2e", - "CanPort80": true - }, - { - "Name": "18b", - "RegionID": 18, - "HostName": "derp18b.tailscale.com", - "IPv4": "176.58.90.147", - "IPv6": "2a00:dd80:3e::363", - "CanPort80": true - } - ] - }, - "19": { - "RegionID": 19, - "RegionCode": "mad", - "RegionName": "Madrid", - "Latitude": 40.416944, - "Longitude": -3.703333, - "Nodes": [ - { - "Name": "19c", - "RegionID": 19, - "HostName": "derp19c.tailscale.com", - "IPv4": "45.159.97.61", - "IPv6": "2a00:dd80:14:10::20", - "CanPort80": true - }, - { - "Name": "19d", - "RegionID": 19, - "HostName": "derp19d.tailscale.com", - "IPv4": "45.159.97.233", - "IPv6": "2a00:dd80:14:10::34a", - "CanPort80": true - }, - { - "Name": "19b", - "RegionID": 19, - "HostName": "derp19b.tailscale.com", - "IPv4": "45.159.97.144", - "IPv6": "2a00:dd80:14:10::335", - "CanPort80": true - } - ] - }, - "2": { - "RegionID": 2, - "RegionCode": "sfo", - "RegionName": "San Francisco", - "Latitude": 37.7775, - "Longitude": -122.416389, - "Nodes": [ - { - "Name": "2e", - "RegionID": 2, - "HostName": "derp2e.tailscale.com", - "IPv4": "192.73.252.134", - "IPv6": "2607:f740:0:3f::44c", - "CanPort80": true - }, - { - "Name": "2f", - "RegionID": 2, - "HostName": "derp2f.tailscale.com", - "IPv4": "208.111.34.178", - "IPv6": "2607:f740:0:3f::f4", - "CanPort80": true - }, - { - "Name": "2d", - "RegionID": 2, - "HostName": "derp2d.tailscale.com", - "IPv4": "192.73.252.65", - "IPv6": "2607:f740:0:3f::287", - "CanPort80": true - } - ] - }, - "20": { - "RegionID": 20, - "RegionCode": "hkg", - "RegionName": "Hong Kong", - "Latitude": 22.3193, - "Longitude": 114.1694, - "Nodes": [ - { - "Name": "20c", - "RegionID": 20, - "HostName": "derp20c.tailscale.com", - "IPv4": "205.147.105.30", - "IPv6": "2403:2500:8000:1::5fb", - "CanPort80": true - }, - { - "Name": "20d", - "RegionID": 20, - "HostName": "derp20d.tailscale.com", - "IPv4": "205.147.105.78", - "IPv6": "2403:2500:8000:1::e9a", - "CanPort80": true - }, - { - "Name": "20b", - "RegionID": 20, - "HostName": "derp20b.tailscale.com", - "IPv4": "103.6.84.152", - "IPv6": "2403:2500:8000:1::ef6", - "CanPort80": true - } - ] - }, - "21": { - "RegionID": 21, - "RegionCode": "tor", - "RegionName": "Toronto", - "Latitude": 43.741667, - "Longitude": -79.373333, - "Nodes": [ - { - "Name": "21c", - "RegionID": 21, - "HostName": "derp21c.tailscale.com", - "IPv4": "162.248.221.215", - "IPv6": "2607:f740:50::f10", - "CanPort80": true - }, - { - "Name": "21d", - "RegionID": 21, - "HostName": "derp21d.tailscale.com", - "IPv4": "162.248.221.248", - "IPv6": "2607:f740:50::ca4", - "CanPort80": true - }, - { - "Name": "21b", - "RegionID": 21, - "HostName": "derp21b.tailscale.com", - "IPv4": "162.248.221.199", - "IPv6": "2607:f740:50::1d1", - "CanPort80": true - } - ] - }, - "22": { - "RegionID": 22, - "RegionCode": "waw", - "RegionName": "Warsaw", - "Latitude": 52.23, - "Longitude": 21.011111, - "Nodes": [ - { - "Name": "22c", - "RegionID": 22, - "HostName": "derp22c.tailscale.com", - "IPv4": "45.159.98.253", - "IPv6": "2a00:dd80:40:100::3f", - "CanPort80": true - }, - { - "Name": "22d", - "RegionID": 22, - "HostName": "derp22d.tailscale.com", - "IPv4": "45.159.98.145", - "IPv6": "2a00:dd80:40:100::211", - "CanPort80": true - }, - { - "Name": "22b", - "RegionID": 22, - "HostName": "derp22b.tailscale.com", - "IPv4": "45.159.98.196", - "IPv6": "2a00:dd80:40:100::316", - "CanPort80": true - } - ] - }, - "23": { - "RegionID": 23, - "RegionCode": "dbi", - "RegionName": "Dubai", - "Latitude": 25.263056, - "Longitude": 55.297222, - "Nodes": [ - { - "Name": "23c", - "RegionID": 23, - "HostName": "derp23c.tailscale.com", - "IPv4": "185.34.3.207", - "IPv6": "2a00:dd80:3f:100::a50", - "CanPort80": true - }, - { - "Name": "23d", - "RegionID": 23, - "HostName": "derp23d.tailscale.com", - "IPv4": "185.34.3.75", - "IPv6": "2a00:dd80:3f:100::97e", - "CanPort80": true - }, - { - "Name": "23b", - "RegionID": 23, - "HostName": "derp23b.tailscale.com", - "IPv4": "185.34.3.232", - "IPv6": "2a00:dd80:3f:100::76f", - "CanPort80": true - } - ] - }, - "24": { - "RegionID": 24, - "RegionCode": "hnl", - "RegionName": "Honolulu", - "Latitude": 21.306944, - "Longitude": -157.858333, - "Nodes": [ - { - "Name": "24c", - "RegionID": 24, - "HostName": "derp24c.tailscale.com", - "IPv4": "208.83.233.233", - "IPv6": "2001:19f0:c000:c591:5400:04ff:fe26:2c5f", - "CanPort80": true - }, - { - "Name": "24d", - "RegionID": 24, - "HostName": "derp24d.tailscale.com", - "IPv4": "208.72.155.133", - "IPv6": "2001:19f0:c000:c564:5400:04ff:fe26:2ba8", - "CanPort80": true - }, - { - "Name": "24b", - "RegionID": 24, - "HostName": "derp24b.tailscale.com", - "IPv4": "208.83.234.151", - "IPv6": "2001:19f0:c000:c586:5400:04ff:fe26:2ba6", - "CanPort80": true - } - ] - }, - "25": { - "RegionID": 25, - "RegionCode": "nai", - "RegionName": "Nairobi", - "Latitude": -1.286389, - "Longitude": 36.817222, - "Nodes": [ - { - "Name": "25c", - "RegionID": 25, - "HostName": "derp25c.tailscale.com", - "IPv4": "102.67.167.37", - "IPv6": "2c0f:edb0:2000:1::2c7", - "CanPort80": true - }, - { - "Name": "25d", - "RegionID": 25, - "HostName": "derp25d.tailscale.com", - "IPv4": "102.67.167.188", - "IPv6": "2c0f:edb0:2000:1::188", - "CanPort80": true - }, - { - "Name": "25b", - "RegionID": 25, - "HostName": "derp25b.tailscale.com", - "IPv4": "102.67.167.245", - "IPv6": "2c0f:edb0:2000:1::2e9", - "CanPort80": true - } - ] - }, - "26": { - "RegionID": 26, - "RegionCode": "nue", - "RegionName": "Nuremberg", - "Latitude": 49.453889, - "Longitude": 11.0775, - "Nodes": [ - { - "Name": "26c", - "RegionID": 26, - "HostName": "derp26c.tailscale.com", - "IPv4": "49.12.193.137", - "IPv6": "2a01:4f8:1c1c:5c70::1", - "CanPort80": true - }, - { - "Name": "26d", - "RegionID": 26, - "HostName": "derp26d.tailscale.com", - "IPv4": "49.13.204.141", - "IPv6": "2a01:4f8:1c0c:7d06::1", - "CanPort80": true - }, - { - "Name": "26b", - "RegionID": 26, - "HostName": "derp26b.tailscale.com", - "IPv4": "167.235.72.200", - "IPv6": "2a01:4f8:1c1c:47b6::1", - "CanPort80": true - } - ] - }, - "27": { - "RegionID": 27, - "RegionCode": "iad", - "RegionName": "Ashburn", - "Latitude": 39.03, - "Longitude": -77.471111, - "Nodes": [ - { - "Name": "27d", - "RegionID": 27, - "HostName": "derp27d.tailscale.com", - "IPv4": "178.156.152.106", - "IPv6": "2a01:4ff:f0:3c8e::1", - "CanPort80": true - }, - { - "Name": "27c", - "RegionID": 27, - "HostName": "derp27c.tailscale.com", - "IPv4": "178.156.152.91", - "IPv6": "2a01:4ff:f0:3913::1", - "CanPort80": true - }, - { - "Name": "27e", - "RegionID": 27, - "HostName": "derp27e.tailscale.com", - "IPv4": "178.156.134.232", - "IPv6": "2a01:4ff:f0:28d4::1", - "CanPort80": true - }, - { - "Name": "27b", - "RegionID": 27, - "HostName": "derp27b.tailscale.com", - "IPv4": "5.161.218.233", - "IPv6": "2a01:4ff:f0:3db9::1", - "CanPort80": true - } - ] - }, - "28": { - "RegionID": 28, - "RegionCode": "hel", - "RegionName": "Helsinki", - "Latitude": 60.170833, - "Longitude": 24.9375, - "Nodes": [ - { - "Name": "28c", - "RegionID": 28, - "HostName": "derp28c.tailscale.com", - "IPv4": "95.217.2.165", - "IPv6": "2a01:4f9:c012:cd74::1", - "CanPort80": true - }, - { - "Name": "28d", - "RegionID": 28, - "HostName": "derp28d.tailscale.com", - "IPv4": "157.180.28.32", - "IPv6": "2a01:4f9:c012:2e5b::1", - "CanPort80": true - }, - { - "Name": "28b", - "RegionID": 28, - "HostName": "derp28b.tailscale.com", - "IPv4": "65.109.143.62", - "IPv6": "2a01:4f9:c012:d55c::1", - "CanPort80": true - } - ] - }, - "3": { - "RegionID": 3, - "RegionCode": "sin", - "RegionName": "Singapore", - "Latitude": 1.3521, - "Longitude": 103.8198, - "Nodes": [ - { - "Name": "3g", - "RegionID": 3, - "HostName": "derp3g.tailscale.com", - "IPv4": "172.237.72.79", - "IPv6": "2600:3c15::2000:adff:fe08:6fab", - "CanPort80": true - }, - { - "Name": "3f", - "RegionID": 3, - "HostName": "derp3f.tailscale.com", - "IPv4": "172.237.72.8", - "IPv6": "2600:3c15::2000:53ff:fe48:a668", - "CanPort80": true - }, - { - "Name": "3h", - "RegionID": 3, - "HostName": "derp3h.tailscale.com", - "IPv4": "172.237.66.30", - "IPv6": "2600:3c15::2000:3dff:fe44:50aa", - "CanPort80": true - }, - { - "Name": "3e", - "RegionID": 3, - "HostName": "derp3e.tailscale.com", - "IPv4": "172.237.72.43", - "IPv6": "2600:3c15::2000:6cff:fee4:d799", - "CanPort80": true - } - ] - }, - "4": { - "RegionID": 4, - "RegionCode": "fra", - "RegionName": "Frankfurt", - "Latitude": 50.1109, - "Longitude": 8.6821, - "Nodes": [ - { - "Name": "4h", - "RegionID": 4, - "HostName": "derp4h.tailscale.com", - "IPv4": "185.40.234.77", - "IPv6": "2a00:dd80:20::bcf", - "CanPort80": true - }, - { - "Name": "4g", - "RegionID": 4, - "HostName": "derp4g.tailscale.com", - "IPv4": "185.40.234.113", - "IPv6": "2a00:dd80:20::8f", - "CanPort80": true - }, - { - "Name": "4i", - "RegionID": 4, - "HostName": "derp4i.tailscale.com", - "IPv4": "185.40.234.53", - "IPv6": "2a00:dd80:20::8a6", - "CanPort80": true - }, - { - "Name": "4f", - "RegionID": 4, - "HostName": "derp4f.tailscale.com", - "IPv4": "185.40.234.219", - "IPv6": "2a00:dd80:20::a25", - "CanPort80": true - } - ] - }, - "5": { - "RegionID": 5, - "RegionCode": "syd", - "RegionName": "Sydney", - "Latitude": -33.867778, - "Longitude": 151.21, - "Nodes": [ - { - "Name": "5f", - "RegionID": 5, - "HostName": "derp5f.tailscale.com", - "IPv4": "172.105.166.103", - "IPv6": "2400:8907::2000:ccff:fe1f:80da", - "CanPort80": true - }, - { - "Name": "5g", - "RegionID": 5, - "HostName": "derp5g.tailscale.com", - "IPv4": "172.105.169.57", - "IPv6": "2400:8907::2000:2fff:fea7:57f4", - "CanPort80": true - }, - { - "Name": "5e", - "RegionID": 5, - "HostName": "derp5e.tailscale.com", - "IPv4": "172.105.179.230", - "IPv6": "2400:8907::2000:ceff:fe8d:4f4e", - "CanPort80": true - } - ] - }, - "6": { - "RegionID": 6, - "RegionCode": "blr", - "RegionName": "Bengaluru", - "Latitude": 12.9716, - "Longitude": 77.5946, - "Nodes": [ - { - "Name": "6a", - "RegionID": 6, - "HostName": "derp6.tailscale.com", - "IPv4": "68.183.90.120", - "IPv6": "2400:6180:100:d0::982:d001", - "CanPort80": true - } - ] - }, - "7": { - "RegionID": 7, - "RegionCode": "tok", - "RegionName": "Tokyo", - "Latitude": 35.6764, - "Longitude": 139.65, - "Nodes": [ - { - "Name": "7g", - "RegionID": 7, - "HostName": "derp7g.tailscale.com", - "IPv4": "172.238.6.179", - "IPv6": "2600:3c18::2000:3fff:fe80:3ebd", - "CanPort80": true - }, - { - "Name": "7f", - "RegionID": 7, - "HostName": "derp7f.tailscale.com", - "IPv4": "172.238.6.34", - "IPv6": "2600:3c18::2000:acff:fe8e:3ed5", - "CanPort80": true - }, - { - "Name": "7h", - "RegionID": 7, - "HostName": "derp7h.tailscale.com", - "IPv4": "172.237.28.183", - "IPv6": "2600:3c18::2000:b1ff:fea9:4560", - "CanPort80": true - }, - { - "Name": "7e", - "RegionID": 7, - "HostName": "derp7e.tailscale.com", - "IPv4": "172.238.6.180", - "IPv6": "2600:3c18::2000:60ff:fe0f:6e83", - "STUNOnly": true, - "CanPort80": true - } - ] - }, - "8": { - "RegionID": 8, - "RegionCode": "lhr", - "RegionName": "London", - "Latitude": 51.5072, - "Longitude": 0.1276, - "Nodes": [ - { - "Name": "8f", - "RegionID": 8, - "HostName": "derp8f.tailscale.com", - "IPv4": "176.58.88.183", - "IPv6": "2a00:dd80:3a::dfa", - "CanPort80": true - }, - { - "Name": "8g", - "RegionID": 8, - "HostName": "derp8g.tailscale.com", - "IPv4": "176.58.92.254", - "IPv6": "2a00:dd80:3a::ed", - "CanPort80": true - }, - { - "Name": "8e", - "RegionID": 8, - "HostName": "derp8e.tailscale.com", - "IPv4": "176.58.92.144", - "IPv6": "2a00:dd80:3a::b33", - "CanPort80": true - } - ] - }, - "9": { - "RegionID": 9, - "RegionCode": "dfw", - "RegionName": "Dallas", - "Latitude": 32.779167, - "Longitude": -96.808889, - "Nodes": [ - { - "Name": "9e", - "RegionID": 9, - "HostName": "derp9e.tailscale.com", - "IPv4": "192.73.248.83", - "IPv6": "2607:f740:100::359", - "CanPort80": true - }, - { - "Name": "9f", - "RegionID": 9, - "HostName": "derp9f.tailscale.com", - "IPv4": "209.177.156.197", - "IPv6": "2607:f740:100::cad", - "CanPort80": true - }, - { - "Name": "9d", - "RegionID": 9, - "HostName": "derp9d.tailscale.com", - "IPv4": "209.177.156.94", - "IPv6": "2607:f740:100::c05", - "CanPort80": true - } - ] - } - } - }, - "DisplayMessages": null, - "TKAEnabled": false, - "TKAHead": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", - "Domain": "kratail2tid@passkey", - "DomainAuditLogID": "", - "UserProfiles": { - "4538565228176803": { - "ID": 4538565228176803, - "LoginName": "kristoffer@dalby.cc", - "DisplayName": "kristoffer" - } - } + "PacketFilterRules": 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.124.195.93": { - "peer_name": "exit-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-mon/tailscaled.sock whois --json 100.124.195.93", - "response": null - }, - "100.116.18.24": { - "peer_name": "exit-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-mon/tailscaled.sock whois --json 100.116.18.24", - "response": null - }, - "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.107.162.14": { - "peer_name": "group-a-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-mon/tailscaled.sock whois --json 100.107.162.14", - "response": null - }, - "100.77.135.18": { - "peer_name": "group-b-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-mon/tailscaled.sock whois --json 100.77.135.18", - "response": null - }, - "100.105.127.107": { - "peer_name": "multi-exit-router", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-mon/tailscaled.sock whois --json 100.105.127.107", - "response": null - }, - "100.109.43.124": { - "peer_name": "router-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-mon/tailscaled.sock whois --json 100.109.43.124", - "response": null - }, - "100.65.172.123": { - "peer_name": "router-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-mon/tailscaled.sock whois --json 100.65.172.123", - "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 - } - }, "netmap": { - "SelfNode": { - "ID": 1840115676059256, - "StableID": "nFzZ7giPNF11CNTRL", - "Name": "user-mon.tail78f774.ts.net.", - "User": 3982058329734709, - "Key": "nodekey:1ca6cca66d2b3811ec290c2f7ac30125c3568e19e303a8e30f6b165c9ee75a51", - "KeyExpiry": "2026-08-19T14:09:00Z", - "DiscoKey": "discokey:67ba1473894f09b564073adb12b27df2a45c513afd9e48922a0346d5d2715d12", - "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:36593", "10.65.0.27:36593", "172.17.0.1:36593"], - "Hostinfo": { - "Hostname": "user-mon", - "Services": [ - { "Proto": "peerapi4", "Port": 33201 }, - { "Proto": "peerapi6", "Port": 33201 }, - { "Proto": "peerapi-dns-proxy", "Port": 1 } - ] - }, - "Created": "2026-02-20T14:09:00.203639664Z", - "MachineAuthorized": true, - "CapMap": { - "https://tailscale.com/cap/file-sharing": null, - "https://tailscale.com/cap/is-admin": null, - "https://tailscale.com/cap/ssh": null, - "https://tailscale.com/cap/tailnet-lock": null, - "probe-udp-lifetime": null, - "ssh-behavior-v1": null, - "ssh-env-vars": null, - "store-appc-routes": null, - "tailnet-display-name": ["kratail2tid@passkey"] - }, - "ComputedName": "user-mon", - "ComputedNameWithHost": "user-mon" - }, - "AllCaps": [ - "https://tailscale.com/cap/is-admin", - "ssh-behavior-v1", - "store-appc-routes", - "probe-udp-lifetime", - "https://tailscale.com/cap/tailnet-lock", - "https://tailscale.com/cap/file-sharing", - "https://tailscale.com/cap/ssh", - "ssh-env-vars", - "tailnet-display-name" - ], - "NodeKey": "nodekey:1ca6cca66d2b3811ec290c2f7ac30125c3568e19e303a8e30f6b165c9ee75a51", - "MachineKey": "mkey:d63fc325663eef5dabd4d236e1fa5a26ed14ad31ea0711840cf755a5e8a9df39", "Peers": [], - "DNS": { - "Routes": { - "tail78f774.ts.net.": null, - "ts.net.": [{ "Addr": "199.247.155.53" }, { "Addr": "2620:111:8007::53" }] - }, - "Domains": ["tail78f774.ts.net"], - "Proxied": true, - "ExitNodeFilteredSet": [".ts.net", ".tailscale.net"] - }, - "PacketFilter": [], - "PacketFilterRules": null, - "SSHPolicy": { "rules": [] }, - "CollectServices": false, - "DERPMap": { - "Regions": { - "1": { - "RegionID": 1, - "RegionCode": "nyc", - "RegionName": "New York City", - "Latitude": 40.7128, - "Longitude": -74.006, - "Nodes": [ - { - "Name": "1h", - "RegionID": 1, - "HostName": "derp1h.tailscale.com", - "IPv4": "199.38.181.93", - "IPv6": "2607:f740:f::afd", - "CanPort80": true - }, - { - "Name": "1g", - "RegionID": 1, - "HostName": "derp1g.tailscale.com", - "IPv4": "209.177.145.120", - "IPv6": "2607:f740:f::3eb", - "CanPort80": true - }, - { - "Name": "1i", - "RegionID": 1, - "HostName": "derp1i.tailscale.com", - "IPv4": "199.38.181.103", - "IPv6": "2607:f740:f::e19", - "CanPort80": true - }, - { - "Name": "1f", - "RegionID": 1, - "HostName": "derp1f.tailscale.com", - "IPv4": "199.38.181.104", - "IPv6": "2607:f740:f::bc", - "CanPort80": true - } - ] - }, - "10": { - "RegionID": 10, - "RegionCode": "sea", - "RegionName": "Seattle", - "Latitude": 47.609722, - "Longitude": -122.333056, - "Nodes": [ - { - "Name": "10c", - "RegionID": 10, - "HostName": "derp10c.tailscale.com", - "IPv4": "192.73.240.121", - "IPv6": "2607:f740:14::40c", - "CanPort80": true - }, - { - "Name": "10d", - "RegionID": 10, - "HostName": "derp10d.tailscale.com", - "IPv4": "192.73.240.132", - "IPv6": "2607:f740:14::500", - "CanPort80": true - }, - { - "Name": "10b", - "RegionID": 10, - "HostName": "derp10b.tailscale.com", - "IPv4": "192.73.240.161", - "IPv6": "2607:f740:14::61c", - "CanPort80": true - } - ] - }, - "11": { - "RegionID": 11, - "RegionCode": "sao", - "RegionName": "São Paulo", - "Latitude": -23.55, - "Longitude": -46.633333, - "Nodes": [ - { - "Name": "11f", - "RegionID": 11, - "HostName": "derp11f.tailscale.com", - "IPv4": "172.237.61.197", - "IPv6": "2600:3c0d::2000:3bff:fe44:6166", - "CanPort80": true - }, - { - "Name": "11g", - "RegionID": 11, - "HostName": "derp11g.tailscale.com", - "IPv4": "172.237.61.190", - "IPv6": "2600:3c0d::2000:62ff:febe:2e67", - "CanPort80": true - }, - { - "Name": "11e", - "RegionID": 11, - "HostName": "derp11e.tailscale.com", - "IPv4": "172.237.61.194", - "IPv6": "2600:3c0d::2000:d2ff:fe43:1790", - "CanPort80": true - } - ] - }, - "12": { - "RegionID": 12, - "RegionCode": "ord", - "RegionName": "Chicago", - "Latitude": 41.881944, - "Longitude": -87.627778, - "Nodes": [ - { - "Name": "12e", - "RegionID": 12, - "HostName": "derp12e.tailscale.com", - "IPv4": "209.177.158.15", - "IPv6": "2607:f740:e::b17", - "CanPort80": true - }, - { - "Name": "12f", - "RegionID": 12, - "HostName": "derp12f.tailscale.com", - "IPv4": "199.38.182.118", - "IPv6": "2607:f740:e::4c8", - "CanPort80": true - }, - { - "Name": "12d", - "RegionID": 12, - "HostName": "derp12d.tailscale.com", - "IPv4": "209.177.158.246", - "IPv6": "2607:f740:e::811", - "CanPort80": true - } - ] - }, - "13": { - "RegionID": 13, - "RegionCode": "den", - "RegionName": "Denver", - "Latitude": 39.7392, - "Longitude": -104.9849, - "Nodes": [ - { - "Name": "13c", - "RegionID": 13, - "HostName": "derp13c.tailscale.com", - "IPv4": "192.73.242.28", - "IPv6": "2607:f740:16::5c", - "CanPort80": true - }, - { - "Name": "13d", - "RegionID": 13, - "HostName": "derp13d.tailscale.com", - "IPv4": "192.73.242.204", - "IPv6": "2607:f740:16::c23", - "CanPort80": true - }, - { - "Name": "13b", - "RegionID": 13, - "HostName": "derp13b.tailscale.com", - "IPv4": "192.73.242.187", - "IPv6": "2607:f740:16::640", - "CanPort80": true - } - ] - }, - "14": { - "RegionID": 14, - "RegionCode": "ams", - "RegionName": "Amsterdam", - "Latitude": 52.372778, - "Longitude": 4.893611, - "Nodes": [ - { - "Name": "14c", - "RegionID": 14, - "HostName": "derp14c.tailscale.com", - "IPv4": "176.58.93.147", - "IPv6": "2a00:dd80:3c::b09", - "CanPort80": true - }, - { - "Name": "14d", - "RegionID": 14, - "HostName": "derp14d.tailscale.com", - "IPv4": "176.58.93.154", - "IPv6": "2a00:dd80:3c::3d5", - "CanPort80": true - }, - { - "Name": "14b", - "RegionID": 14, - "HostName": "derp14b.tailscale.com", - "IPv4": "176.58.93.248", - "IPv6": "2a00:dd80:3c::807", - "CanPort80": true - } - ] - }, - "15": { - "RegionID": 15, - "RegionCode": "jnb", - "RegionName": "Johannesburg", - "Latitude": -26.204444, - "Longitude": 28.045556, - "Nodes": [ - { - "Name": "15c", - "RegionID": 15, - "HostName": "derp15c.tailscale.com", - "IPv4": "102.67.165.185", - "IPv6": "2c0f:edb0:0:10::b59", - "CanPort80": true - }, - { - "Name": "15d", - "RegionID": 15, - "HostName": "derp15d.tailscale.com", - "IPv4": "102.67.165.36", - "IPv6": "2c0f:edb0:0:10::599", - "CanPort80": true - }, - { - "Name": "15b", - "RegionID": 15, - "HostName": "derp15b.tailscale.com", - "IPv4": "102.67.165.90", - "IPv6": "2c0f:edb0:0:10::963", - "CanPort80": true - } - ] - }, - "16": { - "RegionID": 16, - "RegionCode": "mia", - "RegionName": "Miami", - "Latitude": 25.78, - "Longitude": -80.21, - "Nodes": [ - { - "Name": "16c", - "RegionID": 16, - "HostName": "derp16c.tailscale.com", - "IPv4": "192.73.243.229", - "IPv6": "2607:f740:17::4e4", - "CanPort80": true - }, - { - "Name": "16d", - "RegionID": 16, - "HostName": "derp16d.tailscale.com", - "IPv4": "192.73.243.141", - "IPv6": "2607:f740:17::475", - "CanPort80": true - }, - { - "Name": "16b", - "RegionID": 16, - "HostName": "derp16b.tailscale.com", - "IPv4": "192.73.243.135", - "IPv6": "2607:f740:17::476", - "CanPort80": true - } - ] - }, - "17": { - "RegionID": 17, - "RegionCode": "lax", - "RegionName": "Los Angeles", - "Latitude": 34.05, - "Longitude": -118.25, - "Nodes": [ - { - "Name": "17c", - "RegionID": 17, - "HostName": "derp17c.tailscale.com", - "IPv4": "208.111.40.12", - "IPv6": "2607:f740:c::10", - "CanPort80": true - }, - { - "Name": "17d", - "RegionID": 17, - "HostName": "derp17d.tailscale.com", - "IPv4": "208.111.40.216", - "IPv6": "2607:f740:c::e1b", - "CanPort80": true - }, - { - "Name": "17b", - "RegionID": 17, - "HostName": "derp17b.tailscale.com", - "IPv4": "192.73.244.245", - "IPv6": "2607:f740:c::646", - "CanPort80": true - } - ] - }, - "18": { - "RegionID": 18, - "RegionCode": "par", - "RegionName": "Paris", - "Latitude": 48.856667, - "Longitude": 2.352222, - "Nodes": [ - { - "Name": "18c", - "RegionID": 18, - "HostName": "derp18c.tailscale.com", - "IPv4": "176.58.90.207", - "IPv6": "2a00:dd80:3e::c19", - "CanPort80": true - }, - { - "Name": "18d", - "RegionID": 18, - "HostName": "derp18d.tailscale.com", - "IPv4": "176.58.90.104", - "IPv6": "2a00:dd80:3e::f2e", - "CanPort80": true - }, - { - "Name": "18b", - "RegionID": 18, - "HostName": "derp18b.tailscale.com", - "IPv4": "176.58.90.147", - "IPv6": "2a00:dd80:3e::363", - "CanPort80": true - } - ] - }, - "19": { - "RegionID": 19, - "RegionCode": "mad", - "RegionName": "Madrid", - "Latitude": 40.416944, - "Longitude": -3.703333, - "Nodes": [ - { - "Name": "19c", - "RegionID": 19, - "HostName": "derp19c.tailscale.com", - "IPv4": "45.159.97.61", - "IPv6": "2a00:dd80:14:10::20", - "CanPort80": true - }, - { - "Name": "19d", - "RegionID": 19, - "HostName": "derp19d.tailscale.com", - "IPv4": "45.159.97.233", - "IPv6": "2a00:dd80:14:10::34a", - "CanPort80": true - }, - { - "Name": "19b", - "RegionID": 19, - "HostName": "derp19b.tailscale.com", - "IPv4": "45.159.97.144", - "IPv6": "2a00:dd80:14:10::335", - "CanPort80": true - } - ] - }, - "2": { - "RegionID": 2, - "RegionCode": "sfo", - "RegionName": "San Francisco", - "Latitude": 37.7775, - "Longitude": -122.416389, - "Nodes": [ - { - "Name": "2e", - "RegionID": 2, - "HostName": "derp2e.tailscale.com", - "IPv4": "192.73.252.134", - "IPv6": "2607:f740:0:3f::44c", - "CanPort80": true - }, - { - "Name": "2f", - "RegionID": 2, - "HostName": "derp2f.tailscale.com", - "IPv4": "208.111.34.178", - "IPv6": "2607:f740:0:3f::f4", - "CanPort80": true - }, - { - "Name": "2d", - "RegionID": 2, - "HostName": "derp2d.tailscale.com", - "IPv4": "192.73.252.65", - "IPv6": "2607:f740:0:3f::287", - "CanPort80": true - } - ] - }, - "20": { - "RegionID": 20, - "RegionCode": "hkg", - "RegionName": "Hong Kong", - "Latitude": 22.3193, - "Longitude": 114.1694, - "Nodes": [ - { - "Name": "20c", - "RegionID": 20, - "HostName": "derp20c.tailscale.com", - "IPv4": "205.147.105.30", - "IPv6": "2403:2500:8000:1::5fb", - "CanPort80": true - }, - { - "Name": "20d", - "RegionID": 20, - "HostName": "derp20d.tailscale.com", - "IPv4": "205.147.105.78", - "IPv6": "2403:2500:8000:1::e9a", - "CanPort80": true - }, - { - "Name": "20b", - "RegionID": 20, - "HostName": "derp20b.tailscale.com", - "IPv4": "103.6.84.152", - "IPv6": "2403:2500:8000:1::ef6", - "CanPort80": true - } - ] - }, - "21": { - "RegionID": 21, - "RegionCode": "tor", - "RegionName": "Toronto", - "Latitude": 43.741667, - "Longitude": -79.373333, - "Nodes": [ - { - "Name": "21c", - "RegionID": 21, - "HostName": "derp21c.tailscale.com", - "IPv4": "162.248.221.215", - "IPv6": "2607:f740:50::f10", - "CanPort80": true - }, - { - "Name": "21d", - "RegionID": 21, - "HostName": "derp21d.tailscale.com", - "IPv4": "162.248.221.248", - "IPv6": "2607:f740:50::ca4", - "CanPort80": true - }, - { - "Name": "21b", - "RegionID": 21, - "HostName": "derp21b.tailscale.com", - "IPv4": "162.248.221.199", - "IPv6": "2607:f740:50::1d1", - "CanPort80": true - } - ] - }, - "22": { - "RegionID": 22, - "RegionCode": "waw", - "RegionName": "Warsaw", - "Latitude": 52.23, - "Longitude": 21.011111, - "Nodes": [ - { - "Name": "22c", - "RegionID": 22, - "HostName": "derp22c.tailscale.com", - "IPv4": "45.159.98.253", - "IPv6": "2a00:dd80:40:100::3f", - "CanPort80": true - }, - { - "Name": "22d", - "RegionID": 22, - "HostName": "derp22d.tailscale.com", - "IPv4": "45.159.98.145", - "IPv6": "2a00:dd80:40:100::211", - "CanPort80": true - }, - { - "Name": "22b", - "RegionID": 22, - "HostName": "derp22b.tailscale.com", - "IPv4": "45.159.98.196", - "IPv6": "2a00:dd80:40:100::316", - "CanPort80": true - } - ] - }, - "23": { - "RegionID": 23, - "RegionCode": "dbi", - "RegionName": "Dubai", - "Latitude": 25.263056, - "Longitude": 55.297222, - "Nodes": [ - { - "Name": "23c", - "RegionID": 23, - "HostName": "derp23c.tailscale.com", - "IPv4": "185.34.3.207", - "IPv6": "2a00:dd80:3f:100::a50", - "CanPort80": true - }, - { - "Name": "23d", - "RegionID": 23, - "HostName": "derp23d.tailscale.com", - "IPv4": "185.34.3.75", - "IPv6": "2a00:dd80:3f:100::97e", - "CanPort80": true - }, - { - "Name": "23b", - "RegionID": 23, - "HostName": "derp23b.tailscale.com", - "IPv4": "185.34.3.232", - "IPv6": "2a00:dd80:3f:100::76f", - "CanPort80": true - } - ] - }, - "24": { - "RegionID": 24, - "RegionCode": "hnl", - "RegionName": "Honolulu", - "Latitude": 21.306944, - "Longitude": -157.858333, - "Nodes": [ - { - "Name": "24c", - "RegionID": 24, - "HostName": "derp24c.tailscale.com", - "IPv4": "208.83.233.233", - "IPv6": "2001:19f0:c000:c591:5400:04ff:fe26:2c5f", - "CanPort80": true - }, - { - "Name": "24d", - "RegionID": 24, - "HostName": "derp24d.tailscale.com", - "IPv4": "208.72.155.133", - "IPv6": "2001:19f0:c000:c564:5400:04ff:fe26:2ba8", - "CanPort80": true - }, - { - "Name": "24b", - "RegionID": 24, - "HostName": "derp24b.tailscale.com", - "IPv4": "208.83.234.151", - "IPv6": "2001:19f0:c000:c586:5400:04ff:fe26:2ba6", - "CanPort80": true - } - ] - }, - "25": { - "RegionID": 25, - "RegionCode": "nai", - "RegionName": "Nairobi", - "Latitude": -1.286389, - "Longitude": 36.817222, - "Nodes": [ - { - "Name": "25c", - "RegionID": 25, - "HostName": "derp25c.tailscale.com", - "IPv4": "102.67.167.37", - "IPv6": "2c0f:edb0:2000:1::2c7", - "CanPort80": true - }, - { - "Name": "25d", - "RegionID": 25, - "HostName": "derp25d.tailscale.com", - "IPv4": "102.67.167.188", - "IPv6": "2c0f:edb0:2000:1::188", - "CanPort80": true - }, - { - "Name": "25b", - "RegionID": 25, - "HostName": "derp25b.tailscale.com", - "IPv4": "102.67.167.245", - "IPv6": "2c0f:edb0:2000:1::2e9", - "CanPort80": true - } - ] - }, - "26": { - "RegionID": 26, - "RegionCode": "nue", - "RegionName": "Nuremberg", - "Latitude": 49.453889, - "Longitude": 11.0775, - "Nodes": [ - { - "Name": "26c", - "RegionID": 26, - "HostName": "derp26c.tailscale.com", - "IPv4": "49.12.193.137", - "IPv6": "2a01:4f8:1c1c:5c70::1", - "CanPort80": true - }, - { - "Name": "26d", - "RegionID": 26, - "HostName": "derp26d.tailscale.com", - "IPv4": "49.13.204.141", - "IPv6": "2a01:4f8:1c0c:7d06::1", - "CanPort80": true - }, - { - "Name": "26b", - "RegionID": 26, - "HostName": "derp26b.tailscale.com", - "IPv4": "167.235.72.200", - "IPv6": "2a01:4f8:1c1c:47b6::1", - "CanPort80": true - } - ] - }, - "27": { - "RegionID": 27, - "RegionCode": "iad", - "RegionName": "Ashburn", - "Latitude": 39.03, - "Longitude": -77.471111, - "Nodes": [ - { - "Name": "27d", - "RegionID": 27, - "HostName": "derp27d.tailscale.com", - "IPv4": "178.156.152.106", - "IPv6": "2a01:4ff:f0:3c8e::1", - "CanPort80": true - }, - { - "Name": "27c", - "RegionID": 27, - "HostName": "derp27c.tailscale.com", - "IPv4": "178.156.152.91", - "IPv6": "2a01:4ff:f0:3913::1", - "CanPort80": true - }, - { - "Name": "27e", - "RegionID": 27, - "HostName": "derp27e.tailscale.com", - "IPv4": "178.156.134.232", - "IPv6": "2a01:4ff:f0:28d4::1", - "CanPort80": true - }, - { - "Name": "27b", - "RegionID": 27, - "HostName": "derp27b.tailscale.com", - "IPv4": "5.161.218.233", - "IPv6": "2a01:4ff:f0:3db9::1", - "CanPort80": true - } - ] - }, - "28": { - "RegionID": 28, - "RegionCode": "hel", - "RegionName": "Helsinki", - "Latitude": 60.170833, - "Longitude": 24.9375, - "Nodes": [ - { - "Name": "28c", - "RegionID": 28, - "HostName": "derp28c.tailscale.com", - "IPv4": "95.217.2.165", - "IPv6": "2a01:4f9:c012:cd74::1", - "CanPort80": true - }, - { - "Name": "28d", - "RegionID": 28, - "HostName": "derp28d.tailscale.com", - "IPv4": "157.180.28.32", - "IPv6": "2a01:4f9:c012:2e5b::1", - "CanPort80": true - }, - { - "Name": "28b", - "RegionID": 28, - "HostName": "derp28b.tailscale.com", - "IPv4": "65.109.143.62", - "IPv6": "2a01:4f9:c012:d55c::1", - "CanPort80": true - } - ] - }, - "3": { - "RegionID": 3, - "RegionCode": "sin", - "RegionName": "Singapore", - "Latitude": 1.3521, - "Longitude": 103.8198, - "Nodes": [ - { - "Name": "3g", - "RegionID": 3, - "HostName": "derp3g.tailscale.com", - "IPv4": "172.237.72.79", - "IPv6": "2600:3c15::2000:adff:fe08:6fab", - "CanPort80": true - }, - { - "Name": "3f", - "RegionID": 3, - "HostName": "derp3f.tailscale.com", - "IPv4": "172.237.72.8", - "IPv6": "2600:3c15::2000:53ff:fe48:a668", - "CanPort80": true - }, - { - "Name": "3h", - "RegionID": 3, - "HostName": "derp3h.tailscale.com", - "IPv4": "172.237.66.30", - "IPv6": "2600:3c15::2000:3dff:fe44:50aa", - "CanPort80": true - }, - { - "Name": "3e", - "RegionID": 3, - "HostName": "derp3e.tailscale.com", - "IPv4": "172.237.72.43", - "IPv6": "2600:3c15::2000:6cff:fee4:d799", - "CanPort80": true - } - ] - }, - "4": { - "RegionID": 4, - "RegionCode": "fra", - "RegionName": "Frankfurt", - "Latitude": 50.1109, - "Longitude": 8.6821, - "Nodes": [ - { - "Name": "4h", - "RegionID": 4, - "HostName": "derp4h.tailscale.com", - "IPv4": "185.40.234.77", - "IPv6": "2a00:dd80:20::bcf", - "CanPort80": true - }, - { - "Name": "4g", - "RegionID": 4, - "HostName": "derp4g.tailscale.com", - "IPv4": "185.40.234.113", - "IPv6": "2a00:dd80:20::8f", - "CanPort80": true - }, - { - "Name": "4i", - "RegionID": 4, - "HostName": "derp4i.tailscale.com", - "IPv4": "185.40.234.53", - "IPv6": "2a00:dd80:20::8a6", - "CanPort80": true - }, - { - "Name": "4f", - "RegionID": 4, - "HostName": "derp4f.tailscale.com", - "IPv4": "185.40.234.219", - "IPv6": "2a00:dd80:20::a25", - "CanPort80": true - } - ] - }, - "5": { - "RegionID": 5, - "RegionCode": "syd", - "RegionName": "Sydney", - "Latitude": -33.867778, - "Longitude": 151.21, - "Nodes": [ - { - "Name": "5f", - "RegionID": 5, - "HostName": "derp5f.tailscale.com", - "IPv4": "172.105.166.103", - "IPv6": "2400:8907::2000:ccff:fe1f:80da", - "CanPort80": true - }, - { - "Name": "5g", - "RegionID": 5, - "HostName": "derp5g.tailscale.com", - "IPv4": "172.105.169.57", - "IPv6": "2400:8907::2000:2fff:fea7:57f4", - "CanPort80": true - }, - { - "Name": "5e", - "RegionID": 5, - "HostName": "derp5e.tailscale.com", - "IPv4": "172.105.179.230", - "IPv6": "2400:8907::2000:ceff:fe8d:4f4e", - "CanPort80": true - } - ] - }, - "6": { - "RegionID": 6, - "RegionCode": "blr", - "RegionName": "Bengaluru", - "Latitude": 12.9716, - "Longitude": 77.5946, - "Nodes": [ - { - "Name": "6a", - "RegionID": 6, - "HostName": "derp6.tailscale.com", - "IPv4": "68.183.90.120", - "IPv6": "2400:6180:100:d0::982:d001", - "CanPort80": true - } - ] - }, - "7": { - "RegionID": 7, - "RegionCode": "tok", - "RegionName": "Tokyo", - "Latitude": 35.6764, - "Longitude": 139.65, - "Nodes": [ - { - "Name": "7g", - "RegionID": 7, - "HostName": "derp7g.tailscale.com", - "IPv4": "172.238.6.179", - "IPv6": "2600:3c18::2000:3fff:fe80:3ebd", - "CanPort80": true - }, - { - "Name": "7f", - "RegionID": 7, - "HostName": "derp7f.tailscale.com", - "IPv4": "172.238.6.34", - "IPv6": "2600:3c18::2000:acff:fe8e:3ed5", - "CanPort80": true - }, - { - "Name": "7h", - "RegionID": 7, - "HostName": "derp7h.tailscale.com", - "IPv4": "172.237.28.183", - "IPv6": "2600:3c18::2000:b1ff:fea9:4560", - "CanPort80": true - }, - { - "Name": "7e", - "RegionID": 7, - "HostName": "derp7e.tailscale.com", - "IPv4": "172.238.6.180", - "IPv6": "2600:3c18::2000:60ff:fe0f:6e83", - "STUNOnly": true, - "CanPort80": true - } - ] - }, - "8": { - "RegionID": 8, - "RegionCode": "lhr", - "RegionName": "London", - "Latitude": 51.5072, - "Longitude": 0.1276, - "Nodes": [ - { - "Name": "8f", - "RegionID": 8, - "HostName": "derp8f.tailscale.com", - "IPv4": "176.58.88.183", - "IPv6": "2a00:dd80:3a::dfa", - "CanPort80": true - }, - { - "Name": "8g", - "RegionID": 8, - "HostName": "derp8g.tailscale.com", - "IPv4": "176.58.92.254", - "IPv6": "2a00:dd80:3a::ed", - "CanPort80": true - }, - { - "Name": "8e", - "RegionID": 8, - "HostName": "derp8e.tailscale.com", - "IPv4": "176.58.92.144", - "IPv6": "2a00:dd80:3a::b33", - "CanPort80": true - } - ] - }, - "9": { - "RegionID": 9, - "RegionCode": "dfw", - "RegionName": "Dallas", - "Latitude": 32.779167, - "Longitude": -96.808889, - "Nodes": [ - { - "Name": "9e", - "RegionID": 9, - "HostName": "derp9e.tailscale.com", - "IPv4": "192.73.248.83", - "IPv6": "2607:f740:100::359", - "CanPort80": true - }, - { - "Name": "9f", - "RegionID": 9, - "HostName": "derp9f.tailscale.com", - "IPv4": "209.177.156.197", - "IPv6": "2607:f740:100::cad", - "CanPort80": true - }, - { - "Name": "9d", - "RegionID": 9, - "HostName": "derp9d.tailscale.com", - "IPv4": "209.177.156.94", - "IPv6": "2607:f740:100::c05", - "CanPort80": true - } - ] - } - } - }, - "DisplayMessages": null, - "TKAEnabled": false, - "TKAHead": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", - "Domain": "kratail2tid@passkey", - "DomainAuditLogID": "", - "UserProfiles": { - "3982058329734709": { - "ID": 3982058329734709, - "LoginName": "monitorpasskeykradalby@passkey", - "DisplayName": "monitorpasskeykradalby" - } - } + "PacketFilterRules": 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.124.195.93": { - "peer_name": "exit-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user1/tailscaled.sock whois --json 100.124.195.93", - "response": null - }, - "100.116.18.24": { - "peer_name": "exit-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user1/tailscaled.sock whois --json 100.116.18.24", - "response": null - }, - "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.107.162.14": { - "peer_name": "group-a-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user1/tailscaled.sock whois --json 100.107.162.14", - "response": null - }, - "100.77.135.18": { - "peer_name": "group-b-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user1/tailscaled.sock whois --json 100.77.135.18", - "response": null - }, - "100.105.127.107": { - "peer_name": "multi-exit-router", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user1/tailscaled.sock whois --json 100.105.127.107", - "response": null - }, - "100.109.43.124": { - "peer_name": "router-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user1/tailscaled.sock whois --json 100.109.43.124", - "response": null - }, - "100.65.172.123": { - "peer_name": "router-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user1/tailscaled.sock whois --json 100.65.172.123", - "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 - } - }, "netmap": { - "SelfNode": { - "ID": 539541576444929, - "StableID": "nSq9YrqMD511CNTRL", - "Name": "user1.tail78f774.ts.net.", - "User": 4156223528223174, - "Key": "nodekey:96338a2cd2ea803c915ed8fdf882d66ca0c6a59d0fcf0bc4b3f928d22d1ac743", - "KeyExpiry": "2026-07-22T10:04:13Z", - "DiscoKey": "discokey:94c62b25a93d1474bcbf8b0e5f79763e3b093993c831b0a40e98b875827b232a", - "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:43259", "10.65.0.27:43259", "172.17.0.1:43259"], - "Hostinfo": { - "Hostname": "user1", - "Services": [ - { "Proto": "peerapi4", "Port": 46708 }, - { "Proto": "peerapi6", "Port": 46708 }, - { "Proto": "peerapi-dns-proxy", "Port": 1 } - ] - }, - "Created": "2026-01-23T10:04:13.531671894Z", - "MachineAuthorized": true, - "CapMap": { - "https://tailscale.com/cap/file-sharing": null, - "https://tailscale.com/cap/is-admin": null, - "https://tailscale.com/cap/is-owner": null, - "https://tailscale.com/cap/ssh": null, - "https://tailscale.com/cap/tailnet-lock": null, - "probe-udp-lifetime": null, - "ssh-behavior-v1": null, - "ssh-env-vars": null, - "store-appc-routes": null, - "tailnet-display-name": ["kratail2tid@passkey"] - }, - "ComputedName": "user1", - "ComputedNameWithHost": "user1" - }, - "AllCaps": [ - "tailnet-display-name", - "https://tailscale.com/cap/is-owner", - "https://tailscale.com/cap/tailnet-lock", - "probe-udp-lifetime", - "https://tailscale.com/cap/is-admin", - "https://tailscale.com/cap/file-sharing", - "https://tailscale.com/cap/ssh", - "store-appc-routes", - "ssh-env-vars", - "ssh-behavior-v1" - ], - "NodeKey": "nodekey:96338a2cd2ea803c915ed8fdf882d66ca0c6a59d0fcf0bc4b3f928d22d1ac743", - "MachineKey": "mkey:98b7ed0fef020882cab4324b39ac93b60741794e722411083d0d3cf703833f4a", "Peers": [], - "DNS": { - "Routes": { - "tail78f774.ts.net.": null, - "ts.net.": [{ "Addr": "199.247.155.53" }, { "Addr": "2620:111:8007::53" }] - }, - "Domains": ["tail78f774.ts.net"], - "Proxied": true, - "ExitNodeFilteredSet": [".ts.net", ".tailscale.net"] - }, - "PacketFilter": [], - "PacketFilterRules": null, - "SSHPolicy": { "rules": [] }, - "CollectServices": false, - "DERPMap": { - "Regions": { - "1": { - "RegionID": 1, - "RegionCode": "nyc", - "RegionName": "New York City", - "Latitude": 40.7128, - "Longitude": -74.006, - "Nodes": [ - { - "Name": "1h", - "RegionID": 1, - "HostName": "derp1h.tailscale.com", - "IPv4": "199.38.181.93", - "IPv6": "2607:f740:f::afd", - "CanPort80": true - }, - { - "Name": "1g", - "RegionID": 1, - "HostName": "derp1g.tailscale.com", - "IPv4": "209.177.145.120", - "IPv6": "2607:f740:f::3eb", - "CanPort80": true - }, - { - "Name": "1i", - "RegionID": 1, - "HostName": "derp1i.tailscale.com", - "IPv4": "199.38.181.103", - "IPv6": "2607:f740:f::e19", - "CanPort80": true - }, - { - "Name": "1f", - "RegionID": 1, - "HostName": "derp1f.tailscale.com", - "IPv4": "199.38.181.104", - "IPv6": "2607:f740:f::bc", - "CanPort80": true - } - ] - }, - "10": { - "RegionID": 10, - "RegionCode": "sea", - "RegionName": "Seattle", - "Latitude": 47.609722, - "Longitude": -122.333056, - "Nodes": [ - { - "Name": "10c", - "RegionID": 10, - "HostName": "derp10c.tailscale.com", - "IPv4": "192.73.240.121", - "IPv6": "2607:f740:14::40c", - "CanPort80": true - }, - { - "Name": "10d", - "RegionID": 10, - "HostName": "derp10d.tailscale.com", - "IPv4": "192.73.240.132", - "IPv6": "2607:f740:14::500", - "CanPort80": true - }, - { - "Name": "10b", - "RegionID": 10, - "HostName": "derp10b.tailscale.com", - "IPv4": "192.73.240.161", - "IPv6": "2607:f740:14::61c", - "CanPort80": true - } - ] - }, - "11": { - "RegionID": 11, - "RegionCode": "sao", - "RegionName": "São Paulo", - "Latitude": -23.55, - "Longitude": -46.633333, - "Nodes": [ - { - "Name": "11f", - "RegionID": 11, - "HostName": "derp11f.tailscale.com", - "IPv4": "172.237.61.197", - "IPv6": "2600:3c0d::2000:3bff:fe44:6166", - "CanPort80": true - }, - { - "Name": "11g", - "RegionID": 11, - "HostName": "derp11g.tailscale.com", - "IPv4": "172.237.61.190", - "IPv6": "2600:3c0d::2000:62ff:febe:2e67", - "CanPort80": true - }, - { - "Name": "11e", - "RegionID": 11, - "HostName": "derp11e.tailscale.com", - "IPv4": "172.237.61.194", - "IPv6": "2600:3c0d::2000:d2ff:fe43:1790", - "CanPort80": true - } - ] - }, - "12": { - "RegionID": 12, - "RegionCode": "ord", - "RegionName": "Chicago", - "Latitude": 41.881944, - "Longitude": -87.627778, - "Nodes": [ - { - "Name": "12e", - "RegionID": 12, - "HostName": "derp12e.tailscale.com", - "IPv4": "209.177.158.15", - "IPv6": "2607:f740:e::b17", - "CanPort80": true - }, - { - "Name": "12f", - "RegionID": 12, - "HostName": "derp12f.tailscale.com", - "IPv4": "199.38.182.118", - "IPv6": "2607:f740:e::4c8", - "CanPort80": true - }, - { - "Name": "12d", - "RegionID": 12, - "HostName": "derp12d.tailscale.com", - "IPv4": "209.177.158.246", - "IPv6": "2607:f740:e::811", - "CanPort80": true - } - ] - }, - "13": { - "RegionID": 13, - "RegionCode": "den", - "RegionName": "Denver", - "Latitude": 39.7392, - "Longitude": -104.9849, - "Nodes": [ - { - "Name": "13c", - "RegionID": 13, - "HostName": "derp13c.tailscale.com", - "IPv4": "192.73.242.28", - "IPv6": "2607:f740:16::5c", - "CanPort80": true - }, - { - "Name": "13d", - "RegionID": 13, - "HostName": "derp13d.tailscale.com", - "IPv4": "192.73.242.204", - "IPv6": "2607:f740:16::c23", - "CanPort80": true - }, - { - "Name": "13b", - "RegionID": 13, - "HostName": "derp13b.tailscale.com", - "IPv4": "192.73.242.187", - "IPv6": "2607:f740:16::640", - "CanPort80": true - } - ] - }, - "14": { - "RegionID": 14, - "RegionCode": "ams", - "RegionName": "Amsterdam", - "Latitude": 52.372778, - "Longitude": 4.893611, - "Nodes": [ - { - "Name": "14c", - "RegionID": 14, - "HostName": "derp14c.tailscale.com", - "IPv4": "176.58.93.147", - "IPv6": "2a00:dd80:3c::b09", - "CanPort80": true - }, - { - "Name": "14d", - "RegionID": 14, - "HostName": "derp14d.tailscale.com", - "IPv4": "176.58.93.154", - "IPv6": "2a00:dd80:3c::3d5", - "CanPort80": true - }, - { - "Name": "14b", - "RegionID": 14, - "HostName": "derp14b.tailscale.com", - "IPv4": "176.58.93.248", - "IPv6": "2a00:dd80:3c::807", - "CanPort80": true - } - ] - }, - "15": { - "RegionID": 15, - "RegionCode": "jnb", - "RegionName": "Johannesburg", - "Latitude": -26.204444, - "Longitude": 28.045556, - "Nodes": [ - { - "Name": "15c", - "RegionID": 15, - "HostName": "derp15c.tailscale.com", - "IPv4": "102.67.165.185", - "IPv6": "2c0f:edb0:0:10::b59", - "CanPort80": true - }, - { - "Name": "15d", - "RegionID": 15, - "HostName": "derp15d.tailscale.com", - "IPv4": "102.67.165.36", - "IPv6": "2c0f:edb0:0:10::599", - "CanPort80": true - }, - { - "Name": "15b", - "RegionID": 15, - "HostName": "derp15b.tailscale.com", - "IPv4": "102.67.165.90", - "IPv6": "2c0f:edb0:0:10::963", - "CanPort80": true - } - ] - }, - "16": { - "RegionID": 16, - "RegionCode": "mia", - "RegionName": "Miami", - "Latitude": 25.78, - "Longitude": -80.21, - "Nodes": [ - { - "Name": "16c", - "RegionID": 16, - "HostName": "derp16c.tailscale.com", - "IPv4": "192.73.243.229", - "IPv6": "2607:f740:17::4e4", - "CanPort80": true - }, - { - "Name": "16d", - "RegionID": 16, - "HostName": "derp16d.tailscale.com", - "IPv4": "192.73.243.141", - "IPv6": "2607:f740:17::475", - "CanPort80": true - }, - { - "Name": "16b", - "RegionID": 16, - "HostName": "derp16b.tailscale.com", - "IPv4": "192.73.243.135", - "IPv6": "2607:f740:17::476", - "CanPort80": true - } - ] - }, - "17": { - "RegionID": 17, - "RegionCode": "lax", - "RegionName": "Los Angeles", - "Latitude": 34.05, - "Longitude": -118.25, - "Nodes": [ - { - "Name": "17c", - "RegionID": 17, - "HostName": "derp17c.tailscale.com", - "IPv4": "208.111.40.12", - "IPv6": "2607:f740:c::10", - "CanPort80": true - }, - { - "Name": "17d", - "RegionID": 17, - "HostName": "derp17d.tailscale.com", - "IPv4": "208.111.40.216", - "IPv6": "2607:f740:c::e1b", - "CanPort80": true - }, - { - "Name": "17b", - "RegionID": 17, - "HostName": "derp17b.tailscale.com", - "IPv4": "192.73.244.245", - "IPv6": "2607:f740:c::646", - "CanPort80": true - } - ] - }, - "18": { - "RegionID": 18, - "RegionCode": "par", - "RegionName": "Paris", - "Latitude": 48.856667, - "Longitude": 2.352222, - "Nodes": [ - { - "Name": "18c", - "RegionID": 18, - "HostName": "derp18c.tailscale.com", - "IPv4": "176.58.90.207", - "IPv6": "2a00:dd80:3e::c19", - "CanPort80": true - }, - { - "Name": "18d", - "RegionID": 18, - "HostName": "derp18d.tailscale.com", - "IPv4": "176.58.90.104", - "IPv6": "2a00:dd80:3e::f2e", - "CanPort80": true - }, - { - "Name": "18b", - "RegionID": 18, - "HostName": "derp18b.tailscale.com", - "IPv4": "176.58.90.147", - "IPv6": "2a00:dd80:3e::363", - "CanPort80": true - } - ] - }, - "19": { - "RegionID": 19, - "RegionCode": "mad", - "RegionName": "Madrid", - "Latitude": 40.416944, - "Longitude": -3.703333, - "Nodes": [ - { - "Name": "19c", - "RegionID": 19, - "HostName": "derp19c.tailscale.com", - "IPv4": "45.159.97.61", - "IPv6": "2a00:dd80:14:10::20", - "CanPort80": true - }, - { - "Name": "19d", - "RegionID": 19, - "HostName": "derp19d.tailscale.com", - "IPv4": "45.159.97.233", - "IPv6": "2a00:dd80:14:10::34a", - "CanPort80": true - }, - { - "Name": "19b", - "RegionID": 19, - "HostName": "derp19b.tailscale.com", - "IPv4": "45.159.97.144", - "IPv6": "2a00:dd80:14:10::335", - "CanPort80": true - } - ] - }, - "2": { - "RegionID": 2, - "RegionCode": "sfo", - "RegionName": "San Francisco", - "Latitude": 37.7775, - "Longitude": -122.416389, - "Nodes": [ - { - "Name": "2e", - "RegionID": 2, - "HostName": "derp2e.tailscale.com", - "IPv4": "192.73.252.134", - "IPv6": "2607:f740:0:3f::44c", - "CanPort80": true - }, - { - "Name": "2f", - "RegionID": 2, - "HostName": "derp2f.tailscale.com", - "IPv4": "208.111.34.178", - "IPv6": "2607:f740:0:3f::f4", - "CanPort80": true - }, - { - "Name": "2d", - "RegionID": 2, - "HostName": "derp2d.tailscale.com", - "IPv4": "192.73.252.65", - "IPv6": "2607:f740:0:3f::287", - "CanPort80": true - } - ] - }, - "20": { - "RegionID": 20, - "RegionCode": "hkg", - "RegionName": "Hong Kong", - "Latitude": 22.3193, - "Longitude": 114.1694, - "Nodes": [ - { - "Name": "20c", - "RegionID": 20, - "HostName": "derp20c.tailscale.com", - "IPv4": "205.147.105.30", - "IPv6": "2403:2500:8000:1::5fb", - "CanPort80": true - }, - { - "Name": "20d", - "RegionID": 20, - "HostName": "derp20d.tailscale.com", - "IPv4": "205.147.105.78", - "IPv6": "2403:2500:8000:1::e9a", - "CanPort80": true - }, - { - "Name": "20b", - "RegionID": 20, - "HostName": "derp20b.tailscale.com", - "IPv4": "103.6.84.152", - "IPv6": "2403:2500:8000:1::ef6", - "CanPort80": true - } - ] - }, - "21": { - "RegionID": 21, - "RegionCode": "tor", - "RegionName": "Toronto", - "Latitude": 43.741667, - "Longitude": -79.373333, - "Nodes": [ - { - "Name": "21c", - "RegionID": 21, - "HostName": "derp21c.tailscale.com", - "IPv4": "162.248.221.215", - "IPv6": "2607:f740:50::f10", - "CanPort80": true - }, - { - "Name": "21d", - "RegionID": 21, - "HostName": "derp21d.tailscale.com", - "IPv4": "162.248.221.248", - "IPv6": "2607:f740:50::ca4", - "CanPort80": true - }, - { - "Name": "21b", - "RegionID": 21, - "HostName": "derp21b.tailscale.com", - "IPv4": "162.248.221.199", - "IPv6": "2607:f740:50::1d1", - "CanPort80": true - } - ] - }, - "22": { - "RegionID": 22, - "RegionCode": "waw", - "RegionName": "Warsaw", - "Latitude": 52.23, - "Longitude": 21.011111, - "Nodes": [ - { - "Name": "22c", - "RegionID": 22, - "HostName": "derp22c.tailscale.com", - "IPv4": "45.159.98.253", - "IPv6": "2a00:dd80:40:100::3f", - "CanPort80": true - }, - { - "Name": "22d", - "RegionID": 22, - "HostName": "derp22d.tailscale.com", - "IPv4": "45.159.98.145", - "IPv6": "2a00:dd80:40:100::211", - "CanPort80": true - }, - { - "Name": "22b", - "RegionID": 22, - "HostName": "derp22b.tailscale.com", - "IPv4": "45.159.98.196", - "IPv6": "2a00:dd80:40:100::316", - "CanPort80": true - } - ] - }, - "23": { - "RegionID": 23, - "RegionCode": "dbi", - "RegionName": "Dubai", - "Latitude": 25.263056, - "Longitude": 55.297222, - "Nodes": [ - { - "Name": "23c", - "RegionID": 23, - "HostName": "derp23c.tailscale.com", - "IPv4": "185.34.3.207", - "IPv6": "2a00:dd80:3f:100::a50", - "CanPort80": true - }, - { - "Name": "23d", - "RegionID": 23, - "HostName": "derp23d.tailscale.com", - "IPv4": "185.34.3.75", - "IPv6": "2a00:dd80:3f:100::97e", - "CanPort80": true - }, - { - "Name": "23b", - "RegionID": 23, - "HostName": "derp23b.tailscale.com", - "IPv4": "185.34.3.232", - "IPv6": "2a00:dd80:3f:100::76f", - "CanPort80": true - } - ] - }, - "24": { - "RegionID": 24, - "RegionCode": "hnl", - "RegionName": "Honolulu", - "Latitude": 21.306944, - "Longitude": -157.858333, - "Nodes": [ - { - "Name": "24c", - "RegionID": 24, - "HostName": "derp24c.tailscale.com", - "IPv4": "208.83.233.233", - "IPv6": "2001:19f0:c000:c591:5400:04ff:fe26:2c5f", - "CanPort80": true - }, - { - "Name": "24d", - "RegionID": 24, - "HostName": "derp24d.tailscale.com", - "IPv4": "208.72.155.133", - "IPv6": "2001:19f0:c000:c564:5400:04ff:fe26:2ba8", - "CanPort80": true - }, - { - "Name": "24b", - "RegionID": 24, - "HostName": "derp24b.tailscale.com", - "IPv4": "208.83.234.151", - "IPv6": "2001:19f0:c000:c586:5400:04ff:fe26:2ba6", - "CanPort80": true - } - ] - }, - "25": { - "RegionID": 25, - "RegionCode": "nai", - "RegionName": "Nairobi", - "Latitude": -1.286389, - "Longitude": 36.817222, - "Nodes": [ - { - "Name": "25c", - "RegionID": 25, - "HostName": "derp25c.tailscale.com", - "IPv4": "102.67.167.37", - "IPv6": "2c0f:edb0:2000:1::2c7", - "CanPort80": true - }, - { - "Name": "25d", - "RegionID": 25, - "HostName": "derp25d.tailscale.com", - "IPv4": "102.67.167.188", - "IPv6": "2c0f:edb0:2000:1::188", - "CanPort80": true - }, - { - "Name": "25b", - "RegionID": 25, - "HostName": "derp25b.tailscale.com", - "IPv4": "102.67.167.245", - "IPv6": "2c0f:edb0:2000:1::2e9", - "CanPort80": true - } - ] - }, - "26": { - "RegionID": 26, - "RegionCode": "nue", - "RegionName": "Nuremberg", - "Latitude": 49.453889, - "Longitude": 11.0775, - "Nodes": [ - { - "Name": "26c", - "RegionID": 26, - "HostName": "derp26c.tailscale.com", - "IPv4": "49.12.193.137", - "IPv6": "2a01:4f8:1c1c:5c70::1", - "CanPort80": true - }, - { - "Name": "26d", - "RegionID": 26, - "HostName": "derp26d.tailscale.com", - "IPv4": "49.13.204.141", - "IPv6": "2a01:4f8:1c0c:7d06::1", - "CanPort80": true - }, - { - "Name": "26b", - "RegionID": 26, - "HostName": "derp26b.tailscale.com", - "IPv4": "167.235.72.200", - "IPv6": "2a01:4f8:1c1c:47b6::1", - "CanPort80": true - } - ] - }, - "27": { - "RegionID": 27, - "RegionCode": "iad", - "RegionName": "Ashburn", - "Latitude": 39.03, - "Longitude": -77.471111, - "Nodes": [ - { - "Name": "27d", - "RegionID": 27, - "HostName": "derp27d.tailscale.com", - "IPv4": "178.156.152.106", - "IPv6": "2a01:4ff:f0:3c8e::1", - "CanPort80": true - }, - { - "Name": "27c", - "RegionID": 27, - "HostName": "derp27c.tailscale.com", - "IPv4": "178.156.152.91", - "IPv6": "2a01:4ff:f0:3913::1", - "CanPort80": true - }, - { - "Name": "27e", - "RegionID": 27, - "HostName": "derp27e.tailscale.com", - "IPv4": "178.156.134.232", - "IPv6": "2a01:4ff:f0:28d4::1", - "CanPort80": true - }, - { - "Name": "27b", - "RegionID": 27, - "HostName": "derp27b.tailscale.com", - "IPv4": "5.161.218.233", - "IPv6": "2a01:4ff:f0:3db9::1", - "CanPort80": true - } - ] - }, - "28": { - "RegionID": 28, - "RegionCode": "hel", - "RegionName": "Helsinki", - "Latitude": 60.170833, - "Longitude": 24.9375, - "Nodes": [ - { - "Name": "28c", - "RegionID": 28, - "HostName": "derp28c.tailscale.com", - "IPv4": "95.217.2.165", - "IPv6": "2a01:4f9:c012:cd74::1", - "CanPort80": true - }, - { - "Name": "28d", - "RegionID": 28, - "HostName": "derp28d.tailscale.com", - "IPv4": "157.180.28.32", - "IPv6": "2a01:4f9:c012:2e5b::1", - "CanPort80": true - }, - { - "Name": "28b", - "RegionID": 28, - "HostName": "derp28b.tailscale.com", - "IPv4": "65.109.143.62", - "IPv6": "2a01:4f9:c012:d55c::1", - "CanPort80": true - } - ] - }, - "3": { - "RegionID": 3, - "RegionCode": "sin", - "RegionName": "Singapore", - "Latitude": 1.3521, - "Longitude": 103.8198, - "Nodes": [ - { - "Name": "3g", - "RegionID": 3, - "HostName": "derp3g.tailscale.com", - "IPv4": "172.237.72.79", - "IPv6": "2600:3c15::2000:adff:fe08:6fab", - "CanPort80": true - }, - { - "Name": "3f", - "RegionID": 3, - "HostName": "derp3f.tailscale.com", - "IPv4": "172.237.72.8", - "IPv6": "2600:3c15::2000:53ff:fe48:a668", - "CanPort80": true - }, - { - "Name": "3h", - "RegionID": 3, - "HostName": "derp3h.tailscale.com", - "IPv4": "172.237.66.30", - "IPv6": "2600:3c15::2000:3dff:fe44:50aa", - "CanPort80": true - }, - { - "Name": "3e", - "RegionID": 3, - "HostName": "derp3e.tailscale.com", - "IPv4": "172.237.72.43", - "IPv6": "2600:3c15::2000:6cff:fee4:d799", - "CanPort80": true - } - ] - }, - "4": { - "RegionID": 4, - "RegionCode": "fra", - "RegionName": "Frankfurt", - "Latitude": 50.1109, - "Longitude": 8.6821, - "Nodes": [ - { - "Name": "4h", - "RegionID": 4, - "HostName": "derp4h.tailscale.com", - "IPv4": "185.40.234.77", - "IPv6": "2a00:dd80:20::bcf", - "CanPort80": true - }, - { - "Name": "4g", - "RegionID": 4, - "HostName": "derp4g.tailscale.com", - "IPv4": "185.40.234.113", - "IPv6": "2a00:dd80:20::8f", - "CanPort80": true - }, - { - "Name": "4i", - "RegionID": 4, - "HostName": "derp4i.tailscale.com", - "IPv4": "185.40.234.53", - "IPv6": "2a00:dd80:20::8a6", - "CanPort80": true - }, - { - "Name": "4f", - "RegionID": 4, - "HostName": "derp4f.tailscale.com", - "IPv4": "185.40.234.219", - "IPv6": "2a00:dd80:20::a25", - "CanPort80": true - } - ] - }, - "5": { - "RegionID": 5, - "RegionCode": "syd", - "RegionName": "Sydney", - "Latitude": -33.867778, - "Longitude": 151.21, - "Nodes": [ - { - "Name": "5f", - "RegionID": 5, - "HostName": "derp5f.tailscale.com", - "IPv4": "172.105.166.103", - "IPv6": "2400:8907::2000:ccff:fe1f:80da", - "CanPort80": true - }, - { - "Name": "5g", - "RegionID": 5, - "HostName": "derp5g.tailscale.com", - "IPv4": "172.105.169.57", - "IPv6": "2400:8907::2000:2fff:fea7:57f4", - "CanPort80": true - }, - { - "Name": "5e", - "RegionID": 5, - "HostName": "derp5e.tailscale.com", - "IPv4": "172.105.179.230", - "IPv6": "2400:8907::2000:ceff:fe8d:4f4e", - "CanPort80": true - } - ] - }, - "6": { - "RegionID": 6, - "RegionCode": "blr", - "RegionName": "Bengaluru", - "Latitude": 12.9716, - "Longitude": 77.5946, - "Nodes": [ - { - "Name": "6a", - "RegionID": 6, - "HostName": "derp6.tailscale.com", - "IPv4": "68.183.90.120", - "IPv6": "2400:6180:100:d0::982:d001", - "CanPort80": true - } - ] - }, - "7": { - "RegionID": 7, - "RegionCode": "tok", - "RegionName": "Tokyo", - "Latitude": 35.6764, - "Longitude": 139.65, - "Nodes": [ - { - "Name": "7g", - "RegionID": 7, - "HostName": "derp7g.tailscale.com", - "IPv4": "172.238.6.179", - "IPv6": "2600:3c18::2000:3fff:fe80:3ebd", - "CanPort80": true - }, - { - "Name": "7f", - "RegionID": 7, - "HostName": "derp7f.tailscale.com", - "IPv4": "172.238.6.34", - "IPv6": "2600:3c18::2000:acff:fe8e:3ed5", - "CanPort80": true - }, - { - "Name": "7h", - "RegionID": 7, - "HostName": "derp7h.tailscale.com", - "IPv4": "172.237.28.183", - "IPv6": "2600:3c18::2000:b1ff:fea9:4560", - "CanPort80": true - }, - { - "Name": "7e", - "RegionID": 7, - "HostName": "derp7e.tailscale.com", - "IPv4": "172.238.6.180", - "IPv6": "2600:3c18::2000:60ff:fe0f:6e83", - "STUNOnly": true, - "CanPort80": true - } - ] - }, - "8": { - "RegionID": 8, - "RegionCode": "lhr", - "RegionName": "London", - "Latitude": 51.5072, - "Longitude": 0.1276, - "Nodes": [ - { - "Name": "8f", - "RegionID": 8, - "HostName": "derp8f.tailscale.com", - "IPv4": "176.58.88.183", - "IPv6": "2a00:dd80:3a::dfa", - "CanPort80": true - }, - { - "Name": "8g", - "RegionID": 8, - "HostName": "derp8g.tailscale.com", - "IPv4": "176.58.92.254", - "IPv6": "2a00:dd80:3a::ed", - "CanPort80": true - }, - { - "Name": "8e", - "RegionID": 8, - "HostName": "derp8e.tailscale.com", - "IPv4": "176.58.92.144", - "IPv6": "2a00:dd80:3a::b33", - "CanPort80": true - } - ] - }, - "9": { - "RegionID": 9, - "RegionCode": "dfw", - "RegionName": "Dallas", - "Latitude": 32.779167, - "Longitude": -96.808889, - "Nodes": [ - { - "Name": "9e", - "RegionID": 9, - "HostName": "derp9e.tailscale.com", - "IPv4": "192.73.248.83", - "IPv6": "2607:f740:100::359", - "CanPort80": true - }, - { - "Name": "9f", - "RegionID": 9, - "HostName": "derp9f.tailscale.com", - "IPv4": "209.177.156.197", - "IPv6": "2607:f740:100::cad", - "CanPort80": true - }, - { - "Name": "9d", - "RegionID": 9, - "HostName": "derp9d.tailscale.com", - "IPv4": "209.177.156.94", - "IPv6": "2607:f740:100::c05", - "CanPort80": true - } - ] - } - } - }, - "DisplayMessages": null, - "TKAEnabled": false, - "TKAHead": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", - "Domain": "kratail2tid@passkey", - "DomainAuditLogID": "", - "UserProfiles": { - "4156223528223174": { - "ID": 4156223528223174, - "LoginName": "kratail2tid@passkey", - "DisplayName": "kratail2tid" - } - } + "PacketFilterRules": null } } } diff --git a/hscontrol/policy/v2/testdata/grant_results/GRANT-V17.hujson b/hscontrol/policy/v2/testdata/grant_results/GRANT-V17.hujson index 02e828637..1b4690e26 100644 --- a/hscontrol/policy/v2/testdata/grant_results/GRANT-V17.hujson +++ b/hscontrol/policy/v2/testdata/grant_results/GRANT-V17.hujson @@ -5,23 +5,37 @@ // Expected: Rules on subnet-router { "test_id": "GRANT-V17", - "timestamp": "2026-02-23T15:41:15Z", - "propagation_wait_seconds": 8, "input": { - "policy_file": "grant_policies_v2/grant_v17.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -30,104 +44,93 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "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", "192.168.1.0/24"], - "via": ["tag:router"], - "ip": ["*"] + "src": [ + "*" + ], + "dst": [ + "10.33.0.0/16", + "192.168.1.0/24" + ], + "via": [ + "tag:router" + ], + "ip": [ + "*" + ] } ] }, - "grants_section": [ - { - "src": ["*"], - "dst": ["10.33.0.0/16", "192.168.1.0/24"], - "via": ["tag:router"], - "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"], + "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"], + "tags": [ + "tag:router" + ], "ipv4": "100.92.142.61", - "ipv6": "fd7a:115c:a1e0::3e37:8e3d", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] + "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"], + "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"], + "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"], + "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" @@ -136,101 +139,9 @@ }, "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:9779fa96e2ddcd3dac863acc09b50304481964bfb3bccf52ff79d95bbd1a031d", - "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:57299", - "10.65.0.27:57299", - "172.17.0.1:57299", - "172.18.0.1:57299", - "172.19.0.1:57299" - ], - "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 - } - } + "packet_filter_rules": 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": [ @@ -249,938 +160,25 @@ } ] } - ], - "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": [ - { - "Net": "10.33.0.0/16", - "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": { - "Node": { - "ID": 4041918547170221, - "StableID": "ngCb76MbZY11CNTRL", - "Name": "exit-node.tail78f774.ts.net.", - "User": 1260082990019555, - "Key": "nodekey:90f4a7b9dc024f1ddec414a49de2aa7611a2dd86efc9d7bae30862ad7c954269", - "DiscoKey": "discokey:701f9ed9296436d3251a9d00d061859edb5ee55602bc0ecf7c64330adc77c815", - "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:47924", - "10.65.0.27:47924", - "172.17.0.1:47924", - "172.18.0.1:47924", - "172.19.0.1:47924" - ], - "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:7e9099516456f84f9af01c51ce03bc38764c4c02bf6c73a6d4b2495771a6c449", - "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:47452", - "10.65.0.27:47452", - "172.17.0.1:47452", - "172.18.0.1:47452", - "172.19.0.1:47452" - ], - "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:2dd2ca7f9f1378d3ec23a7d6ba57a735032f9a4f90b6c95b2c2385950ec7ae45", - "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:54907", - "10.65.0.27:54907", - "172.17.0.1:54907", - "172.18.0.1:54907", - "172.19.0.1:54907" - ], - "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:9f71ff1e1652916263ef05d0a5e9d9e18239aa598f956b24c563c03a1088cb39", - "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:34495", - "10.65.0.27:34495", - "172.17.0.1:34495", - "172.18.0.1:34495", - "172.19.0.1:34495" - ], - "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:9841ea823abefc7197a67b2b33ba551868a344e64ecd27e00d1a100e5e9e5427", - "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:42311", - "10.65.0.27:42311", - "172.17.0.1:42311", - "172.18.0.1:42311", - "172.19.0.1:42311" - ], - "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:733598f0f74431b5b2b28fb5980d8b2f79b5ca5524664998d1d011a651643211", - "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:50398", - "10.65.0.27:50398", - "172.17.0.1:50398", - "172.18.0.1:50398", - "172.19.0.1:50398" - ], - "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:203d3bfbd67a06d210c027c546a05658fba93aeaea5042b12d50b93d31a5d156", - "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:44240", - "10.65.0.27:44240", - "172.17.0.1:44240", - "172.18.0.1:44240", - "172.19.0.1:44240" - ], - "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:9779fa96e2ddcd3dac863acc09b50304481964bfb3bccf52ff79d95bbd1a031d", - "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:57299", - "10.65.0.27:57299", - "172.17.0.1:57299", - "172.18.0.1:57299", - "172.19.0.1:57299" - ], - "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 - } - } + "packet_filter_rules": 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:9779fa96e2ddcd3dac863acc09b50304481964bfb3bccf52ff79d95bbd1a031d", - "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:57299", - "10.65.0.27:57299", - "172.17.0.1:57299", - "172.18.0.1:57299", - "172.19.0.1:57299" - ], - "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 - } - } + "packet_filter_rules": 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:9779fa96e2ddcd3dac863acc09b50304481964bfb3bccf52ff79d95bbd1a031d", - "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:57299", - "10.65.0.27:57299", - "172.17.0.1:57299", - "172.18.0.1:57299", - "172.19.0.1:57299" - ], - "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 - } - } + "packet_filter_rules": 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:9779fa96e2ddcd3dac863acc09b50304481964bfb3bccf52ff79d95bbd1a031d", - "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:57299", - "10.65.0.27:57299", - "172.17.0.1:57299", - "172.18.0.1:57299", - "172.19.0.1:57299" - ], - "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 - } - } + "packet_filter_rules": 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:9779fa96e2ddcd3dac863acc09b50304481964bfb3bccf52ff79d95bbd1a031d", - "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:57299", - "10.65.0.27:57299", - "172.17.0.1:57299", - "172.18.0.1:57299", - "172.19.0.1:57299" - ], - "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 - } - } + "packet_filter_rules": 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:9779fa96e2ddcd3dac863acc09b50304481964bfb3bccf52ff79d95bbd1a031d", - "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:57299", - "10.65.0.27:57299", - "172.17.0.1:57299", - "172.18.0.1:57299", - "172.19.0.1:57299" - ], - "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 - } - } + "packet_filter_rules": null } } } diff --git a/hscontrol/policy/v2/testdata/grant_results/GRANT-V18.hujson b/hscontrol/policy/v2/testdata/grant_results/GRANT-V18.hujson index 2b0d97925..64bd55228 100644 --- a/hscontrol/policy/v2/testdata/grant_results/GRANT-V18.hujson +++ b/hscontrol/policy/v2/testdata/grant_results/GRANT-V18.hujson @@ -5,24 +5,38 @@ // Expected: Error (HTTP 400) — dst "0.0.0.0/0": to allow all IP addresses, use "*" or "autogroup:internet" { "test_id": "GRANT-V18", - "description": "", - "timestamp": "2026-02-23T15:41:24Z", "error": true, "input": { - "policy_file": "grant_policies_v2/grant_v18.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -31,27 +45,36 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "grants": [ { - "src": ["*"], - "dst": ["0.0.0.0/0"], - "via": ["tag:exit"], + "src": [ + "*" + ], + "dst": [ + "0.0.0.0/0" + ], + "via": [ + "tag:exit" + ], "app": { - "example.com/cap/exit-via-app": [{}] + "example.com/cap/exit-via-app": [ + {} + ] } } ] }, - "grants_section": [ - { "src": ["*"], "dst": ["0.0.0.0/0"], "via": ["tag:exit"], "app": { "example.com/cap/exit-via-app": [{}] } } - ], - "api_endpoint": "https://api.tailscale.com/api/v2/tailnet/kratail2tid%40passkey/acl", - "api_method": "POST", "api_response_code": 400, "api_response_body": { "message": "dst \"0.0.0.0/0\": to allow all IP addresses, use \"*\" or \"autogroup:internet\"" diff --git a/hscontrol/policy/v2/testdata/grant_results/GRANT-V19.hujson b/hscontrol/policy/v2/testdata/grant_results/GRANT-V19.hujson index 264763a71..2ff38da27 100644 --- a/hscontrol/policy/v2/testdata/grant_results/GRANT-V19.hujson +++ b/hscontrol/policy/v2/testdata/grant_results/GRANT-V19.hujson @@ -5,23 +5,37 @@ // Expected: Rules on exit-node, user-kris, user-mon, user1 { "test_id": "GRANT-V19", - "timestamp": "2026-02-23T15:41:24Z", - "propagation_wait_seconds": 8, "input": { - "policy_file": "grant_policies_v2/grant_v19.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -30,19 +44,31 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "grants": [ { - "src": ["autogroup:member"], - "dst": ["tag:exit"], + "src": [ + "autogroup:member" + ], + "dst": [ + "tag:exit" + ], "app": { "tailscale.com/cap/drive": [ { - "shares": ["*"], + "shares": [ + "*" + ], "access": "rw" } ] @@ -50,96 +76,64 @@ } ] }, - "grants_section": [ - { - "src": ["autogroup:member"], - "dst": ["tag:exit"], - "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"], + "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"], + "tags": [ + "tag:router" + ], "ipv4": "100.92.142.61", - "ipv6": "fd7a:115c:a1e0::3e37:8e3d", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] + "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"], + "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"], + "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"], + "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" @@ -148,10 +142,6 @@ }, "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": [ @@ -164,11 +154,16 @@ ], "CapGrant": [ { - "Dsts": ["100.85.66.106/32", "fd7a:115c:a1e0::7c37:426a/128"], + "Dsts": [ + "100.85.66.106/32", + "fd7a:115c:a1e0::7c37:426a/128" + ], "CapMap": { "tailscale.com/cap/drive": [ { - "shares": ["*"], + "shares": [ + "*" + ], "access": "rw" } ] @@ -176,786 +171,82 @@ } ] } - ], - "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.85.66.106/32", - "Cap": "tailscale.com/cap/drive", - "Values": [ - { - "shares": ["*"], - "access": "rw" - } - ] - }, - { - "Dst": "fd7a:115c:a1e0::7c37:426a/128", - "Cap": "tailscale.com/cap/drive", - "Values": [ - { - "shares": ["*"], - "access": "rw" - } - ] - } - ] - } - ], - "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": { - "Node": { - "ID": 7728836216590060, - "StableID": "nf4dJTRQM321CNTRL", - "Name": "user-kris.tail78f774.ts.net.", - "User": 4538565228176803, - "Key": "nodekey:40d0f8f49fd519e4a4a2b7d278dcc8863254d4fb8b0219f1d1304cdd172e795f", - "KeyExpiry": "2026-08-19T14:09:34Z", - "DiscoKey": "discokey:9841ea823abefc7197a67b2b33ba551868a344e64ecd27e00d1a100e5e9e5427", - "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:42311", - "10.65.0.27:42311", - "172.17.0.1:42311", - "172.18.0.1:42311", - "172.19.0.1:42311" - ], - "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/drive": [ - { - "shares": ["*"], - "access": "rw" - } - ] - } - } - }, - "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": { - "Node": { - "ID": 1840115676059256, - "StableID": "nFzZ7giPNF11CNTRL", - "Name": "user-mon.tail78f774.ts.net.", - "User": 3982058329734709, - "Key": "nodekey:1ca6cca66d2b3811ec290c2f7ac30125c3568e19e303a8e30f6b165c9ee75a51", - "KeyExpiry": "2026-08-19T14:09:00Z", - "DiscoKey": "discokey:733598f0f74431b5b2b28fb5980d8b2f79b5ca5524664998d1d011a651643211", - "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:50398", - "10.65.0.27:50398", - "172.17.0.1:50398", - "172.18.0.1:50398", - "172.19.0.1:50398" - ], - "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/drive": [ - { - "shares": ["*"], - "access": "rw" - } - ] - } - } - }, - "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": { - "Node": { - "ID": 539541576444929, - "StableID": "nSq9YrqMD511CNTRL", - "Name": "user1.tail78f774.ts.net.", - "User": 4156223528223174, - "Key": "nodekey:96338a2cd2ea803c915ed8fdf882d66ca0c6a59d0fcf0bc4b3f928d22d1ac743", - "KeyExpiry": "2026-07-22T10:04:13Z", - "DiscoKey": "discokey:203d3bfbd67a06d210c027c546a05658fba93aeaea5042b12d50b93d31a5d156", - "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:44240", - "10.65.0.27:44240", - "172.17.0.1:44240", - "172.18.0.1:44240", - "172.19.0.1:44240" - ], - "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/drive": [ - { - "shares": ["*"], - "access": "rw" - } - ] - } - } - } - } + ] }, "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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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.85.66.106", "fd7a:115c:a1e0::7c37:426a"], + "SrcIPs": [ + "100.85.66.106", + "fd7a:115c:a1e0::7c37:426a" + ], "CapGrant": [ { - "Dsts": ["100.110.121.96/32", "fd7a:115c:a1e0::1737:7960/128"], + "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.85.66.106/32", "fd7a:115c:a1e0::7c37:426a/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": { - "Node": { - "ID": 4041918547170221, - "StableID": "ngCb76MbZY11CNTRL", - "Name": "exit-node.tail78f774.ts.net.", - "User": 1260082990019555, - "Key": "nodekey:90f4a7b9dc024f1ddec414a49de2aa7611a2dd86efc9d7bae30862ad7c954269", - "DiscoKey": "discokey:701f9ed9296436d3251a9d00d061859edb5ee55602bc0ecf7c64330adc77c815", - "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:47924", - "10.65.0.27:47924", - "172.17.0.1:47924", - "172.18.0.1:47924", - "172.19.0.1:47924" - ], - "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/drive-sharer": 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.85.66.106", "fd7a:115c:a1e0::7c37:426a"], + "SrcIPs": [ + "100.85.66.106", + "fd7a:115c:a1e0::7c37:426a" + ], "CapGrant": [ { - "Dsts": ["100.103.90.82/32", "fd7a:115c:a1e0::9e37:5a52/128"], + "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.85.66.106/32", "fd7a:115c:a1e0::7c37:426a/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": { - "Node": { - "ID": 4041918547170221, - "StableID": "ngCb76MbZY11CNTRL", - "Name": "exit-node.tail78f774.ts.net.", - "User": 1260082990019555, - "Key": "nodekey:90f4a7b9dc024f1ddec414a49de2aa7611a2dd86efc9d7bae30862ad7c954269", - "DiscoKey": "discokey:701f9ed9296436d3251a9d00d061859edb5ee55602bc0ecf7c64330adc77c815", - "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:47924", - "10.65.0.27:47924", - "172.17.0.1:47924", - "172.18.0.1:47924", - "172.19.0.1:47924" - ], - "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/drive-sharer": 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.85.66.106", "fd7a:115c:a1e0::7c37:426a"], + "SrcIPs": [ + "100.85.66.106", + "fd7a:115c:a1e0::7c37:426a" + ], "CapGrant": [ { - "Dsts": ["100.90.199.68/32", "fd7a:115c:a1e0::2d01:c747/128"], + "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.85.66.106/32", "fd7a:115c:a1e0::7c37:426a/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": { - "Node": { - "ID": 4041918547170221, - "StableID": "ngCb76MbZY11CNTRL", - "Name": "exit-node.tail78f774.ts.net.", - "User": 1260082990019555, - "Key": "nodekey:90f4a7b9dc024f1ddec414a49de2aa7611a2dd86efc9d7bae30862ad7c954269", - "DiscoKey": "discokey:701f9ed9296436d3251a9d00d061859edb5ee55602bc0ecf7c64330adc77c815", - "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:47924", - "10.65.0.27:47924", - "172.17.0.1:47924", - "172.18.0.1:47924", - "172.19.0.1:47924" - ], - "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/drive-sharer": 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 - } - } + ] } } } diff --git a/hscontrol/policy/v2/testdata/grant_results/GRANT-V20.hujson b/hscontrol/policy/v2/testdata/grant_results/GRANT-V20.hujson index e480bb6d8..448f21148 100644 --- a/hscontrol/policy/v2/testdata/grant_results/GRANT-V20.hujson +++ b/hscontrol/policy/v2/testdata/grant_results/GRANT-V20.hujson @@ -5,23 +5,37 @@ // Expected: Rules on subnet-router { "test_id": "GRANT-V20", - "timestamp": "2026-02-23T15:41:34Z", - "propagation_wait_seconds": 8, "input": { - "policy_file": "grant_policies_v2/grant_v20.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -30,20 +44,32 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "grants": [ { - "src": ["autogroup:member"], - "dst": ["tag:router"], + "src": [ + "autogroup:member" + ], + "dst": [ + "tag:router" + ], "app": { "tailscale.com/cap/kubernetes": [ { "impersonate": { - "groups": ["system:masters"] + "groups": [ + "system:masters" + ] } } ] @@ -51,97 +77,64 @@ } ] }, - "grants_section": [ - { - "src": ["autogroup:member"], - "dst": ["tag:router"], - "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"], + "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"], + "tags": [ + "tag:router" + ], "ipv4": "100.92.142.61", - "ipv6": "fd7a:115c:a1e0::3e37:8e3d", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] + "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"], + "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"], + "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"], + "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" @@ -150,55 +143,9 @@ }, "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 - } - } + "packet_filter_rules": 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": [ @@ -211,12 +158,17 @@ ], "CapGrant": [ { - "Dsts": ["100.92.142.61/32", "fd7a:115c:a1e0::3e37:8e3d/128"], + "Dsts": [ + "100.92.142.61/32", + "fd7a:115c:a1e0::3e37:8e3d/128" + ], "CapMap": { "tailscale.com/cap/kubernetes": [ { "impersonate": { - "groups": ["system:masters"] + "groups": [ + "system:masters" + ] } } ] @@ -224,647 +176,25 @@ } ] } - ], - "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.92.142.61/32", - "Cap": "tailscale.com/cap/kubernetes", - "Values": [ - { - "impersonate": { - "groups": ["system:masters"] - } - } - ] - }, - { - "Dst": "fd7a:115c:a1e0::3e37:8e3d/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/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": { - "Node": { - "ID": 7728836216590060, - "StableID": "nf4dJTRQM321CNTRL", - "Name": "user-kris.tail78f774.ts.net.", - "User": 4538565228176803, - "Key": "nodekey:40d0f8f49fd519e4a4a2b7d278dcc8863254d4fb8b0219f1d1304cdd172e795f", - "KeyExpiry": "2026-08-19T14:09:34Z", - "DiscoKey": "discokey:9841ea823abefc7197a67b2b33ba551868a344e64ecd27e00d1a100e5e9e5427", - "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:42311", - "10.65.0.27:42311", - "172.17.0.1:42311", - "172.18.0.1:42311", - "172.19.0.1:42311" - ], - "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/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:733598f0f74431b5b2b28fb5980d8b2f79b5ca5524664998d1d011a651643211", - "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:50398", - "10.65.0.27:50398", - "172.17.0.1:50398", - "172.18.0.1:50398", - "172.19.0.1:50398" - ], - "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/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:203d3bfbd67a06d210c027c546a05658fba93aeaea5042b12d50b93d31a5d156", - "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:44240", - "10.65.0.27:44240", - "172.17.0.1:44240", - "172.18.0.1:44240", - "172.19.0.1:44240" - ], - "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"] - } - } - ] - } - } - } - } + ] }, "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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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:9779fa96e2ddcd3dac863acc09b50304481964bfb3bccf52ff79d95bbd1a031d", - "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:57299", - "10.65.0.27:57299", - "172.17.0.1:57299", - "172.18.0.1:57299", - "172.19.0.1:57299" - ], - "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": 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 - } - } + "packet_filter_rules": 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:9779fa96e2ddcd3dac863acc09b50304481964bfb3bccf52ff79d95bbd1a031d", - "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:57299", - "10.65.0.27:57299", - "172.17.0.1:57299", - "172.18.0.1:57299", - "172.19.0.1:57299" - ], - "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": 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 - } - } + "packet_filter_rules": 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:9779fa96e2ddcd3dac863acc09b50304481964bfb3bccf52ff79d95bbd1a031d", - "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:57299", - "10.65.0.27:57299", - "172.17.0.1:57299", - "172.18.0.1:57299", - "172.19.0.1:57299" - ], - "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": 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 - } - } + "packet_filter_rules": null } } } diff --git a/hscontrol/policy/v2/testdata/grant_results/GRANT-V21.hujson b/hscontrol/policy/v2/testdata/grant_results/GRANT-V21.hujson index 97096eed4..627fa1275 100644 --- a/hscontrol/policy/v2/testdata/grant_results/GRANT-V21.hujson +++ b/hscontrol/policy/v2/testdata/grant_results/GRANT-V21.hujson @@ -5,23 +5,37 @@ // Expected: Rules on subnet-router { "test_id": "GRANT-V21", - "timestamp": "2026-02-23T15:41:43Z", - "propagation_wait_seconds": 8, "input": { - "policy_file": "grant_policies_v2/grant_v21.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -30,104 +44,93 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "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:exit"], - "ip": ["*"] + "src": [ + "*" + ], + "dst": [ + "10.33.0.0/16" + ], + "via": [ + "tag:router", + "tag:exit" + ], + "ip": [ + "*" + ] } ] }, - "grants_section": [ - { - "src": ["*"], - "dst": ["10.33.0.0/16"], - "via": ["tag:router", "tag:exit"], - "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"], + "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"], + "tags": [ + "tag:router" + ], "ipv4": "100.92.142.61", - "ipv6": "fd7a:115c:a1e0::3e37:8e3d", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] + "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"], + "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"], + "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"], + "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" @@ -136,101 +139,9 @@ }, "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:9779fa96e2ddcd3dac863acc09b50304481964bfb3bccf52ff79d95bbd1a031d", - "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:57299", - "10.65.0.27:57299", - "172.17.0.1:57299", - "172.18.0.1:57299", - "172.19.0.1:57299" - ], - "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 - } - } + "packet_filter_rules": 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": [ @@ -249,938 +160,25 @@ } ] } - ], - "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": [ - { - "Net": "10.33.0.0/16", - "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": { - "Node": { - "ID": 4041918547170221, - "StableID": "ngCb76MbZY11CNTRL", - "Name": "exit-node.tail78f774.ts.net.", - "User": 1260082990019555, - "Key": "nodekey:90f4a7b9dc024f1ddec414a49de2aa7611a2dd86efc9d7bae30862ad7c954269", - "DiscoKey": "discokey:701f9ed9296436d3251a9d00d061859edb5ee55602bc0ecf7c64330adc77c815", - "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:47924", - "10.65.0.27:47924", - "172.17.0.1:47924", - "172.18.0.1:47924", - "172.19.0.1:47924" - ], - "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:7e9099516456f84f9af01c51ce03bc38764c4c02bf6c73a6d4b2495771a6c449", - "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:47452", - "10.65.0.27:47452", - "172.17.0.1:47452", - "172.18.0.1:47452", - "172.19.0.1:47452" - ], - "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:2dd2ca7f9f1378d3ec23a7d6ba57a735032f9a4f90b6c95b2c2385950ec7ae45", - "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:54907", - "10.65.0.27:54907", - "172.17.0.1:54907", - "172.18.0.1:54907", - "172.19.0.1:54907" - ], - "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:9f71ff1e1652916263ef05d0a5e9d9e18239aa598f956b24c563c03a1088cb39", - "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:34495", - "10.65.0.27:34495", - "172.17.0.1:34495", - "172.18.0.1:34495", - "172.19.0.1:34495" - ], - "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:9841ea823abefc7197a67b2b33ba551868a344e64ecd27e00d1a100e5e9e5427", - "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:42311", - "10.65.0.27:42311", - "172.17.0.1:42311", - "172.18.0.1:42311", - "172.19.0.1:42311" - ], - "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:733598f0f74431b5b2b28fb5980d8b2f79b5ca5524664998d1d011a651643211", - "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:50398", - "10.65.0.27:50398", - "172.17.0.1:50398", - "172.18.0.1:50398", - "172.19.0.1:50398" - ], - "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:203d3bfbd67a06d210c027c546a05658fba93aeaea5042b12d50b93d31a5d156", - "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:44240", - "10.65.0.27:44240", - "172.17.0.1:44240", - "172.18.0.1:44240", - "172.19.0.1:44240" - ], - "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:9779fa96e2ddcd3dac863acc09b50304481964bfb3bccf52ff79d95bbd1a031d", - "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:57299", - "10.65.0.27:57299", - "172.17.0.1:57299", - "172.18.0.1:57299", - "172.19.0.1:57299" - ], - "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 - } - } + "packet_filter_rules": 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:9779fa96e2ddcd3dac863acc09b50304481964bfb3bccf52ff79d95bbd1a031d", - "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:57299", - "10.65.0.27:57299", - "172.17.0.1:57299", - "172.18.0.1:57299", - "172.19.0.1:57299" - ], - "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 - } - } + "packet_filter_rules": 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:9779fa96e2ddcd3dac863acc09b50304481964bfb3bccf52ff79d95bbd1a031d", - "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:57299", - "10.65.0.27:57299", - "172.17.0.1:57299", - "172.18.0.1:57299", - "172.19.0.1:57299" - ], - "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 - } - } + "packet_filter_rules": 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:9779fa96e2ddcd3dac863acc09b50304481964bfb3bccf52ff79d95bbd1a031d", - "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:57299", - "10.65.0.27:57299", - "172.17.0.1:57299", - "172.18.0.1:57299", - "172.19.0.1:57299" - ], - "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 - } - } + "packet_filter_rules": 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:9779fa96e2ddcd3dac863acc09b50304481964bfb3bccf52ff79d95bbd1a031d", - "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:57299", - "10.65.0.27:57299", - "172.17.0.1:57299", - "172.18.0.1:57299", - "172.19.0.1:57299" - ], - "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 - } - } + "packet_filter_rules": 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:9779fa96e2ddcd3dac863acc09b50304481964bfb3bccf52ff79d95bbd1a031d", - "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:57299", - "10.65.0.27:57299", - "172.17.0.1:57299", - "172.18.0.1:57299", - "172.19.0.1:57299" - ], - "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 - } - } + "packet_filter_rules": null } } } diff --git a/hscontrol/policy/v2/testdata/grant_results/GRANT-V22.hujson b/hscontrol/policy/v2/testdata/grant_results/GRANT-V22.hujson index a2221d577..d978b4534 100644 --- a/hscontrol/policy/v2/testdata/grant_results/GRANT-V22.hujson +++ b/hscontrol/policy/v2/testdata/grant_results/GRANT-V22.hujson @@ -5,24 +5,38 @@ // Expected: Error (HTTP 400) — cannot use app grants with autogroup:internet { "test_id": "GRANT-V22", - "description": "", - "timestamp": "2026-02-23T15:41:52Z", "error": true, "input": { - "policy_file": "grant_policies_v2/grant_v22.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -31,16 +45,28 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "grants": [ { - "src": ["autogroup:member"], - "dst": ["autogroup:internet"], - "ip": ["tcp:443"], + "src": [ + "autogroup:member" + ], + "dst": [ + "autogroup:internet" + ], + "ip": [ + "tcp:443" + ], "app": { "example.com/cap/internet-mixed": [ { @@ -51,17 +77,9 @@ } ] }, - "grants_section": [ - { - "src": ["autogroup:member"], - "dst": ["autogroup:internet"], - "ip": ["tcp:443"], - "app": { "example.com/cap/internet-mixed": [{ "proxy": "yes" }] } - } - ], - "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 app grants with autogroup:internet" } + "api_response_body": { + "message": "cannot use app grants with autogroup:internet" + } } } diff --git a/hscontrol/policy/v2/testdata/grant_results/GRANT-V23.hujson b/hscontrol/policy/v2/testdata/grant_results/GRANT-V23.hujson index 94ed9506d..1cd450562 100644 --- a/hscontrol/policy/v2/testdata/grant_results/GRANT-V23.hujson +++ b/hscontrol/policy/v2/testdata/grant_results/GRANT-V23.hujson @@ -5,23 +5,37 @@ // Expected: Rules on subnet-router { "test_id": "GRANT-V23", - "timestamp": "2026-02-23T15:41:53Z", - "propagation_wait_seconds": 8, "input": { - "policy_file": "grant_policies_v2/grant_v23.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -30,104 +44,94 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "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"], - "ip": ["tcp:22", "tcp:80", "tcp:443"] + "src": [ + "*" + ], + "dst": [ + "10.33.0.0/16" + ], + "via": [ + "tag:router" + ], + "ip": [ + "tcp:22", + "tcp:80", + "tcp:443" + ] } ] }, - "grants_section": [ - { - "src": ["*"], - "dst": ["10.33.0.0/16"], - "via": ["tag:router"], - "ip": ["tcp:22", "tcp:80", "tcp:443"] - } - ], - "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"], + "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"], + "tags": [ + "tag:router" + ], "ipv4": "100.92.142.61", - "ipv6": "fd7a:115c:a1e0::3e37:8e3d", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] + "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"], + "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"], + "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"], + "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" @@ -136,101 +140,9 @@ }, "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:9779fa96e2ddcd3dac863acc09b50304481964bfb3bccf52ff79d95bbd1a031d", - "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:57299", - "10.65.0.27:57299", - "172.17.0.1:57299", - "172.18.0.1:57299", - "172.19.0.1:57299" - ], - "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 - } - } + "packet_filter_rules": 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": [ @@ -262,954 +174,29 @@ } } ], - "IPProto": [6] + "IPProto": [ + 6 + ] } - ], - "packet_filter_matches": [ - { - "IPProto": [6], - "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": [ - { - "Net": "10.33.0.0/16", - "Ports": { - "First": 22, - "Last": 22 - } - }, - { - "Net": "10.33.0.0/16", - "Ports": { - "First": 80, - "Last": 80 - } - }, - { - "Net": "10.33.0.0/16", - "Ports": { - "First": 443, - "Last": 443 - } - } - ], - "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": { - "Node": { - "ID": 4041918547170221, - "StableID": "ngCb76MbZY11CNTRL", - "Name": "exit-node.tail78f774.ts.net.", - "User": 1260082990019555, - "Key": "nodekey:90f4a7b9dc024f1ddec414a49de2aa7611a2dd86efc9d7bae30862ad7c954269", - "DiscoKey": "discokey:701f9ed9296436d3251a9d00d061859edb5ee55602bc0ecf7c64330adc77c815", - "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:47924", - "10.65.0.27:47924", - "172.17.0.1:47924", - "172.18.0.1:47924", - "172.19.0.1:47924" - ], - "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:7e9099516456f84f9af01c51ce03bc38764c4c02bf6c73a6d4b2495771a6c449", - "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:47452", - "10.65.0.27:47452", - "172.17.0.1:47452", - "172.18.0.1:47452", - "172.19.0.1:47452" - ], - "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:2dd2ca7f9f1378d3ec23a7d6ba57a735032f9a4f90b6c95b2c2385950ec7ae45", - "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:54907", - "10.65.0.27:54907", - "172.17.0.1:54907", - "172.18.0.1:54907", - "172.19.0.1:54907" - ], - "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:9f71ff1e1652916263ef05d0a5e9d9e18239aa598f956b24c563c03a1088cb39", - "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:34495", - "10.65.0.27:34495", - "172.17.0.1:34495", - "172.18.0.1:34495", - "172.19.0.1:34495" - ], - "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:9841ea823abefc7197a67b2b33ba551868a344e64ecd27e00d1a100e5e9e5427", - "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:42311", - "10.65.0.27:42311", - "172.17.0.1:42311", - "172.18.0.1:42311", - "172.19.0.1:42311" - ], - "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:733598f0f74431b5b2b28fb5980d8b2f79b5ca5524664998d1d011a651643211", - "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:50398", - "10.65.0.27:50398", - "172.17.0.1:50398", - "172.18.0.1:50398", - "172.19.0.1:50398" - ], - "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:203d3bfbd67a06d210c027c546a05658fba93aeaea5042b12d50b93d31a5d156", - "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:44240", - "10.65.0.27:44240", - "172.17.0.1:44240", - "172.18.0.1:44240", - "172.19.0.1:44240" - ], - "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:9779fa96e2ddcd3dac863acc09b50304481964bfb3bccf52ff79d95bbd1a031d", - "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:57299", - "10.65.0.27:57299", - "172.17.0.1:57299", - "172.18.0.1:57299", - "172.19.0.1:57299" - ], - "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 - } - } + "packet_filter_rules": 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:9779fa96e2ddcd3dac863acc09b50304481964bfb3bccf52ff79d95bbd1a031d", - "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:57299", - "10.65.0.27:57299", - "172.17.0.1:57299", - "172.18.0.1:57299", - "172.19.0.1:57299" - ], - "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 - } - } + "packet_filter_rules": 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:9779fa96e2ddcd3dac863acc09b50304481964bfb3bccf52ff79d95bbd1a031d", - "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:57299", - "10.65.0.27:57299", - "172.17.0.1:57299", - "172.18.0.1:57299", - "172.19.0.1:57299" - ], - "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 - } - } + "packet_filter_rules": 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:9779fa96e2ddcd3dac863acc09b50304481964bfb3bccf52ff79d95bbd1a031d", - "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:57299", - "10.65.0.27:57299", - "172.17.0.1:57299", - "172.18.0.1:57299", - "172.19.0.1:57299" - ], - "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 - } - } + "packet_filter_rules": 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:9779fa96e2ddcd3dac863acc09b50304481964bfb3bccf52ff79d95bbd1a031d", - "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:57299", - "10.65.0.27:57299", - "172.17.0.1:57299", - "172.18.0.1:57299", - "172.19.0.1:57299" - ], - "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 - } - } + "packet_filter_rules": 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:9779fa96e2ddcd3dac863acc09b50304481964bfb3bccf52ff79d95bbd1a031d", - "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:57299", - "10.65.0.27:57299", - "172.17.0.1:57299", - "172.18.0.1:57299", - "172.19.0.1:57299" - ], - "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 - } - } + "packet_filter_rules": null } } } diff --git a/hscontrol/policy/v2/testdata/grant_results/GRANT-V24.hujson b/hscontrol/policy/v2/testdata/grant_results/GRANT-V24.hujson index 12fbcf63e..09c932b55 100644 --- a/hscontrol/policy/v2/testdata/grant_results/GRANT-V24.hujson +++ b/hscontrol/policy/v2/testdata/grant_results/GRANT-V24.hujson @@ -5,24 +5,38 @@ // Expected: Error (HTTP 400) — autogroup:self can only be used with users, groups, or supported autogroups { "test_id": "GRANT-V24", - "description": "", - "timestamp": "2026-02-23T15:42:03Z", "error": true, "input": { - "policy_file": "grant_policies_v2/grant_v24.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -31,27 +45,36 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "grants": [ { - "src": ["tag:server"], - "dst": ["autogroup:self"], + "src": [ + "tag:server" + ], + "dst": [ + "autogroup:self" + ], "app": { - "example.com/cap/self-cap": [{}] + "example.com/cap/self-cap": [ + {} + ] } } ] }, - "grants_section": [ - { "src": ["tag:server"], "dst": ["autogroup:self"], "app": { "example.com/cap/self-cap": [{}] } } - ], - "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" } + "api_response_body": { + "message": "autogroup:self can only be used with users, groups, or supported autogroups" + } } } diff --git a/hscontrol/policy/v2/testdata/grant_results/GRANT-V25.hujson b/hscontrol/policy/v2/testdata/grant_results/GRANT-V25.hujson index c1e5ce7d3..a05fe4ffa 100644 --- a/hscontrol/policy/v2/testdata/grant_results/GRANT-V25.hujson +++ b/hscontrol/policy/v2/testdata/grant_results/GRANT-V25.hujson @@ -5,23 +5,37 @@ // Expected: Rules on user-kris, user-mon, user1 { "test_id": "GRANT-V25", - "timestamp": "2026-02-23T15:42:04Z", - "propagation_wait_seconds": 8, "input": { - "policy_file": "grant_policies_v2/grant_v25.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"] + "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", @@ -30,15 +44,25 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.33.0.0/16": [ + "tag:router" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "grants": [ { - "src": ["autogroup:member"], - "dst": ["autogroup:self"], + "src": [ + "autogroup:member" + ], + "dst": [ + "autogroup:self" + ], "app": { "example.com/cap/self-test": [ { @@ -49,95 +73,64 @@ } ] }, - "grants_section": [ - { - "src": ["autogroup:member"], - "dst": ["autogroup:self"], - "app": { - "example.com/cap/self-test": [ - { - "level": "basic" - } - ] - } - } - ], - "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"], + "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"], + "tags": [ + "tag:router" + ], "ipv4": "100.92.142.61", - "ipv6": "fd7a:115c:a1e0::3e37:8e3d", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] + "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"], + "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"], + "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"], + "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" @@ -146,241 +139,33 @@ }, "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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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 - } - } + "packet_filter_rules": 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"], + "SrcIPs": [ + "100.110.121.96", + "fd7a:115c:a1e0::1737:7960" + ], "CapGrant": [ { - "Dsts": ["100.110.121.96/32", "fd7a:115c:a1e0::1737:7960/128"], + "Dsts": [ + "100.110.121.96/32", + "fd7a:115c:a1e0::1737:7960/128" + ], "CapMap": { "example.com/cap/self-test": [ { @@ -391,84 +176,21 @@ } ] } - ], - "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-test", - "Values": [ - { - "level": "basic" - } - ] - }, - { - "Dst": "fd7a:115c:a1e0::1737:7960/128", - "Cap": "example.com/cap/self-test", - "Values": [ - { - "level": "basic" - } - ] - } - ] - } - ], - "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"], + "SrcIPs": [ + "100.103.90.82", + "fd7a:115c:a1e0::9e37:5a52" + ], "CapGrant": [ { - "Dsts": ["100.103.90.82/32", "fd7a:115c:a1e0::9e37:5a52/128"], + "Dsts": [ + "100.103.90.82/32", + "fd7a:115c:a1e0::9e37:5a52/128" + ], "CapMap": { "example.com/cap/self-test": [ { @@ -479,84 +201,21 @@ } ] } - ], - "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-test", - "Values": [ - { - "level": "basic" - } - ] - }, - { - "Dst": "fd7a:115c:a1e0::9e37:5a52/128", - "Cap": "example.com/cap/self-test", - "Values": [ - { - "level": "basic" - } - ] - } - ] - } - ], - "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"], + "SrcIPs": [ + "100.90.199.68", + "fd7a:115c:a1e0::2d01:c747" + ], "CapGrant": [ { - "Dsts": ["100.90.199.68/32", "fd7a:115c:a1e0::2d01:c747/128"], + "Dsts": [ + "100.90.199.68/32", + "fd7a:115c:a1e0::2d01:c747/128" + ], "CapMap": { "example.com/cap/self-test": [ { @@ -567,72 +226,7 @@ } ] } - ], - "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-test", - "Values": [ - { - "level": "basic" - } - ] - }, - { - "Dst": "fd7a:115c:a1e0::2d01:c747/128", - "Cap": "example.com/cap/self-test", - "Values": [ - { - "level": "basic" - } - ] - } - ] - } - ], - "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 - } - } + ] } } } diff --git a/hscontrol/policy/v2/testdata/grant_results/GRANT-V26.hujson b/hscontrol/policy/v2/testdata/grant_results/GRANT-V26.hujson index 1a9283786..3ecdcb37d 100644 --- a/hscontrol/policy/v2/testdata/grant_results/GRANT-V26.hujson +++ b/hscontrol/policy/v2/testdata/grant_results/GRANT-V26.hujson @@ -5,29 +5,55 @@ // Expected: No filter rules on any node { "test_id": "GRANT-V26", - "timestamp": "2026-03-28T11:51:26Z", - "propagation_wait_seconds": 8, "input": { - "policy_file": "grant_policies_via/grant_v26.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"], - "tag:exit-a": ["kratail2tid@passkey"], - "tag:exit-b": ["kratail2tid@passkey"], - "tag:group-a": ["kratail2tid@passkey"], - "tag:group-b": ["kratail2tid@passkey"], - "tag:router-a": ["kratail2tid@passkey"], - "tag:router-b": ["kratail2tid@passkey"] + "tag:server": [ + "kratail2tid@passkey" + ], + "tag:prod": [ + "kratail2tid@passkey" + ], + "tag:client": [ + "kratail2tid@passkey" + ], + "tag:router": [ + "kratail2tid@passkey" + ], + "tag:exit": [ + "kratail2tid@passkey" + ], + "tag:exit-a": [ + "kratail2tid@passkey" + ], + "tag:exit-b": [ + "kratail2tid@passkey" + ], + "tag:group-a": [ + "kratail2tid@passkey" + ], + "tag:group-b": [ + "kratail2tid@passkey" + ], + "tag:router-a": [ + "kratail2tid@passkey" + ], + "tag:router-b": [ + "kratail2tid@passkey" + ] }, "hosts": { "webserver": "100.108.74.26", @@ -36,160 +62,159 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "10.44.0.0/16": ["tag:router-a"], - "10.55.0.0/16": ["tag:router-b"], - "0.0.0.0/0": ["tag:exit", "tag:exit-a", "tag:exit-b"], - "::/0": ["tag:exit", "tag:exit-a", "tag:exit-b"] + "10.33.0.0/16": [ + "tag:router" + ], + "10.44.0.0/16": [ + "tag:router-a" + ], + "10.55.0.0/16": [ + "tag:router-b" + ], + "0.0.0.0/0": [ + "tag:exit", + "tag:exit-a", + "tag:exit-b" + ], + "::/0": [ + "tag:exit", + "tag:exit-a", + "tag:exit-b" + ] } }, "grants": [ { - "src": ["tag:group-a"], - "dst": ["autogroup:internet"], - "via": ["tag:exit-a"], - "ip": ["*"] + "src": [ + "tag:group-a" + ], + "dst": [ + "autogroup:internet" + ], + "via": [ + "tag:exit-a" + ], + "ip": [ + "*" + ] } ] }, - "grants_section": [{ "src": ["tag:group-a"], "dst": ["autogroup:internet"], "via": ["tag:exit-a"], "ip": ["*"] }], - "api_endpoint": "https://api.tailscale.com/api/v2/tailnet/kratail2tid%40passkey/acl", - "api_method": "POST", "api_response_code": 200 }, "topology": { "nodes": { "exit-a": { - "mts_name": "exit-a", - "socket": "/home/kradalby/.config/multi-tailscale-dev/exit-a/tailscaled.sock", "hostname": "exit-a", - "user_id": 3118755726458377, - "tags": ["tag:exit-a"], + "tags": [ + "tag:exit-a" + ], "ipv4": "100.124.195.93", "ipv6": "fd7a:115c:a1e0::7837:c35d" }, "exit-b": { - "mts_name": "exit-b", - "socket": "/home/kradalby/.config/multi-tailscale-dev/exit-b/tailscaled.sock", "hostname": "exit-b", - "user_id": 2230775583277936, - "tags": ["tag:exit-b"], + "tags": [ + "tag:exit-b" + ], "ipv4": "100.116.18.24", "ipv6": "fd7a:115c:a1e0::ff37:1218" }, "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"], + "tags": [ + "tag:exit" + ], "ipv4": "100.85.66.106", "ipv6": "fd7a:115c:a1e0::7c37:426a" }, "group-a-client": { - "mts_name": "group-a-client", - "socket": "/home/kradalby/.config/multi-tailscale-dev/group-a-client/tailscaled.sock", "hostname": "group-a-client", - "user_id": 6999435610919250, - "tags": ["tag:group-a"], + "tags": [ + "tag:group-a" + ], "ipv4": "100.107.162.14", "ipv6": "fd7a:115c:a1e0::a237:a20e" }, "group-b-client": { - "mts_name": "group-b-client", - "socket": "/home/kradalby/.config/multi-tailscale-dev/group-b-client/tailscaled.sock", "hostname": "group-b-client", - "user_id": 1008089393782498, - "tags": ["tag:group-b"], + "tags": [ + "tag:group-b" + ], "ipv4": "100.77.135.18", "ipv6": "fd7a:115c:a1e0::4b37:8712" }, "multi-exit-router": { - "mts_name": "multi-exit-router", - "socket": "/home/kradalby/.config/multi-tailscale-dev/multi-exit-router/tailscaled.sock", "hostname": "multi-exit-router", - "user_id": 6294409699640722, - "tags": ["tag:exit", "tag:router"], + "tags": [ + "tag:exit", + "tag:router" + ], "ipv4": "100.105.127.107", "ipv6": "fd7a:115c:a1e0::ad37:7f6b" }, "router-a": { - "mts_name": "router-a", - "socket": "/home/kradalby/.config/multi-tailscale-dev/router-a/tailscaled.sock", "hostname": "router-a", - "user_id": 50590507314324, - "tags": ["tag:router-a"], + "tags": [ + "tag:router-a" + ], "ipv4": "100.109.43.124", "ipv6": "fd7a:115c:a1e0::a537:2b7c" }, "router-b": { - "mts_name": "router-b", - "socket": "/home/kradalby/.config/multi-tailscale-dev/router-b/tailscaled.sock", "hostname": "router-b", - "user_id": 1399889648409786, - "tags": ["tag:router-b"], + "tags": [ + "tag:router-b" + ], "ipv4": "100.65.172.123", "ipv6": "fd7a:115c:a1e0::5a37:ac7c" }, "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"], + "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"], + "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"], + "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"], + "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" @@ -198,16660 +223,108 @@ }, "captures": { "exit-a": { - "commands": { - "packet_filter_rules": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-a/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-a/tailscaled.sock debug localapi POST debug-packet-filter-matches" - }, "packet_filter_rules": null, - "packet_filter_matches": [], - "whois": { - "100.116.18.24": { - "peer_name": "exit-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-a/tailscaled.sock whois --json 100.116.18.24", - "response": null - }, - "100.85.66.106": { - "peer_name": "exit-node", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-a/tailscaled.sock whois --json 100.85.66.106", - "response": null - }, - "100.107.162.14": { - "peer_name": "group-a-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-a/tailscaled.sock whois --json 100.107.162.14", - "response": null - }, - "100.77.135.18": { - "peer_name": "group-b-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-a/tailscaled.sock whois --json 100.77.135.18", - "response": null - }, - "100.105.127.107": { - "peer_name": "multi-exit-router", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-a/tailscaled.sock whois --json 100.105.127.107", - "response": null - }, - "100.109.43.124": { - "peer_name": "router-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-a/tailscaled.sock whois --json 100.109.43.124", - "response": null - }, - "100.65.172.123": { - "peer_name": "router-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-a/tailscaled.sock whois --json 100.65.172.123", - "response": null - }, - "100.92.142.61": { - "peer_name": "subnet-router", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-a/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-a/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-a/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-a/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-a/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-a/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-a/tailscaled.sock whois --json 100.90.199.68", - "response": null - } - }, "netmap": { - "SelfNode": { - "ID": 3118755726458377, - "StableID": "nvFTscRVMR11CNTRL", - "Name": "exit-a.tail78f774.ts.net.", - "User": 3118755726458377, - "Key": "nodekey:21ab6fa3288e3bf8cecced295316c6327f427649765eb1746cc6ee9978bcc35c", - "DiscoKey": "discokey:0c8595f67987ed47cf551646d6266c21a635d622409d10745cc08f6922066e49", - "Addresses": ["100.124.195.93/32", "fd7a:115c:a1e0::7837:c35d/128"], - "AllowedIPs": ["100.124.195.93/32", "fd7a:115c:a1e0::7837:c35d/128"], - "Endpoints": ["77.164.248.136:37550", "10.65.0.27:37550", "172.17.0.1:37550"], - "Hostinfo": { - "Hostname": "exit-a", - "RoutableIPs": ["0.0.0.0/0", "::/0"], - "RequestTags": ["tag:exit-a"], - "Services": [ - { "Proto": "peerapi4", "Port": 57826 }, - { "Proto": "peerapi6", "Port": 57826 }, - { "Proto": "peerapi-dns-proxy", "Port": 1 } - ] - }, - "Created": "2026-03-28T10:37:56.932966573Z", - "Tags": ["tag:exit-a"], - "MachineAuthorized": true, - "CapMap": { - "https://tailscale.com/cap/file-sharing": null, - "https://tailscale.com/cap/is-owner": null, - "https://tailscale.com/cap/ssh": null, - "https://tailscale.com/cap/tailnet-lock": null, - "probe-udp-lifetime": null, - "ssh-behavior-v1": null, - "ssh-env-vars": null, - "store-appc-routes": null, - "tailnet-display-name": ["kratail2tid@passkey"] - }, - "ComputedName": "exit-a", - "ComputedNameWithHost": "exit-a" - }, - "AllCaps": [ - "probe-udp-lifetime", - "ssh-env-vars", - "store-appc-routes", - "ssh-behavior-v1", - "tailnet-display-name", - "https://tailscale.com/cap/ssh", - "https://tailscale.com/cap/tailnet-lock", - "https://tailscale.com/cap/is-owner", - "https://tailscale.com/cap/file-sharing" - ], - "NodeKey": "nodekey:21ab6fa3288e3bf8cecced295316c6327f427649765eb1746cc6ee9978bcc35c", - "MachineKey": "mkey:d4a36168723163165bbdcb0b17762903171593d01c26c5bb12216932f6d10876", "Peers": [], - "DNS": { - "Routes": { - "tail78f774.ts.net.": null, - "ts.net.": [{ "Addr": "199.247.155.53" }, { "Addr": "2620:111:8007::53" }] - }, - "Domains": ["tail78f774.ts.net"], - "Proxied": true, - "ExitNodeFilteredSet": [".ts.net", ".tailscale.net"] - }, - "PacketFilter": [], - "PacketFilterRules": null, - "SSHPolicy": { "rules": [] }, - "CollectServices": false, - "DERPMap": { - "Regions": { - "1": { - "RegionID": 1, - "RegionCode": "nyc", - "RegionName": "New York City", - "Latitude": 40.7128, - "Longitude": -74.006, - "Nodes": [ - { - "Name": "1h", - "RegionID": 1, - "HostName": "derp1h.tailscale.com", - "IPv4": "199.38.181.93", - "IPv6": "2607:f740:f::afd", - "CanPort80": true - }, - { - "Name": "1g", - "RegionID": 1, - "HostName": "derp1g.tailscale.com", - "IPv4": "209.177.145.120", - "IPv6": "2607:f740:f::3eb", - "CanPort80": true - }, - { - "Name": "1i", - "RegionID": 1, - "HostName": "derp1i.tailscale.com", - "IPv4": "199.38.181.103", - "IPv6": "2607:f740:f::e19", - "CanPort80": true - }, - { - "Name": "1f", - "RegionID": 1, - "HostName": "derp1f.tailscale.com", - "IPv4": "199.38.181.104", - "IPv6": "2607:f740:f::bc", - "CanPort80": true - } - ] - }, - "10": { - "RegionID": 10, - "RegionCode": "sea", - "RegionName": "Seattle", - "Latitude": 47.609722, - "Longitude": -122.333056, - "Nodes": [ - { - "Name": "10c", - "RegionID": 10, - "HostName": "derp10c.tailscale.com", - "IPv4": "192.73.240.121", - "IPv6": "2607:f740:14::40c", - "CanPort80": true - }, - { - "Name": "10d", - "RegionID": 10, - "HostName": "derp10d.tailscale.com", - "IPv4": "192.73.240.132", - "IPv6": "2607:f740:14::500", - "CanPort80": true - }, - { - "Name": "10b", - "RegionID": 10, - "HostName": "derp10b.tailscale.com", - "IPv4": "192.73.240.161", - "IPv6": "2607:f740:14::61c", - "CanPort80": true - } - ] - }, - "11": { - "RegionID": 11, - "RegionCode": "sao", - "RegionName": "São Paulo", - "Latitude": -23.55, - "Longitude": -46.633333, - "Nodes": [ - { - "Name": "11f", - "RegionID": 11, - "HostName": "derp11f.tailscale.com", - "IPv4": "172.237.61.197", - "IPv6": "2600:3c0d::2000:3bff:fe44:6166", - "CanPort80": true - }, - { - "Name": "11g", - "RegionID": 11, - "HostName": "derp11g.tailscale.com", - "IPv4": "172.237.61.190", - "IPv6": "2600:3c0d::2000:62ff:febe:2e67", - "CanPort80": true - }, - { - "Name": "11e", - "RegionID": 11, - "HostName": "derp11e.tailscale.com", - "IPv4": "172.237.61.194", - "IPv6": "2600:3c0d::2000:d2ff:fe43:1790", - "CanPort80": true - } - ] - }, - "12": { - "RegionID": 12, - "RegionCode": "ord", - "RegionName": "Chicago", - "Latitude": 41.881944, - "Longitude": -87.627778, - "Nodes": [ - { - "Name": "12e", - "RegionID": 12, - "HostName": "derp12e.tailscale.com", - "IPv4": "209.177.158.15", - "IPv6": "2607:f740:e::b17", - "CanPort80": true - }, - { - "Name": "12f", - "RegionID": 12, - "HostName": "derp12f.tailscale.com", - "IPv4": "199.38.182.118", - "IPv6": "2607:f740:e::4c8", - "CanPort80": true - }, - { - "Name": "12d", - "RegionID": 12, - "HostName": "derp12d.tailscale.com", - "IPv4": "209.177.158.246", - "IPv6": "2607:f740:e::811", - "CanPort80": true - } - ] - }, - "13": { - "RegionID": 13, - "RegionCode": "den", - "RegionName": "Denver", - "Latitude": 39.7392, - "Longitude": -104.9849, - "Nodes": [ - { - "Name": "13c", - "RegionID": 13, - "HostName": "derp13c.tailscale.com", - "IPv4": "192.73.242.28", - "IPv6": "2607:f740:16::5c", - "CanPort80": true - }, - { - "Name": "13d", - "RegionID": 13, - "HostName": "derp13d.tailscale.com", - "IPv4": "192.73.242.204", - "IPv6": "2607:f740:16::c23", - "CanPort80": true - }, - { - "Name": "13b", - "RegionID": 13, - "HostName": "derp13b.tailscale.com", - "IPv4": "192.73.242.187", - "IPv6": "2607:f740:16::640", - "CanPort80": true - } - ] - }, - "14": { - "RegionID": 14, - "RegionCode": "ams", - "RegionName": "Amsterdam", - "Latitude": 52.372778, - "Longitude": 4.893611, - "Nodes": [ - { - "Name": "14c", - "RegionID": 14, - "HostName": "derp14c.tailscale.com", - "IPv4": "176.58.93.147", - "IPv6": "2a00:dd80:3c::b09", - "CanPort80": true - }, - { - "Name": "14d", - "RegionID": 14, - "HostName": "derp14d.tailscale.com", - "IPv4": "176.58.93.154", - "IPv6": "2a00:dd80:3c::3d5", - "CanPort80": true - }, - { - "Name": "14b", - "RegionID": 14, - "HostName": "derp14b.tailscale.com", - "IPv4": "176.58.93.248", - "IPv6": "2a00:dd80:3c::807", - "CanPort80": true - } - ] - }, - "15": { - "RegionID": 15, - "RegionCode": "jnb", - "RegionName": "Johannesburg", - "Latitude": -26.204444, - "Longitude": 28.045556, - "Nodes": [ - { - "Name": "15c", - "RegionID": 15, - "HostName": "derp15c.tailscale.com", - "IPv4": "102.67.165.185", - "IPv6": "2c0f:edb0:0:10::b59", - "CanPort80": true - }, - { - "Name": "15d", - "RegionID": 15, - "HostName": "derp15d.tailscale.com", - "IPv4": "102.67.165.36", - "IPv6": "2c0f:edb0:0:10::599", - "CanPort80": true - }, - { - "Name": "15b", - "RegionID": 15, - "HostName": "derp15b.tailscale.com", - "IPv4": "102.67.165.90", - "IPv6": "2c0f:edb0:0:10::963", - "CanPort80": true - } - ] - }, - "16": { - "RegionID": 16, - "RegionCode": "mia", - "RegionName": "Miami", - "Latitude": 25.78, - "Longitude": -80.21, - "Nodes": [ - { - "Name": "16c", - "RegionID": 16, - "HostName": "derp16c.tailscale.com", - "IPv4": "192.73.243.229", - "IPv6": "2607:f740:17::4e4", - "CanPort80": true - }, - { - "Name": "16d", - "RegionID": 16, - "HostName": "derp16d.tailscale.com", - "IPv4": "192.73.243.141", - "IPv6": "2607:f740:17::475", - "CanPort80": true - }, - { - "Name": "16b", - "RegionID": 16, - "HostName": "derp16b.tailscale.com", - "IPv4": "192.73.243.135", - "IPv6": "2607:f740:17::476", - "CanPort80": true - } - ] - }, - "17": { - "RegionID": 17, - "RegionCode": "lax", - "RegionName": "Los Angeles", - "Latitude": 34.05, - "Longitude": -118.25, - "Nodes": [ - { - "Name": "17c", - "RegionID": 17, - "HostName": "derp17c.tailscale.com", - "IPv4": "208.111.40.12", - "IPv6": "2607:f740:c::10", - "CanPort80": true - }, - { - "Name": "17d", - "RegionID": 17, - "HostName": "derp17d.tailscale.com", - "IPv4": "208.111.40.216", - "IPv6": "2607:f740:c::e1b", - "CanPort80": true - }, - { - "Name": "17b", - "RegionID": 17, - "HostName": "derp17b.tailscale.com", - "IPv4": "192.73.244.245", - "IPv6": "2607:f740:c::646", - "CanPort80": true - } - ] - }, - "18": { - "RegionID": 18, - "RegionCode": "par", - "RegionName": "Paris", - "Latitude": 48.856667, - "Longitude": 2.352222, - "Nodes": [ - { - "Name": "18c", - "RegionID": 18, - "HostName": "derp18c.tailscale.com", - "IPv4": "176.58.90.207", - "IPv6": "2a00:dd80:3e::c19", - "CanPort80": true - }, - { - "Name": "18d", - "RegionID": 18, - "HostName": "derp18d.tailscale.com", - "IPv4": "176.58.90.104", - "IPv6": "2a00:dd80:3e::f2e", - "CanPort80": true - }, - { - "Name": "18b", - "RegionID": 18, - "HostName": "derp18b.tailscale.com", - "IPv4": "176.58.90.147", - "IPv6": "2a00:dd80:3e::363", - "CanPort80": true - } - ] - }, - "19": { - "RegionID": 19, - "RegionCode": "mad", - "RegionName": "Madrid", - "Latitude": 40.416944, - "Longitude": -3.703333, - "Nodes": [ - { - "Name": "19c", - "RegionID": 19, - "HostName": "derp19c.tailscale.com", - "IPv4": "45.159.97.61", - "IPv6": "2a00:dd80:14:10::20", - "CanPort80": true - }, - { - "Name": "19d", - "RegionID": 19, - "HostName": "derp19d.tailscale.com", - "IPv4": "45.159.97.233", - "IPv6": "2a00:dd80:14:10::34a", - "CanPort80": true - }, - { - "Name": "19b", - "RegionID": 19, - "HostName": "derp19b.tailscale.com", - "IPv4": "45.159.97.144", - "IPv6": "2a00:dd80:14:10::335", - "CanPort80": true - } - ] - }, - "2": { - "RegionID": 2, - "RegionCode": "sfo", - "RegionName": "San Francisco", - "Latitude": 37.7775, - "Longitude": -122.416389, - "Nodes": [ - { - "Name": "2e", - "RegionID": 2, - "HostName": "derp2e.tailscale.com", - "IPv4": "192.73.252.134", - "IPv6": "2607:f740:0:3f::44c", - "CanPort80": true - }, - { - "Name": "2f", - "RegionID": 2, - "HostName": "derp2f.tailscale.com", - "IPv4": "208.111.34.178", - "IPv6": "2607:f740:0:3f::f4", - "CanPort80": true - }, - { - "Name": "2d", - "RegionID": 2, - "HostName": "derp2d.tailscale.com", - "IPv4": "192.73.252.65", - "IPv6": "2607:f740:0:3f::287", - "CanPort80": true - } - ] - }, - "20": { - "RegionID": 20, - "RegionCode": "hkg", - "RegionName": "Hong Kong", - "Latitude": 22.3193, - "Longitude": 114.1694, - "Nodes": [ - { - "Name": "20c", - "RegionID": 20, - "HostName": "derp20c.tailscale.com", - "IPv4": "205.147.105.30", - "IPv6": "2403:2500:8000:1::5fb", - "CanPort80": true - }, - { - "Name": "20d", - "RegionID": 20, - "HostName": "derp20d.tailscale.com", - "IPv4": "205.147.105.78", - "IPv6": "2403:2500:8000:1::e9a", - "CanPort80": true - }, - { - "Name": "20b", - "RegionID": 20, - "HostName": "derp20b.tailscale.com", - "IPv4": "103.6.84.152", - "IPv6": "2403:2500:8000:1::ef6", - "CanPort80": true - } - ] - }, - "21": { - "RegionID": 21, - "RegionCode": "tor", - "RegionName": "Toronto", - "Latitude": 43.741667, - "Longitude": -79.373333, - "Nodes": [ - { - "Name": "21c", - "RegionID": 21, - "HostName": "derp21c.tailscale.com", - "IPv4": "162.248.221.215", - "IPv6": "2607:f740:50::f10", - "CanPort80": true - }, - { - "Name": "21d", - "RegionID": 21, - "HostName": "derp21d.tailscale.com", - "IPv4": "162.248.221.248", - "IPv6": "2607:f740:50::ca4", - "CanPort80": true - }, - { - "Name": "21b", - "RegionID": 21, - "HostName": "derp21b.tailscale.com", - "IPv4": "162.248.221.199", - "IPv6": "2607:f740:50::1d1", - "CanPort80": true - } - ] - }, - "22": { - "RegionID": 22, - "RegionCode": "waw", - "RegionName": "Warsaw", - "Latitude": 52.23, - "Longitude": 21.011111, - "Nodes": [ - { - "Name": "22c", - "RegionID": 22, - "HostName": "derp22c.tailscale.com", - "IPv4": "45.159.98.253", - "IPv6": "2a00:dd80:40:100::3f", - "CanPort80": true - }, - { - "Name": "22d", - "RegionID": 22, - "HostName": "derp22d.tailscale.com", - "IPv4": "45.159.98.145", - "IPv6": "2a00:dd80:40:100::211", - "CanPort80": true - }, - { - "Name": "22b", - "RegionID": 22, - "HostName": "derp22b.tailscale.com", - "IPv4": "45.159.98.196", - "IPv6": "2a00:dd80:40:100::316", - "CanPort80": true - } - ] - }, - "23": { - "RegionID": 23, - "RegionCode": "dbi", - "RegionName": "Dubai", - "Latitude": 25.263056, - "Longitude": 55.297222, - "Nodes": [ - { - "Name": "23c", - "RegionID": 23, - "HostName": "derp23c.tailscale.com", - "IPv4": "185.34.3.207", - "IPv6": "2a00:dd80:3f:100::a50", - "CanPort80": true - }, - { - "Name": "23d", - "RegionID": 23, - "HostName": "derp23d.tailscale.com", - "IPv4": "185.34.3.75", - "IPv6": "2a00:dd80:3f:100::97e", - "CanPort80": true - }, - { - "Name": "23b", - "RegionID": 23, - "HostName": "derp23b.tailscale.com", - "IPv4": "185.34.3.232", - "IPv6": "2a00:dd80:3f:100::76f", - "CanPort80": true - } - ] - }, - "24": { - "RegionID": 24, - "RegionCode": "hnl", - "RegionName": "Honolulu", - "Latitude": 21.306944, - "Longitude": -157.858333, - "Nodes": [ - { - "Name": "24c", - "RegionID": 24, - "HostName": "derp24c.tailscale.com", - "IPv4": "208.83.233.233", - "IPv6": "2001:19f0:c000:c591:5400:04ff:fe26:2c5f", - "CanPort80": true - }, - { - "Name": "24d", - "RegionID": 24, - "HostName": "derp24d.tailscale.com", - "IPv4": "208.72.155.133", - "IPv6": "2001:19f0:c000:c564:5400:04ff:fe26:2ba8", - "CanPort80": true - }, - { - "Name": "24b", - "RegionID": 24, - "HostName": "derp24b.tailscale.com", - "IPv4": "208.83.234.151", - "IPv6": "2001:19f0:c000:c586:5400:04ff:fe26:2ba6", - "CanPort80": true - } - ] - }, - "25": { - "RegionID": 25, - "RegionCode": "nai", - "RegionName": "Nairobi", - "Latitude": -1.286389, - "Longitude": 36.817222, - "Nodes": [ - { - "Name": "25c", - "RegionID": 25, - "HostName": "derp25c.tailscale.com", - "IPv4": "102.67.167.37", - "IPv6": "2c0f:edb0:2000:1::2c7", - "CanPort80": true - }, - { - "Name": "25d", - "RegionID": 25, - "HostName": "derp25d.tailscale.com", - "IPv4": "102.67.167.188", - "IPv6": "2c0f:edb0:2000:1::188", - "CanPort80": true - }, - { - "Name": "25b", - "RegionID": 25, - "HostName": "derp25b.tailscale.com", - "IPv4": "102.67.167.245", - "IPv6": "2c0f:edb0:2000:1::2e9", - "CanPort80": true - } - ] - }, - "26": { - "RegionID": 26, - "RegionCode": "nue", - "RegionName": "Nuremberg", - "Latitude": 49.453889, - "Longitude": 11.0775, - "Nodes": [ - { - "Name": "26c", - "RegionID": 26, - "HostName": "derp26c.tailscale.com", - "IPv4": "49.12.193.137", - "IPv6": "2a01:4f8:1c1c:5c70::1", - "CanPort80": true - }, - { - "Name": "26d", - "RegionID": 26, - "HostName": "derp26d.tailscale.com", - "IPv4": "49.13.204.141", - "IPv6": "2a01:4f8:1c0c:7d06::1", - "CanPort80": true - }, - { - "Name": "26b", - "RegionID": 26, - "HostName": "derp26b.tailscale.com", - "IPv4": "167.235.72.200", - "IPv6": "2a01:4f8:1c1c:47b6::1", - "CanPort80": true - } - ] - }, - "27": { - "RegionID": 27, - "RegionCode": "iad", - "RegionName": "Ashburn", - "Latitude": 39.03, - "Longitude": -77.471111, - "Nodes": [ - { - "Name": "27d", - "RegionID": 27, - "HostName": "derp27d.tailscale.com", - "IPv4": "178.156.152.106", - "IPv6": "2a01:4ff:f0:3c8e::1", - "CanPort80": true - }, - { - "Name": "27c", - "RegionID": 27, - "HostName": "derp27c.tailscale.com", - "IPv4": "178.156.152.91", - "IPv6": "2a01:4ff:f0:3913::1", - "CanPort80": true - }, - { - "Name": "27e", - "RegionID": 27, - "HostName": "derp27e.tailscale.com", - "IPv4": "178.156.134.232", - "IPv6": "2a01:4ff:f0:28d4::1", - "CanPort80": true - }, - { - "Name": "27b", - "RegionID": 27, - "HostName": "derp27b.tailscale.com", - "IPv4": "5.161.218.233", - "IPv6": "2a01:4ff:f0:3db9::1", - "CanPort80": true - } - ] - }, - "28": { - "RegionID": 28, - "RegionCode": "hel", - "RegionName": "Helsinki", - "Latitude": 60.170833, - "Longitude": 24.9375, - "Nodes": [ - { - "Name": "28c", - "RegionID": 28, - "HostName": "derp28c.tailscale.com", - "IPv4": "95.217.2.165", - "IPv6": "2a01:4f9:c012:cd74::1", - "CanPort80": true - }, - { - "Name": "28d", - "RegionID": 28, - "HostName": "derp28d.tailscale.com", - "IPv4": "157.180.28.32", - "IPv6": "2a01:4f9:c012:2e5b::1", - "CanPort80": true - }, - { - "Name": "28b", - "RegionID": 28, - "HostName": "derp28b.tailscale.com", - "IPv4": "65.109.143.62", - "IPv6": "2a01:4f9:c012:d55c::1", - "CanPort80": true - } - ] - }, - "3": { - "RegionID": 3, - "RegionCode": "sin", - "RegionName": "Singapore", - "Latitude": 1.3521, - "Longitude": 103.8198, - "Nodes": [ - { - "Name": "3g", - "RegionID": 3, - "HostName": "derp3g.tailscale.com", - "IPv4": "172.237.72.79", - "IPv6": "2600:3c15::2000:adff:fe08:6fab", - "CanPort80": true - }, - { - "Name": "3f", - "RegionID": 3, - "HostName": "derp3f.tailscale.com", - "IPv4": "172.237.72.8", - "IPv6": "2600:3c15::2000:53ff:fe48:a668", - "CanPort80": true - }, - { - "Name": "3h", - "RegionID": 3, - "HostName": "derp3h.tailscale.com", - "IPv4": "172.237.66.30", - "IPv6": "2600:3c15::2000:3dff:fe44:50aa", - "CanPort80": true - }, - { - "Name": "3e", - "RegionID": 3, - "HostName": "derp3e.tailscale.com", - "IPv4": "172.237.72.43", - "IPv6": "2600:3c15::2000:6cff:fee4:d799", - "CanPort80": true - } - ] - }, - "4": { - "RegionID": 4, - "RegionCode": "fra", - "RegionName": "Frankfurt", - "Latitude": 50.1109, - "Longitude": 8.6821, - "Nodes": [ - { - "Name": "4h", - "RegionID": 4, - "HostName": "derp4h.tailscale.com", - "IPv4": "185.40.234.77", - "IPv6": "2a00:dd80:20::bcf", - "CanPort80": true - }, - { - "Name": "4g", - "RegionID": 4, - "HostName": "derp4g.tailscale.com", - "IPv4": "185.40.234.113", - "IPv6": "2a00:dd80:20::8f", - "CanPort80": true - }, - { - "Name": "4i", - "RegionID": 4, - "HostName": "derp4i.tailscale.com", - "IPv4": "185.40.234.53", - "IPv6": "2a00:dd80:20::8a6", - "CanPort80": true - }, - { - "Name": "4f", - "RegionID": 4, - "HostName": "derp4f.tailscale.com", - "IPv4": "185.40.234.219", - "IPv6": "2a00:dd80:20::a25", - "CanPort80": true - } - ] - }, - "5": { - "RegionID": 5, - "RegionCode": "syd", - "RegionName": "Sydney", - "Latitude": -33.867778, - "Longitude": 151.21, - "Nodes": [ - { - "Name": "5f", - "RegionID": 5, - "HostName": "derp5f.tailscale.com", - "IPv4": "172.105.166.103", - "IPv6": "2400:8907::2000:ccff:fe1f:80da", - "CanPort80": true - }, - { - "Name": "5g", - "RegionID": 5, - "HostName": "derp5g.tailscale.com", - "IPv4": "172.105.169.57", - "IPv6": "2400:8907::2000:2fff:fea7:57f4", - "CanPort80": true - }, - { - "Name": "5e", - "RegionID": 5, - "HostName": "derp5e.tailscale.com", - "IPv4": "172.105.179.230", - "IPv6": "2400:8907::2000:ceff:fe8d:4f4e", - "CanPort80": true - } - ] - }, - "6": { - "RegionID": 6, - "RegionCode": "blr", - "RegionName": "Bengaluru", - "Latitude": 12.9716, - "Longitude": 77.5946, - "Nodes": [ - { - "Name": "6a", - "RegionID": 6, - "HostName": "derp6.tailscale.com", - "IPv4": "68.183.90.120", - "IPv6": "2400:6180:100:d0::982:d001", - "CanPort80": true - } - ] - }, - "7": { - "RegionID": 7, - "RegionCode": "tok", - "RegionName": "Tokyo", - "Latitude": 35.6764, - "Longitude": 139.65, - "Nodes": [ - { - "Name": "7g", - "RegionID": 7, - "HostName": "derp7g.tailscale.com", - "IPv4": "172.238.6.179", - "IPv6": "2600:3c18::2000:3fff:fe80:3ebd", - "CanPort80": true - }, - { - "Name": "7f", - "RegionID": 7, - "HostName": "derp7f.tailscale.com", - "IPv4": "172.238.6.34", - "IPv6": "2600:3c18::2000:acff:fe8e:3ed5", - "CanPort80": true - }, - { - "Name": "7h", - "RegionID": 7, - "HostName": "derp7h.tailscale.com", - "IPv4": "172.237.28.183", - "IPv6": "2600:3c18::2000:b1ff:fea9:4560", - "CanPort80": true - }, - { - "Name": "7e", - "RegionID": 7, - "HostName": "derp7e.tailscale.com", - "IPv4": "172.238.6.180", - "IPv6": "2600:3c18::2000:60ff:fe0f:6e83", - "STUNOnly": true, - "CanPort80": true - } - ] - }, - "8": { - "RegionID": 8, - "RegionCode": "lhr", - "RegionName": "London", - "Latitude": 51.5072, - "Longitude": 0.1276, - "Nodes": [ - { - "Name": "8f", - "RegionID": 8, - "HostName": "derp8f.tailscale.com", - "IPv4": "176.58.88.183", - "IPv6": "2a00:dd80:3a::dfa", - "CanPort80": true - }, - { - "Name": "8g", - "RegionID": 8, - "HostName": "derp8g.tailscale.com", - "IPv4": "176.58.92.254", - "IPv6": "2a00:dd80:3a::ed", - "CanPort80": true - }, - { - "Name": "8e", - "RegionID": 8, - "HostName": "derp8e.tailscale.com", - "IPv4": "176.58.92.144", - "IPv6": "2a00:dd80:3a::b33", - "CanPort80": true - } - ] - }, - "9": { - "RegionID": 9, - "RegionCode": "dfw", - "RegionName": "Dallas", - "Latitude": 32.779167, - "Longitude": -96.808889, - "Nodes": [ - { - "Name": "9e", - "RegionID": 9, - "HostName": "derp9e.tailscale.com", - "IPv4": "192.73.248.83", - "IPv6": "2607:f740:100::359", - "CanPort80": true - }, - { - "Name": "9f", - "RegionID": 9, - "HostName": "derp9f.tailscale.com", - "IPv4": "209.177.156.197", - "IPv6": "2607:f740:100::cad", - "CanPort80": true - }, - { - "Name": "9d", - "RegionID": 9, - "HostName": "derp9d.tailscale.com", - "IPv4": "209.177.156.94", - "IPv6": "2607:f740:100::c05", - "CanPort80": true - } - ] - } - } - }, - "DisplayMessages": null, - "TKAEnabled": false, - "TKAHead": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", - "Domain": "kratail2tid@passkey", - "DomainAuditLogID": "", - "UserProfiles": { - "3118755726458377": { - "ID": 3118755726458377, - "LoginName": "exit-a.tail78f774.ts.net", - "DisplayName": "exit-a" - } - } + "PacketFilterRules": null } }, "exit-b": { - "commands": { - "packet_filter_rules": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-b/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-b/tailscaled.sock debug localapi POST debug-packet-filter-matches" - }, "packet_filter_rules": null, - "packet_filter_matches": [], - "whois": { - "100.124.195.93": { - "peer_name": "exit-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-b/tailscaled.sock whois --json 100.124.195.93", - "response": null - }, - "100.85.66.106": { - "peer_name": "exit-node", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-b/tailscaled.sock whois --json 100.85.66.106", - "response": null - }, - "100.107.162.14": { - "peer_name": "group-a-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-b/tailscaled.sock whois --json 100.107.162.14", - "response": null - }, - "100.77.135.18": { - "peer_name": "group-b-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-b/tailscaled.sock whois --json 100.77.135.18", - "response": null - }, - "100.105.127.107": { - "peer_name": "multi-exit-router", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-b/tailscaled.sock whois --json 100.105.127.107", - "response": null - }, - "100.109.43.124": { - "peer_name": "router-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-b/tailscaled.sock whois --json 100.109.43.124", - "response": null - }, - "100.65.172.123": { - "peer_name": "router-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-b/tailscaled.sock whois --json 100.65.172.123", - "response": null - }, - "100.92.142.61": { - "peer_name": "subnet-router", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-b/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-b/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-b/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-b/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-b/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-b/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-b/tailscaled.sock whois --json 100.90.199.68", - "response": null - } - }, "netmap": { - "SelfNode": { - "ID": 2230775583277936, - "StableID": "ndK1N8hKRJ11CNTRL", - "Name": "exit-b.tail78f774.ts.net.", - "User": 2230775583277936, - "Key": "nodekey:265e1377372be0d036773ac41339bf7b53ed18e9f67f196d7d517abeff741217", - "DiscoKey": "discokey:63071b08ff89860a2d98005f8f6f65f3b92e05b7b1338b1be71e4ad866f12728", - "Addresses": ["100.116.18.24/32", "fd7a:115c:a1e0::ff37:1218/128"], - "AllowedIPs": ["100.116.18.24/32", "fd7a:115c:a1e0::ff37:1218/128"], - "Endpoints": ["77.164.248.136:35565", "10.65.0.27:35565", "172.17.0.1:35565"], - "Hostinfo": { - "Hostname": "exit-b", - "RoutableIPs": ["0.0.0.0/0", "::/0"], - "RequestTags": ["tag:exit-b"], - "Services": [ - { "Proto": "peerapi4", "Port": 61723 }, - { "Proto": "peerapi6", "Port": 61723 }, - { "Proto": "peerapi-dns-proxy", "Port": 1 } - ] - }, - "Created": "2026-03-28T10:38:00.655990366Z", - "Tags": ["tag:exit-b"], - "MachineAuthorized": true, - "CapMap": { - "https://tailscale.com/cap/file-sharing": null, - "https://tailscale.com/cap/is-owner": null, - "https://tailscale.com/cap/ssh": null, - "https://tailscale.com/cap/tailnet-lock": null, - "probe-udp-lifetime": null, - "ssh-behavior-v1": null, - "ssh-env-vars": null, - "store-appc-routes": null, - "tailnet-display-name": ["kratail2tid@passkey"] - }, - "ComputedName": "exit-b", - "ComputedNameWithHost": "exit-b" - }, - "AllCaps": [ - "tailnet-display-name", - "https://tailscale.com/cap/file-sharing", - "https://tailscale.com/cap/tailnet-lock", - "https://tailscale.com/cap/ssh", - "probe-udp-lifetime", - "ssh-env-vars", - "store-appc-routes", - "https://tailscale.com/cap/is-owner", - "ssh-behavior-v1" - ], - "NodeKey": "nodekey:265e1377372be0d036773ac41339bf7b53ed18e9f67f196d7d517abeff741217", - "MachineKey": "mkey:f4cbc28e2db0f8d8a6a5fc3991b055477e5efc6c025d24b72d3509fa3743401c", "Peers": [], - "DNS": { - "Routes": { - "tail78f774.ts.net.": null, - "ts.net.": [{ "Addr": "199.247.155.53" }, { "Addr": "2620:111:8007::53" }] - }, - "Domains": ["tail78f774.ts.net"], - "Proxied": true, - "ExitNodeFilteredSet": [".ts.net", ".tailscale.net"] - }, - "PacketFilter": [], - "PacketFilterRules": null, - "SSHPolicy": { "rules": [] }, - "CollectServices": false, - "DERPMap": { - "Regions": { - "1": { - "RegionID": 1, - "RegionCode": "nyc", - "RegionName": "New York City", - "Latitude": 40.7128, - "Longitude": -74.006, - "Nodes": [ - { - "Name": "1h", - "RegionID": 1, - "HostName": "derp1h.tailscale.com", - "IPv4": "199.38.181.93", - "IPv6": "2607:f740:f::afd", - "CanPort80": true - }, - { - "Name": "1g", - "RegionID": 1, - "HostName": "derp1g.tailscale.com", - "IPv4": "209.177.145.120", - "IPv6": "2607:f740:f::3eb", - "CanPort80": true - }, - { - "Name": "1i", - "RegionID": 1, - "HostName": "derp1i.tailscale.com", - "IPv4": "199.38.181.103", - "IPv6": "2607:f740:f::e19", - "CanPort80": true - }, - { - "Name": "1f", - "RegionID": 1, - "HostName": "derp1f.tailscale.com", - "IPv4": "199.38.181.104", - "IPv6": "2607:f740:f::bc", - "CanPort80": true - } - ] - }, - "10": { - "RegionID": 10, - "RegionCode": "sea", - "RegionName": "Seattle", - "Latitude": 47.609722, - "Longitude": -122.333056, - "Nodes": [ - { - "Name": "10c", - "RegionID": 10, - "HostName": "derp10c.tailscale.com", - "IPv4": "192.73.240.121", - "IPv6": "2607:f740:14::40c", - "CanPort80": true - }, - { - "Name": "10d", - "RegionID": 10, - "HostName": "derp10d.tailscale.com", - "IPv4": "192.73.240.132", - "IPv6": "2607:f740:14::500", - "CanPort80": true - }, - { - "Name": "10b", - "RegionID": 10, - "HostName": "derp10b.tailscale.com", - "IPv4": "192.73.240.161", - "IPv6": "2607:f740:14::61c", - "CanPort80": true - } - ] - }, - "11": { - "RegionID": 11, - "RegionCode": "sao", - "RegionName": "São Paulo", - "Latitude": -23.55, - "Longitude": -46.633333, - "Nodes": [ - { - "Name": "11f", - "RegionID": 11, - "HostName": "derp11f.tailscale.com", - "IPv4": "172.237.61.197", - "IPv6": "2600:3c0d::2000:3bff:fe44:6166", - "CanPort80": true - }, - { - "Name": "11g", - "RegionID": 11, - "HostName": "derp11g.tailscale.com", - "IPv4": "172.237.61.190", - "IPv6": "2600:3c0d::2000:62ff:febe:2e67", - "CanPort80": true - }, - { - "Name": "11e", - "RegionID": 11, - "HostName": "derp11e.tailscale.com", - "IPv4": "172.237.61.194", - "IPv6": "2600:3c0d::2000:d2ff:fe43:1790", - "CanPort80": true - } - ] - }, - "12": { - "RegionID": 12, - "RegionCode": "ord", - "RegionName": "Chicago", - "Latitude": 41.881944, - "Longitude": -87.627778, - "Nodes": [ - { - "Name": "12e", - "RegionID": 12, - "HostName": "derp12e.tailscale.com", - "IPv4": "209.177.158.15", - "IPv6": "2607:f740:e::b17", - "CanPort80": true - }, - { - "Name": "12f", - "RegionID": 12, - "HostName": "derp12f.tailscale.com", - "IPv4": "199.38.182.118", - "IPv6": "2607:f740:e::4c8", - "CanPort80": true - }, - { - "Name": "12d", - "RegionID": 12, - "HostName": "derp12d.tailscale.com", - "IPv4": "209.177.158.246", - "IPv6": "2607:f740:e::811", - "CanPort80": true - } - ] - }, - "13": { - "RegionID": 13, - "RegionCode": "den", - "RegionName": "Denver", - "Latitude": 39.7392, - "Longitude": -104.9849, - "Nodes": [ - { - "Name": "13c", - "RegionID": 13, - "HostName": "derp13c.tailscale.com", - "IPv4": "192.73.242.28", - "IPv6": "2607:f740:16::5c", - "CanPort80": true - }, - { - "Name": "13d", - "RegionID": 13, - "HostName": "derp13d.tailscale.com", - "IPv4": "192.73.242.204", - "IPv6": "2607:f740:16::c23", - "CanPort80": true - }, - { - "Name": "13b", - "RegionID": 13, - "HostName": "derp13b.tailscale.com", - "IPv4": "192.73.242.187", - "IPv6": "2607:f740:16::640", - "CanPort80": true - } - ] - }, - "14": { - "RegionID": 14, - "RegionCode": "ams", - "RegionName": "Amsterdam", - "Latitude": 52.372778, - "Longitude": 4.893611, - "Nodes": [ - { - "Name": "14c", - "RegionID": 14, - "HostName": "derp14c.tailscale.com", - "IPv4": "176.58.93.147", - "IPv6": "2a00:dd80:3c::b09", - "CanPort80": true - }, - { - "Name": "14d", - "RegionID": 14, - "HostName": "derp14d.tailscale.com", - "IPv4": "176.58.93.154", - "IPv6": "2a00:dd80:3c::3d5", - "CanPort80": true - }, - { - "Name": "14b", - "RegionID": 14, - "HostName": "derp14b.tailscale.com", - "IPv4": "176.58.93.248", - "IPv6": "2a00:dd80:3c::807", - "CanPort80": true - } - ] - }, - "15": { - "RegionID": 15, - "RegionCode": "jnb", - "RegionName": "Johannesburg", - "Latitude": -26.204444, - "Longitude": 28.045556, - "Nodes": [ - { - "Name": "15c", - "RegionID": 15, - "HostName": "derp15c.tailscale.com", - "IPv4": "102.67.165.185", - "IPv6": "2c0f:edb0:0:10::b59", - "CanPort80": true - }, - { - "Name": "15d", - "RegionID": 15, - "HostName": "derp15d.tailscale.com", - "IPv4": "102.67.165.36", - "IPv6": "2c0f:edb0:0:10::599", - "CanPort80": true - }, - { - "Name": "15b", - "RegionID": 15, - "HostName": "derp15b.tailscale.com", - "IPv4": "102.67.165.90", - "IPv6": "2c0f:edb0:0:10::963", - "CanPort80": true - } - ] - }, - "16": { - "RegionID": 16, - "RegionCode": "mia", - "RegionName": "Miami", - "Latitude": 25.78, - "Longitude": -80.21, - "Nodes": [ - { - "Name": "16c", - "RegionID": 16, - "HostName": "derp16c.tailscale.com", - "IPv4": "192.73.243.229", - "IPv6": "2607:f740:17::4e4", - "CanPort80": true - }, - { - "Name": "16d", - "RegionID": 16, - "HostName": "derp16d.tailscale.com", - "IPv4": "192.73.243.141", - "IPv6": "2607:f740:17::475", - "CanPort80": true - }, - { - "Name": "16b", - "RegionID": 16, - "HostName": "derp16b.tailscale.com", - "IPv4": "192.73.243.135", - "IPv6": "2607:f740:17::476", - "CanPort80": true - } - ] - }, - "17": { - "RegionID": 17, - "RegionCode": "lax", - "RegionName": "Los Angeles", - "Latitude": 34.05, - "Longitude": -118.25, - "Nodes": [ - { - "Name": "17c", - "RegionID": 17, - "HostName": "derp17c.tailscale.com", - "IPv4": "208.111.40.12", - "IPv6": "2607:f740:c::10", - "CanPort80": true - }, - { - "Name": "17d", - "RegionID": 17, - "HostName": "derp17d.tailscale.com", - "IPv4": "208.111.40.216", - "IPv6": "2607:f740:c::e1b", - "CanPort80": true - }, - { - "Name": "17b", - "RegionID": 17, - "HostName": "derp17b.tailscale.com", - "IPv4": "192.73.244.245", - "IPv6": "2607:f740:c::646", - "CanPort80": true - } - ] - }, - "18": { - "RegionID": 18, - "RegionCode": "par", - "RegionName": "Paris", - "Latitude": 48.856667, - "Longitude": 2.352222, - "Nodes": [ - { - "Name": "18c", - "RegionID": 18, - "HostName": "derp18c.tailscale.com", - "IPv4": "176.58.90.207", - "IPv6": "2a00:dd80:3e::c19", - "CanPort80": true - }, - { - "Name": "18d", - "RegionID": 18, - "HostName": "derp18d.tailscale.com", - "IPv4": "176.58.90.104", - "IPv6": "2a00:dd80:3e::f2e", - "CanPort80": true - }, - { - "Name": "18b", - "RegionID": 18, - "HostName": "derp18b.tailscale.com", - "IPv4": "176.58.90.147", - "IPv6": "2a00:dd80:3e::363", - "CanPort80": true - } - ] - }, - "19": { - "RegionID": 19, - "RegionCode": "mad", - "RegionName": "Madrid", - "Latitude": 40.416944, - "Longitude": -3.703333, - "Nodes": [ - { - "Name": "19c", - "RegionID": 19, - "HostName": "derp19c.tailscale.com", - "IPv4": "45.159.97.61", - "IPv6": "2a00:dd80:14:10::20", - "CanPort80": true - }, - { - "Name": "19d", - "RegionID": 19, - "HostName": "derp19d.tailscale.com", - "IPv4": "45.159.97.233", - "IPv6": "2a00:dd80:14:10::34a", - "CanPort80": true - }, - { - "Name": "19b", - "RegionID": 19, - "HostName": "derp19b.tailscale.com", - "IPv4": "45.159.97.144", - "IPv6": "2a00:dd80:14:10::335", - "CanPort80": true - } - ] - }, - "2": { - "RegionID": 2, - "RegionCode": "sfo", - "RegionName": "San Francisco", - "Latitude": 37.7775, - "Longitude": -122.416389, - "Nodes": [ - { - "Name": "2e", - "RegionID": 2, - "HostName": "derp2e.tailscale.com", - "IPv4": "192.73.252.134", - "IPv6": "2607:f740:0:3f::44c", - "CanPort80": true - }, - { - "Name": "2f", - "RegionID": 2, - "HostName": "derp2f.tailscale.com", - "IPv4": "208.111.34.178", - "IPv6": "2607:f740:0:3f::f4", - "CanPort80": true - }, - { - "Name": "2d", - "RegionID": 2, - "HostName": "derp2d.tailscale.com", - "IPv4": "192.73.252.65", - "IPv6": "2607:f740:0:3f::287", - "CanPort80": true - } - ] - }, - "20": { - "RegionID": 20, - "RegionCode": "hkg", - "RegionName": "Hong Kong", - "Latitude": 22.3193, - "Longitude": 114.1694, - "Nodes": [ - { - "Name": "20c", - "RegionID": 20, - "HostName": "derp20c.tailscale.com", - "IPv4": "205.147.105.30", - "IPv6": "2403:2500:8000:1::5fb", - "CanPort80": true - }, - { - "Name": "20d", - "RegionID": 20, - "HostName": "derp20d.tailscale.com", - "IPv4": "205.147.105.78", - "IPv6": "2403:2500:8000:1::e9a", - "CanPort80": true - }, - { - "Name": "20b", - "RegionID": 20, - "HostName": "derp20b.tailscale.com", - "IPv4": "103.6.84.152", - "IPv6": "2403:2500:8000:1::ef6", - "CanPort80": true - } - ] - }, - "21": { - "RegionID": 21, - "RegionCode": "tor", - "RegionName": "Toronto", - "Latitude": 43.741667, - "Longitude": -79.373333, - "Nodes": [ - { - "Name": "21c", - "RegionID": 21, - "HostName": "derp21c.tailscale.com", - "IPv4": "162.248.221.215", - "IPv6": "2607:f740:50::f10", - "CanPort80": true - }, - { - "Name": "21d", - "RegionID": 21, - "HostName": "derp21d.tailscale.com", - "IPv4": "162.248.221.248", - "IPv6": "2607:f740:50::ca4", - "CanPort80": true - }, - { - "Name": "21b", - "RegionID": 21, - "HostName": "derp21b.tailscale.com", - "IPv4": "162.248.221.199", - "IPv6": "2607:f740:50::1d1", - "CanPort80": true - } - ] - }, - "22": { - "RegionID": 22, - "RegionCode": "waw", - "RegionName": "Warsaw", - "Latitude": 52.23, - "Longitude": 21.011111, - "Nodes": [ - { - "Name": "22c", - "RegionID": 22, - "HostName": "derp22c.tailscale.com", - "IPv4": "45.159.98.253", - "IPv6": "2a00:dd80:40:100::3f", - "CanPort80": true - }, - { - "Name": "22d", - "RegionID": 22, - "HostName": "derp22d.tailscale.com", - "IPv4": "45.159.98.145", - "IPv6": "2a00:dd80:40:100::211", - "CanPort80": true - }, - { - "Name": "22b", - "RegionID": 22, - "HostName": "derp22b.tailscale.com", - "IPv4": "45.159.98.196", - "IPv6": "2a00:dd80:40:100::316", - "CanPort80": true - } - ] - }, - "23": { - "RegionID": 23, - "RegionCode": "dbi", - "RegionName": "Dubai", - "Latitude": 25.263056, - "Longitude": 55.297222, - "Nodes": [ - { - "Name": "23c", - "RegionID": 23, - "HostName": "derp23c.tailscale.com", - "IPv4": "185.34.3.207", - "IPv6": "2a00:dd80:3f:100::a50", - "CanPort80": true - }, - { - "Name": "23d", - "RegionID": 23, - "HostName": "derp23d.tailscale.com", - "IPv4": "185.34.3.75", - "IPv6": "2a00:dd80:3f:100::97e", - "CanPort80": true - }, - { - "Name": "23b", - "RegionID": 23, - "HostName": "derp23b.tailscale.com", - "IPv4": "185.34.3.232", - "IPv6": "2a00:dd80:3f:100::76f", - "CanPort80": true - } - ] - }, - "24": { - "RegionID": 24, - "RegionCode": "hnl", - "RegionName": "Honolulu", - "Latitude": 21.306944, - "Longitude": -157.858333, - "Nodes": [ - { - "Name": "24c", - "RegionID": 24, - "HostName": "derp24c.tailscale.com", - "IPv4": "208.83.233.233", - "IPv6": "2001:19f0:c000:c591:5400:04ff:fe26:2c5f", - "CanPort80": true - }, - { - "Name": "24d", - "RegionID": 24, - "HostName": "derp24d.tailscale.com", - "IPv4": "208.72.155.133", - "IPv6": "2001:19f0:c000:c564:5400:04ff:fe26:2ba8", - "CanPort80": true - }, - { - "Name": "24b", - "RegionID": 24, - "HostName": "derp24b.tailscale.com", - "IPv4": "208.83.234.151", - "IPv6": "2001:19f0:c000:c586:5400:04ff:fe26:2ba6", - "CanPort80": true - } - ] - }, - "25": { - "RegionID": 25, - "RegionCode": "nai", - "RegionName": "Nairobi", - "Latitude": -1.286389, - "Longitude": 36.817222, - "Nodes": [ - { - "Name": "25c", - "RegionID": 25, - "HostName": "derp25c.tailscale.com", - "IPv4": "102.67.167.37", - "IPv6": "2c0f:edb0:2000:1::2c7", - "CanPort80": true - }, - { - "Name": "25d", - "RegionID": 25, - "HostName": "derp25d.tailscale.com", - "IPv4": "102.67.167.188", - "IPv6": "2c0f:edb0:2000:1::188", - "CanPort80": true - }, - { - "Name": "25b", - "RegionID": 25, - "HostName": "derp25b.tailscale.com", - "IPv4": "102.67.167.245", - "IPv6": "2c0f:edb0:2000:1::2e9", - "CanPort80": true - } - ] - }, - "26": { - "RegionID": 26, - "RegionCode": "nue", - "RegionName": "Nuremberg", - "Latitude": 49.453889, - "Longitude": 11.0775, - "Nodes": [ - { - "Name": "26c", - "RegionID": 26, - "HostName": "derp26c.tailscale.com", - "IPv4": "49.12.193.137", - "IPv6": "2a01:4f8:1c1c:5c70::1", - "CanPort80": true - }, - { - "Name": "26d", - "RegionID": 26, - "HostName": "derp26d.tailscale.com", - "IPv4": "49.13.204.141", - "IPv6": "2a01:4f8:1c0c:7d06::1", - "CanPort80": true - }, - { - "Name": "26b", - "RegionID": 26, - "HostName": "derp26b.tailscale.com", - "IPv4": "167.235.72.200", - "IPv6": "2a01:4f8:1c1c:47b6::1", - "CanPort80": true - } - ] - }, - "27": { - "RegionID": 27, - "RegionCode": "iad", - "RegionName": "Ashburn", - "Latitude": 39.03, - "Longitude": -77.471111, - "Nodes": [ - { - "Name": "27d", - "RegionID": 27, - "HostName": "derp27d.tailscale.com", - "IPv4": "178.156.152.106", - "IPv6": "2a01:4ff:f0:3c8e::1", - "CanPort80": true - }, - { - "Name": "27c", - "RegionID": 27, - "HostName": "derp27c.tailscale.com", - "IPv4": "178.156.152.91", - "IPv6": "2a01:4ff:f0:3913::1", - "CanPort80": true - }, - { - "Name": "27e", - "RegionID": 27, - "HostName": "derp27e.tailscale.com", - "IPv4": "178.156.134.232", - "IPv6": "2a01:4ff:f0:28d4::1", - "CanPort80": true - }, - { - "Name": "27b", - "RegionID": 27, - "HostName": "derp27b.tailscale.com", - "IPv4": "5.161.218.233", - "IPv6": "2a01:4ff:f0:3db9::1", - "CanPort80": true - } - ] - }, - "28": { - "RegionID": 28, - "RegionCode": "hel", - "RegionName": "Helsinki", - "Latitude": 60.170833, - "Longitude": 24.9375, - "Nodes": [ - { - "Name": "28c", - "RegionID": 28, - "HostName": "derp28c.tailscale.com", - "IPv4": "95.217.2.165", - "IPv6": "2a01:4f9:c012:cd74::1", - "CanPort80": true - }, - { - "Name": "28d", - "RegionID": 28, - "HostName": "derp28d.tailscale.com", - "IPv4": "157.180.28.32", - "IPv6": "2a01:4f9:c012:2e5b::1", - "CanPort80": true - }, - { - "Name": "28b", - "RegionID": 28, - "HostName": "derp28b.tailscale.com", - "IPv4": "65.109.143.62", - "IPv6": "2a01:4f9:c012:d55c::1", - "CanPort80": true - } - ] - }, - "3": { - "RegionID": 3, - "RegionCode": "sin", - "RegionName": "Singapore", - "Latitude": 1.3521, - "Longitude": 103.8198, - "Nodes": [ - { - "Name": "3g", - "RegionID": 3, - "HostName": "derp3g.tailscale.com", - "IPv4": "172.237.72.79", - "IPv6": "2600:3c15::2000:adff:fe08:6fab", - "CanPort80": true - }, - { - "Name": "3f", - "RegionID": 3, - "HostName": "derp3f.tailscale.com", - "IPv4": "172.237.72.8", - "IPv6": "2600:3c15::2000:53ff:fe48:a668", - "CanPort80": true - }, - { - "Name": "3h", - "RegionID": 3, - "HostName": "derp3h.tailscale.com", - "IPv4": "172.237.66.30", - "IPv6": "2600:3c15::2000:3dff:fe44:50aa", - "CanPort80": true - }, - { - "Name": "3e", - "RegionID": 3, - "HostName": "derp3e.tailscale.com", - "IPv4": "172.237.72.43", - "IPv6": "2600:3c15::2000:6cff:fee4:d799", - "CanPort80": true - } - ] - }, - "4": { - "RegionID": 4, - "RegionCode": "fra", - "RegionName": "Frankfurt", - "Latitude": 50.1109, - "Longitude": 8.6821, - "Nodes": [ - { - "Name": "4h", - "RegionID": 4, - "HostName": "derp4h.tailscale.com", - "IPv4": "185.40.234.77", - "IPv6": "2a00:dd80:20::bcf", - "CanPort80": true - }, - { - "Name": "4g", - "RegionID": 4, - "HostName": "derp4g.tailscale.com", - "IPv4": "185.40.234.113", - "IPv6": "2a00:dd80:20::8f", - "CanPort80": true - }, - { - "Name": "4i", - "RegionID": 4, - "HostName": "derp4i.tailscale.com", - "IPv4": "185.40.234.53", - "IPv6": "2a00:dd80:20::8a6", - "CanPort80": true - }, - { - "Name": "4f", - "RegionID": 4, - "HostName": "derp4f.tailscale.com", - "IPv4": "185.40.234.219", - "IPv6": "2a00:dd80:20::a25", - "CanPort80": true - } - ] - }, - "5": { - "RegionID": 5, - "RegionCode": "syd", - "RegionName": "Sydney", - "Latitude": -33.867778, - "Longitude": 151.21, - "Nodes": [ - { - "Name": "5f", - "RegionID": 5, - "HostName": "derp5f.tailscale.com", - "IPv4": "172.105.166.103", - "IPv6": "2400:8907::2000:ccff:fe1f:80da", - "CanPort80": true - }, - { - "Name": "5g", - "RegionID": 5, - "HostName": "derp5g.tailscale.com", - "IPv4": "172.105.169.57", - "IPv6": "2400:8907::2000:2fff:fea7:57f4", - "CanPort80": true - }, - { - "Name": "5e", - "RegionID": 5, - "HostName": "derp5e.tailscale.com", - "IPv4": "172.105.179.230", - "IPv6": "2400:8907::2000:ceff:fe8d:4f4e", - "CanPort80": true - } - ] - }, - "6": { - "RegionID": 6, - "RegionCode": "blr", - "RegionName": "Bengaluru", - "Latitude": 12.9716, - "Longitude": 77.5946, - "Nodes": [ - { - "Name": "6a", - "RegionID": 6, - "HostName": "derp6.tailscale.com", - "IPv4": "68.183.90.120", - "IPv6": "2400:6180:100:d0::982:d001", - "CanPort80": true - } - ] - }, - "7": { - "RegionID": 7, - "RegionCode": "tok", - "RegionName": "Tokyo", - "Latitude": 35.6764, - "Longitude": 139.65, - "Nodes": [ - { - "Name": "7g", - "RegionID": 7, - "HostName": "derp7g.tailscale.com", - "IPv4": "172.238.6.179", - "IPv6": "2600:3c18::2000:3fff:fe80:3ebd", - "CanPort80": true - }, - { - "Name": "7f", - "RegionID": 7, - "HostName": "derp7f.tailscale.com", - "IPv4": "172.238.6.34", - "IPv6": "2600:3c18::2000:acff:fe8e:3ed5", - "CanPort80": true - }, - { - "Name": "7h", - "RegionID": 7, - "HostName": "derp7h.tailscale.com", - "IPv4": "172.237.28.183", - "IPv6": "2600:3c18::2000:b1ff:fea9:4560", - "CanPort80": true - }, - { - "Name": "7e", - "RegionID": 7, - "HostName": "derp7e.tailscale.com", - "IPv4": "172.238.6.180", - "IPv6": "2600:3c18::2000:60ff:fe0f:6e83", - "STUNOnly": true, - "CanPort80": true - } - ] - }, - "8": { - "RegionID": 8, - "RegionCode": "lhr", - "RegionName": "London", - "Latitude": 51.5072, - "Longitude": 0.1276, - "Nodes": [ - { - "Name": "8f", - "RegionID": 8, - "HostName": "derp8f.tailscale.com", - "IPv4": "176.58.88.183", - "IPv6": "2a00:dd80:3a::dfa", - "CanPort80": true - }, - { - "Name": "8g", - "RegionID": 8, - "HostName": "derp8g.tailscale.com", - "IPv4": "176.58.92.254", - "IPv6": "2a00:dd80:3a::ed", - "CanPort80": true - }, - { - "Name": "8e", - "RegionID": 8, - "HostName": "derp8e.tailscale.com", - "IPv4": "176.58.92.144", - "IPv6": "2a00:dd80:3a::b33", - "CanPort80": true - } - ] - }, - "9": { - "RegionID": 9, - "RegionCode": "dfw", - "RegionName": "Dallas", - "Latitude": 32.779167, - "Longitude": -96.808889, - "Nodes": [ - { - "Name": "9e", - "RegionID": 9, - "HostName": "derp9e.tailscale.com", - "IPv4": "192.73.248.83", - "IPv6": "2607:f740:100::359", - "CanPort80": true - }, - { - "Name": "9f", - "RegionID": 9, - "HostName": "derp9f.tailscale.com", - "IPv4": "209.177.156.197", - "IPv6": "2607:f740:100::cad", - "CanPort80": true - }, - { - "Name": "9d", - "RegionID": 9, - "HostName": "derp9d.tailscale.com", - "IPv4": "209.177.156.94", - "IPv6": "2607:f740:100::c05", - "CanPort80": true - } - ] - } - } - }, - "DisplayMessages": null, - "TKAEnabled": false, - "TKAHead": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", - "Domain": "kratail2tid@passkey", - "DomainAuditLogID": "", - "UserProfiles": { - "2230775583277936": { - "ID": 2230775583277936, - "LoginName": "exit-b.tail78f774.ts.net", - "DisplayName": "exit-b" - } - } + "PacketFilterRules": null } }, "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.124.195.93": { - "peer_name": "exit-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-node/tailscaled.sock whois --json 100.124.195.93", - "response": null - }, - "100.116.18.24": { - "peer_name": "exit-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-node/tailscaled.sock whois --json 100.116.18.24", - "response": null - }, - "100.107.162.14": { - "peer_name": "group-a-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-node/tailscaled.sock whois --json 100.107.162.14", - "response": null - }, - "100.77.135.18": { - "peer_name": "group-b-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-node/tailscaled.sock whois --json 100.77.135.18", - "response": null - }, - "100.105.127.107": { - "peer_name": "multi-exit-router", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-node/tailscaled.sock whois --json 100.105.127.107", - "response": null - }, - "100.109.43.124": { - "peer_name": "router-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-node/tailscaled.sock whois --json 100.109.43.124", - "response": null - }, - "100.65.172.123": { - "peer_name": "router-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-node/tailscaled.sock whois --json 100.65.172.123", - "response": null - }, - "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 - } - }, "netmap": { - "SelfNode": { - "ID": 4041918547170221, - "StableID": "ngCb76MbZY11CNTRL", - "Name": "exit-node.tail78f774.ts.net.", - "User": 4041918547170221, - "Key": "nodekey:90f4a7b9dc024f1ddec414a49de2aa7611a2dd86efc9d7bae30862ad7c954269", - "DiscoKey": "discokey:6f1a76215431d7100538970473d97b4fde0e0a19b91035d1cba40b59ad79b437", - "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:36712", "10.65.0.27:36712", "172.17.0.1:36712"], - "Hostinfo": { - "Hostname": "exit-node", - "RoutableIPs": ["0.0.0.0/0", "::/0"], - "RequestTags": ["tag:exit"], - "Services": [ - { "Proto": "peerapi4", "Port": 37000 }, - { "Proto": "peerapi6", "Port": 37000 }, - { "Proto": "peerapi-dns-proxy", "Port": 1 } - ] - }, - "Created": "2026-02-23T00:13:20.566112173Z", - "Tags": ["tag:exit"], - "MachineAuthorized": true, - "CapMap": { - "https://tailscale.com/cap/file-sharing": null, - "https://tailscale.com/cap/is-owner": null, - "https://tailscale.com/cap/ssh": null, - "https://tailscale.com/cap/tailnet-lock": null, - "probe-udp-lifetime": null, - "ssh-behavior-v1": null, - "ssh-env-vars": null, - "store-appc-routes": null, - "tailnet-display-name": ["kratail2tid@passkey"] - }, - "ComputedName": "exit-node", - "ComputedNameWithHost": "exit-node" - }, - "AllCaps": [ - "https://tailscale.com/cap/ssh", - "https://tailscale.com/cap/tailnet-lock", - "tailnet-display-name", - "ssh-env-vars", - "probe-udp-lifetime", - "ssh-behavior-v1", - "store-appc-routes", - "https://tailscale.com/cap/file-sharing", - "https://tailscale.com/cap/is-owner" - ], - "NodeKey": "nodekey:90f4a7b9dc024f1ddec414a49de2aa7611a2dd86efc9d7bae30862ad7c954269", - "MachineKey": "mkey:e3be47b2090e55400f3e64825cd3092841529cd7b5b775e9e4553f12308abc2a", "Peers": [], - "DNS": { - "Routes": { - "tail78f774.ts.net.": null, - "ts.net.": [{ "Addr": "199.247.155.53" }, { "Addr": "2620:111:8007::53" }] - }, - "Domains": ["tail78f774.ts.net"], - "Proxied": true, - "ExitNodeFilteredSet": [".ts.net", ".tailscale.net"] - }, - "PacketFilter": [], - "PacketFilterRules": null, - "SSHPolicy": { "rules": [] }, - "CollectServices": false, - "DERPMap": { - "Regions": { - "1": { - "RegionID": 1, - "RegionCode": "nyc", - "RegionName": "New York City", - "Latitude": 40.7128, - "Longitude": -74.006, - "Nodes": [ - { - "Name": "1h", - "RegionID": 1, - "HostName": "derp1h.tailscale.com", - "IPv4": "199.38.181.93", - "IPv6": "2607:f740:f::afd", - "CanPort80": true - }, - { - "Name": "1g", - "RegionID": 1, - "HostName": "derp1g.tailscale.com", - "IPv4": "209.177.145.120", - "IPv6": "2607:f740:f::3eb", - "CanPort80": true - }, - { - "Name": "1i", - "RegionID": 1, - "HostName": "derp1i.tailscale.com", - "IPv4": "199.38.181.103", - "IPv6": "2607:f740:f::e19", - "CanPort80": true - }, - { - "Name": "1f", - "RegionID": 1, - "HostName": "derp1f.tailscale.com", - "IPv4": "199.38.181.104", - "IPv6": "2607:f740:f::bc", - "CanPort80": true - } - ] - }, - "10": { - "RegionID": 10, - "RegionCode": "sea", - "RegionName": "Seattle", - "Latitude": 47.609722, - "Longitude": -122.333056, - "Nodes": [ - { - "Name": "10c", - "RegionID": 10, - "HostName": "derp10c.tailscale.com", - "IPv4": "192.73.240.121", - "IPv6": "2607:f740:14::40c", - "CanPort80": true - }, - { - "Name": "10d", - "RegionID": 10, - "HostName": "derp10d.tailscale.com", - "IPv4": "192.73.240.132", - "IPv6": "2607:f740:14::500", - "CanPort80": true - }, - { - "Name": "10b", - "RegionID": 10, - "HostName": "derp10b.tailscale.com", - "IPv4": "192.73.240.161", - "IPv6": "2607:f740:14::61c", - "CanPort80": true - } - ] - }, - "11": { - "RegionID": 11, - "RegionCode": "sao", - "RegionName": "São Paulo", - "Latitude": -23.55, - "Longitude": -46.633333, - "Nodes": [ - { - "Name": "11f", - "RegionID": 11, - "HostName": "derp11f.tailscale.com", - "IPv4": "172.237.61.197", - "IPv6": "2600:3c0d::2000:3bff:fe44:6166", - "CanPort80": true - }, - { - "Name": "11g", - "RegionID": 11, - "HostName": "derp11g.tailscale.com", - "IPv4": "172.237.61.190", - "IPv6": "2600:3c0d::2000:62ff:febe:2e67", - "CanPort80": true - }, - { - "Name": "11e", - "RegionID": 11, - "HostName": "derp11e.tailscale.com", - "IPv4": "172.237.61.194", - "IPv6": "2600:3c0d::2000:d2ff:fe43:1790", - "CanPort80": true - } - ] - }, - "12": { - "RegionID": 12, - "RegionCode": "ord", - "RegionName": "Chicago", - "Latitude": 41.881944, - "Longitude": -87.627778, - "Nodes": [ - { - "Name": "12e", - "RegionID": 12, - "HostName": "derp12e.tailscale.com", - "IPv4": "209.177.158.15", - "IPv6": "2607:f740:e::b17", - "CanPort80": true - }, - { - "Name": "12f", - "RegionID": 12, - "HostName": "derp12f.tailscale.com", - "IPv4": "199.38.182.118", - "IPv6": "2607:f740:e::4c8", - "CanPort80": true - }, - { - "Name": "12d", - "RegionID": 12, - "HostName": "derp12d.tailscale.com", - "IPv4": "209.177.158.246", - "IPv6": "2607:f740:e::811", - "CanPort80": true - } - ] - }, - "13": { - "RegionID": 13, - "RegionCode": "den", - "RegionName": "Denver", - "Latitude": 39.7392, - "Longitude": -104.9849, - "Nodes": [ - { - "Name": "13c", - "RegionID": 13, - "HostName": "derp13c.tailscale.com", - "IPv4": "192.73.242.28", - "IPv6": "2607:f740:16::5c", - "CanPort80": true - }, - { - "Name": "13d", - "RegionID": 13, - "HostName": "derp13d.tailscale.com", - "IPv4": "192.73.242.204", - "IPv6": "2607:f740:16::c23", - "CanPort80": true - }, - { - "Name": "13b", - "RegionID": 13, - "HostName": "derp13b.tailscale.com", - "IPv4": "192.73.242.187", - "IPv6": "2607:f740:16::640", - "CanPort80": true - } - ] - }, - "14": { - "RegionID": 14, - "RegionCode": "ams", - "RegionName": "Amsterdam", - "Latitude": 52.372778, - "Longitude": 4.893611, - "Nodes": [ - { - "Name": "14c", - "RegionID": 14, - "HostName": "derp14c.tailscale.com", - "IPv4": "176.58.93.147", - "IPv6": "2a00:dd80:3c::b09", - "CanPort80": true - }, - { - "Name": "14d", - "RegionID": 14, - "HostName": "derp14d.tailscale.com", - "IPv4": "176.58.93.154", - "IPv6": "2a00:dd80:3c::3d5", - "CanPort80": true - }, - { - "Name": "14b", - "RegionID": 14, - "HostName": "derp14b.tailscale.com", - "IPv4": "176.58.93.248", - "IPv6": "2a00:dd80:3c::807", - "CanPort80": true - } - ] - }, - "15": { - "RegionID": 15, - "RegionCode": "jnb", - "RegionName": "Johannesburg", - "Latitude": -26.204444, - "Longitude": 28.045556, - "Nodes": [ - { - "Name": "15c", - "RegionID": 15, - "HostName": "derp15c.tailscale.com", - "IPv4": "102.67.165.185", - "IPv6": "2c0f:edb0:0:10::b59", - "CanPort80": true - }, - { - "Name": "15d", - "RegionID": 15, - "HostName": "derp15d.tailscale.com", - "IPv4": "102.67.165.36", - "IPv6": "2c0f:edb0:0:10::599", - "CanPort80": true - }, - { - "Name": "15b", - "RegionID": 15, - "HostName": "derp15b.tailscale.com", - "IPv4": "102.67.165.90", - "IPv6": "2c0f:edb0:0:10::963", - "CanPort80": true - } - ] - }, - "16": { - "RegionID": 16, - "RegionCode": "mia", - "RegionName": "Miami", - "Latitude": 25.78, - "Longitude": -80.21, - "Nodes": [ - { - "Name": "16c", - "RegionID": 16, - "HostName": "derp16c.tailscale.com", - "IPv4": "192.73.243.229", - "IPv6": "2607:f740:17::4e4", - "CanPort80": true - }, - { - "Name": "16d", - "RegionID": 16, - "HostName": "derp16d.tailscale.com", - "IPv4": "192.73.243.141", - "IPv6": "2607:f740:17::475", - "CanPort80": true - }, - { - "Name": "16b", - "RegionID": 16, - "HostName": "derp16b.tailscale.com", - "IPv4": "192.73.243.135", - "IPv6": "2607:f740:17::476", - "CanPort80": true - } - ] - }, - "17": { - "RegionID": 17, - "RegionCode": "lax", - "RegionName": "Los Angeles", - "Latitude": 34.05, - "Longitude": -118.25, - "Nodes": [ - { - "Name": "17c", - "RegionID": 17, - "HostName": "derp17c.tailscale.com", - "IPv4": "208.111.40.12", - "IPv6": "2607:f740:c::10", - "CanPort80": true - }, - { - "Name": "17d", - "RegionID": 17, - "HostName": "derp17d.tailscale.com", - "IPv4": "208.111.40.216", - "IPv6": "2607:f740:c::e1b", - "CanPort80": true - }, - { - "Name": "17b", - "RegionID": 17, - "HostName": "derp17b.tailscale.com", - "IPv4": "192.73.244.245", - "IPv6": "2607:f740:c::646", - "CanPort80": true - } - ] - }, - "18": { - "RegionID": 18, - "RegionCode": "par", - "RegionName": "Paris", - "Latitude": 48.856667, - "Longitude": 2.352222, - "Nodes": [ - { - "Name": "18c", - "RegionID": 18, - "HostName": "derp18c.tailscale.com", - "IPv4": "176.58.90.207", - "IPv6": "2a00:dd80:3e::c19", - "CanPort80": true - }, - { - "Name": "18d", - "RegionID": 18, - "HostName": "derp18d.tailscale.com", - "IPv4": "176.58.90.104", - "IPv6": "2a00:dd80:3e::f2e", - "CanPort80": true - }, - { - "Name": "18b", - "RegionID": 18, - "HostName": "derp18b.tailscale.com", - "IPv4": "176.58.90.147", - "IPv6": "2a00:dd80:3e::363", - "CanPort80": true - } - ] - }, - "19": { - "RegionID": 19, - "RegionCode": "mad", - "RegionName": "Madrid", - "Latitude": 40.416944, - "Longitude": -3.703333, - "Nodes": [ - { - "Name": "19c", - "RegionID": 19, - "HostName": "derp19c.tailscale.com", - "IPv4": "45.159.97.61", - "IPv6": "2a00:dd80:14:10::20", - "CanPort80": true - }, - { - "Name": "19d", - "RegionID": 19, - "HostName": "derp19d.tailscale.com", - "IPv4": "45.159.97.233", - "IPv6": "2a00:dd80:14:10::34a", - "CanPort80": true - }, - { - "Name": "19b", - "RegionID": 19, - "HostName": "derp19b.tailscale.com", - "IPv4": "45.159.97.144", - "IPv6": "2a00:dd80:14:10::335", - "CanPort80": true - } - ] - }, - "2": { - "RegionID": 2, - "RegionCode": "sfo", - "RegionName": "San Francisco", - "Latitude": 37.7775, - "Longitude": -122.416389, - "Nodes": [ - { - "Name": "2e", - "RegionID": 2, - "HostName": "derp2e.tailscale.com", - "IPv4": "192.73.252.134", - "IPv6": "2607:f740:0:3f::44c", - "CanPort80": true - }, - { - "Name": "2f", - "RegionID": 2, - "HostName": "derp2f.tailscale.com", - "IPv4": "208.111.34.178", - "IPv6": "2607:f740:0:3f::f4", - "CanPort80": true - }, - { - "Name": "2d", - "RegionID": 2, - "HostName": "derp2d.tailscale.com", - "IPv4": "192.73.252.65", - "IPv6": "2607:f740:0:3f::287", - "CanPort80": true - } - ] - }, - "20": { - "RegionID": 20, - "RegionCode": "hkg", - "RegionName": "Hong Kong", - "Latitude": 22.3193, - "Longitude": 114.1694, - "Nodes": [ - { - "Name": "20c", - "RegionID": 20, - "HostName": "derp20c.tailscale.com", - "IPv4": "205.147.105.30", - "IPv6": "2403:2500:8000:1::5fb", - "CanPort80": true - }, - { - "Name": "20d", - "RegionID": 20, - "HostName": "derp20d.tailscale.com", - "IPv4": "205.147.105.78", - "IPv6": "2403:2500:8000:1::e9a", - "CanPort80": true - }, - { - "Name": "20b", - "RegionID": 20, - "HostName": "derp20b.tailscale.com", - "IPv4": "103.6.84.152", - "IPv6": "2403:2500:8000:1::ef6", - "CanPort80": true - } - ] - }, - "21": { - "RegionID": 21, - "RegionCode": "tor", - "RegionName": "Toronto", - "Latitude": 43.741667, - "Longitude": -79.373333, - "Nodes": [ - { - "Name": "21c", - "RegionID": 21, - "HostName": "derp21c.tailscale.com", - "IPv4": "162.248.221.215", - "IPv6": "2607:f740:50::f10", - "CanPort80": true - }, - { - "Name": "21d", - "RegionID": 21, - "HostName": "derp21d.tailscale.com", - "IPv4": "162.248.221.248", - "IPv6": "2607:f740:50::ca4", - "CanPort80": true - }, - { - "Name": "21b", - "RegionID": 21, - "HostName": "derp21b.tailscale.com", - "IPv4": "162.248.221.199", - "IPv6": "2607:f740:50::1d1", - "CanPort80": true - } - ] - }, - "22": { - "RegionID": 22, - "RegionCode": "waw", - "RegionName": "Warsaw", - "Latitude": 52.23, - "Longitude": 21.011111, - "Nodes": [ - { - "Name": "22c", - "RegionID": 22, - "HostName": "derp22c.tailscale.com", - "IPv4": "45.159.98.253", - "IPv6": "2a00:dd80:40:100::3f", - "CanPort80": true - }, - { - "Name": "22d", - "RegionID": 22, - "HostName": "derp22d.tailscale.com", - "IPv4": "45.159.98.145", - "IPv6": "2a00:dd80:40:100::211", - "CanPort80": true - }, - { - "Name": "22b", - "RegionID": 22, - "HostName": "derp22b.tailscale.com", - "IPv4": "45.159.98.196", - "IPv6": "2a00:dd80:40:100::316", - "CanPort80": true - } - ] - }, - "23": { - "RegionID": 23, - "RegionCode": "dbi", - "RegionName": "Dubai", - "Latitude": 25.263056, - "Longitude": 55.297222, - "Nodes": [ - { - "Name": "23c", - "RegionID": 23, - "HostName": "derp23c.tailscale.com", - "IPv4": "185.34.3.207", - "IPv6": "2a00:dd80:3f:100::a50", - "CanPort80": true - }, - { - "Name": "23d", - "RegionID": 23, - "HostName": "derp23d.tailscale.com", - "IPv4": "185.34.3.75", - "IPv6": "2a00:dd80:3f:100::97e", - "CanPort80": true - }, - { - "Name": "23b", - "RegionID": 23, - "HostName": "derp23b.tailscale.com", - "IPv4": "185.34.3.232", - "IPv6": "2a00:dd80:3f:100::76f", - "CanPort80": true - } - ] - }, - "24": { - "RegionID": 24, - "RegionCode": "hnl", - "RegionName": "Honolulu", - "Latitude": 21.306944, - "Longitude": -157.858333, - "Nodes": [ - { - "Name": "24c", - "RegionID": 24, - "HostName": "derp24c.tailscale.com", - "IPv4": "208.83.233.233", - "IPv6": "2001:19f0:c000:c591:5400:04ff:fe26:2c5f", - "CanPort80": true - }, - { - "Name": "24d", - "RegionID": 24, - "HostName": "derp24d.tailscale.com", - "IPv4": "208.72.155.133", - "IPv6": "2001:19f0:c000:c564:5400:04ff:fe26:2ba8", - "CanPort80": true - }, - { - "Name": "24b", - "RegionID": 24, - "HostName": "derp24b.tailscale.com", - "IPv4": "208.83.234.151", - "IPv6": "2001:19f0:c000:c586:5400:04ff:fe26:2ba6", - "CanPort80": true - } - ] - }, - "25": { - "RegionID": 25, - "RegionCode": "nai", - "RegionName": "Nairobi", - "Latitude": -1.286389, - "Longitude": 36.817222, - "Nodes": [ - { - "Name": "25c", - "RegionID": 25, - "HostName": "derp25c.tailscale.com", - "IPv4": "102.67.167.37", - "IPv6": "2c0f:edb0:2000:1::2c7", - "CanPort80": true - }, - { - "Name": "25d", - "RegionID": 25, - "HostName": "derp25d.tailscale.com", - "IPv4": "102.67.167.188", - "IPv6": "2c0f:edb0:2000:1::188", - "CanPort80": true - }, - { - "Name": "25b", - "RegionID": 25, - "HostName": "derp25b.tailscale.com", - "IPv4": "102.67.167.245", - "IPv6": "2c0f:edb0:2000:1::2e9", - "CanPort80": true - } - ] - }, - "26": { - "RegionID": 26, - "RegionCode": "nue", - "RegionName": "Nuremberg", - "Latitude": 49.453889, - "Longitude": 11.0775, - "Nodes": [ - { - "Name": "26c", - "RegionID": 26, - "HostName": "derp26c.tailscale.com", - "IPv4": "49.12.193.137", - "IPv6": "2a01:4f8:1c1c:5c70::1", - "CanPort80": true - }, - { - "Name": "26d", - "RegionID": 26, - "HostName": "derp26d.tailscale.com", - "IPv4": "49.13.204.141", - "IPv6": "2a01:4f8:1c0c:7d06::1", - "CanPort80": true - }, - { - "Name": "26b", - "RegionID": 26, - "HostName": "derp26b.tailscale.com", - "IPv4": "167.235.72.200", - "IPv6": "2a01:4f8:1c1c:47b6::1", - "CanPort80": true - } - ] - }, - "27": { - "RegionID": 27, - "RegionCode": "iad", - "RegionName": "Ashburn", - "Latitude": 39.03, - "Longitude": -77.471111, - "Nodes": [ - { - "Name": "27d", - "RegionID": 27, - "HostName": "derp27d.tailscale.com", - "IPv4": "178.156.152.106", - "IPv6": "2a01:4ff:f0:3c8e::1", - "CanPort80": true - }, - { - "Name": "27c", - "RegionID": 27, - "HostName": "derp27c.tailscale.com", - "IPv4": "178.156.152.91", - "IPv6": "2a01:4ff:f0:3913::1", - "CanPort80": true - }, - { - "Name": "27e", - "RegionID": 27, - "HostName": "derp27e.tailscale.com", - "IPv4": "178.156.134.232", - "IPv6": "2a01:4ff:f0:28d4::1", - "CanPort80": true - }, - { - "Name": "27b", - "RegionID": 27, - "HostName": "derp27b.tailscale.com", - "IPv4": "5.161.218.233", - "IPv6": "2a01:4ff:f0:3db9::1", - "CanPort80": true - } - ] - }, - "28": { - "RegionID": 28, - "RegionCode": "hel", - "RegionName": "Helsinki", - "Latitude": 60.170833, - "Longitude": 24.9375, - "Nodes": [ - { - "Name": "28c", - "RegionID": 28, - "HostName": "derp28c.tailscale.com", - "IPv4": "95.217.2.165", - "IPv6": "2a01:4f9:c012:cd74::1", - "CanPort80": true - }, - { - "Name": "28d", - "RegionID": 28, - "HostName": "derp28d.tailscale.com", - "IPv4": "157.180.28.32", - "IPv6": "2a01:4f9:c012:2e5b::1", - "CanPort80": true - }, - { - "Name": "28b", - "RegionID": 28, - "HostName": "derp28b.tailscale.com", - "IPv4": "65.109.143.62", - "IPv6": "2a01:4f9:c012:d55c::1", - "CanPort80": true - } - ] - }, - "3": { - "RegionID": 3, - "RegionCode": "sin", - "RegionName": "Singapore", - "Latitude": 1.3521, - "Longitude": 103.8198, - "Nodes": [ - { - "Name": "3g", - "RegionID": 3, - "HostName": "derp3g.tailscale.com", - "IPv4": "172.237.72.79", - "IPv6": "2600:3c15::2000:adff:fe08:6fab", - "CanPort80": true - }, - { - "Name": "3f", - "RegionID": 3, - "HostName": "derp3f.tailscale.com", - "IPv4": "172.237.72.8", - "IPv6": "2600:3c15::2000:53ff:fe48:a668", - "CanPort80": true - }, - { - "Name": "3h", - "RegionID": 3, - "HostName": "derp3h.tailscale.com", - "IPv4": "172.237.66.30", - "IPv6": "2600:3c15::2000:3dff:fe44:50aa", - "CanPort80": true - }, - { - "Name": "3e", - "RegionID": 3, - "HostName": "derp3e.tailscale.com", - "IPv4": "172.237.72.43", - "IPv6": "2600:3c15::2000:6cff:fee4:d799", - "CanPort80": true - } - ] - }, - "4": { - "RegionID": 4, - "RegionCode": "fra", - "RegionName": "Frankfurt", - "Latitude": 50.1109, - "Longitude": 8.6821, - "Nodes": [ - { - "Name": "4h", - "RegionID": 4, - "HostName": "derp4h.tailscale.com", - "IPv4": "185.40.234.77", - "IPv6": "2a00:dd80:20::bcf", - "CanPort80": true - }, - { - "Name": "4g", - "RegionID": 4, - "HostName": "derp4g.tailscale.com", - "IPv4": "185.40.234.113", - "IPv6": "2a00:dd80:20::8f", - "CanPort80": true - }, - { - "Name": "4i", - "RegionID": 4, - "HostName": "derp4i.tailscale.com", - "IPv4": "185.40.234.53", - "IPv6": "2a00:dd80:20::8a6", - "CanPort80": true - }, - { - "Name": "4f", - "RegionID": 4, - "HostName": "derp4f.tailscale.com", - "IPv4": "185.40.234.219", - "IPv6": "2a00:dd80:20::a25", - "CanPort80": true - } - ] - }, - "5": { - "RegionID": 5, - "RegionCode": "syd", - "RegionName": "Sydney", - "Latitude": -33.867778, - "Longitude": 151.21, - "Nodes": [ - { - "Name": "5f", - "RegionID": 5, - "HostName": "derp5f.tailscale.com", - "IPv4": "172.105.166.103", - "IPv6": "2400:8907::2000:ccff:fe1f:80da", - "CanPort80": true - }, - { - "Name": "5g", - "RegionID": 5, - "HostName": "derp5g.tailscale.com", - "IPv4": "172.105.169.57", - "IPv6": "2400:8907::2000:2fff:fea7:57f4", - "CanPort80": true - }, - { - "Name": "5e", - "RegionID": 5, - "HostName": "derp5e.tailscale.com", - "IPv4": "172.105.179.230", - "IPv6": "2400:8907::2000:ceff:fe8d:4f4e", - "CanPort80": true - } - ] - }, - "6": { - "RegionID": 6, - "RegionCode": "blr", - "RegionName": "Bengaluru", - "Latitude": 12.9716, - "Longitude": 77.5946, - "Nodes": [ - { - "Name": "6a", - "RegionID": 6, - "HostName": "derp6.tailscale.com", - "IPv4": "68.183.90.120", - "IPv6": "2400:6180:100:d0::982:d001", - "CanPort80": true - } - ] - }, - "7": { - "RegionID": 7, - "RegionCode": "tok", - "RegionName": "Tokyo", - "Latitude": 35.6764, - "Longitude": 139.65, - "Nodes": [ - { - "Name": "7g", - "RegionID": 7, - "HostName": "derp7g.tailscale.com", - "IPv4": "172.238.6.179", - "IPv6": "2600:3c18::2000:3fff:fe80:3ebd", - "CanPort80": true - }, - { - "Name": "7f", - "RegionID": 7, - "HostName": "derp7f.tailscale.com", - "IPv4": "172.238.6.34", - "IPv6": "2600:3c18::2000:acff:fe8e:3ed5", - "CanPort80": true - }, - { - "Name": "7h", - "RegionID": 7, - "HostName": "derp7h.tailscale.com", - "IPv4": "172.237.28.183", - "IPv6": "2600:3c18::2000:b1ff:fea9:4560", - "CanPort80": true - }, - { - "Name": "7e", - "RegionID": 7, - "HostName": "derp7e.tailscale.com", - "IPv4": "172.238.6.180", - "IPv6": "2600:3c18::2000:60ff:fe0f:6e83", - "STUNOnly": true, - "CanPort80": true - } - ] - }, - "8": { - "RegionID": 8, - "RegionCode": "lhr", - "RegionName": "London", - "Latitude": 51.5072, - "Longitude": 0.1276, - "Nodes": [ - { - "Name": "8f", - "RegionID": 8, - "HostName": "derp8f.tailscale.com", - "IPv4": "176.58.88.183", - "IPv6": "2a00:dd80:3a::dfa", - "CanPort80": true - }, - { - "Name": "8g", - "RegionID": 8, - "HostName": "derp8g.tailscale.com", - "IPv4": "176.58.92.254", - "IPv6": "2a00:dd80:3a::ed", - "CanPort80": true - }, - { - "Name": "8e", - "RegionID": 8, - "HostName": "derp8e.tailscale.com", - "IPv4": "176.58.92.144", - "IPv6": "2a00:dd80:3a::b33", - "CanPort80": true - } - ] - }, - "9": { - "RegionID": 9, - "RegionCode": "dfw", - "RegionName": "Dallas", - "Latitude": 32.779167, - "Longitude": -96.808889, - "Nodes": [ - { - "Name": "9e", - "RegionID": 9, - "HostName": "derp9e.tailscale.com", - "IPv4": "192.73.248.83", - "IPv6": "2607:f740:100::359", - "CanPort80": true - }, - { - "Name": "9f", - "RegionID": 9, - "HostName": "derp9f.tailscale.com", - "IPv4": "209.177.156.197", - "IPv6": "2607:f740:100::cad", - "CanPort80": true - }, - { - "Name": "9d", - "RegionID": 9, - "HostName": "derp9d.tailscale.com", - "IPv4": "209.177.156.94", - "IPv6": "2607:f740:100::c05", - "CanPort80": true - } - ] - } - } - }, - "DisplayMessages": null, - "TKAEnabled": false, - "TKAHead": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", - "Domain": "kratail2tid@passkey", - "DomainAuditLogID": "", - "UserProfiles": { - "4041918547170221": { - "ID": 4041918547170221, - "LoginName": "exit-node.tail78f774.ts.net", - "DisplayName": "exit-node" - } - } + "PacketFilterRules": null } }, "group-a-client": { - "commands": { - "packet_filter_rules": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/group-a-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/group-a-client/tailscaled.sock debug localapi POST debug-packet-filter-matches" - }, "packet_filter_rules": null, - "packet_filter_matches": [], - "whois": { - "100.124.195.93": { - "peer_name": "exit-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/group-a-client/tailscaled.sock whois --json 100.124.195.93", - "response": null - }, - "100.116.18.24": { - "peer_name": "exit-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/group-a-client/tailscaled.sock whois --json 100.116.18.24", - "response": null - }, - "100.85.66.106": { - "peer_name": "exit-node", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/group-a-client/tailscaled.sock whois --json 100.85.66.106", - "response": null - }, - "100.77.135.18": { - "peer_name": "group-b-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/group-a-client/tailscaled.sock whois --json 100.77.135.18", - "response": null - }, - "100.105.127.107": { - "peer_name": "multi-exit-router", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/group-a-client/tailscaled.sock whois --json 100.105.127.107", - "response": null - }, - "100.109.43.124": { - "peer_name": "router-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/group-a-client/tailscaled.sock whois --json 100.109.43.124", - "response": null - }, - "100.65.172.123": { - "peer_name": "router-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/group-a-client/tailscaled.sock whois --json 100.65.172.123", - "response": null - }, - "100.92.142.61": { - "peer_name": "subnet-router", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/group-a-client/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/group-a-client/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/group-a-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/group-a-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/group-a-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/group-a-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/group-a-client/tailscaled.sock whois --json 100.90.199.68", - "response": null - } - }, "netmap": { - "SelfNode": { - "ID": 6999435610919250, - "StableID": "nyckVfJ4fw11CNTRL", - "Name": "group-a-client.tail78f774.ts.net.", - "User": 6999435610919250, - "Key": "nodekey:802726716bd4942fceb5e444218c930040fadb082698b57ea3eb59a6a26ba20d", - "DiscoKey": "discokey:bc93c2d3b81606e44eb1c96d721e7cd73c9497aa7d3efbe2f5e0d1e2e95b190f", - "Addresses": ["100.107.162.14/32", "fd7a:115c:a1e0::a237:a20e/128"], - "AllowedIPs": ["100.107.162.14/32", "fd7a:115c:a1e0::a237:a20e/128"], - "Endpoints": ["77.164.248.136:51980", "10.65.0.27:51980", "172.17.0.1:51980"], - "Hostinfo": { - "Hostname": "group-a-client", - "RequestTags": ["tag:group-a"], - "Services": [ - { "Proto": "peerapi4", "Port": 36543 }, - { "Proto": "peerapi6", "Port": 36543 }, - { "Proto": "peerapi-dns-proxy", "Port": 1 } - ] - }, - "Created": "2026-03-28T10:38:04.339428828Z", - "Tags": ["tag:group-a"], - "MachineAuthorized": true, - "CapMap": { - "https://tailscale.com/cap/file-sharing": null, - "https://tailscale.com/cap/is-owner": null, - "https://tailscale.com/cap/ssh": null, - "https://tailscale.com/cap/tailnet-lock": null, - "probe-udp-lifetime": null, - "ssh-behavior-v1": null, - "ssh-env-vars": null, - "store-appc-routes": null, - "tailnet-display-name": ["kratail2tid@passkey"] - }, - "ComputedName": "group-a-client", - "ComputedNameWithHost": "group-a-client" - }, - "AllCaps": [ - "https://tailscale.com/cap/file-sharing", - "https://tailscale.com/cap/ssh", - "ssh-behavior-v1", - "tailnet-display-name", - "https://tailscale.com/cap/tailnet-lock", - "probe-udp-lifetime", - "store-appc-routes", - "https://tailscale.com/cap/is-owner", - "ssh-env-vars" - ], - "NodeKey": "nodekey:802726716bd4942fceb5e444218c930040fadb082698b57ea3eb59a6a26ba20d", - "MachineKey": "mkey:fd2d0c2953440569b6c045d6bb1826bf138bf65b4ed4433532e4d91e09fd6b6b", "Peers": [], - "DNS": { - "Routes": { - "tail78f774.ts.net.": null, - "ts.net.": [{ "Addr": "199.247.155.53" }, { "Addr": "2620:111:8007::53" }] - }, - "Domains": ["tail78f774.ts.net"], - "Proxied": true, - "ExitNodeFilteredSet": [".ts.net", ".tailscale.net"] - }, - "PacketFilter": [], - "PacketFilterRules": null, - "SSHPolicy": { "rules": [] }, - "CollectServices": false, - "DERPMap": { - "Regions": { - "1": { - "RegionID": 1, - "RegionCode": "nyc", - "RegionName": "New York City", - "Latitude": 40.7128, - "Longitude": -74.006, - "Nodes": [ - { - "Name": "1h", - "RegionID": 1, - "HostName": "derp1h.tailscale.com", - "IPv4": "199.38.181.93", - "IPv6": "2607:f740:f::afd", - "CanPort80": true - }, - { - "Name": "1g", - "RegionID": 1, - "HostName": "derp1g.tailscale.com", - "IPv4": "209.177.145.120", - "IPv6": "2607:f740:f::3eb", - "CanPort80": true - }, - { - "Name": "1i", - "RegionID": 1, - "HostName": "derp1i.tailscale.com", - "IPv4": "199.38.181.103", - "IPv6": "2607:f740:f::e19", - "CanPort80": true - }, - { - "Name": "1f", - "RegionID": 1, - "HostName": "derp1f.tailscale.com", - "IPv4": "199.38.181.104", - "IPv6": "2607:f740:f::bc", - "CanPort80": true - } - ] - }, - "10": { - "RegionID": 10, - "RegionCode": "sea", - "RegionName": "Seattle", - "Latitude": 47.609722, - "Longitude": -122.333056, - "Nodes": [ - { - "Name": "10c", - "RegionID": 10, - "HostName": "derp10c.tailscale.com", - "IPv4": "192.73.240.121", - "IPv6": "2607:f740:14::40c", - "CanPort80": true - }, - { - "Name": "10d", - "RegionID": 10, - "HostName": "derp10d.tailscale.com", - "IPv4": "192.73.240.132", - "IPv6": "2607:f740:14::500", - "CanPort80": true - }, - { - "Name": "10b", - "RegionID": 10, - "HostName": "derp10b.tailscale.com", - "IPv4": "192.73.240.161", - "IPv6": "2607:f740:14::61c", - "CanPort80": true - } - ] - }, - "11": { - "RegionID": 11, - "RegionCode": "sao", - "RegionName": "São Paulo", - "Latitude": -23.55, - "Longitude": -46.633333, - "Nodes": [ - { - "Name": "11f", - "RegionID": 11, - "HostName": "derp11f.tailscale.com", - "IPv4": "172.237.61.197", - "IPv6": "2600:3c0d::2000:3bff:fe44:6166", - "CanPort80": true - }, - { - "Name": "11g", - "RegionID": 11, - "HostName": "derp11g.tailscale.com", - "IPv4": "172.237.61.190", - "IPv6": "2600:3c0d::2000:62ff:febe:2e67", - "CanPort80": true - }, - { - "Name": "11e", - "RegionID": 11, - "HostName": "derp11e.tailscale.com", - "IPv4": "172.237.61.194", - "IPv6": "2600:3c0d::2000:d2ff:fe43:1790", - "CanPort80": true - } - ] - }, - "12": { - "RegionID": 12, - "RegionCode": "ord", - "RegionName": "Chicago", - "Latitude": 41.881944, - "Longitude": -87.627778, - "Nodes": [ - { - "Name": "12e", - "RegionID": 12, - "HostName": "derp12e.tailscale.com", - "IPv4": "209.177.158.15", - "IPv6": "2607:f740:e::b17", - "CanPort80": true - }, - { - "Name": "12f", - "RegionID": 12, - "HostName": "derp12f.tailscale.com", - "IPv4": "199.38.182.118", - "IPv6": "2607:f740:e::4c8", - "CanPort80": true - }, - { - "Name": "12d", - "RegionID": 12, - "HostName": "derp12d.tailscale.com", - "IPv4": "209.177.158.246", - "IPv6": "2607:f740:e::811", - "CanPort80": true - } - ] - }, - "13": { - "RegionID": 13, - "RegionCode": "den", - "RegionName": "Denver", - "Latitude": 39.7392, - "Longitude": -104.9849, - "Nodes": [ - { - "Name": "13c", - "RegionID": 13, - "HostName": "derp13c.tailscale.com", - "IPv4": "192.73.242.28", - "IPv6": "2607:f740:16::5c", - "CanPort80": true - }, - { - "Name": "13d", - "RegionID": 13, - "HostName": "derp13d.tailscale.com", - "IPv4": "192.73.242.204", - "IPv6": "2607:f740:16::c23", - "CanPort80": true - }, - { - "Name": "13b", - "RegionID": 13, - "HostName": "derp13b.tailscale.com", - "IPv4": "192.73.242.187", - "IPv6": "2607:f740:16::640", - "CanPort80": true - } - ] - }, - "14": { - "RegionID": 14, - "RegionCode": "ams", - "RegionName": "Amsterdam", - "Latitude": 52.372778, - "Longitude": 4.893611, - "Nodes": [ - { - "Name": "14c", - "RegionID": 14, - "HostName": "derp14c.tailscale.com", - "IPv4": "176.58.93.147", - "IPv6": "2a00:dd80:3c::b09", - "CanPort80": true - }, - { - "Name": "14d", - "RegionID": 14, - "HostName": "derp14d.tailscale.com", - "IPv4": "176.58.93.154", - "IPv6": "2a00:dd80:3c::3d5", - "CanPort80": true - }, - { - "Name": "14b", - "RegionID": 14, - "HostName": "derp14b.tailscale.com", - "IPv4": "176.58.93.248", - "IPv6": "2a00:dd80:3c::807", - "CanPort80": true - } - ] - }, - "15": { - "RegionID": 15, - "RegionCode": "jnb", - "RegionName": "Johannesburg", - "Latitude": -26.204444, - "Longitude": 28.045556, - "Nodes": [ - { - "Name": "15c", - "RegionID": 15, - "HostName": "derp15c.tailscale.com", - "IPv4": "102.67.165.185", - "IPv6": "2c0f:edb0:0:10::b59", - "CanPort80": true - }, - { - "Name": "15d", - "RegionID": 15, - "HostName": "derp15d.tailscale.com", - "IPv4": "102.67.165.36", - "IPv6": "2c0f:edb0:0:10::599", - "CanPort80": true - }, - { - "Name": "15b", - "RegionID": 15, - "HostName": "derp15b.tailscale.com", - "IPv4": "102.67.165.90", - "IPv6": "2c0f:edb0:0:10::963", - "CanPort80": true - } - ] - }, - "16": { - "RegionID": 16, - "RegionCode": "mia", - "RegionName": "Miami", - "Latitude": 25.78, - "Longitude": -80.21, - "Nodes": [ - { - "Name": "16c", - "RegionID": 16, - "HostName": "derp16c.tailscale.com", - "IPv4": "192.73.243.229", - "IPv6": "2607:f740:17::4e4", - "CanPort80": true - }, - { - "Name": "16d", - "RegionID": 16, - "HostName": "derp16d.tailscale.com", - "IPv4": "192.73.243.141", - "IPv6": "2607:f740:17::475", - "CanPort80": true - }, - { - "Name": "16b", - "RegionID": 16, - "HostName": "derp16b.tailscale.com", - "IPv4": "192.73.243.135", - "IPv6": "2607:f740:17::476", - "CanPort80": true - } - ] - }, - "17": { - "RegionID": 17, - "RegionCode": "lax", - "RegionName": "Los Angeles", - "Latitude": 34.05, - "Longitude": -118.25, - "Nodes": [ - { - "Name": "17c", - "RegionID": 17, - "HostName": "derp17c.tailscale.com", - "IPv4": "208.111.40.12", - "IPv6": "2607:f740:c::10", - "CanPort80": true - }, - { - "Name": "17d", - "RegionID": 17, - "HostName": "derp17d.tailscale.com", - "IPv4": "208.111.40.216", - "IPv6": "2607:f740:c::e1b", - "CanPort80": true - }, - { - "Name": "17b", - "RegionID": 17, - "HostName": "derp17b.tailscale.com", - "IPv4": "192.73.244.245", - "IPv6": "2607:f740:c::646", - "CanPort80": true - } - ] - }, - "18": { - "RegionID": 18, - "RegionCode": "par", - "RegionName": "Paris", - "Latitude": 48.856667, - "Longitude": 2.352222, - "Nodes": [ - { - "Name": "18c", - "RegionID": 18, - "HostName": "derp18c.tailscale.com", - "IPv4": "176.58.90.207", - "IPv6": "2a00:dd80:3e::c19", - "CanPort80": true - }, - { - "Name": "18d", - "RegionID": 18, - "HostName": "derp18d.tailscale.com", - "IPv4": "176.58.90.104", - "IPv6": "2a00:dd80:3e::f2e", - "CanPort80": true - }, - { - "Name": "18b", - "RegionID": 18, - "HostName": "derp18b.tailscale.com", - "IPv4": "176.58.90.147", - "IPv6": "2a00:dd80:3e::363", - "CanPort80": true - } - ] - }, - "19": { - "RegionID": 19, - "RegionCode": "mad", - "RegionName": "Madrid", - "Latitude": 40.416944, - "Longitude": -3.703333, - "Nodes": [ - { - "Name": "19c", - "RegionID": 19, - "HostName": "derp19c.tailscale.com", - "IPv4": "45.159.97.61", - "IPv6": "2a00:dd80:14:10::20", - "CanPort80": true - }, - { - "Name": "19d", - "RegionID": 19, - "HostName": "derp19d.tailscale.com", - "IPv4": "45.159.97.233", - "IPv6": "2a00:dd80:14:10::34a", - "CanPort80": true - }, - { - "Name": "19b", - "RegionID": 19, - "HostName": "derp19b.tailscale.com", - "IPv4": "45.159.97.144", - "IPv6": "2a00:dd80:14:10::335", - "CanPort80": true - } - ] - }, - "2": { - "RegionID": 2, - "RegionCode": "sfo", - "RegionName": "San Francisco", - "Latitude": 37.7775, - "Longitude": -122.416389, - "Nodes": [ - { - "Name": "2e", - "RegionID": 2, - "HostName": "derp2e.tailscale.com", - "IPv4": "192.73.252.134", - "IPv6": "2607:f740:0:3f::44c", - "CanPort80": true - }, - { - "Name": "2f", - "RegionID": 2, - "HostName": "derp2f.tailscale.com", - "IPv4": "208.111.34.178", - "IPv6": "2607:f740:0:3f::f4", - "CanPort80": true - }, - { - "Name": "2d", - "RegionID": 2, - "HostName": "derp2d.tailscale.com", - "IPv4": "192.73.252.65", - "IPv6": "2607:f740:0:3f::287", - "CanPort80": true - } - ] - }, - "20": { - "RegionID": 20, - "RegionCode": "hkg", - "RegionName": "Hong Kong", - "Latitude": 22.3193, - "Longitude": 114.1694, - "Nodes": [ - { - "Name": "20c", - "RegionID": 20, - "HostName": "derp20c.tailscale.com", - "IPv4": "205.147.105.30", - "IPv6": "2403:2500:8000:1::5fb", - "CanPort80": true - }, - { - "Name": "20d", - "RegionID": 20, - "HostName": "derp20d.tailscale.com", - "IPv4": "205.147.105.78", - "IPv6": "2403:2500:8000:1::e9a", - "CanPort80": true - }, - { - "Name": "20b", - "RegionID": 20, - "HostName": "derp20b.tailscale.com", - "IPv4": "103.6.84.152", - "IPv6": "2403:2500:8000:1::ef6", - "CanPort80": true - } - ] - }, - "21": { - "RegionID": 21, - "RegionCode": "tor", - "RegionName": "Toronto", - "Latitude": 43.741667, - "Longitude": -79.373333, - "Nodes": [ - { - "Name": "21c", - "RegionID": 21, - "HostName": "derp21c.tailscale.com", - "IPv4": "162.248.221.215", - "IPv6": "2607:f740:50::f10", - "CanPort80": true - }, - { - "Name": "21d", - "RegionID": 21, - "HostName": "derp21d.tailscale.com", - "IPv4": "162.248.221.248", - "IPv6": "2607:f740:50::ca4", - "CanPort80": true - }, - { - "Name": "21b", - "RegionID": 21, - "HostName": "derp21b.tailscale.com", - "IPv4": "162.248.221.199", - "IPv6": "2607:f740:50::1d1", - "CanPort80": true - } - ] - }, - "22": { - "RegionID": 22, - "RegionCode": "waw", - "RegionName": "Warsaw", - "Latitude": 52.23, - "Longitude": 21.011111, - "Nodes": [ - { - "Name": "22c", - "RegionID": 22, - "HostName": "derp22c.tailscale.com", - "IPv4": "45.159.98.253", - "IPv6": "2a00:dd80:40:100::3f", - "CanPort80": true - }, - { - "Name": "22d", - "RegionID": 22, - "HostName": "derp22d.tailscale.com", - "IPv4": "45.159.98.145", - "IPv6": "2a00:dd80:40:100::211", - "CanPort80": true - }, - { - "Name": "22b", - "RegionID": 22, - "HostName": "derp22b.tailscale.com", - "IPv4": "45.159.98.196", - "IPv6": "2a00:dd80:40:100::316", - "CanPort80": true - } - ] - }, - "23": { - "RegionID": 23, - "RegionCode": "dbi", - "RegionName": "Dubai", - "Latitude": 25.263056, - "Longitude": 55.297222, - "Nodes": [ - { - "Name": "23c", - "RegionID": 23, - "HostName": "derp23c.tailscale.com", - "IPv4": "185.34.3.207", - "IPv6": "2a00:dd80:3f:100::a50", - "CanPort80": true - }, - { - "Name": "23d", - "RegionID": 23, - "HostName": "derp23d.tailscale.com", - "IPv4": "185.34.3.75", - "IPv6": "2a00:dd80:3f:100::97e", - "CanPort80": true - }, - { - "Name": "23b", - "RegionID": 23, - "HostName": "derp23b.tailscale.com", - "IPv4": "185.34.3.232", - "IPv6": "2a00:dd80:3f:100::76f", - "CanPort80": true - } - ] - }, - "24": { - "RegionID": 24, - "RegionCode": "hnl", - "RegionName": "Honolulu", - "Latitude": 21.306944, - "Longitude": -157.858333, - "Nodes": [ - { - "Name": "24c", - "RegionID": 24, - "HostName": "derp24c.tailscale.com", - "IPv4": "208.83.233.233", - "IPv6": "2001:19f0:c000:c591:5400:04ff:fe26:2c5f", - "CanPort80": true - }, - { - "Name": "24d", - "RegionID": 24, - "HostName": "derp24d.tailscale.com", - "IPv4": "208.72.155.133", - "IPv6": "2001:19f0:c000:c564:5400:04ff:fe26:2ba8", - "CanPort80": true - }, - { - "Name": "24b", - "RegionID": 24, - "HostName": "derp24b.tailscale.com", - "IPv4": "208.83.234.151", - "IPv6": "2001:19f0:c000:c586:5400:04ff:fe26:2ba6", - "CanPort80": true - } - ] - }, - "25": { - "RegionID": 25, - "RegionCode": "nai", - "RegionName": "Nairobi", - "Latitude": -1.286389, - "Longitude": 36.817222, - "Nodes": [ - { - "Name": "25c", - "RegionID": 25, - "HostName": "derp25c.tailscale.com", - "IPv4": "102.67.167.37", - "IPv6": "2c0f:edb0:2000:1::2c7", - "CanPort80": true - }, - { - "Name": "25d", - "RegionID": 25, - "HostName": "derp25d.tailscale.com", - "IPv4": "102.67.167.188", - "IPv6": "2c0f:edb0:2000:1::188", - "CanPort80": true - }, - { - "Name": "25b", - "RegionID": 25, - "HostName": "derp25b.tailscale.com", - "IPv4": "102.67.167.245", - "IPv6": "2c0f:edb0:2000:1::2e9", - "CanPort80": true - } - ] - }, - "26": { - "RegionID": 26, - "RegionCode": "nue", - "RegionName": "Nuremberg", - "Latitude": 49.453889, - "Longitude": 11.0775, - "Nodes": [ - { - "Name": "26c", - "RegionID": 26, - "HostName": "derp26c.tailscale.com", - "IPv4": "49.12.193.137", - "IPv6": "2a01:4f8:1c1c:5c70::1", - "CanPort80": true - }, - { - "Name": "26d", - "RegionID": 26, - "HostName": "derp26d.tailscale.com", - "IPv4": "49.13.204.141", - "IPv6": "2a01:4f8:1c0c:7d06::1", - "CanPort80": true - }, - { - "Name": "26b", - "RegionID": 26, - "HostName": "derp26b.tailscale.com", - "IPv4": "167.235.72.200", - "IPv6": "2a01:4f8:1c1c:47b6::1", - "CanPort80": true - } - ] - }, - "27": { - "RegionID": 27, - "RegionCode": "iad", - "RegionName": "Ashburn", - "Latitude": 39.03, - "Longitude": -77.471111, - "Nodes": [ - { - "Name": "27d", - "RegionID": 27, - "HostName": "derp27d.tailscale.com", - "IPv4": "178.156.152.106", - "IPv6": "2a01:4ff:f0:3c8e::1", - "CanPort80": true - }, - { - "Name": "27c", - "RegionID": 27, - "HostName": "derp27c.tailscale.com", - "IPv4": "178.156.152.91", - "IPv6": "2a01:4ff:f0:3913::1", - "CanPort80": true - }, - { - "Name": "27e", - "RegionID": 27, - "HostName": "derp27e.tailscale.com", - "IPv4": "178.156.134.232", - "IPv6": "2a01:4ff:f0:28d4::1", - "CanPort80": true - }, - { - "Name": "27b", - "RegionID": 27, - "HostName": "derp27b.tailscale.com", - "IPv4": "5.161.218.233", - "IPv6": "2a01:4ff:f0:3db9::1", - "CanPort80": true - } - ] - }, - "28": { - "RegionID": 28, - "RegionCode": "hel", - "RegionName": "Helsinki", - "Latitude": 60.170833, - "Longitude": 24.9375, - "Nodes": [ - { - "Name": "28c", - "RegionID": 28, - "HostName": "derp28c.tailscale.com", - "IPv4": "95.217.2.165", - "IPv6": "2a01:4f9:c012:cd74::1", - "CanPort80": true - }, - { - "Name": "28d", - "RegionID": 28, - "HostName": "derp28d.tailscale.com", - "IPv4": "157.180.28.32", - "IPv6": "2a01:4f9:c012:2e5b::1", - "CanPort80": true - }, - { - "Name": "28b", - "RegionID": 28, - "HostName": "derp28b.tailscale.com", - "IPv4": "65.109.143.62", - "IPv6": "2a01:4f9:c012:d55c::1", - "CanPort80": true - } - ] - }, - "3": { - "RegionID": 3, - "RegionCode": "sin", - "RegionName": "Singapore", - "Latitude": 1.3521, - "Longitude": 103.8198, - "Nodes": [ - { - "Name": "3g", - "RegionID": 3, - "HostName": "derp3g.tailscale.com", - "IPv4": "172.237.72.79", - "IPv6": "2600:3c15::2000:adff:fe08:6fab", - "CanPort80": true - }, - { - "Name": "3f", - "RegionID": 3, - "HostName": "derp3f.tailscale.com", - "IPv4": "172.237.72.8", - "IPv6": "2600:3c15::2000:53ff:fe48:a668", - "CanPort80": true - }, - { - "Name": "3h", - "RegionID": 3, - "HostName": "derp3h.tailscale.com", - "IPv4": "172.237.66.30", - "IPv6": "2600:3c15::2000:3dff:fe44:50aa", - "CanPort80": true - }, - { - "Name": "3e", - "RegionID": 3, - "HostName": "derp3e.tailscale.com", - "IPv4": "172.237.72.43", - "IPv6": "2600:3c15::2000:6cff:fee4:d799", - "CanPort80": true - } - ] - }, - "4": { - "RegionID": 4, - "RegionCode": "fra", - "RegionName": "Frankfurt", - "Latitude": 50.1109, - "Longitude": 8.6821, - "Nodes": [ - { - "Name": "4h", - "RegionID": 4, - "HostName": "derp4h.tailscale.com", - "IPv4": "185.40.234.77", - "IPv6": "2a00:dd80:20::bcf", - "CanPort80": true - }, - { - "Name": "4g", - "RegionID": 4, - "HostName": "derp4g.tailscale.com", - "IPv4": "185.40.234.113", - "IPv6": "2a00:dd80:20::8f", - "CanPort80": true - }, - { - "Name": "4i", - "RegionID": 4, - "HostName": "derp4i.tailscale.com", - "IPv4": "185.40.234.53", - "IPv6": "2a00:dd80:20::8a6", - "CanPort80": true - }, - { - "Name": "4f", - "RegionID": 4, - "HostName": "derp4f.tailscale.com", - "IPv4": "185.40.234.219", - "IPv6": "2a00:dd80:20::a25", - "CanPort80": true - } - ] - }, - "5": { - "RegionID": 5, - "RegionCode": "syd", - "RegionName": "Sydney", - "Latitude": -33.867778, - "Longitude": 151.21, - "Nodes": [ - { - "Name": "5f", - "RegionID": 5, - "HostName": "derp5f.tailscale.com", - "IPv4": "172.105.166.103", - "IPv6": "2400:8907::2000:ccff:fe1f:80da", - "CanPort80": true - }, - { - "Name": "5g", - "RegionID": 5, - "HostName": "derp5g.tailscale.com", - "IPv4": "172.105.169.57", - "IPv6": "2400:8907::2000:2fff:fea7:57f4", - "CanPort80": true - }, - { - "Name": "5e", - "RegionID": 5, - "HostName": "derp5e.tailscale.com", - "IPv4": "172.105.179.230", - "IPv6": "2400:8907::2000:ceff:fe8d:4f4e", - "CanPort80": true - } - ] - }, - "6": { - "RegionID": 6, - "RegionCode": "blr", - "RegionName": "Bengaluru", - "Latitude": 12.9716, - "Longitude": 77.5946, - "Nodes": [ - { - "Name": "6a", - "RegionID": 6, - "HostName": "derp6.tailscale.com", - "IPv4": "68.183.90.120", - "IPv6": "2400:6180:100:d0::982:d001", - "CanPort80": true - } - ] - }, - "7": { - "RegionID": 7, - "RegionCode": "tok", - "RegionName": "Tokyo", - "Latitude": 35.6764, - "Longitude": 139.65, - "Nodes": [ - { - "Name": "7g", - "RegionID": 7, - "HostName": "derp7g.tailscale.com", - "IPv4": "172.238.6.179", - "IPv6": "2600:3c18::2000:3fff:fe80:3ebd", - "CanPort80": true - }, - { - "Name": "7f", - "RegionID": 7, - "HostName": "derp7f.tailscale.com", - "IPv4": "172.238.6.34", - "IPv6": "2600:3c18::2000:acff:fe8e:3ed5", - "CanPort80": true - }, - { - "Name": "7h", - "RegionID": 7, - "HostName": "derp7h.tailscale.com", - "IPv4": "172.237.28.183", - "IPv6": "2600:3c18::2000:b1ff:fea9:4560", - "CanPort80": true - }, - { - "Name": "7e", - "RegionID": 7, - "HostName": "derp7e.tailscale.com", - "IPv4": "172.238.6.180", - "IPv6": "2600:3c18::2000:60ff:fe0f:6e83", - "STUNOnly": true, - "CanPort80": true - } - ] - }, - "8": { - "RegionID": 8, - "RegionCode": "lhr", - "RegionName": "London", - "Latitude": 51.5072, - "Longitude": 0.1276, - "Nodes": [ - { - "Name": "8f", - "RegionID": 8, - "HostName": "derp8f.tailscale.com", - "IPv4": "176.58.88.183", - "IPv6": "2a00:dd80:3a::dfa", - "CanPort80": true - }, - { - "Name": "8g", - "RegionID": 8, - "HostName": "derp8g.tailscale.com", - "IPv4": "176.58.92.254", - "IPv6": "2a00:dd80:3a::ed", - "CanPort80": true - }, - { - "Name": "8e", - "RegionID": 8, - "HostName": "derp8e.tailscale.com", - "IPv4": "176.58.92.144", - "IPv6": "2a00:dd80:3a::b33", - "CanPort80": true - } - ] - }, - "9": { - "RegionID": 9, - "RegionCode": "dfw", - "RegionName": "Dallas", - "Latitude": 32.779167, - "Longitude": -96.808889, - "Nodes": [ - { - "Name": "9e", - "RegionID": 9, - "HostName": "derp9e.tailscale.com", - "IPv4": "192.73.248.83", - "IPv6": "2607:f740:100::359", - "CanPort80": true - }, - { - "Name": "9f", - "RegionID": 9, - "HostName": "derp9f.tailscale.com", - "IPv4": "209.177.156.197", - "IPv6": "2607:f740:100::cad", - "CanPort80": true - }, - { - "Name": "9d", - "RegionID": 9, - "HostName": "derp9d.tailscale.com", - "IPv4": "209.177.156.94", - "IPv6": "2607:f740:100::c05", - "CanPort80": true - } - ] - } - } - }, - "DisplayMessages": null, - "TKAEnabled": false, - "TKAHead": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", - "Domain": "kratail2tid@passkey", - "DomainAuditLogID": "", - "UserProfiles": { - "6999435610919250": { - "ID": 6999435610919250, - "LoginName": "group-a-client.tail78f774.ts.net", - "DisplayName": "group-a-client" - } - } + "PacketFilterRules": null } }, "group-b-client": { - "commands": { - "packet_filter_rules": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/group-b-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/group-b-client/tailscaled.sock debug localapi POST debug-packet-filter-matches" - }, "packet_filter_rules": null, - "packet_filter_matches": [], - "whois": { - "100.124.195.93": { - "peer_name": "exit-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/group-b-client/tailscaled.sock whois --json 100.124.195.93", - "response": null - }, - "100.116.18.24": { - "peer_name": "exit-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/group-b-client/tailscaled.sock whois --json 100.116.18.24", - "response": null - }, - "100.85.66.106": { - "peer_name": "exit-node", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/group-b-client/tailscaled.sock whois --json 100.85.66.106", - "response": null - }, - "100.107.162.14": { - "peer_name": "group-a-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/group-b-client/tailscaled.sock whois --json 100.107.162.14", - "response": null - }, - "100.105.127.107": { - "peer_name": "multi-exit-router", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/group-b-client/tailscaled.sock whois --json 100.105.127.107", - "response": null - }, - "100.109.43.124": { - "peer_name": "router-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/group-b-client/tailscaled.sock whois --json 100.109.43.124", - "response": null - }, - "100.65.172.123": { - "peer_name": "router-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/group-b-client/tailscaled.sock whois --json 100.65.172.123", - "response": null - }, - "100.92.142.61": { - "peer_name": "subnet-router", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/group-b-client/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/group-b-client/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/group-b-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/group-b-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/group-b-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/group-b-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/group-b-client/tailscaled.sock whois --json 100.90.199.68", - "response": null - } - }, "netmap": { - "SelfNode": { - "ID": 1008089393782498, - "StableID": "ndUwgLoZs811CNTRL", - "Name": "group-b-client.tail78f774.ts.net.", - "User": 1008089393782498, - "Key": "nodekey:ef35a655163204a08b33e09fdc24709f1e3aaa7f40de4efd5549cf014b4d8711", - "DiscoKey": "discokey:e972182cda0d0b459c91b2881624b81749a7e44390a5dde1b9bc17c1ae67715a", - "Addresses": ["100.77.135.18/32", "fd7a:115c:a1e0::4b37:8712/128"], - "AllowedIPs": ["100.77.135.18/32", "fd7a:115c:a1e0::4b37:8712/128"], - "Endpoints": ["77.164.248.136:49377", "10.65.0.27:49377", "172.17.0.1:49377"], - "Hostinfo": { - "Hostname": "group-b-client", - "RequestTags": ["tag:group-b"], - "Services": [ - { "Proto": "peerapi4", "Port": 47173 }, - { "Proto": "peerapi6", "Port": 47173 }, - { "Proto": "peerapi-dns-proxy", "Port": 1 } - ] - }, - "Created": "2026-03-28T10:38:08.031309668Z", - "Tags": ["tag:group-b"], - "MachineAuthorized": true, - "CapMap": { - "https://tailscale.com/cap/file-sharing": null, - "https://tailscale.com/cap/is-owner": null, - "https://tailscale.com/cap/ssh": null, - "https://tailscale.com/cap/tailnet-lock": null, - "probe-udp-lifetime": null, - "ssh-behavior-v1": null, - "ssh-env-vars": null, - "store-appc-routes": null, - "tailnet-display-name": ["kratail2tid@passkey"] - }, - "ComputedName": "group-b-client", - "ComputedNameWithHost": "group-b-client" - }, - "AllCaps": [ - "probe-udp-lifetime", - "https://tailscale.com/cap/file-sharing", - "https://tailscale.com/cap/ssh", - "https://tailscale.com/cap/tailnet-lock", - "store-appc-routes", - "https://tailscale.com/cap/is-owner", - "ssh-behavior-v1", - "tailnet-display-name", - "ssh-env-vars" - ], - "NodeKey": "nodekey:ef35a655163204a08b33e09fdc24709f1e3aaa7f40de4efd5549cf014b4d8711", - "MachineKey": "mkey:f151b3ba7be457f1484c96d8daf48e032d8c9ed890a7f9b2f32c51458a19a05c", "Peers": [], - "DNS": { - "Routes": { - "tail78f774.ts.net.": null, - "ts.net.": [{ "Addr": "199.247.155.53" }, { "Addr": "2620:111:8007::53" }] - }, - "Domains": ["tail78f774.ts.net"], - "Proxied": true, - "ExitNodeFilteredSet": [".ts.net", ".tailscale.net"] - }, - "PacketFilter": [], - "PacketFilterRules": null, - "SSHPolicy": { "rules": [] }, - "CollectServices": false, - "DERPMap": { - "Regions": { - "1": { - "RegionID": 1, - "RegionCode": "nyc", - "RegionName": "New York City", - "Latitude": 40.7128, - "Longitude": -74.006, - "Nodes": [ - { - "Name": "1h", - "RegionID": 1, - "HostName": "derp1h.tailscale.com", - "IPv4": "199.38.181.93", - "IPv6": "2607:f740:f::afd", - "CanPort80": true - }, - { - "Name": "1g", - "RegionID": 1, - "HostName": "derp1g.tailscale.com", - "IPv4": "209.177.145.120", - "IPv6": "2607:f740:f::3eb", - "CanPort80": true - }, - { - "Name": "1i", - "RegionID": 1, - "HostName": "derp1i.tailscale.com", - "IPv4": "199.38.181.103", - "IPv6": "2607:f740:f::e19", - "CanPort80": true - }, - { - "Name": "1f", - "RegionID": 1, - "HostName": "derp1f.tailscale.com", - "IPv4": "199.38.181.104", - "IPv6": "2607:f740:f::bc", - "CanPort80": true - } - ] - }, - "10": { - "RegionID": 10, - "RegionCode": "sea", - "RegionName": "Seattle", - "Latitude": 47.609722, - "Longitude": -122.333056, - "Nodes": [ - { - "Name": "10c", - "RegionID": 10, - "HostName": "derp10c.tailscale.com", - "IPv4": "192.73.240.121", - "IPv6": "2607:f740:14::40c", - "CanPort80": true - }, - { - "Name": "10d", - "RegionID": 10, - "HostName": "derp10d.tailscale.com", - "IPv4": "192.73.240.132", - "IPv6": "2607:f740:14::500", - "CanPort80": true - }, - { - "Name": "10b", - "RegionID": 10, - "HostName": "derp10b.tailscale.com", - "IPv4": "192.73.240.161", - "IPv6": "2607:f740:14::61c", - "CanPort80": true - } - ] - }, - "11": { - "RegionID": 11, - "RegionCode": "sao", - "RegionName": "São Paulo", - "Latitude": -23.55, - "Longitude": -46.633333, - "Nodes": [ - { - "Name": "11f", - "RegionID": 11, - "HostName": "derp11f.tailscale.com", - "IPv4": "172.237.61.197", - "IPv6": "2600:3c0d::2000:3bff:fe44:6166", - "CanPort80": true - }, - { - "Name": "11g", - "RegionID": 11, - "HostName": "derp11g.tailscale.com", - "IPv4": "172.237.61.190", - "IPv6": "2600:3c0d::2000:62ff:febe:2e67", - "CanPort80": true - }, - { - "Name": "11e", - "RegionID": 11, - "HostName": "derp11e.tailscale.com", - "IPv4": "172.237.61.194", - "IPv6": "2600:3c0d::2000:d2ff:fe43:1790", - "CanPort80": true - } - ] - }, - "12": { - "RegionID": 12, - "RegionCode": "ord", - "RegionName": "Chicago", - "Latitude": 41.881944, - "Longitude": -87.627778, - "Nodes": [ - { - "Name": "12e", - "RegionID": 12, - "HostName": "derp12e.tailscale.com", - "IPv4": "209.177.158.15", - "IPv6": "2607:f740:e::b17", - "CanPort80": true - }, - { - "Name": "12f", - "RegionID": 12, - "HostName": "derp12f.tailscale.com", - "IPv4": "199.38.182.118", - "IPv6": "2607:f740:e::4c8", - "CanPort80": true - }, - { - "Name": "12d", - "RegionID": 12, - "HostName": "derp12d.tailscale.com", - "IPv4": "209.177.158.246", - "IPv6": "2607:f740:e::811", - "CanPort80": true - } - ] - }, - "13": { - "RegionID": 13, - "RegionCode": "den", - "RegionName": "Denver", - "Latitude": 39.7392, - "Longitude": -104.9849, - "Nodes": [ - { - "Name": "13c", - "RegionID": 13, - "HostName": "derp13c.tailscale.com", - "IPv4": "192.73.242.28", - "IPv6": "2607:f740:16::5c", - "CanPort80": true - }, - { - "Name": "13d", - "RegionID": 13, - "HostName": "derp13d.tailscale.com", - "IPv4": "192.73.242.204", - "IPv6": "2607:f740:16::c23", - "CanPort80": true - }, - { - "Name": "13b", - "RegionID": 13, - "HostName": "derp13b.tailscale.com", - "IPv4": "192.73.242.187", - "IPv6": "2607:f740:16::640", - "CanPort80": true - } - ] - }, - "14": { - "RegionID": 14, - "RegionCode": "ams", - "RegionName": "Amsterdam", - "Latitude": 52.372778, - "Longitude": 4.893611, - "Nodes": [ - { - "Name": "14c", - "RegionID": 14, - "HostName": "derp14c.tailscale.com", - "IPv4": "176.58.93.147", - "IPv6": "2a00:dd80:3c::b09", - "CanPort80": true - }, - { - "Name": "14d", - "RegionID": 14, - "HostName": "derp14d.tailscale.com", - "IPv4": "176.58.93.154", - "IPv6": "2a00:dd80:3c::3d5", - "CanPort80": true - }, - { - "Name": "14b", - "RegionID": 14, - "HostName": "derp14b.tailscale.com", - "IPv4": "176.58.93.248", - "IPv6": "2a00:dd80:3c::807", - "CanPort80": true - } - ] - }, - "15": { - "RegionID": 15, - "RegionCode": "jnb", - "RegionName": "Johannesburg", - "Latitude": -26.204444, - "Longitude": 28.045556, - "Nodes": [ - { - "Name": "15c", - "RegionID": 15, - "HostName": "derp15c.tailscale.com", - "IPv4": "102.67.165.185", - "IPv6": "2c0f:edb0:0:10::b59", - "CanPort80": true - }, - { - "Name": "15d", - "RegionID": 15, - "HostName": "derp15d.tailscale.com", - "IPv4": "102.67.165.36", - "IPv6": "2c0f:edb0:0:10::599", - "CanPort80": true - }, - { - "Name": "15b", - "RegionID": 15, - "HostName": "derp15b.tailscale.com", - "IPv4": "102.67.165.90", - "IPv6": "2c0f:edb0:0:10::963", - "CanPort80": true - } - ] - }, - "16": { - "RegionID": 16, - "RegionCode": "mia", - "RegionName": "Miami", - "Latitude": 25.78, - "Longitude": -80.21, - "Nodes": [ - { - "Name": "16c", - "RegionID": 16, - "HostName": "derp16c.tailscale.com", - "IPv4": "192.73.243.229", - "IPv6": "2607:f740:17::4e4", - "CanPort80": true - }, - { - "Name": "16d", - "RegionID": 16, - "HostName": "derp16d.tailscale.com", - "IPv4": "192.73.243.141", - "IPv6": "2607:f740:17::475", - "CanPort80": true - }, - { - "Name": "16b", - "RegionID": 16, - "HostName": "derp16b.tailscale.com", - "IPv4": "192.73.243.135", - "IPv6": "2607:f740:17::476", - "CanPort80": true - } - ] - }, - "17": { - "RegionID": 17, - "RegionCode": "lax", - "RegionName": "Los Angeles", - "Latitude": 34.05, - "Longitude": -118.25, - "Nodes": [ - { - "Name": "17c", - "RegionID": 17, - "HostName": "derp17c.tailscale.com", - "IPv4": "208.111.40.12", - "IPv6": "2607:f740:c::10", - "CanPort80": true - }, - { - "Name": "17d", - "RegionID": 17, - "HostName": "derp17d.tailscale.com", - "IPv4": "208.111.40.216", - "IPv6": "2607:f740:c::e1b", - "CanPort80": true - }, - { - "Name": "17b", - "RegionID": 17, - "HostName": "derp17b.tailscale.com", - "IPv4": "192.73.244.245", - "IPv6": "2607:f740:c::646", - "CanPort80": true - } - ] - }, - "18": { - "RegionID": 18, - "RegionCode": "par", - "RegionName": "Paris", - "Latitude": 48.856667, - "Longitude": 2.352222, - "Nodes": [ - { - "Name": "18c", - "RegionID": 18, - "HostName": "derp18c.tailscale.com", - "IPv4": "176.58.90.207", - "IPv6": "2a00:dd80:3e::c19", - "CanPort80": true - }, - { - "Name": "18d", - "RegionID": 18, - "HostName": "derp18d.tailscale.com", - "IPv4": "176.58.90.104", - "IPv6": "2a00:dd80:3e::f2e", - "CanPort80": true - }, - { - "Name": "18b", - "RegionID": 18, - "HostName": "derp18b.tailscale.com", - "IPv4": "176.58.90.147", - "IPv6": "2a00:dd80:3e::363", - "CanPort80": true - } - ] - }, - "19": { - "RegionID": 19, - "RegionCode": "mad", - "RegionName": "Madrid", - "Latitude": 40.416944, - "Longitude": -3.703333, - "Nodes": [ - { - "Name": "19c", - "RegionID": 19, - "HostName": "derp19c.tailscale.com", - "IPv4": "45.159.97.61", - "IPv6": "2a00:dd80:14:10::20", - "CanPort80": true - }, - { - "Name": "19d", - "RegionID": 19, - "HostName": "derp19d.tailscale.com", - "IPv4": "45.159.97.233", - "IPv6": "2a00:dd80:14:10::34a", - "CanPort80": true - }, - { - "Name": "19b", - "RegionID": 19, - "HostName": "derp19b.tailscale.com", - "IPv4": "45.159.97.144", - "IPv6": "2a00:dd80:14:10::335", - "CanPort80": true - } - ] - }, - "2": { - "RegionID": 2, - "RegionCode": "sfo", - "RegionName": "San Francisco", - "Latitude": 37.7775, - "Longitude": -122.416389, - "Nodes": [ - { - "Name": "2e", - "RegionID": 2, - "HostName": "derp2e.tailscale.com", - "IPv4": "192.73.252.134", - "IPv6": "2607:f740:0:3f::44c", - "CanPort80": true - }, - { - "Name": "2f", - "RegionID": 2, - "HostName": "derp2f.tailscale.com", - "IPv4": "208.111.34.178", - "IPv6": "2607:f740:0:3f::f4", - "CanPort80": true - }, - { - "Name": "2d", - "RegionID": 2, - "HostName": "derp2d.tailscale.com", - "IPv4": "192.73.252.65", - "IPv6": "2607:f740:0:3f::287", - "CanPort80": true - } - ] - }, - "20": { - "RegionID": 20, - "RegionCode": "hkg", - "RegionName": "Hong Kong", - "Latitude": 22.3193, - "Longitude": 114.1694, - "Nodes": [ - { - "Name": "20c", - "RegionID": 20, - "HostName": "derp20c.tailscale.com", - "IPv4": "205.147.105.30", - "IPv6": "2403:2500:8000:1::5fb", - "CanPort80": true - }, - { - "Name": "20d", - "RegionID": 20, - "HostName": "derp20d.tailscale.com", - "IPv4": "205.147.105.78", - "IPv6": "2403:2500:8000:1::e9a", - "CanPort80": true - }, - { - "Name": "20b", - "RegionID": 20, - "HostName": "derp20b.tailscale.com", - "IPv4": "103.6.84.152", - "IPv6": "2403:2500:8000:1::ef6", - "CanPort80": true - } - ] - }, - "21": { - "RegionID": 21, - "RegionCode": "tor", - "RegionName": "Toronto", - "Latitude": 43.741667, - "Longitude": -79.373333, - "Nodes": [ - { - "Name": "21c", - "RegionID": 21, - "HostName": "derp21c.tailscale.com", - "IPv4": "162.248.221.215", - "IPv6": "2607:f740:50::f10", - "CanPort80": true - }, - { - "Name": "21d", - "RegionID": 21, - "HostName": "derp21d.tailscale.com", - "IPv4": "162.248.221.248", - "IPv6": "2607:f740:50::ca4", - "CanPort80": true - }, - { - "Name": "21b", - "RegionID": 21, - "HostName": "derp21b.tailscale.com", - "IPv4": "162.248.221.199", - "IPv6": "2607:f740:50::1d1", - "CanPort80": true - } - ] - }, - "22": { - "RegionID": 22, - "RegionCode": "waw", - "RegionName": "Warsaw", - "Latitude": 52.23, - "Longitude": 21.011111, - "Nodes": [ - { - "Name": "22c", - "RegionID": 22, - "HostName": "derp22c.tailscale.com", - "IPv4": "45.159.98.253", - "IPv6": "2a00:dd80:40:100::3f", - "CanPort80": true - }, - { - "Name": "22d", - "RegionID": 22, - "HostName": "derp22d.tailscale.com", - "IPv4": "45.159.98.145", - "IPv6": "2a00:dd80:40:100::211", - "CanPort80": true - }, - { - "Name": "22b", - "RegionID": 22, - "HostName": "derp22b.tailscale.com", - "IPv4": "45.159.98.196", - "IPv6": "2a00:dd80:40:100::316", - "CanPort80": true - } - ] - }, - "23": { - "RegionID": 23, - "RegionCode": "dbi", - "RegionName": "Dubai", - "Latitude": 25.263056, - "Longitude": 55.297222, - "Nodes": [ - { - "Name": "23c", - "RegionID": 23, - "HostName": "derp23c.tailscale.com", - "IPv4": "185.34.3.207", - "IPv6": "2a00:dd80:3f:100::a50", - "CanPort80": true - }, - { - "Name": "23d", - "RegionID": 23, - "HostName": "derp23d.tailscale.com", - "IPv4": "185.34.3.75", - "IPv6": "2a00:dd80:3f:100::97e", - "CanPort80": true - }, - { - "Name": "23b", - "RegionID": 23, - "HostName": "derp23b.tailscale.com", - "IPv4": "185.34.3.232", - "IPv6": "2a00:dd80:3f:100::76f", - "CanPort80": true - } - ] - }, - "24": { - "RegionID": 24, - "RegionCode": "hnl", - "RegionName": "Honolulu", - "Latitude": 21.306944, - "Longitude": -157.858333, - "Nodes": [ - { - "Name": "24c", - "RegionID": 24, - "HostName": "derp24c.tailscale.com", - "IPv4": "208.83.233.233", - "IPv6": "2001:19f0:c000:c591:5400:04ff:fe26:2c5f", - "CanPort80": true - }, - { - "Name": "24d", - "RegionID": 24, - "HostName": "derp24d.tailscale.com", - "IPv4": "208.72.155.133", - "IPv6": "2001:19f0:c000:c564:5400:04ff:fe26:2ba8", - "CanPort80": true - }, - { - "Name": "24b", - "RegionID": 24, - "HostName": "derp24b.tailscale.com", - "IPv4": "208.83.234.151", - "IPv6": "2001:19f0:c000:c586:5400:04ff:fe26:2ba6", - "CanPort80": true - } - ] - }, - "25": { - "RegionID": 25, - "RegionCode": "nai", - "RegionName": "Nairobi", - "Latitude": -1.286389, - "Longitude": 36.817222, - "Nodes": [ - { - "Name": "25c", - "RegionID": 25, - "HostName": "derp25c.tailscale.com", - "IPv4": "102.67.167.37", - "IPv6": "2c0f:edb0:2000:1::2c7", - "CanPort80": true - }, - { - "Name": "25d", - "RegionID": 25, - "HostName": "derp25d.tailscale.com", - "IPv4": "102.67.167.188", - "IPv6": "2c0f:edb0:2000:1::188", - "CanPort80": true - }, - { - "Name": "25b", - "RegionID": 25, - "HostName": "derp25b.tailscale.com", - "IPv4": "102.67.167.245", - "IPv6": "2c0f:edb0:2000:1::2e9", - "CanPort80": true - } - ] - }, - "26": { - "RegionID": 26, - "RegionCode": "nue", - "RegionName": "Nuremberg", - "Latitude": 49.453889, - "Longitude": 11.0775, - "Nodes": [ - { - "Name": "26c", - "RegionID": 26, - "HostName": "derp26c.tailscale.com", - "IPv4": "49.12.193.137", - "IPv6": "2a01:4f8:1c1c:5c70::1", - "CanPort80": true - }, - { - "Name": "26d", - "RegionID": 26, - "HostName": "derp26d.tailscale.com", - "IPv4": "49.13.204.141", - "IPv6": "2a01:4f8:1c0c:7d06::1", - "CanPort80": true - }, - { - "Name": "26b", - "RegionID": 26, - "HostName": "derp26b.tailscale.com", - "IPv4": "167.235.72.200", - "IPv6": "2a01:4f8:1c1c:47b6::1", - "CanPort80": true - } - ] - }, - "27": { - "RegionID": 27, - "RegionCode": "iad", - "RegionName": "Ashburn", - "Latitude": 39.03, - "Longitude": -77.471111, - "Nodes": [ - { - "Name": "27d", - "RegionID": 27, - "HostName": "derp27d.tailscale.com", - "IPv4": "178.156.152.106", - "IPv6": "2a01:4ff:f0:3c8e::1", - "CanPort80": true - }, - { - "Name": "27c", - "RegionID": 27, - "HostName": "derp27c.tailscale.com", - "IPv4": "178.156.152.91", - "IPv6": "2a01:4ff:f0:3913::1", - "CanPort80": true - }, - { - "Name": "27e", - "RegionID": 27, - "HostName": "derp27e.tailscale.com", - "IPv4": "178.156.134.232", - "IPv6": "2a01:4ff:f0:28d4::1", - "CanPort80": true - }, - { - "Name": "27b", - "RegionID": 27, - "HostName": "derp27b.tailscale.com", - "IPv4": "5.161.218.233", - "IPv6": "2a01:4ff:f0:3db9::1", - "CanPort80": true - } - ] - }, - "28": { - "RegionID": 28, - "RegionCode": "hel", - "RegionName": "Helsinki", - "Latitude": 60.170833, - "Longitude": 24.9375, - "Nodes": [ - { - "Name": "28c", - "RegionID": 28, - "HostName": "derp28c.tailscale.com", - "IPv4": "95.217.2.165", - "IPv6": "2a01:4f9:c012:cd74::1", - "CanPort80": true - }, - { - "Name": "28d", - "RegionID": 28, - "HostName": "derp28d.tailscale.com", - "IPv4": "157.180.28.32", - "IPv6": "2a01:4f9:c012:2e5b::1", - "CanPort80": true - }, - { - "Name": "28b", - "RegionID": 28, - "HostName": "derp28b.tailscale.com", - "IPv4": "65.109.143.62", - "IPv6": "2a01:4f9:c012:d55c::1", - "CanPort80": true - } - ] - }, - "3": { - "RegionID": 3, - "RegionCode": "sin", - "RegionName": "Singapore", - "Latitude": 1.3521, - "Longitude": 103.8198, - "Nodes": [ - { - "Name": "3g", - "RegionID": 3, - "HostName": "derp3g.tailscale.com", - "IPv4": "172.237.72.79", - "IPv6": "2600:3c15::2000:adff:fe08:6fab", - "CanPort80": true - }, - { - "Name": "3f", - "RegionID": 3, - "HostName": "derp3f.tailscale.com", - "IPv4": "172.237.72.8", - "IPv6": "2600:3c15::2000:53ff:fe48:a668", - "CanPort80": true - }, - { - "Name": "3h", - "RegionID": 3, - "HostName": "derp3h.tailscale.com", - "IPv4": "172.237.66.30", - "IPv6": "2600:3c15::2000:3dff:fe44:50aa", - "CanPort80": true - }, - { - "Name": "3e", - "RegionID": 3, - "HostName": "derp3e.tailscale.com", - "IPv4": "172.237.72.43", - "IPv6": "2600:3c15::2000:6cff:fee4:d799", - "CanPort80": true - } - ] - }, - "4": { - "RegionID": 4, - "RegionCode": "fra", - "RegionName": "Frankfurt", - "Latitude": 50.1109, - "Longitude": 8.6821, - "Nodes": [ - { - "Name": "4h", - "RegionID": 4, - "HostName": "derp4h.tailscale.com", - "IPv4": "185.40.234.77", - "IPv6": "2a00:dd80:20::bcf", - "CanPort80": true - }, - { - "Name": "4g", - "RegionID": 4, - "HostName": "derp4g.tailscale.com", - "IPv4": "185.40.234.113", - "IPv6": "2a00:dd80:20::8f", - "CanPort80": true - }, - { - "Name": "4i", - "RegionID": 4, - "HostName": "derp4i.tailscale.com", - "IPv4": "185.40.234.53", - "IPv6": "2a00:dd80:20::8a6", - "CanPort80": true - }, - { - "Name": "4f", - "RegionID": 4, - "HostName": "derp4f.tailscale.com", - "IPv4": "185.40.234.219", - "IPv6": "2a00:dd80:20::a25", - "CanPort80": true - } - ] - }, - "5": { - "RegionID": 5, - "RegionCode": "syd", - "RegionName": "Sydney", - "Latitude": -33.867778, - "Longitude": 151.21, - "Nodes": [ - { - "Name": "5f", - "RegionID": 5, - "HostName": "derp5f.tailscale.com", - "IPv4": "172.105.166.103", - "IPv6": "2400:8907::2000:ccff:fe1f:80da", - "CanPort80": true - }, - { - "Name": "5g", - "RegionID": 5, - "HostName": "derp5g.tailscale.com", - "IPv4": "172.105.169.57", - "IPv6": "2400:8907::2000:2fff:fea7:57f4", - "CanPort80": true - }, - { - "Name": "5e", - "RegionID": 5, - "HostName": "derp5e.tailscale.com", - "IPv4": "172.105.179.230", - "IPv6": "2400:8907::2000:ceff:fe8d:4f4e", - "CanPort80": true - } - ] - }, - "6": { - "RegionID": 6, - "RegionCode": "blr", - "RegionName": "Bengaluru", - "Latitude": 12.9716, - "Longitude": 77.5946, - "Nodes": [ - { - "Name": "6a", - "RegionID": 6, - "HostName": "derp6.tailscale.com", - "IPv4": "68.183.90.120", - "IPv6": "2400:6180:100:d0::982:d001", - "CanPort80": true - } - ] - }, - "7": { - "RegionID": 7, - "RegionCode": "tok", - "RegionName": "Tokyo", - "Latitude": 35.6764, - "Longitude": 139.65, - "Nodes": [ - { - "Name": "7g", - "RegionID": 7, - "HostName": "derp7g.tailscale.com", - "IPv4": "172.238.6.179", - "IPv6": "2600:3c18::2000:3fff:fe80:3ebd", - "CanPort80": true - }, - { - "Name": "7f", - "RegionID": 7, - "HostName": "derp7f.tailscale.com", - "IPv4": "172.238.6.34", - "IPv6": "2600:3c18::2000:acff:fe8e:3ed5", - "CanPort80": true - }, - { - "Name": "7h", - "RegionID": 7, - "HostName": "derp7h.tailscale.com", - "IPv4": "172.237.28.183", - "IPv6": "2600:3c18::2000:b1ff:fea9:4560", - "CanPort80": true - }, - { - "Name": "7e", - "RegionID": 7, - "HostName": "derp7e.tailscale.com", - "IPv4": "172.238.6.180", - "IPv6": "2600:3c18::2000:60ff:fe0f:6e83", - "STUNOnly": true, - "CanPort80": true - } - ] - }, - "8": { - "RegionID": 8, - "RegionCode": "lhr", - "RegionName": "London", - "Latitude": 51.5072, - "Longitude": 0.1276, - "Nodes": [ - { - "Name": "8f", - "RegionID": 8, - "HostName": "derp8f.tailscale.com", - "IPv4": "176.58.88.183", - "IPv6": "2a00:dd80:3a::dfa", - "CanPort80": true - }, - { - "Name": "8g", - "RegionID": 8, - "HostName": "derp8g.tailscale.com", - "IPv4": "176.58.92.254", - "IPv6": "2a00:dd80:3a::ed", - "CanPort80": true - }, - { - "Name": "8e", - "RegionID": 8, - "HostName": "derp8e.tailscale.com", - "IPv4": "176.58.92.144", - "IPv6": "2a00:dd80:3a::b33", - "CanPort80": true - } - ] - }, - "9": { - "RegionID": 9, - "RegionCode": "dfw", - "RegionName": "Dallas", - "Latitude": 32.779167, - "Longitude": -96.808889, - "Nodes": [ - { - "Name": "9e", - "RegionID": 9, - "HostName": "derp9e.tailscale.com", - "IPv4": "192.73.248.83", - "IPv6": "2607:f740:100::359", - "CanPort80": true - }, - { - "Name": "9f", - "RegionID": 9, - "HostName": "derp9f.tailscale.com", - "IPv4": "209.177.156.197", - "IPv6": "2607:f740:100::cad", - "CanPort80": true - }, - { - "Name": "9d", - "RegionID": 9, - "HostName": "derp9d.tailscale.com", - "IPv4": "209.177.156.94", - "IPv6": "2607:f740:100::c05", - "CanPort80": true - } - ] - } - } - }, - "DisplayMessages": null, - "TKAEnabled": false, - "TKAHead": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", - "Domain": "kratail2tid@passkey", - "DomainAuditLogID": "", - "UserProfiles": { - "1008089393782498": { - "ID": 1008089393782498, - "LoginName": "group-b-client.tail78f774.ts.net", - "DisplayName": "group-b-client" - } - } + "PacketFilterRules": null } }, "multi-exit-router": { - "commands": { - "packet_filter_rules": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/multi-exit-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/multi-exit-router/tailscaled.sock debug localapi POST debug-packet-filter-matches" - }, "packet_filter_rules": null, - "packet_filter_matches": [], - "whois": { - "100.124.195.93": { - "peer_name": "exit-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/multi-exit-router/tailscaled.sock whois --json 100.124.195.93", - "response": null - }, - "100.116.18.24": { - "peer_name": "exit-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/multi-exit-router/tailscaled.sock whois --json 100.116.18.24", - "response": null - }, - "100.85.66.106": { - "peer_name": "exit-node", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/multi-exit-router/tailscaled.sock whois --json 100.85.66.106", - "response": null - }, - "100.107.162.14": { - "peer_name": "group-a-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/multi-exit-router/tailscaled.sock whois --json 100.107.162.14", - "response": null - }, - "100.77.135.18": { - "peer_name": "group-b-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/multi-exit-router/tailscaled.sock whois --json 100.77.135.18", - "response": null - }, - "100.109.43.124": { - "peer_name": "router-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/multi-exit-router/tailscaled.sock whois --json 100.109.43.124", - "response": null - }, - "100.65.172.123": { - "peer_name": "router-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/multi-exit-router/tailscaled.sock whois --json 100.65.172.123", - "response": null - }, - "100.92.142.61": { - "peer_name": "subnet-router", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/multi-exit-router/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/multi-exit-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/multi-exit-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/multi-exit-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/multi-exit-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/multi-exit-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/multi-exit-router/tailscaled.sock whois --json 100.90.199.68", - "response": null - } - }, "netmap": { - "SelfNode": { - "ID": 6294409699640722, - "StableID": "nMQuxDUk9r11CNTRL", - "Name": "multi-exit-router.tail78f774.ts.net.", - "User": 6294409699640722, - "Key": "nodekey:b854a0d64eba757cd3215c5bd78149cc0f927e35a2ad20342e88a15ead297f6a", - "DiscoKey": "discokey:762c82dd308809f511c6ac86dcc2642585837358fdd24958d55f16883c8e6c58", - "Addresses": ["100.105.127.107/32", "fd7a:115c:a1e0::ad37:7f6b/128"], - "AllowedIPs": ["100.105.127.107/32", "fd7a:115c:a1e0::ad37:7f6b/128", "10.33.0.0/16"], - "Endpoints": ["77.164.248.136:50766", "10.65.0.27:50766", "172.17.0.1:50766"], - "Hostinfo": { - "Hostname": "multi-exit-router", - "RoutableIPs": ["0.0.0.0/0", "::/0", "10.33.0.0/16"], - "RequestTags": ["tag:exit", "tag:router"], - "Services": [ - { "Proto": "peerapi4", "Port": 62548 }, - { "Proto": "peerapi6", "Port": 62548 }, - { "Proto": "peerapi-dns-proxy", "Port": 1 } - ] - }, - "Created": "2026-03-28T10:38:19.117098852Z", - "Tags": ["tag:exit", "tag:router"], - "PrimaryRoutes": ["10.33.0.0/16"], - "MachineAuthorized": true, - "CapMap": { - "https://tailscale.com/cap/file-sharing": null, - "https://tailscale.com/cap/is-owner": null, - "https://tailscale.com/cap/ssh": null, - "https://tailscale.com/cap/tailnet-lock": null, - "probe-udp-lifetime": null, - "ssh-behavior-v1": null, - "ssh-env-vars": null, - "store-appc-routes": null, - "tailnet-display-name": ["kratail2tid@passkey"] - }, - "ComputedName": "multi-exit-router", - "ComputedNameWithHost": "multi-exit-router" - }, - "AllCaps": [ - "https://tailscale.com/cap/ssh", - "probe-udp-lifetime", - "ssh-behavior-v1", - "tailnet-display-name", - "https://tailscale.com/cap/is-owner", - "https://tailscale.com/cap/tailnet-lock", - "ssh-env-vars", - "https://tailscale.com/cap/file-sharing", - "store-appc-routes" - ], - "NodeKey": "nodekey:b854a0d64eba757cd3215c5bd78149cc0f927e35a2ad20342e88a15ead297f6a", - "MachineKey": "mkey:91bee804809f30d07bfc29cf556844288fc3d45e0572469a3cb0799a535fda7d", "Peers": [], - "DNS": { - "Routes": { - "tail78f774.ts.net.": null, - "ts.net.": [{ "Addr": "199.247.155.53" }, { "Addr": "2620:111:8007::53" }] - }, - "Domains": ["tail78f774.ts.net"], - "Proxied": true, - "ExitNodeFilteredSet": [".ts.net", ".tailscale.net"] - }, - "PacketFilter": [], - "PacketFilterRules": null, - "SSHPolicy": { "rules": [] }, - "CollectServices": false, - "DERPMap": { - "Regions": { - "1": { - "RegionID": 1, - "RegionCode": "nyc", - "RegionName": "New York City", - "Latitude": 40.7128, - "Longitude": -74.006, - "Nodes": [ - { - "Name": "1h", - "RegionID": 1, - "HostName": "derp1h.tailscale.com", - "IPv4": "199.38.181.93", - "IPv6": "2607:f740:f::afd", - "CanPort80": true - }, - { - "Name": "1g", - "RegionID": 1, - "HostName": "derp1g.tailscale.com", - "IPv4": "209.177.145.120", - "IPv6": "2607:f740:f::3eb", - "CanPort80": true - }, - { - "Name": "1i", - "RegionID": 1, - "HostName": "derp1i.tailscale.com", - "IPv4": "199.38.181.103", - "IPv6": "2607:f740:f::e19", - "CanPort80": true - }, - { - "Name": "1f", - "RegionID": 1, - "HostName": "derp1f.tailscale.com", - "IPv4": "199.38.181.104", - "IPv6": "2607:f740:f::bc", - "CanPort80": true - } - ] - }, - "10": { - "RegionID": 10, - "RegionCode": "sea", - "RegionName": "Seattle", - "Latitude": 47.609722, - "Longitude": -122.333056, - "Nodes": [ - { - "Name": "10c", - "RegionID": 10, - "HostName": "derp10c.tailscale.com", - "IPv4": "192.73.240.121", - "IPv6": "2607:f740:14::40c", - "CanPort80": true - }, - { - "Name": "10d", - "RegionID": 10, - "HostName": "derp10d.tailscale.com", - "IPv4": "192.73.240.132", - "IPv6": "2607:f740:14::500", - "CanPort80": true - }, - { - "Name": "10b", - "RegionID": 10, - "HostName": "derp10b.tailscale.com", - "IPv4": "192.73.240.161", - "IPv6": "2607:f740:14::61c", - "CanPort80": true - } - ] - }, - "11": { - "RegionID": 11, - "RegionCode": "sao", - "RegionName": "São Paulo", - "Latitude": -23.55, - "Longitude": -46.633333, - "Nodes": [ - { - "Name": "11f", - "RegionID": 11, - "HostName": "derp11f.tailscale.com", - "IPv4": "172.237.61.197", - "IPv6": "2600:3c0d::2000:3bff:fe44:6166", - "CanPort80": true - }, - { - "Name": "11g", - "RegionID": 11, - "HostName": "derp11g.tailscale.com", - "IPv4": "172.237.61.190", - "IPv6": "2600:3c0d::2000:62ff:febe:2e67", - "CanPort80": true - }, - { - "Name": "11e", - "RegionID": 11, - "HostName": "derp11e.tailscale.com", - "IPv4": "172.237.61.194", - "IPv6": "2600:3c0d::2000:d2ff:fe43:1790", - "CanPort80": true - } - ] - }, - "12": { - "RegionID": 12, - "RegionCode": "ord", - "RegionName": "Chicago", - "Latitude": 41.881944, - "Longitude": -87.627778, - "Nodes": [ - { - "Name": "12e", - "RegionID": 12, - "HostName": "derp12e.tailscale.com", - "IPv4": "209.177.158.15", - "IPv6": "2607:f740:e::b17", - "CanPort80": true - }, - { - "Name": "12f", - "RegionID": 12, - "HostName": "derp12f.tailscale.com", - "IPv4": "199.38.182.118", - "IPv6": "2607:f740:e::4c8", - "CanPort80": true - }, - { - "Name": "12d", - "RegionID": 12, - "HostName": "derp12d.tailscale.com", - "IPv4": "209.177.158.246", - "IPv6": "2607:f740:e::811", - "CanPort80": true - } - ] - }, - "13": { - "RegionID": 13, - "RegionCode": "den", - "RegionName": "Denver", - "Latitude": 39.7392, - "Longitude": -104.9849, - "Nodes": [ - { - "Name": "13c", - "RegionID": 13, - "HostName": "derp13c.tailscale.com", - "IPv4": "192.73.242.28", - "IPv6": "2607:f740:16::5c", - "CanPort80": true - }, - { - "Name": "13d", - "RegionID": 13, - "HostName": "derp13d.tailscale.com", - "IPv4": "192.73.242.204", - "IPv6": "2607:f740:16::c23", - "CanPort80": true - }, - { - "Name": "13b", - "RegionID": 13, - "HostName": "derp13b.tailscale.com", - "IPv4": "192.73.242.187", - "IPv6": "2607:f740:16::640", - "CanPort80": true - } - ] - }, - "14": { - "RegionID": 14, - "RegionCode": "ams", - "RegionName": "Amsterdam", - "Latitude": 52.372778, - "Longitude": 4.893611, - "Nodes": [ - { - "Name": "14c", - "RegionID": 14, - "HostName": "derp14c.tailscale.com", - "IPv4": "176.58.93.147", - "IPv6": "2a00:dd80:3c::b09", - "CanPort80": true - }, - { - "Name": "14d", - "RegionID": 14, - "HostName": "derp14d.tailscale.com", - "IPv4": "176.58.93.154", - "IPv6": "2a00:dd80:3c::3d5", - "CanPort80": true - }, - { - "Name": "14b", - "RegionID": 14, - "HostName": "derp14b.tailscale.com", - "IPv4": "176.58.93.248", - "IPv6": "2a00:dd80:3c::807", - "CanPort80": true - } - ] - }, - "15": { - "RegionID": 15, - "RegionCode": "jnb", - "RegionName": "Johannesburg", - "Latitude": -26.204444, - "Longitude": 28.045556, - "Nodes": [ - { - "Name": "15c", - "RegionID": 15, - "HostName": "derp15c.tailscale.com", - "IPv4": "102.67.165.185", - "IPv6": "2c0f:edb0:0:10::b59", - "CanPort80": true - }, - { - "Name": "15d", - "RegionID": 15, - "HostName": "derp15d.tailscale.com", - "IPv4": "102.67.165.36", - "IPv6": "2c0f:edb0:0:10::599", - "CanPort80": true - }, - { - "Name": "15b", - "RegionID": 15, - "HostName": "derp15b.tailscale.com", - "IPv4": "102.67.165.90", - "IPv6": "2c0f:edb0:0:10::963", - "CanPort80": true - } - ] - }, - "16": { - "RegionID": 16, - "RegionCode": "mia", - "RegionName": "Miami", - "Latitude": 25.78, - "Longitude": -80.21, - "Nodes": [ - { - "Name": "16c", - "RegionID": 16, - "HostName": "derp16c.tailscale.com", - "IPv4": "192.73.243.229", - "IPv6": "2607:f740:17::4e4", - "CanPort80": true - }, - { - "Name": "16d", - "RegionID": 16, - "HostName": "derp16d.tailscale.com", - "IPv4": "192.73.243.141", - "IPv6": "2607:f740:17::475", - "CanPort80": true - }, - { - "Name": "16b", - "RegionID": 16, - "HostName": "derp16b.tailscale.com", - "IPv4": "192.73.243.135", - "IPv6": "2607:f740:17::476", - "CanPort80": true - } - ] - }, - "17": { - "RegionID": 17, - "RegionCode": "lax", - "RegionName": "Los Angeles", - "Latitude": 34.05, - "Longitude": -118.25, - "Nodes": [ - { - "Name": "17c", - "RegionID": 17, - "HostName": "derp17c.tailscale.com", - "IPv4": "208.111.40.12", - "IPv6": "2607:f740:c::10", - "CanPort80": true - }, - { - "Name": "17d", - "RegionID": 17, - "HostName": "derp17d.tailscale.com", - "IPv4": "208.111.40.216", - "IPv6": "2607:f740:c::e1b", - "CanPort80": true - }, - { - "Name": "17b", - "RegionID": 17, - "HostName": "derp17b.tailscale.com", - "IPv4": "192.73.244.245", - "IPv6": "2607:f740:c::646", - "CanPort80": true - } - ] - }, - "18": { - "RegionID": 18, - "RegionCode": "par", - "RegionName": "Paris", - "Latitude": 48.856667, - "Longitude": 2.352222, - "Nodes": [ - { - "Name": "18c", - "RegionID": 18, - "HostName": "derp18c.tailscale.com", - "IPv4": "176.58.90.207", - "IPv6": "2a00:dd80:3e::c19", - "CanPort80": true - }, - { - "Name": "18d", - "RegionID": 18, - "HostName": "derp18d.tailscale.com", - "IPv4": "176.58.90.104", - "IPv6": "2a00:dd80:3e::f2e", - "CanPort80": true - }, - { - "Name": "18b", - "RegionID": 18, - "HostName": "derp18b.tailscale.com", - "IPv4": "176.58.90.147", - "IPv6": "2a00:dd80:3e::363", - "CanPort80": true - } - ] - }, - "19": { - "RegionID": 19, - "RegionCode": "mad", - "RegionName": "Madrid", - "Latitude": 40.416944, - "Longitude": -3.703333, - "Nodes": [ - { - "Name": "19c", - "RegionID": 19, - "HostName": "derp19c.tailscale.com", - "IPv4": "45.159.97.61", - "IPv6": "2a00:dd80:14:10::20", - "CanPort80": true - }, - { - "Name": "19d", - "RegionID": 19, - "HostName": "derp19d.tailscale.com", - "IPv4": "45.159.97.233", - "IPv6": "2a00:dd80:14:10::34a", - "CanPort80": true - }, - { - "Name": "19b", - "RegionID": 19, - "HostName": "derp19b.tailscale.com", - "IPv4": "45.159.97.144", - "IPv6": "2a00:dd80:14:10::335", - "CanPort80": true - } - ] - }, - "2": { - "RegionID": 2, - "RegionCode": "sfo", - "RegionName": "San Francisco", - "Latitude": 37.7775, - "Longitude": -122.416389, - "Nodes": [ - { - "Name": "2e", - "RegionID": 2, - "HostName": "derp2e.tailscale.com", - "IPv4": "192.73.252.134", - "IPv6": "2607:f740:0:3f::44c", - "CanPort80": true - }, - { - "Name": "2f", - "RegionID": 2, - "HostName": "derp2f.tailscale.com", - "IPv4": "208.111.34.178", - "IPv6": "2607:f740:0:3f::f4", - "CanPort80": true - }, - { - "Name": "2d", - "RegionID": 2, - "HostName": "derp2d.tailscale.com", - "IPv4": "192.73.252.65", - "IPv6": "2607:f740:0:3f::287", - "CanPort80": true - } - ] - }, - "20": { - "RegionID": 20, - "RegionCode": "hkg", - "RegionName": "Hong Kong", - "Latitude": 22.3193, - "Longitude": 114.1694, - "Nodes": [ - { - "Name": "20c", - "RegionID": 20, - "HostName": "derp20c.tailscale.com", - "IPv4": "205.147.105.30", - "IPv6": "2403:2500:8000:1::5fb", - "CanPort80": true - }, - { - "Name": "20d", - "RegionID": 20, - "HostName": "derp20d.tailscale.com", - "IPv4": "205.147.105.78", - "IPv6": "2403:2500:8000:1::e9a", - "CanPort80": true - }, - { - "Name": "20b", - "RegionID": 20, - "HostName": "derp20b.tailscale.com", - "IPv4": "103.6.84.152", - "IPv6": "2403:2500:8000:1::ef6", - "CanPort80": true - } - ] - }, - "21": { - "RegionID": 21, - "RegionCode": "tor", - "RegionName": "Toronto", - "Latitude": 43.741667, - "Longitude": -79.373333, - "Nodes": [ - { - "Name": "21c", - "RegionID": 21, - "HostName": "derp21c.tailscale.com", - "IPv4": "162.248.221.215", - "IPv6": "2607:f740:50::f10", - "CanPort80": true - }, - { - "Name": "21d", - "RegionID": 21, - "HostName": "derp21d.tailscale.com", - "IPv4": "162.248.221.248", - "IPv6": "2607:f740:50::ca4", - "CanPort80": true - }, - { - "Name": "21b", - "RegionID": 21, - "HostName": "derp21b.tailscale.com", - "IPv4": "162.248.221.199", - "IPv6": "2607:f740:50::1d1", - "CanPort80": true - } - ] - }, - "22": { - "RegionID": 22, - "RegionCode": "waw", - "RegionName": "Warsaw", - "Latitude": 52.23, - "Longitude": 21.011111, - "Nodes": [ - { - "Name": "22c", - "RegionID": 22, - "HostName": "derp22c.tailscale.com", - "IPv4": "45.159.98.253", - "IPv6": "2a00:dd80:40:100::3f", - "CanPort80": true - }, - { - "Name": "22d", - "RegionID": 22, - "HostName": "derp22d.tailscale.com", - "IPv4": "45.159.98.145", - "IPv6": "2a00:dd80:40:100::211", - "CanPort80": true - }, - { - "Name": "22b", - "RegionID": 22, - "HostName": "derp22b.tailscale.com", - "IPv4": "45.159.98.196", - "IPv6": "2a00:dd80:40:100::316", - "CanPort80": true - } - ] - }, - "23": { - "RegionID": 23, - "RegionCode": "dbi", - "RegionName": "Dubai", - "Latitude": 25.263056, - "Longitude": 55.297222, - "Nodes": [ - { - "Name": "23c", - "RegionID": 23, - "HostName": "derp23c.tailscale.com", - "IPv4": "185.34.3.207", - "IPv6": "2a00:dd80:3f:100::a50", - "CanPort80": true - }, - { - "Name": "23d", - "RegionID": 23, - "HostName": "derp23d.tailscale.com", - "IPv4": "185.34.3.75", - "IPv6": "2a00:dd80:3f:100::97e", - "CanPort80": true - }, - { - "Name": "23b", - "RegionID": 23, - "HostName": "derp23b.tailscale.com", - "IPv4": "185.34.3.232", - "IPv6": "2a00:dd80:3f:100::76f", - "CanPort80": true - } - ] - }, - "24": { - "RegionID": 24, - "RegionCode": "hnl", - "RegionName": "Honolulu", - "Latitude": 21.306944, - "Longitude": -157.858333, - "Nodes": [ - { - "Name": "24c", - "RegionID": 24, - "HostName": "derp24c.tailscale.com", - "IPv4": "208.83.233.233", - "IPv6": "2001:19f0:c000:c591:5400:04ff:fe26:2c5f", - "CanPort80": true - }, - { - "Name": "24d", - "RegionID": 24, - "HostName": "derp24d.tailscale.com", - "IPv4": "208.72.155.133", - "IPv6": "2001:19f0:c000:c564:5400:04ff:fe26:2ba8", - "CanPort80": true - }, - { - "Name": "24b", - "RegionID": 24, - "HostName": "derp24b.tailscale.com", - "IPv4": "208.83.234.151", - "IPv6": "2001:19f0:c000:c586:5400:04ff:fe26:2ba6", - "CanPort80": true - } - ] - }, - "25": { - "RegionID": 25, - "RegionCode": "nai", - "RegionName": "Nairobi", - "Latitude": -1.286389, - "Longitude": 36.817222, - "Nodes": [ - { - "Name": "25c", - "RegionID": 25, - "HostName": "derp25c.tailscale.com", - "IPv4": "102.67.167.37", - "IPv6": "2c0f:edb0:2000:1::2c7", - "CanPort80": true - }, - { - "Name": "25d", - "RegionID": 25, - "HostName": "derp25d.tailscale.com", - "IPv4": "102.67.167.188", - "IPv6": "2c0f:edb0:2000:1::188", - "CanPort80": true - }, - { - "Name": "25b", - "RegionID": 25, - "HostName": "derp25b.tailscale.com", - "IPv4": "102.67.167.245", - "IPv6": "2c0f:edb0:2000:1::2e9", - "CanPort80": true - } - ] - }, - "26": { - "RegionID": 26, - "RegionCode": "nue", - "RegionName": "Nuremberg", - "Latitude": 49.453889, - "Longitude": 11.0775, - "Nodes": [ - { - "Name": "26c", - "RegionID": 26, - "HostName": "derp26c.tailscale.com", - "IPv4": "49.12.193.137", - "IPv6": "2a01:4f8:1c1c:5c70::1", - "CanPort80": true - }, - { - "Name": "26d", - "RegionID": 26, - "HostName": "derp26d.tailscale.com", - "IPv4": "49.13.204.141", - "IPv6": "2a01:4f8:1c0c:7d06::1", - "CanPort80": true - }, - { - "Name": "26b", - "RegionID": 26, - "HostName": "derp26b.tailscale.com", - "IPv4": "167.235.72.200", - "IPv6": "2a01:4f8:1c1c:47b6::1", - "CanPort80": true - } - ] - }, - "27": { - "RegionID": 27, - "RegionCode": "iad", - "RegionName": "Ashburn", - "Latitude": 39.03, - "Longitude": -77.471111, - "Nodes": [ - { - "Name": "27d", - "RegionID": 27, - "HostName": "derp27d.tailscale.com", - "IPv4": "178.156.152.106", - "IPv6": "2a01:4ff:f0:3c8e::1", - "CanPort80": true - }, - { - "Name": "27c", - "RegionID": 27, - "HostName": "derp27c.tailscale.com", - "IPv4": "178.156.152.91", - "IPv6": "2a01:4ff:f0:3913::1", - "CanPort80": true - }, - { - "Name": "27e", - "RegionID": 27, - "HostName": "derp27e.tailscale.com", - "IPv4": "178.156.134.232", - "IPv6": "2a01:4ff:f0:28d4::1", - "CanPort80": true - }, - { - "Name": "27b", - "RegionID": 27, - "HostName": "derp27b.tailscale.com", - "IPv4": "5.161.218.233", - "IPv6": "2a01:4ff:f0:3db9::1", - "CanPort80": true - } - ] - }, - "28": { - "RegionID": 28, - "RegionCode": "hel", - "RegionName": "Helsinki", - "Latitude": 60.170833, - "Longitude": 24.9375, - "Nodes": [ - { - "Name": "28c", - "RegionID": 28, - "HostName": "derp28c.tailscale.com", - "IPv4": "95.217.2.165", - "IPv6": "2a01:4f9:c012:cd74::1", - "CanPort80": true - }, - { - "Name": "28d", - "RegionID": 28, - "HostName": "derp28d.tailscale.com", - "IPv4": "157.180.28.32", - "IPv6": "2a01:4f9:c012:2e5b::1", - "CanPort80": true - }, - { - "Name": "28b", - "RegionID": 28, - "HostName": "derp28b.tailscale.com", - "IPv4": "65.109.143.62", - "IPv6": "2a01:4f9:c012:d55c::1", - "CanPort80": true - } - ] - }, - "3": { - "RegionID": 3, - "RegionCode": "sin", - "RegionName": "Singapore", - "Latitude": 1.3521, - "Longitude": 103.8198, - "Nodes": [ - { - "Name": "3g", - "RegionID": 3, - "HostName": "derp3g.tailscale.com", - "IPv4": "172.237.72.79", - "IPv6": "2600:3c15::2000:adff:fe08:6fab", - "CanPort80": true - }, - { - "Name": "3f", - "RegionID": 3, - "HostName": "derp3f.tailscale.com", - "IPv4": "172.237.72.8", - "IPv6": "2600:3c15::2000:53ff:fe48:a668", - "CanPort80": true - }, - { - "Name": "3h", - "RegionID": 3, - "HostName": "derp3h.tailscale.com", - "IPv4": "172.237.66.30", - "IPv6": "2600:3c15::2000:3dff:fe44:50aa", - "CanPort80": true - }, - { - "Name": "3e", - "RegionID": 3, - "HostName": "derp3e.tailscale.com", - "IPv4": "172.237.72.43", - "IPv6": "2600:3c15::2000:6cff:fee4:d799", - "CanPort80": true - } - ] - }, - "4": { - "RegionID": 4, - "RegionCode": "fra", - "RegionName": "Frankfurt", - "Latitude": 50.1109, - "Longitude": 8.6821, - "Nodes": [ - { - "Name": "4h", - "RegionID": 4, - "HostName": "derp4h.tailscale.com", - "IPv4": "185.40.234.77", - "IPv6": "2a00:dd80:20::bcf", - "CanPort80": true - }, - { - "Name": "4g", - "RegionID": 4, - "HostName": "derp4g.tailscale.com", - "IPv4": "185.40.234.113", - "IPv6": "2a00:dd80:20::8f", - "CanPort80": true - }, - { - "Name": "4i", - "RegionID": 4, - "HostName": "derp4i.tailscale.com", - "IPv4": "185.40.234.53", - "IPv6": "2a00:dd80:20::8a6", - "CanPort80": true - }, - { - "Name": "4f", - "RegionID": 4, - "HostName": "derp4f.tailscale.com", - "IPv4": "185.40.234.219", - "IPv6": "2a00:dd80:20::a25", - "CanPort80": true - } - ] - }, - "5": { - "RegionID": 5, - "RegionCode": "syd", - "RegionName": "Sydney", - "Latitude": -33.867778, - "Longitude": 151.21, - "Nodes": [ - { - "Name": "5f", - "RegionID": 5, - "HostName": "derp5f.tailscale.com", - "IPv4": "172.105.166.103", - "IPv6": "2400:8907::2000:ccff:fe1f:80da", - "CanPort80": true - }, - { - "Name": "5g", - "RegionID": 5, - "HostName": "derp5g.tailscale.com", - "IPv4": "172.105.169.57", - "IPv6": "2400:8907::2000:2fff:fea7:57f4", - "CanPort80": true - }, - { - "Name": "5e", - "RegionID": 5, - "HostName": "derp5e.tailscale.com", - "IPv4": "172.105.179.230", - "IPv6": "2400:8907::2000:ceff:fe8d:4f4e", - "CanPort80": true - } - ] - }, - "6": { - "RegionID": 6, - "RegionCode": "blr", - "RegionName": "Bengaluru", - "Latitude": 12.9716, - "Longitude": 77.5946, - "Nodes": [ - { - "Name": "6a", - "RegionID": 6, - "HostName": "derp6.tailscale.com", - "IPv4": "68.183.90.120", - "IPv6": "2400:6180:100:d0::982:d001", - "CanPort80": true - } - ] - }, - "7": { - "RegionID": 7, - "RegionCode": "tok", - "RegionName": "Tokyo", - "Latitude": 35.6764, - "Longitude": 139.65, - "Nodes": [ - { - "Name": "7g", - "RegionID": 7, - "HostName": "derp7g.tailscale.com", - "IPv4": "172.238.6.179", - "IPv6": "2600:3c18::2000:3fff:fe80:3ebd", - "CanPort80": true - }, - { - "Name": "7f", - "RegionID": 7, - "HostName": "derp7f.tailscale.com", - "IPv4": "172.238.6.34", - "IPv6": "2600:3c18::2000:acff:fe8e:3ed5", - "CanPort80": true - }, - { - "Name": "7h", - "RegionID": 7, - "HostName": "derp7h.tailscale.com", - "IPv4": "172.237.28.183", - "IPv6": "2600:3c18::2000:b1ff:fea9:4560", - "CanPort80": true - }, - { - "Name": "7e", - "RegionID": 7, - "HostName": "derp7e.tailscale.com", - "IPv4": "172.238.6.180", - "IPv6": "2600:3c18::2000:60ff:fe0f:6e83", - "STUNOnly": true, - "CanPort80": true - } - ] - }, - "8": { - "RegionID": 8, - "RegionCode": "lhr", - "RegionName": "London", - "Latitude": 51.5072, - "Longitude": 0.1276, - "Nodes": [ - { - "Name": "8f", - "RegionID": 8, - "HostName": "derp8f.tailscale.com", - "IPv4": "176.58.88.183", - "IPv6": "2a00:dd80:3a::dfa", - "CanPort80": true - }, - { - "Name": "8g", - "RegionID": 8, - "HostName": "derp8g.tailscale.com", - "IPv4": "176.58.92.254", - "IPv6": "2a00:dd80:3a::ed", - "CanPort80": true - }, - { - "Name": "8e", - "RegionID": 8, - "HostName": "derp8e.tailscale.com", - "IPv4": "176.58.92.144", - "IPv6": "2a00:dd80:3a::b33", - "CanPort80": true - } - ] - }, - "9": { - "RegionID": 9, - "RegionCode": "dfw", - "RegionName": "Dallas", - "Latitude": 32.779167, - "Longitude": -96.808889, - "Nodes": [ - { - "Name": "9e", - "RegionID": 9, - "HostName": "derp9e.tailscale.com", - "IPv4": "192.73.248.83", - "IPv6": "2607:f740:100::359", - "CanPort80": true - }, - { - "Name": "9f", - "RegionID": 9, - "HostName": "derp9f.tailscale.com", - "IPv4": "209.177.156.197", - "IPv6": "2607:f740:100::cad", - "CanPort80": true - }, - { - "Name": "9d", - "RegionID": 9, - "HostName": "derp9d.tailscale.com", - "IPv4": "209.177.156.94", - "IPv6": "2607:f740:100::c05", - "CanPort80": true - } - ] - } - } - }, - "DisplayMessages": null, - "TKAEnabled": false, - "TKAHead": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", - "Domain": "kratail2tid@passkey", - "DomainAuditLogID": "", - "UserProfiles": { - "6294409699640722": { - "ID": 6294409699640722, - "LoginName": "multi-exit-router.tail78f774.ts.net", - "DisplayName": "multi-exit-router" - } - } + "PacketFilterRules": null } }, "router-a": { - "commands": { - "packet_filter_rules": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/router-a/tailscaled.sock debug localapi POST debug-packet-filter-rules", - "packet_filter_matches": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/router-a/tailscaled.sock debug localapi POST debug-packet-filter-matches" - }, "packet_filter_rules": null, - "packet_filter_matches": [], - "whois": { - "100.124.195.93": { - "peer_name": "exit-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/router-a/tailscaled.sock whois --json 100.124.195.93", - "response": null - }, - "100.116.18.24": { - "peer_name": "exit-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/router-a/tailscaled.sock whois --json 100.116.18.24", - "response": null - }, - "100.85.66.106": { - "peer_name": "exit-node", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/router-a/tailscaled.sock whois --json 100.85.66.106", - "response": null - }, - "100.107.162.14": { - "peer_name": "group-a-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/router-a/tailscaled.sock whois --json 100.107.162.14", - "response": null - }, - "100.77.135.18": { - "peer_name": "group-b-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/router-a/tailscaled.sock whois --json 100.77.135.18", - "response": null - }, - "100.105.127.107": { - "peer_name": "multi-exit-router", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/router-a/tailscaled.sock whois --json 100.105.127.107", - "response": null - }, - "100.65.172.123": { - "peer_name": "router-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/router-a/tailscaled.sock whois --json 100.65.172.123", - "response": null - }, - "100.92.142.61": { - "peer_name": "subnet-router", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/router-a/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/router-a/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/router-a/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/router-a/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/router-a/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/router-a/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/router-a/tailscaled.sock whois --json 100.90.199.68", - "response": null - } - }, "netmap": { - "SelfNode": { - "ID": 50590507314324, - "StableID": "n3kktkvuP111CNTRL", - "Name": "router-a.tail78f774.ts.net.", - "User": 50590507314324, - "Key": "nodekey:b4566fef38b3b2b15684fc8890f5fbaea4525b467825f57a02801969a5ed2b7b", - "DiscoKey": "discokey:368ba711a8394633b4626eb7cd8e6a2df90d8e554505dc032ea9658ceee0f731", - "Addresses": ["100.109.43.124/32", "fd7a:115c:a1e0::a537:2b7c/128"], - "AllowedIPs": ["100.109.43.124/32", "fd7a:115c:a1e0::a537:2b7c/128", "10.44.0.0/16"], - "Endpoints": ["77.164.248.136:34130", "10.65.0.27:34130", "172.17.0.1:34130"], - "Hostinfo": { - "Hostname": "router-a", - "RoutableIPs": ["10.44.0.0/16"], - "RequestTags": ["tag:router-a"], - "Services": [ - { "Proto": "peerapi4", "Port": 49439 }, - { "Proto": "peerapi6", "Port": 49439 }, - { "Proto": "peerapi-dns-proxy", "Port": 1 } - ] - }, - "Created": "2026-03-28T10:38:11.734910312Z", - "Tags": ["tag:router-a"], - "PrimaryRoutes": ["10.44.0.0/16"], - "MachineAuthorized": true, - "CapMap": { - "https://tailscale.com/cap/file-sharing": null, - "https://tailscale.com/cap/is-owner": null, - "https://tailscale.com/cap/ssh": null, - "https://tailscale.com/cap/tailnet-lock": null, - "probe-udp-lifetime": null, - "ssh-behavior-v1": null, - "ssh-env-vars": null, - "store-appc-routes": null, - "tailnet-display-name": ["kratail2tid@passkey"] - }, - "ComputedName": "router-a", - "ComputedNameWithHost": "router-a" - }, - "AllCaps": [ - "store-appc-routes", - "https://tailscale.com/cap/file-sharing", - "https://tailscale.com/cap/ssh", - "ssh-behavior-v1", - "probe-udp-lifetime", - "tailnet-display-name", - "https://tailscale.com/cap/is-owner", - "https://tailscale.com/cap/tailnet-lock", - "ssh-env-vars" - ], - "NodeKey": "nodekey:b4566fef38b3b2b15684fc8890f5fbaea4525b467825f57a02801969a5ed2b7b", - "MachineKey": "mkey:868ba8a45654990c1c153c5ce33ef50ddd8d769841335e42decda4462d1dcf4e", "Peers": [], - "DNS": { - "Routes": { - "tail78f774.ts.net.": null, - "ts.net.": [{ "Addr": "199.247.155.53" }, { "Addr": "2620:111:8007::53" }] - }, - "Domains": ["tail78f774.ts.net"], - "Proxied": true, - "ExitNodeFilteredSet": [".ts.net", ".tailscale.net"] - }, - "PacketFilter": [], - "PacketFilterRules": null, - "SSHPolicy": { "rules": [] }, - "CollectServices": false, - "DERPMap": { - "Regions": { - "1": { - "RegionID": 1, - "RegionCode": "nyc", - "RegionName": "New York City", - "Latitude": 40.7128, - "Longitude": -74.006, - "Nodes": [ - { - "Name": "1h", - "RegionID": 1, - "HostName": "derp1h.tailscale.com", - "IPv4": "199.38.181.93", - "IPv6": "2607:f740:f::afd", - "CanPort80": true - }, - { - "Name": "1g", - "RegionID": 1, - "HostName": "derp1g.tailscale.com", - "IPv4": "209.177.145.120", - "IPv6": "2607:f740:f::3eb", - "CanPort80": true - }, - { - "Name": "1i", - "RegionID": 1, - "HostName": "derp1i.tailscale.com", - "IPv4": "199.38.181.103", - "IPv6": "2607:f740:f::e19", - "CanPort80": true - }, - { - "Name": "1f", - "RegionID": 1, - "HostName": "derp1f.tailscale.com", - "IPv4": "199.38.181.104", - "IPv6": "2607:f740:f::bc", - "CanPort80": true - } - ] - }, - "10": { - "RegionID": 10, - "RegionCode": "sea", - "RegionName": "Seattle", - "Latitude": 47.609722, - "Longitude": -122.333056, - "Nodes": [ - { - "Name": "10c", - "RegionID": 10, - "HostName": "derp10c.tailscale.com", - "IPv4": "192.73.240.121", - "IPv6": "2607:f740:14::40c", - "CanPort80": true - }, - { - "Name": "10d", - "RegionID": 10, - "HostName": "derp10d.tailscale.com", - "IPv4": "192.73.240.132", - "IPv6": "2607:f740:14::500", - "CanPort80": true - }, - { - "Name": "10b", - "RegionID": 10, - "HostName": "derp10b.tailscale.com", - "IPv4": "192.73.240.161", - "IPv6": "2607:f740:14::61c", - "CanPort80": true - } - ] - }, - "11": { - "RegionID": 11, - "RegionCode": "sao", - "RegionName": "São Paulo", - "Latitude": -23.55, - "Longitude": -46.633333, - "Nodes": [ - { - "Name": "11f", - "RegionID": 11, - "HostName": "derp11f.tailscale.com", - "IPv4": "172.237.61.197", - "IPv6": "2600:3c0d::2000:3bff:fe44:6166", - "CanPort80": true - }, - { - "Name": "11g", - "RegionID": 11, - "HostName": "derp11g.tailscale.com", - "IPv4": "172.237.61.190", - "IPv6": "2600:3c0d::2000:62ff:febe:2e67", - "CanPort80": true - }, - { - "Name": "11e", - "RegionID": 11, - "HostName": "derp11e.tailscale.com", - "IPv4": "172.237.61.194", - "IPv6": "2600:3c0d::2000:d2ff:fe43:1790", - "CanPort80": true - } - ] - }, - "12": { - "RegionID": 12, - "RegionCode": "ord", - "RegionName": "Chicago", - "Latitude": 41.881944, - "Longitude": -87.627778, - "Nodes": [ - { - "Name": "12e", - "RegionID": 12, - "HostName": "derp12e.tailscale.com", - "IPv4": "209.177.158.15", - "IPv6": "2607:f740:e::b17", - "CanPort80": true - }, - { - "Name": "12f", - "RegionID": 12, - "HostName": "derp12f.tailscale.com", - "IPv4": "199.38.182.118", - "IPv6": "2607:f740:e::4c8", - "CanPort80": true - }, - { - "Name": "12d", - "RegionID": 12, - "HostName": "derp12d.tailscale.com", - "IPv4": "209.177.158.246", - "IPv6": "2607:f740:e::811", - "CanPort80": true - } - ] - }, - "13": { - "RegionID": 13, - "RegionCode": "den", - "RegionName": "Denver", - "Latitude": 39.7392, - "Longitude": -104.9849, - "Nodes": [ - { - "Name": "13c", - "RegionID": 13, - "HostName": "derp13c.tailscale.com", - "IPv4": "192.73.242.28", - "IPv6": "2607:f740:16::5c", - "CanPort80": true - }, - { - "Name": "13d", - "RegionID": 13, - "HostName": "derp13d.tailscale.com", - "IPv4": "192.73.242.204", - "IPv6": "2607:f740:16::c23", - "CanPort80": true - }, - { - "Name": "13b", - "RegionID": 13, - "HostName": "derp13b.tailscale.com", - "IPv4": "192.73.242.187", - "IPv6": "2607:f740:16::640", - "CanPort80": true - } - ] - }, - "14": { - "RegionID": 14, - "RegionCode": "ams", - "RegionName": "Amsterdam", - "Latitude": 52.372778, - "Longitude": 4.893611, - "Nodes": [ - { - "Name": "14c", - "RegionID": 14, - "HostName": "derp14c.tailscale.com", - "IPv4": "176.58.93.147", - "IPv6": "2a00:dd80:3c::b09", - "CanPort80": true - }, - { - "Name": "14d", - "RegionID": 14, - "HostName": "derp14d.tailscale.com", - "IPv4": "176.58.93.154", - "IPv6": "2a00:dd80:3c::3d5", - "CanPort80": true - }, - { - "Name": "14b", - "RegionID": 14, - "HostName": "derp14b.tailscale.com", - "IPv4": "176.58.93.248", - "IPv6": "2a00:dd80:3c::807", - "CanPort80": true - } - ] - }, - "15": { - "RegionID": 15, - "RegionCode": "jnb", - "RegionName": "Johannesburg", - "Latitude": -26.204444, - "Longitude": 28.045556, - "Nodes": [ - { - "Name": "15c", - "RegionID": 15, - "HostName": "derp15c.tailscale.com", - "IPv4": "102.67.165.185", - "IPv6": "2c0f:edb0:0:10::b59", - "CanPort80": true - }, - { - "Name": "15d", - "RegionID": 15, - "HostName": "derp15d.tailscale.com", - "IPv4": "102.67.165.36", - "IPv6": "2c0f:edb0:0:10::599", - "CanPort80": true - }, - { - "Name": "15b", - "RegionID": 15, - "HostName": "derp15b.tailscale.com", - "IPv4": "102.67.165.90", - "IPv6": "2c0f:edb0:0:10::963", - "CanPort80": true - } - ] - }, - "16": { - "RegionID": 16, - "RegionCode": "mia", - "RegionName": "Miami", - "Latitude": 25.78, - "Longitude": -80.21, - "Nodes": [ - { - "Name": "16c", - "RegionID": 16, - "HostName": "derp16c.tailscale.com", - "IPv4": "192.73.243.229", - "IPv6": "2607:f740:17::4e4", - "CanPort80": true - }, - { - "Name": "16d", - "RegionID": 16, - "HostName": "derp16d.tailscale.com", - "IPv4": "192.73.243.141", - "IPv6": "2607:f740:17::475", - "CanPort80": true - }, - { - "Name": "16b", - "RegionID": 16, - "HostName": "derp16b.tailscale.com", - "IPv4": "192.73.243.135", - "IPv6": "2607:f740:17::476", - "CanPort80": true - } - ] - }, - "17": { - "RegionID": 17, - "RegionCode": "lax", - "RegionName": "Los Angeles", - "Latitude": 34.05, - "Longitude": -118.25, - "Nodes": [ - { - "Name": "17c", - "RegionID": 17, - "HostName": "derp17c.tailscale.com", - "IPv4": "208.111.40.12", - "IPv6": "2607:f740:c::10", - "CanPort80": true - }, - { - "Name": "17d", - "RegionID": 17, - "HostName": "derp17d.tailscale.com", - "IPv4": "208.111.40.216", - "IPv6": "2607:f740:c::e1b", - "CanPort80": true - }, - { - "Name": "17b", - "RegionID": 17, - "HostName": "derp17b.tailscale.com", - "IPv4": "192.73.244.245", - "IPv6": "2607:f740:c::646", - "CanPort80": true - } - ] - }, - "18": { - "RegionID": 18, - "RegionCode": "par", - "RegionName": "Paris", - "Latitude": 48.856667, - "Longitude": 2.352222, - "Nodes": [ - { - "Name": "18c", - "RegionID": 18, - "HostName": "derp18c.tailscale.com", - "IPv4": "176.58.90.207", - "IPv6": "2a00:dd80:3e::c19", - "CanPort80": true - }, - { - "Name": "18d", - "RegionID": 18, - "HostName": "derp18d.tailscale.com", - "IPv4": "176.58.90.104", - "IPv6": "2a00:dd80:3e::f2e", - "CanPort80": true - }, - { - "Name": "18b", - "RegionID": 18, - "HostName": "derp18b.tailscale.com", - "IPv4": "176.58.90.147", - "IPv6": "2a00:dd80:3e::363", - "CanPort80": true - } - ] - }, - "19": { - "RegionID": 19, - "RegionCode": "mad", - "RegionName": "Madrid", - "Latitude": 40.416944, - "Longitude": -3.703333, - "Nodes": [ - { - "Name": "19c", - "RegionID": 19, - "HostName": "derp19c.tailscale.com", - "IPv4": "45.159.97.61", - "IPv6": "2a00:dd80:14:10::20", - "CanPort80": true - }, - { - "Name": "19d", - "RegionID": 19, - "HostName": "derp19d.tailscale.com", - "IPv4": "45.159.97.233", - "IPv6": "2a00:dd80:14:10::34a", - "CanPort80": true - }, - { - "Name": "19b", - "RegionID": 19, - "HostName": "derp19b.tailscale.com", - "IPv4": "45.159.97.144", - "IPv6": "2a00:dd80:14:10::335", - "CanPort80": true - } - ] - }, - "2": { - "RegionID": 2, - "RegionCode": "sfo", - "RegionName": "San Francisco", - "Latitude": 37.7775, - "Longitude": -122.416389, - "Nodes": [ - { - "Name": "2e", - "RegionID": 2, - "HostName": "derp2e.tailscale.com", - "IPv4": "192.73.252.134", - "IPv6": "2607:f740:0:3f::44c", - "CanPort80": true - }, - { - "Name": "2f", - "RegionID": 2, - "HostName": "derp2f.tailscale.com", - "IPv4": "208.111.34.178", - "IPv6": "2607:f740:0:3f::f4", - "CanPort80": true - }, - { - "Name": "2d", - "RegionID": 2, - "HostName": "derp2d.tailscale.com", - "IPv4": "192.73.252.65", - "IPv6": "2607:f740:0:3f::287", - "CanPort80": true - } - ] - }, - "20": { - "RegionID": 20, - "RegionCode": "hkg", - "RegionName": "Hong Kong", - "Latitude": 22.3193, - "Longitude": 114.1694, - "Nodes": [ - { - "Name": "20c", - "RegionID": 20, - "HostName": "derp20c.tailscale.com", - "IPv4": "205.147.105.30", - "IPv6": "2403:2500:8000:1::5fb", - "CanPort80": true - }, - { - "Name": "20d", - "RegionID": 20, - "HostName": "derp20d.tailscale.com", - "IPv4": "205.147.105.78", - "IPv6": "2403:2500:8000:1::e9a", - "CanPort80": true - }, - { - "Name": "20b", - "RegionID": 20, - "HostName": "derp20b.tailscale.com", - "IPv4": "103.6.84.152", - "IPv6": "2403:2500:8000:1::ef6", - "CanPort80": true - } - ] - }, - "21": { - "RegionID": 21, - "RegionCode": "tor", - "RegionName": "Toronto", - "Latitude": 43.741667, - "Longitude": -79.373333, - "Nodes": [ - { - "Name": "21c", - "RegionID": 21, - "HostName": "derp21c.tailscale.com", - "IPv4": "162.248.221.215", - "IPv6": "2607:f740:50::f10", - "CanPort80": true - }, - { - "Name": "21d", - "RegionID": 21, - "HostName": "derp21d.tailscale.com", - "IPv4": "162.248.221.248", - "IPv6": "2607:f740:50::ca4", - "CanPort80": true - }, - { - "Name": "21b", - "RegionID": 21, - "HostName": "derp21b.tailscale.com", - "IPv4": "162.248.221.199", - "IPv6": "2607:f740:50::1d1", - "CanPort80": true - } - ] - }, - "22": { - "RegionID": 22, - "RegionCode": "waw", - "RegionName": "Warsaw", - "Latitude": 52.23, - "Longitude": 21.011111, - "Nodes": [ - { - "Name": "22c", - "RegionID": 22, - "HostName": "derp22c.tailscale.com", - "IPv4": "45.159.98.253", - "IPv6": "2a00:dd80:40:100::3f", - "CanPort80": true - }, - { - "Name": "22d", - "RegionID": 22, - "HostName": "derp22d.tailscale.com", - "IPv4": "45.159.98.145", - "IPv6": "2a00:dd80:40:100::211", - "CanPort80": true - }, - { - "Name": "22b", - "RegionID": 22, - "HostName": "derp22b.tailscale.com", - "IPv4": "45.159.98.196", - "IPv6": "2a00:dd80:40:100::316", - "CanPort80": true - } - ] - }, - "23": { - "RegionID": 23, - "RegionCode": "dbi", - "RegionName": "Dubai", - "Latitude": 25.263056, - "Longitude": 55.297222, - "Nodes": [ - { - "Name": "23c", - "RegionID": 23, - "HostName": "derp23c.tailscale.com", - "IPv4": "185.34.3.207", - "IPv6": "2a00:dd80:3f:100::a50", - "CanPort80": true - }, - { - "Name": "23d", - "RegionID": 23, - "HostName": "derp23d.tailscale.com", - "IPv4": "185.34.3.75", - "IPv6": "2a00:dd80:3f:100::97e", - "CanPort80": true - }, - { - "Name": "23b", - "RegionID": 23, - "HostName": "derp23b.tailscale.com", - "IPv4": "185.34.3.232", - "IPv6": "2a00:dd80:3f:100::76f", - "CanPort80": true - } - ] - }, - "24": { - "RegionID": 24, - "RegionCode": "hnl", - "RegionName": "Honolulu", - "Latitude": 21.306944, - "Longitude": -157.858333, - "Nodes": [ - { - "Name": "24c", - "RegionID": 24, - "HostName": "derp24c.tailscale.com", - "IPv4": "208.83.233.233", - "IPv6": "2001:19f0:c000:c591:5400:04ff:fe26:2c5f", - "CanPort80": true - }, - { - "Name": "24d", - "RegionID": 24, - "HostName": "derp24d.tailscale.com", - "IPv4": "208.72.155.133", - "IPv6": "2001:19f0:c000:c564:5400:04ff:fe26:2ba8", - "CanPort80": true - }, - { - "Name": "24b", - "RegionID": 24, - "HostName": "derp24b.tailscale.com", - "IPv4": "208.83.234.151", - "IPv6": "2001:19f0:c000:c586:5400:04ff:fe26:2ba6", - "CanPort80": true - } - ] - }, - "25": { - "RegionID": 25, - "RegionCode": "nai", - "RegionName": "Nairobi", - "Latitude": -1.286389, - "Longitude": 36.817222, - "Nodes": [ - { - "Name": "25c", - "RegionID": 25, - "HostName": "derp25c.tailscale.com", - "IPv4": "102.67.167.37", - "IPv6": "2c0f:edb0:2000:1::2c7", - "CanPort80": true - }, - { - "Name": "25d", - "RegionID": 25, - "HostName": "derp25d.tailscale.com", - "IPv4": "102.67.167.188", - "IPv6": "2c0f:edb0:2000:1::188", - "CanPort80": true - }, - { - "Name": "25b", - "RegionID": 25, - "HostName": "derp25b.tailscale.com", - "IPv4": "102.67.167.245", - "IPv6": "2c0f:edb0:2000:1::2e9", - "CanPort80": true - } - ] - }, - "26": { - "RegionID": 26, - "RegionCode": "nue", - "RegionName": "Nuremberg", - "Latitude": 49.453889, - "Longitude": 11.0775, - "Nodes": [ - { - "Name": "26c", - "RegionID": 26, - "HostName": "derp26c.tailscale.com", - "IPv4": "49.12.193.137", - "IPv6": "2a01:4f8:1c1c:5c70::1", - "CanPort80": true - }, - { - "Name": "26d", - "RegionID": 26, - "HostName": "derp26d.tailscale.com", - "IPv4": "49.13.204.141", - "IPv6": "2a01:4f8:1c0c:7d06::1", - "CanPort80": true - }, - { - "Name": "26b", - "RegionID": 26, - "HostName": "derp26b.tailscale.com", - "IPv4": "167.235.72.200", - "IPv6": "2a01:4f8:1c1c:47b6::1", - "CanPort80": true - } - ] - }, - "27": { - "RegionID": 27, - "RegionCode": "iad", - "RegionName": "Ashburn", - "Latitude": 39.03, - "Longitude": -77.471111, - "Nodes": [ - { - "Name": "27d", - "RegionID": 27, - "HostName": "derp27d.tailscale.com", - "IPv4": "178.156.152.106", - "IPv6": "2a01:4ff:f0:3c8e::1", - "CanPort80": true - }, - { - "Name": "27c", - "RegionID": 27, - "HostName": "derp27c.tailscale.com", - "IPv4": "178.156.152.91", - "IPv6": "2a01:4ff:f0:3913::1", - "CanPort80": true - }, - { - "Name": "27e", - "RegionID": 27, - "HostName": "derp27e.tailscale.com", - "IPv4": "178.156.134.232", - "IPv6": "2a01:4ff:f0:28d4::1", - "CanPort80": true - }, - { - "Name": "27b", - "RegionID": 27, - "HostName": "derp27b.tailscale.com", - "IPv4": "5.161.218.233", - "IPv6": "2a01:4ff:f0:3db9::1", - "CanPort80": true - } - ] - }, - "28": { - "RegionID": 28, - "RegionCode": "hel", - "RegionName": "Helsinki", - "Latitude": 60.170833, - "Longitude": 24.9375, - "Nodes": [ - { - "Name": "28c", - "RegionID": 28, - "HostName": "derp28c.tailscale.com", - "IPv4": "95.217.2.165", - "IPv6": "2a01:4f9:c012:cd74::1", - "CanPort80": true - }, - { - "Name": "28d", - "RegionID": 28, - "HostName": "derp28d.tailscale.com", - "IPv4": "157.180.28.32", - "IPv6": "2a01:4f9:c012:2e5b::1", - "CanPort80": true - }, - { - "Name": "28b", - "RegionID": 28, - "HostName": "derp28b.tailscale.com", - "IPv4": "65.109.143.62", - "IPv6": "2a01:4f9:c012:d55c::1", - "CanPort80": true - } - ] - }, - "3": { - "RegionID": 3, - "RegionCode": "sin", - "RegionName": "Singapore", - "Latitude": 1.3521, - "Longitude": 103.8198, - "Nodes": [ - { - "Name": "3g", - "RegionID": 3, - "HostName": "derp3g.tailscale.com", - "IPv4": "172.237.72.79", - "IPv6": "2600:3c15::2000:adff:fe08:6fab", - "CanPort80": true - }, - { - "Name": "3f", - "RegionID": 3, - "HostName": "derp3f.tailscale.com", - "IPv4": "172.237.72.8", - "IPv6": "2600:3c15::2000:53ff:fe48:a668", - "CanPort80": true - }, - { - "Name": "3h", - "RegionID": 3, - "HostName": "derp3h.tailscale.com", - "IPv4": "172.237.66.30", - "IPv6": "2600:3c15::2000:3dff:fe44:50aa", - "CanPort80": true - }, - { - "Name": "3e", - "RegionID": 3, - "HostName": "derp3e.tailscale.com", - "IPv4": "172.237.72.43", - "IPv6": "2600:3c15::2000:6cff:fee4:d799", - "CanPort80": true - } - ] - }, - "4": { - "RegionID": 4, - "RegionCode": "fra", - "RegionName": "Frankfurt", - "Latitude": 50.1109, - "Longitude": 8.6821, - "Nodes": [ - { - "Name": "4h", - "RegionID": 4, - "HostName": "derp4h.tailscale.com", - "IPv4": "185.40.234.77", - "IPv6": "2a00:dd80:20::bcf", - "CanPort80": true - }, - { - "Name": "4g", - "RegionID": 4, - "HostName": "derp4g.tailscale.com", - "IPv4": "185.40.234.113", - "IPv6": "2a00:dd80:20::8f", - "CanPort80": true - }, - { - "Name": "4i", - "RegionID": 4, - "HostName": "derp4i.tailscale.com", - "IPv4": "185.40.234.53", - "IPv6": "2a00:dd80:20::8a6", - "CanPort80": true - }, - { - "Name": "4f", - "RegionID": 4, - "HostName": "derp4f.tailscale.com", - "IPv4": "185.40.234.219", - "IPv6": "2a00:dd80:20::a25", - "CanPort80": true - } - ] - }, - "5": { - "RegionID": 5, - "RegionCode": "syd", - "RegionName": "Sydney", - "Latitude": -33.867778, - "Longitude": 151.21, - "Nodes": [ - { - "Name": "5f", - "RegionID": 5, - "HostName": "derp5f.tailscale.com", - "IPv4": "172.105.166.103", - "IPv6": "2400:8907::2000:ccff:fe1f:80da", - "CanPort80": true - }, - { - "Name": "5g", - "RegionID": 5, - "HostName": "derp5g.tailscale.com", - "IPv4": "172.105.169.57", - "IPv6": "2400:8907::2000:2fff:fea7:57f4", - "CanPort80": true - }, - { - "Name": "5e", - "RegionID": 5, - "HostName": "derp5e.tailscale.com", - "IPv4": "172.105.179.230", - "IPv6": "2400:8907::2000:ceff:fe8d:4f4e", - "CanPort80": true - } - ] - }, - "6": { - "RegionID": 6, - "RegionCode": "blr", - "RegionName": "Bengaluru", - "Latitude": 12.9716, - "Longitude": 77.5946, - "Nodes": [ - { - "Name": "6a", - "RegionID": 6, - "HostName": "derp6.tailscale.com", - "IPv4": "68.183.90.120", - "IPv6": "2400:6180:100:d0::982:d001", - "CanPort80": true - } - ] - }, - "7": { - "RegionID": 7, - "RegionCode": "tok", - "RegionName": "Tokyo", - "Latitude": 35.6764, - "Longitude": 139.65, - "Nodes": [ - { - "Name": "7g", - "RegionID": 7, - "HostName": "derp7g.tailscale.com", - "IPv4": "172.238.6.179", - "IPv6": "2600:3c18::2000:3fff:fe80:3ebd", - "CanPort80": true - }, - { - "Name": "7f", - "RegionID": 7, - "HostName": "derp7f.tailscale.com", - "IPv4": "172.238.6.34", - "IPv6": "2600:3c18::2000:acff:fe8e:3ed5", - "CanPort80": true - }, - { - "Name": "7h", - "RegionID": 7, - "HostName": "derp7h.tailscale.com", - "IPv4": "172.237.28.183", - "IPv6": "2600:3c18::2000:b1ff:fea9:4560", - "CanPort80": true - }, - { - "Name": "7e", - "RegionID": 7, - "HostName": "derp7e.tailscale.com", - "IPv4": "172.238.6.180", - "IPv6": "2600:3c18::2000:60ff:fe0f:6e83", - "STUNOnly": true, - "CanPort80": true - } - ] - }, - "8": { - "RegionID": 8, - "RegionCode": "lhr", - "RegionName": "London", - "Latitude": 51.5072, - "Longitude": 0.1276, - "Nodes": [ - { - "Name": "8f", - "RegionID": 8, - "HostName": "derp8f.tailscale.com", - "IPv4": "176.58.88.183", - "IPv6": "2a00:dd80:3a::dfa", - "CanPort80": true - }, - { - "Name": "8g", - "RegionID": 8, - "HostName": "derp8g.tailscale.com", - "IPv4": "176.58.92.254", - "IPv6": "2a00:dd80:3a::ed", - "CanPort80": true - }, - { - "Name": "8e", - "RegionID": 8, - "HostName": "derp8e.tailscale.com", - "IPv4": "176.58.92.144", - "IPv6": "2a00:dd80:3a::b33", - "CanPort80": true - } - ] - }, - "9": { - "RegionID": 9, - "RegionCode": "dfw", - "RegionName": "Dallas", - "Latitude": 32.779167, - "Longitude": -96.808889, - "Nodes": [ - { - "Name": "9e", - "RegionID": 9, - "HostName": "derp9e.tailscale.com", - "IPv4": "192.73.248.83", - "IPv6": "2607:f740:100::359", - "CanPort80": true - }, - { - "Name": "9f", - "RegionID": 9, - "HostName": "derp9f.tailscale.com", - "IPv4": "209.177.156.197", - "IPv6": "2607:f740:100::cad", - "CanPort80": true - }, - { - "Name": "9d", - "RegionID": 9, - "HostName": "derp9d.tailscale.com", - "IPv4": "209.177.156.94", - "IPv6": "2607:f740:100::c05", - "CanPort80": true - } - ] - } - } - }, - "DisplayMessages": null, - "TKAEnabled": false, - "TKAHead": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", - "Domain": "kratail2tid@passkey", - "DomainAuditLogID": "", - "UserProfiles": { - "50590507314324": { - "ID": 50590507314324, - "LoginName": "router-a.tail78f774.ts.net", - "DisplayName": "router-a" - } - } + "PacketFilterRules": null } }, "router-b": { - "commands": { - "packet_filter_rules": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/router-b/tailscaled.sock debug localapi POST debug-packet-filter-rules", - "packet_filter_matches": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/router-b/tailscaled.sock debug localapi POST debug-packet-filter-matches" - }, "packet_filter_rules": null, - "packet_filter_matches": [], - "whois": { - "100.124.195.93": { - "peer_name": "exit-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/router-b/tailscaled.sock whois --json 100.124.195.93", - "response": null - }, - "100.116.18.24": { - "peer_name": "exit-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/router-b/tailscaled.sock whois --json 100.116.18.24", - "response": null - }, - "100.85.66.106": { - "peer_name": "exit-node", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/router-b/tailscaled.sock whois --json 100.85.66.106", - "response": null - }, - "100.107.162.14": { - "peer_name": "group-a-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/router-b/tailscaled.sock whois --json 100.107.162.14", - "response": null - }, - "100.77.135.18": { - "peer_name": "group-b-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/router-b/tailscaled.sock whois --json 100.77.135.18", - "response": null - }, - "100.105.127.107": { - "peer_name": "multi-exit-router", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/router-b/tailscaled.sock whois --json 100.105.127.107", - "response": null - }, - "100.109.43.124": { - "peer_name": "router-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/router-b/tailscaled.sock whois --json 100.109.43.124", - "response": null - }, - "100.92.142.61": { - "peer_name": "subnet-router", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/router-b/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/router-b/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/router-b/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/router-b/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/router-b/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/router-b/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/router-b/tailscaled.sock whois --json 100.90.199.68", - "response": null - } - }, "netmap": { - "SelfNode": { - "ID": 1399889648409786, - "StableID": "nPHvXBj1wB11CNTRL", - "Name": "router-b.tail78f774.ts.net.", - "User": 1399889648409786, - "Key": "nodekey:4e6d3473c516cea37bcefdf4368932c623fd91c24aee1aacc27ca8165a41ac7a", - "DiscoKey": "discokey:dd5532635b8e3ddf25186e36671c16dd17c005c8b6a6862f4b5cc4e4f459e705", - "Addresses": ["100.65.172.123/32", "fd7a:115c:a1e0::5a37:ac7c/128"], - "AllowedIPs": ["100.65.172.123/32", "fd7a:115c:a1e0::5a37:ac7c/128", "10.55.0.0/16"], - "Endpoints": ["77.164.248.136:35931", "10.65.0.27:35931", "172.17.0.1:35931"], - "Hostinfo": { - "Hostname": "router-b", - "RoutableIPs": ["10.55.0.0/16"], - "RequestTags": ["tag:router-b"], - "Services": [ - { "Proto": "peerapi4", "Port": 58804 }, - { "Proto": "peerapi6", "Port": 58804 }, - { "Proto": "peerapi-dns-proxy", "Port": 1 } - ] - }, - "Created": "2026-03-28T10:38:15.42735258Z", - "Tags": ["tag:router-b"], - "PrimaryRoutes": ["10.55.0.0/16"], - "MachineAuthorized": true, - "CapMap": { - "https://tailscale.com/cap/file-sharing": null, - "https://tailscale.com/cap/is-owner": null, - "https://tailscale.com/cap/ssh": null, - "https://tailscale.com/cap/tailnet-lock": null, - "probe-udp-lifetime": null, - "ssh-behavior-v1": null, - "ssh-env-vars": null, - "store-appc-routes": null, - "tailnet-display-name": ["kratail2tid@passkey"] - }, - "ComputedName": "router-b", - "ComputedNameWithHost": "router-b" - }, - "AllCaps": [ - "https://tailscale.com/cap/is-owner", - "https://tailscale.com/cap/ssh", - "https://tailscale.com/cap/tailnet-lock", - "https://tailscale.com/cap/file-sharing", - "tailnet-display-name", - "probe-udp-lifetime", - "ssh-env-vars", - "store-appc-routes", - "ssh-behavior-v1" - ], - "NodeKey": "nodekey:4e6d3473c516cea37bcefdf4368932c623fd91c24aee1aacc27ca8165a41ac7a", - "MachineKey": "mkey:d040ca033391d3dedae7b2ad7ec3334646cda7aeca501780bdaa37addec3c228", "Peers": [], - "DNS": { - "Routes": { - "tail78f774.ts.net.": null, - "ts.net.": [{ "Addr": "199.247.155.53" }, { "Addr": "2620:111:8007::53" }] - }, - "Domains": ["tail78f774.ts.net"], - "Proxied": true, - "ExitNodeFilteredSet": [".ts.net", ".tailscale.net"] - }, - "PacketFilter": [], - "PacketFilterRules": null, - "SSHPolicy": { "rules": [] }, - "CollectServices": false, - "DERPMap": { - "Regions": { - "1": { - "RegionID": 1, - "RegionCode": "nyc", - "RegionName": "New York City", - "Latitude": 40.7128, - "Longitude": -74.006, - "Nodes": [ - { - "Name": "1h", - "RegionID": 1, - "HostName": "derp1h.tailscale.com", - "IPv4": "199.38.181.93", - "IPv6": "2607:f740:f::afd", - "CanPort80": true - }, - { - "Name": "1g", - "RegionID": 1, - "HostName": "derp1g.tailscale.com", - "IPv4": "209.177.145.120", - "IPv6": "2607:f740:f::3eb", - "CanPort80": true - }, - { - "Name": "1i", - "RegionID": 1, - "HostName": "derp1i.tailscale.com", - "IPv4": "199.38.181.103", - "IPv6": "2607:f740:f::e19", - "CanPort80": true - }, - { - "Name": "1f", - "RegionID": 1, - "HostName": "derp1f.tailscale.com", - "IPv4": "199.38.181.104", - "IPv6": "2607:f740:f::bc", - "CanPort80": true - } - ] - }, - "10": { - "RegionID": 10, - "RegionCode": "sea", - "RegionName": "Seattle", - "Latitude": 47.609722, - "Longitude": -122.333056, - "Nodes": [ - { - "Name": "10c", - "RegionID": 10, - "HostName": "derp10c.tailscale.com", - "IPv4": "192.73.240.121", - "IPv6": "2607:f740:14::40c", - "CanPort80": true - }, - { - "Name": "10d", - "RegionID": 10, - "HostName": "derp10d.tailscale.com", - "IPv4": "192.73.240.132", - "IPv6": "2607:f740:14::500", - "CanPort80": true - }, - { - "Name": "10b", - "RegionID": 10, - "HostName": "derp10b.tailscale.com", - "IPv4": "192.73.240.161", - "IPv6": "2607:f740:14::61c", - "CanPort80": true - } - ] - }, - "11": { - "RegionID": 11, - "RegionCode": "sao", - "RegionName": "São Paulo", - "Latitude": -23.55, - "Longitude": -46.633333, - "Nodes": [ - { - "Name": "11f", - "RegionID": 11, - "HostName": "derp11f.tailscale.com", - "IPv4": "172.237.61.197", - "IPv6": "2600:3c0d::2000:3bff:fe44:6166", - "CanPort80": true - }, - { - "Name": "11g", - "RegionID": 11, - "HostName": "derp11g.tailscale.com", - "IPv4": "172.237.61.190", - "IPv6": "2600:3c0d::2000:62ff:febe:2e67", - "CanPort80": true - }, - { - "Name": "11e", - "RegionID": 11, - "HostName": "derp11e.tailscale.com", - "IPv4": "172.237.61.194", - "IPv6": "2600:3c0d::2000:d2ff:fe43:1790", - "CanPort80": true - } - ] - }, - "12": { - "RegionID": 12, - "RegionCode": "ord", - "RegionName": "Chicago", - "Latitude": 41.881944, - "Longitude": -87.627778, - "Nodes": [ - { - "Name": "12e", - "RegionID": 12, - "HostName": "derp12e.tailscale.com", - "IPv4": "209.177.158.15", - "IPv6": "2607:f740:e::b17", - "CanPort80": true - }, - { - "Name": "12f", - "RegionID": 12, - "HostName": "derp12f.tailscale.com", - "IPv4": "199.38.182.118", - "IPv6": "2607:f740:e::4c8", - "CanPort80": true - }, - { - "Name": "12d", - "RegionID": 12, - "HostName": "derp12d.tailscale.com", - "IPv4": "209.177.158.246", - "IPv6": "2607:f740:e::811", - "CanPort80": true - } - ] - }, - "13": { - "RegionID": 13, - "RegionCode": "den", - "RegionName": "Denver", - "Latitude": 39.7392, - "Longitude": -104.9849, - "Nodes": [ - { - "Name": "13c", - "RegionID": 13, - "HostName": "derp13c.tailscale.com", - "IPv4": "192.73.242.28", - "IPv6": "2607:f740:16::5c", - "CanPort80": true - }, - { - "Name": "13d", - "RegionID": 13, - "HostName": "derp13d.tailscale.com", - "IPv4": "192.73.242.204", - "IPv6": "2607:f740:16::c23", - "CanPort80": true - }, - { - "Name": "13b", - "RegionID": 13, - "HostName": "derp13b.tailscale.com", - "IPv4": "192.73.242.187", - "IPv6": "2607:f740:16::640", - "CanPort80": true - } - ] - }, - "14": { - "RegionID": 14, - "RegionCode": "ams", - "RegionName": "Amsterdam", - "Latitude": 52.372778, - "Longitude": 4.893611, - "Nodes": [ - { - "Name": "14c", - "RegionID": 14, - "HostName": "derp14c.tailscale.com", - "IPv4": "176.58.93.147", - "IPv6": "2a00:dd80:3c::b09", - "CanPort80": true - }, - { - "Name": "14d", - "RegionID": 14, - "HostName": "derp14d.tailscale.com", - "IPv4": "176.58.93.154", - "IPv6": "2a00:dd80:3c::3d5", - "CanPort80": true - }, - { - "Name": "14b", - "RegionID": 14, - "HostName": "derp14b.tailscale.com", - "IPv4": "176.58.93.248", - "IPv6": "2a00:dd80:3c::807", - "CanPort80": true - } - ] - }, - "15": { - "RegionID": 15, - "RegionCode": "jnb", - "RegionName": "Johannesburg", - "Latitude": -26.204444, - "Longitude": 28.045556, - "Nodes": [ - { - "Name": "15c", - "RegionID": 15, - "HostName": "derp15c.tailscale.com", - "IPv4": "102.67.165.185", - "IPv6": "2c0f:edb0:0:10::b59", - "CanPort80": true - }, - { - "Name": "15d", - "RegionID": 15, - "HostName": "derp15d.tailscale.com", - "IPv4": "102.67.165.36", - "IPv6": "2c0f:edb0:0:10::599", - "CanPort80": true - }, - { - "Name": "15b", - "RegionID": 15, - "HostName": "derp15b.tailscale.com", - "IPv4": "102.67.165.90", - "IPv6": "2c0f:edb0:0:10::963", - "CanPort80": true - } - ] - }, - "16": { - "RegionID": 16, - "RegionCode": "mia", - "RegionName": "Miami", - "Latitude": 25.78, - "Longitude": -80.21, - "Nodes": [ - { - "Name": "16c", - "RegionID": 16, - "HostName": "derp16c.tailscale.com", - "IPv4": "192.73.243.229", - "IPv6": "2607:f740:17::4e4", - "CanPort80": true - }, - { - "Name": "16d", - "RegionID": 16, - "HostName": "derp16d.tailscale.com", - "IPv4": "192.73.243.141", - "IPv6": "2607:f740:17::475", - "CanPort80": true - }, - { - "Name": "16b", - "RegionID": 16, - "HostName": "derp16b.tailscale.com", - "IPv4": "192.73.243.135", - "IPv6": "2607:f740:17::476", - "CanPort80": true - } - ] - }, - "17": { - "RegionID": 17, - "RegionCode": "lax", - "RegionName": "Los Angeles", - "Latitude": 34.05, - "Longitude": -118.25, - "Nodes": [ - { - "Name": "17c", - "RegionID": 17, - "HostName": "derp17c.tailscale.com", - "IPv4": "208.111.40.12", - "IPv6": "2607:f740:c::10", - "CanPort80": true - }, - { - "Name": "17d", - "RegionID": 17, - "HostName": "derp17d.tailscale.com", - "IPv4": "208.111.40.216", - "IPv6": "2607:f740:c::e1b", - "CanPort80": true - }, - { - "Name": "17b", - "RegionID": 17, - "HostName": "derp17b.tailscale.com", - "IPv4": "192.73.244.245", - "IPv6": "2607:f740:c::646", - "CanPort80": true - } - ] - }, - "18": { - "RegionID": 18, - "RegionCode": "par", - "RegionName": "Paris", - "Latitude": 48.856667, - "Longitude": 2.352222, - "Nodes": [ - { - "Name": "18c", - "RegionID": 18, - "HostName": "derp18c.tailscale.com", - "IPv4": "176.58.90.207", - "IPv6": "2a00:dd80:3e::c19", - "CanPort80": true - }, - { - "Name": "18d", - "RegionID": 18, - "HostName": "derp18d.tailscale.com", - "IPv4": "176.58.90.104", - "IPv6": "2a00:dd80:3e::f2e", - "CanPort80": true - }, - { - "Name": "18b", - "RegionID": 18, - "HostName": "derp18b.tailscale.com", - "IPv4": "176.58.90.147", - "IPv6": "2a00:dd80:3e::363", - "CanPort80": true - } - ] - }, - "19": { - "RegionID": 19, - "RegionCode": "mad", - "RegionName": "Madrid", - "Latitude": 40.416944, - "Longitude": -3.703333, - "Nodes": [ - { - "Name": "19c", - "RegionID": 19, - "HostName": "derp19c.tailscale.com", - "IPv4": "45.159.97.61", - "IPv6": "2a00:dd80:14:10::20", - "CanPort80": true - }, - { - "Name": "19d", - "RegionID": 19, - "HostName": "derp19d.tailscale.com", - "IPv4": "45.159.97.233", - "IPv6": "2a00:dd80:14:10::34a", - "CanPort80": true - }, - { - "Name": "19b", - "RegionID": 19, - "HostName": "derp19b.tailscale.com", - "IPv4": "45.159.97.144", - "IPv6": "2a00:dd80:14:10::335", - "CanPort80": true - } - ] - }, - "2": { - "RegionID": 2, - "RegionCode": "sfo", - "RegionName": "San Francisco", - "Latitude": 37.7775, - "Longitude": -122.416389, - "Nodes": [ - { - "Name": "2e", - "RegionID": 2, - "HostName": "derp2e.tailscale.com", - "IPv4": "192.73.252.134", - "IPv6": "2607:f740:0:3f::44c", - "CanPort80": true - }, - { - "Name": "2f", - "RegionID": 2, - "HostName": "derp2f.tailscale.com", - "IPv4": "208.111.34.178", - "IPv6": "2607:f740:0:3f::f4", - "CanPort80": true - }, - { - "Name": "2d", - "RegionID": 2, - "HostName": "derp2d.tailscale.com", - "IPv4": "192.73.252.65", - "IPv6": "2607:f740:0:3f::287", - "CanPort80": true - } - ] - }, - "20": { - "RegionID": 20, - "RegionCode": "hkg", - "RegionName": "Hong Kong", - "Latitude": 22.3193, - "Longitude": 114.1694, - "Nodes": [ - { - "Name": "20c", - "RegionID": 20, - "HostName": "derp20c.tailscale.com", - "IPv4": "205.147.105.30", - "IPv6": "2403:2500:8000:1::5fb", - "CanPort80": true - }, - { - "Name": "20d", - "RegionID": 20, - "HostName": "derp20d.tailscale.com", - "IPv4": "205.147.105.78", - "IPv6": "2403:2500:8000:1::e9a", - "CanPort80": true - }, - { - "Name": "20b", - "RegionID": 20, - "HostName": "derp20b.tailscale.com", - "IPv4": "103.6.84.152", - "IPv6": "2403:2500:8000:1::ef6", - "CanPort80": true - } - ] - }, - "21": { - "RegionID": 21, - "RegionCode": "tor", - "RegionName": "Toronto", - "Latitude": 43.741667, - "Longitude": -79.373333, - "Nodes": [ - { - "Name": "21c", - "RegionID": 21, - "HostName": "derp21c.tailscale.com", - "IPv4": "162.248.221.215", - "IPv6": "2607:f740:50::f10", - "CanPort80": true - }, - { - "Name": "21d", - "RegionID": 21, - "HostName": "derp21d.tailscale.com", - "IPv4": "162.248.221.248", - "IPv6": "2607:f740:50::ca4", - "CanPort80": true - }, - { - "Name": "21b", - "RegionID": 21, - "HostName": "derp21b.tailscale.com", - "IPv4": "162.248.221.199", - "IPv6": "2607:f740:50::1d1", - "CanPort80": true - } - ] - }, - "22": { - "RegionID": 22, - "RegionCode": "waw", - "RegionName": "Warsaw", - "Latitude": 52.23, - "Longitude": 21.011111, - "Nodes": [ - { - "Name": "22c", - "RegionID": 22, - "HostName": "derp22c.tailscale.com", - "IPv4": "45.159.98.253", - "IPv6": "2a00:dd80:40:100::3f", - "CanPort80": true - }, - { - "Name": "22d", - "RegionID": 22, - "HostName": "derp22d.tailscale.com", - "IPv4": "45.159.98.145", - "IPv6": "2a00:dd80:40:100::211", - "CanPort80": true - }, - { - "Name": "22b", - "RegionID": 22, - "HostName": "derp22b.tailscale.com", - "IPv4": "45.159.98.196", - "IPv6": "2a00:dd80:40:100::316", - "CanPort80": true - } - ] - }, - "23": { - "RegionID": 23, - "RegionCode": "dbi", - "RegionName": "Dubai", - "Latitude": 25.263056, - "Longitude": 55.297222, - "Nodes": [ - { - "Name": "23c", - "RegionID": 23, - "HostName": "derp23c.tailscale.com", - "IPv4": "185.34.3.207", - "IPv6": "2a00:dd80:3f:100::a50", - "CanPort80": true - }, - { - "Name": "23d", - "RegionID": 23, - "HostName": "derp23d.tailscale.com", - "IPv4": "185.34.3.75", - "IPv6": "2a00:dd80:3f:100::97e", - "CanPort80": true - }, - { - "Name": "23b", - "RegionID": 23, - "HostName": "derp23b.tailscale.com", - "IPv4": "185.34.3.232", - "IPv6": "2a00:dd80:3f:100::76f", - "CanPort80": true - } - ] - }, - "24": { - "RegionID": 24, - "RegionCode": "hnl", - "RegionName": "Honolulu", - "Latitude": 21.306944, - "Longitude": -157.858333, - "Nodes": [ - { - "Name": "24c", - "RegionID": 24, - "HostName": "derp24c.tailscale.com", - "IPv4": "208.83.233.233", - "IPv6": "2001:19f0:c000:c591:5400:04ff:fe26:2c5f", - "CanPort80": true - }, - { - "Name": "24d", - "RegionID": 24, - "HostName": "derp24d.tailscale.com", - "IPv4": "208.72.155.133", - "IPv6": "2001:19f0:c000:c564:5400:04ff:fe26:2ba8", - "CanPort80": true - }, - { - "Name": "24b", - "RegionID": 24, - "HostName": "derp24b.tailscale.com", - "IPv4": "208.83.234.151", - "IPv6": "2001:19f0:c000:c586:5400:04ff:fe26:2ba6", - "CanPort80": true - } - ] - }, - "25": { - "RegionID": 25, - "RegionCode": "nai", - "RegionName": "Nairobi", - "Latitude": -1.286389, - "Longitude": 36.817222, - "Nodes": [ - { - "Name": "25c", - "RegionID": 25, - "HostName": "derp25c.tailscale.com", - "IPv4": "102.67.167.37", - "IPv6": "2c0f:edb0:2000:1::2c7", - "CanPort80": true - }, - { - "Name": "25d", - "RegionID": 25, - "HostName": "derp25d.tailscale.com", - "IPv4": "102.67.167.188", - "IPv6": "2c0f:edb0:2000:1::188", - "CanPort80": true - }, - { - "Name": "25b", - "RegionID": 25, - "HostName": "derp25b.tailscale.com", - "IPv4": "102.67.167.245", - "IPv6": "2c0f:edb0:2000:1::2e9", - "CanPort80": true - } - ] - }, - "26": { - "RegionID": 26, - "RegionCode": "nue", - "RegionName": "Nuremberg", - "Latitude": 49.453889, - "Longitude": 11.0775, - "Nodes": [ - { - "Name": "26c", - "RegionID": 26, - "HostName": "derp26c.tailscale.com", - "IPv4": "49.12.193.137", - "IPv6": "2a01:4f8:1c1c:5c70::1", - "CanPort80": true - }, - { - "Name": "26d", - "RegionID": 26, - "HostName": "derp26d.tailscale.com", - "IPv4": "49.13.204.141", - "IPv6": "2a01:4f8:1c0c:7d06::1", - "CanPort80": true - }, - { - "Name": "26b", - "RegionID": 26, - "HostName": "derp26b.tailscale.com", - "IPv4": "167.235.72.200", - "IPv6": "2a01:4f8:1c1c:47b6::1", - "CanPort80": true - } - ] - }, - "27": { - "RegionID": 27, - "RegionCode": "iad", - "RegionName": "Ashburn", - "Latitude": 39.03, - "Longitude": -77.471111, - "Nodes": [ - { - "Name": "27d", - "RegionID": 27, - "HostName": "derp27d.tailscale.com", - "IPv4": "178.156.152.106", - "IPv6": "2a01:4ff:f0:3c8e::1", - "CanPort80": true - }, - { - "Name": "27c", - "RegionID": 27, - "HostName": "derp27c.tailscale.com", - "IPv4": "178.156.152.91", - "IPv6": "2a01:4ff:f0:3913::1", - "CanPort80": true - }, - { - "Name": "27e", - "RegionID": 27, - "HostName": "derp27e.tailscale.com", - "IPv4": "178.156.134.232", - "IPv6": "2a01:4ff:f0:28d4::1", - "CanPort80": true - }, - { - "Name": "27b", - "RegionID": 27, - "HostName": "derp27b.tailscale.com", - "IPv4": "5.161.218.233", - "IPv6": "2a01:4ff:f0:3db9::1", - "CanPort80": true - } - ] - }, - "28": { - "RegionID": 28, - "RegionCode": "hel", - "RegionName": "Helsinki", - "Latitude": 60.170833, - "Longitude": 24.9375, - "Nodes": [ - { - "Name": "28c", - "RegionID": 28, - "HostName": "derp28c.tailscale.com", - "IPv4": "95.217.2.165", - "IPv6": "2a01:4f9:c012:cd74::1", - "CanPort80": true - }, - { - "Name": "28d", - "RegionID": 28, - "HostName": "derp28d.tailscale.com", - "IPv4": "157.180.28.32", - "IPv6": "2a01:4f9:c012:2e5b::1", - "CanPort80": true - }, - { - "Name": "28b", - "RegionID": 28, - "HostName": "derp28b.tailscale.com", - "IPv4": "65.109.143.62", - "IPv6": "2a01:4f9:c012:d55c::1", - "CanPort80": true - } - ] - }, - "3": { - "RegionID": 3, - "RegionCode": "sin", - "RegionName": "Singapore", - "Latitude": 1.3521, - "Longitude": 103.8198, - "Nodes": [ - { - "Name": "3g", - "RegionID": 3, - "HostName": "derp3g.tailscale.com", - "IPv4": "172.237.72.79", - "IPv6": "2600:3c15::2000:adff:fe08:6fab", - "CanPort80": true - }, - { - "Name": "3f", - "RegionID": 3, - "HostName": "derp3f.tailscale.com", - "IPv4": "172.237.72.8", - "IPv6": "2600:3c15::2000:53ff:fe48:a668", - "CanPort80": true - }, - { - "Name": "3h", - "RegionID": 3, - "HostName": "derp3h.tailscale.com", - "IPv4": "172.237.66.30", - "IPv6": "2600:3c15::2000:3dff:fe44:50aa", - "CanPort80": true - }, - { - "Name": "3e", - "RegionID": 3, - "HostName": "derp3e.tailscale.com", - "IPv4": "172.237.72.43", - "IPv6": "2600:3c15::2000:6cff:fee4:d799", - "CanPort80": true - } - ] - }, - "4": { - "RegionID": 4, - "RegionCode": "fra", - "RegionName": "Frankfurt", - "Latitude": 50.1109, - "Longitude": 8.6821, - "Nodes": [ - { - "Name": "4h", - "RegionID": 4, - "HostName": "derp4h.tailscale.com", - "IPv4": "185.40.234.77", - "IPv6": "2a00:dd80:20::bcf", - "CanPort80": true - }, - { - "Name": "4g", - "RegionID": 4, - "HostName": "derp4g.tailscale.com", - "IPv4": "185.40.234.113", - "IPv6": "2a00:dd80:20::8f", - "CanPort80": true - }, - { - "Name": "4i", - "RegionID": 4, - "HostName": "derp4i.tailscale.com", - "IPv4": "185.40.234.53", - "IPv6": "2a00:dd80:20::8a6", - "CanPort80": true - }, - { - "Name": "4f", - "RegionID": 4, - "HostName": "derp4f.tailscale.com", - "IPv4": "185.40.234.219", - "IPv6": "2a00:dd80:20::a25", - "CanPort80": true - } - ] - }, - "5": { - "RegionID": 5, - "RegionCode": "syd", - "RegionName": "Sydney", - "Latitude": -33.867778, - "Longitude": 151.21, - "Nodes": [ - { - "Name": "5f", - "RegionID": 5, - "HostName": "derp5f.tailscale.com", - "IPv4": "172.105.166.103", - "IPv6": "2400:8907::2000:ccff:fe1f:80da", - "CanPort80": true - }, - { - "Name": "5g", - "RegionID": 5, - "HostName": "derp5g.tailscale.com", - "IPv4": "172.105.169.57", - "IPv6": "2400:8907::2000:2fff:fea7:57f4", - "CanPort80": true - }, - { - "Name": "5e", - "RegionID": 5, - "HostName": "derp5e.tailscale.com", - "IPv4": "172.105.179.230", - "IPv6": "2400:8907::2000:ceff:fe8d:4f4e", - "CanPort80": true - } - ] - }, - "6": { - "RegionID": 6, - "RegionCode": "blr", - "RegionName": "Bengaluru", - "Latitude": 12.9716, - "Longitude": 77.5946, - "Nodes": [ - { - "Name": "6a", - "RegionID": 6, - "HostName": "derp6.tailscale.com", - "IPv4": "68.183.90.120", - "IPv6": "2400:6180:100:d0::982:d001", - "CanPort80": true - } - ] - }, - "7": { - "RegionID": 7, - "RegionCode": "tok", - "RegionName": "Tokyo", - "Latitude": 35.6764, - "Longitude": 139.65, - "Nodes": [ - { - "Name": "7g", - "RegionID": 7, - "HostName": "derp7g.tailscale.com", - "IPv4": "172.238.6.179", - "IPv6": "2600:3c18::2000:3fff:fe80:3ebd", - "CanPort80": true - }, - { - "Name": "7f", - "RegionID": 7, - "HostName": "derp7f.tailscale.com", - "IPv4": "172.238.6.34", - "IPv6": "2600:3c18::2000:acff:fe8e:3ed5", - "CanPort80": true - }, - { - "Name": "7h", - "RegionID": 7, - "HostName": "derp7h.tailscale.com", - "IPv4": "172.237.28.183", - "IPv6": "2600:3c18::2000:b1ff:fea9:4560", - "CanPort80": true - }, - { - "Name": "7e", - "RegionID": 7, - "HostName": "derp7e.tailscale.com", - "IPv4": "172.238.6.180", - "IPv6": "2600:3c18::2000:60ff:fe0f:6e83", - "STUNOnly": true, - "CanPort80": true - } - ] - }, - "8": { - "RegionID": 8, - "RegionCode": "lhr", - "RegionName": "London", - "Latitude": 51.5072, - "Longitude": 0.1276, - "Nodes": [ - { - "Name": "8f", - "RegionID": 8, - "HostName": "derp8f.tailscale.com", - "IPv4": "176.58.88.183", - "IPv6": "2a00:dd80:3a::dfa", - "CanPort80": true - }, - { - "Name": "8g", - "RegionID": 8, - "HostName": "derp8g.tailscale.com", - "IPv4": "176.58.92.254", - "IPv6": "2a00:dd80:3a::ed", - "CanPort80": true - }, - { - "Name": "8e", - "RegionID": 8, - "HostName": "derp8e.tailscale.com", - "IPv4": "176.58.92.144", - "IPv6": "2a00:dd80:3a::b33", - "CanPort80": true - } - ] - }, - "9": { - "RegionID": 9, - "RegionCode": "dfw", - "RegionName": "Dallas", - "Latitude": 32.779167, - "Longitude": -96.808889, - "Nodes": [ - { - "Name": "9e", - "RegionID": 9, - "HostName": "derp9e.tailscale.com", - "IPv4": "192.73.248.83", - "IPv6": "2607:f740:100::359", - "CanPort80": true - }, - { - "Name": "9f", - "RegionID": 9, - "HostName": "derp9f.tailscale.com", - "IPv4": "209.177.156.197", - "IPv6": "2607:f740:100::cad", - "CanPort80": true - }, - { - "Name": "9d", - "RegionID": 9, - "HostName": "derp9d.tailscale.com", - "IPv4": "209.177.156.94", - "IPv6": "2607:f740:100::c05", - "CanPort80": true - } - ] - } - } - }, - "DisplayMessages": null, - "TKAEnabled": false, - "TKAHead": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", - "Domain": "kratail2tid@passkey", - "DomainAuditLogID": "", - "UserProfiles": { - "1399889648409786": { - "ID": 1399889648409786, - "LoginName": "router-b.tail78f774.ts.net", - "DisplayName": "router-b" - } - } + "PacketFilterRules": 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.124.195.93": { - "peer_name": "exit-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/subnet-router/tailscaled.sock whois --json 100.124.195.93", - "response": null - }, - "100.116.18.24": { - "peer_name": "exit-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/subnet-router/tailscaled.sock whois --json 100.116.18.24", - "response": null - }, - "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.107.162.14": { - "peer_name": "group-a-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/subnet-router/tailscaled.sock whois --json 100.107.162.14", - "response": null - }, - "100.77.135.18": { - "peer_name": "group-b-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/subnet-router/tailscaled.sock whois --json 100.77.135.18", - "response": null - }, - "100.105.127.107": { - "peer_name": "multi-exit-router", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/subnet-router/tailscaled.sock whois --json 100.105.127.107", - "response": null - }, - "100.109.43.124": { - "peer_name": "router-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/subnet-router/tailscaled.sock whois --json 100.109.43.124", - "response": null - }, - "100.65.172.123": { - "peer_name": "router-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/subnet-router/tailscaled.sock whois --json 100.65.172.123", - "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 - } - }, "netmap": { - "SelfNode": { - "ID": 7489538288452506, - "StableID": "nTPEqJU2V121CNTRL", - "Name": "subnet-router.tail78f774.ts.net.", - "User": 7489538288452506, - "Key": "nodekey:887ae2351c09c3b952f1f42bdac4095ec396ebf15824a746e4193c003e9c8e3c", - "DiscoKey": "discokey:9e3167ceaf53735a2fcaa7d3a85ad3a6118274deb448326d594849275014cc56", - "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:58597", "10.65.0.27:58597", "172.17.0.1:58597"], - "Hostinfo": { - "Hostname": "subnet-router", - "RoutableIPs": ["10.33.0.0/16"], - "RequestTags": ["tag:router"], - "Services": [ - { "Proto": "peerapi4", "Port": 63250 }, - { "Proto": "peerapi6", "Port": 63250 }, - { "Proto": "peerapi-dns-proxy", "Port": 1 } - ] - }, - "Created": "2026-02-23T00:13:15.731478784Z", - "Tags": ["tag:router"], - "MachineAuthorized": true, - "CapMap": { - "https://tailscale.com/cap/file-sharing": null, - "https://tailscale.com/cap/is-owner": null, - "https://tailscale.com/cap/ssh": null, - "https://tailscale.com/cap/tailnet-lock": null, - "probe-udp-lifetime": null, - "ssh-behavior-v1": null, - "ssh-env-vars": null, - "store-appc-routes": null, - "tailnet-display-name": ["kratail2tid@passkey"] - }, - "ComputedName": "subnet-router", - "ComputedNameWithHost": "subnet-router" - }, - "AllCaps": [ - "tailnet-display-name", - "https://tailscale.com/cap/ssh", - "probe-udp-lifetime", - "store-appc-routes", - "https://tailscale.com/cap/file-sharing", - "ssh-behavior-v1", - "ssh-env-vars", - "https://tailscale.com/cap/is-owner", - "https://tailscale.com/cap/tailnet-lock" - ], - "NodeKey": "nodekey:887ae2351c09c3b952f1f42bdac4095ec396ebf15824a746e4193c003e9c8e3c", - "MachineKey": "mkey:324efa54cc51a7b4f266f6a236904c755d32b6e547a76ad3c1d1e9d348de682a", "Peers": [], - "DNS": { - "Routes": { - "tail78f774.ts.net.": null, - "ts.net.": [{ "Addr": "199.247.155.53" }, { "Addr": "2620:111:8007::53" }] - }, - "Domains": ["tail78f774.ts.net"], - "Proxied": true, - "ExitNodeFilteredSet": [".ts.net", ".tailscale.net"] - }, - "PacketFilter": [], - "PacketFilterRules": null, - "SSHPolicy": { "rules": [] }, - "CollectServices": false, - "DERPMap": { - "Regions": { - "1": { - "RegionID": 1, - "RegionCode": "nyc", - "RegionName": "New York City", - "Latitude": 40.7128, - "Longitude": -74.006, - "Nodes": [ - { - "Name": "1h", - "RegionID": 1, - "HostName": "derp1h.tailscale.com", - "IPv4": "199.38.181.93", - "IPv6": "2607:f740:f::afd", - "CanPort80": true - }, - { - "Name": "1g", - "RegionID": 1, - "HostName": "derp1g.tailscale.com", - "IPv4": "209.177.145.120", - "IPv6": "2607:f740:f::3eb", - "CanPort80": true - }, - { - "Name": "1i", - "RegionID": 1, - "HostName": "derp1i.tailscale.com", - "IPv4": "199.38.181.103", - "IPv6": "2607:f740:f::e19", - "CanPort80": true - }, - { - "Name": "1f", - "RegionID": 1, - "HostName": "derp1f.tailscale.com", - "IPv4": "199.38.181.104", - "IPv6": "2607:f740:f::bc", - "CanPort80": true - } - ] - }, - "10": { - "RegionID": 10, - "RegionCode": "sea", - "RegionName": "Seattle", - "Latitude": 47.609722, - "Longitude": -122.333056, - "Nodes": [ - { - "Name": "10c", - "RegionID": 10, - "HostName": "derp10c.tailscale.com", - "IPv4": "192.73.240.121", - "IPv6": "2607:f740:14::40c", - "CanPort80": true - }, - { - "Name": "10d", - "RegionID": 10, - "HostName": "derp10d.tailscale.com", - "IPv4": "192.73.240.132", - "IPv6": "2607:f740:14::500", - "CanPort80": true - }, - { - "Name": "10b", - "RegionID": 10, - "HostName": "derp10b.tailscale.com", - "IPv4": "192.73.240.161", - "IPv6": "2607:f740:14::61c", - "CanPort80": true - } - ] - }, - "11": { - "RegionID": 11, - "RegionCode": "sao", - "RegionName": "São Paulo", - "Latitude": -23.55, - "Longitude": -46.633333, - "Nodes": [ - { - "Name": "11f", - "RegionID": 11, - "HostName": "derp11f.tailscale.com", - "IPv4": "172.237.61.197", - "IPv6": "2600:3c0d::2000:3bff:fe44:6166", - "CanPort80": true - }, - { - "Name": "11g", - "RegionID": 11, - "HostName": "derp11g.tailscale.com", - "IPv4": "172.237.61.190", - "IPv6": "2600:3c0d::2000:62ff:febe:2e67", - "CanPort80": true - }, - { - "Name": "11e", - "RegionID": 11, - "HostName": "derp11e.tailscale.com", - "IPv4": "172.237.61.194", - "IPv6": "2600:3c0d::2000:d2ff:fe43:1790", - "CanPort80": true - } - ] - }, - "12": { - "RegionID": 12, - "RegionCode": "ord", - "RegionName": "Chicago", - "Latitude": 41.881944, - "Longitude": -87.627778, - "Nodes": [ - { - "Name": "12e", - "RegionID": 12, - "HostName": "derp12e.tailscale.com", - "IPv4": "209.177.158.15", - "IPv6": "2607:f740:e::b17", - "CanPort80": true - }, - { - "Name": "12f", - "RegionID": 12, - "HostName": "derp12f.tailscale.com", - "IPv4": "199.38.182.118", - "IPv6": "2607:f740:e::4c8", - "CanPort80": true - }, - { - "Name": "12d", - "RegionID": 12, - "HostName": "derp12d.tailscale.com", - "IPv4": "209.177.158.246", - "IPv6": "2607:f740:e::811", - "CanPort80": true - } - ] - }, - "13": { - "RegionID": 13, - "RegionCode": "den", - "RegionName": "Denver", - "Latitude": 39.7392, - "Longitude": -104.9849, - "Nodes": [ - { - "Name": "13c", - "RegionID": 13, - "HostName": "derp13c.tailscale.com", - "IPv4": "192.73.242.28", - "IPv6": "2607:f740:16::5c", - "CanPort80": true - }, - { - "Name": "13d", - "RegionID": 13, - "HostName": "derp13d.tailscale.com", - "IPv4": "192.73.242.204", - "IPv6": "2607:f740:16::c23", - "CanPort80": true - }, - { - "Name": "13b", - "RegionID": 13, - "HostName": "derp13b.tailscale.com", - "IPv4": "192.73.242.187", - "IPv6": "2607:f740:16::640", - "CanPort80": true - } - ] - }, - "14": { - "RegionID": 14, - "RegionCode": "ams", - "RegionName": "Amsterdam", - "Latitude": 52.372778, - "Longitude": 4.893611, - "Nodes": [ - { - "Name": "14c", - "RegionID": 14, - "HostName": "derp14c.tailscale.com", - "IPv4": "176.58.93.147", - "IPv6": "2a00:dd80:3c::b09", - "CanPort80": true - }, - { - "Name": "14d", - "RegionID": 14, - "HostName": "derp14d.tailscale.com", - "IPv4": "176.58.93.154", - "IPv6": "2a00:dd80:3c::3d5", - "CanPort80": true - }, - { - "Name": "14b", - "RegionID": 14, - "HostName": "derp14b.tailscale.com", - "IPv4": "176.58.93.248", - "IPv6": "2a00:dd80:3c::807", - "CanPort80": true - } - ] - }, - "15": { - "RegionID": 15, - "RegionCode": "jnb", - "RegionName": "Johannesburg", - "Latitude": -26.204444, - "Longitude": 28.045556, - "Nodes": [ - { - "Name": "15c", - "RegionID": 15, - "HostName": "derp15c.tailscale.com", - "IPv4": "102.67.165.185", - "IPv6": "2c0f:edb0:0:10::b59", - "CanPort80": true - }, - { - "Name": "15d", - "RegionID": 15, - "HostName": "derp15d.tailscale.com", - "IPv4": "102.67.165.36", - "IPv6": "2c0f:edb0:0:10::599", - "CanPort80": true - }, - { - "Name": "15b", - "RegionID": 15, - "HostName": "derp15b.tailscale.com", - "IPv4": "102.67.165.90", - "IPv6": "2c0f:edb0:0:10::963", - "CanPort80": true - } - ] - }, - "16": { - "RegionID": 16, - "RegionCode": "mia", - "RegionName": "Miami", - "Latitude": 25.78, - "Longitude": -80.21, - "Nodes": [ - { - "Name": "16c", - "RegionID": 16, - "HostName": "derp16c.tailscale.com", - "IPv4": "192.73.243.229", - "IPv6": "2607:f740:17::4e4", - "CanPort80": true - }, - { - "Name": "16d", - "RegionID": 16, - "HostName": "derp16d.tailscale.com", - "IPv4": "192.73.243.141", - "IPv6": "2607:f740:17::475", - "CanPort80": true - }, - { - "Name": "16b", - "RegionID": 16, - "HostName": "derp16b.tailscale.com", - "IPv4": "192.73.243.135", - "IPv6": "2607:f740:17::476", - "CanPort80": true - } - ] - }, - "17": { - "RegionID": 17, - "RegionCode": "lax", - "RegionName": "Los Angeles", - "Latitude": 34.05, - "Longitude": -118.25, - "Nodes": [ - { - "Name": "17c", - "RegionID": 17, - "HostName": "derp17c.tailscale.com", - "IPv4": "208.111.40.12", - "IPv6": "2607:f740:c::10", - "CanPort80": true - }, - { - "Name": "17d", - "RegionID": 17, - "HostName": "derp17d.tailscale.com", - "IPv4": "208.111.40.216", - "IPv6": "2607:f740:c::e1b", - "CanPort80": true - }, - { - "Name": "17b", - "RegionID": 17, - "HostName": "derp17b.tailscale.com", - "IPv4": "192.73.244.245", - "IPv6": "2607:f740:c::646", - "CanPort80": true - } - ] - }, - "18": { - "RegionID": 18, - "RegionCode": "par", - "RegionName": "Paris", - "Latitude": 48.856667, - "Longitude": 2.352222, - "Nodes": [ - { - "Name": "18c", - "RegionID": 18, - "HostName": "derp18c.tailscale.com", - "IPv4": "176.58.90.207", - "IPv6": "2a00:dd80:3e::c19", - "CanPort80": true - }, - { - "Name": "18d", - "RegionID": 18, - "HostName": "derp18d.tailscale.com", - "IPv4": "176.58.90.104", - "IPv6": "2a00:dd80:3e::f2e", - "CanPort80": true - }, - { - "Name": "18b", - "RegionID": 18, - "HostName": "derp18b.tailscale.com", - "IPv4": "176.58.90.147", - "IPv6": "2a00:dd80:3e::363", - "CanPort80": true - } - ] - }, - "19": { - "RegionID": 19, - "RegionCode": "mad", - "RegionName": "Madrid", - "Latitude": 40.416944, - "Longitude": -3.703333, - "Nodes": [ - { - "Name": "19c", - "RegionID": 19, - "HostName": "derp19c.tailscale.com", - "IPv4": "45.159.97.61", - "IPv6": "2a00:dd80:14:10::20", - "CanPort80": true - }, - { - "Name": "19d", - "RegionID": 19, - "HostName": "derp19d.tailscale.com", - "IPv4": "45.159.97.233", - "IPv6": "2a00:dd80:14:10::34a", - "CanPort80": true - }, - { - "Name": "19b", - "RegionID": 19, - "HostName": "derp19b.tailscale.com", - "IPv4": "45.159.97.144", - "IPv6": "2a00:dd80:14:10::335", - "CanPort80": true - } - ] - }, - "2": { - "RegionID": 2, - "RegionCode": "sfo", - "RegionName": "San Francisco", - "Latitude": 37.7775, - "Longitude": -122.416389, - "Nodes": [ - { - "Name": "2e", - "RegionID": 2, - "HostName": "derp2e.tailscale.com", - "IPv4": "192.73.252.134", - "IPv6": "2607:f740:0:3f::44c", - "CanPort80": true - }, - { - "Name": "2f", - "RegionID": 2, - "HostName": "derp2f.tailscale.com", - "IPv4": "208.111.34.178", - "IPv6": "2607:f740:0:3f::f4", - "CanPort80": true - }, - { - "Name": "2d", - "RegionID": 2, - "HostName": "derp2d.tailscale.com", - "IPv4": "192.73.252.65", - "IPv6": "2607:f740:0:3f::287", - "CanPort80": true - } - ] - }, - "20": { - "RegionID": 20, - "RegionCode": "hkg", - "RegionName": "Hong Kong", - "Latitude": 22.3193, - "Longitude": 114.1694, - "Nodes": [ - { - "Name": "20c", - "RegionID": 20, - "HostName": "derp20c.tailscale.com", - "IPv4": "205.147.105.30", - "IPv6": "2403:2500:8000:1::5fb", - "CanPort80": true - }, - { - "Name": "20d", - "RegionID": 20, - "HostName": "derp20d.tailscale.com", - "IPv4": "205.147.105.78", - "IPv6": "2403:2500:8000:1::e9a", - "CanPort80": true - }, - { - "Name": "20b", - "RegionID": 20, - "HostName": "derp20b.tailscale.com", - "IPv4": "103.6.84.152", - "IPv6": "2403:2500:8000:1::ef6", - "CanPort80": true - } - ] - }, - "21": { - "RegionID": 21, - "RegionCode": "tor", - "RegionName": "Toronto", - "Latitude": 43.741667, - "Longitude": -79.373333, - "Nodes": [ - { - "Name": "21c", - "RegionID": 21, - "HostName": "derp21c.tailscale.com", - "IPv4": "162.248.221.215", - "IPv6": "2607:f740:50::f10", - "CanPort80": true - }, - { - "Name": "21d", - "RegionID": 21, - "HostName": "derp21d.tailscale.com", - "IPv4": "162.248.221.248", - "IPv6": "2607:f740:50::ca4", - "CanPort80": true - }, - { - "Name": "21b", - "RegionID": 21, - "HostName": "derp21b.tailscale.com", - "IPv4": "162.248.221.199", - "IPv6": "2607:f740:50::1d1", - "CanPort80": true - } - ] - }, - "22": { - "RegionID": 22, - "RegionCode": "waw", - "RegionName": "Warsaw", - "Latitude": 52.23, - "Longitude": 21.011111, - "Nodes": [ - { - "Name": "22c", - "RegionID": 22, - "HostName": "derp22c.tailscale.com", - "IPv4": "45.159.98.253", - "IPv6": "2a00:dd80:40:100::3f", - "CanPort80": true - }, - { - "Name": "22d", - "RegionID": 22, - "HostName": "derp22d.tailscale.com", - "IPv4": "45.159.98.145", - "IPv6": "2a00:dd80:40:100::211", - "CanPort80": true - }, - { - "Name": "22b", - "RegionID": 22, - "HostName": "derp22b.tailscale.com", - "IPv4": "45.159.98.196", - "IPv6": "2a00:dd80:40:100::316", - "CanPort80": true - } - ] - }, - "23": { - "RegionID": 23, - "RegionCode": "dbi", - "RegionName": "Dubai", - "Latitude": 25.263056, - "Longitude": 55.297222, - "Nodes": [ - { - "Name": "23c", - "RegionID": 23, - "HostName": "derp23c.tailscale.com", - "IPv4": "185.34.3.207", - "IPv6": "2a00:dd80:3f:100::a50", - "CanPort80": true - }, - { - "Name": "23d", - "RegionID": 23, - "HostName": "derp23d.tailscale.com", - "IPv4": "185.34.3.75", - "IPv6": "2a00:dd80:3f:100::97e", - "CanPort80": true - }, - { - "Name": "23b", - "RegionID": 23, - "HostName": "derp23b.tailscale.com", - "IPv4": "185.34.3.232", - "IPv6": "2a00:dd80:3f:100::76f", - "CanPort80": true - } - ] - }, - "24": { - "RegionID": 24, - "RegionCode": "hnl", - "RegionName": "Honolulu", - "Latitude": 21.306944, - "Longitude": -157.858333, - "Nodes": [ - { - "Name": "24c", - "RegionID": 24, - "HostName": "derp24c.tailscale.com", - "IPv4": "208.83.233.233", - "IPv6": "2001:19f0:c000:c591:5400:04ff:fe26:2c5f", - "CanPort80": true - }, - { - "Name": "24d", - "RegionID": 24, - "HostName": "derp24d.tailscale.com", - "IPv4": "208.72.155.133", - "IPv6": "2001:19f0:c000:c564:5400:04ff:fe26:2ba8", - "CanPort80": true - }, - { - "Name": "24b", - "RegionID": 24, - "HostName": "derp24b.tailscale.com", - "IPv4": "208.83.234.151", - "IPv6": "2001:19f0:c000:c586:5400:04ff:fe26:2ba6", - "CanPort80": true - } - ] - }, - "25": { - "RegionID": 25, - "RegionCode": "nai", - "RegionName": "Nairobi", - "Latitude": -1.286389, - "Longitude": 36.817222, - "Nodes": [ - { - "Name": "25c", - "RegionID": 25, - "HostName": "derp25c.tailscale.com", - "IPv4": "102.67.167.37", - "IPv6": "2c0f:edb0:2000:1::2c7", - "CanPort80": true - }, - { - "Name": "25d", - "RegionID": 25, - "HostName": "derp25d.tailscale.com", - "IPv4": "102.67.167.188", - "IPv6": "2c0f:edb0:2000:1::188", - "CanPort80": true - }, - { - "Name": "25b", - "RegionID": 25, - "HostName": "derp25b.tailscale.com", - "IPv4": "102.67.167.245", - "IPv6": "2c0f:edb0:2000:1::2e9", - "CanPort80": true - } - ] - }, - "26": { - "RegionID": 26, - "RegionCode": "nue", - "RegionName": "Nuremberg", - "Latitude": 49.453889, - "Longitude": 11.0775, - "Nodes": [ - { - "Name": "26c", - "RegionID": 26, - "HostName": "derp26c.tailscale.com", - "IPv4": "49.12.193.137", - "IPv6": "2a01:4f8:1c1c:5c70::1", - "CanPort80": true - }, - { - "Name": "26d", - "RegionID": 26, - "HostName": "derp26d.tailscale.com", - "IPv4": "49.13.204.141", - "IPv6": "2a01:4f8:1c0c:7d06::1", - "CanPort80": true - }, - { - "Name": "26b", - "RegionID": 26, - "HostName": "derp26b.tailscale.com", - "IPv4": "167.235.72.200", - "IPv6": "2a01:4f8:1c1c:47b6::1", - "CanPort80": true - } - ] - }, - "27": { - "RegionID": 27, - "RegionCode": "iad", - "RegionName": "Ashburn", - "Latitude": 39.03, - "Longitude": -77.471111, - "Nodes": [ - { - "Name": "27d", - "RegionID": 27, - "HostName": "derp27d.tailscale.com", - "IPv4": "178.156.152.106", - "IPv6": "2a01:4ff:f0:3c8e::1", - "CanPort80": true - }, - { - "Name": "27c", - "RegionID": 27, - "HostName": "derp27c.tailscale.com", - "IPv4": "178.156.152.91", - "IPv6": "2a01:4ff:f0:3913::1", - "CanPort80": true - }, - { - "Name": "27e", - "RegionID": 27, - "HostName": "derp27e.tailscale.com", - "IPv4": "178.156.134.232", - "IPv6": "2a01:4ff:f0:28d4::1", - "CanPort80": true - }, - { - "Name": "27b", - "RegionID": 27, - "HostName": "derp27b.tailscale.com", - "IPv4": "5.161.218.233", - "IPv6": "2a01:4ff:f0:3db9::1", - "CanPort80": true - } - ] - }, - "28": { - "RegionID": 28, - "RegionCode": "hel", - "RegionName": "Helsinki", - "Latitude": 60.170833, - "Longitude": 24.9375, - "Nodes": [ - { - "Name": "28c", - "RegionID": 28, - "HostName": "derp28c.tailscale.com", - "IPv4": "95.217.2.165", - "IPv6": "2a01:4f9:c012:cd74::1", - "CanPort80": true - }, - { - "Name": "28d", - "RegionID": 28, - "HostName": "derp28d.tailscale.com", - "IPv4": "157.180.28.32", - "IPv6": "2a01:4f9:c012:2e5b::1", - "CanPort80": true - }, - { - "Name": "28b", - "RegionID": 28, - "HostName": "derp28b.tailscale.com", - "IPv4": "65.109.143.62", - "IPv6": "2a01:4f9:c012:d55c::1", - "CanPort80": true - } - ] - }, - "3": { - "RegionID": 3, - "RegionCode": "sin", - "RegionName": "Singapore", - "Latitude": 1.3521, - "Longitude": 103.8198, - "Nodes": [ - { - "Name": "3g", - "RegionID": 3, - "HostName": "derp3g.tailscale.com", - "IPv4": "172.237.72.79", - "IPv6": "2600:3c15::2000:adff:fe08:6fab", - "CanPort80": true - }, - { - "Name": "3f", - "RegionID": 3, - "HostName": "derp3f.tailscale.com", - "IPv4": "172.237.72.8", - "IPv6": "2600:3c15::2000:53ff:fe48:a668", - "CanPort80": true - }, - { - "Name": "3h", - "RegionID": 3, - "HostName": "derp3h.tailscale.com", - "IPv4": "172.237.66.30", - "IPv6": "2600:3c15::2000:3dff:fe44:50aa", - "CanPort80": true - }, - { - "Name": "3e", - "RegionID": 3, - "HostName": "derp3e.tailscale.com", - "IPv4": "172.237.72.43", - "IPv6": "2600:3c15::2000:6cff:fee4:d799", - "CanPort80": true - } - ] - }, - "4": { - "RegionID": 4, - "RegionCode": "fra", - "RegionName": "Frankfurt", - "Latitude": 50.1109, - "Longitude": 8.6821, - "Nodes": [ - { - "Name": "4h", - "RegionID": 4, - "HostName": "derp4h.tailscale.com", - "IPv4": "185.40.234.77", - "IPv6": "2a00:dd80:20::bcf", - "CanPort80": true - }, - { - "Name": "4g", - "RegionID": 4, - "HostName": "derp4g.tailscale.com", - "IPv4": "185.40.234.113", - "IPv6": "2a00:dd80:20::8f", - "CanPort80": true - }, - { - "Name": "4i", - "RegionID": 4, - "HostName": "derp4i.tailscale.com", - "IPv4": "185.40.234.53", - "IPv6": "2a00:dd80:20::8a6", - "CanPort80": true - }, - { - "Name": "4f", - "RegionID": 4, - "HostName": "derp4f.tailscale.com", - "IPv4": "185.40.234.219", - "IPv6": "2a00:dd80:20::a25", - "CanPort80": true - } - ] - }, - "5": { - "RegionID": 5, - "RegionCode": "syd", - "RegionName": "Sydney", - "Latitude": -33.867778, - "Longitude": 151.21, - "Nodes": [ - { - "Name": "5f", - "RegionID": 5, - "HostName": "derp5f.tailscale.com", - "IPv4": "172.105.166.103", - "IPv6": "2400:8907::2000:ccff:fe1f:80da", - "CanPort80": true - }, - { - "Name": "5g", - "RegionID": 5, - "HostName": "derp5g.tailscale.com", - "IPv4": "172.105.169.57", - "IPv6": "2400:8907::2000:2fff:fea7:57f4", - "CanPort80": true - }, - { - "Name": "5e", - "RegionID": 5, - "HostName": "derp5e.tailscale.com", - "IPv4": "172.105.179.230", - "IPv6": "2400:8907::2000:ceff:fe8d:4f4e", - "CanPort80": true - } - ] - }, - "6": { - "RegionID": 6, - "RegionCode": "blr", - "RegionName": "Bengaluru", - "Latitude": 12.9716, - "Longitude": 77.5946, - "Nodes": [ - { - "Name": "6a", - "RegionID": 6, - "HostName": "derp6.tailscale.com", - "IPv4": "68.183.90.120", - "IPv6": "2400:6180:100:d0::982:d001", - "CanPort80": true - } - ] - }, - "7": { - "RegionID": 7, - "RegionCode": "tok", - "RegionName": "Tokyo", - "Latitude": 35.6764, - "Longitude": 139.65, - "Nodes": [ - { - "Name": "7g", - "RegionID": 7, - "HostName": "derp7g.tailscale.com", - "IPv4": "172.238.6.179", - "IPv6": "2600:3c18::2000:3fff:fe80:3ebd", - "CanPort80": true - }, - { - "Name": "7f", - "RegionID": 7, - "HostName": "derp7f.tailscale.com", - "IPv4": "172.238.6.34", - "IPv6": "2600:3c18::2000:acff:fe8e:3ed5", - "CanPort80": true - }, - { - "Name": "7h", - "RegionID": 7, - "HostName": "derp7h.tailscale.com", - "IPv4": "172.237.28.183", - "IPv6": "2600:3c18::2000:b1ff:fea9:4560", - "CanPort80": true - }, - { - "Name": "7e", - "RegionID": 7, - "HostName": "derp7e.tailscale.com", - "IPv4": "172.238.6.180", - "IPv6": "2600:3c18::2000:60ff:fe0f:6e83", - "STUNOnly": true, - "CanPort80": true - } - ] - }, - "8": { - "RegionID": 8, - "RegionCode": "lhr", - "RegionName": "London", - "Latitude": 51.5072, - "Longitude": 0.1276, - "Nodes": [ - { - "Name": "8f", - "RegionID": 8, - "HostName": "derp8f.tailscale.com", - "IPv4": "176.58.88.183", - "IPv6": "2a00:dd80:3a::dfa", - "CanPort80": true - }, - { - "Name": "8g", - "RegionID": 8, - "HostName": "derp8g.tailscale.com", - "IPv4": "176.58.92.254", - "IPv6": "2a00:dd80:3a::ed", - "CanPort80": true - }, - { - "Name": "8e", - "RegionID": 8, - "HostName": "derp8e.tailscale.com", - "IPv4": "176.58.92.144", - "IPv6": "2a00:dd80:3a::b33", - "CanPort80": true - } - ] - }, - "9": { - "RegionID": 9, - "RegionCode": "dfw", - "RegionName": "Dallas", - "Latitude": 32.779167, - "Longitude": -96.808889, - "Nodes": [ - { - "Name": "9e", - "RegionID": 9, - "HostName": "derp9e.tailscale.com", - "IPv4": "192.73.248.83", - "IPv6": "2607:f740:100::359", - "CanPort80": true - }, - { - "Name": "9f", - "RegionID": 9, - "HostName": "derp9f.tailscale.com", - "IPv4": "209.177.156.197", - "IPv6": "2607:f740:100::cad", - "CanPort80": true - }, - { - "Name": "9d", - "RegionID": 9, - "HostName": "derp9d.tailscale.com", - "IPv4": "209.177.156.94", - "IPv6": "2607:f740:100::c05", - "CanPort80": true - } - ] - } - } - }, - "DisplayMessages": null, - "TKAEnabled": false, - "TKAHead": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", - "Domain": "kratail2tid@passkey", - "DomainAuditLogID": "", - "UserProfiles": { - "7489538288452506": { - "ID": 7489538288452506, - "LoginName": "subnet-router.tail78f774.ts.net", - "DisplayName": "subnet-router" - } - } + "PacketFilterRules": 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.124.195.93": { - "peer_name": "exit-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-client/tailscaled.sock whois --json 100.124.195.93", - "response": null - }, - "100.116.18.24": { - "peer_name": "exit-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-client/tailscaled.sock whois --json 100.116.18.24", - "response": null - }, - "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.107.162.14": { - "peer_name": "group-a-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-client/tailscaled.sock whois --json 100.107.162.14", - "response": null - }, - "100.77.135.18": { - "peer_name": "group-b-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-client/tailscaled.sock whois --json 100.77.135.18", - "response": null - }, - "100.105.127.107": { - "peer_name": "multi-exit-router", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-client/tailscaled.sock whois --json 100.105.127.107", - "response": null - }, - "100.109.43.124": { - "peer_name": "router-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-client/tailscaled.sock whois --json 100.109.43.124", - "response": null - }, - "100.65.172.123": { - "peer_name": "router-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-client/tailscaled.sock whois --json 100.65.172.123", - "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 - } - }, "netmap": { - "SelfNode": { - "ID": 4031348162889210, - "StableID": "nf7BTTgoUY11CNTRL", - "Name": "tagged-client.tail78f774.ts.net.", - "User": 4031348162889210, - "Key": "nodekey:3011e53353e49142ea56ae11f81e0dceae0d667093d04ee086dcb1e9c5d3c844", - "DiscoKey": "discokey:64af337a7e8b61dce500da3b8f7d0a95fc6fe0e57c2f9e57b9b484a9b4acbe1e", - "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:47143", "10.65.0.27:47143", "172.17.0.1:47143"], - "Hostinfo": { - "Hostname": "tagged-client", - "RequestTags": ["tag:client"], - "Services": [ - { "Proto": "peerapi4", "Port": 41378 }, - { "Proto": "peerapi6", "Port": 41378 }, - { "Proto": "peerapi-dns-proxy", "Port": 1 } - ] - }, - "Created": "2026-02-23T00:13:11.017324028Z", - "Tags": ["tag:client"], - "MachineAuthorized": true, - "CapMap": { - "https://tailscale.com/cap/file-sharing": null, - "https://tailscale.com/cap/is-owner": null, - "https://tailscale.com/cap/ssh": null, - "https://tailscale.com/cap/tailnet-lock": null, - "probe-udp-lifetime": null, - "ssh-behavior-v1": null, - "ssh-env-vars": null, - "store-appc-routes": null, - "tailnet-display-name": ["kratail2tid@passkey"] - }, - "ComputedName": "tagged-client", - "ComputedNameWithHost": "tagged-client" - }, - "AllCaps": [ - "tailnet-display-name", - "https://tailscale.com/cap/ssh", - "https://tailscale.com/cap/is-owner", - "probe-udp-lifetime", - "https://tailscale.com/cap/file-sharing", - "ssh-behavior-v1", - "ssh-env-vars", - "store-appc-routes", - "https://tailscale.com/cap/tailnet-lock" - ], - "NodeKey": "nodekey:3011e53353e49142ea56ae11f81e0dceae0d667093d04ee086dcb1e9c5d3c844", - "MachineKey": "mkey:92af46ce21e67878315fe620545c207854ab6cec2d03adc106c50f64f9692711", "Peers": [], - "DNS": { - "Routes": { - "tail78f774.ts.net.": null, - "ts.net.": [{ "Addr": "199.247.155.53" }, { "Addr": "2620:111:8007::53" }] - }, - "Domains": ["tail78f774.ts.net"], - "Proxied": true, - "ExitNodeFilteredSet": [".ts.net", ".tailscale.net"] - }, - "PacketFilter": [], - "PacketFilterRules": null, - "SSHPolicy": { "rules": [] }, - "CollectServices": false, - "DERPMap": { - "Regions": { - "1": { - "RegionID": 1, - "RegionCode": "nyc", - "RegionName": "New York City", - "Latitude": 40.7128, - "Longitude": -74.006, - "Nodes": [ - { - "Name": "1h", - "RegionID": 1, - "HostName": "derp1h.tailscale.com", - "IPv4": "199.38.181.93", - "IPv6": "2607:f740:f::afd", - "CanPort80": true - }, - { - "Name": "1g", - "RegionID": 1, - "HostName": "derp1g.tailscale.com", - "IPv4": "209.177.145.120", - "IPv6": "2607:f740:f::3eb", - "CanPort80": true - }, - { - "Name": "1i", - "RegionID": 1, - "HostName": "derp1i.tailscale.com", - "IPv4": "199.38.181.103", - "IPv6": "2607:f740:f::e19", - "CanPort80": true - }, - { - "Name": "1f", - "RegionID": 1, - "HostName": "derp1f.tailscale.com", - "IPv4": "199.38.181.104", - "IPv6": "2607:f740:f::bc", - "CanPort80": true - } - ] - }, - "10": { - "RegionID": 10, - "RegionCode": "sea", - "RegionName": "Seattle", - "Latitude": 47.609722, - "Longitude": -122.333056, - "Nodes": [ - { - "Name": "10c", - "RegionID": 10, - "HostName": "derp10c.tailscale.com", - "IPv4": "192.73.240.121", - "IPv6": "2607:f740:14::40c", - "CanPort80": true - }, - { - "Name": "10d", - "RegionID": 10, - "HostName": "derp10d.tailscale.com", - "IPv4": "192.73.240.132", - "IPv6": "2607:f740:14::500", - "CanPort80": true - }, - { - "Name": "10b", - "RegionID": 10, - "HostName": "derp10b.tailscale.com", - "IPv4": "192.73.240.161", - "IPv6": "2607:f740:14::61c", - "CanPort80": true - } - ] - }, - "11": { - "RegionID": 11, - "RegionCode": "sao", - "RegionName": "São Paulo", - "Latitude": -23.55, - "Longitude": -46.633333, - "Nodes": [ - { - "Name": "11f", - "RegionID": 11, - "HostName": "derp11f.tailscale.com", - "IPv4": "172.237.61.197", - "IPv6": "2600:3c0d::2000:3bff:fe44:6166", - "CanPort80": true - }, - { - "Name": "11g", - "RegionID": 11, - "HostName": "derp11g.tailscale.com", - "IPv4": "172.237.61.190", - "IPv6": "2600:3c0d::2000:62ff:febe:2e67", - "CanPort80": true - }, - { - "Name": "11e", - "RegionID": 11, - "HostName": "derp11e.tailscale.com", - "IPv4": "172.237.61.194", - "IPv6": "2600:3c0d::2000:d2ff:fe43:1790", - "CanPort80": true - } - ] - }, - "12": { - "RegionID": 12, - "RegionCode": "ord", - "RegionName": "Chicago", - "Latitude": 41.881944, - "Longitude": -87.627778, - "Nodes": [ - { - "Name": "12e", - "RegionID": 12, - "HostName": "derp12e.tailscale.com", - "IPv4": "209.177.158.15", - "IPv6": "2607:f740:e::b17", - "CanPort80": true - }, - { - "Name": "12f", - "RegionID": 12, - "HostName": "derp12f.tailscale.com", - "IPv4": "199.38.182.118", - "IPv6": "2607:f740:e::4c8", - "CanPort80": true - }, - { - "Name": "12d", - "RegionID": 12, - "HostName": "derp12d.tailscale.com", - "IPv4": "209.177.158.246", - "IPv6": "2607:f740:e::811", - "CanPort80": true - } - ] - }, - "13": { - "RegionID": 13, - "RegionCode": "den", - "RegionName": "Denver", - "Latitude": 39.7392, - "Longitude": -104.9849, - "Nodes": [ - { - "Name": "13c", - "RegionID": 13, - "HostName": "derp13c.tailscale.com", - "IPv4": "192.73.242.28", - "IPv6": "2607:f740:16::5c", - "CanPort80": true - }, - { - "Name": "13d", - "RegionID": 13, - "HostName": "derp13d.tailscale.com", - "IPv4": "192.73.242.204", - "IPv6": "2607:f740:16::c23", - "CanPort80": true - }, - { - "Name": "13b", - "RegionID": 13, - "HostName": "derp13b.tailscale.com", - "IPv4": "192.73.242.187", - "IPv6": "2607:f740:16::640", - "CanPort80": true - } - ] - }, - "14": { - "RegionID": 14, - "RegionCode": "ams", - "RegionName": "Amsterdam", - "Latitude": 52.372778, - "Longitude": 4.893611, - "Nodes": [ - { - "Name": "14c", - "RegionID": 14, - "HostName": "derp14c.tailscale.com", - "IPv4": "176.58.93.147", - "IPv6": "2a00:dd80:3c::b09", - "CanPort80": true - }, - { - "Name": "14d", - "RegionID": 14, - "HostName": "derp14d.tailscale.com", - "IPv4": "176.58.93.154", - "IPv6": "2a00:dd80:3c::3d5", - "CanPort80": true - }, - { - "Name": "14b", - "RegionID": 14, - "HostName": "derp14b.tailscale.com", - "IPv4": "176.58.93.248", - "IPv6": "2a00:dd80:3c::807", - "CanPort80": true - } - ] - }, - "15": { - "RegionID": 15, - "RegionCode": "jnb", - "RegionName": "Johannesburg", - "Latitude": -26.204444, - "Longitude": 28.045556, - "Nodes": [ - { - "Name": "15c", - "RegionID": 15, - "HostName": "derp15c.tailscale.com", - "IPv4": "102.67.165.185", - "IPv6": "2c0f:edb0:0:10::b59", - "CanPort80": true - }, - { - "Name": "15d", - "RegionID": 15, - "HostName": "derp15d.tailscale.com", - "IPv4": "102.67.165.36", - "IPv6": "2c0f:edb0:0:10::599", - "CanPort80": true - }, - { - "Name": "15b", - "RegionID": 15, - "HostName": "derp15b.tailscale.com", - "IPv4": "102.67.165.90", - "IPv6": "2c0f:edb0:0:10::963", - "CanPort80": true - } - ] - }, - "16": { - "RegionID": 16, - "RegionCode": "mia", - "RegionName": "Miami", - "Latitude": 25.78, - "Longitude": -80.21, - "Nodes": [ - { - "Name": "16c", - "RegionID": 16, - "HostName": "derp16c.tailscale.com", - "IPv4": "192.73.243.229", - "IPv6": "2607:f740:17::4e4", - "CanPort80": true - }, - { - "Name": "16d", - "RegionID": 16, - "HostName": "derp16d.tailscale.com", - "IPv4": "192.73.243.141", - "IPv6": "2607:f740:17::475", - "CanPort80": true - }, - { - "Name": "16b", - "RegionID": 16, - "HostName": "derp16b.tailscale.com", - "IPv4": "192.73.243.135", - "IPv6": "2607:f740:17::476", - "CanPort80": true - } - ] - }, - "17": { - "RegionID": 17, - "RegionCode": "lax", - "RegionName": "Los Angeles", - "Latitude": 34.05, - "Longitude": -118.25, - "Nodes": [ - { - "Name": "17c", - "RegionID": 17, - "HostName": "derp17c.tailscale.com", - "IPv4": "208.111.40.12", - "IPv6": "2607:f740:c::10", - "CanPort80": true - }, - { - "Name": "17d", - "RegionID": 17, - "HostName": "derp17d.tailscale.com", - "IPv4": "208.111.40.216", - "IPv6": "2607:f740:c::e1b", - "CanPort80": true - }, - { - "Name": "17b", - "RegionID": 17, - "HostName": "derp17b.tailscale.com", - "IPv4": "192.73.244.245", - "IPv6": "2607:f740:c::646", - "CanPort80": true - } - ] - }, - "18": { - "RegionID": 18, - "RegionCode": "par", - "RegionName": "Paris", - "Latitude": 48.856667, - "Longitude": 2.352222, - "Nodes": [ - { - "Name": "18c", - "RegionID": 18, - "HostName": "derp18c.tailscale.com", - "IPv4": "176.58.90.207", - "IPv6": "2a00:dd80:3e::c19", - "CanPort80": true - }, - { - "Name": "18d", - "RegionID": 18, - "HostName": "derp18d.tailscale.com", - "IPv4": "176.58.90.104", - "IPv6": "2a00:dd80:3e::f2e", - "CanPort80": true - }, - { - "Name": "18b", - "RegionID": 18, - "HostName": "derp18b.tailscale.com", - "IPv4": "176.58.90.147", - "IPv6": "2a00:dd80:3e::363", - "CanPort80": true - } - ] - }, - "19": { - "RegionID": 19, - "RegionCode": "mad", - "RegionName": "Madrid", - "Latitude": 40.416944, - "Longitude": -3.703333, - "Nodes": [ - { - "Name": "19c", - "RegionID": 19, - "HostName": "derp19c.tailscale.com", - "IPv4": "45.159.97.61", - "IPv6": "2a00:dd80:14:10::20", - "CanPort80": true - }, - { - "Name": "19d", - "RegionID": 19, - "HostName": "derp19d.tailscale.com", - "IPv4": "45.159.97.233", - "IPv6": "2a00:dd80:14:10::34a", - "CanPort80": true - }, - { - "Name": "19b", - "RegionID": 19, - "HostName": "derp19b.tailscale.com", - "IPv4": "45.159.97.144", - "IPv6": "2a00:dd80:14:10::335", - "CanPort80": true - } - ] - }, - "2": { - "RegionID": 2, - "RegionCode": "sfo", - "RegionName": "San Francisco", - "Latitude": 37.7775, - "Longitude": -122.416389, - "Nodes": [ - { - "Name": "2e", - "RegionID": 2, - "HostName": "derp2e.tailscale.com", - "IPv4": "192.73.252.134", - "IPv6": "2607:f740:0:3f::44c", - "CanPort80": true - }, - { - "Name": "2f", - "RegionID": 2, - "HostName": "derp2f.tailscale.com", - "IPv4": "208.111.34.178", - "IPv6": "2607:f740:0:3f::f4", - "CanPort80": true - }, - { - "Name": "2d", - "RegionID": 2, - "HostName": "derp2d.tailscale.com", - "IPv4": "192.73.252.65", - "IPv6": "2607:f740:0:3f::287", - "CanPort80": true - } - ] - }, - "20": { - "RegionID": 20, - "RegionCode": "hkg", - "RegionName": "Hong Kong", - "Latitude": 22.3193, - "Longitude": 114.1694, - "Nodes": [ - { - "Name": "20c", - "RegionID": 20, - "HostName": "derp20c.tailscale.com", - "IPv4": "205.147.105.30", - "IPv6": "2403:2500:8000:1::5fb", - "CanPort80": true - }, - { - "Name": "20d", - "RegionID": 20, - "HostName": "derp20d.tailscale.com", - "IPv4": "205.147.105.78", - "IPv6": "2403:2500:8000:1::e9a", - "CanPort80": true - }, - { - "Name": "20b", - "RegionID": 20, - "HostName": "derp20b.tailscale.com", - "IPv4": "103.6.84.152", - "IPv6": "2403:2500:8000:1::ef6", - "CanPort80": true - } - ] - }, - "21": { - "RegionID": 21, - "RegionCode": "tor", - "RegionName": "Toronto", - "Latitude": 43.741667, - "Longitude": -79.373333, - "Nodes": [ - { - "Name": "21c", - "RegionID": 21, - "HostName": "derp21c.tailscale.com", - "IPv4": "162.248.221.215", - "IPv6": "2607:f740:50::f10", - "CanPort80": true - }, - { - "Name": "21d", - "RegionID": 21, - "HostName": "derp21d.tailscale.com", - "IPv4": "162.248.221.248", - "IPv6": "2607:f740:50::ca4", - "CanPort80": true - }, - { - "Name": "21b", - "RegionID": 21, - "HostName": "derp21b.tailscale.com", - "IPv4": "162.248.221.199", - "IPv6": "2607:f740:50::1d1", - "CanPort80": true - } - ] - }, - "22": { - "RegionID": 22, - "RegionCode": "waw", - "RegionName": "Warsaw", - "Latitude": 52.23, - "Longitude": 21.011111, - "Nodes": [ - { - "Name": "22c", - "RegionID": 22, - "HostName": "derp22c.tailscale.com", - "IPv4": "45.159.98.253", - "IPv6": "2a00:dd80:40:100::3f", - "CanPort80": true - }, - { - "Name": "22d", - "RegionID": 22, - "HostName": "derp22d.tailscale.com", - "IPv4": "45.159.98.145", - "IPv6": "2a00:dd80:40:100::211", - "CanPort80": true - }, - { - "Name": "22b", - "RegionID": 22, - "HostName": "derp22b.tailscale.com", - "IPv4": "45.159.98.196", - "IPv6": "2a00:dd80:40:100::316", - "CanPort80": true - } - ] - }, - "23": { - "RegionID": 23, - "RegionCode": "dbi", - "RegionName": "Dubai", - "Latitude": 25.263056, - "Longitude": 55.297222, - "Nodes": [ - { - "Name": "23c", - "RegionID": 23, - "HostName": "derp23c.tailscale.com", - "IPv4": "185.34.3.207", - "IPv6": "2a00:dd80:3f:100::a50", - "CanPort80": true - }, - { - "Name": "23d", - "RegionID": 23, - "HostName": "derp23d.tailscale.com", - "IPv4": "185.34.3.75", - "IPv6": "2a00:dd80:3f:100::97e", - "CanPort80": true - }, - { - "Name": "23b", - "RegionID": 23, - "HostName": "derp23b.tailscale.com", - "IPv4": "185.34.3.232", - "IPv6": "2a00:dd80:3f:100::76f", - "CanPort80": true - } - ] - }, - "24": { - "RegionID": 24, - "RegionCode": "hnl", - "RegionName": "Honolulu", - "Latitude": 21.306944, - "Longitude": -157.858333, - "Nodes": [ - { - "Name": "24c", - "RegionID": 24, - "HostName": "derp24c.tailscale.com", - "IPv4": "208.83.233.233", - "IPv6": "2001:19f0:c000:c591:5400:04ff:fe26:2c5f", - "CanPort80": true - }, - { - "Name": "24d", - "RegionID": 24, - "HostName": "derp24d.tailscale.com", - "IPv4": "208.72.155.133", - "IPv6": "2001:19f0:c000:c564:5400:04ff:fe26:2ba8", - "CanPort80": true - }, - { - "Name": "24b", - "RegionID": 24, - "HostName": "derp24b.tailscale.com", - "IPv4": "208.83.234.151", - "IPv6": "2001:19f0:c000:c586:5400:04ff:fe26:2ba6", - "CanPort80": true - } - ] - }, - "25": { - "RegionID": 25, - "RegionCode": "nai", - "RegionName": "Nairobi", - "Latitude": -1.286389, - "Longitude": 36.817222, - "Nodes": [ - { - "Name": "25c", - "RegionID": 25, - "HostName": "derp25c.tailscale.com", - "IPv4": "102.67.167.37", - "IPv6": "2c0f:edb0:2000:1::2c7", - "CanPort80": true - }, - { - "Name": "25d", - "RegionID": 25, - "HostName": "derp25d.tailscale.com", - "IPv4": "102.67.167.188", - "IPv6": "2c0f:edb0:2000:1::188", - "CanPort80": true - }, - { - "Name": "25b", - "RegionID": 25, - "HostName": "derp25b.tailscale.com", - "IPv4": "102.67.167.245", - "IPv6": "2c0f:edb0:2000:1::2e9", - "CanPort80": true - } - ] - }, - "26": { - "RegionID": 26, - "RegionCode": "nue", - "RegionName": "Nuremberg", - "Latitude": 49.453889, - "Longitude": 11.0775, - "Nodes": [ - { - "Name": "26c", - "RegionID": 26, - "HostName": "derp26c.tailscale.com", - "IPv4": "49.12.193.137", - "IPv6": "2a01:4f8:1c1c:5c70::1", - "CanPort80": true - }, - { - "Name": "26d", - "RegionID": 26, - "HostName": "derp26d.tailscale.com", - "IPv4": "49.13.204.141", - "IPv6": "2a01:4f8:1c0c:7d06::1", - "CanPort80": true - }, - { - "Name": "26b", - "RegionID": 26, - "HostName": "derp26b.tailscale.com", - "IPv4": "167.235.72.200", - "IPv6": "2a01:4f8:1c1c:47b6::1", - "CanPort80": true - } - ] - }, - "27": { - "RegionID": 27, - "RegionCode": "iad", - "RegionName": "Ashburn", - "Latitude": 39.03, - "Longitude": -77.471111, - "Nodes": [ - { - "Name": "27d", - "RegionID": 27, - "HostName": "derp27d.tailscale.com", - "IPv4": "178.156.152.106", - "IPv6": "2a01:4ff:f0:3c8e::1", - "CanPort80": true - }, - { - "Name": "27c", - "RegionID": 27, - "HostName": "derp27c.tailscale.com", - "IPv4": "178.156.152.91", - "IPv6": "2a01:4ff:f0:3913::1", - "CanPort80": true - }, - { - "Name": "27e", - "RegionID": 27, - "HostName": "derp27e.tailscale.com", - "IPv4": "178.156.134.232", - "IPv6": "2a01:4ff:f0:28d4::1", - "CanPort80": true - }, - { - "Name": "27b", - "RegionID": 27, - "HostName": "derp27b.tailscale.com", - "IPv4": "5.161.218.233", - "IPv6": "2a01:4ff:f0:3db9::1", - "CanPort80": true - } - ] - }, - "28": { - "RegionID": 28, - "RegionCode": "hel", - "RegionName": "Helsinki", - "Latitude": 60.170833, - "Longitude": 24.9375, - "Nodes": [ - { - "Name": "28c", - "RegionID": 28, - "HostName": "derp28c.tailscale.com", - "IPv4": "95.217.2.165", - "IPv6": "2a01:4f9:c012:cd74::1", - "CanPort80": true - }, - { - "Name": "28d", - "RegionID": 28, - "HostName": "derp28d.tailscale.com", - "IPv4": "157.180.28.32", - "IPv6": "2a01:4f9:c012:2e5b::1", - "CanPort80": true - }, - { - "Name": "28b", - "RegionID": 28, - "HostName": "derp28b.tailscale.com", - "IPv4": "65.109.143.62", - "IPv6": "2a01:4f9:c012:d55c::1", - "CanPort80": true - } - ] - }, - "3": { - "RegionID": 3, - "RegionCode": "sin", - "RegionName": "Singapore", - "Latitude": 1.3521, - "Longitude": 103.8198, - "Nodes": [ - { - "Name": "3g", - "RegionID": 3, - "HostName": "derp3g.tailscale.com", - "IPv4": "172.237.72.79", - "IPv6": "2600:3c15::2000:adff:fe08:6fab", - "CanPort80": true - }, - { - "Name": "3f", - "RegionID": 3, - "HostName": "derp3f.tailscale.com", - "IPv4": "172.237.72.8", - "IPv6": "2600:3c15::2000:53ff:fe48:a668", - "CanPort80": true - }, - { - "Name": "3h", - "RegionID": 3, - "HostName": "derp3h.tailscale.com", - "IPv4": "172.237.66.30", - "IPv6": "2600:3c15::2000:3dff:fe44:50aa", - "CanPort80": true - }, - { - "Name": "3e", - "RegionID": 3, - "HostName": "derp3e.tailscale.com", - "IPv4": "172.237.72.43", - "IPv6": "2600:3c15::2000:6cff:fee4:d799", - "CanPort80": true - } - ] - }, - "4": { - "RegionID": 4, - "RegionCode": "fra", - "RegionName": "Frankfurt", - "Latitude": 50.1109, - "Longitude": 8.6821, - "Nodes": [ - { - "Name": "4h", - "RegionID": 4, - "HostName": "derp4h.tailscale.com", - "IPv4": "185.40.234.77", - "IPv6": "2a00:dd80:20::bcf", - "CanPort80": true - }, - { - "Name": "4g", - "RegionID": 4, - "HostName": "derp4g.tailscale.com", - "IPv4": "185.40.234.113", - "IPv6": "2a00:dd80:20::8f", - "CanPort80": true - }, - { - "Name": "4i", - "RegionID": 4, - "HostName": "derp4i.tailscale.com", - "IPv4": "185.40.234.53", - "IPv6": "2a00:dd80:20::8a6", - "CanPort80": true - }, - { - "Name": "4f", - "RegionID": 4, - "HostName": "derp4f.tailscale.com", - "IPv4": "185.40.234.219", - "IPv6": "2a00:dd80:20::a25", - "CanPort80": true - } - ] - }, - "5": { - "RegionID": 5, - "RegionCode": "syd", - "RegionName": "Sydney", - "Latitude": -33.867778, - "Longitude": 151.21, - "Nodes": [ - { - "Name": "5f", - "RegionID": 5, - "HostName": "derp5f.tailscale.com", - "IPv4": "172.105.166.103", - "IPv6": "2400:8907::2000:ccff:fe1f:80da", - "CanPort80": true - }, - { - "Name": "5g", - "RegionID": 5, - "HostName": "derp5g.tailscale.com", - "IPv4": "172.105.169.57", - "IPv6": "2400:8907::2000:2fff:fea7:57f4", - "CanPort80": true - }, - { - "Name": "5e", - "RegionID": 5, - "HostName": "derp5e.tailscale.com", - "IPv4": "172.105.179.230", - "IPv6": "2400:8907::2000:ceff:fe8d:4f4e", - "CanPort80": true - } - ] - }, - "6": { - "RegionID": 6, - "RegionCode": "blr", - "RegionName": "Bengaluru", - "Latitude": 12.9716, - "Longitude": 77.5946, - "Nodes": [ - { - "Name": "6a", - "RegionID": 6, - "HostName": "derp6.tailscale.com", - "IPv4": "68.183.90.120", - "IPv6": "2400:6180:100:d0::982:d001", - "CanPort80": true - } - ] - }, - "7": { - "RegionID": 7, - "RegionCode": "tok", - "RegionName": "Tokyo", - "Latitude": 35.6764, - "Longitude": 139.65, - "Nodes": [ - { - "Name": "7g", - "RegionID": 7, - "HostName": "derp7g.tailscale.com", - "IPv4": "172.238.6.179", - "IPv6": "2600:3c18::2000:3fff:fe80:3ebd", - "CanPort80": true - }, - { - "Name": "7f", - "RegionID": 7, - "HostName": "derp7f.tailscale.com", - "IPv4": "172.238.6.34", - "IPv6": "2600:3c18::2000:acff:fe8e:3ed5", - "CanPort80": true - }, - { - "Name": "7h", - "RegionID": 7, - "HostName": "derp7h.tailscale.com", - "IPv4": "172.237.28.183", - "IPv6": "2600:3c18::2000:b1ff:fea9:4560", - "CanPort80": true - }, - { - "Name": "7e", - "RegionID": 7, - "HostName": "derp7e.tailscale.com", - "IPv4": "172.238.6.180", - "IPv6": "2600:3c18::2000:60ff:fe0f:6e83", - "STUNOnly": true, - "CanPort80": true - } - ] - }, - "8": { - "RegionID": 8, - "RegionCode": "lhr", - "RegionName": "London", - "Latitude": 51.5072, - "Longitude": 0.1276, - "Nodes": [ - { - "Name": "8f", - "RegionID": 8, - "HostName": "derp8f.tailscale.com", - "IPv4": "176.58.88.183", - "IPv6": "2a00:dd80:3a::dfa", - "CanPort80": true - }, - { - "Name": "8g", - "RegionID": 8, - "HostName": "derp8g.tailscale.com", - "IPv4": "176.58.92.254", - "IPv6": "2a00:dd80:3a::ed", - "CanPort80": true - }, - { - "Name": "8e", - "RegionID": 8, - "HostName": "derp8e.tailscale.com", - "IPv4": "176.58.92.144", - "IPv6": "2a00:dd80:3a::b33", - "CanPort80": true - } - ] - }, - "9": { - "RegionID": 9, - "RegionCode": "dfw", - "RegionName": "Dallas", - "Latitude": 32.779167, - "Longitude": -96.808889, - "Nodes": [ - { - "Name": "9e", - "RegionID": 9, - "HostName": "derp9e.tailscale.com", - "IPv4": "192.73.248.83", - "IPv6": "2607:f740:100::359", - "CanPort80": true - }, - { - "Name": "9f", - "RegionID": 9, - "HostName": "derp9f.tailscale.com", - "IPv4": "209.177.156.197", - "IPv6": "2607:f740:100::cad", - "CanPort80": true - }, - { - "Name": "9d", - "RegionID": 9, - "HostName": "derp9d.tailscale.com", - "IPv4": "209.177.156.94", - "IPv6": "2607:f740:100::c05", - "CanPort80": true - } - ] - } - } - }, - "DisplayMessages": null, - "TKAEnabled": false, - "TKAHead": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", - "Domain": "kratail2tid@passkey", - "DomainAuditLogID": "", - "UserProfiles": { - "4031348162889210": { - "ID": 4031348162889210, - "LoginName": "tagged-client.tail78f774.ts.net", - "DisplayName": "tagged-client" - } - } + "PacketFilterRules": 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.124.195.93": { - "peer_name": "exit-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-prod/tailscaled.sock whois --json 100.124.195.93", - "response": null - }, - "100.116.18.24": { - "peer_name": "exit-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-prod/tailscaled.sock whois --json 100.116.18.24", - "response": null - }, - "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.107.162.14": { - "peer_name": "group-a-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-prod/tailscaled.sock whois --json 100.107.162.14", - "response": null - }, - "100.77.135.18": { - "peer_name": "group-b-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-prod/tailscaled.sock whois --json 100.77.135.18", - "response": null - }, - "100.105.127.107": { - "peer_name": "multi-exit-router", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-prod/tailscaled.sock whois --json 100.105.127.107", - "response": null - }, - "100.109.43.124": { - "peer_name": "router-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-prod/tailscaled.sock whois --json 100.109.43.124", - "response": null - }, - "100.65.172.123": { - "peer_name": "router-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-prod/tailscaled.sock whois --json 100.65.172.123", - "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 - } - }, "netmap": { - "SelfNode": { - "ID": 301794218943819, - "StableID": "neJag6dgM311CNTRL", - "Name": "tagged-prod.tail78f774.ts.net.", - "User": 301794218943819, - "Key": "nodekey:54c79503322a5d0a9701ce19d11963cfff9c05667ac06ef976af86275ba7080e", - "DiscoKey": "discokey:5e4985009b42b7c82ffb2cb5fa735a90f967f6b3f886b71268ebbeffa324556b", - "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:46164", "10.65.0.27:46164", "172.17.0.1:46164"], - "Hostinfo": { - "Hostname": "tagged-prod", - "Services": [ - { "Proto": "peerapi4", "Port": 37678 }, - { "Proto": "peerapi6", "Port": 37678 }, - { "Proto": "peerapi-dns-proxy", "Port": 1 } - ] - }, - "Created": "2026-02-20T14:03:12.89283153Z", - "Tags": ["tag:prod"], - "MachineAuthorized": true, - "CapMap": { - "https://tailscale.com/cap/file-sharing": null, - "https://tailscale.com/cap/is-owner": null, - "https://tailscale.com/cap/ssh": null, - "https://tailscale.com/cap/tailnet-lock": null, - "probe-udp-lifetime": null, - "ssh-behavior-v1": null, - "ssh-env-vars": null, - "store-appc-routes": null, - "tailnet-display-name": ["kratail2tid@passkey"] - }, - "ComputedName": "tagged-prod", - "ComputedNameWithHost": "tagged-prod" - }, - "AllCaps": [ - "https://tailscale.com/cap/is-owner", - "probe-udp-lifetime", - "https://tailscale.com/cap/file-sharing", - "store-appc-routes", - "https://tailscale.com/cap/ssh", - "https://tailscale.com/cap/tailnet-lock", - "ssh-env-vars", - "tailnet-display-name", - "ssh-behavior-v1" - ], - "NodeKey": "nodekey:54c79503322a5d0a9701ce19d11963cfff9c05667ac06ef976af86275ba7080e", - "MachineKey": "mkey:af805e02d1594ab20eaf3e2df5b379eec6453fa649344fcd564b7bae20e46a63", "Peers": [], - "DNS": { - "Routes": { - "tail78f774.ts.net.": null, - "ts.net.": [{ "Addr": "199.247.155.53" }, { "Addr": "2620:111:8007::53" }] - }, - "Domains": ["tail78f774.ts.net"], - "Proxied": true, - "ExitNodeFilteredSet": [".ts.net", ".tailscale.net"] - }, - "PacketFilter": [], - "PacketFilterRules": null, - "SSHPolicy": { "rules": [] }, - "CollectServices": false, - "DERPMap": { - "Regions": { - "1": { - "RegionID": 1, - "RegionCode": "nyc", - "RegionName": "New York City", - "Latitude": 40.7128, - "Longitude": -74.006, - "Nodes": [ - { - "Name": "1h", - "RegionID": 1, - "HostName": "derp1h.tailscale.com", - "IPv4": "199.38.181.93", - "IPv6": "2607:f740:f::afd", - "CanPort80": true - }, - { - "Name": "1g", - "RegionID": 1, - "HostName": "derp1g.tailscale.com", - "IPv4": "209.177.145.120", - "IPv6": "2607:f740:f::3eb", - "CanPort80": true - }, - { - "Name": "1i", - "RegionID": 1, - "HostName": "derp1i.tailscale.com", - "IPv4": "199.38.181.103", - "IPv6": "2607:f740:f::e19", - "CanPort80": true - }, - { - "Name": "1f", - "RegionID": 1, - "HostName": "derp1f.tailscale.com", - "IPv4": "199.38.181.104", - "IPv6": "2607:f740:f::bc", - "CanPort80": true - } - ] - }, - "10": { - "RegionID": 10, - "RegionCode": "sea", - "RegionName": "Seattle", - "Latitude": 47.609722, - "Longitude": -122.333056, - "Nodes": [ - { - "Name": "10c", - "RegionID": 10, - "HostName": "derp10c.tailscale.com", - "IPv4": "192.73.240.121", - "IPv6": "2607:f740:14::40c", - "CanPort80": true - }, - { - "Name": "10d", - "RegionID": 10, - "HostName": "derp10d.tailscale.com", - "IPv4": "192.73.240.132", - "IPv6": "2607:f740:14::500", - "CanPort80": true - }, - { - "Name": "10b", - "RegionID": 10, - "HostName": "derp10b.tailscale.com", - "IPv4": "192.73.240.161", - "IPv6": "2607:f740:14::61c", - "CanPort80": true - } - ] - }, - "11": { - "RegionID": 11, - "RegionCode": "sao", - "RegionName": "São Paulo", - "Latitude": -23.55, - "Longitude": -46.633333, - "Nodes": [ - { - "Name": "11f", - "RegionID": 11, - "HostName": "derp11f.tailscale.com", - "IPv4": "172.237.61.197", - "IPv6": "2600:3c0d::2000:3bff:fe44:6166", - "CanPort80": true - }, - { - "Name": "11g", - "RegionID": 11, - "HostName": "derp11g.tailscale.com", - "IPv4": "172.237.61.190", - "IPv6": "2600:3c0d::2000:62ff:febe:2e67", - "CanPort80": true - }, - { - "Name": "11e", - "RegionID": 11, - "HostName": "derp11e.tailscale.com", - "IPv4": "172.237.61.194", - "IPv6": "2600:3c0d::2000:d2ff:fe43:1790", - "CanPort80": true - } - ] - }, - "12": { - "RegionID": 12, - "RegionCode": "ord", - "RegionName": "Chicago", - "Latitude": 41.881944, - "Longitude": -87.627778, - "Nodes": [ - { - "Name": "12e", - "RegionID": 12, - "HostName": "derp12e.tailscale.com", - "IPv4": "209.177.158.15", - "IPv6": "2607:f740:e::b17", - "CanPort80": true - }, - { - "Name": "12f", - "RegionID": 12, - "HostName": "derp12f.tailscale.com", - "IPv4": "199.38.182.118", - "IPv6": "2607:f740:e::4c8", - "CanPort80": true - }, - { - "Name": "12d", - "RegionID": 12, - "HostName": "derp12d.tailscale.com", - "IPv4": "209.177.158.246", - "IPv6": "2607:f740:e::811", - "CanPort80": true - } - ] - }, - "13": { - "RegionID": 13, - "RegionCode": "den", - "RegionName": "Denver", - "Latitude": 39.7392, - "Longitude": -104.9849, - "Nodes": [ - { - "Name": "13c", - "RegionID": 13, - "HostName": "derp13c.tailscale.com", - "IPv4": "192.73.242.28", - "IPv6": "2607:f740:16::5c", - "CanPort80": true - }, - { - "Name": "13d", - "RegionID": 13, - "HostName": "derp13d.tailscale.com", - "IPv4": "192.73.242.204", - "IPv6": "2607:f740:16::c23", - "CanPort80": true - }, - { - "Name": "13b", - "RegionID": 13, - "HostName": "derp13b.tailscale.com", - "IPv4": "192.73.242.187", - "IPv6": "2607:f740:16::640", - "CanPort80": true - } - ] - }, - "14": { - "RegionID": 14, - "RegionCode": "ams", - "RegionName": "Amsterdam", - "Latitude": 52.372778, - "Longitude": 4.893611, - "Nodes": [ - { - "Name": "14c", - "RegionID": 14, - "HostName": "derp14c.tailscale.com", - "IPv4": "176.58.93.147", - "IPv6": "2a00:dd80:3c::b09", - "CanPort80": true - }, - { - "Name": "14d", - "RegionID": 14, - "HostName": "derp14d.tailscale.com", - "IPv4": "176.58.93.154", - "IPv6": "2a00:dd80:3c::3d5", - "CanPort80": true - }, - { - "Name": "14b", - "RegionID": 14, - "HostName": "derp14b.tailscale.com", - "IPv4": "176.58.93.248", - "IPv6": "2a00:dd80:3c::807", - "CanPort80": true - } - ] - }, - "15": { - "RegionID": 15, - "RegionCode": "jnb", - "RegionName": "Johannesburg", - "Latitude": -26.204444, - "Longitude": 28.045556, - "Nodes": [ - { - "Name": "15c", - "RegionID": 15, - "HostName": "derp15c.tailscale.com", - "IPv4": "102.67.165.185", - "IPv6": "2c0f:edb0:0:10::b59", - "CanPort80": true - }, - { - "Name": "15d", - "RegionID": 15, - "HostName": "derp15d.tailscale.com", - "IPv4": "102.67.165.36", - "IPv6": "2c0f:edb0:0:10::599", - "CanPort80": true - }, - { - "Name": "15b", - "RegionID": 15, - "HostName": "derp15b.tailscale.com", - "IPv4": "102.67.165.90", - "IPv6": "2c0f:edb0:0:10::963", - "CanPort80": true - } - ] - }, - "16": { - "RegionID": 16, - "RegionCode": "mia", - "RegionName": "Miami", - "Latitude": 25.78, - "Longitude": -80.21, - "Nodes": [ - { - "Name": "16c", - "RegionID": 16, - "HostName": "derp16c.tailscale.com", - "IPv4": "192.73.243.229", - "IPv6": "2607:f740:17::4e4", - "CanPort80": true - }, - { - "Name": "16d", - "RegionID": 16, - "HostName": "derp16d.tailscale.com", - "IPv4": "192.73.243.141", - "IPv6": "2607:f740:17::475", - "CanPort80": true - }, - { - "Name": "16b", - "RegionID": 16, - "HostName": "derp16b.tailscale.com", - "IPv4": "192.73.243.135", - "IPv6": "2607:f740:17::476", - "CanPort80": true - } - ] - }, - "17": { - "RegionID": 17, - "RegionCode": "lax", - "RegionName": "Los Angeles", - "Latitude": 34.05, - "Longitude": -118.25, - "Nodes": [ - { - "Name": "17c", - "RegionID": 17, - "HostName": "derp17c.tailscale.com", - "IPv4": "208.111.40.12", - "IPv6": "2607:f740:c::10", - "CanPort80": true - }, - { - "Name": "17d", - "RegionID": 17, - "HostName": "derp17d.tailscale.com", - "IPv4": "208.111.40.216", - "IPv6": "2607:f740:c::e1b", - "CanPort80": true - }, - { - "Name": "17b", - "RegionID": 17, - "HostName": "derp17b.tailscale.com", - "IPv4": "192.73.244.245", - "IPv6": "2607:f740:c::646", - "CanPort80": true - } - ] - }, - "18": { - "RegionID": 18, - "RegionCode": "par", - "RegionName": "Paris", - "Latitude": 48.856667, - "Longitude": 2.352222, - "Nodes": [ - { - "Name": "18c", - "RegionID": 18, - "HostName": "derp18c.tailscale.com", - "IPv4": "176.58.90.207", - "IPv6": "2a00:dd80:3e::c19", - "CanPort80": true - }, - { - "Name": "18d", - "RegionID": 18, - "HostName": "derp18d.tailscale.com", - "IPv4": "176.58.90.104", - "IPv6": "2a00:dd80:3e::f2e", - "CanPort80": true - }, - { - "Name": "18b", - "RegionID": 18, - "HostName": "derp18b.tailscale.com", - "IPv4": "176.58.90.147", - "IPv6": "2a00:dd80:3e::363", - "CanPort80": true - } - ] - }, - "19": { - "RegionID": 19, - "RegionCode": "mad", - "RegionName": "Madrid", - "Latitude": 40.416944, - "Longitude": -3.703333, - "Nodes": [ - { - "Name": "19c", - "RegionID": 19, - "HostName": "derp19c.tailscale.com", - "IPv4": "45.159.97.61", - "IPv6": "2a00:dd80:14:10::20", - "CanPort80": true - }, - { - "Name": "19d", - "RegionID": 19, - "HostName": "derp19d.tailscale.com", - "IPv4": "45.159.97.233", - "IPv6": "2a00:dd80:14:10::34a", - "CanPort80": true - }, - { - "Name": "19b", - "RegionID": 19, - "HostName": "derp19b.tailscale.com", - "IPv4": "45.159.97.144", - "IPv6": "2a00:dd80:14:10::335", - "CanPort80": true - } - ] - }, - "2": { - "RegionID": 2, - "RegionCode": "sfo", - "RegionName": "San Francisco", - "Latitude": 37.7775, - "Longitude": -122.416389, - "Nodes": [ - { - "Name": "2e", - "RegionID": 2, - "HostName": "derp2e.tailscale.com", - "IPv4": "192.73.252.134", - "IPv6": "2607:f740:0:3f::44c", - "CanPort80": true - }, - { - "Name": "2f", - "RegionID": 2, - "HostName": "derp2f.tailscale.com", - "IPv4": "208.111.34.178", - "IPv6": "2607:f740:0:3f::f4", - "CanPort80": true - }, - { - "Name": "2d", - "RegionID": 2, - "HostName": "derp2d.tailscale.com", - "IPv4": "192.73.252.65", - "IPv6": "2607:f740:0:3f::287", - "CanPort80": true - } - ] - }, - "20": { - "RegionID": 20, - "RegionCode": "hkg", - "RegionName": "Hong Kong", - "Latitude": 22.3193, - "Longitude": 114.1694, - "Nodes": [ - { - "Name": "20c", - "RegionID": 20, - "HostName": "derp20c.tailscale.com", - "IPv4": "205.147.105.30", - "IPv6": "2403:2500:8000:1::5fb", - "CanPort80": true - }, - { - "Name": "20d", - "RegionID": 20, - "HostName": "derp20d.tailscale.com", - "IPv4": "205.147.105.78", - "IPv6": "2403:2500:8000:1::e9a", - "CanPort80": true - }, - { - "Name": "20b", - "RegionID": 20, - "HostName": "derp20b.tailscale.com", - "IPv4": "103.6.84.152", - "IPv6": "2403:2500:8000:1::ef6", - "CanPort80": true - } - ] - }, - "21": { - "RegionID": 21, - "RegionCode": "tor", - "RegionName": "Toronto", - "Latitude": 43.741667, - "Longitude": -79.373333, - "Nodes": [ - { - "Name": "21c", - "RegionID": 21, - "HostName": "derp21c.tailscale.com", - "IPv4": "162.248.221.215", - "IPv6": "2607:f740:50::f10", - "CanPort80": true - }, - { - "Name": "21d", - "RegionID": 21, - "HostName": "derp21d.tailscale.com", - "IPv4": "162.248.221.248", - "IPv6": "2607:f740:50::ca4", - "CanPort80": true - }, - { - "Name": "21b", - "RegionID": 21, - "HostName": "derp21b.tailscale.com", - "IPv4": "162.248.221.199", - "IPv6": "2607:f740:50::1d1", - "CanPort80": true - } - ] - }, - "22": { - "RegionID": 22, - "RegionCode": "waw", - "RegionName": "Warsaw", - "Latitude": 52.23, - "Longitude": 21.011111, - "Nodes": [ - { - "Name": "22c", - "RegionID": 22, - "HostName": "derp22c.tailscale.com", - "IPv4": "45.159.98.253", - "IPv6": "2a00:dd80:40:100::3f", - "CanPort80": true - }, - { - "Name": "22d", - "RegionID": 22, - "HostName": "derp22d.tailscale.com", - "IPv4": "45.159.98.145", - "IPv6": "2a00:dd80:40:100::211", - "CanPort80": true - }, - { - "Name": "22b", - "RegionID": 22, - "HostName": "derp22b.tailscale.com", - "IPv4": "45.159.98.196", - "IPv6": "2a00:dd80:40:100::316", - "CanPort80": true - } - ] - }, - "23": { - "RegionID": 23, - "RegionCode": "dbi", - "RegionName": "Dubai", - "Latitude": 25.263056, - "Longitude": 55.297222, - "Nodes": [ - { - "Name": "23c", - "RegionID": 23, - "HostName": "derp23c.tailscale.com", - "IPv4": "185.34.3.207", - "IPv6": "2a00:dd80:3f:100::a50", - "CanPort80": true - }, - { - "Name": "23d", - "RegionID": 23, - "HostName": "derp23d.tailscale.com", - "IPv4": "185.34.3.75", - "IPv6": "2a00:dd80:3f:100::97e", - "CanPort80": true - }, - { - "Name": "23b", - "RegionID": 23, - "HostName": "derp23b.tailscale.com", - "IPv4": "185.34.3.232", - "IPv6": "2a00:dd80:3f:100::76f", - "CanPort80": true - } - ] - }, - "24": { - "RegionID": 24, - "RegionCode": "hnl", - "RegionName": "Honolulu", - "Latitude": 21.306944, - "Longitude": -157.858333, - "Nodes": [ - { - "Name": "24c", - "RegionID": 24, - "HostName": "derp24c.tailscale.com", - "IPv4": "208.83.233.233", - "IPv6": "2001:19f0:c000:c591:5400:04ff:fe26:2c5f", - "CanPort80": true - }, - { - "Name": "24d", - "RegionID": 24, - "HostName": "derp24d.tailscale.com", - "IPv4": "208.72.155.133", - "IPv6": "2001:19f0:c000:c564:5400:04ff:fe26:2ba8", - "CanPort80": true - }, - { - "Name": "24b", - "RegionID": 24, - "HostName": "derp24b.tailscale.com", - "IPv4": "208.83.234.151", - "IPv6": "2001:19f0:c000:c586:5400:04ff:fe26:2ba6", - "CanPort80": true - } - ] - }, - "25": { - "RegionID": 25, - "RegionCode": "nai", - "RegionName": "Nairobi", - "Latitude": -1.286389, - "Longitude": 36.817222, - "Nodes": [ - { - "Name": "25c", - "RegionID": 25, - "HostName": "derp25c.tailscale.com", - "IPv4": "102.67.167.37", - "IPv6": "2c0f:edb0:2000:1::2c7", - "CanPort80": true - }, - { - "Name": "25d", - "RegionID": 25, - "HostName": "derp25d.tailscale.com", - "IPv4": "102.67.167.188", - "IPv6": "2c0f:edb0:2000:1::188", - "CanPort80": true - }, - { - "Name": "25b", - "RegionID": 25, - "HostName": "derp25b.tailscale.com", - "IPv4": "102.67.167.245", - "IPv6": "2c0f:edb0:2000:1::2e9", - "CanPort80": true - } - ] - }, - "26": { - "RegionID": 26, - "RegionCode": "nue", - "RegionName": "Nuremberg", - "Latitude": 49.453889, - "Longitude": 11.0775, - "Nodes": [ - { - "Name": "26c", - "RegionID": 26, - "HostName": "derp26c.tailscale.com", - "IPv4": "49.12.193.137", - "IPv6": "2a01:4f8:1c1c:5c70::1", - "CanPort80": true - }, - { - "Name": "26d", - "RegionID": 26, - "HostName": "derp26d.tailscale.com", - "IPv4": "49.13.204.141", - "IPv6": "2a01:4f8:1c0c:7d06::1", - "CanPort80": true - }, - { - "Name": "26b", - "RegionID": 26, - "HostName": "derp26b.tailscale.com", - "IPv4": "167.235.72.200", - "IPv6": "2a01:4f8:1c1c:47b6::1", - "CanPort80": true - } - ] - }, - "27": { - "RegionID": 27, - "RegionCode": "iad", - "RegionName": "Ashburn", - "Latitude": 39.03, - "Longitude": -77.471111, - "Nodes": [ - { - "Name": "27d", - "RegionID": 27, - "HostName": "derp27d.tailscale.com", - "IPv4": "178.156.152.106", - "IPv6": "2a01:4ff:f0:3c8e::1", - "CanPort80": true - }, - { - "Name": "27c", - "RegionID": 27, - "HostName": "derp27c.tailscale.com", - "IPv4": "178.156.152.91", - "IPv6": "2a01:4ff:f0:3913::1", - "CanPort80": true - }, - { - "Name": "27e", - "RegionID": 27, - "HostName": "derp27e.tailscale.com", - "IPv4": "178.156.134.232", - "IPv6": "2a01:4ff:f0:28d4::1", - "CanPort80": true - }, - { - "Name": "27b", - "RegionID": 27, - "HostName": "derp27b.tailscale.com", - "IPv4": "5.161.218.233", - "IPv6": "2a01:4ff:f0:3db9::1", - "CanPort80": true - } - ] - }, - "28": { - "RegionID": 28, - "RegionCode": "hel", - "RegionName": "Helsinki", - "Latitude": 60.170833, - "Longitude": 24.9375, - "Nodes": [ - { - "Name": "28c", - "RegionID": 28, - "HostName": "derp28c.tailscale.com", - "IPv4": "95.217.2.165", - "IPv6": "2a01:4f9:c012:cd74::1", - "CanPort80": true - }, - { - "Name": "28d", - "RegionID": 28, - "HostName": "derp28d.tailscale.com", - "IPv4": "157.180.28.32", - "IPv6": "2a01:4f9:c012:2e5b::1", - "CanPort80": true - }, - { - "Name": "28b", - "RegionID": 28, - "HostName": "derp28b.tailscale.com", - "IPv4": "65.109.143.62", - "IPv6": "2a01:4f9:c012:d55c::1", - "CanPort80": true - } - ] - }, - "3": { - "RegionID": 3, - "RegionCode": "sin", - "RegionName": "Singapore", - "Latitude": 1.3521, - "Longitude": 103.8198, - "Nodes": [ - { - "Name": "3g", - "RegionID": 3, - "HostName": "derp3g.tailscale.com", - "IPv4": "172.237.72.79", - "IPv6": "2600:3c15::2000:adff:fe08:6fab", - "CanPort80": true - }, - { - "Name": "3f", - "RegionID": 3, - "HostName": "derp3f.tailscale.com", - "IPv4": "172.237.72.8", - "IPv6": "2600:3c15::2000:53ff:fe48:a668", - "CanPort80": true - }, - { - "Name": "3h", - "RegionID": 3, - "HostName": "derp3h.tailscale.com", - "IPv4": "172.237.66.30", - "IPv6": "2600:3c15::2000:3dff:fe44:50aa", - "CanPort80": true - }, - { - "Name": "3e", - "RegionID": 3, - "HostName": "derp3e.tailscale.com", - "IPv4": "172.237.72.43", - "IPv6": "2600:3c15::2000:6cff:fee4:d799", - "CanPort80": true - } - ] - }, - "4": { - "RegionID": 4, - "RegionCode": "fra", - "RegionName": "Frankfurt", - "Latitude": 50.1109, - "Longitude": 8.6821, - "Nodes": [ - { - "Name": "4h", - "RegionID": 4, - "HostName": "derp4h.tailscale.com", - "IPv4": "185.40.234.77", - "IPv6": "2a00:dd80:20::bcf", - "CanPort80": true - }, - { - "Name": "4g", - "RegionID": 4, - "HostName": "derp4g.tailscale.com", - "IPv4": "185.40.234.113", - "IPv6": "2a00:dd80:20::8f", - "CanPort80": true - }, - { - "Name": "4i", - "RegionID": 4, - "HostName": "derp4i.tailscale.com", - "IPv4": "185.40.234.53", - "IPv6": "2a00:dd80:20::8a6", - "CanPort80": true - }, - { - "Name": "4f", - "RegionID": 4, - "HostName": "derp4f.tailscale.com", - "IPv4": "185.40.234.219", - "IPv6": "2a00:dd80:20::a25", - "CanPort80": true - } - ] - }, - "5": { - "RegionID": 5, - "RegionCode": "syd", - "RegionName": "Sydney", - "Latitude": -33.867778, - "Longitude": 151.21, - "Nodes": [ - { - "Name": "5f", - "RegionID": 5, - "HostName": "derp5f.tailscale.com", - "IPv4": "172.105.166.103", - "IPv6": "2400:8907::2000:ccff:fe1f:80da", - "CanPort80": true - }, - { - "Name": "5g", - "RegionID": 5, - "HostName": "derp5g.tailscale.com", - "IPv4": "172.105.169.57", - "IPv6": "2400:8907::2000:2fff:fea7:57f4", - "CanPort80": true - }, - { - "Name": "5e", - "RegionID": 5, - "HostName": "derp5e.tailscale.com", - "IPv4": "172.105.179.230", - "IPv6": "2400:8907::2000:ceff:fe8d:4f4e", - "CanPort80": true - } - ] - }, - "6": { - "RegionID": 6, - "RegionCode": "blr", - "RegionName": "Bengaluru", - "Latitude": 12.9716, - "Longitude": 77.5946, - "Nodes": [ - { - "Name": "6a", - "RegionID": 6, - "HostName": "derp6.tailscale.com", - "IPv4": "68.183.90.120", - "IPv6": "2400:6180:100:d0::982:d001", - "CanPort80": true - } - ] - }, - "7": { - "RegionID": 7, - "RegionCode": "tok", - "RegionName": "Tokyo", - "Latitude": 35.6764, - "Longitude": 139.65, - "Nodes": [ - { - "Name": "7g", - "RegionID": 7, - "HostName": "derp7g.tailscale.com", - "IPv4": "172.238.6.179", - "IPv6": "2600:3c18::2000:3fff:fe80:3ebd", - "CanPort80": true - }, - { - "Name": "7f", - "RegionID": 7, - "HostName": "derp7f.tailscale.com", - "IPv4": "172.238.6.34", - "IPv6": "2600:3c18::2000:acff:fe8e:3ed5", - "CanPort80": true - }, - { - "Name": "7h", - "RegionID": 7, - "HostName": "derp7h.tailscale.com", - "IPv4": "172.237.28.183", - "IPv6": "2600:3c18::2000:b1ff:fea9:4560", - "CanPort80": true - }, - { - "Name": "7e", - "RegionID": 7, - "HostName": "derp7e.tailscale.com", - "IPv4": "172.238.6.180", - "IPv6": "2600:3c18::2000:60ff:fe0f:6e83", - "STUNOnly": true, - "CanPort80": true - } - ] - }, - "8": { - "RegionID": 8, - "RegionCode": "lhr", - "RegionName": "London", - "Latitude": 51.5072, - "Longitude": 0.1276, - "Nodes": [ - { - "Name": "8f", - "RegionID": 8, - "HostName": "derp8f.tailscale.com", - "IPv4": "176.58.88.183", - "IPv6": "2a00:dd80:3a::dfa", - "CanPort80": true - }, - { - "Name": "8g", - "RegionID": 8, - "HostName": "derp8g.tailscale.com", - "IPv4": "176.58.92.254", - "IPv6": "2a00:dd80:3a::ed", - "CanPort80": true - }, - { - "Name": "8e", - "RegionID": 8, - "HostName": "derp8e.tailscale.com", - "IPv4": "176.58.92.144", - "IPv6": "2a00:dd80:3a::b33", - "CanPort80": true - } - ] - }, - "9": { - "RegionID": 9, - "RegionCode": "dfw", - "RegionName": "Dallas", - "Latitude": 32.779167, - "Longitude": -96.808889, - "Nodes": [ - { - "Name": "9e", - "RegionID": 9, - "HostName": "derp9e.tailscale.com", - "IPv4": "192.73.248.83", - "IPv6": "2607:f740:100::359", - "CanPort80": true - }, - { - "Name": "9f", - "RegionID": 9, - "HostName": "derp9f.tailscale.com", - "IPv4": "209.177.156.197", - "IPv6": "2607:f740:100::cad", - "CanPort80": true - }, - { - "Name": "9d", - "RegionID": 9, - "HostName": "derp9d.tailscale.com", - "IPv4": "209.177.156.94", - "IPv6": "2607:f740:100::c05", - "CanPort80": true - } - ] - } - } - }, - "DisplayMessages": null, - "TKAEnabled": false, - "TKAHead": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", - "Domain": "kratail2tid@passkey", - "DomainAuditLogID": "", - "UserProfiles": { - "301794218943819": { - "ID": 301794218943819, - "LoginName": "tagged-prod.tail78f774.ts.net", - "DisplayName": "tagged-prod" - } - } + "PacketFilterRules": 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.124.195.93": { - "peer_name": "exit-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-server/tailscaled.sock whois --json 100.124.195.93", - "response": null - }, - "100.116.18.24": { - "peer_name": "exit-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-server/tailscaled.sock whois --json 100.116.18.24", - "response": null - }, - "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.107.162.14": { - "peer_name": "group-a-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-server/tailscaled.sock whois --json 100.107.162.14", - "response": null - }, - "100.77.135.18": { - "peer_name": "group-b-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-server/tailscaled.sock whois --json 100.77.135.18", - "response": null - }, - "100.105.127.107": { - "peer_name": "multi-exit-router", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-server/tailscaled.sock whois --json 100.105.127.107", - "response": null - }, - "100.109.43.124": { - "peer_name": "router-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-server/tailscaled.sock whois --json 100.109.43.124", - "response": null - }, - "100.65.172.123": { - "peer_name": "router-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-server/tailscaled.sock whois --json 100.65.172.123", - "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 - } - }, "netmap": { - "SelfNode": { - "ID": 1440249486084758, - "StableID": "nXRbBtuHFC11CNTRL", - "Name": "tagged-server.tail78f774.ts.net.", - "User": 1440249486084758, - "Key": "nodekey:7d5c34b3e8082069d0a82838165c33f8e1b5eb32c6211c2d23d4fe8fb9ec4a19", - "DiscoKey": "discokey:aa5732e314175928eff41cc8f8a7b6edd4694b7d00e420a6573ecc11a88cb203", - "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:57971", "10.65.0.27:57971", "172.17.0.1:57971"], - "Hostinfo": { - "Hostname": "tagged-server", - "Services": [ - { "Proto": "peerapi4", "Port": 46499 }, - { "Proto": "peerapi6", "Port": 46499 }, - { "Proto": "peerapi-dns-proxy", "Port": 1 } - ] - }, - "Created": "2026-01-23T10:10:26.365653609Z", - "Tags": ["tag:server"], - "MachineAuthorized": true, - "CapMap": { - "https://tailscale.com/cap/file-sharing": null, - "https://tailscale.com/cap/is-owner": null, - "https://tailscale.com/cap/ssh": null, - "https://tailscale.com/cap/tailnet-lock": null, - "probe-udp-lifetime": null, - "ssh-behavior-v1": null, - "ssh-env-vars": null, - "store-appc-routes": null, - "tailnet-display-name": ["kratail2tid@passkey"] - }, - "ComputedName": "tagged-server", - "ComputedNameWithHost": "tagged-server" - }, - "AllCaps": [ - "https://tailscale.com/cap/ssh", - "ssh-env-vars", - "https://tailscale.com/cap/is-owner", - "https://tailscale.com/cap/tailnet-lock", - "probe-udp-lifetime", - "tailnet-display-name", - "ssh-behavior-v1", - "https://tailscale.com/cap/file-sharing", - "store-appc-routes" - ], - "NodeKey": "nodekey:7d5c34b3e8082069d0a82838165c33f8e1b5eb32c6211c2d23d4fe8fb9ec4a19", - "MachineKey": "mkey:7d9c55c88bb618638f3f049b95c797f64eb0259810146d2644fef3e53acfdf6b", "Peers": [], - "DNS": { - "Routes": { - "tail78f774.ts.net.": null, - "ts.net.": [{ "Addr": "199.247.155.53" }, { "Addr": "2620:111:8007::53" }] - }, - "Domains": ["tail78f774.ts.net"], - "Proxied": true, - "ExitNodeFilteredSet": [".ts.net", ".tailscale.net"] - }, - "PacketFilter": [], - "PacketFilterRules": null, - "SSHPolicy": { "rules": [] }, - "CollectServices": false, - "DERPMap": { - "Regions": { - "1": { - "RegionID": 1, - "RegionCode": "nyc", - "RegionName": "New York City", - "Latitude": 40.7128, - "Longitude": -74.006, - "Nodes": [ - { - "Name": "1h", - "RegionID": 1, - "HostName": "derp1h.tailscale.com", - "IPv4": "199.38.181.93", - "IPv6": "2607:f740:f::afd", - "CanPort80": true - }, - { - "Name": "1g", - "RegionID": 1, - "HostName": "derp1g.tailscale.com", - "IPv4": "209.177.145.120", - "IPv6": "2607:f740:f::3eb", - "CanPort80": true - }, - { - "Name": "1i", - "RegionID": 1, - "HostName": "derp1i.tailscale.com", - "IPv4": "199.38.181.103", - "IPv6": "2607:f740:f::e19", - "CanPort80": true - }, - { - "Name": "1f", - "RegionID": 1, - "HostName": "derp1f.tailscale.com", - "IPv4": "199.38.181.104", - "IPv6": "2607:f740:f::bc", - "CanPort80": true - } - ] - }, - "10": { - "RegionID": 10, - "RegionCode": "sea", - "RegionName": "Seattle", - "Latitude": 47.609722, - "Longitude": -122.333056, - "Nodes": [ - { - "Name": "10c", - "RegionID": 10, - "HostName": "derp10c.tailscale.com", - "IPv4": "192.73.240.121", - "IPv6": "2607:f740:14::40c", - "CanPort80": true - }, - { - "Name": "10d", - "RegionID": 10, - "HostName": "derp10d.tailscale.com", - "IPv4": "192.73.240.132", - "IPv6": "2607:f740:14::500", - "CanPort80": true - }, - { - "Name": "10b", - "RegionID": 10, - "HostName": "derp10b.tailscale.com", - "IPv4": "192.73.240.161", - "IPv6": "2607:f740:14::61c", - "CanPort80": true - } - ] - }, - "11": { - "RegionID": 11, - "RegionCode": "sao", - "RegionName": "São Paulo", - "Latitude": -23.55, - "Longitude": -46.633333, - "Nodes": [ - { - "Name": "11f", - "RegionID": 11, - "HostName": "derp11f.tailscale.com", - "IPv4": "172.237.61.197", - "IPv6": "2600:3c0d::2000:3bff:fe44:6166", - "CanPort80": true - }, - { - "Name": "11g", - "RegionID": 11, - "HostName": "derp11g.tailscale.com", - "IPv4": "172.237.61.190", - "IPv6": "2600:3c0d::2000:62ff:febe:2e67", - "CanPort80": true - }, - { - "Name": "11e", - "RegionID": 11, - "HostName": "derp11e.tailscale.com", - "IPv4": "172.237.61.194", - "IPv6": "2600:3c0d::2000:d2ff:fe43:1790", - "CanPort80": true - } - ] - }, - "12": { - "RegionID": 12, - "RegionCode": "ord", - "RegionName": "Chicago", - "Latitude": 41.881944, - "Longitude": -87.627778, - "Nodes": [ - { - "Name": "12e", - "RegionID": 12, - "HostName": "derp12e.tailscale.com", - "IPv4": "209.177.158.15", - "IPv6": "2607:f740:e::b17", - "CanPort80": true - }, - { - "Name": "12f", - "RegionID": 12, - "HostName": "derp12f.tailscale.com", - "IPv4": "199.38.182.118", - "IPv6": "2607:f740:e::4c8", - "CanPort80": true - }, - { - "Name": "12d", - "RegionID": 12, - "HostName": "derp12d.tailscale.com", - "IPv4": "209.177.158.246", - "IPv6": "2607:f740:e::811", - "CanPort80": true - } - ] - }, - "13": { - "RegionID": 13, - "RegionCode": "den", - "RegionName": "Denver", - "Latitude": 39.7392, - "Longitude": -104.9849, - "Nodes": [ - { - "Name": "13c", - "RegionID": 13, - "HostName": "derp13c.tailscale.com", - "IPv4": "192.73.242.28", - "IPv6": "2607:f740:16::5c", - "CanPort80": true - }, - { - "Name": "13d", - "RegionID": 13, - "HostName": "derp13d.tailscale.com", - "IPv4": "192.73.242.204", - "IPv6": "2607:f740:16::c23", - "CanPort80": true - }, - { - "Name": "13b", - "RegionID": 13, - "HostName": "derp13b.tailscale.com", - "IPv4": "192.73.242.187", - "IPv6": "2607:f740:16::640", - "CanPort80": true - } - ] - }, - "14": { - "RegionID": 14, - "RegionCode": "ams", - "RegionName": "Amsterdam", - "Latitude": 52.372778, - "Longitude": 4.893611, - "Nodes": [ - { - "Name": "14c", - "RegionID": 14, - "HostName": "derp14c.tailscale.com", - "IPv4": "176.58.93.147", - "IPv6": "2a00:dd80:3c::b09", - "CanPort80": true - }, - { - "Name": "14d", - "RegionID": 14, - "HostName": "derp14d.tailscale.com", - "IPv4": "176.58.93.154", - "IPv6": "2a00:dd80:3c::3d5", - "CanPort80": true - }, - { - "Name": "14b", - "RegionID": 14, - "HostName": "derp14b.tailscale.com", - "IPv4": "176.58.93.248", - "IPv6": "2a00:dd80:3c::807", - "CanPort80": true - } - ] - }, - "15": { - "RegionID": 15, - "RegionCode": "jnb", - "RegionName": "Johannesburg", - "Latitude": -26.204444, - "Longitude": 28.045556, - "Nodes": [ - { - "Name": "15c", - "RegionID": 15, - "HostName": "derp15c.tailscale.com", - "IPv4": "102.67.165.185", - "IPv6": "2c0f:edb0:0:10::b59", - "CanPort80": true - }, - { - "Name": "15d", - "RegionID": 15, - "HostName": "derp15d.tailscale.com", - "IPv4": "102.67.165.36", - "IPv6": "2c0f:edb0:0:10::599", - "CanPort80": true - }, - { - "Name": "15b", - "RegionID": 15, - "HostName": "derp15b.tailscale.com", - "IPv4": "102.67.165.90", - "IPv6": "2c0f:edb0:0:10::963", - "CanPort80": true - } - ] - }, - "16": { - "RegionID": 16, - "RegionCode": "mia", - "RegionName": "Miami", - "Latitude": 25.78, - "Longitude": -80.21, - "Nodes": [ - { - "Name": "16c", - "RegionID": 16, - "HostName": "derp16c.tailscale.com", - "IPv4": "192.73.243.229", - "IPv6": "2607:f740:17::4e4", - "CanPort80": true - }, - { - "Name": "16d", - "RegionID": 16, - "HostName": "derp16d.tailscale.com", - "IPv4": "192.73.243.141", - "IPv6": "2607:f740:17::475", - "CanPort80": true - }, - { - "Name": "16b", - "RegionID": 16, - "HostName": "derp16b.tailscale.com", - "IPv4": "192.73.243.135", - "IPv6": "2607:f740:17::476", - "CanPort80": true - } - ] - }, - "17": { - "RegionID": 17, - "RegionCode": "lax", - "RegionName": "Los Angeles", - "Latitude": 34.05, - "Longitude": -118.25, - "Nodes": [ - { - "Name": "17c", - "RegionID": 17, - "HostName": "derp17c.tailscale.com", - "IPv4": "208.111.40.12", - "IPv6": "2607:f740:c::10", - "CanPort80": true - }, - { - "Name": "17d", - "RegionID": 17, - "HostName": "derp17d.tailscale.com", - "IPv4": "208.111.40.216", - "IPv6": "2607:f740:c::e1b", - "CanPort80": true - }, - { - "Name": "17b", - "RegionID": 17, - "HostName": "derp17b.tailscale.com", - "IPv4": "192.73.244.245", - "IPv6": "2607:f740:c::646", - "CanPort80": true - } - ] - }, - "18": { - "RegionID": 18, - "RegionCode": "par", - "RegionName": "Paris", - "Latitude": 48.856667, - "Longitude": 2.352222, - "Nodes": [ - { - "Name": "18c", - "RegionID": 18, - "HostName": "derp18c.tailscale.com", - "IPv4": "176.58.90.207", - "IPv6": "2a00:dd80:3e::c19", - "CanPort80": true - }, - { - "Name": "18d", - "RegionID": 18, - "HostName": "derp18d.tailscale.com", - "IPv4": "176.58.90.104", - "IPv6": "2a00:dd80:3e::f2e", - "CanPort80": true - }, - { - "Name": "18b", - "RegionID": 18, - "HostName": "derp18b.tailscale.com", - "IPv4": "176.58.90.147", - "IPv6": "2a00:dd80:3e::363", - "CanPort80": true - } - ] - }, - "19": { - "RegionID": 19, - "RegionCode": "mad", - "RegionName": "Madrid", - "Latitude": 40.416944, - "Longitude": -3.703333, - "Nodes": [ - { - "Name": "19c", - "RegionID": 19, - "HostName": "derp19c.tailscale.com", - "IPv4": "45.159.97.61", - "IPv6": "2a00:dd80:14:10::20", - "CanPort80": true - }, - { - "Name": "19d", - "RegionID": 19, - "HostName": "derp19d.tailscale.com", - "IPv4": "45.159.97.233", - "IPv6": "2a00:dd80:14:10::34a", - "CanPort80": true - }, - { - "Name": "19b", - "RegionID": 19, - "HostName": "derp19b.tailscale.com", - "IPv4": "45.159.97.144", - "IPv6": "2a00:dd80:14:10::335", - "CanPort80": true - } - ] - }, - "2": { - "RegionID": 2, - "RegionCode": "sfo", - "RegionName": "San Francisco", - "Latitude": 37.7775, - "Longitude": -122.416389, - "Nodes": [ - { - "Name": "2e", - "RegionID": 2, - "HostName": "derp2e.tailscale.com", - "IPv4": "192.73.252.134", - "IPv6": "2607:f740:0:3f::44c", - "CanPort80": true - }, - { - "Name": "2f", - "RegionID": 2, - "HostName": "derp2f.tailscale.com", - "IPv4": "208.111.34.178", - "IPv6": "2607:f740:0:3f::f4", - "CanPort80": true - }, - { - "Name": "2d", - "RegionID": 2, - "HostName": "derp2d.tailscale.com", - "IPv4": "192.73.252.65", - "IPv6": "2607:f740:0:3f::287", - "CanPort80": true - } - ] - }, - "20": { - "RegionID": 20, - "RegionCode": "hkg", - "RegionName": "Hong Kong", - "Latitude": 22.3193, - "Longitude": 114.1694, - "Nodes": [ - { - "Name": "20c", - "RegionID": 20, - "HostName": "derp20c.tailscale.com", - "IPv4": "205.147.105.30", - "IPv6": "2403:2500:8000:1::5fb", - "CanPort80": true - }, - { - "Name": "20d", - "RegionID": 20, - "HostName": "derp20d.tailscale.com", - "IPv4": "205.147.105.78", - "IPv6": "2403:2500:8000:1::e9a", - "CanPort80": true - }, - { - "Name": "20b", - "RegionID": 20, - "HostName": "derp20b.tailscale.com", - "IPv4": "103.6.84.152", - "IPv6": "2403:2500:8000:1::ef6", - "CanPort80": true - } - ] - }, - "21": { - "RegionID": 21, - "RegionCode": "tor", - "RegionName": "Toronto", - "Latitude": 43.741667, - "Longitude": -79.373333, - "Nodes": [ - { - "Name": "21c", - "RegionID": 21, - "HostName": "derp21c.tailscale.com", - "IPv4": "162.248.221.215", - "IPv6": "2607:f740:50::f10", - "CanPort80": true - }, - { - "Name": "21d", - "RegionID": 21, - "HostName": "derp21d.tailscale.com", - "IPv4": "162.248.221.248", - "IPv6": "2607:f740:50::ca4", - "CanPort80": true - }, - { - "Name": "21b", - "RegionID": 21, - "HostName": "derp21b.tailscale.com", - "IPv4": "162.248.221.199", - "IPv6": "2607:f740:50::1d1", - "CanPort80": true - } - ] - }, - "22": { - "RegionID": 22, - "RegionCode": "waw", - "RegionName": "Warsaw", - "Latitude": 52.23, - "Longitude": 21.011111, - "Nodes": [ - { - "Name": "22c", - "RegionID": 22, - "HostName": "derp22c.tailscale.com", - "IPv4": "45.159.98.253", - "IPv6": "2a00:dd80:40:100::3f", - "CanPort80": true - }, - { - "Name": "22d", - "RegionID": 22, - "HostName": "derp22d.tailscale.com", - "IPv4": "45.159.98.145", - "IPv6": "2a00:dd80:40:100::211", - "CanPort80": true - }, - { - "Name": "22b", - "RegionID": 22, - "HostName": "derp22b.tailscale.com", - "IPv4": "45.159.98.196", - "IPv6": "2a00:dd80:40:100::316", - "CanPort80": true - } - ] - }, - "23": { - "RegionID": 23, - "RegionCode": "dbi", - "RegionName": "Dubai", - "Latitude": 25.263056, - "Longitude": 55.297222, - "Nodes": [ - { - "Name": "23c", - "RegionID": 23, - "HostName": "derp23c.tailscale.com", - "IPv4": "185.34.3.207", - "IPv6": "2a00:dd80:3f:100::a50", - "CanPort80": true - }, - { - "Name": "23d", - "RegionID": 23, - "HostName": "derp23d.tailscale.com", - "IPv4": "185.34.3.75", - "IPv6": "2a00:dd80:3f:100::97e", - "CanPort80": true - }, - { - "Name": "23b", - "RegionID": 23, - "HostName": "derp23b.tailscale.com", - "IPv4": "185.34.3.232", - "IPv6": "2a00:dd80:3f:100::76f", - "CanPort80": true - } - ] - }, - "24": { - "RegionID": 24, - "RegionCode": "hnl", - "RegionName": "Honolulu", - "Latitude": 21.306944, - "Longitude": -157.858333, - "Nodes": [ - { - "Name": "24c", - "RegionID": 24, - "HostName": "derp24c.tailscale.com", - "IPv4": "208.83.233.233", - "IPv6": "2001:19f0:c000:c591:5400:04ff:fe26:2c5f", - "CanPort80": true - }, - { - "Name": "24d", - "RegionID": 24, - "HostName": "derp24d.tailscale.com", - "IPv4": "208.72.155.133", - "IPv6": "2001:19f0:c000:c564:5400:04ff:fe26:2ba8", - "CanPort80": true - }, - { - "Name": "24b", - "RegionID": 24, - "HostName": "derp24b.tailscale.com", - "IPv4": "208.83.234.151", - "IPv6": "2001:19f0:c000:c586:5400:04ff:fe26:2ba6", - "CanPort80": true - } - ] - }, - "25": { - "RegionID": 25, - "RegionCode": "nai", - "RegionName": "Nairobi", - "Latitude": -1.286389, - "Longitude": 36.817222, - "Nodes": [ - { - "Name": "25c", - "RegionID": 25, - "HostName": "derp25c.tailscale.com", - "IPv4": "102.67.167.37", - "IPv6": "2c0f:edb0:2000:1::2c7", - "CanPort80": true - }, - { - "Name": "25d", - "RegionID": 25, - "HostName": "derp25d.tailscale.com", - "IPv4": "102.67.167.188", - "IPv6": "2c0f:edb0:2000:1::188", - "CanPort80": true - }, - { - "Name": "25b", - "RegionID": 25, - "HostName": "derp25b.tailscale.com", - "IPv4": "102.67.167.245", - "IPv6": "2c0f:edb0:2000:1::2e9", - "CanPort80": true - } - ] - }, - "26": { - "RegionID": 26, - "RegionCode": "nue", - "RegionName": "Nuremberg", - "Latitude": 49.453889, - "Longitude": 11.0775, - "Nodes": [ - { - "Name": "26c", - "RegionID": 26, - "HostName": "derp26c.tailscale.com", - "IPv4": "49.12.193.137", - "IPv6": "2a01:4f8:1c1c:5c70::1", - "CanPort80": true - }, - { - "Name": "26d", - "RegionID": 26, - "HostName": "derp26d.tailscale.com", - "IPv4": "49.13.204.141", - "IPv6": "2a01:4f8:1c0c:7d06::1", - "CanPort80": true - }, - { - "Name": "26b", - "RegionID": 26, - "HostName": "derp26b.tailscale.com", - "IPv4": "167.235.72.200", - "IPv6": "2a01:4f8:1c1c:47b6::1", - "CanPort80": true - } - ] - }, - "27": { - "RegionID": 27, - "RegionCode": "iad", - "RegionName": "Ashburn", - "Latitude": 39.03, - "Longitude": -77.471111, - "Nodes": [ - { - "Name": "27d", - "RegionID": 27, - "HostName": "derp27d.tailscale.com", - "IPv4": "178.156.152.106", - "IPv6": "2a01:4ff:f0:3c8e::1", - "CanPort80": true - }, - { - "Name": "27c", - "RegionID": 27, - "HostName": "derp27c.tailscale.com", - "IPv4": "178.156.152.91", - "IPv6": "2a01:4ff:f0:3913::1", - "CanPort80": true - }, - { - "Name": "27e", - "RegionID": 27, - "HostName": "derp27e.tailscale.com", - "IPv4": "178.156.134.232", - "IPv6": "2a01:4ff:f0:28d4::1", - "CanPort80": true - }, - { - "Name": "27b", - "RegionID": 27, - "HostName": "derp27b.tailscale.com", - "IPv4": "5.161.218.233", - "IPv6": "2a01:4ff:f0:3db9::1", - "CanPort80": true - } - ] - }, - "28": { - "RegionID": 28, - "RegionCode": "hel", - "RegionName": "Helsinki", - "Latitude": 60.170833, - "Longitude": 24.9375, - "Nodes": [ - { - "Name": "28c", - "RegionID": 28, - "HostName": "derp28c.tailscale.com", - "IPv4": "95.217.2.165", - "IPv6": "2a01:4f9:c012:cd74::1", - "CanPort80": true - }, - { - "Name": "28d", - "RegionID": 28, - "HostName": "derp28d.tailscale.com", - "IPv4": "157.180.28.32", - "IPv6": "2a01:4f9:c012:2e5b::1", - "CanPort80": true - }, - { - "Name": "28b", - "RegionID": 28, - "HostName": "derp28b.tailscale.com", - "IPv4": "65.109.143.62", - "IPv6": "2a01:4f9:c012:d55c::1", - "CanPort80": true - } - ] - }, - "3": { - "RegionID": 3, - "RegionCode": "sin", - "RegionName": "Singapore", - "Latitude": 1.3521, - "Longitude": 103.8198, - "Nodes": [ - { - "Name": "3g", - "RegionID": 3, - "HostName": "derp3g.tailscale.com", - "IPv4": "172.237.72.79", - "IPv6": "2600:3c15::2000:adff:fe08:6fab", - "CanPort80": true - }, - { - "Name": "3f", - "RegionID": 3, - "HostName": "derp3f.tailscale.com", - "IPv4": "172.237.72.8", - "IPv6": "2600:3c15::2000:53ff:fe48:a668", - "CanPort80": true - }, - { - "Name": "3h", - "RegionID": 3, - "HostName": "derp3h.tailscale.com", - "IPv4": "172.237.66.30", - "IPv6": "2600:3c15::2000:3dff:fe44:50aa", - "CanPort80": true - }, - { - "Name": "3e", - "RegionID": 3, - "HostName": "derp3e.tailscale.com", - "IPv4": "172.237.72.43", - "IPv6": "2600:3c15::2000:6cff:fee4:d799", - "CanPort80": true - } - ] - }, - "4": { - "RegionID": 4, - "RegionCode": "fra", - "RegionName": "Frankfurt", - "Latitude": 50.1109, - "Longitude": 8.6821, - "Nodes": [ - { - "Name": "4h", - "RegionID": 4, - "HostName": "derp4h.tailscale.com", - "IPv4": "185.40.234.77", - "IPv6": "2a00:dd80:20::bcf", - "CanPort80": true - }, - { - "Name": "4g", - "RegionID": 4, - "HostName": "derp4g.tailscale.com", - "IPv4": "185.40.234.113", - "IPv6": "2a00:dd80:20::8f", - "CanPort80": true - }, - { - "Name": "4i", - "RegionID": 4, - "HostName": "derp4i.tailscale.com", - "IPv4": "185.40.234.53", - "IPv6": "2a00:dd80:20::8a6", - "CanPort80": true - }, - { - "Name": "4f", - "RegionID": 4, - "HostName": "derp4f.tailscale.com", - "IPv4": "185.40.234.219", - "IPv6": "2a00:dd80:20::a25", - "CanPort80": true - } - ] - }, - "5": { - "RegionID": 5, - "RegionCode": "syd", - "RegionName": "Sydney", - "Latitude": -33.867778, - "Longitude": 151.21, - "Nodes": [ - { - "Name": "5f", - "RegionID": 5, - "HostName": "derp5f.tailscale.com", - "IPv4": "172.105.166.103", - "IPv6": "2400:8907::2000:ccff:fe1f:80da", - "CanPort80": true - }, - { - "Name": "5g", - "RegionID": 5, - "HostName": "derp5g.tailscale.com", - "IPv4": "172.105.169.57", - "IPv6": "2400:8907::2000:2fff:fea7:57f4", - "CanPort80": true - }, - { - "Name": "5e", - "RegionID": 5, - "HostName": "derp5e.tailscale.com", - "IPv4": "172.105.179.230", - "IPv6": "2400:8907::2000:ceff:fe8d:4f4e", - "CanPort80": true - } - ] - }, - "6": { - "RegionID": 6, - "RegionCode": "blr", - "RegionName": "Bengaluru", - "Latitude": 12.9716, - "Longitude": 77.5946, - "Nodes": [ - { - "Name": "6a", - "RegionID": 6, - "HostName": "derp6.tailscale.com", - "IPv4": "68.183.90.120", - "IPv6": "2400:6180:100:d0::982:d001", - "CanPort80": true - } - ] - }, - "7": { - "RegionID": 7, - "RegionCode": "tok", - "RegionName": "Tokyo", - "Latitude": 35.6764, - "Longitude": 139.65, - "Nodes": [ - { - "Name": "7g", - "RegionID": 7, - "HostName": "derp7g.tailscale.com", - "IPv4": "172.238.6.179", - "IPv6": "2600:3c18::2000:3fff:fe80:3ebd", - "CanPort80": true - }, - { - "Name": "7f", - "RegionID": 7, - "HostName": "derp7f.tailscale.com", - "IPv4": "172.238.6.34", - "IPv6": "2600:3c18::2000:acff:fe8e:3ed5", - "CanPort80": true - }, - { - "Name": "7h", - "RegionID": 7, - "HostName": "derp7h.tailscale.com", - "IPv4": "172.237.28.183", - "IPv6": "2600:3c18::2000:b1ff:fea9:4560", - "CanPort80": true - }, - { - "Name": "7e", - "RegionID": 7, - "HostName": "derp7e.tailscale.com", - "IPv4": "172.238.6.180", - "IPv6": "2600:3c18::2000:60ff:fe0f:6e83", - "STUNOnly": true, - "CanPort80": true - } - ] - }, - "8": { - "RegionID": 8, - "RegionCode": "lhr", - "RegionName": "London", - "Latitude": 51.5072, - "Longitude": 0.1276, - "Nodes": [ - { - "Name": "8f", - "RegionID": 8, - "HostName": "derp8f.tailscale.com", - "IPv4": "176.58.88.183", - "IPv6": "2a00:dd80:3a::dfa", - "CanPort80": true - }, - { - "Name": "8g", - "RegionID": 8, - "HostName": "derp8g.tailscale.com", - "IPv4": "176.58.92.254", - "IPv6": "2a00:dd80:3a::ed", - "CanPort80": true - }, - { - "Name": "8e", - "RegionID": 8, - "HostName": "derp8e.tailscale.com", - "IPv4": "176.58.92.144", - "IPv6": "2a00:dd80:3a::b33", - "CanPort80": true - } - ] - }, - "9": { - "RegionID": 9, - "RegionCode": "dfw", - "RegionName": "Dallas", - "Latitude": 32.779167, - "Longitude": -96.808889, - "Nodes": [ - { - "Name": "9e", - "RegionID": 9, - "HostName": "derp9e.tailscale.com", - "IPv4": "192.73.248.83", - "IPv6": "2607:f740:100::359", - "CanPort80": true - }, - { - "Name": "9f", - "RegionID": 9, - "HostName": "derp9f.tailscale.com", - "IPv4": "209.177.156.197", - "IPv6": "2607:f740:100::cad", - "CanPort80": true - }, - { - "Name": "9d", - "RegionID": 9, - "HostName": "derp9d.tailscale.com", - "IPv4": "209.177.156.94", - "IPv6": "2607:f740:100::c05", - "CanPort80": true - } - ] - } - } - }, - "DisplayMessages": null, - "TKAEnabled": false, - "TKAHead": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", - "Domain": "kratail2tid@passkey", - "DomainAuditLogID": "", - "UserProfiles": { - "1440249486084758": { - "ID": 1440249486084758, - "LoginName": "tagged-server.tail78f774.ts.net", - "DisplayName": "tagged-server" - } - } + "PacketFilterRules": 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.124.195.93": { - "peer_name": "exit-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-kris/tailscaled.sock whois --json 100.124.195.93", - "response": null - }, - "100.116.18.24": { - "peer_name": "exit-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-kris/tailscaled.sock whois --json 100.116.18.24", - "response": null - }, - "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.107.162.14": { - "peer_name": "group-a-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-kris/tailscaled.sock whois --json 100.107.162.14", - "response": null - }, - "100.77.135.18": { - "peer_name": "group-b-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-kris/tailscaled.sock whois --json 100.77.135.18", - "response": null - }, - "100.105.127.107": { - "peer_name": "multi-exit-router", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-kris/tailscaled.sock whois --json 100.105.127.107", - "response": null - }, - "100.109.43.124": { - "peer_name": "router-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-kris/tailscaled.sock whois --json 100.109.43.124", - "response": null - }, - "100.65.172.123": { - "peer_name": "router-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-kris/tailscaled.sock whois --json 100.65.172.123", - "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 - } - }, "netmap": { - "SelfNode": { - "ID": 7728836216590060, - "StableID": "nf4dJTRQM321CNTRL", - "Name": "user-kris.tail78f774.ts.net.", - "User": 4538565228176803, - "Key": "nodekey:40d0f8f49fd519e4a4a2b7d278dcc8863254d4fb8b0219f1d1304cdd172e795f", - "KeyExpiry": "2026-08-19T14:09:34Z", - "DiscoKey": "discokey:60de987544859962048376b0950731bfa8017a7fc7df694ef376d4bb42eb9871", - "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:59717", "10.65.0.27:59717", "172.17.0.1:59717"], - "Hostinfo": { - "Hostname": "user-kris", - "Services": [ - { "Proto": "peerapi4", "Port": 40159 }, - { "Proto": "peerapi6", "Port": 40159 }, - { "Proto": "peerapi-dns-proxy", "Port": 1 } - ] - }, - "Created": "2026-02-20T14:09:34.803901523Z", - "MachineAuthorized": true, - "CapMap": { - "https://tailscale.com/cap/file-sharing": null, - "https://tailscale.com/cap/is-admin": null, - "https://tailscale.com/cap/ssh": null, - "https://tailscale.com/cap/tailnet-lock": null, - "probe-udp-lifetime": null, - "ssh-behavior-v1": null, - "ssh-env-vars": null, - "store-appc-routes": null, - "tailnet-display-name": ["kratail2tid@passkey"] - }, - "ComputedName": "user-kris", - "ComputedNameWithHost": "user-kris" - }, - "AllCaps": [ - "store-appc-routes", - "https://tailscale.com/cap/tailnet-lock", - "ssh-behavior-v1", - "https://tailscale.com/cap/is-admin", - "ssh-env-vars", - "https://tailscale.com/cap/file-sharing", - "https://tailscale.com/cap/ssh", - "tailnet-display-name", - "probe-udp-lifetime" - ], - "NodeKey": "nodekey:40d0f8f49fd519e4a4a2b7d278dcc8863254d4fb8b0219f1d1304cdd172e795f", - "MachineKey": "mkey:ff16066d907c58407972ee4a05a30386bd21bc0b420d8f9290eb70b95b3e1457", "Peers": [], - "DNS": { - "Routes": { - "tail78f774.ts.net.": null, - "ts.net.": [{ "Addr": "199.247.155.53" }, { "Addr": "2620:111:8007::53" }] - }, - "Domains": ["tail78f774.ts.net"], - "Proxied": true, - "ExitNodeFilteredSet": [".ts.net", ".tailscale.net"] - }, - "PacketFilter": [], - "PacketFilterRules": null, - "SSHPolicy": { "rules": [] }, - "CollectServices": false, - "DERPMap": { - "Regions": { - "1": { - "RegionID": 1, - "RegionCode": "nyc", - "RegionName": "New York City", - "Latitude": 40.7128, - "Longitude": -74.006, - "Nodes": [ - { - "Name": "1h", - "RegionID": 1, - "HostName": "derp1h.tailscale.com", - "IPv4": "199.38.181.93", - "IPv6": "2607:f740:f::afd", - "CanPort80": true - }, - { - "Name": "1g", - "RegionID": 1, - "HostName": "derp1g.tailscale.com", - "IPv4": "209.177.145.120", - "IPv6": "2607:f740:f::3eb", - "CanPort80": true - }, - { - "Name": "1i", - "RegionID": 1, - "HostName": "derp1i.tailscale.com", - "IPv4": "199.38.181.103", - "IPv6": "2607:f740:f::e19", - "CanPort80": true - }, - { - "Name": "1f", - "RegionID": 1, - "HostName": "derp1f.tailscale.com", - "IPv4": "199.38.181.104", - "IPv6": "2607:f740:f::bc", - "CanPort80": true - } - ] - }, - "10": { - "RegionID": 10, - "RegionCode": "sea", - "RegionName": "Seattle", - "Latitude": 47.609722, - "Longitude": -122.333056, - "Nodes": [ - { - "Name": "10c", - "RegionID": 10, - "HostName": "derp10c.tailscale.com", - "IPv4": "192.73.240.121", - "IPv6": "2607:f740:14::40c", - "CanPort80": true - }, - { - "Name": "10d", - "RegionID": 10, - "HostName": "derp10d.tailscale.com", - "IPv4": "192.73.240.132", - "IPv6": "2607:f740:14::500", - "CanPort80": true - }, - { - "Name": "10b", - "RegionID": 10, - "HostName": "derp10b.tailscale.com", - "IPv4": "192.73.240.161", - "IPv6": "2607:f740:14::61c", - "CanPort80": true - } - ] - }, - "11": { - "RegionID": 11, - "RegionCode": "sao", - "RegionName": "São Paulo", - "Latitude": -23.55, - "Longitude": -46.633333, - "Nodes": [ - { - "Name": "11f", - "RegionID": 11, - "HostName": "derp11f.tailscale.com", - "IPv4": "172.237.61.197", - "IPv6": "2600:3c0d::2000:3bff:fe44:6166", - "CanPort80": true - }, - { - "Name": "11g", - "RegionID": 11, - "HostName": "derp11g.tailscale.com", - "IPv4": "172.237.61.190", - "IPv6": "2600:3c0d::2000:62ff:febe:2e67", - "CanPort80": true - }, - { - "Name": "11e", - "RegionID": 11, - "HostName": "derp11e.tailscale.com", - "IPv4": "172.237.61.194", - "IPv6": "2600:3c0d::2000:d2ff:fe43:1790", - "CanPort80": true - } - ] - }, - "12": { - "RegionID": 12, - "RegionCode": "ord", - "RegionName": "Chicago", - "Latitude": 41.881944, - "Longitude": -87.627778, - "Nodes": [ - { - "Name": "12e", - "RegionID": 12, - "HostName": "derp12e.tailscale.com", - "IPv4": "209.177.158.15", - "IPv6": "2607:f740:e::b17", - "CanPort80": true - }, - { - "Name": "12f", - "RegionID": 12, - "HostName": "derp12f.tailscale.com", - "IPv4": "199.38.182.118", - "IPv6": "2607:f740:e::4c8", - "CanPort80": true - }, - { - "Name": "12d", - "RegionID": 12, - "HostName": "derp12d.tailscale.com", - "IPv4": "209.177.158.246", - "IPv6": "2607:f740:e::811", - "CanPort80": true - } - ] - }, - "13": { - "RegionID": 13, - "RegionCode": "den", - "RegionName": "Denver", - "Latitude": 39.7392, - "Longitude": -104.9849, - "Nodes": [ - { - "Name": "13c", - "RegionID": 13, - "HostName": "derp13c.tailscale.com", - "IPv4": "192.73.242.28", - "IPv6": "2607:f740:16::5c", - "CanPort80": true - }, - { - "Name": "13d", - "RegionID": 13, - "HostName": "derp13d.tailscale.com", - "IPv4": "192.73.242.204", - "IPv6": "2607:f740:16::c23", - "CanPort80": true - }, - { - "Name": "13b", - "RegionID": 13, - "HostName": "derp13b.tailscale.com", - "IPv4": "192.73.242.187", - "IPv6": "2607:f740:16::640", - "CanPort80": true - } - ] - }, - "14": { - "RegionID": 14, - "RegionCode": "ams", - "RegionName": "Amsterdam", - "Latitude": 52.372778, - "Longitude": 4.893611, - "Nodes": [ - { - "Name": "14c", - "RegionID": 14, - "HostName": "derp14c.tailscale.com", - "IPv4": "176.58.93.147", - "IPv6": "2a00:dd80:3c::b09", - "CanPort80": true - }, - { - "Name": "14d", - "RegionID": 14, - "HostName": "derp14d.tailscale.com", - "IPv4": "176.58.93.154", - "IPv6": "2a00:dd80:3c::3d5", - "CanPort80": true - }, - { - "Name": "14b", - "RegionID": 14, - "HostName": "derp14b.tailscale.com", - "IPv4": "176.58.93.248", - "IPv6": "2a00:dd80:3c::807", - "CanPort80": true - } - ] - }, - "15": { - "RegionID": 15, - "RegionCode": "jnb", - "RegionName": "Johannesburg", - "Latitude": -26.204444, - "Longitude": 28.045556, - "Nodes": [ - { - "Name": "15c", - "RegionID": 15, - "HostName": "derp15c.tailscale.com", - "IPv4": "102.67.165.185", - "IPv6": "2c0f:edb0:0:10::b59", - "CanPort80": true - }, - { - "Name": "15d", - "RegionID": 15, - "HostName": "derp15d.tailscale.com", - "IPv4": "102.67.165.36", - "IPv6": "2c0f:edb0:0:10::599", - "CanPort80": true - }, - { - "Name": "15b", - "RegionID": 15, - "HostName": "derp15b.tailscale.com", - "IPv4": "102.67.165.90", - "IPv6": "2c0f:edb0:0:10::963", - "CanPort80": true - } - ] - }, - "16": { - "RegionID": 16, - "RegionCode": "mia", - "RegionName": "Miami", - "Latitude": 25.78, - "Longitude": -80.21, - "Nodes": [ - { - "Name": "16c", - "RegionID": 16, - "HostName": "derp16c.tailscale.com", - "IPv4": "192.73.243.229", - "IPv6": "2607:f740:17::4e4", - "CanPort80": true - }, - { - "Name": "16d", - "RegionID": 16, - "HostName": "derp16d.tailscale.com", - "IPv4": "192.73.243.141", - "IPv6": "2607:f740:17::475", - "CanPort80": true - }, - { - "Name": "16b", - "RegionID": 16, - "HostName": "derp16b.tailscale.com", - "IPv4": "192.73.243.135", - "IPv6": "2607:f740:17::476", - "CanPort80": true - } - ] - }, - "17": { - "RegionID": 17, - "RegionCode": "lax", - "RegionName": "Los Angeles", - "Latitude": 34.05, - "Longitude": -118.25, - "Nodes": [ - { - "Name": "17c", - "RegionID": 17, - "HostName": "derp17c.tailscale.com", - "IPv4": "208.111.40.12", - "IPv6": "2607:f740:c::10", - "CanPort80": true - }, - { - "Name": "17d", - "RegionID": 17, - "HostName": "derp17d.tailscale.com", - "IPv4": "208.111.40.216", - "IPv6": "2607:f740:c::e1b", - "CanPort80": true - }, - { - "Name": "17b", - "RegionID": 17, - "HostName": "derp17b.tailscale.com", - "IPv4": "192.73.244.245", - "IPv6": "2607:f740:c::646", - "CanPort80": true - } - ] - }, - "18": { - "RegionID": 18, - "RegionCode": "par", - "RegionName": "Paris", - "Latitude": 48.856667, - "Longitude": 2.352222, - "Nodes": [ - { - "Name": "18c", - "RegionID": 18, - "HostName": "derp18c.tailscale.com", - "IPv4": "176.58.90.207", - "IPv6": "2a00:dd80:3e::c19", - "CanPort80": true - }, - { - "Name": "18d", - "RegionID": 18, - "HostName": "derp18d.tailscale.com", - "IPv4": "176.58.90.104", - "IPv6": "2a00:dd80:3e::f2e", - "CanPort80": true - }, - { - "Name": "18b", - "RegionID": 18, - "HostName": "derp18b.tailscale.com", - "IPv4": "176.58.90.147", - "IPv6": "2a00:dd80:3e::363", - "CanPort80": true - } - ] - }, - "19": { - "RegionID": 19, - "RegionCode": "mad", - "RegionName": "Madrid", - "Latitude": 40.416944, - "Longitude": -3.703333, - "Nodes": [ - { - "Name": "19c", - "RegionID": 19, - "HostName": "derp19c.tailscale.com", - "IPv4": "45.159.97.61", - "IPv6": "2a00:dd80:14:10::20", - "CanPort80": true - }, - { - "Name": "19d", - "RegionID": 19, - "HostName": "derp19d.tailscale.com", - "IPv4": "45.159.97.233", - "IPv6": "2a00:dd80:14:10::34a", - "CanPort80": true - }, - { - "Name": "19b", - "RegionID": 19, - "HostName": "derp19b.tailscale.com", - "IPv4": "45.159.97.144", - "IPv6": "2a00:dd80:14:10::335", - "CanPort80": true - } - ] - }, - "2": { - "RegionID": 2, - "RegionCode": "sfo", - "RegionName": "San Francisco", - "Latitude": 37.7775, - "Longitude": -122.416389, - "Nodes": [ - { - "Name": "2e", - "RegionID": 2, - "HostName": "derp2e.tailscale.com", - "IPv4": "192.73.252.134", - "IPv6": "2607:f740:0:3f::44c", - "CanPort80": true - }, - { - "Name": "2f", - "RegionID": 2, - "HostName": "derp2f.tailscale.com", - "IPv4": "208.111.34.178", - "IPv6": "2607:f740:0:3f::f4", - "CanPort80": true - }, - { - "Name": "2d", - "RegionID": 2, - "HostName": "derp2d.tailscale.com", - "IPv4": "192.73.252.65", - "IPv6": "2607:f740:0:3f::287", - "CanPort80": true - } - ] - }, - "20": { - "RegionID": 20, - "RegionCode": "hkg", - "RegionName": "Hong Kong", - "Latitude": 22.3193, - "Longitude": 114.1694, - "Nodes": [ - { - "Name": "20c", - "RegionID": 20, - "HostName": "derp20c.tailscale.com", - "IPv4": "205.147.105.30", - "IPv6": "2403:2500:8000:1::5fb", - "CanPort80": true - }, - { - "Name": "20d", - "RegionID": 20, - "HostName": "derp20d.tailscale.com", - "IPv4": "205.147.105.78", - "IPv6": "2403:2500:8000:1::e9a", - "CanPort80": true - }, - { - "Name": "20b", - "RegionID": 20, - "HostName": "derp20b.tailscale.com", - "IPv4": "103.6.84.152", - "IPv6": "2403:2500:8000:1::ef6", - "CanPort80": true - } - ] - }, - "21": { - "RegionID": 21, - "RegionCode": "tor", - "RegionName": "Toronto", - "Latitude": 43.741667, - "Longitude": -79.373333, - "Nodes": [ - { - "Name": "21c", - "RegionID": 21, - "HostName": "derp21c.tailscale.com", - "IPv4": "162.248.221.215", - "IPv6": "2607:f740:50::f10", - "CanPort80": true - }, - { - "Name": "21d", - "RegionID": 21, - "HostName": "derp21d.tailscale.com", - "IPv4": "162.248.221.248", - "IPv6": "2607:f740:50::ca4", - "CanPort80": true - }, - { - "Name": "21b", - "RegionID": 21, - "HostName": "derp21b.tailscale.com", - "IPv4": "162.248.221.199", - "IPv6": "2607:f740:50::1d1", - "CanPort80": true - } - ] - }, - "22": { - "RegionID": 22, - "RegionCode": "waw", - "RegionName": "Warsaw", - "Latitude": 52.23, - "Longitude": 21.011111, - "Nodes": [ - { - "Name": "22c", - "RegionID": 22, - "HostName": "derp22c.tailscale.com", - "IPv4": "45.159.98.253", - "IPv6": "2a00:dd80:40:100::3f", - "CanPort80": true - }, - { - "Name": "22d", - "RegionID": 22, - "HostName": "derp22d.tailscale.com", - "IPv4": "45.159.98.145", - "IPv6": "2a00:dd80:40:100::211", - "CanPort80": true - }, - { - "Name": "22b", - "RegionID": 22, - "HostName": "derp22b.tailscale.com", - "IPv4": "45.159.98.196", - "IPv6": "2a00:dd80:40:100::316", - "CanPort80": true - } - ] - }, - "23": { - "RegionID": 23, - "RegionCode": "dbi", - "RegionName": "Dubai", - "Latitude": 25.263056, - "Longitude": 55.297222, - "Nodes": [ - { - "Name": "23c", - "RegionID": 23, - "HostName": "derp23c.tailscale.com", - "IPv4": "185.34.3.207", - "IPv6": "2a00:dd80:3f:100::a50", - "CanPort80": true - }, - { - "Name": "23d", - "RegionID": 23, - "HostName": "derp23d.tailscale.com", - "IPv4": "185.34.3.75", - "IPv6": "2a00:dd80:3f:100::97e", - "CanPort80": true - }, - { - "Name": "23b", - "RegionID": 23, - "HostName": "derp23b.tailscale.com", - "IPv4": "185.34.3.232", - "IPv6": "2a00:dd80:3f:100::76f", - "CanPort80": true - } - ] - }, - "24": { - "RegionID": 24, - "RegionCode": "hnl", - "RegionName": "Honolulu", - "Latitude": 21.306944, - "Longitude": -157.858333, - "Nodes": [ - { - "Name": "24c", - "RegionID": 24, - "HostName": "derp24c.tailscale.com", - "IPv4": "208.83.233.233", - "IPv6": "2001:19f0:c000:c591:5400:04ff:fe26:2c5f", - "CanPort80": true - }, - { - "Name": "24d", - "RegionID": 24, - "HostName": "derp24d.tailscale.com", - "IPv4": "208.72.155.133", - "IPv6": "2001:19f0:c000:c564:5400:04ff:fe26:2ba8", - "CanPort80": true - }, - { - "Name": "24b", - "RegionID": 24, - "HostName": "derp24b.tailscale.com", - "IPv4": "208.83.234.151", - "IPv6": "2001:19f0:c000:c586:5400:04ff:fe26:2ba6", - "CanPort80": true - } - ] - }, - "25": { - "RegionID": 25, - "RegionCode": "nai", - "RegionName": "Nairobi", - "Latitude": -1.286389, - "Longitude": 36.817222, - "Nodes": [ - { - "Name": "25c", - "RegionID": 25, - "HostName": "derp25c.tailscale.com", - "IPv4": "102.67.167.37", - "IPv6": "2c0f:edb0:2000:1::2c7", - "CanPort80": true - }, - { - "Name": "25d", - "RegionID": 25, - "HostName": "derp25d.tailscale.com", - "IPv4": "102.67.167.188", - "IPv6": "2c0f:edb0:2000:1::188", - "CanPort80": true - }, - { - "Name": "25b", - "RegionID": 25, - "HostName": "derp25b.tailscale.com", - "IPv4": "102.67.167.245", - "IPv6": "2c0f:edb0:2000:1::2e9", - "CanPort80": true - } - ] - }, - "26": { - "RegionID": 26, - "RegionCode": "nue", - "RegionName": "Nuremberg", - "Latitude": 49.453889, - "Longitude": 11.0775, - "Nodes": [ - { - "Name": "26c", - "RegionID": 26, - "HostName": "derp26c.tailscale.com", - "IPv4": "49.12.193.137", - "IPv6": "2a01:4f8:1c1c:5c70::1", - "CanPort80": true - }, - { - "Name": "26d", - "RegionID": 26, - "HostName": "derp26d.tailscale.com", - "IPv4": "49.13.204.141", - "IPv6": "2a01:4f8:1c0c:7d06::1", - "CanPort80": true - }, - { - "Name": "26b", - "RegionID": 26, - "HostName": "derp26b.tailscale.com", - "IPv4": "167.235.72.200", - "IPv6": "2a01:4f8:1c1c:47b6::1", - "CanPort80": true - } - ] - }, - "27": { - "RegionID": 27, - "RegionCode": "iad", - "RegionName": "Ashburn", - "Latitude": 39.03, - "Longitude": -77.471111, - "Nodes": [ - { - "Name": "27d", - "RegionID": 27, - "HostName": "derp27d.tailscale.com", - "IPv4": "178.156.152.106", - "IPv6": "2a01:4ff:f0:3c8e::1", - "CanPort80": true - }, - { - "Name": "27c", - "RegionID": 27, - "HostName": "derp27c.tailscale.com", - "IPv4": "178.156.152.91", - "IPv6": "2a01:4ff:f0:3913::1", - "CanPort80": true - }, - { - "Name": "27e", - "RegionID": 27, - "HostName": "derp27e.tailscale.com", - "IPv4": "178.156.134.232", - "IPv6": "2a01:4ff:f0:28d4::1", - "CanPort80": true - }, - { - "Name": "27b", - "RegionID": 27, - "HostName": "derp27b.tailscale.com", - "IPv4": "5.161.218.233", - "IPv6": "2a01:4ff:f0:3db9::1", - "CanPort80": true - } - ] - }, - "28": { - "RegionID": 28, - "RegionCode": "hel", - "RegionName": "Helsinki", - "Latitude": 60.170833, - "Longitude": 24.9375, - "Nodes": [ - { - "Name": "28c", - "RegionID": 28, - "HostName": "derp28c.tailscale.com", - "IPv4": "95.217.2.165", - "IPv6": "2a01:4f9:c012:cd74::1", - "CanPort80": true - }, - { - "Name": "28d", - "RegionID": 28, - "HostName": "derp28d.tailscale.com", - "IPv4": "157.180.28.32", - "IPv6": "2a01:4f9:c012:2e5b::1", - "CanPort80": true - }, - { - "Name": "28b", - "RegionID": 28, - "HostName": "derp28b.tailscale.com", - "IPv4": "65.109.143.62", - "IPv6": "2a01:4f9:c012:d55c::1", - "CanPort80": true - } - ] - }, - "3": { - "RegionID": 3, - "RegionCode": "sin", - "RegionName": "Singapore", - "Latitude": 1.3521, - "Longitude": 103.8198, - "Nodes": [ - { - "Name": "3g", - "RegionID": 3, - "HostName": "derp3g.tailscale.com", - "IPv4": "172.237.72.79", - "IPv6": "2600:3c15::2000:adff:fe08:6fab", - "CanPort80": true - }, - { - "Name": "3f", - "RegionID": 3, - "HostName": "derp3f.tailscale.com", - "IPv4": "172.237.72.8", - "IPv6": "2600:3c15::2000:53ff:fe48:a668", - "CanPort80": true - }, - { - "Name": "3h", - "RegionID": 3, - "HostName": "derp3h.tailscale.com", - "IPv4": "172.237.66.30", - "IPv6": "2600:3c15::2000:3dff:fe44:50aa", - "CanPort80": true - }, - { - "Name": "3e", - "RegionID": 3, - "HostName": "derp3e.tailscale.com", - "IPv4": "172.237.72.43", - "IPv6": "2600:3c15::2000:6cff:fee4:d799", - "CanPort80": true - } - ] - }, - "4": { - "RegionID": 4, - "RegionCode": "fra", - "RegionName": "Frankfurt", - "Latitude": 50.1109, - "Longitude": 8.6821, - "Nodes": [ - { - "Name": "4h", - "RegionID": 4, - "HostName": "derp4h.tailscale.com", - "IPv4": "185.40.234.77", - "IPv6": "2a00:dd80:20::bcf", - "CanPort80": true - }, - { - "Name": "4g", - "RegionID": 4, - "HostName": "derp4g.tailscale.com", - "IPv4": "185.40.234.113", - "IPv6": "2a00:dd80:20::8f", - "CanPort80": true - }, - { - "Name": "4i", - "RegionID": 4, - "HostName": "derp4i.tailscale.com", - "IPv4": "185.40.234.53", - "IPv6": "2a00:dd80:20::8a6", - "CanPort80": true - }, - { - "Name": "4f", - "RegionID": 4, - "HostName": "derp4f.tailscale.com", - "IPv4": "185.40.234.219", - "IPv6": "2a00:dd80:20::a25", - "CanPort80": true - } - ] - }, - "5": { - "RegionID": 5, - "RegionCode": "syd", - "RegionName": "Sydney", - "Latitude": -33.867778, - "Longitude": 151.21, - "Nodes": [ - { - "Name": "5f", - "RegionID": 5, - "HostName": "derp5f.tailscale.com", - "IPv4": "172.105.166.103", - "IPv6": "2400:8907::2000:ccff:fe1f:80da", - "CanPort80": true - }, - { - "Name": "5g", - "RegionID": 5, - "HostName": "derp5g.tailscale.com", - "IPv4": "172.105.169.57", - "IPv6": "2400:8907::2000:2fff:fea7:57f4", - "CanPort80": true - }, - { - "Name": "5e", - "RegionID": 5, - "HostName": "derp5e.tailscale.com", - "IPv4": "172.105.179.230", - "IPv6": "2400:8907::2000:ceff:fe8d:4f4e", - "CanPort80": true - } - ] - }, - "6": { - "RegionID": 6, - "RegionCode": "blr", - "RegionName": "Bengaluru", - "Latitude": 12.9716, - "Longitude": 77.5946, - "Nodes": [ - { - "Name": "6a", - "RegionID": 6, - "HostName": "derp6.tailscale.com", - "IPv4": "68.183.90.120", - "IPv6": "2400:6180:100:d0::982:d001", - "CanPort80": true - } - ] - }, - "7": { - "RegionID": 7, - "RegionCode": "tok", - "RegionName": "Tokyo", - "Latitude": 35.6764, - "Longitude": 139.65, - "Nodes": [ - { - "Name": "7g", - "RegionID": 7, - "HostName": "derp7g.tailscale.com", - "IPv4": "172.238.6.179", - "IPv6": "2600:3c18::2000:3fff:fe80:3ebd", - "CanPort80": true - }, - { - "Name": "7f", - "RegionID": 7, - "HostName": "derp7f.tailscale.com", - "IPv4": "172.238.6.34", - "IPv6": "2600:3c18::2000:acff:fe8e:3ed5", - "CanPort80": true - }, - { - "Name": "7h", - "RegionID": 7, - "HostName": "derp7h.tailscale.com", - "IPv4": "172.237.28.183", - "IPv6": "2600:3c18::2000:b1ff:fea9:4560", - "CanPort80": true - }, - { - "Name": "7e", - "RegionID": 7, - "HostName": "derp7e.tailscale.com", - "IPv4": "172.238.6.180", - "IPv6": "2600:3c18::2000:60ff:fe0f:6e83", - "STUNOnly": true, - "CanPort80": true - } - ] - }, - "8": { - "RegionID": 8, - "RegionCode": "lhr", - "RegionName": "London", - "Latitude": 51.5072, - "Longitude": 0.1276, - "Nodes": [ - { - "Name": "8f", - "RegionID": 8, - "HostName": "derp8f.tailscale.com", - "IPv4": "176.58.88.183", - "IPv6": "2a00:dd80:3a::dfa", - "CanPort80": true - }, - { - "Name": "8g", - "RegionID": 8, - "HostName": "derp8g.tailscale.com", - "IPv4": "176.58.92.254", - "IPv6": "2a00:dd80:3a::ed", - "CanPort80": true - }, - { - "Name": "8e", - "RegionID": 8, - "HostName": "derp8e.tailscale.com", - "IPv4": "176.58.92.144", - "IPv6": "2a00:dd80:3a::b33", - "CanPort80": true - } - ] - }, - "9": { - "RegionID": 9, - "RegionCode": "dfw", - "RegionName": "Dallas", - "Latitude": 32.779167, - "Longitude": -96.808889, - "Nodes": [ - { - "Name": "9e", - "RegionID": 9, - "HostName": "derp9e.tailscale.com", - "IPv4": "192.73.248.83", - "IPv6": "2607:f740:100::359", - "CanPort80": true - }, - { - "Name": "9f", - "RegionID": 9, - "HostName": "derp9f.tailscale.com", - "IPv4": "209.177.156.197", - "IPv6": "2607:f740:100::cad", - "CanPort80": true - }, - { - "Name": "9d", - "RegionID": 9, - "HostName": "derp9d.tailscale.com", - "IPv4": "209.177.156.94", - "IPv6": "2607:f740:100::c05", - "CanPort80": true - } - ] - } - } - }, - "DisplayMessages": null, - "TKAEnabled": false, - "TKAHead": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", - "Domain": "kratail2tid@passkey", - "DomainAuditLogID": "", - "UserProfiles": { - "4538565228176803": { - "ID": 4538565228176803, - "LoginName": "kristoffer@dalby.cc", - "DisplayName": "kristoffer" - } - } + "PacketFilterRules": 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.124.195.93": { - "peer_name": "exit-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-mon/tailscaled.sock whois --json 100.124.195.93", - "response": null - }, - "100.116.18.24": { - "peer_name": "exit-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-mon/tailscaled.sock whois --json 100.116.18.24", - "response": null - }, - "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.107.162.14": { - "peer_name": "group-a-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-mon/tailscaled.sock whois --json 100.107.162.14", - "response": null - }, - "100.77.135.18": { - "peer_name": "group-b-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-mon/tailscaled.sock whois --json 100.77.135.18", - "response": null - }, - "100.105.127.107": { - "peer_name": "multi-exit-router", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-mon/tailscaled.sock whois --json 100.105.127.107", - "response": null - }, - "100.109.43.124": { - "peer_name": "router-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-mon/tailscaled.sock whois --json 100.109.43.124", - "response": null - }, - "100.65.172.123": { - "peer_name": "router-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-mon/tailscaled.sock whois --json 100.65.172.123", - "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 - } - }, "netmap": { - "SelfNode": { - "ID": 1840115676059256, - "StableID": "nFzZ7giPNF11CNTRL", - "Name": "user-mon.tail78f774.ts.net.", - "User": 3982058329734709, - "Key": "nodekey:1ca6cca66d2b3811ec290c2f7ac30125c3568e19e303a8e30f6b165c9ee75a51", - "KeyExpiry": "2026-08-19T14:09:00Z", - "DiscoKey": "discokey:67ba1473894f09b564073adb12b27df2a45c513afd9e48922a0346d5d2715d12", - "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:36593", "10.65.0.27:36593", "172.17.0.1:36593"], - "Hostinfo": { - "Hostname": "user-mon", - "Services": [ - { "Proto": "peerapi4", "Port": 33201 }, - { "Proto": "peerapi6", "Port": 33201 }, - { "Proto": "peerapi-dns-proxy", "Port": 1 } - ] - }, - "Created": "2026-02-20T14:09:00.203639664Z", - "MachineAuthorized": true, - "CapMap": { - "https://tailscale.com/cap/file-sharing": null, - "https://tailscale.com/cap/is-admin": null, - "https://tailscale.com/cap/ssh": null, - "https://tailscale.com/cap/tailnet-lock": null, - "probe-udp-lifetime": null, - "ssh-behavior-v1": null, - "ssh-env-vars": null, - "store-appc-routes": null, - "tailnet-display-name": ["kratail2tid@passkey"] - }, - "ComputedName": "user-mon", - "ComputedNameWithHost": "user-mon" - }, - "AllCaps": [ - "store-appc-routes", - "https://tailscale.com/cap/ssh", - "ssh-env-vars", - "ssh-behavior-v1", - "https://tailscale.com/cap/tailnet-lock", - "https://tailscale.com/cap/file-sharing", - "probe-udp-lifetime", - "tailnet-display-name", - "https://tailscale.com/cap/is-admin" - ], - "NodeKey": "nodekey:1ca6cca66d2b3811ec290c2f7ac30125c3568e19e303a8e30f6b165c9ee75a51", - "MachineKey": "mkey:d63fc325663eef5dabd4d236e1fa5a26ed14ad31ea0711840cf755a5e8a9df39", "Peers": [], - "DNS": { - "Routes": { - "tail78f774.ts.net.": null, - "ts.net.": [{ "Addr": "199.247.155.53" }, { "Addr": "2620:111:8007::53" }] - }, - "Domains": ["tail78f774.ts.net"], - "Proxied": true, - "ExitNodeFilteredSet": [".ts.net", ".tailscale.net"] - }, - "PacketFilter": [], - "PacketFilterRules": null, - "SSHPolicy": { "rules": [] }, - "CollectServices": false, - "DERPMap": { - "Regions": { - "1": { - "RegionID": 1, - "RegionCode": "nyc", - "RegionName": "New York City", - "Latitude": 40.7128, - "Longitude": -74.006, - "Nodes": [ - { - "Name": "1h", - "RegionID": 1, - "HostName": "derp1h.tailscale.com", - "IPv4": "199.38.181.93", - "IPv6": "2607:f740:f::afd", - "CanPort80": true - }, - { - "Name": "1g", - "RegionID": 1, - "HostName": "derp1g.tailscale.com", - "IPv4": "209.177.145.120", - "IPv6": "2607:f740:f::3eb", - "CanPort80": true - }, - { - "Name": "1i", - "RegionID": 1, - "HostName": "derp1i.tailscale.com", - "IPv4": "199.38.181.103", - "IPv6": "2607:f740:f::e19", - "CanPort80": true - }, - { - "Name": "1f", - "RegionID": 1, - "HostName": "derp1f.tailscale.com", - "IPv4": "199.38.181.104", - "IPv6": "2607:f740:f::bc", - "CanPort80": true - } - ] - }, - "10": { - "RegionID": 10, - "RegionCode": "sea", - "RegionName": "Seattle", - "Latitude": 47.609722, - "Longitude": -122.333056, - "Nodes": [ - { - "Name": "10c", - "RegionID": 10, - "HostName": "derp10c.tailscale.com", - "IPv4": "192.73.240.121", - "IPv6": "2607:f740:14::40c", - "CanPort80": true - }, - { - "Name": "10d", - "RegionID": 10, - "HostName": "derp10d.tailscale.com", - "IPv4": "192.73.240.132", - "IPv6": "2607:f740:14::500", - "CanPort80": true - }, - { - "Name": "10b", - "RegionID": 10, - "HostName": "derp10b.tailscale.com", - "IPv4": "192.73.240.161", - "IPv6": "2607:f740:14::61c", - "CanPort80": true - } - ] - }, - "11": { - "RegionID": 11, - "RegionCode": "sao", - "RegionName": "São Paulo", - "Latitude": -23.55, - "Longitude": -46.633333, - "Nodes": [ - { - "Name": "11f", - "RegionID": 11, - "HostName": "derp11f.tailscale.com", - "IPv4": "172.237.61.197", - "IPv6": "2600:3c0d::2000:3bff:fe44:6166", - "CanPort80": true - }, - { - "Name": "11g", - "RegionID": 11, - "HostName": "derp11g.tailscale.com", - "IPv4": "172.237.61.190", - "IPv6": "2600:3c0d::2000:62ff:febe:2e67", - "CanPort80": true - }, - { - "Name": "11e", - "RegionID": 11, - "HostName": "derp11e.tailscale.com", - "IPv4": "172.237.61.194", - "IPv6": "2600:3c0d::2000:d2ff:fe43:1790", - "CanPort80": true - } - ] - }, - "12": { - "RegionID": 12, - "RegionCode": "ord", - "RegionName": "Chicago", - "Latitude": 41.881944, - "Longitude": -87.627778, - "Nodes": [ - { - "Name": "12e", - "RegionID": 12, - "HostName": "derp12e.tailscale.com", - "IPv4": "209.177.158.15", - "IPv6": "2607:f740:e::b17", - "CanPort80": true - }, - { - "Name": "12f", - "RegionID": 12, - "HostName": "derp12f.tailscale.com", - "IPv4": "199.38.182.118", - "IPv6": "2607:f740:e::4c8", - "CanPort80": true - }, - { - "Name": "12d", - "RegionID": 12, - "HostName": "derp12d.tailscale.com", - "IPv4": "209.177.158.246", - "IPv6": "2607:f740:e::811", - "CanPort80": true - } - ] - }, - "13": { - "RegionID": 13, - "RegionCode": "den", - "RegionName": "Denver", - "Latitude": 39.7392, - "Longitude": -104.9849, - "Nodes": [ - { - "Name": "13c", - "RegionID": 13, - "HostName": "derp13c.tailscale.com", - "IPv4": "192.73.242.28", - "IPv6": "2607:f740:16::5c", - "CanPort80": true - }, - { - "Name": "13d", - "RegionID": 13, - "HostName": "derp13d.tailscale.com", - "IPv4": "192.73.242.204", - "IPv6": "2607:f740:16::c23", - "CanPort80": true - }, - { - "Name": "13b", - "RegionID": 13, - "HostName": "derp13b.tailscale.com", - "IPv4": "192.73.242.187", - "IPv6": "2607:f740:16::640", - "CanPort80": true - } - ] - }, - "14": { - "RegionID": 14, - "RegionCode": "ams", - "RegionName": "Amsterdam", - "Latitude": 52.372778, - "Longitude": 4.893611, - "Nodes": [ - { - "Name": "14c", - "RegionID": 14, - "HostName": "derp14c.tailscale.com", - "IPv4": "176.58.93.147", - "IPv6": "2a00:dd80:3c::b09", - "CanPort80": true - }, - { - "Name": "14d", - "RegionID": 14, - "HostName": "derp14d.tailscale.com", - "IPv4": "176.58.93.154", - "IPv6": "2a00:dd80:3c::3d5", - "CanPort80": true - }, - { - "Name": "14b", - "RegionID": 14, - "HostName": "derp14b.tailscale.com", - "IPv4": "176.58.93.248", - "IPv6": "2a00:dd80:3c::807", - "CanPort80": true - } - ] - }, - "15": { - "RegionID": 15, - "RegionCode": "jnb", - "RegionName": "Johannesburg", - "Latitude": -26.204444, - "Longitude": 28.045556, - "Nodes": [ - { - "Name": "15c", - "RegionID": 15, - "HostName": "derp15c.tailscale.com", - "IPv4": "102.67.165.185", - "IPv6": "2c0f:edb0:0:10::b59", - "CanPort80": true - }, - { - "Name": "15d", - "RegionID": 15, - "HostName": "derp15d.tailscale.com", - "IPv4": "102.67.165.36", - "IPv6": "2c0f:edb0:0:10::599", - "CanPort80": true - }, - { - "Name": "15b", - "RegionID": 15, - "HostName": "derp15b.tailscale.com", - "IPv4": "102.67.165.90", - "IPv6": "2c0f:edb0:0:10::963", - "CanPort80": true - } - ] - }, - "16": { - "RegionID": 16, - "RegionCode": "mia", - "RegionName": "Miami", - "Latitude": 25.78, - "Longitude": -80.21, - "Nodes": [ - { - "Name": "16c", - "RegionID": 16, - "HostName": "derp16c.tailscale.com", - "IPv4": "192.73.243.229", - "IPv6": "2607:f740:17::4e4", - "CanPort80": true - }, - { - "Name": "16d", - "RegionID": 16, - "HostName": "derp16d.tailscale.com", - "IPv4": "192.73.243.141", - "IPv6": "2607:f740:17::475", - "CanPort80": true - }, - { - "Name": "16b", - "RegionID": 16, - "HostName": "derp16b.tailscale.com", - "IPv4": "192.73.243.135", - "IPv6": "2607:f740:17::476", - "CanPort80": true - } - ] - }, - "17": { - "RegionID": 17, - "RegionCode": "lax", - "RegionName": "Los Angeles", - "Latitude": 34.05, - "Longitude": -118.25, - "Nodes": [ - { - "Name": "17c", - "RegionID": 17, - "HostName": "derp17c.tailscale.com", - "IPv4": "208.111.40.12", - "IPv6": "2607:f740:c::10", - "CanPort80": true - }, - { - "Name": "17d", - "RegionID": 17, - "HostName": "derp17d.tailscale.com", - "IPv4": "208.111.40.216", - "IPv6": "2607:f740:c::e1b", - "CanPort80": true - }, - { - "Name": "17b", - "RegionID": 17, - "HostName": "derp17b.tailscale.com", - "IPv4": "192.73.244.245", - "IPv6": "2607:f740:c::646", - "CanPort80": true - } - ] - }, - "18": { - "RegionID": 18, - "RegionCode": "par", - "RegionName": "Paris", - "Latitude": 48.856667, - "Longitude": 2.352222, - "Nodes": [ - { - "Name": "18c", - "RegionID": 18, - "HostName": "derp18c.tailscale.com", - "IPv4": "176.58.90.207", - "IPv6": "2a00:dd80:3e::c19", - "CanPort80": true - }, - { - "Name": "18d", - "RegionID": 18, - "HostName": "derp18d.tailscale.com", - "IPv4": "176.58.90.104", - "IPv6": "2a00:dd80:3e::f2e", - "CanPort80": true - }, - { - "Name": "18b", - "RegionID": 18, - "HostName": "derp18b.tailscale.com", - "IPv4": "176.58.90.147", - "IPv6": "2a00:dd80:3e::363", - "CanPort80": true - } - ] - }, - "19": { - "RegionID": 19, - "RegionCode": "mad", - "RegionName": "Madrid", - "Latitude": 40.416944, - "Longitude": -3.703333, - "Nodes": [ - { - "Name": "19c", - "RegionID": 19, - "HostName": "derp19c.tailscale.com", - "IPv4": "45.159.97.61", - "IPv6": "2a00:dd80:14:10::20", - "CanPort80": true - }, - { - "Name": "19d", - "RegionID": 19, - "HostName": "derp19d.tailscale.com", - "IPv4": "45.159.97.233", - "IPv6": "2a00:dd80:14:10::34a", - "CanPort80": true - }, - { - "Name": "19b", - "RegionID": 19, - "HostName": "derp19b.tailscale.com", - "IPv4": "45.159.97.144", - "IPv6": "2a00:dd80:14:10::335", - "CanPort80": true - } - ] - }, - "2": { - "RegionID": 2, - "RegionCode": "sfo", - "RegionName": "San Francisco", - "Latitude": 37.7775, - "Longitude": -122.416389, - "Nodes": [ - { - "Name": "2e", - "RegionID": 2, - "HostName": "derp2e.tailscale.com", - "IPv4": "192.73.252.134", - "IPv6": "2607:f740:0:3f::44c", - "CanPort80": true - }, - { - "Name": "2f", - "RegionID": 2, - "HostName": "derp2f.tailscale.com", - "IPv4": "208.111.34.178", - "IPv6": "2607:f740:0:3f::f4", - "CanPort80": true - }, - { - "Name": "2d", - "RegionID": 2, - "HostName": "derp2d.tailscale.com", - "IPv4": "192.73.252.65", - "IPv6": "2607:f740:0:3f::287", - "CanPort80": true - } - ] - }, - "20": { - "RegionID": 20, - "RegionCode": "hkg", - "RegionName": "Hong Kong", - "Latitude": 22.3193, - "Longitude": 114.1694, - "Nodes": [ - { - "Name": "20c", - "RegionID": 20, - "HostName": "derp20c.tailscale.com", - "IPv4": "205.147.105.30", - "IPv6": "2403:2500:8000:1::5fb", - "CanPort80": true - }, - { - "Name": "20d", - "RegionID": 20, - "HostName": "derp20d.tailscale.com", - "IPv4": "205.147.105.78", - "IPv6": "2403:2500:8000:1::e9a", - "CanPort80": true - }, - { - "Name": "20b", - "RegionID": 20, - "HostName": "derp20b.tailscale.com", - "IPv4": "103.6.84.152", - "IPv6": "2403:2500:8000:1::ef6", - "CanPort80": true - } - ] - }, - "21": { - "RegionID": 21, - "RegionCode": "tor", - "RegionName": "Toronto", - "Latitude": 43.741667, - "Longitude": -79.373333, - "Nodes": [ - { - "Name": "21c", - "RegionID": 21, - "HostName": "derp21c.tailscale.com", - "IPv4": "162.248.221.215", - "IPv6": "2607:f740:50::f10", - "CanPort80": true - }, - { - "Name": "21d", - "RegionID": 21, - "HostName": "derp21d.tailscale.com", - "IPv4": "162.248.221.248", - "IPv6": "2607:f740:50::ca4", - "CanPort80": true - }, - { - "Name": "21b", - "RegionID": 21, - "HostName": "derp21b.tailscale.com", - "IPv4": "162.248.221.199", - "IPv6": "2607:f740:50::1d1", - "CanPort80": true - } - ] - }, - "22": { - "RegionID": 22, - "RegionCode": "waw", - "RegionName": "Warsaw", - "Latitude": 52.23, - "Longitude": 21.011111, - "Nodes": [ - { - "Name": "22c", - "RegionID": 22, - "HostName": "derp22c.tailscale.com", - "IPv4": "45.159.98.253", - "IPv6": "2a00:dd80:40:100::3f", - "CanPort80": true - }, - { - "Name": "22d", - "RegionID": 22, - "HostName": "derp22d.tailscale.com", - "IPv4": "45.159.98.145", - "IPv6": "2a00:dd80:40:100::211", - "CanPort80": true - }, - { - "Name": "22b", - "RegionID": 22, - "HostName": "derp22b.tailscale.com", - "IPv4": "45.159.98.196", - "IPv6": "2a00:dd80:40:100::316", - "CanPort80": true - } - ] - }, - "23": { - "RegionID": 23, - "RegionCode": "dbi", - "RegionName": "Dubai", - "Latitude": 25.263056, - "Longitude": 55.297222, - "Nodes": [ - { - "Name": "23c", - "RegionID": 23, - "HostName": "derp23c.tailscale.com", - "IPv4": "185.34.3.207", - "IPv6": "2a00:dd80:3f:100::a50", - "CanPort80": true - }, - { - "Name": "23d", - "RegionID": 23, - "HostName": "derp23d.tailscale.com", - "IPv4": "185.34.3.75", - "IPv6": "2a00:dd80:3f:100::97e", - "CanPort80": true - }, - { - "Name": "23b", - "RegionID": 23, - "HostName": "derp23b.tailscale.com", - "IPv4": "185.34.3.232", - "IPv6": "2a00:dd80:3f:100::76f", - "CanPort80": true - } - ] - }, - "24": { - "RegionID": 24, - "RegionCode": "hnl", - "RegionName": "Honolulu", - "Latitude": 21.306944, - "Longitude": -157.858333, - "Nodes": [ - { - "Name": "24c", - "RegionID": 24, - "HostName": "derp24c.tailscale.com", - "IPv4": "208.83.233.233", - "IPv6": "2001:19f0:c000:c591:5400:04ff:fe26:2c5f", - "CanPort80": true - }, - { - "Name": "24d", - "RegionID": 24, - "HostName": "derp24d.tailscale.com", - "IPv4": "208.72.155.133", - "IPv6": "2001:19f0:c000:c564:5400:04ff:fe26:2ba8", - "CanPort80": true - }, - { - "Name": "24b", - "RegionID": 24, - "HostName": "derp24b.tailscale.com", - "IPv4": "208.83.234.151", - "IPv6": "2001:19f0:c000:c586:5400:04ff:fe26:2ba6", - "CanPort80": true - } - ] - }, - "25": { - "RegionID": 25, - "RegionCode": "nai", - "RegionName": "Nairobi", - "Latitude": -1.286389, - "Longitude": 36.817222, - "Nodes": [ - { - "Name": "25c", - "RegionID": 25, - "HostName": "derp25c.tailscale.com", - "IPv4": "102.67.167.37", - "IPv6": "2c0f:edb0:2000:1::2c7", - "CanPort80": true - }, - { - "Name": "25d", - "RegionID": 25, - "HostName": "derp25d.tailscale.com", - "IPv4": "102.67.167.188", - "IPv6": "2c0f:edb0:2000:1::188", - "CanPort80": true - }, - { - "Name": "25b", - "RegionID": 25, - "HostName": "derp25b.tailscale.com", - "IPv4": "102.67.167.245", - "IPv6": "2c0f:edb0:2000:1::2e9", - "CanPort80": true - } - ] - }, - "26": { - "RegionID": 26, - "RegionCode": "nue", - "RegionName": "Nuremberg", - "Latitude": 49.453889, - "Longitude": 11.0775, - "Nodes": [ - { - "Name": "26c", - "RegionID": 26, - "HostName": "derp26c.tailscale.com", - "IPv4": "49.12.193.137", - "IPv6": "2a01:4f8:1c1c:5c70::1", - "CanPort80": true - }, - { - "Name": "26d", - "RegionID": 26, - "HostName": "derp26d.tailscale.com", - "IPv4": "49.13.204.141", - "IPv6": "2a01:4f8:1c0c:7d06::1", - "CanPort80": true - }, - { - "Name": "26b", - "RegionID": 26, - "HostName": "derp26b.tailscale.com", - "IPv4": "167.235.72.200", - "IPv6": "2a01:4f8:1c1c:47b6::1", - "CanPort80": true - } - ] - }, - "27": { - "RegionID": 27, - "RegionCode": "iad", - "RegionName": "Ashburn", - "Latitude": 39.03, - "Longitude": -77.471111, - "Nodes": [ - { - "Name": "27d", - "RegionID": 27, - "HostName": "derp27d.tailscale.com", - "IPv4": "178.156.152.106", - "IPv6": "2a01:4ff:f0:3c8e::1", - "CanPort80": true - }, - { - "Name": "27c", - "RegionID": 27, - "HostName": "derp27c.tailscale.com", - "IPv4": "178.156.152.91", - "IPv6": "2a01:4ff:f0:3913::1", - "CanPort80": true - }, - { - "Name": "27e", - "RegionID": 27, - "HostName": "derp27e.tailscale.com", - "IPv4": "178.156.134.232", - "IPv6": "2a01:4ff:f0:28d4::1", - "CanPort80": true - }, - { - "Name": "27b", - "RegionID": 27, - "HostName": "derp27b.tailscale.com", - "IPv4": "5.161.218.233", - "IPv6": "2a01:4ff:f0:3db9::1", - "CanPort80": true - } - ] - }, - "28": { - "RegionID": 28, - "RegionCode": "hel", - "RegionName": "Helsinki", - "Latitude": 60.170833, - "Longitude": 24.9375, - "Nodes": [ - { - "Name": "28c", - "RegionID": 28, - "HostName": "derp28c.tailscale.com", - "IPv4": "95.217.2.165", - "IPv6": "2a01:4f9:c012:cd74::1", - "CanPort80": true - }, - { - "Name": "28d", - "RegionID": 28, - "HostName": "derp28d.tailscale.com", - "IPv4": "157.180.28.32", - "IPv6": "2a01:4f9:c012:2e5b::1", - "CanPort80": true - }, - { - "Name": "28b", - "RegionID": 28, - "HostName": "derp28b.tailscale.com", - "IPv4": "65.109.143.62", - "IPv6": "2a01:4f9:c012:d55c::1", - "CanPort80": true - } - ] - }, - "3": { - "RegionID": 3, - "RegionCode": "sin", - "RegionName": "Singapore", - "Latitude": 1.3521, - "Longitude": 103.8198, - "Nodes": [ - { - "Name": "3g", - "RegionID": 3, - "HostName": "derp3g.tailscale.com", - "IPv4": "172.237.72.79", - "IPv6": "2600:3c15::2000:adff:fe08:6fab", - "CanPort80": true - }, - { - "Name": "3f", - "RegionID": 3, - "HostName": "derp3f.tailscale.com", - "IPv4": "172.237.72.8", - "IPv6": "2600:3c15::2000:53ff:fe48:a668", - "CanPort80": true - }, - { - "Name": "3h", - "RegionID": 3, - "HostName": "derp3h.tailscale.com", - "IPv4": "172.237.66.30", - "IPv6": "2600:3c15::2000:3dff:fe44:50aa", - "CanPort80": true - }, - { - "Name": "3e", - "RegionID": 3, - "HostName": "derp3e.tailscale.com", - "IPv4": "172.237.72.43", - "IPv6": "2600:3c15::2000:6cff:fee4:d799", - "CanPort80": true - } - ] - }, - "4": { - "RegionID": 4, - "RegionCode": "fra", - "RegionName": "Frankfurt", - "Latitude": 50.1109, - "Longitude": 8.6821, - "Nodes": [ - { - "Name": "4h", - "RegionID": 4, - "HostName": "derp4h.tailscale.com", - "IPv4": "185.40.234.77", - "IPv6": "2a00:dd80:20::bcf", - "CanPort80": true - }, - { - "Name": "4g", - "RegionID": 4, - "HostName": "derp4g.tailscale.com", - "IPv4": "185.40.234.113", - "IPv6": "2a00:dd80:20::8f", - "CanPort80": true - }, - { - "Name": "4i", - "RegionID": 4, - "HostName": "derp4i.tailscale.com", - "IPv4": "185.40.234.53", - "IPv6": "2a00:dd80:20::8a6", - "CanPort80": true - }, - { - "Name": "4f", - "RegionID": 4, - "HostName": "derp4f.tailscale.com", - "IPv4": "185.40.234.219", - "IPv6": "2a00:dd80:20::a25", - "CanPort80": true - } - ] - }, - "5": { - "RegionID": 5, - "RegionCode": "syd", - "RegionName": "Sydney", - "Latitude": -33.867778, - "Longitude": 151.21, - "Nodes": [ - { - "Name": "5f", - "RegionID": 5, - "HostName": "derp5f.tailscale.com", - "IPv4": "172.105.166.103", - "IPv6": "2400:8907::2000:ccff:fe1f:80da", - "CanPort80": true - }, - { - "Name": "5g", - "RegionID": 5, - "HostName": "derp5g.tailscale.com", - "IPv4": "172.105.169.57", - "IPv6": "2400:8907::2000:2fff:fea7:57f4", - "CanPort80": true - }, - { - "Name": "5e", - "RegionID": 5, - "HostName": "derp5e.tailscale.com", - "IPv4": "172.105.179.230", - "IPv6": "2400:8907::2000:ceff:fe8d:4f4e", - "CanPort80": true - } - ] - }, - "6": { - "RegionID": 6, - "RegionCode": "blr", - "RegionName": "Bengaluru", - "Latitude": 12.9716, - "Longitude": 77.5946, - "Nodes": [ - { - "Name": "6a", - "RegionID": 6, - "HostName": "derp6.tailscale.com", - "IPv4": "68.183.90.120", - "IPv6": "2400:6180:100:d0::982:d001", - "CanPort80": true - } - ] - }, - "7": { - "RegionID": 7, - "RegionCode": "tok", - "RegionName": "Tokyo", - "Latitude": 35.6764, - "Longitude": 139.65, - "Nodes": [ - { - "Name": "7g", - "RegionID": 7, - "HostName": "derp7g.tailscale.com", - "IPv4": "172.238.6.179", - "IPv6": "2600:3c18::2000:3fff:fe80:3ebd", - "CanPort80": true - }, - { - "Name": "7f", - "RegionID": 7, - "HostName": "derp7f.tailscale.com", - "IPv4": "172.238.6.34", - "IPv6": "2600:3c18::2000:acff:fe8e:3ed5", - "CanPort80": true - }, - { - "Name": "7h", - "RegionID": 7, - "HostName": "derp7h.tailscale.com", - "IPv4": "172.237.28.183", - "IPv6": "2600:3c18::2000:b1ff:fea9:4560", - "CanPort80": true - }, - { - "Name": "7e", - "RegionID": 7, - "HostName": "derp7e.tailscale.com", - "IPv4": "172.238.6.180", - "IPv6": "2600:3c18::2000:60ff:fe0f:6e83", - "STUNOnly": true, - "CanPort80": true - } - ] - }, - "8": { - "RegionID": 8, - "RegionCode": "lhr", - "RegionName": "London", - "Latitude": 51.5072, - "Longitude": 0.1276, - "Nodes": [ - { - "Name": "8f", - "RegionID": 8, - "HostName": "derp8f.tailscale.com", - "IPv4": "176.58.88.183", - "IPv6": "2a00:dd80:3a::dfa", - "CanPort80": true - }, - { - "Name": "8g", - "RegionID": 8, - "HostName": "derp8g.tailscale.com", - "IPv4": "176.58.92.254", - "IPv6": "2a00:dd80:3a::ed", - "CanPort80": true - }, - { - "Name": "8e", - "RegionID": 8, - "HostName": "derp8e.tailscale.com", - "IPv4": "176.58.92.144", - "IPv6": "2a00:dd80:3a::b33", - "CanPort80": true - } - ] - }, - "9": { - "RegionID": 9, - "RegionCode": "dfw", - "RegionName": "Dallas", - "Latitude": 32.779167, - "Longitude": -96.808889, - "Nodes": [ - { - "Name": "9e", - "RegionID": 9, - "HostName": "derp9e.tailscale.com", - "IPv4": "192.73.248.83", - "IPv6": "2607:f740:100::359", - "CanPort80": true - }, - { - "Name": "9f", - "RegionID": 9, - "HostName": "derp9f.tailscale.com", - "IPv4": "209.177.156.197", - "IPv6": "2607:f740:100::cad", - "CanPort80": true - }, - { - "Name": "9d", - "RegionID": 9, - "HostName": "derp9d.tailscale.com", - "IPv4": "209.177.156.94", - "IPv6": "2607:f740:100::c05", - "CanPort80": true - } - ] - } - } - }, - "DisplayMessages": null, - "TKAEnabled": false, - "TKAHead": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", - "Domain": "kratail2tid@passkey", - "DomainAuditLogID": "", - "UserProfiles": { - "3982058329734709": { - "ID": 3982058329734709, - "LoginName": "monitorpasskeykradalby@passkey", - "DisplayName": "monitorpasskeykradalby" - } - } + "PacketFilterRules": 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.124.195.93": { - "peer_name": "exit-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user1/tailscaled.sock whois --json 100.124.195.93", - "response": null - }, - "100.116.18.24": { - "peer_name": "exit-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user1/tailscaled.sock whois --json 100.116.18.24", - "response": null - }, - "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.107.162.14": { - "peer_name": "group-a-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user1/tailscaled.sock whois --json 100.107.162.14", - "response": null - }, - "100.77.135.18": { - "peer_name": "group-b-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user1/tailscaled.sock whois --json 100.77.135.18", - "response": null - }, - "100.105.127.107": { - "peer_name": "multi-exit-router", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user1/tailscaled.sock whois --json 100.105.127.107", - "response": null - }, - "100.109.43.124": { - "peer_name": "router-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user1/tailscaled.sock whois --json 100.109.43.124", - "response": null - }, - "100.65.172.123": { - "peer_name": "router-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user1/tailscaled.sock whois --json 100.65.172.123", - "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 - } - }, "netmap": { - "SelfNode": { - "ID": 539541576444929, - "StableID": "nSq9YrqMD511CNTRL", - "Name": "user1.tail78f774.ts.net.", - "User": 4156223528223174, - "Key": "nodekey:96338a2cd2ea803c915ed8fdf882d66ca0c6a59d0fcf0bc4b3f928d22d1ac743", - "KeyExpiry": "2026-07-22T10:04:13Z", - "DiscoKey": "discokey:94c62b25a93d1474bcbf8b0e5f79763e3b093993c831b0a40e98b875827b232a", - "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:43259", "10.65.0.27:43259", "172.17.0.1:43259"], - "Hostinfo": { - "Hostname": "user1", - "Services": [ - { "Proto": "peerapi4", "Port": 46708 }, - { "Proto": "peerapi6", "Port": 46708 }, - { "Proto": "peerapi-dns-proxy", "Port": 1 } - ] - }, - "Created": "2026-01-23T10:04:13.531671894Z", - "MachineAuthorized": true, - "CapMap": { - "https://tailscale.com/cap/file-sharing": null, - "https://tailscale.com/cap/is-admin": null, - "https://tailscale.com/cap/is-owner": null, - "https://tailscale.com/cap/ssh": null, - "https://tailscale.com/cap/tailnet-lock": null, - "probe-udp-lifetime": null, - "ssh-behavior-v1": null, - "ssh-env-vars": null, - "store-appc-routes": null, - "tailnet-display-name": ["kratail2tid@passkey"] - }, - "ComputedName": "user1", - "ComputedNameWithHost": "user1" - }, - "AllCaps": [ - "https://tailscale.com/cap/tailnet-lock", - "https://tailscale.com/cap/file-sharing", - "ssh-behavior-v1", - "tailnet-display-name", - "https://tailscale.com/cap/is-owner", - "https://tailscale.com/cap/ssh", - "probe-udp-lifetime", - "https://tailscale.com/cap/is-admin", - "store-appc-routes", - "ssh-env-vars" - ], - "NodeKey": "nodekey:96338a2cd2ea803c915ed8fdf882d66ca0c6a59d0fcf0bc4b3f928d22d1ac743", - "MachineKey": "mkey:98b7ed0fef020882cab4324b39ac93b60741794e722411083d0d3cf703833f4a", "Peers": [], - "DNS": { - "Routes": { - "tail78f774.ts.net.": null, - "ts.net.": [{ "Addr": "199.247.155.53" }, { "Addr": "2620:111:8007::53" }] - }, - "Domains": ["tail78f774.ts.net"], - "Proxied": true, - "ExitNodeFilteredSet": [".ts.net", ".tailscale.net"] - }, - "PacketFilter": [], - "PacketFilterRules": null, - "SSHPolicy": { "rules": [] }, - "CollectServices": false, - "DERPMap": { - "Regions": { - "1": { - "RegionID": 1, - "RegionCode": "nyc", - "RegionName": "New York City", - "Latitude": 40.7128, - "Longitude": -74.006, - "Nodes": [ - { - "Name": "1h", - "RegionID": 1, - "HostName": "derp1h.tailscale.com", - "IPv4": "199.38.181.93", - "IPv6": "2607:f740:f::afd", - "CanPort80": true - }, - { - "Name": "1g", - "RegionID": 1, - "HostName": "derp1g.tailscale.com", - "IPv4": "209.177.145.120", - "IPv6": "2607:f740:f::3eb", - "CanPort80": true - }, - { - "Name": "1i", - "RegionID": 1, - "HostName": "derp1i.tailscale.com", - "IPv4": "199.38.181.103", - "IPv6": "2607:f740:f::e19", - "CanPort80": true - }, - { - "Name": "1f", - "RegionID": 1, - "HostName": "derp1f.tailscale.com", - "IPv4": "199.38.181.104", - "IPv6": "2607:f740:f::bc", - "CanPort80": true - } - ] - }, - "10": { - "RegionID": 10, - "RegionCode": "sea", - "RegionName": "Seattle", - "Latitude": 47.609722, - "Longitude": -122.333056, - "Nodes": [ - { - "Name": "10c", - "RegionID": 10, - "HostName": "derp10c.tailscale.com", - "IPv4": "192.73.240.121", - "IPv6": "2607:f740:14::40c", - "CanPort80": true - }, - { - "Name": "10d", - "RegionID": 10, - "HostName": "derp10d.tailscale.com", - "IPv4": "192.73.240.132", - "IPv6": "2607:f740:14::500", - "CanPort80": true - }, - { - "Name": "10b", - "RegionID": 10, - "HostName": "derp10b.tailscale.com", - "IPv4": "192.73.240.161", - "IPv6": "2607:f740:14::61c", - "CanPort80": true - } - ] - }, - "11": { - "RegionID": 11, - "RegionCode": "sao", - "RegionName": "São Paulo", - "Latitude": -23.55, - "Longitude": -46.633333, - "Nodes": [ - { - "Name": "11f", - "RegionID": 11, - "HostName": "derp11f.tailscale.com", - "IPv4": "172.237.61.197", - "IPv6": "2600:3c0d::2000:3bff:fe44:6166", - "CanPort80": true - }, - { - "Name": "11g", - "RegionID": 11, - "HostName": "derp11g.tailscale.com", - "IPv4": "172.237.61.190", - "IPv6": "2600:3c0d::2000:62ff:febe:2e67", - "CanPort80": true - }, - { - "Name": "11e", - "RegionID": 11, - "HostName": "derp11e.tailscale.com", - "IPv4": "172.237.61.194", - "IPv6": "2600:3c0d::2000:d2ff:fe43:1790", - "CanPort80": true - } - ] - }, - "12": { - "RegionID": 12, - "RegionCode": "ord", - "RegionName": "Chicago", - "Latitude": 41.881944, - "Longitude": -87.627778, - "Nodes": [ - { - "Name": "12e", - "RegionID": 12, - "HostName": "derp12e.tailscale.com", - "IPv4": "209.177.158.15", - "IPv6": "2607:f740:e::b17", - "CanPort80": true - }, - { - "Name": "12f", - "RegionID": 12, - "HostName": "derp12f.tailscale.com", - "IPv4": "199.38.182.118", - "IPv6": "2607:f740:e::4c8", - "CanPort80": true - }, - { - "Name": "12d", - "RegionID": 12, - "HostName": "derp12d.tailscale.com", - "IPv4": "209.177.158.246", - "IPv6": "2607:f740:e::811", - "CanPort80": true - } - ] - }, - "13": { - "RegionID": 13, - "RegionCode": "den", - "RegionName": "Denver", - "Latitude": 39.7392, - "Longitude": -104.9849, - "Nodes": [ - { - "Name": "13c", - "RegionID": 13, - "HostName": "derp13c.tailscale.com", - "IPv4": "192.73.242.28", - "IPv6": "2607:f740:16::5c", - "CanPort80": true - }, - { - "Name": "13d", - "RegionID": 13, - "HostName": "derp13d.tailscale.com", - "IPv4": "192.73.242.204", - "IPv6": "2607:f740:16::c23", - "CanPort80": true - }, - { - "Name": "13b", - "RegionID": 13, - "HostName": "derp13b.tailscale.com", - "IPv4": "192.73.242.187", - "IPv6": "2607:f740:16::640", - "CanPort80": true - } - ] - }, - "14": { - "RegionID": 14, - "RegionCode": "ams", - "RegionName": "Amsterdam", - "Latitude": 52.372778, - "Longitude": 4.893611, - "Nodes": [ - { - "Name": "14c", - "RegionID": 14, - "HostName": "derp14c.tailscale.com", - "IPv4": "176.58.93.147", - "IPv6": "2a00:dd80:3c::b09", - "CanPort80": true - }, - { - "Name": "14d", - "RegionID": 14, - "HostName": "derp14d.tailscale.com", - "IPv4": "176.58.93.154", - "IPv6": "2a00:dd80:3c::3d5", - "CanPort80": true - }, - { - "Name": "14b", - "RegionID": 14, - "HostName": "derp14b.tailscale.com", - "IPv4": "176.58.93.248", - "IPv6": "2a00:dd80:3c::807", - "CanPort80": true - } - ] - }, - "15": { - "RegionID": 15, - "RegionCode": "jnb", - "RegionName": "Johannesburg", - "Latitude": -26.204444, - "Longitude": 28.045556, - "Nodes": [ - { - "Name": "15c", - "RegionID": 15, - "HostName": "derp15c.tailscale.com", - "IPv4": "102.67.165.185", - "IPv6": "2c0f:edb0:0:10::b59", - "CanPort80": true - }, - { - "Name": "15d", - "RegionID": 15, - "HostName": "derp15d.tailscale.com", - "IPv4": "102.67.165.36", - "IPv6": "2c0f:edb0:0:10::599", - "CanPort80": true - }, - { - "Name": "15b", - "RegionID": 15, - "HostName": "derp15b.tailscale.com", - "IPv4": "102.67.165.90", - "IPv6": "2c0f:edb0:0:10::963", - "CanPort80": true - } - ] - }, - "16": { - "RegionID": 16, - "RegionCode": "mia", - "RegionName": "Miami", - "Latitude": 25.78, - "Longitude": -80.21, - "Nodes": [ - { - "Name": "16c", - "RegionID": 16, - "HostName": "derp16c.tailscale.com", - "IPv4": "192.73.243.229", - "IPv6": "2607:f740:17::4e4", - "CanPort80": true - }, - { - "Name": "16d", - "RegionID": 16, - "HostName": "derp16d.tailscale.com", - "IPv4": "192.73.243.141", - "IPv6": "2607:f740:17::475", - "CanPort80": true - }, - { - "Name": "16b", - "RegionID": 16, - "HostName": "derp16b.tailscale.com", - "IPv4": "192.73.243.135", - "IPv6": "2607:f740:17::476", - "CanPort80": true - } - ] - }, - "17": { - "RegionID": 17, - "RegionCode": "lax", - "RegionName": "Los Angeles", - "Latitude": 34.05, - "Longitude": -118.25, - "Nodes": [ - { - "Name": "17c", - "RegionID": 17, - "HostName": "derp17c.tailscale.com", - "IPv4": "208.111.40.12", - "IPv6": "2607:f740:c::10", - "CanPort80": true - }, - { - "Name": "17d", - "RegionID": 17, - "HostName": "derp17d.tailscale.com", - "IPv4": "208.111.40.216", - "IPv6": "2607:f740:c::e1b", - "CanPort80": true - }, - { - "Name": "17b", - "RegionID": 17, - "HostName": "derp17b.tailscale.com", - "IPv4": "192.73.244.245", - "IPv6": "2607:f740:c::646", - "CanPort80": true - } - ] - }, - "18": { - "RegionID": 18, - "RegionCode": "par", - "RegionName": "Paris", - "Latitude": 48.856667, - "Longitude": 2.352222, - "Nodes": [ - { - "Name": "18c", - "RegionID": 18, - "HostName": "derp18c.tailscale.com", - "IPv4": "176.58.90.207", - "IPv6": "2a00:dd80:3e::c19", - "CanPort80": true - }, - { - "Name": "18d", - "RegionID": 18, - "HostName": "derp18d.tailscale.com", - "IPv4": "176.58.90.104", - "IPv6": "2a00:dd80:3e::f2e", - "CanPort80": true - }, - { - "Name": "18b", - "RegionID": 18, - "HostName": "derp18b.tailscale.com", - "IPv4": "176.58.90.147", - "IPv6": "2a00:dd80:3e::363", - "CanPort80": true - } - ] - }, - "19": { - "RegionID": 19, - "RegionCode": "mad", - "RegionName": "Madrid", - "Latitude": 40.416944, - "Longitude": -3.703333, - "Nodes": [ - { - "Name": "19c", - "RegionID": 19, - "HostName": "derp19c.tailscale.com", - "IPv4": "45.159.97.61", - "IPv6": "2a00:dd80:14:10::20", - "CanPort80": true - }, - { - "Name": "19d", - "RegionID": 19, - "HostName": "derp19d.tailscale.com", - "IPv4": "45.159.97.233", - "IPv6": "2a00:dd80:14:10::34a", - "CanPort80": true - }, - { - "Name": "19b", - "RegionID": 19, - "HostName": "derp19b.tailscale.com", - "IPv4": "45.159.97.144", - "IPv6": "2a00:dd80:14:10::335", - "CanPort80": true - } - ] - }, - "2": { - "RegionID": 2, - "RegionCode": "sfo", - "RegionName": "San Francisco", - "Latitude": 37.7775, - "Longitude": -122.416389, - "Nodes": [ - { - "Name": "2e", - "RegionID": 2, - "HostName": "derp2e.tailscale.com", - "IPv4": "192.73.252.134", - "IPv6": "2607:f740:0:3f::44c", - "CanPort80": true - }, - { - "Name": "2f", - "RegionID": 2, - "HostName": "derp2f.tailscale.com", - "IPv4": "208.111.34.178", - "IPv6": "2607:f740:0:3f::f4", - "CanPort80": true - }, - { - "Name": "2d", - "RegionID": 2, - "HostName": "derp2d.tailscale.com", - "IPv4": "192.73.252.65", - "IPv6": "2607:f740:0:3f::287", - "CanPort80": true - } - ] - }, - "20": { - "RegionID": 20, - "RegionCode": "hkg", - "RegionName": "Hong Kong", - "Latitude": 22.3193, - "Longitude": 114.1694, - "Nodes": [ - { - "Name": "20c", - "RegionID": 20, - "HostName": "derp20c.tailscale.com", - "IPv4": "205.147.105.30", - "IPv6": "2403:2500:8000:1::5fb", - "CanPort80": true - }, - { - "Name": "20d", - "RegionID": 20, - "HostName": "derp20d.tailscale.com", - "IPv4": "205.147.105.78", - "IPv6": "2403:2500:8000:1::e9a", - "CanPort80": true - }, - { - "Name": "20b", - "RegionID": 20, - "HostName": "derp20b.tailscale.com", - "IPv4": "103.6.84.152", - "IPv6": "2403:2500:8000:1::ef6", - "CanPort80": true - } - ] - }, - "21": { - "RegionID": 21, - "RegionCode": "tor", - "RegionName": "Toronto", - "Latitude": 43.741667, - "Longitude": -79.373333, - "Nodes": [ - { - "Name": "21c", - "RegionID": 21, - "HostName": "derp21c.tailscale.com", - "IPv4": "162.248.221.215", - "IPv6": "2607:f740:50::f10", - "CanPort80": true - }, - { - "Name": "21d", - "RegionID": 21, - "HostName": "derp21d.tailscale.com", - "IPv4": "162.248.221.248", - "IPv6": "2607:f740:50::ca4", - "CanPort80": true - }, - { - "Name": "21b", - "RegionID": 21, - "HostName": "derp21b.tailscale.com", - "IPv4": "162.248.221.199", - "IPv6": "2607:f740:50::1d1", - "CanPort80": true - } - ] - }, - "22": { - "RegionID": 22, - "RegionCode": "waw", - "RegionName": "Warsaw", - "Latitude": 52.23, - "Longitude": 21.011111, - "Nodes": [ - { - "Name": "22c", - "RegionID": 22, - "HostName": "derp22c.tailscale.com", - "IPv4": "45.159.98.253", - "IPv6": "2a00:dd80:40:100::3f", - "CanPort80": true - }, - { - "Name": "22d", - "RegionID": 22, - "HostName": "derp22d.tailscale.com", - "IPv4": "45.159.98.145", - "IPv6": "2a00:dd80:40:100::211", - "CanPort80": true - }, - { - "Name": "22b", - "RegionID": 22, - "HostName": "derp22b.tailscale.com", - "IPv4": "45.159.98.196", - "IPv6": "2a00:dd80:40:100::316", - "CanPort80": true - } - ] - }, - "23": { - "RegionID": 23, - "RegionCode": "dbi", - "RegionName": "Dubai", - "Latitude": 25.263056, - "Longitude": 55.297222, - "Nodes": [ - { - "Name": "23c", - "RegionID": 23, - "HostName": "derp23c.tailscale.com", - "IPv4": "185.34.3.207", - "IPv6": "2a00:dd80:3f:100::a50", - "CanPort80": true - }, - { - "Name": "23d", - "RegionID": 23, - "HostName": "derp23d.tailscale.com", - "IPv4": "185.34.3.75", - "IPv6": "2a00:dd80:3f:100::97e", - "CanPort80": true - }, - { - "Name": "23b", - "RegionID": 23, - "HostName": "derp23b.tailscale.com", - "IPv4": "185.34.3.232", - "IPv6": "2a00:dd80:3f:100::76f", - "CanPort80": true - } - ] - }, - "24": { - "RegionID": 24, - "RegionCode": "hnl", - "RegionName": "Honolulu", - "Latitude": 21.306944, - "Longitude": -157.858333, - "Nodes": [ - { - "Name": "24c", - "RegionID": 24, - "HostName": "derp24c.tailscale.com", - "IPv4": "208.83.233.233", - "IPv6": "2001:19f0:c000:c591:5400:04ff:fe26:2c5f", - "CanPort80": true - }, - { - "Name": "24d", - "RegionID": 24, - "HostName": "derp24d.tailscale.com", - "IPv4": "208.72.155.133", - "IPv6": "2001:19f0:c000:c564:5400:04ff:fe26:2ba8", - "CanPort80": true - }, - { - "Name": "24b", - "RegionID": 24, - "HostName": "derp24b.tailscale.com", - "IPv4": "208.83.234.151", - "IPv6": "2001:19f0:c000:c586:5400:04ff:fe26:2ba6", - "CanPort80": true - } - ] - }, - "25": { - "RegionID": 25, - "RegionCode": "nai", - "RegionName": "Nairobi", - "Latitude": -1.286389, - "Longitude": 36.817222, - "Nodes": [ - { - "Name": "25c", - "RegionID": 25, - "HostName": "derp25c.tailscale.com", - "IPv4": "102.67.167.37", - "IPv6": "2c0f:edb0:2000:1::2c7", - "CanPort80": true - }, - { - "Name": "25d", - "RegionID": 25, - "HostName": "derp25d.tailscale.com", - "IPv4": "102.67.167.188", - "IPv6": "2c0f:edb0:2000:1::188", - "CanPort80": true - }, - { - "Name": "25b", - "RegionID": 25, - "HostName": "derp25b.tailscale.com", - "IPv4": "102.67.167.245", - "IPv6": "2c0f:edb0:2000:1::2e9", - "CanPort80": true - } - ] - }, - "26": { - "RegionID": 26, - "RegionCode": "nue", - "RegionName": "Nuremberg", - "Latitude": 49.453889, - "Longitude": 11.0775, - "Nodes": [ - { - "Name": "26c", - "RegionID": 26, - "HostName": "derp26c.tailscale.com", - "IPv4": "49.12.193.137", - "IPv6": "2a01:4f8:1c1c:5c70::1", - "CanPort80": true - }, - { - "Name": "26d", - "RegionID": 26, - "HostName": "derp26d.tailscale.com", - "IPv4": "49.13.204.141", - "IPv6": "2a01:4f8:1c0c:7d06::1", - "CanPort80": true - }, - { - "Name": "26b", - "RegionID": 26, - "HostName": "derp26b.tailscale.com", - "IPv4": "167.235.72.200", - "IPv6": "2a01:4f8:1c1c:47b6::1", - "CanPort80": true - } - ] - }, - "27": { - "RegionID": 27, - "RegionCode": "iad", - "RegionName": "Ashburn", - "Latitude": 39.03, - "Longitude": -77.471111, - "Nodes": [ - { - "Name": "27d", - "RegionID": 27, - "HostName": "derp27d.tailscale.com", - "IPv4": "178.156.152.106", - "IPv6": "2a01:4ff:f0:3c8e::1", - "CanPort80": true - }, - { - "Name": "27c", - "RegionID": 27, - "HostName": "derp27c.tailscale.com", - "IPv4": "178.156.152.91", - "IPv6": "2a01:4ff:f0:3913::1", - "CanPort80": true - }, - { - "Name": "27e", - "RegionID": 27, - "HostName": "derp27e.tailscale.com", - "IPv4": "178.156.134.232", - "IPv6": "2a01:4ff:f0:28d4::1", - "CanPort80": true - }, - { - "Name": "27b", - "RegionID": 27, - "HostName": "derp27b.tailscale.com", - "IPv4": "5.161.218.233", - "IPv6": "2a01:4ff:f0:3db9::1", - "CanPort80": true - } - ] - }, - "28": { - "RegionID": 28, - "RegionCode": "hel", - "RegionName": "Helsinki", - "Latitude": 60.170833, - "Longitude": 24.9375, - "Nodes": [ - { - "Name": "28c", - "RegionID": 28, - "HostName": "derp28c.tailscale.com", - "IPv4": "95.217.2.165", - "IPv6": "2a01:4f9:c012:cd74::1", - "CanPort80": true - }, - { - "Name": "28d", - "RegionID": 28, - "HostName": "derp28d.tailscale.com", - "IPv4": "157.180.28.32", - "IPv6": "2a01:4f9:c012:2e5b::1", - "CanPort80": true - }, - { - "Name": "28b", - "RegionID": 28, - "HostName": "derp28b.tailscale.com", - "IPv4": "65.109.143.62", - "IPv6": "2a01:4f9:c012:d55c::1", - "CanPort80": true - } - ] - }, - "3": { - "RegionID": 3, - "RegionCode": "sin", - "RegionName": "Singapore", - "Latitude": 1.3521, - "Longitude": 103.8198, - "Nodes": [ - { - "Name": "3g", - "RegionID": 3, - "HostName": "derp3g.tailscale.com", - "IPv4": "172.237.72.79", - "IPv6": "2600:3c15::2000:adff:fe08:6fab", - "CanPort80": true - }, - { - "Name": "3f", - "RegionID": 3, - "HostName": "derp3f.tailscale.com", - "IPv4": "172.237.72.8", - "IPv6": "2600:3c15::2000:53ff:fe48:a668", - "CanPort80": true - }, - { - "Name": "3h", - "RegionID": 3, - "HostName": "derp3h.tailscale.com", - "IPv4": "172.237.66.30", - "IPv6": "2600:3c15::2000:3dff:fe44:50aa", - "CanPort80": true - }, - { - "Name": "3e", - "RegionID": 3, - "HostName": "derp3e.tailscale.com", - "IPv4": "172.237.72.43", - "IPv6": "2600:3c15::2000:6cff:fee4:d799", - "CanPort80": true - } - ] - }, - "4": { - "RegionID": 4, - "RegionCode": "fra", - "RegionName": "Frankfurt", - "Latitude": 50.1109, - "Longitude": 8.6821, - "Nodes": [ - { - "Name": "4h", - "RegionID": 4, - "HostName": "derp4h.tailscale.com", - "IPv4": "185.40.234.77", - "IPv6": "2a00:dd80:20::bcf", - "CanPort80": true - }, - { - "Name": "4g", - "RegionID": 4, - "HostName": "derp4g.tailscale.com", - "IPv4": "185.40.234.113", - "IPv6": "2a00:dd80:20::8f", - "CanPort80": true - }, - { - "Name": "4i", - "RegionID": 4, - "HostName": "derp4i.tailscale.com", - "IPv4": "185.40.234.53", - "IPv6": "2a00:dd80:20::8a6", - "CanPort80": true - }, - { - "Name": "4f", - "RegionID": 4, - "HostName": "derp4f.tailscale.com", - "IPv4": "185.40.234.219", - "IPv6": "2a00:dd80:20::a25", - "CanPort80": true - } - ] - }, - "5": { - "RegionID": 5, - "RegionCode": "syd", - "RegionName": "Sydney", - "Latitude": -33.867778, - "Longitude": 151.21, - "Nodes": [ - { - "Name": "5f", - "RegionID": 5, - "HostName": "derp5f.tailscale.com", - "IPv4": "172.105.166.103", - "IPv6": "2400:8907::2000:ccff:fe1f:80da", - "CanPort80": true - }, - { - "Name": "5g", - "RegionID": 5, - "HostName": "derp5g.tailscale.com", - "IPv4": "172.105.169.57", - "IPv6": "2400:8907::2000:2fff:fea7:57f4", - "CanPort80": true - }, - { - "Name": "5e", - "RegionID": 5, - "HostName": "derp5e.tailscale.com", - "IPv4": "172.105.179.230", - "IPv6": "2400:8907::2000:ceff:fe8d:4f4e", - "CanPort80": true - } - ] - }, - "6": { - "RegionID": 6, - "RegionCode": "blr", - "RegionName": "Bengaluru", - "Latitude": 12.9716, - "Longitude": 77.5946, - "Nodes": [ - { - "Name": "6a", - "RegionID": 6, - "HostName": "derp6.tailscale.com", - "IPv4": "68.183.90.120", - "IPv6": "2400:6180:100:d0::982:d001", - "CanPort80": true - } - ] - }, - "7": { - "RegionID": 7, - "RegionCode": "tok", - "RegionName": "Tokyo", - "Latitude": 35.6764, - "Longitude": 139.65, - "Nodes": [ - { - "Name": "7g", - "RegionID": 7, - "HostName": "derp7g.tailscale.com", - "IPv4": "172.238.6.179", - "IPv6": "2600:3c18::2000:3fff:fe80:3ebd", - "CanPort80": true - }, - { - "Name": "7f", - "RegionID": 7, - "HostName": "derp7f.tailscale.com", - "IPv4": "172.238.6.34", - "IPv6": "2600:3c18::2000:acff:fe8e:3ed5", - "CanPort80": true - }, - { - "Name": "7h", - "RegionID": 7, - "HostName": "derp7h.tailscale.com", - "IPv4": "172.237.28.183", - "IPv6": "2600:3c18::2000:b1ff:fea9:4560", - "CanPort80": true - }, - { - "Name": "7e", - "RegionID": 7, - "HostName": "derp7e.tailscale.com", - "IPv4": "172.238.6.180", - "IPv6": "2600:3c18::2000:60ff:fe0f:6e83", - "STUNOnly": true, - "CanPort80": true - } - ] - }, - "8": { - "RegionID": 8, - "RegionCode": "lhr", - "RegionName": "London", - "Latitude": 51.5072, - "Longitude": 0.1276, - "Nodes": [ - { - "Name": "8f", - "RegionID": 8, - "HostName": "derp8f.tailscale.com", - "IPv4": "176.58.88.183", - "IPv6": "2a00:dd80:3a::dfa", - "CanPort80": true - }, - { - "Name": "8g", - "RegionID": 8, - "HostName": "derp8g.tailscale.com", - "IPv4": "176.58.92.254", - "IPv6": "2a00:dd80:3a::ed", - "CanPort80": true - }, - { - "Name": "8e", - "RegionID": 8, - "HostName": "derp8e.tailscale.com", - "IPv4": "176.58.92.144", - "IPv6": "2a00:dd80:3a::b33", - "CanPort80": true - } - ] - }, - "9": { - "RegionID": 9, - "RegionCode": "dfw", - "RegionName": "Dallas", - "Latitude": 32.779167, - "Longitude": -96.808889, - "Nodes": [ - { - "Name": "9e", - "RegionID": 9, - "HostName": "derp9e.tailscale.com", - "IPv4": "192.73.248.83", - "IPv6": "2607:f740:100::359", - "CanPort80": true - }, - { - "Name": "9f", - "RegionID": 9, - "HostName": "derp9f.tailscale.com", - "IPv4": "209.177.156.197", - "IPv6": "2607:f740:100::cad", - "CanPort80": true - }, - { - "Name": "9d", - "RegionID": 9, - "HostName": "derp9d.tailscale.com", - "IPv4": "209.177.156.94", - "IPv6": "2607:f740:100::c05", - "CanPort80": true - } - ] - } - } - }, - "DisplayMessages": null, - "TKAEnabled": false, - "TKAHead": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", - "Domain": "kratail2tid@passkey", - "DomainAuditLogID": "", - "UserProfiles": { - "4156223528223174": { - "ID": 4156223528223174, - "LoginName": "kratail2tid@passkey", - "DisplayName": "kratail2tid" - } - } + "PacketFilterRules": null } } } diff --git a/hscontrol/policy/v2/testdata/grant_results/GRANT-V27.hujson b/hscontrol/policy/v2/testdata/grant_results/GRANT-V27.hujson index 93ad30323..0aa3cde1b 100644 --- a/hscontrol/policy/v2/testdata/grant_results/GRANT-V27.hujson +++ b/hscontrol/policy/v2/testdata/grant_results/GRANT-V27.hujson @@ -5,29 +5,55 @@ // Expected: No filter rules on any node { "test_id": "GRANT-V27", - "timestamp": "2026-03-28T11:51:38Z", - "propagation_wait_seconds": 8, "input": { - "policy_file": "grant_policies_via/grant_v27.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"], - "tag:exit-a": ["kratail2tid@passkey"], - "tag:exit-b": ["kratail2tid@passkey"], - "tag:group-a": ["kratail2tid@passkey"], - "tag:group-b": ["kratail2tid@passkey"], - "tag:router-a": ["kratail2tid@passkey"], - "tag:router-b": ["kratail2tid@passkey"] + "tag:server": [ + "kratail2tid@passkey" + ], + "tag:prod": [ + "kratail2tid@passkey" + ], + "tag:client": [ + "kratail2tid@passkey" + ], + "tag:router": [ + "kratail2tid@passkey" + ], + "tag:exit": [ + "kratail2tid@passkey" + ], + "tag:exit-a": [ + "kratail2tid@passkey" + ], + "tag:exit-b": [ + "kratail2tid@passkey" + ], + "tag:group-a": [ + "kratail2tid@passkey" + ], + "tag:group-b": [ + "kratail2tid@passkey" + ], + "tag:router-a": [ + "kratail2tid@passkey" + ], + "tag:router-b": [ + "kratail2tid@passkey" + ] }, "hosts": { "webserver": "100.108.74.26", @@ -36,162 +62,159 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "10.44.0.0/16": ["tag:router-a"], - "10.55.0.0/16": ["tag:router-b"], - "0.0.0.0/0": ["tag:exit", "tag:exit-a", "tag:exit-b"], - "::/0": ["tag:exit", "tag:exit-a", "tag:exit-b"] + "10.33.0.0/16": [ + "tag:router" + ], + "10.44.0.0/16": [ + "tag:router-a" + ], + "10.55.0.0/16": [ + "tag:router-b" + ], + "0.0.0.0/0": [ + "tag:exit", + "tag:exit-a", + "tag:exit-b" + ], + "::/0": [ + "tag:exit", + "tag:exit-a", + "tag:exit-b" + ] } }, "grants": [ { - "src": ["autogroup:member"], - "dst": ["autogroup:internet"], - "via": ["tag:exit"], - "ip": ["tcp:443"] + "src": [ + "autogroup:member" + ], + "dst": [ + "autogroup:internet" + ], + "via": [ + "tag:exit" + ], + "ip": [ + "tcp:443" + ] } ] }, - "grants_section": [ - { "src": ["autogroup:member"], "dst": ["autogroup:internet"], "via": ["tag:exit"], "ip": ["tcp:443"] } - ], - "api_endpoint": "https://api.tailscale.com/api/v2/tailnet/kratail2tid%40passkey/acl", - "api_method": "POST", "api_response_code": 200 }, "topology": { "nodes": { "exit-a": { - "mts_name": "exit-a", - "socket": "/home/kradalby/.config/multi-tailscale-dev/exit-a/tailscaled.sock", "hostname": "exit-a", - "user_id": 3118755726458377, - "tags": ["tag:exit-a"], + "tags": [ + "tag:exit-a" + ], "ipv4": "100.124.195.93", "ipv6": "fd7a:115c:a1e0::7837:c35d" }, "exit-b": { - "mts_name": "exit-b", - "socket": "/home/kradalby/.config/multi-tailscale-dev/exit-b/tailscaled.sock", "hostname": "exit-b", - "user_id": 2230775583277936, - "tags": ["tag:exit-b"], + "tags": [ + "tag:exit-b" + ], "ipv4": "100.116.18.24", "ipv6": "fd7a:115c:a1e0::ff37:1218" }, "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"], + "tags": [ + "tag:exit" + ], "ipv4": "100.85.66.106", "ipv6": "fd7a:115c:a1e0::7c37:426a" }, "group-a-client": { - "mts_name": "group-a-client", - "socket": "/home/kradalby/.config/multi-tailscale-dev/group-a-client/tailscaled.sock", "hostname": "group-a-client", - "user_id": 6999435610919250, - "tags": ["tag:group-a"], + "tags": [ + "tag:group-a" + ], "ipv4": "100.107.162.14", "ipv6": "fd7a:115c:a1e0::a237:a20e" }, "group-b-client": { - "mts_name": "group-b-client", - "socket": "/home/kradalby/.config/multi-tailscale-dev/group-b-client/tailscaled.sock", "hostname": "group-b-client", - "user_id": 1008089393782498, - "tags": ["tag:group-b"], + "tags": [ + "tag:group-b" + ], "ipv4": "100.77.135.18", "ipv6": "fd7a:115c:a1e0::4b37:8712" }, "multi-exit-router": { - "mts_name": "multi-exit-router", - "socket": "/home/kradalby/.config/multi-tailscale-dev/multi-exit-router/tailscaled.sock", "hostname": "multi-exit-router", - "user_id": 6294409699640722, - "tags": ["tag:exit", "tag:router"], + "tags": [ + "tag:exit", + "tag:router" + ], "ipv4": "100.105.127.107", "ipv6": "fd7a:115c:a1e0::ad37:7f6b" }, "router-a": { - "mts_name": "router-a", - "socket": "/home/kradalby/.config/multi-tailscale-dev/router-a/tailscaled.sock", "hostname": "router-a", - "user_id": 50590507314324, - "tags": ["tag:router-a"], + "tags": [ + "tag:router-a" + ], "ipv4": "100.109.43.124", "ipv6": "fd7a:115c:a1e0::a537:2b7c" }, "router-b": { - "mts_name": "router-b", - "socket": "/home/kradalby/.config/multi-tailscale-dev/router-b/tailscaled.sock", "hostname": "router-b", - "user_id": 1399889648409786, - "tags": ["tag:router-b"], + "tags": [ + "tag:router-b" + ], "ipv4": "100.65.172.123", "ipv6": "fd7a:115c:a1e0::5a37:ac7c" }, "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"], + "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"], + "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"], + "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"], + "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" @@ -200,16660 +223,108 @@ }, "captures": { "exit-a": { - "commands": { - "packet_filter_rules": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-a/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-a/tailscaled.sock debug localapi POST debug-packet-filter-matches" - }, "packet_filter_rules": null, - "packet_filter_matches": [], - "whois": { - "100.116.18.24": { - "peer_name": "exit-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-a/tailscaled.sock whois --json 100.116.18.24", - "response": null - }, - "100.85.66.106": { - "peer_name": "exit-node", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-a/tailscaled.sock whois --json 100.85.66.106", - "response": null - }, - "100.107.162.14": { - "peer_name": "group-a-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-a/tailscaled.sock whois --json 100.107.162.14", - "response": null - }, - "100.77.135.18": { - "peer_name": "group-b-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-a/tailscaled.sock whois --json 100.77.135.18", - "response": null - }, - "100.105.127.107": { - "peer_name": "multi-exit-router", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-a/tailscaled.sock whois --json 100.105.127.107", - "response": null - }, - "100.109.43.124": { - "peer_name": "router-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-a/tailscaled.sock whois --json 100.109.43.124", - "response": null - }, - "100.65.172.123": { - "peer_name": "router-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-a/tailscaled.sock whois --json 100.65.172.123", - "response": null - }, - "100.92.142.61": { - "peer_name": "subnet-router", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-a/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-a/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-a/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-a/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-a/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-a/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-a/tailscaled.sock whois --json 100.90.199.68", - "response": null - } - }, "netmap": { - "SelfNode": { - "ID": 3118755726458377, - "StableID": "nvFTscRVMR11CNTRL", - "Name": "exit-a.tail78f774.ts.net.", - "User": 3118755726458377, - "Key": "nodekey:21ab6fa3288e3bf8cecced295316c6327f427649765eb1746cc6ee9978bcc35c", - "DiscoKey": "discokey:0c8595f67987ed47cf551646d6266c21a635d622409d10745cc08f6922066e49", - "Addresses": ["100.124.195.93/32", "fd7a:115c:a1e0::7837:c35d/128"], - "AllowedIPs": ["100.124.195.93/32", "fd7a:115c:a1e0::7837:c35d/128"], - "Endpoints": ["77.164.248.136:37550", "10.65.0.27:37550", "172.17.0.1:37550"], - "Hostinfo": { - "Hostname": "exit-a", - "RoutableIPs": ["0.0.0.0/0", "::/0"], - "RequestTags": ["tag:exit-a"], - "Services": [ - { "Proto": "peerapi4", "Port": 57826 }, - { "Proto": "peerapi6", "Port": 57826 }, - { "Proto": "peerapi-dns-proxy", "Port": 1 } - ] - }, - "Created": "2026-03-28T10:37:56.932966573Z", - "Tags": ["tag:exit-a"], - "MachineAuthorized": true, - "CapMap": { - "https://tailscale.com/cap/file-sharing": null, - "https://tailscale.com/cap/is-owner": null, - "https://tailscale.com/cap/ssh": null, - "https://tailscale.com/cap/tailnet-lock": null, - "probe-udp-lifetime": null, - "ssh-behavior-v1": null, - "ssh-env-vars": null, - "store-appc-routes": null, - "tailnet-display-name": ["kratail2tid@passkey"] - }, - "ComputedName": "exit-a", - "ComputedNameWithHost": "exit-a" - }, - "AllCaps": [ - "https://tailscale.com/cap/is-owner", - "ssh-env-vars", - "store-appc-routes", - "ssh-behavior-v1", - "tailnet-display-name", - "https://tailscale.com/cap/ssh", - "https://tailscale.com/cap/tailnet-lock", - "https://tailscale.com/cap/file-sharing", - "probe-udp-lifetime" - ], - "NodeKey": "nodekey:21ab6fa3288e3bf8cecced295316c6327f427649765eb1746cc6ee9978bcc35c", - "MachineKey": "mkey:d4a36168723163165bbdcb0b17762903171593d01c26c5bb12216932f6d10876", "Peers": [], - "DNS": { - "Routes": { - "tail78f774.ts.net.": null, - "ts.net.": [{ "Addr": "199.247.155.53" }, { "Addr": "2620:111:8007::53" }] - }, - "Domains": ["tail78f774.ts.net"], - "Proxied": true, - "ExitNodeFilteredSet": [".ts.net", ".tailscale.net"] - }, - "PacketFilter": [], - "PacketFilterRules": null, - "SSHPolicy": { "rules": [] }, - "CollectServices": false, - "DERPMap": { - "Regions": { - "1": { - "RegionID": 1, - "RegionCode": "nyc", - "RegionName": "New York City", - "Latitude": 40.7128, - "Longitude": -74.006, - "Nodes": [ - { - "Name": "1h", - "RegionID": 1, - "HostName": "derp1h.tailscale.com", - "IPv4": "199.38.181.93", - "IPv6": "2607:f740:f::afd", - "CanPort80": true - }, - { - "Name": "1g", - "RegionID": 1, - "HostName": "derp1g.tailscale.com", - "IPv4": "209.177.145.120", - "IPv6": "2607:f740:f::3eb", - "CanPort80": true - }, - { - "Name": "1i", - "RegionID": 1, - "HostName": "derp1i.tailscale.com", - "IPv4": "199.38.181.103", - "IPv6": "2607:f740:f::e19", - "CanPort80": true - }, - { - "Name": "1f", - "RegionID": 1, - "HostName": "derp1f.tailscale.com", - "IPv4": "199.38.181.104", - "IPv6": "2607:f740:f::bc", - "CanPort80": true - } - ] - }, - "10": { - "RegionID": 10, - "RegionCode": "sea", - "RegionName": "Seattle", - "Latitude": 47.609722, - "Longitude": -122.333056, - "Nodes": [ - { - "Name": "10c", - "RegionID": 10, - "HostName": "derp10c.tailscale.com", - "IPv4": "192.73.240.121", - "IPv6": "2607:f740:14::40c", - "CanPort80": true - }, - { - "Name": "10d", - "RegionID": 10, - "HostName": "derp10d.tailscale.com", - "IPv4": "192.73.240.132", - "IPv6": "2607:f740:14::500", - "CanPort80": true - }, - { - "Name": "10b", - "RegionID": 10, - "HostName": "derp10b.tailscale.com", - "IPv4": "192.73.240.161", - "IPv6": "2607:f740:14::61c", - "CanPort80": true - } - ] - }, - "11": { - "RegionID": 11, - "RegionCode": "sao", - "RegionName": "São Paulo", - "Latitude": -23.55, - "Longitude": -46.633333, - "Nodes": [ - { - "Name": "11f", - "RegionID": 11, - "HostName": "derp11f.tailscale.com", - "IPv4": "172.237.61.197", - "IPv6": "2600:3c0d::2000:3bff:fe44:6166", - "CanPort80": true - }, - { - "Name": "11g", - "RegionID": 11, - "HostName": "derp11g.tailscale.com", - "IPv4": "172.237.61.190", - "IPv6": "2600:3c0d::2000:62ff:febe:2e67", - "CanPort80": true - }, - { - "Name": "11e", - "RegionID": 11, - "HostName": "derp11e.tailscale.com", - "IPv4": "172.237.61.194", - "IPv6": "2600:3c0d::2000:d2ff:fe43:1790", - "CanPort80": true - } - ] - }, - "12": { - "RegionID": 12, - "RegionCode": "ord", - "RegionName": "Chicago", - "Latitude": 41.881944, - "Longitude": -87.627778, - "Nodes": [ - { - "Name": "12e", - "RegionID": 12, - "HostName": "derp12e.tailscale.com", - "IPv4": "209.177.158.15", - "IPv6": "2607:f740:e::b17", - "CanPort80": true - }, - { - "Name": "12f", - "RegionID": 12, - "HostName": "derp12f.tailscale.com", - "IPv4": "199.38.182.118", - "IPv6": "2607:f740:e::4c8", - "CanPort80": true - }, - { - "Name": "12d", - "RegionID": 12, - "HostName": "derp12d.tailscale.com", - "IPv4": "209.177.158.246", - "IPv6": "2607:f740:e::811", - "CanPort80": true - } - ] - }, - "13": { - "RegionID": 13, - "RegionCode": "den", - "RegionName": "Denver", - "Latitude": 39.7392, - "Longitude": -104.9849, - "Nodes": [ - { - "Name": "13c", - "RegionID": 13, - "HostName": "derp13c.tailscale.com", - "IPv4": "192.73.242.28", - "IPv6": "2607:f740:16::5c", - "CanPort80": true - }, - { - "Name": "13d", - "RegionID": 13, - "HostName": "derp13d.tailscale.com", - "IPv4": "192.73.242.204", - "IPv6": "2607:f740:16::c23", - "CanPort80": true - }, - { - "Name": "13b", - "RegionID": 13, - "HostName": "derp13b.tailscale.com", - "IPv4": "192.73.242.187", - "IPv6": "2607:f740:16::640", - "CanPort80": true - } - ] - }, - "14": { - "RegionID": 14, - "RegionCode": "ams", - "RegionName": "Amsterdam", - "Latitude": 52.372778, - "Longitude": 4.893611, - "Nodes": [ - { - "Name": "14c", - "RegionID": 14, - "HostName": "derp14c.tailscale.com", - "IPv4": "176.58.93.147", - "IPv6": "2a00:dd80:3c::b09", - "CanPort80": true - }, - { - "Name": "14d", - "RegionID": 14, - "HostName": "derp14d.tailscale.com", - "IPv4": "176.58.93.154", - "IPv6": "2a00:dd80:3c::3d5", - "CanPort80": true - }, - { - "Name": "14b", - "RegionID": 14, - "HostName": "derp14b.tailscale.com", - "IPv4": "176.58.93.248", - "IPv6": "2a00:dd80:3c::807", - "CanPort80": true - } - ] - }, - "15": { - "RegionID": 15, - "RegionCode": "jnb", - "RegionName": "Johannesburg", - "Latitude": -26.204444, - "Longitude": 28.045556, - "Nodes": [ - { - "Name": "15c", - "RegionID": 15, - "HostName": "derp15c.tailscale.com", - "IPv4": "102.67.165.185", - "IPv6": "2c0f:edb0:0:10::b59", - "CanPort80": true - }, - { - "Name": "15d", - "RegionID": 15, - "HostName": "derp15d.tailscale.com", - "IPv4": "102.67.165.36", - "IPv6": "2c0f:edb0:0:10::599", - "CanPort80": true - }, - { - "Name": "15b", - "RegionID": 15, - "HostName": "derp15b.tailscale.com", - "IPv4": "102.67.165.90", - "IPv6": "2c0f:edb0:0:10::963", - "CanPort80": true - } - ] - }, - "16": { - "RegionID": 16, - "RegionCode": "mia", - "RegionName": "Miami", - "Latitude": 25.78, - "Longitude": -80.21, - "Nodes": [ - { - "Name": "16c", - "RegionID": 16, - "HostName": "derp16c.tailscale.com", - "IPv4": "192.73.243.229", - "IPv6": "2607:f740:17::4e4", - "CanPort80": true - }, - { - "Name": "16d", - "RegionID": 16, - "HostName": "derp16d.tailscale.com", - "IPv4": "192.73.243.141", - "IPv6": "2607:f740:17::475", - "CanPort80": true - }, - { - "Name": "16b", - "RegionID": 16, - "HostName": "derp16b.tailscale.com", - "IPv4": "192.73.243.135", - "IPv6": "2607:f740:17::476", - "CanPort80": true - } - ] - }, - "17": { - "RegionID": 17, - "RegionCode": "lax", - "RegionName": "Los Angeles", - "Latitude": 34.05, - "Longitude": -118.25, - "Nodes": [ - { - "Name": "17c", - "RegionID": 17, - "HostName": "derp17c.tailscale.com", - "IPv4": "208.111.40.12", - "IPv6": "2607:f740:c::10", - "CanPort80": true - }, - { - "Name": "17d", - "RegionID": 17, - "HostName": "derp17d.tailscale.com", - "IPv4": "208.111.40.216", - "IPv6": "2607:f740:c::e1b", - "CanPort80": true - }, - { - "Name": "17b", - "RegionID": 17, - "HostName": "derp17b.tailscale.com", - "IPv4": "192.73.244.245", - "IPv6": "2607:f740:c::646", - "CanPort80": true - } - ] - }, - "18": { - "RegionID": 18, - "RegionCode": "par", - "RegionName": "Paris", - "Latitude": 48.856667, - "Longitude": 2.352222, - "Nodes": [ - { - "Name": "18c", - "RegionID": 18, - "HostName": "derp18c.tailscale.com", - "IPv4": "176.58.90.207", - "IPv6": "2a00:dd80:3e::c19", - "CanPort80": true - }, - { - "Name": "18d", - "RegionID": 18, - "HostName": "derp18d.tailscale.com", - "IPv4": "176.58.90.104", - "IPv6": "2a00:dd80:3e::f2e", - "CanPort80": true - }, - { - "Name": "18b", - "RegionID": 18, - "HostName": "derp18b.tailscale.com", - "IPv4": "176.58.90.147", - "IPv6": "2a00:dd80:3e::363", - "CanPort80": true - } - ] - }, - "19": { - "RegionID": 19, - "RegionCode": "mad", - "RegionName": "Madrid", - "Latitude": 40.416944, - "Longitude": -3.703333, - "Nodes": [ - { - "Name": "19c", - "RegionID": 19, - "HostName": "derp19c.tailscale.com", - "IPv4": "45.159.97.61", - "IPv6": "2a00:dd80:14:10::20", - "CanPort80": true - }, - { - "Name": "19d", - "RegionID": 19, - "HostName": "derp19d.tailscale.com", - "IPv4": "45.159.97.233", - "IPv6": "2a00:dd80:14:10::34a", - "CanPort80": true - }, - { - "Name": "19b", - "RegionID": 19, - "HostName": "derp19b.tailscale.com", - "IPv4": "45.159.97.144", - "IPv6": "2a00:dd80:14:10::335", - "CanPort80": true - } - ] - }, - "2": { - "RegionID": 2, - "RegionCode": "sfo", - "RegionName": "San Francisco", - "Latitude": 37.7775, - "Longitude": -122.416389, - "Nodes": [ - { - "Name": "2e", - "RegionID": 2, - "HostName": "derp2e.tailscale.com", - "IPv4": "192.73.252.134", - "IPv6": "2607:f740:0:3f::44c", - "CanPort80": true - }, - { - "Name": "2f", - "RegionID": 2, - "HostName": "derp2f.tailscale.com", - "IPv4": "208.111.34.178", - "IPv6": "2607:f740:0:3f::f4", - "CanPort80": true - }, - { - "Name": "2d", - "RegionID": 2, - "HostName": "derp2d.tailscale.com", - "IPv4": "192.73.252.65", - "IPv6": "2607:f740:0:3f::287", - "CanPort80": true - } - ] - }, - "20": { - "RegionID": 20, - "RegionCode": "hkg", - "RegionName": "Hong Kong", - "Latitude": 22.3193, - "Longitude": 114.1694, - "Nodes": [ - { - "Name": "20c", - "RegionID": 20, - "HostName": "derp20c.tailscale.com", - "IPv4": "205.147.105.30", - "IPv6": "2403:2500:8000:1::5fb", - "CanPort80": true - }, - { - "Name": "20d", - "RegionID": 20, - "HostName": "derp20d.tailscale.com", - "IPv4": "205.147.105.78", - "IPv6": "2403:2500:8000:1::e9a", - "CanPort80": true - }, - { - "Name": "20b", - "RegionID": 20, - "HostName": "derp20b.tailscale.com", - "IPv4": "103.6.84.152", - "IPv6": "2403:2500:8000:1::ef6", - "CanPort80": true - } - ] - }, - "21": { - "RegionID": 21, - "RegionCode": "tor", - "RegionName": "Toronto", - "Latitude": 43.741667, - "Longitude": -79.373333, - "Nodes": [ - { - "Name": "21c", - "RegionID": 21, - "HostName": "derp21c.tailscale.com", - "IPv4": "162.248.221.215", - "IPv6": "2607:f740:50::f10", - "CanPort80": true - }, - { - "Name": "21d", - "RegionID": 21, - "HostName": "derp21d.tailscale.com", - "IPv4": "162.248.221.248", - "IPv6": "2607:f740:50::ca4", - "CanPort80": true - }, - { - "Name": "21b", - "RegionID": 21, - "HostName": "derp21b.tailscale.com", - "IPv4": "162.248.221.199", - "IPv6": "2607:f740:50::1d1", - "CanPort80": true - } - ] - }, - "22": { - "RegionID": 22, - "RegionCode": "waw", - "RegionName": "Warsaw", - "Latitude": 52.23, - "Longitude": 21.011111, - "Nodes": [ - { - "Name": "22c", - "RegionID": 22, - "HostName": "derp22c.tailscale.com", - "IPv4": "45.159.98.253", - "IPv6": "2a00:dd80:40:100::3f", - "CanPort80": true - }, - { - "Name": "22d", - "RegionID": 22, - "HostName": "derp22d.tailscale.com", - "IPv4": "45.159.98.145", - "IPv6": "2a00:dd80:40:100::211", - "CanPort80": true - }, - { - "Name": "22b", - "RegionID": 22, - "HostName": "derp22b.tailscale.com", - "IPv4": "45.159.98.196", - "IPv6": "2a00:dd80:40:100::316", - "CanPort80": true - } - ] - }, - "23": { - "RegionID": 23, - "RegionCode": "dbi", - "RegionName": "Dubai", - "Latitude": 25.263056, - "Longitude": 55.297222, - "Nodes": [ - { - "Name": "23c", - "RegionID": 23, - "HostName": "derp23c.tailscale.com", - "IPv4": "185.34.3.207", - "IPv6": "2a00:dd80:3f:100::a50", - "CanPort80": true - }, - { - "Name": "23d", - "RegionID": 23, - "HostName": "derp23d.tailscale.com", - "IPv4": "185.34.3.75", - "IPv6": "2a00:dd80:3f:100::97e", - "CanPort80": true - }, - { - "Name": "23b", - "RegionID": 23, - "HostName": "derp23b.tailscale.com", - "IPv4": "185.34.3.232", - "IPv6": "2a00:dd80:3f:100::76f", - "CanPort80": true - } - ] - }, - "24": { - "RegionID": 24, - "RegionCode": "hnl", - "RegionName": "Honolulu", - "Latitude": 21.306944, - "Longitude": -157.858333, - "Nodes": [ - { - "Name": "24c", - "RegionID": 24, - "HostName": "derp24c.tailscale.com", - "IPv4": "208.83.233.233", - "IPv6": "2001:19f0:c000:c591:5400:04ff:fe26:2c5f", - "CanPort80": true - }, - { - "Name": "24d", - "RegionID": 24, - "HostName": "derp24d.tailscale.com", - "IPv4": "208.72.155.133", - "IPv6": "2001:19f0:c000:c564:5400:04ff:fe26:2ba8", - "CanPort80": true - }, - { - "Name": "24b", - "RegionID": 24, - "HostName": "derp24b.tailscale.com", - "IPv4": "208.83.234.151", - "IPv6": "2001:19f0:c000:c586:5400:04ff:fe26:2ba6", - "CanPort80": true - } - ] - }, - "25": { - "RegionID": 25, - "RegionCode": "nai", - "RegionName": "Nairobi", - "Latitude": -1.286389, - "Longitude": 36.817222, - "Nodes": [ - { - "Name": "25c", - "RegionID": 25, - "HostName": "derp25c.tailscale.com", - "IPv4": "102.67.167.37", - "IPv6": "2c0f:edb0:2000:1::2c7", - "CanPort80": true - }, - { - "Name": "25d", - "RegionID": 25, - "HostName": "derp25d.tailscale.com", - "IPv4": "102.67.167.188", - "IPv6": "2c0f:edb0:2000:1::188", - "CanPort80": true - }, - { - "Name": "25b", - "RegionID": 25, - "HostName": "derp25b.tailscale.com", - "IPv4": "102.67.167.245", - "IPv6": "2c0f:edb0:2000:1::2e9", - "CanPort80": true - } - ] - }, - "26": { - "RegionID": 26, - "RegionCode": "nue", - "RegionName": "Nuremberg", - "Latitude": 49.453889, - "Longitude": 11.0775, - "Nodes": [ - { - "Name": "26c", - "RegionID": 26, - "HostName": "derp26c.tailscale.com", - "IPv4": "49.12.193.137", - "IPv6": "2a01:4f8:1c1c:5c70::1", - "CanPort80": true - }, - { - "Name": "26d", - "RegionID": 26, - "HostName": "derp26d.tailscale.com", - "IPv4": "49.13.204.141", - "IPv6": "2a01:4f8:1c0c:7d06::1", - "CanPort80": true - }, - { - "Name": "26b", - "RegionID": 26, - "HostName": "derp26b.tailscale.com", - "IPv4": "167.235.72.200", - "IPv6": "2a01:4f8:1c1c:47b6::1", - "CanPort80": true - } - ] - }, - "27": { - "RegionID": 27, - "RegionCode": "iad", - "RegionName": "Ashburn", - "Latitude": 39.03, - "Longitude": -77.471111, - "Nodes": [ - { - "Name": "27d", - "RegionID": 27, - "HostName": "derp27d.tailscale.com", - "IPv4": "178.156.152.106", - "IPv6": "2a01:4ff:f0:3c8e::1", - "CanPort80": true - }, - { - "Name": "27c", - "RegionID": 27, - "HostName": "derp27c.tailscale.com", - "IPv4": "178.156.152.91", - "IPv6": "2a01:4ff:f0:3913::1", - "CanPort80": true - }, - { - "Name": "27e", - "RegionID": 27, - "HostName": "derp27e.tailscale.com", - "IPv4": "178.156.134.232", - "IPv6": "2a01:4ff:f0:28d4::1", - "CanPort80": true - }, - { - "Name": "27b", - "RegionID": 27, - "HostName": "derp27b.tailscale.com", - "IPv4": "5.161.218.233", - "IPv6": "2a01:4ff:f0:3db9::1", - "CanPort80": true - } - ] - }, - "28": { - "RegionID": 28, - "RegionCode": "hel", - "RegionName": "Helsinki", - "Latitude": 60.170833, - "Longitude": 24.9375, - "Nodes": [ - { - "Name": "28c", - "RegionID": 28, - "HostName": "derp28c.tailscale.com", - "IPv4": "95.217.2.165", - "IPv6": "2a01:4f9:c012:cd74::1", - "CanPort80": true - }, - { - "Name": "28d", - "RegionID": 28, - "HostName": "derp28d.tailscale.com", - "IPv4": "157.180.28.32", - "IPv6": "2a01:4f9:c012:2e5b::1", - "CanPort80": true - }, - { - "Name": "28b", - "RegionID": 28, - "HostName": "derp28b.tailscale.com", - "IPv4": "65.109.143.62", - "IPv6": "2a01:4f9:c012:d55c::1", - "CanPort80": true - } - ] - }, - "3": { - "RegionID": 3, - "RegionCode": "sin", - "RegionName": "Singapore", - "Latitude": 1.3521, - "Longitude": 103.8198, - "Nodes": [ - { - "Name": "3g", - "RegionID": 3, - "HostName": "derp3g.tailscale.com", - "IPv4": "172.237.72.79", - "IPv6": "2600:3c15::2000:adff:fe08:6fab", - "CanPort80": true - }, - { - "Name": "3f", - "RegionID": 3, - "HostName": "derp3f.tailscale.com", - "IPv4": "172.237.72.8", - "IPv6": "2600:3c15::2000:53ff:fe48:a668", - "CanPort80": true - }, - { - "Name": "3h", - "RegionID": 3, - "HostName": "derp3h.tailscale.com", - "IPv4": "172.237.66.30", - "IPv6": "2600:3c15::2000:3dff:fe44:50aa", - "CanPort80": true - }, - { - "Name": "3e", - "RegionID": 3, - "HostName": "derp3e.tailscale.com", - "IPv4": "172.237.72.43", - "IPv6": "2600:3c15::2000:6cff:fee4:d799", - "CanPort80": true - } - ] - }, - "4": { - "RegionID": 4, - "RegionCode": "fra", - "RegionName": "Frankfurt", - "Latitude": 50.1109, - "Longitude": 8.6821, - "Nodes": [ - { - "Name": "4h", - "RegionID": 4, - "HostName": "derp4h.tailscale.com", - "IPv4": "185.40.234.77", - "IPv6": "2a00:dd80:20::bcf", - "CanPort80": true - }, - { - "Name": "4g", - "RegionID": 4, - "HostName": "derp4g.tailscale.com", - "IPv4": "185.40.234.113", - "IPv6": "2a00:dd80:20::8f", - "CanPort80": true - }, - { - "Name": "4i", - "RegionID": 4, - "HostName": "derp4i.tailscale.com", - "IPv4": "185.40.234.53", - "IPv6": "2a00:dd80:20::8a6", - "CanPort80": true - }, - { - "Name": "4f", - "RegionID": 4, - "HostName": "derp4f.tailscale.com", - "IPv4": "185.40.234.219", - "IPv6": "2a00:dd80:20::a25", - "CanPort80": true - } - ] - }, - "5": { - "RegionID": 5, - "RegionCode": "syd", - "RegionName": "Sydney", - "Latitude": -33.867778, - "Longitude": 151.21, - "Nodes": [ - { - "Name": "5f", - "RegionID": 5, - "HostName": "derp5f.tailscale.com", - "IPv4": "172.105.166.103", - "IPv6": "2400:8907::2000:ccff:fe1f:80da", - "CanPort80": true - }, - { - "Name": "5g", - "RegionID": 5, - "HostName": "derp5g.tailscale.com", - "IPv4": "172.105.169.57", - "IPv6": "2400:8907::2000:2fff:fea7:57f4", - "CanPort80": true - }, - { - "Name": "5e", - "RegionID": 5, - "HostName": "derp5e.tailscale.com", - "IPv4": "172.105.179.230", - "IPv6": "2400:8907::2000:ceff:fe8d:4f4e", - "CanPort80": true - } - ] - }, - "6": { - "RegionID": 6, - "RegionCode": "blr", - "RegionName": "Bengaluru", - "Latitude": 12.9716, - "Longitude": 77.5946, - "Nodes": [ - { - "Name": "6a", - "RegionID": 6, - "HostName": "derp6.tailscale.com", - "IPv4": "68.183.90.120", - "IPv6": "2400:6180:100:d0::982:d001", - "CanPort80": true - } - ] - }, - "7": { - "RegionID": 7, - "RegionCode": "tok", - "RegionName": "Tokyo", - "Latitude": 35.6764, - "Longitude": 139.65, - "Nodes": [ - { - "Name": "7g", - "RegionID": 7, - "HostName": "derp7g.tailscale.com", - "IPv4": "172.238.6.179", - "IPv6": "2600:3c18::2000:3fff:fe80:3ebd", - "CanPort80": true - }, - { - "Name": "7f", - "RegionID": 7, - "HostName": "derp7f.tailscale.com", - "IPv4": "172.238.6.34", - "IPv6": "2600:3c18::2000:acff:fe8e:3ed5", - "CanPort80": true - }, - { - "Name": "7h", - "RegionID": 7, - "HostName": "derp7h.tailscale.com", - "IPv4": "172.237.28.183", - "IPv6": "2600:3c18::2000:b1ff:fea9:4560", - "CanPort80": true - }, - { - "Name": "7e", - "RegionID": 7, - "HostName": "derp7e.tailscale.com", - "IPv4": "172.238.6.180", - "IPv6": "2600:3c18::2000:60ff:fe0f:6e83", - "STUNOnly": true, - "CanPort80": true - } - ] - }, - "8": { - "RegionID": 8, - "RegionCode": "lhr", - "RegionName": "London", - "Latitude": 51.5072, - "Longitude": 0.1276, - "Nodes": [ - { - "Name": "8f", - "RegionID": 8, - "HostName": "derp8f.tailscale.com", - "IPv4": "176.58.88.183", - "IPv6": "2a00:dd80:3a::dfa", - "CanPort80": true - }, - { - "Name": "8g", - "RegionID": 8, - "HostName": "derp8g.tailscale.com", - "IPv4": "176.58.92.254", - "IPv6": "2a00:dd80:3a::ed", - "CanPort80": true - }, - { - "Name": "8e", - "RegionID": 8, - "HostName": "derp8e.tailscale.com", - "IPv4": "176.58.92.144", - "IPv6": "2a00:dd80:3a::b33", - "CanPort80": true - } - ] - }, - "9": { - "RegionID": 9, - "RegionCode": "dfw", - "RegionName": "Dallas", - "Latitude": 32.779167, - "Longitude": -96.808889, - "Nodes": [ - { - "Name": "9e", - "RegionID": 9, - "HostName": "derp9e.tailscale.com", - "IPv4": "192.73.248.83", - "IPv6": "2607:f740:100::359", - "CanPort80": true - }, - { - "Name": "9f", - "RegionID": 9, - "HostName": "derp9f.tailscale.com", - "IPv4": "209.177.156.197", - "IPv6": "2607:f740:100::cad", - "CanPort80": true - }, - { - "Name": "9d", - "RegionID": 9, - "HostName": "derp9d.tailscale.com", - "IPv4": "209.177.156.94", - "IPv6": "2607:f740:100::c05", - "CanPort80": true - } - ] - } - } - }, - "DisplayMessages": null, - "TKAEnabled": false, - "TKAHead": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", - "Domain": "kratail2tid@passkey", - "DomainAuditLogID": "", - "UserProfiles": { - "3118755726458377": { - "ID": 3118755726458377, - "LoginName": "exit-a.tail78f774.ts.net", - "DisplayName": "exit-a" - } - } + "PacketFilterRules": null } }, "exit-b": { - "commands": { - "packet_filter_rules": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-b/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-b/tailscaled.sock debug localapi POST debug-packet-filter-matches" - }, "packet_filter_rules": null, - "packet_filter_matches": [], - "whois": { - "100.124.195.93": { - "peer_name": "exit-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-b/tailscaled.sock whois --json 100.124.195.93", - "response": null - }, - "100.85.66.106": { - "peer_name": "exit-node", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-b/tailscaled.sock whois --json 100.85.66.106", - "response": null - }, - "100.107.162.14": { - "peer_name": "group-a-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-b/tailscaled.sock whois --json 100.107.162.14", - "response": null - }, - "100.77.135.18": { - "peer_name": "group-b-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-b/tailscaled.sock whois --json 100.77.135.18", - "response": null - }, - "100.105.127.107": { - "peer_name": "multi-exit-router", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-b/tailscaled.sock whois --json 100.105.127.107", - "response": null - }, - "100.109.43.124": { - "peer_name": "router-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-b/tailscaled.sock whois --json 100.109.43.124", - "response": null - }, - "100.65.172.123": { - "peer_name": "router-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-b/tailscaled.sock whois --json 100.65.172.123", - "response": null - }, - "100.92.142.61": { - "peer_name": "subnet-router", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-b/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-b/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-b/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-b/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-b/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-b/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-b/tailscaled.sock whois --json 100.90.199.68", - "response": null - } - }, "netmap": { - "SelfNode": { - "ID": 2230775583277936, - "StableID": "ndK1N8hKRJ11CNTRL", - "Name": "exit-b.tail78f774.ts.net.", - "User": 2230775583277936, - "Key": "nodekey:265e1377372be0d036773ac41339bf7b53ed18e9f67f196d7d517abeff741217", - "DiscoKey": "discokey:63071b08ff89860a2d98005f8f6f65f3b92e05b7b1338b1be71e4ad866f12728", - "Addresses": ["100.116.18.24/32", "fd7a:115c:a1e0::ff37:1218/128"], - "AllowedIPs": ["100.116.18.24/32", "fd7a:115c:a1e0::ff37:1218/128"], - "Endpoints": ["77.164.248.136:35565", "10.65.0.27:35565", "172.17.0.1:35565"], - "Hostinfo": { - "Hostname": "exit-b", - "RoutableIPs": ["0.0.0.0/0", "::/0"], - "RequestTags": ["tag:exit-b"], - "Services": [ - { "Proto": "peerapi4", "Port": 61723 }, - { "Proto": "peerapi6", "Port": 61723 }, - { "Proto": "peerapi-dns-proxy", "Port": 1 } - ] - }, - "Created": "2026-03-28T10:38:00.655990366Z", - "Tags": ["tag:exit-b"], - "MachineAuthorized": true, - "CapMap": { - "https://tailscale.com/cap/file-sharing": null, - "https://tailscale.com/cap/is-owner": null, - "https://tailscale.com/cap/ssh": null, - "https://tailscale.com/cap/tailnet-lock": null, - "probe-udp-lifetime": null, - "ssh-behavior-v1": null, - "ssh-env-vars": null, - "store-appc-routes": null, - "tailnet-display-name": ["kratail2tid@passkey"] - }, - "ComputedName": "exit-b", - "ComputedNameWithHost": "exit-b" - }, - "AllCaps": [ - "https://tailscale.com/cap/is-owner", - "tailnet-display-name", - "https://tailscale.com/cap/file-sharing", - "https://tailscale.com/cap/tailnet-lock", - "ssh-env-vars", - "ssh-behavior-v1", - "https://tailscale.com/cap/ssh", - "probe-udp-lifetime", - "store-appc-routes" - ], - "NodeKey": "nodekey:265e1377372be0d036773ac41339bf7b53ed18e9f67f196d7d517abeff741217", - "MachineKey": "mkey:f4cbc28e2db0f8d8a6a5fc3991b055477e5efc6c025d24b72d3509fa3743401c", "Peers": [], - "DNS": { - "Routes": { - "tail78f774.ts.net.": null, - "ts.net.": [{ "Addr": "199.247.155.53" }, { "Addr": "2620:111:8007::53" }] - }, - "Domains": ["tail78f774.ts.net"], - "Proxied": true, - "ExitNodeFilteredSet": [".ts.net", ".tailscale.net"] - }, - "PacketFilter": [], - "PacketFilterRules": null, - "SSHPolicy": { "rules": [] }, - "CollectServices": false, - "DERPMap": { - "Regions": { - "1": { - "RegionID": 1, - "RegionCode": "nyc", - "RegionName": "New York City", - "Latitude": 40.7128, - "Longitude": -74.006, - "Nodes": [ - { - "Name": "1h", - "RegionID": 1, - "HostName": "derp1h.tailscale.com", - "IPv4": "199.38.181.93", - "IPv6": "2607:f740:f::afd", - "CanPort80": true - }, - { - "Name": "1g", - "RegionID": 1, - "HostName": "derp1g.tailscale.com", - "IPv4": "209.177.145.120", - "IPv6": "2607:f740:f::3eb", - "CanPort80": true - }, - { - "Name": "1i", - "RegionID": 1, - "HostName": "derp1i.tailscale.com", - "IPv4": "199.38.181.103", - "IPv6": "2607:f740:f::e19", - "CanPort80": true - }, - { - "Name": "1f", - "RegionID": 1, - "HostName": "derp1f.tailscale.com", - "IPv4": "199.38.181.104", - "IPv6": "2607:f740:f::bc", - "CanPort80": true - } - ] - }, - "10": { - "RegionID": 10, - "RegionCode": "sea", - "RegionName": "Seattle", - "Latitude": 47.609722, - "Longitude": -122.333056, - "Nodes": [ - { - "Name": "10c", - "RegionID": 10, - "HostName": "derp10c.tailscale.com", - "IPv4": "192.73.240.121", - "IPv6": "2607:f740:14::40c", - "CanPort80": true - }, - { - "Name": "10d", - "RegionID": 10, - "HostName": "derp10d.tailscale.com", - "IPv4": "192.73.240.132", - "IPv6": "2607:f740:14::500", - "CanPort80": true - }, - { - "Name": "10b", - "RegionID": 10, - "HostName": "derp10b.tailscale.com", - "IPv4": "192.73.240.161", - "IPv6": "2607:f740:14::61c", - "CanPort80": true - } - ] - }, - "11": { - "RegionID": 11, - "RegionCode": "sao", - "RegionName": "São Paulo", - "Latitude": -23.55, - "Longitude": -46.633333, - "Nodes": [ - { - "Name": "11f", - "RegionID": 11, - "HostName": "derp11f.tailscale.com", - "IPv4": "172.237.61.197", - "IPv6": "2600:3c0d::2000:3bff:fe44:6166", - "CanPort80": true - }, - { - "Name": "11g", - "RegionID": 11, - "HostName": "derp11g.tailscale.com", - "IPv4": "172.237.61.190", - "IPv6": "2600:3c0d::2000:62ff:febe:2e67", - "CanPort80": true - }, - { - "Name": "11e", - "RegionID": 11, - "HostName": "derp11e.tailscale.com", - "IPv4": "172.237.61.194", - "IPv6": "2600:3c0d::2000:d2ff:fe43:1790", - "CanPort80": true - } - ] - }, - "12": { - "RegionID": 12, - "RegionCode": "ord", - "RegionName": "Chicago", - "Latitude": 41.881944, - "Longitude": -87.627778, - "Nodes": [ - { - "Name": "12e", - "RegionID": 12, - "HostName": "derp12e.tailscale.com", - "IPv4": "209.177.158.15", - "IPv6": "2607:f740:e::b17", - "CanPort80": true - }, - { - "Name": "12f", - "RegionID": 12, - "HostName": "derp12f.tailscale.com", - "IPv4": "199.38.182.118", - "IPv6": "2607:f740:e::4c8", - "CanPort80": true - }, - { - "Name": "12d", - "RegionID": 12, - "HostName": "derp12d.tailscale.com", - "IPv4": "209.177.158.246", - "IPv6": "2607:f740:e::811", - "CanPort80": true - } - ] - }, - "13": { - "RegionID": 13, - "RegionCode": "den", - "RegionName": "Denver", - "Latitude": 39.7392, - "Longitude": -104.9849, - "Nodes": [ - { - "Name": "13c", - "RegionID": 13, - "HostName": "derp13c.tailscale.com", - "IPv4": "192.73.242.28", - "IPv6": "2607:f740:16::5c", - "CanPort80": true - }, - { - "Name": "13d", - "RegionID": 13, - "HostName": "derp13d.tailscale.com", - "IPv4": "192.73.242.204", - "IPv6": "2607:f740:16::c23", - "CanPort80": true - }, - { - "Name": "13b", - "RegionID": 13, - "HostName": "derp13b.tailscale.com", - "IPv4": "192.73.242.187", - "IPv6": "2607:f740:16::640", - "CanPort80": true - } - ] - }, - "14": { - "RegionID": 14, - "RegionCode": "ams", - "RegionName": "Amsterdam", - "Latitude": 52.372778, - "Longitude": 4.893611, - "Nodes": [ - { - "Name": "14c", - "RegionID": 14, - "HostName": "derp14c.tailscale.com", - "IPv4": "176.58.93.147", - "IPv6": "2a00:dd80:3c::b09", - "CanPort80": true - }, - { - "Name": "14d", - "RegionID": 14, - "HostName": "derp14d.tailscale.com", - "IPv4": "176.58.93.154", - "IPv6": "2a00:dd80:3c::3d5", - "CanPort80": true - }, - { - "Name": "14b", - "RegionID": 14, - "HostName": "derp14b.tailscale.com", - "IPv4": "176.58.93.248", - "IPv6": "2a00:dd80:3c::807", - "CanPort80": true - } - ] - }, - "15": { - "RegionID": 15, - "RegionCode": "jnb", - "RegionName": "Johannesburg", - "Latitude": -26.204444, - "Longitude": 28.045556, - "Nodes": [ - { - "Name": "15c", - "RegionID": 15, - "HostName": "derp15c.tailscale.com", - "IPv4": "102.67.165.185", - "IPv6": "2c0f:edb0:0:10::b59", - "CanPort80": true - }, - { - "Name": "15d", - "RegionID": 15, - "HostName": "derp15d.tailscale.com", - "IPv4": "102.67.165.36", - "IPv6": "2c0f:edb0:0:10::599", - "CanPort80": true - }, - { - "Name": "15b", - "RegionID": 15, - "HostName": "derp15b.tailscale.com", - "IPv4": "102.67.165.90", - "IPv6": "2c0f:edb0:0:10::963", - "CanPort80": true - } - ] - }, - "16": { - "RegionID": 16, - "RegionCode": "mia", - "RegionName": "Miami", - "Latitude": 25.78, - "Longitude": -80.21, - "Nodes": [ - { - "Name": "16c", - "RegionID": 16, - "HostName": "derp16c.tailscale.com", - "IPv4": "192.73.243.229", - "IPv6": "2607:f740:17::4e4", - "CanPort80": true - }, - { - "Name": "16d", - "RegionID": 16, - "HostName": "derp16d.tailscale.com", - "IPv4": "192.73.243.141", - "IPv6": "2607:f740:17::475", - "CanPort80": true - }, - { - "Name": "16b", - "RegionID": 16, - "HostName": "derp16b.tailscale.com", - "IPv4": "192.73.243.135", - "IPv6": "2607:f740:17::476", - "CanPort80": true - } - ] - }, - "17": { - "RegionID": 17, - "RegionCode": "lax", - "RegionName": "Los Angeles", - "Latitude": 34.05, - "Longitude": -118.25, - "Nodes": [ - { - "Name": "17c", - "RegionID": 17, - "HostName": "derp17c.tailscale.com", - "IPv4": "208.111.40.12", - "IPv6": "2607:f740:c::10", - "CanPort80": true - }, - { - "Name": "17d", - "RegionID": 17, - "HostName": "derp17d.tailscale.com", - "IPv4": "208.111.40.216", - "IPv6": "2607:f740:c::e1b", - "CanPort80": true - }, - { - "Name": "17b", - "RegionID": 17, - "HostName": "derp17b.tailscale.com", - "IPv4": "192.73.244.245", - "IPv6": "2607:f740:c::646", - "CanPort80": true - } - ] - }, - "18": { - "RegionID": 18, - "RegionCode": "par", - "RegionName": "Paris", - "Latitude": 48.856667, - "Longitude": 2.352222, - "Nodes": [ - { - "Name": "18c", - "RegionID": 18, - "HostName": "derp18c.tailscale.com", - "IPv4": "176.58.90.207", - "IPv6": "2a00:dd80:3e::c19", - "CanPort80": true - }, - { - "Name": "18d", - "RegionID": 18, - "HostName": "derp18d.tailscale.com", - "IPv4": "176.58.90.104", - "IPv6": "2a00:dd80:3e::f2e", - "CanPort80": true - }, - { - "Name": "18b", - "RegionID": 18, - "HostName": "derp18b.tailscale.com", - "IPv4": "176.58.90.147", - "IPv6": "2a00:dd80:3e::363", - "CanPort80": true - } - ] - }, - "19": { - "RegionID": 19, - "RegionCode": "mad", - "RegionName": "Madrid", - "Latitude": 40.416944, - "Longitude": -3.703333, - "Nodes": [ - { - "Name": "19c", - "RegionID": 19, - "HostName": "derp19c.tailscale.com", - "IPv4": "45.159.97.61", - "IPv6": "2a00:dd80:14:10::20", - "CanPort80": true - }, - { - "Name": "19d", - "RegionID": 19, - "HostName": "derp19d.tailscale.com", - "IPv4": "45.159.97.233", - "IPv6": "2a00:dd80:14:10::34a", - "CanPort80": true - }, - { - "Name": "19b", - "RegionID": 19, - "HostName": "derp19b.tailscale.com", - "IPv4": "45.159.97.144", - "IPv6": "2a00:dd80:14:10::335", - "CanPort80": true - } - ] - }, - "2": { - "RegionID": 2, - "RegionCode": "sfo", - "RegionName": "San Francisco", - "Latitude": 37.7775, - "Longitude": -122.416389, - "Nodes": [ - { - "Name": "2e", - "RegionID": 2, - "HostName": "derp2e.tailscale.com", - "IPv4": "192.73.252.134", - "IPv6": "2607:f740:0:3f::44c", - "CanPort80": true - }, - { - "Name": "2f", - "RegionID": 2, - "HostName": "derp2f.tailscale.com", - "IPv4": "208.111.34.178", - "IPv6": "2607:f740:0:3f::f4", - "CanPort80": true - }, - { - "Name": "2d", - "RegionID": 2, - "HostName": "derp2d.tailscale.com", - "IPv4": "192.73.252.65", - "IPv6": "2607:f740:0:3f::287", - "CanPort80": true - } - ] - }, - "20": { - "RegionID": 20, - "RegionCode": "hkg", - "RegionName": "Hong Kong", - "Latitude": 22.3193, - "Longitude": 114.1694, - "Nodes": [ - { - "Name": "20c", - "RegionID": 20, - "HostName": "derp20c.tailscale.com", - "IPv4": "205.147.105.30", - "IPv6": "2403:2500:8000:1::5fb", - "CanPort80": true - }, - { - "Name": "20d", - "RegionID": 20, - "HostName": "derp20d.tailscale.com", - "IPv4": "205.147.105.78", - "IPv6": "2403:2500:8000:1::e9a", - "CanPort80": true - }, - { - "Name": "20b", - "RegionID": 20, - "HostName": "derp20b.tailscale.com", - "IPv4": "103.6.84.152", - "IPv6": "2403:2500:8000:1::ef6", - "CanPort80": true - } - ] - }, - "21": { - "RegionID": 21, - "RegionCode": "tor", - "RegionName": "Toronto", - "Latitude": 43.741667, - "Longitude": -79.373333, - "Nodes": [ - { - "Name": "21c", - "RegionID": 21, - "HostName": "derp21c.tailscale.com", - "IPv4": "162.248.221.215", - "IPv6": "2607:f740:50::f10", - "CanPort80": true - }, - { - "Name": "21d", - "RegionID": 21, - "HostName": "derp21d.tailscale.com", - "IPv4": "162.248.221.248", - "IPv6": "2607:f740:50::ca4", - "CanPort80": true - }, - { - "Name": "21b", - "RegionID": 21, - "HostName": "derp21b.tailscale.com", - "IPv4": "162.248.221.199", - "IPv6": "2607:f740:50::1d1", - "CanPort80": true - } - ] - }, - "22": { - "RegionID": 22, - "RegionCode": "waw", - "RegionName": "Warsaw", - "Latitude": 52.23, - "Longitude": 21.011111, - "Nodes": [ - { - "Name": "22c", - "RegionID": 22, - "HostName": "derp22c.tailscale.com", - "IPv4": "45.159.98.253", - "IPv6": "2a00:dd80:40:100::3f", - "CanPort80": true - }, - { - "Name": "22d", - "RegionID": 22, - "HostName": "derp22d.tailscale.com", - "IPv4": "45.159.98.145", - "IPv6": "2a00:dd80:40:100::211", - "CanPort80": true - }, - { - "Name": "22b", - "RegionID": 22, - "HostName": "derp22b.tailscale.com", - "IPv4": "45.159.98.196", - "IPv6": "2a00:dd80:40:100::316", - "CanPort80": true - } - ] - }, - "23": { - "RegionID": 23, - "RegionCode": "dbi", - "RegionName": "Dubai", - "Latitude": 25.263056, - "Longitude": 55.297222, - "Nodes": [ - { - "Name": "23c", - "RegionID": 23, - "HostName": "derp23c.tailscale.com", - "IPv4": "185.34.3.207", - "IPv6": "2a00:dd80:3f:100::a50", - "CanPort80": true - }, - { - "Name": "23d", - "RegionID": 23, - "HostName": "derp23d.tailscale.com", - "IPv4": "185.34.3.75", - "IPv6": "2a00:dd80:3f:100::97e", - "CanPort80": true - }, - { - "Name": "23b", - "RegionID": 23, - "HostName": "derp23b.tailscale.com", - "IPv4": "185.34.3.232", - "IPv6": "2a00:dd80:3f:100::76f", - "CanPort80": true - } - ] - }, - "24": { - "RegionID": 24, - "RegionCode": "hnl", - "RegionName": "Honolulu", - "Latitude": 21.306944, - "Longitude": -157.858333, - "Nodes": [ - { - "Name": "24c", - "RegionID": 24, - "HostName": "derp24c.tailscale.com", - "IPv4": "208.83.233.233", - "IPv6": "2001:19f0:c000:c591:5400:04ff:fe26:2c5f", - "CanPort80": true - }, - { - "Name": "24d", - "RegionID": 24, - "HostName": "derp24d.tailscale.com", - "IPv4": "208.72.155.133", - "IPv6": "2001:19f0:c000:c564:5400:04ff:fe26:2ba8", - "CanPort80": true - }, - { - "Name": "24b", - "RegionID": 24, - "HostName": "derp24b.tailscale.com", - "IPv4": "208.83.234.151", - "IPv6": "2001:19f0:c000:c586:5400:04ff:fe26:2ba6", - "CanPort80": true - } - ] - }, - "25": { - "RegionID": 25, - "RegionCode": "nai", - "RegionName": "Nairobi", - "Latitude": -1.286389, - "Longitude": 36.817222, - "Nodes": [ - { - "Name": "25c", - "RegionID": 25, - "HostName": "derp25c.tailscale.com", - "IPv4": "102.67.167.37", - "IPv6": "2c0f:edb0:2000:1::2c7", - "CanPort80": true - }, - { - "Name": "25d", - "RegionID": 25, - "HostName": "derp25d.tailscale.com", - "IPv4": "102.67.167.188", - "IPv6": "2c0f:edb0:2000:1::188", - "CanPort80": true - }, - { - "Name": "25b", - "RegionID": 25, - "HostName": "derp25b.tailscale.com", - "IPv4": "102.67.167.245", - "IPv6": "2c0f:edb0:2000:1::2e9", - "CanPort80": true - } - ] - }, - "26": { - "RegionID": 26, - "RegionCode": "nue", - "RegionName": "Nuremberg", - "Latitude": 49.453889, - "Longitude": 11.0775, - "Nodes": [ - { - "Name": "26c", - "RegionID": 26, - "HostName": "derp26c.tailscale.com", - "IPv4": "49.12.193.137", - "IPv6": "2a01:4f8:1c1c:5c70::1", - "CanPort80": true - }, - { - "Name": "26d", - "RegionID": 26, - "HostName": "derp26d.tailscale.com", - "IPv4": "49.13.204.141", - "IPv6": "2a01:4f8:1c0c:7d06::1", - "CanPort80": true - }, - { - "Name": "26b", - "RegionID": 26, - "HostName": "derp26b.tailscale.com", - "IPv4": "167.235.72.200", - "IPv6": "2a01:4f8:1c1c:47b6::1", - "CanPort80": true - } - ] - }, - "27": { - "RegionID": 27, - "RegionCode": "iad", - "RegionName": "Ashburn", - "Latitude": 39.03, - "Longitude": -77.471111, - "Nodes": [ - { - "Name": "27d", - "RegionID": 27, - "HostName": "derp27d.tailscale.com", - "IPv4": "178.156.152.106", - "IPv6": "2a01:4ff:f0:3c8e::1", - "CanPort80": true - }, - { - "Name": "27c", - "RegionID": 27, - "HostName": "derp27c.tailscale.com", - "IPv4": "178.156.152.91", - "IPv6": "2a01:4ff:f0:3913::1", - "CanPort80": true - }, - { - "Name": "27e", - "RegionID": 27, - "HostName": "derp27e.tailscale.com", - "IPv4": "178.156.134.232", - "IPv6": "2a01:4ff:f0:28d4::1", - "CanPort80": true - }, - { - "Name": "27b", - "RegionID": 27, - "HostName": "derp27b.tailscale.com", - "IPv4": "5.161.218.233", - "IPv6": "2a01:4ff:f0:3db9::1", - "CanPort80": true - } - ] - }, - "28": { - "RegionID": 28, - "RegionCode": "hel", - "RegionName": "Helsinki", - "Latitude": 60.170833, - "Longitude": 24.9375, - "Nodes": [ - { - "Name": "28c", - "RegionID": 28, - "HostName": "derp28c.tailscale.com", - "IPv4": "95.217.2.165", - "IPv6": "2a01:4f9:c012:cd74::1", - "CanPort80": true - }, - { - "Name": "28d", - "RegionID": 28, - "HostName": "derp28d.tailscale.com", - "IPv4": "157.180.28.32", - "IPv6": "2a01:4f9:c012:2e5b::1", - "CanPort80": true - }, - { - "Name": "28b", - "RegionID": 28, - "HostName": "derp28b.tailscale.com", - "IPv4": "65.109.143.62", - "IPv6": "2a01:4f9:c012:d55c::1", - "CanPort80": true - } - ] - }, - "3": { - "RegionID": 3, - "RegionCode": "sin", - "RegionName": "Singapore", - "Latitude": 1.3521, - "Longitude": 103.8198, - "Nodes": [ - { - "Name": "3g", - "RegionID": 3, - "HostName": "derp3g.tailscale.com", - "IPv4": "172.237.72.79", - "IPv6": "2600:3c15::2000:adff:fe08:6fab", - "CanPort80": true - }, - { - "Name": "3f", - "RegionID": 3, - "HostName": "derp3f.tailscale.com", - "IPv4": "172.237.72.8", - "IPv6": "2600:3c15::2000:53ff:fe48:a668", - "CanPort80": true - }, - { - "Name": "3h", - "RegionID": 3, - "HostName": "derp3h.tailscale.com", - "IPv4": "172.237.66.30", - "IPv6": "2600:3c15::2000:3dff:fe44:50aa", - "CanPort80": true - }, - { - "Name": "3e", - "RegionID": 3, - "HostName": "derp3e.tailscale.com", - "IPv4": "172.237.72.43", - "IPv6": "2600:3c15::2000:6cff:fee4:d799", - "CanPort80": true - } - ] - }, - "4": { - "RegionID": 4, - "RegionCode": "fra", - "RegionName": "Frankfurt", - "Latitude": 50.1109, - "Longitude": 8.6821, - "Nodes": [ - { - "Name": "4h", - "RegionID": 4, - "HostName": "derp4h.tailscale.com", - "IPv4": "185.40.234.77", - "IPv6": "2a00:dd80:20::bcf", - "CanPort80": true - }, - { - "Name": "4g", - "RegionID": 4, - "HostName": "derp4g.tailscale.com", - "IPv4": "185.40.234.113", - "IPv6": "2a00:dd80:20::8f", - "CanPort80": true - }, - { - "Name": "4i", - "RegionID": 4, - "HostName": "derp4i.tailscale.com", - "IPv4": "185.40.234.53", - "IPv6": "2a00:dd80:20::8a6", - "CanPort80": true - }, - { - "Name": "4f", - "RegionID": 4, - "HostName": "derp4f.tailscale.com", - "IPv4": "185.40.234.219", - "IPv6": "2a00:dd80:20::a25", - "CanPort80": true - } - ] - }, - "5": { - "RegionID": 5, - "RegionCode": "syd", - "RegionName": "Sydney", - "Latitude": -33.867778, - "Longitude": 151.21, - "Nodes": [ - { - "Name": "5f", - "RegionID": 5, - "HostName": "derp5f.tailscale.com", - "IPv4": "172.105.166.103", - "IPv6": "2400:8907::2000:ccff:fe1f:80da", - "CanPort80": true - }, - { - "Name": "5g", - "RegionID": 5, - "HostName": "derp5g.tailscale.com", - "IPv4": "172.105.169.57", - "IPv6": "2400:8907::2000:2fff:fea7:57f4", - "CanPort80": true - }, - { - "Name": "5e", - "RegionID": 5, - "HostName": "derp5e.tailscale.com", - "IPv4": "172.105.179.230", - "IPv6": "2400:8907::2000:ceff:fe8d:4f4e", - "CanPort80": true - } - ] - }, - "6": { - "RegionID": 6, - "RegionCode": "blr", - "RegionName": "Bengaluru", - "Latitude": 12.9716, - "Longitude": 77.5946, - "Nodes": [ - { - "Name": "6a", - "RegionID": 6, - "HostName": "derp6.tailscale.com", - "IPv4": "68.183.90.120", - "IPv6": "2400:6180:100:d0::982:d001", - "CanPort80": true - } - ] - }, - "7": { - "RegionID": 7, - "RegionCode": "tok", - "RegionName": "Tokyo", - "Latitude": 35.6764, - "Longitude": 139.65, - "Nodes": [ - { - "Name": "7g", - "RegionID": 7, - "HostName": "derp7g.tailscale.com", - "IPv4": "172.238.6.179", - "IPv6": "2600:3c18::2000:3fff:fe80:3ebd", - "CanPort80": true - }, - { - "Name": "7f", - "RegionID": 7, - "HostName": "derp7f.tailscale.com", - "IPv4": "172.238.6.34", - "IPv6": "2600:3c18::2000:acff:fe8e:3ed5", - "CanPort80": true - }, - { - "Name": "7h", - "RegionID": 7, - "HostName": "derp7h.tailscale.com", - "IPv4": "172.237.28.183", - "IPv6": "2600:3c18::2000:b1ff:fea9:4560", - "CanPort80": true - }, - { - "Name": "7e", - "RegionID": 7, - "HostName": "derp7e.tailscale.com", - "IPv4": "172.238.6.180", - "IPv6": "2600:3c18::2000:60ff:fe0f:6e83", - "STUNOnly": true, - "CanPort80": true - } - ] - }, - "8": { - "RegionID": 8, - "RegionCode": "lhr", - "RegionName": "London", - "Latitude": 51.5072, - "Longitude": 0.1276, - "Nodes": [ - { - "Name": "8f", - "RegionID": 8, - "HostName": "derp8f.tailscale.com", - "IPv4": "176.58.88.183", - "IPv6": "2a00:dd80:3a::dfa", - "CanPort80": true - }, - { - "Name": "8g", - "RegionID": 8, - "HostName": "derp8g.tailscale.com", - "IPv4": "176.58.92.254", - "IPv6": "2a00:dd80:3a::ed", - "CanPort80": true - }, - { - "Name": "8e", - "RegionID": 8, - "HostName": "derp8e.tailscale.com", - "IPv4": "176.58.92.144", - "IPv6": "2a00:dd80:3a::b33", - "CanPort80": true - } - ] - }, - "9": { - "RegionID": 9, - "RegionCode": "dfw", - "RegionName": "Dallas", - "Latitude": 32.779167, - "Longitude": -96.808889, - "Nodes": [ - { - "Name": "9e", - "RegionID": 9, - "HostName": "derp9e.tailscale.com", - "IPv4": "192.73.248.83", - "IPv6": "2607:f740:100::359", - "CanPort80": true - }, - { - "Name": "9f", - "RegionID": 9, - "HostName": "derp9f.tailscale.com", - "IPv4": "209.177.156.197", - "IPv6": "2607:f740:100::cad", - "CanPort80": true - }, - { - "Name": "9d", - "RegionID": 9, - "HostName": "derp9d.tailscale.com", - "IPv4": "209.177.156.94", - "IPv6": "2607:f740:100::c05", - "CanPort80": true - } - ] - } - } - }, - "DisplayMessages": null, - "TKAEnabled": false, - "TKAHead": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", - "Domain": "kratail2tid@passkey", - "DomainAuditLogID": "", - "UserProfiles": { - "2230775583277936": { - "ID": 2230775583277936, - "LoginName": "exit-b.tail78f774.ts.net", - "DisplayName": "exit-b" - } - } + "PacketFilterRules": null } }, "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.124.195.93": { - "peer_name": "exit-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-node/tailscaled.sock whois --json 100.124.195.93", - "response": null - }, - "100.116.18.24": { - "peer_name": "exit-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-node/tailscaled.sock whois --json 100.116.18.24", - "response": null - }, - "100.107.162.14": { - "peer_name": "group-a-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-node/tailscaled.sock whois --json 100.107.162.14", - "response": null - }, - "100.77.135.18": { - "peer_name": "group-b-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-node/tailscaled.sock whois --json 100.77.135.18", - "response": null - }, - "100.105.127.107": { - "peer_name": "multi-exit-router", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-node/tailscaled.sock whois --json 100.105.127.107", - "response": null - }, - "100.109.43.124": { - "peer_name": "router-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-node/tailscaled.sock whois --json 100.109.43.124", - "response": null - }, - "100.65.172.123": { - "peer_name": "router-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-node/tailscaled.sock whois --json 100.65.172.123", - "response": null - }, - "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 - } - }, "netmap": { - "SelfNode": { - "ID": 4041918547170221, - "StableID": "ngCb76MbZY11CNTRL", - "Name": "exit-node.tail78f774.ts.net.", - "User": 4041918547170221, - "Key": "nodekey:90f4a7b9dc024f1ddec414a49de2aa7611a2dd86efc9d7bae30862ad7c954269", - "DiscoKey": "discokey:6f1a76215431d7100538970473d97b4fde0e0a19b91035d1cba40b59ad79b437", - "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:36712", "10.65.0.27:36712", "172.17.0.1:36712"], - "Hostinfo": { - "Hostname": "exit-node", - "RoutableIPs": ["0.0.0.0/0", "::/0"], - "RequestTags": ["tag:exit"], - "Services": [ - { "Proto": "peerapi4", "Port": 37000 }, - { "Proto": "peerapi6", "Port": 37000 }, - { "Proto": "peerapi-dns-proxy", "Port": 1 } - ] - }, - "Created": "2026-02-23T00:13:20.566112173Z", - "Tags": ["tag:exit"], - "MachineAuthorized": true, - "CapMap": { - "https://tailscale.com/cap/file-sharing": null, - "https://tailscale.com/cap/is-owner": null, - "https://tailscale.com/cap/ssh": null, - "https://tailscale.com/cap/tailnet-lock": null, - "probe-udp-lifetime": null, - "ssh-behavior-v1": null, - "ssh-env-vars": null, - "store-appc-routes": null, - "tailnet-display-name": ["kratail2tid@passkey"] - }, - "ComputedName": "exit-node", - "ComputedNameWithHost": "exit-node" - }, - "AllCaps": [ - "ssh-env-vars", - "probe-udp-lifetime", - "https://tailscale.com/cap/ssh", - "store-appc-routes", - "tailnet-display-name", - "https://tailscale.com/cap/file-sharing", - "https://tailscale.com/cap/is-owner", - "ssh-behavior-v1", - "https://tailscale.com/cap/tailnet-lock" - ], - "NodeKey": "nodekey:90f4a7b9dc024f1ddec414a49de2aa7611a2dd86efc9d7bae30862ad7c954269", - "MachineKey": "mkey:e3be47b2090e55400f3e64825cd3092841529cd7b5b775e9e4553f12308abc2a", "Peers": [], - "DNS": { - "Routes": { - "tail78f774.ts.net.": null, - "ts.net.": [{ "Addr": "199.247.155.53" }, { "Addr": "2620:111:8007::53" }] - }, - "Domains": ["tail78f774.ts.net"], - "Proxied": true, - "ExitNodeFilteredSet": [".ts.net", ".tailscale.net"] - }, - "PacketFilter": [], - "PacketFilterRules": null, - "SSHPolicy": { "rules": [] }, - "CollectServices": false, - "DERPMap": { - "Regions": { - "1": { - "RegionID": 1, - "RegionCode": "nyc", - "RegionName": "New York City", - "Latitude": 40.7128, - "Longitude": -74.006, - "Nodes": [ - { - "Name": "1h", - "RegionID": 1, - "HostName": "derp1h.tailscale.com", - "IPv4": "199.38.181.93", - "IPv6": "2607:f740:f::afd", - "CanPort80": true - }, - { - "Name": "1g", - "RegionID": 1, - "HostName": "derp1g.tailscale.com", - "IPv4": "209.177.145.120", - "IPv6": "2607:f740:f::3eb", - "CanPort80": true - }, - { - "Name": "1i", - "RegionID": 1, - "HostName": "derp1i.tailscale.com", - "IPv4": "199.38.181.103", - "IPv6": "2607:f740:f::e19", - "CanPort80": true - }, - { - "Name": "1f", - "RegionID": 1, - "HostName": "derp1f.tailscale.com", - "IPv4": "199.38.181.104", - "IPv6": "2607:f740:f::bc", - "CanPort80": true - } - ] - }, - "10": { - "RegionID": 10, - "RegionCode": "sea", - "RegionName": "Seattle", - "Latitude": 47.609722, - "Longitude": -122.333056, - "Nodes": [ - { - "Name": "10c", - "RegionID": 10, - "HostName": "derp10c.tailscale.com", - "IPv4": "192.73.240.121", - "IPv6": "2607:f740:14::40c", - "CanPort80": true - }, - { - "Name": "10d", - "RegionID": 10, - "HostName": "derp10d.tailscale.com", - "IPv4": "192.73.240.132", - "IPv6": "2607:f740:14::500", - "CanPort80": true - }, - { - "Name": "10b", - "RegionID": 10, - "HostName": "derp10b.tailscale.com", - "IPv4": "192.73.240.161", - "IPv6": "2607:f740:14::61c", - "CanPort80": true - } - ] - }, - "11": { - "RegionID": 11, - "RegionCode": "sao", - "RegionName": "São Paulo", - "Latitude": -23.55, - "Longitude": -46.633333, - "Nodes": [ - { - "Name": "11f", - "RegionID": 11, - "HostName": "derp11f.tailscale.com", - "IPv4": "172.237.61.197", - "IPv6": "2600:3c0d::2000:3bff:fe44:6166", - "CanPort80": true - }, - { - "Name": "11g", - "RegionID": 11, - "HostName": "derp11g.tailscale.com", - "IPv4": "172.237.61.190", - "IPv6": "2600:3c0d::2000:62ff:febe:2e67", - "CanPort80": true - }, - { - "Name": "11e", - "RegionID": 11, - "HostName": "derp11e.tailscale.com", - "IPv4": "172.237.61.194", - "IPv6": "2600:3c0d::2000:d2ff:fe43:1790", - "CanPort80": true - } - ] - }, - "12": { - "RegionID": 12, - "RegionCode": "ord", - "RegionName": "Chicago", - "Latitude": 41.881944, - "Longitude": -87.627778, - "Nodes": [ - { - "Name": "12e", - "RegionID": 12, - "HostName": "derp12e.tailscale.com", - "IPv4": "209.177.158.15", - "IPv6": "2607:f740:e::b17", - "CanPort80": true - }, - { - "Name": "12f", - "RegionID": 12, - "HostName": "derp12f.tailscale.com", - "IPv4": "199.38.182.118", - "IPv6": "2607:f740:e::4c8", - "CanPort80": true - }, - { - "Name": "12d", - "RegionID": 12, - "HostName": "derp12d.tailscale.com", - "IPv4": "209.177.158.246", - "IPv6": "2607:f740:e::811", - "CanPort80": true - } - ] - }, - "13": { - "RegionID": 13, - "RegionCode": "den", - "RegionName": "Denver", - "Latitude": 39.7392, - "Longitude": -104.9849, - "Nodes": [ - { - "Name": "13c", - "RegionID": 13, - "HostName": "derp13c.tailscale.com", - "IPv4": "192.73.242.28", - "IPv6": "2607:f740:16::5c", - "CanPort80": true - }, - { - "Name": "13d", - "RegionID": 13, - "HostName": "derp13d.tailscale.com", - "IPv4": "192.73.242.204", - "IPv6": "2607:f740:16::c23", - "CanPort80": true - }, - { - "Name": "13b", - "RegionID": 13, - "HostName": "derp13b.tailscale.com", - "IPv4": "192.73.242.187", - "IPv6": "2607:f740:16::640", - "CanPort80": true - } - ] - }, - "14": { - "RegionID": 14, - "RegionCode": "ams", - "RegionName": "Amsterdam", - "Latitude": 52.372778, - "Longitude": 4.893611, - "Nodes": [ - { - "Name": "14c", - "RegionID": 14, - "HostName": "derp14c.tailscale.com", - "IPv4": "176.58.93.147", - "IPv6": "2a00:dd80:3c::b09", - "CanPort80": true - }, - { - "Name": "14d", - "RegionID": 14, - "HostName": "derp14d.tailscale.com", - "IPv4": "176.58.93.154", - "IPv6": "2a00:dd80:3c::3d5", - "CanPort80": true - }, - { - "Name": "14b", - "RegionID": 14, - "HostName": "derp14b.tailscale.com", - "IPv4": "176.58.93.248", - "IPv6": "2a00:dd80:3c::807", - "CanPort80": true - } - ] - }, - "15": { - "RegionID": 15, - "RegionCode": "jnb", - "RegionName": "Johannesburg", - "Latitude": -26.204444, - "Longitude": 28.045556, - "Nodes": [ - { - "Name": "15c", - "RegionID": 15, - "HostName": "derp15c.tailscale.com", - "IPv4": "102.67.165.185", - "IPv6": "2c0f:edb0:0:10::b59", - "CanPort80": true - }, - { - "Name": "15d", - "RegionID": 15, - "HostName": "derp15d.tailscale.com", - "IPv4": "102.67.165.36", - "IPv6": "2c0f:edb0:0:10::599", - "CanPort80": true - }, - { - "Name": "15b", - "RegionID": 15, - "HostName": "derp15b.tailscale.com", - "IPv4": "102.67.165.90", - "IPv6": "2c0f:edb0:0:10::963", - "CanPort80": true - } - ] - }, - "16": { - "RegionID": 16, - "RegionCode": "mia", - "RegionName": "Miami", - "Latitude": 25.78, - "Longitude": -80.21, - "Nodes": [ - { - "Name": "16c", - "RegionID": 16, - "HostName": "derp16c.tailscale.com", - "IPv4": "192.73.243.229", - "IPv6": "2607:f740:17::4e4", - "CanPort80": true - }, - { - "Name": "16d", - "RegionID": 16, - "HostName": "derp16d.tailscale.com", - "IPv4": "192.73.243.141", - "IPv6": "2607:f740:17::475", - "CanPort80": true - }, - { - "Name": "16b", - "RegionID": 16, - "HostName": "derp16b.tailscale.com", - "IPv4": "192.73.243.135", - "IPv6": "2607:f740:17::476", - "CanPort80": true - } - ] - }, - "17": { - "RegionID": 17, - "RegionCode": "lax", - "RegionName": "Los Angeles", - "Latitude": 34.05, - "Longitude": -118.25, - "Nodes": [ - { - "Name": "17c", - "RegionID": 17, - "HostName": "derp17c.tailscale.com", - "IPv4": "208.111.40.12", - "IPv6": "2607:f740:c::10", - "CanPort80": true - }, - { - "Name": "17d", - "RegionID": 17, - "HostName": "derp17d.tailscale.com", - "IPv4": "208.111.40.216", - "IPv6": "2607:f740:c::e1b", - "CanPort80": true - }, - { - "Name": "17b", - "RegionID": 17, - "HostName": "derp17b.tailscale.com", - "IPv4": "192.73.244.245", - "IPv6": "2607:f740:c::646", - "CanPort80": true - } - ] - }, - "18": { - "RegionID": 18, - "RegionCode": "par", - "RegionName": "Paris", - "Latitude": 48.856667, - "Longitude": 2.352222, - "Nodes": [ - { - "Name": "18c", - "RegionID": 18, - "HostName": "derp18c.tailscale.com", - "IPv4": "176.58.90.207", - "IPv6": "2a00:dd80:3e::c19", - "CanPort80": true - }, - { - "Name": "18d", - "RegionID": 18, - "HostName": "derp18d.tailscale.com", - "IPv4": "176.58.90.104", - "IPv6": "2a00:dd80:3e::f2e", - "CanPort80": true - }, - { - "Name": "18b", - "RegionID": 18, - "HostName": "derp18b.tailscale.com", - "IPv4": "176.58.90.147", - "IPv6": "2a00:dd80:3e::363", - "CanPort80": true - } - ] - }, - "19": { - "RegionID": 19, - "RegionCode": "mad", - "RegionName": "Madrid", - "Latitude": 40.416944, - "Longitude": -3.703333, - "Nodes": [ - { - "Name": "19c", - "RegionID": 19, - "HostName": "derp19c.tailscale.com", - "IPv4": "45.159.97.61", - "IPv6": "2a00:dd80:14:10::20", - "CanPort80": true - }, - { - "Name": "19d", - "RegionID": 19, - "HostName": "derp19d.tailscale.com", - "IPv4": "45.159.97.233", - "IPv6": "2a00:dd80:14:10::34a", - "CanPort80": true - }, - { - "Name": "19b", - "RegionID": 19, - "HostName": "derp19b.tailscale.com", - "IPv4": "45.159.97.144", - "IPv6": "2a00:dd80:14:10::335", - "CanPort80": true - } - ] - }, - "2": { - "RegionID": 2, - "RegionCode": "sfo", - "RegionName": "San Francisco", - "Latitude": 37.7775, - "Longitude": -122.416389, - "Nodes": [ - { - "Name": "2e", - "RegionID": 2, - "HostName": "derp2e.tailscale.com", - "IPv4": "192.73.252.134", - "IPv6": "2607:f740:0:3f::44c", - "CanPort80": true - }, - { - "Name": "2f", - "RegionID": 2, - "HostName": "derp2f.tailscale.com", - "IPv4": "208.111.34.178", - "IPv6": "2607:f740:0:3f::f4", - "CanPort80": true - }, - { - "Name": "2d", - "RegionID": 2, - "HostName": "derp2d.tailscale.com", - "IPv4": "192.73.252.65", - "IPv6": "2607:f740:0:3f::287", - "CanPort80": true - } - ] - }, - "20": { - "RegionID": 20, - "RegionCode": "hkg", - "RegionName": "Hong Kong", - "Latitude": 22.3193, - "Longitude": 114.1694, - "Nodes": [ - { - "Name": "20c", - "RegionID": 20, - "HostName": "derp20c.tailscale.com", - "IPv4": "205.147.105.30", - "IPv6": "2403:2500:8000:1::5fb", - "CanPort80": true - }, - { - "Name": "20d", - "RegionID": 20, - "HostName": "derp20d.tailscale.com", - "IPv4": "205.147.105.78", - "IPv6": "2403:2500:8000:1::e9a", - "CanPort80": true - }, - { - "Name": "20b", - "RegionID": 20, - "HostName": "derp20b.tailscale.com", - "IPv4": "103.6.84.152", - "IPv6": "2403:2500:8000:1::ef6", - "CanPort80": true - } - ] - }, - "21": { - "RegionID": 21, - "RegionCode": "tor", - "RegionName": "Toronto", - "Latitude": 43.741667, - "Longitude": -79.373333, - "Nodes": [ - { - "Name": "21c", - "RegionID": 21, - "HostName": "derp21c.tailscale.com", - "IPv4": "162.248.221.215", - "IPv6": "2607:f740:50::f10", - "CanPort80": true - }, - { - "Name": "21d", - "RegionID": 21, - "HostName": "derp21d.tailscale.com", - "IPv4": "162.248.221.248", - "IPv6": "2607:f740:50::ca4", - "CanPort80": true - }, - { - "Name": "21b", - "RegionID": 21, - "HostName": "derp21b.tailscale.com", - "IPv4": "162.248.221.199", - "IPv6": "2607:f740:50::1d1", - "CanPort80": true - } - ] - }, - "22": { - "RegionID": 22, - "RegionCode": "waw", - "RegionName": "Warsaw", - "Latitude": 52.23, - "Longitude": 21.011111, - "Nodes": [ - { - "Name": "22c", - "RegionID": 22, - "HostName": "derp22c.tailscale.com", - "IPv4": "45.159.98.253", - "IPv6": "2a00:dd80:40:100::3f", - "CanPort80": true - }, - { - "Name": "22d", - "RegionID": 22, - "HostName": "derp22d.tailscale.com", - "IPv4": "45.159.98.145", - "IPv6": "2a00:dd80:40:100::211", - "CanPort80": true - }, - { - "Name": "22b", - "RegionID": 22, - "HostName": "derp22b.tailscale.com", - "IPv4": "45.159.98.196", - "IPv6": "2a00:dd80:40:100::316", - "CanPort80": true - } - ] - }, - "23": { - "RegionID": 23, - "RegionCode": "dbi", - "RegionName": "Dubai", - "Latitude": 25.263056, - "Longitude": 55.297222, - "Nodes": [ - { - "Name": "23c", - "RegionID": 23, - "HostName": "derp23c.tailscale.com", - "IPv4": "185.34.3.207", - "IPv6": "2a00:dd80:3f:100::a50", - "CanPort80": true - }, - { - "Name": "23d", - "RegionID": 23, - "HostName": "derp23d.tailscale.com", - "IPv4": "185.34.3.75", - "IPv6": "2a00:dd80:3f:100::97e", - "CanPort80": true - }, - { - "Name": "23b", - "RegionID": 23, - "HostName": "derp23b.tailscale.com", - "IPv4": "185.34.3.232", - "IPv6": "2a00:dd80:3f:100::76f", - "CanPort80": true - } - ] - }, - "24": { - "RegionID": 24, - "RegionCode": "hnl", - "RegionName": "Honolulu", - "Latitude": 21.306944, - "Longitude": -157.858333, - "Nodes": [ - { - "Name": "24c", - "RegionID": 24, - "HostName": "derp24c.tailscale.com", - "IPv4": "208.83.233.233", - "IPv6": "2001:19f0:c000:c591:5400:04ff:fe26:2c5f", - "CanPort80": true - }, - { - "Name": "24d", - "RegionID": 24, - "HostName": "derp24d.tailscale.com", - "IPv4": "208.72.155.133", - "IPv6": "2001:19f0:c000:c564:5400:04ff:fe26:2ba8", - "CanPort80": true - }, - { - "Name": "24b", - "RegionID": 24, - "HostName": "derp24b.tailscale.com", - "IPv4": "208.83.234.151", - "IPv6": "2001:19f0:c000:c586:5400:04ff:fe26:2ba6", - "CanPort80": true - } - ] - }, - "25": { - "RegionID": 25, - "RegionCode": "nai", - "RegionName": "Nairobi", - "Latitude": -1.286389, - "Longitude": 36.817222, - "Nodes": [ - { - "Name": "25c", - "RegionID": 25, - "HostName": "derp25c.tailscale.com", - "IPv4": "102.67.167.37", - "IPv6": "2c0f:edb0:2000:1::2c7", - "CanPort80": true - }, - { - "Name": "25d", - "RegionID": 25, - "HostName": "derp25d.tailscale.com", - "IPv4": "102.67.167.188", - "IPv6": "2c0f:edb0:2000:1::188", - "CanPort80": true - }, - { - "Name": "25b", - "RegionID": 25, - "HostName": "derp25b.tailscale.com", - "IPv4": "102.67.167.245", - "IPv6": "2c0f:edb0:2000:1::2e9", - "CanPort80": true - } - ] - }, - "26": { - "RegionID": 26, - "RegionCode": "nue", - "RegionName": "Nuremberg", - "Latitude": 49.453889, - "Longitude": 11.0775, - "Nodes": [ - { - "Name": "26c", - "RegionID": 26, - "HostName": "derp26c.tailscale.com", - "IPv4": "49.12.193.137", - "IPv6": "2a01:4f8:1c1c:5c70::1", - "CanPort80": true - }, - { - "Name": "26d", - "RegionID": 26, - "HostName": "derp26d.tailscale.com", - "IPv4": "49.13.204.141", - "IPv6": "2a01:4f8:1c0c:7d06::1", - "CanPort80": true - }, - { - "Name": "26b", - "RegionID": 26, - "HostName": "derp26b.tailscale.com", - "IPv4": "167.235.72.200", - "IPv6": "2a01:4f8:1c1c:47b6::1", - "CanPort80": true - } - ] - }, - "27": { - "RegionID": 27, - "RegionCode": "iad", - "RegionName": "Ashburn", - "Latitude": 39.03, - "Longitude": -77.471111, - "Nodes": [ - { - "Name": "27d", - "RegionID": 27, - "HostName": "derp27d.tailscale.com", - "IPv4": "178.156.152.106", - "IPv6": "2a01:4ff:f0:3c8e::1", - "CanPort80": true - }, - { - "Name": "27c", - "RegionID": 27, - "HostName": "derp27c.tailscale.com", - "IPv4": "178.156.152.91", - "IPv6": "2a01:4ff:f0:3913::1", - "CanPort80": true - }, - { - "Name": "27e", - "RegionID": 27, - "HostName": "derp27e.tailscale.com", - "IPv4": "178.156.134.232", - "IPv6": "2a01:4ff:f0:28d4::1", - "CanPort80": true - }, - { - "Name": "27b", - "RegionID": 27, - "HostName": "derp27b.tailscale.com", - "IPv4": "5.161.218.233", - "IPv6": "2a01:4ff:f0:3db9::1", - "CanPort80": true - } - ] - }, - "28": { - "RegionID": 28, - "RegionCode": "hel", - "RegionName": "Helsinki", - "Latitude": 60.170833, - "Longitude": 24.9375, - "Nodes": [ - { - "Name": "28c", - "RegionID": 28, - "HostName": "derp28c.tailscale.com", - "IPv4": "95.217.2.165", - "IPv6": "2a01:4f9:c012:cd74::1", - "CanPort80": true - }, - { - "Name": "28d", - "RegionID": 28, - "HostName": "derp28d.tailscale.com", - "IPv4": "157.180.28.32", - "IPv6": "2a01:4f9:c012:2e5b::1", - "CanPort80": true - }, - { - "Name": "28b", - "RegionID": 28, - "HostName": "derp28b.tailscale.com", - "IPv4": "65.109.143.62", - "IPv6": "2a01:4f9:c012:d55c::1", - "CanPort80": true - } - ] - }, - "3": { - "RegionID": 3, - "RegionCode": "sin", - "RegionName": "Singapore", - "Latitude": 1.3521, - "Longitude": 103.8198, - "Nodes": [ - { - "Name": "3g", - "RegionID": 3, - "HostName": "derp3g.tailscale.com", - "IPv4": "172.237.72.79", - "IPv6": "2600:3c15::2000:adff:fe08:6fab", - "CanPort80": true - }, - { - "Name": "3f", - "RegionID": 3, - "HostName": "derp3f.tailscale.com", - "IPv4": "172.237.72.8", - "IPv6": "2600:3c15::2000:53ff:fe48:a668", - "CanPort80": true - }, - { - "Name": "3h", - "RegionID": 3, - "HostName": "derp3h.tailscale.com", - "IPv4": "172.237.66.30", - "IPv6": "2600:3c15::2000:3dff:fe44:50aa", - "CanPort80": true - }, - { - "Name": "3e", - "RegionID": 3, - "HostName": "derp3e.tailscale.com", - "IPv4": "172.237.72.43", - "IPv6": "2600:3c15::2000:6cff:fee4:d799", - "CanPort80": true - } - ] - }, - "4": { - "RegionID": 4, - "RegionCode": "fra", - "RegionName": "Frankfurt", - "Latitude": 50.1109, - "Longitude": 8.6821, - "Nodes": [ - { - "Name": "4h", - "RegionID": 4, - "HostName": "derp4h.tailscale.com", - "IPv4": "185.40.234.77", - "IPv6": "2a00:dd80:20::bcf", - "CanPort80": true - }, - { - "Name": "4g", - "RegionID": 4, - "HostName": "derp4g.tailscale.com", - "IPv4": "185.40.234.113", - "IPv6": "2a00:dd80:20::8f", - "CanPort80": true - }, - { - "Name": "4i", - "RegionID": 4, - "HostName": "derp4i.tailscale.com", - "IPv4": "185.40.234.53", - "IPv6": "2a00:dd80:20::8a6", - "CanPort80": true - }, - { - "Name": "4f", - "RegionID": 4, - "HostName": "derp4f.tailscale.com", - "IPv4": "185.40.234.219", - "IPv6": "2a00:dd80:20::a25", - "CanPort80": true - } - ] - }, - "5": { - "RegionID": 5, - "RegionCode": "syd", - "RegionName": "Sydney", - "Latitude": -33.867778, - "Longitude": 151.21, - "Nodes": [ - { - "Name": "5f", - "RegionID": 5, - "HostName": "derp5f.tailscale.com", - "IPv4": "172.105.166.103", - "IPv6": "2400:8907::2000:ccff:fe1f:80da", - "CanPort80": true - }, - { - "Name": "5g", - "RegionID": 5, - "HostName": "derp5g.tailscale.com", - "IPv4": "172.105.169.57", - "IPv6": "2400:8907::2000:2fff:fea7:57f4", - "CanPort80": true - }, - { - "Name": "5e", - "RegionID": 5, - "HostName": "derp5e.tailscale.com", - "IPv4": "172.105.179.230", - "IPv6": "2400:8907::2000:ceff:fe8d:4f4e", - "CanPort80": true - } - ] - }, - "6": { - "RegionID": 6, - "RegionCode": "blr", - "RegionName": "Bengaluru", - "Latitude": 12.9716, - "Longitude": 77.5946, - "Nodes": [ - { - "Name": "6a", - "RegionID": 6, - "HostName": "derp6.tailscale.com", - "IPv4": "68.183.90.120", - "IPv6": "2400:6180:100:d0::982:d001", - "CanPort80": true - } - ] - }, - "7": { - "RegionID": 7, - "RegionCode": "tok", - "RegionName": "Tokyo", - "Latitude": 35.6764, - "Longitude": 139.65, - "Nodes": [ - { - "Name": "7g", - "RegionID": 7, - "HostName": "derp7g.tailscale.com", - "IPv4": "172.238.6.179", - "IPv6": "2600:3c18::2000:3fff:fe80:3ebd", - "CanPort80": true - }, - { - "Name": "7f", - "RegionID": 7, - "HostName": "derp7f.tailscale.com", - "IPv4": "172.238.6.34", - "IPv6": "2600:3c18::2000:acff:fe8e:3ed5", - "CanPort80": true - }, - { - "Name": "7h", - "RegionID": 7, - "HostName": "derp7h.tailscale.com", - "IPv4": "172.237.28.183", - "IPv6": "2600:3c18::2000:b1ff:fea9:4560", - "CanPort80": true - }, - { - "Name": "7e", - "RegionID": 7, - "HostName": "derp7e.tailscale.com", - "IPv4": "172.238.6.180", - "IPv6": "2600:3c18::2000:60ff:fe0f:6e83", - "STUNOnly": true, - "CanPort80": true - } - ] - }, - "8": { - "RegionID": 8, - "RegionCode": "lhr", - "RegionName": "London", - "Latitude": 51.5072, - "Longitude": 0.1276, - "Nodes": [ - { - "Name": "8f", - "RegionID": 8, - "HostName": "derp8f.tailscale.com", - "IPv4": "176.58.88.183", - "IPv6": "2a00:dd80:3a::dfa", - "CanPort80": true - }, - { - "Name": "8g", - "RegionID": 8, - "HostName": "derp8g.tailscale.com", - "IPv4": "176.58.92.254", - "IPv6": "2a00:dd80:3a::ed", - "CanPort80": true - }, - { - "Name": "8e", - "RegionID": 8, - "HostName": "derp8e.tailscale.com", - "IPv4": "176.58.92.144", - "IPv6": "2a00:dd80:3a::b33", - "CanPort80": true - } - ] - }, - "9": { - "RegionID": 9, - "RegionCode": "dfw", - "RegionName": "Dallas", - "Latitude": 32.779167, - "Longitude": -96.808889, - "Nodes": [ - { - "Name": "9e", - "RegionID": 9, - "HostName": "derp9e.tailscale.com", - "IPv4": "192.73.248.83", - "IPv6": "2607:f740:100::359", - "CanPort80": true - }, - { - "Name": "9f", - "RegionID": 9, - "HostName": "derp9f.tailscale.com", - "IPv4": "209.177.156.197", - "IPv6": "2607:f740:100::cad", - "CanPort80": true - }, - { - "Name": "9d", - "RegionID": 9, - "HostName": "derp9d.tailscale.com", - "IPv4": "209.177.156.94", - "IPv6": "2607:f740:100::c05", - "CanPort80": true - } - ] - } - } - }, - "DisplayMessages": null, - "TKAEnabled": false, - "TKAHead": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", - "Domain": "kratail2tid@passkey", - "DomainAuditLogID": "", - "UserProfiles": { - "4041918547170221": { - "ID": 4041918547170221, - "LoginName": "exit-node.tail78f774.ts.net", - "DisplayName": "exit-node" - } - } + "PacketFilterRules": null } }, "group-a-client": { - "commands": { - "packet_filter_rules": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/group-a-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/group-a-client/tailscaled.sock debug localapi POST debug-packet-filter-matches" - }, "packet_filter_rules": null, - "packet_filter_matches": [], - "whois": { - "100.124.195.93": { - "peer_name": "exit-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/group-a-client/tailscaled.sock whois --json 100.124.195.93", - "response": null - }, - "100.116.18.24": { - "peer_name": "exit-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/group-a-client/tailscaled.sock whois --json 100.116.18.24", - "response": null - }, - "100.85.66.106": { - "peer_name": "exit-node", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/group-a-client/tailscaled.sock whois --json 100.85.66.106", - "response": null - }, - "100.77.135.18": { - "peer_name": "group-b-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/group-a-client/tailscaled.sock whois --json 100.77.135.18", - "response": null - }, - "100.105.127.107": { - "peer_name": "multi-exit-router", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/group-a-client/tailscaled.sock whois --json 100.105.127.107", - "response": null - }, - "100.109.43.124": { - "peer_name": "router-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/group-a-client/tailscaled.sock whois --json 100.109.43.124", - "response": null - }, - "100.65.172.123": { - "peer_name": "router-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/group-a-client/tailscaled.sock whois --json 100.65.172.123", - "response": null - }, - "100.92.142.61": { - "peer_name": "subnet-router", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/group-a-client/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/group-a-client/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/group-a-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/group-a-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/group-a-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/group-a-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/group-a-client/tailscaled.sock whois --json 100.90.199.68", - "response": null - } - }, "netmap": { - "SelfNode": { - "ID": 6999435610919250, - "StableID": "nyckVfJ4fw11CNTRL", - "Name": "group-a-client.tail78f774.ts.net.", - "User": 6999435610919250, - "Key": "nodekey:802726716bd4942fceb5e444218c930040fadb082698b57ea3eb59a6a26ba20d", - "DiscoKey": "discokey:bc93c2d3b81606e44eb1c96d721e7cd73c9497aa7d3efbe2f5e0d1e2e95b190f", - "Addresses": ["100.107.162.14/32", "fd7a:115c:a1e0::a237:a20e/128"], - "AllowedIPs": ["100.107.162.14/32", "fd7a:115c:a1e0::a237:a20e/128"], - "Endpoints": ["77.164.248.136:51980", "10.65.0.27:51980", "172.17.0.1:51980"], - "Hostinfo": { - "Hostname": "group-a-client", - "RequestTags": ["tag:group-a"], - "Services": [ - { "Proto": "peerapi4", "Port": 36543 }, - { "Proto": "peerapi6", "Port": 36543 }, - { "Proto": "peerapi-dns-proxy", "Port": 1 } - ] - }, - "Created": "2026-03-28T10:38:04.339428828Z", - "Tags": ["tag:group-a"], - "MachineAuthorized": true, - "CapMap": { - "https://tailscale.com/cap/file-sharing": null, - "https://tailscale.com/cap/is-owner": null, - "https://tailscale.com/cap/ssh": null, - "https://tailscale.com/cap/tailnet-lock": null, - "probe-udp-lifetime": null, - "ssh-behavior-v1": null, - "ssh-env-vars": null, - "store-appc-routes": null, - "tailnet-display-name": ["kratail2tid@passkey"] - }, - "ComputedName": "group-a-client", - "ComputedNameWithHost": "group-a-client" - }, - "AllCaps": [ - "https://tailscale.com/cap/tailnet-lock", - "probe-udp-lifetime", - "https://tailscale.com/cap/is-owner", - "https://tailscale.com/cap/ssh", - "ssh-behavior-v1", - "tailnet-display-name", - "https://tailscale.com/cap/file-sharing", - "store-appc-routes", - "ssh-env-vars" - ], - "NodeKey": "nodekey:802726716bd4942fceb5e444218c930040fadb082698b57ea3eb59a6a26ba20d", - "MachineKey": "mkey:fd2d0c2953440569b6c045d6bb1826bf138bf65b4ed4433532e4d91e09fd6b6b", "Peers": [], - "DNS": { - "Routes": { - "tail78f774.ts.net.": null, - "ts.net.": [{ "Addr": "199.247.155.53" }, { "Addr": "2620:111:8007::53" }] - }, - "Domains": ["tail78f774.ts.net"], - "Proxied": true, - "ExitNodeFilteredSet": [".ts.net", ".tailscale.net"] - }, - "PacketFilter": [], - "PacketFilterRules": null, - "SSHPolicy": { "rules": [] }, - "CollectServices": false, - "DERPMap": { - "Regions": { - "1": { - "RegionID": 1, - "RegionCode": "nyc", - "RegionName": "New York City", - "Latitude": 40.7128, - "Longitude": -74.006, - "Nodes": [ - { - "Name": "1h", - "RegionID": 1, - "HostName": "derp1h.tailscale.com", - "IPv4": "199.38.181.93", - "IPv6": "2607:f740:f::afd", - "CanPort80": true - }, - { - "Name": "1g", - "RegionID": 1, - "HostName": "derp1g.tailscale.com", - "IPv4": "209.177.145.120", - "IPv6": "2607:f740:f::3eb", - "CanPort80": true - }, - { - "Name": "1i", - "RegionID": 1, - "HostName": "derp1i.tailscale.com", - "IPv4": "199.38.181.103", - "IPv6": "2607:f740:f::e19", - "CanPort80": true - }, - { - "Name": "1f", - "RegionID": 1, - "HostName": "derp1f.tailscale.com", - "IPv4": "199.38.181.104", - "IPv6": "2607:f740:f::bc", - "CanPort80": true - } - ] - }, - "10": { - "RegionID": 10, - "RegionCode": "sea", - "RegionName": "Seattle", - "Latitude": 47.609722, - "Longitude": -122.333056, - "Nodes": [ - { - "Name": "10c", - "RegionID": 10, - "HostName": "derp10c.tailscale.com", - "IPv4": "192.73.240.121", - "IPv6": "2607:f740:14::40c", - "CanPort80": true - }, - { - "Name": "10d", - "RegionID": 10, - "HostName": "derp10d.tailscale.com", - "IPv4": "192.73.240.132", - "IPv6": "2607:f740:14::500", - "CanPort80": true - }, - { - "Name": "10b", - "RegionID": 10, - "HostName": "derp10b.tailscale.com", - "IPv4": "192.73.240.161", - "IPv6": "2607:f740:14::61c", - "CanPort80": true - } - ] - }, - "11": { - "RegionID": 11, - "RegionCode": "sao", - "RegionName": "São Paulo", - "Latitude": -23.55, - "Longitude": -46.633333, - "Nodes": [ - { - "Name": "11f", - "RegionID": 11, - "HostName": "derp11f.tailscale.com", - "IPv4": "172.237.61.197", - "IPv6": "2600:3c0d::2000:3bff:fe44:6166", - "CanPort80": true - }, - { - "Name": "11g", - "RegionID": 11, - "HostName": "derp11g.tailscale.com", - "IPv4": "172.237.61.190", - "IPv6": "2600:3c0d::2000:62ff:febe:2e67", - "CanPort80": true - }, - { - "Name": "11e", - "RegionID": 11, - "HostName": "derp11e.tailscale.com", - "IPv4": "172.237.61.194", - "IPv6": "2600:3c0d::2000:d2ff:fe43:1790", - "CanPort80": true - } - ] - }, - "12": { - "RegionID": 12, - "RegionCode": "ord", - "RegionName": "Chicago", - "Latitude": 41.881944, - "Longitude": -87.627778, - "Nodes": [ - { - "Name": "12e", - "RegionID": 12, - "HostName": "derp12e.tailscale.com", - "IPv4": "209.177.158.15", - "IPv6": "2607:f740:e::b17", - "CanPort80": true - }, - { - "Name": "12f", - "RegionID": 12, - "HostName": "derp12f.tailscale.com", - "IPv4": "199.38.182.118", - "IPv6": "2607:f740:e::4c8", - "CanPort80": true - }, - { - "Name": "12d", - "RegionID": 12, - "HostName": "derp12d.tailscale.com", - "IPv4": "209.177.158.246", - "IPv6": "2607:f740:e::811", - "CanPort80": true - } - ] - }, - "13": { - "RegionID": 13, - "RegionCode": "den", - "RegionName": "Denver", - "Latitude": 39.7392, - "Longitude": -104.9849, - "Nodes": [ - { - "Name": "13c", - "RegionID": 13, - "HostName": "derp13c.tailscale.com", - "IPv4": "192.73.242.28", - "IPv6": "2607:f740:16::5c", - "CanPort80": true - }, - { - "Name": "13d", - "RegionID": 13, - "HostName": "derp13d.tailscale.com", - "IPv4": "192.73.242.204", - "IPv6": "2607:f740:16::c23", - "CanPort80": true - }, - { - "Name": "13b", - "RegionID": 13, - "HostName": "derp13b.tailscale.com", - "IPv4": "192.73.242.187", - "IPv6": "2607:f740:16::640", - "CanPort80": true - } - ] - }, - "14": { - "RegionID": 14, - "RegionCode": "ams", - "RegionName": "Amsterdam", - "Latitude": 52.372778, - "Longitude": 4.893611, - "Nodes": [ - { - "Name": "14c", - "RegionID": 14, - "HostName": "derp14c.tailscale.com", - "IPv4": "176.58.93.147", - "IPv6": "2a00:dd80:3c::b09", - "CanPort80": true - }, - { - "Name": "14d", - "RegionID": 14, - "HostName": "derp14d.tailscale.com", - "IPv4": "176.58.93.154", - "IPv6": "2a00:dd80:3c::3d5", - "CanPort80": true - }, - { - "Name": "14b", - "RegionID": 14, - "HostName": "derp14b.tailscale.com", - "IPv4": "176.58.93.248", - "IPv6": "2a00:dd80:3c::807", - "CanPort80": true - } - ] - }, - "15": { - "RegionID": 15, - "RegionCode": "jnb", - "RegionName": "Johannesburg", - "Latitude": -26.204444, - "Longitude": 28.045556, - "Nodes": [ - { - "Name": "15c", - "RegionID": 15, - "HostName": "derp15c.tailscale.com", - "IPv4": "102.67.165.185", - "IPv6": "2c0f:edb0:0:10::b59", - "CanPort80": true - }, - { - "Name": "15d", - "RegionID": 15, - "HostName": "derp15d.tailscale.com", - "IPv4": "102.67.165.36", - "IPv6": "2c0f:edb0:0:10::599", - "CanPort80": true - }, - { - "Name": "15b", - "RegionID": 15, - "HostName": "derp15b.tailscale.com", - "IPv4": "102.67.165.90", - "IPv6": "2c0f:edb0:0:10::963", - "CanPort80": true - } - ] - }, - "16": { - "RegionID": 16, - "RegionCode": "mia", - "RegionName": "Miami", - "Latitude": 25.78, - "Longitude": -80.21, - "Nodes": [ - { - "Name": "16c", - "RegionID": 16, - "HostName": "derp16c.tailscale.com", - "IPv4": "192.73.243.229", - "IPv6": "2607:f740:17::4e4", - "CanPort80": true - }, - { - "Name": "16d", - "RegionID": 16, - "HostName": "derp16d.tailscale.com", - "IPv4": "192.73.243.141", - "IPv6": "2607:f740:17::475", - "CanPort80": true - }, - { - "Name": "16b", - "RegionID": 16, - "HostName": "derp16b.tailscale.com", - "IPv4": "192.73.243.135", - "IPv6": "2607:f740:17::476", - "CanPort80": true - } - ] - }, - "17": { - "RegionID": 17, - "RegionCode": "lax", - "RegionName": "Los Angeles", - "Latitude": 34.05, - "Longitude": -118.25, - "Nodes": [ - { - "Name": "17c", - "RegionID": 17, - "HostName": "derp17c.tailscale.com", - "IPv4": "208.111.40.12", - "IPv6": "2607:f740:c::10", - "CanPort80": true - }, - { - "Name": "17d", - "RegionID": 17, - "HostName": "derp17d.tailscale.com", - "IPv4": "208.111.40.216", - "IPv6": "2607:f740:c::e1b", - "CanPort80": true - }, - { - "Name": "17b", - "RegionID": 17, - "HostName": "derp17b.tailscale.com", - "IPv4": "192.73.244.245", - "IPv6": "2607:f740:c::646", - "CanPort80": true - } - ] - }, - "18": { - "RegionID": 18, - "RegionCode": "par", - "RegionName": "Paris", - "Latitude": 48.856667, - "Longitude": 2.352222, - "Nodes": [ - { - "Name": "18c", - "RegionID": 18, - "HostName": "derp18c.tailscale.com", - "IPv4": "176.58.90.207", - "IPv6": "2a00:dd80:3e::c19", - "CanPort80": true - }, - { - "Name": "18d", - "RegionID": 18, - "HostName": "derp18d.tailscale.com", - "IPv4": "176.58.90.104", - "IPv6": "2a00:dd80:3e::f2e", - "CanPort80": true - }, - { - "Name": "18b", - "RegionID": 18, - "HostName": "derp18b.tailscale.com", - "IPv4": "176.58.90.147", - "IPv6": "2a00:dd80:3e::363", - "CanPort80": true - } - ] - }, - "19": { - "RegionID": 19, - "RegionCode": "mad", - "RegionName": "Madrid", - "Latitude": 40.416944, - "Longitude": -3.703333, - "Nodes": [ - { - "Name": "19c", - "RegionID": 19, - "HostName": "derp19c.tailscale.com", - "IPv4": "45.159.97.61", - "IPv6": "2a00:dd80:14:10::20", - "CanPort80": true - }, - { - "Name": "19d", - "RegionID": 19, - "HostName": "derp19d.tailscale.com", - "IPv4": "45.159.97.233", - "IPv6": "2a00:dd80:14:10::34a", - "CanPort80": true - }, - { - "Name": "19b", - "RegionID": 19, - "HostName": "derp19b.tailscale.com", - "IPv4": "45.159.97.144", - "IPv6": "2a00:dd80:14:10::335", - "CanPort80": true - } - ] - }, - "2": { - "RegionID": 2, - "RegionCode": "sfo", - "RegionName": "San Francisco", - "Latitude": 37.7775, - "Longitude": -122.416389, - "Nodes": [ - { - "Name": "2e", - "RegionID": 2, - "HostName": "derp2e.tailscale.com", - "IPv4": "192.73.252.134", - "IPv6": "2607:f740:0:3f::44c", - "CanPort80": true - }, - { - "Name": "2f", - "RegionID": 2, - "HostName": "derp2f.tailscale.com", - "IPv4": "208.111.34.178", - "IPv6": "2607:f740:0:3f::f4", - "CanPort80": true - }, - { - "Name": "2d", - "RegionID": 2, - "HostName": "derp2d.tailscale.com", - "IPv4": "192.73.252.65", - "IPv6": "2607:f740:0:3f::287", - "CanPort80": true - } - ] - }, - "20": { - "RegionID": 20, - "RegionCode": "hkg", - "RegionName": "Hong Kong", - "Latitude": 22.3193, - "Longitude": 114.1694, - "Nodes": [ - { - "Name": "20c", - "RegionID": 20, - "HostName": "derp20c.tailscale.com", - "IPv4": "205.147.105.30", - "IPv6": "2403:2500:8000:1::5fb", - "CanPort80": true - }, - { - "Name": "20d", - "RegionID": 20, - "HostName": "derp20d.tailscale.com", - "IPv4": "205.147.105.78", - "IPv6": "2403:2500:8000:1::e9a", - "CanPort80": true - }, - { - "Name": "20b", - "RegionID": 20, - "HostName": "derp20b.tailscale.com", - "IPv4": "103.6.84.152", - "IPv6": "2403:2500:8000:1::ef6", - "CanPort80": true - } - ] - }, - "21": { - "RegionID": 21, - "RegionCode": "tor", - "RegionName": "Toronto", - "Latitude": 43.741667, - "Longitude": -79.373333, - "Nodes": [ - { - "Name": "21c", - "RegionID": 21, - "HostName": "derp21c.tailscale.com", - "IPv4": "162.248.221.215", - "IPv6": "2607:f740:50::f10", - "CanPort80": true - }, - { - "Name": "21d", - "RegionID": 21, - "HostName": "derp21d.tailscale.com", - "IPv4": "162.248.221.248", - "IPv6": "2607:f740:50::ca4", - "CanPort80": true - }, - { - "Name": "21b", - "RegionID": 21, - "HostName": "derp21b.tailscale.com", - "IPv4": "162.248.221.199", - "IPv6": "2607:f740:50::1d1", - "CanPort80": true - } - ] - }, - "22": { - "RegionID": 22, - "RegionCode": "waw", - "RegionName": "Warsaw", - "Latitude": 52.23, - "Longitude": 21.011111, - "Nodes": [ - { - "Name": "22c", - "RegionID": 22, - "HostName": "derp22c.tailscale.com", - "IPv4": "45.159.98.253", - "IPv6": "2a00:dd80:40:100::3f", - "CanPort80": true - }, - { - "Name": "22d", - "RegionID": 22, - "HostName": "derp22d.tailscale.com", - "IPv4": "45.159.98.145", - "IPv6": "2a00:dd80:40:100::211", - "CanPort80": true - }, - { - "Name": "22b", - "RegionID": 22, - "HostName": "derp22b.tailscale.com", - "IPv4": "45.159.98.196", - "IPv6": "2a00:dd80:40:100::316", - "CanPort80": true - } - ] - }, - "23": { - "RegionID": 23, - "RegionCode": "dbi", - "RegionName": "Dubai", - "Latitude": 25.263056, - "Longitude": 55.297222, - "Nodes": [ - { - "Name": "23c", - "RegionID": 23, - "HostName": "derp23c.tailscale.com", - "IPv4": "185.34.3.207", - "IPv6": "2a00:dd80:3f:100::a50", - "CanPort80": true - }, - { - "Name": "23d", - "RegionID": 23, - "HostName": "derp23d.tailscale.com", - "IPv4": "185.34.3.75", - "IPv6": "2a00:dd80:3f:100::97e", - "CanPort80": true - }, - { - "Name": "23b", - "RegionID": 23, - "HostName": "derp23b.tailscale.com", - "IPv4": "185.34.3.232", - "IPv6": "2a00:dd80:3f:100::76f", - "CanPort80": true - } - ] - }, - "24": { - "RegionID": 24, - "RegionCode": "hnl", - "RegionName": "Honolulu", - "Latitude": 21.306944, - "Longitude": -157.858333, - "Nodes": [ - { - "Name": "24c", - "RegionID": 24, - "HostName": "derp24c.tailscale.com", - "IPv4": "208.83.233.233", - "IPv6": "2001:19f0:c000:c591:5400:04ff:fe26:2c5f", - "CanPort80": true - }, - { - "Name": "24d", - "RegionID": 24, - "HostName": "derp24d.tailscale.com", - "IPv4": "208.72.155.133", - "IPv6": "2001:19f0:c000:c564:5400:04ff:fe26:2ba8", - "CanPort80": true - }, - { - "Name": "24b", - "RegionID": 24, - "HostName": "derp24b.tailscale.com", - "IPv4": "208.83.234.151", - "IPv6": "2001:19f0:c000:c586:5400:04ff:fe26:2ba6", - "CanPort80": true - } - ] - }, - "25": { - "RegionID": 25, - "RegionCode": "nai", - "RegionName": "Nairobi", - "Latitude": -1.286389, - "Longitude": 36.817222, - "Nodes": [ - { - "Name": "25c", - "RegionID": 25, - "HostName": "derp25c.tailscale.com", - "IPv4": "102.67.167.37", - "IPv6": "2c0f:edb0:2000:1::2c7", - "CanPort80": true - }, - { - "Name": "25d", - "RegionID": 25, - "HostName": "derp25d.tailscale.com", - "IPv4": "102.67.167.188", - "IPv6": "2c0f:edb0:2000:1::188", - "CanPort80": true - }, - { - "Name": "25b", - "RegionID": 25, - "HostName": "derp25b.tailscale.com", - "IPv4": "102.67.167.245", - "IPv6": "2c0f:edb0:2000:1::2e9", - "CanPort80": true - } - ] - }, - "26": { - "RegionID": 26, - "RegionCode": "nue", - "RegionName": "Nuremberg", - "Latitude": 49.453889, - "Longitude": 11.0775, - "Nodes": [ - { - "Name": "26c", - "RegionID": 26, - "HostName": "derp26c.tailscale.com", - "IPv4": "49.12.193.137", - "IPv6": "2a01:4f8:1c1c:5c70::1", - "CanPort80": true - }, - { - "Name": "26d", - "RegionID": 26, - "HostName": "derp26d.tailscale.com", - "IPv4": "49.13.204.141", - "IPv6": "2a01:4f8:1c0c:7d06::1", - "CanPort80": true - }, - { - "Name": "26b", - "RegionID": 26, - "HostName": "derp26b.tailscale.com", - "IPv4": "167.235.72.200", - "IPv6": "2a01:4f8:1c1c:47b6::1", - "CanPort80": true - } - ] - }, - "27": { - "RegionID": 27, - "RegionCode": "iad", - "RegionName": "Ashburn", - "Latitude": 39.03, - "Longitude": -77.471111, - "Nodes": [ - { - "Name": "27d", - "RegionID": 27, - "HostName": "derp27d.tailscale.com", - "IPv4": "178.156.152.106", - "IPv6": "2a01:4ff:f0:3c8e::1", - "CanPort80": true - }, - { - "Name": "27c", - "RegionID": 27, - "HostName": "derp27c.tailscale.com", - "IPv4": "178.156.152.91", - "IPv6": "2a01:4ff:f0:3913::1", - "CanPort80": true - }, - { - "Name": "27e", - "RegionID": 27, - "HostName": "derp27e.tailscale.com", - "IPv4": "178.156.134.232", - "IPv6": "2a01:4ff:f0:28d4::1", - "CanPort80": true - }, - { - "Name": "27b", - "RegionID": 27, - "HostName": "derp27b.tailscale.com", - "IPv4": "5.161.218.233", - "IPv6": "2a01:4ff:f0:3db9::1", - "CanPort80": true - } - ] - }, - "28": { - "RegionID": 28, - "RegionCode": "hel", - "RegionName": "Helsinki", - "Latitude": 60.170833, - "Longitude": 24.9375, - "Nodes": [ - { - "Name": "28c", - "RegionID": 28, - "HostName": "derp28c.tailscale.com", - "IPv4": "95.217.2.165", - "IPv6": "2a01:4f9:c012:cd74::1", - "CanPort80": true - }, - { - "Name": "28d", - "RegionID": 28, - "HostName": "derp28d.tailscale.com", - "IPv4": "157.180.28.32", - "IPv6": "2a01:4f9:c012:2e5b::1", - "CanPort80": true - }, - { - "Name": "28b", - "RegionID": 28, - "HostName": "derp28b.tailscale.com", - "IPv4": "65.109.143.62", - "IPv6": "2a01:4f9:c012:d55c::1", - "CanPort80": true - } - ] - }, - "3": { - "RegionID": 3, - "RegionCode": "sin", - "RegionName": "Singapore", - "Latitude": 1.3521, - "Longitude": 103.8198, - "Nodes": [ - { - "Name": "3g", - "RegionID": 3, - "HostName": "derp3g.tailscale.com", - "IPv4": "172.237.72.79", - "IPv6": "2600:3c15::2000:adff:fe08:6fab", - "CanPort80": true - }, - { - "Name": "3f", - "RegionID": 3, - "HostName": "derp3f.tailscale.com", - "IPv4": "172.237.72.8", - "IPv6": "2600:3c15::2000:53ff:fe48:a668", - "CanPort80": true - }, - { - "Name": "3h", - "RegionID": 3, - "HostName": "derp3h.tailscale.com", - "IPv4": "172.237.66.30", - "IPv6": "2600:3c15::2000:3dff:fe44:50aa", - "CanPort80": true - }, - { - "Name": "3e", - "RegionID": 3, - "HostName": "derp3e.tailscale.com", - "IPv4": "172.237.72.43", - "IPv6": "2600:3c15::2000:6cff:fee4:d799", - "CanPort80": true - } - ] - }, - "4": { - "RegionID": 4, - "RegionCode": "fra", - "RegionName": "Frankfurt", - "Latitude": 50.1109, - "Longitude": 8.6821, - "Nodes": [ - { - "Name": "4h", - "RegionID": 4, - "HostName": "derp4h.tailscale.com", - "IPv4": "185.40.234.77", - "IPv6": "2a00:dd80:20::bcf", - "CanPort80": true - }, - { - "Name": "4g", - "RegionID": 4, - "HostName": "derp4g.tailscale.com", - "IPv4": "185.40.234.113", - "IPv6": "2a00:dd80:20::8f", - "CanPort80": true - }, - { - "Name": "4i", - "RegionID": 4, - "HostName": "derp4i.tailscale.com", - "IPv4": "185.40.234.53", - "IPv6": "2a00:dd80:20::8a6", - "CanPort80": true - }, - { - "Name": "4f", - "RegionID": 4, - "HostName": "derp4f.tailscale.com", - "IPv4": "185.40.234.219", - "IPv6": "2a00:dd80:20::a25", - "CanPort80": true - } - ] - }, - "5": { - "RegionID": 5, - "RegionCode": "syd", - "RegionName": "Sydney", - "Latitude": -33.867778, - "Longitude": 151.21, - "Nodes": [ - { - "Name": "5f", - "RegionID": 5, - "HostName": "derp5f.tailscale.com", - "IPv4": "172.105.166.103", - "IPv6": "2400:8907::2000:ccff:fe1f:80da", - "CanPort80": true - }, - { - "Name": "5g", - "RegionID": 5, - "HostName": "derp5g.tailscale.com", - "IPv4": "172.105.169.57", - "IPv6": "2400:8907::2000:2fff:fea7:57f4", - "CanPort80": true - }, - { - "Name": "5e", - "RegionID": 5, - "HostName": "derp5e.tailscale.com", - "IPv4": "172.105.179.230", - "IPv6": "2400:8907::2000:ceff:fe8d:4f4e", - "CanPort80": true - } - ] - }, - "6": { - "RegionID": 6, - "RegionCode": "blr", - "RegionName": "Bengaluru", - "Latitude": 12.9716, - "Longitude": 77.5946, - "Nodes": [ - { - "Name": "6a", - "RegionID": 6, - "HostName": "derp6.tailscale.com", - "IPv4": "68.183.90.120", - "IPv6": "2400:6180:100:d0::982:d001", - "CanPort80": true - } - ] - }, - "7": { - "RegionID": 7, - "RegionCode": "tok", - "RegionName": "Tokyo", - "Latitude": 35.6764, - "Longitude": 139.65, - "Nodes": [ - { - "Name": "7g", - "RegionID": 7, - "HostName": "derp7g.tailscale.com", - "IPv4": "172.238.6.179", - "IPv6": "2600:3c18::2000:3fff:fe80:3ebd", - "CanPort80": true - }, - { - "Name": "7f", - "RegionID": 7, - "HostName": "derp7f.tailscale.com", - "IPv4": "172.238.6.34", - "IPv6": "2600:3c18::2000:acff:fe8e:3ed5", - "CanPort80": true - }, - { - "Name": "7h", - "RegionID": 7, - "HostName": "derp7h.tailscale.com", - "IPv4": "172.237.28.183", - "IPv6": "2600:3c18::2000:b1ff:fea9:4560", - "CanPort80": true - }, - { - "Name": "7e", - "RegionID": 7, - "HostName": "derp7e.tailscale.com", - "IPv4": "172.238.6.180", - "IPv6": "2600:3c18::2000:60ff:fe0f:6e83", - "STUNOnly": true, - "CanPort80": true - } - ] - }, - "8": { - "RegionID": 8, - "RegionCode": "lhr", - "RegionName": "London", - "Latitude": 51.5072, - "Longitude": 0.1276, - "Nodes": [ - { - "Name": "8f", - "RegionID": 8, - "HostName": "derp8f.tailscale.com", - "IPv4": "176.58.88.183", - "IPv6": "2a00:dd80:3a::dfa", - "CanPort80": true - }, - { - "Name": "8g", - "RegionID": 8, - "HostName": "derp8g.tailscale.com", - "IPv4": "176.58.92.254", - "IPv6": "2a00:dd80:3a::ed", - "CanPort80": true - }, - { - "Name": "8e", - "RegionID": 8, - "HostName": "derp8e.tailscale.com", - "IPv4": "176.58.92.144", - "IPv6": "2a00:dd80:3a::b33", - "CanPort80": true - } - ] - }, - "9": { - "RegionID": 9, - "RegionCode": "dfw", - "RegionName": "Dallas", - "Latitude": 32.779167, - "Longitude": -96.808889, - "Nodes": [ - { - "Name": "9e", - "RegionID": 9, - "HostName": "derp9e.tailscale.com", - "IPv4": "192.73.248.83", - "IPv6": "2607:f740:100::359", - "CanPort80": true - }, - { - "Name": "9f", - "RegionID": 9, - "HostName": "derp9f.tailscale.com", - "IPv4": "209.177.156.197", - "IPv6": "2607:f740:100::cad", - "CanPort80": true - }, - { - "Name": "9d", - "RegionID": 9, - "HostName": "derp9d.tailscale.com", - "IPv4": "209.177.156.94", - "IPv6": "2607:f740:100::c05", - "CanPort80": true - } - ] - } - } - }, - "DisplayMessages": null, - "TKAEnabled": false, - "TKAHead": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", - "Domain": "kratail2tid@passkey", - "DomainAuditLogID": "", - "UserProfiles": { - "6999435610919250": { - "ID": 6999435610919250, - "LoginName": "group-a-client.tail78f774.ts.net", - "DisplayName": "group-a-client" - } - } + "PacketFilterRules": null } }, "group-b-client": { - "commands": { - "packet_filter_rules": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/group-b-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/group-b-client/tailscaled.sock debug localapi POST debug-packet-filter-matches" - }, "packet_filter_rules": null, - "packet_filter_matches": [], - "whois": { - "100.124.195.93": { - "peer_name": "exit-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/group-b-client/tailscaled.sock whois --json 100.124.195.93", - "response": null - }, - "100.116.18.24": { - "peer_name": "exit-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/group-b-client/tailscaled.sock whois --json 100.116.18.24", - "response": null - }, - "100.85.66.106": { - "peer_name": "exit-node", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/group-b-client/tailscaled.sock whois --json 100.85.66.106", - "response": null - }, - "100.107.162.14": { - "peer_name": "group-a-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/group-b-client/tailscaled.sock whois --json 100.107.162.14", - "response": null - }, - "100.105.127.107": { - "peer_name": "multi-exit-router", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/group-b-client/tailscaled.sock whois --json 100.105.127.107", - "response": null - }, - "100.109.43.124": { - "peer_name": "router-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/group-b-client/tailscaled.sock whois --json 100.109.43.124", - "response": null - }, - "100.65.172.123": { - "peer_name": "router-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/group-b-client/tailscaled.sock whois --json 100.65.172.123", - "response": null - }, - "100.92.142.61": { - "peer_name": "subnet-router", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/group-b-client/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/group-b-client/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/group-b-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/group-b-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/group-b-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/group-b-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/group-b-client/tailscaled.sock whois --json 100.90.199.68", - "response": null - } - }, "netmap": { - "SelfNode": { - "ID": 1008089393782498, - "StableID": "ndUwgLoZs811CNTRL", - "Name": "group-b-client.tail78f774.ts.net.", - "User": 1008089393782498, - "Key": "nodekey:ef35a655163204a08b33e09fdc24709f1e3aaa7f40de4efd5549cf014b4d8711", - "DiscoKey": "discokey:e972182cda0d0b459c91b2881624b81749a7e44390a5dde1b9bc17c1ae67715a", - "Addresses": ["100.77.135.18/32", "fd7a:115c:a1e0::4b37:8712/128"], - "AllowedIPs": ["100.77.135.18/32", "fd7a:115c:a1e0::4b37:8712/128"], - "Endpoints": ["77.164.248.136:49377", "10.65.0.27:49377", "172.17.0.1:49377"], - "Hostinfo": { - "Hostname": "group-b-client", - "RequestTags": ["tag:group-b"], - "Services": [ - { "Proto": "peerapi4", "Port": 47173 }, - { "Proto": "peerapi6", "Port": 47173 }, - { "Proto": "peerapi-dns-proxy", "Port": 1 } - ] - }, - "Created": "2026-03-28T10:38:08.031309668Z", - "Tags": ["tag:group-b"], - "MachineAuthorized": true, - "CapMap": { - "https://tailscale.com/cap/file-sharing": null, - "https://tailscale.com/cap/is-owner": null, - "https://tailscale.com/cap/ssh": null, - "https://tailscale.com/cap/tailnet-lock": null, - "probe-udp-lifetime": null, - "ssh-behavior-v1": null, - "ssh-env-vars": null, - "store-appc-routes": null, - "tailnet-display-name": ["kratail2tid@passkey"] - }, - "ComputedName": "group-b-client", - "ComputedNameWithHost": "group-b-client" - }, - "AllCaps": [ - "https://tailscale.com/cap/ssh", - "https://tailscale.com/cap/is-owner", - "probe-udp-lifetime", - "ssh-behavior-v1", - "https://tailscale.com/cap/file-sharing", - "https://tailscale.com/cap/tailnet-lock", - "ssh-env-vars", - "store-appc-routes", - "tailnet-display-name" - ], - "NodeKey": "nodekey:ef35a655163204a08b33e09fdc24709f1e3aaa7f40de4efd5549cf014b4d8711", - "MachineKey": "mkey:f151b3ba7be457f1484c96d8daf48e032d8c9ed890a7f9b2f32c51458a19a05c", "Peers": [], - "DNS": { - "Routes": { - "tail78f774.ts.net.": null, - "ts.net.": [{ "Addr": "199.247.155.53" }, { "Addr": "2620:111:8007::53" }] - }, - "Domains": ["tail78f774.ts.net"], - "Proxied": true, - "ExitNodeFilteredSet": [".ts.net", ".tailscale.net"] - }, - "PacketFilter": [], - "PacketFilterRules": null, - "SSHPolicy": { "rules": [] }, - "CollectServices": false, - "DERPMap": { - "Regions": { - "1": { - "RegionID": 1, - "RegionCode": "nyc", - "RegionName": "New York City", - "Latitude": 40.7128, - "Longitude": -74.006, - "Nodes": [ - { - "Name": "1h", - "RegionID": 1, - "HostName": "derp1h.tailscale.com", - "IPv4": "199.38.181.93", - "IPv6": "2607:f740:f::afd", - "CanPort80": true - }, - { - "Name": "1g", - "RegionID": 1, - "HostName": "derp1g.tailscale.com", - "IPv4": "209.177.145.120", - "IPv6": "2607:f740:f::3eb", - "CanPort80": true - }, - { - "Name": "1i", - "RegionID": 1, - "HostName": "derp1i.tailscale.com", - "IPv4": "199.38.181.103", - "IPv6": "2607:f740:f::e19", - "CanPort80": true - }, - { - "Name": "1f", - "RegionID": 1, - "HostName": "derp1f.tailscale.com", - "IPv4": "199.38.181.104", - "IPv6": "2607:f740:f::bc", - "CanPort80": true - } - ] - }, - "10": { - "RegionID": 10, - "RegionCode": "sea", - "RegionName": "Seattle", - "Latitude": 47.609722, - "Longitude": -122.333056, - "Nodes": [ - { - "Name": "10c", - "RegionID": 10, - "HostName": "derp10c.tailscale.com", - "IPv4": "192.73.240.121", - "IPv6": "2607:f740:14::40c", - "CanPort80": true - }, - { - "Name": "10d", - "RegionID": 10, - "HostName": "derp10d.tailscale.com", - "IPv4": "192.73.240.132", - "IPv6": "2607:f740:14::500", - "CanPort80": true - }, - { - "Name": "10b", - "RegionID": 10, - "HostName": "derp10b.tailscale.com", - "IPv4": "192.73.240.161", - "IPv6": "2607:f740:14::61c", - "CanPort80": true - } - ] - }, - "11": { - "RegionID": 11, - "RegionCode": "sao", - "RegionName": "São Paulo", - "Latitude": -23.55, - "Longitude": -46.633333, - "Nodes": [ - { - "Name": "11f", - "RegionID": 11, - "HostName": "derp11f.tailscale.com", - "IPv4": "172.237.61.197", - "IPv6": "2600:3c0d::2000:3bff:fe44:6166", - "CanPort80": true - }, - { - "Name": "11g", - "RegionID": 11, - "HostName": "derp11g.tailscale.com", - "IPv4": "172.237.61.190", - "IPv6": "2600:3c0d::2000:62ff:febe:2e67", - "CanPort80": true - }, - { - "Name": "11e", - "RegionID": 11, - "HostName": "derp11e.tailscale.com", - "IPv4": "172.237.61.194", - "IPv6": "2600:3c0d::2000:d2ff:fe43:1790", - "CanPort80": true - } - ] - }, - "12": { - "RegionID": 12, - "RegionCode": "ord", - "RegionName": "Chicago", - "Latitude": 41.881944, - "Longitude": -87.627778, - "Nodes": [ - { - "Name": "12e", - "RegionID": 12, - "HostName": "derp12e.tailscale.com", - "IPv4": "209.177.158.15", - "IPv6": "2607:f740:e::b17", - "CanPort80": true - }, - { - "Name": "12f", - "RegionID": 12, - "HostName": "derp12f.tailscale.com", - "IPv4": "199.38.182.118", - "IPv6": "2607:f740:e::4c8", - "CanPort80": true - }, - { - "Name": "12d", - "RegionID": 12, - "HostName": "derp12d.tailscale.com", - "IPv4": "209.177.158.246", - "IPv6": "2607:f740:e::811", - "CanPort80": true - } - ] - }, - "13": { - "RegionID": 13, - "RegionCode": "den", - "RegionName": "Denver", - "Latitude": 39.7392, - "Longitude": -104.9849, - "Nodes": [ - { - "Name": "13c", - "RegionID": 13, - "HostName": "derp13c.tailscale.com", - "IPv4": "192.73.242.28", - "IPv6": "2607:f740:16::5c", - "CanPort80": true - }, - { - "Name": "13d", - "RegionID": 13, - "HostName": "derp13d.tailscale.com", - "IPv4": "192.73.242.204", - "IPv6": "2607:f740:16::c23", - "CanPort80": true - }, - { - "Name": "13b", - "RegionID": 13, - "HostName": "derp13b.tailscale.com", - "IPv4": "192.73.242.187", - "IPv6": "2607:f740:16::640", - "CanPort80": true - } - ] - }, - "14": { - "RegionID": 14, - "RegionCode": "ams", - "RegionName": "Amsterdam", - "Latitude": 52.372778, - "Longitude": 4.893611, - "Nodes": [ - { - "Name": "14c", - "RegionID": 14, - "HostName": "derp14c.tailscale.com", - "IPv4": "176.58.93.147", - "IPv6": "2a00:dd80:3c::b09", - "CanPort80": true - }, - { - "Name": "14d", - "RegionID": 14, - "HostName": "derp14d.tailscale.com", - "IPv4": "176.58.93.154", - "IPv6": "2a00:dd80:3c::3d5", - "CanPort80": true - }, - { - "Name": "14b", - "RegionID": 14, - "HostName": "derp14b.tailscale.com", - "IPv4": "176.58.93.248", - "IPv6": "2a00:dd80:3c::807", - "CanPort80": true - } - ] - }, - "15": { - "RegionID": 15, - "RegionCode": "jnb", - "RegionName": "Johannesburg", - "Latitude": -26.204444, - "Longitude": 28.045556, - "Nodes": [ - { - "Name": "15c", - "RegionID": 15, - "HostName": "derp15c.tailscale.com", - "IPv4": "102.67.165.185", - "IPv6": "2c0f:edb0:0:10::b59", - "CanPort80": true - }, - { - "Name": "15d", - "RegionID": 15, - "HostName": "derp15d.tailscale.com", - "IPv4": "102.67.165.36", - "IPv6": "2c0f:edb0:0:10::599", - "CanPort80": true - }, - { - "Name": "15b", - "RegionID": 15, - "HostName": "derp15b.tailscale.com", - "IPv4": "102.67.165.90", - "IPv6": "2c0f:edb0:0:10::963", - "CanPort80": true - } - ] - }, - "16": { - "RegionID": 16, - "RegionCode": "mia", - "RegionName": "Miami", - "Latitude": 25.78, - "Longitude": -80.21, - "Nodes": [ - { - "Name": "16c", - "RegionID": 16, - "HostName": "derp16c.tailscale.com", - "IPv4": "192.73.243.229", - "IPv6": "2607:f740:17::4e4", - "CanPort80": true - }, - { - "Name": "16d", - "RegionID": 16, - "HostName": "derp16d.tailscale.com", - "IPv4": "192.73.243.141", - "IPv6": "2607:f740:17::475", - "CanPort80": true - }, - { - "Name": "16b", - "RegionID": 16, - "HostName": "derp16b.tailscale.com", - "IPv4": "192.73.243.135", - "IPv6": "2607:f740:17::476", - "CanPort80": true - } - ] - }, - "17": { - "RegionID": 17, - "RegionCode": "lax", - "RegionName": "Los Angeles", - "Latitude": 34.05, - "Longitude": -118.25, - "Nodes": [ - { - "Name": "17c", - "RegionID": 17, - "HostName": "derp17c.tailscale.com", - "IPv4": "208.111.40.12", - "IPv6": "2607:f740:c::10", - "CanPort80": true - }, - { - "Name": "17d", - "RegionID": 17, - "HostName": "derp17d.tailscale.com", - "IPv4": "208.111.40.216", - "IPv6": "2607:f740:c::e1b", - "CanPort80": true - }, - { - "Name": "17b", - "RegionID": 17, - "HostName": "derp17b.tailscale.com", - "IPv4": "192.73.244.245", - "IPv6": "2607:f740:c::646", - "CanPort80": true - } - ] - }, - "18": { - "RegionID": 18, - "RegionCode": "par", - "RegionName": "Paris", - "Latitude": 48.856667, - "Longitude": 2.352222, - "Nodes": [ - { - "Name": "18c", - "RegionID": 18, - "HostName": "derp18c.tailscale.com", - "IPv4": "176.58.90.207", - "IPv6": "2a00:dd80:3e::c19", - "CanPort80": true - }, - { - "Name": "18d", - "RegionID": 18, - "HostName": "derp18d.tailscale.com", - "IPv4": "176.58.90.104", - "IPv6": "2a00:dd80:3e::f2e", - "CanPort80": true - }, - { - "Name": "18b", - "RegionID": 18, - "HostName": "derp18b.tailscale.com", - "IPv4": "176.58.90.147", - "IPv6": "2a00:dd80:3e::363", - "CanPort80": true - } - ] - }, - "19": { - "RegionID": 19, - "RegionCode": "mad", - "RegionName": "Madrid", - "Latitude": 40.416944, - "Longitude": -3.703333, - "Nodes": [ - { - "Name": "19c", - "RegionID": 19, - "HostName": "derp19c.tailscale.com", - "IPv4": "45.159.97.61", - "IPv6": "2a00:dd80:14:10::20", - "CanPort80": true - }, - { - "Name": "19d", - "RegionID": 19, - "HostName": "derp19d.tailscale.com", - "IPv4": "45.159.97.233", - "IPv6": "2a00:dd80:14:10::34a", - "CanPort80": true - }, - { - "Name": "19b", - "RegionID": 19, - "HostName": "derp19b.tailscale.com", - "IPv4": "45.159.97.144", - "IPv6": "2a00:dd80:14:10::335", - "CanPort80": true - } - ] - }, - "2": { - "RegionID": 2, - "RegionCode": "sfo", - "RegionName": "San Francisco", - "Latitude": 37.7775, - "Longitude": -122.416389, - "Nodes": [ - { - "Name": "2e", - "RegionID": 2, - "HostName": "derp2e.tailscale.com", - "IPv4": "192.73.252.134", - "IPv6": "2607:f740:0:3f::44c", - "CanPort80": true - }, - { - "Name": "2f", - "RegionID": 2, - "HostName": "derp2f.tailscale.com", - "IPv4": "208.111.34.178", - "IPv6": "2607:f740:0:3f::f4", - "CanPort80": true - }, - { - "Name": "2d", - "RegionID": 2, - "HostName": "derp2d.tailscale.com", - "IPv4": "192.73.252.65", - "IPv6": "2607:f740:0:3f::287", - "CanPort80": true - } - ] - }, - "20": { - "RegionID": 20, - "RegionCode": "hkg", - "RegionName": "Hong Kong", - "Latitude": 22.3193, - "Longitude": 114.1694, - "Nodes": [ - { - "Name": "20c", - "RegionID": 20, - "HostName": "derp20c.tailscale.com", - "IPv4": "205.147.105.30", - "IPv6": "2403:2500:8000:1::5fb", - "CanPort80": true - }, - { - "Name": "20d", - "RegionID": 20, - "HostName": "derp20d.tailscale.com", - "IPv4": "205.147.105.78", - "IPv6": "2403:2500:8000:1::e9a", - "CanPort80": true - }, - { - "Name": "20b", - "RegionID": 20, - "HostName": "derp20b.tailscale.com", - "IPv4": "103.6.84.152", - "IPv6": "2403:2500:8000:1::ef6", - "CanPort80": true - } - ] - }, - "21": { - "RegionID": 21, - "RegionCode": "tor", - "RegionName": "Toronto", - "Latitude": 43.741667, - "Longitude": -79.373333, - "Nodes": [ - { - "Name": "21c", - "RegionID": 21, - "HostName": "derp21c.tailscale.com", - "IPv4": "162.248.221.215", - "IPv6": "2607:f740:50::f10", - "CanPort80": true - }, - { - "Name": "21d", - "RegionID": 21, - "HostName": "derp21d.tailscale.com", - "IPv4": "162.248.221.248", - "IPv6": "2607:f740:50::ca4", - "CanPort80": true - }, - { - "Name": "21b", - "RegionID": 21, - "HostName": "derp21b.tailscale.com", - "IPv4": "162.248.221.199", - "IPv6": "2607:f740:50::1d1", - "CanPort80": true - } - ] - }, - "22": { - "RegionID": 22, - "RegionCode": "waw", - "RegionName": "Warsaw", - "Latitude": 52.23, - "Longitude": 21.011111, - "Nodes": [ - { - "Name": "22c", - "RegionID": 22, - "HostName": "derp22c.tailscale.com", - "IPv4": "45.159.98.253", - "IPv6": "2a00:dd80:40:100::3f", - "CanPort80": true - }, - { - "Name": "22d", - "RegionID": 22, - "HostName": "derp22d.tailscale.com", - "IPv4": "45.159.98.145", - "IPv6": "2a00:dd80:40:100::211", - "CanPort80": true - }, - { - "Name": "22b", - "RegionID": 22, - "HostName": "derp22b.tailscale.com", - "IPv4": "45.159.98.196", - "IPv6": "2a00:dd80:40:100::316", - "CanPort80": true - } - ] - }, - "23": { - "RegionID": 23, - "RegionCode": "dbi", - "RegionName": "Dubai", - "Latitude": 25.263056, - "Longitude": 55.297222, - "Nodes": [ - { - "Name": "23c", - "RegionID": 23, - "HostName": "derp23c.tailscale.com", - "IPv4": "185.34.3.207", - "IPv6": "2a00:dd80:3f:100::a50", - "CanPort80": true - }, - { - "Name": "23d", - "RegionID": 23, - "HostName": "derp23d.tailscale.com", - "IPv4": "185.34.3.75", - "IPv6": "2a00:dd80:3f:100::97e", - "CanPort80": true - }, - { - "Name": "23b", - "RegionID": 23, - "HostName": "derp23b.tailscale.com", - "IPv4": "185.34.3.232", - "IPv6": "2a00:dd80:3f:100::76f", - "CanPort80": true - } - ] - }, - "24": { - "RegionID": 24, - "RegionCode": "hnl", - "RegionName": "Honolulu", - "Latitude": 21.306944, - "Longitude": -157.858333, - "Nodes": [ - { - "Name": "24c", - "RegionID": 24, - "HostName": "derp24c.tailscale.com", - "IPv4": "208.83.233.233", - "IPv6": "2001:19f0:c000:c591:5400:04ff:fe26:2c5f", - "CanPort80": true - }, - { - "Name": "24d", - "RegionID": 24, - "HostName": "derp24d.tailscale.com", - "IPv4": "208.72.155.133", - "IPv6": "2001:19f0:c000:c564:5400:04ff:fe26:2ba8", - "CanPort80": true - }, - { - "Name": "24b", - "RegionID": 24, - "HostName": "derp24b.tailscale.com", - "IPv4": "208.83.234.151", - "IPv6": "2001:19f0:c000:c586:5400:04ff:fe26:2ba6", - "CanPort80": true - } - ] - }, - "25": { - "RegionID": 25, - "RegionCode": "nai", - "RegionName": "Nairobi", - "Latitude": -1.286389, - "Longitude": 36.817222, - "Nodes": [ - { - "Name": "25c", - "RegionID": 25, - "HostName": "derp25c.tailscale.com", - "IPv4": "102.67.167.37", - "IPv6": "2c0f:edb0:2000:1::2c7", - "CanPort80": true - }, - { - "Name": "25d", - "RegionID": 25, - "HostName": "derp25d.tailscale.com", - "IPv4": "102.67.167.188", - "IPv6": "2c0f:edb0:2000:1::188", - "CanPort80": true - }, - { - "Name": "25b", - "RegionID": 25, - "HostName": "derp25b.tailscale.com", - "IPv4": "102.67.167.245", - "IPv6": "2c0f:edb0:2000:1::2e9", - "CanPort80": true - } - ] - }, - "26": { - "RegionID": 26, - "RegionCode": "nue", - "RegionName": "Nuremberg", - "Latitude": 49.453889, - "Longitude": 11.0775, - "Nodes": [ - { - "Name": "26c", - "RegionID": 26, - "HostName": "derp26c.tailscale.com", - "IPv4": "49.12.193.137", - "IPv6": "2a01:4f8:1c1c:5c70::1", - "CanPort80": true - }, - { - "Name": "26d", - "RegionID": 26, - "HostName": "derp26d.tailscale.com", - "IPv4": "49.13.204.141", - "IPv6": "2a01:4f8:1c0c:7d06::1", - "CanPort80": true - }, - { - "Name": "26b", - "RegionID": 26, - "HostName": "derp26b.tailscale.com", - "IPv4": "167.235.72.200", - "IPv6": "2a01:4f8:1c1c:47b6::1", - "CanPort80": true - } - ] - }, - "27": { - "RegionID": 27, - "RegionCode": "iad", - "RegionName": "Ashburn", - "Latitude": 39.03, - "Longitude": -77.471111, - "Nodes": [ - { - "Name": "27d", - "RegionID": 27, - "HostName": "derp27d.tailscale.com", - "IPv4": "178.156.152.106", - "IPv6": "2a01:4ff:f0:3c8e::1", - "CanPort80": true - }, - { - "Name": "27c", - "RegionID": 27, - "HostName": "derp27c.tailscale.com", - "IPv4": "178.156.152.91", - "IPv6": "2a01:4ff:f0:3913::1", - "CanPort80": true - }, - { - "Name": "27e", - "RegionID": 27, - "HostName": "derp27e.tailscale.com", - "IPv4": "178.156.134.232", - "IPv6": "2a01:4ff:f0:28d4::1", - "CanPort80": true - }, - { - "Name": "27b", - "RegionID": 27, - "HostName": "derp27b.tailscale.com", - "IPv4": "5.161.218.233", - "IPv6": "2a01:4ff:f0:3db9::1", - "CanPort80": true - } - ] - }, - "28": { - "RegionID": 28, - "RegionCode": "hel", - "RegionName": "Helsinki", - "Latitude": 60.170833, - "Longitude": 24.9375, - "Nodes": [ - { - "Name": "28c", - "RegionID": 28, - "HostName": "derp28c.tailscale.com", - "IPv4": "95.217.2.165", - "IPv6": "2a01:4f9:c012:cd74::1", - "CanPort80": true - }, - { - "Name": "28d", - "RegionID": 28, - "HostName": "derp28d.tailscale.com", - "IPv4": "157.180.28.32", - "IPv6": "2a01:4f9:c012:2e5b::1", - "CanPort80": true - }, - { - "Name": "28b", - "RegionID": 28, - "HostName": "derp28b.tailscale.com", - "IPv4": "65.109.143.62", - "IPv6": "2a01:4f9:c012:d55c::1", - "CanPort80": true - } - ] - }, - "3": { - "RegionID": 3, - "RegionCode": "sin", - "RegionName": "Singapore", - "Latitude": 1.3521, - "Longitude": 103.8198, - "Nodes": [ - { - "Name": "3g", - "RegionID": 3, - "HostName": "derp3g.tailscale.com", - "IPv4": "172.237.72.79", - "IPv6": "2600:3c15::2000:adff:fe08:6fab", - "CanPort80": true - }, - { - "Name": "3f", - "RegionID": 3, - "HostName": "derp3f.tailscale.com", - "IPv4": "172.237.72.8", - "IPv6": "2600:3c15::2000:53ff:fe48:a668", - "CanPort80": true - }, - { - "Name": "3h", - "RegionID": 3, - "HostName": "derp3h.tailscale.com", - "IPv4": "172.237.66.30", - "IPv6": "2600:3c15::2000:3dff:fe44:50aa", - "CanPort80": true - }, - { - "Name": "3e", - "RegionID": 3, - "HostName": "derp3e.tailscale.com", - "IPv4": "172.237.72.43", - "IPv6": "2600:3c15::2000:6cff:fee4:d799", - "CanPort80": true - } - ] - }, - "4": { - "RegionID": 4, - "RegionCode": "fra", - "RegionName": "Frankfurt", - "Latitude": 50.1109, - "Longitude": 8.6821, - "Nodes": [ - { - "Name": "4h", - "RegionID": 4, - "HostName": "derp4h.tailscale.com", - "IPv4": "185.40.234.77", - "IPv6": "2a00:dd80:20::bcf", - "CanPort80": true - }, - { - "Name": "4g", - "RegionID": 4, - "HostName": "derp4g.tailscale.com", - "IPv4": "185.40.234.113", - "IPv6": "2a00:dd80:20::8f", - "CanPort80": true - }, - { - "Name": "4i", - "RegionID": 4, - "HostName": "derp4i.tailscale.com", - "IPv4": "185.40.234.53", - "IPv6": "2a00:dd80:20::8a6", - "CanPort80": true - }, - { - "Name": "4f", - "RegionID": 4, - "HostName": "derp4f.tailscale.com", - "IPv4": "185.40.234.219", - "IPv6": "2a00:dd80:20::a25", - "CanPort80": true - } - ] - }, - "5": { - "RegionID": 5, - "RegionCode": "syd", - "RegionName": "Sydney", - "Latitude": -33.867778, - "Longitude": 151.21, - "Nodes": [ - { - "Name": "5f", - "RegionID": 5, - "HostName": "derp5f.tailscale.com", - "IPv4": "172.105.166.103", - "IPv6": "2400:8907::2000:ccff:fe1f:80da", - "CanPort80": true - }, - { - "Name": "5g", - "RegionID": 5, - "HostName": "derp5g.tailscale.com", - "IPv4": "172.105.169.57", - "IPv6": "2400:8907::2000:2fff:fea7:57f4", - "CanPort80": true - }, - { - "Name": "5e", - "RegionID": 5, - "HostName": "derp5e.tailscale.com", - "IPv4": "172.105.179.230", - "IPv6": "2400:8907::2000:ceff:fe8d:4f4e", - "CanPort80": true - } - ] - }, - "6": { - "RegionID": 6, - "RegionCode": "blr", - "RegionName": "Bengaluru", - "Latitude": 12.9716, - "Longitude": 77.5946, - "Nodes": [ - { - "Name": "6a", - "RegionID": 6, - "HostName": "derp6.tailscale.com", - "IPv4": "68.183.90.120", - "IPv6": "2400:6180:100:d0::982:d001", - "CanPort80": true - } - ] - }, - "7": { - "RegionID": 7, - "RegionCode": "tok", - "RegionName": "Tokyo", - "Latitude": 35.6764, - "Longitude": 139.65, - "Nodes": [ - { - "Name": "7g", - "RegionID": 7, - "HostName": "derp7g.tailscale.com", - "IPv4": "172.238.6.179", - "IPv6": "2600:3c18::2000:3fff:fe80:3ebd", - "CanPort80": true - }, - { - "Name": "7f", - "RegionID": 7, - "HostName": "derp7f.tailscale.com", - "IPv4": "172.238.6.34", - "IPv6": "2600:3c18::2000:acff:fe8e:3ed5", - "CanPort80": true - }, - { - "Name": "7h", - "RegionID": 7, - "HostName": "derp7h.tailscale.com", - "IPv4": "172.237.28.183", - "IPv6": "2600:3c18::2000:b1ff:fea9:4560", - "CanPort80": true - }, - { - "Name": "7e", - "RegionID": 7, - "HostName": "derp7e.tailscale.com", - "IPv4": "172.238.6.180", - "IPv6": "2600:3c18::2000:60ff:fe0f:6e83", - "STUNOnly": true, - "CanPort80": true - } - ] - }, - "8": { - "RegionID": 8, - "RegionCode": "lhr", - "RegionName": "London", - "Latitude": 51.5072, - "Longitude": 0.1276, - "Nodes": [ - { - "Name": "8f", - "RegionID": 8, - "HostName": "derp8f.tailscale.com", - "IPv4": "176.58.88.183", - "IPv6": "2a00:dd80:3a::dfa", - "CanPort80": true - }, - { - "Name": "8g", - "RegionID": 8, - "HostName": "derp8g.tailscale.com", - "IPv4": "176.58.92.254", - "IPv6": "2a00:dd80:3a::ed", - "CanPort80": true - }, - { - "Name": "8e", - "RegionID": 8, - "HostName": "derp8e.tailscale.com", - "IPv4": "176.58.92.144", - "IPv6": "2a00:dd80:3a::b33", - "CanPort80": true - } - ] - }, - "9": { - "RegionID": 9, - "RegionCode": "dfw", - "RegionName": "Dallas", - "Latitude": 32.779167, - "Longitude": -96.808889, - "Nodes": [ - { - "Name": "9e", - "RegionID": 9, - "HostName": "derp9e.tailscale.com", - "IPv4": "192.73.248.83", - "IPv6": "2607:f740:100::359", - "CanPort80": true - }, - { - "Name": "9f", - "RegionID": 9, - "HostName": "derp9f.tailscale.com", - "IPv4": "209.177.156.197", - "IPv6": "2607:f740:100::cad", - "CanPort80": true - }, - { - "Name": "9d", - "RegionID": 9, - "HostName": "derp9d.tailscale.com", - "IPv4": "209.177.156.94", - "IPv6": "2607:f740:100::c05", - "CanPort80": true - } - ] - } - } - }, - "DisplayMessages": null, - "TKAEnabled": false, - "TKAHead": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", - "Domain": "kratail2tid@passkey", - "DomainAuditLogID": "", - "UserProfiles": { - "1008089393782498": { - "ID": 1008089393782498, - "LoginName": "group-b-client.tail78f774.ts.net", - "DisplayName": "group-b-client" - } - } + "PacketFilterRules": null } }, "multi-exit-router": { - "commands": { - "packet_filter_rules": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/multi-exit-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/multi-exit-router/tailscaled.sock debug localapi POST debug-packet-filter-matches" - }, "packet_filter_rules": null, - "packet_filter_matches": [], - "whois": { - "100.124.195.93": { - "peer_name": "exit-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/multi-exit-router/tailscaled.sock whois --json 100.124.195.93", - "response": null - }, - "100.116.18.24": { - "peer_name": "exit-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/multi-exit-router/tailscaled.sock whois --json 100.116.18.24", - "response": null - }, - "100.85.66.106": { - "peer_name": "exit-node", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/multi-exit-router/tailscaled.sock whois --json 100.85.66.106", - "response": null - }, - "100.107.162.14": { - "peer_name": "group-a-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/multi-exit-router/tailscaled.sock whois --json 100.107.162.14", - "response": null - }, - "100.77.135.18": { - "peer_name": "group-b-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/multi-exit-router/tailscaled.sock whois --json 100.77.135.18", - "response": null - }, - "100.109.43.124": { - "peer_name": "router-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/multi-exit-router/tailscaled.sock whois --json 100.109.43.124", - "response": null - }, - "100.65.172.123": { - "peer_name": "router-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/multi-exit-router/tailscaled.sock whois --json 100.65.172.123", - "response": null - }, - "100.92.142.61": { - "peer_name": "subnet-router", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/multi-exit-router/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/multi-exit-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/multi-exit-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/multi-exit-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/multi-exit-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/multi-exit-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/multi-exit-router/tailscaled.sock whois --json 100.90.199.68", - "response": null - } - }, "netmap": { - "SelfNode": { - "ID": 6294409699640722, - "StableID": "nMQuxDUk9r11CNTRL", - "Name": "multi-exit-router.tail78f774.ts.net.", - "User": 6294409699640722, - "Key": "nodekey:b854a0d64eba757cd3215c5bd78149cc0f927e35a2ad20342e88a15ead297f6a", - "DiscoKey": "discokey:762c82dd308809f511c6ac86dcc2642585837358fdd24958d55f16883c8e6c58", - "Addresses": ["100.105.127.107/32", "fd7a:115c:a1e0::ad37:7f6b/128"], - "AllowedIPs": ["100.105.127.107/32", "fd7a:115c:a1e0::ad37:7f6b/128", "10.33.0.0/16"], - "Endpoints": ["77.164.248.136:50766", "10.65.0.27:50766", "172.17.0.1:50766"], - "Hostinfo": { - "Hostname": "multi-exit-router", - "RoutableIPs": ["0.0.0.0/0", "::/0", "10.33.0.0/16"], - "RequestTags": ["tag:exit", "tag:router"], - "Services": [ - { "Proto": "peerapi4", "Port": 62548 }, - { "Proto": "peerapi6", "Port": 62548 }, - { "Proto": "peerapi-dns-proxy", "Port": 1 } - ] - }, - "Created": "2026-03-28T10:38:19.117098852Z", - "Tags": ["tag:exit", "tag:router"], - "PrimaryRoutes": ["10.33.0.0/16"], - "MachineAuthorized": true, - "CapMap": { - "https://tailscale.com/cap/file-sharing": null, - "https://tailscale.com/cap/is-owner": null, - "https://tailscale.com/cap/ssh": null, - "https://tailscale.com/cap/tailnet-lock": null, - "probe-udp-lifetime": null, - "ssh-behavior-v1": null, - "ssh-env-vars": null, - "store-appc-routes": null, - "tailnet-display-name": ["kratail2tid@passkey"] - }, - "ComputedName": "multi-exit-router", - "ComputedNameWithHost": "multi-exit-router" - }, - "AllCaps": [ - "tailnet-display-name", - "store-appc-routes", - "https://tailscale.com/cap/tailnet-lock", - "https://tailscale.com/cap/file-sharing", - "https://tailscale.com/cap/is-owner", - "ssh-env-vars", - "https://tailscale.com/cap/ssh", - "probe-udp-lifetime", - "ssh-behavior-v1" - ], - "NodeKey": "nodekey:b854a0d64eba757cd3215c5bd78149cc0f927e35a2ad20342e88a15ead297f6a", - "MachineKey": "mkey:91bee804809f30d07bfc29cf556844288fc3d45e0572469a3cb0799a535fda7d", "Peers": [], - "DNS": { - "Routes": { - "tail78f774.ts.net.": null, - "ts.net.": [{ "Addr": "199.247.155.53" }, { "Addr": "2620:111:8007::53" }] - }, - "Domains": ["tail78f774.ts.net"], - "Proxied": true, - "ExitNodeFilteredSet": [".ts.net", ".tailscale.net"] - }, - "PacketFilter": [], - "PacketFilterRules": null, - "SSHPolicy": { "rules": [] }, - "CollectServices": false, - "DERPMap": { - "Regions": { - "1": { - "RegionID": 1, - "RegionCode": "nyc", - "RegionName": "New York City", - "Latitude": 40.7128, - "Longitude": -74.006, - "Nodes": [ - { - "Name": "1h", - "RegionID": 1, - "HostName": "derp1h.tailscale.com", - "IPv4": "199.38.181.93", - "IPv6": "2607:f740:f::afd", - "CanPort80": true - }, - { - "Name": "1g", - "RegionID": 1, - "HostName": "derp1g.tailscale.com", - "IPv4": "209.177.145.120", - "IPv6": "2607:f740:f::3eb", - "CanPort80": true - }, - { - "Name": "1i", - "RegionID": 1, - "HostName": "derp1i.tailscale.com", - "IPv4": "199.38.181.103", - "IPv6": "2607:f740:f::e19", - "CanPort80": true - }, - { - "Name": "1f", - "RegionID": 1, - "HostName": "derp1f.tailscale.com", - "IPv4": "199.38.181.104", - "IPv6": "2607:f740:f::bc", - "CanPort80": true - } - ] - }, - "10": { - "RegionID": 10, - "RegionCode": "sea", - "RegionName": "Seattle", - "Latitude": 47.609722, - "Longitude": -122.333056, - "Nodes": [ - { - "Name": "10c", - "RegionID": 10, - "HostName": "derp10c.tailscale.com", - "IPv4": "192.73.240.121", - "IPv6": "2607:f740:14::40c", - "CanPort80": true - }, - { - "Name": "10d", - "RegionID": 10, - "HostName": "derp10d.tailscale.com", - "IPv4": "192.73.240.132", - "IPv6": "2607:f740:14::500", - "CanPort80": true - }, - { - "Name": "10b", - "RegionID": 10, - "HostName": "derp10b.tailscale.com", - "IPv4": "192.73.240.161", - "IPv6": "2607:f740:14::61c", - "CanPort80": true - } - ] - }, - "11": { - "RegionID": 11, - "RegionCode": "sao", - "RegionName": "São Paulo", - "Latitude": -23.55, - "Longitude": -46.633333, - "Nodes": [ - { - "Name": "11f", - "RegionID": 11, - "HostName": "derp11f.tailscale.com", - "IPv4": "172.237.61.197", - "IPv6": "2600:3c0d::2000:3bff:fe44:6166", - "CanPort80": true - }, - { - "Name": "11g", - "RegionID": 11, - "HostName": "derp11g.tailscale.com", - "IPv4": "172.237.61.190", - "IPv6": "2600:3c0d::2000:62ff:febe:2e67", - "CanPort80": true - }, - { - "Name": "11e", - "RegionID": 11, - "HostName": "derp11e.tailscale.com", - "IPv4": "172.237.61.194", - "IPv6": "2600:3c0d::2000:d2ff:fe43:1790", - "CanPort80": true - } - ] - }, - "12": { - "RegionID": 12, - "RegionCode": "ord", - "RegionName": "Chicago", - "Latitude": 41.881944, - "Longitude": -87.627778, - "Nodes": [ - { - "Name": "12e", - "RegionID": 12, - "HostName": "derp12e.tailscale.com", - "IPv4": "209.177.158.15", - "IPv6": "2607:f740:e::b17", - "CanPort80": true - }, - { - "Name": "12f", - "RegionID": 12, - "HostName": "derp12f.tailscale.com", - "IPv4": "199.38.182.118", - "IPv6": "2607:f740:e::4c8", - "CanPort80": true - }, - { - "Name": "12d", - "RegionID": 12, - "HostName": "derp12d.tailscale.com", - "IPv4": "209.177.158.246", - "IPv6": "2607:f740:e::811", - "CanPort80": true - } - ] - }, - "13": { - "RegionID": 13, - "RegionCode": "den", - "RegionName": "Denver", - "Latitude": 39.7392, - "Longitude": -104.9849, - "Nodes": [ - { - "Name": "13c", - "RegionID": 13, - "HostName": "derp13c.tailscale.com", - "IPv4": "192.73.242.28", - "IPv6": "2607:f740:16::5c", - "CanPort80": true - }, - { - "Name": "13d", - "RegionID": 13, - "HostName": "derp13d.tailscale.com", - "IPv4": "192.73.242.204", - "IPv6": "2607:f740:16::c23", - "CanPort80": true - }, - { - "Name": "13b", - "RegionID": 13, - "HostName": "derp13b.tailscale.com", - "IPv4": "192.73.242.187", - "IPv6": "2607:f740:16::640", - "CanPort80": true - } - ] - }, - "14": { - "RegionID": 14, - "RegionCode": "ams", - "RegionName": "Amsterdam", - "Latitude": 52.372778, - "Longitude": 4.893611, - "Nodes": [ - { - "Name": "14c", - "RegionID": 14, - "HostName": "derp14c.tailscale.com", - "IPv4": "176.58.93.147", - "IPv6": "2a00:dd80:3c::b09", - "CanPort80": true - }, - { - "Name": "14d", - "RegionID": 14, - "HostName": "derp14d.tailscale.com", - "IPv4": "176.58.93.154", - "IPv6": "2a00:dd80:3c::3d5", - "CanPort80": true - }, - { - "Name": "14b", - "RegionID": 14, - "HostName": "derp14b.tailscale.com", - "IPv4": "176.58.93.248", - "IPv6": "2a00:dd80:3c::807", - "CanPort80": true - } - ] - }, - "15": { - "RegionID": 15, - "RegionCode": "jnb", - "RegionName": "Johannesburg", - "Latitude": -26.204444, - "Longitude": 28.045556, - "Nodes": [ - { - "Name": "15c", - "RegionID": 15, - "HostName": "derp15c.tailscale.com", - "IPv4": "102.67.165.185", - "IPv6": "2c0f:edb0:0:10::b59", - "CanPort80": true - }, - { - "Name": "15d", - "RegionID": 15, - "HostName": "derp15d.tailscale.com", - "IPv4": "102.67.165.36", - "IPv6": "2c0f:edb0:0:10::599", - "CanPort80": true - }, - { - "Name": "15b", - "RegionID": 15, - "HostName": "derp15b.tailscale.com", - "IPv4": "102.67.165.90", - "IPv6": "2c0f:edb0:0:10::963", - "CanPort80": true - } - ] - }, - "16": { - "RegionID": 16, - "RegionCode": "mia", - "RegionName": "Miami", - "Latitude": 25.78, - "Longitude": -80.21, - "Nodes": [ - { - "Name": "16c", - "RegionID": 16, - "HostName": "derp16c.tailscale.com", - "IPv4": "192.73.243.229", - "IPv6": "2607:f740:17::4e4", - "CanPort80": true - }, - { - "Name": "16d", - "RegionID": 16, - "HostName": "derp16d.tailscale.com", - "IPv4": "192.73.243.141", - "IPv6": "2607:f740:17::475", - "CanPort80": true - }, - { - "Name": "16b", - "RegionID": 16, - "HostName": "derp16b.tailscale.com", - "IPv4": "192.73.243.135", - "IPv6": "2607:f740:17::476", - "CanPort80": true - } - ] - }, - "17": { - "RegionID": 17, - "RegionCode": "lax", - "RegionName": "Los Angeles", - "Latitude": 34.05, - "Longitude": -118.25, - "Nodes": [ - { - "Name": "17c", - "RegionID": 17, - "HostName": "derp17c.tailscale.com", - "IPv4": "208.111.40.12", - "IPv6": "2607:f740:c::10", - "CanPort80": true - }, - { - "Name": "17d", - "RegionID": 17, - "HostName": "derp17d.tailscale.com", - "IPv4": "208.111.40.216", - "IPv6": "2607:f740:c::e1b", - "CanPort80": true - }, - { - "Name": "17b", - "RegionID": 17, - "HostName": "derp17b.tailscale.com", - "IPv4": "192.73.244.245", - "IPv6": "2607:f740:c::646", - "CanPort80": true - } - ] - }, - "18": { - "RegionID": 18, - "RegionCode": "par", - "RegionName": "Paris", - "Latitude": 48.856667, - "Longitude": 2.352222, - "Nodes": [ - { - "Name": "18c", - "RegionID": 18, - "HostName": "derp18c.tailscale.com", - "IPv4": "176.58.90.207", - "IPv6": "2a00:dd80:3e::c19", - "CanPort80": true - }, - { - "Name": "18d", - "RegionID": 18, - "HostName": "derp18d.tailscale.com", - "IPv4": "176.58.90.104", - "IPv6": "2a00:dd80:3e::f2e", - "CanPort80": true - }, - { - "Name": "18b", - "RegionID": 18, - "HostName": "derp18b.tailscale.com", - "IPv4": "176.58.90.147", - "IPv6": "2a00:dd80:3e::363", - "CanPort80": true - } - ] - }, - "19": { - "RegionID": 19, - "RegionCode": "mad", - "RegionName": "Madrid", - "Latitude": 40.416944, - "Longitude": -3.703333, - "Nodes": [ - { - "Name": "19c", - "RegionID": 19, - "HostName": "derp19c.tailscale.com", - "IPv4": "45.159.97.61", - "IPv6": "2a00:dd80:14:10::20", - "CanPort80": true - }, - { - "Name": "19d", - "RegionID": 19, - "HostName": "derp19d.tailscale.com", - "IPv4": "45.159.97.233", - "IPv6": "2a00:dd80:14:10::34a", - "CanPort80": true - }, - { - "Name": "19b", - "RegionID": 19, - "HostName": "derp19b.tailscale.com", - "IPv4": "45.159.97.144", - "IPv6": "2a00:dd80:14:10::335", - "CanPort80": true - } - ] - }, - "2": { - "RegionID": 2, - "RegionCode": "sfo", - "RegionName": "San Francisco", - "Latitude": 37.7775, - "Longitude": -122.416389, - "Nodes": [ - { - "Name": "2e", - "RegionID": 2, - "HostName": "derp2e.tailscale.com", - "IPv4": "192.73.252.134", - "IPv6": "2607:f740:0:3f::44c", - "CanPort80": true - }, - { - "Name": "2f", - "RegionID": 2, - "HostName": "derp2f.tailscale.com", - "IPv4": "208.111.34.178", - "IPv6": "2607:f740:0:3f::f4", - "CanPort80": true - }, - { - "Name": "2d", - "RegionID": 2, - "HostName": "derp2d.tailscale.com", - "IPv4": "192.73.252.65", - "IPv6": "2607:f740:0:3f::287", - "CanPort80": true - } - ] - }, - "20": { - "RegionID": 20, - "RegionCode": "hkg", - "RegionName": "Hong Kong", - "Latitude": 22.3193, - "Longitude": 114.1694, - "Nodes": [ - { - "Name": "20c", - "RegionID": 20, - "HostName": "derp20c.tailscale.com", - "IPv4": "205.147.105.30", - "IPv6": "2403:2500:8000:1::5fb", - "CanPort80": true - }, - { - "Name": "20d", - "RegionID": 20, - "HostName": "derp20d.tailscale.com", - "IPv4": "205.147.105.78", - "IPv6": "2403:2500:8000:1::e9a", - "CanPort80": true - }, - { - "Name": "20b", - "RegionID": 20, - "HostName": "derp20b.tailscale.com", - "IPv4": "103.6.84.152", - "IPv6": "2403:2500:8000:1::ef6", - "CanPort80": true - } - ] - }, - "21": { - "RegionID": 21, - "RegionCode": "tor", - "RegionName": "Toronto", - "Latitude": 43.741667, - "Longitude": -79.373333, - "Nodes": [ - { - "Name": "21c", - "RegionID": 21, - "HostName": "derp21c.tailscale.com", - "IPv4": "162.248.221.215", - "IPv6": "2607:f740:50::f10", - "CanPort80": true - }, - { - "Name": "21d", - "RegionID": 21, - "HostName": "derp21d.tailscale.com", - "IPv4": "162.248.221.248", - "IPv6": "2607:f740:50::ca4", - "CanPort80": true - }, - { - "Name": "21b", - "RegionID": 21, - "HostName": "derp21b.tailscale.com", - "IPv4": "162.248.221.199", - "IPv6": "2607:f740:50::1d1", - "CanPort80": true - } - ] - }, - "22": { - "RegionID": 22, - "RegionCode": "waw", - "RegionName": "Warsaw", - "Latitude": 52.23, - "Longitude": 21.011111, - "Nodes": [ - { - "Name": "22c", - "RegionID": 22, - "HostName": "derp22c.tailscale.com", - "IPv4": "45.159.98.253", - "IPv6": "2a00:dd80:40:100::3f", - "CanPort80": true - }, - { - "Name": "22d", - "RegionID": 22, - "HostName": "derp22d.tailscale.com", - "IPv4": "45.159.98.145", - "IPv6": "2a00:dd80:40:100::211", - "CanPort80": true - }, - { - "Name": "22b", - "RegionID": 22, - "HostName": "derp22b.tailscale.com", - "IPv4": "45.159.98.196", - "IPv6": "2a00:dd80:40:100::316", - "CanPort80": true - } - ] - }, - "23": { - "RegionID": 23, - "RegionCode": "dbi", - "RegionName": "Dubai", - "Latitude": 25.263056, - "Longitude": 55.297222, - "Nodes": [ - { - "Name": "23c", - "RegionID": 23, - "HostName": "derp23c.tailscale.com", - "IPv4": "185.34.3.207", - "IPv6": "2a00:dd80:3f:100::a50", - "CanPort80": true - }, - { - "Name": "23d", - "RegionID": 23, - "HostName": "derp23d.tailscale.com", - "IPv4": "185.34.3.75", - "IPv6": "2a00:dd80:3f:100::97e", - "CanPort80": true - }, - { - "Name": "23b", - "RegionID": 23, - "HostName": "derp23b.tailscale.com", - "IPv4": "185.34.3.232", - "IPv6": "2a00:dd80:3f:100::76f", - "CanPort80": true - } - ] - }, - "24": { - "RegionID": 24, - "RegionCode": "hnl", - "RegionName": "Honolulu", - "Latitude": 21.306944, - "Longitude": -157.858333, - "Nodes": [ - { - "Name": "24c", - "RegionID": 24, - "HostName": "derp24c.tailscale.com", - "IPv4": "208.83.233.233", - "IPv6": "2001:19f0:c000:c591:5400:04ff:fe26:2c5f", - "CanPort80": true - }, - { - "Name": "24d", - "RegionID": 24, - "HostName": "derp24d.tailscale.com", - "IPv4": "208.72.155.133", - "IPv6": "2001:19f0:c000:c564:5400:04ff:fe26:2ba8", - "CanPort80": true - }, - { - "Name": "24b", - "RegionID": 24, - "HostName": "derp24b.tailscale.com", - "IPv4": "208.83.234.151", - "IPv6": "2001:19f0:c000:c586:5400:04ff:fe26:2ba6", - "CanPort80": true - } - ] - }, - "25": { - "RegionID": 25, - "RegionCode": "nai", - "RegionName": "Nairobi", - "Latitude": -1.286389, - "Longitude": 36.817222, - "Nodes": [ - { - "Name": "25c", - "RegionID": 25, - "HostName": "derp25c.tailscale.com", - "IPv4": "102.67.167.37", - "IPv6": "2c0f:edb0:2000:1::2c7", - "CanPort80": true - }, - { - "Name": "25d", - "RegionID": 25, - "HostName": "derp25d.tailscale.com", - "IPv4": "102.67.167.188", - "IPv6": "2c0f:edb0:2000:1::188", - "CanPort80": true - }, - { - "Name": "25b", - "RegionID": 25, - "HostName": "derp25b.tailscale.com", - "IPv4": "102.67.167.245", - "IPv6": "2c0f:edb0:2000:1::2e9", - "CanPort80": true - } - ] - }, - "26": { - "RegionID": 26, - "RegionCode": "nue", - "RegionName": "Nuremberg", - "Latitude": 49.453889, - "Longitude": 11.0775, - "Nodes": [ - { - "Name": "26c", - "RegionID": 26, - "HostName": "derp26c.tailscale.com", - "IPv4": "49.12.193.137", - "IPv6": "2a01:4f8:1c1c:5c70::1", - "CanPort80": true - }, - { - "Name": "26d", - "RegionID": 26, - "HostName": "derp26d.tailscale.com", - "IPv4": "49.13.204.141", - "IPv6": "2a01:4f8:1c0c:7d06::1", - "CanPort80": true - }, - { - "Name": "26b", - "RegionID": 26, - "HostName": "derp26b.tailscale.com", - "IPv4": "167.235.72.200", - "IPv6": "2a01:4f8:1c1c:47b6::1", - "CanPort80": true - } - ] - }, - "27": { - "RegionID": 27, - "RegionCode": "iad", - "RegionName": "Ashburn", - "Latitude": 39.03, - "Longitude": -77.471111, - "Nodes": [ - { - "Name": "27d", - "RegionID": 27, - "HostName": "derp27d.tailscale.com", - "IPv4": "178.156.152.106", - "IPv6": "2a01:4ff:f0:3c8e::1", - "CanPort80": true - }, - { - "Name": "27c", - "RegionID": 27, - "HostName": "derp27c.tailscale.com", - "IPv4": "178.156.152.91", - "IPv6": "2a01:4ff:f0:3913::1", - "CanPort80": true - }, - { - "Name": "27e", - "RegionID": 27, - "HostName": "derp27e.tailscale.com", - "IPv4": "178.156.134.232", - "IPv6": "2a01:4ff:f0:28d4::1", - "CanPort80": true - }, - { - "Name": "27b", - "RegionID": 27, - "HostName": "derp27b.tailscale.com", - "IPv4": "5.161.218.233", - "IPv6": "2a01:4ff:f0:3db9::1", - "CanPort80": true - } - ] - }, - "28": { - "RegionID": 28, - "RegionCode": "hel", - "RegionName": "Helsinki", - "Latitude": 60.170833, - "Longitude": 24.9375, - "Nodes": [ - { - "Name": "28c", - "RegionID": 28, - "HostName": "derp28c.tailscale.com", - "IPv4": "95.217.2.165", - "IPv6": "2a01:4f9:c012:cd74::1", - "CanPort80": true - }, - { - "Name": "28d", - "RegionID": 28, - "HostName": "derp28d.tailscale.com", - "IPv4": "157.180.28.32", - "IPv6": "2a01:4f9:c012:2e5b::1", - "CanPort80": true - }, - { - "Name": "28b", - "RegionID": 28, - "HostName": "derp28b.tailscale.com", - "IPv4": "65.109.143.62", - "IPv6": "2a01:4f9:c012:d55c::1", - "CanPort80": true - } - ] - }, - "3": { - "RegionID": 3, - "RegionCode": "sin", - "RegionName": "Singapore", - "Latitude": 1.3521, - "Longitude": 103.8198, - "Nodes": [ - { - "Name": "3g", - "RegionID": 3, - "HostName": "derp3g.tailscale.com", - "IPv4": "172.237.72.79", - "IPv6": "2600:3c15::2000:adff:fe08:6fab", - "CanPort80": true - }, - { - "Name": "3f", - "RegionID": 3, - "HostName": "derp3f.tailscale.com", - "IPv4": "172.237.72.8", - "IPv6": "2600:3c15::2000:53ff:fe48:a668", - "CanPort80": true - }, - { - "Name": "3h", - "RegionID": 3, - "HostName": "derp3h.tailscale.com", - "IPv4": "172.237.66.30", - "IPv6": "2600:3c15::2000:3dff:fe44:50aa", - "CanPort80": true - }, - { - "Name": "3e", - "RegionID": 3, - "HostName": "derp3e.tailscale.com", - "IPv4": "172.237.72.43", - "IPv6": "2600:3c15::2000:6cff:fee4:d799", - "CanPort80": true - } - ] - }, - "4": { - "RegionID": 4, - "RegionCode": "fra", - "RegionName": "Frankfurt", - "Latitude": 50.1109, - "Longitude": 8.6821, - "Nodes": [ - { - "Name": "4h", - "RegionID": 4, - "HostName": "derp4h.tailscale.com", - "IPv4": "185.40.234.77", - "IPv6": "2a00:dd80:20::bcf", - "CanPort80": true - }, - { - "Name": "4g", - "RegionID": 4, - "HostName": "derp4g.tailscale.com", - "IPv4": "185.40.234.113", - "IPv6": "2a00:dd80:20::8f", - "CanPort80": true - }, - { - "Name": "4i", - "RegionID": 4, - "HostName": "derp4i.tailscale.com", - "IPv4": "185.40.234.53", - "IPv6": "2a00:dd80:20::8a6", - "CanPort80": true - }, - { - "Name": "4f", - "RegionID": 4, - "HostName": "derp4f.tailscale.com", - "IPv4": "185.40.234.219", - "IPv6": "2a00:dd80:20::a25", - "CanPort80": true - } - ] - }, - "5": { - "RegionID": 5, - "RegionCode": "syd", - "RegionName": "Sydney", - "Latitude": -33.867778, - "Longitude": 151.21, - "Nodes": [ - { - "Name": "5f", - "RegionID": 5, - "HostName": "derp5f.tailscale.com", - "IPv4": "172.105.166.103", - "IPv6": "2400:8907::2000:ccff:fe1f:80da", - "CanPort80": true - }, - { - "Name": "5g", - "RegionID": 5, - "HostName": "derp5g.tailscale.com", - "IPv4": "172.105.169.57", - "IPv6": "2400:8907::2000:2fff:fea7:57f4", - "CanPort80": true - }, - { - "Name": "5e", - "RegionID": 5, - "HostName": "derp5e.tailscale.com", - "IPv4": "172.105.179.230", - "IPv6": "2400:8907::2000:ceff:fe8d:4f4e", - "CanPort80": true - } - ] - }, - "6": { - "RegionID": 6, - "RegionCode": "blr", - "RegionName": "Bengaluru", - "Latitude": 12.9716, - "Longitude": 77.5946, - "Nodes": [ - { - "Name": "6a", - "RegionID": 6, - "HostName": "derp6.tailscale.com", - "IPv4": "68.183.90.120", - "IPv6": "2400:6180:100:d0::982:d001", - "CanPort80": true - } - ] - }, - "7": { - "RegionID": 7, - "RegionCode": "tok", - "RegionName": "Tokyo", - "Latitude": 35.6764, - "Longitude": 139.65, - "Nodes": [ - { - "Name": "7g", - "RegionID": 7, - "HostName": "derp7g.tailscale.com", - "IPv4": "172.238.6.179", - "IPv6": "2600:3c18::2000:3fff:fe80:3ebd", - "CanPort80": true - }, - { - "Name": "7f", - "RegionID": 7, - "HostName": "derp7f.tailscale.com", - "IPv4": "172.238.6.34", - "IPv6": "2600:3c18::2000:acff:fe8e:3ed5", - "CanPort80": true - }, - { - "Name": "7h", - "RegionID": 7, - "HostName": "derp7h.tailscale.com", - "IPv4": "172.237.28.183", - "IPv6": "2600:3c18::2000:b1ff:fea9:4560", - "CanPort80": true - }, - { - "Name": "7e", - "RegionID": 7, - "HostName": "derp7e.tailscale.com", - "IPv4": "172.238.6.180", - "IPv6": "2600:3c18::2000:60ff:fe0f:6e83", - "STUNOnly": true, - "CanPort80": true - } - ] - }, - "8": { - "RegionID": 8, - "RegionCode": "lhr", - "RegionName": "London", - "Latitude": 51.5072, - "Longitude": 0.1276, - "Nodes": [ - { - "Name": "8f", - "RegionID": 8, - "HostName": "derp8f.tailscale.com", - "IPv4": "176.58.88.183", - "IPv6": "2a00:dd80:3a::dfa", - "CanPort80": true - }, - { - "Name": "8g", - "RegionID": 8, - "HostName": "derp8g.tailscale.com", - "IPv4": "176.58.92.254", - "IPv6": "2a00:dd80:3a::ed", - "CanPort80": true - }, - { - "Name": "8e", - "RegionID": 8, - "HostName": "derp8e.tailscale.com", - "IPv4": "176.58.92.144", - "IPv6": "2a00:dd80:3a::b33", - "CanPort80": true - } - ] - }, - "9": { - "RegionID": 9, - "RegionCode": "dfw", - "RegionName": "Dallas", - "Latitude": 32.779167, - "Longitude": -96.808889, - "Nodes": [ - { - "Name": "9e", - "RegionID": 9, - "HostName": "derp9e.tailscale.com", - "IPv4": "192.73.248.83", - "IPv6": "2607:f740:100::359", - "CanPort80": true - }, - { - "Name": "9f", - "RegionID": 9, - "HostName": "derp9f.tailscale.com", - "IPv4": "209.177.156.197", - "IPv6": "2607:f740:100::cad", - "CanPort80": true - }, - { - "Name": "9d", - "RegionID": 9, - "HostName": "derp9d.tailscale.com", - "IPv4": "209.177.156.94", - "IPv6": "2607:f740:100::c05", - "CanPort80": true - } - ] - } - } - }, - "DisplayMessages": null, - "TKAEnabled": false, - "TKAHead": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", - "Domain": "kratail2tid@passkey", - "DomainAuditLogID": "", - "UserProfiles": { - "6294409699640722": { - "ID": 6294409699640722, - "LoginName": "multi-exit-router.tail78f774.ts.net", - "DisplayName": "multi-exit-router" - } - } + "PacketFilterRules": null } }, "router-a": { - "commands": { - "packet_filter_rules": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/router-a/tailscaled.sock debug localapi POST debug-packet-filter-rules", - "packet_filter_matches": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/router-a/tailscaled.sock debug localapi POST debug-packet-filter-matches" - }, "packet_filter_rules": null, - "packet_filter_matches": [], - "whois": { - "100.124.195.93": { - "peer_name": "exit-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/router-a/tailscaled.sock whois --json 100.124.195.93", - "response": null - }, - "100.116.18.24": { - "peer_name": "exit-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/router-a/tailscaled.sock whois --json 100.116.18.24", - "response": null - }, - "100.85.66.106": { - "peer_name": "exit-node", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/router-a/tailscaled.sock whois --json 100.85.66.106", - "response": null - }, - "100.107.162.14": { - "peer_name": "group-a-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/router-a/tailscaled.sock whois --json 100.107.162.14", - "response": null - }, - "100.77.135.18": { - "peer_name": "group-b-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/router-a/tailscaled.sock whois --json 100.77.135.18", - "response": null - }, - "100.105.127.107": { - "peer_name": "multi-exit-router", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/router-a/tailscaled.sock whois --json 100.105.127.107", - "response": null - }, - "100.65.172.123": { - "peer_name": "router-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/router-a/tailscaled.sock whois --json 100.65.172.123", - "response": null - }, - "100.92.142.61": { - "peer_name": "subnet-router", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/router-a/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/router-a/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/router-a/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/router-a/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/router-a/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/router-a/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/router-a/tailscaled.sock whois --json 100.90.199.68", - "response": null - } - }, "netmap": { - "SelfNode": { - "ID": 50590507314324, - "StableID": "n3kktkvuP111CNTRL", - "Name": "router-a.tail78f774.ts.net.", - "User": 50590507314324, - "Key": "nodekey:b4566fef38b3b2b15684fc8890f5fbaea4525b467825f57a02801969a5ed2b7b", - "DiscoKey": "discokey:368ba711a8394633b4626eb7cd8e6a2df90d8e554505dc032ea9658ceee0f731", - "Addresses": ["100.109.43.124/32", "fd7a:115c:a1e0::a537:2b7c/128"], - "AllowedIPs": ["100.109.43.124/32", "fd7a:115c:a1e0::a537:2b7c/128", "10.44.0.0/16"], - "Endpoints": ["77.164.248.136:34130", "10.65.0.27:34130", "172.17.0.1:34130"], - "Hostinfo": { - "Hostname": "router-a", - "RoutableIPs": ["10.44.0.0/16"], - "RequestTags": ["tag:router-a"], - "Services": [ - { "Proto": "peerapi4", "Port": 49439 }, - { "Proto": "peerapi6", "Port": 49439 }, - { "Proto": "peerapi-dns-proxy", "Port": 1 } - ] - }, - "Created": "2026-03-28T10:38:11.734910312Z", - "Tags": ["tag:router-a"], - "PrimaryRoutes": ["10.44.0.0/16"], - "MachineAuthorized": true, - "CapMap": { - "https://tailscale.com/cap/file-sharing": null, - "https://tailscale.com/cap/is-owner": null, - "https://tailscale.com/cap/ssh": null, - "https://tailscale.com/cap/tailnet-lock": null, - "probe-udp-lifetime": null, - "ssh-behavior-v1": null, - "ssh-env-vars": null, - "store-appc-routes": null, - "tailnet-display-name": ["kratail2tid@passkey"] - }, - "ComputedName": "router-a", - "ComputedNameWithHost": "router-a" - }, - "AllCaps": [ - "ssh-env-vars", - "tailnet-display-name", - "https://tailscale.com/cap/file-sharing", - "ssh-behavior-v1", - "https://tailscale.com/cap/tailnet-lock", - "store-appc-routes", - "https://tailscale.com/cap/is-owner", - "https://tailscale.com/cap/ssh", - "probe-udp-lifetime" - ], - "NodeKey": "nodekey:b4566fef38b3b2b15684fc8890f5fbaea4525b467825f57a02801969a5ed2b7b", - "MachineKey": "mkey:868ba8a45654990c1c153c5ce33ef50ddd8d769841335e42decda4462d1dcf4e", "Peers": [], - "DNS": { - "Routes": { - "tail78f774.ts.net.": null, - "ts.net.": [{ "Addr": "199.247.155.53" }, { "Addr": "2620:111:8007::53" }] - }, - "Domains": ["tail78f774.ts.net"], - "Proxied": true, - "ExitNodeFilteredSet": [".ts.net", ".tailscale.net"] - }, - "PacketFilter": [], - "PacketFilterRules": null, - "SSHPolicy": { "rules": [] }, - "CollectServices": false, - "DERPMap": { - "Regions": { - "1": { - "RegionID": 1, - "RegionCode": "nyc", - "RegionName": "New York City", - "Latitude": 40.7128, - "Longitude": -74.006, - "Nodes": [ - { - "Name": "1h", - "RegionID": 1, - "HostName": "derp1h.tailscale.com", - "IPv4": "199.38.181.93", - "IPv6": "2607:f740:f::afd", - "CanPort80": true - }, - { - "Name": "1g", - "RegionID": 1, - "HostName": "derp1g.tailscale.com", - "IPv4": "209.177.145.120", - "IPv6": "2607:f740:f::3eb", - "CanPort80": true - }, - { - "Name": "1i", - "RegionID": 1, - "HostName": "derp1i.tailscale.com", - "IPv4": "199.38.181.103", - "IPv6": "2607:f740:f::e19", - "CanPort80": true - }, - { - "Name": "1f", - "RegionID": 1, - "HostName": "derp1f.tailscale.com", - "IPv4": "199.38.181.104", - "IPv6": "2607:f740:f::bc", - "CanPort80": true - } - ] - }, - "10": { - "RegionID": 10, - "RegionCode": "sea", - "RegionName": "Seattle", - "Latitude": 47.609722, - "Longitude": -122.333056, - "Nodes": [ - { - "Name": "10c", - "RegionID": 10, - "HostName": "derp10c.tailscale.com", - "IPv4": "192.73.240.121", - "IPv6": "2607:f740:14::40c", - "CanPort80": true - }, - { - "Name": "10d", - "RegionID": 10, - "HostName": "derp10d.tailscale.com", - "IPv4": "192.73.240.132", - "IPv6": "2607:f740:14::500", - "CanPort80": true - }, - { - "Name": "10b", - "RegionID": 10, - "HostName": "derp10b.tailscale.com", - "IPv4": "192.73.240.161", - "IPv6": "2607:f740:14::61c", - "CanPort80": true - } - ] - }, - "11": { - "RegionID": 11, - "RegionCode": "sao", - "RegionName": "São Paulo", - "Latitude": -23.55, - "Longitude": -46.633333, - "Nodes": [ - { - "Name": "11f", - "RegionID": 11, - "HostName": "derp11f.tailscale.com", - "IPv4": "172.237.61.197", - "IPv6": "2600:3c0d::2000:3bff:fe44:6166", - "CanPort80": true - }, - { - "Name": "11g", - "RegionID": 11, - "HostName": "derp11g.tailscale.com", - "IPv4": "172.237.61.190", - "IPv6": "2600:3c0d::2000:62ff:febe:2e67", - "CanPort80": true - }, - { - "Name": "11e", - "RegionID": 11, - "HostName": "derp11e.tailscale.com", - "IPv4": "172.237.61.194", - "IPv6": "2600:3c0d::2000:d2ff:fe43:1790", - "CanPort80": true - } - ] - }, - "12": { - "RegionID": 12, - "RegionCode": "ord", - "RegionName": "Chicago", - "Latitude": 41.881944, - "Longitude": -87.627778, - "Nodes": [ - { - "Name": "12e", - "RegionID": 12, - "HostName": "derp12e.tailscale.com", - "IPv4": "209.177.158.15", - "IPv6": "2607:f740:e::b17", - "CanPort80": true - }, - { - "Name": "12f", - "RegionID": 12, - "HostName": "derp12f.tailscale.com", - "IPv4": "199.38.182.118", - "IPv6": "2607:f740:e::4c8", - "CanPort80": true - }, - { - "Name": "12d", - "RegionID": 12, - "HostName": "derp12d.tailscale.com", - "IPv4": "209.177.158.246", - "IPv6": "2607:f740:e::811", - "CanPort80": true - } - ] - }, - "13": { - "RegionID": 13, - "RegionCode": "den", - "RegionName": "Denver", - "Latitude": 39.7392, - "Longitude": -104.9849, - "Nodes": [ - { - "Name": "13c", - "RegionID": 13, - "HostName": "derp13c.tailscale.com", - "IPv4": "192.73.242.28", - "IPv6": "2607:f740:16::5c", - "CanPort80": true - }, - { - "Name": "13d", - "RegionID": 13, - "HostName": "derp13d.tailscale.com", - "IPv4": "192.73.242.204", - "IPv6": "2607:f740:16::c23", - "CanPort80": true - }, - { - "Name": "13b", - "RegionID": 13, - "HostName": "derp13b.tailscale.com", - "IPv4": "192.73.242.187", - "IPv6": "2607:f740:16::640", - "CanPort80": true - } - ] - }, - "14": { - "RegionID": 14, - "RegionCode": "ams", - "RegionName": "Amsterdam", - "Latitude": 52.372778, - "Longitude": 4.893611, - "Nodes": [ - { - "Name": "14c", - "RegionID": 14, - "HostName": "derp14c.tailscale.com", - "IPv4": "176.58.93.147", - "IPv6": "2a00:dd80:3c::b09", - "CanPort80": true - }, - { - "Name": "14d", - "RegionID": 14, - "HostName": "derp14d.tailscale.com", - "IPv4": "176.58.93.154", - "IPv6": "2a00:dd80:3c::3d5", - "CanPort80": true - }, - { - "Name": "14b", - "RegionID": 14, - "HostName": "derp14b.tailscale.com", - "IPv4": "176.58.93.248", - "IPv6": "2a00:dd80:3c::807", - "CanPort80": true - } - ] - }, - "15": { - "RegionID": 15, - "RegionCode": "jnb", - "RegionName": "Johannesburg", - "Latitude": -26.204444, - "Longitude": 28.045556, - "Nodes": [ - { - "Name": "15c", - "RegionID": 15, - "HostName": "derp15c.tailscale.com", - "IPv4": "102.67.165.185", - "IPv6": "2c0f:edb0:0:10::b59", - "CanPort80": true - }, - { - "Name": "15d", - "RegionID": 15, - "HostName": "derp15d.tailscale.com", - "IPv4": "102.67.165.36", - "IPv6": "2c0f:edb0:0:10::599", - "CanPort80": true - }, - { - "Name": "15b", - "RegionID": 15, - "HostName": "derp15b.tailscale.com", - "IPv4": "102.67.165.90", - "IPv6": "2c0f:edb0:0:10::963", - "CanPort80": true - } - ] - }, - "16": { - "RegionID": 16, - "RegionCode": "mia", - "RegionName": "Miami", - "Latitude": 25.78, - "Longitude": -80.21, - "Nodes": [ - { - "Name": "16c", - "RegionID": 16, - "HostName": "derp16c.tailscale.com", - "IPv4": "192.73.243.229", - "IPv6": "2607:f740:17::4e4", - "CanPort80": true - }, - { - "Name": "16d", - "RegionID": 16, - "HostName": "derp16d.tailscale.com", - "IPv4": "192.73.243.141", - "IPv6": "2607:f740:17::475", - "CanPort80": true - }, - { - "Name": "16b", - "RegionID": 16, - "HostName": "derp16b.tailscale.com", - "IPv4": "192.73.243.135", - "IPv6": "2607:f740:17::476", - "CanPort80": true - } - ] - }, - "17": { - "RegionID": 17, - "RegionCode": "lax", - "RegionName": "Los Angeles", - "Latitude": 34.05, - "Longitude": -118.25, - "Nodes": [ - { - "Name": "17c", - "RegionID": 17, - "HostName": "derp17c.tailscale.com", - "IPv4": "208.111.40.12", - "IPv6": "2607:f740:c::10", - "CanPort80": true - }, - { - "Name": "17d", - "RegionID": 17, - "HostName": "derp17d.tailscale.com", - "IPv4": "208.111.40.216", - "IPv6": "2607:f740:c::e1b", - "CanPort80": true - }, - { - "Name": "17b", - "RegionID": 17, - "HostName": "derp17b.tailscale.com", - "IPv4": "192.73.244.245", - "IPv6": "2607:f740:c::646", - "CanPort80": true - } - ] - }, - "18": { - "RegionID": 18, - "RegionCode": "par", - "RegionName": "Paris", - "Latitude": 48.856667, - "Longitude": 2.352222, - "Nodes": [ - { - "Name": "18c", - "RegionID": 18, - "HostName": "derp18c.tailscale.com", - "IPv4": "176.58.90.207", - "IPv6": "2a00:dd80:3e::c19", - "CanPort80": true - }, - { - "Name": "18d", - "RegionID": 18, - "HostName": "derp18d.tailscale.com", - "IPv4": "176.58.90.104", - "IPv6": "2a00:dd80:3e::f2e", - "CanPort80": true - }, - { - "Name": "18b", - "RegionID": 18, - "HostName": "derp18b.tailscale.com", - "IPv4": "176.58.90.147", - "IPv6": "2a00:dd80:3e::363", - "CanPort80": true - } - ] - }, - "19": { - "RegionID": 19, - "RegionCode": "mad", - "RegionName": "Madrid", - "Latitude": 40.416944, - "Longitude": -3.703333, - "Nodes": [ - { - "Name": "19c", - "RegionID": 19, - "HostName": "derp19c.tailscale.com", - "IPv4": "45.159.97.61", - "IPv6": "2a00:dd80:14:10::20", - "CanPort80": true - }, - { - "Name": "19d", - "RegionID": 19, - "HostName": "derp19d.tailscale.com", - "IPv4": "45.159.97.233", - "IPv6": "2a00:dd80:14:10::34a", - "CanPort80": true - }, - { - "Name": "19b", - "RegionID": 19, - "HostName": "derp19b.tailscale.com", - "IPv4": "45.159.97.144", - "IPv6": "2a00:dd80:14:10::335", - "CanPort80": true - } - ] - }, - "2": { - "RegionID": 2, - "RegionCode": "sfo", - "RegionName": "San Francisco", - "Latitude": 37.7775, - "Longitude": -122.416389, - "Nodes": [ - { - "Name": "2e", - "RegionID": 2, - "HostName": "derp2e.tailscale.com", - "IPv4": "192.73.252.134", - "IPv6": "2607:f740:0:3f::44c", - "CanPort80": true - }, - { - "Name": "2f", - "RegionID": 2, - "HostName": "derp2f.tailscale.com", - "IPv4": "208.111.34.178", - "IPv6": "2607:f740:0:3f::f4", - "CanPort80": true - }, - { - "Name": "2d", - "RegionID": 2, - "HostName": "derp2d.tailscale.com", - "IPv4": "192.73.252.65", - "IPv6": "2607:f740:0:3f::287", - "CanPort80": true - } - ] - }, - "20": { - "RegionID": 20, - "RegionCode": "hkg", - "RegionName": "Hong Kong", - "Latitude": 22.3193, - "Longitude": 114.1694, - "Nodes": [ - { - "Name": "20c", - "RegionID": 20, - "HostName": "derp20c.tailscale.com", - "IPv4": "205.147.105.30", - "IPv6": "2403:2500:8000:1::5fb", - "CanPort80": true - }, - { - "Name": "20d", - "RegionID": 20, - "HostName": "derp20d.tailscale.com", - "IPv4": "205.147.105.78", - "IPv6": "2403:2500:8000:1::e9a", - "CanPort80": true - }, - { - "Name": "20b", - "RegionID": 20, - "HostName": "derp20b.tailscale.com", - "IPv4": "103.6.84.152", - "IPv6": "2403:2500:8000:1::ef6", - "CanPort80": true - } - ] - }, - "21": { - "RegionID": 21, - "RegionCode": "tor", - "RegionName": "Toronto", - "Latitude": 43.741667, - "Longitude": -79.373333, - "Nodes": [ - { - "Name": "21c", - "RegionID": 21, - "HostName": "derp21c.tailscale.com", - "IPv4": "162.248.221.215", - "IPv6": "2607:f740:50::f10", - "CanPort80": true - }, - { - "Name": "21d", - "RegionID": 21, - "HostName": "derp21d.tailscale.com", - "IPv4": "162.248.221.248", - "IPv6": "2607:f740:50::ca4", - "CanPort80": true - }, - { - "Name": "21b", - "RegionID": 21, - "HostName": "derp21b.tailscale.com", - "IPv4": "162.248.221.199", - "IPv6": "2607:f740:50::1d1", - "CanPort80": true - } - ] - }, - "22": { - "RegionID": 22, - "RegionCode": "waw", - "RegionName": "Warsaw", - "Latitude": 52.23, - "Longitude": 21.011111, - "Nodes": [ - { - "Name": "22c", - "RegionID": 22, - "HostName": "derp22c.tailscale.com", - "IPv4": "45.159.98.253", - "IPv6": "2a00:dd80:40:100::3f", - "CanPort80": true - }, - { - "Name": "22d", - "RegionID": 22, - "HostName": "derp22d.tailscale.com", - "IPv4": "45.159.98.145", - "IPv6": "2a00:dd80:40:100::211", - "CanPort80": true - }, - { - "Name": "22b", - "RegionID": 22, - "HostName": "derp22b.tailscale.com", - "IPv4": "45.159.98.196", - "IPv6": "2a00:dd80:40:100::316", - "CanPort80": true - } - ] - }, - "23": { - "RegionID": 23, - "RegionCode": "dbi", - "RegionName": "Dubai", - "Latitude": 25.263056, - "Longitude": 55.297222, - "Nodes": [ - { - "Name": "23c", - "RegionID": 23, - "HostName": "derp23c.tailscale.com", - "IPv4": "185.34.3.207", - "IPv6": "2a00:dd80:3f:100::a50", - "CanPort80": true - }, - { - "Name": "23d", - "RegionID": 23, - "HostName": "derp23d.tailscale.com", - "IPv4": "185.34.3.75", - "IPv6": "2a00:dd80:3f:100::97e", - "CanPort80": true - }, - { - "Name": "23b", - "RegionID": 23, - "HostName": "derp23b.tailscale.com", - "IPv4": "185.34.3.232", - "IPv6": "2a00:dd80:3f:100::76f", - "CanPort80": true - } - ] - }, - "24": { - "RegionID": 24, - "RegionCode": "hnl", - "RegionName": "Honolulu", - "Latitude": 21.306944, - "Longitude": -157.858333, - "Nodes": [ - { - "Name": "24c", - "RegionID": 24, - "HostName": "derp24c.tailscale.com", - "IPv4": "208.83.233.233", - "IPv6": "2001:19f0:c000:c591:5400:04ff:fe26:2c5f", - "CanPort80": true - }, - { - "Name": "24d", - "RegionID": 24, - "HostName": "derp24d.tailscale.com", - "IPv4": "208.72.155.133", - "IPv6": "2001:19f0:c000:c564:5400:04ff:fe26:2ba8", - "CanPort80": true - }, - { - "Name": "24b", - "RegionID": 24, - "HostName": "derp24b.tailscale.com", - "IPv4": "208.83.234.151", - "IPv6": "2001:19f0:c000:c586:5400:04ff:fe26:2ba6", - "CanPort80": true - } - ] - }, - "25": { - "RegionID": 25, - "RegionCode": "nai", - "RegionName": "Nairobi", - "Latitude": -1.286389, - "Longitude": 36.817222, - "Nodes": [ - { - "Name": "25c", - "RegionID": 25, - "HostName": "derp25c.tailscale.com", - "IPv4": "102.67.167.37", - "IPv6": "2c0f:edb0:2000:1::2c7", - "CanPort80": true - }, - { - "Name": "25d", - "RegionID": 25, - "HostName": "derp25d.tailscale.com", - "IPv4": "102.67.167.188", - "IPv6": "2c0f:edb0:2000:1::188", - "CanPort80": true - }, - { - "Name": "25b", - "RegionID": 25, - "HostName": "derp25b.tailscale.com", - "IPv4": "102.67.167.245", - "IPv6": "2c0f:edb0:2000:1::2e9", - "CanPort80": true - } - ] - }, - "26": { - "RegionID": 26, - "RegionCode": "nue", - "RegionName": "Nuremberg", - "Latitude": 49.453889, - "Longitude": 11.0775, - "Nodes": [ - { - "Name": "26c", - "RegionID": 26, - "HostName": "derp26c.tailscale.com", - "IPv4": "49.12.193.137", - "IPv6": "2a01:4f8:1c1c:5c70::1", - "CanPort80": true - }, - { - "Name": "26d", - "RegionID": 26, - "HostName": "derp26d.tailscale.com", - "IPv4": "49.13.204.141", - "IPv6": "2a01:4f8:1c0c:7d06::1", - "CanPort80": true - }, - { - "Name": "26b", - "RegionID": 26, - "HostName": "derp26b.tailscale.com", - "IPv4": "167.235.72.200", - "IPv6": "2a01:4f8:1c1c:47b6::1", - "CanPort80": true - } - ] - }, - "27": { - "RegionID": 27, - "RegionCode": "iad", - "RegionName": "Ashburn", - "Latitude": 39.03, - "Longitude": -77.471111, - "Nodes": [ - { - "Name": "27d", - "RegionID": 27, - "HostName": "derp27d.tailscale.com", - "IPv4": "178.156.152.106", - "IPv6": "2a01:4ff:f0:3c8e::1", - "CanPort80": true - }, - { - "Name": "27c", - "RegionID": 27, - "HostName": "derp27c.tailscale.com", - "IPv4": "178.156.152.91", - "IPv6": "2a01:4ff:f0:3913::1", - "CanPort80": true - }, - { - "Name": "27e", - "RegionID": 27, - "HostName": "derp27e.tailscale.com", - "IPv4": "178.156.134.232", - "IPv6": "2a01:4ff:f0:28d4::1", - "CanPort80": true - }, - { - "Name": "27b", - "RegionID": 27, - "HostName": "derp27b.tailscale.com", - "IPv4": "5.161.218.233", - "IPv6": "2a01:4ff:f0:3db9::1", - "CanPort80": true - } - ] - }, - "28": { - "RegionID": 28, - "RegionCode": "hel", - "RegionName": "Helsinki", - "Latitude": 60.170833, - "Longitude": 24.9375, - "Nodes": [ - { - "Name": "28c", - "RegionID": 28, - "HostName": "derp28c.tailscale.com", - "IPv4": "95.217.2.165", - "IPv6": "2a01:4f9:c012:cd74::1", - "CanPort80": true - }, - { - "Name": "28d", - "RegionID": 28, - "HostName": "derp28d.tailscale.com", - "IPv4": "157.180.28.32", - "IPv6": "2a01:4f9:c012:2e5b::1", - "CanPort80": true - }, - { - "Name": "28b", - "RegionID": 28, - "HostName": "derp28b.tailscale.com", - "IPv4": "65.109.143.62", - "IPv6": "2a01:4f9:c012:d55c::1", - "CanPort80": true - } - ] - }, - "3": { - "RegionID": 3, - "RegionCode": "sin", - "RegionName": "Singapore", - "Latitude": 1.3521, - "Longitude": 103.8198, - "Nodes": [ - { - "Name": "3g", - "RegionID": 3, - "HostName": "derp3g.tailscale.com", - "IPv4": "172.237.72.79", - "IPv6": "2600:3c15::2000:adff:fe08:6fab", - "CanPort80": true - }, - { - "Name": "3f", - "RegionID": 3, - "HostName": "derp3f.tailscale.com", - "IPv4": "172.237.72.8", - "IPv6": "2600:3c15::2000:53ff:fe48:a668", - "CanPort80": true - }, - { - "Name": "3h", - "RegionID": 3, - "HostName": "derp3h.tailscale.com", - "IPv4": "172.237.66.30", - "IPv6": "2600:3c15::2000:3dff:fe44:50aa", - "CanPort80": true - }, - { - "Name": "3e", - "RegionID": 3, - "HostName": "derp3e.tailscale.com", - "IPv4": "172.237.72.43", - "IPv6": "2600:3c15::2000:6cff:fee4:d799", - "CanPort80": true - } - ] - }, - "4": { - "RegionID": 4, - "RegionCode": "fra", - "RegionName": "Frankfurt", - "Latitude": 50.1109, - "Longitude": 8.6821, - "Nodes": [ - { - "Name": "4h", - "RegionID": 4, - "HostName": "derp4h.tailscale.com", - "IPv4": "185.40.234.77", - "IPv6": "2a00:dd80:20::bcf", - "CanPort80": true - }, - { - "Name": "4g", - "RegionID": 4, - "HostName": "derp4g.tailscale.com", - "IPv4": "185.40.234.113", - "IPv6": "2a00:dd80:20::8f", - "CanPort80": true - }, - { - "Name": "4i", - "RegionID": 4, - "HostName": "derp4i.tailscale.com", - "IPv4": "185.40.234.53", - "IPv6": "2a00:dd80:20::8a6", - "CanPort80": true - }, - { - "Name": "4f", - "RegionID": 4, - "HostName": "derp4f.tailscale.com", - "IPv4": "185.40.234.219", - "IPv6": "2a00:dd80:20::a25", - "CanPort80": true - } - ] - }, - "5": { - "RegionID": 5, - "RegionCode": "syd", - "RegionName": "Sydney", - "Latitude": -33.867778, - "Longitude": 151.21, - "Nodes": [ - { - "Name": "5f", - "RegionID": 5, - "HostName": "derp5f.tailscale.com", - "IPv4": "172.105.166.103", - "IPv6": "2400:8907::2000:ccff:fe1f:80da", - "CanPort80": true - }, - { - "Name": "5g", - "RegionID": 5, - "HostName": "derp5g.tailscale.com", - "IPv4": "172.105.169.57", - "IPv6": "2400:8907::2000:2fff:fea7:57f4", - "CanPort80": true - }, - { - "Name": "5e", - "RegionID": 5, - "HostName": "derp5e.tailscale.com", - "IPv4": "172.105.179.230", - "IPv6": "2400:8907::2000:ceff:fe8d:4f4e", - "CanPort80": true - } - ] - }, - "6": { - "RegionID": 6, - "RegionCode": "blr", - "RegionName": "Bengaluru", - "Latitude": 12.9716, - "Longitude": 77.5946, - "Nodes": [ - { - "Name": "6a", - "RegionID": 6, - "HostName": "derp6.tailscale.com", - "IPv4": "68.183.90.120", - "IPv6": "2400:6180:100:d0::982:d001", - "CanPort80": true - } - ] - }, - "7": { - "RegionID": 7, - "RegionCode": "tok", - "RegionName": "Tokyo", - "Latitude": 35.6764, - "Longitude": 139.65, - "Nodes": [ - { - "Name": "7g", - "RegionID": 7, - "HostName": "derp7g.tailscale.com", - "IPv4": "172.238.6.179", - "IPv6": "2600:3c18::2000:3fff:fe80:3ebd", - "CanPort80": true - }, - { - "Name": "7f", - "RegionID": 7, - "HostName": "derp7f.tailscale.com", - "IPv4": "172.238.6.34", - "IPv6": "2600:3c18::2000:acff:fe8e:3ed5", - "CanPort80": true - }, - { - "Name": "7h", - "RegionID": 7, - "HostName": "derp7h.tailscale.com", - "IPv4": "172.237.28.183", - "IPv6": "2600:3c18::2000:b1ff:fea9:4560", - "CanPort80": true - }, - { - "Name": "7e", - "RegionID": 7, - "HostName": "derp7e.tailscale.com", - "IPv4": "172.238.6.180", - "IPv6": "2600:3c18::2000:60ff:fe0f:6e83", - "STUNOnly": true, - "CanPort80": true - } - ] - }, - "8": { - "RegionID": 8, - "RegionCode": "lhr", - "RegionName": "London", - "Latitude": 51.5072, - "Longitude": 0.1276, - "Nodes": [ - { - "Name": "8f", - "RegionID": 8, - "HostName": "derp8f.tailscale.com", - "IPv4": "176.58.88.183", - "IPv6": "2a00:dd80:3a::dfa", - "CanPort80": true - }, - { - "Name": "8g", - "RegionID": 8, - "HostName": "derp8g.tailscale.com", - "IPv4": "176.58.92.254", - "IPv6": "2a00:dd80:3a::ed", - "CanPort80": true - }, - { - "Name": "8e", - "RegionID": 8, - "HostName": "derp8e.tailscale.com", - "IPv4": "176.58.92.144", - "IPv6": "2a00:dd80:3a::b33", - "CanPort80": true - } - ] - }, - "9": { - "RegionID": 9, - "RegionCode": "dfw", - "RegionName": "Dallas", - "Latitude": 32.779167, - "Longitude": -96.808889, - "Nodes": [ - { - "Name": "9e", - "RegionID": 9, - "HostName": "derp9e.tailscale.com", - "IPv4": "192.73.248.83", - "IPv6": "2607:f740:100::359", - "CanPort80": true - }, - { - "Name": "9f", - "RegionID": 9, - "HostName": "derp9f.tailscale.com", - "IPv4": "209.177.156.197", - "IPv6": "2607:f740:100::cad", - "CanPort80": true - }, - { - "Name": "9d", - "RegionID": 9, - "HostName": "derp9d.tailscale.com", - "IPv4": "209.177.156.94", - "IPv6": "2607:f740:100::c05", - "CanPort80": true - } - ] - } - } - }, - "DisplayMessages": null, - "TKAEnabled": false, - "TKAHead": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", - "Domain": "kratail2tid@passkey", - "DomainAuditLogID": "", - "UserProfiles": { - "50590507314324": { - "ID": 50590507314324, - "LoginName": "router-a.tail78f774.ts.net", - "DisplayName": "router-a" - } - } + "PacketFilterRules": null } }, "router-b": { - "commands": { - "packet_filter_rules": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/router-b/tailscaled.sock debug localapi POST debug-packet-filter-rules", - "packet_filter_matches": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/router-b/tailscaled.sock debug localapi POST debug-packet-filter-matches" - }, "packet_filter_rules": null, - "packet_filter_matches": [], - "whois": { - "100.124.195.93": { - "peer_name": "exit-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/router-b/tailscaled.sock whois --json 100.124.195.93", - "response": null - }, - "100.116.18.24": { - "peer_name": "exit-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/router-b/tailscaled.sock whois --json 100.116.18.24", - "response": null - }, - "100.85.66.106": { - "peer_name": "exit-node", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/router-b/tailscaled.sock whois --json 100.85.66.106", - "response": null - }, - "100.107.162.14": { - "peer_name": "group-a-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/router-b/tailscaled.sock whois --json 100.107.162.14", - "response": null - }, - "100.77.135.18": { - "peer_name": "group-b-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/router-b/tailscaled.sock whois --json 100.77.135.18", - "response": null - }, - "100.105.127.107": { - "peer_name": "multi-exit-router", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/router-b/tailscaled.sock whois --json 100.105.127.107", - "response": null - }, - "100.109.43.124": { - "peer_name": "router-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/router-b/tailscaled.sock whois --json 100.109.43.124", - "response": null - }, - "100.92.142.61": { - "peer_name": "subnet-router", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/router-b/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/router-b/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/router-b/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/router-b/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/router-b/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/router-b/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/router-b/tailscaled.sock whois --json 100.90.199.68", - "response": null - } - }, "netmap": { - "SelfNode": { - "ID": 1399889648409786, - "StableID": "nPHvXBj1wB11CNTRL", - "Name": "router-b.tail78f774.ts.net.", - "User": 1399889648409786, - "Key": "nodekey:4e6d3473c516cea37bcefdf4368932c623fd91c24aee1aacc27ca8165a41ac7a", - "DiscoKey": "discokey:dd5532635b8e3ddf25186e36671c16dd17c005c8b6a6862f4b5cc4e4f459e705", - "Addresses": ["100.65.172.123/32", "fd7a:115c:a1e0::5a37:ac7c/128"], - "AllowedIPs": ["100.65.172.123/32", "fd7a:115c:a1e0::5a37:ac7c/128", "10.55.0.0/16"], - "Endpoints": ["77.164.248.136:35931", "10.65.0.27:35931", "172.17.0.1:35931"], - "Hostinfo": { - "Hostname": "router-b", - "RoutableIPs": ["10.55.0.0/16"], - "RequestTags": ["tag:router-b"], - "Services": [ - { "Proto": "peerapi4", "Port": 58804 }, - { "Proto": "peerapi6", "Port": 58804 }, - { "Proto": "peerapi-dns-proxy", "Port": 1 } - ] - }, - "Created": "2026-03-28T10:38:15.42735258Z", - "Tags": ["tag:router-b"], - "PrimaryRoutes": ["10.55.0.0/16"], - "MachineAuthorized": true, - "CapMap": { - "https://tailscale.com/cap/file-sharing": null, - "https://tailscale.com/cap/is-owner": null, - "https://tailscale.com/cap/ssh": null, - "https://tailscale.com/cap/tailnet-lock": null, - "probe-udp-lifetime": null, - "ssh-behavior-v1": null, - "ssh-env-vars": null, - "store-appc-routes": null, - "tailnet-display-name": ["kratail2tid@passkey"] - }, - "ComputedName": "router-b", - "ComputedNameWithHost": "router-b" - }, - "AllCaps": [ - "ssh-behavior-v1", - "https://tailscale.com/cap/is-owner", - "https://tailscale.com/cap/ssh", - "https://tailscale.com/cap/tailnet-lock", - "store-appc-routes", - "https://tailscale.com/cap/file-sharing", - "ssh-env-vars", - "tailnet-display-name", - "probe-udp-lifetime" - ], - "NodeKey": "nodekey:4e6d3473c516cea37bcefdf4368932c623fd91c24aee1aacc27ca8165a41ac7a", - "MachineKey": "mkey:d040ca033391d3dedae7b2ad7ec3334646cda7aeca501780bdaa37addec3c228", "Peers": [], - "DNS": { - "Routes": { - "tail78f774.ts.net.": null, - "ts.net.": [{ "Addr": "199.247.155.53" }, { "Addr": "2620:111:8007::53" }] - }, - "Domains": ["tail78f774.ts.net"], - "Proxied": true, - "ExitNodeFilteredSet": [".ts.net", ".tailscale.net"] - }, - "PacketFilter": [], - "PacketFilterRules": null, - "SSHPolicy": { "rules": [] }, - "CollectServices": false, - "DERPMap": { - "Regions": { - "1": { - "RegionID": 1, - "RegionCode": "nyc", - "RegionName": "New York City", - "Latitude": 40.7128, - "Longitude": -74.006, - "Nodes": [ - { - "Name": "1h", - "RegionID": 1, - "HostName": "derp1h.tailscale.com", - "IPv4": "199.38.181.93", - "IPv6": "2607:f740:f::afd", - "CanPort80": true - }, - { - "Name": "1g", - "RegionID": 1, - "HostName": "derp1g.tailscale.com", - "IPv4": "209.177.145.120", - "IPv6": "2607:f740:f::3eb", - "CanPort80": true - }, - { - "Name": "1i", - "RegionID": 1, - "HostName": "derp1i.tailscale.com", - "IPv4": "199.38.181.103", - "IPv6": "2607:f740:f::e19", - "CanPort80": true - }, - { - "Name": "1f", - "RegionID": 1, - "HostName": "derp1f.tailscale.com", - "IPv4": "199.38.181.104", - "IPv6": "2607:f740:f::bc", - "CanPort80": true - } - ] - }, - "10": { - "RegionID": 10, - "RegionCode": "sea", - "RegionName": "Seattle", - "Latitude": 47.609722, - "Longitude": -122.333056, - "Nodes": [ - { - "Name": "10c", - "RegionID": 10, - "HostName": "derp10c.tailscale.com", - "IPv4": "192.73.240.121", - "IPv6": "2607:f740:14::40c", - "CanPort80": true - }, - { - "Name": "10d", - "RegionID": 10, - "HostName": "derp10d.tailscale.com", - "IPv4": "192.73.240.132", - "IPv6": "2607:f740:14::500", - "CanPort80": true - }, - { - "Name": "10b", - "RegionID": 10, - "HostName": "derp10b.tailscale.com", - "IPv4": "192.73.240.161", - "IPv6": "2607:f740:14::61c", - "CanPort80": true - } - ] - }, - "11": { - "RegionID": 11, - "RegionCode": "sao", - "RegionName": "São Paulo", - "Latitude": -23.55, - "Longitude": -46.633333, - "Nodes": [ - { - "Name": "11f", - "RegionID": 11, - "HostName": "derp11f.tailscale.com", - "IPv4": "172.237.61.197", - "IPv6": "2600:3c0d::2000:3bff:fe44:6166", - "CanPort80": true - }, - { - "Name": "11g", - "RegionID": 11, - "HostName": "derp11g.tailscale.com", - "IPv4": "172.237.61.190", - "IPv6": "2600:3c0d::2000:62ff:febe:2e67", - "CanPort80": true - }, - { - "Name": "11e", - "RegionID": 11, - "HostName": "derp11e.tailscale.com", - "IPv4": "172.237.61.194", - "IPv6": "2600:3c0d::2000:d2ff:fe43:1790", - "CanPort80": true - } - ] - }, - "12": { - "RegionID": 12, - "RegionCode": "ord", - "RegionName": "Chicago", - "Latitude": 41.881944, - "Longitude": -87.627778, - "Nodes": [ - { - "Name": "12e", - "RegionID": 12, - "HostName": "derp12e.tailscale.com", - "IPv4": "209.177.158.15", - "IPv6": "2607:f740:e::b17", - "CanPort80": true - }, - { - "Name": "12f", - "RegionID": 12, - "HostName": "derp12f.tailscale.com", - "IPv4": "199.38.182.118", - "IPv6": "2607:f740:e::4c8", - "CanPort80": true - }, - { - "Name": "12d", - "RegionID": 12, - "HostName": "derp12d.tailscale.com", - "IPv4": "209.177.158.246", - "IPv6": "2607:f740:e::811", - "CanPort80": true - } - ] - }, - "13": { - "RegionID": 13, - "RegionCode": "den", - "RegionName": "Denver", - "Latitude": 39.7392, - "Longitude": -104.9849, - "Nodes": [ - { - "Name": "13c", - "RegionID": 13, - "HostName": "derp13c.tailscale.com", - "IPv4": "192.73.242.28", - "IPv6": "2607:f740:16::5c", - "CanPort80": true - }, - { - "Name": "13d", - "RegionID": 13, - "HostName": "derp13d.tailscale.com", - "IPv4": "192.73.242.204", - "IPv6": "2607:f740:16::c23", - "CanPort80": true - }, - { - "Name": "13b", - "RegionID": 13, - "HostName": "derp13b.tailscale.com", - "IPv4": "192.73.242.187", - "IPv6": "2607:f740:16::640", - "CanPort80": true - } - ] - }, - "14": { - "RegionID": 14, - "RegionCode": "ams", - "RegionName": "Amsterdam", - "Latitude": 52.372778, - "Longitude": 4.893611, - "Nodes": [ - { - "Name": "14c", - "RegionID": 14, - "HostName": "derp14c.tailscale.com", - "IPv4": "176.58.93.147", - "IPv6": "2a00:dd80:3c::b09", - "CanPort80": true - }, - { - "Name": "14d", - "RegionID": 14, - "HostName": "derp14d.tailscale.com", - "IPv4": "176.58.93.154", - "IPv6": "2a00:dd80:3c::3d5", - "CanPort80": true - }, - { - "Name": "14b", - "RegionID": 14, - "HostName": "derp14b.tailscale.com", - "IPv4": "176.58.93.248", - "IPv6": "2a00:dd80:3c::807", - "CanPort80": true - } - ] - }, - "15": { - "RegionID": 15, - "RegionCode": "jnb", - "RegionName": "Johannesburg", - "Latitude": -26.204444, - "Longitude": 28.045556, - "Nodes": [ - { - "Name": "15c", - "RegionID": 15, - "HostName": "derp15c.tailscale.com", - "IPv4": "102.67.165.185", - "IPv6": "2c0f:edb0:0:10::b59", - "CanPort80": true - }, - { - "Name": "15d", - "RegionID": 15, - "HostName": "derp15d.tailscale.com", - "IPv4": "102.67.165.36", - "IPv6": "2c0f:edb0:0:10::599", - "CanPort80": true - }, - { - "Name": "15b", - "RegionID": 15, - "HostName": "derp15b.tailscale.com", - "IPv4": "102.67.165.90", - "IPv6": "2c0f:edb0:0:10::963", - "CanPort80": true - } - ] - }, - "16": { - "RegionID": 16, - "RegionCode": "mia", - "RegionName": "Miami", - "Latitude": 25.78, - "Longitude": -80.21, - "Nodes": [ - { - "Name": "16c", - "RegionID": 16, - "HostName": "derp16c.tailscale.com", - "IPv4": "192.73.243.229", - "IPv6": "2607:f740:17::4e4", - "CanPort80": true - }, - { - "Name": "16d", - "RegionID": 16, - "HostName": "derp16d.tailscale.com", - "IPv4": "192.73.243.141", - "IPv6": "2607:f740:17::475", - "CanPort80": true - }, - { - "Name": "16b", - "RegionID": 16, - "HostName": "derp16b.tailscale.com", - "IPv4": "192.73.243.135", - "IPv6": "2607:f740:17::476", - "CanPort80": true - } - ] - }, - "17": { - "RegionID": 17, - "RegionCode": "lax", - "RegionName": "Los Angeles", - "Latitude": 34.05, - "Longitude": -118.25, - "Nodes": [ - { - "Name": "17c", - "RegionID": 17, - "HostName": "derp17c.tailscale.com", - "IPv4": "208.111.40.12", - "IPv6": "2607:f740:c::10", - "CanPort80": true - }, - { - "Name": "17d", - "RegionID": 17, - "HostName": "derp17d.tailscale.com", - "IPv4": "208.111.40.216", - "IPv6": "2607:f740:c::e1b", - "CanPort80": true - }, - { - "Name": "17b", - "RegionID": 17, - "HostName": "derp17b.tailscale.com", - "IPv4": "192.73.244.245", - "IPv6": "2607:f740:c::646", - "CanPort80": true - } - ] - }, - "18": { - "RegionID": 18, - "RegionCode": "par", - "RegionName": "Paris", - "Latitude": 48.856667, - "Longitude": 2.352222, - "Nodes": [ - { - "Name": "18c", - "RegionID": 18, - "HostName": "derp18c.tailscale.com", - "IPv4": "176.58.90.207", - "IPv6": "2a00:dd80:3e::c19", - "CanPort80": true - }, - { - "Name": "18d", - "RegionID": 18, - "HostName": "derp18d.tailscale.com", - "IPv4": "176.58.90.104", - "IPv6": "2a00:dd80:3e::f2e", - "CanPort80": true - }, - { - "Name": "18b", - "RegionID": 18, - "HostName": "derp18b.tailscale.com", - "IPv4": "176.58.90.147", - "IPv6": "2a00:dd80:3e::363", - "CanPort80": true - } - ] - }, - "19": { - "RegionID": 19, - "RegionCode": "mad", - "RegionName": "Madrid", - "Latitude": 40.416944, - "Longitude": -3.703333, - "Nodes": [ - { - "Name": "19c", - "RegionID": 19, - "HostName": "derp19c.tailscale.com", - "IPv4": "45.159.97.61", - "IPv6": "2a00:dd80:14:10::20", - "CanPort80": true - }, - { - "Name": "19d", - "RegionID": 19, - "HostName": "derp19d.tailscale.com", - "IPv4": "45.159.97.233", - "IPv6": "2a00:dd80:14:10::34a", - "CanPort80": true - }, - { - "Name": "19b", - "RegionID": 19, - "HostName": "derp19b.tailscale.com", - "IPv4": "45.159.97.144", - "IPv6": "2a00:dd80:14:10::335", - "CanPort80": true - } - ] - }, - "2": { - "RegionID": 2, - "RegionCode": "sfo", - "RegionName": "San Francisco", - "Latitude": 37.7775, - "Longitude": -122.416389, - "Nodes": [ - { - "Name": "2e", - "RegionID": 2, - "HostName": "derp2e.tailscale.com", - "IPv4": "192.73.252.134", - "IPv6": "2607:f740:0:3f::44c", - "CanPort80": true - }, - { - "Name": "2f", - "RegionID": 2, - "HostName": "derp2f.tailscale.com", - "IPv4": "208.111.34.178", - "IPv6": "2607:f740:0:3f::f4", - "CanPort80": true - }, - { - "Name": "2d", - "RegionID": 2, - "HostName": "derp2d.tailscale.com", - "IPv4": "192.73.252.65", - "IPv6": "2607:f740:0:3f::287", - "CanPort80": true - } - ] - }, - "20": { - "RegionID": 20, - "RegionCode": "hkg", - "RegionName": "Hong Kong", - "Latitude": 22.3193, - "Longitude": 114.1694, - "Nodes": [ - { - "Name": "20c", - "RegionID": 20, - "HostName": "derp20c.tailscale.com", - "IPv4": "205.147.105.30", - "IPv6": "2403:2500:8000:1::5fb", - "CanPort80": true - }, - { - "Name": "20d", - "RegionID": 20, - "HostName": "derp20d.tailscale.com", - "IPv4": "205.147.105.78", - "IPv6": "2403:2500:8000:1::e9a", - "CanPort80": true - }, - { - "Name": "20b", - "RegionID": 20, - "HostName": "derp20b.tailscale.com", - "IPv4": "103.6.84.152", - "IPv6": "2403:2500:8000:1::ef6", - "CanPort80": true - } - ] - }, - "21": { - "RegionID": 21, - "RegionCode": "tor", - "RegionName": "Toronto", - "Latitude": 43.741667, - "Longitude": -79.373333, - "Nodes": [ - { - "Name": "21c", - "RegionID": 21, - "HostName": "derp21c.tailscale.com", - "IPv4": "162.248.221.215", - "IPv6": "2607:f740:50::f10", - "CanPort80": true - }, - { - "Name": "21d", - "RegionID": 21, - "HostName": "derp21d.tailscale.com", - "IPv4": "162.248.221.248", - "IPv6": "2607:f740:50::ca4", - "CanPort80": true - }, - { - "Name": "21b", - "RegionID": 21, - "HostName": "derp21b.tailscale.com", - "IPv4": "162.248.221.199", - "IPv6": "2607:f740:50::1d1", - "CanPort80": true - } - ] - }, - "22": { - "RegionID": 22, - "RegionCode": "waw", - "RegionName": "Warsaw", - "Latitude": 52.23, - "Longitude": 21.011111, - "Nodes": [ - { - "Name": "22c", - "RegionID": 22, - "HostName": "derp22c.tailscale.com", - "IPv4": "45.159.98.253", - "IPv6": "2a00:dd80:40:100::3f", - "CanPort80": true - }, - { - "Name": "22d", - "RegionID": 22, - "HostName": "derp22d.tailscale.com", - "IPv4": "45.159.98.145", - "IPv6": "2a00:dd80:40:100::211", - "CanPort80": true - }, - { - "Name": "22b", - "RegionID": 22, - "HostName": "derp22b.tailscale.com", - "IPv4": "45.159.98.196", - "IPv6": "2a00:dd80:40:100::316", - "CanPort80": true - } - ] - }, - "23": { - "RegionID": 23, - "RegionCode": "dbi", - "RegionName": "Dubai", - "Latitude": 25.263056, - "Longitude": 55.297222, - "Nodes": [ - { - "Name": "23c", - "RegionID": 23, - "HostName": "derp23c.tailscale.com", - "IPv4": "185.34.3.207", - "IPv6": "2a00:dd80:3f:100::a50", - "CanPort80": true - }, - { - "Name": "23d", - "RegionID": 23, - "HostName": "derp23d.tailscale.com", - "IPv4": "185.34.3.75", - "IPv6": "2a00:dd80:3f:100::97e", - "CanPort80": true - }, - { - "Name": "23b", - "RegionID": 23, - "HostName": "derp23b.tailscale.com", - "IPv4": "185.34.3.232", - "IPv6": "2a00:dd80:3f:100::76f", - "CanPort80": true - } - ] - }, - "24": { - "RegionID": 24, - "RegionCode": "hnl", - "RegionName": "Honolulu", - "Latitude": 21.306944, - "Longitude": -157.858333, - "Nodes": [ - { - "Name": "24c", - "RegionID": 24, - "HostName": "derp24c.tailscale.com", - "IPv4": "208.83.233.233", - "IPv6": "2001:19f0:c000:c591:5400:04ff:fe26:2c5f", - "CanPort80": true - }, - { - "Name": "24d", - "RegionID": 24, - "HostName": "derp24d.tailscale.com", - "IPv4": "208.72.155.133", - "IPv6": "2001:19f0:c000:c564:5400:04ff:fe26:2ba8", - "CanPort80": true - }, - { - "Name": "24b", - "RegionID": 24, - "HostName": "derp24b.tailscale.com", - "IPv4": "208.83.234.151", - "IPv6": "2001:19f0:c000:c586:5400:04ff:fe26:2ba6", - "CanPort80": true - } - ] - }, - "25": { - "RegionID": 25, - "RegionCode": "nai", - "RegionName": "Nairobi", - "Latitude": -1.286389, - "Longitude": 36.817222, - "Nodes": [ - { - "Name": "25c", - "RegionID": 25, - "HostName": "derp25c.tailscale.com", - "IPv4": "102.67.167.37", - "IPv6": "2c0f:edb0:2000:1::2c7", - "CanPort80": true - }, - { - "Name": "25d", - "RegionID": 25, - "HostName": "derp25d.tailscale.com", - "IPv4": "102.67.167.188", - "IPv6": "2c0f:edb0:2000:1::188", - "CanPort80": true - }, - { - "Name": "25b", - "RegionID": 25, - "HostName": "derp25b.tailscale.com", - "IPv4": "102.67.167.245", - "IPv6": "2c0f:edb0:2000:1::2e9", - "CanPort80": true - } - ] - }, - "26": { - "RegionID": 26, - "RegionCode": "nue", - "RegionName": "Nuremberg", - "Latitude": 49.453889, - "Longitude": 11.0775, - "Nodes": [ - { - "Name": "26c", - "RegionID": 26, - "HostName": "derp26c.tailscale.com", - "IPv4": "49.12.193.137", - "IPv6": "2a01:4f8:1c1c:5c70::1", - "CanPort80": true - }, - { - "Name": "26d", - "RegionID": 26, - "HostName": "derp26d.tailscale.com", - "IPv4": "49.13.204.141", - "IPv6": "2a01:4f8:1c0c:7d06::1", - "CanPort80": true - }, - { - "Name": "26b", - "RegionID": 26, - "HostName": "derp26b.tailscale.com", - "IPv4": "167.235.72.200", - "IPv6": "2a01:4f8:1c1c:47b6::1", - "CanPort80": true - } - ] - }, - "27": { - "RegionID": 27, - "RegionCode": "iad", - "RegionName": "Ashburn", - "Latitude": 39.03, - "Longitude": -77.471111, - "Nodes": [ - { - "Name": "27d", - "RegionID": 27, - "HostName": "derp27d.tailscale.com", - "IPv4": "178.156.152.106", - "IPv6": "2a01:4ff:f0:3c8e::1", - "CanPort80": true - }, - { - "Name": "27c", - "RegionID": 27, - "HostName": "derp27c.tailscale.com", - "IPv4": "178.156.152.91", - "IPv6": "2a01:4ff:f0:3913::1", - "CanPort80": true - }, - { - "Name": "27e", - "RegionID": 27, - "HostName": "derp27e.tailscale.com", - "IPv4": "178.156.134.232", - "IPv6": "2a01:4ff:f0:28d4::1", - "CanPort80": true - }, - { - "Name": "27b", - "RegionID": 27, - "HostName": "derp27b.tailscale.com", - "IPv4": "5.161.218.233", - "IPv6": "2a01:4ff:f0:3db9::1", - "CanPort80": true - } - ] - }, - "28": { - "RegionID": 28, - "RegionCode": "hel", - "RegionName": "Helsinki", - "Latitude": 60.170833, - "Longitude": 24.9375, - "Nodes": [ - { - "Name": "28c", - "RegionID": 28, - "HostName": "derp28c.tailscale.com", - "IPv4": "95.217.2.165", - "IPv6": "2a01:4f9:c012:cd74::1", - "CanPort80": true - }, - { - "Name": "28d", - "RegionID": 28, - "HostName": "derp28d.tailscale.com", - "IPv4": "157.180.28.32", - "IPv6": "2a01:4f9:c012:2e5b::1", - "CanPort80": true - }, - { - "Name": "28b", - "RegionID": 28, - "HostName": "derp28b.tailscale.com", - "IPv4": "65.109.143.62", - "IPv6": "2a01:4f9:c012:d55c::1", - "CanPort80": true - } - ] - }, - "3": { - "RegionID": 3, - "RegionCode": "sin", - "RegionName": "Singapore", - "Latitude": 1.3521, - "Longitude": 103.8198, - "Nodes": [ - { - "Name": "3g", - "RegionID": 3, - "HostName": "derp3g.tailscale.com", - "IPv4": "172.237.72.79", - "IPv6": "2600:3c15::2000:adff:fe08:6fab", - "CanPort80": true - }, - { - "Name": "3f", - "RegionID": 3, - "HostName": "derp3f.tailscale.com", - "IPv4": "172.237.72.8", - "IPv6": "2600:3c15::2000:53ff:fe48:a668", - "CanPort80": true - }, - { - "Name": "3h", - "RegionID": 3, - "HostName": "derp3h.tailscale.com", - "IPv4": "172.237.66.30", - "IPv6": "2600:3c15::2000:3dff:fe44:50aa", - "CanPort80": true - }, - { - "Name": "3e", - "RegionID": 3, - "HostName": "derp3e.tailscale.com", - "IPv4": "172.237.72.43", - "IPv6": "2600:3c15::2000:6cff:fee4:d799", - "CanPort80": true - } - ] - }, - "4": { - "RegionID": 4, - "RegionCode": "fra", - "RegionName": "Frankfurt", - "Latitude": 50.1109, - "Longitude": 8.6821, - "Nodes": [ - { - "Name": "4h", - "RegionID": 4, - "HostName": "derp4h.tailscale.com", - "IPv4": "185.40.234.77", - "IPv6": "2a00:dd80:20::bcf", - "CanPort80": true - }, - { - "Name": "4g", - "RegionID": 4, - "HostName": "derp4g.tailscale.com", - "IPv4": "185.40.234.113", - "IPv6": "2a00:dd80:20::8f", - "CanPort80": true - }, - { - "Name": "4i", - "RegionID": 4, - "HostName": "derp4i.tailscale.com", - "IPv4": "185.40.234.53", - "IPv6": "2a00:dd80:20::8a6", - "CanPort80": true - }, - { - "Name": "4f", - "RegionID": 4, - "HostName": "derp4f.tailscale.com", - "IPv4": "185.40.234.219", - "IPv6": "2a00:dd80:20::a25", - "CanPort80": true - } - ] - }, - "5": { - "RegionID": 5, - "RegionCode": "syd", - "RegionName": "Sydney", - "Latitude": -33.867778, - "Longitude": 151.21, - "Nodes": [ - { - "Name": "5f", - "RegionID": 5, - "HostName": "derp5f.tailscale.com", - "IPv4": "172.105.166.103", - "IPv6": "2400:8907::2000:ccff:fe1f:80da", - "CanPort80": true - }, - { - "Name": "5g", - "RegionID": 5, - "HostName": "derp5g.tailscale.com", - "IPv4": "172.105.169.57", - "IPv6": "2400:8907::2000:2fff:fea7:57f4", - "CanPort80": true - }, - { - "Name": "5e", - "RegionID": 5, - "HostName": "derp5e.tailscale.com", - "IPv4": "172.105.179.230", - "IPv6": "2400:8907::2000:ceff:fe8d:4f4e", - "CanPort80": true - } - ] - }, - "6": { - "RegionID": 6, - "RegionCode": "blr", - "RegionName": "Bengaluru", - "Latitude": 12.9716, - "Longitude": 77.5946, - "Nodes": [ - { - "Name": "6a", - "RegionID": 6, - "HostName": "derp6.tailscale.com", - "IPv4": "68.183.90.120", - "IPv6": "2400:6180:100:d0::982:d001", - "CanPort80": true - } - ] - }, - "7": { - "RegionID": 7, - "RegionCode": "tok", - "RegionName": "Tokyo", - "Latitude": 35.6764, - "Longitude": 139.65, - "Nodes": [ - { - "Name": "7g", - "RegionID": 7, - "HostName": "derp7g.tailscale.com", - "IPv4": "172.238.6.179", - "IPv6": "2600:3c18::2000:3fff:fe80:3ebd", - "CanPort80": true - }, - { - "Name": "7f", - "RegionID": 7, - "HostName": "derp7f.tailscale.com", - "IPv4": "172.238.6.34", - "IPv6": "2600:3c18::2000:acff:fe8e:3ed5", - "CanPort80": true - }, - { - "Name": "7h", - "RegionID": 7, - "HostName": "derp7h.tailscale.com", - "IPv4": "172.237.28.183", - "IPv6": "2600:3c18::2000:b1ff:fea9:4560", - "CanPort80": true - }, - { - "Name": "7e", - "RegionID": 7, - "HostName": "derp7e.tailscale.com", - "IPv4": "172.238.6.180", - "IPv6": "2600:3c18::2000:60ff:fe0f:6e83", - "STUNOnly": true, - "CanPort80": true - } - ] - }, - "8": { - "RegionID": 8, - "RegionCode": "lhr", - "RegionName": "London", - "Latitude": 51.5072, - "Longitude": 0.1276, - "Nodes": [ - { - "Name": "8f", - "RegionID": 8, - "HostName": "derp8f.tailscale.com", - "IPv4": "176.58.88.183", - "IPv6": "2a00:dd80:3a::dfa", - "CanPort80": true - }, - { - "Name": "8g", - "RegionID": 8, - "HostName": "derp8g.tailscale.com", - "IPv4": "176.58.92.254", - "IPv6": "2a00:dd80:3a::ed", - "CanPort80": true - }, - { - "Name": "8e", - "RegionID": 8, - "HostName": "derp8e.tailscale.com", - "IPv4": "176.58.92.144", - "IPv6": "2a00:dd80:3a::b33", - "CanPort80": true - } - ] - }, - "9": { - "RegionID": 9, - "RegionCode": "dfw", - "RegionName": "Dallas", - "Latitude": 32.779167, - "Longitude": -96.808889, - "Nodes": [ - { - "Name": "9e", - "RegionID": 9, - "HostName": "derp9e.tailscale.com", - "IPv4": "192.73.248.83", - "IPv6": "2607:f740:100::359", - "CanPort80": true - }, - { - "Name": "9f", - "RegionID": 9, - "HostName": "derp9f.tailscale.com", - "IPv4": "209.177.156.197", - "IPv6": "2607:f740:100::cad", - "CanPort80": true - }, - { - "Name": "9d", - "RegionID": 9, - "HostName": "derp9d.tailscale.com", - "IPv4": "209.177.156.94", - "IPv6": "2607:f740:100::c05", - "CanPort80": true - } - ] - } - } - }, - "DisplayMessages": null, - "TKAEnabled": false, - "TKAHead": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", - "Domain": "kratail2tid@passkey", - "DomainAuditLogID": "", - "UserProfiles": { - "1399889648409786": { - "ID": 1399889648409786, - "LoginName": "router-b.tail78f774.ts.net", - "DisplayName": "router-b" - } - } + "PacketFilterRules": 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.124.195.93": { - "peer_name": "exit-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/subnet-router/tailscaled.sock whois --json 100.124.195.93", - "response": null - }, - "100.116.18.24": { - "peer_name": "exit-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/subnet-router/tailscaled.sock whois --json 100.116.18.24", - "response": null - }, - "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.107.162.14": { - "peer_name": "group-a-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/subnet-router/tailscaled.sock whois --json 100.107.162.14", - "response": null - }, - "100.77.135.18": { - "peer_name": "group-b-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/subnet-router/tailscaled.sock whois --json 100.77.135.18", - "response": null - }, - "100.105.127.107": { - "peer_name": "multi-exit-router", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/subnet-router/tailscaled.sock whois --json 100.105.127.107", - "response": null - }, - "100.109.43.124": { - "peer_name": "router-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/subnet-router/tailscaled.sock whois --json 100.109.43.124", - "response": null - }, - "100.65.172.123": { - "peer_name": "router-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/subnet-router/tailscaled.sock whois --json 100.65.172.123", - "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 - } - }, "netmap": { - "SelfNode": { - "ID": 7489538288452506, - "StableID": "nTPEqJU2V121CNTRL", - "Name": "subnet-router.tail78f774.ts.net.", - "User": 7489538288452506, - "Key": "nodekey:887ae2351c09c3b952f1f42bdac4095ec396ebf15824a746e4193c003e9c8e3c", - "DiscoKey": "discokey:9e3167ceaf53735a2fcaa7d3a85ad3a6118274deb448326d594849275014cc56", - "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:58597", "10.65.0.27:58597", "172.17.0.1:58597"], - "Hostinfo": { - "Hostname": "subnet-router", - "RoutableIPs": ["10.33.0.0/16"], - "RequestTags": ["tag:router"], - "Services": [ - { "Proto": "peerapi4", "Port": 63250 }, - { "Proto": "peerapi6", "Port": 63250 }, - { "Proto": "peerapi-dns-proxy", "Port": 1 } - ] - }, - "Created": "2026-02-23T00:13:15.731478784Z", - "Tags": ["tag:router"], - "MachineAuthorized": true, - "CapMap": { - "https://tailscale.com/cap/file-sharing": null, - "https://tailscale.com/cap/is-owner": null, - "https://tailscale.com/cap/ssh": null, - "https://tailscale.com/cap/tailnet-lock": null, - "probe-udp-lifetime": null, - "ssh-behavior-v1": null, - "ssh-env-vars": null, - "store-appc-routes": null, - "tailnet-display-name": ["kratail2tid@passkey"] - }, - "ComputedName": "subnet-router", - "ComputedNameWithHost": "subnet-router" - }, - "AllCaps": [ - "https://tailscale.com/cap/file-sharing", - "ssh-behavior-v1", - "https://tailscale.com/cap/ssh", - "https://tailscale.com/cap/tailnet-lock", - "probe-udp-lifetime", - "tailnet-display-name", - "ssh-env-vars", - "https://tailscale.com/cap/is-owner", - "store-appc-routes" - ], - "NodeKey": "nodekey:887ae2351c09c3b952f1f42bdac4095ec396ebf15824a746e4193c003e9c8e3c", - "MachineKey": "mkey:324efa54cc51a7b4f266f6a236904c755d32b6e547a76ad3c1d1e9d348de682a", "Peers": [], - "DNS": { - "Routes": { - "tail78f774.ts.net.": null, - "ts.net.": [{ "Addr": "199.247.155.53" }, { "Addr": "2620:111:8007::53" }] - }, - "Domains": ["tail78f774.ts.net"], - "Proxied": true, - "ExitNodeFilteredSet": [".ts.net", ".tailscale.net"] - }, - "PacketFilter": [], - "PacketFilterRules": null, - "SSHPolicy": { "rules": [] }, - "CollectServices": false, - "DERPMap": { - "Regions": { - "1": { - "RegionID": 1, - "RegionCode": "nyc", - "RegionName": "New York City", - "Latitude": 40.7128, - "Longitude": -74.006, - "Nodes": [ - { - "Name": "1h", - "RegionID": 1, - "HostName": "derp1h.tailscale.com", - "IPv4": "199.38.181.93", - "IPv6": "2607:f740:f::afd", - "CanPort80": true - }, - { - "Name": "1g", - "RegionID": 1, - "HostName": "derp1g.tailscale.com", - "IPv4": "209.177.145.120", - "IPv6": "2607:f740:f::3eb", - "CanPort80": true - }, - { - "Name": "1i", - "RegionID": 1, - "HostName": "derp1i.tailscale.com", - "IPv4": "199.38.181.103", - "IPv6": "2607:f740:f::e19", - "CanPort80": true - }, - { - "Name": "1f", - "RegionID": 1, - "HostName": "derp1f.tailscale.com", - "IPv4": "199.38.181.104", - "IPv6": "2607:f740:f::bc", - "CanPort80": true - } - ] - }, - "10": { - "RegionID": 10, - "RegionCode": "sea", - "RegionName": "Seattle", - "Latitude": 47.609722, - "Longitude": -122.333056, - "Nodes": [ - { - "Name": "10c", - "RegionID": 10, - "HostName": "derp10c.tailscale.com", - "IPv4": "192.73.240.121", - "IPv6": "2607:f740:14::40c", - "CanPort80": true - }, - { - "Name": "10d", - "RegionID": 10, - "HostName": "derp10d.tailscale.com", - "IPv4": "192.73.240.132", - "IPv6": "2607:f740:14::500", - "CanPort80": true - }, - { - "Name": "10b", - "RegionID": 10, - "HostName": "derp10b.tailscale.com", - "IPv4": "192.73.240.161", - "IPv6": "2607:f740:14::61c", - "CanPort80": true - } - ] - }, - "11": { - "RegionID": 11, - "RegionCode": "sao", - "RegionName": "São Paulo", - "Latitude": -23.55, - "Longitude": -46.633333, - "Nodes": [ - { - "Name": "11f", - "RegionID": 11, - "HostName": "derp11f.tailscale.com", - "IPv4": "172.237.61.197", - "IPv6": "2600:3c0d::2000:3bff:fe44:6166", - "CanPort80": true - }, - { - "Name": "11g", - "RegionID": 11, - "HostName": "derp11g.tailscale.com", - "IPv4": "172.237.61.190", - "IPv6": "2600:3c0d::2000:62ff:febe:2e67", - "CanPort80": true - }, - { - "Name": "11e", - "RegionID": 11, - "HostName": "derp11e.tailscale.com", - "IPv4": "172.237.61.194", - "IPv6": "2600:3c0d::2000:d2ff:fe43:1790", - "CanPort80": true - } - ] - }, - "12": { - "RegionID": 12, - "RegionCode": "ord", - "RegionName": "Chicago", - "Latitude": 41.881944, - "Longitude": -87.627778, - "Nodes": [ - { - "Name": "12e", - "RegionID": 12, - "HostName": "derp12e.tailscale.com", - "IPv4": "209.177.158.15", - "IPv6": "2607:f740:e::b17", - "CanPort80": true - }, - { - "Name": "12f", - "RegionID": 12, - "HostName": "derp12f.tailscale.com", - "IPv4": "199.38.182.118", - "IPv6": "2607:f740:e::4c8", - "CanPort80": true - }, - { - "Name": "12d", - "RegionID": 12, - "HostName": "derp12d.tailscale.com", - "IPv4": "209.177.158.246", - "IPv6": "2607:f740:e::811", - "CanPort80": true - } - ] - }, - "13": { - "RegionID": 13, - "RegionCode": "den", - "RegionName": "Denver", - "Latitude": 39.7392, - "Longitude": -104.9849, - "Nodes": [ - { - "Name": "13c", - "RegionID": 13, - "HostName": "derp13c.tailscale.com", - "IPv4": "192.73.242.28", - "IPv6": "2607:f740:16::5c", - "CanPort80": true - }, - { - "Name": "13d", - "RegionID": 13, - "HostName": "derp13d.tailscale.com", - "IPv4": "192.73.242.204", - "IPv6": "2607:f740:16::c23", - "CanPort80": true - }, - { - "Name": "13b", - "RegionID": 13, - "HostName": "derp13b.tailscale.com", - "IPv4": "192.73.242.187", - "IPv6": "2607:f740:16::640", - "CanPort80": true - } - ] - }, - "14": { - "RegionID": 14, - "RegionCode": "ams", - "RegionName": "Amsterdam", - "Latitude": 52.372778, - "Longitude": 4.893611, - "Nodes": [ - { - "Name": "14c", - "RegionID": 14, - "HostName": "derp14c.tailscale.com", - "IPv4": "176.58.93.147", - "IPv6": "2a00:dd80:3c::b09", - "CanPort80": true - }, - { - "Name": "14d", - "RegionID": 14, - "HostName": "derp14d.tailscale.com", - "IPv4": "176.58.93.154", - "IPv6": "2a00:dd80:3c::3d5", - "CanPort80": true - }, - { - "Name": "14b", - "RegionID": 14, - "HostName": "derp14b.tailscale.com", - "IPv4": "176.58.93.248", - "IPv6": "2a00:dd80:3c::807", - "CanPort80": true - } - ] - }, - "15": { - "RegionID": 15, - "RegionCode": "jnb", - "RegionName": "Johannesburg", - "Latitude": -26.204444, - "Longitude": 28.045556, - "Nodes": [ - { - "Name": "15c", - "RegionID": 15, - "HostName": "derp15c.tailscale.com", - "IPv4": "102.67.165.185", - "IPv6": "2c0f:edb0:0:10::b59", - "CanPort80": true - }, - { - "Name": "15d", - "RegionID": 15, - "HostName": "derp15d.tailscale.com", - "IPv4": "102.67.165.36", - "IPv6": "2c0f:edb0:0:10::599", - "CanPort80": true - }, - { - "Name": "15b", - "RegionID": 15, - "HostName": "derp15b.tailscale.com", - "IPv4": "102.67.165.90", - "IPv6": "2c0f:edb0:0:10::963", - "CanPort80": true - } - ] - }, - "16": { - "RegionID": 16, - "RegionCode": "mia", - "RegionName": "Miami", - "Latitude": 25.78, - "Longitude": -80.21, - "Nodes": [ - { - "Name": "16c", - "RegionID": 16, - "HostName": "derp16c.tailscale.com", - "IPv4": "192.73.243.229", - "IPv6": "2607:f740:17::4e4", - "CanPort80": true - }, - { - "Name": "16d", - "RegionID": 16, - "HostName": "derp16d.tailscale.com", - "IPv4": "192.73.243.141", - "IPv6": "2607:f740:17::475", - "CanPort80": true - }, - { - "Name": "16b", - "RegionID": 16, - "HostName": "derp16b.tailscale.com", - "IPv4": "192.73.243.135", - "IPv6": "2607:f740:17::476", - "CanPort80": true - } - ] - }, - "17": { - "RegionID": 17, - "RegionCode": "lax", - "RegionName": "Los Angeles", - "Latitude": 34.05, - "Longitude": -118.25, - "Nodes": [ - { - "Name": "17c", - "RegionID": 17, - "HostName": "derp17c.tailscale.com", - "IPv4": "208.111.40.12", - "IPv6": "2607:f740:c::10", - "CanPort80": true - }, - { - "Name": "17d", - "RegionID": 17, - "HostName": "derp17d.tailscale.com", - "IPv4": "208.111.40.216", - "IPv6": "2607:f740:c::e1b", - "CanPort80": true - }, - { - "Name": "17b", - "RegionID": 17, - "HostName": "derp17b.tailscale.com", - "IPv4": "192.73.244.245", - "IPv6": "2607:f740:c::646", - "CanPort80": true - } - ] - }, - "18": { - "RegionID": 18, - "RegionCode": "par", - "RegionName": "Paris", - "Latitude": 48.856667, - "Longitude": 2.352222, - "Nodes": [ - { - "Name": "18c", - "RegionID": 18, - "HostName": "derp18c.tailscale.com", - "IPv4": "176.58.90.207", - "IPv6": "2a00:dd80:3e::c19", - "CanPort80": true - }, - { - "Name": "18d", - "RegionID": 18, - "HostName": "derp18d.tailscale.com", - "IPv4": "176.58.90.104", - "IPv6": "2a00:dd80:3e::f2e", - "CanPort80": true - }, - { - "Name": "18b", - "RegionID": 18, - "HostName": "derp18b.tailscale.com", - "IPv4": "176.58.90.147", - "IPv6": "2a00:dd80:3e::363", - "CanPort80": true - } - ] - }, - "19": { - "RegionID": 19, - "RegionCode": "mad", - "RegionName": "Madrid", - "Latitude": 40.416944, - "Longitude": -3.703333, - "Nodes": [ - { - "Name": "19c", - "RegionID": 19, - "HostName": "derp19c.tailscale.com", - "IPv4": "45.159.97.61", - "IPv6": "2a00:dd80:14:10::20", - "CanPort80": true - }, - { - "Name": "19d", - "RegionID": 19, - "HostName": "derp19d.tailscale.com", - "IPv4": "45.159.97.233", - "IPv6": "2a00:dd80:14:10::34a", - "CanPort80": true - }, - { - "Name": "19b", - "RegionID": 19, - "HostName": "derp19b.tailscale.com", - "IPv4": "45.159.97.144", - "IPv6": "2a00:dd80:14:10::335", - "CanPort80": true - } - ] - }, - "2": { - "RegionID": 2, - "RegionCode": "sfo", - "RegionName": "San Francisco", - "Latitude": 37.7775, - "Longitude": -122.416389, - "Nodes": [ - { - "Name": "2e", - "RegionID": 2, - "HostName": "derp2e.tailscale.com", - "IPv4": "192.73.252.134", - "IPv6": "2607:f740:0:3f::44c", - "CanPort80": true - }, - { - "Name": "2f", - "RegionID": 2, - "HostName": "derp2f.tailscale.com", - "IPv4": "208.111.34.178", - "IPv6": "2607:f740:0:3f::f4", - "CanPort80": true - }, - { - "Name": "2d", - "RegionID": 2, - "HostName": "derp2d.tailscale.com", - "IPv4": "192.73.252.65", - "IPv6": "2607:f740:0:3f::287", - "CanPort80": true - } - ] - }, - "20": { - "RegionID": 20, - "RegionCode": "hkg", - "RegionName": "Hong Kong", - "Latitude": 22.3193, - "Longitude": 114.1694, - "Nodes": [ - { - "Name": "20c", - "RegionID": 20, - "HostName": "derp20c.tailscale.com", - "IPv4": "205.147.105.30", - "IPv6": "2403:2500:8000:1::5fb", - "CanPort80": true - }, - { - "Name": "20d", - "RegionID": 20, - "HostName": "derp20d.tailscale.com", - "IPv4": "205.147.105.78", - "IPv6": "2403:2500:8000:1::e9a", - "CanPort80": true - }, - { - "Name": "20b", - "RegionID": 20, - "HostName": "derp20b.tailscale.com", - "IPv4": "103.6.84.152", - "IPv6": "2403:2500:8000:1::ef6", - "CanPort80": true - } - ] - }, - "21": { - "RegionID": 21, - "RegionCode": "tor", - "RegionName": "Toronto", - "Latitude": 43.741667, - "Longitude": -79.373333, - "Nodes": [ - { - "Name": "21c", - "RegionID": 21, - "HostName": "derp21c.tailscale.com", - "IPv4": "162.248.221.215", - "IPv6": "2607:f740:50::f10", - "CanPort80": true - }, - { - "Name": "21d", - "RegionID": 21, - "HostName": "derp21d.tailscale.com", - "IPv4": "162.248.221.248", - "IPv6": "2607:f740:50::ca4", - "CanPort80": true - }, - { - "Name": "21b", - "RegionID": 21, - "HostName": "derp21b.tailscale.com", - "IPv4": "162.248.221.199", - "IPv6": "2607:f740:50::1d1", - "CanPort80": true - } - ] - }, - "22": { - "RegionID": 22, - "RegionCode": "waw", - "RegionName": "Warsaw", - "Latitude": 52.23, - "Longitude": 21.011111, - "Nodes": [ - { - "Name": "22c", - "RegionID": 22, - "HostName": "derp22c.tailscale.com", - "IPv4": "45.159.98.253", - "IPv6": "2a00:dd80:40:100::3f", - "CanPort80": true - }, - { - "Name": "22d", - "RegionID": 22, - "HostName": "derp22d.tailscale.com", - "IPv4": "45.159.98.145", - "IPv6": "2a00:dd80:40:100::211", - "CanPort80": true - }, - { - "Name": "22b", - "RegionID": 22, - "HostName": "derp22b.tailscale.com", - "IPv4": "45.159.98.196", - "IPv6": "2a00:dd80:40:100::316", - "CanPort80": true - } - ] - }, - "23": { - "RegionID": 23, - "RegionCode": "dbi", - "RegionName": "Dubai", - "Latitude": 25.263056, - "Longitude": 55.297222, - "Nodes": [ - { - "Name": "23c", - "RegionID": 23, - "HostName": "derp23c.tailscale.com", - "IPv4": "185.34.3.207", - "IPv6": "2a00:dd80:3f:100::a50", - "CanPort80": true - }, - { - "Name": "23d", - "RegionID": 23, - "HostName": "derp23d.tailscale.com", - "IPv4": "185.34.3.75", - "IPv6": "2a00:dd80:3f:100::97e", - "CanPort80": true - }, - { - "Name": "23b", - "RegionID": 23, - "HostName": "derp23b.tailscale.com", - "IPv4": "185.34.3.232", - "IPv6": "2a00:dd80:3f:100::76f", - "CanPort80": true - } - ] - }, - "24": { - "RegionID": 24, - "RegionCode": "hnl", - "RegionName": "Honolulu", - "Latitude": 21.306944, - "Longitude": -157.858333, - "Nodes": [ - { - "Name": "24c", - "RegionID": 24, - "HostName": "derp24c.tailscale.com", - "IPv4": "208.83.233.233", - "IPv6": "2001:19f0:c000:c591:5400:04ff:fe26:2c5f", - "CanPort80": true - }, - { - "Name": "24d", - "RegionID": 24, - "HostName": "derp24d.tailscale.com", - "IPv4": "208.72.155.133", - "IPv6": "2001:19f0:c000:c564:5400:04ff:fe26:2ba8", - "CanPort80": true - }, - { - "Name": "24b", - "RegionID": 24, - "HostName": "derp24b.tailscale.com", - "IPv4": "208.83.234.151", - "IPv6": "2001:19f0:c000:c586:5400:04ff:fe26:2ba6", - "CanPort80": true - } - ] - }, - "25": { - "RegionID": 25, - "RegionCode": "nai", - "RegionName": "Nairobi", - "Latitude": -1.286389, - "Longitude": 36.817222, - "Nodes": [ - { - "Name": "25c", - "RegionID": 25, - "HostName": "derp25c.tailscale.com", - "IPv4": "102.67.167.37", - "IPv6": "2c0f:edb0:2000:1::2c7", - "CanPort80": true - }, - { - "Name": "25d", - "RegionID": 25, - "HostName": "derp25d.tailscale.com", - "IPv4": "102.67.167.188", - "IPv6": "2c0f:edb0:2000:1::188", - "CanPort80": true - }, - { - "Name": "25b", - "RegionID": 25, - "HostName": "derp25b.tailscale.com", - "IPv4": "102.67.167.245", - "IPv6": "2c0f:edb0:2000:1::2e9", - "CanPort80": true - } - ] - }, - "26": { - "RegionID": 26, - "RegionCode": "nue", - "RegionName": "Nuremberg", - "Latitude": 49.453889, - "Longitude": 11.0775, - "Nodes": [ - { - "Name": "26c", - "RegionID": 26, - "HostName": "derp26c.tailscale.com", - "IPv4": "49.12.193.137", - "IPv6": "2a01:4f8:1c1c:5c70::1", - "CanPort80": true - }, - { - "Name": "26d", - "RegionID": 26, - "HostName": "derp26d.tailscale.com", - "IPv4": "49.13.204.141", - "IPv6": "2a01:4f8:1c0c:7d06::1", - "CanPort80": true - }, - { - "Name": "26b", - "RegionID": 26, - "HostName": "derp26b.tailscale.com", - "IPv4": "167.235.72.200", - "IPv6": "2a01:4f8:1c1c:47b6::1", - "CanPort80": true - } - ] - }, - "27": { - "RegionID": 27, - "RegionCode": "iad", - "RegionName": "Ashburn", - "Latitude": 39.03, - "Longitude": -77.471111, - "Nodes": [ - { - "Name": "27d", - "RegionID": 27, - "HostName": "derp27d.tailscale.com", - "IPv4": "178.156.152.106", - "IPv6": "2a01:4ff:f0:3c8e::1", - "CanPort80": true - }, - { - "Name": "27c", - "RegionID": 27, - "HostName": "derp27c.tailscale.com", - "IPv4": "178.156.152.91", - "IPv6": "2a01:4ff:f0:3913::1", - "CanPort80": true - }, - { - "Name": "27e", - "RegionID": 27, - "HostName": "derp27e.tailscale.com", - "IPv4": "178.156.134.232", - "IPv6": "2a01:4ff:f0:28d4::1", - "CanPort80": true - }, - { - "Name": "27b", - "RegionID": 27, - "HostName": "derp27b.tailscale.com", - "IPv4": "5.161.218.233", - "IPv6": "2a01:4ff:f0:3db9::1", - "CanPort80": true - } - ] - }, - "28": { - "RegionID": 28, - "RegionCode": "hel", - "RegionName": "Helsinki", - "Latitude": 60.170833, - "Longitude": 24.9375, - "Nodes": [ - { - "Name": "28c", - "RegionID": 28, - "HostName": "derp28c.tailscale.com", - "IPv4": "95.217.2.165", - "IPv6": "2a01:4f9:c012:cd74::1", - "CanPort80": true - }, - { - "Name": "28d", - "RegionID": 28, - "HostName": "derp28d.tailscale.com", - "IPv4": "157.180.28.32", - "IPv6": "2a01:4f9:c012:2e5b::1", - "CanPort80": true - }, - { - "Name": "28b", - "RegionID": 28, - "HostName": "derp28b.tailscale.com", - "IPv4": "65.109.143.62", - "IPv6": "2a01:4f9:c012:d55c::1", - "CanPort80": true - } - ] - }, - "3": { - "RegionID": 3, - "RegionCode": "sin", - "RegionName": "Singapore", - "Latitude": 1.3521, - "Longitude": 103.8198, - "Nodes": [ - { - "Name": "3g", - "RegionID": 3, - "HostName": "derp3g.tailscale.com", - "IPv4": "172.237.72.79", - "IPv6": "2600:3c15::2000:adff:fe08:6fab", - "CanPort80": true - }, - { - "Name": "3f", - "RegionID": 3, - "HostName": "derp3f.tailscale.com", - "IPv4": "172.237.72.8", - "IPv6": "2600:3c15::2000:53ff:fe48:a668", - "CanPort80": true - }, - { - "Name": "3h", - "RegionID": 3, - "HostName": "derp3h.tailscale.com", - "IPv4": "172.237.66.30", - "IPv6": "2600:3c15::2000:3dff:fe44:50aa", - "CanPort80": true - }, - { - "Name": "3e", - "RegionID": 3, - "HostName": "derp3e.tailscale.com", - "IPv4": "172.237.72.43", - "IPv6": "2600:3c15::2000:6cff:fee4:d799", - "CanPort80": true - } - ] - }, - "4": { - "RegionID": 4, - "RegionCode": "fra", - "RegionName": "Frankfurt", - "Latitude": 50.1109, - "Longitude": 8.6821, - "Nodes": [ - { - "Name": "4h", - "RegionID": 4, - "HostName": "derp4h.tailscale.com", - "IPv4": "185.40.234.77", - "IPv6": "2a00:dd80:20::bcf", - "CanPort80": true - }, - { - "Name": "4g", - "RegionID": 4, - "HostName": "derp4g.tailscale.com", - "IPv4": "185.40.234.113", - "IPv6": "2a00:dd80:20::8f", - "CanPort80": true - }, - { - "Name": "4i", - "RegionID": 4, - "HostName": "derp4i.tailscale.com", - "IPv4": "185.40.234.53", - "IPv6": "2a00:dd80:20::8a6", - "CanPort80": true - }, - { - "Name": "4f", - "RegionID": 4, - "HostName": "derp4f.tailscale.com", - "IPv4": "185.40.234.219", - "IPv6": "2a00:dd80:20::a25", - "CanPort80": true - } - ] - }, - "5": { - "RegionID": 5, - "RegionCode": "syd", - "RegionName": "Sydney", - "Latitude": -33.867778, - "Longitude": 151.21, - "Nodes": [ - { - "Name": "5f", - "RegionID": 5, - "HostName": "derp5f.tailscale.com", - "IPv4": "172.105.166.103", - "IPv6": "2400:8907::2000:ccff:fe1f:80da", - "CanPort80": true - }, - { - "Name": "5g", - "RegionID": 5, - "HostName": "derp5g.tailscale.com", - "IPv4": "172.105.169.57", - "IPv6": "2400:8907::2000:2fff:fea7:57f4", - "CanPort80": true - }, - { - "Name": "5e", - "RegionID": 5, - "HostName": "derp5e.tailscale.com", - "IPv4": "172.105.179.230", - "IPv6": "2400:8907::2000:ceff:fe8d:4f4e", - "CanPort80": true - } - ] - }, - "6": { - "RegionID": 6, - "RegionCode": "blr", - "RegionName": "Bengaluru", - "Latitude": 12.9716, - "Longitude": 77.5946, - "Nodes": [ - { - "Name": "6a", - "RegionID": 6, - "HostName": "derp6.tailscale.com", - "IPv4": "68.183.90.120", - "IPv6": "2400:6180:100:d0::982:d001", - "CanPort80": true - } - ] - }, - "7": { - "RegionID": 7, - "RegionCode": "tok", - "RegionName": "Tokyo", - "Latitude": 35.6764, - "Longitude": 139.65, - "Nodes": [ - { - "Name": "7g", - "RegionID": 7, - "HostName": "derp7g.tailscale.com", - "IPv4": "172.238.6.179", - "IPv6": "2600:3c18::2000:3fff:fe80:3ebd", - "CanPort80": true - }, - { - "Name": "7f", - "RegionID": 7, - "HostName": "derp7f.tailscale.com", - "IPv4": "172.238.6.34", - "IPv6": "2600:3c18::2000:acff:fe8e:3ed5", - "CanPort80": true - }, - { - "Name": "7h", - "RegionID": 7, - "HostName": "derp7h.tailscale.com", - "IPv4": "172.237.28.183", - "IPv6": "2600:3c18::2000:b1ff:fea9:4560", - "CanPort80": true - }, - { - "Name": "7e", - "RegionID": 7, - "HostName": "derp7e.tailscale.com", - "IPv4": "172.238.6.180", - "IPv6": "2600:3c18::2000:60ff:fe0f:6e83", - "STUNOnly": true, - "CanPort80": true - } - ] - }, - "8": { - "RegionID": 8, - "RegionCode": "lhr", - "RegionName": "London", - "Latitude": 51.5072, - "Longitude": 0.1276, - "Nodes": [ - { - "Name": "8f", - "RegionID": 8, - "HostName": "derp8f.tailscale.com", - "IPv4": "176.58.88.183", - "IPv6": "2a00:dd80:3a::dfa", - "CanPort80": true - }, - { - "Name": "8g", - "RegionID": 8, - "HostName": "derp8g.tailscale.com", - "IPv4": "176.58.92.254", - "IPv6": "2a00:dd80:3a::ed", - "CanPort80": true - }, - { - "Name": "8e", - "RegionID": 8, - "HostName": "derp8e.tailscale.com", - "IPv4": "176.58.92.144", - "IPv6": "2a00:dd80:3a::b33", - "CanPort80": true - } - ] - }, - "9": { - "RegionID": 9, - "RegionCode": "dfw", - "RegionName": "Dallas", - "Latitude": 32.779167, - "Longitude": -96.808889, - "Nodes": [ - { - "Name": "9e", - "RegionID": 9, - "HostName": "derp9e.tailscale.com", - "IPv4": "192.73.248.83", - "IPv6": "2607:f740:100::359", - "CanPort80": true - }, - { - "Name": "9f", - "RegionID": 9, - "HostName": "derp9f.tailscale.com", - "IPv4": "209.177.156.197", - "IPv6": "2607:f740:100::cad", - "CanPort80": true - }, - { - "Name": "9d", - "RegionID": 9, - "HostName": "derp9d.tailscale.com", - "IPv4": "209.177.156.94", - "IPv6": "2607:f740:100::c05", - "CanPort80": true - } - ] - } - } - }, - "DisplayMessages": null, - "TKAEnabled": false, - "TKAHead": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", - "Domain": "kratail2tid@passkey", - "DomainAuditLogID": "", - "UserProfiles": { - "7489538288452506": { - "ID": 7489538288452506, - "LoginName": "subnet-router.tail78f774.ts.net", - "DisplayName": "subnet-router" - } - } + "PacketFilterRules": 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.124.195.93": { - "peer_name": "exit-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-client/tailscaled.sock whois --json 100.124.195.93", - "response": null - }, - "100.116.18.24": { - "peer_name": "exit-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-client/tailscaled.sock whois --json 100.116.18.24", - "response": null - }, - "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.107.162.14": { - "peer_name": "group-a-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-client/tailscaled.sock whois --json 100.107.162.14", - "response": null - }, - "100.77.135.18": { - "peer_name": "group-b-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-client/tailscaled.sock whois --json 100.77.135.18", - "response": null - }, - "100.105.127.107": { - "peer_name": "multi-exit-router", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-client/tailscaled.sock whois --json 100.105.127.107", - "response": null - }, - "100.109.43.124": { - "peer_name": "router-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-client/tailscaled.sock whois --json 100.109.43.124", - "response": null - }, - "100.65.172.123": { - "peer_name": "router-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-client/tailscaled.sock whois --json 100.65.172.123", - "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 - } - }, "netmap": { - "SelfNode": { - "ID": 4031348162889210, - "StableID": "nf7BTTgoUY11CNTRL", - "Name": "tagged-client.tail78f774.ts.net.", - "User": 4031348162889210, - "Key": "nodekey:3011e53353e49142ea56ae11f81e0dceae0d667093d04ee086dcb1e9c5d3c844", - "DiscoKey": "discokey:64af337a7e8b61dce500da3b8f7d0a95fc6fe0e57c2f9e57b9b484a9b4acbe1e", - "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:47143", "10.65.0.27:47143", "172.17.0.1:47143"], - "Hostinfo": { - "Hostname": "tagged-client", - "RequestTags": ["tag:client"], - "Services": [ - { "Proto": "peerapi4", "Port": 41378 }, - { "Proto": "peerapi6", "Port": 41378 }, - { "Proto": "peerapi-dns-proxy", "Port": 1 } - ] - }, - "Created": "2026-02-23T00:13:11.017324028Z", - "Tags": ["tag:client"], - "MachineAuthorized": true, - "CapMap": { - "https://tailscale.com/cap/file-sharing": null, - "https://tailscale.com/cap/is-owner": null, - "https://tailscale.com/cap/ssh": null, - "https://tailscale.com/cap/tailnet-lock": null, - "probe-udp-lifetime": null, - "ssh-behavior-v1": null, - "ssh-env-vars": null, - "store-appc-routes": null, - "tailnet-display-name": ["kratail2tid@passkey"] - }, - "ComputedName": "tagged-client", - "ComputedNameWithHost": "tagged-client" - }, - "AllCaps": [ - "https://tailscale.com/cap/is-owner", - "store-appc-routes", - "https://tailscale.com/cap/ssh", - "probe-udp-lifetime", - "https://tailscale.com/cap/file-sharing", - "ssh-behavior-v1", - "https://tailscale.com/cap/tailnet-lock", - "ssh-env-vars", - "tailnet-display-name" - ], - "NodeKey": "nodekey:3011e53353e49142ea56ae11f81e0dceae0d667093d04ee086dcb1e9c5d3c844", - "MachineKey": "mkey:92af46ce21e67878315fe620545c207854ab6cec2d03adc106c50f64f9692711", "Peers": [], - "DNS": { - "Routes": { - "tail78f774.ts.net.": null, - "ts.net.": [{ "Addr": "199.247.155.53" }, { "Addr": "2620:111:8007::53" }] - }, - "Domains": ["tail78f774.ts.net"], - "Proxied": true, - "ExitNodeFilteredSet": [".ts.net", ".tailscale.net"] - }, - "PacketFilter": [], - "PacketFilterRules": null, - "SSHPolicy": { "rules": [] }, - "CollectServices": false, - "DERPMap": { - "Regions": { - "1": { - "RegionID": 1, - "RegionCode": "nyc", - "RegionName": "New York City", - "Latitude": 40.7128, - "Longitude": -74.006, - "Nodes": [ - { - "Name": "1h", - "RegionID": 1, - "HostName": "derp1h.tailscale.com", - "IPv4": "199.38.181.93", - "IPv6": "2607:f740:f::afd", - "CanPort80": true - }, - { - "Name": "1g", - "RegionID": 1, - "HostName": "derp1g.tailscale.com", - "IPv4": "209.177.145.120", - "IPv6": "2607:f740:f::3eb", - "CanPort80": true - }, - { - "Name": "1i", - "RegionID": 1, - "HostName": "derp1i.tailscale.com", - "IPv4": "199.38.181.103", - "IPv6": "2607:f740:f::e19", - "CanPort80": true - }, - { - "Name": "1f", - "RegionID": 1, - "HostName": "derp1f.tailscale.com", - "IPv4": "199.38.181.104", - "IPv6": "2607:f740:f::bc", - "CanPort80": true - } - ] - }, - "10": { - "RegionID": 10, - "RegionCode": "sea", - "RegionName": "Seattle", - "Latitude": 47.609722, - "Longitude": -122.333056, - "Nodes": [ - { - "Name": "10c", - "RegionID": 10, - "HostName": "derp10c.tailscale.com", - "IPv4": "192.73.240.121", - "IPv6": "2607:f740:14::40c", - "CanPort80": true - }, - { - "Name": "10d", - "RegionID": 10, - "HostName": "derp10d.tailscale.com", - "IPv4": "192.73.240.132", - "IPv6": "2607:f740:14::500", - "CanPort80": true - }, - { - "Name": "10b", - "RegionID": 10, - "HostName": "derp10b.tailscale.com", - "IPv4": "192.73.240.161", - "IPv6": "2607:f740:14::61c", - "CanPort80": true - } - ] - }, - "11": { - "RegionID": 11, - "RegionCode": "sao", - "RegionName": "São Paulo", - "Latitude": -23.55, - "Longitude": -46.633333, - "Nodes": [ - { - "Name": "11f", - "RegionID": 11, - "HostName": "derp11f.tailscale.com", - "IPv4": "172.237.61.197", - "IPv6": "2600:3c0d::2000:3bff:fe44:6166", - "CanPort80": true - }, - { - "Name": "11g", - "RegionID": 11, - "HostName": "derp11g.tailscale.com", - "IPv4": "172.237.61.190", - "IPv6": "2600:3c0d::2000:62ff:febe:2e67", - "CanPort80": true - }, - { - "Name": "11e", - "RegionID": 11, - "HostName": "derp11e.tailscale.com", - "IPv4": "172.237.61.194", - "IPv6": "2600:3c0d::2000:d2ff:fe43:1790", - "CanPort80": true - } - ] - }, - "12": { - "RegionID": 12, - "RegionCode": "ord", - "RegionName": "Chicago", - "Latitude": 41.881944, - "Longitude": -87.627778, - "Nodes": [ - { - "Name": "12e", - "RegionID": 12, - "HostName": "derp12e.tailscale.com", - "IPv4": "209.177.158.15", - "IPv6": "2607:f740:e::b17", - "CanPort80": true - }, - { - "Name": "12f", - "RegionID": 12, - "HostName": "derp12f.tailscale.com", - "IPv4": "199.38.182.118", - "IPv6": "2607:f740:e::4c8", - "CanPort80": true - }, - { - "Name": "12d", - "RegionID": 12, - "HostName": "derp12d.tailscale.com", - "IPv4": "209.177.158.246", - "IPv6": "2607:f740:e::811", - "CanPort80": true - } - ] - }, - "13": { - "RegionID": 13, - "RegionCode": "den", - "RegionName": "Denver", - "Latitude": 39.7392, - "Longitude": -104.9849, - "Nodes": [ - { - "Name": "13c", - "RegionID": 13, - "HostName": "derp13c.tailscale.com", - "IPv4": "192.73.242.28", - "IPv6": "2607:f740:16::5c", - "CanPort80": true - }, - { - "Name": "13d", - "RegionID": 13, - "HostName": "derp13d.tailscale.com", - "IPv4": "192.73.242.204", - "IPv6": "2607:f740:16::c23", - "CanPort80": true - }, - { - "Name": "13b", - "RegionID": 13, - "HostName": "derp13b.tailscale.com", - "IPv4": "192.73.242.187", - "IPv6": "2607:f740:16::640", - "CanPort80": true - } - ] - }, - "14": { - "RegionID": 14, - "RegionCode": "ams", - "RegionName": "Amsterdam", - "Latitude": 52.372778, - "Longitude": 4.893611, - "Nodes": [ - { - "Name": "14c", - "RegionID": 14, - "HostName": "derp14c.tailscale.com", - "IPv4": "176.58.93.147", - "IPv6": "2a00:dd80:3c::b09", - "CanPort80": true - }, - { - "Name": "14d", - "RegionID": 14, - "HostName": "derp14d.tailscale.com", - "IPv4": "176.58.93.154", - "IPv6": "2a00:dd80:3c::3d5", - "CanPort80": true - }, - { - "Name": "14b", - "RegionID": 14, - "HostName": "derp14b.tailscale.com", - "IPv4": "176.58.93.248", - "IPv6": "2a00:dd80:3c::807", - "CanPort80": true - } - ] - }, - "15": { - "RegionID": 15, - "RegionCode": "jnb", - "RegionName": "Johannesburg", - "Latitude": -26.204444, - "Longitude": 28.045556, - "Nodes": [ - { - "Name": "15c", - "RegionID": 15, - "HostName": "derp15c.tailscale.com", - "IPv4": "102.67.165.185", - "IPv6": "2c0f:edb0:0:10::b59", - "CanPort80": true - }, - { - "Name": "15d", - "RegionID": 15, - "HostName": "derp15d.tailscale.com", - "IPv4": "102.67.165.36", - "IPv6": "2c0f:edb0:0:10::599", - "CanPort80": true - }, - { - "Name": "15b", - "RegionID": 15, - "HostName": "derp15b.tailscale.com", - "IPv4": "102.67.165.90", - "IPv6": "2c0f:edb0:0:10::963", - "CanPort80": true - } - ] - }, - "16": { - "RegionID": 16, - "RegionCode": "mia", - "RegionName": "Miami", - "Latitude": 25.78, - "Longitude": -80.21, - "Nodes": [ - { - "Name": "16c", - "RegionID": 16, - "HostName": "derp16c.tailscale.com", - "IPv4": "192.73.243.229", - "IPv6": "2607:f740:17::4e4", - "CanPort80": true - }, - { - "Name": "16d", - "RegionID": 16, - "HostName": "derp16d.tailscale.com", - "IPv4": "192.73.243.141", - "IPv6": "2607:f740:17::475", - "CanPort80": true - }, - { - "Name": "16b", - "RegionID": 16, - "HostName": "derp16b.tailscale.com", - "IPv4": "192.73.243.135", - "IPv6": "2607:f740:17::476", - "CanPort80": true - } - ] - }, - "17": { - "RegionID": 17, - "RegionCode": "lax", - "RegionName": "Los Angeles", - "Latitude": 34.05, - "Longitude": -118.25, - "Nodes": [ - { - "Name": "17c", - "RegionID": 17, - "HostName": "derp17c.tailscale.com", - "IPv4": "208.111.40.12", - "IPv6": "2607:f740:c::10", - "CanPort80": true - }, - { - "Name": "17d", - "RegionID": 17, - "HostName": "derp17d.tailscale.com", - "IPv4": "208.111.40.216", - "IPv6": "2607:f740:c::e1b", - "CanPort80": true - }, - { - "Name": "17b", - "RegionID": 17, - "HostName": "derp17b.tailscale.com", - "IPv4": "192.73.244.245", - "IPv6": "2607:f740:c::646", - "CanPort80": true - } - ] - }, - "18": { - "RegionID": 18, - "RegionCode": "par", - "RegionName": "Paris", - "Latitude": 48.856667, - "Longitude": 2.352222, - "Nodes": [ - { - "Name": "18c", - "RegionID": 18, - "HostName": "derp18c.tailscale.com", - "IPv4": "176.58.90.207", - "IPv6": "2a00:dd80:3e::c19", - "CanPort80": true - }, - { - "Name": "18d", - "RegionID": 18, - "HostName": "derp18d.tailscale.com", - "IPv4": "176.58.90.104", - "IPv6": "2a00:dd80:3e::f2e", - "CanPort80": true - }, - { - "Name": "18b", - "RegionID": 18, - "HostName": "derp18b.tailscale.com", - "IPv4": "176.58.90.147", - "IPv6": "2a00:dd80:3e::363", - "CanPort80": true - } - ] - }, - "19": { - "RegionID": 19, - "RegionCode": "mad", - "RegionName": "Madrid", - "Latitude": 40.416944, - "Longitude": -3.703333, - "Nodes": [ - { - "Name": "19c", - "RegionID": 19, - "HostName": "derp19c.tailscale.com", - "IPv4": "45.159.97.61", - "IPv6": "2a00:dd80:14:10::20", - "CanPort80": true - }, - { - "Name": "19d", - "RegionID": 19, - "HostName": "derp19d.tailscale.com", - "IPv4": "45.159.97.233", - "IPv6": "2a00:dd80:14:10::34a", - "CanPort80": true - }, - { - "Name": "19b", - "RegionID": 19, - "HostName": "derp19b.tailscale.com", - "IPv4": "45.159.97.144", - "IPv6": "2a00:dd80:14:10::335", - "CanPort80": true - } - ] - }, - "2": { - "RegionID": 2, - "RegionCode": "sfo", - "RegionName": "San Francisco", - "Latitude": 37.7775, - "Longitude": -122.416389, - "Nodes": [ - { - "Name": "2e", - "RegionID": 2, - "HostName": "derp2e.tailscale.com", - "IPv4": "192.73.252.134", - "IPv6": "2607:f740:0:3f::44c", - "CanPort80": true - }, - { - "Name": "2f", - "RegionID": 2, - "HostName": "derp2f.tailscale.com", - "IPv4": "208.111.34.178", - "IPv6": "2607:f740:0:3f::f4", - "CanPort80": true - }, - { - "Name": "2d", - "RegionID": 2, - "HostName": "derp2d.tailscale.com", - "IPv4": "192.73.252.65", - "IPv6": "2607:f740:0:3f::287", - "CanPort80": true - } - ] - }, - "20": { - "RegionID": 20, - "RegionCode": "hkg", - "RegionName": "Hong Kong", - "Latitude": 22.3193, - "Longitude": 114.1694, - "Nodes": [ - { - "Name": "20c", - "RegionID": 20, - "HostName": "derp20c.tailscale.com", - "IPv4": "205.147.105.30", - "IPv6": "2403:2500:8000:1::5fb", - "CanPort80": true - }, - { - "Name": "20d", - "RegionID": 20, - "HostName": "derp20d.tailscale.com", - "IPv4": "205.147.105.78", - "IPv6": "2403:2500:8000:1::e9a", - "CanPort80": true - }, - { - "Name": "20b", - "RegionID": 20, - "HostName": "derp20b.tailscale.com", - "IPv4": "103.6.84.152", - "IPv6": "2403:2500:8000:1::ef6", - "CanPort80": true - } - ] - }, - "21": { - "RegionID": 21, - "RegionCode": "tor", - "RegionName": "Toronto", - "Latitude": 43.741667, - "Longitude": -79.373333, - "Nodes": [ - { - "Name": "21c", - "RegionID": 21, - "HostName": "derp21c.tailscale.com", - "IPv4": "162.248.221.215", - "IPv6": "2607:f740:50::f10", - "CanPort80": true - }, - { - "Name": "21d", - "RegionID": 21, - "HostName": "derp21d.tailscale.com", - "IPv4": "162.248.221.248", - "IPv6": "2607:f740:50::ca4", - "CanPort80": true - }, - { - "Name": "21b", - "RegionID": 21, - "HostName": "derp21b.tailscale.com", - "IPv4": "162.248.221.199", - "IPv6": "2607:f740:50::1d1", - "CanPort80": true - } - ] - }, - "22": { - "RegionID": 22, - "RegionCode": "waw", - "RegionName": "Warsaw", - "Latitude": 52.23, - "Longitude": 21.011111, - "Nodes": [ - { - "Name": "22c", - "RegionID": 22, - "HostName": "derp22c.tailscale.com", - "IPv4": "45.159.98.253", - "IPv6": "2a00:dd80:40:100::3f", - "CanPort80": true - }, - { - "Name": "22d", - "RegionID": 22, - "HostName": "derp22d.tailscale.com", - "IPv4": "45.159.98.145", - "IPv6": "2a00:dd80:40:100::211", - "CanPort80": true - }, - { - "Name": "22b", - "RegionID": 22, - "HostName": "derp22b.tailscale.com", - "IPv4": "45.159.98.196", - "IPv6": "2a00:dd80:40:100::316", - "CanPort80": true - } - ] - }, - "23": { - "RegionID": 23, - "RegionCode": "dbi", - "RegionName": "Dubai", - "Latitude": 25.263056, - "Longitude": 55.297222, - "Nodes": [ - { - "Name": "23c", - "RegionID": 23, - "HostName": "derp23c.tailscale.com", - "IPv4": "185.34.3.207", - "IPv6": "2a00:dd80:3f:100::a50", - "CanPort80": true - }, - { - "Name": "23d", - "RegionID": 23, - "HostName": "derp23d.tailscale.com", - "IPv4": "185.34.3.75", - "IPv6": "2a00:dd80:3f:100::97e", - "CanPort80": true - }, - { - "Name": "23b", - "RegionID": 23, - "HostName": "derp23b.tailscale.com", - "IPv4": "185.34.3.232", - "IPv6": "2a00:dd80:3f:100::76f", - "CanPort80": true - } - ] - }, - "24": { - "RegionID": 24, - "RegionCode": "hnl", - "RegionName": "Honolulu", - "Latitude": 21.306944, - "Longitude": -157.858333, - "Nodes": [ - { - "Name": "24c", - "RegionID": 24, - "HostName": "derp24c.tailscale.com", - "IPv4": "208.83.233.233", - "IPv6": "2001:19f0:c000:c591:5400:04ff:fe26:2c5f", - "CanPort80": true - }, - { - "Name": "24d", - "RegionID": 24, - "HostName": "derp24d.tailscale.com", - "IPv4": "208.72.155.133", - "IPv6": "2001:19f0:c000:c564:5400:04ff:fe26:2ba8", - "CanPort80": true - }, - { - "Name": "24b", - "RegionID": 24, - "HostName": "derp24b.tailscale.com", - "IPv4": "208.83.234.151", - "IPv6": "2001:19f0:c000:c586:5400:04ff:fe26:2ba6", - "CanPort80": true - } - ] - }, - "25": { - "RegionID": 25, - "RegionCode": "nai", - "RegionName": "Nairobi", - "Latitude": -1.286389, - "Longitude": 36.817222, - "Nodes": [ - { - "Name": "25c", - "RegionID": 25, - "HostName": "derp25c.tailscale.com", - "IPv4": "102.67.167.37", - "IPv6": "2c0f:edb0:2000:1::2c7", - "CanPort80": true - }, - { - "Name": "25d", - "RegionID": 25, - "HostName": "derp25d.tailscale.com", - "IPv4": "102.67.167.188", - "IPv6": "2c0f:edb0:2000:1::188", - "CanPort80": true - }, - { - "Name": "25b", - "RegionID": 25, - "HostName": "derp25b.tailscale.com", - "IPv4": "102.67.167.245", - "IPv6": "2c0f:edb0:2000:1::2e9", - "CanPort80": true - } - ] - }, - "26": { - "RegionID": 26, - "RegionCode": "nue", - "RegionName": "Nuremberg", - "Latitude": 49.453889, - "Longitude": 11.0775, - "Nodes": [ - { - "Name": "26c", - "RegionID": 26, - "HostName": "derp26c.tailscale.com", - "IPv4": "49.12.193.137", - "IPv6": "2a01:4f8:1c1c:5c70::1", - "CanPort80": true - }, - { - "Name": "26d", - "RegionID": 26, - "HostName": "derp26d.tailscale.com", - "IPv4": "49.13.204.141", - "IPv6": "2a01:4f8:1c0c:7d06::1", - "CanPort80": true - }, - { - "Name": "26b", - "RegionID": 26, - "HostName": "derp26b.tailscale.com", - "IPv4": "167.235.72.200", - "IPv6": "2a01:4f8:1c1c:47b6::1", - "CanPort80": true - } - ] - }, - "27": { - "RegionID": 27, - "RegionCode": "iad", - "RegionName": "Ashburn", - "Latitude": 39.03, - "Longitude": -77.471111, - "Nodes": [ - { - "Name": "27d", - "RegionID": 27, - "HostName": "derp27d.tailscale.com", - "IPv4": "178.156.152.106", - "IPv6": "2a01:4ff:f0:3c8e::1", - "CanPort80": true - }, - { - "Name": "27c", - "RegionID": 27, - "HostName": "derp27c.tailscale.com", - "IPv4": "178.156.152.91", - "IPv6": "2a01:4ff:f0:3913::1", - "CanPort80": true - }, - { - "Name": "27e", - "RegionID": 27, - "HostName": "derp27e.tailscale.com", - "IPv4": "178.156.134.232", - "IPv6": "2a01:4ff:f0:28d4::1", - "CanPort80": true - }, - { - "Name": "27b", - "RegionID": 27, - "HostName": "derp27b.tailscale.com", - "IPv4": "5.161.218.233", - "IPv6": "2a01:4ff:f0:3db9::1", - "CanPort80": true - } - ] - }, - "28": { - "RegionID": 28, - "RegionCode": "hel", - "RegionName": "Helsinki", - "Latitude": 60.170833, - "Longitude": 24.9375, - "Nodes": [ - { - "Name": "28c", - "RegionID": 28, - "HostName": "derp28c.tailscale.com", - "IPv4": "95.217.2.165", - "IPv6": "2a01:4f9:c012:cd74::1", - "CanPort80": true - }, - { - "Name": "28d", - "RegionID": 28, - "HostName": "derp28d.tailscale.com", - "IPv4": "157.180.28.32", - "IPv6": "2a01:4f9:c012:2e5b::1", - "CanPort80": true - }, - { - "Name": "28b", - "RegionID": 28, - "HostName": "derp28b.tailscale.com", - "IPv4": "65.109.143.62", - "IPv6": "2a01:4f9:c012:d55c::1", - "CanPort80": true - } - ] - }, - "3": { - "RegionID": 3, - "RegionCode": "sin", - "RegionName": "Singapore", - "Latitude": 1.3521, - "Longitude": 103.8198, - "Nodes": [ - { - "Name": "3g", - "RegionID": 3, - "HostName": "derp3g.tailscale.com", - "IPv4": "172.237.72.79", - "IPv6": "2600:3c15::2000:adff:fe08:6fab", - "CanPort80": true - }, - { - "Name": "3f", - "RegionID": 3, - "HostName": "derp3f.tailscale.com", - "IPv4": "172.237.72.8", - "IPv6": "2600:3c15::2000:53ff:fe48:a668", - "CanPort80": true - }, - { - "Name": "3h", - "RegionID": 3, - "HostName": "derp3h.tailscale.com", - "IPv4": "172.237.66.30", - "IPv6": "2600:3c15::2000:3dff:fe44:50aa", - "CanPort80": true - }, - { - "Name": "3e", - "RegionID": 3, - "HostName": "derp3e.tailscale.com", - "IPv4": "172.237.72.43", - "IPv6": "2600:3c15::2000:6cff:fee4:d799", - "CanPort80": true - } - ] - }, - "4": { - "RegionID": 4, - "RegionCode": "fra", - "RegionName": "Frankfurt", - "Latitude": 50.1109, - "Longitude": 8.6821, - "Nodes": [ - { - "Name": "4h", - "RegionID": 4, - "HostName": "derp4h.tailscale.com", - "IPv4": "185.40.234.77", - "IPv6": "2a00:dd80:20::bcf", - "CanPort80": true - }, - { - "Name": "4g", - "RegionID": 4, - "HostName": "derp4g.tailscale.com", - "IPv4": "185.40.234.113", - "IPv6": "2a00:dd80:20::8f", - "CanPort80": true - }, - { - "Name": "4i", - "RegionID": 4, - "HostName": "derp4i.tailscale.com", - "IPv4": "185.40.234.53", - "IPv6": "2a00:dd80:20::8a6", - "CanPort80": true - }, - { - "Name": "4f", - "RegionID": 4, - "HostName": "derp4f.tailscale.com", - "IPv4": "185.40.234.219", - "IPv6": "2a00:dd80:20::a25", - "CanPort80": true - } - ] - }, - "5": { - "RegionID": 5, - "RegionCode": "syd", - "RegionName": "Sydney", - "Latitude": -33.867778, - "Longitude": 151.21, - "Nodes": [ - { - "Name": "5f", - "RegionID": 5, - "HostName": "derp5f.tailscale.com", - "IPv4": "172.105.166.103", - "IPv6": "2400:8907::2000:ccff:fe1f:80da", - "CanPort80": true - }, - { - "Name": "5g", - "RegionID": 5, - "HostName": "derp5g.tailscale.com", - "IPv4": "172.105.169.57", - "IPv6": "2400:8907::2000:2fff:fea7:57f4", - "CanPort80": true - }, - { - "Name": "5e", - "RegionID": 5, - "HostName": "derp5e.tailscale.com", - "IPv4": "172.105.179.230", - "IPv6": "2400:8907::2000:ceff:fe8d:4f4e", - "CanPort80": true - } - ] - }, - "6": { - "RegionID": 6, - "RegionCode": "blr", - "RegionName": "Bengaluru", - "Latitude": 12.9716, - "Longitude": 77.5946, - "Nodes": [ - { - "Name": "6a", - "RegionID": 6, - "HostName": "derp6.tailscale.com", - "IPv4": "68.183.90.120", - "IPv6": "2400:6180:100:d0::982:d001", - "CanPort80": true - } - ] - }, - "7": { - "RegionID": 7, - "RegionCode": "tok", - "RegionName": "Tokyo", - "Latitude": 35.6764, - "Longitude": 139.65, - "Nodes": [ - { - "Name": "7g", - "RegionID": 7, - "HostName": "derp7g.tailscale.com", - "IPv4": "172.238.6.179", - "IPv6": "2600:3c18::2000:3fff:fe80:3ebd", - "CanPort80": true - }, - { - "Name": "7f", - "RegionID": 7, - "HostName": "derp7f.tailscale.com", - "IPv4": "172.238.6.34", - "IPv6": "2600:3c18::2000:acff:fe8e:3ed5", - "CanPort80": true - }, - { - "Name": "7h", - "RegionID": 7, - "HostName": "derp7h.tailscale.com", - "IPv4": "172.237.28.183", - "IPv6": "2600:3c18::2000:b1ff:fea9:4560", - "CanPort80": true - }, - { - "Name": "7e", - "RegionID": 7, - "HostName": "derp7e.tailscale.com", - "IPv4": "172.238.6.180", - "IPv6": "2600:3c18::2000:60ff:fe0f:6e83", - "STUNOnly": true, - "CanPort80": true - } - ] - }, - "8": { - "RegionID": 8, - "RegionCode": "lhr", - "RegionName": "London", - "Latitude": 51.5072, - "Longitude": 0.1276, - "Nodes": [ - { - "Name": "8f", - "RegionID": 8, - "HostName": "derp8f.tailscale.com", - "IPv4": "176.58.88.183", - "IPv6": "2a00:dd80:3a::dfa", - "CanPort80": true - }, - { - "Name": "8g", - "RegionID": 8, - "HostName": "derp8g.tailscale.com", - "IPv4": "176.58.92.254", - "IPv6": "2a00:dd80:3a::ed", - "CanPort80": true - }, - { - "Name": "8e", - "RegionID": 8, - "HostName": "derp8e.tailscale.com", - "IPv4": "176.58.92.144", - "IPv6": "2a00:dd80:3a::b33", - "CanPort80": true - } - ] - }, - "9": { - "RegionID": 9, - "RegionCode": "dfw", - "RegionName": "Dallas", - "Latitude": 32.779167, - "Longitude": -96.808889, - "Nodes": [ - { - "Name": "9e", - "RegionID": 9, - "HostName": "derp9e.tailscale.com", - "IPv4": "192.73.248.83", - "IPv6": "2607:f740:100::359", - "CanPort80": true - }, - { - "Name": "9f", - "RegionID": 9, - "HostName": "derp9f.tailscale.com", - "IPv4": "209.177.156.197", - "IPv6": "2607:f740:100::cad", - "CanPort80": true - }, - { - "Name": "9d", - "RegionID": 9, - "HostName": "derp9d.tailscale.com", - "IPv4": "209.177.156.94", - "IPv6": "2607:f740:100::c05", - "CanPort80": true - } - ] - } - } - }, - "DisplayMessages": null, - "TKAEnabled": false, - "TKAHead": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", - "Domain": "kratail2tid@passkey", - "DomainAuditLogID": "", - "UserProfiles": { - "4031348162889210": { - "ID": 4031348162889210, - "LoginName": "tagged-client.tail78f774.ts.net", - "DisplayName": "tagged-client" - } - } + "PacketFilterRules": 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.124.195.93": { - "peer_name": "exit-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-prod/tailscaled.sock whois --json 100.124.195.93", - "response": null - }, - "100.116.18.24": { - "peer_name": "exit-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-prod/tailscaled.sock whois --json 100.116.18.24", - "response": null - }, - "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.107.162.14": { - "peer_name": "group-a-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-prod/tailscaled.sock whois --json 100.107.162.14", - "response": null - }, - "100.77.135.18": { - "peer_name": "group-b-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-prod/tailscaled.sock whois --json 100.77.135.18", - "response": null - }, - "100.105.127.107": { - "peer_name": "multi-exit-router", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-prod/tailscaled.sock whois --json 100.105.127.107", - "response": null - }, - "100.109.43.124": { - "peer_name": "router-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-prod/tailscaled.sock whois --json 100.109.43.124", - "response": null - }, - "100.65.172.123": { - "peer_name": "router-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-prod/tailscaled.sock whois --json 100.65.172.123", - "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 - } - }, "netmap": { - "SelfNode": { - "ID": 301794218943819, - "StableID": "neJag6dgM311CNTRL", - "Name": "tagged-prod.tail78f774.ts.net.", - "User": 301794218943819, - "Key": "nodekey:54c79503322a5d0a9701ce19d11963cfff9c05667ac06ef976af86275ba7080e", - "DiscoKey": "discokey:5e4985009b42b7c82ffb2cb5fa735a90f967f6b3f886b71268ebbeffa324556b", - "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:46164", "10.65.0.27:46164", "172.17.0.1:46164"], - "Hostinfo": { - "Hostname": "tagged-prod", - "Services": [ - { "Proto": "peerapi4", "Port": 37678 }, - { "Proto": "peerapi6", "Port": 37678 }, - { "Proto": "peerapi-dns-proxy", "Port": 1 } - ] - }, - "Created": "2026-02-20T14:03:12.89283153Z", - "Tags": ["tag:prod"], - "MachineAuthorized": true, - "CapMap": { - "https://tailscale.com/cap/file-sharing": null, - "https://tailscale.com/cap/is-owner": null, - "https://tailscale.com/cap/ssh": null, - "https://tailscale.com/cap/tailnet-lock": null, - "probe-udp-lifetime": null, - "ssh-behavior-v1": null, - "ssh-env-vars": null, - "store-appc-routes": null, - "tailnet-display-name": ["kratail2tid@passkey"] - }, - "ComputedName": "tagged-prod", - "ComputedNameWithHost": "tagged-prod" - }, - "AllCaps": [ - "https://tailscale.com/cap/tailnet-lock", - "probe-udp-lifetime", - "https://tailscale.com/cap/file-sharing", - "store-appc-routes", - "tailnet-display-name", - "ssh-behavior-v1", - "https://tailscale.com/cap/is-owner", - "ssh-env-vars", - "https://tailscale.com/cap/ssh" - ], - "NodeKey": "nodekey:54c79503322a5d0a9701ce19d11963cfff9c05667ac06ef976af86275ba7080e", - "MachineKey": "mkey:af805e02d1594ab20eaf3e2df5b379eec6453fa649344fcd564b7bae20e46a63", "Peers": [], - "DNS": { - "Routes": { - "tail78f774.ts.net.": null, - "ts.net.": [{ "Addr": "199.247.155.53" }, { "Addr": "2620:111:8007::53" }] - }, - "Domains": ["tail78f774.ts.net"], - "Proxied": true, - "ExitNodeFilteredSet": [".ts.net", ".tailscale.net"] - }, - "PacketFilter": [], - "PacketFilterRules": null, - "SSHPolicy": { "rules": [] }, - "CollectServices": false, - "DERPMap": { - "Regions": { - "1": { - "RegionID": 1, - "RegionCode": "nyc", - "RegionName": "New York City", - "Latitude": 40.7128, - "Longitude": -74.006, - "Nodes": [ - { - "Name": "1h", - "RegionID": 1, - "HostName": "derp1h.tailscale.com", - "IPv4": "199.38.181.93", - "IPv6": "2607:f740:f::afd", - "CanPort80": true - }, - { - "Name": "1g", - "RegionID": 1, - "HostName": "derp1g.tailscale.com", - "IPv4": "209.177.145.120", - "IPv6": "2607:f740:f::3eb", - "CanPort80": true - }, - { - "Name": "1i", - "RegionID": 1, - "HostName": "derp1i.tailscale.com", - "IPv4": "199.38.181.103", - "IPv6": "2607:f740:f::e19", - "CanPort80": true - }, - { - "Name": "1f", - "RegionID": 1, - "HostName": "derp1f.tailscale.com", - "IPv4": "199.38.181.104", - "IPv6": "2607:f740:f::bc", - "CanPort80": true - } - ] - }, - "10": { - "RegionID": 10, - "RegionCode": "sea", - "RegionName": "Seattle", - "Latitude": 47.609722, - "Longitude": -122.333056, - "Nodes": [ - { - "Name": "10c", - "RegionID": 10, - "HostName": "derp10c.tailscale.com", - "IPv4": "192.73.240.121", - "IPv6": "2607:f740:14::40c", - "CanPort80": true - }, - { - "Name": "10d", - "RegionID": 10, - "HostName": "derp10d.tailscale.com", - "IPv4": "192.73.240.132", - "IPv6": "2607:f740:14::500", - "CanPort80": true - }, - { - "Name": "10b", - "RegionID": 10, - "HostName": "derp10b.tailscale.com", - "IPv4": "192.73.240.161", - "IPv6": "2607:f740:14::61c", - "CanPort80": true - } - ] - }, - "11": { - "RegionID": 11, - "RegionCode": "sao", - "RegionName": "São Paulo", - "Latitude": -23.55, - "Longitude": -46.633333, - "Nodes": [ - { - "Name": "11f", - "RegionID": 11, - "HostName": "derp11f.tailscale.com", - "IPv4": "172.237.61.197", - "IPv6": "2600:3c0d::2000:3bff:fe44:6166", - "CanPort80": true - }, - { - "Name": "11g", - "RegionID": 11, - "HostName": "derp11g.tailscale.com", - "IPv4": "172.237.61.190", - "IPv6": "2600:3c0d::2000:62ff:febe:2e67", - "CanPort80": true - }, - { - "Name": "11e", - "RegionID": 11, - "HostName": "derp11e.tailscale.com", - "IPv4": "172.237.61.194", - "IPv6": "2600:3c0d::2000:d2ff:fe43:1790", - "CanPort80": true - } - ] - }, - "12": { - "RegionID": 12, - "RegionCode": "ord", - "RegionName": "Chicago", - "Latitude": 41.881944, - "Longitude": -87.627778, - "Nodes": [ - { - "Name": "12e", - "RegionID": 12, - "HostName": "derp12e.tailscale.com", - "IPv4": "209.177.158.15", - "IPv6": "2607:f740:e::b17", - "CanPort80": true - }, - { - "Name": "12f", - "RegionID": 12, - "HostName": "derp12f.tailscale.com", - "IPv4": "199.38.182.118", - "IPv6": "2607:f740:e::4c8", - "CanPort80": true - }, - { - "Name": "12d", - "RegionID": 12, - "HostName": "derp12d.tailscale.com", - "IPv4": "209.177.158.246", - "IPv6": "2607:f740:e::811", - "CanPort80": true - } - ] - }, - "13": { - "RegionID": 13, - "RegionCode": "den", - "RegionName": "Denver", - "Latitude": 39.7392, - "Longitude": -104.9849, - "Nodes": [ - { - "Name": "13c", - "RegionID": 13, - "HostName": "derp13c.tailscale.com", - "IPv4": "192.73.242.28", - "IPv6": "2607:f740:16::5c", - "CanPort80": true - }, - { - "Name": "13d", - "RegionID": 13, - "HostName": "derp13d.tailscale.com", - "IPv4": "192.73.242.204", - "IPv6": "2607:f740:16::c23", - "CanPort80": true - }, - { - "Name": "13b", - "RegionID": 13, - "HostName": "derp13b.tailscale.com", - "IPv4": "192.73.242.187", - "IPv6": "2607:f740:16::640", - "CanPort80": true - } - ] - }, - "14": { - "RegionID": 14, - "RegionCode": "ams", - "RegionName": "Amsterdam", - "Latitude": 52.372778, - "Longitude": 4.893611, - "Nodes": [ - { - "Name": "14c", - "RegionID": 14, - "HostName": "derp14c.tailscale.com", - "IPv4": "176.58.93.147", - "IPv6": "2a00:dd80:3c::b09", - "CanPort80": true - }, - { - "Name": "14d", - "RegionID": 14, - "HostName": "derp14d.tailscale.com", - "IPv4": "176.58.93.154", - "IPv6": "2a00:dd80:3c::3d5", - "CanPort80": true - }, - { - "Name": "14b", - "RegionID": 14, - "HostName": "derp14b.tailscale.com", - "IPv4": "176.58.93.248", - "IPv6": "2a00:dd80:3c::807", - "CanPort80": true - } - ] - }, - "15": { - "RegionID": 15, - "RegionCode": "jnb", - "RegionName": "Johannesburg", - "Latitude": -26.204444, - "Longitude": 28.045556, - "Nodes": [ - { - "Name": "15c", - "RegionID": 15, - "HostName": "derp15c.tailscale.com", - "IPv4": "102.67.165.185", - "IPv6": "2c0f:edb0:0:10::b59", - "CanPort80": true - }, - { - "Name": "15d", - "RegionID": 15, - "HostName": "derp15d.tailscale.com", - "IPv4": "102.67.165.36", - "IPv6": "2c0f:edb0:0:10::599", - "CanPort80": true - }, - { - "Name": "15b", - "RegionID": 15, - "HostName": "derp15b.tailscale.com", - "IPv4": "102.67.165.90", - "IPv6": "2c0f:edb0:0:10::963", - "CanPort80": true - } - ] - }, - "16": { - "RegionID": 16, - "RegionCode": "mia", - "RegionName": "Miami", - "Latitude": 25.78, - "Longitude": -80.21, - "Nodes": [ - { - "Name": "16c", - "RegionID": 16, - "HostName": "derp16c.tailscale.com", - "IPv4": "192.73.243.229", - "IPv6": "2607:f740:17::4e4", - "CanPort80": true - }, - { - "Name": "16d", - "RegionID": 16, - "HostName": "derp16d.tailscale.com", - "IPv4": "192.73.243.141", - "IPv6": "2607:f740:17::475", - "CanPort80": true - }, - { - "Name": "16b", - "RegionID": 16, - "HostName": "derp16b.tailscale.com", - "IPv4": "192.73.243.135", - "IPv6": "2607:f740:17::476", - "CanPort80": true - } - ] - }, - "17": { - "RegionID": 17, - "RegionCode": "lax", - "RegionName": "Los Angeles", - "Latitude": 34.05, - "Longitude": -118.25, - "Nodes": [ - { - "Name": "17c", - "RegionID": 17, - "HostName": "derp17c.tailscale.com", - "IPv4": "208.111.40.12", - "IPv6": "2607:f740:c::10", - "CanPort80": true - }, - { - "Name": "17d", - "RegionID": 17, - "HostName": "derp17d.tailscale.com", - "IPv4": "208.111.40.216", - "IPv6": "2607:f740:c::e1b", - "CanPort80": true - }, - { - "Name": "17b", - "RegionID": 17, - "HostName": "derp17b.tailscale.com", - "IPv4": "192.73.244.245", - "IPv6": "2607:f740:c::646", - "CanPort80": true - } - ] - }, - "18": { - "RegionID": 18, - "RegionCode": "par", - "RegionName": "Paris", - "Latitude": 48.856667, - "Longitude": 2.352222, - "Nodes": [ - { - "Name": "18c", - "RegionID": 18, - "HostName": "derp18c.tailscale.com", - "IPv4": "176.58.90.207", - "IPv6": "2a00:dd80:3e::c19", - "CanPort80": true - }, - { - "Name": "18d", - "RegionID": 18, - "HostName": "derp18d.tailscale.com", - "IPv4": "176.58.90.104", - "IPv6": "2a00:dd80:3e::f2e", - "CanPort80": true - }, - { - "Name": "18b", - "RegionID": 18, - "HostName": "derp18b.tailscale.com", - "IPv4": "176.58.90.147", - "IPv6": "2a00:dd80:3e::363", - "CanPort80": true - } - ] - }, - "19": { - "RegionID": 19, - "RegionCode": "mad", - "RegionName": "Madrid", - "Latitude": 40.416944, - "Longitude": -3.703333, - "Nodes": [ - { - "Name": "19c", - "RegionID": 19, - "HostName": "derp19c.tailscale.com", - "IPv4": "45.159.97.61", - "IPv6": "2a00:dd80:14:10::20", - "CanPort80": true - }, - { - "Name": "19d", - "RegionID": 19, - "HostName": "derp19d.tailscale.com", - "IPv4": "45.159.97.233", - "IPv6": "2a00:dd80:14:10::34a", - "CanPort80": true - }, - { - "Name": "19b", - "RegionID": 19, - "HostName": "derp19b.tailscale.com", - "IPv4": "45.159.97.144", - "IPv6": "2a00:dd80:14:10::335", - "CanPort80": true - } - ] - }, - "2": { - "RegionID": 2, - "RegionCode": "sfo", - "RegionName": "San Francisco", - "Latitude": 37.7775, - "Longitude": -122.416389, - "Nodes": [ - { - "Name": "2e", - "RegionID": 2, - "HostName": "derp2e.tailscale.com", - "IPv4": "192.73.252.134", - "IPv6": "2607:f740:0:3f::44c", - "CanPort80": true - }, - { - "Name": "2f", - "RegionID": 2, - "HostName": "derp2f.tailscale.com", - "IPv4": "208.111.34.178", - "IPv6": "2607:f740:0:3f::f4", - "CanPort80": true - }, - { - "Name": "2d", - "RegionID": 2, - "HostName": "derp2d.tailscale.com", - "IPv4": "192.73.252.65", - "IPv6": "2607:f740:0:3f::287", - "CanPort80": true - } - ] - }, - "20": { - "RegionID": 20, - "RegionCode": "hkg", - "RegionName": "Hong Kong", - "Latitude": 22.3193, - "Longitude": 114.1694, - "Nodes": [ - { - "Name": "20c", - "RegionID": 20, - "HostName": "derp20c.tailscale.com", - "IPv4": "205.147.105.30", - "IPv6": "2403:2500:8000:1::5fb", - "CanPort80": true - }, - { - "Name": "20d", - "RegionID": 20, - "HostName": "derp20d.tailscale.com", - "IPv4": "205.147.105.78", - "IPv6": "2403:2500:8000:1::e9a", - "CanPort80": true - }, - { - "Name": "20b", - "RegionID": 20, - "HostName": "derp20b.tailscale.com", - "IPv4": "103.6.84.152", - "IPv6": "2403:2500:8000:1::ef6", - "CanPort80": true - } - ] - }, - "21": { - "RegionID": 21, - "RegionCode": "tor", - "RegionName": "Toronto", - "Latitude": 43.741667, - "Longitude": -79.373333, - "Nodes": [ - { - "Name": "21c", - "RegionID": 21, - "HostName": "derp21c.tailscale.com", - "IPv4": "162.248.221.215", - "IPv6": "2607:f740:50::f10", - "CanPort80": true - }, - { - "Name": "21d", - "RegionID": 21, - "HostName": "derp21d.tailscale.com", - "IPv4": "162.248.221.248", - "IPv6": "2607:f740:50::ca4", - "CanPort80": true - }, - { - "Name": "21b", - "RegionID": 21, - "HostName": "derp21b.tailscale.com", - "IPv4": "162.248.221.199", - "IPv6": "2607:f740:50::1d1", - "CanPort80": true - } - ] - }, - "22": { - "RegionID": 22, - "RegionCode": "waw", - "RegionName": "Warsaw", - "Latitude": 52.23, - "Longitude": 21.011111, - "Nodes": [ - { - "Name": "22c", - "RegionID": 22, - "HostName": "derp22c.tailscale.com", - "IPv4": "45.159.98.253", - "IPv6": "2a00:dd80:40:100::3f", - "CanPort80": true - }, - { - "Name": "22d", - "RegionID": 22, - "HostName": "derp22d.tailscale.com", - "IPv4": "45.159.98.145", - "IPv6": "2a00:dd80:40:100::211", - "CanPort80": true - }, - { - "Name": "22b", - "RegionID": 22, - "HostName": "derp22b.tailscale.com", - "IPv4": "45.159.98.196", - "IPv6": "2a00:dd80:40:100::316", - "CanPort80": true - } - ] - }, - "23": { - "RegionID": 23, - "RegionCode": "dbi", - "RegionName": "Dubai", - "Latitude": 25.263056, - "Longitude": 55.297222, - "Nodes": [ - { - "Name": "23c", - "RegionID": 23, - "HostName": "derp23c.tailscale.com", - "IPv4": "185.34.3.207", - "IPv6": "2a00:dd80:3f:100::a50", - "CanPort80": true - }, - { - "Name": "23d", - "RegionID": 23, - "HostName": "derp23d.tailscale.com", - "IPv4": "185.34.3.75", - "IPv6": "2a00:dd80:3f:100::97e", - "CanPort80": true - }, - { - "Name": "23b", - "RegionID": 23, - "HostName": "derp23b.tailscale.com", - "IPv4": "185.34.3.232", - "IPv6": "2a00:dd80:3f:100::76f", - "CanPort80": true - } - ] - }, - "24": { - "RegionID": 24, - "RegionCode": "hnl", - "RegionName": "Honolulu", - "Latitude": 21.306944, - "Longitude": -157.858333, - "Nodes": [ - { - "Name": "24c", - "RegionID": 24, - "HostName": "derp24c.tailscale.com", - "IPv4": "208.83.233.233", - "IPv6": "2001:19f0:c000:c591:5400:04ff:fe26:2c5f", - "CanPort80": true - }, - { - "Name": "24d", - "RegionID": 24, - "HostName": "derp24d.tailscale.com", - "IPv4": "208.72.155.133", - "IPv6": "2001:19f0:c000:c564:5400:04ff:fe26:2ba8", - "CanPort80": true - }, - { - "Name": "24b", - "RegionID": 24, - "HostName": "derp24b.tailscale.com", - "IPv4": "208.83.234.151", - "IPv6": "2001:19f0:c000:c586:5400:04ff:fe26:2ba6", - "CanPort80": true - } - ] - }, - "25": { - "RegionID": 25, - "RegionCode": "nai", - "RegionName": "Nairobi", - "Latitude": -1.286389, - "Longitude": 36.817222, - "Nodes": [ - { - "Name": "25c", - "RegionID": 25, - "HostName": "derp25c.tailscale.com", - "IPv4": "102.67.167.37", - "IPv6": "2c0f:edb0:2000:1::2c7", - "CanPort80": true - }, - { - "Name": "25d", - "RegionID": 25, - "HostName": "derp25d.tailscale.com", - "IPv4": "102.67.167.188", - "IPv6": "2c0f:edb0:2000:1::188", - "CanPort80": true - }, - { - "Name": "25b", - "RegionID": 25, - "HostName": "derp25b.tailscale.com", - "IPv4": "102.67.167.245", - "IPv6": "2c0f:edb0:2000:1::2e9", - "CanPort80": true - } - ] - }, - "26": { - "RegionID": 26, - "RegionCode": "nue", - "RegionName": "Nuremberg", - "Latitude": 49.453889, - "Longitude": 11.0775, - "Nodes": [ - { - "Name": "26c", - "RegionID": 26, - "HostName": "derp26c.tailscale.com", - "IPv4": "49.12.193.137", - "IPv6": "2a01:4f8:1c1c:5c70::1", - "CanPort80": true - }, - { - "Name": "26d", - "RegionID": 26, - "HostName": "derp26d.tailscale.com", - "IPv4": "49.13.204.141", - "IPv6": "2a01:4f8:1c0c:7d06::1", - "CanPort80": true - }, - { - "Name": "26b", - "RegionID": 26, - "HostName": "derp26b.tailscale.com", - "IPv4": "167.235.72.200", - "IPv6": "2a01:4f8:1c1c:47b6::1", - "CanPort80": true - } - ] - }, - "27": { - "RegionID": 27, - "RegionCode": "iad", - "RegionName": "Ashburn", - "Latitude": 39.03, - "Longitude": -77.471111, - "Nodes": [ - { - "Name": "27d", - "RegionID": 27, - "HostName": "derp27d.tailscale.com", - "IPv4": "178.156.152.106", - "IPv6": "2a01:4ff:f0:3c8e::1", - "CanPort80": true - }, - { - "Name": "27c", - "RegionID": 27, - "HostName": "derp27c.tailscale.com", - "IPv4": "178.156.152.91", - "IPv6": "2a01:4ff:f0:3913::1", - "CanPort80": true - }, - { - "Name": "27e", - "RegionID": 27, - "HostName": "derp27e.tailscale.com", - "IPv4": "178.156.134.232", - "IPv6": "2a01:4ff:f0:28d4::1", - "CanPort80": true - }, - { - "Name": "27b", - "RegionID": 27, - "HostName": "derp27b.tailscale.com", - "IPv4": "5.161.218.233", - "IPv6": "2a01:4ff:f0:3db9::1", - "CanPort80": true - } - ] - }, - "28": { - "RegionID": 28, - "RegionCode": "hel", - "RegionName": "Helsinki", - "Latitude": 60.170833, - "Longitude": 24.9375, - "Nodes": [ - { - "Name": "28c", - "RegionID": 28, - "HostName": "derp28c.tailscale.com", - "IPv4": "95.217.2.165", - "IPv6": "2a01:4f9:c012:cd74::1", - "CanPort80": true - }, - { - "Name": "28d", - "RegionID": 28, - "HostName": "derp28d.tailscale.com", - "IPv4": "157.180.28.32", - "IPv6": "2a01:4f9:c012:2e5b::1", - "CanPort80": true - }, - { - "Name": "28b", - "RegionID": 28, - "HostName": "derp28b.tailscale.com", - "IPv4": "65.109.143.62", - "IPv6": "2a01:4f9:c012:d55c::1", - "CanPort80": true - } - ] - }, - "3": { - "RegionID": 3, - "RegionCode": "sin", - "RegionName": "Singapore", - "Latitude": 1.3521, - "Longitude": 103.8198, - "Nodes": [ - { - "Name": "3g", - "RegionID": 3, - "HostName": "derp3g.tailscale.com", - "IPv4": "172.237.72.79", - "IPv6": "2600:3c15::2000:adff:fe08:6fab", - "CanPort80": true - }, - { - "Name": "3f", - "RegionID": 3, - "HostName": "derp3f.tailscale.com", - "IPv4": "172.237.72.8", - "IPv6": "2600:3c15::2000:53ff:fe48:a668", - "CanPort80": true - }, - { - "Name": "3h", - "RegionID": 3, - "HostName": "derp3h.tailscale.com", - "IPv4": "172.237.66.30", - "IPv6": "2600:3c15::2000:3dff:fe44:50aa", - "CanPort80": true - }, - { - "Name": "3e", - "RegionID": 3, - "HostName": "derp3e.tailscale.com", - "IPv4": "172.237.72.43", - "IPv6": "2600:3c15::2000:6cff:fee4:d799", - "CanPort80": true - } - ] - }, - "4": { - "RegionID": 4, - "RegionCode": "fra", - "RegionName": "Frankfurt", - "Latitude": 50.1109, - "Longitude": 8.6821, - "Nodes": [ - { - "Name": "4h", - "RegionID": 4, - "HostName": "derp4h.tailscale.com", - "IPv4": "185.40.234.77", - "IPv6": "2a00:dd80:20::bcf", - "CanPort80": true - }, - { - "Name": "4g", - "RegionID": 4, - "HostName": "derp4g.tailscale.com", - "IPv4": "185.40.234.113", - "IPv6": "2a00:dd80:20::8f", - "CanPort80": true - }, - { - "Name": "4i", - "RegionID": 4, - "HostName": "derp4i.tailscale.com", - "IPv4": "185.40.234.53", - "IPv6": "2a00:dd80:20::8a6", - "CanPort80": true - }, - { - "Name": "4f", - "RegionID": 4, - "HostName": "derp4f.tailscale.com", - "IPv4": "185.40.234.219", - "IPv6": "2a00:dd80:20::a25", - "CanPort80": true - } - ] - }, - "5": { - "RegionID": 5, - "RegionCode": "syd", - "RegionName": "Sydney", - "Latitude": -33.867778, - "Longitude": 151.21, - "Nodes": [ - { - "Name": "5f", - "RegionID": 5, - "HostName": "derp5f.tailscale.com", - "IPv4": "172.105.166.103", - "IPv6": "2400:8907::2000:ccff:fe1f:80da", - "CanPort80": true - }, - { - "Name": "5g", - "RegionID": 5, - "HostName": "derp5g.tailscale.com", - "IPv4": "172.105.169.57", - "IPv6": "2400:8907::2000:2fff:fea7:57f4", - "CanPort80": true - }, - { - "Name": "5e", - "RegionID": 5, - "HostName": "derp5e.tailscale.com", - "IPv4": "172.105.179.230", - "IPv6": "2400:8907::2000:ceff:fe8d:4f4e", - "CanPort80": true - } - ] - }, - "6": { - "RegionID": 6, - "RegionCode": "blr", - "RegionName": "Bengaluru", - "Latitude": 12.9716, - "Longitude": 77.5946, - "Nodes": [ - { - "Name": "6a", - "RegionID": 6, - "HostName": "derp6.tailscale.com", - "IPv4": "68.183.90.120", - "IPv6": "2400:6180:100:d0::982:d001", - "CanPort80": true - } - ] - }, - "7": { - "RegionID": 7, - "RegionCode": "tok", - "RegionName": "Tokyo", - "Latitude": 35.6764, - "Longitude": 139.65, - "Nodes": [ - { - "Name": "7g", - "RegionID": 7, - "HostName": "derp7g.tailscale.com", - "IPv4": "172.238.6.179", - "IPv6": "2600:3c18::2000:3fff:fe80:3ebd", - "CanPort80": true - }, - { - "Name": "7f", - "RegionID": 7, - "HostName": "derp7f.tailscale.com", - "IPv4": "172.238.6.34", - "IPv6": "2600:3c18::2000:acff:fe8e:3ed5", - "CanPort80": true - }, - { - "Name": "7h", - "RegionID": 7, - "HostName": "derp7h.tailscale.com", - "IPv4": "172.237.28.183", - "IPv6": "2600:3c18::2000:b1ff:fea9:4560", - "CanPort80": true - }, - { - "Name": "7e", - "RegionID": 7, - "HostName": "derp7e.tailscale.com", - "IPv4": "172.238.6.180", - "IPv6": "2600:3c18::2000:60ff:fe0f:6e83", - "STUNOnly": true, - "CanPort80": true - } - ] - }, - "8": { - "RegionID": 8, - "RegionCode": "lhr", - "RegionName": "London", - "Latitude": 51.5072, - "Longitude": 0.1276, - "Nodes": [ - { - "Name": "8f", - "RegionID": 8, - "HostName": "derp8f.tailscale.com", - "IPv4": "176.58.88.183", - "IPv6": "2a00:dd80:3a::dfa", - "CanPort80": true - }, - { - "Name": "8g", - "RegionID": 8, - "HostName": "derp8g.tailscale.com", - "IPv4": "176.58.92.254", - "IPv6": "2a00:dd80:3a::ed", - "CanPort80": true - }, - { - "Name": "8e", - "RegionID": 8, - "HostName": "derp8e.tailscale.com", - "IPv4": "176.58.92.144", - "IPv6": "2a00:dd80:3a::b33", - "CanPort80": true - } - ] - }, - "9": { - "RegionID": 9, - "RegionCode": "dfw", - "RegionName": "Dallas", - "Latitude": 32.779167, - "Longitude": -96.808889, - "Nodes": [ - { - "Name": "9e", - "RegionID": 9, - "HostName": "derp9e.tailscale.com", - "IPv4": "192.73.248.83", - "IPv6": "2607:f740:100::359", - "CanPort80": true - }, - { - "Name": "9f", - "RegionID": 9, - "HostName": "derp9f.tailscale.com", - "IPv4": "209.177.156.197", - "IPv6": "2607:f740:100::cad", - "CanPort80": true - }, - { - "Name": "9d", - "RegionID": 9, - "HostName": "derp9d.tailscale.com", - "IPv4": "209.177.156.94", - "IPv6": "2607:f740:100::c05", - "CanPort80": true - } - ] - } - } - }, - "DisplayMessages": null, - "TKAEnabled": false, - "TKAHead": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", - "Domain": "kratail2tid@passkey", - "DomainAuditLogID": "", - "UserProfiles": { - "301794218943819": { - "ID": 301794218943819, - "LoginName": "tagged-prod.tail78f774.ts.net", - "DisplayName": "tagged-prod" - } - } + "PacketFilterRules": 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.124.195.93": { - "peer_name": "exit-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-server/tailscaled.sock whois --json 100.124.195.93", - "response": null - }, - "100.116.18.24": { - "peer_name": "exit-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-server/tailscaled.sock whois --json 100.116.18.24", - "response": null - }, - "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.107.162.14": { - "peer_name": "group-a-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-server/tailscaled.sock whois --json 100.107.162.14", - "response": null - }, - "100.77.135.18": { - "peer_name": "group-b-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-server/tailscaled.sock whois --json 100.77.135.18", - "response": null - }, - "100.105.127.107": { - "peer_name": "multi-exit-router", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-server/tailscaled.sock whois --json 100.105.127.107", - "response": null - }, - "100.109.43.124": { - "peer_name": "router-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-server/tailscaled.sock whois --json 100.109.43.124", - "response": null - }, - "100.65.172.123": { - "peer_name": "router-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-server/tailscaled.sock whois --json 100.65.172.123", - "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 - } - }, "netmap": { - "SelfNode": { - "ID": 1440249486084758, - "StableID": "nXRbBtuHFC11CNTRL", - "Name": "tagged-server.tail78f774.ts.net.", - "User": 1440249486084758, - "Key": "nodekey:7d5c34b3e8082069d0a82838165c33f8e1b5eb32c6211c2d23d4fe8fb9ec4a19", - "DiscoKey": "discokey:aa5732e314175928eff41cc8f8a7b6edd4694b7d00e420a6573ecc11a88cb203", - "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:57971", "10.65.0.27:57971", "172.17.0.1:57971"], - "Hostinfo": { - "Hostname": "tagged-server", - "Services": [ - { "Proto": "peerapi4", "Port": 46499 }, - { "Proto": "peerapi6", "Port": 46499 }, - { "Proto": "peerapi-dns-proxy", "Port": 1 } - ] - }, - "Created": "2026-01-23T10:10:26.365653609Z", - "Tags": ["tag:server"], - "MachineAuthorized": true, - "CapMap": { - "https://tailscale.com/cap/file-sharing": null, - "https://tailscale.com/cap/is-owner": null, - "https://tailscale.com/cap/ssh": null, - "https://tailscale.com/cap/tailnet-lock": null, - "probe-udp-lifetime": null, - "ssh-behavior-v1": null, - "ssh-env-vars": null, - "store-appc-routes": null, - "tailnet-display-name": ["kratail2tid@passkey"] - }, - "ComputedName": "tagged-server", - "ComputedNameWithHost": "tagged-server" - }, - "AllCaps": [ - "ssh-env-vars", - "https://tailscale.com/cap/file-sharing", - "https://tailscale.com/cap/is-owner", - "https://tailscale.com/cap/tailnet-lock", - "store-appc-routes", - "tailnet-display-name", - "https://tailscale.com/cap/ssh", - "ssh-behavior-v1", - "probe-udp-lifetime" - ], - "NodeKey": "nodekey:7d5c34b3e8082069d0a82838165c33f8e1b5eb32c6211c2d23d4fe8fb9ec4a19", - "MachineKey": "mkey:7d9c55c88bb618638f3f049b95c797f64eb0259810146d2644fef3e53acfdf6b", "Peers": [], - "DNS": { - "Routes": { - "tail78f774.ts.net.": null, - "ts.net.": [{ "Addr": "199.247.155.53" }, { "Addr": "2620:111:8007::53" }] - }, - "Domains": ["tail78f774.ts.net"], - "Proxied": true, - "ExitNodeFilteredSet": [".ts.net", ".tailscale.net"] - }, - "PacketFilter": [], - "PacketFilterRules": null, - "SSHPolicy": { "rules": [] }, - "CollectServices": false, - "DERPMap": { - "Regions": { - "1": { - "RegionID": 1, - "RegionCode": "nyc", - "RegionName": "New York City", - "Latitude": 40.7128, - "Longitude": -74.006, - "Nodes": [ - { - "Name": "1h", - "RegionID": 1, - "HostName": "derp1h.tailscale.com", - "IPv4": "199.38.181.93", - "IPv6": "2607:f740:f::afd", - "CanPort80": true - }, - { - "Name": "1g", - "RegionID": 1, - "HostName": "derp1g.tailscale.com", - "IPv4": "209.177.145.120", - "IPv6": "2607:f740:f::3eb", - "CanPort80": true - }, - { - "Name": "1i", - "RegionID": 1, - "HostName": "derp1i.tailscale.com", - "IPv4": "199.38.181.103", - "IPv6": "2607:f740:f::e19", - "CanPort80": true - }, - { - "Name": "1f", - "RegionID": 1, - "HostName": "derp1f.tailscale.com", - "IPv4": "199.38.181.104", - "IPv6": "2607:f740:f::bc", - "CanPort80": true - } - ] - }, - "10": { - "RegionID": 10, - "RegionCode": "sea", - "RegionName": "Seattle", - "Latitude": 47.609722, - "Longitude": -122.333056, - "Nodes": [ - { - "Name": "10c", - "RegionID": 10, - "HostName": "derp10c.tailscale.com", - "IPv4": "192.73.240.121", - "IPv6": "2607:f740:14::40c", - "CanPort80": true - }, - { - "Name": "10d", - "RegionID": 10, - "HostName": "derp10d.tailscale.com", - "IPv4": "192.73.240.132", - "IPv6": "2607:f740:14::500", - "CanPort80": true - }, - { - "Name": "10b", - "RegionID": 10, - "HostName": "derp10b.tailscale.com", - "IPv4": "192.73.240.161", - "IPv6": "2607:f740:14::61c", - "CanPort80": true - } - ] - }, - "11": { - "RegionID": 11, - "RegionCode": "sao", - "RegionName": "São Paulo", - "Latitude": -23.55, - "Longitude": -46.633333, - "Nodes": [ - { - "Name": "11f", - "RegionID": 11, - "HostName": "derp11f.tailscale.com", - "IPv4": "172.237.61.197", - "IPv6": "2600:3c0d::2000:3bff:fe44:6166", - "CanPort80": true - }, - { - "Name": "11g", - "RegionID": 11, - "HostName": "derp11g.tailscale.com", - "IPv4": "172.237.61.190", - "IPv6": "2600:3c0d::2000:62ff:febe:2e67", - "CanPort80": true - }, - { - "Name": "11e", - "RegionID": 11, - "HostName": "derp11e.tailscale.com", - "IPv4": "172.237.61.194", - "IPv6": "2600:3c0d::2000:d2ff:fe43:1790", - "CanPort80": true - } - ] - }, - "12": { - "RegionID": 12, - "RegionCode": "ord", - "RegionName": "Chicago", - "Latitude": 41.881944, - "Longitude": -87.627778, - "Nodes": [ - { - "Name": "12e", - "RegionID": 12, - "HostName": "derp12e.tailscale.com", - "IPv4": "209.177.158.15", - "IPv6": "2607:f740:e::b17", - "CanPort80": true - }, - { - "Name": "12f", - "RegionID": 12, - "HostName": "derp12f.tailscale.com", - "IPv4": "199.38.182.118", - "IPv6": "2607:f740:e::4c8", - "CanPort80": true - }, - { - "Name": "12d", - "RegionID": 12, - "HostName": "derp12d.tailscale.com", - "IPv4": "209.177.158.246", - "IPv6": "2607:f740:e::811", - "CanPort80": true - } - ] - }, - "13": { - "RegionID": 13, - "RegionCode": "den", - "RegionName": "Denver", - "Latitude": 39.7392, - "Longitude": -104.9849, - "Nodes": [ - { - "Name": "13c", - "RegionID": 13, - "HostName": "derp13c.tailscale.com", - "IPv4": "192.73.242.28", - "IPv6": "2607:f740:16::5c", - "CanPort80": true - }, - { - "Name": "13d", - "RegionID": 13, - "HostName": "derp13d.tailscale.com", - "IPv4": "192.73.242.204", - "IPv6": "2607:f740:16::c23", - "CanPort80": true - }, - { - "Name": "13b", - "RegionID": 13, - "HostName": "derp13b.tailscale.com", - "IPv4": "192.73.242.187", - "IPv6": "2607:f740:16::640", - "CanPort80": true - } - ] - }, - "14": { - "RegionID": 14, - "RegionCode": "ams", - "RegionName": "Amsterdam", - "Latitude": 52.372778, - "Longitude": 4.893611, - "Nodes": [ - { - "Name": "14c", - "RegionID": 14, - "HostName": "derp14c.tailscale.com", - "IPv4": "176.58.93.147", - "IPv6": "2a00:dd80:3c::b09", - "CanPort80": true - }, - { - "Name": "14d", - "RegionID": 14, - "HostName": "derp14d.tailscale.com", - "IPv4": "176.58.93.154", - "IPv6": "2a00:dd80:3c::3d5", - "CanPort80": true - }, - { - "Name": "14b", - "RegionID": 14, - "HostName": "derp14b.tailscale.com", - "IPv4": "176.58.93.248", - "IPv6": "2a00:dd80:3c::807", - "CanPort80": true - } - ] - }, - "15": { - "RegionID": 15, - "RegionCode": "jnb", - "RegionName": "Johannesburg", - "Latitude": -26.204444, - "Longitude": 28.045556, - "Nodes": [ - { - "Name": "15c", - "RegionID": 15, - "HostName": "derp15c.tailscale.com", - "IPv4": "102.67.165.185", - "IPv6": "2c0f:edb0:0:10::b59", - "CanPort80": true - }, - { - "Name": "15d", - "RegionID": 15, - "HostName": "derp15d.tailscale.com", - "IPv4": "102.67.165.36", - "IPv6": "2c0f:edb0:0:10::599", - "CanPort80": true - }, - { - "Name": "15b", - "RegionID": 15, - "HostName": "derp15b.tailscale.com", - "IPv4": "102.67.165.90", - "IPv6": "2c0f:edb0:0:10::963", - "CanPort80": true - } - ] - }, - "16": { - "RegionID": 16, - "RegionCode": "mia", - "RegionName": "Miami", - "Latitude": 25.78, - "Longitude": -80.21, - "Nodes": [ - { - "Name": "16c", - "RegionID": 16, - "HostName": "derp16c.tailscale.com", - "IPv4": "192.73.243.229", - "IPv6": "2607:f740:17::4e4", - "CanPort80": true - }, - { - "Name": "16d", - "RegionID": 16, - "HostName": "derp16d.tailscale.com", - "IPv4": "192.73.243.141", - "IPv6": "2607:f740:17::475", - "CanPort80": true - }, - { - "Name": "16b", - "RegionID": 16, - "HostName": "derp16b.tailscale.com", - "IPv4": "192.73.243.135", - "IPv6": "2607:f740:17::476", - "CanPort80": true - } - ] - }, - "17": { - "RegionID": 17, - "RegionCode": "lax", - "RegionName": "Los Angeles", - "Latitude": 34.05, - "Longitude": -118.25, - "Nodes": [ - { - "Name": "17c", - "RegionID": 17, - "HostName": "derp17c.tailscale.com", - "IPv4": "208.111.40.12", - "IPv6": "2607:f740:c::10", - "CanPort80": true - }, - { - "Name": "17d", - "RegionID": 17, - "HostName": "derp17d.tailscale.com", - "IPv4": "208.111.40.216", - "IPv6": "2607:f740:c::e1b", - "CanPort80": true - }, - { - "Name": "17b", - "RegionID": 17, - "HostName": "derp17b.tailscale.com", - "IPv4": "192.73.244.245", - "IPv6": "2607:f740:c::646", - "CanPort80": true - } - ] - }, - "18": { - "RegionID": 18, - "RegionCode": "par", - "RegionName": "Paris", - "Latitude": 48.856667, - "Longitude": 2.352222, - "Nodes": [ - { - "Name": "18c", - "RegionID": 18, - "HostName": "derp18c.tailscale.com", - "IPv4": "176.58.90.207", - "IPv6": "2a00:dd80:3e::c19", - "CanPort80": true - }, - { - "Name": "18d", - "RegionID": 18, - "HostName": "derp18d.tailscale.com", - "IPv4": "176.58.90.104", - "IPv6": "2a00:dd80:3e::f2e", - "CanPort80": true - }, - { - "Name": "18b", - "RegionID": 18, - "HostName": "derp18b.tailscale.com", - "IPv4": "176.58.90.147", - "IPv6": "2a00:dd80:3e::363", - "CanPort80": true - } - ] - }, - "19": { - "RegionID": 19, - "RegionCode": "mad", - "RegionName": "Madrid", - "Latitude": 40.416944, - "Longitude": -3.703333, - "Nodes": [ - { - "Name": "19c", - "RegionID": 19, - "HostName": "derp19c.tailscale.com", - "IPv4": "45.159.97.61", - "IPv6": "2a00:dd80:14:10::20", - "CanPort80": true - }, - { - "Name": "19d", - "RegionID": 19, - "HostName": "derp19d.tailscale.com", - "IPv4": "45.159.97.233", - "IPv6": "2a00:dd80:14:10::34a", - "CanPort80": true - }, - { - "Name": "19b", - "RegionID": 19, - "HostName": "derp19b.tailscale.com", - "IPv4": "45.159.97.144", - "IPv6": "2a00:dd80:14:10::335", - "CanPort80": true - } - ] - }, - "2": { - "RegionID": 2, - "RegionCode": "sfo", - "RegionName": "San Francisco", - "Latitude": 37.7775, - "Longitude": -122.416389, - "Nodes": [ - { - "Name": "2e", - "RegionID": 2, - "HostName": "derp2e.tailscale.com", - "IPv4": "192.73.252.134", - "IPv6": "2607:f740:0:3f::44c", - "CanPort80": true - }, - { - "Name": "2f", - "RegionID": 2, - "HostName": "derp2f.tailscale.com", - "IPv4": "208.111.34.178", - "IPv6": "2607:f740:0:3f::f4", - "CanPort80": true - }, - { - "Name": "2d", - "RegionID": 2, - "HostName": "derp2d.tailscale.com", - "IPv4": "192.73.252.65", - "IPv6": "2607:f740:0:3f::287", - "CanPort80": true - } - ] - }, - "20": { - "RegionID": 20, - "RegionCode": "hkg", - "RegionName": "Hong Kong", - "Latitude": 22.3193, - "Longitude": 114.1694, - "Nodes": [ - { - "Name": "20c", - "RegionID": 20, - "HostName": "derp20c.tailscale.com", - "IPv4": "205.147.105.30", - "IPv6": "2403:2500:8000:1::5fb", - "CanPort80": true - }, - { - "Name": "20d", - "RegionID": 20, - "HostName": "derp20d.tailscale.com", - "IPv4": "205.147.105.78", - "IPv6": "2403:2500:8000:1::e9a", - "CanPort80": true - }, - { - "Name": "20b", - "RegionID": 20, - "HostName": "derp20b.tailscale.com", - "IPv4": "103.6.84.152", - "IPv6": "2403:2500:8000:1::ef6", - "CanPort80": true - } - ] - }, - "21": { - "RegionID": 21, - "RegionCode": "tor", - "RegionName": "Toronto", - "Latitude": 43.741667, - "Longitude": -79.373333, - "Nodes": [ - { - "Name": "21c", - "RegionID": 21, - "HostName": "derp21c.tailscale.com", - "IPv4": "162.248.221.215", - "IPv6": "2607:f740:50::f10", - "CanPort80": true - }, - { - "Name": "21d", - "RegionID": 21, - "HostName": "derp21d.tailscale.com", - "IPv4": "162.248.221.248", - "IPv6": "2607:f740:50::ca4", - "CanPort80": true - }, - { - "Name": "21b", - "RegionID": 21, - "HostName": "derp21b.tailscale.com", - "IPv4": "162.248.221.199", - "IPv6": "2607:f740:50::1d1", - "CanPort80": true - } - ] - }, - "22": { - "RegionID": 22, - "RegionCode": "waw", - "RegionName": "Warsaw", - "Latitude": 52.23, - "Longitude": 21.011111, - "Nodes": [ - { - "Name": "22c", - "RegionID": 22, - "HostName": "derp22c.tailscale.com", - "IPv4": "45.159.98.253", - "IPv6": "2a00:dd80:40:100::3f", - "CanPort80": true - }, - { - "Name": "22d", - "RegionID": 22, - "HostName": "derp22d.tailscale.com", - "IPv4": "45.159.98.145", - "IPv6": "2a00:dd80:40:100::211", - "CanPort80": true - }, - { - "Name": "22b", - "RegionID": 22, - "HostName": "derp22b.tailscale.com", - "IPv4": "45.159.98.196", - "IPv6": "2a00:dd80:40:100::316", - "CanPort80": true - } - ] - }, - "23": { - "RegionID": 23, - "RegionCode": "dbi", - "RegionName": "Dubai", - "Latitude": 25.263056, - "Longitude": 55.297222, - "Nodes": [ - { - "Name": "23c", - "RegionID": 23, - "HostName": "derp23c.tailscale.com", - "IPv4": "185.34.3.207", - "IPv6": "2a00:dd80:3f:100::a50", - "CanPort80": true - }, - { - "Name": "23d", - "RegionID": 23, - "HostName": "derp23d.tailscale.com", - "IPv4": "185.34.3.75", - "IPv6": "2a00:dd80:3f:100::97e", - "CanPort80": true - }, - { - "Name": "23b", - "RegionID": 23, - "HostName": "derp23b.tailscale.com", - "IPv4": "185.34.3.232", - "IPv6": "2a00:dd80:3f:100::76f", - "CanPort80": true - } - ] - }, - "24": { - "RegionID": 24, - "RegionCode": "hnl", - "RegionName": "Honolulu", - "Latitude": 21.306944, - "Longitude": -157.858333, - "Nodes": [ - { - "Name": "24c", - "RegionID": 24, - "HostName": "derp24c.tailscale.com", - "IPv4": "208.83.233.233", - "IPv6": "2001:19f0:c000:c591:5400:04ff:fe26:2c5f", - "CanPort80": true - }, - { - "Name": "24d", - "RegionID": 24, - "HostName": "derp24d.tailscale.com", - "IPv4": "208.72.155.133", - "IPv6": "2001:19f0:c000:c564:5400:04ff:fe26:2ba8", - "CanPort80": true - }, - { - "Name": "24b", - "RegionID": 24, - "HostName": "derp24b.tailscale.com", - "IPv4": "208.83.234.151", - "IPv6": "2001:19f0:c000:c586:5400:04ff:fe26:2ba6", - "CanPort80": true - } - ] - }, - "25": { - "RegionID": 25, - "RegionCode": "nai", - "RegionName": "Nairobi", - "Latitude": -1.286389, - "Longitude": 36.817222, - "Nodes": [ - { - "Name": "25c", - "RegionID": 25, - "HostName": "derp25c.tailscale.com", - "IPv4": "102.67.167.37", - "IPv6": "2c0f:edb0:2000:1::2c7", - "CanPort80": true - }, - { - "Name": "25d", - "RegionID": 25, - "HostName": "derp25d.tailscale.com", - "IPv4": "102.67.167.188", - "IPv6": "2c0f:edb0:2000:1::188", - "CanPort80": true - }, - { - "Name": "25b", - "RegionID": 25, - "HostName": "derp25b.tailscale.com", - "IPv4": "102.67.167.245", - "IPv6": "2c0f:edb0:2000:1::2e9", - "CanPort80": true - } - ] - }, - "26": { - "RegionID": 26, - "RegionCode": "nue", - "RegionName": "Nuremberg", - "Latitude": 49.453889, - "Longitude": 11.0775, - "Nodes": [ - { - "Name": "26c", - "RegionID": 26, - "HostName": "derp26c.tailscale.com", - "IPv4": "49.12.193.137", - "IPv6": "2a01:4f8:1c1c:5c70::1", - "CanPort80": true - }, - { - "Name": "26d", - "RegionID": 26, - "HostName": "derp26d.tailscale.com", - "IPv4": "49.13.204.141", - "IPv6": "2a01:4f8:1c0c:7d06::1", - "CanPort80": true - }, - { - "Name": "26b", - "RegionID": 26, - "HostName": "derp26b.tailscale.com", - "IPv4": "167.235.72.200", - "IPv6": "2a01:4f8:1c1c:47b6::1", - "CanPort80": true - } - ] - }, - "27": { - "RegionID": 27, - "RegionCode": "iad", - "RegionName": "Ashburn", - "Latitude": 39.03, - "Longitude": -77.471111, - "Nodes": [ - { - "Name": "27d", - "RegionID": 27, - "HostName": "derp27d.tailscale.com", - "IPv4": "178.156.152.106", - "IPv6": "2a01:4ff:f0:3c8e::1", - "CanPort80": true - }, - { - "Name": "27c", - "RegionID": 27, - "HostName": "derp27c.tailscale.com", - "IPv4": "178.156.152.91", - "IPv6": "2a01:4ff:f0:3913::1", - "CanPort80": true - }, - { - "Name": "27e", - "RegionID": 27, - "HostName": "derp27e.tailscale.com", - "IPv4": "178.156.134.232", - "IPv6": "2a01:4ff:f0:28d4::1", - "CanPort80": true - }, - { - "Name": "27b", - "RegionID": 27, - "HostName": "derp27b.tailscale.com", - "IPv4": "5.161.218.233", - "IPv6": "2a01:4ff:f0:3db9::1", - "CanPort80": true - } - ] - }, - "28": { - "RegionID": 28, - "RegionCode": "hel", - "RegionName": "Helsinki", - "Latitude": 60.170833, - "Longitude": 24.9375, - "Nodes": [ - { - "Name": "28c", - "RegionID": 28, - "HostName": "derp28c.tailscale.com", - "IPv4": "95.217.2.165", - "IPv6": "2a01:4f9:c012:cd74::1", - "CanPort80": true - }, - { - "Name": "28d", - "RegionID": 28, - "HostName": "derp28d.tailscale.com", - "IPv4": "157.180.28.32", - "IPv6": "2a01:4f9:c012:2e5b::1", - "CanPort80": true - }, - { - "Name": "28b", - "RegionID": 28, - "HostName": "derp28b.tailscale.com", - "IPv4": "65.109.143.62", - "IPv6": "2a01:4f9:c012:d55c::1", - "CanPort80": true - } - ] - }, - "3": { - "RegionID": 3, - "RegionCode": "sin", - "RegionName": "Singapore", - "Latitude": 1.3521, - "Longitude": 103.8198, - "Nodes": [ - { - "Name": "3g", - "RegionID": 3, - "HostName": "derp3g.tailscale.com", - "IPv4": "172.237.72.79", - "IPv6": "2600:3c15::2000:adff:fe08:6fab", - "CanPort80": true - }, - { - "Name": "3f", - "RegionID": 3, - "HostName": "derp3f.tailscale.com", - "IPv4": "172.237.72.8", - "IPv6": "2600:3c15::2000:53ff:fe48:a668", - "CanPort80": true - }, - { - "Name": "3h", - "RegionID": 3, - "HostName": "derp3h.tailscale.com", - "IPv4": "172.237.66.30", - "IPv6": "2600:3c15::2000:3dff:fe44:50aa", - "CanPort80": true - }, - { - "Name": "3e", - "RegionID": 3, - "HostName": "derp3e.tailscale.com", - "IPv4": "172.237.72.43", - "IPv6": "2600:3c15::2000:6cff:fee4:d799", - "CanPort80": true - } - ] - }, - "4": { - "RegionID": 4, - "RegionCode": "fra", - "RegionName": "Frankfurt", - "Latitude": 50.1109, - "Longitude": 8.6821, - "Nodes": [ - { - "Name": "4h", - "RegionID": 4, - "HostName": "derp4h.tailscale.com", - "IPv4": "185.40.234.77", - "IPv6": "2a00:dd80:20::bcf", - "CanPort80": true - }, - { - "Name": "4g", - "RegionID": 4, - "HostName": "derp4g.tailscale.com", - "IPv4": "185.40.234.113", - "IPv6": "2a00:dd80:20::8f", - "CanPort80": true - }, - { - "Name": "4i", - "RegionID": 4, - "HostName": "derp4i.tailscale.com", - "IPv4": "185.40.234.53", - "IPv6": "2a00:dd80:20::8a6", - "CanPort80": true - }, - { - "Name": "4f", - "RegionID": 4, - "HostName": "derp4f.tailscale.com", - "IPv4": "185.40.234.219", - "IPv6": "2a00:dd80:20::a25", - "CanPort80": true - } - ] - }, - "5": { - "RegionID": 5, - "RegionCode": "syd", - "RegionName": "Sydney", - "Latitude": -33.867778, - "Longitude": 151.21, - "Nodes": [ - { - "Name": "5f", - "RegionID": 5, - "HostName": "derp5f.tailscale.com", - "IPv4": "172.105.166.103", - "IPv6": "2400:8907::2000:ccff:fe1f:80da", - "CanPort80": true - }, - { - "Name": "5g", - "RegionID": 5, - "HostName": "derp5g.tailscale.com", - "IPv4": "172.105.169.57", - "IPv6": "2400:8907::2000:2fff:fea7:57f4", - "CanPort80": true - }, - { - "Name": "5e", - "RegionID": 5, - "HostName": "derp5e.tailscale.com", - "IPv4": "172.105.179.230", - "IPv6": "2400:8907::2000:ceff:fe8d:4f4e", - "CanPort80": true - } - ] - }, - "6": { - "RegionID": 6, - "RegionCode": "blr", - "RegionName": "Bengaluru", - "Latitude": 12.9716, - "Longitude": 77.5946, - "Nodes": [ - { - "Name": "6a", - "RegionID": 6, - "HostName": "derp6.tailscale.com", - "IPv4": "68.183.90.120", - "IPv6": "2400:6180:100:d0::982:d001", - "CanPort80": true - } - ] - }, - "7": { - "RegionID": 7, - "RegionCode": "tok", - "RegionName": "Tokyo", - "Latitude": 35.6764, - "Longitude": 139.65, - "Nodes": [ - { - "Name": "7g", - "RegionID": 7, - "HostName": "derp7g.tailscale.com", - "IPv4": "172.238.6.179", - "IPv6": "2600:3c18::2000:3fff:fe80:3ebd", - "CanPort80": true - }, - { - "Name": "7f", - "RegionID": 7, - "HostName": "derp7f.tailscale.com", - "IPv4": "172.238.6.34", - "IPv6": "2600:3c18::2000:acff:fe8e:3ed5", - "CanPort80": true - }, - { - "Name": "7h", - "RegionID": 7, - "HostName": "derp7h.tailscale.com", - "IPv4": "172.237.28.183", - "IPv6": "2600:3c18::2000:b1ff:fea9:4560", - "CanPort80": true - }, - { - "Name": "7e", - "RegionID": 7, - "HostName": "derp7e.tailscale.com", - "IPv4": "172.238.6.180", - "IPv6": "2600:3c18::2000:60ff:fe0f:6e83", - "STUNOnly": true, - "CanPort80": true - } - ] - }, - "8": { - "RegionID": 8, - "RegionCode": "lhr", - "RegionName": "London", - "Latitude": 51.5072, - "Longitude": 0.1276, - "Nodes": [ - { - "Name": "8f", - "RegionID": 8, - "HostName": "derp8f.tailscale.com", - "IPv4": "176.58.88.183", - "IPv6": "2a00:dd80:3a::dfa", - "CanPort80": true - }, - { - "Name": "8g", - "RegionID": 8, - "HostName": "derp8g.tailscale.com", - "IPv4": "176.58.92.254", - "IPv6": "2a00:dd80:3a::ed", - "CanPort80": true - }, - { - "Name": "8e", - "RegionID": 8, - "HostName": "derp8e.tailscale.com", - "IPv4": "176.58.92.144", - "IPv6": "2a00:dd80:3a::b33", - "CanPort80": true - } - ] - }, - "9": { - "RegionID": 9, - "RegionCode": "dfw", - "RegionName": "Dallas", - "Latitude": 32.779167, - "Longitude": -96.808889, - "Nodes": [ - { - "Name": "9e", - "RegionID": 9, - "HostName": "derp9e.tailscale.com", - "IPv4": "192.73.248.83", - "IPv6": "2607:f740:100::359", - "CanPort80": true - }, - { - "Name": "9f", - "RegionID": 9, - "HostName": "derp9f.tailscale.com", - "IPv4": "209.177.156.197", - "IPv6": "2607:f740:100::cad", - "CanPort80": true - }, - { - "Name": "9d", - "RegionID": 9, - "HostName": "derp9d.tailscale.com", - "IPv4": "209.177.156.94", - "IPv6": "2607:f740:100::c05", - "CanPort80": true - } - ] - } - } - }, - "DisplayMessages": null, - "TKAEnabled": false, - "TKAHead": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", - "Domain": "kratail2tid@passkey", - "DomainAuditLogID": "", - "UserProfiles": { - "1440249486084758": { - "ID": 1440249486084758, - "LoginName": "tagged-server.tail78f774.ts.net", - "DisplayName": "tagged-server" - } - } + "PacketFilterRules": 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.124.195.93": { - "peer_name": "exit-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-kris/tailscaled.sock whois --json 100.124.195.93", - "response": null - }, - "100.116.18.24": { - "peer_name": "exit-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-kris/tailscaled.sock whois --json 100.116.18.24", - "response": null - }, - "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.107.162.14": { - "peer_name": "group-a-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-kris/tailscaled.sock whois --json 100.107.162.14", - "response": null - }, - "100.77.135.18": { - "peer_name": "group-b-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-kris/tailscaled.sock whois --json 100.77.135.18", - "response": null - }, - "100.105.127.107": { - "peer_name": "multi-exit-router", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-kris/tailscaled.sock whois --json 100.105.127.107", - "response": null - }, - "100.109.43.124": { - "peer_name": "router-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-kris/tailscaled.sock whois --json 100.109.43.124", - "response": null - }, - "100.65.172.123": { - "peer_name": "router-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-kris/tailscaled.sock whois --json 100.65.172.123", - "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 - } - }, "netmap": { - "SelfNode": { - "ID": 7728836216590060, - "StableID": "nf4dJTRQM321CNTRL", - "Name": "user-kris.tail78f774.ts.net.", - "User": 4538565228176803, - "Key": "nodekey:40d0f8f49fd519e4a4a2b7d278dcc8863254d4fb8b0219f1d1304cdd172e795f", - "KeyExpiry": "2026-08-19T14:09:34Z", - "DiscoKey": "discokey:60de987544859962048376b0950731bfa8017a7fc7df694ef376d4bb42eb9871", - "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:59717", "10.65.0.27:59717", "172.17.0.1:59717"], - "Hostinfo": { - "Hostname": "user-kris", - "Services": [ - { "Proto": "peerapi4", "Port": 40159 }, - { "Proto": "peerapi6", "Port": 40159 }, - { "Proto": "peerapi-dns-proxy", "Port": 1 } - ] - }, - "Created": "2026-02-20T14:09:34.803901523Z", - "MachineAuthorized": true, - "CapMap": { - "https://tailscale.com/cap/file-sharing": null, - "https://tailscale.com/cap/is-admin": null, - "https://tailscale.com/cap/ssh": null, - "https://tailscale.com/cap/tailnet-lock": null, - "probe-udp-lifetime": null, - "ssh-behavior-v1": null, - "ssh-env-vars": null, - "store-appc-routes": null, - "tailnet-display-name": ["kratail2tid@passkey"] - }, - "ComputedName": "user-kris", - "ComputedNameWithHost": "user-kris" - }, - "AllCaps": [ - "ssh-env-vars", - "https://tailscale.com/cap/file-sharing", - "https://tailscale.com/cap/ssh", - "https://tailscale.com/cap/tailnet-lock", - "ssh-behavior-v1", - "https://tailscale.com/cap/is-admin", - "probe-udp-lifetime", - "store-appc-routes", - "tailnet-display-name" - ], - "NodeKey": "nodekey:40d0f8f49fd519e4a4a2b7d278dcc8863254d4fb8b0219f1d1304cdd172e795f", - "MachineKey": "mkey:ff16066d907c58407972ee4a05a30386bd21bc0b420d8f9290eb70b95b3e1457", "Peers": [], - "DNS": { - "Routes": { - "tail78f774.ts.net.": null, - "ts.net.": [{ "Addr": "199.247.155.53" }, { "Addr": "2620:111:8007::53" }] - }, - "Domains": ["tail78f774.ts.net"], - "Proxied": true, - "ExitNodeFilteredSet": [".ts.net", ".tailscale.net"] - }, - "PacketFilter": [], - "PacketFilterRules": null, - "SSHPolicy": { "rules": [] }, - "CollectServices": false, - "DERPMap": { - "Regions": { - "1": { - "RegionID": 1, - "RegionCode": "nyc", - "RegionName": "New York City", - "Latitude": 40.7128, - "Longitude": -74.006, - "Nodes": [ - { - "Name": "1h", - "RegionID": 1, - "HostName": "derp1h.tailscale.com", - "IPv4": "199.38.181.93", - "IPv6": "2607:f740:f::afd", - "CanPort80": true - }, - { - "Name": "1g", - "RegionID": 1, - "HostName": "derp1g.tailscale.com", - "IPv4": "209.177.145.120", - "IPv6": "2607:f740:f::3eb", - "CanPort80": true - }, - { - "Name": "1i", - "RegionID": 1, - "HostName": "derp1i.tailscale.com", - "IPv4": "199.38.181.103", - "IPv6": "2607:f740:f::e19", - "CanPort80": true - }, - { - "Name": "1f", - "RegionID": 1, - "HostName": "derp1f.tailscale.com", - "IPv4": "199.38.181.104", - "IPv6": "2607:f740:f::bc", - "CanPort80": true - } - ] - }, - "10": { - "RegionID": 10, - "RegionCode": "sea", - "RegionName": "Seattle", - "Latitude": 47.609722, - "Longitude": -122.333056, - "Nodes": [ - { - "Name": "10c", - "RegionID": 10, - "HostName": "derp10c.tailscale.com", - "IPv4": "192.73.240.121", - "IPv6": "2607:f740:14::40c", - "CanPort80": true - }, - { - "Name": "10d", - "RegionID": 10, - "HostName": "derp10d.tailscale.com", - "IPv4": "192.73.240.132", - "IPv6": "2607:f740:14::500", - "CanPort80": true - }, - { - "Name": "10b", - "RegionID": 10, - "HostName": "derp10b.tailscale.com", - "IPv4": "192.73.240.161", - "IPv6": "2607:f740:14::61c", - "CanPort80": true - } - ] - }, - "11": { - "RegionID": 11, - "RegionCode": "sao", - "RegionName": "São Paulo", - "Latitude": -23.55, - "Longitude": -46.633333, - "Nodes": [ - { - "Name": "11f", - "RegionID": 11, - "HostName": "derp11f.tailscale.com", - "IPv4": "172.237.61.197", - "IPv6": "2600:3c0d::2000:3bff:fe44:6166", - "CanPort80": true - }, - { - "Name": "11g", - "RegionID": 11, - "HostName": "derp11g.tailscale.com", - "IPv4": "172.237.61.190", - "IPv6": "2600:3c0d::2000:62ff:febe:2e67", - "CanPort80": true - }, - { - "Name": "11e", - "RegionID": 11, - "HostName": "derp11e.tailscale.com", - "IPv4": "172.237.61.194", - "IPv6": "2600:3c0d::2000:d2ff:fe43:1790", - "CanPort80": true - } - ] - }, - "12": { - "RegionID": 12, - "RegionCode": "ord", - "RegionName": "Chicago", - "Latitude": 41.881944, - "Longitude": -87.627778, - "Nodes": [ - { - "Name": "12e", - "RegionID": 12, - "HostName": "derp12e.tailscale.com", - "IPv4": "209.177.158.15", - "IPv6": "2607:f740:e::b17", - "CanPort80": true - }, - { - "Name": "12f", - "RegionID": 12, - "HostName": "derp12f.tailscale.com", - "IPv4": "199.38.182.118", - "IPv6": "2607:f740:e::4c8", - "CanPort80": true - }, - { - "Name": "12d", - "RegionID": 12, - "HostName": "derp12d.tailscale.com", - "IPv4": "209.177.158.246", - "IPv6": "2607:f740:e::811", - "CanPort80": true - } - ] - }, - "13": { - "RegionID": 13, - "RegionCode": "den", - "RegionName": "Denver", - "Latitude": 39.7392, - "Longitude": -104.9849, - "Nodes": [ - { - "Name": "13c", - "RegionID": 13, - "HostName": "derp13c.tailscale.com", - "IPv4": "192.73.242.28", - "IPv6": "2607:f740:16::5c", - "CanPort80": true - }, - { - "Name": "13d", - "RegionID": 13, - "HostName": "derp13d.tailscale.com", - "IPv4": "192.73.242.204", - "IPv6": "2607:f740:16::c23", - "CanPort80": true - }, - { - "Name": "13b", - "RegionID": 13, - "HostName": "derp13b.tailscale.com", - "IPv4": "192.73.242.187", - "IPv6": "2607:f740:16::640", - "CanPort80": true - } - ] - }, - "14": { - "RegionID": 14, - "RegionCode": "ams", - "RegionName": "Amsterdam", - "Latitude": 52.372778, - "Longitude": 4.893611, - "Nodes": [ - { - "Name": "14c", - "RegionID": 14, - "HostName": "derp14c.tailscale.com", - "IPv4": "176.58.93.147", - "IPv6": "2a00:dd80:3c::b09", - "CanPort80": true - }, - { - "Name": "14d", - "RegionID": 14, - "HostName": "derp14d.tailscale.com", - "IPv4": "176.58.93.154", - "IPv6": "2a00:dd80:3c::3d5", - "CanPort80": true - }, - { - "Name": "14b", - "RegionID": 14, - "HostName": "derp14b.tailscale.com", - "IPv4": "176.58.93.248", - "IPv6": "2a00:dd80:3c::807", - "CanPort80": true - } - ] - }, - "15": { - "RegionID": 15, - "RegionCode": "jnb", - "RegionName": "Johannesburg", - "Latitude": -26.204444, - "Longitude": 28.045556, - "Nodes": [ - { - "Name": "15c", - "RegionID": 15, - "HostName": "derp15c.tailscale.com", - "IPv4": "102.67.165.185", - "IPv6": "2c0f:edb0:0:10::b59", - "CanPort80": true - }, - { - "Name": "15d", - "RegionID": 15, - "HostName": "derp15d.tailscale.com", - "IPv4": "102.67.165.36", - "IPv6": "2c0f:edb0:0:10::599", - "CanPort80": true - }, - { - "Name": "15b", - "RegionID": 15, - "HostName": "derp15b.tailscale.com", - "IPv4": "102.67.165.90", - "IPv6": "2c0f:edb0:0:10::963", - "CanPort80": true - } - ] - }, - "16": { - "RegionID": 16, - "RegionCode": "mia", - "RegionName": "Miami", - "Latitude": 25.78, - "Longitude": -80.21, - "Nodes": [ - { - "Name": "16c", - "RegionID": 16, - "HostName": "derp16c.tailscale.com", - "IPv4": "192.73.243.229", - "IPv6": "2607:f740:17::4e4", - "CanPort80": true - }, - { - "Name": "16d", - "RegionID": 16, - "HostName": "derp16d.tailscale.com", - "IPv4": "192.73.243.141", - "IPv6": "2607:f740:17::475", - "CanPort80": true - }, - { - "Name": "16b", - "RegionID": 16, - "HostName": "derp16b.tailscale.com", - "IPv4": "192.73.243.135", - "IPv6": "2607:f740:17::476", - "CanPort80": true - } - ] - }, - "17": { - "RegionID": 17, - "RegionCode": "lax", - "RegionName": "Los Angeles", - "Latitude": 34.05, - "Longitude": -118.25, - "Nodes": [ - { - "Name": "17c", - "RegionID": 17, - "HostName": "derp17c.tailscale.com", - "IPv4": "208.111.40.12", - "IPv6": "2607:f740:c::10", - "CanPort80": true - }, - { - "Name": "17d", - "RegionID": 17, - "HostName": "derp17d.tailscale.com", - "IPv4": "208.111.40.216", - "IPv6": "2607:f740:c::e1b", - "CanPort80": true - }, - { - "Name": "17b", - "RegionID": 17, - "HostName": "derp17b.tailscale.com", - "IPv4": "192.73.244.245", - "IPv6": "2607:f740:c::646", - "CanPort80": true - } - ] - }, - "18": { - "RegionID": 18, - "RegionCode": "par", - "RegionName": "Paris", - "Latitude": 48.856667, - "Longitude": 2.352222, - "Nodes": [ - { - "Name": "18c", - "RegionID": 18, - "HostName": "derp18c.tailscale.com", - "IPv4": "176.58.90.207", - "IPv6": "2a00:dd80:3e::c19", - "CanPort80": true - }, - { - "Name": "18d", - "RegionID": 18, - "HostName": "derp18d.tailscale.com", - "IPv4": "176.58.90.104", - "IPv6": "2a00:dd80:3e::f2e", - "CanPort80": true - }, - { - "Name": "18b", - "RegionID": 18, - "HostName": "derp18b.tailscale.com", - "IPv4": "176.58.90.147", - "IPv6": "2a00:dd80:3e::363", - "CanPort80": true - } - ] - }, - "19": { - "RegionID": 19, - "RegionCode": "mad", - "RegionName": "Madrid", - "Latitude": 40.416944, - "Longitude": -3.703333, - "Nodes": [ - { - "Name": "19c", - "RegionID": 19, - "HostName": "derp19c.tailscale.com", - "IPv4": "45.159.97.61", - "IPv6": "2a00:dd80:14:10::20", - "CanPort80": true - }, - { - "Name": "19d", - "RegionID": 19, - "HostName": "derp19d.tailscale.com", - "IPv4": "45.159.97.233", - "IPv6": "2a00:dd80:14:10::34a", - "CanPort80": true - }, - { - "Name": "19b", - "RegionID": 19, - "HostName": "derp19b.tailscale.com", - "IPv4": "45.159.97.144", - "IPv6": "2a00:dd80:14:10::335", - "CanPort80": true - } - ] - }, - "2": { - "RegionID": 2, - "RegionCode": "sfo", - "RegionName": "San Francisco", - "Latitude": 37.7775, - "Longitude": -122.416389, - "Nodes": [ - { - "Name": "2e", - "RegionID": 2, - "HostName": "derp2e.tailscale.com", - "IPv4": "192.73.252.134", - "IPv6": "2607:f740:0:3f::44c", - "CanPort80": true - }, - { - "Name": "2f", - "RegionID": 2, - "HostName": "derp2f.tailscale.com", - "IPv4": "208.111.34.178", - "IPv6": "2607:f740:0:3f::f4", - "CanPort80": true - }, - { - "Name": "2d", - "RegionID": 2, - "HostName": "derp2d.tailscale.com", - "IPv4": "192.73.252.65", - "IPv6": "2607:f740:0:3f::287", - "CanPort80": true - } - ] - }, - "20": { - "RegionID": 20, - "RegionCode": "hkg", - "RegionName": "Hong Kong", - "Latitude": 22.3193, - "Longitude": 114.1694, - "Nodes": [ - { - "Name": "20c", - "RegionID": 20, - "HostName": "derp20c.tailscale.com", - "IPv4": "205.147.105.30", - "IPv6": "2403:2500:8000:1::5fb", - "CanPort80": true - }, - { - "Name": "20d", - "RegionID": 20, - "HostName": "derp20d.tailscale.com", - "IPv4": "205.147.105.78", - "IPv6": "2403:2500:8000:1::e9a", - "CanPort80": true - }, - { - "Name": "20b", - "RegionID": 20, - "HostName": "derp20b.tailscale.com", - "IPv4": "103.6.84.152", - "IPv6": "2403:2500:8000:1::ef6", - "CanPort80": true - } - ] - }, - "21": { - "RegionID": 21, - "RegionCode": "tor", - "RegionName": "Toronto", - "Latitude": 43.741667, - "Longitude": -79.373333, - "Nodes": [ - { - "Name": "21c", - "RegionID": 21, - "HostName": "derp21c.tailscale.com", - "IPv4": "162.248.221.215", - "IPv6": "2607:f740:50::f10", - "CanPort80": true - }, - { - "Name": "21d", - "RegionID": 21, - "HostName": "derp21d.tailscale.com", - "IPv4": "162.248.221.248", - "IPv6": "2607:f740:50::ca4", - "CanPort80": true - }, - { - "Name": "21b", - "RegionID": 21, - "HostName": "derp21b.tailscale.com", - "IPv4": "162.248.221.199", - "IPv6": "2607:f740:50::1d1", - "CanPort80": true - } - ] - }, - "22": { - "RegionID": 22, - "RegionCode": "waw", - "RegionName": "Warsaw", - "Latitude": 52.23, - "Longitude": 21.011111, - "Nodes": [ - { - "Name": "22c", - "RegionID": 22, - "HostName": "derp22c.tailscale.com", - "IPv4": "45.159.98.253", - "IPv6": "2a00:dd80:40:100::3f", - "CanPort80": true - }, - { - "Name": "22d", - "RegionID": 22, - "HostName": "derp22d.tailscale.com", - "IPv4": "45.159.98.145", - "IPv6": "2a00:dd80:40:100::211", - "CanPort80": true - }, - { - "Name": "22b", - "RegionID": 22, - "HostName": "derp22b.tailscale.com", - "IPv4": "45.159.98.196", - "IPv6": "2a00:dd80:40:100::316", - "CanPort80": true - } - ] - }, - "23": { - "RegionID": 23, - "RegionCode": "dbi", - "RegionName": "Dubai", - "Latitude": 25.263056, - "Longitude": 55.297222, - "Nodes": [ - { - "Name": "23c", - "RegionID": 23, - "HostName": "derp23c.tailscale.com", - "IPv4": "185.34.3.207", - "IPv6": "2a00:dd80:3f:100::a50", - "CanPort80": true - }, - { - "Name": "23d", - "RegionID": 23, - "HostName": "derp23d.tailscale.com", - "IPv4": "185.34.3.75", - "IPv6": "2a00:dd80:3f:100::97e", - "CanPort80": true - }, - { - "Name": "23b", - "RegionID": 23, - "HostName": "derp23b.tailscale.com", - "IPv4": "185.34.3.232", - "IPv6": "2a00:dd80:3f:100::76f", - "CanPort80": true - } - ] - }, - "24": { - "RegionID": 24, - "RegionCode": "hnl", - "RegionName": "Honolulu", - "Latitude": 21.306944, - "Longitude": -157.858333, - "Nodes": [ - { - "Name": "24c", - "RegionID": 24, - "HostName": "derp24c.tailscale.com", - "IPv4": "208.83.233.233", - "IPv6": "2001:19f0:c000:c591:5400:04ff:fe26:2c5f", - "CanPort80": true - }, - { - "Name": "24d", - "RegionID": 24, - "HostName": "derp24d.tailscale.com", - "IPv4": "208.72.155.133", - "IPv6": "2001:19f0:c000:c564:5400:04ff:fe26:2ba8", - "CanPort80": true - }, - { - "Name": "24b", - "RegionID": 24, - "HostName": "derp24b.tailscale.com", - "IPv4": "208.83.234.151", - "IPv6": "2001:19f0:c000:c586:5400:04ff:fe26:2ba6", - "CanPort80": true - } - ] - }, - "25": { - "RegionID": 25, - "RegionCode": "nai", - "RegionName": "Nairobi", - "Latitude": -1.286389, - "Longitude": 36.817222, - "Nodes": [ - { - "Name": "25c", - "RegionID": 25, - "HostName": "derp25c.tailscale.com", - "IPv4": "102.67.167.37", - "IPv6": "2c0f:edb0:2000:1::2c7", - "CanPort80": true - }, - { - "Name": "25d", - "RegionID": 25, - "HostName": "derp25d.tailscale.com", - "IPv4": "102.67.167.188", - "IPv6": "2c0f:edb0:2000:1::188", - "CanPort80": true - }, - { - "Name": "25b", - "RegionID": 25, - "HostName": "derp25b.tailscale.com", - "IPv4": "102.67.167.245", - "IPv6": "2c0f:edb0:2000:1::2e9", - "CanPort80": true - } - ] - }, - "26": { - "RegionID": 26, - "RegionCode": "nue", - "RegionName": "Nuremberg", - "Latitude": 49.453889, - "Longitude": 11.0775, - "Nodes": [ - { - "Name": "26c", - "RegionID": 26, - "HostName": "derp26c.tailscale.com", - "IPv4": "49.12.193.137", - "IPv6": "2a01:4f8:1c1c:5c70::1", - "CanPort80": true - }, - { - "Name": "26d", - "RegionID": 26, - "HostName": "derp26d.tailscale.com", - "IPv4": "49.13.204.141", - "IPv6": "2a01:4f8:1c0c:7d06::1", - "CanPort80": true - }, - { - "Name": "26b", - "RegionID": 26, - "HostName": "derp26b.tailscale.com", - "IPv4": "167.235.72.200", - "IPv6": "2a01:4f8:1c1c:47b6::1", - "CanPort80": true - } - ] - }, - "27": { - "RegionID": 27, - "RegionCode": "iad", - "RegionName": "Ashburn", - "Latitude": 39.03, - "Longitude": -77.471111, - "Nodes": [ - { - "Name": "27d", - "RegionID": 27, - "HostName": "derp27d.tailscale.com", - "IPv4": "178.156.152.106", - "IPv6": "2a01:4ff:f0:3c8e::1", - "CanPort80": true - }, - { - "Name": "27c", - "RegionID": 27, - "HostName": "derp27c.tailscale.com", - "IPv4": "178.156.152.91", - "IPv6": "2a01:4ff:f0:3913::1", - "CanPort80": true - }, - { - "Name": "27e", - "RegionID": 27, - "HostName": "derp27e.tailscale.com", - "IPv4": "178.156.134.232", - "IPv6": "2a01:4ff:f0:28d4::1", - "CanPort80": true - }, - { - "Name": "27b", - "RegionID": 27, - "HostName": "derp27b.tailscale.com", - "IPv4": "5.161.218.233", - "IPv6": "2a01:4ff:f0:3db9::1", - "CanPort80": true - } - ] - }, - "28": { - "RegionID": 28, - "RegionCode": "hel", - "RegionName": "Helsinki", - "Latitude": 60.170833, - "Longitude": 24.9375, - "Nodes": [ - { - "Name": "28c", - "RegionID": 28, - "HostName": "derp28c.tailscale.com", - "IPv4": "95.217.2.165", - "IPv6": "2a01:4f9:c012:cd74::1", - "CanPort80": true - }, - { - "Name": "28d", - "RegionID": 28, - "HostName": "derp28d.tailscale.com", - "IPv4": "157.180.28.32", - "IPv6": "2a01:4f9:c012:2e5b::1", - "CanPort80": true - }, - { - "Name": "28b", - "RegionID": 28, - "HostName": "derp28b.tailscale.com", - "IPv4": "65.109.143.62", - "IPv6": "2a01:4f9:c012:d55c::1", - "CanPort80": true - } - ] - }, - "3": { - "RegionID": 3, - "RegionCode": "sin", - "RegionName": "Singapore", - "Latitude": 1.3521, - "Longitude": 103.8198, - "Nodes": [ - { - "Name": "3g", - "RegionID": 3, - "HostName": "derp3g.tailscale.com", - "IPv4": "172.237.72.79", - "IPv6": "2600:3c15::2000:adff:fe08:6fab", - "CanPort80": true - }, - { - "Name": "3f", - "RegionID": 3, - "HostName": "derp3f.tailscale.com", - "IPv4": "172.237.72.8", - "IPv6": "2600:3c15::2000:53ff:fe48:a668", - "CanPort80": true - }, - { - "Name": "3h", - "RegionID": 3, - "HostName": "derp3h.tailscale.com", - "IPv4": "172.237.66.30", - "IPv6": "2600:3c15::2000:3dff:fe44:50aa", - "CanPort80": true - }, - { - "Name": "3e", - "RegionID": 3, - "HostName": "derp3e.tailscale.com", - "IPv4": "172.237.72.43", - "IPv6": "2600:3c15::2000:6cff:fee4:d799", - "CanPort80": true - } - ] - }, - "4": { - "RegionID": 4, - "RegionCode": "fra", - "RegionName": "Frankfurt", - "Latitude": 50.1109, - "Longitude": 8.6821, - "Nodes": [ - { - "Name": "4h", - "RegionID": 4, - "HostName": "derp4h.tailscale.com", - "IPv4": "185.40.234.77", - "IPv6": "2a00:dd80:20::bcf", - "CanPort80": true - }, - { - "Name": "4g", - "RegionID": 4, - "HostName": "derp4g.tailscale.com", - "IPv4": "185.40.234.113", - "IPv6": "2a00:dd80:20::8f", - "CanPort80": true - }, - { - "Name": "4i", - "RegionID": 4, - "HostName": "derp4i.tailscale.com", - "IPv4": "185.40.234.53", - "IPv6": "2a00:dd80:20::8a6", - "CanPort80": true - }, - { - "Name": "4f", - "RegionID": 4, - "HostName": "derp4f.tailscale.com", - "IPv4": "185.40.234.219", - "IPv6": "2a00:dd80:20::a25", - "CanPort80": true - } - ] - }, - "5": { - "RegionID": 5, - "RegionCode": "syd", - "RegionName": "Sydney", - "Latitude": -33.867778, - "Longitude": 151.21, - "Nodes": [ - { - "Name": "5f", - "RegionID": 5, - "HostName": "derp5f.tailscale.com", - "IPv4": "172.105.166.103", - "IPv6": "2400:8907::2000:ccff:fe1f:80da", - "CanPort80": true - }, - { - "Name": "5g", - "RegionID": 5, - "HostName": "derp5g.tailscale.com", - "IPv4": "172.105.169.57", - "IPv6": "2400:8907::2000:2fff:fea7:57f4", - "CanPort80": true - }, - { - "Name": "5e", - "RegionID": 5, - "HostName": "derp5e.tailscale.com", - "IPv4": "172.105.179.230", - "IPv6": "2400:8907::2000:ceff:fe8d:4f4e", - "CanPort80": true - } - ] - }, - "6": { - "RegionID": 6, - "RegionCode": "blr", - "RegionName": "Bengaluru", - "Latitude": 12.9716, - "Longitude": 77.5946, - "Nodes": [ - { - "Name": "6a", - "RegionID": 6, - "HostName": "derp6.tailscale.com", - "IPv4": "68.183.90.120", - "IPv6": "2400:6180:100:d0::982:d001", - "CanPort80": true - } - ] - }, - "7": { - "RegionID": 7, - "RegionCode": "tok", - "RegionName": "Tokyo", - "Latitude": 35.6764, - "Longitude": 139.65, - "Nodes": [ - { - "Name": "7g", - "RegionID": 7, - "HostName": "derp7g.tailscale.com", - "IPv4": "172.238.6.179", - "IPv6": "2600:3c18::2000:3fff:fe80:3ebd", - "CanPort80": true - }, - { - "Name": "7f", - "RegionID": 7, - "HostName": "derp7f.tailscale.com", - "IPv4": "172.238.6.34", - "IPv6": "2600:3c18::2000:acff:fe8e:3ed5", - "CanPort80": true - }, - { - "Name": "7h", - "RegionID": 7, - "HostName": "derp7h.tailscale.com", - "IPv4": "172.237.28.183", - "IPv6": "2600:3c18::2000:b1ff:fea9:4560", - "CanPort80": true - }, - { - "Name": "7e", - "RegionID": 7, - "HostName": "derp7e.tailscale.com", - "IPv4": "172.238.6.180", - "IPv6": "2600:3c18::2000:60ff:fe0f:6e83", - "STUNOnly": true, - "CanPort80": true - } - ] - }, - "8": { - "RegionID": 8, - "RegionCode": "lhr", - "RegionName": "London", - "Latitude": 51.5072, - "Longitude": 0.1276, - "Nodes": [ - { - "Name": "8f", - "RegionID": 8, - "HostName": "derp8f.tailscale.com", - "IPv4": "176.58.88.183", - "IPv6": "2a00:dd80:3a::dfa", - "CanPort80": true - }, - { - "Name": "8g", - "RegionID": 8, - "HostName": "derp8g.tailscale.com", - "IPv4": "176.58.92.254", - "IPv6": "2a00:dd80:3a::ed", - "CanPort80": true - }, - { - "Name": "8e", - "RegionID": 8, - "HostName": "derp8e.tailscale.com", - "IPv4": "176.58.92.144", - "IPv6": "2a00:dd80:3a::b33", - "CanPort80": true - } - ] - }, - "9": { - "RegionID": 9, - "RegionCode": "dfw", - "RegionName": "Dallas", - "Latitude": 32.779167, - "Longitude": -96.808889, - "Nodes": [ - { - "Name": "9e", - "RegionID": 9, - "HostName": "derp9e.tailscale.com", - "IPv4": "192.73.248.83", - "IPv6": "2607:f740:100::359", - "CanPort80": true - }, - { - "Name": "9f", - "RegionID": 9, - "HostName": "derp9f.tailscale.com", - "IPv4": "209.177.156.197", - "IPv6": "2607:f740:100::cad", - "CanPort80": true - }, - { - "Name": "9d", - "RegionID": 9, - "HostName": "derp9d.tailscale.com", - "IPv4": "209.177.156.94", - "IPv6": "2607:f740:100::c05", - "CanPort80": true - } - ] - } - } - }, - "DisplayMessages": null, - "TKAEnabled": false, - "TKAHead": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", - "Domain": "kratail2tid@passkey", - "DomainAuditLogID": "", - "UserProfiles": { - "4538565228176803": { - "ID": 4538565228176803, - "LoginName": "kristoffer@dalby.cc", - "DisplayName": "kristoffer" - } - } + "PacketFilterRules": 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.124.195.93": { - "peer_name": "exit-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-mon/tailscaled.sock whois --json 100.124.195.93", - "response": null - }, - "100.116.18.24": { - "peer_name": "exit-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-mon/tailscaled.sock whois --json 100.116.18.24", - "response": null - }, - "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.107.162.14": { - "peer_name": "group-a-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-mon/tailscaled.sock whois --json 100.107.162.14", - "response": null - }, - "100.77.135.18": { - "peer_name": "group-b-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-mon/tailscaled.sock whois --json 100.77.135.18", - "response": null - }, - "100.105.127.107": { - "peer_name": "multi-exit-router", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-mon/tailscaled.sock whois --json 100.105.127.107", - "response": null - }, - "100.109.43.124": { - "peer_name": "router-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-mon/tailscaled.sock whois --json 100.109.43.124", - "response": null - }, - "100.65.172.123": { - "peer_name": "router-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-mon/tailscaled.sock whois --json 100.65.172.123", - "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 - } - }, "netmap": { - "SelfNode": { - "ID": 1840115676059256, - "StableID": "nFzZ7giPNF11CNTRL", - "Name": "user-mon.tail78f774.ts.net.", - "User": 3982058329734709, - "Key": "nodekey:1ca6cca66d2b3811ec290c2f7ac30125c3568e19e303a8e30f6b165c9ee75a51", - "KeyExpiry": "2026-08-19T14:09:00Z", - "DiscoKey": "discokey:67ba1473894f09b564073adb12b27df2a45c513afd9e48922a0346d5d2715d12", - "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:36593", "10.65.0.27:36593", "172.17.0.1:36593"], - "Hostinfo": { - "Hostname": "user-mon", - "Services": [ - { "Proto": "peerapi4", "Port": 33201 }, - { "Proto": "peerapi6", "Port": 33201 }, - { "Proto": "peerapi-dns-proxy", "Port": 1 } - ] - }, - "Created": "2026-02-20T14:09:00.203639664Z", - "MachineAuthorized": true, - "CapMap": { - "https://tailscale.com/cap/file-sharing": null, - "https://tailscale.com/cap/is-admin": null, - "https://tailscale.com/cap/ssh": null, - "https://tailscale.com/cap/tailnet-lock": null, - "probe-udp-lifetime": null, - "ssh-behavior-v1": null, - "ssh-env-vars": null, - "store-appc-routes": null, - "tailnet-display-name": ["kratail2tid@passkey"] - }, - "ComputedName": "user-mon", - "ComputedNameWithHost": "user-mon" - }, - "AllCaps": [ - "https://tailscale.com/cap/file-sharing", - "probe-udp-lifetime", - "ssh-env-vars", - "https://tailscale.com/cap/is-admin", - "store-appc-routes", - "https://tailscale.com/cap/ssh", - "tailnet-display-name", - "ssh-behavior-v1", - "https://tailscale.com/cap/tailnet-lock" - ], - "NodeKey": "nodekey:1ca6cca66d2b3811ec290c2f7ac30125c3568e19e303a8e30f6b165c9ee75a51", - "MachineKey": "mkey:d63fc325663eef5dabd4d236e1fa5a26ed14ad31ea0711840cf755a5e8a9df39", "Peers": [], - "DNS": { - "Routes": { - "tail78f774.ts.net.": null, - "ts.net.": [{ "Addr": "199.247.155.53" }, { "Addr": "2620:111:8007::53" }] - }, - "Domains": ["tail78f774.ts.net"], - "Proxied": true, - "ExitNodeFilteredSet": [".ts.net", ".tailscale.net"] - }, - "PacketFilter": [], - "PacketFilterRules": null, - "SSHPolicy": { "rules": [] }, - "CollectServices": false, - "DERPMap": { - "Regions": { - "1": { - "RegionID": 1, - "RegionCode": "nyc", - "RegionName": "New York City", - "Latitude": 40.7128, - "Longitude": -74.006, - "Nodes": [ - { - "Name": "1h", - "RegionID": 1, - "HostName": "derp1h.tailscale.com", - "IPv4": "199.38.181.93", - "IPv6": "2607:f740:f::afd", - "CanPort80": true - }, - { - "Name": "1g", - "RegionID": 1, - "HostName": "derp1g.tailscale.com", - "IPv4": "209.177.145.120", - "IPv6": "2607:f740:f::3eb", - "CanPort80": true - }, - { - "Name": "1i", - "RegionID": 1, - "HostName": "derp1i.tailscale.com", - "IPv4": "199.38.181.103", - "IPv6": "2607:f740:f::e19", - "CanPort80": true - }, - { - "Name": "1f", - "RegionID": 1, - "HostName": "derp1f.tailscale.com", - "IPv4": "199.38.181.104", - "IPv6": "2607:f740:f::bc", - "CanPort80": true - } - ] - }, - "10": { - "RegionID": 10, - "RegionCode": "sea", - "RegionName": "Seattle", - "Latitude": 47.609722, - "Longitude": -122.333056, - "Nodes": [ - { - "Name": "10c", - "RegionID": 10, - "HostName": "derp10c.tailscale.com", - "IPv4": "192.73.240.121", - "IPv6": "2607:f740:14::40c", - "CanPort80": true - }, - { - "Name": "10d", - "RegionID": 10, - "HostName": "derp10d.tailscale.com", - "IPv4": "192.73.240.132", - "IPv6": "2607:f740:14::500", - "CanPort80": true - }, - { - "Name": "10b", - "RegionID": 10, - "HostName": "derp10b.tailscale.com", - "IPv4": "192.73.240.161", - "IPv6": "2607:f740:14::61c", - "CanPort80": true - } - ] - }, - "11": { - "RegionID": 11, - "RegionCode": "sao", - "RegionName": "São Paulo", - "Latitude": -23.55, - "Longitude": -46.633333, - "Nodes": [ - { - "Name": "11f", - "RegionID": 11, - "HostName": "derp11f.tailscale.com", - "IPv4": "172.237.61.197", - "IPv6": "2600:3c0d::2000:3bff:fe44:6166", - "CanPort80": true - }, - { - "Name": "11g", - "RegionID": 11, - "HostName": "derp11g.tailscale.com", - "IPv4": "172.237.61.190", - "IPv6": "2600:3c0d::2000:62ff:febe:2e67", - "CanPort80": true - }, - { - "Name": "11e", - "RegionID": 11, - "HostName": "derp11e.tailscale.com", - "IPv4": "172.237.61.194", - "IPv6": "2600:3c0d::2000:d2ff:fe43:1790", - "CanPort80": true - } - ] - }, - "12": { - "RegionID": 12, - "RegionCode": "ord", - "RegionName": "Chicago", - "Latitude": 41.881944, - "Longitude": -87.627778, - "Nodes": [ - { - "Name": "12e", - "RegionID": 12, - "HostName": "derp12e.tailscale.com", - "IPv4": "209.177.158.15", - "IPv6": "2607:f740:e::b17", - "CanPort80": true - }, - { - "Name": "12f", - "RegionID": 12, - "HostName": "derp12f.tailscale.com", - "IPv4": "199.38.182.118", - "IPv6": "2607:f740:e::4c8", - "CanPort80": true - }, - { - "Name": "12d", - "RegionID": 12, - "HostName": "derp12d.tailscale.com", - "IPv4": "209.177.158.246", - "IPv6": "2607:f740:e::811", - "CanPort80": true - } - ] - }, - "13": { - "RegionID": 13, - "RegionCode": "den", - "RegionName": "Denver", - "Latitude": 39.7392, - "Longitude": -104.9849, - "Nodes": [ - { - "Name": "13c", - "RegionID": 13, - "HostName": "derp13c.tailscale.com", - "IPv4": "192.73.242.28", - "IPv6": "2607:f740:16::5c", - "CanPort80": true - }, - { - "Name": "13d", - "RegionID": 13, - "HostName": "derp13d.tailscale.com", - "IPv4": "192.73.242.204", - "IPv6": "2607:f740:16::c23", - "CanPort80": true - }, - { - "Name": "13b", - "RegionID": 13, - "HostName": "derp13b.tailscale.com", - "IPv4": "192.73.242.187", - "IPv6": "2607:f740:16::640", - "CanPort80": true - } - ] - }, - "14": { - "RegionID": 14, - "RegionCode": "ams", - "RegionName": "Amsterdam", - "Latitude": 52.372778, - "Longitude": 4.893611, - "Nodes": [ - { - "Name": "14c", - "RegionID": 14, - "HostName": "derp14c.tailscale.com", - "IPv4": "176.58.93.147", - "IPv6": "2a00:dd80:3c::b09", - "CanPort80": true - }, - { - "Name": "14d", - "RegionID": 14, - "HostName": "derp14d.tailscale.com", - "IPv4": "176.58.93.154", - "IPv6": "2a00:dd80:3c::3d5", - "CanPort80": true - }, - { - "Name": "14b", - "RegionID": 14, - "HostName": "derp14b.tailscale.com", - "IPv4": "176.58.93.248", - "IPv6": "2a00:dd80:3c::807", - "CanPort80": true - } - ] - }, - "15": { - "RegionID": 15, - "RegionCode": "jnb", - "RegionName": "Johannesburg", - "Latitude": -26.204444, - "Longitude": 28.045556, - "Nodes": [ - { - "Name": "15c", - "RegionID": 15, - "HostName": "derp15c.tailscale.com", - "IPv4": "102.67.165.185", - "IPv6": "2c0f:edb0:0:10::b59", - "CanPort80": true - }, - { - "Name": "15d", - "RegionID": 15, - "HostName": "derp15d.tailscale.com", - "IPv4": "102.67.165.36", - "IPv6": "2c0f:edb0:0:10::599", - "CanPort80": true - }, - { - "Name": "15b", - "RegionID": 15, - "HostName": "derp15b.tailscale.com", - "IPv4": "102.67.165.90", - "IPv6": "2c0f:edb0:0:10::963", - "CanPort80": true - } - ] - }, - "16": { - "RegionID": 16, - "RegionCode": "mia", - "RegionName": "Miami", - "Latitude": 25.78, - "Longitude": -80.21, - "Nodes": [ - { - "Name": "16c", - "RegionID": 16, - "HostName": "derp16c.tailscale.com", - "IPv4": "192.73.243.229", - "IPv6": "2607:f740:17::4e4", - "CanPort80": true - }, - { - "Name": "16d", - "RegionID": 16, - "HostName": "derp16d.tailscale.com", - "IPv4": "192.73.243.141", - "IPv6": "2607:f740:17::475", - "CanPort80": true - }, - { - "Name": "16b", - "RegionID": 16, - "HostName": "derp16b.tailscale.com", - "IPv4": "192.73.243.135", - "IPv6": "2607:f740:17::476", - "CanPort80": true - } - ] - }, - "17": { - "RegionID": 17, - "RegionCode": "lax", - "RegionName": "Los Angeles", - "Latitude": 34.05, - "Longitude": -118.25, - "Nodes": [ - { - "Name": "17c", - "RegionID": 17, - "HostName": "derp17c.tailscale.com", - "IPv4": "208.111.40.12", - "IPv6": "2607:f740:c::10", - "CanPort80": true - }, - { - "Name": "17d", - "RegionID": 17, - "HostName": "derp17d.tailscale.com", - "IPv4": "208.111.40.216", - "IPv6": "2607:f740:c::e1b", - "CanPort80": true - }, - { - "Name": "17b", - "RegionID": 17, - "HostName": "derp17b.tailscale.com", - "IPv4": "192.73.244.245", - "IPv6": "2607:f740:c::646", - "CanPort80": true - } - ] - }, - "18": { - "RegionID": 18, - "RegionCode": "par", - "RegionName": "Paris", - "Latitude": 48.856667, - "Longitude": 2.352222, - "Nodes": [ - { - "Name": "18c", - "RegionID": 18, - "HostName": "derp18c.tailscale.com", - "IPv4": "176.58.90.207", - "IPv6": "2a00:dd80:3e::c19", - "CanPort80": true - }, - { - "Name": "18d", - "RegionID": 18, - "HostName": "derp18d.tailscale.com", - "IPv4": "176.58.90.104", - "IPv6": "2a00:dd80:3e::f2e", - "CanPort80": true - }, - { - "Name": "18b", - "RegionID": 18, - "HostName": "derp18b.tailscale.com", - "IPv4": "176.58.90.147", - "IPv6": "2a00:dd80:3e::363", - "CanPort80": true - } - ] - }, - "19": { - "RegionID": 19, - "RegionCode": "mad", - "RegionName": "Madrid", - "Latitude": 40.416944, - "Longitude": -3.703333, - "Nodes": [ - { - "Name": "19c", - "RegionID": 19, - "HostName": "derp19c.tailscale.com", - "IPv4": "45.159.97.61", - "IPv6": "2a00:dd80:14:10::20", - "CanPort80": true - }, - { - "Name": "19d", - "RegionID": 19, - "HostName": "derp19d.tailscale.com", - "IPv4": "45.159.97.233", - "IPv6": "2a00:dd80:14:10::34a", - "CanPort80": true - }, - { - "Name": "19b", - "RegionID": 19, - "HostName": "derp19b.tailscale.com", - "IPv4": "45.159.97.144", - "IPv6": "2a00:dd80:14:10::335", - "CanPort80": true - } - ] - }, - "2": { - "RegionID": 2, - "RegionCode": "sfo", - "RegionName": "San Francisco", - "Latitude": 37.7775, - "Longitude": -122.416389, - "Nodes": [ - { - "Name": "2e", - "RegionID": 2, - "HostName": "derp2e.tailscale.com", - "IPv4": "192.73.252.134", - "IPv6": "2607:f740:0:3f::44c", - "CanPort80": true - }, - { - "Name": "2f", - "RegionID": 2, - "HostName": "derp2f.tailscale.com", - "IPv4": "208.111.34.178", - "IPv6": "2607:f740:0:3f::f4", - "CanPort80": true - }, - { - "Name": "2d", - "RegionID": 2, - "HostName": "derp2d.tailscale.com", - "IPv4": "192.73.252.65", - "IPv6": "2607:f740:0:3f::287", - "CanPort80": true - } - ] - }, - "20": { - "RegionID": 20, - "RegionCode": "hkg", - "RegionName": "Hong Kong", - "Latitude": 22.3193, - "Longitude": 114.1694, - "Nodes": [ - { - "Name": "20c", - "RegionID": 20, - "HostName": "derp20c.tailscale.com", - "IPv4": "205.147.105.30", - "IPv6": "2403:2500:8000:1::5fb", - "CanPort80": true - }, - { - "Name": "20d", - "RegionID": 20, - "HostName": "derp20d.tailscale.com", - "IPv4": "205.147.105.78", - "IPv6": "2403:2500:8000:1::e9a", - "CanPort80": true - }, - { - "Name": "20b", - "RegionID": 20, - "HostName": "derp20b.tailscale.com", - "IPv4": "103.6.84.152", - "IPv6": "2403:2500:8000:1::ef6", - "CanPort80": true - } - ] - }, - "21": { - "RegionID": 21, - "RegionCode": "tor", - "RegionName": "Toronto", - "Latitude": 43.741667, - "Longitude": -79.373333, - "Nodes": [ - { - "Name": "21c", - "RegionID": 21, - "HostName": "derp21c.tailscale.com", - "IPv4": "162.248.221.215", - "IPv6": "2607:f740:50::f10", - "CanPort80": true - }, - { - "Name": "21d", - "RegionID": 21, - "HostName": "derp21d.tailscale.com", - "IPv4": "162.248.221.248", - "IPv6": "2607:f740:50::ca4", - "CanPort80": true - }, - { - "Name": "21b", - "RegionID": 21, - "HostName": "derp21b.tailscale.com", - "IPv4": "162.248.221.199", - "IPv6": "2607:f740:50::1d1", - "CanPort80": true - } - ] - }, - "22": { - "RegionID": 22, - "RegionCode": "waw", - "RegionName": "Warsaw", - "Latitude": 52.23, - "Longitude": 21.011111, - "Nodes": [ - { - "Name": "22c", - "RegionID": 22, - "HostName": "derp22c.tailscale.com", - "IPv4": "45.159.98.253", - "IPv6": "2a00:dd80:40:100::3f", - "CanPort80": true - }, - { - "Name": "22d", - "RegionID": 22, - "HostName": "derp22d.tailscale.com", - "IPv4": "45.159.98.145", - "IPv6": "2a00:dd80:40:100::211", - "CanPort80": true - }, - { - "Name": "22b", - "RegionID": 22, - "HostName": "derp22b.tailscale.com", - "IPv4": "45.159.98.196", - "IPv6": "2a00:dd80:40:100::316", - "CanPort80": true - } - ] - }, - "23": { - "RegionID": 23, - "RegionCode": "dbi", - "RegionName": "Dubai", - "Latitude": 25.263056, - "Longitude": 55.297222, - "Nodes": [ - { - "Name": "23c", - "RegionID": 23, - "HostName": "derp23c.tailscale.com", - "IPv4": "185.34.3.207", - "IPv6": "2a00:dd80:3f:100::a50", - "CanPort80": true - }, - { - "Name": "23d", - "RegionID": 23, - "HostName": "derp23d.tailscale.com", - "IPv4": "185.34.3.75", - "IPv6": "2a00:dd80:3f:100::97e", - "CanPort80": true - }, - { - "Name": "23b", - "RegionID": 23, - "HostName": "derp23b.tailscale.com", - "IPv4": "185.34.3.232", - "IPv6": "2a00:dd80:3f:100::76f", - "CanPort80": true - } - ] - }, - "24": { - "RegionID": 24, - "RegionCode": "hnl", - "RegionName": "Honolulu", - "Latitude": 21.306944, - "Longitude": -157.858333, - "Nodes": [ - { - "Name": "24c", - "RegionID": 24, - "HostName": "derp24c.tailscale.com", - "IPv4": "208.83.233.233", - "IPv6": "2001:19f0:c000:c591:5400:04ff:fe26:2c5f", - "CanPort80": true - }, - { - "Name": "24d", - "RegionID": 24, - "HostName": "derp24d.tailscale.com", - "IPv4": "208.72.155.133", - "IPv6": "2001:19f0:c000:c564:5400:04ff:fe26:2ba8", - "CanPort80": true - }, - { - "Name": "24b", - "RegionID": 24, - "HostName": "derp24b.tailscale.com", - "IPv4": "208.83.234.151", - "IPv6": "2001:19f0:c000:c586:5400:04ff:fe26:2ba6", - "CanPort80": true - } - ] - }, - "25": { - "RegionID": 25, - "RegionCode": "nai", - "RegionName": "Nairobi", - "Latitude": -1.286389, - "Longitude": 36.817222, - "Nodes": [ - { - "Name": "25c", - "RegionID": 25, - "HostName": "derp25c.tailscale.com", - "IPv4": "102.67.167.37", - "IPv6": "2c0f:edb0:2000:1::2c7", - "CanPort80": true - }, - { - "Name": "25d", - "RegionID": 25, - "HostName": "derp25d.tailscale.com", - "IPv4": "102.67.167.188", - "IPv6": "2c0f:edb0:2000:1::188", - "CanPort80": true - }, - { - "Name": "25b", - "RegionID": 25, - "HostName": "derp25b.tailscale.com", - "IPv4": "102.67.167.245", - "IPv6": "2c0f:edb0:2000:1::2e9", - "CanPort80": true - } - ] - }, - "26": { - "RegionID": 26, - "RegionCode": "nue", - "RegionName": "Nuremberg", - "Latitude": 49.453889, - "Longitude": 11.0775, - "Nodes": [ - { - "Name": "26c", - "RegionID": 26, - "HostName": "derp26c.tailscale.com", - "IPv4": "49.12.193.137", - "IPv6": "2a01:4f8:1c1c:5c70::1", - "CanPort80": true - }, - { - "Name": "26d", - "RegionID": 26, - "HostName": "derp26d.tailscale.com", - "IPv4": "49.13.204.141", - "IPv6": "2a01:4f8:1c0c:7d06::1", - "CanPort80": true - }, - { - "Name": "26b", - "RegionID": 26, - "HostName": "derp26b.tailscale.com", - "IPv4": "167.235.72.200", - "IPv6": "2a01:4f8:1c1c:47b6::1", - "CanPort80": true - } - ] - }, - "27": { - "RegionID": 27, - "RegionCode": "iad", - "RegionName": "Ashburn", - "Latitude": 39.03, - "Longitude": -77.471111, - "Nodes": [ - { - "Name": "27d", - "RegionID": 27, - "HostName": "derp27d.tailscale.com", - "IPv4": "178.156.152.106", - "IPv6": "2a01:4ff:f0:3c8e::1", - "CanPort80": true - }, - { - "Name": "27c", - "RegionID": 27, - "HostName": "derp27c.tailscale.com", - "IPv4": "178.156.152.91", - "IPv6": "2a01:4ff:f0:3913::1", - "CanPort80": true - }, - { - "Name": "27e", - "RegionID": 27, - "HostName": "derp27e.tailscale.com", - "IPv4": "178.156.134.232", - "IPv6": "2a01:4ff:f0:28d4::1", - "CanPort80": true - }, - { - "Name": "27b", - "RegionID": 27, - "HostName": "derp27b.tailscale.com", - "IPv4": "5.161.218.233", - "IPv6": "2a01:4ff:f0:3db9::1", - "CanPort80": true - } - ] - }, - "28": { - "RegionID": 28, - "RegionCode": "hel", - "RegionName": "Helsinki", - "Latitude": 60.170833, - "Longitude": 24.9375, - "Nodes": [ - { - "Name": "28c", - "RegionID": 28, - "HostName": "derp28c.tailscale.com", - "IPv4": "95.217.2.165", - "IPv6": "2a01:4f9:c012:cd74::1", - "CanPort80": true - }, - { - "Name": "28d", - "RegionID": 28, - "HostName": "derp28d.tailscale.com", - "IPv4": "157.180.28.32", - "IPv6": "2a01:4f9:c012:2e5b::1", - "CanPort80": true - }, - { - "Name": "28b", - "RegionID": 28, - "HostName": "derp28b.tailscale.com", - "IPv4": "65.109.143.62", - "IPv6": "2a01:4f9:c012:d55c::1", - "CanPort80": true - } - ] - }, - "3": { - "RegionID": 3, - "RegionCode": "sin", - "RegionName": "Singapore", - "Latitude": 1.3521, - "Longitude": 103.8198, - "Nodes": [ - { - "Name": "3g", - "RegionID": 3, - "HostName": "derp3g.tailscale.com", - "IPv4": "172.237.72.79", - "IPv6": "2600:3c15::2000:adff:fe08:6fab", - "CanPort80": true - }, - { - "Name": "3f", - "RegionID": 3, - "HostName": "derp3f.tailscale.com", - "IPv4": "172.237.72.8", - "IPv6": "2600:3c15::2000:53ff:fe48:a668", - "CanPort80": true - }, - { - "Name": "3h", - "RegionID": 3, - "HostName": "derp3h.tailscale.com", - "IPv4": "172.237.66.30", - "IPv6": "2600:3c15::2000:3dff:fe44:50aa", - "CanPort80": true - }, - { - "Name": "3e", - "RegionID": 3, - "HostName": "derp3e.tailscale.com", - "IPv4": "172.237.72.43", - "IPv6": "2600:3c15::2000:6cff:fee4:d799", - "CanPort80": true - } - ] - }, - "4": { - "RegionID": 4, - "RegionCode": "fra", - "RegionName": "Frankfurt", - "Latitude": 50.1109, - "Longitude": 8.6821, - "Nodes": [ - { - "Name": "4h", - "RegionID": 4, - "HostName": "derp4h.tailscale.com", - "IPv4": "185.40.234.77", - "IPv6": "2a00:dd80:20::bcf", - "CanPort80": true - }, - { - "Name": "4g", - "RegionID": 4, - "HostName": "derp4g.tailscale.com", - "IPv4": "185.40.234.113", - "IPv6": "2a00:dd80:20::8f", - "CanPort80": true - }, - { - "Name": "4i", - "RegionID": 4, - "HostName": "derp4i.tailscale.com", - "IPv4": "185.40.234.53", - "IPv6": "2a00:dd80:20::8a6", - "CanPort80": true - }, - { - "Name": "4f", - "RegionID": 4, - "HostName": "derp4f.tailscale.com", - "IPv4": "185.40.234.219", - "IPv6": "2a00:dd80:20::a25", - "CanPort80": true - } - ] - }, - "5": { - "RegionID": 5, - "RegionCode": "syd", - "RegionName": "Sydney", - "Latitude": -33.867778, - "Longitude": 151.21, - "Nodes": [ - { - "Name": "5f", - "RegionID": 5, - "HostName": "derp5f.tailscale.com", - "IPv4": "172.105.166.103", - "IPv6": "2400:8907::2000:ccff:fe1f:80da", - "CanPort80": true - }, - { - "Name": "5g", - "RegionID": 5, - "HostName": "derp5g.tailscale.com", - "IPv4": "172.105.169.57", - "IPv6": "2400:8907::2000:2fff:fea7:57f4", - "CanPort80": true - }, - { - "Name": "5e", - "RegionID": 5, - "HostName": "derp5e.tailscale.com", - "IPv4": "172.105.179.230", - "IPv6": "2400:8907::2000:ceff:fe8d:4f4e", - "CanPort80": true - } - ] - }, - "6": { - "RegionID": 6, - "RegionCode": "blr", - "RegionName": "Bengaluru", - "Latitude": 12.9716, - "Longitude": 77.5946, - "Nodes": [ - { - "Name": "6a", - "RegionID": 6, - "HostName": "derp6.tailscale.com", - "IPv4": "68.183.90.120", - "IPv6": "2400:6180:100:d0::982:d001", - "CanPort80": true - } - ] - }, - "7": { - "RegionID": 7, - "RegionCode": "tok", - "RegionName": "Tokyo", - "Latitude": 35.6764, - "Longitude": 139.65, - "Nodes": [ - { - "Name": "7g", - "RegionID": 7, - "HostName": "derp7g.tailscale.com", - "IPv4": "172.238.6.179", - "IPv6": "2600:3c18::2000:3fff:fe80:3ebd", - "CanPort80": true - }, - { - "Name": "7f", - "RegionID": 7, - "HostName": "derp7f.tailscale.com", - "IPv4": "172.238.6.34", - "IPv6": "2600:3c18::2000:acff:fe8e:3ed5", - "CanPort80": true - }, - { - "Name": "7h", - "RegionID": 7, - "HostName": "derp7h.tailscale.com", - "IPv4": "172.237.28.183", - "IPv6": "2600:3c18::2000:b1ff:fea9:4560", - "CanPort80": true - }, - { - "Name": "7e", - "RegionID": 7, - "HostName": "derp7e.tailscale.com", - "IPv4": "172.238.6.180", - "IPv6": "2600:3c18::2000:60ff:fe0f:6e83", - "STUNOnly": true, - "CanPort80": true - } - ] - }, - "8": { - "RegionID": 8, - "RegionCode": "lhr", - "RegionName": "London", - "Latitude": 51.5072, - "Longitude": 0.1276, - "Nodes": [ - { - "Name": "8f", - "RegionID": 8, - "HostName": "derp8f.tailscale.com", - "IPv4": "176.58.88.183", - "IPv6": "2a00:dd80:3a::dfa", - "CanPort80": true - }, - { - "Name": "8g", - "RegionID": 8, - "HostName": "derp8g.tailscale.com", - "IPv4": "176.58.92.254", - "IPv6": "2a00:dd80:3a::ed", - "CanPort80": true - }, - { - "Name": "8e", - "RegionID": 8, - "HostName": "derp8e.tailscale.com", - "IPv4": "176.58.92.144", - "IPv6": "2a00:dd80:3a::b33", - "CanPort80": true - } - ] - }, - "9": { - "RegionID": 9, - "RegionCode": "dfw", - "RegionName": "Dallas", - "Latitude": 32.779167, - "Longitude": -96.808889, - "Nodes": [ - { - "Name": "9e", - "RegionID": 9, - "HostName": "derp9e.tailscale.com", - "IPv4": "192.73.248.83", - "IPv6": "2607:f740:100::359", - "CanPort80": true - }, - { - "Name": "9f", - "RegionID": 9, - "HostName": "derp9f.tailscale.com", - "IPv4": "209.177.156.197", - "IPv6": "2607:f740:100::cad", - "CanPort80": true - }, - { - "Name": "9d", - "RegionID": 9, - "HostName": "derp9d.tailscale.com", - "IPv4": "209.177.156.94", - "IPv6": "2607:f740:100::c05", - "CanPort80": true - } - ] - } - } - }, - "DisplayMessages": null, - "TKAEnabled": false, - "TKAHead": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", - "Domain": "kratail2tid@passkey", - "DomainAuditLogID": "", - "UserProfiles": { - "3982058329734709": { - "ID": 3982058329734709, - "LoginName": "monitorpasskeykradalby@passkey", - "DisplayName": "monitorpasskeykradalby" - } - } + "PacketFilterRules": 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.124.195.93": { - "peer_name": "exit-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user1/tailscaled.sock whois --json 100.124.195.93", - "response": null - }, - "100.116.18.24": { - "peer_name": "exit-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user1/tailscaled.sock whois --json 100.116.18.24", - "response": null - }, - "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.107.162.14": { - "peer_name": "group-a-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user1/tailscaled.sock whois --json 100.107.162.14", - "response": null - }, - "100.77.135.18": { - "peer_name": "group-b-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user1/tailscaled.sock whois --json 100.77.135.18", - "response": null - }, - "100.105.127.107": { - "peer_name": "multi-exit-router", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user1/tailscaled.sock whois --json 100.105.127.107", - "response": null - }, - "100.109.43.124": { - "peer_name": "router-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user1/tailscaled.sock whois --json 100.109.43.124", - "response": null - }, - "100.65.172.123": { - "peer_name": "router-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user1/tailscaled.sock whois --json 100.65.172.123", - "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 - } - }, "netmap": { - "SelfNode": { - "ID": 539541576444929, - "StableID": "nSq9YrqMD511CNTRL", - "Name": "user1.tail78f774.ts.net.", - "User": 4156223528223174, - "Key": "nodekey:96338a2cd2ea803c915ed8fdf882d66ca0c6a59d0fcf0bc4b3f928d22d1ac743", - "KeyExpiry": "2026-07-22T10:04:13Z", - "DiscoKey": "discokey:94c62b25a93d1474bcbf8b0e5f79763e3b093993c831b0a40e98b875827b232a", - "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:43259", "10.65.0.27:43259", "172.17.0.1:43259"], - "Hostinfo": { - "Hostname": "user1", - "Services": [ - { "Proto": "peerapi4", "Port": 46708 }, - { "Proto": "peerapi6", "Port": 46708 }, - { "Proto": "peerapi-dns-proxy", "Port": 1 } - ] - }, - "Created": "2026-01-23T10:04:13.531671894Z", - "MachineAuthorized": true, - "CapMap": { - "https://tailscale.com/cap/file-sharing": null, - "https://tailscale.com/cap/is-admin": null, - "https://tailscale.com/cap/is-owner": null, - "https://tailscale.com/cap/ssh": null, - "https://tailscale.com/cap/tailnet-lock": null, - "probe-udp-lifetime": null, - "ssh-behavior-v1": null, - "ssh-env-vars": null, - "store-appc-routes": null, - "tailnet-display-name": ["kratail2tid@passkey"] - }, - "ComputedName": "user1", - "ComputedNameWithHost": "user1" - }, - "AllCaps": [ - "https://tailscale.com/cap/is-owner", - "https://tailscale.com/cap/tailnet-lock", - "https://tailscale.com/cap/is-admin", - "ssh-env-vars", - "https://tailscale.com/cap/file-sharing", - "https://tailscale.com/cap/ssh", - "probe-udp-lifetime", - "store-appc-routes", - "ssh-behavior-v1", - "tailnet-display-name" - ], - "NodeKey": "nodekey:96338a2cd2ea803c915ed8fdf882d66ca0c6a59d0fcf0bc4b3f928d22d1ac743", - "MachineKey": "mkey:98b7ed0fef020882cab4324b39ac93b60741794e722411083d0d3cf703833f4a", "Peers": [], - "DNS": { - "Routes": { - "tail78f774.ts.net.": null, - "ts.net.": [{ "Addr": "199.247.155.53" }, { "Addr": "2620:111:8007::53" }] - }, - "Domains": ["tail78f774.ts.net"], - "Proxied": true, - "ExitNodeFilteredSet": [".ts.net", ".tailscale.net"] - }, - "PacketFilter": [], - "PacketFilterRules": null, - "SSHPolicy": { "rules": [] }, - "CollectServices": false, - "DERPMap": { - "Regions": { - "1": { - "RegionID": 1, - "RegionCode": "nyc", - "RegionName": "New York City", - "Latitude": 40.7128, - "Longitude": -74.006, - "Nodes": [ - { - "Name": "1h", - "RegionID": 1, - "HostName": "derp1h.tailscale.com", - "IPv4": "199.38.181.93", - "IPv6": "2607:f740:f::afd", - "CanPort80": true - }, - { - "Name": "1g", - "RegionID": 1, - "HostName": "derp1g.tailscale.com", - "IPv4": "209.177.145.120", - "IPv6": "2607:f740:f::3eb", - "CanPort80": true - }, - { - "Name": "1i", - "RegionID": 1, - "HostName": "derp1i.tailscale.com", - "IPv4": "199.38.181.103", - "IPv6": "2607:f740:f::e19", - "CanPort80": true - }, - { - "Name": "1f", - "RegionID": 1, - "HostName": "derp1f.tailscale.com", - "IPv4": "199.38.181.104", - "IPv6": "2607:f740:f::bc", - "CanPort80": true - } - ] - }, - "10": { - "RegionID": 10, - "RegionCode": "sea", - "RegionName": "Seattle", - "Latitude": 47.609722, - "Longitude": -122.333056, - "Nodes": [ - { - "Name": "10c", - "RegionID": 10, - "HostName": "derp10c.tailscale.com", - "IPv4": "192.73.240.121", - "IPv6": "2607:f740:14::40c", - "CanPort80": true - }, - { - "Name": "10d", - "RegionID": 10, - "HostName": "derp10d.tailscale.com", - "IPv4": "192.73.240.132", - "IPv6": "2607:f740:14::500", - "CanPort80": true - }, - { - "Name": "10b", - "RegionID": 10, - "HostName": "derp10b.tailscale.com", - "IPv4": "192.73.240.161", - "IPv6": "2607:f740:14::61c", - "CanPort80": true - } - ] - }, - "11": { - "RegionID": 11, - "RegionCode": "sao", - "RegionName": "São Paulo", - "Latitude": -23.55, - "Longitude": -46.633333, - "Nodes": [ - { - "Name": "11f", - "RegionID": 11, - "HostName": "derp11f.tailscale.com", - "IPv4": "172.237.61.197", - "IPv6": "2600:3c0d::2000:3bff:fe44:6166", - "CanPort80": true - }, - { - "Name": "11g", - "RegionID": 11, - "HostName": "derp11g.tailscale.com", - "IPv4": "172.237.61.190", - "IPv6": "2600:3c0d::2000:62ff:febe:2e67", - "CanPort80": true - }, - { - "Name": "11e", - "RegionID": 11, - "HostName": "derp11e.tailscale.com", - "IPv4": "172.237.61.194", - "IPv6": "2600:3c0d::2000:d2ff:fe43:1790", - "CanPort80": true - } - ] - }, - "12": { - "RegionID": 12, - "RegionCode": "ord", - "RegionName": "Chicago", - "Latitude": 41.881944, - "Longitude": -87.627778, - "Nodes": [ - { - "Name": "12e", - "RegionID": 12, - "HostName": "derp12e.tailscale.com", - "IPv4": "209.177.158.15", - "IPv6": "2607:f740:e::b17", - "CanPort80": true - }, - { - "Name": "12f", - "RegionID": 12, - "HostName": "derp12f.tailscale.com", - "IPv4": "199.38.182.118", - "IPv6": "2607:f740:e::4c8", - "CanPort80": true - }, - { - "Name": "12d", - "RegionID": 12, - "HostName": "derp12d.tailscale.com", - "IPv4": "209.177.158.246", - "IPv6": "2607:f740:e::811", - "CanPort80": true - } - ] - }, - "13": { - "RegionID": 13, - "RegionCode": "den", - "RegionName": "Denver", - "Latitude": 39.7392, - "Longitude": -104.9849, - "Nodes": [ - { - "Name": "13c", - "RegionID": 13, - "HostName": "derp13c.tailscale.com", - "IPv4": "192.73.242.28", - "IPv6": "2607:f740:16::5c", - "CanPort80": true - }, - { - "Name": "13d", - "RegionID": 13, - "HostName": "derp13d.tailscale.com", - "IPv4": "192.73.242.204", - "IPv6": "2607:f740:16::c23", - "CanPort80": true - }, - { - "Name": "13b", - "RegionID": 13, - "HostName": "derp13b.tailscale.com", - "IPv4": "192.73.242.187", - "IPv6": "2607:f740:16::640", - "CanPort80": true - } - ] - }, - "14": { - "RegionID": 14, - "RegionCode": "ams", - "RegionName": "Amsterdam", - "Latitude": 52.372778, - "Longitude": 4.893611, - "Nodes": [ - { - "Name": "14c", - "RegionID": 14, - "HostName": "derp14c.tailscale.com", - "IPv4": "176.58.93.147", - "IPv6": "2a00:dd80:3c::b09", - "CanPort80": true - }, - { - "Name": "14d", - "RegionID": 14, - "HostName": "derp14d.tailscale.com", - "IPv4": "176.58.93.154", - "IPv6": "2a00:dd80:3c::3d5", - "CanPort80": true - }, - { - "Name": "14b", - "RegionID": 14, - "HostName": "derp14b.tailscale.com", - "IPv4": "176.58.93.248", - "IPv6": "2a00:dd80:3c::807", - "CanPort80": true - } - ] - }, - "15": { - "RegionID": 15, - "RegionCode": "jnb", - "RegionName": "Johannesburg", - "Latitude": -26.204444, - "Longitude": 28.045556, - "Nodes": [ - { - "Name": "15c", - "RegionID": 15, - "HostName": "derp15c.tailscale.com", - "IPv4": "102.67.165.185", - "IPv6": "2c0f:edb0:0:10::b59", - "CanPort80": true - }, - { - "Name": "15d", - "RegionID": 15, - "HostName": "derp15d.tailscale.com", - "IPv4": "102.67.165.36", - "IPv6": "2c0f:edb0:0:10::599", - "CanPort80": true - }, - { - "Name": "15b", - "RegionID": 15, - "HostName": "derp15b.tailscale.com", - "IPv4": "102.67.165.90", - "IPv6": "2c0f:edb0:0:10::963", - "CanPort80": true - } - ] - }, - "16": { - "RegionID": 16, - "RegionCode": "mia", - "RegionName": "Miami", - "Latitude": 25.78, - "Longitude": -80.21, - "Nodes": [ - { - "Name": "16c", - "RegionID": 16, - "HostName": "derp16c.tailscale.com", - "IPv4": "192.73.243.229", - "IPv6": "2607:f740:17::4e4", - "CanPort80": true - }, - { - "Name": "16d", - "RegionID": 16, - "HostName": "derp16d.tailscale.com", - "IPv4": "192.73.243.141", - "IPv6": "2607:f740:17::475", - "CanPort80": true - }, - { - "Name": "16b", - "RegionID": 16, - "HostName": "derp16b.tailscale.com", - "IPv4": "192.73.243.135", - "IPv6": "2607:f740:17::476", - "CanPort80": true - } - ] - }, - "17": { - "RegionID": 17, - "RegionCode": "lax", - "RegionName": "Los Angeles", - "Latitude": 34.05, - "Longitude": -118.25, - "Nodes": [ - { - "Name": "17c", - "RegionID": 17, - "HostName": "derp17c.tailscale.com", - "IPv4": "208.111.40.12", - "IPv6": "2607:f740:c::10", - "CanPort80": true - }, - { - "Name": "17d", - "RegionID": 17, - "HostName": "derp17d.tailscale.com", - "IPv4": "208.111.40.216", - "IPv6": "2607:f740:c::e1b", - "CanPort80": true - }, - { - "Name": "17b", - "RegionID": 17, - "HostName": "derp17b.tailscale.com", - "IPv4": "192.73.244.245", - "IPv6": "2607:f740:c::646", - "CanPort80": true - } - ] - }, - "18": { - "RegionID": 18, - "RegionCode": "par", - "RegionName": "Paris", - "Latitude": 48.856667, - "Longitude": 2.352222, - "Nodes": [ - { - "Name": "18c", - "RegionID": 18, - "HostName": "derp18c.tailscale.com", - "IPv4": "176.58.90.207", - "IPv6": "2a00:dd80:3e::c19", - "CanPort80": true - }, - { - "Name": "18d", - "RegionID": 18, - "HostName": "derp18d.tailscale.com", - "IPv4": "176.58.90.104", - "IPv6": "2a00:dd80:3e::f2e", - "CanPort80": true - }, - { - "Name": "18b", - "RegionID": 18, - "HostName": "derp18b.tailscale.com", - "IPv4": "176.58.90.147", - "IPv6": "2a00:dd80:3e::363", - "CanPort80": true - } - ] - }, - "19": { - "RegionID": 19, - "RegionCode": "mad", - "RegionName": "Madrid", - "Latitude": 40.416944, - "Longitude": -3.703333, - "Nodes": [ - { - "Name": "19c", - "RegionID": 19, - "HostName": "derp19c.tailscale.com", - "IPv4": "45.159.97.61", - "IPv6": "2a00:dd80:14:10::20", - "CanPort80": true - }, - { - "Name": "19d", - "RegionID": 19, - "HostName": "derp19d.tailscale.com", - "IPv4": "45.159.97.233", - "IPv6": "2a00:dd80:14:10::34a", - "CanPort80": true - }, - { - "Name": "19b", - "RegionID": 19, - "HostName": "derp19b.tailscale.com", - "IPv4": "45.159.97.144", - "IPv6": "2a00:dd80:14:10::335", - "CanPort80": true - } - ] - }, - "2": { - "RegionID": 2, - "RegionCode": "sfo", - "RegionName": "San Francisco", - "Latitude": 37.7775, - "Longitude": -122.416389, - "Nodes": [ - { - "Name": "2e", - "RegionID": 2, - "HostName": "derp2e.tailscale.com", - "IPv4": "192.73.252.134", - "IPv6": "2607:f740:0:3f::44c", - "CanPort80": true - }, - { - "Name": "2f", - "RegionID": 2, - "HostName": "derp2f.tailscale.com", - "IPv4": "208.111.34.178", - "IPv6": "2607:f740:0:3f::f4", - "CanPort80": true - }, - { - "Name": "2d", - "RegionID": 2, - "HostName": "derp2d.tailscale.com", - "IPv4": "192.73.252.65", - "IPv6": "2607:f740:0:3f::287", - "CanPort80": true - } - ] - }, - "20": { - "RegionID": 20, - "RegionCode": "hkg", - "RegionName": "Hong Kong", - "Latitude": 22.3193, - "Longitude": 114.1694, - "Nodes": [ - { - "Name": "20c", - "RegionID": 20, - "HostName": "derp20c.tailscale.com", - "IPv4": "205.147.105.30", - "IPv6": "2403:2500:8000:1::5fb", - "CanPort80": true - }, - { - "Name": "20d", - "RegionID": 20, - "HostName": "derp20d.tailscale.com", - "IPv4": "205.147.105.78", - "IPv6": "2403:2500:8000:1::e9a", - "CanPort80": true - }, - { - "Name": "20b", - "RegionID": 20, - "HostName": "derp20b.tailscale.com", - "IPv4": "103.6.84.152", - "IPv6": "2403:2500:8000:1::ef6", - "CanPort80": true - } - ] - }, - "21": { - "RegionID": 21, - "RegionCode": "tor", - "RegionName": "Toronto", - "Latitude": 43.741667, - "Longitude": -79.373333, - "Nodes": [ - { - "Name": "21c", - "RegionID": 21, - "HostName": "derp21c.tailscale.com", - "IPv4": "162.248.221.215", - "IPv6": "2607:f740:50::f10", - "CanPort80": true - }, - { - "Name": "21d", - "RegionID": 21, - "HostName": "derp21d.tailscale.com", - "IPv4": "162.248.221.248", - "IPv6": "2607:f740:50::ca4", - "CanPort80": true - }, - { - "Name": "21b", - "RegionID": 21, - "HostName": "derp21b.tailscale.com", - "IPv4": "162.248.221.199", - "IPv6": "2607:f740:50::1d1", - "CanPort80": true - } - ] - }, - "22": { - "RegionID": 22, - "RegionCode": "waw", - "RegionName": "Warsaw", - "Latitude": 52.23, - "Longitude": 21.011111, - "Nodes": [ - { - "Name": "22c", - "RegionID": 22, - "HostName": "derp22c.tailscale.com", - "IPv4": "45.159.98.253", - "IPv6": "2a00:dd80:40:100::3f", - "CanPort80": true - }, - { - "Name": "22d", - "RegionID": 22, - "HostName": "derp22d.tailscale.com", - "IPv4": "45.159.98.145", - "IPv6": "2a00:dd80:40:100::211", - "CanPort80": true - }, - { - "Name": "22b", - "RegionID": 22, - "HostName": "derp22b.tailscale.com", - "IPv4": "45.159.98.196", - "IPv6": "2a00:dd80:40:100::316", - "CanPort80": true - } - ] - }, - "23": { - "RegionID": 23, - "RegionCode": "dbi", - "RegionName": "Dubai", - "Latitude": 25.263056, - "Longitude": 55.297222, - "Nodes": [ - { - "Name": "23c", - "RegionID": 23, - "HostName": "derp23c.tailscale.com", - "IPv4": "185.34.3.207", - "IPv6": "2a00:dd80:3f:100::a50", - "CanPort80": true - }, - { - "Name": "23d", - "RegionID": 23, - "HostName": "derp23d.tailscale.com", - "IPv4": "185.34.3.75", - "IPv6": "2a00:dd80:3f:100::97e", - "CanPort80": true - }, - { - "Name": "23b", - "RegionID": 23, - "HostName": "derp23b.tailscale.com", - "IPv4": "185.34.3.232", - "IPv6": "2a00:dd80:3f:100::76f", - "CanPort80": true - } - ] - }, - "24": { - "RegionID": 24, - "RegionCode": "hnl", - "RegionName": "Honolulu", - "Latitude": 21.306944, - "Longitude": -157.858333, - "Nodes": [ - { - "Name": "24c", - "RegionID": 24, - "HostName": "derp24c.tailscale.com", - "IPv4": "208.83.233.233", - "IPv6": "2001:19f0:c000:c591:5400:04ff:fe26:2c5f", - "CanPort80": true - }, - { - "Name": "24d", - "RegionID": 24, - "HostName": "derp24d.tailscale.com", - "IPv4": "208.72.155.133", - "IPv6": "2001:19f0:c000:c564:5400:04ff:fe26:2ba8", - "CanPort80": true - }, - { - "Name": "24b", - "RegionID": 24, - "HostName": "derp24b.tailscale.com", - "IPv4": "208.83.234.151", - "IPv6": "2001:19f0:c000:c586:5400:04ff:fe26:2ba6", - "CanPort80": true - } - ] - }, - "25": { - "RegionID": 25, - "RegionCode": "nai", - "RegionName": "Nairobi", - "Latitude": -1.286389, - "Longitude": 36.817222, - "Nodes": [ - { - "Name": "25c", - "RegionID": 25, - "HostName": "derp25c.tailscale.com", - "IPv4": "102.67.167.37", - "IPv6": "2c0f:edb0:2000:1::2c7", - "CanPort80": true - }, - { - "Name": "25d", - "RegionID": 25, - "HostName": "derp25d.tailscale.com", - "IPv4": "102.67.167.188", - "IPv6": "2c0f:edb0:2000:1::188", - "CanPort80": true - }, - { - "Name": "25b", - "RegionID": 25, - "HostName": "derp25b.tailscale.com", - "IPv4": "102.67.167.245", - "IPv6": "2c0f:edb0:2000:1::2e9", - "CanPort80": true - } - ] - }, - "26": { - "RegionID": 26, - "RegionCode": "nue", - "RegionName": "Nuremberg", - "Latitude": 49.453889, - "Longitude": 11.0775, - "Nodes": [ - { - "Name": "26c", - "RegionID": 26, - "HostName": "derp26c.tailscale.com", - "IPv4": "49.12.193.137", - "IPv6": "2a01:4f8:1c1c:5c70::1", - "CanPort80": true - }, - { - "Name": "26d", - "RegionID": 26, - "HostName": "derp26d.tailscale.com", - "IPv4": "49.13.204.141", - "IPv6": "2a01:4f8:1c0c:7d06::1", - "CanPort80": true - }, - { - "Name": "26b", - "RegionID": 26, - "HostName": "derp26b.tailscale.com", - "IPv4": "167.235.72.200", - "IPv6": "2a01:4f8:1c1c:47b6::1", - "CanPort80": true - } - ] - }, - "27": { - "RegionID": 27, - "RegionCode": "iad", - "RegionName": "Ashburn", - "Latitude": 39.03, - "Longitude": -77.471111, - "Nodes": [ - { - "Name": "27d", - "RegionID": 27, - "HostName": "derp27d.tailscale.com", - "IPv4": "178.156.152.106", - "IPv6": "2a01:4ff:f0:3c8e::1", - "CanPort80": true - }, - { - "Name": "27c", - "RegionID": 27, - "HostName": "derp27c.tailscale.com", - "IPv4": "178.156.152.91", - "IPv6": "2a01:4ff:f0:3913::1", - "CanPort80": true - }, - { - "Name": "27e", - "RegionID": 27, - "HostName": "derp27e.tailscale.com", - "IPv4": "178.156.134.232", - "IPv6": "2a01:4ff:f0:28d4::1", - "CanPort80": true - }, - { - "Name": "27b", - "RegionID": 27, - "HostName": "derp27b.tailscale.com", - "IPv4": "5.161.218.233", - "IPv6": "2a01:4ff:f0:3db9::1", - "CanPort80": true - } - ] - }, - "28": { - "RegionID": 28, - "RegionCode": "hel", - "RegionName": "Helsinki", - "Latitude": 60.170833, - "Longitude": 24.9375, - "Nodes": [ - { - "Name": "28c", - "RegionID": 28, - "HostName": "derp28c.tailscale.com", - "IPv4": "95.217.2.165", - "IPv6": "2a01:4f9:c012:cd74::1", - "CanPort80": true - }, - { - "Name": "28d", - "RegionID": 28, - "HostName": "derp28d.tailscale.com", - "IPv4": "157.180.28.32", - "IPv6": "2a01:4f9:c012:2e5b::1", - "CanPort80": true - }, - { - "Name": "28b", - "RegionID": 28, - "HostName": "derp28b.tailscale.com", - "IPv4": "65.109.143.62", - "IPv6": "2a01:4f9:c012:d55c::1", - "CanPort80": true - } - ] - }, - "3": { - "RegionID": 3, - "RegionCode": "sin", - "RegionName": "Singapore", - "Latitude": 1.3521, - "Longitude": 103.8198, - "Nodes": [ - { - "Name": "3g", - "RegionID": 3, - "HostName": "derp3g.tailscale.com", - "IPv4": "172.237.72.79", - "IPv6": "2600:3c15::2000:adff:fe08:6fab", - "CanPort80": true - }, - { - "Name": "3f", - "RegionID": 3, - "HostName": "derp3f.tailscale.com", - "IPv4": "172.237.72.8", - "IPv6": "2600:3c15::2000:53ff:fe48:a668", - "CanPort80": true - }, - { - "Name": "3h", - "RegionID": 3, - "HostName": "derp3h.tailscale.com", - "IPv4": "172.237.66.30", - "IPv6": "2600:3c15::2000:3dff:fe44:50aa", - "CanPort80": true - }, - { - "Name": "3e", - "RegionID": 3, - "HostName": "derp3e.tailscale.com", - "IPv4": "172.237.72.43", - "IPv6": "2600:3c15::2000:6cff:fee4:d799", - "CanPort80": true - } - ] - }, - "4": { - "RegionID": 4, - "RegionCode": "fra", - "RegionName": "Frankfurt", - "Latitude": 50.1109, - "Longitude": 8.6821, - "Nodes": [ - { - "Name": "4h", - "RegionID": 4, - "HostName": "derp4h.tailscale.com", - "IPv4": "185.40.234.77", - "IPv6": "2a00:dd80:20::bcf", - "CanPort80": true - }, - { - "Name": "4g", - "RegionID": 4, - "HostName": "derp4g.tailscale.com", - "IPv4": "185.40.234.113", - "IPv6": "2a00:dd80:20::8f", - "CanPort80": true - }, - { - "Name": "4i", - "RegionID": 4, - "HostName": "derp4i.tailscale.com", - "IPv4": "185.40.234.53", - "IPv6": "2a00:dd80:20::8a6", - "CanPort80": true - }, - { - "Name": "4f", - "RegionID": 4, - "HostName": "derp4f.tailscale.com", - "IPv4": "185.40.234.219", - "IPv6": "2a00:dd80:20::a25", - "CanPort80": true - } - ] - }, - "5": { - "RegionID": 5, - "RegionCode": "syd", - "RegionName": "Sydney", - "Latitude": -33.867778, - "Longitude": 151.21, - "Nodes": [ - { - "Name": "5f", - "RegionID": 5, - "HostName": "derp5f.tailscale.com", - "IPv4": "172.105.166.103", - "IPv6": "2400:8907::2000:ccff:fe1f:80da", - "CanPort80": true - }, - { - "Name": "5g", - "RegionID": 5, - "HostName": "derp5g.tailscale.com", - "IPv4": "172.105.169.57", - "IPv6": "2400:8907::2000:2fff:fea7:57f4", - "CanPort80": true - }, - { - "Name": "5e", - "RegionID": 5, - "HostName": "derp5e.tailscale.com", - "IPv4": "172.105.179.230", - "IPv6": "2400:8907::2000:ceff:fe8d:4f4e", - "CanPort80": true - } - ] - }, - "6": { - "RegionID": 6, - "RegionCode": "blr", - "RegionName": "Bengaluru", - "Latitude": 12.9716, - "Longitude": 77.5946, - "Nodes": [ - { - "Name": "6a", - "RegionID": 6, - "HostName": "derp6.tailscale.com", - "IPv4": "68.183.90.120", - "IPv6": "2400:6180:100:d0::982:d001", - "CanPort80": true - } - ] - }, - "7": { - "RegionID": 7, - "RegionCode": "tok", - "RegionName": "Tokyo", - "Latitude": 35.6764, - "Longitude": 139.65, - "Nodes": [ - { - "Name": "7g", - "RegionID": 7, - "HostName": "derp7g.tailscale.com", - "IPv4": "172.238.6.179", - "IPv6": "2600:3c18::2000:3fff:fe80:3ebd", - "CanPort80": true - }, - { - "Name": "7f", - "RegionID": 7, - "HostName": "derp7f.tailscale.com", - "IPv4": "172.238.6.34", - "IPv6": "2600:3c18::2000:acff:fe8e:3ed5", - "CanPort80": true - }, - { - "Name": "7h", - "RegionID": 7, - "HostName": "derp7h.tailscale.com", - "IPv4": "172.237.28.183", - "IPv6": "2600:3c18::2000:b1ff:fea9:4560", - "CanPort80": true - }, - { - "Name": "7e", - "RegionID": 7, - "HostName": "derp7e.tailscale.com", - "IPv4": "172.238.6.180", - "IPv6": "2600:3c18::2000:60ff:fe0f:6e83", - "STUNOnly": true, - "CanPort80": true - } - ] - }, - "8": { - "RegionID": 8, - "RegionCode": "lhr", - "RegionName": "London", - "Latitude": 51.5072, - "Longitude": 0.1276, - "Nodes": [ - { - "Name": "8f", - "RegionID": 8, - "HostName": "derp8f.tailscale.com", - "IPv4": "176.58.88.183", - "IPv6": "2a00:dd80:3a::dfa", - "CanPort80": true - }, - { - "Name": "8g", - "RegionID": 8, - "HostName": "derp8g.tailscale.com", - "IPv4": "176.58.92.254", - "IPv6": "2a00:dd80:3a::ed", - "CanPort80": true - }, - { - "Name": "8e", - "RegionID": 8, - "HostName": "derp8e.tailscale.com", - "IPv4": "176.58.92.144", - "IPv6": "2a00:dd80:3a::b33", - "CanPort80": true - } - ] - }, - "9": { - "RegionID": 9, - "RegionCode": "dfw", - "RegionName": "Dallas", - "Latitude": 32.779167, - "Longitude": -96.808889, - "Nodes": [ - { - "Name": "9e", - "RegionID": 9, - "HostName": "derp9e.tailscale.com", - "IPv4": "192.73.248.83", - "IPv6": "2607:f740:100::359", - "CanPort80": true - }, - { - "Name": "9f", - "RegionID": 9, - "HostName": "derp9f.tailscale.com", - "IPv4": "209.177.156.197", - "IPv6": "2607:f740:100::cad", - "CanPort80": true - }, - { - "Name": "9d", - "RegionID": 9, - "HostName": "derp9d.tailscale.com", - "IPv4": "209.177.156.94", - "IPv6": "2607:f740:100::c05", - "CanPort80": true - } - ] - } - } - }, - "DisplayMessages": null, - "TKAEnabled": false, - "TKAHead": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", - "Domain": "kratail2tid@passkey", - "DomainAuditLogID": "", - "UserProfiles": { - "4156223528223174": { - "ID": 4156223528223174, - "LoginName": "kratail2tid@passkey", - "DisplayName": "kratail2tid" - } - } + "PacketFilterRules": null } } } diff --git a/hscontrol/policy/v2/testdata/grant_results/GRANT-V28.hujson b/hscontrol/policy/v2/testdata/grant_results/GRANT-V28.hujson index 1f3638815..14185ecbb 100644 --- a/hscontrol/policy/v2/testdata/grant_results/GRANT-V28.hujson +++ b/hscontrol/policy/v2/testdata/grant_results/GRANT-V28.hujson @@ -7,29 +7,55 @@ // Expected: No filter rules on any node { "test_id": "GRANT-V28", - "timestamp": "2026-03-28T11:51:51Z", - "propagation_wait_seconds": 8, "input": { - "policy_file": "grant_policies_via/grant_v28.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"], - "tag:exit-a": ["kratail2tid@passkey"], - "tag:exit-b": ["kratail2tid@passkey"], - "tag:group-a": ["kratail2tid@passkey"], - "tag:group-b": ["kratail2tid@passkey"], - "tag:router-a": ["kratail2tid@passkey"], - "tag:router-b": ["kratail2tid@passkey"] + "tag:server": [ + "kratail2tid@passkey" + ], + "tag:prod": [ + "kratail2tid@passkey" + ], + "tag:client": [ + "kratail2tid@passkey" + ], + "tag:router": [ + "kratail2tid@passkey" + ], + "tag:exit": [ + "kratail2tid@passkey" + ], + "tag:exit-a": [ + "kratail2tid@passkey" + ], + "tag:exit-b": [ + "kratail2tid@passkey" + ], + "tag:group-a": [ + "kratail2tid@passkey" + ], + "tag:group-b": [ + "kratail2tid@passkey" + ], + "tag:router-a": [ + "kratail2tid@passkey" + ], + "tag:router-b": [ + "kratail2tid@passkey" + ] }, "hosts": { "webserver": "100.108.74.26", @@ -38,169 +64,173 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "10.44.0.0/16": ["tag:router-a"], - "10.55.0.0/16": ["tag:router-b"], - "0.0.0.0/0": ["tag:exit", "tag:exit-a", "tag:exit-b"], - "::/0": ["tag:exit", "tag:exit-a", "tag:exit-b"] + "10.33.0.0/16": [ + "tag:router" + ], + "10.44.0.0/16": [ + "tag:router-a" + ], + "10.55.0.0/16": [ + "tag:router-b" + ], + "0.0.0.0/0": [ + "tag:exit", + "tag:exit-a", + "tag:exit-b" + ], + "::/0": [ + "tag:exit", + "tag:exit-a", + "tag:exit-b" + ] } }, "grants": [ { - "src": ["tag:group-a"], - "dst": ["autogroup:internet"], - "via": ["tag:exit-a"], - "ip": ["*"] + "src": [ + "tag:group-a" + ], + "dst": [ + "autogroup:internet" + ], + "via": [ + "tag:exit-a" + ], + "ip": [ + "*" + ] }, { - "src": ["tag:group-b"], - "dst": ["autogroup:internet"], - "via": ["tag:exit-b"], - "ip": ["*"] + "src": [ + "tag:group-b" + ], + "dst": [ + "autogroup:internet" + ], + "via": [ + "tag:exit-b" + ], + "ip": [ + "*" + ] } ] }, - "grants_section": [ - { "src": ["tag:group-a"], "dst": ["autogroup:internet"], "via": ["tag:exit-a"], "ip": ["*"] }, - { "src": ["tag:group-b"], "dst": ["autogroup:internet"], "via": ["tag:exit-b"], "ip": ["*"] } - ], - "api_endpoint": "https://api.tailscale.com/api/v2/tailnet/kratail2tid%40passkey/acl", - "api_method": "POST", "api_response_code": 200 }, "topology": { "nodes": { "exit-a": { - "mts_name": "exit-a", - "socket": "/home/kradalby/.config/multi-tailscale-dev/exit-a/tailscaled.sock", "hostname": "exit-a", - "user_id": 3118755726458377, - "tags": ["tag:exit-a"], + "tags": [ + "tag:exit-a" + ], "ipv4": "100.124.195.93", "ipv6": "fd7a:115c:a1e0::7837:c35d" }, "exit-b": { - "mts_name": "exit-b", - "socket": "/home/kradalby/.config/multi-tailscale-dev/exit-b/tailscaled.sock", "hostname": "exit-b", - "user_id": 2230775583277936, - "tags": ["tag:exit-b"], + "tags": [ + "tag:exit-b" + ], "ipv4": "100.116.18.24", "ipv6": "fd7a:115c:a1e0::ff37:1218" }, "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"], + "tags": [ + "tag:exit" + ], "ipv4": "100.85.66.106", "ipv6": "fd7a:115c:a1e0::7c37:426a" }, "group-a-client": { - "mts_name": "group-a-client", - "socket": "/home/kradalby/.config/multi-tailscale-dev/group-a-client/tailscaled.sock", "hostname": "group-a-client", - "user_id": 6999435610919250, - "tags": ["tag:group-a"], + "tags": [ + "tag:group-a" + ], "ipv4": "100.107.162.14", "ipv6": "fd7a:115c:a1e0::a237:a20e" }, "group-b-client": { - "mts_name": "group-b-client", - "socket": "/home/kradalby/.config/multi-tailscale-dev/group-b-client/tailscaled.sock", "hostname": "group-b-client", - "user_id": 1008089393782498, - "tags": ["tag:group-b"], + "tags": [ + "tag:group-b" + ], "ipv4": "100.77.135.18", "ipv6": "fd7a:115c:a1e0::4b37:8712" }, "multi-exit-router": { - "mts_name": "multi-exit-router", - "socket": "/home/kradalby/.config/multi-tailscale-dev/multi-exit-router/tailscaled.sock", "hostname": "multi-exit-router", - "user_id": 6294409699640722, - "tags": ["tag:exit", "tag:router"], + "tags": [ + "tag:exit", + "tag:router" + ], "ipv4": "100.105.127.107", "ipv6": "fd7a:115c:a1e0::ad37:7f6b" }, "router-a": { - "mts_name": "router-a", - "socket": "/home/kradalby/.config/multi-tailscale-dev/router-a/tailscaled.sock", "hostname": "router-a", - "user_id": 50590507314324, - "tags": ["tag:router-a"], + "tags": [ + "tag:router-a" + ], "ipv4": "100.109.43.124", "ipv6": "fd7a:115c:a1e0::a537:2b7c" }, "router-b": { - "mts_name": "router-b", - "socket": "/home/kradalby/.config/multi-tailscale-dev/router-b/tailscaled.sock", "hostname": "router-b", - "user_id": 1399889648409786, - "tags": ["tag:router-b"], + "tags": [ + "tag:router-b" + ], "ipv4": "100.65.172.123", "ipv6": "fd7a:115c:a1e0::5a37:ac7c" }, "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"], + "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"], + "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"], + "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"], + "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" @@ -209,16660 +239,108 @@ }, "captures": { "exit-a": { - "commands": { - "packet_filter_rules": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-a/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-a/tailscaled.sock debug localapi POST debug-packet-filter-matches" - }, "packet_filter_rules": null, - "packet_filter_matches": [], - "whois": { - "100.116.18.24": { - "peer_name": "exit-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-a/tailscaled.sock whois --json 100.116.18.24", - "response": null - }, - "100.85.66.106": { - "peer_name": "exit-node", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-a/tailscaled.sock whois --json 100.85.66.106", - "response": null - }, - "100.107.162.14": { - "peer_name": "group-a-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-a/tailscaled.sock whois --json 100.107.162.14", - "response": null - }, - "100.77.135.18": { - "peer_name": "group-b-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-a/tailscaled.sock whois --json 100.77.135.18", - "response": null - }, - "100.105.127.107": { - "peer_name": "multi-exit-router", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-a/tailscaled.sock whois --json 100.105.127.107", - "response": null - }, - "100.109.43.124": { - "peer_name": "router-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-a/tailscaled.sock whois --json 100.109.43.124", - "response": null - }, - "100.65.172.123": { - "peer_name": "router-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-a/tailscaled.sock whois --json 100.65.172.123", - "response": null - }, - "100.92.142.61": { - "peer_name": "subnet-router", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-a/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-a/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-a/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-a/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-a/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-a/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-a/tailscaled.sock whois --json 100.90.199.68", - "response": null - } - }, "netmap": { - "SelfNode": { - "ID": 3118755726458377, - "StableID": "nvFTscRVMR11CNTRL", - "Name": "exit-a.tail78f774.ts.net.", - "User": 3118755726458377, - "Key": "nodekey:21ab6fa3288e3bf8cecced295316c6327f427649765eb1746cc6ee9978bcc35c", - "DiscoKey": "discokey:0c8595f67987ed47cf551646d6266c21a635d622409d10745cc08f6922066e49", - "Addresses": ["100.124.195.93/32", "fd7a:115c:a1e0::7837:c35d/128"], - "AllowedIPs": ["100.124.195.93/32", "fd7a:115c:a1e0::7837:c35d/128"], - "Endpoints": ["77.164.248.136:37550", "10.65.0.27:37550", "172.17.0.1:37550"], - "Hostinfo": { - "Hostname": "exit-a", - "RoutableIPs": ["0.0.0.0/0", "::/0"], - "RequestTags": ["tag:exit-a"], - "Services": [ - { "Proto": "peerapi4", "Port": 57826 }, - { "Proto": "peerapi6", "Port": 57826 }, - { "Proto": "peerapi-dns-proxy", "Port": 1 } - ] - }, - "Created": "2026-03-28T10:37:56.932966573Z", - "Tags": ["tag:exit-a"], - "MachineAuthorized": true, - "CapMap": { - "https://tailscale.com/cap/file-sharing": null, - "https://tailscale.com/cap/is-owner": null, - "https://tailscale.com/cap/ssh": null, - "https://tailscale.com/cap/tailnet-lock": null, - "probe-udp-lifetime": null, - "ssh-behavior-v1": null, - "ssh-env-vars": null, - "store-appc-routes": null, - "tailnet-display-name": ["kratail2tid@passkey"] - }, - "ComputedName": "exit-a", - "ComputedNameWithHost": "exit-a" - }, - "AllCaps": [ - "store-appc-routes", - "ssh-behavior-v1", - "https://tailscale.com/cap/ssh", - "https://tailscale.com/cap/is-owner", - "https://tailscale.com/cap/file-sharing", - "tailnet-display-name", - "https://tailscale.com/cap/tailnet-lock", - "probe-udp-lifetime", - "ssh-env-vars" - ], - "NodeKey": "nodekey:21ab6fa3288e3bf8cecced295316c6327f427649765eb1746cc6ee9978bcc35c", - "MachineKey": "mkey:d4a36168723163165bbdcb0b17762903171593d01c26c5bb12216932f6d10876", "Peers": [], - "DNS": { - "Routes": { - "tail78f774.ts.net.": null, - "ts.net.": [{ "Addr": "199.247.155.53" }, { "Addr": "2620:111:8007::53" }] - }, - "Domains": ["tail78f774.ts.net"], - "Proxied": true, - "ExitNodeFilteredSet": [".ts.net", ".tailscale.net"] - }, - "PacketFilter": [], - "PacketFilterRules": null, - "SSHPolicy": { "rules": [] }, - "CollectServices": false, - "DERPMap": { - "Regions": { - "1": { - "RegionID": 1, - "RegionCode": "nyc", - "RegionName": "New York City", - "Latitude": 40.7128, - "Longitude": -74.006, - "Nodes": [ - { - "Name": "1h", - "RegionID": 1, - "HostName": "derp1h.tailscale.com", - "IPv4": "199.38.181.93", - "IPv6": "2607:f740:f::afd", - "CanPort80": true - }, - { - "Name": "1g", - "RegionID": 1, - "HostName": "derp1g.tailscale.com", - "IPv4": "209.177.145.120", - "IPv6": "2607:f740:f::3eb", - "CanPort80": true - }, - { - "Name": "1i", - "RegionID": 1, - "HostName": "derp1i.tailscale.com", - "IPv4": "199.38.181.103", - "IPv6": "2607:f740:f::e19", - "CanPort80": true - }, - { - "Name": "1f", - "RegionID": 1, - "HostName": "derp1f.tailscale.com", - "IPv4": "199.38.181.104", - "IPv6": "2607:f740:f::bc", - "CanPort80": true - } - ] - }, - "10": { - "RegionID": 10, - "RegionCode": "sea", - "RegionName": "Seattle", - "Latitude": 47.609722, - "Longitude": -122.333056, - "Nodes": [ - { - "Name": "10c", - "RegionID": 10, - "HostName": "derp10c.tailscale.com", - "IPv4": "192.73.240.121", - "IPv6": "2607:f740:14::40c", - "CanPort80": true - }, - { - "Name": "10d", - "RegionID": 10, - "HostName": "derp10d.tailscale.com", - "IPv4": "192.73.240.132", - "IPv6": "2607:f740:14::500", - "CanPort80": true - }, - { - "Name": "10b", - "RegionID": 10, - "HostName": "derp10b.tailscale.com", - "IPv4": "192.73.240.161", - "IPv6": "2607:f740:14::61c", - "CanPort80": true - } - ] - }, - "11": { - "RegionID": 11, - "RegionCode": "sao", - "RegionName": "São Paulo", - "Latitude": -23.55, - "Longitude": -46.633333, - "Nodes": [ - { - "Name": "11f", - "RegionID": 11, - "HostName": "derp11f.tailscale.com", - "IPv4": "172.237.61.197", - "IPv6": "2600:3c0d::2000:3bff:fe44:6166", - "CanPort80": true - }, - { - "Name": "11g", - "RegionID": 11, - "HostName": "derp11g.tailscale.com", - "IPv4": "172.237.61.190", - "IPv6": "2600:3c0d::2000:62ff:febe:2e67", - "CanPort80": true - }, - { - "Name": "11e", - "RegionID": 11, - "HostName": "derp11e.tailscale.com", - "IPv4": "172.237.61.194", - "IPv6": "2600:3c0d::2000:d2ff:fe43:1790", - "CanPort80": true - } - ] - }, - "12": { - "RegionID": 12, - "RegionCode": "ord", - "RegionName": "Chicago", - "Latitude": 41.881944, - "Longitude": -87.627778, - "Nodes": [ - { - "Name": "12e", - "RegionID": 12, - "HostName": "derp12e.tailscale.com", - "IPv4": "209.177.158.15", - "IPv6": "2607:f740:e::b17", - "CanPort80": true - }, - { - "Name": "12f", - "RegionID": 12, - "HostName": "derp12f.tailscale.com", - "IPv4": "199.38.182.118", - "IPv6": "2607:f740:e::4c8", - "CanPort80": true - }, - { - "Name": "12d", - "RegionID": 12, - "HostName": "derp12d.tailscale.com", - "IPv4": "209.177.158.246", - "IPv6": "2607:f740:e::811", - "CanPort80": true - } - ] - }, - "13": { - "RegionID": 13, - "RegionCode": "den", - "RegionName": "Denver", - "Latitude": 39.7392, - "Longitude": -104.9849, - "Nodes": [ - { - "Name": "13c", - "RegionID": 13, - "HostName": "derp13c.tailscale.com", - "IPv4": "192.73.242.28", - "IPv6": "2607:f740:16::5c", - "CanPort80": true - }, - { - "Name": "13d", - "RegionID": 13, - "HostName": "derp13d.tailscale.com", - "IPv4": "192.73.242.204", - "IPv6": "2607:f740:16::c23", - "CanPort80": true - }, - { - "Name": "13b", - "RegionID": 13, - "HostName": "derp13b.tailscale.com", - "IPv4": "192.73.242.187", - "IPv6": "2607:f740:16::640", - "CanPort80": true - } - ] - }, - "14": { - "RegionID": 14, - "RegionCode": "ams", - "RegionName": "Amsterdam", - "Latitude": 52.372778, - "Longitude": 4.893611, - "Nodes": [ - { - "Name": "14c", - "RegionID": 14, - "HostName": "derp14c.tailscale.com", - "IPv4": "176.58.93.147", - "IPv6": "2a00:dd80:3c::b09", - "CanPort80": true - }, - { - "Name": "14d", - "RegionID": 14, - "HostName": "derp14d.tailscale.com", - "IPv4": "176.58.93.154", - "IPv6": "2a00:dd80:3c::3d5", - "CanPort80": true - }, - { - "Name": "14b", - "RegionID": 14, - "HostName": "derp14b.tailscale.com", - "IPv4": "176.58.93.248", - "IPv6": "2a00:dd80:3c::807", - "CanPort80": true - } - ] - }, - "15": { - "RegionID": 15, - "RegionCode": "jnb", - "RegionName": "Johannesburg", - "Latitude": -26.204444, - "Longitude": 28.045556, - "Nodes": [ - { - "Name": "15c", - "RegionID": 15, - "HostName": "derp15c.tailscale.com", - "IPv4": "102.67.165.185", - "IPv6": "2c0f:edb0:0:10::b59", - "CanPort80": true - }, - { - "Name": "15d", - "RegionID": 15, - "HostName": "derp15d.tailscale.com", - "IPv4": "102.67.165.36", - "IPv6": "2c0f:edb0:0:10::599", - "CanPort80": true - }, - { - "Name": "15b", - "RegionID": 15, - "HostName": "derp15b.tailscale.com", - "IPv4": "102.67.165.90", - "IPv6": "2c0f:edb0:0:10::963", - "CanPort80": true - } - ] - }, - "16": { - "RegionID": 16, - "RegionCode": "mia", - "RegionName": "Miami", - "Latitude": 25.78, - "Longitude": -80.21, - "Nodes": [ - { - "Name": "16c", - "RegionID": 16, - "HostName": "derp16c.tailscale.com", - "IPv4": "192.73.243.229", - "IPv6": "2607:f740:17::4e4", - "CanPort80": true - }, - { - "Name": "16d", - "RegionID": 16, - "HostName": "derp16d.tailscale.com", - "IPv4": "192.73.243.141", - "IPv6": "2607:f740:17::475", - "CanPort80": true - }, - { - "Name": "16b", - "RegionID": 16, - "HostName": "derp16b.tailscale.com", - "IPv4": "192.73.243.135", - "IPv6": "2607:f740:17::476", - "CanPort80": true - } - ] - }, - "17": { - "RegionID": 17, - "RegionCode": "lax", - "RegionName": "Los Angeles", - "Latitude": 34.05, - "Longitude": -118.25, - "Nodes": [ - { - "Name": "17c", - "RegionID": 17, - "HostName": "derp17c.tailscale.com", - "IPv4": "208.111.40.12", - "IPv6": "2607:f740:c::10", - "CanPort80": true - }, - { - "Name": "17d", - "RegionID": 17, - "HostName": "derp17d.tailscale.com", - "IPv4": "208.111.40.216", - "IPv6": "2607:f740:c::e1b", - "CanPort80": true - }, - { - "Name": "17b", - "RegionID": 17, - "HostName": "derp17b.tailscale.com", - "IPv4": "192.73.244.245", - "IPv6": "2607:f740:c::646", - "CanPort80": true - } - ] - }, - "18": { - "RegionID": 18, - "RegionCode": "par", - "RegionName": "Paris", - "Latitude": 48.856667, - "Longitude": 2.352222, - "Nodes": [ - { - "Name": "18c", - "RegionID": 18, - "HostName": "derp18c.tailscale.com", - "IPv4": "176.58.90.207", - "IPv6": "2a00:dd80:3e::c19", - "CanPort80": true - }, - { - "Name": "18d", - "RegionID": 18, - "HostName": "derp18d.tailscale.com", - "IPv4": "176.58.90.104", - "IPv6": "2a00:dd80:3e::f2e", - "CanPort80": true - }, - { - "Name": "18b", - "RegionID": 18, - "HostName": "derp18b.tailscale.com", - "IPv4": "176.58.90.147", - "IPv6": "2a00:dd80:3e::363", - "CanPort80": true - } - ] - }, - "19": { - "RegionID": 19, - "RegionCode": "mad", - "RegionName": "Madrid", - "Latitude": 40.416944, - "Longitude": -3.703333, - "Nodes": [ - { - "Name": "19c", - "RegionID": 19, - "HostName": "derp19c.tailscale.com", - "IPv4": "45.159.97.61", - "IPv6": "2a00:dd80:14:10::20", - "CanPort80": true - }, - { - "Name": "19d", - "RegionID": 19, - "HostName": "derp19d.tailscale.com", - "IPv4": "45.159.97.233", - "IPv6": "2a00:dd80:14:10::34a", - "CanPort80": true - }, - { - "Name": "19b", - "RegionID": 19, - "HostName": "derp19b.tailscale.com", - "IPv4": "45.159.97.144", - "IPv6": "2a00:dd80:14:10::335", - "CanPort80": true - } - ] - }, - "2": { - "RegionID": 2, - "RegionCode": "sfo", - "RegionName": "San Francisco", - "Latitude": 37.7775, - "Longitude": -122.416389, - "Nodes": [ - { - "Name": "2e", - "RegionID": 2, - "HostName": "derp2e.tailscale.com", - "IPv4": "192.73.252.134", - "IPv6": "2607:f740:0:3f::44c", - "CanPort80": true - }, - { - "Name": "2f", - "RegionID": 2, - "HostName": "derp2f.tailscale.com", - "IPv4": "208.111.34.178", - "IPv6": "2607:f740:0:3f::f4", - "CanPort80": true - }, - { - "Name": "2d", - "RegionID": 2, - "HostName": "derp2d.tailscale.com", - "IPv4": "192.73.252.65", - "IPv6": "2607:f740:0:3f::287", - "CanPort80": true - } - ] - }, - "20": { - "RegionID": 20, - "RegionCode": "hkg", - "RegionName": "Hong Kong", - "Latitude": 22.3193, - "Longitude": 114.1694, - "Nodes": [ - { - "Name": "20c", - "RegionID": 20, - "HostName": "derp20c.tailscale.com", - "IPv4": "205.147.105.30", - "IPv6": "2403:2500:8000:1::5fb", - "CanPort80": true - }, - { - "Name": "20d", - "RegionID": 20, - "HostName": "derp20d.tailscale.com", - "IPv4": "205.147.105.78", - "IPv6": "2403:2500:8000:1::e9a", - "CanPort80": true - }, - { - "Name": "20b", - "RegionID": 20, - "HostName": "derp20b.tailscale.com", - "IPv4": "103.6.84.152", - "IPv6": "2403:2500:8000:1::ef6", - "CanPort80": true - } - ] - }, - "21": { - "RegionID": 21, - "RegionCode": "tor", - "RegionName": "Toronto", - "Latitude": 43.741667, - "Longitude": -79.373333, - "Nodes": [ - { - "Name": "21c", - "RegionID": 21, - "HostName": "derp21c.tailscale.com", - "IPv4": "162.248.221.215", - "IPv6": "2607:f740:50::f10", - "CanPort80": true - }, - { - "Name": "21d", - "RegionID": 21, - "HostName": "derp21d.tailscale.com", - "IPv4": "162.248.221.248", - "IPv6": "2607:f740:50::ca4", - "CanPort80": true - }, - { - "Name": "21b", - "RegionID": 21, - "HostName": "derp21b.tailscale.com", - "IPv4": "162.248.221.199", - "IPv6": "2607:f740:50::1d1", - "CanPort80": true - } - ] - }, - "22": { - "RegionID": 22, - "RegionCode": "waw", - "RegionName": "Warsaw", - "Latitude": 52.23, - "Longitude": 21.011111, - "Nodes": [ - { - "Name": "22c", - "RegionID": 22, - "HostName": "derp22c.tailscale.com", - "IPv4": "45.159.98.253", - "IPv6": "2a00:dd80:40:100::3f", - "CanPort80": true - }, - { - "Name": "22d", - "RegionID": 22, - "HostName": "derp22d.tailscale.com", - "IPv4": "45.159.98.145", - "IPv6": "2a00:dd80:40:100::211", - "CanPort80": true - }, - { - "Name": "22b", - "RegionID": 22, - "HostName": "derp22b.tailscale.com", - "IPv4": "45.159.98.196", - "IPv6": "2a00:dd80:40:100::316", - "CanPort80": true - } - ] - }, - "23": { - "RegionID": 23, - "RegionCode": "dbi", - "RegionName": "Dubai", - "Latitude": 25.263056, - "Longitude": 55.297222, - "Nodes": [ - { - "Name": "23c", - "RegionID": 23, - "HostName": "derp23c.tailscale.com", - "IPv4": "185.34.3.207", - "IPv6": "2a00:dd80:3f:100::a50", - "CanPort80": true - }, - { - "Name": "23d", - "RegionID": 23, - "HostName": "derp23d.tailscale.com", - "IPv4": "185.34.3.75", - "IPv6": "2a00:dd80:3f:100::97e", - "CanPort80": true - }, - { - "Name": "23b", - "RegionID": 23, - "HostName": "derp23b.tailscale.com", - "IPv4": "185.34.3.232", - "IPv6": "2a00:dd80:3f:100::76f", - "CanPort80": true - } - ] - }, - "24": { - "RegionID": 24, - "RegionCode": "hnl", - "RegionName": "Honolulu", - "Latitude": 21.306944, - "Longitude": -157.858333, - "Nodes": [ - { - "Name": "24c", - "RegionID": 24, - "HostName": "derp24c.tailscale.com", - "IPv4": "208.83.233.233", - "IPv6": "2001:19f0:c000:c591:5400:04ff:fe26:2c5f", - "CanPort80": true - }, - { - "Name": "24d", - "RegionID": 24, - "HostName": "derp24d.tailscale.com", - "IPv4": "208.72.155.133", - "IPv6": "2001:19f0:c000:c564:5400:04ff:fe26:2ba8", - "CanPort80": true - }, - { - "Name": "24b", - "RegionID": 24, - "HostName": "derp24b.tailscale.com", - "IPv4": "208.83.234.151", - "IPv6": "2001:19f0:c000:c586:5400:04ff:fe26:2ba6", - "CanPort80": true - } - ] - }, - "25": { - "RegionID": 25, - "RegionCode": "nai", - "RegionName": "Nairobi", - "Latitude": -1.286389, - "Longitude": 36.817222, - "Nodes": [ - { - "Name": "25c", - "RegionID": 25, - "HostName": "derp25c.tailscale.com", - "IPv4": "102.67.167.37", - "IPv6": "2c0f:edb0:2000:1::2c7", - "CanPort80": true - }, - { - "Name": "25d", - "RegionID": 25, - "HostName": "derp25d.tailscale.com", - "IPv4": "102.67.167.188", - "IPv6": "2c0f:edb0:2000:1::188", - "CanPort80": true - }, - { - "Name": "25b", - "RegionID": 25, - "HostName": "derp25b.tailscale.com", - "IPv4": "102.67.167.245", - "IPv6": "2c0f:edb0:2000:1::2e9", - "CanPort80": true - } - ] - }, - "26": { - "RegionID": 26, - "RegionCode": "nue", - "RegionName": "Nuremberg", - "Latitude": 49.453889, - "Longitude": 11.0775, - "Nodes": [ - { - "Name": "26c", - "RegionID": 26, - "HostName": "derp26c.tailscale.com", - "IPv4": "49.12.193.137", - "IPv6": "2a01:4f8:1c1c:5c70::1", - "CanPort80": true - }, - { - "Name": "26d", - "RegionID": 26, - "HostName": "derp26d.tailscale.com", - "IPv4": "49.13.204.141", - "IPv6": "2a01:4f8:1c0c:7d06::1", - "CanPort80": true - }, - { - "Name": "26b", - "RegionID": 26, - "HostName": "derp26b.tailscale.com", - "IPv4": "167.235.72.200", - "IPv6": "2a01:4f8:1c1c:47b6::1", - "CanPort80": true - } - ] - }, - "27": { - "RegionID": 27, - "RegionCode": "iad", - "RegionName": "Ashburn", - "Latitude": 39.03, - "Longitude": -77.471111, - "Nodes": [ - { - "Name": "27d", - "RegionID": 27, - "HostName": "derp27d.tailscale.com", - "IPv4": "178.156.152.106", - "IPv6": "2a01:4ff:f0:3c8e::1", - "CanPort80": true - }, - { - "Name": "27c", - "RegionID": 27, - "HostName": "derp27c.tailscale.com", - "IPv4": "178.156.152.91", - "IPv6": "2a01:4ff:f0:3913::1", - "CanPort80": true - }, - { - "Name": "27e", - "RegionID": 27, - "HostName": "derp27e.tailscale.com", - "IPv4": "178.156.134.232", - "IPv6": "2a01:4ff:f0:28d4::1", - "CanPort80": true - }, - { - "Name": "27b", - "RegionID": 27, - "HostName": "derp27b.tailscale.com", - "IPv4": "5.161.218.233", - "IPv6": "2a01:4ff:f0:3db9::1", - "CanPort80": true - } - ] - }, - "28": { - "RegionID": 28, - "RegionCode": "hel", - "RegionName": "Helsinki", - "Latitude": 60.170833, - "Longitude": 24.9375, - "Nodes": [ - { - "Name": "28c", - "RegionID": 28, - "HostName": "derp28c.tailscale.com", - "IPv4": "95.217.2.165", - "IPv6": "2a01:4f9:c012:cd74::1", - "CanPort80": true - }, - { - "Name": "28d", - "RegionID": 28, - "HostName": "derp28d.tailscale.com", - "IPv4": "157.180.28.32", - "IPv6": "2a01:4f9:c012:2e5b::1", - "CanPort80": true - }, - { - "Name": "28b", - "RegionID": 28, - "HostName": "derp28b.tailscale.com", - "IPv4": "65.109.143.62", - "IPv6": "2a01:4f9:c012:d55c::1", - "CanPort80": true - } - ] - }, - "3": { - "RegionID": 3, - "RegionCode": "sin", - "RegionName": "Singapore", - "Latitude": 1.3521, - "Longitude": 103.8198, - "Nodes": [ - { - "Name": "3g", - "RegionID": 3, - "HostName": "derp3g.tailscale.com", - "IPv4": "172.237.72.79", - "IPv6": "2600:3c15::2000:adff:fe08:6fab", - "CanPort80": true - }, - { - "Name": "3f", - "RegionID": 3, - "HostName": "derp3f.tailscale.com", - "IPv4": "172.237.72.8", - "IPv6": "2600:3c15::2000:53ff:fe48:a668", - "CanPort80": true - }, - { - "Name": "3h", - "RegionID": 3, - "HostName": "derp3h.tailscale.com", - "IPv4": "172.237.66.30", - "IPv6": "2600:3c15::2000:3dff:fe44:50aa", - "CanPort80": true - }, - { - "Name": "3e", - "RegionID": 3, - "HostName": "derp3e.tailscale.com", - "IPv4": "172.237.72.43", - "IPv6": "2600:3c15::2000:6cff:fee4:d799", - "CanPort80": true - } - ] - }, - "4": { - "RegionID": 4, - "RegionCode": "fra", - "RegionName": "Frankfurt", - "Latitude": 50.1109, - "Longitude": 8.6821, - "Nodes": [ - { - "Name": "4h", - "RegionID": 4, - "HostName": "derp4h.tailscale.com", - "IPv4": "185.40.234.77", - "IPv6": "2a00:dd80:20::bcf", - "CanPort80": true - }, - { - "Name": "4g", - "RegionID": 4, - "HostName": "derp4g.tailscale.com", - "IPv4": "185.40.234.113", - "IPv6": "2a00:dd80:20::8f", - "CanPort80": true - }, - { - "Name": "4i", - "RegionID": 4, - "HostName": "derp4i.tailscale.com", - "IPv4": "185.40.234.53", - "IPv6": "2a00:dd80:20::8a6", - "CanPort80": true - }, - { - "Name": "4f", - "RegionID": 4, - "HostName": "derp4f.tailscale.com", - "IPv4": "185.40.234.219", - "IPv6": "2a00:dd80:20::a25", - "CanPort80": true - } - ] - }, - "5": { - "RegionID": 5, - "RegionCode": "syd", - "RegionName": "Sydney", - "Latitude": -33.867778, - "Longitude": 151.21, - "Nodes": [ - { - "Name": "5f", - "RegionID": 5, - "HostName": "derp5f.tailscale.com", - "IPv4": "172.105.166.103", - "IPv6": "2400:8907::2000:ccff:fe1f:80da", - "CanPort80": true - }, - { - "Name": "5g", - "RegionID": 5, - "HostName": "derp5g.tailscale.com", - "IPv4": "172.105.169.57", - "IPv6": "2400:8907::2000:2fff:fea7:57f4", - "CanPort80": true - }, - { - "Name": "5e", - "RegionID": 5, - "HostName": "derp5e.tailscale.com", - "IPv4": "172.105.179.230", - "IPv6": "2400:8907::2000:ceff:fe8d:4f4e", - "CanPort80": true - } - ] - }, - "6": { - "RegionID": 6, - "RegionCode": "blr", - "RegionName": "Bengaluru", - "Latitude": 12.9716, - "Longitude": 77.5946, - "Nodes": [ - { - "Name": "6a", - "RegionID": 6, - "HostName": "derp6.tailscale.com", - "IPv4": "68.183.90.120", - "IPv6": "2400:6180:100:d0::982:d001", - "CanPort80": true - } - ] - }, - "7": { - "RegionID": 7, - "RegionCode": "tok", - "RegionName": "Tokyo", - "Latitude": 35.6764, - "Longitude": 139.65, - "Nodes": [ - { - "Name": "7g", - "RegionID": 7, - "HostName": "derp7g.tailscale.com", - "IPv4": "172.238.6.179", - "IPv6": "2600:3c18::2000:3fff:fe80:3ebd", - "CanPort80": true - }, - { - "Name": "7f", - "RegionID": 7, - "HostName": "derp7f.tailscale.com", - "IPv4": "172.238.6.34", - "IPv6": "2600:3c18::2000:acff:fe8e:3ed5", - "CanPort80": true - }, - { - "Name": "7h", - "RegionID": 7, - "HostName": "derp7h.tailscale.com", - "IPv4": "172.237.28.183", - "IPv6": "2600:3c18::2000:b1ff:fea9:4560", - "CanPort80": true - }, - { - "Name": "7e", - "RegionID": 7, - "HostName": "derp7e.tailscale.com", - "IPv4": "172.238.6.180", - "IPv6": "2600:3c18::2000:60ff:fe0f:6e83", - "STUNOnly": true, - "CanPort80": true - } - ] - }, - "8": { - "RegionID": 8, - "RegionCode": "lhr", - "RegionName": "London", - "Latitude": 51.5072, - "Longitude": 0.1276, - "Nodes": [ - { - "Name": "8f", - "RegionID": 8, - "HostName": "derp8f.tailscale.com", - "IPv4": "176.58.88.183", - "IPv6": "2a00:dd80:3a::dfa", - "CanPort80": true - }, - { - "Name": "8g", - "RegionID": 8, - "HostName": "derp8g.tailscale.com", - "IPv4": "176.58.92.254", - "IPv6": "2a00:dd80:3a::ed", - "CanPort80": true - }, - { - "Name": "8e", - "RegionID": 8, - "HostName": "derp8e.tailscale.com", - "IPv4": "176.58.92.144", - "IPv6": "2a00:dd80:3a::b33", - "CanPort80": true - } - ] - }, - "9": { - "RegionID": 9, - "RegionCode": "dfw", - "RegionName": "Dallas", - "Latitude": 32.779167, - "Longitude": -96.808889, - "Nodes": [ - { - "Name": "9e", - "RegionID": 9, - "HostName": "derp9e.tailscale.com", - "IPv4": "192.73.248.83", - "IPv6": "2607:f740:100::359", - "CanPort80": true - }, - { - "Name": "9f", - "RegionID": 9, - "HostName": "derp9f.tailscale.com", - "IPv4": "209.177.156.197", - "IPv6": "2607:f740:100::cad", - "CanPort80": true - }, - { - "Name": "9d", - "RegionID": 9, - "HostName": "derp9d.tailscale.com", - "IPv4": "209.177.156.94", - "IPv6": "2607:f740:100::c05", - "CanPort80": true - } - ] - } - } - }, - "DisplayMessages": null, - "TKAEnabled": false, - "TKAHead": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", - "Domain": "kratail2tid@passkey", - "DomainAuditLogID": "", - "UserProfiles": { - "3118755726458377": { - "ID": 3118755726458377, - "LoginName": "exit-a.tail78f774.ts.net", - "DisplayName": "exit-a" - } - } + "PacketFilterRules": null } }, "exit-b": { - "commands": { - "packet_filter_rules": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-b/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-b/tailscaled.sock debug localapi POST debug-packet-filter-matches" - }, "packet_filter_rules": null, - "packet_filter_matches": [], - "whois": { - "100.124.195.93": { - "peer_name": "exit-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-b/tailscaled.sock whois --json 100.124.195.93", - "response": null - }, - "100.85.66.106": { - "peer_name": "exit-node", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-b/tailscaled.sock whois --json 100.85.66.106", - "response": null - }, - "100.107.162.14": { - "peer_name": "group-a-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-b/tailscaled.sock whois --json 100.107.162.14", - "response": null - }, - "100.77.135.18": { - "peer_name": "group-b-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-b/tailscaled.sock whois --json 100.77.135.18", - "response": null - }, - "100.105.127.107": { - "peer_name": "multi-exit-router", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-b/tailscaled.sock whois --json 100.105.127.107", - "response": null - }, - "100.109.43.124": { - "peer_name": "router-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-b/tailscaled.sock whois --json 100.109.43.124", - "response": null - }, - "100.65.172.123": { - "peer_name": "router-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-b/tailscaled.sock whois --json 100.65.172.123", - "response": null - }, - "100.92.142.61": { - "peer_name": "subnet-router", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-b/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-b/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-b/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-b/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-b/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-b/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-b/tailscaled.sock whois --json 100.90.199.68", - "response": null - } - }, "netmap": { - "SelfNode": { - "ID": 2230775583277936, - "StableID": "ndK1N8hKRJ11CNTRL", - "Name": "exit-b.tail78f774.ts.net.", - "User": 2230775583277936, - "Key": "nodekey:265e1377372be0d036773ac41339bf7b53ed18e9f67f196d7d517abeff741217", - "DiscoKey": "discokey:63071b08ff89860a2d98005f8f6f65f3b92e05b7b1338b1be71e4ad866f12728", - "Addresses": ["100.116.18.24/32", "fd7a:115c:a1e0::ff37:1218/128"], - "AllowedIPs": ["100.116.18.24/32", "fd7a:115c:a1e0::ff37:1218/128"], - "Endpoints": ["77.164.248.136:35565", "10.65.0.27:35565", "172.17.0.1:35565"], - "Hostinfo": { - "Hostname": "exit-b", - "RoutableIPs": ["0.0.0.0/0", "::/0"], - "RequestTags": ["tag:exit-b"], - "Services": [ - { "Proto": "peerapi4", "Port": 61723 }, - { "Proto": "peerapi6", "Port": 61723 }, - { "Proto": "peerapi-dns-proxy", "Port": 1 } - ] - }, - "Created": "2026-03-28T10:38:00.655990366Z", - "Tags": ["tag:exit-b"], - "MachineAuthorized": true, - "CapMap": { - "https://tailscale.com/cap/file-sharing": null, - "https://tailscale.com/cap/is-owner": null, - "https://tailscale.com/cap/ssh": null, - "https://tailscale.com/cap/tailnet-lock": null, - "probe-udp-lifetime": null, - "ssh-behavior-v1": null, - "ssh-env-vars": null, - "store-appc-routes": null, - "tailnet-display-name": ["kratail2tid@passkey"] - }, - "ComputedName": "exit-b", - "ComputedNameWithHost": "exit-b" - }, - "AllCaps": [ - "ssh-behavior-v1", - "https://tailscale.com/cap/ssh", - "https://tailscale.com/cap/file-sharing", - "ssh-env-vars", - "tailnet-display-name", - "https://tailscale.com/cap/tailnet-lock", - "probe-udp-lifetime", - "store-appc-routes", - "https://tailscale.com/cap/is-owner" - ], - "NodeKey": "nodekey:265e1377372be0d036773ac41339bf7b53ed18e9f67f196d7d517abeff741217", - "MachineKey": "mkey:f4cbc28e2db0f8d8a6a5fc3991b055477e5efc6c025d24b72d3509fa3743401c", "Peers": [], - "DNS": { - "Routes": { - "tail78f774.ts.net.": null, - "ts.net.": [{ "Addr": "199.247.155.53" }, { "Addr": "2620:111:8007::53" }] - }, - "Domains": ["tail78f774.ts.net"], - "Proxied": true, - "ExitNodeFilteredSet": [".ts.net", ".tailscale.net"] - }, - "PacketFilter": [], - "PacketFilterRules": null, - "SSHPolicy": { "rules": [] }, - "CollectServices": false, - "DERPMap": { - "Regions": { - "1": { - "RegionID": 1, - "RegionCode": "nyc", - "RegionName": "New York City", - "Latitude": 40.7128, - "Longitude": -74.006, - "Nodes": [ - { - "Name": "1h", - "RegionID": 1, - "HostName": "derp1h.tailscale.com", - "IPv4": "199.38.181.93", - "IPv6": "2607:f740:f::afd", - "CanPort80": true - }, - { - "Name": "1g", - "RegionID": 1, - "HostName": "derp1g.tailscale.com", - "IPv4": "209.177.145.120", - "IPv6": "2607:f740:f::3eb", - "CanPort80": true - }, - { - "Name": "1i", - "RegionID": 1, - "HostName": "derp1i.tailscale.com", - "IPv4": "199.38.181.103", - "IPv6": "2607:f740:f::e19", - "CanPort80": true - }, - { - "Name": "1f", - "RegionID": 1, - "HostName": "derp1f.tailscale.com", - "IPv4": "199.38.181.104", - "IPv6": "2607:f740:f::bc", - "CanPort80": true - } - ] - }, - "10": { - "RegionID": 10, - "RegionCode": "sea", - "RegionName": "Seattle", - "Latitude": 47.609722, - "Longitude": -122.333056, - "Nodes": [ - { - "Name": "10c", - "RegionID": 10, - "HostName": "derp10c.tailscale.com", - "IPv4": "192.73.240.121", - "IPv6": "2607:f740:14::40c", - "CanPort80": true - }, - { - "Name": "10d", - "RegionID": 10, - "HostName": "derp10d.tailscale.com", - "IPv4": "192.73.240.132", - "IPv6": "2607:f740:14::500", - "CanPort80": true - }, - { - "Name": "10b", - "RegionID": 10, - "HostName": "derp10b.tailscale.com", - "IPv4": "192.73.240.161", - "IPv6": "2607:f740:14::61c", - "CanPort80": true - } - ] - }, - "11": { - "RegionID": 11, - "RegionCode": "sao", - "RegionName": "São Paulo", - "Latitude": -23.55, - "Longitude": -46.633333, - "Nodes": [ - { - "Name": "11f", - "RegionID": 11, - "HostName": "derp11f.tailscale.com", - "IPv4": "172.237.61.197", - "IPv6": "2600:3c0d::2000:3bff:fe44:6166", - "CanPort80": true - }, - { - "Name": "11g", - "RegionID": 11, - "HostName": "derp11g.tailscale.com", - "IPv4": "172.237.61.190", - "IPv6": "2600:3c0d::2000:62ff:febe:2e67", - "CanPort80": true - }, - { - "Name": "11e", - "RegionID": 11, - "HostName": "derp11e.tailscale.com", - "IPv4": "172.237.61.194", - "IPv6": "2600:3c0d::2000:d2ff:fe43:1790", - "CanPort80": true - } - ] - }, - "12": { - "RegionID": 12, - "RegionCode": "ord", - "RegionName": "Chicago", - "Latitude": 41.881944, - "Longitude": -87.627778, - "Nodes": [ - { - "Name": "12e", - "RegionID": 12, - "HostName": "derp12e.tailscale.com", - "IPv4": "209.177.158.15", - "IPv6": "2607:f740:e::b17", - "CanPort80": true - }, - { - "Name": "12f", - "RegionID": 12, - "HostName": "derp12f.tailscale.com", - "IPv4": "199.38.182.118", - "IPv6": "2607:f740:e::4c8", - "CanPort80": true - }, - { - "Name": "12d", - "RegionID": 12, - "HostName": "derp12d.tailscale.com", - "IPv4": "209.177.158.246", - "IPv6": "2607:f740:e::811", - "CanPort80": true - } - ] - }, - "13": { - "RegionID": 13, - "RegionCode": "den", - "RegionName": "Denver", - "Latitude": 39.7392, - "Longitude": -104.9849, - "Nodes": [ - { - "Name": "13c", - "RegionID": 13, - "HostName": "derp13c.tailscale.com", - "IPv4": "192.73.242.28", - "IPv6": "2607:f740:16::5c", - "CanPort80": true - }, - { - "Name": "13d", - "RegionID": 13, - "HostName": "derp13d.tailscale.com", - "IPv4": "192.73.242.204", - "IPv6": "2607:f740:16::c23", - "CanPort80": true - }, - { - "Name": "13b", - "RegionID": 13, - "HostName": "derp13b.tailscale.com", - "IPv4": "192.73.242.187", - "IPv6": "2607:f740:16::640", - "CanPort80": true - } - ] - }, - "14": { - "RegionID": 14, - "RegionCode": "ams", - "RegionName": "Amsterdam", - "Latitude": 52.372778, - "Longitude": 4.893611, - "Nodes": [ - { - "Name": "14c", - "RegionID": 14, - "HostName": "derp14c.tailscale.com", - "IPv4": "176.58.93.147", - "IPv6": "2a00:dd80:3c::b09", - "CanPort80": true - }, - { - "Name": "14d", - "RegionID": 14, - "HostName": "derp14d.tailscale.com", - "IPv4": "176.58.93.154", - "IPv6": "2a00:dd80:3c::3d5", - "CanPort80": true - }, - { - "Name": "14b", - "RegionID": 14, - "HostName": "derp14b.tailscale.com", - "IPv4": "176.58.93.248", - "IPv6": "2a00:dd80:3c::807", - "CanPort80": true - } - ] - }, - "15": { - "RegionID": 15, - "RegionCode": "jnb", - "RegionName": "Johannesburg", - "Latitude": -26.204444, - "Longitude": 28.045556, - "Nodes": [ - { - "Name": "15c", - "RegionID": 15, - "HostName": "derp15c.tailscale.com", - "IPv4": "102.67.165.185", - "IPv6": "2c0f:edb0:0:10::b59", - "CanPort80": true - }, - { - "Name": "15d", - "RegionID": 15, - "HostName": "derp15d.tailscale.com", - "IPv4": "102.67.165.36", - "IPv6": "2c0f:edb0:0:10::599", - "CanPort80": true - }, - { - "Name": "15b", - "RegionID": 15, - "HostName": "derp15b.tailscale.com", - "IPv4": "102.67.165.90", - "IPv6": "2c0f:edb0:0:10::963", - "CanPort80": true - } - ] - }, - "16": { - "RegionID": 16, - "RegionCode": "mia", - "RegionName": "Miami", - "Latitude": 25.78, - "Longitude": -80.21, - "Nodes": [ - { - "Name": "16c", - "RegionID": 16, - "HostName": "derp16c.tailscale.com", - "IPv4": "192.73.243.229", - "IPv6": "2607:f740:17::4e4", - "CanPort80": true - }, - { - "Name": "16d", - "RegionID": 16, - "HostName": "derp16d.tailscale.com", - "IPv4": "192.73.243.141", - "IPv6": "2607:f740:17::475", - "CanPort80": true - }, - { - "Name": "16b", - "RegionID": 16, - "HostName": "derp16b.tailscale.com", - "IPv4": "192.73.243.135", - "IPv6": "2607:f740:17::476", - "CanPort80": true - } - ] - }, - "17": { - "RegionID": 17, - "RegionCode": "lax", - "RegionName": "Los Angeles", - "Latitude": 34.05, - "Longitude": -118.25, - "Nodes": [ - { - "Name": "17c", - "RegionID": 17, - "HostName": "derp17c.tailscale.com", - "IPv4": "208.111.40.12", - "IPv6": "2607:f740:c::10", - "CanPort80": true - }, - { - "Name": "17d", - "RegionID": 17, - "HostName": "derp17d.tailscale.com", - "IPv4": "208.111.40.216", - "IPv6": "2607:f740:c::e1b", - "CanPort80": true - }, - { - "Name": "17b", - "RegionID": 17, - "HostName": "derp17b.tailscale.com", - "IPv4": "192.73.244.245", - "IPv6": "2607:f740:c::646", - "CanPort80": true - } - ] - }, - "18": { - "RegionID": 18, - "RegionCode": "par", - "RegionName": "Paris", - "Latitude": 48.856667, - "Longitude": 2.352222, - "Nodes": [ - { - "Name": "18c", - "RegionID": 18, - "HostName": "derp18c.tailscale.com", - "IPv4": "176.58.90.207", - "IPv6": "2a00:dd80:3e::c19", - "CanPort80": true - }, - { - "Name": "18d", - "RegionID": 18, - "HostName": "derp18d.tailscale.com", - "IPv4": "176.58.90.104", - "IPv6": "2a00:dd80:3e::f2e", - "CanPort80": true - }, - { - "Name": "18b", - "RegionID": 18, - "HostName": "derp18b.tailscale.com", - "IPv4": "176.58.90.147", - "IPv6": "2a00:dd80:3e::363", - "CanPort80": true - } - ] - }, - "19": { - "RegionID": 19, - "RegionCode": "mad", - "RegionName": "Madrid", - "Latitude": 40.416944, - "Longitude": -3.703333, - "Nodes": [ - { - "Name": "19c", - "RegionID": 19, - "HostName": "derp19c.tailscale.com", - "IPv4": "45.159.97.61", - "IPv6": "2a00:dd80:14:10::20", - "CanPort80": true - }, - { - "Name": "19d", - "RegionID": 19, - "HostName": "derp19d.tailscale.com", - "IPv4": "45.159.97.233", - "IPv6": "2a00:dd80:14:10::34a", - "CanPort80": true - }, - { - "Name": "19b", - "RegionID": 19, - "HostName": "derp19b.tailscale.com", - "IPv4": "45.159.97.144", - "IPv6": "2a00:dd80:14:10::335", - "CanPort80": true - } - ] - }, - "2": { - "RegionID": 2, - "RegionCode": "sfo", - "RegionName": "San Francisco", - "Latitude": 37.7775, - "Longitude": -122.416389, - "Nodes": [ - { - "Name": "2e", - "RegionID": 2, - "HostName": "derp2e.tailscale.com", - "IPv4": "192.73.252.134", - "IPv6": "2607:f740:0:3f::44c", - "CanPort80": true - }, - { - "Name": "2f", - "RegionID": 2, - "HostName": "derp2f.tailscale.com", - "IPv4": "208.111.34.178", - "IPv6": "2607:f740:0:3f::f4", - "CanPort80": true - }, - { - "Name": "2d", - "RegionID": 2, - "HostName": "derp2d.tailscale.com", - "IPv4": "192.73.252.65", - "IPv6": "2607:f740:0:3f::287", - "CanPort80": true - } - ] - }, - "20": { - "RegionID": 20, - "RegionCode": "hkg", - "RegionName": "Hong Kong", - "Latitude": 22.3193, - "Longitude": 114.1694, - "Nodes": [ - { - "Name": "20c", - "RegionID": 20, - "HostName": "derp20c.tailscale.com", - "IPv4": "205.147.105.30", - "IPv6": "2403:2500:8000:1::5fb", - "CanPort80": true - }, - { - "Name": "20d", - "RegionID": 20, - "HostName": "derp20d.tailscale.com", - "IPv4": "205.147.105.78", - "IPv6": "2403:2500:8000:1::e9a", - "CanPort80": true - }, - { - "Name": "20b", - "RegionID": 20, - "HostName": "derp20b.tailscale.com", - "IPv4": "103.6.84.152", - "IPv6": "2403:2500:8000:1::ef6", - "CanPort80": true - } - ] - }, - "21": { - "RegionID": 21, - "RegionCode": "tor", - "RegionName": "Toronto", - "Latitude": 43.741667, - "Longitude": -79.373333, - "Nodes": [ - { - "Name": "21c", - "RegionID": 21, - "HostName": "derp21c.tailscale.com", - "IPv4": "162.248.221.215", - "IPv6": "2607:f740:50::f10", - "CanPort80": true - }, - { - "Name": "21d", - "RegionID": 21, - "HostName": "derp21d.tailscale.com", - "IPv4": "162.248.221.248", - "IPv6": "2607:f740:50::ca4", - "CanPort80": true - }, - { - "Name": "21b", - "RegionID": 21, - "HostName": "derp21b.tailscale.com", - "IPv4": "162.248.221.199", - "IPv6": "2607:f740:50::1d1", - "CanPort80": true - } - ] - }, - "22": { - "RegionID": 22, - "RegionCode": "waw", - "RegionName": "Warsaw", - "Latitude": 52.23, - "Longitude": 21.011111, - "Nodes": [ - { - "Name": "22c", - "RegionID": 22, - "HostName": "derp22c.tailscale.com", - "IPv4": "45.159.98.253", - "IPv6": "2a00:dd80:40:100::3f", - "CanPort80": true - }, - { - "Name": "22d", - "RegionID": 22, - "HostName": "derp22d.tailscale.com", - "IPv4": "45.159.98.145", - "IPv6": "2a00:dd80:40:100::211", - "CanPort80": true - }, - { - "Name": "22b", - "RegionID": 22, - "HostName": "derp22b.tailscale.com", - "IPv4": "45.159.98.196", - "IPv6": "2a00:dd80:40:100::316", - "CanPort80": true - } - ] - }, - "23": { - "RegionID": 23, - "RegionCode": "dbi", - "RegionName": "Dubai", - "Latitude": 25.263056, - "Longitude": 55.297222, - "Nodes": [ - { - "Name": "23c", - "RegionID": 23, - "HostName": "derp23c.tailscale.com", - "IPv4": "185.34.3.207", - "IPv6": "2a00:dd80:3f:100::a50", - "CanPort80": true - }, - { - "Name": "23d", - "RegionID": 23, - "HostName": "derp23d.tailscale.com", - "IPv4": "185.34.3.75", - "IPv6": "2a00:dd80:3f:100::97e", - "CanPort80": true - }, - { - "Name": "23b", - "RegionID": 23, - "HostName": "derp23b.tailscale.com", - "IPv4": "185.34.3.232", - "IPv6": "2a00:dd80:3f:100::76f", - "CanPort80": true - } - ] - }, - "24": { - "RegionID": 24, - "RegionCode": "hnl", - "RegionName": "Honolulu", - "Latitude": 21.306944, - "Longitude": -157.858333, - "Nodes": [ - { - "Name": "24c", - "RegionID": 24, - "HostName": "derp24c.tailscale.com", - "IPv4": "208.83.233.233", - "IPv6": "2001:19f0:c000:c591:5400:04ff:fe26:2c5f", - "CanPort80": true - }, - { - "Name": "24d", - "RegionID": 24, - "HostName": "derp24d.tailscale.com", - "IPv4": "208.72.155.133", - "IPv6": "2001:19f0:c000:c564:5400:04ff:fe26:2ba8", - "CanPort80": true - }, - { - "Name": "24b", - "RegionID": 24, - "HostName": "derp24b.tailscale.com", - "IPv4": "208.83.234.151", - "IPv6": "2001:19f0:c000:c586:5400:04ff:fe26:2ba6", - "CanPort80": true - } - ] - }, - "25": { - "RegionID": 25, - "RegionCode": "nai", - "RegionName": "Nairobi", - "Latitude": -1.286389, - "Longitude": 36.817222, - "Nodes": [ - { - "Name": "25c", - "RegionID": 25, - "HostName": "derp25c.tailscale.com", - "IPv4": "102.67.167.37", - "IPv6": "2c0f:edb0:2000:1::2c7", - "CanPort80": true - }, - { - "Name": "25d", - "RegionID": 25, - "HostName": "derp25d.tailscale.com", - "IPv4": "102.67.167.188", - "IPv6": "2c0f:edb0:2000:1::188", - "CanPort80": true - }, - { - "Name": "25b", - "RegionID": 25, - "HostName": "derp25b.tailscale.com", - "IPv4": "102.67.167.245", - "IPv6": "2c0f:edb0:2000:1::2e9", - "CanPort80": true - } - ] - }, - "26": { - "RegionID": 26, - "RegionCode": "nue", - "RegionName": "Nuremberg", - "Latitude": 49.453889, - "Longitude": 11.0775, - "Nodes": [ - { - "Name": "26c", - "RegionID": 26, - "HostName": "derp26c.tailscale.com", - "IPv4": "49.12.193.137", - "IPv6": "2a01:4f8:1c1c:5c70::1", - "CanPort80": true - }, - { - "Name": "26d", - "RegionID": 26, - "HostName": "derp26d.tailscale.com", - "IPv4": "49.13.204.141", - "IPv6": "2a01:4f8:1c0c:7d06::1", - "CanPort80": true - }, - { - "Name": "26b", - "RegionID": 26, - "HostName": "derp26b.tailscale.com", - "IPv4": "167.235.72.200", - "IPv6": "2a01:4f8:1c1c:47b6::1", - "CanPort80": true - } - ] - }, - "27": { - "RegionID": 27, - "RegionCode": "iad", - "RegionName": "Ashburn", - "Latitude": 39.03, - "Longitude": -77.471111, - "Nodes": [ - { - "Name": "27d", - "RegionID": 27, - "HostName": "derp27d.tailscale.com", - "IPv4": "178.156.152.106", - "IPv6": "2a01:4ff:f0:3c8e::1", - "CanPort80": true - }, - { - "Name": "27c", - "RegionID": 27, - "HostName": "derp27c.tailscale.com", - "IPv4": "178.156.152.91", - "IPv6": "2a01:4ff:f0:3913::1", - "CanPort80": true - }, - { - "Name": "27e", - "RegionID": 27, - "HostName": "derp27e.tailscale.com", - "IPv4": "178.156.134.232", - "IPv6": "2a01:4ff:f0:28d4::1", - "CanPort80": true - }, - { - "Name": "27b", - "RegionID": 27, - "HostName": "derp27b.tailscale.com", - "IPv4": "5.161.218.233", - "IPv6": "2a01:4ff:f0:3db9::1", - "CanPort80": true - } - ] - }, - "28": { - "RegionID": 28, - "RegionCode": "hel", - "RegionName": "Helsinki", - "Latitude": 60.170833, - "Longitude": 24.9375, - "Nodes": [ - { - "Name": "28c", - "RegionID": 28, - "HostName": "derp28c.tailscale.com", - "IPv4": "95.217.2.165", - "IPv6": "2a01:4f9:c012:cd74::1", - "CanPort80": true - }, - { - "Name": "28d", - "RegionID": 28, - "HostName": "derp28d.tailscale.com", - "IPv4": "157.180.28.32", - "IPv6": "2a01:4f9:c012:2e5b::1", - "CanPort80": true - }, - { - "Name": "28b", - "RegionID": 28, - "HostName": "derp28b.tailscale.com", - "IPv4": "65.109.143.62", - "IPv6": "2a01:4f9:c012:d55c::1", - "CanPort80": true - } - ] - }, - "3": { - "RegionID": 3, - "RegionCode": "sin", - "RegionName": "Singapore", - "Latitude": 1.3521, - "Longitude": 103.8198, - "Nodes": [ - { - "Name": "3g", - "RegionID": 3, - "HostName": "derp3g.tailscale.com", - "IPv4": "172.237.72.79", - "IPv6": "2600:3c15::2000:adff:fe08:6fab", - "CanPort80": true - }, - { - "Name": "3f", - "RegionID": 3, - "HostName": "derp3f.tailscale.com", - "IPv4": "172.237.72.8", - "IPv6": "2600:3c15::2000:53ff:fe48:a668", - "CanPort80": true - }, - { - "Name": "3h", - "RegionID": 3, - "HostName": "derp3h.tailscale.com", - "IPv4": "172.237.66.30", - "IPv6": "2600:3c15::2000:3dff:fe44:50aa", - "CanPort80": true - }, - { - "Name": "3e", - "RegionID": 3, - "HostName": "derp3e.tailscale.com", - "IPv4": "172.237.72.43", - "IPv6": "2600:3c15::2000:6cff:fee4:d799", - "CanPort80": true - } - ] - }, - "4": { - "RegionID": 4, - "RegionCode": "fra", - "RegionName": "Frankfurt", - "Latitude": 50.1109, - "Longitude": 8.6821, - "Nodes": [ - { - "Name": "4h", - "RegionID": 4, - "HostName": "derp4h.tailscale.com", - "IPv4": "185.40.234.77", - "IPv6": "2a00:dd80:20::bcf", - "CanPort80": true - }, - { - "Name": "4g", - "RegionID": 4, - "HostName": "derp4g.tailscale.com", - "IPv4": "185.40.234.113", - "IPv6": "2a00:dd80:20::8f", - "CanPort80": true - }, - { - "Name": "4i", - "RegionID": 4, - "HostName": "derp4i.tailscale.com", - "IPv4": "185.40.234.53", - "IPv6": "2a00:dd80:20::8a6", - "CanPort80": true - }, - { - "Name": "4f", - "RegionID": 4, - "HostName": "derp4f.tailscale.com", - "IPv4": "185.40.234.219", - "IPv6": "2a00:dd80:20::a25", - "CanPort80": true - } - ] - }, - "5": { - "RegionID": 5, - "RegionCode": "syd", - "RegionName": "Sydney", - "Latitude": -33.867778, - "Longitude": 151.21, - "Nodes": [ - { - "Name": "5f", - "RegionID": 5, - "HostName": "derp5f.tailscale.com", - "IPv4": "172.105.166.103", - "IPv6": "2400:8907::2000:ccff:fe1f:80da", - "CanPort80": true - }, - { - "Name": "5g", - "RegionID": 5, - "HostName": "derp5g.tailscale.com", - "IPv4": "172.105.169.57", - "IPv6": "2400:8907::2000:2fff:fea7:57f4", - "CanPort80": true - }, - { - "Name": "5e", - "RegionID": 5, - "HostName": "derp5e.tailscale.com", - "IPv4": "172.105.179.230", - "IPv6": "2400:8907::2000:ceff:fe8d:4f4e", - "CanPort80": true - } - ] - }, - "6": { - "RegionID": 6, - "RegionCode": "blr", - "RegionName": "Bengaluru", - "Latitude": 12.9716, - "Longitude": 77.5946, - "Nodes": [ - { - "Name": "6a", - "RegionID": 6, - "HostName": "derp6.tailscale.com", - "IPv4": "68.183.90.120", - "IPv6": "2400:6180:100:d0::982:d001", - "CanPort80": true - } - ] - }, - "7": { - "RegionID": 7, - "RegionCode": "tok", - "RegionName": "Tokyo", - "Latitude": 35.6764, - "Longitude": 139.65, - "Nodes": [ - { - "Name": "7g", - "RegionID": 7, - "HostName": "derp7g.tailscale.com", - "IPv4": "172.238.6.179", - "IPv6": "2600:3c18::2000:3fff:fe80:3ebd", - "CanPort80": true - }, - { - "Name": "7f", - "RegionID": 7, - "HostName": "derp7f.tailscale.com", - "IPv4": "172.238.6.34", - "IPv6": "2600:3c18::2000:acff:fe8e:3ed5", - "CanPort80": true - }, - { - "Name": "7h", - "RegionID": 7, - "HostName": "derp7h.tailscale.com", - "IPv4": "172.237.28.183", - "IPv6": "2600:3c18::2000:b1ff:fea9:4560", - "CanPort80": true - }, - { - "Name": "7e", - "RegionID": 7, - "HostName": "derp7e.tailscale.com", - "IPv4": "172.238.6.180", - "IPv6": "2600:3c18::2000:60ff:fe0f:6e83", - "STUNOnly": true, - "CanPort80": true - } - ] - }, - "8": { - "RegionID": 8, - "RegionCode": "lhr", - "RegionName": "London", - "Latitude": 51.5072, - "Longitude": 0.1276, - "Nodes": [ - { - "Name": "8f", - "RegionID": 8, - "HostName": "derp8f.tailscale.com", - "IPv4": "176.58.88.183", - "IPv6": "2a00:dd80:3a::dfa", - "CanPort80": true - }, - { - "Name": "8g", - "RegionID": 8, - "HostName": "derp8g.tailscale.com", - "IPv4": "176.58.92.254", - "IPv6": "2a00:dd80:3a::ed", - "CanPort80": true - }, - { - "Name": "8e", - "RegionID": 8, - "HostName": "derp8e.tailscale.com", - "IPv4": "176.58.92.144", - "IPv6": "2a00:dd80:3a::b33", - "CanPort80": true - } - ] - }, - "9": { - "RegionID": 9, - "RegionCode": "dfw", - "RegionName": "Dallas", - "Latitude": 32.779167, - "Longitude": -96.808889, - "Nodes": [ - { - "Name": "9e", - "RegionID": 9, - "HostName": "derp9e.tailscale.com", - "IPv4": "192.73.248.83", - "IPv6": "2607:f740:100::359", - "CanPort80": true - }, - { - "Name": "9f", - "RegionID": 9, - "HostName": "derp9f.tailscale.com", - "IPv4": "209.177.156.197", - "IPv6": "2607:f740:100::cad", - "CanPort80": true - }, - { - "Name": "9d", - "RegionID": 9, - "HostName": "derp9d.tailscale.com", - "IPv4": "209.177.156.94", - "IPv6": "2607:f740:100::c05", - "CanPort80": true - } - ] - } - } - }, - "DisplayMessages": null, - "TKAEnabled": false, - "TKAHead": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", - "Domain": "kratail2tid@passkey", - "DomainAuditLogID": "", - "UserProfiles": { - "2230775583277936": { - "ID": 2230775583277936, - "LoginName": "exit-b.tail78f774.ts.net", - "DisplayName": "exit-b" - } - } + "PacketFilterRules": null } }, "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.124.195.93": { - "peer_name": "exit-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-node/tailscaled.sock whois --json 100.124.195.93", - "response": null - }, - "100.116.18.24": { - "peer_name": "exit-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-node/tailscaled.sock whois --json 100.116.18.24", - "response": null - }, - "100.107.162.14": { - "peer_name": "group-a-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-node/tailscaled.sock whois --json 100.107.162.14", - "response": null - }, - "100.77.135.18": { - "peer_name": "group-b-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-node/tailscaled.sock whois --json 100.77.135.18", - "response": null - }, - "100.105.127.107": { - "peer_name": "multi-exit-router", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-node/tailscaled.sock whois --json 100.105.127.107", - "response": null - }, - "100.109.43.124": { - "peer_name": "router-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-node/tailscaled.sock whois --json 100.109.43.124", - "response": null - }, - "100.65.172.123": { - "peer_name": "router-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-node/tailscaled.sock whois --json 100.65.172.123", - "response": null - }, - "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 - } - }, "netmap": { - "SelfNode": { - "ID": 4041918547170221, - "StableID": "ngCb76MbZY11CNTRL", - "Name": "exit-node.tail78f774.ts.net.", - "User": 4041918547170221, - "Key": "nodekey:90f4a7b9dc024f1ddec414a49de2aa7611a2dd86efc9d7bae30862ad7c954269", - "DiscoKey": "discokey:6f1a76215431d7100538970473d97b4fde0e0a19b91035d1cba40b59ad79b437", - "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:36712", "10.65.0.27:36712", "172.17.0.1:36712"], - "Hostinfo": { - "Hostname": "exit-node", - "RoutableIPs": ["0.0.0.0/0", "::/0"], - "RequestTags": ["tag:exit"], - "Services": [ - { "Proto": "peerapi4", "Port": 37000 }, - { "Proto": "peerapi6", "Port": 37000 }, - { "Proto": "peerapi-dns-proxy", "Port": 1 } - ] - }, - "Created": "2026-02-23T00:13:20.566112173Z", - "Tags": ["tag:exit"], - "MachineAuthorized": true, - "CapMap": { - "https://tailscale.com/cap/file-sharing": null, - "https://tailscale.com/cap/is-owner": null, - "https://tailscale.com/cap/ssh": null, - "https://tailscale.com/cap/tailnet-lock": null, - "probe-udp-lifetime": null, - "ssh-behavior-v1": null, - "ssh-env-vars": null, - "store-appc-routes": null, - "tailnet-display-name": ["kratail2tid@passkey"] - }, - "ComputedName": "exit-node", - "ComputedNameWithHost": "exit-node" - }, - "AllCaps": [ - "https://tailscale.com/cap/tailnet-lock", - "ssh-env-vars", - "probe-udp-lifetime", - "ssh-behavior-v1", - "https://tailscale.com/cap/ssh", - "store-appc-routes", - "tailnet-display-name", - "https://tailscale.com/cap/file-sharing", - "https://tailscale.com/cap/is-owner" - ], - "NodeKey": "nodekey:90f4a7b9dc024f1ddec414a49de2aa7611a2dd86efc9d7bae30862ad7c954269", - "MachineKey": "mkey:e3be47b2090e55400f3e64825cd3092841529cd7b5b775e9e4553f12308abc2a", "Peers": [], - "DNS": { - "Routes": { - "tail78f774.ts.net.": null, - "ts.net.": [{ "Addr": "199.247.155.53" }, { "Addr": "2620:111:8007::53" }] - }, - "Domains": ["tail78f774.ts.net"], - "Proxied": true, - "ExitNodeFilteredSet": [".ts.net", ".tailscale.net"] - }, - "PacketFilter": [], - "PacketFilterRules": null, - "SSHPolicy": { "rules": [] }, - "CollectServices": false, - "DERPMap": { - "Regions": { - "1": { - "RegionID": 1, - "RegionCode": "nyc", - "RegionName": "New York City", - "Latitude": 40.7128, - "Longitude": -74.006, - "Nodes": [ - { - "Name": "1h", - "RegionID": 1, - "HostName": "derp1h.tailscale.com", - "IPv4": "199.38.181.93", - "IPv6": "2607:f740:f::afd", - "CanPort80": true - }, - { - "Name": "1g", - "RegionID": 1, - "HostName": "derp1g.tailscale.com", - "IPv4": "209.177.145.120", - "IPv6": "2607:f740:f::3eb", - "CanPort80": true - }, - { - "Name": "1i", - "RegionID": 1, - "HostName": "derp1i.tailscale.com", - "IPv4": "199.38.181.103", - "IPv6": "2607:f740:f::e19", - "CanPort80": true - }, - { - "Name": "1f", - "RegionID": 1, - "HostName": "derp1f.tailscale.com", - "IPv4": "199.38.181.104", - "IPv6": "2607:f740:f::bc", - "CanPort80": true - } - ] - }, - "10": { - "RegionID": 10, - "RegionCode": "sea", - "RegionName": "Seattle", - "Latitude": 47.609722, - "Longitude": -122.333056, - "Nodes": [ - { - "Name": "10c", - "RegionID": 10, - "HostName": "derp10c.tailscale.com", - "IPv4": "192.73.240.121", - "IPv6": "2607:f740:14::40c", - "CanPort80": true - }, - { - "Name": "10d", - "RegionID": 10, - "HostName": "derp10d.tailscale.com", - "IPv4": "192.73.240.132", - "IPv6": "2607:f740:14::500", - "CanPort80": true - }, - { - "Name": "10b", - "RegionID": 10, - "HostName": "derp10b.tailscale.com", - "IPv4": "192.73.240.161", - "IPv6": "2607:f740:14::61c", - "CanPort80": true - } - ] - }, - "11": { - "RegionID": 11, - "RegionCode": "sao", - "RegionName": "São Paulo", - "Latitude": -23.55, - "Longitude": -46.633333, - "Nodes": [ - { - "Name": "11f", - "RegionID": 11, - "HostName": "derp11f.tailscale.com", - "IPv4": "172.237.61.197", - "IPv6": "2600:3c0d::2000:3bff:fe44:6166", - "CanPort80": true - }, - { - "Name": "11g", - "RegionID": 11, - "HostName": "derp11g.tailscale.com", - "IPv4": "172.237.61.190", - "IPv6": "2600:3c0d::2000:62ff:febe:2e67", - "CanPort80": true - }, - { - "Name": "11e", - "RegionID": 11, - "HostName": "derp11e.tailscale.com", - "IPv4": "172.237.61.194", - "IPv6": "2600:3c0d::2000:d2ff:fe43:1790", - "CanPort80": true - } - ] - }, - "12": { - "RegionID": 12, - "RegionCode": "ord", - "RegionName": "Chicago", - "Latitude": 41.881944, - "Longitude": -87.627778, - "Nodes": [ - { - "Name": "12e", - "RegionID": 12, - "HostName": "derp12e.tailscale.com", - "IPv4": "209.177.158.15", - "IPv6": "2607:f740:e::b17", - "CanPort80": true - }, - { - "Name": "12f", - "RegionID": 12, - "HostName": "derp12f.tailscale.com", - "IPv4": "199.38.182.118", - "IPv6": "2607:f740:e::4c8", - "CanPort80": true - }, - { - "Name": "12d", - "RegionID": 12, - "HostName": "derp12d.tailscale.com", - "IPv4": "209.177.158.246", - "IPv6": "2607:f740:e::811", - "CanPort80": true - } - ] - }, - "13": { - "RegionID": 13, - "RegionCode": "den", - "RegionName": "Denver", - "Latitude": 39.7392, - "Longitude": -104.9849, - "Nodes": [ - { - "Name": "13c", - "RegionID": 13, - "HostName": "derp13c.tailscale.com", - "IPv4": "192.73.242.28", - "IPv6": "2607:f740:16::5c", - "CanPort80": true - }, - { - "Name": "13d", - "RegionID": 13, - "HostName": "derp13d.tailscale.com", - "IPv4": "192.73.242.204", - "IPv6": "2607:f740:16::c23", - "CanPort80": true - }, - { - "Name": "13b", - "RegionID": 13, - "HostName": "derp13b.tailscale.com", - "IPv4": "192.73.242.187", - "IPv6": "2607:f740:16::640", - "CanPort80": true - } - ] - }, - "14": { - "RegionID": 14, - "RegionCode": "ams", - "RegionName": "Amsterdam", - "Latitude": 52.372778, - "Longitude": 4.893611, - "Nodes": [ - { - "Name": "14c", - "RegionID": 14, - "HostName": "derp14c.tailscale.com", - "IPv4": "176.58.93.147", - "IPv6": "2a00:dd80:3c::b09", - "CanPort80": true - }, - { - "Name": "14d", - "RegionID": 14, - "HostName": "derp14d.tailscale.com", - "IPv4": "176.58.93.154", - "IPv6": "2a00:dd80:3c::3d5", - "CanPort80": true - }, - { - "Name": "14b", - "RegionID": 14, - "HostName": "derp14b.tailscale.com", - "IPv4": "176.58.93.248", - "IPv6": "2a00:dd80:3c::807", - "CanPort80": true - } - ] - }, - "15": { - "RegionID": 15, - "RegionCode": "jnb", - "RegionName": "Johannesburg", - "Latitude": -26.204444, - "Longitude": 28.045556, - "Nodes": [ - { - "Name": "15c", - "RegionID": 15, - "HostName": "derp15c.tailscale.com", - "IPv4": "102.67.165.185", - "IPv6": "2c0f:edb0:0:10::b59", - "CanPort80": true - }, - { - "Name": "15d", - "RegionID": 15, - "HostName": "derp15d.tailscale.com", - "IPv4": "102.67.165.36", - "IPv6": "2c0f:edb0:0:10::599", - "CanPort80": true - }, - { - "Name": "15b", - "RegionID": 15, - "HostName": "derp15b.tailscale.com", - "IPv4": "102.67.165.90", - "IPv6": "2c0f:edb0:0:10::963", - "CanPort80": true - } - ] - }, - "16": { - "RegionID": 16, - "RegionCode": "mia", - "RegionName": "Miami", - "Latitude": 25.78, - "Longitude": -80.21, - "Nodes": [ - { - "Name": "16c", - "RegionID": 16, - "HostName": "derp16c.tailscale.com", - "IPv4": "192.73.243.229", - "IPv6": "2607:f740:17::4e4", - "CanPort80": true - }, - { - "Name": "16d", - "RegionID": 16, - "HostName": "derp16d.tailscale.com", - "IPv4": "192.73.243.141", - "IPv6": "2607:f740:17::475", - "CanPort80": true - }, - { - "Name": "16b", - "RegionID": 16, - "HostName": "derp16b.tailscale.com", - "IPv4": "192.73.243.135", - "IPv6": "2607:f740:17::476", - "CanPort80": true - } - ] - }, - "17": { - "RegionID": 17, - "RegionCode": "lax", - "RegionName": "Los Angeles", - "Latitude": 34.05, - "Longitude": -118.25, - "Nodes": [ - { - "Name": "17c", - "RegionID": 17, - "HostName": "derp17c.tailscale.com", - "IPv4": "208.111.40.12", - "IPv6": "2607:f740:c::10", - "CanPort80": true - }, - { - "Name": "17d", - "RegionID": 17, - "HostName": "derp17d.tailscale.com", - "IPv4": "208.111.40.216", - "IPv6": "2607:f740:c::e1b", - "CanPort80": true - }, - { - "Name": "17b", - "RegionID": 17, - "HostName": "derp17b.tailscale.com", - "IPv4": "192.73.244.245", - "IPv6": "2607:f740:c::646", - "CanPort80": true - } - ] - }, - "18": { - "RegionID": 18, - "RegionCode": "par", - "RegionName": "Paris", - "Latitude": 48.856667, - "Longitude": 2.352222, - "Nodes": [ - { - "Name": "18c", - "RegionID": 18, - "HostName": "derp18c.tailscale.com", - "IPv4": "176.58.90.207", - "IPv6": "2a00:dd80:3e::c19", - "CanPort80": true - }, - { - "Name": "18d", - "RegionID": 18, - "HostName": "derp18d.tailscale.com", - "IPv4": "176.58.90.104", - "IPv6": "2a00:dd80:3e::f2e", - "CanPort80": true - }, - { - "Name": "18b", - "RegionID": 18, - "HostName": "derp18b.tailscale.com", - "IPv4": "176.58.90.147", - "IPv6": "2a00:dd80:3e::363", - "CanPort80": true - } - ] - }, - "19": { - "RegionID": 19, - "RegionCode": "mad", - "RegionName": "Madrid", - "Latitude": 40.416944, - "Longitude": -3.703333, - "Nodes": [ - { - "Name": "19c", - "RegionID": 19, - "HostName": "derp19c.tailscale.com", - "IPv4": "45.159.97.61", - "IPv6": "2a00:dd80:14:10::20", - "CanPort80": true - }, - { - "Name": "19d", - "RegionID": 19, - "HostName": "derp19d.tailscale.com", - "IPv4": "45.159.97.233", - "IPv6": "2a00:dd80:14:10::34a", - "CanPort80": true - }, - { - "Name": "19b", - "RegionID": 19, - "HostName": "derp19b.tailscale.com", - "IPv4": "45.159.97.144", - "IPv6": "2a00:dd80:14:10::335", - "CanPort80": true - } - ] - }, - "2": { - "RegionID": 2, - "RegionCode": "sfo", - "RegionName": "San Francisco", - "Latitude": 37.7775, - "Longitude": -122.416389, - "Nodes": [ - { - "Name": "2e", - "RegionID": 2, - "HostName": "derp2e.tailscale.com", - "IPv4": "192.73.252.134", - "IPv6": "2607:f740:0:3f::44c", - "CanPort80": true - }, - { - "Name": "2f", - "RegionID": 2, - "HostName": "derp2f.tailscale.com", - "IPv4": "208.111.34.178", - "IPv6": "2607:f740:0:3f::f4", - "CanPort80": true - }, - { - "Name": "2d", - "RegionID": 2, - "HostName": "derp2d.tailscale.com", - "IPv4": "192.73.252.65", - "IPv6": "2607:f740:0:3f::287", - "CanPort80": true - } - ] - }, - "20": { - "RegionID": 20, - "RegionCode": "hkg", - "RegionName": "Hong Kong", - "Latitude": 22.3193, - "Longitude": 114.1694, - "Nodes": [ - { - "Name": "20c", - "RegionID": 20, - "HostName": "derp20c.tailscale.com", - "IPv4": "205.147.105.30", - "IPv6": "2403:2500:8000:1::5fb", - "CanPort80": true - }, - { - "Name": "20d", - "RegionID": 20, - "HostName": "derp20d.tailscale.com", - "IPv4": "205.147.105.78", - "IPv6": "2403:2500:8000:1::e9a", - "CanPort80": true - }, - { - "Name": "20b", - "RegionID": 20, - "HostName": "derp20b.tailscale.com", - "IPv4": "103.6.84.152", - "IPv6": "2403:2500:8000:1::ef6", - "CanPort80": true - } - ] - }, - "21": { - "RegionID": 21, - "RegionCode": "tor", - "RegionName": "Toronto", - "Latitude": 43.741667, - "Longitude": -79.373333, - "Nodes": [ - { - "Name": "21c", - "RegionID": 21, - "HostName": "derp21c.tailscale.com", - "IPv4": "162.248.221.215", - "IPv6": "2607:f740:50::f10", - "CanPort80": true - }, - { - "Name": "21d", - "RegionID": 21, - "HostName": "derp21d.tailscale.com", - "IPv4": "162.248.221.248", - "IPv6": "2607:f740:50::ca4", - "CanPort80": true - }, - { - "Name": "21b", - "RegionID": 21, - "HostName": "derp21b.tailscale.com", - "IPv4": "162.248.221.199", - "IPv6": "2607:f740:50::1d1", - "CanPort80": true - } - ] - }, - "22": { - "RegionID": 22, - "RegionCode": "waw", - "RegionName": "Warsaw", - "Latitude": 52.23, - "Longitude": 21.011111, - "Nodes": [ - { - "Name": "22c", - "RegionID": 22, - "HostName": "derp22c.tailscale.com", - "IPv4": "45.159.98.253", - "IPv6": "2a00:dd80:40:100::3f", - "CanPort80": true - }, - { - "Name": "22d", - "RegionID": 22, - "HostName": "derp22d.tailscale.com", - "IPv4": "45.159.98.145", - "IPv6": "2a00:dd80:40:100::211", - "CanPort80": true - }, - { - "Name": "22b", - "RegionID": 22, - "HostName": "derp22b.tailscale.com", - "IPv4": "45.159.98.196", - "IPv6": "2a00:dd80:40:100::316", - "CanPort80": true - } - ] - }, - "23": { - "RegionID": 23, - "RegionCode": "dbi", - "RegionName": "Dubai", - "Latitude": 25.263056, - "Longitude": 55.297222, - "Nodes": [ - { - "Name": "23c", - "RegionID": 23, - "HostName": "derp23c.tailscale.com", - "IPv4": "185.34.3.207", - "IPv6": "2a00:dd80:3f:100::a50", - "CanPort80": true - }, - { - "Name": "23d", - "RegionID": 23, - "HostName": "derp23d.tailscale.com", - "IPv4": "185.34.3.75", - "IPv6": "2a00:dd80:3f:100::97e", - "CanPort80": true - }, - { - "Name": "23b", - "RegionID": 23, - "HostName": "derp23b.tailscale.com", - "IPv4": "185.34.3.232", - "IPv6": "2a00:dd80:3f:100::76f", - "CanPort80": true - } - ] - }, - "24": { - "RegionID": 24, - "RegionCode": "hnl", - "RegionName": "Honolulu", - "Latitude": 21.306944, - "Longitude": -157.858333, - "Nodes": [ - { - "Name": "24c", - "RegionID": 24, - "HostName": "derp24c.tailscale.com", - "IPv4": "208.83.233.233", - "IPv6": "2001:19f0:c000:c591:5400:04ff:fe26:2c5f", - "CanPort80": true - }, - { - "Name": "24d", - "RegionID": 24, - "HostName": "derp24d.tailscale.com", - "IPv4": "208.72.155.133", - "IPv6": "2001:19f0:c000:c564:5400:04ff:fe26:2ba8", - "CanPort80": true - }, - { - "Name": "24b", - "RegionID": 24, - "HostName": "derp24b.tailscale.com", - "IPv4": "208.83.234.151", - "IPv6": "2001:19f0:c000:c586:5400:04ff:fe26:2ba6", - "CanPort80": true - } - ] - }, - "25": { - "RegionID": 25, - "RegionCode": "nai", - "RegionName": "Nairobi", - "Latitude": -1.286389, - "Longitude": 36.817222, - "Nodes": [ - { - "Name": "25c", - "RegionID": 25, - "HostName": "derp25c.tailscale.com", - "IPv4": "102.67.167.37", - "IPv6": "2c0f:edb0:2000:1::2c7", - "CanPort80": true - }, - { - "Name": "25d", - "RegionID": 25, - "HostName": "derp25d.tailscale.com", - "IPv4": "102.67.167.188", - "IPv6": "2c0f:edb0:2000:1::188", - "CanPort80": true - }, - { - "Name": "25b", - "RegionID": 25, - "HostName": "derp25b.tailscale.com", - "IPv4": "102.67.167.245", - "IPv6": "2c0f:edb0:2000:1::2e9", - "CanPort80": true - } - ] - }, - "26": { - "RegionID": 26, - "RegionCode": "nue", - "RegionName": "Nuremberg", - "Latitude": 49.453889, - "Longitude": 11.0775, - "Nodes": [ - { - "Name": "26c", - "RegionID": 26, - "HostName": "derp26c.tailscale.com", - "IPv4": "49.12.193.137", - "IPv6": "2a01:4f8:1c1c:5c70::1", - "CanPort80": true - }, - { - "Name": "26d", - "RegionID": 26, - "HostName": "derp26d.tailscale.com", - "IPv4": "49.13.204.141", - "IPv6": "2a01:4f8:1c0c:7d06::1", - "CanPort80": true - }, - { - "Name": "26b", - "RegionID": 26, - "HostName": "derp26b.tailscale.com", - "IPv4": "167.235.72.200", - "IPv6": "2a01:4f8:1c1c:47b6::1", - "CanPort80": true - } - ] - }, - "27": { - "RegionID": 27, - "RegionCode": "iad", - "RegionName": "Ashburn", - "Latitude": 39.03, - "Longitude": -77.471111, - "Nodes": [ - { - "Name": "27d", - "RegionID": 27, - "HostName": "derp27d.tailscale.com", - "IPv4": "178.156.152.106", - "IPv6": "2a01:4ff:f0:3c8e::1", - "CanPort80": true - }, - { - "Name": "27c", - "RegionID": 27, - "HostName": "derp27c.tailscale.com", - "IPv4": "178.156.152.91", - "IPv6": "2a01:4ff:f0:3913::1", - "CanPort80": true - }, - { - "Name": "27e", - "RegionID": 27, - "HostName": "derp27e.tailscale.com", - "IPv4": "178.156.134.232", - "IPv6": "2a01:4ff:f0:28d4::1", - "CanPort80": true - }, - { - "Name": "27b", - "RegionID": 27, - "HostName": "derp27b.tailscale.com", - "IPv4": "5.161.218.233", - "IPv6": "2a01:4ff:f0:3db9::1", - "CanPort80": true - } - ] - }, - "28": { - "RegionID": 28, - "RegionCode": "hel", - "RegionName": "Helsinki", - "Latitude": 60.170833, - "Longitude": 24.9375, - "Nodes": [ - { - "Name": "28c", - "RegionID": 28, - "HostName": "derp28c.tailscale.com", - "IPv4": "95.217.2.165", - "IPv6": "2a01:4f9:c012:cd74::1", - "CanPort80": true - }, - { - "Name": "28d", - "RegionID": 28, - "HostName": "derp28d.tailscale.com", - "IPv4": "157.180.28.32", - "IPv6": "2a01:4f9:c012:2e5b::1", - "CanPort80": true - }, - { - "Name": "28b", - "RegionID": 28, - "HostName": "derp28b.tailscale.com", - "IPv4": "65.109.143.62", - "IPv6": "2a01:4f9:c012:d55c::1", - "CanPort80": true - } - ] - }, - "3": { - "RegionID": 3, - "RegionCode": "sin", - "RegionName": "Singapore", - "Latitude": 1.3521, - "Longitude": 103.8198, - "Nodes": [ - { - "Name": "3g", - "RegionID": 3, - "HostName": "derp3g.tailscale.com", - "IPv4": "172.237.72.79", - "IPv6": "2600:3c15::2000:adff:fe08:6fab", - "CanPort80": true - }, - { - "Name": "3f", - "RegionID": 3, - "HostName": "derp3f.tailscale.com", - "IPv4": "172.237.72.8", - "IPv6": "2600:3c15::2000:53ff:fe48:a668", - "CanPort80": true - }, - { - "Name": "3h", - "RegionID": 3, - "HostName": "derp3h.tailscale.com", - "IPv4": "172.237.66.30", - "IPv6": "2600:3c15::2000:3dff:fe44:50aa", - "CanPort80": true - }, - { - "Name": "3e", - "RegionID": 3, - "HostName": "derp3e.tailscale.com", - "IPv4": "172.237.72.43", - "IPv6": "2600:3c15::2000:6cff:fee4:d799", - "CanPort80": true - } - ] - }, - "4": { - "RegionID": 4, - "RegionCode": "fra", - "RegionName": "Frankfurt", - "Latitude": 50.1109, - "Longitude": 8.6821, - "Nodes": [ - { - "Name": "4h", - "RegionID": 4, - "HostName": "derp4h.tailscale.com", - "IPv4": "185.40.234.77", - "IPv6": "2a00:dd80:20::bcf", - "CanPort80": true - }, - { - "Name": "4g", - "RegionID": 4, - "HostName": "derp4g.tailscale.com", - "IPv4": "185.40.234.113", - "IPv6": "2a00:dd80:20::8f", - "CanPort80": true - }, - { - "Name": "4i", - "RegionID": 4, - "HostName": "derp4i.tailscale.com", - "IPv4": "185.40.234.53", - "IPv6": "2a00:dd80:20::8a6", - "CanPort80": true - }, - { - "Name": "4f", - "RegionID": 4, - "HostName": "derp4f.tailscale.com", - "IPv4": "185.40.234.219", - "IPv6": "2a00:dd80:20::a25", - "CanPort80": true - } - ] - }, - "5": { - "RegionID": 5, - "RegionCode": "syd", - "RegionName": "Sydney", - "Latitude": -33.867778, - "Longitude": 151.21, - "Nodes": [ - { - "Name": "5f", - "RegionID": 5, - "HostName": "derp5f.tailscale.com", - "IPv4": "172.105.166.103", - "IPv6": "2400:8907::2000:ccff:fe1f:80da", - "CanPort80": true - }, - { - "Name": "5g", - "RegionID": 5, - "HostName": "derp5g.tailscale.com", - "IPv4": "172.105.169.57", - "IPv6": "2400:8907::2000:2fff:fea7:57f4", - "CanPort80": true - }, - { - "Name": "5e", - "RegionID": 5, - "HostName": "derp5e.tailscale.com", - "IPv4": "172.105.179.230", - "IPv6": "2400:8907::2000:ceff:fe8d:4f4e", - "CanPort80": true - } - ] - }, - "6": { - "RegionID": 6, - "RegionCode": "blr", - "RegionName": "Bengaluru", - "Latitude": 12.9716, - "Longitude": 77.5946, - "Nodes": [ - { - "Name": "6a", - "RegionID": 6, - "HostName": "derp6.tailscale.com", - "IPv4": "68.183.90.120", - "IPv6": "2400:6180:100:d0::982:d001", - "CanPort80": true - } - ] - }, - "7": { - "RegionID": 7, - "RegionCode": "tok", - "RegionName": "Tokyo", - "Latitude": 35.6764, - "Longitude": 139.65, - "Nodes": [ - { - "Name": "7g", - "RegionID": 7, - "HostName": "derp7g.tailscale.com", - "IPv4": "172.238.6.179", - "IPv6": "2600:3c18::2000:3fff:fe80:3ebd", - "CanPort80": true - }, - { - "Name": "7f", - "RegionID": 7, - "HostName": "derp7f.tailscale.com", - "IPv4": "172.238.6.34", - "IPv6": "2600:3c18::2000:acff:fe8e:3ed5", - "CanPort80": true - }, - { - "Name": "7h", - "RegionID": 7, - "HostName": "derp7h.tailscale.com", - "IPv4": "172.237.28.183", - "IPv6": "2600:3c18::2000:b1ff:fea9:4560", - "CanPort80": true - }, - { - "Name": "7e", - "RegionID": 7, - "HostName": "derp7e.tailscale.com", - "IPv4": "172.238.6.180", - "IPv6": "2600:3c18::2000:60ff:fe0f:6e83", - "STUNOnly": true, - "CanPort80": true - } - ] - }, - "8": { - "RegionID": 8, - "RegionCode": "lhr", - "RegionName": "London", - "Latitude": 51.5072, - "Longitude": 0.1276, - "Nodes": [ - { - "Name": "8f", - "RegionID": 8, - "HostName": "derp8f.tailscale.com", - "IPv4": "176.58.88.183", - "IPv6": "2a00:dd80:3a::dfa", - "CanPort80": true - }, - { - "Name": "8g", - "RegionID": 8, - "HostName": "derp8g.tailscale.com", - "IPv4": "176.58.92.254", - "IPv6": "2a00:dd80:3a::ed", - "CanPort80": true - }, - { - "Name": "8e", - "RegionID": 8, - "HostName": "derp8e.tailscale.com", - "IPv4": "176.58.92.144", - "IPv6": "2a00:dd80:3a::b33", - "CanPort80": true - } - ] - }, - "9": { - "RegionID": 9, - "RegionCode": "dfw", - "RegionName": "Dallas", - "Latitude": 32.779167, - "Longitude": -96.808889, - "Nodes": [ - { - "Name": "9e", - "RegionID": 9, - "HostName": "derp9e.tailscale.com", - "IPv4": "192.73.248.83", - "IPv6": "2607:f740:100::359", - "CanPort80": true - }, - { - "Name": "9f", - "RegionID": 9, - "HostName": "derp9f.tailscale.com", - "IPv4": "209.177.156.197", - "IPv6": "2607:f740:100::cad", - "CanPort80": true - }, - { - "Name": "9d", - "RegionID": 9, - "HostName": "derp9d.tailscale.com", - "IPv4": "209.177.156.94", - "IPv6": "2607:f740:100::c05", - "CanPort80": true - } - ] - } - } - }, - "DisplayMessages": null, - "TKAEnabled": false, - "TKAHead": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", - "Domain": "kratail2tid@passkey", - "DomainAuditLogID": "", - "UserProfiles": { - "4041918547170221": { - "ID": 4041918547170221, - "LoginName": "exit-node.tail78f774.ts.net", - "DisplayName": "exit-node" - } - } + "PacketFilterRules": null } }, "group-a-client": { - "commands": { - "packet_filter_rules": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/group-a-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/group-a-client/tailscaled.sock debug localapi POST debug-packet-filter-matches" - }, "packet_filter_rules": null, - "packet_filter_matches": [], - "whois": { - "100.124.195.93": { - "peer_name": "exit-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/group-a-client/tailscaled.sock whois --json 100.124.195.93", - "response": null - }, - "100.116.18.24": { - "peer_name": "exit-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/group-a-client/tailscaled.sock whois --json 100.116.18.24", - "response": null - }, - "100.85.66.106": { - "peer_name": "exit-node", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/group-a-client/tailscaled.sock whois --json 100.85.66.106", - "response": null - }, - "100.77.135.18": { - "peer_name": "group-b-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/group-a-client/tailscaled.sock whois --json 100.77.135.18", - "response": null - }, - "100.105.127.107": { - "peer_name": "multi-exit-router", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/group-a-client/tailscaled.sock whois --json 100.105.127.107", - "response": null - }, - "100.109.43.124": { - "peer_name": "router-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/group-a-client/tailscaled.sock whois --json 100.109.43.124", - "response": null - }, - "100.65.172.123": { - "peer_name": "router-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/group-a-client/tailscaled.sock whois --json 100.65.172.123", - "response": null - }, - "100.92.142.61": { - "peer_name": "subnet-router", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/group-a-client/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/group-a-client/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/group-a-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/group-a-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/group-a-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/group-a-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/group-a-client/tailscaled.sock whois --json 100.90.199.68", - "response": null - } - }, "netmap": { - "SelfNode": { - "ID": 6999435610919250, - "StableID": "nyckVfJ4fw11CNTRL", - "Name": "group-a-client.tail78f774.ts.net.", - "User": 6999435610919250, - "Key": "nodekey:802726716bd4942fceb5e444218c930040fadb082698b57ea3eb59a6a26ba20d", - "DiscoKey": "discokey:bc93c2d3b81606e44eb1c96d721e7cd73c9497aa7d3efbe2f5e0d1e2e95b190f", - "Addresses": ["100.107.162.14/32", "fd7a:115c:a1e0::a237:a20e/128"], - "AllowedIPs": ["100.107.162.14/32", "fd7a:115c:a1e0::a237:a20e/128"], - "Endpoints": ["77.164.248.136:51980", "10.65.0.27:51980", "172.17.0.1:51980"], - "Hostinfo": { - "Hostname": "group-a-client", - "RequestTags": ["tag:group-a"], - "Services": [ - { "Proto": "peerapi4", "Port": 36543 }, - { "Proto": "peerapi6", "Port": 36543 }, - { "Proto": "peerapi-dns-proxy", "Port": 1 } - ] - }, - "Created": "2026-03-28T10:38:04.339428828Z", - "Tags": ["tag:group-a"], - "MachineAuthorized": true, - "CapMap": { - "https://tailscale.com/cap/file-sharing": null, - "https://tailscale.com/cap/is-owner": null, - "https://tailscale.com/cap/ssh": null, - "https://tailscale.com/cap/tailnet-lock": null, - "probe-udp-lifetime": null, - "ssh-behavior-v1": null, - "ssh-env-vars": null, - "store-appc-routes": null, - "tailnet-display-name": ["kratail2tid@passkey"] - }, - "ComputedName": "group-a-client", - "ComputedNameWithHost": "group-a-client" - }, - "AllCaps": [ - "https://tailscale.com/cap/is-owner", - "https://tailscale.com/cap/ssh", - "ssh-env-vars", - "tailnet-display-name", - "https://tailscale.com/cap/tailnet-lock", - "https://tailscale.com/cap/file-sharing", - "store-appc-routes", - "ssh-behavior-v1", - "probe-udp-lifetime" - ], - "NodeKey": "nodekey:802726716bd4942fceb5e444218c930040fadb082698b57ea3eb59a6a26ba20d", - "MachineKey": "mkey:fd2d0c2953440569b6c045d6bb1826bf138bf65b4ed4433532e4d91e09fd6b6b", "Peers": [], - "DNS": { - "Routes": { - "tail78f774.ts.net.": null, - "ts.net.": [{ "Addr": "199.247.155.53" }, { "Addr": "2620:111:8007::53" }] - }, - "Domains": ["tail78f774.ts.net"], - "Proxied": true, - "ExitNodeFilteredSet": [".ts.net", ".tailscale.net"] - }, - "PacketFilter": [], - "PacketFilterRules": null, - "SSHPolicy": { "rules": [] }, - "CollectServices": false, - "DERPMap": { - "Regions": { - "1": { - "RegionID": 1, - "RegionCode": "nyc", - "RegionName": "New York City", - "Latitude": 40.7128, - "Longitude": -74.006, - "Nodes": [ - { - "Name": "1h", - "RegionID": 1, - "HostName": "derp1h.tailscale.com", - "IPv4": "199.38.181.93", - "IPv6": "2607:f740:f::afd", - "CanPort80": true - }, - { - "Name": "1g", - "RegionID": 1, - "HostName": "derp1g.tailscale.com", - "IPv4": "209.177.145.120", - "IPv6": "2607:f740:f::3eb", - "CanPort80": true - }, - { - "Name": "1i", - "RegionID": 1, - "HostName": "derp1i.tailscale.com", - "IPv4": "199.38.181.103", - "IPv6": "2607:f740:f::e19", - "CanPort80": true - }, - { - "Name": "1f", - "RegionID": 1, - "HostName": "derp1f.tailscale.com", - "IPv4": "199.38.181.104", - "IPv6": "2607:f740:f::bc", - "CanPort80": true - } - ] - }, - "10": { - "RegionID": 10, - "RegionCode": "sea", - "RegionName": "Seattle", - "Latitude": 47.609722, - "Longitude": -122.333056, - "Nodes": [ - { - "Name": "10c", - "RegionID": 10, - "HostName": "derp10c.tailscale.com", - "IPv4": "192.73.240.121", - "IPv6": "2607:f740:14::40c", - "CanPort80": true - }, - { - "Name": "10d", - "RegionID": 10, - "HostName": "derp10d.tailscale.com", - "IPv4": "192.73.240.132", - "IPv6": "2607:f740:14::500", - "CanPort80": true - }, - { - "Name": "10b", - "RegionID": 10, - "HostName": "derp10b.tailscale.com", - "IPv4": "192.73.240.161", - "IPv6": "2607:f740:14::61c", - "CanPort80": true - } - ] - }, - "11": { - "RegionID": 11, - "RegionCode": "sao", - "RegionName": "São Paulo", - "Latitude": -23.55, - "Longitude": -46.633333, - "Nodes": [ - { - "Name": "11f", - "RegionID": 11, - "HostName": "derp11f.tailscale.com", - "IPv4": "172.237.61.197", - "IPv6": "2600:3c0d::2000:3bff:fe44:6166", - "CanPort80": true - }, - { - "Name": "11g", - "RegionID": 11, - "HostName": "derp11g.tailscale.com", - "IPv4": "172.237.61.190", - "IPv6": "2600:3c0d::2000:62ff:febe:2e67", - "CanPort80": true - }, - { - "Name": "11e", - "RegionID": 11, - "HostName": "derp11e.tailscale.com", - "IPv4": "172.237.61.194", - "IPv6": "2600:3c0d::2000:d2ff:fe43:1790", - "CanPort80": true - } - ] - }, - "12": { - "RegionID": 12, - "RegionCode": "ord", - "RegionName": "Chicago", - "Latitude": 41.881944, - "Longitude": -87.627778, - "Nodes": [ - { - "Name": "12e", - "RegionID": 12, - "HostName": "derp12e.tailscale.com", - "IPv4": "209.177.158.15", - "IPv6": "2607:f740:e::b17", - "CanPort80": true - }, - { - "Name": "12f", - "RegionID": 12, - "HostName": "derp12f.tailscale.com", - "IPv4": "199.38.182.118", - "IPv6": "2607:f740:e::4c8", - "CanPort80": true - }, - { - "Name": "12d", - "RegionID": 12, - "HostName": "derp12d.tailscale.com", - "IPv4": "209.177.158.246", - "IPv6": "2607:f740:e::811", - "CanPort80": true - } - ] - }, - "13": { - "RegionID": 13, - "RegionCode": "den", - "RegionName": "Denver", - "Latitude": 39.7392, - "Longitude": -104.9849, - "Nodes": [ - { - "Name": "13c", - "RegionID": 13, - "HostName": "derp13c.tailscale.com", - "IPv4": "192.73.242.28", - "IPv6": "2607:f740:16::5c", - "CanPort80": true - }, - { - "Name": "13d", - "RegionID": 13, - "HostName": "derp13d.tailscale.com", - "IPv4": "192.73.242.204", - "IPv6": "2607:f740:16::c23", - "CanPort80": true - }, - { - "Name": "13b", - "RegionID": 13, - "HostName": "derp13b.tailscale.com", - "IPv4": "192.73.242.187", - "IPv6": "2607:f740:16::640", - "CanPort80": true - } - ] - }, - "14": { - "RegionID": 14, - "RegionCode": "ams", - "RegionName": "Amsterdam", - "Latitude": 52.372778, - "Longitude": 4.893611, - "Nodes": [ - { - "Name": "14c", - "RegionID": 14, - "HostName": "derp14c.tailscale.com", - "IPv4": "176.58.93.147", - "IPv6": "2a00:dd80:3c::b09", - "CanPort80": true - }, - { - "Name": "14d", - "RegionID": 14, - "HostName": "derp14d.tailscale.com", - "IPv4": "176.58.93.154", - "IPv6": "2a00:dd80:3c::3d5", - "CanPort80": true - }, - { - "Name": "14b", - "RegionID": 14, - "HostName": "derp14b.tailscale.com", - "IPv4": "176.58.93.248", - "IPv6": "2a00:dd80:3c::807", - "CanPort80": true - } - ] - }, - "15": { - "RegionID": 15, - "RegionCode": "jnb", - "RegionName": "Johannesburg", - "Latitude": -26.204444, - "Longitude": 28.045556, - "Nodes": [ - { - "Name": "15c", - "RegionID": 15, - "HostName": "derp15c.tailscale.com", - "IPv4": "102.67.165.185", - "IPv6": "2c0f:edb0:0:10::b59", - "CanPort80": true - }, - { - "Name": "15d", - "RegionID": 15, - "HostName": "derp15d.tailscale.com", - "IPv4": "102.67.165.36", - "IPv6": "2c0f:edb0:0:10::599", - "CanPort80": true - }, - { - "Name": "15b", - "RegionID": 15, - "HostName": "derp15b.tailscale.com", - "IPv4": "102.67.165.90", - "IPv6": "2c0f:edb0:0:10::963", - "CanPort80": true - } - ] - }, - "16": { - "RegionID": 16, - "RegionCode": "mia", - "RegionName": "Miami", - "Latitude": 25.78, - "Longitude": -80.21, - "Nodes": [ - { - "Name": "16c", - "RegionID": 16, - "HostName": "derp16c.tailscale.com", - "IPv4": "192.73.243.229", - "IPv6": "2607:f740:17::4e4", - "CanPort80": true - }, - { - "Name": "16d", - "RegionID": 16, - "HostName": "derp16d.tailscale.com", - "IPv4": "192.73.243.141", - "IPv6": "2607:f740:17::475", - "CanPort80": true - }, - { - "Name": "16b", - "RegionID": 16, - "HostName": "derp16b.tailscale.com", - "IPv4": "192.73.243.135", - "IPv6": "2607:f740:17::476", - "CanPort80": true - } - ] - }, - "17": { - "RegionID": 17, - "RegionCode": "lax", - "RegionName": "Los Angeles", - "Latitude": 34.05, - "Longitude": -118.25, - "Nodes": [ - { - "Name": "17c", - "RegionID": 17, - "HostName": "derp17c.tailscale.com", - "IPv4": "208.111.40.12", - "IPv6": "2607:f740:c::10", - "CanPort80": true - }, - { - "Name": "17d", - "RegionID": 17, - "HostName": "derp17d.tailscale.com", - "IPv4": "208.111.40.216", - "IPv6": "2607:f740:c::e1b", - "CanPort80": true - }, - { - "Name": "17b", - "RegionID": 17, - "HostName": "derp17b.tailscale.com", - "IPv4": "192.73.244.245", - "IPv6": "2607:f740:c::646", - "CanPort80": true - } - ] - }, - "18": { - "RegionID": 18, - "RegionCode": "par", - "RegionName": "Paris", - "Latitude": 48.856667, - "Longitude": 2.352222, - "Nodes": [ - { - "Name": "18c", - "RegionID": 18, - "HostName": "derp18c.tailscale.com", - "IPv4": "176.58.90.207", - "IPv6": "2a00:dd80:3e::c19", - "CanPort80": true - }, - { - "Name": "18d", - "RegionID": 18, - "HostName": "derp18d.tailscale.com", - "IPv4": "176.58.90.104", - "IPv6": "2a00:dd80:3e::f2e", - "CanPort80": true - }, - { - "Name": "18b", - "RegionID": 18, - "HostName": "derp18b.tailscale.com", - "IPv4": "176.58.90.147", - "IPv6": "2a00:dd80:3e::363", - "CanPort80": true - } - ] - }, - "19": { - "RegionID": 19, - "RegionCode": "mad", - "RegionName": "Madrid", - "Latitude": 40.416944, - "Longitude": -3.703333, - "Nodes": [ - { - "Name": "19c", - "RegionID": 19, - "HostName": "derp19c.tailscale.com", - "IPv4": "45.159.97.61", - "IPv6": "2a00:dd80:14:10::20", - "CanPort80": true - }, - { - "Name": "19d", - "RegionID": 19, - "HostName": "derp19d.tailscale.com", - "IPv4": "45.159.97.233", - "IPv6": "2a00:dd80:14:10::34a", - "CanPort80": true - }, - { - "Name": "19b", - "RegionID": 19, - "HostName": "derp19b.tailscale.com", - "IPv4": "45.159.97.144", - "IPv6": "2a00:dd80:14:10::335", - "CanPort80": true - } - ] - }, - "2": { - "RegionID": 2, - "RegionCode": "sfo", - "RegionName": "San Francisco", - "Latitude": 37.7775, - "Longitude": -122.416389, - "Nodes": [ - { - "Name": "2e", - "RegionID": 2, - "HostName": "derp2e.tailscale.com", - "IPv4": "192.73.252.134", - "IPv6": "2607:f740:0:3f::44c", - "CanPort80": true - }, - { - "Name": "2f", - "RegionID": 2, - "HostName": "derp2f.tailscale.com", - "IPv4": "208.111.34.178", - "IPv6": "2607:f740:0:3f::f4", - "CanPort80": true - }, - { - "Name": "2d", - "RegionID": 2, - "HostName": "derp2d.tailscale.com", - "IPv4": "192.73.252.65", - "IPv6": "2607:f740:0:3f::287", - "CanPort80": true - } - ] - }, - "20": { - "RegionID": 20, - "RegionCode": "hkg", - "RegionName": "Hong Kong", - "Latitude": 22.3193, - "Longitude": 114.1694, - "Nodes": [ - { - "Name": "20c", - "RegionID": 20, - "HostName": "derp20c.tailscale.com", - "IPv4": "205.147.105.30", - "IPv6": "2403:2500:8000:1::5fb", - "CanPort80": true - }, - { - "Name": "20d", - "RegionID": 20, - "HostName": "derp20d.tailscale.com", - "IPv4": "205.147.105.78", - "IPv6": "2403:2500:8000:1::e9a", - "CanPort80": true - }, - { - "Name": "20b", - "RegionID": 20, - "HostName": "derp20b.tailscale.com", - "IPv4": "103.6.84.152", - "IPv6": "2403:2500:8000:1::ef6", - "CanPort80": true - } - ] - }, - "21": { - "RegionID": 21, - "RegionCode": "tor", - "RegionName": "Toronto", - "Latitude": 43.741667, - "Longitude": -79.373333, - "Nodes": [ - { - "Name": "21c", - "RegionID": 21, - "HostName": "derp21c.tailscale.com", - "IPv4": "162.248.221.215", - "IPv6": "2607:f740:50::f10", - "CanPort80": true - }, - { - "Name": "21d", - "RegionID": 21, - "HostName": "derp21d.tailscale.com", - "IPv4": "162.248.221.248", - "IPv6": "2607:f740:50::ca4", - "CanPort80": true - }, - { - "Name": "21b", - "RegionID": 21, - "HostName": "derp21b.tailscale.com", - "IPv4": "162.248.221.199", - "IPv6": "2607:f740:50::1d1", - "CanPort80": true - } - ] - }, - "22": { - "RegionID": 22, - "RegionCode": "waw", - "RegionName": "Warsaw", - "Latitude": 52.23, - "Longitude": 21.011111, - "Nodes": [ - { - "Name": "22c", - "RegionID": 22, - "HostName": "derp22c.tailscale.com", - "IPv4": "45.159.98.253", - "IPv6": "2a00:dd80:40:100::3f", - "CanPort80": true - }, - { - "Name": "22d", - "RegionID": 22, - "HostName": "derp22d.tailscale.com", - "IPv4": "45.159.98.145", - "IPv6": "2a00:dd80:40:100::211", - "CanPort80": true - }, - { - "Name": "22b", - "RegionID": 22, - "HostName": "derp22b.tailscale.com", - "IPv4": "45.159.98.196", - "IPv6": "2a00:dd80:40:100::316", - "CanPort80": true - } - ] - }, - "23": { - "RegionID": 23, - "RegionCode": "dbi", - "RegionName": "Dubai", - "Latitude": 25.263056, - "Longitude": 55.297222, - "Nodes": [ - { - "Name": "23c", - "RegionID": 23, - "HostName": "derp23c.tailscale.com", - "IPv4": "185.34.3.207", - "IPv6": "2a00:dd80:3f:100::a50", - "CanPort80": true - }, - { - "Name": "23d", - "RegionID": 23, - "HostName": "derp23d.tailscale.com", - "IPv4": "185.34.3.75", - "IPv6": "2a00:dd80:3f:100::97e", - "CanPort80": true - }, - { - "Name": "23b", - "RegionID": 23, - "HostName": "derp23b.tailscale.com", - "IPv4": "185.34.3.232", - "IPv6": "2a00:dd80:3f:100::76f", - "CanPort80": true - } - ] - }, - "24": { - "RegionID": 24, - "RegionCode": "hnl", - "RegionName": "Honolulu", - "Latitude": 21.306944, - "Longitude": -157.858333, - "Nodes": [ - { - "Name": "24c", - "RegionID": 24, - "HostName": "derp24c.tailscale.com", - "IPv4": "208.83.233.233", - "IPv6": "2001:19f0:c000:c591:5400:04ff:fe26:2c5f", - "CanPort80": true - }, - { - "Name": "24d", - "RegionID": 24, - "HostName": "derp24d.tailscale.com", - "IPv4": "208.72.155.133", - "IPv6": "2001:19f0:c000:c564:5400:04ff:fe26:2ba8", - "CanPort80": true - }, - { - "Name": "24b", - "RegionID": 24, - "HostName": "derp24b.tailscale.com", - "IPv4": "208.83.234.151", - "IPv6": "2001:19f0:c000:c586:5400:04ff:fe26:2ba6", - "CanPort80": true - } - ] - }, - "25": { - "RegionID": 25, - "RegionCode": "nai", - "RegionName": "Nairobi", - "Latitude": -1.286389, - "Longitude": 36.817222, - "Nodes": [ - { - "Name": "25c", - "RegionID": 25, - "HostName": "derp25c.tailscale.com", - "IPv4": "102.67.167.37", - "IPv6": "2c0f:edb0:2000:1::2c7", - "CanPort80": true - }, - { - "Name": "25d", - "RegionID": 25, - "HostName": "derp25d.tailscale.com", - "IPv4": "102.67.167.188", - "IPv6": "2c0f:edb0:2000:1::188", - "CanPort80": true - }, - { - "Name": "25b", - "RegionID": 25, - "HostName": "derp25b.tailscale.com", - "IPv4": "102.67.167.245", - "IPv6": "2c0f:edb0:2000:1::2e9", - "CanPort80": true - } - ] - }, - "26": { - "RegionID": 26, - "RegionCode": "nue", - "RegionName": "Nuremberg", - "Latitude": 49.453889, - "Longitude": 11.0775, - "Nodes": [ - { - "Name": "26c", - "RegionID": 26, - "HostName": "derp26c.tailscale.com", - "IPv4": "49.12.193.137", - "IPv6": "2a01:4f8:1c1c:5c70::1", - "CanPort80": true - }, - { - "Name": "26d", - "RegionID": 26, - "HostName": "derp26d.tailscale.com", - "IPv4": "49.13.204.141", - "IPv6": "2a01:4f8:1c0c:7d06::1", - "CanPort80": true - }, - { - "Name": "26b", - "RegionID": 26, - "HostName": "derp26b.tailscale.com", - "IPv4": "167.235.72.200", - "IPv6": "2a01:4f8:1c1c:47b6::1", - "CanPort80": true - } - ] - }, - "27": { - "RegionID": 27, - "RegionCode": "iad", - "RegionName": "Ashburn", - "Latitude": 39.03, - "Longitude": -77.471111, - "Nodes": [ - { - "Name": "27d", - "RegionID": 27, - "HostName": "derp27d.tailscale.com", - "IPv4": "178.156.152.106", - "IPv6": "2a01:4ff:f0:3c8e::1", - "CanPort80": true - }, - { - "Name": "27c", - "RegionID": 27, - "HostName": "derp27c.tailscale.com", - "IPv4": "178.156.152.91", - "IPv6": "2a01:4ff:f0:3913::1", - "CanPort80": true - }, - { - "Name": "27e", - "RegionID": 27, - "HostName": "derp27e.tailscale.com", - "IPv4": "178.156.134.232", - "IPv6": "2a01:4ff:f0:28d4::1", - "CanPort80": true - }, - { - "Name": "27b", - "RegionID": 27, - "HostName": "derp27b.tailscale.com", - "IPv4": "5.161.218.233", - "IPv6": "2a01:4ff:f0:3db9::1", - "CanPort80": true - } - ] - }, - "28": { - "RegionID": 28, - "RegionCode": "hel", - "RegionName": "Helsinki", - "Latitude": 60.170833, - "Longitude": 24.9375, - "Nodes": [ - { - "Name": "28c", - "RegionID": 28, - "HostName": "derp28c.tailscale.com", - "IPv4": "95.217.2.165", - "IPv6": "2a01:4f9:c012:cd74::1", - "CanPort80": true - }, - { - "Name": "28d", - "RegionID": 28, - "HostName": "derp28d.tailscale.com", - "IPv4": "157.180.28.32", - "IPv6": "2a01:4f9:c012:2e5b::1", - "CanPort80": true - }, - { - "Name": "28b", - "RegionID": 28, - "HostName": "derp28b.tailscale.com", - "IPv4": "65.109.143.62", - "IPv6": "2a01:4f9:c012:d55c::1", - "CanPort80": true - } - ] - }, - "3": { - "RegionID": 3, - "RegionCode": "sin", - "RegionName": "Singapore", - "Latitude": 1.3521, - "Longitude": 103.8198, - "Nodes": [ - { - "Name": "3g", - "RegionID": 3, - "HostName": "derp3g.tailscale.com", - "IPv4": "172.237.72.79", - "IPv6": "2600:3c15::2000:adff:fe08:6fab", - "CanPort80": true - }, - { - "Name": "3f", - "RegionID": 3, - "HostName": "derp3f.tailscale.com", - "IPv4": "172.237.72.8", - "IPv6": "2600:3c15::2000:53ff:fe48:a668", - "CanPort80": true - }, - { - "Name": "3h", - "RegionID": 3, - "HostName": "derp3h.tailscale.com", - "IPv4": "172.237.66.30", - "IPv6": "2600:3c15::2000:3dff:fe44:50aa", - "CanPort80": true - }, - { - "Name": "3e", - "RegionID": 3, - "HostName": "derp3e.tailscale.com", - "IPv4": "172.237.72.43", - "IPv6": "2600:3c15::2000:6cff:fee4:d799", - "CanPort80": true - } - ] - }, - "4": { - "RegionID": 4, - "RegionCode": "fra", - "RegionName": "Frankfurt", - "Latitude": 50.1109, - "Longitude": 8.6821, - "Nodes": [ - { - "Name": "4h", - "RegionID": 4, - "HostName": "derp4h.tailscale.com", - "IPv4": "185.40.234.77", - "IPv6": "2a00:dd80:20::bcf", - "CanPort80": true - }, - { - "Name": "4g", - "RegionID": 4, - "HostName": "derp4g.tailscale.com", - "IPv4": "185.40.234.113", - "IPv6": "2a00:dd80:20::8f", - "CanPort80": true - }, - { - "Name": "4i", - "RegionID": 4, - "HostName": "derp4i.tailscale.com", - "IPv4": "185.40.234.53", - "IPv6": "2a00:dd80:20::8a6", - "CanPort80": true - }, - { - "Name": "4f", - "RegionID": 4, - "HostName": "derp4f.tailscale.com", - "IPv4": "185.40.234.219", - "IPv6": "2a00:dd80:20::a25", - "CanPort80": true - } - ] - }, - "5": { - "RegionID": 5, - "RegionCode": "syd", - "RegionName": "Sydney", - "Latitude": -33.867778, - "Longitude": 151.21, - "Nodes": [ - { - "Name": "5f", - "RegionID": 5, - "HostName": "derp5f.tailscale.com", - "IPv4": "172.105.166.103", - "IPv6": "2400:8907::2000:ccff:fe1f:80da", - "CanPort80": true - }, - { - "Name": "5g", - "RegionID": 5, - "HostName": "derp5g.tailscale.com", - "IPv4": "172.105.169.57", - "IPv6": "2400:8907::2000:2fff:fea7:57f4", - "CanPort80": true - }, - { - "Name": "5e", - "RegionID": 5, - "HostName": "derp5e.tailscale.com", - "IPv4": "172.105.179.230", - "IPv6": "2400:8907::2000:ceff:fe8d:4f4e", - "CanPort80": true - } - ] - }, - "6": { - "RegionID": 6, - "RegionCode": "blr", - "RegionName": "Bengaluru", - "Latitude": 12.9716, - "Longitude": 77.5946, - "Nodes": [ - { - "Name": "6a", - "RegionID": 6, - "HostName": "derp6.tailscale.com", - "IPv4": "68.183.90.120", - "IPv6": "2400:6180:100:d0::982:d001", - "CanPort80": true - } - ] - }, - "7": { - "RegionID": 7, - "RegionCode": "tok", - "RegionName": "Tokyo", - "Latitude": 35.6764, - "Longitude": 139.65, - "Nodes": [ - { - "Name": "7g", - "RegionID": 7, - "HostName": "derp7g.tailscale.com", - "IPv4": "172.238.6.179", - "IPv6": "2600:3c18::2000:3fff:fe80:3ebd", - "CanPort80": true - }, - { - "Name": "7f", - "RegionID": 7, - "HostName": "derp7f.tailscale.com", - "IPv4": "172.238.6.34", - "IPv6": "2600:3c18::2000:acff:fe8e:3ed5", - "CanPort80": true - }, - { - "Name": "7h", - "RegionID": 7, - "HostName": "derp7h.tailscale.com", - "IPv4": "172.237.28.183", - "IPv6": "2600:3c18::2000:b1ff:fea9:4560", - "CanPort80": true - }, - { - "Name": "7e", - "RegionID": 7, - "HostName": "derp7e.tailscale.com", - "IPv4": "172.238.6.180", - "IPv6": "2600:3c18::2000:60ff:fe0f:6e83", - "STUNOnly": true, - "CanPort80": true - } - ] - }, - "8": { - "RegionID": 8, - "RegionCode": "lhr", - "RegionName": "London", - "Latitude": 51.5072, - "Longitude": 0.1276, - "Nodes": [ - { - "Name": "8f", - "RegionID": 8, - "HostName": "derp8f.tailscale.com", - "IPv4": "176.58.88.183", - "IPv6": "2a00:dd80:3a::dfa", - "CanPort80": true - }, - { - "Name": "8g", - "RegionID": 8, - "HostName": "derp8g.tailscale.com", - "IPv4": "176.58.92.254", - "IPv6": "2a00:dd80:3a::ed", - "CanPort80": true - }, - { - "Name": "8e", - "RegionID": 8, - "HostName": "derp8e.tailscale.com", - "IPv4": "176.58.92.144", - "IPv6": "2a00:dd80:3a::b33", - "CanPort80": true - } - ] - }, - "9": { - "RegionID": 9, - "RegionCode": "dfw", - "RegionName": "Dallas", - "Latitude": 32.779167, - "Longitude": -96.808889, - "Nodes": [ - { - "Name": "9e", - "RegionID": 9, - "HostName": "derp9e.tailscale.com", - "IPv4": "192.73.248.83", - "IPv6": "2607:f740:100::359", - "CanPort80": true - }, - { - "Name": "9f", - "RegionID": 9, - "HostName": "derp9f.tailscale.com", - "IPv4": "209.177.156.197", - "IPv6": "2607:f740:100::cad", - "CanPort80": true - }, - { - "Name": "9d", - "RegionID": 9, - "HostName": "derp9d.tailscale.com", - "IPv4": "209.177.156.94", - "IPv6": "2607:f740:100::c05", - "CanPort80": true - } - ] - } - } - }, - "DisplayMessages": null, - "TKAEnabled": false, - "TKAHead": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", - "Domain": "kratail2tid@passkey", - "DomainAuditLogID": "", - "UserProfiles": { - "6999435610919250": { - "ID": 6999435610919250, - "LoginName": "group-a-client.tail78f774.ts.net", - "DisplayName": "group-a-client" - } - } + "PacketFilterRules": null } }, "group-b-client": { - "commands": { - "packet_filter_rules": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/group-b-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/group-b-client/tailscaled.sock debug localapi POST debug-packet-filter-matches" - }, "packet_filter_rules": null, - "packet_filter_matches": [], - "whois": { - "100.124.195.93": { - "peer_name": "exit-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/group-b-client/tailscaled.sock whois --json 100.124.195.93", - "response": null - }, - "100.116.18.24": { - "peer_name": "exit-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/group-b-client/tailscaled.sock whois --json 100.116.18.24", - "response": null - }, - "100.85.66.106": { - "peer_name": "exit-node", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/group-b-client/tailscaled.sock whois --json 100.85.66.106", - "response": null - }, - "100.107.162.14": { - "peer_name": "group-a-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/group-b-client/tailscaled.sock whois --json 100.107.162.14", - "response": null - }, - "100.105.127.107": { - "peer_name": "multi-exit-router", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/group-b-client/tailscaled.sock whois --json 100.105.127.107", - "response": null - }, - "100.109.43.124": { - "peer_name": "router-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/group-b-client/tailscaled.sock whois --json 100.109.43.124", - "response": null - }, - "100.65.172.123": { - "peer_name": "router-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/group-b-client/tailscaled.sock whois --json 100.65.172.123", - "response": null - }, - "100.92.142.61": { - "peer_name": "subnet-router", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/group-b-client/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/group-b-client/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/group-b-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/group-b-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/group-b-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/group-b-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/group-b-client/tailscaled.sock whois --json 100.90.199.68", - "response": null - } - }, "netmap": { - "SelfNode": { - "ID": 1008089393782498, - "StableID": "ndUwgLoZs811CNTRL", - "Name": "group-b-client.tail78f774.ts.net.", - "User": 1008089393782498, - "Key": "nodekey:ef35a655163204a08b33e09fdc24709f1e3aaa7f40de4efd5549cf014b4d8711", - "DiscoKey": "discokey:e972182cda0d0b459c91b2881624b81749a7e44390a5dde1b9bc17c1ae67715a", - "Addresses": ["100.77.135.18/32", "fd7a:115c:a1e0::4b37:8712/128"], - "AllowedIPs": ["100.77.135.18/32", "fd7a:115c:a1e0::4b37:8712/128"], - "Endpoints": ["77.164.248.136:49377", "10.65.0.27:49377", "172.17.0.1:49377"], - "Hostinfo": { - "Hostname": "group-b-client", - "RequestTags": ["tag:group-b"], - "Services": [ - { "Proto": "peerapi4", "Port": 47173 }, - { "Proto": "peerapi6", "Port": 47173 }, - { "Proto": "peerapi-dns-proxy", "Port": 1 } - ] - }, - "Created": "2026-03-28T10:38:08.031309668Z", - "Tags": ["tag:group-b"], - "MachineAuthorized": true, - "CapMap": { - "https://tailscale.com/cap/file-sharing": null, - "https://tailscale.com/cap/is-owner": null, - "https://tailscale.com/cap/ssh": null, - "https://tailscale.com/cap/tailnet-lock": null, - "probe-udp-lifetime": null, - "ssh-behavior-v1": null, - "ssh-env-vars": null, - "store-appc-routes": null, - "tailnet-display-name": ["kratail2tid@passkey"] - }, - "ComputedName": "group-b-client", - "ComputedNameWithHost": "group-b-client" - }, - "AllCaps": [ - "ssh-env-vars", - "store-appc-routes", - "probe-udp-lifetime", - "tailnet-display-name", - "https://tailscale.com/cap/is-owner", - "ssh-behavior-v1", - "https://tailscale.com/cap/file-sharing", - "https://tailscale.com/cap/ssh", - "https://tailscale.com/cap/tailnet-lock" - ], - "NodeKey": "nodekey:ef35a655163204a08b33e09fdc24709f1e3aaa7f40de4efd5549cf014b4d8711", - "MachineKey": "mkey:f151b3ba7be457f1484c96d8daf48e032d8c9ed890a7f9b2f32c51458a19a05c", "Peers": [], - "DNS": { - "Routes": { - "tail78f774.ts.net.": null, - "ts.net.": [{ "Addr": "199.247.155.53" }, { "Addr": "2620:111:8007::53" }] - }, - "Domains": ["tail78f774.ts.net"], - "Proxied": true, - "ExitNodeFilteredSet": [".ts.net", ".tailscale.net"] - }, - "PacketFilter": [], - "PacketFilterRules": null, - "SSHPolicy": { "rules": [] }, - "CollectServices": false, - "DERPMap": { - "Regions": { - "1": { - "RegionID": 1, - "RegionCode": "nyc", - "RegionName": "New York City", - "Latitude": 40.7128, - "Longitude": -74.006, - "Nodes": [ - { - "Name": "1h", - "RegionID": 1, - "HostName": "derp1h.tailscale.com", - "IPv4": "199.38.181.93", - "IPv6": "2607:f740:f::afd", - "CanPort80": true - }, - { - "Name": "1g", - "RegionID": 1, - "HostName": "derp1g.tailscale.com", - "IPv4": "209.177.145.120", - "IPv6": "2607:f740:f::3eb", - "CanPort80": true - }, - { - "Name": "1i", - "RegionID": 1, - "HostName": "derp1i.tailscale.com", - "IPv4": "199.38.181.103", - "IPv6": "2607:f740:f::e19", - "CanPort80": true - }, - { - "Name": "1f", - "RegionID": 1, - "HostName": "derp1f.tailscale.com", - "IPv4": "199.38.181.104", - "IPv6": "2607:f740:f::bc", - "CanPort80": true - } - ] - }, - "10": { - "RegionID": 10, - "RegionCode": "sea", - "RegionName": "Seattle", - "Latitude": 47.609722, - "Longitude": -122.333056, - "Nodes": [ - { - "Name": "10c", - "RegionID": 10, - "HostName": "derp10c.tailscale.com", - "IPv4": "192.73.240.121", - "IPv6": "2607:f740:14::40c", - "CanPort80": true - }, - { - "Name": "10d", - "RegionID": 10, - "HostName": "derp10d.tailscale.com", - "IPv4": "192.73.240.132", - "IPv6": "2607:f740:14::500", - "CanPort80": true - }, - { - "Name": "10b", - "RegionID": 10, - "HostName": "derp10b.tailscale.com", - "IPv4": "192.73.240.161", - "IPv6": "2607:f740:14::61c", - "CanPort80": true - } - ] - }, - "11": { - "RegionID": 11, - "RegionCode": "sao", - "RegionName": "São Paulo", - "Latitude": -23.55, - "Longitude": -46.633333, - "Nodes": [ - { - "Name": "11f", - "RegionID": 11, - "HostName": "derp11f.tailscale.com", - "IPv4": "172.237.61.197", - "IPv6": "2600:3c0d::2000:3bff:fe44:6166", - "CanPort80": true - }, - { - "Name": "11g", - "RegionID": 11, - "HostName": "derp11g.tailscale.com", - "IPv4": "172.237.61.190", - "IPv6": "2600:3c0d::2000:62ff:febe:2e67", - "CanPort80": true - }, - { - "Name": "11e", - "RegionID": 11, - "HostName": "derp11e.tailscale.com", - "IPv4": "172.237.61.194", - "IPv6": "2600:3c0d::2000:d2ff:fe43:1790", - "CanPort80": true - } - ] - }, - "12": { - "RegionID": 12, - "RegionCode": "ord", - "RegionName": "Chicago", - "Latitude": 41.881944, - "Longitude": -87.627778, - "Nodes": [ - { - "Name": "12e", - "RegionID": 12, - "HostName": "derp12e.tailscale.com", - "IPv4": "209.177.158.15", - "IPv6": "2607:f740:e::b17", - "CanPort80": true - }, - { - "Name": "12f", - "RegionID": 12, - "HostName": "derp12f.tailscale.com", - "IPv4": "199.38.182.118", - "IPv6": "2607:f740:e::4c8", - "CanPort80": true - }, - { - "Name": "12d", - "RegionID": 12, - "HostName": "derp12d.tailscale.com", - "IPv4": "209.177.158.246", - "IPv6": "2607:f740:e::811", - "CanPort80": true - } - ] - }, - "13": { - "RegionID": 13, - "RegionCode": "den", - "RegionName": "Denver", - "Latitude": 39.7392, - "Longitude": -104.9849, - "Nodes": [ - { - "Name": "13c", - "RegionID": 13, - "HostName": "derp13c.tailscale.com", - "IPv4": "192.73.242.28", - "IPv6": "2607:f740:16::5c", - "CanPort80": true - }, - { - "Name": "13d", - "RegionID": 13, - "HostName": "derp13d.tailscale.com", - "IPv4": "192.73.242.204", - "IPv6": "2607:f740:16::c23", - "CanPort80": true - }, - { - "Name": "13b", - "RegionID": 13, - "HostName": "derp13b.tailscale.com", - "IPv4": "192.73.242.187", - "IPv6": "2607:f740:16::640", - "CanPort80": true - } - ] - }, - "14": { - "RegionID": 14, - "RegionCode": "ams", - "RegionName": "Amsterdam", - "Latitude": 52.372778, - "Longitude": 4.893611, - "Nodes": [ - { - "Name": "14c", - "RegionID": 14, - "HostName": "derp14c.tailscale.com", - "IPv4": "176.58.93.147", - "IPv6": "2a00:dd80:3c::b09", - "CanPort80": true - }, - { - "Name": "14d", - "RegionID": 14, - "HostName": "derp14d.tailscale.com", - "IPv4": "176.58.93.154", - "IPv6": "2a00:dd80:3c::3d5", - "CanPort80": true - }, - { - "Name": "14b", - "RegionID": 14, - "HostName": "derp14b.tailscale.com", - "IPv4": "176.58.93.248", - "IPv6": "2a00:dd80:3c::807", - "CanPort80": true - } - ] - }, - "15": { - "RegionID": 15, - "RegionCode": "jnb", - "RegionName": "Johannesburg", - "Latitude": -26.204444, - "Longitude": 28.045556, - "Nodes": [ - { - "Name": "15c", - "RegionID": 15, - "HostName": "derp15c.tailscale.com", - "IPv4": "102.67.165.185", - "IPv6": "2c0f:edb0:0:10::b59", - "CanPort80": true - }, - { - "Name": "15d", - "RegionID": 15, - "HostName": "derp15d.tailscale.com", - "IPv4": "102.67.165.36", - "IPv6": "2c0f:edb0:0:10::599", - "CanPort80": true - }, - { - "Name": "15b", - "RegionID": 15, - "HostName": "derp15b.tailscale.com", - "IPv4": "102.67.165.90", - "IPv6": "2c0f:edb0:0:10::963", - "CanPort80": true - } - ] - }, - "16": { - "RegionID": 16, - "RegionCode": "mia", - "RegionName": "Miami", - "Latitude": 25.78, - "Longitude": -80.21, - "Nodes": [ - { - "Name": "16c", - "RegionID": 16, - "HostName": "derp16c.tailscale.com", - "IPv4": "192.73.243.229", - "IPv6": "2607:f740:17::4e4", - "CanPort80": true - }, - { - "Name": "16d", - "RegionID": 16, - "HostName": "derp16d.tailscale.com", - "IPv4": "192.73.243.141", - "IPv6": "2607:f740:17::475", - "CanPort80": true - }, - { - "Name": "16b", - "RegionID": 16, - "HostName": "derp16b.tailscale.com", - "IPv4": "192.73.243.135", - "IPv6": "2607:f740:17::476", - "CanPort80": true - } - ] - }, - "17": { - "RegionID": 17, - "RegionCode": "lax", - "RegionName": "Los Angeles", - "Latitude": 34.05, - "Longitude": -118.25, - "Nodes": [ - { - "Name": "17c", - "RegionID": 17, - "HostName": "derp17c.tailscale.com", - "IPv4": "208.111.40.12", - "IPv6": "2607:f740:c::10", - "CanPort80": true - }, - { - "Name": "17d", - "RegionID": 17, - "HostName": "derp17d.tailscale.com", - "IPv4": "208.111.40.216", - "IPv6": "2607:f740:c::e1b", - "CanPort80": true - }, - { - "Name": "17b", - "RegionID": 17, - "HostName": "derp17b.tailscale.com", - "IPv4": "192.73.244.245", - "IPv6": "2607:f740:c::646", - "CanPort80": true - } - ] - }, - "18": { - "RegionID": 18, - "RegionCode": "par", - "RegionName": "Paris", - "Latitude": 48.856667, - "Longitude": 2.352222, - "Nodes": [ - { - "Name": "18c", - "RegionID": 18, - "HostName": "derp18c.tailscale.com", - "IPv4": "176.58.90.207", - "IPv6": "2a00:dd80:3e::c19", - "CanPort80": true - }, - { - "Name": "18d", - "RegionID": 18, - "HostName": "derp18d.tailscale.com", - "IPv4": "176.58.90.104", - "IPv6": "2a00:dd80:3e::f2e", - "CanPort80": true - }, - { - "Name": "18b", - "RegionID": 18, - "HostName": "derp18b.tailscale.com", - "IPv4": "176.58.90.147", - "IPv6": "2a00:dd80:3e::363", - "CanPort80": true - } - ] - }, - "19": { - "RegionID": 19, - "RegionCode": "mad", - "RegionName": "Madrid", - "Latitude": 40.416944, - "Longitude": -3.703333, - "Nodes": [ - { - "Name": "19c", - "RegionID": 19, - "HostName": "derp19c.tailscale.com", - "IPv4": "45.159.97.61", - "IPv6": "2a00:dd80:14:10::20", - "CanPort80": true - }, - { - "Name": "19d", - "RegionID": 19, - "HostName": "derp19d.tailscale.com", - "IPv4": "45.159.97.233", - "IPv6": "2a00:dd80:14:10::34a", - "CanPort80": true - }, - { - "Name": "19b", - "RegionID": 19, - "HostName": "derp19b.tailscale.com", - "IPv4": "45.159.97.144", - "IPv6": "2a00:dd80:14:10::335", - "CanPort80": true - } - ] - }, - "2": { - "RegionID": 2, - "RegionCode": "sfo", - "RegionName": "San Francisco", - "Latitude": 37.7775, - "Longitude": -122.416389, - "Nodes": [ - { - "Name": "2e", - "RegionID": 2, - "HostName": "derp2e.tailscale.com", - "IPv4": "192.73.252.134", - "IPv6": "2607:f740:0:3f::44c", - "CanPort80": true - }, - { - "Name": "2f", - "RegionID": 2, - "HostName": "derp2f.tailscale.com", - "IPv4": "208.111.34.178", - "IPv6": "2607:f740:0:3f::f4", - "CanPort80": true - }, - { - "Name": "2d", - "RegionID": 2, - "HostName": "derp2d.tailscale.com", - "IPv4": "192.73.252.65", - "IPv6": "2607:f740:0:3f::287", - "CanPort80": true - } - ] - }, - "20": { - "RegionID": 20, - "RegionCode": "hkg", - "RegionName": "Hong Kong", - "Latitude": 22.3193, - "Longitude": 114.1694, - "Nodes": [ - { - "Name": "20c", - "RegionID": 20, - "HostName": "derp20c.tailscale.com", - "IPv4": "205.147.105.30", - "IPv6": "2403:2500:8000:1::5fb", - "CanPort80": true - }, - { - "Name": "20d", - "RegionID": 20, - "HostName": "derp20d.tailscale.com", - "IPv4": "205.147.105.78", - "IPv6": "2403:2500:8000:1::e9a", - "CanPort80": true - }, - { - "Name": "20b", - "RegionID": 20, - "HostName": "derp20b.tailscale.com", - "IPv4": "103.6.84.152", - "IPv6": "2403:2500:8000:1::ef6", - "CanPort80": true - } - ] - }, - "21": { - "RegionID": 21, - "RegionCode": "tor", - "RegionName": "Toronto", - "Latitude": 43.741667, - "Longitude": -79.373333, - "Nodes": [ - { - "Name": "21c", - "RegionID": 21, - "HostName": "derp21c.tailscale.com", - "IPv4": "162.248.221.215", - "IPv6": "2607:f740:50::f10", - "CanPort80": true - }, - { - "Name": "21d", - "RegionID": 21, - "HostName": "derp21d.tailscale.com", - "IPv4": "162.248.221.248", - "IPv6": "2607:f740:50::ca4", - "CanPort80": true - }, - { - "Name": "21b", - "RegionID": 21, - "HostName": "derp21b.tailscale.com", - "IPv4": "162.248.221.199", - "IPv6": "2607:f740:50::1d1", - "CanPort80": true - } - ] - }, - "22": { - "RegionID": 22, - "RegionCode": "waw", - "RegionName": "Warsaw", - "Latitude": 52.23, - "Longitude": 21.011111, - "Nodes": [ - { - "Name": "22c", - "RegionID": 22, - "HostName": "derp22c.tailscale.com", - "IPv4": "45.159.98.253", - "IPv6": "2a00:dd80:40:100::3f", - "CanPort80": true - }, - { - "Name": "22d", - "RegionID": 22, - "HostName": "derp22d.tailscale.com", - "IPv4": "45.159.98.145", - "IPv6": "2a00:dd80:40:100::211", - "CanPort80": true - }, - { - "Name": "22b", - "RegionID": 22, - "HostName": "derp22b.tailscale.com", - "IPv4": "45.159.98.196", - "IPv6": "2a00:dd80:40:100::316", - "CanPort80": true - } - ] - }, - "23": { - "RegionID": 23, - "RegionCode": "dbi", - "RegionName": "Dubai", - "Latitude": 25.263056, - "Longitude": 55.297222, - "Nodes": [ - { - "Name": "23c", - "RegionID": 23, - "HostName": "derp23c.tailscale.com", - "IPv4": "185.34.3.207", - "IPv6": "2a00:dd80:3f:100::a50", - "CanPort80": true - }, - { - "Name": "23d", - "RegionID": 23, - "HostName": "derp23d.tailscale.com", - "IPv4": "185.34.3.75", - "IPv6": "2a00:dd80:3f:100::97e", - "CanPort80": true - }, - { - "Name": "23b", - "RegionID": 23, - "HostName": "derp23b.tailscale.com", - "IPv4": "185.34.3.232", - "IPv6": "2a00:dd80:3f:100::76f", - "CanPort80": true - } - ] - }, - "24": { - "RegionID": 24, - "RegionCode": "hnl", - "RegionName": "Honolulu", - "Latitude": 21.306944, - "Longitude": -157.858333, - "Nodes": [ - { - "Name": "24c", - "RegionID": 24, - "HostName": "derp24c.tailscale.com", - "IPv4": "208.83.233.233", - "IPv6": "2001:19f0:c000:c591:5400:04ff:fe26:2c5f", - "CanPort80": true - }, - { - "Name": "24d", - "RegionID": 24, - "HostName": "derp24d.tailscale.com", - "IPv4": "208.72.155.133", - "IPv6": "2001:19f0:c000:c564:5400:04ff:fe26:2ba8", - "CanPort80": true - }, - { - "Name": "24b", - "RegionID": 24, - "HostName": "derp24b.tailscale.com", - "IPv4": "208.83.234.151", - "IPv6": "2001:19f0:c000:c586:5400:04ff:fe26:2ba6", - "CanPort80": true - } - ] - }, - "25": { - "RegionID": 25, - "RegionCode": "nai", - "RegionName": "Nairobi", - "Latitude": -1.286389, - "Longitude": 36.817222, - "Nodes": [ - { - "Name": "25c", - "RegionID": 25, - "HostName": "derp25c.tailscale.com", - "IPv4": "102.67.167.37", - "IPv6": "2c0f:edb0:2000:1::2c7", - "CanPort80": true - }, - { - "Name": "25d", - "RegionID": 25, - "HostName": "derp25d.tailscale.com", - "IPv4": "102.67.167.188", - "IPv6": "2c0f:edb0:2000:1::188", - "CanPort80": true - }, - { - "Name": "25b", - "RegionID": 25, - "HostName": "derp25b.tailscale.com", - "IPv4": "102.67.167.245", - "IPv6": "2c0f:edb0:2000:1::2e9", - "CanPort80": true - } - ] - }, - "26": { - "RegionID": 26, - "RegionCode": "nue", - "RegionName": "Nuremberg", - "Latitude": 49.453889, - "Longitude": 11.0775, - "Nodes": [ - { - "Name": "26c", - "RegionID": 26, - "HostName": "derp26c.tailscale.com", - "IPv4": "49.12.193.137", - "IPv6": "2a01:4f8:1c1c:5c70::1", - "CanPort80": true - }, - { - "Name": "26d", - "RegionID": 26, - "HostName": "derp26d.tailscale.com", - "IPv4": "49.13.204.141", - "IPv6": "2a01:4f8:1c0c:7d06::1", - "CanPort80": true - }, - { - "Name": "26b", - "RegionID": 26, - "HostName": "derp26b.tailscale.com", - "IPv4": "167.235.72.200", - "IPv6": "2a01:4f8:1c1c:47b6::1", - "CanPort80": true - } - ] - }, - "27": { - "RegionID": 27, - "RegionCode": "iad", - "RegionName": "Ashburn", - "Latitude": 39.03, - "Longitude": -77.471111, - "Nodes": [ - { - "Name": "27d", - "RegionID": 27, - "HostName": "derp27d.tailscale.com", - "IPv4": "178.156.152.106", - "IPv6": "2a01:4ff:f0:3c8e::1", - "CanPort80": true - }, - { - "Name": "27c", - "RegionID": 27, - "HostName": "derp27c.tailscale.com", - "IPv4": "178.156.152.91", - "IPv6": "2a01:4ff:f0:3913::1", - "CanPort80": true - }, - { - "Name": "27e", - "RegionID": 27, - "HostName": "derp27e.tailscale.com", - "IPv4": "178.156.134.232", - "IPv6": "2a01:4ff:f0:28d4::1", - "CanPort80": true - }, - { - "Name": "27b", - "RegionID": 27, - "HostName": "derp27b.tailscale.com", - "IPv4": "5.161.218.233", - "IPv6": "2a01:4ff:f0:3db9::1", - "CanPort80": true - } - ] - }, - "28": { - "RegionID": 28, - "RegionCode": "hel", - "RegionName": "Helsinki", - "Latitude": 60.170833, - "Longitude": 24.9375, - "Nodes": [ - { - "Name": "28c", - "RegionID": 28, - "HostName": "derp28c.tailscale.com", - "IPv4": "95.217.2.165", - "IPv6": "2a01:4f9:c012:cd74::1", - "CanPort80": true - }, - { - "Name": "28d", - "RegionID": 28, - "HostName": "derp28d.tailscale.com", - "IPv4": "157.180.28.32", - "IPv6": "2a01:4f9:c012:2e5b::1", - "CanPort80": true - }, - { - "Name": "28b", - "RegionID": 28, - "HostName": "derp28b.tailscale.com", - "IPv4": "65.109.143.62", - "IPv6": "2a01:4f9:c012:d55c::1", - "CanPort80": true - } - ] - }, - "3": { - "RegionID": 3, - "RegionCode": "sin", - "RegionName": "Singapore", - "Latitude": 1.3521, - "Longitude": 103.8198, - "Nodes": [ - { - "Name": "3g", - "RegionID": 3, - "HostName": "derp3g.tailscale.com", - "IPv4": "172.237.72.79", - "IPv6": "2600:3c15::2000:adff:fe08:6fab", - "CanPort80": true - }, - { - "Name": "3f", - "RegionID": 3, - "HostName": "derp3f.tailscale.com", - "IPv4": "172.237.72.8", - "IPv6": "2600:3c15::2000:53ff:fe48:a668", - "CanPort80": true - }, - { - "Name": "3h", - "RegionID": 3, - "HostName": "derp3h.tailscale.com", - "IPv4": "172.237.66.30", - "IPv6": "2600:3c15::2000:3dff:fe44:50aa", - "CanPort80": true - }, - { - "Name": "3e", - "RegionID": 3, - "HostName": "derp3e.tailscale.com", - "IPv4": "172.237.72.43", - "IPv6": "2600:3c15::2000:6cff:fee4:d799", - "CanPort80": true - } - ] - }, - "4": { - "RegionID": 4, - "RegionCode": "fra", - "RegionName": "Frankfurt", - "Latitude": 50.1109, - "Longitude": 8.6821, - "Nodes": [ - { - "Name": "4h", - "RegionID": 4, - "HostName": "derp4h.tailscale.com", - "IPv4": "185.40.234.77", - "IPv6": "2a00:dd80:20::bcf", - "CanPort80": true - }, - { - "Name": "4g", - "RegionID": 4, - "HostName": "derp4g.tailscale.com", - "IPv4": "185.40.234.113", - "IPv6": "2a00:dd80:20::8f", - "CanPort80": true - }, - { - "Name": "4i", - "RegionID": 4, - "HostName": "derp4i.tailscale.com", - "IPv4": "185.40.234.53", - "IPv6": "2a00:dd80:20::8a6", - "CanPort80": true - }, - { - "Name": "4f", - "RegionID": 4, - "HostName": "derp4f.tailscale.com", - "IPv4": "185.40.234.219", - "IPv6": "2a00:dd80:20::a25", - "CanPort80": true - } - ] - }, - "5": { - "RegionID": 5, - "RegionCode": "syd", - "RegionName": "Sydney", - "Latitude": -33.867778, - "Longitude": 151.21, - "Nodes": [ - { - "Name": "5f", - "RegionID": 5, - "HostName": "derp5f.tailscale.com", - "IPv4": "172.105.166.103", - "IPv6": "2400:8907::2000:ccff:fe1f:80da", - "CanPort80": true - }, - { - "Name": "5g", - "RegionID": 5, - "HostName": "derp5g.tailscale.com", - "IPv4": "172.105.169.57", - "IPv6": "2400:8907::2000:2fff:fea7:57f4", - "CanPort80": true - }, - { - "Name": "5e", - "RegionID": 5, - "HostName": "derp5e.tailscale.com", - "IPv4": "172.105.179.230", - "IPv6": "2400:8907::2000:ceff:fe8d:4f4e", - "CanPort80": true - } - ] - }, - "6": { - "RegionID": 6, - "RegionCode": "blr", - "RegionName": "Bengaluru", - "Latitude": 12.9716, - "Longitude": 77.5946, - "Nodes": [ - { - "Name": "6a", - "RegionID": 6, - "HostName": "derp6.tailscale.com", - "IPv4": "68.183.90.120", - "IPv6": "2400:6180:100:d0::982:d001", - "CanPort80": true - } - ] - }, - "7": { - "RegionID": 7, - "RegionCode": "tok", - "RegionName": "Tokyo", - "Latitude": 35.6764, - "Longitude": 139.65, - "Nodes": [ - { - "Name": "7g", - "RegionID": 7, - "HostName": "derp7g.tailscale.com", - "IPv4": "172.238.6.179", - "IPv6": "2600:3c18::2000:3fff:fe80:3ebd", - "CanPort80": true - }, - { - "Name": "7f", - "RegionID": 7, - "HostName": "derp7f.tailscale.com", - "IPv4": "172.238.6.34", - "IPv6": "2600:3c18::2000:acff:fe8e:3ed5", - "CanPort80": true - }, - { - "Name": "7h", - "RegionID": 7, - "HostName": "derp7h.tailscale.com", - "IPv4": "172.237.28.183", - "IPv6": "2600:3c18::2000:b1ff:fea9:4560", - "CanPort80": true - }, - { - "Name": "7e", - "RegionID": 7, - "HostName": "derp7e.tailscale.com", - "IPv4": "172.238.6.180", - "IPv6": "2600:3c18::2000:60ff:fe0f:6e83", - "STUNOnly": true, - "CanPort80": true - } - ] - }, - "8": { - "RegionID": 8, - "RegionCode": "lhr", - "RegionName": "London", - "Latitude": 51.5072, - "Longitude": 0.1276, - "Nodes": [ - { - "Name": "8f", - "RegionID": 8, - "HostName": "derp8f.tailscale.com", - "IPv4": "176.58.88.183", - "IPv6": "2a00:dd80:3a::dfa", - "CanPort80": true - }, - { - "Name": "8g", - "RegionID": 8, - "HostName": "derp8g.tailscale.com", - "IPv4": "176.58.92.254", - "IPv6": "2a00:dd80:3a::ed", - "CanPort80": true - }, - { - "Name": "8e", - "RegionID": 8, - "HostName": "derp8e.tailscale.com", - "IPv4": "176.58.92.144", - "IPv6": "2a00:dd80:3a::b33", - "CanPort80": true - } - ] - }, - "9": { - "RegionID": 9, - "RegionCode": "dfw", - "RegionName": "Dallas", - "Latitude": 32.779167, - "Longitude": -96.808889, - "Nodes": [ - { - "Name": "9e", - "RegionID": 9, - "HostName": "derp9e.tailscale.com", - "IPv4": "192.73.248.83", - "IPv6": "2607:f740:100::359", - "CanPort80": true - }, - { - "Name": "9f", - "RegionID": 9, - "HostName": "derp9f.tailscale.com", - "IPv4": "209.177.156.197", - "IPv6": "2607:f740:100::cad", - "CanPort80": true - }, - { - "Name": "9d", - "RegionID": 9, - "HostName": "derp9d.tailscale.com", - "IPv4": "209.177.156.94", - "IPv6": "2607:f740:100::c05", - "CanPort80": true - } - ] - } - } - }, - "DisplayMessages": null, - "TKAEnabled": false, - "TKAHead": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", - "Domain": "kratail2tid@passkey", - "DomainAuditLogID": "", - "UserProfiles": { - "1008089393782498": { - "ID": 1008089393782498, - "LoginName": "group-b-client.tail78f774.ts.net", - "DisplayName": "group-b-client" - } - } + "PacketFilterRules": null } }, "multi-exit-router": { - "commands": { - "packet_filter_rules": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/multi-exit-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/multi-exit-router/tailscaled.sock debug localapi POST debug-packet-filter-matches" - }, "packet_filter_rules": null, - "packet_filter_matches": [], - "whois": { - "100.124.195.93": { - "peer_name": "exit-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/multi-exit-router/tailscaled.sock whois --json 100.124.195.93", - "response": null - }, - "100.116.18.24": { - "peer_name": "exit-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/multi-exit-router/tailscaled.sock whois --json 100.116.18.24", - "response": null - }, - "100.85.66.106": { - "peer_name": "exit-node", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/multi-exit-router/tailscaled.sock whois --json 100.85.66.106", - "response": null - }, - "100.107.162.14": { - "peer_name": "group-a-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/multi-exit-router/tailscaled.sock whois --json 100.107.162.14", - "response": null - }, - "100.77.135.18": { - "peer_name": "group-b-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/multi-exit-router/tailscaled.sock whois --json 100.77.135.18", - "response": null - }, - "100.109.43.124": { - "peer_name": "router-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/multi-exit-router/tailscaled.sock whois --json 100.109.43.124", - "response": null - }, - "100.65.172.123": { - "peer_name": "router-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/multi-exit-router/tailscaled.sock whois --json 100.65.172.123", - "response": null - }, - "100.92.142.61": { - "peer_name": "subnet-router", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/multi-exit-router/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/multi-exit-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/multi-exit-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/multi-exit-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/multi-exit-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/multi-exit-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/multi-exit-router/tailscaled.sock whois --json 100.90.199.68", - "response": null - } - }, "netmap": { - "SelfNode": { - "ID": 6294409699640722, - "StableID": "nMQuxDUk9r11CNTRL", - "Name": "multi-exit-router.tail78f774.ts.net.", - "User": 6294409699640722, - "Key": "nodekey:b854a0d64eba757cd3215c5bd78149cc0f927e35a2ad20342e88a15ead297f6a", - "DiscoKey": "discokey:762c82dd308809f511c6ac86dcc2642585837358fdd24958d55f16883c8e6c58", - "Addresses": ["100.105.127.107/32", "fd7a:115c:a1e0::ad37:7f6b/128"], - "AllowedIPs": ["100.105.127.107/32", "fd7a:115c:a1e0::ad37:7f6b/128", "10.33.0.0/16"], - "Endpoints": ["77.164.248.136:50766", "10.65.0.27:50766", "172.17.0.1:50766"], - "Hostinfo": { - "Hostname": "multi-exit-router", - "RoutableIPs": ["0.0.0.0/0", "::/0", "10.33.0.0/16"], - "RequestTags": ["tag:exit", "tag:router"], - "Services": [ - { "Proto": "peerapi4", "Port": 62548 }, - { "Proto": "peerapi6", "Port": 62548 }, - { "Proto": "peerapi-dns-proxy", "Port": 1 } - ] - }, - "Created": "2026-03-28T10:38:19.117098852Z", - "Tags": ["tag:exit", "tag:router"], - "PrimaryRoutes": ["10.33.0.0/16"], - "MachineAuthorized": true, - "CapMap": { - "https://tailscale.com/cap/file-sharing": null, - "https://tailscale.com/cap/is-owner": null, - "https://tailscale.com/cap/ssh": null, - "https://tailscale.com/cap/tailnet-lock": null, - "probe-udp-lifetime": null, - "ssh-behavior-v1": null, - "ssh-env-vars": null, - "store-appc-routes": null, - "tailnet-display-name": ["kratail2tid@passkey"] - }, - "ComputedName": "multi-exit-router", - "ComputedNameWithHost": "multi-exit-router" - }, - "AllCaps": [ - "https://tailscale.com/cap/tailnet-lock", - "https://tailscale.com/cap/ssh", - "probe-udp-lifetime", - "ssh-behavior-v1", - "tailnet-display-name", - "https://tailscale.com/cap/file-sharing", - "store-appc-routes", - "ssh-env-vars", - "https://tailscale.com/cap/is-owner" - ], - "NodeKey": "nodekey:b854a0d64eba757cd3215c5bd78149cc0f927e35a2ad20342e88a15ead297f6a", - "MachineKey": "mkey:91bee804809f30d07bfc29cf556844288fc3d45e0572469a3cb0799a535fda7d", "Peers": [], - "DNS": { - "Routes": { - "tail78f774.ts.net.": null, - "ts.net.": [{ "Addr": "199.247.155.53" }, { "Addr": "2620:111:8007::53" }] - }, - "Domains": ["tail78f774.ts.net"], - "Proxied": true, - "ExitNodeFilteredSet": [".ts.net", ".tailscale.net"] - }, - "PacketFilter": [], - "PacketFilterRules": null, - "SSHPolicy": { "rules": [] }, - "CollectServices": false, - "DERPMap": { - "Regions": { - "1": { - "RegionID": 1, - "RegionCode": "nyc", - "RegionName": "New York City", - "Latitude": 40.7128, - "Longitude": -74.006, - "Nodes": [ - { - "Name": "1h", - "RegionID": 1, - "HostName": "derp1h.tailscale.com", - "IPv4": "199.38.181.93", - "IPv6": "2607:f740:f::afd", - "CanPort80": true - }, - { - "Name": "1g", - "RegionID": 1, - "HostName": "derp1g.tailscale.com", - "IPv4": "209.177.145.120", - "IPv6": "2607:f740:f::3eb", - "CanPort80": true - }, - { - "Name": "1i", - "RegionID": 1, - "HostName": "derp1i.tailscale.com", - "IPv4": "199.38.181.103", - "IPv6": "2607:f740:f::e19", - "CanPort80": true - }, - { - "Name": "1f", - "RegionID": 1, - "HostName": "derp1f.tailscale.com", - "IPv4": "199.38.181.104", - "IPv6": "2607:f740:f::bc", - "CanPort80": true - } - ] - }, - "10": { - "RegionID": 10, - "RegionCode": "sea", - "RegionName": "Seattle", - "Latitude": 47.609722, - "Longitude": -122.333056, - "Nodes": [ - { - "Name": "10c", - "RegionID": 10, - "HostName": "derp10c.tailscale.com", - "IPv4": "192.73.240.121", - "IPv6": "2607:f740:14::40c", - "CanPort80": true - }, - { - "Name": "10d", - "RegionID": 10, - "HostName": "derp10d.tailscale.com", - "IPv4": "192.73.240.132", - "IPv6": "2607:f740:14::500", - "CanPort80": true - }, - { - "Name": "10b", - "RegionID": 10, - "HostName": "derp10b.tailscale.com", - "IPv4": "192.73.240.161", - "IPv6": "2607:f740:14::61c", - "CanPort80": true - } - ] - }, - "11": { - "RegionID": 11, - "RegionCode": "sao", - "RegionName": "São Paulo", - "Latitude": -23.55, - "Longitude": -46.633333, - "Nodes": [ - { - "Name": "11f", - "RegionID": 11, - "HostName": "derp11f.tailscale.com", - "IPv4": "172.237.61.197", - "IPv6": "2600:3c0d::2000:3bff:fe44:6166", - "CanPort80": true - }, - { - "Name": "11g", - "RegionID": 11, - "HostName": "derp11g.tailscale.com", - "IPv4": "172.237.61.190", - "IPv6": "2600:3c0d::2000:62ff:febe:2e67", - "CanPort80": true - }, - { - "Name": "11e", - "RegionID": 11, - "HostName": "derp11e.tailscale.com", - "IPv4": "172.237.61.194", - "IPv6": "2600:3c0d::2000:d2ff:fe43:1790", - "CanPort80": true - } - ] - }, - "12": { - "RegionID": 12, - "RegionCode": "ord", - "RegionName": "Chicago", - "Latitude": 41.881944, - "Longitude": -87.627778, - "Nodes": [ - { - "Name": "12e", - "RegionID": 12, - "HostName": "derp12e.tailscale.com", - "IPv4": "209.177.158.15", - "IPv6": "2607:f740:e::b17", - "CanPort80": true - }, - { - "Name": "12f", - "RegionID": 12, - "HostName": "derp12f.tailscale.com", - "IPv4": "199.38.182.118", - "IPv6": "2607:f740:e::4c8", - "CanPort80": true - }, - { - "Name": "12d", - "RegionID": 12, - "HostName": "derp12d.tailscale.com", - "IPv4": "209.177.158.246", - "IPv6": "2607:f740:e::811", - "CanPort80": true - } - ] - }, - "13": { - "RegionID": 13, - "RegionCode": "den", - "RegionName": "Denver", - "Latitude": 39.7392, - "Longitude": -104.9849, - "Nodes": [ - { - "Name": "13c", - "RegionID": 13, - "HostName": "derp13c.tailscale.com", - "IPv4": "192.73.242.28", - "IPv6": "2607:f740:16::5c", - "CanPort80": true - }, - { - "Name": "13d", - "RegionID": 13, - "HostName": "derp13d.tailscale.com", - "IPv4": "192.73.242.204", - "IPv6": "2607:f740:16::c23", - "CanPort80": true - }, - { - "Name": "13b", - "RegionID": 13, - "HostName": "derp13b.tailscale.com", - "IPv4": "192.73.242.187", - "IPv6": "2607:f740:16::640", - "CanPort80": true - } - ] - }, - "14": { - "RegionID": 14, - "RegionCode": "ams", - "RegionName": "Amsterdam", - "Latitude": 52.372778, - "Longitude": 4.893611, - "Nodes": [ - { - "Name": "14c", - "RegionID": 14, - "HostName": "derp14c.tailscale.com", - "IPv4": "176.58.93.147", - "IPv6": "2a00:dd80:3c::b09", - "CanPort80": true - }, - { - "Name": "14d", - "RegionID": 14, - "HostName": "derp14d.tailscale.com", - "IPv4": "176.58.93.154", - "IPv6": "2a00:dd80:3c::3d5", - "CanPort80": true - }, - { - "Name": "14b", - "RegionID": 14, - "HostName": "derp14b.tailscale.com", - "IPv4": "176.58.93.248", - "IPv6": "2a00:dd80:3c::807", - "CanPort80": true - } - ] - }, - "15": { - "RegionID": 15, - "RegionCode": "jnb", - "RegionName": "Johannesburg", - "Latitude": -26.204444, - "Longitude": 28.045556, - "Nodes": [ - { - "Name": "15c", - "RegionID": 15, - "HostName": "derp15c.tailscale.com", - "IPv4": "102.67.165.185", - "IPv6": "2c0f:edb0:0:10::b59", - "CanPort80": true - }, - { - "Name": "15d", - "RegionID": 15, - "HostName": "derp15d.tailscale.com", - "IPv4": "102.67.165.36", - "IPv6": "2c0f:edb0:0:10::599", - "CanPort80": true - }, - { - "Name": "15b", - "RegionID": 15, - "HostName": "derp15b.tailscale.com", - "IPv4": "102.67.165.90", - "IPv6": "2c0f:edb0:0:10::963", - "CanPort80": true - } - ] - }, - "16": { - "RegionID": 16, - "RegionCode": "mia", - "RegionName": "Miami", - "Latitude": 25.78, - "Longitude": -80.21, - "Nodes": [ - { - "Name": "16c", - "RegionID": 16, - "HostName": "derp16c.tailscale.com", - "IPv4": "192.73.243.229", - "IPv6": "2607:f740:17::4e4", - "CanPort80": true - }, - { - "Name": "16d", - "RegionID": 16, - "HostName": "derp16d.tailscale.com", - "IPv4": "192.73.243.141", - "IPv6": "2607:f740:17::475", - "CanPort80": true - }, - { - "Name": "16b", - "RegionID": 16, - "HostName": "derp16b.tailscale.com", - "IPv4": "192.73.243.135", - "IPv6": "2607:f740:17::476", - "CanPort80": true - } - ] - }, - "17": { - "RegionID": 17, - "RegionCode": "lax", - "RegionName": "Los Angeles", - "Latitude": 34.05, - "Longitude": -118.25, - "Nodes": [ - { - "Name": "17c", - "RegionID": 17, - "HostName": "derp17c.tailscale.com", - "IPv4": "208.111.40.12", - "IPv6": "2607:f740:c::10", - "CanPort80": true - }, - { - "Name": "17d", - "RegionID": 17, - "HostName": "derp17d.tailscale.com", - "IPv4": "208.111.40.216", - "IPv6": "2607:f740:c::e1b", - "CanPort80": true - }, - { - "Name": "17b", - "RegionID": 17, - "HostName": "derp17b.tailscale.com", - "IPv4": "192.73.244.245", - "IPv6": "2607:f740:c::646", - "CanPort80": true - } - ] - }, - "18": { - "RegionID": 18, - "RegionCode": "par", - "RegionName": "Paris", - "Latitude": 48.856667, - "Longitude": 2.352222, - "Nodes": [ - { - "Name": "18c", - "RegionID": 18, - "HostName": "derp18c.tailscale.com", - "IPv4": "176.58.90.207", - "IPv6": "2a00:dd80:3e::c19", - "CanPort80": true - }, - { - "Name": "18d", - "RegionID": 18, - "HostName": "derp18d.tailscale.com", - "IPv4": "176.58.90.104", - "IPv6": "2a00:dd80:3e::f2e", - "CanPort80": true - }, - { - "Name": "18b", - "RegionID": 18, - "HostName": "derp18b.tailscale.com", - "IPv4": "176.58.90.147", - "IPv6": "2a00:dd80:3e::363", - "CanPort80": true - } - ] - }, - "19": { - "RegionID": 19, - "RegionCode": "mad", - "RegionName": "Madrid", - "Latitude": 40.416944, - "Longitude": -3.703333, - "Nodes": [ - { - "Name": "19c", - "RegionID": 19, - "HostName": "derp19c.tailscale.com", - "IPv4": "45.159.97.61", - "IPv6": "2a00:dd80:14:10::20", - "CanPort80": true - }, - { - "Name": "19d", - "RegionID": 19, - "HostName": "derp19d.tailscale.com", - "IPv4": "45.159.97.233", - "IPv6": "2a00:dd80:14:10::34a", - "CanPort80": true - }, - { - "Name": "19b", - "RegionID": 19, - "HostName": "derp19b.tailscale.com", - "IPv4": "45.159.97.144", - "IPv6": "2a00:dd80:14:10::335", - "CanPort80": true - } - ] - }, - "2": { - "RegionID": 2, - "RegionCode": "sfo", - "RegionName": "San Francisco", - "Latitude": 37.7775, - "Longitude": -122.416389, - "Nodes": [ - { - "Name": "2e", - "RegionID": 2, - "HostName": "derp2e.tailscale.com", - "IPv4": "192.73.252.134", - "IPv6": "2607:f740:0:3f::44c", - "CanPort80": true - }, - { - "Name": "2f", - "RegionID": 2, - "HostName": "derp2f.tailscale.com", - "IPv4": "208.111.34.178", - "IPv6": "2607:f740:0:3f::f4", - "CanPort80": true - }, - { - "Name": "2d", - "RegionID": 2, - "HostName": "derp2d.tailscale.com", - "IPv4": "192.73.252.65", - "IPv6": "2607:f740:0:3f::287", - "CanPort80": true - } - ] - }, - "20": { - "RegionID": 20, - "RegionCode": "hkg", - "RegionName": "Hong Kong", - "Latitude": 22.3193, - "Longitude": 114.1694, - "Nodes": [ - { - "Name": "20c", - "RegionID": 20, - "HostName": "derp20c.tailscale.com", - "IPv4": "205.147.105.30", - "IPv6": "2403:2500:8000:1::5fb", - "CanPort80": true - }, - { - "Name": "20d", - "RegionID": 20, - "HostName": "derp20d.tailscale.com", - "IPv4": "205.147.105.78", - "IPv6": "2403:2500:8000:1::e9a", - "CanPort80": true - }, - { - "Name": "20b", - "RegionID": 20, - "HostName": "derp20b.tailscale.com", - "IPv4": "103.6.84.152", - "IPv6": "2403:2500:8000:1::ef6", - "CanPort80": true - } - ] - }, - "21": { - "RegionID": 21, - "RegionCode": "tor", - "RegionName": "Toronto", - "Latitude": 43.741667, - "Longitude": -79.373333, - "Nodes": [ - { - "Name": "21c", - "RegionID": 21, - "HostName": "derp21c.tailscale.com", - "IPv4": "162.248.221.215", - "IPv6": "2607:f740:50::f10", - "CanPort80": true - }, - { - "Name": "21d", - "RegionID": 21, - "HostName": "derp21d.tailscale.com", - "IPv4": "162.248.221.248", - "IPv6": "2607:f740:50::ca4", - "CanPort80": true - }, - { - "Name": "21b", - "RegionID": 21, - "HostName": "derp21b.tailscale.com", - "IPv4": "162.248.221.199", - "IPv6": "2607:f740:50::1d1", - "CanPort80": true - } - ] - }, - "22": { - "RegionID": 22, - "RegionCode": "waw", - "RegionName": "Warsaw", - "Latitude": 52.23, - "Longitude": 21.011111, - "Nodes": [ - { - "Name": "22c", - "RegionID": 22, - "HostName": "derp22c.tailscale.com", - "IPv4": "45.159.98.253", - "IPv6": "2a00:dd80:40:100::3f", - "CanPort80": true - }, - { - "Name": "22d", - "RegionID": 22, - "HostName": "derp22d.tailscale.com", - "IPv4": "45.159.98.145", - "IPv6": "2a00:dd80:40:100::211", - "CanPort80": true - }, - { - "Name": "22b", - "RegionID": 22, - "HostName": "derp22b.tailscale.com", - "IPv4": "45.159.98.196", - "IPv6": "2a00:dd80:40:100::316", - "CanPort80": true - } - ] - }, - "23": { - "RegionID": 23, - "RegionCode": "dbi", - "RegionName": "Dubai", - "Latitude": 25.263056, - "Longitude": 55.297222, - "Nodes": [ - { - "Name": "23c", - "RegionID": 23, - "HostName": "derp23c.tailscale.com", - "IPv4": "185.34.3.207", - "IPv6": "2a00:dd80:3f:100::a50", - "CanPort80": true - }, - { - "Name": "23d", - "RegionID": 23, - "HostName": "derp23d.tailscale.com", - "IPv4": "185.34.3.75", - "IPv6": "2a00:dd80:3f:100::97e", - "CanPort80": true - }, - { - "Name": "23b", - "RegionID": 23, - "HostName": "derp23b.tailscale.com", - "IPv4": "185.34.3.232", - "IPv6": "2a00:dd80:3f:100::76f", - "CanPort80": true - } - ] - }, - "24": { - "RegionID": 24, - "RegionCode": "hnl", - "RegionName": "Honolulu", - "Latitude": 21.306944, - "Longitude": -157.858333, - "Nodes": [ - { - "Name": "24c", - "RegionID": 24, - "HostName": "derp24c.tailscale.com", - "IPv4": "208.83.233.233", - "IPv6": "2001:19f0:c000:c591:5400:04ff:fe26:2c5f", - "CanPort80": true - }, - { - "Name": "24d", - "RegionID": 24, - "HostName": "derp24d.tailscale.com", - "IPv4": "208.72.155.133", - "IPv6": "2001:19f0:c000:c564:5400:04ff:fe26:2ba8", - "CanPort80": true - }, - { - "Name": "24b", - "RegionID": 24, - "HostName": "derp24b.tailscale.com", - "IPv4": "208.83.234.151", - "IPv6": "2001:19f0:c000:c586:5400:04ff:fe26:2ba6", - "CanPort80": true - } - ] - }, - "25": { - "RegionID": 25, - "RegionCode": "nai", - "RegionName": "Nairobi", - "Latitude": -1.286389, - "Longitude": 36.817222, - "Nodes": [ - { - "Name": "25c", - "RegionID": 25, - "HostName": "derp25c.tailscale.com", - "IPv4": "102.67.167.37", - "IPv6": "2c0f:edb0:2000:1::2c7", - "CanPort80": true - }, - { - "Name": "25d", - "RegionID": 25, - "HostName": "derp25d.tailscale.com", - "IPv4": "102.67.167.188", - "IPv6": "2c0f:edb0:2000:1::188", - "CanPort80": true - }, - { - "Name": "25b", - "RegionID": 25, - "HostName": "derp25b.tailscale.com", - "IPv4": "102.67.167.245", - "IPv6": "2c0f:edb0:2000:1::2e9", - "CanPort80": true - } - ] - }, - "26": { - "RegionID": 26, - "RegionCode": "nue", - "RegionName": "Nuremberg", - "Latitude": 49.453889, - "Longitude": 11.0775, - "Nodes": [ - { - "Name": "26c", - "RegionID": 26, - "HostName": "derp26c.tailscale.com", - "IPv4": "49.12.193.137", - "IPv6": "2a01:4f8:1c1c:5c70::1", - "CanPort80": true - }, - { - "Name": "26d", - "RegionID": 26, - "HostName": "derp26d.tailscale.com", - "IPv4": "49.13.204.141", - "IPv6": "2a01:4f8:1c0c:7d06::1", - "CanPort80": true - }, - { - "Name": "26b", - "RegionID": 26, - "HostName": "derp26b.tailscale.com", - "IPv4": "167.235.72.200", - "IPv6": "2a01:4f8:1c1c:47b6::1", - "CanPort80": true - } - ] - }, - "27": { - "RegionID": 27, - "RegionCode": "iad", - "RegionName": "Ashburn", - "Latitude": 39.03, - "Longitude": -77.471111, - "Nodes": [ - { - "Name": "27d", - "RegionID": 27, - "HostName": "derp27d.tailscale.com", - "IPv4": "178.156.152.106", - "IPv6": "2a01:4ff:f0:3c8e::1", - "CanPort80": true - }, - { - "Name": "27c", - "RegionID": 27, - "HostName": "derp27c.tailscale.com", - "IPv4": "178.156.152.91", - "IPv6": "2a01:4ff:f0:3913::1", - "CanPort80": true - }, - { - "Name": "27e", - "RegionID": 27, - "HostName": "derp27e.tailscale.com", - "IPv4": "178.156.134.232", - "IPv6": "2a01:4ff:f0:28d4::1", - "CanPort80": true - }, - { - "Name": "27b", - "RegionID": 27, - "HostName": "derp27b.tailscale.com", - "IPv4": "5.161.218.233", - "IPv6": "2a01:4ff:f0:3db9::1", - "CanPort80": true - } - ] - }, - "28": { - "RegionID": 28, - "RegionCode": "hel", - "RegionName": "Helsinki", - "Latitude": 60.170833, - "Longitude": 24.9375, - "Nodes": [ - { - "Name": "28c", - "RegionID": 28, - "HostName": "derp28c.tailscale.com", - "IPv4": "95.217.2.165", - "IPv6": "2a01:4f9:c012:cd74::1", - "CanPort80": true - }, - { - "Name": "28d", - "RegionID": 28, - "HostName": "derp28d.tailscale.com", - "IPv4": "157.180.28.32", - "IPv6": "2a01:4f9:c012:2e5b::1", - "CanPort80": true - }, - { - "Name": "28b", - "RegionID": 28, - "HostName": "derp28b.tailscale.com", - "IPv4": "65.109.143.62", - "IPv6": "2a01:4f9:c012:d55c::1", - "CanPort80": true - } - ] - }, - "3": { - "RegionID": 3, - "RegionCode": "sin", - "RegionName": "Singapore", - "Latitude": 1.3521, - "Longitude": 103.8198, - "Nodes": [ - { - "Name": "3g", - "RegionID": 3, - "HostName": "derp3g.tailscale.com", - "IPv4": "172.237.72.79", - "IPv6": "2600:3c15::2000:adff:fe08:6fab", - "CanPort80": true - }, - { - "Name": "3f", - "RegionID": 3, - "HostName": "derp3f.tailscale.com", - "IPv4": "172.237.72.8", - "IPv6": "2600:3c15::2000:53ff:fe48:a668", - "CanPort80": true - }, - { - "Name": "3h", - "RegionID": 3, - "HostName": "derp3h.tailscale.com", - "IPv4": "172.237.66.30", - "IPv6": "2600:3c15::2000:3dff:fe44:50aa", - "CanPort80": true - }, - { - "Name": "3e", - "RegionID": 3, - "HostName": "derp3e.tailscale.com", - "IPv4": "172.237.72.43", - "IPv6": "2600:3c15::2000:6cff:fee4:d799", - "CanPort80": true - } - ] - }, - "4": { - "RegionID": 4, - "RegionCode": "fra", - "RegionName": "Frankfurt", - "Latitude": 50.1109, - "Longitude": 8.6821, - "Nodes": [ - { - "Name": "4h", - "RegionID": 4, - "HostName": "derp4h.tailscale.com", - "IPv4": "185.40.234.77", - "IPv6": "2a00:dd80:20::bcf", - "CanPort80": true - }, - { - "Name": "4g", - "RegionID": 4, - "HostName": "derp4g.tailscale.com", - "IPv4": "185.40.234.113", - "IPv6": "2a00:dd80:20::8f", - "CanPort80": true - }, - { - "Name": "4i", - "RegionID": 4, - "HostName": "derp4i.tailscale.com", - "IPv4": "185.40.234.53", - "IPv6": "2a00:dd80:20::8a6", - "CanPort80": true - }, - { - "Name": "4f", - "RegionID": 4, - "HostName": "derp4f.tailscale.com", - "IPv4": "185.40.234.219", - "IPv6": "2a00:dd80:20::a25", - "CanPort80": true - } - ] - }, - "5": { - "RegionID": 5, - "RegionCode": "syd", - "RegionName": "Sydney", - "Latitude": -33.867778, - "Longitude": 151.21, - "Nodes": [ - { - "Name": "5f", - "RegionID": 5, - "HostName": "derp5f.tailscale.com", - "IPv4": "172.105.166.103", - "IPv6": "2400:8907::2000:ccff:fe1f:80da", - "CanPort80": true - }, - { - "Name": "5g", - "RegionID": 5, - "HostName": "derp5g.tailscale.com", - "IPv4": "172.105.169.57", - "IPv6": "2400:8907::2000:2fff:fea7:57f4", - "CanPort80": true - }, - { - "Name": "5e", - "RegionID": 5, - "HostName": "derp5e.tailscale.com", - "IPv4": "172.105.179.230", - "IPv6": "2400:8907::2000:ceff:fe8d:4f4e", - "CanPort80": true - } - ] - }, - "6": { - "RegionID": 6, - "RegionCode": "blr", - "RegionName": "Bengaluru", - "Latitude": 12.9716, - "Longitude": 77.5946, - "Nodes": [ - { - "Name": "6a", - "RegionID": 6, - "HostName": "derp6.tailscale.com", - "IPv4": "68.183.90.120", - "IPv6": "2400:6180:100:d0::982:d001", - "CanPort80": true - } - ] - }, - "7": { - "RegionID": 7, - "RegionCode": "tok", - "RegionName": "Tokyo", - "Latitude": 35.6764, - "Longitude": 139.65, - "Nodes": [ - { - "Name": "7g", - "RegionID": 7, - "HostName": "derp7g.tailscale.com", - "IPv4": "172.238.6.179", - "IPv6": "2600:3c18::2000:3fff:fe80:3ebd", - "CanPort80": true - }, - { - "Name": "7f", - "RegionID": 7, - "HostName": "derp7f.tailscale.com", - "IPv4": "172.238.6.34", - "IPv6": "2600:3c18::2000:acff:fe8e:3ed5", - "CanPort80": true - }, - { - "Name": "7h", - "RegionID": 7, - "HostName": "derp7h.tailscale.com", - "IPv4": "172.237.28.183", - "IPv6": "2600:3c18::2000:b1ff:fea9:4560", - "CanPort80": true - }, - { - "Name": "7e", - "RegionID": 7, - "HostName": "derp7e.tailscale.com", - "IPv4": "172.238.6.180", - "IPv6": "2600:3c18::2000:60ff:fe0f:6e83", - "STUNOnly": true, - "CanPort80": true - } - ] - }, - "8": { - "RegionID": 8, - "RegionCode": "lhr", - "RegionName": "London", - "Latitude": 51.5072, - "Longitude": 0.1276, - "Nodes": [ - { - "Name": "8f", - "RegionID": 8, - "HostName": "derp8f.tailscale.com", - "IPv4": "176.58.88.183", - "IPv6": "2a00:dd80:3a::dfa", - "CanPort80": true - }, - { - "Name": "8g", - "RegionID": 8, - "HostName": "derp8g.tailscale.com", - "IPv4": "176.58.92.254", - "IPv6": "2a00:dd80:3a::ed", - "CanPort80": true - }, - { - "Name": "8e", - "RegionID": 8, - "HostName": "derp8e.tailscale.com", - "IPv4": "176.58.92.144", - "IPv6": "2a00:dd80:3a::b33", - "CanPort80": true - } - ] - }, - "9": { - "RegionID": 9, - "RegionCode": "dfw", - "RegionName": "Dallas", - "Latitude": 32.779167, - "Longitude": -96.808889, - "Nodes": [ - { - "Name": "9e", - "RegionID": 9, - "HostName": "derp9e.tailscale.com", - "IPv4": "192.73.248.83", - "IPv6": "2607:f740:100::359", - "CanPort80": true - }, - { - "Name": "9f", - "RegionID": 9, - "HostName": "derp9f.tailscale.com", - "IPv4": "209.177.156.197", - "IPv6": "2607:f740:100::cad", - "CanPort80": true - }, - { - "Name": "9d", - "RegionID": 9, - "HostName": "derp9d.tailscale.com", - "IPv4": "209.177.156.94", - "IPv6": "2607:f740:100::c05", - "CanPort80": true - } - ] - } - } - }, - "DisplayMessages": null, - "TKAEnabled": false, - "TKAHead": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", - "Domain": "kratail2tid@passkey", - "DomainAuditLogID": "", - "UserProfiles": { - "6294409699640722": { - "ID": 6294409699640722, - "LoginName": "multi-exit-router.tail78f774.ts.net", - "DisplayName": "multi-exit-router" - } - } + "PacketFilterRules": null } }, "router-a": { - "commands": { - "packet_filter_rules": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/router-a/tailscaled.sock debug localapi POST debug-packet-filter-rules", - "packet_filter_matches": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/router-a/tailscaled.sock debug localapi POST debug-packet-filter-matches" - }, "packet_filter_rules": null, - "packet_filter_matches": [], - "whois": { - "100.124.195.93": { - "peer_name": "exit-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/router-a/tailscaled.sock whois --json 100.124.195.93", - "response": null - }, - "100.116.18.24": { - "peer_name": "exit-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/router-a/tailscaled.sock whois --json 100.116.18.24", - "response": null - }, - "100.85.66.106": { - "peer_name": "exit-node", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/router-a/tailscaled.sock whois --json 100.85.66.106", - "response": null - }, - "100.107.162.14": { - "peer_name": "group-a-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/router-a/tailscaled.sock whois --json 100.107.162.14", - "response": null - }, - "100.77.135.18": { - "peer_name": "group-b-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/router-a/tailscaled.sock whois --json 100.77.135.18", - "response": null - }, - "100.105.127.107": { - "peer_name": "multi-exit-router", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/router-a/tailscaled.sock whois --json 100.105.127.107", - "response": null - }, - "100.65.172.123": { - "peer_name": "router-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/router-a/tailscaled.sock whois --json 100.65.172.123", - "response": null - }, - "100.92.142.61": { - "peer_name": "subnet-router", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/router-a/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/router-a/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/router-a/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/router-a/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/router-a/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/router-a/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/router-a/tailscaled.sock whois --json 100.90.199.68", - "response": null - } - }, "netmap": { - "SelfNode": { - "ID": 50590507314324, - "StableID": "n3kktkvuP111CNTRL", - "Name": "router-a.tail78f774.ts.net.", - "User": 50590507314324, - "Key": "nodekey:b4566fef38b3b2b15684fc8890f5fbaea4525b467825f57a02801969a5ed2b7b", - "DiscoKey": "discokey:368ba711a8394633b4626eb7cd8e6a2df90d8e554505dc032ea9658ceee0f731", - "Addresses": ["100.109.43.124/32", "fd7a:115c:a1e0::a537:2b7c/128"], - "AllowedIPs": ["100.109.43.124/32", "fd7a:115c:a1e0::a537:2b7c/128", "10.44.0.0/16"], - "Endpoints": ["77.164.248.136:34130", "10.65.0.27:34130", "172.17.0.1:34130"], - "Hostinfo": { - "Hostname": "router-a", - "RoutableIPs": ["10.44.0.0/16"], - "RequestTags": ["tag:router-a"], - "Services": [ - { "Proto": "peerapi4", "Port": 49439 }, - { "Proto": "peerapi6", "Port": 49439 }, - { "Proto": "peerapi-dns-proxy", "Port": 1 } - ] - }, - "Created": "2026-03-28T10:38:11.734910312Z", - "Tags": ["tag:router-a"], - "PrimaryRoutes": ["10.44.0.0/16"], - "MachineAuthorized": true, - "CapMap": { - "https://tailscale.com/cap/file-sharing": null, - "https://tailscale.com/cap/is-owner": null, - "https://tailscale.com/cap/ssh": null, - "https://tailscale.com/cap/tailnet-lock": null, - "probe-udp-lifetime": null, - "ssh-behavior-v1": null, - "ssh-env-vars": null, - "store-appc-routes": null, - "tailnet-display-name": ["kratail2tid@passkey"] - }, - "ComputedName": "router-a", - "ComputedNameWithHost": "router-a" - }, - "AllCaps": [ - "https://tailscale.com/cap/tailnet-lock", - "probe-udp-lifetime", - "ssh-env-vars", - "https://tailscale.com/cap/file-sharing", - "https://tailscale.com/cap/is-owner", - "https://tailscale.com/cap/ssh", - "ssh-behavior-v1", - "store-appc-routes", - "tailnet-display-name" - ], - "NodeKey": "nodekey:b4566fef38b3b2b15684fc8890f5fbaea4525b467825f57a02801969a5ed2b7b", - "MachineKey": "mkey:868ba8a45654990c1c153c5ce33ef50ddd8d769841335e42decda4462d1dcf4e", "Peers": [], - "DNS": { - "Routes": { - "tail78f774.ts.net.": null, - "ts.net.": [{ "Addr": "199.247.155.53" }, { "Addr": "2620:111:8007::53" }] - }, - "Domains": ["tail78f774.ts.net"], - "Proxied": true, - "ExitNodeFilteredSet": [".ts.net", ".tailscale.net"] - }, - "PacketFilter": [], - "PacketFilterRules": null, - "SSHPolicy": { "rules": [] }, - "CollectServices": false, - "DERPMap": { - "Regions": { - "1": { - "RegionID": 1, - "RegionCode": "nyc", - "RegionName": "New York City", - "Latitude": 40.7128, - "Longitude": -74.006, - "Nodes": [ - { - "Name": "1h", - "RegionID": 1, - "HostName": "derp1h.tailscale.com", - "IPv4": "199.38.181.93", - "IPv6": "2607:f740:f::afd", - "CanPort80": true - }, - { - "Name": "1g", - "RegionID": 1, - "HostName": "derp1g.tailscale.com", - "IPv4": "209.177.145.120", - "IPv6": "2607:f740:f::3eb", - "CanPort80": true - }, - { - "Name": "1i", - "RegionID": 1, - "HostName": "derp1i.tailscale.com", - "IPv4": "199.38.181.103", - "IPv6": "2607:f740:f::e19", - "CanPort80": true - }, - { - "Name": "1f", - "RegionID": 1, - "HostName": "derp1f.tailscale.com", - "IPv4": "199.38.181.104", - "IPv6": "2607:f740:f::bc", - "CanPort80": true - } - ] - }, - "10": { - "RegionID": 10, - "RegionCode": "sea", - "RegionName": "Seattle", - "Latitude": 47.609722, - "Longitude": -122.333056, - "Nodes": [ - { - "Name": "10c", - "RegionID": 10, - "HostName": "derp10c.tailscale.com", - "IPv4": "192.73.240.121", - "IPv6": "2607:f740:14::40c", - "CanPort80": true - }, - { - "Name": "10d", - "RegionID": 10, - "HostName": "derp10d.tailscale.com", - "IPv4": "192.73.240.132", - "IPv6": "2607:f740:14::500", - "CanPort80": true - }, - { - "Name": "10b", - "RegionID": 10, - "HostName": "derp10b.tailscale.com", - "IPv4": "192.73.240.161", - "IPv6": "2607:f740:14::61c", - "CanPort80": true - } - ] - }, - "11": { - "RegionID": 11, - "RegionCode": "sao", - "RegionName": "São Paulo", - "Latitude": -23.55, - "Longitude": -46.633333, - "Nodes": [ - { - "Name": "11f", - "RegionID": 11, - "HostName": "derp11f.tailscale.com", - "IPv4": "172.237.61.197", - "IPv6": "2600:3c0d::2000:3bff:fe44:6166", - "CanPort80": true - }, - { - "Name": "11g", - "RegionID": 11, - "HostName": "derp11g.tailscale.com", - "IPv4": "172.237.61.190", - "IPv6": "2600:3c0d::2000:62ff:febe:2e67", - "CanPort80": true - }, - { - "Name": "11e", - "RegionID": 11, - "HostName": "derp11e.tailscale.com", - "IPv4": "172.237.61.194", - "IPv6": "2600:3c0d::2000:d2ff:fe43:1790", - "CanPort80": true - } - ] - }, - "12": { - "RegionID": 12, - "RegionCode": "ord", - "RegionName": "Chicago", - "Latitude": 41.881944, - "Longitude": -87.627778, - "Nodes": [ - { - "Name": "12e", - "RegionID": 12, - "HostName": "derp12e.tailscale.com", - "IPv4": "209.177.158.15", - "IPv6": "2607:f740:e::b17", - "CanPort80": true - }, - { - "Name": "12f", - "RegionID": 12, - "HostName": "derp12f.tailscale.com", - "IPv4": "199.38.182.118", - "IPv6": "2607:f740:e::4c8", - "CanPort80": true - }, - { - "Name": "12d", - "RegionID": 12, - "HostName": "derp12d.tailscale.com", - "IPv4": "209.177.158.246", - "IPv6": "2607:f740:e::811", - "CanPort80": true - } - ] - }, - "13": { - "RegionID": 13, - "RegionCode": "den", - "RegionName": "Denver", - "Latitude": 39.7392, - "Longitude": -104.9849, - "Nodes": [ - { - "Name": "13c", - "RegionID": 13, - "HostName": "derp13c.tailscale.com", - "IPv4": "192.73.242.28", - "IPv6": "2607:f740:16::5c", - "CanPort80": true - }, - { - "Name": "13d", - "RegionID": 13, - "HostName": "derp13d.tailscale.com", - "IPv4": "192.73.242.204", - "IPv6": "2607:f740:16::c23", - "CanPort80": true - }, - { - "Name": "13b", - "RegionID": 13, - "HostName": "derp13b.tailscale.com", - "IPv4": "192.73.242.187", - "IPv6": "2607:f740:16::640", - "CanPort80": true - } - ] - }, - "14": { - "RegionID": 14, - "RegionCode": "ams", - "RegionName": "Amsterdam", - "Latitude": 52.372778, - "Longitude": 4.893611, - "Nodes": [ - { - "Name": "14c", - "RegionID": 14, - "HostName": "derp14c.tailscale.com", - "IPv4": "176.58.93.147", - "IPv6": "2a00:dd80:3c::b09", - "CanPort80": true - }, - { - "Name": "14d", - "RegionID": 14, - "HostName": "derp14d.tailscale.com", - "IPv4": "176.58.93.154", - "IPv6": "2a00:dd80:3c::3d5", - "CanPort80": true - }, - { - "Name": "14b", - "RegionID": 14, - "HostName": "derp14b.tailscale.com", - "IPv4": "176.58.93.248", - "IPv6": "2a00:dd80:3c::807", - "CanPort80": true - } - ] - }, - "15": { - "RegionID": 15, - "RegionCode": "jnb", - "RegionName": "Johannesburg", - "Latitude": -26.204444, - "Longitude": 28.045556, - "Nodes": [ - { - "Name": "15c", - "RegionID": 15, - "HostName": "derp15c.tailscale.com", - "IPv4": "102.67.165.185", - "IPv6": "2c0f:edb0:0:10::b59", - "CanPort80": true - }, - { - "Name": "15d", - "RegionID": 15, - "HostName": "derp15d.tailscale.com", - "IPv4": "102.67.165.36", - "IPv6": "2c0f:edb0:0:10::599", - "CanPort80": true - }, - { - "Name": "15b", - "RegionID": 15, - "HostName": "derp15b.tailscale.com", - "IPv4": "102.67.165.90", - "IPv6": "2c0f:edb0:0:10::963", - "CanPort80": true - } - ] - }, - "16": { - "RegionID": 16, - "RegionCode": "mia", - "RegionName": "Miami", - "Latitude": 25.78, - "Longitude": -80.21, - "Nodes": [ - { - "Name": "16c", - "RegionID": 16, - "HostName": "derp16c.tailscale.com", - "IPv4": "192.73.243.229", - "IPv6": "2607:f740:17::4e4", - "CanPort80": true - }, - { - "Name": "16d", - "RegionID": 16, - "HostName": "derp16d.tailscale.com", - "IPv4": "192.73.243.141", - "IPv6": "2607:f740:17::475", - "CanPort80": true - }, - { - "Name": "16b", - "RegionID": 16, - "HostName": "derp16b.tailscale.com", - "IPv4": "192.73.243.135", - "IPv6": "2607:f740:17::476", - "CanPort80": true - } - ] - }, - "17": { - "RegionID": 17, - "RegionCode": "lax", - "RegionName": "Los Angeles", - "Latitude": 34.05, - "Longitude": -118.25, - "Nodes": [ - { - "Name": "17c", - "RegionID": 17, - "HostName": "derp17c.tailscale.com", - "IPv4": "208.111.40.12", - "IPv6": "2607:f740:c::10", - "CanPort80": true - }, - { - "Name": "17d", - "RegionID": 17, - "HostName": "derp17d.tailscale.com", - "IPv4": "208.111.40.216", - "IPv6": "2607:f740:c::e1b", - "CanPort80": true - }, - { - "Name": "17b", - "RegionID": 17, - "HostName": "derp17b.tailscale.com", - "IPv4": "192.73.244.245", - "IPv6": "2607:f740:c::646", - "CanPort80": true - } - ] - }, - "18": { - "RegionID": 18, - "RegionCode": "par", - "RegionName": "Paris", - "Latitude": 48.856667, - "Longitude": 2.352222, - "Nodes": [ - { - "Name": "18c", - "RegionID": 18, - "HostName": "derp18c.tailscale.com", - "IPv4": "176.58.90.207", - "IPv6": "2a00:dd80:3e::c19", - "CanPort80": true - }, - { - "Name": "18d", - "RegionID": 18, - "HostName": "derp18d.tailscale.com", - "IPv4": "176.58.90.104", - "IPv6": "2a00:dd80:3e::f2e", - "CanPort80": true - }, - { - "Name": "18b", - "RegionID": 18, - "HostName": "derp18b.tailscale.com", - "IPv4": "176.58.90.147", - "IPv6": "2a00:dd80:3e::363", - "CanPort80": true - } - ] - }, - "19": { - "RegionID": 19, - "RegionCode": "mad", - "RegionName": "Madrid", - "Latitude": 40.416944, - "Longitude": -3.703333, - "Nodes": [ - { - "Name": "19c", - "RegionID": 19, - "HostName": "derp19c.tailscale.com", - "IPv4": "45.159.97.61", - "IPv6": "2a00:dd80:14:10::20", - "CanPort80": true - }, - { - "Name": "19d", - "RegionID": 19, - "HostName": "derp19d.tailscale.com", - "IPv4": "45.159.97.233", - "IPv6": "2a00:dd80:14:10::34a", - "CanPort80": true - }, - { - "Name": "19b", - "RegionID": 19, - "HostName": "derp19b.tailscale.com", - "IPv4": "45.159.97.144", - "IPv6": "2a00:dd80:14:10::335", - "CanPort80": true - } - ] - }, - "2": { - "RegionID": 2, - "RegionCode": "sfo", - "RegionName": "San Francisco", - "Latitude": 37.7775, - "Longitude": -122.416389, - "Nodes": [ - { - "Name": "2e", - "RegionID": 2, - "HostName": "derp2e.tailscale.com", - "IPv4": "192.73.252.134", - "IPv6": "2607:f740:0:3f::44c", - "CanPort80": true - }, - { - "Name": "2f", - "RegionID": 2, - "HostName": "derp2f.tailscale.com", - "IPv4": "208.111.34.178", - "IPv6": "2607:f740:0:3f::f4", - "CanPort80": true - }, - { - "Name": "2d", - "RegionID": 2, - "HostName": "derp2d.tailscale.com", - "IPv4": "192.73.252.65", - "IPv6": "2607:f740:0:3f::287", - "CanPort80": true - } - ] - }, - "20": { - "RegionID": 20, - "RegionCode": "hkg", - "RegionName": "Hong Kong", - "Latitude": 22.3193, - "Longitude": 114.1694, - "Nodes": [ - { - "Name": "20c", - "RegionID": 20, - "HostName": "derp20c.tailscale.com", - "IPv4": "205.147.105.30", - "IPv6": "2403:2500:8000:1::5fb", - "CanPort80": true - }, - { - "Name": "20d", - "RegionID": 20, - "HostName": "derp20d.tailscale.com", - "IPv4": "205.147.105.78", - "IPv6": "2403:2500:8000:1::e9a", - "CanPort80": true - }, - { - "Name": "20b", - "RegionID": 20, - "HostName": "derp20b.tailscale.com", - "IPv4": "103.6.84.152", - "IPv6": "2403:2500:8000:1::ef6", - "CanPort80": true - } - ] - }, - "21": { - "RegionID": 21, - "RegionCode": "tor", - "RegionName": "Toronto", - "Latitude": 43.741667, - "Longitude": -79.373333, - "Nodes": [ - { - "Name": "21c", - "RegionID": 21, - "HostName": "derp21c.tailscale.com", - "IPv4": "162.248.221.215", - "IPv6": "2607:f740:50::f10", - "CanPort80": true - }, - { - "Name": "21d", - "RegionID": 21, - "HostName": "derp21d.tailscale.com", - "IPv4": "162.248.221.248", - "IPv6": "2607:f740:50::ca4", - "CanPort80": true - }, - { - "Name": "21b", - "RegionID": 21, - "HostName": "derp21b.tailscale.com", - "IPv4": "162.248.221.199", - "IPv6": "2607:f740:50::1d1", - "CanPort80": true - } - ] - }, - "22": { - "RegionID": 22, - "RegionCode": "waw", - "RegionName": "Warsaw", - "Latitude": 52.23, - "Longitude": 21.011111, - "Nodes": [ - { - "Name": "22c", - "RegionID": 22, - "HostName": "derp22c.tailscale.com", - "IPv4": "45.159.98.253", - "IPv6": "2a00:dd80:40:100::3f", - "CanPort80": true - }, - { - "Name": "22d", - "RegionID": 22, - "HostName": "derp22d.tailscale.com", - "IPv4": "45.159.98.145", - "IPv6": "2a00:dd80:40:100::211", - "CanPort80": true - }, - { - "Name": "22b", - "RegionID": 22, - "HostName": "derp22b.tailscale.com", - "IPv4": "45.159.98.196", - "IPv6": "2a00:dd80:40:100::316", - "CanPort80": true - } - ] - }, - "23": { - "RegionID": 23, - "RegionCode": "dbi", - "RegionName": "Dubai", - "Latitude": 25.263056, - "Longitude": 55.297222, - "Nodes": [ - { - "Name": "23c", - "RegionID": 23, - "HostName": "derp23c.tailscale.com", - "IPv4": "185.34.3.207", - "IPv6": "2a00:dd80:3f:100::a50", - "CanPort80": true - }, - { - "Name": "23d", - "RegionID": 23, - "HostName": "derp23d.tailscale.com", - "IPv4": "185.34.3.75", - "IPv6": "2a00:dd80:3f:100::97e", - "CanPort80": true - }, - { - "Name": "23b", - "RegionID": 23, - "HostName": "derp23b.tailscale.com", - "IPv4": "185.34.3.232", - "IPv6": "2a00:dd80:3f:100::76f", - "CanPort80": true - } - ] - }, - "24": { - "RegionID": 24, - "RegionCode": "hnl", - "RegionName": "Honolulu", - "Latitude": 21.306944, - "Longitude": -157.858333, - "Nodes": [ - { - "Name": "24c", - "RegionID": 24, - "HostName": "derp24c.tailscale.com", - "IPv4": "208.83.233.233", - "IPv6": "2001:19f0:c000:c591:5400:04ff:fe26:2c5f", - "CanPort80": true - }, - { - "Name": "24d", - "RegionID": 24, - "HostName": "derp24d.tailscale.com", - "IPv4": "208.72.155.133", - "IPv6": "2001:19f0:c000:c564:5400:04ff:fe26:2ba8", - "CanPort80": true - }, - { - "Name": "24b", - "RegionID": 24, - "HostName": "derp24b.tailscale.com", - "IPv4": "208.83.234.151", - "IPv6": "2001:19f0:c000:c586:5400:04ff:fe26:2ba6", - "CanPort80": true - } - ] - }, - "25": { - "RegionID": 25, - "RegionCode": "nai", - "RegionName": "Nairobi", - "Latitude": -1.286389, - "Longitude": 36.817222, - "Nodes": [ - { - "Name": "25c", - "RegionID": 25, - "HostName": "derp25c.tailscale.com", - "IPv4": "102.67.167.37", - "IPv6": "2c0f:edb0:2000:1::2c7", - "CanPort80": true - }, - { - "Name": "25d", - "RegionID": 25, - "HostName": "derp25d.tailscale.com", - "IPv4": "102.67.167.188", - "IPv6": "2c0f:edb0:2000:1::188", - "CanPort80": true - }, - { - "Name": "25b", - "RegionID": 25, - "HostName": "derp25b.tailscale.com", - "IPv4": "102.67.167.245", - "IPv6": "2c0f:edb0:2000:1::2e9", - "CanPort80": true - } - ] - }, - "26": { - "RegionID": 26, - "RegionCode": "nue", - "RegionName": "Nuremberg", - "Latitude": 49.453889, - "Longitude": 11.0775, - "Nodes": [ - { - "Name": "26c", - "RegionID": 26, - "HostName": "derp26c.tailscale.com", - "IPv4": "49.12.193.137", - "IPv6": "2a01:4f8:1c1c:5c70::1", - "CanPort80": true - }, - { - "Name": "26d", - "RegionID": 26, - "HostName": "derp26d.tailscale.com", - "IPv4": "49.13.204.141", - "IPv6": "2a01:4f8:1c0c:7d06::1", - "CanPort80": true - }, - { - "Name": "26b", - "RegionID": 26, - "HostName": "derp26b.tailscale.com", - "IPv4": "167.235.72.200", - "IPv6": "2a01:4f8:1c1c:47b6::1", - "CanPort80": true - } - ] - }, - "27": { - "RegionID": 27, - "RegionCode": "iad", - "RegionName": "Ashburn", - "Latitude": 39.03, - "Longitude": -77.471111, - "Nodes": [ - { - "Name": "27d", - "RegionID": 27, - "HostName": "derp27d.tailscale.com", - "IPv4": "178.156.152.106", - "IPv6": "2a01:4ff:f0:3c8e::1", - "CanPort80": true - }, - { - "Name": "27c", - "RegionID": 27, - "HostName": "derp27c.tailscale.com", - "IPv4": "178.156.152.91", - "IPv6": "2a01:4ff:f0:3913::1", - "CanPort80": true - }, - { - "Name": "27e", - "RegionID": 27, - "HostName": "derp27e.tailscale.com", - "IPv4": "178.156.134.232", - "IPv6": "2a01:4ff:f0:28d4::1", - "CanPort80": true - }, - { - "Name": "27b", - "RegionID": 27, - "HostName": "derp27b.tailscale.com", - "IPv4": "5.161.218.233", - "IPv6": "2a01:4ff:f0:3db9::1", - "CanPort80": true - } - ] - }, - "28": { - "RegionID": 28, - "RegionCode": "hel", - "RegionName": "Helsinki", - "Latitude": 60.170833, - "Longitude": 24.9375, - "Nodes": [ - { - "Name": "28c", - "RegionID": 28, - "HostName": "derp28c.tailscale.com", - "IPv4": "95.217.2.165", - "IPv6": "2a01:4f9:c012:cd74::1", - "CanPort80": true - }, - { - "Name": "28d", - "RegionID": 28, - "HostName": "derp28d.tailscale.com", - "IPv4": "157.180.28.32", - "IPv6": "2a01:4f9:c012:2e5b::1", - "CanPort80": true - }, - { - "Name": "28b", - "RegionID": 28, - "HostName": "derp28b.tailscale.com", - "IPv4": "65.109.143.62", - "IPv6": "2a01:4f9:c012:d55c::1", - "CanPort80": true - } - ] - }, - "3": { - "RegionID": 3, - "RegionCode": "sin", - "RegionName": "Singapore", - "Latitude": 1.3521, - "Longitude": 103.8198, - "Nodes": [ - { - "Name": "3g", - "RegionID": 3, - "HostName": "derp3g.tailscale.com", - "IPv4": "172.237.72.79", - "IPv6": "2600:3c15::2000:adff:fe08:6fab", - "CanPort80": true - }, - { - "Name": "3f", - "RegionID": 3, - "HostName": "derp3f.tailscale.com", - "IPv4": "172.237.72.8", - "IPv6": "2600:3c15::2000:53ff:fe48:a668", - "CanPort80": true - }, - { - "Name": "3h", - "RegionID": 3, - "HostName": "derp3h.tailscale.com", - "IPv4": "172.237.66.30", - "IPv6": "2600:3c15::2000:3dff:fe44:50aa", - "CanPort80": true - }, - { - "Name": "3e", - "RegionID": 3, - "HostName": "derp3e.tailscale.com", - "IPv4": "172.237.72.43", - "IPv6": "2600:3c15::2000:6cff:fee4:d799", - "CanPort80": true - } - ] - }, - "4": { - "RegionID": 4, - "RegionCode": "fra", - "RegionName": "Frankfurt", - "Latitude": 50.1109, - "Longitude": 8.6821, - "Nodes": [ - { - "Name": "4h", - "RegionID": 4, - "HostName": "derp4h.tailscale.com", - "IPv4": "185.40.234.77", - "IPv6": "2a00:dd80:20::bcf", - "CanPort80": true - }, - { - "Name": "4g", - "RegionID": 4, - "HostName": "derp4g.tailscale.com", - "IPv4": "185.40.234.113", - "IPv6": "2a00:dd80:20::8f", - "CanPort80": true - }, - { - "Name": "4i", - "RegionID": 4, - "HostName": "derp4i.tailscale.com", - "IPv4": "185.40.234.53", - "IPv6": "2a00:dd80:20::8a6", - "CanPort80": true - }, - { - "Name": "4f", - "RegionID": 4, - "HostName": "derp4f.tailscale.com", - "IPv4": "185.40.234.219", - "IPv6": "2a00:dd80:20::a25", - "CanPort80": true - } - ] - }, - "5": { - "RegionID": 5, - "RegionCode": "syd", - "RegionName": "Sydney", - "Latitude": -33.867778, - "Longitude": 151.21, - "Nodes": [ - { - "Name": "5f", - "RegionID": 5, - "HostName": "derp5f.tailscale.com", - "IPv4": "172.105.166.103", - "IPv6": "2400:8907::2000:ccff:fe1f:80da", - "CanPort80": true - }, - { - "Name": "5g", - "RegionID": 5, - "HostName": "derp5g.tailscale.com", - "IPv4": "172.105.169.57", - "IPv6": "2400:8907::2000:2fff:fea7:57f4", - "CanPort80": true - }, - { - "Name": "5e", - "RegionID": 5, - "HostName": "derp5e.tailscale.com", - "IPv4": "172.105.179.230", - "IPv6": "2400:8907::2000:ceff:fe8d:4f4e", - "CanPort80": true - } - ] - }, - "6": { - "RegionID": 6, - "RegionCode": "blr", - "RegionName": "Bengaluru", - "Latitude": 12.9716, - "Longitude": 77.5946, - "Nodes": [ - { - "Name": "6a", - "RegionID": 6, - "HostName": "derp6.tailscale.com", - "IPv4": "68.183.90.120", - "IPv6": "2400:6180:100:d0::982:d001", - "CanPort80": true - } - ] - }, - "7": { - "RegionID": 7, - "RegionCode": "tok", - "RegionName": "Tokyo", - "Latitude": 35.6764, - "Longitude": 139.65, - "Nodes": [ - { - "Name": "7g", - "RegionID": 7, - "HostName": "derp7g.tailscale.com", - "IPv4": "172.238.6.179", - "IPv6": "2600:3c18::2000:3fff:fe80:3ebd", - "CanPort80": true - }, - { - "Name": "7f", - "RegionID": 7, - "HostName": "derp7f.tailscale.com", - "IPv4": "172.238.6.34", - "IPv6": "2600:3c18::2000:acff:fe8e:3ed5", - "CanPort80": true - }, - { - "Name": "7h", - "RegionID": 7, - "HostName": "derp7h.tailscale.com", - "IPv4": "172.237.28.183", - "IPv6": "2600:3c18::2000:b1ff:fea9:4560", - "CanPort80": true - }, - { - "Name": "7e", - "RegionID": 7, - "HostName": "derp7e.tailscale.com", - "IPv4": "172.238.6.180", - "IPv6": "2600:3c18::2000:60ff:fe0f:6e83", - "STUNOnly": true, - "CanPort80": true - } - ] - }, - "8": { - "RegionID": 8, - "RegionCode": "lhr", - "RegionName": "London", - "Latitude": 51.5072, - "Longitude": 0.1276, - "Nodes": [ - { - "Name": "8f", - "RegionID": 8, - "HostName": "derp8f.tailscale.com", - "IPv4": "176.58.88.183", - "IPv6": "2a00:dd80:3a::dfa", - "CanPort80": true - }, - { - "Name": "8g", - "RegionID": 8, - "HostName": "derp8g.tailscale.com", - "IPv4": "176.58.92.254", - "IPv6": "2a00:dd80:3a::ed", - "CanPort80": true - }, - { - "Name": "8e", - "RegionID": 8, - "HostName": "derp8e.tailscale.com", - "IPv4": "176.58.92.144", - "IPv6": "2a00:dd80:3a::b33", - "CanPort80": true - } - ] - }, - "9": { - "RegionID": 9, - "RegionCode": "dfw", - "RegionName": "Dallas", - "Latitude": 32.779167, - "Longitude": -96.808889, - "Nodes": [ - { - "Name": "9e", - "RegionID": 9, - "HostName": "derp9e.tailscale.com", - "IPv4": "192.73.248.83", - "IPv6": "2607:f740:100::359", - "CanPort80": true - }, - { - "Name": "9f", - "RegionID": 9, - "HostName": "derp9f.tailscale.com", - "IPv4": "209.177.156.197", - "IPv6": "2607:f740:100::cad", - "CanPort80": true - }, - { - "Name": "9d", - "RegionID": 9, - "HostName": "derp9d.tailscale.com", - "IPv4": "209.177.156.94", - "IPv6": "2607:f740:100::c05", - "CanPort80": true - } - ] - } - } - }, - "DisplayMessages": null, - "TKAEnabled": false, - "TKAHead": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", - "Domain": "kratail2tid@passkey", - "DomainAuditLogID": "", - "UserProfiles": { - "50590507314324": { - "ID": 50590507314324, - "LoginName": "router-a.tail78f774.ts.net", - "DisplayName": "router-a" - } - } + "PacketFilterRules": null } }, "router-b": { - "commands": { - "packet_filter_rules": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/router-b/tailscaled.sock debug localapi POST debug-packet-filter-rules", - "packet_filter_matches": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/router-b/tailscaled.sock debug localapi POST debug-packet-filter-matches" - }, "packet_filter_rules": null, - "packet_filter_matches": [], - "whois": { - "100.124.195.93": { - "peer_name": "exit-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/router-b/tailscaled.sock whois --json 100.124.195.93", - "response": null - }, - "100.116.18.24": { - "peer_name": "exit-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/router-b/tailscaled.sock whois --json 100.116.18.24", - "response": null - }, - "100.85.66.106": { - "peer_name": "exit-node", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/router-b/tailscaled.sock whois --json 100.85.66.106", - "response": null - }, - "100.107.162.14": { - "peer_name": "group-a-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/router-b/tailscaled.sock whois --json 100.107.162.14", - "response": null - }, - "100.77.135.18": { - "peer_name": "group-b-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/router-b/tailscaled.sock whois --json 100.77.135.18", - "response": null - }, - "100.105.127.107": { - "peer_name": "multi-exit-router", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/router-b/tailscaled.sock whois --json 100.105.127.107", - "response": null - }, - "100.109.43.124": { - "peer_name": "router-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/router-b/tailscaled.sock whois --json 100.109.43.124", - "response": null - }, - "100.92.142.61": { - "peer_name": "subnet-router", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/router-b/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/router-b/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/router-b/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/router-b/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/router-b/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/router-b/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/router-b/tailscaled.sock whois --json 100.90.199.68", - "response": null - } - }, "netmap": { - "SelfNode": { - "ID": 1399889648409786, - "StableID": "nPHvXBj1wB11CNTRL", - "Name": "router-b.tail78f774.ts.net.", - "User": 1399889648409786, - "Key": "nodekey:4e6d3473c516cea37bcefdf4368932c623fd91c24aee1aacc27ca8165a41ac7a", - "DiscoKey": "discokey:dd5532635b8e3ddf25186e36671c16dd17c005c8b6a6862f4b5cc4e4f459e705", - "Addresses": ["100.65.172.123/32", "fd7a:115c:a1e0::5a37:ac7c/128"], - "AllowedIPs": ["100.65.172.123/32", "fd7a:115c:a1e0::5a37:ac7c/128", "10.55.0.0/16"], - "Endpoints": ["77.164.248.136:35931", "10.65.0.27:35931", "172.17.0.1:35931"], - "Hostinfo": { - "Hostname": "router-b", - "RoutableIPs": ["10.55.0.0/16"], - "RequestTags": ["tag:router-b"], - "Services": [ - { "Proto": "peerapi4", "Port": 58804 }, - { "Proto": "peerapi6", "Port": 58804 }, - { "Proto": "peerapi-dns-proxy", "Port": 1 } - ] - }, - "Created": "2026-03-28T10:38:15.42735258Z", - "Tags": ["tag:router-b"], - "PrimaryRoutes": ["10.55.0.0/16"], - "MachineAuthorized": true, - "CapMap": { - "https://tailscale.com/cap/file-sharing": null, - "https://tailscale.com/cap/is-owner": null, - "https://tailscale.com/cap/ssh": null, - "https://tailscale.com/cap/tailnet-lock": null, - "probe-udp-lifetime": null, - "ssh-behavior-v1": null, - "ssh-env-vars": null, - "store-appc-routes": null, - "tailnet-display-name": ["kratail2tid@passkey"] - }, - "ComputedName": "router-b", - "ComputedNameWithHost": "router-b" - }, - "AllCaps": [ - "https://tailscale.com/cap/ssh", - "ssh-env-vars", - "tailnet-display-name", - "probe-udp-lifetime", - "store-appc-routes", - "https://tailscale.com/cap/tailnet-lock", - "https://tailscale.com/cap/file-sharing", - "ssh-behavior-v1", - "https://tailscale.com/cap/is-owner" - ], - "NodeKey": "nodekey:4e6d3473c516cea37bcefdf4368932c623fd91c24aee1aacc27ca8165a41ac7a", - "MachineKey": "mkey:d040ca033391d3dedae7b2ad7ec3334646cda7aeca501780bdaa37addec3c228", "Peers": [], - "DNS": { - "Routes": { - "tail78f774.ts.net.": null, - "ts.net.": [{ "Addr": "199.247.155.53" }, { "Addr": "2620:111:8007::53" }] - }, - "Domains": ["tail78f774.ts.net"], - "Proxied": true, - "ExitNodeFilteredSet": [".ts.net", ".tailscale.net"] - }, - "PacketFilter": [], - "PacketFilterRules": null, - "SSHPolicy": { "rules": [] }, - "CollectServices": false, - "DERPMap": { - "Regions": { - "1": { - "RegionID": 1, - "RegionCode": "nyc", - "RegionName": "New York City", - "Latitude": 40.7128, - "Longitude": -74.006, - "Nodes": [ - { - "Name": "1h", - "RegionID": 1, - "HostName": "derp1h.tailscale.com", - "IPv4": "199.38.181.93", - "IPv6": "2607:f740:f::afd", - "CanPort80": true - }, - { - "Name": "1g", - "RegionID": 1, - "HostName": "derp1g.tailscale.com", - "IPv4": "209.177.145.120", - "IPv6": "2607:f740:f::3eb", - "CanPort80": true - }, - { - "Name": "1i", - "RegionID": 1, - "HostName": "derp1i.tailscale.com", - "IPv4": "199.38.181.103", - "IPv6": "2607:f740:f::e19", - "CanPort80": true - }, - { - "Name": "1f", - "RegionID": 1, - "HostName": "derp1f.tailscale.com", - "IPv4": "199.38.181.104", - "IPv6": "2607:f740:f::bc", - "CanPort80": true - } - ] - }, - "10": { - "RegionID": 10, - "RegionCode": "sea", - "RegionName": "Seattle", - "Latitude": 47.609722, - "Longitude": -122.333056, - "Nodes": [ - { - "Name": "10c", - "RegionID": 10, - "HostName": "derp10c.tailscale.com", - "IPv4": "192.73.240.121", - "IPv6": "2607:f740:14::40c", - "CanPort80": true - }, - { - "Name": "10d", - "RegionID": 10, - "HostName": "derp10d.tailscale.com", - "IPv4": "192.73.240.132", - "IPv6": "2607:f740:14::500", - "CanPort80": true - }, - { - "Name": "10b", - "RegionID": 10, - "HostName": "derp10b.tailscale.com", - "IPv4": "192.73.240.161", - "IPv6": "2607:f740:14::61c", - "CanPort80": true - } - ] - }, - "11": { - "RegionID": 11, - "RegionCode": "sao", - "RegionName": "São Paulo", - "Latitude": -23.55, - "Longitude": -46.633333, - "Nodes": [ - { - "Name": "11f", - "RegionID": 11, - "HostName": "derp11f.tailscale.com", - "IPv4": "172.237.61.197", - "IPv6": "2600:3c0d::2000:3bff:fe44:6166", - "CanPort80": true - }, - { - "Name": "11g", - "RegionID": 11, - "HostName": "derp11g.tailscale.com", - "IPv4": "172.237.61.190", - "IPv6": "2600:3c0d::2000:62ff:febe:2e67", - "CanPort80": true - }, - { - "Name": "11e", - "RegionID": 11, - "HostName": "derp11e.tailscale.com", - "IPv4": "172.237.61.194", - "IPv6": "2600:3c0d::2000:d2ff:fe43:1790", - "CanPort80": true - } - ] - }, - "12": { - "RegionID": 12, - "RegionCode": "ord", - "RegionName": "Chicago", - "Latitude": 41.881944, - "Longitude": -87.627778, - "Nodes": [ - { - "Name": "12e", - "RegionID": 12, - "HostName": "derp12e.tailscale.com", - "IPv4": "209.177.158.15", - "IPv6": "2607:f740:e::b17", - "CanPort80": true - }, - { - "Name": "12f", - "RegionID": 12, - "HostName": "derp12f.tailscale.com", - "IPv4": "199.38.182.118", - "IPv6": "2607:f740:e::4c8", - "CanPort80": true - }, - { - "Name": "12d", - "RegionID": 12, - "HostName": "derp12d.tailscale.com", - "IPv4": "209.177.158.246", - "IPv6": "2607:f740:e::811", - "CanPort80": true - } - ] - }, - "13": { - "RegionID": 13, - "RegionCode": "den", - "RegionName": "Denver", - "Latitude": 39.7392, - "Longitude": -104.9849, - "Nodes": [ - { - "Name": "13c", - "RegionID": 13, - "HostName": "derp13c.tailscale.com", - "IPv4": "192.73.242.28", - "IPv6": "2607:f740:16::5c", - "CanPort80": true - }, - { - "Name": "13d", - "RegionID": 13, - "HostName": "derp13d.tailscale.com", - "IPv4": "192.73.242.204", - "IPv6": "2607:f740:16::c23", - "CanPort80": true - }, - { - "Name": "13b", - "RegionID": 13, - "HostName": "derp13b.tailscale.com", - "IPv4": "192.73.242.187", - "IPv6": "2607:f740:16::640", - "CanPort80": true - } - ] - }, - "14": { - "RegionID": 14, - "RegionCode": "ams", - "RegionName": "Amsterdam", - "Latitude": 52.372778, - "Longitude": 4.893611, - "Nodes": [ - { - "Name": "14c", - "RegionID": 14, - "HostName": "derp14c.tailscale.com", - "IPv4": "176.58.93.147", - "IPv6": "2a00:dd80:3c::b09", - "CanPort80": true - }, - { - "Name": "14d", - "RegionID": 14, - "HostName": "derp14d.tailscale.com", - "IPv4": "176.58.93.154", - "IPv6": "2a00:dd80:3c::3d5", - "CanPort80": true - }, - { - "Name": "14b", - "RegionID": 14, - "HostName": "derp14b.tailscale.com", - "IPv4": "176.58.93.248", - "IPv6": "2a00:dd80:3c::807", - "CanPort80": true - } - ] - }, - "15": { - "RegionID": 15, - "RegionCode": "jnb", - "RegionName": "Johannesburg", - "Latitude": -26.204444, - "Longitude": 28.045556, - "Nodes": [ - { - "Name": "15c", - "RegionID": 15, - "HostName": "derp15c.tailscale.com", - "IPv4": "102.67.165.185", - "IPv6": "2c0f:edb0:0:10::b59", - "CanPort80": true - }, - { - "Name": "15d", - "RegionID": 15, - "HostName": "derp15d.tailscale.com", - "IPv4": "102.67.165.36", - "IPv6": "2c0f:edb0:0:10::599", - "CanPort80": true - }, - { - "Name": "15b", - "RegionID": 15, - "HostName": "derp15b.tailscale.com", - "IPv4": "102.67.165.90", - "IPv6": "2c0f:edb0:0:10::963", - "CanPort80": true - } - ] - }, - "16": { - "RegionID": 16, - "RegionCode": "mia", - "RegionName": "Miami", - "Latitude": 25.78, - "Longitude": -80.21, - "Nodes": [ - { - "Name": "16c", - "RegionID": 16, - "HostName": "derp16c.tailscale.com", - "IPv4": "192.73.243.229", - "IPv6": "2607:f740:17::4e4", - "CanPort80": true - }, - { - "Name": "16d", - "RegionID": 16, - "HostName": "derp16d.tailscale.com", - "IPv4": "192.73.243.141", - "IPv6": "2607:f740:17::475", - "CanPort80": true - }, - { - "Name": "16b", - "RegionID": 16, - "HostName": "derp16b.tailscale.com", - "IPv4": "192.73.243.135", - "IPv6": "2607:f740:17::476", - "CanPort80": true - } - ] - }, - "17": { - "RegionID": 17, - "RegionCode": "lax", - "RegionName": "Los Angeles", - "Latitude": 34.05, - "Longitude": -118.25, - "Nodes": [ - { - "Name": "17c", - "RegionID": 17, - "HostName": "derp17c.tailscale.com", - "IPv4": "208.111.40.12", - "IPv6": "2607:f740:c::10", - "CanPort80": true - }, - { - "Name": "17d", - "RegionID": 17, - "HostName": "derp17d.tailscale.com", - "IPv4": "208.111.40.216", - "IPv6": "2607:f740:c::e1b", - "CanPort80": true - }, - { - "Name": "17b", - "RegionID": 17, - "HostName": "derp17b.tailscale.com", - "IPv4": "192.73.244.245", - "IPv6": "2607:f740:c::646", - "CanPort80": true - } - ] - }, - "18": { - "RegionID": 18, - "RegionCode": "par", - "RegionName": "Paris", - "Latitude": 48.856667, - "Longitude": 2.352222, - "Nodes": [ - { - "Name": "18c", - "RegionID": 18, - "HostName": "derp18c.tailscale.com", - "IPv4": "176.58.90.207", - "IPv6": "2a00:dd80:3e::c19", - "CanPort80": true - }, - { - "Name": "18d", - "RegionID": 18, - "HostName": "derp18d.tailscale.com", - "IPv4": "176.58.90.104", - "IPv6": "2a00:dd80:3e::f2e", - "CanPort80": true - }, - { - "Name": "18b", - "RegionID": 18, - "HostName": "derp18b.tailscale.com", - "IPv4": "176.58.90.147", - "IPv6": "2a00:dd80:3e::363", - "CanPort80": true - } - ] - }, - "19": { - "RegionID": 19, - "RegionCode": "mad", - "RegionName": "Madrid", - "Latitude": 40.416944, - "Longitude": -3.703333, - "Nodes": [ - { - "Name": "19c", - "RegionID": 19, - "HostName": "derp19c.tailscale.com", - "IPv4": "45.159.97.61", - "IPv6": "2a00:dd80:14:10::20", - "CanPort80": true - }, - { - "Name": "19d", - "RegionID": 19, - "HostName": "derp19d.tailscale.com", - "IPv4": "45.159.97.233", - "IPv6": "2a00:dd80:14:10::34a", - "CanPort80": true - }, - { - "Name": "19b", - "RegionID": 19, - "HostName": "derp19b.tailscale.com", - "IPv4": "45.159.97.144", - "IPv6": "2a00:dd80:14:10::335", - "CanPort80": true - } - ] - }, - "2": { - "RegionID": 2, - "RegionCode": "sfo", - "RegionName": "San Francisco", - "Latitude": 37.7775, - "Longitude": -122.416389, - "Nodes": [ - { - "Name": "2e", - "RegionID": 2, - "HostName": "derp2e.tailscale.com", - "IPv4": "192.73.252.134", - "IPv6": "2607:f740:0:3f::44c", - "CanPort80": true - }, - { - "Name": "2f", - "RegionID": 2, - "HostName": "derp2f.tailscale.com", - "IPv4": "208.111.34.178", - "IPv6": "2607:f740:0:3f::f4", - "CanPort80": true - }, - { - "Name": "2d", - "RegionID": 2, - "HostName": "derp2d.tailscale.com", - "IPv4": "192.73.252.65", - "IPv6": "2607:f740:0:3f::287", - "CanPort80": true - } - ] - }, - "20": { - "RegionID": 20, - "RegionCode": "hkg", - "RegionName": "Hong Kong", - "Latitude": 22.3193, - "Longitude": 114.1694, - "Nodes": [ - { - "Name": "20c", - "RegionID": 20, - "HostName": "derp20c.tailscale.com", - "IPv4": "205.147.105.30", - "IPv6": "2403:2500:8000:1::5fb", - "CanPort80": true - }, - { - "Name": "20d", - "RegionID": 20, - "HostName": "derp20d.tailscale.com", - "IPv4": "205.147.105.78", - "IPv6": "2403:2500:8000:1::e9a", - "CanPort80": true - }, - { - "Name": "20b", - "RegionID": 20, - "HostName": "derp20b.tailscale.com", - "IPv4": "103.6.84.152", - "IPv6": "2403:2500:8000:1::ef6", - "CanPort80": true - } - ] - }, - "21": { - "RegionID": 21, - "RegionCode": "tor", - "RegionName": "Toronto", - "Latitude": 43.741667, - "Longitude": -79.373333, - "Nodes": [ - { - "Name": "21c", - "RegionID": 21, - "HostName": "derp21c.tailscale.com", - "IPv4": "162.248.221.215", - "IPv6": "2607:f740:50::f10", - "CanPort80": true - }, - { - "Name": "21d", - "RegionID": 21, - "HostName": "derp21d.tailscale.com", - "IPv4": "162.248.221.248", - "IPv6": "2607:f740:50::ca4", - "CanPort80": true - }, - { - "Name": "21b", - "RegionID": 21, - "HostName": "derp21b.tailscale.com", - "IPv4": "162.248.221.199", - "IPv6": "2607:f740:50::1d1", - "CanPort80": true - } - ] - }, - "22": { - "RegionID": 22, - "RegionCode": "waw", - "RegionName": "Warsaw", - "Latitude": 52.23, - "Longitude": 21.011111, - "Nodes": [ - { - "Name": "22c", - "RegionID": 22, - "HostName": "derp22c.tailscale.com", - "IPv4": "45.159.98.253", - "IPv6": "2a00:dd80:40:100::3f", - "CanPort80": true - }, - { - "Name": "22d", - "RegionID": 22, - "HostName": "derp22d.tailscale.com", - "IPv4": "45.159.98.145", - "IPv6": "2a00:dd80:40:100::211", - "CanPort80": true - }, - { - "Name": "22b", - "RegionID": 22, - "HostName": "derp22b.tailscale.com", - "IPv4": "45.159.98.196", - "IPv6": "2a00:dd80:40:100::316", - "CanPort80": true - } - ] - }, - "23": { - "RegionID": 23, - "RegionCode": "dbi", - "RegionName": "Dubai", - "Latitude": 25.263056, - "Longitude": 55.297222, - "Nodes": [ - { - "Name": "23c", - "RegionID": 23, - "HostName": "derp23c.tailscale.com", - "IPv4": "185.34.3.207", - "IPv6": "2a00:dd80:3f:100::a50", - "CanPort80": true - }, - { - "Name": "23d", - "RegionID": 23, - "HostName": "derp23d.tailscale.com", - "IPv4": "185.34.3.75", - "IPv6": "2a00:dd80:3f:100::97e", - "CanPort80": true - }, - { - "Name": "23b", - "RegionID": 23, - "HostName": "derp23b.tailscale.com", - "IPv4": "185.34.3.232", - "IPv6": "2a00:dd80:3f:100::76f", - "CanPort80": true - } - ] - }, - "24": { - "RegionID": 24, - "RegionCode": "hnl", - "RegionName": "Honolulu", - "Latitude": 21.306944, - "Longitude": -157.858333, - "Nodes": [ - { - "Name": "24c", - "RegionID": 24, - "HostName": "derp24c.tailscale.com", - "IPv4": "208.83.233.233", - "IPv6": "2001:19f0:c000:c591:5400:04ff:fe26:2c5f", - "CanPort80": true - }, - { - "Name": "24d", - "RegionID": 24, - "HostName": "derp24d.tailscale.com", - "IPv4": "208.72.155.133", - "IPv6": "2001:19f0:c000:c564:5400:04ff:fe26:2ba8", - "CanPort80": true - }, - { - "Name": "24b", - "RegionID": 24, - "HostName": "derp24b.tailscale.com", - "IPv4": "208.83.234.151", - "IPv6": "2001:19f0:c000:c586:5400:04ff:fe26:2ba6", - "CanPort80": true - } - ] - }, - "25": { - "RegionID": 25, - "RegionCode": "nai", - "RegionName": "Nairobi", - "Latitude": -1.286389, - "Longitude": 36.817222, - "Nodes": [ - { - "Name": "25c", - "RegionID": 25, - "HostName": "derp25c.tailscale.com", - "IPv4": "102.67.167.37", - "IPv6": "2c0f:edb0:2000:1::2c7", - "CanPort80": true - }, - { - "Name": "25d", - "RegionID": 25, - "HostName": "derp25d.tailscale.com", - "IPv4": "102.67.167.188", - "IPv6": "2c0f:edb0:2000:1::188", - "CanPort80": true - }, - { - "Name": "25b", - "RegionID": 25, - "HostName": "derp25b.tailscale.com", - "IPv4": "102.67.167.245", - "IPv6": "2c0f:edb0:2000:1::2e9", - "CanPort80": true - } - ] - }, - "26": { - "RegionID": 26, - "RegionCode": "nue", - "RegionName": "Nuremberg", - "Latitude": 49.453889, - "Longitude": 11.0775, - "Nodes": [ - { - "Name": "26c", - "RegionID": 26, - "HostName": "derp26c.tailscale.com", - "IPv4": "49.12.193.137", - "IPv6": "2a01:4f8:1c1c:5c70::1", - "CanPort80": true - }, - { - "Name": "26d", - "RegionID": 26, - "HostName": "derp26d.tailscale.com", - "IPv4": "49.13.204.141", - "IPv6": "2a01:4f8:1c0c:7d06::1", - "CanPort80": true - }, - { - "Name": "26b", - "RegionID": 26, - "HostName": "derp26b.tailscale.com", - "IPv4": "167.235.72.200", - "IPv6": "2a01:4f8:1c1c:47b6::1", - "CanPort80": true - } - ] - }, - "27": { - "RegionID": 27, - "RegionCode": "iad", - "RegionName": "Ashburn", - "Latitude": 39.03, - "Longitude": -77.471111, - "Nodes": [ - { - "Name": "27d", - "RegionID": 27, - "HostName": "derp27d.tailscale.com", - "IPv4": "178.156.152.106", - "IPv6": "2a01:4ff:f0:3c8e::1", - "CanPort80": true - }, - { - "Name": "27c", - "RegionID": 27, - "HostName": "derp27c.tailscale.com", - "IPv4": "178.156.152.91", - "IPv6": "2a01:4ff:f0:3913::1", - "CanPort80": true - }, - { - "Name": "27e", - "RegionID": 27, - "HostName": "derp27e.tailscale.com", - "IPv4": "178.156.134.232", - "IPv6": "2a01:4ff:f0:28d4::1", - "CanPort80": true - }, - { - "Name": "27b", - "RegionID": 27, - "HostName": "derp27b.tailscale.com", - "IPv4": "5.161.218.233", - "IPv6": "2a01:4ff:f0:3db9::1", - "CanPort80": true - } - ] - }, - "28": { - "RegionID": 28, - "RegionCode": "hel", - "RegionName": "Helsinki", - "Latitude": 60.170833, - "Longitude": 24.9375, - "Nodes": [ - { - "Name": "28c", - "RegionID": 28, - "HostName": "derp28c.tailscale.com", - "IPv4": "95.217.2.165", - "IPv6": "2a01:4f9:c012:cd74::1", - "CanPort80": true - }, - { - "Name": "28d", - "RegionID": 28, - "HostName": "derp28d.tailscale.com", - "IPv4": "157.180.28.32", - "IPv6": "2a01:4f9:c012:2e5b::1", - "CanPort80": true - }, - { - "Name": "28b", - "RegionID": 28, - "HostName": "derp28b.tailscale.com", - "IPv4": "65.109.143.62", - "IPv6": "2a01:4f9:c012:d55c::1", - "CanPort80": true - } - ] - }, - "3": { - "RegionID": 3, - "RegionCode": "sin", - "RegionName": "Singapore", - "Latitude": 1.3521, - "Longitude": 103.8198, - "Nodes": [ - { - "Name": "3g", - "RegionID": 3, - "HostName": "derp3g.tailscale.com", - "IPv4": "172.237.72.79", - "IPv6": "2600:3c15::2000:adff:fe08:6fab", - "CanPort80": true - }, - { - "Name": "3f", - "RegionID": 3, - "HostName": "derp3f.tailscale.com", - "IPv4": "172.237.72.8", - "IPv6": "2600:3c15::2000:53ff:fe48:a668", - "CanPort80": true - }, - { - "Name": "3h", - "RegionID": 3, - "HostName": "derp3h.tailscale.com", - "IPv4": "172.237.66.30", - "IPv6": "2600:3c15::2000:3dff:fe44:50aa", - "CanPort80": true - }, - { - "Name": "3e", - "RegionID": 3, - "HostName": "derp3e.tailscale.com", - "IPv4": "172.237.72.43", - "IPv6": "2600:3c15::2000:6cff:fee4:d799", - "CanPort80": true - } - ] - }, - "4": { - "RegionID": 4, - "RegionCode": "fra", - "RegionName": "Frankfurt", - "Latitude": 50.1109, - "Longitude": 8.6821, - "Nodes": [ - { - "Name": "4h", - "RegionID": 4, - "HostName": "derp4h.tailscale.com", - "IPv4": "185.40.234.77", - "IPv6": "2a00:dd80:20::bcf", - "CanPort80": true - }, - { - "Name": "4g", - "RegionID": 4, - "HostName": "derp4g.tailscale.com", - "IPv4": "185.40.234.113", - "IPv6": "2a00:dd80:20::8f", - "CanPort80": true - }, - { - "Name": "4i", - "RegionID": 4, - "HostName": "derp4i.tailscale.com", - "IPv4": "185.40.234.53", - "IPv6": "2a00:dd80:20::8a6", - "CanPort80": true - }, - { - "Name": "4f", - "RegionID": 4, - "HostName": "derp4f.tailscale.com", - "IPv4": "185.40.234.219", - "IPv6": "2a00:dd80:20::a25", - "CanPort80": true - } - ] - }, - "5": { - "RegionID": 5, - "RegionCode": "syd", - "RegionName": "Sydney", - "Latitude": -33.867778, - "Longitude": 151.21, - "Nodes": [ - { - "Name": "5f", - "RegionID": 5, - "HostName": "derp5f.tailscale.com", - "IPv4": "172.105.166.103", - "IPv6": "2400:8907::2000:ccff:fe1f:80da", - "CanPort80": true - }, - { - "Name": "5g", - "RegionID": 5, - "HostName": "derp5g.tailscale.com", - "IPv4": "172.105.169.57", - "IPv6": "2400:8907::2000:2fff:fea7:57f4", - "CanPort80": true - }, - { - "Name": "5e", - "RegionID": 5, - "HostName": "derp5e.tailscale.com", - "IPv4": "172.105.179.230", - "IPv6": "2400:8907::2000:ceff:fe8d:4f4e", - "CanPort80": true - } - ] - }, - "6": { - "RegionID": 6, - "RegionCode": "blr", - "RegionName": "Bengaluru", - "Latitude": 12.9716, - "Longitude": 77.5946, - "Nodes": [ - { - "Name": "6a", - "RegionID": 6, - "HostName": "derp6.tailscale.com", - "IPv4": "68.183.90.120", - "IPv6": "2400:6180:100:d0::982:d001", - "CanPort80": true - } - ] - }, - "7": { - "RegionID": 7, - "RegionCode": "tok", - "RegionName": "Tokyo", - "Latitude": 35.6764, - "Longitude": 139.65, - "Nodes": [ - { - "Name": "7g", - "RegionID": 7, - "HostName": "derp7g.tailscale.com", - "IPv4": "172.238.6.179", - "IPv6": "2600:3c18::2000:3fff:fe80:3ebd", - "CanPort80": true - }, - { - "Name": "7f", - "RegionID": 7, - "HostName": "derp7f.tailscale.com", - "IPv4": "172.238.6.34", - "IPv6": "2600:3c18::2000:acff:fe8e:3ed5", - "CanPort80": true - }, - { - "Name": "7h", - "RegionID": 7, - "HostName": "derp7h.tailscale.com", - "IPv4": "172.237.28.183", - "IPv6": "2600:3c18::2000:b1ff:fea9:4560", - "CanPort80": true - }, - { - "Name": "7e", - "RegionID": 7, - "HostName": "derp7e.tailscale.com", - "IPv4": "172.238.6.180", - "IPv6": "2600:3c18::2000:60ff:fe0f:6e83", - "STUNOnly": true, - "CanPort80": true - } - ] - }, - "8": { - "RegionID": 8, - "RegionCode": "lhr", - "RegionName": "London", - "Latitude": 51.5072, - "Longitude": 0.1276, - "Nodes": [ - { - "Name": "8f", - "RegionID": 8, - "HostName": "derp8f.tailscale.com", - "IPv4": "176.58.88.183", - "IPv6": "2a00:dd80:3a::dfa", - "CanPort80": true - }, - { - "Name": "8g", - "RegionID": 8, - "HostName": "derp8g.tailscale.com", - "IPv4": "176.58.92.254", - "IPv6": "2a00:dd80:3a::ed", - "CanPort80": true - }, - { - "Name": "8e", - "RegionID": 8, - "HostName": "derp8e.tailscale.com", - "IPv4": "176.58.92.144", - "IPv6": "2a00:dd80:3a::b33", - "CanPort80": true - } - ] - }, - "9": { - "RegionID": 9, - "RegionCode": "dfw", - "RegionName": "Dallas", - "Latitude": 32.779167, - "Longitude": -96.808889, - "Nodes": [ - { - "Name": "9e", - "RegionID": 9, - "HostName": "derp9e.tailscale.com", - "IPv4": "192.73.248.83", - "IPv6": "2607:f740:100::359", - "CanPort80": true - }, - { - "Name": "9f", - "RegionID": 9, - "HostName": "derp9f.tailscale.com", - "IPv4": "209.177.156.197", - "IPv6": "2607:f740:100::cad", - "CanPort80": true - }, - { - "Name": "9d", - "RegionID": 9, - "HostName": "derp9d.tailscale.com", - "IPv4": "209.177.156.94", - "IPv6": "2607:f740:100::c05", - "CanPort80": true - } - ] - } - } - }, - "DisplayMessages": null, - "TKAEnabled": false, - "TKAHead": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", - "Domain": "kratail2tid@passkey", - "DomainAuditLogID": "", - "UserProfiles": { - "1399889648409786": { - "ID": 1399889648409786, - "LoginName": "router-b.tail78f774.ts.net", - "DisplayName": "router-b" - } - } + "PacketFilterRules": 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.124.195.93": { - "peer_name": "exit-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/subnet-router/tailscaled.sock whois --json 100.124.195.93", - "response": null - }, - "100.116.18.24": { - "peer_name": "exit-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/subnet-router/tailscaled.sock whois --json 100.116.18.24", - "response": null - }, - "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.107.162.14": { - "peer_name": "group-a-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/subnet-router/tailscaled.sock whois --json 100.107.162.14", - "response": null - }, - "100.77.135.18": { - "peer_name": "group-b-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/subnet-router/tailscaled.sock whois --json 100.77.135.18", - "response": null - }, - "100.105.127.107": { - "peer_name": "multi-exit-router", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/subnet-router/tailscaled.sock whois --json 100.105.127.107", - "response": null - }, - "100.109.43.124": { - "peer_name": "router-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/subnet-router/tailscaled.sock whois --json 100.109.43.124", - "response": null - }, - "100.65.172.123": { - "peer_name": "router-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/subnet-router/tailscaled.sock whois --json 100.65.172.123", - "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 - } - }, "netmap": { - "SelfNode": { - "ID": 7489538288452506, - "StableID": "nTPEqJU2V121CNTRL", - "Name": "subnet-router.tail78f774.ts.net.", - "User": 7489538288452506, - "Key": "nodekey:887ae2351c09c3b952f1f42bdac4095ec396ebf15824a746e4193c003e9c8e3c", - "DiscoKey": "discokey:9e3167ceaf53735a2fcaa7d3a85ad3a6118274deb448326d594849275014cc56", - "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:58597", "10.65.0.27:58597", "172.17.0.1:58597"], - "Hostinfo": { - "Hostname": "subnet-router", - "RoutableIPs": ["10.33.0.0/16"], - "RequestTags": ["tag:router"], - "Services": [ - { "Proto": "peerapi4", "Port": 63250 }, - { "Proto": "peerapi6", "Port": 63250 }, - { "Proto": "peerapi-dns-proxy", "Port": 1 } - ] - }, - "Created": "2026-02-23T00:13:15.731478784Z", - "Tags": ["tag:router"], - "MachineAuthorized": true, - "CapMap": { - "https://tailscale.com/cap/file-sharing": null, - "https://tailscale.com/cap/is-owner": null, - "https://tailscale.com/cap/ssh": null, - "https://tailscale.com/cap/tailnet-lock": null, - "probe-udp-lifetime": null, - "ssh-behavior-v1": null, - "ssh-env-vars": null, - "store-appc-routes": null, - "tailnet-display-name": ["kratail2tid@passkey"] - }, - "ComputedName": "subnet-router", - "ComputedNameWithHost": "subnet-router" - }, - "AllCaps": [ - "https://tailscale.com/cap/tailnet-lock", - "store-appc-routes", - "https://tailscale.com/cap/file-sharing", - "ssh-behavior-v1", - "ssh-env-vars", - "probe-udp-lifetime", - "tailnet-display-name", - "https://tailscale.com/cap/ssh", - "https://tailscale.com/cap/is-owner" - ], - "NodeKey": "nodekey:887ae2351c09c3b952f1f42bdac4095ec396ebf15824a746e4193c003e9c8e3c", - "MachineKey": "mkey:324efa54cc51a7b4f266f6a236904c755d32b6e547a76ad3c1d1e9d348de682a", "Peers": [], - "DNS": { - "Routes": { - "tail78f774.ts.net.": null, - "ts.net.": [{ "Addr": "199.247.155.53" }, { "Addr": "2620:111:8007::53" }] - }, - "Domains": ["tail78f774.ts.net"], - "Proxied": true, - "ExitNodeFilteredSet": [".ts.net", ".tailscale.net"] - }, - "PacketFilter": [], - "PacketFilterRules": null, - "SSHPolicy": { "rules": [] }, - "CollectServices": false, - "DERPMap": { - "Regions": { - "1": { - "RegionID": 1, - "RegionCode": "nyc", - "RegionName": "New York City", - "Latitude": 40.7128, - "Longitude": -74.006, - "Nodes": [ - { - "Name": "1h", - "RegionID": 1, - "HostName": "derp1h.tailscale.com", - "IPv4": "199.38.181.93", - "IPv6": "2607:f740:f::afd", - "CanPort80": true - }, - { - "Name": "1g", - "RegionID": 1, - "HostName": "derp1g.tailscale.com", - "IPv4": "209.177.145.120", - "IPv6": "2607:f740:f::3eb", - "CanPort80": true - }, - { - "Name": "1i", - "RegionID": 1, - "HostName": "derp1i.tailscale.com", - "IPv4": "199.38.181.103", - "IPv6": "2607:f740:f::e19", - "CanPort80": true - }, - { - "Name": "1f", - "RegionID": 1, - "HostName": "derp1f.tailscale.com", - "IPv4": "199.38.181.104", - "IPv6": "2607:f740:f::bc", - "CanPort80": true - } - ] - }, - "10": { - "RegionID": 10, - "RegionCode": "sea", - "RegionName": "Seattle", - "Latitude": 47.609722, - "Longitude": -122.333056, - "Nodes": [ - { - "Name": "10c", - "RegionID": 10, - "HostName": "derp10c.tailscale.com", - "IPv4": "192.73.240.121", - "IPv6": "2607:f740:14::40c", - "CanPort80": true - }, - { - "Name": "10d", - "RegionID": 10, - "HostName": "derp10d.tailscale.com", - "IPv4": "192.73.240.132", - "IPv6": "2607:f740:14::500", - "CanPort80": true - }, - { - "Name": "10b", - "RegionID": 10, - "HostName": "derp10b.tailscale.com", - "IPv4": "192.73.240.161", - "IPv6": "2607:f740:14::61c", - "CanPort80": true - } - ] - }, - "11": { - "RegionID": 11, - "RegionCode": "sao", - "RegionName": "São Paulo", - "Latitude": -23.55, - "Longitude": -46.633333, - "Nodes": [ - { - "Name": "11f", - "RegionID": 11, - "HostName": "derp11f.tailscale.com", - "IPv4": "172.237.61.197", - "IPv6": "2600:3c0d::2000:3bff:fe44:6166", - "CanPort80": true - }, - { - "Name": "11g", - "RegionID": 11, - "HostName": "derp11g.tailscale.com", - "IPv4": "172.237.61.190", - "IPv6": "2600:3c0d::2000:62ff:febe:2e67", - "CanPort80": true - }, - { - "Name": "11e", - "RegionID": 11, - "HostName": "derp11e.tailscale.com", - "IPv4": "172.237.61.194", - "IPv6": "2600:3c0d::2000:d2ff:fe43:1790", - "CanPort80": true - } - ] - }, - "12": { - "RegionID": 12, - "RegionCode": "ord", - "RegionName": "Chicago", - "Latitude": 41.881944, - "Longitude": -87.627778, - "Nodes": [ - { - "Name": "12e", - "RegionID": 12, - "HostName": "derp12e.tailscale.com", - "IPv4": "209.177.158.15", - "IPv6": "2607:f740:e::b17", - "CanPort80": true - }, - { - "Name": "12f", - "RegionID": 12, - "HostName": "derp12f.tailscale.com", - "IPv4": "199.38.182.118", - "IPv6": "2607:f740:e::4c8", - "CanPort80": true - }, - { - "Name": "12d", - "RegionID": 12, - "HostName": "derp12d.tailscale.com", - "IPv4": "209.177.158.246", - "IPv6": "2607:f740:e::811", - "CanPort80": true - } - ] - }, - "13": { - "RegionID": 13, - "RegionCode": "den", - "RegionName": "Denver", - "Latitude": 39.7392, - "Longitude": -104.9849, - "Nodes": [ - { - "Name": "13c", - "RegionID": 13, - "HostName": "derp13c.tailscale.com", - "IPv4": "192.73.242.28", - "IPv6": "2607:f740:16::5c", - "CanPort80": true - }, - { - "Name": "13d", - "RegionID": 13, - "HostName": "derp13d.tailscale.com", - "IPv4": "192.73.242.204", - "IPv6": "2607:f740:16::c23", - "CanPort80": true - }, - { - "Name": "13b", - "RegionID": 13, - "HostName": "derp13b.tailscale.com", - "IPv4": "192.73.242.187", - "IPv6": "2607:f740:16::640", - "CanPort80": true - } - ] - }, - "14": { - "RegionID": 14, - "RegionCode": "ams", - "RegionName": "Amsterdam", - "Latitude": 52.372778, - "Longitude": 4.893611, - "Nodes": [ - { - "Name": "14c", - "RegionID": 14, - "HostName": "derp14c.tailscale.com", - "IPv4": "176.58.93.147", - "IPv6": "2a00:dd80:3c::b09", - "CanPort80": true - }, - { - "Name": "14d", - "RegionID": 14, - "HostName": "derp14d.tailscale.com", - "IPv4": "176.58.93.154", - "IPv6": "2a00:dd80:3c::3d5", - "CanPort80": true - }, - { - "Name": "14b", - "RegionID": 14, - "HostName": "derp14b.tailscale.com", - "IPv4": "176.58.93.248", - "IPv6": "2a00:dd80:3c::807", - "CanPort80": true - } - ] - }, - "15": { - "RegionID": 15, - "RegionCode": "jnb", - "RegionName": "Johannesburg", - "Latitude": -26.204444, - "Longitude": 28.045556, - "Nodes": [ - { - "Name": "15c", - "RegionID": 15, - "HostName": "derp15c.tailscale.com", - "IPv4": "102.67.165.185", - "IPv6": "2c0f:edb0:0:10::b59", - "CanPort80": true - }, - { - "Name": "15d", - "RegionID": 15, - "HostName": "derp15d.tailscale.com", - "IPv4": "102.67.165.36", - "IPv6": "2c0f:edb0:0:10::599", - "CanPort80": true - }, - { - "Name": "15b", - "RegionID": 15, - "HostName": "derp15b.tailscale.com", - "IPv4": "102.67.165.90", - "IPv6": "2c0f:edb0:0:10::963", - "CanPort80": true - } - ] - }, - "16": { - "RegionID": 16, - "RegionCode": "mia", - "RegionName": "Miami", - "Latitude": 25.78, - "Longitude": -80.21, - "Nodes": [ - { - "Name": "16c", - "RegionID": 16, - "HostName": "derp16c.tailscale.com", - "IPv4": "192.73.243.229", - "IPv6": "2607:f740:17::4e4", - "CanPort80": true - }, - { - "Name": "16d", - "RegionID": 16, - "HostName": "derp16d.tailscale.com", - "IPv4": "192.73.243.141", - "IPv6": "2607:f740:17::475", - "CanPort80": true - }, - { - "Name": "16b", - "RegionID": 16, - "HostName": "derp16b.tailscale.com", - "IPv4": "192.73.243.135", - "IPv6": "2607:f740:17::476", - "CanPort80": true - } - ] - }, - "17": { - "RegionID": 17, - "RegionCode": "lax", - "RegionName": "Los Angeles", - "Latitude": 34.05, - "Longitude": -118.25, - "Nodes": [ - { - "Name": "17c", - "RegionID": 17, - "HostName": "derp17c.tailscale.com", - "IPv4": "208.111.40.12", - "IPv6": "2607:f740:c::10", - "CanPort80": true - }, - { - "Name": "17d", - "RegionID": 17, - "HostName": "derp17d.tailscale.com", - "IPv4": "208.111.40.216", - "IPv6": "2607:f740:c::e1b", - "CanPort80": true - }, - { - "Name": "17b", - "RegionID": 17, - "HostName": "derp17b.tailscale.com", - "IPv4": "192.73.244.245", - "IPv6": "2607:f740:c::646", - "CanPort80": true - } - ] - }, - "18": { - "RegionID": 18, - "RegionCode": "par", - "RegionName": "Paris", - "Latitude": 48.856667, - "Longitude": 2.352222, - "Nodes": [ - { - "Name": "18c", - "RegionID": 18, - "HostName": "derp18c.tailscale.com", - "IPv4": "176.58.90.207", - "IPv6": "2a00:dd80:3e::c19", - "CanPort80": true - }, - { - "Name": "18d", - "RegionID": 18, - "HostName": "derp18d.tailscale.com", - "IPv4": "176.58.90.104", - "IPv6": "2a00:dd80:3e::f2e", - "CanPort80": true - }, - { - "Name": "18b", - "RegionID": 18, - "HostName": "derp18b.tailscale.com", - "IPv4": "176.58.90.147", - "IPv6": "2a00:dd80:3e::363", - "CanPort80": true - } - ] - }, - "19": { - "RegionID": 19, - "RegionCode": "mad", - "RegionName": "Madrid", - "Latitude": 40.416944, - "Longitude": -3.703333, - "Nodes": [ - { - "Name": "19c", - "RegionID": 19, - "HostName": "derp19c.tailscale.com", - "IPv4": "45.159.97.61", - "IPv6": "2a00:dd80:14:10::20", - "CanPort80": true - }, - { - "Name": "19d", - "RegionID": 19, - "HostName": "derp19d.tailscale.com", - "IPv4": "45.159.97.233", - "IPv6": "2a00:dd80:14:10::34a", - "CanPort80": true - }, - { - "Name": "19b", - "RegionID": 19, - "HostName": "derp19b.tailscale.com", - "IPv4": "45.159.97.144", - "IPv6": "2a00:dd80:14:10::335", - "CanPort80": true - } - ] - }, - "2": { - "RegionID": 2, - "RegionCode": "sfo", - "RegionName": "San Francisco", - "Latitude": 37.7775, - "Longitude": -122.416389, - "Nodes": [ - { - "Name": "2e", - "RegionID": 2, - "HostName": "derp2e.tailscale.com", - "IPv4": "192.73.252.134", - "IPv6": "2607:f740:0:3f::44c", - "CanPort80": true - }, - { - "Name": "2f", - "RegionID": 2, - "HostName": "derp2f.tailscale.com", - "IPv4": "208.111.34.178", - "IPv6": "2607:f740:0:3f::f4", - "CanPort80": true - }, - { - "Name": "2d", - "RegionID": 2, - "HostName": "derp2d.tailscale.com", - "IPv4": "192.73.252.65", - "IPv6": "2607:f740:0:3f::287", - "CanPort80": true - } - ] - }, - "20": { - "RegionID": 20, - "RegionCode": "hkg", - "RegionName": "Hong Kong", - "Latitude": 22.3193, - "Longitude": 114.1694, - "Nodes": [ - { - "Name": "20c", - "RegionID": 20, - "HostName": "derp20c.tailscale.com", - "IPv4": "205.147.105.30", - "IPv6": "2403:2500:8000:1::5fb", - "CanPort80": true - }, - { - "Name": "20d", - "RegionID": 20, - "HostName": "derp20d.tailscale.com", - "IPv4": "205.147.105.78", - "IPv6": "2403:2500:8000:1::e9a", - "CanPort80": true - }, - { - "Name": "20b", - "RegionID": 20, - "HostName": "derp20b.tailscale.com", - "IPv4": "103.6.84.152", - "IPv6": "2403:2500:8000:1::ef6", - "CanPort80": true - } - ] - }, - "21": { - "RegionID": 21, - "RegionCode": "tor", - "RegionName": "Toronto", - "Latitude": 43.741667, - "Longitude": -79.373333, - "Nodes": [ - { - "Name": "21c", - "RegionID": 21, - "HostName": "derp21c.tailscale.com", - "IPv4": "162.248.221.215", - "IPv6": "2607:f740:50::f10", - "CanPort80": true - }, - { - "Name": "21d", - "RegionID": 21, - "HostName": "derp21d.tailscale.com", - "IPv4": "162.248.221.248", - "IPv6": "2607:f740:50::ca4", - "CanPort80": true - }, - { - "Name": "21b", - "RegionID": 21, - "HostName": "derp21b.tailscale.com", - "IPv4": "162.248.221.199", - "IPv6": "2607:f740:50::1d1", - "CanPort80": true - } - ] - }, - "22": { - "RegionID": 22, - "RegionCode": "waw", - "RegionName": "Warsaw", - "Latitude": 52.23, - "Longitude": 21.011111, - "Nodes": [ - { - "Name": "22c", - "RegionID": 22, - "HostName": "derp22c.tailscale.com", - "IPv4": "45.159.98.253", - "IPv6": "2a00:dd80:40:100::3f", - "CanPort80": true - }, - { - "Name": "22d", - "RegionID": 22, - "HostName": "derp22d.tailscale.com", - "IPv4": "45.159.98.145", - "IPv6": "2a00:dd80:40:100::211", - "CanPort80": true - }, - { - "Name": "22b", - "RegionID": 22, - "HostName": "derp22b.tailscale.com", - "IPv4": "45.159.98.196", - "IPv6": "2a00:dd80:40:100::316", - "CanPort80": true - } - ] - }, - "23": { - "RegionID": 23, - "RegionCode": "dbi", - "RegionName": "Dubai", - "Latitude": 25.263056, - "Longitude": 55.297222, - "Nodes": [ - { - "Name": "23c", - "RegionID": 23, - "HostName": "derp23c.tailscale.com", - "IPv4": "185.34.3.207", - "IPv6": "2a00:dd80:3f:100::a50", - "CanPort80": true - }, - { - "Name": "23d", - "RegionID": 23, - "HostName": "derp23d.tailscale.com", - "IPv4": "185.34.3.75", - "IPv6": "2a00:dd80:3f:100::97e", - "CanPort80": true - }, - { - "Name": "23b", - "RegionID": 23, - "HostName": "derp23b.tailscale.com", - "IPv4": "185.34.3.232", - "IPv6": "2a00:dd80:3f:100::76f", - "CanPort80": true - } - ] - }, - "24": { - "RegionID": 24, - "RegionCode": "hnl", - "RegionName": "Honolulu", - "Latitude": 21.306944, - "Longitude": -157.858333, - "Nodes": [ - { - "Name": "24c", - "RegionID": 24, - "HostName": "derp24c.tailscale.com", - "IPv4": "208.83.233.233", - "IPv6": "2001:19f0:c000:c591:5400:04ff:fe26:2c5f", - "CanPort80": true - }, - { - "Name": "24d", - "RegionID": 24, - "HostName": "derp24d.tailscale.com", - "IPv4": "208.72.155.133", - "IPv6": "2001:19f0:c000:c564:5400:04ff:fe26:2ba8", - "CanPort80": true - }, - { - "Name": "24b", - "RegionID": 24, - "HostName": "derp24b.tailscale.com", - "IPv4": "208.83.234.151", - "IPv6": "2001:19f0:c000:c586:5400:04ff:fe26:2ba6", - "CanPort80": true - } - ] - }, - "25": { - "RegionID": 25, - "RegionCode": "nai", - "RegionName": "Nairobi", - "Latitude": -1.286389, - "Longitude": 36.817222, - "Nodes": [ - { - "Name": "25c", - "RegionID": 25, - "HostName": "derp25c.tailscale.com", - "IPv4": "102.67.167.37", - "IPv6": "2c0f:edb0:2000:1::2c7", - "CanPort80": true - }, - { - "Name": "25d", - "RegionID": 25, - "HostName": "derp25d.tailscale.com", - "IPv4": "102.67.167.188", - "IPv6": "2c0f:edb0:2000:1::188", - "CanPort80": true - }, - { - "Name": "25b", - "RegionID": 25, - "HostName": "derp25b.tailscale.com", - "IPv4": "102.67.167.245", - "IPv6": "2c0f:edb0:2000:1::2e9", - "CanPort80": true - } - ] - }, - "26": { - "RegionID": 26, - "RegionCode": "nue", - "RegionName": "Nuremberg", - "Latitude": 49.453889, - "Longitude": 11.0775, - "Nodes": [ - { - "Name": "26c", - "RegionID": 26, - "HostName": "derp26c.tailscale.com", - "IPv4": "49.12.193.137", - "IPv6": "2a01:4f8:1c1c:5c70::1", - "CanPort80": true - }, - { - "Name": "26d", - "RegionID": 26, - "HostName": "derp26d.tailscale.com", - "IPv4": "49.13.204.141", - "IPv6": "2a01:4f8:1c0c:7d06::1", - "CanPort80": true - }, - { - "Name": "26b", - "RegionID": 26, - "HostName": "derp26b.tailscale.com", - "IPv4": "167.235.72.200", - "IPv6": "2a01:4f8:1c1c:47b6::1", - "CanPort80": true - } - ] - }, - "27": { - "RegionID": 27, - "RegionCode": "iad", - "RegionName": "Ashburn", - "Latitude": 39.03, - "Longitude": -77.471111, - "Nodes": [ - { - "Name": "27d", - "RegionID": 27, - "HostName": "derp27d.tailscale.com", - "IPv4": "178.156.152.106", - "IPv6": "2a01:4ff:f0:3c8e::1", - "CanPort80": true - }, - { - "Name": "27c", - "RegionID": 27, - "HostName": "derp27c.tailscale.com", - "IPv4": "178.156.152.91", - "IPv6": "2a01:4ff:f0:3913::1", - "CanPort80": true - }, - { - "Name": "27e", - "RegionID": 27, - "HostName": "derp27e.tailscale.com", - "IPv4": "178.156.134.232", - "IPv6": "2a01:4ff:f0:28d4::1", - "CanPort80": true - }, - { - "Name": "27b", - "RegionID": 27, - "HostName": "derp27b.tailscale.com", - "IPv4": "5.161.218.233", - "IPv6": "2a01:4ff:f0:3db9::1", - "CanPort80": true - } - ] - }, - "28": { - "RegionID": 28, - "RegionCode": "hel", - "RegionName": "Helsinki", - "Latitude": 60.170833, - "Longitude": 24.9375, - "Nodes": [ - { - "Name": "28c", - "RegionID": 28, - "HostName": "derp28c.tailscale.com", - "IPv4": "95.217.2.165", - "IPv6": "2a01:4f9:c012:cd74::1", - "CanPort80": true - }, - { - "Name": "28d", - "RegionID": 28, - "HostName": "derp28d.tailscale.com", - "IPv4": "157.180.28.32", - "IPv6": "2a01:4f9:c012:2e5b::1", - "CanPort80": true - }, - { - "Name": "28b", - "RegionID": 28, - "HostName": "derp28b.tailscale.com", - "IPv4": "65.109.143.62", - "IPv6": "2a01:4f9:c012:d55c::1", - "CanPort80": true - } - ] - }, - "3": { - "RegionID": 3, - "RegionCode": "sin", - "RegionName": "Singapore", - "Latitude": 1.3521, - "Longitude": 103.8198, - "Nodes": [ - { - "Name": "3g", - "RegionID": 3, - "HostName": "derp3g.tailscale.com", - "IPv4": "172.237.72.79", - "IPv6": "2600:3c15::2000:adff:fe08:6fab", - "CanPort80": true - }, - { - "Name": "3f", - "RegionID": 3, - "HostName": "derp3f.tailscale.com", - "IPv4": "172.237.72.8", - "IPv6": "2600:3c15::2000:53ff:fe48:a668", - "CanPort80": true - }, - { - "Name": "3h", - "RegionID": 3, - "HostName": "derp3h.tailscale.com", - "IPv4": "172.237.66.30", - "IPv6": "2600:3c15::2000:3dff:fe44:50aa", - "CanPort80": true - }, - { - "Name": "3e", - "RegionID": 3, - "HostName": "derp3e.tailscale.com", - "IPv4": "172.237.72.43", - "IPv6": "2600:3c15::2000:6cff:fee4:d799", - "CanPort80": true - } - ] - }, - "4": { - "RegionID": 4, - "RegionCode": "fra", - "RegionName": "Frankfurt", - "Latitude": 50.1109, - "Longitude": 8.6821, - "Nodes": [ - { - "Name": "4h", - "RegionID": 4, - "HostName": "derp4h.tailscale.com", - "IPv4": "185.40.234.77", - "IPv6": "2a00:dd80:20::bcf", - "CanPort80": true - }, - { - "Name": "4g", - "RegionID": 4, - "HostName": "derp4g.tailscale.com", - "IPv4": "185.40.234.113", - "IPv6": "2a00:dd80:20::8f", - "CanPort80": true - }, - { - "Name": "4i", - "RegionID": 4, - "HostName": "derp4i.tailscale.com", - "IPv4": "185.40.234.53", - "IPv6": "2a00:dd80:20::8a6", - "CanPort80": true - }, - { - "Name": "4f", - "RegionID": 4, - "HostName": "derp4f.tailscale.com", - "IPv4": "185.40.234.219", - "IPv6": "2a00:dd80:20::a25", - "CanPort80": true - } - ] - }, - "5": { - "RegionID": 5, - "RegionCode": "syd", - "RegionName": "Sydney", - "Latitude": -33.867778, - "Longitude": 151.21, - "Nodes": [ - { - "Name": "5f", - "RegionID": 5, - "HostName": "derp5f.tailscale.com", - "IPv4": "172.105.166.103", - "IPv6": "2400:8907::2000:ccff:fe1f:80da", - "CanPort80": true - }, - { - "Name": "5g", - "RegionID": 5, - "HostName": "derp5g.tailscale.com", - "IPv4": "172.105.169.57", - "IPv6": "2400:8907::2000:2fff:fea7:57f4", - "CanPort80": true - }, - { - "Name": "5e", - "RegionID": 5, - "HostName": "derp5e.tailscale.com", - "IPv4": "172.105.179.230", - "IPv6": "2400:8907::2000:ceff:fe8d:4f4e", - "CanPort80": true - } - ] - }, - "6": { - "RegionID": 6, - "RegionCode": "blr", - "RegionName": "Bengaluru", - "Latitude": 12.9716, - "Longitude": 77.5946, - "Nodes": [ - { - "Name": "6a", - "RegionID": 6, - "HostName": "derp6.tailscale.com", - "IPv4": "68.183.90.120", - "IPv6": "2400:6180:100:d0::982:d001", - "CanPort80": true - } - ] - }, - "7": { - "RegionID": 7, - "RegionCode": "tok", - "RegionName": "Tokyo", - "Latitude": 35.6764, - "Longitude": 139.65, - "Nodes": [ - { - "Name": "7g", - "RegionID": 7, - "HostName": "derp7g.tailscale.com", - "IPv4": "172.238.6.179", - "IPv6": "2600:3c18::2000:3fff:fe80:3ebd", - "CanPort80": true - }, - { - "Name": "7f", - "RegionID": 7, - "HostName": "derp7f.tailscale.com", - "IPv4": "172.238.6.34", - "IPv6": "2600:3c18::2000:acff:fe8e:3ed5", - "CanPort80": true - }, - { - "Name": "7h", - "RegionID": 7, - "HostName": "derp7h.tailscale.com", - "IPv4": "172.237.28.183", - "IPv6": "2600:3c18::2000:b1ff:fea9:4560", - "CanPort80": true - }, - { - "Name": "7e", - "RegionID": 7, - "HostName": "derp7e.tailscale.com", - "IPv4": "172.238.6.180", - "IPv6": "2600:3c18::2000:60ff:fe0f:6e83", - "STUNOnly": true, - "CanPort80": true - } - ] - }, - "8": { - "RegionID": 8, - "RegionCode": "lhr", - "RegionName": "London", - "Latitude": 51.5072, - "Longitude": 0.1276, - "Nodes": [ - { - "Name": "8f", - "RegionID": 8, - "HostName": "derp8f.tailscale.com", - "IPv4": "176.58.88.183", - "IPv6": "2a00:dd80:3a::dfa", - "CanPort80": true - }, - { - "Name": "8g", - "RegionID": 8, - "HostName": "derp8g.tailscale.com", - "IPv4": "176.58.92.254", - "IPv6": "2a00:dd80:3a::ed", - "CanPort80": true - }, - { - "Name": "8e", - "RegionID": 8, - "HostName": "derp8e.tailscale.com", - "IPv4": "176.58.92.144", - "IPv6": "2a00:dd80:3a::b33", - "CanPort80": true - } - ] - }, - "9": { - "RegionID": 9, - "RegionCode": "dfw", - "RegionName": "Dallas", - "Latitude": 32.779167, - "Longitude": -96.808889, - "Nodes": [ - { - "Name": "9e", - "RegionID": 9, - "HostName": "derp9e.tailscale.com", - "IPv4": "192.73.248.83", - "IPv6": "2607:f740:100::359", - "CanPort80": true - }, - { - "Name": "9f", - "RegionID": 9, - "HostName": "derp9f.tailscale.com", - "IPv4": "209.177.156.197", - "IPv6": "2607:f740:100::cad", - "CanPort80": true - }, - { - "Name": "9d", - "RegionID": 9, - "HostName": "derp9d.tailscale.com", - "IPv4": "209.177.156.94", - "IPv6": "2607:f740:100::c05", - "CanPort80": true - } - ] - } - } - }, - "DisplayMessages": null, - "TKAEnabled": false, - "TKAHead": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", - "Domain": "kratail2tid@passkey", - "DomainAuditLogID": "", - "UserProfiles": { - "7489538288452506": { - "ID": 7489538288452506, - "LoginName": "subnet-router.tail78f774.ts.net", - "DisplayName": "subnet-router" - } - } + "PacketFilterRules": 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.124.195.93": { - "peer_name": "exit-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-client/tailscaled.sock whois --json 100.124.195.93", - "response": null - }, - "100.116.18.24": { - "peer_name": "exit-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-client/tailscaled.sock whois --json 100.116.18.24", - "response": null - }, - "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.107.162.14": { - "peer_name": "group-a-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-client/tailscaled.sock whois --json 100.107.162.14", - "response": null - }, - "100.77.135.18": { - "peer_name": "group-b-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-client/tailscaled.sock whois --json 100.77.135.18", - "response": null - }, - "100.105.127.107": { - "peer_name": "multi-exit-router", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-client/tailscaled.sock whois --json 100.105.127.107", - "response": null - }, - "100.109.43.124": { - "peer_name": "router-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-client/tailscaled.sock whois --json 100.109.43.124", - "response": null - }, - "100.65.172.123": { - "peer_name": "router-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-client/tailscaled.sock whois --json 100.65.172.123", - "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 - } - }, "netmap": { - "SelfNode": { - "ID": 4031348162889210, - "StableID": "nf7BTTgoUY11CNTRL", - "Name": "tagged-client.tail78f774.ts.net.", - "User": 4031348162889210, - "Key": "nodekey:3011e53353e49142ea56ae11f81e0dceae0d667093d04ee086dcb1e9c5d3c844", - "DiscoKey": "discokey:64af337a7e8b61dce500da3b8f7d0a95fc6fe0e57c2f9e57b9b484a9b4acbe1e", - "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:47143", "10.65.0.27:47143", "172.17.0.1:47143"], - "Hostinfo": { - "Hostname": "tagged-client", - "RequestTags": ["tag:client"], - "Services": [ - { "Proto": "peerapi4", "Port": 41378 }, - { "Proto": "peerapi6", "Port": 41378 }, - { "Proto": "peerapi-dns-proxy", "Port": 1 } - ] - }, - "Created": "2026-02-23T00:13:11.017324028Z", - "Tags": ["tag:client"], - "MachineAuthorized": true, - "CapMap": { - "https://tailscale.com/cap/file-sharing": null, - "https://tailscale.com/cap/is-owner": null, - "https://tailscale.com/cap/ssh": null, - "https://tailscale.com/cap/tailnet-lock": null, - "probe-udp-lifetime": null, - "ssh-behavior-v1": null, - "ssh-env-vars": null, - "store-appc-routes": null, - "tailnet-display-name": ["kratail2tid@passkey"] - }, - "ComputedName": "tagged-client", - "ComputedNameWithHost": "tagged-client" - }, - "AllCaps": [ - "store-appc-routes", - "ssh-behavior-v1", - "https://tailscale.com/cap/tailnet-lock", - "ssh-env-vars", - "https://tailscale.com/cap/ssh", - "https://tailscale.com/cap/is-owner", - "probe-udp-lifetime", - "https://tailscale.com/cap/file-sharing", - "tailnet-display-name" - ], - "NodeKey": "nodekey:3011e53353e49142ea56ae11f81e0dceae0d667093d04ee086dcb1e9c5d3c844", - "MachineKey": "mkey:92af46ce21e67878315fe620545c207854ab6cec2d03adc106c50f64f9692711", "Peers": [], - "DNS": { - "Routes": { - "tail78f774.ts.net.": null, - "ts.net.": [{ "Addr": "199.247.155.53" }, { "Addr": "2620:111:8007::53" }] - }, - "Domains": ["tail78f774.ts.net"], - "Proxied": true, - "ExitNodeFilteredSet": [".ts.net", ".tailscale.net"] - }, - "PacketFilter": [], - "PacketFilterRules": null, - "SSHPolicy": { "rules": [] }, - "CollectServices": false, - "DERPMap": { - "Regions": { - "1": { - "RegionID": 1, - "RegionCode": "nyc", - "RegionName": "New York City", - "Latitude": 40.7128, - "Longitude": -74.006, - "Nodes": [ - { - "Name": "1h", - "RegionID": 1, - "HostName": "derp1h.tailscale.com", - "IPv4": "199.38.181.93", - "IPv6": "2607:f740:f::afd", - "CanPort80": true - }, - { - "Name": "1g", - "RegionID": 1, - "HostName": "derp1g.tailscale.com", - "IPv4": "209.177.145.120", - "IPv6": "2607:f740:f::3eb", - "CanPort80": true - }, - { - "Name": "1i", - "RegionID": 1, - "HostName": "derp1i.tailscale.com", - "IPv4": "199.38.181.103", - "IPv6": "2607:f740:f::e19", - "CanPort80": true - }, - { - "Name": "1f", - "RegionID": 1, - "HostName": "derp1f.tailscale.com", - "IPv4": "199.38.181.104", - "IPv6": "2607:f740:f::bc", - "CanPort80": true - } - ] - }, - "10": { - "RegionID": 10, - "RegionCode": "sea", - "RegionName": "Seattle", - "Latitude": 47.609722, - "Longitude": -122.333056, - "Nodes": [ - { - "Name": "10c", - "RegionID": 10, - "HostName": "derp10c.tailscale.com", - "IPv4": "192.73.240.121", - "IPv6": "2607:f740:14::40c", - "CanPort80": true - }, - { - "Name": "10d", - "RegionID": 10, - "HostName": "derp10d.tailscale.com", - "IPv4": "192.73.240.132", - "IPv6": "2607:f740:14::500", - "CanPort80": true - }, - { - "Name": "10b", - "RegionID": 10, - "HostName": "derp10b.tailscale.com", - "IPv4": "192.73.240.161", - "IPv6": "2607:f740:14::61c", - "CanPort80": true - } - ] - }, - "11": { - "RegionID": 11, - "RegionCode": "sao", - "RegionName": "São Paulo", - "Latitude": -23.55, - "Longitude": -46.633333, - "Nodes": [ - { - "Name": "11f", - "RegionID": 11, - "HostName": "derp11f.tailscale.com", - "IPv4": "172.237.61.197", - "IPv6": "2600:3c0d::2000:3bff:fe44:6166", - "CanPort80": true - }, - { - "Name": "11g", - "RegionID": 11, - "HostName": "derp11g.tailscale.com", - "IPv4": "172.237.61.190", - "IPv6": "2600:3c0d::2000:62ff:febe:2e67", - "CanPort80": true - }, - { - "Name": "11e", - "RegionID": 11, - "HostName": "derp11e.tailscale.com", - "IPv4": "172.237.61.194", - "IPv6": "2600:3c0d::2000:d2ff:fe43:1790", - "CanPort80": true - } - ] - }, - "12": { - "RegionID": 12, - "RegionCode": "ord", - "RegionName": "Chicago", - "Latitude": 41.881944, - "Longitude": -87.627778, - "Nodes": [ - { - "Name": "12e", - "RegionID": 12, - "HostName": "derp12e.tailscale.com", - "IPv4": "209.177.158.15", - "IPv6": "2607:f740:e::b17", - "CanPort80": true - }, - { - "Name": "12f", - "RegionID": 12, - "HostName": "derp12f.tailscale.com", - "IPv4": "199.38.182.118", - "IPv6": "2607:f740:e::4c8", - "CanPort80": true - }, - { - "Name": "12d", - "RegionID": 12, - "HostName": "derp12d.tailscale.com", - "IPv4": "209.177.158.246", - "IPv6": "2607:f740:e::811", - "CanPort80": true - } - ] - }, - "13": { - "RegionID": 13, - "RegionCode": "den", - "RegionName": "Denver", - "Latitude": 39.7392, - "Longitude": -104.9849, - "Nodes": [ - { - "Name": "13c", - "RegionID": 13, - "HostName": "derp13c.tailscale.com", - "IPv4": "192.73.242.28", - "IPv6": "2607:f740:16::5c", - "CanPort80": true - }, - { - "Name": "13d", - "RegionID": 13, - "HostName": "derp13d.tailscale.com", - "IPv4": "192.73.242.204", - "IPv6": "2607:f740:16::c23", - "CanPort80": true - }, - { - "Name": "13b", - "RegionID": 13, - "HostName": "derp13b.tailscale.com", - "IPv4": "192.73.242.187", - "IPv6": "2607:f740:16::640", - "CanPort80": true - } - ] - }, - "14": { - "RegionID": 14, - "RegionCode": "ams", - "RegionName": "Amsterdam", - "Latitude": 52.372778, - "Longitude": 4.893611, - "Nodes": [ - { - "Name": "14c", - "RegionID": 14, - "HostName": "derp14c.tailscale.com", - "IPv4": "176.58.93.147", - "IPv6": "2a00:dd80:3c::b09", - "CanPort80": true - }, - { - "Name": "14d", - "RegionID": 14, - "HostName": "derp14d.tailscale.com", - "IPv4": "176.58.93.154", - "IPv6": "2a00:dd80:3c::3d5", - "CanPort80": true - }, - { - "Name": "14b", - "RegionID": 14, - "HostName": "derp14b.tailscale.com", - "IPv4": "176.58.93.248", - "IPv6": "2a00:dd80:3c::807", - "CanPort80": true - } - ] - }, - "15": { - "RegionID": 15, - "RegionCode": "jnb", - "RegionName": "Johannesburg", - "Latitude": -26.204444, - "Longitude": 28.045556, - "Nodes": [ - { - "Name": "15c", - "RegionID": 15, - "HostName": "derp15c.tailscale.com", - "IPv4": "102.67.165.185", - "IPv6": "2c0f:edb0:0:10::b59", - "CanPort80": true - }, - { - "Name": "15d", - "RegionID": 15, - "HostName": "derp15d.tailscale.com", - "IPv4": "102.67.165.36", - "IPv6": "2c0f:edb0:0:10::599", - "CanPort80": true - }, - { - "Name": "15b", - "RegionID": 15, - "HostName": "derp15b.tailscale.com", - "IPv4": "102.67.165.90", - "IPv6": "2c0f:edb0:0:10::963", - "CanPort80": true - } - ] - }, - "16": { - "RegionID": 16, - "RegionCode": "mia", - "RegionName": "Miami", - "Latitude": 25.78, - "Longitude": -80.21, - "Nodes": [ - { - "Name": "16c", - "RegionID": 16, - "HostName": "derp16c.tailscale.com", - "IPv4": "192.73.243.229", - "IPv6": "2607:f740:17::4e4", - "CanPort80": true - }, - { - "Name": "16d", - "RegionID": 16, - "HostName": "derp16d.tailscale.com", - "IPv4": "192.73.243.141", - "IPv6": "2607:f740:17::475", - "CanPort80": true - }, - { - "Name": "16b", - "RegionID": 16, - "HostName": "derp16b.tailscale.com", - "IPv4": "192.73.243.135", - "IPv6": "2607:f740:17::476", - "CanPort80": true - } - ] - }, - "17": { - "RegionID": 17, - "RegionCode": "lax", - "RegionName": "Los Angeles", - "Latitude": 34.05, - "Longitude": -118.25, - "Nodes": [ - { - "Name": "17c", - "RegionID": 17, - "HostName": "derp17c.tailscale.com", - "IPv4": "208.111.40.12", - "IPv6": "2607:f740:c::10", - "CanPort80": true - }, - { - "Name": "17d", - "RegionID": 17, - "HostName": "derp17d.tailscale.com", - "IPv4": "208.111.40.216", - "IPv6": "2607:f740:c::e1b", - "CanPort80": true - }, - { - "Name": "17b", - "RegionID": 17, - "HostName": "derp17b.tailscale.com", - "IPv4": "192.73.244.245", - "IPv6": "2607:f740:c::646", - "CanPort80": true - } - ] - }, - "18": { - "RegionID": 18, - "RegionCode": "par", - "RegionName": "Paris", - "Latitude": 48.856667, - "Longitude": 2.352222, - "Nodes": [ - { - "Name": "18c", - "RegionID": 18, - "HostName": "derp18c.tailscale.com", - "IPv4": "176.58.90.207", - "IPv6": "2a00:dd80:3e::c19", - "CanPort80": true - }, - { - "Name": "18d", - "RegionID": 18, - "HostName": "derp18d.tailscale.com", - "IPv4": "176.58.90.104", - "IPv6": "2a00:dd80:3e::f2e", - "CanPort80": true - }, - { - "Name": "18b", - "RegionID": 18, - "HostName": "derp18b.tailscale.com", - "IPv4": "176.58.90.147", - "IPv6": "2a00:dd80:3e::363", - "CanPort80": true - } - ] - }, - "19": { - "RegionID": 19, - "RegionCode": "mad", - "RegionName": "Madrid", - "Latitude": 40.416944, - "Longitude": -3.703333, - "Nodes": [ - { - "Name": "19c", - "RegionID": 19, - "HostName": "derp19c.tailscale.com", - "IPv4": "45.159.97.61", - "IPv6": "2a00:dd80:14:10::20", - "CanPort80": true - }, - { - "Name": "19d", - "RegionID": 19, - "HostName": "derp19d.tailscale.com", - "IPv4": "45.159.97.233", - "IPv6": "2a00:dd80:14:10::34a", - "CanPort80": true - }, - { - "Name": "19b", - "RegionID": 19, - "HostName": "derp19b.tailscale.com", - "IPv4": "45.159.97.144", - "IPv6": "2a00:dd80:14:10::335", - "CanPort80": true - } - ] - }, - "2": { - "RegionID": 2, - "RegionCode": "sfo", - "RegionName": "San Francisco", - "Latitude": 37.7775, - "Longitude": -122.416389, - "Nodes": [ - { - "Name": "2e", - "RegionID": 2, - "HostName": "derp2e.tailscale.com", - "IPv4": "192.73.252.134", - "IPv6": "2607:f740:0:3f::44c", - "CanPort80": true - }, - { - "Name": "2f", - "RegionID": 2, - "HostName": "derp2f.tailscale.com", - "IPv4": "208.111.34.178", - "IPv6": "2607:f740:0:3f::f4", - "CanPort80": true - }, - { - "Name": "2d", - "RegionID": 2, - "HostName": "derp2d.tailscale.com", - "IPv4": "192.73.252.65", - "IPv6": "2607:f740:0:3f::287", - "CanPort80": true - } - ] - }, - "20": { - "RegionID": 20, - "RegionCode": "hkg", - "RegionName": "Hong Kong", - "Latitude": 22.3193, - "Longitude": 114.1694, - "Nodes": [ - { - "Name": "20c", - "RegionID": 20, - "HostName": "derp20c.tailscale.com", - "IPv4": "205.147.105.30", - "IPv6": "2403:2500:8000:1::5fb", - "CanPort80": true - }, - { - "Name": "20d", - "RegionID": 20, - "HostName": "derp20d.tailscale.com", - "IPv4": "205.147.105.78", - "IPv6": "2403:2500:8000:1::e9a", - "CanPort80": true - }, - { - "Name": "20b", - "RegionID": 20, - "HostName": "derp20b.tailscale.com", - "IPv4": "103.6.84.152", - "IPv6": "2403:2500:8000:1::ef6", - "CanPort80": true - } - ] - }, - "21": { - "RegionID": 21, - "RegionCode": "tor", - "RegionName": "Toronto", - "Latitude": 43.741667, - "Longitude": -79.373333, - "Nodes": [ - { - "Name": "21c", - "RegionID": 21, - "HostName": "derp21c.tailscale.com", - "IPv4": "162.248.221.215", - "IPv6": "2607:f740:50::f10", - "CanPort80": true - }, - { - "Name": "21d", - "RegionID": 21, - "HostName": "derp21d.tailscale.com", - "IPv4": "162.248.221.248", - "IPv6": "2607:f740:50::ca4", - "CanPort80": true - }, - { - "Name": "21b", - "RegionID": 21, - "HostName": "derp21b.tailscale.com", - "IPv4": "162.248.221.199", - "IPv6": "2607:f740:50::1d1", - "CanPort80": true - } - ] - }, - "22": { - "RegionID": 22, - "RegionCode": "waw", - "RegionName": "Warsaw", - "Latitude": 52.23, - "Longitude": 21.011111, - "Nodes": [ - { - "Name": "22c", - "RegionID": 22, - "HostName": "derp22c.tailscale.com", - "IPv4": "45.159.98.253", - "IPv6": "2a00:dd80:40:100::3f", - "CanPort80": true - }, - { - "Name": "22d", - "RegionID": 22, - "HostName": "derp22d.tailscale.com", - "IPv4": "45.159.98.145", - "IPv6": "2a00:dd80:40:100::211", - "CanPort80": true - }, - { - "Name": "22b", - "RegionID": 22, - "HostName": "derp22b.tailscale.com", - "IPv4": "45.159.98.196", - "IPv6": "2a00:dd80:40:100::316", - "CanPort80": true - } - ] - }, - "23": { - "RegionID": 23, - "RegionCode": "dbi", - "RegionName": "Dubai", - "Latitude": 25.263056, - "Longitude": 55.297222, - "Nodes": [ - { - "Name": "23c", - "RegionID": 23, - "HostName": "derp23c.tailscale.com", - "IPv4": "185.34.3.207", - "IPv6": "2a00:dd80:3f:100::a50", - "CanPort80": true - }, - { - "Name": "23d", - "RegionID": 23, - "HostName": "derp23d.tailscale.com", - "IPv4": "185.34.3.75", - "IPv6": "2a00:dd80:3f:100::97e", - "CanPort80": true - }, - { - "Name": "23b", - "RegionID": 23, - "HostName": "derp23b.tailscale.com", - "IPv4": "185.34.3.232", - "IPv6": "2a00:dd80:3f:100::76f", - "CanPort80": true - } - ] - }, - "24": { - "RegionID": 24, - "RegionCode": "hnl", - "RegionName": "Honolulu", - "Latitude": 21.306944, - "Longitude": -157.858333, - "Nodes": [ - { - "Name": "24c", - "RegionID": 24, - "HostName": "derp24c.tailscale.com", - "IPv4": "208.83.233.233", - "IPv6": "2001:19f0:c000:c591:5400:04ff:fe26:2c5f", - "CanPort80": true - }, - { - "Name": "24d", - "RegionID": 24, - "HostName": "derp24d.tailscale.com", - "IPv4": "208.72.155.133", - "IPv6": "2001:19f0:c000:c564:5400:04ff:fe26:2ba8", - "CanPort80": true - }, - { - "Name": "24b", - "RegionID": 24, - "HostName": "derp24b.tailscale.com", - "IPv4": "208.83.234.151", - "IPv6": "2001:19f0:c000:c586:5400:04ff:fe26:2ba6", - "CanPort80": true - } - ] - }, - "25": { - "RegionID": 25, - "RegionCode": "nai", - "RegionName": "Nairobi", - "Latitude": -1.286389, - "Longitude": 36.817222, - "Nodes": [ - { - "Name": "25c", - "RegionID": 25, - "HostName": "derp25c.tailscale.com", - "IPv4": "102.67.167.37", - "IPv6": "2c0f:edb0:2000:1::2c7", - "CanPort80": true - }, - { - "Name": "25d", - "RegionID": 25, - "HostName": "derp25d.tailscale.com", - "IPv4": "102.67.167.188", - "IPv6": "2c0f:edb0:2000:1::188", - "CanPort80": true - }, - { - "Name": "25b", - "RegionID": 25, - "HostName": "derp25b.tailscale.com", - "IPv4": "102.67.167.245", - "IPv6": "2c0f:edb0:2000:1::2e9", - "CanPort80": true - } - ] - }, - "26": { - "RegionID": 26, - "RegionCode": "nue", - "RegionName": "Nuremberg", - "Latitude": 49.453889, - "Longitude": 11.0775, - "Nodes": [ - { - "Name": "26c", - "RegionID": 26, - "HostName": "derp26c.tailscale.com", - "IPv4": "49.12.193.137", - "IPv6": "2a01:4f8:1c1c:5c70::1", - "CanPort80": true - }, - { - "Name": "26d", - "RegionID": 26, - "HostName": "derp26d.tailscale.com", - "IPv4": "49.13.204.141", - "IPv6": "2a01:4f8:1c0c:7d06::1", - "CanPort80": true - }, - { - "Name": "26b", - "RegionID": 26, - "HostName": "derp26b.tailscale.com", - "IPv4": "167.235.72.200", - "IPv6": "2a01:4f8:1c1c:47b6::1", - "CanPort80": true - } - ] - }, - "27": { - "RegionID": 27, - "RegionCode": "iad", - "RegionName": "Ashburn", - "Latitude": 39.03, - "Longitude": -77.471111, - "Nodes": [ - { - "Name": "27d", - "RegionID": 27, - "HostName": "derp27d.tailscale.com", - "IPv4": "178.156.152.106", - "IPv6": "2a01:4ff:f0:3c8e::1", - "CanPort80": true - }, - { - "Name": "27c", - "RegionID": 27, - "HostName": "derp27c.tailscale.com", - "IPv4": "178.156.152.91", - "IPv6": "2a01:4ff:f0:3913::1", - "CanPort80": true - }, - { - "Name": "27e", - "RegionID": 27, - "HostName": "derp27e.tailscale.com", - "IPv4": "178.156.134.232", - "IPv6": "2a01:4ff:f0:28d4::1", - "CanPort80": true - }, - { - "Name": "27b", - "RegionID": 27, - "HostName": "derp27b.tailscale.com", - "IPv4": "5.161.218.233", - "IPv6": "2a01:4ff:f0:3db9::1", - "CanPort80": true - } - ] - }, - "28": { - "RegionID": 28, - "RegionCode": "hel", - "RegionName": "Helsinki", - "Latitude": 60.170833, - "Longitude": 24.9375, - "Nodes": [ - { - "Name": "28c", - "RegionID": 28, - "HostName": "derp28c.tailscale.com", - "IPv4": "95.217.2.165", - "IPv6": "2a01:4f9:c012:cd74::1", - "CanPort80": true - }, - { - "Name": "28d", - "RegionID": 28, - "HostName": "derp28d.tailscale.com", - "IPv4": "157.180.28.32", - "IPv6": "2a01:4f9:c012:2e5b::1", - "CanPort80": true - }, - { - "Name": "28b", - "RegionID": 28, - "HostName": "derp28b.tailscale.com", - "IPv4": "65.109.143.62", - "IPv6": "2a01:4f9:c012:d55c::1", - "CanPort80": true - } - ] - }, - "3": { - "RegionID": 3, - "RegionCode": "sin", - "RegionName": "Singapore", - "Latitude": 1.3521, - "Longitude": 103.8198, - "Nodes": [ - { - "Name": "3g", - "RegionID": 3, - "HostName": "derp3g.tailscale.com", - "IPv4": "172.237.72.79", - "IPv6": "2600:3c15::2000:adff:fe08:6fab", - "CanPort80": true - }, - { - "Name": "3f", - "RegionID": 3, - "HostName": "derp3f.tailscale.com", - "IPv4": "172.237.72.8", - "IPv6": "2600:3c15::2000:53ff:fe48:a668", - "CanPort80": true - }, - { - "Name": "3h", - "RegionID": 3, - "HostName": "derp3h.tailscale.com", - "IPv4": "172.237.66.30", - "IPv6": "2600:3c15::2000:3dff:fe44:50aa", - "CanPort80": true - }, - { - "Name": "3e", - "RegionID": 3, - "HostName": "derp3e.tailscale.com", - "IPv4": "172.237.72.43", - "IPv6": "2600:3c15::2000:6cff:fee4:d799", - "CanPort80": true - } - ] - }, - "4": { - "RegionID": 4, - "RegionCode": "fra", - "RegionName": "Frankfurt", - "Latitude": 50.1109, - "Longitude": 8.6821, - "Nodes": [ - { - "Name": "4h", - "RegionID": 4, - "HostName": "derp4h.tailscale.com", - "IPv4": "185.40.234.77", - "IPv6": "2a00:dd80:20::bcf", - "CanPort80": true - }, - { - "Name": "4g", - "RegionID": 4, - "HostName": "derp4g.tailscale.com", - "IPv4": "185.40.234.113", - "IPv6": "2a00:dd80:20::8f", - "CanPort80": true - }, - { - "Name": "4i", - "RegionID": 4, - "HostName": "derp4i.tailscale.com", - "IPv4": "185.40.234.53", - "IPv6": "2a00:dd80:20::8a6", - "CanPort80": true - }, - { - "Name": "4f", - "RegionID": 4, - "HostName": "derp4f.tailscale.com", - "IPv4": "185.40.234.219", - "IPv6": "2a00:dd80:20::a25", - "CanPort80": true - } - ] - }, - "5": { - "RegionID": 5, - "RegionCode": "syd", - "RegionName": "Sydney", - "Latitude": -33.867778, - "Longitude": 151.21, - "Nodes": [ - { - "Name": "5f", - "RegionID": 5, - "HostName": "derp5f.tailscale.com", - "IPv4": "172.105.166.103", - "IPv6": "2400:8907::2000:ccff:fe1f:80da", - "CanPort80": true - }, - { - "Name": "5g", - "RegionID": 5, - "HostName": "derp5g.tailscale.com", - "IPv4": "172.105.169.57", - "IPv6": "2400:8907::2000:2fff:fea7:57f4", - "CanPort80": true - }, - { - "Name": "5e", - "RegionID": 5, - "HostName": "derp5e.tailscale.com", - "IPv4": "172.105.179.230", - "IPv6": "2400:8907::2000:ceff:fe8d:4f4e", - "CanPort80": true - } - ] - }, - "6": { - "RegionID": 6, - "RegionCode": "blr", - "RegionName": "Bengaluru", - "Latitude": 12.9716, - "Longitude": 77.5946, - "Nodes": [ - { - "Name": "6a", - "RegionID": 6, - "HostName": "derp6.tailscale.com", - "IPv4": "68.183.90.120", - "IPv6": "2400:6180:100:d0::982:d001", - "CanPort80": true - } - ] - }, - "7": { - "RegionID": 7, - "RegionCode": "tok", - "RegionName": "Tokyo", - "Latitude": 35.6764, - "Longitude": 139.65, - "Nodes": [ - { - "Name": "7g", - "RegionID": 7, - "HostName": "derp7g.tailscale.com", - "IPv4": "172.238.6.179", - "IPv6": "2600:3c18::2000:3fff:fe80:3ebd", - "CanPort80": true - }, - { - "Name": "7f", - "RegionID": 7, - "HostName": "derp7f.tailscale.com", - "IPv4": "172.238.6.34", - "IPv6": "2600:3c18::2000:acff:fe8e:3ed5", - "CanPort80": true - }, - { - "Name": "7h", - "RegionID": 7, - "HostName": "derp7h.tailscale.com", - "IPv4": "172.237.28.183", - "IPv6": "2600:3c18::2000:b1ff:fea9:4560", - "CanPort80": true - }, - { - "Name": "7e", - "RegionID": 7, - "HostName": "derp7e.tailscale.com", - "IPv4": "172.238.6.180", - "IPv6": "2600:3c18::2000:60ff:fe0f:6e83", - "STUNOnly": true, - "CanPort80": true - } - ] - }, - "8": { - "RegionID": 8, - "RegionCode": "lhr", - "RegionName": "London", - "Latitude": 51.5072, - "Longitude": 0.1276, - "Nodes": [ - { - "Name": "8f", - "RegionID": 8, - "HostName": "derp8f.tailscale.com", - "IPv4": "176.58.88.183", - "IPv6": "2a00:dd80:3a::dfa", - "CanPort80": true - }, - { - "Name": "8g", - "RegionID": 8, - "HostName": "derp8g.tailscale.com", - "IPv4": "176.58.92.254", - "IPv6": "2a00:dd80:3a::ed", - "CanPort80": true - }, - { - "Name": "8e", - "RegionID": 8, - "HostName": "derp8e.tailscale.com", - "IPv4": "176.58.92.144", - "IPv6": "2a00:dd80:3a::b33", - "CanPort80": true - } - ] - }, - "9": { - "RegionID": 9, - "RegionCode": "dfw", - "RegionName": "Dallas", - "Latitude": 32.779167, - "Longitude": -96.808889, - "Nodes": [ - { - "Name": "9e", - "RegionID": 9, - "HostName": "derp9e.tailscale.com", - "IPv4": "192.73.248.83", - "IPv6": "2607:f740:100::359", - "CanPort80": true - }, - { - "Name": "9f", - "RegionID": 9, - "HostName": "derp9f.tailscale.com", - "IPv4": "209.177.156.197", - "IPv6": "2607:f740:100::cad", - "CanPort80": true - }, - { - "Name": "9d", - "RegionID": 9, - "HostName": "derp9d.tailscale.com", - "IPv4": "209.177.156.94", - "IPv6": "2607:f740:100::c05", - "CanPort80": true - } - ] - } - } - }, - "DisplayMessages": null, - "TKAEnabled": false, - "TKAHead": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", - "Domain": "kratail2tid@passkey", - "DomainAuditLogID": "", - "UserProfiles": { - "4031348162889210": { - "ID": 4031348162889210, - "LoginName": "tagged-client.tail78f774.ts.net", - "DisplayName": "tagged-client" - } - } + "PacketFilterRules": 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.124.195.93": { - "peer_name": "exit-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-prod/tailscaled.sock whois --json 100.124.195.93", - "response": null - }, - "100.116.18.24": { - "peer_name": "exit-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-prod/tailscaled.sock whois --json 100.116.18.24", - "response": null - }, - "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.107.162.14": { - "peer_name": "group-a-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-prod/tailscaled.sock whois --json 100.107.162.14", - "response": null - }, - "100.77.135.18": { - "peer_name": "group-b-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-prod/tailscaled.sock whois --json 100.77.135.18", - "response": null - }, - "100.105.127.107": { - "peer_name": "multi-exit-router", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-prod/tailscaled.sock whois --json 100.105.127.107", - "response": null - }, - "100.109.43.124": { - "peer_name": "router-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-prod/tailscaled.sock whois --json 100.109.43.124", - "response": null - }, - "100.65.172.123": { - "peer_name": "router-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-prod/tailscaled.sock whois --json 100.65.172.123", - "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 - } - }, "netmap": { - "SelfNode": { - "ID": 301794218943819, - "StableID": "neJag6dgM311CNTRL", - "Name": "tagged-prod.tail78f774.ts.net.", - "User": 301794218943819, - "Key": "nodekey:54c79503322a5d0a9701ce19d11963cfff9c05667ac06ef976af86275ba7080e", - "DiscoKey": "discokey:5e4985009b42b7c82ffb2cb5fa735a90f967f6b3f886b71268ebbeffa324556b", - "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:46164", "10.65.0.27:46164", "172.17.0.1:46164"], - "Hostinfo": { - "Hostname": "tagged-prod", - "Services": [ - { "Proto": "peerapi4", "Port": 37678 }, - { "Proto": "peerapi6", "Port": 37678 }, - { "Proto": "peerapi-dns-proxy", "Port": 1 } - ] - }, - "Created": "2026-02-20T14:03:12.89283153Z", - "Tags": ["tag:prod"], - "MachineAuthorized": true, - "CapMap": { - "https://tailscale.com/cap/file-sharing": null, - "https://tailscale.com/cap/is-owner": null, - "https://tailscale.com/cap/ssh": null, - "https://tailscale.com/cap/tailnet-lock": null, - "probe-udp-lifetime": null, - "ssh-behavior-v1": null, - "ssh-env-vars": null, - "store-appc-routes": null, - "tailnet-display-name": ["kratail2tid@passkey"] - }, - "ComputedName": "tagged-prod", - "ComputedNameWithHost": "tagged-prod" - }, - "AllCaps": [ - "ssh-behavior-v1", - "https://tailscale.com/cap/tailnet-lock", - "ssh-env-vars", - "store-appc-routes", - "https://tailscale.com/cap/ssh", - "https://tailscale.com/cap/is-owner", - "probe-udp-lifetime", - "https://tailscale.com/cap/file-sharing", - "tailnet-display-name" - ], - "NodeKey": "nodekey:54c79503322a5d0a9701ce19d11963cfff9c05667ac06ef976af86275ba7080e", - "MachineKey": "mkey:af805e02d1594ab20eaf3e2df5b379eec6453fa649344fcd564b7bae20e46a63", "Peers": [], - "DNS": { - "Routes": { - "tail78f774.ts.net.": null, - "ts.net.": [{ "Addr": "199.247.155.53" }, { "Addr": "2620:111:8007::53" }] - }, - "Domains": ["tail78f774.ts.net"], - "Proxied": true, - "ExitNodeFilteredSet": [".ts.net", ".tailscale.net"] - }, - "PacketFilter": [], - "PacketFilterRules": null, - "SSHPolicy": { "rules": [] }, - "CollectServices": false, - "DERPMap": { - "Regions": { - "1": { - "RegionID": 1, - "RegionCode": "nyc", - "RegionName": "New York City", - "Latitude": 40.7128, - "Longitude": -74.006, - "Nodes": [ - { - "Name": "1h", - "RegionID": 1, - "HostName": "derp1h.tailscale.com", - "IPv4": "199.38.181.93", - "IPv6": "2607:f740:f::afd", - "CanPort80": true - }, - { - "Name": "1g", - "RegionID": 1, - "HostName": "derp1g.tailscale.com", - "IPv4": "209.177.145.120", - "IPv6": "2607:f740:f::3eb", - "CanPort80": true - }, - { - "Name": "1i", - "RegionID": 1, - "HostName": "derp1i.tailscale.com", - "IPv4": "199.38.181.103", - "IPv6": "2607:f740:f::e19", - "CanPort80": true - }, - { - "Name": "1f", - "RegionID": 1, - "HostName": "derp1f.tailscale.com", - "IPv4": "199.38.181.104", - "IPv6": "2607:f740:f::bc", - "CanPort80": true - } - ] - }, - "10": { - "RegionID": 10, - "RegionCode": "sea", - "RegionName": "Seattle", - "Latitude": 47.609722, - "Longitude": -122.333056, - "Nodes": [ - { - "Name": "10c", - "RegionID": 10, - "HostName": "derp10c.tailscale.com", - "IPv4": "192.73.240.121", - "IPv6": "2607:f740:14::40c", - "CanPort80": true - }, - { - "Name": "10d", - "RegionID": 10, - "HostName": "derp10d.tailscale.com", - "IPv4": "192.73.240.132", - "IPv6": "2607:f740:14::500", - "CanPort80": true - }, - { - "Name": "10b", - "RegionID": 10, - "HostName": "derp10b.tailscale.com", - "IPv4": "192.73.240.161", - "IPv6": "2607:f740:14::61c", - "CanPort80": true - } - ] - }, - "11": { - "RegionID": 11, - "RegionCode": "sao", - "RegionName": "São Paulo", - "Latitude": -23.55, - "Longitude": -46.633333, - "Nodes": [ - { - "Name": "11f", - "RegionID": 11, - "HostName": "derp11f.tailscale.com", - "IPv4": "172.237.61.197", - "IPv6": "2600:3c0d::2000:3bff:fe44:6166", - "CanPort80": true - }, - { - "Name": "11g", - "RegionID": 11, - "HostName": "derp11g.tailscale.com", - "IPv4": "172.237.61.190", - "IPv6": "2600:3c0d::2000:62ff:febe:2e67", - "CanPort80": true - }, - { - "Name": "11e", - "RegionID": 11, - "HostName": "derp11e.tailscale.com", - "IPv4": "172.237.61.194", - "IPv6": "2600:3c0d::2000:d2ff:fe43:1790", - "CanPort80": true - } - ] - }, - "12": { - "RegionID": 12, - "RegionCode": "ord", - "RegionName": "Chicago", - "Latitude": 41.881944, - "Longitude": -87.627778, - "Nodes": [ - { - "Name": "12e", - "RegionID": 12, - "HostName": "derp12e.tailscale.com", - "IPv4": "209.177.158.15", - "IPv6": "2607:f740:e::b17", - "CanPort80": true - }, - { - "Name": "12f", - "RegionID": 12, - "HostName": "derp12f.tailscale.com", - "IPv4": "199.38.182.118", - "IPv6": "2607:f740:e::4c8", - "CanPort80": true - }, - { - "Name": "12d", - "RegionID": 12, - "HostName": "derp12d.tailscale.com", - "IPv4": "209.177.158.246", - "IPv6": "2607:f740:e::811", - "CanPort80": true - } - ] - }, - "13": { - "RegionID": 13, - "RegionCode": "den", - "RegionName": "Denver", - "Latitude": 39.7392, - "Longitude": -104.9849, - "Nodes": [ - { - "Name": "13c", - "RegionID": 13, - "HostName": "derp13c.tailscale.com", - "IPv4": "192.73.242.28", - "IPv6": "2607:f740:16::5c", - "CanPort80": true - }, - { - "Name": "13d", - "RegionID": 13, - "HostName": "derp13d.tailscale.com", - "IPv4": "192.73.242.204", - "IPv6": "2607:f740:16::c23", - "CanPort80": true - }, - { - "Name": "13b", - "RegionID": 13, - "HostName": "derp13b.tailscale.com", - "IPv4": "192.73.242.187", - "IPv6": "2607:f740:16::640", - "CanPort80": true - } - ] - }, - "14": { - "RegionID": 14, - "RegionCode": "ams", - "RegionName": "Amsterdam", - "Latitude": 52.372778, - "Longitude": 4.893611, - "Nodes": [ - { - "Name": "14c", - "RegionID": 14, - "HostName": "derp14c.tailscale.com", - "IPv4": "176.58.93.147", - "IPv6": "2a00:dd80:3c::b09", - "CanPort80": true - }, - { - "Name": "14d", - "RegionID": 14, - "HostName": "derp14d.tailscale.com", - "IPv4": "176.58.93.154", - "IPv6": "2a00:dd80:3c::3d5", - "CanPort80": true - }, - { - "Name": "14b", - "RegionID": 14, - "HostName": "derp14b.tailscale.com", - "IPv4": "176.58.93.248", - "IPv6": "2a00:dd80:3c::807", - "CanPort80": true - } - ] - }, - "15": { - "RegionID": 15, - "RegionCode": "jnb", - "RegionName": "Johannesburg", - "Latitude": -26.204444, - "Longitude": 28.045556, - "Nodes": [ - { - "Name": "15c", - "RegionID": 15, - "HostName": "derp15c.tailscale.com", - "IPv4": "102.67.165.185", - "IPv6": "2c0f:edb0:0:10::b59", - "CanPort80": true - }, - { - "Name": "15d", - "RegionID": 15, - "HostName": "derp15d.tailscale.com", - "IPv4": "102.67.165.36", - "IPv6": "2c0f:edb0:0:10::599", - "CanPort80": true - }, - { - "Name": "15b", - "RegionID": 15, - "HostName": "derp15b.tailscale.com", - "IPv4": "102.67.165.90", - "IPv6": "2c0f:edb0:0:10::963", - "CanPort80": true - } - ] - }, - "16": { - "RegionID": 16, - "RegionCode": "mia", - "RegionName": "Miami", - "Latitude": 25.78, - "Longitude": -80.21, - "Nodes": [ - { - "Name": "16c", - "RegionID": 16, - "HostName": "derp16c.tailscale.com", - "IPv4": "192.73.243.229", - "IPv6": "2607:f740:17::4e4", - "CanPort80": true - }, - { - "Name": "16d", - "RegionID": 16, - "HostName": "derp16d.tailscale.com", - "IPv4": "192.73.243.141", - "IPv6": "2607:f740:17::475", - "CanPort80": true - }, - { - "Name": "16b", - "RegionID": 16, - "HostName": "derp16b.tailscale.com", - "IPv4": "192.73.243.135", - "IPv6": "2607:f740:17::476", - "CanPort80": true - } - ] - }, - "17": { - "RegionID": 17, - "RegionCode": "lax", - "RegionName": "Los Angeles", - "Latitude": 34.05, - "Longitude": -118.25, - "Nodes": [ - { - "Name": "17c", - "RegionID": 17, - "HostName": "derp17c.tailscale.com", - "IPv4": "208.111.40.12", - "IPv6": "2607:f740:c::10", - "CanPort80": true - }, - { - "Name": "17d", - "RegionID": 17, - "HostName": "derp17d.tailscale.com", - "IPv4": "208.111.40.216", - "IPv6": "2607:f740:c::e1b", - "CanPort80": true - }, - { - "Name": "17b", - "RegionID": 17, - "HostName": "derp17b.tailscale.com", - "IPv4": "192.73.244.245", - "IPv6": "2607:f740:c::646", - "CanPort80": true - } - ] - }, - "18": { - "RegionID": 18, - "RegionCode": "par", - "RegionName": "Paris", - "Latitude": 48.856667, - "Longitude": 2.352222, - "Nodes": [ - { - "Name": "18c", - "RegionID": 18, - "HostName": "derp18c.tailscale.com", - "IPv4": "176.58.90.207", - "IPv6": "2a00:dd80:3e::c19", - "CanPort80": true - }, - { - "Name": "18d", - "RegionID": 18, - "HostName": "derp18d.tailscale.com", - "IPv4": "176.58.90.104", - "IPv6": "2a00:dd80:3e::f2e", - "CanPort80": true - }, - { - "Name": "18b", - "RegionID": 18, - "HostName": "derp18b.tailscale.com", - "IPv4": "176.58.90.147", - "IPv6": "2a00:dd80:3e::363", - "CanPort80": true - } - ] - }, - "19": { - "RegionID": 19, - "RegionCode": "mad", - "RegionName": "Madrid", - "Latitude": 40.416944, - "Longitude": -3.703333, - "Nodes": [ - { - "Name": "19c", - "RegionID": 19, - "HostName": "derp19c.tailscale.com", - "IPv4": "45.159.97.61", - "IPv6": "2a00:dd80:14:10::20", - "CanPort80": true - }, - { - "Name": "19d", - "RegionID": 19, - "HostName": "derp19d.tailscale.com", - "IPv4": "45.159.97.233", - "IPv6": "2a00:dd80:14:10::34a", - "CanPort80": true - }, - { - "Name": "19b", - "RegionID": 19, - "HostName": "derp19b.tailscale.com", - "IPv4": "45.159.97.144", - "IPv6": "2a00:dd80:14:10::335", - "CanPort80": true - } - ] - }, - "2": { - "RegionID": 2, - "RegionCode": "sfo", - "RegionName": "San Francisco", - "Latitude": 37.7775, - "Longitude": -122.416389, - "Nodes": [ - { - "Name": "2e", - "RegionID": 2, - "HostName": "derp2e.tailscale.com", - "IPv4": "192.73.252.134", - "IPv6": "2607:f740:0:3f::44c", - "CanPort80": true - }, - { - "Name": "2f", - "RegionID": 2, - "HostName": "derp2f.tailscale.com", - "IPv4": "208.111.34.178", - "IPv6": "2607:f740:0:3f::f4", - "CanPort80": true - }, - { - "Name": "2d", - "RegionID": 2, - "HostName": "derp2d.tailscale.com", - "IPv4": "192.73.252.65", - "IPv6": "2607:f740:0:3f::287", - "CanPort80": true - } - ] - }, - "20": { - "RegionID": 20, - "RegionCode": "hkg", - "RegionName": "Hong Kong", - "Latitude": 22.3193, - "Longitude": 114.1694, - "Nodes": [ - { - "Name": "20c", - "RegionID": 20, - "HostName": "derp20c.tailscale.com", - "IPv4": "205.147.105.30", - "IPv6": "2403:2500:8000:1::5fb", - "CanPort80": true - }, - { - "Name": "20d", - "RegionID": 20, - "HostName": "derp20d.tailscale.com", - "IPv4": "205.147.105.78", - "IPv6": "2403:2500:8000:1::e9a", - "CanPort80": true - }, - { - "Name": "20b", - "RegionID": 20, - "HostName": "derp20b.tailscale.com", - "IPv4": "103.6.84.152", - "IPv6": "2403:2500:8000:1::ef6", - "CanPort80": true - } - ] - }, - "21": { - "RegionID": 21, - "RegionCode": "tor", - "RegionName": "Toronto", - "Latitude": 43.741667, - "Longitude": -79.373333, - "Nodes": [ - { - "Name": "21c", - "RegionID": 21, - "HostName": "derp21c.tailscale.com", - "IPv4": "162.248.221.215", - "IPv6": "2607:f740:50::f10", - "CanPort80": true - }, - { - "Name": "21d", - "RegionID": 21, - "HostName": "derp21d.tailscale.com", - "IPv4": "162.248.221.248", - "IPv6": "2607:f740:50::ca4", - "CanPort80": true - }, - { - "Name": "21b", - "RegionID": 21, - "HostName": "derp21b.tailscale.com", - "IPv4": "162.248.221.199", - "IPv6": "2607:f740:50::1d1", - "CanPort80": true - } - ] - }, - "22": { - "RegionID": 22, - "RegionCode": "waw", - "RegionName": "Warsaw", - "Latitude": 52.23, - "Longitude": 21.011111, - "Nodes": [ - { - "Name": "22c", - "RegionID": 22, - "HostName": "derp22c.tailscale.com", - "IPv4": "45.159.98.253", - "IPv6": "2a00:dd80:40:100::3f", - "CanPort80": true - }, - { - "Name": "22d", - "RegionID": 22, - "HostName": "derp22d.tailscale.com", - "IPv4": "45.159.98.145", - "IPv6": "2a00:dd80:40:100::211", - "CanPort80": true - }, - { - "Name": "22b", - "RegionID": 22, - "HostName": "derp22b.tailscale.com", - "IPv4": "45.159.98.196", - "IPv6": "2a00:dd80:40:100::316", - "CanPort80": true - } - ] - }, - "23": { - "RegionID": 23, - "RegionCode": "dbi", - "RegionName": "Dubai", - "Latitude": 25.263056, - "Longitude": 55.297222, - "Nodes": [ - { - "Name": "23c", - "RegionID": 23, - "HostName": "derp23c.tailscale.com", - "IPv4": "185.34.3.207", - "IPv6": "2a00:dd80:3f:100::a50", - "CanPort80": true - }, - { - "Name": "23d", - "RegionID": 23, - "HostName": "derp23d.tailscale.com", - "IPv4": "185.34.3.75", - "IPv6": "2a00:dd80:3f:100::97e", - "CanPort80": true - }, - { - "Name": "23b", - "RegionID": 23, - "HostName": "derp23b.tailscale.com", - "IPv4": "185.34.3.232", - "IPv6": "2a00:dd80:3f:100::76f", - "CanPort80": true - } - ] - }, - "24": { - "RegionID": 24, - "RegionCode": "hnl", - "RegionName": "Honolulu", - "Latitude": 21.306944, - "Longitude": -157.858333, - "Nodes": [ - { - "Name": "24c", - "RegionID": 24, - "HostName": "derp24c.tailscale.com", - "IPv4": "208.83.233.233", - "IPv6": "2001:19f0:c000:c591:5400:04ff:fe26:2c5f", - "CanPort80": true - }, - { - "Name": "24d", - "RegionID": 24, - "HostName": "derp24d.tailscale.com", - "IPv4": "208.72.155.133", - "IPv6": "2001:19f0:c000:c564:5400:04ff:fe26:2ba8", - "CanPort80": true - }, - { - "Name": "24b", - "RegionID": 24, - "HostName": "derp24b.tailscale.com", - "IPv4": "208.83.234.151", - "IPv6": "2001:19f0:c000:c586:5400:04ff:fe26:2ba6", - "CanPort80": true - } - ] - }, - "25": { - "RegionID": 25, - "RegionCode": "nai", - "RegionName": "Nairobi", - "Latitude": -1.286389, - "Longitude": 36.817222, - "Nodes": [ - { - "Name": "25c", - "RegionID": 25, - "HostName": "derp25c.tailscale.com", - "IPv4": "102.67.167.37", - "IPv6": "2c0f:edb0:2000:1::2c7", - "CanPort80": true - }, - { - "Name": "25d", - "RegionID": 25, - "HostName": "derp25d.tailscale.com", - "IPv4": "102.67.167.188", - "IPv6": "2c0f:edb0:2000:1::188", - "CanPort80": true - }, - { - "Name": "25b", - "RegionID": 25, - "HostName": "derp25b.tailscale.com", - "IPv4": "102.67.167.245", - "IPv6": "2c0f:edb0:2000:1::2e9", - "CanPort80": true - } - ] - }, - "26": { - "RegionID": 26, - "RegionCode": "nue", - "RegionName": "Nuremberg", - "Latitude": 49.453889, - "Longitude": 11.0775, - "Nodes": [ - { - "Name": "26c", - "RegionID": 26, - "HostName": "derp26c.tailscale.com", - "IPv4": "49.12.193.137", - "IPv6": "2a01:4f8:1c1c:5c70::1", - "CanPort80": true - }, - { - "Name": "26d", - "RegionID": 26, - "HostName": "derp26d.tailscale.com", - "IPv4": "49.13.204.141", - "IPv6": "2a01:4f8:1c0c:7d06::1", - "CanPort80": true - }, - { - "Name": "26b", - "RegionID": 26, - "HostName": "derp26b.tailscale.com", - "IPv4": "167.235.72.200", - "IPv6": "2a01:4f8:1c1c:47b6::1", - "CanPort80": true - } - ] - }, - "27": { - "RegionID": 27, - "RegionCode": "iad", - "RegionName": "Ashburn", - "Latitude": 39.03, - "Longitude": -77.471111, - "Nodes": [ - { - "Name": "27d", - "RegionID": 27, - "HostName": "derp27d.tailscale.com", - "IPv4": "178.156.152.106", - "IPv6": "2a01:4ff:f0:3c8e::1", - "CanPort80": true - }, - { - "Name": "27c", - "RegionID": 27, - "HostName": "derp27c.tailscale.com", - "IPv4": "178.156.152.91", - "IPv6": "2a01:4ff:f0:3913::1", - "CanPort80": true - }, - { - "Name": "27e", - "RegionID": 27, - "HostName": "derp27e.tailscale.com", - "IPv4": "178.156.134.232", - "IPv6": "2a01:4ff:f0:28d4::1", - "CanPort80": true - }, - { - "Name": "27b", - "RegionID": 27, - "HostName": "derp27b.tailscale.com", - "IPv4": "5.161.218.233", - "IPv6": "2a01:4ff:f0:3db9::1", - "CanPort80": true - } - ] - }, - "28": { - "RegionID": 28, - "RegionCode": "hel", - "RegionName": "Helsinki", - "Latitude": 60.170833, - "Longitude": 24.9375, - "Nodes": [ - { - "Name": "28c", - "RegionID": 28, - "HostName": "derp28c.tailscale.com", - "IPv4": "95.217.2.165", - "IPv6": "2a01:4f9:c012:cd74::1", - "CanPort80": true - }, - { - "Name": "28d", - "RegionID": 28, - "HostName": "derp28d.tailscale.com", - "IPv4": "157.180.28.32", - "IPv6": "2a01:4f9:c012:2e5b::1", - "CanPort80": true - }, - { - "Name": "28b", - "RegionID": 28, - "HostName": "derp28b.tailscale.com", - "IPv4": "65.109.143.62", - "IPv6": "2a01:4f9:c012:d55c::1", - "CanPort80": true - } - ] - }, - "3": { - "RegionID": 3, - "RegionCode": "sin", - "RegionName": "Singapore", - "Latitude": 1.3521, - "Longitude": 103.8198, - "Nodes": [ - { - "Name": "3g", - "RegionID": 3, - "HostName": "derp3g.tailscale.com", - "IPv4": "172.237.72.79", - "IPv6": "2600:3c15::2000:adff:fe08:6fab", - "CanPort80": true - }, - { - "Name": "3f", - "RegionID": 3, - "HostName": "derp3f.tailscale.com", - "IPv4": "172.237.72.8", - "IPv6": "2600:3c15::2000:53ff:fe48:a668", - "CanPort80": true - }, - { - "Name": "3h", - "RegionID": 3, - "HostName": "derp3h.tailscale.com", - "IPv4": "172.237.66.30", - "IPv6": "2600:3c15::2000:3dff:fe44:50aa", - "CanPort80": true - }, - { - "Name": "3e", - "RegionID": 3, - "HostName": "derp3e.tailscale.com", - "IPv4": "172.237.72.43", - "IPv6": "2600:3c15::2000:6cff:fee4:d799", - "CanPort80": true - } - ] - }, - "4": { - "RegionID": 4, - "RegionCode": "fra", - "RegionName": "Frankfurt", - "Latitude": 50.1109, - "Longitude": 8.6821, - "Nodes": [ - { - "Name": "4h", - "RegionID": 4, - "HostName": "derp4h.tailscale.com", - "IPv4": "185.40.234.77", - "IPv6": "2a00:dd80:20::bcf", - "CanPort80": true - }, - { - "Name": "4g", - "RegionID": 4, - "HostName": "derp4g.tailscale.com", - "IPv4": "185.40.234.113", - "IPv6": "2a00:dd80:20::8f", - "CanPort80": true - }, - { - "Name": "4i", - "RegionID": 4, - "HostName": "derp4i.tailscale.com", - "IPv4": "185.40.234.53", - "IPv6": "2a00:dd80:20::8a6", - "CanPort80": true - }, - { - "Name": "4f", - "RegionID": 4, - "HostName": "derp4f.tailscale.com", - "IPv4": "185.40.234.219", - "IPv6": "2a00:dd80:20::a25", - "CanPort80": true - } - ] - }, - "5": { - "RegionID": 5, - "RegionCode": "syd", - "RegionName": "Sydney", - "Latitude": -33.867778, - "Longitude": 151.21, - "Nodes": [ - { - "Name": "5f", - "RegionID": 5, - "HostName": "derp5f.tailscale.com", - "IPv4": "172.105.166.103", - "IPv6": "2400:8907::2000:ccff:fe1f:80da", - "CanPort80": true - }, - { - "Name": "5g", - "RegionID": 5, - "HostName": "derp5g.tailscale.com", - "IPv4": "172.105.169.57", - "IPv6": "2400:8907::2000:2fff:fea7:57f4", - "CanPort80": true - }, - { - "Name": "5e", - "RegionID": 5, - "HostName": "derp5e.tailscale.com", - "IPv4": "172.105.179.230", - "IPv6": "2400:8907::2000:ceff:fe8d:4f4e", - "CanPort80": true - } - ] - }, - "6": { - "RegionID": 6, - "RegionCode": "blr", - "RegionName": "Bengaluru", - "Latitude": 12.9716, - "Longitude": 77.5946, - "Nodes": [ - { - "Name": "6a", - "RegionID": 6, - "HostName": "derp6.tailscale.com", - "IPv4": "68.183.90.120", - "IPv6": "2400:6180:100:d0::982:d001", - "CanPort80": true - } - ] - }, - "7": { - "RegionID": 7, - "RegionCode": "tok", - "RegionName": "Tokyo", - "Latitude": 35.6764, - "Longitude": 139.65, - "Nodes": [ - { - "Name": "7g", - "RegionID": 7, - "HostName": "derp7g.tailscale.com", - "IPv4": "172.238.6.179", - "IPv6": "2600:3c18::2000:3fff:fe80:3ebd", - "CanPort80": true - }, - { - "Name": "7f", - "RegionID": 7, - "HostName": "derp7f.tailscale.com", - "IPv4": "172.238.6.34", - "IPv6": "2600:3c18::2000:acff:fe8e:3ed5", - "CanPort80": true - }, - { - "Name": "7h", - "RegionID": 7, - "HostName": "derp7h.tailscale.com", - "IPv4": "172.237.28.183", - "IPv6": "2600:3c18::2000:b1ff:fea9:4560", - "CanPort80": true - }, - { - "Name": "7e", - "RegionID": 7, - "HostName": "derp7e.tailscale.com", - "IPv4": "172.238.6.180", - "IPv6": "2600:3c18::2000:60ff:fe0f:6e83", - "STUNOnly": true, - "CanPort80": true - } - ] - }, - "8": { - "RegionID": 8, - "RegionCode": "lhr", - "RegionName": "London", - "Latitude": 51.5072, - "Longitude": 0.1276, - "Nodes": [ - { - "Name": "8f", - "RegionID": 8, - "HostName": "derp8f.tailscale.com", - "IPv4": "176.58.88.183", - "IPv6": "2a00:dd80:3a::dfa", - "CanPort80": true - }, - { - "Name": "8g", - "RegionID": 8, - "HostName": "derp8g.tailscale.com", - "IPv4": "176.58.92.254", - "IPv6": "2a00:dd80:3a::ed", - "CanPort80": true - }, - { - "Name": "8e", - "RegionID": 8, - "HostName": "derp8e.tailscale.com", - "IPv4": "176.58.92.144", - "IPv6": "2a00:dd80:3a::b33", - "CanPort80": true - } - ] - }, - "9": { - "RegionID": 9, - "RegionCode": "dfw", - "RegionName": "Dallas", - "Latitude": 32.779167, - "Longitude": -96.808889, - "Nodes": [ - { - "Name": "9e", - "RegionID": 9, - "HostName": "derp9e.tailscale.com", - "IPv4": "192.73.248.83", - "IPv6": "2607:f740:100::359", - "CanPort80": true - }, - { - "Name": "9f", - "RegionID": 9, - "HostName": "derp9f.tailscale.com", - "IPv4": "209.177.156.197", - "IPv6": "2607:f740:100::cad", - "CanPort80": true - }, - { - "Name": "9d", - "RegionID": 9, - "HostName": "derp9d.tailscale.com", - "IPv4": "209.177.156.94", - "IPv6": "2607:f740:100::c05", - "CanPort80": true - } - ] - } - } - }, - "DisplayMessages": null, - "TKAEnabled": false, - "TKAHead": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", - "Domain": "kratail2tid@passkey", - "DomainAuditLogID": "", - "UserProfiles": { - "301794218943819": { - "ID": 301794218943819, - "LoginName": "tagged-prod.tail78f774.ts.net", - "DisplayName": "tagged-prod" - } - } + "PacketFilterRules": 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.124.195.93": { - "peer_name": "exit-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-server/tailscaled.sock whois --json 100.124.195.93", - "response": null - }, - "100.116.18.24": { - "peer_name": "exit-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-server/tailscaled.sock whois --json 100.116.18.24", - "response": null - }, - "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.107.162.14": { - "peer_name": "group-a-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-server/tailscaled.sock whois --json 100.107.162.14", - "response": null - }, - "100.77.135.18": { - "peer_name": "group-b-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-server/tailscaled.sock whois --json 100.77.135.18", - "response": null - }, - "100.105.127.107": { - "peer_name": "multi-exit-router", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-server/tailscaled.sock whois --json 100.105.127.107", - "response": null - }, - "100.109.43.124": { - "peer_name": "router-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-server/tailscaled.sock whois --json 100.109.43.124", - "response": null - }, - "100.65.172.123": { - "peer_name": "router-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-server/tailscaled.sock whois --json 100.65.172.123", - "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 - } - }, "netmap": { - "SelfNode": { - "ID": 1440249486084758, - "StableID": "nXRbBtuHFC11CNTRL", - "Name": "tagged-server.tail78f774.ts.net.", - "User": 1440249486084758, - "Key": "nodekey:7d5c34b3e8082069d0a82838165c33f8e1b5eb32c6211c2d23d4fe8fb9ec4a19", - "DiscoKey": "discokey:aa5732e314175928eff41cc8f8a7b6edd4694b7d00e420a6573ecc11a88cb203", - "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:57971", "10.65.0.27:57971", "172.17.0.1:57971"], - "Hostinfo": { - "Hostname": "tagged-server", - "Services": [ - { "Proto": "peerapi4", "Port": 46499 }, - { "Proto": "peerapi6", "Port": 46499 }, - { "Proto": "peerapi-dns-proxy", "Port": 1 } - ] - }, - "Created": "2026-01-23T10:10:26.365653609Z", - "Tags": ["tag:server"], - "MachineAuthorized": true, - "CapMap": { - "https://tailscale.com/cap/file-sharing": null, - "https://tailscale.com/cap/is-owner": null, - "https://tailscale.com/cap/ssh": null, - "https://tailscale.com/cap/tailnet-lock": null, - "probe-udp-lifetime": null, - "ssh-behavior-v1": null, - "ssh-env-vars": null, - "store-appc-routes": null, - "tailnet-display-name": ["kratail2tid@passkey"] - }, - "ComputedName": "tagged-server", - "ComputedNameWithHost": "tagged-server" - }, - "AllCaps": [ - "https://tailscale.com/cap/ssh", - "ssh-env-vars", - "https://tailscale.com/cap/is-owner", - "https://tailscale.com/cap/tailnet-lock", - "store-appc-routes", - "tailnet-display-name", - "ssh-behavior-v1", - "https://tailscale.com/cap/file-sharing", - "probe-udp-lifetime" - ], - "NodeKey": "nodekey:7d5c34b3e8082069d0a82838165c33f8e1b5eb32c6211c2d23d4fe8fb9ec4a19", - "MachineKey": "mkey:7d9c55c88bb618638f3f049b95c797f64eb0259810146d2644fef3e53acfdf6b", "Peers": [], - "DNS": { - "Routes": { - "tail78f774.ts.net.": null, - "ts.net.": [{ "Addr": "199.247.155.53" }, { "Addr": "2620:111:8007::53" }] - }, - "Domains": ["tail78f774.ts.net"], - "Proxied": true, - "ExitNodeFilteredSet": [".ts.net", ".tailscale.net"] - }, - "PacketFilter": [], - "PacketFilterRules": null, - "SSHPolicy": { "rules": [] }, - "CollectServices": false, - "DERPMap": { - "Regions": { - "1": { - "RegionID": 1, - "RegionCode": "nyc", - "RegionName": "New York City", - "Latitude": 40.7128, - "Longitude": -74.006, - "Nodes": [ - { - "Name": "1h", - "RegionID": 1, - "HostName": "derp1h.tailscale.com", - "IPv4": "199.38.181.93", - "IPv6": "2607:f740:f::afd", - "CanPort80": true - }, - { - "Name": "1g", - "RegionID": 1, - "HostName": "derp1g.tailscale.com", - "IPv4": "209.177.145.120", - "IPv6": "2607:f740:f::3eb", - "CanPort80": true - }, - { - "Name": "1i", - "RegionID": 1, - "HostName": "derp1i.tailscale.com", - "IPv4": "199.38.181.103", - "IPv6": "2607:f740:f::e19", - "CanPort80": true - }, - { - "Name": "1f", - "RegionID": 1, - "HostName": "derp1f.tailscale.com", - "IPv4": "199.38.181.104", - "IPv6": "2607:f740:f::bc", - "CanPort80": true - } - ] - }, - "10": { - "RegionID": 10, - "RegionCode": "sea", - "RegionName": "Seattle", - "Latitude": 47.609722, - "Longitude": -122.333056, - "Nodes": [ - { - "Name": "10c", - "RegionID": 10, - "HostName": "derp10c.tailscale.com", - "IPv4": "192.73.240.121", - "IPv6": "2607:f740:14::40c", - "CanPort80": true - }, - { - "Name": "10d", - "RegionID": 10, - "HostName": "derp10d.tailscale.com", - "IPv4": "192.73.240.132", - "IPv6": "2607:f740:14::500", - "CanPort80": true - }, - { - "Name": "10b", - "RegionID": 10, - "HostName": "derp10b.tailscale.com", - "IPv4": "192.73.240.161", - "IPv6": "2607:f740:14::61c", - "CanPort80": true - } - ] - }, - "11": { - "RegionID": 11, - "RegionCode": "sao", - "RegionName": "São Paulo", - "Latitude": -23.55, - "Longitude": -46.633333, - "Nodes": [ - { - "Name": "11f", - "RegionID": 11, - "HostName": "derp11f.tailscale.com", - "IPv4": "172.237.61.197", - "IPv6": "2600:3c0d::2000:3bff:fe44:6166", - "CanPort80": true - }, - { - "Name": "11g", - "RegionID": 11, - "HostName": "derp11g.tailscale.com", - "IPv4": "172.237.61.190", - "IPv6": "2600:3c0d::2000:62ff:febe:2e67", - "CanPort80": true - }, - { - "Name": "11e", - "RegionID": 11, - "HostName": "derp11e.tailscale.com", - "IPv4": "172.237.61.194", - "IPv6": "2600:3c0d::2000:d2ff:fe43:1790", - "CanPort80": true - } - ] - }, - "12": { - "RegionID": 12, - "RegionCode": "ord", - "RegionName": "Chicago", - "Latitude": 41.881944, - "Longitude": -87.627778, - "Nodes": [ - { - "Name": "12e", - "RegionID": 12, - "HostName": "derp12e.tailscale.com", - "IPv4": "209.177.158.15", - "IPv6": "2607:f740:e::b17", - "CanPort80": true - }, - { - "Name": "12f", - "RegionID": 12, - "HostName": "derp12f.tailscale.com", - "IPv4": "199.38.182.118", - "IPv6": "2607:f740:e::4c8", - "CanPort80": true - }, - { - "Name": "12d", - "RegionID": 12, - "HostName": "derp12d.tailscale.com", - "IPv4": "209.177.158.246", - "IPv6": "2607:f740:e::811", - "CanPort80": true - } - ] - }, - "13": { - "RegionID": 13, - "RegionCode": "den", - "RegionName": "Denver", - "Latitude": 39.7392, - "Longitude": -104.9849, - "Nodes": [ - { - "Name": "13c", - "RegionID": 13, - "HostName": "derp13c.tailscale.com", - "IPv4": "192.73.242.28", - "IPv6": "2607:f740:16::5c", - "CanPort80": true - }, - { - "Name": "13d", - "RegionID": 13, - "HostName": "derp13d.tailscale.com", - "IPv4": "192.73.242.204", - "IPv6": "2607:f740:16::c23", - "CanPort80": true - }, - { - "Name": "13b", - "RegionID": 13, - "HostName": "derp13b.tailscale.com", - "IPv4": "192.73.242.187", - "IPv6": "2607:f740:16::640", - "CanPort80": true - } - ] - }, - "14": { - "RegionID": 14, - "RegionCode": "ams", - "RegionName": "Amsterdam", - "Latitude": 52.372778, - "Longitude": 4.893611, - "Nodes": [ - { - "Name": "14c", - "RegionID": 14, - "HostName": "derp14c.tailscale.com", - "IPv4": "176.58.93.147", - "IPv6": "2a00:dd80:3c::b09", - "CanPort80": true - }, - { - "Name": "14d", - "RegionID": 14, - "HostName": "derp14d.tailscale.com", - "IPv4": "176.58.93.154", - "IPv6": "2a00:dd80:3c::3d5", - "CanPort80": true - }, - { - "Name": "14b", - "RegionID": 14, - "HostName": "derp14b.tailscale.com", - "IPv4": "176.58.93.248", - "IPv6": "2a00:dd80:3c::807", - "CanPort80": true - } - ] - }, - "15": { - "RegionID": 15, - "RegionCode": "jnb", - "RegionName": "Johannesburg", - "Latitude": -26.204444, - "Longitude": 28.045556, - "Nodes": [ - { - "Name": "15c", - "RegionID": 15, - "HostName": "derp15c.tailscale.com", - "IPv4": "102.67.165.185", - "IPv6": "2c0f:edb0:0:10::b59", - "CanPort80": true - }, - { - "Name": "15d", - "RegionID": 15, - "HostName": "derp15d.tailscale.com", - "IPv4": "102.67.165.36", - "IPv6": "2c0f:edb0:0:10::599", - "CanPort80": true - }, - { - "Name": "15b", - "RegionID": 15, - "HostName": "derp15b.tailscale.com", - "IPv4": "102.67.165.90", - "IPv6": "2c0f:edb0:0:10::963", - "CanPort80": true - } - ] - }, - "16": { - "RegionID": 16, - "RegionCode": "mia", - "RegionName": "Miami", - "Latitude": 25.78, - "Longitude": -80.21, - "Nodes": [ - { - "Name": "16c", - "RegionID": 16, - "HostName": "derp16c.tailscale.com", - "IPv4": "192.73.243.229", - "IPv6": "2607:f740:17::4e4", - "CanPort80": true - }, - { - "Name": "16d", - "RegionID": 16, - "HostName": "derp16d.tailscale.com", - "IPv4": "192.73.243.141", - "IPv6": "2607:f740:17::475", - "CanPort80": true - }, - { - "Name": "16b", - "RegionID": 16, - "HostName": "derp16b.tailscale.com", - "IPv4": "192.73.243.135", - "IPv6": "2607:f740:17::476", - "CanPort80": true - } - ] - }, - "17": { - "RegionID": 17, - "RegionCode": "lax", - "RegionName": "Los Angeles", - "Latitude": 34.05, - "Longitude": -118.25, - "Nodes": [ - { - "Name": "17c", - "RegionID": 17, - "HostName": "derp17c.tailscale.com", - "IPv4": "208.111.40.12", - "IPv6": "2607:f740:c::10", - "CanPort80": true - }, - { - "Name": "17d", - "RegionID": 17, - "HostName": "derp17d.tailscale.com", - "IPv4": "208.111.40.216", - "IPv6": "2607:f740:c::e1b", - "CanPort80": true - }, - { - "Name": "17b", - "RegionID": 17, - "HostName": "derp17b.tailscale.com", - "IPv4": "192.73.244.245", - "IPv6": "2607:f740:c::646", - "CanPort80": true - } - ] - }, - "18": { - "RegionID": 18, - "RegionCode": "par", - "RegionName": "Paris", - "Latitude": 48.856667, - "Longitude": 2.352222, - "Nodes": [ - { - "Name": "18c", - "RegionID": 18, - "HostName": "derp18c.tailscale.com", - "IPv4": "176.58.90.207", - "IPv6": "2a00:dd80:3e::c19", - "CanPort80": true - }, - { - "Name": "18d", - "RegionID": 18, - "HostName": "derp18d.tailscale.com", - "IPv4": "176.58.90.104", - "IPv6": "2a00:dd80:3e::f2e", - "CanPort80": true - }, - { - "Name": "18b", - "RegionID": 18, - "HostName": "derp18b.tailscale.com", - "IPv4": "176.58.90.147", - "IPv6": "2a00:dd80:3e::363", - "CanPort80": true - } - ] - }, - "19": { - "RegionID": 19, - "RegionCode": "mad", - "RegionName": "Madrid", - "Latitude": 40.416944, - "Longitude": -3.703333, - "Nodes": [ - { - "Name": "19c", - "RegionID": 19, - "HostName": "derp19c.tailscale.com", - "IPv4": "45.159.97.61", - "IPv6": "2a00:dd80:14:10::20", - "CanPort80": true - }, - { - "Name": "19d", - "RegionID": 19, - "HostName": "derp19d.tailscale.com", - "IPv4": "45.159.97.233", - "IPv6": "2a00:dd80:14:10::34a", - "CanPort80": true - }, - { - "Name": "19b", - "RegionID": 19, - "HostName": "derp19b.tailscale.com", - "IPv4": "45.159.97.144", - "IPv6": "2a00:dd80:14:10::335", - "CanPort80": true - } - ] - }, - "2": { - "RegionID": 2, - "RegionCode": "sfo", - "RegionName": "San Francisco", - "Latitude": 37.7775, - "Longitude": -122.416389, - "Nodes": [ - { - "Name": "2e", - "RegionID": 2, - "HostName": "derp2e.tailscale.com", - "IPv4": "192.73.252.134", - "IPv6": "2607:f740:0:3f::44c", - "CanPort80": true - }, - { - "Name": "2f", - "RegionID": 2, - "HostName": "derp2f.tailscale.com", - "IPv4": "208.111.34.178", - "IPv6": "2607:f740:0:3f::f4", - "CanPort80": true - }, - { - "Name": "2d", - "RegionID": 2, - "HostName": "derp2d.tailscale.com", - "IPv4": "192.73.252.65", - "IPv6": "2607:f740:0:3f::287", - "CanPort80": true - } - ] - }, - "20": { - "RegionID": 20, - "RegionCode": "hkg", - "RegionName": "Hong Kong", - "Latitude": 22.3193, - "Longitude": 114.1694, - "Nodes": [ - { - "Name": "20c", - "RegionID": 20, - "HostName": "derp20c.tailscale.com", - "IPv4": "205.147.105.30", - "IPv6": "2403:2500:8000:1::5fb", - "CanPort80": true - }, - { - "Name": "20d", - "RegionID": 20, - "HostName": "derp20d.tailscale.com", - "IPv4": "205.147.105.78", - "IPv6": "2403:2500:8000:1::e9a", - "CanPort80": true - }, - { - "Name": "20b", - "RegionID": 20, - "HostName": "derp20b.tailscale.com", - "IPv4": "103.6.84.152", - "IPv6": "2403:2500:8000:1::ef6", - "CanPort80": true - } - ] - }, - "21": { - "RegionID": 21, - "RegionCode": "tor", - "RegionName": "Toronto", - "Latitude": 43.741667, - "Longitude": -79.373333, - "Nodes": [ - { - "Name": "21c", - "RegionID": 21, - "HostName": "derp21c.tailscale.com", - "IPv4": "162.248.221.215", - "IPv6": "2607:f740:50::f10", - "CanPort80": true - }, - { - "Name": "21d", - "RegionID": 21, - "HostName": "derp21d.tailscale.com", - "IPv4": "162.248.221.248", - "IPv6": "2607:f740:50::ca4", - "CanPort80": true - }, - { - "Name": "21b", - "RegionID": 21, - "HostName": "derp21b.tailscale.com", - "IPv4": "162.248.221.199", - "IPv6": "2607:f740:50::1d1", - "CanPort80": true - } - ] - }, - "22": { - "RegionID": 22, - "RegionCode": "waw", - "RegionName": "Warsaw", - "Latitude": 52.23, - "Longitude": 21.011111, - "Nodes": [ - { - "Name": "22c", - "RegionID": 22, - "HostName": "derp22c.tailscale.com", - "IPv4": "45.159.98.253", - "IPv6": "2a00:dd80:40:100::3f", - "CanPort80": true - }, - { - "Name": "22d", - "RegionID": 22, - "HostName": "derp22d.tailscale.com", - "IPv4": "45.159.98.145", - "IPv6": "2a00:dd80:40:100::211", - "CanPort80": true - }, - { - "Name": "22b", - "RegionID": 22, - "HostName": "derp22b.tailscale.com", - "IPv4": "45.159.98.196", - "IPv6": "2a00:dd80:40:100::316", - "CanPort80": true - } - ] - }, - "23": { - "RegionID": 23, - "RegionCode": "dbi", - "RegionName": "Dubai", - "Latitude": 25.263056, - "Longitude": 55.297222, - "Nodes": [ - { - "Name": "23c", - "RegionID": 23, - "HostName": "derp23c.tailscale.com", - "IPv4": "185.34.3.207", - "IPv6": "2a00:dd80:3f:100::a50", - "CanPort80": true - }, - { - "Name": "23d", - "RegionID": 23, - "HostName": "derp23d.tailscale.com", - "IPv4": "185.34.3.75", - "IPv6": "2a00:dd80:3f:100::97e", - "CanPort80": true - }, - { - "Name": "23b", - "RegionID": 23, - "HostName": "derp23b.tailscale.com", - "IPv4": "185.34.3.232", - "IPv6": "2a00:dd80:3f:100::76f", - "CanPort80": true - } - ] - }, - "24": { - "RegionID": 24, - "RegionCode": "hnl", - "RegionName": "Honolulu", - "Latitude": 21.306944, - "Longitude": -157.858333, - "Nodes": [ - { - "Name": "24c", - "RegionID": 24, - "HostName": "derp24c.tailscale.com", - "IPv4": "208.83.233.233", - "IPv6": "2001:19f0:c000:c591:5400:04ff:fe26:2c5f", - "CanPort80": true - }, - { - "Name": "24d", - "RegionID": 24, - "HostName": "derp24d.tailscale.com", - "IPv4": "208.72.155.133", - "IPv6": "2001:19f0:c000:c564:5400:04ff:fe26:2ba8", - "CanPort80": true - }, - { - "Name": "24b", - "RegionID": 24, - "HostName": "derp24b.tailscale.com", - "IPv4": "208.83.234.151", - "IPv6": "2001:19f0:c000:c586:5400:04ff:fe26:2ba6", - "CanPort80": true - } - ] - }, - "25": { - "RegionID": 25, - "RegionCode": "nai", - "RegionName": "Nairobi", - "Latitude": -1.286389, - "Longitude": 36.817222, - "Nodes": [ - { - "Name": "25c", - "RegionID": 25, - "HostName": "derp25c.tailscale.com", - "IPv4": "102.67.167.37", - "IPv6": "2c0f:edb0:2000:1::2c7", - "CanPort80": true - }, - { - "Name": "25d", - "RegionID": 25, - "HostName": "derp25d.tailscale.com", - "IPv4": "102.67.167.188", - "IPv6": "2c0f:edb0:2000:1::188", - "CanPort80": true - }, - { - "Name": "25b", - "RegionID": 25, - "HostName": "derp25b.tailscale.com", - "IPv4": "102.67.167.245", - "IPv6": "2c0f:edb0:2000:1::2e9", - "CanPort80": true - } - ] - }, - "26": { - "RegionID": 26, - "RegionCode": "nue", - "RegionName": "Nuremberg", - "Latitude": 49.453889, - "Longitude": 11.0775, - "Nodes": [ - { - "Name": "26c", - "RegionID": 26, - "HostName": "derp26c.tailscale.com", - "IPv4": "49.12.193.137", - "IPv6": "2a01:4f8:1c1c:5c70::1", - "CanPort80": true - }, - { - "Name": "26d", - "RegionID": 26, - "HostName": "derp26d.tailscale.com", - "IPv4": "49.13.204.141", - "IPv6": "2a01:4f8:1c0c:7d06::1", - "CanPort80": true - }, - { - "Name": "26b", - "RegionID": 26, - "HostName": "derp26b.tailscale.com", - "IPv4": "167.235.72.200", - "IPv6": "2a01:4f8:1c1c:47b6::1", - "CanPort80": true - } - ] - }, - "27": { - "RegionID": 27, - "RegionCode": "iad", - "RegionName": "Ashburn", - "Latitude": 39.03, - "Longitude": -77.471111, - "Nodes": [ - { - "Name": "27d", - "RegionID": 27, - "HostName": "derp27d.tailscale.com", - "IPv4": "178.156.152.106", - "IPv6": "2a01:4ff:f0:3c8e::1", - "CanPort80": true - }, - { - "Name": "27c", - "RegionID": 27, - "HostName": "derp27c.tailscale.com", - "IPv4": "178.156.152.91", - "IPv6": "2a01:4ff:f0:3913::1", - "CanPort80": true - }, - { - "Name": "27e", - "RegionID": 27, - "HostName": "derp27e.tailscale.com", - "IPv4": "178.156.134.232", - "IPv6": "2a01:4ff:f0:28d4::1", - "CanPort80": true - }, - { - "Name": "27b", - "RegionID": 27, - "HostName": "derp27b.tailscale.com", - "IPv4": "5.161.218.233", - "IPv6": "2a01:4ff:f0:3db9::1", - "CanPort80": true - } - ] - }, - "28": { - "RegionID": 28, - "RegionCode": "hel", - "RegionName": "Helsinki", - "Latitude": 60.170833, - "Longitude": 24.9375, - "Nodes": [ - { - "Name": "28c", - "RegionID": 28, - "HostName": "derp28c.tailscale.com", - "IPv4": "95.217.2.165", - "IPv6": "2a01:4f9:c012:cd74::1", - "CanPort80": true - }, - { - "Name": "28d", - "RegionID": 28, - "HostName": "derp28d.tailscale.com", - "IPv4": "157.180.28.32", - "IPv6": "2a01:4f9:c012:2e5b::1", - "CanPort80": true - }, - { - "Name": "28b", - "RegionID": 28, - "HostName": "derp28b.tailscale.com", - "IPv4": "65.109.143.62", - "IPv6": "2a01:4f9:c012:d55c::1", - "CanPort80": true - } - ] - }, - "3": { - "RegionID": 3, - "RegionCode": "sin", - "RegionName": "Singapore", - "Latitude": 1.3521, - "Longitude": 103.8198, - "Nodes": [ - { - "Name": "3g", - "RegionID": 3, - "HostName": "derp3g.tailscale.com", - "IPv4": "172.237.72.79", - "IPv6": "2600:3c15::2000:adff:fe08:6fab", - "CanPort80": true - }, - { - "Name": "3f", - "RegionID": 3, - "HostName": "derp3f.tailscale.com", - "IPv4": "172.237.72.8", - "IPv6": "2600:3c15::2000:53ff:fe48:a668", - "CanPort80": true - }, - { - "Name": "3h", - "RegionID": 3, - "HostName": "derp3h.tailscale.com", - "IPv4": "172.237.66.30", - "IPv6": "2600:3c15::2000:3dff:fe44:50aa", - "CanPort80": true - }, - { - "Name": "3e", - "RegionID": 3, - "HostName": "derp3e.tailscale.com", - "IPv4": "172.237.72.43", - "IPv6": "2600:3c15::2000:6cff:fee4:d799", - "CanPort80": true - } - ] - }, - "4": { - "RegionID": 4, - "RegionCode": "fra", - "RegionName": "Frankfurt", - "Latitude": 50.1109, - "Longitude": 8.6821, - "Nodes": [ - { - "Name": "4h", - "RegionID": 4, - "HostName": "derp4h.tailscale.com", - "IPv4": "185.40.234.77", - "IPv6": "2a00:dd80:20::bcf", - "CanPort80": true - }, - { - "Name": "4g", - "RegionID": 4, - "HostName": "derp4g.tailscale.com", - "IPv4": "185.40.234.113", - "IPv6": "2a00:dd80:20::8f", - "CanPort80": true - }, - { - "Name": "4i", - "RegionID": 4, - "HostName": "derp4i.tailscale.com", - "IPv4": "185.40.234.53", - "IPv6": "2a00:dd80:20::8a6", - "CanPort80": true - }, - { - "Name": "4f", - "RegionID": 4, - "HostName": "derp4f.tailscale.com", - "IPv4": "185.40.234.219", - "IPv6": "2a00:dd80:20::a25", - "CanPort80": true - } - ] - }, - "5": { - "RegionID": 5, - "RegionCode": "syd", - "RegionName": "Sydney", - "Latitude": -33.867778, - "Longitude": 151.21, - "Nodes": [ - { - "Name": "5f", - "RegionID": 5, - "HostName": "derp5f.tailscale.com", - "IPv4": "172.105.166.103", - "IPv6": "2400:8907::2000:ccff:fe1f:80da", - "CanPort80": true - }, - { - "Name": "5g", - "RegionID": 5, - "HostName": "derp5g.tailscale.com", - "IPv4": "172.105.169.57", - "IPv6": "2400:8907::2000:2fff:fea7:57f4", - "CanPort80": true - }, - { - "Name": "5e", - "RegionID": 5, - "HostName": "derp5e.tailscale.com", - "IPv4": "172.105.179.230", - "IPv6": "2400:8907::2000:ceff:fe8d:4f4e", - "CanPort80": true - } - ] - }, - "6": { - "RegionID": 6, - "RegionCode": "blr", - "RegionName": "Bengaluru", - "Latitude": 12.9716, - "Longitude": 77.5946, - "Nodes": [ - { - "Name": "6a", - "RegionID": 6, - "HostName": "derp6.tailscale.com", - "IPv4": "68.183.90.120", - "IPv6": "2400:6180:100:d0::982:d001", - "CanPort80": true - } - ] - }, - "7": { - "RegionID": 7, - "RegionCode": "tok", - "RegionName": "Tokyo", - "Latitude": 35.6764, - "Longitude": 139.65, - "Nodes": [ - { - "Name": "7g", - "RegionID": 7, - "HostName": "derp7g.tailscale.com", - "IPv4": "172.238.6.179", - "IPv6": "2600:3c18::2000:3fff:fe80:3ebd", - "CanPort80": true - }, - { - "Name": "7f", - "RegionID": 7, - "HostName": "derp7f.tailscale.com", - "IPv4": "172.238.6.34", - "IPv6": "2600:3c18::2000:acff:fe8e:3ed5", - "CanPort80": true - }, - { - "Name": "7h", - "RegionID": 7, - "HostName": "derp7h.tailscale.com", - "IPv4": "172.237.28.183", - "IPv6": "2600:3c18::2000:b1ff:fea9:4560", - "CanPort80": true - }, - { - "Name": "7e", - "RegionID": 7, - "HostName": "derp7e.tailscale.com", - "IPv4": "172.238.6.180", - "IPv6": "2600:3c18::2000:60ff:fe0f:6e83", - "STUNOnly": true, - "CanPort80": true - } - ] - }, - "8": { - "RegionID": 8, - "RegionCode": "lhr", - "RegionName": "London", - "Latitude": 51.5072, - "Longitude": 0.1276, - "Nodes": [ - { - "Name": "8f", - "RegionID": 8, - "HostName": "derp8f.tailscale.com", - "IPv4": "176.58.88.183", - "IPv6": "2a00:dd80:3a::dfa", - "CanPort80": true - }, - { - "Name": "8g", - "RegionID": 8, - "HostName": "derp8g.tailscale.com", - "IPv4": "176.58.92.254", - "IPv6": "2a00:dd80:3a::ed", - "CanPort80": true - }, - { - "Name": "8e", - "RegionID": 8, - "HostName": "derp8e.tailscale.com", - "IPv4": "176.58.92.144", - "IPv6": "2a00:dd80:3a::b33", - "CanPort80": true - } - ] - }, - "9": { - "RegionID": 9, - "RegionCode": "dfw", - "RegionName": "Dallas", - "Latitude": 32.779167, - "Longitude": -96.808889, - "Nodes": [ - { - "Name": "9e", - "RegionID": 9, - "HostName": "derp9e.tailscale.com", - "IPv4": "192.73.248.83", - "IPv6": "2607:f740:100::359", - "CanPort80": true - }, - { - "Name": "9f", - "RegionID": 9, - "HostName": "derp9f.tailscale.com", - "IPv4": "209.177.156.197", - "IPv6": "2607:f740:100::cad", - "CanPort80": true - }, - { - "Name": "9d", - "RegionID": 9, - "HostName": "derp9d.tailscale.com", - "IPv4": "209.177.156.94", - "IPv6": "2607:f740:100::c05", - "CanPort80": true - } - ] - } - } - }, - "DisplayMessages": null, - "TKAEnabled": false, - "TKAHead": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", - "Domain": "kratail2tid@passkey", - "DomainAuditLogID": "", - "UserProfiles": { - "1440249486084758": { - "ID": 1440249486084758, - "LoginName": "tagged-server.tail78f774.ts.net", - "DisplayName": "tagged-server" - } - } + "PacketFilterRules": 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.124.195.93": { - "peer_name": "exit-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-kris/tailscaled.sock whois --json 100.124.195.93", - "response": null - }, - "100.116.18.24": { - "peer_name": "exit-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-kris/tailscaled.sock whois --json 100.116.18.24", - "response": null - }, - "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.107.162.14": { - "peer_name": "group-a-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-kris/tailscaled.sock whois --json 100.107.162.14", - "response": null - }, - "100.77.135.18": { - "peer_name": "group-b-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-kris/tailscaled.sock whois --json 100.77.135.18", - "response": null - }, - "100.105.127.107": { - "peer_name": "multi-exit-router", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-kris/tailscaled.sock whois --json 100.105.127.107", - "response": null - }, - "100.109.43.124": { - "peer_name": "router-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-kris/tailscaled.sock whois --json 100.109.43.124", - "response": null - }, - "100.65.172.123": { - "peer_name": "router-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-kris/tailscaled.sock whois --json 100.65.172.123", - "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 - } - }, "netmap": { - "SelfNode": { - "ID": 7728836216590060, - "StableID": "nf4dJTRQM321CNTRL", - "Name": "user-kris.tail78f774.ts.net.", - "User": 4538565228176803, - "Key": "nodekey:40d0f8f49fd519e4a4a2b7d278dcc8863254d4fb8b0219f1d1304cdd172e795f", - "KeyExpiry": "2026-08-19T14:09:34Z", - "DiscoKey": "discokey:60de987544859962048376b0950731bfa8017a7fc7df694ef376d4bb42eb9871", - "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:59717", "10.65.0.27:59717", "172.17.0.1:59717"], - "Hostinfo": { - "Hostname": "user-kris", - "Services": [ - { "Proto": "peerapi4", "Port": 40159 }, - { "Proto": "peerapi6", "Port": 40159 }, - { "Proto": "peerapi-dns-proxy", "Port": 1 } - ] - }, - "Created": "2026-02-20T14:09:34.803901523Z", - "MachineAuthorized": true, - "CapMap": { - "https://tailscale.com/cap/file-sharing": null, - "https://tailscale.com/cap/is-admin": null, - "https://tailscale.com/cap/ssh": null, - "https://tailscale.com/cap/tailnet-lock": null, - "probe-udp-lifetime": null, - "ssh-behavior-v1": null, - "ssh-env-vars": null, - "store-appc-routes": null, - "tailnet-display-name": ["kratail2tid@passkey"] - }, - "ComputedName": "user-kris", - "ComputedNameWithHost": "user-kris" - }, - "AllCaps": [ - "probe-udp-lifetime", - "ssh-env-vars", - "https://tailscale.com/cap/file-sharing", - "https://tailscale.com/cap/ssh", - "https://tailscale.com/cap/tailnet-lock", - "https://tailscale.com/cap/is-admin", - "store-appc-routes", - "tailnet-display-name", - "ssh-behavior-v1" - ], - "NodeKey": "nodekey:40d0f8f49fd519e4a4a2b7d278dcc8863254d4fb8b0219f1d1304cdd172e795f", - "MachineKey": "mkey:ff16066d907c58407972ee4a05a30386bd21bc0b420d8f9290eb70b95b3e1457", "Peers": [], - "DNS": { - "Routes": { - "tail78f774.ts.net.": null, - "ts.net.": [{ "Addr": "199.247.155.53" }, { "Addr": "2620:111:8007::53" }] - }, - "Domains": ["tail78f774.ts.net"], - "Proxied": true, - "ExitNodeFilteredSet": [".ts.net", ".tailscale.net"] - }, - "PacketFilter": [], - "PacketFilterRules": null, - "SSHPolicy": { "rules": [] }, - "CollectServices": false, - "DERPMap": { - "Regions": { - "1": { - "RegionID": 1, - "RegionCode": "nyc", - "RegionName": "New York City", - "Latitude": 40.7128, - "Longitude": -74.006, - "Nodes": [ - { - "Name": "1h", - "RegionID": 1, - "HostName": "derp1h.tailscale.com", - "IPv4": "199.38.181.93", - "IPv6": "2607:f740:f::afd", - "CanPort80": true - }, - { - "Name": "1g", - "RegionID": 1, - "HostName": "derp1g.tailscale.com", - "IPv4": "209.177.145.120", - "IPv6": "2607:f740:f::3eb", - "CanPort80": true - }, - { - "Name": "1i", - "RegionID": 1, - "HostName": "derp1i.tailscale.com", - "IPv4": "199.38.181.103", - "IPv6": "2607:f740:f::e19", - "CanPort80": true - }, - { - "Name": "1f", - "RegionID": 1, - "HostName": "derp1f.tailscale.com", - "IPv4": "199.38.181.104", - "IPv6": "2607:f740:f::bc", - "CanPort80": true - } - ] - }, - "10": { - "RegionID": 10, - "RegionCode": "sea", - "RegionName": "Seattle", - "Latitude": 47.609722, - "Longitude": -122.333056, - "Nodes": [ - { - "Name": "10c", - "RegionID": 10, - "HostName": "derp10c.tailscale.com", - "IPv4": "192.73.240.121", - "IPv6": "2607:f740:14::40c", - "CanPort80": true - }, - { - "Name": "10d", - "RegionID": 10, - "HostName": "derp10d.tailscale.com", - "IPv4": "192.73.240.132", - "IPv6": "2607:f740:14::500", - "CanPort80": true - }, - { - "Name": "10b", - "RegionID": 10, - "HostName": "derp10b.tailscale.com", - "IPv4": "192.73.240.161", - "IPv6": "2607:f740:14::61c", - "CanPort80": true - } - ] - }, - "11": { - "RegionID": 11, - "RegionCode": "sao", - "RegionName": "São Paulo", - "Latitude": -23.55, - "Longitude": -46.633333, - "Nodes": [ - { - "Name": "11f", - "RegionID": 11, - "HostName": "derp11f.tailscale.com", - "IPv4": "172.237.61.197", - "IPv6": "2600:3c0d::2000:3bff:fe44:6166", - "CanPort80": true - }, - { - "Name": "11g", - "RegionID": 11, - "HostName": "derp11g.tailscale.com", - "IPv4": "172.237.61.190", - "IPv6": "2600:3c0d::2000:62ff:febe:2e67", - "CanPort80": true - }, - { - "Name": "11e", - "RegionID": 11, - "HostName": "derp11e.tailscale.com", - "IPv4": "172.237.61.194", - "IPv6": "2600:3c0d::2000:d2ff:fe43:1790", - "CanPort80": true - } - ] - }, - "12": { - "RegionID": 12, - "RegionCode": "ord", - "RegionName": "Chicago", - "Latitude": 41.881944, - "Longitude": -87.627778, - "Nodes": [ - { - "Name": "12e", - "RegionID": 12, - "HostName": "derp12e.tailscale.com", - "IPv4": "209.177.158.15", - "IPv6": "2607:f740:e::b17", - "CanPort80": true - }, - { - "Name": "12f", - "RegionID": 12, - "HostName": "derp12f.tailscale.com", - "IPv4": "199.38.182.118", - "IPv6": "2607:f740:e::4c8", - "CanPort80": true - }, - { - "Name": "12d", - "RegionID": 12, - "HostName": "derp12d.tailscale.com", - "IPv4": "209.177.158.246", - "IPv6": "2607:f740:e::811", - "CanPort80": true - } - ] - }, - "13": { - "RegionID": 13, - "RegionCode": "den", - "RegionName": "Denver", - "Latitude": 39.7392, - "Longitude": -104.9849, - "Nodes": [ - { - "Name": "13c", - "RegionID": 13, - "HostName": "derp13c.tailscale.com", - "IPv4": "192.73.242.28", - "IPv6": "2607:f740:16::5c", - "CanPort80": true - }, - { - "Name": "13d", - "RegionID": 13, - "HostName": "derp13d.tailscale.com", - "IPv4": "192.73.242.204", - "IPv6": "2607:f740:16::c23", - "CanPort80": true - }, - { - "Name": "13b", - "RegionID": 13, - "HostName": "derp13b.tailscale.com", - "IPv4": "192.73.242.187", - "IPv6": "2607:f740:16::640", - "CanPort80": true - } - ] - }, - "14": { - "RegionID": 14, - "RegionCode": "ams", - "RegionName": "Amsterdam", - "Latitude": 52.372778, - "Longitude": 4.893611, - "Nodes": [ - { - "Name": "14c", - "RegionID": 14, - "HostName": "derp14c.tailscale.com", - "IPv4": "176.58.93.147", - "IPv6": "2a00:dd80:3c::b09", - "CanPort80": true - }, - { - "Name": "14d", - "RegionID": 14, - "HostName": "derp14d.tailscale.com", - "IPv4": "176.58.93.154", - "IPv6": "2a00:dd80:3c::3d5", - "CanPort80": true - }, - { - "Name": "14b", - "RegionID": 14, - "HostName": "derp14b.tailscale.com", - "IPv4": "176.58.93.248", - "IPv6": "2a00:dd80:3c::807", - "CanPort80": true - } - ] - }, - "15": { - "RegionID": 15, - "RegionCode": "jnb", - "RegionName": "Johannesburg", - "Latitude": -26.204444, - "Longitude": 28.045556, - "Nodes": [ - { - "Name": "15c", - "RegionID": 15, - "HostName": "derp15c.tailscale.com", - "IPv4": "102.67.165.185", - "IPv6": "2c0f:edb0:0:10::b59", - "CanPort80": true - }, - { - "Name": "15d", - "RegionID": 15, - "HostName": "derp15d.tailscale.com", - "IPv4": "102.67.165.36", - "IPv6": "2c0f:edb0:0:10::599", - "CanPort80": true - }, - { - "Name": "15b", - "RegionID": 15, - "HostName": "derp15b.tailscale.com", - "IPv4": "102.67.165.90", - "IPv6": "2c0f:edb0:0:10::963", - "CanPort80": true - } - ] - }, - "16": { - "RegionID": 16, - "RegionCode": "mia", - "RegionName": "Miami", - "Latitude": 25.78, - "Longitude": -80.21, - "Nodes": [ - { - "Name": "16c", - "RegionID": 16, - "HostName": "derp16c.tailscale.com", - "IPv4": "192.73.243.229", - "IPv6": "2607:f740:17::4e4", - "CanPort80": true - }, - { - "Name": "16d", - "RegionID": 16, - "HostName": "derp16d.tailscale.com", - "IPv4": "192.73.243.141", - "IPv6": "2607:f740:17::475", - "CanPort80": true - }, - { - "Name": "16b", - "RegionID": 16, - "HostName": "derp16b.tailscale.com", - "IPv4": "192.73.243.135", - "IPv6": "2607:f740:17::476", - "CanPort80": true - } - ] - }, - "17": { - "RegionID": 17, - "RegionCode": "lax", - "RegionName": "Los Angeles", - "Latitude": 34.05, - "Longitude": -118.25, - "Nodes": [ - { - "Name": "17c", - "RegionID": 17, - "HostName": "derp17c.tailscale.com", - "IPv4": "208.111.40.12", - "IPv6": "2607:f740:c::10", - "CanPort80": true - }, - { - "Name": "17d", - "RegionID": 17, - "HostName": "derp17d.tailscale.com", - "IPv4": "208.111.40.216", - "IPv6": "2607:f740:c::e1b", - "CanPort80": true - }, - { - "Name": "17b", - "RegionID": 17, - "HostName": "derp17b.tailscale.com", - "IPv4": "192.73.244.245", - "IPv6": "2607:f740:c::646", - "CanPort80": true - } - ] - }, - "18": { - "RegionID": 18, - "RegionCode": "par", - "RegionName": "Paris", - "Latitude": 48.856667, - "Longitude": 2.352222, - "Nodes": [ - { - "Name": "18c", - "RegionID": 18, - "HostName": "derp18c.tailscale.com", - "IPv4": "176.58.90.207", - "IPv6": "2a00:dd80:3e::c19", - "CanPort80": true - }, - { - "Name": "18d", - "RegionID": 18, - "HostName": "derp18d.tailscale.com", - "IPv4": "176.58.90.104", - "IPv6": "2a00:dd80:3e::f2e", - "CanPort80": true - }, - { - "Name": "18b", - "RegionID": 18, - "HostName": "derp18b.tailscale.com", - "IPv4": "176.58.90.147", - "IPv6": "2a00:dd80:3e::363", - "CanPort80": true - } - ] - }, - "19": { - "RegionID": 19, - "RegionCode": "mad", - "RegionName": "Madrid", - "Latitude": 40.416944, - "Longitude": -3.703333, - "Nodes": [ - { - "Name": "19c", - "RegionID": 19, - "HostName": "derp19c.tailscale.com", - "IPv4": "45.159.97.61", - "IPv6": "2a00:dd80:14:10::20", - "CanPort80": true - }, - { - "Name": "19d", - "RegionID": 19, - "HostName": "derp19d.tailscale.com", - "IPv4": "45.159.97.233", - "IPv6": "2a00:dd80:14:10::34a", - "CanPort80": true - }, - { - "Name": "19b", - "RegionID": 19, - "HostName": "derp19b.tailscale.com", - "IPv4": "45.159.97.144", - "IPv6": "2a00:dd80:14:10::335", - "CanPort80": true - } - ] - }, - "2": { - "RegionID": 2, - "RegionCode": "sfo", - "RegionName": "San Francisco", - "Latitude": 37.7775, - "Longitude": -122.416389, - "Nodes": [ - { - "Name": "2e", - "RegionID": 2, - "HostName": "derp2e.tailscale.com", - "IPv4": "192.73.252.134", - "IPv6": "2607:f740:0:3f::44c", - "CanPort80": true - }, - { - "Name": "2f", - "RegionID": 2, - "HostName": "derp2f.tailscale.com", - "IPv4": "208.111.34.178", - "IPv6": "2607:f740:0:3f::f4", - "CanPort80": true - }, - { - "Name": "2d", - "RegionID": 2, - "HostName": "derp2d.tailscale.com", - "IPv4": "192.73.252.65", - "IPv6": "2607:f740:0:3f::287", - "CanPort80": true - } - ] - }, - "20": { - "RegionID": 20, - "RegionCode": "hkg", - "RegionName": "Hong Kong", - "Latitude": 22.3193, - "Longitude": 114.1694, - "Nodes": [ - { - "Name": "20c", - "RegionID": 20, - "HostName": "derp20c.tailscale.com", - "IPv4": "205.147.105.30", - "IPv6": "2403:2500:8000:1::5fb", - "CanPort80": true - }, - { - "Name": "20d", - "RegionID": 20, - "HostName": "derp20d.tailscale.com", - "IPv4": "205.147.105.78", - "IPv6": "2403:2500:8000:1::e9a", - "CanPort80": true - }, - { - "Name": "20b", - "RegionID": 20, - "HostName": "derp20b.tailscale.com", - "IPv4": "103.6.84.152", - "IPv6": "2403:2500:8000:1::ef6", - "CanPort80": true - } - ] - }, - "21": { - "RegionID": 21, - "RegionCode": "tor", - "RegionName": "Toronto", - "Latitude": 43.741667, - "Longitude": -79.373333, - "Nodes": [ - { - "Name": "21c", - "RegionID": 21, - "HostName": "derp21c.tailscale.com", - "IPv4": "162.248.221.215", - "IPv6": "2607:f740:50::f10", - "CanPort80": true - }, - { - "Name": "21d", - "RegionID": 21, - "HostName": "derp21d.tailscale.com", - "IPv4": "162.248.221.248", - "IPv6": "2607:f740:50::ca4", - "CanPort80": true - }, - { - "Name": "21b", - "RegionID": 21, - "HostName": "derp21b.tailscale.com", - "IPv4": "162.248.221.199", - "IPv6": "2607:f740:50::1d1", - "CanPort80": true - } - ] - }, - "22": { - "RegionID": 22, - "RegionCode": "waw", - "RegionName": "Warsaw", - "Latitude": 52.23, - "Longitude": 21.011111, - "Nodes": [ - { - "Name": "22c", - "RegionID": 22, - "HostName": "derp22c.tailscale.com", - "IPv4": "45.159.98.253", - "IPv6": "2a00:dd80:40:100::3f", - "CanPort80": true - }, - { - "Name": "22d", - "RegionID": 22, - "HostName": "derp22d.tailscale.com", - "IPv4": "45.159.98.145", - "IPv6": "2a00:dd80:40:100::211", - "CanPort80": true - }, - { - "Name": "22b", - "RegionID": 22, - "HostName": "derp22b.tailscale.com", - "IPv4": "45.159.98.196", - "IPv6": "2a00:dd80:40:100::316", - "CanPort80": true - } - ] - }, - "23": { - "RegionID": 23, - "RegionCode": "dbi", - "RegionName": "Dubai", - "Latitude": 25.263056, - "Longitude": 55.297222, - "Nodes": [ - { - "Name": "23c", - "RegionID": 23, - "HostName": "derp23c.tailscale.com", - "IPv4": "185.34.3.207", - "IPv6": "2a00:dd80:3f:100::a50", - "CanPort80": true - }, - { - "Name": "23d", - "RegionID": 23, - "HostName": "derp23d.tailscale.com", - "IPv4": "185.34.3.75", - "IPv6": "2a00:dd80:3f:100::97e", - "CanPort80": true - }, - { - "Name": "23b", - "RegionID": 23, - "HostName": "derp23b.tailscale.com", - "IPv4": "185.34.3.232", - "IPv6": "2a00:dd80:3f:100::76f", - "CanPort80": true - } - ] - }, - "24": { - "RegionID": 24, - "RegionCode": "hnl", - "RegionName": "Honolulu", - "Latitude": 21.306944, - "Longitude": -157.858333, - "Nodes": [ - { - "Name": "24c", - "RegionID": 24, - "HostName": "derp24c.tailscale.com", - "IPv4": "208.83.233.233", - "IPv6": "2001:19f0:c000:c591:5400:04ff:fe26:2c5f", - "CanPort80": true - }, - { - "Name": "24d", - "RegionID": 24, - "HostName": "derp24d.tailscale.com", - "IPv4": "208.72.155.133", - "IPv6": "2001:19f0:c000:c564:5400:04ff:fe26:2ba8", - "CanPort80": true - }, - { - "Name": "24b", - "RegionID": 24, - "HostName": "derp24b.tailscale.com", - "IPv4": "208.83.234.151", - "IPv6": "2001:19f0:c000:c586:5400:04ff:fe26:2ba6", - "CanPort80": true - } - ] - }, - "25": { - "RegionID": 25, - "RegionCode": "nai", - "RegionName": "Nairobi", - "Latitude": -1.286389, - "Longitude": 36.817222, - "Nodes": [ - { - "Name": "25c", - "RegionID": 25, - "HostName": "derp25c.tailscale.com", - "IPv4": "102.67.167.37", - "IPv6": "2c0f:edb0:2000:1::2c7", - "CanPort80": true - }, - { - "Name": "25d", - "RegionID": 25, - "HostName": "derp25d.tailscale.com", - "IPv4": "102.67.167.188", - "IPv6": "2c0f:edb0:2000:1::188", - "CanPort80": true - }, - { - "Name": "25b", - "RegionID": 25, - "HostName": "derp25b.tailscale.com", - "IPv4": "102.67.167.245", - "IPv6": "2c0f:edb0:2000:1::2e9", - "CanPort80": true - } - ] - }, - "26": { - "RegionID": 26, - "RegionCode": "nue", - "RegionName": "Nuremberg", - "Latitude": 49.453889, - "Longitude": 11.0775, - "Nodes": [ - { - "Name": "26c", - "RegionID": 26, - "HostName": "derp26c.tailscale.com", - "IPv4": "49.12.193.137", - "IPv6": "2a01:4f8:1c1c:5c70::1", - "CanPort80": true - }, - { - "Name": "26d", - "RegionID": 26, - "HostName": "derp26d.tailscale.com", - "IPv4": "49.13.204.141", - "IPv6": "2a01:4f8:1c0c:7d06::1", - "CanPort80": true - }, - { - "Name": "26b", - "RegionID": 26, - "HostName": "derp26b.tailscale.com", - "IPv4": "167.235.72.200", - "IPv6": "2a01:4f8:1c1c:47b6::1", - "CanPort80": true - } - ] - }, - "27": { - "RegionID": 27, - "RegionCode": "iad", - "RegionName": "Ashburn", - "Latitude": 39.03, - "Longitude": -77.471111, - "Nodes": [ - { - "Name": "27d", - "RegionID": 27, - "HostName": "derp27d.tailscale.com", - "IPv4": "178.156.152.106", - "IPv6": "2a01:4ff:f0:3c8e::1", - "CanPort80": true - }, - { - "Name": "27c", - "RegionID": 27, - "HostName": "derp27c.tailscale.com", - "IPv4": "178.156.152.91", - "IPv6": "2a01:4ff:f0:3913::1", - "CanPort80": true - }, - { - "Name": "27e", - "RegionID": 27, - "HostName": "derp27e.tailscale.com", - "IPv4": "178.156.134.232", - "IPv6": "2a01:4ff:f0:28d4::1", - "CanPort80": true - }, - { - "Name": "27b", - "RegionID": 27, - "HostName": "derp27b.tailscale.com", - "IPv4": "5.161.218.233", - "IPv6": "2a01:4ff:f0:3db9::1", - "CanPort80": true - } - ] - }, - "28": { - "RegionID": 28, - "RegionCode": "hel", - "RegionName": "Helsinki", - "Latitude": 60.170833, - "Longitude": 24.9375, - "Nodes": [ - { - "Name": "28c", - "RegionID": 28, - "HostName": "derp28c.tailscale.com", - "IPv4": "95.217.2.165", - "IPv6": "2a01:4f9:c012:cd74::1", - "CanPort80": true - }, - { - "Name": "28d", - "RegionID": 28, - "HostName": "derp28d.tailscale.com", - "IPv4": "157.180.28.32", - "IPv6": "2a01:4f9:c012:2e5b::1", - "CanPort80": true - }, - { - "Name": "28b", - "RegionID": 28, - "HostName": "derp28b.tailscale.com", - "IPv4": "65.109.143.62", - "IPv6": "2a01:4f9:c012:d55c::1", - "CanPort80": true - } - ] - }, - "3": { - "RegionID": 3, - "RegionCode": "sin", - "RegionName": "Singapore", - "Latitude": 1.3521, - "Longitude": 103.8198, - "Nodes": [ - { - "Name": "3g", - "RegionID": 3, - "HostName": "derp3g.tailscale.com", - "IPv4": "172.237.72.79", - "IPv6": "2600:3c15::2000:adff:fe08:6fab", - "CanPort80": true - }, - { - "Name": "3f", - "RegionID": 3, - "HostName": "derp3f.tailscale.com", - "IPv4": "172.237.72.8", - "IPv6": "2600:3c15::2000:53ff:fe48:a668", - "CanPort80": true - }, - { - "Name": "3h", - "RegionID": 3, - "HostName": "derp3h.tailscale.com", - "IPv4": "172.237.66.30", - "IPv6": "2600:3c15::2000:3dff:fe44:50aa", - "CanPort80": true - }, - { - "Name": "3e", - "RegionID": 3, - "HostName": "derp3e.tailscale.com", - "IPv4": "172.237.72.43", - "IPv6": "2600:3c15::2000:6cff:fee4:d799", - "CanPort80": true - } - ] - }, - "4": { - "RegionID": 4, - "RegionCode": "fra", - "RegionName": "Frankfurt", - "Latitude": 50.1109, - "Longitude": 8.6821, - "Nodes": [ - { - "Name": "4h", - "RegionID": 4, - "HostName": "derp4h.tailscale.com", - "IPv4": "185.40.234.77", - "IPv6": "2a00:dd80:20::bcf", - "CanPort80": true - }, - { - "Name": "4g", - "RegionID": 4, - "HostName": "derp4g.tailscale.com", - "IPv4": "185.40.234.113", - "IPv6": "2a00:dd80:20::8f", - "CanPort80": true - }, - { - "Name": "4i", - "RegionID": 4, - "HostName": "derp4i.tailscale.com", - "IPv4": "185.40.234.53", - "IPv6": "2a00:dd80:20::8a6", - "CanPort80": true - }, - { - "Name": "4f", - "RegionID": 4, - "HostName": "derp4f.tailscale.com", - "IPv4": "185.40.234.219", - "IPv6": "2a00:dd80:20::a25", - "CanPort80": true - } - ] - }, - "5": { - "RegionID": 5, - "RegionCode": "syd", - "RegionName": "Sydney", - "Latitude": -33.867778, - "Longitude": 151.21, - "Nodes": [ - { - "Name": "5f", - "RegionID": 5, - "HostName": "derp5f.tailscale.com", - "IPv4": "172.105.166.103", - "IPv6": "2400:8907::2000:ccff:fe1f:80da", - "CanPort80": true - }, - { - "Name": "5g", - "RegionID": 5, - "HostName": "derp5g.tailscale.com", - "IPv4": "172.105.169.57", - "IPv6": "2400:8907::2000:2fff:fea7:57f4", - "CanPort80": true - }, - { - "Name": "5e", - "RegionID": 5, - "HostName": "derp5e.tailscale.com", - "IPv4": "172.105.179.230", - "IPv6": "2400:8907::2000:ceff:fe8d:4f4e", - "CanPort80": true - } - ] - }, - "6": { - "RegionID": 6, - "RegionCode": "blr", - "RegionName": "Bengaluru", - "Latitude": 12.9716, - "Longitude": 77.5946, - "Nodes": [ - { - "Name": "6a", - "RegionID": 6, - "HostName": "derp6.tailscale.com", - "IPv4": "68.183.90.120", - "IPv6": "2400:6180:100:d0::982:d001", - "CanPort80": true - } - ] - }, - "7": { - "RegionID": 7, - "RegionCode": "tok", - "RegionName": "Tokyo", - "Latitude": 35.6764, - "Longitude": 139.65, - "Nodes": [ - { - "Name": "7g", - "RegionID": 7, - "HostName": "derp7g.tailscale.com", - "IPv4": "172.238.6.179", - "IPv6": "2600:3c18::2000:3fff:fe80:3ebd", - "CanPort80": true - }, - { - "Name": "7f", - "RegionID": 7, - "HostName": "derp7f.tailscale.com", - "IPv4": "172.238.6.34", - "IPv6": "2600:3c18::2000:acff:fe8e:3ed5", - "CanPort80": true - }, - { - "Name": "7h", - "RegionID": 7, - "HostName": "derp7h.tailscale.com", - "IPv4": "172.237.28.183", - "IPv6": "2600:3c18::2000:b1ff:fea9:4560", - "CanPort80": true - }, - { - "Name": "7e", - "RegionID": 7, - "HostName": "derp7e.tailscale.com", - "IPv4": "172.238.6.180", - "IPv6": "2600:3c18::2000:60ff:fe0f:6e83", - "STUNOnly": true, - "CanPort80": true - } - ] - }, - "8": { - "RegionID": 8, - "RegionCode": "lhr", - "RegionName": "London", - "Latitude": 51.5072, - "Longitude": 0.1276, - "Nodes": [ - { - "Name": "8f", - "RegionID": 8, - "HostName": "derp8f.tailscale.com", - "IPv4": "176.58.88.183", - "IPv6": "2a00:dd80:3a::dfa", - "CanPort80": true - }, - { - "Name": "8g", - "RegionID": 8, - "HostName": "derp8g.tailscale.com", - "IPv4": "176.58.92.254", - "IPv6": "2a00:dd80:3a::ed", - "CanPort80": true - }, - { - "Name": "8e", - "RegionID": 8, - "HostName": "derp8e.tailscale.com", - "IPv4": "176.58.92.144", - "IPv6": "2a00:dd80:3a::b33", - "CanPort80": true - } - ] - }, - "9": { - "RegionID": 9, - "RegionCode": "dfw", - "RegionName": "Dallas", - "Latitude": 32.779167, - "Longitude": -96.808889, - "Nodes": [ - { - "Name": "9e", - "RegionID": 9, - "HostName": "derp9e.tailscale.com", - "IPv4": "192.73.248.83", - "IPv6": "2607:f740:100::359", - "CanPort80": true - }, - { - "Name": "9f", - "RegionID": 9, - "HostName": "derp9f.tailscale.com", - "IPv4": "209.177.156.197", - "IPv6": "2607:f740:100::cad", - "CanPort80": true - }, - { - "Name": "9d", - "RegionID": 9, - "HostName": "derp9d.tailscale.com", - "IPv4": "209.177.156.94", - "IPv6": "2607:f740:100::c05", - "CanPort80": true - } - ] - } - } - }, - "DisplayMessages": null, - "TKAEnabled": false, - "TKAHead": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", - "Domain": "kratail2tid@passkey", - "DomainAuditLogID": "", - "UserProfiles": { - "4538565228176803": { - "ID": 4538565228176803, - "LoginName": "kristoffer@dalby.cc", - "DisplayName": "kristoffer" - } - } + "PacketFilterRules": 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.124.195.93": { - "peer_name": "exit-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-mon/tailscaled.sock whois --json 100.124.195.93", - "response": null - }, - "100.116.18.24": { - "peer_name": "exit-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-mon/tailscaled.sock whois --json 100.116.18.24", - "response": null - }, - "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.107.162.14": { - "peer_name": "group-a-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-mon/tailscaled.sock whois --json 100.107.162.14", - "response": null - }, - "100.77.135.18": { - "peer_name": "group-b-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-mon/tailscaled.sock whois --json 100.77.135.18", - "response": null - }, - "100.105.127.107": { - "peer_name": "multi-exit-router", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-mon/tailscaled.sock whois --json 100.105.127.107", - "response": null - }, - "100.109.43.124": { - "peer_name": "router-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-mon/tailscaled.sock whois --json 100.109.43.124", - "response": null - }, - "100.65.172.123": { - "peer_name": "router-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-mon/tailscaled.sock whois --json 100.65.172.123", - "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 - } - }, "netmap": { - "SelfNode": { - "ID": 1840115676059256, - "StableID": "nFzZ7giPNF11CNTRL", - "Name": "user-mon.tail78f774.ts.net.", - "User": 3982058329734709, - "Key": "nodekey:1ca6cca66d2b3811ec290c2f7ac30125c3568e19e303a8e30f6b165c9ee75a51", - "KeyExpiry": "2026-08-19T14:09:00Z", - "DiscoKey": "discokey:67ba1473894f09b564073adb12b27df2a45c513afd9e48922a0346d5d2715d12", - "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:36593", "10.65.0.27:36593", "172.17.0.1:36593"], - "Hostinfo": { - "Hostname": "user-mon", - "Services": [ - { "Proto": "peerapi4", "Port": 33201 }, - { "Proto": "peerapi6", "Port": 33201 }, - { "Proto": "peerapi-dns-proxy", "Port": 1 } - ] - }, - "Created": "2026-02-20T14:09:00.203639664Z", - "MachineAuthorized": true, - "CapMap": { - "https://tailscale.com/cap/file-sharing": null, - "https://tailscale.com/cap/is-admin": null, - "https://tailscale.com/cap/ssh": null, - "https://tailscale.com/cap/tailnet-lock": null, - "probe-udp-lifetime": null, - "ssh-behavior-v1": null, - "ssh-env-vars": null, - "store-appc-routes": null, - "tailnet-display-name": ["kratail2tid@passkey"] - }, - "ComputedName": "user-mon", - "ComputedNameWithHost": "user-mon" - }, - "AllCaps": [ - "probe-udp-lifetime", - "ssh-env-vars", - "https://tailscale.com/cap/tailnet-lock", - "https://tailscale.com/cap/ssh", - "tailnet-display-name", - "https://tailscale.com/cap/is-admin", - "ssh-behavior-v1", - "store-appc-routes", - "https://tailscale.com/cap/file-sharing" - ], - "NodeKey": "nodekey:1ca6cca66d2b3811ec290c2f7ac30125c3568e19e303a8e30f6b165c9ee75a51", - "MachineKey": "mkey:d63fc325663eef5dabd4d236e1fa5a26ed14ad31ea0711840cf755a5e8a9df39", "Peers": [], - "DNS": { - "Routes": { - "tail78f774.ts.net.": null, - "ts.net.": [{ "Addr": "199.247.155.53" }, { "Addr": "2620:111:8007::53" }] - }, - "Domains": ["tail78f774.ts.net"], - "Proxied": true, - "ExitNodeFilteredSet": [".ts.net", ".tailscale.net"] - }, - "PacketFilter": [], - "PacketFilterRules": null, - "SSHPolicy": { "rules": [] }, - "CollectServices": false, - "DERPMap": { - "Regions": { - "1": { - "RegionID": 1, - "RegionCode": "nyc", - "RegionName": "New York City", - "Latitude": 40.7128, - "Longitude": -74.006, - "Nodes": [ - { - "Name": "1h", - "RegionID": 1, - "HostName": "derp1h.tailscale.com", - "IPv4": "199.38.181.93", - "IPv6": "2607:f740:f::afd", - "CanPort80": true - }, - { - "Name": "1g", - "RegionID": 1, - "HostName": "derp1g.tailscale.com", - "IPv4": "209.177.145.120", - "IPv6": "2607:f740:f::3eb", - "CanPort80": true - }, - { - "Name": "1i", - "RegionID": 1, - "HostName": "derp1i.tailscale.com", - "IPv4": "199.38.181.103", - "IPv6": "2607:f740:f::e19", - "CanPort80": true - }, - { - "Name": "1f", - "RegionID": 1, - "HostName": "derp1f.tailscale.com", - "IPv4": "199.38.181.104", - "IPv6": "2607:f740:f::bc", - "CanPort80": true - } - ] - }, - "10": { - "RegionID": 10, - "RegionCode": "sea", - "RegionName": "Seattle", - "Latitude": 47.609722, - "Longitude": -122.333056, - "Nodes": [ - { - "Name": "10c", - "RegionID": 10, - "HostName": "derp10c.tailscale.com", - "IPv4": "192.73.240.121", - "IPv6": "2607:f740:14::40c", - "CanPort80": true - }, - { - "Name": "10d", - "RegionID": 10, - "HostName": "derp10d.tailscale.com", - "IPv4": "192.73.240.132", - "IPv6": "2607:f740:14::500", - "CanPort80": true - }, - { - "Name": "10b", - "RegionID": 10, - "HostName": "derp10b.tailscale.com", - "IPv4": "192.73.240.161", - "IPv6": "2607:f740:14::61c", - "CanPort80": true - } - ] - }, - "11": { - "RegionID": 11, - "RegionCode": "sao", - "RegionName": "São Paulo", - "Latitude": -23.55, - "Longitude": -46.633333, - "Nodes": [ - { - "Name": "11f", - "RegionID": 11, - "HostName": "derp11f.tailscale.com", - "IPv4": "172.237.61.197", - "IPv6": "2600:3c0d::2000:3bff:fe44:6166", - "CanPort80": true - }, - { - "Name": "11g", - "RegionID": 11, - "HostName": "derp11g.tailscale.com", - "IPv4": "172.237.61.190", - "IPv6": "2600:3c0d::2000:62ff:febe:2e67", - "CanPort80": true - }, - { - "Name": "11e", - "RegionID": 11, - "HostName": "derp11e.tailscale.com", - "IPv4": "172.237.61.194", - "IPv6": "2600:3c0d::2000:d2ff:fe43:1790", - "CanPort80": true - } - ] - }, - "12": { - "RegionID": 12, - "RegionCode": "ord", - "RegionName": "Chicago", - "Latitude": 41.881944, - "Longitude": -87.627778, - "Nodes": [ - { - "Name": "12e", - "RegionID": 12, - "HostName": "derp12e.tailscale.com", - "IPv4": "209.177.158.15", - "IPv6": "2607:f740:e::b17", - "CanPort80": true - }, - { - "Name": "12f", - "RegionID": 12, - "HostName": "derp12f.tailscale.com", - "IPv4": "199.38.182.118", - "IPv6": "2607:f740:e::4c8", - "CanPort80": true - }, - { - "Name": "12d", - "RegionID": 12, - "HostName": "derp12d.tailscale.com", - "IPv4": "209.177.158.246", - "IPv6": "2607:f740:e::811", - "CanPort80": true - } - ] - }, - "13": { - "RegionID": 13, - "RegionCode": "den", - "RegionName": "Denver", - "Latitude": 39.7392, - "Longitude": -104.9849, - "Nodes": [ - { - "Name": "13c", - "RegionID": 13, - "HostName": "derp13c.tailscale.com", - "IPv4": "192.73.242.28", - "IPv6": "2607:f740:16::5c", - "CanPort80": true - }, - { - "Name": "13d", - "RegionID": 13, - "HostName": "derp13d.tailscale.com", - "IPv4": "192.73.242.204", - "IPv6": "2607:f740:16::c23", - "CanPort80": true - }, - { - "Name": "13b", - "RegionID": 13, - "HostName": "derp13b.tailscale.com", - "IPv4": "192.73.242.187", - "IPv6": "2607:f740:16::640", - "CanPort80": true - } - ] - }, - "14": { - "RegionID": 14, - "RegionCode": "ams", - "RegionName": "Amsterdam", - "Latitude": 52.372778, - "Longitude": 4.893611, - "Nodes": [ - { - "Name": "14c", - "RegionID": 14, - "HostName": "derp14c.tailscale.com", - "IPv4": "176.58.93.147", - "IPv6": "2a00:dd80:3c::b09", - "CanPort80": true - }, - { - "Name": "14d", - "RegionID": 14, - "HostName": "derp14d.tailscale.com", - "IPv4": "176.58.93.154", - "IPv6": "2a00:dd80:3c::3d5", - "CanPort80": true - }, - { - "Name": "14b", - "RegionID": 14, - "HostName": "derp14b.tailscale.com", - "IPv4": "176.58.93.248", - "IPv6": "2a00:dd80:3c::807", - "CanPort80": true - } - ] - }, - "15": { - "RegionID": 15, - "RegionCode": "jnb", - "RegionName": "Johannesburg", - "Latitude": -26.204444, - "Longitude": 28.045556, - "Nodes": [ - { - "Name": "15c", - "RegionID": 15, - "HostName": "derp15c.tailscale.com", - "IPv4": "102.67.165.185", - "IPv6": "2c0f:edb0:0:10::b59", - "CanPort80": true - }, - { - "Name": "15d", - "RegionID": 15, - "HostName": "derp15d.tailscale.com", - "IPv4": "102.67.165.36", - "IPv6": "2c0f:edb0:0:10::599", - "CanPort80": true - }, - { - "Name": "15b", - "RegionID": 15, - "HostName": "derp15b.tailscale.com", - "IPv4": "102.67.165.90", - "IPv6": "2c0f:edb0:0:10::963", - "CanPort80": true - } - ] - }, - "16": { - "RegionID": 16, - "RegionCode": "mia", - "RegionName": "Miami", - "Latitude": 25.78, - "Longitude": -80.21, - "Nodes": [ - { - "Name": "16c", - "RegionID": 16, - "HostName": "derp16c.tailscale.com", - "IPv4": "192.73.243.229", - "IPv6": "2607:f740:17::4e4", - "CanPort80": true - }, - { - "Name": "16d", - "RegionID": 16, - "HostName": "derp16d.tailscale.com", - "IPv4": "192.73.243.141", - "IPv6": "2607:f740:17::475", - "CanPort80": true - }, - { - "Name": "16b", - "RegionID": 16, - "HostName": "derp16b.tailscale.com", - "IPv4": "192.73.243.135", - "IPv6": "2607:f740:17::476", - "CanPort80": true - } - ] - }, - "17": { - "RegionID": 17, - "RegionCode": "lax", - "RegionName": "Los Angeles", - "Latitude": 34.05, - "Longitude": -118.25, - "Nodes": [ - { - "Name": "17c", - "RegionID": 17, - "HostName": "derp17c.tailscale.com", - "IPv4": "208.111.40.12", - "IPv6": "2607:f740:c::10", - "CanPort80": true - }, - { - "Name": "17d", - "RegionID": 17, - "HostName": "derp17d.tailscale.com", - "IPv4": "208.111.40.216", - "IPv6": "2607:f740:c::e1b", - "CanPort80": true - }, - { - "Name": "17b", - "RegionID": 17, - "HostName": "derp17b.tailscale.com", - "IPv4": "192.73.244.245", - "IPv6": "2607:f740:c::646", - "CanPort80": true - } - ] - }, - "18": { - "RegionID": 18, - "RegionCode": "par", - "RegionName": "Paris", - "Latitude": 48.856667, - "Longitude": 2.352222, - "Nodes": [ - { - "Name": "18c", - "RegionID": 18, - "HostName": "derp18c.tailscale.com", - "IPv4": "176.58.90.207", - "IPv6": "2a00:dd80:3e::c19", - "CanPort80": true - }, - { - "Name": "18d", - "RegionID": 18, - "HostName": "derp18d.tailscale.com", - "IPv4": "176.58.90.104", - "IPv6": "2a00:dd80:3e::f2e", - "CanPort80": true - }, - { - "Name": "18b", - "RegionID": 18, - "HostName": "derp18b.tailscale.com", - "IPv4": "176.58.90.147", - "IPv6": "2a00:dd80:3e::363", - "CanPort80": true - } - ] - }, - "19": { - "RegionID": 19, - "RegionCode": "mad", - "RegionName": "Madrid", - "Latitude": 40.416944, - "Longitude": -3.703333, - "Nodes": [ - { - "Name": "19c", - "RegionID": 19, - "HostName": "derp19c.tailscale.com", - "IPv4": "45.159.97.61", - "IPv6": "2a00:dd80:14:10::20", - "CanPort80": true - }, - { - "Name": "19d", - "RegionID": 19, - "HostName": "derp19d.tailscale.com", - "IPv4": "45.159.97.233", - "IPv6": "2a00:dd80:14:10::34a", - "CanPort80": true - }, - { - "Name": "19b", - "RegionID": 19, - "HostName": "derp19b.tailscale.com", - "IPv4": "45.159.97.144", - "IPv6": "2a00:dd80:14:10::335", - "CanPort80": true - } - ] - }, - "2": { - "RegionID": 2, - "RegionCode": "sfo", - "RegionName": "San Francisco", - "Latitude": 37.7775, - "Longitude": -122.416389, - "Nodes": [ - { - "Name": "2e", - "RegionID": 2, - "HostName": "derp2e.tailscale.com", - "IPv4": "192.73.252.134", - "IPv6": "2607:f740:0:3f::44c", - "CanPort80": true - }, - { - "Name": "2f", - "RegionID": 2, - "HostName": "derp2f.tailscale.com", - "IPv4": "208.111.34.178", - "IPv6": "2607:f740:0:3f::f4", - "CanPort80": true - }, - { - "Name": "2d", - "RegionID": 2, - "HostName": "derp2d.tailscale.com", - "IPv4": "192.73.252.65", - "IPv6": "2607:f740:0:3f::287", - "CanPort80": true - } - ] - }, - "20": { - "RegionID": 20, - "RegionCode": "hkg", - "RegionName": "Hong Kong", - "Latitude": 22.3193, - "Longitude": 114.1694, - "Nodes": [ - { - "Name": "20c", - "RegionID": 20, - "HostName": "derp20c.tailscale.com", - "IPv4": "205.147.105.30", - "IPv6": "2403:2500:8000:1::5fb", - "CanPort80": true - }, - { - "Name": "20d", - "RegionID": 20, - "HostName": "derp20d.tailscale.com", - "IPv4": "205.147.105.78", - "IPv6": "2403:2500:8000:1::e9a", - "CanPort80": true - }, - { - "Name": "20b", - "RegionID": 20, - "HostName": "derp20b.tailscale.com", - "IPv4": "103.6.84.152", - "IPv6": "2403:2500:8000:1::ef6", - "CanPort80": true - } - ] - }, - "21": { - "RegionID": 21, - "RegionCode": "tor", - "RegionName": "Toronto", - "Latitude": 43.741667, - "Longitude": -79.373333, - "Nodes": [ - { - "Name": "21c", - "RegionID": 21, - "HostName": "derp21c.tailscale.com", - "IPv4": "162.248.221.215", - "IPv6": "2607:f740:50::f10", - "CanPort80": true - }, - { - "Name": "21d", - "RegionID": 21, - "HostName": "derp21d.tailscale.com", - "IPv4": "162.248.221.248", - "IPv6": "2607:f740:50::ca4", - "CanPort80": true - }, - { - "Name": "21b", - "RegionID": 21, - "HostName": "derp21b.tailscale.com", - "IPv4": "162.248.221.199", - "IPv6": "2607:f740:50::1d1", - "CanPort80": true - } - ] - }, - "22": { - "RegionID": 22, - "RegionCode": "waw", - "RegionName": "Warsaw", - "Latitude": 52.23, - "Longitude": 21.011111, - "Nodes": [ - { - "Name": "22c", - "RegionID": 22, - "HostName": "derp22c.tailscale.com", - "IPv4": "45.159.98.253", - "IPv6": "2a00:dd80:40:100::3f", - "CanPort80": true - }, - { - "Name": "22d", - "RegionID": 22, - "HostName": "derp22d.tailscale.com", - "IPv4": "45.159.98.145", - "IPv6": "2a00:dd80:40:100::211", - "CanPort80": true - }, - { - "Name": "22b", - "RegionID": 22, - "HostName": "derp22b.tailscale.com", - "IPv4": "45.159.98.196", - "IPv6": "2a00:dd80:40:100::316", - "CanPort80": true - } - ] - }, - "23": { - "RegionID": 23, - "RegionCode": "dbi", - "RegionName": "Dubai", - "Latitude": 25.263056, - "Longitude": 55.297222, - "Nodes": [ - { - "Name": "23c", - "RegionID": 23, - "HostName": "derp23c.tailscale.com", - "IPv4": "185.34.3.207", - "IPv6": "2a00:dd80:3f:100::a50", - "CanPort80": true - }, - { - "Name": "23d", - "RegionID": 23, - "HostName": "derp23d.tailscale.com", - "IPv4": "185.34.3.75", - "IPv6": "2a00:dd80:3f:100::97e", - "CanPort80": true - }, - { - "Name": "23b", - "RegionID": 23, - "HostName": "derp23b.tailscale.com", - "IPv4": "185.34.3.232", - "IPv6": "2a00:dd80:3f:100::76f", - "CanPort80": true - } - ] - }, - "24": { - "RegionID": 24, - "RegionCode": "hnl", - "RegionName": "Honolulu", - "Latitude": 21.306944, - "Longitude": -157.858333, - "Nodes": [ - { - "Name": "24c", - "RegionID": 24, - "HostName": "derp24c.tailscale.com", - "IPv4": "208.83.233.233", - "IPv6": "2001:19f0:c000:c591:5400:04ff:fe26:2c5f", - "CanPort80": true - }, - { - "Name": "24d", - "RegionID": 24, - "HostName": "derp24d.tailscale.com", - "IPv4": "208.72.155.133", - "IPv6": "2001:19f0:c000:c564:5400:04ff:fe26:2ba8", - "CanPort80": true - }, - { - "Name": "24b", - "RegionID": 24, - "HostName": "derp24b.tailscale.com", - "IPv4": "208.83.234.151", - "IPv6": "2001:19f0:c000:c586:5400:04ff:fe26:2ba6", - "CanPort80": true - } - ] - }, - "25": { - "RegionID": 25, - "RegionCode": "nai", - "RegionName": "Nairobi", - "Latitude": -1.286389, - "Longitude": 36.817222, - "Nodes": [ - { - "Name": "25c", - "RegionID": 25, - "HostName": "derp25c.tailscale.com", - "IPv4": "102.67.167.37", - "IPv6": "2c0f:edb0:2000:1::2c7", - "CanPort80": true - }, - { - "Name": "25d", - "RegionID": 25, - "HostName": "derp25d.tailscale.com", - "IPv4": "102.67.167.188", - "IPv6": "2c0f:edb0:2000:1::188", - "CanPort80": true - }, - { - "Name": "25b", - "RegionID": 25, - "HostName": "derp25b.tailscale.com", - "IPv4": "102.67.167.245", - "IPv6": "2c0f:edb0:2000:1::2e9", - "CanPort80": true - } - ] - }, - "26": { - "RegionID": 26, - "RegionCode": "nue", - "RegionName": "Nuremberg", - "Latitude": 49.453889, - "Longitude": 11.0775, - "Nodes": [ - { - "Name": "26c", - "RegionID": 26, - "HostName": "derp26c.tailscale.com", - "IPv4": "49.12.193.137", - "IPv6": "2a01:4f8:1c1c:5c70::1", - "CanPort80": true - }, - { - "Name": "26d", - "RegionID": 26, - "HostName": "derp26d.tailscale.com", - "IPv4": "49.13.204.141", - "IPv6": "2a01:4f8:1c0c:7d06::1", - "CanPort80": true - }, - { - "Name": "26b", - "RegionID": 26, - "HostName": "derp26b.tailscale.com", - "IPv4": "167.235.72.200", - "IPv6": "2a01:4f8:1c1c:47b6::1", - "CanPort80": true - } - ] - }, - "27": { - "RegionID": 27, - "RegionCode": "iad", - "RegionName": "Ashburn", - "Latitude": 39.03, - "Longitude": -77.471111, - "Nodes": [ - { - "Name": "27d", - "RegionID": 27, - "HostName": "derp27d.tailscale.com", - "IPv4": "178.156.152.106", - "IPv6": "2a01:4ff:f0:3c8e::1", - "CanPort80": true - }, - { - "Name": "27c", - "RegionID": 27, - "HostName": "derp27c.tailscale.com", - "IPv4": "178.156.152.91", - "IPv6": "2a01:4ff:f0:3913::1", - "CanPort80": true - }, - { - "Name": "27e", - "RegionID": 27, - "HostName": "derp27e.tailscale.com", - "IPv4": "178.156.134.232", - "IPv6": "2a01:4ff:f0:28d4::1", - "CanPort80": true - }, - { - "Name": "27b", - "RegionID": 27, - "HostName": "derp27b.tailscale.com", - "IPv4": "5.161.218.233", - "IPv6": "2a01:4ff:f0:3db9::1", - "CanPort80": true - } - ] - }, - "28": { - "RegionID": 28, - "RegionCode": "hel", - "RegionName": "Helsinki", - "Latitude": 60.170833, - "Longitude": 24.9375, - "Nodes": [ - { - "Name": "28c", - "RegionID": 28, - "HostName": "derp28c.tailscale.com", - "IPv4": "95.217.2.165", - "IPv6": "2a01:4f9:c012:cd74::1", - "CanPort80": true - }, - { - "Name": "28d", - "RegionID": 28, - "HostName": "derp28d.tailscale.com", - "IPv4": "157.180.28.32", - "IPv6": "2a01:4f9:c012:2e5b::1", - "CanPort80": true - }, - { - "Name": "28b", - "RegionID": 28, - "HostName": "derp28b.tailscale.com", - "IPv4": "65.109.143.62", - "IPv6": "2a01:4f9:c012:d55c::1", - "CanPort80": true - } - ] - }, - "3": { - "RegionID": 3, - "RegionCode": "sin", - "RegionName": "Singapore", - "Latitude": 1.3521, - "Longitude": 103.8198, - "Nodes": [ - { - "Name": "3g", - "RegionID": 3, - "HostName": "derp3g.tailscale.com", - "IPv4": "172.237.72.79", - "IPv6": "2600:3c15::2000:adff:fe08:6fab", - "CanPort80": true - }, - { - "Name": "3f", - "RegionID": 3, - "HostName": "derp3f.tailscale.com", - "IPv4": "172.237.72.8", - "IPv6": "2600:3c15::2000:53ff:fe48:a668", - "CanPort80": true - }, - { - "Name": "3h", - "RegionID": 3, - "HostName": "derp3h.tailscale.com", - "IPv4": "172.237.66.30", - "IPv6": "2600:3c15::2000:3dff:fe44:50aa", - "CanPort80": true - }, - { - "Name": "3e", - "RegionID": 3, - "HostName": "derp3e.tailscale.com", - "IPv4": "172.237.72.43", - "IPv6": "2600:3c15::2000:6cff:fee4:d799", - "CanPort80": true - } - ] - }, - "4": { - "RegionID": 4, - "RegionCode": "fra", - "RegionName": "Frankfurt", - "Latitude": 50.1109, - "Longitude": 8.6821, - "Nodes": [ - { - "Name": "4h", - "RegionID": 4, - "HostName": "derp4h.tailscale.com", - "IPv4": "185.40.234.77", - "IPv6": "2a00:dd80:20::bcf", - "CanPort80": true - }, - { - "Name": "4g", - "RegionID": 4, - "HostName": "derp4g.tailscale.com", - "IPv4": "185.40.234.113", - "IPv6": "2a00:dd80:20::8f", - "CanPort80": true - }, - { - "Name": "4i", - "RegionID": 4, - "HostName": "derp4i.tailscale.com", - "IPv4": "185.40.234.53", - "IPv6": "2a00:dd80:20::8a6", - "CanPort80": true - }, - { - "Name": "4f", - "RegionID": 4, - "HostName": "derp4f.tailscale.com", - "IPv4": "185.40.234.219", - "IPv6": "2a00:dd80:20::a25", - "CanPort80": true - } - ] - }, - "5": { - "RegionID": 5, - "RegionCode": "syd", - "RegionName": "Sydney", - "Latitude": -33.867778, - "Longitude": 151.21, - "Nodes": [ - { - "Name": "5f", - "RegionID": 5, - "HostName": "derp5f.tailscale.com", - "IPv4": "172.105.166.103", - "IPv6": "2400:8907::2000:ccff:fe1f:80da", - "CanPort80": true - }, - { - "Name": "5g", - "RegionID": 5, - "HostName": "derp5g.tailscale.com", - "IPv4": "172.105.169.57", - "IPv6": "2400:8907::2000:2fff:fea7:57f4", - "CanPort80": true - }, - { - "Name": "5e", - "RegionID": 5, - "HostName": "derp5e.tailscale.com", - "IPv4": "172.105.179.230", - "IPv6": "2400:8907::2000:ceff:fe8d:4f4e", - "CanPort80": true - } - ] - }, - "6": { - "RegionID": 6, - "RegionCode": "blr", - "RegionName": "Bengaluru", - "Latitude": 12.9716, - "Longitude": 77.5946, - "Nodes": [ - { - "Name": "6a", - "RegionID": 6, - "HostName": "derp6.tailscale.com", - "IPv4": "68.183.90.120", - "IPv6": "2400:6180:100:d0::982:d001", - "CanPort80": true - } - ] - }, - "7": { - "RegionID": 7, - "RegionCode": "tok", - "RegionName": "Tokyo", - "Latitude": 35.6764, - "Longitude": 139.65, - "Nodes": [ - { - "Name": "7g", - "RegionID": 7, - "HostName": "derp7g.tailscale.com", - "IPv4": "172.238.6.179", - "IPv6": "2600:3c18::2000:3fff:fe80:3ebd", - "CanPort80": true - }, - { - "Name": "7f", - "RegionID": 7, - "HostName": "derp7f.tailscale.com", - "IPv4": "172.238.6.34", - "IPv6": "2600:3c18::2000:acff:fe8e:3ed5", - "CanPort80": true - }, - { - "Name": "7h", - "RegionID": 7, - "HostName": "derp7h.tailscale.com", - "IPv4": "172.237.28.183", - "IPv6": "2600:3c18::2000:b1ff:fea9:4560", - "CanPort80": true - }, - { - "Name": "7e", - "RegionID": 7, - "HostName": "derp7e.tailscale.com", - "IPv4": "172.238.6.180", - "IPv6": "2600:3c18::2000:60ff:fe0f:6e83", - "STUNOnly": true, - "CanPort80": true - } - ] - }, - "8": { - "RegionID": 8, - "RegionCode": "lhr", - "RegionName": "London", - "Latitude": 51.5072, - "Longitude": 0.1276, - "Nodes": [ - { - "Name": "8f", - "RegionID": 8, - "HostName": "derp8f.tailscale.com", - "IPv4": "176.58.88.183", - "IPv6": "2a00:dd80:3a::dfa", - "CanPort80": true - }, - { - "Name": "8g", - "RegionID": 8, - "HostName": "derp8g.tailscale.com", - "IPv4": "176.58.92.254", - "IPv6": "2a00:dd80:3a::ed", - "CanPort80": true - }, - { - "Name": "8e", - "RegionID": 8, - "HostName": "derp8e.tailscale.com", - "IPv4": "176.58.92.144", - "IPv6": "2a00:dd80:3a::b33", - "CanPort80": true - } - ] - }, - "9": { - "RegionID": 9, - "RegionCode": "dfw", - "RegionName": "Dallas", - "Latitude": 32.779167, - "Longitude": -96.808889, - "Nodes": [ - { - "Name": "9e", - "RegionID": 9, - "HostName": "derp9e.tailscale.com", - "IPv4": "192.73.248.83", - "IPv6": "2607:f740:100::359", - "CanPort80": true - }, - { - "Name": "9f", - "RegionID": 9, - "HostName": "derp9f.tailscale.com", - "IPv4": "209.177.156.197", - "IPv6": "2607:f740:100::cad", - "CanPort80": true - }, - { - "Name": "9d", - "RegionID": 9, - "HostName": "derp9d.tailscale.com", - "IPv4": "209.177.156.94", - "IPv6": "2607:f740:100::c05", - "CanPort80": true - } - ] - } - } - }, - "DisplayMessages": null, - "TKAEnabled": false, - "TKAHead": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", - "Domain": "kratail2tid@passkey", - "DomainAuditLogID": "", - "UserProfiles": { - "3982058329734709": { - "ID": 3982058329734709, - "LoginName": "monitorpasskeykradalby@passkey", - "DisplayName": "monitorpasskeykradalby" - } - } + "PacketFilterRules": 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.124.195.93": { - "peer_name": "exit-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user1/tailscaled.sock whois --json 100.124.195.93", - "response": null - }, - "100.116.18.24": { - "peer_name": "exit-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user1/tailscaled.sock whois --json 100.116.18.24", - "response": null - }, - "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.107.162.14": { - "peer_name": "group-a-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user1/tailscaled.sock whois --json 100.107.162.14", - "response": null - }, - "100.77.135.18": { - "peer_name": "group-b-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user1/tailscaled.sock whois --json 100.77.135.18", - "response": null - }, - "100.105.127.107": { - "peer_name": "multi-exit-router", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user1/tailscaled.sock whois --json 100.105.127.107", - "response": null - }, - "100.109.43.124": { - "peer_name": "router-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user1/tailscaled.sock whois --json 100.109.43.124", - "response": null - }, - "100.65.172.123": { - "peer_name": "router-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user1/tailscaled.sock whois --json 100.65.172.123", - "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 - } - }, "netmap": { - "SelfNode": { - "ID": 539541576444929, - "StableID": "nSq9YrqMD511CNTRL", - "Name": "user1.tail78f774.ts.net.", - "User": 4156223528223174, - "Key": "nodekey:96338a2cd2ea803c915ed8fdf882d66ca0c6a59d0fcf0bc4b3f928d22d1ac743", - "KeyExpiry": "2026-07-22T10:04:13Z", - "DiscoKey": "discokey:94c62b25a93d1474bcbf8b0e5f79763e3b093993c831b0a40e98b875827b232a", - "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:43259", "10.65.0.27:43259", "172.17.0.1:43259"], - "Hostinfo": { - "Hostname": "user1", - "Services": [ - { "Proto": "peerapi4", "Port": 46708 }, - { "Proto": "peerapi6", "Port": 46708 }, - { "Proto": "peerapi-dns-proxy", "Port": 1 } - ] - }, - "Created": "2026-01-23T10:04:13.531671894Z", - "MachineAuthorized": true, - "CapMap": { - "https://tailscale.com/cap/file-sharing": null, - "https://tailscale.com/cap/is-admin": null, - "https://tailscale.com/cap/is-owner": null, - "https://tailscale.com/cap/ssh": null, - "https://tailscale.com/cap/tailnet-lock": null, - "probe-udp-lifetime": null, - "ssh-behavior-v1": null, - "ssh-env-vars": null, - "store-appc-routes": null, - "tailnet-display-name": ["kratail2tid@passkey"] - }, - "ComputedName": "user1", - "ComputedNameWithHost": "user1" - }, - "AllCaps": [ - "probe-udp-lifetime", - "store-appc-routes", - "https://tailscale.com/cap/file-sharing", - "tailnet-display-name", - "https://tailscale.com/cap/is-owner", - "https://tailscale.com/cap/ssh", - "https://tailscale.com/cap/tailnet-lock", - "https://tailscale.com/cap/is-admin", - "ssh-env-vars", - "ssh-behavior-v1" - ], - "NodeKey": "nodekey:96338a2cd2ea803c915ed8fdf882d66ca0c6a59d0fcf0bc4b3f928d22d1ac743", - "MachineKey": "mkey:98b7ed0fef020882cab4324b39ac93b60741794e722411083d0d3cf703833f4a", "Peers": [], - "DNS": { - "Routes": { - "tail78f774.ts.net.": null, - "ts.net.": [{ "Addr": "199.247.155.53" }, { "Addr": "2620:111:8007::53" }] - }, - "Domains": ["tail78f774.ts.net"], - "Proxied": true, - "ExitNodeFilteredSet": [".ts.net", ".tailscale.net"] - }, - "PacketFilter": [], - "PacketFilterRules": null, - "SSHPolicy": { "rules": [] }, - "CollectServices": false, - "DERPMap": { - "Regions": { - "1": { - "RegionID": 1, - "RegionCode": "nyc", - "RegionName": "New York City", - "Latitude": 40.7128, - "Longitude": -74.006, - "Nodes": [ - { - "Name": "1h", - "RegionID": 1, - "HostName": "derp1h.tailscale.com", - "IPv4": "199.38.181.93", - "IPv6": "2607:f740:f::afd", - "CanPort80": true - }, - { - "Name": "1g", - "RegionID": 1, - "HostName": "derp1g.tailscale.com", - "IPv4": "209.177.145.120", - "IPv6": "2607:f740:f::3eb", - "CanPort80": true - }, - { - "Name": "1i", - "RegionID": 1, - "HostName": "derp1i.tailscale.com", - "IPv4": "199.38.181.103", - "IPv6": "2607:f740:f::e19", - "CanPort80": true - }, - { - "Name": "1f", - "RegionID": 1, - "HostName": "derp1f.tailscale.com", - "IPv4": "199.38.181.104", - "IPv6": "2607:f740:f::bc", - "CanPort80": true - } - ] - }, - "10": { - "RegionID": 10, - "RegionCode": "sea", - "RegionName": "Seattle", - "Latitude": 47.609722, - "Longitude": -122.333056, - "Nodes": [ - { - "Name": "10c", - "RegionID": 10, - "HostName": "derp10c.tailscale.com", - "IPv4": "192.73.240.121", - "IPv6": "2607:f740:14::40c", - "CanPort80": true - }, - { - "Name": "10d", - "RegionID": 10, - "HostName": "derp10d.tailscale.com", - "IPv4": "192.73.240.132", - "IPv6": "2607:f740:14::500", - "CanPort80": true - }, - { - "Name": "10b", - "RegionID": 10, - "HostName": "derp10b.tailscale.com", - "IPv4": "192.73.240.161", - "IPv6": "2607:f740:14::61c", - "CanPort80": true - } - ] - }, - "11": { - "RegionID": 11, - "RegionCode": "sao", - "RegionName": "São Paulo", - "Latitude": -23.55, - "Longitude": -46.633333, - "Nodes": [ - { - "Name": "11f", - "RegionID": 11, - "HostName": "derp11f.tailscale.com", - "IPv4": "172.237.61.197", - "IPv6": "2600:3c0d::2000:3bff:fe44:6166", - "CanPort80": true - }, - { - "Name": "11g", - "RegionID": 11, - "HostName": "derp11g.tailscale.com", - "IPv4": "172.237.61.190", - "IPv6": "2600:3c0d::2000:62ff:febe:2e67", - "CanPort80": true - }, - { - "Name": "11e", - "RegionID": 11, - "HostName": "derp11e.tailscale.com", - "IPv4": "172.237.61.194", - "IPv6": "2600:3c0d::2000:d2ff:fe43:1790", - "CanPort80": true - } - ] - }, - "12": { - "RegionID": 12, - "RegionCode": "ord", - "RegionName": "Chicago", - "Latitude": 41.881944, - "Longitude": -87.627778, - "Nodes": [ - { - "Name": "12e", - "RegionID": 12, - "HostName": "derp12e.tailscale.com", - "IPv4": "209.177.158.15", - "IPv6": "2607:f740:e::b17", - "CanPort80": true - }, - { - "Name": "12f", - "RegionID": 12, - "HostName": "derp12f.tailscale.com", - "IPv4": "199.38.182.118", - "IPv6": "2607:f740:e::4c8", - "CanPort80": true - }, - { - "Name": "12d", - "RegionID": 12, - "HostName": "derp12d.tailscale.com", - "IPv4": "209.177.158.246", - "IPv6": "2607:f740:e::811", - "CanPort80": true - } - ] - }, - "13": { - "RegionID": 13, - "RegionCode": "den", - "RegionName": "Denver", - "Latitude": 39.7392, - "Longitude": -104.9849, - "Nodes": [ - { - "Name": "13c", - "RegionID": 13, - "HostName": "derp13c.tailscale.com", - "IPv4": "192.73.242.28", - "IPv6": "2607:f740:16::5c", - "CanPort80": true - }, - { - "Name": "13d", - "RegionID": 13, - "HostName": "derp13d.tailscale.com", - "IPv4": "192.73.242.204", - "IPv6": "2607:f740:16::c23", - "CanPort80": true - }, - { - "Name": "13b", - "RegionID": 13, - "HostName": "derp13b.tailscale.com", - "IPv4": "192.73.242.187", - "IPv6": "2607:f740:16::640", - "CanPort80": true - } - ] - }, - "14": { - "RegionID": 14, - "RegionCode": "ams", - "RegionName": "Amsterdam", - "Latitude": 52.372778, - "Longitude": 4.893611, - "Nodes": [ - { - "Name": "14c", - "RegionID": 14, - "HostName": "derp14c.tailscale.com", - "IPv4": "176.58.93.147", - "IPv6": "2a00:dd80:3c::b09", - "CanPort80": true - }, - { - "Name": "14d", - "RegionID": 14, - "HostName": "derp14d.tailscale.com", - "IPv4": "176.58.93.154", - "IPv6": "2a00:dd80:3c::3d5", - "CanPort80": true - }, - { - "Name": "14b", - "RegionID": 14, - "HostName": "derp14b.tailscale.com", - "IPv4": "176.58.93.248", - "IPv6": "2a00:dd80:3c::807", - "CanPort80": true - } - ] - }, - "15": { - "RegionID": 15, - "RegionCode": "jnb", - "RegionName": "Johannesburg", - "Latitude": -26.204444, - "Longitude": 28.045556, - "Nodes": [ - { - "Name": "15c", - "RegionID": 15, - "HostName": "derp15c.tailscale.com", - "IPv4": "102.67.165.185", - "IPv6": "2c0f:edb0:0:10::b59", - "CanPort80": true - }, - { - "Name": "15d", - "RegionID": 15, - "HostName": "derp15d.tailscale.com", - "IPv4": "102.67.165.36", - "IPv6": "2c0f:edb0:0:10::599", - "CanPort80": true - }, - { - "Name": "15b", - "RegionID": 15, - "HostName": "derp15b.tailscale.com", - "IPv4": "102.67.165.90", - "IPv6": "2c0f:edb0:0:10::963", - "CanPort80": true - } - ] - }, - "16": { - "RegionID": 16, - "RegionCode": "mia", - "RegionName": "Miami", - "Latitude": 25.78, - "Longitude": -80.21, - "Nodes": [ - { - "Name": "16c", - "RegionID": 16, - "HostName": "derp16c.tailscale.com", - "IPv4": "192.73.243.229", - "IPv6": "2607:f740:17::4e4", - "CanPort80": true - }, - { - "Name": "16d", - "RegionID": 16, - "HostName": "derp16d.tailscale.com", - "IPv4": "192.73.243.141", - "IPv6": "2607:f740:17::475", - "CanPort80": true - }, - { - "Name": "16b", - "RegionID": 16, - "HostName": "derp16b.tailscale.com", - "IPv4": "192.73.243.135", - "IPv6": "2607:f740:17::476", - "CanPort80": true - } - ] - }, - "17": { - "RegionID": 17, - "RegionCode": "lax", - "RegionName": "Los Angeles", - "Latitude": 34.05, - "Longitude": -118.25, - "Nodes": [ - { - "Name": "17c", - "RegionID": 17, - "HostName": "derp17c.tailscale.com", - "IPv4": "208.111.40.12", - "IPv6": "2607:f740:c::10", - "CanPort80": true - }, - { - "Name": "17d", - "RegionID": 17, - "HostName": "derp17d.tailscale.com", - "IPv4": "208.111.40.216", - "IPv6": "2607:f740:c::e1b", - "CanPort80": true - }, - { - "Name": "17b", - "RegionID": 17, - "HostName": "derp17b.tailscale.com", - "IPv4": "192.73.244.245", - "IPv6": "2607:f740:c::646", - "CanPort80": true - } - ] - }, - "18": { - "RegionID": 18, - "RegionCode": "par", - "RegionName": "Paris", - "Latitude": 48.856667, - "Longitude": 2.352222, - "Nodes": [ - { - "Name": "18c", - "RegionID": 18, - "HostName": "derp18c.tailscale.com", - "IPv4": "176.58.90.207", - "IPv6": "2a00:dd80:3e::c19", - "CanPort80": true - }, - { - "Name": "18d", - "RegionID": 18, - "HostName": "derp18d.tailscale.com", - "IPv4": "176.58.90.104", - "IPv6": "2a00:dd80:3e::f2e", - "CanPort80": true - }, - { - "Name": "18b", - "RegionID": 18, - "HostName": "derp18b.tailscale.com", - "IPv4": "176.58.90.147", - "IPv6": "2a00:dd80:3e::363", - "CanPort80": true - } - ] - }, - "19": { - "RegionID": 19, - "RegionCode": "mad", - "RegionName": "Madrid", - "Latitude": 40.416944, - "Longitude": -3.703333, - "Nodes": [ - { - "Name": "19c", - "RegionID": 19, - "HostName": "derp19c.tailscale.com", - "IPv4": "45.159.97.61", - "IPv6": "2a00:dd80:14:10::20", - "CanPort80": true - }, - { - "Name": "19d", - "RegionID": 19, - "HostName": "derp19d.tailscale.com", - "IPv4": "45.159.97.233", - "IPv6": "2a00:dd80:14:10::34a", - "CanPort80": true - }, - { - "Name": "19b", - "RegionID": 19, - "HostName": "derp19b.tailscale.com", - "IPv4": "45.159.97.144", - "IPv6": "2a00:dd80:14:10::335", - "CanPort80": true - } - ] - }, - "2": { - "RegionID": 2, - "RegionCode": "sfo", - "RegionName": "San Francisco", - "Latitude": 37.7775, - "Longitude": -122.416389, - "Nodes": [ - { - "Name": "2e", - "RegionID": 2, - "HostName": "derp2e.tailscale.com", - "IPv4": "192.73.252.134", - "IPv6": "2607:f740:0:3f::44c", - "CanPort80": true - }, - { - "Name": "2f", - "RegionID": 2, - "HostName": "derp2f.tailscale.com", - "IPv4": "208.111.34.178", - "IPv6": "2607:f740:0:3f::f4", - "CanPort80": true - }, - { - "Name": "2d", - "RegionID": 2, - "HostName": "derp2d.tailscale.com", - "IPv4": "192.73.252.65", - "IPv6": "2607:f740:0:3f::287", - "CanPort80": true - } - ] - }, - "20": { - "RegionID": 20, - "RegionCode": "hkg", - "RegionName": "Hong Kong", - "Latitude": 22.3193, - "Longitude": 114.1694, - "Nodes": [ - { - "Name": "20c", - "RegionID": 20, - "HostName": "derp20c.tailscale.com", - "IPv4": "205.147.105.30", - "IPv6": "2403:2500:8000:1::5fb", - "CanPort80": true - }, - { - "Name": "20d", - "RegionID": 20, - "HostName": "derp20d.tailscale.com", - "IPv4": "205.147.105.78", - "IPv6": "2403:2500:8000:1::e9a", - "CanPort80": true - }, - { - "Name": "20b", - "RegionID": 20, - "HostName": "derp20b.tailscale.com", - "IPv4": "103.6.84.152", - "IPv6": "2403:2500:8000:1::ef6", - "CanPort80": true - } - ] - }, - "21": { - "RegionID": 21, - "RegionCode": "tor", - "RegionName": "Toronto", - "Latitude": 43.741667, - "Longitude": -79.373333, - "Nodes": [ - { - "Name": "21c", - "RegionID": 21, - "HostName": "derp21c.tailscale.com", - "IPv4": "162.248.221.215", - "IPv6": "2607:f740:50::f10", - "CanPort80": true - }, - { - "Name": "21d", - "RegionID": 21, - "HostName": "derp21d.tailscale.com", - "IPv4": "162.248.221.248", - "IPv6": "2607:f740:50::ca4", - "CanPort80": true - }, - { - "Name": "21b", - "RegionID": 21, - "HostName": "derp21b.tailscale.com", - "IPv4": "162.248.221.199", - "IPv6": "2607:f740:50::1d1", - "CanPort80": true - } - ] - }, - "22": { - "RegionID": 22, - "RegionCode": "waw", - "RegionName": "Warsaw", - "Latitude": 52.23, - "Longitude": 21.011111, - "Nodes": [ - { - "Name": "22c", - "RegionID": 22, - "HostName": "derp22c.tailscale.com", - "IPv4": "45.159.98.253", - "IPv6": "2a00:dd80:40:100::3f", - "CanPort80": true - }, - { - "Name": "22d", - "RegionID": 22, - "HostName": "derp22d.tailscale.com", - "IPv4": "45.159.98.145", - "IPv6": "2a00:dd80:40:100::211", - "CanPort80": true - }, - { - "Name": "22b", - "RegionID": 22, - "HostName": "derp22b.tailscale.com", - "IPv4": "45.159.98.196", - "IPv6": "2a00:dd80:40:100::316", - "CanPort80": true - } - ] - }, - "23": { - "RegionID": 23, - "RegionCode": "dbi", - "RegionName": "Dubai", - "Latitude": 25.263056, - "Longitude": 55.297222, - "Nodes": [ - { - "Name": "23c", - "RegionID": 23, - "HostName": "derp23c.tailscale.com", - "IPv4": "185.34.3.207", - "IPv6": "2a00:dd80:3f:100::a50", - "CanPort80": true - }, - { - "Name": "23d", - "RegionID": 23, - "HostName": "derp23d.tailscale.com", - "IPv4": "185.34.3.75", - "IPv6": "2a00:dd80:3f:100::97e", - "CanPort80": true - }, - { - "Name": "23b", - "RegionID": 23, - "HostName": "derp23b.tailscale.com", - "IPv4": "185.34.3.232", - "IPv6": "2a00:dd80:3f:100::76f", - "CanPort80": true - } - ] - }, - "24": { - "RegionID": 24, - "RegionCode": "hnl", - "RegionName": "Honolulu", - "Latitude": 21.306944, - "Longitude": -157.858333, - "Nodes": [ - { - "Name": "24c", - "RegionID": 24, - "HostName": "derp24c.tailscale.com", - "IPv4": "208.83.233.233", - "IPv6": "2001:19f0:c000:c591:5400:04ff:fe26:2c5f", - "CanPort80": true - }, - { - "Name": "24d", - "RegionID": 24, - "HostName": "derp24d.tailscale.com", - "IPv4": "208.72.155.133", - "IPv6": "2001:19f0:c000:c564:5400:04ff:fe26:2ba8", - "CanPort80": true - }, - { - "Name": "24b", - "RegionID": 24, - "HostName": "derp24b.tailscale.com", - "IPv4": "208.83.234.151", - "IPv6": "2001:19f0:c000:c586:5400:04ff:fe26:2ba6", - "CanPort80": true - } - ] - }, - "25": { - "RegionID": 25, - "RegionCode": "nai", - "RegionName": "Nairobi", - "Latitude": -1.286389, - "Longitude": 36.817222, - "Nodes": [ - { - "Name": "25c", - "RegionID": 25, - "HostName": "derp25c.tailscale.com", - "IPv4": "102.67.167.37", - "IPv6": "2c0f:edb0:2000:1::2c7", - "CanPort80": true - }, - { - "Name": "25d", - "RegionID": 25, - "HostName": "derp25d.tailscale.com", - "IPv4": "102.67.167.188", - "IPv6": "2c0f:edb0:2000:1::188", - "CanPort80": true - }, - { - "Name": "25b", - "RegionID": 25, - "HostName": "derp25b.tailscale.com", - "IPv4": "102.67.167.245", - "IPv6": "2c0f:edb0:2000:1::2e9", - "CanPort80": true - } - ] - }, - "26": { - "RegionID": 26, - "RegionCode": "nue", - "RegionName": "Nuremberg", - "Latitude": 49.453889, - "Longitude": 11.0775, - "Nodes": [ - { - "Name": "26c", - "RegionID": 26, - "HostName": "derp26c.tailscale.com", - "IPv4": "49.12.193.137", - "IPv6": "2a01:4f8:1c1c:5c70::1", - "CanPort80": true - }, - { - "Name": "26d", - "RegionID": 26, - "HostName": "derp26d.tailscale.com", - "IPv4": "49.13.204.141", - "IPv6": "2a01:4f8:1c0c:7d06::1", - "CanPort80": true - }, - { - "Name": "26b", - "RegionID": 26, - "HostName": "derp26b.tailscale.com", - "IPv4": "167.235.72.200", - "IPv6": "2a01:4f8:1c1c:47b6::1", - "CanPort80": true - } - ] - }, - "27": { - "RegionID": 27, - "RegionCode": "iad", - "RegionName": "Ashburn", - "Latitude": 39.03, - "Longitude": -77.471111, - "Nodes": [ - { - "Name": "27d", - "RegionID": 27, - "HostName": "derp27d.tailscale.com", - "IPv4": "178.156.152.106", - "IPv6": "2a01:4ff:f0:3c8e::1", - "CanPort80": true - }, - { - "Name": "27c", - "RegionID": 27, - "HostName": "derp27c.tailscale.com", - "IPv4": "178.156.152.91", - "IPv6": "2a01:4ff:f0:3913::1", - "CanPort80": true - }, - { - "Name": "27e", - "RegionID": 27, - "HostName": "derp27e.tailscale.com", - "IPv4": "178.156.134.232", - "IPv6": "2a01:4ff:f0:28d4::1", - "CanPort80": true - }, - { - "Name": "27b", - "RegionID": 27, - "HostName": "derp27b.tailscale.com", - "IPv4": "5.161.218.233", - "IPv6": "2a01:4ff:f0:3db9::1", - "CanPort80": true - } - ] - }, - "28": { - "RegionID": 28, - "RegionCode": "hel", - "RegionName": "Helsinki", - "Latitude": 60.170833, - "Longitude": 24.9375, - "Nodes": [ - { - "Name": "28c", - "RegionID": 28, - "HostName": "derp28c.tailscale.com", - "IPv4": "95.217.2.165", - "IPv6": "2a01:4f9:c012:cd74::1", - "CanPort80": true - }, - { - "Name": "28d", - "RegionID": 28, - "HostName": "derp28d.tailscale.com", - "IPv4": "157.180.28.32", - "IPv6": "2a01:4f9:c012:2e5b::1", - "CanPort80": true - }, - { - "Name": "28b", - "RegionID": 28, - "HostName": "derp28b.tailscale.com", - "IPv4": "65.109.143.62", - "IPv6": "2a01:4f9:c012:d55c::1", - "CanPort80": true - } - ] - }, - "3": { - "RegionID": 3, - "RegionCode": "sin", - "RegionName": "Singapore", - "Latitude": 1.3521, - "Longitude": 103.8198, - "Nodes": [ - { - "Name": "3g", - "RegionID": 3, - "HostName": "derp3g.tailscale.com", - "IPv4": "172.237.72.79", - "IPv6": "2600:3c15::2000:adff:fe08:6fab", - "CanPort80": true - }, - { - "Name": "3f", - "RegionID": 3, - "HostName": "derp3f.tailscale.com", - "IPv4": "172.237.72.8", - "IPv6": "2600:3c15::2000:53ff:fe48:a668", - "CanPort80": true - }, - { - "Name": "3h", - "RegionID": 3, - "HostName": "derp3h.tailscale.com", - "IPv4": "172.237.66.30", - "IPv6": "2600:3c15::2000:3dff:fe44:50aa", - "CanPort80": true - }, - { - "Name": "3e", - "RegionID": 3, - "HostName": "derp3e.tailscale.com", - "IPv4": "172.237.72.43", - "IPv6": "2600:3c15::2000:6cff:fee4:d799", - "CanPort80": true - } - ] - }, - "4": { - "RegionID": 4, - "RegionCode": "fra", - "RegionName": "Frankfurt", - "Latitude": 50.1109, - "Longitude": 8.6821, - "Nodes": [ - { - "Name": "4h", - "RegionID": 4, - "HostName": "derp4h.tailscale.com", - "IPv4": "185.40.234.77", - "IPv6": "2a00:dd80:20::bcf", - "CanPort80": true - }, - { - "Name": "4g", - "RegionID": 4, - "HostName": "derp4g.tailscale.com", - "IPv4": "185.40.234.113", - "IPv6": "2a00:dd80:20::8f", - "CanPort80": true - }, - { - "Name": "4i", - "RegionID": 4, - "HostName": "derp4i.tailscale.com", - "IPv4": "185.40.234.53", - "IPv6": "2a00:dd80:20::8a6", - "CanPort80": true - }, - { - "Name": "4f", - "RegionID": 4, - "HostName": "derp4f.tailscale.com", - "IPv4": "185.40.234.219", - "IPv6": "2a00:dd80:20::a25", - "CanPort80": true - } - ] - }, - "5": { - "RegionID": 5, - "RegionCode": "syd", - "RegionName": "Sydney", - "Latitude": -33.867778, - "Longitude": 151.21, - "Nodes": [ - { - "Name": "5f", - "RegionID": 5, - "HostName": "derp5f.tailscale.com", - "IPv4": "172.105.166.103", - "IPv6": "2400:8907::2000:ccff:fe1f:80da", - "CanPort80": true - }, - { - "Name": "5g", - "RegionID": 5, - "HostName": "derp5g.tailscale.com", - "IPv4": "172.105.169.57", - "IPv6": "2400:8907::2000:2fff:fea7:57f4", - "CanPort80": true - }, - { - "Name": "5e", - "RegionID": 5, - "HostName": "derp5e.tailscale.com", - "IPv4": "172.105.179.230", - "IPv6": "2400:8907::2000:ceff:fe8d:4f4e", - "CanPort80": true - } - ] - }, - "6": { - "RegionID": 6, - "RegionCode": "blr", - "RegionName": "Bengaluru", - "Latitude": 12.9716, - "Longitude": 77.5946, - "Nodes": [ - { - "Name": "6a", - "RegionID": 6, - "HostName": "derp6.tailscale.com", - "IPv4": "68.183.90.120", - "IPv6": "2400:6180:100:d0::982:d001", - "CanPort80": true - } - ] - }, - "7": { - "RegionID": 7, - "RegionCode": "tok", - "RegionName": "Tokyo", - "Latitude": 35.6764, - "Longitude": 139.65, - "Nodes": [ - { - "Name": "7g", - "RegionID": 7, - "HostName": "derp7g.tailscale.com", - "IPv4": "172.238.6.179", - "IPv6": "2600:3c18::2000:3fff:fe80:3ebd", - "CanPort80": true - }, - { - "Name": "7f", - "RegionID": 7, - "HostName": "derp7f.tailscale.com", - "IPv4": "172.238.6.34", - "IPv6": "2600:3c18::2000:acff:fe8e:3ed5", - "CanPort80": true - }, - { - "Name": "7h", - "RegionID": 7, - "HostName": "derp7h.tailscale.com", - "IPv4": "172.237.28.183", - "IPv6": "2600:3c18::2000:b1ff:fea9:4560", - "CanPort80": true - }, - { - "Name": "7e", - "RegionID": 7, - "HostName": "derp7e.tailscale.com", - "IPv4": "172.238.6.180", - "IPv6": "2600:3c18::2000:60ff:fe0f:6e83", - "STUNOnly": true, - "CanPort80": true - } - ] - }, - "8": { - "RegionID": 8, - "RegionCode": "lhr", - "RegionName": "London", - "Latitude": 51.5072, - "Longitude": 0.1276, - "Nodes": [ - { - "Name": "8f", - "RegionID": 8, - "HostName": "derp8f.tailscale.com", - "IPv4": "176.58.88.183", - "IPv6": "2a00:dd80:3a::dfa", - "CanPort80": true - }, - { - "Name": "8g", - "RegionID": 8, - "HostName": "derp8g.tailscale.com", - "IPv4": "176.58.92.254", - "IPv6": "2a00:dd80:3a::ed", - "CanPort80": true - }, - { - "Name": "8e", - "RegionID": 8, - "HostName": "derp8e.tailscale.com", - "IPv4": "176.58.92.144", - "IPv6": "2a00:dd80:3a::b33", - "CanPort80": true - } - ] - }, - "9": { - "RegionID": 9, - "RegionCode": "dfw", - "RegionName": "Dallas", - "Latitude": 32.779167, - "Longitude": -96.808889, - "Nodes": [ - { - "Name": "9e", - "RegionID": 9, - "HostName": "derp9e.tailscale.com", - "IPv4": "192.73.248.83", - "IPv6": "2607:f740:100::359", - "CanPort80": true - }, - { - "Name": "9f", - "RegionID": 9, - "HostName": "derp9f.tailscale.com", - "IPv4": "209.177.156.197", - "IPv6": "2607:f740:100::cad", - "CanPort80": true - }, - { - "Name": "9d", - "RegionID": 9, - "HostName": "derp9d.tailscale.com", - "IPv4": "209.177.156.94", - "IPv6": "2607:f740:100::c05", - "CanPort80": true - } - ] - } - } - }, - "DisplayMessages": null, - "TKAEnabled": false, - "TKAHead": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", - "Domain": "kratail2tid@passkey", - "DomainAuditLogID": "", - "UserProfiles": { - "4156223528223174": { - "ID": 4156223528223174, - "LoginName": "kratail2tid@passkey", - "DisplayName": "kratail2tid" - } - } + "PacketFilterRules": null } } } diff --git a/hscontrol/policy/v2/testdata/grant_results/GRANT-V29.hujson b/hscontrol/policy/v2/testdata/grant_results/GRANT-V29.hujson index c252c26e0..3c8e299ae 100644 --- a/hscontrol/policy/v2/testdata/grant_results/GRANT-V29.hujson +++ b/hscontrol/policy/v2/testdata/grant_results/GRANT-V29.hujson @@ -12,29 +12,55 @@ // Expected: Rules on router-a, router-b { "test_id": "GRANT-V29", - "timestamp": "2026-03-28T11:52:05Z", - "propagation_wait_seconds": 8, "input": { - "policy_file": "grant_policies_via/grant_v29.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"], - "tag:exit-a": ["kratail2tid@passkey"], - "tag:exit-b": ["kratail2tid@passkey"], - "tag:group-a": ["kratail2tid@passkey"], - "tag:group-b": ["kratail2tid@passkey"], - "tag:router-a": ["kratail2tid@passkey"], - "tag:router-b": ["kratail2tid@passkey"] + "tag:server": [ + "kratail2tid@passkey" + ], + "tag:prod": [ + "kratail2tid@passkey" + ], + "tag:client": [ + "kratail2tid@passkey" + ], + "tag:router": [ + "kratail2tid@passkey" + ], + "tag:exit": [ + "kratail2tid@passkey" + ], + "tag:exit-a": [ + "kratail2tid@passkey" + ], + "tag:exit-b": [ + "kratail2tid@passkey" + ], + "tag:group-a": [ + "kratail2tid@passkey" + ], + "tag:group-b": [ + "kratail2tid@passkey" + ], + "tag:router-a": [ + "kratail2tid@passkey" + ], + "tag:router-b": [ + "kratail2tid@passkey" + ] }, "hosts": { "webserver": "100.108.74.26", @@ -43,169 +69,173 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "10.44.0.0/16": ["tag:router-a"], - "10.55.0.0/16": ["tag:router-b"], - "0.0.0.0/0": ["tag:exit", "tag:exit-a", "tag:exit-b"], - "::/0": ["tag:exit", "tag:exit-a", "tag:exit-b"] + "10.33.0.0/16": [ + "tag:router" + ], + "10.44.0.0/16": [ + "tag:router-a" + ], + "10.55.0.0/16": [ + "tag:router-b" + ], + "0.0.0.0/0": [ + "tag:exit", + "tag:exit-a", + "tag:exit-b" + ], + "::/0": [ + "tag:exit", + "tag:exit-a", + "tag:exit-b" + ] } }, "grants": [ { - "src": ["tag:group-a"], - "dst": ["10.44.0.0/16"], - "via": ["tag:router-a"], - "ip": ["*"] + "src": [ + "tag:group-a" + ], + "dst": [ + "10.44.0.0/16" + ], + "via": [ + "tag:router-a" + ], + "ip": [ + "*" + ] }, { - "src": ["tag:group-b"], - "dst": ["10.55.0.0/16"], - "via": ["tag:router-b"], - "ip": ["*"] + "src": [ + "tag:group-b" + ], + "dst": [ + "10.55.0.0/16" + ], + "via": [ + "tag:router-b" + ], + "ip": [ + "*" + ] } ] }, - "grants_section": [ - { "src": ["tag:group-a"], "dst": ["10.44.0.0/16"], "via": ["tag:router-a"], "ip": ["*"] }, - { "src": ["tag:group-b"], "dst": ["10.55.0.0/16"], "via": ["tag:router-b"], "ip": ["*"] } - ], - "api_endpoint": "https://api.tailscale.com/api/v2/tailnet/kratail2tid%40passkey/acl", - "api_method": "POST", "api_response_code": 200 }, "topology": { "nodes": { "exit-a": { - "mts_name": "exit-a", - "socket": "/home/kradalby/.config/multi-tailscale-dev/exit-a/tailscaled.sock", "hostname": "exit-a", - "user_id": 3118755726458377, - "tags": ["tag:exit-a"], + "tags": [ + "tag:exit-a" + ], "ipv4": "100.124.195.93", "ipv6": "fd7a:115c:a1e0::7837:c35d" }, "exit-b": { - "mts_name": "exit-b", - "socket": "/home/kradalby/.config/multi-tailscale-dev/exit-b/tailscaled.sock", "hostname": "exit-b", - "user_id": 2230775583277936, - "tags": ["tag:exit-b"], + "tags": [ + "tag:exit-b" + ], "ipv4": "100.116.18.24", "ipv6": "fd7a:115c:a1e0::ff37:1218" }, "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"], + "tags": [ + "tag:exit" + ], "ipv4": "100.85.66.106", "ipv6": "fd7a:115c:a1e0::7c37:426a" }, "group-a-client": { - "mts_name": "group-a-client", - "socket": "/home/kradalby/.config/multi-tailscale-dev/group-a-client/tailscaled.sock", "hostname": "group-a-client", - "user_id": 6999435610919250, - "tags": ["tag:group-a"], + "tags": [ + "tag:group-a" + ], "ipv4": "100.107.162.14", "ipv6": "fd7a:115c:a1e0::a237:a20e" }, "group-b-client": { - "mts_name": "group-b-client", - "socket": "/home/kradalby/.config/multi-tailscale-dev/group-b-client/tailscaled.sock", "hostname": "group-b-client", - "user_id": 1008089393782498, - "tags": ["tag:group-b"], + "tags": [ + "tag:group-b" + ], "ipv4": "100.77.135.18", "ipv6": "fd7a:115c:a1e0::4b37:8712" }, "multi-exit-router": { - "mts_name": "multi-exit-router", - "socket": "/home/kradalby/.config/multi-tailscale-dev/multi-exit-router/tailscaled.sock", "hostname": "multi-exit-router", - "user_id": 6294409699640722, - "tags": ["tag:exit", "tag:router"], + "tags": [ + "tag:exit", + "tag:router" + ], "ipv4": "100.105.127.107", "ipv6": "fd7a:115c:a1e0::ad37:7f6b" }, "router-a": { - "mts_name": "router-a", - "socket": "/home/kradalby/.config/multi-tailscale-dev/router-a/tailscaled.sock", "hostname": "router-a", - "user_id": 50590507314324, - "tags": ["tag:router-a"], + "tags": [ + "tag:router-a" + ], "ipv4": "100.109.43.124", "ipv6": "fd7a:115c:a1e0::a537:2b7c" }, "router-b": { - "mts_name": "router-b", - "socket": "/home/kradalby/.config/multi-tailscale-dev/router-b/tailscaled.sock", "hostname": "router-b", - "user_id": 1399889648409786, - "tags": ["tag:router-b"], + "tags": [ + "tag:router-b" + ], "ipv4": "100.65.172.123", "ipv6": "fd7a:115c:a1e0::5a37:ac7c" }, "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"], + "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"], + "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"], + "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"], + "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" @@ -214,16956 +244,214 @@ }, "captures": { "exit-a": { - "commands": { - "packet_filter_rules": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-a/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-a/tailscaled.sock debug localapi POST debug-packet-filter-matches" - }, "packet_filter_rules": null, - "packet_filter_matches": [], - "whois": { - "100.116.18.24": { - "peer_name": "exit-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-a/tailscaled.sock whois --json 100.116.18.24", - "response": null - }, - "100.85.66.106": { - "peer_name": "exit-node", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-a/tailscaled.sock whois --json 100.85.66.106", - "response": null - }, - "100.107.162.14": { - "peer_name": "group-a-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-a/tailscaled.sock whois --json 100.107.162.14", - "response": null - }, - "100.77.135.18": { - "peer_name": "group-b-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-a/tailscaled.sock whois --json 100.77.135.18", - "response": null - }, - "100.105.127.107": { - "peer_name": "multi-exit-router", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-a/tailscaled.sock whois --json 100.105.127.107", - "response": null - }, - "100.109.43.124": { - "peer_name": "router-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-a/tailscaled.sock whois --json 100.109.43.124", - "response": null - }, - "100.65.172.123": { - "peer_name": "router-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-a/tailscaled.sock whois --json 100.65.172.123", - "response": null - }, - "100.92.142.61": { - "peer_name": "subnet-router", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-a/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-a/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-a/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-a/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-a/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-a/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-a/tailscaled.sock whois --json 100.90.199.68", - "response": null - } - }, "netmap": { - "SelfNode": { - "ID": 3118755726458377, - "StableID": "nvFTscRVMR11CNTRL", - "Name": "exit-a.tail78f774.ts.net.", - "User": 3118755726458377, - "Key": "nodekey:21ab6fa3288e3bf8cecced295316c6327f427649765eb1746cc6ee9978bcc35c", - "DiscoKey": "discokey:0c8595f67987ed47cf551646d6266c21a635d622409d10745cc08f6922066e49", - "Addresses": ["100.124.195.93/32", "fd7a:115c:a1e0::7837:c35d/128"], - "AllowedIPs": ["100.124.195.93/32", "fd7a:115c:a1e0::7837:c35d/128"], - "Endpoints": ["77.164.248.136:37550", "10.65.0.27:37550", "172.17.0.1:37550"], - "Hostinfo": { - "Hostname": "exit-a", - "RoutableIPs": ["0.0.0.0/0", "::/0"], - "RequestTags": ["tag:exit-a"], - "Services": [ - { "Proto": "peerapi4", "Port": 57826 }, - { "Proto": "peerapi6", "Port": 57826 }, - { "Proto": "peerapi-dns-proxy", "Port": 1 } - ] - }, - "Created": "2026-03-28T10:37:56.932966573Z", - "Tags": ["tag:exit-a"], - "MachineAuthorized": true, - "CapMap": { - "https://tailscale.com/cap/file-sharing": null, - "https://tailscale.com/cap/is-owner": null, - "https://tailscale.com/cap/ssh": null, - "https://tailscale.com/cap/tailnet-lock": null, - "probe-udp-lifetime": null, - "ssh-behavior-v1": null, - "ssh-env-vars": null, - "store-appc-routes": null, - "tailnet-display-name": ["kratail2tid@passkey"] - }, - "ComputedName": "exit-a", - "ComputedNameWithHost": "exit-a" - }, - "AllCaps": [ - "store-appc-routes", - "tailnet-display-name", - "https://tailscale.com/cap/ssh", - "https://tailscale.com/cap/is-owner", - "ssh-env-vars", - "ssh-behavior-v1", - "https://tailscale.com/cap/tailnet-lock", - "probe-udp-lifetime", - "https://tailscale.com/cap/file-sharing" - ], - "NodeKey": "nodekey:21ab6fa3288e3bf8cecced295316c6327f427649765eb1746cc6ee9978bcc35c", - "MachineKey": "mkey:d4a36168723163165bbdcb0b17762903171593d01c26c5bb12216932f6d10876", "Peers": [], - "DNS": { - "Routes": { - "tail78f774.ts.net.": null, - "ts.net.": [{ "Addr": "199.247.155.53" }, { "Addr": "2620:111:8007::53" }] - }, - "Domains": ["tail78f774.ts.net"], - "Proxied": true, - "ExitNodeFilteredSet": [".ts.net", ".tailscale.net"] - }, - "PacketFilter": [], - "PacketFilterRules": null, - "SSHPolicy": { "rules": [] }, - "CollectServices": false, - "DERPMap": { - "Regions": { - "1": { - "RegionID": 1, - "RegionCode": "nyc", - "RegionName": "New York City", - "Latitude": 40.7128, - "Longitude": -74.006, - "Nodes": [ - { - "Name": "1h", - "RegionID": 1, - "HostName": "derp1h.tailscale.com", - "IPv4": "199.38.181.93", - "IPv6": "2607:f740:f::afd", - "CanPort80": true - }, - { - "Name": "1g", - "RegionID": 1, - "HostName": "derp1g.tailscale.com", - "IPv4": "209.177.145.120", - "IPv6": "2607:f740:f::3eb", - "CanPort80": true - }, - { - "Name": "1i", - "RegionID": 1, - "HostName": "derp1i.tailscale.com", - "IPv4": "199.38.181.103", - "IPv6": "2607:f740:f::e19", - "CanPort80": true - }, - { - "Name": "1f", - "RegionID": 1, - "HostName": "derp1f.tailscale.com", - "IPv4": "199.38.181.104", - "IPv6": "2607:f740:f::bc", - "CanPort80": true - } - ] - }, - "10": { - "RegionID": 10, - "RegionCode": "sea", - "RegionName": "Seattle", - "Latitude": 47.609722, - "Longitude": -122.333056, - "Nodes": [ - { - "Name": "10c", - "RegionID": 10, - "HostName": "derp10c.tailscale.com", - "IPv4": "192.73.240.121", - "IPv6": "2607:f740:14::40c", - "CanPort80": true - }, - { - "Name": "10d", - "RegionID": 10, - "HostName": "derp10d.tailscale.com", - "IPv4": "192.73.240.132", - "IPv6": "2607:f740:14::500", - "CanPort80": true - }, - { - "Name": "10b", - "RegionID": 10, - "HostName": "derp10b.tailscale.com", - "IPv4": "192.73.240.161", - "IPv6": "2607:f740:14::61c", - "CanPort80": true - } - ] - }, - "11": { - "RegionID": 11, - "RegionCode": "sao", - "RegionName": "São Paulo", - "Latitude": -23.55, - "Longitude": -46.633333, - "Nodes": [ - { - "Name": "11f", - "RegionID": 11, - "HostName": "derp11f.tailscale.com", - "IPv4": "172.237.61.197", - "IPv6": "2600:3c0d::2000:3bff:fe44:6166", - "CanPort80": true - }, - { - "Name": "11g", - "RegionID": 11, - "HostName": "derp11g.tailscale.com", - "IPv4": "172.237.61.190", - "IPv6": "2600:3c0d::2000:62ff:febe:2e67", - "CanPort80": true - }, - { - "Name": "11e", - "RegionID": 11, - "HostName": "derp11e.tailscale.com", - "IPv4": "172.237.61.194", - "IPv6": "2600:3c0d::2000:d2ff:fe43:1790", - "CanPort80": true - } - ] - }, - "12": { - "RegionID": 12, - "RegionCode": "ord", - "RegionName": "Chicago", - "Latitude": 41.881944, - "Longitude": -87.627778, - "Nodes": [ - { - "Name": "12e", - "RegionID": 12, - "HostName": "derp12e.tailscale.com", - "IPv4": "209.177.158.15", - "IPv6": "2607:f740:e::b17", - "CanPort80": true - }, - { - "Name": "12f", - "RegionID": 12, - "HostName": "derp12f.tailscale.com", - "IPv4": "199.38.182.118", - "IPv6": "2607:f740:e::4c8", - "CanPort80": true - }, - { - "Name": "12d", - "RegionID": 12, - "HostName": "derp12d.tailscale.com", - "IPv4": "209.177.158.246", - "IPv6": "2607:f740:e::811", - "CanPort80": true - } - ] - }, - "13": { - "RegionID": 13, - "RegionCode": "den", - "RegionName": "Denver", - "Latitude": 39.7392, - "Longitude": -104.9849, - "Nodes": [ - { - "Name": "13c", - "RegionID": 13, - "HostName": "derp13c.tailscale.com", - "IPv4": "192.73.242.28", - "IPv6": "2607:f740:16::5c", - "CanPort80": true - }, - { - "Name": "13d", - "RegionID": 13, - "HostName": "derp13d.tailscale.com", - "IPv4": "192.73.242.204", - "IPv6": "2607:f740:16::c23", - "CanPort80": true - }, - { - "Name": "13b", - "RegionID": 13, - "HostName": "derp13b.tailscale.com", - "IPv4": "192.73.242.187", - "IPv6": "2607:f740:16::640", - "CanPort80": true - } - ] - }, - "14": { - "RegionID": 14, - "RegionCode": "ams", - "RegionName": "Amsterdam", - "Latitude": 52.372778, - "Longitude": 4.893611, - "Nodes": [ - { - "Name": "14c", - "RegionID": 14, - "HostName": "derp14c.tailscale.com", - "IPv4": "176.58.93.147", - "IPv6": "2a00:dd80:3c::b09", - "CanPort80": true - }, - { - "Name": "14d", - "RegionID": 14, - "HostName": "derp14d.tailscale.com", - "IPv4": "176.58.93.154", - "IPv6": "2a00:dd80:3c::3d5", - "CanPort80": true - }, - { - "Name": "14b", - "RegionID": 14, - "HostName": "derp14b.tailscale.com", - "IPv4": "176.58.93.248", - "IPv6": "2a00:dd80:3c::807", - "CanPort80": true - } - ] - }, - "15": { - "RegionID": 15, - "RegionCode": "jnb", - "RegionName": "Johannesburg", - "Latitude": -26.204444, - "Longitude": 28.045556, - "Nodes": [ - { - "Name": "15c", - "RegionID": 15, - "HostName": "derp15c.tailscale.com", - "IPv4": "102.67.165.185", - "IPv6": "2c0f:edb0:0:10::b59", - "CanPort80": true - }, - { - "Name": "15d", - "RegionID": 15, - "HostName": "derp15d.tailscale.com", - "IPv4": "102.67.165.36", - "IPv6": "2c0f:edb0:0:10::599", - "CanPort80": true - }, - { - "Name": "15b", - "RegionID": 15, - "HostName": "derp15b.tailscale.com", - "IPv4": "102.67.165.90", - "IPv6": "2c0f:edb0:0:10::963", - "CanPort80": true - } - ] - }, - "16": { - "RegionID": 16, - "RegionCode": "mia", - "RegionName": "Miami", - "Latitude": 25.78, - "Longitude": -80.21, - "Nodes": [ - { - "Name": "16c", - "RegionID": 16, - "HostName": "derp16c.tailscale.com", - "IPv4": "192.73.243.229", - "IPv6": "2607:f740:17::4e4", - "CanPort80": true - }, - { - "Name": "16d", - "RegionID": 16, - "HostName": "derp16d.tailscale.com", - "IPv4": "192.73.243.141", - "IPv6": "2607:f740:17::475", - "CanPort80": true - }, - { - "Name": "16b", - "RegionID": 16, - "HostName": "derp16b.tailscale.com", - "IPv4": "192.73.243.135", - "IPv6": "2607:f740:17::476", - "CanPort80": true - } - ] - }, - "17": { - "RegionID": 17, - "RegionCode": "lax", - "RegionName": "Los Angeles", - "Latitude": 34.05, - "Longitude": -118.25, - "Nodes": [ - { - "Name": "17c", - "RegionID": 17, - "HostName": "derp17c.tailscale.com", - "IPv4": "208.111.40.12", - "IPv6": "2607:f740:c::10", - "CanPort80": true - }, - { - "Name": "17d", - "RegionID": 17, - "HostName": "derp17d.tailscale.com", - "IPv4": "208.111.40.216", - "IPv6": "2607:f740:c::e1b", - "CanPort80": true - }, - { - "Name": "17b", - "RegionID": 17, - "HostName": "derp17b.tailscale.com", - "IPv4": "192.73.244.245", - "IPv6": "2607:f740:c::646", - "CanPort80": true - } - ] - }, - "18": { - "RegionID": 18, - "RegionCode": "par", - "RegionName": "Paris", - "Latitude": 48.856667, - "Longitude": 2.352222, - "Nodes": [ - { - "Name": "18c", - "RegionID": 18, - "HostName": "derp18c.tailscale.com", - "IPv4": "176.58.90.207", - "IPv6": "2a00:dd80:3e::c19", - "CanPort80": true - }, - { - "Name": "18d", - "RegionID": 18, - "HostName": "derp18d.tailscale.com", - "IPv4": "176.58.90.104", - "IPv6": "2a00:dd80:3e::f2e", - "CanPort80": true - }, - { - "Name": "18b", - "RegionID": 18, - "HostName": "derp18b.tailscale.com", - "IPv4": "176.58.90.147", - "IPv6": "2a00:dd80:3e::363", - "CanPort80": true - } - ] - }, - "19": { - "RegionID": 19, - "RegionCode": "mad", - "RegionName": "Madrid", - "Latitude": 40.416944, - "Longitude": -3.703333, - "Nodes": [ - { - "Name": "19c", - "RegionID": 19, - "HostName": "derp19c.tailscale.com", - "IPv4": "45.159.97.61", - "IPv6": "2a00:dd80:14:10::20", - "CanPort80": true - }, - { - "Name": "19d", - "RegionID": 19, - "HostName": "derp19d.tailscale.com", - "IPv4": "45.159.97.233", - "IPv6": "2a00:dd80:14:10::34a", - "CanPort80": true - }, - { - "Name": "19b", - "RegionID": 19, - "HostName": "derp19b.tailscale.com", - "IPv4": "45.159.97.144", - "IPv6": "2a00:dd80:14:10::335", - "CanPort80": true - } - ] - }, - "2": { - "RegionID": 2, - "RegionCode": "sfo", - "RegionName": "San Francisco", - "Latitude": 37.7775, - "Longitude": -122.416389, - "Nodes": [ - { - "Name": "2e", - "RegionID": 2, - "HostName": "derp2e.tailscale.com", - "IPv4": "192.73.252.134", - "IPv6": "2607:f740:0:3f::44c", - "CanPort80": true - }, - { - "Name": "2f", - "RegionID": 2, - "HostName": "derp2f.tailscale.com", - "IPv4": "208.111.34.178", - "IPv6": "2607:f740:0:3f::f4", - "CanPort80": true - }, - { - "Name": "2d", - "RegionID": 2, - "HostName": "derp2d.tailscale.com", - "IPv4": "192.73.252.65", - "IPv6": "2607:f740:0:3f::287", - "CanPort80": true - } - ] - }, - "20": { - "RegionID": 20, - "RegionCode": "hkg", - "RegionName": "Hong Kong", - "Latitude": 22.3193, - "Longitude": 114.1694, - "Nodes": [ - { - "Name": "20c", - "RegionID": 20, - "HostName": "derp20c.tailscale.com", - "IPv4": "205.147.105.30", - "IPv6": "2403:2500:8000:1::5fb", - "CanPort80": true - }, - { - "Name": "20d", - "RegionID": 20, - "HostName": "derp20d.tailscale.com", - "IPv4": "205.147.105.78", - "IPv6": "2403:2500:8000:1::e9a", - "CanPort80": true - }, - { - "Name": "20b", - "RegionID": 20, - "HostName": "derp20b.tailscale.com", - "IPv4": "103.6.84.152", - "IPv6": "2403:2500:8000:1::ef6", - "CanPort80": true - } - ] - }, - "21": { - "RegionID": 21, - "RegionCode": "tor", - "RegionName": "Toronto", - "Latitude": 43.741667, - "Longitude": -79.373333, - "Nodes": [ - { - "Name": "21c", - "RegionID": 21, - "HostName": "derp21c.tailscale.com", - "IPv4": "162.248.221.215", - "IPv6": "2607:f740:50::f10", - "CanPort80": true - }, - { - "Name": "21d", - "RegionID": 21, - "HostName": "derp21d.tailscale.com", - "IPv4": "162.248.221.248", - "IPv6": "2607:f740:50::ca4", - "CanPort80": true - }, - { - "Name": "21b", - "RegionID": 21, - "HostName": "derp21b.tailscale.com", - "IPv4": "162.248.221.199", - "IPv6": "2607:f740:50::1d1", - "CanPort80": true - } - ] - }, - "22": { - "RegionID": 22, - "RegionCode": "waw", - "RegionName": "Warsaw", - "Latitude": 52.23, - "Longitude": 21.011111, - "Nodes": [ - { - "Name": "22c", - "RegionID": 22, - "HostName": "derp22c.tailscale.com", - "IPv4": "45.159.98.253", - "IPv6": "2a00:dd80:40:100::3f", - "CanPort80": true - }, - { - "Name": "22d", - "RegionID": 22, - "HostName": "derp22d.tailscale.com", - "IPv4": "45.159.98.145", - "IPv6": "2a00:dd80:40:100::211", - "CanPort80": true - }, - { - "Name": "22b", - "RegionID": 22, - "HostName": "derp22b.tailscale.com", - "IPv4": "45.159.98.196", - "IPv6": "2a00:dd80:40:100::316", - "CanPort80": true - } - ] - }, - "23": { - "RegionID": 23, - "RegionCode": "dbi", - "RegionName": "Dubai", - "Latitude": 25.263056, - "Longitude": 55.297222, - "Nodes": [ - { - "Name": "23c", - "RegionID": 23, - "HostName": "derp23c.tailscale.com", - "IPv4": "185.34.3.207", - "IPv6": "2a00:dd80:3f:100::a50", - "CanPort80": true - }, - { - "Name": "23d", - "RegionID": 23, - "HostName": "derp23d.tailscale.com", - "IPv4": "185.34.3.75", - "IPv6": "2a00:dd80:3f:100::97e", - "CanPort80": true - }, - { - "Name": "23b", - "RegionID": 23, - "HostName": "derp23b.tailscale.com", - "IPv4": "185.34.3.232", - "IPv6": "2a00:dd80:3f:100::76f", - "CanPort80": true - } - ] - }, - "24": { - "RegionID": 24, - "RegionCode": "hnl", - "RegionName": "Honolulu", - "Latitude": 21.306944, - "Longitude": -157.858333, - "Nodes": [ - { - "Name": "24c", - "RegionID": 24, - "HostName": "derp24c.tailscale.com", - "IPv4": "208.83.233.233", - "IPv6": "2001:19f0:c000:c591:5400:04ff:fe26:2c5f", - "CanPort80": true - }, - { - "Name": "24d", - "RegionID": 24, - "HostName": "derp24d.tailscale.com", - "IPv4": "208.72.155.133", - "IPv6": "2001:19f0:c000:c564:5400:04ff:fe26:2ba8", - "CanPort80": true - }, - { - "Name": "24b", - "RegionID": 24, - "HostName": "derp24b.tailscale.com", - "IPv4": "208.83.234.151", - "IPv6": "2001:19f0:c000:c586:5400:04ff:fe26:2ba6", - "CanPort80": true - } - ] - }, - "25": { - "RegionID": 25, - "RegionCode": "nai", - "RegionName": "Nairobi", - "Latitude": -1.286389, - "Longitude": 36.817222, - "Nodes": [ - { - "Name": "25c", - "RegionID": 25, - "HostName": "derp25c.tailscale.com", - "IPv4": "102.67.167.37", - "IPv6": "2c0f:edb0:2000:1::2c7", - "CanPort80": true - }, - { - "Name": "25d", - "RegionID": 25, - "HostName": "derp25d.tailscale.com", - "IPv4": "102.67.167.188", - "IPv6": "2c0f:edb0:2000:1::188", - "CanPort80": true - }, - { - "Name": "25b", - "RegionID": 25, - "HostName": "derp25b.tailscale.com", - "IPv4": "102.67.167.245", - "IPv6": "2c0f:edb0:2000:1::2e9", - "CanPort80": true - } - ] - }, - "26": { - "RegionID": 26, - "RegionCode": "nue", - "RegionName": "Nuremberg", - "Latitude": 49.453889, - "Longitude": 11.0775, - "Nodes": [ - { - "Name": "26c", - "RegionID": 26, - "HostName": "derp26c.tailscale.com", - "IPv4": "49.12.193.137", - "IPv6": "2a01:4f8:1c1c:5c70::1", - "CanPort80": true - }, - { - "Name": "26d", - "RegionID": 26, - "HostName": "derp26d.tailscale.com", - "IPv4": "49.13.204.141", - "IPv6": "2a01:4f8:1c0c:7d06::1", - "CanPort80": true - }, - { - "Name": "26b", - "RegionID": 26, - "HostName": "derp26b.tailscale.com", - "IPv4": "167.235.72.200", - "IPv6": "2a01:4f8:1c1c:47b6::1", - "CanPort80": true - } - ] - }, - "27": { - "RegionID": 27, - "RegionCode": "iad", - "RegionName": "Ashburn", - "Latitude": 39.03, - "Longitude": -77.471111, - "Nodes": [ - { - "Name": "27d", - "RegionID": 27, - "HostName": "derp27d.tailscale.com", - "IPv4": "178.156.152.106", - "IPv6": "2a01:4ff:f0:3c8e::1", - "CanPort80": true - }, - { - "Name": "27c", - "RegionID": 27, - "HostName": "derp27c.tailscale.com", - "IPv4": "178.156.152.91", - "IPv6": "2a01:4ff:f0:3913::1", - "CanPort80": true - }, - { - "Name": "27e", - "RegionID": 27, - "HostName": "derp27e.tailscale.com", - "IPv4": "178.156.134.232", - "IPv6": "2a01:4ff:f0:28d4::1", - "CanPort80": true - }, - { - "Name": "27b", - "RegionID": 27, - "HostName": "derp27b.tailscale.com", - "IPv4": "5.161.218.233", - "IPv6": "2a01:4ff:f0:3db9::1", - "CanPort80": true - } - ] - }, - "28": { - "RegionID": 28, - "RegionCode": "hel", - "RegionName": "Helsinki", - "Latitude": 60.170833, - "Longitude": 24.9375, - "Nodes": [ - { - "Name": "28c", - "RegionID": 28, - "HostName": "derp28c.tailscale.com", - "IPv4": "95.217.2.165", - "IPv6": "2a01:4f9:c012:cd74::1", - "CanPort80": true - }, - { - "Name": "28d", - "RegionID": 28, - "HostName": "derp28d.tailscale.com", - "IPv4": "157.180.28.32", - "IPv6": "2a01:4f9:c012:2e5b::1", - "CanPort80": true - }, - { - "Name": "28b", - "RegionID": 28, - "HostName": "derp28b.tailscale.com", - "IPv4": "65.109.143.62", - "IPv6": "2a01:4f9:c012:d55c::1", - "CanPort80": true - } - ] - }, - "3": { - "RegionID": 3, - "RegionCode": "sin", - "RegionName": "Singapore", - "Latitude": 1.3521, - "Longitude": 103.8198, - "Nodes": [ - { - "Name": "3g", - "RegionID": 3, - "HostName": "derp3g.tailscale.com", - "IPv4": "172.237.72.79", - "IPv6": "2600:3c15::2000:adff:fe08:6fab", - "CanPort80": true - }, - { - "Name": "3f", - "RegionID": 3, - "HostName": "derp3f.tailscale.com", - "IPv4": "172.237.72.8", - "IPv6": "2600:3c15::2000:53ff:fe48:a668", - "CanPort80": true - }, - { - "Name": "3h", - "RegionID": 3, - "HostName": "derp3h.tailscale.com", - "IPv4": "172.237.66.30", - "IPv6": "2600:3c15::2000:3dff:fe44:50aa", - "CanPort80": true - }, - { - "Name": "3e", - "RegionID": 3, - "HostName": "derp3e.tailscale.com", - "IPv4": "172.237.72.43", - "IPv6": "2600:3c15::2000:6cff:fee4:d799", - "CanPort80": true - } - ] - }, - "4": { - "RegionID": 4, - "RegionCode": "fra", - "RegionName": "Frankfurt", - "Latitude": 50.1109, - "Longitude": 8.6821, - "Nodes": [ - { - "Name": "4h", - "RegionID": 4, - "HostName": "derp4h.tailscale.com", - "IPv4": "185.40.234.77", - "IPv6": "2a00:dd80:20::bcf", - "CanPort80": true - }, - { - "Name": "4g", - "RegionID": 4, - "HostName": "derp4g.tailscale.com", - "IPv4": "185.40.234.113", - "IPv6": "2a00:dd80:20::8f", - "CanPort80": true - }, - { - "Name": "4i", - "RegionID": 4, - "HostName": "derp4i.tailscale.com", - "IPv4": "185.40.234.53", - "IPv6": "2a00:dd80:20::8a6", - "CanPort80": true - }, - { - "Name": "4f", - "RegionID": 4, - "HostName": "derp4f.tailscale.com", - "IPv4": "185.40.234.219", - "IPv6": "2a00:dd80:20::a25", - "CanPort80": true - } - ] - }, - "5": { - "RegionID": 5, - "RegionCode": "syd", - "RegionName": "Sydney", - "Latitude": -33.867778, - "Longitude": 151.21, - "Nodes": [ - { - "Name": "5f", - "RegionID": 5, - "HostName": "derp5f.tailscale.com", - "IPv4": "172.105.166.103", - "IPv6": "2400:8907::2000:ccff:fe1f:80da", - "CanPort80": true - }, - { - "Name": "5g", - "RegionID": 5, - "HostName": "derp5g.tailscale.com", - "IPv4": "172.105.169.57", - "IPv6": "2400:8907::2000:2fff:fea7:57f4", - "CanPort80": true - }, - { - "Name": "5e", - "RegionID": 5, - "HostName": "derp5e.tailscale.com", - "IPv4": "172.105.179.230", - "IPv6": "2400:8907::2000:ceff:fe8d:4f4e", - "CanPort80": true - } - ] - }, - "6": { - "RegionID": 6, - "RegionCode": "blr", - "RegionName": "Bengaluru", - "Latitude": 12.9716, - "Longitude": 77.5946, - "Nodes": [ - { - "Name": "6a", - "RegionID": 6, - "HostName": "derp6.tailscale.com", - "IPv4": "68.183.90.120", - "IPv6": "2400:6180:100:d0::982:d001", - "CanPort80": true - } - ] - }, - "7": { - "RegionID": 7, - "RegionCode": "tok", - "RegionName": "Tokyo", - "Latitude": 35.6764, - "Longitude": 139.65, - "Nodes": [ - { - "Name": "7g", - "RegionID": 7, - "HostName": "derp7g.tailscale.com", - "IPv4": "172.238.6.179", - "IPv6": "2600:3c18::2000:3fff:fe80:3ebd", - "CanPort80": true - }, - { - "Name": "7f", - "RegionID": 7, - "HostName": "derp7f.tailscale.com", - "IPv4": "172.238.6.34", - "IPv6": "2600:3c18::2000:acff:fe8e:3ed5", - "CanPort80": true - }, - { - "Name": "7h", - "RegionID": 7, - "HostName": "derp7h.tailscale.com", - "IPv4": "172.237.28.183", - "IPv6": "2600:3c18::2000:b1ff:fea9:4560", - "CanPort80": true - }, - { - "Name": "7e", - "RegionID": 7, - "HostName": "derp7e.tailscale.com", - "IPv4": "172.238.6.180", - "IPv6": "2600:3c18::2000:60ff:fe0f:6e83", - "STUNOnly": true, - "CanPort80": true - } - ] - }, - "8": { - "RegionID": 8, - "RegionCode": "lhr", - "RegionName": "London", - "Latitude": 51.5072, - "Longitude": 0.1276, - "Nodes": [ - { - "Name": "8f", - "RegionID": 8, - "HostName": "derp8f.tailscale.com", - "IPv4": "176.58.88.183", - "IPv6": "2a00:dd80:3a::dfa", - "CanPort80": true - }, - { - "Name": "8g", - "RegionID": 8, - "HostName": "derp8g.tailscale.com", - "IPv4": "176.58.92.254", - "IPv6": "2a00:dd80:3a::ed", - "CanPort80": true - }, - { - "Name": "8e", - "RegionID": 8, - "HostName": "derp8e.tailscale.com", - "IPv4": "176.58.92.144", - "IPv6": "2a00:dd80:3a::b33", - "CanPort80": true - } - ] - }, - "9": { - "RegionID": 9, - "RegionCode": "dfw", - "RegionName": "Dallas", - "Latitude": 32.779167, - "Longitude": -96.808889, - "Nodes": [ - { - "Name": "9e", - "RegionID": 9, - "HostName": "derp9e.tailscale.com", - "IPv4": "192.73.248.83", - "IPv6": "2607:f740:100::359", - "CanPort80": true - }, - { - "Name": "9f", - "RegionID": 9, - "HostName": "derp9f.tailscale.com", - "IPv4": "209.177.156.197", - "IPv6": "2607:f740:100::cad", - "CanPort80": true - }, - { - "Name": "9d", - "RegionID": 9, - "HostName": "derp9d.tailscale.com", - "IPv4": "209.177.156.94", - "IPv6": "2607:f740:100::c05", - "CanPort80": true - } - ] - } - } - }, - "DisplayMessages": null, - "TKAEnabled": false, - "TKAHead": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", - "Domain": "kratail2tid@passkey", - "DomainAuditLogID": "", - "UserProfiles": { - "3118755726458377": { - "ID": 3118755726458377, - "LoginName": "exit-a.tail78f774.ts.net", - "DisplayName": "exit-a" - } - } + "PacketFilterRules": null } }, "exit-b": { - "commands": { - "packet_filter_rules": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-b/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-b/tailscaled.sock debug localapi POST debug-packet-filter-matches" - }, "packet_filter_rules": null, - "packet_filter_matches": [], - "whois": { - "100.124.195.93": { - "peer_name": "exit-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-b/tailscaled.sock whois --json 100.124.195.93", - "response": null - }, - "100.85.66.106": { - "peer_name": "exit-node", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-b/tailscaled.sock whois --json 100.85.66.106", - "response": null - }, - "100.107.162.14": { - "peer_name": "group-a-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-b/tailscaled.sock whois --json 100.107.162.14", - "response": null - }, - "100.77.135.18": { - "peer_name": "group-b-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-b/tailscaled.sock whois --json 100.77.135.18", - "response": null - }, - "100.105.127.107": { - "peer_name": "multi-exit-router", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-b/tailscaled.sock whois --json 100.105.127.107", - "response": null - }, - "100.109.43.124": { - "peer_name": "router-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-b/tailscaled.sock whois --json 100.109.43.124", - "response": null - }, - "100.65.172.123": { - "peer_name": "router-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-b/tailscaled.sock whois --json 100.65.172.123", - "response": null - }, - "100.92.142.61": { - "peer_name": "subnet-router", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-b/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-b/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-b/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-b/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-b/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-b/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-b/tailscaled.sock whois --json 100.90.199.68", - "response": null - } - }, "netmap": { - "SelfNode": { - "ID": 2230775583277936, - "StableID": "ndK1N8hKRJ11CNTRL", - "Name": "exit-b.tail78f774.ts.net.", - "User": 2230775583277936, - "Key": "nodekey:265e1377372be0d036773ac41339bf7b53ed18e9f67f196d7d517abeff741217", - "DiscoKey": "discokey:63071b08ff89860a2d98005f8f6f65f3b92e05b7b1338b1be71e4ad866f12728", - "Addresses": ["100.116.18.24/32", "fd7a:115c:a1e0::ff37:1218/128"], - "AllowedIPs": ["100.116.18.24/32", "fd7a:115c:a1e0::ff37:1218/128"], - "Endpoints": ["77.164.248.136:35565", "10.65.0.27:35565", "172.17.0.1:35565"], - "Hostinfo": { - "Hostname": "exit-b", - "RoutableIPs": ["0.0.0.0/0", "::/0"], - "RequestTags": ["tag:exit-b"], - "Services": [ - { "Proto": "peerapi4", "Port": 61723 }, - { "Proto": "peerapi6", "Port": 61723 }, - { "Proto": "peerapi-dns-proxy", "Port": 1 } - ] - }, - "Created": "2026-03-28T10:38:00.655990366Z", - "Tags": ["tag:exit-b"], - "MachineAuthorized": true, - "CapMap": { - "https://tailscale.com/cap/file-sharing": null, - "https://tailscale.com/cap/is-owner": null, - "https://tailscale.com/cap/ssh": null, - "https://tailscale.com/cap/tailnet-lock": null, - "probe-udp-lifetime": null, - "ssh-behavior-v1": null, - "ssh-env-vars": null, - "store-appc-routes": null, - "tailnet-display-name": ["kratail2tid@passkey"] - }, - "ComputedName": "exit-b", - "ComputedNameWithHost": "exit-b" - }, - "AllCaps": [ - "https://tailscale.com/cap/tailnet-lock", - "probe-udp-lifetime", - "ssh-env-vars", - "store-appc-routes", - "https://tailscale.com/cap/is-owner", - "tailnet-display-name", - "ssh-behavior-v1", - "https://tailscale.com/cap/ssh", - "https://tailscale.com/cap/file-sharing" - ], - "NodeKey": "nodekey:265e1377372be0d036773ac41339bf7b53ed18e9f67f196d7d517abeff741217", - "MachineKey": "mkey:f4cbc28e2db0f8d8a6a5fc3991b055477e5efc6c025d24b72d3509fa3743401c", "Peers": [], - "DNS": { - "Routes": { - "tail78f774.ts.net.": null, - "ts.net.": [{ "Addr": "199.247.155.53" }, { "Addr": "2620:111:8007::53" }] - }, - "Domains": ["tail78f774.ts.net"], - "Proxied": true, - "ExitNodeFilteredSet": [".ts.net", ".tailscale.net"] - }, - "PacketFilter": [], - "PacketFilterRules": null, - "SSHPolicy": { "rules": [] }, - "CollectServices": false, - "DERPMap": { - "Regions": { - "1": { - "RegionID": 1, - "RegionCode": "nyc", - "RegionName": "New York City", - "Latitude": 40.7128, - "Longitude": -74.006, - "Nodes": [ - { - "Name": "1h", - "RegionID": 1, - "HostName": "derp1h.tailscale.com", - "IPv4": "199.38.181.93", - "IPv6": "2607:f740:f::afd", - "CanPort80": true - }, - { - "Name": "1g", - "RegionID": 1, - "HostName": "derp1g.tailscale.com", - "IPv4": "209.177.145.120", - "IPv6": "2607:f740:f::3eb", - "CanPort80": true - }, - { - "Name": "1i", - "RegionID": 1, - "HostName": "derp1i.tailscale.com", - "IPv4": "199.38.181.103", - "IPv6": "2607:f740:f::e19", - "CanPort80": true - }, - { - "Name": "1f", - "RegionID": 1, - "HostName": "derp1f.tailscale.com", - "IPv4": "199.38.181.104", - "IPv6": "2607:f740:f::bc", - "CanPort80": true - } - ] - }, - "10": { - "RegionID": 10, - "RegionCode": "sea", - "RegionName": "Seattle", - "Latitude": 47.609722, - "Longitude": -122.333056, - "Nodes": [ - { - "Name": "10c", - "RegionID": 10, - "HostName": "derp10c.tailscale.com", - "IPv4": "192.73.240.121", - "IPv6": "2607:f740:14::40c", - "CanPort80": true - }, - { - "Name": "10d", - "RegionID": 10, - "HostName": "derp10d.tailscale.com", - "IPv4": "192.73.240.132", - "IPv6": "2607:f740:14::500", - "CanPort80": true - }, - { - "Name": "10b", - "RegionID": 10, - "HostName": "derp10b.tailscale.com", - "IPv4": "192.73.240.161", - "IPv6": "2607:f740:14::61c", - "CanPort80": true - } - ] - }, - "11": { - "RegionID": 11, - "RegionCode": "sao", - "RegionName": "São Paulo", - "Latitude": -23.55, - "Longitude": -46.633333, - "Nodes": [ - { - "Name": "11f", - "RegionID": 11, - "HostName": "derp11f.tailscale.com", - "IPv4": "172.237.61.197", - "IPv6": "2600:3c0d::2000:3bff:fe44:6166", - "CanPort80": true - }, - { - "Name": "11g", - "RegionID": 11, - "HostName": "derp11g.tailscale.com", - "IPv4": "172.237.61.190", - "IPv6": "2600:3c0d::2000:62ff:febe:2e67", - "CanPort80": true - }, - { - "Name": "11e", - "RegionID": 11, - "HostName": "derp11e.tailscale.com", - "IPv4": "172.237.61.194", - "IPv6": "2600:3c0d::2000:d2ff:fe43:1790", - "CanPort80": true - } - ] - }, - "12": { - "RegionID": 12, - "RegionCode": "ord", - "RegionName": "Chicago", - "Latitude": 41.881944, - "Longitude": -87.627778, - "Nodes": [ - { - "Name": "12e", - "RegionID": 12, - "HostName": "derp12e.tailscale.com", - "IPv4": "209.177.158.15", - "IPv6": "2607:f740:e::b17", - "CanPort80": true - }, - { - "Name": "12f", - "RegionID": 12, - "HostName": "derp12f.tailscale.com", - "IPv4": "199.38.182.118", - "IPv6": "2607:f740:e::4c8", - "CanPort80": true - }, - { - "Name": "12d", - "RegionID": 12, - "HostName": "derp12d.tailscale.com", - "IPv4": "209.177.158.246", - "IPv6": "2607:f740:e::811", - "CanPort80": true - } - ] - }, - "13": { - "RegionID": 13, - "RegionCode": "den", - "RegionName": "Denver", - "Latitude": 39.7392, - "Longitude": -104.9849, - "Nodes": [ - { - "Name": "13c", - "RegionID": 13, - "HostName": "derp13c.tailscale.com", - "IPv4": "192.73.242.28", - "IPv6": "2607:f740:16::5c", - "CanPort80": true - }, - { - "Name": "13d", - "RegionID": 13, - "HostName": "derp13d.tailscale.com", - "IPv4": "192.73.242.204", - "IPv6": "2607:f740:16::c23", - "CanPort80": true - }, - { - "Name": "13b", - "RegionID": 13, - "HostName": "derp13b.tailscale.com", - "IPv4": "192.73.242.187", - "IPv6": "2607:f740:16::640", - "CanPort80": true - } - ] - }, - "14": { - "RegionID": 14, - "RegionCode": "ams", - "RegionName": "Amsterdam", - "Latitude": 52.372778, - "Longitude": 4.893611, - "Nodes": [ - { - "Name": "14c", - "RegionID": 14, - "HostName": "derp14c.tailscale.com", - "IPv4": "176.58.93.147", - "IPv6": "2a00:dd80:3c::b09", - "CanPort80": true - }, - { - "Name": "14d", - "RegionID": 14, - "HostName": "derp14d.tailscale.com", - "IPv4": "176.58.93.154", - "IPv6": "2a00:dd80:3c::3d5", - "CanPort80": true - }, - { - "Name": "14b", - "RegionID": 14, - "HostName": "derp14b.tailscale.com", - "IPv4": "176.58.93.248", - "IPv6": "2a00:dd80:3c::807", - "CanPort80": true - } - ] - }, - "15": { - "RegionID": 15, - "RegionCode": "jnb", - "RegionName": "Johannesburg", - "Latitude": -26.204444, - "Longitude": 28.045556, - "Nodes": [ - { - "Name": "15c", - "RegionID": 15, - "HostName": "derp15c.tailscale.com", - "IPv4": "102.67.165.185", - "IPv6": "2c0f:edb0:0:10::b59", - "CanPort80": true - }, - { - "Name": "15d", - "RegionID": 15, - "HostName": "derp15d.tailscale.com", - "IPv4": "102.67.165.36", - "IPv6": "2c0f:edb0:0:10::599", - "CanPort80": true - }, - { - "Name": "15b", - "RegionID": 15, - "HostName": "derp15b.tailscale.com", - "IPv4": "102.67.165.90", - "IPv6": "2c0f:edb0:0:10::963", - "CanPort80": true - } - ] - }, - "16": { - "RegionID": 16, - "RegionCode": "mia", - "RegionName": "Miami", - "Latitude": 25.78, - "Longitude": -80.21, - "Nodes": [ - { - "Name": "16c", - "RegionID": 16, - "HostName": "derp16c.tailscale.com", - "IPv4": "192.73.243.229", - "IPv6": "2607:f740:17::4e4", - "CanPort80": true - }, - { - "Name": "16d", - "RegionID": 16, - "HostName": "derp16d.tailscale.com", - "IPv4": "192.73.243.141", - "IPv6": "2607:f740:17::475", - "CanPort80": true - }, - { - "Name": "16b", - "RegionID": 16, - "HostName": "derp16b.tailscale.com", - "IPv4": "192.73.243.135", - "IPv6": "2607:f740:17::476", - "CanPort80": true - } - ] - }, - "17": { - "RegionID": 17, - "RegionCode": "lax", - "RegionName": "Los Angeles", - "Latitude": 34.05, - "Longitude": -118.25, - "Nodes": [ - { - "Name": "17c", - "RegionID": 17, - "HostName": "derp17c.tailscale.com", - "IPv4": "208.111.40.12", - "IPv6": "2607:f740:c::10", - "CanPort80": true - }, - { - "Name": "17d", - "RegionID": 17, - "HostName": "derp17d.tailscale.com", - "IPv4": "208.111.40.216", - "IPv6": "2607:f740:c::e1b", - "CanPort80": true - }, - { - "Name": "17b", - "RegionID": 17, - "HostName": "derp17b.tailscale.com", - "IPv4": "192.73.244.245", - "IPv6": "2607:f740:c::646", - "CanPort80": true - } - ] - }, - "18": { - "RegionID": 18, - "RegionCode": "par", - "RegionName": "Paris", - "Latitude": 48.856667, - "Longitude": 2.352222, - "Nodes": [ - { - "Name": "18c", - "RegionID": 18, - "HostName": "derp18c.tailscale.com", - "IPv4": "176.58.90.207", - "IPv6": "2a00:dd80:3e::c19", - "CanPort80": true - }, - { - "Name": "18d", - "RegionID": 18, - "HostName": "derp18d.tailscale.com", - "IPv4": "176.58.90.104", - "IPv6": "2a00:dd80:3e::f2e", - "CanPort80": true - }, - { - "Name": "18b", - "RegionID": 18, - "HostName": "derp18b.tailscale.com", - "IPv4": "176.58.90.147", - "IPv6": "2a00:dd80:3e::363", - "CanPort80": true - } - ] - }, - "19": { - "RegionID": 19, - "RegionCode": "mad", - "RegionName": "Madrid", - "Latitude": 40.416944, - "Longitude": -3.703333, - "Nodes": [ - { - "Name": "19c", - "RegionID": 19, - "HostName": "derp19c.tailscale.com", - "IPv4": "45.159.97.61", - "IPv6": "2a00:dd80:14:10::20", - "CanPort80": true - }, - { - "Name": "19d", - "RegionID": 19, - "HostName": "derp19d.tailscale.com", - "IPv4": "45.159.97.233", - "IPv6": "2a00:dd80:14:10::34a", - "CanPort80": true - }, - { - "Name": "19b", - "RegionID": 19, - "HostName": "derp19b.tailscale.com", - "IPv4": "45.159.97.144", - "IPv6": "2a00:dd80:14:10::335", - "CanPort80": true - } - ] - }, - "2": { - "RegionID": 2, - "RegionCode": "sfo", - "RegionName": "San Francisco", - "Latitude": 37.7775, - "Longitude": -122.416389, - "Nodes": [ - { - "Name": "2e", - "RegionID": 2, - "HostName": "derp2e.tailscale.com", - "IPv4": "192.73.252.134", - "IPv6": "2607:f740:0:3f::44c", - "CanPort80": true - }, - { - "Name": "2f", - "RegionID": 2, - "HostName": "derp2f.tailscale.com", - "IPv4": "208.111.34.178", - "IPv6": "2607:f740:0:3f::f4", - "CanPort80": true - }, - { - "Name": "2d", - "RegionID": 2, - "HostName": "derp2d.tailscale.com", - "IPv4": "192.73.252.65", - "IPv6": "2607:f740:0:3f::287", - "CanPort80": true - } - ] - }, - "20": { - "RegionID": 20, - "RegionCode": "hkg", - "RegionName": "Hong Kong", - "Latitude": 22.3193, - "Longitude": 114.1694, - "Nodes": [ - { - "Name": "20c", - "RegionID": 20, - "HostName": "derp20c.tailscale.com", - "IPv4": "205.147.105.30", - "IPv6": "2403:2500:8000:1::5fb", - "CanPort80": true - }, - { - "Name": "20d", - "RegionID": 20, - "HostName": "derp20d.tailscale.com", - "IPv4": "205.147.105.78", - "IPv6": "2403:2500:8000:1::e9a", - "CanPort80": true - }, - { - "Name": "20b", - "RegionID": 20, - "HostName": "derp20b.tailscale.com", - "IPv4": "103.6.84.152", - "IPv6": "2403:2500:8000:1::ef6", - "CanPort80": true - } - ] - }, - "21": { - "RegionID": 21, - "RegionCode": "tor", - "RegionName": "Toronto", - "Latitude": 43.741667, - "Longitude": -79.373333, - "Nodes": [ - { - "Name": "21c", - "RegionID": 21, - "HostName": "derp21c.tailscale.com", - "IPv4": "162.248.221.215", - "IPv6": "2607:f740:50::f10", - "CanPort80": true - }, - { - "Name": "21d", - "RegionID": 21, - "HostName": "derp21d.tailscale.com", - "IPv4": "162.248.221.248", - "IPv6": "2607:f740:50::ca4", - "CanPort80": true - }, - { - "Name": "21b", - "RegionID": 21, - "HostName": "derp21b.tailscale.com", - "IPv4": "162.248.221.199", - "IPv6": "2607:f740:50::1d1", - "CanPort80": true - } - ] - }, - "22": { - "RegionID": 22, - "RegionCode": "waw", - "RegionName": "Warsaw", - "Latitude": 52.23, - "Longitude": 21.011111, - "Nodes": [ - { - "Name": "22c", - "RegionID": 22, - "HostName": "derp22c.tailscale.com", - "IPv4": "45.159.98.253", - "IPv6": "2a00:dd80:40:100::3f", - "CanPort80": true - }, - { - "Name": "22d", - "RegionID": 22, - "HostName": "derp22d.tailscale.com", - "IPv4": "45.159.98.145", - "IPv6": "2a00:dd80:40:100::211", - "CanPort80": true - }, - { - "Name": "22b", - "RegionID": 22, - "HostName": "derp22b.tailscale.com", - "IPv4": "45.159.98.196", - "IPv6": "2a00:dd80:40:100::316", - "CanPort80": true - } - ] - }, - "23": { - "RegionID": 23, - "RegionCode": "dbi", - "RegionName": "Dubai", - "Latitude": 25.263056, - "Longitude": 55.297222, - "Nodes": [ - { - "Name": "23c", - "RegionID": 23, - "HostName": "derp23c.tailscale.com", - "IPv4": "185.34.3.207", - "IPv6": "2a00:dd80:3f:100::a50", - "CanPort80": true - }, - { - "Name": "23d", - "RegionID": 23, - "HostName": "derp23d.tailscale.com", - "IPv4": "185.34.3.75", - "IPv6": "2a00:dd80:3f:100::97e", - "CanPort80": true - }, - { - "Name": "23b", - "RegionID": 23, - "HostName": "derp23b.tailscale.com", - "IPv4": "185.34.3.232", - "IPv6": "2a00:dd80:3f:100::76f", - "CanPort80": true - } - ] - }, - "24": { - "RegionID": 24, - "RegionCode": "hnl", - "RegionName": "Honolulu", - "Latitude": 21.306944, - "Longitude": -157.858333, - "Nodes": [ - { - "Name": "24c", - "RegionID": 24, - "HostName": "derp24c.tailscale.com", - "IPv4": "208.83.233.233", - "IPv6": "2001:19f0:c000:c591:5400:04ff:fe26:2c5f", - "CanPort80": true - }, - { - "Name": "24d", - "RegionID": 24, - "HostName": "derp24d.tailscale.com", - "IPv4": "208.72.155.133", - "IPv6": "2001:19f0:c000:c564:5400:04ff:fe26:2ba8", - "CanPort80": true - }, - { - "Name": "24b", - "RegionID": 24, - "HostName": "derp24b.tailscale.com", - "IPv4": "208.83.234.151", - "IPv6": "2001:19f0:c000:c586:5400:04ff:fe26:2ba6", - "CanPort80": true - } - ] - }, - "25": { - "RegionID": 25, - "RegionCode": "nai", - "RegionName": "Nairobi", - "Latitude": -1.286389, - "Longitude": 36.817222, - "Nodes": [ - { - "Name": "25c", - "RegionID": 25, - "HostName": "derp25c.tailscale.com", - "IPv4": "102.67.167.37", - "IPv6": "2c0f:edb0:2000:1::2c7", - "CanPort80": true - }, - { - "Name": "25d", - "RegionID": 25, - "HostName": "derp25d.tailscale.com", - "IPv4": "102.67.167.188", - "IPv6": "2c0f:edb0:2000:1::188", - "CanPort80": true - }, - { - "Name": "25b", - "RegionID": 25, - "HostName": "derp25b.tailscale.com", - "IPv4": "102.67.167.245", - "IPv6": "2c0f:edb0:2000:1::2e9", - "CanPort80": true - } - ] - }, - "26": { - "RegionID": 26, - "RegionCode": "nue", - "RegionName": "Nuremberg", - "Latitude": 49.453889, - "Longitude": 11.0775, - "Nodes": [ - { - "Name": "26c", - "RegionID": 26, - "HostName": "derp26c.tailscale.com", - "IPv4": "49.12.193.137", - "IPv6": "2a01:4f8:1c1c:5c70::1", - "CanPort80": true - }, - { - "Name": "26d", - "RegionID": 26, - "HostName": "derp26d.tailscale.com", - "IPv4": "49.13.204.141", - "IPv6": "2a01:4f8:1c0c:7d06::1", - "CanPort80": true - }, - { - "Name": "26b", - "RegionID": 26, - "HostName": "derp26b.tailscale.com", - "IPv4": "167.235.72.200", - "IPv6": "2a01:4f8:1c1c:47b6::1", - "CanPort80": true - } - ] - }, - "27": { - "RegionID": 27, - "RegionCode": "iad", - "RegionName": "Ashburn", - "Latitude": 39.03, - "Longitude": -77.471111, - "Nodes": [ - { - "Name": "27d", - "RegionID": 27, - "HostName": "derp27d.tailscale.com", - "IPv4": "178.156.152.106", - "IPv6": "2a01:4ff:f0:3c8e::1", - "CanPort80": true - }, - { - "Name": "27c", - "RegionID": 27, - "HostName": "derp27c.tailscale.com", - "IPv4": "178.156.152.91", - "IPv6": "2a01:4ff:f0:3913::1", - "CanPort80": true - }, - { - "Name": "27e", - "RegionID": 27, - "HostName": "derp27e.tailscale.com", - "IPv4": "178.156.134.232", - "IPv6": "2a01:4ff:f0:28d4::1", - "CanPort80": true - }, - { - "Name": "27b", - "RegionID": 27, - "HostName": "derp27b.tailscale.com", - "IPv4": "5.161.218.233", - "IPv6": "2a01:4ff:f0:3db9::1", - "CanPort80": true - } - ] - }, - "28": { - "RegionID": 28, - "RegionCode": "hel", - "RegionName": "Helsinki", - "Latitude": 60.170833, - "Longitude": 24.9375, - "Nodes": [ - { - "Name": "28c", - "RegionID": 28, - "HostName": "derp28c.tailscale.com", - "IPv4": "95.217.2.165", - "IPv6": "2a01:4f9:c012:cd74::1", - "CanPort80": true - }, - { - "Name": "28d", - "RegionID": 28, - "HostName": "derp28d.tailscale.com", - "IPv4": "157.180.28.32", - "IPv6": "2a01:4f9:c012:2e5b::1", - "CanPort80": true - }, - { - "Name": "28b", - "RegionID": 28, - "HostName": "derp28b.tailscale.com", - "IPv4": "65.109.143.62", - "IPv6": "2a01:4f9:c012:d55c::1", - "CanPort80": true - } - ] - }, - "3": { - "RegionID": 3, - "RegionCode": "sin", - "RegionName": "Singapore", - "Latitude": 1.3521, - "Longitude": 103.8198, - "Nodes": [ - { - "Name": "3g", - "RegionID": 3, - "HostName": "derp3g.tailscale.com", - "IPv4": "172.237.72.79", - "IPv6": "2600:3c15::2000:adff:fe08:6fab", - "CanPort80": true - }, - { - "Name": "3f", - "RegionID": 3, - "HostName": "derp3f.tailscale.com", - "IPv4": "172.237.72.8", - "IPv6": "2600:3c15::2000:53ff:fe48:a668", - "CanPort80": true - }, - { - "Name": "3h", - "RegionID": 3, - "HostName": "derp3h.tailscale.com", - "IPv4": "172.237.66.30", - "IPv6": "2600:3c15::2000:3dff:fe44:50aa", - "CanPort80": true - }, - { - "Name": "3e", - "RegionID": 3, - "HostName": "derp3e.tailscale.com", - "IPv4": "172.237.72.43", - "IPv6": "2600:3c15::2000:6cff:fee4:d799", - "CanPort80": true - } - ] - }, - "4": { - "RegionID": 4, - "RegionCode": "fra", - "RegionName": "Frankfurt", - "Latitude": 50.1109, - "Longitude": 8.6821, - "Nodes": [ - { - "Name": "4h", - "RegionID": 4, - "HostName": "derp4h.tailscale.com", - "IPv4": "185.40.234.77", - "IPv6": "2a00:dd80:20::bcf", - "CanPort80": true - }, - { - "Name": "4g", - "RegionID": 4, - "HostName": "derp4g.tailscale.com", - "IPv4": "185.40.234.113", - "IPv6": "2a00:dd80:20::8f", - "CanPort80": true - }, - { - "Name": "4i", - "RegionID": 4, - "HostName": "derp4i.tailscale.com", - "IPv4": "185.40.234.53", - "IPv6": "2a00:dd80:20::8a6", - "CanPort80": true - }, - { - "Name": "4f", - "RegionID": 4, - "HostName": "derp4f.tailscale.com", - "IPv4": "185.40.234.219", - "IPv6": "2a00:dd80:20::a25", - "CanPort80": true - } - ] - }, - "5": { - "RegionID": 5, - "RegionCode": "syd", - "RegionName": "Sydney", - "Latitude": -33.867778, - "Longitude": 151.21, - "Nodes": [ - { - "Name": "5f", - "RegionID": 5, - "HostName": "derp5f.tailscale.com", - "IPv4": "172.105.166.103", - "IPv6": "2400:8907::2000:ccff:fe1f:80da", - "CanPort80": true - }, - { - "Name": "5g", - "RegionID": 5, - "HostName": "derp5g.tailscale.com", - "IPv4": "172.105.169.57", - "IPv6": "2400:8907::2000:2fff:fea7:57f4", - "CanPort80": true - }, - { - "Name": "5e", - "RegionID": 5, - "HostName": "derp5e.tailscale.com", - "IPv4": "172.105.179.230", - "IPv6": "2400:8907::2000:ceff:fe8d:4f4e", - "CanPort80": true - } - ] - }, - "6": { - "RegionID": 6, - "RegionCode": "blr", - "RegionName": "Bengaluru", - "Latitude": 12.9716, - "Longitude": 77.5946, - "Nodes": [ - { - "Name": "6a", - "RegionID": 6, - "HostName": "derp6.tailscale.com", - "IPv4": "68.183.90.120", - "IPv6": "2400:6180:100:d0::982:d001", - "CanPort80": true - } - ] - }, - "7": { - "RegionID": 7, - "RegionCode": "tok", - "RegionName": "Tokyo", - "Latitude": 35.6764, - "Longitude": 139.65, - "Nodes": [ - { - "Name": "7g", - "RegionID": 7, - "HostName": "derp7g.tailscale.com", - "IPv4": "172.238.6.179", - "IPv6": "2600:3c18::2000:3fff:fe80:3ebd", - "CanPort80": true - }, - { - "Name": "7f", - "RegionID": 7, - "HostName": "derp7f.tailscale.com", - "IPv4": "172.238.6.34", - "IPv6": "2600:3c18::2000:acff:fe8e:3ed5", - "CanPort80": true - }, - { - "Name": "7h", - "RegionID": 7, - "HostName": "derp7h.tailscale.com", - "IPv4": "172.237.28.183", - "IPv6": "2600:3c18::2000:b1ff:fea9:4560", - "CanPort80": true - }, - { - "Name": "7e", - "RegionID": 7, - "HostName": "derp7e.tailscale.com", - "IPv4": "172.238.6.180", - "IPv6": "2600:3c18::2000:60ff:fe0f:6e83", - "STUNOnly": true, - "CanPort80": true - } - ] - }, - "8": { - "RegionID": 8, - "RegionCode": "lhr", - "RegionName": "London", - "Latitude": 51.5072, - "Longitude": 0.1276, - "Nodes": [ - { - "Name": "8f", - "RegionID": 8, - "HostName": "derp8f.tailscale.com", - "IPv4": "176.58.88.183", - "IPv6": "2a00:dd80:3a::dfa", - "CanPort80": true - }, - { - "Name": "8g", - "RegionID": 8, - "HostName": "derp8g.tailscale.com", - "IPv4": "176.58.92.254", - "IPv6": "2a00:dd80:3a::ed", - "CanPort80": true - }, - { - "Name": "8e", - "RegionID": 8, - "HostName": "derp8e.tailscale.com", - "IPv4": "176.58.92.144", - "IPv6": "2a00:dd80:3a::b33", - "CanPort80": true - } - ] - }, - "9": { - "RegionID": 9, - "RegionCode": "dfw", - "RegionName": "Dallas", - "Latitude": 32.779167, - "Longitude": -96.808889, - "Nodes": [ - { - "Name": "9e", - "RegionID": 9, - "HostName": "derp9e.tailscale.com", - "IPv4": "192.73.248.83", - "IPv6": "2607:f740:100::359", - "CanPort80": true - }, - { - "Name": "9f", - "RegionID": 9, - "HostName": "derp9f.tailscale.com", - "IPv4": "209.177.156.197", - "IPv6": "2607:f740:100::cad", - "CanPort80": true - }, - { - "Name": "9d", - "RegionID": 9, - "HostName": "derp9d.tailscale.com", - "IPv4": "209.177.156.94", - "IPv6": "2607:f740:100::c05", - "CanPort80": true - } - ] - } - } - }, - "DisplayMessages": null, - "TKAEnabled": false, - "TKAHead": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", - "Domain": "kratail2tid@passkey", - "DomainAuditLogID": "", - "UserProfiles": { - "2230775583277936": { - "ID": 2230775583277936, - "LoginName": "exit-b.tail78f774.ts.net", - "DisplayName": "exit-b" - } - } + "PacketFilterRules": null } }, "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.124.195.93": { - "peer_name": "exit-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-node/tailscaled.sock whois --json 100.124.195.93", - "response": null - }, - "100.116.18.24": { - "peer_name": "exit-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-node/tailscaled.sock whois --json 100.116.18.24", - "response": null - }, - "100.107.162.14": { - "peer_name": "group-a-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-node/tailscaled.sock whois --json 100.107.162.14", - "response": null - }, - "100.77.135.18": { - "peer_name": "group-b-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-node/tailscaled.sock whois --json 100.77.135.18", - "response": null - }, - "100.105.127.107": { - "peer_name": "multi-exit-router", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-node/tailscaled.sock whois --json 100.105.127.107", - "response": null - }, - "100.109.43.124": { - "peer_name": "router-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-node/tailscaled.sock whois --json 100.109.43.124", - "response": null - }, - "100.65.172.123": { - "peer_name": "router-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-node/tailscaled.sock whois --json 100.65.172.123", - "response": null - }, - "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 - } - }, "netmap": { - "SelfNode": { - "ID": 4041918547170221, - "StableID": "ngCb76MbZY11CNTRL", - "Name": "exit-node.tail78f774.ts.net.", - "User": 4041918547170221, - "Key": "nodekey:90f4a7b9dc024f1ddec414a49de2aa7611a2dd86efc9d7bae30862ad7c954269", - "DiscoKey": "discokey:6f1a76215431d7100538970473d97b4fde0e0a19b91035d1cba40b59ad79b437", - "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:36712", "10.65.0.27:36712", "172.17.0.1:36712"], - "Hostinfo": { - "Hostname": "exit-node", - "RoutableIPs": ["0.0.0.0/0", "::/0"], - "RequestTags": ["tag:exit"], - "Services": [ - { "Proto": "peerapi4", "Port": 37000 }, - { "Proto": "peerapi6", "Port": 37000 }, - { "Proto": "peerapi-dns-proxy", "Port": 1 } - ] - }, - "Created": "2026-02-23T00:13:20.566112173Z", - "Tags": ["tag:exit"], - "MachineAuthorized": true, - "CapMap": { - "https://tailscale.com/cap/file-sharing": null, - "https://tailscale.com/cap/is-owner": null, - "https://tailscale.com/cap/ssh": null, - "https://tailscale.com/cap/tailnet-lock": null, - "probe-udp-lifetime": null, - "ssh-behavior-v1": null, - "ssh-env-vars": null, - "store-appc-routes": null, - "tailnet-display-name": ["kratail2tid@passkey"] - }, - "ComputedName": "exit-node", - "ComputedNameWithHost": "exit-node" - }, - "AllCaps": [ - "ssh-behavior-v1", - "https://tailscale.com/cap/ssh", - "store-appc-routes", - "tailnet-display-name", - "ssh-env-vars", - "https://tailscale.com/cap/tailnet-lock", - "https://tailscale.com/cap/file-sharing", - "https://tailscale.com/cap/is-owner", - "probe-udp-lifetime" - ], - "NodeKey": "nodekey:90f4a7b9dc024f1ddec414a49de2aa7611a2dd86efc9d7bae30862ad7c954269", - "MachineKey": "mkey:e3be47b2090e55400f3e64825cd3092841529cd7b5b775e9e4553f12308abc2a", "Peers": [], - "DNS": { - "Routes": { - "tail78f774.ts.net.": null, - "ts.net.": [{ "Addr": "199.247.155.53" }, { "Addr": "2620:111:8007::53" }] - }, - "Domains": ["tail78f774.ts.net"], - "Proxied": true, - "ExitNodeFilteredSet": [".ts.net", ".tailscale.net"] - }, - "PacketFilter": [], - "PacketFilterRules": null, - "SSHPolicy": { "rules": [] }, - "CollectServices": false, - "DERPMap": { - "Regions": { - "1": { - "RegionID": 1, - "RegionCode": "nyc", - "RegionName": "New York City", - "Latitude": 40.7128, - "Longitude": -74.006, - "Nodes": [ - { - "Name": "1h", - "RegionID": 1, - "HostName": "derp1h.tailscale.com", - "IPv4": "199.38.181.93", - "IPv6": "2607:f740:f::afd", - "CanPort80": true - }, - { - "Name": "1g", - "RegionID": 1, - "HostName": "derp1g.tailscale.com", - "IPv4": "209.177.145.120", - "IPv6": "2607:f740:f::3eb", - "CanPort80": true - }, - { - "Name": "1i", - "RegionID": 1, - "HostName": "derp1i.tailscale.com", - "IPv4": "199.38.181.103", - "IPv6": "2607:f740:f::e19", - "CanPort80": true - }, - { - "Name": "1f", - "RegionID": 1, - "HostName": "derp1f.tailscale.com", - "IPv4": "199.38.181.104", - "IPv6": "2607:f740:f::bc", - "CanPort80": true - } - ] - }, - "10": { - "RegionID": 10, - "RegionCode": "sea", - "RegionName": "Seattle", - "Latitude": 47.609722, - "Longitude": -122.333056, - "Nodes": [ - { - "Name": "10c", - "RegionID": 10, - "HostName": "derp10c.tailscale.com", - "IPv4": "192.73.240.121", - "IPv6": "2607:f740:14::40c", - "CanPort80": true - }, - { - "Name": "10d", - "RegionID": 10, - "HostName": "derp10d.tailscale.com", - "IPv4": "192.73.240.132", - "IPv6": "2607:f740:14::500", - "CanPort80": true - }, - { - "Name": "10b", - "RegionID": 10, - "HostName": "derp10b.tailscale.com", - "IPv4": "192.73.240.161", - "IPv6": "2607:f740:14::61c", - "CanPort80": true - } - ] - }, - "11": { - "RegionID": 11, - "RegionCode": "sao", - "RegionName": "São Paulo", - "Latitude": -23.55, - "Longitude": -46.633333, - "Nodes": [ - { - "Name": "11f", - "RegionID": 11, - "HostName": "derp11f.tailscale.com", - "IPv4": "172.237.61.197", - "IPv6": "2600:3c0d::2000:3bff:fe44:6166", - "CanPort80": true - }, - { - "Name": "11g", - "RegionID": 11, - "HostName": "derp11g.tailscale.com", - "IPv4": "172.237.61.190", - "IPv6": "2600:3c0d::2000:62ff:febe:2e67", - "CanPort80": true - }, - { - "Name": "11e", - "RegionID": 11, - "HostName": "derp11e.tailscale.com", - "IPv4": "172.237.61.194", - "IPv6": "2600:3c0d::2000:d2ff:fe43:1790", - "CanPort80": true - } - ] - }, - "12": { - "RegionID": 12, - "RegionCode": "ord", - "RegionName": "Chicago", - "Latitude": 41.881944, - "Longitude": -87.627778, - "Nodes": [ - { - "Name": "12e", - "RegionID": 12, - "HostName": "derp12e.tailscale.com", - "IPv4": "209.177.158.15", - "IPv6": "2607:f740:e::b17", - "CanPort80": true - }, - { - "Name": "12f", - "RegionID": 12, - "HostName": "derp12f.tailscale.com", - "IPv4": "199.38.182.118", - "IPv6": "2607:f740:e::4c8", - "CanPort80": true - }, - { - "Name": "12d", - "RegionID": 12, - "HostName": "derp12d.tailscale.com", - "IPv4": "209.177.158.246", - "IPv6": "2607:f740:e::811", - "CanPort80": true - } - ] - }, - "13": { - "RegionID": 13, - "RegionCode": "den", - "RegionName": "Denver", - "Latitude": 39.7392, - "Longitude": -104.9849, - "Nodes": [ - { - "Name": "13c", - "RegionID": 13, - "HostName": "derp13c.tailscale.com", - "IPv4": "192.73.242.28", - "IPv6": "2607:f740:16::5c", - "CanPort80": true - }, - { - "Name": "13d", - "RegionID": 13, - "HostName": "derp13d.tailscale.com", - "IPv4": "192.73.242.204", - "IPv6": "2607:f740:16::c23", - "CanPort80": true - }, - { - "Name": "13b", - "RegionID": 13, - "HostName": "derp13b.tailscale.com", - "IPv4": "192.73.242.187", - "IPv6": "2607:f740:16::640", - "CanPort80": true - } - ] - }, - "14": { - "RegionID": 14, - "RegionCode": "ams", - "RegionName": "Amsterdam", - "Latitude": 52.372778, - "Longitude": 4.893611, - "Nodes": [ - { - "Name": "14c", - "RegionID": 14, - "HostName": "derp14c.tailscale.com", - "IPv4": "176.58.93.147", - "IPv6": "2a00:dd80:3c::b09", - "CanPort80": true - }, - { - "Name": "14d", - "RegionID": 14, - "HostName": "derp14d.tailscale.com", - "IPv4": "176.58.93.154", - "IPv6": "2a00:dd80:3c::3d5", - "CanPort80": true - }, - { - "Name": "14b", - "RegionID": 14, - "HostName": "derp14b.tailscale.com", - "IPv4": "176.58.93.248", - "IPv6": "2a00:dd80:3c::807", - "CanPort80": true - } - ] - }, - "15": { - "RegionID": 15, - "RegionCode": "jnb", - "RegionName": "Johannesburg", - "Latitude": -26.204444, - "Longitude": 28.045556, - "Nodes": [ - { - "Name": "15c", - "RegionID": 15, - "HostName": "derp15c.tailscale.com", - "IPv4": "102.67.165.185", - "IPv6": "2c0f:edb0:0:10::b59", - "CanPort80": true - }, - { - "Name": "15d", - "RegionID": 15, - "HostName": "derp15d.tailscale.com", - "IPv4": "102.67.165.36", - "IPv6": "2c0f:edb0:0:10::599", - "CanPort80": true - }, - { - "Name": "15b", - "RegionID": 15, - "HostName": "derp15b.tailscale.com", - "IPv4": "102.67.165.90", - "IPv6": "2c0f:edb0:0:10::963", - "CanPort80": true - } - ] - }, - "16": { - "RegionID": 16, - "RegionCode": "mia", - "RegionName": "Miami", - "Latitude": 25.78, - "Longitude": -80.21, - "Nodes": [ - { - "Name": "16c", - "RegionID": 16, - "HostName": "derp16c.tailscale.com", - "IPv4": "192.73.243.229", - "IPv6": "2607:f740:17::4e4", - "CanPort80": true - }, - { - "Name": "16d", - "RegionID": 16, - "HostName": "derp16d.tailscale.com", - "IPv4": "192.73.243.141", - "IPv6": "2607:f740:17::475", - "CanPort80": true - }, - { - "Name": "16b", - "RegionID": 16, - "HostName": "derp16b.tailscale.com", - "IPv4": "192.73.243.135", - "IPv6": "2607:f740:17::476", - "CanPort80": true - } - ] - }, - "17": { - "RegionID": 17, - "RegionCode": "lax", - "RegionName": "Los Angeles", - "Latitude": 34.05, - "Longitude": -118.25, - "Nodes": [ - { - "Name": "17c", - "RegionID": 17, - "HostName": "derp17c.tailscale.com", - "IPv4": "208.111.40.12", - "IPv6": "2607:f740:c::10", - "CanPort80": true - }, - { - "Name": "17d", - "RegionID": 17, - "HostName": "derp17d.tailscale.com", - "IPv4": "208.111.40.216", - "IPv6": "2607:f740:c::e1b", - "CanPort80": true - }, - { - "Name": "17b", - "RegionID": 17, - "HostName": "derp17b.tailscale.com", - "IPv4": "192.73.244.245", - "IPv6": "2607:f740:c::646", - "CanPort80": true - } - ] - }, - "18": { - "RegionID": 18, - "RegionCode": "par", - "RegionName": "Paris", - "Latitude": 48.856667, - "Longitude": 2.352222, - "Nodes": [ - { - "Name": "18c", - "RegionID": 18, - "HostName": "derp18c.tailscale.com", - "IPv4": "176.58.90.207", - "IPv6": "2a00:dd80:3e::c19", - "CanPort80": true - }, - { - "Name": "18d", - "RegionID": 18, - "HostName": "derp18d.tailscale.com", - "IPv4": "176.58.90.104", - "IPv6": "2a00:dd80:3e::f2e", - "CanPort80": true - }, - { - "Name": "18b", - "RegionID": 18, - "HostName": "derp18b.tailscale.com", - "IPv4": "176.58.90.147", - "IPv6": "2a00:dd80:3e::363", - "CanPort80": true - } - ] - }, - "19": { - "RegionID": 19, - "RegionCode": "mad", - "RegionName": "Madrid", - "Latitude": 40.416944, - "Longitude": -3.703333, - "Nodes": [ - { - "Name": "19c", - "RegionID": 19, - "HostName": "derp19c.tailscale.com", - "IPv4": "45.159.97.61", - "IPv6": "2a00:dd80:14:10::20", - "CanPort80": true - }, - { - "Name": "19d", - "RegionID": 19, - "HostName": "derp19d.tailscale.com", - "IPv4": "45.159.97.233", - "IPv6": "2a00:dd80:14:10::34a", - "CanPort80": true - }, - { - "Name": "19b", - "RegionID": 19, - "HostName": "derp19b.tailscale.com", - "IPv4": "45.159.97.144", - "IPv6": "2a00:dd80:14:10::335", - "CanPort80": true - } - ] - }, - "2": { - "RegionID": 2, - "RegionCode": "sfo", - "RegionName": "San Francisco", - "Latitude": 37.7775, - "Longitude": -122.416389, - "Nodes": [ - { - "Name": "2e", - "RegionID": 2, - "HostName": "derp2e.tailscale.com", - "IPv4": "192.73.252.134", - "IPv6": "2607:f740:0:3f::44c", - "CanPort80": true - }, - { - "Name": "2f", - "RegionID": 2, - "HostName": "derp2f.tailscale.com", - "IPv4": "208.111.34.178", - "IPv6": "2607:f740:0:3f::f4", - "CanPort80": true - }, - { - "Name": "2d", - "RegionID": 2, - "HostName": "derp2d.tailscale.com", - "IPv4": "192.73.252.65", - "IPv6": "2607:f740:0:3f::287", - "CanPort80": true - } - ] - }, - "20": { - "RegionID": 20, - "RegionCode": "hkg", - "RegionName": "Hong Kong", - "Latitude": 22.3193, - "Longitude": 114.1694, - "Nodes": [ - { - "Name": "20c", - "RegionID": 20, - "HostName": "derp20c.tailscale.com", - "IPv4": "205.147.105.30", - "IPv6": "2403:2500:8000:1::5fb", - "CanPort80": true - }, - { - "Name": "20d", - "RegionID": 20, - "HostName": "derp20d.tailscale.com", - "IPv4": "205.147.105.78", - "IPv6": "2403:2500:8000:1::e9a", - "CanPort80": true - }, - { - "Name": "20b", - "RegionID": 20, - "HostName": "derp20b.tailscale.com", - "IPv4": "103.6.84.152", - "IPv6": "2403:2500:8000:1::ef6", - "CanPort80": true - } - ] - }, - "21": { - "RegionID": 21, - "RegionCode": "tor", - "RegionName": "Toronto", - "Latitude": 43.741667, - "Longitude": -79.373333, - "Nodes": [ - { - "Name": "21c", - "RegionID": 21, - "HostName": "derp21c.tailscale.com", - "IPv4": "162.248.221.215", - "IPv6": "2607:f740:50::f10", - "CanPort80": true - }, - { - "Name": "21d", - "RegionID": 21, - "HostName": "derp21d.tailscale.com", - "IPv4": "162.248.221.248", - "IPv6": "2607:f740:50::ca4", - "CanPort80": true - }, - { - "Name": "21b", - "RegionID": 21, - "HostName": "derp21b.tailscale.com", - "IPv4": "162.248.221.199", - "IPv6": "2607:f740:50::1d1", - "CanPort80": true - } - ] - }, - "22": { - "RegionID": 22, - "RegionCode": "waw", - "RegionName": "Warsaw", - "Latitude": 52.23, - "Longitude": 21.011111, - "Nodes": [ - { - "Name": "22c", - "RegionID": 22, - "HostName": "derp22c.tailscale.com", - "IPv4": "45.159.98.253", - "IPv6": "2a00:dd80:40:100::3f", - "CanPort80": true - }, - { - "Name": "22d", - "RegionID": 22, - "HostName": "derp22d.tailscale.com", - "IPv4": "45.159.98.145", - "IPv6": "2a00:dd80:40:100::211", - "CanPort80": true - }, - { - "Name": "22b", - "RegionID": 22, - "HostName": "derp22b.tailscale.com", - "IPv4": "45.159.98.196", - "IPv6": "2a00:dd80:40:100::316", - "CanPort80": true - } - ] - }, - "23": { - "RegionID": 23, - "RegionCode": "dbi", - "RegionName": "Dubai", - "Latitude": 25.263056, - "Longitude": 55.297222, - "Nodes": [ - { - "Name": "23c", - "RegionID": 23, - "HostName": "derp23c.tailscale.com", - "IPv4": "185.34.3.207", - "IPv6": "2a00:dd80:3f:100::a50", - "CanPort80": true - }, - { - "Name": "23d", - "RegionID": 23, - "HostName": "derp23d.tailscale.com", - "IPv4": "185.34.3.75", - "IPv6": "2a00:dd80:3f:100::97e", - "CanPort80": true - }, - { - "Name": "23b", - "RegionID": 23, - "HostName": "derp23b.tailscale.com", - "IPv4": "185.34.3.232", - "IPv6": "2a00:dd80:3f:100::76f", - "CanPort80": true - } - ] - }, - "24": { - "RegionID": 24, - "RegionCode": "hnl", - "RegionName": "Honolulu", - "Latitude": 21.306944, - "Longitude": -157.858333, - "Nodes": [ - { - "Name": "24c", - "RegionID": 24, - "HostName": "derp24c.tailscale.com", - "IPv4": "208.83.233.233", - "IPv6": "2001:19f0:c000:c591:5400:04ff:fe26:2c5f", - "CanPort80": true - }, - { - "Name": "24d", - "RegionID": 24, - "HostName": "derp24d.tailscale.com", - "IPv4": "208.72.155.133", - "IPv6": "2001:19f0:c000:c564:5400:04ff:fe26:2ba8", - "CanPort80": true - }, - { - "Name": "24b", - "RegionID": 24, - "HostName": "derp24b.tailscale.com", - "IPv4": "208.83.234.151", - "IPv6": "2001:19f0:c000:c586:5400:04ff:fe26:2ba6", - "CanPort80": true - } - ] - }, - "25": { - "RegionID": 25, - "RegionCode": "nai", - "RegionName": "Nairobi", - "Latitude": -1.286389, - "Longitude": 36.817222, - "Nodes": [ - { - "Name": "25c", - "RegionID": 25, - "HostName": "derp25c.tailscale.com", - "IPv4": "102.67.167.37", - "IPv6": "2c0f:edb0:2000:1::2c7", - "CanPort80": true - }, - { - "Name": "25d", - "RegionID": 25, - "HostName": "derp25d.tailscale.com", - "IPv4": "102.67.167.188", - "IPv6": "2c0f:edb0:2000:1::188", - "CanPort80": true - }, - { - "Name": "25b", - "RegionID": 25, - "HostName": "derp25b.tailscale.com", - "IPv4": "102.67.167.245", - "IPv6": "2c0f:edb0:2000:1::2e9", - "CanPort80": true - } - ] - }, - "26": { - "RegionID": 26, - "RegionCode": "nue", - "RegionName": "Nuremberg", - "Latitude": 49.453889, - "Longitude": 11.0775, - "Nodes": [ - { - "Name": "26c", - "RegionID": 26, - "HostName": "derp26c.tailscale.com", - "IPv4": "49.12.193.137", - "IPv6": "2a01:4f8:1c1c:5c70::1", - "CanPort80": true - }, - { - "Name": "26d", - "RegionID": 26, - "HostName": "derp26d.tailscale.com", - "IPv4": "49.13.204.141", - "IPv6": "2a01:4f8:1c0c:7d06::1", - "CanPort80": true - }, - { - "Name": "26b", - "RegionID": 26, - "HostName": "derp26b.tailscale.com", - "IPv4": "167.235.72.200", - "IPv6": "2a01:4f8:1c1c:47b6::1", - "CanPort80": true - } - ] - }, - "27": { - "RegionID": 27, - "RegionCode": "iad", - "RegionName": "Ashburn", - "Latitude": 39.03, - "Longitude": -77.471111, - "Nodes": [ - { - "Name": "27d", - "RegionID": 27, - "HostName": "derp27d.tailscale.com", - "IPv4": "178.156.152.106", - "IPv6": "2a01:4ff:f0:3c8e::1", - "CanPort80": true - }, - { - "Name": "27c", - "RegionID": 27, - "HostName": "derp27c.tailscale.com", - "IPv4": "178.156.152.91", - "IPv6": "2a01:4ff:f0:3913::1", - "CanPort80": true - }, - { - "Name": "27e", - "RegionID": 27, - "HostName": "derp27e.tailscale.com", - "IPv4": "178.156.134.232", - "IPv6": "2a01:4ff:f0:28d4::1", - "CanPort80": true - }, - { - "Name": "27b", - "RegionID": 27, - "HostName": "derp27b.tailscale.com", - "IPv4": "5.161.218.233", - "IPv6": "2a01:4ff:f0:3db9::1", - "CanPort80": true - } - ] - }, - "28": { - "RegionID": 28, - "RegionCode": "hel", - "RegionName": "Helsinki", - "Latitude": 60.170833, - "Longitude": 24.9375, - "Nodes": [ - { - "Name": "28c", - "RegionID": 28, - "HostName": "derp28c.tailscale.com", - "IPv4": "95.217.2.165", - "IPv6": "2a01:4f9:c012:cd74::1", - "CanPort80": true - }, - { - "Name": "28d", - "RegionID": 28, - "HostName": "derp28d.tailscale.com", - "IPv4": "157.180.28.32", - "IPv6": "2a01:4f9:c012:2e5b::1", - "CanPort80": true - }, - { - "Name": "28b", - "RegionID": 28, - "HostName": "derp28b.tailscale.com", - "IPv4": "65.109.143.62", - "IPv6": "2a01:4f9:c012:d55c::1", - "CanPort80": true - } - ] - }, - "3": { - "RegionID": 3, - "RegionCode": "sin", - "RegionName": "Singapore", - "Latitude": 1.3521, - "Longitude": 103.8198, - "Nodes": [ - { - "Name": "3g", - "RegionID": 3, - "HostName": "derp3g.tailscale.com", - "IPv4": "172.237.72.79", - "IPv6": "2600:3c15::2000:adff:fe08:6fab", - "CanPort80": true - }, - { - "Name": "3f", - "RegionID": 3, - "HostName": "derp3f.tailscale.com", - "IPv4": "172.237.72.8", - "IPv6": "2600:3c15::2000:53ff:fe48:a668", - "CanPort80": true - }, - { - "Name": "3h", - "RegionID": 3, - "HostName": "derp3h.tailscale.com", - "IPv4": "172.237.66.30", - "IPv6": "2600:3c15::2000:3dff:fe44:50aa", - "CanPort80": true - }, - { - "Name": "3e", - "RegionID": 3, - "HostName": "derp3e.tailscale.com", - "IPv4": "172.237.72.43", - "IPv6": "2600:3c15::2000:6cff:fee4:d799", - "CanPort80": true - } - ] - }, - "4": { - "RegionID": 4, - "RegionCode": "fra", - "RegionName": "Frankfurt", - "Latitude": 50.1109, - "Longitude": 8.6821, - "Nodes": [ - { - "Name": "4h", - "RegionID": 4, - "HostName": "derp4h.tailscale.com", - "IPv4": "185.40.234.77", - "IPv6": "2a00:dd80:20::bcf", - "CanPort80": true - }, - { - "Name": "4g", - "RegionID": 4, - "HostName": "derp4g.tailscale.com", - "IPv4": "185.40.234.113", - "IPv6": "2a00:dd80:20::8f", - "CanPort80": true - }, - { - "Name": "4i", - "RegionID": 4, - "HostName": "derp4i.tailscale.com", - "IPv4": "185.40.234.53", - "IPv6": "2a00:dd80:20::8a6", - "CanPort80": true - }, - { - "Name": "4f", - "RegionID": 4, - "HostName": "derp4f.tailscale.com", - "IPv4": "185.40.234.219", - "IPv6": "2a00:dd80:20::a25", - "CanPort80": true - } - ] - }, - "5": { - "RegionID": 5, - "RegionCode": "syd", - "RegionName": "Sydney", - "Latitude": -33.867778, - "Longitude": 151.21, - "Nodes": [ - { - "Name": "5f", - "RegionID": 5, - "HostName": "derp5f.tailscale.com", - "IPv4": "172.105.166.103", - "IPv6": "2400:8907::2000:ccff:fe1f:80da", - "CanPort80": true - }, - { - "Name": "5g", - "RegionID": 5, - "HostName": "derp5g.tailscale.com", - "IPv4": "172.105.169.57", - "IPv6": "2400:8907::2000:2fff:fea7:57f4", - "CanPort80": true - }, - { - "Name": "5e", - "RegionID": 5, - "HostName": "derp5e.tailscale.com", - "IPv4": "172.105.179.230", - "IPv6": "2400:8907::2000:ceff:fe8d:4f4e", - "CanPort80": true - } - ] - }, - "6": { - "RegionID": 6, - "RegionCode": "blr", - "RegionName": "Bengaluru", - "Latitude": 12.9716, - "Longitude": 77.5946, - "Nodes": [ - { - "Name": "6a", - "RegionID": 6, - "HostName": "derp6.tailscale.com", - "IPv4": "68.183.90.120", - "IPv6": "2400:6180:100:d0::982:d001", - "CanPort80": true - } - ] - }, - "7": { - "RegionID": 7, - "RegionCode": "tok", - "RegionName": "Tokyo", - "Latitude": 35.6764, - "Longitude": 139.65, - "Nodes": [ - { - "Name": "7g", - "RegionID": 7, - "HostName": "derp7g.tailscale.com", - "IPv4": "172.238.6.179", - "IPv6": "2600:3c18::2000:3fff:fe80:3ebd", - "CanPort80": true - }, - { - "Name": "7f", - "RegionID": 7, - "HostName": "derp7f.tailscale.com", - "IPv4": "172.238.6.34", - "IPv6": "2600:3c18::2000:acff:fe8e:3ed5", - "CanPort80": true - }, - { - "Name": "7h", - "RegionID": 7, - "HostName": "derp7h.tailscale.com", - "IPv4": "172.237.28.183", - "IPv6": "2600:3c18::2000:b1ff:fea9:4560", - "CanPort80": true - }, - { - "Name": "7e", - "RegionID": 7, - "HostName": "derp7e.tailscale.com", - "IPv4": "172.238.6.180", - "IPv6": "2600:3c18::2000:60ff:fe0f:6e83", - "STUNOnly": true, - "CanPort80": true - } - ] - }, - "8": { - "RegionID": 8, - "RegionCode": "lhr", - "RegionName": "London", - "Latitude": 51.5072, - "Longitude": 0.1276, - "Nodes": [ - { - "Name": "8f", - "RegionID": 8, - "HostName": "derp8f.tailscale.com", - "IPv4": "176.58.88.183", - "IPv6": "2a00:dd80:3a::dfa", - "CanPort80": true - }, - { - "Name": "8g", - "RegionID": 8, - "HostName": "derp8g.tailscale.com", - "IPv4": "176.58.92.254", - "IPv6": "2a00:dd80:3a::ed", - "CanPort80": true - }, - { - "Name": "8e", - "RegionID": 8, - "HostName": "derp8e.tailscale.com", - "IPv4": "176.58.92.144", - "IPv6": "2a00:dd80:3a::b33", - "CanPort80": true - } - ] - }, - "9": { - "RegionID": 9, - "RegionCode": "dfw", - "RegionName": "Dallas", - "Latitude": 32.779167, - "Longitude": -96.808889, - "Nodes": [ - { - "Name": "9e", - "RegionID": 9, - "HostName": "derp9e.tailscale.com", - "IPv4": "192.73.248.83", - "IPv6": "2607:f740:100::359", - "CanPort80": true - }, - { - "Name": "9f", - "RegionID": 9, - "HostName": "derp9f.tailscale.com", - "IPv4": "209.177.156.197", - "IPv6": "2607:f740:100::cad", - "CanPort80": true - }, - { - "Name": "9d", - "RegionID": 9, - "HostName": "derp9d.tailscale.com", - "IPv4": "209.177.156.94", - "IPv6": "2607:f740:100::c05", - "CanPort80": true - } - ] - } - } - }, - "DisplayMessages": null, - "TKAEnabled": false, - "TKAHead": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", - "Domain": "kratail2tid@passkey", - "DomainAuditLogID": "", - "UserProfiles": { - "4041918547170221": { - "ID": 4041918547170221, - "LoginName": "exit-node.tail78f774.ts.net", - "DisplayName": "exit-node" - } - } + "PacketFilterRules": null } }, "group-a-client": { - "commands": { - "packet_filter_rules": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/group-a-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/group-a-client/tailscaled.sock debug localapi POST debug-packet-filter-matches" - }, "packet_filter_rules": null, - "packet_filter_matches": [], - "whois": { - "100.124.195.93": { - "peer_name": "exit-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/group-a-client/tailscaled.sock whois --json 100.124.195.93", - "response": null - }, - "100.116.18.24": { - "peer_name": "exit-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/group-a-client/tailscaled.sock whois --json 100.116.18.24", - "response": null - }, - "100.85.66.106": { - "peer_name": "exit-node", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/group-a-client/tailscaled.sock whois --json 100.85.66.106", - "response": null - }, - "100.77.135.18": { - "peer_name": "group-b-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/group-a-client/tailscaled.sock whois --json 100.77.135.18", - "response": null - }, - "100.105.127.107": { - "peer_name": "multi-exit-router", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/group-a-client/tailscaled.sock whois --json 100.105.127.107", - "response": null - }, - "100.109.43.124": { - "peer_name": "router-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/group-a-client/tailscaled.sock whois --json 100.109.43.124", - "response": { - "Node": { - "ID": 50590507314324, - "StableID": "n3kktkvuP111CNTRL", - "Name": "router-a.tail78f774.ts.net.", - "User": 1260082990019555, - "Key": "nodekey:b4566fef38b3b2b15684fc8890f5fbaea4525b467825f57a02801969a5ed2b7b", - "DiscoKey": "discokey:368ba711a8394633b4626eb7cd8e6a2df90d8e554505dc032ea9658ceee0f731", - "Addresses": ["100.109.43.124/32", "fd7a:115c:a1e0::a537:2b7c/128"], - "AllowedIPs": ["100.109.43.124/32", "fd7a:115c:a1e0::a537:2b7c/128", "10.44.0.0/16"], - "Endpoints": ["77.164.248.136:34130", "10.65.0.27:34130", "172.17.0.1:34130"], - "HomeDERP": 14, - "Hostinfo": { - "OS": "linux", - "Hostname": "router-a", - "Services": [ - { "Proto": "peerapi4", "Port": 49439 }, - { "Proto": "peerapi6", "Port": 49439 } - ] - }, - "Created": "2026-03-28T10:38:11.734910312Z", - "Cap": 131, - "Tags": ["tag:router-a"], - "PrimaryRoutes": ["10.44.0.0/16"], - "Online": true, - "ComputedName": "router-a", - "ComputedNameWithHost": "router-a" - }, - "UserProfile": { "ID": 1260082990019555, "LoginName": "tagged-devices", "DisplayName": "Tagged Devices" }, - "CapMap": null - } - }, - "100.65.172.123": { - "peer_name": "router-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/group-a-client/tailscaled.sock whois --json 100.65.172.123", - "response": null - }, - "100.92.142.61": { - "peer_name": "subnet-router", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/group-a-client/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/group-a-client/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/group-a-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/group-a-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/group-a-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/group-a-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/group-a-client/tailscaled.sock whois --json 100.90.199.68", - "response": null - } - }, "netmap": { - "SelfNode": { - "ID": 6999435610919250, - "StableID": "nyckVfJ4fw11CNTRL", - "Name": "group-a-client.tail78f774.ts.net.", - "User": 6999435610919250, - "Key": "nodekey:802726716bd4942fceb5e444218c930040fadb082698b57ea3eb59a6a26ba20d", - "DiscoKey": "discokey:bc93c2d3b81606e44eb1c96d721e7cd73c9497aa7d3efbe2f5e0d1e2e95b190f", - "Addresses": ["100.107.162.14/32", "fd7a:115c:a1e0::a237:a20e/128"], - "AllowedIPs": ["100.107.162.14/32", "fd7a:115c:a1e0::a237:a20e/128"], - "Endpoints": ["77.164.248.136:51980", "10.65.0.27:51980", "172.17.0.1:51980"], - "Hostinfo": { - "Hostname": "group-a-client", - "RequestTags": ["tag:group-a"], - "Services": [ - { "Proto": "peerapi4", "Port": 36543 }, - { "Proto": "peerapi6", "Port": 36543 }, - { "Proto": "peerapi-dns-proxy", "Port": 1 } - ] - }, - "Created": "2026-03-28T10:38:04.339428828Z", - "Tags": ["tag:group-a"], - "MachineAuthorized": true, - "CapMap": { - "https://tailscale.com/cap/file-sharing": null, - "https://tailscale.com/cap/is-owner": null, - "https://tailscale.com/cap/ssh": null, - "https://tailscale.com/cap/tailnet-lock": null, - "probe-udp-lifetime": null, - "ssh-behavior-v1": null, - "ssh-env-vars": null, - "store-appc-routes": null, - "tailnet-display-name": ["kratail2tid@passkey"] - }, - "ComputedName": "group-a-client", - "ComputedNameWithHost": "group-a-client" - }, - "AllCaps": [ - "ssh-env-vars", - "https://tailscale.com/cap/is-owner", - "tailnet-display-name", - "https://tailscale.com/cap/tailnet-lock", - "https://tailscale.com/cap/file-sharing", - "probe-udp-lifetime", - "store-appc-routes", - "https://tailscale.com/cap/ssh", - "ssh-behavior-v1" - ], - "NodeKey": "nodekey:802726716bd4942fceb5e444218c930040fadb082698b57ea3eb59a6a26ba20d", - "MachineKey": "mkey:fd2d0c2953440569b6c045d6bb1826bf138bf65b4ed4433532e4d91e09fd6b6b", "Peers": [ { - "ID": 50590507314324, - "StableID": "n3kktkvuP111CNTRL", "Name": "router-a.tail78f774.ts.net.", - "User": 1260082990019555, - "Key": "nodekey:b4566fef38b3b2b15684fc8890f5fbaea4525b467825f57a02801969a5ed2b7b", - "DiscoKey": "discokey:368ba711a8394633b4626eb7cd8e6a2df90d8e554505dc032ea9658ceee0f731", - "Addresses": ["100.109.43.124/32", "fd7a:115c:a1e0::a537:2b7c/128"], - "AllowedIPs": ["100.109.43.124/32", "fd7a:115c:a1e0::a537:2b7c/128", "10.44.0.0/16"], - "Endpoints": ["77.164.248.136:34130", "10.65.0.27:34130", "172.17.0.1:34130"], - "HomeDERP": 14, - "Hostinfo": { - "OS": "linux", - "Hostname": "router-a", - "Services": [ - { "Proto": "peerapi4", "Port": 49439 }, - { "Proto": "peerapi6", "Port": 49439 } - ] - }, - "Created": "2026-03-28T10:38:11.734910312Z", - "Cap": 131, - "Tags": ["tag:router-a"], - "PrimaryRoutes": ["10.44.0.0/16"], - "Online": true, - "ComputedName": "router-a", - "ComputedNameWithHost": "router-a" + "AllowedIPs": [ + "100.109.43.124/32", + "fd7a:115c:a1e0::a537:2b7c/128", + "10.44.0.0/16" + ], + "PrimaryRoutes": [ + "10.44.0.0/16" + ] } ], - "DNS": { - "Routes": { - "tail78f774.ts.net.": null, - "ts.net.": [{ "Addr": "199.247.155.53" }, { "Addr": "2620:111:8007::53" }] - }, - "Domains": ["tail78f774.ts.net"], - "Proxied": true, - "ExitNodeFilteredSet": [".ts.net", ".tailscale.net"] - }, - "PacketFilter": [], - "PacketFilterRules": null, - "SSHPolicy": { "rules": [] }, - "CollectServices": false, - "DERPMap": { - "Regions": { - "1": { - "RegionID": 1, - "RegionCode": "nyc", - "RegionName": "New York City", - "Latitude": 40.7128, - "Longitude": -74.006, - "Nodes": [ - { - "Name": "1h", - "RegionID": 1, - "HostName": "derp1h.tailscale.com", - "IPv4": "199.38.181.93", - "IPv6": "2607:f740:f::afd", - "CanPort80": true - }, - { - "Name": "1g", - "RegionID": 1, - "HostName": "derp1g.tailscale.com", - "IPv4": "209.177.145.120", - "IPv6": "2607:f740:f::3eb", - "CanPort80": true - }, - { - "Name": "1i", - "RegionID": 1, - "HostName": "derp1i.tailscale.com", - "IPv4": "199.38.181.103", - "IPv6": "2607:f740:f::e19", - "CanPort80": true - }, - { - "Name": "1f", - "RegionID": 1, - "HostName": "derp1f.tailscale.com", - "IPv4": "199.38.181.104", - "IPv6": "2607:f740:f::bc", - "CanPort80": true - } - ] - }, - "10": { - "RegionID": 10, - "RegionCode": "sea", - "RegionName": "Seattle", - "Latitude": 47.609722, - "Longitude": -122.333056, - "Nodes": [ - { - "Name": "10c", - "RegionID": 10, - "HostName": "derp10c.tailscale.com", - "IPv4": "192.73.240.121", - "IPv6": "2607:f740:14::40c", - "CanPort80": true - }, - { - "Name": "10d", - "RegionID": 10, - "HostName": "derp10d.tailscale.com", - "IPv4": "192.73.240.132", - "IPv6": "2607:f740:14::500", - "CanPort80": true - }, - { - "Name": "10b", - "RegionID": 10, - "HostName": "derp10b.tailscale.com", - "IPv4": "192.73.240.161", - "IPv6": "2607:f740:14::61c", - "CanPort80": true - } - ] - }, - "11": { - "RegionID": 11, - "RegionCode": "sao", - "RegionName": "São Paulo", - "Latitude": -23.55, - "Longitude": -46.633333, - "Nodes": [ - { - "Name": "11f", - "RegionID": 11, - "HostName": "derp11f.tailscale.com", - "IPv4": "172.237.61.197", - "IPv6": "2600:3c0d::2000:3bff:fe44:6166", - "CanPort80": true - }, - { - "Name": "11g", - "RegionID": 11, - "HostName": "derp11g.tailscale.com", - "IPv4": "172.237.61.190", - "IPv6": "2600:3c0d::2000:62ff:febe:2e67", - "CanPort80": true - }, - { - "Name": "11e", - "RegionID": 11, - "HostName": "derp11e.tailscale.com", - "IPv4": "172.237.61.194", - "IPv6": "2600:3c0d::2000:d2ff:fe43:1790", - "CanPort80": true - } - ] - }, - "12": { - "RegionID": 12, - "RegionCode": "ord", - "RegionName": "Chicago", - "Latitude": 41.881944, - "Longitude": -87.627778, - "Nodes": [ - { - "Name": "12e", - "RegionID": 12, - "HostName": "derp12e.tailscale.com", - "IPv4": "209.177.158.15", - "IPv6": "2607:f740:e::b17", - "CanPort80": true - }, - { - "Name": "12f", - "RegionID": 12, - "HostName": "derp12f.tailscale.com", - "IPv4": "199.38.182.118", - "IPv6": "2607:f740:e::4c8", - "CanPort80": true - }, - { - "Name": "12d", - "RegionID": 12, - "HostName": "derp12d.tailscale.com", - "IPv4": "209.177.158.246", - "IPv6": "2607:f740:e::811", - "CanPort80": true - } - ] - }, - "13": { - "RegionID": 13, - "RegionCode": "den", - "RegionName": "Denver", - "Latitude": 39.7392, - "Longitude": -104.9849, - "Nodes": [ - { - "Name": "13c", - "RegionID": 13, - "HostName": "derp13c.tailscale.com", - "IPv4": "192.73.242.28", - "IPv6": "2607:f740:16::5c", - "CanPort80": true - }, - { - "Name": "13d", - "RegionID": 13, - "HostName": "derp13d.tailscale.com", - "IPv4": "192.73.242.204", - "IPv6": "2607:f740:16::c23", - "CanPort80": true - }, - { - "Name": "13b", - "RegionID": 13, - "HostName": "derp13b.tailscale.com", - "IPv4": "192.73.242.187", - "IPv6": "2607:f740:16::640", - "CanPort80": true - } - ] - }, - "14": { - "RegionID": 14, - "RegionCode": "ams", - "RegionName": "Amsterdam", - "Latitude": 52.372778, - "Longitude": 4.893611, - "Nodes": [ - { - "Name": "14c", - "RegionID": 14, - "HostName": "derp14c.tailscale.com", - "IPv4": "176.58.93.147", - "IPv6": "2a00:dd80:3c::b09", - "CanPort80": true - }, - { - "Name": "14d", - "RegionID": 14, - "HostName": "derp14d.tailscale.com", - "IPv4": "176.58.93.154", - "IPv6": "2a00:dd80:3c::3d5", - "CanPort80": true - }, - { - "Name": "14b", - "RegionID": 14, - "HostName": "derp14b.tailscale.com", - "IPv4": "176.58.93.248", - "IPv6": "2a00:dd80:3c::807", - "CanPort80": true - } - ] - }, - "15": { - "RegionID": 15, - "RegionCode": "jnb", - "RegionName": "Johannesburg", - "Latitude": -26.204444, - "Longitude": 28.045556, - "Nodes": [ - { - "Name": "15c", - "RegionID": 15, - "HostName": "derp15c.tailscale.com", - "IPv4": "102.67.165.185", - "IPv6": "2c0f:edb0:0:10::b59", - "CanPort80": true - }, - { - "Name": "15d", - "RegionID": 15, - "HostName": "derp15d.tailscale.com", - "IPv4": "102.67.165.36", - "IPv6": "2c0f:edb0:0:10::599", - "CanPort80": true - }, - { - "Name": "15b", - "RegionID": 15, - "HostName": "derp15b.tailscale.com", - "IPv4": "102.67.165.90", - "IPv6": "2c0f:edb0:0:10::963", - "CanPort80": true - } - ] - }, - "16": { - "RegionID": 16, - "RegionCode": "mia", - "RegionName": "Miami", - "Latitude": 25.78, - "Longitude": -80.21, - "Nodes": [ - { - "Name": "16c", - "RegionID": 16, - "HostName": "derp16c.tailscale.com", - "IPv4": "192.73.243.229", - "IPv6": "2607:f740:17::4e4", - "CanPort80": true - }, - { - "Name": "16d", - "RegionID": 16, - "HostName": "derp16d.tailscale.com", - "IPv4": "192.73.243.141", - "IPv6": "2607:f740:17::475", - "CanPort80": true - }, - { - "Name": "16b", - "RegionID": 16, - "HostName": "derp16b.tailscale.com", - "IPv4": "192.73.243.135", - "IPv6": "2607:f740:17::476", - "CanPort80": true - } - ] - }, - "17": { - "RegionID": 17, - "RegionCode": "lax", - "RegionName": "Los Angeles", - "Latitude": 34.05, - "Longitude": -118.25, - "Nodes": [ - { - "Name": "17c", - "RegionID": 17, - "HostName": "derp17c.tailscale.com", - "IPv4": "208.111.40.12", - "IPv6": "2607:f740:c::10", - "CanPort80": true - }, - { - "Name": "17d", - "RegionID": 17, - "HostName": "derp17d.tailscale.com", - "IPv4": "208.111.40.216", - "IPv6": "2607:f740:c::e1b", - "CanPort80": true - }, - { - "Name": "17b", - "RegionID": 17, - "HostName": "derp17b.tailscale.com", - "IPv4": "192.73.244.245", - "IPv6": "2607:f740:c::646", - "CanPort80": true - } - ] - }, - "18": { - "RegionID": 18, - "RegionCode": "par", - "RegionName": "Paris", - "Latitude": 48.856667, - "Longitude": 2.352222, - "Nodes": [ - { - "Name": "18c", - "RegionID": 18, - "HostName": "derp18c.tailscale.com", - "IPv4": "176.58.90.207", - "IPv6": "2a00:dd80:3e::c19", - "CanPort80": true - }, - { - "Name": "18d", - "RegionID": 18, - "HostName": "derp18d.tailscale.com", - "IPv4": "176.58.90.104", - "IPv6": "2a00:dd80:3e::f2e", - "CanPort80": true - }, - { - "Name": "18b", - "RegionID": 18, - "HostName": "derp18b.tailscale.com", - "IPv4": "176.58.90.147", - "IPv6": "2a00:dd80:3e::363", - "CanPort80": true - } - ] - }, - "19": { - "RegionID": 19, - "RegionCode": "mad", - "RegionName": "Madrid", - "Latitude": 40.416944, - "Longitude": -3.703333, - "Nodes": [ - { - "Name": "19c", - "RegionID": 19, - "HostName": "derp19c.tailscale.com", - "IPv4": "45.159.97.61", - "IPv6": "2a00:dd80:14:10::20", - "CanPort80": true - }, - { - "Name": "19d", - "RegionID": 19, - "HostName": "derp19d.tailscale.com", - "IPv4": "45.159.97.233", - "IPv6": "2a00:dd80:14:10::34a", - "CanPort80": true - }, - { - "Name": "19b", - "RegionID": 19, - "HostName": "derp19b.tailscale.com", - "IPv4": "45.159.97.144", - "IPv6": "2a00:dd80:14:10::335", - "CanPort80": true - } - ] - }, - "2": { - "RegionID": 2, - "RegionCode": "sfo", - "RegionName": "San Francisco", - "Latitude": 37.7775, - "Longitude": -122.416389, - "Nodes": [ - { - "Name": "2e", - "RegionID": 2, - "HostName": "derp2e.tailscale.com", - "IPv4": "192.73.252.134", - "IPv6": "2607:f740:0:3f::44c", - "CanPort80": true - }, - { - "Name": "2f", - "RegionID": 2, - "HostName": "derp2f.tailscale.com", - "IPv4": "208.111.34.178", - "IPv6": "2607:f740:0:3f::f4", - "CanPort80": true - }, - { - "Name": "2d", - "RegionID": 2, - "HostName": "derp2d.tailscale.com", - "IPv4": "192.73.252.65", - "IPv6": "2607:f740:0:3f::287", - "CanPort80": true - } - ] - }, - "20": { - "RegionID": 20, - "RegionCode": "hkg", - "RegionName": "Hong Kong", - "Latitude": 22.3193, - "Longitude": 114.1694, - "Nodes": [ - { - "Name": "20c", - "RegionID": 20, - "HostName": "derp20c.tailscale.com", - "IPv4": "205.147.105.30", - "IPv6": "2403:2500:8000:1::5fb", - "CanPort80": true - }, - { - "Name": "20d", - "RegionID": 20, - "HostName": "derp20d.tailscale.com", - "IPv4": "205.147.105.78", - "IPv6": "2403:2500:8000:1::e9a", - "CanPort80": true - }, - { - "Name": "20b", - "RegionID": 20, - "HostName": "derp20b.tailscale.com", - "IPv4": "103.6.84.152", - "IPv6": "2403:2500:8000:1::ef6", - "CanPort80": true - } - ] - }, - "21": { - "RegionID": 21, - "RegionCode": "tor", - "RegionName": "Toronto", - "Latitude": 43.741667, - "Longitude": -79.373333, - "Nodes": [ - { - "Name": "21c", - "RegionID": 21, - "HostName": "derp21c.tailscale.com", - "IPv4": "162.248.221.215", - "IPv6": "2607:f740:50::f10", - "CanPort80": true - }, - { - "Name": "21d", - "RegionID": 21, - "HostName": "derp21d.tailscale.com", - "IPv4": "162.248.221.248", - "IPv6": "2607:f740:50::ca4", - "CanPort80": true - }, - { - "Name": "21b", - "RegionID": 21, - "HostName": "derp21b.tailscale.com", - "IPv4": "162.248.221.199", - "IPv6": "2607:f740:50::1d1", - "CanPort80": true - } - ] - }, - "22": { - "RegionID": 22, - "RegionCode": "waw", - "RegionName": "Warsaw", - "Latitude": 52.23, - "Longitude": 21.011111, - "Nodes": [ - { - "Name": "22c", - "RegionID": 22, - "HostName": "derp22c.tailscale.com", - "IPv4": "45.159.98.253", - "IPv6": "2a00:dd80:40:100::3f", - "CanPort80": true - }, - { - "Name": "22d", - "RegionID": 22, - "HostName": "derp22d.tailscale.com", - "IPv4": "45.159.98.145", - "IPv6": "2a00:dd80:40:100::211", - "CanPort80": true - }, - { - "Name": "22b", - "RegionID": 22, - "HostName": "derp22b.tailscale.com", - "IPv4": "45.159.98.196", - "IPv6": "2a00:dd80:40:100::316", - "CanPort80": true - } - ] - }, - "23": { - "RegionID": 23, - "RegionCode": "dbi", - "RegionName": "Dubai", - "Latitude": 25.263056, - "Longitude": 55.297222, - "Nodes": [ - { - "Name": "23c", - "RegionID": 23, - "HostName": "derp23c.tailscale.com", - "IPv4": "185.34.3.207", - "IPv6": "2a00:dd80:3f:100::a50", - "CanPort80": true - }, - { - "Name": "23d", - "RegionID": 23, - "HostName": "derp23d.tailscale.com", - "IPv4": "185.34.3.75", - "IPv6": "2a00:dd80:3f:100::97e", - "CanPort80": true - }, - { - "Name": "23b", - "RegionID": 23, - "HostName": "derp23b.tailscale.com", - "IPv4": "185.34.3.232", - "IPv6": "2a00:dd80:3f:100::76f", - "CanPort80": true - } - ] - }, - "24": { - "RegionID": 24, - "RegionCode": "hnl", - "RegionName": "Honolulu", - "Latitude": 21.306944, - "Longitude": -157.858333, - "Nodes": [ - { - "Name": "24c", - "RegionID": 24, - "HostName": "derp24c.tailscale.com", - "IPv4": "208.83.233.233", - "IPv6": "2001:19f0:c000:c591:5400:04ff:fe26:2c5f", - "CanPort80": true - }, - { - "Name": "24d", - "RegionID": 24, - "HostName": "derp24d.tailscale.com", - "IPv4": "208.72.155.133", - "IPv6": "2001:19f0:c000:c564:5400:04ff:fe26:2ba8", - "CanPort80": true - }, - { - "Name": "24b", - "RegionID": 24, - "HostName": "derp24b.tailscale.com", - "IPv4": "208.83.234.151", - "IPv6": "2001:19f0:c000:c586:5400:04ff:fe26:2ba6", - "CanPort80": true - } - ] - }, - "25": { - "RegionID": 25, - "RegionCode": "nai", - "RegionName": "Nairobi", - "Latitude": -1.286389, - "Longitude": 36.817222, - "Nodes": [ - { - "Name": "25c", - "RegionID": 25, - "HostName": "derp25c.tailscale.com", - "IPv4": "102.67.167.37", - "IPv6": "2c0f:edb0:2000:1::2c7", - "CanPort80": true - }, - { - "Name": "25d", - "RegionID": 25, - "HostName": "derp25d.tailscale.com", - "IPv4": "102.67.167.188", - "IPv6": "2c0f:edb0:2000:1::188", - "CanPort80": true - }, - { - "Name": "25b", - "RegionID": 25, - "HostName": "derp25b.tailscale.com", - "IPv4": "102.67.167.245", - "IPv6": "2c0f:edb0:2000:1::2e9", - "CanPort80": true - } - ] - }, - "26": { - "RegionID": 26, - "RegionCode": "nue", - "RegionName": "Nuremberg", - "Latitude": 49.453889, - "Longitude": 11.0775, - "Nodes": [ - { - "Name": "26c", - "RegionID": 26, - "HostName": "derp26c.tailscale.com", - "IPv4": "49.12.193.137", - "IPv6": "2a01:4f8:1c1c:5c70::1", - "CanPort80": true - }, - { - "Name": "26d", - "RegionID": 26, - "HostName": "derp26d.tailscale.com", - "IPv4": "49.13.204.141", - "IPv6": "2a01:4f8:1c0c:7d06::1", - "CanPort80": true - }, - { - "Name": "26b", - "RegionID": 26, - "HostName": "derp26b.tailscale.com", - "IPv4": "167.235.72.200", - "IPv6": "2a01:4f8:1c1c:47b6::1", - "CanPort80": true - } - ] - }, - "27": { - "RegionID": 27, - "RegionCode": "iad", - "RegionName": "Ashburn", - "Latitude": 39.03, - "Longitude": -77.471111, - "Nodes": [ - { - "Name": "27d", - "RegionID": 27, - "HostName": "derp27d.tailscale.com", - "IPv4": "178.156.152.106", - "IPv6": "2a01:4ff:f0:3c8e::1", - "CanPort80": true - }, - { - "Name": "27c", - "RegionID": 27, - "HostName": "derp27c.tailscale.com", - "IPv4": "178.156.152.91", - "IPv6": "2a01:4ff:f0:3913::1", - "CanPort80": true - }, - { - "Name": "27e", - "RegionID": 27, - "HostName": "derp27e.tailscale.com", - "IPv4": "178.156.134.232", - "IPv6": "2a01:4ff:f0:28d4::1", - "CanPort80": true - }, - { - "Name": "27b", - "RegionID": 27, - "HostName": "derp27b.tailscale.com", - "IPv4": "5.161.218.233", - "IPv6": "2a01:4ff:f0:3db9::1", - "CanPort80": true - } - ] - }, - "28": { - "RegionID": 28, - "RegionCode": "hel", - "RegionName": "Helsinki", - "Latitude": 60.170833, - "Longitude": 24.9375, - "Nodes": [ - { - "Name": "28c", - "RegionID": 28, - "HostName": "derp28c.tailscale.com", - "IPv4": "95.217.2.165", - "IPv6": "2a01:4f9:c012:cd74::1", - "CanPort80": true - }, - { - "Name": "28d", - "RegionID": 28, - "HostName": "derp28d.tailscale.com", - "IPv4": "157.180.28.32", - "IPv6": "2a01:4f9:c012:2e5b::1", - "CanPort80": true - }, - { - "Name": "28b", - "RegionID": 28, - "HostName": "derp28b.tailscale.com", - "IPv4": "65.109.143.62", - "IPv6": "2a01:4f9:c012:d55c::1", - "CanPort80": true - } - ] - }, - "3": { - "RegionID": 3, - "RegionCode": "sin", - "RegionName": "Singapore", - "Latitude": 1.3521, - "Longitude": 103.8198, - "Nodes": [ - { - "Name": "3g", - "RegionID": 3, - "HostName": "derp3g.tailscale.com", - "IPv4": "172.237.72.79", - "IPv6": "2600:3c15::2000:adff:fe08:6fab", - "CanPort80": true - }, - { - "Name": "3f", - "RegionID": 3, - "HostName": "derp3f.tailscale.com", - "IPv4": "172.237.72.8", - "IPv6": "2600:3c15::2000:53ff:fe48:a668", - "CanPort80": true - }, - { - "Name": "3h", - "RegionID": 3, - "HostName": "derp3h.tailscale.com", - "IPv4": "172.237.66.30", - "IPv6": "2600:3c15::2000:3dff:fe44:50aa", - "CanPort80": true - }, - { - "Name": "3e", - "RegionID": 3, - "HostName": "derp3e.tailscale.com", - "IPv4": "172.237.72.43", - "IPv6": "2600:3c15::2000:6cff:fee4:d799", - "CanPort80": true - } - ] - }, - "4": { - "RegionID": 4, - "RegionCode": "fra", - "RegionName": "Frankfurt", - "Latitude": 50.1109, - "Longitude": 8.6821, - "Nodes": [ - { - "Name": "4h", - "RegionID": 4, - "HostName": "derp4h.tailscale.com", - "IPv4": "185.40.234.77", - "IPv6": "2a00:dd80:20::bcf", - "CanPort80": true - }, - { - "Name": "4g", - "RegionID": 4, - "HostName": "derp4g.tailscale.com", - "IPv4": "185.40.234.113", - "IPv6": "2a00:dd80:20::8f", - "CanPort80": true - }, - { - "Name": "4i", - "RegionID": 4, - "HostName": "derp4i.tailscale.com", - "IPv4": "185.40.234.53", - "IPv6": "2a00:dd80:20::8a6", - "CanPort80": true - }, - { - "Name": "4f", - "RegionID": 4, - "HostName": "derp4f.tailscale.com", - "IPv4": "185.40.234.219", - "IPv6": "2a00:dd80:20::a25", - "CanPort80": true - } - ] - }, - "5": { - "RegionID": 5, - "RegionCode": "syd", - "RegionName": "Sydney", - "Latitude": -33.867778, - "Longitude": 151.21, - "Nodes": [ - { - "Name": "5f", - "RegionID": 5, - "HostName": "derp5f.tailscale.com", - "IPv4": "172.105.166.103", - "IPv6": "2400:8907::2000:ccff:fe1f:80da", - "CanPort80": true - }, - { - "Name": "5g", - "RegionID": 5, - "HostName": "derp5g.tailscale.com", - "IPv4": "172.105.169.57", - "IPv6": "2400:8907::2000:2fff:fea7:57f4", - "CanPort80": true - }, - { - "Name": "5e", - "RegionID": 5, - "HostName": "derp5e.tailscale.com", - "IPv4": "172.105.179.230", - "IPv6": "2400:8907::2000:ceff:fe8d:4f4e", - "CanPort80": true - } - ] - }, - "6": { - "RegionID": 6, - "RegionCode": "blr", - "RegionName": "Bengaluru", - "Latitude": 12.9716, - "Longitude": 77.5946, - "Nodes": [ - { - "Name": "6a", - "RegionID": 6, - "HostName": "derp6.tailscale.com", - "IPv4": "68.183.90.120", - "IPv6": "2400:6180:100:d0::982:d001", - "CanPort80": true - } - ] - }, - "7": { - "RegionID": 7, - "RegionCode": "tok", - "RegionName": "Tokyo", - "Latitude": 35.6764, - "Longitude": 139.65, - "Nodes": [ - { - "Name": "7g", - "RegionID": 7, - "HostName": "derp7g.tailscale.com", - "IPv4": "172.238.6.179", - "IPv6": "2600:3c18::2000:3fff:fe80:3ebd", - "CanPort80": true - }, - { - "Name": "7f", - "RegionID": 7, - "HostName": "derp7f.tailscale.com", - "IPv4": "172.238.6.34", - "IPv6": "2600:3c18::2000:acff:fe8e:3ed5", - "CanPort80": true - }, - { - "Name": "7h", - "RegionID": 7, - "HostName": "derp7h.tailscale.com", - "IPv4": "172.237.28.183", - "IPv6": "2600:3c18::2000:b1ff:fea9:4560", - "CanPort80": true - }, - { - "Name": "7e", - "RegionID": 7, - "HostName": "derp7e.tailscale.com", - "IPv4": "172.238.6.180", - "IPv6": "2600:3c18::2000:60ff:fe0f:6e83", - "STUNOnly": true, - "CanPort80": true - } - ] - }, - "8": { - "RegionID": 8, - "RegionCode": "lhr", - "RegionName": "London", - "Latitude": 51.5072, - "Longitude": 0.1276, - "Nodes": [ - { - "Name": "8f", - "RegionID": 8, - "HostName": "derp8f.tailscale.com", - "IPv4": "176.58.88.183", - "IPv6": "2a00:dd80:3a::dfa", - "CanPort80": true - }, - { - "Name": "8g", - "RegionID": 8, - "HostName": "derp8g.tailscale.com", - "IPv4": "176.58.92.254", - "IPv6": "2a00:dd80:3a::ed", - "CanPort80": true - }, - { - "Name": "8e", - "RegionID": 8, - "HostName": "derp8e.tailscale.com", - "IPv4": "176.58.92.144", - "IPv6": "2a00:dd80:3a::b33", - "CanPort80": true - } - ] - }, - "9": { - "RegionID": 9, - "RegionCode": "dfw", - "RegionName": "Dallas", - "Latitude": 32.779167, - "Longitude": -96.808889, - "Nodes": [ - { - "Name": "9e", - "RegionID": 9, - "HostName": "derp9e.tailscale.com", - "IPv4": "192.73.248.83", - "IPv6": "2607:f740:100::359", - "CanPort80": true - }, - { - "Name": "9f", - "RegionID": 9, - "HostName": "derp9f.tailscale.com", - "IPv4": "209.177.156.197", - "IPv6": "2607:f740:100::cad", - "CanPort80": true - }, - { - "Name": "9d", - "RegionID": 9, - "HostName": "derp9d.tailscale.com", - "IPv4": "209.177.156.94", - "IPv6": "2607:f740:100::c05", - "CanPort80": true - } - ] - } - } - }, - "DisplayMessages": null, - "TKAEnabled": false, - "TKAHead": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", - "Domain": "kratail2tid@passkey", - "DomainAuditLogID": "", - "UserProfiles": { - "1260082990019555": { - "ID": 1260082990019555, - "LoginName": "tagged-devices", - "DisplayName": "Tagged Devices" - }, - "6999435610919250": { - "ID": 6999435610919250, - "LoginName": "group-a-client.tail78f774.ts.net", - "DisplayName": "group-a-client" - } - } + "PacketFilterRules": null } }, "group-b-client": { - "commands": { - "packet_filter_rules": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/group-b-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/group-b-client/tailscaled.sock debug localapi POST debug-packet-filter-matches" - }, "packet_filter_rules": null, - "packet_filter_matches": [], - "whois": { - "100.124.195.93": { - "peer_name": "exit-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/group-b-client/tailscaled.sock whois --json 100.124.195.93", - "response": null - }, - "100.116.18.24": { - "peer_name": "exit-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/group-b-client/tailscaled.sock whois --json 100.116.18.24", - "response": null - }, - "100.85.66.106": { - "peer_name": "exit-node", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/group-b-client/tailscaled.sock whois --json 100.85.66.106", - "response": null - }, - "100.107.162.14": { - "peer_name": "group-a-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/group-b-client/tailscaled.sock whois --json 100.107.162.14", - "response": null - }, - "100.105.127.107": { - "peer_name": "multi-exit-router", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/group-b-client/tailscaled.sock whois --json 100.105.127.107", - "response": null - }, - "100.109.43.124": { - "peer_name": "router-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/group-b-client/tailscaled.sock whois --json 100.109.43.124", - "response": null - }, - "100.65.172.123": { - "peer_name": "router-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/group-b-client/tailscaled.sock whois --json 100.65.172.123", - "response": { - "Node": { - "ID": 1399889648409786, - "StableID": "nPHvXBj1wB11CNTRL", - "Name": "router-b.tail78f774.ts.net.", - "User": 1260082990019555, - "Key": "nodekey:4e6d3473c516cea37bcefdf4368932c623fd91c24aee1aacc27ca8165a41ac7a", - "DiscoKey": "discokey:dd5532635b8e3ddf25186e36671c16dd17c005c8b6a6862f4b5cc4e4f459e705", - "Addresses": ["100.65.172.123/32", "fd7a:115c:a1e0::5a37:ac7c/128"], - "AllowedIPs": ["100.65.172.123/32", "fd7a:115c:a1e0::5a37:ac7c/128", "10.55.0.0/16"], - "Endpoints": ["77.164.248.136:35931", "10.65.0.27:35931", "172.17.0.1:35931"], - "HomeDERP": 14, - "Hostinfo": { - "OS": "linux", - "Hostname": "router-b", - "Services": [ - { "Proto": "peerapi4", "Port": 58804 }, - { "Proto": "peerapi6", "Port": 58804 } - ] - }, - "Created": "2026-03-28T10:38:15.42735258Z", - "Cap": 131, - "Tags": ["tag:router-b"], - "PrimaryRoutes": ["10.55.0.0/16"], - "Online": true, - "ComputedName": "router-b", - "ComputedNameWithHost": "router-b" - }, - "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/group-b-client/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/group-b-client/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/group-b-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/group-b-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/group-b-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/group-b-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/group-b-client/tailscaled.sock whois --json 100.90.199.68", - "response": null - } - }, "netmap": { - "SelfNode": { - "ID": 1008089393782498, - "StableID": "ndUwgLoZs811CNTRL", - "Name": "group-b-client.tail78f774.ts.net.", - "User": 1008089393782498, - "Key": "nodekey:ef35a655163204a08b33e09fdc24709f1e3aaa7f40de4efd5549cf014b4d8711", - "DiscoKey": "discokey:e972182cda0d0b459c91b2881624b81749a7e44390a5dde1b9bc17c1ae67715a", - "Addresses": ["100.77.135.18/32", "fd7a:115c:a1e0::4b37:8712/128"], - "AllowedIPs": ["100.77.135.18/32", "fd7a:115c:a1e0::4b37:8712/128"], - "Endpoints": ["77.164.248.136:49377", "10.65.0.27:49377", "172.17.0.1:49377"], - "Hostinfo": { - "Hostname": "group-b-client", - "RequestTags": ["tag:group-b"], - "Services": [ - { "Proto": "peerapi4", "Port": 47173 }, - { "Proto": "peerapi6", "Port": 47173 }, - { "Proto": "peerapi-dns-proxy", "Port": 1 } - ] - }, - "Created": "2026-03-28T10:38:08.031309668Z", - "Tags": ["tag:group-b"], - "MachineAuthorized": true, - "CapMap": { - "https://tailscale.com/cap/file-sharing": null, - "https://tailscale.com/cap/is-owner": null, - "https://tailscale.com/cap/ssh": null, - "https://tailscale.com/cap/tailnet-lock": null, - "probe-udp-lifetime": null, - "ssh-behavior-v1": null, - "ssh-env-vars": null, - "store-appc-routes": null, - "tailnet-display-name": ["kratail2tid@passkey"] - }, - "ComputedName": "group-b-client", - "ComputedNameWithHost": "group-b-client" - }, - "AllCaps": [ - "probe-udp-lifetime", - "tailnet-display-name", - "https://tailscale.com/cap/tailnet-lock", - "ssh-env-vars", - "https://tailscale.com/cap/is-owner", - "ssh-behavior-v1", - "https://tailscale.com/cap/file-sharing", - "https://tailscale.com/cap/ssh", - "store-appc-routes" - ], - "NodeKey": "nodekey:ef35a655163204a08b33e09fdc24709f1e3aaa7f40de4efd5549cf014b4d8711", - "MachineKey": "mkey:f151b3ba7be457f1484c96d8daf48e032d8c9ed890a7f9b2f32c51458a19a05c", "Peers": [ { - "ID": 1399889648409786, - "StableID": "nPHvXBj1wB11CNTRL", "Name": "router-b.tail78f774.ts.net.", - "User": 1260082990019555, - "Key": "nodekey:4e6d3473c516cea37bcefdf4368932c623fd91c24aee1aacc27ca8165a41ac7a", - "DiscoKey": "discokey:dd5532635b8e3ddf25186e36671c16dd17c005c8b6a6862f4b5cc4e4f459e705", - "Addresses": ["100.65.172.123/32", "fd7a:115c:a1e0::5a37:ac7c/128"], - "AllowedIPs": ["100.65.172.123/32", "fd7a:115c:a1e0::5a37:ac7c/128", "10.55.0.0/16"], - "Endpoints": ["77.164.248.136:35931", "10.65.0.27:35931", "172.17.0.1:35931"], - "HomeDERP": 14, - "Hostinfo": { - "OS": "linux", - "Hostname": "router-b", - "Services": [ - { "Proto": "peerapi4", "Port": 58804 }, - { "Proto": "peerapi6", "Port": 58804 } - ] - }, - "Created": "2026-03-28T10:38:15.42735258Z", - "Cap": 131, - "Tags": ["tag:router-b"], - "PrimaryRoutes": ["10.55.0.0/16"], - "Online": true, - "ComputedName": "router-b", - "ComputedNameWithHost": "router-b" + "AllowedIPs": [ + "100.65.172.123/32", + "fd7a:115c:a1e0::5a37:ac7c/128", + "10.55.0.0/16" + ], + "PrimaryRoutes": [ + "10.55.0.0/16" + ] } ], - "DNS": { - "Routes": { - "tail78f774.ts.net.": null, - "ts.net.": [{ "Addr": "199.247.155.53" }, { "Addr": "2620:111:8007::53" }] - }, - "Domains": ["tail78f774.ts.net"], - "Proxied": true, - "ExitNodeFilteredSet": [".ts.net", ".tailscale.net"] - }, - "PacketFilter": [], - "PacketFilterRules": null, - "SSHPolicy": { "rules": [] }, - "CollectServices": false, - "DERPMap": { - "Regions": { - "1": { - "RegionID": 1, - "RegionCode": "nyc", - "RegionName": "New York City", - "Latitude": 40.7128, - "Longitude": -74.006, - "Nodes": [ - { - "Name": "1h", - "RegionID": 1, - "HostName": "derp1h.tailscale.com", - "IPv4": "199.38.181.93", - "IPv6": "2607:f740:f::afd", - "CanPort80": true - }, - { - "Name": "1g", - "RegionID": 1, - "HostName": "derp1g.tailscale.com", - "IPv4": "209.177.145.120", - "IPv6": "2607:f740:f::3eb", - "CanPort80": true - }, - { - "Name": "1i", - "RegionID": 1, - "HostName": "derp1i.tailscale.com", - "IPv4": "199.38.181.103", - "IPv6": "2607:f740:f::e19", - "CanPort80": true - }, - { - "Name": "1f", - "RegionID": 1, - "HostName": "derp1f.tailscale.com", - "IPv4": "199.38.181.104", - "IPv6": "2607:f740:f::bc", - "CanPort80": true - } - ] - }, - "10": { - "RegionID": 10, - "RegionCode": "sea", - "RegionName": "Seattle", - "Latitude": 47.609722, - "Longitude": -122.333056, - "Nodes": [ - { - "Name": "10c", - "RegionID": 10, - "HostName": "derp10c.tailscale.com", - "IPv4": "192.73.240.121", - "IPv6": "2607:f740:14::40c", - "CanPort80": true - }, - { - "Name": "10d", - "RegionID": 10, - "HostName": "derp10d.tailscale.com", - "IPv4": "192.73.240.132", - "IPv6": "2607:f740:14::500", - "CanPort80": true - }, - { - "Name": "10b", - "RegionID": 10, - "HostName": "derp10b.tailscale.com", - "IPv4": "192.73.240.161", - "IPv6": "2607:f740:14::61c", - "CanPort80": true - } - ] - }, - "11": { - "RegionID": 11, - "RegionCode": "sao", - "RegionName": "São Paulo", - "Latitude": -23.55, - "Longitude": -46.633333, - "Nodes": [ - { - "Name": "11f", - "RegionID": 11, - "HostName": "derp11f.tailscale.com", - "IPv4": "172.237.61.197", - "IPv6": "2600:3c0d::2000:3bff:fe44:6166", - "CanPort80": true - }, - { - "Name": "11g", - "RegionID": 11, - "HostName": "derp11g.tailscale.com", - "IPv4": "172.237.61.190", - "IPv6": "2600:3c0d::2000:62ff:febe:2e67", - "CanPort80": true - }, - { - "Name": "11e", - "RegionID": 11, - "HostName": "derp11e.tailscale.com", - "IPv4": "172.237.61.194", - "IPv6": "2600:3c0d::2000:d2ff:fe43:1790", - "CanPort80": true - } - ] - }, - "12": { - "RegionID": 12, - "RegionCode": "ord", - "RegionName": "Chicago", - "Latitude": 41.881944, - "Longitude": -87.627778, - "Nodes": [ - { - "Name": "12e", - "RegionID": 12, - "HostName": "derp12e.tailscale.com", - "IPv4": "209.177.158.15", - "IPv6": "2607:f740:e::b17", - "CanPort80": true - }, - { - "Name": "12f", - "RegionID": 12, - "HostName": "derp12f.tailscale.com", - "IPv4": "199.38.182.118", - "IPv6": "2607:f740:e::4c8", - "CanPort80": true - }, - { - "Name": "12d", - "RegionID": 12, - "HostName": "derp12d.tailscale.com", - "IPv4": "209.177.158.246", - "IPv6": "2607:f740:e::811", - "CanPort80": true - } - ] - }, - "13": { - "RegionID": 13, - "RegionCode": "den", - "RegionName": "Denver", - "Latitude": 39.7392, - "Longitude": -104.9849, - "Nodes": [ - { - "Name": "13c", - "RegionID": 13, - "HostName": "derp13c.tailscale.com", - "IPv4": "192.73.242.28", - "IPv6": "2607:f740:16::5c", - "CanPort80": true - }, - { - "Name": "13d", - "RegionID": 13, - "HostName": "derp13d.tailscale.com", - "IPv4": "192.73.242.204", - "IPv6": "2607:f740:16::c23", - "CanPort80": true - }, - { - "Name": "13b", - "RegionID": 13, - "HostName": "derp13b.tailscale.com", - "IPv4": "192.73.242.187", - "IPv6": "2607:f740:16::640", - "CanPort80": true - } - ] - }, - "14": { - "RegionID": 14, - "RegionCode": "ams", - "RegionName": "Amsterdam", - "Latitude": 52.372778, - "Longitude": 4.893611, - "Nodes": [ - { - "Name": "14c", - "RegionID": 14, - "HostName": "derp14c.tailscale.com", - "IPv4": "176.58.93.147", - "IPv6": "2a00:dd80:3c::b09", - "CanPort80": true - }, - { - "Name": "14d", - "RegionID": 14, - "HostName": "derp14d.tailscale.com", - "IPv4": "176.58.93.154", - "IPv6": "2a00:dd80:3c::3d5", - "CanPort80": true - }, - { - "Name": "14b", - "RegionID": 14, - "HostName": "derp14b.tailscale.com", - "IPv4": "176.58.93.248", - "IPv6": "2a00:dd80:3c::807", - "CanPort80": true - } - ] - }, - "15": { - "RegionID": 15, - "RegionCode": "jnb", - "RegionName": "Johannesburg", - "Latitude": -26.204444, - "Longitude": 28.045556, - "Nodes": [ - { - "Name": "15c", - "RegionID": 15, - "HostName": "derp15c.tailscale.com", - "IPv4": "102.67.165.185", - "IPv6": "2c0f:edb0:0:10::b59", - "CanPort80": true - }, - { - "Name": "15d", - "RegionID": 15, - "HostName": "derp15d.tailscale.com", - "IPv4": "102.67.165.36", - "IPv6": "2c0f:edb0:0:10::599", - "CanPort80": true - }, - { - "Name": "15b", - "RegionID": 15, - "HostName": "derp15b.tailscale.com", - "IPv4": "102.67.165.90", - "IPv6": "2c0f:edb0:0:10::963", - "CanPort80": true - } - ] - }, - "16": { - "RegionID": 16, - "RegionCode": "mia", - "RegionName": "Miami", - "Latitude": 25.78, - "Longitude": -80.21, - "Nodes": [ - { - "Name": "16c", - "RegionID": 16, - "HostName": "derp16c.tailscale.com", - "IPv4": "192.73.243.229", - "IPv6": "2607:f740:17::4e4", - "CanPort80": true - }, - { - "Name": "16d", - "RegionID": 16, - "HostName": "derp16d.tailscale.com", - "IPv4": "192.73.243.141", - "IPv6": "2607:f740:17::475", - "CanPort80": true - }, - { - "Name": "16b", - "RegionID": 16, - "HostName": "derp16b.tailscale.com", - "IPv4": "192.73.243.135", - "IPv6": "2607:f740:17::476", - "CanPort80": true - } - ] - }, - "17": { - "RegionID": 17, - "RegionCode": "lax", - "RegionName": "Los Angeles", - "Latitude": 34.05, - "Longitude": -118.25, - "Nodes": [ - { - "Name": "17c", - "RegionID": 17, - "HostName": "derp17c.tailscale.com", - "IPv4": "208.111.40.12", - "IPv6": "2607:f740:c::10", - "CanPort80": true - }, - { - "Name": "17d", - "RegionID": 17, - "HostName": "derp17d.tailscale.com", - "IPv4": "208.111.40.216", - "IPv6": "2607:f740:c::e1b", - "CanPort80": true - }, - { - "Name": "17b", - "RegionID": 17, - "HostName": "derp17b.tailscale.com", - "IPv4": "192.73.244.245", - "IPv6": "2607:f740:c::646", - "CanPort80": true - } - ] - }, - "18": { - "RegionID": 18, - "RegionCode": "par", - "RegionName": "Paris", - "Latitude": 48.856667, - "Longitude": 2.352222, - "Nodes": [ - { - "Name": "18c", - "RegionID": 18, - "HostName": "derp18c.tailscale.com", - "IPv4": "176.58.90.207", - "IPv6": "2a00:dd80:3e::c19", - "CanPort80": true - }, - { - "Name": "18d", - "RegionID": 18, - "HostName": "derp18d.tailscale.com", - "IPv4": "176.58.90.104", - "IPv6": "2a00:dd80:3e::f2e", - "CanPort80": true - }, - { - "Name": "18b", - "RegionID": 18, - "HostName": "derp18b.tailscale.com", - "IPv4": "176.58.90.147", - "IPv6": "2a00:dd80:3e::363", - "CanPort80": true - } - ] - }, - "19": { - "RegionID": 19, - "RegionCode": "mad", - "RegionName": "Madrid", - "Latitude": 40.416944, - "Longitude": -3.703333, - "Nodes": [ - { - "Name": "19c", - "RegionID": 19, - "HostName": "derp19c.tailscale.com", - "IPv4": "45.159.97.61", - "IPv6": "2a00:dd80:14:10::20", - "CanPort80": true - }, - { - "Name": "19d", - "RegionID": 19, - "HostName": "derp19d.tailscale.com", - "IPv4": "45.159.97.233", - "IPv6": "2a00:dd80:14:10::34a", - "CanPort80": true - }, - { - "Name": "19b", - "RegionID": 19, - "HostName": "derp19b.tailscale.com", - "IPv4": "45.159.97.144", - "IPv6": "2a00:dd80:14:10::335", - "CanPort80": true - } - ] - }, - "2": { - "RegionID": 2, - "RegionCode": "sfo", - "RegionName": "San Francisco", - "Latitude": 37.7775, - "Longitude": -122.416389, - "Nodes": [ - { - "Name": "2e", - "RegionID": 2, - "HostName": "derp2e.tailscale.com", - "IPv4": "192.73.252.134", - "IPv6": "2607:f740:0:3f::44c", - "CanPort80": true - }, - { - "Name": "2f", - "RegionID": 2, - "HostName": "derp2f.tailscale.com", - "IPv4": "208.111.34.178", - "IPv6": "2607:f740:0:3f::f4", - "CanPort80": true - }, - { - "Name": "2d", - "RegionID": 2, - "HostName": "derp2d.tailscale.com", - "IPv4": "192.73.252.65", - "IPv6": "2607:f740:0:3f::287", - "CanPort80": true - } - ] - }, - "20": { - "RegionID": 20, - "RegionCode": "hkg", - "RegionName": "Hong Kong", - "Latitude": 22.3193, - "Longitude": 114.1694, - "Nodes": [ - { - "Name": "20c", - "RegionID": 20, - "HostName": "derp20c.tailscale.com", - "IPv4": "205.147.105.30", - "IPv6": "2403:2500:8000:1::5fb", - "CanPort80": true - }, - { - "Name": "20d", - "RegionID": 20, - "HostName": "derp20d.tailscale.com", - "IPv4": "205.147.105.78", - "IPv6": "2403:2500:8000:1::e9a", - "CanPort80": true - }, - { - "Name": "20b", - "RegionID": 20, - "HostName": "derp20b.tailscale.com", - "IPv4": "103.6.84.152", - "IPv6": "2403:2500:8000:1::ef6", - "CanPort80": true - } - ] - }, - "21": { - "RegionID": 21, - "RegionCode": "tor", - "RegionName": "Toronto", - "Latitude": 43.741667, - "Longitude": -79.373333, - "Nodes": [ - { - "Name": "21c", - "RegionID": 21, - "HostName": "derp21c.tailscale.com", - "IPv4": "162.248.221.215", - "IPv6": "2607:f740:50::f10", - "CanPort80": true - }, - { - "Name": "21d", - "RegionID": 21, - "HostName": "derp21d.tailscale.com", - "IPv4": "162.248.221.248", - "IPv6": "2607:f740:50::ca4", - "CanPort80": true - }, - { - "Name": "21b", - "RegionID": 21, - "HostName": "derp21b.tailscale.com", - "IPv4": "162.248.221.199", - "IPv6": "2607:f740:50::1d1", - "CanPort80": true - } - ] - }, - "22": { - "RegionID": 22, - "RegionCode": "waw", - "RegionName": "Warsaw", - "Latitude": 52.23, - "Longitude": 21.011111, - "Nodes": [ - { - "Name": "22c", - "RegionID": 22, - "HostName": "derp22c.tailscale.com", - "IPv4": "45.159.98.253", - "IPv6": "2a00:dd80:40:100::3f", - "CanPort80": true - }, - { - "Name": "22d", - "RegionID": 22, - "HostName": "derp22d.tailscale.com", - "IPv4": "45.159.98.145", - "IPv6": "2a00:dd80:40:100::211", - "CanPort80": true - }, - { - "Name": "22b", - "RegionID": 22, - "HostName": "derp22b.tailscale.com", - "IPv4": "45.159.98.196", - "IPv6": "2a00:dd80:40:100::316", - "CanPort80": true - } - ] - }, - "23": { - "RegionID": 23, - "RegionCode": "dbi", - "RegionName": "Dubai", - "Latitude": 25.263056, - "Longitude": 55.297222, - "Nodes": [ - { - "Name": "23c", - "RegionID": 23, - "HostName": "derp23c.tailscale.com", - "IPv4": "185.34.3.207", - "IPv6": "2a00:dd80:3f:100::a50", - "CanPort80": true - }, - { - "Name": "23d", - "RegionID": 23, - "HostName": "derp23d.tailscale.com", - "IPv4": "185.34.3.75", - "IPv6": "2a00:dd80:3f:100::97e", - "CanPort80": true - }, - { - "Name": "23b", - "RegionID": 23, - "HostName": "derp23b.tailscale.com", - "IPv4": "185.34.3.232", - "IPv6": "2a00:dd80:3f:100::76f", - "CanPort80": true - } - ] - }, - "24": { - "RegionID": 24, - "RegionCode": "hnl", - "RegionName": "Honolulu", - "Latitude": 21.306944, - "Longitude": -157.858333, - "Nodes": [ - { - "Name": "24c", - "RegionID": 24, - "HostName": "derp24c.tailscale.com", - "IPv4": "208.83.233.233", - "IPv6": "2001:19f0:c000:c591:5400:04ff:fe26:2c5f", - "CanPort80": true - }, - { - "Name": "24d", - "RegionID": 24, - "HostName": "derp24d.tailscale.com", - "IPv4": "208.72.155.133", - "IPv6": "2001:19f0:c000:c564:5400:04ff:fe26:2ba8", - "CanPort80": true - }, - { - "Name": "24b", - "RegionID": 24, - "HostName": "derp24b.tailscale.com", - "IPv4": "208.83.234.151", - "IPv6": "2001:19f0:c000:c586:5400:04ff:fe26:2ba6", - "CanPort80": true - } - ] - }, - "25": { - "RegionID": 25, - "RegionCode": "nai", - "RegionName": "Nairobi", - "Latitude": -1.286389, - "Longitude": 36.817222, - "Nodes": [ - { - "Name": "25c", - "RegionID": 25, - "HostName": "derp25c.tailscale.com", - "IPv4": "102.67.167.37", - "IPv6": "2c0f:edb0:2000:1::2c7", - "CanPort80": true - }, - { - "Name": "25d", - "RegionID": 25, - "HostName": "derp25d.tailscale.com", - "IPv4": "102.67.167.188", - "IPv6": "2c0f:edb0:2000:1::188", - "CanPort80": true - }, - { - "Name": "25b", - "RegionID": 25, - "HostName": "derp25b.tailscale.com", - "IPv4": "102.67.167.245", - "IPv6": "2c0f:edb0:2000:1::2e9", - "CanPort80": true - } - ] - }, - "26": { - "RegionID": 26, - "RegionCode": "nue", - "RegionName": "Nuremberg", - "Latitude": 49.453889, - "Longitude": 11.0775, - "Nodes": [ - { - "Name": "26c", - "RegionID": 26, - "HostName": "derp26c.tailscale.com", - "IPv4": "49.12.193.137", - "IPv6": "2a01:4f8:1c1c:5c70::1", - "CanPort80": true - }, - { - "Name": "26d", - "RegionID": 26, - "HostName": "derp26d.tailscale.com", - "IPv4": "49.13.204.141", - "IPv6": "2a01:4f8:1c0c:7d06::1", - "CanPort80": true - }, - { - "Name": "26b", - "RegionID": 26, - "HostName": "derp26b.tailscale.com", - "IPv4": "167.235.72.200", - "IPv6": "2a01:4f8:1c1c:47b6::1", - "CanPort80": true - } - ] - }, - "27": { - "RegionID": 27, - "RegionCode": "iad", - "RegionName": "Ashburn", - "Latitude": 39.03, - "Longitude": -77.471111, - "Nodes": [ - { - "Name": "27d", - "RegionID": 27, - "HostName": "derp27d.tailscale.com", - "IPv4": "178.156.152.106", - "IPv6": "2a01:4ff:f0:3c8e::1", - "CanPort80": true - }, - { - "Name": "27c", - "RegionID": 27, - "HostName": "derp27c.tailscale.com", - "IPv4": "178.156.152.91", - "IPv6": "2a01:4ff:f0:3913::1", - "CanPort80": true - }, - { - "Name": "27e", - "RegionID": 27, - "HostName": "derp27e.tailscale.com", - "IPv4": "178.156.134.232", - "IPv6": "2a01:4ff:f0:28d4::1", - "CanPort80": true - }, - { - "Name": "27b", - "RegionID": 27, - "HostName": "derp27b.tailscale.com", - "IPv4": "5.161.218.233", - "IPv6": "2a01:4ff:f0:3db9::1", - "CanPort80": true - } - ] - }, - "28": { - "RegionID": 28, - "RegionCode": "hel", - "RegionName": "Helsinki", - "Latitude": 60.170833, - "Longitude": 24.9375, - "Nodes": [ - { - "Name": "28c", - "RegionID": 28, - "HostName": "derp28c.tailscale.com", - "IPv4": "95.217.2.165", - "IPv6": "2a01:4f9:c012:cd74::1", - "CanPort80": true - }, - { - "Name": "28d", - "RegionID": 28, - "HostName": "derp28d.tailscale.com", - "IPv4": "157.180.28.32", - "IPv6": "2a01:4f9:c012:2e5b::1", - "CanPort80": true - }, - { - "Name": "28b", - "RegionID": 28, - "HostName": "derp28b.tailscale.com", - "IPv4": "65.109.143.62", - "IPv6": "2a01:4f9:c012:d55c::1", - "CanPort80": true - } - ] - }, - "3": { - "RegionID": 3, - "RegionCode": "sin", - "RegionName": "Singapore", - "Latitude": 1.3521, - "Longitude": 103.8198, - "Nodes": [ - { - "Name": "3g", - "RegionID": 3, - "HostName": "derp3g.tailscale.com", - "IPv4": "172.237.72.79", - "IPv6": "2600:3c15::2000:adff:fe08:6fab", - "CanPort80": true - }, - { - "Name": "3f", - "RegionID": 3, - "HostName": "derp3f.tailscale.com", - "IPv4": "172.237.72.8", - "IPv6": "2600:3c15::2000:53ff:fe48:a668", - "CanPort80": true - }, - { - "Name": "3h", - "RegionID": 3, - "HostName": "derp3h.tailscale.com", - "IPv4": "172.237.66.30", - "IPv6": "2600:3c15::2000:3dff:fe44:50aa", - "CanPort80": true - }, - { - "Name": "3e", - "RegionID": 3, - "HostName": "derp3e.tailscale.com", - "IPv4": "172.237.72.43", - "IPv6": "2600:3c15::2000:6cff:fee4:d799", - "CanPort80": true - } - ] - }, - "4": { - "RegionID": 4, - "RegionCode": "fra", - "RegionName": "Frankfurt", - "Latitude": 50.1109, - "Longitude": 8.6821, - "Nodes": [ - { - "Name": "4h", - "RegionID": 4, - "HostName": "derp4h.tailscale.com", - "IPv4": "185.40.234.77", - "IPv6": "2a00:dd80:20::bcf", - "CanPort80": true - }, - { - "Name": "4g", - "RegionID": 4, - "HostName": "derp4g.tailscale.com", - "IPv4": "185.40.234.113", - "IPv6": "2a00:dd80:20::8f", - "CanPort80": true - }, - { - "Name": "4i", - "RegionID": 4, - "HostName": "derp4i.tailscale.com", - "IPv4": "185.40.234.53", - "IPv6": "2a00:dd80:20::8a6", - "CanPort80": true - }, - { - "Name": "4f", - "RegionID": 4, - "HostName": "derp4f.tailscale.com", - "IPv4": "185.40.234.219", - "IPv6": "2a00:dd80:20::a25", - "CanPort80": true - } - ] - }, - "5": { - "RegionID": 5, - "RegionCode": "syd", - "RegionName": "Sydney", - "Latitude": -33.867778, - "Longitude": 151.21, - "Nodes": [ - { - "Name": "5f", - "RegionID": 5, - "HostName": "derp5f.tailscale.com", - "IPv4": "172.105.166.103", - "IPv6": "2400:8907::2000:ccff:fe1f:80da", - "CanPort80": true - }, - { - "Name": "5g", - "RegionID": 5, - "HostName": "derp5g.tailscale.com", - "IPv4": "172.105.169.57", - "IPv6": "2400:8907::2000:2fff:fea7:57f4", - "CanPort80": true - }, - { - "Name": "5e", - "RegionID": 5, - "HostName": "derp5e.tailscale.com", - "IPv4": "172.105.179.230", - "IPv6": "2400:8907::2000:ceff:fe8d:4f4e", - "CanPort80": true - } - ] - }, - "6": { - "RegionID": 6, - "RegionCode": "blr", - "RegionName": "Bengaluru", - "Latitude": 12.9716, - "Longitude": 77.5946, - "Nodes": [ - { - "Name": "6a", - "RegionID": 6, - "HostName": "derp6.tailscale.com", - "IPv4": "68.183.90.120", - "IPv6": "2400:6180:100:d0::982:d001", - "CanPort80": true - } - ] - }, - "7": { - "RegionID": 7, - "RegionCode": "tok", - "RegionName": "Tokyo", - "Latitude": 35.6764, - "Longitude": 139.65, - "Nodes": [ - { - "Name": "7g", - "RegionID": 7, - "HostName": "derp7g.tailscale.com", - "IPv4": "172.238.6.179", - "IPv6": "2600:3c18::2000:3fff:fe80:3ebd", - "CanPort80": true - }, - { - "Name": "7f", - "RegionID": 7, - "HostName": "derp7f.tailscale.com", - "IPv4": "172.238.6.34", - "IPv6": "2600:3c18::2000:acff:fe8e:3ed5", - "CanPort80": true - }, - { - "Name": "7h", - "RegionID": 7, - "HostName": "derp7h.tailscale.com", - "IPv4": "172.237.28.183", - "IPv6": "2600:3c18::2000:b1ff:fea9:4560", - "CanPort80": true - }, - { - "Name": "7e", - "RegionID": 7, - "HostName": "derp7e.tailscale.com", - "IPv4": "172.238.6.180", - "IPv6": "2600:3c18::2000:60ff:fe0f:6e83", - "STUNOnly": true, - "CanPort80": true - } - ] - }, - "8": { - "RegionID": 8, - "RegionCode": "lhr", - "RegionName": "London", - "Latitude": 51.5072, - "Longitude": 0.1276, - "Nodes": [ - { - "Name": "8f", - "RegionID": 8, - "HostName": "derp8f.tailscale.com", - "IPv4": "176.58.88.183", - "IPv6": "2a00:dd80:3a::dfa", - "CanPort80": true - }, - { - "Name": "8g", - "RegionID": 8, - "HostName": "derp8g.tailscale.com", - "IPv4": "176.58.92.254", - "IPv6": "2a00:dd80:3a::ed", - "CanPort80": true - }, - { - "Name": "8e", - "RegionID": 8, - "HostName": "derp8e.tailscale.com", - "IPv4": "176.58.92.144", - "IPv6": "2a00:dd80:3a::b33", - "CanPort80": true - } - ] - }, - "9": { - "RegionID": 9, - "RegionCode": "dfw", - "RegionName": "Dallas", - "Latitude": 32.779167, - "Longitude": -96.808889, - "Nodes": [ - { - "Name": "9e", - "RegionID": 9, - "HostName": "derp9e.tailscale.com", - "IPv4": "192.73.248.83", - "IPv6": "2607:f740:100::359", - "CanPort80": true - }, - { - "Name": "9f", - "RegionID": 9, - "HostName": "derp9f.tailscale.com", - "IPv4": "209.177.156.197", - "IPv6": "2607:f740:100::cad", - "CanPort80": true - }, - { - "Name": "9d", - "RegionID": 9, - "HostName": "derp9d.tailscale.com", - "IPv4": "209.177.156.94", - "IPv6": "2607:f740:100::c05", - "CanPort80": true - } - ] - } - } - }, - "DisplayMessages": null, - "TKAEnabled": false, - "TKAHead": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", - "Domain": "kratail2tid@passkey", - "DomainAuditLogID": "", - "UserProfiles": { - "1008089393782498": { - "ID": 1008089393782498, - "LoginName": "group-b-client.tail78f774.ts.net", - "DisplayName": "group-b-client" - }, - "1260082990019555": { "ID": 1260082990019555, "LoginName": "tagged-devices", "DisplayName": "Tagged Devices" } - } + "PacketFilterRules": null } }, "multi-exit-router": { - "commands": { - "packet_filter_rules": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/multi-exit-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/multi-exit-router/tailscaled.sock debug localapi POST debug-packet-filter-matches" - }, "packet_filter_rules": null, - "packet_filter_matches": [], - "whois": { - "100.124.195.93": { - "peer_name": "exit-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/multi-exit-router/tailscaled.sock whois --json 100.124.195.93", - "response": null - }, - "100.116.18.24": { - "peer_name": "exit-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/multi-exit-router/tailscaled.sock whois --json 100.116.18.24", - "response": null - }, - "100.85.66.106": { - "peer_name": "exit-node", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/multi-exit-router/tailscaled.sock whois --json 100.85.66.106", - "response": null - }, - "100.107.162.14": { - "peer_name": "group-a-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/multi-exit-router/tailscaled.sock whois --json 100.107.162.14", - "response": null - }, - "100.77.135.18": { - "peer_name": "group-b-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/multi-exit-router/tailscaled.sock whois --json 100.77.135.18", - "response": null - }, - "100.109.43.124": { - "peer_name": "router-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/multi-exit-router/tailscaled.sock whois --json 100.109.43.124", - "response": null - }, - "100.65.172.123": { - "peer_name": "router-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/multi-exit-router/tailscaled.sock whois --json 100.65.172.123", - "response": null - }, - "100.92.142.61": { - "peer_name": "subnet-router", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/multi-exit-router/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/multi-exit-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/multi-exit-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/multi-exit-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/multi-exit-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/multi-exit-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/multi-exit-router/tailscaled.sock whois --json 100.90.199.68", - "response": null - } - }, "netmap": { - "SelfNode": { - "ID": 6294409699640722, - "StableID": "nMQuxDUk9r11CNTRL", - "Name": "multi-exit-router.tail78f774.ts.net.", - "User": 6294409699640722, - "Key": "nodekey:b854a0d64eba757cd3215c5bd78149cc0f927e35a2ad20342e88a15ead297f6a", - "DiscoKey": "discokey:762c82dd308809f511c6ac86dcc2642585837358fdd24958d55f16883c8e6c58", - "Addresses": ["100.105.127.107/32", "fd7a:115c:a1e0::ad37:7f6b/128"], - "AllowedIPs": ["100.105.127.107/32", "fd7a:115c:a1e0::ad37:7f6b/128", "10.33.0.0/16"], - "Endpoints": ["77.164.248.136:50766", "10.65.0.27:50766", "172.17.0.1:50766"], - "Hostinfo": { - "Hostname": "multi-exit-router", - "RoutableIPs": ["0.0.0.0/0", "::/0", "10.33.0.0/16"], - "RequestTags": ["tag:exit", "tag:router"], - "Services": [ - { "Proto": "peerapi4", "Port": 62548 }, - { "Proto": "peerapi6", "Port": 62548 }, - { "Proto": "peerapi-dns-proxy", "Port": 1 } - ] - }, - "Created": "2026-03-28T10:38:19.117098852Z", - "Tags": ["tag:exit", "tag:router"], - "PrimaryRoutes": ["10.33.0.0/16"], - "MachineAuthorized": true, - "CapMap": { - "https://tailscale.com/cap/file-sharing": null, - "https://tailscale.com/cap/is-owner": null, - "https://tailscale.com/cap/ssh": null, - "https://tailscale.com/cap/tailnet-lock": null, - "probe-udp-lifetime": null, - "ssh-behavior-v1": null, - "ssh-env-vars": null, - "store-appc-routes": null, - "tailnet-display-name": ["kratail2tid@passkey"] - }, - "ComputedName": "multi-exit-router", - "ComputedNameWithHost": "multi-exit-router" - }, - "AllCaps": [ - "tailnet-display-name", - "store-appc-routes", - "https://tailscale.com/cap/tailnet-lock", - "ssh-env-vars", - "https://tailscale.com/cap/ssh", - "https://tailscale.com/cap/file-sharing", - "https://tailscale.com/cap/is-owner", - "probe-udp-lifetime", - "ssh-behavior-v1" - ], - "NodeKey": "nodekey:b854a0d64eba757cd3215c5bd78149cc0f927e35a2ad20342e88a15ead297f6a", - "MachineKey": "mkey:91bee804809f30d07bfc29cf556844288fc3d45e0572469a3cb0799a535fda7d", "Peers": [], - "DNS": { - "Routes": { - "tail78f774.ts.net.": null, - "ts.net.": [{ "Addr": "199.247.155.53" }, { "Addr": "2620:111:8007::53" }] - }, - "Domains": ["tail78f774.ts.net"], - "Proxied": true, - "ExitNodeFilteredSet": [".ts.net", ".tailscale.net"] - }, - "PacketFilter": [], - "PacketFilterRules": null, - "SSHPolicy": { "rules": [] }, - "CollectServices": false, - "DERPMap": { - "Regions": { - "1": { - "RegionID": 1, - "RegionCode": "nyc", - "RegionName": "New York City", - "Latitude": 40.7128, - "Longitude": -74.006, - "Nodes": [ - { - "Name": "1h", - "RegionID": 1, - "HostName": "derp1h.tailscale.com", - "IPv4": "199.38.181.93", - "IPv6": "2607:f740:f::afd", - "CanPort80": true - }, - { - "Name": "1g", - "RegionID": 1, - "HostName": "derp1g.tailscale.com", - "IPv4": "209.177.145.120", - "IPv6": "2607:f740:f::3eb", - "CanPort80": true - }, - { - "Name": "1i", - "RegionID": 1, - "HostName": "derp1i.tailscale.com", - "IPv4": "199.38.181.103", - "IPv6": "2607:f740:f::e19", - "CanPort80": true - }, - { - "Name": "1f", - "RegionID": 1, - "HostName": "derp1f.tailscale.com", - "IPv4": "199.38.181.104", - "IPv6": "2607:f740:f::bc", - "CanPort80": true - } - ] - }, - "10": { - "RegionID": 10, - "RegionCode": "sea", - "RegionName": "Seattle", - "Latitude": 47.609722, - "Longitude": -122.333056, - "Nodes": [ - { - "Name": "10c", - "RegionID": 10, - "HostName": "derp10c.tailscale.com", - "IPv4": "192.73.240.121", - "IPv6": "2607:f740:14::40c", - "CanPort80": true - }, - { - "Name": "10d", - "RegionID": 10, - "HostName": "derp10d.tailscale.com", - "IPv4": "192.73.240.132", - "IPv6": "2607:f740:14::500", - "CanPort80": true - }, - { - "Name": "10b", - "RegionID": 10, - "HostName": "derp10b.tailscale.com", - "IPv4": "192.73.240.161", - "IPv6": "2607:f740:14::61c", - "CanPort80": true - } - ] - }, - "11": { - "RegionID": 11, - "RegionCode": "sao", - "RegionName": "São Paulo", - "Latitude": -23.55, - "Longitude": -46.633333, - "Nodes": [ - { - "Name": "11f", - "RegionID": 11, - "HostName": "derp11f.tailscale.com", - "IPv4": "172.237.61.197", - "IPv6": "2600:3c0d::2000:3bff:fe44:6166", - "CanPort80": true - }, - { - "Name": "11g", - "RegionID": 11, - "HostName": "derp11g.tailscale.com", - "IPv4": "172.237.61.190", - "IPv6": "2600:3c0d::2000:62ff:febe:2e67", - "CanPort80": true - }, - { - "Name": "11e", - "RegionID": 11, - "HostName": "derp11e.tailscale.com", - "IPv4": "172.237.61.194", - "IPv6": "2600:3c0d::2000:d2ff:fe43:1790", - "CanPort80": true - } - ] - }, - "12": { - "RegionID": 12, - "RegionCode": "ord", - "RegionName": "Chicago", - "Latitude": 41.881944, - "Longitude": -87.627778, - "Nodes": [ - { - "Name": "12e", - "RegionID": 12, - "HostName": "derp12e.tailscale.com", - "IPv4": "209.177.158.15", - "IPv6": "2607:f740:e::b17", - "CanPort80": true - }, - { - "Name": "12f", - "RegionID": 12, - "HostName": "derp12f.tailscale.com", - "IPv4": "199.38.182.118", - "IPv6": "2607:f740:e::4c8", - "CanPort80": true - }, - { - "Name": "12d", - "RegionID": 12, - "HostName": "derp12d.tailscale.com", - "IPv4": "209.177.158.246", - "IPv6": "2607:f740:e::811", - "CanPort80": true - } - ] - }, - "13": { - "RegionID": 13, - "RegionCode": "den", - "RegionName": "Denver", - "Latitude": 39.7392, - "Longitude": -104.9849, - "Nodes": [ - { - "Name": "13c", - "RegionID": 13, - "HostName": "derp13c.tailscale.com", - "IPv4": "192.73.242.28", - "IPv6": "2607:f740:16::5c", - "CanPort80": true - }, - { - "Name": "13d", - "RegionID": 13, - "HostName": "derp13d.tailscale.com", - "IPv4": "192.73.242.204", - "IPv6": "2607:f740:16::c23", - "CanPort80": true - }, - { - "Name": "13b", - "RegionID": 13, - "HostName": "derp13b.tailscale.com", - "IPv4": "192.73.242.187", - "IPv6": "2607:f740:16::640", - "CanPort80": true - } - ] - }, - "14": { - "RegionID": 14, - "RegionCode": "ams", - "RegionName": "Amsterdam", - "Latitude": 52.372778, - "Longitude": 4.893611, - "Nodes": [ - { - "Name": "14c", - "RegionID": 14, - "HostName": "derp14c.tailscale.com", - "IPv4": "176.58.93.147", - "IPv6": "2a00:dd80:3c::b09", - "CanPort80": true - }, - { - "Name": "14d", - "RegionID": 14, - "HostName": "derp14d.tailscale.com", - "IPv4": "176.58.93.154", - "IPv6": "2a00:dd80:3c::3d5", - "CanPort80": true - }, - { - "Name": "14b", - "RegionID": 14, - "HostName": "derp14b.tailscale.com", - "IPv4": "176.58.93.248", - "IPv6": "2a00:dd80:3c::807", - "CanPort80": true - } - ] - }, - "15": { - "RegionID": 15, - "RegionCode": "jnb", - "RegionName": "Johannesburg", - "Latitude": -26.204444, - "Longitude": 28.045556, - "Nodes": [ - { - "Name": "15c", - "RegionID": 15, - "HostName": "derp15c.tailscale.com", - "IPv4": "102.67.165.185", - "IPv6": "2c0f:edb0:0:10::b59", - "CanPort80": true - }, - { - "Name": "15d", - "RegionID": 15, - "HostName": "derp15d.tailscale.com", - "IPv4": "102.67.165.36", - "IPv6": "2c0f:edb0:0:10::599", - "CanPort80": true - }, - { - "Name": "15b", - "RegionID": 15, - "HostName": "derp15b.tailscale.com", - "IPv4": "102.67.165.90", - "IPv6": "2c0f:edb0:0:10::963", - "CanPort80": true - } - ] - }, - "16": { - "RegionID": 16, - "RegionCode": "mia", - "RegionName": "Miami", - "Latitude": 25.78, - "Longitude": -80.21, - "Nodes": [ - { - "Name": "16c", - "RegionID": 16, - "HostName": "derp16c.tailscale.com", - "IPv4": "192.73.243.229", - "IPv6": "2607:f740:17::4e4", - "CanPort80": true - }, - { - "Name": "16d", - "RegionID": 16, - "HostName": "derp16d.tailscale.com", - "IPv4": "192.73.243.141", - "IPv6": "2607:f740:17::475", - "CanPort80": true - }, - { - "Name": "16b", - "RegionID": 16, - "HostName": "derp16b.tailscale.com", - "IPv4": "192.73.243.135", - "IPv6": "2607:f740:17::476", - "CanPort80": true - } - ] - }, - "17": { - "RegionID": 17, - "RegionCode": "lax", - "RegionName": "Los Angeles", - "Latitude": 34.05, - "Longitude": -118.25, - "Nodes": [ - { - "Name": "17c", - "RegionID": 17, - "HostName": "derp17c.tailscale.com", - "IPv4": "208.111.40.12", - "IPv6": "2607:f740:c::10", - "CanPort80": true - }, - { - "Name": "17d", - "RegionID": 17, - "HostName": "derp17d.tailscale.com", - "IPv4": "208.111.40.216", - "IPv6": "2607:f740:c::e1b", - "CanPort80": true - }, - { - "Name": "17b", - "RegionID": 17, - "HostName": "derp17b.tailscale.com", - "IPv4": "192.73.244.245", - "IPv6": "2607:f740:c::646", - "CanPort80": true - } - ] - }, - "18": { - "RegionID": 18, - "RegionCode": "par", - "RegionName": "Paris", - "Latitude": 48.856667, - "Longitude": 2.352222, - "Nodes": [ - { - "Name": "18c", - "RegionID": 18, - "HostName": "derp18c.tailscale.com", - "IPv4": "176.58.90.207", - "IPv6": "2a00:dd80:3e::c19", - "CanPort80": true - }, - { - "Name": "18d", - "RegionID": 18, - "HostName": "derp18d.tailscale.com", - "IPv4": "176.58.90.104", - "IPv6": "2a00:dd80:3e::f2e", - "CanPort80": true - }, - { - "Name": "18b", - "RegionID": 18, - "HostName": "derp18b.tailscale.com", - "IPv4": "176.58.90.147", - "IPv6": "2a00:dd80:3e::363", - "CanPort80": true - } - ] - }, - "19": { - "RegionID": 19, - "RegionCode": "mad", - "RegionName": "Madrid", - "Latitude": 40.416944, - "Longitude": -3.703333, - "Nodes": [ - { - "Name": "19c", - "RegionID": 19, - "HostName": "derp19c.tailscale.com", - "IPv4": "45.159.97.61", - "IPv6": "2a00:dd80:14:10::20", - "CanPort80": true - }, - { - "Name": "19d", - "RegionID": 19, - "HostName": "derp19d.tailscale.com", - "IPv4": "45.159.97.233", - "IPv6": "2a00:dd80:14:10::34a", - "CanPort80": true - }, - { - "Name": "19b", - "RegionID": 19, - "HostName": "derp19b.tailscale.com", - "IPv4": "45.159.97.144", - "IPv6": "2a00:dd80:14:10::335", - "CanPort80": true - } - ] - }, - "2": { - "RegionID": 2, - "RegionCode": "sfo", - "RegionName": "San Francisco", - "Latitude": 37.7775, - "Longitude": -122.416389, - "Nodes": [ - { - "Name": "2e", - "RegionID": 2, - "HostName": "derp2e.tailscale.com", - "IPv4": "192.73.252.134", - "IPv6": "2607:f740:0:3f::44c", - "CanPort80": true - }, - { - "Name": "2f", - "RegionID": 2, - "HostName": "derp2f.tailscale.com", - "IPv4": "208.111.34.178", - "IPv6": "2607:f740:0:3f::f4", - "CanPort80": true - }, - { - "Name": "2d", - "RegionID": 2, - "HostName": "derp2d.tailscale.com", - "IPv4": "192.73.252.65", - "IPv6": "2607:f740:0:3f::287", - "CanPort80": true - } - ] - }, - "20": { - "RegionID": 20, - "RegionCode": "hkg", - "RegionName": "Hong Kong", - "Latitude": 22.3193, - "Longitude": 114.1694, - "Nodes": [ - { - "Name": "20c", - "RegionID": 20, - "HostName": "derp20c.tailscale.com", - "IPv4": "205.147.105.30", - "IPv6": "2403:2500:8000:1::5fb", - "CanPort80": true - }, - { - "Name": "20d", - "RegionID": 20, - "HostName": "derp20d.tailscale.com", - "IPv4": "205.147.105.78", - "IPv6": "2403:2500:8000:1::e9a", - "CanPort80": true - }, - { - "Name": "20b", - "RegionID": 20, - "HostName": "derp20b.tailscale.com", - "IPv4": "103.6.84.152", - "IPv6": "2403:2500:8000:1::ef6", - "CanPort80": true - } - ] - }, - "21": { - "RegionID": 21, - "RegionCode": "tor", - "RegionName": "Toronto", - "Latitude": 43.741667, - "Longitude": -79.373333, - "Nodes": [ - { - "Name": "21c", - "RegionID": 21, - "HostName": "derp21c.tailscale.com", - "IPv4": "162.248.221.215", - "IPv6": "2607:f740:50::f10", - "CanPort80": true - }, - { - "Name": "21d", - "RegionID": 21, - "HostName": "derp21d.tailscale.com", - "IPv4": "162.248.221.248", - "IPv6": "2607:f740:50::ca4", - "CanPort80": true - }, - { - "Name": "21b", - "RegionID": 21, - "HostName": "derp21b.tailscale.com", - "IPv4": "162.248.221.199", - "IPv6": "2607:f740:50::1d1", - "CanPort80": true - } - ] - }, - "22": { - "RegionID": 22, - "RegionCode": "waw", - "RegionName": "Warsaw", - "Latitude": 52.23, - "Longitude": 21.011111, - "Nodes": [ - { - "Name": "22c", - "RegionID": 22, - "HostName": "derp22c.tailscale.com", - "IPv4": "45.159.98.253", - "IPv6": "2a00:dd80:40:100::3f", - "CanPort80": true - }, - { - "Name": "22d", - "RegionID": 22, - "HostName": "derp22d.tailscale.com", - "IPv4": "45.159.98.145", - "IPv6": "2a00:dd80:40:100::211", - "CanPort80": true - }, - { - "Name": "22b", - "RegionID": 22, - "HostName": "derp22b.tailscale.com", - "IPv4": "45.159.98.196", - "IPv6": "2a00:dd80:40:100::316", - "CanPort80": true - } - ] - }, - "23": { - "RegionID": 23, - "RegionCode": "dbi", - "RegionName": "Dubai", - "Latitude": 25.263056, - "Longitude": 55.297222, - "Nodes": [ - { - "Name": "23c", - "RegionID": 23, - "HostName": "derp23c.tailscale.com", - "IPv4": "185.34.3.207", - "IPv6": "2a00:dd80:3f:100::a50", - "CanPort80": true - }, - { - "Name": "23d", - "RegionID": 23, - "HostName": "derp23d.tailscale.com", - "IPv4": "185.34.3.75", - "IPv6": "2a00:dd80:3f:100::97e", - "CanPort80": true - }, - { - "Name": "23b", - "RegionID": 23, - "HostName": "derp23b.tailscale.com", - "IPv4": "185.34.3.232", - "IPv6": "2a00:dd80:3f:100::76f", - "CanPort80": true - } - ] - }, - "24": { - "RegionID": 24, - "RegionCode": "hnl", - "RegionName": "Honolulu", - "Latitude": 21.306944, - "Longitude": -157.858333, - "Nodes": [ - { - "Name": "24c", - "RegionID": 24, - "HostName": "derp24c.tailscale.com", - "IPv4": "208.83.233.233", - "IPv6": "2001:19f0:c000:c591:5400:04ff:fe26:2c5f", - "CanPort80": true - }, - { - "Name": "24d", - "RegionID": 24, - "HostName": "derp24d.tailscale.com", - "IPv4": "208.72.155.133", - "IPv6": "2001:19f0:c000:c564:5400:04ff:fe26:2ba8", - "CanPort80": true - }, - { - "Name": "24b", - "RegionID": 24, - "HostName": "derp24b.tailscale.com", - "IPv4": "208.83.234.151", - "IPv6": "2001:19f0:c000:c586:5400:04ff:fe26:2ba6", - "CanPort80": true - } - ] - }, - "25": { - "RegionID": 25, - "RegionCode": "nai", - "RegionName": "Nairobi", - "Latitude": -1.286389, - "Longitude": 36.817222, - "Nodes": [ - { - "Name": "25c", - "RegionID": 25, - "HostName": "derp25c.tailscale.com", - "IPv4": "102.67.167.37", - "IPv6": "2c0f:edb0:2000:1::2c7", - "CanPort80": true - }, - { - "Name": "25d", - "RegionID": 25, - "HostName": "derp25d.tailscale.com", - "IPv4": "102.67.167.188", - "IPv6": "2c0f:edb0:2000:1::188", - "CanPort80": true - }, - { - "Name": "25b", - "RegionID": 25, - "HostName": "derp25b.tailscale.com", - "IPv4": "102.67.167.245", - "IPv6": "2c0f:edb0:2000:1::2e9", - "CanPort80": true - } - ] - }, - "26": { - "RegionID": 26, - "RegionCode": "nue", - "RegionName": "Nuremberg", - "Latitude": 49.453889, - "Longitude": 11.0775, - "Nodes": [ - { - "Name": "26c", - "RegionID": 26, - "HostName": "derp26c.tailscale.com", - "IPv4": "49.12.193.137", - "IPv6": "2a01:4f8:1c1c:5c70::1", - "CanPort80": true - }, - { - "Name": "26d", - "RegionID": 26, - "HostName": "derp26d.tailscale.com", - "IPv4": "49.13.204.141", - "IPv6": "2a01:4f8:1c0c:7d06::1", - "CanPort80": true - }, - { - "Name": "26b", - "RegionID": 26, - "HostName": "derp26b.tailscale.com", - "IPv4": "167.235.72.200", - "IPv6": "2a01:4f8:1c1c:47b6::1", - "CanPort80": true - } - ] - }, - "27": { - "RegionID": 27, - "RegionCode": "iad", - "RegionName": "Ashburn", - "Latitude": 39.03, - "Longitude": -77.471111, - "Nodes": [ - { - "Name": "27d", - "RegionID": 27, - "HostName": "derp27d.tailscale.com", - "IPv4": "178.156.152.106", - "IPv6": "2a01:4ff:f0:3c8e::1", - "CanPort80": true - }, - { - "Name": "27c", - "RegionID": 27, - "HostName": "derp27c.tailscale.com", - "IPv4": "178.156.152.91", - "IPv6": "2a01:4ff:f0:3913::1", - "CanPort80": true - }, - { - "Name": "27e", - "RegionID": 27, - "HostName": "derp27e.tailscale.com", - "IPv4": "178.156.134.232", - "IPv6": "2a01:4ff:f0:28d4::1", - "CanPort80": true - }, - { - "Name": "27b", - "RegionID": 27, - "HostName": "derp27b.tailscale.com", - "IPv4": "5.161.218.233", - "IPv6": "2a01:4ff:f0:3db9::1", - "CanPort80": true - } - ] - }, - "28": { - "RegionID": 28, - "RegionCode": "hel", - "RegionName": "Helsinki", - "Latitude": 60.170833, - "Longitude": 24.9375, - "Nodes": [ - { - "Name": "28c", - "RegionID": 28, - "HostName": "derp28c.tailscale.com", - "IPv4": "95.217.2.165", - "IPv6": "2a01:4f9:c012:cd74::1", - "CanPort80": true - }, - { - "Name": "28d", - "RegionID": 28, - "HostName": "derp28d.tailscale.com", - "IPv4": "157.180.28.32", - "IPv6": "2a01:4f9:c012:2e5b::1", - "CanPort80": true - }, - { - "Name": "28b", - "RegionID": 28, - "HostName": "derp28b.tailscale.com", - "IPv4": "65.109.143.62", - "IPv6": "2a01:4f9:c012:d55c::1", - "CanPort80": true - } - ] - }, - "3": { - "RegionID": 3, - "RegionCode": "sin", - "RegionName": "Singapore", - "Latitude": 1.3521, - "Longitude": 103.8198, - "Nodes": [ - { - "Name": "3g", - "RegionID": 3, - "HostName": "derp3g.tailscale.com", - "IPv4": "172.237.72.79", - "IPv6": "2600:3c15::2000:adff:fe08:6fab", - "CanPort80": true - }, - { - "Name": "3f", - "RegionID": 3, - "HostName": "derp3f.tailscale.com", - "IPv4": "172.237.72.8", - "IPv6": "2600:3c15::2000:53ff:fe48:a668", - "CanPort80": true - }, - { - "Name": "3h", - "RegionID": 3, - "HostName": "derp3h.tailscale.com", - "IPv4": "172.237.66.30", - "IPv6": "2600:3c15::2000:3dff:fe44:50aa", - "CanPort80": true - }, - { - "Name": "3e", - "RegionID": 3, - "HostName": "derp3e.tailscale.com", - "IPv4": "172.237.72.43", - "IPv6": "2600:3c15::2000:6cff:fee4:d799", - "CanPort80": true - } - ] - }, - "4": { - "RegionID": 4, - "RegionCode": "fra", - "RegionName": "Frankfurt", - "Latitude": 50.1109, - "Longitude": 8.6821, - "Nodes": [ - { - "Name": "4h", - "RegionID": 4, - "HostName": "derp4h.tailscale.com", - "IPv4": "185.40.234.77", - "IPv6": "2a00:dd80:20::bcf", - "CanPort80": true - }, - { - "Name": "4g", - "RegionID": 4, - "HostName": "derp4g.tailscale.com", - "IPv4": "185.40.234.113", - "IPv6": "2a00:dd80:20::8f", - "CanPort80": true - }, - { - "Name": "4i", - "RegionID": 4, - "HostName": "derp4i.tailscale.com", - "IPv4": "185.40.234.53", - "IPv6": "2a00:dd80:20::8a6", - "CanPort80": true - }, - { - "Name": "4f", - "RegionID": 4, - "HostName": "derp4f.tailscale.com", - "IPv4": "185.40.234.219", - "IPv6": "2a00:dd80:20::a25", - "CanPort80": true - } - ] - }, - "5": { - "RegionID": 5, - "RegionCode": "syd", - "RegionName": "Sydney", - "Latitude": -33.867778, - "Longitude": 151.21, - "Nodes": [ - { - "Name": "5f", - "RegionID": 5, - "HostName": "derp5f.tailscale.com", - "IPv4": "172.105.166.103", - "IPv6": "2400:8907::2000:ccff:fe1f:80da", - "CanPort80": true - }, - { - "Name": "5g", - "RegionID": 5, - "HostName": "derp5g.tailscale.com", - "IPv4": "172.105.169.57", - "IPv6": "2400:8907::2000:2fff:fea7:57f4", - "CanPort80": true - }, - { - "Name": "5e", - "RegionID": 5, - "HostName": "derp5e.tailscale.com", - "IPv4": "172.105.179.230", - "IPv6": "2400:8907::2000:ceff:fe8d:4f4e", - "CanPort80": true - } - ] - }, - "6": { - "RegionID": 6, - "RegionCode": "blr", - "RegionName": "Bengaluru", - "Latitude": 12.9716, - "Longitude": 77.5946, - "Nodes": [ - { - "Name": "6a", - "RegionID": 6, - "HostName": "derp6.tailscale.com", - "IPv4": "68.183.90.120", - "IPv6": "2400:6180:100:d0::982:d001", - "CanPort80": true - } - ] - }, - "7": { - "RegionID": 7, - "RegionCode": "tok", - "RegionName": "Tokyo", - "Latitude": 35.6764, - "Longitude": 139.65, - "Nodes": [ - { - "Name": "7g", - "RegionID": 7, - "HostName": "derp7g.tailscale.com", - "IPv4": "172.238.6.179", - "IPv6": "2600:3c18::2000:3fff:fe80:3ebd", - "CanPort80": true - }, - { - "Name": "7f", - "RegionID": 7, - "HostName": "derp7f.tailscale.com", - "IPv4": "172.238.6.34", - "IPv6": "2600:3c18::2000:acff:fe8e:3ed5", - "CanPort80": true - }, - { - "Name": "7h", - "RegionID": 7, - "HostName": "derp7h.tailscale.com", - "IPv4": "172.237.28.183", - "IPv6": "2600:3c18::2000:b1ff:fea9:4560", - "CanPort80": true - }, - { - "Name": "7e", - "RegionID": 7, - "HostName": "derp7e.tailscale.com", - "IPv4": "172.238.6.180", - "IPv6": "2600:3c18::2000:60ff:fe0f:6e83", - "STUNOnly": true, - "CanPort80": true - } - ] - }, - "8": { - "RegionID": 8, - "RegionCode": "lhr", - "RegionName": "London", - "Latitude": 51.5072, - "Longitude": 0.1276, - "Nodes": [ - { - "Name": "8f", - "RegionID": 8, - "HostName": "derp8f.tailscale.com", - "IPv4": "176.58.88.183", - "IPv6": "2a00:dd80:3a::dfa", - "CanPort80": true - }, - { - "Name": "8g", - "RegionID": 8, - "HostName": "derp8g.tailscale.com", - "IPv4": "176.58.92.254", - "IPv6": "2a00:dd80:3a::ed", - "CanPort80": true - }, - { - "Name": "8e", - "RegionID": 8, - "HostName": "derp8e.tailscale.com", - "IPv4": "176.58.92.144", - "IPv6": "2a00:dd80:3a::b33", - "CanPort80": true - } - ] - }, - "9": { - "RegionID": 9, - "RegionCode": "dfw", - "RegionName": "Dallas", - "Latitude": 32.779167, - "Longitude": -96.808889, - "Nodes": [ - { - "Name": "9e", - "RegionID": 9, - "HostName": "derp9e.tailscale.com", - "IPv4": "192.73.248.83", - "IPv6": "2607:f740:100::359", - "CanPort80": true - }, - { - "Name": "9f", - "RegionID": 9, - "HostName": "derp9f.tailscale.com", - "IPv4": "209.177.156.197", - "IPv6": "2607:f740:100::cad", - "CanPort80": true - }, - { - "Name": "9d", - "RegionID": 9, - "HostName": "derp9d.tailscale.com", - "IPv4": "209.177.156.94", - "IPv6": "2607:f740:100::c05", - "CanPort80": true - } - ] - } - } - }, - "DisplayMessages": null, - "TKAEnabled": false, - "TKAHead": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", - "Domain": "kratail2tid@passkey", - "DomainAuditLogID": "", - "UserProfiles": { - "6294409699640722": { - "ID": 6294409699640722, - "LoginName": "multi-exit-router.tail78f774.ts.net", - "DisplayName": "multi-exit-router" - } - } + "PacketFilterRules": null } }, "router-a": { - "commands": { - "packet_filter_rules": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/router-a/tailscaled.sock debug localapi POST debug-packet-filter-rules", - "packet_filter_matches": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/router-a/tailscaled.sock debug localapi POST debug-packet-filter-matches" - }, "packet_filter_rules": [ { - "SrcIPs": ["100.107.162.14", "fd7a:115c:a1e0::a237:a20e"], - "DstPorts": [{ "IP": "10.44.0.0/16", "Ports": { "First": 0, "Last": 65535 } }] + "SrcIPs": [ + "100.107.162.14", + "fd7a:115c:a1e0::a237:a20e" + ], + "DstPorts": [ + { + "IP": "10.44.0.0/16", + "Ports": { + "First": 0, + "Last": 65535 + } + } + ] } ], - "packet_filter_matches": [ - { - "IPProto": [6, 17, 1, 58], - "Srcs": ["100.107.162.14/32", "fd7a:115c:a1e0::a237:a20e/128"], - "SrcCaps": null, - "Dsts": [{ "Net": "10.44.0.0/16", "Ports": { "First": 0, "Last": 65535 } }], - "Caps": [] - } - ], - "whois": { - "100.124.195.93": { - "peer_name": "exit-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/router-a/tailscaled.sock whois --json 100.124.195.93", - "response": null - }, - "100.116.18.24": { - "peer_name": "exit-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/router-a/tailscaled.sock whois --json 100.116.18.24", - "response": null - }, - "100.85.66.106": { - "peer_name": "exit-node", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/router-a/tailscaled.sock whois --json 100.85.66.106", - "response": null - }, - "100.107.162.14": { - "peer_name": "group-a-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/router-a/tailscaled.sock whois --json 100.107.162.14", - "response": { - "Node": { - "ID": 6999435610919250, - "StableID": "nyckVfJ4fw11CNTRL", - "Name": "group-a-client.tail78f774.ts.net.", - "User": 1260082990019555, - "Key": "nodekey:802726716bd4942fceb5e444218c930040fadb082698b57ea3eb59a6a26ba20d", - "DiscoKey": "discokey:bc93c2d3b81606e44eb1c96d721e7cd73c9497aa7d3efbe2f5e0d1e2e95b190f", - "Addresses": ["100.107.162.14/32", "fd7a:115c:a1e0::a237:a20e/128"], - "AllowedIPs": ["100.107.162.14/32", "fd7a:115c:a1e0::a237:a20e/128"], - "Endpoints": ["77.164.248.136:51980", "10.65.0.27:51980", "172.17.0.1:51980"], - "HomeDERP": 14, - "Hostinfo": { - "OS": "linux", - "Hostname": "group-a-client", - "Services": [ - { "Proto": "peerapi4", "Port": 36543 }, - { "Proto": "peerapi6", "Port": 36543 } - ] - }, - "Created": "2026-03-28T10:38:04.339428828Z", - "Cap": 131, - "Tags": ["tag:group-a"], - "Online": true, - "ComputedName": "group-a-client", - "ComputedNameWithHost": "group-a-client" - }, - "UserProfile": { "ID": 1260082990019555, "LoginName": "tagged-devices", "DisplayName": "Tagged Devices" }, - "CapMap": null - } - }, - "100.77.135.18": { - "peer_name": "group-b-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/router-a/tailscaled.sock whois --json 100.77.135.18", - "response": null - }, - "100.105.127.107": { - "peer_name": "multi-exit-router", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/router-a/tailscaled.sock whois --json 100.105.127.107", - "response": null - }, - "100.65.172.123": { - "peer_name": "router-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/router-a/tailscaled.sock whois --json 100.65.172.123", - "response": null - }, - "100.92.142.61": { - "peer_name": "subnet-router", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/router-a/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/router-a/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/router-a/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/router-a/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/router-a/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/router-a/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/router-a/tailscaled.sock whois --json 100.90.199.68", - "response": null - } - }, "netmap": { - "SelfNode": { - "ID": 50590507314324, - "StableID": "n3kktkvuP111CNTRL", - "Name": "router-a.tail78f774.ts.net.", - "User": 50590507314324, - "Key": "nodekey:b4566fef38b3b2b15684fc8890f5fbaea4525b467825f57a02801969a5ed2b7b", - "DiscoKey": "discokey:368ba711a8394633b4626eb7cd8e6a2df90d8e554505dc032ea9658ceee0f731", - "Addresses": ["100.109.43.124/32", "fd7a:115c:a1e0::a537:2b7c/128"], - "AllowedIPs": ["100.109.43.124/32", "fd7a:115c:a1e0::a537:2b7c/128", "10.44.0.0/16"], - "Endpoints": ["77.164.248.136:34130", "10.65.0.27:34130", "172.17.0.1:34130"], - "Hostinfo": { - "Hostname": "router-a", - "RoutableIPs": ["10.44.0.0/16"], - "RequestTags": ["tag:router-a"], - "Services": [ - { "Proto": "peerapi4", "Port": 49439 }, - { "Proto": "peerapi6", "Port": 49439 }, - { "Proto": "peerapi-dns-proxy", "Port": 1 } - ] - }, - "Created": "2026-03-28T10:38:11.734910312Z", - "Tags": ["tag:router-a"], - "PrimaryRoutes": ["10.44.0.0/16"], - "MachineAuthorized": true, - "CapMap": { - "https://tailscale.com/cap/file-sharing": null, - "https://tailscale.com/cap/is-owner": null, - "https://tailscale.com/cap/ssh": null, - "https://tailscale.com/cap/tailnet-lock": null, - "probe-udp-lifetime": null, - "ssh-behavior-v1": null, - "ssh-env-vars": null, - "store-appc-routes": null, - "tailnet-display-name": ["kratail2tid@passkey"] - }, - "ComputedName": "router-a", - "ComputedNameWithHost": "router-a" - }, - "AllCaps": [ - "https://tailscale.com/cap/is-owner", - "ssh-behavior-v1", - "ssh-env-vars", - "https://tailscale.com/cap/ssh", - "https://tailscale.com/cap/tailnet-lock", - "probe-udp-lifetime", - "store-appc-routes", - "tailnet-display-name", - "https://tailscale.com/cap/file-sharing" - ], - "NodeKey": "nodekey:b4566fef38b3b2b15684fc8890f5fbaea4525b467825f57a02801969a5ed2b7b", - "MachineKey": "mkey:868ba8a45654990c1c153c5ce33ef50ddd8d769841335e42decda4462d1dcf4e", "Peers": [ { - "ID": 6999435610919250, - "StableID": "nyckVfJ4fw11CNTRL", "Name": "group-a-client.tail78f774.ts.net.", - "User": 1260082990019555, - "Key": "nodekey:802726716bd4942fceb5e444218c930040fadb082698b57ea3eb59a6a26ba20d", - "DiscoKey": "discokey:bc93c2d3b81606e44eb1c96d721e7cd73c9497aa7d3efbe2f5e0d1e2e95b190f", - "Addresses": ["100.107.162.14/32", "fd7a:115c:a1e0::a237:a20e/128"], - "AllowedIPs": ["100.107.162.14/32", "fd7a:115c:a1e0::a237:a20e/128"], - "Endpoints": ["77.164.248.136:51980", "10.65.0.27:51980", "172.17.0.1:51980"], - "HomeDERP": 14, - "Hostinfo": { - "OS": "linux", - "Hostname": "group-a-client", - "Services": [ - { "Proto": "peerapi4", "Port": 36543 }, - { "Proto": "peerapi6", "Port": 36543 } - ] - }, - "Created": "2026-03-28T10:38:04.339428828Z", - "Cap": 131, - "Tags": ["tag:group-a"], - "Online": true, - "ComputedName": "group-a-client", - "ComputedNameWithHost": "group-a-client" - } - ], - "DNS": { - "Routes": { - "tail78f774.ts.net.": null, - "ts.net.": [{ "Addr": "199.247.155.53" }, { "Addr": "2620:111:8007::53" }] - }, - "Domains": ["tail78f774.ts.net"], - "Proxied": true, - "ExitNodeFilteredSet": [".ts.net", ".tailscale.net"] - }, - "PacketFilter": [ - { - "IPProto": [6, 17, 1, 58], - "Srcs": ["100.107.162.14/32", "fd7a:115c:a1e0::a237:a20e/128"], - "SrcCaps": null, - "Dsts": [{ "Net": "10.44.0.0/16", "Ports": { "First": 0, "Last": 65535 } }], - "Caps": [] + "AllowedIPs": [ + "100.107.162.14/32", + "fd7a:115c:a1e0::a237:a20e/128" + ], + "PrimaryRoutes": [] } ], "PacketFilterRules": [ { - "SrcIPs": ["100.107.162.14", "fd7a:115c:a1e0::a237:a20e"], - "DstPorts": [{ "IP": "10.44.0.0/16", "Ports": { "First": 0, "Last": 65535 } }] + "SrcIPs": [ + "100.107.162.14", + "fd7a:115c:a1e0::a237:a20e" + ], + "DstPorts": [ + { + "IP": "10.44.0.0/16", + "Ports": { + "First": 0, + "Last": 65535 + } + } + ] } - ], - "SSHPolicy": { "rules": [] }, - "CollectServices": false, - "DERPMap": { - "Regions": { - "1": { - "RegionID": 1, - "RegionCode": "nyc", - "RegionName": "New York City", - "Latitude": 40.7128, - "Longitude": -74.006, - "Nodes": [ - { - "Name": "1h", - "RegionID": 1, - "HostName": "derp1h.tailscale.com", - "IPv4": "199.38.181.93", - "IPv6": "2607:f740:f::afd", - "CanPort80": true - }, - { - "Name": "1g", - "RegionID": 1, - "HostName": "derp1g.tailscale.com", - "IPv4": "209.177.145.120", - "IPv6": "2607:f740:f::3eb", - "CanPort80": true - }, - { - "Name": "1i", - "RegionID": 1, - "HostName": "derp1i.tailscale.com", - "IPv4": "199.38.181.103", - "IPv6": "2607:f740:f::e19", - "CanPort80": true - }, - { - "Name": "1f", - "RegionID": 1, - "HostName": "derp1f.tailscale.com", - "IPv4": "199.38.181.104", - "IPv6": "2607:f740:f::bc", - "CanPort80": true - } - ] - }, - "10": { - "RegionID": 10, - "RegionCode": "sea", - "RegionName": "Seattle", - "Latitude": 47.609722, - "Longitude": -122.333056, - "Nodes": [ - { - "Name": "10c", - "RegionID": 10, - "HostName": "derp10c.tailscale.com", - "IPv4": "192.73.240.121", - "IPv6": "2607:f740:14::40c", - "CanPort80": true - }, - { - "Name": "10d", - "RegionID": 10, - "HostName": "derp10d.tailscale.com", - "IPv4": "192.73.240.132", - "IPv6": "2607:f740:14::500", - "CanPort80": true - }, - { - "Name": "10b", - "RegionID": 10, - "HostName": "derp10b.tailscale.com", - "IPv4": "192.73.240.161", - "IPv6": "2607:f740:14::61c", - "CanPort80": true - } - ] - }, - "11": { - "RegionID": 11, - "RegionCode": "sao", - "RegionName": "São Paulo", - "Latitude": -23.55, - "Longitude": -46.633333, - "Nodes": [ - { - "Name": "11f", - "RegionID": 11, - "HostName": "derp11f.tailscale.com", - "IPv4": "172.237.61.197", - "IPv6": "2600:3c0d::2000:3bff:fe44:6166", - "CanPort80": true - }, - { - "Name": "11g", - "RegionID": 11, - "HostName": "derp11g.tailscale.com", - "IPv4": "172.237.61.190", - "IPv6": "2600:3c0d::2000:62ff:febe:2e67", - "CanPort80": true - }, - { - "Name": "11e", - "RegionID": 11, - "HostName": "derp11e.tailscale.com", - "IPv4": "172.237.61.194", - "IPv6": "2600:3c0d::2000:d2ff:fe43:1790", - "CanPort80": true - } - ] - }, - "12": { - "RegionID": 12, - "RegionCode": "ord", - "RegionName": "Chicago", - "Latitude": 41.881944, - "Longitude": -87.627778, - "Nodes": [ - { - "Name": "12e", - "RegionID": 12, - "HostName": "derp12e.tailscale.com", - "IPv4": "209.177.158.15", - "IPv6": "2607:f740:e::b17", - "CanPort80": true - }, - { - "Name": "12f", - "RegionID": 12, - "HostName": "derp12f.tailscale.com", - "IPv4": "199.38.182.118", - "IPv6": "2607:f740:e::4c8", - "CanPort80": true - }, - { - "Name": "12d", - "RegionID": 12, - "HostName": "derp12d.tailscale.com", - "IPv4": "209.177.158.246", - "IPv6": "2607:f740:e::811", - "CanPort80": true - } - ] - }, - "13": { - "RegionID": 13, - "RegionCode": "den", - "RegionName": "Denver", - "Latitude": 39.7392, - "Longitude": -104.9849, - "Nodes": [ - { - "Name": "13c", - "RegionID": 13, - "HostName": "derp13c.tailscale.com", - "IPv4": "192.73.242.28", - "IPv6": "2607:f740:16::5c", - "CanPort80": true - }, - { - "Name": "13d", - "RegionID": 13, - "HostName": "derp13d.tailscale.com", - "IPv4": "192.73.242.204", - "IPv6": "2607:f740:16::c23", - "CanPort80": true - }, - { - "Name": "13b", - "RegionID": 13, - "HostName": "derp13b.tailscale.com", - "IPv4": "192.73.242.187", - "IPv6": "2607:f740:16::640", - "CanPort80": true - } - ] - }, - "14": { - "RegionID": 14, - "RegionCode": "ams", - "RegionName": "Amsterdam", - "Latitude": 52.372778, - "Longitude": 4.893611, - "Nodes": [ - { - "Name": "14c", - "RegionID": 14, - "HostName": "derp14c.tailscale.com", - "IPv4": "176.58.93.147", - "IPv6": "2a00:dd80:3c::b09", - "CanPort80": true - }, - { - "Name": "14d", - "RegionID": 14, - "HostName": "derp14d.tailscale.com", - "IPv4": "176.58.93.154", - "IPv6": "2a00:dd80:3c::3d5", - "CanPort80": true - }, - { - "Name": "14b", - "RegionID": 14, - "HostName": "derp14b.tailscale.com", - "IPv4": "176.58.93.248", - "IPv6": "2a00:dd80:3c::807", - "CanPort80": true - } - ] - }, - "15": { - "RegionID": 15, - "RegionCode": "jnb", - "RegionName": "Johannesburg", - "Latitude": -26.204444, - "Longitude": 28.045556, - "Nodes": [ - { - "Name": "15c", - "RegionID": 15, - "HostName": "derp15c.tailscale.com", - "IPv4": "102.67.165.185", - "IPv6": "2c0f:edb0:0:10::b59", - "CanPort80": true - }, - { - "Name": "15d", - "RegionID": 15, - "HostName": "derp15d.tailscale.com", - "IPv4": "102.67.165.36", - "IPv6": "2c0f:edb0:0:10::599", - "CanPort80": true - }, - { - "Name": "15b", - "RegionID": 15, - "HostName": "derp15b.tailscale.com", - "IPv4": "102.67.165.90", - "IPv6": "2c0f:edb0:0:10::963", - "CanPort80": true - } - ] - }, - "16": { - "RegionID": 16, - "RegionCode": "mia", - "RegionName": "Miami", - "Latitude": 25.78, - "Longitude": -80.21, - "Nodes": [ - { - "Name": "16c", - "RegionID": 16, - "HostName": "derp16c.tailscale.com", - "IPv4": "192.73.243.229", - "IPv6": "2607:f740:17::4e4", - "CanPort80": true - }, - { - "Name": "16d", - "RegionID": 16, - "HostName": "derp16d.tailscale.com", - "IPv4": "192.73.243.141", - "IPv6": "2607:f740:17::475", - "CanPort80": true - }, - { - "Name": "16b", - "RegionID": 16, - "HostName": "derp16b.tailscale.com", - "IPv4": "192.73.243.135", - "IPv6": "2607:f740:17::476", - "CanPort80": true - } - ] - }, - "17": { - "RegionID": 17, - "RegionCode": "lax", - "RegionName": "Los Angeles", - "Latitude": 34.05, - "Longitude": -118.25, - "Nodes": [ - { - "Name": "17c", - "RegionID": 17, - "HostName": "derp17c.tailscale.com", - "IPv4": "208.111.40.12", - "IPv6": "2607:f740:c::10", - "CanPort80": true - }, - { - "Name": "17d", - "RegionID": 17, - "HostName": "derp17d.tailscale.com", - "IPv4": "208.111.40.216", - "IPv6": "2607:f740:c::e1b", - "CanPort80": true - }, - { - "Name": "17b", - "RegionID": 17, - "HostName": "derp17b.tailscale.com", - "IPv4": "192.73.244.245", - "IPv6": "2607:f740:c::646", - "CanPort80": true - } - ] - }, - "18": { - "RegionID": 18, - "RegionCode": "par", - "RegionName": "Paris", - "Latitude": 48.856667, - "Longitude": 2.352222, - "Nodes": [ - { - "Name": "18c", - "RegionID": 18, - "HostName": "derp18c.tailscale.com", - "IPv4": "176.58.90.207", - "IPv6": "2a00:dd80:3e::c19", - "CanPort80": true - }, - { - "Name": "18d", - "RegionID": 18, - "HostName": "derp18d.tailscale.com", - "IPv4": "176.58.90.104", - "IPv6": "2a00:dd80:3e::f2e", - "CanPort80": true - }, - { - "Name": "18b", - "RegionID": 18, - "HostName": "derp18b.tailscale.com", - "IPv4": "176.58.90.147", - "IPv6": "2a00:dd80:3e::363", - "CanPort80": true - } - ] - }, - "19": { - "RegionID": 19, - "RegionCode": "mad", - "RegionName": "Madrid", - "Latitude": 40.416944, - "Longitude": -3.703333, - "Nodes": [ - { - "Name": "19c", - "RegionID": 19, - "HostName": "derp19c.tailscale.com", - "IPv4": "45.159.97.61", - "IPv6": "2a00:dd80:14:10::20", - "CanPort80": true - }, - { - "Name": "19d", - "RegionID": 19, - "HostName": "derp19d.tailscale.com", - "IPv4": "45.159.97.233", - "IPv6": "2a00:dd80:14:10::34a", - "CanPort80": true - }, - { - "Name": "19b", - "RegionID": 19, - "HostName": "derp19b.tailscale.com", - "IPv4": "45.159.97.144", - "IPv6": "2a00:dd80:14:10::335", - "CanPort80": true - } - ] - }, - "2": { - "RegionID": 2, - "RegionCode": "sfo", - "RegionName": "San Francisco", - "Latitude": 37.7775, - "Longitude": -122.416389, - "Nodes": [ - { - "Name": "2e", - "RegionID": 2, - "HostName": "derp2e.tailscale.com", - "IPv4": "192.73.252.134", - "IPv6": "2607:f740:0:3f::44c", - "CanPort80": true - }, - { - "Name": "2f", - "RegionID": 2, - "HostName": "derp2f.tailscale.com", - "IPv4": "208.111.34.178", - "IPv6": "2607:f740:0:3f::f4", - "CanPort80": true - }, - { - "Name": "2d", - "RegionID": 2, - "HostName": "derp2d.tailscale.com", - "IPv4": "192.73.252.65", - "IPv6": "2607:f740:0:3f::287", - "CanPort80": true - } - ] - }, - "20": { - "RegionID": 20, - "RegionCode": "hkg", - "RegionName": "Hong Kong", - "Latitude": 22.3193, - "Longitude": 114.1694, - "Nodes": [ - { - "Name": "20c", - "RegionID": 20, - "HostName": "derp20c.tailscale.com", - "IPv4": "205.147.105.30", - "IPv6": "2403:2500:8000:1::5fb", - "CanPort80": true - }, - { - "Name": "20d", - "RegionID": 20, - "HostName": "derp20d.tailscale.com", - "IPv4": "205.147.105.78", - "IPv6": "2403:2500:8000:1::e9a", - "CanPort80": true - }, - { - "Name": "20b", - "RegionID": 20, - "HostName": "derp20b.tailscale.com", - "IPv4": "103.6.84.152", - "IPv6": "2403:2500:8000:1::ef6", - "CanPort80": true - } - ] - }, - "21": { - "RegionID": 21, - "RegionCode": "tor", - "RegionName": "Toronto", - "Latitude": 43.741667, - "Longitude": -79.373333, - "Nodes": [ - { - "Name": "21c", - "RegionID": 21, - "HostName": "derp21c.tailscale.com", - "IPv4": "162.248.221.215", - "IPv6": "2607:f740:50::f10", - "CanPort80": true - }, - { - "Name": "21d", - "RegionID": 21, - "HostName": "derp21d.tailscale.com", - "IPv4": "162.248.221.248", - "IPv6": "2607:f740:50::ca4", - "CanPort80": true - }, - { - "Name": "21b", - "RegionID": 21, - "HostName": "derp21b.tailscale.com", - "IPv4": "162.248.221.199", - "IPv6": "2607:f740:50::1d1", - "CanPort80": true - } - ] - }, - "22": { - "RegionID": 22, - "RegionCode": "waw", - "RegionName": "Warsaw", - "Latitude": 52.23, - "Longitude": 21.011111, - "Nodes": [ - { - "Name": "22c", - "RegionID": 22, - "HostName": "derp22c.tailscale.com", - "IPv4": "45.159.98.253", - "IPv6": "2a00:dd80:40:100::3f", - "CanPort80": true - }, - { - "Name": "22d", - "RegionID": 22, - "HostName": "derp22d.tailscale.com", - "IPv4": "45.159.98.145", - "IPv6": "2a00:dd80:40:100::211", - "CanPort80": true - }, - { - "Name": "22b", - "RegionID": 22, - "HostName": "derp22b.tailscale.com", - "IPv4": "45.159.98.196", - "IPv6": "2a00:dd80:40:100::316", - "CanPort80": true - } - ] - }, - "23": { - "RegionID": 23, - "RegionCode": "dbi", - "RegionName": "Dubai", - "Latitude": 25.263056, - "Longitude": 55.297222, - "Nodes": [ - { - "Name": "23c", - "RegionID": 23, - "HostName": "derp23c.tailscale.com", - "IPv4": "185.34.3.207", - "IPv6": "2a00:dd80:3f:100::a50", - "CanPort80": true - }, - { - "Name": "23d", - "RegionID": 23, - "HostName": "derp23d.tailscale.com", - "IPv4": "185.34.3.75", - "IPv6": "2a00:dd80:3f:100::97e", - "CanPort80": true - }, - { - "Name": "23b", - "RegionID": 23, - "HostName": "derp23b.tailscale.com", - "IPv4": "185.34.3.232", - "IPv6": "2a00:dd80:3f:100::76f", - "CanPort80": true - } - ] - }, - "24": { - "RegionID": 24, - "RegionCode": "hnl", - "RegionName": "Honolulu", - "Latitude": 21.306944, - "Longitude": -157.858333, - "Nodes": [ - { - "Name": "24c", - "RegionID": 24, - "HostName": "derp24c.tailscale.com", - "IPv4": "208.83.233.233", - "IPv6": "2001:19f0:c000:c591:5400:04ff:fe26:2c5f", - "CanPort80": true - }, - { - "Name": "24d", - "RegionID": 24, - "HostName": "derp24d.tailscale.com", - "IPv4": "208.72.155.133", - "IPv6": "2001:19f0:c000:c564:5400:04ff:fe26:2ba8", - "CanPort80": true - }, - { - "Name": "24b", - "RegionID": 24, - "HostName": "derp24b.tailscale.com", - "IPv4": "208.83.234.151", - "IPv6": "2001:19f0:c000:c586:5400:04ff:fe26:2ba6", - "CanPort80": true - } - ] - }, - "25": { - "RegionID": 25, - "RegionCode": "nai", - "RegionName": "Nairobi", - "Latitude": -1.286389, - "Longitude": 36.817222, - "Nodes": [ - { - "Name": "25c", - "RegionID": 25, - "HostName": "derp25c.tailscale.com", - "IPv4": "102.67.167.37", - "IPv6": "2c0f:edb0:2000:1::2c7", - "CanPort80": true - }, - { - "Name": "25d", - "RegionID": 25, - "HostName": "derp25d.tailscale.com", - "IPv4": "102.67.167.188", - "IPv6": "2c0f:edb0:2000:1::188", - "CanPort80": true - }, - { - "Name": "25b", - "RegionID": 25, - "HostName": "derp25b.tailscale.com", - "IPv4": "102.67.167.245", - "IPv6": "2c0f:edb0:2000:1::2e9", - "CanPort80": true - } - ] - }, - "26": { - "RegionID": 26, - "RegionCode": "nue", - "RegionName": "Nuremberg", - "Latitude": 49.453889, - "Longitude": 11.0775, - "Nodes": [ - { - "Name": "26c", - "RegionID": 26, - "HostName": "derp26c.tailscale.com", - "IPv4": "49.12.193.137", - "IPv6": "2a01:4f8:1c1c:5c70::1", - "CanPort80": true - }, - { - "Name": "26d", - "RegionID": 26, - "HostName": "derp26d.tailscale.com", - "IPv4": "49.13.204.141", - "IPv6": "2a01:4f8:1c0c:7d06::1", - "CanPort80": true - }, - { - "Name": "26b", - "RegionID": 26, - "HostName": "derp26b.tailscale.com", - "IPv4": "167.235.72.200", - "IPv6": "2a01:4f8:1c1c:47b6::1", - "CanPort80": true - } - ] - }, - "27": { - "RegionID": 27, - "RegionCode": "iad", - "RegionName": "Ashburn", - "Latitude": 39.03, - "Longitude": -77.471111, - "Nodes": [ - { - "Name": "27d", - "RegionID": 27, - "HostName": "derp27d.tailscale.com", - "IPv4": "178.156.152.106", - "IPv6": "2a01:4ff:f0:3c8e::1", - "CanPort80": true - }, - { - "Name": "27c", - "RegionID": 27, - "HostName": "derp27c.tailscale.com", - "IPv4": "178.156.152.91", - "IPv6": "2a01:4ff:f0:3913::1", - "CanPort80": true - }, - { - "Name": "27e", - "RegionID": 27, - "HostName": "derp27e.tailscale.com", - "IPv4": "178.156.134.232", - "IPv6": "2a01:4ff:f0:28d4::1", - "CanPort80": true - }, - { - "Name": "27b", - "RegionID": 27, - "HostName": "derp27b.tailscale.com", - "IPv4": "5.161.218.233", - "IPv6": "2a01:4ff:f0:3db9::1", - "CanPort80": true - } - ] - }, - "28": { - "RegionID": 28, - "RegionCode": "hel", - "RegionName": "Helsinki", - "Latitude": 60.170833, - "Longitude": 24.9375, - "Nodes": [ - { - "Name": "28c", - "RegionID": 28, - "HostName": "derp28c.tailscale.com", - "IPv4": "95.217.2.165", - "IPv6": "2a01:4f9:c012:cd74::1", - "CanPort80": true - }, - { - "Name": "28d", - "RegionID": 28, - "HostName": "derp28d.tailscale.com", - "IPv4": "157.180.28.32", - "IPv6": "2a01:4f9:c012:2e5b::1", - "CanPort80": true - }, - { - "Name": "28b", - "RegionID": 28, - "HostName": "derp28b.tailscale.com", - "IPv4": "65.109.143.62", - "IPv6": "2a01:4f9:c012:d55c::1", - "CanPort80": true - } - ] - }, - "3": { - "RegionID": 3, - "RegionCode": "sin", - "RegionName": "Singapore", - "Latitude": 1.3521, - "Longitude": 103.8198, - "Nodes": [ - { - "Name": "3g", - "RegionID": 3, - "HostName": "derp3g.tailscale.com", - "IPv4": "172.237.72.79", - "IPv6": "2600:3c15::2000:adff:fe08:6fab", - "CanPort80": true - }, - { - "Name": "3f", - "RegionID": 3, - "HostName": "derp3f.tailscale.com", - "IPv4": "172.237.72.8", - "IPv6": "2600:3c15::2000:53ff:fe48:a668", - "CanPort80": true - }, - { - "Name": "3h", - "RegionID": 3, - "HostName": "derp3h.tailscale.com", - "IPv4": "172.237.66.30", - "IPv6": "2600:3c15::2000:3dff:fe44:50aa", - "CanPort80": true - }, - { - "Name": "3e", - "RegionID": 3, - "HostName": "derp3e.tailscale.com", - "IPv4": "172.237.72.43", - "IPv6": "2600:3c15::2000:6cff:fee4:d799", - "CanPort80": true - } - ] - }, - "4": { - "RegionID": 4, - "RegionCode": "fra", - "RegionName": "Frankfurt", - "Latitude": 50.1109, - "Longitude": 8.6821, - "Nodes": [ - { - "Name": "4h", - "RegionID": 4, - "HostName": "derp4h.tailscale.com", - "IPv4": "185.40.234.77", - "IPv6": "2a00:dd80:20::bcf", - "CanPort80": true - }, - { - "Name": "4g", - "RegionID": 4, - "HostName": "derp4g.tailscale.com", - "IPv4": "185.40.234.113", - "IPv6": "2a00:dd80:20::8f", - "CanPort80": true - }, - { - "Name": "4i", - "RegionID": 4, - "HostName": "derp4i.tailscale.com", - "IPv4": "185.40.234.53", - "IPv6": "2a00:dd80:20::8a6", - "CanPort80": true - }, - { - "Name": "4f", - "RegionID": 4, - "HostName": "derp4f.tailscale.com", - "IPv4": "185.40.234.219", - "IPv6": "2a00:dd80:20::a25", - "CanPort80": true - } - ] - }, - "5": { - "RegionID": 5, - "RegionCode": "syd", - "RegionName": "Sydney", - "Latitude": -33.867778, - "Longitude": 151.21, - "Nodes": [ - { - "Name": "5f", - "RegionID": 5, - "HostName": "derp5f.tailscale.com", - "IPv4": "172.105.166.103", - "IPv6": "2400:8907::2000:ccff:fe1f:80da", - "CanPort80": true - }, - { - "Name": "5g", - "RegionID": 5, - "HostName": "derp5g.tailscale.com", - "IPv4": "172.105.169.57", - "IPv6": "2400:8907::2000:2fff:fea7:57f4", - "CanPort80": true - }, - { - "Name": "5e", - "RegionID": 5, - "HostName": "derp5e.tailscale.com", - "IPv4": "172.105.179.230", - "IPv6": "2400:8907::2000:ceff:fe8d:4f4e", - "CanPort80": true - } - ] - }, - "6": { - "RegionID": 6, - "RegionCode": "blr", - "RegionName": "Bengaluru", - "Latitude": 12.9716, - "Longitude": 77.5946, - "Nodes": [ - { - "Name": "6a", - "RegionID": 6, - "HostName": "derp6.tailscale.com", - "IPv4": "68.183.90.120", - "IPv6": "2400:6180:100:d0::982:d001", - "CanPort80": true - } - ] - }, - "7": { - "RegionID": 7, - "RegionCode": "tok", - "RegionName": "Tokyo", - "Latitude": 35.6764, - "Longitude": 139.65, - "Nodes": [ - { - "Name": "7g", - "RegionID": 7, - "HostName": "derp7g.tailscale.com", - "IPv4": "172.238.6.179", - "IPv6": "2600:3c18::2000:3fff:fe80:3ebd", - "CanPort80": true - }, - { - "Name": "7f", - "RegionID": 7, - "HostName": "derp7f.tailscale.com", - "IPv4": "172.238.6.34", - "IPv6": "2600:3c18::2000:acff:fe8e:3ed5", - "CanPort80": true - }, - { - "Name": "7h", - "RegionID": 7, - "HostName": "derp7h.tailscale.com", - "IPv4": "172.237.28.183", - "IPv6": "2600:3c18::2000:b1ff:fea9:4560", - "CanPort80": true - }, - { - "Name": "7e", - "RegionID": 7, - "HostName": "derp7e.tailscale.com", - "IPv4": "172.238.6.180", - "IPv6": "2600:3c18::2000:60ff:fe0f:6e83", - "STUNOnly": true, - "CanPort80": true - } - ] - }, - "8": { - "RegionID": 8, - "RegionCode": "lhr", - "RegionName": "London", - "Latitude": 51.5072, - "Longitude": 0.1276, - "Nodes": [ - { - "Name": "8f", - "RegionID": 8, - "HostName": "derp8f.tailscale.com", - "IPv4": "176.58.88.183", - "IPv6": "2a00:dd80:3a::dfa", - "CanPort80": true - }, - { - "Name": "8g", - "RegionID": 8, - "HostName": "derp8g.tailscale.com", - "IPv4": "176.58.92.254", - "IPv6": "2a00:dd80:3a::ed", - "CanPort80": true - }, - { - "Name": "8e", - "RegionID": 8, - "HostName": "derp8e.tailscale.com", - "IPv4": "176.58.92.144", - "IPv6": "2a00:dd80:3a::b33", - "CanPort80": true - } - ] - }, - "9": { - "RegionID": 9, - "RegionCode": "dfw", - "RegionName": "Dallas", - "Latitude": 32.779167, - "Longitude": -96.808889, - "Nodes": [ - { - "Name": "9e", - "RegionID": 9, - "HostName": "derp9e.tailscale.com", - "IPv4": "192.73.248.83", - "IPv6": "2607:f740:100::359", - "CanPort80": true - }, - { - "Name": "9f", - "RegionID": 9, - "HostName": "derp9f.tailscale.com", - "IPv4": "209.177.156.197", - "IPv6": "2607:f740:100::cad", - "CanPort80": true - }, - { - "Name": "9d", - "RegionID": 9, - "HostName": "derp9d.tailscale.com", - "IPv4": "209.177.156.94", - "IPv6": "2607:f740:100::c05", - "CanPort80": true - } - ] - } - } - }, - "DisplayMessages": null, - "TKAEnabled": false, - "TKAHead": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", - "Domain": "kratail2tid@passkey", - "DomainAuditLogID": "", - "UserProfiles": { - "1260082990019555": { - "ID": 1260082990019555, - "LoginName": "tagged-devices", - "DisplayName": "Tagged Devices" - }, - "50590507314324": { - "ID": 50590507314324, - "LoginName": "router-a.tail78f774.ts.net", - "DisplayName": "router-a" - } - } + ] } }, "router-b": { - "commands": { - "packet_filter_rules": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/router-b/tailscaled.sock debug localapi POST debug-packet-filter-rules", - "packet_filter_matches": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/router-b/tailscaled.sock debug localapi POST debug-packet-filter-matches" - }, "packet_filter_rules": [ { - "SrcIPs": ["100.77.135.18", "fd7a:115c:a1e0::4b37:8712"], - "DstPorts": [{ "IP": "10.55.0.0/16", "Ports": { "First": 0, "Last": 65535 } }] + "SrcIPs": [ + "100.77.135.18", + "fd7a:115c:a1e0::4b37:8712" + ], + "DstPorts": [ + { + "IP": "10.55.0.0/16", + "Ports": { + "First": 0, + "Last": 65535 + } + } + ] } ], - "packet_filter_matches": [ - { - "IPProto": [6, 17, 1, 58], - "Srcs": ["100.77.135.18/32", "fd7a:115c:a1e0::4b37:8712/128"], - "SrcCaps": null, - "Dsts": [{ "Net": "10.55.0.0/16", "Ports": { "First": 0, "Last": 65535 } }], - "Caps": [] - } - ], - "whois": { - "100.124.195.93": { - "peer_name": "exit-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/router-b/tailscaled.sock whois --json 100.124.195.93", - "response": null - }, - "100.116.18.24": { - "peer_name": "exit-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/router-b/tailscaled.sock whois --json 100.116.18.24", - "response": null - }, - "100.85.66.106": { - "peer_name": "exit-node", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/router-b/tailscaled.sock whois --json 100.85.66.106", - "response": null - }, - "100.107.162.14": { - "peer_name": "group-a-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/router-b/tailscaled.sock whois --json 100.107.162.14", - "response": null - }, - "100.77.135.18": { - "peer_name": "group-b-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/router-b/tailscaled.sock whois --json 100.77.135.18", - "response": { - "Node": { - "ID": 1008089393782498, - "StableID": "ndUwgLoZs811CNTRL", - "Name": "group-b-client.tail78f774.ts.net.", - "User": 1260082990019555, - "Key": "nodekey:ef35a655163204a08b33e09fdc24709f1e3aaa7f40de4efd5549cf014b4d8711", - "DiscoKey": "discokey:e972182cda0d0b459c91b2881624b81749a7e44390a5dde1b9bc17c1ae67715a", - "Addresses": ["100.77.135.18/32", "fd7a:115c:a1e0::4b37:8712/128"], - "AllowedIPs": ["100.77.135.18/32", "fd7a:115c:a1e0::4b37:8712/128"], - "Endpoints": ["77.164.248.136:49377", "10.65.0.27:49377", "172.17.0.1:49377"], - "HomeDERP": 14, - "Hostinfo": { - "OS": "linux", - "Hostname": "group-b-client", - "Services": [ - { "Proto": "peerapi4", "Port": 47173 }, - { "Proto": "peerapi6", "Port": 47173 } - ] - }, - "Created": "2026-03-28T10:38:08.031309668Z", - "Cap": 131, - "Tags": ["tag:group-b"], - "Online": true, - "ComputedName": "group-b-client", - "ComputedNameWithHost": "group-b-client" - }, - "UserProfile": { "ID": 1260082990019555, "LoginName": "tagged-devices", "DisplayName": "Tagged Devices" }, - "CapMap": null - } - }, - "100.105.127.107": { - "peer_name": "multi-exit-router", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/router-b/tailscaled.sock whois --json 100.105.127.107", - "response": null - }, - "100.109.43.124": { - "peer_name": "router-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/router-b/tailscaled.sock whois --json 100.109.43.124", - "response": null - }, - "100.92.142.61": { - "peer_name": "subnet-router", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/router-b/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/router-b/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/router-b/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/router-b/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/router-b/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/router-b/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/router-b/tailscaled.sock whois --json 100.90.199.68", - "response": null - } - }, "netmap": { - "SelfNode": { - "ID": 1399889648409786, - "StableID": "nPHvXBj1wB11CNTRL", - "Name": "router-b.tail78f774.ts.net.", - "User": 1399889648409786, - "Key": "nodekey:4e6d3473c516cea37bcefdf4368932c623fd91c24aee1aacc27ca8165a41ac7a", - "DiscoKey": "discokey:dd5532635b8e3ddf25186e36671c16dd17c005c8b6a6862f4b5cc4e4f459e705", - "Addresses": ["100.65.172.123/32", "fd7a:115c:a1e0::5a37:ac7c/128"], - "AllowedIPs": ["100.65.172.123/32", "fd7a:115c:a1e0::5a37:ac7c/128", "10.55.0.0/16"], - "Endpoints": ["77.164.248.136:35931", "10.65.0.27:35931", "172.17.0.1:35931"], - "Hostinfo": { - "Hostname": "router-b", - "RoutableIPs": ["10.55.0.0/16"], - "RequestTags": ["tag:router-b"], - "Services": [ - { "Proto": "peerapi4", "Port": 58804 }, - { "Proto": "peerapi6", "Port": 58804 }, - { "Proto": "peerapi-dns-proxy", "Port": 1 } - ] - }, - "Created": "2026-03-28T10:38:15.42735258Z", - "Tags": ["tag:router-b"], - "PrimaryRoutes": ["10.55.0.0/16"], - "MachineAuthorized": true, - "CapMap": { - "https://tailscale.com/cap/file-sharing": null, - "https://tailscale.com/cap/is-owner": null, - "https://tailscale.com/cap/ssh": null, - "https://tailscale.com/cap/tailnet-lock": null, - "probe-udp-lifetime": null, - "ssh-behavior-v1": null, - "ssh-env-vars": null, - "store-appc-routes": null, - "tailnet-display-name": ["kratail2tid@passkey"] - }, - "ComputedName": "router-b", - "ComputedNameWithHost": "router-b" - }, - "AllCaps": [ - "tailnet-display-name", - "probe-udp-lifetime", - "store-appc-routes", - "ssh-behavior-v1", - "https://tailscale.com/cap/ssh", - "ssh-env-vars", - "https://tailscale.com/cap/is-owner", - "https://tailscale.com/cap/tailnet-lock", - "https://tailscale.com/cap/file-sharing" - ], - "NodeKey": "nodekey:4e6d3473c516cea37bcefdf4368932c623fd91c24aee1aacc27ca8165a41ac7a", - "MachineKey": "mkey:d040ca033391d3dedae7b2ad7ec3334646cda7aeca501780bdaa37addec3c228", "Peers": [ { - "ID": 1008089393782498, - "StableID": "ndUwgLoZs811CNTRL", "Name": "group-b-client.tail78f774.ts.net.", - "User": 1260082990019555, - "Key": "nodekey:ef35a655163204a08b33e09fdc24709f1e3aaa7f40de4efd5549cf014b4d8711", - "DiscoKey": "discokey:e972182cda0d0b459c91b2881624b81749a7e44390a5dde1b9bc17c1ae67715a", - "Addresses": ["100.77.135.18/32", "fd7a:115c:a1e0::4b37:8712/128"], - "AllowedIPs": ["100.77.135.18/32", "fd7a:115c:a1e0::4b37:8712/128"], - "Endpoints": ["77.164.248.136:49377", "10.65.0.27:49377", "172.17.0.1:49377"], - "HomeDERP": 14, - "Hostinfo": { - "OS": "linux", - "Hostname": "group-b-client", - "Services": [ - { "Proto": "peerapi4", "Port": 47173 }, - { "Proto": "peerapi6", "Port": 47173 } - ] - }, - "Created": "2026-03-28T10:38:08.031309668Z", - "Cap": 131, - "Tags": ["tag:group-b"], - "Online": true, - "ComputedName": "group-b-client", - "ComputedNameWithHost": "group-b-client" - } - ], - "DNS": { - "Routes": { - "tail78f774.ts.net.": null, - "ts.net.": [{ "Addr": "199.247.155.53" }, { "Addr": "2620:111:8007::53" }] - }, - "Domains": ["tail78f774.ts.net"], - "Proxied": true, - "ExitNodeFilteredSet": [".ts.net", ".tailscale.net"] - }, - "PacketFilter": [ - { - "IPProto": [6, 17, 1, 58], - "Srcs": ["100.77.135.18/32", "fd7a:115c:a1e0::4b37:8712/128"], - "SrcCaps": null, - "Dsts": [{ "Net": "10.55.0.0/16", "Ports": { "First": 0, "Last": 65535 } }], - "Caps": [] + "AllowedIPs": [ + "100.77.135.18/32", + "fd7a:115c:a1e0::4b37:8712/128" + ], + "PrimaryRoutes": [] } ], "PacketFilterRules": [ { - "SrcIPs": ["100.77.135.18", "fd7a:115c:a1e0::4b37:8712"], - "DstPorts": [{ "IP": "10.55.0.0/16", "Ports": { "First": 0, "Last": 65535 } }] + "SrcIPs": [ + "100.77.135.18", + "fd7a:115c:a1e0::4b37:8712" + ], + "DstPorts": [ + { + "IP": "10.55.0.0/16", + "Ports": { + "First": 0, + "Last": 65535 + } + } + ] } - ], - "SSHPolicy": { "rules": [] }, - "CollectServices": false, - "DERPMap": { - "Regions": { - "1": { - "RegionID": 1, - "RegionCode": "nyc", - "RegionName": "New York City", - "Latitude": 40.7128, - "Longitude": -74.006, - "Nodes": [ - { - "Name": "1h", - "RegionID": 1, - "HostName": "derp1h.tailscale.com", - "IPv4": "199.38.181.93", - "IPv6": "2607:f740:f::afd", - "CanPort80": true - }, - { - "Name": "1g", - "RegionID": 1, - "HostName": "derp1g.tailscale.com", - "IPv4": "209.177.145.120", - "IPv6": "2607:f740:f::3eb", - "CanPort80": true - }, - { - "Name": "1i", - "RegionID": 1, - "HostName": "derp1i.tailscale.com", - "IPv4": "199.38.181.103", - "IPv6": "2607:f740:f::e19", - "CanPort80": true - }, - { - "Name": "1f", - "RegionID": 1, - "HostName": "derp1f.tailscale.com", - "IPv4": "199.38.181.104", - "IPv6": "2607:f740:f::bc", - "CanPort80": true - } - ] - }, - "10": { - "RegionID": 10, - "RegionCode": "sea", - "RegionName": "Seattle", - "Latitude": 47.609722, - "Longitude": -122.333056, - "Nodes": [ - { - "Name": "10c", - "RegionID": 10, - "HostName": "derp10c.tailscale.com", - "IPv4": "192.73.240.121", - "IPv6": "2607:f740:14::40c", - "CanPort80": true - }, - { - "Name": "10d", - "RegionID": 10, - "HostName": "derp10d.tailscale.com", - "IPv4": "192.73.240.132", - "IPv6": "2607:f740:14::500", - "CanPort80": true - }, - { - "Name": "10b", - "RegionID": 10, - "HostName": "derp10b.tailscale.com", - "IPv4": "192.73.240.161", - "IPv6": "2607:f740:14::61c", - "CanPort80": true - } - ] - }, - "11": { - "RegionID": 11, - "RegionCode": "sao", - "RegionName": "São Paulo", - "Latitude": -23.55, - "Longitude": -46.633333, - "Nodes": [ - { - "Name": "11f", - "RegionID": 11, - "HostName": "derp11f.tailscale.com", - "IPv4": "172.237.61.197", - "IPv6": "2600:3c0d::2000:3bff:fe44:6166", - "CanPort80": true - }, - { - "Name": "11g", - "RegionID": 11, - "HostName": "derp11g.tailscale.com", - "IPv4": "172.237.61.190", - "IPv6": "2600:3c0d::2000:62ff:febe:2e67", - "CanPort80": true - }, - { - "Name": "11e", - "RegionID": 11, - "HostName": "derp11e.tailscale.com", - "IPv4": "172.237.61.194", - "IPv6": "2600:3c0d::2000:d2ff:fe43:1790", - "CanPort80": true - } - ] - }, - "12": { - "RegionID": 12, - "RegionCode": "ord", - "RegionName": "Chicago", - "Latitude": 41.881944, - "Longitude": -87.627778, - "Nodes": [ - { - "Name": "12e", - "RegionID": 12, - "HostName": "derp12e.tailscale.com", - "IPv4": "209.177.158.15", - "IPv6": "2607:f740:e::b17", - "CanPort80": true - }, - { - "Name": "12f", - "RegionID": 12, - "HostName": "derp12f.tailscale.com", - "IPv4": "199.38.182.118", - "IPv6": "2607:f740:e::4c8", - "CanPort80": true - }, - { - "Name": "12d", - "RegionID": 12, - "HostName": "derp12d.tailscale.com", - "IPv4": "209.177.158.246", - "IPv6": "2607:f740:e::811", - "CanPort80": true - } - ] - }, - "13": { - "RegionID": 13, - "RegionCode": "den", - "RegionName": "Denver", - "Latitude": 39.7392, - "Longitude": -104.9849, - "Nodes": [ - { - "Name": "13c", - "RegionID": 13, - "HostName": "derp13c.tailscale.com", - "IPv4": "192.73.242.28", - "IPv6": "2607:f740:16::5c", - "CanPort80": true - }, - { - "Name": "13d", - "RegionID": 13, - "HostName": "derp13d.tailscale.com", - "IPv4": "192.73.242.204", - "IPv6": "2607:f740:16::c23", - "CanPort80": true - }, - { - "Name": "13b", - "RegionID": 13, - "HostName": "derp13b.tailscale.com", - "IPv4": "192.73.242.187", - "IPv6": "2607:f740:16::640", - "CanPort80": true - } - ] - }, - "14": { - "RegionID": 14, - "RegionCode": "ams", - "RegionName": "Amsterdam", - "Latitude": 52.372778, - "Longitude": 4.893611, - "Nodes": [ - { - "Name": "14c", - "RegionID": 14, - "HostName": "derp14c.tailscale.com", - "IPv4": "176.58.93.147", - "IPv6": "2a00:dd80:3c::b09", - "CanPort80": true - }, - { - "Name": "14d", - "RegionID": 14, - "HostName": "derp14d.tailscale.com", - "IPv4": "176.58.93.154", - "IPv6": "2a00:dd80:3c::3d5", - "CanPort80": true - }, - { - "Name": "14b", - "RegionID": 14, - "HostName": "derp14b.tailscale.com", - "IPv4": "176.58.93.248", - "IPv6": "2a00:dd80:3c::807", - "CanPort80": true - } - ] - }, - "15": { - "RegionID": 15, - "RegionCode": "jnb", - "RegionName": "Johannesburg", - "Latitude": -26.204444, - "Longitude": 28.045556, - "Nodes": [ - { - "Name": "15c", - "RegionID": 15, - "HostName": "derp15c.tailscale.com", - "IPv4": "102.67.165.185", - "IPv6": "2c0f:edb0:0:10::b59", - "CanPort80": true - }, - { - "Name": "15d", - "RegionID": 15, - "HostName": "derp15d.tailscale.com", - "IPv4": "102.67.165.36", - "IPv6": "2c0f:edb0:0:10::599", - "CanPort80": true - }, - { - "Name": "15b", - "RegionID": 15, - "HostName": "derp15b.tailscale.com", - "IPv4": "102.67.165.90", - "IPv6": "2c0f:edb0:0:10::963", - "CanPort80": true - } - ] - }, - "16": { - "RegionID": 16, - "RegionCode": "mia", - "RegionName": "Miami", - "Latitude": 25.78, - "Longitude": -80.21, - "Nodes": [ - { - "Name": "16c", - "RegionID": 16, - "HostName": "derp16c.tailscale.com", - "IPv4": "192.73.243.229", - "IPv6": "2607:f740:17::4e4", - "CanPort80": true - }, - { - "Name": "16d", - "RegionID": 16, - "HostName": "derp16d.tailscale.com", - "IPv4": "192.73.243.141", - "IPv6": "2607:f740:17::475", - "CanPort80": true - }, - { - "Name": "16b", - "RegionID": 16, - "HostName": "derp16b.tailscale.com", - "IPv4": "192.73.243.135", - "IPv6": "2607:f740:17::476", - "CanPort80": true - } - ] - }, - "17": { - "RegionID": 17, - "RegionCode": "lax", - "RegionName": "Los Angeles", - "Latitude": 34.05, - "Longitude": -118.25, - "Nodes": [ - { - "Name": "17c", - "RegionID": 17, - "HostName": "derp17c.tailscale.com", - "IPv4": "208.111.40.12", - "IPv6": "2607:f740:c::10", - "CanPort80": true - }, - { - "Name": "17d", - "RegionID": 17, - "HostName": "derp17d.tailscale.com", - "IPv4": "208.111.40.216", - "IPv6": "2607:f740:c::e1b", - "CanPort80": true - }, - { - "Name": "17b", - "RegionID": 17, - "HostName": "derp17b.tailscale.com", - "IPv4": "192.73.244.245", - "IPv6": "2607:f740:c::646", - "CanPort80": true - } - ] - }, - "18": { - "RegionID": 18, - "RegionCode": "par", - "RegionName": "Paris", - "Latitude": 48.856667, - "Longitude": 2.352222, - "Nodes": [ - { - "Name": "18c", - "RegionID": 18, - "HostName": "derp18c.tailscale.com", - "IPv4": "176.58.90.207", - "IPv6": "2a00:dd80:3e::c19", - "CanPort80": true - }, - { - "Name": "18d", - "RegionID": 18, - "HostName": "derp18d.tailscale.com", - "IPv4": "176.58.90.104", - "IPv6": "2a00:dd80:3e::f2e", - "CanPort80": true - }, - { - "Name": "18b", - "RegionID": 18, - "HostName": "derp18b.tailscale.com", - "IPv4": "176.58.90.147", - "IPv6": "2a00:dd80:3e::363", - "CanPort80": true - } - ] - }, - "19": { - "RegionID": 19, - "RegionCode": "mad", - "RegionName": "Madrid", - "Latitude": 40.416944, - "Longitude": -3.703333, - "Nodes": [ - { - "Name": "19c", - "RegionID": 19, - "HostName": "derp19c.tailscale.com", - "IPv4": "45.159.97.61", - "IPv6": "2a00:dd80:14:10::20", - "CanPort80": true - }, - { - "Name": "19d", - "RegionID": 19, - "HostName": "derp19d.tailscale.com", - "IPv4": "45.159.97.233", - "IPv6": "2a00:dd80:14:10::34a", - "CanPort80": true - }, - { - "Name": "19b", - "RegionID": 19, - "HostName": "derp19b.tailscale.com", - "IPv4": "45.159.97.144", - "IPv6": "2a00:dd80:14:10::335", - "CanPort80": true - } - ] - }, - "2": { - "RegionID": 2, - "RegionCode": "sfo", - "RegionName": "San Francisco", - "Latitude": 37.7775, - "Longitude": -122.416389, - "Nodes": [ - { - "Name": "2e", - "RegionID": 2, - "HostName": "derp2e.tailscale.com", - "IPv4": "192.73.252.134", - "IPv6": "2607:f740:0:3f::44c", - "CanPort80": true - }, - { - "Name": "2f", - "RegionID": 2, - "HostName": "derp2f.tailscale.com", - "IPv4": "208.111.34.178", - "IPv6": "2607:f740:0:3f::f4", - "CanPort80": true - }, - { - "Name": "2d", - "RegionID": 2, - "HostName": "derp2d.tailscale.com", - "IPv4": "192.73.252.65", - "IPv6": "2607:f740:0:3f::287", - "CanPort80": true - } - ] - }, - "20": { - "RegionID": 20, - "RegionCode": "hkg", - "RegionName": "Hong Kong", - "Latitude": 22.3193, - "Longitude": 114.1694, - "Nodes": [ - { - "Name": "20c", - "RegionID": 20, - "HostName": "derp20c.tailscale.com", - "IPv4": "205.147.105.30", - "IPv6": "2403:2500:8000:1::5fb", - "CanPort80": true - }, - { - "Name": "20d", - "RegionID": 20, - "HostName": "derp20d.tailscale.com", - "IPv4": "205.147.105.78", - "IPv6": "2403:2500:8000:1::e9a", - "CanPort80": true - }, - { - "Name": "20b", - "RegionID": 20, - "HostName": "derp20b.tailscale.com", - "IPv4": "103.6.84.152", - "IPv6": "2403:2500:8000:1::ef6", - "CanPort80": true - } - ] - }, - "21": { - "RegionID": 21, - "RegionCode": "tor", - "RegionName": "Toronto", - "Latitude": 43.741667, - "Longitude": -79.373333, - "Nodes": [ - { - "Name": "21c", - "RegionID": 21, - "HostName": "derp21c.tailscale.com", - "IPv4": "162.248.221.215", - "IPv6": "2607:f740:50::f10", - "CanPort80": true - }, - { - "Name": "21d", - "RegionID": 21, - "HostName": "derp21d.tailscale.com", - "IPv4": "162.248.221.248", - "IPv6": "2607:f740:50::ca4", - "CanPort80": true - }, - { - "Name": "21b", - "RegionID": 21, - "HostName": "derp21b.tailscale.com", - "IPv4": "162.248.221.199", - "IPv6": "2607:f740:50::1d1", - "CanPort80": true - } - ] - }, - "22": { - "RegionID": 22, - "RegionCode": "waw", - "RegionName": "Warsaw", - "Latitude": 52.23, - "Longitude": 21.011111, - "Nodes": [ - { - "Name": "22c", - "RegionID": 22, - "HostName": "derp22c.tailscale.com", - "IPv4": "45.159.98.253", - "IPv6": "2a00:dd80:40:100::3f", - "CanPort80": true - }, - { - "Name": "22d", - "RegionID": 22, - "HostName": "derp22d.tailscale.com", - "IPv4": "45.159.98.145", - "IPv6": "2a00:dd80:40:100::211", - "CanPort80": true - }, - { - "Name": "22b", - "RegionID": 22, - "HostName": "derp22b.tailscale.com", - "IPv4": "45.159.98.196", - "IPv6": "2a00:dd80:40:100::316", - "CanPort80": true - } - ] - }, - "23": { - "RegionID": 23, - "RegionCode": "dbi", - "RegionName": "Dubai", - "Latitude": 25.263056, - "Longitude": 55.297222, - "Nodes": [ - { - "Name": "23c", - "RegionID": 23, - "HostName": "derp23c.tailscale.com", - "IPv4": "185.34.3.207", - "IPv6": "2a00:dd80:3f:100::a50", - "CanPort80": true - }, - { - "Name": "23d", - "RegionID": 23, - "HostName": "derp23d.tailscale.com", - "IPv4": "185.34.3.75", - "IPv6": "2a00:dd80:3f:100::97e", - "CanPort80": true - }, - { - "Name": "23b", - "RegionID": 23, - "HostName": "derp23b.tailscale.com", - "IPv4": "185.34.3.232", - "IPv6": "2a00:dd80:3f:100::76f", - "CanPort80": true - } - ] - }, - "24": { - "RegionID": 24, - "RegionCode": "hnl", - "RegionName": "Honolulu", - "Latitude": 21.306944, - "Longitude": -157.858333, - "Nodes": [ - { - "Name": "24c", - "RegionID": 24, - "HostName": "derp24c.tailscale.com", - "IPv4": "208.83.233.233", - "IPv6": "2001:19f0:c000:c591:5400:04ff:fe26:2c5f", - "CanPort80": true - }, - { - "Name": "24d", - "RegionID": 24, - "HostName": "derp24d.tailscale.com", - "IPv4": "208.72.155.133", - "IPv6": "2001:19f0:c000:c564:5400:04ff:fe26:2ba8", - "CanPort80": true - }, - { - "Name": "24b", - "RegionID": 24, - "HostName": "derp24b.tailscale.com", - "IPv4": "208.83.234.151", - "IPv6": "2001:19f0:c000:c586:5400:04ff:fe26:2ba6", - "CanPort80": true - } - ] - }, - "25": { - "RegionID": 25, - "RegionCode": "nai", - "RegionName": "Nairobi", - "Latitude": -1.286389, - "Longitude": 36.817222, - "Nodes": [ - { - "Name": "25c", - "RegionID": 25, - "HostName": "derp25c.tailscale.com", - "IPv4": "102.67.167.37", - "IPv6": "2c0f:edb0:2000:1::2c7", - "CanPort80": true - }, - { - "Name": "25d", - "RegionID": 25, - "HostName": "derp25d.tailscale.com", - "IPv4": "102.67.167.188", - "IPv6": "2c0f:edb0:2000:1::188", - "CanPort80": true - }, - { - "Name": "25b", - "RegionID": 25, - "HostName": "derp25b.tailscale.com", - "IPv4": "102.67.167.245", - "IPv6": "2c0f:edb0:2000:1::2e9", - "CanPort80": true - } - ] - }, - "26": { - "RegionID": 26, - "RegionCode": "nue", - "RegionName": "Nuremberg", - "Latitude": 49.453889, - "Longitude": 11.0775, - "Nodes": [ - { - "Name": "26c", - "RegionID": 26, - "HostName": "derp26c.tailscale.com", - "IPv4": "49.12.193.137", - "IPv6": "2a01:4f8:1c1c:5c70::1", - "CanPort80": true - }, - { - "Name": "26d", - "RegionID": 26, - "HostName": "derp26d.tailscale.com", - "IPv4": "49.13.204.141", - "IPv6": "2a01:4f8:1c0c:7d06::1", - "CanPort80": true - }, - { - "Name": "26b", - "RegionID": 26, - "HostName": "derp26b.tailscale.com", - "IPv4": "167.235.72.200", - "IPv6": "2a01:4f8:1c1c:47b6::1", - "CanPort80": true - } - ] - }, - "27": { - "RegionID": 27, - "RegionCode": "iad", - "RegionName": "Ashburn", - "Latitude": 39.03, - "Longitude": -77.471111, - "Nodes": [ - { - "Name": "27d", - "RegionID": 27, - "HostName": "derp27d.tailscale.com", - "IPv4": "178.156.152.106", - "IPv6": "2a01:4ff:f0:3c8e::1", - "CanPort80": true - }, - { - "Name": "27c", - "RegionID": 27, - "HostName": "derp27c.tailscale.com", - "IPv4": "178.156.152.91", - "IPv6": "2a01:4ff:f0:3913::1", - "CanPort80": true - }, - { - "Name": "27e", - "RegionID": 27, - "HostName": "derp27e.tailscale.com", - "IPv4": "178.156.134.232", - "IPv6": "2a01:4ff:f0:28d4::1", - "CanPort80": true - }, - { - "Name": "27b", - "RegionID": 27, - "HostName": "derp27b.tailscale.com", - "IPv4": "5.161.218.233", - "IPv6": "2a01:4ff:f0:3db9::1", - "CanPort80": true - } - ] - }, - "28": { - "RegionID": 28, - "RegionCode": "hel", - "RegionName": "Helsinki", - "Latitude": 60.170833, - "Longitude": 24.9375, - "Nodes": [ - { - "Name": "28c", - "RegionID": 28, - "HostName": "derp28c.tailscale.com", - "IPv4": "95.217.2.165", - "IPv6": "2a01:4f9:c012:cd74::1", - "CanPort80": true - }, - { - "Name": "28d", - "RegionID": 28, - "HostName": "derp28d.tailscale.com", - "IPv4": "157.180.28.32", - "IPv6": "2a01:4f9:c012:2e5b::1", - "CanPort80": true - }, - { - "Name": "28b", - "RegionID": 28, - "HostName": "derp28b.tailscale.com", - "IPv4": "65.109.143.62", - "IPv6": "2a01:4f9:c012:d55c::1", - "CanPort80": true - } - ] - }, - "3": { - "RegionID": 3, - "RegionCode": "sin", - "RegionName": "Singapore", - "Latitude": 1.3521, - "Longitude": 103.8198, - "Nodes": [ - { - "Name": "3g", - "RegionID": 3, - "HostName": "derp3g.tailscale.com", - "IPv4": "172.237.72.79", - "IPv6": "2600:3c15::2000:adff:fe08:6fab", - "CanPort80": true - }, - { - "Name": "3f", - "RegionID": 3, - "HostName": "derp3f.tailscale.com", - "IPv4": "172.237.72.8", - "IPv6": "2600:3c15::2000:53ff:fe48:a668", - "CanPort80": true - }, - { - "Name": "3h", - "RegionID": 3, - "HostName": "derp3h.tailscale.com", - "IPv4": "172.237.66.30", - "IPv6": "2600:3c15::2000:3dff:fe44:50aa", - "CanPort80": true - }, - { - "Name": "3e", - "RegionID": 3, - "HostName": "derp3e.tailscale.com", - "IPv4": "172.237.72.43", - "IPv6": "2600:3c15::2000:6cff:fee4:d799", - "CanPort80": true - } - ] - }, - "4": { - "RegionID": 4, - "RegionCode": "fra", - "RegionName": "Frankfurt", - "Latitude": 50.1109, - "Longitude": 8.6821, - "Nodes": [ - { - "Name": "4h", - "RegionID": 4, - "HostName": "derp4h.tailscale.com", - "IPv4": "185.40.234.77", - "IPv6": "2a00:dd80:20::bcf", - "CanPort80": true - }, - { - "Name": "4g", - "RegionID": 4, - "HostName": "derp4g.tailscale.com", - "IPv4": "185.40.234.113", - "IPv6": "2a00:dd80:20::8f", - "CanPort80": true - }, - { - "Name": "4i", - "RegionID": 4, - "HostName": "derp4i.tailscale.com", - "IPv4": "185.40.234.53", - "IPv6": "2a00:dd80:20::8a6", - "CanPort80": true - }, - { - "Name": "4f", - "RegionID": 4, - "HostName": "derp4f.tailscale.com", - "IPv4": "185.40.234.219", - "IPv6": "2a00:dd80:20::a25", - "CanPort80": true - } - ] - }, - "5": { - "RegionID": 5, - "RegionCode": "syd", - "RegionName": "Sydney", - "Latitude": -33.867778, - "Longitude": 151.21, - "Nodes": [ - { - "Name": "5f", - "RegionID": 5, - "HostName": "derp5f.tailscale.com", - "IPv4": "172.105.166.103", - "IPv6": "2400:8907::2000:ccff:fe1f:80da", - "CanPort80": true - }, - { - "Name": "5g", - "RegionID": 5, - "HostName": "derp5g.tailscale.com", - "IPv4": "172.105.169.57", - "IPv6": "2400:8907::2000:2fff:fea7:57f4", - "CanPort80": true - }, - { - "Name": "5e", - "RegionID": 5, - "HostName": "derp5e.tailscale.com", - "IPv4": "172.105.179.230", - "IPv6": "2400:8907::2000:ceff:fe8d:4f4e", - "CanPort80": true - } - ] - }, - "6": { - "RegionID": 6, - "RegionCode": "blr", - "RegionName": "Bengaluru", - "Latitude": 12.9716, - "Longitude": 77.5946, - "Nodes": [ - { - "Name": "6a", - "RegionID": 6, - "HostName": "derp6.tailscale.com", - "IPv4": "68.183.90.120", - "IPv6": "2400:6180:100:d0::982:d001", - "CanPort80": true - } - ] - }, - "7": { - "RegionID": 7, - "RegionCode": "tok", - "RegionName": "Tokyo", - "Latitude": 35.6764, - "Longitude": 139.65, - "Nodes": [ - { - "Name": "7g", - "RegionID": 7, - "HostName": "derp7g.tailscale.com", - "IPv4": "172.238.6.179", - "IPv6": "2600:3c18::2000:3fff:fe80:3ebd", - "CanPort80": true - }, - { - "Name": "7f", - "RegionID": 7, - "HostName": "derp7f.tailscale.com", - "IPv4": "172.238.6.34", - "IPv6": "2600:3c18::2000:acff:fe8e:3ed5", - "CanPort80": true - }, - { - "Name": "7h", - "RegionID": 7, - "HostName": "derp7h.tailscale.com", - "IPv4": "172.237.28.183", - "IPv6": "2600:3c18::2000:b1ff:fea9:4560", - "CanPort80": true - }, - { - "Name": "7e", - "RegionID": 7, - "HostName": "derp7e.tailscale.com", - "IPv4": "172.238.6.180", - "IPv6": "2600:3c18::2000:60ff:fe0f:6e83", - "STUNOnly": true, - "CanPort80": true - } - ] - }, - "8": { - "RegionID": 8, - "RegionCode": "lhr", - "RegionName": "London", - "Latitude": 51.5072, - "Longitude": 0.1276, - "Nodes": [ - { - "Name": "8f", - "RegionID": 8, - "HostName": "derp8f.tailscale.com", - "IPv4": "176.58.88.183", - "IPv6": "2a00:dd80:3a::dfa", - "CanPort80": true - }, - { - "Name": "8g", - "RegionID": 8, - "HostName": "derp8g.tailscale.com", - "IPv4": "176.58.92.254", - "IPv6": "2a00:dd80:3a::ed", - "CanPort80": true - }, - { - "Name": "8e", - "RegionID": 8, - "HostName": "derp8e.tailscale.com", - "IPv4": "176.58.92.144", - "IPv6": "2a00:dd80:3a::b33", - "CanPort80": true - } - ] - }, - "9": { - "RegionID": 9, - "RegionCode": "dfw", - "RegionName": "Dallas", - "Latitude": 32.779167, - "Longitude": -96.808889, - "Nodes": [ - { - "Name": "9e", - "RegionID": 9, - "HostName": "derp9e.tailscale.com", - "IPv4": "192.73.248.83", - "IPv6": "2607:f740:100::359", - "CanPort80": true - }, - { - "Name": "9f", - "RegionID": 9, - "HostName": "derp9f.tailscale.com", - "IPv4": "209.177.156.197", - "IPv6": "2607:f740:100::cad", - "CanPort80": true - }, - { - "Name": "9d", - "RegionID": 9, - "HostName": "derp9d.tailscale.com", - "IPv4": "209.177.156.94", - "IPv6": "2607:f740:100::c05", - "CanPort80": true - } - ] - } - } - }, - "DisplayMessages": null, - "TKAEnabled": false, - "TKAHead": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", - "Domain": "kratail2tid@passkey", - "DomainAuditLogID": "", - "UserProfiles": { - "1260082990019555": { - "ID": 1260082990019555, - "LoginName": "tagged-devices", - "DisplayName": "Tagged Devices" - }, - "1399889648409786": { - "ID": 1399889648409786, - "LoginName": "router-b.tail78f774.ts.net", - "DisplayName": "router-b" - } - } + ] } }, "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.124.195.93": { - "peer_name": "exit-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/subnet-router/tailscaled.sock whois --json 100.124.195.93", - "response": null - }, - "100.116.18.24": { - "peer_name": "exit-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/subnet-router/tailscaled.sock whois --json 100.116.18.24", - "response": null - }, - "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.107.162.14": { - "peer_name": "group-a-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/subnet-router/tailscaled.sock whois --json 100.107.162.14", - "response": null - }, - "100.77.135.18": { - "peer_name": "group-b-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/subnet-router/tailscaled.sock whois --json 100.77.135.18", - "response": null - }, - "100.105.127.107": { - "peer_name": "multi-exit-router", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/subnet-router/tailscaled.sock whois --json 100.105.127.107", - "response": null - }, - "100.109.43.124": { - "peer_name": "router-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/subnet-router/tailscaled.sock whois --json 100.109.43.124", - "response": null - }, - "100.65.172.123": { - "peer_name": "router-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/subnet-router/tailscaled.sock whois --json 100.65.172.123", - "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 - } - }, "netmap": { - "SelfNode": { - "ID": 7489538288452506, - "StableID": "nTPEqJU2V121CNTRL", - "Name": "subnet-router.tail78f774.ts.net.", - "User": 7489538288452506, - "Key": "nodekey:887ae2351c09c3b952f1f42bdac4095ec396ebf15824a746e4193c003e9c8e3c", - "DiscoKey": "discokey:9e3167ceaf53735a2fcaa7d3a85ad3a6118274deb448326d594849275014cc56", - "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:58597", "10.65.0.27:58597", "172.17.0.1:58597"], - "Hostinfo": { - "Hostname": "subnet-router", - "RoutableIPs": ["10.33.0.0/16"], - "RequestTags": ["tag:router"], - "Services": [ - { "Proto": "peerapi4", "Port": 63250 }, - { "Proto": "peerapi6", "Port": 63250 }, - { "Proto": "peerapi-dns-proxy", "Port": 1 } - ] - }, - "Created": "2026-02-23T00:13:15.731478784Z", - "Tags": ["tag:router"], - "MachineAuthorized": true, - "CapMap": { - "https://tailscale.com/cap/file-sharing": null, - "https://tailscale.com/cap/is-owner": null, - "https://tailscale.com/cap/ssh": null, - "https://tailscale.com/cap/tailnet-lock": null, - "probe-udp-lifetime": null, - "ssh-behavior-v1": null, - "ssh-env-vars": null, - "store-appc-routes": null, - "tailnet-display-name": ["kratail2tid@passkey"] - }, - "ComputedName": "subnet-router", - "ComputedNameWithHost": "subnet-router" - }, - "AllCaps": [ - "probe-udp-lifetime", - "store-appc-routes", - "ssh-behavior-v1", - "ssh-env-vars", - "https://tailscale.com/cap/ssh", - "https://tailscale.com/cap/tailnet-lock", - "tailnet-display-name", - "https://tailscale.com/cap/file-sharing", - "https://tailscale.com/cap/is-owner" - ], - "NodeKey": "nodekey:887ae2351c09c3b952f1f42bdac4095ec396ebf15824a746e4193c003e9c8e3c", - "MachineKey": "mkey:324efa54cc51a7b4f266f6a236904c755d32b6e547a76ad3c1d1e9d348de682a", "Peers": [], - "DNS": { - "Routes": { - "tail78f774.ts.net.": null, - "ts.net.": [{ "Addr": "199.247.155.53" }, { "Addr": "2620:111:8007::53" }] - }, - "Domains": ["tail78f774.ts.net"], - "Proxied": true, - "ExitNodeFilteredSet": [".ts.net", ".tailscale.net"] - }, - "PacketFilter": [], - "PacketFilterRules": null, - "SSHPolicy": { "rules": [] }, - "CollectServices": false, - "DERPMap": { - "Regions": { - "1": { - "RegionID": 1, - "RegionCode": "nyc", - "RegionName": "New York City", - "Latitude": 40.7128, - "Longitude": -74.006, - "Nodes": [ - { - "Name": "1h", - "RegionID": 1, - "HostName": "derp1h.tailscale.com", - "IPv4": "199.38.181.93", - "IPv6": "2607:f740:f::afd", - "CanPort80": true - }, - { - "Name": "1g", - "RegionID": 1, - "HostName": "derp1g.tailscale.com", - "IPv4": "209.177.145.120", - "IPv6": "2607:f740:f::3eb", - "CanPort80": true - }, - { - "Name": "1i", - "RegionID": 1, - "HostName": "derp1i.tailscale.com", - "IPv4": "199.38.181.103", - "IPv6": "2607:f740:f::e19", - "CanPort80": true - }, - { - "Name": "1f", - "RegionID": 1, - "HostName": "derp1f.tailscale.com", - "IPv4": "199.38.181.104", - "IPv6": "2607:f740:f::bc", - "CanPort80": true - } - ] - }, - "10": { - "RegionID": 10, - "RegionCode": "sea", - "RegionName": "Seattle", - "Latitude": 47.609722, - "Longitude": -122.333056, - "Nodes": [ - { - "Name": "10c", - "RegionID": 10, - "HostName": "derp10c.tailscale.com", - "IPv4": "192.73.240.121", - "IPv6": "2607:f740:14::40c", - "CanPort80": true - }, - { - "Name": "10d", - "RegionID": 10, - "HostName": "derp10d.tailscale.com", - "IPv4": "192.73.240.132", - "IPv6": "2607:f740:14::500", - "CanPort80": true - }, - { - "Name": "10b", - "RegionID": 10, - "HostName": "derp10b.tailscale.com", - "IPv4": "192.73.240.161", - "IPv6": "2607:f740:14::61c", - "CanPort80": true - } - ] - }, - "11": { - "RegionID": 11, - "RegionCode": "sao", - "RegionName": "São Paulo", - "Latitude": -23.55, - "Longitude": -46.633333, - "Nodes": [ - { - "Name": "11f", - "RegionID": 11, - "HostName": "derp11f.tailscale.com", - "IPv4": "172.237.61.197", - "IPv6": "2600:3c0d::2000:3bff:fe44:6166", - "CanPort80": true - }, - { - "Name": "11g", - "RegionID": 11, - "HostName": "derp11g.tailscale.com", - "IPv4": "172.237.61.190", - "IPv6": "2600:3c0d::2000:62ff:febe:2e67", - "CanPort80": true - }, - { - "Name": "11e", - "RegionID": 11, - "HostName": "derp11e.tailscale.com", - "IPv4": "172.237.61.194", - "IPv6": "2600:3c0d::2000:d2ff:fe43:1790", - "CanPort80": true - } - ] - }, - "12": { - "RegionID": 12, - "RegionCode": "ord", - "RegionName": "Chicago", - "Latitude": 41.881944, - "Longitude": -87.627778, - "Nodes": [ - { - "Name": "12e", - "RegionID": 12, - "HostName": "derp12e.tailscale.com", - "IPv4": "209.177.158.15", - "IPv6": "2607:f740:e::b17", - "CanPort80": true - }, - { - "Name": "12f", - "RegionID": 12, - "HostName": "derp12f.tailscale.com", - "IPv4": "199.38.182.118", - "IPv6": "2607:f740:e::4c8", - "CanPort80": true - }, - { - "Name": "12d", - "RegionID": 12, - "HostName": "derp12d.tailscale.com", - "IPv4": "209.177.158.246", - "IPv6": "2607:f740:e::811", - "CanPort80": true - } - ] - }, - "13": { - "RegionID": 13, - "RegionCode": "den", - "RegionName": "Denver", - "Latitude": 39.7392, - "Longitude": -104.9849, - "Nodes": [ - { - "Name": "13c", - "RegionID": 13, - "HostName": "derp13c.tailscale.com", - "IPv4": "192.73.242.28", - "IPv6": "2607:f740:16::5c", - "CanPort80": true - }, - { - "Name": "13d", - "RegionID": 13, - "HostName": "derp13d.tailscale.com", - "IPv4": "192.73.242.204", - "IPv6": "2607:f740:16::c23", - "CanPort80": true - }, - { - "Name": "13b", - "RegionID": 13, - "HostName": "derp13b.tailscale.com", - "IPv4": "192.73.242.187", - "IPv6": "2607:f740:16::640", - "CanPort80": true - } - ] - }, - "14": { - "RegionID": 14, - "RegionCode": "ams", - "RegionName": "Amsterdam", - "Latitude": 52.372778, - "Longitude": 4.893611, - "Nodes": [ - { - "Name": "14c", - "RegionID": 14, - "HostName": "derp14c.tailscale.com", - "IPv4": "176.58.93.147", - "IPv6": "2a00:dd80:3c::b09", - "CanPort80": true - }, - { - "Name": "14d", - "RegionID": 14, - "HostName": "derp14d.tailscale.com", - "IPv4": "176.58.93.154", - "IPv6": "2a00:dd80:3c::3d5", - "CanPort80": true - }, - { - "Name": "14b", - "RegionID": 14, - "HostName": "derp14b.tailscale.com", - "IPv4": "176.58.93.248", - "IPv6": "2a00:dd80:3c::807", - "CanPort80": true - } - ] - }, - "15": { - "RegionID": 15, - "RegionCode": "jnb", - "RegionName": "Johannesburg", - "Latitude": -26.204444, - "Longitude": 28.045556, - "Nodes": [ - { - "Name": "15c", - "RegionID": 15, - "HostName": "derp15c.tailscale.com", - "IPv4": "102.67.165.185", - "IPv6": "2c0f:edb0:0:10::b59", - "CanPort80": true - }, - { - "Name": "15d", - "RegionID": 15, - "HostName": "derp15d.tailscale.com", - "IPv4": "102.67.165.36", - "IPv6": "2c0f:edb0:0:10::599", - "CanPort80": true - }, - { - "Name": "15b", - "RegionID": 15, - "HostName": "derp15b.tailscale.com", - "IPv4": "102.67.165.90", - "IPv6": "2c0f:edb0:0:10::963", - "CanPort80": true - } - ] - }, - "16": { - "RegionID": 16, - "RegionCode": "mia", - "RegionName": "Miami", - "Latitude": 25.78, - "Longitude": -80.21, - "Nodes": [ - { - "Name": "16c", - "RegionID": 16, - "HostName": "derp16c.tailscale.com", - "IPv4": "192.73.243.229", - "IPv6": "2607:f740:17::4e4", - "CanPort80": true - }, - { - "Name": "16d", - "RegionID": 16, - "HostName": "derp16d.tailscale.com", - "IPv4": "192.73.243.141", - "IPv6": "2607:f740:17::475", - "CanPort80": true - }, - { - "Name": "16b", - "RegionID": 16, - "HostName": "derp16b.tailscale.com", - "IPv4": "192.73.243.135", - "IPv6": "2607:f740:17::476", - "CanPort80": true - } - ] - }, - "17": { - "RegionID": 17, - "RegionCode": "lax", - "RegionName": "Los Angeles", - "Latitude": 34.05, - "Longitude": -118.25, - "Nodes": [ - { - "Name": "17c", - "RegionID": 17, - "HostName": "derp17c.tailscale.com", - "IPv4": "208.111.40.12", - "IPv6": "2607:f740:c::10", - "CanPort80": true - }, - { - "Name": "17d", - "RegionID": 17, - "HostName": "derp17d.tailscale.com", - "IPv4": "208.111.40.216", - "IPv6": "2607:f740:c::e1b", - "CanPort80": true - }, - { - "Name": "17b", - "RegionID": 17, - "HostName": "derp17b.tailscale.com", - "IPv4": "192.73.244.245", - "IPv6": "2607:f740:c::646", - "CanPort80": true - } - ] - }, - "18": { - "RegionID": 18, - "RegionCode": "par", - "RegionName": "Paris", - "Latitude": 48.856667, - "Longitude": 2.352222, - "Nodes": [ - { - "Name": "18c", - "RegionID": 18, - "HostName": "derp18c.tailscale.com", - "IPv4": "176.58.90.207", - "IPv6": "2a00:dd80:3e::c19", - "CanPort80": true - }, - { - "Name": "18d", - "RegionID": 18, - "HostName": "derp18d.tailscale.com", - "IPv4": "176.58.90.104", - "IPv6": "2a00:dd80:3e::f2e", - "CanPort80": true - }, - { - "Name": "18b", - "RegionID": 18, - "HostName": "derp18b.tailscale.com", - "IPv4": "176.58.90.147", - "IPv6": "2a00:dd80:3e::363", - "CanPort80": true - } - ] - }, - "19": { - "RegionID": 19, - "RegionCode": "mad", - "RegionName": "Madrid", - "Latitude": 40.416944, - "Longitude": -3.703333, - "Nodes": [ - { - "Name": "19c", - "RegionID": 19, - "HostName": "derp19c.tailscale.com", - "IPv4": "45.159.97.61", - "IPv6": "2a00:dd80:14:10::20", - "CanPort80": true - }, - { - "Name": "19d", - "RegionID": 19, - "HostName": "derp19d.tailscale.com", - "IPv4": "45.159.97.233", - "IPv6": "2a00:dd80:14:10::34a", - "CanPort80": true - }, - { - "Name": "19b", - "RegionID": 19, - "HostName": "derp19b.tailscale.com", - "IPv4": "45.159.97.144", - "IPv6": "2a00:dd80:14:10::335", - "CanPort80": true - } - ] - }, - "2": { - "RegionID": 2, - "RegionCode": "sfo", - "RegionName": "San Francisco", - "Latitude": 37.7775, - "Longitude": -122.416389, - "Nodes": [ - { - "Name": "2e", - "RegionID": 2, - "HostName": "derp2e.tailscale.com", - "IPv4": "192.73.252.134", - "IPv6": "2607:f740:0:3f::44c", - "CanPort80": true - }, - { - "Name": "2f", - "RegionID": 2, - "HostName": "derp2f.tailscale.com", - "IPv4": "208.111.34.178", - "IPv6": "2607:f740:0:3f::f4", - "CanPort80": true - }, - { - "Name": "2d", - "RegionID": 2, - "HostName": "derp2d.tailscale.com", - "IPv4": "192.73.252.65", - "IPv6": "2607:f740:0:3f::287", - "CanPort80": true - } - ] - }, - "20": { - "RegionID": 20, - "RegionCode": "hkg", - "RegionName": "Hong Kong", - "Latitude": 22.3193, - "Longitude": 114.1694, - "Nodes": [ - { - "Name": "20c", - "RegionID": 20, - "HostName": "derp20c.tailscale.com", - "IPv4": "205.147.105.30", - "IPv6": "2403:2500:8000:1::5fb", - "CanPort80": true - }, - { - "Name": "20d", - "RegionID": 20, - "HostName": "derp20d.tailscale.com", - "IPv4": "205.147.105.78", - "IPv6": "2403:2500:8000:1::e9a", - "CanPort80": true - }, - { - "Name": "20b", - "RegionID": 20, - "HostName": "derp20b.tailscale.com", - "IPv4": "103.6.84.152", - "IPv6": "2403:2500:8000:1::ef6", - "CanPort80": true - } - ] - }, - "21": { - "RegionID": 21, - "RegionCode": "tor", - "RegionName": "Toronto", - "Latitude": 43.741667, - "Longitude": -79.373333, - "Nodes": [ - { - "Name": "21c", - "RegionID": 21, - "HostName": "derp21c.tailscale.com", - "IPv4": "162.248.221.215", - "IPv6": "2607:f740:50::f10", - "CanPort80": true - }, - { - "Name": "21d", - "RegionID": 21, - "HostName": "derp21d.tailscale.com", - "IPv4": "162.248.221.248", - "IPv6": "2607:f740:50::ca4", - "CanPort80": true - }, - { - "Name": "21b", - "RegionID": 21, - "HostName": "derp21b.tailscale.com", - "IPv4": "162.248.221.199", - "IPv6": "2607:f740:50::1d1", - "CanPort80": true - } - ] - }, - "22": { - "RegionID": 22, - "RegionCode": "waw", - "RegionName": "Warsaw", - "Latitude": 52.23, - "Longitude": 21.011111, - "Nodes": [ - { - "Name": "22c", - "RegionID": 22, - "HostName": "derp22c.tailscale.com", - "IPv4": "45.159.98.253", - "IPv6": "2a00:dd80:40:100::3f", - "CanPort80": true - }, - { - "Name": "22d", - "RegionID": 22, - "HostName": "derp22d.tailscale.com", - "IPv4": "45.159.98.145", - "IPv6": "2a00:dd80:40:100::211", - "CanPort80": true - }, - { - "Name": "22b", - "RegionID": 22, - "HostName": "derp22b.tailscale.com", - "IPv4": "45.159.98.196", - "IPv6": "2a00:dd80:40:100::316", - "CanPort80": true - } - ] - }, - "23": { - "RegionID": 23, - "RegionCode": "dbi", - "RegionName": "Dubai", - "Latitude": 25.263056, - "Longitude": 55.297222, - "Nodes": [ - { - "Name": "23c", - "RegionID": 23, - "HostName": "derp23c.tailscale.com", - "IPv4": "185.34.3.207", - "IPv6": "2a00:dd80:3f:100::a50", - "CanPort80": true - }, - { - "Name": "23d", - "RegionID": 23, - "HostName": "derp23d.tailscale.com", - "IPv4": "185.34.3.75", - "IPv6": "2a00:dd80:3f:100::97e", - "CanPort80": true - }, - { - "Name": "23b", - "RegionID": 23, - "HostName": "derp23b.tailscale.com", - "IPv4": "185.34.3.232", - "IPv6": "2a00:dd80:3f:100::76f", - "CanPort80": true - } - ] - }, - "24": { - "RegionID": 24, - "RegionCode": "hnl", - "RegionName": "Honolulu", - "Latitude": 21.306944, - "Longitude": -157.858333, - "Nodes": [ - { - "Name": "24c", - "RegionID": 24, - "HostName": "derp24c.tailscale.com", - "IPv4": "208.83.233.233", - "IPv6": "2001:19f0:c000:c591:5400:04ff:fe26:2c5f", - "CanPort80": true - }, - { - "Name": "24d", - "RegionID": 24, - "HostName": "derp24d.tailscale.com", - "IPv4": "208.72.155.133", - "IPv6": "2001:19f0:c000:c564:5400:04ff:fe26:2ba8", - "CanPort80": true - }, - { - "Name": "24b", - "RegionID": 24, - "HostName": "derp24b.tailscale.com", - "IPv4": "208.83.234.151", - "IPv6": "2001:19f0:c000:c586:5400:04ff:fe26:2ba6", - "CanPort80": true - } - ] - }, - "25": { - "RegionID": 25, - "RegionCode": "nai", - "RegionName": "Nairobi", - "Latitude": -1.286389, - "Longitude": 36.817222, - "Nodes": [ - { - "Name": "25c", - "RegionID": 25, - "HostName": "derp25c.tailscale.com", - "IPv4": "102.67.167.37", - "IPv6": "2c0f:edb0:2000:1::2c7", - "CanPort80": true - }, - { - "Name": "25d", - "RegionID": 25, - "HostName": "derp25d.tailscale.com", - "IPv4": "102.67.167.188", - "IPv6": "2c0f:edb0:2000:1::188", - "CanPort80": true - }, - { - "Name": "25b", - "RegionID": 25, - "HostName": "derp25b.tailscale.com", - "IPv4": "102.67.167.245", - "IPv6": "2c0f:edb0:2000:1::2e9", - "CanPort80": true - } - ] - }, - "26": { - "RegionID": 26, - "RegionCode": "nue", - "RegionName": "Nuremberg", - "Latitude": 49.453889, - "Longitude": 11.0775, - "Nodes": [ - { - "Name": "26c", - "RegionID": 26, - "HostName": "derp26c.tailscale.com", - "IPv4": "49.12.193.137", - "IPv6": "2a01:4f8:1c1c:5c70::1", - "CanPort80": true - }, - { - "Name": "26d", - "RegionID": 26, - "HostName": "derp26d.tailscale.com", - "IPv4": "49.13.204.141", - "IPv6": "2a01:4f8:1c0c:7d06::1", - "CanPort80": true - }, - { - "Name": "26b", - "RegionID": 26, - "HostName": "derp26b.tailscale.com", - "IPv4": "167.235.72.200", - "IPv6": "2a01:4f8:1c1c:47b6::1", - "CanPort80": true - } - ] - }, - "27": { - "RegionID": 27, - "RegionCode": "iad", - "RegionName": "Ashburn", - "Latitude": 39.03, - "Longitude": -77.471111, - "Nodes": [ - { - "Name": "27d", - "RegionID": 27, - "HostName": "derp27d.tailscale.com", - "IPv4": "178.156.152.106", - "IPv6": "2a01:4ff:f0:3c8e::1", - "CanPort80": true - }, - { - "Name": "27c", - "RegionID": 27, - "HostName": "derp27c.tailscale.com", - "IPv4": "178.156.152.91", - "IPv6": "2a01:4ff:f0:3913::1", - "CanPort80": true - }, - { - "Name": "27e", - "RegionID": 27, - "HostName": "derp27e.tailscale.com", - "IPv4": "178.156.134.232", - "IPv6": "2a01:4ff:f0:28d4::1", - "CanPort80": true - }, - { - "Name": "27b", - "RegionID": 27, - "HostName": "derp27b.tailscale.com", - "IPv4": "5.161.218.233", - "IPv6": "2a01:4ff:f0:3db9::1", - "CanPort80": true - } - ] - }, - "28": { - "RegionID": 28, - "RegionCode": "hel", - "RegionName": "Helsinki", - "Latitude": 60.170833, - "Longitude": 24.9375, - "Nodes": [ - { - "Name": "28c", - "RegionID": 28, - "HostName": "derp28c.tailscale.com", - "IPv4": "95.217.2.165", - "IPv6": "2a01:4f9:c012:cd74::1", - "CanPort80": true - }, - { - "Name": "28d", - "RegionID": 28, - "HostName": "derp28d.tailscale.com", - "IPv4": "157.180.28.32", - "IPv6": "2a01:4f9:c012:2e5b::1", - "CanPort80": true - }, - { - "Name": "28b", - "RegionID": 28, - "HostName": "derp28b.tailscale.com", - "IPv4": "65.109.143.62", - "IPv6": "2a01:4f9:c012:d55c::1", - "CanPort80": true - } - ] - }, - "3": { - "RegionID": 3, - "RegionCode": "sin", - "RegionName": "Singapore", - "Latitude": 1.3521, - "Longitude": 103.8198, - "Nodes": [ - { - "Name": "3g", - "RegionID": 3, - "HostName": "derp3g.tailscale.com", - "IPv4": "172.237.72.79", - "IPv6": "2600:3c15::2000:adff:fe08:6fab", - "CanPort80": true - }, - { - "Name": "3f", - "RegionID": 3, - "HostName": "derp3f.tailscale.com", - "IPv4": "172.237.72.8", - "IPv6": "2600:3c15::2000:53ff:fe48:a668", - "CanPort80": true - }, - { - "Name": "3h", - "RegionID": 3, - "HostName": "derp3h.tailscale.com", - "IPv4": "172.237.66.30", - "IPv6": "2600:3c15::2000:3dff:fe44:50aa", - "CanPort80": true - }, - { - "Name": "3e", - "RegionID": 3, - "HostName": "derp3e.tailscale.com", - "IPv4": "172.237.72.43", - "IPv6": "2600:3c15::2000:6cff:fee4:d799", - "CanPort80": true - } - ] - }, - "4": { - "RegionID": 4, - "RegionCode": "fra", - "RegionName": "Frankfurt", - "Latitude": 50.1109, - "Longitude": 8.6821, - "Nodes": [ - { - "Name": "4h", - "RegionID": 4, - "HostName": "derp4h.tailscale.com", - "IPv4": "185.40.234.77", - "IPv6": "2a00:dd80:20::bcf", - "CanPort80": true - }, - { - "Name": "4g", - "RegionID": 4, - "HostName": "derp4g.tailscale.com", - "IPv4": "185.40.234.113", - "IPv6": "2a00:dd80:20::8f", - "CanPort80": true - }, - { - "Name": "4i", - "RegionID": 4, - "HostName": "derp4i.tailscale.com", - "IPv4": "185.40.234.53", - "IPv6": "2a00:dd80:20::8a6", - "CanPort80": true - }, - { - "Name": "4f", - "RegionID": 4, - "HostName": "derp4f.tailscale.com", - "IPv4": "185.40.234.219", - "IPv6": "2a00:dd80:20::a25", - "CanPort80": true - } - ] - }, - "5": { - "RegionID": 5, - "RegionCode": "syd", - "RegionName": "Sydney", - "Latitude": -33.867778, - "Longitude": 151.21, - "Nodes": [ - { - "Name": "5f", - "RegionID": 5, - "HostName": "derp5f.tailscale.com", - "IPv4": "172.105.166.103", - "IPv6": "2400:8907::2000:ccff:fe1f:80da", - "CanPort80": true - }, - { - "Name": "5g", - "RegionID": 5, - "HostName": "derp5g.tailscale.com", - "IPv4": "172.105.169.57", - "IPv6": "2400:8907::2000:2fff:fea7:57f4", - "CanPort80": true - }, - { - "Name": "5e", - "RegionID": 5, - "HostName": "derp5e.tailscale.com", - "IPv4": "172.105.179.230", - "IPv6": "2400:8907::2000:ceff:fe8d:4f4e", - "CanPort80": true - } - ] - }, - "6": { - "RegionID": 6, - "RegionCode": "blr", - "RegionName": "Bengaluru", - "Latitude": 12.9716, - "Longitude": 77.5946, - "Nodes": [ - { - "Name": "6a", - "RegionID": 6, - "HostName": "derp6.tailscale.com", - "IPv4": "68.183.90.120", - "IPv6": "2400:6180:100:d0::982:d001", - "CanPort80": true - } - ] - }, - "7": { - "RegionID": 7, - "RegionCode": "tok", - "RegionName": "Tokyo", - "Latitude": 35.6764, - "Longitude": 139.65, - "Nodes": [ - { - "Name": "7g", - "RegionID": 7, - "HostName": "derp7g.tailscale.com", - "IPv4": "172.238.6.179", - "IPv6": "2600:3c18::2000:3fff:fe80:3ebd", - "CanPort80": true - }, - { - "Name": "7f", - "RegionID": 7, - "HostName": "derp7f.tailscale.com", - "IPv4": "172.238.6.34", - "IPv6": "2600:3c18::2000:acff:fe8e:3ed5", - "CanPort80": true - }, - { - "Name": "7h", - "RegionID": 7, - "HostName": "derp7h.tailscale.com", - "IPv4": "172.237.28.183", - "IPv6": "2600:3c18::2000:b1ff:fea9:4560", - "CanPort80": true - }, - { - "Name": "7e", - "RegionID": 7, - "HostName": "derp7e.tailscale.com", - "IPv4": "172.238.6.180", - "IPv6": "2600:3c18::2000:60ff:fe0f:6e83", - "STUNOnly": true, - "CanPort80": true - } - ] - }, - "8": { - "RegionID": 8, - "RegionCode": "lhr", - "RegionName": "London", - "Latitude": 51.5072, - "Longitude": 0.1276, - "Nodes": [ - { - "Name": "8f", - "RegionID": 8, - "HostName": "derp8f.tailscale.com", - "IPv4": "176.58.88.183", - "IPv6": "2a00:dd80:3a::dfa", - "CanPort80": true - }, - { - "Name": "8g", - "RegionID": 8, - "HostName": "derp8g.tailscale.com", - "IPv4": "176.58.92.254", - "IPv6": "2a00:dd80:3a::ed", - "CanPort80": true - }, - { - "Name": "8e", - "RegionID": 8, - "HostName": "derp8e.tailscale.com", - "IPv4": "176.58.92.144", - "IPv6": "2a00:dd80:3a::b33", - "CanPort80": true - } - ] - }, - "9": { - "RegionID": 9, - "RegionCode": "dfw", - "RegionName": "Dallas", - "Latitude": 32.779167, - "Longitude": -96.808889, - "Nodes": [ - { - "Name": "9e", - "RegionID": 9, - "HostName": "derp9e.tailscale.com", - "IPv4": "192.73.248.83", - "IPv6": "2607:f740:100::359", - "CanPort80": true - }, - { - "Name": "9f", - "RegionID": 9, - "HostName": "derp9f.tailscale.com", - "IPv4": "209.177.156.197", - "IPv6": "2607:f740:100::cad", - "CanPort80": true - }, - { - "Name": "9d", - "RegionID": 9, - "HostName": "derp9d.tailscale.com", - "IPv4": "209.177.156.94", - "IPv6": "2607:f740:100::c05", - "CanPort80": true - } - ] - } - } - }, - "DisplayMessages": null, - "TKAEnabled": false, - "TKAHead": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", - "Domain": "kratail2tid@passkey", - "DomainAuditLogID": "", - "UserProfiles": { - "7489538288452506": { - "ID": 7489538288452506, - "LoginName": "subnet-router.tail78f774.ts.net", - "DisplayName": "subnet-router" - } - } + "PacketFilterRules": 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.124.195.93": { - "peer_name": "exit-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-client/tailscaled.sock whois --json 100.124.195.93", - "response": null - }, - "100.116.18.24": { - "peer_name": "exit-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-client/tailscaled.sock whois --json 100.116.18.24", - "response": null - }, - "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.107.162.14": { - "peer_name": "group-a-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-client/tailscaled.sock whois --json 100.107.162.14", - "response": null - }, - "100.77.135.18": { - "peer_name": "group-b-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-client/tailscaled.sock whois --json 100.77.135.18", - "response": null - }, - "100.105.127.107": { - "peer_name": "multi-exit-router", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-client/tailscaled.sock whois --json 100.105.127.107", - "response": null - }, - "100.109.43.124": { - "peer_name": "router-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-client/tailscaled.sock whois --json 100.109.43.124", - "response": null - }, - "100.65.172.123": { - "peer_name": "router-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-client/tailscaled.sock whois --json 100.65.172.123", - "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 - } - }, "netmap": { - "SelfNode": { - "ID": 4031348162889210, - "StableID": "nf7BTTgoUY11CNTRL", - "Name": "tagged-client.tail78f774.ts.net.", - "User": 4031348162889210, - "Key": "nodekey:3011e53353e49142ea56ae11f81e0dceae0d667093d04ee086dcb1e9c5d3c844", - "DiscoKey": "discokey:64af337a7e8b61dce500da3b8f7d0a95fc6fe0e57c2f9e57b9b484a9b4acbe1e", - "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:47143", "10.65.0.27:47143", "172.17.0.1:47143"], - "Hostinfo": { - "Hostname": "tagged-client", - "RequestTags": ["tag:client"], - "Services": [ - { "Proto": "peerapi4", "Port": 41378 }, - { "Proto": "peerapi6", "Port": 41378 }, - { "Proto": "peerapi-dns-proxy", "Port": 1 } - ] - }, - "Created": "2026-02-23T00:13:11.017324028Z", - "Tags": ["tag:client"], - "MachineAuthorized": true, - "CapMap": { - "https://tailscale.com/cap/file-sharing": null, - "https://tailscale.com/cap/is-owner": null, - "https://tailscale.com/cap/ssh": null, - "https://tailscale.com/cap/tailnet-lock": null, - "probe-udp-lifetime": null, - "ssh-behavior-v1": null, - "ssh-env-vars": null, - "store-appc-routes": null, - "tailnet-display-name": ["kratail2tid@passkey"] - }, - "ComputedName": "tagged-client", - "ComputedNameWithHost": "tagged-client" - }, - "AllCaps": [ - "tailnet-display-name", - "https://tailscale.com/cap/ssh", - "ssh-behavior-v1", - "ssh-env-vars", - "https://tailscale.com/cap/is-owner", - "probe-udp-lifetime", - "store-appc-routes", - "https://tailscale.com/cap/file-sharing", - "https://tailscale.com/cap/tailnet-lock" - ], - "NodeKey": "nodekey:3011e53353e49142ea56ae11f81e0dceae0d667093d04ee086dcb1e9c5d3c844", - "MachineKey": "mkey:92af46ce21e67878315fe620545c207854ab6cec2d03adc106c50f64f9692711", "Peers": [], - "DNS": { - "Routes": { - "tail78f774.ts.net.": null, - "ts.net.": [{ "Addr": "199.247.155.53" }, { "Addr": "2620:111:8007::53" }] - }, - "Domains": ["tail78f774.ts.net"], - "Proxied": true, - "ExitNodeFilteredSet": [".ts.net", ".tailscale.net"] - }, - "PacketFilter": [], - "PacketFilterRules": null, - "SSHPolicy": { "rules": [] }, - "CollectServices": false, - "DERPMap": { - "Regions": { - "1": { - "RegionID": 1, - "RegionCode": "nyc", - "RegionName": "New York City", - "Latitude": 40.7128, - "Longitude": -74.006, - "Nodes": [ - { - "Name": "1h", - "RegionID": 1, - "HostName": "derp1h.tailscale.com", - "IPv4": "199.38.181.93", - "IPv6": "2607:f740:f::afd", - "CanPort80": true - }, - { - "Name": "1g", - "RegionID": 1, - "HostName": "derp1g.tailscale.com", - "IPv4": "209.177.145.120", - "IPv6": "2607:f740:f::3eb", - "CanPort80": true - }, - { - "Name": "1i", - "RegionID": 1, - "HostName": "derp1i.tailscale.com", - "IPv4": "199.38.181.103", - "IPv6": "2607:f740:f::e19", - "CanPort80": true - }, - { - "Name": "1f", - "RegionID": 1, - "HostName": "derp1f.tailscale.com", - "IPv4": "199.38.181.104", - "IPv6": "2607:f740:f::bc", - "CanPort80": true - } - ] - }, - "10": { - "RegionID": 10, - "RegionCode": "sea", - "RegionName": "Seattle", - "Latitude": 47.609722, - "Longitude": -122.333056, - "Nodes": [ - { - "Name": "10c", - "RegionID": 10, - "HostName": "derp10c.tailscale.com", - "IPv4": "192.73.240.121", - "IPv6": "2607:f740:14::40c", - "CanPort80": true - }, - { - "Name": "10d", - "RegionID": 10, - "HostName": "derp10d.tailscale.com", - "IPv4": "192.73.240.132", - "IPv6": "2607:f740:14::500", - "CanPort80": true - }, - { - "Name": "10b", - "RegionID": 10, - "HostName": "derp10b.tailscale.com", - "IPv4": "192.73.240.161", - "IPv6": "2607:f740:14::61c", - "CanPort80": true - } - ] - }, - "11": { - "RegionID": 11, - "RegionCode": "sao", - "RegionName": "São Paulo", - "Latitude": -23.55, - "Longitude": -46.633333, - "Nodes": [ - { - "Name": "11f", - "RegionID": 11, - "HostName": "derp11f.tailscale.com", - "IPv4": "172.237.61.197", - "IPv6": "2600:3c0d::2000:3bff:fe44:6166", - "CanPort80": true - }, - { - "Name": "11g", - "RegionID": 11, - "HostName": "derp11g.tailscale.com", - "IPv4": "172.237.61.190", - "IPv6": "2600:3c0d::2000:62ff:febe:2e67", - "CanPort80": true - }, - { - "Name": "11e", - "RegionID": 11, - "HostName": "derp11e.tailscale.com", - "IPv4": "172.237.61.194", - "IPv6": "2600:3c0d::2000:d2ff:fe43:1790", - "CanPort80": true - } - ] - }, - "12": { - "RegionID": 12, - "RegionCode": "ord", - "RegionName": "Chicago", - "Latitude": 41.881944, - "Longitude": -87.627778, - "Nodes": [ - { - "Name": "12e", - "RegionID": 12, - "HostName": "derp12e.tailscale.com", - "IPv4": "209.177.158.15", - "IPv6": "2607:f740:e::b17", - "CanPort80": true - }, - { - "Name": "12f", - "RegionID": 12, - "HostName": "derp12f.tailscale.com", - "IPv4": "199.38.182.118", - "IPv6": "2607:f740:e::4c8", - "CanPort80": true - }, - { - "Name": "12d", - "RegionID": 12, - "HostName": "derp12d.tailscale.com", - "IPv4": "209.177.158.246", - "IPv6": "2607:f740:e::811", - "CanPort80": true - } - ] - }, - "13": { - "RegionID": 13, - "RegionCode": "den", - "RegionName": "Denver", - "Latitude": 39.7392, - "Longitude": -104.9849, - "Nodes": [ - { - "Name": "13c", - "RegionID": 13, - "HostName": "derp13c.tailscale.com", - "IPv4": "192.73.242.28", - "IPv6": "2607:f740:16::5c", - "CanPort80": true - }, - { - "Name": "13d", - "RegionID": 13, - "HostName": "derp13d.tailscale.com", - "IPv4": "192.73.242.204", - "IPv6": "2607:f740:16::c23", - "CanPort80": true - }, - { - "Name": "13b", - "RegionID": 13, - "HostName": "derp13b.tailscale.com", - "IPv4": "192.73.242.187", - "IPv6": "2607:f740:16::640", - "CanPort80": true - } - ] - }, - "14": { - "RegionID": 14, - "RegionCode": "ams", - "RegionName": "Amsterdam", - "Latitude": 52.372778, - "Longitude": 4.893611, - "Nodes": [ - { - "Name": "14c", - "RegionID": 14, - "HostName": "derp14c.tailscale.com", - "IPv4": "176.58.93.147", - "IPv6": "2a00:dd80:3c::b09", - "CanPort80": true - }, - { - "Name": "14d", - "RegionID": 14, - "HostName": "derp14d.tailscale.com", - "IPv4": "176.58.93.154", - "IPv6": "2a00:dd80:3c::3d5", - "CanPort80": true - }, - { - "Name": "14b", - "RegionID": 14, - "HostName": "derp14b.tailscale.com", - "IPv4": "176.58.93.248", - "IPv6": "2a00:dd80:3c::807", - "CanPort80": true - } - ] - }, - "15": { - "RegionID": 15, - "RegionCode": "jnb", - "RegionName": "Johannesburg", - "Latitude": -26.204444, - "Longitude": 28.045556, - "Nodes": [ - { - "Name": "15c", - "RegionID": 15, - "HostName": "derp15c.tailscale.com", - "IPv4": "102.67.165.185", - "IPv6": "2c0f:edb0:0:10::b59", - "CanPort80": true - }, - { - "Name": "15d", - "RegionID": 15, - "HostName": "derp15d.tailscale.com", - "IPv4": "102.67.165.36", - "IPv6": "2c0f:edb0:0:10::599", - "CanPort80": true - }, - { - "Name": "15b", - "RegionID": 15, - "HostName": "derp15b.tailscale.com", - "IPv4": "102.67.165.90", - "IPv6": "2c0f:edb0:0:10::963", - "CanPort80": true - } - ] - }, - "16": { - "RegionID": 16, - "RegionCode": "mia", - "RegionName": "Miami", - "Latitude": 25.78, - "Longitude": -80.21, - "Nodes": [ - { - "Name": "16c", - "RegionID": 16, - "HostName": "derp16c.tailscale.com", - "IPv4": "192.73.243.229", - "IPv6": "2607:f740:17::4e4", - "CanPort80": true - }, - { - "Name": "16d", - "RegionID": 16, - "HostName": "derp16d.tailscale.com", - "IPv4": "192.73.243.141", - "IPv6": "2607:f740:17::475", - "CanPort80": true - }, - { - "Name": "16b", - "RegionID": 16, - "HostName": "derp16b.tailscale.com", - "IPv4": "192.73.243.135", - "IPv6": "2607:f740:17::476", - "CanPort80": true - } - ] - }, - "17": { - "RegionID": 17, - "RegionCode": "lax", - "RegionName": "Los Angeles", - "Latitude": 34.05, - "Longitude": -118.25, - "Nodes": [ - { - "Name": "17c", - "RegionID": 17, - "HostName": "derp17c.tailscale.com", - "IPv4": "208.111.40.12", - "IPv6": "2607:f740:c::10", - "CanPort80": true - }, - { - "Name": "17d", - "RegionID": 17, - "HostName": "derp17d.tailscale.com", - "IPv4": "208.111.40.216", - "IPv6": "2607:f740:c::e1b", - "CanPort80": true - }, - { - "Name": "17b", - "RegionID": 17, - "HostName": "derp17b.tailscale.com", - "IPv4": "192.73.244.245", - "IPv6": "2607:f740:c::646", - "CanPort80": true - } - ] - }, - "18": { - "RegionID": 18, - "RegionCode": "par", - "RegionName": "Paris", - "Latitude": 48.856667, - "Longitude": 2.352222, - "Nodes": [ - { - "Name": "18c", - "RegionID": 18, - "HostName": "derp18c.tailscale.com", - "IPv4": "176.58.90.207", - "IPv6": "2a00:dd80:3e::c19", - "CanPort80": true - }, - { - "Name": "18d", - "RegionID": 18, - "HostName": "derp18d.tailscale.com", - "IPv4": "176.58.90.104", - "IPv6": "2a00:dd80:3e::f2e", - "CanPort80": true - }, - { - "Name": "18b", - "RegionID": 18, - "HostName": "derp18b.tailscale.com", - "IPv4": "176.58.90.147", - "IPv6": "2a00:dd80:3e::363", - "CanPort80": true - } - ] - }, - "19": { - "RegionID": 19, - "RegionCode": "mad", - "RegionName": "Madrid", - "Latitude": 40.416944, - "Longitude": -3.703333, - "Nodes": [ - { - "Name": "19c", - "RegionID": 19, - "HostName": "derp19c.tailscale.com", - "IPv4": "45.159.97.61", - "IPv6": "2a00:dd80:14:10::20", - "CanPort80": true - }, - { - "Name": "19d", - "RegionID": 19, - "HostName": "derp19d.tailscale.com", - "IPv4": "45.159.97.233", - "IPv6": "2a00:dd80:14:10::34a", - "CanPort80": true - }, - { - "Name": "19b", - "RegionID": 19, - "HostName": "derp19b.tailscale.com", - "IPv4": "45.159.97.144", - "IPv6": "2a00:dd80:14:10::335", - "CanPort80": true - } - ] - }, - "2": { - "RegionID": 2, - "RegionCode": "sfo", - "RegionName": "San Francisco", - "Latitude": 37.7775, - "Longitude": -122.416389, - "Nodes": [ - { - "Name": "2e", - "RegionID": 2, - "HostName": "derp2e.tailscale.com", - "IPv4": "192.73.252.134", - "IPv6": "2607:f740:0:3f::44c", - "CanPort80": true - }, - { - "Name": "2f", - "RegionID": 2, - "HostName": "derp2f.tailscale.com", - "IPv4": "208.111.34.178", - "IPv6": "2607:f740:0:3f::f4", - "CanPort80": true - }, - { - "Name": "2d", - "RegionID": 2, - "HostName": "derp2d.tailscale.com", - "IPv4": "192.73.252.65", - "IPv6": "2607:f740:0:3f::287", - "CanPort80": true - } - ] - }, - "20": { - "RegionID": 20, - "RegionCode": "hkg", - "RegionName": "Hong Kong", - "Latitude": 22.3193, - "Longitude": 114.1694, - "Nodes": [ - { - "Name": "20c", - "RegionID": 20, - "HostName": "derp20c.tailscale.com", - "IPv4": "205.147.105.30", - "IPv6": "2403:2500:8000:1::5fb", - "CanPort80": true - }, - { - "Name": "20d", - "RegionID": 20, - "HostName": "derp20d.tailscale.com", - "IPv4": "205.147.105.78", - "IPv6": "2403:2500:8000:1::e9a", - "CanPort80": true - }, - { - "Name": "20b", - "RegionID": 20, - "HostName": "derp20b.tailscale.com", - "IPv4": "103.6.84.152", - "IPv6": "2403:2500:8000:1::ef6", - "CanPort80": true - } - ] - }, - "21": { - "RegionID": 21, - "RegionCode": "tor", - "RegionName": "Toronto", - "Latitude": 43.741667, - "Longitude": -79.373333, - "Nodes": [ - { - "Name": "21c", - "RegionID": 21, - "HostName": "derp21c.tailscale.com", - "IPv4": "162.248.221.215", - "IPv6": "2607:f740:50::f10", - "CanPort80": true - }, - { - "Name": "21d", - "RegionID": 21, - "HostName": "derp21d.tailscale.com", - "IPv4": "162.248.221.248", - "IPv6": "2607:f740:50::ca4", - "CanPort80": true - }, - { - "Name": "21b", - "RegionID": 21, - "HostName": "derp21b.tailscale.com", - "IPv4": "162.248.221.199", - "IPv6": "2607:f740:50::1d1", - "CanPort80": true - } - ] - }, - "22": { - "RegionID": 22, - "RegionCode": "waw", - "RegionName": "Warsaw", - "Latitude": 52.23, - "Longitude": 21.011111, - "Nodes": [ - { - "Name": "22c", - "RegionID": 22, - "HostName": "derp22c.tailscale.com", - "IPv4": "45.159.98.253", - "IPv6": "2a00:dd80:40:100::3f", - "CanPort80": true - }, - { - "Name": "22d", - "RegionID": 22, - "HostName": "derp22d.tailscale.com", - "IPv4": "45.159.98.145", - "IPv6": "2a00:dd80:40:100::211", - "CanPort80": true - }, - { - "Name": "22b", - "RegionID": 22, - "HostName": "derp22b.tailscale.com", - "IPv4": "45.159.98.196", - "IPv6": "2a00:dd80:40:100::316", - "CanPort80": true - } - ] - }, - "23": { - "RegionID": 23, - "RegionCode": "dbi", - "RegionName": "Dubai", - "Latitude": 25.263056, - "Longitude": 55.297222, - "Nodes": [ - { - "Name": "23c", - "RegionID": 23, - "HostName": "derp23c.tailscale.com", - "IPv4": "185.34.3.207", - "IPv6": "2a00:dd80:3f:100::a50", - "CanPort80": true - }, - { - "Name": "23d", - "RegionID": 23, - "HostName": "derp23d.tailscale.com", - "IPv4": "185.34.3.75", - "IPv6": "2a00:dd80:3f:100::97e", - "CanPort80": true - }, - { - "Name": "23b", - "RegionID": 23, - "HostName": "derp23b.tailscale.com", - "IPv4": "185.34.3.232", - "IPv6": "2a00:dd80:3f:100::76f", - "CanPort80": true - } - ] - }, - "24": { - "RegionID": 24, - "RegionCode": "hnl", - "RegionName": "Honolulu", - "Latitude": 21.306944, - "Longitude": -157.858333, - "Nodes": [ - { - "Name": "24c", - "RegionID": 24, - "HostName": "derp24c.tailscale.com", - "IPv4": "208.83.233.233", - "IPv6": "2001:19f0:c000:c591:5400:04ff:fe26:2c5f", - "CanPort80": true - }, - { - "Name": "24d", - "RegionID": 24, - "HostName": "derp24d.tailscale.com", - "IPv4": "208.72.155.133", - "IPv6": "2001:19f0:c000:c564:5400:04ff:fe26:2ba8", - "CanPort80": true - }, - { - "Name": "24b", - "RegionID": 24, - "HostName": "derp24b.tailscale.com", - "IPv4": "208.83.234.151", - "IPv6": "2001:19f0:c000:c586:5400:04ff:fe26:2ba6", - "CanPort80": true - } - ] - }, - "25": { - "RegionID": 25, - "RegionCode": "nai", - "RegionName": "Nairobi", - "Latitude": -1.286389, - "Longitude": 36.817222, - "Nodes": [ - { - "Name": "25c", - "RegionID": 25, - "HostName": "derp25c.tailscale.com", - "IPv4": "102.67.167.37", - "IPv6": "2c0f:edb0:2000:1::2c7", - "CanPort80": true - }, - { - "Name": "25d", - "RegionID": 25, - "HostName": "derp25d.tailscale.com", - "IPv4": "102.67.167.188", - "IPv6": "2c0f:edb0:2000:1::188", - "CanPort80": true - }, - { - "Name": "25b", - "RegionID": 25, - "HostName": "derp25b.tailscale.com", - "IPv4": "102.67.167.245", - "IPv6": "2c0f:edb0:2000:1::2e9", - "CanPort80": true - } - ] - }, - "26": { - "RegionID": 26, - "RegionCode": "nue", - "RegionName": "Nuremberg", - "Latitude": 49.453889, - "Longitude": 11.0775, - "Nodes": [ - { - "Name": "26c", - "RegionID": 26, - "HostName": "derp26c.tailscale.com", - "IPv4": "49.12.193.137", - "IPv6": "2a01:4f8:1c1c:5c70::1", - "CanPort80": true - }, - { - "Name": "26d", - "RegionID": 26, - "HostName": "derp26d.tailscale.com", - "IPv4": "49.13.204.141", - "IPv6": "2a01:4f8:1c0c:7d06::1", - "CanPort80": true - }, - { - "Name": "26b", - "RegionID": 26, - "HostName": "derp26b.tailscale.com", - "IPv4": "167.235.72.200", - "IPv6": "2a01:4f8:1c1c:47b6::1", - "CanPort80": true - } - ] - }, - "27": { - "RegionID": 27, - "RegionCode": "iad", - "RegionName": "Ashburn", - "Latitude": 39.03, - "Longitude": -77.471111, - "Nodes": [ - { - "Name": "27d", - "RegionID": 27, - "HostName": "derp27d.tailscale.com", - "IPv4": "178.156.152.106", - "IPv6": "2a01:4ff:f0:3c8e::1", - "CanPort80": true - }, - { - "Name": "27c", - "RegionID": 27, - "HostName": "derp27c.tailscale.com", - "IPv4": "178.156.152.91", - "IPv6": "2a01:4ff:f0:3913::1", - "CanPort80": true - }, - { - "Name": "27e", - "RegionID": 27, - "HostName": "derp27e.tailscale.com", - "IPv4": "178.156.134.232", - "IPv6": "2a01:4ff:f0:28d4::1", - "CanPort80": true - }, - { - "Name": "27b", - "RegionID": 27, - "HostName": "derp27b.tailscale.com", - "IPv4": "5.161.218.233", - "IPv6": "2a01:4ff:f0:3db9::1", - "CanPort80": true - } - ] - }, - "28": { - "RegionID": 28, - "RegionCode": "hel", - "RegionName": "Helsinki", - "Latitude": 60.170833, - "Longitude": 24.9375, - "Nodes": [ - { - "Name": "28c", - "RegionID": 28, - "HostName": "derp28c.tailscale.com", - "IPv4": "95.217.2.165", - "IPv6": "2a01:4f9:c012:cd74::1", - "CanPort80": true - }, - { - "Name": "28d", - "RegionID": 28, - "HostName": "derp28d.tailscale.com", - "IPv4": "157.180.28.32", - "IPv6": "2a01:4f9:c012:2e5b::1", - "CanPort80": true - }, - { - "Name": "28b", - "RegionID": 28, - "HostName": "derp28b.tailscale.com", - "IPv4": "65.109.143.62", - "IPv6": "2a01:4f9:c012:d55c::1", - "CanPort80": true - } - ] - }, - "3": { - "RegionID": 3, - "RegionCode": "sin", - "RegionName": "Singapore", - "Latitude": 1.3521, - "Longitude": 103.8198, - "Nodes": [ - { - "Name": "3g", - "RegionID": 3, - "HostName": "derp3g.tailscale.com", - "IPv4": "172.237.72.79", - "IPv6": "2600:3c15::2000:adff:fe08:6fab", - "CanPort80": true - }, - { - "Name": "3f", - "RegionID": 3, - "HostName": "derp3f.tailscale.com", - "IPv4": "172.237.72.8", - "IPv6": "2600:3c15::2000:53ff:fe48:a668", - "CanPort80": true - }, - { - "Name": "3h", - "RegionID": 3, - "HostName": "derp3h.tailscale.com", - "IPv4": "172.237.66.30", - "IPv6": "2600:3c15::2000:3dff:fe44:50aa", - "CanPort80": true - }, - { - "Name": "3e", - "RegionID": 3, - "HostName": "derp3e.tailscale.com", - "IPv4": "172.237.72.43", - "IPv6": "2600:3c15::2000:6cff:fee4:d799", - "CanPort80": true - } - ] - }, - "4": { - "RegionID": 4, - "RegionCode": "fra", - "RegionName": "Frankfurt", - "Latitude": 50.1109, - "Longitude": 8.6821, - "Nodes": [ - { - "Name": "4h", - "RegionID": 4, - "HostName": "derp4h.tailscale.com", - "IPv4": "185.40.234.77", - "IPv6": "2a00:dd80:20::bcf", - "CanPort80": true - }, - { - "Name": "4g", - "RegionID": 4, - "HostName": "derp4g.tailscale.com", - "IPv4": "185.40.234.113", - "IPv6": "2a00:dd80:20::8f", - "CanPort80": true - }, - { - "Name": "4i", - "RegionID": 4, - "HostName": "derp4i.tailscale.com", - "IPv4": "185.40.234.53", - "IPv6": "2a00:dd80:20::8a6", - "CanPort80": true - }, - { - "Name": "4f", - "RegionID": 4, - "HostName": "derp4f.tailscale.com", - "IPv4": "185.40.234.219", - "IPv6": "2a00:dd80:20::a25", - "CanPort80": true - } - ] - }, - "5": { - "RegionID": 5, - "RegionCode": "syd", - "RegionName": "Sydney", - "Latitude": -33.867778, - "Longitude": 151.21, - "Nodes": [ - { - "Name": "5f", - "RegionID": 5, - "HostName": "derp5f.tailscale.com", - "IPv4": "172.105.166.103", - "IPv6": "2400:8907::2000:ccff:fe1f:80da", - "CanPort80": true - }, - { - "Name": "5g", - "RegionID": 5, - "HostName": "derp5g.tailscale.com", - "IPv4": "172.105.169.57", - "IPv6": "2400:8907::2000:2fff:fea7:57f4", - "CanPort80": true - }, - { - "Name": "5e", - "RegionID": 5, - "HostName": "derp5e.tailscale.com", - "IPv4": "172.105.179.230", - "IPv6": "2400:8907::2000:ceff:fe8d:4f4e", - "CanPort80": true - } - ] - }, - "6": { - "RegionID": 6, - "RegionCode": "blr", - "RegionName": "Bengaluru", - "Latitude": 12.9716, - "Longitude": 77.5946, - "Nodes": [ - { - "Name": "6a", - "RegionID": 6, - "HostName": "derp6.tailscale.com", - "IPv4": "68.183.90.120", - "IPv6": "2400:6180:100:d0::982:d001", - "CanPort80": true - } - ] - }, - "7": { - "RegionID": 7, - "RegionCode": "tok", - "RegionName": "Tokyo", - "Latitude": 35.6764, - "Longitude": 139.65, - "Nodes": [ - { - "Name": "7g", - "RegionID": 7, - "HostName": "derp7g.tailscale.com", - "IPv4": "172.238.6.179", - "IPv6": "2600:3c18::2000:3fff:fe80:3ebd", - "CanPort80": true - }, - { - "Name": "7f", - "RegionID": 7, - "HostName": "derp7f.tailscale.com", - "IPv4": "172.238.6.34", - "IPv6": "2600:3c18::2000:acff:fe8e:3ed5", - "CanPort80": true - }, - { - "Name": "7h", - "RegionID": 7, - "HostName": "derp7h.tailscale.com", - "IPv4": "172.237.28.183", - "IPv6": "2600:3c18::2000:b1ff:fea9:4560", - "CanPort80": true - }, - { - "Name": "7e", - "RegionID": 7, - "HostName": "derp7e.tailscale.com", - "IPv4": "172.238.6.180", - "IPv6": "2600:3c18::2000:60ff:fe0f:6e83", - "STUNOnly": true, - "CanPort80": true - } - ] - }, - "8": { - "RegionID": 8, - "RegionCode": "lhr", - "RegionName": "London", - "Latitude": 51.5072, - "Longitude": 0.1276, - "Nodes": [ - { - "Name": "8f", - "RegionID": 8, - "HostName": "derp8f.tailscale.com", - "IPv4": "176.58.88.183", - "IPv6": "2a00:dd80:3a::dfa", - "CanPort80": true - }, - { - "Name": "8g", - "RegionID": 8, - "HostName": "derp8g.tailscale.com", - "IPv4": "176.58.92.254", - "IPv6": "2a00:dd80:3a::ed", - "CanPort80": true - }, - { - "Name": "8e", - "RegionID": 8, - "HostName": "derp8e.tailscale.com", - "IPv4": "176.58.92.144", - "IPv6": "2a00:dd80:3a::b33", - "CanPort80": true - } - ] - }, - "9": { - "RegionID": 9, - "RegionCode": "dfw", - "RegionName": "Dallas", - "Latitude": 32.779167, - "Longitude": -96.808889, - "Nodes": [ - { - "Name": "9e", - "RegionID": 9, - "HostName": "derp9e.tailscale.com", - "IPv4": "192.73.248.83", - "IPv6": "2607:f740:100::359", - "CanPort80": true - }, - { - "Name": "9f", - "RegionID": 9, - "HostName": "derp9f.tailscale.com", - "IPv4": "209.177.156.197", - "IPv6": "2607:f740:100::cad", - "CanPort80": true - }, - { - "Name": "9d", - "RegionID": 9, - "HostName": "derp9d.tailscale.com", - "IPv4": "209.177.156.94", - "IPv6": "2607:f740:100::c05", - "CanPort80": true - } - ] - } - } - }, - "DisplayMessages": null, - "TKAEnabled": false, - "TKAHead": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", - "Domain": "kratail2tid@passkey", - "DomainAuditLogID": "", - "UserProfiles": { - "4031348162889210": { - "ID": 4031348162889210, - "LoginName": "tagged-client.tail78f774.ts.net", - "DisplayName": "tagged-client" - } - } + "PacketFilterRules": 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.124.195.93": { - "peer_name": "exit-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-prod/tailscaled.sock whois --json 100.124.195.93", - "response": null - }, - "100.116.18.24": { - "peer_name": "exit-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-prod/tailscaled.sock whois --json 100.116.18.24", - "response": null - }, - "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.107.162.14": { - "peer_name": "group-a-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-prod/tailscaled.sock whois --json 100.107.162.14", - "response": null - }, - "100.77.135.18": { - "peer_name": "group-b-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-prod/tailscaled.sock whois --json 100.77.135.18", - "response": null - }, - "100.105.127.107": { - "peer_name": "multi-exit-router", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-prod/tailscaled.sock whois --json 100.105.127.107", - "response": null - }, - "100.109.43.124": { - "peer_name": "router-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-prod/tailscaled.sock whois --json 100.109.43.124", - "response": null - }, - "100.65.172.123": { - "peer_name": "router-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-prod/tailscaled.sock whois --json 100.65.172.123", - "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 - } - }, "netmap": { - "SelfNode": { - "ID": 301794218943819, - "StableID": "neJag6dgM311CNTRL", - "Name": "tagged-prod.tail78f774.ts.net.", - "User": 301794218943819, - "Key": "nodekey:54c79503322a5d0a9701ce19d11963cfff9c05667ac06ef976af86275ba7080e", - "DiscoKey": "discokey:5e4985009b42b7c82ffb2cb5fa735a90f967f6b3f886b71268ebbeffa324556b", - "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:46164", "10.65.0.27:46164", "172.17.0.1:46164"], - "Hostinfo": { - "Hostname": "tagged-prod", - "Services": [ - { "Proto": "peerapi4", "Port": 37678 }, - { "Proto": "peerapi6", "Port": 37678 }, - { "Proto": "peerapi-dns-proxy", "Port": 1 } - ] - }, - "Created": "2026-02-20T14:03:12.89283153Z", - "Tags": ["tag:prod"], - "MachineAuthorized": true, - "CapMap": { - "https://tailscale.com/cap/file-sharing": null, - "https://tailscale.com/cap/is-owner": null, - "https://tailscale.com/cap/ssh": null, - "https://tailscale.com/cap/tailnet-lock": null, - "probe-udp-lifetime": null, - "ssh-behavior-v1": null, - "ssh-env-vars": null, - "store-appc-routes": null, - "tailnet-display-name": ["kratail2tid@passkey"] - }, - "ComputedName": "tagged-prod", - "ComputedNameWithHost": "tagged-prod" - }, - "AllCaps": [ - "https://tailscale.com/cap/tailnet-lock", - "probe-udp-lifetime", - "https://tailscale.com/cap/file-sharing", - "ssh-env-vars", - "tailnet-display-name", - "https://tailscale.com/cap/ssh", - "ssh-behavior-v1", - "https://tailscale.com/cap/is-owner", - "store-appc-routes" - ], - "NodeKey": "nodekey:54c79503322a5d0a9701ce19d11963cfff9c05667ac06ef976af86275ba7080e", - "MachineKey": "mkey:af805e02d1594ab20eaf3e2df5b379eec6453fa649344fcd564b7bae20e46a63", "Peers": [], - "DNS": { - "Routes": { - "tail78f774.ts.net.": null, - "ts.net.": [{ "Addr": "199.247.155.53" }, { "Addr": "2620:111:8007::53" }] - }, - "Domains": ["tail78f774.ts.net"], - "Proxied": true, - "ExitNodeFilteredSet": [".ts.net", ".tailscale.net"] - }, - "PacketFilter": [], - "PacketFilterRules": null, - "SSHPolicy": { "rules": [] }, - "CollectServices": false, - "DERPMap": { - "Regions": { - "1": { - "RegionID": 1, - "RegionCode": "nyc", - "RegionName": "New York City", - "Latitude": 40.7128, - "Longitude": -74.006, - "Nodes": [ - { - "Name": "1h", - "RegionID": 1, - "HostName": "derp1h.tailscale.com", - "IPv4": "199.38.181.93", - "IPv6": "2607:f740:f::afd", - "CanPort80": true - }, - { - "Name": "1g", - "RegionID": 1, - "HostName": "derp1g.tailscale.com", - "IPv4": "209.177.145.120", - "IPv6": "2607:f740:f::3eb", - "CanPort80": true - }, - { - "Name": "1i", - "RegionID": 1, - "HostName": "derp1i.tailscale.com", - "IPv4": "199.38.181.103", - "IPv6": "2607:f740:f::e19", - "CanPort80": true - }, - { - "Name": "1f", - "RegionID": 1, - "HostName": "derp1f.tailscale.com", - "IPv4": "199.38.181.104", - "IPv6": "2607:f740:f::bc", - "CanPort80": true - } - ] - }, - "10": { - "RegionID": 10, - "RegionCode": "sea", - "RegionName": "Seattle", - "Latitude": 47.609722, - "Longitude": -122.333056, - "Nodes": [ - { - "Name": "10c", - "RegionID": 10, - "HostName": "derp10c.tailscale.com", - "IPv4": "192.73.240.121", - "IPv6": "2607:f740:14::40c", - "CanPort80": true - }, - { - "Name": "10d", - "RegionID": 10, - "HostName": "derp10d.tailscale.com", - "IPv4": "192.73.240.132", - "IPv6": "2607:f740:14::500", - "CanPort80": true - }, - { - "Name": "10b", - "RegionID": 10, - "HostName": "derp10b.tailscale.com", - "IPv4": "192.73.240.161", - "IPv6": "2607:f740:14::61c", - "CanPort80": true - } - ] - }, - "11": { - "RegionID": 11, - "RegionCode": "sao", - "RegionName": "São Paulo", - "Latitude": -23.55, - "Longitude": -46.633333, - "Nodes": [ - { - "Name": "11f", - "RegionID": 11, - "HostName": "derp11f.tailscale.com", - "IPv4": "172.237.61.197", - "IPv6": "2600:3c0d::2000:3bff:fe44:6166", - "CanPort80": true - }, - { - "Name": "11g", - "RegionID": 11, - "HostName": "derp11g.tailscale.com", - "IPv4": "172.237.61.190", - "IPv6": "2600:3c0d::2000:62ff:febe:2e67", - "CanPort80": true - }, - { - "Name": "11e", - "RegionID": 11, - "HostName": "derp11e.tailscale.com", - "IPv4": "172.237.61.194", - "IPv6": "2600:3c0d::2000:d2ff:fe43:1790", - "CanPort80": true - } - ] - }, - "12": { - "RegionID": 12, - "RegionCode": "ord", - "RegionName": "Chicago", - "Latitude": 41.881944, - "Longitude": -87.627778, - "Nodes": [ - { - "Name": "12e", - "RegionID": 12, - "HostName": "derp12e.tailscale.com", - "IPv4": "209.177.158.15", - "IPv6": "2607:f740:e::b17", - "CanPort80": true - }, - { - "Name": "12f", - "RegionID": 12, - "HostName": "derp12f.tailscale.com", - "IPv4": "199.38.182.118", - "IPv6": "2607:f740:e::4c8", - "CanPort80": true - }, - { - "Name": "12d", - "RegionID": 12, - "HostName": "derp12d.tailscale.com", - "IPv4": "209.177.158.246", - "IPv6": "2607:f740:e::811", - "CanPort80": true - } - ] - }, - "13": { - "RegionID": 13, - "RegionCode": "den", - "RegionName": "Denver", - "Latitude": 39.7392, - "Longitude": -104.9849, - "Nodes": [ - { - "Name": "13c", - "RegionID": 13, - "HostName": "derp13c.tailscale.com", - "IPv4": "192.73.242.28", - "IPv6": "2607:f740:16::5c", - "CanPort80": true - }, - { - "Name": "13d", - "RegionID": 13, - "HostName": "derp13d.tailscale.com", - "IPv4": "192.73.242.204", - "IPv6": "2607:f740:16::c23", - "CanPort80": true - }, - { - "Name": "13b", - "RegionID": 13, - "HostName": "derp13b.tailscale.com", - "IPv4": "192.73.242.187", - "IPv6": "2607:f740:16::640", - "CanPort80": true - } - ] - }, - "14": { - "RegionID": 14, - "RegionCode": "ams", - "RegionName": "Amsterdam", - "Latitude": 52.372778, - "Longitude": 4.893611, - "Nodes": [ - { - "Name": "14c", - "RegionID": 14, - "HostName": "derp14c.tailscale.com", - "IPv4": "176.58.93.147", - "IPv6": "2a00:dd80:3c::b09", - "CanPort80": true - }, - { - "Name": "14d", - "RegionID": 14, - "HostName": "derp14d.tailscale.com", - "IPv4": "176.58.93.154", - "IPv6": "2a00:dd80:3c::3d5", - "CanPort80": true - }, - { - "Name": "14b", - "RegionID": 14, - "HostName": "derp14b.tailscale.com", - "IPv4": "176.58.93.248", - "IPv6": "2a00:dd80:3c::807", - "CanPort80": true - } - ] - }, - "15": { - "RegionID": 15, - "RegionCode": "jnb", - "RegionName": "Johannesburg", - "Latitude": -26.204444, - "Longitude": 28.045556, - "Nodes": [ - { - "Name": "15c", - "RegionID": 15, - "HostName": "derp15c.tailscale.com", - "IPv4": "102.67.165.185", - "IPv6": "2c0f:edb0:0:10::b59", - "CanPort80": true - }, - { - "Name": "15d", - "RegionID": 15, - "HostName": "derp15d.tailscale.com", - "IPv4": "102.67.165.36", - "IPv6": "2c0f:edb0:0:10::599", - "CanPort80": true - }, - { - "Name": "15b", - "RegionID": 15, - "HostName": "derp15b.tailscale.com", - "IPv4": "102.67.165.90", - "IPv6": "2c0f:edb0:0:10::963", - "CanPort80": true - } - ] - }, - "16": { - "RegionID": 16, - "RegionCode": "mia", - "RegionName": "Miami", - "Latitude": 25.78, - "Longitude": -80.21, - "Nodes": [ - { - "Name": "16c", - "RegionID": 16, - "HostName": "derp16c.tailscale.com", - "IPv4": "192.73.243.229", - "IPv6": "2607:f740:17::4e4", - "CanPort80": true - }, - { - "Name": "16d", - "RegionID": 16, - "HostName": "derp16d.tailscale.com", - "IPv4": "192.73.243.141", - "IPv6": "2607:f740:17::475", - "CanPort80": true - }, - { - "Name": "16b", - "RegionID": 16, - "HostName": "derp16b.tailscale.com", - "IPv4": "192.73.243.135", - "IPv6": "2607:f740:17::476", - "CanPort80": true - } - ] - }, - "17": { - "RegionID": 17, - "RegionCode": "lax", - "RegionName": "Los Angeles", - "Latitude": 34.05, - "Longitude": -118.25, - "Nodes": [ - { - "Name": "17c", - "RegionID": 17, - "HostName": "derp17c.tailscale.com", - "IPv4": "208.111.40.12", - "IPv6": "2607:f740:c::10", - "CanPort80": true - }, - { - "Name": "17d", - "RegionID": 17, - "HostName": "derp17d.tailscale.com", - "IPv4": "208.111.40.216", - "IPv6": "2607:f740:c::e1b", - "CanPort80": true - }, - { - "Name": "17b", - "RegionID": 17, - "HostName": "derp17b.tailscale.com", - "IPv4": "192.73.244.245", - "IPv6": "2607:f740:c::646", - "CanPort80": true - } - ] - }, - "18": { - "RegionID": 18, - "RegionCode": "par", - "RegionName": "Paris", - "Latitude": 48.856667, - "Longitude": 2.352222, - "Nodes": [ - { - "Name": "18c", - "RegionID": 18, - "HostName": "derp18c.tailscale.com", - "IPv4": "176.58.90.207", - "IPv6": "2a00:dd80:3e::c19", - "CanPort80": true - }, - { - "Name": "18d", - "RegionID": 18, - "HostName": "derp18d.tailscale.com", - "IPv4": "176.58.90.104", - "IPv6": "2a00:dd80:3e::f2e", - "CanPort80": true - }, - { - "Name": "18b", - "RegionID": 18, - "HostName": "derp18b.tailscale.com", - "IPv4": "176.58.90.147", - "IPv6": "2a00:dd80:3e::363", - "CanPort80": true - } - ] - }, - "19": { - "RegionID": 19, - "RegionCode": "mad", - "RegionName": "Madrid", - "Latitude": 40.416944, - "Longitude": -3.703333, - "Nodes": [ - { - "Name": "19c", - "RegionID": 19, - "HostName": "derp19c.tailscale.com", - "IPv4": "45.159.97.61", - "IPv6": "2a00:dd80:14:10::20", - "CanPort80": true - }, - { - "Name": "19d", - "RegionID": 19, - "HostName": "derp19d.tailscale.com", - "IPv4": "45.159.97.233", - "IPv6": "2a00:dd80:14:10::34a", - "CanPort80": true - }, - { - "Name": "19b", - "RegionID": 19, - "HostName": "derp19b.tailscale.com", - "IPv4": "45.159.97.144", - "IPv6": "2a00:dd80:14:10::335", - "CanPort80": true - } - ] - }, - "2": { - "RegionID": 2, - "RegionCode": "sfo", - "RegionName": "San Francisco", - "Latitude": 37.7775, - "Longitude": -122.416389, - "Nodes": [ - { - "Name": "2e", - "RegionID": 2, - "HostName": "derp2e.tailscale.com", - "IPv4": "192.73.252.134", - "IPv6": "2607:f740:0:3f::44c", - "CanPort80": true - }, - { - "Name": "2f", - "RegionID": 2, - "HostName": "derp2f.tailscale.com", - "IPv4": "208.111.34.178", - "IPv6": "2607:f740:0:3f::f4", - "CanPort80": true - }, - { - "Name": "2d", - "RegionID": 2, - "HostName": "derp2d.tailscale.com", - "IPv4": "192.73.252.65", - "IPv6": "2607:f740:0:3f::287", - "CanPort80": true - } - ] - }, - "20": { - "RegionID": 20, - "RegionCode": "hkg", - "RegionName": "Hong Kong", - "Latitude": 22.3193, - "Longitude": 114.1694, - "Nodes": [ - { - "Name": "20c", - "RegionID": 20, - "HostName": "derp20c.tailscale.com", - "IPv4": "205.147.105.30", - "IPv6": "2403:2500:8000:1::5fb", - "CanPort80": true - }, - { - "Name": "20d", - "RegionID": 20, - "HostName": "derp20d.tailscale.com", - "IPv4": "205.147.105.78", - "IPv6": "2403:2500:8000:1::e9a", - "CanPort80": true - }, - { - "Name": "20b", - "RegionID": 20, - "HostName": "derp20b.tailscale.com", - "IPv4": "103.6.84.152", - "IPv6": "2403:2500:8000:1::ef6", - "CanPort80": true - } - ] - }, - "21": { - "RegionID": 21, - "RegionCode": "tor", - "RegionName": "Toronto", - "Latitude": 43.741667, - "Longitude": -79.373333, - "Nodes": [ - { - "Name": "21c", - "RegionID": 21, - "HostName": "derp21c.tailscale.com", - "IPv4": "162.248.221.215", - "IPv6": "2607:f740:50::f10", - "CanPort80": true - }, - { - "Name": "21d", - "RegionID": 21, - "HostName": "derp21d.tailscale.com", - "IPv4": "162.248.221.248", - "IPv6": "2607:f740:50::ca4", - "CanPort80": true - }, - { - "Name": "21b", - "RegionID": 21, - "HostName": "derp21b.tailscale.com", - "IPv4": "162.248.221.199", - "IPv6": "2607:f740:50::1d1", - "CanPort80": true - } - ] - }, - "22": { - "RegionID": 22, - "RegionCode": "waw", - "RegionName": "Warsaw", - "Latitude": 52.23, - "Longitude": 21.011111, - "Nodes": [ - { - "Name": "22c", - "RegionID": 22, - "HostName": "derp22c.tailscale.com", - "IPv4": "45.159.98.253", - "IPv6": "2a00:dd80:40:100::3f", - "CanPort80": true - }, - { - "Name": "22d", - "RegionID": 22, - "HostName": "derp22d.tailscale.com", - "IPv4": "45.159.98.145", - "IPv6": "2a00:dd80:40:100::211", - "CanPort80": true - }, - { - "Name": "22b", - "RegionID": 22, - "HostName": "derp22b.tailscale.com", - "IPv4": "45.159.98.196", - "IPv6": "2a00:dd80:40:100::316", - "CanPort80": true - } - ] - }, - "23": { - "RegionID": 23, - "RegionCode": "dbi", - "RegionName": "Dubai", - "Latitude": 25.263056, - "Longitude": 55.297222, - "Nodes": [ - { - "Name": "23c", - "RegionID": 23, - "HostName": "derp23c.tailscale.com", - "IPv4": "185.34.3.207", - "IPv6": "2a00:dd80:3f:100::a50", - "CanPort80": true - }, - { - "Name": "23d", - "RegionID": 23, - "HostName": "derp23d.tailscale.com", - "IPv4": "185.34.3.75", - "IPv6": "2a00:dd80:3f:100::97e", - "CanPort80": true - }, - { - "Name": "23b", - "RegionID": 23, - "HostName": "derp23b.tailscale.com", - "IPv4": "185.34.3.232", - "IPv6": "2a00:dd80:3f:100::76f", - "CanPort80": true - } - ] - }, - "24": { - "RegionID": 24, - "RegionCode": "hnl", - "RegionName": "Honolulu", - "Latitude": 21.306944, - "Longitude": -157.858333, - "Nodes": [ - { - "Name": "24c", - "RegionID": 24, - "HostName": "derp24c.tailscale.com", - "IPv4": "208.83.233.233", - "IPv6": "2001:19f0:c000:c591:5400:04ff:fe26:2c5f", - "CanPort80": true - }, - { - "Name": "24d", - "RegionID": 24, - "HostName": "derp24d.tailscale.com", - "IPv4": "208.72.155.133", - "IPv6": "2001:19f0:c000:c564:5400:04ff:fe26:2ba8", - "CanPort80": true - }, - { - "Name": "24b", - "RegionID": 24, - "HostName": "derp24b.tailscale.com", - "IPv4": "208.83.234.151", - "IPv6": "2001:19f0:c000:c586:5400:04ff:fe26:2ba6", - "CanPort80": true - } - ] - }, - "25": { - "RegionID": 25, - "RegionCode": "nai", - "RegionName": "Nairobi", - "Latitude": -1.286389, - "Longitude": 36.817222, - "Nodes": [ - { - "Name": "25c", - "RegionID": 25, - "HostName": "derp25c.tailscale.com", - "IPv4": "102.67.167.37", - "IPv6": "2c0f:edb0:2000:1::2c7", - "CanPort80": true - }, - { - "Name": "25d", - "RegionID": 25, - "HostName": "derp25d.tailscale.com", - "IPv4": "102.67.167.188", - "IPv6": "2c0f:edb0:2000:1::188", - "CanPort80": true - }, - { - "Name": "25b", - "RegionID": 25, - "HostName": "derp25b.tailscale.com", - "IPv4": "102.67.167.245", - "IPv6": "2c0f:edb0:2000:1::2e9", - "CanPort80": true - } - ] - }, - "26": { - "RegionID": 26, - "RegionCode": "nue", - "RegionName": "Nuremberg", - "Latitude": 49.453889, - "Longitude": 11.0775, - "Nodes": [ - { - "Name": "26c", - "RegionID": 26, - "HostName": "derp26c.tailscale.com", - "IPv4": "49.12.193.137", - "IPv6": "2a01:4f8:1c1c:5c70::1", - "CanPort80": true - }, - { - "Name": "26d", - "RegionID": 26, - "HostName": "derp26d.tailscale.com", - "IPv4": "49.13.204.141", - "IPv6": "2a01:4f8:1c0c:7d06::1", - "CanPort80": true - }, - { - "Name": "26b", - "RegionID": 26, - "HostName": "derp26b.tailscale.com", - "IPv4": "167.235.72.200", - "IPv6": "2a01:4f8:1c1c:47b6::1", - "CanPort80": true - } - ] - }, - "27": { - "RegionID": 27, - "RegionCode": "iad", - "RegionName": "Ashburn", - "Latitude": 39.03, - "Longitude": -77.471111, - "Nodes": [ - { - "Name": "27d", - "RegionID": 27, - "HostName": "derp27d.tailscale.com", - "IPv4": "178.156.152.106", - "IPv6": "2a01:4ff:f0:3c8e::1", - "CanPort80": true - }, - { - "Name": "27c", - "RegionID": 27, - "HostName": "derp27c.tailscale.com", - "IPv4": "178.156.152.91", - "IPv6": "2a01:4ff:f0:3913::1", - "CanPort80": true - }, - { - "Name": "27e", - "RegionID": 27, - "HostName": "derp27e.tailscale.com", - "IPv4": "178.156.134.232", - "IPv6": "2a01:4ff:f0:28d4::1", - "CanPort80": true - }, - { - "Name": "27b", - "RegionID": 27, - "HostName": "derp27b.tailscale.com", - "IPv4": "5.161.218.233", - "IPv6": "2a01:4ff:f0:3db9::1", - "CanPort80": true - } - ] - }, - "28": { - "RegionID": 28, - "RegionCode": "hel", - "RegionName": "Helsinki", - "Latitude": 60.170833, - "Longitude": 24.9375, - "Nodes": [ - { - "Name": "28c", - "RegionID": 28, - "HostName": "derp28c.tailscale.com", - "IPv4": "95.217.2.165", - "IPv6": "2a01:4f9:c012:cd74::1", - "CanPort80": true - }, - { - "Name": "28d", - "RegionID": 28, - "HostName": "derp28d.tailscale.com", - "IPv4": "157.180.28.32", - "IPv6": "2a01:4f9:c012:2e5b::1", - "CanPort80": true - }, - { - "Name": "28b", - "RegionID": 28, - "HostName": "derp28b.tailscale.com", - "IPv4": "65.109.143.62", - "IPv6": "2a01:4f9:c012:d55c::1", - "CanPort80": true - } - ] - }, - "3": { - "RegionID": 3, - "RegionCode": "sin", - "RegionName": "Singapore", - "Latitude": 1.3521, - "Longitude": 103.8198, - "Nodes": [ - { - "Name": "3g", - "RegionID": 3, - "HostName": "derp3g.tailscale.com", - "IPv4": "172.237.72.79", - "IPv6": "2600:3c15::2000:adff:fe08:6fab", - "CanPort80": true - }, - { - "Name": "3f", - "RegionID": 3, - "HostName": "derp3f.tailscale.com", - "IPv4": "172.237.72.8", - "IPv6": "2600:3c15::2000:53ff:fe48:a668", - "CanPort80": true - }, - { - "Name": "3h", - "RegionID": 3, - "HostName": "derp3h.tailscale.com", - "IPv4": "172.237.66.30", - "IPv6": "2600:3c15::2000:3dff:fe44:50aa", - "CanPort80": true - }, - { - "Name": "3e", - "RegionID": 3, - "HostName": "derp3e.tailscale.com", - "IPv4": "172.237.72.43", - "IPv6": "2600:3c15::2000:6cff:fee4:d799", - "CanPort80": true - } - ] - }, - "4": { - "RegionID": 4, - "RegionCode": "fra", - "RegionName": "Frankfurt", - "Latitude": 50.1109, - "Longitude": 8.6821, - "Nodes": [ - { - "Name": "4h", - "RegionID": 4, - "HostName": "derp4h.tailscale.com", - "IPv4": "185.40.234.77", - "IPv6": "2a00:dd80:20::bcf", - "CanPort80": true - }, - { - "Name": "4g", - "RegionID": 4, - "HostName": "derp4g.tailscale.com", - "IPv4": "185.40.234.113", - "IPv6": "2a00:dd80:20::8f", - "CanPort80": true - }, - { - "Name": "4i", - "RegionID": 4, - "HostName": "derp4i.tailscale.com", - "IPv4": "185.40.234.53", - "IPv6": "2a00:dd80:20::8a6", - "CanPort80": true - }, - { - "Name": "4f", - "RegionID": 4, - "HostName": "derp4f.tailscale.com", - "IPv4": "185.40.234.219", - "IPv6": "2a00:dd80:20::a25", - "CanPort80": true - } - ] - }, - "5": { - "RegionID": 5, - "RegionCode": "syd", - "RegionName": "Sydney", - "Latitude": -33.867778, - "Longitude": 151.21, - "Nodes": [ - { - "Name": "5f", - "RegionID": 5, - "HostName": "derp5f.tailscale.com", - "IPv4": "172.105.166.103", - "IPv6": "2400:8907::2000:ccff:fe1f:80da", - "CanPort80": true - }, - { - "Name": "5g", - "RegionID": 5, - "HostName": "derp5g.tailscale.com", - "IPv4": "172.105.169.57", - "IPv6": "2400:8907::2000:2fff:fea7:57f4", - "CanPort80": true - }, - { - "Name": "5e", - "RegionID": 5, - "HostName": "derp5e.tailscale.com", - "IPv4": "172.105.179.230", - "IPv6": "2400:8907::2000:ceff:fe8d:4f4e", - "CanPort80": true - } - ] - }, - "6": { - "RegionID": 6, - "RegionCode": "blr", - "RegionName": "Bengaluru", - "Latitude": 12.9716, - "Longitude": 77.5946, - "Nodes": [ - { - "Name": "6a", - "RegionID": 6, - "HostName": "derp6.tailscale.com", - "IPv4": "68.183.90.120", - "IPv6": "2400:6180:100:d0::982:d001", - "CanPort80": true - } - ] - }, - "7": { - "RegionID": 7, - "RegionCode": "tok", - "RegionName": "Tokyo", - "Latitude": 35.6764, - "Longitude": 139.65, - "Nodes": [ - { - "Name": "7g", - "RegionID": 7, - "HostName": "derp7g.tailscale.com", - "IPv4": "172.238.6.179", - "IPv6": "2600:3c18::2000:3fff:fe80:3ebd", - "CanPort80": true - }, - { - "Name": "7f", - "RegionID": 7, - "HostName": "derp7f.tailscale.com", - "IPv4": "172.238.6.34", - "IPv6": "2600:3c18::2000:acff:fe8e:3ed5", - "CanPort80": true - }, - { - "Name": "7h", - "RegionID": 7, - "HostName": "derp7h.tailscale.com", - "IPv4": "172.237.28.183", - "IPv6": "2600:3c18::2000:b1ff:fea9:4560", - "CanPort80": true - }, - { - "Name": "7e", - "RegionID": 7, - "HostName": "derp7e.tailscale.com", - "IPv4": "172.238.6.180", - "IPv6": "2600:3c18::2000:60ff:fe0f:6e83", - "STUNOnly": true, - "CanPort80": true - } - ] - }, - "8": { - "RegionID": 8, - "RegionCode": "lhr", - "RegionName": "London", - "Latitude": 51.5072, - "Longitude": 0.1276, - "Nodes": [ - { - "Name": "8f", - "RegionID": 8, - "HostName": "derp8f.tailscale.com", - "IPv4": "176.58.88.183", - "IPv6": "2a00:dd80:3a::dfa", - "CanPort80": true - }, - { - "Name": "8g", - "RegionID": 8, - "HostName": "derp8g.tailscale.com", - "IPv4": "176.58.92.254", - "IPv6": "2a00:dd80:3a::ed", - "CanPort80": true - }, - { - "Name": "8e", - "RegionID": 8, - "HostName": "derp8e.tailscale.com", - "IPv4": "176.58.92.144", - "IPv6": "2a00:dd80:3a::b33", - "CanPort80": true - } - ] - }, - "9": { - "RegionID": 9, - "RegionCode": "dfw", - "RegionName": "Dallas", - "Latitude": 32.779167, - "Longitude": -96.808889, - "Nodes": [ - { - "Name": "9e", - "RegionID": 9, - "HostName": "derp9e.tailscale.com", - "IPv4": "192.73.248.83", - "IPv6": "2607:f740:100::359", - "CanPort80": true - }, - { - "Name": "9f", - "RegionID": 9, - "HostName": "derp9f.tailscale.com", - "IPv4": "209.177.156.197", - "IPv6": "2607:f740:100::cad", - "CanPort80": true - }, - { - "Name": "9d", - "RegionID": 9, - "HostName": "derp9d.tailscale.com", - "IPv4": "209.177.156.94", - "IPv6": "2607:f740:100::c05", - "CanPort80": true - } - ] - } - } - }, - "DisplayMessages": null, - "TKAEnabled": false, - "TKAHead": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", - "Domain": "kratail2tid@passkey", - "DomainAuditLogID": "", - "UserProfiles": { - "301794218943819": { - "ID": 301794218943819, - "LoginName": "tagged-prod.tail78f774.ts.net", - "DisplayName": "tagged-prod" - } - } + "PacketFilterRules": 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.124.195.93": { - "peer_name": "exit-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-server/tailscaled.sock whois --json 100.124.195.93", - "response": null - }, - "100.116.18.24": { - "peer_name": "exit-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-server/tailscaled.sock whois --json 100.116.18.24", - "response": null - }, - "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.107.162.14": { - "peer_name": "group-a-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-server/tailscaled.sock whois --json 100.107.162.14", - "response": null - }, - "100.77.135.18": { - "peer_name": "group-b-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-server/tailscaled.sock whois --json 100.77.135.18", - "response": null - }, - "100.105.127.107": { - "peer_name": "multi-exit-router", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-server/tailscaled.sock whois --json 100.105.127.107", - "response": null - }, - "100.109.43.124": { - "peer_name": "router-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-server/tailscaled.sock whois --json 100.109.43.124", - "response": null - }, - "100.65.172.123": { - "peer_name": "router-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-server/tailscaled.sock whois --json 100.65.172.123", - "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 - } - }, "netmap": { - "SelfNode": { - "ID": 1440249486084758, - "StableID": "nXRbBtuHFC11CNTRL", - "Name": "tagged-server.tail78f774.ts.net.", - "User": 1440249486084758, - "Key": "nodekey:7d5c34b3e8082069d0a82838165c33f8e1b5eb32c6211c2d23d4fe8fb9ec4a19", - "DiscoKey": "discokey:aa5732e314175928eff41cc8f8a7b6edd4694b7d00e420a6573ecc11a88cb203", - "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:57971", "10.65.0.27:57971", "172.17.0.1:57971"], - "Hostinfo": { - "Hostname": "tagged-server", - "Services": [ - { "Proto": "peerapi4", "Port": 46499 }, - { "Proto": "peerapi6", "Port": 46499 }, - { "Proto": "peerapi-dns-proxy", "Port": 1 } - ] - }, - "Created": "2026-01-23T10:10:26.365653609Z", - "Tags": ["tag:server"], - "MachineAuthorized": true, - "CapMap": { - "https://tailscale.com/cap/file-sharing": null, - "https://tailscale.com/cap/is-owner": null, - "https://tailscale.com/cap/ssh": null, - "https://tailscale.com/cap/tailnet-lock": null, - "probe-udp-lifetime": null, - "ssh-behavior-v1": null, - "ssh-env-vars": null, - "store-appc-routes": null, - "tailnet-display-name": ["kratail2tid@passkey"] - }, - "ComputedName": "tagged-server", - "ComputedNameWithHost": "tagged-server" - }, - "AllCaps": [ - "tailnet-display-name", - "https://tailscale.com/cap/ssh", - "ssh-behavior-v1", - "ssh-env-vars", - "https://tailscale.com/cap/is-owner", - "https://tailscale.com/cap/file-sharing", - "https://tailscale.com/cap/tailnet-lock", - "probe-udp-lifetime", - "store-appc-routes" - ], - "NodeKey": "nodekey:7d5c34b3e8082069d0a82838165c33f8e1b5eb32c6211c2d23d4fe8fb9ec4a19", - "MachineKey": "mkey:7d9c55c88bb618638f3f049b95c797f64eb0259810146d2644fef3e53acfdf6b", "Peers": [], - "DNS": { - "Routes": { - "tail78f774.ts.net.": null, - "ts.net.": [{ "Addr": "199.247.155.53" }, { "Addr": "2620:111:8007::53" }] - }, - "Domains": ["tail78f774.ts.net"], - "Proxied": true, - "ExitNodeFilteredSet": [".ts.net", ".tailscale.net"] - }, - "PacketFilter": [], - "PacketFilterRules": null, - "SSHPolicy": { "rules": [] }, - "CollectServices": false, - "DERPMap": { - "Regions": { - "1": { - "RegionID": 1, - "RegionCode": "nyc", - "RegionName": "New York City", - "Latitude": 40.7128, - "Longitude": -74.006, - "Nodes": [ - { - "Name": "1h", - "RegionID": 1, - "HostName": "derp1h.tailscale.com", - "IPv4": "199.38.181.93", - "IPv6": "2607:f740:f::afd", - "CanPort80": true - }, - { - "Name": "1g", - "RegionID": 1, - "HostName": "derp1g.tailscale.com", - "IPv4": "209.177.145.120", - "IPv6": "2607:f740:f::3eb", - "CanPort80": true - }, - { - "Name": "1i", - "RegionID": 1, - "HostName": "derp1i.tailscale.com", - "IPv4": "199.38.181.103", - "IPv6": "2607:f740:f::e19", - "CanPort80": true - }, - { - "Name": "1f", - "RegionID": 1, - "HostName": "derp1f.tailscale.com", - "IPv4": "199.38.181.104", - "IPv6": "2607:f740:f::bc", - "CanPort80": true - } - ] - }, - "10": { - "RegionID": 10, - "RegionCode": "sea", - "RegionName": "Seattle", - "Latitude": 47.609722, - "Longitude": -122.333056, - "Nodes": [ - { - "Name": "10c", - "RegionID": 10, - "HostName": "derp10c.tailscale.com", - "IPv4": "192.73.240.121", - "IPv6": "2607:f740:14::40c", - "CanPort80": true - }, - { - "Name": "10d", - "RegionID": 10, - "HostName": "derp10d.tailscale.com", - "IPv4": "192.73.240.132", - "IPv6": "2607:f740:14::500", - "CanPort80": true - }, - { - "Name": "10b", - "RegionID": 10, - "HostName": "derp10b.tailscale.com", - "IPv4": "192.73.240.161", - "IPv6": "2607:f740:14::61c", - "CanPort80": true - } - ] - }, - "11": { - "RegionID": 11, - "RegionCode": "sao", - "RegionName": "São Paulo", - "Latitude": -23.55, - "Longitude": -46.633333, - "Nodes": [ - { - "Name": "11f", - "RegionID": 11, - "HostName": "derp11f.tailscale.com", - "IPv4": "172.237.61.197", - "IPv6": "2600:3c0d::2000:3bff:fe44:6166", - "CanPort80": true - }, - { - "Name": "11g", - "RegionID": 11, - "HostName": "derp11g.tailscale.com", - "IPv4": "172.237.61.190", - "IPv6": "2600:3c0d::2000:62ff:febe:2e67", - "CanPort80": true - }, - { - "Name": "11e", - "RegionID": 11, - "HostName": "derp11e.tailscale.com", - "IPv4": "172.237.61.194", - "IPv6": "2600:3c0d::2000:d2ff:fe43:1790", - "CanPort80": true - } - ] - }, - "12": { - "RegionID": 12, - "RegionCode": "ord", - "RegionName": "Chicago", - "Latitude": 41.881944, - "Longitude": -87.627778, - "Nodes": [ - { - "Name": "12e", - "RegionID": 12, - "HostName": "derp12e.tailscale.com", - "IPv4": "209.177.158.15", - "IPv6": "2607:f740:e::b17", - "CanPort80": true - }, - { - "Name": "12f", - "RegionID": 12, - "HostName": "derp12f.tailscale.com", - "IPv4": "199.38.182.118", - "IPv6": "2607:f740:e::4c8", - "CanPort80": true - }, - { - "Name": "12d", - "RegionID": 12, - "HostName": "derp12d.tailscale.com", - "IPv4": "209.177.158.246", - "IPv6": "2607:f740:e::811", - "CanPort80": true - } - ] - }, - "13": { - "RegionID": 13, - "RegionCode": "den", - "RegionName": "Denver", - "Latitude": 39.7392, - "Longitude": -104.9849, - "Nodes": [ - { - "Name": "13c", - "RegionID": 13, - "HostName": "derp13c.tailscale.com", - "IPv4": "192.73.242.28", - "IPv6": "2607:f740:16::5c", - "CanPort80": true - }, - { - "Name": "13d", - "RegionID": 13, - "HostName": "derp13d.tailscale.com", - "IPv4": "192.73.242.204", - "IPv6": "2607:f740:16::c23", - "CanPort80": true - }, - { - "Name": "13b", - "RegionID": 13, - "HostName": "derp13b.tailscale.com", - "IPv4": "192.73.242.187", - "IPv6": "2607:f740:16::640", - "CanPort80": true - } - ] - }, - "14": { - "RegionID": 14, - "RegionCode": "ams", - "RegionName": "Amsterdam", - "Latitude": 52.372778, - "Longitude": 4.893611, - "Nodes": [ - { - "Name": "14c", - "RegionID": 14, - "HostName": "derp14c.tailscale.com", - "IPv4": "176.58.93.147", - "IPv6": "2a00:dd80:3c::b09", - "CanPort80": true - }, - { - "Name": "14d", - "RegionID": 14, - "HostName": "derp14d.tailscale.com", - "IPv4": "176.58.93.154", - "IPv6": "2a00:dd80:3c::3d5", - "CanPort80": true - }, - { - "Name": "14b", - "RegionID": 14, - "HostName": "derp14b.tailscale.com", - "IPv4": "176.58.93.248", - "IPv6": "2a00:dd80:3c::807", - "CanPort80": true - } - ] - }, - "15": { - "RegionID": 15, - "RegionCode": "jnb", - "RegionName": "Johannesburg", - "Latitude": -26.204444, - "Longitude": 28.045556, - "Nodes": [ - { - "Name": "15c", - "RegionID": 15, - "HostName": "derp15c.tailscale.com", - "IPv4": "102.67.165.185", - "IPv6": "2c0f:edb0:0:10::b59", - "CanPort80": true - }, - { - "Name": "15d", - "RegionID": 15, - "HostName": "derp15d.tailscale.com", - "IPv4": "102.67.165.36", - "IPv6": "2c0f:edb0:0:10::599", - "CanPort80": true - }, - { - "Name": "15b", - "RegionID": 15, - "HostName": "derp15b.tailscale.com", - "IPv4": "102.67.165.90", - "IPv6": "2c0f:edb0:0:10::963", - "CanPort80": true - } - ] - }, - "16": { - "RegionID": 16, - "RegionCode": "mia", - "RegionName": "Miami", - "Latitude": 25.78, - "Longitude": -80.21, - "Nodes": [ - { - "Name": "16c", - "RegionID": 16, - "HostName": "derp16c.tailscale.com", - "IPv4": "192.73.243.229", - "IPv6": "2607:f740:17::4e4", - "CanPort80": true - }, - { - "Name": "16d", - "RegionID": 16, - "HostName": "derp16d.tailscale.com", - "IPv4": "192.73.243.141", - "IPv6": "2607:f740:17::475", - "CanPort80": true - }, - { - "Name": "16b", - "RegionID": 16, - "HostName": "derp16b.tailscale.com", - "IPv4": "192.73.243.135", - "IPv6": "2607:f740:17::476", - "CanPort80": true - } - ] - }, - "17": { - "RegionID": 17, - "RegionCode": "lax", - "RegionName": "Los Angeles", - "Latitude": 34.05, - "Longitude": -118.25, - "Nodes": [ - { - "Name": "17c", - "RegionID": 17, - "HostName": "derp17c.tailscale.com", - "IPv4": "208.111.40.12", - "IPv6": "2607:f740:c::10", - "CanPort80": true - }, - { - "Name": "17d", - "RegionID": 17, - "HostName": "derp17d.tailscale.com", - "IPv4": "208.111.40.216", - "IPv6": "2607:f740:c::e1b", - "CanPort80": true - }, - { - "Name": "17b", - "RegionID": 17, - "HostName": "derp17b.tailscale.com", - "IPv4": "192.73.244.245", - "IPv6": "2607:f740:c::646", - "CanPort80": true - } - ] - }, - "18": { - "RegionID": 18, - "RegionCode": "par", - "RegionName": "Paris", - "Latitude": 48.856667, - "Longitude": 2.352222, - "Nodes": [ - { - "Name": "18c", - "RegionID": 18, - "HostName": "derp18c.tailscale.com", - "IPv4": "176.58.90.207", - "IPv6": "2a00:dd80:3e::c19", - "CanPort80": true - }, - { - "Name": "18d", - "RegionID": 18, - "HostName": "derp18d.tailscale.com", - "IPv4": "176.58.90.104", - "IPv6": "2a00:dd80:3e::f2e", - "CanPort80": true - }, - { - "Name": "18b", - "RegionID": 18, - "HostName": "derp18b.tailscale.com", - "IPv4": "176.58.90.147", - "IPv6": "2a00:dd80:3e::363", - "CanPort80": true - } - ] - }, - "19": { - "RegionID": 19, - "RegionCode": "mad", - "RegionName": "Madrid", - "Latitude": 40.416944, - "Longitude": -3.703333, - "Nodes": [ - { - "Name": "19c", - "RegionID": 19, - "HostName": "derp19c.tailscale.com", - "IPv4": "45.159.97.61", - "IPv6": "2a00:dd80:14:10::20", - "CanPort80": true - }, - { - "Name": "19d", - "RegionID": 19, - "HostName": "derp19d.tailscale.com", - "IPv4": "45.159.97.233", - "IPv6": "2a00:dd80:14:10::34a", - "CanPort80": true - }, - { - "Name": "19b", - "RegionID": 19, - "HostName": "derp19b.tailscale.com", - "IPv4": "45.159.97.144", - "IPv6": "2a00:dd80:14:10::335", - "CanPort80": true - } - ] - }, - "2": { - "RegionID": 2, - "RegionCode": "sfo", - "RegionName": "San Francisco", - "Latitude": 37.7775, - "Longitude": -122.416389, - "Nodes": [ - { - "Name": "2e", - "RegionID": 2, - "HostName": "derp2e.tailscale.com", - "IPv4": "192.73.252.134", - "IPv6": "2607:f740:0:3f::44c", - "CanPort80": true - }, - { - "Name": "2f", - "RegionID": 2, - "HostName": "derp2f.tailscale.com", - "IPv4": "208.111.34.178", - "IPv6": "2607:f740:0:3f::f4", - "CanPort80": true - }, - { - "Name": "2d", - "RegionID": 2, - "HostName": "derp2d.tailscale.com", - "IPv4": "192.73.252.65", - "IPv6": "2607:f740:0:3f::287", - "CanPort80": true - } - ] - }, - "20": { - "RegionID": 20, - "RegionCode": "hkg", - "RegionName": "Hong Kong", - "Latitude": 22.3193, - "Longitude": 114.1694, - "Nodes": [ - { - "Name": "20c", - "RegionID": 20, - "HostName": "derp20c.tailscale.com", - "IPv4": "205.147.105.30", - "IPv6": "2403:2500:8000:1::5fb", - "CanPort80": true - }, - { - "Name": "20d", - "RegionID": 20, - "HostName": "derp20d.tailscale.com", - "IPv4": "205.147.105.78", - "IPv6": "2403:2500:8000:1::e9a", - "CanPort80": true - }, - { - "Name": "20b", - "RegionID": 20, - "HostName": "derp20b.tailscale.com", - "IPv4": "103.6.84.152", - "IPv6": "2403:2500:8000:1::ef6", - "CanPort80": true - } - ] - }, - "21": { - "RegionID": 21, - "RegionCode": "tor", - "RegionName": "Toronto", - "Latitude": 43.741667, - "Longitude": -79.373333, - "Nodes": [ - { - "Name": "21c", - "RegionID": 21, - "HostName": "derp21c.tailscale.com", - "IPv4": "162.248.221.215", - "IPv6": "2607:f740:50::f10", - "CanPort80": true - }, - { - "Name": "21d", - "RegionID": 21, - "HostName": "derp21d.tailscale.com", - "IPv4": "162.248.221.248", - "IPv6": "2607:f740:50::ca4", - "CanPort80": true - }, - { - "Name": "21b", - "RegionID": 21, - "HostName": "derp21b.tailscale.com", - "IPv4": "162.248.221.199", - "IPv6": "2607:f740:50::1d1", - "CanPort80": true - } - ] - }, - "22": { - "RegionID": 22, - "RegionCode": "waw", - "RegionName": "Warsaw", - "Latitude": 52.23, - "Longitude": 21.011111, - "Nodes": [ - { - "Name": "22c", - "RegionID": 22, - "HostName": "derp22c.tailscale.com", - "IPv4": "45.159.98.253", - "IPv6": "2a00:dd80:40:100::3f", - "CanPort80": true - }, - { - "Name": "22d", - "RegionID": 22, - "HostName": "derp22d.tailscale.com", - "IPv4": "45.159.98.145", - "IPv6": "2a00:dd80:40:100::211", - "CanPort80": true - }, - { - "Name": "22b", - "RegionID": 22, - "HostName": "derp22b.tailscale.com", - "IPv4": "45.159.98.196", - "IPv6": "2a00:dd80:40:100::316", - "CanPort80": true - } - ] - }, - "23": { - "RegionID": 23, - "RegionCode": "dbi", - "RegionName": "Dubai", - "Latitude": 25.263056, - "Longitude": 55.297222, - "Nodes": [ - { - "Name": "23c", - "RegionID": 23, - "HostName": "derp23c.tailscale.com", - "IPv4": "185.34.3.207", - "IPv6": "2a00:dd80:3f:100::a50", - "CanPort80": true - }, - { - "Name": "23d", - "RegionID": 23, - "HostName": "derp23d.tailscale.com", - "IPv4": "185.34.3.75", - "IPv6": "2a00:dd80:3f:100::97e", - "CanPort80": true - }, - { - "Name": "23b", - "RegionID": 23, - "HostName": "derp23b.tailscale.com", - "IPv4": "185.34.3.232", - "IPv6": "2a00:dd80:3f:100::76f", - "CanPort80": true - } - ] - }, - "24": { - "RegionID": 24, - "RegionCode": "hnl", - "RegionName": "Honolulu", - "Latitude": 21.306944, - "Longitude": -157.858333, - "Nodes": [ - { - "Name": "24c", - "RegionID": 24, - "HostName": "derp24c.tailscale.com", - "IPv4": "208.83.233.233", - "IPv6": "2001:19f0:c000:c591:5400:04ff:fe26:2c5f", - "CanPort80": true - }, - { - "Name": "24d", - "RegionID": 24, - "HostName": "derp24d.tailscale.com", - "IPv4": "208.72.155.133", - "IPv6": "2001:19f0:c000:c564:5400:04ff:fe26:2ba8", - "CanPort80": true - }, - { - "Name": "24b", - "RegionID": 24, - "HostName": "derp24b.tailscale.com", - "IPv4": "208.83.234.151", - "IPv6": "2001:19f0:c000:c586:5400:04ff:fe26:2ba6", - "CanPort80": true - } - ] - }, - "25": { - "RegionID": 25, - "RegionCode": "nai", - "RegionName": "Nairobi", - "Latitude": -1.286389, - "Longitude": 36.817222, - "Nodes": [ - { - "Name": "25c", - "RegionID": 25, - "HostName": "derp25c.tailscale.com", - "IPv4": "102.67.167.37", - "IPv6": "2c0f:edb0:2000:1::2c7", - "CanPort80": true - }, - { - "Name": "25d", - "RegionID": 25, - "HostName": "derp25d.tailscale.com", - "IPv4": "102.67.167.188", - "IPv6": "2c0f:edb0:2000:1::188", - "CanPort80": true - }, - { - "Name": "25b", - "RegionID": 25, - "HostName": "derp25b.tailscale.com", - "IPv4": "102.67.167.245", - "IPv6": "2c0f:edb0:2000:1::2e9", - "CanPort80": true - } - ] - }, - "26": { - "RegionID": 26, - "RegionCode": "nue", - "RegionName": "Nuremberg", - "Latitude": 49.453889, - "Longitude": 11.0775, - "Nodes": [ - { - "Name": "26c", - "RegionID": 26, - "HostName": "derp26c.tailscale.com", - "IPv4": "49.12.193.137", - "IPv6": "2a01:4f8:1c1c:5c70::1", - "CanPort80": true - }, - { - "Name": "26d", - "RegionID": 26, - "HostName": "derp26d.tailscale.com", - "IPv4": "49.13.204.141", - "IPv6": "2a01:4f8:1c0c:7d06::1", - "CanPort80": true - }, - { - "Name": "26b", - "RegionID": 26, - "HostName": "derp26b.tailscale.com", - "IPv4": "167.235.72.200", - "IPv6": "2a01:4f8:1c1c:47b6::1", - "CanPort80": true - } - ] - }, - "27": { - "RegionID": 27, - "RegionCode": "iad", - "RegionName": "Ashburn", - "Latitude": 39.03, - "Longitude": -77.471111, - "Nodes": [ - { - "Name": "27d", - "RegionID": 27, - "HostName": "derp27d.tailscale.com", - "IPv4": "178.156.152.106", - "IPv6": "2a01:4ff:f0:3c8e::1", - "CanPort80": true - }, - { - "Name": "27c", - "RegionID": 27, - "HostName": "derp27c.tailscale.com", - "IPv4": "178.156.152.91", - "IPv6": "2a01:4ff:f0:3913::1", - "CanPort80": true - }, - { - "Name": "27e", - "RegionID": 27, - "HostName": "derp27e.tailscale.com", - "IPv4": "178.156.134.232", - "IPv6": "2a01:4ff:f0:28d4::1", - "CanPort80": true - }, - { - "Name": "27b", - "RegionID": 27, - "HostName": "derp27b.tailscale.com", - "IPv4": "5.161.218.233", - "IPv6": "2a01:4ff:f0:3db9::1", - "CanPort80": true - } - ] - }, - "28": { - "RegionID": 28, - "RegionCode": "hel", - "RegionName": "Helsinki", - "Latitude": 60.170833, - "Longitude": 24.9375, - "Nodes": [ - { - "Name": "28c", - "RegionID": 28, - "HostName": "derp28c.tailscale.com", - "IPv4": "95.217.2.165", - "IPv6": "2a01:4f9:c012:cd74::1", - "CanPort80": true - }, - { - "Name": "28d", - "RegionID": 28, - "HostName": "derp28d.tailscale.com", - "IPv4": "157.180.28.32", - "IPv6": "2a01:4f9:c012:2e5b::1", - "CanPort80": true - }, - { - "Name": "28b", - "RegionID": 28, - "HostName": "derp28b.tailscale.com", - "IPv4": "65.109.143.62", - "IPv6": "2a01:4f9:c012:d55c::1", - "CanPort80": true - } - ] - }, - "3": { - "RegionID": 3, - "RegionCode": "sin", - "RegionName": "Singapore", - "Latitude": 1.3521, - "Longitude": 103.8198, - "Nodes": [ - { - "Name": "3g", - "RegionID": 3, - "HostName": "derp3g.tailscale.com", - "IPv4": "172.237.72.79", - "IPv6": "2600:3c15::2000:adff:fe08:6fab", - "CanPort80": true - }, - { - "Name": "3f", - "RegionID": 3, - "HostName": "derp3f.tailscale.com", - "IPv4": "172.237.72.8", - "IPv6": "2600:3c15::2000:53ff:fe48:a668", - "CanPort80": true - }, - { - "Name": "3h", - "RegionID": 3, - "HostName": "derp3h.tailscale.com", - "IPv4": "172.237.66.30", - "IPv6": "2600:3c15::2000:3dff:fe44:50aa", - "CanPort80": true - }, - { - "Name": "3e", - "RegionID": 3, - "HostName": "derp3e.tailscale.com", - "IPv4": "172.237.72.43", - "IPv6": "2600:3c15::2000:6cff:fee4:d799", - "CanPort80": true - } - ] - }, - "4": { - "RegionID": 4, - "RegionCode": "fra", - "RegionName": "Frankfurt", - "Latitude": 50.1109, - "Longitude": 8.6821, - "Nodes": [ - { - "Name": "4h", - "RegionID": 4, - "HostName": "derp4h.tailscale.com", - "IPv4": "185.40.234.77", - "IPv6": "2a00:dd80:20::bcf", - "CanPort80": true - }, - { - "Name": "4g", - "RegionID": 4, - "HostName": "derp4g.tailscale.com", - "IPv4": "185.40.234.113", - "IPv6": "2a00:dd80:20::8f", - "CanPort80": true - }, - { - "Name": "4i", - "RegionID": 4, - "HostName": "derp4i.tailscale.com", - "IPv4": "185.40.234.53", - "IPv6": "2a00:dd80:20::8a6", - "CanPort80": true - }, - { - "Name": "4f", - "RegionID": 4, - "HostName": "derp4f.tailscale.com", - "IPv4": "185.40.234.219", - "IPv6": "2a00:dd80:20::a25", - "CanPort80": true - } - ] - }, - "5": { - "RegionID": 5, - "RegionCode": "syd", - "RegionName": "Sydney", - "Latitude": -33.867778, - "Longitude": 151.21, - "Nodes": [ - { - "Name": "5f", - "RegionID": 5, - "HostName": "derp5f.tailscale.com", - "IPv4": "172.105.166.103", - "IPv6": "2400:8907::2000:ccff:fe1f:80da", - "CanPort80": true - }, - { - "Name": "5g", - "RegionID": 5, - "HostName": "derp5g.tailscale.com", - "IPv4": "172.105.169.57", - "IPv6": "2400:8907::2000:2fff:fea7:57f4", - "CanPort80": true - }, - { - "Name": "5e", - "RegionID": 5, - "HostName": "derp5e.tailscale.com", - "IPv4": "172.105.179.230", - "IPv6": "2400:8907::2000:ceff:fe8d:4f4e", - "CanPort80": true - } - ] - }, - "6": { - "RegionID": 6, - "RegionCode": "blr", - "RegionName": "Bengaluru", - "Latitude": 12.9716, - "Longitude": 77.5946, - "Nodes": [ - { - "Name": "6a", - "RegionID": 6, - "HostName": "derp6.tailscale.com", - "IPv4": "68.183.90.120", - "IPv6": "2400:6180:100:d0::982:d001", - "CanPort80": true - } - ] - }, - "7": { - "RegionID": 7, - "RegionCode": "tok", - "RegionName": "Tokyo", - "Latitude": 35.6764, - "Longitude": 139.65, - "Nodes": [ - { - "Name": "7g", - "RegionID": 7, - "HostName": "derp7g.tailscale.com", - "IPv4": "172.238.6.179", - "IPv6": "2600:3c18::2000:3fff:fe80:3ebd", - "CanPort80": true - }, - { - "Name": "7f", - "RegionID": 7, - "HostName": "derp7f.tailscale.com", - "IPv4": "172.238.6.34", - "IPv6": "2600:3c18::2000:acff:fe8e:3ed5", - "CanPort80": true - }, - { - "Name": "7h", - "RegionID": 7, - "HostName": "derp7h.tailscale.com", - "IPv4": "172.237.28.183", - "IPv6": "2600:3c18::2000:b1ff:fea9:4560", - "CanPort80": true - }, - { - "Name": "7e", - "RegionID": 7, - "HostName": "derp7e.tailscale.com", - "IPv4": "172.238.6.180", - "IPv6": "2600:3c18::2000:60ff:fe0f:6e83", - "STUNOnly": true, - "CanPort80": true - } - ] - }, - "8": { - "RegionID": 8, - "RegionCode": "lhr", - "RegionName": "London", - "Latitude": 51.5072, - "Longitude": 0.1276, - "Nodes": [ - { - "Name": "8f", - "RegionID": 8, - "HostName": "derp8f.tailscale.com", - "IPv4": "176.58.88.183", - "IPv6": "2a00:dd80:3a::dfa", - "CanPort80": true - }, - { - "Name": "8g", - "RegionID": 8, - "HostName": "derp8g.tailscale.com", - "IPv4": "176.58.92.254", - "IPv6": "2a00:dd80:3a::ed", - "CanPort80": true - }, - { - "Name": "8e", - "RegionID": 8, - "HostName": "derp8e.tailscale.com", - "IPv4": "176.58.92.144", - "IPv6": "2a00:dd80:3a::b33", - "CanPort80": true - } - ] - }, - "9": { - "RegionID": 9, - "RegionCode": "dfw", - "RegionName": "Dallas", - "Latitude": 32.779167, - "Longitude": -96.808889, - "Nodes": [ - { - "Name": "9e", - "RegionID": 9, - "HostName": "derp9e.tailscale.com", - "IPv4": "192.73.248.83", - "IPv6": "2607:f740:100::359", - "CanPort80": true - }, - { - "Name": "9f", - "RegionID": 9, - "HostName": "derp9f.tailscale.com", - "IPv4": "209.177.156.197", - "IPv6": "2607:f740:100::cad", - "CanPort80": true - }, - { - "Name": "9d", - "RegionID": 9, - "HostName": "derp9d.tailscale.com", - "IPv4": "209.177.156.94", - "IPv6": "2607:f740:100::c05", - "CanPort80": true - } - ] - } - } - }, - "DisplayMessages": null, - "TKAEnabled": false, - "TKAHead": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", - "Domain": "kratail2tid@passkey", - "DomainAuditLogID": "", - "UserProfiles": { - "1440249486084758": { - "ID": 1440249486084758, - "LoginName": "tagged-server.tail78f774.ts.net", - "DisplayName": "tagged-server" - } - } + "PacketFilterRules": 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.124.195.93": { - "peer_name": "exit-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-kris/tailscaled.sock whois --json 100.124.195.93", - "response": null - }, - "100.116.18.24": { - "peer_name": "exit-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-kris/tailscaled.sock whois --json 100.116.18.24", - "response": null - }, - "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.107.162.14": { - "peer_name": "group-a-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-kris/tailscaled.sock whois --json 100.107.162.14", - "response": null - }, - "100.77.135.18": { - "peer_name": "group-b-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-kris/tailscaled.sock whois --json 100.77.135.18", - "response": null - }, - "100.105.127.107": { - "peer_name": "multi-exit-router", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-kris/tailscaled.sock whois --json 100.105.127.107", - "response": null - }, - "100.109.43.124": { - "peer_name": "router-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-kris/tailscaled.sock whois --json 100.109.43.124", - "response": null - }, - "100.65.172.123": { - "peer_name": "router-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-kris/tailscaled.sock whois --json 100.65.172.123", - "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 - } - }, "netmap": { - "SelfNode": { - "ID": 7728836216590060, - "StableID": "nf4dJTRQM321CNTRL", - "Name": "user-kris.tail78f774.ts.net.", - "User": 4538565228176803, - "Key": "nodekey:40d0f8f49fd519e4a4a2b7d278dcc8863254d4fb8b0219f1d1304cdd172e795f", - "KeyExpiry": "2026-08-19T14:09:34Z", - "DiscoKey": "discokey:60de987544859962048376b0950731bfa8017a7fc7df694ef376d4bb42eb9871", - "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:59717", "10.65.0.27:59717", "172.17.0.1:59717"], - "Hostinfo": { - "Hostname": "user-kris", - "Services": [ - { "Proto": "peerapi4", "Port": 40159 }, - { "Proto": "peerapi6", "Port": 40159 }, - { "Proto": "peerapi-dns-proxy", "Port": 1 } - ] - }, - "Created": "2026-02-20T14:09:34.803901523Z", - "MachineAuthorized": true, - "CapMap": { - "https://tailscale.com/cap/file-sharing": null, - "https://tailscale.com/cap/is-admin": null, - "https://tailscale.com/cap/ssh": null, - "https://tailscale.com/cap/tailnet-lock": null, - "probe-udp-lifetime": null, - "ssh-behavior-v1": null, - "ssh-env-vars": null, - "store-appc-routes": null, - "tailnet-display-name": ["kratail2tid@passkey"] - }, - "ComputedName": "user-kris", - "ComputedNameWithHost": "user-kris" - }, - "AllCaps": [ - "https://tailscale.com/cap/tailnet-lock", - "https://tailscale.com/cap/is-admin", - "probe-udp-lifetime", - "ssh-env-vars", - "ssh-behavior-v1", - "https://tailscale.com/cap/file-sharing", - "https://tailscale.com/cap/ssh", - "store-appc-routes", - "tailnet-display-name" - ], - "NodeKey": "nodekey:40d0f8f49fd519e4a4a2b7d278dcc8863254d4fb8b0219f1d1304cdd172e795f", - "MachineKey": "mkey:ff16066d907c58407972ee4a05a30386bd21bc0b420d8f9290eb70b95b3e1457", "Peers": [], - "DNS": { - "Routes": { - "tail78f774.ts.net.": null, - "ts.net.": [{ "Addr": "199.247.155.53" }, { "Addr": "2620:111:8007::53" }] - }, - "Domains": ["tail78f774.ts.net"], - "Proxied": true, - "ExitNodeFilteredSet": [".ts.net", ".tailscale.net"] - }, - "PacketFilter": [], - "PacketFilterRules": null, - "SSHPolicy": { "rules": [] }, - "CollectServices": false, - "DERPMap": { - "Regions": { - "1": { - "RegionID": 1, - "RegionCode": "nyc", - "RegionName": "New York City", - "Latitude": 40.7128, - "Longitude": -74.006, - "Nodes": [ - { - "Name": "1h", - "RegionID": 1, - "HostName": "derp1h.tailscale.com", - "IPv4": "199.38.181.93", - "IPv6": "2607:f740:f::afd", - "CanPort80": true - }, - { - "Name": "1g", - "RegionID": 1, - "HostName": "derp1g.tailscale.com", - "IPv4": "209.177.145.120", - "IPv6": "2607:f740:f::3eb", - "CanPort80": true - }, - { - "Name": "1i", - "RegionID": 1, - "HostName": "derp1i.tailscale.com", - "IPv4": "199.38.181.103", - "IPv6": "2607:f740:f::e19", - "CanPort80": true - }, - { - "Name": "1f", - "RegionID": 1, - "HostName": "derp1f.tailscale.com", - "IPv4": "199.38.181.104", - "IPv6": "2607:f740:f::bc", - "CanPort80": true - } - ] - }, - "10": { - "RegionID": 10, - "RegionCode": "sea", - "RegionName": "Seattle", - "Latitude": 47.609722, - "Longitude": -122.333056, - "Nodes": [ - { - "Name": "10c", - "RegionID": 10, - "HostName": "derp10c.tailscale.com", - "IPv4": "192.73.240.121", - "IPv6": "2607:f740:14::40c", - "CanPort80": true - }, - { - "Name": "10d", - "RegionID": 10, - "HostName": "derp10d.tailscale.com", - "IPv4": "192.73.240.132", - "IPv6": "2607:f740:14::500", - "CanPort80": true - }, - { - "Name": "10b", - "RegionID": 10, - "HostName": "derp10b.tailscale.com", - "IPv4": "192.73.240.161", - "IPv6": "2607:f740:14::61c", - "CanPort80": true - } - ] - }, - "11": { - "RegionID": 11, - "RegionCode": "sao", - "RegionName": "São Paulo", - "Latitude": -23.55, - "Longitude": -46.633333, - "Nodes": [ - { - "Name": "11f", - "RegionID": 11, - "HostName": "derp11f.tailscale.com", - "IPv4": "172.237.61.197", - "IPv6": "2600:3c0d::2000:3bff:fe44:6166", - "CanPort80": true - }, - { - "Name": "11g", - "RegionID": 11, - "HostName": "derp11g.tailscale.com", - "IPv4": "172.237.61.190", - "IPv6": "2600:3c0d::2000:62ff:febe:2e67", - "CanPort80": true - }, - { - "Name": "11e", - "RegionID": 11, - "HostName": "derp11e.tailscale.com", - "IPv4": "172.237.61.194", - "IPv6": "2600:3c0d::2000:d2ff:fe43:1790", - "CanPort80": true - } - ] - }, - "12": { - "RegionID": 12, - "RegionCode": "ord", - "RegionName": "Chicago", - "Latitude": 41.881944, - "Longitude": -87.627778, - "Nodes": [ - { - "Name": "12e", - "RegionID": 12, - "HostName": "derp12e.tailscale.com", - "IPv4": "209.177.158.15", - "IPv6": "2607:f740:e::b17", - "CanPort80": true - }, - { - "Name": "12f", - "RegionID": 12, - "HostName": "derp12f.tailscale.com", - "IPv4": "199.38.182.118", - "IPv6": "2607:f740:e::4c8", - "CanPort80": true - }, - { - "Name": "12d", - "RegionID": 12, - "HostName": "derp12d.tailscale.com", - "IPv4": "209.177.158.246", - "IPv6": "2607:f740:e::811", - "CanPort80": true - } - ] - }, - "13": { - "RegionID": 13, - "RegionCode": "den", - "RegionName": "Denver", - "Latitude": 39.7392, - "Longitude": -104.9849, - "Nodes": [ - { - "Name": "13c", - "RegionID": 13, - "HostName": "derp13c.tailscale.com", - "IPv4": "192.73.242.28", - "IPv6": "2607:f740:16::5c", - "CanPort80": true - }, - { - "Name": "13d", - "RegionID": 13, - "HostName": "derp13d.tailscale.com", - "IPv4": "192.73.242.204", - "IPv6": "2607:f740:16::c23", - "CanPort80": true - }, - { - "Name": "13b", - "RegionID": 13, - "HostName": "derp13b.tailscale.com", - "IPv4": "192.73.242.187", - "IPv6": "2607:f740:16::640", - "CanPort80": true - } - ] - }, - "14": { - "RegionID": 14, - "RegionCode": "ams", - "RegionName": "Amsterdam", - "Latitude": 52.372778, - "Longitude": 4.893611, - "Nodes": [ - { - "Name": "14c", - "RegionID": 14, - "HostName": "derp14c.tailscale.com", - "IPv4": "176.58.93.147", - "IPv6": "2a00:dd80:3c::b09", - "CanPort80": true - }, - { - "Name": "14d", - "RegionID": 14, - "HostName": "derp14d.tailscale.com", - "IPv4": "176.58.93.154", - "IPv6": "2a00:dd80:3c::3d5", - "CanPort80": true - }, - { - "Name": "14b", - "RegionID": 14, - "HostName": "derp14b.tailscale.com", - "IPv4": "176.58.93.248", - "IPv6": "2a00:dd80:3c::807", - "CanPort80": true - } - ] - }, - "15": { - "RegionID": 15, - "RegionCode": "jnb", - "RegionName": "Johannesburg", - "Latitude": -26.204444, - "Longitude": 28.045556, - "Nodes": [ - { - "Name": "15c", - "RegionID": 15, - "HostName": "derp15c.tailscale.com", - "IPv4": "102.67.165.185", - "IPv6": "2c0f:edb0:0:10::b59", - "CanPort80": true - }, - { - "Name": "15d", - "RegionID": 15, - "HostName": "derp15d.tailscale.com", - "IPv4": "102.67.165.36", - "IPv6": "2c0f:edb0:0:10::599", - "CanPort80": true - }, - { - "Name": "15b", - "RegionID": 15, - "HostName": "derp15b.tailscale.com", - "IPv4": "102.67.165.90", - "IPv6": "2c0f:edb0:0:10::963", - "CanPort80": true - } - ] - }, - "16": { - "RegionID": 16, - "RegionCode": "mia", - "RegionName": "Miami", - "Latitude": 25.78, - "Longitude": -80.21, - "Nodes": [ - { - "Name": "16c", - "RegionID": 16, - "HostName": "derp16c.tailscale.com", - "IPv4": "192.73.243.229", - "IPv6": "2607:f740:17::4e4", - "CanPort80": true - }, - { - "Name": "16d", - "RegionID": 16, - "HostName": "derp16d.tailscale.com", - "IPv4": "192.73.243.141", - "IPv6": "2607:f740:17::475", - "CanPort80": true - }, - { - "Name": "16b", - "RegionID": 16, - "HostName": "derp16b.tailscale.com", - "IPv4": "192.73.243.135", - "IPv6": "2607:f740:17::476", - "CanPort80": true - } - ] - }, - "17": { - "RegionID": 17, - "RegionCode": "lax", - "RegionName": "Los Angeles", - "Latitude": 34.05, - "Longitude": -118.25, - "Nodes": [ - { - "Name": "17c", - "RegionID": 17, - "HostName": "derp17c.tailscale.com", - "IPv4": "208.111.40.12", - "IPv6": "2607:f740:c::10", - "CanPort80": true - }, - { - "Name": "17d", - "RegionID": 17, - "HostName": "derp17d.tailscale.com", - "IPv4": "208.111.40.216", - "IPv6": "2607:f740:c::e1b", - "CanPort80": true - }, - { - "Name": "17b", - "RegionID": 17, - "HostName": "derp17b.tailscale.com", - "IPv4": "192.73.244.245", - "IPv6": "2607:f740:c::646", - "CanPort80": true - } - ] - }, - "18": { - "RegionID": 18, - "RegionCode": "par", - "RegionName": "Paris", - "Latitude": 48.856667, - "Longitude": 2.352222, - "Nodes": [ - { - "Name": "18c", - "RegionID": 18, - "HostName": "derp18c.tailscale.com", - "IPv4": "176.58.90.207", - "IPv6": "2a00:dd80:3e::c19", - "CanPort80": true - }, - { - "Name": "18d", - "RegionID": 18, - "HostName": "derp18d.tailscale.com", - "IPv4": "176.58.90.104", - "IPv6": "2a00:dd80:3e::f2e", - "CanPort80": true - }, - { - "Name": "18b", - "RegionID": 18, - "HostName": "derp18b.tailscale.com", - "IPv4": "176.58.90.147", - "IPv6": "2a00:dd80:3e::363", - "CanPort80": true - } - ] - }, - "19": { - "RegionID": 19, - "RegionCode": "mad", - "RegionName": "Madrid", - "Latitude": 40.416944, - "Longitude": -3.703333, - "Nodes": [ - { - "Name": "19c", - "RegionID": 19, - "HostName": "derp19c.tailscale.com", - "IPv4": "45.159.97.61", - "IPv6": "2a00:dd80:14:10::20", - "CanPort80": true - }, - { - "Name": "19d", - "RegionID": 19, - "HostName": "derp19d.tailscale.com", - "IPv4": "45.159.97.233", - "IPv6": "2a00:dd80:14:10::34a", - "CanPort80": true - }, - { - "Name": "19b", - "RegionID": 19, - "HostName": "derp19b.tailscale.com", - "IPv4": "45.159.97.144", - "IPv6": "2a00:dd80:14:10::335", - "CanPort80": true - } - ] - }, - "2": { - "RegionID": 2, - "RegionCode": "sfo", - "RegionName": "San Francisco", - "Latitude": 37.7775, - "Longitude": -122.416389, - "Nodes": [ - { - "Name": "2e", - "RegionID": 2, - "HostName": "derp2e.tailscale.com", - "IPv4": "192.73.252.134", - "IPv6": "2607:f740:0:3f::44c", - "CanPort80": true - }, - { - "Name": "2f", - "RegionID": 2, - "HostName": "derp2f.tailscale.com", - "IPv4": "208.111.34.178", - "IPv6": "2607:f740:0:3f::f4", - "CanPort80": true - }, - { - "Name": "2d", - "RegionID": 2, - "HostName": "derp2d.tailscale.com", - "IPv4": "192.73.252.65", - "IPv6": "2607:f740:0:3f::287", - "CanPort80": true - } - ] - }, - "20": { - "RegionID": 20, - "RegionCode": "hkg", - "RegionName": "Hong Kong", - "Latitude": 22.3193, - "Longitude": 114.1694, - "Nodes": [ - { - "Name": "20c", - "RegionID": 20, - "HostName": "derp20c.tailscale.com", - "IPv4": "205.147.105.30", - "IPv6": "2403:2500:8000:1::5fb", - "CanPort80": true - }, - { - "Name": "20d", - "RegionID": 20, - "HostName": "derp20d.tailscale.com", - "IPv4": "205.147.105.78", - "IPv6": "2403:2500:8000:1::e9a", - "CanPort80": true - }, - { - "Name": "20b", - "RegionID": 20, - "HostName": "derp20b.tailscale.com", - "IPv4": "103.6.84.152", - "IPv6": "2403:2500:8000:1::ef6", - "CanPort80": true - } - ] - }, - "21": { - "RegionID": 21, - "RegionCode": "tor", - "RegionName": "Toronto", - "Latitude": 43.741667, - "Longitude": -79.373333, - "Nodes": [ - { - "Name": "21c", - "RegionID": 21, - "HostName": "derp21c.tailscale.com", - "IPv4": "162.248.221.215", - "IPv6": "2607:f740:50::f10", - "CanPort80": true - }, - { - "Name": "21d", - "RegionID": 21, - "HostName": "derp21d.tailscale.com", - "IPv4": "162.248.221.248", - "IPv6": "2607:f740:50::ca4", - "CanPort80": true - }, - { - "Name": "21b", - "RegionID": 21, - "HostName": "derp21b.tailscale.com", - "IPv4": "162.248.221.199", - "IPv6": "2607:f740:50::1d1", - "CanPort80": true - } - ] - }, - "22": { - "RegionID": 22, - "RegionCode": "waw", - "RegionName": "Warsaw", - "Latitude": 52.23, - "Longitude": 21.011111, - "Nodes": [ - { - "Name": "22c", - "RegionID": 22, - "HostName": "derp22c.tailscale.com", - "IPv4": "45.159.98.253", - "IPv6": "2a00:dd80:40:100::3f", - "CanPort80": true - }, - { - "Name": "22d", - "RegionID": 22, - "HostName": "derp22d.tailscale.com", - "IPv4": "45.159.98.145", - "IPv6": "2a00:dd80:40:100::211", - "CanPort80": true - }, - { - "Name": "22b", - "RegionID": 22, - "HostName": "derp22b.tailscale.com", - "IPv4": "45.159.98.196", - "IPv6": "2a00:dd80:40:100::316", - "CanPort80": true - } - ] - }, - "23": { - "RegionID": 23, - "RegionCode": "dbi", - "RegionName": "Dubai", - "Latitude": 25.263056, - "Longitude": 55.297222, - "Nodes": [ - { - "Name": "23c", - "RegionID": 23, - "HostName": "derp23c.tailscale.com", - "IPv4": "185.34.3.207", - "IPv6": "2a00:dd80:3f:100::a50", - "CanPort80": true - }, - { - "Name": "23d", - "RegionID": 23, - "HostName": "derp23d.tailscale.com", - "IPv4": "185.34.3.75", - "IPv6": "2a00:dd80:3f:100::97e", - "CanPort80": true - }, - { - "Name": "23b", - "RegionID": 23, - "HostName": "derp23b.tailscale.com", - "IPv4": "185.34.3.232", - "IPv6": "2a00:dd80:3f:100::76f", - "CanPort80": true - } - ] - }, - "24": { - "RegionID": 24, - "RegionCode": "hnl", - "RegionName": "Honolulu", - "Latitude": 21.306944, - "Longitude": -157.858333, - "Nodes": [ - { - "Name": "24c", - "RegionID": 24, - "HostName": "derp24c.tailscale.com", - "IPv4": "208.83.233.233", - "IPv6": "2001:19f0:c000:c591:5400:04ff:fe26:2c5f", - "CanPort80": true - }, - { - "Name": "24d", - "RegionID": 24, - "HostName": "derp24d.tailscale.com", - "IPv4": "208.72.155.133", - "IPv6": "2001:19f0:c000:c564:5400:04ff:fe26:2ba8", - "CanPort80": true - }, - { - "Name": "24b", - "RegionID": 24, - "HostName": "derp24b.tailscale.com", - "IPv4": "208.83.234.151", - "IPv6": "2001:19f0:c000:c586:5400:04ff:fe26:2ba6", - "CanPort80": true - } - ] - }, - "25": { - "RegionID": 25, - "RegionCode": "nai", - "RegionName": "Nairobi", - "Latitude": -1.286389, - "Longitude": 36.817222, - "Nodes": [ - { - "Name": "25c", - "RegionID": 25, - "HostName": "derp25c.tailscale.com", - "IPv4": "102.67.167.37", - "IPv6": "2c0f:edb0:2000:1::2c7", - "CanPort80": true - }, - { - "Name": "25d", - "RegionID": 25, - "HostName": "derp25d.tailscale.com", - "IPv4": "102.67.167.188", - "IPv6": "2c0f:edb0:2000:1::188", - "CanPort80": true - }, - { - "Name": "25b", - "RegionID": 25, - "HostName": "derp25b.tailscale.com", - "IPv4": "102.67.167.245", - "IPv6": "2c0f:edb0:2000:1::2e9", - "CanPort80": true - } - ] - }, - "26": { - "RegionID": 26, - "RegionCode": "nue", - "RegionName": "Nuremberg", - "Latitude": 49.453889, - "Longitude": 11.0775, - "Nodes": [ - { - "Name": "26c", - "RegionID": 26, - "HostName": "derp26c.tailscale.com", - "IPv4": "49.12.193.137", - "IPv6": "2a01:4f8:1c1c:5c70::1", - "CanPort80": true - }, - { - "Name": "26d", - "RegionID": 26, - "HostName": "derp26d.tailscale.com", - "IPv4": "49.13.204.141", - "IPv6": "2a01:4f8:1c0c:7d06::1", - "CanPort80": true - }, - { - "Name": "26b", - "RegionID": 26, - "HostName": "derp26b.tailscale.com", - "IPv4": "167.235.72.200", - "IPv6": "2a01:4f8:1c1c:47b6::1", - "CanPort80": true - } - ] - }, - "27": { - "RegionID": 27, - "RegionCode": "iad", - "RegionName": "Ashburn", - "Latitude": 39.03, - "Longitude": -77.471111, - "Nodes": [ - { - "Name": "27d", - "RegionID": 27, - "HostName": "derp27d.tailscale.com", - "IPv4": "178.156.152.106", - "IPv6": "2a01:4ff:f0:3c8e::1", - "CanPort80": true - }, - { - "Name": "27c", - "RegionID": 27, - "HostName": "derp27c.tailscale.com", - "IPv4": "178.156.152.91", - "IPv6": "2a01:4ff:f0:3913::1", - "CanPort80": true - }, - { - "Name": "27e", - "RegionID": 27, - "HostName": "derp27e.tailscale.com", - "IPv4": "178.156.134.232", - "IPv6": "2a01:4ff:f0:28d4::1", - "CanPort80": true - }, - { - "Name": "27b", - "RegionID": 27, - "HostName": "derp27b.tailscale.com", - "IPv4": "5.161.218.233", - "IPv6": "2a01:4ff:f0:3db9::1", - "CanPort80": true - } - ] - }, - "28": { - "RegionID": 28, - "RegionCode": "hel", - "RegionName": "Helsinki", - "Latitude": 60.170833, - "Longitude": 24.9375, - "Nodes": [ - { - "Name": "28c", - "RegionID": 28, - "HostName": "derp28c.tailscale.com", - "IPv4": "95.217.2.165", - "IPv6": "2a01:4f9:c012:cd74::1", - "CanPort80": true - }, - { - "Name": "28d", - "RegionID": 28, - "HostName": "derp28d.tailscale.com", - "IPv4": "157.180.28.32", - "IPv6": "2a01:4f9:c012:2e5b::1", - "CanPort80": true - }, - { - "Name": "28b", - "RegionID": 28, - "HostName": "derp28b.tailscale.com", - "IPv4": "65.109.143.62", - "IPv6": "2a01:4f9:c012:d55c::1", - "CanPort80": true - } - ] - }, - "3": { - "RegionID": 3, - "RegionCode": "sin", - "RegionName": "Singapore", - "Latitude": 1.3521, - "Longitude": 103.8198, - "Nodes": [ - { - "Name": "3g", - "RegionID": 3, - "HostName": "derp3g.tailscale.com", - "IPv4": "172.237.72.79", - "IPv6": "2600:3c15::2000:adff:fe08:6fab", - "CanPort80": true - }, - { - "Name": "3f", - "RegionID": 3, - "HostName": "derp3f.tailscale.com", - "IPv4": "172.237.72.8", - "IPv6": "2600:3c15::2000:53ff:fe48:a668", - "CanPort80": true - }, - { - "Name": "3h", - "RegionID": 3, - "HostName": "derp3h.tailscale.com", - "IPv4": "172.237.66.30", - "IPv6": "2600:3c15::2000:3dff:fe44:50aa", - "CanPort80": true - }, - { - "Name": "3e", - "RegionID": 3, - "HostName": "derp3e.tailscale.com", - "IPv4": "172.237.72.43", - "IPv6": "2600:3c15::2000:6cff:fee4:d799", - "CanPort80": true - } - ] - }, - "4": { - "RegionID": 4, - "RegionCode": "fra", - "RegionName": "Frankfurt", - "Latitude": 50.1109, - "Longitude": 8.6821, - "Nodes": [ - { - "Name": "4h", - "RegionID": 4, - "HostName": "derp4h.tailscale.com", - "IPv4": "185.40.234.77", - "IPv6": "2a00:dd80:20::bcf", - "CanPort80": true - }, - { - "Name": "4g", - "RegionID": 4, - "HostName": "derp4g.tailscale.com", - "IPv4": "185.40.234.113", - "IPv6": "2a00:dd80:20::8f", - "CanPort80": true - }, - { - "Name": "4i", - "RegionID": 4, - "HostName": "derp4i.tailscale.com", - "IPv4": "185.40.234.53", - "IPv6": "2a00:dd80:20::8a6", - "CanPort80": true - }, - { - "Name": "4f", - "RegionID": 4, - "HostName": "derp4f.tailscale.com", - "IPv4": "185.40.234.219", - "IPv6": "2a00:dd80:20::a25", - "CanPort80": true - } - ] - }, - "5": { - "RegionID": 5, - "RegionCode": "syd", - "RegionName": "Sydney", - "Latitude": -33.867778, - "Longitude": 151.21, - "Nodes": [ - { - "Name": "5f", - "RegionID": 5, - "HostName": "derp5f.tailscale.com", - "IPv4": "172.105.166.103", - "IPv6": "2400:8907::2000:ccff:fe1f:80da", - "CanPort80": true - }, - { - "Name": "5g", - "RegionID": 5, - "HostName": "derp5g.tailscale.com", - "IPv4": "172.105.169.57", - "IPv6": "2400:8907::2000:2fff:fea7:57f4", - "CanPort80": true - }, - { - "Name": "5e", - "RegionID": 5, - "HostName": "derp5e.tailscale.com", - "IPv4": "172.105.179.230", - "IPv6": "2400:8907::2000:ceff:fe8d:4f4e", - "CanPort80": true - } - ] - }, - "6": { - "RegionID": 6, - "RegionCode": "blr", - "RegionName": "Bengaluru", - "Latitude": 12.9716, - "Longitude": 77.5946, - "Nodes": [ - { - "Name": "6a", - "RegionID": 6, - "HostName": "derp6.tailscale.com", - "IPv4": "68.183.90.120", - "IPv6": "2400:6180:100:d0::982:d001", - "CanPort80": true - } - ] - }, - "7": { - "RegionID": 7, - "RegionCode": "tok", - "RegionName": "Tokyo", - "Latitude": 35.6764, - "Longitude": 139.65, - "Nodes": [ - { - "Name": "7g", - "RegionID": 7, - "HostName": "derp7g.tailscale.com", - "IPv4": "172.238.6.179", - "IPv6": "2600:3c18::2000:3fff:fe80:3ebd", - "CanPort80": true - }, - { - "Name": "7f", - "RegionID": 7, - "HostName": "derp7f.tailscale.com", - "IPv4": "172.238.6.34", - "IPv6": "2600:3c18::2000:acff:fe8e:3ed5", - "CanPort80": true - }, - { - "Name": "7h", - "RegionID": 7, - "HostName": "derp7h.tailscale.com", - "IPv4": "172.237.28.183", - "IPv6": "2600:3c18::2000:b1ff:fea9:4560", - "CanPort80": true - }, - { - "Name": "7e", - "RegionID": 7, - "HostName": "derp7e.tailscale.com", - "IPv4": "172.238.6.180", - "IPv6": "2600:3c18::2000:60ff:fe0f:6e83", - "STUNOnly": true, - "CanPort80": true - } - ] - }, - "8": { - "RegionID": 8, - "RegionCode": "lhr", - "RegionName": "London", - "Latitude": 51.5072, - "Longitude": 0.1276, - "Nodes": [ - { - "Name": "8f", - "RegionID": 8, - "HostName": "derp8f.tailscale.com", - "IPv4": "176.58.88.183", - "IPv6": "2a00:dd80:3a::dfa", - "CanPort80": true - }, - { - "Name": "8g", - "RegionID": 8, - "HostName": "derp8g.tailscale.com", - "IPv4": "176.58.92.254", - "IPv6": "2a00:dd80:3a::ed", - "CanPort80": true - }, - { - "Name": "8e", - "RegionID": 8, - "HostName": "derp8e.tailscale.com", - "IPv4": "176.58.92.144", - "IPv6": "2a00:dd80:3a::b33", - "CanPort80": true - } - ] - }, - "9": { - "RegionID": 9, - "RegionCode": "dfw", - "RegionName": "Dallas", - "Latitude": 32.779167, - "Longitude": -96.808889, - "Nodes": [ - { - "Name": "9e", - "RegionID": 9, - "HostName": "derp9e.tailscale.com", - "IPv4": "192.73.248.83", - "IPv6": "2607:f740:100::359", - "CanPort80": true - }, - { - "Name": "9f", - "RegionID": 9, - "HostName": "derp9f.tailscale.com", - "IPv4": "209.177.156.197", - "IPv6": "2607:f740:100::cad", - "CanPort80": true - }, - { - "Name": "9d", - "RegionID": 9, - "HostName": "derp9d.tailscale.com", - "IPv4": "209.177.156.94", - "IPv6": "2607:f740:100::c05", - "CanPort80": true - } - ] - } - } - }, - "DisplayMessages": null, - "TKAEnabled": false, - "TKAHead": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", - "Domain": "kratail2tid@passkey", - "DomainAuditLogID": "", - "UserProfiles": { - "4538565228176803": { - "ID": 4538565228176803, - "LoginName": "kristoffer@dalby.cc", - "DisplayName": "kristoffer" - } - } + "PacketFilterRules": 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.124.195.93": { - "peer_name": "exit-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-mon/tailscaled.sock whois --json 100.124.195.93", - "response": null - }, - "100.116.18.24": { - "peer_name": "exit-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-mon/tailscaled.sock whois --json 100.116.18.24", - "response": null - }, - "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.107.162.14": { - "peer_name": "group-a-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-mon/tailscaled.sock whois --json 100.107.162.14", - "response": null - }, - "100.77.135.18": { - "peer_name": "group-b-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-mon/tailscaled.sock whois --json 100.77.135.18", - "response": null - }, - "100.105.127.107": { - "peer_name": "multi-exit-router", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-mon/tailscaled.sock whois --json 100.105.127.107", - "response": null - }, - "100.109.43.124": { - "peer_name": "router-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-mon/tailscaled.sock whois --json 100.109.43.124", - "response": null - }, - "100.65.172.123": { - "peer_name": "router-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-mon/tailscaled.sock whois --json 100.65.172.123", - "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 - } - }, "netmap": { - "SelfNode": { - "ID": 1840115676059256, - "StableID": "nFzZ7giPNF11CNTRL", - "Name": "user-mon.tail78f774.ts.net.", - "User": 3982058329734709, - "Key": "nodekey:1ca6cca66d2b3811ec290c2f7ac30125c3568e19e303a8e30f6b165c9ee75a51", - "KeyExpiry": "2026-08-19T14:09:00Z", - "DiscoKey": "discokey:67ba1473894f09b564073adb12b27df2a45c513afd9e48922a0346d5d2715d12", - "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:36593", "10.65.0.27:36593", "172.17.0.1:36593"], - "Hostinfo": { - "Hostname": "user-mon", - "Services": [ - { "Proto": "peerapi4", "Port": 33201 }, - { "Proto": "peerapi6", "Port": 33201 }, - { "Proto": "peerapi-dns-proxy", "Port": 1 } - ] - }, - "Created": "2026-02-20T14:09:00.203639664Z", - "MachineAuthorized": true, - "CapMap": { - "https://tailscale.com/cap/file-sharing": null, - "https://tailscale.com/cap/is-admin": null, - "https://tailscale.com/cap/ssh": null, - "https://tailscale.com/cap/tailnet-lock": null, - "probe-udp-lifetime": null, - "ssh-behavior-v1": null, - "ssh-env-vars": null, - "store-appc-routes": null, - "tailnet-display-name": ["kratail2tid@passkey"] - }, - "ComputedName": "user-mon", - "ComputedNameWithHost": "user-mon" - }, - "AllCaps": [ - "probe-udp-lifetime", - "ssh-env-vars", - "ssh-behavior-v1", - "store-appc-routes", - "https://tailscale.com/cap/file-sharing", - "tailnet-display-name", - "https://tailscale.com/cap/is-admin", - "https://tailscale.com/cap/tailnet-lock", - "https://tailscale.com/cap/ssh" - ], - "NodeKey": "nodekey:1ca6cca66d2b3811ec290c2f7ac30125c3568e19e303a8e30f6b165c9ee75a51", - "MachineKey": "mkey:d63fc325663eef5dabd4d236e1fa5a26ed14ad31ea0711840cf755a5e8a9df39", "Peers": [], - "DNS": { - "Routes": { - "tail78f774.ts.net.": null, - "ts.net.": [{ "Addr": "199.247.155.53" }, { "Addr": "2620:111:8007::53" }] - }, - "Domains": ["tail78f774.ts.net"], - "Proxied": true, - "ExitNodeFilteredSet": [".ts.net", ".tailscale.net"] - }, - "PacketFilter": [], - "PacketFilterRules": null, - "SSHPolicy": { "rules": [] }, - "CollectServices": false, - "DERPMap": { - "Regions": { - "1": { - "RegionID": 1, - "RegionCode": "nyc", - "RegionName": "New York City", - "Latitude": 40.7128, - "Longitude": -74.006, - "Nodes": [ - { - "Name": "1h", - "RegionID": 1, - "HostName": "derp1h.tailscale.com", - "IPv4": "199.38.181.93", - "IPv6": "2607:f740:f::afd", - "CanPort80": true - }, - { - "Name": "1g", - "RegionID": 1, - "HostName": "derp1g.tailscale.com", - "IPv4": "209.177.145.120", - "IPv6": "2607:f740:f::3eb", - "CanPort80": true - }, - { - "Name": "1i", - "RegionID": 1, - "HostName": "derp1i.tailscale.com", - "IPv4": "199.38.181.103", - "IPv6": "2607:f740:f::e19", - "CanPort80": true - }, - { - "Name": "1f", - "RegionID": 1, - "HostName": "derp1f.tailscale.com", - "IPv4": "199.38.181.104", - "IPv6": "2607:f740:f::bc", - "CanPort80": true - } - ] - }, - "10": { - "RegionID": 10, - "RegionCode": "sea", - "RegionName": "Seattle", - "Latitude": 47.609722, - "Longitude": -122.333056, - "Nodes": [ - { - "Name": "10c", - "RegionID": 10, - "HostName": "derp10c.tailscale.com", - "IPv4": "192.73.240.121", - "IPv6": "2607:f740:14::40c", - "CanPort80": true - }, - { - "Name": "10d", - "RegionID": 10, - "HostName": "derp10d.tailscale.com", - "IPv4": "192.73.240.132", - "IPv6": "2607:f740:14::500", - "CanPort80": true - }, - { - "Name": "10b", - "RegionID": 10, - "HostName": "derp10b.tailscale.com", - "IPv4": "192.73.240.161", - "IPv6": "2607:f740:14::61c", - "CanPort80": true - } - ] - }, - "11": { - "RegionID": 11, - "RegionCode": "sao", - "RegionName": "São Paulo", - "Latitude": -23.55, - "Longitude": -46.633333, - "Nodes": [ - { - "Name": "11f", - "RegionID": 11, - "HostName": "derp11f.tailscale.com", - "IPv4": "172.237.61.197", - "IPv6": "2600:3c0d::2000:3bff:fe44:6166", - "CanPort80": true - }, - { - "Name": "11g", - "RegionID": 11, - "HostName": "derp11g.tailscale.com", - "IPv4": "172.237.61.190", - "IPv6": "2600:3c0d::2000:62ff:febe:2e67", - "CanPort80": true - }, - { - "Name": "11e", - "RegionID": 11, - "HostName": "derp11e.tailscale.com", - "IPv4": "172.237.61.194", - "IPv6": "2600:3c0d::2000:d2ff:fe43:1790", - "CanPort80": true - } - ] - }, - "12": { - "RegionID": 12, - "RegionCode": "ord", - "RegionName": "Chicago", - "Latitude": 41.881944, - "Longitude": -87.627778, - "Nodes": [ - { - "Name": "12e", - "RegionID": 12, - "HostName": "derp12e.tailscale.com", - "IPv4": "209.177.158.15", - "IPv6": "2607:f740:e::b17", - "CanPort80": true - }, - { - "Name": "12f", - "RegionID": 12, - "HostName": "derp12f.tailscale.com", - "IPv4": "199.38.182.118", - "IPv6": "2607:f740:e::4c8", - "CanPort80": true - }, - { - "Name": "12d", - "RegionID": 12, - "HostName": "derp12d.tailscale.com", - "IPv4": "209.177.158.246", - "IPv6": "2607:f740:e::811", - "CanPort80": true - } - ] - }, - "13": { - "RegionID": 13, - "RegionCode": "den", - "RegionName": "Denver", - "Latitude": 39.7392, - "Longitude": -104.9849, - "Nodes": [ - { - "Name": "13c", - "RegionID": 13, - "HostName": "derp13c.tailscale.com", - "IPv4": "192.73.242.28", - "IPv6": "2607:f740:16::5c", - "CanPort80": true - }, - { - "Name": "13d", - "RegionID": 13, - "HostName": "derp13d.tailscale.com", - "IPv4": "192.73.242.204", - "IPv6": "2607:f740:16::c23", - "CanPort80": true - }, - { - "Name": "13b", - "RegionID": 13, - "HostName": "derp13b.tailscale.com", - "IPv4": "192.73.242.187", - "IPv6": "2607:f740:16::640", - "CanPort80": true - } - ] - }, - "14": { - "RegionID": 14, - "RegionCode": "ams", - "RegionName": "Amsterdam", - "Latitude": 52.372778, - "Longitude": 4.893611, - "Nodes": [ - { - "Name": "14c", - "RegionID": 14, - "HostName": "derp14c.tailscale.com", - "IPv4": "176.58.93.147", - "IPv6": "2a00:dd80:3c::b09", - "CanPort80": true - }, - { - "Name": "14d", - "RegionID": 14, - "HostName": "derp14d.tailscale.com", - "IPv4": "176.58.93.154", - "IPv6": "2a00:dd80:3c::3d5", - "CanPort80": true - }, - { - "Name": "14b", - "RegionID": 14, - "HostName": "derp14b.tailscale.com", - "IPv4": "176.58.93.248", - "IPv6": "2a00:dd80:3c::807", - "CanPort80": true - } - ] - }, - "15": { - "RegionID": 15, - "RegionCode": "jnb", - "RegionName": "Johannesburg", - "Latitude": -26.204444, - "Longitude": 28.045556, - "Nodes": [ - { - "Name": "15c", - "RegionID": 15, - "HostName": "derp15c.tailscale.com", - "IPv4": "102.67.165.185", - "IPv6": "2c0f:edb0:0:10::b59", - "CanPort80": true - }, - { - "Name": "15d", - "RegionID": 15, - "HostName": "derp15d.tailscale.com", - "IPv4": "102.67.165.36", - "IPv6": "2c0f:edb0:0:10::599", - "CanPort80": true - }, - { - "Name": "15b", - "RegionID": 15, - "HostName": "derp15b.tailscale.com", - "IPv4": "102.67.165.90", - "IPv6": "2c0f:edb0:0:10::963", - "CanPort80": true - } - ] - }, - "16": { - "RegionID": 16, - "RegionCode": "mia", - "RegionName": "Miami", - "Latitude": 25.78, - "Longitude": -80.21, - "Nodes": [ - { - "Name": "16c", - "RegionID": 16, - "HostName": "derp16c.tailscale.com", - "IPv4": "192.73.243.229", - "IPv6": "2607:f740:17::4e4", - "CanPort80": true - }, - { - "Name": "16d", - "RegionID": 16, - "HostName": "derp16d.tailscale.com", - "IPv4": "192.73.243.141", - "IPv6": "2607:f740:17::475", - "CanPort80": true - }, - { - "Name": "16b", - "RegionID": 16, - "HostName": "derp16b.tailscale.com", - "IPv4": "192.73.243.135", - "IPv6": "2607:f740:17::476", - "CanPort80": true - } - ] - }, - "17": { - "RegionID": 17, - "RegionCode": "lax", - "RegionName": "Los Angeles", - "Latitude": 34.05, - "Longitude": -118.25, - "Nodes": [ - { - "Name": "17c", - "RegionID": 17, - "HostName": "derp17c.tailscale.com", - "IPv4": "208.111.40.12", - "IPv6": "2607:f740:c::10", - "CanPort80": true - }, - { - "Name": "17d", - "RegionID": 17, - "HostName": "derp17d.tailscale.com", - "IPv4": "208.111.40.216", - "IPv6": "2607:f740:c::e1b", - "CanPort80": true - }, - { - "Name": "17b", - "RegionID": 17, - "HostName": "derp17b.tailscale.com", - "IPv4": "192.73.244.245", - "IPv6": "2607:f740:c::646", - "CanPort80": true - } - ] - }, - "18": { - "RegionID": 18, - "RegionCode": "par", - "RegionName": "Paris", - "Latitude": 48.856667, - "Longitude": 2.352222, - "Nodes": [ - { - "Name": "18c", - "RegionID": 18, - "HostName": "derp18c.tailscale.com", - "IPv4": "176.58.90.207", - "IPv6": "2a00:dd80:3e::c19", - "CanPort80": true - }, - { - "Name": "18d", - "RegionID": 18, - "HostName": "derp18d.tailscale.com", - "IPv4": "176.58.90.104", - "IPv6": "2a00:dd80:3e::f2e", - "CanPort80": true - }, - { - "Name": "18b", - "RegionID": 18, - "HostName": "derp18b.tailscale.com", - "IPv4": "176.58.90.147", - "IPv6": "2a00:dd80:3e::363", - "CanPort80": true - } - ] - }, - "19": { - "RegionID": 19, - "RegionCode": "mad", - "RegionName": "Madrid", - "Latitude": 40.416944, - "Longitude": -3.703333, - "Nodes": [ - { - "Name": "19c", - "RegionID": 19, - "HostName": "derp19c.tailscale.com", - "IPv4": "45.159.97.61", - "IPv6": "2a00:dd80:14:10::20", - "CanPort80": true - }, - { - "Name": "19d", - "RegionID": 19, - "HostName": "derp19d.tailscale.com", - "IPv4": "45.159.97.233", - "IPv6": "2a00:dd80:14:10::34a", - "CanPort80": true - }, - { - "Name": "19b", - "RegionID": 19, - "HostName": "derp19b.tailscale.com", - "IPv4": "45.159.97.144", - "IPv6": "2a00:dd80:14:10::335", - "CanPort80": true - } - ] - }, - "2": { - "RegionID": 2, - "RegionCode": "sfo", - "RegionName": "San Francisco", - "Latitude": 37.7775, - "Longitude": -122.416389, - "Nodes": [ - { - "Name": "2e", - "RegionID": 2, - "HostName": "derp2e.tailscale.com", - "IPv4": "192.73.252.134", - "IPv6": "2607:f740:0:3f::44c", - "CanPort80": true - }, - { - "Name": "2f", - "RegionID": 2, - "HostName": "derp2f.tailscale.com", - "IPv4": "208.111.34.178", - "IPv6": "2607:f740:0:3f::f4", - "CanPort80": true - }, - { - "Name": "2d", - "RegionID": 2, - "HostName": "derp2d.tailscale.com", - "IPv4": "192.73.252.65", - "IPv6": "2607:f740:0:3f::287", - "CanPort80": true - } - ] - }, - "20": { - "RegionID": 20, - "RegionCode": "hkg", - "RegionName": "Hong Kong", - "Latitude": 22.3193, - "Longitude": 114.1694, - "Nodes": [ - { - "Name": "20c", - "RegionID": 20, - "HostName": "derp20c.tailscale.com", - "IPv4": "205.147.105.30", - "IPv6": "2403:2500:8000:1::5fb", - "CanPort80": true - }, - { - "Name": "20d", - "RegionID": 20, - "HostName": "derp20d.tailscale.com", - "IPv4": "205.147.105.78", - "IPv6": "2403:2500:8000:1::e9a", - "CanPort80": true - }, - { - "Name": "20b", - "RegionID": 20, - "HostName": "derp20b.tailscale.com", - "IPv4": "103.6.84.152", - "IPv6": "2403:2500:8000:1::ef6", - "CanPort80": true - } - ] - }, - "21": { - "RegionID": 21, - "RegionCode": "tor", - "RegionName": "Toronto", - "Latitude": 43.741667, - "Longitude": -79.373333, - "Nodes": [ - { - "Name": "21c", - "RegionID": 21, - "HostName": "derp21c.tailscale.com", - "IPv4": "162.248.221.215", - "IPv6": "2607:f740:50::f10", - "CanPort80": true - }, - { - "Name": "21d", - "RegionID": 21, - "HostName": "derp21d.tailscale.com", - "IPv4": "162.248.221.248", - "IPv6": "2607:f740:50::ca4", - "CanPort80": true - }, - { - "Name": "21b", - "RegionID": 21, - "HostName": "derp21b.tailscale.com", - "IPv4": "162.248.221.199", - "IPv6": "2607:f740:50::1d1", - "CanPort80": true - } - ] - }, - "22": { - "RegionID": 22, - "RegionCode": "waw", - "RegionName": "Warsaw", - "Latitude": 52.23, - "Longitude": 21.011111, - "Nodes": [ - { - "Name": "22c", - "RegionID": 22, - "HostName": "derp22c.tailscale.com", - "IPv4": "45.159.98.253", - "IPv6": "2a00:dd80:40:100::3f", - "CanPort80": true - }, - { - "Name": "22d", - "RegionID": 22, - "HostName": "derp22d.tailscale.com", - "IPv4": "45.159.98.145", - "IPv6": "2a00:dd80:40:100::211", - "CanPort80": true - }, - { - "Name": "22b", - "RegionID": 22, - "HostName": "derp22b.tailscale.com", - "IPv4": "45.159.98.196", - "IPv6": "2a00:dd80:40:100::316", - "CanPort80": true - } - ] - }, - "23": { - "RegionID": 23, - "RegionCode": "dbi", - "RegionName": "Dubai", - "Latitude": 25.263056, - "Longitude": 55.297222, - "Nodes": [ - { - "Name": "23c", - "RegionID": 23, - "HostName": "derp23c.tailscale.com", - "IPv4": "185.34.3.207", - "IPv6": "2a00:dd80:3f:100::a50", - "CanPort80": true - }, - { - "Name": "23d", - "RegionID": 23, - "HostName": "derp23d.tailscale.com", - "IPv4": "185.34.3.75", - "IPv6": "2a00:dd80:3f:100::97e", - "CanPort80": true - }, - { - "Name": "23b", - "RegionID": 23, - "HostName": "derp23b.tailscale.com", - "IPv4": "185.34.3.232", - "IPv6": "2a00:dd80:3f:100::76f", - "CanPort80": true - } - ] - }, - "24": { - "RegionID": 24, - "RegionCode": "hnl", - "RegionName": "Honolulu", - "Latitude": 21.306944, - "Longitude": -157.858333, - "Nodes": [ - { - "Name": "24c", - "RegionID": 24, - "HostName": "derp24c.tailscale.com", - "IPv4": "208.83.233.233", - "IPv6": "2001:19f0:c000:c591:5400:04ff:fe26:2c5f", - "CanPort80": true - }, - { - "Name": "24d", - "RegionID": 24, - "HostName": "derp24d.tailscale.com", - "IPv4": "208.72.155.133", - "IPv6": "2001:19f0:c000:c564:5400:04ff:fe26:2ba8", - "CanPort80": true - }, - { - "Name": "24b", - "RegionID": 24, - "HostName": "derp24b.tailscale.com", - "IPv4": "208.83.234.151", - "IPv6": "2001:19f0:c000:c586:5400:04ff:fe26:2ba6", - "CanPort80": true - } - ] - }, - "25": { - "RegionID": 25, - "RegionCode": "nai", - "RegionName": "Nairobi", - "Latitude": -1.286389, - "Longitude": 36.817222, - "Nodes": [ - { - "Name": "25c", - "RegionID": 25, - "HostName": "derp25c.tailscale.com", - "IPv4": "102.67.167.37", - "IPv6": "2c0f:edb0:2000:1::2c7", - "CanPort80": true - }, - { - "Name": "25d", - "RegionID": 25, - "HostName": "derp25d.tailscale.com", - "IPv4": "102.67.167.188", - "IPv6": "2c0f:edb0:2000:1::188", - "CanPort80": true - }, - { - "Name": "25b", - "RegionID": 25, - "HostName": "derp25b.tailscale.com", - "IPv4": "102.67.167.245", - "IPv6": "2c0f:edb0:2000:1::2e9", - "CanPort80": true - } - ] - }, - "26": { - "RegionID": 26, - "RegionCode": "nue", - "RegionName": "Nuremberg", - "Latitude": 49.453889, - "Longitude": 11.0775, - "Nodes": [ - { - "Name": "26c", - "RegionID": 26, - "HostName": "derp26c.tailscale.com", - "IPv4": "49.12.193.137", - "IPv6": "2a01:4f8:1c1c:5c70::1", - "CanPort80": true - }, - { - "Name": "26d", - "RegionID": 26, - "HostName": "derp26d.tailscale.com", - "IPv4": "49.13.204.141", - "IPv6": "2a01:4f8:1c0c:7d06::1", - "CanPort80": true - }, - { - "Name": "26b", - "RegionID": 26, - "HostName": "derp26b.tailscale.com", - "IPv4": "167.235.72.200", - "IPv6": "2a01:4f8:1c1c:47b6::1", - "CanPort80": true - } - ] - }, - "27": { - "RegionID": 27, - "RegionCode": "iad", - "RegionName": "Ashburn", - "Latitude": 39.03, - "Longitude": -77.471111, - "Nodes": [ - { - "Name": "27d", - "RegionID": 27, - "HostName": "derp27d.tailscale.com", - "IPv4": "178.156.152.106", - "IPv6": "2a01:4ff:f0:3c8e::1", - "CanPort80": true - }, - { - "Name": "27c", - "RegionID": 27, - "HostName": "derp27c.tailscale.com", - "IPv4": "178.156.152.91", - "IPv6": "2a01:4ff:f0:3913::1", - "CanPort80": true - }, - { - "Name": "27e", - "RegionID": 27, - "HostName": "derp27e.tailscale.com", - "IPv4": "178.156.134.232", - "IPv6": "2a01:4ff:f0:28d4::1", - "CanPort80": true - }, - { - "Name": "27b", - "RegionID": 27, - "HostName": "derp27b.tailscale.com", - "IPv4": "5.161.218.233", - "IPv6": "2a01:4ff:f0:3db9::1", - "CanPort80": true - } - ] - }, - "28": { - "RegionID": 28, - "RegionCode": "hel", - "RegionName": "Helsinki", - "Latitude": 60.170833, - "Longitude": 24.9375, - "Nodes": [ - { - "Name": "28c", - "RegionID": 28, - "HostName": "derp28c.tailscale.com", - "IPv4": "95.217.2.165", - "IPv6": "2a01:4f9:c012:cd74::1", - "CanPort80": true - }, - { - "Name": "28d", - "RegionID": 28, - "HostName": "derp28d.tailscale.com", - "IPv4": "157.180.28.32", - "IPv6": "2a01:4f9:c012:2e5b::1", - "CanPort80": true - }, - { - "Name": "28b", - "RegionID": 28, - "HostName": "derp28b.tailscale.com", - "IPv4": "65.109.143.62", - "IPv6": "2a01:4f9:c012:d55c::1", - "CanPort80": true - } - ] - }, - "3": { - "RegionID": 3, - "RegionCode": "sin", - "RegionName": "Singapore", - "Latitude": 1.3521, - "Longitude": 103.8198, - "Nodes": [ - { - "Name": "3g", - "RegionID": 3, - "HostName": "derp3g.tailscale.com", - "IPv4": "172.237.72.79", - "IPv6": "2600:3c15::2000:adff:fe08:6fab", - "CanPort80": true - }, - { - "Name": "3f", - "RegionID": 3, - "HostName": "derp3f.tailscale.com", - "IPv4": "172.237.72.8", - "IPv6": "2600:3c15::2000:53ff:fe48:a668", - "CanPort80": true - }, - { - "Name": "3h", - "RegionID": 3, - "HostName": "derp3h.tailscale.com", - "IPv4": "172.237.66.30", - "IPv6": "2600:3c15::2000:3dff:fe44:50aa", - "CanPort80": true - }, - { - "Name": "3e", - "RegionID": 3, - "HostName": "derp3e.tailscale.com", - "IPv4": "172.237.72.43", - "IPv6": "2600:3c15::2000:6cff:fee4:d799", - "CanPort80": true - } - ] - }, - "4": { - "RegionID": 4, - "RegionCode": "fra", - "RegionName": "Frankfurt", - "Latitude": 50.1109, - "Longitude": 8.6821, - "Nodes": [ - { - "Name": "4h", - "RegionID": 4, - "HostName": "derp4h.tailscale.com", - "IPv4": "185.40.234.77", - "IPv6": "2a00:dd80:20::bcf", - "CanPort80": true - }, - { - "Name": "4g", - "RegionID": 4, - "HostName": "derp4g.tailscale.com", - "IPv4": "185.40.234.113", - "IPv6": "2a00:dd80:20::8f", - "CanPort80": true - }, - { - "Name": "4i", - "RegionID": 4, - "HostName": "derp4i.tailscale.com", - "IPv4": "185.40.234.53", - "IPv6": "2a00:dd80:20::8a6", - "CanPort80": true - }, - { - "Name": "4f", - "RegionID": 4, - "HostName": "derp4f.tailscale.com", - "IPv4": "185.40.234.219", - "IPv6": "2a00:dd80:20::a25", - "CanPort80": true - } - ] - }, - "5": { - "RegionID": 5, - "RegionCode": "syd", - "RegionName": "Sydney", - "Latitude": -33.867778, - "Longitude": 151.21, - "Nodes": [ - { - "Name": "5f", - "RegionID": 5, - "HostName": "derp5f.tailscale.com", - "IPv4": "172.105.166.103", - "IPv6": "2400:8907::2000:ccff:fe1f:80da", - "CanPort80": true - }, - { - "Name": "5g", - "RegionID": 5, - "HostName": "derp5g.tailscale.com", - "IPv4": "172.105.169.57", - "IPv6": "2400:8907::2000:2fff:fea7:57f4", - "CanPort80": true - }, - { - "Name": "5e", - "RegionID": 5, - "HostName": "derp5e.tailscale.com", - "IPv4": "172.105.179.230", - "IPv6": "2400:8907::2000:ceff:fe8d:4f4e", - "CanPort80": true - } - ] - }, - "6": { - "RegionID": 6, - "RegionCode": "blr", - "RegionName": "Bengaluru", - "Latitude": 12.9716, - "Longitude": 77.5946, - "Nodes": [ - { - "Name": "6a", - "RegionID": 6, - "HostName": "derp6.tailscale.com", - "IPv4": "68.183.90.120", - "IPv6": "2400:6180:100:d0::982:d001", - "CanPort80": true - } - ] - }, - "7": { - "RegionID": 7, - "RegionCode": "tok", - "RegionName": "Tokyo", - "Latitude": 35.6764, - "Longitude": 139.65, - "Nodes": [ - { - "Name": "7g", - "RegionID": 7, - "HostName": "derp7g.tailscale.com", - "IPv4": "172.238.6.179", - "IPv6": "2600:3c18::2000:3fff:fe80:3ebd", - "CanPort80": true - }, - { - "Name": "7f", - "RegionID": 7, - "HostName": "derp7f.tailscale.com", - "IPv4": "172.238.6.34", - "IPv6": "2600:3c18::2000:acff:fe8e:3ed5", - "CanPort80": true - }, - { - "Name": "7h", - "RegionID": 7, - "HostName": "derp7h.tailscale.com", - "IPv4": "172.237.28.183", - "IPv6": "2600:3c18::2000:b1ff:fea9:4560", - "CanPort80": true - }, - { - "Name": "7e", - "RegionID": 7, - "HostName": "derp7e.tailscale.com", - "IPv4": "172.238.6.180", - "IPv6": "2600:3c18::2000:60ff:fe0f:6e83", - "STUNOnly": true, - "CanPort80": true - } - ] - }, - "8": { - "RegionID": 8, - "RegionCode": "lhr", - "RegionName": "London", - "Latitude": 51.5072, - "Longitude": 0.1276, - "Nodes": [ - { - "Name": "8f", - "RegionID": 8, - "HostName": "derp8f.tailscale.com", - "IPv4": "176.58.88.183", - "IPv6": "2a00:dd80:3a::dfa", - "CanPort80": true - }, - { - "Name": "8g", - "RegionID": 8, - "HostName": "derp8g.tailscale.com", - "IPv4": "176.58.92.254", - "IPv6": "2a00:dd80:3a::ed", - "CanPort80": true - }, - { - "Name": "8e", - "RegionID": 8, - "HostName": "derp8e.tailscale.com", - "IPv4": "176.58.92.144", - "IPv6": "2a00:dd80:3a::b33", - "CanPort80": true - } - ] - }, - "9": { - "RegionID": 9, - "RegionCode": "dfw", - "RegionName": "Dallas", - "Latitude": 32.779167, - "Longitude": -96.808889, - "Nodes": [ - { - "Name": "9e", - "RegionID": 9, - "HostName": "derp9e.tailscale.com", - "IPv4": "192.73.248.83", - "IPv6": "2607:f740:100::359", - "CanPort80": true - }, - { - "Name": "9f", - "RegionID": 9, - "HostName": "derp9f.tailscale.com", - "IPv4": "209.177.156.197", - "IPv6": "2607:f740:100::cad", - "CanPort80": true - }, - { - "Name": "9d", - "RegionID": 9, - "HostName": "derp9d.tailscale.com", - "IPv4": "209.177.156.94", - "IPv6": "2607:f740:100::c05", - "CanPort80": true - } - ] - } - } - }, - "DisplayMessages": null, - "TKAEnabled": false, - "TKAHead": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", - "Domain": "kratail2tid@passkey", - "DomainAuditLogID": "", - "UserProfiles": { - "3982058329734709": { - "ID": 3982058329734709, - "LoginName": "monitorpasskeykradalby@passkey", - "DisplayName": "monitorpasskeykradalby" - } - } + "PacketFilterRules": 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.124.195.93": { - "peer_name": "exit-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user1/tailscaled.sock whois --json 100.124.195.93", - "response": null - }, - "100.116.18.24": { - "peer_name": "exit-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user1/tailscaled.sock whois --json 100.116.18.24", - "response": null - }, - "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.107.162.14": { - "peer_name": "group-a-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user1/tailscaled.sock whois --json 100.107.162.14", - "response": null - }, - "100.77.135.18": { - "peer_name": "group-b-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user1/tailscaled.sock whois --json 100.77.135.18", - "response": null - }, - "100.105.127.107": { - "peer_name": "multi-exit-router", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user1/tailscaled.sock whois --json 100.105.127.107", - "response": null - }, - "100.109.43.124": { - "peer_name": "router-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user1/tailscaled.sock whois --json 100.109.43.124", - "response": null - }, - "100.65.172.123": { - "peer_name": "router-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user1/tailscaled.sock whois --json 100.65.172.123", - "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 - } - }, "netmap": { - "SelfNode": { - "ID": 539541576444929, - "StableID": "nSq9YrqMD511CNTRL", - "Name": "user1.tail78f774.ts.net.", - "User": 4156223528223174, - "Key": "nodekey:96338a2cd2ea803c915ed8fdf882d66ca0c6a59d0fcf0bc4b3f928d22d1ac743", - "KeyExpiry": "2026-07-22T10:04:13Z", - "DiscoKey": "discokey:94c62b25a93d1474bcbf8b0e5f79763e3b093993c831b0a40e98b875827b232a", - "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:43259", "10.65.0.27:43259", "172.17.0.1:43259"], - "Hostinfo": { - "Hostname": "user1", - "Services": [ - { "Proto": "peerapi4", "Port": 46708 }, - { "Proto": "peerapi6", "Port": 46708 }, - { "Proto": "peerapi-dns-proxy", "Port": 1 } - ] - }, - "Created": "2026-01-23T10:04:13.531671894Z", - "MachineAuthorized": true, - "CapMap": { - "https://tailscale.com/cap/file-sharing": null, - "https://tailscale.com/cap/is-admin": null, - "https://tailscale.com/cap/is-owner": null, - "https://tailscale.com/cap/ssh": null, - "https://tailscale.com/cap/tailnet-lock": null, - "probe-udp-lifetime": null, - "ssh-behavior-v1": null, - "ssh-env-vars": null, - "store-appc-routes": null, - "tailnet-display-name": ["kratail2tid@passkey"] - }, - "ComputedName": "user1", - "ComputedNameWithHost": "user1" - }, - "AllCaps": [ - "https://tailscale.com/cap/is-owner", - "https://tailscale.com/cap/tailnet-lock", - "probe-udp-lifetime", - "https://tailscale.com/cap/is-admin", - "ssh-env-vars", - "https://tailscale.com/cap/file-sharing", - "https://tailscale.com/cap/ssh", - "store-appc-routes", - "ssh-behavior-v1", - "tailnet-display-name" - ], - "NodeKey": "nodekey:96338a2cd2ea803c915ed8fdf882d66ca0c6a59d0fcf0bc4b3f928d22d1ac743", - "MachineKey": "mkey:98b7ed0fef020882cab4324b39ac93b60741794e722411083d0d3cf703833f4a", "Peers": [], - "DNS": { - "Routes": { - "tail78f774.ts.net.": null, - "ts.net.": [{ "Addr": "199.247.155.53" }, { "Addr": "2620:111:8007::53" }] - }, - "Domains": ["tail78f774.ts.net"], - "Proxied": true, - "ExitNodeFilteredSet": [".ts.net", ".tailscale.net"] - }, - "PacketFilter": [], - "PacketFilterRules": null, - "SSHPolicy": { "rules": [] }, - "CollectServices": false, - "DERPMap": { - "Regions": { - "1": { - "RegionID": 1, - "RegionCode": "nyc", - "RegionName": "New York City", - "Latitude": 40.7128, - "Longitude": -74.006, - "Nodes": [ - { - "Name": "1h", - "RegionID": 1, - "HostName": "derp1h.tailscale.com", - "IPv4": "199.38.181.93", - "IPv6": "2607:f740:f::afd", - "CanPort80": true - }, - { - "Name": "1g", - "RegionID": 1, - "HostName": "derp1g.tailscale.com", - "IPv4": "209.177.145.120", - "IPv6": "2607:f740:f::3eb", - "CanPort80": true - }, - { - "Name": "1i", - "RegionID": 1, - "HostName": "derp1i.tailscale.com", - "IPv4": "199.38.181.103", - "IPv6": "2607:f740:f::e19", - "CanPort80": true - }, - { - "Name": "1f", - "RegionID": 1, - "HostName": "derp1f.tailscale.com", - "IPv4": "199.38.181.104", - "IPv6": "2607:f740:f::bc", - "CanPort80": true - } - ] - }, - "10": { - "RegionID": 10, - "RegionCode": "sea", - "RegionName": "Seattle", - "Latitude": 47.609722, - "Longitude": -122.333056, - "Nodes": [ - { - "Name": "10c", - "RegionID": 10, - "HostName": "derp10c.tailscale.com", - "IPv4": "192.73.240.121", - "IPv6": "2607:f740:14::40c", - "CanPort80": true - }, - { - "Name": "10d", - "RegionID": 10, - "HostName": "derp10d.tailscale.com", - "IPv4": "192.73.240.132", - "IPv6": "2607:f740:14::500", - "CanPort80": true - }, - { - "Name": "10b", - "RegionID": 10, - "HostName": "derp10b.tailscale.com", - "IPv4": "192.73.240.161", - "IPv6": "2607:f740:14::61c", - "CanPort80": true - } - ] - }, - "11": { - "RegionID": 11, - "RegionCode": "sao", - "RegionName": "São Paulo", - "Latitude": -23.55, - "Longitude": -46.633333, - "Nodes": [ - { - "Name": "11f", - "RegionID": 11, - "HostName": "derp11f.tailscale.com", - "IPv4": "172.237.61.197", - "IPv6": "2600:3c0d::2000:3bff:fe44:6166", - "CanPort80": true - }, - { - "Name": "11g", - "RegionID": 11, - "HostName": "derp11g.tailscale.com", - "IPv4": "172.237.61.190", - "IPv6": "2600:3c0d::2000:62ff:febe:2e67", - "CanPort80": true - }, - { - "Name": "11e", - "RegionID": 11, - "HostName": "derp11e.tailscale.com", - "IPv4": "172.237.61.194", - "IPv6": "2600:3c0d::2000:d2ff:fe43:1790", - "CanPort80": true - } - ] - }, - "12": { - "RegionID": 12, - "RegionCode": "ord", - "RegionName": "Chicago", - "Latitude": 41.881944, - "Longitude": -87.627778, - "Nodes": [ - { - "Name": "12e", - "RegionID": 12, - "HostName": "derp12e.tailscale.com", - "IPv4": "209.177.158.15", - "IPv6": "2607:f740:e::b17", - "CanPort80": true - }, - { - "Name": "12f", - "RegionID": 12, - "HostName": "derp12f.tailscale.com", - "IPv4": "199.38.182.118", - "IPv6": "2607:f740:e::4c8", - "CanPort80": true - }, - { - "Name": "12d", - "RegionID": 12, - "HostName": "derp12d.tailscale.com", - "IPv4": "209.177.158.246", - "IPv6": "2607:f740:e::811", - "CanPort80": true - } - ] - }, - "13": { - "RegionID": 13, - "RegionCode": "den", - "RegionName": "Denver", - "Latitude": 39.7392, - "Longitude": -104.9849, - "Nodes": [ - { - "Name": "13c", - "RegionID": 13, - "HostName": "derp13c.tailscale.com", - "IPv4": "192.73.242.28", - "IPv6": "2607:f740:16::5c", - "CanPort80": true - }, - { - "Name": "13d", - "RegionID": 13, - "HostName": "derp13d.tailscale.com", - "IPv4": "192.73.242.204", - "IPv6": "2607:f740:16::c23", - "CanPort80": true - }, - { - "Name": "13b", - "RegionID": 13, - "HostName": "derp13b.tailscale.com", - "IPv4": "192.73.242.187", - "IPv6": "2607:f740:16::640", - "CanPort80": true - } - ] - }, - "14": { - "RegionID": 14, - "RegionCode": "ams", - "RegionName": "Amsterdam", - "Latitude": 52.372778, - "Longitude": 4.893611, - "Nodes": [ - { - "Name": "14c", - "RegionID": 14, - "HostName": "derp14c.tailscale.com", - "IPv4": "176.58.93.147", - "IPv6": "2a00:dd80:3c::b09", - "CanPort80": true - }, - { - "Name": "14d", - "RegionID": 14, - "HostName": "derp14d.tailscale.com", - "IPv4": "176.58.93.154", - "IPv6": "2a00:dd80:3c::3d5", - "CanPort80": true - }, - { - "Name": "14b", - "RegionID": 14, - "HostName": "derp14b.tailscale.com", - "IPv4": "176.58.93.248", - "IPv6": "2a00:dd80:3c::807", - "CanPort80": true - } - ] - }, - "15": { - "RegionID": 15, - "RegionCode": "jnb", - "RegionName": "Johannesburg", - "Latitude": -26.204444, - "Longitude": 28.045556, - "Nodes": [ - { - "Name": "15c", - "RegionID": 15, - "HostName": "derp15c.tailscale.com", - "IPv4": "102.67.165.185", - "IPv6": "2c0f:edb0:0:10::b59", - "CanPort80": true - }, - { - "Name": "15d", - "RegionID": 15, - "HostName": "derp15d.tailscale.com", - "IPv4": "102.67.165.36", - "IPv6": "2c0f:edb0:0:10::599", - "CanPort80": true - }, - { - "Name": "15b", - "RegionID": 15, - "HostName": "derp15b.tailscale.com", - "IPv4": "102.67.165.90", - "IPv6": "2c0f:edb0:0:10::963", - "CanPort80": true - } - ] - }, - "16": { - "RegionID": 16, - "RegionCode": "mia", - "RegionName": "Miami", - "Latitude": 25.78, - "Longitude": -80.21, - "Nodes": [ - { - "Name": "16c", - "RegionID": 16, - "HostName": "derp16c.tailscale.com", - "IPv4": "192.73.243.229", - "IPv6": "2607:f740:17::4e4", - "CanPort80": true - }, - { - "Name": "16d", - "RegionID": 16, - "HostName": "derp16d.tailscale.com", - "IPv4": "192.73.243.141", - "IPv6": "2607:f740:17::475", - "CanPort80": true - }, - { - "Name": "16b", - "RegionID": 16, - "HostName": "derp16b.tailscale.com", - "IPv4": "192.73.243.135", - "IPv6": "2607:f740:17::476", - "CanPort80": true - } - ] - }, - "17": { - "RegionID": 17, - "RegionCode": "lax", - "RegionName": "Los Angeles", - "Latitude": 34.05, - "Longitude": -118.25, - "Nodes": [ - { - "Name": "17c", - "RegionID": 17, - "HostName": "derp17c.tailscale.com", - "IPv4": "208.111.40.12", - "IPv6": "2607:f740:c::10", - "CanPort80": true - }, - { - "Name": "17d", - "RegionID": 17, - "HostName": "derp17d.tailscale.com", - "IPv4": "208.111.40.216", - "IPv6": "2607:f740:c::e1b", - "CanPort80": true - }, - { - "Name": "17b", - "RegionID": 17, - "HostName": "derp17b.tailscale.com", - "IPv4": "192.73.244.245", - "IPv6": "2607:f740:c::646", - "CanPort80": true - } - ] - }, - "18": { - "RegionID": 18, - "RegionCode": "par", - "RegionName": "Paris", - "Latitude": 48.856667, - "Longitude": 2.352222, - "Nodes": [ - { - "Name": "18c", - "RegionID": 18, - "HostName": "derp18c.tailscale.com", - "IPv4": "176.58.90.207", - "IPv6": "2a00:dd80:3e::c19", - "CanPort80": true - }, - { - "Name": "18d", - "RegionID": 18, - "HostName": "derp18d.tailscale.com", - "IPv4": "176.58.90.104", - "IPv6": "2a00:dd80:3e::f2e", - "CanPort80": true - }, - { - "Name": "18b", - "RegionID": 18, - "HostName": "derp18b.tailscale.com", - "IPv4": "176.58.90.147", - "IPv6": "2a00:dd80:3e::363", - "CanPort80": true - } - ] - }, - "19": { - "RegionID": 19, - "RegionCode": "mad", - "RegionName": "Madrid", - "Latitude": 40.416944, - "Longitude": -3.703333, - "Nodes": [ - { - "Name": "19c", - "RegionID": 19, - "HostName": "derp19c.tailscale.com", - "IPv4": "45.159.97.61", - "IPv6": "2a00:dd80:14:10::20", - "CanPort80": true - }, - { - "Name": "19d", - "RegionID": 19, - "HostName": "derp19d.tailscale.com", - "IPv4": "45.159.97.233", - "IPv6": "2a00:dd80:14:10::34a", - "CanPort80": true - }, - { - "Name": "19b", - "RegionID": 19, - "HostName": "derp19b.tailscale.com", - "IPv4": "45.159.97.144", - "IPv6": "2a00:dd80:14:10::335", - "CanPort80": true - } - ] - }, - "2": { - "RegionID": 2, - "RegionCode": "sfo", - "RegionName": "San Francisco", - "Latitude": 37.7775, - "Longitude": -122.416389, - "Nodes": [ - { - "Name": "2e", - "RegionID": 2, - "HostName": "derp2e.tailscale.com", - "IPv4": "192.73.252.134", - "IPv6": "2607:f740:0:3f::44c", - "CanPort80": true - }, - { - "Name": "2f", - "RegionID": 2, - "HostName": "derp2f.tailscale.com", - "IPv4": "208.111.34.178", - "IPv6": "2607:f740:0:3f::f4", - "CanPort80": true - }, - { - "Name": "2d", - "RegionID": 2, - "HostName": "derp2d.tailscale.com", - "IPv4": "192.73.252.65", - "IPv6": "2607:f740:0:3f::287", - "CanPort80": true - } - ] - }, - "20": { - "RegionID": 20, - "RegionCode": "hkg", - "RegionName": "Hong Kong", - "Latitude": 22.3193, - "Longitude": 114.1694, - "Nodes": [ - { - "Name": "20c", - "RegionID": 20, - "HostName": "derp20c.tailscale.com", - "IPv4": "205.147.105.30", - "IPv6": "2403:2500:8000:1::5fb", - "CanPort80": true - }, - { - "Name": "20d", - "RegionID": 20, - "HostName": "derp20d.tailscale.com", - "IPv4": "205.147.105.78", - "IPv6": "2403:2500:8000:1::e9a", - "CanPort80": true - }, - { - "Name": "20b", - "RegionID": 20, - "HostName": "derp20b.tailscale.com", - "IPv4": "103.6.84.152", - "IPv6": "2403:2500:8000:1::ef6", - "CanPort80": true - } - ] - }, - "21": { - "RegionID": 21, - "RegionCode": "tor", - "RegionName": "Toronto", - "Latitude": 43.741667, - "Longitude": -79.373333, - "Nodes": [ - { - "Name": "21c", - "RegionID": 21, - "HostName": "derp21c.tailscale.com", - "IPv4": "162.248.221.215", - "IPv6": "2607:f740:50::f10", - "CanPort80": true - }, - { - "Name": "21d", - "RegionID": 21, - "HostName": "derp21d.tailscale.com", - "IPv4": "162.248.221.248", - "IPv6": "2607:f740:50::ca4", - "CanPort80": true - }, - { - "Name": "21b", - "RegionID": 21, - "HostName": "derp21b.tailscale.com", - "IPv4": "162.248.221.199", - "IPv6": "2607:f740:50::1d1", - "CanPort80": true - } - ] - }, - "22": { - "RegionID": 22, - "RegionCode": "waw", - "RegionName": "Warsaw", - "Latitude": 52.23, - "Longitude": 21.011111, - "Nodes": [ - { - "Name": "22c", - "RegionID": 22, - "HostName": "derp22c.tailscale.com", - "IPv4": "45.159.98.253", - "IPv6": "2a00:dd80:40:100::3f", - "CanPort80": true - }, - { - "Name": "22d", - "RegionID": 22, - "HostName": "derp22d.tailscale.com", - "IPv4": "45.159.98.145", - "IPv6": "2a00:dd80:40:100::211", - "CanPort80": true - }, - { - "Name": "22b", - "RegionID": 22, - "HostName": "derp22b.tailscale.com", - "IPv4": "45.159.98.196", - "IPv6": "2a00:dd80:40:100::316", - "CanPort80": true - } - ] - }, - "23": { - "RegionID": 23, - "RegionCode": "dbi", - "RegionName": "Dubai", - "Latitude": 25.263056, - "Longitude": 55.297222, - "Nodes": [ - { - "Name": "23c", - "RegionID": 23, - "HostName": "derp23c.tailscale.com", - "IPv4": "185.34.3.207", - "IPv6": "2a00:dd80:3f:100::a50", - "CanPort80": true - }, - { - "Name": "23d", - "RegionID": 23, - "HostName": "derp23d.tailscale.com", - "IPv4": "185.34.3.75", - "IPv6": "2a00:dd80:3f:100::97e", - "CanPort80": true - }, - { - "Name": "23b", - "RegionID": 23, - "HostName": "derp23b.tailscale.com", - "IPv4": "185.34.3.232", - "IPv6": "2a00:dd80:3f:100::76f", - "CanPort80": true - } - ] - }, - "24": { - "RegionID": 24, - "RegionCode": "hnl", - "RegionName": "Honolulu", - "Latitude": 21.306944, - "Longitude": -157.858333, - "Nodes": [ - { - "Name": "24c", - "RegionID": 24, - "HostName": "derp24c.tailscale.com", - "IPv4": "208.83.233.233", - "IPv6": "2001:19f0:c000:c591:5400:04ff:fe26:2c5f", - "CanPort80": true - }, - { - "Name": "24d", - "RegionID": 24, - "HostName": "derp24d.tailscale.com", - "IPv4": "208.72.155.133", - "IPv6": "2001:19f0:c000:c564:5400:04ff:fe26:2ba8", - "CanPort80": true - }, - { - "Name": "24b", - "RegionID": 24, - "HostName": "derp24b.tailscale.com", - "IPv4": "208.83.234.151", - "IPv6": "2001:19f0:c000:c586:5400:04ff:fe26:2ba6", - "CanPort80": true - } - ] - }, - "25": { - "RegionID": 25, - "RegionCode": "nai", - "RegionName": "Nairobi", - "Latitude": -1.286389, - "Longitude": 36.817222, - "Nodes": [ - { - "Name": "25c", - "RegionID": 25, - "HostName": "derp25c.tailscale.com", - "IPv4": "102.67.167.37", - "IPv6": "2c0f:edb0:2000:1::2c7", - "CanPort80": true - }, - { - "Name": "25d", - "RegionID": 25, - "HostName": "derp25d.tailscale.com", - "IPv4": "102.67.167.188", - "IPv6": "2c0f:edb0:2000:1::188", - "CanPort80": true - }, - { - "Name": "25b", - "RegionID": 25, - "HostName": "derp25b.tailscale.com", - "IPv4": "102.67.167.245", - "IPv6": "2c0f:edb0:2000:1::2e9", - "CanPort80": true - } - ] - }, - "26": { - "RegionID": 26, - "RegionCode": "nue", - "RegionName": "Nuremberg", - "Latitude": 49.453889, - "Longitude": 11.0775, - "Nodes": [ - { - "Name": "26c", - "RegionID": 26, - "HostName": "derp26c.tailscale.com", - "IPv4": "49.12.193.137", - "IPv6": "2a01:4f8:1c1c:5c70::1", - "CanPort80": true - }, - { - "Name": "26d", - "RegionID": 26, - "HostName": "derp26d.tailscale.com", - "IPv4": "49.13.204.141", - "IPv6": "2a01:4f8:1c0c:7d06::1", - "CanPort80": true - }, - { - "Name": "26b", - "RegionID": 26, - "HostName": "derp26b.tailscale.com", - "IPv4": "167.235.72.200", - "IPv6": "2a01:4f8:1c1c:47b6::1", - "CanPort80": true - } - ] - }, - "27": { - "RegionID": 27, - "RegionCode": "iad", - "RegionName": "Ashburn", - "Latitude": 39.03, - "Longitude": -77.471111, - "Nodes": [ - { - "Name": "27d", - "RegionID": 27, - "HostName": "derp27d.tailscale.com", - "IPv4": "178.156.152.106", - "IPv6": "2a01:4ff:f0:3c8e::1", - "CanPort80": true - }, - { - "Name": "27c", - "RegionID": 27, - "HostName": "derp27c.tailscale.com", - "IPv4": "178.156.152.91", - "IPv6": "2a01:4ff:f0:3913::1", - "CanPort80": true - }, - { - "Name": "27e", - "RegionID": 27, - "HostName": "derp27e.tailscale.com", - "IPv4": "178.156.134.232", - "IPv6": "2a01:4ff:f0:28d4::1", - "CanPort80": true - }, - { - "Name": "27b", - "RegionID": 27, - "HostName": "derp27b.tailscale.com", - "IPv4": "5.161.218.233", - "IPv6": "2a01:4ff:f0:3db9::1", - "CanPort80": true - } - ] - }, - "28": { - "RegionID": 28, - "RegionCode": "hel", - "RegionName": "Helsinki", - "Latitude": 60.170833, - "Longitude": 24.9375, - "Nodes": [ - { - "Name": "28c", - "RegionID": 28, - "HostName": "derp28c.tailscale.com", - "IPv4": "95.217.2.165", - "IPv6": "2a01:4f9:c012:cd74::1", - "CanPort80": true - }, - { - "Name": "28d", - "RegionID": 28, - "HostName": "derp28d.tailscale.com", - "IPv4": "157.180.28.32", - "IPv6": "2a01:4f9:c012:2e5b::1", - "CanPort80": true - }, - { - "Name": "28b", - "RegionID": 28, - "HostName": "derp28b.tailscale.com", - "IPv4": "65.109.143.62", - "IPv6": "2a01:4f9:c012:d55c::1", - "CanPort80": true - } - ] - }, - "3": { - "RegionID": 3, - "RegionCode": "sin", - "RegionName": "Singapore", - "Latitude": 1.3521, - "Longitude": 103.8198, - "Nodes": [ - { - "Name": "3g", - "RegionID": 3, - "HostName": "derp3g.tailscale.com", - "IPv4": "172.237.72.79", - "IPv6": "2600:3c15::2000:adff:fe08:6fab", - "CanPort80": true - }, - { - "Name": "3f", - "RegionID": 3, - "HostName": "derp3f.tailscale.com", - "IPv4": "172.237.72.8", - "IPv6": "2600:3c15::2000:53ff:fe48:a668", - "CanPort80": true - }, - { - "Name": "3h", - "RegionID": 3, - "HostName": "derp3h.tailscale.com", - "IPv4": "172.237.66.30", - "IPv6": "2600:3c15::2000:3dff:fe44:50aa", - "CanPort80": true - }, - { - "Name": "3e", - "RegionID": 3, - "HostName": "derp3e.tailscale.com", - "IPv4": "172.237.72.43", - "IPv6": "2600:3c15::2000:6cff:fee4:d799", - "CanPort80": true - } - ] - }, - "4": { - "RegionID": 4, - "RegionCode": "fra", - "RegionName": "Frankfurt", - "Latitude": 50.1109, - "Longitude": 8.6821, - "Nodes": [ - { - "Name": "4h", - "RegionID": 4, - "HostName": "derp4h.tailscale.com", - "IPv4": "185.40.234.77", - "IPv6": "2a00:dd80:20::bcf", - "CanPort80": true - }, - { - "Name": "4g", - "RegionID": 4, - "HostName": "derp4g.tailscale.com", - "IPv4": "185.40.234.113", - "IPv6": "2a00:dd80:20::8f", - "CanPort80": true - }, - { - "Name": "4i", - "RegionID": 4, - "HostName": "derp4i.tailscale.com", - "IPv4": "185.40.234.53", - "IPv6": "2a00:dd80:20::8a6", - "CanPort80": true - }, - { - "Name": "4f", - "RegionID": 4, - "HostName": "derp4f.tailscale.com", - "IPv4": "185.40.234.219", - "IPv6": "2a00:dd80:20::a25", - "CanPort80": true - } - ] - }, - "5": { - "RegionID": 5, - "RegionCode": "syd", - "RegionName": "Sydney", - "Latitude": -33.867778, - "Longitude": 151.21, - "Nodes": [ - { - "Name": "5f", - "RegionID": 5, - "HostName": "derp5f.tailscale.com", - "IPv4": "172.105.166.103", - "IPv6": "2400:8907::2000:ccff:fe1f:80da", - "CanPort80": true - }, - { - "Name": "5g", - "RegionID": 5, - "HostName": "derp5g.tailscale.com", - "IPv4": "172.105.169.57", - "IPv6": "2400:8907::2000:2fff:fea7:57f4", - "CanPort80": true - }, - { - "Name": "5e", - "RegionID": 5, - "HostName": "derp5e.tailscale.com", - "IPv4": "172.105.179.230", - "IPv6": "2400:8907::2000:ceff:fe8d:4f4e", - "CanPort80": true - } - ] - }, - "6": { - "RegionID": 6, - "RegionCode": "blr", - "RegionName": "Bengaluru", - "Latitude": 12.9716, - "Longitude": 77.5946, - "Nodes": [ - { - "Name": "6a", - "RegionID": 6, - "HostName": "derp6.tailscale.com", - "IPv4": "68.183.90.120", - "IPv6": "2400:6180:100:d0::982:d001", - "CanPort80": true - } - ] - }, - "7": { - "RegionID": 7, - "RegionCode": "tok", - "RegionName": "Tokyo", - "Latitude": 35.6764, - "Longitude": 139.65, - "Nodes": [ - { - "Name": "7g", - "RegionID": 7, - "HostName": "derp7g.tailscale.com", - "IPv4": "172.238.6.179", - "IPv6": "2600:3c18::2000:3fff:fe80:3ebd", - "CanPort80": true - }, - { - "Name": "7f", - "RegionID": 7, - "HostName": "derp7f.tailscale.com", - "IPv4": "172.238.6.34", - "IPv6": "2600:3c18::2000:acff:fe8e:3ed5", - "CanPort80": true - }, - { - "Name": "7h", - "RegionID": 7, - "HostName": "derp7h.tailscale.com", - "IPv4": "172.237.28.183", - "IPv6": "2600:3c18::2000:b1ff:fea9:4560", - "CanPort80": true - }, - { - "Name": "7e", - "RegionID": 7, - "HostName": "derp7e.tailscale.com", - "IPv4": "172.238.6.180", - "IPv6": "2600:3c18::2000:60ff:fe0f:6e83", - "STUNOnly": true, - "CanPort80": true - } - ] - }, - "8": { - "RegionID": 8, - "RegionCode": "lhr", - "RegionName": "London", - "Latitude": 51.5072, - "Longitude": 0.1276, - "Nodes": [ - { - "Name": "8f", - "RegionID": 8, - "HostName": "derp8f.tailscale.com", - "IPv4": "176.58.88.183", - "IPv6": "2a00:dd80:3a::dfa", - "CanPort80": true - }, - { - "Name": "8g", - "RegionID": 8, - "HostName": "derp8g.tailscale.com", - "IPv4": "176.58.92.254", - "IPv6": "2a00:dd80:3a::ed", - "CanPort80": true - }, - { - "Name": "8e", - "RegionID": 8, - "HostName": "derp8e.tailscale.com", - "IPv4": "176.58.92.144", - "IPv6": "2a00:dd80:3a::b33", - "CanPort80": true - } - ] - }, - "9": { - "RegionID": 9, - "RegionCode": "dfw", - "RegionName": "Dallas", - "Latitude": 32.779167, - "Longitude": -96.808889, - "Nodes": [ - { - "Name": "9e", - "RegionID": 9, - "HostName": "derp9e.tailscale.com", - "IPv4": "192.73.248.83", - "IPv6": "2607:f740:100::359", - "CanPort80": true - }, - { - "Name": "9f", - "RegionID": 9, - "HostName": "derp9f.tailscale.com", - "IPv4": "209.177.156.197", - "IPv6": "2607:f740:100::cad", - "CanPort80": true - }, - { - "Name": "9d", - "RegionID": 9, - "HostName": "derp9d.tailscale.com", - "IPv4": "209.177.156.94", - "IPv6": "2607:f740:100::c05", - "CanPort80": true - } - ] - } - } - }, - "DisplayMessages": null, - "TKAEnabled": false, - "TKAHead": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", - "Domain": "kratail2tid@passkey", - "DomainAuditLogID": "", - "UserProfiles": { - "4156223528223174": { - "ID": 4156223528223174, - "LoginName": "kratail2tid@passkey", - "DisplayName": "kratail2tid" - } - } + "PacketFilterRules": null } } } diff --git a/hscontrol/policy/v2/testdata/grant_results/GRANT-V30.hujson b/hscontrol/policy/v2/testdata/grant_results/GRANT-V30.hujson index 3070d69a8..520897efe 100644 --- a/hscontrol/policy/v2/testdata/grant_results/GRANT-V30.hujson +++ b/hscontrol/policy/v2/testdata/grant_results/GRANT-V30.hujson @@ -14,29 +14,55 @@ // Expected: Rules on router-a, router-b { "test_id": "GRANT-V30", - "timestamp": "2026-03-28T11:52:18Z", - "propagation_wait_seconds": 8, "input": { - "policy_file": "grant_policies_via/grant_v30.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"], - "tag:exit-a": ["kratail2tid@passkey"], - "tag:exit-b": ["kratail2tid@passkey"], - "tag:group-a": ["kratail2tid@passkey"], - "tag:group-b": ["kratail2tid@passkey"], - "tag:router-a": ["kratail2tid@passkey"], - "tag:router-b": ["kratail2tid@passkey"] + "tag:server": [ + "kratail2tid@passkey" + ], + "tag:prod": [ + "kratail2tid@passkey" + ], + "tag:client": [ + "kratail2tid@passkey" + ], + "tag:router": [ + "kratail2tid@passkey" + ], + "tag:exit": [ + "kratail2tid@passkey" + ], + "tag:exit-a": [ + "kratail2tid@passkey" + ], + "tag:exit-b": [ + "kratail2tid@passkey" + ], + "tag:group-a": [ + "kratail2tid@passkey" + ], + "tag:group-b": [ + "kratail2tid@passkey" + ], + "tag:router-a": [ + "kratail2tid@passkey" + ], + "tag:router-b": [ + "kratail2tid@passkey" + ] }, "hosts": { "webserver": "100.108.74.26", @@ -45,183 +71,201 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "10.44.0.0/16": ["tag:router-a"], - "10.55.0.0/16": ["tag:router-b"], - "0.0.0.0/0": ["tag:exit", "tag:exit-a", "tag:exit-b"], - "::/0": ["tag:exit", "tag:exit-a", "tag:exit-b"] + "10.33.0.0/16": [ + "tag:router" + ], + "10.44.0.0/16": [ + "tag:router-a" + ], + "10.55.0.0/16": [ + "tag:router-b" + ], + "0.0.0.0/0": [ + "tag:exit", + "tag:exit-a", + "tag:exit-b" + ], + "::/0": [ + "tag:exit", + "tag:exit-a", + "tag:exit-b" + ] } }, "grants": [ { - "src": ["tag:group-a"], - "dst": ["10.44.0.0/16"], - "via": ["tag:router-a"], - "ip": ["*"] + "src": [ + "tag:group-a" + ], + "dst": [ + "10.44.0.0/16" + ], + "via": [ + "tag:router-a" + ], + "ip": [ + "*" + ] }, { - "src": ["tag:group-a"], - "dst": ["autogroup:internet"], - "via": ["tag:exit-b"], - "ip": ["*"] + "src": [ + "tag:group-a" + ], + "dst": [ + "autogroup:internet" + ], + "via": [ + "tag:exit-b" + ], + "ip": [ + "*" + ] }, { - "src": ["tag:group-b"], - "dst": ["10.55.0.0/16"], - "via": ["tag:router-b"], - "ip": ["*"] + "src": [ + "tag:group-b" + ], + "dst": [ + "10.55.0.0/16" + ], + "via": [ + "tag:router-b" + ], + "ip": [ + "*" + ] }, { - "src": ["tag:group-b"], - "dst": ["autogroup:internet"], - "via": ["tag:exit-a"], - "ip": ["*"] + "src": [ + "tag:group-b" + ], + "dst": [ + "autogroup:internet" + ], + "via": [ + "tag:exit-a" + ], + "ip": [ + "*" + ] } ] }, - "grants_section": [ - { "src": ["tag:group-a"], "dst": ["10.44.0.0/16"], "via": ["tag:router-a"], "ip": ["*"] }, - { "src": ["tag:group-a"], "dst": ["autogroup:internet"], "via": ["tag:exit-b"], "ip": ["*"] }, - { "src": ["tag:group-b"], "dst": ["10.55.0.0/16"], "via": ["tag:router-b"], "ip": ["*"] }, - { "src": ["tag:group-b"], "dst": ["autogroup:internet"], "via": ["tag:exit-a"], "ip": ["*"] } - ], - "api_endpoint": "https://api.tailscale.com/api/v2/tailnet/kratail2tid%40passkey/acl", - "api_method": "POST", "api_response_code": 200 }, "topology": { "nodes": { "exit-a": { - "mts_name": "exit-a", - "socket": "/home/kradalby/.config/multi-tailscale-dev/exit-a/tailscaled.sock", "hostname": "exit-a", - "user_id": 3118755726458377, - "tags": ["tag:exit-a"], + "tags": [ + "tag:exit-a" + ], "ipv4": "100.124.195.93", "ipv6": "fd7a:115c:a1e0::7837:c35d" }, "exit-b": { - "mts_name": "exit-b", - "socket": "/home/kradalby/.config/multi-tailscale-dev/exit-b/tailscaled.sock", "hostname": "exit-b", - "user_id": 2230775583277936, - "tags": ["tag:exit-b"], + "tags": [ + "tag:exit-b" + ], "ipv4": "100.116.18.24", "ipv6": "fd7a:115c:a1e0::ff37:1218" }, "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"], + "tags": [ + "tag:exit" + ], "ipv4": "100.85.66.106", "ipv6": "fd7a:115c:a1e0::7c37:426a" }, "group-a-client": { - "mts_name": "group-a-client", - "socket": "/home/kradalby/.config/multi-tailscale-dev/group-a-client/tailscaled.sock", "hostname": "group-a-client", - "user_id": 6999435610919250, - "tags": ["tag:group-a"], + "tags": [ + "tag:group-a" + ], "ipv4": "100.107.162.14", "ipv6": "fd7a:115c:a1e0::a237:a20e" }, "group-b-client": { - "mts_name": "group-b-client", - "socket": "/home/kradalby/.config/multi-tailscale-dev/group-b-client/tailscaled.sock", "hostname": "group-b-client", - "user_id": 1008089393782498, - "tags": ["tag:group-b"], + "tags": [ + "tag:group-b" + ], "ipv4": "100.77.135.18", "ipv6": "fd7a:115c:a1e0::4b37:8712" }, "multi-exit-router": { - "mts_name": "multi-exit-router", - "socket": "/home/kradalby/.config/multi-tailscale-dev/multi-exit-router/tailscaled.sock", "hostname": "multi-exit-router", - "user_id": 6294409699640722, - "tags": ["tag:exit", "tag:router"], + "tags": [ + "tag:exit", + "tag:router" + ], "ipv4": "100.105.127.107", "ipv6": "fd7a:115c:a1e0::ad37:7f6b" }, "router-a": { - "mts_name": "router-a", - "socket": "/home/kradalby/.config/multi-tailscale-dev/router-a/tailscaled.sock", "hostname": "router-a", - "user_id": 50590507314324, - "tags": ["tag:router-a"], + "tags": [ + "tag:router-a" + ], "ipv4": "100.109.43.124", "ipv6": "fd7a:115c:a1e0::a537:2b7c" }, "router-b": { - "mts_name": "router-b", - "socket": "/home/kradalby/.config/multi-tailscale-dev/router-b/tailscaled.sock", "hostname": "router-b", - "user_id": 1399889648409786, - "tags": ["tag:router-b"], + "tags": [ + "tag:router-b" + ], "ipv4": "100.65.172.123", "ipv6": "fd7a:115c:a1e0::5a37:ac7c" }, "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"], + "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"], + "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"], + "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"], + "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" @@ -230,16956 +274,214 @@ }, "captures": { "exit-a": { - "commands": { - "packet_filter_rules": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-a/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-a/tailscaled.sock debug localapi POST debug-packet-filter-matches" - }, "packet_filter_rules": null, - "packet_filter_matches": [], - "whois": { - "100.116.18.24": { - "peer_name": "exit-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-a/tailscaled.sock whois --json 100.116.18.24", - "response": null - }, - "100.85.66.106": { - "peer_name": "exit-node", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-a/tailscaled.sock whois --json 100.85.66.106", - "response": null - }, - "100.107.162.14": { - "peer_name": "group-a-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-a/tailscaled.sock whois --json 100.107.162.14", - "response": null - }, - "100.77.135.18": { - "peer_name": "group-b-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-a/tailscaled.sock whois --json 100.77.135.18", - "response": null - }, - "100.105.127.107": { - "peer_name": "multi-exit-router", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-a/tailscaled.sock whois --json 100.105.127.107", - "response": null - }, - "100.109.43.124": { - "peer_name": "router-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-a/tailscaled.sock whois --json 100.109.43.124", - "response": null - }, - "100.65.172.123": { - "peer_name": "router-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-a/tailscaled.sock whois --json 100.65.172.123", - "response": null - }, - "100.92.142.61": { - "peer_name": "subnet-router", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-a/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-a/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-a/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-a/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-a/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-a/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-a/tailscaled.sock whois --json 100.90.199.68", - "response": null - } - }, "netmap": { - "SelfNode": { - "ID": 3118755726458377, - "StableID": "nvFTscRVMR11CNTRL", - "Name": "exit-a.tail78f774.ts.net.", - "User": 3118755726458377, - "Key": "nodekey:21ab6fa3288e3bf8cecced295316c6327f427649765eb1746cc6ee9978bcc35c", - "DiscoKey": "discokey:0c8595f67987ed47cf551646d6266c21a635d622409d10745cc08f6922066e49", - "Addresses": ["100.124.195.93/32", "fd7a:115c:a1e0::7837:c35d/128"], - "AllowedIPs": ["100.124.195.93/32", "fd7a:115c:a1e0::7837:c35d/128"], - "Endpoints": ["77.164.248.136:37550", "10.65.0.27:37550", "172.17.0.1:37550"], - "Hostinfo": { - "Hostname": "exit-a", - "RoutableIPs": ["0.0.0.0/0", "::/0"], - "RequestTags": ["tag:exit-a"], - "Services": [ - { "Proto": "peerapi4", "Port": 57826 }, - { "Proto": "peerapi6", "Port": 57826 }, - { "Proto": "peerapi-dns-proxy", "Port": 1 } - ] - }, - "Created": "2026-03-28T10:37:56.932966573Z", - "Tags": ["tag:exit-a"], - "MachineAuthorized": true, - "CapMap": { - "https://tailscale.com/cap/file-sharing": null, - "https://tailscale.com/cap/is-owner": null, - "https://tailscale.com/cap/ssh": null, - "https://tailscale.com/cap/tailnet-lock": null, - "probe-udp-lifetime": null, - "ssh-behavior-v1": null, - "ssh-env-vars": null, - "store-appc-routes": null, - "tailnet-display-name": ["kratail2tid@passkey"] - }, - "ComputedName": "exit-a", - "ComputedNameWithHost": "exit-a" - }, - "AllCaps": [ - "https://tailscale.com/cap/tailnet-lock", - "ssh-behavior-v1", - "tailnet-display-name", - "probe-udp-lifetime", - "https://tailscale.com/cap/is-owner", - "ssh-env-vars", - "https://tailscale.com/cap/file-sharing", - "store-appc-routes", - "https://tailscale.com/cap/ssh" - ], - "NodeKey": "nodekey:21ab6fa3288e3bf8cecced295316c6327f427649765eb1746cc6ee9978bcc35c", - "MachineKey": "mkey:d4a36168723163165bbdcb0b17762903171593d01c26c5bb12216932f6d10876", "Peers": [], - "DNS": { - "Routes": { - "tail78f774.ts.net.": null, - "ts.net.": [{ "Addr": "199.247.155.53" }, { "Addr": "2620:111:8007::53" }] - }, - "Domains": ["tail78f774.ts.net"], - "Proxied": true, - "ExitNodeFilteredSet": [".ts.net", ".tailscale.net"] - }, - "PacketFilter": [], - "PacketFilterRules": null, - "SSHPolicy": { "rules": [] }, - "CollectServices": false, - "DERPMap": { - "Regions": { - "1": { - "RegionID": 1, - "RegionCode": "nyc", - "RegionName": "New York City", - "Latitude": 40.7128, - "Longitude": -74.006, - "Nodes": [ - { - "Name": "1h", - "RegionID": 1, - "HostName": "derp1h.tailscale.com", - "IPv4": "199.38.181.93", - "IPv6": "2607:f740:f::afd", - "CanPort80": true - }, - { - "Name": "1g", - "RegionID": 1, - "HostName": "derp1g.tailscale.com", - "IPv4": "209.177.145.120", - "IPv6": "2607:f740:f::3eb", - "CanPort80": true - }, - { - "Name": "1i", - "RegionID": 1, - "HostName": "derp1i.tailscale.com", - "IPv4": "199.38.181.103", - "IPv6": "2607:f740:f::e19", - "CanPort80": true - }, - { - "Name": "1f", - "RegionID": 1, - "HostName": "derp1f.tailscale.com", - "IPv4": "199.38.181.104", - "IPv6": "2607:f740:f::bc", - "CanPort80": true - } - ] - }, - "10": { - "RegionID": 10, - "RegionCode": "sea", - "RegionName": "Seattle", - "Latitude": 47.609722, - "Longitude": -122.333056, - "Nodes": [ - { - "Name": "10c", - "RegionID": 10, - "HostName": "derp10c.tailscale.com", - "IPv4": "192.73.240.121", - "IPv6": "2607:f740:14::40c", - "CanPort80": true - }, - { - "Name": "10d", - "RegionID": 10, - "HostName": "derp10d.tailscale.com", - "IPv4": "192.73.240.132", - "IPv6": "2607:f740:14::500", - "CanPort80": true - }, - { - "Name": "10b", - "RegionID": 10, - "HostName": "derp10b.tailscale.com", - "IPv4": "192.73.240.161", - "IPv6": "2607:f740:14::61c", - "CanPort80": true - } - ] - }, - "11": { - "RegionID": 11, - "RegionCode": "sao", - "RegionName": "São Paulo", - "Latitude": -23.55, - "Longitude": -46.633333, - "Nodes": [ - { - "Name": "11f", - "RegionID": 11, - "HostName": "derp11f.tailscale.com", - "IPv4": "172.237.61.197", - "IPv6": "2600:3c0d::2000:3bff:fe44:6166", - "CanPort80": true - }, - { - "Name": "11g", - "RegionID": 11, - "HostName": "derp11g.tailscale.com", - "IPv4": "172.237.61.190", - "IPv6": "2600:3c0d::2000:62ff:febe:2e67", - "CanPort80": true - }, - { - "Name": "11e", - "RegionID": 11, - "HostName": "derp11e.tailscale.com", - "IPv4": "172.237.61.194", - "IPv6": "2600:3c0d::2000:d2ff:fe43:1790", - "CanPort80": true - } - ] - }, - "12": { - "RegionID": 12, - "RegionCode": "ord", - "RegionName": "Chicago", - "Latitude": 41.881944, - "Longitude": -87.627778, - "Nodes": [ - { - "Name": "12e", - "RegionID": 12, - "HostName": "derp12e.tailscale.com", - "IPv4": "209.177.158.15", - "IPv6": "2607:f740:e::b17", - "CanPort80": true - }, - { - "Name": "12f", - "RegionID": 12, - "HostName": "derp12f.tailscale.com", - "IPv4": "199.38.182.118", - "IPv6": "2607:f740:e::4c8", - "CanPort80": true - }, - { - "Name": "12d", - "RegionID": 12, - "HostName": "derp12d.tailscale.com", - "IPv4": "209.177.158.246", - "IPv6": "2607:f740:e::811", - "CanPort80": true - } - ] - }, - "13": { - "RegionID": 13, - "RegionCode": "den", - "RegionName": "Denver", - "Latitude": 39.7392, - "Longitude": -104.9849, - "Nodes": [ - { - "Name": "13c", - "RegionID": 13, - "HostName": "derp13c.tailscale.com", - "IPv4": "192.73.242.28", - "IPv6": "2607:f740:16::5c", - "CanPort80": true - }, - { - "Name": "13d", - "RegionID": 13, - "HostName": "derp13d.tailscale.com", - "IPv4": "192.73.242.204", - "IPv6": "2607:f740:16::c23", - "CanPort80": true - }, - { - "Name": "13b", - "RegionID": 13, - "HostName": "derp13b.tailscale.com", - "IPv4": "192.73.242.187", - "IPv6": "2607:f740:16::640", - "CanPort80": true - } - ] - }, - "14": { - "RegionID": 14, - "RegionCode": "ams", - "RegionName": "Amsterdam", - "Latitude": 52.372778, - "Longitude": 4.893611, - "Nodes": [ - { - "Name": "14c", - "RegionID": 14, - "HostName": "derp14c.tailscale.com", - "IPv4": "176.58.93.147", - "IPv6": "2a00:dd80:3c::b09", - "CanPort80": true - }, - { - "Name": "14d", - "RegionID": 14, - "HostName": "derp14d.tailscale.com", - "IPv4": "176.58.93.154", - "IPv6": "2a00:dd80:3c::3d5", - "CanPort80": true - }, - { - "Name": "14b", - "RegionID": 14, - "HostName": "derp14b.tailscale.com", - "IPv4": "176.58.93.248", - "IPv6": "2a00:dd80:3c::807", - "CanPort80": true - } - ] - }, - "15": { - "RegionID": 15, - "RegionCode": "jnb", - "RegionName": "Johannesburg", - "Latitude": -26.204444, - "Longitude": 28.045556, - "Nodes": [ - { - "Name": "15c", - "RegionID": 15, - "HostName": "derp15c.tailscale.com", - "IPv4": "102.67.165.185", - "IPv6": "2c0f:edb0:0:10::b59", - "CanPort80": true - }, - { - "Name": "15d", - "RegionID": 15, - "HostName": "derp15d.tailscale.com", - "IPv4": "102.67.165.36", - "IPv6": "2c0f:edb0:0:10::599", - "CanPort80": true - }, - { - "Name": "15b", - "RegionID": 15, - "HostName": "derp15b.tailscale.com", - "IPv4": "102.67.165.90", - "IPv6": "2c0f:edb0:0:10::963", - "CanPort80": true - } - ] - }, - "16": { - "RegionID": 16, - "RegionCode": "mia", - "RegionName": "Miami", - "Latitude": 25.78, - "Longitude": -80.21, - "Nodes": [ - { - "Name": "16c", - "RegionID": 16, - "HostName": "derp16c.tailscale.com", - "IPv4": "192.73.243.229", - "IPv6": "2607:f740:17::4e4", - "CanPort80": true - }, - { - "Name": "16d", - "RegionID": 16, - "HostName": "derp16d.tailscale.com", - "IPv4": "192.73.243.141", - "IPv6": "2607:f740:17::475", - "CanPort80": true - }, - { - "Name": "16b", - "RegionID": 16, - "HostName": "derp16b.tailscale.com", - "IPv4": "192.73.243.135", - "IPv6": "2607:f740:17::476", - "CanPort80": true - } - ] - }, - "17": { - "RegionID": 17, - "RegionCode": "lax", - "RegionName": "Los Angeles", - "Latitude": 34.05, - "Longitude": -118.25, - "Nodes": [ - { - "Name": "17c", - "RegionID": 17, - "HostName": "derp17c.tailscale.com", - "IPv4": "208.111.40.12", - "IPv6": "2607:f740:c::10", - "CanPort80": true - }, - { - "Name": "17d", - "RegionID": 17, - "HostName": "derp17d.tailscale.com", - "IPv4": "208.111.40.216", - "IPv6": "2607:f740:c::e1b", - "CanPort80": true - }, - { - "Name": "17b", - "RegionID": 17, - "HostName": "derp17b.tailscale.com", - "IPv4": "192.73.244.245", - "IPv6": "2607:f740:c::646", - "CanPort80": true - } - ] - }, - "18": { - "RegionID": 18, - "RegionCode": "par", - "RegionName": "Paris", - "Latitude": 48.856667, - "Longitude": 2.352222, - "Nodes": [ - { - "Name": "18c", - "RegionID": 18, - "HostName": "derp18c.tailscale.com", - "IPv4": "176.58.90.207", - "IPv6": "2a00:dd80:3e::c19", - "CanPort80": true - }, - { - "Name": "18d", - "RegionID": 18, - "HostName": "derp18d.tailscale.com", - "IPv4": "176.58.90.104", - "IPv6": "2a00:dd80:3e::f2e", - "CanPort80": true - }, - { - "Name": "18b", - "RegionID": 18, - "HostName": "derp18b.tailscale.com", - "IPv4": "176.58.90.147", - "IPv6": "2a00:dd80:3e::363", - "CanPort80": true - } - ] - }, - "19": { - "RegionID": 19, - "RegionCode": "mad", - "RegionName": "Madrid", - "Latitude": 40.416944, - "Longitude": -3.703333, - "Nodes": [ - { - "Name": "19c", - "RegionID": 19, - "HostName": "derp19c.tailscale.com", - "IPv4": "45.159.97.61", - "IPv6": "2a00:dd80:14:10::20", - "CanPort80": true - }, - { - "Name": "19d", - "RegionID": 19, - "HostName": "derp19d.tailscale.com", - "IPv4": "45.159.97.233", - "IPv6": "2a00:dd80:14:10::34a", - "CanPort80": true - }, - { - "Name": "19b", - "RegionID": 19, - "HostName": "derp19b.tailscale.com", - "IPv4": "45.159.97.144", - "IPv6": "2a00:dd80:14:10::335", - "CanPort80": true - } - ] - }, - "2": { - "RegionID": 2, - "RegionCode": "sfo", - "RegionName": "San Francisco", - "Latitude": 37.7775, - "Longitude": -122.416389, - "Nodes": [ - { - "Name": "2e", - "RegionID": 2, - "HostName": "derp2e.tailscale.com", - "IPv4": "192.73.252.134", - "IPv6": "2607:f740:0:3f::44c", - "CanPort80": true - }, - { - "Name": "2f", - "RegionID": 2, - "HostName": "derp2f.tailscale.com", - "IPv4": "208.111.34.178", - "IPv6": "2607:f740:0:3f::f4", - "CanPort80": true - }, - { - "Name": "2d", - "RegionID": 2, - "HostName": "derp2d.tailscale.com", - "IPv4": "192.73.252.65", - "IPv6": "2607:f740:0:3f::287", - "CanPort80": true - } - ] - }, - "20": { - "RegionID": 20, - "RegionCode": "hkg", - "RegionName": "Hong Kong", - "Latitude": 22.3193, - "Longitude": 114.1694, - "Nodes": [ - { - "Name": "20c", - "RegionID": 20, - "HostName": "derp20c.tailscale.com", - "IPv4": "205.147.105.30", - "IPv6": "2403:2500:8000:1::5fb", - "CanPort80": true - }, - { - "Name": "20d", - "RegionID": 20, - "HostName": "derp20d.tailscale.com", - "IPv4": "205.147.105.78", - "IPv6": "2403:2500:8000:1::e9a", - "CanPort80": true - }, - { - "Name": "20b", - "RegionID": 20, - "HostName": "derp20b.tailscale.com", - "IPv4": "103.6.84.152", - "IPv6": "2403:2500:8000:1::ef6", - "CanPort80": true - } - ] - }, - "21": { - "RegionID": 21, - "RegionCode": "tor", - "RegionName": "Toronto", - "Latitude": 43.741667, - "Longitude": -79.373333, - "Nodes": [ - { - "Name": "21c", - "RegionID": 21, - "HostName": "derp21c.tailscale.com", - "IPv4": "162.248.221.215", - "IPv6": "2607:f740:50::f10", - "CanPort80": true - }, - { - "Name": "21d", - "RegionID": 21, - "HostName": "derp21d.tailscale.com", - "IPv4": "162.248.221.248", - "IPv6": "2607:f740:50::ca4", - "CanPort80": true - }, - { - "Name": "21b", - "RegionID": 21, - "HostName": "derp21b.tailscale.com", - "IPv4": "162.248.221.199", - "IPv6": "2607:f740:50::1d1", - "CanPort80": true - } - ] - }, - "22": { - "RegionID": 22, - "RegionCode": "waw", - "RegionName": "Warsaw", - "Latitude": 52.23, - "Longitude": 21.011111, - "Nodes": [ - { - "Name": "22c", - "RegionID": 22, - "HostName": "derp22c.tailscale.com", - "IPv4": "45.159.98.253", - "IPv6": "2a00:dd80:40:100::3f", - "CanPort80": true - }, - { - "Name": "22d", - "RegionID": 22, - "HostName": "derp22d.tailscale.com", - "IPv4": "45.159.98.145", - "IPv6": "2a00:dd80:40:100::211", - "CanPort80": true - }, - { - "Name": "22b", - "RegionID": 22, - "HostName": "derp22b.tailscale.com", - "IPv4": "45.159.98.196", - "IPv6": "2a00:dd80:40:100::316", - "CanPort80": true - } - ] - }, - "23": { - "RegionID": 23, - "RegionCode": "dbi", - "RegionName": "Dubai", - "Latitude": 25.263056, - "Longitude": 55.297222, - "Nodes": [ - { - "Name": "23c", - "RegionID": 23, - "HostName": "derp23c.tailscale.com", - "IPv4": "185.34.3.207", - "IPv6": "2a00:dd80:3f:100::a50", - "CanPort80": true - }, - { - "Name": "23d", - "RegionID": 23, - "HostName": "derp23d.tailscale.com", - "IPv4": "185.34.3.75", - "IPv6": "2a00:dd80:3f:100::97e", - "CanPort80": true - }, - { - "Name": "23b", - "RegionID": 23, - "HostName": "derp23b.tailscale.com", - "IPv4": "185.34.3.232", - "IPv6": "2a00:dd80:3f:100::76f", - "CanPort80": true - } - ] - }, - "24": { - "RegionID": 24, - "RegionCode": "hnl", - "RegionName": "Honolulu", - "Latitude": 21.306944, - "Longitude": -157.858333, - "Nodes": [ - { - "Name": "24c", - "RegionID": 24, - "HostName": "derp24c.tailscale.com", - "IPv4": "208.83.233.233", - "IPv6": "2001:19f0:c000:c591:5400:04ff:fe26:2c5f", - "CanPort80": true - }, - { - "Name": "24d", - "RegionID": 24, - "HostName": "derp24d.tailscale.com", - "IPv4": "208.72.155.133", - "IPv6": "2001:19f0:c000:c564:5400:04ff:fe26:2ba8", - "CanPort80": true - }, - { - "Name": "24b", - "RegionID": 24, - "HostName": "derp24b.tailscale.com", - "IPv4": "208.83.234.151", - "IPv6": "2001:19f0:c000:c586:5400:04ff:fe26:2ba6", - "CanPort80": true - } - ] - }, - "25": { - "RegionID": 25, - "RegionCode": "nai", - "RegionName": "Nairobi", - "Latitude": -1.286389, - "Longitude": 36.817222, - "Nodes": [ - { - "Name": "25c", - "RegionID": 25, - "HostName": "derp25c.tailscale.com", - "IPv4": "102.67.167.37", - "IPv6": "2c0f:edb0:2000:1::2c7", - "CanPort80": true - }, - { - "Name": "25d", - "RegionID": 25, - "HostName": "derp25d.tailscale.com", - "IPv4": "102.67.167.188", - "IPv6": "2c0f:edb0:2000:1::188", - "CanPort80": true - }, - { - "Name": "25b", - "RegionID": 25, - "HostName": "derp25b.tailscale.com", - "IPv4": "102.67.167.245", - "IPv6": "2c0f:edb0:2000:1::2e9", - "CanPort80": true - } - ] - }, - "26": { - "RegionID": 26, - "RegionCode": "nue", - "RegionName": "Nuremberg", - "Latitude": 49.453889, - "Longitude": 11.0775, - "Nodes": [ - { - "Name": "26c", - "RegionID": 26, - "HostName": "derp26c.tailscale.com", - "IPv4": "49.12.193.137", - "IPv6": "2a01:4f8:1c1c:5c70::1", - "CanPort80": true - }, - { - "Name": "26d", - "RegionID": 26, - "HostName": "derp26d.tailscale.com", - "IPv4": "49.13.204.141", - "IPv6": "2a01:4f8:1c0c:7d06::1", - "CanPort80": true - }, - { - "Name": "26b", - "RegionID": 26, - "HostName": "derp26b.tailscale.com", - "IPv4": "167.235.72.200", - "IPv6": "2a01:4f8:1c1c:47b6::1", - "CanPort80": true - } - ] - }, - "27": { - "RegionID": 27, - "RegionCode": "iad", - "RegionName": "Ashburn", - "Latitude": 39.03, - "Longitude": -77.471111, - "Nodes": [ - { - "Name": "27d", - "RegionID": 27, - "HostName": "derp27d.tailscale.com", - "IPv4": "178.156.152.106", - "IPv6": "2a01:4ff:f0:3c8e::1", - "CanPort80": true - }, - { - "Name": "27c", - "RegionID": 27, - "HostName": "derp27c.tailscale.com", - "IPv4": "178.156.152.91", - "IPv6": "2a01:4ff:f0:3913::1", - "CanPort80": true - }, - { - "Name": "27e", - "RegionID": 27, - "HostName": "derp27e.tailscale.com", - "IPv4": "178.156.134.232", - "IPv6": "2a01:4ff:f0:28d4::1", - "CanPort80": true - }, - { - "Name": "27b", - "RegionID": 27, - "HostName": "derp27b.tailscale.com", - "IPv4": "5.161.218.233", - "IPv6": "2a01:4ff:f0:3db9::1", - "CanPort80": true - } - ] - }, - "28": { - "RegionID": 28, - "RegionCode": "hel", - "RegionName": "Helsinki", - "Latitude": 60.170833, - "Longitude": 24.9375, - "Nodes": [ - { - "Name": "28c", - "RegionID": 28, - "HostName": "derp28c.tailscale.com", - "IPv4": "95.217.2.165", - "IPv6": "2a01:4f9:c012:cd74::1", - "CanPort80": true - }, - { - "Name": "28d", - "RegionID": 28, - "HostName": "derp28d.tailscale.com", - "IPv4": "157.180.28.32", - "IPv6": "2a01:4f9:c012:2e5b::1", - "CanPort80": true - }, - { - "Name": "28b", - "RegionID": 28, - "HostName": "derp28b.tailscale.com", - "IPv4": "65.109.143.62", - "IPv6": "2a01:4f9:c012:d55c::1", - "CanPort80": true - } - ] - }, - "3": { - "RegionID": 3, - "RegionCode": "sin", - "RegionName": "Singapore", - "Latitude": 1.3521, - "Longitude": 103.8198, - "Nodes": [ - { - "Name": "3g", - "RegionID": 3, - "HostName": "derp3g.tailscale.com", - "IPv4": "172.237.72.79", - "IPv6": "2600:3c15::2000:adff:fe08:6fab", - "CanPort80": true - }, - { - "Name": "3f", - "RegionID": 3, - "HostName": "derp3f.tailscale.com", - "IPv4": "172.237.72.8", - "IPv6": "2600:3c15::2000:53ff:fe48:a668", - "CanPort80": true - }, - { - "Name": "3h", - "RegionID": 3, - "HostName": "derp3h.tailscale.com", - "IPv4": "172.237.66.30", - "IPv6": "2600:3c15::2000:3dff:fe44:50aa", - "CanPort80": true - }, - { - "Name": "3e", - "RegionID": 3, - "HostName": "derp3e.tailscale.com", - "IPv4": "172.237.72.43", - "IPv6": "2600:3c15::2000:6cff:fee4:d799", - "CanPort80": true - } - ] - }, - "4": { - "RegionID": 4, - "RegionCode": "fra", - "RegionName": "Frankfurt", - "Latitude": 50.1109, - "Longitude": 8.6821, - "Nodes": [ - { - "Name": "4h", - "RegionID": 4, - "HostName": "derp4h.tailscale.com", - "IPv4": "185.40.234.77", - "IPv6": "2a00:dd80:20::bcf", - "CanPort80": true - }, - { - "Name": "4g", - "RegionID": 4, - "HostName": "derp4g.tailscale.com", - "IPv4": "185.40.234.113", - "IPv6": "2a00:dd80:20::8f", - "CanPort80": true - }, - { - "Name": "4i", - "RegionID": 4, - "HostName": "derp4i.tailscale.com", - "IPv4": "185.40.234.53", - "IPv6": "2a00:dd80:20::8a6", - "CanPort80": true - }, - { - "Name": "4f", - "RegionID": 4, - "HostName": "derp4f.tailscale.com", - "IPv4": "185.40.234.219", - "IPv6": "2a00:dd80:20::a25", - "CanPort80": true - } - ] - }, - "5": { - "RegionID": 5, - "RegionCode": "syd", - "RegionName": "Sydney", - "Latitude": -33.867778, - "Longitude": 151.21, - "Nodes": [ - { - "Name": "5f", - "RegionID": 5, - "HostName": "derp5f.tailscale.com", - "IPv4": "172.105.166.103", - "IPv6": "2400:8907::2000:ccff:fe1f:80da", - "CanPort80": true - }, - { - "Name": "5g", - "RegionID": 5, - "HostName": "derp5g.tailscale.com", - "IPv4": "172.105.169.57", - "IPv6": "2400:8907::2000:2fff:fea7:57f4", - "CanPort80": true - }, - { - "Name": "5e", - "RegionID": 5, - "HostName": "derp5e.tailscale.com", - "IPv4": "172.105.179.230", - "IPv6": "2400:8907::2000:ceff:fe8d:4f4e", - "CanPort80": true - } - ] - }, - "6": { - "RegionID": 6, - "RegionCode": "blr", - "RegionName": "Bengaluru", - "Latitude": 12.9716, - "Longitude": 77.5946, - "Nodes": [ - { - "Name": "6a", - "RegionID": 6, - "HostName": "derp6.tailscale.com", - "IPv4": "68.183.90.120", - "IPv6": "2400:6180:100:d0::982:d001", - "CanPort80": true - } - ] - }, - "7": { - "RegionID": 7, - "RegionCode": "tok", - "RegionName": "Tokyo", - "Latitude": 35.6764, - "Longitude": 139.65, - "Nodes": [ - { - "Name": "7g", - "RegionID": 7, - "HostName": "derp7g.tailscale.com", - "IPv4": "172.238.6.179", - "IPv6": "2600:3c18::2000:3fff:fe80:3ebd", - "CanPort80": true - }, - { - "Name": "7f", - "RegionID": 7, - "HostName": "derp7f.tailscale.com", - "IPv4": "172.238.6.34", - "IPv6": "2600:3c18::2000:acff:fe8e:3ed5", - "CanPort80": true - }, - { - "Name": "7h", - "RegionID": 7, - "HostName": "derp7h.tailscale.com", - "IPv4": "172.237.28.183", - "IPv6": "2600:3c18::2000:b1ff:fea9:4560", - "CanPort80": true - }, - { - "Name": "7e", - "RegionID": 7, - "HostName": "derp7e.tailscale.com", - "IPv4": "172.238.6.180", - "IPv6": "2600:3c18::2000:60ff:fe0f:6e83", - "STUNOnly": true, - "CanPort80": true - } - ] - }, - "8": { - "RegionID": 8, - "RegionCode": "lhr", - "RegionName": "London", - "Latitude": 51.5072, - "Longitude": 0.1276, - "Nodes": [ - { - "Name": "8f", - "RegionID": 8, - "HostName": "derp8f.tailscale.com", - "IPv4": "176.58.88.183", - "IPv6": "2a00:dd80:3a::dfa", - "CanPort80": true - }, - { - "Name": "8g", - "RegionID": 8, - "HostName": "derp8g.tailscale.com", - "IPv4": "176.58.92.254", - "IPv6": "2a00:dd80:3a::ed", - "CanPort80": true - }, - { - "Name": "8e", - "RegionID": 8, - "HostName": "derp8e.tailscale.com", - "IPv4": "176.58.92.144", - "IPv6": "2a00:dd80:3a::b33", - "CanPort80": true - } - ] - }, - "9": { - "RegionID": 9, - "RegionCode": "dfw", - "RegionName": "Dallas", - "Latitude": 32.779167, - "Longitude": -96.808889, - "Nodes": [ - { - "Name": "9e", - "RegionID": 9, - "HostName": "derp9e.tailscale.com", - "IPv4": "192.73.248.83", - "IPv6": "2607:f740:100::359", - "CanPort80": true - }, - { - "Name": "9f", - "RegionID": 9, - "HostName": "derp9f.tailscale.com", - "IPv4": "209.177.156.197", - "IPv6": "2607:f740:100::cad", - "CanPort80": true - }, - { - "Name": "9d", - "RegionID": 9, - "HostName": "derp9d.tailscale.com", - "IPv4": "209.177.156.94", - "IPv6": "2607:f740:100::c05", - "CanPort80": true - } - ] - } - } - }, - "DisplayMessages": null, - "TKAEnabled": false, - "TKAHead": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", - "Domain": "kratail2tid@passkey", - "DomainAuditLogID": "", - "UserProfiles": { - "3118755726458377": { - "ID": 3118755726458377, - "LoginName": "exit-a.tail78f774.ts.net", - "DisplayName": "exit-a" - } - } + "PacketFilterRules": null } }, "exit-b": { - "commands": { - "packet_filter_rules": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-b/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-b/tailscaled.sock debug localapi POST debug-packet-filter-matches" - }, "packet_filter_rules": null, - "packet_filter_matches": [], - "whois": { - "100.124.195.93": { - "peer_name": "exit-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-b/tailscaled.sock whois --json 100.124.195.93", - "response": null - }, - "100.85.66.106": { - "peer_name": "exit-node", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-b/tailscaled.sock whois --json 100.85.66.106", - "response": null - }, - "100.107.162.14": { - "peer_name": "group-a-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-b/tailscaled.sock whois --json 100.107.162.14", - "response": null - }, - "100.77.135.18": { - "peer_name": "group-b-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-b/tailscaled.sock whois --json 100.77.135.18", - "response": null - }, - "100.105.127.107": { - "peer_name": "multi-exit-router", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-b/tailscaled.sock whois --json 100.105.127.107", - "response": null - }, - "100.109.43.124": { - "peer_name": "router-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-b/tailscaled.sock whois --json 100.109.43.124", - "response": null - }, - "100.65.172.123": { - "peer_name": "router-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-b/tailscaled.sock whois --json 100.65.172.123", - "response": null - }, - "100.92.142.61": { - "peer_name": "subnet-router", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-b/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-b/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-b/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-b/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-b/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-b/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-b/tailscaled.sock whois --json 100.90.199.68", - "response": null - } - }, "netmap": { - "SelfNode": { - "ID": 2230775583277936, - "StableID": "ndK1N8hKRJ11CNTRL", - "Name": "exit-b.tail78f774.ts.net.", - "User": 2230775583277936, - "Key": "nodekey:265e1377372be0d036773ac41339bf7b53ed18e9f67f196d7d517abeff741217", - "DiscoKey": "discokey:63071b08ff89860a2d98005f8f6f65f3b92e05b7b1338b1be71e4ad866f12728", - "Addresses": ["100.116.18.24/32", "fd7a:115c:a1e0::ff37:1218/128"], - "AllowedIPs": ["100.116.18.24/32", "fd7a:115c:a1e0::ff37:1218/128"], - "Endpoints": ["77.164.248.136:35565", "10.65.0.27:35565", "172.17.0.1:35565"], - "Hostinfo": { - "Hostname": "exit-b", - "RoutableIPs": ["0.0.0.0/0", "::/0"], - "RequestTags": ["tag:exit-b"], - "Services": [ - { "Proto": "peerapi4", "Port": 61723 }, - { "Proto": "peerapi6", "Port": 61723 }, - { "Proto": "peerapi-dns-proxy", "Port": 1 } - ] - }, - "Created": "2026-03-28T10:38:00.655990366Z", - "Tags": ["tag:exit-b"], - "MachineAuthorized": true, - "CapMap": { - "https://tailscale.com/cap/file-sharing": null, - "https://tailscale.com/cap/is-owner": null, - "https://tailscale.com/cap/ssh": null, - "https://tailscale.com/cap/tailnet-lock": null, - "probe-udp-lifetime": null, - "ssh-behavior-v1": null, - "ssh-env-vars": null, - "store-appc-routes": null, - "tailnet-display-name": ["kratail2tid@passkey"] - }, - "ComputedName": "exit-b", - "ComputedNameWithHost": "exit-b" - }, - "AllCaps": [ - "https://tailscale.com/cap/file-sharing", - "https://tailscale.com/cap/tailnet-lock", - "probe-udp-lifetime", - "ssh-behavior-v1", - "tailnet-display-name", - "ssh-env-vars", - "store-appc-routes", - "https://tailscale.com/cap/is-owner", - "https://tailscale.com/cap/ssh" - ], - "NodeKey": "nodekey:265e1377372be0d036773ac41339bf7b53ed18e9f67f196d7d517abeff741217", - "MachineKey": "mkey:f4cbc28e2db0f8d8a6a5fc3991b055477e5efc6c025d24b72d3509fa3743401c", "Peers": [], - "DNS": { - "Routes": { - "tail78f774.ts.net.": null, - "ts.net.": [{ "Addr": "199.247.155.53" }, { "Addr": "2620:111:8007::53" }] - }, - "Domains": ["tail78f774.ts.net"], - "Proxied": true, - "ExitNodeFilteredSet": [".ts.net", ".tailscale.net"] - }, - "PacketFilter": [], - "PacketFilterRules": null, - "SSHPolicy": { "rules": [] }, - "CollectServices": false, - "DERPMap": { - "Regions": { - "1": { - "RegionID": 1, - "RegionCode": "nyc", - "RegionName": "New York City", - "Latitude": 40.7128, - "Longitude": -74.006, - "Nodes": [ - { - "Name": "1h", - "RegionID": 1, - "HostName": "derp1h.tailscale.com", - "IPv4": "199.38.181.93", - "IPv6": "2607:f740:f::afd", - "CanPort80": true - }, - { - "Name": "1g", - "RegionID": 1, - "HostName": "derp1g.tailscale.com", - "IPv4": "209.177.145.120", - "IPv6": "2607:f740:f::3eb", - "CanPort80": true - }, - { - "Name": "1i", - "RegionID": 1, - "HostName": "derp1i.tailscale.com", - "IPv4": "199.38.181.103", - "IPv6": "2607:f740:f::e19", - "CanPort80": true - }, - { - "Name": "1f", - "RegionID": 1, - "HostName": "derp1f.tailscale.com", - "IPv4": "199.38.181.104", - "IPv6": "2607:f740:f::bc", - "CanPort80": true - } - ] - }, - "10": { - "RegionID": 10, - "RegionCode": "sea", - "RegionName": "Seattle", - "Latitude": 47.609722, - "Longitude": -122.333056, - "Nodes": [ - { - "Name": "10c", - "RegionID": 10, - "HostName": "derp10c.tailscale.com", - "IPv4": "192.73.240.121", - "IPv6": "2607:f740:14::40c", - "CanPort80": true - }, - { - "Name": "10d", - "RegionID": 10, - "HostName": "derp10d.tailscale.com", - "IPv4": "192.73.240.132", - "IPv6": "2607:f740:14::500", - "CanPort80": true - }, - { - "Name": "10b", - "RegionID": 10, - "HostName": "derp10b.tailscale.com", - "IPv4": "192.73.240.161", - "IPv6": "2607:f740:14::61c", - "CanPort80": true - } - ] - }, - "11": { - "RegionID": 11, - "RegionCode": "sao", - "RegionName": "São Paulo", - "Latitude": -23.55, - "Longitude": -46.633333, - "Nodes": [ - { - "Name": "11f", - "RegionID": 11, - "HostName": "derp11f.tailscale.com", - "IPv4": "172.237.61.197", - "IPv6": "2600:3c0d::2000:3bff:fe44:6166", - "CanPort80": true - }, - { - "Name": "11g", - "RegionID": 11, - "HostName": "derp11g.tailscale.com", - "IPv4": "172.237.61.190", - "IPv6": "2600:3c0d::2000:62ff:febe:2e67", - "CanPort80": true - }, - { - "Name": "11e", - "RegionID": 11, - "HostName": "derp11e.tailscale.com", - "IPv4": "172.237.61.194", - "IPv6": "2600:3c0d::2000:d2ff:fe43:1790", - "CanPort80": true - } - ] - }, - "12": { - "RegionID": 12, - "RegionCode": "ord", - "RegionName": "Chicago", - "Latitude": 41.881944, - "Longitude": -87.627778, - "Nodes": [ - { - "Name": "12e", - "RegionID": 12, - "HostName": "derp12e.tailscale.com", - "IPv4": "209.177.158.15", - "IPv6": "2607:f740:e::b17", - "CanPort80": true - }, - { - "Name": "12f", - "RegionID": 12, - "HostName": "derp12f.tailscale.com", - "IPv4": "199.38.182.118", - "IPv6": "2607:f740:e::4c8", - "CanPort80": true - }, - { - "Name": "12d", - "RegionID": 12, - "HostName": "derp12d.tailscale.com", - "IPv4": "209.177.158.246", - "IPv6": "2607:f740:e::811", - "CanPort80": true - } - ] - }, - "13": { - "RegionID": 13, - "RegionCode": "den", - "RegionName": "Denver", - "Latitude": 39.7392, - "Longitude": -104.9849, - "Nodes": [ - { - "Name": "13c", - "RegionID": 13, - "HostName": "derp13c.tailscale.com", - "IPv4": "192.73.242.28", - "IPv6": "2607:f740:16::5c", - "CanPort80": true - }, - { - "Name": "13d", - "RegionID": 13, - "HostName": "derp13d.tailscale.com", - "IPv4": "192.73.242.204", - "IPv6": "2607:f740:16::c23", - "CanPort80": true - }, - { - "Name": "13b", - "RegionID": 13, - "HostName": "derp13b.tailscale.com", - "IPv4": "192.73.242.187", - "IPv6": "2607:f740:16::640", - "CanPort80": true - } - ] - }, - "14": { - "RegionID": 14, - "RegionCode": "ams", - "RegionName": "Amsterdam", - "Latitude": 52.372778, - "Longitude": 4.893611, - "Nodes": [ - { - "Name": "14c", - "RegionID": 14, - "HostName": "derp14c.tailscale.com", - "IPv4": "176.58.93.147", - "IPv6": "2a00:dd80:3c::b09", - "CanPort80": true - }, - { - "Name": "14d", - "RegionID": 14, - "HostName": "derp14d.tailscale.com", - "IPv4": "176.58.93.154", - "IPv6": "2a00:dd80:3c::3d5", - "CanPort80": true - }, - { - "Name": "14b", - "RegionID": 14, - "HostName": "derp14b.tailscale.com", - "IPv4": "176.58.93.248", - "IPv6": "2a00:dd80:3c::807", - "CanPort80": true - } - ] - }, - "15": { - "RegionID": 15, - "RegionCode": "jnb", - "RegionName": "Johannesburg", - "Latitude": -26.204444, - "Longitude": 28.045556, - "Nodes": [ - { - "Name": "15c", - "RegionID": 15, - "HostName": "derp15c.tailscale.com", - "IPv4": "102.67.165.185", - "IPv6": "2c0f:edb0:0:10::b59", - "CanPort80": true - }, - { - "Name": "15d", - "RegionID": 15, - "HostName": "derp15d.tailscale.com", - "IPv4": "102.67.165.36", - "IPv6": "2c0f:edb0:0:10::599", - "CanPort80": true - }, - { - "Name": "15b", - "RegionID": 15, - "HostName": "derp15b.tailscale.com", - "IPv4": "102.67.165.90", - "IPv6": "2c0f:edb0:0:10::963", - "CanPort80": true - } - ] - }, - "16": { - "RegionID": 16, - "RegionCode": "mia", - "RegionName": "Miami", - "Latitude": 25.78, - "Longitude": -80.21, - "Nodes": [ - { - "Name": "16c", - "RegionID": 16, - "HostName": "derp16c.tailscale.com", - "IPv4": "192.73.243.229", - "IPv6": "2607:f740:17::4e4", - "CanPort80": true - }, - { - "Name": "16d", - "RegionID": 16, - "HostName": "derp16d.tailscale.com", - "IPv4": "192.73.243.141", - "IPv6": "2607:f740:17::475", - "CanPort80": true - }, - { - "Name": "16b", - "RegionID": 16, - "HostName": "derp16b.tailscale.com", - "IPv4": "192.73.243.135", - "IPv6": "2607:f740:17::476", - "CanPort80": true - } - ] - }, - "17": { - "RegionID": 17, - "RegionCode": "lax", - "RegionName": "Los Angeles", - "Latitude": 34.05, - "Longitude": -118.25, - "Nodes": [ - { - "Name": "17c", - "RegionID": 17, - "HostName": "derp17c.tailscale.com", - "IPv4": "208.111.40.12", - "IPv6": "2607:f740:c::10", - "CanPort80": true - }, - { - "Name": "17d", - "RegionID": 17, - "HostName": "derp17d.tailscale.com", - "IPv4": "208.111.40.216", - "IPv6": "2607:f740:c::e1b", - "CanPort80": true - }, - { - "Name": "17b", - "RegionID": 17, - "HostName": "derp17b.tailscale.com", - "IPv4": "192.73.244.245", - "IPv6": "2607:f740:c::646", - "CanPort80": true - } - ] - }, - "18": { - "RegionID": 18, - "RegionCode": "par", - "RegionName": "Paris", - "Latitude": 48.856667, - "Longitude": 2.352222, - "Nodes": [ - { - "Name": "18c", - "RegionID": 18, - "HostName": "derp18c.tailscale.com", - "IPv4": "176.58.90.207", - "IPv6": "2a00:dd80:3e::c19", - "CanPort80": true - }, - { - "Name": "18d", - "RegionID": 18, - "HostName": "derp18d.tailscale.com", - "IPv4": "176.58.90.104", - "IPv6": "2a00:dd80:3e::f2e", - "CanPort80": true - }, - { - "Name": "18b", - "RegionID": 18, - "HostName": "derp18b.tailscale.com", - "IPv4": "176.58.90.147", - "IPv6": "2a00:dd80:3e::363", - "CanPort80": true - } - ] - }, - "19": { - "RegionID": 19, - "RegionCode": "mad", - "RegionName": "Madrid", - "Latitude": 40.416944, - "Longitude": -3.703333, - "Nodes": [ - { - "Name": "19c", - "RegionID": 19, - "HostName": "derp19c.tailscale.com", - "IPv4": "45.159.97.61", - "IPv6": "2a00:dd80:14:10::20", - "CanPort80": true - }, - { - "Name": "19d", - "RegionID": 19, - "HostName": "derp19d.tailscale.com", - "IPv4": "45.159.97.233", - "IPv6": "2a00:dd80:14:10::34a", - "CanPort80": true - }, - { - "Name": "19b", - "RegionID": 19, - "HostName": "derp19b.tailscale.com", - "IPv4": "45.159.97.144", - "IPv6": "2a00:dd80:14:10::335", - "CanPort80": true - } - ] - }, - "2": { - "RegionID": 2, - "RegionCode": "sfo", - "RegionName": "San Francisco", - "Latitude": 37.7775, - "Longitude": -122.416389, - "Nodes": [ - { - "Name": "2e", - "RegionID": 2, - "HostName": "derp2e.tailscale.com", - "IPv4": "192.73.252.134", - "IPv6": "2607:f740:0:3f::44c", - "CanPort80": true - }, - { - "Name": "2f", - "RegionID": 2, - "HostName": "derp2f.tailscale.com", - "IPv4": "208.111.34.178", - "IPv6": "2607:f740:0:3f::f4", - "CanPort80": true - }, - { - "Name": "2d", - "RegionID": 2, - "HostName": "derp2d.tailscale.com", - "IPv4": "192.73.252.65", - "IPv6": "2607:f740:0:3f::287", - "CanPort80": true - } - ] - }, - "20": { - "RegionID": 20, - "RegionCode": "hkg", - "RegionName": "Hong Kong", - "Latitude": 22.3193, - "Longitude": 114.1694, - "Nodes": [ - { - "Name": "20c", - "RegionID": 20, - "HostName": "derp20c.tailscale.com", - "IPv4": "205.147.105.30", - "IPv6": "2403:2500:8000:1::5fb", - "CanPort80": true - }, - { - "Name": "20d", - "RegionID": 20, - "HostName": "derp20d.tailscale.com", - "IPv4": "205.147.105.78", - "IPv6": "2403:2500:8000:1::e9a", - "CanPort80": true - }, - { - "Name": "20b", - "RegionID": 20, - "HostName": "derp20b.tailscale.com", - "IPv4": "103.6.84.152", - "IPv6": "2403:2500:8000:1::ef6", - "CanPort80": true - } - ] - }, - "21": { - "RegionID": 21, - "RegionCode": "tor", - "RegionName": "Toronto", - "Latitude": 43.741667, - "Longitude": -79.373333, - "Nodes": [ - { - "Name": "21c", - "RegionID": 21, - "HostName": "derp21c.tailscale.com", - "IPv4": "162.248.221.215", - "IPv6": "2607:f740:50::f10", - "CanPort80": true - }, - { - "Name": "21d", - "RegionID": 21, - "HostName": "derp21d.tailscale.com", - "IPv4": "162.248.221.248", - "IPv6": "2607:f740:50::ca4", - "CanPort80": true - }, - { - "Name": "21b", - "RegionID": 21, - "HostName": "derp21b.tailscale.com", - "IPv4": "162.248.221.199", - "IPv6": "2607:f740:50::1d1", - "CanPort80": true - } - ] - }, - "22": { - "RegionID": 22, - "RegionCode": "waw", - "RegionName": "Warsaw", - "Latitude": 52.23, - "Longitude": 21.011111, - "Nodes": [ - { - "Name": "22c", - "RegionID": 22, - "HostName": "derp22c.tailscale.com", - "IPv4": "45.159.98.253", - "IPv6": "2a00:dd80:40:100::3f", - "CanPort80": true - }, - { - "Name": "22d", - "RegionID": 22, - "HostName": "derp22d.tailscale.com", - "IPv4": "45.159.98.145", - "IPv6": "2a00:dd80:40:100::211", - "CanPort80": true - }, - { - "Name": "22b", - "RegionID": 22, - "HostName": "derp22b.tailscale.com", - "IPv4": "45.159.98.196", - "IPv6": "2a00:dd80:40:100::316", - "CanPort80": true - } - ] - }, - "23": { - "RegionID": 23, - "RegionCode": "dbi", - "RegionName": "Dubai", - "Latitude": 25.263056, - "Longitude": 55.297222, - "Nodes": [ - { - "Name": "23c", - "RegionID": 23, - "HostName": "derp23c.tailscale.com", - "IPv4": "185.34.3.207", - "IPv6": "2a00:dd80:3f:100::a50", - "CanPort80": true - }, - { - "Name": "23d", - "RegionID": 23, - "HostName": "derp23d.tailscale.com", - "IPv4": "185.34.3.75", - "IPv6": "2a00:dd80:3f:100::97e", - "CanPort80": true - }, - { - "Name": "23b", - "RegionID": 23, - "HostName": "derp23b.tailscale.com", - "IPv4": "185.34.3.232", - "IPv6": "2a00:dd80:3f:100::76f", - "CanPort80": true - } - ] - }, - "24": { - "RegionID": 24, - "RegionCode": "hnl", - "RegionName": "Honolulu", - "Latitude": 21.306944, - "Longitude": -157.858333, - "Nodes": [ - { - "Name": "24c", - "RegionID": 24, - "HostName": "derp24c.tailscale.com", - "IPv4": "208.83.233.233", - "IPv6": "2001:19f0:c000:c591:5400:04ff:fe26:2c5f", - "CanPort80": true - }, - { - "Name": "24d", - "RegionID": 24, - "HostName": "derp24d.tailscale.com", - "IPv4": "208.72.155.133", - "IPv6": "2001:19f0:c000:c564:5400:04ff:fe26:2ba8", - "CanPort80": true - }, - { - "Name": "24b", - "RegionID": 24, - "HostName": "derp24b.tailscale.com", - "IPv4": "208.83.234.151", - "IPv6": "2001:19f0:c000:c586:5400:04ff:fe26:2ba6", - "CanPort80": true - } - ] - }, - "25": { - "RegionID": 25, - "RegionCode": "nai", - "RegionName": "Nairobi", - "Latitude": -1.286389, - "Longitude": 36.817222, - "Nodes": [ - { - "Name": "25c", - "RegionID": 25, - "HostName": "derp25c.tailscale.com", - "IPv4": "102.67.167.37", - "IPv6": "2c0f:edb0:2000:1::2c7", - "CanPort80": true - }, - { - "Name": "25d", - "RegionID": 25, - "HostName": "derp25d.tailscale.com", - "IPv4": "102.67.167.188", - "IPv6": "2c0f:edb0:2000:1::188", - "CanPort80": true - }, - { - "Name": "25b", - "RegionID": 25, - "HostName": "derp25b.tailscale.com", - "IPv4": "102.67.167.245", - "IPv6": "2c0f:edb0:2000:1::2e9", - "CanPort80": true - } - ] - }, - "26": { - "RegionID": 26, - "RegionCode": "nue", - "RegionName": "Nuremberg", - "Latitude": 49.453889, - "Longitude": 11.0775, - "Nodes": [ - { - "Name": "26c", - "RegionID": 26, - "HostName": "derp26c.tailscale.com", - "IPv4": "49.12.193.137", - "IPv6": "2a01:4f8:1c1c:5c70::1", - "CanPort80": true - }, - { - "Name": "26d", - "RegionID": 26, - "HostName": "derp26d.tailscale.com", - "IPv4": "49.13.204.141", - "IPv6": "2a01:4f8:1c0c:7d06::1", - "CanPort80": true - }, - { - "Name": "26b", - "RegionID": 26, - "HostName": "derp26b.tailscale.com", - "IPv4": "167.235.72.200", - "IPv6": "2a01:4f8:1c1c:47b6::1", - "CanPort80": true - } - ] - }, - "27": { - "RegionID": 27, - "RegionCode": "iad", - "RegionName": "Ashburn", - "Latitude": 39.03, - "Longitude": -77.471111, - "Nodes": [ - { - "Name": "27d", - "RegionID": 27, - "HostName": "derp27d.tailscale.com", - "IPv4": "178.156.152.106", - "IPv6": "2a01:4ff:f0:3c8e::1", - "CanPort80": true - }, - { - "Name": "27c", - "RegionID": 27, - "HostName": "derp27c.tailscale.com", - "IPv4": "178.156.152.91", - "IPv6": "2a01:4ff:f0:3913::1", - "CanPort80": true - }, - { - "Name": "27e", - "RegionID": 27, - "HostName": "derp27e.tailscale.com", - "IPv4": "178.156.134.232", - "IPv6": "2a01:4ff:f0:28d4::1", - "CanPort80": true - }, - { - "Name": "27b", - "RegionID": 27, - "HostName": "derp27b.tailscale.com", - "IPv4": "5.161.218.233", - "IPv6": "2a01:4ff:f0:3db9::1", - "CanPort80": true - } - ] - }, - "28": { - "RegionID": 28, - "RegionCode": "hel", - "RegionName": "Helsinki", - "Latitude": 60.170833, - "Longitude": 24.9375, - "Nodes": [ - { - "Name": "28c", - "RegionID": 28, - "HostName": "derp28c.tailscale.com", - "IPv4": "95.217.2.165", - "IPv6": "2a01:4f9:c012:cd74::1", - "CanPort80": true - }, - { - "Name": "28d", - "RegionID": 28, - "HostName": "derp28d.tailscale.com", - "IPv4": "157.180.28.32", - "IPv6": "2a01:4f9:c012:2e5b::1", - "CanPort80": true - }, - { - "Name": "28b", - "RegionID": 28, - "HostName": "derp28b.tailscale.com", - "IPv4": "65.109.143.62", - "IPv6": "2a01:4f9:c012:d55c::1", - "CanPort80": true - } - ] - }, - "3": { - "RegionID": 3, - "RegionCode": "sin", - "RegionName": "Singapore", - "Latitude": 1.3521, - "Longitude": 103.8198, - "Nodes": [ - { - "Name": "3g", - "RegionID": 3, - "HostName": "derp3g.tailscale.com", - "IPv4": "172.237.72.79", - "IPv6": "2600:3c15::2000:adff:fe08:6fab", - "CanPort80": true - }, - { - "Name": "3f", - "RegionID": 3, - "HostName": "derp3f.tailscale.com", - "IPv4": "172.237.72.8", - "IPv6": "2600:3c15::2000:53ff:fe48:a668", - "CanPort80": true - }, - { - "Name": "3h", - "RegionID": 3, - "HostName": "derp3h.tailscale.com", - "IPv4": "172.237.66.30", - "IPv6": "2600:3c15::2000:3dff:fe44:50aa", - "CanPort80": true - }, - { - "Name": "3e", - "RegionID": 3, - "HostName": "derp3e.tailscale.com", - "IPv4": "172.237.72.43", - "IPv6": "2600:3c15::2000:6cff:fee4:d799", - "CanPort80": true - } - ] - }, - "4": { - "RegionID": 4, - "RegionCode": "fra", - "RegionName": "Frankfurt", - "Latitude": 50.1109, - "Longitude": 8.6821, - "Nodes": [ - { - "Name": "4h", - "RegionID": 4, - "HostName": "derp4h.tailscale.com", - "IPv4": "185.40.234.77", - "IPv6": "2a00:dd80:20::bcf", - "CanPort80": true - }, - { - "Name": "4g", - "RegionID": 4, - "HostName": "derp4g.tailscale.com", - "IPv4": "185.40.234.113", - "IPv6": "2a00:dd80:20::8f", - "CanPort80": true - }, - { - "Name": "4i", - "RegionID": 4, - "HostName": "derp4i.tailscale.com", - "IPv4": "185.40.234.53", - "IPv6": "2a00:dd80:20::8a6", - "CanPort80": true - }, - { - "Name": "4f", - "RegionID": 4, - "HostName": "derp4f.tailscale.com", - "IPv4": "185.40.234.219", - "IPv6": "2a00:dd80:20::a25", - "CanPort80": true - } - ] - }, - "5": { - "RegionID": 5, - "RegionCode": "syd", - "RegionName": "Sydney", - "Latitude": -33.867778, - "Longitude": 151.21, - "Nodes": [ - { - "Name": "5f", - "RegionID": 5, - "HostName": "derp5f.tailscale.com", - "IPv4": "172.105.166.103", - "IPv6": "2400:8907::2000:ccff:fe1f:80da", - "CanPort80": true - }, - { - "Name": "5g", - "RegionID": 5, - "HostName": "derp5g.tailscale.com", - "IPv4": "172.105.169.57", - "IPv6": "2400:8907::2000:2fff:fea7:57f4", - "CanPort80": true - }, - { - "Name": "5e", - "RegionID": 5, - "HostName": "derp5e.tailscale.com", - "IPv4": "172.105.179.230", - "IPv6": "2400:8907::2000:ceff:fe8d:4f4e", - "CanPort80": true - } - ] - }, - "6": { - "RegionID": 6, - "RegionCode": "blr", - "RegionName": "Bengaluru", - "Latitude": 12.9716, - "Longitude": 77.5946, - "Nodes": [ - { - "Name": "6a", - "RegionID": 6, - "HostName": "derp6.tailscale.com", - "IPv4": "68.183.90.120", - "IPv6": "2400:6180:100:d0::982:d001", - "CanPort80": true - } - ] - }, - "7": { - "RegionID": 7, - "RegionCode": "tok", - "RegionName": "Tokyo", - "Latitude": 35.6764, - "Longitude": 139.65, - "Nodes": [ - { - "Name": "7g", - "RegionID": 7, - "HostName": "derp7g.tailscale.com", - "IPv4": "172.238.6.179", - "IPv6": "2600:3c18::2000:3fff:fe80:3ebd", - "CanPort80": true - }, - { - "Name": "7f", - "RegionID": 7, - "HostName": "derp7f.tailscale.com", - "IPv4": "172.238.6.34", - "IPv6": "2600:3c18::2000:acff:fe8e:3ed5", - "CanPort80": true - }, - { - "Name": "7h", - "RegionID": 7, - "HostName": "derp7h.tailscale.com", - "IPv4": "172.237.28.183", - "IPv6": "2600:3c18::2000:b1ff:fea9:4560", - "CanPort80": true - }, - { - "Name": "7e", - "RegionID": 7, - "HostName": "derp7e.tailscale.com", - "IPv4": "172.238.6.180", - "IPv6": "2600:3c18::2000:60ff:fe0f:6e83", - "STUNOnly": true, - "CanPort80": true - } - ] - }, - "8": { - "RegionID": 8, - "RegionCode": "lhr", - "RegionName": "London", - "Latitude": 51.5072, - "Longitude": 0.1276, - "Nodes": [ - { - "Name": "8f", - "RegionID": 8, - "HostName": "derp8f.tailscale.com", - "IPv4": "176.58.88.183", - "IPv6": "2a00:dd80:3a::dfa", - "CanPort80": true - }, - { - "Name": "8g", - "RegionID": 8, - "HostName": "derp8g.tailscale.com", - "IPv4": "176.58.92.254", - "IPv6": "2a00:dd80:3a::ed", - "CanPort80": true - }, - { - "Name": "8e", - "RegionID": 8, - "HostName": "derp8e.tailscale.com", - "IPv4": "176.58.92.144", - "IPv6": "2a00:dd80:3a::b33", - "CanPort80": true - } - ] - }, - "9": { - "RegionID": 9, - "RegionCode": "dfw", - "RegionName": "Dallas", - "Latitude": 32.779167, - "Longitude": -96.808889, - "Nodes": [ - { - "Name": "9e", - "RegionID": 9, - "HostName": "derp9e.tailscale.com", - "IPv4": "192.73.248.83", - "IPv6": "2607:f740:100::359", - "CanPort80": true - }, - { - "Name": "9f", - "RegionID": 9, - "HostName": "derp9f.tailscale.com", - "IPv4": "209.177.156.197", - "IPv6": "2607:f740:100::cad", - "CanPort80": true - }, - { - "Name": "9d", - "RegionID": 9, - "HostName": "derp9d.tailscale.com", - "IPv4": "209.177.156.94", - "IPv6": "2607:f740:100::c05", - "CanPort80": true - } - ] - } - } - }, - "DisplayMessages": null, - "TKAEnabled": false, - "TKAHead": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", - "Domain": "kratail2tid@passkey", - "DomainAuditLogID": "", - "UserProfiles": { - "2230775583277936": { - "ID": 2230775583277936, - "LoginName": "exit-b.tail78f774.ts.net", - "DisplayName": "exit-b" - } - } + "PacketFilterRules": null } }, "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.124.195.93": { - "peer_name": "exit-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-node/tailscaled.sock whois --json 100.124.195.93", - "response": null - }, - "100.116.18.24": { - "peer_name": "exit-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-node/tailscaled.sock whois --json 100.116.18.24", - "response": null - }, - "100.107.162.14": { - "peer_name": "group-a-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-node/tailscaled.sock whois --json 100.107.162.14", - "response": null - }, - "100.77.135.18": { - "peer_name": "group-b-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-node/tailscaled.sock whois --json 100.77.135.18", - "response": null - }, - "100.105.127.107": { - "peer_name": "multi-exit-router", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-node/tailscaled.sock whois --json 100.105.127.107", - "response": null - }, - "100.109.43.124": { - "peer_name": "router-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-node/tailscaled.sock whois --json 100.109.43.124", - "response": null - }, - "100.65.172.123": { - "peer_name": "router-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-node/tailscaled.sock whois --json 100.65.172.123", - "response": null - }, - "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 - } - }, "netmap": { - "SelfNode": { - "ID": 4041918547170221, - "StableID": "ngCb76MbZY11CNTRL", - "Name": "exit-node.tail78f774.ts.net.", - "User": 4041918547170221, - "Key": "nodekey:90f4a7b9dc024f1ddec414a49de2aa7611a2dd86efc9d7bae30862ad7c954269", - "DiscoKey": "discokey:6f1a76215431d7100538970473d97b4fde0e0a19b91035d1cba40b59ad79b437", - "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:36712", "10.65.0.27:36712", "172.17.0.1:36712"], - "Hostinfo": { - "Hostname": "exit-node", - "RoutableIPs": ["0.0.0.0/0", "::/0"], - "RequestTags": ["tag:exit"], - "Services": [ - { "Proto": "peerapi4", "Port": 37000 }, - { "Proto": "peerapi6", "Port": 37000 }, - { "Proto": "peerapi-dns-proxy", "Port": 1 } - ] - }, - "Created": "2026-02-23T00:13:20.566112173Z", - "Tags": ["tag:exit"], - "MachineAuthorized": true, - "CapMap": { - "https://tailscale.com/cap/file-sharing": null, - "https://tailscale.com/cap/is-owner": null, - "https://tailscale.com/cap/ssh": null, - "https://tailscale.com/cap/tailnet-lock": null, - "probe-udp-lifetime": null, - "ssh-behavior-v1": null, - "ssh-env-vars": null, - "store-appc-routes": null, - "tailnet-display-name": ["kratail2tid@passkey"] - }, - "ComputedName": "exit-node", - "ComputedNameWithHost": "exit-node" - }, - "AllCaps": [ - "tailnet-display-name", - "https://tailscale.com/cap/file-sharing", - "https://tailscale.com/cap/tailnet-lock", - "store-appc-routes", - "ssh-env-vars", - "https://tailscale.com/cap/is-owner", - "probe-udp-lifetime", - "ssh-behavior-v1", - "https://tailscale.com/cap/ssh" - ], - "NodeKey": "nodekey:90f4a7b9dc024f1ddec414a49de2aa7611a2dd86efc9d7bae30862ad7c954269", - "MachineKey": "mkey:e3be47b2090e55400f3e64825cd3092841529cd7b5b775e9e4553f12308abc2a", "Peers": [], - "DNS": { - "Routes": { - "tail78f774.ts.net.": null, - "ts.net.": [{ "Addr": "199.247.155.53" }, { "Addr": "2620:111:8007::53" }] - }, - "Domains": ["tail78f774.ts.net"], - "Proxied": true, - "ExitNodeFilteredSet": [".ts.net", ".tailscale.net"] - }, - "PacketFilter": [], - "PacketFilterRules": null, - "SSHPolicy": { "rules": [] }, - "CollectServices": false, - "DERPMap": { - "Regions": { - "1": { - "RegionID": 1, - "RegionCode": "nyc", - "RegionName": "New York City", - "Latitude": 40.7128, - "Longitude": -74.006, - "Nodes": [ - { - "Name": "1h", - "RegionID": 1, - "HostName": "derp1h.tailscale.com", - "IPv4": "199.38.181.93", - "IPv6": "2607:f740:f::afd", - "CanPort80": true - }, - { - "Name": "1g", - "RegionID": 1, - "HostName": "derp1g.tailscale.com", - "IPv4": "209.177.145.120", - "IPv6": "2607:f740:f::3eb", - "CanPort80": true - }, - { - "Name": "1i", - "RegionID": 1, - "HostName": "derp1i.tailscale.com", - "IPv4": "199.38.181.103", - "IPv6": "2607:f740:f::e19", - "CanPort80": true - }, - { - "Name": "1f", - "RegionID": 1, - "HostName": "derp1f.tailscale.com", - "IPv4": "199.38.181.104", - "IPv6": "2607:f740:f::bc", - "CanPort80": true - } - ] - }, - "10": { - "RegionID": 10, - "RegionCode": "sea", - "RegionName": "Seattle", - "Latitude": 47.609722, - "Longitude": -122.333056, - "Nodes": [ - { - "Name": "10c", - "RegionID": 10, - "HostName": "derp10c.tailscale.com", - "IPv4": "192.73.240.121", - "IPv6": "2607:f740:14::40c", - "CanPort80": true - }, - { - "Name": "10d", - "RegionID": 10, - "HostName": "derp10d.tailscale.com", - "IPv4": "192.73.240.132", - "IPv6": "2607:f740:14::500", - "CanPort80": true - }, - { - "Name": "10b", - "RegionID": 10, - "HostName": "derp10b.tailscale.com", - "IPv4": "192.73.240.161", - "IPv6": "2607:f740:14::61c", - "CanPort80": true - } - ] - }, - "11": { - "RegionID": 11, - "RegionCode": "sao", - "RegionName": "São Paulo", - "Latitude": -23.55, - "Longitude": -46.633333, - "Nodes": [ - { - "Name": "11f", - "RegionID": 11, - "HostName": "derp11f.tailscale.com", - "IPv4": "172.237.61.197", - "IPv6": "2600:3c0d::2000:3bff:fe44:6166", - "CanPort80": true - }, - { - "Name": "11g", - "RegionID": 11, - "HostName": "derp11g.tailscale.com", - "IPv4": "172.237.61.190", - "IPv6": "2600:3c0d::2000:62ff:febe:2e67", - "CanPort80": true - }, - { - "Name": "11e", - "RegionID": 11, - "HostName": "derp11e.tailscale.com", - "IPv4": "172.237.61.194", - "IPv6": "2600:3c0d::2000:d2ff:fe43:1790", - "CanPort80": true - } - ] - }, - "12": { - "RegionID": 12, - "RegionCode": "ord", - "RegionName": "Chicago", - "Latitude": 41.881944, - "Longitude": -87.627778, - "Nodes": [ - { - "Name": "12e", - "RegionID": 12, - "HostName": "derp12e.tailscale.com", - "IPv4": "209.177.158.15", - "IPv6": "2607:f740:e::b17", - "CanPort80": true - }, - { - "Name": "12f", - "RegionID": 12, - "HostName": "derp12f.tailscale.com", - "IPv4": "199.38.182.118", - "IPv6": "2607:f740:e::4c8", - "CanPort80": true - }, - { - "Name": "12d", - "RegionID": 12, - "HostName": "derp12d.tailscale.com", - "IPv4": "209.177.158.246", - "IPv6": "2607:f740:e::811", - "CanPort80": true - } - ] - }, - "13": { - "RegionID": 13, - "RegionCode": "den", - "RegionName": "Denver", - "Latitude": 39.7392, - "Longitude": -104.9849, - "Nodes": [ - { - "Name": "13c", - "RegionID": 13, - "HostName": "derp13c.tailscale.com", - "IPv4": "192.73.242.28", - "IPv6": "2607:f740:16::5c", - "CanPort80": true - }, - { - "Name": "13d", - "RegionID": 13, - "HostName": "derp13d.tailscale.com", - "IPv4": "192.73.242.204", - "IPv6": "2607:f740:16::c23", - "CanPort80": true - }, - { - "Name": "13b", - "RegionID": 13, - "HostName": "derp13b.tailscale.com", - "IPv4": "192.73.242.187", - "IPv6": "2607:f740:16::640", - "CanPort80": true - } - ] - }, - "14": { - "RegionID": 14, - "RegionCode": "ams", - "RegionName": "Amsterdam", - "Latitude": 52.372778, - "Longitude": 4.893611, - "Nodes": [ - { - "Name": "14c", - "RegionID": 14, - "HostName": "derp14c.tailscale.com", - "IPv4": "176.58.93.147", - "IPv6": "2a00:dd80:3c::b09", - "CanPort80": true - }, - { - "Name": "14d", - "RegionID": 14, - "HostName": "derp14d.tailscale.com", - "IPv4": "176.58.93.154", - "IPv6": "2a00:dd80:3c::3d5", - "CanPort80": true - }, - { - "Name": "14b", - "RegionID": 14, - "HostName": "derp14b.tailscale.com", - "IPv4": "176.58.93.248", - "IPv6": "2a00:dd80:3c::807", - "CanPort80": true - } - ] - }, - "15": { - "RegionID": 15, - "RegionCode": "jnb", - "RegionName": "Johannesburg", - "Latitude": -26.204444, - "Longitude": 28.045556, - "Nodes": [ - { - "Name": "15c", - "RegionID": 15, - "HostName": "derp15c.tailscale.com", - "IPv4": "102.67.165.185", - "IPv6": "2c0f:edb0:0:10::b59", - "CanPort80": true - }, - { - "Name": "15d", - "RegionID": 15, - "HostName": "derp15d.tailscale.com", - "IPv4": "102.67.165.36", - "IPv6": "2c0f:edb0:0:10::599", - "CanPort80": true - }, - { - "Name": "15b", - "RegionID": 15, - "HostName": "derp15b.tailscale.com", - "IPv4": "102.67.165.90", - "IPv6": "2c0f:edb0:0:10::963", - "CanPort80": true - } - ] - }, - "16": { - "RegionID": 16, - "RegionCode": "mia", - "RegionName": "Miami", - "Latitude": 25.78, - "Longitude": -80.21, - "Nodes": [ - { - "Name": "16c", - "RegionID": 16, - "HostName": "derp16c.tailscale.com", - "IPv4": "192.73.243.229", - "IPv6": "2607:f740:17::4e4", - "CanPort80": true - }, - { - "Name": "16d", - "RegionID": 16, - "HostName": "derp16d.tailscale.com", - "IPv4": "192.73.243.141", - "IPv6": "2607:f740:17::475", - "CanPort80": true - }, - { - "Name": "16b", - "RegionID": 16, - "HostName": "derp16b.tailscale.com", - "IPv4": "192.73.243.135", - "IPv6": "2607:f740:17::476", - "CanPort80": true - } - ] - }, - "17": { - "RegionID": 17, - "RegionCode": "lax", - "RegionName": "Los Angeles", - "Latitude": 34.05, - "Longitude": -118.25, - "Nodes": [ - { - "Name": "17c", - "RegionID": 17, - "HostName": "derp17c.tailscale.com", - "IPv4": "208.111.40.12", - "IPv6": "2607:f740:c::10", - "CanPort80": true - }, - { - "Name": "17d", - "RegionID": 17, - "HostName": "derp17d.tailscale.com", - "IPv4": "208.111.40.216", - "IPv6": "2607:f740:c::e1b", - "CanPort80": true - }, - { - "Name": "17b", - "RegionID": 17, - "HostName": "derp17b.tailscale.com", - "IPv4": "192.73.244.245", - "IPv6": "2607:f740:c::646", - "CanPort80": true - } - ] - }, - "18": { - "RegionID": 18, - "RegionCode": "par", - "RegionName": "Paris", - "Latitude": 48.856667, - "Longitude": 2.352222, - "Nodes": [ - { - "Name": "18c", - "RegionID": 18, - "HostName": "derp18c.tailscale.com", - "IPv4": "176.58.90.207", - "IPv6": "2a00:dd80:3e::c19", - "CanPort80": true - }, - { - "Name": "18d", - "RegionID": 18, - "HostName": "derp18d.tailscale.com", - "IPv4": "176.58.90.104", - "IPv6": "2a00:dd80:3e::f2e", - "CanPort80": true - }, - { - "Name": "18b", - "RegionID": 18, - "HostName": "derp18b.tailscale.com", - "IPv4": "176.58.90.147", - "IPv6": "2a00:dd80:3e::363", - "CanPort80": true - } - ] - }, - "19": { - "RegionID": 19, - "RegionCode": "mad", - "RegionName": "Madrid", - "Latitude": 40.416944, - "Longitude": -3.703333, - "Nodes": [ - { - "Name": "19c", - "RegionID": 19, - "HostName": "derp19c.tailscale.com", - "IPv4": "45.159.97.61", - "IPv6": "2a00:dd80:14:10::20", - "CanPort80": true - }, - { - "Name": "19d", - "RegionID": 19, - "HostName": "derp19d.tailscale.com", - "IPv4": "45.159.97.233", - "IPv6": "2a00:dd80:14:10::34a", - "CanPort80": true - }, - { - "Name": "19b", - "RegionID": 19, - "HostName": "derp19b.tailscale.com", - "IPv4": "45.159.97.144", - "IPv6": "2a00:dd80:14:10::335", - "CanPort80": true - } - ] - }, - "2": { - "RegionID": 2, - "RegionCode": "sfo", - "RegionName": "San Francisco", - "Latitude": 37.7775, - "Longitude": -122.416389, - "Nodes": [ - { - "Name": "2e", - "RegionID": 2, - "HostName": "derp2e.tailscale.com", - "IPv4": "192.73.252.134", - "IPv6": "2607:f740:0:3f::44c", - "CanPort80": true - }, - { - "Name": "2f", - "RegionID": 2, - "HostName": "derp2f.tailscale.com", - "IPv4": "208.111.34.178", - "IPv6": "2607:f740:0:3f::f4", - "CanPort80": true - }, - { - "Name": "2d", - "RegionID": 2, - "HostName": "derp2d.tailscale.com", - "IPv4": "192.73.252.65", - "IPv6": "2607:f740:0:3f::287", - "CanPort80": true - } - ] - }, - "20": { - "RegionID": 20, - "RegionCode": "hkg", - "RegionName": "Hong Kong", - "Latitude": 22.3193, - "Longitude": 114.1694, - "Nodes": [ - { - "Name": "20c", - "RegionID": 20, - "HostName": "derp20c.tailscale.com", - "IPv4": "205.147.105.30", - "IPv6": "2403:2500:8000:1::5fb", - "CanPort80": true - }, - { - "Name": "20d", - "RegionID": 20, - "HostName": "derp20d.tailscale.com", - "IPv4": "205.147.105.78", - "IPv6": "2403:2500:8000:1::e9a", - "CanPort80": true - }, - { - "Name": "20b", - "RegionID": 20, - "HostName": "derp20b.tailscale.com", - "IPv4": "103.6.84.152", - "IPv6": "2403:2500:8000:1::ef6", - "CanPort80": true - } - ] - }, - "21": { - "RegionID": 21, - "RegionCode": "tor", - "RegionName": "Toronto", - "Latitude": 43.741667, - "Longitude": -79.373333, - "Nodes": [ - { - "Name": "21c", - "RegionID": 21, - "HostName": "derp21c.tailscale.com", - "IPv4": "162.248.221.215", - "IPv6": "2607:f740:50::f10", - "CanPort80": true - }, - { - "Name": "21d", - "RegionID": 21, - "HostName": "derp21d.tailscale.com", - "IPv4": "162.248.221.248", - "IPv6": "2607:f740:50::ca4", - "CanPort80": true - }, - { - "Name": "21b", - "RegionID": 21, - "HostName": "derp21b.tailscale.com", - "IPv4": "162.248.221.199", - "IPv6": "2607:f740:50::1d1", - "CanPort80": true - } - ] - }, - "22": { - "RegionID": 22, - "RegionCode": "waw", - "RegionName": "Warsaw", - "Latitude": 52.23, - "Longitude": 21.011111, - "Nodes": [ - { - "Name": "22c", - "RegionID": 22, - "HostName": "derp22c.tailscale.com", - "IPv4": "45.159.98.253", - "IPv6": "2a00:dd80:40:100::3f", - "CanPort80": true - }, - { - "Name": "22d", - "RegionID": 22, - "HostName": "derp22d.tailscale.com", - "IPv4": "45.159.98.145", - "IPv6": "2a00:dd80:40:100::211", - "CanPort80": true - }, - { - "Name": "22b", - "RegionID": 22, - "HostName": "derp22b.tailscale.com", - "IPv4": "45.159.98.196", - "IPv6": "2a00:dd80:40:100::316", - "CanPort80": true - } - ] - }, - "23": { - "RegionID": 23, - "RegionCode": "dbi", - "RegionName": "Dubai", - "Latitude": 25.263056, - "Longitude": 55.297222, - "Nodes": [ - { - "Name": "23c", - "RegionID": 23, - "HostName": "derp23c.tailscale.com", - "IPv4": "185.34.3.207", - "IPv6": "2a00:dd80:3f:100::a50", - "CanPort80": true - }, - { - "Name": "23d", - "RegionID": 23, - "HostName": "derp23d.tailscale.com", - "IPv4": "185.34.3.75", - "IPv6": "2a00:dd80:3f:100::97e", - "CanPort80": true - }, - { - "Name": "23b", - "RegionID": 23, - "HostName": "derp23b.tailscale.com", - "IPv4": "185.34.3.232", - "IPv6": "2a00:dd80:3f:100::76f", - "CanPort80": true - } - ] - }, - "24": { - "RegionID": 24, - "RegionCode": "hnl", - "RegionName": "Honolulu", - "Latitude": 21.306944, - "Longitude": -157.858333, - "Nodes": [ - { - "Name": "24c", - "RegionID": 24, - "HostName": "derp24c.tailscale.com", - "IPv4": "208.83.233.233", - "IPv6": "2001:19f0:c000:c591:5400:04ff:fe26:2c5f", - "CanPort80": true - }, - { - "Name": "24d", - "RegionID": 24, - "HostName": "derp24d.tailscale.com", - "IPv4": "208.72.155.133", - "IPv6": "2001:19f0:c000:c564:5400:04ff:fe26:2ba8", - "CanPort80": true - }, - { - "Name": "24b", - "RegionID": 24, - "HostName": "derp24b.tailscale.com", - "IPv4": "208.83.234.151", - "IPv6": "2001:19f0:c000:c586:5400:04ff:fe26:2ba6", - "CanPort80": true - } - ] - }, - "25": { - "RegionID": 25, - "RegionCode": "nai", - "RegionName": "Nairobi", - "Latitude": -1.286389, - "Longitude": 36.817222, - "Nodes": [ - { - "Name": "25c", - "RegionID": 25, - "HostName": "derp25c.tailscale.com", - "IPv4": "102.67.167.37", - "IPv6": "2c0f:edb0:2000:1::2c7", - "CanPort80": true - }, - { - "Name": "25d", - "RegionID": 25, - "HostName": "derp25d.tailscale.com", - "IPv4": "102.67.167.188", - "IPv6": "2c0f:edb0:2000:1::188", - "CanPort80": true - }, - { - "Name": "25b", - "RegionID": 25, - "HostName": "derp25b.tailscale.com", - "IPv4": "102.67.167.245", - "IPv6": "2c0f:edb0:2000:1::2e9", - "CanPort80": true - } - ] - }, - "26": { - "RegionID": 26, - "RegionCode": "nue", - "RegionName": "Nuremberg", - "Latitude": 49.453889, - "Longitude": 11.0775, - "Nodes": [ - { - "Name": "26c", - "RegionID": 26, - "HostName": "derp26c.tailscale.com", - "IPv4": "49.12.193.137", - "IPv6": "2a01:4f8:1c1c:5c70::1", - "CanPort80": true - }, - { - "Name": "26d", - "RegionID": 26, - "HostName": "derp26d.tailscale.com", - "IPv4": "49.13.204.141", - "IPv6": "2a01:4f8:1c0c:7d06::1", - "CanPort80": true - }, - { - "Name": "26b", - "RegionID": 26, - "HostName": "derp26b.tailscale.com", - "IPv4": "167.235.72.200", - "IPv6": "2a01:4f8:1c1c:47b6::1", - "CanPort80": true - } - ] - }, - "27": { - "RegionID": 27, - "RegionCode": "iad", - "RegionName": "Ashburn", - "Latitude": 39.03, - "Longitude": -77.471111, - "Nodes": [ - { - "Name": "27d", - "RegionID": 27, - "HostName": "derp27d.tailscale.com", - "IPv4": "178.156.152.106", - "IPv6": "2a01:4ff:f0:3c8e::1", - "CanPort80": true - }, - { - "Name": "27c", - "RegionID": 27, - "HostName": "derp27c.tailscale.com", - "IPv4": "178.156.152.91", - "IPv6": "2a01:4ff:f0:3913::1", - "CanPort80": true - }, - { - "Name": "27e", - "RegionID": 27, - "HostName": "derp27e.tailscale.com", - "IPv4": "178.156.134.232", - "IPv6": "2a01:4ff:f0:28d4::1", - "CanPort80": true - }, - { - "Name": "27b", - "RegionID": 27, - "HostName": "derp27b.tailscale.com", - "IPv4": "5.161.218.233", - "IPv6": "2a01:4ff:f0:3db9::1", - "CanPort80": true - } - ] - }, - "28": { - "RegionID": 28, - "RegionCode": "hel", - "RegionName": "Helsinki", - "Latitude": 60.170833, - "Longitude": 24.9375, - "Nodes": [ - { - "Name": "28c", - "RegionID": 28, - "HostName": "derp28c.tailscale.com", - "IPv4": "95.217.2.165", - "IPv6": "2a01:4f9:c012:cd74::1", - "CanPort80": true - }, - { - "Name": "28d", - "RegionID": 28, - "HostName": "derp28d.tailscale.com", - "IPv4": "157.180.28.32", - "IPv6": "2a01:4f9:c012:2e5b::1", - "CanPort80": true - }, - { - "Name": "28b", - "RegionID": 28, - "HostName": "derp28b.tailscale.com", - "IPv4": "65.109.143.62", - "IPv6": "2a01:4f9:c012:d55c::1", - "CanPort80": true - } - ] - }, - "3": { - "RegionID": 3, - "RegionCode": "sin", - "RegionName": "Singapore", - "Latitude": 1.3521, - "Longitude": 103.8198, - "Nodes": [ - { - "Name": "3g", - "RegionID": 3, - "HostName": "derp3g.tailscale.com", - "IPv4": "172.237.72.79", - "IPv6": "2600:3c15::2000:adff:fe08:6fab", - "CanPort80": true - }, - { - "Name": "3f", - "RegionID": 3, - "HostName": "derp3f.tailscale.com", - "IPv4": "172.237.72.8", - "IPv6": "2600:3c15::2000:53ff:fe48:a668", - "CanPort80": true - }, - { - "Name": "3h", - "RegionID": 3, - "HostName": "derp3h.tailscale.com", - "IPv4": "172.237.66.30", - "IPv6": "2600:3c15::2000:3dff:fe44:50aa", - "CanPort80": true - }, - { - "Name": "3e", - "RegionID": 3, - "HostName": "derp3e.tailscale.com", - "IPv4": "172.237.72.43", - "IPv6": "2600:3c15::2000:6cff:fee4:d799", - "CanPort80": true - } - ] - }, - "4": { - "RegionID": 4, - "RegionCode": "fra", - "RegionName": "Frankfurt", - "Latitude": 50.1109, - "Longitude": 8.6821, - "Nodes": [ - { - "Name": "4h", - "RegionID": 4, - "HostName": "derp4h.tailscale.com", - "IPv4": "185.40.234.77", - "IPv6": "2a00:dd80:20::bcf", - "CanPort80": true - }, - { - "Name": "4g", - "RegionID": 4, - "HostName": "derp4g.tailscale.com", - "IPv4": "185.40.234.113", - "IPv6": "2a00:dd80:20::8f", - "CanPort80": true - }, - { - "Name": "4i", - "RegionID": 4, - "HostName": "derp4i.tailscale.com", - "IPv4": "185.40.234.53", - "IPv6": "2a00:dd80:20::8a6", - "CanPort80": true - }, - { - "Name": "4f", - "RegionID": 4, - "HostName": "derp4f.tailscale.com", - "IPv4": "185.40.234.219", - "IPv6": "2a00:dd80:20::a25", - "CanPort80": true - } - ] - }, - "5": { - "RegionID": 5, - "RegionCode": "syd", - "RegionName": "Sydney", - "Latitude": -33.867778, - "Longitude": 151.21, - "Nodes": [ - { - "Name": "5f", - "RegionID": 5, - "HostName": "derp5f.tailscale.com", - "IPv4": "172.105.166.103", - "IPv6": "2400:8907::2000:ccff:fe1f:80da", - "CanPort80": true - }, - { - "Name": "5g", - "RegionID": 5, - "HostName": "derp5g.tailscale.com", - "IPv4": "172.105.169.57", - "IPv6": "2400:8907::2000:2fff:fea7:57f4", - "CanPort80": true - }, - { - "Name": "5e", - "RegionID": 5, - "HostName": "derp5e.tailscale.com", - "IPv4": "172.105.179.230", - "IPv6": "2400:8907::2000:ceff:fe8d:4f4e", - "CanPort80": true - } - ] - }, - "6": { - "RegionID": 6, - "RegionCode": "blr", - "RegionName": "Bengaluru", - "Latitude": 12.9716, - "Longitude": 77.5946, - "Nodes": [ - { - "Name": "6a", - "RegionID": 6, - "HostName": "derp6.tailscale.com", - "IPv4": "68.183.90.120", - "IPv6": "2400:6180:100:d0::982:d001", - "CanPort80": true - } - ] - }, - "7": { - "RegionID": 7, - "RegionCode": "tok", - "RegionName": "Tokyo", - "Latitude": 35.6764, - "Longitude": 139.65, - "Nodes": [ - { - "Name": "7g", - "RegionID": 7, - "HostName": "derp7g.tailscale.com", - "IPv4": "172.238.6.179", - "IPv6": "2600:3c18::2000:3fff:fe80:3ebd", - "CanPort80": true - }, - { - "Name": "7f", - "RegionID": 7, - "HostName": "derp7f.tailscale.com", - "IPv4": "172.238.6.34", - "IPv6": "2600:3c18::2000:acff:fe8e:3ed5", - "CanPort80": true - }, - { - "Name": "7h", - "RegionID": 7, - "HostName": "derp7h.tailscale.com", - "IPv4": "172.237.28.183", - "IPv6": "2600:3c18::2000:b1ff:fea9:4560", - "CanPort80": true - }, - { - "Name": "7e", - "RegionID": 7, - "HostName": "derp7e.tailscale.com", - "IPv4": "172.238.6.180", - "IPv6": "2600:3c18::2000:60ff:fe0f:6e83", - "STUNOnly": true, - "CanPort80": true - } - ] - }, - "8": { - "RegionID": 8, - "RegionCode": "lhr", - "RegionName": "London", - "Latitude": 51.5072, - "Longitude": 0.1276, - "Nodes": [ - { - "Name": "8f", - "RegionID": 8, - "HostName": "derp8f.tailscale.com", - "IPv4": "176.58.88.183", - "IPv6": "2a00:dd80:3a::dfa", - "CanPort80": true - }, - { - "Name": "8g", - "RegionID": 8, - "HostName": "derp8g.tailscale.com", - "IPv4": "176.58.92.254", - "IPv6": "2a00:dd80:3a::ed", - "CanPort80": true - }, - { - "Name": "8e", - "RegionID": 8, - "HostName": "derp8e.tailscale.com", - "IPv4": "176.58.92.144", - "IPv6": "2a00:dd80:3a::b33", - "CanPort80": true - } - ] - }, - "9": { - "RegionID": 9, - "RegionCode": "dfw", - "RegionName": "Dallas", - "Latitude": 32.779167, - "Longitude": -96.808889, - "Nodes": [ - { - "Name": "9e", - "RegionID": 9, - "HostName": "derp9e.tailscale.com", - "IPv4": "192.73.248.83", - "IPv6": "2607:f740:100::359", - "CanPort80": true - }, - { - "Name": "9f", - "RegionID": 9, - "HostName": "derp9f.tailscale.com", - "IPv4": "209.177.156.197", - "IPv6": "2607:f740:100::cad", - "CanPort80": true - }, - { - "Name": "9d", - "RegionID": 9, - "HostName": "derp9d.tailscale.com", - "IPv4": "209.177.156.94", - "IPv6": "2607:f740:100::c05", - "CanPort80": true - } - ] - } - } - }, - "DisplayMessages": null, - "TKAEnabled": false, - "TKAHead": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", - "Domain": "kratail2tid@passkey", - "DomainAuditLogID": "", - "UserProfiles": { - "4041918547170221": { - "ID": 4041918547170221, - "LoginName": "exit-node.tail78f774.ts.net", - "DisplayName": "exit-node" - } - } + "PacketFilterRules": null } }, "group-a-client": { - "commands": { - "packet_filter_rules": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/group-a-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/group-a-client/tailscaled.sock debug localapi POST debug-packet-filter-matches" - }, "packet_filter_rules": null, - "packet_filter_matches": [], - "whois": { - "100.124.195.93": { - "peer_name": "exit-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/group-a-client/tailscaled.sock whois --json 100.124.195.93", - "response": null - }, - "100.116.18.24": { - "peer_name": "exit-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/group-a-client/tailscaled.sock whois --json 100.116.18.24", - "response": null - }, - "100.85.66.106": { - "peer_name": "exit-node", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/group-a-client/tailscaled.sock whois --json 100.85.66.106", - "response": null - }, - "100.77.135.18": { - "peer_name": "group-b-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/group-a-client/tailscaled.sock whois --json 100.77.135.18", - "response": null - }, - "100.105.127.107": { - "peer_name": "multi-exit-router", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/group-a-client/tailscaled.sock whois --json 100.105.127.107", - "response": null - }, - "100.109.43.124": { - "peer_name": "router-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/group-a-client/tailscaled.sock whois --json 100.109.43.124", - "response": { - "Node": { - "ID": 50590507314324, - "StableID": "n3kktkvuP111CNTRL", - "Name": "router-a.tail78f774.ts.net.", - "User": 1260082990019555, - "Key": "nodekey:b4566fef38b3b2b15684fc8890f5fbaea4525b467825f57a02801969a5ed2b7b", - "DiscoKey": "discokey:368ba711a8394633b4626eb7cd8e6a2df90d8e554505dc032ea9658ceee0f731", - "Addresses": ["100.109.43.124/32", "fd7a:115c:a1e0::a537:2b7c/128"], - "AllowedIPs": ["100.109.43.124/32", "fd7a:115c:a1e0::a537:2b7c/128", "10.44.0.0/16"], - "Endpoints": ["77.164.248.136:34130", "10.65.0.27:34130", "172.17.0.1:34130"], - "HomeDERP": 14, - "Hostinfo": { - "OS": "linux", - "Hostname": "router-a", - "Services": [ - { "Proto": "peerapi4", "Port": 49439 }, - { "Proto": "peerapi6", "Port": 49439 } - ] - }, - "Created": "2026-03-28T10:38:11.734910312Z", - "Cap": 131, - "Tags": ["tag:router-a"], - "PrimaryRoutes": ["10.44.0.0/16"], - "Online": true, - "ComputedName": "router-a", - "ComputedNameWithHost": "router-a" - }, - "UserProfile": { "ID": 1260082990019555, "LoginName": "tagged-devices", "DisplayName": "Tagged Devices" }, - "CapMap": null - } - }, - "100.65.172.123": { - "peer_name": "router-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/group-a-client/tailscaled.sock whois --json 100.65.172.123", - "response": null - }, - "100.92.142.61": { - "peer_name": "subnet-router", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/group-a-client/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/group-a-client/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/group-a-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/group-a-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/group-a-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/group-a-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/group-a-client/tailscaled.sock whois --json 100.90.199.68", - "response": null - } - }, "netmap": { - "SelfNode": { - "ID": 6999435610919250, - "StableID": "nyckVfJ4fw11CNTRL", - "Name": "group-a-client.tail78f774.ts.net.", - "User": 6999435610919250, - "Key": "nodekey:802726716bd4942fceb5e444218c930040fadb082698b57ea3eb59a6a26ba20d", - "DiscoKey": "discokey:bc93c2d3b81606e44eb1c96d721e7cd73c9497aa7d3efbe2f5e0d1e2e95b190f", - "Addresses": ["100.107.162.14/32", "fd7a:115c:a1e0::a237:a20e/128"], - "AllowedIPs": ["100.107.162.14/32", "fd7a:115c:a1e0::a237:a20e/128"], - "Endpoints": ["77.164.248.136:51980", "10.65.0.27:51980", "172.17.0.1:51980"], - "Hostinfo": { - "Hostname": "group-a-client", - "RequestTags": ["tag:group-a"], - "Services": [ - { "Proto": "peerapi4", "Port": 36543 }, - { "Proto": "peerapi6", "Port": 36543 }, - { "Proto": "peerapi-dns-proxy", "Port": 1 } - ] - }, - "Created": "2026-03-28T10:38:04.339428828Z", - "Tags": ["tag:group-a"], - "MachineAuthorized": true, - "CapMap": { - "https://tailscale.com/cap/file-sharing": null, - "https://tailscale.com/cap/is-owner": null, - "https://tailscale.com/cap/ssh": null, - "https://tailscale.com/cap/tailnet-lock": null, - "probe-udp-lifetime": null, - "ssh-behavior-v1": null, - "ssh-env-vars": null, - "store-appc-routes": null, - "tailnet-display-name": ["kratail2tid@passkey"] - }, - "ComputedName": "group-a-client", - "ComputedNameWithHost": "group-a-client" - }, - "AllCaps": [ - "https://tailscale.com/cap/file-sharing", - "ssh-behavior-v1", - "ssh-env-vars", - "tailnet-display-name", - "probe-udp-lifetime", - "store-appc-routes", - "https://tailscale.com/cap/is-owner", - "https://tailscale.com/cap/ssh", - "https://tailscale.com/cap/tailnet-lock" - ], - "NodeKey": "nodekey:802726716bd4942fceb5e444218c930040fadb082698b57ea3eb59a6a26ba20d", - "MachineKey": "mkey:fd2d0c2953440569b6c045d6bb1826bf138bf65b4ed4433532e4d91e09fd6b6b", "Peers": [ { - "ID": 50590507314324, - "StableID": "n3kktkvuP111CNTRL", "Name": "router-a.tail78f774.ts.net.", - "User": 1260082990019555, - "Key": "nodekey:b4566fef38b3b2b15684fc8890f5fbaea4525b467825f57a02801969a5ed2b7b", - "DiscoKey": "discokey:368ba711a8394633b4626eb7cd8e6a2df90d8e554505dc032ea9658ceee0f731", - "Addresses": ["100.109.43.124/32", "fd7a:115c:a1e0::a537:2b7c/128"], - "AllowedIPs": ["100.109.43.124/32", "fd7a:115c:a1e0::a537:2b7c/128", "10.44.0.0/16"], - "Endpoints": ["77.164.248.136:34130", "10.65.0.27:34130", "172.17.0.1:34130"], - "HomeDERP": 14, - "Hostinfo": { - "OS": "linux", - "Hostname": "router-a", - "Services": [ - { "Proto": "peerapi4", "Port": 49439 }, - { "Proto": "peerapi6", "Port": 49439 } - ] - }, - "Created": "2026-03-28T10:38:11.734910312Z", - "Cap": 131, - "Tags": ["tag:router-a"], - "PrimaryRoutes": ["10.44.0.0/16"], - "Online": true, - "ComputedName": "router-a", - "ComputedNameWithHost": "router-a" + "AllowedIPs": [ + "100.109.43.124/32", + "fd7a:115c:a1e0::a537:2b7c/128", + "10.44.0.0/16" + ], + "PrimaryRoutes": [ + "10.44.0.0/16" + ] } ], - "DNS": { - "Routes": { - "tail78f774.ts.net.": null, - "ts.net.": [{ "Addr": "199.247.155.53" }, { "Addr": "2620:111:8007::53" }] - }, - "Domains": ["tail78f774.ts.net"], - "Proxied": true, - "ExitNodeFilteredSet": [".ts.net", ".tailscale.net"] - }, - "PacketFilter": [], - "PacketFilterRules": null, - "SSHPolicy": { "rules": [] }, - "CollectServices": false, - "DERPMap": { - "Regions": { - "1": { - "RegionID": 1, - "RegionCode": "nyc", - "RegionName": "New York City", - "Latitude": 40.7128, - "Longitude": -74.006, - "Nodes": [ - { - "Name": "1h", - "RegionID": 1, - "HostName": "derp1h.tailscale.com", - "IPv4": "199.38.181.93", - "IPv6": "2607:f740:f::afd", - "CanPort80": true - }, - { - "Name": "1g", - "RegionID": 1, - "HostName": "derp1g.tailscale.com", - "IPv4": "209.177.145.120", - "IPv6": "2607:f740:f::3eb", - "CanPort80": true - }, - { - "Name": "1i", - "RegionID": 1, - "HostName": "derp1i.tailscale.com", - "IPv4": "199.38.181.103", - "IPv6": "2607:f740:f::e19", - "CanPort80": true - }, - { - "Name": "1f", - "RegionID": 1, - "HostName": "derp1f.tailscale.com", - "IPv4": "199.38.181.104", - "IPv6": "2607:f740:f::bc", - "CanPort80": true - } - ] - }, - "10": { - "RegionID": 10, - "RegionCode": "sea", - "RegionName": "Seattle", - "Latitude": 47.609722, - "Longitude": -122.333056, - "Nodes": [ - { - "Name": "10c", - "RegionID": 10, - "HostName": "derp10c.tailscale.com", - "IPv4": "192.73.240.121", - "IPv6": "2607:f740:14::40c", - "CanPort80": true - }, - { - "Name": "10d", - "RegionID": 10, - "HostName": "derp10d.tailscale.com", - "IPv4": "192.73.240.132", - "IPv6": "2607:f740:14::500", - "CanPort80": true - }, - { - "Name": "10b", - "RegionID": 10, - "HostName": "derp10b.tailscale.com", - "IPv4": "192.73.240.161", - "IPv6": "2607:f740:14::61c", - "CanPort80": true - } - ] - }, - "11": { - "RegionID": 11, - "RegionCode": "sao", - "RegionName": "São Paulo", - "Latitude": -23.55, - "Longitude": -46.633333, - "Nodes": [ - { - "Name": "11f", - "RegionID": 11, - "HostName": "derp11f.tailscale.com", - "IPv4": "172.237.61.197", - "IPv6": "2600:3c0d::2000:3bff:fe44:6166", - "CanPort80": true - }, - { - "Name": "11g", - "RegionID": 11, - "HostName": "derp11g.tailscale.com", - "IPv4": "172.237.61.190", - "IPv6": "2600:3c0d::2000:62ff:febe:2e67", - "CanPort80": true - }, - { - "Name": "11e", - "RegionID": 11, - "HostName": "derp11e.tailscale.com", - "IPv4": "172.237.61.194", - "IPv6": "2600:3c0d::2000:d2ff:fe43:1790", - "CanPort80": true - } - ] - }, - "12": { - "RegionID": 12, - "RegionCode": "ord", - "RegionName": "Chicago", - "Latitude": 41.881944, - "Longitude": -87.627778, - "Nodes": [ - { - "Name": "12e", - "RegionID": 12, - "HostName": "derp12e.tailscale.com", - "IPv4": "209.177.158.15", - "IPv6": "2607:f740:e::b17", - "CanPort80": true - }, - { - "Name": "12f", - "RegionID": 12, - "HostName": "derp12f.tailscale.com", - "IPv4": "199.38.182.118", - "IPv6": "2607:f740:e::4c8", - "CanPort80": true - }, - { - "Name": "12d", - "RegionID": 12, - "HostName": "derp12d.tailscale.com", - "IPv4": "209.177.158.246", - "IPv6": "2607:f740:e::811", - "CanPort80": true - } - ] - }, - "13": { - "RegionID": 13, - "RegionCode": "den", - "RegionName": "Denver", - "Latitude": 39.7392, - "Longitude": -104.9849, - "Nodes": [ - { - "Name": "13c", - "RegionID": 13, - "HostName": "derp13c.tailscale.com", - "IPv4": "192.73.242.28", - "IPv6": "2607:f740:16::5c", - "CanPort80": true - }, - { - "Name": "13d", - "RegionID": 13, - "HostName": "derp13d.tailscale.com", - "IPv4": "192.73.242.204", - "IPv6": "2607:f740:16::c23", - "CanPort80": true - }, - { - "Name": "13b", - "RegionID": 13, - "HostName": "derp13b.tailscale.com", - "IPv4": "192.73.242.187", - "IPv6": "2607:f740:16::640", - "CanPort80": true - } - ] - }, - "14": { - "RegionID": 14, - "RegionCode": "ams", - "RegionName": "Amsterdam", - "Latitude": 52.372778, - "Longitude": 4.893611, - "Nodes": [ - { - "Name": "14c", - "RegionID": 14, - "HostName": "derp14c.tailscale.com", - "IPv4": "176.58.93.147", - "IPv6": "2a00:dd80:3c::b09", - "CanPort80": true - }, - { - "Name": "14d", - "RegionID": 14, - "HostName": "derp14d.tailscale.com", - "IPv4": "176.58.93.154", - "IPv6": "2a00:dd80:3c::3d5", - "CanPort80": true - }, - { - "Name": "14b", - "RegionID": 14, - "HostName": "derp14b.tailscale.com", - "IPv4": "176.58.93.248", - "IPv6": "2a00:dd80:3c::807", - "CanPort80": true - } - ] - }, - "15": { - "RegionID": 15, - "RegionCode": "jnb", - "RegionName": "Johannesburg", - "Latitude": -26.204444, - "Longitude": 28.045556, - "Nodes": [ - { - "Name": "15c", - "RegionID": 15, - "HostName": "derp15c.tailscale.com", - "IPv4": "102.67.165.185", - "IPv6": "2c0f:edb0:0:10::b59", - "CanPort80": true - }, - { - "Name": "15d", - "RegionID": 15, - "HostName": "derp15d.tailscale.com", - "IPv4": "102.67.165.36", - "IPv6": "2c0f:edb0:0:10::599", - "CanPort80": true - }, - { - "Name": "15b", - "RegionID": 15, - "HostName": "derp15b.tailscale.com", - "IPv4": "102.67.165.90", - "IPv6": "2c0f:edb0:0:10::963", - "CanPort80": true - } - ] - }, - "16": { - "RegionID": 16, - "RegionCode": "mia", - "RegionName": "Miami", - "Latitude": 25.78, - "Longitude": -80.21, - "Nodes": [ - { - "Name": "16c", - "RegionID": 16, - "HostName": "derp16c.tailscale.com", - "IPv4": "192.73.243.229", - "IPv6": "2607:f740:17::4e4", - "CanPort80": true - }, - { - "Name": "16d", - "RegionID": 16, - "HostName": "derp16d.tailscale.com", - "IPv4": "192.73.243.141", - "IPv6": "2607:f740:17::475", - "CanPort80": true - }, - { - "Name": "16b", - "RegionID": 16, - "HostName": "derp16b.tailscale.com", - "IPv4": "192.73.243.135", - "IPv6": "2607:f740:17::476", - "CanPort80": true - } - ] - }, - "17": { - "RegionID": 17, - "RegionCode": "lax", - "RegionName": "Los Angeles", - "Latitude": 34.05, - "Longitude": -118.25, - "Nodes": [ - { - "Name": "17c", - "RegionID": 17, - "HostName": "derp17c.tailscale.com", - "IPv4": "208.111.40.12", - "IPv6": "2607:f740:c::10", - "CanPort80": true - }, - { - "Name": "17d", - "RegionID": 17, - "HostName": "derp17d.tailscale.com", - "IPv4": "208.111.40.216", - "IPv6": "2607:f740:c::e1b", - "CanPort80": true - }, - { - "Name": "17b", - "RegionID": 17, - "HostName": "derp17b.tailscale.com", - "IPv4": "192.73.244.245", - "IPv6": "2607:f740:c::646", - "CanPort80": true - } - ] - }, - "18": { - "RegionID": 18, - "RegionCode": "par", - "RegionName": "Paris", - "Latitude": 48.856667, - "Longitude": 2.352222, - "Nodes": [ - { - "Name": "18c", - "RegionID": 18, - "HostName": "derp18c.tailscale.com", - "IPv4": "176.58.90.207", - "IPv6": "2a00:dd80:3e::c19", - "CanPort80": true - }, - { - "Name": "18d", - "RegionID": 18, - "HostName": "derp18d.tailscale.com", - "IPv4": "176.58.90.104", - "IPv6": "2a00:dd80:3e::f2e", - "CanPort80": true - }, - { - "Name": "18b", - "RegionID": 18, - "HostName": "derp18b.tailscale.com", - "IPv4": "176.58.90.147", - "IPv6": "2a00:dd80:3e::363", - "CanPort80": true - } - ] - }, - "19": { - "RegionID": 19, - "RegionCode": "mad", - "RegionName": "Madrid", - "Latitude": 40.416944, - "Longitude": -3.703333, - "Nodes": [ - { - "Name": "19c", - "RegionID": 19, - "HostName": "derp19c.tailscale.com", - "IPv4": "45.159.97.61", - "IPv6": "2a00:dd80:14:10::20", - "CanPort80": true - }, - { - "Name": "19d", - "RegionID": 19, - "HostName": "derp19d.tailscale.com", - "IPv4": "45.159.97.233", - "IPv6": "2a00:dd80:14:10::34a", - "CanPort80": true - }, - { - "Name": "19b", - "RegionID": 19, - "HostName": "derp19b.tailscale.com", - "IPv4": "45.159.97.144", - "IPv6": "2a00:dd80:14:10::335", - "CanPort80": true - } - ] - }, - "2": { - "RegionID": 2, - "RegionCode": "sfo", - "RegionName": "San Francisco", - "Latitude": 37.7775, - "Longitude": -122.416389, - "Nodes": [ - { - "Name": "2e", - "RegionID": 2, - "HostName": "derp2e.tailscale.com", - "IPv4": "192.73.252.134", - "IPv6": "2607:f740:0:3f::44c", - "CanPort80": true - }, - { - "Name": "2f", - "RegionID": 2, - "HostName": "derp2f.tailscale.com", - "IPv4": "208.111.34.178", - "IPv6": "2607:f740:0:3f::f4", - "CanPort80": true - }, - { - "Name": "2d", - "RegionID": 2, - "HostName": "derp2d.tailscale.com", - "IPv4": "192.73.252.65", - "IPv6": "2607:f740:0:3f::287", - "CanPort80": true - } - ] - }, - "20": { - "RegionID": 20, - "RegionCode": "hkg", - "RegionName": "Hong Kong", - "Latitude": 22.3193, - "Longitude": 114.1694, - "Nodes": [ - { - "Name": "20c", - "RegionID": 20, - "HostName": "derp20c.tailscale.com", - "IPv4": "205.147.105.30", - "IPv6": "2403:2500:8000:1::5fb", - "CanPort80": true - }, - { - "Name": "20d", - "RegionID": 20, - "HostName": "derp20d.tailscale.com", - "IPv4": "205.147.105.78", - "IPv6": "2403:2500:8000:1::e9a", - "CanPort80": true - }, - { - "Name": "20b", - "RegionID": 20, - "HostName": "derp20b.tailscale.com", - "IPv4": "103.6.84.152", - "IPv6": "2403:2500:8000:1::ef6", - "CanPort80": true - } - ] - }, - "21": { - "RegionID": 21, - "RegionCode": "tor", - "RegionName": "Toronto", - "Latitude": 43.741667, - "Longitude": -79.373333, - "Nodes": [ - { - "Name": "21c", - "RegionID": 21, - "HostName": "derp21c.tailscale.com", - "IPv4": "162.248.221.215", - "IPv6": "2607:f740:50::f10", - "CanPort80": true - }, - { - "Name": "21d", - "RegionID": 21, - "HostName": "derp21d.tailscale.com", - "IPv4": "162.248.221.248", - "IPv6": "2607:f740:50::ca4", - "CanPort80": true - }, - { - "Name": "21b", - "RegionID": 21, - "HostName": "derp21b.tailscale.com", - "IPv4": "162.248.221.199", - "IPv6": "2607:f740:50::1d1", - "CanPort80": true - } - ] - }, - "22": { - "RegionID": 22, - "RegionCode": "waw", - "RegionName": "Warsaw", - "Latitude": 52.23, - "Longitude": 21.011111, - "Nodes": [ - { - "Name": "22c", - "RegionID": 22, - "HostName": "derp22c.tailscale.com", - "IPv4": "45.159.98.253", - "IPv6": "2a00:dd80:40:100::3f", - "CanPort80": true - }, - { - "Name": "22d", - "RegionID": 22, - "HostName": "derp22d.tailscale.com", - "IPv4": "45.159.98.145", - "IPv6": "2a00:dd80:40:100::211", - "CanPort80": true - }, - { - "Name": "22b", - "RegionID": 22, - "HostName": "derp22b.tailscale.com", - "IPv4": "45.159.98.196", - "IPv6": "2a00:dd80:40:100::316", - "CanPort80": true - } - ] - }, - "23": { - "RegionID": 23, - "RegionCode": "dbi", - "RegionName": "Dubai", - "Latitude": 25.263056, - "Longitude": 55.297222, - "Nodes": [ - { - "Name": "23c", - "RegionID": 23, - "HostName": "derp23c.tailscale.com", - "IPv4": "185.34.3.207", - "IPv6": "2a00:dd80:3f:100::a50", - "CanPort80": true - }, - { - "Name": "23d", - "RegionID": 23, - "HostName": "derp23d.tailscale.com", - "IPv4": "185.34.3.75", - "IPv6": "2a00:dd80:3f:100::97e", - "CanPort80": true - }, - { - "Name": "23b", - "RegionID": 23, - "HostName": "derp23b.tailscale.com", - "IPv4": "185.34.3.232", - "IPv6": "2a00:dd80:3f:100::76f", - "CanPort80": true - } - ] - }, - "24": { - "RegionID": 24, - "RegionCode": "hnl", - "RegionName": "Honolulu", - "Latitude": 21.306944, - "Longitude": -157.858333, - "Nodes": [ - { - "Name": "24c", - "RegionID": 24, - "HostName": "derp24c.tailscale.com", - "IPv4": "208.83.233.233", - "IPv6": "2001:19f0:c000:c591:5400:04ff:fe26:2c5f", - "CanPort80": true - }, - { - "Name": "24d", - "RegionID": 24, - "HostName": "derp24d.tailscale.com", - "IPv4": "208.72.155.133", - "IPv6": "2001:19f0:c000:c564:5400:04ff:fe26:2ba8", - "CanPort80": true - }, - { - "Name": "24b", - "RegionID": 24, - "HostName": "derp24b.tailscale.com", - "IPv4": "208.83.234.151", - "IPv6": "2001:19f0:c000:c586:5400:04ff:fe26:2ba6", - "CanPort80": true - } - ] - }, - "25": { - "RegionID": 25, - "RegionCode": "nai", - "RegionName": "Nairobi", - "Latitude": -1.286389, - "Longitude": 36.817222, - "Nodes": [ - { - "Name": "25c", - "RegionID": 25, - "HostName": "derp25c.tailscale.com", - "IPv4": "102.67.167.37", - "IPv6": "2c0f:edb0:2000:1::2c7", - "CanPort80": true - }, - { - "Name": "25d", - "RegionID": 25, - "HostName": "derp25d.tailscale.com", - "IPv4": "102.67.167.188", - "IPv6": "2c0f:edb0:2000:1::188", - "CanPort80": true - }, - { - "Name": "25b", - "RegionID": 25, - "HostName": "derp25b.tailscale.com", - "IPv4": "102.67.167.245", - "IPv6": "2c0f:edb0:2000:1::2e9", - "CanPort80": true - } - ] - }, - "26": { - "RegionID": 26, - "RegionCode": "nue", - "RegionName": "Nuremberg", - "Latitude": 49.453889, - "Longitude": 11.0775, - "Nodes": [ - { - "Name": "26c", - "RegionID": 26, - "HostName": "derp26c.tailscale.com", - "IPv4": "49.12.193.137", - "IPv6": "2a01:4f8:1c1c:5c70::1", - "CanPort80": true - }, - { - "Name": "26d", - "RegionID": 26, - "HostName": "derp26d.tailscale.com", - "IPv4": "49.13.204.141", - "IPv6": "2a01:4f8:1c0c:7d06::1", - "CanPort80": true - }, - { - "Name": "26b", - "RegionID": 26, - "HostName": "derp26b.tailscale.com", - "IPv4": "167.235.72.200", - "IPv6": "2a01:4f8:1c1c:47b6::1", - "CanPort80": true - } - ] - }, - "27": { - "RegionID": 27, - "RegionCode": "iad", - "RegionName": "Ashburn", - "Latitude": 39.03, - "Longitude": -77.471111, - "Nodes": [ - { - "Name": "27d", - "RegionID": 27, - "HostName": "derp27d.tailscale.com", - "IPv4": "178.156.152.106", - "IPv6": "2a01:4ff:f0:3c8e::1", - "CanPort80": true - }, - { - "Name": "27c", - "RegionID": 27, - "HostName": "derp27c.tailscale.com", - "IPv4": "178.156.152.91", - "IPv6": "2a01:4ff:f0:3913::1", - "CanPort80": true - }, - { - "Name": "27e", - "RegionID": 27, - "HostName": "derp27e.tailscale.com", - "IPv4": "178.156.134.232", - "IPv6": "2a01:4ff:f0:28d4::1", - "CanPort80": true - }, - { - "Name": "27b", - "RegionID": 27, - "HostName": "derp27b.tailscale.com", - "IPv4": "5.161.218.233", - "IPv6": "2a01:4ff:f0:3db9::1", - "CanPort80": true - } - ] - }, - "28": { - "RegionID": 28, - "RegionCode": "hel", - "RegionName": "Helsinki", - "Latitude": 60.170833, - "Longitude": 24.9375, - "Nodes": [ - { - "Name": "28c", - "RegionID": 28, - "HostName": "derp28c.tailscale.com", - "IPv4": "95.217.2.165", - "IPv6": "2a01:4f9:c012:cd74::1", - "CanPort80": true - }, - { - "Name": "28d", - "RegionID": 28, - "HostName": "derp28d.tailscale.com", - "IPv4": "157.180.28.32", - "IPv6": "2a01:4f9:c012:2e5b::1", - "CanPort80": true - }, - { - "Name": "28b", - "RegionID": 28, - "HostName": "derp28b.tailscale.com", - "IPv4": "65.109.143.62", - "IPv6": "2a01:4f9:c012:d55c::1", - "CanPort80": true - } - ] - }, - "3": { - "RegionID": 3, - "RegionCode": "sin", - "RegionName": "Singapore", - "Latitude": 1.3521, - "Longitude": 103.8198, - "Nodes": [ - { - "Name": "3g", - "RegionID": 3, - "HostName": "derp3g.tailscale.com", - "IPv4": "172.237.72.79", - "IPv6": "2600:3c15::2000:adff:fe08:6fab", - "CanPort80": true - }, - { - "Name": "3f", - "RegionID": 3, - "HostName": "derp3f.tailscale.com", - "IPv4": "172.237.72.8", - "IPv6": "2600:3c15::2000:53ff:fe48:a668", - "CanPort80": true - }, - { - "Name": "3h", - "RegionID": 3, - "HostName": "derp3h.tailscale.com", - "IPv4": "172.237.66.30", - "IPv6": "2600:3c15::2000:3dff:fe44:50aa", - "CanPort80": true - }, - { - "Name": "3e", - "RegionID": 3, - "HostName": "derp3e.tailscale.com", - "IPv4": "172.237.72.43", - "IPv6": "2600:3c15::2000:6cff:fee4:d799", - "CanPort80": true - } - ] - }, - "4": { - "RegionID": 4, - "RegionCode": "fra", - "RegionName": "Frankfurt", - "Latitude": 50.1109, - "Longitude": 8.6821, - "Nodes": [ - { - "Name": "4h", - "RegionID": 4, - "HostName": "derp4h.tailscale.com", - "IPv4": "185.40.234.77", - "IPv6": "2a00:dd80:20::bcf", - "CanPort80": true - }, - { - "Name": "4g", - "RegionID": 4, - "HostName": "derp4g.tailscale.com", - "IPv4": "185.40.234.113", - "IPv6": "2a00:dd80:20::8f", - "CanPort80": true - }, - { - "Name": "4i", - "RegionID": 4, - "HostName": "derp4i.tailscale.com", - "IPv4": "185.40.234.53", - "IPv6": "2a00:dd80:20::8a6", - "CanPort80": true - }, - { - "Name": "4f", - "RegionID": 4, - "HostName": "derp4f.tailscale.com", - "IPv4": "185.40.234.219", - "IPv6": "2a00:dd80:20::a25", - "CanPort80": true - } - ] - }, - "5": { - "RegionID": 5, - "RegionCode": "syd", - "RegionName": "Sydney", - "Latitude": -33.867778, - "Longitude": 151.21, - "Nodes": [ - { - "Name": "5f", - "RegionID": 5, - "HostName": "derp5f.tailscale.com", - "IPv4": "172.105.166.103", - "IPv6": "2400:8907::2000:ccff:fe1f:80da", - "CanPort80": true - }, - { - "Name": "5g", - "RegionID": 5, - "HostName": "derp5g.tailscale.com", - "IPv4": "172.105.169.57", - "IPv6": "2400:8907::2000:2fff:fea7:57f4", - "CanPort80": true - }, - { - "Name": "5e", - "RegionID": 5, - "HostName": "derp5e.tailscale.com", - "IPv4": "172.105.179.230", - "IPv6": "2400:8907::2000:ceff:fe8d:4f4e", - "CanPort80": true - } - ] - }, - "6": { - "RegionID": 6, - "RegionCode": "blr", - "RegionName": "Bengaluru", - "Latitude": 12.9716, - "Longitude": 77.5946, - "Nodes": [ - { - "Name": "6a", - "RegionID": 6, - "HostName": "derp6.tailscale.com", - "IPv4": "68.183.90.120", - "IPv6": "2400:6180:100:d0::982:d001", - "CanPort80": true - } - ] - }, - "7": { - "RegionID": 7, - "RegionCode": "tok", - "RegionName": "Tokyo", - "Latitude": 35.6764, - "Longitude": 139.65, - "Nodes": [ - { - "Name": "7g", - "RegionID": 7, - "HostName": "derp7g.tailscale.com", - "IPv4": "172.238.6.179", - "IPv6": "2600:3c18::2000:3fff:fe80:3ebd", - "CanPort80": true - }, - { - "Name": "7f", - "RegionID": 7, - "HostName": "derp7f.tailscale.com", - "IPv4": "172.238.6.34", - "IPv6": "2600:3c18::2000:acff:fe8e:3ed5", - "CanPort80": true - }, - { - "Name": "7h", - "RegionID": 7, - "HostName": "derp7h.tailscale.com", - "IPv4": "172.237.28.183", - "IPv6": "2600:3c18::2000:b1ff:fea9:4560", - "CanPort80": true - }, - { - "Name": "7e", - "RegionID": 7, - "HostName": "derp7e.tailscale.com", - "IPv4": "172.238.6.180", - "IPv6": "2600:3c18::2000:60ff:fe0f:6e83", - "STUNOnly": true, - "CanPort80": true - } - ] - }, - "8": { - "RegionID": 8, - "RegionCode": "lhr", - "RegionName": "London", - "Latitude": 51.5072, - "Longitude": 0.1276, - "Nodes": [ - { - "Name": "8f", - "RegionID": 8, - "HostName": "derp8f.tailscale.com", - "IPv4": "176.58.88.183", - "IPv6": "2a00:dd80:3a::dfa", - "CanPort80": true - }, - { - "Name": "8g", - "RegionID": 8, - "HostName": "derp8g.tailscale.com", - "IPv4": "176.58.92.254", - "IPv6": "2a00:dd80:3a::ed", - "CanPort80": true - }, - { - "Name": "8e", - "RegionID": 8, - "HostName": "derp8e.tailscale.com", - "IPv4": "176.58.92.144", - "IPv6": "2a00:dd80:3a::b33", - "CanPort80": true - } - ] - }, - "9": { - "RegionID": 9, - "RegionCode": "dfw", - "RegionName": "Dallas", - "Latitude": 32.779167, - "Longitude": -96.808889, - "Nodes": [ - { - "Name": "9e", - "RegionID": 9, - "HostName": "derp9e.tailscale.com", - "IPv4": "192.73.248.83", - "IPv6": "2607:f740:100::359", - "CanPort80": true - }, - { - "Name": "9f", - "RegionID": 9, - "HostName": "derp9f.tailscale.com", - "IPv4": "209.177.156.197", - "IPv6": "2607:f740:100::cad", - "CanPort80": true - }, - { - "Name": "9d", - "RegionID": 9, - "HostName": "derp9d.tailscale.com", - "IPv4": "209.177.156.94", - "IPv6": "2607:f740:100::c05", - "CanPort80": true - } - ] - } - } - }, - "DisplayMessages": null, - "TKAEnabled": false, - "TKAHead": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", - "Domain": "kratail2tid@passkey", - "DomainAuditLogID": "", - "UserProfiles": { - "1260082990019555": { - "ID": 1260082990019555, - "LoginName": "tagged-devices", - "DisplayName": "Tagged Devices" - }, - "6999435610919250": { - "ID": 6999435610919250, - "LoginName": "group-a-client.tail78f774.ts.net", - "DisplayName": "group-a-client" - } - } + "PacketFilterRules": null } }, "group-b-client": { - "commands": { - "packet_filter_rules": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/group-b-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/group-b-client/tailscaled.sock debug localapi POST debug-packet-filter-matches" - }, "packet_filter_rules": null, - "packet_filter_matches": [], - "whois": { - "100.124.195.93": { - "peer_name": "exit-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/group-b-client/tailscaled.sock whois --json 100.124.195.93", - "response": null - }, - "100.116.18.24": { - "peer_name": "exit-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/group-b-client/tailscaled.sock whois --json 100.116.18.24", - "response": null - }, - "100.85.66.106": { - "peer_name": "exit-node", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/group-b-client/tailscaled.sock whois --json 100.85.66.106", - "response": null - }, - "100.107.162.14": { - "peer_name": "group-a-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/group-b-client/tailscaled.sock whois --json 100.107.162.14", - "response": null - }, - "100.105.127.107": { - "peer_name": "multi-exit-router", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/group-b-client/tailscaled.sock whois --json 100.105.127.107", - "response": null - }, - "100.109.43.124": { - "peer_name": "router-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/group-b-client/tailscaled.sock whois --json 100.109.43.124", - "response": null - }, - "100.65.172.123": { - "peer_name": "router-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/group-b-client/tailscaled.sock whois --json 100.65.172.123", - "response": { - "Node": { - "ID": 1399889648409786, - "StableID": "nPHvXBj1wB11CNTRL", - "Name": "router-b.tail78f774.ts.net.", - "User": 1260082990019555, - "Key": "nodekey:4e6d3473c516cea37bcefdf4368932c623fd91c24aee1aacc27ca8165a41ac7a", - "DiscoKey": "discokey:dd5532635b8e3ddf25186e36671c16dd17c005c8b6a6862f4b5cc4e4f459e705", - "Addresses": ["100.65.172.123/32", "fd7a:115c:a1e0::5a37:ac7c/128"], - "AllowedIPs": ["100.65.172.123/32", "fd7a:115c:a1e0::5a37:ac7c/128", "10.55.0.0/16"], - "Endpoints": ["77.164.248.136:35931", "10.65.0.27:35931", "172.17.0.1:35931"], - "HomeDERP": 14, - "Hostinfo": { - "OS": "linux", - "Hostname": "router-b", - "Services": [ - { "Proto": "peerapi4", "Port": 58804 }, - { "Proto": "peerapi6", "Port": 58804 } - ] - }, - "Created": "2026-03-28T10:38:15.42735258Z", - "Cap": 131, - "Tags": ["tag:router-b"], - "PrimaryRoutes": ["10.55.0.0/16"], - "Online": true, - "ComputedName": "router-b", - "ComputedNameWithHost": "router-b" - }, - "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/group-b-client/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/group-b-client/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/group-b-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/group-b-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/group-b-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/group-b-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/group-b-client/tailscaled.sock whois --json 100.90.199.68", - "response": null - } - }, "netmap": { - "SelfNode": { - "ID": 1008089393782498, - "StableID": "ndUwgLoZs811CNTRL", - "Name": "group-b-client.tail78f774.ts.net.", - "User": 1008089393782498, - "Key": "nodekey:ef35a655163204a08b33e09fdc24709f1e3aaa7f40de4efd5549cf014b4d8711", - "DiscoKey": "discokey:e972182cda0d0b459c91b2881624b81749a7e44390a5dde1b9bc17c1ae67715a", - "Addresses": ["100.77.135.18/32", "fd7a:115c:a1e0::4b37:8712/128"], - "AllowedIPs": ["100.77.135.18/32", "fd7a:115c:a1e0::4b37:8712/128"], - "Endpoints": ["77.164.248.136:49377", "10.65.0.27:49377", "172.17.0.1:49377"], - "Hostinfo": { - "Hostname": "group-b-client", - "RequestTags": ["tag:group-b"], - "Services": [ - { "Proto": "peerapi4", "Port": 47173 }, - { "Proto": "peerapi6", "Port": 47173 }, - { "Proto": "peerapi-dns-proxy", "Port": 1 } - ] - }, - "Created": "2026-03-28T10:38:08.031309668Z", - "Tags": ["tag:group-b"], - "MachineAuthorized": true, - "CapMap": { - "https://tailscale.com/cap/file-sharing": null, - "https://tailscale.com/cap/is-owner": null, - "https://tailscale.com/cap/ssh": null, - "https://tailscale.com/cap/tailnet-lock": null, - "probe-udp-lifetime": null, - "ssh-behavior-v1": null, - "ssh-env-vars": null, - "store-appc-routes": null, - "tailnet-display-name": ["kratail2tid@passkey"] - }, - "ComputedName": "group-b-client", - "ComputedNameWithHost": "group-b-client" - }, - "AllCaps": [ - "probe-udp-lifetime", - "tailnet-display-name", - "https://tailscale.com/cap/file-sharing", - "https://tailscale.com/cap/ssh", - "https://tailscale.com/cap/tailnet-lock", - "ssh-env-vars", - "ssh-behavior-v1", - "store-appc-routes", - "https://tailscale.com/cap/is-owner" - ], - "NodeKey": "nodekey:ef35a655163204a08b33e09fdc24709f1e3aaa7f40de4efd5549cf014b4d8711", - "MachineKey": "mkey:f151b3ba7be457f1484c96d8daf48e032d8c9ed890a7f9b2f32c51458a19a05c", "Peers": [ { - "ID": 1399889648409786, - "StableID": "nPHvXBj1wB11CNTRL", "Name": "router-b.tail78f774.ts.net.", - "User": 1260082990019555, - "Key": "nodekey:4e6d3473c516cea37bcefdf4368932c623fd91c24aee1aacc27ca8165a41ac7a", - "DiscoKey": "discokey:dd5532635b8e3ddf25186e36671c16dd17c005c8b6a6862f4b5cc4e4f459e705", - "Addresses": ["100.65.172.123/32", "fd7a:115c:a1e0::5a37:ac7c/128"], - "AllowedIPs": ["100.65.172.123/32", "fd7a:115c:a1e0::5a37:ac7c/128", "10.55.0.0/16"], - "Endpoints": ["77.164.248.136:35931", "10.65.0.27:35931", "172.17.0.1:35931"], - "HomeDERP": 14, - "Hostinfo": { - "OS": "linux", - "Hostname": "router-b", - "Services": [ - { "Proto": "peerapi4", "Port": 58804 }, - { "Proto": "peerapi6", "Port": 58804 } - ] - }, - "Created": "2026-03-28T10:38:15.42735258Z", - "Cap": 131, - "Tags": ["tag:router-b"], - "PrimaryRoutes": ["10.55.0.0/16"], - "Online": true, - "ComputedName": "router-b", - "ComputedNameWithHost": "router-b" + "AllowedIPs": [ + "100.65.172.123/32", + "fd7a:115c:a1e0::5a37:ac7c/128", + "10.55.0.0/16" + ], + "PrimaryRoutes": [ + "10.55.0.0/16" + ] } ], - "DNS": { - "Routes": { - "tail78f774.ts.net.": null, - "ts.net.": [{ "Addr": "199.247.155.53" }, { "Addr": "2620:111:8007::53" }] - }, - "Domains": ["tail78f774.ts.net"], - "Proxied": true, - "ExitNodeFilteredSet": [".ts.net", ".tailscale.net"] - }, - "PacketFilter": [], - "PacketFilterRules": null, - "SSHPolicy": { "rules": [] }, - "CollectServices": false, - "DERPMap": { - "Regions": { - "1": { - "RegionID": 1, - "RegionCode": "nyc", - "RegionName": "New York City", - "Latitude": 40.7128, - "Longitude": -74.006, - "Nodes": [ - { - "Name": "1h", - "RegionID": 1, - "HostName": "derp1h.tailscale.com", - "IPv4": "199.38.181.93", - "IPv6": "2607:f740:f::afd", - "CanPort80": true - }, - { - "Name": "1g", - "RegionID": 1, - "HostName": "derp1g.tailscale.com", - "IPv4": "209.177.145.120", - "IPv6": "2607:f740:f::3eb", - "CanPort80": true - }, - { - "Name": "1i", - "RegionID": 1, - "HostName": "derp1i.tailscale.com", - "IPv4": "199.38.181.103", - "IPv6": "2607:f740:f::e19", - "CanPort80": true - }, - { - "Name": "1f", - "RegionID": 1, - "HostName": "derp1f.tailscale.com", - "IPv4": "199.38.181.104", - "IPv6": "2607:f740:f::bc", - "CanPort80": true - } - ] - }, - "10": { - "RegionID": 10, - "RegionCode": "sea", - "RegionName": "Seattle", - "Latitude": 47.609722, - "Longitude": -122.333056, - "Nodes": [ - { - "Name": "10c", - "RegionID": 10, - "HostName": "derp10c.tailscale.com", - "IPv4": "192.73.240.121", - "IPv6": "2607:f740:14::40c", - "CanPort80": true - }, - { - "Name": "10d", - "RegionID": 10, - "HostName": "derp10d.tailscale.com", - "IPv4": "192.73.240.132", - "IPv6": "2607:f740:14::500", - "CanPort80": true - }, - { - "Name": "10b", - "RegionID": 10, - "HostName": "derp10b.tailscale.com", - "IPv4": "192.73.240.161", - "IPv6": "2607:f740:14::61c", - "CanPort80": true - } - ] - }, - "11": { - "RegionID": 11, - "RegionCode": "sao", - "RegionName": "São Paulo", - "Latitude": -23.55, - "Longitude": -46.633333, - "Nodes": [ - { - "Name": "11f", - "RegionID": 11, - "HostName": "derp11f.tailscale.com", - "IPv4": "172.237.61.197", - "IPv6": "2600:3c0d::2000:3bff:fe44:6166", - "CanPort80": true - }, - { - "Name": "11g", - "RegionID": 11, - "HostName": "derp11g.tailscale.com", - "IPv4": "172.237.61.190", - "IPv6": "2600:3c0d::2000:62ff:febe:2e67", - "CanPort80": true - }, - { - "Name": "11e", - "RegionID": 11, - "HostName": "derp11e.tailscale.com", - "IPv4": "172.237.61.194", - "IPv6": "2600:3c0d::2000:d2ff:fe43:1790", - "CanPort80": true - } - ] - }, - "12": { - "RegionID": 12, - "RegionCode": "ord", - "RegionName": "Chicago", - "Latitude": 41.881944, - "Longitude": -87.627778, - "Nodes": [ - { - "Name": "12e", - "RegionID": 12, - "HostName": "derp12e.tailscale.com", - "IPv4": "209.177.158.15", - "IPv6": "2607:f740:e::b17", - "CanPort80": true - }, - { - "Name": "12f", - "RegionID": 12, - "HostName": "derp12f.tailscale.com", - "IPv4": "199.38.182.118", - "IPv6": "2607:f740:e::4c8", - "CanPort80": true - }, - { - "Name": "12d", - "RegionID": 12, - "HostName": "derp12d.tailscale.com", - "IPv4": "209.177.158.246", - "IPv6": "2607:f740:e::811", - "CanPort80": true - } - ] - }, - "13": { - "RegionID": 13, - "RegionCode": "den", - "RegionName": "Denver", - "Latitude": 39.7392, - "Longitude": -104.9849, - "Nodes": [ - { - "Name": "13c", - "RegionID": 13, - "HostName": "derp13c.tailscale.com", - "IPv4": "192.73.242.28", - "IPv6": "2607:f740:16::5c", - "CanPort80": true - }, - { - "Name": "13d", - "RegionID": 13, - "HostName": "derp13d.tailscale.com", - "IPv4": "192.73.242.204", - "IPv6": "2607:f740:16::c23", - "CanPort80": true - }, - { - "Name": "13b", - "RegionID": 13, - "HostName": "derp13b.tailscale.com", - "IPv4": "192.73.242.187", - "IPv6": "2607:f740:16::640", - "CanPort80": true - } - ] - }, - "14": { - "RegionID": 14, - "RegionCode": "ams", - "RegionName": "Amsterdam", - "Latitude": 52.372778, - "Longitude": 4.893611, - "Nodes": [ - { - "Name": "14c", - "RegionID": 14, - "HostName": "derp14c.tailscale.com", - "IPv4": "176.58.93.147", - "IPv6": "2a00:dd80:3c::b09", - "CanPort80": true - }, - { - "Name": "14d", - "RegionID": 14, - "HostName": "derp14d.tailscale.com", - "IPv4": "176.58.93.154", - "IPv6": "2a00:dd80:3c::3d5", - "CanPort80": true - }, - { - "Name": "14b", - "RegionID": 14, - "HostName": "derp14b.tailscale.com", - "IPv4": "176.58.93.248", - "IPv6": "2a00:dd80:3c::807", - "CanPort80": true - } - ] - }, - "15": { - "RegionID": 15, - "RegionCode": "jnb", - "RegionName": "Johannesburg", - "Latitude": -26.204444, - "Longitude": 28.045556, - "Nodes": [ - { - "Name": "15c", - "RegionID": 15, - "HostName": "derp15c.tailscale.com", - "IPv4": "102.67.165.185", - "IPv6": "2c0f:edb0:0:10::b59", - "CanPort80": true - }, - { - "Name": "15d", - "RegionID": 15, - "HostName": "derp15d.tailscale.com", - "IPv4": "102.67.165.36", - "IPv6": "2c0f:edb0:0:10::599", - "CanPort80": true - }, - { - "Name": "15b", - "RegionID": 15, - "HostName": "derp15b.tailscale.com", - "IPv4": "102.67.165.90", - "IPv6": "2c0f:edb0:0:10::963", - "CanPort80": true - } - ] - }, - "16": { - "RegionID": 16, - "RegionCode": "mia", - "RegionName": "Miami", - "Latitude": 25.78, - "Longitude": -80.21, - "Nodes": [ - { - "Name": "16c", - "RegionID": 16, - "HostName": "derp16c.tailscale.com", - "IPv4": "192.73.243.229", - "IPv6": "2607:f740:17::4e4", - "CanPort80": true - }, - { - "Name": "16d", - "RegionID": 16, - "HostName": "derp16d.tailscale.com", - "IPv4": "192.73.243.141", - "IPv6": "2607:f740:17::475", - "CanPort80": true - }, - { - "Name": "16b", - "RegionID": 16, - "HostName": "derp16b.tailscale.com", - "IPv4": "192.73.243.135", - "IPv6": "2607:f740:17::476", - "CanPort80": true - } - ] - }, - "17": { - "RegionID": 17, - "RegionCode": "lax", - "RegionName": "Los Angeles", - "Latitude": 34.05, - "Longitude": -118.25, - "Nodes": [ - { - "Name": "17c", - "RegionID": 17, - "HostName": "derp17c.tailscale.com", - "IPv4": "208.111.40.12", - "IPv6": "2607:f740:c::10", - "CanPort80": true - }, - { - "Name": "17d", - "RegionID": 17, - "HostName": "derp17d.tailscale.com", - "IPv4": "208.111.40.216", - "IPv6": "2607:f740:c::e1b", - "CanPort80": true - }, - { - "Name": "17b", - "RegionID": 17, - "HostName": "derp17b.tailscale.com", - "IPv4": "192.73.244.245", - "IPv6": "2607:f740:c::646", - "CanPort80": true - } - ] - }, - "18": { - "RegionID": 18, - "RegionCode": "par", - "RegionName": "Paris", - "Latitude": 48.856667, - "Longitude": 2.352222, - "Nodes": [ - { - "Name": "18c", - "RegionID": 18, - "HostName": "derp18c.tailscale.com", - "IPv4": "176.58.90.207", - "IPv6": "2a00:dd80:3e::c19", - "CanPort80": true - }, - { - "Name": "18d", - "RegionID": 18, - "HostName": "derp18d.tailscale.com", - "IPv4": "176.58.90.104", - "IPv6": "2a00:dd80:3e::f2e", - "CanPort80": true - }, - { - "Name": "18b", - "RegionID": 18, - "HostName": "derp18b.tailscale.com", - "IPv4": "176.58.90.147", - "IPv6": "2a00:dd80:3e::363", - "CanPort80": true - } - ] - }, - "19": { - "RegionID": 19, - "RegionCode": "mad", - "RegionName": "Madrid", - "Latitude": 40.416944, - "Longitude": -3.703333, - "Nodes": [ - { - "Name": "19c", - "RegionID": 19, - "HostName": "derp19c.tailscale.com", - "IPv4": "45.159.97.61", - "IPv6": "2a00:dd80:14:10::20", - "CanPort80": true - }, - { - "Name": "19d", - "RegionID": 19, - "HostName": "derp19d.tailscale.com", - "IPv4": "45.159.97.233", - "IPv6": "2a00:dd80:14:10::34a", - "CanPort80": true - }, - { - "Name": "19b", - "RegionID": 19, - "HostName": "derp19b.tailscale.com", - "IPv4": "45.159.97.144", - "IPv6": "2a00:dd80:14:10::335", - "CanPort80": true - } - ] - }, - "2": { - "RegionID": 2, - "RegionCode": "sfo", - "RegionName": "San Francisco", - "Latitude": 37.7775, - "Longitude": -122.416389, - "Nodes": [ - { - "Name": "2e", - "RegionID": 2, - "HostName": "derp2e.tailscale.com", - "IPv4": "192.73.252.134", - "IPv6": "2607:f740:0:3f::44c", - "CanPort80": true - }, - { - "Name": "2f", - "RegionID": 2, - "HostName": "derp2f.tailscale.com", - "IPv4": "208.111.34.178", - "IPv6": "2607:f740:0:3f::f4", - "CanPort80": true - }, - { - "Name": "2d", - "RegionID": 2, - "HostName": "derp2d.tailscale.com", - "IPv4": "192.73.252.65", - "IPv6": "2607:f740:0:3f::287", - "CanPort80": true - } - ] - }, - "20": { - "RegionID": 20, - "RegionCode": "hkg", - "RegionName": "Hong Kong", - "Latitude": 22.3193, - "Longitude": 114.1694, - "Nodes": [ - { - "Name": "20c", - "RegionID": 20, - "HostName": "derp20c.tailscale.com", - "IPv4": "205.147.105.30", - "IPv6": "2403:2500:8000:1::5fb", - "CanPort80": true - }, - { - "Name": "20d", - "RegionID": 20, - "HostName": "derp20d.tailscale.com", - "IPv4": "205.147.105.78", - "IPv6": "2403:2500:8000:1::e9a", - "CanPort80": true - }, - { - "Name": "20b", - "RegionID": 20, - "HostName": "derp20b.tailscale.com", - "IPv4": "103.6.84.152", - "IPv6": "2403:2500:8000:1::ef6", - "CanPort80": true - } - ] - }, - "21": { - "RegionID": 21, - "RegionCode": "tor", - "RegionName": "Toronto", - "Latitude": 43.741667, - "Longitude": -79.373333, - "Nodes": [ - { - "Name": "21c", - "RegionID": 21, - "HostName": "derp21c.tailscale.com", - "IPv4": "162.248.221.215", - "IPv6": "2607:f740:50::f10", - "CanPort80": true - }, - { - "Name": "21d", - "RegionID": 21, - "HostName": "derp21d.tailscale.com", - "IPv4": "162.248.221.248", - "IPv6": "2607:f740:50::ca4", - "CanPort80": true - }, - { - "Name": "21b", - "RegionID": 21, - "HostName": "derp21b.tailscale.com", - "IPv4": "162.248.221.199", - "IPv6": "2607:f740:50::1d1", - "CanPort80": true - } - ] - }, - "22": { - "RegionID": 22, - "RegionCode": "waw", - "RegionName": "Warsaw", - "Latitude": 52.23, - "Longitude": 21.011111, - "Nodes": [ - { - "Name": "22c", - "RegionID": 22, - "HostName": "derp22c.tailscale.com", - "IPv4": "45.159.98.253", - "IPv6": "2a00:dd80:40:100::3f", - "CanPort80": true - }, - { - "Name": "22d", - "RegionID": 22, - "HostName": "derp22d.tailscale.com", - "IPv4": "45.159.98.145", - "IPv6": "2a00:dd80:40:100::211", - "CanPort80": true - }, - { - "Name": "22b", - "RegionID": 22, - "HostName": "derp22b.tailscale.com", - "IPv4": "45.159.98.196", - "IPv6": "2a00:dd80:40:100::316", - "CanPort80": true - } - ] - }, - "23": { - "RegionID": 23, - "RegionCode": "dbi", - "RegionName": "Dubai", - "Latitude": 25.263056, - "Longitude": 55.297222, - "Nodes": [ - { - "Name": "23c", - "RegionID": 23, - "HostName": "derp23c.tailscale.com", - "IPv4": "185.34.3.207", - "IPv6": "2a00:dd80:3f:100::a50", - "CanPort80": true - }, - { - "Name": "23d", - "RegionID": 23, - "HostName": "derp23d.tailscale.com", - "IPv4": "185.34.3.75", - "IPv6": "2a00:dd80:3f:100::97e", - "CanPort80": true - }, - { - "Name": "23b", - "RegionID": 23, - "HostName": "derp23b.tailscale.com", - "IPv4": "185.34.3.232", - "IPv6": "2a00:dd80:3f:100::76f", - "CanPort80": true - } - ] - }, - "24": { - "RegionID": 24, - "RegionCode": "hnl", - "RegionName": "Honolulu", - "Latitude": 21.306944, - "Longitude": -157.858333, - "Nodes": [ - { - "Name": "24c", - "RegionID": 24, - "HostName": "derp24c.tailscale.com", - "IPv4": "208.83.233.233", - "IPv6": "2001:19f0:c000:c591:5400:04ff:fe26:2c5f", - "CanPort80": true - }, - { - "Name": "24d", - "RegionID": 24, - "HostName": "derp24d.tailscale.com", - "IPv4": "208.72.155.133", - "IPv6": "2001:19f0:c000:c564:5400:04ff:fe26:2ba8", - "CanPort80": true - }, - { - "Name": "24b", - "RegionID": 24, - "HostName": "derp24b.tailscale.com", - "IPv4": "208.83.234.151", - "IPv6": "2001:19f0:c000:c586:5400:04ff:fe26:2ba6", - "CanPort80": true - } - ] - }, - "25": { - "RegionID": 25, - "RegionCode": "nai", - "RegionName": "Nairobi", - "Latitude": -1.286389, - "Longitude": 36.817222, - "Nodes": [ - { - "Name": "25c", - "RegionID": 25, - "HostName": "derp25c.tailscale.com", - "IPv4": "102.67.167.37", - "IPv6": "2c0f:edb0:2000:1::2c7", - "CanPort80": true - }, - { - "Name": "25d", - "RegionID": 25, - "HostName": "derp25d.tailscale.com", - "IPv4": "102.67.167.188", - "IPv6": "2c0f:edb0:2000:1::188", - "CanPort80": true - }, - { - "Name": "25b", - "RegionID": 25, - "HostName": "derp25b.tailscale.com", - "IPv4": "102.67.167.245", - "IPv6": "2c0f:edb0:2000:1::2e9", - "CanPort80": true - } - ] - }, - "26": { - "RegionID": 26, - "RegionCode": "nue", - "RegionName": "Nuremberg", - "Latitude": 49.453889, - "Longitude": 11.0775, - "Nodes": [ - { - "Name": "26c", - "RegionID": 26, - "HostName": "derp26c.tailscale.com", - "IPv4": "49.12.193.137", - "IPv6": "2a01:4f8:1c1c:5c70::1", - "CanPort80": true - }, - { - "Name": "26d", - "RegionID": 26, - "HostName": "derp26d.tailscale.com", - "IPv4": "49.13.204.141", - "IPv6": "2a01:4f8:1c0c:7d06::1", - "CanPort80": true - }, - { - "Name": "26b", - "RegionID": 26, - "HostName": "derp26b.tailscale.com", - "IPv4": "167.235.72.200", - "IPv6": "2a01:4f8:1c1c:47b6::1", - "CanPort80": true - } - ] - }, - "27": { - "RegionID": 27, - "RegionCode": "iad", - "RegionName": "Ashburn", - "Latitude": 39.03, - "Longitude": -77.471111, - "Nodes": [ - { - "Name": "27d", - "RegionID": 27, - "HostName": "derp27d.tailscale.com", - "IPv4": "178.156.152.106", - "IPv6": "2a01:4ff:f0:3c8e::1", - "CanPort80": true - }, - { - "Name": "27c", - "RegionID": 27, - "HostName": "derp27c.tailscale.com", - "IPv4": "178.156.152.91", - "IPv6": "2a01:4ff:f0:3913::1", - "CanPort80": true - }, - { - "Name": "27e", - "RegionID": 27, - "HostName": "derp27e.tailscale.com", - "IPv4": "178.156.134.232", - "IPv6": "2a01:4ff:f0:28d4::1", - "CanPort80": true - }, - { - "Name": "27b", - "RegionID": 27, - "HostName": "derp27b.tailscale.com", - "IPv4": "5.161.218.233", - "IPv6": "2a01:4ff:f0:3db9::1", - "CanPort80": true - } - ] - }, - "28": { - "RegionID": 28, - "RegionCode": "hel", - "RegionName": "Helsinki", - "Latitude": 60.170833, - "Longitude": 24.9375, - "Nodes": [ - { - "Name": "28c", - "RegionID": 28, - "HostName": "derp28c.tailscale.com", - "IPv4": "95.217.2.165", - "IPv6": "2a01:4f9:c012:cd74::1", - "CanPort80": true - }, - { - "Name": "28d", - "RegionID": 28, - "HostName": "derp28d.tailscale.com", - "IPv4": "157.180.28.32", - "IPv6": "2a01:4f9:c012:2e5b::1", - "CanPort80": true - }, - { - "Name": "28b", - "RegionID": 28, - "HostName": "derp28b.tailscale.com", - "IPv4": "65.109.143.62", - "IPv6": "2a01:4f9:c012:d55c::1", - "CanPort80": true - } - ] - }, - "3": { - "RegionID": 3, - "RegionCode": "sin", - "RegionName": "Singapore", - "Latitude": 1.3521, - "Longitude": 103.8198, - "Nodes": [ - { - "Name": "3g", - "RegionID": 3, - "HostName": "derp3g.tailscale.com", - "IPv4": "172.237.72.79", - "IPv6": "2600:3c15::2000:adff:fe08:6fab", - "CanPort80": true - }, - { - "Name": "3f", - "RegionID": 3, - "HostName": "derp3f.tailscale.com", - "IPv4": "172.237.72.8", - "IPv6": "2600:3c15::2000:53ff:fe48:a668", - "CanPort80": true - }, - { - "Name": "3h", - "RegionID": 3, - "HostName": "derp3h.tailscale.com", - "IPv4": "172.237.66.30", - "IPv6": "2600:3c15::2000:3dff:fe44:50aa", - "CanPort80": true - }, - { - "Name": "3e", - "RegionID": 3, - "HostName": "derp3e.tailscale.com", - "IPv4": "172.237.72.43", - "IPv6": "2600:3c15::2000:6cff:fee4:d799", - "CanPort80": true - } - ] - }, - "4": { - "RegionID": 4, - "RegionCode": "fra", - "RegionName": "Frankfurt", - "Latitude": 50.1109, - "Longitude": 8.6821, - "Nodes": [ - { - "Name": "4h", - "RegionID": 4, - "HostName": "derp4h.tailscale.com", - "IPv4": "185.40.234.77", - "IPv6": "2a00:dd80:20::bcf", - "CanPort80": true - }, - { - "Name": "4g", - "RegionID": 4, - "HostName": "derp4g.tailscale.com", - "IPv4": "185.40.234.113", - "IPv6": "2a00:dd80:20::8f", - "CanPort80": true - }, - { - "Name": "4i", - "RegionID": 4, - "HostName": "derp4i.tailscale.com", - "IPv4": "185.40.234.53", - "IPv6": "2a00:dd80:20::8a6", - "CanPort80": true - }, - { - "Name": "4f", - "RegionID": 4, - "HostName": "derp4f.tailscale.com", - "IPv4": "185.40.234.219", - "IPv6": "2a00:dd80:20::a25", - "CanPort80": true - } - ] - }, - "5": { - "RegionID": 5, - "RegionCode": "syd", - "RegionName": "Sydney", - "Latitude": -33.867778, - "Longitude": 151.21, - "Nodes": [ - { - "Name": "5f", - "RegionID": 5, - "HostName": "derp5f.tailscale.com", - "IPv4": "172.105.166.103", - "IPv6": "2400:8907::2000:ccff:fe1f:80da", - "CanPort80": true - }, - { - "Name": "5g", - "RegionID": 5, - "HostName": "derp5g.tailscale.com", - "IPv4": "172.105.169.57", - "IPv6": "2400:8907::2000:2fff:fea7:57f4", - "CanPort80": true - }, - { - "Name": "5e", - "RegionID": 5, - "HostName": "derp5e.tailscale.com", - "IPv4": "172.105.179.230", - "IPv6": "2400:8907::2000:ceff:fe8d:4f4e", - "CanPort80": true - } - ] - }, - "6": { - "RegionID": 6, - "RegionCode": "blr", - "RegionName": "Bengaluru", - "Latitude": 12.9716, - "Longitude": 77.5946, - "Nodes": [ - { - "Name": "6a", - "RegionID": 6, - "HostName": "derp6.tailscale.com", - "IPv4": "68.183.90.120", - "IPv6": "2400:6180:100:d0::982:d001", - "CanPort80": true - } - ] - }, - "7": { - "RegionID": 7, - "RegionCode": "tok", - "RegionName": "Tokyo", - "Latitude": 35.6764, - "Longitude": 139.65, - "Nodes": [ - { - "Name": "7g", - "RegionID": 7, - "HostName": "derp7g.tailscale.com", - "IPv4": "172.238.6.179", - "IPv6": "2600:3c18::2000:3fff:fe80:3ebd", - "CanPort80": true - }, - { - "Name": "7f", - "RegionID": 7, - "HostName": "derp7f.tailscale.com", - "IPv4": "172.238.6.34", - "IPv6": "2600:3c18::2000:acff:fe8e:3ed5", - "CanPort80": true - }, - { - "Name": "7h", - "RegionID": 7, - "HostName": "derp7h.tailscale.com", - "IPv4": "172.237.28.183", - "IPv6": "2600:3c18::2000:b1ff:fea9:4560", - "CanPort80": true - }, - { - "Name": "7e", - "RegionID": 7, - "HostName": "derp7e.tailscale.com", - "IPv4": "172.238.6.180", - "IPv6": "2600:3c18::2000:60ff:fe0f:6e83", - "STUNOnly": true, - "CanPort80": true - } - ] - }, - "8": { - "RegionID": 8, - "RegionCode": "lhr", - "RegionName": "London", - "Latitude": 51.5072, - "Longitude": 0.1276, - "Nodes": [ - { - "Name": "8f", - "RegionID": 8, - "HostName": "derp8f.tailscale.com", - "IPv4": "176.58.88.183", - "IPv6": "2a00:dd80:3a::dfa", - "CanPort80": true - }, - { - "Name": "8g", - "RegionID": 8, - "HostName": "derp8g.tailscale.com", - "IPv4": "176.58.92.254", - "IPv6": "2a00:dd80:3a::ed", - "CanPort80": true - }, - { - "Name": "8e", - "RegionID": 8, - "HostName": "derp8e.tailscale.com", - "IPv4": "176.58.92.144", - "IPv6": "2a00:dd80:3a::b33", - "CanPort80": true - } - ] - }, - "9": { - "RegionID": 9, - "RegionCode": "dfw", - "RegionName": "Dallas", - "Latitude": 32.779167, - "Longitude": -96.808889, - "Nodes": [ - { - "Name": "9e", - "RegionID": 9, - "HostName": "derp9e.tailscale.com", - "IPv4": "192.73.248.83", - "IPv6": "2607:f740:100::359", - "CanPort80": true - }, - { - "Name": "9f", - "RegionID": 9, - "HostName": "derp9f.tailscale.com", - "IPv4": "209.177.156.197", - "IPv6": "2607:f740:100::cad", - "CanPort80": true - }, - { - "Name": "9d", - "RegionID": 9, - "HostName": "derp9d.tailscale.com", - "IPv4": "209.177.156.94", - "IPv6": "2607:f740:100::c05", - "CanPort80": true - } - ] - } - } - }, - "DisplayMessages": null, - "TKAEnabled": false, - "TKAHead": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", - "Domain": "kratail2tid@passkey", - "DomainAuditLogID": "", - "UserProfiles": { - "1008089393782498": { - "ID": 1008089393782498, - "LoginName": "group-b-client.tail78f774.ts.net", - "DisplayName": "group-b-client" - }, - "1260082990019555": { "ID": 1260082990019555, "LoginName": "tagged-devices", "DisplayName": "Tagged Devices" } - } + "PacketFilterRules": null } }, "multi-exit-router": { - "commands": { - "packet_filter_rules": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/multi-exit-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/multi-exit-router/tailscaled.sock debug localapi POST debug-packet-filter-matches" - }, "packet_filter_rules": null, - "packet_filter_matches": [], - "whois": { - "100.124.195.93": { - "peer_name": "exit-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/multi-exit-router/tailscaled.sock whois --json 100.124.195.93", - "response": null - }, - "100.116.18.24": { - "peer_name": "exit-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/multi-exit-router/tailscaled.sock whois --json 100.116.18.24", - "response": null - }, - "100.85.66.106": { - "peer_name": "exit-node", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/multi-exit-router/tailscaled.sock whois --json 100.85.66.106", - "response": null - }, - "100.107.162.14": { - "peer_name": "group-a-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/multi-exit-router/tailscaled.sock whois --json 100.107.162.14", - "response": null - }, - "100.77.135.18": { - "peer_name": "group-b-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/multi-exit-router/tailscaled.sock whois --json 100.77.135.18", - "response": null - }, - "100.109.43.124": { - "peer_name": "router-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/multi-exit-router/tailscaled.sock whois --json 100.109.43.124", - "response": null - }, - "100.65.172.123": { - "peer_name": "router-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/multi-exit-router/tailscaled.sock whois --json 100.65.172.123", - "response": null - }, - "100.92.142.61": { - "peer_name": "subnet-router", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/multi-exit-router/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/multi-exit-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/multi-exit-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/multi-exit-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/multi-exit-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/multi-exit-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/multi-exit-router/tailscaled.sock whois --json 100.90.199.68", - "response": null - } - }, "netmap": { - "SelfNode": { - "ID": 6294409699640722, - "StableID": "nMQuxDUk9r11CNTRL", - "Name": "multi-exit-router.tail78f774.ts.net.", - "User": 6294409699640722, - "Key": "nodekey:b854a0d64eba757cd3215c5bd78149cc0f927e35a2ad20342e88a15ead297f6a", - "DiscoKey": "discokey:762c82dd308809f511c6ac86dcc2642585837358fdd24958d55f16883c8e6c58", - "Addresses": ["100.105.127.107/32", "fd7a:115c:a1e0::ad37:7f6b/128"], - "AllowedIPs": ["100.105.127.107/32", "fd7a:115c:a1e0::ad37:7f6b/128", "10.33.0.0/16"], - "Endpoints": ["77.164.248.136:50766", "10.65.0.27:50766", "172.17.0.1:50766"], - "Hostinfo": { - "Hostname": "multi-exit-router", - "RoutableIPs": ["0.0.0.0/0", "::/0", "10.33.0.0/16"], - "RequestTags": ["tag:exit", "tag:router"], - "Services": [ - { "Proto": "peerapi4", "Port": 62548 }, - { "Proto": "peerapi6", "Port": 62548 }, - { "Proto": "peerapi-dns-proxy", "Port": 1 } - ] - }, - "Created": "2026-03-28T10:38:19.117098852Z", - "Tags": ["tag:exit", "tag:router"], - "PrimaryRoutes": ["10.33.0.0/16"], - "MachineAuthorized": true, - "CapMap": { - "https://tailscale.com/cap/file-sharing": null, - "https://tailscale.com/cap/is-owner": null, - "https://tailscale.com/cap/ssh": null, - "https://tailscale.com/cap/tailnet-lock": null, - "probe-udp-lifetime": null, - "ssh-behavior-v1": null, - "ssh-env-vars": null, - "store-appc-routes": null, - "tailnet-display-name": ["kratail2tid@passkey"] - }, - "ComputedName": "multi-exit-router", - "ComputedNameWithHost": "multi-exit-router" - }, - "AllCaps": [ - "https://tailscale.com/cap/tailnet-lock", - "ssh-env-vars", - "probe-udp-lifetime", - "tailnet-display-name", - "store-appc-routes", - "https://tailscale.com/cap/ssh", - "ssh-behavior-v1", - "https://tailscale.com/cap/file-sharing", - "https://tailscale.com/cap/is-owner" - ], - "NodeKey": "nodekey:b854a0d64eba757cd3215c5bd78149cc0f927e35a2ad20342e88a15ead297f6a", - "MachineKey": "mkey:91bee804809f30d07bfc29cf556844288fc3d45e0572469a3cb0799a535fda7d", "Peers": [], - "DNS": { - "Routes": { - "tail78f774.ts.net.": null, - "ts.net.": [{ "Addr": "199.247.155.53" }, { "Addr": "2620:111:8007::53" }] - }, - "Domains": ["tail78f774.ts.net"], - "Proxied": true, - "ExitNodeFilteredSet": [".ts.net", ".tailscale.net"] - }, - "PacketFilter": [], - "PacketFilterRules": null, - "SSHPolicy": { "rules": [] }, - "CollectServices": false, - "DERPMap": { - "Regions": { - "1": { - "RegionID": 1, - "RegionCode": "nyc", - "RegionName": "New York City", - "Latitude": 40.7128, - "Longitude": -74.006, - "Nodes": [ - { - "Name": "1h", - "RegionID": 1, - "HostName": "derp1h.tailscale.com", - "IPv4": "199.38.181.93", - "IPv6": "2607:f740:f::afd", - "CanPort80": true - }, - { - "Name": "1g", - "RegionID": 1, - "HostName": "derp1g.tailscale.com", - "IPv4": "209.177.145.120", - "IPv6": "2607:f740:f::3eb", - "CanPort80": true - }, - { - "Name": "1i", - "RegionID": 1, - "HostName": "derp1i.tailscale.com", - "IPv4": "199.38.181.103", - "IPv6": "2607:f740:f::e19", - "CanPort80": true - }, - { - "Name": "1f", - "RegionID": 1, - "HostName": "derp1f.tailscale.com", - "IPv4": "199.38.181.104", - "IPv6": "2607:f740:f::bc", - "CanPort80": true - } - ] - }, - "10": { - "RegionID": 10, - "RegionCode": "sea", - "RegionName": "Seattle", - "Latitude": 47.609722, - "Longitude": -122.333056, - "Nodes": [ - { - "Name": "10c", - "RegionID": 10, - "HostName": "derp10c.tailscale.com", - "IPv4": "192.73.240.121", - "IPv6": "2607:f740:14::40c", - "CanPort80": true - }, - { - "Name": "10d", - "RegionID": 10, - "HostName": "derp10d.tailscale.com", - "IPv4": "192.73.240.132", - "IPv6": "2607:f740:14::500", - "CanPort80": true - }, - { - "Name": "10b", - "RegionID": 10, - "HostName": "derp10b.tailscale.com", - "IPv4": "192.73.240.161", - "IPv6": "2607:f740:14::61c", - "CanPort80": true - } - ] - }, - "11": { - "RegionID": 11, - "RegionCode": "sao", - "RegionName": "São Paulo", - "Latitude": -23.55, - "Longitude": -46.633333, - "Nodes": [ - { - "Name": "11f", - "RegionID": 11, - "HostName": "derp11f.tailscale.com", - "IPv4": "172.237.61.197", - "IPv6": "2600:3c0d::2000:3bff:fe44:6166", - "CanPort80": true - }, - { - "Name": "11g", - "RegionID": 11, - "HostName": "derp11g.tailscale.com", - "IPv4": "172.237.61.190", - "IPv6": "2600:3c0d::2000:62ff:febe:2e67", - "CanPort80": true - }, - { - "Name": "11e", - "RegionID": 11, - "HostName": "derp11e.tailscale.com", - "IPv4": "172.237.61.194", - "IPv6": "2600:3c0d::2000:d2ff:fe43:1790", - "CanPort80": true - } - ] - }, - "12": { - "RegionID": 12, - "RegionCode": "ord", - "RegionName": "Chicago", - "Latitude": 41.881944, - "Longitude": -87.627778, - "Nodes": [ - { - "Name": "12e", - "RegionID": 12, - "HostName": "derp12e.tailscale.com", - "IPv4": "209.177.158.15", - "IPv6": "2607:f740:e::b17", - "CanPort80": true - }, - { - "Name": "12f", - "RegionID": 12, - "HostName": "derp12f.tailscale.com", - "IPv4": "199.38.182.118", - "IPv6": "2607:f740:e::4c8", - "CanPort80": true - }, - { - "Name": "12d", - "RegionID": 12, - "HostName": "derp12d.tailscale.com", - "IPv4": "209.177.158.246", - "IPv6": "2607:f740:e::811", - "CanPort80": true - } - ] - }, - "13": { - "RegionID": 13, - "RegionCode": "den", - "RegionName": "Denver", - "Latitude": 39.7392, - "Longitude": -104.9849, - "Nodes": [ - { - "Name": "13c", - "RegionID": 13, - "HostName": "derp13c.tailscale.com", - "IPv4": "192.73.242.28", - "IPv6": "2607:f740:16::5c", - "CanPort80": true - }, - { - "Name": "13d", - "RegionID": 13, - "HostName": "derp13d.tailscale.com", - "IPv4": "192.73.242.204", - "IPv6": "2607:f740:16::c23", - "CanPort80": true - }, - { - "Name": "13b", - "RegionID": 13, - "HostName": "derp13b.tailscale.com", - "IPv4": "192.73.242.187", - "IPv6": "2607:f740:16::640", - "CanPort80": true - } - ] - }, - "14": { - "RegionID": 14, - "RegionCode": "ams", - "RegionName": "Amsterdam", - "Latitude": 52.372778, - "Longitude": 4.893611, - "Nodes": [ - { - "Name": "14c", - "RegionID": 14, - "HostName": "derp14c.tailscale.com", - "IPv4": "176.58.93.147", - "IPv6": "2a00:dd80:3c::b09", - "CanPort80": true - }, - { - "Name": "14d", - "RegionID": 14, - "HostName": "derp14d.tailscale.com", - "IPv4": "176.58.93.154", - "IPv6": "2a00:dd80:3c::3d5", - "CanPort80": true - }, - { - "Name": "14b", - "RegionID": 14, - "HostName": "derp14b.tailscale.com", - "IPv4": "176.58.93.248", - "IPv6": "2a00:dd80:3c::807", - "CanPort80": true - } - ] - }, - "15": { - "RegionID": 15, - "RegionCode": "jnb", - "RegionName": "Johannesburg", - "Latitude": -26.204444, - "Longitude": 28.045556, - "Nodes": [ - { - "Name": "15c", - "RegionID": 15, - "HostName": "derp15c.tailscale.com", - "IPv4": "102.67.165.185", - "IPv6": "2c0f:edb0:0:10::b59", - "CanPort80": true - }, - { - "Name": "15d", - "RegionID": 15, - "HostName": "derp15d.tailscale.com", - "IPv4": "102.67.165.36", - "IPv6": "2c0f:edb0:0:10::599", - "CanPort80": true - }, - { - "Name": "15b", - "RegionID": 15, - "HostName": "derp15b.tailscale.com", - "IPv4": "102.67.165.90", - "IPv6": "2c0f:edb0:0:10::963", - "CanPort80": true - } - ] - }, - "16": { - "RegionID": 16, - "RegionCode": "mia", - "RegionName": "Miami", - "Latitude": 25.78, - "Longitude": -80.21, - "Nodes": [ - { - "Name": "16c", - "RegionID": 16, - "HostName": "derp16c.tailscale.com", - "IPv4": "192.73.243.229", - "IPv6": "2607:f740:17::4e4", - "CanPort80": true - }, - { - "Name": "16d", - "RegionID": 16, - "HostName": "derp16d.tailscale.com", - "IPv4": "192.73.243.141", - "IPv6": "2607:f740:17::475", - "CanPort80": true - }, - { - "Name": "16b", - "RegionID": 16, - "HostName": "derp16b.tailscale.com", - "IPv4": "192.73.243.135", - "IPv6": "2607:f740:17::476", - "CanPort80": true - } - ] - }, - "17": { - "RegionID": 17, - "RegionCode": "lax", - "RegionName": "Los Angeles", - "Latitude": 34.05, - "Longitude": -118.25, - "Nodes": [ - { - "Name": "17c", - "RegionID": 17, - "HostName": "derp17c.tailscale.com", - "IPv4": "208.111.40.12", - "IPv6": "2607:f740:c::10", - "CanPort80": true - }, - { - "Name": "17d", - "RegionID": 17, - "HostName": "derp17d.tailscale.com", - "IPv4": "208.111.40.216", - "IPv6": "2607:f740:c::e1b", - "CanPort80": true - }, - { - "Name": "17b", - "RegionID": 17, - "HostName": "derp17b.tailscale.com", - "IPv4": "192.73.244.245", - "IPv6": "2607:f740:c::646", - "CanPort80": true - } - ] - }, - "18": { - "RegionID": 18, - "RegionCode": "par", - "RegionName": "Paris", - "Latitude": 48.856667, - "Longitude": 2.352222, - "Nodes": [ - { - "Name": "18c", - "RegionID": 18, - "HostName": "derp18c.tailscale.com", - "IPv4": "176.58.90.207", - "IPv6": "2a00:dd80:3e::c19", - "CanPort80": true - }, - { - "Name": "18d", - "RegionID": 18, - "HostName": "derp18d.tailscale.com", - "IPv4": "176.58.90.104", - "IPv6": "2a00:dd80:3e::f2e", - "CanPort80": true - }, - { - "Name": "18b", - "RegionID": 18, - "HostName": "derp18b.tailscale.com", - "IPv4": "176.58.90.147", - "IPv6": "2a00:dd80:3e::363", - "CanPort80": true - } - ] - }, - "19": { - "RegionID": 19, - "RegionCode": "mad", - "RegionName": "Madrid", - "Latitude": 40.416944, - "Longitude": -3.703333, - "Nodes": [ - { - "Name": "19c", - "RegionID": 19, - "HostName": "derp19c.tailscale.com", - "IPv4": "45.159.97.61", - "IPv6": "2a00:dd80:14:10::20", - "CanPort80": true - }, - { - "Name": "19d", - "RegionID": 19, - "HostName": "derp19d.tailscale.com", - "IPv4": "45.159.97.233", - "IPv6": "2a00:dd80:14:10::34a", - "CanPort80": true - }, - { - "Name": "19b", - "RegionID": 19, - "HostName": "derp19b.tailscale.com", - "IPv4": "45.159.97.144", - "IPv6": "2a00:dd80:14:10::335", - "CanPort80": true - } - ] - }, - "2": { - "RegionID": 2, - "RegionCode": "sfo", - "RegionName": "San Francisco", - "Latitude": 37.7775, - "Longitude": -122.416389, - "Nodes": [ - { - "Name": "2e", - "RegionID": 2, - "HostName": "derp2e.tailscale.com", - "IPv4": "192.73.252.134", - "IPv6": "2607:f740:0:3f::44c", - "CanPort80": true - }, - { - "Name": "2f", - "RegionID": 2, - "HostName": "derp2f.tailscale.com", - "IPv4": "208.111.34.178", - "IPv6": "2607:f740:0:3f::f4", - "CanPort80": true - }, - { - "Name": "2d", - "RegionID": 2, - "HostName": "derp2d.tailscale.com", - "IPv4": "192.73.252.65", - "IPv6": "2607:f740:0:3f::287", - "CanPort80": true - } - ] - }, - "20": { - "RegionID": 20, - "RegionCode": "hkg", - "RegionName": "Hong Kong", - "Latitude": 22.3193, - "Longitude": 114.1694, - "Nodes": [ - { - "Name": "20c", - "RegionID": 20, - "HostName": "derp20c.tailscale.com", - "IPv4": "205.147.105.30", - "IPv6": "2403:2500:8000:1::5fb", - "CanPort80": true - }, - { - "Name": "20d", - "RegionID": 20, - "HostName": "derp20d.tailscale.com", - "IPv4": "205.147.105.78", - "IPv6": "2403:2500:8000:1::e9a", - "CanPort80": true - }, - { - "Name": "20b", - "RegionID": 20, - "HostName": "derp20b.tailscale.com", - "IPv4": "103.6.84.152", - "IPv6": "2403:2500:8000:1::ef6", - "CanPort80": true - } - ] - }, - "21": { - "RegionID": 21, - "RegionCode": "tor", - "RegionName": "Toronto", - "Latitude": 43.741667, - "Longitude": -79.373333, - "Nodes": [ - { - "Name": "21c", - "RegionID": 21, - "HostName": "derp21c.tailscale.com", - "IPv4": "162.248.221.215", - "IPv6": "2607:f740:50::f10", - "CanPort80": true - }, - { - "Name": "21d", - "RegionID": 21, - "HostName": "derp21d.tailscale.com", - "IPv4": "162.248.221.248", - "IPv6": "2607:f740:50::ca4", - "CanPort80": true - }, - { - "Name": "21b", - "RegionID": 21, - "HostName": "derp21b.tailscale.com", - "IPv4": "162.248.221.199", - "IPv6": "2607:f740:50::1d1", - "CanPort80": true - } - ] - }, - "22": { - "RegionID": 22, - "RegionCode": "waw", - "RegionName": "Warsaw", - "Latitude": 52.23, - "Longitude": 21.011111, - "Nodes": [ - { - "Name": "22c", - "RegionID": 22, - "HostName": "derp22c.tailscale.com", - "IPv4": "45.159.98.253", - "IPv6": "2a00:dd80:40:100::3f", - "CanPort80": true - }, - { - "Name": "22d", - "RegionID": 22, - "HostName": "derp22d.tailscale.com", - "IPv4": "45.159.98.145", - "IPv6": "2a00:dd80:40:100::211", - "CanPort80": true - }, - { - "Name": "22b", - "RegionID": 22, - "HostName": "derp22b.tailscale.com", - "IPv4": "45.159.98.196", - "IPv6": "2a00:dd80:40:100::316", - "CanPort80": true - } - ] - }, - "23": { - "RegionID": 23, - "RegionCode": "dbi", - "RegionName": "Dubai", - "Latitude": 25.263056, - "Longitude": 55.297222, - "Nodes": [ - { - "Name": "23c", - "RegionID": 23, - "HostName": "derp23c.tailscale.com", - "IPv4": "185.34.3.207", - "IPv6": "2a00:dd80:3f:100::a50", - "CanPort80": true - }, - { - "Name": "23d", - "RegionID": 23, - "HostName": "derp23d.tailscale.com", - "IPv4": "185.34.3.75", - "IPv6": "2a00:dd80:3f:100::97e", - "CanPort80": true - }, - { - "Name": "23b", - "RegionID": 23, - "HostName": "derp23b.tailscale.com", - "IPv4": "185.34.3.232", - "IPv6": "2a00:dd80:3f:100::76f", - "CanPort80": true - } - ] - }, - "24": { - "RegionID": 24, - "RegionCode": "hnl", - "RegionName": "Honolulu", - "Latitude": 21.306944, - "Longitude": -157.858333, - "Nodes": [ - { - "Name": "24c", - "RegionID": 24, - "HostName": "derp24c.tailscale.com", - "IPv4": "208.83.233.233", - "IPv6": "2001:19f0:c000:c591:5400:04ff:fe26:2c5f", - "CanPort80": true - }, - { - "Name": "24d", - "RegionID": 24, - "HostName": "derp24d.tailscale.com", - "IPv4": "208.72.155.133", - "IPv6": "2001:19f0:c000:c564:5400:04ff:fe26:2ba8", - "CanPort80": true - }, - { - "Name": "24b", - "RegionID": 24, - "HostName": "derp24b.tailscale.com", - "IPv4": "208.83.234.151", - "IPv6": "2001:19f0:c000:c586:5400:04ff:fe26:2ba6", - "CanPort80": true - } - ] - }, - "25": { - "RegionID": 25, - "RegionCode": "nai", - "RegionName": "Nairobi", - "Latitude": -1.286389, - "Longitude": 36.817222, - "Nodes": [ - { - "Name": "25c", - "RegionID": 25, - "HostName": "derp25c.tailscale.com", - "IPv4": "102.67.167.37", - "IPv6": "2c0f:edb0:2000:1::2c7", - "CanPort80": true - }, - { - "Name": "25d", - "RegionID": 25, - "HostName": "derp25d.tailscale.com", - "IPv4": "102.67.167.188", - "IPv6": "2c0f:edb0:2000:1::188", - "CanPort80": true - }, - { - "Name": "25b", - "RegionID": 25, - "HostName": "derp25b.tailscale.com", - "IPv4": "102.67.167.245", - "IPv6": "2c0f:edb0:2000:1::2e9", - "CanPort80": true - } - ] - }, - "26": { - "RegionID": 26, - "RegionCode": "nue", - "RegionName": "Nuremberg", - "Latitude": 49.453889, - "Longitude": 11.0775, - "Nodes": [ - { - "Name": "26c", - "RegionID": 26, - "HostName": "derp26c.tailscale.com", - "IPv4": "49.12.193.137", - "IPv6": "2a01:4f8:1c1c:5c70::1", - "CanPort80": true - }, - { - "Name": "26d", - "RegionID": 26, - "HostName": "derp26d.tailscale.com", - "IPv4": "49.13.204.141", - "IPv6": "2a01:4f8:1c0c:7d06::1", - "CanPort80": true - }, - { - "Name": "26b", - "RegionID": 26, - "HostName": "derp26b.tailscale.com", - "IPv4": "167.235.72.200", - "IPv6": "2a01:4f8:1c1c:47b6::1", - "CanPort80": true - } - ] - }, - "27": { - "RegionID": 27, - "RegionCode": "iad", - "RegionName": "Ashburn", - "Latitude": 39.03, - "Longitude": -77.471111, - "Nodes": [ - { - "Name": "27d", - "RegionID": 27, - "HostName": "derp27d.tailscale.com", - "IPv4": "178.156.152.106", - "IPv6": "2a01:4ff:f0:3c8e::1", - "CanPort80": true - }, - { - "Name": "27c", - "RegionID": 27, - "HostName": "derp27c.tailscale.com", - "IPv4": "178.156.152.91", - "IPv6": "2a01:4ff:f0:3913::1", - "CanPort80": true - }, - { - "Name": "27e", - "RegionID": 27, - "HostName": "derp27e.tailscale.com", - "IPv4": "178.156.134.232", - "IPv6": "2a01:4ff:f0:28d4::1", - "CanPort80": true - }, - { - "Name": "27b", - "RegionID": 27, - "HostName": "derp27b.tailscale.com", - "IPv4": "5.161.218.233", - "IPv6": "2a01:4ff:f0:3db9::1", - "CanPort80": true - } - ] - }, - "28": { - "RegionID": 28, - "RegionCode": "hel", - "RegionName": "Helsinki", - "Latitude": 60.170833, - "Longitude": 24.9375, - "Nodes": [ - { - "Name": "28c", - "RegionID": 28, - "HostName": "derp28c.tailscale.com", - "IPv4": "95.217.2.165", - "IPv6": "2a01:4f9:c012:cd74::1", - "CanPort80": true - }, - { - "Name": "28d", - "RegionID": 28, - "HostName": "derp28d.tailscale.com", - "IPv4": "157.180.28.32", - "IPv6": "2a01:4f9:c012:2e5b::1", - "CanPort80": true - }, - { - "Name": "28b", - "RegionID": 28, - "HostName": "derp28b.tailscale.com", - "IPv4": "65.109.143.62", - "IPv6": "2a01:4f9:c012:d55c::1", - "CanPort80": true - } - ] - }, - "3": { - "RegionID": 3, - "RegionCode": "sin", - "RegionName": "Singapore", - "Latitude": 1.3521, - "Longitude": 103.8198, - "Nodes": [ - { - "Name": "3g", - "RegionID": 3, - "HostName": "derp3g.tailscale.com", - "IPv4": "172.237.72.79", - "IPv6": "2600:3c15::2000:adff:fe08:6fab", - "CanPort80": true - }, - { - "Name": "3f", - "RegionID": 3, - "HostName": "derp3f.tailscale.com", - "IPv4": "172.237.72.8", - "IPv6": "2600:3c15::2000:53ff:fe48:a668", - "CanPort80": true - }, - { - "Name": "3h", - "RegionID": 3, - "HostName": "derp3h.tailscale.com", - "IPv4": "172.237.66.30", - "IPv6": "2600:3c15::2000:3dff:fe44:50aa", - "CanPort80": true - }, - { - "Name": "3e", - "RegionID": 3, - "HostName": "derp3e.tailscale.com", - "IPv4": "172.237.72.43", - "IPv6": "2600:3c15::2000:6cff:fee4:d799", - "CanPort80": true - } - ] - }, - "4": { - "RegionID": 4, - "RegionCode": "fra", - "RegionName": "Frankfurt", - "Latitude": 50.1109, - "Longitude": 8.6821, - "Nodes": [ - { - "Name": "4h", - "RegionID": 4, - "HostName": "derp4h.tailscale.com", - "IPv4": "185.40.234.77", - "IPv6": "2a00:dd80:20::bcf", - "CanPort80": true - }, - { - "Name": "4g", - "RegionID": 4, - "HostName": "derp4g.tailscale.com", - "IPv4": "185.40.234.113", - "IPv6": "2a00:dd80:20::8f", - "CanPort80": true - }, - { - "Name": "4i", - "RegionID": 4, - "HostName": "derp4i.tailscale.com", - "IPv4": "185.40.234.53", - "IPv6": "2a00:dd80:20::8a6", - "CanPort80": true - }, - { - "Name": "4f", - "RegionID": 4, - "HostName": "derp4f.tailscale.com", - "IPv4": "185.40.234.219", - "IPv6": "2a00:dd80:20::a25", - "CanPort80": true - } - ] - }, - "5": { - "RegionID": 5, - "RegionCode": "syd", - "RegionName": "Sydney", - "Latitude": -33.867778, - "Longitude": 151.21, - "Nodes": [ - { - "Name": "5f", - "RegionID": 5, - "HostName": "derp5f.tailscale.com", - "IPv4": "172.105.166.103", - "IPv6": "2400:8907::2000:ccff:fe1f:80da", - "CanPort80": true - }, - { - "Name": "5g", - "RegionID": 5, - "HostName": "derp5g.tailscale.com", - "IPv4": "172.105.169.57", - "IPv6": "2400:8907::2000:2fff:fea7:57f4", - "CanPort80": true - }, - { - "Name": "5e", - "RegionID": 5, - "HostName": "derp5e.tailscale.com", - "IPv4": "172.105.179.230", - "IPv6": "2400:8907::2000:ceff:fe8d:4f4e", - "CanPort80": true - } - ] - }, - "6": { - "RegionID": 6, - "RegionCode": "blr", - "RegionName": "Bengaluru", - "Latitude": 12.9716, - "Longitude": 77.5946, - "Nodes": [ - { - "Name": "6a", - "RegionID": 6, - "HostName": "derp6.tailscale.com", - "IPv4": "68.183.90.120", - "IPv6": "2400:6180:100:d0::982:d001", - "CanPort80": true - } - ] - }, - "7": { - "RegionID": 7, - "RegionCode": "tok", - "RegionName": "Tokyo", - "Latitude": 35.6764, - "Longitude": 139.65, - "Nodes": [ - { - "Name": "7g", - "RegionID": 7, - "HostName": "derp7g.tailscale.com", - "IPv4": "172.238.6.179", - "IPv6": "2600:3c18::2000:3fff:fe80:3ebd", - "CanPort80": true - }, - { - "Name": "7f", - "RegionID": 7, - "HostName": "derp7f.tailscale.com", - "IPv4": "172.238.6.34", - "IPv6": "2600:3c18::2000:acff:fe8e:3ed5", - "CanPort80": true - }, - { - "Name": "7h", - "RegionID": 7, - "HostName": "derp7h.tailscale.com", - "IPv4": "172.237.28.183", - "IPv6": "2600:3c18::2000:b1ff:fea9:4560", - "CanPort80": true - }, - { - "Name": "7e", - "RegionID": 7, - "HostName": "derp7e.tailscale.com", - "IPv4": "172.238.6.180", - "IPv6": "2600:3c18::2000:60ff:fe0f:6e83", - "STUNOnly": true, - "CanPort80": true - } - ] - }, - "8": { - "RegionID": 8, - "RegionCode": "lhr", - "RegionName": "London", - "Latitude": 51.5072, - "Longitude": 0.1276, - "Nodes": [ - { - "Name": "8f", - "RegionID": 8, - "HostName": "derp8f.tailscale.com", - "IPv4": "176.58.88.183", - "IPv6": "2a00:dd80:3a::dfa", - "CanPort80": true - }, - { - "Name": "8g", - "RegionID": 8, - "HostName": "derp8g.tailscale.com", - "IPv4": "176.58.92.254", - "IPv6": "2a00:dd80:3a::ed", - "CanPort80": true - }, - { - "Name": "8e", - "RegionID": 8, - "HostName": "derp8e.tailscale.com", - "IPv4": "176.58.92.144", - "IPv6": "2a00:dd80:3a::b33", - "CanPort80": true - } - ] - }, - "9": { - "RegionID": 9, - "RegionCode": "dfw", - "RegionName": "Dallas", - "Latitude": 32.779167, - "Longitude": -96.808889, - "Nodes": [ - { - "Name": "9e", - "RegionID": 9, - "HostName": "derp9e.tailscale.com", - "IPv4": "192.73.248.83", - "IPv6": "2607:f740:100::359", - "CanPort80": true - }, - { - "Name": "9f", - "RegionID": 9, - "HostName": "derp9f.tailscale.com", - "IPv4": "209.177.156.197", - "IPv6": "2607:f740:100::cad", - "CanPort80": true - }, - { - "Name": "9d", - "RegionID": 9, - "HostName": "derp9d.tailscale.com", - "IPv4": "209.177.156.94", - "IPv6": "2607:f740:100::c05", - "CanPort80": true - } - ] - } - } - }, - "DisplayMessages": null, - "TKAEnabled": false, - "TKAHead": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", - "Domain": "kratail2tid@passkey", - "DomainAuditLogID": "", - "UserProfiles": { - "6294409699640722": { - "ID": 6294409699640722, - "LoginName": "multi-exit-router.tail78f774.ts.net", - "DisplayName": "multi-exit-router" - } - } + "PacketFilterRules": null } }, "router-a": { - "commands": { - "packet_filter_rules": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/router-a/tailscaled.sock debug localapi POST debug-packet-filter-rules", - "packet_filter_matches": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/router-a/tailscaled.sock debug localapi POST debug-packet-filter-matches" - }, "packet_filter_rules": [ { - "SrcIPs": ["100.107.162.14", "fd7a:115c:a1e0::a237:a20e"], - "DstPorts": [{ "IP": "10.44.0.0/16", "Ports": { "First": 0, "Last": 65535 } }] + "SrcIPs": [ + "100.107.162.14", + "fd7a:115c:a1e0::a237:a20e" + ], + "DstPorts": [ + { + "IP": "10.44.0.0/16", + "Ports": { + "First": 0, + "Last": 65535 + } + } + ] } ], - "packet_filter_matches": [ - { - "IPProto": [6, 17, 1, 58], - "Srcs": ["100.107.162.14/32", "fd7a:115c:a1e0::a237:a20e/128"], - "SrcCaps": null, - "Dsts": [{ "Net": "10.44.0.0/16", "Ports": { "First": 0, "Last": 65535 } }], - "Caps": [] - } - ], - "whois": { - "100.124.195.93": { - "peer_name": "exit-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/router-a/tailscaled.sock whois --json 100.124.195.93", - "response": null - }, - "100.116.18.24": { - "peer_name": "exit-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/router-a/tailscaled.sock whois --json 100.116.18.24", - "response": null - }, - "100.85.66.106": { - "peer_name": "exit-node", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/router-a/tailscaled.sock whois --json 100.85.66.106", - "response": null - }, - "100.107.162.14": { - "peer_name": "group-a-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/router-a/tailscaled.sock whois --json 100.107.162.14", - "response": { - "Node": { - "ID": 6999435610919250, - "StableID": "nyckVfJ4fw11CNTRL", - "Name": "group-a-client.tail78f774.ts.net.", - "User": 1260082990019555, - "Key": "nodekey:802726716bd4942fceb5e444218c930040fadb082698b57ea3eb59a6a26ba20d", - "DiscoKey": "discokey:bc93c2d3b81606e44eb1c96d721e7cd73c9497aa7d3efbe2f5e0d1e2e95b190f", - "Addresses": ["100.107.162.14/32", "fd7a:115c:a1e0::a237:a20e/128"], - "AllowedIPs": ["100.107.162.14/32", "fd7a:115c:a1e0::a237:a20e/128"], - "Endpoints": ["77.164.248.136:51980", "10.65.0.27:51980", "172.17.0.1:51980"], - "HomeDERP": 14, - "Hostinfo": { - "OS": "linux", - "Hostname": "group-a-client", - "Services": [ - { "Proto": "peerapi4", "Port": 36543 }, - { "Proto": "peerapi6", "Port": 36543 } - ] - }, - "Created": "2026-03-28T10:38:04.339428828Z", - "Cap": 131, - "Tags": ["tag:group-a"], - "Online": true, - "ComputedName": "group-a-client", - "ComputedNameWithHost": "group-a-client" - }, - "UserProfile": { "ID": 1260082990019555, "LoginName": "tagged-devices", "DisplayName": "Tagged Devices" }, - "CapMap": null - } - }, - "100.77.135.18": { - "peer_name": "group-b-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/router-a/tailscaled.sock whois --json 100.77.135.18", - "response": null - }, - "100.105.127.107": { - "peer_name": "multi-exit-router", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/router-a/tailscaled.sock whois --json 100.105.127.107", - "response": null - }, - "100.65.172.123": { - "peer_name": "router-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/router-a/tailscaled.sock whois --json 100.65.172.123", - "response": null - }, - "100.92.142.61": { - "peer_name": "subnet-router", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/router-a/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/router-a/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/router-a/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/router-a/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/router-a/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/router-a/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/router-a/tailscaled.sock whois --json 100.90.199.68", - "response": null - } - }, "netmap": { - "SelfNode": { - "ID": 50590507314324, - "StableID": "n3kktkvuP111CNTRL", - "Name": "router-a.tail78f774.ts.net.", - "User": 50590507314324, - "Key": "nodekey:b4566fef38b3b2b15684fc8890f5fbaea4525b467825f57a02801969a5ed2b7b", - "DiscoKey": "discokey:368ba711a8394633b4626eb7cd8e6a2df90d8e554505dc032ea9658ceee0f731", - "Addresses": ["100.109.43.124/32", "fd7a:115c:a1e0::a537:2b7c/128"], - "AllowedIPs": ["100.109.43.124/32", "fd7a:115c:a1e0::a537:2b7c/128", "10.44.0.0/16"], - "Endpoints": ["77.164.248.136:34130", "10.65.0.27:34130", "172.17.0.1:34130"], - "Hostinfo": { - "Hostname": "router-a", - "RoutableIPs": ["10.44.0.0/16"], - "RequestTags": ["tag:router-a"], - "Services": [ - { "Proto": "peerapi4", "Port": 49439 }, - { "Proto": "peerapi6", "Port": 49439 }, - { "Proto": "peerapi-dns-proxy", "Port": 1 } - ] - }, - "Created": "2026-03-28T10:38:11.734910312Z", - "Tags": ["tag:router-a"], - "PrimaryRoutes": ["10.44.0.0/16"], - "MachineAuthorized": true, - "CapMap": { - "https://tailscale.com/cap/file-sharing": null, - "https://tailscale.com/cap/is-owner": null, - "https://tailscale.com/cap/ssh": null, - "https://tailscale.com/cap/tailnet-lock": null, - "probe-udp-lifetime": null, - "ssh-behavior-v1": null, - "ssh-env-vars": null, - "store-appc-routes": null, - "tailnet-display-name": ["kratail2tid@passkey"] - }, - "ComputedName": "router-a", - "ComputedNameWithHost": "router-a" - }, - "AllCaps": [ - "https://tailscale.com/cap/ssh", - "ssh-behavior-v1", - "ssh-env-vars", - "store-appc-routes", - "tailnet-display-name", - "https://tailscale.com/cap/tailnet-lock", - "probe-udp-lifetime", - "https://tailscale.com/cap/file-sharing", - "https://tailscale.com/cap/is-owner" - ], - "NodeKey": "nodekey:b4566fef38b3b2b15684fc8890f5fbaea4525b467825f57a02801969a5ed2b7b", - "MachineKey": "mkey:868ba8a45654990c1c153c5ce33ef50ddd8d769841335e42decda4462d1dcf4e", "Peers": [ { - "ID": 6999435610919250, - "StableID": "nyckVfJ4fw11CNTRL", "Name": "group-a-client.tail78f774.ts.net.", - "User": 1260082990019555, - "Key": "nodekey:802726716bd4942fceb5e444218c930040fadb082698b57ea3eb59a6a26ba20d", - "DiscoKey": "discokey:bc93c2d3b81606e44eb1c96d721e7cd73c9497aa7d3efbe2f5e0d1e2e95b190f", - "Addresses": ["100.107.162.14/32", "fd7a:115c:a1e0::a237:a20e/128"], - "AllowedIPs": ["100.107.162.14/32", "fd7a:115c:a1e0::a237:a20e/128"], - "Endpoints": ["77.164.248.136:51980", "10.65.0.27:51980", "172.17.0.1:51980"], - "HomeDERP": 14, - "Hostinfo": { - "OS": "linux", - "Hostname": "group-a-client", - "Services": [ - { "Proto": "peerapi4", "Port": 36543 }, - { "Proto": "peerapi6", "Port": 36543 } - ] - }, - "Created": "2026-03-28T10:38:04.339428828Z", - "Cap": 131, - "Tags": ["tag:group-a"], - "Online": true, - "ComputedName": "group-a-client", - "ComputedNameWithHost": "group-a-client" - } - ], - "DNS": { - "Routes": { - "tail78f774.ts.net.": null, - "ts.net.": [{ "Addr": "199.247.155.53" }, { "Addr": "2620:111:8007::53" }] - }, - "Domains": ["tail78f774.ts.net"], - "Proxied": true, - "ExitNodeFilteredSet": [".ts.net", ".tailscale.net"] - }, - "PacketFilter": [ - { - "IPProto": [6, 17, 1, 58], - "Srcs": ["100.107.162.14/32", "fd7a:115c:a1e0::a237:a20e/128"], - "SrcCaps": null, - "Dsts": [{ "Net": "10.44.0.0/16", "Ports": { "First": 0, "Last": 65535 } }], - "Caps": [] + "AllowedIPs": [ + "100.107.162.14/32", + "fd7a:115c:a1e0::a237:a20e/128" + ], + "PrimaryRoutes": [] } ], "PacketFilterRules": [ { - "SrcIPs": ["100.107.162.14", "fd7a:115c:a1e0::a237:a20e"], - "DstPorts": [{ "IP": "10.44.0.0/16", "Ports": { "First": 0, "Last": 65535 } }] + "SrcIPs": [ + "100.107.162.14", + "fd7a:115c:a1e0::a237:a20e" + ], + "DstPorts": [ + { + "IP": "10.44.0.0/16", + "Ports": { + "First": 0, + "Last": 65535 + } + } + ] } - ], - "SSHPolicy": { "rules": [] }, - "CollectServices": false, - "DERPMap": { - "Regions": { - "1": { - "RegionID": 1, - "RegionCode": "nyc", - "RegionName": "New York City", - "Latitude": 40.7128, - "Longitude": -74.006, - "Nodes": [ - { - "Name": "1h", - "RegionID": 1, - "HostName": "derp1h.tailscale.com", - "IPv4": "199.38.181.93", - "IPv6": "2607:f740:f::afd", - "CanPort80": true - }, - { - "Name": "1g", - "RegionID": 1, - "HostName": "derp1g.tailscale.com", - "IPv4": "209.177.145.120", - "IPv6": "2607:f740:f::3eb", - "CanPort80": true - }, - { - "Name": "1i", - "RegionID": 1, - "HostName": "derp1i.tailscale.com", - "IPv4": "199.38.181.103", - "IPv6": "2607:f740:f::e19", - "CanPort80": true - }, - { - "Name": "1f", - "RegionID": 1, - "HostName": "derp1f.tailscale.com", - "IPv4": "199.38.181.104", - "IPv6": "2607:f740:f::bc", - "CanPort80": true - } - ] - }, - "10": { - "RegionID": 10, - "RegionCode": "sea", - "RegionName": "Seattle", - "Latitude": 47.609722, - "Longitude": -122.333056, - "Nodes": [ - { - "Name": "10c", - "RegionID": 10, - "HostName": "derp10c.tailscale.com", - "IPv4": "192.73.240.121", - "IPv6": "2607:f740:14::40c", - "CanPort80": true - }, - { - "Name": "10d", - "RegionID": 10, - "HostName": "derp10d.tailscale.com", - "IPv4": "192.73.240.132", - "IPv6": "2607:f740:14::500", - "CanPort80": true - }, - { - "Name": "10b", - "RegionID": 10, - "HostName": "derp10b.tailscale.com", - "IPv4": "192.73.240.161", - "IPv6": "2607:f740:14::61c", - "CanPort80": true - } - ] - }, - "11": { - "RegionID": 11, - "RegionCode": "sao", - "RegionName": "São Paulo", - "Latitude": -23.55, - "Longitude": -46.633333, - "Nodes": [ - { - "Name": "11f", - "RegionID": 11, - "HostName": "derp11f.tailscale.com", - "IPv4": "172.237.61.197", - "IPv6": "2600:3c0d::2000:3bff:fe44:6166", - "CanPort80": true - }, - { - "Name": "11g", - "RegionID": 11, - "HostName": "derp11g.tailscale.com", - "IPv4": "172.237.61.190", - "IPv6": "2600:3c0d::2000:62ff:febe:2e67", - "CanPort80": true - }, - { - "Name": "11e", - "RegionID": 11, - "HostName": "derp11e.tailscale.com", - "IPv4": "172.237.61.194", - "IPv6": "2600:3c0d::2000:d2ff:fe43:1790", - "CanPort80": true - } - ] - }, - "12": { - "RegionID": 12, - "RegionCode": "ord", - "RegionName": "Chicago", - "Latitude": 41.881944, - "Longitude": -87.627778, - "Nodes": [ - { - "Name": "12e", - "RegionID": 12, - "HostName": "derp12e.tailscale.com", - "IPv4": "209.177.158.15", - "IPv6": "2607:f740:e::b17", - "CanPort80": true - }, - { - "Name": "12f", - "RegionID": 12, - "HostName": "derp12f.tailscale.com", - "IPv4": "199.38.182.118", - "IPv6": "2607:f740:e::4c8", - "CanPort80": true - }, - { - "Name": "12d", - "RegionID": 12, - "HostName": "derp12d.tailscale.com", - "IPv4": "209.177.158.246", - "IPv6": "2607:f740:e::811", - "CanPort80": true - } - ] - }, - "13": { - "RegionID": 13, - "RegionCode": "den", - "RegionName": "Denver", - "Latitude": 39.7392, - "Longitude": -104.9849, - "Nodes": [ - { - "Name": "13c", - "RegionID": 13, - "HostName": "derp13c.tailscale.com", - "IPv4": "192.73.242.28", - "IPv6": "2607:f740:16::5c", - "CanPort80": true - }, - { - "Name": "13d", - "RegionID": 13, - "HostName": "derp13d.tailscale.com", - "IPv4": "192.73.242.204", - "IPv6": "2607:f740:16::c23", - "CanPort80": true - }, - { - "Name": "13b", - "RegionID": 13, - "HostName": "derp13b.tailscale.com", - "IPv4": "192.73.242.187", - "IPv6": "2607:f740:16::640", - "CanPort80": true - } - ] - }, - "14": { - "RegionID": 14, - "RegionCode": "ams", - "RegionName": "Amsterdam", - "Latitude": 52.372778, - "Longitude": 4.893611, - "Nodes": [ - { - "Name": "14c", - "RegionID": 14, - "HostName": "derp14c.tailscale.com", - "IPv4": "176.58.93.147", - "IPv6": "2a00:dd80:3c::b09", - "CanPort80": true - }, - { - "Name": "14d", - "RegionID": 14, - "HostName": "derp14d.tailscale.com", - "IPv4": "176.58.93.154", - "IPv6": "2a00:dd80:3c::3d5", - "CanPort80": true - }, - { - "Name": "14b", - "RegionID": 14, - "HostName": "derp14b.tailscale.com", - "IPv4": "176.58.93.248", - "IPv6": "2a00:dd80:3c::807", - "CanPort80": true - } - ] - }, - "15": { - "RegionID": 15, - "RegionCode": "jnb", - "RegionName": "Johannesburg", - "Latitude": -26.204444, - "Longitude": 28.045556, - "Nodes": [ - { - "Name": "15c", - "RegionID": 15, - "HostName": "derp15c.tailscale.com", - "IPv4": "102.67.165.185", - "IPv6": "2c0f:edb0:0:10::b59", - "CanPort80": true - }, - { - "Name": "15d", - "RegionID": 15, - "HostName": "derp15d.tailscale.com", - "IPv4": "102.67.165.36", - "IPv6": "2c0f:edb0:0:10::599", - "CanPort80": true - }, - { - "Name": "15b", - "RegionID": 15, - "HostName": "derp15b.tailscale.com", - "IPv4": "102.67.165.90", - "IPv6": "2c0f:edb0:0:10::963", - "CanPort80": true - } - ] - }, - "16": { - "RegionID": 16, - "RegionCode": "mia", - "RegionName": "Miami", - "Latitude": 25.78, - "Longitude": -80.21, - "Nodes": [ - { - "Name": "16c", - "RegionID": 16, - "HostName": "derp16c.tailscale.com", - "IPv4": "192.73.243.229", - "IPv6": "2607:f740:17::4e4", - "CanPort80": true - }, - { - "Name": "16d", - "RegionID": 16, - "HostName": "derp16d.tailscale.com", - "IPv4": "192.73.243.141", - "IPv6": "2607:f740:17::475", - "CanPort80": true - }, - { - "Name": "16b", - "RegionID": 16, - "HostName": "derp16b.tailscale.com", - "IPv4": "192.73.243.135", - "IPv6": "2607:f740:17::476", - "CanPort80": true - } - ] - }, - "17": { - "RegionID": 17, - "RegionCode": "lax", - "RegionName": "Los Angeles", - "Latitude": 34.05, - "Longitude": -118.25, - "Nodes": [ - { - "Name": "17c", - "RegionID": 17, - "HostName": "derp17c.tailscale.com", - "IPv4": "208.111.40.12", - "IPv6": "2607:f740:c::10", - "CanPort80": true - }, - { - "Name": "17d", - "RegionID": 17, - "HostName": "derp17d.tailscale.com", - "IPv4": "208.111.40.216", - "IPv6": "2607:f740:c::e1b", - "CanPort80": true - }, - { - "Name": "17b", - "RegionID": 17, - "HostName": "derp17b.tailscale.com", - "IPv4": "192.73.244.245", - "IPv6": "2607:f740:c::646", - "CanPort80": true - } - ] - }, - "18": { - "RegionID": 18, - "RegionCode": "par", - "RegionName": "Paris", - "Latitude": 48.856667, - "Longitude": 2.352222, - "Nodes": [ - { - "Name": "18c", - "RegionID": 18, - "HostName": "derp18c.tailscale.com", - "IPv4": "176.58.90.207", - "IPv6": "2a00:dd80:3e::c19", - "CanPort80": true - }, - { - "Name": "18d", - "RegionID": 18, - "HostName": "derp18d.tailscale.com", - "IPv4": "176.58.90.104", - "IPv6": "2a00:dd80:3e::f2e", - "CanPort80": true - }, - { - "Name": "18b", - "RegionID": 18, - "HostName": "derp18b.tailscale.com", - "IPv4": "176.58.90.147", - "IPv6": "2a00:dd80:3e::363", - "CanPort80": true - } - ] - }, - "19": { - "RegionID": 19, - "RegionCode": "mad", - "RegionName": "Madrid", - "Latitude": 40.416944, - "Longitude": -3.703333, - "Nodes": [ - { - "Name": "19c", - "RegionID": 19, - "HostName": "derp19c.tailscale.com", - "IPv4": "45.159.97.61", - "IPv6": "2a00:dd80:14:10::20", - "CanPort80": true - }, - { - "Name": "19d", - "RegionID": 19, - "HostName": "derp19d.tailscale.com", - "IPv4": "45.159.97.233", - "IPv6": "2a00:dd80:14:10::34a", - "CanPort80": true - }, - { - "Name": "19b", - "RegionID": 19, - "HostName": "derp19b.tailscale.com", - "IPv4": "45.159.97.144", - "IPv6": "2a00:dd80:14:10::335", - "CanPort80": true - } - ] - }, - "2": { - "RegionID": 2, - "RegionCode": "sfo", - "RegionName": "San Francisco", - "Latitude": 37.7775, - "Longitude": -122.416389, - "Nodes": [ - { - "Name": "2e", - "RegionID": 2, - "HostName": "derp2e.tailscale.com", - "IPv4": "192.73.252.134", - "IPv6": "2607:f740:0:3f::44c", - "CanPort80": true - }, - { - "Name": "2f", - "RegionID": 2, - "HostName": "derp2f.tailscale.com", - "IPv4": "208.111.34.178", - "IPv6": "2607:f740:0:3f::f4", - "CanPort80": true - }, - { - "Name": "2d", - "RegionID": 2, - "HostName": "derp2d.tailscale.com", - "IPv4": "192.73.252.65", - "IPv6": "2607:f740:0:3f::287", - "CanPort80": true - } - ] - }, - "20": { - "RegionID": 20, - "RegionCode": "hkg", - "RegionName": "Hong Kong", - "Latitude": 22.3193, - "Longitude": 114.1694, - "Nodes": [ - { - "Name": "20c", - "RegionID": 20, - "HostName": "derp20c.tailscale.com", - "IPv4": "205.147.105.30", - "IPv6": "2403:2500:8000:1::5fb", - "CanPort80": true - }, - { - "Name": "20d", - "RegionID": 20, - "HostName": "derp20d.tailscale.com", - "IPv4": "205.147.105.78", - "IPv6": "2403:2500:8000:1::e9a", - "CanPort80": true - }, - { - "Name": "20b", - "RegionID": 20, - "HostName": "derp20b.tailscale.com", - "IPv4": "103.6.84.152", - "IPv6": "2403:2500:8000:1::ef6", - "CanPort80": true - } - ] - }, - "21": { - "RegionID": 21, - "RegionCode": "tor", - "RegionName": "Toronto", - "Latitude": 43.741667, - "Longitude": -79.373333, - "Nodes": [ - { - "Name": "21c", - "RegionID": 21, - "HostName": "derp21c.tailscale.com", - "IPv4": "162.248.221.215", - "IPv6": "2607:f740:50::f10", - "CanPort80": true - }, - { - "Name": "21d", - "RegionID": 21, - "HostName": "derp21d.tailscale.com", - "IPv4": "162.248.221.248", - "IPv6": "2607:f740:50::ca4", - "CanPort80": true - }, - { - "Name": "21b", - "RegionID": 21, - "HostName": "derp21b.tailscale.com", - "IPv4": "162.248.221.199", - "IPv6": "2607:f740:50::1d1", - "CanPort80": true - } - ] - }, - "22": { - "RegionID": 22, - "RegionCode": "waw", - "RegionName": "Warsaw", - "Latitude": 52.23, - "Longitude": 21.011111, - "Nodes": [ - { - "Name": "22c", - "RegionID": 22, - "HostName": "derp22c.tailscale.com", - "IPv4": "45.159.98.253", - "IPv6": "2a00:dd80:40:100::3f", - "CanPort80": true - }, - { - "Name": "22d", - "RegionID": 22, - "HostName": "derp22d.tailscale.com", - "IPv4": "45.159.98.145", - "IPv6": "2a00:dd80:40:100::211", - "CanPort80": true - }, - { - "Name": "22b", - "RegionID": 22, - "HostName": "derp22b.tailscale.com", - "IPv4": "45.159.98.196", - "IPv6": "2a00:dd80:40:100::316", - "CanPort80": true - } - ] - }, - "23": { - "RegionID": 23, - "RegionCode": "dbi", - "RegionName": "Dubai", - "Latitude": 25.263056, - "Longitude": 55.297222, - "Nodes": [ - { - "Name": "23c", - "RegionID": 23, - "HostName": "derp23c.tailscale.com", - "IPv4": "185.34.3.207", - "IPv6": "2a00:dd80:3f:100::a50", - "CanPort80": true - }, - { - "Name": "23d", - "RegionID": 23, - "HostName": "derp23d.tailscale.com", - "IPv4": "185.34.3.75", - "IPv6": "2a00:dd80:3f:100::97e", - "CanPort80": true - }, - { - "Name": "23b", - "RegionID": 23, - "HostName": "derp23b.tailscale.com", - "IPv4": "185.34.3.232", - "IPv6": "2a00:dd80:3f:100::76f", - "CanPort80": true - } - ] - }, - "24": { - "RegionID": 24, - "RegionCode": "hnl", - "RegionName": "Honolulu", - "Latitude": 21.306944, - "Longitude": -157.858333, - "Nodes": [ - { - "Name": "24c", - "RegionID": 24, - "HostName": "derp24c.tailscale.com", - "IPv4": "208.83.233.233", - "IPv6": "2001:19f0:c000:c591:5400:04ff:fe26:2c5f", - "CanPort80": true - }, - { - "Name": "24d", - "RegionID": 24, - "HostName": "derp24d.tailscale.com", - "IPv4": "208.72.155.133", - "IPv6": "2001:19f0:c000:c564:5400:04ff:fe26:2ba8", - "CanPort80": true - }, - { - "Name": "24b", - "RegionID": 24, - "HostName": "derp24b.tailscale.com", - "IPv4": "208.83.234.151", - "IPv6": "2001:19f0:c000:c586:5400:04ff:fe26:2ba6", - "CanPort80": true - } - ] - }, - "25": { - "RegionID": 25, - "RegionCode": "nai", - "RegionName": "Nairobi", - "Latitude": -1.286389, - "Longitude": 36.817222, - "Nodes": [ - { - "Name": "25c", - "RegionID": 25, - "HostName": "derp25c.tailscale.com", - "IPv4": "102.67.167.37", - "IPv6": "2c0f:edb0:2000:1::2c7", - "CanPort80": true - }, - { - "Name": "25d", - "RegionID": 25, - "HostName": "derp25d.tailscale.com", - "IPv4": "102.67.167.188", - "IPv6": "2c0f:edb0:2000:1::188", - "CanPort80": true - }, - { - "Name": "25b", - "RegionID": 25, - "HostName": "derp25b.tailscale.com", - "IPv4": "102.67.167.245", - "IPv6": "2c0f:edb0:2000:1::2e9", - "CanPort80": true - } - ] - }, - "26": { - "RegionID": 26, - "RegionCode": "nue", - "RegionName": "Nuremberg", - "Latitude": 49.453889, - "Longitude": 11.0775, - "Nodes": [ - { - "Name": "26c", - "RegionID": 26, - "HostName": "derp26c.tailscale.com", - "IPv4": "49.12.193.137", - "IPv6": "2a01:4f8:1c1c:5c70::1", - "CanPort80": true - }, - { - "Name": "26d", - "RegionID": 26, - "HostName": "derp26d.tailscale.com", - "IPv4": "49.13.204.141", - "IPv6": "2a01:4f8:1c0c:7d06::1", - "CanPort80": true - }, - { - "Name": "26b", - "RegionID": 26, - "HostName": "derp26b.tailscale.com", - "IPv4": "167.235.72.200", - "IPv6": "2a01:4f8:1c1c:47b6::1", - "CanPort80": true - } - ] - }, - "27": { - "RegionID": 27, - "RegionCode": "iad", - "RegionName": "Ashburn", - "Latitude": 39.03, - "Longitude": -77.471111, - "Nodes": [ - { - "Name": "27d", - "RegionID": 27, - "HostName": "derp27d.tailscale.com", - "IPv4": "178.156.152.106", - "IPv6": "2a01:4ff:f0:3c8e::1", - "CanPort80": true - }, - { - "Name": "27c", - "RegionID": 27, - "HostName": "derp27c.tailscale.com", - "IPv4": "178.156.152.91", - "IPv6": "2a01:4ff:f0:3913::1", - "CanPort80": true - }, - { - "Name": "27e", - "RegionID": 27, - "HostName": "derp27e.tailscale.com", - "IPv4": "178.156.134.232", - "IPv6": "2a01:4ff:f0:28d4::1", - "CanPort80": true - }, - { - "Name": "27b", - "RegionID": 27, - "HostName": "derp27b.tailscale.com", - "IPv4": "5.161.218.233", - "IPv6": "2a01:4ff:f0:3db9::1", - "CanPort80": true - } - ] - }, - "28": { - "RegionID": 28, - "RegionCode": "hel", - "RegionName": "Helsinki", - "Latitude": 60.170833, - "Longitude": 24.9375, - "Nodes": [ - { - "Name": "28c", - "RegionID": 28, - "HostName": "derp28c.tailscale.com", - "IPv4": "95.217.2.165", - "IPv6": "2a01:4f9:c012:cd74::1", - "CanPort80": true - }, - { - "Name": "28d", - "RegionID": 28, - "HostName": "derp28d.tailscale.com", - "IPv4": "157.180.28.32", - "IPv6": "2a01:4f9:c012:2e5b::1", - "CanPort80": true - }, - { - "Name": "28b", - "RegionID": 28, - "HostName": "derp28b.tailscale.com", - "IPv4": "65.109.143.62", - "IPv6": "2a01:4f9:c012:d55c::1", - "CanPort80": true - } - ] - }, - "3": { - "RegionID": 3, - "RegionCode": "sin", - "RegionName": "Singapore", - "Latitude": 1.3521, - "Longitude": 103.8198, - "Nodes": [ - { - "Name": "3g", - "RegionID": 3, - "HostName": "derp3g.tailscale.com", - "IPv4": "172.237.72.79", - "IPv6": "2600:3c15::2000:adff:fe08:6fab", - "CanPort80": true - }, - { - "Name": "3f", - "RegionID": 3, - "HostName": "derp3f.tailscale.com", - "IPv4": "172.237.72.8", - "IPv6": "2600:3c15::2000:53ff:fe48:a668", - "CanPort80": true - }, - { - "Name": "3h", - "RegionID": 3, - "HostName": "derp3h.tailscale.com", - "IPv4": "172.237.66.30", - "IPv6": "2600:3c15::2000:3dff:fe44:50aa", - "CanPort80": true - }, - { - "Name": "3e", - "RegionID": 3, - "HostName": "derp3e.tailscale.com", - "IPv4": "172.237.72.43", - "IPv6": "2600:3c15::2000:6cff:fee4:d799", - "CanPort80": true - } - ] - }, - "4": { - "RegionID": 4, - "RegionCode": "fra", - "RegionName": "Frankfurt", - "Latitude": 50.1109, - "Longitude": 8.6821, - "Nodes": [ - { - "Name": "4h", - "RegionID": 4, - "HostName": "derp4h.tailscale.com", - "IPv4": "185.40.234.77", - "IPv6": "2a00:dd80:20::bcf", - "CanPort80": true - }, - { - "Name": "4g", - "RegionID": 4, - "HostName": "derp4g.tailscale.com", - "IPv4": "185.40.234.113", - "IPv6": "2a00:dd80:20::8f", - "CanPort80": true - }, - { - "Name": "4i", - "RegionID": 4, - "HostName": "derp4i.tailscale.com", - "IPv4": "185.40.234.53", - "IPv6": "2a00:dd80:20::8a6", - "CanPort80": true - }, - { - "Name": "4f", - "RegionID": 4, - "HostName": "derp4f.tailscale.com", - "IPv4": "185.40.234.219", - "IPv6": "2a00:dd80:20::a25", - "CanPort80": true - } - ] - }, - "5": { - "RegionID": 5, - "RegionCode": "syd", - "RegionName": "Sydney", - "Latitude": -33.867778, - "Longitude": 151.21, - "Nodes": [ - { - "Name": "5f", - "RegionID": 5, - "HostName": "derp5f.tailscale.com", - "IPv4": "172.105.166.103", - "IPv6": "2400:8907::2000:ccff:fe1f:80da", - "CanPort80": true - }, - { - "Name": "5g", - "RegionID": 5, - "HostName": "derp5g.tailscale.com", - "IPv4": "172.105.169.57", - "IPv6": "2400:8907::2000:2fff:fea7:57f4", - "CanPort80": true - }, - { - "Name": "5e", - "RegionID": 5, - "HostName": "derp5e.tailscale.com", - "IPv4": "172.105.179.230", - "IPv6": "2400:8907::2000:ceff:fe8d:4f4e", - "CanPort80": true - } - ] - }, - "6": { - "RegionID": 6, - "RegionCode": "blr", - "RegionName": "Bengaluru", - "Latitude": 12.9716, - "Longitude": 77.5946, - "Nodes": [ - { - "Name": "6a", - "RegionID": 6, - "HostName": "derp6.tailscale.com", - "IPv4": "68.183.90.120", - "IPv6": "2400:6180:100:d0::982:d001", - "CanPort80": true - } - ] - }, - "7": { - "RegionID": 7, - "RegionCode": "tok", - "RegionName": "Tokyo", - "Latitude": 35.6764, - "Longitude": 139.65, - "Nodes": [ - { - "Name": "7g", - "RegionID": 7, - "HostName": "derp7g.tailscale.com", - "IPv4": "172.238.6.179", - "IPv6": "2600:3c18::2000:3fff:fe80:3ebd", - "CanPort80": true - }, - { - "Name": "7f", - "RegionID": 7, - "HostName": "derp7f.tailscale.com", - "IPv4": "172.238.6.34", - "IPv6": "2600:3c18::2000:acff:fe8e:3ed5", - "CanPort80": true - }, - { - "Name": "7h", - "RegionID": 7, - "HostName": "derp7h.tailscale.com", - "IPv4": "172.237.28.183", - "IPv6": "2600:3c18::2000:b1ff:fea9:4560", - "CanPort80": true - }, - { - "Name": "7e", - "RegionID": 7, - "HostName": "derp7e.tailscale.com", - "IPv4": "172.238.6.180", - "IPv6": "2600:3c18::2000:60ff:fe0f:6e83", - "STUNOnly": true, - "CanPort80": true - } - ] - }, - "8": { - "RegionID": 8, - "RegionCode": "lhr", - "RegionName": "London", - "Latitude": 51.5072, - "Longitude": 0.1276, - "Nodes": [ - { - "Name": "8f", - "RegionID": 8, - "HostName": "derp8f.tailscale.com", - "IPv4": "176.58.88.183", - "IPv6": "2a00:dd80:3a::dfa", - "CanPort80": true - }, - { - "Name": "8g", - "RegionID": 8, - "HostName": "derp8g.tailscale.com", - "IPv4": "176.58.92.254", - "IPv6": "2a00:dd80:3a::ed", - "CanPort80": true - }, - { - "Name": "8e", - "RegionID": 8, - "HostName": "derp8e.tailscale.com", - "IPv4": "176.58.92.144", - "IPv6": "2a00:dd80:3a::b33", - "CanPort80": true - } - ] - }, - "9": { - "RegionID": 9, - "RegionCode": "dfw", - "RegionName": "Dallas", - "Latitude": 32.779167, - "Longitude": -96.808889, - "Nodes": [ - { - "Name": "9e", - "RegionID": 9, - "HostName": "derp9e.tailscale.com", - "IPv4": "192.73.248.83", - "IPv6": "2607:f740:100::359", - "CanPort80": true - }, - { - "Name": "9f", - "RegionID": 9, - "HostName": "derp9f.tailscale.com", - "IPv4": "209.177.156.197", - "IPv6": "2607:f740:100::cad", - "CanPort80": true - }, - { - "Name": "9d", - "RegionID": 9, - "HostName": "derp9d.tailscale.com", - "IPv4": "209.177.156.94", - "IPv6": "2607:f740:100::c05", - "CanPort80": true - } - ] - } - } - }, - "DisplayMessages": null, - "TKAEnabled": false, - "TKAHead": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", - "Domain": "kratail2tid@passkey", - "DomainAuditLogID": "", - "UserProfiles": { - "1260082990019555": { - "ID": 1260082990019555, - "LoginName": "tagged-devices", - "DisplayName": "Tagged Devices" - }, - "50590507314324": { - "ID": 50590507314324, - "LoginName": "router-a.tail78f774.ts.net", - "DisplayName": "router-a" - } - } + ] } }, "router-b": { - "commands": { - "packet_filter_rules": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/router-b/tailscaled.sock debug localapi POST debug-packet-filter-rules", - "packet_filter_matches": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/router-b/tailscaled.sock debug localapi POST debug-packet-filter-matches" - }, "packet_filter_rules": [ { - "SrcIPs": ["100.77.135.18", "fd7a:115c:a1e0::4b37:8712"], - "DstPorts": [{ "IP": "10.55.0.0/16", "Ports": { "First": 0, "Last": 65535 } }] + "SrcIPs": [ + "100.77.135.18", + "fd7a:115c:a1e0::4b37:8712" + ], + "DstPorts": [ + { + "IP": "10.55.0.0/16", + "Ports": { + "First": 0, + "Last": 65535 + } + } + ] } ], - "packet_filter_matches": [ - { - "IPProto": [6, 17, 1, 58], - "Srcs": ["100.77.135.18/32", "fd7a:115c:a1e0::4b37:8712/128"], - "SrcCaps": null, - "Dsts": [{ "Net": "10.55.0.0/16", "Ports": { "First": 0, "Last": 65535 } }], - "Caps": [] - } - ], - "whois": { - "100.124.195.93": { - "peer_name": "exit-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/router-b/tailscaled.sock whois --json 100.124.195.93", - "response": null - }, - "100.116.18.24": { - "peer_name": "exit-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/router-b/tailscaled.sock whois --json 100.116.18.24", - "response": null - }, - "100.85.66.106": { - "peer_name": "exit-node", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/router-b/tailscaled.sock whois --json 100.85.66.106", - "response": null - }, - "100.107.162.14": { - "peer_name": "group-a-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/router-b/tailscaled.sock whois --json 100.107.162.14", - "response": null - }, - "100.77.135.18": { - "peer_name": "group-b-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/router-b/tailscaled.sock whois --json 100.77.135.18", - "response": { - "Node": { - "ID": 1008089393782498, - "StableID": "ndUwgLoZs811CNTRL", - "Name": "group-b-client.tail78f774.ts.net.", - "User": 1260082990019555, - "Key": "nodekey:ef35a655163204a08b33e09fdc24709f1e3aaa7f40de4efd5549cf014b4d8711", - "DiscoKey": "discokey:e972182cda0d0b459c91b2881624b81749a7e44390a5dde1b9bc17c1ae67715a", - "Addresses": ["100.77.135.18/32", "fd7a:115c:a1e0::4b37:8712/128"], - "AllowedIPs": ["100.77.135.18/32", "fd7a:115c:a1e0::4b37:8712/128"], - "Endpoints": ["77.164.248.136:49377", "10.65.0.27:49377", "172.17.0.1:49377"], - "HomeDERP": 14, - "Hostinfo": { - "OS": "linux", - "Hostname": "group-b-client", - "Services": [ - { "Proto": "peerapi4", "Port": 47173 }, - { "Proto": "peerapi6", "Port": 47173 } - ] - }, - "Created": "2026-03-28T10:38:08.031309668Z", - "Cap": 131, - "Tags": ["tag:group-b"], - "Online": true, - "ComputedName": "group-b-client", - "ComputedNameWithHost": "group-b-client" - }, - "UserProfile": { "ID": 1260082990019555, "LoginName": "tagged-devices", "DisplayName": "Tagged Devices" }, - "CapMap": null - } - }, - "100.105.127.107": { - "peer_name": "multi-exit-router", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/router-b/tailscaled.sock whois --json 100.105.127.107", - "response": null - }, - "100.109.43.124": { - "peer_name": "router-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/router-b/tailscaled.sock whois --json 100.109.43.124", - "response": null - }, - "100.92.142.61": { - "peer_name": "subnet-router", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/router-b/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/router-b/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/router-b/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/router-b/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/router-b/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/router-b/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/router-b/tailscaled.sock whois --json 100.90.199.68", - "response": null - } - }, "netmap": { - "SelfNode": { - "ID": 1399889648409786, - "StableID": "nPHvXBj1wB11CNTRL", - "Name": "router-b.tail78f774.ts.net.", - "User": 1399889648409786, - "Key": "nodekey:4e6d3473c516cea37bcefdf4368932c623fd91c24aee1aacc27ca8165a41ac7a", - "DiscoKey": "discokey:dd5532635b8e3ddf25186e36671c16dd17c005c8b6a6862f4b5cc4e4f459e705", - "Addresses": ["100.65.172.123/32", "fd7a:115c:a1e0::5a37:ac7c/128"], - "AllowedIPs": ["100.65.172.123/32", "fd7a:115c:a1e0::5a37:ac7c/128", "10.55.0.0/16"], - "Endpoints": ["77.164.248.136:35931", "10.65.0.27:35931", "172.17.0.1:35931"], - "Hostinfo": { - "Hostname": "router-b", - "RoutableIPs": ["10.55.0.0/16"], - "RequestTags": ["tag:router-b"], - "Services": [ - { "Proto": "peerapi4", "Port": 58804 }, - { "Proto": "peerapi6", "Port": 58804 }, - { "Proto": "peerapi-dns-proxy", "Port": 1 } - ] - }, - "Created": "2026-03-28T10:38:15.42735258Z", - "Tags": ["tag:router-b"], - "PrimaryRoutes": ["10.55.0.0/16"], - "MachineAuthorized": true, - "CapMap": { - "https://tailscale.com/cap/file-sharing": null, - "https://tailscale.com/cap/is-owner": null, - "https://tailscale.com/cap/ssh": null, - "https://tailscale.com/cap/tailnet-lock": null, - "probe-udp-lifetime": null, - "ssh-behavior-v1": null, - "ssh-env-vars": null, - "store-appc-routes": null, - "tailnet-display-name": ["kratail2tid@passkey"] - }, - "ComputedName": "router-b", - "ComputedNameWithHost": "router-b" - }, - "AllCaps": [ - "probe-udp-lifetime", - "https://tailscale.com/cap/is-owner", - "https://tailscale.com/cap/ssh", - "https://tailscale.com/cap/tailnet-lock", - "https://tailscale.com/cap/file-sharing", - "ssh-env-vars", - "tailnet-display-name", - "store-appc-routes", - "ssh-behavior-v1" - ], - "NodeKey": "nodekey:4e6d3473c516cea37bcefdf4368932c623fd91c24aee1aacc27ca8165a41ac7a", - "MachineKey": "mkey:d040ca033391d3dedae7b2ad7ec3334646cda7aeca501780bdaa37addec3c228", "Peers": [ { - "ID": 1008089393782498, - "StableID": "ndUwgLoZs811CNTRL", "Name": "group-b-client.tail78f774.ts.net.", - "User": 1260082990019555, - "Key": "nodekey:ef35a655163204a08b33e09fdc24709f1e3aaa7f40de4efd5549cf014b4d8711", - "DiscoKey": "discokey:e972182cda0d0b459c91b2881624b81749a7e44390a5dde1b9bc17c1ae67715a", - "Addresses": ["100.77.135.18/32", "fd7a:115c:a1e0::4b37:8712/128"], - "AllowedIPs": ["100.77.135.18/32", "fd7a:115c:a1e0::4b37:8712/128"], - "Endpoints": ["77.164.248.136:49377", "10.65.0.27:49377", "172.17.0.1:49377"], - "HomeDERP": 14, - "Hostinfo": { - "OS": "linux", - "Hostname": "group-b-client", - "Services": [ - { "Proto": "peerapi4", "Port": 47173 }, - { "Proto": "peerapi6", "Port": 47173 } - ] - }, - "Created": "2026-03-28T10:38:08.031309668Z", - "Cap": 131, - "Tags": ["tag:group-b"], - "Online": true, - "ComputedName": "group-b-client", - "ComputedNameWithHost": "group-b-client" - } - ], - "DNS": { - "Routes": { - "tail78f774.ts.net.": null, - "ts.net.": [{ "Addr": "199.247.155.53" }, { "Addr": "2620:111:8007::53" }] - }, - "Domains": ["tail78f774.ts.net"], - "Proxied": true, - "ExitNodeFilteredSet": [".ts.net", ".tailscale.net"] - }, - "PacketFilter": [ - { - "IPProto": [6, 17, 1, 58], - "Srcs": ["100.77.135.18/32", "fd7a:115c:a1e0::4b37:8712/128"], - "SrcCaps": null, - "Dsts": [{ "Net": "10.55.0.0/16", "Ports": { "First": 0, "Last": 65535 } }], - "Caps": [] + "AllowedIPs": [ + "100.77.135.18/32", + "fd7a:115c:a1e0::4b37:8712/128" + ], + "PrimaryRoutes": [] } ], "PacketFilterRules": [ { - "SrcIPs": ["100.77.135.18", "fd7a:115c:a1e0::4b37:8712"], - "DstPorts": [{ "IP": "10.55.0.0/16", "Ports": { "First": 0, "Last": 65535 } }] + "SrcIPs": [ + "100.77.135.18", + "fd7a:115c:a1e0::4b37:8712" + ], + "DstPorts": [ + { + "IP": "10.55.0.0/16", + "Ports": { + "First": 0, + "Last": 65535 + } + } + ] } - ], - "SSHPolicy": { "rules": [] }, - "CollectServices": false, - "DERPMap": { - "Regions": { - "1": { - "RegionID": 1, - "RegionCode": "nyc", - "RegionName": "New York City", - "Latitude": 40.7128, - "Longitude": -74.006, - "Nodes": [ - { - "Name": "1h", - "RegionID": 1, - "HostName": "derp1h.tailscale.com", - "IPv4": "199.38.181.93", - "IPv6": "2607:f740:f::afd", - "CanPort80": true - }, - { - "Name": "1g", - "RegionID": 1, - "HostName": "derp1g.tailscale.com", - "IPv4": "209.177.145.120", - "IPv6": "2607:f740:f::3eb", - "CanPort80": true - }, - { - "Name": "1i", - "RegionID": 1, - "HostName": "derp1i.tailscale.com", - "IPv4": "199.38.181.103", - "IPv6": "2607:f740:f::e19", - "CanPort80": true - }, - { - "Name": "1f", - "RegionID": 1, - "HostName": "derp1f.tailscale.com", - "IPv4": "199.38.181.104", - "IPv6": "2607:f740:f::bc", - "CanPort80": true - } - ] - }, - "10": { - "RegionID": 10, - "RegionCode": "sea", - "RegionName": "Seattle", - "Latitude": 47.609722, - "Longitude": -122.333056, - "Nodes": [ - { - "Name": "10c", - "RegionID": 10, - "HostName": "derp10c.tailscale.com", - "IPv4": "192.73.240.121", - "IPv6": "2607:f740:14::40c", - "CanPort80": true - }, - { - "Name": "10d", - "RegionID": 10, - "HostName": "derp10d.tailscale.com", - "IPv4": "192.73.240.132", - "IPv6": "2607:f740:14::500", - "CanPort80": true - }, - { - "Name": "10b", - "RegionID": 10, - "HostName": "derp10b.tailscale.com", - "IPv4": "192.73.240.161", - "IPv6": "2607:f740:14::61c", - "CanPort80": true - } - ] - }, - "11": { - "RegionID": 11, - "RegionCode": "sao", - "RegionName": "São Paulo", - "Latitude": -23.55, - "Longitude": -46.633333, - "Nodes": [ - { - "Name": "11f", - "RegionID": 11, - "HostName": "derp11f.tailscale.com", - "IPv4": "172.237.61.197", - "IPv6": "2600:3c0d::2000:3bff:fe44:6166", - "CanPort80": true - }, - { - "Name": "11g", - "RegionID": 11, - "HostName": "derp11g.tailscale.com", - "IPv4": "172.237.61.190", - "IPv6": "2600:3c0d::2000:62ff:febe:2e67", - "CanPort80": true - }, - { - "Name": "11e", - "RegionID": 11, - "HostName": "derp11e.tailscale.com", - "IPv4": "172.237.61.194", - "IPv6": "2600:3c0d::2000:d2ff:fe43:1790", - "CanPort80": true - } - ] - }, - "12": { - "RegionID": 12, - "RegionCode": "ord", - "RegionName": "Chicago", - "Latitude": 41.881944, - "Longitude": -87.627778, - "Nodes": [ - { - "Name": "12e", - "RegionID": 12, - "HostName": "derp12e.tailscale.com", - "IPv4": "209.177.158.15", - "IPv6": "2607:f740:e::b17", - "CanPort80": true - }, - { - "Name": "12f", - "RegionID": 12, - "HostName": "derp12f.tailscale.com", - "IPv4": "199.38.182.118", - "IPv6": "2607:f740:e::4c8", - "CanPort80": true - }, - { - "Name": "12d", - "RegionID": 12, - "HostName": "derp12d.tailscale.com", - "IPv4": "209.177.158.246", - "IPv6": "2607:f740:e::811", - "CanPort80": true - } - ] - }, - "13": { - "RegionID": 13, - "RegionCode": "den", - "RegionName": "Denver", - "Latitude": 39.7392, - "Longitude": -104.9849, - "Nodes": [ - { - "Name": "13c", - "RegionID": 13, - "HostName": "derp13c.tailscale.com", - "IPv4": "192.73.242.28", - "IPv6": "2607:f740:16::5c", - "CanPort80": true - }, - { - "Name": "13d", - "RegionID": 13, - "HostName": "derp13d.tailscale.com", - "IPv4": "192.73.242.204", - "IPv6": "2607:f740:16::c23", - "CanPort80": true - }, - { - "Name": "13b", - "RegionID": 13, - "HostName": "derp13b.tailscale.com", - "IPv4": "192.73.242.187", - "IPv6": "2607:f740:16::640", - "CanPort80": true - } - ] - }, - "14": { - "RegionID": 14, - "RegionCode": "ams", - "RegionName": "Amsterdam", - "Latitude": 52.372778, - "Longitude": 4.893611, - "Nodes": [ - { - "Name": "14c", - "RegionID": 14, - "HostName": "derp14c.tailscale.com", - "IPv4": "176.58.93.147", - "IPv6": "2a00:dd80:3c::b09", - "CanPort80": true - }, - { - "Name": "14d", - "RegionID": 14, - "HostName": "derp14d.tailscale.com", - "IPv4": "176.58.93.154", - "IPv6": "2a00:dd80:3c::3d5", - "CanPort80": true - }, - { - "Name": "14b", - "RegionID": 14, - "HostName": "derp14b.tailscale.com", - "IPv4": "176.58.93.248", - "IPv6": "2a00:dd80:3c::807", - "CanPort80": true - } - ] - }, - "15": { - "RegionID": 15, - "RegionCode": "jnb", - "RegionName": "Johannesburg", - "Latitude": -26.204444, - "Longitude": 28.045556, - "Nodes": [ - { - "Name": "15c", - "RegionID": 15, - "HostName": "derp15c.tailscale.com", - "IPv4": "102.67.165.185", - "IPv6": "2c0f:edb0:0:10::b59", - "CanPort80": true - }, - { - "Name": "15d", - "RegionID": 15, - "HostName": "derp15d.tailscale.com", - "IPv4": "102.67.165.36", - "IPv6": "2c0f:edb0:0:10::599", - "CanPort80": true - }, - { - "Name": "15b", - "RegionID": 15, - "HostName": "derp15b.tailscale.com", - "IPv4": "102.67.165.90", - "IPv6": "2c0f:edb0:0:10::963", - "CanPort80": true - } - ] - }, - "16": { - "RegionID": 16, - "RegionCode": "mia", - "RegionName": "Miami", - "Latitude": 25.78, - "Longitude": -80.21, - "Nodes": [ - { - "Name": "16c", - "RegionID": 16, - "HostName": "derp16c.tailscale.com", - "IPv4": "192.73.243.229", - "IPv6": "2607:f740:17::4e4", - "CanPort80": true - }, - { - "Name": "16d", - "RegionID": 16, - "HostName": "derp16d.tailscale.com", - "IPv4": "192.73.243.141", - "IPv6": "2607:f740:17::475", - "CanPort80": true - }, - { - "Name": "16b", - "RegionID": 16, - "HostName": "derp16b.tailscale.com", - "IPv4": "192.73.243.135", - "IPv6": "2607:f740:17::476", - "CanPort80": true - } - ] - }, - "17": { - "RegionID": 17, - "RegionCode": "lax", - "RegionName": "Los Angeles", - "Latitude": 34.05, - "Longitude": -118.25, - "Nodes": [ - { - "Name": "17c", - "RegionID": 17, - "HostName": "derp17c.tailscale.com", - "IPv4": "208.111.40.12", - "IPv6": "2607:f740:c::10", - "CanPort80": true - }, - { - "Name": "17d", - "RegionID": 17, - "HostName": "derp17d.tailscale.com", - "IPv4": "208.111.40.216", - "IPv6": "2607:f740:c::e1b", - "CanPort80": true - }, - { - "Name": "17b", - "RegionID": 17, - "HostName": "derp17b.tailscale.com", - "IPv4": "192.73.244.245", - "IPv6": "2607:f740:c::646", - "CanPort80": true - } - ] - }, - "18": { - "RegionID": 18, - "RegionCode": "par", - "RegionName": "Paris", - "Latitude": 48.856667, - "Longitude": 2.352222, - "Nodes": [ - { - "Name": "18c", - "RegionID": 18, - "HostName": "derp18c.tailscale.com", - "IPv4": "176.58.90.207", - "IPv6": "2a00:dd80:3e::c19", - "CanPort80": true - }, - { - "Name": "18d", - "RegionID": 18, - "HostName": "derp18d.tailscale.com", - "IPv4": "176.58.90.104", - "IPv6": "2a00:dd80:3e::f2e", - "CanPort80": true - }, - { - "Name": "18b", - "RegionID": 18, - "HostName": "derp18b.tailscale.com", - "IPv4": "176.58.90.147", - "IPv6": "2a00:dd80:3e::363", - "CanPort80": true - } - ] - }, - "19": { - "RegionID": 19, - "RegionCode": "mad", - "RegionName": "Madrid", - "Latitude": 40.416944, - "Longitude": -3.703333, - "Nodes": [ - { - "Name": "19c", - "RegionID": 19, - "HostName": "derp19c.tailscale.com", - "IPv4": "45.159.97.61", - "IPv6": "2a00:dd80:14:10::20", - "CanPort80": true - }, - { - "Name": "19d", - "RegionID": 19, - "HostName": "derp19d.tailscale.com", - "IPv4": "45.159.97.233", - "IPv6": "2a00:dd80:14:10::34a", - "CanPort80": true - }, - { - "Name": "19b", - "RegionID": 19, - "HostName": "derp19b.tailscale.com", - "IPv4": "45.159.97.144", - "IPv6": "2a00:dd80:14:10::335", - "CanPort80": true - } - ] - }, - "2": { - "RegionID": 2, - "RegionCode": "sfo", - "RegionName": "San Francisco", - "Latitude": 37.7775, - "Longitude": -122.416389, - "Nodes": [ - { - "Name": "2e", - "RegionID": 2, - "HostName": "derp2e.tailscale.com", - "IPv4": "192.73.252.134", - "IPv6": "2607:f740:0:3f::44c", - "CanPort80": true - }, - { - "Name": "2f", - "RegionID": 2, - "HostName": "derp2f.tailscale.com", - "IPv4": "208.111.34.178", - "IPv6": "2607:f740:0:3f::f4", - "CanPort80": true - }, - { - "Name": "2d", - "RegionID": 2, - "HostName": "derp2d.tailscale.com", - "IPv4": "192.73.252.65", - "IPv6": "2607:f740:0:3f::287", - "CanPort80": true - } - ] - }, - "20": { - "RegionID": 20, - "RegionCode": "hkg", - "RegionName": "Hong Kong", - "Latitude": 22.3193, - "Longitude": 114.1694, - "Nodes": [ - { - "Name": "20c", - "RegionID": 20, - "HostName": "derp20c.tailscale.com", - "IPv4": "205.147.105.30", - "IPv6": "2403:2500:8000:1::5fb", - "CanPort80": true - }, - { - "Name": "20d", - "RegionID": 20, - "HostName": "derp20d.tailscale.com", - "IPv4": "205.147.105.78", - "IPv6": "2403:2500:8000:1::e9a", - "CanPort80": true - }, - { - "Name": "20b", - "RegionID": 20, - "HostName": "derp20b.tailscale.com", - "IPv4": "103.6.84.152", - "IPv6": "2403:2500:8000:1::ef6", - "CanPort80": true - } - ] - }, - "21": { - "RegionID": 21, - "RegionCode": "tor", - "RegionName": "Toronto", - "Latitude": 43.741667, - "Longitude": -79.373333, - "Nodes": [ - { - "Name": "21c", - "RegionID": 21, - "HostName": "derp21c.tailscale.com", - "IPv4": "162.248.221.215", - "IPv6": "2607:f740:50::f10", - "CanPort80": true - }, - { - "Name": "21d", - "RegionID": 21, - "HostName": "derp21d.tailscale.com", - "IPv4": "162.248.221.248", - "IPv6": "2607:f740:50::ca4", - "CanPort80": true - }, - { - "Name": "21b", - "RegionID": 21, - "HostName": "derp21b.tailscale.com", - "IPv4": "162.248.221.199", - "IPv6": "2607:f740:50::1d1", - "CanPort80": true - } - ] - }, - "22": { - "RegionID": 22, - "RegionCode": "waw", - "RegionName": "Warsaw", - "Latitude": 52.23, - "Longitude": 21.011111, - "Nodes": [ - { - "Name": "22c", - "RegionID": 22, - "HostName": "derp22c.tailscale.com", - "IPv4": "45.159.98.253", - "IPv6": "2a00:dd80:40:100::3f", - "CanPort80": true - }, - { - "Name": "22d", - "RegionID": 22, - "HostName": "derp22d.tailscale.com", - "IPv4": "45.159.98.145", - "IPv6": "2a00:dd80:40:100::211", - "CanPort80": true - }, - { - "Name": "22b", - "RegionID": 22, - "HostName": "derp22b.tailscale.com", - "IPv4": "45.159.98.196", - "IPv6": "2a00:dd80:40:100::316", - "CanPort80": true - } - ] - }, - "23": { - "RegionID": 23, - "RegionCode": "dbi", - "RegionName": "Dubai", - "Latitude": 25.263056, - "Longitude": 55.297222, - "Nodes": [ - { - "Name": "23c", - "RegionID": 23, - "HostName": "derp23c.tailscale.com", - "IPv4": "185.34.3.207", - "IPv6": "2a00:dd80:3f:100::a50", - "CanPort80": true - }, - { - "Name": "23d", - "RegionID": 23, - "HostName": "derp23d.tailscale.com", - "IPv4": "185.34.3.75", - "IPv6": "2a00:dd80:3f:100::97e", - "CanPort80": true - }, - { - "Name": "23b", - "RegionID": 23, - "HostName": "derp23b.tailscale.com", - "IPv4": "185.34.3.232", - "IPv6": "2a00:dd80:3f:100::76f", - "CanPort80": true - } - ] - }, - "24": { - "RegionID": 24, - "RegionCode": "hnl", - "RegionName": "Honolulu", - "Latitude": 21.306944, - "Longitude": -157.858333, - "Nodes": [ - { - "Name": "24c", - "RegionID": 24, - "HostName": "derp24c.tailscale.com", - "IPv4": "208.83.233.233", - "IPv6": "2001:19f0:c000:c591:5400:04ff:fe26:2c5f", - "CanPort80": true - }, - { - "Name": "24d", - "RegionID": 24, - "HostName": "derp24d.tailscale.com", - "IPv4": "208.72.155.133", - "IPv6": "2001:19f0:c000:c564:5400:04ff:fe26:2ba8", - "CanPort80": true - }, - { - "Name": "24b", - "RegionID": 24, - "HostName": "derp24b.tailscale.com", - "IPv4": "208.83.234.151", - "IPv6": "2001:19f0:c000:c586:5400:04ff:fe26:2ba6", - "CanPort80": true - } - ] - }, - "25": { - "RegionID": 25, - "RegionCode": "nai", - "RegionName": "Nairobi", - "Latitude": -1.286389, - "Longitude": 36.817222, - "Nodes": [ - { - "Name": "25c", - "RegionID": 25, - "HostName": "derp25c.tailscale.com", - "IPv4": "102.67.167.37", - "IPv6": "2c0f:edb0:2000:1::2c7", - "CanPort80": true - }, - { - "Name": "25d", - "RegionID": 25, - "HostName": "derp25d.tailscale.com", - "IPv4": "102.67.167.188", - "IPv6": "2c0f:edb0:2000:1::188", - "CanPort80": true - }, - { - "Name": "25b", - "RegionID": 25, - "HostName": "derp25b.tailscale.com", - "IPv4": "102.67.167.245", - "IPv6": "2c0f:edb0:2000:1::2e9", - "CanPort80": true - } - ] - }, - "26": { - "RegionID": 26, - "RegionCode": "nue", - "RegionName": "Nuremberg", - "Latitude": 49.453889, - "Longitude": 11.0775, - "Nodes": [ - { - "Name": "26c", - "RegionID": 26, - "HostName": "derp26c.tailscale.com", - "IPv4": "49.12.193.137", - "IPv6": "2a01:4f8:1c1c:5c70::1", - "CanPort80": true - }, - { - "Name": "26d", - "RegionID": 26, - "HostName": "derp26d.tailscale.com", - "IPv4": "49.13.204.141", - "IPv6": "2a01:4f8:1c0c:7d06::1", - "CanPort80": true - }, - { - "Name": "26b", - "RegionID": 26, - "HostName": "derp26b.tailscale.com", - "IPv4": "167.235.72.200", - "IPv6": "2a01:4f8:1c1c:47b6::1", - "CanPort80": true - } - ] - }, - "27": { - "RegionID": 27, - "RegionCode": "iad", - "RegionName": "Ashburn", - "Latitude": 39.03, - "Longitude": -77.471111, - "Nodes": [ - { - "Name": "27d", - "RegionID": 27, - "HostName": "derp27d.tailscale.com", - "IPv4": "178.156.152.106", - "IPv6": "2a01:4ff:f0:3c8e::1", - "CanPort80": true - }, - { - "Name": "27c", - "RegionID": 27, - "HostName": "derp27c.tailscale.com", - "IPv4": "178.156.152.91", - "IPv6": "2a01:4ff:f0:3913::1", - "CanPort80": true - }, - { - "Name": "27e", - "RegionID": 27, - "HostName": "derp27e.tailscale.com", - "IPv4": "178.156.134.232", - "IPv6": "2a01:4ff:f0:28d4::1", - "CanPort80": true - }, - { - "Name": "27b", - "RegionID": 27, - "HostName": "derp27b.tailscale.com", - "IPv4": "5.161.218.233", - "IPv6": "2a01:4ff:f0:3db9::1", - "CanPort80": true - } - ] - }, - "28": { - "RegionID": 28, - "RegionCode": "hel", - "RegionName": "Helsinki", - "Latitude": 60.170833, - "Longitude": 24.9375, - "Nodes": [ - { - "Name": "28c", - "RegionID": 28, - "HostName": "derp28c.tailscale.com", - "IPv4": "95.217.2.165", - "IPv6": "2a01:4f9:c012:cd74::1", - "CanPort80": true - }, - { - "Name": "28d", - "RegionID": 28, - "HostName": "derp28d.tailscale.com", - "IPv4": "157.180.28.32", - "IPv6": "2a01:4f9:c012:2e5b::1", - "CanPort80": true - }, - { - "Name": "28b", - "RegionID": 28, - "HostName": "derp28b.tailscale.com", - "IPv4": "65.109.143.62", - "IPv6": "2a01:4f9:c012:d55c::1", - "CanPort80": true - } - ] - }, - "3": { - "RegionID": 3, - "RegionCode": "sin", - "RegionName": "Singapore", - "Latitude": 1.3521, - "Longitude": 103.8198, - "Nodes": [ - { - "Name": "3g", - "RegionID": 3, - "HostName": "derp3g.tailscale.com", - "IPv4": "172.237.72.79", - "IPv6": "2600:3c15::2000:adff:fe08:6fab", - "CanPort80": true - }, - { - "Name": "3f", - "RegionID": 3, - "HostName": "derp3f.tailscale.com", - "IPv4": "172.237.72.8", - "IPv6": "2600:3c15::2000:53ff:fe48:a668", - "CanPort80": true - }, - { - "Name": "3h", - "RegionID": 3, - "HostName": "derp3h.tailscale.com", - "IPv4": "172.237.66.30", - "IPv6": "2600:3c15::2000:3dff:fe44:50aa", - "CanPort80": true - }, - { - "Name": "3e", - "RegionID": 3, - "HostName": "derp3e.tailscale.com", - "IPv4": "172.237.72.43", - "IPv6": "2600:3c15::2000:6cff:fee4:d799", - "CanPort80": true - } - ] - }, - "4": { - "RegionID": 4, - "RegionCode": "fra", - "RegionName": "Frankfurt", - "Latitude": 50.1109, - "Longitude": 8.6821, - "Nodes": [ - { - "Name": "4h", - "RegionID": 4, - "HostName": "derp4h.tailscale.com", - "IPv4": "185.40.234.77", - "IPv6": "2a00:dd80:20::bcf", - "CanPort80": true - }, - { - "Name": "4g", - "RegionID": 4, - "HostName": "derp4g.tailscale.com", - "IPv4": "185.40.234.113", - "IPv6": "2a00:dd80:20::8f", - "CanPort80": true - }, - { - "Name": "4i", - "RegionID": 4, - "HostName": "derp4i.tailscale.com", - "IPv4": "185.40.234.53", - "IPv6": "2a00:dd80:20::8a6", - "CanPort80": true - }, - { - "Name": "4f", - "RegionID": 4, - "HostName": "derp4f.tailscale.com", - "IPv4": "185.40.234.219", - "IPv6": "2a00:dd80:20::a25", - "CanPort80": true - } - ] - }, - "5": { - "RegionID": 5, - "RegionCode": "syd", - "RegionName": "Sydney", - "Latitude": -33.867778, - "Longitude": 151.21, - "Nodes": [ - { - "Name": "5f", - "RegionID": 5, - "HostName": "derp5f.tailscale.com", - "IPv4": "172.105.166.103", - "IPv6": "2400:8907::2000:ccff:fe1f:80da", - "CanPort80": true - }, - { - "Name": "5g", - "RegionID": 5, - "HostName": "derp5g.tailscale.com", - "IPv4": "172.105.169.57", - "IPv6": "2400:8907::2000:2fff:fea7:57f4", - "CanPort80": true - }, - { - "Name": "5e", - "RegionID": 5, - "HostName": "derp5e.tailscale.com", - "IPv4": "172.105.179.230", - "IPv6": "2400:8907::2000:ceff:fe8d:4f4e", - "CanPort80": true - } - ] - }, - "6": { - "RegionID": 6, - "RegionCode": "blr", - "RegionName": "Bengaluru", - "Latitude": 12.9716, - "Longitude": 77.5946, - "Nodes": [ - { - "Name": "6a", - "RegionID": 6, - "HostName": "derp6.tailscale.com", - "IPv4": "68.183.90.120", - "IPv6": "2400:6180:100:d0::982:d001", - "CanPort80": true - } - ] - }, - "7": { - "RegionID": 7, - "RegionCode": "tok", - "RegionName": "Tokyo", - "Latitude": 35.6764, - "Longitude": 139.65, - "Nodes": [ - { - "Name": "7g", - "RegionID": 7, - "HostName": "derp7g.tailscale.com", - "IPv4": "172.238.6.179", - "IPv6": "2600:3c18::2000:3fff:fe80:3ebd", - "CanPort80": true - }, - { - "Name": "7f", - "RegionID": 7, - "HostName": "derp7f.tailscale.com", - "IPv4": "172.238.6.34", - "IPv6": "2600:3c18::2000:acff:fe8e:3ed5", - "CanPort80": true - }, - { - "Name": "7h", - "RegionID": 7, - "HostName": "derp7h.tailscale.com", - "IPv4": "172.237.28.183", - "IPv6": "2600:3c18::2000:b1ff:fea9:4560", - "CanPort80": true - }, - { - "Name": "7e", - "RegionID": 7, - "HostName": "derp7e.tailscale.com", - "IPv4": "172.238.6.180", - "IPv6": "2600:3c18::2000:60ff:fe0f:6e83", - "STUNOnly": true, - "CanPort80": true - } - ] - }, - "8": { - "RegionID": 8, - "RegionCode": "lhr", - "RegionName": "London", - "Latitude": 51.5072, - "Longitude": 0.1276, - "Nodes": [ - { - "Name": "8f", - "RegionID": 8, - "HostName": "derp8f.tailscale.com", - "IPv4": "176.58.88.183", - "IPv6": "2a00:dd80:3a::dfa", - "CanPort80": true - }, - { - "Name": "8g", - "RegionID": 8, - "HostName": "derp8g.tailscale.com", - "IPv4": "176.58.92.254", - "IPv6": "2a00:dd80:3a::ed", - "CanPort80": true - }, - { - "Name": "8e", - "RegionID": 8, - "HostName": "derp8e.tailscale.com", - "IPv4": "176.58.92.144", - "IPv6": "2a00:dd80:3a::b33", - "CanPort80": true - } - ] - }, - "9": { - "RegionID": 9, - "RegionCode": "dfw", - "RegionName": "Dallas", - "Latitude": 32.779167, - "Longitude": -96.808889, - "Nodes": [ - { - "Name": "9e", - "RegionID": 9, - "HostName": "derp9e.tailscale.com", - "IPv4": "192.73.248.83", - "IPv6": "2607:f740:100::359", - "CanPort80": true - }, - { - "Name": "9f", - "RegionID": 9, - "HostName": "derp9f.tailscale.com", - "IPv4": "209.177.156.197", - "IPv6": "2607:f740:100::cad", - "CanPort80": true - }, - { - "Name": "9d", - "RegionID": 9, - "HostName": "derp9d.tailscale.com", - "IPv4": "209.177.156.94", - "IPv6": "2607:f740:100::c05", - "CanPort80": true - } - ] - } - } - }, - "DisplayMessages": null, - "TKAEnabled": false, - "TKAHead": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", - "Domain": "kratail2tid@passkey", - "DomainAuditLogID": "", - "UserProfiles": { - "1260082990019555": { - "ID": 1260082990019555, - "LoginName": "tagged-devices", - "DisplayName": "Tagged Devices" - }, - "1399889648409786": { - "ID": 1399889648409786, - "LoginName": "router-b.tail78f774.ts.net", - "DisplayName": "router-b" - } - } + ] } }, "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.124.195.93": { - "peer_name": "exit-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/subnet-router/tailscaled.sock whois --json 100.124.195.93", - "response": null - }, - "100.116.18.24": { - "peer_name": "exit-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/subnet-router/tailscaled.sock whois --json 100.116.18.24", - "response": null - }, - "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.107.162.14": { - "peer_name": "group-a-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/subnet-router/tailscaled.sock whois --json 100.107.162.14", - "response": null - }, - "100.77.135.18": { - "peer_name": "group-b-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/subnet-router/tailscaled.sock whois --json 100.77.135.18", - "response": null - }, - "100.105.127.107": { - "peer_name": "multi-exit-router", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/subnet-router/tailscaled.sock whois --json 100.105.127.107", - "response": null - }, - "100.109.43.124": { - "peer_name": "router-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/subnet-router/tailscaled.sock whois --json 100.109.43.124", - "response": null - }, - "100.65.172.123": { - "peer_name": "router-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/subnet-router/tailscaled.sock whois --json 100.65.172.123", - "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 - } - }, "netmap": { - "SelfNode": { - "ID": 7489538288452506, - "StableID": "nTPEqJU2V121CNTRL", - "Name": "subnet-router.tail78f774.ts.net.", - "User": 7489538288452506, - "Key": "nodekey:887ae2351c09c3b952f1f42bdac4095ec396ebf15824a746e4193c003e9c8e3c", - "DiscoKey": "discokey:9e3167ceaf53735a2fcaa7d3a85ad3a6118274deb448326d594849275014cc56", - "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:58597", "10.65.0.27:58597", "172.17.0.1:58597"], - "Hostinfo": { - "Hostname": "subnet-router", - "RoutableIPs": ["10.33.0.0/16"], - "RequestTags": ["tag:router"], - "Services": [ - { "Proto": "peerapi4", "Port": 63250 }, - { "Proto": "peerapi6", "Port": 63250 }, - { "Proto": "peerapi-dns-proxy", "Port": 1 } - ] - }, - "Created": "2026-02-23T00:13:15.731478784Z", - "Tags": ["tag:router"], - "MachineAuthorized": true, - "CapMap": { - "https://tailscale.com/cap/file-sharing": null, - "https://tailscale.com/cap/is-owner": null, - "https://tailscale.com/cap/ssh": null, - "https://tailscale.com/cap/tailnet-lock": null, - "probe-udp-lifetime": null, - "ssh-behavior-v1": null, - "ssh-env-vars": null, - "store-appc-routes": null, - "tailnet-display-name": ["kratail2tid@passkey"] - }, - "ComputedName": "subnet-router", - "ComputedNameWithHost": "subnet-router" - }, - "AllCaps": [ - "ssh-behavior-v1", - "https://tailscale.com/cap/is-owner", - "probe-udp-lifetime", - "store-appc-routes", - "https://tailscale.com/cap/file-sharing", - "ssh-env-vars", - "https://tailscale.com/cap/ssh", - "https://tailscale.com/cap/tailnet-lock", - "tailnet-display-name" - ], - "NodeKey": "nodekey:887ae2351c09c3b952f1f42bdac4095ec396ebf15824a746e4193c003e9c8e3c", - "MachineKey": "mkey:324efa54cc51a7b4f266f6a236904c755d32b6e547a76ad3c1d1e9d348de682a", "Peers": [], - "DNS": { - "Routes": { - "tail78f774.ts.net.": null, - "ts.net.": [{ "Addr": "199.247.155.53" }, { "Addr": "2620:111:8007::53" }] - }, - "Domains": ["tail78f774.ts.net"], - "Proxied": true, - "ExitNodeFilteredSet": [".ts.net", ".tailscale.net"] - }, - "PacketFilter": [], - "PacketFilterRules": null, - "SSHPolicy": { "rules": [] }, - "CollectServices": false, - "DERPMap": { - "Regions": { - "1": { - "RegionID": 1, - "RegionCode": "nyc", - "RegionName": "New York City", - "Latitude": 40.7128, - "Longitude": -74.006, - "Nodes": [ - { - "Name": "1h", - "RegionID": 1, - "HostName": "derp1h.tailscale.com", - "IPv4": "199.38.181.93", - "IPv6": "2607:f740:f::afd", - "CanPort80": true - }, - { - "Name": "1g", - "RegionID": 1, - "HostName": "derp1g.tailscale.com", - "IPv4": "209.177.145.120", - "IPv6": "2607:f740:f::3eb", - "CanPort80": true - }, - { - "Name": "1i", - "RegionID": 1, - "HostName": "derp1i.tailscale.com", - "IPv4": "199.38.181.103", - "IPv6": "2607:f740:f::e19", - "CanPort80": true - }, - { - "Name": "1f", - "RegionID": 1, - "HostName": "derp1f.tailscale.com", - "IPv4": "199.38.181.104", - "IPv6": "2607:f740:f::bc", - "CanPort80": true - } - ] - }, - "10": { - "RegionID": 10, - "RegionCode": "sea", - "RegionName": "Seattle", - "Latitude": 47.609722, - "Longitude": -122.333056, - "Nodes": [ - { - "Name": "10c", - "RegionID": 10, - "HostName": "derp10c.tailscale.com", - "IPv4": "192.73.240.121", - "IPv6": "2607:f740:14::40c", - "CanPort80": true - }, - { - "Name": "10d", - "RegionID": 10, - "HostName": "derp10d.tailscale.com", - "IPv4": "192.73.240.132", - "IPv6": "2607:f740:14::500", - "CanPort80": true - }, - { - "Name": "10b", - "RegionID": 10, - "HostName": "derp10b.tailscale.com", - "IPv4": "192.73.240.161", - "IPv6": "2607:f740:14::61c", - "CanPort80": true - } - ] - }, - "11": { - "RegionID": 11, - "RegionCode": "sao", - "RegionName": "São Paulo", - "Latitude": -23.55, - "Longitude": -46.633333, - "Nodes": [ - { - "Name": "11f", - "RegionID": 11, - "HostName": "derp11f.tailscale.com", - "IPv4": "172.237.61.197", - "IPv6": "2600:3c0d::2000:3bff:fe44:6166", - "CanPort80": true - }, - { - "Name": "11g", - "RegionID": 11, - "HostName": "derp11g.tailscale.com", - "IPv4": "172.237.61.190", - "IPv6": "2600:3c0d::2000:62ff:febe:2e67", - "CanPort80": true - }, - { - "Name": "11e", - "RegionID": 11, - "HostName": "derp11e.tailscale.com", - "IPv4": "172.237.61.194", - "IPv6": "2600:3c0d::2000:d2ff:fe43:1790", - "CanPort80": true - } - ] - }, - "12": { - "RegionID": 12, - "RegionCode": "ord", - "RegionName": "Chicago", - "Latitude": 41.881944, - "Longitude": -87.627778, - "Nodes": [ - { - "Name": "12e", - "RegionID": 12, - "HostName": "derp12e.tailscale.com", - "IPv4": "209.177.158.15", - "IPv6": "2607:f740:e::b17", - "CanPort80": true - }, - { - "Name": "12f", - "RegionID": 12, - "HostName": "derp12f.tailscale.com", - "IPv4": "199.38.182.118", - "IPv6": "2607:f740:e::4c8", - "CanPort80": true - }, - { - "Name": "12d", - "RegionID": 12, - "HostName": "derp12d.tailscale.com", - "IPv4": "209.177.158.246", - "IPv6": "2607:f740:e::811", - "CanPort80": true - } - ] - }, - "13": { - "RegionID": 13, - "RegionCode": "den", - "RegionName": "Denver", - "Latitude": 39.7392, - "Longitude": -104.9849, - "Nodes": [ - { - "Name": "13c", - "RegionID": 13, - "HostName": "derp13c.tailscale.com", - "IPv4": "192.73.242.28", - "IPv6": "2607:f740:16::5c", - "CanPort80": true - }, - { - "Name": "13d", - "RegionID": 13, - "HostName": "derp13d.tailscale.com", - "IPv4": "192.73.242.204", - "IPv6": "2607:f740:16::c23", - "CanPort80": true - }, - { - "Name": "13b", - "RegionID": 13, - "HostName": "derp13b.tailscale.com", - "IPv4": "192.73.242.187", - "IPv6": "2607:f740:16::640", - "CanPort80": true - } - ] - }, - "14": { - "RegionID": 14, - "RegionCode": "ams", - "RegionName": "Amsterdam", - "Latitude": 52.372778, - "Longitude": 4.893611, - "Nodes": [ - { - "Name": "14c", - "RegionID": 14, - "HostName": "derp14c.tailscale.com", - "IPv4": "176.58.93.147", - "IPv6": "2a00:dd80:3c::b09", - "CanPort80": true - }, - { - "Name": "14d", - "RegionID": 14, - "HostName": "derp14d.tailscale.com", - "IPv4": "176.58.93.154", - "IPv6": "2a00:dd80:3c::3d5", - "CanPort80": true - }, - { - "Name": "14b", - "RegionID": 14, - "HostName": "derp14b.tailscale.com", - "IPv4": "176.58.93.248", - "IPv6": "2a00:dd80:3c::807", - "CanPort80": true - } - ] - }, - "15": { - "RegionID": 15, - "RegionCode": "jnb", - "RegionName": "Johannesburg", - "Latitude": -26.204444, - "Longitude": 28.045556, - "Nodes": [ - { - "Name": "15c", - "RegionID": 15, - "HostName": "derp15c.tailscale.com", - "IPv4": "102.67.165.185", - "IPv6": "2c0f:edb0:0:10::b59", - "CanPort80": true - }, - { - "Name": "15d", - "RegionID": 15, - "HostName": "derp15d.tailscale.com", - "IPv4": "102.67.165.36", - "IPv6": "2c0f:edb0:0:10::599", - "CanPort80": true - }, - { - "Name": "15b", - "RegionID": 15, - "HostName": "derp15b.tailscale.com", - "IPv4": "102.67.165.90", - "IPv6": "2c0f:edb0:0:10::963", - "CanPort80": true - } - ] - }, - "16": { - "RegionID": 16, - "RegionCode": "mia", - "RegionName": "Miami", - "Latitude": 25.78, - "Longitude": -80.21, - "Nodes": [ - { - "Name": "16c", - "RegionID": 16, - "HostName": "derp16c.tailscale.com", - "IPv4": "192.73.243.229", - "IPv6": "2607:f740:17::4e4", - "CanPort80": true - }, - { - "Name": "16d", - "RegionID": 16, - "HostName": "derp16d.tailscale.com", - "IPv4": "192.73.243.141", - "IPv6": "2607:f740:17::475", - "CanPort80": true - }, - { - "Name": "16b", - "RegionID": 16, - "HostName": "derp16b.tailscale.com", - "IPv4": "192.73.243.135", - "IPv6": "2607:f740:17::476", - "CanPort80": true - } - ] - }, - "17": { - "RegionID": 17, - "RegionCode": "lax", - "RegionName": "Los Angeles", - "Latitude": 34.05, - "Longitude": -118.25, - "Nodes": [ - { - "Name": "17c", - "RegionID": 17, - "HostName": "derp17c.tailscale.com", - "IPv4": "208.111.40.12", - "IPv6": "2607:f740:c::10", - "CanPort80": true - }, - { - "Name": "17d", - "RegionID": 17, - "HostName": "derp17d.tailscale.com", - "IPv4": "208.111.40.216", - "IPv6": "2607:f740:c::e1b", - "CanPort80": true - }, - { - "Name": "17b", - "RegionID": 17, - "HostName": "derp17b.tailscale.com", - "IPv4": "192.73.244.245", - "IPv6": "2607:f740:c::646", - "CanPort80": true - } - ] - }, - "18": { - "RegionID": 18, - "RegionCode": "par", - "RegionName": "Paris", - "Latitude": 48.856667, - "Longitude": 2.352222, - "Nodes": [ - { - "Name": "18c", - "RegionID": 18, - "HostName": "derp18c.tailscale.com", - "IPv4": "176.58.90.207", - "IPv6": "2a00:dd80:3e::c19", - "CanPort80": true - }, - { - "Name": "18d", - "RegionID": 18, - "HostName": "derp18d.tailscale.com", - "IPv4": "176.58.90.104", - "IPv6": "2a00:dd80:3e::f2e", - "CanPort80": true - }, - { - "Name": "18b", - "RegionID": 18, - "HostName": "derp18b.tailscale.com", - "IPv4": "176.58.90.147", - "IPv6": "2a00:dd80:3e::363", - "CanPort80": true - } - ] - }, - "19": { - "RegionID": 19, - "RegionCode": "mad", - "RegionName": "Madrid", - "Latitude": 40.416944, - "Longitude": -3.703333, - "Nodes": [ - { - "Name": "19c", - "RegionID": 19, - "HostName": "derp19c.tailscale.com", - "IPv4": "45.159.97.61", - "IPv6": "2a00:dd80:14:10::20", - "CanPort80": true - }, - { - "Name": "19d", - "RegionID": 19, - "HostName": "derp19d.tailscale.com", - "IPv4": "45.159.97.233", - "IPv6": "2a00:dd80:14:10::34a", - "CanPort80": true - }, - { - "Name": "19b", - "RegionID": 19, - "HostName": "derp19b.tailscale.com", - "IPv4": "45.159.97.144", - "IPv6": "2a00:dd80:14:10::335", - "CanPort80": true - } - ] - }, - "2": { - "RegionID": 2, - "RegionCode": "sfo", - "RegionName": "San Francisco", - "Latitude": 37.7775, - "Longitude": -122.416389, - "Nodes": [ - { - "Name": "2e", - "RegionID": 2, - "HostName": "derp2e.tailscale.com", - "IPv4": "192.73.252.134", - "IPv6": "2607:f740:0:3f::44c", - "CanPort80": true - }, - { - "Name": "2f", - "RegionID": 2, - "HostName": "derp2f.tailscale.com", - "IPv4": "208.111.34.178", - "IPv6": "2607:f740:0:3f::f4", - "CanPort80": true - }, - { - "Name": "2d", - "RegionID": 2, - "HostName": "derp2d.tailscale.com", - "IPv4": "192.73.252.65", - "IPv6": "2607:f740:0:3f::287", - "CanPort80": true - } - ] - }, - "20": { - "RegionID": 20, - "RegionCode": "hkg", - "RegionName": "Hong Kong", - "Latitude": 22.3193, - "Longitude": 114.1694, - "Nodes": [ - { - "Name": "20c", - "RegionID": 20, - "HostName": "derp20c.tailscale.com", - "IPv4": "205.147.105.30", - "IPv6": "2403:2500:8000:1::5fb", - "CanPort80": true - }, - { - "Name": "20d", - "RegionID": 20, - "HostName": "derp20d.tailscale.com", - "IPv4": "205.147.105.78", - "IPv6": "2403:2500:8000:1::e9a", - "CanPort80": true - }, - { - "Name": "20b", - "RegionID": 20, - "HostName": "derp20b.tailscale.com", - "IPv4": "103.6.84.152", - "IPv6": "2403:2500:8000:1::ef6", - "CanPort80": true - } - ] - }, - "21": { - "RegionID": 21, - "RegionCode": "tor", - "RegionName": "Toronto", - "Latitude": 43.741667, - "Longitude": -79.373333, - "Nodes": [ - { - "Name": "21c", - "RegionID": 21, - "HostName": "derp21c.tailscale.com", - "IPv4": "162.248.221.215", - "IPv6": "2607:f740:50::f10", - "CanPort80": true - }, - { - "Name": "21d", - "RegionID": 21, - "HostName": "derp21d.tailscale.com", - "IPv4": "162.248.221.248", - "IPv6": "2607:f740:50::ca4", - "CanPort80": true - }, - { - "Name": "21b", - "RegionID": 21, - "HostName": "derp21b.tailscale.com", - "IPv4": "162.248.221.199", - "IPv6": "2607:f740:50::1d1", - "CanPort80": true - } - ] - }, - "22": { - "RegionID": 22, - "RegionCode": "waw", - "RegionName": "Warsaw", - "Latitude": 52.23, - "Longitude": 21.011111, - "Nodes": [ - { - "Name": "22c", - "RegionID": 22, - "HostName": "derp22c.tailscale.com", - "IPv4": "45.159.98.253", - "IPv6": "2a00:dd80:40:100::3f", - "CanPort80": true - }, - { - "Name": "22d", - "RegionID": 22, - "HostName": "derp22d.tailscale.com", - "IPv4": "45.159.98.145", - "IPv6": "2a00:dd80:40:100::211", - "CanPort80": true - }, - { - "Name": "22b", - "RegionID": 22, - "HostName": "derp22b.tailscale.com", - "IPv4": "45.159.98.196", - "IPv6": "2a00:dd80:40:100::316", - "CanPort80": true - } - ] - }, - "23": { - "RegionID": 23, - "RegionCode": "dbi", - "RegionName": "Dubai", - "Latitude": 25.263056, - "Longitude": 55.297222, - "Nodes": [ - { - "Name": "23c", - "RegionID": 23, - "HostName": "derp23c.tailscale.com", - "IPv4": "185.34.3.207", - "IPv6": "2a00:dd80:3f:100::a50", - "CanPort80": true - }, - { - "Name": "23d", - "RegionID": 23, - "HostName": "derp23d.tailscale.com", - "IPv4": "185.34.3.75", - "IPv6": "2a00:dd80:3f:100::97e", - "CanPort80": true - }, - { - "Name": "23b", - "RegionID": 23, - "HostName": "derp23b.tailscale.com", - "IPv4": "185.34.3.232", - "IPv6": "2a00:dd80:3f:100::76f", - "CanPort80": true - } - ] - }, - "24": { - "RegionID": 24, - "RegionCode": "hnl", - "RegionName": "Honolulu", - "Latitude": 21.306944, - "Longitude": -157.858333, - "Nodes": [ - { - "Name": "24c", - "RegionID": 24, - "HostName": "derp24c.tailscale.com", - "IPv4": "208.83.233.233", - "IPv6": "2001:19f0:c000:c591:5400:04ff:fe26:2c5f", - "CanPort80": true - }, - { - "Name": "24d", - "RegionID": 24, - "HostName": "derp24d.tailscale.com", - "IPv4": "208.72.155.133", - "IPv6": "2001:19f0:c000:c564:5400:04ff:fe26:2ba8", - "CanPort80": true - }, - { - "Name": "24b", - "RegionID": 24, - "HostName": "derp24b.tailscale.com", - "IPv4": "208.83.234.151", - "IPv6": "2001:19f0:c000:c586:5400:04ff:fe26:2ba6", - "CanPort80": true - } - ] - }, - "25": { - "RegionID": 25, - "RegionCode": "nai", - "RegionName": "Nairobi", - "Latitude": -1.286389, - "Longitude": 36.817222, - "Nodes": [ - { - "Name": "25c", - "RegionID": 25, - "HostName": "derp25c.tailscale.com", - "IPv4": "102.67.167.37", - "IPv6": "2c0f:edb0:2000:1::2c7", - "CanPort80": true - }, - { - "Name": "25d", - "RegionID": 25, - "HostName": "derp25d.tailscale.com", - "IPv4": "102.67.167.188", - "IPv6": "2c0f:edb0:2000:1::188", - "CanPort80": true - }, - { - "Name": "25b", - "RegionID": 25, - "HostName": "derp25b.tailscale.com", - "IPv4": "102.67.167.245", - "IPv6": "2c0f:edb0:2000:1::2e9", - "CanPort80": true - } - ] - }, - "26": { - "RegionID": 26, - "RegionCode": "nue", - "RegionName": "Nuremberg", - "Latitude": 49.453889, - "Longitude": 11.0775, - "Nodes": [ - { - "Name": "26c", - "RegionID": 26, - "HostName": "derp26c.tailscale.com", - "IPv4": "49.12.193.137", - "IPv6": "2a01:4f8:1c1c:5c70::1", - "CanPort80": true - }, - { - "Name": "26d", - "RegionID": 26, - "HostName": "derp26d.tailscale.com", - "IPv4": "49.13.204.141", - "IPv6": "2a01:4f8:1c0c:7d06::1", - "CanPort80": true - }, - { - "Name": "26b", - "RegionID": 26, - "HostName": "derp26b.tailscale.com", - "IPv4": "167.235.72.200", - "IPv6": "2a01:4f8:1c1c:47b6::1", - "CanPort80": true - } - ] - }, - "27": { - "RegionID": 27, - "RegionCode": "iad", - "RegionName": "Ashburn", - "Latitude": 39.03, - "Longitude": -77.471111, - "Nodes": [ - { - "Name": "27d", - "RegionID": 27, - "HostName": "derp27d.tailscale.com", - "IPv4": "178.156.152.106", - "IPv6": "2a01:4ff:f0:3c8e::1", - "CanPort80": true - }, - { - "Name": "27c", - "RegionID": 27, - "HostName": "derp27c.tailscale.com", - "IPv4": "178.156.152.91", - "IPv6": "2a01:4ff:f0:3913::1", - "CanPort80": true - }, - { - "Name": "27e", - "RegionID": 27, - "HostName": "derp27e.tailscale.com", - "IPv4": "178.156.134.232", - "IPv6": "2a01:4ff:f0:28d4::1", - "CanPort80": true - }, - { - "Name": "27b", - "RegionID": 27, - "HostName": "derp27b.tailscale.com", - "IPv4": "5.161.218.233", - "IPv6": "2a01:4ff:f0:3db9::1", - "CanPort80": true - } - ] - }, - "28": { - "RegionID": 28, - "RegionCode": "hel", - "RegionName": "Helsinki", - "Latitude": 60.170833, - "Longitude": 24.9375, - "Nodes": [ - { - "Name": "28c", - "RegionID": 28, - "HostName": "derp28c.tailscale.com", - "IPv4": "95.217.2.165", - "IPv6": "2a01:4f9:c012:cd74::1", - "CanPort80": true - }, - { - "Name": "28d", - "RegionID": 28, - "HostName": "derp28d.tailscale.com", - "IPv4": "157.180.28.32", - "IPv6": "2a01:4f9:c012:2e5b::1", - "CanPort80": true - }, - { - "Name": "28b", - "RegionID": 28, - "HostName": "derp28b.tailscale.com", - "IPv4": "65.109.143.62", - "IPv6": "2a01:4f9:c012:d55c::1", - "CanPort80": true - } - ] - }, - "3": { - "RegionID": 3, - "RegionCode": "sin", - "RegionName": "Singapore", - "Latitude": 1.3521, - "Longitude": 103.8198, - "Nodes": [ - { - "Name": "3g", - "RegionID": 3, - "HostName": "derp3g.tailscale.com", - "IPv4": "172.237.72.79", - "IPv6": "2600:3c15::2000:adff:fe08:6fab", - "CanPort80": true - }, - { - "Name": "3f", - "RegionID": 3, - "HostName": "derp3f.tailscale.com", - "IPv4": "172.237.72.8", - "IPv6": "2600:3c15::2000:53ff:fe48:a668", - "CanPort80": true - }, - { - "Name": "3h", - "RegionID": 3, - "HostName": "derp3h.tailscale.com", - "IPv4": "172.237.66.30", - "IPv6": "2600:3c15::2000:3dff:fe44:50aa", - "CanPort80": true - }, - { - "Name": "3e", - "RegionID": 3, - "HostName": "derp3e.tailscale.com", - "IPv4": "172.237.72.43", - "IPv6": "2600:3c15::2000:6cff:fee4:d799", - "CanPort80": true - } - ] - }, - "4": { - "RegionID": 4, - "RegionCode": "fra", - "RegionName": "Frankfurt", - "Latitude": 50.1109, - "Longitude": 8.6821, - "Nodes": [ - { - "Name": "4h", - "RegionID": 4, - "HostName": "derp4h.tailscale.com", - "IPv4": "185.40.234.77", - "IPv6": "2a00:dd80:20::bcf", - "CanPort80": true - }, - { - "Name": "4g", - "RegionID": 4, - "HostName": "derp4g.tailscale.com", - "IPv4": "185.40.234.113", - "IPv6": "2a00:dd80:20::8f", - "CanPort80": true - }, - { - "Name": "4i", - "RegionID": 4, - "HostName": "derp4i.tailscale.com", - "IPv4": "185.40.234.53", - "IPv6": "2a00:dd80:20::8a6", - "CanPort80": true - }, - { - "Name": "4f", - "RegionID": 4, - "HostName": "derp4f.tailscale.com", - "IPv4": "185.40.234.219", - "IPv6": "2a00:dd80:20::a25", - "CanPort80": true - } - ] - }, - "5": { - "RegionID": 5, - "RegionCode": "syd", - "RegionName": "Sydney", - "Latitude": -33.867778, - "Longitude": 151.21, - "Nodes": [ - { - "Name": "5f", - "RegionID": 5, - "HostName": "derp5f.tailscale.com", - "IPv4": "172.105.166.103", - "IPv6": "2400:8907::2000:ccff:fe1f:80da", - "CanPort80": true - }, - { - "Name": "5g", - "RegionID": 5, - "HostName": "derp5g.tailscale.com", - "IPv4": "172.105.169.57", - "IPv6": "2400:8907::2000:2fff:fea7:57f4", - "CanPort80": true - }, - { - "Name": "5e", - "RegionID": 5, - "HostName": "derp5e.tailscale.com", - "IPv4": "172.105.179.230", - "IPv6": "2400:8907::2000:ceff:fe8d:4f4e", - "CanPort80": true - } - ] - }, - "6": { - "RegionID": 6, - "RegionCode": "blr", - "RegionName": "Bengaluru", - "Latitude": 12.9716, - "Longitude": 77.5946, - "Nodes": [ - { - "Name": "6a", - "RegionID": 6, - "HostName": "derp6.tailscale.com", - "IPv4": "68.183.90.120", - "IPv6": "2400:6180:100:d0::982:d001", - "CanPort80": true - } - ] - }, - "7": { - "RegionID": 7, - "RegionCode": "tok", - "RegionName": "Tokyo", - "Latitude": 35.6764, - "Longitude": 139.65, - "Nodes": [ - { - "Name": "7g", - "RegionID": 7, - "HostName": "derp7g.tailscale.com", - "IPv4": "172.238.6.179", - "IPv6": "2600:3c18::2000:3fff:fe80:3ebd", - "CanPort80": true - }, - { - "Name": "7f", - "RegionID": 7, - "HostName": "derp7f.tailscale.com", - "IPv4": "172.238.6.34", - "IPv6": "2600:3c18::2000:acff:fe8e:3ed5", - "CanPort80": true - }, - { - "Name": "7h", - "RegionID": 7, - "HostName": "derp7h.tailscale.com", - "IPv4": "172.237.28.183", - "IPv6": "2600:3c18::2000:b1ff:fea9:4560", - "CanPort80": true - }, - { - "Name": "7e", - "RegionID": 7, - "HostName": "derp7e.tailscale.com", - "IPv4": "172.238.6.180", - "IPv6": "2600:3c18::2000:60ff:fe0f:6e83", - "STUNOnly": true, - "CanPort80": true - } - ] - }, - "8": { - "RegionID": 8, - "RegionCode": "lhr", - "RegionName": "London", - "Latitude": 51.5072, - "Longitude": 0.1276, - "Nodes": [ - { - "Name": "8f", - "RegionID": 8, - "HostName": "derp8f.tailscale.com", - "IPv4": "176.58.88.183", - "IPv6": "2a00:dd80:3a::dfa", - "CanPort80": true - }, - { - "Name": "8g", - "RegionID": 8, - "HostName": "derp8g.tailscale.com", - "IPv4": "176.58.92.254", - "IPv6": "2a00:dd80:3a::ed", - "CanPort80": true - }, - { - "Name": "8e", - "RegionID": 8, - "HostName": "derp8e.tailscale.com", - "IPv4": "176.58.92.144", - "IPv6": "2a00:dd80:3a::b33", - "CanPort80": true - } - ] - }, - "9": { - "RegionID": 9, - "RegionCode": "dfw", - "RegionName": "Dallas", - "Latitude": 32.779167, - "Longitude": -96.808889, - "Nodes": [ - { - "Name": "9e", - "RegionID": 9, - "HostName": "derp9e.tailscale.com", - "IPv4": "192.73.248.83", - "IPv6": "2607:f740:100::359", - "CanPort80": true - }, - { - "Name": "9f", - "RegionID": 9, - "HostName": "derp9f.tailscale.com", - "IPv4": "209.177.156.197", - "IPv6": "2607:f740:100::cad", - "CanPort80": true - }, - { - "Name": "9d", - "RegionID": 9, - "HostName": "derp9d.tailscale.com", - "IPv4": "209.177.156.94", - "IPv6": "2607:f740:100::c05", - "CanPort80": true - } - ] - } - } - }, - "DisplayMessages": null, - "TKAEnabled": false, - "TKAHead": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", - "Domain": "kratail2tid@passkey", - "DomainAuditLogID": "", - "UserProfiles": { - "7489538288452506": { - "ID": 7489538288452506, - "LoginName": "subnet-router.tail78f774.ts.net", - "DisplayName": "subnet-router" - } - } + "PacketFilterRules": 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.124.195.93": { - "peer_name": "exit-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-client/tailscaled.sock whois --json 100.124.195.93", - "response": null - }, - "100.116.18.24": { - "peer_name": "exit-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-client/tailscaled.sock whois --json 100.116.18.24", - "response": null - }, - "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.107.162.14": { - "peer_name": "group-a-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-client/tailscaled.sock whois --json 100.107.162.14", - "response": null - }, - "100.77.135.18": { - "peer_name": "group-b-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-client/tailscaled.sock whois --json 100.77.135.18", - "response": null - }, - "100.105.127.107": { - "peer_name": "multi-exit-router", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-client/tailscaled.sock whois --json 100.105.127.107", - "response": null - }, - "100.109.43.124": { - "peer_name": "router-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-client/tailscaled.sock whois --json 100.109.43.124", - "response": null - }, - "100.65.172.123": { - "peer_name": "router-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-client/tailscaled.sock whois --json 100.65.172.123", - "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 - } - }, "netmap": { - "SelfNode": { - "ID": 4031348162889210, - "StableID": "nf7BTTgoUY11CNTRL", - "Name": "tagged-client.tail78f774.ts.net.", - "User": 4031348162889210, - "Key": "nodekey:3011e53353e49142ea56ae11f81e0dceae0d667093d04ee086dcb1e9c5d3c844", - "DiscoKey": "discokey:64af337a7e8b61dce500da3b8f7d0a95fc6fe0e57c2f9e57b9b484a9b4acbe1e", - "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:47143", "10.65.0.27:47143", "172.17.0.1:47143"], - "Hostinfo": { - "Hostname": "tagged-client", - "RequestTags": ["tag:client"], - "Services": [ - { "Proto": "peerapi4", "Port": 41378 }, - { "Proto": "peerapi6", "Port": 41378 }, - { "Proto": "peerapi-dns-proxy", "Port": 1 } - ] - }, - "Created": "2026-02-23T00:13:11.017324028Z", - "Tags": ["tag:client"], - "MachineAuthorized": true, - "CapMap": { - "https://tailscale.com/cap/file-sharing": null, - "https://tailscale.com/cap/is-owner": null, - "https://tailscale.com/cap/ssh": null, - "https://tailscale.com/cap/tailnet-lock": null, - "probe-udp-lifetime": null, - "ssh-behavior-v1": null, - "ssh-env-vars": null, - "store-appc-routes": null, - "tailnet-display-name": ["kratail2tid@passkey"] - }, - "ComputedName": "tagged-client", - "ComputedNameWithHost": "tagged-client" - }, - "AllCaps": [ - "https://tailscale.com/cap/file-sharing", - "ssh-behavior-v1", - "tailnet-display-name", - "https://tailscale.com/cap/ssh", - "probe-udp-lifetime", - "https://tailscale.com/cap/tailnet-lock", - "ssh-env-vars", - "https://tailscale.com/cap/is-owner", - "store-appc-routes" - ], - "NodeKey": "nodekey:3011e53353e49142ea56ae11f81e0dceae0d667093d04ee086dcb1e9c5d3c844", - "MachineKey": "mkey:92af46ce21e67878315fe620545c207854ab6cec2d03adc106c50f64f9692711", "Peers": [], - "DNS": { - "Routes": { - "tail78f774.ts.net.": null, - "ts.net.": [{ "Addr": "199.247.155.53" }, { "Addr": "2620:111:8007::53" }] - }, - "Domains": ["tail78f774.ts.net"], - "Proxied": true, - "ExitNodeFilteredSet": [".ts.net", ".tailscale.net"] - }, - "PacketFilter": [], - "PacketFilterRules": null, - "SSHPolicy": { "rules": [] }, - "CollectServices": false, - "DERPMap": { - "Regions": { - "1": { - "RegionID": 1, - "RegionCode": "nyc", - "RegionName": "New York City", - "Latitude": 40.7128, - "Longitude": -74.006, - "Nodes": [ - { - "Name": "1h", - "RegionID": 1, - "HostName": "derp1h.tailscale.com", - "IPv4": "199.38.181.93", - "IPv6": "2607:f740:f::afd", - "CanPort80": true - }, - { - "Name": "1g", - "RegionID": 1, - "HostName": "derp1g.tailscale.com", - "IPv4": "209.177.145.120", - "IPv6": "2607:f740:f::3eb", - "CanPort80": true - }, - { - "Name": "1i", - "RegionID": 1, - "HostName": "derp1i.tailscale.com", - "IPv4": "199.38.181.103", - "IPv6": "2607:f740:f::e19", - "CanPort80": true - }, - { - "Name": "1f", - "RegionID": 1, - "HostName": "derp1f.tailscale.com", - "IPv4": "199.38.181.104", - "IPv6": "2607:f740:f::bc", - "CanPort80": true - } - ] - }, - "10": { - "RegionID": 10, - "RegionCode": "sea", - "RegionName": "Seattle", - "Latitude": 47.609722, - "Longitude": -122.333056, - "Nodes": [ - { - "Name": "10c", - "RegionID": 10, - "HostName": "derp10c.tailscale.com", - "IPv4": "192.73.240.121", - "IPv6": "2607:f740:14::40c", - "CanPort80": true - }, - { - "Name": "10d", - "RegionID": 10, - "HostName": "derp10d.tailscale.com", - "IPv4": "192.73.240.132", - "IPv6": "2607:f740:14::500", - "CanPort80": true - }, - { - "Name": "10b", - "RegionID": 10, - "HostName": "derp10b.tailscale.com", - "IPv4": "192.73.240.161", - "IPv6": "2607:f740:14::61c", - "CanPort80": true - } - ] - }, - "11": { - "RegionID": 11, - "RegionCode": "sao", - "RegionName": "São Paulo", - "Latitude": -23.55, - "Longitude": -46.633333, - "Nodes": [ - { - "Name": "11f", - "RegionID": 11, - "HostName": "derp11f.tailscale.com", - "IPv4": "172.237.61.197", - "IPv6": "2600:3c0d::2000:3bff:fe44:6166", - "CanPort80": true - }, - { - "Name": "11g", - "RegionID": 11, - "HostName": "derp11g.tailscale.com", - "IPv4": "172.237.61.190", - "IPv6": "2600:3c0d::2000:62ff:febe:2e67", - "CanPort80": true - }, - { - "Name": "11e", - "RegionID": 11, - "HostName": "derp11e.tailscale.com", - "IPv4": "172.237.61.194", - "IPv6": "2600:3c0d::2000:d2ff:fe43:1790", - "CanPort80": true - } - ] - }, - "12": { - "RegionID": 12, - "RegionCode": "ord", - "RegionName": "Chicago", - "Latitude": 41.881944, - "Longitude": -87.627778, - "Nodes": [ - { - "Name": "12e", - "RegionID": 12, - "HostName": "derp12e.tailscale.com", - "IPv4": "209.177.158.15", - "IPv6": "2607:f740:e::b17", - "CanPort80": true - }, - { - "Name": "12f", - "RegionID": 12, - "HostName": "derp12f.tailscale.com", - "IPv4": "199.38.182.118", - "IPv6": "2607:f740:e::4c8", - "CanPort80": true - }, - { - "Name": "12d", - "RegionID": 12, - "HostName": "derp12d.tailscale.com", - "IPv4": "209.177.158.246", - "IPv6": "2607:f740:e::811", - "CanPort80": true - } - ] - }, - "13": { - "RegionID": 13, - "RegionCode": "den", - "RegionName": "Denver", - "Latitude": 39.7392, - "Longitude": -104.9849, - "Nodes": [ - { - "Name": "13c", - "RegionID": 13, - "HostName": "derp13c.tailscale.com", - "IPv4": "192.73.242.28", - "IPv6": "2607:f740:16::5c", - "CanPort80": true - }, - { - "Name": "13d", - "RegionID": 13, - "HostName": "derp13d.tailscale.com", - "IPv4": "192.73.242.204", - "IPv6": "2607:f740:16::c23", - "CanPort80": true - }, - { - "Name": "13b", - "RegionID": 13, - "HostName": "derp13b.tailscale.com", - "IPv4": "192.73.242.187", - "IPv6": "2607:f740:16::640", - "CanPort80": true - } - ] - }, - "14": { - "RegionID": 14, - "RegionCode": "ams", - "RegionName": "Amsterdam", - "Latitude": 52.372778, - "Longitude": 4.893611, - "Nodes": [ - { - "Name": "14c", - "RegionID": 14, - "HostName": "derp14c.tailscale.com", - "IPv4": "176.58.93.147", - "IPv6": "2a00:dd80:3c::b09", - "CanPort80": true - }, - { - "Name": "14d", - "RegionID": 14, - "HostName": "derp14d.tailscale.com", - "IPv4": "176.58.93.154", - "IPv6": "2a00:dd80:3c::3d5", - "CanPort80": true - }, - { - "Name": "14b", - "RegionID": 14, - "HostName": "derp14b.tailscale.com", - "IPv4": "176.58.93.248", - "IPv6": "2a00:dd80:3c::807", - "CanPort80": true - } - ] - }, - "15": { - "RegionID": 15, - "RegionCode": "jnb", - "RegionName": "Johannesburg", - "Latitude": -26.204444, - "Longitude": 28.045556, - "Nodes": [ - { - "Name": "15c", - "RegionID": 15, - "HostName": "derp15c.tailscale.com", - "IPv4": "102.67.165.185", - "IPv6": "2c0f:edb0:0:10::b59", - "CanPort80": true - }, - { - "Name": "15d", - "RegionID": 15, - "HostName": "derp15d.tailscale.com", - "IPv4": "102.67.165.36", - "IPv6": "2c0f:edb0:0:10::599", - "CanPort80": true - }, - { - "Name": "15b", - "RegionID": 15, - "HostName": "derp15b.tailscale.com", - "IPv4": "102.67.165.90", - "IPv6": "2c0f:edb0:0:10::963", - "CanPort80": true - } - ] - }, - "16": { - "RegionID": 16, - "RegionCode": "mia", - "RegionName": "Miami", - "Latitude": 25.78, - "Longitude": -80.21, - "Nodes": [ - { - "Name": "16c", - "RegionID": 16, - "HostName": "derp16c.tailscale.com", - "IPv4": "192.73.243.229", - "IPv6": "2607:f740:17::4e4", - "CanPort80": true - }, - { - "Name": "16d", - "RegionID": 16, - "HostName": "derp16d.tailscale.com", - "IPv4": "192.73.243.141", - "IPv6": "2607:f740:17::475", - "CanPort80": true - }, - { - "Name": "16b", - "RegionID": 16, - "HostName": "derp16b.tailscale.com", - "IPv4": "192.73.243.135", - "IPv6": "2607:f740:17::476", - "CanPort80": true - } - ] - }, - "17": { - "RegionID": 17, - "RegionCode": "lax", - "RegionName": "Los Angeles", - "Latitude": 34.05, - "Longitude": -118.25, - "Nodes": [ - { - "Name": "17c", - "RegionID": 17, - "HostName": "derp17c.tailscale.com", - "IPv4": "208.111.40.12", - "IPv6": "2607:f740:c::10", - "CanPort80": true - }, - { - "Name": "17d", - "RegionID": 17, - "HostName": "derp17d.tailscale.com", - "IPv4": "208.111.40.216", - "IPv6": "2607:f740:c::e1b", - "CanPort80": true - }, - { - "Name": "17b", - "RegionID": 17, - "HostName": "derp17b.tailscale.com", - "IPv4": "192.73.244.245", - "IPv6": "2607:f740:c::646", - "CanPort80": true - } - ] - }, - "18": { - "RegionID": 18, - "RegionCode": "par", - "RegionName": "Paris", - "Latitude": 48.856667, - "Longitude": 2.352222, - "Nodes": [ - { - "Name": "18c", - "RegionID": 18, - "HostName": "derp18c.tailscale.com", - "IPv4": "176.58.90.207", - "IPv6": "2a00:dd80:3e::c19", - "CanPort80": true - }, - { - "Name": "18d", - "RegionID": 18, - "HostName": "derp18d.tailscale.com", - "IPv4": "176.58.90.104", - "IPv6": "2a00:dd80:3e::f2e", - "CanPort80": true - }, - { - "Name": "18b", - "RegionID": 18, - "HostName": "derp18b.tailscale.com", - "IPv4": "176.58.90.147", - "IPv6": "2a00:dd80:3e::363", - "CanPort80": true - } - ] - }, - "19": { - "RegionID": 19, - "RegionCode": "mad", - "RegionName": "Madrid", - "Latitude": 40.416944, - "Longitude": -3.703333, - "Nodes": [ - { - "Name": "19c", - "RegionID": 19, - "HostName": "derp19c.tailscale.com", - "IPv4": "45.159.97.61", - "IPv6": "2a00:dd80:14:10::20", - "CanPort80": true - }, - { - "Name": "19d", - "RegionID": 19, - "HostName": "derp19d.tailscale.com", - "IPv4": "45.159.97.233", - "IPv6": "2a00:dd80:14:10::34a", - "CanPort80": true - }, - { - "Name": "19b", - "RegionID": 19, - "HostName": "derp19b.tailscale.com", - "IPv4": "45.159.97.144", - "IPv6": "2a00:dd80:14:10::335", - "CanPort80": true - } - ] - }, - "2": { - "RegionID": 2, - "RegionCode": "sfo", - "RegionName": "San Francisco", - "Latitude": 37.7775, - "Longitude": -122.416389, - "Nodes": [ - { - "Name": "2e", - "RegionID": 2, - "HostName": "derp2e.tailscale.com", - "IPv4": "192.73.252.134", - "IPv6": "2607:f740:0:3f::44c", - "CanPort80": true - }, - { - "Name": "2f", - "RegionID": 2, - "HostName": "derp2f.tailscale.com", - "IPv4": "208.111.34.178", - "IPv6": "2607:f740:0:3f::f4", - "CanPort80": true - }, - { - "Name": "2d", - "RegionID": 2, - "HostName": "derp2d.tailscale.com", - "IPv4": "192.73.252.65", - "IPv6": "2607:f740:0:3f::287", - "CanPort80": true - } - ] - }, - "20": { - "RegionID": 20, - "RegionCode": "hkg", - "RegionName": "Hong Kong", - "Latitude": 22.3193, - "Longitude": 114.1694, - "Nodes": [ - { - "Name": "20c", - "RegionID": 20, - "HostName": "derp20c.tailscale.com", - "IPv4": "205.147.105.30", - "IPv6": "2403:2500:8000:1::5fb", - "CanPort80": true - }, - { - "Name": "20d", - "RegionID": 20, - "HostName": "derp20d.tailscale.com", - "IPv4": "205.147.105.78", - "IPv6": "2403:2500:8000:1::e9a", - "CanPort80": true - }, - { - "Name": "20b", - "RegionID": 20, - "HostName": "derp20b.tailscale.com", - "IPv4": "103.6.84.152", - "IPv6": "2403:2500:8000:1::ef6", - "CanPort80": true - } - ] - }, - "21": { - "RegionID": 21, - "RegionCode": "tor", - "RegionName": "Toronto", - "Latitude": 43.741667, - "Longitude": -79.373333, - "Nodes": [ - { - "Name": "21c", - "RegionID": 21, - "HostName": "derp21c.tailscale.com", - "IPv4": "162.248.221.215", - "IPv6": "2607:f740:50::f10", - "CanPort80": true - }, - { - "Name": "21d", - "RegionID": 21, - "HostName": "derp21d.tailscale.com", - "IPv4": "162.248.221.248", - "IPv6": "2607:f740:50::ca4", - "CanPort80": true - }, - { - "Name": "21b", - "RegionID": 21, - "HostName": "derp21b.tailscale.com", - "IPv4": "162.248.221.199", - "IPv6": "2607:f740:50::1d1", - "CanPort80": true - } - ] - }, - "22": { - "RegionID": 22, - "RegionCode": "waw", - "RegionName": "Warsaw", - "Latitude": 52.23, - "Longitude": 21.011111, - "Nodes": [ - { - "Name": "22c", - "RegionID": 22, - "HostName": "derp22c.tailscale.com", - "IPv4": "45.159.98.253", - "IPv6": "2a00:dd80:40:100::3f", - "CanPort80": true - }, - { - "Name": "22d", - "RegionID": 22, - "HostName": "derp22d.tailscale.com", - "IPv4": "45.159.98.145", - "IPv6": "2a00:dd80:40:100::211", - "CanPort80": true - }, - { - "Name": "22b", - "RegionID": 22, - "HostName": "derp22b.tailscale.com", - "IPv4": "45.159.98.196", - "IPv6": "2a00:dd80:40:100::316", - "CanPort80": true - } - ] - }, - "23": { - "RegionID": 23, - "RegionCode": "dbi", - "RegionName": "Dubai", - "Latitude": 25.263056, - "Longitude": 55.297222, - "Nodes": [ - { - "Name": "23c", - "RegionID": 23, - "HostName": "derp23c.tailscale.com", - "IPv4": "185.34.3.207", - "IPv6": "2a00:dd80:3f:100::a50", - "CanPort80": true - }, - { - "Name": "23d", - "RegionID": 23, - "HostName": "derp23d.tailscale.com", - "IPv4": "185.34.3.75", - "IPv6": "2a00:dd80:3f:100::97e", - "CanPort80": true - }, - { - "Name": "23b", - "RegionID": 23, - "HostName": "derp23b.tailscale.com", - "IPv4": "185.34.3.232", - "IPv6": "2a00:dd80:3f:100::76f", - "CanPort80": true - } - ] - }, - "24": { - "RegionID": 24, - "RegionCode": "hnl", - "RegionName": "Honolulu", - "Latitude": 21.306944, - "Longitude": -157.858333, - "Nodes": [ - { - "Name": "24c", - "RegionID": 24, - "HostName": "derp24c.tailscale.com", - "IPv4": "208.83.233.233", - "IPv6": "2001:19f0:c000:c591:5400:04ff:fe26:2c5f", - "CanPort80": true - }, - { - "Name": "24d", - "RegionID": 24, - "HostName": "derp24d.tailscale.com", - "IPv4": "208.72.155.133", - "IPv6": "2001:19f0:c000:c564:5400:04ff:fe26:2ba8", - "CanPort80": true - }, - { - "Name": "24b", - "RegionID": 24, - "HostName": "derp24b.tailscale.com", - "IPv4": "208.83.234.151", - "IPv6": "2001:19f0:c000:c586:5400:04ff:fe26:2ba6", - "CanPort80": true - } - ] - }, - "25": { - "RegionID": 25, - "RegionCode": "nai", - "RegionName": "Nairobi", - "Latitude": -1.286389, - "Longitude": 36.817222, - "Nodes": [ - { - "Name": "25c", - "RegionID": 25, - "HostName": "derp25c.tailscale.com", - "IPv4": "102.67.167.37", - "IPv6": "2c0f:edb0:2000:1::2c7", - "CanPort80": true - }, - { - "Name": "25d", - "RegionID": 25, - "HostName": "derp25d.tailscale.com", - "IPv4": "102.67.167.188", - "IPv6": "2c0f:edb0:2000:1::188", - "CanPort80": true - }, - { - "Name": "25b", - "RegionID": 25, - "HostName": "derp25b.tailscale.com", - "IPv4": "102.67.167.245", - "IPv6": "2c0f:edb0:2000:1::2e9", - "CanPort80": true - } - ] - }, - "26": { - "RegionID": 26, - "RegionCode": "nue", - "RegionName": "Nuremberg", - "Latitude": 49.453889, - "Longitude": 11.0775, - "Nodes": [ - { - "Name": "26c", - "RegionID": 26, - "HostName": "derp26c.tailscale.com", - "IPv4": "49.12.193.137", - "IPv6": "2a01:4f8:1c1c:5c70::1", - "CanPort80": true - }, - { - "Name": "26d", - "RegionID": 26, - "HostName": "derp26d.tailscale.com", - "IPv4": "49.13.204.141", - "IPv6": "2a01:4f8:1c0c:7d06::1", - "CanPort80": true - }, - { - "Name": "26b", - "RegionID": 26, - "HostName": "derp26b.tailscale.com", - "IPv4": "167.235.72.200", - "IPv6": "2a01:4f8:1c1c:47b6::1", - "CanPort80": true - } - ] - }, - "27": { - "RegionID": 27, - "RegionCode": "iad", - "RegionName": "Ashburn", - "Latitude": 39.03, - "Longitude": -77.471111, - "Nodes": [ - { - "Name": "27d", - "RegionID": 27, - "HostName": "derp27d.tailscale.com", - "IPv4": "178.156.152.106", - "IPv6": "2a01:4ff:f0:3c8e::1", - "CanPort80": true - }, - { - "Name": "27c", - "RegionID": 27, - "HostName": "derp27c.tailscale.com", - "IPv4": "178.156.152.91", - "IPv6": "2a01:4ff:f0:3913::1", - "CanPort80": true - }, - { - "Name": "27e", - "RegionID": 27, - "HostName": "derp27e.tailscale.com", - "IPv4": "178.156.134.232", - "IPv6": "2a01:4ff:f0:28d4::1", - "CanPort80": true - }, - { - "Name": "27b", - "RegionID": 27, - "HostName": "derp27b.tailscale.com", - "IPv4": "5.161.218.233", - "IPv6": "2a01:4ff:f0:3db9::1", - "CanPort80": true - } - ] - }, - "28": { - "RegionID": 28, - "RegionCode": "hel", - "RegionName": "Helsinki", - "Latitude": 60.170833, - "Longitude": 24.9375, - "Nodes": [ - { - "Name": "28c", - "RegionID": 28, - "HostName": "derp28c.tailscale.com", - "IPv4": "95.217.2.165", - "IPv6": "2a01:4f9:c012:cd74::1", - "CanPort80": true - }, - { - "Name": "28d", - "RegionID": 28, - "HostName": "derp28d.tailscale.com", - "IPv4": "157.180.28.32", - "IPv6": "2a01:4f9:c012:2e5b::1", - "CanPort80": true - }, - { - "Name": "28b", - "RegionID": 28, - "HostName": "derp28b.tailscale.com", - "IPv4": "65.109.143.62", - "IPv6": "2a01:4f9:c012:d55c::1", - "CanPort80": true - } - ] - }, - "3": { - "RegionID": 3, - "RegionCode": "sin", - "RegionName": "Singapore", - "Latitude": 1.3521, - "Longitude": 103.8198, - "Nodes": [ - { - "Name": "3g", - "RegionID": 3, - "HostName": "derp3g.tailscale.com", - "IPv4": "172.237.72.79", - "IPv6": "2600:3c15::2000:adff:fe08:6fab", - "CanPort80": true - }, - { - "Name": "3f", - "RegionID": 3, - "HostName": "derp3f.tailscale.com", - "IPv4": "172.237.72.8", - "IPv6": "2600:3c15::2000:53ff:fe48:a668", - "CanPort80": true - }, - { - "Name": "3h", - "RegionID": 3, - "HostName": "derp3h.tailscale.com", - "IPv4": "172.237.66.30", - "IPv6": "2600:3c15::2000:3dff:fe44:50aa", - "CanPort80": true - }, - { - "Name": "3e", - "RegionID": 3, - "HostName": "derp3e.tailscale.com", - "IPv4": "172.237.72.43", - "IPv6": "2600:3c15::2000:6cff:fee4:d799", - "CanPort80": true - } - ] - }, - "4": { - "RegionID": 4, - "RegionCode": "fra", - "RegionName": "Frankfurt", - "Latitude": 50.1109, - "Longitude": 8.6821, - "Nodes": [ - { - "Name": "4h", - "RegionID": 4, - "HostName": "derp4h.tailscale.com", - "IPv4": "185.40.234.77", - "IPv6": "2a00:dd80:20::bcf", - "CanPort80": true - }, - { - "Name": "4g", - "RegionID": 4, - "HostName": "derp4g.tailscale.com", - "IPv4": "185.40.234.113", - "IPv6": "2a00:dd80:20::8f", - "CanPort80": true - }, - { - "Name": "4i", - "RegionID": 4, - "HostName": "derp4i.tailscale.com", - "IPv4": "185.40.234.53", - "IPv6": "2a00:dd80:20::8a6", - "CanPort80": true - }, - { - "Name": "4f", - "RegionID": 4, - "HostName": "derp4f.tailscale.com", - "IPv4": "185.40.234.219", - "IPv6": "2a00:dd80:20::a25", - "CanPort80": true - } - ] - }, - "5": { - "RegionID": 5, - "RegionCode": "syd", - "RegionName": "Sydney", - "Latitude": -33.867778, - "Longitude": 151.21, - "Nodes": [ - { - "Name": "5f", - "RegionID": 5, - "HostName": "derp5f.tailscale.com", - "IPv4": "172.105.166.103", - "IPv6": "2400:8907::2000:ccff:fe1f:80da", - "CanPort80": true - }, - { - "Name": "5g", - "RegionID": 5, - "HostName": "derp5g.tailscale.com", - "IPv4": "172.105.169.57", - "IPv6": "2400:8907::2000:2fff:fea7:57f4", - "CanPort80": true - }, - { - "Name": "5e", - "RegionID": 5, - "HostName": "derp5e.tailscale.com", - "IPv4": "172.105.179.230", - "IPv6": "2400:8907::2000:ceff:fe8d:4f4e", - "CanPort80": true - } - ] - }, - "6": { - "RegionID": 6, - "RegionCode": "blr", - "RegionName": "Bengaluru", - "Latitude": 12.9716, - "Longitude": 77.5946, - "Nodes": [ - { - "Name": "6a", - "RegionID": 6, - "HostName": "derp6.tailscale.com", - "IPv4": "68.183.90.120", - "IPv6": "2400:6180:100:d0::982:d001", - "CanPort80": true - } - ] - }, - "7": { - "RegionID": 7, - "RegionCode": "tok", - "RegionName": "Tokyo", - "Latitude": 35.6764, - "Longitude": 139.65, - "Nodes": [ - { - "Name": "7g", - "RegionID": 7, - "HostName": "derp7g.tailscale.com", - "IPv4": "172.238.6.179", - "IPv6": "2600:3c18::2000:3fff:fe80:3ebd", - "CanPort80": true - }, - { - "Name": "7f", - "RegionID": 7, - "HostName": "derp7f.tailscale.com", - "IPv4": "172.238.6.34", - "IPv6": "2600:3c18::2000:acff:fe8e:3ed5", - "CanPort80": true - }, - { - "Name": "7h", - "RegionID": 7, - "HostName": "derp7h.tailscale.com", - "IPv4": "172.237.28.183", - "IPv6": "2600:3c18::2000:b1ff:fea9:4560", - "CanPort80": true - }, - { - "Name": "7e", - "RegionID": 7, - "HostName": "derp7e.tailscale.com", - "IPv4": "172.238.6.180", - "IPv6": "2600:3c18::2000:60ff:fe0f:6e83", - "STUNOnly": true, - "CanPort80": true - } - ] - }, - "8": { - "RegionID": 8, - "RegionCode": "lhr", - "RegionName": "London", - "Latitude": 51.5072, - "Longitude": 0.1276, - "Nodes": [ - { - "Name": "8f", - "RegionID": 8, - "HostName": "derp8f.tailscale.com", - "IPv4": "176.58.88.183", - "IPv6": "2a00:dd80:3a::dfa", - "CanPort80": true - }, - { - "Name": "8g", - "RegionID": 8, - "HostName": "derp8g.tailscale.com", - "IPv4": "176.58.92.254", - "IPv6": "2a00:dd80:3a::ed", - "CanPort80": true - }, - { - "Name": "8e", - "RegionID": 8, - "HostName": "derp8e.tailscale.com", - "IPv4": "176.58.92.144", - "IPv6": "2a00:dd80:3a::b33", - "CanPort80": true - } - ] - }, - "9": { - "RegionID": 9, - "RegionCode": "dfw", - "RegionName": "Dallas", - "Latitude": 32.779167, - "Longitude": -96.808889, - "Nodes": [ - { - "Name": "9e", - "RegionID": 9, - "HostName": "derp9e.tailscale.com", - "IPv4": "192.73.248.83", - "IPv6": "2607:f740:100::359", - "CanPort80": true - }, - { - "Name": "9f", - "RegionID": 9, - "HostName": "derp9f.tailscale.com", - "IPv4": "209.177.156.197", - "IPv6": "2607:f740:100::cad", - "CanPort80": true - }, - { - "Name": "9d", - "RegionID": 9, - "HostName": "derp9d.tailscale.com", - "IPv4": "209.177.156.94", - "IPv6": "2607:f740:100::c05", - "CanPort80": true - } - ] - } - } - }, - "DisplayMessages": null, - "TKAEnabled": false, - "TKAHead": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", - "Domain": "kratail2tid@passkey", - "DomainAuditLogID": "", - "UserProfiles": { - "4031348162889210": { - "ID": 4031348162889210, - "LoginName": "tagged-client.tail78f774.ts.net", - "DisplayName": "tagged-client" - } - } + "PacketFilterRules": 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.124.195.93": { - "peer_name": "exit-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-prod/tailscaled.sock whois --json 100.124.195.93", - "response": null - }, - "100.116.18.24": { - "peer_name": "exit-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-prod/tailscaled.sock whois --json 100.116.18.24", - "response": null - }, - "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.107.162.14": { - "peer_name": "group-a-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-prod/tailscaled.sock whois --json 100.107.162.14", - "response": null - }, - "100.77.135.18": { - "peer_name": "group-b-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-prod/tailscaled.sock whois --json 100.77.135.18", - "response": null - }, - "100.105.127.107": { - "peer_name": "multi-exit-router", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-prod/tailscaled.sock whois --json 100.105.127.107", - "response": null - }, - "100.109.43.124": { - "peer_name": "router-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-prod/tailscaled.sock whois --json 100.109.43.124", - "response": null - }, - "100.65.172.123": { - "peer_name": "router-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-prod/tailscaled.sock whois --json 100.65.172.123", - "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 - } - }, "netmap": { - "SelfNode": { - "ID": 301794218943819, - "StableID": "neJag6dgM311CNTRL", - "Name": "tagged-prod.tail78f774.ts.net.", - "User": 301794218943819, - "Key": "nodekey:54c79503322a5d0a9701ce19d11963cfff9c05667ac06ef976af86275ba7080e", - "DiscoKey": "discokey:5e4985009b42b7c82ffb2cb5fa735a90f967f6b3f886b71268ebbeffa324556b", - "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:46164", "10.65.0.27:46164", "172.17.0.1:46164"], - "Hostinfo": { - "Hostname": "tagged-prod", - "Services": [ - { "Proto": "peerapi4", "Port": 37678 }, - { "Proto": "peerapi6", "Port": 37678 }, - { "Proto": "peerapi-dns-proxy", "Port": 1 } - ] - }, - "Created": "2026-02-20T14:03:12.89283153Z", - "Tags": ["tag:prod"], - "MachineAuthorized": true, - "CapMap": { - "https://tailscale.com/cap/file-sharing": null, - "https://tailscale.com/cap/is-owner": null, - "https://tailscale.com/cap/ssh": null, - "https://tailscale.com/cap/tailnet-lock": null, - "probe-udp-lifetime": null, - "ssh-behavior-v1": null, - "ssh-env-vars": null, - "store-appc-routes": null, - "tailnet-display-name": ["kratail2tid@passkey"] - }, - "ComputedName": "tagged-prod", - "ComputedNameWithHost": "tagged-prod" - }, - "AllCaps": [ - "https://tailscale.com/cap/is-owner", - "https://tailscale.com/cap/file-sharing", - "ssh-env-vars", - "tailnet-display-name", - "https://tailscale.com/cap/ssh", - "https://tailscale.com/cap/tailnet-lock", - "probe-udp-lifetime", - "store-appc-routes", - "ssh-behavior-v1" - ], - "NodeKey": "nodekey:54c79503322a5d0a9701ce19d11963cfff9c05667ac06ef976af86275ba7080e", - "MachineKey": "mkey:af805e02d1594ab20eaf3e2df5b379eec6453fa649344fcd564b7bae20e46a63", "Peers": [], - "DNS": { - "Routes": { - "tail78f774.ts.net.": null, - "ts.net.": [{ "Addr": "199.247.155.53" }, { "Addr": "2620:111:8007::53" }] - }, - "Domains": ["tail78f774.ts.net"], - "Proxied": true, - "ExitNodeFilteredSet": [".ts.net", ".tailscale.net"] - }, - "PacketFilter": [], - "PacketFilterRules": null, - "SSHPolicy": { "rules": [] }, - "CollectServices": false, - "DERPMap": { - "Regions": { - "1": { - "RegionID": 1, - "RegionCode": "nyc", - "RegionName": "New York City", - "Latitude": 40.7128, - "Longitude": -74.006, - "Nodes": [ - { - "Name": "1h", - "RegionID": 1, - "HostName": "derp1h.tailscale.com", - "IPv4": "199.38.181.93", - "IPv6": "2607:f740:f::afd", - "CanPort80": true - }, - { - "Name": "1g", - "RegionID": 1, - "HostName": "derp1g.tailscale.com", - "IPv4": "209.177.145.120", - "IPv6": "2607:f740:f::3eb", - "CanPort80": true - }, - { - "Name": "1i", - "RegionID": 1, - "HostName": "derp1i.tailscale.com", - "IPv4": "199.38.181.103", - "IPv6": "2607:f740:f::e19", - "CanPort80": true - }, - { - "Name": "1f", - "RegionID": 1, - "HostName": "derp1f.tailscale.com", - "IPv4": "199.38.181.104", - "IPv6": "2607:f740:f::bc", - "CanPort80": true - } - ] - }, - "10": { - "RegionID": 10, - "RegionCode": "sea", - "RegionName": "Seattle", - "Latitude": 47.609722, - "Longitude": -122.333056, - "Nodes": [ - { - "Name": "10c", - "RegionID": 10, - "HostName": "derp10c.tailscale.com", - "IPv4": "192.73.240.121", - "IPv6": "2607:f740:14::40c", - "CanPort80": true - }, - { - "Name": "10d", - "RegionID": 10, - "HostName": "derp10d.tailscale.com", - "IPv4": "192.73.240.132", - "IPv6": "2607:f740:14::500", - "CanPort80": true - }, - { - "Name": "10b", - "RegionID": 10, - "HostName": "derp10b.tailscale.com", - "IPv4": "192.73.240.161", - "IPv6": "2607:f740:14::61c", - "CanPort80": true - } - ] - }, - "11": { - "RegionID": 11, - "RegionCode": "sao", - "RegionName": "São Paulo", - "Latitude": -23.55, - "Longitude": -46.633333, - "Nodes": [ - { - "Name": "11f", - "RegionID": 11, - "HostName": "derp11f.tailscale.com", - "IPv4": "172.237.61.197", - "IPv6": "2600:3c0d::2000:3bff:fe44:6166", - "CanPort80": true - }, - { - "Name": "11g", - "RegionID": 11, - "HostName": "derp11g.tailscale.com", - "IPv4": "172.237.61.190", - "IPv6": "2600:3c0d::2000:62ff:febe:2e67", - "CanPort80": true - }, - { - "Name": "11e", - "RegionID": 11, - "HostName": "derp11e.tailscale.com", - "IPv4": "172.237.61.194", - "IPv6": "2600:3c0d::2000:d2ff:fe43:1790", - "CanPort80": true - } - ] - }, - "12": { - "RegionID": 12, - "RegionCode": "ord", - "RegionName": "Chicago", - "Latitude": 41.881944, - "Longitude": -87.627778, - "Nodes": [ - { - "Name": "12e", - "RegionID": 12, - "HostName": "derp12e.tailscale.com", - "IPv4": "209.177.158.15", - "IPv6": "2607:f740:e::b17", - "CanPort80": true - }, - { - "Name": "12f", - "RegionID": 12, - "HostName": "derp12f.tailscale.com", - "IPv4": "199.38.182.118", - "IPv6": "2607:f740:e::4c8", - "CanPort80": true - }, - { - "Name": "12d", - "RegionID": 12, - "HostName": "derp12d.tailscale.com", - "IPv4": "209.177.158.246", - "IPv6": "2607:f740:e::811", - "CanPort80": true - } - ] - }, - "13": { - "RegionID": 13, - "RegionCode": "den", - "RegionName": "Denver", - "Latitude": 39.7392, - "Longitude": -104.9849, - "Nodes": [ - { - "Name": "13c", - "RegionID": 13, - "HostName": "derp13c.tailscale.com", - "IPv4": "192.73.242.28", - "IPv6": "2607:f740:16::5c", - "CanPort80": true - }, - { - "Name": "13d", - "RegionID": 13, - "HostName": "derp13d.tailscale.com", - "IPv4": "192.73.242.204", - "IPv6": "2607:f740:16::c23", - "CanPort80": true - }, - { - "Name": "13b", - "RegionID": 13, - "HostName": "derp13b.tailscale.com", - "IPv4": "192.73.242.187", - "IPv6": "2607:f740:16::640", - "CanPort80": true - } - ] - }, - "14": { - "RegionID": 14, - "RegionCode": "ams", - "RegionName": "Amsterdam", - "Latitude": 52.372778, - "Longitude": 4.893611, - "Nodes": [ - { - "Name": "14c", - "RegionID": 14, - "HostName": "derp14c.tailscale.com", - "IPv4": "176.58.93.147", - "IPv6": "2a00:dd80:3c::b09", - "CanPort80": true - }, - { - "Name": "14d", - "RegionID": 14, - "HostName": "derp14d.tailscale.com", - "IPv4": "176.58.93.154", - "IPv6": "2a00:dd80:3c::3d5", - "CanPort80": true - }, - { - "Name": "14b", - "RegionID": 14, - "HostName": "derp14b.tailscale.com", - "IPv4": "176.58.93.248", - "IPv6": "2a00:dd80:3c::807", - "CanPort80": true - } - ] - }, - "15": { - "RegionID": 15, - "RegionCode": "jnb", - "RegionName": "Johannesburg", - "Latitude": -26.204444, - "Longitude": 28.045556, - "Nodes": [ - { - "Name": "15c", - "RegionID": 15, - "HostName": "derp15c.tailscale.com", - "IPv4": "102.67.165.185", - "IPv6": "2c0f:edb0:0:10::b59", - "CanPort80": true - }, - { - "Name": "15d", - "RegionID": 15, - "HostName": "derp15d.tailscale.com", - "IPv4": "102.67.165.36", - "IPv6": "2c0f:edb0:0:10::599", - "CanPort80": true - }, - { - "Name": "15b", - "RegionID": 15, - "HostName": "derp15b.tailscale.com", - "IPv4": "102.67.165.90", - "IPv6": "2c0f:edb0:0:10::963", - "CanPort80": true - } - ] - }, - "16": { - "RegionID": 16, - "RegionCode": "mia", - "RegionName": "Miami", - "Latitude": 25.78, - "Longitude": -80.21, - "Nodes": [ - { - "Name": "16c", - "RegionID": 16, - "HostName": "derp16c.tailscale.com", - "IPv4": "192.73.243.229", - "IPv6": "2607:f740:17::4e4", - "CanPort80": true - }, - { - "Name": "16d", - "RegionID": 16, - "HostName": "derp16d.tailscale.com", - "IPv4": "192.73.243.141", - "IPv6": "2607:f740:17::475", - "CanPort80": true - }, - { - "Name": "16b", - "RegionID": 16, - "HostName": "derp16b.tailscale.com", - "IPv4": "192.73.243.135", - "IPv6": "2607:f740:17::476", - "CanPort80": true - } - ] - }, - "17": { - "RegionID": 17, - "RegionCode": "lax", - "RegionName": "Los Angeles", - "Latitude": 34.05, - "Longitude": -118.25, - "Nodes": [ - { - "Name": "17c", - "RegionID": 17, - "HostName": "derp17c.tailscale.com", - "IPv4": "208.111.40.12", - "IPv6": "2607:f740:c::10", - "CanPort80": true - }, - { - "Name": "17d", - "RegionID": 17, - "HostName": "derp17d.tailscale.com", - "IPv4": "208.111.40.216", - "IPv6": "2607:f740:c::e1b", - "CanPort80": true - }, - { - "Name": "17b", - "RegionID": 17, - "HostName": "derp17b.tailscale.com", - "IPv4": "192.73.244.245", - "IPv6": "2607:f740:c::646", - "CanPort80": true - } - ] - }, - "18": { - "RegionID": 18, - "RegionCode": "par", - "RegionName": "Paris", - "Latitude": 48.856667, - "Longitude": 2.352222, - "Nodes": [ - { - "Name": "18c", - "RegionID": 18, - "HostName": "derp18c.tailscale.com", - "IPv4": "176.58.90.207", - "IPv6": "2a00:dd80:3e::c19", - "CanPort80": true - }, - { - "Name": "18d", - "RegionID": 18, - "HostName": "derp18d.tailscale.com", - "IPv4": "176.58.90.104", - "IPv6": "2a00:dd80:3e::f2e", - "CanPort80": true - }, - { - "Name": "18b", - "RegionID": 18, - "HostName": "derp18b.tailscale.com", - "IPv4": "176.58.90.147", - "IPv6": "2a00:dd80:3e::363", - "CanPort80": true - } - ] - }, - "19": { - "RegionID": 19, - "RegionCode": "mad", - "RegionName": "Madrid", - "Latitude": 40.416944, - "Longitude": -3.703333, - "Nodes": [ - { - "Name": "19c", - "RegionID": 19, - "HostName": "derp19c.tailscale.com", - "IPv4": "45.159.97.61", - "IPv6": "2a00:dd80:14:10::20", - "CanPort80": true - }, - { - "Name": "19d", - "RegionID": 19, - "HostName": "derp19d.tailscale.com", - "IPv4": "45.159.97.233", - "IPv6": "2a00:dd80:14:10::34a", - "CanPort80": true - }, - { - "Name": "19b", - "RegionID": 19, - "HostName": "derp19b.tailscale.com", - "IPv4": "45.159.97.144", - "IPv6": "2a00:dd80:14:10::335", - "CanPort80": true - } - ] - }, - "2": { - "RegionID": 2, - "RegionCode": "sfo", - "RegionName": "San Francisco", - "Latitude": 37.7775, - "Longitude": -122.416389, - "Nodes": [ - { - "Name": "2e", - "RegionID": 2, - "HostName": "derp2e.tailscale.com", - "IPv4": "192.73.252.134", - "IPv6": "2607:f740:0:3f::44c", - "CanPort80": true - }, - { - "Name": "2f", - "RegionID": 2, - "HostName": "derp2f.tailscale.com", - "IPv4": "208.111.34.178", - "IPv6": "2607:f740:0:3f::f4", - "CanPort80": true - }, - { - "Name": "2d", - "RegionID": 2, - "HostName": "derp2d.tailscale.com", - "IPv4": "192.73.252.65", - "IPv6": "2607:f740:0:3f::287", - "CanPort80": true - } - ] - }, - "20": { - "RegionID": 20, - "RegionCode": "hkg", - "RegionName": "Hong Kong", - "Latitude": 22.3193, - "Longitude": 114.1694, - "Nodes": [ - { - "Name": "20c", - "RegionID": 20, - "HostName": "derp20c.tailscale.com", - "IPv4": "205.147.105.30", - "IPv6": "2403:2500:8000:1::5fb", - "CanPort80": true - }, - { - "Name": "20d", - "RegionID": 20, - "HostName": "derp20d.tailscale.com", - "IPv4": "205.147.105.78", - "IPv6": "2403:2500:8000:1::e9a", - "CanPort80": true - }, - { - "Name": "20b", - "RegionID": 20, - "HostName": "derp20b.tailscale.com", - "IPv4": "103.6.84.152", - "IPv6": "2403:2500:8000:1::ef6", - "CanPort80": true - } - ] - }, - "21": { - "RegionID": 21, - "RegionCode": "tor", - "RegionName": "Toronto", - "Latitude": 43.741667, - "Longitude": -79.373333, - "Nodes": [ - { - "Name": "21c", - "RegionID": 21, - "HostName": "derp21c.tailscale.com", - "IPv4": "162.248.221.215", - "IPv6": "2607:f740:50::f10", - "CanPort80": true - }, - { - "Name": "21d", - "RegionID": 21, - "HostName": "derp21d.tailscale.com", - "IPv4": "162.248.221.248", - "IPv6": "2607:f740:50::ca4", - "CanPort80": true - }, - { - "Name": "21b", - "RegionID": 21, - "HostName": "derp21b.tailscale.com", - "IPv4": "162.248.221.199", - "IPv6": "2607:f740:50::1d1", - "CanPort80": true - } - ] - }, - "22": { - "RegionID": 22, - "RegionCode": "waw", - "RegionName": "Warsaw", - "Latitude": 52.23, - "Longitude": 21.011111, - "Nodes": [ - { - "Name": "22c", - "RegionID": 22, - "HostName": "derp22c.tailscale.com", - "IPv4": "45.159.98.253", - "IPv6": "2a00:dd80:40:100::3f", - "CanPort80": true - }, - { - "Name": "22d", - "RegionID": 22, - "HostName": "derp22d.tailscale.com", - "IPv4": "45.159.98.145", - "IPv6": "2a00:dd80:40:100::211", - "CanPort80": true - }, - { - "Name": "22b", - "RegionID": 22, - "HostName": "derp22b.tailscale.com", - "IPv4": "45.159.98.196", - "IPv6": "2a00:dd80:40:100::316", - "CanPort80": true - } - ] - }, - "23": { - "RegionID": 23, - "RegionCode": "dbi", - "RegionName": "Dubai", - "Latitude": 25.263056, - "Longitude": 55.297222, - "Nodes": [ - { - "Name": "23c", - "RegionID": 23, - "HostName": "derp23c.tailscale.com", - "IPv4": "185.34.3.207", - "IPv6": "2a00:dd80:3f:100::a50", - "CanPort80": true - }, - { - "Name": "23d", - "RegionID": 23, - "HostName": "derp23d.tailscale.com", - "IPv4": "185.34.3.75", - "IPv6": "2a00:dd80:3f:100::97e", - "CanPort80": true - }, - { - "Name": "23b", - "RegionID": 23, - "HostName": "derp23b.tailscale.com", - "IPv4": "185.34.3.232", - "IPv6": "2a00:dd80:3f:100::76f", - "CanPort80": true - } - ] - }, - "24": { - "RegionID": 24, - "RegionCode": "hnl", - "RegionName": "Honolulu", - "Latitude": 21.306944, - "Longitude": -157.858333, - "Nodes": [ - { - "Name": "24c", - "RegionID": 24, - "HostName": "derp24c.tailscale.com", - "IPv4": "208.83.233.233", - "IPv6": "2001:19f0:c000:c591:5400:04ff:fe26:2c5f", - "CanPort80": true - }, - { - "Name": "24d", - "RegionID": 24, - "HostName": "derp24d.tailscale.com", - "IPv4": "208.72.155.133", - "IPv6": "2001:19f0:c000:c564:5400:04ff:fe26:2ba8", - "CanPort80": true - }, - { - "Name": "24b", - "RegionID": 24, - "HostName": "derp24b.tailscale.com", - "IPv4": "208.83.234.151", - "IPv6": "2001:19f0:c000:c586:5400:04ff:fe26:2ba6", - "CanPort80": true - } - ] - }, - "25": { - "RegionID": 25, - "RegionCode": "nai", - "RegionName": "Nairobi", - "Latitude": -1.286389, - "Longitude": 36.817222, - "Nodes": [ - { - "Name": "25c", - "RegionID": 25, - "HostName": "derp25c.tailscale.com", - "IPv4": "102.67.167.37", - "IPv6": "2c0f:edb0:2000:1::2c7", - "CanPort80": true - }, - { - "Name": "25d", - "RegionID": 25, - "HostName": "derp25d.tailscale.com", - "IPv4": "102.67.167.188", - "IPv6": "2c0f:edb0:2000:1::188", - "CanPort80": true - }, - { - "Name": "25b", - "RegionID": 25, - "HostName": "derp25b.tailscale.com", - "IPv4": "102.67.167.245", - "IPv6": "2c0f:edb0:2000:1::2e9", - "CanPort80": true - } - ] - }, - "26": { - "RegionID": 26, - "RegionCode": "nue", - "RegionName": "Nuremberg", - "Latitude": 49.453889, - "Longitude": 11.0775, - "Nodes": [ - { - "Name": "26c", - "RegionID": 26, - "HostName": "derp26c.tailscale.com", - "IPv4": "49.12.193.137", - "IPv6": "2a01:4f8:1c1c:5c70::1", - "CanPort80": true - }, - { - "Name": "26d", - "RegionID": 26, - "HostName": "derp26d.tailscale.com", - "IPv4": "49.13.204.141", - "IPv6": "2a01:4f8:1c0c:7d06::1", - "CanPort80": true - }, - { - "Name": "26b", - "RegionID": 26, - "HostName": "derp26b.tailscale.com", - "IPv4": "167.235.72.200", - "IPv6": "2a01:4f8:1c1c:47b6::1", - "CanPort80": true - } - ] - }, - "27": { - "RegionID": 27, - "RegionCode": "iad", - "RegionName": "Ashburn", - "Latitude": 39.03, - "Longitude": -77.471111, - "Nodes": [ - { - "Name": "27d", - "RegionID": 27, - "HostName": "derp27d.tailscale.com", - "IPv4": "178.156.152.106", - "IPv6": "2a01:4ff:f0:3c8e::1", - "CanPort80": true - }, - { - "Name": "27c", - "RegionID": 27, - "HostName": "derp27c.tailscale.com", - "IPv4": "178.156.152.91", - "IPv6": "2a01:4ff:f0:3913::1", - "CanPort80": true - }, - { - "Name": "27e", - "RegionID": 27, - "HostName": "derp27e.tailscale.com", - "IPv4": "178.156.134.232", - "IPv6": "2a01:4ff:f0:28d4::1", - "CanPort80": true - }, - { - "Name": "27b", - "RegionID": 27, - "HostName": "derp27b.tailscale.com", - "IPv4": "5.161.218.233", - "IPv6": "2a01:4ff:f0:3db9::1", - "CanPort80": true - } - ] - }, - "28": { - "RegionID": 28, - "RegionCode": "hel", - "RegionName": "Helsinki", - "Latitude": 60.170833, - "Longitude": 24.9375, - "Nodes": [ - { - "Name": "28c", - "RegionID": 28, - "HostName": "derp28c.tailscale.com", - "IPv4": "95.217.2.165", - "IPv6": "2a01:4f9:c012:cd74::1", - "CanPort80": true - }, - { - "Name": "28d", - "RegionID": 28, - "HostName": "derp28d.tailscale.com", - "IPv4": "157.180.28.32", - "IPv6": "2a01:4f9:c012:2e5b::1", - "CanPort80": true - }, - { - "Name": "28b", - "RegionID": 28, - "HostName": "derp28b.tailscale.com", - "IPv4": "65.109.143.62", - "IPv6": "2a01:4f9:c012:d55c::1", - "CanPort80": true - } - ] - }, - "3": { - "RegionID": 3, - "RegionCode": "sin", - "RegionName": "Singapore", - "Latitude": 1.3521, - "Longitude": 103.8198, - "Nodes": [ - { - "Name": "3g", - "RegionID": 3, - "HostName": "derp3g.tailscale.com", - "IPv4": "172.237.72.79", - "IPv6": "2600:3c15::2000:adff:fe08:6fab", - "CanPort80": true - }, - { - "Name": "3f", - "RegionID": 3, - "HostName": "derp3f.tailscale.com", - "IPv4": "172.237.72.8", - "IPv6": "2600:3c15::2000:53ff:fe48:a668", - "CanPort80": true - }, - { - "Name": "3h", - "RegionID": 3, - "HostName": "derp3h.tailscale.com", - "IPv4": "172.237.66.30", - "IPv6": "2600:3c15::2000:3dff:fe44:50aa", - "CanPort80": true - }, - { - "Name": "3e", - "RegionID": 3, - "HostName": "derp3e.tailscale.com", - "IPv4": "172.237.72.43", - "IPv6": "2600:3c15::2000:6cff:fee4:d799", - "CanPort80": true - } - ] - }, - "4": { - "RegionID": 4, - "RegionCode": "fra", - "RegionName": "Frankfurt", - "Latitude": 50.1109, - "Longitude": 8.6821, - "Nodes": [ - { - "Name": "4h", - "RegionID": 4, - "HostName": "derp4h.tailscale.com", - "IPv4": "185.40.234.77", - "IPv6": "2a00:dd80:20::bcf", - "CanPort80": true - }, - { - "Name": "4g", - "RegionID": 4, - "HostName": "derp4g.tailscale.com", - "IPv4": "185.40.234.113", - "IPv6": "2a00:dd80:20::8f", - "CanPort80": true - }, - { - "Name": "4i", - "RegionID": 4, - "HostName": "derp4i.tailscale.com", - "IPv4": "185.40.234.53", - "IPv6": "2a00:dd80:20::8a6", - "CanPort80": true - }, - { - "Name": "4f", - "RegionID": 4, - "HostName": "derp4f.tailscale.com", - "IPv4": "185.40.234.219", - "IPv6": "2a00:dd80:20::a25", - "CanPort80": true - } - ] - }, - "5": { - "RegionID": 5, - "RegionCode": "syd", - "RegionName": "Sydney", - "Latitude": -33.867778, - "Longitude": 151.21, - "Nodes": [ - { - "Name": "5f", - "RegionID": 5, - "HostName": "derp5f.tailscale.com", - "IPv4": "172.105.166.103", - "IPv6": "2400:8907::2000:ccff:fe1f:80da", - "CanPort80": true - }, - { - "Name": "5g", - "RegionID": 5, - "HostName": "derp5g.tailscale.com", - "IPv4": "172.105.169.57", - "IPv6": "2400:8907::2000:2fff:fea7:57f4", - "CanPort80": true - }, - { - "Name": "5e", - "RegionID": 5, - "HostName": "derp5e.tailscale.com", - "IPv4": "172.105.179.230", - "IPv6": "2400:8907::2000:ceff:fe8d:4f4e", - "CanPort80": true - } - ] - }, - "6": { - "RegionID": 6, - "RegionCode": "blr", - "RegionName": "Bengaluru", - "Latitude": 12.9716, - "Longitude": 77.5946, - "Nodes": [ - { - "Name": "6a", - "RegionID": 6, - "HostName": "derp6.tailscale.com", - "IPv4": "68.183.90.120", - "IPv6": "2400:6180:100:d0::982:d001", - "CanPort80": true - } - ] - }, - "7": { - "RegionID": 7, - "RegionCode": "tok", - "RegionName": "Tokyo", - "Latitude": 35.6764, - "Longitude": 139.65, - "Nodes": [ - { - "Name": "7g", - "RegionID": 7, - "HostName": "derp7g.tailscale.com", - "IPv4": "172.238.6.179", - "IPv6": "2600:3c18::2000:3fff:fe80:3ebd", - "CanPort80": true - }, - { - "Name": "7f", - "RegionID": 7, - "HostName": "derp7f.tailscale.com", - "IPv4": "172.238.6.34", - "IPv6": "2600:3c18::2000:acff:fe8e:3ed5", - "CanPort80": true - }, - { - "Name": "7h", - "RegionID": 7, - "HostName": "derp7h.tailscale.com", - "IPv4": "172.237.28.183", - "IPv6": "2600:3c18::2000:b1ff:fea9:4560", - "CanPort80": true - }, - { - "Name": "7e", - "RegionID": 7, - "HostName": "derp7e.tailscale.com", - "IPv4": "172.238.6.180", - "IPv6": "2600:3c18::2000:60ff:fe0f:6e83", - "STUNOnly": true, - "CanPort80": true - } - ] - }, - "8": { - "RegionID": 8, - "RegionCode": "lhr", - "RegionName": "London", - "Latitude": 51.5072, - "Longitude": 0.1276, - "Nodes": [ - { - "Name": "8f", - "RegionID": 8, - "HostName": "derp8f.tailscale.com", - "IPv4": "176.58.88.183", - "IPv6": "2a00:dd80:3a::dfa", - "CanPort80": true - }, - { - "Name": "8g", - "RegionID": 8, - "HostName": "derp8g.tailscale.com", - "IPv4": "176.58.92.254", - "IPv6": "2a00:dd80:3a::ed", - "CanPort80": true - }, - { - "Name": "8e", - "RegionID": 8, - "HostName": "derp8e.tailscale.com", - "IPv4": "176.58.92.144", - "IPv6": "2a00:dd80:3a::b33", - "CanPort80": true - } - ] - }, - "9": { - "RegionID": 9, - "RegionCode": "dfw", - "RegionName": "Dallas", - "Latitude": 32.779167, - "Longitude": -96.808889, - "Nodes": [ - { - "Name": "9e", - "RegionID": 9, - "HostName": "derp9e.tailscale.com", - "IPv4": "192.73.248.83", - "IPv6": "2607:f740:100::359", - "CanPort80": true - }, - { - "Name": "9f", - "RegionID": 9, - "HostName": "derp9f.tailscale.com", - "IPv4": "209.177.156.197", - "IPv6": "2607:f740:100::cad", - "CanPort80": true - }, - { - "Name": "9d", - "RegionID": 9, - "HostName": "derp9d.tailscale.com", - "IPv4": "209.177.156.94", - "IPv6": "2607:f740:100::c05", - "CanPort80": true - } - ] - } - } - }, - "DisplayMessages": null, - "TKAEnabled": false, - "TKAHead": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", - "Domain": "kratail2tid@passkey", - "DomainAuditLogID": "", - "UserProfiles": { - "301794218943819": { - "ID": 301794218943819, - "LoginName": "tagged-prod.tail78f774.ts.net", - "DisplayName": "tagged-prod" - } - } + "PacketFilterRules": 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.124.195.93": { - "peer_name": "exit-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-server/tailscaled.sock whois --json 100.124.195.93", - "response": null - }, - "100.116.18.24": { - "peer_name": "exit-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-server/tailscaled.sock whois --json 100.116.18.24", - "response": null - }, - "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.107.162.14": { - "peer_name": "group-a-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-server/tailscaled.sock whois --json 100.107.162.14", - "response": null - }, - "100.77.135.18": { - "peer_name": "group-b-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-server/tailscaled.sock whois --json 100.77.135.18", - "response": null - }, - "100.105.127.107": { - "peer_name": "multi-exit-router", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-server/tailscaled.sock whois --json 100.105.127.107", - "response": null - }, - "100.109.43.124": { - "peer_name": "router-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-server/tailscaled.sock whois --json 100.109.43.124", - "response": null - }, - "100.65.172.123": { - "peer_name": "router-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-server/tailscaled.sock whois --json 100.65.172.123", - "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 - } - }, "netmap": { - "SelfNode": { - "ID": 1440249486084758, - "StableID": "nXRbBtuHFC11CNTRL", - "Name": "tagged-server.tail78f774.ts.net.", - "User": 1440249486084758, - "Key": "nodekey:7d5c34b3e8082069d0a82838165c33f8e1b5eb32c6211c2d23d4fe8fb9ec4a19", - "DiscoKey": "discokey:aa5732e314175928eff41cc8f8a7b6edd4694b7d00e420a6573ecc11a88cb203", - "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:57971", "10.65.0.27:57971", "172.17.0.1:57971"], - "Hostinfo": { - "Hostname": "tagged-server", - "Services": [ - { "Proto": "peerapi4", "Port": 46499 }, - { "Proto": "peerapi6", "Port": 46499 }, - { "Proto": "peerapi-dns-proxy", "Port": 1 } - ] - }, - "Created": "2026-01-23T10:10:26.365653609Z", - "Tags": ["tag:server"], - "MachineAuthorized": true, - "CapMap": { - "https://tailscale.com/cap/file-sharing": null, - "https://tailscale.com/cap/is-owner": null, - "https://tailscale.com/cap/ssh": null, - "https://tailscale.com/cap/tailnet-lock": null, - "probe-udp-lifetime": null, - "ssh-behavior-v1": null, - "ssh-env-vars": null, - "store-appc-routes": null, - "tailnet-display-name": ["kratail2tid@passkey"] - }, - "ComputedName": "tagged-server", - "ComputedNameWithHost": "tagged-server" - }, - "AllCaps": [ - "https://tailscale.com/cap/is-owner", - "probe-udp-lifetime", - "store-appc-routes", - "https://tailscale.com/cap/ssh", - "ssh-behavior-v1", - "ssh-env-vars", - "https://tailscale.com/cap/file-sharing", - "https://tailscale.com/cap/tailnet-lock", - "tailnet-display-name" - ], - "NodeKey": "nodekey:7d5c34b3e8082069d0a82838165c33f8e1b5eb32c6211c2d23d4fe8fb9ec4a19", - "MachineKey": "mkey:7d9c55c88bb618638f3f049b95c797f64eb0259810146d2644fef3e53acfdf6b", "Peers": [], - "DNS": { - "Routes": { - "tail78f774.ts.net.": null, - "ts.net.": [{ "Addr": "199.247.155.53" }, { "Addr": "2620:111:8007::53" }] - }, - "Domains": ["tail78f774.ts.net"], - "Proxied": true, - "ExitNodeFilteredSet": [".ts.net", ".tailscale.net"] - }, - "PacketFilter": [], - "PacketFilterRules": null, - "SSHPolicy": { "rules": [] }, - "CollectServices": false, - "DERPMap": { - "Regions": { - "1": { - "RegionID": 1, - "RegionCode": "nyc", - "RegionName": "New York City", - "Latitude": 40.7128, - "Longitude": -74.006, - "Nodes": [ - { - "Name": "1h", - "RegionID": 1, - "HostName": "derp1h.tailscale.com", - "IPv4": "199.38.181.93", - "IPv6": "2607:f740:f::afd", - "CanPort80": true - }, - { - "Name": "1g", - "RegionID": 1, - "HostName": "derp1g.tailscale.com", - "IPv4": "209.177.145.120", - "IPv6": "2607:f740:f::3eb", - "CanPort80": true - }, - { - "Name": "1i", - "RegionID": 1, - "HostName": "derp1i.tailscale.com", - "IPv4": "199.38.181.103", - "IPv6": "2607:f740:f::e19", - "CanPort80": true - }, - { - "Name": "1f", - "RegionID": 1, - "HostName": "derp1f.tailscale.com", - "IPv4": "199.38.181.104", - "IPv6": "2607:f740:f::bc", - "CanPort80": true - } - ] - }, - "10": { - "RegionID": 10, - "RegionCode": "sea", - "RegionName": "Seattle", - "Latitude": 47.609722, - "Longitude": -122.333056, - "Nodes": [ - { - "Name": "10c", - "RegionID": 10, - "HostName": "derp10c.tailscale.com", - "IPv4": "192.73.240.121", - "IPv6": "2607:f740:14::40c", - "CanPort80": true - }, - { - "Name": "10d", - "RegionID": 10, - "HostName": "derp10d.tailscale.com", - "IPv4": "192.73.240.132", - "IPv6": "2607:f740:14::500", - "CanPort80": true - }, - { - "Name": "10b", - "RegionID": 10, - "HostName": "derp10b.tailscale.com", - "IPv4": "192.73.240.161", - "IPv6": "2607:f740:14::61c", - "CanPort80": true - } - ] - }, - "11": { - "RegionID": 11, - "RegionCode": "sao", - "RegionName": "São Paulo", - "Latitude": -23.55, - "Longitude": -46.633333, - "Nodes": [ - { - "Name": "11f", - "RegionID": 11, - "HostName": "derp11f.tailscale.com", - "IPv4": "172.237.61.197", - "IPv6": "2600:3c0d::2000:3bff:fe44:6166", - "CanPort80": true - }, - { - "Name": "11g", - "RegionID": 11, - "HostName": "derp11g.tailscale.com", - "IPv4": "172.237.61.190", - "IPv6": "2600:3c0d::2000:62ff:febe:2e67", - "CanPort80": true - }, - { - "Name": "11e", - "RegionID": 11, - "HostName": "derp11e.tailscale.com", - "IPv4": "172.237.61.194", - "IPv6": "2600:3c0d::2000:d2ff:fe43:1790", - "CanPort80": true - } - ] - }, - "12": { - "RegionID": 12, - "RegionCode": "ord", - "RegionName": "Chicago", - "Latitude": 41.881944, - "Longitude": -87.627778, - "Nodes": [ - { - "Name": "12e", - "RegionID": 12, - "HostName": "derp12e.tailscale.com", - "IPv4": "209.177.158.15", - "IPv6": "2607:f740:e::b17", - "CanPort80": true - }, - { - "Name": "12f", - "RegionID": 12, - "HostName": "derp12f.tailscale.com", - "IPv4": "199.38.182.118", - "IPv6": "2607:f740:e::4c8", - "CanPort80": true - }, - { - "Name": "12d", - "RegionID": 12, - "HostName": "derp12d.tailscale.com", - "IPv4": "209.177.158.246", - "IPv6": "2607:f740:e::811", - "CanPort80": true - } - ] - }, - "13": { - "RegionID": 13, - "RegionCode": "den", - "RegionName": "Denver", - "Latitude": 39.7392, - "Longitude": -104.9849, - "Nodes": [ - { - "Name": "13c", - "RegionID": 13, - "HostName": "derp13c.tailscale.com", - "IPv4": "192.73.242.28", - "IPv6": "2607:f740:16::5c", - "CanPort80": true - }, - { - "Name": "13d", - "RegionID": 13, - "HostName": "derp13d.tailscale.com", - "IPv4": "192.73.242.204", - "IPv6": "2607:f740:16::c23", - "CanPort80": true - }, - { - "Name": "13b", - "RegionID": 13, - "HostName": "derp13b.tailscale.com", - "IPv4": "192.73.242.187", - "IPv6": "2607:f740:16::640", - "CanPort80": true - } - ] - }, - "14": { - "RegionID": 14, - "RegionCode": "ams", - "RegionName": "Amsterdam", - "Latitude": 52.372778, - "Longitude": 4.893611, - "Nodes": [ - { - "Name": "14c", - "RegionID": 14, - "HostName": "derp14c.tailscale.com", - "IPv4": "176.58.93.147", - "IPv6": "2a00:dd80:3c::b09", - "CanPort80": true - }, - { - "Name": "14d", - "RegionID": 14, - "HostName": "derp14d.tailscale.com", - "IPv4": "176.58.93.154", - "IPv6": "2a00:dd80:3c::3d5", - "CanPort80": true - }, - { - "Name": "14b", - "RegionID": 14, - "HostName": "derp14b.tailscale.com", - "IPv4": "176.58.93.248", - "IPv6": "2a00:dd80:3c::807", - "CanPort80": true - } - ] - }, - "15": { - "RegionID": 15, - "RegionCode": "jnb", - "RegionName": "Johannesburg", - "Latitude": -26.204444, - "Longitude": 28.045556, - "Nodes": [ - { - "Name": "15c", - "RegionID": 15, - "HostName": "derp15c.tailscale.com", - "IPv4": "102.67.165.185", - "IPv6": "2c0f:edb0:0:10::b59", - "CanPort80": true - }, - { - "Name": "15d", - "RegionID": 15, - "HostName": "derp15d.tailscale.com", - "IPv4": "102.67.165.36", - "IPv6": "2c0f:edb0:0:10::599", - "CanPort80": true - }, - { - "Name": "15b", - "RegionID": 15, - "HostName": "derp15b.tailscale.com", - "IPv4": "102.67.165.90", - "IPv6": "2c0f:edb0:0:10::963", - "CanPort80": true - } - ] - }, - "16": { - "RegionID": 16, - "RegionCode": "mia", - "RegionName": "Miami", - "Latitude": 25.78, - "Longitude": -80.21, - "Nodes": [ - { - "Name": "16c", - "RegionID": 16, - "HostName": "derp16c.tailscale.com", - "IPv4": "192.73.243.229", - "IPv6": "2607:f740:17::4e4", - "CanPort80": true - }, - { - "Name": "16d", - "RegionID": 16, - "HostName": "derp16d.tailscale.com", - "IPv4": "192.73.243.141", - "IPv6": "2607:f740:17::475", - "CanPort80": true - }, - { - "Name": "16b", - "RegionID": 16, - "HostName": "derp16b.tailscale.com", - "IPv4": "192.73.243.135", - "IPv6": "2607:f740:17::476", - "CanPort80": true - } - ] - }, - "17": { - "RegionID": 17, - "RegionCode": "lax", - "RegionName": "Los Angeles", - "Latitude": 34.05, - "Longitude": -118.25, - "Nodes": [ - { - "Name": "17c", - "RegionID": 17, - "HostName": "derp17c.tailscale.com", - "IPv4": "208.111.40.12", - "IPv6": "2607:f740:c::10", - "CanPort80": true - }, - { - "Name": "17d", - "RegionID": 17, - "HostName": "derp17d.tailscale.com", - "IPv4": "208.111.40.216", - "IPv6": "2607:f740:c::e1b", - "CanPort80": true - }, - { - "Name": "17b", - "RegionID": 17, - "HostName": "derp17b.tailscale.com", - "IPv4": "192.73.244.245", - "IPv6": "2607:f740:c::646", - "CanPort80": true - } - ] - }, - "18": { - "RegionID": 18, - "RegionCode": "par", - "RegionName": "Paris", - "Latitude": 48.856667, - "Longitude": 2.352222, - "Nodes": [ - { - "Name": "18c", - "RegionID": 18, - "HostName": "derp18c.tailscale.com", - "IPv4": "176.58.90.207", - "IPv6": "2a00:dd80:3e::c19", - "CanPort80": true - }, - { - "Name": "18d", - "RegionID": 18, - "HostName": "derp18d.tailscale.com", - "IPv4": "176.58.90.104", - "IPv6": "2a00:dd80:3e::f2e", - "CanPort80": true - }, - { - "Name": "18b", - "RegionID": 18, - "HostName": "derp18b.tailscale.com", - "IPv4": "176.58.90.147", - "IPv6": "2a00:dd80:3e::363", - "CanPort80": true - } - ] - }, - "19": { - "RegionID": 19, - "RegionCode": "mad", - "RegionName": "Madrid", - "Latitude": 40.416944, - "Longitude": -3.703333, - "Nodes": [ - { - "Name": "19c", - "RegionID": 19, - "HostName": "derp19c.tailscale.com", - "IPv4": "45.159.97.61", - "IPv6": "2a00:dd80:14:10::20", - "CanPort80": true - }, - { - "Name": "19d", - "RegionID": 19, - "HostName": "derp19d.tailscale.com", - "IPv4": "45.159.97.233", - "IPv6": "2a00:dd80:14:10::34a", - "CanPort80": true - }, - { - "Name": "19b", - "RegionID": 19, - "HostName": "derp19b.tailscale.com", - "IPv4": "45.159.97.144", - "IPv6": "2a00:dd80:14:10::335", - "CanPort80": true - } - ] - }, - "2": { - "RegionID": 2, - "RegionCode": "sfo", - "RegionName": "San Francisco", - "Latitude": 37.7775, - "Longitude": -122.416389, - "Nodes": [ - { - "Name": "2e", - "RegionID": 2, - "HostName": "derp2e.tailscale.com", - "IPv4": "192.73.252.134", - "IPv6": "2607:f740:0:3f::44c", - "CanPort80": true - }, - { - "Name": "2f", - "RegionID": 2, - "HostName": "derp2f.tailscale.com", - "IPv4": "208.111.34.178", - "IPv6": "2607:f740:0:3f::f4", - "CanPort80": true - }, - { - "Name": "2d", - "RegionID": 2, - "HostName": "derp2d.tailscale.com", - "IPv4": "192.73.252.65", - "IPv6": "2607:f740:0:3f::287", - "CanPort80": true - } - ] - }, - "20": { - "RegionID": 20, - "RegionCode": "hkg", - "RegionName": "Hong Kong", - "Latitude": 22.3193, - "Longitude": 114.1694, - "Nodes": [ - { - "Name": "20c", - "RegionID": 20, - "HostName": "derp20c.tailscale.com", - "IPv4": "205.147.105.30", - "IPv6": "2403:2500:8000:1::5fb", - "CanPort80": true - }, - { - "Name": "20d", - "RegionID": 20, - "HostName": "derp20d.tailscale.com", - "IPv4": "205.147.105.78", - "IPv6": "2403:2500:8000:1::e9a", - "CanPort80": true - }, - { - "Name": "20b", - "RegionID": 20, - "HostName": "derp20b.tailscale.com", - "IPv4": "103.6.84.152", - "IPv6": "2403:2500:8000:1::ef6", - "CanPort80": true - } - ] - }, - "21": { - "RegionID": 21, - "RegionCode": "tor", - "RegionName": "Toronto", - "Latitude": 43.741667, - "Longitude": -79.373333, - "Nodes": [ - { - "Name": "21c", - "RegionID": 21, - "HostName": "derp21c.tailscale.com", - "IPv4": "162.248.221.215", - "IPv6": "2607:f740:50::f10", - "CanPort80": true - }, - { - "Name": "21d", - "RegionID": 21, - "HostName": "derp21d.tailscale.com", - "IPv4": "162.248.221.248", - "IPv6": "2607:f740:50::ca4", - "CanPort80": true - }, - { - "Name": "21b", - "RegionID": 21, - "HostName": "derp21b.tailscale.com", - "IPv4": "162.248.221.199", - "IPv6": "2607:f740:50::1d1", - "CanPort80": true - } - ] - }, - "22": { - "RegionID": 22, - "RegionCode": "waw", - "RegionName": "Warsaw", - "Latitude": 52.23, - "Longitude": 21.011111, - "Nodes": [ - { - "Name": "22c", - "RegionID": 22, - "HostName": "derp22c.tailscale.com", - "IPv4": "45.159.98.253", - "IPv6": "2a00:dd80:40:100::3f", - "CanPort80": true - }, - { - "Name": "22d", - "RegionID": 22, - "HostName": "derp22d.tailscale.com", - "IPv4": "45.159.98.145", - "IPv6": "2a00:dd80:40:100::211", - "CanPort80": true - }, - { - "Name": "22b", - "RegionID": 22, - "HostName": "derp22b.tailscale.com", - "IPv4": "45.159.98.196", - "IPv6": "2a00:dd80:40:100::316", - "CanPort80": true - } - ] - }, - "23": { - "RegionID": 23, - "RegionCode": "dbi", - "RegionName": "Dubai", - "Latitude": 25.263056, - "Longitude": 55.297222, - "Nodes": [ - { - "Name": "23c", - "RegionID": 23, - "HostName": "derp23c.tailscale.com", - "IPv4": "185.34.3.207", - "IPv6": "2a00:dd80:3f:100::a50", - "CanPort80": true - }, - { - "Name": "23d", - "RegionID": 23, - "HostName": "derp23d.tailscale.com", - "IPv4": "185.34.3.75", - "IPv6": "2a00:dd80:3f:100::97e", - "CanPort80": true - }, - { - "Name": "23b", - "RegionID": 23, - "HostName": "derp23b.tailscale.com", - "IPv4": "185.34.3.232", - "IPv6": "2a00:dd80:3f:100::76f", - "CanPort80": true - } - ] - }, - "24": { - "RegionID": 24, - "RegionCode": "hnl", - "RegionName": "Honolulu", - "Latitude": 21.306944, - "Longitude": -157.858333, - "Nodes": [ - { - "Name": "24c", - "RegionID": 24, - "HostName": "derp24c.tailscale.com", - "IPv4": "208.83.233.233", - "IPv6": "2001:19f0:c000:c591:5400:04ff:fe26:2c5f", - "CanPort80": true - }, - { - "Name": "24d", - "RegionID": 24, - "HostName": "derp24d.tailscale.com", - "IPv4": "208.72.155.133", - "IPv6": "2001:19f0:c000:c564:5400:04ff:fe26:2ba8", - "CanPort80": true - }, - { - "Name": "24b", - "RegionID": 24, - "HostName": "derp24b.tailscale.com", - "IPv4": "208.83.234.151", - "IPv6": "2001:19f0:c000:c586:5400:04ff:fe26:2ba6", - "CanPort80": true - } - ] - }, - "25": { - "RegionID": 25, - "RegionCode": "nai", - "RegionName": "Nairobi", - "Latitude": -1.286389, - "Longitude": 36.817222, - "Nodes": [ - { - "Name": "25c", - "RegionID": 25, - "HostName": "derp25c.tailscale.com", - "IPv4": "102.67.167.37", - "IPv6": "2c0f:edb0:2000:1::2c7", - "CanPort80": true - }, - { - "Name": "25d", - "RegionID": 25, - "HostName": "derp25d.tailscale.com", - "IPv4": "102.67.167.188", - "IPv6": "2c0f:edb0:2000:1::188", - "CanPort80": true - }, - { - "Name": "25b", - "RegionID": 25, - "HostName": "derp25b.tailscale.com", - "IPv4": "102.67.167.245", - "IPv6": "2c0f:edb0:2000:1::2e9", - "CanPort80": true - } - ] - }, - "26": { - "RegionID": 26, - "RegionCode": "nue", - "RegionName": "Nuremberg", - "Latitude": 49.453889, - "Longitude": 11.0775, - "Nodes": [ - { - "Name": "26c", - "RegionID": 26, - "HostName": "derp26c.tailscale.com", - "IPv4": "49.12.193.137", - "IPv6": "2a01:4f8:1c1c:5c70::1", - "CanPort80": true - }, - { - "Name": "26d", - "RegionID": 26, - "HostName": "derp26d.tailscale.com", - "IPv4": "49.13.204.141", - "IPv6": "2a01:4f8:1c0c:7d06::1", - "CanPort80": true - }, - { - "Name": "26b", - "RegionID": 26, - "HostName": "derp26b.tailscale.com", - "IPv4": "167.235.72.200", - "IPv6": "2a01:4f8:1c1c:47b6::1", - "CanPort80": true - } - ] - }, - "27": { - "RegionID": 27, - "RegionCode": "iad", - "RegionName": "Ashburn", - "Latitude": 39.03, - "Longitude": -77.471111, - "Nodes": [ - { - "Name": "27d", - "RegionID": 27, - "HostName": "derp27d.tailscale.com", - "IPv4": "178.156.152.106", - "IPv6": "2a01:4ff:f0:3c8e::1", - "CanPort80": true - }, - { - "Name": "27c", - "RegionID": 27, - "HostName": "derp27c.tailscale.com", - "IPv4": "178.156.152.91", - "IPv6": "2a01:4ff:f0:3913::1", - "CanPort80": true - }, - { - "Name": "27e", - "RegionID": 27, - "HostName": "derp27e.tailscale.com", - "IPv4": "178.156.134.232", - "IPv6": "2a01:4ff:f0:28d4::1", - "CanPort80": true - }, - { - "Name": "27b", - "RegionID": 27, - "HostName": "derp27b.tailscale.com", - "IPv4": "5.161.218.233", - "IPv6": "2a01:4ff:f0:3db9::1", - "CanPort80": true - } - ] - }, - "28": { - "RegionID": 28, - "RegionCode": "hel", - "RegionName": "Helsinki", - "Latitude": 60.170833, - "Longitude": 24.9375, - "Nodes": [ - { - "Name": "28c", - "RegionID": 28, - "HostName": "derp28c.tailscale.com", - "IPv4": "95.217.2.165", - "IPv6": "2a01:4f9:c012:cd74::1", - "CanPort80": true - }, - { - "Name": "28d", - "RegionID": 28, - "HostName": "derp28d.tailscale.com", - "IPv4": "157.180.28.32", - "IPv6": "2a01:4f9:c012:2e5b::1", - "CanPort80": true - }, - { - "Name": "28b", - "RegionID": 28, - "HostName": "derp28b.tailscale.com", - "IPv4": "65.109.143.62", - "IPv6": "2a01:4f9:c012:d55c::1", - "CanPort80": true - } - ] - }, - "3": { - "RegionID": 3, - "RegionCode": "sin", - "RegionName": "Singapore", - "Latitude": 1.3521, - "Longitude": 103.8198, - "Nodes": [ - { - "Name": "3g", - "RegionID": 3, - "HostName": "derp3g.tailscale.com", - "IPv4": "172.237.72.79", - "IPv6": "2600:3c15::2000:adff:fe08:6fab", - "CanPort80": true - }, - { - "Name": "3f", - "RegionID": 3, - "HostName": "derp3f.tailscale.com", - "IPv4": "172.237.72.8", - "IPv6": "2600:3c15::2000:53ff:fe48:a668", - "CanPort80": true - }, - { - "Name": "3h", - "RegionID": 3, - "HostName": "derp3h.tailscale.com", - "IPv4": "172.237.66.30", - "IPv6": "2600:3c15::2000:3dff:fe44:50aa", - "CanPort80": true - }, - { - "Name": "3e", - "RegionID": 3, - "HostName": "derp3e.tailscale.com", - "IPv4": "172.237.72.43", - "IPv6": "2600:3c15::2000:6cff:fee4:d799", - "CanPort80": true - } - ] - }, - "4": { - "RegionID": 4, - "RegionCode": "fra", - "RegionName": "Frankfurt", - "Latitude": 50.1109, - "Longitude": 8.6821, - "Nodes": [ - { - "Name": "4h", - "RegionID": 4, - "HostName": "derp4h.tailscale.com", - "IPv4": "185.40.234.77", - "IPv6": "2a00:dd80:20::bcf", - "CanPort80": true - }, - { - "Name": "4g", - "RegionID": 4, - "HostName": "derp4g.tailscale.com", - "IPv4": "185.40.234.113", - "IPv6": "2a00:dd80:20::8f", - "CanPort80": true - }, - { - "Name": "4i", - "RegionID": 4, - "HostName": "derp4i.tailscale.com", - "IPv4": "185.40.234.53", - "IPv6": "2a00:dd80:20::8a6", - "CanPort80": true - }, - { - "Name": "4f", - "RegionID": 4, - "HostName": "derp4f.tailscale.com", - "IPv4": "185.40.234.219", - "IPv6": "2a00:dd80:20::a25", - "CanPort80": true - } - ] - }, - "5": { - "RegionID": 5, - "RegionCode": "syd", - "RegionName": "Sydney", - "Latitude": -33.867778, - "Longitude": 151.21, - "Nodes": [ - { - "Name": "5f", - "RegionID": 5, - "HostName": "derp5f.tailscale.com", - "IPv4": "172.105.166.103", - "IPv6": "2400:8907::2000:ccff:fe1f:80da", - "CanPort80": true - }, - { - "Name": "5g", - "RegionID": 5, - "HostName": "derp5g.tailscale.com", - "IPv4": "172.105.169.57", - "IPv6": "2400:8907::2000:2fff:fea7:57f4", - "CanPort80": true - }, - { - "Name": "5e", - "RegionID": 5, - "HostName": "derp5e.tailscale.com", - "IPv4": "172.105.179.230", - "IPv6": "2400:8907::2000:ceff:fe8d:4f4e", - "CanPort80": true - } - ] - }, - "6": { - "RegionID": 6, - "RegionCode": "blr", - "RegionName": "Bengaluru", - "Latitude": 12.9716, - "Longitude": 77.5946, - "Nodes": [ - { - "Name": "6a", - "RegionID": 6, - "HostName": "derp6.tailscale.com", - "IPv4": "68.183.90.120", - "IPv6": "2400:6180:100:d0::982:d001", - "CanPort80": true - } - ] - }, - "7": { - "RegionID": 7, - "RegionCode": "tok", - "RegionName": "Tokyo", - "Latitude": 35.6764, - "Longitude": 139.65, - "Nodes": [ - { - "Name": "7g", - "RegionID": 7, - "HostName": "derp7g.tailscale.com", - "IPv4": "172.238.6.179", - "IPv6": "2600:3c18::2000:3fff:fe80:3ebd", - "CanPort80": true - }, - { - "Name": "7f", - "RegionID": 7, - "HostName": "derp7f.tailscale.com", - "IPv4": "172.238.6.34", - "IPv6": "2600:3c18::2000:acff:fe8e:3ed5", - "CanPort80": true - }, - { - "Name": "7h", - "RegionID": 7, - "HostName": "derp7h.tailscale.com", - "IPv4": "172.237.28.183", - "IPv6": "2600:3c18::2000:b1ff:fea9:4560", - "CanPort80": true - }, - { - "Name": "7e", - "RegionID": 7, - "HostName": "derp7e.tailscale.com", - "IPv4": "172.238.6.180", - "IPv6": "2600:3c18::2000:60ff:fe0f:6e83", - "STUNOnly": true, - "CanPort80": true - } - ] - }, - "8": { - "RegionID": 8, - "RegionCode": "lhr", - "RegionName": "London", - "Latitude": 51.5072, - "Longitude": 0.1276, - "Nodes": [ - { - "Name": "8f", - "RegionID": 8, - "HostName": "derp8f.tailscale.com", - "IPv4": "176.58.88.183", - "IPv6": "2a00:dd80:3a::dfa", - "CanPort80": true - }, - { - "Name": "8g", - "RegionID": 8, - "HostName": "derp8g.tailscale.com", - "IPv4": "176.58.92.254", - "IPv6": "2a00:dd80:3a::ed", - "CanPort80": true - }, - { - "Name": "8e", - "RegionID": 8, - "HostName": "derp8e.tailscale.com", - "IPv4": "176.58.92.144", - "IPv6": "2a00:dd80:3a::b33", - "CanPort80": true - } - ] - }, - "9": { - "RegionID": 9, - "RegionCode": "dfw", - "RegionName": "Dallas", - "Latitude": 32.779167, - "Longitude": -96.808889, - "Nodes": [ - { - "Name": "9e", - "RegionID": 9, - "HostName": "derp9e.tailscale.com", - "IPv4": "192.73.248.83", - "IPv6": "2607:f740:100::359", - "CanPort80": true - }, - { - "Name": "9f", - "RegionID": 9, - "HostName": "derp9f.tailscale.com", - "IPv4": "209.177.156.197", - "IPv6": "2607:f740:100::cad", - "CanPort80": true - }, - { - "Name": "9d", - "RegionID": 9, - "HostName": "derp9d.tailscale.com", - "IPv4": "209.177.156.94", - "IPv6": "2607:f740:100::c05", - "CanPort80": true - } - ] - } - } - }, - "DisplayMessages": null, - "TKAEnabled": false, - "TKAHead": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", - "Domain": "kratail2tid@passkey", - "DomainAuditLogID": "", - "UserProfiles": { - "1440249486084758": { - "ID": 1440249486084758, - "LoginName": "tagged-server.tail78f774.ts.net", - "DisplayName": "tagged-server" - } - } + "PacketFilterRules": 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.124.195.93": { - "peer_name": "exit-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-kris/tailscaled.sock whois --json 100.124.195.93", - "response": null - }, - "100.116.18.24": { - "peer_name": "exit-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-kris/tailscaled.sock whois --json 100.116.18.24", - "response": null - }, - "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.107.162.14": { - "peer_name": "group-a-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-kris/tailscaled.sock whois --json 100.107.162.14", - "response": null - }, - "100.77.135.18": { - "peer_name": "group-b-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-kris/tailscaled.sock whois --json 100.77.135.18", - "response": null - }, - "100.105.127.107": { - "peer_name": "multi-exit-router", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-kris/tailscaled.sock whois --json 100.105.127.107", - "response": null - }, - "100.109.43.124": { - "peer_name": "router-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-kris/tailscaled.sock whois --json 100.109.43.124", - "response": null - }, - "100.65.172.123": { - "peer_name": "router-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-kris/tailscaled.sock whois --json 100.65.172.123", - "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 - } - }, "netmap": { - "SelfNode": { - "ID": 7728836216590060, - "StableID": "nf4dJTRQM321CNTRL", - "Name": "user-kris.tail78f774.ts.net.", - "User": 4538565228176803, - "Key": "nodekey:40d0f8f49fd519e4a4a2b7d278dcc8863254d4fb8b0219f1d1304cdd172e795f", - "KeyExpiry": "2026-08-19T14:09:34Z", - "DiscoKey": "discokey:60de987544859962048376b0950731bfa8017a7fc7df694ef376d4bb42eb9871", - "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:59717", "10.65.0.27:59717", "172.17.0.1:59717"], - "Hostinfo": { - "Hostname": "user-kris", - "Services": [ - { "Proto": "peerapi4", "Port": 40159 }, - { "Proto": "peerapi6", "Port": 40159 }, - { "Proto": "peerapi-dns-proxy", "Port": 1 } - ] - }, - "Created": "2026-02-20T14:09:34.803901523Z", - "MachineAuthorized": true, - "CapMap": { - "https://tailscale.com/cap/file-sharing": null, - "https://tailscale.com/cap/is-admin": null, - "https://tailscale.com/cap/ssh": null, - "https://tailscale.com/cap/tailnet-lock": null, - "probe-udp-lifetime": null, - "ssh-behavior-v1": null, - "ssh-env-vars": null, - "store-appc-routes": null, - "tailnet-display-name": ["kratail2tid@passkey"] - }, - "ComputedName": "user-kris", - "ComputedNameWithHost": "user-kris" - }, - "AllCaps": [ - "probe-udp-lifetime", - "https://tailscale.com/cap/file-sharing", - "https://tailscale.com/cap/tailnet-lock", - "ssh-env-vars", - "https://tailscale.com/cap/ssh", - "store-appc-routes", - "tailnet-display-name", - "ssh-behavior-v1", - "https://tailscale.com/cap/is-admin" - ], - "NodeKey": "nodekey:40d0f8f49fd519e4a4a2b7d278dcc8863254d4fb8b0219f1d1304cdd172e795f", - "MachineKey": "mkey:ff16066d907c58407972ee4a05a30386bd21bc0b420d8f9290eb70b95b3e1457", "Peers": [], - "DNS": { - "Routes": { - "tail78f774.ts.net.": null, - "ts.net.": [{ "Addr": "199.247.155.53" }, { "Addr": "2620:111:8007::53" }] - }, - "Domains": ["tail78f774.ts.net"], - "Proxied": true, - "ExitNodeFilteredSet": [".ts.net", ".tailscale.net"] - }, - "PacketFilter": [], - "PacketFilterRules": null, - "SSHPolicy": { "rules": [] }, - "CollectServices": false, - "DERPMap": { - "Regions": { - "1": { - "RegionID": 1, - "RegionCode": "nyc", - "RegionName": "New York City", - "Latitude": 40.7128, - "Longitude": -74.006, - "Nodes": [ - { - "Name": "1h", - "RegionID": 1, - "HostName": "derp1h.tailscale.com", - "IPv4": "199.38.181.93", - "IPv6": "2607:f740:f::afd", - "CanPort80": true - }, - { - "Name": "1g", - "RegionID": 1, - "HostName": "derp1g.tailscale.com", - "IPv4": "209.177.145.120", - "IPv6": "2607:f740:f::3eb", - "CanPort80": true - }, - { - "Name": "1i", - "RegionID": 1, - "HostName": "derp1i.tailscale.com", - "IPv4": "199.38.181.103", - "IPv6": "2607:f740:f::e19", - "CanPort80": true - }, - { - "Name": "1f", - "RegionID": 1, - "HostName": "derp1f.tailscale.com", - "IPv4": "199.38.181.104", - "IPv6": "2607:f740:f::bc", - "CanPort80": true - } - ] - }, - "10": { - "RegionID": 10, - "RegionCode": "sea", - "RegionName": "Seattle", - "Latitude": 47.609722, - "Longitude": -122.333056, - "Nodes": [ - { - "Name": "10c", - "RegionID": 10, - "HostName": "derp10c.tailscale.com", - "IPv4": "192.73.240.121", - "IPv6": "2607:f740:14::40c", - "CanPort80": true - }, - { - "Name": "10d", - "RegionID": 10, - "HostName": "derp10d.tailscale.com", - "IPv4": "192.73.240.132", - "IPv6": "2607:f740:14::500", - "CanPort80": true - }, - { - "Name": "10b", - "RegionID": 10, - "HostName": "derp10b.tailscale.com", - "IPv4": "192.73.240.161", - "IPv6": "2607:f740:14::61c", - "CanPort80": true - } - ] - }, - "11": { - "RegionID": 11, - "RegionCode": "sao", - "RegionName": "São Paulo", - "Latitude": -23.55, - "Longitude": -46.633333, - "Nodes": [ - { - "Name": "11f", - "RegionID": 11, - "HostName": "derp11f.tailscale.com", - "IPv4": "172.237.61.197", - "IPv6": "2600:3c0d::2000:3bff:fe44:6166", - "CanPort80": true - }, - { - "Name": "11g", - "RegionID": 11, - "HostName": "derp11g.tailscale.com", - "IPv4": "172.237.61.190", - "IPv6": "2600:3c0d::2000:62ff:febe:2e67", - "CanPort80": true - }, - { - "Name": "11e", - "RegionID": 11, - "HostName": "derp11e.tailscale.com", - "IPv4": "172.237.61.194", - "IPv6": "2600:3c0d::2000:d2ff:fe43:1790", - "CanPort80": true - } - ] - }, - "12": { - "RegionID": 12, - "RegionCode": "ord", - "RegionName": "Chicago", - "Latitude": 41.881944, - "Longitude": -87.627778, - "Nodes": [ - { - "Name": "12e", - "RegionID": 12, - "HostName": "derp12e.tailscale.com", - "IPv4": "209.177.158.15", - "IPv6": "2607:f740:e::b17", - "CanPort80": true - }, - { - "Name": "12f", - "RegionID": 12, - "HostName": "derp12f.tailscale.com", - "IPv4": "199.38.182.118", - "IPv6": "2607:f740:e::4c8", - "CanPort80": true - }, - { - "Name": "12d", - "RegionID": 12, - "HostName": "derp12d.tailscale.com", - "IPv4": "209.177.158.246", - "IPv6": "2607:f740:e::811", - "CanPort80": true - } - ] - }, - "13": { - "RegionID": 13, - "RegionCode": "den", - "RegionName": "Denver", - "Latitude": 39.7392, - "Longitude": -104.9849, - "Nodes": [ - { - "Name": "13c", - "RegionID": 13, - "HostName": "derp13c.tailscale.com", - "IPv4": "192.73.242.28", - "IPv6": "2607:f740:16::5c", - "CanPort80": true - }, - { - "Name": "13d", - "RegionID": 13, - "HostName": "derp13d.tailscale.com", - "IPv4": "192.73.242.204", - "IPv6": "2607:f740:16::c23", - "CanPort80": true - }, - { - "Name": "13b", - "RegionID": 13, - "HostName": "derp13b.tailscale.com", - "IPv4": "192.73.242.187", - "IPv6": "2607:f740:16::640", - "CanPort80": true - } - ] - }, - "14": { - "RegionID": 14, - "RegionCode": "ams", - "RegionName": "Amsterdam", - "Latitude": 52.372778, - "Longitude": 4.893611, - "Nodes": [ - { - "Name": "14c", - "RegionID": 14, - "HostName": "derp14c.tailscale.com", - "IPv4": "176.58.93.147", - "IPv6": "2a00:dd80:3c::b09", - "CanPort80": true - }, - { - "Name": "14d", - "RegionID": 14, - "HostName": "derp14d.tailscale.com", - "IPv4": "176.58.93.154", - "IPv6": "2a00:dd80:3c::3d5", - "CanPort80": true - }, - { - "Name": "14b", - "RegionID": 14, - "HostName": "derp14b.tailscale.com", - "IPv4": "176.58.93.248", - "IPv6": "2a00:dd80:3c::807", - "CanPort80": true - } - ] - }, - "15": { - "RegionID": 15, - "RegionCode": "jnb", - "RegionName": "Johannesburg", - "Latitude": -26.204444, - "Longitude": 28.045556, - "Nodes": [ - { - "Name": "15c", - "RegionID": 15, - "HostName": "derp15c.tailscale.com", - "IPv4": "102.67.165.185", - "IPv6": "2c0f:edb0:0:10::b59", - "CanPort80": true - }, - { - "Name": "15d", - "RegionID": 15, - "HostName": "derp15d.tailscale.com", - "IPv4": "102.67.165.36", - "IPv6": "2c0f:edb0:0:10::599", - "CanPort80": true - }, - { - "Name": "15b", - "RegionID": 15, - "HostName": "derp15b.tailscale.com", - "IPv4": "102.67.165.90", - "IPv6": "2c0f:edb0:0:10::963", - "CanPort80": true - } - ] - }, - "16": { - "RegionID": 16, - "RegionCode": "mia", - "RegionName": "Miami", - "Latitude": 25.78, - "Longitude": -80.21, - "Nodes": [ - { - "Name": "16c", - "RegionID": 16, - "HostName": "derp16c.tailscale.com", - "IPv4": "192.73.243.229", - "IPv6": "2607:f740:17::4e4", - "CanPort80": true - }, - { - "Name": "16d", - "RegionID": 16, - "HostName": "derp16d.tailscale.com", - "IPv4": "192.73.243.141", - "IPv6": "2607:f740:17::475", - "CanPort80": true - }, - { - "Name": "16b", - "RegionID": 16, - "HostName": "derp16b.tailscale.com", - "IPv4": "192.73.243.135", - "IPv6": "2607:f740:17::476", - "CanPort80": true - } - ] - }, - "17": { - "RegionID": 17, - "RegionCode": "lax", - "RegionName": "Los Angeles", - "Latitude": 34.05, - "Longitude": -118.25, - "Nodes": [ - { - "Name": "17c", - "RegionID": 17, - "HostName": "derp17c.tailscale.com", - "IPv4": "208.111.40.12", - "IPv6": "2607:f740:c::10", - "CanPort80": true - }, - { - "Name": "17d", - "RegionID": 17, - "HostName": "derp17d.tailscale.com", - "IPv4": "208.111.40.216", - "IPv6": "2607:f740:c::e1b", - "CanPort80": true - }, - { - "Name": "17b", - "RegionID": 17, - "HostName": "derp17b.tailscale.com", - "IPv4": "192.73.244.245", - "IPv6": "2607:f740:c::646", - "CanPort80": true - } - ] - }, - "18": { - "RegionID": 18, - "RegionCode": "par", - "RegionName": "Paris", - "Latitude": 48.856667, - "Longitude": 2.352222, - "Nodes": [ - { - "Name": "18c", - "RegionID": 18, - "HostName": "derp18c.tailscale.com", - "IPv4": "176.58.90.207", - "IPv6": "2a00:dd80:3e::c19", - "CanPort80": true - }, - { - "Name": "18d", - "RegionID": 18, - "HostName": "derp18d.tailscale.com", - "IPv4": "176.58.90.104", - "IPv6": "2a00:dd80:3e::f2e", - "CanPort80": true - }, - { - "Name": "18b", - "RegionID": 18, - "HostName": "derp18b.tailscale.com", - "IPv4": "176.58.90.147", - "IPv6": "2a00:dd80:3e::363", - "CanPort80": true - } - ] - }, - "19": { - "RegionID": 19, - "RegionCode": "mad", - "RegionName": "Madrid", - "Latitude": 40.416944, - "Longitude": -3.703333, - "Nodes": [ - { - "Name": "19c", - "RegionID": 19, - "HostName": "derp19c.tailscale.com", - "IPv4": "45.159.97.61", - "IPv6": "2a00:dd80:14:10::20", - "CanPort80": true - }, - { - "Name": "19d", - "RegionID": 19, - "HostName": "derp19d.tailscale.com", - "IPv4": "45.159.97.233", - "IPv6": "2a00:dd80:14:10::34a", - "CanPort80": true - }, - { - "Name": "19b", - "RegionID": 19, - "HostName": "derp19b.tailscale.com", - "IPv4": "45.159.97.144", - "IPv6": "2a00:dd80:14:10::335", - "CanPort80": true - } - ] - }, - "2": { - "RegionID": 2, - "RegionCode": "sfo", - "RegionName": "San Francisco", - "Latitude": 37.7775, - "Longitude": -122.416389, - "Nodes": [ - { - "Name": "2e", - "RegionID": 2, - "HostName": "derp2e.tailscale.com", - "IPv4": "192.73.252.134", - "IPv6": "2607:f740:0:3f::44c", - "CanPort80": true - }, - { - "Name": "2f", - "RegionID": 2, - "HostName": "derp2f.tailscale.com", - "IPv4": "208.111.34.178", - "IPv6": "2607:f740:0:3f::f4", - "CanPort80": true - }, - { - "Name": "2d", - "RegionID": 2, - "HostName": "derp2d.tailscale.com", - "IPv4": "192.73.252.65", - "IPv6": "2607:f740:0:3f::287", - "CanPort80": true - } - ] - }, - "20": { - "RegionID": 20, - "RegionCode": "hkg", - "RegionName": "Hong Kong", - "Latitude": 22.3193, - "Longitude": 114.1694, - "Nodes": [ - { - "Name": "20c", - "RegionID": 20, - "HostName": "derp20c.tailscale.com", - "IPv4": "205.147.105.30", - "IPv6": "2403:2500:8000:1::5fb", - "CanPort80": true - }, - { - "Name": "20d", - "RegionID": 20, - "HostName": "derp20d.tailscale.com", - "IPv4": "205.147.105.78", - "IPv6": "2403:2500:8000:1::e9a", - "CanPort80": true - }, - { - "Name": "20b", - "RegionID": 20, - "HostName": "derp20b.tailscale.com", - "IPv4": "103.6.84.152", - "IPv6": "2403:2500:8000:1::ef6", - "CanPort80": true - } - ] - }, - "21": { - "RegionID": 21, - "RegionCode": "tor", - "RegionName": "Toronto", - "Latitude": 43.741667, - "Longitude": -79.373333, - "Nodes": [ - { - "Name": "21c", - "RegionID": 21, - "HostName": "derp21c.tailscale.com", - "IPv4": "162.248.221.215", - "IPv6": "2607:f740:50::f10", - "CanPort80": true - }, - { - "Name": "21d", - "RegionID": 21, - "HostName": "derp21d.tailscale.com", - "IPv4": "162.248.221.248", - "IPv6": "2607:f740:50::ca4", - "CanPort80": true - }, - { - "Name": "21b", - "RegionID": 21, - "HostName": "derp21b.tailscale.com", - "IPv4": "162.248.221.199", - "IPv6": "2607:f740:50::1d1", - "CanPort80": true - } - ] - }, - "22": { - "RegionID": 22, - "RegionCode": "waw", - "RegionName": "Warsaw", - "Latitude": 52.23, - "Longitude": 21.011111, - "Nodes": [ - { - "Name": "22c", - "RegionID": 22, - "HostName": "derp22c.tailscale.com", - "IPv4": "45.159.98.253", - "IPv6": "2a00:dd80:40:100::3f", - "CanPort80": true - }, - { - "Name": "22d", - "RegionID": 22, - "HostName": "derp22d.tailscale.com", - "IPv4": "45.159.98.145", - "IPv6": "2a00:dd80:40:100::211", - "CanPort80": true - }, - { - "Name": "22b", - "RegionID": 22, - "HostName": "derp22b.tailscale.com", - "IPv4": "45.159.98.196", - "IPv6": "2a00:dd80:40:100::316", - "CanPort80": true - } - ] - }, - "23": { - "RegionID": 23, - "RegionCode": "dbi", - "RegionName": "Dubai", - "Latitude": 25.263056, - "Longitude": 55.297222, - "Nodes": [ - { - "Name": "23c", - "RegionID": 23, - "HostName": "derp23c.tailscale.com", - "IPv4": "185.34.3.207", - "IPv6": "2a00:dd80:3f:100::a50", - "CanPort80": true - }, - { - "Name": "23d", - "RegionID": 23, - "HostName": "derp23d.tailscale.com", - "IPv4": "185.34.3.75", - "IPv6": "2a00:dd80:3f:100::97e", - "CanPort80": true - }, - { - "Name": "23b", - "RegionID": 23, - "HostName": "derp23b.tailscale.com", - "IPv4": "185.34.3.232", - "IPv6": "2a00:dd80:3f:100::76f", - "CanPort80": true - } - ] - }, - "24": { - "RegionID": 24, - "RegionCode": "hnl", - "RegionName": "Honolulu", - "Latitude": 21.306944, - "Longitude": -157.858333, - "Nodes": [ - { - "Name": "24c", - "RegionID": 24, - "HostName": "derp24c.tailscale.com", - "IPv4": "208.83.233.233", - "IPv6": "2001:19f0:c000:c591:5400:04ff:fe26:2c5f", - "CanPort80": true - }, - { - "Name": "24d", - "RegionID": 24, - "HostName": "derp24d.tailscale.com", - "IPv4": "208.72.155.133", - "IPv6": "2001:19f0:c000:c564:5400:04ff:fe26:2ba8", - "CanPort80": true - }, - { - "Name": "24b", - "RegionID": 24, - "HostName": "derp24b.tailscale.com", - "IPv4": "208.83.234.151", - "IPv6": "2001:19f0:c000:c586:5400:04ff:fe26:2ba6", - "CanPort80": true - } - ] - }, - "25": { - "RegionID": 25, - "RegionCode": "nai", - "RegionName": "Nairobi", - "Latitude": -1.286389, - "Longitude": 36.817222, - "Nodes": [ - { - "Name": "25c", - "RegionID": 25, - "HostName": "derp25c.tailscale.com", - "IPv4": "102.67.167.37", - "IPv6": "2c0f:edb0:2000:1::2c7", - "CanPort80": true - }, - { - "Name": "25d", - "RegionID": 25, - "HostName": "derp25d.tailscale.com", - "IPv4": "102.67.167.188", - "IPv6": "2c0f:edb0:2000:1::188", - "CanPort80": true - }, - { - "Name": "25b", - "RegionID": 25, - "HostName": "derp25b.tailscale.com", - "IPv4": "102.67.167.245", - "IPv6": "2c0f:edb0:2000:1::2e9", - "CanPort80": true - } - ] - }, - "26": { - "RegionID": 26, - "RegionCode": "nue", - "RegionName": "Nuremberg", - "Latitude": 49.453889, - "Longitude": 11.0775, - "Nodes": [ - { - "Name": "26c", - "RegionID": 26, - "HostName": "derp26c.tailscale.com", - "IPv4": "49.12.193.137", - "IPv6": "2a01:4f8:1c1c:5c70::1", - "CanPort80": true - }, - { - "Name": "26d", - "RegionID": 26, - "HostName": "derp26d.tailscale.com", - "IPv4": "49.13.204.141", - "IPv6": "2a01:4f8:1c0c:7d06::1", - "CanPort80": true - }, - { - "Name": "26b", - "RegionID": 26, - "HostName": "derp26b.tailscale.com", - "IPv4": "167.235.72.200", - "IPv6": "2a01:4f8:1c1c:47b6::1", - "CanPort80": true - } - ] - }, - "27": { - "RegionID": 27, - "RegionCode": "iad", - "RegionName": "Ashburn", - "Latitude": 39.03, - "Longitude": -77.471111, - "Nodes": [ - { - "Name": "27d", - "RegionID": 27, - "HostName": "derp27d.tailscale.com", - "IPv4": "178.156.152.106", - "IPv6": "2a01:4ff:f0:3c8e::1", - "CanPort80": true - }, - { - "Name": "27c", - "RegionID": 27, - "HostName": "derp27c.tailscale.com", - "IPv4": "178.156.152.91", - "IPv6": "2a01:4ff:f0:3913::1", - "CanPort80": true - }, - { - "Name": "27e", - "RegionID": 27, - "HostName": "derp27e.tailscale.com", - "IPv4": "178.156.134.232", - "IPv6": "2a01:4ff:f0:28d4::1", - "CanPort80": true - }, - { - "Name": "27b", - "RegionID": 27, - "HostName": "derp27b.tailscale.com", - "IPv4": "5.161.218.233", - "IPv6": "2a01:4ff:f0:3db9::1", - "CanPort80": true - } - ] - }, - "28": { - "RegionID": 28, - "RegionCode": "hel", - "RegionName": "Helsinki", - "Latitude": 60.170833, - "Longitude": 24.9375, - "Nodes": [ - { - "Name": "28c", - "RegionID": 28, - "HostName": "derp28c.tailscale.com", - "IPv4": "95.217.2.165", - "IPv6": "2a01:4f9:c012:cd74::1", - "CanPort80": true - }, - { - "Name": "28d", - "RegionID": 28, - "HostName": "derp28d.tailscale.com", - "IPv4": "157.180.28.32", - "IPv6": "2a01:4f9:c012:2e5b::1", - "CanPort80": true - }, - { - "Name": "28b", - "RegionID": 28, - "HostName": "derp28b.tailscale.com", - "IPv4": "65.109.143.62", - "IPv6": "2a01:4f9:c012:d55c::1", - "CanPort80": true - } - ] - }, - "3": { - "RegionID": 3, - "RegionCode": "sin", - "RegionName": "Singapore", - "Latitude": 1.3521, - "Longitude": 103.8198, - "Nodes": [ - { - "Name": "3g", - "RegionID": 3, - "HostName": "derp3g.tailscale.com", - "IPv4": "172.237.72.79", - "IPv6": "2600:3c15::2000:adff:fe08:6fab", - "CanPort80": true - }, - { - "Name": "3f", - "RegionID": 3, - "HostName": "derp3f.tailscale.com", - "IPv4": "172.237.72.8", - "IPv6": "2600:3c15::2000:53ff:fe48:a668", - "CanPort80": true - }, - { - "Name": "3h", - "RegionID": 3, - "HostName": "derp3h.tailscale.com", - "IPv4": "172.237.66.30", - "IPv6": "2600:3c15::2000:3dff:fe44:50aa", - "CanPort80": true - }, - { - "Name": "3e", - "RegionID": 3, - "HostName": "derp3e.tailscale.com", - "IPv4": "172.237.72.43", - "IPv6": "2600:3c15::2000:6cff:fee4:d799", - "CanPort80": true - } - ] - }, - "4": { - "RegionID": 4, - "RegionCode": "fra", - "RegionName": "Frankfurt", - "Latitude": 50.1109, - "Longitude": 8.6821, - "Nodes": [ - { - "Name": "4h", - "RegionID": 4, - "HostName": "derp4h.tailscale.com", - "IPv4": "185.40.234.77", - "IPv6": "2a00:dd80:20::bcf", - "CanPort80": true - }, - { - "Name": "4g", - "RegionID": 4, - "HostName": "derp4g.tailscale.com", - "IPv4": "185.40.234.113", - "IPv6": "2a00:dd80:20::8f", - "CanPort80": true - }, - { - "Name": "4i", - "RegionID": 4, - "HostName": "derp4i.tailscale.com", - "IPv4": "185.40.234.53", - "IPv6": "2a00:dd80:20::8a6", - "CanPort80": true - }, - { - "Name": "4f", - "RegionID": 4, - "HostName": "derp4f.tailscale.com", - "IPv4": "185.40.234.219", - "IPv6": "2a00:dd80:20::a25", - "CanPort80": true - } - ] - }, - "5": { - "RegionID": 5, - "RegionCode": "syd", - "RegionName": "Sydney", - "Latitude": -33.867778, - "Longitude": 151.21, - "Nodes": [ - { - "Name": "5f", - "RegionID": 5, - "HostName": "derp5f.tailscale.com", - "IPv4": "172.105.166.103", - "IPv6": "2400:8907::2000:ccff:fe1f:80da", - "CanPort80": true - }, - { - "Name": "5g", - "RegionID": 5, - "HostName": "derp5g.tailscale.com", - "IPv4": "172.105.169.57", - "IPv6": "2400:8907::2000:2fff:fea7:57f4", - "CanPort80": true - }, - { - "Name": "5e", - "RegionID": 5, - "HostName": "derp5e.tailscale.com", - "IPv4": "172.105.179.230", - "IPv6": "2400:8907::2000:ceff:fe8d:4f4e", - "CanPort80": true - } - ] - }, - "6": { - "RegionID": 6, - "RegionCode": "blr", - "RegionName": "Bengaluru", - "Latitude": 12.9716, - "Longitude": 77.5946, - "Nodes": [ - { - "Name": "6a", - "RegionID": 6, - "HostName": "derp6.tailscale.com", - "IPv4": "68.183.90.120", - "IPv6": "2400:6180:100:d0::982:d001", - "CanPort80": true - } - ] - }, - "7": { - "RegionID": 7, - "RegionCode": "tok", - "RegionName": "Tokyo", - "Latitude": 35.6764, - "Longitude": 139.65, - "Nodes": [ - { - "Name": "7g", - "RegionID": 7, - "HostName": "derp7g.tailscale.com", - "IPv4": "172.238.6.179", - "IPv6": "2600:3c18::2000:3fff:fe80:3ebd", - "CanPort80": true - }, - { - "Name": "7f", - "RegionID": 7, - "HostName": "derp7f.tailscale.com", - "IPv4": "172.238.6.34", - "IPv6": "2600:3c18::2000:acff:fe8e:3ed5", - "CanPort80": true - }, - { - "Name": "7h", - "RegionID": 7, - "HostName": "derp7h.tailscale.com", - "IPv4": "172.237.28.183", - "IPv6": "2600:3c18::2000:b1ff:fea9:4560", - "CanPort80": true - }, - { - "Name": "7e", - "RegionID": 7, - "HostName": "derp7e.tailscale.com", - "IPv4": "172.238.6.180", - "IPv6": "2600:3c18::2000:60ff:fe0f:6e83", - "STUNOnly": true, - "CanPort80": true - } - ] - }, - "8": { - "RegionID": 8, - "RegionCode": "lhr", - "RegionName": "London", - "Latitude": 51.5072, - "Longitude": 0.1276, - "Nodes": [ - { - "Name": "8f", - "RegionID": 8, - "HostName": "derp8f.tailscale.com", - "IPv4": "176.58.88.183", - "IPv6": "2a00:dd80:3a::dfa", - "CanPort80": true - }, - { - "Name": "8g", - "RegionID": 8, - "HostName": "derp8g.tailscale.com", - "IPv4": "176.58.92.254", - "IPv6": "2a00:dd80:3a::ed", - "CanPort80": true - }, - { - "Name": "8e", - "RegionID": 8, - "HostName": "derp8e.tailscale.com", - "IPv4": "176.58.92.144", - "IPv6": "2a00:dd80:3a::b33", - "CanPort80": true - } - ] - }, - "9": { - "RegionID": 9, - "RegionCode": "dfw", - "RegionName": "Dallas", - "Latitude": 32.779167, - "Longitude": -96.808889, - "Nodes": [ - { - "Name": "9e", - "RegionID": 9, - "HostName": "derp9e.tailscale.com", - "IPv4": "192.73.248.83", - "IPv6": "2607:f740:100::359", - "CanPort80": true - }, - { - "Name": "9f", - "RegionID": 9, - "HostName": "derp9f.tailscale.com", - "IPv4": "209.177.156.197", - "IPv6": "2607:f740:100::cad", - "CanPort80": true - }, - { - "Name": "9d", - "RegionID": 9, - "HostName": "derp9d.tailscale.com", - "IPv4": "209.177.156.94", - "IPv6": "2607:f740:100::c05", - "CanPort80": true - } - ] - } - } - }, - "DisplayMessages": null, - "TKAEnabled": false, - "TKAHead": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", - "Domain": "kratail2tid@passkey", - "DomainAuditLogID": "", - "UserProfiles": { - "4538565228176803": { - "ID": 4538565228176803, - "LoginName": "kristoffer@dalby.cc", - "DisplayName": "kristoffer" - } - } + "PacketFilterRules": 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.124.195.93": { - "peer_name": "exit-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-mon/tailscaled.sock whois --json 100.124.195.93", - "response": null - }, - "100.116.18.24": { - "peer_name": "exit-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-mon/tailscaled.sock whois --json 100.116.18.24", - "response": null - }, - "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.107.162.14": { - "peer_name": "group-a-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-mon/tailscaled.sock whois --json 100.107.162.14", - "response": null - }, - "100.77.135.18": { - "peer_name": "group-b-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-mon/tailscaled.sock whois --json 100.77.135.18", - "response": null - }, - "100.105.127.107": { - "peer_name": "multi-exit-router", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-mon/tailscaled.sock whois --json 100.105.127.107", - "response": null - }, - "100.109.43.124": { - "peer_name": "router-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-mon/tailscaled.sock whois --json 100.109.43.124", - "response": null - }, - "100.65.172.123": { - "peer_name": "router-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-mon/tailscaled.sock whois --json 100.65.172.123", - "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 - } - }, "netmap": { - "SelfNode": { - "ID": 1840115676059256, - "StableID": "nFzZ7giPNF11CNTRL", - "Name": "user-mon.tail78f774.ts.net.", - "User": 3982058329734709, - "Key": "nodekey:1ca6cca66d2b3811ec290c2f7ac30125c3568e19e303a8e30f6b165c9ee75a51", - "KeyExpiry": "2026-08-19T14:09:00Z", - "DiscoKey": "discokey:67ba1473894f09b564073adb12b27df2a45c513afd9e48922a0346d5d2715d12", - "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:36593", "10.65.0.27:36593", "172.17.0.1:36593"], - "Hostinfo": { - "Hostname": "user-mon", - "Services": [ - { "Proto": "peerapi4", "Port": 33201 }, - { "Proto": "peerapi6", "Port": 33201 }, - { "Proto": "peerapi-dns-proxy", "Port": 1 } - ] - }, - "Created": "2026-02-20T14:09:00.203639664Z", - "MachineAuthorized": true, - "CapMap": { - "https://tailscale.com/cap/file-sharing": null, - "https://tailscale.com/cap/is-admin": null, - "https://tailscale.com/cap/ssh": null, - "https://tailscale.com/cap/tailnet-lock": null, - "probe-udp-lifetime": null, - "ssh-behavior-v1": null, - "ssh-env-vars": null, - "store-appc-routes": null, - "tailnet-display-name": ["kratail2tid@passkey"] - }, - "ComputedName": "user-mon", - "ComputedNameWithHost": "user-mon" - }, - "AllCaps": [ - "https://tailscale.com/cap/file-sharing", - "https://tailscale.com/cap/ssh", - "probe-udp-lifetime", - "ssh-env-vars", - "tailnet-display-name", - "https://tailscale.com/cap/is-admin", - "ssh-behavior-v1", - "https://tailscale.com/cap/tailnet-lock", - "store-appc-routes" - ], - "NodeKey": "nodekey:1ca6cca66d2b3811ec290c2f7ac30125c3568e19e303a8e30f6b165c9ee75a51", - "MachineKey": "mkey:d63fc325663eef5dabd4d236e1fa5a26ed14ad31ea0711840cf755a5e8a9df39", "Peers": [], - "DNS": { - "Routes": { - "tail78f774.ts.net.": null, - "ts.net.": [{ "Addr": "199.247.155.53" }, { "Addr": "2620:111:8007::53" }] - }, - "Domains": ["tail78f774.ts.net"], - "Proxied": true, - "ExitNodeFilteredSet": [".ts.net", ".tailscale.net"] - }, - "PacketFilter": [], - "PacketFilterRules": null, - "SSHPolicy": { "rules": [] }, - "CollectServices": false, - "DERPMap": { - "Regions": { - "1": { - "RegionID": 1, - "RegionCode": "nyc", - "RegionName": "New York City", - "Latitude": 40.7128, - "Longitude": -74.006, - "Nodes": [ - { - "Name": "1h", - "RegionID": 1, - "HostName": "derp1h.tailscale.com", - "IPv4": "199.38.181.93", - "IPv6": "2607:f740:f::afd", - "CanPort80": true - }, - { - "Name": "1g", - "RegionID": 1, - "HostName": "derp1g.tailscale.com", - "IPv4": "209.177.145.120", - "IPv6": "2607:f740:f::3eb", - "CanPort80": true - }, - { - "Name": "1i", - "RegionID": 1, - "HostName": "derp1i.tailscale.com", - "IPv4": "199.38.181.103", - "IPv6": "2607:f740:f::e19", - "CanPort80": true - }, - { - "Name": "1f", - "RegionID": 1, - "HostName": "derp1f.tailscale.com", - "IPv4": "199.38.181.104", - "IPv6": "2607:f740:f::bc", - "CanPort80": true - } - ] - }, - "10": { - "RegionID": 10, - "RegionCode": "sea", - "RegionName": "Seattle", - "Latitude": 47.609722, - "Longitude": -122.333056, - "Nodes": [ - { - "Name": "10c", - "RegionID": 10, - "HostName": "derp10c.tailscale.com", - "IPv4": "192.73.240.121", - "IPv6": "2607:f740:14::40c", - "CanPort80": true - }, - { - "Name": "10d", - "RegionID": 10, - "HostName": "derp10d.tailscale.com", - "IPv4": "192.73.240.132", - "IPv6": "2607:f740:14::500", - "CanPort80": true - }, - { - "Name": "10b", - "RegionID": 10, - "HostName": "derp10b.tailscale.com", - "IPv4": "192.73.240.161", - "IPv6": "2607:f740:14::61c", - "CanPort80": true - } - ] - }, - "11": { - "RegionID": 11, - "RegionCode": "sao", - "RegionName": "São Paulo", - "Latitude": -23.55, - "Longitude": -46.633333, - "Nodes": [ - { - "Name": "11f", - "RegionID": 11, - "HostName": "derp11f.tailscale.com", - "IPv4": "172.237.61.197", - "IPv6": "2600:3c0d::2000:3bff:fe44:6166", - "CanPort80": true - }, - { - "Name": "11g", - "RegionID": 11, - "HostName": "derp11g.tailscale.com", - "IPv4": "172.237.61.190", - "IPv6": "2600:3c0d::2000:62ff:febe:2e67", - "CanPort80": true - }, - { - "Name": "11e", - "RegionID": 11, - "HostName": "derp11e.tailscale.com", - "IPv4": "172.237.61.194", - "IPv6": "2600:3c0d::2000:d2ff:fe43:1790", - "CanPort80": true - } - ] - }, - "12": { - "RegionID": 12, - "RegionCode": "ord", - "RegionName": "Chicago", - "Latitude": 41.881944, - "Longitude": -87.627778, - "Nodes": [ - { - "Name": "12e", - "RegionID": 12, - "HostName": "derp12e.tailscale.com", - "IPv4": "209.177.158.15", - "IPv6": "2607:f740:e::b17", - "CanPort80": true - }, - { - "Name": "12f", - "RegionID": 12, - "HostName": "derp12f.tailscale.com", - "IPv4": "199.38.182.118", - "IPv6": "2607:f740:e::4c8", - "CanPort80": true - }, - { - "Name": "12d", - "RegionID": 12, - "HostName": "derp12d.tailscale.com", - "IPv4": "209.177.158.246", - "IPv6": "2607:f740:e::811", - "CanPort80": true - } - ] - }, - "13": { - "RegionID": 13, - "RegionCode": "den", - "RegionName": "Denver", - "Latitude": 39.7392, - "Longitude": -104.9849, - "Nodes": [ - { - "Name": "13c", - "RegionID": 13, - "HostName": "derp13c.tailscale.com", - "IPv4": "192.73.242.28", - "IPv6": "2607:f740:16::5c", - "CanPort80": true - }, - { - "Name": "13d", - "RegionID": 13, - "HostName": "derp13d.tailscale.com", - "IPv4": "192.73.242.204", - "IPv6": "2607:f740:16::c23", - "CanPort80": true - }, - { - "Name": "13b", - "RegionID": 13, - "HostName": "derp13b.tailscale.com", - "IPv4": "192.73.242.187", - "IPv6": "2607:f740:16::640", - "CanPort80": true - } - ] - }, - "14": { - "RegionID": 14, - "RegionCode": "ams", - "RegionName": "Amsterdam", - "Latitude": 52.372778, - "Longitude": 4.893611, - "Nodes": [ - { - "Name": "14c", - "RegionID": 14, - "HostName": "derp14c.tailscale.com", - "IPv4": "176.58.93.147", - "IPv6": "2a00:dd80:3c::b09", - "CanPort80": true - }, - { - "Name": "14d", - "RegionID": 14, - "HostName": "derp14d.tailscale.com", - "IPv4": "176.58.93.154", - "IPv6": "2a00:dd80:3c::3d5", - "CanPort80": true - }, - { - "Name": "14b", - "RegionID": 14, - "HostName": "derp14b.tailscale.com", - "IPv4": "176.58.93.248", - "IPv6": "2a00:dd80:3c::807", - "CanPort80": true - } - ] - }, - "15": { - "RegionID": 15, - "RegionCode": "jnb", - "RegionName": "Johannesburg", - "Latitude": -26.204444, - "Longitude": 28.045556, - "Nodes": [ - { - "Name": "15c", - "RegionID": 15, - "HostName": "derp15c.tailscale.com", - "IPv4": "102.67.165.185", - "IPv6": "2c0f:edb0:0:10::b59", - "CanPort80": true - }, - { - "Name": "15d", - "RegionID": 15, - "HostName": "derp15d.tailscale.com", - "IPv4": "102.67.165.36", - "IPv6": "2c0f:edb0:0:10::599", - "CanPort80": true - }, - { - "Name": "15b", - "RegionID": 15, - "HostName": "derp15b.tailscale.com", - "IPv4": "102.67.165.90", - "IPv6": "2c0f:edb0:0:10::963", - "CanPort80": true - } - ] - }, - "16": { - "RegionID": 16, - "RegionCode": "mia", - "RegionName": "Miami", - "Latitude": 25.78, - "Longitude": -80.21, - "Nodes": [ - { - "Name": "16c", - "RegionID": 16, - "HostName": "derp16c.tailscale.com", - "IPv4": "192.73.243.229", - "IPv6": "2607:f740:17::4e4", - "CanPort80": true - }, - { - "Name": "16d", - "RegionID": 16, - "HostName": "derp16d.tailscale.com", - "IPv4": "192.73.243.141", - "IPv6": "2607:f740:17::475", - "CanPort80": true - }, - { - "Name": "16b", - "RegionID": 16, - "HostName": "derp16b.tailscale.com", - "IPv4": "192.73.243.135", - "IPv6": "2607:f740:17::476", - "CanPort80": true - } - ] - }, - "17": { - "RegionID": 17, - "RegionCode": "lax", - "RegionName": "Los Angeles", - "Latitude": 34.05, - "Longitude": -118.25, - "Nodes": [ - { - "Name": "17c", - "RegionID": 17, - "HostName": "derp17c.tailscale.com", - "IPv4": "208.111.40.12", - "IPv6": "2607:f740:c::10", - "CanPort80": true - }, - { - "Name": "17d", - "RegionID": 17, - "HostName": "derp17d.tailscale.com", - "IPv4": "208.111.40.216", - "IPv6": "2607:f740:c::e1b", - "CanPort80": true - }, - { - "Name": "17b", - "RegionID": 17, - "HostName": "derp17b.tailscale.com", - "IPv4": "192.73.244.245", - "IPv6": "2607:f740:c::646", - "CanPort80": true - } - ] - }, - "18": { - "RegionID": 18, - "RegionCode": "par", - "RegionName": "Paris", - "Latitude": 48.856667, - "Longitude": 2.352222, - "Nodes": [ - { - "Name": "18c", - "RegionID": 18, - "HostName": "derp18c.tailscale.com", - "IPv4": "176.58.90.207", - "IPv6": "2a00:dd80:3e::c19", - "CanPort80": true - }, - { - "Name": "18d", - "RegionID": 18, - "HostName": "derp18d.tailscale.com", - "IPv4": "176.58.90.104", - "IPv6": "2a00:dd80:3e::f2e", - "CanPort80": true - }, - { - "Name": "18b", - "RegionID": 18, - "HostName": "derp18b.tailscale.com", - "IPv4": "176.58.90.147", - "IPv6": "2a00:dd80:3e::363", - "CanPort80": true - } - ] - }, - "19": { - "RegionID": 19, - "RegionCode": "mad", - "RegionName": "Madrid", - "Latitude": 40.416944, - "Longitude": -3.703333, - "Nodes": [ - { - "Name": "19c", - "RegionID": 19, - "HostName": "derp19c.tailscale.com", - "IPv4": "45.159.97.61", - "IPv6": "2a00:dd80:14:10::20", - "CanPort80": true - }, - { - "Name": "19d", - "RegionID": 19, - "HostName": "derp19d.tailscale.com", - "IPv4": "45.159.97.233", - "IPv6": "2a00:dd80:14:10::34a", - "CanPort80": true - }, - { - "Name": "19b", - "RegionID": 19, - "HostName": "derp19b.tailscale.com", - "IPv4": "45.159.97.144", - "IPv6": "2a00:dd80:14:10::335", - "CanPort80": true - } - ] - }, - "2": { - "RegionID": 2, - "RegionCode": "sfo", - "RegionName": "San Francisco", - "Latitude": 37.7775, - "Longitude": -122.416389, - "Nodes": [ - { - "Name": "2e", - "RegionID": 2, - "HostName": "derp2e.tailscale.com", - "IPv4": "192.73.252.134", - "IPv6": "2607:f740:0:3f::44c", - "CanPort80": true - }, - { - "Name": "2f", - "RegionID": 2, - "HostName": "derp2f.tailscale.com", - "IPv4": "208.111.34.178", - "IPv6": "2607:f740:0:3f::f4", - "CanPort80": true - }, - { - "Name": "2d", - "RegionID": 2, - "HostName": "derp2d.tailscale.com", - "IPv4": "192.73.252.65", - "IPv6": "2607:f740:0:3f::287", - "CanPort80": true - } - ] - }, - "20": { - "RegionID": 20, - "RegionCode": "hkg", - "RegionName": "Hong Kong", - "Latitude": 22.3193, - "Longitude": 114.1694, - "Nodes": [ - { - "Name": "20c", - "RegionID": 20, - "HostName": "derp20c.tailscale.com", - "IPv4": "205.147.105.30", - "IPv6": "2403:2500:8000:1::5fb", - "CanPort80": true - }, - { - "Name": "20d", - "RegionID": 20, - "HostName": "derp20d.tailscale.com", - "IPv4": "205.147.105.78", - "IPv6": "2403:2500:8000:1::e9a", - "CanPort80": true - }, - { - "Name": "20b", - "RegionID": 20, - "HostName": "derp20b.tailscale.com", - "IPv4": "103.6.84.152", - "IPv6": "2403:2500:8000:1::ef6", - "CanPort80": true - } - ] - }, - "21": { - "RegionID": 21, - "RegionCode": "tor", - "RegionName": "Toronto", - "Latitude": 43.741667, - "Longitude": -79.373333, - "Nodes": [ - { - "Name": "21c", - "RegionID": 21, - "HostName": "derp21c.tailscale.com", - "IPv4": "162.248.221.215", - "IPv6": "2607:f740:50::f10", - "CanPort80": true - }, - { - "Name": "21d", - "RegionID": 21, - "HostName": "derp21d.tailscale.com", - "IPv4": "162.248.221.248", - "IPv6": "2607:f740:50::ca4", - "CanPort80": true - }, - { - "Name": "21b", - "RegionID": 21, - "HostName": "derp21b.tailscale.com", - "IPv4": "162.248.221.199", - "IPv6": "2607:f740:50::1d1", - "CanPort80": true - } - ] - }, - "22": { - "RegionID": 22, - "RegionCode": "waw", - "RegionName": "Warsaw", - "Latitude": 52.23, - "Longitude": 21.011111, - "Nodes": [ - { - "Name": "22c", - "RegionID": 22, - "HostName": "derp22c.tailscale.com", - "IPv4": "45.159.98.253", - "IPv6": "2a00:dd80:40:100::3f", - "CanPort80": true - }, - { - "Name": "22d", - "RegionID": 22, - "HostName": "derp22d.tailscale.com", - "IPv4": "45.159.98.145", - "IPv6": "2a00:dd80:40:100::211", - "CanPort80": true - }, - { - "Name": "22b", - "RegionID": 22, - "HostName": "derp22b.tailscale.com", - "IPv4": "45.159.98.196", - "IPv6": "2a00:dd80:40:100::316", - "CanPort80": true - } - ] - }, - "23": { - "RegionID": 23, - "RegionCode": "dbi", - "RegionName": "Dubai", - "Latitude": 25.263056, - "Longitude": 55.297222, - "Nodes": [ - { - "Name": "23c", - "RegionID": 23, - "HostName": "derp23c.tailscale.com", - "IPv4": "185.34.3.207", - "IPv6": "2a00:dd80:3f:100::a50", - "CanPort80": true - }, - { - "Name": "23d", - "RegionID": 23, - "HostName": "derp23d.tailscale.com", - "IPv4": "185.34.3.75", - "IPv6": "2a00:dd80:3f:100::97e", - "CanPort80": true - }, - { - "Name": "23b", - "RegionID": 23, - "HostName": "derp23b.tailscale.com", - "IPv4": "185.34.3.232", - "IPv6": "2a00:dd80:3f:100::76f", - "CanPort80": true - } - ] - }, - "24": { - "RegionID": 24, - "RegionCode": "hnl", - "RegionName": "Honolulu", - "Latitude": 21.306944, - "Longitude": -157.858333, - "Nodes": [ - { - "Name": "24c", - "RegionID": 24, - "HostName": "derp24c.tailscale.com", - "IPv4": "208.83.233.233", - "IPv6": "2001:19f0:c000:c591:5400:04ff:fe26:2c5f", - "CanPort80": true - }, - { - "Name": "24d", - "RegionID": 24, - "HostName": "derp24d.tailscale.com", - "IPv4": "208.72.155.133", - "IPv6": "2001:19f0:c000:c564:5400:04ff:fe26:2ba8", - "CanPort80": true - }, - { - "Name": "24b", - "RegionID": 24, - "HostName": "derp24b.tailscale.com", - "IPv4": "208.83.234.151", - "IPv6": "2001:19f0:c000:c586:5400:04ff:fe26:2ba6", - "CanPort80": true - } - ] - }, - "25": { - "RegionID": 25, - "RegionCode": "nai", - "RegionName": "Nairobi", - "Latitude": -1.286389, - "Longitude": 36.817222, - "Nodes": [ - { - "Name": "25c", - "RegionID": 25, - "HostName": "derp25c.tailscale.com", - "IPv4": "102.67.167.37", - "IPv6": "2c0f:edb0:2000:1::2c7", - "CanPort80": true - }, - { - "Name": "25d", - "RegionID": 25, - "HostName": "derp25d.tailscale.com", - "IPv4": "102.67.167.188", - "IPv6": "2c0f:edb0:2000:1::188", - "CanPort80": true - }, - { - "Name": "25b", - "RegionID": 25, - "HostName": "derp25b.tailscale.com", - "IPv4": "102.67.167.245", - "IPv6": "2c0f:edb0:2000:1::2e9", - "CanPort80": true - } - ] - }, - "26": { - "RegionID": 26, - "RegionCode": "nue", - "RegionName": "Nuremberg", - "Latitude": 49.453889, - "Longitude": 11.0775, - "Nodes": [ - { - "Name": "26c", - "RegionID": 26, - "HostName": "derp26c.tailscale.com", - "IPv4": "49.12.193.137", - "IPv6": "2a01:4f8:1c1c:5c70::1", - "CanPort80": true - }, - { - "Name": "26d", - "RegionID": 26, - "HostName": "derp26d.tailscale.com", - "IPv4": "49.13.204.141", - "IPv6": "2a01:4f8:1c0c:7d06::1", - "CanPort80": true - }, - { - "Name": "26b", - "RegionID": 26, - "HostName": "derp26b.tailscale.com", - "IPv4": "167.235.72.200", - "IPv6": "2a01:4f8:1c1c:47b6::1", - "CanPort80": true - } - ] - }, - "27": { - "RegionID": 27, - "RegionCode": "iad", - "RegionName": "Ashburn", - "Latitude": 39.03, - "Longitude": -77.471111, - "Nodes": [ - { - "Name": "27d", - "RegionID": 27, - "HostName": "derp27d.tailscale.com", - "IPv4": "178.156.152.106", - "IPv6": "2a01:4ff:f0:3c8e::1", - "CanPort80": true - }, - { - "Name": "27c", - "RegionID": 27, - "HostName": "derp27c.tailscale.com", - "IPv4": "178.156.152.91", - "IPv6": "2a01:4ff:f0:3913::1", - "CanPort80": true - }, - { - "Name": "27e", - "RegionID": 27, - "HostName": "derp27e.tailscale.com", - "IPv4": "178.156.134.232", - "IPv6": "2a01:4ff:f0:28d4::1", - "CanPort80": true - }, - { - "Name": "27b", - "RegionID": 27, - "HostName": "derp27b.tailscale.com", - "IPv4": "5.161.218.233", - "IPv6": "2a01:4ff:f0:3db9::1", - "CanPort80": true - } - ] - }, - "28": { - "RegionID": 28, - "RegionCode": "hel", - "RegionName": "Helsinki", - "Latitude": 60.170833, - "Longitude": 24.9375, - "Nodes": [ - { - "Name": "28c", - "RegionID": 28, - "HostName": "derp28c.tailscale.com", - "IPv4": "95.217.2.165", - "IPv6": "2a01:4f9:c012:cd74::1", - "CanPort80": true - }, - { - "Name": "28d", - "RegionID": 28, - "HostName": "derp28d.tailscale.com", - "IPv4": "157.180.28.32", - "IPv6": "2a01:4f9:c012:2e5b::1", - "CanPort80": true - }, - { - "Name": "28b", - "RegionID": 28, - "HostName": "derp28b.tailscale.com", - "IPv4": "65.109.143.62", - "IPv6": "2a01:4f9:c012:d55c::1", - "CanPort80": true - } - ] - }, - "3": { - "RegionID": 3, - "RegionCode": "sin", - "RegionName": "Singapore", - "Latitude": 1.3521, - "Longitude": 103.8198, - "Nodes": [ - { - "Name": "3g", - "RegionID": 3, - "HostName": "derp3g.tailscale.com", - "IPv4": "172.237.72.79", - "IPv6": "2600:3c15::2000:adff:fe08:6fab", - "CanPort80": true - }, - { - "Name": "3f", - "RegionID": 3, - "HostName": "derp3f.tailscale.com", - "IPv4": "172.237.72.8", - "IPv6": "2600:3c15::2000:53ff:fe48:a668", - "CanPort80": true - }, - { - "Name": "3h", - "RegionID": 3, - "HostName": "derp3h.tailscale.com", - "IPv4": "172.237.66.30", - "IPv6": "2600:3c15::2000:3dff:fe44:50aa", - "CanPort80": true - }, - { - "Name": "3e", - "RegionID": 3, - "HostName": "derp3e.tailscale.com", - "IPv4": "172.237.72.43", - "IPv6": "2600:3c15::2000:6cff:fee4:d799", - "CanPort80": true - } - ] - }, - "4": { - "RegionID": 4, - "RegionCode": "fra", - "RegionName": "Frankfurt", - "Latitude": 50.1109, - "Longitude": 8.6821, - "Nodes": [ - { - "Name": "4h", - "RegionID": 4, - "HostName": "derp4h.tailscale.com", - "IPv4": "185.40.234.77", - "IPv6": "2a00:dd80:20::bcf", - "CanPort80": true - }, - { - "Name": "4g", - "RegionID": 4, - "HostName": "derp4g.tailscale.com", - "IPv4": "185.40.234.113", - "IPv6": "2a00:dd80:20::8f", - "CanPort80": true - }, - { - "Name": "4i", - "RegionID": 4, - "HostName": "derp4i.tailscale.com", - "IPv4": "185.40.234.53", - "IPv6": "2a00:dd80:20::8a6", - "CanPort80": true - }, - { - "Name": "4f", - "RegionID": 4, - "HostName": "derp4f.tailscale.com", - "IPv4": "185.40.234.219", - "IPv6": "2a00:dd80:20::a25", - "CanPort80": true - } - ] - }, - "5": { - "RegionID": 5, - "RegionCode": "syd", - "RegionName": "Sydney", - "Latitude": -33.867778, - "Longitude": 151.21, - "Nodes": [ - { - "Name": "5f", - "RegionID": 5, - "HostName": "derp5f.tailscale.com", - "IPv4": "172.105.166.103", - "IPv6": "2400:8907::2000:ccff:fe1f:80da", - "CanPort80": true - }, - { - "Name": "5g", - "RegionID": 5, - "HostName": "derp5g.tailscale.com", - "IPv4": "172.105.169.57", - "IPv6": "2400:8907::2000:2fff:fea7:57f4", - "CanPort80": true - }, - { - "Name": "5e", - "RegionID": 5, - "HostName": "derp5e.tailscale.com", - "IPv4": "172.105.179.230", - "IPv6": "2400:8907::2000:ceff:fe8d:4f4e", - "CanPort80": true - } - ] - }, - "6": { - "RegionID": 6, - "RegionCode": "blr", - "RegionName": "Bengaluru", - "Latitude": 12.9716, - "Longitude": 77.5946, - "Nodes": [ - { - "Name": "6a", - "RegionID": 6, - "HostName": "derp6.tailscale.com", - "IPv4": "68.183.90.120", - "IPv6": "2400:6180:100:d0::982:d001", - "CanPort80": true - } - ] - }, - "7": { - "RegionID": 7, - "RegionCode": "tok", - "RegionName": "Tokyo", - "Latitude": 35.6764, - "Longitude": 139.65, - "Nodes": [ - { - "Name": "7g", - "RegionID": 7, - "HostName": "derp7g.tailscale.com", - "IPv4": "172.238.6.179", - "IPv6": "2600:3c18::2000:3fff:fe80:3ebd", - "CanPort80": true - }, - { - "Name": "7f", - "RegionID": 7, - "HostName": "derp7f.tailscale.com", - "IPv4": "172.238.6.34", - "IPv6": "2600:3c18::2000:acff:fe8e:3ed5", - "CanPort80": true - }, - { - "Name": "7h", - "RegionID": 7, - "HostName": "derp7h.tailscale.com", - "IPv4": "172.237.28.183", - "IPv6": "2600:3c18::2000:b1ff:fea9:4560", - "CanPort80": true - }, - { - "Name": "7e", - "RegionID": 7, - "HostName": "derp7e.tailscale.com", - "IPv4": "172.238.6.180", - "IPv6": "2600:3c18::2000:60ff:fe0f:6e83", - "STUNOnly": true, - "CanPort80": true - } - ] - }, - "8": { - "RegionID": 8, - "RegionCode": "lhr", - "RegionName": "London", - "Latitude": 51.5072, - "Longitude": 0.1276, - "Nodes": [ - { - "Name": "8f", - "RegionID": 8, - "HostName": "derp8f.tailscale.com", - "IPv4": "176.58.88.183", - "IPv6": "2a00:dd80:3a::dfa", - "CanPort80": true - }, - { - "Name": "8g", - "RegionID": 8, - "HostName": "derp8g.tailscale.com", - "IPv4": "176.58.92.254", - "IPv6": "2a00:dd80:3a::ed", - "CanPort80": true - }, - { - "Name": "8e", - "RegionID": 8, - "HostName": "derp8e.tailscale.com", - "IPv4": "176.58.92.144", - "IPv6": "2a00:dd80:3a::b33", - "CanPort80": true - } - ] - }, - "9": { - "RegionID": 9, - "RegionCode": "dfw", - "RegionName": "Dallas", - "Latitude": 32.779167, - "Longitude": -96.808889, - "Nodes": [ - { - "Name": "9e", - "RegionID": 9, - "HostName": "derp9e.tailscale.com", - "IPv4": "192.73.248.83", - "IPv6": "2607:f740:100::359", - "CanPort80": true - }, - { - "Name": "9f", - "RegionID": 9, - "HostName": "derp9f.tailscale.com", - "IPv4": "209.177.156.197", - "IPv6": "2607:f740:100::cad", - "CanPort80": true - }, - { - "Name": "9d", - "RegionID": 9, - "HostName": "derp9d.tailscale.com", - "IPv4": "209.177.156.94", - "IPv6": "2607:f740:100::c05", - "CanPort80": true - } - ] - } - } - }, - "DisplayMessages": null, - "TKAEnabled": false, - "TKAHead": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", - "Domain": "kratail2tid@passkey", - "DomainAuditLogID": "", - "UserProfiles": { - "3982058329734709": { - "ID": 3982058329734709, - "LoginName": "monitorpasskeykradalby@passkey", - "DisplayName": "monitorpasskeykradalby" - } - } + "PacketFilterRules": 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.124.195.93": { - "peer_name": "exit-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user1/tailscaled.sock whois --json 100.124.195.93", - "response": null - }, - "100.116.18.24": { - "peer_name": "exit-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user1/tailscaled.sock whois --json 100.116.18.24", - "response": null - }, - "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.107.162.14": { - "peer_name": "group-a-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user1/tailscaled.sock whois --json 100.107.162.14", - "response": null - }, - "100.77.135.18": { - "peer_name": "group-b-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user1/tailscaled.sock whois --json 100.77.135.18", - "response": null - }, - "100.105.127.107": { - "peer_name": "multi-exit-router", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user1/tailscaled.sock whois --json 100.105.127.107", - "response": null - }, - "100.109.43.124": { - "peer_name": "router-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user1/tailscaled.sock whois --json 100.109.43.124", - "response": null - }, - "100.65.172.123": { - "peer_name": "router-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user1/tailscaled.sock whois --json 100.65.172.123", - "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 - } - }, "netmap": { - "SelfNode": { - "ID": 539541576444929, - "StableID": "nSq9YrqMD511CNTRL", - "Name": "user1.tail78f774.ts.net.", - "User": 4156223528223174, - "Key": "nodekey:96338a2cd2ea803c915ed8fdf882d66ca0c6a59d0fcf0bc4b3f928d22d1ac743", - "KeyExpiry": "2026-07-22T10:04:13Z", - "DiscoKey": "discokey:94c62b25a93d1474bcbf8b0e5f79763e3b093993c831b0a40e98b875827b232a", - "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:43259", "10.65.0.27:43259", "172.17.0.1:43259"], - "Hostinfo": { - "Hostname": "user1", - "Services": [ - { "Proto": "peerapi4", "Port": 46708 }, - { "Proto": "peerapi6", "Port": 46708 }, - { "Proto": "peerapi-dns-proxy", "Port": 1 } - ] - }, - "Created": "2026-01-23T10:04:13.531671894Z", - "MachineAuthorized": true, - "CapMap": { - "https://tailscale.com/cap/file-sharing": null, - "https://tailscale.com/cap/is-admin": null, - "https://tailscale.com/cap/is-owner": null, - "https://tailscale.com/cap/ssh": null, - "https://tailscale.com/cap/tailnet-lock": null, - "probe-udp-lifetime": null, - "ssh-behavior-v1": null, - "ssh-env-vars": null, - "store-appc-routes": null, - "tailnet-display-name": ["kratail2tid@passkey"] - }, - "ComputedName": "user1", - "ComputedNameWithHost": "user1" - }, - "AllCaps": [ - "https://tailscale.com/cap/ssh", - "store-appc-routes", - "https://tailscale.com/cap/file-sharing", - "ssh-behavior-v1", - "tailnet-display-name", - "https://tailscale.com/cap/is-owner", - "https://tailscale.com/cap/tailnet-lock", - "probe-udp-lifetime", - "https://tailscale.com/cap/is-admin", - "ssh-env-vars" - ], - "NodeKey": "nodekey:96338a2cd2ea803c915ed8fdf882d66ca0c6a59d0fcf0bc4b3f928d22d1ac743", - "MachineKey": "mkey:98b7ed0fef020882cab4324b39ac93b60741794e722411083d0d3cf703833f4a", "Peers": [], - "DNS": { - "Routes": { - "tail78f774.ts.net.": null, - "ts.net.": [{ "Addr": "199.247.155.53" }, { "Addr": "2620:111:8007::53" }] - }, - "Domains": ["tail78f774.ts.net"], - "Proxied": true, - "ExitNodeFilteredSet": [".ts.net", ".tailscale.net"] - }, - "PacketFilter": [], - "PacketFilterRules": null, - "SSHPolicy": { "rules": [] }, - "CollectServices": false, - "DERPMap": { - "Regions": { - "1": { - "RegionID": 1, - "RegionCode": "nyc", - "RegionName": "New York City", - "Latitude": 40.7128, - "Longitude": -74.006, - "Nodes": [ - { - "Name": "1h", - "RegionID": 1, - "HostName": "derp1h.tailscale.com", - "IPv4": "199.38.181.93", - "IPv6": "2607:f740:f::afd", - "CanPort80": true - }, - { - "Name": "1g", - "RegionID": 1, - "HostName": "derp1g.tailscale.com", - "IPv4": "209.177.145.120", - "IPv6": "2607:f740:f::3eb", - "CanPort80": true - }, - { - "Name": "1i", - "RegionID": 1, - "HostName": "derp1i.tailscale.com", - "IPv4": "199.38.181.103", - "IPv6": "2607:f740:f::e19", - "CanPort80": true - }, - { - "Name": "1f", - "RegionID": 1, - "HostName": "derp1f.tailscale.com", - "IPv4": "199.38.181.104", - "IPv6": "2607:f740:f::bc", - "CanPort80": true - } - ] - }, - "10": { - "RegionID": 10, - "RegionCode": "sea", - "RegionName": "Seattle", - "Latitude": 47.609722, - "Longitude": -122.333056, - "Nodes": [ - { - "Name": "10c", - "RegionID": 10, - "HostName": "derp10c.tailscale.com", - "IPv4": "192.73.240.121", - "IPv6": "2607:f740:14::40c", - "CanPort80": true - }, - { - "Name": "10d", - "RegionID": 10, - "HostName": "derp10d.tailscale.com", - "IPv4": "192.73.240.132", - "IPv6": "2607:f740:14::500", - "CanPort80": true - }, - { - "Name": "10b", - "RegionID": 10, - "HostName": "derp10b.tailscale.com", - "IPv4": "192.73.240.161", - "IPv6": "2607:f740:14::61c", - "CanPort80": true - } - ] - }, - "11": { - "RegionID": 11, - "RegionCode": "sao", - "RegionName": "São Paulo", - "Latitude": -23.55, - "Longitude": -46.633333, - "Nodes": [ - { - "Name": "11f", - "RegionID": 11, - "HostName": "derp11f.tailscale.com", - "IPv4": "172.237.61.197", - "IPv6": "2600:3c0d::2000:3bff:fe44:6166", - "CanPort80": true - }, - { - "Name": "11g", - "RegionID": 11, - "HostName": "derp11g.tailscale.com", - "IPv4": "172.237.61.190", - "IPv6": "2600:3c0d::2000:62ff:febe:2e67", - "CanPort80": true - }, - { - "Name": "11e", - "RegionID": 11, - "HostName": "derp11e.tailscale.com", - "IPv4": "172.237.61.194", - "IPv6": "2600:3c0d::2000:d2ff:fe43:1790", - "CanPort80": true - } - ] - }, - "12": { - "RegionID": 12, - "RegionCode": "ord", - "RegionName": "Chicago", - "Latitude": 41.881944, - "Longitude": -87.627778, - "Nodes": [ - { - "Name": "12e", - "RegionID": 12, - "HostName": "derp12e.tailscale.com", - "IPv4": "209.177.158.15", - "IPv6": "2607:f740:e::b17", - "CanPort80": true - }, - { - "Name": "12f", - "RegionID": 12, - "HostName": "derp12f.tailscale.com", - "IPv4": "199.38.182.118", - "IPv6": "2607:f740:e::4c8", - "CanPort80": true - }, - { - "Name": "12d", - "RegionID": 12, - "HostName": "derp12d.tailscale.com", - "IPv4": "209.177.158.246", - "IPv6": "2607:f740:e::811", - "CanPort80": true - } - ] - }, - "13": { - "RegionID": 13, - "RegionCode": "den", - "RegionName": "Denver", - "Latitude": 39.7392, - "Longitude": -104.9849, - "Nodes": [ - { - "Name": "13c", - "RegionID": 13, - "HostName": "derp13c.tailscale.com", - "IPv4": "192.73.242.28", - "IPv6": "2607:f740:16::5c", - "CanPort80": true - }, - { - "Name": "13d", - "RegionID": 13, - "HostName": "derp13d.tailscale.com", - "IPv4": "192.73.242.204", - "IPv6": "2607:f740:16::c23", - "CanPort80": true - }, - { - "Name": "13b", - "RegionID": 13, - "HostName": "derp13b.tailscale.com", - "IPv4": "192.73.242.187", - "IPv6": "2607:f740:16::640", - "CanPort80": true - } - ] - }, - "14": { - "RegionID": 14, - "RegionCode": "ams", - "RegionName": "Amsterdam", - "Latitude": 52.372778, - "Longitude": 4.893611, - "Nodes": [ - { - "Name": "14c", - "RegionID": 14, - "HostName": "derp14c.tailscale.com", - "IPv4": "176.58.93.147", - "IPv6": "2a00:dd80:3c::b09", - "CanPort80": true - }, - { - "Name": "14d", - "RegionID": 14, - "HostName": "derp14d.tailscale.com", - "IPv4": "176.58.93.154", - "IPv6": "2a00:dd80:3c::3d5", - "CanPort80": true - }, - { - "Name": "14b", - "RegionID": 14, - "HostName": "derp14b.tailscale.com", - "IPv4": "176.58.93.248", - "IPv6": "2a00:dd80:3c::807", - "CanPort80": true - } - ] - }, - "15": { - "RegionID": 15, - "RegionCode": "jnb", - "RegionName": "Johannesburg", - "Latitude": -26.204444, - "Longitude": 28.045556, - "Nodes": [ - { - "Name": "15c", - "RegionID": 15, - "HostName": "derp15c.tailscale.com", - "IPv4": "102.67.165.185", - "IPv6": "2c0f:edb0:0:10::b59", - "CanPort80": true - }, - { - "Name": "15d", - "RegionID": 15, - "HostName": "derp15d.tailscale.com", - "IPv4": "102.67.165.36", - "IPv6": "2c0f:edb0:0:10::599", - "CanPort80": true - }, - { - "Name": "15b", - "RegionID": 15, - "HostName": "derp15b.tailscale.com", - "IPv4": "102.67.165.90", - "IPv6": "2c0f:edb0:0:10::963", - "CanPort80": true - } - ] - }, - "16": { - "RegionID": 16, - "RegionCode": "mia", - "RegionName": "Miami", - "Latitude": 25.78, - "Longitude": -80.21, - "Nodes": [ - { - "Name": "16c", - "RegionID": 16, - "HostName": "derp16c.tailscale.com", - "IPv4": "192.73.243.229", - "IPv6": "2607:f740:17::4e4", - "CanPort80": true - }, - { - "Name": "16d", - "RegionID": 16, - "HostName": "derp16d.tailscale.com", - "IPv4": "192.73.243.141", - "IPv6": "2607:f740:17::475", - "CanPort80": true - }, - { - "Name": "16b", - "RegionID": 16, - "HostName": "derp16b.tailscale.com", - "IPv4": "192.73.243.135", - "IPv6": "2607:f740:17::476", - "CanPort80": true - } - ] - }, - "17": { - "RegionID": 17, - "RegionCode": "lax", - "RegionName": "Los Angeles", - "Latitude": 34.05, - "Longitude": -118.25, - "Nodes": [ - { - "Name": "17c", - "RegionID": 17, - "HostName": "derp17c.tailscale.com", - "IPv4": "208.111.40.12", - "IPv6": "2607:f740:c::10", - "CanPort80": true - }, - { - "Name": "17d", - "RegionID": 17, - "HostName": "derp17d.tailscale.com", - "IPv4": "208.111.40.216", - "IPv6": "2607:f740:c::e1b", - "CanPort80": true - }, - { - "Name": "17b", - "RegionID": 17, - "HostName": "derp17b.tailscale.com", - "IPv4": "192.73.244.245", - "IPv6": "2607:f740:c::646", - "CanPort80": true - } - ] - }, - "18": { - "RegionID": 18, - "RegionCode": "par", - "RegionName": "Paris", - "Latitude": 48.856667, - "Longitude": 2.352222, - "Nodes": [ - { - "Name": "18c", - "RegionID": 18, - "HostName": "derp18c.tailscale.com", - "IPv4": "176.58.90.207", - "IPv6": "2a00:dd80:3e::c19", - "CanPort80": true - }, - { - "Name": "18d", - "RegionID": 18, - "HostName": "derp18d.tailscale.com", - "IPv4": "176.58.90.104", - "IPv6": "2a00:dd80:3e::f2e", - "CanPort80": true - }, - { - "Name": "18b", - "RegionID": 18, - "HostName": "derp18b.tailscale.com", - "IPv4": "176.58.90.147", - "IPv6": "2a00:dd80:3e::363", - "CanPort80": true - } - ] - }, - "19": { - "RegionID": 19, - "RegionCode": "mad", - "RegionName": "Madrid", - "Latitude": 40.416944, - "Longitude": -3.703333, - "Nodes": [ - { - "Name": "19c", - "RegionID": 19, - "HostName": "derp19c.tailscale.com", - "IPv4": "45.159.97.61", - "IPv6": "2a00:dd80:14:10::20", - "CanPort80": true - }, - { - "Name": "19d", - "RegionID": 19, - "HostName": "derp19d.tailscale.com", - "IPv4": "45.159.97.233", - "IPv6": "2a00:dd80:14:10::34a", - "CanPort80": true - }, - { - "Name": "19b", - "RegionID": 19, - "HostName": "derp19b.tailscale.com", - "IPv4": "45.159.97.144", - "IPv6": "2a00:dd80:14:10::335", - "CanPort80": true - } - ] - }, - "2": { - "RegionID": 2, - "RegionCode": "sfo", - "RegionName": "San Francisco", - "Latitude": 37.7775, - "Longitude": -122.416389, - "Nodes": [ - { - "Name": "2e", - "RegionID": 2, - "HostName": "derp2e.tailscale.com", - "IPv4": "192.73.252.134", - "IPv6": "2607:f740:0:3f::44c", - "CanPort80": true - }, - { - "Name": "2f", - "RegionID": 2, - "HostName": "derp2f.tailscale.com", - "IPv4": "208.111.34.178", - "IPv6": "2607:f740:0:3f::f4", - "CanPort80": true - }, - { - "Name": "2d", - "RegionID": 2, - "HostName": "derp2d.tailscale.com", - "IPv4": "192.73.252.65", - "IPv6": "2607:f740:0:3f::287", - "CanPort80": true - } - ] - }, - "20": { - "RegionID": 20, - "RegionCode": "hkg", - "RegionName": "Hong Kong", - "Latitude": 22.3193, - "Longitude": 114.1694, - "Nodes": [ - { - "Name": "20c", - "RegionID": 20, - "HostName": "derp20c.tailscale.com", - "IPv4": "205.147.105.30", - "IPv6": "2403:2500:8000:1::5fb", - "CanPort80": true - }, - { - "Name": "20d", - "RegionID": 20, - "HostName": "derp20d.tailscale.com", - "IPv4": "205.147.105.78", - "IPv6": "2403:2500:8000:1::e9a", - "CanPort80": true - }, - { - "Name": "20b", - "RegionID": 20, - "HostName": "derp20b.tailscale.com", - "IPv4": "103.6.84.152", - "IPv6": "2403:2500:8000:1::ef6", - "CanPort80": true - } - ] - }, - "21": { - "RegionID": 21, - "RegionCode": "tor", - "RegionName": "Toronto", - "Latitude": 43.741667, - "Longitude": -79.373333, - "Nodes": [ - { - "Name": "21c", - "RegionID": 21, - "HostName": "derp21c.tailscale.com", - "IPv4": "162.248.221.215", - "IPv6": "2607:f740:50::f10", - "CanPort80": true - }, - { - "Name": "21d", - "RegionID": 21, - "HostName": "derp21d.tailscale.com", - "IPv4": "162.248.221.248", - "IPv6": "2607:f740:50::ca4", - "CanPort80": true - }, - { - "Name": "21b", - "RegionID": 21, - "HostName": "derp21b.tailscale.com", - "IPv4": "162.248.221.199", - "IPv6": "2607:f740:50::1d1", - "CanPort80": true - } - ] - }, - "22": { - "RegionID": 22, - "RegionCode": "waw", - "RegionName": "Warsaw", - "Latitude": 52.23, - "Longitude": 21.011111, - "Nodes": [ - { - "Name": "22c", - "RegionID": 22, - "HostName": "derp22c.tailscale.com", - "IPv4": "45.159.98.253", - "IPv6": "2a00:dd80:40:100::3f", - "CanPort80": true - }, - { - "Name": "22d", - "RegionID": 22, - "HostName": "derp22d.tailscale.com", - "IPv4": "45.159.98.145", - "IPv6": "2a00:dd80:40:100::211", - "CanPort80": true - }, - { - "Name": "22b", - "RegionID": 22, - "HostName": "derp22b.tailscale.com", - "IPv4": "45.159.98.196", - "IPv6": "2a00:dd80:40:100::316", - "CanPort80": true - } - ] - }, - "23": { - "RegionID": 23, - "RegionCode": "dbi", - "RegionName": "Dubai", - "Latitude": 25.263056, - "Longitude": 55.297222, - "Nodes": [ - { - "Name": "23c", - "RegionID": 23, - "HostName": "derp23c.tailscale.com", - "IPv4": "185.34.3.207", - "IPv6": "2a00:dd80:3f:100::a50", - "CanPort80": true - }, - { - "Name": "23d", - "RegionID": 23, - "HostName": "derp23d.tailscale.com", - "IPv4": "185.34.3.75", - "IPv6": "2a00:dd80:3f:100::97e", - "CanPort80": true - }, - { - "Name": "23b", - "RegionID": 23, - "HostName": "derp23b.tailscale.com", - "IPv4": "185.34.3.232", - "IPv6": "2a00:dd80:3f:100::76f", - "CanPort80": true - } - ] - }, - "24": { - "RegionID": 24, - "RegionCode": "hnl", - "RegionName": "Honolulu", - "Latitude": 21.306944, - "Longitude": -157.858333, - "Nodes": [ - { - "Name": "24c", - "RegionID": 24, - "HostName": "derp24c.tailscale.com", - "IPv4": "208.83.233.233", - "IPv6": "2001:19f0:c000:c591:5400:04ff:fe26:2c5f", - "CanPort80": true - }, - { - "Name": "24d", - "RegionID": 24, - "HostName": "derp24d.tailscale.com", - "IPv4": "208.72.155.133", - "IPv6": "2001:19f0:c000:c564:5400:04ff:fe26:2ba8", - "CanPort80": true - }, - { - "Name": "24b", - "RegionID": 24, - "HostName": "derp24b.tailscale.com", - "IPv4": "208.83.234.151", - "IPv6": "2001:19f0:c000:c586:5400:04ff:fe26:2ba6", - "CanPort80": true - } - ] - }, - "25": { - "RegionID": 25, - "RegionCode": "nai", - "RegionName": "Nairobi", - "Latitude": -1.286389, - "Longitude": 36.817222, - "Nodes": [ - { - "Name": "25c", - "RegionID": 25, - "HostName": "derp25c.tailscale.com", - "IPv4": "102.67.167.37", - "IPv6": "2c0f:edb0:2000:1::2c7", - "CanPort80": true - }, - { - "Name": "25d", - "RegionID": 25, - "HostName": "derp25d.tailscale.com", - "IPv4": "102.67.167.188", - "IPv6": "2c0f:edb0:2000:1::188", - "CanPort80": true - }, - { - "Name": "25b", - "RegionID": 25, - "HostName": "derp25b.tailscale.com", - "IPv4": "102.67.167.245", - "IPv6": "2c0f:edb0:2000:1::2e9", - "CanPort80": true - } - ] - }, - "26": { - "RegionID": 26, - "RegionCode": "nue", - "RegionName": "Nuremberg", - "Latitude": 49.453889, - "Longitude": 11.0775, - "Nodes": [ - { - "Name": "26c", - "RegionID": 26, - "HostName": "derp26c.tailscale.com", - "IPv4": "49.12.193.137", - "IPv6": "2a01:4f8:1c1c:5c70::1", - "CanPort80": true - }, - { - "Name": "26d", - "RegionID": 26, - "HostName": "derp26d.tailscale.com", - "IPv4": "49.13.204.141", - "IPv6": "2a01:4f8:1c0c:7d06::1", - "CanPort80": true - }, - { - "Name": "26b", - "RegionID": 26, - "HostName": "derp26b.tailscale.com", - "IPv4": "167.235.72.200", - "IPv6": "2a01:4f8:1c1c:47b6::1", - "CanPort80": true - } - ] - }, - "27": { - "RegionID": 27, - "RegionCode": "iad", - "RegionName": "Ashburn", - "Latitude": 39.03, - "Longitude": -77.471111, - "Nodes": [ - { - "Name": "27d", - "RegionID": 27, - "HostName": "derp27d.tailscale.com", - "IPv4": "178.156.152.106", - "IPv6": "2a01:4ff:f0:3c8e::1", - "CanPort80": true - }, - { - "Name": "27c", - "RegionID": 27, - "HostName": "derp27c.tailscale.com", - "IPv4": "178.156.152.91", - "IPv6": "2a01:4ff:f0:3913::1", - "CanPort80": true - }, - { - "Name": "27e", - "RegionID": 27, - "HostName": "derp27e.tailscale.com", - "IPv4": "178.156.134.232", - "IPv6": "2a01:4ff:f0:28d4::1", - "CanPort80": true - }, - { - "Name": "27b", - "RegionID": 27, - "HostName": "derp27b.tailscale.com", - "IPv4": "5.161.218.233", - "IPv6": "2a01:4ff:f0:3db9::1", - "CanPort80": true - } - ] - }, - "28": { - "RegionID": 28, - "RegionCode": "hel", - "RegionName": "Helsinki", - "Latitude": 60.170833, - "Longitude": 24.9375, - "Nodes": [ - { - "Name": "28c", - "RegionID": 28, - "HostName": "derp28c.tailscale.com", - "IPv4": "95.217.2.165", - "IPv6": "2a01:4f9:c012:cd74::1", - "CanPort80": true - }, - { - "Name": "28d", - "RegionID": 28, - "HostName": "derp28d.tailscale.com", - "IPv4": "157.180.28.32", - "IPv6": "2a01:4f9:c012:2e5b::1", - "CanPort80": true - }, - { - "Name": "28b", - "RegionID": 28, - "HostName": "derp28b.tailscale.com", - "IPv4": "65.109.143.62", - "IPv6": "2a01:4f9:c012:d55c::1", - "CanPort80": true - } - ] - }, - "3": { - "RegionID": 3, - "RegionCode": "sin", - "RegionName": "Singapore", - "Latitude": 1.3521, - "Longitude": 103.8198, - "Nodes": [ - { - "Name": "3g", - "RegionID": 3, - "HostName": "derp3g.tailscale.com", - "IPv4": "172.237.72.79", - "IPv6": "2600:3c15::2000:adff:fe08:6fab", - "CanPort80": true - }, - { - "Name": "3f", - "RegionID": 3, - "HostName": "derp3f.tailscale.com", - "IPv4": "172.237.72.8", - "IPv6": "2600:3c15::2000:53ff:fe48:a668", - "CanPort80": true - }, - { - "Name": "3h", - "RegionID": 3, - "HostName": "derp3h.tailscale.com", - "IPv4": "172.237.66.30", - "IPv6": "2600:3c15::2000:3dff:fe44:50aa", - "CanPort80": true - }, - { - "Name": "3e", - "RegionID": 3, - "HostName": "derp3e.tailscale.com", - "IPv4": "172.237.72.43", - "IPv6": "2600:3c15::2000:6cff:fee4:d799", - "CanPort80": true - } - ] - }, - "4": { - "RegionID": 4, - "RegionCode": "fra", - "RegionName": "Frankfurt", - "Latitude": 50.1109, - "Longitude": 8.6821, - "Nodes": [ - { - "Name": "4h", - "RegionID": 4, - "HostName": "derp4h.tailscale.com", - "IPv4": "185.40.234.77", - "IPv6": "2a00:dd80:20::bcf", - "CanPort80": true - }, - { - "Name": "4g", - "RegionID": 4, - "HostName": "derp4g.tailscale.com", - "IPv4": "185.40.234.113", - "IPv6": "2a00:dd80:20::8f", - "CanPort80": true - }, - { - "Name": "4i", - "RegionID": 4, - "HostName": "derp4i.tailscale.com", - "IPv4": "185.40.234.53", - "IPv6": "2a00:dd80:20::8a6", - "CanPort80": true - }, - { - "Name": "4f", - "RegionID": 4, - "HostName": "derp4f.tailscale.com", - "IPv4": "185.40.234.219", - "IPv6": "2a00:dd80:20::a25", - "CanPort80": true - } - ] - }, - "5": { - "RegionID": 5, - "RegionCode": "syd", - "RegionName": "Sydney", - "Latitude": -33.867778, - "Longitude": 151.21, - "Nodes": [ - { - "Name": "5f", - "RegionID": 5, - "HostName": "derp5f.tailscale.com", - "IPv4": "172.105.166.103", - "IPv6": "2400:8907::2000:ccff:fe1f:80da", - "CanPort80": true - }, - { - "Name": "5g", - "RegionID": 5, - "HostName": "derp5g.tailscale.com", - "IPv4": "172.105.169.57", - "IPv6": "2400:8907::2000:2fff:fea7:57f4", - "CanPort80": true - }, - { - "Name": "5e", - "RegionID": 5, - "HostName": "derp5e.tailscale.com", - "IPv4": "172.105.179.230", - "IPv6": "2400:8907::2000:ceff:fe8d:4f4e", - "CanPort80": true - } - ] - }, - "6": { - "RegionID": 6, - "RegionCode": "blr", - "RegionName": "Bengaluru", - "Latitude": 12.9716, - "Longitude": 77.5946, - "Nodes": [ - { - "Name": "6a", - "RegionID": 6, - "HostName": "derp6.tailscale.com", - "IPv4": "68.183.90.120", - "IPv6": "2400:6180:100:d0::982:d001", - "CanPort80": true - } - ] - }, - "7": { - "RegionID": 7, - "RegionCode": "tok", - "RegionName": "Tokyo", - "Latitude": 35.6764, - "Longitude": 139.65, - "Nodes": [ - { - "Name": "7g", - "RegionID": 7, - "HostName": "derp7g.tailscale.com", - "IPv4": "172.238.6.179", - "IPv6": "2600:3c18::2000:3fff:fe80:3ebd", - "CanPort80": true - }, - { - "Name": "7f", - "RegionID": 7, - "HostName": "derp7f.tailscale.com", - "IPv4": "172.238.6.34", - "IPv6": "2600:3c18::2000:acff:fe8e:3ed5", - "CanPort80": true - }, - { - "Name": "7h", - "RegionID": 7, - "HostName": "derp7h.tailscale.com", - "IPv4": "172.237.28.183", - "IPv6": "2600:3c18::2000:b1ff:fea9:4560", - "CanPort80": true - }, - { - "Name": "7e", - "RegionID": 7, - "HostName": "derp7e.tailscale.com", - "IPv4": "172.238.6.180", - "IPv6": "2600:3c18::2000:60ff:fe0f:6e83", - "STUNOnly": true, - "CanPort80": true - } - ] - }, - "8": { - "RegionID": 8, - "RegionCode": "lhr", - "RegionName": "London", - "Latitude": 51.5072, - "Longitude": 0.1276, - "Nodes": [ - { - "Name": "8f", - "RegionID": 8, - "HostName": "derp8f.tailscale.com", - "IPv4": "176.58.88.183", - "IPv6": "2a00:dd80:3a::dfa", - "CanPort80": true - }, - { - "Name": "8g", - "RegionID": 8, - "HostName": "derp8g.tailscale.com", - "IPv4": "176.58.92.254", - "IPv6": "2a00:dd80:3a::ed", - "CanPort80": true - }, - { - "Name": "8e", - "RegionID": 8, - "HostName": "derp8e.tailscale.com", - "IPv4": "176.58.92.144", - "IPv6": "2a00:dd80:3a::b33", - "CanPort80": true - } - ] - }, - "9": { - "RegionID": 9, - "RegionCode": "dfw", - "RegionName": "Dallas", - "Latitude": 32.779167, - "Longitude": -96.808889, - "Nodes": [ - { - "Name": "9e", - "RegionID": 9, - "HostName": "derp9e.tailscale.com", - "IPv4": "192.73.248.83", - "IPv6": "2607:f740:100::359", - "CanPort80": true - }, - { - "Name": "9f", - "RegionID": 9, - "HostName": "derp9f.tailscale.com", - "IPv4": "209.177.156.197", - "IPv6": "2607:f740:100::cad", - "CanPort80": true - }, - { - "Name": "9d", - "RegionID": 9, - "HostName": "derp9d.tailscale.com", - "IPv4": "209.177.156.94", - "IPv6": "2607:f740:100::c05", - "CanPort80": true - } - ] - } - } - }, - "DisplayMessages": null, - "TKAEnabled": false, - "TKAHead": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", - "Domain": "kratail2tid@passkey", - "DomainAuditLogID": "", - "UserProfiles": { - "4156223528223174": { - "ID": 4156223528223174, - "LoginName": "kratail2tid@passkey", - "DisplayName": "kratail2tid" - } - } + "PacketFilterRules": null } } } diff --git a/hscontrol/policy/v2/testdata/grant_results/GRANT-V31.hujson b/hscontrol/policy/v2/testdata/grant_results/GRANT-V31.hujson index 8350c5b35..221bcdd71 100644 --- a/hscontrol/policy/v2/testdata/grant_results/GRANT-V31.hujson +++ b/hscontrol/policy/v2/testdata/grant_results/GRANT-V31.hujson @@ -13,29 +13,55 @@ // Expected: Rules on exit-a, exit-b, group-a-client, group-b-client { "test_id": "GRANT-V31", - "timestamp": "2026-03-28T11:52:34Z", - "propagation_wait_seconds": 8, "input": { - "policy_file": "grant_policies_via/grant_v31.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"], - "tag:exit-a": ["kratail2tid@passkey"], - "tag:exit-b": ["kratail2tid@passkey"], - "tag:group-a": ["kratail2tid@passkey"], - "tag:group-b": ["kratail2tid@passkey"], - "tag:router-a": ["kratail2tid@passkey"], - "tag:router-b": ["kratail2tid@passkey"] + "tag:server": [ + "kratail2tid@passkey" + ], + "tag:prod": [ + "kratail2tid@passkey" + ], + "tag:client": [ + "kratail2tid@passkey" + ], + "tag:router": [ + "kratail2tid@passkey" + ], + "tag:exit": [ + "kratail2tid@passkey" + ], + "tag:exit-a": [ + "kratail2tid@passkey" + ], + "tag:exit-b": [ + "kratail2tid@passkey" + ], + "tag:group-a": [ + "kratail2tid@passkey" + ], + "tag:group-b": [ + "kratail2tid@passkey" + ], + "tag:router-a": [ + "kratail2tid@passkey" + ], + "tag:router-b": [ + "kratail2tid@passkey" + ] }, "hosts": { "webserver": "100.108.74.26", @@ -44,179 +70,190 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "10.44.0.0/16": ["tag:router-a"], - "10.55.0.0/16": ["tag:router-b"], - "0.0.0.0/0": ["tag:exit", "tag:exit-a", "tag:exit-b"], - "::/0": ["tag:exit", "tag:exit-a", "tag:exit-b"] + "10.33.0.0/16": [ + "tag:router" + ], + "10.44.0.0/16": [ + "tag:router-a" + ], + "10.55.0.0/16": [ + "tag:router-b" + ], + "0.0.0.0/0": [ + "tag:exit", + "tag:exit-a", + "tag:exit-b" + ], + "::/0": [ + "tag:exit", + "tag:exit-a", + "tag:exit-b" + ] } }, "grants": [ { - "src": ["tag:exit-a", "tag:exit-b", "tag:group-a", "tag:group-b"], - "dst": ["tag:exit-a", "tag:exit-b", "tag:group-a", "tag:group-b"], - "ip": ["*"] + "src": [ + "tag:exit-a", + "tag:exit-b", + "tag:group-a", + "tag:group-b" + ], + "dst": [ + "tag:exit-a", + "tag:exit-b", + "tag:group-a", + "tag:group-b" + ], + "ip": [ + "*" + ] }, { - "src": ["tag:group-a"], - "dst": ["autogroup:internet"], - "via": ["tag:exit-a"], - "ip": ["*"] + "src": [ + "tag:group-a" + ], + "dst": [ + "autogroup:internet" + ], + "via": [ + "tag:exit-a" + ], + "ip": [ + "*" + ] }, { - "src": ["tag:group-b"], - "dst": ["autogroup:internet"], - "via": ["tag:exit-b"], - "ip": ["*"] + "src": [ + "tag:group-b" + ], + "dst": [ + "autogroup:internet" + ], + "via": [ + "tag:exit-b" + ], + "ip": [ + "*" + ] } ] }, - "grants_section": [ - { - "src": ["tag:exit-a", "tag:exit-b", "tag:group-a", "tag:group-b"], - "dst": ["tag:exit-a", "tag:exit-b", "tag:group-a", "tag:group-b"], - "ip": ["*"] - }, - { "src": ["tag:group-a"], "dst": ["autogroup:internet"], "via": ["tag:exit-a"], "ip": ["*"] }, - { "src": ["tag:group-b"], "dst": ["autogroup:internet"], "via": ["tag:exit-b"], "ip": ["*"] } - ], - "api_endpoint": "https://api.tailscale.com/api/v2/tailnet/kratail2tid%40passkey/acl", - "api_method": "POST", "api_response_code": 200 }, "topology": { "nodes": { "exit-a": { - "mts_name": "exit-a", - "socket": "/home/kradalby/.config/multi-tailscale-dev/exit-a/tailscaled.sock", "hostname": "exit-a", - "user_id": 3118755726458377, - "tags": ["tag:exit-a"], + "tags": [ + "tag:exit-a" + ], "ipv4": "100.124.195.93", "ipv6": "fd7a:115c:a1e0::7837:c35d" }, "exit-b": { - "mts_name": "exit-b", - "socket": "/home/kradalby/.config/multi-tailscale-dev/exit-b/tailscaled.sock", "hostname": "exit-b", - "user_id": 2230775583277936, - "tags": ["tag:exit-b"], + "tags": [ + "tag:exit-b" + ], "ipv4": "100.116.18.24", "ipv6": "fd7a:115c:a1e0::ff37:1218" }, "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"], + "tags": [ + "tag:exit" + ], "ipv4": "100.85.66.106", "ipv6": "fd7a:115c:a1e0::7c37:426a" }, "group-a-client": { - "mts_name": "group-a-client", - "socket": "/home/kradalby/.config/multi-tailscale-dev/group-a-client/tailscaled.sock", "hostname": "group-a-client", - "user_id": 6999435610919250, - "tags": ["tag:group-a"], + "tags": [ + "tag:group-a" + ], "ipv4": "100.107.162.14", "ipv6": "fd7a:115c:a1e0::a237:a20e" }, "group-b-client": { - "mts_name": "group-b-client", - "socket": "/home/kradalby/.config/multi-tailscale-dev/group-b-client/tailscaled.sock", "hostname": "group-b-client", - "user_id": 1008089393782498, - "tags": ["tag:group-b"], + "tags": [ + "tag:group-b" + ], "ipv4": "100.77.135.18", "ipv6": "fd7a:115c:a1e0::4b37:8712" }, "multi-exit-router": { - "mts_name": "multi-exit-router", - "socket": "/home/kradalby/.config/multi-tailscale-dev/multi-exit-router/tailscaled.sock", "hostname": "multi-exit-router", - "user_id": 6294409699640722, - "tags": ["tag:exit", "tag:router"], + "tags": [ + "tag:exit", + "tag:router" + ], "ipv4": "100.105.127.107", "ipv6": "fd7a:115c:a1e0::ad37:7f6b" }, "router-a": { - "mts_name": "router-a", - "socket": "/home/kradalby/.config/multi-tailscale-dev/router-a/tailscaled.sock", "hostname": "router-a", - "user_id": 50590507314324, - "tags": ["tag:router-a"], + "tags": [ + "tag:router-a" + ], "ipv4": "100.109.43.124", "ipv6": "fd7a:115c:a1e0::a537:2b7c" }, "router-b": { - "mts_name": "router-b", - "socket": "/home/kradalby/.config/multi-tailscale-dev/router-b/tailscaled.sock", "hostname": "router-b", - "user_id": 1399889648409786, - "tags": ["tag:router-b"], + "tags": [ + "tag:router-b" + ], "ipv4": "100.65.172.123", "ipv6": "fd7a:115c:a1e0::5a37:ac7c" }, "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"], + "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"], + "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"], + "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"], + "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" @@ -225,10 +262,6 @@ }, "captures": { "exit-a": { - "commands": { - "packet_filter_rules": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-a/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-a/tailscaled.sock debug localapi POST debug-packet-filter-matches" - }, "packet_filter_rules": [ { "SrcIPs": [ @@ -242,350 +275,48 @@ "fd7a:115c:a1e0::ff37:1218" ], "DstPorts": [ - { "IP": "100.124.195.93", "Ports": { "First": 0, "Last": 65535 } }, - { "IP": "fd7a:115c:a1e0::7837:c35d", "Ports": { "First": 0, "Last": 65535 } } + { + "IP": "100.124.195.93", + "Ports": { + "First": 0, + "Last": 65535 + } + }, + { + "IP": "fd7a:115c:a1e0::7837:c35d", + "Ports": { + "First": 0, + "Last": 65535 + } + } ] } ], - "packet_filter_matches": [ - { - "IPProto": [6, 17, 1, 58], - "Srcs": [ - "100.107.162.14/32", - "100.116.18.24/32", - "100.124.195.93/32", - "100.77.135.18/32", - "fd7a:115c:a1e0::4b37:8712/128", - "fd7a:115c:a1e0::7837:c35d/128", - "fd7a:115c:a1e0::a237:a20e/128", - "fd7a:115c:a1e0::ff37:1218/128" - ], - "SrcCaps": null, - "Dsts": [ - { "Net": "100.124.195.93/32", "Ports": { "First": 0, "Last": 65535 } }, - { "Net": "fd7a:115c:a1e0::7837:c35d/128", "Ports": { "First": 0, "Last": 65535 } } - ], - "Caps": [] - } - ], - "whois": { - "100.116.18.24": { - "peer_name": "exit-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-a/tailscaled.sock whois --json 100.116.18.24", - "response": { - "Node": { - "ID": 2230775583277936, - "StableID": "ndK1N8hKRJ11CNTRL", - "Name": "exit-b.tail78f774.ts.net.", - "User": 1260082990019555, - "Key": "nodekey:265e1377372be0d036773ac41339bf7b53ed18e9f67f196d7d517abeff741217", - "DiscoKey": "discokey:63071b08ff89860a2d98005f8f6f65f3b92e05b7b1338b1be71e4ad866f12728", - "Addresses": ["100.116.18.24/32", "fd7a:115c:a1e0::ff37:1218/128"], - "AllowedIPs": ["100.116.18.24/32", "fd7a:115c:a1e0::ff37:1218/128"], - "Endpoints": ["77.164.248.136:35565", "10.65.0.27:35565", "172.17.0.1:35565"], - "HomeDERP": 14, - "Hostinfo": { - "OS": "linux", - "Hostname": "exit-b", - "Services": [ - { "Proto": "peerapi4", "Port": 61723 }, - { "Proto": "peerapi6", "Port": 61723 } - ] - }, - "Created": "2026-03-28T10:38:00.655990366Z", - "Cap": 131, - "Tags": ["tag:exit-b"], - "Online": true, - "ComputedName": "exit-b", - "ComputedNameWithHost": "exit-b" - }, - "UserProfile": { "ID": 1260082990019555, "LoginName": "tagged-devices", "DisplayName": "Tagged Devices" }, - "CapMap": null - } - }, - "100.85.66.106": { - "peer_name": "exit-node", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-a/tailscaled.sock whois --json 100.85.66.106", - "response": null - }, - "100.107.162.14": { - "peer_name": "group-a-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-a/tailscaled.sock whois --json 100.107.162.14", - "response": { - "Node": { - "ID": 6999435610919250, - "StableID": "nyckVfJ4fw11CNTRL", - "Name": "group-a-client.tail78f774.ts.net.", - "User": 1260082990019555, - "Key": "nodekey:802726716bd4942fceb5e444218c930040fadb082698b57ea3eb59a6a26ba20d", - "DiscoKey": "discokey:bc93c2d3b81606e44eb1c96d721e7cd73c9497aa7d3efbe2f5e0d1e2e95b190f", - "Addresses": ["100.107.162.14/32", "fd7a:115c:a1e0::a237:a20e/128"], - "AllowedIPs": ["100.107.162.14/32", "fd7a:115c:a1e0::a237:a20e/128"], - "Endpoints": ["77.164.248.136:51980", "10.65.0.27:51980", "172.17.0.1:51980"], - "HomeDERP": 14, - "Hostinfo": { - "OS": "linux", - "Hostname": "group-a-client", - "Services": [ - { "Proto": "peerapi4", "Port": 36543 }, - { "Proto": "peerapi6", "Port": 36543 } - ] - }, - "Created": "2026-03-28T10:38:04.339428828Z", - "Cap": 131, - "Tags": ["tag:group-a"], - "Online": true, - "ComputedName": "group-a-client", - "ComputedNameWithHost": "group-a-client" - }, - "UserProfile": { "ID": 1260082990019555, "LoginName": "tagged-devices", "DisplayName": "Tagged Devices" }, - "CapMap": null - } - }, - "100.77.135.18": { - "peer_name": "group-b-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-a/tailscaled.sock whois --json 100.77.135.18", - "response": { - "Node": { - "ID": 1008089393782498, - "StableID": "ndUwgLoZs811CNTRL", - "Name": "group-b-client.tail78f774.ts.net.", - "User": 1260082990019555, - "Key": "nodekey:ef35a655163204a08b33e09fdc24709f1e3aaa7f40de4efd5549cf014b4d8711", - "DiscoKey": "discokey:e972182cda0d0b459c91b2881624b81749a7e44390a5dde1b9bc17c1ae67715a", - "Addresses": ["100.77.135.18/32", "fd7a:115c:a1e0::4b37:8712/128"], - "AllowedIPs": ["100.77.135.18/32", "fd7a:115c:a1e0::4b37:8712/128"], - "Endpoints": ["77.164.248.136:49377", "10.65.0.27:49377", "172.17.0.1:49377"], - "HomeDERP": 14, - "Hostinfo": { - "OS": "linux", - "Hostname": "group-b-client", - "Services": [ - { "Proto": "peerapi4", "Port": 47173 }, - { "Proto": "peerapi6", "Port": 47173 } - ] - }, - "Created": "2026-03-28T10:38:08.031309668Z", - "Cap": 131, - "Tags": ["tag:group-b"], - "Online": true, - "ComputedName": "group-b-client", - "ComputedNameWithHost": "group-b-client" - }, - "UserProfile": { "ID": 1260082990019555, "LoginName": "tagged-devices", "DisplayName": "Tagged Devices" }, - "CapMap": null - } - }, - "100.105.127.107": { - "peer_name": "multi-exit-router", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-a/tailscaled.sock whois --json 100.105.127.107", - "response": null - }, - "100.109.43.124": { - "peer_name": "router-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-a/tailscaled.sock whois --json 100.109.43.124", - "response": null - }, - "100.65.172.123": { - "peer_name": "router-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-a/tailscaled.sock whois --json 100.65.172.123", - "response": null - }, - "100.92.142.61": { - "peer_name": "subnet-router", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-a/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-a/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-a/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-a/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-a/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-a/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-a/tailscaled.sock whois --json 100.90.199.68", - "response": null - } - }, "netmap": { - "SelfNode": { - "ID": 3118755726458377, - "StableID": "nvFTscRVMR11CNTRL", - "Name": "exit-a.tail78f774.ts.net.", - "User": 3118755726458377, - "Key": "nodekey:21ab6fa3288e3bf8cecced295316c6327f427649765eb1746cc6ee9978bcc35c", - "DiscoKey": "discokey:0c8595f67987ed47cf551646d6266c21a635d622409d10745cc08f6922066e49", - "Addresses": ["100.124.195.93/32", "fd7a:115c:a1e0::7837:c35d/128"], - "AllowedIPs": ["100.124.195.93/32", "fd7a:115c:a1e0::7837:c35d/128"], - "Endpoints": ["77.164.248.136:37550", "10.65.0.27:37550", "172.17.0.1:37550"], - "Hostinfo": { - "Hostname": "exit-a", - "RoutableIPs": ["0.0.0.0/0", "::/0"], - "RequestTags": ["tag:exit-a"], - "Services": [ - { "Proto": "peerapi4", "Port": 57826 }, - { "Proto": "peerapi6", "Port": 57826 }, - { "Proto": "peerapi-dns-proxy", "Port": 1 } - ] - }, - "Created": "2026-03-28T10:37:56.932966573Z", - "Tags": ["tag:exit-a"], - "MachineAuthorized": true, - "CapMap": { - "https://tailscale.com/cap/file-sharing": null, - "https://tailscale.com/cap/is-owner": null, - "https://tailscale.com/cap/ssh": null, - "https://tailscale.com/cap/tailnet-lock": null, - "probe-udp-lifetime": null, - "ssh-behavior-v1": null, - "ssh-env-vars": null, - "store-appc-routes": null, - "tailnet-display-name": ["kratail2tid@passkey"] - }, - "ComputedName": "exit-a", - "ComputedNameWithHost": "exit-a" - }, - "AllCaps": [ - "probe-udp-lifetime", - "ssh-env-vars", - "store-appc-routes", - "https://tailscale.com/cap/ssh", - "https://tailscale.com/cap/tailnet-lock", - "https://tailscale.com/cap/is-owner", - "https://tailscale.com/cap/file-sharing", - "ssh-behavior-v1", - "tailnet-display-name" - ], - "NodeKey": "nodekey:21ab6fa3288e3bf8cecced295316c6327f427649765eb1746cc6ee9978bcc35c", - "MachineKey": "mkey:d4a36168723163165bbdcb0b17762903171593d01c26c5bb12216932f6d10876", "Peers": [ { - "ID": 1008089393782498, - "StableID": "ndUwgLoZs811CNTRL", "Name": "group-b-client.tail78f774.ts.net.", - "User": 1260082990019555, - "Key": "nodekey:ef35a655163204a08b33e09fdc24709f1e3aaa7f40de4efd5549cf014b4d8711", - "DiscoKey": "discokey:e972182cda0d0b459c91b2881624b81749a7e44390a5dde1b9bc17c1ae67715a", - "Addresses": ["100.77.135.18/32", "fd7a:115c:a1e0::4b37:8712/128"], - "AllowedIPs": ["100.77.135.18/32", "fd7a:115c:a1e0::4b37:8712/128"], - "Endpoints": ["77.164.248.136:49377", "10.65.0.27:49377", "172.17.0.1:49377"], - "HomeDERP": 14, - "Hostinfo": { - "OS": "linux", - "Hostname": "group-b-client", - "Services": [ - { "Proto": "peerapi4", "Port": 47173 }, - { "Proto": "peerapi6", "Port": 47173 } - ] - }, - "Created": "2026-03-28T10:38:08.031309668Z", - "Cap": 131, - "Tags": ["tag:group-b"], - "Online": true, - "ComputedName": "group-b-client", - "ComputedNameWithHost": "group-b-client" - }, - { - "ID": 2230775583277936, - "StableID": "ndK1N8hKRJ11CNTRL", - "Name": "exit-b.tail78f774.ts.net.", - "User": 1260082990019555, - "Key": "nodekey:265e1377372be0d036773ac41339bf7b53ed18e9f67f196d7d517abeff741217", - "DiscoKey": "discokey:63071b08ff89860a2d98005f8f6f65f3b92e05b7b1338b1be71e4ad866f12728", - "Addresses": ["100.116.18.24/32", "fd7a:115c:a1e0::ff37:1218/128"], - "AllowedIPs": ["100.116.18.24/32", "fd7a:115c:a1e0::ff37:1218/128"], - "Endpoints": ["77.164.248.136:35565", "10.65.0.27:35565", "172.17.0.1:35565"], - "HomeDERP": 14, - "Hostinfo": { - "OS": "linux", - "Hostname": "exit-b", - "Services": [ - { "Proto": "peerapi4", "Port": 61723 }, - { "Proto": "peerapi6", "Port": 61723 } - ] - }, - "Created": "2026-03-28T10:38:00.655990366Z", - "Cap": 131, - "Tags": ["tag:exit-b"], - "Online": true, - "ComputedName": "exit-b", - "ComputedNameWithHost": "exit-b" - }, - { - "ID": 6999435610919250, - "StableID": "nyckVfJ4fw11CNTRL", - "Name": "group-a-client.tail78f774.ts.net.", - "User": 1260082990019555, - "Key": "nodekey:802726716bd4942fceb5e444218c930040fadb082698b57ea3eb59a6a26ba20d", - "DiscoKey": "discokey:bc93c2d3b81606e44eb1c96d721e7cd73c9497aa7d3efbe2f5e0d1e2e95b190f", - "Addresses": ["100.107.162.14/32", "fd7a:115c:a1e0::a237:a20e/128"], - "AllowedIPs": ["100.107.162.14/32", "fd7a:115c:a1e0::a237:a20e/128"], - "Endpoints": ["77.164.248.136:51980", "10.65.0.27:51980", "172.17.0.1:51980"], - "HomeDERP": 14, - "Hostinfo": { - "OS": "linux", - "Hostname": "group-a-client", - "Services": [ - { "Proto": "peerapi4", "Port": 36543 }, - { "Proto": "peerapi6", "Port": 36543 } - ] - }, - "Created": "2026-03-28T10:38:04.339428828Z", - "Cap": 131, - "Tags": ["tag:group-a"], - "Online": true, - "ComputedName": "group-a-client", - "ComputedNameWithHost": "group-a-client" - } - ], - "DNS": { - "Routes": { - "tail78f774.ts.net.": null, - "ts.net.": [{ "Addr": "199.247.155.53" }, { "Addr": "2620:111:8007::53" }] - }, - "Domains": ["tail78f774.ts.net"], - "Proxied": true, - "ExitNodeFilteredSet": [".ts.net", ".tailscale.net"] - }, - "PacketFilter": [ - { - "IPProto": [6, 17, 1, 58], - "Srcs": [ - "100.107.162.14/32", - "100.116.18.24/32", - "100.124.195.93/32", + "AllowedIPs": [ "100.77.135.18/32", - "fd7a:115c:a1e0::4b37:8712/128", - "fd7a:115c:a1e0::7837:c35d/128", - "fd7a:115c:a1e0::a237:a20e/128", + "fd7a:115c:a1e0::4b37:8712/128" + ], + "PrimaryRoutes": [] + }, + { + "Name": "exit-b.tail78f774.ts.net.", + "AllowedIPs": [ + "100.116.18.24/32", "fd7a:115c:a1e0::ff37:1218/128" ], - "SrcCaps": null, - "Dsts": [ - { "Net": "100.124.195.93/32", "Ports": { "First": 0, "Last": 65535 } }, - { "Net": "fd7a:115c:a1e0::7837:c35d/128", "Ports": { "First": 0, "Last": 65535 } } + "PrimaryRoutes": [] + }, + { + "Name": "group-a-client.tail78f774.ts.net.", + "AllowedIPs": [ + "100.107.162.14/32", + "fd7a:115c:a1e0::a237:a20e/128" ], - "Caps": [] + "PrimaryRoutes": [] } ], "PacketFilterRules": [ @@ -601,990 +332,26 @@ "fd7a:115c:a1e0::ff37:1218" ], "DstPorts": [ - { "IP": "100.124.195.93", "Ports": { "First": 0, "Last": 65535 } }, - { "IP": "fd7a:115c:a1e0::7837:c35d", "Ports": { "First": 0, "Last": 65535 } } + { + "IP": "100.124.195.93", + "Ports": { + "First": 0, + "Last": 65535 + } + }, + { + "IP": "fd7a:115c:a1e0::7837:c35d", + "Ports": { + "First": 0, + "Last": 65535 + } + } ] } - ], - "SSHPolicy": { "rules": [] }, - "CollectServices": false, - "DERPMap": { - "Regions": { - "1": { - "RegionID": 1, - "RegionCode": "nyc", - "RegionName": "New York City", - "Latitude": 40.7128, - "Longitude": -74.006, - "Nodes": [ - { - "Name": "1h", - "RegionID": 1, - "HostName": "derp1h.tailscale.com", - "IPv4": "199.38.181.93", - "IPv6": "2607:f740:f::afd", - "CanPort80": true - }, - { - "Name": "1g", - "RegionID": 1, - "HostName": "derp1g.tailscale.com", - "IPv4": "209.177.145.120", - "IPv6": "2607:f740:f::3eb", - "CanPort80": true - }, - { - "Name": "1i", - "RegionID": 1, - "HostName": "derp1i.tailscale.com", - "IPv4": "199.38.181.103", - "IPv6": "2607:f740:f::e19", - "CanPort80": true - }, - { - "Name": "1f", - "RegionID": 1, - "HostName": "derp1f.tailscale.com", - "IPv4": "199.38.181.104", - "IPv6": "2607:f740:f::bc", - "CanPort80": true - } - ] - }, - "10": { - "RegionID": 10, - "RegionCode": "sea", - "RegionName": "Seattle", - "Latitude": 47.609722, - "Longitude": -122.333056, - "Nodes": [ - { - "Name": "10c", - "RegionID": 10, - "HostName": "derp10c.tailscale.com", - "IPv4": "192.73.240.121", - "IPv6": "2607:f740:14::40c", - "CanPort80": true - }, - { - "Name": "10d", - "RegionID": 10, - "HostName": "derp10d.tailscale.com", - "IPv4": "192.73.240.132", - "IPv6": "2607:f740:14::500", - "CanPort80": true - }, - { - "Name": "10b", - "RegionID": 10, - "HostName": "derp10b.tailscale.com", - "IPv4": "192.73.240.161", - "IPv6": "2607:f740:14::61c", - "CanPort80": true - } - ] - }, - "11": { - "RegionID": 11, - "RegionCode": "sao", - "RegionName": "São Paulo", - "Latitude": -23.55, - "Longitude": -46.633333, - "Nodes": [ - { - "Name": "11f", - "RegionID": 11, - "HostName": "derp11f.tailscale.com", - "IPv4": "172.237.61.197", - "IPv6": "2600:3c0d::2000:3bff:fe44:6166", - "CanPort80": true - }, - { - "Name": "11g", - "RegionID": 11, - "HostName": "derp11g.tailscale.com", - "IPv4": "172.237.61.190", - "IPv6": "2600:3c0d::2000:62ff:febe:2e67", - "CanPort80": true - }, - { - "Name": "11e", - "RegionID": 11, - "HostName": "derp11e.tailscale.com", - "IPv4": "172.237.61.194", - "IPv6": "2600:3c0d::2000:d2ff:fe43:1790", - "CanPort80": true - } - ] - }, - "12": { - "RegionID": 12, - "RegionCode": "ord", - "RegionName": "Chicago", - "Latitude": 41.881944, - "Longitude": -87.627778, - "Nodes": [ - { - "Name": "12e", - "RegionID": 12, - "HostName": "derp12e.tailscale.com", - "IPv4": "209.177.158.15", - "IPv6": "2607:f740:e::b17", - "CanPort80": true - }, - { - "Name": "12f", - "RegionID": 12, - "HostName": "derp12f.tailscale.com", - "IPv4": "199.38.182.118", - "IPv6": "2607:f740:e::4c8", - "CanPort80": true - }, - { - "Name": "12d", - "RegionID": 12, - "HostName": "derp12d.tailscale.com", - "IPv4": "209.177.158.246", - "IPv6": "2607:f740:e::811", - "CanPort80": true - } - ] - }, - "13": { - "RegionID": 13, - "RegionCode": "den", - "RegionName": "Denver", - "Latitude": 39.7392, - "Longitude": -104.9849, - "Nodes": [ - { - "Name": "13c", - "RegionID": 13, - "HostName": "derp13c.tailscale.com", - "IPv4": "192.73.242.28", - "IPv6": "2607:f740:16::5c", - "CanPort80": true - }, - { - "Name": "13d", - "RegionID": 13, - "HostName": "derp13d.tailscale.com", - "IPv4": "192.73.242.204", - "IPv6": "2607:f740:16::c23", - "CanPort80": true - }, - { - "Name": "13b", - "RegionID": 13, - "HostName": "derp13b.tailscale.com", - "IPv4": "192.73.242.187", - "IPv6": "2607:f740:16::640", - "CanPort80": true - } - ] - }, - "14": { - "RegionID": 14, - "RegionCode": "ams", - "RegionName": "Amsterdam", - "Latitude": 52.372778, - "Longitude": 4.893611, - "Nodes": [ - { - "Name": "14c", - "RegionID": 14, - "HostName": "derp14c.tailscale.com", - "IPv4": "176.58.93.147", - "IPv6": "2a00:dd80:3c::b09", - "CanPort80": true - }, - { - "Name": "14d", - "RegionID": 14, - "HostName": "derp14d.tailscale.com", - "IPv4": "176.58.93.154", - "IPv6": "2a00:dd80:3c::3d5", - "CanPort80": true - }, - { - "Name": "14b", - "RegionID": 14, - "HostName": "derp14b.tailscale.com", - "IPv4": "176.58.93.248", - "IPv6": "2a00:dd80:3c::807", - "CanPort80": true - } - ] - }, - "15": { - "RegionID": 15, - "RegionCode": "jnb", - "RegionName": "Johannesburg", - "Latitude": -26.204444, - "Longitude": 28.045556, - "Nodes": [ - { - "Name": "15c", - "RegionID": 15, - "HostName": "derp15c.tailscale.com", - "IPv4": "102.67.165.185", - "IPv6": "2c0f:edb0:0:10::b59", - "CanPort80": true - }, - { - "Name": "15d", - "RegionID": 15, - "HostName": "derp15d.tailscale.com", - "IPv4": "102.67.165.36", - "IPv6": "2c0f:edb0:0:10::599", - "CanPort80": true - }, - { - "Name": "15b", - "RegionID": 15, - "HostName": "derp15b.tailscale.com", - "IPv4": "102.67.165.90", - "IPv6": "2c0f:edb0:0:10::963", - "CanPort80": true - } - ] - }, - "16": { - "RegionID": 16, - "RegionCode": "mia", - "RegionName": "Miami", - "Latitude": 25.78, - "Longitude": -80.21, - "Nodes": [ - { - "Name": "16c", - "RegionID": 16, - "HostName": "derp16c.tailscale.com", - "IPv4": "192.73.243.229", - "IPv6": "2607:f740:17::4e4", - "CanPort80": true - }, - { - "Name": "16d", - "RegionID": 16, - "HostName": "derp16d.tailscale.com", - "IPv4": "192.73.243.141", - "IPv6": "2607:f740:17::475", - "CanPort80": true - }, - { - "Name": "16b", - "RegionID": 16, - "HostName": "derp16b.tailscale.com", - "IPv4": "192.73.243.135", - "IPv6": "2607:f740:17::476", - "CanPort80": true - } - ] - }, - "17": { - "RegionID": 17, - "RegionCode": "lax", - "RegionName": "Los Angeles", - "Latitude": 34.05, - "Longitude": -118.25, - "Nodes": [ - { - "Name": "17c", - "RegionID": 17, - "HostName": "derp17c.tailscale.com", - "IPv4": "208.111.40.12", - "IPv6": "2607:f740:c::10", - "CanPort80": true - }, - { - "Name": "17d", - "RegionID": 17, - "HostName": "derp17d.tailscale.com", - "IPv4": "208.111.40.216", - "IPv6": "2607:f740:c::e1b", - "CanPort80": true - }, - { - "Name": "17b", - "RegionID": 17, - "HostName": "derp17b.tailscale.com", - "IPv4": "192.73.244.245", - "IPv6": "2607:f740:c::646", - "CanPort80": true - } - ] - }, - "18": { - "RegionID": 18, - "RegionCode": "par", - "RegionName": "Paris", - "Latitude": 48.856667, - "Longitude": 2.352222, - "Nodes": [ - { - "Name": "18c", - "RegionID": 18, - "HostName": "derp18c.tailscale.com", - "IPv4": "176.58.90.207", - "IPv6": "2a00:dd80:3e::c19", - "CanPort80": true - }, - { - "Name": "18d", - "RegionID": 18, - "HostName": "derp18d.tailscale.com", - "IPv4": "176.58.90.104", - "IPv6": "2a00:dd80:3e::f2e", - "CanPort80": true - }, - { - "Name": "18b", - "RegionID": 18, - "HostName": "derp18b.tailscale.com", - "IPv4": "176.58.90.147", - "IPv6": "2a00:dd80:3e::363", - "CanPort80": true - } - ] - }, - "19": { - "RegionID": 19, - "RegionCode": "mad", - "RegionName": "Madrid", - "Latitude": 40.416944, - "Longitude": -3.703333, - "Nodes": [ - { - "Name": "19c", - "RegionID": 19, - "HostName": "derp19c.tailscale.com", - "IPv4": "45.159.97.61", - "IPv6": "2a00:dd80:14:10::20", - "CanPort80": true - }, - { - "Name": "19d", - "RegionID": 19, - "HostName": "derp19d.tailscale.com", - "IPv4": "45.159.97.233", - "IPv6": "2a00:dd80:14:10::34a", - "CanPort80": true - }, - { - "Name": "19b", - "RegionID": 19, - "HostName": "derp19b.tailscale.com", - "IPv4": "45.159.97.144", - "IPv6": "2a00:dd80:14:10::335", - "CanPort80": true - } - ] - }, - "2": { - "RegionID": 2, - "RegionCode": "sfo", - "RegionName": "San Francisco", - "Latitude": 37.7775, - "Longitude": -122.416389, - "Nodes": [ - { - "Name": "2e", - "RegionID": 2, - "HostName": "derp2e.tailscale.com", - "IPv4": "192.73.252.134", - "IPv6": "2607:f740:0:3f::44c", - "CanPort80": true - }, - { - "Name": "2f", - "RegionID": 2, - "HostName": "derp2f.tailscale.com", - "IPv4": "208.111.34.178", - "IPv6": "2607:f740:0:3f::f4", - "CanPort80": true - }, - { - "Name": "2d", - "RegionID": 2, - "HostName": "derp2d.tailscale.com", - "IPv4": "192.73.252.65", - "IPv6": "2607:f740:0:3f::287", - "CanPort80": true - } - ] - }, - "20": { - "RegionID": 20, - "RegionCode": "hkg", - "RegionName": "Hong Kong", - "Latitude": 22.3193, - "Longitude": 114.1694, - "Nodes": [ - { - "Name": "20c", - "RegionID": 20, - "HostName": "derp20c.tailscale.com", - "IPv4": "205.147.105.30", - "IPv6": "2403:2500:8000:1::5fb", - "CanPort80": true - }, - { - "Name": "20d", - "RegionID": 20, - "HostName": "derp20d.tailscale.com", - "IPv4": "205.147.105.78", - "IPv6": "2403:2500:8000:1::e9a", - "CanPort80": true - }, - { - "Name": "20b", - "RegionID": 20, - "HostName": "derp20b.tailscale.com", - "IPv4": "103.6.84.152", - "IPv6": "2403:2500:8000:1::ef6", - "CanPort80": true - } - ] - }, - "21": { - "RegionID": 21, - "RegionCode": "tor", - "RegionName": "Toronto", - "Latitude": 43.741667, - "Longitude": -79.373333, - "Nodes": [ - { - "Name": "21c", - "RegionID": 21, - "HostName": "derp21c.tailscale.com", - "IPv4": "162.248.221.215", - "IPv6": "2607:f740:50::f10", - "CanPort80": true - }, - { - "Name": "21d", - "RegionID": 21, - "HostName": "derp21d.tailscale.com", - "IPv4": "162.248.221.248", - "IPv6": "2607:f740:50::ca4", - "CanPort80": true - }, - { - "Name": "21b", - "RegionID": 21, - "HostName": "derp21b.tailscale.com", - "IPv4": "162.248.221.199", - "IPv6": "2607:f740:50::1d1", - "CanPort80": true - } - ] - }, - "22": { - "RegionID": 22, - "RegionCode": "waw", - "RegionName": "Warsaw", - "Latitude": 52.23, - "Longitude": 21.011111, - "Nodes": [ - { - "Name": "22c", - "RegionID": 22, - "HostName": "derp22c.tailscale.com", - "IPv4": "45.159.98.253", - "IPv6": "2a00:dd80:40:100::3f", - "CanPort80": true - }, - { - "Name": "22d", - "RegionID": 22, - "HostName": "derp22d.tailscale.com", - "IPv4": "45.159.98.145", - "IPv6": "2a00:dd80:40:100::211", - "CanPort80": true - }, - { - "Name": "22b", - "RegionID": 22, - "HostName": "derp22b.tailscale.com", - "IPv4": "45.159.98.196", - "IPv6": "2a00:dd80:40:100::316", - "CanPort80": true - } - ] - }, - "23": { - "RegionID": 23, - "RegionCode": "dbi", - "RegionName": "Dubai", - "Latitude": 25.263056, - "Longitude": 55.297222, - "Nodes": [ - { - "Name": "23c", - "RegionID": 23, - "HostName": "derp23c.tailscale.com", - "IPv4": "185.34.3.207", - "IPv6": "2a00:dd80:3f:100::a50", - "CanPort80": true - }, - { - "Name": "23d", - "RegionID": 23, - "HostName": "derp23d.tailscale.com", - "IPv4": "185.34.3.75", - "IPv6": "2a00:dd80:3f:100::97e", - "CanPort80": true - }, - { - "Name": "23b", - "RegionID": 23, - "HostName": "derp23b.tailscale.com", - "IPv4": "185.34.3.232", - "IPv6": "2a00:dd80:3f:100::76f", - "CanPort80": true - } - ] - }, - "24": { - "RegionID": 24, - "RegionCode": "hnl", - "RegionName": "Honolulu", - "Latitude": 21.306944, - "Longitude": -157.858333, - "Nodes": [ - { - "Name": "24c", - "RegionID": 24, - "HostName": "derp24c.tailscale.com", - "IPv4": "208.83.233.233", - "IPv6": "2001:19f0:c000:c591:5400:04ff:fe26:2c5f", - "CanPort80": true - }, - { - "Name": "24d", - "RegionID": 24, - "HostName": "derp24d.tailscale.com", - "IPv4": "208.72.155.133", - "IPv6": "2001:19f0:c000:c564:5400:04ff:fe26:2ba8", - "CanPort80": true - }, - { - "Name": "24b", - "RegionID": 24, - "HostName": "derp24b.tailscale.com", - "IPv4": "208.83.234.151", - "IPv6": "2001:19f0:c000:c586:5400:04ff:fe26:2ba6", - "CanPort80": true - } - ] - }, - "25": { - "RegionID": 25, - "RegionCode": "nai", - "RegionName": "Nairobi", - "Latitude": -1.286389, - "Longitude": 36.817222, - "Nodes": [ - { - "Name": "25c", - "RegionID": 25, - "HostName": "derp25c.tailscale.com", - "IPv4": "102.67.167.37", - "IPv6": "2c0f:edb0:2000:1::2c7", - "CanPort80": true - }, - { - "Name": "25d", - "RegionID": 25, - "HostName": "derp25d.tailscale.com", - "IPv4": "102.67.167.188", - "IPv6": "2c0f:edb0:2000:1::188", - "CanPort80": true - }, - { - "Name": "25b", - "RegionID": 25, - "HostName": "derp25b.tailscale.com", - "IPv4": "102.67.167.245", - "IPv6": "2c0f:edb0:2000:1::2e9", - "CanPort80": true - } - ] - }, - "26": { - "RegionID": 26, - "RegionCode": "nue", - "RegionName": "Nuremberg", - "Latitude": 49.453889, - "Longitude": 11.0775, - "Nodes": [ - { - "Name": "26c", - "RegionID": 26, - "HostName": "derp26c.tailscale.com", - "IPv4": "49.12.193.137", - "IPv6": "2a01:4f8:1c1c:5c70::1", - "CanPort80": true - }, - { - "Name": "26d", - "RegionID": 26, - "HostName": "derp26d.tailscale.com", - "IPv4": "49.13.204.141", - "IPv6": "2a01:4f8:1c0c:7d06::1", - "CanPort80": true - }, - { - "Name": "26b", - "RegionID": 26, - "HostName": "derp26b.tailscale.com", - "IPv4": "167.235.72.200", - "IPv6": "2a01:4f8:1c1c:47b6::1", - "CanPort80": true - } - ] - }, - "27": { - "RegionID": 27, - "RegionCode": "iad", - "RegionName": "Ashburn", - "Latitude": 39.03, - "Longitude": -77.471111, - "Nodes": [ - { - "Name": "27d", - "RegionID": 27, - "HostName": "derp27d.tailscale.com", - "IPv4": "178.156.152.106", - "IPv6": "2a01:4ff:f0:3c8e::1", - "CanPort80": true - }, - { - "Name": "27c", - "RegionID": 27, - "HostName": "derp27c.tailscale.com", - "IPv4": "178.156.152.91", - "IPv6": "2a01:4ff:f0:3913::1", - "CanPort80": true - }, - { - "Name": "27e", - "RegionID": 27, - "HostName": "derp27e.tailscale.com", - "IPv4": "178.156.134.232", - "IPv6": "2a01:4ff:f0:28d4::1", - "CanPort80": true - }, - { - "Name": "27b", - "RegionID": 27, - "HostName": "derp27b.tailscale.com", - "IPv4": "5.161.218.233", - "IPv6": "2a01:4ff:f0:3db9::1", - "CanPort80": true - } - ] - }, - "28": { - "RegionID": 28, - "RegionCode": "hel", - "RegionName": "Helsinki", - "Latitude": 60.170833, - "Longitude": 24.9375, - "Nodes": [ - { - "Name": "28c", - "RegionID": 28, - "HostName": "derp28c.tailscale.com", - "IPv4": "95.217.2.165", - "IPv6": "2a01:4f9:c012:cd74::1", - "CanPort80": true - }, - { - "Name": "28d", - "RegionID": 28, - "HostName": "derp28d.tailscale.com", - "IPv4": "157.180.28.32", - "IPv6": "2a01:4f9:c012:2e5b::1", - "CanPort80": true - }, - { - "Name": "28b", - "RegionID": 28, - "HostName": "derp28b.tailscale.com", - "IPv4": "65.109.143.62", - "IPv6": "2a01:4f9:c012:d55c::1", - "CanPort80": true - } - ] - }, - "3": { - "RegionID": 3, - "RegionCode": "sin", - "RegionName": "Singapore", - "Latitude": 1.3521, - "Longitude": 103.8198, - "Nodes": [ - { - "Name": "3g", - "RegionID": 3, - "HostName": "derp3g.tailscale.com", - "IPv4": "172.237.72.79", - "IPv6": "2600:3c15::2000:adff:fe08:6fab", - "CanPort80": true - }, - { - "Name": "3f", - "RegionID": 3, - "HostName": "derp3f.tailscale.com", - "IPv4": "172.237.72.8", - "IPv6": "2600:3c15::2000:53ff:fe48:a668", - "CanPort80": true - }, - { - "Name": "3h", - "RegionID": 3, - "HostName": "derp3h.tailscale.com", - "IPv4": "172.237.66.30", - "IPv6": "2600:3c15::2000:3dff:fe44:50aa", - "CanPort80": true - }, - { - "Name": "3e", - "RegionID": 3, - "HostName": "derp3e.tailscale.com", - "IPv4": "172.237.72.43", - "IPv6": "2600:3c15::2000:6cff:fee4:d799", - "CanPort80": true - } - ] - }, - "4": { - "RegionID": 4, - "RegionCode": "fra", - "RegionName": "Frankfurt", - "Latitude": 50.1109, - "Longitude": 8.6821, - "Nodes": [ - { - "Name": "4h", - "RegionID": 4, - "HostName": "derp4h.tailscale.com", - "IPv4": "185.40.234.77", - "IPv6": "2a00:dd80:20::bcf", - "CanPort80": true - }, - { - "Name": "4g", - "RegionID": 4, - "HostName": "derp4g.tailscale.com", - "IPv4": "185.40.234.113", - "IPv6": "2a00:dd80:20::8f", - "CanPort80": true - }, - { - "Name": "4i", - "RegionID": 4, - "HostName": "derp4i.tailscale.com", - "IPv4": "185.40.234.53", - "IPv6": "2a00:dd80:20::8a6", - "CanPort80": true - }, - { - "Name": "4f", - "RegionID": 4, - "HostName": "derp4f.tailscale.com", - "IPv4": "185.40.234.219", - "IPv6": "2a00:dd80:20::a25", - "CanPort80": true - } - ] - }, - "5": { - "RegionID": 5, - "RegionCode": "syd", - "RegionName": "Sydney", - "Latitude": -33.867778, - "Longitude": 151.21, - "Nodes": [ - { - "Name": "5f", - "RegionID": 5, - "HostName": "derp5f.tailscale.com", - "IPv4": "172.105.166.103", - "IPv6": "2400:8907::2000:ccff:fe1f:80da", - "CanPort80": true - }, - { - "Name": "5g", - "RegionID": 5, - "HostName": "derp5g.tailscale.com", - "IPv4": "172.105.169.57", - "IPv6": "2400:8907::2000:2fff:fea7:57f4", - "CanPort80": true - }, - { - "Name": "5e", - "RegionID": 5, - "HostName": "derp5e.tailscale.com", - "IPv4": "172.105.179.230", - "IPv6": "2400:8907::2000:ceff:fe8d:4f4e", - "CanPort80": true - } - ] - }, - "6": { - "RegionID": 6, - "RegionCode": "blr", - "RegionName": "Bengaluru", - "Latitude": 12.9716, - "Longitude": 77.5946, - "Nodes": [ - { - "Name": "6a", - "RegionID": 6, - "HostName": "derp6.tailscale.com", - "IPv4": "68.183.90.120", - "IPv6": "2400:6180:100:d0::982:d001", - "CanPort80": true - } - ] - }, - "7": { - "RegionID": 7, - "RegionCode": "tok", - "RegionName": "Tokyo", - "Latitude": 35.6764, - "Longitude": 139.65, - "Nodes": [ - { - "Name": "7g", - "RegionID": 7, - "HostName": "derp7g.tailscale.com", - "IPv4": "172.238.6.179", - "IPv6": "2600:3c18::2000:3fff:fe80:3ebd", - "CanPort80": true - }, - { - "Name": "7f", - "RegionID": 7, - "HostName": "derp7f.tailscale.com", - "IPv4": "172.238.6.34", - "IPv6": "2600:3c18::2000:acff:fe8e:3ed5", - "CanPort80": true - }, - { - "Name": "7h", - "RegionID": 7, - "HostName": "derp7h.tailscale.com", - "IPv4": "172.237.28.183", - "IPv6": "2600:3c18::2000:b1ff:fea9:4560", - "CanPort80": true - }, - { - "Name": "7e", - "RegionID": 7, - "HostName": "derp7e.tailscale.com", - "IPv4": "172.238.6.180", - "IPv6": "2600:3c18::2000:60ff:fe0f:6e83", - "STUNOnly": true, - "CanPort80": true - } - ] - }, - "8": { - "RegionID": 8, - "RegionCode": "lhr", - "RegionName": "London", - "Latitude": 51.5072, - "Longitude": 0.1276, - "Nodes": [ - { - "Name": "8f", - "RegionID": 8, - "HostName": "derp8f.tailscale.com", - "IPv4": "176.58.88.183", - "IPv6": "2a00:dd80:3a::dfa", - "CanPort80": true - }, - { - "Name": "8g", - "RegionID": 8, - "HostName": "derp8g.tailscale.com", - "IPv4": "176.58.92.254", - "IPv6": "2a00:dd80:3a::ed", - "CanPort80": true - }, - { - "Name": "8e", - "RegionID": 8, - "HostName": "derp8e.tailscale.com", - "IPv4": "176.58.92.144", - "IPv6": "2a00:dd80:3a::b33", - "CanPort80": true - } - ] - }, - "9": { - "RegionID": 9, - "RegionCode": "dfw", - "RegionName": "Dallas", - "Latitude": 32.779167, - "Longitude": -96.808889, - "Nodes": [ - { - "Name": "9e", - "RegionID": 9, - "HostName": "derp9e.tailscale.com", - "IPv4": "192.73.248.83", - "IPv6": "2607:f740:100::359", - "CanPort80": true - }, - { - "Name": "9f", - "RegionID": 9, - "HostName": "derp9f.tailscale.com", - "IPv4": "209.177.156.197", - "IPv6": "2607:f740:100::cad", - "CanPort80": true - }, - { - "Name": "9d", - "RegionID": 9, - "HostName": "derp9d.tailscale.com", - "IPv4": "209.177.156.94", - "IPv6": "2607:f740:100::c05", - "CanPort80": true - } - ] - } - } - }, - "DisplayMessages": null, - "TKAEnabled": false, - "TKAHead": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", - "Domain": "kratail2tid@passkey", - "DomainAuditLogID": "", - "UserProfiles": { - "1260082990019555": { - "ID": 1260082990019555, - "LoginName": "tagged-devices", - "DisplayName": "Tagged Devices" - }, - "3118755726458377": { - "ID": 3118755726458377, - "LoginName": "exit-a.tail78f774.ts.net", - "DisplayName": "exit-a" - } - } + ] } }, "exit-b": { - "commands": { - "packet_filter_rules": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-b/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-b/tailscaled.sock debug localapi POST debug-packet-filter-matches" - }, "packet_filter_rules": [ { "SrcIPs": [ @@ -1598,350 +365,48 @@ "fd7a:115c:a1e0::ff37:1218" ], "DstPorts": [ - { "IP": "100.116.18.24", "Ports": { "First": 0, "Last": 65535 } }, - { "IP": "fd7a:115c:a1e0::ff37:1218", "Ports": { "First": 0, "Last": 65535 } } + { + "IP": "100.116.18.24", + "Ports": { + "First": 0, + "Last": 65535 + } + }, + { + "IP": "fd7a:115c:a1e0::ff37:1218", + "Ports": { + "First": 0, + "Last": 65535 + } + } ] } ], - "packet_filter_matches": [ - { - "IPProto": [6, 17, 1, 58], - "Srcs": [ - "100.107.162.14/32", - "100.116.18.24/32", - "100.124.195.93/32", - "100.77.135.18/32", - "fd7a:115c:a1e0::4b37:8712/128", - "fd7a:115c:a1e0::7837:c35d/128", - "fd7a:115c:a1e0::a237:a20e/128", - "fd7a:115c:a1e0::ff37:1218/128" - ], - "SrcCaps": null, - "Dsts": [ - { "Net": "100.116.18.24/32", "Ports": { "First": 0, "Last": 65535 } }, - { "Net": "fd7a:115c:a1e0::ff37:1218/128", "Ports": { "First": 0, "Last": 65535 } } - ], - "Caps": [] - } - ], - "whois": { - "100.124.195.93": { - "peer_name": "exit-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-b/tailscaled.sock whois --json 100.124.195.93", - "response": { - "Node": { - "ID": 3118755726458377, - "StableID": "nvFTscRVMR11CNTRL", - "Name": "exit-a.tail78f774.ts.net.", - "User": 1260082990019555, - "Key": "nodekey:21ab6fa3288e3bf8cecced295316c6327f427649765eb1746cc6ee9978bcc35c", - "DiscoKey": "discokey:0c8595f67987ed47cf551646d6266c21a635d622409d10745cc08f6922066e49", - "Addresses": ["100.124.195.93/32", "fd7a:115c:a1e0::7837:c35d/128"], - "AllowedIPs": ["100.124.195.93/32", "fd7a:115c:a1e0::7837:c35d/128"], - "Endpoints": ["77.164.248.136:37550", "10.65.0.27:37550", "172.17.0.1:37550"], - "HomeDERP": 14, - "Hostinfo": { - "OS": "linux", - "Hostname": "exit-a", - "Services": [ - { "Proto": "peerapi4", "Port": 57826 }, - { "Proto": "peerapi6", "Port": 57826 } - ] - }, - "Created": "2026-03-28T10:37:56.932966573Z", - "Cap": 131, - "Tags": ["tag:exit-a"], - "Online": true, - "ComputedName": "exit-a", - "ComputedNameWithHost": "exit-a" - }, - "UserProfile": { "ID": 1260082990019555, "LoginName": "tagged-devices", "DisplayName": "Tagged Devices" }, - "CapMap": null - } - }, - "100.85.66.106": { - "peer_name": "exit-node", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-b/tailscaled.sock whois --json 100.85.66.106", - "response": null - }, - "100.107.162.14": { - "peer_name": "group-a-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-b/tailscaled.sock whois --json 100.107.162.14", - "response": { - "Node": { - "ID": 6999435610919250, - "StableID": "nyckVfJ4fw11CNTRL", - "Name": "group-a-client.tail78f774.ts.net.", - "User": 1260082990019555, - "Key": "nodekey:802726716bd4942fceb5e444218c930040fadb082698b57ea3eb59a6a26ba20d", - "DiscoKey": "discokey:bc93c2d3b81606e44eb1c96d721e7cd73c9497aa7d3efbe2f5e0d1e2e95b190f", - "Addresses": ["100.107.162.14/32", "fd7a:115c:a1e0::a237:a20e/128"], - "AllowedIPs": ["100.107.162.14/32", "fd7a:115c:a1e0::a237:a20e/128"], - "Endpoints": ["77.164.248.136:51980", "10.65.0.27:51980", "172.17.0.1:51980"], - "HomeDERP": 14, - "Hostinfo": { - "OS": "linux", - "Hostname": "group-a-client", - "Services": [ - { "Proto": "peerapi4", "Port": 36543 }, - { "Proto": "peerapi6", "Port": 36543 } - ] - }, - "Created": "2026-03-28T10:38:04.339428828Z", - "Cap": 131, - "Tags": ["tag:group-a"], - "Online": true, - "ComputedName": "group-a-client", - "ComputedNameWithHost": "group-a-client" - }, - "UserProfile": { "ID": 1260082990019555, "LoginName": "tagged-devices", "DisplayName": "Tagged Devices" }, - "CapMap": null - } - }, - "100.77.135.18": { - "peer_name": "group-b-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-b/tailscaled.sock whois --json 100.77.135.18", - "response": { - "Node": { - "ID": 1008089393782498, - "StableID": "ndUwgLoZs811CNTRL", - "Name": "group-b-client.tail78f774.ts.net.", - "User": 1260082990019555, - "Key": "nodekey:ef35a655163204a08b33e09fdc24709f1e3aaa7f40de4efd5549cf014b4d8711", - "DiscoKey": "discokey:e972182cda0d0b459c91b2881624b81749a7e44390a5dde1b9bc17c1ae67715a", - "Addresses": ["100.77.135.18/32", "fd7a:115c:a1e0::4b37:8712/128"], - "AllowedIPs": ["100.77.135.18/32", "fd7a:115c:a1e0::4b37:8712/128"], - "Endpoints": ["77.164.248.136:49377", "10.65.0.27:49377", "172.17.0.1:49377"], - "HomeDERP": 14, - "Hostinfo": { - "OS": "linux", - "Hostname": "group-b-client", - "Services": [ - { "Proto": "peerapi4", "Port": 47173 }, - { "Proto": "peerapi6", "Port": 47173 } - ] - }, - "Created": "2026-03-28T10:38:08.031309668Z", - "Cap": 131, - "Tags": ["tag:group-b"], - "Online": true, - "ComputedName": "group-b-client", - "ComputedNameWithHost": "group-b-client" - }, - "UserProfile": { "ID": 1260082990019555, "LoginName": "tagged-devices", "DisplayName": "Tagged Devices" }, - "CapMap": null - } - }, - "100.105.127.107": { - "peer_name": "multi-exit-router", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-b/tailscaled.sock whois --json 100.105.127.107", - "response": null - }, - "100.109.43.124": { - "peer_name": "router-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-b/tailscaled.sock whois --json 100.109.43.124", - "response": null - }, - "100.65.172.123": { - "peer_name": "router-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-b/tailscaled.sock whois --json 100.65.172.123", - "response": null - }, - "100.92.142.61": { - "peer_name": "subnet-router", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-b/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-b/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-b/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-b/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-b/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-b/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-b/tailscaled.sock whois --json 100.90.199.68", - "response": null - } - }, "netmap": { - "SelfNode": { - "ID": 2230775583277936, - "StableID": "ndK1N8hKRJ11CNTRL", - "Name": "exit-b.tail78f774.ts.net.", - "User": 2230775583277936, - "Key": "nodekey:265e1377372be0d036773ac41339bf7b53ed18e9f67f196d7d517abeff741217", - "DiscoKey": "discokey:63071b08ff89860a2d98005f8f6f65f3b92e05b7b1338b1be71e4ad866f12728", - "Addresses": ["100.116.18.24/32", "fd7a:115c:a1e0::ff37:1218/128"], - "AllowedIPs": ["100.116.18.24/32", "fd7a:115c:a1e0::ff37:1218/128"], - "Endpoints": ["77.164.248.136:35565", "10.65.0.27:35565", "172.17.0.1:35565"], - "Hostinfo": { - "Hostname": "exit-b", - "RoutableIPs": ["0.0.0.0/0", "::/0"], - "RequestTags": ["tag:exit-b"], - "Services": [ - { "Proto": "peerapi4", "Port": 61723 }, - { "Proto": "peerapi6", "Port": 61723 }, - { "Proto": "peerapi-dns-proxy", "Port": 1 } - ] - }, - "Created": "2026-03-28T10:38:00.655990366Z", - "Tags": ["tag:exit-b"], - "MachineAuthorized": true, - "CapMap": { - "https://tailscale.com/cap/file-sharing": null, - "https://tailscale.com/cap/is-owner": null, - "https://tailscale.com/cap/ssh": null, - "https://tailscale.com/cap/tailnet-lock": null, - "probe-udp-lifetime": null, - "ssh-behavior-v1": null, - "ssh-env-vars": null, - "store-appc-routes": null, - "tailnet-display-name": ["kratail2tid@passkey"] - }, - "ComputedName": "exit-b", - "ComputedNameWithHost": "exit-b" - }, - "AllCaps": [ - "ssh-behavior-v1", - "tailnet-display-name", - "https://tailscale.com/cap/ssh", - "https://tailscale.com/cap/file-sharing", - "ssh-env-vars", - "store-appc-routes", - "https://tailscale.com/cap/tailnet-lock", - "probe-udp-lifetime", - "https://tailscale.com/cap/is-owner" - ], - "NodeKey": "nodekey:265e1377372be0d036773ac41339bf7b53ed18e9f67f196d7d517abeff741217", - "MachineKey": "mkey:f4cbc28e2db0f8d8a6a5fc3991b055477e5efc6c025d24b72d3509fa3743401c", "Peers": [ { - "ID": 1008089393782498, - "StableID": "ndUwgLoZs811CNTRL", "Name": "group-b-client.tail78f774.ts.net.", - "User": 1260082990019555, - "Key": "nodekey:ef35a655163204a08b33e09fdc24709f1e3aaa7f40de4efd5549cf014b4d8711", - "DiscoKey": "discokey:e972182cda0d0b459c91b2881624b81749a7e44390a5dde1b9bc17c1ae67715a", - "Addresses": ["100.77.135.18/32", "fd7a:115c:a1e0::4b37:8712/128"], - "AllowedIPs": ["100.77.135.18/32", "fd7a:115c:a1e0::4b37:8712/128"], - "Endpoints": ["77.164.248.136:49377", "10.65.0.27:49377", "172.17.0.1:49377"], - "HomeDERP": 14, - "Hostinfo": { - "OS": "linux", - "Hostname": "group-b-client", - "Services": [ - { "Proto": "peerapi4", "Port": 47173 }, - { "Proto": "peerapi6", "Port": 47173 } - ] - }, - "Created": "2026-03-28T10:38:08.031309668Z", - "Cap": 131, - "Tags": ["tag:group-b"], - "Online": true, - "ComputedName": "group-b-client", - "ComputedNameWithHost": "group-b-client" - }, - { - "ID": 3118755726458377, - "StableID": "nvFTscRVMR11CNTRL", - "Name": "exit-a.tail78f774.ts.net.", - "User": 1260082990019555, - "Key": "nodekey:21ab6fa3288e3bf8cecced295316c6327f427649765eb1746cc6ee9978bcc35c", - "DiscoKey": "discokey:0c8595f67987ed47cf551646d6266c21a635d622409d10745cc08f6922066e49", - "Addresses": ["100.124.195.93/32", "fd7a:115c:a1e0::7837:c35d/128"], - "AllowedIPs": ["100.124.195.93/32", "fd7a:115c:a1e0::7837:c35d/128"], - "Endpoints": ["77.164.248.136:37550", "10.65.0.27:37550", "172.17.0.1:37550"], - "HomeDERP": 14, - "Hostinfo": { - "OS": "linux", - "Hostname": "exit-a", - "Services": [ - { "Proto": "peerapi4", "Port": 57826 }, - { "Proto": "peerapi6", "Port": 57826 } - ] - }, - "Created": "2026-03-28T10:37:56.932966573Z", - "Cap": 131, - "Tags": ["tag:exit-a"], - "Online": true, - "ComputedName": "exit-a", - "ComputedNameWithHost": "exit-a" - }, - { - "ID": 6999435610919250, - "StableID": "nyckVfJ4fw11CNTRL", - "Name": "group-a-client.tail78f774.ts.net.", - "User": 1260082990019555, - "Key": "nodekey:802726716bd4942fceb5e444218c930040fadb082698b57ea3eb59a6a26ba20d", - "DiscoKey": "discokey:bc93c2d3b81606e44eb1c96d721e7cd73c9497aa7d3efbe2f5e0d1e2e95b190f", - "Addresses": ["100.107.162.14/32", "fd7a:115c:a1e0::a237:a20e/128"], - "AllowedIPs": ["100.107.162.14/32", "fd7a:115c:a1e0::a237:a20e/128"], - "Endpoints": ["77.164.248.136:51980", "10.65.0.27:51980", "172.17.0.1:51980"], - "HomeDERP": 14, - "Hostinfo": { - "OS": "linux", - "Hostname": "group-a-client", - "Services": [ - { "Proto": "peerapi4", "Port": 36543 }, - { "Proto": "peerapi6", "Port": 36543 } - ] - }, - "Created": "2026-03-28T10:38:04.339428828Z", - "Cap": 131, - "Tags": ["tag:group-a"], - "Online": true, - "ComputedName": "group-a-client", - "ComputedNameWithHost": "group-a-client" - } - ], - "DNS": { - "Routes": { - "tail78f774.ts.net.": null, - "ts.net.": [{ "Addr": "199.247.155.53" }, { "Addr": "2620:111:8007::53" }] - }, - "Domains": ["tail78f774.ts.net"], - "Proxied": true, - "ExitNodeFilteredSet": [".ts.net", ".tailscale.net"] - }, - "PacketFilter": [ - { - "IPProto": [6, 17, 1, 58], - "Srcs": [ - "100.107.162.14/32", - "100.116.18.24/32", - "100.124.195.93/32", + "AllowedIPs": [ "100.77.135.18/32", - "fd7a:115c:a1e0::4b37:8712/128", - "fd7a:115c:a1e0::7837:c35d/128", - "fd7a:115c:a1e0::a237:a20e/128", - "fd7a:115c:a1e0::ff37:1218/128" + "fd7a:115c:a1e0::4b37:8712/128" ], - "SrcCaps": null, - "Dsts": [ - { "Net": "100.116.18.24/32", "Ports": { "First": 0, "Last": 65535 } }, - { "Net": "fd7a:115c:a1e0::ff37:1218/128", "Ports": { "First": 0, "Last": 65535 } } + "PrimaryRoutes": [] + }, + { + "Name": "exit-a.tail78f774.ts.net.", + "AllowedIPs": [ + "100.124.195.93/32", + "fd7a:115c:a1e0::7837:c35d/128" ], - "Caps": [] + "PrimaryRoutes": [] + }, + { + "Name": "group-a-client.tail78f774.ts.net.", + "AllowedIPs": [ + "100.107.162.14/32", + "fd7a:115c:a1e0::a237:a20e/128" + ], + "PrimaryRoutes": [] } ], "PacketFilterRules": [ @@ -1957,2101 +422,33 @@ "fd7a:115c:a1e0::ff37:1218" ], "DstPorts": [ - { "IP": "100.116.18.24", "Ports": { "First": 0, "Last": 65535 } }, - { "IP": "fd7a:115c:a1e0::ff37:1218", "Ports": { "First": 0, "Last": 65535 } } + { + "IP": "100.116.18.24", + "Ports": { + "First": 0, + "Last": 65535 + } + }, + { + "IP": "fd7a:115c:a1e0::ff37:1218", + "Ports": { + "First": 0, + "Last": 65535 + } + } ] } - ], - "SSHPolicy": { "rules": [] }, - "CollectServices": false, - "DERPMap": { - "Regions": { - "1": { - "RegionID": 1, - "RegionCode": "nyc", - "RegionName": "New York City", - "Latitude": 40.7128, - "Longitude": -74.006, - "Nodes": [ - { - "Name": "1h", - "RegionID": 1, - "HostName": "derp1h.tailscale.com", - "IPv4": "199.38.181.93", - "IPv6": "2607:f740:f::afd", - "CanPort80": true - }, - { - "Name": "1g", - "RegionID": 1, - "HostName": "derp1g.tailscale.com", - "IPv4": "209.177.145.120", - "IPv6": "2607:f740:f::3eb", - "CanPort80": true - }, - { - "Name": "1i", - "RegionID": 1, - "HostName": "derp1i.tailscale.com", - "IPv4": "199.38.181.103", - "IPv6": "2607:f740:f::e19", - "CanPort80": true - }, - { - "Name": "1f", - "RegionID": 1, - "HostName": "derp1f.tailscale.com", - "IPv4": "199.38.181.104", - "IPv6": "2607:f740:f::bc", - "CanPort80": true - } - ] - }, - "10": { - "RegionID": 10, - "RegionCode": "sea", - "RegionName": "Seattle", - "Latitude": 47.609722, - "Longitude": -122.333056, - "Nodes": [ - { - "Name": "10c", - "RegionID": 10, - "HostName": "derp10c.tailscale.com", - "IPv4": "192.73.240.121", - "IPv6": "2607:f740:14::40c", - "CanPort80": true - }, - { - "Name": "10d", - "RegionID": 10, - "HostName": "derp10d.tailscale.com", - "IPv4": "192.73.240.132", - "IPv6": "2607:f740:14::500", - "CanPort80": true - }, - { - "Name": "10b", - "RegionID": 10, - "HostName": "derp10b.tailscale.com", - "IPv4": "192.73.240.161", - "IPv6": "2607:f740:14::61c", - "CanPort80": true - } - ] - }, - "11": { - "RegionID": 11, - "RegionCode": "sao", - "RegionName": "São Paulo", - "Latitude": -23.55, - "Longitude": -46.633333, - "Nodes": [ - { - "Name": "11f", - "RegionID": 11, - "HostName": "derp11f.tailscale.com", - "IPv4": "172.237.61.197", - "IPv6": "2600:3c0d::2000:3bff:fe44:6166", - "CanPort80": true - }, - { - "Name": "11g", - "RegionID": 11, - "HostName": "derp11g.tailscale.com", - "IPv4": "172.237.61.190", - "IPv6": "2600:3c0d::2000:62ff:febe:2e67", - "CanPort80": true - }, - { - "Name": "11e", - "RegionID": 11, - "HostName": "derp11e.tailscale.com", - "IPv4": "172.237.61.194", - "IPv6": "2600:3c0d::2000:d2ff:fe43:1790", - "CanPort80": true - } - ] - }, - "12": { - "RegionID": 12, - "RegionCode": "ord", - "RegionName": "Chicago", - "Latitude": 41.881944, - "Longitude": -87.627778, - "Nodes": [ - { - "Name": "12e", - "RegionID": 12, - "HostName": "derp12e.tailscale.com", - "IPv4": "209.177.158.15", - "IPv6": "2607:f740:e::b17", - "CanPort80": true - }, - { - "Name": "12f", - "RegionID": 12, - "HostName": "derp12f.tailscale.com", - "IPv4": "199.38.182.118", - "IPv6": "2607:f740:e::4c8", - "CanPort80": true - }, - { - "Name": "12d", - "RegionID": 12, - "HostName": "derp12d.tailscale.com", - "IPv4": "209.177.158.246", - "IPv6": "2607:f740:e::811", - "CanPort80": true - } - ] - }, - "13": { - "RegionID": 13, - "RegionCode": "den", - "RegionName": "Denver", - "Latitude": 39.7392, - "Longitude": -104.9849, - "Nodes": [ - { - "Name": "13c", - "RegionID": 13, - "HostName": "derp13c.tailscale.com", - "IPv4": "192.73.242.28", - "IPv6": "2607:f740:16::5c", - "CanPort80": true - }, - { - "Name": "13d", - "RegionID": 13, - "HostName": "derp13d.tailscale.com", - "IPv4": "192.73.242.204", - "IPv6": "2607:f740:16::c23", - "CanPort80": true - }, - { - "Name": "13b", - "RegionID": 13, - "HostName": "derp13b.tailscale.com", - "IPv4": "192.73.242.187", - "IPv6": "2607:f740:16::640", - "CanPort80": true - } - ] - }, - "14": { - "RegionID": 14, - "RegionCode": "ams", - "RegionName": "Amsterdam", - "Latitude": 52.372778, - "Longitude": 4.893611, - "Nodes": [ - { - "Name": "14c", - "RegionID": 14, - "HostName": "derp14c.tailscale.com", - "IPv4": "176.58.93.147", - "IPv6": "2a00:dd80:3c::b09", - "CanPort80": true - }, - { - "Name": "14d", - "RegionID": 14, - "HostName": "derp14d.tailscale.com", - "IPv4": "176.58.93.154", - "IPv6": "2a00:dd80:3c::3d5", - "CanPort80": true - }, - { - "Name": "14b", - "RegionID": 14, - "HostName": "derp14b.tailscale.com", - "IPv4": "176.58.93.248", - "IPv6": "2a00:dd80:3c::807", - "CanPort80": true - } - ] - }, - "15": { - "RegionID": 15, - "RegionCode": "jnb", - "RegionName": "Johannesburg", - "Latitude": -26.204444, - "Longitude": 28.045556, - "Nodes": [ - { - "Name": "15c", - "RegionID": 15, - "HostName": "derp15c.tailscale.com", - "IPv4": "102.67.165.185", - "IPv6": "2c0f:edb0:0:10::b59", - "CanPort80": true - }, - { - "Name": "15d", - "RegionID": 15, - "HostName": "derp15d.tailscale.com", - "IPv4": "102.67.165.36", - "IPv6": "2c0f:edb0:0:10::599", - "CanPort80": true - }, - { - "Name": "15b", - "RegionID": 15, - "HostName": "derp15b.tailscale.com", - "IPv4": "102.67.165.90", - "IPv6": "2c0f:edb0:0:10::963", - "CanPort80": true - } - ] - }, - "16": { - "RegionID": 16, - "RegionCode": "mia", - "RegionName": "Miami", - "Latitude": 25.78, - "Longitude": -80.21, - "Nodes": [ - { - "Name": "16c", - "RegionID": 16, - "HostName": "derp16c.tailscale.com", - "IPv4": "192.73.243.229", - "IPv6": "2607:f740:17::4e4", - "CanPort80": true - }, - { - "Name": "16d", - "RegionID": 16, - "HostName": "derp16d.tailscale.com", - "IPv4": "192.73.243.141", - "IPv6": "2607:f740:17::475", - "CanPort80": true - }, - { - "Name": "16b", - "RegionID": 16, - "HostName": "derp16b.tailscale.com", - "IPv4": "192.73.243.135", - "IPv6": "2607:f740:17::476", - "CanPort80": true - } - ] - }, - "17": { - "RegionID": 17, - "RegionCode": "lax", - "RegionName": "Los Angeles", - "Latitude": 34.05, - "Longitude": -118.25, - "Nodes": [ - { - "Name": "17c", - "RegionID": 17, - "HostName": "derp17c.tailscale.com", - "IPv4": "208.111.40.12", - "IPv6": "2607:f740:c::10", - "CanPort80": true - }, - { - "Name": "17d", - "RegionID": 17, - "HostName": "derp17d.tailscale.com", - "IPv4": "208.111.40.216", - "IPv6": "2607:f740:c::e1b", - "CanPort80": true - }, - { - "Name": "17b", - "RegionID": 17, - "HostName": "derp17b.tailscale.com", - "IPv4": "192.73.244.245", - "IPv6": "2607:f740:c::646", - "CanPort80": true - } - ] - }, - "18": { - "RegionID": 18, - "RegionCode": "par", - "RegionName": "Paris", - "Latitude": 48.856667, - "Longitude": 2.352222, - "Nodes": [ - { - "Name": "18c", - "RegionID": 18, - "HostName": "derp18c.tailscale.com", - "IPv4": "176.58.90.207", - "IPv6": "2a00:dd80:3e::c19", - "CanPort80": true - }, - { - "Name": "18d", - "RegionID": 18, - "HostName": "derp18d.tailscale.com", - "IPv4": "176.58.90.104", - "IPv6": "2a00:dd80:3e::f2e", - "CanPort80": true - }, - { - "Name": "18b", - "RegionID": 18, - "HostName": "derp18b.tailscale.com", - "IPv4": "176.58.90.147", - "IPv6": "2a00:dd80:3e::363", - "CanPort80": true - } - ] - }, - "19": { - "RegionID": 19, - "RegionCode": "mad", - "RegionName": "Madrid", - "Latitude": 40.416944, - "Longitude": -3.703333, - "Nodes": [ - { - "Name": "19c", - "RegionID": 19, - "HostName": "derp19c.tailscale.com", - "IPv4": "45.159.97.61", - "IPv6": "2a00:dd80:14:10::20", - "CanPort80": true - }, - { - "Name": "19d", - "RegionID": 19, - "HostName": "derp19d.tailscale.com", - "IPv4": "45.159.97.233", - "IPv6": "2a00:dd80:14:10::34a", - "CanPort80": true - }, - { - "Name": "19b", - "RegionID": 19, - "HostName": "derp19b.tailscale.com", - "IPv4": "45.159.97.144", - "IPv6": "2a00:dd80:14:10::335", - "CanPort80": true - } - ] - }, - "2": { - "RegionID": 2, - "RegionCode": "sfo", - "RegionName": "San Francisco", - "Latitude": 37.7775, - "Longitude": -122.416389, - "Nodes": [ - { - "Name": "2e", - "RegionID": 2, - "HostName": "derp2e.tailscale.com", - "IPv4": "192.73.252.134", - "IPv6": "2607:f740:0:3f::44c", - "CanPort80": true - }, - { - "Name": "2f", - "RegionID": 2, - "HostName": "derp2f.tailscale.com", - "IPv4": "208.111.34.178", - "IPv6": "2607:f740:0:3f::f4", - "CanPort80": true - }, - { - "Name": "2d", - "RegionID": 2, - "HostName": "derp2d.tailscale.com", - "IPv4": "192.73.252.65", - "IPv6": "2607:f740:0:3f::287", - "CanPort80": true - } - ] - }, - "20": { - "RegionID": 20, - "RegionCode": "hkg", - "RegionName": "Hong Kong", - "Latitude": 22.3193, - "Longitude": 114.1694, - "Nodes": [ - { - "Name": "20c", - "RegionID": 20, - "HostName": "derp20c.tailscale.com", - "IPv4": "205.147.105.30", - "IPv6": "2403:2500:8000:1::5fb", - "CanPort80": true - }, - { - "Name": "20d", - "RegionID": 20, - "HostName": "derp20d.tailscale.com", - "IPv4": "205.147.105.78", - "IPv6": "2403:2500:8000:1::e9a", - "CanPort80": true - }, - { - "Name": "20b", - "RegionID": 20, - "HostName": "derp20b.tailscale.com", - "IPv4": "103.6.84.152", - "IPv6": "2403:2500:8000:1::ef6", - "CanPort80": true - } - ] - }, - "21": { - "RegionID": 21, - "RegionCode": "tor", - "RegionName": "Toronto", - "Latitude": 43.741667, - "Longitude": -79.373333, - "Nodes": [ - { - "Name": "21c", - "RegionID": 21, - "HostName": "derp21c.tailscale.com", - "IPv4": "162.248.221.215", - "IPv6": "2607:f740:50::f10", - "CanPort80": true - }, - { - "Name": "21d", - "RegionID": 21, - "HostName": "derp21d.tailscale.com", - "IPv4": "162.248.221.248", - "IPv6": "2607:f740:50::ca4", - "CanPort80": true - }, - { - "Name": "21b", - "RegionID": 21, - "HostName": "derp21b.tailscale.com", - "IPv4": "162.248.221.199", - "IPv6": "2607:f740:50::1d1", - "CanPort80": true - } - ] - }, - "22": { - "RegionID": 22, - "RegionCode": "waw", - "RegionName": "Warsaw", - "Latitude": 52.23, - "Longitude": 21.011111, - "Nodes": [ - { - "Name": "22c", - "RegionID": 22, - "HostName": "derp22c.tailscale.com", - "IPv4": "45.159.98.253", - "IPv6": "2a00:dd80:40:100::3f", - "CanPort80": true - }, - { - "Name": "22d", - "RegionID": 22, - "HostName": "derp22d.tailscale.com", - "IPv4": "45.159.98.145", - "IPv6": "2a00:dd80:40:100::211", - "CanPort80": true - }, - { - "Name": "22b", - "RegionID": 22, - "HostName": "derp22b.tailscale.com", - "IPv4": "45.159.98.196", - "IPv6": "2a00:dd80:40:100::316", - "CanPort80": true - } - ] - }, - "23": { - "RegionID": 23, - "RegionCode": "dbi", - "RegionName": "Dubai", - "Latitude": 25.263056, - "Longitude": 55.297222, - "Nodes": [ - { - "Name": "23c", - "RegionID": 23, - "HostName": "derp23c.tailscale.com", - "IPv4": "185.34.3.207", - "IPv6": "2a00:dd80:3f:100::a50", - "CanPort80": true - }, - { - "Name": "23d", - "RegionID": 23, - "HostName": "derp23d.tailscale.com", - "IPv4": "185.34.3.75", - "IPv6": "2a00:dd80:3f:100::97e", - "CanPort80": true - }, - { - "Name": "23b", - "RegionID": 23, - "HostName": "derp23b.tailscale.com", - "IPv4": "185.34.3.232", - "IPv6": "2a00:dd80:3f:100::76f", - "CanPort80": true - } - ] - }, - "24": { - "RegionID": 24, - "RegionCode": "hnl", - "RegionName": "Honolulu", - "Latitude": 21.306944, - "Longitude": -157.858333, - "Nodes": [ - { - "Name": "24c", - "RegionID": 24, - "HostName": "derp24c.tailscale.com", - "IPv4": "208.83.233.233", - "IPv6": "2001:19f0:c000:c591:5400:04ff:fe26:2c5f", - "CanPort80": true - }, - { - "Name": "24d", - "RegionID": 24, - "HostName": "derp24d.tailscale.com", - "IPv4": "208.72.155.133", - "IPv6": "2001:19f0:c000:c564:5400:04ff:fe26:2ba8", - "CanPort80": true - }, - { - "Name": "24b", - "RegionID": 24, - "HostName": "derp24b.tailscale.com", - "IPv4": "208.83.234.151", - "IPv6": "2001:19f0:c000:c586:5400:04ff:fe26:2ba6", - "CanPort80": true - } - ] - }, - "25": { - "RegionID": 25, - "RegionCode": "nai", - "RegionName": "Nairobi", - "Latitude": -1.286389, - "Longitude": 36.817222, - "Nodes": [ - { - "Name": "25c", - "RegionID": 25, - "HostName": "derp25c.tailscale.com", - "IPv4": "102.67.167.37", - "IPv6": "2c0f:edb0:2000:1::2c7", - "CanPort80": true - }, - { - "Name": "25d", - "RegionID": 25, - "HostName": "derp25d.tailscale.com", - "IPv4": "102.67.167.188", - "IPv6": "2c0f:edb0:2000:1::188", - "CanPort80": true - }, - { - "Name": "25b", - "RegionID": 25, - "HostName": "derp25b.tailscale.com", - "IPv4": "102.67.167.245", - "IPv6": "2c0f:edb0:2000:1::2e9", - "CanPort80": true - } - ] - }, - "26": { - "RegionID": 26, - "RegionCode": "nue", - "RegionName": "Nuremberg", - "Latitude": 49.453889, - "Longitude": 11.0775, - "Nodes": [ - { - "Name": "26c", - "RegionID": 26, - "HostName": "derp26c.tailscale.com", - "IPv4": "49.12.193.137", - "IPv6": "2a01:4f8:1c1c:5c70::1", - "CanPort80": true - }, - { - "Name": "26d", - "RegionID": 26, - "HostName": "derp26d.tailscale.com", - "IPv4": "49.13.204.141", - "IPv6": "2a01:4f8:1c0c:7d06::1", - "CanPort80": true - }, - { - "Name": "26b", - "RegionID": 26, - "HostName": "derp26b.tailscale.com", - "IPv4": "167.235.72.200", - "IPv6": "2a01:4f8:1c1c:47b6::1", - "CanPort80": true - } - ] - }, - "27": { - "RegionID": 27, - "RegionCode": "iad", - "RegionName": "Ashburn", - "Latitude": 39.03, - "Longitude": -77.471111, - "Nodes": [ - { - "Name": "27d", - "RegionID": 27, - "HostName": "derp27d.tailscale.com", - "IPv4": "178.156.152.106", - "IPv6": "2a01:4ff:f0:3c8e::1", - "CanPort80": true - }, - { - "Name": "27c", - "RegionID": 27, - "HostName": "derp27c.tailscale.com", - "IPv4": "178.156.152.91", - "IPv6": "2a01:4ff:f0:3913::1", - "CanPort80": true - }, - { - "Name": "27e", - "RegionID": 27, - "HostName": "derp27e.tailscale.com", - "IPv4": "178.156.134.232", - "IPv6": "2a01:4ff:f0:28d4::1", - "CanPort80": true - }, - { - "Name": "27b", - "RegionID": 27, - "HostName": "derp27b.tailscale.com", - "IPv4": "5.161.218.233", - "IPv6": "2a01:4ff:f0:3db9::1", - "CanPort80": true - } - ] - }, - "28": { - "RegionID": 28, - "RegionCode": "hel", - "RegionName": "Helsinki", - "Latitude": 60.170833, - "Longitude": 24.9375, - "Nodes": [ - { - "Name": "28c", - "RegionID": 28, - "HostName": "derp28c.tailscale.com", - "IPv4": "95.217.2.165", - "IPv6": "2a01:4f9:c012:cd74::1", - "CanPort80": true - }, - { - "Name": "28d", - "RegionID": 28, - "HostName": "derp28d.tailscale.com", - "IPv4": "157.180.28.32", - "IPv6": "2a01:4f9:c012:2e5b::1", - "CanPort80": true - }, - { - "Name": "28b", - "RegionID": 28, - "HostName": "derp28b.tailscale.com", - "IPv4": "65.109.143.62", - "IPv6": "2a01:4f9:c012:d55c::1", - "CanPort80": true - } - ] - }, - "3": { - "RegionID": 3, - "RegionCode": "sin", - "RegionName": "Singapore", - "Latitude": 1.3521, - "Longitude": 103.8198, - "Nodes": [ - { - "Name": "3g", - "RegionID": 3, - "HostName": "derp3g.tailscale.com", - "IPv4": "172.237.72.79", - "IPv6": "2600:3c15::2000:adff:fe08:6fab", - "CanPort80": true - }, - { - "Name": "3f", - "RegionID": 3, - "HostName": "derp3f.tailscale.com", - "IPv4": "172.237.72.8", - "IPv6": "2600:3c15::2000:53ff:fe48:a668", - "CanPort80": true - }, - { - "Name": "3h", - "RegionID": 3, - "HostName": "derp3h.tailscale.com", - "IPv4": "172.237.66.30", - "IPv6": "2600:3c15::2000:3dff:fe44:50aa", - "CanPort80": true - }, - { - "Name": "3e", - "RegionID": 3, - "HostName": "derp3e.tailscale.com", - "IPv4": "172.237.72.43", - "IPv6": "2600:3c15::2000:6cff:fee4:d799", - "CanPort80": true - } - ] - }, - "4": { - "RegionID": 4, - "RegionCode": "fra", - "RegionName": "Frankfurt", - "Latitude": 50.1109, - "Longitude": 8.6821, - "Nodes": [ - { - "Name": "4h", - "RegionID": 4, - "HostName": "derp4h.tailscale.com", - "IPv4": "185.40.234.77", - "IPv6": "2a00:dd80:20::bcf", - "CanPort80": true - }, - { - "Name": "4g", - "RegionID": 4, - "HostName": "derp4g.tailscale.com", - "IPv4": "185.40.234.113", - "IPv6": "2a00:dd80:20::8f", - "CanPort80": true - }, - { - "Name": "4i", - "RegionID": 4, - "HostName": "derp4i.tailscale.com", - "IPv4": "185.40.234.53", - "IPv6": "2a00:dd80:20::8a6", - "CanPort80": true - }, - { - "Name": "4f", - "RegionID": 4, - "HostName": "derp4f.tailscale.com", - "IPv4": "185.40.234.219", - "IPv6": "2a00:dd80:20::a25", - "CanPort80": true - } - ] - }, - "5": { - "RegionID": 5, - "RegionCode": "syd", - "RegionName": "Sydney", - "Latitude": -33.867778, - "Longitude": 151.21, - "Nodes": [ - { - "Name": "5f", - "RegionID": 5, - "HostName": "derp5f.tailscale.com", - "IPv4": "172.105.166.103", - "IPv6": "2400:8907::2000:ccff:fe1f:80da", - "CanPort80": true - }, - { - "Name": "5g", - "RegionID": 5, - "HostName": "derp5g.tailscale.com", - "IPv4": "172.105.169.57", - "IPv6": "2400:8907::2000:2fff:fea7:57f4", - "CanPort80": true - }, - { - "Name": "5e", - "RegionID": 5, - "HostName": "derp5e.tailscale.com", - "IPv4": "172.105.179.230", - "IPv6": "2400:8907::2000:ceff:fe8d:4f4e", - "CanPort80": true - } - ] - }, - "6": { - "RegionID": 6, - "RegionCode": "blr", - "RegionName": "Bengaluru", - "Latitude": 12.9716, - "Longitude": 77.5946, - "Nodes": [ - { - "Name": "6a", - "RegionID": 6, - "HostName": "derp6.tailscale.com", - "IPv4": "68.183.90.120", - "IPv6": "2400:6180:100:d0::982:d001", - "CanPort80": true - } - ] - }, - "7": { - "RegionID": 7, - "RegionCode": "tok", - "RegionName": "Tokyo", - "Latitude": 35.6764, - "Longitude": 139.65, - "Nodes": [ - { - "Name": "7g", - "RegionID": 7, - "HostName": "derp7g.tailscale.com", - "IPv4": "172.238.6.179", - "IPv6": "2600:3c18::2000:3fff:fe80:3ebd", - "CanPort80": true - }, - { - "Name": "7f", - "RegionID": 7, - "HostName": "derp7f.tailscale.com", - "IPv4": "172.238.6.34", - "IPv6": "2600:3c18::2000:acff:fe8e:3ed5", - "CanPort80": true - }, - { - "Name": "7h", - "RegionID": 7, - "HostName": "derp7h.tailscale.com", - "IPv4": "172.237.28.183", - "IPv6": "2600:3c18::2000:b1ff:fea9:4560", - "CanPort80": true - }, - { - "Name": "7e", - "RegionID": 7, - "HostName": "derp7e.tailscale.com", - "IPv4": "172.238.6.180", - "IPv6": "2600:3c18::2000:60ff:fe0f:6e83", - "STUNOnly": true, - "CanPort80": true - } - ] - }, - "8": { - "RegionID": 8, - "RegionCode": "lhr", - "RegionName": "London", - "Latitude": 51.5072, - "Longitude": 0.1276, - "Nodes": [ - { - "Name": "8f", - "RegionID": 8, - "HostName": "derp8f.tailscale.com", - "IPv4": "176.58.88.183", - "IPv6": "2a00:dd80:3a::dfa", - "CanPort80": true - }, - { - "Name": "8g", - "RegionID": 8, - "HostName": "derp8g.tailscale.com", - "IPv4": "176.58.92.254", - "IPv6": "2a00:dd80:3a::ed", - "CanPort80": true - }, - { - "Name": "8e", - "RegionID": 8, - "HostName": "derp8e.tailscale.com", - "IPv4": "176.58.92.144", - "IPv6": "2a00:dd80:3a::b33", - "CanPort80": true - } - ] - }, - "9": { - "RegionID": 9, - "RegionCode": "dfw", - "RegionName": "Dallas", - "Latitude": 32.779167, - "Longitude": -96.808889, - "Nodes": [ - { - "Name": "9e", - "RegionID": 9, - "HostName": "derp9e.tailscale.com", - "IPv4": "192.73.248.83", - "IPv6": "2607:f740:100::359", - "CanPort80": true - }, - { - "Name": "9f", - "RegionID": 9, - "HostName": "derp9f.tailscale.com", - "IPv4": "209.177.156.197", - "IPv6": "2607:f740:100::cad", - "CanPort80": true - }, - { - "Name": "9d", - "RegionID": 9, - "HostName": "derp9d.tailscale.com", - "IPv4": "209.177.156.94", - "IPv6": "2607:f740:100::c05", - "CanPort80": true - } - ] - } - } - }, - "DisplayMessages": null, - "TKAEnabled": false, - "TKAHead": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", - "Domain": "kratail2tid@passkey", - "DomainAuditLogID": "", - "UserProfiles": { - "1260082990019555": { - "ID": 1260082990019555, - "LoginName": "tagged-devices", - "DisplayName": "Tagged Devices" - }, - "2230775583277936": { - "ID": 2230775583277936, - "LoginName": "exit-b.tail78f774.ts.net", - "DisplayName": "exit-b" - } - } + ] } }, "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.124.195.93": { - "peer_name": "exit-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-node/tailscaled.sock whois --json 100.124.195.93", - "response": null - }, - "100.116.18.24": { - "peer_name": "exit-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-node/tailscaled.sock whois --json 100.116.18.24", - "response": null - }, - "100.107.162.14": { - "peer_name": "group-a-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-node/tailscaled.sock whois --json 100.107.162.14", - "response": null - }, - "100.77.135.18": { - "peer_name": "group-b-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-node/tailscaled.sock whois --json 100.77.135.18", - "response": null - }, - "100.105.127.107": { - "peer_name": "multi-exit-router", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-node/tailscaled.sock whois --json 100.105.127.107", - "response": null - }, - "100.109.43.124": { - "peer_name": "router-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-node/tailscaled.sock whois --json 100.109.43.124", - "response": null - }, - "100.65.172.123": { - "peer_name": "router-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-node/tailscaled.sock whois --json 100.65.172.123", - "response": null - }, - "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 - } - }, "netmap": { - "SelfNode": { - "ID": 4041918547170221, - "StableID": "ngCb76MbZY11CNTRL", - "Name": "exit-node.tail78f774.ts.net.", - "User": 4041918547170221, - "Key": "nodekey:90f4a7b9dc024f1ddec414a49de2aa7611a2dd86efc9d7bae30862ad7c954269", - "DiscoKey": "discokey:6f1a76215431d7100538970473d97b4fde0e0a19b91035d1cba40b59ad79b437", - "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:36712", "10.65.0.27:36712", "172.17.0.1:36712"], - "Hostinfo": { - "Hostname": "exit-node", - "RoutableIPs": ["0.0.0.0/0", "::/0"], - "RequestTags": ["tag:exit"], - "Services": [ - { "Proto": "peerapi4", "Port": 37000 }, - { "Proto": "peerapi6", "Port": 37000 }, - { "Proto": "peerapi-dns-proxy", "Port": 1 } - ] - }, - "Created": "2026-02-23T00:13:20.566112173Z", - "Tags": ["tag:exit"], - "MachineAuthorized": true, - "CapMap": { - "https://tailscale.com/cap/file-sharing": null, - "https://tailscale.com/cap/is-owner": null, - "https://tailscale.com/cap/ssh": null, - "https://tailscale.com/cap/tailnet-lock": null, - "probe-udp-lifetime": null, - "ssh-behavior-v1": null, - "ssh-env-vars": null, - "store-appc-routes": null, - "tailnet-display-name": ["kratail2tid@passkey"] - }, - "ComputedName": "exit-node", - "ComputedNameWithHost": "exit-node" - }, - "AllCaps": [ - "tailnet-display-name", - "ssh-env-vars", - "probe-udp-lifetime", - "ssh-behavior-v1", - "https://tailscale.com/cap/ssh", - "https://tailscale.com/cap/file-sharing", - "https://tailscale.com/cap/is-owner", - "https://tailscale.com/cap/tailnet-lock", - "store-appc-routes" - ], - "NodeKey": "nodekey:90f4a7b9dc024f1ddec414a49de2aa7611a2dd86efc9d7bae30862ad7c954269", - "MachineKey": "mkey:e3be47b2090e55400f3e64825cd3092841529cd7b5b775e9e4553f12308abc2a", "Peers": [], - "DNS": { - "Routes": { - "tail78f774.ts.net.": null, - "ts.net.": [{ "Addr": "199.247.155.53" }, { "Addr": "2620:111:8007::53" }] - }, - "Domains": ["tail78f774.ts.net"], - "Proxied": true, - "ExitNodeFilteredSet": [".ts.net", ".tailscale.net"] - }, - "PacketFilter": [], - "PacketFilterRules": null, - "SSHPolicy": { "rules": [] }, - "CollectServices": false, - "DERPMap": { - "Regions": { - "1": { - "RegionID": 1, - "RegionCode": "nyc", - "RegionName": "New York City", - "Latitude": 40.7128, - "Longitude": -74.006, - "Nodes": [ - { - "Name": "1h", - "RegionID": 1, - "HostName": "derp1h.tailscale.com", - "IPv4": "199.38.181.93", - "IPv6": "2607:f740:f::afd", - "CanPort80": true - }, - { - "Name": "1g", - "RegionID": 1, - "HostName": "derp1g.tailscale.com", - "IPv4": "209.177.145.120", - "IPv6": "2607:f740:f::3eb", - "CanPort80": true - }, - { - "Name": "1i", - "RegionID": 1, - "HostName": "derp1i.tailscale.com", - "IPv4": "199.38.181.103", - "IPv6": "2607:f740:f::e19", - "CanPort80": true - }, - { - "Name": "1f", - "RegionID": 1, - "HostName": "derp1f.tailscale.com", - "IPv4": "199.38.181.104", - "IPv6": "2607:f740:f::bc", - "CanPort80": true - } - ] - }, - "10": { - "RegionID": 10, - "RegionCode": "sea", - "RegionName": "Seattle", - "Latitude": 47.609722, - "Longitude": -122.333056, - "Nodes": [ - { - "Name": "10c", - "RegionID": 10, - "HostName": "derp10c.tailscale.com", - "IPv4": "192.73.240.121", - "IPv6": "2607:f740:14::40c", - "CanPort80": true - }, - { - "Name": "10d", - "RegionID": 10, - "HostName": "derp10d.tailscale.com", - "IPv4": "192.73.240.132", - "IPv6": "2607:f740:14::500", - "CanPort80": true - }, - { - "Name": "10b", - "RegionID": 10, - "HostName": "derp10b.tailscale.com", - "IPv4": "192.73.240.161", - "IPv6": "2607:f740:14::61c", - "CanPort80": true - } - ] - }, - "11": { - "RegionID": 11, - "RegionCode": "sao", - "RegionName": "São Paulo", - "Latitude": -23.55, - "Longitude": -46.633333, - "Nodes": [ - { - "Name": "11f", - "RegionID": 11, - "HostName": "derp11f.tailscale.com", - "IPv4": "172.237.61.197", - "IPv6": "2600:3c0d::2000:3bff:fe44:6166", - "CanPort80": true - }, - { - "Name": "11g", - "RegionID": 11, - "HostName": "derp11g.tailscale.com", - "IPv4": "172.237.61.190", - "IPv6": "2600:3c0d::2000:62ff:febe:2e67", - "CanPort80": true - }, - { - "Name": "11e", - "RegionID": 11, - "HostName": "derp11e.tailscale.com", - "IPv4": "172.237.61.194", - "IPv6": "2600:3c0d::2000:d2ff:fe43:1790", - "CanPort80": true - } - ] - }, - "12": { - "RegionID": 12, - "RegionCode": "ord", - "RegionName": "Chicago", - "Latitude": 41.881944, - "Longitude": -87.627778, - "Nodes": [ - { - "Name": "12e", - "RegionID": 12, - "HostName": "derp12e.tailscale.com", - "IPv4": "209.177.158.15", - "IPv6": "2607:f740:e::b17", - "CanPort80": true - }, - { - "Name": "12f", - "RegionID": 12, - "HostName": "derp12f.tailscale.com", - "IPv4": "199.38.182.118", - "IPv6": "2607:f740:e::4c8", - "CanPort80": true - }, - { - "Name": "12d", - "RegionID": 12, - "HostName": "derp12d.tailscale.com", - "IPv4": "209.177.158.246", - "IPv6": "2607:f740:e::811", - "CanPort80": true - } - ] - }, - "13": { - "RegionID": 13, - "RegionCode": "den", - "RegionName": "Denver", - "Latitude": 39.7392, - "Longitude": -104.9849, - "Nodes": [ - { - "Name": "13c", - "RegionID": 13, - "HostName": "derp13c.tailscale.com", - "IPv4": "192.73.242.28", - "IPv6": "2607:f740:16::5c", - "CanPort80": true - }, - { - "Name": "13d", - "RegionID": 13, - "HostName": "derp13d.tailscale.com", - "IPv4": "192.73.242.204", - "IPv6": "2607:f740:16::c23", - "CanPort80": true - }, - { - "Name": "13b", - "RegionID": 13, - "HostName": "derp13b.tailscale.com", - "IPv4": "192.73.242.187", - "IPv6": "2607:f740:16::640", - "CanPort80": true - } - ] - }, - "14": { - "RegionID": 14, - "RegionCode": "ams", - "RegionName": "Amsterdam", - "Latitude": 52.372778, - "Longitude": 4.893611, - "Nodes": [ - { - "Name": "14c", - "RegionID": 14, - "HostName": "derp14c.tailscale.com", - "IPv4": "176.58.93.147", - "IPv6": "2a00:dd80:3c::b09", - "CanPort80": true - }, - { - "Name": "14d", - "RegionID": 14, - "HostName": "derp14d.tailscale.com", - "IPv4": "176.58.93.154", - "IPv6": "2a00:dd80:3c::3d5", - "CanPort80": true - }, - { - "Name": "14b", - "RegionID": 14, - "HostName": "derp14b.tailscale.com", - "IPv4": "176.58.93.248", - "IPv6": "2a00:dd80:3c::807", - "CanPort80": true - } - ] - }, - "15": { - "RegionID": 15, - "RegionCode": "jnb", - "RegionName": "Johannesburg", - "Latitude": -26.204444, - "Longitude": 28.045556, - "Nodes": [ - { - "Name": "15c", - "RegionID": 15, - "HostName": "derp15c.tailscale.com", - "IPv4": "102.67.165.185", - "IPv6": "2c0f:edb0:0:10::b59", - "CanPort80": true - }, - { - "Name": "15d", - "RegionID": 15, - "HostName": "derp15d.tailscale.com", - "IPv4": "102.67.165.36", - "IPv6": "2c0f:edb0:0:10::599", - "CanPort80": true - }, - { - "Name": "15b", - "RegionID": 15, - "HostName": "derp15b.tailscale.com", - "IPv4": "102.67.165.90", - "IPv6": "2c0f:edb0:0:10::963", - "CanPort80": true - } - ] - }, - "16": { - "RegionID": 16, - "RegionCode": "mia", - "RegionName": "Miami", - "Latitude": 25.78, - "Longitude": -80.21, - "Nodes": [ - { - "Name": "16c", - "RegionID": 16, - "HostName": "derp16c.tailscale.com", - "IPv4": "192.73.243.229", - "IPv6": "2607:f740:17::4e4", - "CanPort80": true - }, - { - "Name": "16d", - "RegionID": 16, - "HostName": "derp16d.tailscale.com", - "IPv4": "192.73.243.141", - "IPv6": "2607:f740:17::475", - "CanPort80": true - }, - { - "Name": "16b", - "RegionID": 16, - "HostName": "derp16b.tailscale.com", - "IPv4": "192.73.243.135", - "IPv6": "2607:f740:17::476", - "CanPort80": true - } - ] - }, - "17": { - "RegionID": 17, - "RegionCode": "lax", - "RegionName": "Los Angeles", - "Latitude": 34.05, - "Longitude": -118.25, - "Nodes": [ - { - "Name": "17c", - "RegionID": 17, - "HostName": "derp17c.tailscale.com", - "IPv4": "208.111.40.12", - "IPv6": "2607:f740:c::10", - "CanPort80": true - }, - { - "Name": "17d", - "RegionID": 17, - "HostName": "derp17d.tailscale.com", - "IPv4": "208.111.40.216", - "IPv6": "2607:f740:c::e1b", - "CanPort80": true - }, - { - "Name": "17b", - "RegionID": 17, - "HostName": "derp17b.tailscale.com", - "IPv4": "192.73.244.245", - "IPv6": "2607:f740:c::646", - "CanPort80": true - } - ] - }, - "18": { - "RegionID": 18, - "RegionCode": "par", - "RegionName": "Paris", - "Latitude": 48.856667, - "Longitude": 2.352222, - "Nodes": [ - { - "Name": "18c", - "RegionID": 18, - "HostName": "derp18c.tailscale.com", - "IPv4": "176.58.90.207", - "IPv6": "2a00:dd80:3e::c19", - "CanPort80": true - }, - { - "Name": "18d", - "RegionID": 18, - "HostName": "derp18d.tailscale.com", - "IPv4": "176.58.90.104", - "IPv6": "2a00:dd80:3e::f2e", - "CanPort80": true - }, - { - "Name": "18b", - "RegionID": 18, - "HostName": "derp18b.tailscale.com", - "IPv4": "176.58.90.147", - "IPv6": "2a00:dd80:3e::363", - "CanPort80": true - } - ] - }, - "19": { - "RegionID": 19, - "RegionCode": "mad", - "RegionName": "Madrid", - "Latitude": 40.416944, - "Longitude": -3.703333, - "Nodes": [ - { - "Name": "19c", - "RegionID": 19, - "HostName": "derp19c.tailscale.com", - "IPv4": "45.159.97.61", - "IPv6": "2a00:dd80:14:10::20", - "CanPort80": true - }, - { - "Name": "19d", - "RegionID": 19, - "HostName": "derp19d.tailscale.com", - "IPv4": "45.159.97.233", - "IPv6": "2a00:dd80:14:10::34a", - "CanPort80": true - }, - { - "Name": "19b", - "RegionID": 19, - "HostName": "derp19b.tailscale.com", - "IPv4": "45.159.97.144", - "IPv6": "2a00:dd80:14:10::335", - "CanPort80": true - } - ] - }, - "2": { - "RegionID": 2, - "RegionCode": "sfo", - "RegionName": "San Francisco", - "Latitude": 37.7775, - "Longitude": -122.416389, - "Nodes": [ - { - "Name": "2e", - "RegionID": 2, - "HostName": "derp2e.tailscale.com", - "IPv4": "192.73.252.134", - "IPv6": "2607:f740:0:3f::44c", - "CanPort80": true - }, - { - "Name": "2f", - "RegionID": 2, - "HostName": "derp2f.tailscale.com", - "IPv4": "208.111.34.178", - "IPv6": "2607:f740:0:3f::f4", - "CanPort80": true - }, - { - "Name": "2d", - "RegionID": 2, - "HostName": "derp2d.tailscale.com", - "IPv4": "192.73.252.65", - "IPv6": "2607:f740:0:3f::287", - "CanPort80": true - } - ] - }, - "20": { - "RegionID": 20, - "RegionCode": "hkg", - "RegionName": "Hong Kong", - "Latitude": 22.3193, - "Longitude": 114.1694, - "Nodes": [ - { - "Name": "20c", - "RegionID": 20, - "HostName": "derp20c.tailscale.com", - "IPv4": "205.147.105.30", - "IPv6": "2403:2500:8000:1::5fb", - "CanPort80": true - }, - { - "Name": "20d", - "RegionID": 20, - "HostName": "derp20d.tailscale.com", - "IPv4": "205.147.105.78", - "IPv6": "2403:2500:8000:1::e9a", - "CanPort80": true - }, - { - "Name": "20b", - "RegionID": 20, - "HostName": "derp20b.tailscale.com", - "IPv4": "103.6.84.152", - "IPv6": "2403:2500:8000:1::ef6", - "CanPort80": true - } - ] - }, - "21": { - "RegionID": 21, - "RegionCode": "tor", - "RegionName": "Toronto", - "Latitude": 43.741667, - "Longitude": -79.373333, - "Nodes": [ - { - "Name": "21c", - "RegionID": 21, - "HostName": "derp21c.tailscale.com", - "IPv4": "162.248.221.215", - "IPv6": "2607:f740:50::f10", - "CanPort80": true - }, - { - "Name": "21d", - "RegionID": 21, - "HostName": "derp21d.tailscale.com", - "IPv4": "162.248.221.248", - "IPv6": "2607:f740:50::ca4", - "CanPort80": true - }, - { - "Name": "21b", - "RegionID": 21, - "HostName": "derp21b.tailscale.com", - "IPv4": "162.248.221.199", - "IPv6": "2607:f740:50::1d1", - "CanPort80": true - } - ] - }, - "22": { - "RegionID": 22, - "RegionCode": "waw", - "RegionName": "Warsaw", - "Latitude": 52.23, - "Longitude": 21.011111, - "Nodes": [ - { - "Name": "22c", - "RegionID": 22, - "HostName": "derp22c.tailscale.com", - "IPv4": "45.159.98.253", - "IPv6": "2a00:dd80:40:100::3f", - "CanPort80": true - }, - { - "Name": "22d", - "RegionID": 22, - "HostName": "derp22d.tailscale.com", - "IPv4": "45.159.98.145", - "IPv6": "2a00:dd80:40:100::211", - "CanPort80": true - }, - { - "Name": "22b", - "RegionID": 22, - "HostName": "derp22b.tailscale.com", - "IPv4": "45.159.98.196", - "IPv6": "2a00:dd80:40:100::316", - "CanPort80": true - } - ] - }, - "23": { - "RegionID": 23, - "RegionCode": "dbi", - "RegionName": "Dubai", - "Latitude": 25.263056, - "Longitude": 55.297222, - "Nodes": [ - { - "Name": "23c", - "RegionID": 23, - "HostName": "derp23c.tailscale.com", - "IPv4": "185.34.3.207", - "IPv6": "2a00:dd80:3f:100::a50", - "CanPort80": true - }, - { - "Name": "23d", - "RegionID": 23, - "HostName": "derp23d.tailscale.com", - "IPv4": "185.34.3.75", - "IPv6": "2a00:dd80:3f:100::97e", - "CanPort80": true - }, - { - "Name": "23b", - "RegionID": 23, - "HostName": "derp23b.tailscale.com", - "IPv4": "185.34.3.232", - "IPv6": "2a00:dd80:3f:100::76f", - "CanPort80": true - } - ] - }, - "24": { - "RegionID": 24, - "RegionCode": "hnl", - "RegionName": "Honolulu", - "Latitude": 21.306944, - "Longitude": -157.858333, - "Nodes": [ - { - "Name": "24c", - "RegionID": 24, - "HostName": "derp24c.tailscale.com", - "IPv4": "208.83.233.233", - "IPv6": "2001:19f0:c000:c591:5400:04ff:fe26:2c5f", - "CanPort80": true - }, - { - "Name": "24d", - "RegionID": 24, - "HostName": "derp24d.tailscale.com", - "IPv4": "208.72.155.133", - "IPv6": "2001:19f0:c000:c564:5400:04ff:fe26:2ba8", - "CanPort80": true - }, - { - "Name": "24b", - "RegionID": 24, - "HostName": "derp24b.tailscale.com", - "IPv4": "208.83.234.151", - "IPv6": "2001:19f0:c000:c586:5400:04ff:fe26:2ba6", - "CanPort80": true - } - ] - }, - "25": { - "RegionID": 25, - "RegionCode": "nai", - "RegionName": "Nairobi", - "Latitude": -1.286389, - "Longitude": 36.817222, - "Nodes": [ - { - "Name": "25c", - "RegionID": 25, - "HostName": "derp25c.tailscale.com", - "IPv4": "102.67.167.37", - "IPv6": "2c0f:edb0:2000:1::2c7", - "CanPort80": true - }, - { - "Name": "25d", - "RegionID": 25, - "HostName": "derp25d.tailscale.com", - "IPv4": "102.67.167.188", - "IPv6": "2c0f:edb0:2000:1::188", - "CanPort80": true - }, - { - "Name": "25b", - "RegionID": 25, - "HostName": "derp25b.tailscale.com", - "IPv4": "102.67.167.245", - "IPv6": "2c0f:edb0:2000:1::2e9", - "CanPort80": true - } - ] - }, - "26": { - "RegionID": 26, - "RegionCode": "nue", - "RegionName": "Nuremberg", - "Latitude": 49.453889, - "Longitude": 11.0775, - "Nodes": [ - { - "Name": "26c", - "RegionID": 26, - "HostName": "derp26c.tailscale.com", - "IPv4": "49.12.193.137", - "IPv6": "2a01:4f8:1c1c:5c70::1", - "CanPort80": true - }, - { - "Name": "26d", - "RegionID": 26, - "HostName": "derp26d.tailscale.com", - "IPv4": "49.13.204.141", - "IPv6": "2a01:4f8:1c0c:7d06::1", - "CanPort80": true - }, - { - "Name": "26b", - "RegionID": 26, - "HostName": "derp26b.tailscale.com", - "IPv4": "167.235.72.200", - "IPv6": "2a01:4f8:1c1c:47b6::1", - "CanPort80": true - } - ] - }, - "27": { - "RegionID": 27, - "RegionCode": "iad", - "RegionName": "Ashburn", - "Latitude": 39.03, - "Longitude": -77.471111, - "Nodes": [ - { - "Name": "27d", - "RegionID": 27, - "HostName": "derp27d.tailscale.com", - "IPv4": "178.156.152.106", - "IPv6": "2a01:4ff:f0:3c8e::1", - "CanPort80": true - }, - { - "Name": "27c", - "RegionID": 27, - "HostName": "derp27c.tailscale.com", - "IPv4": "178.156.152.91", - "IPv6": "2a01:4ff:f0:3913::1", - "CanPort80": true - }, - { - "Name": "27e", - "RegionID": 27, - "HostName": "derp27e.tailscale.com", - "IPv4": "178.156.134.232", - "IPv6": "2a01:4ff:f0:28d4::1", - "CanPort80": true - }, - { - "Name": "27b", - "RegionID": 27, - "HostName": "derp27b.tailscale.com", - "IPv4": "5.161.218.233", - "IPv6": "2a01:4ff:f0:3db9::1", - "CanPort80": true - } - ] - }, - "28": { - "RegionID": 28, - "RegionCode": "hel", - "RegionName": "Helsinki", - "Latitude": 60.170833, - "Longitude": 24.9375, - "Nodes": [ - { - "Name": "28c", - "RegionID": 28, - "HostName": "derp28c.tailscale.com", - "IPv4": "95.217.2.165", - "IPv6": "2a01:4f9:c012:cd74::1", - "CanPort80": true - }, - { - "Name": "28d", - "RegionID": 28, - "HostName": "derp28d.tailscale.com", - "IPv4": "157.180.28.32", - "IPv6": "2a01:4f9:c012:2e5b::1", - "CanPort80": true - }, - { - "Name": "28b", - "RegionID": 28, - "HostName": "derp28b.tailscale.com", - "IPv4": "65.109.143.62", - "IPv6": "2a01:4f9:c012:d55c::1", - "CanPort80": true - } - ] - }, - "3": { - "RegionID": 3, - "RegionCode": "sin", - "RegionName": "Singapore", - "Latitude": 1.3521, - "Longitude": 103.8198, - "Nodes": [ - { - "Name": "3g", - "RegionID": 3, - "HostName": "derp3g.tailscale.com", - "IPv4": "172.237.72.79", - "IPv6": "2600:3c15::2000:adff:fe08:6fab", - "CanPort80": true - }, - { - "Name": "3f", - "RegionID": 3, - "HostName": "derp3f.tailscale.com", - "IPv4": "172.237.72.8", - "IPv6": "2600:3c15::2000:53ff:fe48:a668", - "CanPort80": true - }, - { - "Name": "3h", - "RegionID": 3, - "HostName": "derp3h.tailscale.com", - "IPv4": "172.237.66.30", - "IPv6": "2600:3c15::2000:3dff:fe44:50aa", - "CanPort80": true - }, - { - "Name": "3e", - "RegionID": 3, - "HostName": "derp3e.tailscale.com", - "IPv4": "172.237.72.43", - "IPv6": "2600:3c15::2000:6cff:fee4:d799", - "CanPort80": true - } - ] - }, - "4": { - "RegionID": 4, - "RegionCode": "fra", - "RegionName": "Frankfurt", - "Latitude": 50.1109, - "Longitude": 8.6821, - "Nodes": [ - { - "Name": "4h", - "RegionID": 4, - "HostName": "derp4h.tailscale.com", - "IPv4": "185.40.234.77", - "IPv6": "2a00:dd80:20::bcf", - "CanPort80": true - }, - { - "Name": "4g", - "RegionID": 4, - "HostName": "derp4g.tailscale.com", - "IPv4": "185.40.234.113", - "IPv6": "2a00:dd80:20::8f", - "CanPort80": true - }, - { - "Name": "4i", - "RegionID": 4, - "HostName": "derp4i.tailscale.com", - "IPv4": "185.40.234.53", - "IPv6": "2a00:dd80:20::8a6", - "CanPort80": true - }, - { - "Name": "4f", - "RegionID": 4, - "HostName": "derp4f.tailscale.com", - "IPv4": "185.40.234.219", - "IPv6": "2a00:dd80:20::a25", - "CanPort80": true - } - ] - }, - "5": { - "RegionID": 5, - "RegionCode": "syd", - "RegionName": "Sydney", - "Latitude": -33.867778, - "Longitude": 151.21, - "Nodes": [ - { - "Name": "5f", - "RegionID": 5, - "HostName": "derp5f.tailscale.com", - "IPv4": "172.105.166.103", - "IPv6": "2400:8907::2000:ccff:fe1f:80da", - "CanPort80": true - }, - { - "Name": "5g", - "RegionID": 5, - "HostName": "derp5g.tailscale.com", - "IPv4": "172.105.169.57", - "IPv6": "2400:8907::2000:2fff:fea7:57f4", - "CanPort80": true - }, - { - "Name": "5e", - "RegionID": 5, - "HostName": "derp5e.tailscale.com", - "IPv4": "172.105.179.230", - "IPv6": "2400:8907::2000:ceff:fe8d:4f4e", - "CanPort80": true - } - ] - }, - "6": { - "RegionID": 6, - "RegionCode": "blr", - "RegionName": "Bengaluru", - "Latitude": 12.9716, - "Longitude": 77.5946, - "Nodes": [ - { - "Name": "6a", - "RegionID": 6, - "HostName": "derp6.tailscale.com", - "IPv4": "68.183.90.120", - "IPv6": "2400:6180:100:d0::982:d001", - "CanPort80": true - } - ] - }, - "7": { - "RegionID": 7, - "RegionCode": "tok", - "RegionName": "Tokyo", - "Latitude": 35.6764, - "Longitude": 139.65, - "Nodes": [ - { - "Name": "7g", - "RegionID": 7, - "HostName": "derp7g.tailscale.com", - "IPv4": "172.238.6.179", - "IPv6": "2600:3c18::2000:3fff:fe80:3ebd", - "CanPort80": true - }, - { - "Name": "7f", - "RegionID": 7, - "HostName": "derp7f.tailscale.com", - "IPv4": "172.238.6.34", - "IPv6": "2600:3c18::2000:acff:fe8e:3ed5", - "CanPort80": true - }, - { - "Name": "7h", - "RegionID": 7, - "HostName": "derp7h.tailscale.com", - "IPv4": "172.237.28.183", - "IPv6": "2600:3c18::2000:b1ff:fea9:4560", - "CanPort80": true - }, - { - "Name": "7e", - "RegionID": 7, - "HostName": "derp7e.tailscale.com", - "IPv4": "172.238.6.180", - "IPv6": "2600:3c18::2000:60ff:fe0f:6e83", - "STUNOnly": true, - "CanPort80": true - } - ] - }, - "8": { - "RegionID": 8, - "RegionCode": "lhr", - "RegionName": "London", - "Latitude": 51.5072, - "Longitude": 0.1276, - "Nodes": [ - { - "Name": "8f", - "RegionID": 8, - "HostName": "derp8f.tailscale.com", - "IPv4": "176.58.88.183", - "IPv6": "2a00:dd80:3a::dfa", - "CanPort80": true - }, - { - "Name": "8g", - "RegionID": 8, - "HostName": "derp8g.tailscale.com", - "IPv4": "176.58.92.254", - "IPv6": "2a00:dd80:3a::ed", - "CanPort80": true - }, - { - "Name": "8e", - "RegionID": 8, - "HostName": "derp8e.tailscale.com", - "IPv4": "176.58.92.144", - "IPv6": "2a00:dd80:3a::b33", - "CanPort80": true - } - ] - }, - "9": { - "RegionID": 9, - "RegionCode": "dfw", - "RegionName": "Dallas", - "Latitude": 32.779167, - "Longitude": -96.808889, - "Nodes": [ - { - "Name": "9e", - "RegionID": 9, - "HostName": "derp9e.tailscale.com", - "IPv4": "192.73.248.83", - "IPv6": "2607:f740:100::359", - "CanPort80": true - }, - { - "Name": "9f", - "RegionID": 9, - "HostName": "derp9f.tailscale.com", - "IPv4": "209.177.156.197", - "IPv6": "2607:f740:100::cad", - "CanPort80": true - }, - { - "Name": "9d", - "RegionID": 9, - "HostName": "derp9d.tailscale.com", - "IPv4": "209.177.156.94", - "IPv6": "2607:f740:100::c05", - "CanPort80": true - } - ] - } - } - }, - "DisplayMessages": null, - "TKAEnabled": false, - "TKAHead": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", - "Domain": "kratail2tid@passkey", - "DomainAuditLogID": "", - "UserProfiles": { - "4041918547170221": { - "ID": 4041918547170221, - "LoginName": "exit-node.tail78f774.ts.net", - "DisplayName": "exit-node" - } - } + "PacketFilterRules": null } }, "group-a-client": { - "commands": { - "packet_filter_rules": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/group-a-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/group-a-client/tailscaled.sock debug localapi POST debug-packet-filter-matches" - }, "packet_filter_rules": [ { "SrcIPs": [ @@ -4065,349 +462,48 @@ "fd7a:115c:a1e0::ff37:1218" ], "DstPorts": [ - { "IP": "100.107.162.14", "Ports": { "First": 0, "Last": 65535 } }, - { "IP": "fd7a:115c:a1e0::a237:a20e", "Ports": { "First": 0, "Last": 65535 } } + { + "IP": "100.107.162.14", + "Ports": { + "First": 0, + "Last": 65535 + } + }, + { + "IP": "fd7a:115c:a1e0::a237:a20e", + "Ports": { + "First": 0, + "Last": 65535 + } + } ] } ], - "packet_filter_matches": [ - { - "IPProto": [6, 17, 1, 58], - "Srcs": [ - "100.107.162.14/32", - "100.116.18.24/32", - "100.124.195.93/32", - "100.77.135.18/32", - "fd7a:115c:a1e0::4b37:8712/128", - "fd7a:115c:a1e0::7837:c35d/128", - "fd7a:115c:a1e0::a237:a20e/128", - "fd7a:115c:a1e0::ff37:1218/128" - ], - "SrcCaps": null, - "Dsts": [ - { "Net": "100.107.162.14/32", "Ports": { "First": 0, "Last": 65535 } }, - { "Net": "fd7a:115c:a1e0::a237:a20e/128", "Ports": { "First": 0, "Last": 65535 } } - ], - "Caps": [] - } - ], - "whois": { - "100.124.195.93": { - "peer_name": "exit-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/group-a-client/tailscaled.sock whois --json 100.124.195.93", - "response": { - "Node": { - "ID": 3118755726458377, - "StableID": "nvFTscRVMR11CNTRL", - "Name": "exit-a.tail78f774.ts.net.", - "User": 1260082990019555, - "Key": "nodekey:21ab6fa3288e3bf8cecced295316c6327f427649765eb1746cc6ee9978bcc35c", - "DiscoKey": "discokey:0c8595f67987ed47cf551646d6266c21a635d622409d10745cc08f6922066e49", - "Addresses": ["100.124.195.93/32", "fd7a:115c:a1e0::7837:c35d/128"], - "AllowedIPs": ["100.124.195.93/32", "fd7a:115c:a1e0::7837:c35d/128"], - "Endpoints": ["77.164.248.136:37550", "10.65.0.27:37550", "172.17.0.1:37550"], - "HomeDERP": 14, - "Hostinfo": { - "OS": "linux", - "Hostname": "exit-a", - "Services": [ - { "Proto": "peerapi4", "Port": 57826 }, - { "Proto": "peerapi6", "Port": 57826 } - ] - }, - "Created": "2026-03-28T10:37:56.932966573Z", - "Cap": 131, - "Tags": ["tag:exit-a"], - "Online": true, - "ComputedName": "exit-a", - "ComputedNameWithHost": "exit-a" - }, - "UserProfile": { "ID": 1260082990019555, "LoginName": "tagged-devices", "DisplayName": "Tagged Devices" }, - "CapMap": null - } - }, - "100.116.18.24": { - "peer_name": "exit-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/group-a-client/tailscaled.sock whois --json 100.116.18.24", - "response": { - "Node": { - "ID": 2230775583277936, - "StableID": "ndK1N8hKRJ11CNTRL", - "Name": "exit-b.tail78f774.ts.net.", - "User": 1260082990019555, - "Key": "nodekey:265e1377372be0d036773ac41339bf7b53ed18e9f67f196d7d517abeff741217", - "DiscoKey": "discokey:63071b08ff89860a2d98005f8f6f65f3b92e05b7b1338b1be71e4ad866f12728", - "Addresses": ["100.116.18.24/32", "fd7a:115c:a1e0::ff37:1218/128"], - "AllowedIPs": ["100.116.18.24/32", "fd7a:115c:a1e0::ff37:1218/128"], - "Endpoints": ["77.164.248.136:35565", "10.65.0.27:35565", "172.17.0.1:35565"], - "HomeDERP": 14, - "Hostinfo": { - "OS": "linux", - "Hostname": "exit-b", - "Services": [ - { "Proto": "peerapi4", "Port": 61723 }, - { "Proto": "peerapi6", "Port": 61723 } - ] - }, - "Created": "2026-03-28T10:38:00.655990366Z", - "Cap": 131, - "Tags": ["tag:exit-b"], - "Online": true, - "ComputedName": "exit-b", - "ComputedNameWithHost": "exit-b" - }, - "UserProfile": { "ID": 1260082990019555, "LoginName": "tagged-devices", "DisplayName": "Tagged Devices" }, - "CapMap": null - } - }, - "100.85.66.106": { - "peer_name": "exit-node", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/group-a-client/tailscaled.sock whois --json 100.85.66.106", - "response": null - }, - "100.77.135.18": { - "peer_name": "group-b-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/group-a-client/tailscaled.sock whois --json 100.77.135.18", - "response": { - "Node": { - "ID": 1008089393782498, - "StableID": "ndUwgLoZs811CNTRL", - "Name": "group-b-client.tail78f774.ts.net.", - "User": 1260082990019555, - "Key": "nodekey:ef35a655163204a08b33e09fdc24709f1e3aaa7f40de4efd5549cf014b4d8711", - "DiscoKey": "discokey:e972182cda0d0b459c91b2881624b81749a7e44390a5dde1b9bc17c1ae67715a", - "Addresses": ["100.77.135.18/32", "fd7a:115c:a1e0::4b37:8712/128"], - "AllowedIPs": ["100.77.135.18/32", "fd7a:115c:a1e0::4b37:8712/128"], - "Endpoints": ["77.164.248.136:49377", "10.65.0.27:49377", "172.17.0.1:49377"], - "HomeDERP": 14, - "Hostinfo": { - "OS": "linux", - "Hostname": "group-b-client", - "Services": [ - { "Proto": "peerapi4", "Port": 47173 }, - { "Proto": "peerapi6", "Port": 47173 } - ] - }, - "Created": "2026-03-28T10:38:08.031309668Z", - "Cap": 131, - "Tags": ["tag:group-b"], - "Online": true, - "ComputedName": "group-b-client", - "ComputedNameWithHost": "group-b-client" - }, - "UserProfile": { "ID": 1260082990019555, "LoginName": "tagged-devices", "DisplayName": "Tagged Devices" }, - "CapMap": null - } - }, - "100.105.127.107": { - "peer_name": "multi-exit-router", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/group-a-client/tailscaled.sock whois --json 100.105.127.107", - "response": null - }, - "100.109.43.124": { - "peer_name": "router-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/group-a-client/tailscaled.sock whois --json 100.109.43.124", - "response": null - }, - "100.65.172.123": { - "peer_name": "router-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/group-a-client/tailscaled.sock whois --json 100.65.172.123", - "response": null - }, - "100.92.142.61": { - "peer_name": "subnet-router", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/group-a-client/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/group-a-client/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/group-a-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/group-a-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/group-a-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/group-a-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/group-a-client/tailscaled.sock whois --json 100.90.199.68", - "response": null - } - }, "netmap": { - "SelfNode": { - "ID": 6999435610919250, - "StableID": "nyckVfJ4fw11CNTRL", - "Name": "group-a-client.tail78f774.ts.net.", - "User": 6999435610919250, - "Key": "nodekey:802726716bd4942fceb5e444218c930040fadb082698b57ea3eb59a6a26ba20d", - "DiscoKey": "discokey:bc93c2d3b81606e44eb1c96d721e7cd73c9497aa7d3efbe2f5e0d1e2e95b190f", - "Addresses": ["100.107.162.14/32", "fd7a:115c:a1e0::a237:a20e/128"], - "AllowedIPs": ["100.107.162.14/32", "fd7a:115c:a1e0::a237:a20e/128"], - "Endpoints": ["77.164.248.136:51980", "10.65.0.27:51980", "172.17.0.1:51980"], - "Hostinfo": { - "Hostname": "group-a-client", - "RequestTags": ["tag:group-a"], - "Services": [ - { "Proto": "peerapi4", "Port": 36543 }, - { "Proto": "peerapi6", "Port": 36543 }, - { "Proto": "peerapi-dns-proxy", "Port": 1 } - ] - }, - "Created": "2026-03-28T10:38:04.339428828Z", - "Tags": ["tag:group-a"], - "MachineAuthorized": true, - "CapMap": { - "https://tailscale.com/cap/file-sharing": null, - "https://tailscale.com/cap/is-owner": null, - "https://tailscale.com/cap/ssh": null, - "https://tailscale.com/cap/tailnet-lock": null, - "probe-udp-lifetime": null, - "ssh-behavior-v1": null, - "ssh-env-vars": null, - "store-appc-routes": null, - "tailnet-display-name": ["kratail2tid@passkey"] - }, - "ComputedName": "group-a-client", - "ComputedNameWithHost": "group-a-client" - }, - "AllCaps": [ - "https://tailscale.com/cap/file-sharing", - "probe-udp-lifetime", - "store-appc-routes", - "https://tailscale.com/cap/ssh", - "ssh-behavior-v1", - "ssh-env-vars", - "https://tailscale.com/cap/tailnet-lock", - "https://tailscale.com/cap/is-owner", - "tailnet-display-name" - ], - "NodeKey": "nodekey:802726716bd4942fceb5e444218c930040fadb082698b57ea3eb59a6a26ba20d", - "MachineKey": "mkey:fd2d0c2953440569b6c045d6bb1826bf138bf65b4ed4433532e4d91e09fd6b6b", "Peers": [ { - "ID": 1008089393782498, - "StableID": "ndUwgLoZs811CNTRL", "Name": "group-b-client.tail78f774.ts.net.", - "User": 1260082990019555, - "Key": "nodekey:ef35a655163204a08b33e09fdc24709f1e3aaa7f40de4efd5549cf014b4d8711", - "DiscoKey": "discokey:e972182cda0d0b459c91b2881624b81749a7e44390a5dde1b9bc17c1ae67715a", - "Addresses": ["100.77.135.18/32", "fd7a:115c:a1e0::4b37:8712/128"], - "AllowedIPs": ["100.77.135.18/32", "fd7a:115c:a1e0::4b37:8712/128"], - "Endpoints": ["77.164.248.136:49377", "10.65.0.27:49377", "172.17.0.1:49377"], - "HomeDERP": 14, - "Hostinfo": { - "OS": "linux", - "Hostname": "group-b-client", - "Services": [ - { "Proto": "peerapi4", "Port": 47173 }, - { "Proto": "peerapi6", "Port": 47173 } - ] - }, - "Created": "2026-03-28T10:38:08.031309668Z", - "Cap": 131, - "Tags": ["tag:group-b"], - "Online": true, - "ComputedName": "group-b-client", - "ComputedNameWithHost": "group-b-client" - }, - { - "ID": 2230775583277936, - "StableID": "ndK1N8hKRJ11CNTRL", - "Name": "exit-b.tail78f774.ts.net.", - "User": 1260082990019555, - "Key": "nodekey:265e1377372be0d036773ac41339bf7b53ed18e9f67f196d7d517abeff741217", - "DiscoKey": "discokey:63071b08ff89860a2d98005f8f6f65f3b92e05b7b1338b1be71e4ad866f12728", - "Addresses": ["100.116.18.24/32", "fd7a:115c:a1e0::ff37:1218/128"], - "AllowedIPs": ["100.116.18.24/32", "fd7a:115c:a1e0::ff37:1218/128"], - "Endpoints": ["77.164.248.136:35565", "10.65.0.27:35565", "172.17.0.1:35565"], - "HomeDERP": 14, - "Hostinfo": { - "OS": "linux", - "Hostname": "exit-b", - "Services": [ - { "Proto": "peerapi4", "Port": 61723 }, - { "Proto": "peerapi6", "Port": 61723 } - ] - }, - "Created": "2026-03-28T10:38:00.655990366Z", - "Cap": 131, - "Tags": ["tag:exit-b"], - "Online": true, - "ComputedName": "exit-b", - "ComputedNameWithHost": "exit-b" - }, - { - "ID": 3118755726458377, - "StableID": "nvFTscRVMR11CNTRL", - "Name": "exit-a.tail78f774.ts.net.", - "User": 1260082990019555, - "Key": "nodekey:21ab6fa3288e3bf8cecced295316c6327f427649765eb1746cc6ee9978bcc35c", - "DiscoKey": "discokey:0c8595f67987ed47cf551646d6266c21a635d622409d10745cc08f6922066e49", - "Addresses": ["100.124.195.93/32", "fd7a:115c:a1e0::7837:c35d/128"], - "AllowedIPs": ["100.124.195.93/32", "fd7a:115c:a1e0::7837:c35d/128"], - "Endpoints": ["77.164.248.136:37550", "10.65.0.27:37550", "172.17.0.1:37550"], - "HomeDERP": 14, - "Hostinfo": { - "OS": "linux", - "Hostname": "exit-a", - "Services": [ - { "Proto": "peerapi4", "Port": 57826 }, - { "Proto": "peerapi6", "Port": 57826 } - ] - }, - "Created": "2026-03-28T10:37:56.932966573Z", - "Cap": 131, - "Tags": ["tag:exit-a"], - "Online": true, - "ComputedName": "exit-a", - "ComputedNameWithHost": "exit-a" - } - ], - "DNS": { - "Routes": { - "tail78f774.ts.net.": null, - "ts.net.": [{ "Addr": "199.247.155.53" }, { "Addr": "2620:111:8007::53" }] - }, - "Domains": ["tail78f774.ts.net"], - "Proxied": true, - "ExitNodeFilteredSet": [".ts.net", ".tailscale.net"] - }, - "PacketFilter": [ - { - "IPProto": [6, 17, 1, 58], - "Srcs": [ - "100.107.162.14/32", - "100.116.18.24/32", - "100.124.195.93/32", + "AllowedIPs": [ "100.77.135.18/32", - "fd7a:115c:a1e0::4b37:8712/128", - "fd7a:115c:a1e0::7837:c35d/128", - "fd7a:115c:a1e0::a237:a20e/128", + "fd7a:115c:a1e0::4b37:8712/128" + ], + "PrimaryRoutes": [] + }, + { + "Name": "exit-b.tail78f774.ts.net.", + "AllowedIPs": [ + "100.116.18.24/32", "fd7a:115c:a1e0::ff37:1218/128" ], - "SrcCaps": null, - "Dsts": [ - { "Net": "100.107.162.14/32", "Ports": { "First": 0, "Last": 65535 } }, - { "Net": "fd7a:115c:a1e0::a237:a20e/128", "Ports": { "First": 0, "Last": 65535 } } + "PrimaryRoutes": [] + }, + { + "Name": "exit-a.tail78f774.ts.net.", + "AllowedIPs": [ + "100.124.195.93/32", + "fd7a:115c:a1e0::7837:c35d/128" ], - "Caps": [] + "PrimaryRoutes": [] } ], "PacketFilterRules": [ @@ -4423,990 +519,26 @@ "fd7a:115c:a1e0::ff37:1218" ], "DstPorts": [ - { "IP": "100.107.162.14", "Ports": { "First": 0, "Last": 65535 } }, - { "IP": "fd7a:115c:a1e0::a237:a20e", "Ports": { "First": 0, "Last": 65535 } } + { + "IP": "100.107.162.14", + "Ports": { + "First": 0, + "Last": 65535 + } + }, + { + "IP": "fd7a:115c:a1e0::a237:a20e", + "Ports": { + "First": 0, + "Last": 65535 + } + } ] } - ], - "SSHPolicy": { "rules": [] }, - "CollectServices": false, - "DERPMap": { - "Regions": { - "1": { - "RegionID": 1, - "RegionCode": "nyc", - "RegionName": "New York City", - "Latitude": 40.7128, - "Longitude": -74.006, - "Nodes": [ - { - "Name": "1h", - "RegionID": 1, - "HostName": "derp1h.tailscale.com", - "IPv4": "199.38.181.93", - "IPv6": "2607:f740:f::afd", - "CanPort80": true - }, - { - "Name": "1g", - "RegionID": 1, - "HostName": "derp1g.tailscale.com", - "IPv4": "209.177.145.120", - "IPv6": "2607:f740:f::3eb", - "CanPort80": true - }, - { - "Name": "1i", - "RegionID": 1, - "HostName": "derp1i.tailscale.com", - "IPv4": "199.38.181.103", - "IPv6": "2607:f740:f::e19", - "CanPort80": true - }, - { - "Name": "1f", - "RegionID": 1, - "HostName": "derp1f.tailscale.com", - "IPv4": "199.38.181.104", - "IPv6": "2607:f740:f::bc", - "CanPort80": true - } - ] - }, - "10": { - "RegionID": 10, - "RegionCode": "sea", - "RegionName": "Seattle", - "Latitude": 47.609722, - "Longitude": -122.333056, - "Nodes": [ - { - "Name": "10c", - "RegionID": 10, - "HostName": "derp10c.tailscale.com", - "IPv4": "192.73.240.121", - "IPv6": "2607:f740:14::40c", - "CanPort80": true - }, - { - "Name": "10d", - "RegionID": 10, - "HostName": "derp10d.tailscale.com", - "IPv4": "192.73.240.132", - "IPv6": "2607:f740:14::500", - "CanPort80": true - }, - { - "Name": "10b", - "RegionID": 10, - "HostName": "derp10b.tailscale.com", - "IPv4": "192.73.240.161", - "IPv6": "2607:f740:14::61c", - "CanPort80": true - } - ] - }, - "11": { - "RegionID": 11, - "RegionCode": "sao", - "RegionName": "São Paulo", - "Latitude": -23.55, - "Longitude": -46.633333, - "Nodes": [ - { - "Name": "11f", - "RegionID": 11, - "HostName": "derp11f.tailscale.com", - "IPv4": "172.237.61.197", - "IPv6": "2600:3c0d::2000:3bff:fe44:6166", - "CanPort80": true - }, - { - "Name": "11g", - "RegionID": 11, - "HostName": "derp11g.tailscale.com", - "IPv4": "172.237.61.190", - "IPv6": "2600:3c0d::2000:62ff:febe:2e67", - "CanPort80": true - }, - { - "Name": "11e", - "RegionID": 11, - "HostName": "derp11e.tailscale.com", - "IPv4": "172.237.61.194", - "IPv6": "2600:3c0d::2000:d2ff:fe43:1790", - "CanPort80": true - } - ] - }, - "12": { - "RegionID": 12, - "RegionCode": "ord", - "RegionName": "Chicago", - "Latitude": 41.881944, - "Longitude": -87.627778, - "Nodes": [ - { - "Name": "12e", - "RegionID": 12, - "HostName": "derp12e.tailscale.com", - "IPv4": "209.177.158.15", - "IPv6": "2607:f740:e::b17", - "CanPort80": true - }, - { - "Name": "12f", - "RegionID": 12, - "HostName": "derp12f.tailscale.com", - "IPv4": "199.38.182.118", - "IPv6": "2607:f740:e::4c8", - "CanPort80": true - }, - { - "Name": "12d", - "RegionID": 12, - "HostName": "derp12d.tailscale.com", - "IPv4": "209.177.158.246", - "IPv6": "2607:f740:e::811", - "CanPort80": true - } - ] - }, - "13": { - "RegionID": 13, - "RegionCode": "den", - "RegionName": "Denver", - "Latitude": 39.7392, - "Longitude": -104.9849, - "Nodes": [ - { - "Name": "13c", - "RegionID": 13, - "HostName": "derp13c.tailscale.com", - "IPv4": "192.73.242.28", - "IPv6": "2607:f740:16::5c", - "CanPort80": true - }, - { - "Name": "13d", - "RegionID": 13, - "HostName": "derp13d.tailscale.com", - "IPv4": "192.73.242.204", - "IPv6": "2607:f740:16::c23", - "CanPort80": true - }, - { - "Name": "13b", - "RegionID": 13, - "HostName": "derp13b.tailscale.com", - "IPv4": "192.73.242.187", - "IPv6": "2607:f740:16::640", - "CanPort80": true - } - ] - }, - "14": { - "RegionID": 14, - "RegionCode": "ams", - "RegionName": "Amsterdam", - "Latitude": 52.372778, - "Longitude": 4.893611, - "Nodes": [ - { - "Name": "14c", - "RegionID": 14, - "HostName": "derp14c.tailscale.com", - "IPv4": "176.58.93.147", - "IPv6": "2a00:dd80:3c::b09", - "CanPort80": true - }, - { - "Name": "14d", - "RegionID": 14, - "HostName": "derp14d.tailscale.com", - "IPv4": "176.58.93.154", - "IPv6": "2a00:dd80:3c::3d5", - "CanPort80": true - }, - { - "Name": "14b", - "RegionID": 14, - "HostName": "derp14b.tailscale.com", - "IPv4": "176.58.93.248", - "IPv6": "2a00:dd80:3c::807", - "CanPort80": true - } - ] - }, - "15": { - "RegionID": 15, - "RegionCode": "jnb", - "RegionName": "Johannesburg", - "Latitude": -26.204444, - "Longitude": 28.045556, - "Nodes": [ - { - "Name": "15c", - "RegionID": 15, - "HostName": "derp15c.tailscale.com", - "IPv4": "102.67.165.185", - "IPv6": "2c0f:edb0:0:10::b59", - "CanPort80": true - }, - { - "Name": "15d", - "RegionID": 15, - "HostName": "derp15d.tailscale.com", - "IPv4": "102.67.165.36", - "IPv6": "2c0f:edb0:0:10::599", - "CanPort80": true - }, - { - "Name": "15b", - "RegionID": 15, - "HostName": "derp15b.tailscale.com", - "IPv4": "102.67.165.90", - "IPv6": "2c0f:edb0:0:10::963", - "CanPort80": true - } - ] - }, - "16": { - "RegionID": 16, - "RegionCode": "mia", - "RegionName": "Miami", - "Latitude": 25.78, - "Longitude": -80.21, - "Nodes": [ - { - "Name": "16c", - "RegionID": 16, - "HostName": "derp16c.tailscale.com", - "IPv4": "192.73.243.229", - "IPv6": "2607:f740:17::4e4", - "CanPort80": true - }, - { - "Name": "16d", - "RegionID": 16, - "HostName": "derp16d.tailscale.com", - "IPv4": "192.73.243.141", - "IPv6": "2607:f740:17::475", - "CanPort80": true - }, - { - "Name": "16b", - "RegionID": 16, - "HostName": "derp16b.tailscale.com", - "IPv4": "192.73.243.135", - "IPv6": "2607:f740:17::476", - "CanPort80": true - } - ] - }, - "17": { - "RegionID": 17, - "RegionCode": "lax", - "RegionName": "Los Angeles", - "Latitude": 34.05, - "Longitude": -118.25, - "Nodes": [ - { - "Name": "17c", - "RegionID": 17, - "HostName": "derp17c.tailscale.com", - "IPv4": "208.111.40.12", - "IPv6": "2607:f740:c::10", - "CanPort80": true - }, - { - "Name": "17d", - "RegionID": 17, - "HostName": "derp17d.tailscale.com", - "IPv4": "208.111.40.216", - "IPv6": "2607:f740:c::e1b", - "CanPort80": true - }, - { - "Name": "17b", - "RegionID": 17, - "HostName": "derp17b.tailscale.com", - "IPv4": "192.73.244.245", - "IPv6": "2607:f740:c::646", - "CanPort80": true - } - ] - }, - "18": { - "RegionID": 18, - "RegionCode": "par", - "RegionName": "Paris", - "Latitude": 48.856667, - "Longitude": 2.352222, - "Nodes": [ - { - "Name": "18c", - "RegionID": 18, - "HostName": "derp18c.tailscale.com", - "IPv4": "176.58.90.207", - "IPv6": "2a00:dd80:3e::c19", - "CanPort80": true - }, - { - "Name": "18d", - "RegionID": 18, - "HostName": "derp18d.tailscale.com", - "IPv4": "176.58.90.104", - "IPv6": "2a00:dd80:3e::f2e", - "CanPort80": true - }, - { - "Name": "18b", - "RegionID": 18, - "HostName": "derp18b.tailscale.com", - "IPv4": "176.58.90.147", - "IPv6": "2a00:dd80:3e::363", - "CanPort80": true - } - ] - }, - "19": { - "RegionID": 19, - "RegionCode": "mad", - "RegionName": "Madrid", - "Latitude": 40.416944, - "Longitude": -3.703333, - "Nodes": [ - { - "Name": "19c", - "RegionID": 19, - "HostName": "derp19c.tailscale.com", - "IPv4": "45.159.97.61", - "IPv6": "2a00:dd80:14:10::20", - "CanPort80": true - }, - { - "Name": "19d", - "RegionID": 19, - "HostName": "derp19d.tailscale.com", - "IPv4": "45.159.97.233", - "IPv6": "2a00:dd80:14:10::34a", - "CanPort80": true - }, - { - "Name": "19b", - "RegionID": 19, - "HostName": "derp19b.tailscale.com", - "IPv4": "45.159.97.144", - "IPv6": "2a00:dd80:14:10::335", - "CanPort80": true - } - ] - }, - "2": { - "RegionID": 2, - "RegionCode": "sfo", - "RegionName": "San Francisco", - "Latitude": 37.7775, - "Longitude": -122.416389, - "Nodes": [ - { - "Name": "2e", - "RegionID": 2, - "HostName": "derp2e.tailscale.com", - "IPv4": "192.73.252.134", - "IPv6": "2607:f740:0:3f::44c", - "CanPort80": true - }, - { - "Name": "2f", - "RegionID": 2, - "HostName": "derp2f.tailscale.com", - "IPv4": "208.111.34.178", - "IPv6": "2607:f740:0:3f::f4", - "CanPort80": true - }, - { - "Name": "2d", - "RegionID": 2, - "HostName": "derp2d.tailscale.com", - "IPv4": "192.73.252.65", - "IPv6": "2607:f740:0:3f::287", - "CanPort80": true - } - ] - }, - "20": { - "RegionID": 20, - "RegionCode": "hkg", - "RegionName": "Hong Kong", - "Latitude": 22.3193, - "Longitude": 114.1694, - "Nodes": [ - { - "Name": "20c", - "RegionID": 20, - "HostName": "derp20c.tailscale.com", - "IPv4": "205.147.105.30", - "IPv6": "2403:2500:8000:1::5fb", - "CanPort80": true - }, - { - "Name": "20d", - "RegionID": 20, - "HostName": "derp20d.tailscale.com", - "IPv4": "205.147.105.78", - "IPv6": "2403:2500:8000:1::e9a", - "CanPort80": true - }, - { - "Name": "20b", - "RegionID": 20, - "HostName": "derp20b.tailscale.com", - "IPv4": "103.6.84.152", - "IPv6": "2403:2500:8000:1::ef6", - "CanPort80": true - } - ] - }, - "21": { - "RegionID": 21, - "RegionCode": "tor", - "RegionName": "Toronto", - "Latitude": 43.741667, - "Longitude": -79.373333, - "Nodes": [ - { - "Name": "21c", - "RegionID": 21, - "HostName": "derp21c.tailscale.com", - "IPv4": "162.248.221.215", - "IPv6": "2607:f740:50::f10", - "CanPort80": true - }, - { - "Name": "21d", - "RegionID": 21, - "HostName": "derp21d.tailscale.com", - "IPv4": "162.248.221.248", - "IPv6": "2607:f740:50::ca4", - "CanPort80": true - }, - { - "Name": "21b", - "RegionID": 21, - "HostName": "derp21b.tailscale.com", - "IPv4": "162.248.221.199", - "IPv6": "2607:f740:50::1d1", - "CanPort80": true - } - ] - }, - "22": { - "RegionID": 22, - "RegionCode": "waw", - "RegionName": "Warsaw", - "Latitude": 52.23, - "Longitude": 21.011111, - "Nodes": [ - { - "Name": "22c", - "RegionID": 22, - "HostName": "derp22c.tailscale.com", - "IPv4": "45.159.98.253", - "IPv6": "2a00:dd80:40:100::3f", - "CanPort80": true - }, - { - "Name": "22d", - "RegionID": 22, - "HostName": "derp22d.tailscale.com", - "IPv4": "45.159.98.145", - "IPv6": "2a00:dd80:40:100::211", - "CanPort80": true - }, - { - "Name": "22b", - "RegionID": 22, - "HostName": "derp22b.tailscale.com", - "IPv4": "45.159.98.196", - "IPv6": "2a00:dd80:40:100::316", - "CanPort80": true - } - ] - }, - "23": { - "RegionID": 23, - "RegionCode": "dbi", - "RegionName": "Dubai", - "Latitude": 25.263056, - "Longitude": 55.297222, - "Nodes": [ - { - "Name": "23c", - "RegionID": 23, - "HostName": "derp23c.tailscale.com", - "IPv4": "185.34.3.207", - "IPv6": "2a00:dd80:3f:100::a50", - "CanPort80": true - }, - { - "Name": "23d", - "RegionID": 23, - "HostName": "derp23d.tailscale.com", - "IPv4": "185.34.3.75", - "IPv6": "2a00:dd80:3f:100::97e", - "CanPort80": true - }, - { - "Name": "23b", - "RegionID": 23, - "HostName": "derp23b.tailscale.com", - "IPv4": "185.34.3.232", - "IPv6": "2a00:dd80:3f:100::76f", - "CanPort80": true - } - ] - }, - "24": { - "RegionID": 24, - "RegionCode": "hnl", - "RegionName": "Honolulu", - "Latitude": 21.306944, - "Longitude": -157.858333, - "Nodes": [ - { - "Name": "24c", - "RegionID": 24, - "HostName": "derp24c.tailscale.com", - "IPv4": "208.83.233.233", - "IPv6": "2001:19f0:c000:c591:5400:04ff:fe26:2c5f", - "CanPort80": true - }, - { - "Name": "24d", - "RegionID": 24, - "HostName": "derp24d.tailscale.com", - "IPv4": "208.72.155.133", - "IPv6": "2001:19f0:c000:c564:5400:04ff:fe26:2ba8", - "CanPort80": true - }, - { - "Name": "24b", - "RegionID": 24, - "HostName": "derp24b.tailscale.com", - "IPv4": "208.83.234.151", - "IPv6": "2001:19f0:c000:c586:5400:04ff:fe26:2ba6", - "CanPort80": true - } - ] - }, - "25": { - "RegionID": 25, - "RegionCode": "nai", - "RegionName": "Nairobi", - "Latitude": -1.286389, - "Longitude": 36.817222, - "Nodes": [ - { - "Name": "25c", - "RegionID": 25, - "HostName": "derp25c.tailscale.com", - "IPv4": "102.67.167.37", - "IPv6": "2c0f:edb0:2000:1::2c7", - "CanPort80": true - }, - { - "Name": "25d", - "RegionID": 25, - "HostName": "derp25d.tailscale.com", - "IPv4": "102.67.167.188", - "IPv6": "2c0f:edb0:2000:1::188", - "CanPort80": true - }, - { - "Name": "25b", - "RegionID": 25, - "HostName": "derp25b.tailscale.com", - "IPv4": "102.67.167.245", - "IPv6": "2c0f:edb0:2000:1::2e9", - "CanPort80": true - } - ] - }, - "26": { - "RegionID": 26, - "RegionCode": "nue", - "RegionName": "Nuremberg", - "Latitude": 49.453889, - "Longitude": 11.0775, - "Nodes": [ - { - "Name": "26c", - "RegionID": 26, - "HostName": "derp26c.tailscale.com", - "IPv4": "49.12.193.137", - "IPv6": "2a01:4f8:1c1c:5c70::1", - "CanPort80": true - }, - { - "Name": "26d", - "RegionID": 26, - "HostName": "derp26d.tailscale.com", - "IPv4": "49.13.204.141", - "IPv6": "2a01:4f8:1c0c:7d06::1", - "CanPort80": true - }, - { - "Name": "26b", - "RegionID": 26, - "HostName": "derp26b.tailscale.com", - "IPv4": "167.235.72.200", - "IPv6": "2a01:4f8:1c1c:47b6::1", - "CanPort80": true - } - ] - }, - "27": { - "RegionID": 27, - "RegionCode": "iad", - "RegionName": "Ashburn", - "Latitude": 39.03, - "Longitude": -77.471111, - "Nodes": [ - { - "Name": "27d", - "RegionID": 27, - "HostName": "derp27d.tailscale.com", - "IPv4": "178.156.152.106", - "IPv6": "2a01:4ff:f0:3c8e::1", - "CanPort80": true - }, - { - "Name": "27c", - "RegionID": 27, - "HostName": "derp27c.tailscale.com", - "IPv4": "178.156.152.91", - "IPv6": "2a01:4ff:f0:3913::1", - "CanPort80": true - }, - { - "Name": "27e", - "RegionID": 27, - "HostName": "derp27e.tailscale.com", - "IPv4": "178.156.134.232", - "IPv6": "2a01:4ff:f0:28d4::1", - "CanPort80": true - }, - { - "Name": "27b", - "RegionID": 27, - "HostName": "derp27b.tailscale.com", - "IPv4": "5.161.218.233", - "IPv6": "2a01:4ff:f0:3db9::1", - "CanPort80": true - } - ] - }, - "28": { - "RegionID": 28, - "RegionCode": "hel", - "RegionName": "Helsinki", - "Latitude": 60.170833, - "Longitude": 24.9375, - "Nodes": [ - { - "Name": "28c", - "RegionID": 28, - "HostName": "derp28c.tailscale.com", - "IPv4": "95.217.2.165", - "IPv6": "2a01:4f9:c012:cd74::1", - "CanPort80": true - }, - { - "Name": "28d", - "RegionID": 28, - "HostName": "derp28d.tailscale.com", - "IPv4": "157.180.28.32", - "IPv6": "2a01:4f9:c012:2e5b::1", - "CanPort80": true - }, - { - "Name": "28b", - "RegionID": 28, - "HostName": "derp28b.tailscale.com", - "IPv4": "65.109.143.62", - "IPv6": "2a01:4f9:c012:d55c::1", - "CanPort80": true - } - ] - }, - "3": { - "RegionID": 3, - "RegionCode": "sin", - "RegionName": "Singapore", - "Latitude": 1.3521, - "Longitude": 103.8198, - "Nodes": [ - { - "Name": "3g", - "RegionID": 3, - "HostName": "derp3g.tailscale.com", - "IPv4": "172.237.72.79", - "IPv6": "2600:3c15::2000:adff:fe08:6fab", - "CanPort80": true - }, - { - "Name": "3f", - "RegionID": 3, - "HostName": "derp3f.tailscale.com", - "IPv4": "172.237.72.8", - "IPv6": "2600:3c15::2000:53ff:fe48:a668", - "CanPort80": true - }, - { - "Name": "3h", - "RegionID": 3, - "HostName": "derp3h.tailscale.com", - "IPv4": "172.237.66.30", - "IPv6": "2600:3c15::2000:3dff:fe44:50aa", - "CanPort80": true - }, - { - "Name": "3e", - "RegionID": 3, - "HostName": "derp3e.tailscale.com", - "IPv4": "172.237.72.43", - "IPv6": "2600:3c15::2000:6cff:fee4:d799", - "CanPort80": true - } - ] - }, - "4": { - "RegionID": 4, - "RegionCode": "fra", - "RegionName": "Frankfurt", - "Latitude": 50.1109, - "Longitude": 8.6821, - "Nodes": [ - { - "Name": "4h", - "RegionID": 4, - "HostName": "derp4h.tailscale.com", - "IPv4": "185.40.234.77", - "IPv6": "2a00:dd80:20::bcf", - "CanPort80": true - }, - { - "Name": "4g", - "RegionID": 4, - "HostName": "derp4g.tailscale.com", - "IPv4": "185.40.234.113", - "IPv6": "2a00:dd80:20::8f", - "CanPort80": true - }, - { - "Name": "4i", - "RegionID": 4, - "HostName": "derp4i.tailscale.com", - "IPv4": "185.40.234.53", - "IPv6": "2a00:dd80:20::8a6", - "CanPort80": true - }, - { - "Name": "4f", - "RegionID": 4, - "HostName": "derp4f.tailscale.com", - "IPv4": "185.40.234.219", - "IPv6": "2a00:dd80:20::a25", - "CanPort80": true - } - ] - }, - "5": { - "RegionID": 5, - "RegionCode": "syd", - "RegionName": "Sydney", - "Latitude": -33.867778, - "Longitude": 151.21, - "Nodes": [ - { - "Name": "5f", - "RegionID": 5, - "HostName": "derp5f.tailscale.com", - "IPv4": "172.105.166.103", - "IPv6": "2400:8907::2000:ccff:fe1f:80da", - "CanPort80": true - }, - { - "Name": "5g", - "RegionID": 5, - "HostName": "derp5g.tailscale.com", - "IPv4": "172.105.169.57", - "IPv6": "2400:8907::2000:2fff:fea7:57f4", - "CanPort80": true - }, - { - "Name": "5e", - "RegionID": 5, - "HostName": "derp5e.tailscale.com", - "IPv4": "172.105.179.230", - "IPv6": "2400:8907::2000:ceff:fe8d:4f4e", - "CanPort80": true - } - ] - }, - "6": { - "RegionID": 6, - "RegionCode": "blr", - "RegionName": "Bengaluru", - "Latitude": 12.9716, - "Longitude": 77.5946, - "Nodes": [ - { - "Name": "6a", - "RegionID": 6, - "HostName": "derp6.tailscale.com", - "IPv4": "68.183.90.120", - "IPv6": "2400:6180:100:d0::982:d001", - "CanPort80": true - } - ] - }, - "7": { - "RegionID": 7, - "RegionCode": "tok", - "RegionName": "Tokyo", - "Latitude": 35.6764, - "Longitude": 139.65, - "Nodes": [ - { - "Name": "7g", - "RegionID": 7, - "HostName": "derp7g.tailscale.com", - "IPv4": "172.238.6.179", - "IPv6": "2600:3c18::2000:3fff:fe80:3ebd", - "CanPort80": true - }, - { - "Name": "7f", - "RegionID": 7, - "HostName": "derp7f.tailscale.com", - "IPv4": "172.238.6.34", - "IPv6": "2600:3c18::2000:acff:fe8e:3ed5", - "CanPort80": true - }, - { - "Name": "7h", - "RegionID": 7, - "HostName": "derp7h.tailscale.com", - "IPv4": "172.237.28.183", - "IPv6": "2600:3c18::2000:b1ff:fea9:4560", - "CanPort80": true - }, - { - "Name": "7e", - "RegionID": 7, - "HostName": "derp7e.tailscale.com", - "IPv4": "172.238.6.180", - "IPv6": "2600:3c18::2000:60ff:fe0f:6e83", - "STUNOnly": true, - "CanPort80": true - } - ] - }, - "8": { - "RegionID": 8, - "RegionCode": "lhr", - "RegionName": "London", - "Latitude": 51.5072, - "Longitude": 0.1276, - "Nodes": [ - { - "Name": "8f", - "RegionID": 8, - "HostName": "derp8f.tailscale.com", - "IPv4": "176.58.88.183", - "IPv6": "2a00:dd80:3a::dfa", - "CanPort80": true - }, - { - "Name": "8g", - "RegionID": 8, - "HostName": "derp8g.tailscale.com", - "IPv4": "176.58.92.254", - "IPv6": "2a00:dd80:3a::ed", - "CanPort80": true - }, - { - "Name": "8e", - "RegionID": 8, - "HostName": "derp8e.tailscale.com", - "IPv4": "176.58.92.144", - "IPv6": "2a00:dd80:3a::b33", - "CanPort80": true - } - ] - }, - "9": { - "RegionID": 9, - "RegionCode": "dfw", - "RegionName": "Dallas", - "Latitude": 32.779167, - "Longitude": -96.808889, - "Nodes": [ - { - "Name": "9e", - "RegionID": 9, - "HostName": "derp9e.tailscale.com", - "IPv4": "192.73.248.83", - "IPv6": "2607:f740:100::359", - "CanPort80": true - }, - { - "Name": "9f", - "RegionID": 9, - "HostName": "derp9f.tailscale.com", - "IPv4": "209.177.156.197", - "IPv6": "2607:f740:100::cad", - "CanPort80": true - }, - { - "Name": "9d", - "RegionID": 9, - "HostName": "derp9d.tailscale.com", - "IPv4": "209.177.156.94", - "IPv6": "2607:f740:100::c05", - "CanPort80": true - } - ] - } - } - }, - "DisplayMessages": null, - "TKAEnabled": false, - "TKAHead": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", - "Domain": "kratail2tid@passkey", - "DomainAuditLogID": "", - "UserProfiles": { - "1260082990019555": { - "ID": 1260082990019555, - "LoginName": "tagged-devices", - "DisplayName": "Tagged Devices" - }, - "6999435610919250": { - "ID": 6999435610919250, - "LoginName": "group-a-client.tail78f774.ts.net", - "DisplayName": "group-a-client" - } - } + ] } }, "group-b-client": { - "commands": { - "packet_filter_rules": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/group-b-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/group-b-client/tailscaled.sock debug localapi POST debug-packet-filter-matches" - }, "packet_filter_rules": [ { "SrcIPs": [ @@ -5420,349 +552,48 @@ "fd7a:115c:a1e0::ff37:1218" ], "DstPorts": [ - { "IP": "100.77.135.18", "Ports": { "First": 0, "Last": 65535 } }, - { "IP": "fd7a:115c:a1e0::4b37:8712", "Ports": { "First": 0, "Last": 65535 } } + { + "IP": "100.77.135.18", + "Ports": { + "First": 0, + "Last": 65535 + } + }, + { + "IP": "fd7a:115c:a1e0::4b37:8712", + "Ports": { + "First": 0, + "Last": 65535 + } + } ] } ], - "packet_filter_matches": [ - { - "IPProto": [6, 17, 1, 58], - "Srcs": [ - "100.107.162.14/32", - "100.116.18.24/32", - "100.124.195.93/32", - "100.77.135.18/32", - "fd7a:115c:a1e0::4b37:8712/128", - "fd7a:115c:a1e0::7837:c35d/128", - "fd7a:115c:a1e0::a237:a20e/128", - "fd7a:115c:a1e0::ff37:1218/128" - ], - "SrcCaps": null, - "Dsts": [ - { "Net": "100.77.135.18/32", "Ports": { "First": 0, "Last": 65535 } }, - { "Net": "fd7a:115c:a1e0::4b37:8712/128", "Ports": { "First": 0, "Last": 65535 } } - ], - "Caps": [] - } - ], - "whois": { - "100.124.195.93": { - "peer_name": "exit-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/group-b-client/tailscaled.sock whois --json 100.124.195.93", - "response": { - "Node": { - "ID": 3118755726458377, - "StableID": "nvFTscRVMR11CNTRL", - "Name": "exit-a.tail78f774.ts.net.", - "User": 1260082990019555, - "Key": "nodekey:21ab6fa3288e3bf8cecced295316c6327f427649765eb1746cc6ee9978bcc35c", - "DiscoKey": "discokey:0c8595f67987ed47cf551646d6266c21a635d622409d10745cc08f6922066e49", - "Addresses": ["100.124.195.93/32", "fd7a:115c:a1e0::7837:c35d/128"], - "AllowedIPs": ["100.124.195.93/32", "fd7a:115c:a1e0::7837:c35d/128"], - "Endpoints": ["77.164.248.136:37550", "10.65.0.27:37550", "172.17.0.1:37550"], - "HomeDERP": 14, - "Hostinfo": { - "OS": "linux", - "Hostname": "exit-a", - "Services": [ - { "Proto": "peerapi4", "Port": 57826 }, - { "Proto": "peerapi6", "Port": 57826 } - ] - }, - "Created": "2026-03-28T10:37:56.932966573Z", - "Cap": 131, - "Tags": ["tag:exit-a"], - "Online": true, - "ComputedName": "exit-a", - "ComputedNameWithHost": "exit-a" - }, - "UserProfile": { "ID": 1260082990019555, "LoginName": "tagged-devices", "DisplayName": "Tagged Devices" }, - "CapMap": null - } - }, - "100.116.18.24": { - "peer_name": "exit-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/group-b-client/tailscaled.sock whois --json 100.116.18.24", - "response": { - "Node": { - "ID": 2230775583277936, - "StableID": "ndK1N8hKRJ11CNTRL", - "Name": "exit-b.tail78f774.ts.net.", - "User": 1260082990019555, - "Key": "nodekey:265e1377372be0d036773ac41339bf7b53ed18e9f67f196d7d517abeff741217", - "DiscoKey": "discokey:63071b08ff89860a2d98005f8f6f65f3b92e05b7b1338b1be71e4ad866f12728", - "Addresses": ["100.116.18.24/32", "fd7a:115c:a1e0::ff37:1218/128"], - "AllowedIPs": ["100.116.18.24/32", "fd7a:115c:a1e0::ff37:1218/128"], - "Endpoints": ["77.164.248.136:35565", "10.65.0.27:35565", "172.17.0.1:35565"], - "HomeDERP": 14, - "Hostinfo": { - "OS": "linux", - "Hostname": "exit-b", - "Services": [ - { "Proto": "peerapi4", "Port": 61723 }, - { "Proto": "peerapi6", "Port": 61723 } - ] - }, - "Created": "2026-03-28T10:38:00.655990366Z", - "Cap": 131, - "Tags": ["tag:exit-b"], - "Online": true, - "ComputedName": "exit-b", - "ComputedNameWithHost": "exit-b" - }, - "UserProfile": { "ID": 1260082990019555, "LoginName": "tagged-devices", "DisplayName": "Tagged Devices" }, - "CapMap": null - } - }, - "100.85.66.106": { - "peer_name": "exit-node", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/group-b-client/tailscaled.sock whois --json 100.85.66.106", - "response": null - }, - "100.107.162.14": { - "peer_name": "group-a-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/group-b-client/tailscaled.sock whois --json 100.107.162.14", - "response": { - "Node": { - "ID": 6999435610919250, - "StableID": "nyckVfJ4fw11CNTRL", - "Name": "group-a-client.tail78f774.ts.net.", - "User": 1260082990019555, - "Key": "nodekey:802726716bd4942fceb5e444218c930040fadb082698b57ea3eb59a6a26ba20d", - "DiscoKey": "discokey:bc93c2d3b81606e44eb1c96d721e7cd73c9497aa7d3efbe2f5e0d1e2e95b190f", - "Addresses": ["100.107.162.14/32", "fd7a:115c:a1e0::a237:a20e/128"], - "AllowedIPs": ["100.107.162.14/32", "fd7a:115c:a1e0::a237:a20e/128"], - "Endpoints": ["77.164.248.136:51980", "10.65.0.27:51980", "172.17.0.1:51980"], - "HomeDERP": 14, - "Hostinfo": { - "OS": "linux", - "Hostname": "group-a-client", - "Services": [ - { "Proto": "peerapi4", "Port": 36543 }, - { "Proto": "peerapi6", "Port": 36543 } - ] - }, - "Created": "2026-03-28T10:38:04.339428828Z", - "Cap": 131, - "Tags": ["tag:group-a"], - "Online": true, - "ComputedName": "group-a-client", - "ComputedNameWithHost": "group-a-client" - }, - "UserProfile": { "ID": 1260082990019555, "LoginName": "tagged-devices", "DisplayName": "Tagged Devices" }, - "CapMap": null - } - }, - "100.105.127.107": { - "peer_name": "multi-exit-router", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/group-b-client/tailscaled.sock whois --json 100.105.127.107", - "response": null - }, - "100.109.43.124": { - "peer_name": "router-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/group-b-client/tailscaled.sock whois --json 100.109.43.124", - "response": null - }, - "100.65.172.123": { - "peer_name": "router-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/group-b-client/tailscaled.sock whois --json 100.65.172.123", - "response": null - }, - "100.92.142.61": { - "peer_name": "subnet-router", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/group-b-client/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/group-b-client/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/group-b-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/group-b-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/group-b-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/group-b-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/group-b-client/tailscaled.sock whois --json 100.90.199.68", - "response": null - } - }, "netmap": { - "SelfNode": { - "ID": 1008089393782498, - "StableID": "ndUwgLoZs811CNTRL", - "Name": "group-b-client.tail78f774.ts.net.", - "User": 1008089393782498, - "Key": "nodekey:ef35a655163204a08b33e09fdc24709f1e3aaa7f40de4efd5549cf014b4d8711", - "DiscoKey": "discokey:e972182cda0d0b459c91b2881624b81749a7e44390a5dde1b9bc17c1ae67715a", - "Addresses": ["100.77.135.18/32", "fd7a:115c:a1e0::4b37:8712/128"], - "AllowedIPs": ["100.77.135.18/32", "fd7a:115c:a1e0::4b37:8712/128"], - "Endpoints": ["77.164.248.136:49377", "10.65.0.27:49377", "172.17.0.1:49377"], - "Hostinfo": { - "Hostname": "group-b-client", - "RequestTags": ["tag:group-b"], - "Services": [ - { "Proto": "peerapi4", "Port": 47173 }, - { "Proto": "peerapi6", "Port": 47173 }, - { "Proto": "peerapi-dns-proxy", "Port": 1 } - ] - }, - "Created": "2026-03-28T10:38:08.031309668Z", - "Tags": ["tag:group-b"], - "MachineAuthorized": true, - "CapMap": { - "https://tailscale.com/cap/file-sharing": null, - "https://tailscale.com/cap/is-owner": null, - "https://tailscale.com/cap/ssh": null, - "https://tailscale.com/cap/tailnet-lock": null, - "probe-udp-lifetime": null, - "ssh-behavior-v1": null, - "ssh-env-vars": null, - "store-appc-routes": null, - "tailnet-display-name": ["kratail2tid@passkey"] - }, - "ComputedName": "group-b-client", - "ComputedNameWithHost": "group-b-client" - }, - "AllCaps": [ - "https://tailscale.com/cap/ssh", - "ssh-env-vars", - "https://tailscale.com/cap/is-owner", - "ssh-behavior-v1", - "tailnet-display-name", - "https://tailscale.com/cap/file-sharing", - "https://tailscale.com/cap/tailnet-lock", - "store-appc-routes", - "probe-udp-lifetime" - ], - "NodeKey": "nodekey:ef35a655163204a08b33e09fdc24709f1e3aaa7f40de4efd5549cf014b4d8711", - "MachineKey": "mkey:f151b3ba7be457f1484c96d8daf48e032d8c9ed890a7f9b2f32c51458a19a05c", "Peers": [ { - "ID": 2230775583277936, - "StableID": "ndK1N8hKRJ11CNTRL", "Name": "exit-b.tail78f774.ts.net.", - "User": 1260082990019555, - "Key": "nodekey:265e1377372be0d036773ac41339bf7b53ed18e9f67f196d7d517abeff741217", - "DiscoKey": "discokey:63071b08ff89860a2d98005f8f6f65f3b92e05b7b1338b1be71e4ad866f12728", - "Addresses": ["100.116.18.24/32", "fd7a:115c:a1e0::ff37:1218/128"], - "AllowedIPs": ["100.116.18.24/32", "fd7a:115c:a1e0::ff37:1218/128"], - "Endpoints": ["77.164.248.136:35565", "10.65.0.27:35565", "172.17.0.1:35565"], - "HomeDERP": 14, - "Hostinfo": { - "OS": "linux", - "Hostname": "exit-b", - "Services": [ - { "Proto": "peerapi4", "Port": 61723 }, - { "Proto": "peerapi6", "Port": 61723 } - ] - }, - "Created": "2026-03-28T10:38:00.655990366Z", - "Cap": 131, - "Tags": ["tag:exit-b"], - "Online": true, - "ComputedName": "exit-b", - "ComputedNameWithHost": "exit-b" - }, - { - "ID": 3118755726458377, - "StableID": "nvFTscRVMR11CNTRL", - "Name": "exit-a.tail78f774.ts.net.", - "User": 1260082990019555, - "Key": "nodekey:21ab6fa3288e3bf8cecced295316c6327f427649765eb1746cc6ee9978bcc35c", - "DiscoKey": "discokey:0c8595f67987ed47cf551646d6266c21a635d622409d10745cc08f6922066e49", - "Addresses": ["100.124.195.93/32", "fd7a:115c:a1e0::7837:c35d/128"], - "AllowedIPs": ["100.124.195.93/32", "fd7a:115c:a1e0::7837:c35d/128"], - "Endpoints": ["77.164.248.136:37550", "10.65.0.27:37550", "172.17.0.1:37550"], - "HomeDERP": 14, - "Hostinfo": { - "OS": "linux", - "Hostname": "exit-a", - "Services": [ - { "Proto": "peerapi4", "Port": 57826 }, - { "Proto": "peerapi6", "Port": 57826 } - ] - }, - "Created": "2026-03-28T10:37:56.932966573Z", - "Cap": 131, - "Tags": ["tag:exit-a"], - "Online": true, - "ComputedName": "exit-a", - "ComputedNameWithHost": "exit-a" - }, - { - "ID": 6999435610919250, - "StableID": "nyckVfJ4fw11CNTRL", - "Name": "group-a-client.tail78f774.ts.net.", - "User": 1260082990019555, - "Key": "nodekey:802726716bd4942fceb5e444218c930040fadb082698b57ea3eb59a6a26ba20d", - "DiscoKey": "discokey:bc93c2d3b81606e44eb1c96d721e7cd73c9497aa7d3efbe2f5e0d1e2e95b190f", - "Addresses": ["100.107.162.14/32", "fd7a:115c:a1e0::a237:a20e/128"], - "AllowedIPs": ["100.107.162.14/32", "fd7a:115c:a1e0::a237:a20e/128"], - "Endpoints": ["77.164.248.136:51980", "10.65.0.27:51980", "172.17.0.1:51980"], - "HomeDERP": 14, - "Hostinfo": { - "OS": "linux", - "Hostname": "group-a-client", - "Services": [ - { "Proto": "peerapi4", "Port": 36543 }, - { "Proto": "peerapi6", "Port": 36543 } - ] - }, - "Created": "2026-03-28T10:38:04.339428828Z", - "Cap": 131, - "Tags": ["tag:group-a"], - "Online": true, - "ComputedName": "group-a-client", - "ComputedNameWithHost": "group-a-client" - } - ], - "DNS": { - "Routes": { - "tail78f774.ts.net.": null, - "ts.net.": [{ "Addr": "199.247.155.53" }, { "Addr": "2620:111:8007::53" }] - }, - "Domains": ["tail78f774.ts.net"], - "Proxied": true, - "ExitNodeFilteredSet": [".ts.net", ".tailscale.net"] - }, - "PacketFilter": [ - { - "IPProto": [6, 17, 1, 58], - "Srcs": [ - "100.107.162.14/32", + "AllowedIPs": [ "100.116.18.24/32", - "100.124.195.93/32", - "100.77.135.18/32", - "fd7a:115c:a1e0::4b37:8712/128", - "fd7a:115c:a1e0::7837:c35d/128", - "fd7a:115c:a1e0::a237:a20e/128", "fd7a:115c:a1e0::ff37:1218/128" ], - "SrcCaps": null, - "Dsts": [ - { "Net": "100.77.135.18/32", "Ports": { "First": 0, "Last": 65535 } }, - { "Net": "fd7a:115c:a1e0::4b37:8712/128", "Ports": { "First": 0, "Last": 65535 } } + "PrimaryRoutes": [] + }, + { + "Name": "exit-a.tail78f774.ts.net.", + "AllowedIPs": [ + "100.124.195.93/32", + "fd7a:115c:a1e0::7837:c35d/128" ], - "Caps": [] + "PrimaryRoutes": [] + }, + { + "Name": "group-a-client.tail78f774.ts.net.", + "AllowedIPs": [ + "100.107.162.14/32", + "fd7a:115c:a1e0::a237:a20e/128" + ], + "PrimaryRoutes": [] } ], "PacketFilterRules": [ @@ -5778,12083 +609,93 @@ "fd7a:115c:a1e0::ff37:1218" ], "DstPorts": [ - { "IP": "100.77.135.18", "Ports": { "First": 0, "Last": 65535 } }, - { "IP": "fd7a:115c:a1e0::4b37:8712", "Ports": { "First": 0, "Last": 65535 } } + { + "IP": "100.77.135.18", + "Ports": { + "First": 0, + "Last": 65535 + } + }, + { + "IP": "fd7a:115c:a1e0::4b37:8712", + "Ports": { + "First": 0, + "Last": 65535 + } + } ] } - ], - "SSHPolicy": { "rules": [] }, - "CollectServices": false, - "DERPMap": { - "Regions": { - "1": { - "RegionID": 1, - "RegionCode": "nyc", - "RegionName": "New York City", - "Latitude": 40.7128, - "Longitude": -74.006, - "Nodes": [ - { - "Name": "1h", - "RegionID": 1, - "HostName": "derp1h.tailscale.com", - "IPv4": "199.38.181.93", - "IPv6": "2607:f740:f::afd", - "CanPort80": true - }, - { - "Name": "1g", - "RegionID": 1, - "HostName": "derp1g.tailscale.com", - "IPv4": "209.177.145.120", - "IPv6": "2607:f740:f::3eb", - "CanPort80": true - }, - { - "Name": "1i", - "RegionID": 1, - "HostName": "derp1i.tailscale.com", - "IPv4": "199.38.181.103", - "IPv6": "2607:f740:f::e19", - "CanPort80": true - }, - { - "Name": "1f", - "RegionID": 1, - "HostName": "derp1f.tailscale.com", - "IPv4": "199.38.181.104", - "IPv6": "2607:f740:f::bc", - "CanPort80": true - } - ] - }, - "10": { - "RegionID": 10, - "RegionCode": "sea", - "RegionName": "Seattle", - "Latitude": 47.609722, - "Longitude": -122.333056, - "Nodes": [ - { - "Name": "10c", - "RegionID": 10, - "HostName": "derp10c.tailscale.com", - "IPv4": "192.73.240.121", - "IPv6": "2607:f740:14::40c", - "CanPort80": true - }, - { - "Name": "10d", - "RegionID": 10, - "HostName": "derp10d.tailscale.com", - "IPv4": "192.73.240.132", - "IPv6": "2607:f740:14::500", - "CanPort80": true - }, - { - "Name": "10b", - "RegionID": 10, - "HostName": "derp10b.tailscale.com", - "IPv4": "192.73.240.161", - "IPv6": "2607:f740:14::61c", - "CanPort80": true - } - ] - }, - "11": { - "RegionID": 11, - "RegionCode": "sao", - "RegionName": "São Paulo", - "Latitude": -23.55, - "Longitude": -46.633333, - "Nodes": [ - { - "Name": "11f", - "RegionID": 11, - "HostName": "derp11f.tailscale.com", - "IPv4": "172.237.61.197", - "IPv6": "2600:3c0d::2000:3bff:fe44:6166", - "CanPort80": true - }, - { - "Name": "11g", - "RegionID": 11, - "HostName": "derp11g.tailscale.com", - "IPv4": "172.237.61.190", - "IPv6": "2600:3c0d::2000:62ff:febe:2e67", - "CanPort80": true - }, - { - "Name": "11e", - "RegionID": 11, - "HostName": "derp11e.tailscale.com", - "IPv4": "172.237.61.194", - "IPv6": "2600:3c0d::2000:d2ff:fe43:1790", - "CanPort80": true - } - ] - }, - "12": { - "RegionID": 12, - "RegionCode": "ord", - "RegionName": "Chicago", - "Latitude": 41.881944, - "Longitude": -87.627778, - "Nodes": [ - { - "Name": "12e", - "RegionID": 12, - "HostName": "derp12e.tailscale.com", - "IPv4": "209.177.158.15", - "IPv6": "2607:f740:e::b17", - "CanPort80": true - }, - { - "Name": "12f", - "RegionID": 12, - "HostName": "derp12f.tailscale.com", - "IPv4": "199.38.182.118", - "IPv6": "2607:f740:e::4c8", - "CanPort80": true - }, - { - "Name": "12d", - "RegionID": 12, - "HostName": "derp12d.tailscale.com", - "IPv4": "209.177.158.246", - "IPv6": "2607:f740:e::811", - "CanPort80": true - } - ] - }, - "13": { - "RegionID": 13, - "RegionCode": "den", - "RegionName": "Denver", - "Latitude": 39.7392, - "Longitude": -104.9849, - "Nodes": [ - { - "Name": "13c", - "RegionID": 13, - "HostName": "derp13c.tailscale.com", - "IPv4": "192.73.242.28", - "IPv6": "2607:f740:16::5c", - "CanPort80": true - }, - { - "Name": "13d", - "RegionID": 13, - "HostName": "derp13d.tailscale.com", - "IPv4": "192.73.242.204", - "IPv6": "2607:f740:16::c23", - "CanPort80": true - }, - { - "Name": "13b", - "RegionID": 13, - "HostName": "derp13b.tailscale.com", - "IPv4": "192.73.242.187", - "IPv6": "2607:f740:16::640", - "CanPort80": true - } - ] - }, - "14": { - "RegionID": 14, - "RegionCode": "ams", - "RegionName": "Amsterdam", - "Latitude": 52.372778, - "Longitude": 4.893611, - "Nodes": [ - { - "Name": "14c", - "RegionID": 14, - "HostName": "derp14c.tailscale.com", - "IPv4": "176.58.93.147", - "IPv6": "2a00:dd80:3c::b09", - "CanPort80": true - }, - { - "Name": "14d", - "RegionID": 14, - "HostName": "derp14d.tailscale.com", - "IPv4": "176.58.93.154", - "IPv6": "2a00:dd80:3c::3d5", - "CanPort80": true - }, - { - "Name": "14b", - "RegionID": 14, - "HostName": "derp14b.tailscale.com", - "IPv4": "176.58.93.248", - "IPv6": "2a00:dd80:3c::807", - "CanPort80": true - } - ] - }, - "15": { - "RegionID": 15, - "RegionCode": "jnb", - "RegionName": "Johannesburg", - "Latitude": -26.204444, - "Longitude": 28.045556, - "Nodes": [ - { - "Name": "15c", - "RegionID": 15, - "HostName": "derp15c.tailscale.com", - "IPv4": "102.67.165.185", - "IPv6": "2c0f:edb0:0:10::b59", - "CanPort80": true - }, - { - "Name": "15d", - "RegionID": 15, - "HostName": "derp15d.tailscale.com", - "IPv4": "102.67.165.36", - "IPv6": "2c0f:edb0:0:10::599", - "CanPort80": true - }, - { - "Name": "15b", - "RegionID": 15, - "HostName": "derp15b.tailscale.com", - "IPv4": "102.67.165.90", - "IPv6": "2c0f:edb0:0:10::963", - "CanPort80": true - } - ] - }, - "16": { - "RegionID": 16, - "RegionCode": "mia", - "RegionName": "Miami", - "Latitude": 25.78, - "Longitude": -80.21, - "Nodes": [ - { - "Name": "16c", - "RegionID": 16, - "HostName": "derp16c.tailscale.com", - "IPv4": "192.73.243.229", - "IPv6": "2607:f740:17::4e4", - "CanPort80": true - }, - { - "Name": "16d", - "RegionID": 16, - "HostName": "derp16d.tailscale.com", - "IPv4": "192.73.243.141", - "IPv6": "2607:f740:17::475", - "CanPort80": true - }, - { - "Name": "16b", - "RegionID": 16, - "HostName": "derp16b.tailscale.com", - "IPv4": "192.73.243.135", - "IPv6": "2607:f740:17::476", - "CanPort80": true - } - ] - }, - "17": { - "RegionID": 17, - "RegionCode": "lax", - "RegionName": "Los Angeles", - "Latitude": 34.05, - "Longitude": -118.25, - "Nodes": [ - { - "Name": "17c", - "RegionID": 17, - "HostName": "derp17c.tailscale.com", - "IPv4": "208.111.40.12", - "IPv6": "2607:f740:c::10", - "CanPort80": true - }, - { - "Name": "17d", - "RegionID": 17, - "HostName": "derp17d.tailscale.com", - "IPv4": "208.111.40.216", - "IPv6": "2607:f740:c::e1b", - "CanPort80": true - }, - { - "Name": "17b", - "RegionID": 17, - "HostName": "derp17b.tailscale.com", - "IPv4": "192.73.244.245", - "IPv6": "2607:f740:c::646", - "CanPort80": true - } - ] - }, - "18": { - "RegionID": 18, - "RegionCode": "par", - "RegionName": "Paris", - "Latitude": 48.856667, - "Longitude": 2.352222, - "Nodes": [ - { - "Name": "18c", - "RegionID": 18, - "HostName": "derp18c.tailscale.com", - "IPv4": "176.58.90.207", - "IPv6": "2a00:dd80:3e::c19", - "CanPort80": true - }, - { - "Name": "18d", - "RegionID": 18, - "HostName": "derp18d.tailscale.com", - "IPv4": "176.58.90.104", - "IPv6": "2a00:dd80:3e::f2e", - "CanPort80": true - }, - { - "Name": "18b", - "RegionID": 18, - "HostName": "derp18b.tailscale.com", - "IPv4": "176.58.90.147", - "IPv6": "2a00:dd80:3e::363", - "CanPort80": true - } - ] - }, - "19": { - "RegionID": 19, - "RegionCode": "mad", - "RegionName": "Madrid", - "Latitude": 40.416944, - "Longitude": -3.703333, - "Nodes": [ - { - "Name": "19c", - "RegionID": 19, - "HostName": "derp19c.tailscale.com", - "IPv4": "45.159.97.61", - "IPv6": "2a00:dd80:14:10::20", - "CanPort80": true - }, - { - "Name": "19d", - "RegionID": 19, - "HostName": "derp19d.tailscale.com", - "IPv4": "45.159.97.233", - "IPv6": "2a00:dd80:14:10::34a", - "CanPort80": true - }, - { - "Name": "19b", - "RegionID": 19, - "HostName": "derp19b.tailscale.com", - "IPv4": "45.159.97.144", - "IPv6": "2a00:dd80:14:10::335", - "CanPort80": true - } - ] - }, - "2": { - "RegionID": 2, - "RegionCode": "sfo", - "RegionName": "San Francisco", - "Latitude": 37.7775, - "Longitude": -122.416389, - "Nodes": [ - { - "Name": "2e", - "RegionID": 2, - "HostName": "derp2e.tailscale.com", - "IPv4": "192.73.252.134", - "IPv6": "2607:f740:0:3f::44c", - "CanPort80": true - }, - { - "Name": "2f", - "RegionID": 2, - "HostName": "derp2f.tailscale.com", - "IPv4": "208.111.34.178", - "IPv6": "2607:f740:0:3f::f4", - "CanPort80": true - }, - { - "Name": "2d", - "RegionID": 2, - "HostName": "derp2d.tailscale.com", - "IPv4": "192.73.252.65", - "IPv6": "2607:f740:0:3f::287", - "CanPort80": true - } - ] - }, - "20": { - "RegionID": 20, - "RegionCode": "hkg", - "RegionName": "Hong Kong", - "Latitude": 22.3193, - "Longitude": 114.1694, - "Nodes": [ - { - "Name": "20c", - "RegionID": 20, - "HostName": "derp20c.tailscale.com", - "IPv4": "205.147.105.30", - "IPv6": "2403:2500:8000:1::5fb", - "CanPort80": true - }, - { - "Name": "20d", - "RegionID": 20, - "HostName": "derp20d.tailscale.com", - "IPv4": "205.147.105.78", - "IPv6": "2403:2500:8000:1::e9a", - "CanPort80": true - }, - { - "Name": "20b", - "RegionID": 20, - "HostName": "derp20b.tailscale.com", - "IPv4": "103.6.84.152", - "IPv6": "2403:2500:8000:1::ef6", - "CanPort80": true - } - ] - }, - "21": { - "RegionID": 21, - "RegionCode": "tor", - "RegionName": "Toronto", - "Latitude": 43.741667, - "Longitude": -79.373333, - "Nodes": [ - { - "Name": "21c", - "RegionID": 21, - "HostName": "derp21c.tailscale.com", - "IPv4": "162.248.221.215", - "IPv6": "2607:f740:50::f10", - "CanPort80": true - }, - { - "Name": "21d", - "RegionID": 21, - "HostName": "derp21d.tailscale.com", - "IPv4": "162.248.221.248", - "IPv6": "2607:f740:50::ca4", - "CanPort80": true - }, - { - "Name": "21b", - "RegionID": 21, - "HostName": "derp21b.tailscale.com", - "IPv4": "162.248.221.199", - "IPv6": "2607:f740:50::1d1", - "CanPort80": true - } - ] - }, - "22": { - "RegionID": 22, - "RegionCode": "waw", - "RegionName": "Warsaw", - "Latitude": 52.23, - "Longitude": 21.011111, - "Nodes": [ - { - "Name": "22c", - "RegionID": 22, - "HostName": "derp22c.tailscale.com", - "IPv4": "45.159.98.253", - "IPv6": "2a00:dd80:40:100::3f", - "CanPort80": true - }, - { - "Name": "22d", - "RegionID": 22, - "HostName": "derp22d.tailscale.com", - "IPv4": "45.159.98.145", - "IPv6": "2a00:dd80:40:100::211", - "CanPort80": true - }, - { - "Name": "22b", - "RegionID": 22, - "HostName": "derp22b.tailscale.com", - "IPv4": "45.159.98.196", - "IPv6": "2a00:dd80:40:100::316", - "CanPort80": true - } - ] - }, - "23": { - "RegionID": 23, - "RegionCode": "dbi", - "RegionName": "Dubai", - "Latitude": 25.263056, - "Longitude": 55.297222, - "Nodes": [ - { - "Name": "23c", - "RegionID": 23, - "HostName": "derp23c.tailscale.com", - "IPv4": "185.34.3.207", - "IPv6": "2a00:dd80:3f:100::a50", - "CanPort80": true - }, - { - "Name": "23d", - "RegionID": 23, - "HostName": "derp23d.tailscale.com", - "IPv4": "185.34.3.75", - "IPv6": "2a00:dd80:3f:100::97e", - "CanPort80": true - }, - { - "Name": "23b", - "RegionID": 23, - "HostName": "derp23b.tailscale.com", - "IPv4": "185.34.3.232", - "IPv6": "2a00:dd80:3f:100::76f", - "CanPort80": true - } - ] - }, - "24": { - "RegionID": 24, - "RegionCode": "hnl", - "RegionName": "Honolulu", - "Latitude": 21.306944, - "Longitude": -157.858333, - "Nodes": [ - { - "Name": "24c", - "RegionID": 24, - "HostName": "derp24c.tailscale.com", - "IPv4": "208.83.233.233", - "IPv6": "2001:19f0:c000:c591:5400:04ff:fe26:2c5f", - "CanPort80": true - }, - { - "Name": "24d", - "RegionID": 24, - "HostName": "derp24d.tailscale.com", - "IPv4": "208.72.155.133", - "IPv6": "2001:19f0:c000:c564:5400:04ff:fe26:2ba8", - "CanPort80": true - }, - { - "Name": "24b", - "RegionID": 24, - "HostName": "derp24b.tailscale.com", - "IPv4": "208.83.234.151", - "IPv6": "2001:19f0:c000:c586:5400:04ff:fe26:2ba6", - "CanPort80": true - } - ] - }, - "25": { - "RegionID": 25, - "RegionCode": "nai", - "RegionName": "Nairobi", - "Latitude": -1.286389, - "Longitude": 36.817222, - "Nodes": [ - { - "Name": "25c", - "RegionID": 25, - "HostName": "derp25c.tailscale.com", - "IPv4": "102.67.167.37", - "IPv6": "2c0f:edb0:2000:1::2c7", - "CanPort80": true - }, - { - "Name": "25d", - "RegionID": 25, - "HostName": "derp25d.tailscale.com", - "IPv4": "102.67.167.188", - "IPv6": "2c0f:edb0:2000:1::188", - "CanPort80": true - }, - { - "Name": "25b", - "RegionID": 25, - "HostName": "derp25b.tailscale.com", - "IPv4": "102.67.167.245", - "IPv6": "2c0f:edb0:2000:1::2e9", - "CanPort80": true - } - ] - }, - "26": { - "RegionID": 26, - "RegionCode": "nue", - "RegionName": "Nuremberg", - "Latitude": 49.453889, - "Longitude": 11.0775, - "Nodes": [ - { - "Name": "26c", - "RegionID": 26, - "HostName": "derp26c.tailscale.com", - "IPv4": "49.12.193.137", - "IPv6": "2a01:4f8:1c1c:5c70::1", - "CanPort80": true - }, - { - "Name": "26d", - "RegionID": 26, - "HostName": "derp26d.tailscale.com", - "IPv4": "49.13.204.141", - "IPv6": "2a01:4f8:1c0c:7d06::1", - "CanPort80": true - }, - { - "Name": "26b", - "RegionID": 26, - "HostName": "derp26b.tailscale.com", - "IPv4": "167.235.72.200", - "IPv6": "2a01:4f8:1c1c:47b6::1", - "CanPort80": true - } - ] - }, - "27": { - "RegionID": 27, - "RegionCode": "iad", - "RegionName": "Ashburn", - "Latitude": 39.03, - "Longitude": -77.471111, - "Nodes": [ - { - "Name": "27d", - "RegionID": 27, - "HostName": "derp27d.tailscale.com", - "IPv4": "178.156.152.106", - "IPv6": "2a01:4ff:f0:3c8e::1", - "CanPort80": true - }, - { - "Name": "27c", - "RegionID": 27, - "HostName": "derp27c.tailscale.com", - "IPv4": "178.156.152.91", - "IPv6": "2a01:4ff:f0:3913::1", - "CanPort80": true - }, - { - "Name": "27e", - "RegionID": 27, - "HostName": "derp27e.tailscale.com", - "IPv4": "178.156.134.232", - "IPv6": "2a01:4ff:f0:28d4::1", - "CanPort80": true - }, - { - "Name": "27b", - "RegionID": 27, - "HostName": "derp27b.tailscale.com", - "IPv4": "5.161.218.233", - "IPv6": "2a01:4ff:f0:3db9::1", - "CanPort80": true - } - ] - }, - "28": { - "RegionID": 28, - "RegionCode": "hel", - "RegionName": "Helsinki", - "Latitude": 60.170833, - "Longitude": 24.9375, - "Nodes": [ - { - "Name": "28c", - "RegionID": 28, - "HostName": "derp28c.tailscale.com", - "IPv4": "95.217.2.165", - "IPv6": "2a01:4f9:c012:cd74::1", - "CanPort80": true - }, - { - "Name": "28d", - "RegionID": 28, - "HostName": "derp28d.tailscale.com", - "IPv4": "157.180.28.32", - "IPv6": "2a01:4f9:c012:2e5b::1", - "CanPort80": true - }, - { - "Name": "28b", - "RegionID": 28, - "HostName": "derp28b.tailscale.com", - "IPv4": "65.109.143.62", - "IPv6": "2a01:4f9:c012:d55c::1", - "CanPort80": true - } - ] - }, - "3": { - "RegionID": 3, - "RegionCode": "sin", - "RegionName": "Singapore", - "Latitude": 1.3521, - "Longitude": 103.8198, - "Nodes": [ - { - "Name": "3g", - "RegionID": 3, - "HostName": "derp3g.tailscale.com", - "IPv4": "172.237.72.79", - "IPv6": "2600:3c15::2000:adff:fe08:6fab", - "CanPort80": true - }, - { - "Name": "3f", - "RegionID": 3, - "HostName": "derp3f.tailscale.com", - "IPv4": "172.237.72.8", - "IPv6": "2600:3c15::2000:53ff:fe48:a668", - "CanPort80": true - }, - { - "Name": "3h", - "RegionID": 3, - "HostName": "derp3h.tailscale.com", - "IPv4": "172.237.66.30", - "IPv6": "2600:3c15::2000:3dff:fe44:50aa", - "CanPort80": true - }, - { - "Name": "3e", - "RegionID": 3, - "HostName": "derp3e.tailscale.com", - "IPv4": "172.237.72.43", - "IPv6": "2600:3c15::2000:6cff:fee4:d799", - "CanPort80": true - } - ] - }, - "4": { - "RegionID": 4, - "RegionCode": "fra", - "RegionName": "Frankfurt", - "Latitude": 50.1109, - "Longitude": 8.6821, - "Nodes": [ - { - "Name": "4h", - "RegionID": 4, - "HostName": "derp4h.tailscale.com", - "IPv4": "185.40.234.77", - "IPv6": "2a00:dd80:20::bcf", - "CanPort80": true - }, - { - "Name": "4g", - "RegionID": 4, - "HostName": "derp4g.tailscale.com", - "IPv4": "185.40.234.113", - "IPv6": "2a00:dd80:20::8f", - "CanPort80": true - }, - { - "Name": "4i", - "RegionID": 4, - "HostName": "derp4i.tailscale.com", - "IPv4": "185.40.234.53", - "IPv6": "2a00:dd80:20::8a6", - "CanPort80": true - }, - { - "Name": "4f", - "RegionID": 4, - "HostName": "derp4f.tailscale.com", - "IPv4": "185.40.234.219", - "IPv6": "2a00:dd80:20::a25", - "CanPort80": true - } - ] - }, - "5": { - "RegionID": 5, - "RegionCode": "syd", - "RegionName": "Sydney", - "Latitude": -33.867778, - "Longitude": 151.21, - "Nodes": [ - { - "Name": "5f", - "RegionID": 5, - "HostName": "derp5f.tailscale.com", - "IPv4": "172.105.166.103", - "IPv6": "2400:8907::2000:ccff:fe1f:80da", - "CanPort80": true - }, - { - "Name": "5g", - "RegionID": 5, - "HostName": "derp5g.tailscale.com", - "IPv4": "172.105.169.57", - "IPv6": "2400:8907::2000:2fff:fea7:57f4", - "CanPort80": true - }, - { - "Name": "5e", - "RegionID": 5, - "HostName": "derp5e.tailscale.com", - "IPv4": "172.105.179.230", - "IPv6": "2400:8907::2000:ceff:fe8d:4f4e", - "CanPort80": true - } - ] - }, - "6": { - "RegionID": 6, - "RegionCode": "blr", - "RegionName": "Bengaluru", - "Latitude": 12.9716, - "Longitude": 77.5946, - "Nodes": [ - { - "Name": "6a", - "RegionID": 6, - "HostName": "derp6.tailscale.com", - "IPv4": "68.183.90.120", - "IPv6": "2400:6180:100:d0::982:d001", - "CanPort80": true - } - ] - }, - "7": { - "RegionID": 7, - "RegionCode": "tok", - "RegionName": "Tokyo", - "Latitude": 35.6764, - "Longitude": 139.65, - "Nodes": [ - { - "Name": "7g", - "RegionID": 7, - "HostName": "derp7g.tailscale.com", - "IPv4": "172.238.6.179", - "IPv6": "2600:3c18::2000:3fff:fe80:3ebd", - "CanPort80": true - }, - { - "Name": "7f", - "RegionID": 7, - "HostName": "derp7f.tailscale.com", - "IPv4": "172.238.6.34", - "IPv6": "2600:3c18::2000:acff:fe8e:3ed5", - "CanPort80": true - }, - { - "Name": "7h", - "RegionID": 7, - "HostName": "derp7h.tailscale.com", - "IPv4": "172.237.28.183", - "IPv6": "2600:3c18::2000:b1ff:fea9:4560", - "CanPort80": true - }, - { - "Name": "7e", - "RegionID": 7, - "HostName": "derp7e.tailscale.com", - "IPv4": "172.238.6.180", - "IPv6": "2600:3c18::2000:60ff:fe0f:6e83", - "STUNOnly": true, - "CanPort80": true - } - ] - }, - "8": { - "RegionID": 8, - "RegionCode": "lhr", - "RegionName": "London", - "Latitude": 51.5072, - "Longitude": 0.1276, - "Nodes": [ - { - "Name": "8f", - "RegionID": 8, - "HostName": "derp8f.tailscale.com", - "IPv4": "176.58.88.183", - "IPv6": "2a00:dd80:3a::dfa", - "CanPort80": true - }, - { - "Name": "8g", - "RegionID": 8, - "HostName": "derp8g.tailscale.com", - "IPv4": "176.58.92.254", - "IPv6": "2a00:dd80:3a::ed", - "CanPort80": true - }, - { - "Name": "8e", - "RegionID": 8, - "HostName": "derp8e.tailscale.com", - "IPv4": "176.58.92.144", - "IPv6": "2a00:dd80:3a::b33", - "CanPort80": true - } - ] - }, - "9": { - "RegionID": 9, - "RegionCode": "dfw", - "RegionName": "Dallas", - "Latitude": 32.779167, - "Longitude": -96.808889, - "Nodes": [ - { - "Name": "9e", - "RegionID": 9, - "HostName": "derp9e.tailscale.com", - "IPv4": "192.73.248.83", - "IPv6": "2607:f740:100::359", - "CanPort80": true - }, - { - "Name": "9f", - "RegionID": 9, - "HostName": "derp9f.tailscale.com", - "IPv4": "209.177.156.197", - "IPv6": "2607:f740:100::cad", - "CanPort80": true - }, - { - "Name": "9d", - "RegionID": 9, - "HostName": "derp9d.tailscale.com", - "IPv4": "209.177.156.94", - "IPv6": "2607:f740:100::c05", - "CanPort80": true - } - ] - } - } - }, - "DisplayMessages": null, - "TKAEnabled": false, - "TKAHead": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", - "Domain": "kratail2tid@passkey", - "DomainAuditLogID": "", - "UserProfiles": { - "1008089393782498": { - "ID": 1008089393782498, - "LoginName": "group-b-client.tail78f774.ts.net", - "DisplayName": "group-b-client" - }, - "1260082990019555": { "ID": 1260082990019555, "LoginName": "tagged-devices", "DisplayName": "Tagged Devices" } - } + ] } }, "multi-exit-router": { - "commands": { - "packet_filter_rules": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/multi-exit-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/multi-exit-router/tailscaled.sock debug localapi POST debug-packet-filter-matches" - }, "packet_filter_rules": null, - "packet_filter_matches": [], - "whois": { - "100.124.195.93": { - "peer_name": "exit-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/multi-exit-router/tailscaled.sock whois --json 100.124.195.93", - "response": null - }, - "100.116.18.24": { - "peer_name": "exit-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/multi-exit-router/tailscaled.sock whois --json 100.116.18.24", - "response": null - }, - "100.85.66.106": { - "peer_name": "exit-node", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/multi-exit-router/tailscaled.sock whois --json 100.85.66.106", - "response": null - }, - "100.107.162.14": { - "peer_name": "group-a-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/multi-exit-router/tailscaled.sock whois --json 100.107.162.14", - "response": null - }, - "100.77.135.18": { - "peer_name": "group-b-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/multi-exit-router/tailscaled.sock whois --json 100.77.135.18", - "response": null - }, - "100.109.43.124": { - "peer_name": "router-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/multi-exit-router/tailscaled.sock whois --json 100.109.43.124", - "response": null - }, - "100.65.172.123": { - "peer_name": "router-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/multi-exit-router/tailscaled.sock whois --json 100.65.172.123", - "response": null - }, - "100.92.142.61": { - "peer_name": "subnet-router", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/multi-exit-router/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/multi-exit-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/multi-exit-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/multi-exit-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/multi-exit-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/multi-exit-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/multi-exit-router/tailscaled.sock whois --json 100.90.199.68", - "response": null - } - }, "netmap": { - "SelfNode": { - "ID": 6294409699640722, - "StableID": "nMQuxDUk9r11CNTRL", - "Name": "multi-exit-router.tail78f774.ts.net.", - "User": 6294409699640722, - "Key": "nodekey:b854a0d64eba757cd3215c5bd78149cc0f927e35a2ad20342e88a15ead297f6a", - "DiscoKey": "discokey:762c82dd308809f511c6ac86dcc2642585837358fdd24958d55f16883c8e6c58", - "Addresses": ["100.105.127.107/32", "fd7a:115c:a1e0::ad37:7f6b/128"], - "AllowedIPs": ["100.105.127.107/32", "fd7a:115c:a1e0::ad37:7f6b/128", "10.33.0.0/16"], - "Endpoints": ["77.164.248.136:50766", "10.65.0.27:50766", "172.17.0.1:50766"], - "Hostinfo": { - "Hostname": "multi-exit-router", - "RoutableIPs": ["0.0.0.0/0", "::/0", "10.33.0.0/16"], - "RequestTags": ["tag:exit", "tag:router"], - "Services": [ - { "Proto": "peerapi4", "Port": 62548 }, - { "Proto": "peerapi6", "Port": 62548 }, - { "Proto": "peerapi-dns-proxy", "Port": 1 } - ] - }, - "Created": "2026-03-28T10:38:19.117098852Z", - "Tags": ["tag:exit", "tag:router"], - "PrimaryRoutes": ["10.33.0.0/16"], - "MachineAuthorized": true, - "CapMap": { - "https://tailscale.com/cap/file-sharing": null, - "https://tailscale.com/cap/is-owner": null, - "https://tailscale.com/cap/ssh": null, - "https://tailscale.com/cap/tailnet-lock": null, - "probe-udp-lifetime": null, - "ssh-behavior-v1": null, - "ssh-env-vars": null, - "store-appc-routes": null, - "tailnet-display-name": ["kratail2tid@passkey"] - }, - "ComputedName": "multi-exit-router", - "ComputedNameWithHost": "multi-exit-router" - }, - "AllCaps": [ - "https://tailscale.com/cap/tailnet-lock", - "ssh-behavior-v1", - "https://tailscale.com/cap/file-sharing", - "ssh-env-vars", - "https://tailscale.com/cap/ssh", - "probe-udp-lifetime", - "tailnet-display-name", - "https://tailscale.com/cap/is-owner", - "store-appc-routes" - ], - "NodeKey": "nodekey:b854a0d64eba757cd3215c5bd78149cc0f927e35a2ad20342e88a15ead297f6a", - "MachineKey": "mkey:91bee804809f30d07bfc29cf556844288fc3d45e0572469a3cb0799a535fda7d", "Peers": [], - "DNS": { - "Routes": { - "tail78f774.ts.net.": null, - "ts.net.": [{ "Addr": "199.247.155.53" }, { "Addr": "2620:111:8007::53" }] - }, - "Domains": ["tail78f774.ts.net"], - "Proxied": true, - "ExitNodeFilteredSet": [".ts.net", ".tailscale.net"] - }, - "PacketFilter": [], - "PacketFilterRules": null, - "SSHPolicy": { "rules": [] }, - "CollectServices": false, - "DERPMap": { - "Regions": { - "1": { - "RegionID": 1, - "RegionCode": "nyc", - "RegionName": "New York City", - "Latitude": 40.7128, - "Longitude": -74.006, - "Nodes": [ - { - "Name": "1h", - "RegionID": 1, - "HostName": "derp1h.tailscale.com", - "IPv4": "199.38.181.93", - "IPv6": "2607:f740:f::afd", - "CanPort80": true - }, - { - "Name": "1g", - "RegionID": 1, - "HostName": "derp1g.tailscale.com", - "IPv4": "209.177.145.120", - "IPv6": "2607:f740:f::3eb", - "CanPort80": true - }, - { - "Name": "1i", - "RegionID": 1, - "HostName": "derp1i.tailscale.com", - "IPv4": "199.38.181.103", - "IPv6": "2607:f740:f::e19", - "CanPort80": true - }, - { - "Name": "1f", - "RegionID": 1, - "HostName": "derp1f.tailscale.com", - "IPv4": "199.38.181.104", - "IPv6": "2607:f740:f::bc", - "CanPort80": true - } - ] - }, - "10": { - "RegionID": 10, - "RegionCode": "sea", - "RegionName": "Seattle", - "Latitude": 47.609722, - "Longitude": -122.333056, - "Nodes": [ - { - "Name": "10c", - "RegionID": 10, - "HostName": "derp10c.tailscale.com", - "IPv4": "192.73.240.121", - "IPv6": "2607:f740:14::40c", - "CanPort80": true - }, - { - "Name": "10d", - "RegionID": 10, - "HostName": "derp10d.tailscale.com", - "IPv4": "192.73.240.132", - "IPv6": "2607:f740:14::500", - "CanPort80": true - }, - { - "Name": "10b", - "RegionID": 10, - "HostName": "derp10b.tailscale.com", - "IPv4": "192.73.240.161", - "IPv6": "2607:f740:14::61c", - "CanPort80": true - } - ] - }, - "11": { - "RegionID": 11, - "RegionCode": "sao", - "RegionName": "São Paulo", - "Latitude": -23.55, - "Longitude": -46.633333, - "Nodes": [ - { - "Name": "11f", - "RegionID": 11, - "HostName": "derp11f.tailscale.com", - "IPv4": "172.237.61.197", - "IPv6": "2600:3c0d::2000:3bff:fe44:6166", - "CanPort80": true - }, - { - "Name": "11g", - "RegionID": 11, - "HostName": "derp11g.tailscale.com", - "IPv4": "172.237.61.190", - "IPv6": "2600:3c0d::2000:62ff:febe:2e67", - "CanPort80": true - }, - { - "Name": "11e", - "RegionID": 11, - "HostName": "derp11e.tailscale.com", - "IPv4": "172.237.61.194", - "IPv6": "2600:3c0d::2000:d2ff:fe43:1790", - "CanPort80": true - } - ] - }, - "12": { - "RegionID": 12, - "RegionCode": "ord", - "RegionName": "Chicago", - "Latitude": 41.881944, - "Longitude": -87.627778, - "Nodes": [ - { - "Name": "12e", - "RegionID": 12, - "HostName": "derp12e.tailscale.com", - "IPv4": "209.177.158.15", - "IPv6": "2607:f740:e::b17", - "CanPort80": true - }, - { - "Name": "12f", - "RegionID": 12, - "HostName": "derp12f.tailscale.com", - "IPv4": "199.38.182.118", - "IPv6": "2607:f740:e::4c8", - "CanPort80": true - }, - { - "Name": "12d", - "RegionID": 12, - "HostName": "derp12d.tailscale.com", - "IPv4": "209.177.158.246", - "IPv6": "2607:f740:e::811", - "CanPort80": true - } - ] - }, - "13": { - "RegionID": 13, - "RegionCode": "den", - "RegionName": "Denver", - "Latitude": 39.7392, - "Longitude": -104.9849, - "Nodes": [ - { - "Name": "13c", - "RegionID": 13, - "HostName": "derp13c.tailscale.com", - "IPv4": "192.73.242.28", - "IPv6": "2607:f740:16::5c", - "CanPort80": true - }, - { - "Name": "13d", - "RegionID": 13, - "HostName": "derp13d.tailscale.com", - "IPv4": "192.73.242.204", - "IPv6": "2607:f740:16::c23", - "CanPort80": true - }, - { - "Name": "13b", - "RegionID": 13, - "HostName": "derp13b.tailscale.com", - "IPv4": "192.73.242.187", - "IPv6": "2607:f740:16::640", - "CanPort80": true - } - ] - }, - "14": { - "RegionID": 14, - "RegionCode": "ams", - "RegionName": "Amsterdam", - "Latitude": 52.372778, - "Longitude": 4.893611, - "Nodes": [ - { - "Name": "14c", - "RegionID": 14, - "HostName": "derp14c.tailscale.com", - "IPv4": "176.58.93.147", - "IPv6": "2a00:dd80:3c::b09", - "CanPort80": true - }, - { - "Name": "14d", - "RegionID": 14, - "HostName": "derp14d.tailscale.com", - "IPv4": "176.58.93.154", - "IPv6": "2a00:dd80:3c::3d5", - "CanPort80": true - }, - { - "Name": "14b", - "RegionID": 14, - "HostName": "derp14b.tailscale.com", - "IPv4": "176.58.93.248", - "IPv6": "2a00:dd80:3c::807", - "CanPort80": true - } - ] - }, - "15": { - "RegionID": 15, - "RegionCode": "jnb", - "RegionName": "Johannesburg", - "Latitude": -26.204444, - "Longitude": 28.045556, - "Nodes": [ - { - "Name": "15c", - "RegionID": 15, - "HostName": "derp15c.tailscale.com", - "IPv4": "102.67.165.185", - "IPv6": "2c0f:edb0:0:10::b59", - "CanPort80": true - }, - { - "Name": "15d", - "RegionID": 15, - "HostName": "derp15d.tailscale.com", - "IPv4": "102.67.165.36", - "IPv6": "2c0f:edb0:0:10::599", - "CanPort80": true - }, - { - "Name": "15b", - "RegionID": 15, - "HostName": "derp15b.tailscale.com", - "IPv4": "102.67.165.90", - "IPv6": "2c0f:edb0:0:10::963", - "CanPort80": true - } - ] - }, - "16": { - "RegionID": 16, - "RegionCode": "mia", - "RegionName": "Miami", - "Latitude": 25.78, - "Longitude": -80.21, - "Nodes": [ - { - "Name": "16c", - "RegionID": 16, - "HostName": "derp16c.tailscale.com", - "IPv4": "192.73.243.229", - "IPv6": "2607:f740:17::4e4", - "CanPort80": true - }, - { - "Name": "16d", - "RegionID": 16, - "HostName": "derp16d.tailscale.com", - "IPv4": "192.73.243.141", - "IPv6": "2607:f740:17::475", - "CanPort80": true - }, - { - "Name": "16b", - "RegionID": 16, - "HostName": "derp16b.tailscale.com", - "IPv4": "192.73.243.135", - "IPv6": "2607:f740:17::476", - "CanPort80": true - } - ] - }, - "17": { - "RegionID": 17, - "RegionCode": "lax", - "RegionName": "Los Angeles", - "Latitude": 34.05, - "Longitude": -118.25, - "Nodes": [ - { - "Name": "17c", - "RegionID": 17, - "HostName": "derp17c.tailscale.com", - "IPv4": "208.111.40.12", - "IPv6": "2607:f740:c::10", - "CanPort80": true - }, - { - "Name": "17d", - "RegionID": 17, - "HostName": "derp17d.tailscale.com", - "IPv4": "208.111.40.216", - "IPv6": "2607:f740:c::e1b", - "CanPort80": true - }, - { - "Name": "17b", - "RegionID": 17, - "HostName": "derp17b.tailscale.com", - "IPv4": "192.73.244.245", - "IPv6": "2607:f740:c::646", - "CanPort80": true - } - ] - }, - "18": { - "RegionID": 18, - "RegionCode": "par", - "RegionName": "Paris", - "Latitude": 48.856667, - "Longitude": 2.352222, - "Nodes": [ - { - "Name": "18c", - "RegionID": 18, - "HostName": "derp18c.tailscale.com", - "IPv4": "176.58.90.207", - "IPv6": "2a00:dd80:3e::c19", - "CanPort80": true - }, - { - "Name": "18d", - "RegionID": 18, - "HostName": "derp18d.tailscale.com", - "IPv4": "176.58.90.104", - "IPv6": "2a00:dd80:3e::f2e", - "CanPort80": true - }, - { - "Name": "18b", - "RegionID": 18, - "HostName": "derp18b.tailscale.com", - "IPv4": "176.58.90.147", - "IPv6": "2a00:dd80:3e::363", - "CanPort80": true - } - ] - }, - "19": { - "RegionID": 19, - "RegionCode": "mad", - "RegionName": "Madrid", - "Latitude": 40.416944, - "Longitude": -3.703333, - "Nodes": [ - { - "Name": "19c", - "RegionID": 19, - "HostName": "derp19c.tailscale.com", - "IPv4": "45.159.97.61", - "IPv6": "2a00:dd80:14:10::20", - "CanPort80": true - }, - { - "Name": "19d", - "RegionID": 19, - "HostName": "derp19d.tailscale.com", - "IPv4": "45.159.97.233", - "IPv6": "2a00:dd80:14:10::34a", - "CanPort80": true - }, - { - "Name": "19b", - "RegionID": 19, - "HostName": "derp19b.tailscale.com", - "IPv4": "45.159.97.144", - "IPv6": "2a00:dd80:14:10::335", - "CanPort80": true - } - ] - }, - "2": { - "RegionID": 2, - "RegionCode": "sfo", - "RegionName": "San Francisco", - "Latitude": 37.7775, - "Longitude": -122.416389, - "Nodes": [ - { - "Name": "2e", - "RegionID": 2, - "HostName": "derp2e.tailscale.com", - "IPv4": "192.73.252.134", - "IPv6": "2607:f740:0:3f::44c", - "CanPort80": true - }, - { - "Name": "2f", - "RegionID": 2, - "HostName": "derp2f.tailscale.com", - "IPv4": "208.111.34.178", - "IPv6": "2607:f740:0:3f::f4", - "CanPort80": true - }, - { - "Name": "2d", - "RegionID": 2, - "HostName": "derp2d.tailscale.com", - "IPv4": "192.73.252.65", - "IPv6": "2607:f740:0:3f::287", - "CanPort80": true - } - ] - }, - "20": { - "RegionID": 20, - "RegionCode": "hkg", - "RegionName": "Hong Kong", - "Latitude": 22.3193, - "Longitude": 114.1694, - "Nodes": [ - { - "Name": "20c", - "RegionID": 20, - "HostName": "derp20c.tailscale.com", - "IPv4": "205.147.105.30", - "IPv6": "2403:2500:8000:1::5fb", - "CanPort80": true - }, - { - "Name": "20d", - "RegionID": 20, - "HostName": "derp20d.tailscale.com", - "IPv4": "205.147.105.78", - "IPv6": "2403:2500:8000:1::e9a", - "CanPort80": true - }, - { - "Name": "20b", - "RegionID": 20, - "HostName": "derp20b.tailscale.com", - "IPv4": "103.6.84.152", - "IPv6": "2403:2500:8000:1::ef6", - "CanPort80": true - } - ] - }, - "21": { - "RegionID": 21, - "RegionCode": "tor", - "RegionName": "Toronto", - "Latitude": 43.741667, - "Longitude": -79.373333, - "Nodes": [ - { - "Name": "21c", - "RegionID": 21, - "HostName": "derp21c.tailscale.com", - "IPv4": "162.248.221.215", - "IPv6": "2607:f740:50::f10", - "CanPort80": true - }, - { - "Name": "21d", - "RegionID": 21, - "HostName": "derp21d.tailscale.com", - "IPv4": "162.248.221.248", - "IPv6": "2607:f740:50::ca4", - "CanPort80": true - }, - { - "Name": "21b", - "RegionID": 21, - "HostName": "derp21b.tailscale.com", - "IPv4": "162.248.221.199", - "IPv6": "2607:f740:50::1d1", - "CanPort80": true - } - ] - }, - "22": { - "RegionID": 22, - "RegionCode": "waw", - "RegionName": "Warsaw", - "Latitude": 52.23, - "Longitude": 21.011111, - "Nodes": [ - { - "Name": "22c", - "RegionID": 22, - "HostName": "derp22c.tailscale.com", - "IPv4": "45.159.98.253", - "IPv6": "2a00:dd80:40:100::3f", - "CanPort80": true - }, - { - "Name": "22d", - "RegionID": 22, - "HostName": "derp22d.tailscale.com", - "IPv4": "45.159.98.145", - "IPv6": "2a00:dd80:40:100::211", - "CanPort80": true - }, - { - "Name": "22b", - "RegionID": 22, - "HostName": "derp22b.tailscale.com", - "IPv4": "45.159.98.196", - "IPv6": "2a00:dd80:40:100::316", - "CanPort80": true - } - ] - }, - "23": { - "RegionID": 23, - "RegionCode": "dbi", - "RegionName": "Dubai", - "Latitude": 25.263056, - "Longitude": 55.297222, - "Nodes": [ - { - "Name": "23c", - "RegionID": 23, - "HostName": "derp23c.tailscale.com", - "IPv4": "185.34.3.207", - "IPv6": "2a00:dd80:3f:100::a50", - "CanPort80": true - }, - { - "Name": "23d", - "RegionID": 23, - "HostName": "derp23d.tailscale.com", - "IPv4": "185.34.3.75", - "IPv6": "2a00:dd80:3f:100::97e", - "CanPort80": true - }, - { - "Name": "23b", - "RegionID": 23, - "HostName": "derp23b.tailscale.com", - "IPv4": "185.34.3.232", - "IPv6": "2a00:dd80:3f:100::76f", - "CanPort80": true - } - ] - }, - "24": { - "RegionID": 24, - "RegionCode": "hnl", - "RegionName": "Honolulu", - "Latitude": 21.306944, - "Longitude": -157.858333, - "Nodes": [ - { - "Name": "24c", - "RegionID": 24, - "HostName": "derp24c.tailscale.com", - "IPv4": "208.83.233.233", - "IPv6": "2001:19f0:c000:c591:5400:04ff:fe26:2c5f", - "CanPort80": true - }, - { - "Name": "24d", - "RegionID": 24, - "HostName": "derp24d.tailscale.com", - "IPv4": "208.72.155.133", - "IPv6": "2001:19f0:c000:c564:5400:04ff:fe26:2ba8", - "CanPort80": true - }, - { - "Name": "24b", - "RegionID": 24, - "HostName": "derp24b.tailscale.com", - "IPv4": "208.83.234.151", - "IPv6": "2001:19f0:c000:c586:5400:04ff:fe26:2ba6", - "CanPort80": true - } - ] - }, - "25": { - "RegionID": 25, - "RegionCode": "nai", - "RegionName": "Nairobi", - "Latitude": -1.286389, - "Longitude": 36.817222, - "Nodes": [ - { - "Name": "25c", - "RegionID": 25, - "HostName": "derp25c.tailscale.com", - "IPv4": "102.67.167.37", - "IPv6": "2c0f:edb0:2000:1::2c7", - "CanPort80": true - }, - { - "Name": "25d", - "RegionID": 25, - "HostName": "derp25d.tailscale.com", - "IPv4": "102.67.167.188", - "IPv6": "2c0f:edb0:2000:1::188", - "CanPort80": true - }, - { - "Name": "25b", - "RegionID": 25, - "HostName": "derp25b.tailscale.com", - "IPv4": "102.67.167.245", - "IPv6": "2c0f:edb0:2000:1::2e9", - "CanPort80": true - } - ] - }, - "26": { - "RegionID": 26, - "RegionCode": "nue", - "RegionName": "Nuremberg", - "Latitude": 49.453889, - "Longitude": 11.0775, - "Nodes": [ - { - "Name": "26c", - "RegionID": 26, - "HostName": "derp26c.tailscale.com", - "IPv4": "49.12.193.137", - "IPv6": "2a01:4f8:1c1c:5c70::1", - "CanPort80": true - }, - { - "Name": "26d", - "RegionID": 26, - "HostName": "derp26d.tailscale.com", - "IPv4": "49.13.204.141", - "IPv6": "2a01:4f8:1c0c:7d06::1", - "CanPort80": true - }, - { - "Name": "26b", - "RegionID": 26, - "HostName": "derp26b.tailscale.com", - "IPv4": "167.235.72.200", - "IPv6": "2a01:4f8:1c1c:47b6::1", - "CanPort80": true - } - ] - }, - "27": { - "RegionID": 27, - "RegionCode": "iad", - "RegionName": "Ashburn", - "Latitude": 39.03, - "Longitude": -77.471111, - "Nodes": [ - { - "Name": "27d", - "RegionID": 27, - "HostName": "derp27d.tailscale.com", - "IPv4": "178.156.152.106", - "IPv6": "2a01:4ff:f0:3c8e::1", - "CanPort80": true - }, - { - "Name": "27c", - "RegionID": 27, - "HostName": "derp27c.tailscale.com", - "IPv4": "178.156.152.91", - "IPv6": "2a01:4ff:f0:3913::1", - "CanPort80": true - }, - { - "Name": "27e", - "RegionID": 27, - "HostName": "derp27e.tailscale.com", - "IPv4": "178.156.134.232", - "IPv6": "2a01:4ff:f0:28d4::1", - "CanPort80": true - }, - { - "Name": "27b", - "RegionID": 27, - "HostName": "derp27b.tailscale.com", - "IPv4": "5.161.218.233", - "IPv6": "2a01:4ff:f0:3db9::1", - "CanPort80": true - } - ] - }, - "28": { - "RegionID": 28, - "RegionCode": "hel", - "RegionName": "Helsinki", - "Latitude": 60.170833, - "Longitude": 24.9375, - "Nodes": [ - { - "Name": "28c", - "RegionID": 28, - "HostName": "derp28c.tailscale.com", - "IPv4": "95.217.2.165", - "IPv6": "2a01:4f9:c012:cd74::1", - "CanPort80": true - }, - { - "Name": "28d", - "RegionID": 28, - "HostName": "derp28d.tailscale.com", - "IPv4": "157.180.28.32", - "IPv6": "2a01:4f9:c012:2e5b::1", - "CanPort80": true - }, - { - "Name": "28b", - "RegionID": 28, - "HostName": "derp28b.tailscale.com", - "IPv4": "65.109.143.62", - "IPv6": "2a01:4f9:c012:d55c::1", - "CanPort80": true - } - ] - }, - "3": { - "RegionID": 3, - "RegionCode": "sin", - "RegionName": "Singapore", - "Latitude": 1.3521, - "Longitude": 103.8198, - "Nodes": [ - { - "Name": "3g", - "RegionID": 3, - "HostName": "derp3g.tailscale.com", - "IPv4": "172.237.72.79", - "IPv6": "2600:3c15::2000:adff:fe08:6fab", - "CanPort80": true - }, - { - "Name": "3f", - "RegionID": 3, - "HostName": "derp3f.tailscale.com", - "IPv4": "172.237.72.8", - "IPv6": "2600:3c15::2000:53ff:fe48:a668", - "CanPort80": true - }, - { - "Name": "3h", - "RegionID": 3, - "HostName": "derp3h.tailscale.com", - "IPv4": "172.237.66.30", - "IPv6": "2600:3c15::2000:3dff:fe44:50aa", - "CanPort80": true - }, - { - "Name": "3e", - "RegionID": 3, - "HostName": "derp3e.tailscale.com", - "IPv4": "172.237.72.43", - "IPv6": "2600:3c15::2000:6cff:fee4:d799", - "CanPort80": true - } - ] - }, - "4": { - "RegionID": 4, - "RegionCode": "fra", - "RegionName": "Frankfurt", - "Latitude": 50.1109, - "Longitude": 8.6821, - "Nodes": [ - { - "Name": "4h", - "RegionID": 4, - "HostName": "derp4h.tailscale.com", - "IPv4": "185.40.234.77", - "IPv6": "2a00:dd80:20::bcf", - "CanPort80": true - }, - { - "Name": "4g", - "RegionID": 4, - "HostName": "derp4g.tailscale.com", - "IPv4": "185.40.234.113", - "IPv6": "2a00:dd80:20::8f", - "CanPort80": true - }, - { - "Name": "4i", - "RegionID": 4, - "HostName": "derp4i.tailscale.com", - "IPv4": "185.40.234.53", - "IPv6": "2a00:dd80:20::8a6", - "CanPort80": true - }, - { - "Name": "4f", - "RegionID": 4, - "HostName": "derp4f.tailscale.com", - "IPv4": "185.40.234.219", - "IPv6": "2a00:dd80:20::a25", - "CanPort80": true - } - ] - }, - "5": { - "RegionID": 5, - "RegionCode": "syd", - "RegionName": "Sydney", - "Latitude": -33.867778, - "Longitude": 151.21, - "Nodes": [ - { - "Name": "5f", - "RegionID": 5, - "HostName": "derp5f.tailscale.com", - "IPv4": "172.105.166.103", - "IPv6": "2400:8907::2000:ccff:fe1f:80da", - "CanPort80": true - }, - { - "Name": "5g", - "RegionID": 5, - "HostName": "derp5g.tailscale.com", - "IPv4": "172.105.169.57", - "IPv6": "2400:8907::2000:2fff:fea7:57f4", - "CanPort80": true - }, - { - "Name": "5e", - "RegionID": 5, - "HostName": "derp5e.tailscale.com", - "IPv4": "172.105.179.230", - "IPv6": "2400:8907::2000:ceff:fe8d:4f4e", - "CanPort80": true - } - ] - }, - "6": { - "RegionID": 6, - "RegionCode": "blr", - "RegionName": "Bengaluru", - "Latitude": 12.9716, - "Longitude": 77.5946, - "Nodes": [ - { - "Name": "6a", - "RegionID": 6, - "HostName": "derp6.tailscale.com", - "IPv4": "68.183.90.120", - "IPv6": "2400:6180:100:d0::982:d001", - "CanPort80": true - } - ] - }, - "7": { - "RegionID": 7, - "RegionCode": "tok", - "RegionName": "Tokyo", - "Latitude": 35.6764, - "Longitude": 139.65, - "Nodes": [ - { - "Name": "7g", - "RegionID": 7, - "HostName": "derp7g.tailscale.com", - "IPv4": "172.238.6.179", - "IPv6": "2600:3c18::2000:3fff:fe80:3ebd", - "CanPort80": true - }, - { - "Name": "7f", - "RegionID": 7, - "HostName": "derp7f.tailscale.com", - "IPv4": "172.238.6.34", - "IPv6": "2600:3c18::2000:acff:fe8e:3ed5", - "CanPort80": true - }, - { - "Name": "7h", - "RegionID": 7, - "HostName": "derp7h.tailscale.com", - "IPv4": "172.237.28.183", - "IPv6": "2600:3c18::2000:b1ff:fea9:4560", - "CanPort80": true - }, - { - "Name": "7e", - "RegionID": 7, - "HostName": "derp7e.tailscale.com", - "IPv4": "172.238.6.180", - "IPv6": "2600:3c18::2000:60ff:fe0f:6e83", - "STUNOnly": true, - "CanPort80": true - } - ] - }, - "8": { - "RegionID": 8, - "RegionCode": "lhr", - "RegionName": "London", - "Latitude": 51.5072, - "Longitude": 0.1276, - "Nodes": [ - { - "Name": "8f", - "RegionID": 8, - "HostName": "derp8f.tailscale.com", - "IPv4": "176.58.88.183", - "IPv6": "2a00:dd80:3a::dfa", - "CanPort80": true - }, - { - "Name": "8g", - "RegionID": 8, - "HostName": "derp8g.tailscale.com", - "IPv4": "176.58.92.254", - "IPv6": "2a00:dd80:3a::ed", - "CanPort80": true - }, - { - "Name": "8e", - "RegionID": 8, - "HostName": "derp8e.tailscale.com", - "IPv4": "176.58.92.144", - "IPv6": "2a00:dd80:3a::b33", - "CanPort80": true - } - ] - }, - "9": { - "RegionID": 9, - "RegionCode": "dfw", - "RegionName": "Dallas", - "Latitude": 32.779167, - "Longitude": -96.808889, - "Nodes": [ - { - "Name": "9e", - "RegionID": 9, - "HostName": "derp9e.tailscale.com", - "IPv4": "192.73.248.83", - "IPv6": "2607:f740:100::359", - "CanPort80": true - }, - { - "Name": "9f", - "RegionID": 9, - "HostName": "derp9f.tailscale.com", - "IPv4": "209.177.156.197", - "IPv6": "2607:f740:100::cad", - "CanPort80": true - }, - { - "Name": "9d", - "RegionID": 9, - "HostName": "derp9d.tailscale.com", - "IPv4": "209.177.156.94", - "IPv6": "2607:f740:100::c05", - "CanPort80": true - } - ] - } - } - }, - "DisplayMessages": null, - "TKAEnabled": false, - "TKAHead": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", - "Domain": "kratail2tid@passkey", - "DomainAuditLogID": "", - "UserProfiles": { - "6294409699640722": { - "ID": 6294409699640722, - "LoginName": "multi-exit-router.tail78f774.ts.net", - "DisplayName": "multi-exit-router" - } - } + "PacketFilterRules": null } }, "router-a": { - "commands": { - "packet_filter_rules": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/router-a/tailscaled.sock debug localapi POST debug-packet-filter-rules", - "packet_filter_matches": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/router-a/tailscaled.sock debug localapi POST debug-packet-filter-matches" - }, "packet_filter_rules": null, - "packet_filter_matches": [], - "whois": { - "100.124.195.93": { - "peer_name": "exit-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/router-a/tailscaled.sock whois --json 100.124.195.93", - "response": null - }, - "100.116.18.24": { - "peer_name": "exit-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/router-a/tailscaled.sock whois --json 100.116.18.24", - "response": null - }, - "100.85.66.106": { - "peer_name": "exit-node", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/router-a/tailscaled.sock whois --json 100.85.66.106", - "response": null - }, - "100.107.162.14": { - "peer_name": "group-a-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/router-a/tailscaled.sock whois --json 100.107.162.14", - "response": null - }, - "100.77.135.18": { - "peer_name": "group-b-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/router-a/tailscaled.sock whois --json 100.77.135.18", - "response": null - }, - "100.105.127.107": { - "peer_name": "multi-exit-router", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/router-a/tailscaled.sock whois --json 100.105.127.107", - "response": null - }, - "100.65.172.123": { - "peer_name": "router-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/router-a/tailscaled.sock whois --json 100.65.172.123", - "response": null - }, - "100.92.142.61": { - "peer_name": "subnet-router", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/router-a/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/router-a/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/router-a/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/router-a/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/router-a/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/router-a/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/router-a/tailscaled.sock whois --json 100.90.199.68", - "response": null - } - }, "netmap": { - "SelfNode": { - "ID": 50590507314324, - "StableID": "n3kktkvuP111CNTRL", - "Name": "router-a.tail78f774.ts.net.", - "User": 50590507314324, - "Key": "nodekey:b4566fef38b3b2b15684fc8890f5fbaea4525b467825f57a02801969a5ed2b7b", - "DiscoKey": "discokey:368ba711a8394633b4626eb7cd8e6a2df90d8e554505dc032ea9658ceee0f731", - "Addresses": ["100.109.43.124/32", "fd7a:115c:a1e0::a537:2b7c/128"], - "AllowedIPs": ["100.109.43.124/32", "fd7a:115c:a1e0::a537:2b7c/128", "10.44.0.0/16"], - "Endpoints": ["77.164.248.136:34130", "10.65.0.27:34130", "172.17.0.1:34130"], - "Hostinfo": { - "Hostname": "router-a", - "RoutableIPs": ["10.44.0.0/16"], - "RequestTags": ["tag:router-a"], - "Services": [ - { "Proto": "peerapi4", "Port": 49439 }, - { "Proto": "peerapi6", "Port": 49439 }, - { "Proto": "peerapi-dns-proxy", "Port": 1 } - ] - }, - "Created": "2026-03-28T10:38:11.734910312Z", - "Tags": ["tag:router-a"], - "PrimaryRoutes": ["10.44.0.0/16"], - "MachineAuthorized": true, - "CapMap": { - "https://tailscale.com/cap/file-sharing": null, - "https://tailscale.com/cap/is-owner": null, - "https://tailscale.com/cap/ssh": null, - "https://tailscale.com/cap/tailnet-lock": null, - "probe-udp-lifetime": null, - "ssh-behavior-v1": null, - "ssh-env-vars": null, - "store-appc-routes": null, - "tailnet-display-name": ["kratail2tid@passkey"] - }, - "ComputedName": "router-a", - "ComputedNameWithHost": "router-a" - }, - "AllCaps": [ - "https://tailscale.com/cap/tailnet-lock", - "probe-udp-lifetime", - "ssh-env-vars", - "tailnet-display-name", - "https://tailscale.com/cap/file-sharing", - "https://tailscale.com/cap/is-owner", - "store-appc-routes", - "https://tailscale.com/cap/ssh", - "ssh-behavior-v1" - ], - "NodeKey": "nodekey:b4566fef38b3b2b15684fc8890f5fbaea4525b467825f57a02801969a5ed2b7b", - "MachineKey": "mkey:868ba8a45654990c1c153c5ce33ef50ddd8d769841335e42decda4462d1dcf4e", "Peers": [], - "DNS": { - "Routes": { - "tail78f774.ts.net.": null, - "ts.net.": [{ "Addr": "199.247.155.53" }, { "Addr": "2620:111:8007::53" }] - }, - "Domains": ["tail78f774.ts.net"], - "Proxied": true, - "ExitNodeFilteredSet": [".ts.net", ".tailscale.net"] - }, - "PacketFilter": [], - "PacketFilterRules": null, - "SSHPolicy": { "rules": [] }, - "CollectServices": false, - "DERPMap": { - "Regions": { - "1": { - "RegionID": 1, - "RegionCode": "nyc", - "RegionName": "New York City", - "Latitude": 40.7128, - "Longitude": -74.006, - "Nodes": [ - { - "Name": "1h", - "RegionID": 1, - "HostName": "derp1h.tailscale.com", - "IPv4": "199.38.181.93", - "IPv6": "2607:f740:f::afd", - "CanPort80": true - }, - { - "Name": "1g", - "RegionID": 1, - "HostName": "derp1g.tailscale.com", - "IPv4": "209.177.145.120", - "IPv6": "2607:f740:f::3eb", - "CanPort80": true - }, - { - "Name": "1i", - "RegionID": 1, - "HostName": "derp1i.tailscale.com", - "IPv4": "199.38.181.103", - "IPv6": "2607:f740:f::e19", - "CanPort80": true - }, - { - "Name": "1f", - "RegionID": 1, - "HostName": "derp1f.tailscale.com", - "IPv4": "199.38.181.104", - "IPv6": "2607:f740:f::bc", - "CanPort80": true - } - ] - }, - "10": { - "RegionID": 10, - "RegionCode": "sea", - "RegionName": "Seattle", - "Latitude": 47.609722, - "Longitude": -122.333056, - "Nodes": [ - { - "Name": "10c", - "RegionID": 10, - "HostName": "derp10c.tailscale.com", - "IPv4": "192.73.240.121", - "IPv6": "2607:f740:14::40c", - "CanPort80": true - }, - { - "Name": "10d", - "RegionID": 10, - "HostName": "derp10d.tailscale.com", - "IPv4": "192.73.240.132", - "IPv6": "2607:f740:14::500", - "CanPort80": true - }, - { - "Name": "10b", - "RegionID": 10, - "HostName": "derp10b.tailscale.com", - "IPv4": "192.73.240.161", - "IPv6": "2607:f740:14::61c", - "CanPort80": true - } - ] - }, - "11": { - "RegionID": 11, - "RegionCode": "sao", - "RegionName": "São Paulo", - "Latitude": -23.55, - "Longitude": -46.633333, - "Nodes": [ - { - "Name": "11f", - "RegionID": 11, - "HostName": "derp11f.tailscale.com", - "IPv4": "172.237.61.197", - "IPv6": "2600:3c0d::2000:3bff:fe44:6166", - "CanPort80": true - }, - { - "Name": "11g", - "RegionID": 11, - "HostName": "derp11g.tailscale.com", - "IPv4": "172.237.61.190", - "IPv6": "2600:3c0d::2000:62ff:febe:2e67", - "CanPort80": true - }, - { - "Name": "11e", - "RegionID": 11, - "HostName": "derp11e.tailscale.com", - "IPv4": "172.237.61.194", - "IPv6": "2600:3c0d::2000:d2ff:fe43:1790", - "CanPort80": true - } - ] - }, - "12": { - "RegionID": 12, - "RegionCode": "ord", - "RegionName": "Chicago", - "Latitude": 41.881944, - "Longitude": -87.627778, - "Nodes": [ - { - "Name": "12e", - "RegionID": 12, - "HostName": "derp12e.tailscale.com", - "IPv4": "209.177.158.15", - "IPv6": "2607:f740:e::b17", - "CanPort80": true - }, - { - "Name": "12f", - "RegionID": 12, - "HostName": "derp12f.tailscale.com", - "IPv4": "199.38.182.118", - "IPv6": "2607:f740:e::4c8", - "CanPort80": true - }, - { - "Name": "12d", - "RegionID": 12, - "HostName": "derp12d.tailscale.com", - "IPv4": "209.177.158.246", - "IPv6": "2607:f740:e::811", - "CanPort80": true - } - ] - }, - "13": { - "RegionID": 13, - "RegionCode": "den", - "RegionName": "Denver", - "Latitude": 39.7392, - "Longitude": -104.9849, - "Nodes": [ - { - "Name": "13c", - "RegionID": 13, - "HostName": "derp13c.tailscale.com", - "IPv4": "192.73.242.28", - "IPv6": "2607:f740:16::5c", - "CanPort80": true - }, - { - "Name": "13d", - "RegionID": 13, - "HostName": "derp13d.tailscale.com", - "IPv4": "192.73.242.204", - "IPv6": "2607:f740:16::c23", - "CanPort80": true - }, - { - "Name": "13b", - "RegionID": 13, - "HostName": "derp13b.tailscale.com", - "IPv4": "192.73.242.187", - "IPv6": "2607:f740:16::640", - "CanPort80": true - } - ] - }, - "14": { - "RegionID": 14, - "RegionCode": "ams", - "RegionName": "Amsterdam", - "Latitude": 52.372778, - "Longitude": 4.893611, - "Nodes": [ - { - "Name": "14c", - "RegionID": 14, - "HostName": "derp14c.tailscale.com", - "IPv4": "176.58.93.147", - "IPv6": "2a00:dd80:3c::b09", - "CanPort80": true - }, - { - "Name": "14d", - "RegionID": 14, - "HostName": "derp14d.tailscale.com", - "IPv4": "176.58.93.154", - "IPv6": "2a00:dd80:3c::3d5", - "CanPort80": true - }, - { - "Name": "14b", - "RegionID": 14, - "HostName": "derp14b.tailscale.com", - "IPv4": "176.58.93.248", - "IPv6": "2a00:dd80:3c::807", - "CanPort80": true - } - ] - }, - "15": { - "RegionID": 15, - "RegionCode": "jnb", - "RegionName": "Johannesburg", - "Latitude": -26.204444, - "Longitude": 28.045556, - "Nodes": [ - { - "Name": "15c", - "RegionID": 15, - "HostName": "derp15c.tailscale.com", - "IPv4": "102.67.165.185", - "IPv6": "2c0f:edb0:0:10::b59", - "CanPort80": true - }, - { - "Name": "15d", - "RegionID": 15, - "HostName": "derp15d.tailscale.com", - "IPv4": "102.67.165.36", - "IPv6": "2c0f:edb0:0:10::599", - "CanPort80": true - }, - { - "Name": "15b", - "RegionID": 15, - "HostName": "derp15b.tailscale.com", - "IPv4": "102.67.165.90", - "IPv6": "2c0f:edb0:0:10::963", - "CanPort80": true - } - ] - }, - "16": { - "RegionID": 16, - "RegionCode": "mia", - "RegionName": "Miami", - "Latitude": 25.78, - "Longitude": -80.21, - "Nodes": [ - { - "Name": "16c", - "RegionID": 16, - "HostName": "derp16c.tailscale.com", - "IPv4": "192.73.243.229", - "IPv6": "2607:f740:17::4e4", - "CanPort80": true - }, - { - "Name": "16d", - "RegionID": 16, - "HostName": "derp16d.tailscale.com", - "IPv4": "192.73.243.141", - "IPv6": "2607:f740:17::475", - "CanPort80": true - }, - { - "Name": "16b", - "RegionID": 16, - "HostName": "derp16b.tailscale.com", - "IPv4": "192.73.243.135", - "IPv6": "2607:f740:17::476", - "CanPort80": true - } - ] - }, - "17": { - "RegionID": 17, - "RegionCode": "lax", - "RegionName": "Los Angeles", - "Latitude": 34.05, - "Longitude": -118.25, - "Nodes": [ - { - "Name": "17c", - "RegionID": 17, - "HostName": "derp17c.tailscale.com", - "IPv4": "208.111.40.12", - "IPv6": "2607:f740:c::10", - "CanPort80": true - }, - { - "Name": "17d", - "RegionID": 17, - "HostName": "derp17d.tailscale.com", - "IPv4": "208.111.40.216", - "IPv6": "2607:f740:c::e1b", - "CanPort80": true - }, - { - "Name": "17b", - "RegionID": 17, - "HostName": "derp17b.tailscale.com", - "IPv4": "192.73.244.245", - "IPv6": "2607:f740:c::646", - "CanPort80": true - } - ] - }, - "18": { - "RegionID": 18, - "RegionCode": "par", - "RegionName": "Paris", - "Latitude": 48.856667, - "Longitude": 2.352222, - "Nodes": [ - { - "Name": "18c", - "RegionID": 18, - "HostName": "derp18c.tailscale.com", - "IPv4": "176.58.90.207", - "IPv6": "2a00:dd80:3e::c19", - "CanPort80": true - }, - { - "Name": "18d", - "RegionID": 18, - "HostName": "derp18d.tailscale.com", - "IPv4": "176.58.90.104", - "IPv6": "2a00:dd80:3e::f2e", - "CanPort80": true - }, - { - "Name": "18b", - "RegionID": 18, - "HostName": "derp18b.tailscale.com", - "IPv4": "176.58.90.147", - "IPv6": "2a00:dd80:3e::363", - "CanPort80": true - } - ] - }, - "19": { - "RegionID": 19, - "RegionCode": "mad", - "RegionName": "Madrid", - "Latitude": 40.416944, - "Longitude": -3.703333, - "Nodes": [ - { - "Name": "19c", - "RegionID": 19, - "HostName": "derp19c.tailscale.com", - "IPv4": "45.159.97.61", - "IPv6": "2a00:dd80:14:10::20", - "CanPort80": true - }, - { - "Name": "19d", - "RegionID": 19, - "HostName": "derp19d.tailscale.com", - "IPv4": "45.159.97.233", - "IPv6": "2a00:dd80:14:10::34a", - "CanPort80": true - }, - { - "Name": "19b", - "RegionID": 19, - "HostName": "derp19b.tailscale.com", - "IPv4": "45.159.97.144", - "IPv6": "2a00:dd80:14:10::335", - "CanPort80": true - } - ] - }, - "2": { - "RegionID": 2, - "RegionCode": "sfo", - "RegionName": "San Francisco", - "Latitude": 37.7775, - "Longitude": -122.416389, - "Nodes": [ - { - "Name": "2e", - "RegionID": 2, - "HostName": "derp2e.tailscale.com", - "IPv4": "192.73.252.134", - "IPv6": "2607:f740:0:3f::44c", - "CanPort80": true - }, - { - "Name": "2f", - "RegionID": 2, - "HostName": "derp2f.tailscale.com", - "IPv4": "208.111.34.178", - "IPv6": "2607:f740:0:3f::f4", - "CanPort80": true - }, - { - "Name": "2d", - "RegionID": 2, - "HostName": "derp2d.tailscale.com", - "IPv4": "192.73.252.65", - "IPv6": "2607:f740:0:3f::287", - "CanPort80": true - } - ] - }, - "20": { - "RegionID": 20, - "RegionCode": "hkg", - "RegionName": "Hong Kong", - "Latitude": 22.3193, - "Longitude": 114.1694, - "Nodes": [ - { - "Name": "20c", - "RegionID": 20, - "HostName": "derp20c.tailscale.com", - "IPv4": "205.147.105.30", - "IPv6": "2403:2500:8000:1::5fb", - "CanPort80": true - }, - { - "Name": "20d", - "RegionID": 20, - "HostName": "derp20d.tailscale.com", - "IPv4": "205.147.105.78", - "IPv6": "2403:2500:8000:1::e9a", - "CanPort80": true - }, - { - "Name": "20b", - "RegionID": 20, - "HostName": "derp20b.tailscale.com", - "IPv4": "103.6.84.152", - "IPv6": "2403:2500:8000:1::ef6", - "CanPort80": true - } - ] - }, - "21": { - "RegionID": 21, - "RegionCode": "tor", - "RegionName": "Toronto", - "Latitude": 43.741667, - "Longitude": -79.373333, - "Nodes": [ - { - "Name": "21c", - "RegionID": 21, - "HostName": "derp21c.tailscale.com", - "IPv4": "162.248.221.215", - "IPv6": "2607:f740:50::f10", - "CanPort80": true - }, - { - "Name": "21d", - "RegionID": 21, - "HostName": "derp21d.tailscale.com", - "IPv4": "162.248.221.248", - "IPv6": "2607:f740:50::ca4", - "CanPort80": true - }, - { - "Name": "21b", - "RegionID": 21, - "HostName": "derp21b.tailscale.com", - "IPv4": "162.248.221.199", - "IPv6": "2607:f740:50::1d1", - "CanPort80": true - } - ] - }, - "22": { - "RegionID": 22, - "RegionCode": "waw", - "RegionName": "Warsaw", - "Latitude": 52.23, - "Longitude": 21.011111, - "Nodes": [ - { - "Name": "22c", - "RegionID": 22, - "HostName": "derp22c.tailscale.com", - "IPv4": "45.159.98.253", - "IPv6": "2a00:dd80:40:100::3f", - "CanPort80": true - }, - { - "Name": "22d", - "RegionID": 22, - "HostName": "derp22d.tailscale.com", - "IPv4": "45.159.98.145", - "IPv6": "2a00:dd80:40:100::211", - "CanPort80": true - }, - { - "Name": "22b", - "RegionID": 22, - "HostName": "derp22b.tailscale.com", - "IPv4": "45.159.98.196", - "IPv6": "2a00:dd80:40:100::316", - "CanPort80": true - } - ] - }, - "23": { - "RegionID": 23, - "RegionCode": "dbi", - "RegionName": "Dubai", - "Latitude": 25.263056, - "Longitude": 55.297222, - "Nodes": [ - { - "Name": "23c", - "RegionID": 23, - "HostName": "derp23c.tailscale.com", - "IPv4": "185.34.3.207", - "IPv6": "2a00:dd80:3f:100::a50", - "CanPort80": true - }, - { - "Name": "23d", - "RegionID": 23, - "HostName": "derp23d.tailscale.com", - "IPv4": "185.34.3.75", - "IPv6": "2a00:dd80:3f:100::97e", - "CanPort80": true - }, - { - "Name": "23b", - "RegionID": 23, - "HostName": "derp23b.tailscale.com", - "IPv4": "185.34.3.232", - "IPv6": "2a00:dd80:3f:100::76f", - "CanPort80": true - } - ] - }, - "24": { - "RegionID": 24, - "RegionCode": "hnl", - "RegionName": "Honolulu", - "Latitude": 21.306944, - "Longitude": -157.858333, - "Nodes": [ - { - "Name": "24c", - "RegionID": 24, - "HostName": "derp24c.tailscale.com", - "IPv4": "208.83.233.233", - "IPv6": "2001:19f0:c000:c591:5400:04ff:fe26:2c5f", - "CanPort80": true - }, - { - "Name": "24d", - "RegionID": 24, - "HostName": "derp24d.tailscale.com", - "IPv4": "208.72.155.133", - "IPv6": "2001:19f0:c000:c564:5400:04ff:fe26:2ba8", - "CanPort80": true - }, - { - "Name": "24b", - "RegionID": 24, - "HostName": "derp24b.tailscale.com", - "IPv4": "208.83.234.151", - "IPv6": "2001:19f0:c000:c586:5400:04ff:fe26:2ba6", - "CanPort80": true - } - ] - }, - "25": { - "RegionID": 25, - "RegionCode": "nai", - "RegionName": "Nairobi", - "Latitude": -1.286389, - "Longitude": 36.817222, - "Nodes": [ - { - "Name": "25c", - "RegionID": 25, - "HostName": "derp25c.tailscale.com", - "IPv4": "102.67.167.37", - "IPv6": "2c0f:edb0:2000:1::2c7", - "CanPort80": true - }, - { - "Name": "25d", - "RegionID": 25, - "HostName": "derp25d.tailscale.com", - "IPv4": "102.67.167.188", - "IPv6": "2c0f:edb0:2000:1::188", - "CanPort80": true - }, - { - "Name": "25b", - "RegionID": 25, - "HostName": "derp25b.tailscale.com", - "IPv4": "102.67.167.245", - "IPv6": "2c0f:edb0:2000:1::2e9", - "CanPort80": true - } - ] - }, - "26": { - "RegionID": 26, - "RegionCode": "nue", - "RegionName": "Nuremberg", - "Latitude": 49.453889, - "Longitude": 11.0775, - "Nodes": [ - { - "Name": "26c", - "RegionID": 26, - "HostName": "derp26c.tailscale.com", - "IPv4": "49.12.193.137", - "IPv6": "2a01:4f8:1c1c:5c70::1", - "CanPort80": true - }, - { - "Name": "26d", - "RegionID": 26, - "HostName": "derp26d.tailscale.com", - "IPv4": "49.13.204.141", - "IPv6": "2a01:4f8:1c0c:7d06::1", - "CanPort80": true - }, - { - "Name": "26b", - "RegionID": 26, - "HostName": "derp26b.tailscale.com", - "IPv4": "167.235.72.200", - "IPv6": "2a01:4f8:1c1c:47b6::1", - "CanPort80": true - } - ] - }, - "27": { - "RegionID": 27, - "RegionCode": "iad", - "RegionName": "Ashburn", - "Latitude": 39.03, - "Longitude": -77.471111, - "Nodes": [ - { - "Name": "27d", - "RegionID": 27, - "HostName": "derp27d.tailscale.com", - "IPv4": "178.156.152.106", - "IPv6": "2a01:4ff:f0:3c8e::1", - "CanPort80": true - }, - { - "Name": "27c", - "RegionID": 27, - "HostName": "derp27c.tailscale.com", - "IPv4": "178.156.152.91", - "IPv6": "2a01:4ff:f0:3913::1", - "CanPort80": true - }, - { - "Name": "27e", - "RegionID": 27, - "HostName": "derp27e.tailscale.com", - "IPv4": "178.156.134.232", - "IPv6": "2a01:4ff:f0:28d4::1", - "CanPort80": true - }, - { - "Name": "27b", - "RegionID": 27, - "HostName": "derp27b.tailscale.com", - "IPv4": "5.161.218.233", - "IPv6": "2a01:4ff:f0:3db9::1", - "CanPort80": true - } - ] - }, - "28": { - "RegionID": 28, - "RegionCode": "hel", - "RegionName": "Helsinki", - "Latitude": 60.170833, - "Longitude": 24.9375, - "Nodes": [ - { - "Name": "28c", - "RegionID": 28, - "HostName": "derp28c.tailscale.com", - "IPv4": "95.217.2.165", - "IPv6": "2a01:4f9:c012:cd74::1", - "CanPort80": true - }, - { - "Name": "28d", - "RegionID": 28, - "HostName": "derp28d.tailscale.com", - "IPv4": "157.180.28.32", - "IPv6": "2a01:4f9:c012:2e5b::1", - "CanPort80": true - }, - { - "Name": "28b", - "RegionID": 28, - "HostName": "derp28b.tailscale.com", - "IPv4": "65.109.143.62", - "IPv6": "2a01:4f9:c012:d55c::1", - "CanPort80": true - } - ] - }, - "3": { - "RegionID": 3, - "RegionCode": "sin", - "RegionName": "Singapore", - "Latitude": 1.3521, - "Longitude": 103.8198, - "Nodes": [ - { - "Name": "3g", - "RegionID": 3, - "HostName": "derp3g.tailscale.com", - "IPv4": "172.237.72.79", - "IPv6": "2600:3c15::2000:adff:fe08:6fab", - "CanPort80": true - }, - { - "Name": "3f", - "RegionID": 3, - "HostName": "derp3f.tailscale.com", - "IPv4": "172.237.72.8", - "IPv6": "2600:3c15::2000:53ff:fe48:a668", - "CanPort80": true - }, - { - "Name": "3h", - "RegionID": 3, - "HostName": "derp3h.tailscale.com", - "IPv4": "172.237.66.30", - "IPv6": "2600:3c15::2000:3dff:fe44:50aa", - "CanPort80": true - }, - { - "Name": "3e", - "RegionID": 3, - "HostName": "derp3e.tailscale.com", - "IPv4": "172.237.72.43", - "IPv6": "2600:3c15::2000:6cff:fee4:d799", - "CanPort80": true - } - ] - }, - "4": { - "RegionID": 4, - "RegionCode": "fra", - "RegionName": "Frankfurt", - "Latitude": 50.1109, - "Longitude": 8.6821, - "Nodes": [ - { - "Name": "4h", - "RegionID": 4, - "HostName": "derp4h.tailscale.com", - "IPv4": "185.40.234.77", - "IPv6": "2a00:dd80:20::bcf", - "CanPort80": true - }, - { - "Name": "4g", - "RegionID": 4, - "HostName": "derp4g.tailscale.com", - "IPv4": "185.40.234.113", - "IPv6": "2a00:dd80:20::8f", - "CanPort80": true - }, - { - "Name": "4i", - "RegionID": 4, - "HostName": "derp4i.tailscale.com", - "IPv4": "185.40.234.53", - "IPv6": "2a00:dd80:20::8a6", - "CanPort80": true - }, - { - "Name": "4f", - "RegionID": 4, - "HostName": "derp4f.tailscale.com", - "IPv4": "185.40.234.219", - "IPv6": "2a00:dd80:20::a25", - "CanPort80": true - } - ] - }, - "5": { - "RegionID": 5, - "RegionCode": "syd", - "RegionName": "Sydney", - "Latitude": -33.867778, - "Longitude": 151.21, - "Nodes": [ - { - "Name": "5f", - "RegionID": 5, - "HostName": "derp5f.tailscale.com", - "IPv4": "172.105.166.103", - "IPv6": "2400:8907::2000:ccff:fe1f:80da", - "CanPort80": true - }, - { - "Name": "5g", - "RegionID": 5, - "HostName": "derp5g.tailscale.com", - "IPv4": "172.105.169.57", - "IPv6": "2400:8907::2000:2fff:fea7:57f4", - "CanPort80": true - }, - { - "Name": "5e", - "RegionID": 5, - "HostName": "derp5e.tailscale.com", - "IPv4": "172.105.179.230", - "IPv6": "2400:8907::2000:ceff:fe8d:4f4e", - "CanPort80": true - } - ] - }, - "6": { - "RegionID": 6, - "RegionCode": "blr", - "RegionName": "Bengaluru", - "Latitude": 12.9716, - "Longitude": 77.5946, - "Nodes": [ - { - "Name": "6a", - "RegionID": 6, - "HostName": "derp6.tailscale.com", - "IPv4": "68.183.90.120", - "IPv6": "2400:6180:100:d0::982:d001", - "CanPort80": true - } - ] - }, - "7": { - "RegionID": 7, - "RegionCode": "tok", - "RegionName": "Tokyo", - "Latitude": 35.6764, - "Longitude": 139.65, - "Nodes": [ - { - "Name": "7g", - "RegionID": 7, - "HostName": "derp7g.tailscale.com", - "IPv4": "172.238.6.179", - "IPv6": "2600:3c18::2000:3fff:fe80:3ebd", - "CanPort80": true - }, - { - "Name": "7f", - "RegionID": 7, - "HostName": "derp7f.tailscale.com", - "IPv4": "172.238.6.34", - "IPv6": "2600:3c18::2000:acff:fe8e:3ed5", - "CanPort80": true - }, - { - "Name": "7h", - "RegionID": 7, - "HostName": "derp7h.tailscale.com", - "IPv4": "172.237.28.183", - "IPv6": "2600:3c18::2000:b1ff:fea9:4560", - "CanPort80": true - }, - { - "Name": "7e", - "RegionID": 7, - "HostName": "derp7e.tailscale.com", - "IPv4": "172.238.6.180", - "IPv6": "2600:3c18::2000:60ff:fe0f:6e83", - "STUNOnly": true, - "CanPort80": true - } - ] - }, - "8": { - "RegionID": 8, - "RegionCode": "lhr", - "RegionName": "London", - "Latitude": 51.5072, - "Longitude": 0.1276, - "Nodes": [ - { - "Name": "8f", - "RegionID": 8, - "HostName": "derp8f.tailscale.com", - "IPv4": "176.58.88.183", - "IPv6": "2a00:dd80:3a::dfa", - "CanPort80": true - }, - { - "Name": "8g", - "RegionID": 8, - "HostName": "derp8g.tailscale.com", - "IPv4": "176.58.92.254", - "IPv6": "2a00:dd80:3a::ed", - "CanPort80": true - }, - { - "Name": "8e", - "RegionID": 8, - "HostName": "derp8e.tailscale.com", - "IPv4": "176.58.92.144", - "IPv6": "2a00:dd80:3a::b33", - "CanPort80": true - } - ] - }, - "9": { - "RegionID": 9, - "RegionCode": "dfw", - "RegionName": "Dallas", - "Latitude": 32.779167, - "Longitude": -96.808889, - "Nodes": [ - { - "Name": "9e", - "RegionID": 9, - "HostName": "derp9e.tailscale.com", - "IPv4": "192.73.248.83", - "IPv6": "2607:f740:100::359", - "CanPort80": true - }, - { - "Name": "9f", - "RegionID": 9, - "HostName": "derp9f.tailscale.com", - "IPv4": "209.177.156.197", - "IPv6": "2607:f740:100::cad", - "CanPort80": true - }, - { - "Name": "9d", - "RegionID": 9, - "HostName": "derp9d.tailscale.com", - "IPv4": "209.177.156.94", - "IPv6": "2607:f740:100::c05", - "CanPort80": true - } - ] - } - } - }, - "DisplayMessages": null, - "TKAEnabled": false, - "TKAHead": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", - "Domain": "kratail2tid@passkey", - "DomainAuditLogID": "", - "UserProfiles": { - "50590507314324": { - "ID": 50590507314324, - "LoginName": "router-a.tail78f774.ts.net", - "DisplayName": "router-a" - } - } + "PacketFilterRules": null } }, "router-b": { - "commands": { - "packet_filter_rules": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/router-b/tailscaled.sock debug localapi POST debug-packet-filter-rules", - "packet_filter_matches": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/router-b/tailscaled.sock debug localapi POST debug-packet-filter-matches" - }, "packet_filter_rules": null, - "packet_filter_matches": [], - "whois": { - "100.124.195.93": { - "peer_name": "exit-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/router-b/tailscaled.sock whois --json 100.124.195.93", - "response": null - }, - "100.116.18.24": { - "peer_name": "exit-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/router-b/tailscaled.sock whois --json 100.116.18.24", - "response": null - }, - "100.85.66.106": { - "peer_name": "exit-node", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/router-b/tailscaled.sock whois --json 100.85.66.106", - "response": null - }, - "100.107.162.14": { - "peer_name": "group-a-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/router-b/tailscaled.sock whois --json 100.107.162.14", - "response": null - }, - "100.77.135.18": { - "peer_name": "group-b-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/router-b/tailscaled.sock whois --json 100.77.135.18", - "response": null - }, - "100.105.127.107": { - "peer_name": "multi-exit-router", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/router-b/tailscaled.sock whois --json 100.105.127.107", - "response": null - }, - "100.109.43.124": { - "peer_name": "router-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/router-b/tailscaled.sock whois --json 100.109.43.124", - "response": null - }, - "100.92.142.61": { - "peer_name": "subnet-router", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/router-b/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/router-b/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/router-b/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/router-b/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/router-b/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/router-b/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/router-b/tailscaled.sock whois --json 100.90.199.68", - "response": null - } - }, "netmap": { - "SelfNode": { - "ID": 1399889648409786, - "StableID": "nPHvXBj1wB11CNTRL", - "Name": "router-b.tail78f774.ts.net.", - "User": 1399889648409786, - "Key": "nodekey:4e6d3473c516cea37bcefdf4368932c623fd91c24aee1aacc27ca8165a41ac7a", - "DiscoKey": "discokey:dd5532635b8e3ddf25186e36671c16dd17c005c8b6a6862f4b5cc4e4f459e705", - "Addresses": ["100.65.172.123/32", "fd7a:115c:a1e0::5a37:ac7c/128"], - "AllowedIPs": ["100.65.172.123/32", "fd7a:115c:a1e0::5a37:ac7c/128", "10.55.0.0/16"], - "Endpoints": ["77.164.248.136:35931", "10.65.0.27:35931", "172.17.0.1:35931"], - "Hostinfo": { - "Hostname": "router-b", - "RoutableIPs": ["10.55.0.0/16"], - "RequestTags": ["tag:router-b"], - "Services": [ - { "Proto": "peerapi4", "Port": 58804 }, - { "Proto": "peerapi6", "Port": 58804 }, - { "Proto": "peerapi-dns-proxy", "Port": 1 } - ] - }, - "Created": "2026-03-28T10:38:15.42735258Z", - "Tags": ["tag:router-b"], - "PrimaryRoutes": ["10.55.0.0/16"], - "MachineAuthorized": true, - "CapMap": { - "https://tailscale.com/cap/file-sharing": null, - "https://tailscale.com/cap/is-owner": null, - "https://tailscale.com/cap/ssh": null, - "https://tailscale.com/cap/tailnet-lock": null, - "probe-udp-lifetime": null, - "ssh-behavior-v1": null, - "ssh-env-vars": null, - "store-appc-routes": null, - "tailnet-display-name": ["kratail2tid@passkey"] - }, - "ComputedName": "router-b", - "ComputedNameWithHost": "router-b" - }, - "AllCaps": [ - "https://tailscale.com/cap/is-owner", - "https://tailscale.com/cap/ssh", - "https://tailscale.com/cap/tailnet-lock", - "https://tailscale.com/cap/file-sharing", - "probe-udp-lifetime", - "store-appc-routes", - "ssh-behavior-v1", - "ssh-env-vars", - "tailnet-display-name" - ], - "NodeKey": "nodekey:4e6d3473c516cea37bcefdf4368932c623fd91c24aee1aacc27ca8165a41ac7a", - "MachineKey": "mkey:d040ca033391d3dedae7b2ad7ec3334646cda7aeca501780bdaa37addec3c228", "Peers": [], - "DNS": { - "Routes": { - "tail78f774.ts.net.": null, - "ts.net.": [{ "Addr": "199.247.155.53" }, { "Addr": "2620:111:8007::53" }] - }, - "Domains": ["tail78f774.ts.net"], - "Proxied": true, - "ExitNodeFilteredSet": [".ts.net", ".tailscale.net"] - }, - "PacketFilter": [], - "PacketFilterRules": null, - "SSHPolicy": { "rules": [] }, - "CollectServices": false, - "DERPMap": { - "Regions": { - "1": { - "RegionID": 1, - "RegionCode": "nyc", - "RegionName": "New York City", - "Latitude": 40.7128, - "Longitude": -74.006, - "Nodes": [ - { - "Name": "1h", - "RegionID": 1, - "HostName": "derp1h.tailscale.com", - "IPv4": "199.38.181.93", - "IPv6": "2607:f740:f::afd", - "CanPort80": true - }, - { - "Name": "1g", - "RegionID": 1, - "HostName": "derp1g.tailscale.com", - "IPv4": "209.177.145.120", - "IPv6": "2607:f740:f::3eb", - "CanPort80": true - }, - { - "Name": "1i", - "RegionID": 1, - "HostName": "derp1i.tailscale.com", - "IPv4": "199.38.181.103", - "IPv6": "2607:f740:f::e19", - "CanPort80": true - }, - { - "Name": "1f", - "RegionID": 1, - "HostName": "derp1f.tailscale.com", - "IPv4": "199.38.181.104", - "IPv6": "2607:f740:f::bc", - "CanPort80": true - } - ] - }, - "10": { - "RegionID": 10, - "RegionCode": "sea", - "RegionName": "Seattle", - "Latitude": 47.609722, - "Longitude": -122.333056, - "Nodes": [ - { - "Name": "10c", - "RegionID": 10, - "HostName": "derp10c.tailscale.com", - "IPv4": "192.73.240.121", - "IPv6": "2607:f740:14::40c", - "CanPort80": true - }, - { - "Name": "10d", - "RegionID": 10, - "HostName": "derp10d.tailscale.com", - "IPv4": "192.73.240.132", - "IPv6": "2607:f740:14::500", - "CanPort80": true - }, - { - "Name": "10b", - "RegionID": 10, - "HostName": "derp10b.tailscale.com", - "IPv4": "192.73.240.161", - "IPv6": "2607:f740:14::61c", - "CanPort80": true - } - ] - }, - "11": { - "RegionID": 11, - "RegionCode": "sao", - "RegionName": "São Paulo", - "Latitude": -23.55, - "Longitude": -46.633333, - "Nodes": [ - { - "Name": "11f", - "RegionID": 11, - "HostName": "derp11f.tailscale.com", - "IPv4": "172.237.61.197", - "IPv6": "2600:3c0d::2000:3bff:fe44:6166", - "CanPort80": true - }, - { - "Name": "11g", - "RegionID": 11, - "HostName": "derp11g.tailscale.com", - "IPv4": "172.237.61.190", - "IPv6": "2600:3c0d::2000:62ff:febe:2e67", - "CanPort80": true - }, - { - "Name": "11e", - "RegionID": 11, - "HostName": "derp11e.tailscale.com", - "IPv4": "172.237.61.194", - "IPv6": "2600:3c0d::2000:d2ff:fe43:1790", - "CanPort80": true - } - ] - }, - "12": { - "RegionID": 12, - "RegionCode": "ord", - "RegionName": "Chicago", - "Latitude": 41.881944, - "Longitude": -87.627778, - "Nodes": [ - { - "Name": "12e", - "RegionID": 12, - "HostName": "derp12e.tailscale.com", - "IPv4": "209.177.158.15", - "IPv6": "2607:f740:e::b17", - "CanPort80": true - }, - { - "Name": "12f", - "RegionID": 12, - "HostName": "derp12f.tailscale.com", - "IPv4": "199.38.182.118", - "IPv6": "2607:f740:e::4c8", - "CanPort80": true - }, - { - "Name": "12d", - "RegionID": 12, - "HostName": "derp12d.tailscale.com", - "IPv4": "209.177.158.246", - "IPv6": "2607:f740:e::811", - "CanPort80": true - } - ] - }, - "13": { - "RegionID": 13, - "RegionCode": "den", - "RegionName": "Denver", - "Latitude": 39.7392, - "Longitude": -104.9849, - "Nodes": [ - { - "Name": "13c", - "RegionID": 13, - "HostName": "derp13c.tailscale.com", - "IPv4": "192.73.242.28", - "IPv6": "2607:f740:16::5c", - "CanPort80": true - }, - { - "Name": "13d", - "RegionID": 13, - "HostName": "derp13d.tailscale.com", - "IPv4": "192.73.242.204", - "IPv6": "2607:f740:16::c23", - "CanPort80": true - }, - { - "Name": "13b", - "RegionID": 13, - "HostName": "derp13b.tailscale.com", - "IPv4": "192.73.242.187", - "IPv6": "2607:f740:16::640", - "CanPort80": true - } - ] - }, - "14": { - "RegionID": 14, - "RegionCode": "ams", - "RegionName": "Amsterdam", - "Latitude": 52.372778, - "Longitude": 4.893611, - "Nodes": [ - { - "Name": "14c", - "RegionID": 14, - "HostName": "derp14c.tailscale.com", - "IPv4": "176.58.93.147", - "IPv6": "2a00:dd80:3c::b09", - "CanPort80": true - }, - { - "Name": "14d", - "RegionID": 14, - "HostName": "derp14d.tailscale.com", - "IPv4": "176.58.93.154", - "IPv6": "2a00:dd80:3c::3d5", - "CanPort80": true - }, - { - "Name": "14b", - "RegionID": 14, - "HostName": "derp14b.tailscale.com", - "IPv4": "176.58.93.248", - "IPv6": "2a00:dd80:3c::807", - "CanPort80": true - } - ] - }, - "15": { - "RegionID": 15, - "RegionCode": "jnb", - "RegionName": "Johannesburg", - "Latitude": -26.204444, - "Longitude": 28.045556, - "Nodes": [ - { - "Name": "15c", - "RegionID": 15, - "HostName": "derp15c.tailscale.com", - "IPv4": "102.67.165.185", - "IPv6": "2c0f:edb0:0:10::b59", - "CanPort80": true - }, - { - "Name": "15d", - "RegionID": 15, - "HostName": "derp15d.tailscale.com", - "IPv4": "102.67.165.36", - "IPv6": "2c0f:edb0:0:10::599", - "CanPort80": true - }, - { - "Name": "15b", - "RegionID": 15, - "HostName": "derp15b.tailscale.com", - "IPv4": "102.67.165.90", - "IPv6": "2c0f:edb0:0:10::963", - "CanPort80": true - } - ] - }, - "16": { - "RegionID": 16, - "RegionCode": "mia", - "RegionName": "Miami", - "Latitude": 25.78, - "Longitude": -80.21, - "Nodes": [ - { - "Name": "16c", - "RegionID": 16, - "HostName": "derp16c.tailscale.com", - "IPv4": "192.73.243.229", - "IPv6": "2607:f740:17::4e4", - "CanPort80": true - }, - { - "Name": "16d", - "RegionID": 16, - "HostName": "derp16d.tailscale.com", - "IPv4": "192.73.243.141", - "IPv6": "2607:f740:17::475", - "CanPort80": true - }, - { - "Name": "16b", - "RegionID": 16, - "HostName": "derp16b.tailscale.com", - "IPv4": "192.73.243.135", - "IPv6": "2607:f740:17::476", - "CanPort80": true - } - ] - }, - "17": { - "RegionID": 17, - "RegionCode": "lax", - "RegionName": "Los Angeles", - "Latitude": 34.05, - "Longitude": -118.25, - "Nodes": [ - { - "Name": "17c", - "RegionID": 17, - "HostName": "derp17c.tailscale.com", - "IPv4": "208.111.40.12", - "IPv6": "2607:f740:c::10", - "CanPort80": true - }, - { - "Name": "17d", - "RegionID": 17, - "HostName": "derp17d.tailscale.com", - "IPv4": "208.111.40.216", - "IPv6": "2607:f740:c::e1b", - "CanPort80": true - }, - { - "Name": "17b", - "RegionID": 17, - "HostName": "derp17b.tailscale.com", - "IPv4": "192.73.244.245", - "IPv6": "2607:f740:c::646", - "CanPort80": true - } - ] - }, - "18": { - "RegionID": 18, - "RegionCode": "par", - "RegionName": "Paris", - "Latitude": 48.856667, - "Longitude": 2.352222, - "Nodes": [ - { - "Name": "18c", - "RegionID": 18, - "HostName": "derp18c.tailscale.com", - "IPv4": "176.58.90.207", - "IPv6": "2a00:dd80:3e::c19", - "CanPort80": true - }, - { - "Name": "18d", - "RegionID": 18, - "HostName": "derp18d.tailscale.com", - "IPv4": "176.58.90.104", - "IPv6": "2a00:dd80:3e::f2e", - "CanPort80": true - }, - { - "Name": "18b", - "RegionID": 18, - "HostName": "derp18b.tailscale.com", - "IPv4": "176.58.90.147", - "IPv6": "2a00:dd80:3e::363", - "CanPort80": true - } - ] - }, - "19": { - "RegionID": 19, - "RegionCode": "mad", - "RegionName": "Madrid", - "Latitude": 40.416944, - "Longitude": -3.703333, - "Nodes": [ - { - "Name": "19c", - "RegionID": 19, - "HostName": "derp19c.tailscale.com", - "IPv4": "45.159.97.61", - "IPv6": "2a00:dd80:14:10::20", - "CanPort80": true - }, - { - "Name": "19d", - "RegionID": 19, - "HostName": "derp19d.tailscale.com", - "IPv4": "45.159.97.233", - "IPv6": "2a00:dd80:14:10::34a", - "CanPort80": true - }, - { - "Name": "19b", - "RegionID": 19, - "HostName": "derp19b.tailscale.com", - "IPv4": "45.159.97.144", - "IPv6": "2a00:dd80:14:10::335", - "CanPort80": true - } - ] - }, - "2": { - "RegionID": 2, - "RegionCode": "sfo", - "RegionName": "San Francisco", - "Latitude": 37.7775, - "Longitude": -122.416389, - "Nodes": [ - { - "Name": "2e", - "RegionID": 2, - "HostName": "derp2e.tailscale.com", - "IPv4": "192.73.252.134", - "IPv6": "2607:f740:0:3f::44c", - "CanPort80": true - }, - { - "Name": "2f", - "RegionID": 2, - "HostName": "derp2f.tailscale.com", - "IPv4": "208.111.34.178", - "IPv6": "2607:f740:0:3f::f4", - "CanPort80": true - }, - { - "Name": "2d", - "RegionID": 2, - "HostName": "derp2d.tailscale.com", - "IPv4": "192.73.252.65", - "IPv6": "2607:f740:0:3f::287", - "CanPort80": true - } - ] - }, - "20": { - "RegionID": 20, - "RegionCode": "hkg", - "RegionName": "Hong Kong", - "Latitude": 22.3193, - "Longitude": 114.1694, - "Nodes": [ - { - "Name": "20c", - "RegionID": 20, - "HostName": "derp20c.tailscale.com", - "IPv4": "205.147.105.30", - "IPv6": "2403:2500:8000:1::5fb", - "CanPort80": true - }, - { - "Name": "20d", - "RegionID": 20, - "HostName": "derp20d.tailscale.com", - "IPv4": "205.147.105.78", - "IPv6": "2403:2500:8000:1::e9a", - "CanPort80": true - }, - { - "Name": "20b", - "RegionID": 20, - "HostName": "derp20b.tailscale.com", - "IPv4": "103.6.84.152", - "IPv6": "2403:2500:8000:1::ef6", - "CanPort80": true - } - ] - }, - "21": { - "RegionID": 21, - "RegionCode": "tor", - "RegionName": "Toronto", - "Latitude": 43.741667, - "Longitude": -79.373333, - "Nodes": [ - { - "Name": "21c", - "RegionID": 21, - "HostName": "derp21c.tailscale.com", - "IPv4": "162.248.221.215", - "IPv6": "2607:f740:50::f10", - "CanPort80": true - }, - { - "Name": "21d", - "RegionID": 21, - "HostName": "derp21d.tailscale.com", - "IPv4": "162.248.221.248", - "IPv6": "2607:f740:50::ca4", - "CanPort80": true - }, - { - "Name": "21b", - "RegionID": 21, - "HostName": "derp21b.tailscale.com", - "IPv4": "162.248.221.199", - "IPv6": "2607:f740:50::1d1", - "CanPort80": true - } - ] - }, - "22": { - "RegionID": 22, - "RegionCode": "waw", - "RegionName": "Warsaw", - "Latitude": 52.23, - "Longitude": 21.011111, - "Nodes": [ - { - "Name": "22c", - "RegionID": 22, - "HostName": "derp22c.tailscale.com", - "IPv4": "45.159.98.253", - "IPv6": "2a00:dd80:40:100::3f", - "CanPort80": true - }, - { - "Name": "22d", - "RegionID": 22, - "HostName": "derp22d.tailscale.com", - "IPv4": "45.159.98.145", - "IPv6": "2a00:dd80:40:100::211", - "CanPort80": true - }, - { - "Name": "22b", - "RegionID": 22, - "HostName": "derp22b.tailscale.com", - "IPv4": "45.159.98.196", - "IPv6": "2a00:dd80:40:100::316", - "CanPort80": true - } - ] - }, - "23": { - "RegionID": 23, - "RegionCode": "dbi", - "RegionName": "Dubai", - "Latitude": 25.263056, - "Longitude": 55.297222, - "Nodes": [ - { - "Name": "23c", - "RegionID": 23, - "HostName": "derp23c.tailscale.com", - "IPv4": "185.34.3.207", - "IPv6": "2a00:dd80:3f:100::a50", - "CanPort80": true - }, - { - "Name": "23d", - "RegionID": 23, - "HostName": "derp23d.tailscale.com", - "IPv4": "185.34.3.75", - "IPv6": "2a00:dd80:3f:100::97e", - "CanPort80": true - }, - { - "Name": "23b", - "RegionID": 23, - "HostName": "derp23b.tailscale.com", - "IPv4": "185.34.3.232", - "IPv6": "2a00:dd80:3f:100::76f", - "CanPort80": true - } - ] - }, - "24": { - "RegionID": 24, - "RegionCode": "hnl", - "RegionName": "Honolulu", - "Latitude": 21.306944, - "Longitude": -157.858333, - "Nodes": [ - { - "Name": "24c", - "RegionID": 24, - "HostName": "derp24c.tailscale.com", - "IPv4": "208.83.233.233", - "IPv6": "2001:19f0:c000:c591:5400:04ff:fe26:2c5f", - "CanPort80": true - }, - { - "Name": "24d", - "RegionID": 24, - "HostName": "derp24d.tailscale.com", - "IPv4": "208.72.155.133", - "IPv6": "2001:19f0:c000:c564:5400:04ff:fe26:2ba8", - "CanPort80": true - }, - { - "Name": "24b", - "RegionID": 24, - "HostName": "derp24b.tailscale.com", - "IPv4": "208.83.234.151", - "IPv6": "2001:19f0:c000:c586:5400:04ff:fe26:2ba6", - "CanPort80": true - } - ] - }, - "25": { - "RegionID": 25, - "RegionCode": "nai", - "RegionName": "Nairobi", - "Latitude": -1.286389, - "Longitude": 36.817222, - "Nodes": [ - { - "Name": "25c", - "RegionID": 25, - "HostName": "derp25c.tailscale.com", - "IPv4": "102.67.167.37", - "IPv6": "2c0f:edb0:2000:1::2c7", - "CanPort80": true - }, - { - "Name": "25d", - "RegionID": 25, - "HostName": "derp25d.tailscale.com", - "IPv4": "102.67.167.188", - "IPv6": "2c0f:edb0:2000:1::188", - "CanPort80": true - }, - { - "Name": "25b", - "RegionID": 25, - "HostName": "derp25b.tailscale.com", - "IPv4": "102.67.167.245", - "IPv6": "2c0f:edb0:2000:1::2e9", - "CanPort80": true - } - ] - }, - "26": { - "RegionID": 26, - "RegionCode": "nue", - "RegionName": "Nuremberg", - "Latitude": 49.453889, - "Longitude": 11.0775, - "Nodes": [ - { - "Name": "26c", - "RegionID": 26, - "HostName": "derp26c.tailscale.com", - "IPv4": "49.12.193.137", - "IPv6": "2a01:4f8:1c1c:5c70::1", - "CanPort80": true - }, - { - "Name": "26d", - "RegionID": 26, - "HostName": "derp26d.tailscale.com", - "IPv4": "49.13.204.141", - "IPv6": "2a01:4f8:1c0c:7d06::1", - "CanPort80": true - }, - { - "Name": "26b", - "RegionID": 26, - "HostName": "derp26b.tailscale.com", - "IPv4": "167.235.72.200", - "IPv6": "2a01:4f8:1c1c:47b6::1", - "CanPort80": true - } - ] - }, - "27": { - "RegionID": 27, - "RegionCode": "iad", - "RegionName": "Ashburn", - "Latitude": 39.03, - "Longitude": -77.471111, - "Nodes": [ - { - "Name": "27d", - "RegionID": 27, - "HostName": "derp27d.tailscale.com", - "IPv4": "178.156.152.106", - "IPv6": "2a01:4ff:f0:3c8e::1", - "CanPort80": true - }, - { - "Name": "27c", - "RegionID": 27, - "HostName": "derp27c.tailscale.com", - "IPv4": "178.156.152.91", - "IPv6": "2a01:4ff:f0:3913::1", - "CanPort80": true - }, - { - "Name": "27e", - "RegionID": 27, - "HostName": "derp27e.tailscale.com", - "IPv4": "178.156.134.232", - "IPv6": "2a01:4ff:f0:28d4::1", - "CanPort80": true - }, - { - "Name": "27b", - "RegionID": 27, - "HostName": "derp27b.tailscale.com", - "IPv4": "5.161.218.233", - "IPv6": "2a01:4ff:f0:3db9::1", - "CanPort80": true - } - ] - }, - "28": { - "RegionID": 28, - "RegionCode": "hel", - "RegionName": "Helsinki", - "Latitude": 60.170833, - "Longitude": 24.9375, - "Nodes": [ - { - "Name": "28c", - "RegionID": 28, - "HostName": "derp28c.tailscale.com", - "IPv4": "95.217.2.165", - "IPv6": "2a01:4f9:c012:cd74::1", - "CanPort80": true - }, - { - "Name": "28d", - "RegionID": 28, - "HostName": "derp28d.tailscale.com", - "IPv4": "157.180.28.32", - "IPv6": "2a01:4f9:c012:2e5b::1", - "CanPort80": true - }, - { - "Name": "28b", - "RegionID": 28, - "HostName": "derp28b.tailscale.com", - "IPv4": "65.109.143.62", - "IPv6": "2a01:4f9:c012:d55c::1", - "CanPort80": true - } - ] - }, - "3": { - "RegionID": 3, - "RegionCode": "sin", - "RegionName": "Singapore", - "Latitude": 1.3521, - "Longitude": 103.8198, - "Nodes": [ - { - "Name": "3g", - "RegionID": 3, - "HostName": "derp3g.tailscale.com", - "IPv4": "172.237.72.79", - "IPv6": "2600:3c15::2000:adff:fe08:6fab", - "CanPort80": true - }, - { - "Name": "3f", - "RegionID": 3, - "HostName": "derp3f.tailscale.com", - "IPv4": "172.237.72.8", - "IPv6": "2600:3c15::2000:53ff:fe48:a668", - "CanPort80": true - }, - { - "Name": "3h", - "RegionID": 3, - "HostName": "derp3h.tailscale.com", - "IPv4": "172.237.66.30", - "IPv6": "2600:3c15::2000:3dff:fe44:50aa", - "CanPort80": true - }, - { - "Name": "3e", - "RegionID": 3, - "HostName": "derp3e.tailscale.com", - "IPv4": "172.237.72.43", - "IPv6": "2600:3c15::2000:6cff:fee4:d799", - "CanPort80": true - } - ] - }, - "4": { - "RegionID": 4, - "RegionCode": "fra", - "RegionName": "Frankfurt", - "Latitude": 50.1109, - "Longitude": 8.6821, - "Nodes": [ - { - "Name": "4h", - "RegionID": 4, - "HostName": "derp4h.tailscale.com", - "IPv4": "185.40.234.77", - "IPv6": "2a00:dd80:20::bcf", - "CanPort80": true - }, - { - "Name": "4g", - "RegionID": 4, - "HostName": "derp4g.tailscale.com", - "IPv4": "185.40.234.113", - "IPv6": "2a00:dd80:20::8f", - "CanPort80": true - }, - { - "Name": "4i", - "RegionID": 4, - "HostName": "derp4i.tailscale.com", - "IPv4": "185.40.234.53", - "IPv6": "2a00:dd80:20::8a6", - "CanPort80": true - }, - { - "Name": "4f", - "RegionID": 4, - "HostName": "derp4f.tailscale.com", - "IPv4": "185.40.234.219", - "IPv6": "2a00:dd80:20::a25", - "CanPort80": true - } - ] - }, - "5": { - "RegionID": 5, - "RegionCode": "syd", - "RegionName": "Sydney", - "Latitude": -33.867778, - "Longitude": 151.21, - "Nodes": [ - { - "Name": "5f", - "RegionID": 5, - "HostName": "derp5f.tailscale.com", - "IPv4": "172.105.166.103", - "IPv6": "2400:8907::2000:ccff:fe1f:80da", - "CanPort80": true - }, - { - "Name": "5g", - "RegionID": 5, - "HostName": "derp5g.tailscale.com", - "IPv4": "172.105.169.57", - "IPv6": "2400:8907::2000:2fff:fea7:57f4", - "CanPort80": true - }, - { - "Name": "5e", - "RegionID": 5, - "HostName": "derp5e.tailscale.com", - "IPv4": "172.105.179.230", - "IPv6": "2400:8907::2000:ceff:fe8d:4f4e", - "CanPort80": true - } - ] - }, - "6": { - "RegionID": 6, - "RegionCode": "blr", - "RegionName": "Bengaluru", - "Latitude": 12.9716, - "Longitude": 77.5946, - "Nodes": [ - { - "Name": "6a", - "RegionID": 6, - "HostName": "derp6.tailscale.com", - "IPv4": "68.183.90.120", - "IPv6": "2400:6180:100:d0::982:d001", - "CanPort80": true - } - ] - }, - "7": { - "RegionID": 7, - "RegionCode": "tok", - "RegionName": "Tokyo", - "Latitude": 35.6764, - "Longitude": 139.65, - "Nodes": [ - { - "Name": "7g", - "RegionID": 7, - "HostName": "derp7g.tailscale.com", - "IPv4": "172.238.6.179", - "IPv6": "2600:3c18::2000:3fff:fe80:3ebd", - "CanPort80": true - }, - { - "Name": "7f", - "RegionID": 7, - "HostName": "derp7f.tailscale.com", - "IPv4": "172.238.6.34", - "IPv6": "2600:3c18::2000:acff:fe8e:3ed5", - "CanPort80": true - }, - { - "Name": "7h", - "RegionID": 7, - "HostName": "derp7h.tailscale.com", - "IPv4": "172.237.28.183", - "IPv6": "2600:3c18::2000:b1ff:fea9:4560", - "CanPort80": true - }, - { - "Name": "7e", - "RegionID": 7, - "HostName": "derp7e.tailscale.com", - "IPv4": "172.238.6.180", - "IPv6": "2600:3c18::2000:60ff:fe0f:6e83", - "STUNOnly": true, - "CanPort80": true - } - ] - }, - "8": { - "RegionID": 8, - "RegionCode": "lhr", - "RegionName": "London", - "Latitude": 51.5072, - "Longitude": 0.1276, - "Nodes": [ - { - "Name": "8f", - "RegionID": 8, - "HostName": "derp8f.tailscale.com", - "IPv4": "176.58.88.183", - "IPv6": "2a00:dd80:3a::dfa", - "CanPort80": true - }, - { - "Name": "8g", - "RegionID": 8, - "HostName": "derp8g.tailscale.com", - "IPv4": "176.58.92.254", - "IPv6": "2a00:dd80:3a::ed", - "CanPort80": true - }, - { - "Name": "8e", - "RegionID": 8, - "HostName": "derp8e.tailscale.com", - "IPv4": "176.58.92.144", - "IPv6": "2a00:dd80:3a::b33", - "CanPort80": true - } - ] - }, - "9": { - "RegionID": 9, - "RegionCode": "dfw", - "RegionName": "Dallas", - "Latitude": 32.779167, - "Longitude": -96.808889, - "Nodes": [ - { - "Name": "9e", - "RegionID": 9, - "HostName": "derp9e.tailscale.com", - "IPv4": "192.73.248.83", - "IPv6": "2607:f740:100::359", - "CanPort80": true - }, - { - "Name": "9f", - "RegionID": 9, - "HostName": "derp9f.tailscale.com", - "IPv4": "209.177.156.197", - "IPv6": "2607:f740:100::cad", - "CanPort80": true - }, - { - "Name": "9d", - "RegionID": 9, - "HostName": "derp9d.tailscale.com", - "IPv4": "209.177.156.94", - "IPv6": "2607:f740:100::c05", - "CanPort80": true - } - ] - } - } - }, - "DisplayMessages": null, - "TKAEnabled": false, - "TKAHead": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", - "Domain": "kratail2tid@passkey", - "DomainAuditLogID": "", - "UserProfiles": { - "1399889648409786": { - "ID": 1399889648409786, - "LoginName": "router-b.tail78f774.ts.net", - "DisplayName": "router-b" - } - } + "PacketFilterRules": 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.124.195.93": { - "peer_name": "exit-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/subnet-router/tailscaled.sock whois --json 100.124.195.93", - "response": null - }, - "100.116.18.24": { - "peer_name": "exit-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/subnet-router/tailscaled.sock whois --json 100.116.18.24", - "response": null - }, - "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.107.162.14": { - "peer_name": "group-a-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/subnet-router/tailscaled.sock whois --json 100.107.162.14", - "response": null - }, - "100.77.135.18": { - "peer_name": "group-b-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/subnet-router/tailscaled.sock whois --json 100.77.135.18", - "response": null - }, - "100.105.127.107": { - "peer_name": "multi-exit-router", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/subnet-router/tailscaled.sock whois --json 100.105.127.107", - "response": null - }, - "100.109.43.124": { - "peer_name": "router-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/subnet-router/tailscaled.sock whois --json 100.109.43.124", - "response": null - }, - "100.65.172.123": { - "peer_name": "router-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/subnet-router/tailscaled.sock whois --json 100.65.172.123", - "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 - } - }, "netmap": { - "SelfNode": { - "ID": 7489538288452506, - "StableID": "nTPEqJU2V121CNTRL", - "Name": "subnet-router.tail78f774.ts.net.", - "User": 7489538288452506, - "Key": "nodekey:887ae2351c09c3b952f1f42bdac4095ec396ebf15824a746e4193c003e9c8e3c", - "DiscoKey": "discokey:9e3167ceaf53735a2fcaa7d3a85ad3a6118274deb448326d594849275014cc56", - "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:58597", "10.65.0.27:58597", "172.17.0.1:58597"], - "Hostinfo": { - "Hostname": "subnet-router", - "RoutableIPs": ["10.33.0.0/16"], - "RequestTags": ["tag:router"], - "Services": [ - { "Proto": "peerapi4", "Port": 63250 }, - { "Proto": "peerapi6", "Port": 63250 }, - { "Proto": "peerapi-dns-proxy", "Port": 1 } - ] - }, - "Created": "2026-02-23T00:13:15.731478784Z", - "Tags": ["tag:router"], - "MachineAuthorized": true, - "CapMap": { - "https://tailscale.com/cap/file-sharing": null, - "https://tailscale.com/cap/is-owner": null, - "https://tailscale.com/cap/ssh": null, - "https://tailscale.com/cap/tailnet-lock": null, - "probe-udp-lifetime": null, - "ssh-behavior-v1": null, - "ssh-env-vars": null, - "store-appc-routes": null, - "tailnet-display-name": ["kratail2tid@passkey"] - }, - "ComputedName": "subnet-router", - "ComputedNameWithHost": "subnet-router" - }, - "AllCaps": [ - "https://tailscale.com/cap/ssh", - "probe-udp-lifetime", - "store-appc-routes", - "ssh-behavior-v1", - "ssh-env-vars", - "https://tailscale.com/cap/is-owner", - "https://tailscale.com/cap/tailnet-lock", - "tailnet-display-name", - "https://tailscale.com/cap/file-sharing" - ], - "NodeKey": "nodekey:887ae2351c09c3b952f1f42bdac4095ec396ebf15824a746e4193c003e9c8e3c", - "MachineKey": "mkey:324efa54cc51a7b4f266f6a236904c755d32b6e547a76ad3c1d1e9d348de682a", "Peers": [], - "DNS": { - "Routes": { - "tail78f774.ts.net.": null, - "ts.net.": [{ "Addr": "199.247.155.53" }, { "Addr": "2620:111:8007::53" }] - }, - "Domains": ["tail78f774.ts.net"], - "Proxied": true, - "ExitNodeFilteredSet": [".ts.net", ".tailscale.net"] - }, - "PacketFilter": [], - "PacketFilterRules": null, - "SSHPolicy": { "rules": [] }, - "CollectServices": false, - "DERPMap": { - "Regions": { - "1": { - "RegionID": 1, - "RegionCode": "nyc", - "RegionName": "New York City", - "Latitude": 40.7128, - "Longitude": -74.006, - "Nodes": [ - { - "Name": "1h", - "RegionID": 1, - "HostName": "derp1h.tailscale.com", - "IPv4": "199.38.181.93", - "IPv6": "2607:f740:f::afd", - "CanPort80": true - }, - { - "Name": "1g", - "RegionID": 1, - "HostName": "derp1g.tailscale.com", - "IPv4": "209.177.145.120", - "IPv6": "2607:f740:f::3eb", - "CanPort80": true - }, - { - "Name": "1i", - "RegionID": 1, - "HostName": "derp1i.tailscale.com", - "IPv4": "199.38.181.103", - "IPv6": "2607:f740:f::e19", - "CanPort80": true - }, - { - "Name": "1f", - "RegionID": 1, - "HostName": "derp1f.tailscale.com", - "IPv4": "199.38.181.104", - "IPv6": "2607:f740:f::bc", - "CanPort80": true - } - ] - }, - "10": { - "RegionID": 10, - "RegionCode": "sea", - "RegionName": "Seattle", - "Latitude": 47.609722, - "Longitude": -122.333056, - "Nodes": [ - { - "Name": "10c", - "RegionID": 10, - "HostName": "derp10c.tailscale.com", - "IPv4": "192.73.240.121", - "IPv6": "2607:f740:14::40c", - "CanPort80": true - }, - { - "Name": "10d", - "RegionID": 10, - "HostName": "derp10d.tailscale.com", - "IPv4": "192.73.240.132", - "IPv6": "2607:f740:14::500", - "CanPort80": true - }, - { - "Name": "10b", - "RegionID": 10, - "HostName": "derp10b.tailscale.com", - "IPv4": "192.73.240.161", - "IPv6": "2607:f740:14::61c", - "CanPort80": true - } - ] - }, - "11": { - "RegionID": 11, - "RegionCode": "sao", - "RegionName": "São Paulo", - "Latitude": -23.55, - "Longitude": -46.633333, - "Nodes": [ - { - "Name": "11f", - "RegionID": 11, - "HostName": "derp11f.tailscale.com", - "IPv4": "172.237.61.197", - "IPv6": "2600:3c0d::2000:3bff:fe44:6166", - "CanPort80": true - }, - { - "Name": "11g", - "RegionID": 11, - "HostName": "derp11g.tailscale.com", - "IPv4": "172.237.61.190", - "IPv6": "2600:3c0d::2000:62ff:febe:2e67", - "CanPort80": true - }, - { - "Name": "11e", - "RegionID": 11, - "HostName": "derp11e.tailscale.com", - "IPv4": "172.237.61.194", - "IPv6": "2600:3c0d::2000:d2ff:fe43:1790", - "CanPort80": true - } - ] - }, - "12": { - "RegionID": 12, - "RegionCode": "ord", - "RegionName": "Chicago", - "Latitude": 41.881944, - "Longitude": -87.627778, - "Nodes": [ - { - "Name": "12e", - "RegionID": 12, - "HostName": "derp12e.tailscale.com", - "IPv4": "209.177.158.15", - "IPv6": "2607:f740:e::b17", - "CanPort80": true - }, - { - "Name": "12f", - "RegionID": 12, - "HostName": "derp12f.tailscale.com", - "IPv4": "199.38.182.118", - "IPv6": "2607:f740:e::4c8", - "CanPort80": true - }, - { - "Name": "12d", - "RegionID": 12, - "HostName": "derp12d.tailscale.com", - "IPv4": "209.177.158.246", - "IPv6": "2607:f740:e::811", - "CanPort80": true - } - ] - }, - "13": { - "RegionID": 13, - "RegionCode": "den", - "RegionName": "Denver", - "Latitude": 39.7392, - "Longitude": -104.9849, - "Nodes": [ - { - "Name": "13c", - "RegionID": 13, - "HostName": "derp13c.tailscale.com", - "IPv4": "192.73.242.28", - "IPv6": "2607:f740:16::5c", - "CanPort80": true - }, - { - "Name": "13d", - "RegionID": 13, - "HostName": "derp13d.tailscale.com", - "IPv4": "192.73.242.204", - "IPv6": "2607:f740:16::c23", - "CanPort80": true - }, - { - "Name": "13b", - "RegionID": 13, - "HostName": "derp13b.tailscale.com", - "IPv4": "192.73.242.187", - "IPv6": "2607:f740:16::640", - "CanPort80": true - } - ] - }, - "14": { - "RegionID": 14, - "RegionCode": "ams", - "RegionName": "Amsterdam", - "Latitude": 52.372778, - "Longitude": 4.893611, - "Nodes": [ - { - "Name": "14c", - "RegionID": 14, - "HostName": "derp14c.tailscale.com", - "IPv4": "176.58.93.147", - "IPv6": "2a00:dd80:3c::b09", - "CanPort80": true - }, - { - "Name": "14d", - "RegionID": 14, - "HostName": "derp14d.tailscale.com", - "IPv4": "176.58.93.154", - "IPv6": "2a00:dd80:3c::3d5", - "CanPort80": true - }, - { - "Name": "14b", - "RegionID": 14, - "HostName": "derp14b.tailscale.com", - "IPv4": "176.58.93.248", - "IPv6": "2a00:dd80:3c::807", - "CanPort80": true - } - ] - }, - "15": { - "RegionID": 15, - "RegionCode": "jnb", - "RegionName": "Johannesburg", - "Latitude": -26.204444, - "Longitude": 28.045556, - "Nodes": [ - { - "Name": "15c", - "RegionID": 15, - "HostName": "derp15c.tailscale.com", - "IPv4": "102.67.165.185", - "IPv6": "2c0f:edb0:0:10::b59", - "CanPort80": true - }, - { - "Name": "15d", - "RegionID": 15, - "HostName": "derp15d.tailscale.com", - "IPv4": "102.67.165.36", - "IPv6": "2c0f:edb0:0:10::599", - "CanPort80": true - }, - { - "Name": "15b", - "RegionID": 15, - "HostName": "derp15b.tailscale.com", - "IPv4": "102.67.165.90", - "IPv6": "2c0f:edb0:0:10::963", - "CanPort80": true - } - ] - }, - "16": { - "RegionID": 16, - "RegionCode": "mia", - "RegionName": "Miami", - "Latitude": 25.78, - "Longitude": -80.21, - "Nodes": [ - { - "Name": "16c", - "RegionID": 16, - "HostName": "derp16c.tailscale.com", - "IPv4": "192.73.243.229", - "IPv6": "2607:f740:17::4e4", - "CanPort80": true - }, - { - "Name": "16d", - "RegionID": 16, - "HostName": "derp16d.tailscale.com", - "IPv4": "192.73.243.141", - "IPv6": "2607:f740:17::475", - "CanPort80": true - }, - { - "Name": "16b", - "RegionID": 16, - "HostName": "derp16b.tailscale.com", - "IPv4": "192.73.243.135", - "IPv6": "2607:f740:17::476", - "CanPort80": true - } - ] - }, - "17": { - "RegionID": 17, - "RegionCode": "lax", - "RegionName": "Los Angeles", - "Latitude": 34.05, - "Longitude": -118.25, - "Nodes": [ - { - "Name": "17c", - "RegionID": 17, - "HostName": "derp17c.tailscale.com", - "IPv4": "208.111.40.12", - "IPv6": "2607:f740:c::10", - "CanPort80": true - }, - { - "Name": "17d", - "RegionID": 17, - "HostName": "derp17d.tailscale.com", - "IPv4": "208.111.40.216", - "IPv6": "2607:f740:c::e1b", - "CanPort80": true - }, - { - "Name": "17b", - "RegionID": 17, - "HostName": "derp17b.tailscale.com", - "IPv4": "192.73.244.245", - "IPv6": "2607:f740:c::646", - "CanPort80": true - } - ] - }, - "18": { - "RegionID": 18, - "RegionCode": "par", - "RegionName": "Paris", - "Latitude": 48.856667, - "Longitude": 2.352222, - "Nodes": [ - { - "Name": "18c", - "RegionID": 18, - "HostName": "derp18c.tailscale.com", - "IPv4": "176.58.90.207", - "IPv6": "2a00:dd80:3e::c19", - "CanPort80": true - }, - { - "Name": "18d", - "RegionID": 18, - "HostName": "derp18d.tailscale.com", - "IPv4": "176.58.90.104", - "IPv6": "2a00:dd80:3e::f2e", - "CanPort80": true - }, - { - "Name": "18b", - "RegionID": 18, - "HostName": "derp18b.tailscale.com", - "IPv4": "176.58.90.147", - "IPv6": "2a00:dd80:3e::363", - "CanPort80": true - } - ] - }, - "19": { - "RegionID": 19, - "RegionCode": "mad", - "RegionName": "Madrid", - "Latitude": 40.416944, - "Longitude": -3.703333, - "Nodes": [ - { - "Name": "19c", - "RegionID": 19, - "HostName": "derp19c.tailscale.com", - "IPv4": "45.159.97.61", - "IPv6": "2a00:dd80:14:10::20", - "CanPort80": true - }, - { - "Name": "19d", - "RegionID": 19, - "HostName": "derp19d.tailscale.com", - "IPv4": "45.159.97.233", - "IPv6": "2a00:dd80:14:10::34a", - "CanPort80": true - }, - { - "Name": "19b", - "RegionID": 19, - "HostName": "derp19b.tailscale.com", - "IPv4": "45.159.97.144", - "IPv6": "2a00:dd80:14:10::335", - "CanPort80": true - } - ] - }, - "2": { - "RegionID": 2, - "RegionCode": "sfo", - "RegionName": "San Francisco", - "Latitude": 37.7775, - "Longitude": -122.416389, - "Nodes": [ - { - "Name": "2e", - "RegionID": 2, - "HostName": "derp2e.tailscale.com", - "IPv4": "192.73.252.134", - "IPv6": "2607:f740:0:3f::44c", - "CanPort80": true - }, - { - "Name": "2f", - "RegionID": 2, - "HostName": "derp2f.tailscale.com", - "IPv4": "208.111.34.178", - "IPv6": "2607:f740:0:3f::f4", - "CanPort80": true - }, - { - "Name": "2d", - "RegionID": 2, - "HostName": "derp2d.tailscale.com", - "IPv4": "192.73.252.65", - "IPv6": "2607:f740:0:3f::287", - "CanPort80": true - } - ] - }, - "20": { - "RegionID": 20, - "RegionCode": "hkg", - "RegionName": "Hong Kong", - "Latitude": 22.3193, - "Longitude": 114.1694, - "Nodes": [ - { - "Name": "20c", - "RegionID": 20, - "HostName": "derp20c.tailscale.com", - "IPv4": "205.147.105.30", - "IPv6": "2403:2500:8000:1::5fb", - "CanPort80": true - }, - { - "Name": "20d", - "RegionID": 20, - "HostName": "derp20d.tailscale.com", - "IPv4": "205.147.105.78", - "IPv6": "2403:2500:8000:1::e9a", - "CanPort80": true - }, - { - "Name": "20b", - "RegionID": 20, - "HostName": "derp20b.tailscale.com", - "IPv4": "103.6.84.152", - "IPv6": "2403:2500:8000:1::ef6", - "CanPort80": true - } - ] - }, - "21": { - "RegionID": 21, - "RegionCode": "tor", - "RegionName": "Toronto", - "Latitude": 43.741667, - "Longitude": -79.373333, - "Nodes": [ - { - "Name": "21c", - "RegionID": 21, - "HostName": "derp21c.tailscale.com", - "IPv4": "162.248.221.215", - "IPv6": "2607:f740:50::f10", - "CanPort80": true - }, - { - "Name": "21d", - "RegionID": 21, - "HostName": "derp21d.tailscale.com", - "IPv4": "162.248.221.248", - "IPv6": "2607:f740:50::ca4", - "CanPort80": true - }, - { - "Name": "21b", - "RegionID": 21, - "HostName": "derp21b.tailscale.com", - "IPv4": "162.248.221.199", - "IPv6": "2607:f740:50::1d1", - "CanPort80": true - } - ] - }, - "22": { - "RegionID": 22, - "RegionCode": "waw", - "RegionName": "Warsaw", - "Latitude": 52.23, - "Longitude": 21.011111, - "Nodes": [ - { - "Name": "22c", - "RegionID": 22, - "HostName": "derp22c.tailscale.com", - "IPv4": "45.159.98.253", - "IPv6": "2a00:dd80:40:100::3f", - "CanPort80": true - }, - { - "Name": "22d", - "RegionID": 22, - "HostName": "derp22d.tailscale.com", - "IPv4": "45.159.98.145", - "IPv6": "2a00:dd80:40:100::211", - "CanPort80": true - }, - { - "Name": "22b", - "RegionID": 22, - "HostName": "derp22b.tailscale.com", - "IPv4": "45.159.98.196", - "IPv6": "2a00:dd80:40:100::316", - "CanPort80": true - } - ] - }, - "23": { - "RegionID": 23, - "RegionCode": "dbi", - "RegionName": "Dubai", - "Latitude": 25.263056, - "Longitude": 55.297222, - "Nodes": [ - { - "Name": "23c", - "RegionID": 23, - "HostName": "derp23c.tailscale.com", - "IPv4": "185.34.3.207", - "IPv6": "2a00:dd80:3f:100::a50", - "CanPort80": true - }, - { - "Name": "23d", - "RegionID": 23, - "HostName": "derp23d.tailscale.com", - "IPv4": "185.34.3.75", - "IPv6": "2a00:dd80:3f:100::97e", - "CanPort80": true - }, - { - "Name": "23b", - "RegionID": 23, - "HostName": "derp23b.tailscale.com", - "IPv4": "185.34.3.232", - "IPv6": "2a00:dd80:3f:100::76f", - "CanPort80": true - } - ] - }, - "24": { - "RegionID": 24, - "RegionCode": "hnl", - "RegionName": "Honolulu", - "Latitude": 21.306944, - "Longitude": -157.858333, - "Nodes": [ - { - "Name": "24c", - "RegionID": 24, - "HostName": "derp24c.tailscale.com", - "IPv4": "208.83.233.233", - "IPv6": "2001:19f0:c000:c591:5400:04ff:fe26:2c5f", - "CanPort80": true - }, - { - "Name": "24d", - "RegionID": 24, - "HostName": "derp24d.tailscale.com", - "IPv4": "208.72.155.133", - "IPv6": "2001:19f0:c000:c564:5400:04ff:fe26:2ba8", - "CanPort80": true - }, - { - "Name": "24b", - "RegionID": 24, - "HostName": "derp24b.tailscale.com", - "IPv4": "208.83.234.151", - "IPv6": "2001:19f0:c000:c586:5400:04ff:fe26:2ba6", - "CanPort80": true - } - ] - }, - "25": { - "RegionID": 25, - "RegionCode": "nai", - "RegionName": "Nairobi", - "Latitude": -1.286389, - "Longitude": 36.817222, - "Nodes": [ - { - "Name": "25c", - "RegionID": 25, - "HostName": "derp25c.tailscale.com", - "IPv4": "102.67.167.37", - "IPv6": "2c0f:edb0:2000:1::2c7", - "CanPort80": true - }, - { - "Name": "25d", - "RegionID": 25, - "HostName": "derp25d.tailscale.com", - "IPv4": "102.67.167.188", - "IPv6": "2c0f:edb0:2000:1::188", - "CanPort80": true - }, - { - "Name": "25b", - "RegionID": 25, - "HostName": "derp25b.tailscale.com", - "IPv4": "102.67.167.245", - "IPv6": "2c0f:edb0:2000:1::2e9", - "CanPort80": true - } - ] - }, - "26": { - "RegionID": 26, - "RegionCode": "nue", - "RegionName": "Nuremberg", - "Latitude": 49.453889, - "Longitude": 11.0775, - "Nodes": [ - { - "Name": "26c", - "RegionID": 26, - "HostName": "derp26c.tailscale.com", - "IPv4": "49.12.193.137", - "IPv6": "2a01:4f8:1c1c:5c70::1", - "CanPort80": true - }, - { - "Name": "26d", - "RegionID": 26, - "HostName": "derp26d.tailscale.com", - "IPv4": "49.13.204.141", - "IPv6": "2a01:4f8:1c0c:7d06::1", - "CanPort80": true - }, - { - "Name": "26b", - "RegionID": 26, - "HostName": "derp26b.tailscale.com", - "IPv4": "167.235.72.200", - "IPv6": "2a01:4f8:1c1c:47b6::1", - "CanPort80": true - } - ] - }, - "27": { - "RegionID": 27, - "RegionCode": "iad", - "RegionName": "Ashburn", - "Latitude": 39.03, - "Longitude": -77.471111, - "Nodes": [ - { - "Name": "27d", - "RegionID": 27, - "HostName": "derp27d.tailscale.com", - "IPv4": "178.156.152.106", - "IPv6": "2a01:4ff:f0:3c8e::1", - "CanPort80": true - }, - { - "Name": "27c", - "RegionID": 27, - "HostName": "derp27c.tailscale.com", - "IPv4": "178.156.152.91", - "IPv6": "2a01:4ff:f0:3913::1", - "CanPort80": true - }, - { - "Name": "27e", - "RegionID": 27, - "HostName": "derp27e.tailscale.com", - "IPv4": "178.156.134.232", - "IPv6": "2a01:4ff:f0:28d4::1", - "CanPort80": true - }, - { - "Name": "27b", - "RegionID": 27, - "HostName": "derp27b.tailscale.com", - "IPv4": "5.161.218.233", - "IPv6": "2a01:4ff:f0:3db9::1", - "CanPort80": true - } - ] - }, - "28": { - "RegionID": 28, - "RegionCode": "hel", - "RegionName": "Helsinki", - "Latitude": 60.170833, - "Longitude": 24.9375, - "Nodes": [ - { - "Name": "28c", - "RegionID": 28, - "HostName": "derp28c.tailscale.com", - "IPv4": "95.217.2.165", - "IPv6": "2a01:4f9:c012:cd74::1", - "CanPort80": true - }, - { - "Name": "28d", - "RegionID": 28, - "HostName": "derp28d.tailscale.com", - "IPv4": "157.180.28.32", - "IPv6": "2a01:4f9:c012:2e5b::1", - "CanPort80": true - }, - { - "Name": "28b", - "RegionID": 28, - "HostName": "derp28b.tailscale.com", - "IPv4": "65.109.143.62", - "IPv6": "2a01:4f9:c012:d55c::1", - "CanPort80": true - } - ] - }, - "3": { - "RegionID": 3, - "RegionCode": "sin", - "RegionName": "Singapore", - "Latitude": 1.3521, - "Longitude": 103.8198, - "Nodes": [ - { - "Name": "3g", - "RegionID": 3, - "HostName": "derp3g.tailscale.com", - "IPv4": "172.237.72.79", - "IPv6": "2600:3c15::2000:adff:fe08:6fab", - "CanPort80": true - }, - { - "Name": "3f", - "RegionID": 3, - "HostName": "derp3f.tailscale.com", - "IPv4": "172.237.72.8", - "IPv6": "2600:3c15::2000:53ff:fe48:a668", - "CanPort80": true - }, - { - "Name": "3h", - "RegionID": 3, - "HostName": "derp3h.tailscale.com", - "IPv4": "172.237.66.30", - "IPv6": "2600:3c15::2000:3dff:fe44:50aa", - "CanPort80": true - }, - { - "Name": "3e", - "RegionID": 3, - "HostName": "derp3e.tailscale.com", - "IPv4": "172.237.72.43", - "IPv6": "2600:3c15::2000:6cff:fee4:d799", - "CanPort80": true - } - ] - }, - "4": { - "RegionID": 4, - "RegionCode": "fra", - "RegionName": "Frankfurt", - "Latitude": 50.1109, - "Longitude": 8.6821, - "Nodes": [ - { - "Name": "4h", - "RegionID": 4, - "HostName": "derp4h.tailscale.com", - "IPv4": "185.40.234.77", - "IPv6": "2a00:dd80:20::bcf", - "CanPort80": true - }, - { - "Name": "4g", - "RegionID": 4, - "HostName": "derp4g.tailscale.com", - "IPv4": "185.40.234.113", - "IPv6": "2a00:dd80:20::8f", - "CanPort80": true - }, - { - "Name": "4i", - "RegionID": 4, - "HostName": "derp4i.tailscale.com", - "IPv4": "185.40.234.53", - "IPv6": "2a00:dd80:20::8a6", - "CanPort80": true - }, - { - "Name": "4f", - "RegionID": 4, - "HostName": "derp4f.tailscale.com", - "IPv4": "185.40.234.219", - "IPv6": "2a00:dd80:20::a25", - "CanPort80": true - } - ] - }, - "5": { - "RegionID": 5, - "RegionCode": "syd", - "RegionName": "Sydney", - "Latitude": -33.867778, - "Longitude": 151.21, - "Nodes": [ - { - "Name": "5f", - "RegionID": 5, - "HostName": "derp5f.tailscale.com", - "IPv4": "172.105.166.103", - "IPv6": "2400:8907::2000:ccff:fe1f:80da", - "CanPort80": true - }, - { - "Name": "5g", - "RegionID": 5, - "HostName": "derp5g.tailscale.com", - "IPv4": "172.105.169.57", - "IPv6": "2400:8907::2000:2fff:fea7:57f4", - "CanPort80": true - }, - { - "Name": "5e", - "RegionID": 5, - "HostName": "derp5e.tailscale.com", - "IPv4": "172.105.179.230", - "IPv6": "2400:8907::2000:ceff:fe8d:4f4e", - "CanPort80": true - } - ] - }, - "6": { - "RegionID": 6, - "RegionCode": "blr", - "RegionName": "Bengaluru", - "Latitude": 12.9716, - "Longitude": 77.5946, - "Nodes": [ - { - "Name": "6a", - "RegionID": 6, - "HostName": "derp6.tailscale.com", - "IPv4": "68.183.90.120", - "IPv6": "2400:6180:100:d0::982:d001", - "CanPort80": true - } - ] - }, - "7": { - "RegionID": 7, - "RegionCode": "tok", - "RegionName": "Tokyo", - "Latitude": 35.6764, - "Longitude": 139.65, - "Nodes": [ - { - "Name": "7g", - "RegionID": 7, - "HostName": "derp7g.tailscale.com", - "IPv4": "172.238.6.179", - "IPv6": "2600:3c18::2000:3fff:fe80:3ebd", - "CanPort80": true - }, - { - "Name": "7f", - "RegionID": 7, - "HostName": "derp7f.tailscale.com", - "IPv4": "172.238.6.34", - "IPv6": "2600:3c18::2000:acff:fe8e:3ed5", - "CanPort80": true - }, - { - "Name": "7h", - "RegionID": 7, - "HostName": "derp7h.tailscale.com", - "IPv4": "172.237.28.183", - "IPv6": "2600:3c18::2000:b1ff:fea9:4560", - "CanPort80": true - }, - { - "Name": "7e", - "RegionID": 7, - "HostName": "derp7e.tailscale.com", - "IPv4": "172.238.6.180", - "IPv6": "2600:3c18::2000:60ff:fe0f:6e83", - "STUNOnly": true, - "CanPort80": true - } - ] - }, - "8": { - "RegionID": 8, - "RegionCode": "lhr", - "RegionName": "London", - "Latitude": 51.5072, - "Longitude": 0.1276, - "Nodes": [ - { - "Name": "8f", - "RegionID": 8, - "HostName": "derp8f.tailscale.com", - "IPv4": "176.58.88.183", - "IPv6": "2a00:dd80:3a::dfa", - "CanPort80": true - }, - { - "Name": "8g", - "RegionID": 8, - "HostName": "derp8g.tailscale.com", - "IPv4": "176.58.92.254", - "IPv6": "2a00:dd80:3a::ed", - "CanPort80": true - }, - { - "Name": "8e", - "RegionID": 8, - "HostName": "derp8e.tailscale.com", - "IPv4": "176.58.92.144", - "IPv6": "2a00:dd80:3a::b33", - "CanPort80": true - } - ] - }, - "9": { - "RegionID": 9, - "RegionCode": "dfw", - "RegionName": "Dallas", - "Latitude": 32.779167, - "Longitude": -96.808889, - "Nodes": [ - { - "Name": "9e", - "RegionID": 9, - "HostName": "derp9e.tailscale.com", - "IPv4": "192.73.248.83", - "IPv6": "2607:f740:100::359", - "CanPort80": true - }, - { - "Name": "9f", - "RegionID": 9, - "HostName": "derp9f.tailscale.com", - "IPv4": "209.177.156.197", - "IPv6": "2607:f740:100::cad", - "CanPort80": true - }, - { - "Name": "9d", - "RegionID": 9, - "HostName": "derp9d.tailscale.com", - "IPv4": "209.177.156.94", - "IPv6": "2607:f740:100::c05", - "CanPort80": true - } - ] - } - } - }, - "DisplayMessages": null, - "TKAEnabled": false, - "TKAHead": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", - "Domain": "kratail2tid@passkey", - "DomainAuditLogID": "", - "UserProfiles": { - "7489538288452506": { - "ID": 7489538288452506, - "LoginName": "subnet-router.tail78f774.ts.net", - "DisplayName": "subnet-router" - } - } + "PacketFilterRules": 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.124.195.93": { - "peer_name": "exit-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-client/tailscaled.sock whois --json 100.124.195.93", - "response": null - }, - "100.116.18.24": { - "peer_name": "exit-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-client/tailscaled.sock whois --json 100.116.18.24", - "response": null - }, - "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.107.162.14": { - "peer_name": "group-a-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-client/tailscaled.sock whois --json 100.107.162.14", - "response": null - }, - "100.77.135.18": { - "peer_name": "group-b-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-client/tailscaled.sock whois --json 100.77.135.18", - "response": null - }, - "100.105.127.107": { - "peer_name": "multi-exit-router", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-client/tailscaled.sock whois --json 100.105.127.107", - "response": null - }, - "100.109.43.124": { - "peer_name": "router-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-client/tailscaled.sock whois --json 100.109.43.124", - "response": null - }, - "100.65.172.123": { - "peer_name": "router-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-client/tailscaled.sock whois --json 100.65.172.123", - "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 - } - }, "netmap": { - "SelfNode": { - "ID": 4031348162889210, - "StableID": "nf7BTTgoUY11CNTRL", - "Name": "tagged-client.tail78f774.ts.net.", - "User": 4031348162889210, - "Key": "nodekey:3011e53353e49142ea56ae11f81e0dceae0d667093d04ee086dcb1e9c5d3c844", - "DiscoKey": "discokey:64af337a7e8b61dce500da3b8f7d0a95fc6fe0e57c2f9e57b9b484a9b4acbe1e", - "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:47143", "10.65.0.27:47143", "172.17.0.1:47143"], - "Hostinfo": { - "Hostname": "tagged-client", - "RequestTags": ["tag:client"], - "Services": [ - { "Proto": "peerapi4", "Port": 41378 }, - { "Proto": "peerapi6", "Port": 41378 }, - { "Proto": "peerapi-dns-proxy", "Port": 1 } - ] - }, - "Created": "2026-02-23T00:13:11.017324028Z", - "Tags": ["tag:client"], - "MachineAuthorized": true, - "CapMap": { - "https://tailscale.com/cap/file-sharing": null, - "https://tailscale.com/cap/is-owner": null, - "https://tailscale.com/cap/ssh": null, - "https://tailscale.com/cap/tailnet-lock": null, - "probe-udp-lifetime": null, - "ssh-behavior-v1": null, - "ssh-env-vars": null, - "store-appc-routes": null, - "tailnet-display-name": ["kratail2tid@passkey"] - }, - "ComputedName": "tagged-client", - "ComputedNameWithHost": "tagged-client" - }, - "AllCaps": [ - "https://tailscale.com/cap/ssh", - "https://tailscale.com/cap/is-owner", - "probe-udp-lifetime", - "store-appc-routes", - "ssh-behavior-v1", - "https://tailscale.com/cap/tailnet-lock", - "ssh-env-vars", - "tailnet-display-name", - "https://tailscale.com/cap/file-sharing" - ], - "NodeKey": "nodekey:3011e53353e49142ea56ae11f81e0dceae0d667093d04ee086dcb1e9c5d3c844", - "MachineKey": "mkey:92af46ce21e67878315fe620545c207854ab6cec2d03adc106c50f64f9692711", "Peers": [], - "DNS": { - "Routes": { - "tail78f774.ts.net.": null, - "ts.net.": [{ "Addr": "199.247.155.53" }, { "Addr": "2620:111:8007::53" }] - }, - "Domains": ["tail78f774.ts.net"], - "Proxied": true, - "ExitNodeFilteredSet": [".ts.net", ".tailscale.net"] - }, - "PacketFilter": [], - "PacketFilterRules": null, - "SSHPolicy": { "rules": [] }, - "CollectServices": false, - "DERPMap": { - "Regions": { - "1": { - "RegionID": 1, - "RegionCode": "nyc", - "RegionName": "New York City", - "Latitude": 40.7128, - "Longitude": -74.006, - "Nodes": [ - { - "Name": "1h", - "RegionID": 1, - "HostName": "derp1h.tailscale.com", - "IPv4": "199.38.181.93", - "IPv6": "2607:f740:f::afd", - "CanPort80": true - }, - { - "Name": "1g", - "RegionID": 1, - "HostName": "derp1g.tailscale.com", - "IPv4": "209.177.145.120", - "IPv6": "2607:f740:f::3eb", - "CanPort80": true - }, - { - "Name": "1i", - "RegionID": 1, - "HostName": "derp1i.tailscale.com", - "IPv4": "199.38.181.103", - "IPv6": "2607:f740:f::e19", - "CanPort80": true - }, - { - "Name": "1f", - "RegionID": 1, - "HostName": "derp1f.tailscale.com", - "IPv4": "199.38.181.104", - "IPv6": "2607:f740:f::bc", - "CanPort80": true - } - ] - }, - "10": { - "RegionID": 10, - "RegionCode": "sea", - "RegionName": "Seattle", - "Latitude": 47.609722, - "Longitude": -122.333056, - "Nodes": [ - { - "Name": "10c", - "RegionID": 10, - "HostName": "derp10c.tailscale.com", - "IPv4": "192.73.240.121", - "IPv6": "2607:f740:14::40c", - "CanPort80": true - }, - { - "Name": "10d", - "RegionID": 10, - "HostName": "derp10d.tailscale.com", - "IPv4": "192.73.240.132", - "IPv6": "2607:f740:14::500", - "CanPort80": true - }, - { - "Name": "10b", - "RegionID": 10, - "HostName": "derp10b.tailscale.com", - "IPv4": "192.73.240.161", - "IPv6": "2607:f740:14::61c", - "CanPort80": true - } - ] - }, - "11": { - "RegionID": 11, - "RegionCode": "sao", - "RegionName": "São Paulo", - "Latitude": -23.55, - "Longitude": -46.633333, - "Nodes": [ - { - "Name": "11f", - "RegionID": 11, - "HostName": "derp11f.tailscale.com", - "IPv4": "172.237.61.197", - "IPv6": "2600:3c0d::2000:3bff:fe44:6166", - "CanPort80": true - }, - { - "Name": "11g", - "RegionID": 11, - "HostName": "derp11g.tailscale.com", - "IPv4": "172.237.61.190", - "IPv6": "2600:3c0d::2000:62ff:febe:2e67", - "CanPort80": true - }, - { - "Name": "11e", - "RegionID": 11, - "HostName": "derp11e.tailscale.com", - "IPv4": "172.237.61.194", - "IPv6": "2600:3c0d::2000:d2ff:fe43:1790", - "CanPort80": true - } - ] - }, - "12": { - "RegionID": 12, - "RegionCode": "ord", - "RegionName": "Chicago", - "Latitude": 41.881944, - "Longitude": -87.627778, - "Nodes": [ - { - "Name": "12e", - "RegionID": 12, - "HostName": "derp12e.tailscale.com", - "IPv4": "209.177.158.15", - "IPv6": "2607:f740:e::b17", - "CanPort80": true - }, - { - "Name": "12f", - "RegionID": 12, - "HostName": "derp12f.tailscale.com", - "IPv4": "199.38.182.118", - "IPv6": "2607:f740:e::4c8", - "CanPort80": true - }, - { - "Name": "12d", - "RegionID": 12, - "HostName": "derp12d.tailscale.com", - "IPv4": "209.177.158.246", - "IPv6": "2607:f740:e::811", - "CanPort80": true - } - ] - }, - "13": { - "RegionID": 13, - "RegionCode": "den", - "RegionName": "Denver", - "Latitude": 39.7392, - "Longitude": -104.9849, - "Nodes": [ - { - "Name": "13c", - "RegionID": 13, - "HostName": "derp13c.tailscale.com", - "IPv4": "192.73.242.28", - "IPv6": "2607:f740:16::5c", - "CanPort80": true - }, - { - "Name": "13d", - "RegionID": 13, - "HostName": "derp13d.tailscale.com", - "IPv4": "192.73.242.204", - "IPv6": "2607:f740:16::c23", - "CanPort80": true - }, - { - "Name": "13b", - "RegionID": 13, - "HostName": "derp13b.tailscale.com", - "IPv4": "192.73.242.187", - "IPv6": "2607:f740:16::640", - "CanPort80": true - } - ] - }, - "14": { - "RegionID": 14, - "RegionCode": "ams", - "RegionName": "Amsterdam", - "Latitude": 52.372778, - "Longitude": 4.893611, - "Nodes": [ - { - "Name": "14c", - "RegionID": 14, - "HostName": "derp14c.tailscale.com", - "IPv4": "176.58.93.147", - "IPv6": "2a00:dd80:3c::b09", - "CanPort80": true - }, - { - "Name": "14d", - "RegionID": 14, - "HostName": "derp14d.tailscale.com", - "IPv4": "176.58.93.154", - "IPv6": "2a00:dd80:3c::3d5", - "CanPort80": true - }, - { - "Name": "14b", - "RegionID": 14, - "HostName": "derp14b.tailscale.com", - "IPv4": "176.58.93.248", - "IPv6": "2a00:dd80:3c::807", - "CanPort80": true - } - ] - }, - "15": { - "RegionID": 15, - "RegionCode": "jnb", - "RegionName": "Johannesburg", - "Latitude": -26.204444, - "Longitude": 28.045556, - "Nodes": [ - { - "Name": "15c", - "RegionID": 15, - "HostName": "derp15c.tailscale.com", - "IPv4": "102.67.165.185", - "IPv6": "2c0f:edb0:0:10::b59", - "CanPort80": true - }, - { - "Name": "15d", - "RegionID": 15, - "HostName": "derp15d.tailscale.com", - "IPv4": "102.67.165.36", - "IPv6": "2c0f:edb0:0:10::599", - "CanPort80": true - }, - { - "Name": "15b", - "RegionID": 15, - "HostName": "derp15b.tailscale.com", - "IPv4": "102.67.165.90", - "IPv6": "2c0f:edb0:0:10::963", - "CanPort80": true - } - ] - }, - "16": { - "RegionID": 16, - "RegionCode": "mia", - "RegionName": "Miami", - "Latitude": 25.78, - "Longitude": -80.21, - "Nodes": [ - { - "Name": "16c", - "RegionID": 16, - "HostName": "derp16c.tailscale.com", - "IPv4": "192.73.243.229", - "IPv6": "2607:f740:17::4e4", - "CanPort80": true - }, - { - "Name": "16d", - "RegionID": 16, - "HostName": "derp16d.tailscale.com", - "IPv4": "192.73.243.141", - "IPv6": "2607:f740:17::475", - "CanPort80": true - }, - { - "Name": "16b", - "RegionID": 16, - "HostName": "derp16b.tailscale.com", - "IPv4": "192.73.243.135", - "IPv6": "2607:f740:17::476", - "CanPort80": true - } - ] - }, - "17": { - "RegionID": 17, - "RegionCode": "lax", - "RegionName": "Los Angeles", - "Latitude": 34.05, - "Longitude": -118.25, - "Nodes": [ - { - "Name": "17c", - "RegionID": 17, - "HostName": "derp17c.tailscale.com", - "IPv4": "208.111.40.12", - "IPv6": "2607:f740:c::10", - "CanPort80": true - }, - { - "Name": "17d", - "RegionID": 17, - "HostName": "derp17d.tailscale.com", - "IPv4": "208.111.40.216", - "IPv6": "2607:f740:c::e1b", - "CanPort80": true - }, - { - "Name": "17b", - "RegionID": 17, - "HostName": "derp17b.tailscale.com", - "IPv4": "192.73.244.245", - "IPv6": "2607:f740:c::646", - "CanPort80": true - } - ] - }, - "18": { - "RegionID": 18, - "RegionCode": "par", - "RegionName": "Paris", - "Latitude": 48.856667, - "Longitude": 2.352222, - "Nodes": [ - { - "Name": "18c", - "RegionID": 18, - "HostName": "derp18c.tailscale.com", - "IPv4": "176.58.90.207", - "IPv6": "2a00:dd80:3e::c19", - "CanPort80": true - }, - { - "Name": "18d", - "RegionID": 18, - "HostName": "derp18d.tailscale.com", - "IPv4": "176.58.90.104", - "IPv6": "2a00:dd80:3e::f2e", - "CanPort80": true - }, - { - "Name": "18b", - "RegionID": 18, - "HostName": "derp18b.tailscale.com", - "IPv4": "176.58.90.147", - "IPv6": "2a00:dd80:3e::363", - "CanPort80": true - } - ] - }, - "19": { - "RegionID": 19, - "RegionCode": "mad", - "RegionName": "Madrid", - "Latitude": 40.416944, - "Longitude": -3.703333, - "Nodes": [ - { - "Name": "19c", - "RegionID": 19, - "HostName": "derp19c.tailscale.com", - "IPv4": "45.159.97.61", - "IPv6": "2a00:dd80:14:10::20", - "CanPort80": true - }, - { - "Name": "19d", - "RegionID": 19, - "HostName": "derp19d.tailscale.com", - "IPv4": "45.159.97.233", - "IPv6": "2a00:dd80:14:10::34a", - "CanPort80": true - }, - { - "Name": "19b", - "RegionID": 19, - "HostName": "derp19b.tailscale.com", - "IPv4": "45.159.97.144", - "IPv6": "2a00:dd80:14:10::335", - "CanPort80": true - } - ] - }, - "2": { - "RegionID": 2, - "RegionCode": "sfo", - "RegionName": "San Francisco", - "Latitude": 37.7775, - "Longitude": -122.416389, - "Nodes": [ - { - "Name": "2e", - "RegionID": 2, - "HostName": "derp2e.tailscale.com", - "IPv4": "192.73.252.134", - "IPv6": "2607:f740:0:3f::44c", - "CanPort80": true - }, - { - "Name": "2f", - "RegionID": 2, - "HostName": "derp2f.tailscale.com", - "IPv4": "208.111.34.178", - "IPv6": "2607:f740:0:3f::f4", - "CanPort80": true - }, - { - "Name": "2d", - "RegionID": 2, - "HostName": "derp2d.tailscale.com", - "IPv4": "192.73.252.65", - "IPv6": "2607:f740:0:3f::287", - "CanPort80": true - } - ] - }, - "20": { - "RegionID": 20, - "RegionCode": "hkg", - "RegionName": "Hong Kong", - "Latitude": 22.3193, - "Longitude": 114.1694, - "Nodes": [ - { - "Name": "20c", - "RegionID": 20, - "HostName": "derp20c.tailscale.com", - "IPv4": "205.147.105.30", - "IPv6": "2403:2500:8000:1::5fb", - "CanPort80": true - }, - { - "Name": "20d", - "RegionID": 20, - "HostName": "derp20d.tailscale.com", - "IPv4": "205.147.105.78", - "IPv6": "2403:2500:8000:1::e9a", - "CanPort80": true - }, - { - "Name": "20b", - "RegionID": 20, - "HostName": "derp20b.tailscale.com", - "IPv4": "103.6.84.152", - "IPv6": "2403:2500:8000:1::ef6", - "CanPort80": true - } - ] - }, - "21": { - "RegionID": 21, - "RegionCode": "tor", - "RegionName": "Toronto", - "Latitude": 43.741667, - "Longitude": -79.373333, - "Nodes": [ - { - "Name": "21c", - "RegionID": 21, - "HostName": "derp21c.tailscale.com", - "IPv4": "162.248.221.215", - "IPv6": "2607:f740:50::f10", - "CanPort80": true - }, - { - "Name": "21d", - "RegionID": 21, - "HostName": "derp21d.tailscale.com", - "IPv4": "162.248.221.248", - "IPv6": "2607:f740:50::ca4", - "CanPort80": true - }, - { - "Name": "21b", - "RegionID": 21, - "HostName": "derp21b.tailscale.com", - "IPv4": "162.248.221.199", - "IPv6": "2607:f740:50::1d1", - "CanPort80": true - } - ] - }, - "22": { - "RegionID": 22, - "RegionCode": "waw", - "RegionName": "Warsaw", - "Latitude": 52.23, - "Longitude": 21.011111, - "Nodes": [ - { - "Name": "22c", - "RegionID": 22, - "HostName": "derp22c.tailscale.com", - "IPv4": "45.159.98.253", - "IPv6": "2a00:dd80:40:100::3f", - "CanPort80": true - }, - { - "Name": "22d", - "RegionID": 22, - "HostName": "derp22d.tailscale.com", - "IPv4": "45.159.98.145", - "IPv6": "2a00:dd80:40:100::211", - "CanPort80": true - }, - { - "Name": "22b", - "RegionID": 22, - "HostName": "derp22b.tailscale.com", - "IPv4": "45.159.98.196", - "IPv6": "2a00:dd80:40:100::316", - "CanPort80": true - } - ] - }, - "23": { - "RegionID": 23, - "RegionCode": "dbi", - "RegionName": "Dubai", - "Latitude": 25.263056, - "Longitude": 55.297222, - "Nodes": [ - { - "Name": "23c", - "RegionID": 23, - "HostName": "derp23c.tailscale.com", - "IPv4": "185.34.3.207", - "IPv6": "2a00:dd80:3f:100::a50", - "CanPort80": true - }, - { - "Name": "23d", - "RegionID": 23, - "HostName": "derp23d.tailscale.com", - "IPv4": "185.34.3.75", - "IPv6": "2a00:dd80:3f:100::97e", - "CanPort80": true - }, - { - "Name": "23b", - "RegionID": 23, - "HostName": "derp23b.tailscale.com", - "IPv4": "185.34.3.232", - "IPv6": "2a00:dd80:3f:100::76f", - "CanPort80": true - } - ] - }, - "24": { - "RegionID": 24, - "RegionCode": "hnl", - "RegionName": "Honolulu", - "Latitude": 21.306944, - "Longitude": -157.858333, - "Nodes": [ - { - "Name": "24c", - "RegionID": 24, - "HostName": "derp24c.tailscale.com", - "IPv4": "208.83.233.233", - "IPv6": "2001:19f0:c000:c591:5400:04ff:fe26:2c5f", - "CanPort80": true - }, - { - "Name": "24d", - "RegionID": 24, - "HostName": "derp24d.tailscale.com", - "IPv4": "208.72.155.133", - "IPv6": "2001:19f0:c000:c564:5400:04ff:fe26:2ba8", - "CanPort80": true - }, - { - "Name": "24b", - "RegionID": 24, - "HostName": "derp24b.tailscale.com", - "IPv4": "208.83.234.151", - "IPv6": "2001:19f0:c000:c586:5400:04ff:fe26:2ba6", - "CanPort80": true - } - ] - }, - "25": { - "RegionID": 25, - "RegionCode": "nai", - "RegionName": "Nairobi", - "Latitude": -1.286389, - "Longitude": 36.817222, - "Nodes": [ - { - "Name": "25c", - "RegionID": 25, - "HostName": "derp25c.tailscale.com", - "IPv4": "102.67.167.37", - "IPv6": "2c0f:edb0:2000:1::2c7", - "CanPort80": true - }, - { - "Name": "25d", - "RegionID": 25, - "HostName": "derp25d.tailscale.com", - "IPv4": "102.67.167.188", - "IPv6": "2c0f:edb0:2000:1::188", - "CanPort80": true - }, - { - "Name": "25b", - "RegionID": 25, - "HostName": "derp25b.tailscale.com", - "IPv4": "102.67.167.245", - "IPv6": "2c0f:edb0:2000:1::2e9", - "CanPort80": true - } - ] - }, - "26": { - "RegionID": 26, - "RegionCode": "nue", - "RegionName": "Nuremberg", - "Latitude": 49.453889, - "Longitude": 11.0775, - "Nodes": [ - { - "Name": "26c", - "RegionID": 26, - "HostName": "derp26c.tailscale.com", - "IPv4": "49.12.193.137", - "IPv6": "2a01:4f8:1c1c:5c70::1", - "CanPort80": true - }, - { - "Name": "26d", - "RegionID": 26, - "HostName": "derp26d.tailscale.com", - "IPv4": "49.13.204.141", - "IPv6": "2a01:4f8:1c0c:7d06::1", - "CanPort80": true - }, - { - "Name": "26b", - "RegionID": 26, - "HostName": "derp26b.tailscale.com", - "IPv4": "167.235.72.200", - "IPv6": "2a01:4f8:1c1c:47b6::1", - "CanPort80": true - } - ] - }, - "27": { - "RegionID": 27, - "RegionCode": "iad", - "RegionName": "Ashburn", - "Latitude": 39.03, - "Longitude": -77.471111, - "Nodes": [ - { - "Name": "27d", - "RegionID": 27, - "HostName": "derp27d.tailscale.com", - "IPv4": "178.156.152.106", - "IPv6": "2a01:4ff:f0:3c8e::1", - "CanPort80": true - }, - { - "Name": "27c", - "RegionID": 27, - "HostName": "derp27c.tailscale.com", - "IPv4": "178.156.152.91", - "IPv6": "2a01:4ff:f0:3913::1", - "CanPort80": true - }, - { - "Name": "27e", - "RegionID": 27, - "HostName": "derp27e.tailscale.com", - "IPv4": "178.156.134.232", - "IPv6": "2a01:4ff:f0:28d4::1", - "CanPort80": true - }, - { - "Name": "27b", - "RegionID": 27, - "HostName": "derp27b.tailscale.com", - "IPv4": "5.161.218.233", - "IPv6": "2a01:4ff:f0:3db9::1", - "CanPort80": true - } - ] - }, - "28": { - "RegionID": 28, - "RegionCode": "hel", - "RegionName": "Helsinki", - "Latitude": 60.170833, - "Longitude": 24.9375, - "Nodes": [ - { - "Name": "28c", - "RegionID": 28, - "HostName": "derp28c.tailscale.com", - "IPv4": "95.217.2.165", - "IPv6": "2a01:4f9:c012:cd74::1", - "CanPort80": true - }, - { - "Name": "28d", - "RegionID": 28, - "HostName": "derp28d.tailscale.com", - "IPv4": "157.180.28.32", - "IPv6": "2a01:4f9:c012:2e5b::1", - "CanPort80": true - }, - { - "Name": "28b", - "RegionID": 28, - "HostName": "derp28b.tailscale.com", - "IPv4": "65.109.143.62", - "IPv6": "2a01:4f9:c012:d55c::1", - "CanPort80": true - } - ] - }, - "3": { - "RegionID": 3, - "RegionCode": "sin", - "RegionName": "Singapore", - "Latitude": 1.3521, - "Longitude": 103.8198, - "Nodes": [ - { - "Name": "3g", - "RegionID": 3, - "HostName": "derp3g.tailscale.com", - "IPv4": "172.237.72.79", - "IPv6": "2600:3c15::2000:adff:fe08:6fab", - "CanPort80": true - }, - { - "Name": "3f", - "RegionID": 3, - "HostName": "derp3f.tailscale.com", - "IPv4": "172.237.72.8", - "IPv6": "2600:3c15::2000:53ff:fe48:a668", - "CanPort80": true - }, - { - "Name": "3h", - "RegionID": 3, - "HostName": "derp3h.tailscale.com", - "IPv4": "172.237.66.30", - "IPv6": "2600:3c15::2000:3dff:fe44:50aa", - "CanPort80": true - }, - { - "Name": "3e", - "RegionID": 3, - "HostName": "derp3e.tailscale.com", - "IPv4": "172.237.72.43", - "IPv6": "2600:3c15::2000:6cff:fee4:d799", - "CanPort80": true - } - ] - }, - "4": { - "RegionID": 4, - "RegionCode": "fra", - "RegionName": "Frankfurt", - "Latitude": 50.1109, - "Longitude": 8.6821, - "Nodes": [ - { - "Name": "4h", - "RegionID": 4, - "HostName": "derp4h.tailscale.com", - "IPv4": "185.40.234.77", - "IPv6": "2a00:dd80:20::bcf", - "CanPort80": true - }, - { - "Name": "4g", - "RegionID": 4, - "HostName": "derp4g.tailscale.com", - "IPv4": "185.40.234.113", - "IPv6": "2a00:dd80:20::8f", - "CanPort80": true - }, - { - "Name": "4i", - "RegionID": 4, - "HostName": "derp4i.tailscale.com", - "IPv4": "185.40.234.53", - "IPv6": "2a00:dd80:20::8a6", - "CanPort80": true - }, - { - "Name": "4f", - "RegionID": 4, - "HostName": "derp4f.tailscale.com", - "IPv4": "185.40.234.219", - "IPv6": "2a00:dd80:20::a25", - "CanPort80": true - } - ] - }, - "5": { - "RegionID": 5, - "RegionCode": "syd", - "RegionName": "Sydney", - "Latitude": -33.867778, - "Longitude": 151.21, - "Nodes": [ - { - "Name": "5f", - "RegionID": 5, - "HostName": "derp5f.tailscale.com", - "IPv4": "172.105.166.103", - "IPv6": "2400:8907::2000:ccff:fe1f:80da", - "CanPort80": true - }, - { - "Name": "5g", - "RegionID": 5, - "HostName": "derp5g.tailscale.com", - "IPv4": "172.105.169.57", - "IPv6": "2400:8907::2000:2fff:fea7:57f4", - "CanPort80": true - }, - { - "Name": "5e", - "RegionID": 5, - "HostName": "derp5e.tailscale.com", - "IPv4": "172.105.179.230", - "IPv6": "2400:8907::2000:ceff:fe8d:4f4e", - "CanPort80": true - } - ] - }, - "6": { - "RegionID": 6, - "RegionCode": "blr", - "RegionName": "Bengaluru", - "Latitude": 12.9716, - "Longitude": 77.5946, - "Nodes": [ - { - "Name": "6a", - "RegionID": 6, - "HostName": "derp6.tailscale.com", - "IPv4": "68.183.90.120", - "IPv6": "2400:6180:100:d0::982:d001", - "CanPort80": true - } - ] - }, - "7": { - "RegionID": 7, - "RegionCode": "tok", - "RegionName": "Tokyo", - "Latitude": 35.6764, - "Longitude": 139.65, - "Nodes": [ - { - "Name": "7g", - "RegionID": 7, - "HostName": "derp7g.tailscale.com", - "IPv4": "172.238.6.179", - "IPv6": "2600:3c18::2000:3fff:fe80:3ebd", - "CanPort80": true - }, - { - "Name": "7f", - "RegionID": 7, - "HostName": "derp7f.tailscale.com", - "IPv4": "172.238.6.34", - "IPv6": "2600:3c18::2000:acff:fe8e:3ed5", - "CanPort80": true - }, - { - "Name": "7h", - "RegionID": 7, - "HostName": "derp7h.tailscale.com", - "IPv4": "172.237.28.183", - "IPv6": "2600:3c18::2000:b1ff:fea9:4560", - "CanPort80": true - }, - { - "Name": "7e", - "RegionID": 7, - "HostName": "derp7e.tailscale.com", - "IPv4": "172.238.6.180", - "IPv6": "2600:3c18::2000:60ff:fe0f:6e83", - "STUNOnly": true, - "CanPort80": true - } - ] - }, - "8": { - "RegionID": 8, - "RegionCode": "lhr", - "RegionName": "London", - "Latitude": 51.5072, - "Longitude": 0.1276, - "Nodes": [ - { - "Name": "8f", - "RegionID": 8, - "HostName": "derp8f.tailscale.com", - "IPv4": "176.58.88.183", - "IPv6": "2a00:dd80:3a::dfa", - "CanPort80": true - }, - { - "Name": "8g", - "RegionID": 8, - "HostName": "derp8g.tailscale.com", - "IPv4": "176.58.92.254", - "IPv6": "2a00:dd80:3a::ed", - "CanPort80": true - }, - { - "Name": "8e", - "RegionID": 8, - "HostName": "derp8e.tailscale.com", - "IPv4": "176.58.92.144", - "IPv6": "2a00:dd80:3a::b33", - "CanPort80": true - } - ] - }, - "9": { - "RegionID": 9, - "RegionCode": "dfw", - "RegionName": "Dallas", - "Latitude": 32.779167, - "Longitude": -96.808889, - "Nodes": [ - { - "Name": "9e", - "RegionID": 9, - "HostName": "derp9e.tailscale.com", - "IPv4": "192.73.248.83", - "IPv6": "2607:f740:100::359", - "CanPort80": true - }, - { - "Name": "9f", - "RegionID": 9, - "HostName": "derp9f.tailscale.com", - "IPv4": "209.177.156.197", - "IPv6": "2607:f740:100::cad", - "CanPort80": true - }, - { - "Name": "9d", - "RegionID": 9, - "HostName": "derp9d.tailscale.com", - "IPv4": "209.177.156.94", - "IPv6": "2607:f740:100::c05", - "CanPort80": true - } - ] - } - } - }, - "DisplayMessages": null, - "TKAEnabled": false, - "TKAHead": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", - "Domain": "kratail2tid@passkey", - "DomainAuditLogID": "", - "UserProfiles": { - "4031348162889210": { - "ID": 4031348162889210, - "LoginName": "tagged-client.tail78f774.ts.net", - "DisplayName": "tagged-client" - } - } + "PacketFilterRules": 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.124.195.93": { - "peer_name": "exit-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-prod/tailscaled.sock whois --json 100.124.195.93", - "response": null - }, - "100.116.18.24": { - "peer_name": "exit-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-prod/tailscaled.sock whois --json 100.116.18.24", - "response": null - }, - "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.107.162.14": { - "peer_name": "group-a-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-prod/tailscaled.sock whois --json 100.107.162.14", - "response": null - }, - "100.77.135.18": { - "peer_name": "group-b-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-prod/tailscaled.sock whois --json 100.77.135.18", - "response": null - }, - "100.105.127.107": { - "peer_name": "multi-exit-router", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-prod/tailscaled.sock whois --json 100.105.127.107", - "response": null - }, - "100.109.43.124": { - "peer_name": "router-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-prod/tailscaled.sock whois --json 100.109.43.124", - "response": null - }, - "100.65.172.123": { - "peer_name": "router-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-prod/tailscaled.sock whois --json 100.65.172.123", - "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 - } - }, "netmap": { - "SelfNode": { - "ID": 301794218943819, - "StableID": "neJag6dgM311CNTRL", - "Name": "tagged-prod.tail78f774.ts.net.", - "User": 301794218943819, - "Key": "nodekey:54c79503322a5d0a9701ce19d11963cfff9c05667ac06ef976af86275ba7080e", - "DiscoKey": "discokey:5e4985009b42b7c82ffb2cb5fa735a90f967f6b3f886b71268ebbeffa324556b", - "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:46164", "10.65.0.27:46164", "172.17.0.1:46164"], - "Hostinfo": { - "Hostname": "tagged-prod", - "Services": [ - { "Proto": "peerapi4", "Port": 37678 }, - { "Proto": "peerapi6", "Port": 37678 }, - { "Proto": "peerapi-dns-proxy", "Port": 1 } - ] - }, - "Created": "2026-02-20T14:03:12.89283153Z", - "Tags": ["tag:prod"], - "MachineAuthorized": true, - "CapMap": { - "https://tailscale.com/cap/file-sharing": null, - "https://tailscale.com/cap/is-owner": null, - "https://tailscale.com/cap/ssh": null, - "https://tailscale.com/cap/tailnet-lock": null, - "probe-udp-lifetime": null, - "ssh-behavior-v1": null, - "ssh-env-vars": null, - "store-appc-routes": null, - "tailnet-display-name": ["kratail2tid@passkey"] - }, - "ComputedName": "tagged-prod", - "ComputedNameWithHost": "tagged-prod" - }, - "AllCaps": [ - "probe-udp-lifetime", - "ssh-env-vars", - "https://tailscale.com/cap/ssh", - "https://tailscale.com/cap/file-sharing", - "store-appc-routes", - "tailnet-display-name", - "ssh-behavior-v1", - "https://tailscale.com/cap/is-owner", - "https://tailscale.com/cap/tailnet-lock" - ], - "NodeKey": "nodekey:54c79503322a5d0a9701ce19d11963cfff9c05667ac06ef976af86275ba7080e", - "MachineKey": "mkey:af805e02d1594ab20eaf3e2df5b379eec6453fa649344fcd564b7bae20e46a63", "Peers": [], - "DNS": { - "Routes": { - "tail78f774.ts.net.": null, - "ts.net.": [{ "Addr": "199.247.155.53" }, { "Addr": "2620:111:8007::53" }] - }, - "Domains": ["tail78f774.ts.net"], - "Proxied": true, - "ExitNodeFilteredSet": [".ts.net", ".tailscale.net"] - }, - "PacketFilter": [], - "PacketFilterRules": null, - "SSHPolicy": { "rules": [] }, - "CollectServices": false, - "DERPMap": { - "Regions": { - "1": { - "RegionID": 1, - "RegionCode": "nyc", - "RegionName": "New York City", - "Latitude": 40.7128, - "Longitude": -74.006, - "Nodes": [ - { - "Name": "1h", - "RegionID": 1, - "HostName": "derp1h.tailscale.com", - "IPv4": "199.38.181.93", - "IPv6": "2607:f740:f::afd", - "CanPort80": true - }, - { - "Name": "1g", - "RegionID": 1, - "HostName": "derp1g.tailscale.com", - "IPv4": "209.177.145.120", - "IPv6": "2607:f740:f::3eb", - "CanPort80": true - }, - { - "Name": "1i", - "RegionID": 1, - "HostName": "derp1i.tailscale.com", - "IPv4": "199.38.181.103", - "IPv6": "2607:f740:f::e19", - "CanPort80": true - }, - { - "Name": "1f", - "RegionID": 1, - "HostName": "derp1f.tailscale.com", - "IPv4": "199.38.181.104", - "IPv6": "2607:f740:f::bc", - "CanPort80": true - } - ] - }, - "10": { - "RegionID": 10, - "RegionCode": "sea", - "RegionName": "Seattle", - "Latitude": 47.609722, - "Longitude": -122.333056, - "Nodes": [ - { - "Name": "10c", - "RegionID": 10, - "HostName": "derp10c.tailscale.com", - "IPv4": "192.73.240.121", - "IPv6": "2607:f740:14::40c", - "CanPort80": true - }, - { - "Name": "10d", - "RegionID": 10, - "HostName": "derp10d.tailscale.com", - "IPv4": "192.73.240.132", - "IPv6": "2607:f740:14::500", - "CanPort80": true - }, - { - "Name": "10b", - "RegionID": 10, - "HostName": "derp10b.tailscale.com", - "IPv4": "192.73.240.161", - "IPv6": "2607:f740:14::61c", - "CanPort80": true - } - ] - }, - "11": { - "RegionID": 11, - "RegionCode": "sao", - "RegionName": "São Paulo", - "Latitude": -23.55, - "Longitude": -46.633333, - "Nodes": [ - { - "Name": "11f", - "RegionID": 11, - "HostName": "derp11f.tailscale.com", - "IPv4": "172.237.61.197", - "IPv6": "2600:3c0d::2000:3bff:fe44:6166", - "CanPort80": true - }, - { - "Name": "11g", - "RegionID": 11, - "HostName": "derp11g.tailscale.com", - "IPv4": "172.237.61.190", - "IPv6": "2600:3c0d::2000:62ff:febe:2e67", - "CanPort80": true - }, - { - "Name": "11e", - "RegionID": 11, - "HostName": "derp11e.tailscale.com", - "IPv4": "172.237.61.194", - "IPv6": "2600:3c0d::2000:d2ff:fe43:1790", - "CanPort80": true - } - ] - }, - "12": { - "RegionID": 12, - "RegionCode": "ord", - "RegionName": "Chicago", - "Latitude": 41.881944, - "Longitude": -87.627778, - "Nodes": [ - { - "Name": "12e", - "RegionID": 12, - "HostName": "derp12e.tailscale.com", - "IPv4": "209.177.158.15", - "IPv6": "2607:f740:e::b17", - "CanPort80": true - }, - { - "Name": "12f", - "RegionID": 12, - "HostName": "derp12f.tailscale.com", - "IPv4": "199.38.182.118", - "IPv6": "2607:f740:e::4c8", - "CanPort80": true - }, - { - "Name": "12d", - "RegionID": 12, - "HostName": "derp12d.tailscale.com", - "IPv4": "209.177.158.246", - "IPv6": "2607:f740:e::811", - "CanPort80": true - } - ] - }, - "13": { - "RegionID": 13, - "RegionCode": "den", - "RegionName": "Denver", - "Latitude": 39.7392, - "Longitude": -104.9849, - "Nodes": [ - { - "Name": "13c", - "RegionID": 13, - "HostName": "derp13c.tailscale.com", - "IPv4": "192.73.242.28", - "IPv6": "2607:f740:16::5c", - "CanPort80": true - }, - { - "Name": "13d", - "RegionID": 13, - "HostName": "derp13d.tailscale.com", - "IPv4": "192.73.242.204", - "IPv6": "2607:f740:16::c23", - "CanPort80": true - }, - { - "Name": "13b", - "RegionID": 13, - "HostName": "derp13b.tailscale.com", - "IPv4": "192.73.242.187", - "IPv6": "2607:f740:16::640", - "CanPort80": true - } - ] - }, - "14": { - "RegionID": 14, - "RegionCode": "ams", - "RegionName": "Amsterdam", - "Latitude": 52.372778, - "Longitude": 4.893611, - "Nodes": [ - { - "Name": "14c", - "RegionID": 14, - "HostName": "derp14c.tailscale.com", - "IPv4": "176.58.93.147", - "IPv6": "2a00:dd80:3c::b09", - "CanPort80": true - }, - { - "Name": "14d", - "RegionID": 14, - "HostName": "derp14d.tailscale.com", - "IPv4": "176.58.93.154", - "IPv6": "2a00:dd80:3c::3d5", - "CanPort80": true - }, - { - "Name": "14b", - "RegionID": 14, - "HostName": "derp14b.tailscale.com", - "IPv4": "176.58.93.248", - "IPv6": "2a00:dd80:3c::807", - "CanPort80": true - } - ] - }, - "15": { - "RegionID": 15, - "RegionCode": "jnb", - "RegionName": "Johannesburg", - "Latitude": -26.204444, - "Longitude": 28.045556, - "Nodes": [ - { - "Name": "15c", - "RegionID": 15, - "HostName": "derp15c.tailscale.com", - "IPv4": "102.67.165.185", - "IPv6": "2c0f:edb0:0:10::b59", - "CanPort80": true - }, - { - "Name": "15d", - "RegionID": 15, - "HostName": "derp15d.tailscale.com", - "IPv4": "102.67.165.36", - "IPv6": "2c0f:edb0:0:10::599", - "CanPort80": true - }, - { - "Name": "15b", - "RegionID": 15, - "HostName": "derp15b.tailscale.com", - "IPv4": "102.67.165.90", - "IPv6": "2c0f:edb0:0:10::963", - "CanPort80": true - } - ] - }, - "16": { - "RegionID": 16, - "RegionCode": "mia", - "RegionName": "Miami", - "Latitude": 25.78, - "Longitude": -80.21, - "Nodes": [ - { - "Name": "16c", - "RegionID": 16, - "HostName": "derp16c.tailscale.com", - "IPv4": "192.73.243.229", - "IPv6": "2607:f740:17::4e4", - "CanPort80": true - }, - { - "Name": "16d", - "RegionID": 16, - "HostName": "derp16d.tailscale.com", - "IPv4": "192.73.243.141", - "IPv6": "2607:f740:17::475", - "CanPort80": true - }, - { - "Name": "16b", - "RegionID": 16, - "HostName": "derp16b.tailscale.com", - "IPv4": "192.73.243.135", - "IPv6": "2607:f740:17::476", - "CanPort80": true - } - ] - }, - "17": { - "RegionID": 17, - "RegionCode": "lax", - "RegionName": "Los Angeles", - "Latitude": 34.05, - "Longitude": -118.25, - "Nodes": [ - { - "Name": "17c", - "RegionID": 17, - "HostName": "derp17c.tailscale.com", - "IPv4": "208.111.40.12", - "IPv6": "2607:f740:c::10", - "CanPort80": true - }, - { - "Name": "17d", - "RegionID": 17, - "HostName": "derp17d.tailscale.com", - "IPv4": "208.111.40.216", - "IPv6": "2607:f740:c::e1b", - "CanPort80": true - }, - { - "Name": "17b", - "RegionID": 17, - "HostName": "derp17b.tailscale.com", - "IPv4": "192.73.244.245", - "IPv6": "2607:f740:c::646", - "CanPort80": true - } - ] - }, - "18": { - "RegionID": 18, - "RegionCode": "par", - "RegionName": "Paris", - "Latitude": 48.856667, - "Longitude": 2.352222, - "Nodes": [ - { - "Name": "18c", - "RegionID": 18, - "HostName": "derp18c.tailscale.com", - "IPv4": "176.58.90.207", - "IPv6": "2a00:dd80:3e::c19", - "CanPort80": true - }, - { - "Name": "18d", - "RegionID": 18, - "HostName": "derp18d.tailscale.com", - "IPv4": "176.58.90.104", - "IPv6": "2a00:dd80:3e::f2e", - "CanPort80": true - }, - { - "Name": "18b", - "RegionID": 18, - "HostName": "derp18b.tailscale.com", - "IPv4": "176.58.90.147", - "IPv6": "2a00:dd80:3e::363", - "CanPort80": true - } - ] - }, - "19": { - "RegionID": 19, - "RegionCode": "mad", - "RegionName": "Madrid", - "Latitude": 40.416944, - "Longitude": -3.703333, - "Nodes": [ - { - "Name": "19c", - "RegionID": 19, - "HostName": "derp19c.tailscale.com", - "IPv4": "45.159.97.61", - "IPv6": "2a00:dd80:14:10::20", - "CanPort80": true - }, - { - "Name": "19d", - "RegionID": 19, - "HostName": "derp19d.tailscale.com", - "IPv4": "45.159.97.233", - "IPv6": "2a00:dd80:14:10::34a", - "CanPort80": true - }, - { - "Name": "19b", - "RegionID": 19, - "HostName": "derp19b.tailscale.com", - "IPv4": "45.159.97.144", - "IPv6": "2a00:dd80:14:10::335", - "CanPort80": true - } - ] - }, - "2": { - "RegionID": 2, - "RegionCode": "sfo", - "RegionName": "San Francisco", - "Latitude": 37.7775, - "Longitude": -122.416389, - "Nodes": [ - { - "Name": "2e", - "RegionID": 2, - "HostName": "derp2e.tailscale.com", - "IPv4": "192.73.252.134", - "IPv6": "2607:f740:0:3f::44c", - "CanPort80": true - }, - { - "Name": "2f", - "RegionID": 2, - "HostName": "derp2f.tailscale.com", - "IPv4": "208.111.34.178", - "IPv6": "2607:f740:0:3f::f4", - "CanPort80": true - }, - { - "Name": "2d", - "RegionID": 2, - "HostName": "derp2d.tailscale.com", - "IPv4": "192.73.252.65", - "IPv6": "2607:f740:0:3f::287", - "CanPort80": true - } - ] - }, - "20": { - "RegionID": 20, - "RegionCode": "hkg", - "RegionName": "Hong Kong", - "Latitude": 22.3193, - "Longitude": 114.1694, - "Nodes": [ - { - "Name": "20c", - "RegionID": 20, - "HostName": "derp20c.tailscale.com", - "IPv4": "205.147.105.30", - "IPv6": "2403:2500:8000:1::5fb", - "CanPort80": true - }, - { - "Name": "20d", - "RegionID": 20, - "HostName": "derp20d.tailscale.com", - "IPv4": "205.147.105.78", - "IPv6": "2403:2500:8000:1::e9a", - "CanPort80": true - }, - { - "Name": "20b", - "RegionID": 20, - "HostName": "derp20b.tailscale.com", - "IPv4": "103.6.84.152", - "IPv6": "2403:2500:8000:1::ef6", - "CanPort80": true - } - ] - }, - "21": { - "RegionID": 21, - "RegionCode": "tor", - "RegionName": "Toronto", - "Latitude": 43.741667, - "Longitude": -79.373333, - "Nodes": [ - { - "Name": "21c", - "RegionID": 21, - "HostName": "derp21c.tailscale.com", - "IPv4": "162.248.221.215", - "IPv6": "2607:f740:50::f10", - "CanPort80": true - }, - { - "Name": "21d", - "RegionID": 21, - "HostName": "derp21d.tailscale.com", - "IPv4": "162.248.221.248", - "IPv6": "2607:f740:50::ca4", - "CanPort80": true - }, - { - "Name": "21b", - "RegionID": 21, - "HostName": "derp21b.tailscale.com", - "IPv4": "162.248.221.199", - "IPv6": "2607:f740:50::1d1", - "CanPort80": true - } - ] - }, - "22": { - "RegionID": 22, - "RegionCode": "waw", - "RegionName": "Warsaw", - "Latitude": 52.23, - "Longitude": 21.011111, - "Nodes": [ - { - "Name": "22c", - "RegionID": 22, - "HostName": "derp22c.tailscale.com", - "IPv4": "45.159.98.253", - "IPv6": "2a00:dd80:40:100::3f", - "CanPort80": true - }, - { - "Name": "22d", - "RegionID": 22, - "HostName": "derp22d.tailscale.com", - "IPv4": "45.159.98.145", - "IPv6": "2a00:dd80:40:100::211", - "CanPort80": true - }, - { - "Name": "22b", - "RegionID": 22, - "HostName": "derp22b.tailscale.com", - "IPv4": "45.159.98.196", - "IPv6": "2a00:dd80:40:100::316", - "CanPort80": true - } - ] - }, - "23": { - "RegionID": 23, - "RegionCode": "dbi", - "RegionName": "Dubai", - "Latitude": 25.263056, - "Longitude": 55.297222, - "Nodes": [ - { - "Name": "23c", - "RegionID": 23, - "HostName": "derp23c.tailscale.com", - "IPv4": "185.34.3.207", - "IPv6": "2a00:dd80:3f:100::a50", - "CanPort80": true - }, - { - "Name": "23d", - "RegionID": 23, - "HostName": "derp23d.tailscale.com", - "IPv4": "185.34.3.75", - "IPv6": "2a00:dd80:3f:100::97e", - "CanPort80": true - }, - { - "Name": "23b", - "RegionID": 23, - "HostName": "derp23b.tailscale.com", - "IPv4": "185.34.3.232", - "IPv6": "2a00:dd80:3f:100::76f", - "CanPort80": true - } - ] - }, - "24": { - "RegionID": 24, - "RegionCode": "hnl", - "RegionName": "Honolulu", - "Latitude": 21.306944, - "Longitude": -157.858333, - "Nodes": [ - { - "Name": "24c", - "RegionID": 24, - "HostName": "derp24c.tailscale.com", - "IPv4": "208.83.233.233", - "IPv6": "2001:19f0:c000:c591:5400:04ff:fe26:2c5f", - "CanPort80": true - }, - { - "Name": "24d", - "RegionID": 24, - "HostName": "derp24d.tailscale.com", - "IPv4": "208.72.155.133", - "IPv6": "2001:19f0:c000:c564:5400:04ff:fe26:2ba8", - "CanPort80": true - }, - { - "Name": "24b", - "RegionID": 24, - "HostName": "derp24b.tailscale.com", - "IPv4": "208.83.234.151", - "IPv6": "2001:19f0:c000:c586:5400:04ff:fe26:2ba6", - "CanPort80": true - } - ] - }, - "25": { - "RegionID": 25, - "RegionCode": "nai", - "RegionName": "Nairobi", - "Latitude": -1.286389, - "Longitude": 36.817222, - "Nodes": [ - { - "Name": "25c", - "RegionID": 25, - "HostName": "derp25c.tailscale.com", - "IPv4": "102.67.167.37", - "IPv6": "2c0f:edb0:2000:1::2c7", - "CanPort80": true - }, - { - "Name": "25d", - "RegionID": 25, - "HostName": "derp25d.tailscale.com", - "IPv4": "102.67.167.188", - "IPv6": "2c0f:edb0:2000:1::188", - "CanPort80": true - }, - { - "Name": "25b", - "RegionID": 25, - "HostName": "derp25b.tailscale.com", - "IPv4": "102.67.167.245", - "IPv6": "2c0f:edb0:2000:1::2e9", - "CanPort80": true - } - ] - }, - "26": { - "RegionID": 26, - "RegionCode": "nue", - "RegionName": "Nuremberg", - "Latitude": 49.453889, - "Longitude": 11.0775, - "Nodes": [ - { - "Name": "26c", - "RegionID": 26, - "HostName": "derp26c.tailscale.com", - "IPv4": "49.12.193.137", - "IPv6": "2a01:4f8:1c1c:5c70::1", - "CanPort80": true - }, - { - "Name": "26d", - "RegionID": 26, - "HostName": "derp26d.tailscale.com", - "IPv4": "49.13.204.141", - "IPv6": "2a01:4f8:1c0c:7d06::1", - "CanPort80": true - }, - { - "Name": "26b", - "RegionID": 26, - "HostName": "derp26b.tailscale.com", - "IPv4": "167.235.72.200", - "IPv6": "2a01:4f8:1c1c:47b6::1", - "CanPort80": true - } - ] - }, - "27": { - "RegionID": 27, - "RegionCode": "iad", - "RegionName": "Ashburn", - "Latitude": 39.03, - "Longitude": -77.471111, - "Nodes": [ - { - "Name": "27d", - "RegionID": 27, - "HostName": "derp27d.tailscale.com", - "IPv4": "178.156.152.106", - "IPv6": "2a01:4ff:f0:3c8e::1", - "CanPort80": true - }, - { - "Name": "27c", - "RegionID": 27, - "HostName": "derp27c.tailscale.com", - "IPv4": "178.156.152.91", - "IPv6": "2a01:4ff:f0:3913::1", - "CanPort80": true - }, - { - "Name": "27e", - "RegionID": 27, - "HostName": "derp27e.tailscale.com", - "IPv4": "178.156.134.232", - "IPv6": "2a01:4ff:f0:28d4::1", - "CanPort80": true - }, - { - "Name": "27b", - "RegionID": 27, - "HostName": "derp27b.tailscale.com", - "IPv4": "5.161.218.233", - "IPv6": "2a01:4ff:f0:3db9::1", - "CanPort80": true - } - ] - }, - "28": { - "RegionID": 28, - "RegionCode": "hel", - "RegionName": "Helsinki", - "Latitude": 60.170833, - "Longitude": 24.9375, - "Nodes": [ - { - "Name": "28c", - "RegionID": 28, - "HostName": "derp28c.tailscale.com", - "IPv4": "95.217.2.165", - "IPv6": "2a01:4f9:c012:cd74::1", - "CanPort80": true - }, - { - "Name": "28d", - "RegionID": 28, - "HostName": "derp28d.tailscale.com", - "IPv4": "157.180.28.32", - "IPv6": "2a01:4f9:c012:2e5b::1", - "CanPort80": true - }, - { - "Name": "28b", - "RegionID": 28, - "HostName": "derp28b.tailscale.com", - "IPv4": "65.109.143.62", - "IPv6": "2a01:4f9:c012:d55c::1", - "CanPort80": true - } - ] - }, - "3": { - "RegionID": 3, - "RegionCode": "sin", - "RegionName": "Singapore", - "Latitude": 1.3521, - "Longitude": 103.8198, - "Nodes": [ - { - "Name": "3g", - "RegionID": 3, - "HostName": "derp3g.tailscale.com", - "IPv4": "172.237.72.79", - "IPv6": "2600:3c15::2000:adff:fe08:6fab", - "CanPort80": true - }, - { - "Name": "3f", - "RegionID": 3, - "HostName": "derp3f.tailscale.com", - "IPv4": "172.237.72.8", - "IPv6": "2600:3c15::2000:53ff:fe48:a668", - "CanPort80": true - }, - { - "Name": "3h", - "RegionID": 3, - "HostName": "derp3h.tailscale.com", - "IPv4": "172.237.66.30", - "IPv6": "2600:3c15::2000:3dff:fe44:50aa", - "CanPort80": true - }, - { - "Name": "3e", - "RegionID": 3, - "HostName": "derp3e.tailscale.com", - "IPv4": "172.237.72.43", - "IPv6": "2600:3c15::2000:6cff:fee4:d799", - "CanPort80": true - } - ] - }, - "4": { - "RegionID": 4, - "RegionCode": "fra", - "RegionName": "Frankfurt", - "Latitude": 50.1109, - "Longitude": 8.6821, - "Nodes": [ - { - "Name": "4h", - "RegionID": 4, - "HostName": "derp4h.tailscale.com", - "IPv4": "185.40.234.77", - "IPv6": "2a00:dd80:20::bcf", - "CanPort80": true - }, - { - "Name": "4g", - "RegionID": 4, - "HostName": "derp4g.tailscale.com", - "IPv4": "185.40.234.113", - "IPv6": "2a00:dd80:20::8f", - "CanPort80": true - }, - { - "Name": "4i", - "RegionID": 4, - "HostName": "derp4i.tailscale.com", - "IPv4": "185.40.234.53", - "IPv6": "2a00:dd80:20::8a6", - "CanPort80": true - }, - { - "Name": "4f", - "RegionID": 4, - "HostName": "derp4f.tailscale.com", - "IPv4": "185.40.234.219", - "IPv6": "2a00:dd80:20::a25", - "CanPort80": true - } - ] - }, - "5": { - "RegionID": 5, - "RegionCode": "syd", - "RegionName": "Sydney", - "Latitude": -33.867778, - "Longitude": 151.21, - "Nodes": [ - { - "Name": "5f", - "RegionID": 5, - "HostName": "derp5f.tailscale.com", - "IPv4": "172.105.166.103", - "IPv6": "2400:8907::2000:ccff:fe1f:80da", - "CanPort80": true - }, - { - "Name": "5g", - "RegionID": 5, - "HostName": "derp5g.tailscale.com", - "IPv4": "172.105.169.57", - "IPv6": "2400:8907::2000:2fff:fea7:57f4", - "CanPort80": true - }, - { - "Name": "5e", - "RegionID": 5, - "HostName": "derp5e.tailscale.com", - "IPv4": "172.105.179.230", - "IPv6": "2400:8907::2000:ceff:fe8d:4f4e", - "CanPort80": true - } - ] - }, - "6": { - "RegionID": 6, - "RegionCode": "blr", - "RegionName": "Bengaluru", - "Latitude": 12.9716, - "Longitude": 77.5946, - "Nodes": [ - { - "Name": "6a", - "RegionID": 6, - "HostName": "derp6.tailscale.com", - "IPv4": "68.183.90.120", - "IPv6": "2400:6180:100:d0::982:d001", - "CanPort80": true - } - ] - }, - "7": { - "RegionID": 7, - "RegionCode": "tok", - "RegionName": "Tokyo", - "Latitude": 35.6764, - "Longitude": 139.65, - "Nodes": [ - { - "Name": "7g", - "RegionID": 7, - "HostName": "derp7g.tailscale.com", - "IPv4": "172.238.6.179", - "IPv6": "2600:3c18::2000:3fff:fe80:3ebd", - "CanPort80": true - }, - { - "Name": "7f", - "RegionID": 7, - "HostName": "derp7f.tailscale.com", - "IPv4": "172.238.6.34", - "IPv6": "2600:3c18::2000:acff:fe8e:3ed5", - "CanPort80": true - }, - { - "Name": "7h", - "RegionID": 7, - "HostName": "derp7h.tailscale.com", - "IPv4": "172.237.28.183", - "IPv6": "2600:3c18::2000:b1ff:fea9:4560", - "CanPort80": true - }, - { - "Name": "7e", - "RegionID": 7, - "HostName": "derp7e.tailscale.com", - "IPv4": "172.238.6.180", - "IPv6": "2600:3c18::2000:60ff:fe0f:6e83", - "STUNOnly": true, - "CanPort80": true - } - ] - }, - "8": { - "RegionID": 8, - "RegionCode": "lhr", - "RegionName": "London", - "Latitude": 51.5072, - "Longitude": 0.1276, - "Nodes": [ - { - "Name": "8f", - "RegionID": 8, - "HostName": "derp8f.tailscale.com", - "IPv4": "176.58.88.183", - "IPv6": "2a00:dd80:3a::dfa", - "CanPort80": true - }, - { - "Name": "8g", - "RegionID": 8, - "HostName": "derp8g.tailscale.com", - "IPv4": "176.58.92.254", - "IPv6": "2a00:dd80:3a::ed", - "CanPort80": true - }, - { - "Name": "8e", - "RegionID": 8, - "HostName": "derp8e.tailscale.com", - "IPv4": "176.58.92.144", - "IPv6": "2a00:dd80:3a::b33", - "CanPort80": true - } - ] - }, - "9": { - "RegionID": 9, - "RegionCode": "dfw", - "RegionName": "Dallas", - "Latitude": 32.779167, - "Longitude": -96.808889, - "Nodes": [ - { - "Name": "9e", - "RegionID": 9, - "HostName": "derp9e.tailscale.com", - "IPv4": "192.73.248.83", - "IPv6": "2607:f740:100::359", - "CanPort80": true - }, - { - "Name": "9f", - "RegionID": 9, - "HostName": "derp9f.tailscale.com", - "IPv4": "209.177.156.197", - "IPv6": "2607:f740:100::cad", - "CanPort80": true - }, - { - "Name": "9d", - "RegionID": 9, - "HostName": "derp9d.tailscale.com", - "IPv4": "209.177.156.94", - "IPv6": "2607:f740:100::c05", - "CanPort80": true - } - ] - } - } - }, - "DisplayMessages": null, - "TKAEnabled": false, - "TKAHead": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", - "Domain": "kratail2tid@passkey", - "DomainAuditLogID": "", - "UserProfiles": { - "301794218943819": { - "ID": 301794218943819, - "LoginName": "tagged-prod.tail78f774.ts.net", - "DisplayName": "tagged-prod" - } - } + "PacketFilterRules": 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.124.195.93": { - "peer_name": "exit-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-server/tailscaled.sock whois --json 100.124.195.93", - "response": null - }, - "100.116.18.24": { - "peer_name": "exit-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-server/tailscaled.sock whois --json 100.116.18.24", - "response": null - }, - "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.107.162.14": { - "peer_name": "group-a-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-server/tailscaled.sock whois --json 100.107.162.14", - "response": null - }, - "100.77.135.18": { - "peer_name": "group-b-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-server/tailscaled.sock whois --json 100.77.135.18", - "response": null - }, - "100.105.127.107": { - "peer_name": "multi-exit-router", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-server/tailscaled.sock whois --json 100.105.127.107", - "response": null - }, - "100.109.43.124": { - "peer_name": "router-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-server/tailscaled.sock whois --json 100.109.43.124", - "response": null - }, - "100.65.172.123": { - "peer_name": "router-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-server/tailscaled.sock whois --json 100.65.172.123", - "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 - } - }, "netmap": { - "SelfNode": { - "ID": 1440249486084758, - "StableID": "nXRbBtuHFC11CNTRL", - "Name": "tagged-server.tail78f774.ts.net.", - "User": 1440249486084758, - "Key": "nodekey:7d5c34b3e8082069d0a82838165c33f8e1b5eb32c6211c2d23d4fe8fb9ec4a19", - "DiscoKey": "discokey:aa5732e314175928eff41cc8f8a7b6edd4694b7d00e420a6573ecc11a88cb203", - "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:57971", "10.65.0.27:57971", "172.17.0.1:57971"], - "Hostinfo": { - "Hostname": "tagged-server", - "Services": [ - { "Proto": "peerapi4", "Port": 46499 }, - { "Proto": "peerapi6", "Port": 46499 }, - { "Proto": "peerapi-dns-proxy", "Port": 1 } - ] - }, - "Created": "2026-01-23T10:10:26.365653609Z", - "Tags": ["tag:server"], - "MachineAuthorized": true, - "CapMap": { - "https://tailscale.com/cap/file-sharing": null, - "https://tailscale.com/cap/is-owner": null, - "https://tailscale.com/cap/ssh": null, - "https://tailscale.com/cap/tailnet-lock": null, - "probe-udp-lifetime": null, - "ssh-behavior-v1": null, - "ssh-env-vars": null, - "store-appc-routes": null, - "tailnet-display-name": ["kratail2tid@passkey"] - }, - "ComputedName": "tagged-server", - "ComputedNameWithHost": "tagged-server" - }, - "AllCaps": [ - "ssh-behavior-v1", - "ssh-env-vars", - "https://tailscale.com/cap/file-sharing", - "https://tailscale.com/cap/is-owner", - "https://tailscale.com/cap/tailnet-lock", - "probe-udp-lifetime", - "https://tailscale.com/cap/ssh", - "store-appc-routes", - "tailnet-display-name" - ], - "NodeKey": "nodekey:7d5c34b3e8082069d0a82838165c33f8e1b5eb32c6211c2d23d4fe8fb9ec4a19", - "MachineKey": "mkey:7d9c55c88bb618638f3f049b95c797f64eb0259810146d2644fef3e53acfdf6b", "Peers": [], - "DNS": { - "Routes": { - "tail78f774.ts.net.": null, - "ts.net.": [{ "Addr": "199.247.155.53" }, { "Addr": "2620:111:8007::53" }] - }, - "Domains": ["tail78f774.ts.net"], - "Proxied": true, - "ExitNodeFilteredSet": [".ts.net", ".tailscale.net"] - }, - "PacketFilter": [], - "PacketFilterRules": null, - "SSHPolicy": { "rules": [] }, - "CollectServices": false, - "DERPMap": { - "Regions": { - "1": { - "RegionID": 1, - "RegionCode": "nyc", - "RegionName": "New York City", - "Latitude": 40.7128, - "Longitude": -74.006, - "Nodes": [ - { - "Name": "1h", - "RegionID": 1, - "HostName": "derp1h.tailscale.com", - "IPv4": "199.38.181.93", - "IPv6": "2607:f740:f::afd", - "CanPort80": true - }, - { - "Name": "1g", - "RegionID": 1, - "HostName": "derp1g.tailscale.com", - "IPv4": "209.177.145.120", - "IPv6": "2607:f740:f::3eb", - "CanPort80": true - }, - { - "Name": "1i", - "RegionID": 1, - "HostName": "derp1i.tailscale.com", - "IPv4": "199.38.181.103", - "IPv6": "2607:f740:f::e19", - "CanPort80": true - }, - { - "Name": "1f", - "RegionID": 1, - "HostName": "derp1f.tailscale.com", - "IPv4": "199.38.181.104", - "IPv6": "2607:f740:f::bc", - "CanPort80": true - } - ] - }, - "10": { - "RegionID": 10, - "RegionCode": "sea", - "RegionName": "Seattle", - "Latitude": 47.609722, - "Longitude": -122.333056, - "Nodes": [ - { - "Name": "10c", - "RegionID": 10, - "HostName": "derp10c.tailscale.com", - "IPv4": "192.73.240.121", - "IPv6": "2607:f740:14::40c", - "CanPort80": true - }, - { - "Name": "10d", - "RegionID": 10, - "HostName": "derp10d.tailscale.com", - "IPv4": "192.73.240.132", - "IPv6": "2607:f740:14::500", - "CanPort80": true - }, - { - "Name": "10b", - "RegionID": 10, - "HostName": "derp10b.tailscale.com", - "IPv4": "192.73.240.161", - "IPv6": "2607:f740:14::61c", - "CanPort80": true - } - ] - }, - "11": { - "RegionID": 11, - "RegionCode": "sao", - "RegionName": "São Paulo", - "Latitude": -23.55, - "Longitude": -46.633333, - "Nodes": [ - { - "Name": "11f", - "RegionID": 11, - "HostName": "derp11f.tailscale.com", - "IPv4": "172.237.61.197", - "IPv6": "2600:3c0d::2000:3bff:fe44:6166", - "CanPort80": true - }, - { - "Name": "11g", - "RegionID": 11, - "HostName": "derp11g.tailscale.com", - "IPv4": "172.237.61.190", - "IPv6": "2600:3c0d::2000:62ff:febe:2e67", - "CanPort80": true - }, - { - "Name": "11e", - "RegionID": 11, - "HostName": "derp11e.tailscale.com", - "IPv4": "172.237.61.194", - "IPv6": "2600:3c0d::2000:d2ff:fe43:1790", - "CanPort80": true - } - ] - }, - "12": { - "RegionID": 12, - "RegionCode": "ord", - "RegionName": "Chicago", - "Latitude": 41.881944, - "Longitude": -87.627778, - "Nodes": [ - { - "Name": "12e", - "RegionID": 12, - "HostName": "derp12e.tailscale.com", - "IPv4": "209.177.158.15", - "IPv6": "2607:f740:e::b17", - "CanPort80": true - }, - { - "Name": "12f", - "RegionID": 12, - "HostName": "derp12f.tailscale.com", - "IPv4": "199.38.182.118", - "IPv6": "2607:f740:e::4c8", - "CanPort80": true - }, - { - "Name": "12d", - "RegionID": 12, - "HostName": "derp12d.tailscale.com", - "IPv4": "209.177.158.246", - "IPv6": "2607:f740:e::811", - "CanPort80": true - } - ] - }, - "13": { - "RegionID": 13, - "RegionCode": "den", - "RegionName": "Denver", - "Latitude": 39.7392, - "Longitude": -104.9849, - "Nodes": [ - { - "Name": "13c", - "RegionID": 13, - "HostName": "derp13c.tailscale.com", - "IPv4": "192.73.242.28", - "IPv6": "2607:f740:16::5c", - "CanPort80": true - }, - { - "Name": "13d", - "RegionID": 13, - "HostName": "derp13d.tailscale.com", - "IPv4": "192.73.242.204", - "IPv6": "2607:f740:16::c23", - "CanPort80": true - }, - { - "Name": "13b", - "RegionID": 13, - "HostName": "derp13b.tailscale.com", - "IPv4": "192.73.242.187", - "IPv6": "2607:f740:16::640", - "CanPort80": true - } - ] - }, - "14": { - "RegionID": 14, - "RegionCode": "ams", - "RegionName": "Amsterdam", - "Latitude": 52.372778, - "Longitude": 4.893611, - "Nodes": [ - { - "Name": "14c", - "RegionID": 14, - "HostName": "derp14c.tailscale.com", - "IPv4": "176.58.93.147", - "IPv6": "2a00:dd80:3c::b09", - "CanPort80": true - }, - { - "Name": "14d", - "RegionID": 14, - "HostName": "derp14d.tailscale.com", - "IPv4": "176.58.93.154", - "IPv6": "2a00:dd80:3c::3d5", - "CanPort80": true - }, - { - "Name": "14b", - "RegionID": 14, - "HostName": "derp14b.tailscale.com", - "IPv4": "176.58.93.248", - "IPv6": "2a00:dd80:3c::807", - "CanPort80": true - } - ] - }, - "15": { - "RegionID": 15, - "RegionCode": "jnb", - "RegionName": "Johannesburg", - "Latitude": -26.204444, - "Longitude": 28.045556, - "Nodes": [ - { - "Name": "15c", - "RegionID": 15, - "HostName": "derp15c.tailscale.com", - "IPv4": "102.67.165.185", - "IPv6": "2c0f:edb0:0:10::b59", - "CanPort80": true - }, - { - "Name": "15d", - "RegionID": 15, - "HostName": "derp15d.tailscale.com", - "IPv4": "102.67.165.36", - "IPv6": "2c0f:edb0:0:10::599", - "CanPort80": true - }, - { - "Name": "15b", - "RegionID": 15, - "HostName": "derp15b.tailscale.com", - "IPv4": "102.67.165.90", - "IPv6": "2c0f:edb0:0:10::963", - "CanPort80": true - } - ] - }, - "16": { - "RegionID": 16, - "RegionCode": "mia", - "RegionName": "Miami", - "Latitude": 25.78, - "Longitude": -80.21, - "Nodes": [ - { - "Name": "16c", - "RegionID": 16, - "HostName": "derp16c.tailscale.com", - "IPv4": "192.73.243.229", - "IPv6": "2607:f740:17::4e4", - "CanPort80": true - }, - { - "Name": "16d", - "RegionID": 16, - "HostName": "derp16d.tailscale.com", - "IPv4": "192.73.243.141", - "IPv6": "2607:f740:17::475", - "CanPort80": true - }, - { - "Name": "16b", - "RegionID": 16, - "HostName": "derp16b.tailscale.com", - "IPv4": "192.73.243.135", - "IPv6": "2607:f740:17::476", - "CanPort80": true - } - ] - }, - "17": { - "RegionID": 17, - "RegionCode": "lax", - "RegionName": "Los Angeles", - "Latitude": 34.05, - "Longitude": -118.25, - "Nodes": [ - { - "Name": "17c", - "RegionID": 17, - "HostName": "derp17c.tailscale.com", - "IPv4": "208.111.40.12", - "IPv6": "2607:f740:c::10", - "CanPort80": true - }, - { - "Name": "17d", - "RegionID": 17, - "HostName": "derp17d.tailscale.com", - "IPv4": "208.111.40.216", - "IPv6": "2607:f740:c::e1b", - "CanPort80": true - }, - { - "Name": "17b", - "RegionID": 17, - "HostName": "derp17b.tailscale.com", - "IPv4": "192.73.244.245", - "IPv6": "2607:f740:c::646", - "CanPort80": true - } - ] - }, - "18": { - "RegionID": 18, - "RegionCode": "par", - "RegionName": "Paris", - "Latitude": 48.856667, - "Longitude": 2.352222, - "Nodes": [ - { - "Name": "18c", - "RegionID": 18, - "HostName": "derp18c.tailscale.com", - "IPv4": "176.58.90.207", - "IPv6": "2a00:dd80:3e::c19", - "CanPort80": true - }, - { - "Name": "18d", - "RegionID": 18, - "HostName": "derp18d.tailscale.com", - "IPv4": "176.58.90.104", - "IPv6": "2a00:dd80:3e::f2e", - "CanPort80": true - }, - { - "Name": "18b", - "RegionID": 18, - "HostName": "derp18b.tailscale.com", - "IPv4": "176.58.90.147", - "IPv6": "2a00:dd80:3e::363", - "CanPort80": true - } - ] - }, - "19": { - "RegionID": 19, - "RegionCode": "mad", - "RegionName": "Madrid", - "Latitude": 40.416944, - "Longitude": -3.703333, - "Nodes": [ - { - "Name": "19c", - "RegionID": 19, - "HostName": "derp19c.tailscale.com", - "IPv4": "45.159.97.61", - "IPv6": "2a00:dd80:14:10::20", - "CanPort80": true - }, - { - "Name": "19d", - "RegionID": 19, - "HostName": "derp19d.tailscale.com", - "IPv4": "45.159.97.233", - "IPv6": "2a00:dd80:14:10::34a", - "CanPort80": true - }, - { - "Name": "19b", - "RegionID": 19, - "HostName": "derp19b.tailscale.com", - "IPv4": "45.159.97.144", - "IPv6": "2a00:dd80:14:10::335", - "CanPort80": true - } - ] - }, - "2": { - "RegionID": 2, - "RegionCode": "sfo", - "RegionName": "San Francisco", - "Latitude": 37.7775, - "Longitude": -122.416389, - "Nodes": [ - { - "Name": "2e", - "RegionID": 2, - "HostName": "derp2e.tailscale.com", - "IPv4": "192.73.252.134", - "IPv6": "2607:f740:0:3f::44c", - "CanPort80": true - }, - { - "Name": "2f", - "RegionID": 2, - "HostName": "derp2f.tailscale.com", - "IPv4": "208.111.34.178", - "IPv6": "2607:f740:0:3f::f4", - "CanPort80": true - }, - { - "Name": "2d", - "RegionID": 2, - "HostName": "derp2d.tailscale.com", - "IPv4": "192.73.252.65", - "IPv6": "2607:f740:0:3f::287", - "CanPort80": true - } - ] - }, - "20": { - "RegionID": 20, - "RegionCode": "hkg", - "RegionName": "Hong Kong", - "Latitude": 22.3193, - "Longitude": 114.1694, - "Nodes": [ - { - "Name": "20c", - "RegionID": 20, - "HostName": "derp20c.tailscale.com", - "IPv4": "205.147.105.30", - "IPv6": "2403:2500:8000:1::5fb", - "CanPort80": true - }, - { - "Name": "20d", - "RegionID": 20, - "HostName": "derp20d.tailscale.com", - "IPv4": "205.147.105.78", - "IPv6": "2403:2500:8000:1::e9a", - "CanPort80": true - }, - { - "Name": "20b", - "RegionID": 20, - "HostName": "derp20b.tailscale.com", - "IPv4": "103.6.84.152", - "IPv6": "2403:2500:8000:1::ef6", - "CanPort80": true - } - ] - }, - "21": { - "RegionID": 21, - "RegionCode": "tor", - "RegionName": "Toronto", - "Latitude": 43.741667, - "Longitude": -79.373333, - "Nodes": [ - { - "Name": "21c", - "RegionID": 21, - "HostName": "derp21c.tailscale.com", - "IPv4": "162.248.221.215", - "IPv6": "2607:f740:50::f10", - "CanPort80": true - }, - { - "Name": "21d", - "RegionID": 21, - "HostName": "derp21d.tailscale.com", - "IPv4": "162.248.221.248", - "IPv6": "2607:f740:50::ca4", - "CanPort80": true - }, - { - "Name": "21b", - "RegionID": 21, - "HostName": "derp21b.tailscale.com", - "IPv4": "162.248.221.199", - "IPv6": "2607:f740:50::1d1", - "CanPort80": true - } - ] - }, - "22": { - "RegionID": 22, - "RegionCode": "waw", - "RegionName": "Warsaw", - "Latitude": 52.23, - "Longitude": 21.011111, - "Nodes": [ - { - "Name": "22c", - "RegionID": 22, - "HostName": "derp22c.tailscale.com", - "IPv4": "45.159.98.253", - "IPv6": "2a00:dd80:40:100::3f", - "CanPort80": true - }, - { - "Name": "22d", - "RegionID": 22, - "HostName": "derp22d.tailscale.com", - "IPv4": "45.159.98.145", - "IPv6": "2a00:dd80:40:100::211", - "CanPort80": true - }, - { - "Name": "22b", - "RegionID": 22, - "HostName": "derp22b.tailscale.com", - "IPv4": "45.159.98.196", - "IPv6": "2a00:dd80:40:100::316", - "CanPort80": true - } - ] - }, - "23": { - "RegionID": 23, - "RegionCode": "dbi", - "RegionName": "Dubai", - "Latitude": 25.263056, - "Longitude": 55.297222, - "Nodes": [ - { - "Name": "23c", - "RegionID": 23, - "HostName": "derp23c.tailscale.com", - "IPv4": "185.34.3.207", - "IPv6": "2a00:dd80:3f:100::a50", - "CanPort80": true - }, - { - "Name": "23d", - "RegionID": 23, - "HostName": "derp23d.tailscale.com", - "IPv4": "185.34.3.75", - "IPv6": "2a00:dd80:3f:100::97e", - "CanPort80": true - }, - { - "Name": "23b", - "RegionID": 23, - "HostName": "derp23b.tailscale.com", - "IPv4": "185.34.3.232", - "IPv6": "2a00:dd80:3f:100::76f", - "CanPort80": true - } - ] - }, - "24": { - "RegionID": 24, - "RegionCode": "hnl", - "RegionName": "Honolulu", - "Latitude": 21.306944, - "Longitude": -157.858333, - "Nodes": [ - { - "Name": "24c", - "RegionID": 24, - "HostName": "derp24c.tailscale.com", - "IPv4": "208.83.233.233", - "IPv6": "2001:19f0:c000:c591:5400:04ff:fe26:2c5f", - "CanPort80": true - }, - { - "Name": "24d", - "RegionID": 24, - "HostName": "derp24d.tailscale.com", - "IPv4": "208.72.155.133", - "IPv6": "2001:19f0:c000:c564:5400:04ff:fe26:2ba8", - "CanPort80": true - }, - { - "Name": "24b", - "RegionID": 24, - "HostName": "derp24b.tailscale.com", - "IPv4": "208.83.234.151", - "IPv6": "2001:19f0:c000:c586:5400:04ff:fe26:2ba6", - "CanPort80": true - } - ] - }, - "25": { - "RegionID": 25, - "RegionCode": "nai", - "RegionName": "Nairobi", - "Latitude": -1.286389, - "Longitude": 36.817222, - "Nodes": [ - { - "Name": "25c", - "RegionID": 25, - "HostName": "derp25c.tailscale.com", - "IPv4": "102.67.167.37", - "IPv6": "2c0f:edb0:2000:1::2c7", - "CanPort80": true - }, - { - "Name": "25d", - "RegionID": 25, - "HostName": "derp25d.tailscale.com", - "IPv4": "102.67.167.188", - "IPv6": "2c0f:edb0:2000:1::188", - "CanPort80": true - }, - { - "Name": "25b", - "RegionID": 25, - "HostName": "derp25b.tailscale.com", - "IPv4": "102.67.167.245", - "IPv6": "2c0f:edb0:2000:1::2e9", - "CanPort80": true - } - ] - }, - "26": { - "RegionID": 26, - "RegionCode": "nue", - "RegionName": "Nuremberg", - "Latitude": 49.453889, - "Longitude": 11.0775, - "Nodes": [ - { - "Name": "26c", - "RegionID": 26, - "HostName": "derp26c.tailscale.com", - "IPv4": "49.12.193.137", - "IPv6": "2a01:4f8:1c1c:5c70::1", - "CanPort80": true - }, - { - "Name": "26d", - "RegionID": 26, - "HostName": "derp26d.tailscale.com", - "IPv4": "49.13.204.141", - "IPv6": "2a01:4f8:1c0c:7d06::1", - "CanPort80": true - }, - { - "Name": "26b", - "RegionID": 26, - "HostName": "derp26b.tailscale.com", - "IPv4": "167.235.72.200", - "IPv6": "2a01:4f8:1c1c:47b6::1", - "CanPort80": true - } - ] - }, - "27": { - "RegionID": 27, - "RegionCode": "iad", - "RegionName": "Ashburn", - "Latitude": 39.03, - "Longitude": -77.471111, - "Nodes": [ - { - "Name": "27d", - "RegionID": 27, - "HostName": "derp27d.tailscale.com", - "IPv4": "178.156.152.106", - "IPv6": "2a01:4ff:f0:3c8e::1", - "CanPort80": true - }, - { - "Name": "27c", - "RegionID": 27, - "HostName": "derp27c.tailscale.com", - "IPv4": "178.156.152.91", - "IPv6": "2a01:4ff:f0:3913::1", - "CanPort80": true - }, - { - "Name": "27e", - "RegionID": 27, - "HostName": "derp27e.tailscale.com", - "IPv4": "178.156.134.232", - "IPv6": "2a01:4ff:f0:28d4::1", - "CanPort80": true - }, - { - "Name": "27b", - "RegionID": 27, - "HostName": "derp27b.tailscale.com", - "IPv4": "5.161.218.233", - "IPv6": "2a01:4ff:f0:3db9::1", - "CanPort80": true - } - ] - }, - "28": { - "RegionID": 28, - "RegionCode": "hel", - "RegionName": "Helsinki", - "Latitude": 60.170833, - "Longitude": 24.9375, - "Nodes": [ - { - "Name": "28c", - "RegionID": 28, - "HostName": "derp28c.tailscale.com", - "IPv4": "95.217.2.165", - "IPv6": "2a01:4f9:c012:cd74::1", - "CanPort80": true - }, - { - "Name": "28d", - "RegionID": 28, - "HostName": "derp28d.tailscale.com", - "IPv4": "157.180.28.32", - "IPv6": "2a01:4f9:c012:2e5b::1", - "CanPort80": true - }, - { - "Name": "28b", - "RegionID": 28, - "HostName": "derp28b.tailscale.com", - "IPv4": "65.109.143.62", - "IPv6": "2a01:4f9:c012:d55c::1", - "CanPort80": true - } - ] - }, - "3": { - "RegionID": 3, - "RegionCode": "sin", - "RegionName": "Singapore", - "Latitude": 1.3521, - "Longitude": 103.8198, - "Nodes": [ - { - "Name": "3g", - "RegionID": 3, - "HostName": "derp3g.tailscale.com", - "IPv4": "172.237.72.79", - "IPv6": "2600:3c15::2000:adff:fe08:6fab", - "CanPort80": true - }, - { - "Name": "3f", - "RegionID": 3, - "HostName": "derp3f.tailscale.com", - "IPv4": "172.237.72.8", - "IPv6": "2600:3c15::2000:53ff:fe48:a668", - "CanPort80": true - }, - { - "Name": "3h", - "RegionID": 3, - "HostName": "derp3h.tailscale.com", - "IPv4": "172.237.66.30", - "IPv6": "2600:3c15::2000:3dff:fe44:50aa", - "CanPort80": true - }, - { - "Name": "3e", - "RegionID": 3, - "HostName": "derp3e.tailscale.com", - "IPv4": "172.237.72.43", - "IPv6": "2600:3c15::2000:6cff:fee4:d799", - "CanPort80": true - } - ] - }, - "4": { - "RegionID": 4, - "RegionCode": "fra", - "RegionName": "Frankfurt", - "Latitude": 50.1109, - "Longitude": 8.6821, - "Nodes": [ - { - "Name": "4h", - "RegionID": 4, - "HostName": "derp4h.tailscale.com", - "IPv4": "185.40.234.77", - "IPv6": "2a00:dd80:20::bcf", - "CanPort80": true - }, - { - "Name": "4g", - "RegionID": 4, - "HostName": "derp4g.tailscale.com", - "IPv4": "185.40.234.113", - "IPv6": "2a00:dd80:20::8f", - "CanPort80": true - }, - { - "Name": "4i", - "RegionID": 4, - "HostName": "derp4i.tailscale.com", - "IPv4": "185.40.234.53", - "IPv6": "2a00:dd80:20::8a6", - "CanPort80": true - }, - { - "Name": "4f", - "RegionID": 4, - "HostName": "derp4f.tailscale.com", - "IPv4": "185.40.234.219", - "IPv6": "2a00:dd80:20::a25", - "CanPort80": true - } - ] - }, - "5": { - "RegionID": 5, - "RegionCode": "syd", - "RegionName": "Sydney", - "Latitude": -33.867778, - "Longitude": 151.21, - "Nodes": [ - { - "Name": "5f", - "RegionID": 5, - "HostName": "derp5f.tailscale.com", - "IPv4": "172.105.166.103", - "IPv6": "2400:8907::2000:ccff:fe1f:80da", - "CanPort80": true - }, - { - "Name": "5g", - "RegionID": 5, - "HostName": "derp5g.tailscale.com", - "IPv4": "172.105.169.57", - "IPv6": "2400:8907::2000:2fff:fea7:57f4", - "CanPort80": true - }, - { - "Name": "5e", - "RegionID": 5, - "HostName": "derp5e.tailscale.com", - "IPv4": "172.105.179.230", - "IPv6": "2400:8907::2000:ceff:fe8d:4f4e", - "CanPort80": true - } - ] - }, - "6": { - "RegionID": 6, - "RegionCode": "blr", - "RegionName": "Bengaluru", - "Latitude": 12.9716, - "Longitude": 77.5946, - "Nodes": [ - { - "Name": "6a", - "RegionID": 6, - "HostName": "derp6.tailscale.com", - "IPv4": "68.183.90.120", - "IPv6": "2400:6180:100:d0::982:d001", - "CanPort80": true - } - ] - }, - "7": { - "RegionID": 7, - "RegionCode": "tok", - "RegionName": "Tokyo", - "Latitude": 35.6764, - "Longitude": 139.65, - "Nodes": [ - { - "Name": "7g", - "RegionID": 7, - "HostName": "derp7g.tailscale.com", - "IPv4": "172.238.6.179", - "IPv6": "2600:3c18::2000:3fff:fe80:3ebd", - "CanPort80": true - }, - { - "Name": "7f", - "RegionID": 7, - "HostName": "derp7f.tailscale.com", - "IPv4": "172.238.6.34", - "IPv6": "2600:3c18::2000:acff:fe8e:3ed5", - "CanPort80": true - }, - { - "Name": "7h", - "RegionID": 7, - "HostName": "derp7h.tailscale.com", - "IPv4": "172.237.28.183", - "IPv6": "2600:3c18::2000:b1ff:fea9:4560", - "CanPort80": true - }, - { - "Name": "7e", - "RegionID": 7, - "HostName": "derp7e.tailscale.com", - "IPv4": "172.238.6.180", - "IPv6": "2600:3c18::2000:60ff:fe0f:6e83", - "STUNOnly": true, - "CanPort80": true - } - ] - }, - "8": { - "RegionID": 8, - "RegionCode": "lhr", - "RegionName": "London", - "Latitude": 51.5072, - "Longitude": 0.1276, - "Nodes": [ - { - "Name": "8f", - "RegionID": 8, - "HostName": "derp8f.tailscale.com", - "IPv4": "176.58.88.183", - "IPv6": "2a00:dd80:3a::dfa", - "CanPort80": true - }, - { - "Name": "8g", - "RegionID": 8, - "HostName": "derp8g.tailscale.com", - "IPv4": "176.58.92.254", - "IPv6": "2a00:dd80:3a::ed", - "CanPort80": true - }, - { - "Name": "8e", - "RegionID": 8, - "HostName": "derp8e.tailscale.com", - "IPv4": "176.58.92.144", - "IPv6": "2a00:dd80:3a::b33", - "CanPort80": true - } - ] - }, - "9": { - "RegionID": 9, - "RegionCode": "dfw", - "RegionName": "Dallas", - "Latitude": 32.779167, - "Longitude": -96.808889, - "Nodes": [ - { - "Name": "9e", - "RegionID": 9, - "HostName": "derp9e.tailscale.com", - "IPv4": "192.73.248.83", - "IPv6": "2607:f740:100::359", - "CanPort80": true - }, - { - "Name": "9f", - "RegionID": 9, - "HostName": "derp9f.tailscale.com", - "IPv4": "209.177.156.197", - "IPv6": "2607:f740:100::cad", - "CanPort80": true - }, - { - "Name": "9d", - "RegionID": 9, - "HostName": "derp9d.tailscale.com", - "IPv4": "209.177.156.94", - "IPv6": "2607:f740:100::c05", - "CanPort80": true - } - ] - } - } - }, - "DisplayMessages": null, - "TKAEnabled": false, - "TKAHead": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", - "Domain": "kratail2tid@passkey", - "DomainAuditLogID": "", - "UserProfiles": { - "1440249486084758": { - "ID": 1440249486084758, - "LoginName": "tagged-server.tail78f774.ts.net", - "DisplayName": "tagged-server" - } - } + "PacketFilterRules": 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.124.195.93": { - "peer_name": "exit-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-kris/tailscaled.sock whois --json 100.124.195.93", - "response": null - }, - "100.116.18.24": { - "peer_name": "exit-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-kris/tailscaled.sock whois --json 100.116.18.24", - "response": null - }, - "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.107.162.14": { - "peer_name": "group-a-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-kris/tailscaled.sock whois --json 100.107.162.14", - "response": null - }, - "100.77.135.18": { - "peer_name": "group-b-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-kris/tailscaled.sock whois --json 100.77.135.18", - "response": null - }, - "100.105.127.107": { - "peer_name": "multi-exit-router", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-kris/tailscaled.sock whois --json 100.105.127.107", - "response": null - }, - "100.109.43.124": { - "peer_name": "router-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-kris/tailscaled.sock whois --json 100.109.43.124", - "response": null - }, - "100.65.172.123": { - "peer_name": "router-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-kris/tailscaled.sock whois --json 100.65.172.123", - "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 - } - }, "netmap": { - "SelfNode": { - "ID": 7728836216590060, - "StableID": "nf4dJTRQM321CNTRL", - "Name": "user-kris.tail78f774.ts.net.", - "User": 4538565228176803, - "Key": "nodekey:40d0f8f49fd519e4a4a2b7d278dcc8863254d4fb8b0219f1d1304cdd172e795f", - "KeyExpiry": "2026-08-19T14:09:34Z", - "DiscoKey": "discokey:60de987544859962048376b0950731bfa8017a7fc7df694ef376d4bb42eb9871", - "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:59717", "10.65.0.27:59717", "172.17.0.1:59717"], - "Hostinfo": { - "Hostname": "user-kris", - "Services": [ - { "Proto": "peerapi4", "Port": 40159 }, - { "Proto": "peerapi6", "Port": 40159 }, - { "Proto": "peerapi-dns-proxy", "Port": 1 } - ] - }, - "Created": "2026-02-20T14:09:34.803901523Z", - "MachineAuthorized": true, - "CapMap": { - "https://tailscale.com/cap/file-sharing": null, - "https://tailscale.com/cap/is-admin": null, - "https://tailscale.com/cap/ssh": null, - "https://tailscale.com/cap/tailnet-lock": null, - "probe-udp-lifetime": null, - "ssh-behavior-v1": null, - "ssh-env-vars": null, - "store-appc-routes": null, - "tailnet-display-name": ["kratail2tid@passkey"] - }, - "ComputedName": "user-kris", - "ComputedNameWithHost": "user-kris" - }, - "AllCaps": [ - "store-appc-routes", - "tailnet-display-name", - "https://tailscale.com/cap/file-sharing", - "https://tailscale.com/cap/tailnet-lock", - "ssh-behavior-v1", - "https://tailscale.com/cap/is-admin", - "probe-udp-lifetime", - "ssh-env-vars", - "https://tailscale.com/cap/ssh" - ], - "NodeKey": "nodekey:40d0f8f49fd519e4a4a2b7d278dcc8863254d4fb8b0219f1d1304cdd172e795f", - "MachineKey": "mkey:ff16066d907c58407972ee4a05a30386bd21bc0b420d8f9290eb70b95b3e1457", "Peers": [], - "DNS": { - "Routes": { - "tail78f774.ts.net.": null, - "ts.net.": [{ "Addr": "199.247.155.53" }, { "Addr": "2620:111:8007::53" }] - }, - "Domains": ["tail78f774.ts.net"], - "Proxied": true, - "ExitNodeFilteredSet": [".ts.net", ".tailscale.net"] - }, - "PacketFilter": [], - "PacketFilterRules": null, - "SSHPolicy": { "rules": [] }, - "CollectServices": false, - "DERPMap": { - "Regions": { - "1": { - "RegionID": 1, - "RegionCode": "nyc", - "RegionName": "New York City", - "Latitude": 40.7128, - "Longitude": -74.006, - "Nodes": [ - { - "Name": "1h", - "RegionID": 1, - "HostName": "derp1h.tailscale.com", - "IPv4": "199.38.181.93", - "IPv6": "2607:f740:f::afd", - "CanPort80": true - }, - { - "Name": "1g", - "RegionID": 1, - "HostName": "derp1g.tailscale.com", - "IPv4": "209.177.145.120", - "IPv6": "2607:f740:f::3eb", - "CanPort80": true - }, - { - "Name": "1i", - "RegionID": 1, - "HostName": "derp1i.tailscale.com", - "IPv4": "199.38.181.103", - "IPv6": "2607:f740:f::e19", - "CanPort80": true - }, - { - "Name": "1f", - "RegionID": 1, - "HostName": "derp1f.tailscale.com", - "IPv4": "199.38.181.104", - "IPv6": "2607:f740:f::bc", - "CanPort80": true - } - ] - }, - "10": { - "RegionID": 10, - "RegionCode": "sea", - "RegionName": "Seattle", - "Latitude": 47.609722, - "Longitude": -122.333056, - "Nodes": [ - { - "Name": "10c", - "RegionID": 10, - "HostName": "derp10c.tailscale.com", - "IPv4": "192.73.240.121", - "IPv6": "2607:f740:14::40c", - "CanPort80": true - }, - { - "Name": "10d", - "RegionID": 10, - "HostName": "derp10d.tailscale.com", - "IPv4": "192.73.240.132", - "IPv6": "2607:f740:14::500", - "CanPort80": true - }, - { - "Name": "10b", - "RegionID": 10, - "HostName": "derp10b.tailscale.com", - "IPv4": "192.73.240.161", - "IPv6": "2607:f740:14::61c", - "CanPort80": true - } - ] - }, - "11": { - "RegionID": 11, - "RegionCode": "sao", - "RegionName": "São Paulo", - "Latitude": -23.55, - "Longitude": -46.633333, - "Nodes": [ - { - "Name": "11f", - "RegionID": 11, - "HostName": "derp11f.tailscale.com", - "IPv4": "172.237.61.197", - "IPv6": "2600:3c0d::2000:3bff:fe44:6166", - "CanPort80": true - }, - { - "Name": "11g", - "RegionID": 11, - "HostName": "derp11g.tailscale.com", - "IPv4": "172.237.61.190", - "IPv6": "2600:3c0d::2000:62ff:febe:2e67", - "CanPort80": true - }, - { - "Name": "11e", - "RegionID": 11, - "HostName": "derp11e.tailscale.com", - "IPv4": "172.237.61.194", - "IPv6": "2600:3c0d::2000:d2ff:fe43:1790", - "CanPort80": true - } - ] - }, - "12": { - "RegionID": 12, - "RegionCode": "ord", - "RegionName": "Chicago", - "Latitude": 41.881944, - "Longitude": -87.627778, - "Nodes": [ - { - "Name": "12e", - "RegionID": 12, - "HostName": "derp12e.tailscale.com", - "IPv4": "209.177.158.15", - "IPv6": "2607:f740:e::b17", - "CanPort80": true - }, - { - "Name": "12f", - "RegionID": 12, - "HostName": "derp12f.tailscale.com", - "IPv4": "199.38.182.118", - "IPv6": "2607:f740:e::4c8", - "CanPort80": true - }, - { - "Name": "12d", - "RegionID": 12, - "HostName": "derp12d.tailscale.com", - "IPv4": "209.177.158.246", - "IPv6": "2607:f740:e::811", - "CanPort80": true - } - ] - }, - "13": { - "RegionID": 13, - "RegionCode": "den", - "RegionName": "Denver", - "Latitude": 39.7392, - "Longitude": -104.9849, - "Nodes": [ - { - "Name": "13c", - "RegionID": 13, - "HostName": "derp13c.tailscale.com", - "IPv4": "192.73.242.28", - "IPv6": "2607:f740:16::5c", - "CanPort80": true - }, - { - "Name": "13d", - "RegionID": 13, - "HostName": "derp13d.tailscale.com", - "IPv4": "192.73.242.204", - "IPv6": "2607:f740:16::c23", - "CanPort80": true - }, - { - "Name": "13b", - "RegionID": 13, - "HostName": "derp13b.tailscale.com", - "IPv4": "192.73.242.187", - "IPv6": "2607:f740:16::640", - "CanPort80": true - } - ] - }, - "14": { - "RegionID": 14, - "RegionCode": "ams", - "RegionName": "Amsterdam", - "Latitude": 52.372778, - "Longitude": 4.893611, - "Nodes": [ - { - "Name": "14c", - "RegionID": 14, - "HostName": "derp14c.tailscale.com", - "IPv4": "176.58.93.147", - "IPv6": "2a00:dd80:3c::b09", - "CanPort80": true - }, - { - "Name": "14d", - "RegionID": 14, - "HostName": "derp14d.tailscale.com", - "IPv4": "176.58.93.154", - "IPv6": "2a00:dd80:3c::3d5", - "CanPort80": true - }, - { - "Name": "14b", - "RegionID": 14, - "HostName": "derp14b.tailscale.com", - "IPv4": "176.58.93.248", - "IPv6": "2a00:dd80:3c::807", - "CanPort80": true - } - ] - }, - "15": { - "RegionID": 15, - "RegionCode": "jnb", - "RegionName": "Johannesburg", - "Latitude": -26.204444, - "Longitude": 28.045556, - "Nodes": [ - { - "Name": "15c", - "RegionID": 15, - "HostName": "derp15c.tailscale.com", - "IPv4": "102.67.165.185", - "IPv6": "2c0f:edb0:0:10::b59", - "CanPort80": true - }, - { - "Name": "15d", - "RegionID": 15, - "HostName": "derp15d.tailscale.com", - "IPv4": "102.67.165.36", - "IPv6": "2c0f:edb0:0:10::599", - "CanPort80": true - }, - { - "Name": "15b", - "RegionID": 15, - "HostName": "derp15b.tailscale.com", - "IPv4": "102.67.165.90", - "IPv6": "2c0f:edb0:0:10::963", - "CanPort80": true - } - ] - }, - "16": { - "RegionID": 16, - "RegionCode": "mia", - "RegionName": "Miami", - "Latitude": 25.78, - "Longitude": -80.21, - "Nodes": [ - { - "Name": "16c", - "RegionID": 16, - "HostName": "derp16c.tailscale.com", - "IPv4": "192.73.243.229", - "IPv6": "2607:f740:17::4e4", - "CanPort80": true - }, - { - "Name": "16d", - "RegionID": 16, - "HostName": "derp16d.tailscale.com", - "IPv4": "192.73.243.141", - "IPv6": "2607:f740:17::475", - "CanPort80": true - }, - { - "Name": "16b", - "RegionID": 16, - "HostName": "derp16b.tailscale.com", - "IPv4": "192.73.243.135", - "IPv6": "2607:f740:17::476", - "CanPort80": true - } - ] - }, - "17": { - "RegionID": 17, - "RegionCode": "lax", - "RegionName": "Los Angeles", - "Latitude": 34.05, - "Longitude": -118.25, - "Nodes": [ - { - "Name": "17c", - "RegionID": 17, - "HostName": "derp17c.tailscale.com", - "IPv4": "208.111.40.12", - "IPv6": "2607:f740:c::10", - "CanPort80": true - }, - { - "Name": "17d", - "RegionID": 17, - "HostName": "derp17d.tailscale.com", - "IPv4": "208.111.40.216", - "IPv6": "2607:f740:c::e1b", - "CanPort80": true - }, - { - "Name": "17b", - "RegionID": 17, - "HostName": "derp17b.tailscale.com", - "IPv4": "192.73.244.245", - "IPv6": "2607:f740:c::646", - "CanPort80": true - } - ] - }, - "18": { - "RegionID": 18, - "RegionCode": "par", - "RegionName": "Paris", - "Latitude": 48.856667, - "Longitude": 2.352222, - "Nodes": [ - { - "Name": "18c", - "RegionID": 18, - "HostName": "derp18c.tailscale.com", - "IPv4": "176.58.90.207", - "IPv6": "2a00:dd80:3e::c19", - "CanPort80": true - }, - { - "Name": "18d", - "RegionID": 18, - "HostName": "derp18d.tailscale.com", - "IPv4": "176.58.90.104", - "IPv6": "2a00:dd80:3e::f2e", - "CanPort80": true - }, - { - "Name": "18b", - "RegionID": 18, - "HostName": "derp18b.tailscale.com", - "IPv4": "176.58.90.147", - "IPv6": "2a00:dd80:3e::363", - "CanPort80": true - } - ] - }, - "19": { - "RegionID": 19, - "RegionCode": "mad", - "RegionName": "Madrid", - "Latitude": 40.416944, - "Longitude": -3.703333, - "Nodes": [ - { - "Name": "19c", - "RegionID": 19, - "HostName": "derp19c.tailscale.com", - "IPv4": "45.159.97.61", - "IPv6": "2a00:dd80:14:10::20", - "CanPort80": true - }, - { - "Name": "19d", - "RegionID": 19, - "HostName": "derp19d.tailscale.com", - "IPv4": "45.159.97.233", - "IPv6": "2a00:dd80:14:10::34a", - "CanPort80": true - }, - { - "Name": "19b", - "RegionID": 19, - "HostName": "derp19b.tailscale.com", - "IPv4": "45.159.97.144", - "IPv6": "2a00:dd80:14:10::335", - "CanPort80": true - } - ] - }, - "2": { - "RegionID": 2, - "RegionCode": "sfo", - "RegionName": "San Francisco", - "Latitude": 37.7775, - "Longitude": -122.416389, - "Nodes": [ - { - "Name": "2e", - "RegionID": 2, - "HostName": "derp2e.tailscale.com", - "IPv4": "192.73.252.134", - "IPv6": "2607:f740:0:3f::44c", - "CanPort80": true - }, - { - "Name": "2f", - "RegionID": 2, - "HostName": "derp2f.tailscale.com", - "IPv4": "208.111.34.178", - "IPv6": "2607:f740:0:3f::f4", - "CanPort80": true - }, - { - "Name": "2d", - "RegionID": 2, - "HostName": "derp2d.tailscale.com", - "IPv4": "192.73.252.65", - "IPv6": "2607:f740:0:3f::287", - "CanPort80": true - } - ] - }, - "20": { - "RegionID": 20, - "RegionCode": "hkg", - "RegionName": "Hong Kong", - "Latitude": 22.3193, - "Longitude": 114.1694, - "Nodes": [ - { - "Name": "20c", - "RegionID": 20, - "HostName": "derp20c.tailscale.com", - "IPv4": "205.147.105.30", - "IPv6": "2403:2500:8000:1::5fb", - "CanPort80": true - }, - { - "Name": "20d", - "RegionID": 20, - "HostName": "derp20d.tailscale.com", - "IPv4": "205.147.105.78", - "IPv6": "2403:2500:8000:1::e9a", - "CanPort80": true - }, - { - "Name": "20b", - "RegionID": 20, - "HostName": "derp20b.tailscale.com", - "IPv4": "103.6.84.152", - "IPv6": "2403:2500:8000:1::ef6", - "CanPort80": true - } - ] - }, - "21": { - "RegionID": 21, - "RegionCode": "tor", - "RegionName": "Toronto", - "Latitude": 43.741667, - "Longitude": -79.373333, - "Nodes": [ - { - "Name": "21c", - "RegionID": 21, - "HostName": "derp21c.tailscale.com", - "IPv4": "162.248.221.215", - "IPv6": "2607:f740:50::f10", - "CanPort80": true - }, - { - "Name": "21d", - "RegionID": 21, - "HostName": "derp21d.tailscale.com", - "IPv4": "162.248.221.248", - "IPv6": "2607:f740:50::ca4", - "CanPort80": true - }, - { - "Name": "21b", - "RegionID": 21, - "HostName": "derp21b.tailscale.com", - "IPv4": "162.248.221.199", - "IPv6": "2607:f740:50::1d1", - "CanPort80": true - } - ] - }, - "22": { - "RegionID": 22, - "RegionCode": "waw", - "RegionName": "Warsaw", - "Latitude": 52.23, - "Longitude": 21.011111, - "Nodes": [ - { - "Name": "22c", - "RegionID": 22, - "HostName": "derp22c.tailscale.com", - "IPv4": "45.159.98.253", - "IPv6": "2a00:dd80:40:100::3f", - "CanPort80": true - }, - { - "Name": "22d", - "RegionID": 22, - "HostName": "derp22d.tailscale.com", - "IPv4": "45.159.98.145", - "IPv6": "2a00:dd80:40:100::211", - "CanPort80": true - }, - { - "Name": "22b", - "RegionID": 22, - "HostName": "derp22b.tailscale.com", - "IPv4": "45.159.98.196", - "IPv6": "2a00:dd80:40:100::316", - "CanPort80": true - } - ] - }, - "23": { - "RegionID": 23, - "RegionCode": "dbi", - "RegionName": "Dubai", - "Latitude": 25.263056, - "Longitude": 55.297222, - "Nodes": [ - { - "Name": "23c", - "RegionID": 23, - "HostName": "derp23c.tailscale.com", - "IPv4": "185.34.3.207", - "IPv6": "2a00:dd80:3f:100::a50", - "CanPort80": true - }, - { - "Name": "23d", - "RegionID": 23, - "HostName": "derp23d.tailscale.com", - "IPv4": "185.34.3.75", - "IPv6": "2a00:dd80:3f:100::97e", - "CanPort80": true - }, - { - "Name": "23b", - "RegionID": 23, - "HostName": "derp23b.tailscale.com", - "IPv4": "185.34.3.232", - "IPv6": "2a00:dd80:3f:100::76f", - "CanPort80": true - } - ] - }, - "24": { - "RegionID": 24, - "RegionCode": "hnl", - "RegionName": "Honolulu", - "Latitude": 21.306944, - "Longitude": -157.858333, - "Nodes": [ - { - "Name": "24c", - "RegionID": 24, - "HostName": "derp24c.tailscale.com", - "IPv4": "208.83.233.233", - "IPv6": "2001:19f0:c000:c591:5400:04ff:fe26:2c5f", - "CanPort80": true - }, - { - "Name": "24d", - "RegionID": 24, - "HostName": "derp24d.tailscale.com", - "IPv4": "208.72.155.133", - "IPv6": "2001:19f0:c000:c564:5400:04ff:fe26:2ba8", - "CanPort80": true - }, - { - "Name": "24b", - "RegionID": 24, - "HostName": "derp24b.tailscale.com", - "IPv4": "208.83.234.151", - "IPv6": "2001:19f0:c000:c586:5400:04ff:fe26:2ba6", - "CanPort80": true - } - ] - }, - "25": { - "RegionID": 25, - "RegionCode": "nai", - "RegionName": "Nairobi", - "Latitude": -1.286389, - "Longitude": 36.817222, - "Nodes": [ - { - "Name": "25c", - "RegionID": 25, - "HostName": "derp25c.tailscale.com", - "IPv4": "102.67.167.37", - "IPv6": "2c0f:edb0:2000:1::2c7", - "CanPort80": true - }, - { - "Name": "25d", - "RegionID": 25, - "HostName": "derp25d.tailscale.com", - "IPv4": "102.67.167.188", - "IPv6": "2c0f:edb0:2000:1::188", - "CanPort80": true - }, - { - "Name": "25b", - "RegionID": 25, - "HostName": "derp25b.tailscale.com", - "IPv4": "102.67.167.245", - "IPv6": "2c0f:edb0:2000:1::2e9", - "CanPort80": true - } - ] - }, - "26": { - "RegionID": 26, - "RegionCode": "nue", - "RegionName": "Nuremberg", - "Latitude": 49.453889, - "Longitude": 11.0775, - "Nodes": [ - { - "Name": "26c", - "RegionID": 26, - "HostName": "derp26c.tailscale.com", - "IPv4": "49.12.193.137", - "IPv6": "2a01:4f8:1c1c:5c70::1", - "CanPort80": true - }, - { - "Name": "26d", - "RegionID": 26, - "HostName": "derp26d.tailscale.com", - "IPv4": "49.13.204.141", - "IPv6": "2a01:4f8:1c0c:7d06::1", - "CanPort80": true - }, - { - "Name": "26b", - "RegionID": 26, - "HostName": "derp26b.tailscale.com", - "IPv4": "167.235.72.200", - "IPv6": "2a01:4f8:1c1c:47b6::1", - "CanPort80": true - } - ] - }, - "27": { - "RegionID": 27, - "RegionCode": "iad", - "RegionName": "Ashburn", - "Latitude": 39.03, - "Longitude": -77.471111, - "Nodes": [ - { - "Name": "27d", - "RegionID": 27, - "HostName": "derp27d.tailscale.com", - "IPv4": "178.156.152.106", - "IPv6": "2a01:4ff:f0:3c8e::1", - "CanPort80": true - }, - { - "Name": "27c", - "RegionID": 27, - "HostName": "derp27c.tailscale.com", - "IPv4": "178.156.152.91", - "IPv6": "2a01:4ff:f0:3913::1", - "CanPort80": true - }, - { - "Name": "27e", - "RegionID": 27, - "HostName": "derp27e.tailscale.com", - "IPv4": "178.156.134.232", - "IPv6": "2a01:4ff:f0:28d4::1", - "CanPort80": true - }, - { - "Name": "27b", - "RegionID": 27, - "HostName": "derp27b.tailscale.com", - "IPv4": "5.161.218.233", - "IPv6": "2a01:4ff:f0:3db9::1", - "CanPort80": true - } - ] - }, - "28": { - "RegionID": 28, - "RegionCode": "hel", - "RegionName": "Helsinki", - "Latitude": 60.170833, - "Longitude": 24.9375, - "Nodes": [ - { - "Name": "28c", - "RegionID": 28, - "HostName": "derp28c.tailscale.com", - "IPv4": "95.217.2.165", - "IPv6": "2a01:4f9:c012:cd74::1", - "CanPort80": true - }, - { - "Name": "28d", - "RegionID": 28, - "HostName": "derp28d.tailscale.com", - "IPv4": "157.180.28.32", - "IPv6": "2a01:4f9:c012:2e5b::1", - "CanPort80": true - }, - { - "Name": "28b", - "RegionID": 28, - "HostName": "derp28b.tailscale.com", - "IPv4": "65.109.143.62", - "IPv6": "2a01:4f9:c012:d55c::1", - "CanPort80": true - } - ] - }, - "3": { - "RegionID": 3, - "RegionCode": "sin", - "RegionName": "Singapore", - "Latitude": 1.3521, - "Longitude": 103.8198, - "Nodes": [ - { - "Name": "3g", - "RegionID": 3, - "HostName": "derp3g.tailscale.com", - "IPv4": "172.237.72.79", - "IPv6": "2600:3c15::2000:adff:fe08:6fab", - "CanPort80": true - }, - { - "Name": "3f", - "RegionID": 3, - "HostName": "derp3f.tailscale.com", - "IPv4": "172.237.72.8", - "IPv6": "2600:3c15::2000:53ff:fe48:a668", - "CanPort80": true - }, - { - "Name": "3h", - "RegionID": 3, - "HostName": "derp3h.tailscale.com", - "IPv4": "172.237.66.30", - "IPv6": "2600:3c15::2000:3dff:fe44:50aa", - "CanPort80": true - }, - { - "Name": "3e", - "RegionID": 3, - "HostName": "derp3e.tailscale.com", - "IPv4": "172.237.72.43", - "IPv6": "2600:3c15::2000:6cff:fee4:d799", - "CanPort80": true - } - ] - }, - "4": { - "RegionID": 4, - "RegionCode": "fra", - "RegionName": "Frankfurt", - "Latitude": 50.1109, - "Longitude": 8.6821, - "Nodes": [ - { - "Name": "4h", - "RegionID": 4, - "HostName": "derp4h.tailscale.com", - "IPv4": "185.40.234.77", - "IPv6": "2a00:dd80:20::bcf", - "CanPort80": true - }, - { - "Name": "4g", - "RegionID": 4, - "HostName": "derp4g.tailscale.com", - "IPv4": "185.40.234.113", - "IPv6": "2a00:dd80:20::8f", - "CanPort80": true - }, - { - "Name": "4i", - "RegionID": 4, - "HostName": "derp4i.tailscale.com", - "IPv4": "185.40.234.53", - "IPv6": "2a00:dd80:20::8a6", - "CanPort80": true - }, - { - "Name": "4f", - "RegionID": 4, - "HostName": "derp4f.tailscale.com", - "IPv4": "185.40.234.219", - "IPv6": "2a00:dd80:20::a25", - "CanPort80": true - } - ] - }, - "5": { - "RegionID": 5, - "RegionCode": "syd", - "RegionName": "Sydney", - "Latitude": -33.867778, - "Longitude": 151.21, - "Nodes": [ - { - "Name": "5f", - "RegionID": 5, - "HostName": "derp5f.tailscale.com", - "IPv4": "172.105.166.103", - "IPv6": "2400:8907::2000:ccff:fe1f:80da", - "CanPort80": true - }, - { - "Name": "5g", - "RegionID": 5, - "HostName": "derp5g.tailscale.com", - "IPv4": "172.105.169.57", - "IPv6": "2400:8907::2000:2fff:fea7:57f4", - "CanPort80": true - }, - { - "Name": "5e", - "RegionID": 5, - "HostName": "derp5e.tailscale.com", - "IPv4": "172.105.179.230", - "IPv6": "2400:8907::2000:ceff:fe8d:4f4e", - "CanPort80": true - } - ] - }, - "6": { - "RegionID": 6, - "RegionCode": "blr", - "RegionName": "Bengaluru", - "Latitude": 12.9716, - "Longitude": 77.5946, - "Nodes": [ - { - "Name": "6a", - "RegionID": 6, - "HostName": "derp6.tailscale.com", - "IPv4": "68.183.90.120", - "IPv6": "2400:6180:100:d0::982:d001", - "CanPort80": true - } - ] - }, - "7": { - "RegionID": 7, - "RegionCode": "tok", - "RegionName": "Tokyo", - "Latitude": 35.6764, - "Longitude": 139.65, - "Nodes": [ - { - "Name": "7g", - "RegionID": 7, - "HostName": "derp7g.tailscale.com", - "IPv4": "172.238.6.179", - "IPv6": "2600:3c18::2000:3fff:fe80:3ebd", - "CanPort80": true - }, - { - "Name": "7f", - "RegionID": 7, - "HostName": "derp7f.tailscale.com", - "IPv4": "172.238.6.34", - "IPv6": "2600:3c18::2000:acff:fe8e:3ed5", - "CanPort80": true - }, - { - "Name": "7h", - "RegionID": 7, - "HostName": "derp7h.tailscale.com", - "IPv4": "172.237.28.183", - "IPv6": "2600:3c18::2000:b1ff:fea9:4560", - "CanPort80": true - }, - { - "Name": "7e", - "RegionID": 7, - "HostName": "derp7e.tailscale.com", - "IPv4": "172.238.6.180", - "IPv6": "2600:3c18::2000:60ff:fe0f:6e83", - "STUNOnly": true, - "CanPort80": true - } - ] - }, - "8": { - "RegionID": 8, - "RegionCode": "lhr", - "RegionName": "London", - "Latitude": 51.5072, - "Longitude": 0.1276, - "Nodes": [ - { - "Name": "8f", - "RegionID": 8, - "HostName": "derp8f.tailscale.com", - "IPv4": "176.58.88.183", - "IPv6": "2a00:dd80:3a::dfa", - "CanPort80": true - }, - { - "Name": "8g", - "RegionID": 8, - "HostName": "derp8g.tailscale.com", - "IPv4": "176.58.92.254", - "IPv6": "2a00:dd80:3a::ed", - "CanPort80": true - }, - { - "Name": "8e", - "RegionID": 8, - "HostName": "derp8e.tailscale.com", - "IPv4": "176.58.92.144", - "IPv6": "2a00:dd80:3a::b33", - "CanPort80": true - } - ] - }, - "9": { - "RegionID": 9, - "RegionCode": "dfw", - "RegionName": "Dallas", - "Latitude": 32.779167, - "Longitude": -96.808889, - "Nodes": [ - { - "Name": "9e", - "RegionID": 9, - "HostName": "derp9e.tailscale.com", - "IPv4": "192.73.248.83", - "IPv6": "2607:f740:100::359", - "CanPort80": true - }, - { - "Name": "9f", - "RegionID": 9, - "HostName": "derp9f.tailscale.com", - "IPv4": "209.177.156.197", - "IPv6": "2607:f740:100::cad", - "CanPort80": true - }, - { - "Name": "9d", - "RegionID": 9, - "HostName": "derp9d.tailscale.com", - "IPv4": "209.177.156.94", - "IPv6": "2607:f740:100::c05", - "CanPort80": true - } - ] - } - } - }, - "DisplayMessages": null, - "TKAEnabled": false, - "TKAHead": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", - "Domain": "kratail2tid@passkey", - "DomainAuditLogID": "", - "UserProfiles": { - "4538565228176803": { - "ID": 4538565228176803, - "LoginName": "kristoffer@dalby.cc", - "DisplayName": "kristoffer" - } - } + "PacketFilterRules": 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.124.195.93": { - "peer_name": "exit-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-mon/tailscaled.sock whois --json 100.124.195.93", - "response": null - }, - "100.116.18.24": { - "peer_name": "exit-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-mon/tailscaled.sock whois --json 100.116.18.24", - "response": null - }, - "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.107.162.14": { - "peer_name": "group-a-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-mon/tailscaled.sock whois --json 100.107.162.14", - "response": null - }, - "100.77.135.18": { - "peer_name": "group-b-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-mon/tailscaled.sock whois --json 100.77.135.18", - "response": null - }, - "100.105.127.107": { - "peer_name": "multi-exit-router", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-mon/tailscaled.sock whois --json 100.105.127.107", - "response": null - }, - "100.109.43.124": { - "peer_name": "router-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-mon/tailscaled.sock whois --json 100.109.43.124", - "response": null - }, - "100.65.172.123": { - "peer_name": "router-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-mon/tailscaled.sock whois --json 100.65.172.123", - "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 - } - }, "netmap": { - "SelfNode": { - "ID": 1840115676059256, - "StableID": "nFzZ7giPNF11CNTRL", - "Name": "user-mon.tail78f774.ts.net.", - "User": 3982058329734709, - "Key": "nodekey:1ca6cca66d2b3811ec290c2f7ac30125c3568e19e303a8e30f6b165c9ee75a51", - "KeyExpiry": "2026-08-19T14:09:00Z", - "DiscoKey": "discokey:67ba1473894f09b564073adb12b27df2a45c513afd9e48922a0346d5d2715d12", - "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:36593", "10.65.0.27:36593", "172.17.0.1:36593"], - "Hostinfo": { - "Hostname": "user-mon", - "Services": [ - { "Proto": "peerapi4", "Port": 33201 }, - { "Proto": "peerapi6", "Port": 33201 }, - { "Proto": "peerapi-dns-proxy", "Port": 1 } - ] - }, - "Created": "2026-02-20T14:09:00.203639664Z", - "MachineAuthorized": true, - "CapMap": { - "https://tailscale.com/cap/file-sharing": null, - "https://tailscale.com/cap/is-admin": null, - "https://tailscale.com/cap/ssh": null, - "https://tailscale.com/cap/tailnet-lock": null, - "probe-udp-lifetime": null, - "ssh-behavior-v1": null, - "ssh-env-vars": null, - "store-appc-routes": null, - "tailnet-display-name": ["kratail2tid@passkey"] - }, - "ComputedName": "user-mon", - "ComputedNameWithHost": "user-mon" - }, - "AllCaps": [ - "https://tailscale.com/cap/file-sharing", - "probe-udp-lifetime", - "tailnet-display-name", - "https://tailscale.com/cap/is-admin", - "https://tailscale.com/cap/tailnet-lock", - "store-appc-routes", - "https://tailscale.com/cap/ssh", - "ssh-env-vars", - "ssh-behavior-v1" - ], - "NodeKey": "nodekey:1ca6cca66d2b3811ec290c2f7ac30125c3568e19e303a8e30f6b165c9ee75a51", - "MachineKey": "mkey:d63fc325663eef5dabd4d236e1fa5a26ed14ad31ea0711840cf755a5e8a9df39", "Peers": [], - "DNS": { - "Routes": { - "tail78f774.ts.net.": null, - "ts.net.": [{ "Addr": "199.247.155.53" }, { "Addr": "2620:111:8007::53" }] - }, - "Domains": ["tail78f774.ts.net"], - "Proxied": true, - "ExitNodeFilteredSet": [".ts.net", ".tailscale.net"] - }, - "PacketFilter": [], - "PacketFilterRules": null, - "SSHPolicy": { "rules": [] }, - "CollectServices": false, - "DERPMap": { - "Regions": { - "1": { - "RegionID": 1, - "RegionCode": "nyc", - "RegionName": "New York City", - "Latitude": 40.7128, - "Longitude": -74.006, - "Nodes": [ - { - "Name": "1h", - "RegionID": 1, - "HostName": "derp1h.tailscale.com", - "IPv4": "199.38.181.93", - "IPv6": "2607:f740:f::afd", - "CanPort80": true - }, - { - "Name": "1g", - "RegionID": 1, - "HostName": "derp1g.tailscale.com", - "IPv4": "209.177.145.120", - "IPv6": "2607:f740:f::3eb", - "CanPort80": true - }, - { - "Name": "1i", - "RegionID": 1, - "HostName": "derp1i.tailscale.com", - "IPv4": "199.38.181.103", - "IPv6": "2607:f740:f::e19", - "CanPort80": true - }, - { - "Name": "1f", - "RegionID": 1, - "HostName": "derp1f.tailscale.com", - "IPv4": "199.38.181.104", - "IPv6": "2607:f740:f::bc", - "CanPort80": true - } - ] - }, - "10": { - "RegionID": 10, - "RegionCode": "sea", - "RegionName": "Seattle", - "Latitude": 47.609722, - "Longitude": -122.333056, - "Nodes": [ - { - "Name": "10c", - "RegionID": 10, - "HostName": "derp10c.tailscale.com", - "IPv4": "192.73.240.121", - "IPv6": "2607:f740:14::40c", - "CanPort80": true - }, - { - "Name": "10d", - "RegionID": 10, - "HostName": "derp10d.tailscale.com", - "IPv4": "192.73.240.132", - "IPv6": "2607:f740:14::500", - "CanPort80": true - }, - { - "Name": "10b", - "RegionID": 10, - "HostName": "derp10b.tailscale.com", - "IPv4": "192.73.240.161", - "IPv6": "2607:f740:14::61c", - "CanPort80": true - } - ] - }, - "11": { - "RegionID": 11, - "RegionCode": "sao", - "RegionName": "São Paulo", - "Latitude": -23.55, - "Longitude": -46.633333, - "Nodes": [ - { - "Name": "11f", - "RegionID": 11, - "HostName": "derp11f.tailscale.com", - "IPv4": "172.237.61.197", - "IPv6": "2600:3c0d::2000:3bff:fe44:6166", - "CanPort80": true - }, - { - "Name": "11g", - "RegionID": 11, - "HostName": "derp11g.tailscale.com", - "IPv4": "172.237.61.190", - "IPv6": "2600:3c0d::2000:62ff:febe:2e67", - "CanPort80": true - }, - { - "Name": "11e", - "RegionID": 11, - "HostName": "derp11e.tailscale.com", - "IPv4": "172.237.61.194", - "IPv6": "2600:3c0d::2000:d2ff:fe43:1790", - "CanPort80": true - } - ] - }, - "12": { - "RegionID": 12, - "RegionCode": "ord", - "RegionName": "Chicago", - "Latitude": 41.881944, - "Longitude": -87.627778, - "Nodes": [ - { - "Name": "12e", - "RegionID": 12, - "HostName": "derp12e.tailscale.com", - "IPv4": "209.177.158.15", - "IPv6": "2607:f740:e::b17", - "CanPort80": true - }, - { - "Name": "12f", - "RegionID": 12, - "HostName": "derp12f.tailscale.com", - "IPv4": "199.38.182.118", - "IPv6": "2607:f740:e::4c8", - "CanPort80": true - }, - { - "Name": "12d", - "RegionID": 12, - "HostName": "derp12d.tailscale.com", - "IPv4": "209.177.158.246", - "IPv6": "2607:f740:e::811", - "CanPort80": true - } - ] - }, - "13": { - "RegionID": 13, - "RegionCode": "den", - "RegionName": "Denver", - "Latitude": 39.7392, - "Longitude": -104.9849, - "Nodes": [ - { - "Name": "13c", - "RegionID": 13, - "HostName": "derp13c.tailscale.com", - "IPv4": "192.73.242.28", - "IPv6": "2607:f740:16::5c", - "CanPort80": true - }, - { - "Name": "13d", - "RegionID": 13, - "HostName": "derp13d.tailscale.com", - "IPv4": "192.73.242.204", - "IPv6": "2607:f740:16::c23", - "CanPort80": true - }, - { - "Name": "13b", - "RegionID": 13, - "HostName": "derp13b.tailscale.com", - "IPv4": "192.73.242.187", - "IPv6": "2607:f740:16::640", - "CanPort80": true - } - ] - }, - "14": { - "RegionID": 14, - "RegionCode": "ams", - "RegionName": "Amsterdam", - "Latitude": 52.372778, - "Longitude": 4.893611, - "Nodes": [ - { - "Name": "14c", - "RegionID": 14, - "HostName": "derp14c.tailscale.com", - "IPv4": "176.58.93.147", - "IPv6": "2a00:dd80:3c::b09", - "CanPort80": true - }, - { - "Name": "14d", - "RegionID": 14, - "HostName": "derp14d.tailscale.com", - "IPv4": "176.58.93.154", - "IPv6": "2a00:dd80:3c::3d5", - "CanPort80": true - }, - { - "Name": "14b", - "RegionID": 14, - "HostName": "derp14b.tailscale.com", - "IPv4": "176.58.93.248", - "IPv6": "2a00:dd80:3c::807", - "CanPort80": true - } - ] - }, - "15": { - "RegionID": 15, - "RegionCode": "jnb", - "RegionName": "Johannesburg", - "Latitude": -26.204444, - "Longitude": 28.045556, - "Nodes": [ - { - "Name": "15c", - "RegionID": 15, - "HostName": "derp15c.tailscale.com", - "IPv4": "102.67.165.185", - "IPv6": "2c0f:edb0:0:10::b59", - "CanPort80": true - }, - { - "Name": "15d", - "RegionID": 15, - "HostName": "derp15d.tailscale.com", - "IPv4": "102.67.165.36", - "IPv6": "2c0f:edb0:0:10::599", - "CanPort80": true - }, - { - "Name": "15b", - "RegionID": 15, - "HostName": "derp15b.tailscale.com", - "IPv4": "102.67.165.90", - "IPv6": "2c0f:edb0:0:10::963", - "CanPort80": true - } - ] - }, - "16": { - "RegionID": 16, - "RegionCode": "mia", - "RegionName": "Miami", - "Latitude": 25.78, - "Longitude": -80.21, - "Nodes": [ - { - "Name": "16c", - "RegionID": 16, - "HostName": "derp16c.tailscale.com", - "IPv4": "192.73.243.229", - "IPv6": "2607:f740:17::4e4", - "CanPort80": true - }, - { - "Name": "16d", - "RegionID": 16, - "HostName": "derp16d.tailscale.com", - "IPv4": "192.73.243.141", - "IPv6": "2607:f740:17::475", - "CanPort80": true - }, - { - "Name": "16b", - "RegionID": 16, - "HostName": "derp16b.tailscale.com", - "IPv4": "192.73.243.135", - "IPv6": "2607:f740:17::476", - "CanPort80": true - } - ] - }, - "17": { - "RegionID": 17, - "RegionCode": "lax", - "RegionName": "Los Angeles", - "Latitude": 34.05, - "Longitude": -118.25, - "Nodes": [ - { - "Name": "17c", - "RegionID": 17, - "HostName": "derp17c.tailscale.com", - "IPv4": "208.111.40.12", - "IPv6": "2607:f740:c::10", - "CanPort80": true - }, - { - "Name": "17d", - "RegionID": 17, - "HostName": "derp17d.tailscale.com", - "IPv4": "208.111.40.216", - "IPv6": "2607:f740:c::e1b", - "CanPort80": true - }, - { - "Name": "17b", - "RegionID": 17, - "HostName": "derp17b.tailscale.com", - "IPv4": "192.73.244.245", - "IPv6": "2607:f740:c::646", - "CanPort80": true - } - ] - }, - "18": { - "RegionID": 18, - "RegionCode": "par", - "RegionName": "Paris", - "Latitude": 48.856667, - "Longitude": 2.352222, - "Nodes": [ - { - "Name": "18c", - "RegionID": 18, - "HostName": "derp18c.tailscale.com", - "IPv4": "176.58.90.207", - "IPv6": "2a00:dd80:3e::c19", - "CanPort80": true - }, - { - "Name": "18d", - "RegionID": 18, - "HostName": "derp18d.tailscale.com", - "IPv4": "176.58.90.104", - "IPv6": "2a00:dd80:3e::f2e", - "CanPort80": true - }, - { - "Name": "18b", - "RegionID": 18, - "HostName": "derp18b.tailscale.com", - "IPv4": "176.58.90.147", - "IPv6": "2a00:dd80:3e::363", - "CanPort80": true - } - ] - }, - "19": { - "RegionID": 19, - "RegionCode": "mad", - "RegionName": "Madrid", - "Latitude": 40.416944, - "Longitude": -3.703333, - "Nodes": [ - { - "Name": "19c", - "RegionID": 19, - "HostName": "derp19c.tailscale.com", - "IPv4": "45.159.97.61", - "IPv6": "2a00:dd80:14:10::20", - "CanPort80": true - }, - { - "Name": "19d", - "RegionID": 19, - "HostName": "derp19d.tailscale.com", - "IPv4": "45.159.97.233", - "IPv6": "2a00:dd80:14:10::34a", - "CanPort80": true - }, - { - "Name": "19b", - "RegionID": 19, - "HostName": "derp19b.tailscale.com", - "IPv4": "45.159.97.144", - "IPv6": "2a00:dd80:14:10::335", - "CanPort80": true - } - ] - }, - "2": { - "RegionID": 2, - "RegionCode": "sfo", - "RegionName": "San Francisco", - "Latitude": 37.7775, - "Longitude": -122.416389, - "Nodes": [ - { - "Name": "2e", - "RegionID": 2, - "HostName": "derp2e.tailscale.com", - "IPv4": "192.73.252.134", - "IPv6": "2607:f740:0:3f::44c", - "CanPort80": true - }, - { - "Name": "2f", - "RegionID": 2, - "HostName": "derp2f.tailscale.com", - "IPv4": "208.111.34.178", - "IPv6": "2607:f740:0:3f::f4", - "CanPort80": true - }, - { - "Name": "2d", - "RegionID": 2, - "HostName": "derp2d.tailscale.com", - "IPv4": "192.73.252.65", - "IPv6": "2607:f740:0:3f::287", - "CanPort80": true - } - ] - }, - "20": { - "RegionID": 20, - "RegionCode": "hkg", - "RegionName": "Hong Kong", - "Latitude": 22.3193, - "Longitude": 114.1694, - "Nodes": [ - { - "Name": "20c", - "RegionID": 20, - "HostName": "derp20c.tailscale.com", - "IPv4": "205.147.105.30", - "IPv6": "2403:2500:8000:1::5fb", - "CanPort80": true - }, - { - "Name": "20d", - "RegionID": 20, - "HostName": "derp20d.tailscale.com", - "IPv4": "205.147.105.78", - "IPv6": "2403:2500:8000:1::e9a", - "CanPort80": true - }, - { - "Name": "20b", - "RegionID": 20, - "HostName": "derp20b.tailscale.com", - "IPv4": "103.6.84.152", - "IPv6": "2403:2500:8000:1::ef6", - "CanPort80": true - } - ] - }, - "21": { - "RegionID": 21, - "RegionCode": "tor", - "RegionName": "Toronto", - "Latitude": 43.741667, - "Longitude": -79.373333, - "Nodes": [ - { - "Name": "21c", - "RegionID": 21, - "HostName": "derp21c.tailscale.com", - "IPv4": "162.248.221.215", - "IPv6": "2607:f740:50::f10", - "CanPort80": true - }, - { - "Name": "21d", - "RegionID": 21, - "HostName": "derp21d.tailscale.com", - "IPv4": "162.248.221.248", - "IPv6": "2607:f740:50::ca4", - "CanPort80": true - }, - { - "Name": "21b", - "RegionID": 21, - "HostName": "derp21b.tailscale.com", - "IPv4": "162.248.221.199", - "IPv6": "2607:f740:50::1d1", - "CanPort80": true - } - ] - }, - "22": { - "RegionID": 22, - "RegionCode": "waw", - "RegionName": "Warsaw", - "Latitude": 52.23, - "Longitude": 21.011111, - "Nodes": [ - { - "Name": "22c", - "RegionID": 22, - "HostName": "derp22c.tailscale.com", - "IPv4": "45.159.98.253", - "IPv6": "2a00:dd80:40:100::3f", - "CanPort80": true - }, - { - "Name": "22d", - "RegionID": 22, - "HostName": "derp22d.tailscale.com", - "IPv4": "45.159.98.145", - "IPv6": "2a00:dd80:40:100::211", - "CanPort80": true - }, - { - "Name": "22b", - "RegionID": 22, - "HostName": "derp22b.tailscale.com", - "IPv4": "45.159.98.196", - "IPv6": "2a00:dd80:40:100::316", - "CanPort80": true - } - ] - }, - "23": { - "RegionID": 23, - "RegionCode": "dbi", - "RegionName": "Dubai", - "Latitude": 25.263056, - "Longitude": 55.297222, - "Nodes": [ - { - "Name": "23c", - "RegionID": 23, - "HostName": "derp23c.tailscale.com", - "IPv4": "185.34.3.207", - "IPv6": "2a00:dd80:3f:100::a50", - "CanPort80": true - }, - { - "Name": "23d", - "RegionID": 23, - "HostName": "derp23d.tailscale.com", - "IPv4": "185.34.3.75", - "IPv6": "2a00:dd80:3f:100::97e", - "CanPort80": true - }, - { - "Name": "23b", - "RegionID": 23, - "HostName": "derp23b.tailscale.com", - "IPv4": "185.34.3.232", - "IPv6": "2a00:dd80:3f:100::76f", - "CanPort80": true - } - ] - }, - "24": { - "RegionID": 24, - "RegionCode": "hnl", - "RegionName": "Honolulu", - "Latitude": 21.306944, - "Longitude": -157.858333, - "Nodes": [ - { - "Name": "24c", - "RegionID": 24, - "HostName": "derp24c.tailscale.com", - "IPv4": "208.83.233.233", - "IPv6": "2001:19f0:c000:c591:5400:04ff:fe26:2c5f", - "CanPort80": true - }, - { - "Name": "24d", - "RegionID": 24, - "HostName": "derp24d.tailscale.com", - "IPv4": "208.72.155.133", - "IPv6": "2001:19f0:c000:c564:5400:04ff:fe26:2ba8", - "CanPort80": true - }, - { - "Name": "24b", - "RegionID": 24, - "HostName": "derp24b.tailscale.com", - "IPv4": "208.83.234.151", - "IPv6": "2001:19f0:c000:c586:5400:04ff:fe26:2ba6", - "CanPort80": true - } - ] - }, - "25": { - "RegionID": 25, - "RegionCode": "nai", - "RegionName": "Nairobi", - "Latitude": -1.286389, - "Longitude": 36.817222, - "Nodes": [ - { - "Name": "25c", - "RegionID": 25, - "HostName": "derp25c.tailscale.com", - "IPv4": "102.67.167.37", - "IPv6": "2c0f:edb0:2000:1::2c7", - "CanPort80": true - }, - { - "Name": "25d", - "RegionID": 25, - "HostName": "derp25d.tailscale.com", - "IPv4": "102.67.167.188", - "IPv6": "2c0f:edb0:2000:1::188", - "CanPort80": true - }, - { - "Name": "25b", - "RegionID": 25, - "HostName": "derp25b.tailscale.com", - "IPv4": "102.67.167.245", - "IPv6": "2c0f:edb0:2000:1::2e9", - "CanPort80": true - } - ] - }, - "26": { - "RegionID": 26, - "RegionCode": "nue", - "RegionName": "Nuremberg", - "Latitude": 49.453889, - "Longitude": 11.0775, - "Nodes": [ - { - "Name": "26c", - "RegionID": 26, - "HostName": "derp26c.tailscale.com", - "IPv4": "49.12.193.137", - "IPv6": "2a01:4f8:1c1c:5c70::1", - "CanPort80": true - }, - { - "Name": "26d", - "RegionID": 26, - "HostName": "derp26d.tailscale.com", - "IPv4": "49.13.204.141", - "IPv6": "2a01:4f8:1c0c:7d06::1", - "CanPort80": true - }, - { - "Name": "26b", - "RegionID": 26, - "HostName": "derp26b.tailscale.com", - "IPv4": "167.235.72.200", - "IPv6": "2a01:4f8:1c1c:47b6::1", - "CanPort80": true - } - ] - }, - "27": { - "RegionID": 27, - "RegionCode": "iad", - "RegionName": "Ashburn", - "Latitude": 39.03, - "Longitude": -77.471111, - "Nodes": [ - { - "Name": "27d", - "RegionID": 27, - "HostName": "derp27d.tailscale.com", - "IPv4": "178.156.152.106", - "IPv6": "2a01:4ff:f0:3c8e::1", - "CanPort80": true - }, - { - "Name": "27c", - "RegionID": 27, - "HostName": "derp27c.tailscale.com", - "IPv4": "178.156.152.91", - "IPv6": "2a01:4ff:f0:3913::1", - "CanPort80": true - }, - { - "Name": "27e", - "RegionID": 27, - "HostName": "derp27e.tailscale.com", - "IPv4": "178.156.134.232", - "IPv6": "2a01:4ff:f0:28d4::1", - "CanPort80": true - }, - { - "Name": "27b", - "RegionID": 27, - "HostName": "derp27b.tailscale.com", - "IPv4": "5.161.218.233", - "IPv6": "2a01:4ff:f0:3db9::1", - "CanPort80": true - } - ] - }, - "28": { - "RegionID": 28, - "RegionCode": "hel", - "RegionName": "Helsinki", - "Latitude": 60.170833, - "Longitude": 24.9375, - "Nodes": [ - { - "Name": "28c", - "RegionID": 28, - "HostName": "derp28c.tailscale.com", - "IPv4": "95.217.2.165", - "IPv6": "2a01:4f9:c012:cd74::1", - "CanPort80": true - }, - { - "Name": "28d", - "RegionID": 28, - "HostName": "derp28d.tailscale.com", - "IPv4": "157.180.28.32", - "IPv6": "2a01:4f9:c012:2e5b::1", - "CanPort80": true - }, - { - "Name": "28b", - "RegionID": 28, - "HostName": "derp28b.tailscale.com", - "IPv4": "65.109.143.62", - "IPv6": "2a01:4f9:c012:d55c::1", - "CanPort80": true - } - ] - }, - "3": { - "RegionID": 3, - "RegionCode": "sin", - "RegionName": "Singapore", - "Latitude": 1.3521, - "Longitude": 103.8198, - "Nodes": [ - { - "Name": "3g", - "RegionID": 3, - "HostName": "derp3g.tailscale.com", - "IPv4": "172.237.72.79", - "IPv6": "2600:3c15::2000:adff:fe08:6fab", - "CanPort80": true - }, - { - "Name": "3f", - "RegionID": 3, - "HostName": "derp3f.tailscale.com", - "IPv4": "172.237.72.8", - "IPv6": "2600:3c15::2000:53ff:fe48:a668", - "CanPort80": true - }, - { - "Name": "3h", - "RegionID": 3, - "HostName": "derp3h.tailscale.com", - "IPv4": "172.237.66.30", - "IPv6": "2600:3c15::2000:3dff:fe44:50aa", - "CanPort80": true - }, - { - "Name": "3e", - "RegionID": 3, - "HostName": "derp3e.tailscale.com", - "IPv4": "172.237.72.43", - "IPv6": "2600:3c15::2000:6cff:fee4:d799", - "CanPort80": true - } - ] - }, - "4": { - "RegionID": 4, - "RegionCode": "fra", - "RegionName": "Frankfurt", - "Latitude": 50.1109, - "Longitude": 8.6821, - "Nodes": [ - { - "Name": "4h", - "RegionID": 4, - "HostName": "derp4h.tailscale.com", - "IPv4": "185.40.234.77", - "IPv6": "2a00:dd80:20::bcf", - "CanPort80": true - }, - { - "Name": "4g", - "RegionID": 4, - "HostName": "derp4g.tailscale.com", - "IPv4": "185.40.234.113", - "IPv6": "2a00:dd80:20::8f", - "CanPort80": true - }, - { - "Name": "4i", - "RegionID": 4, - "HostName": "derp4i.tailscale.com", - "IPv4": "185.40.234.53", - "IPv6": "2a00:dd80:20::8a6", - "CanPort80": true - }, - { - "Name": "4f", - "RegionID": 4, - "HostName": "derp4f.tailscale.com", - "IPv4": "185.40.234.219", - "IPv6": "2a00:dd80:20::a25", - "CanPort80": true - } - ] - }, - "5": { - "RegionID": 5, - "RegionCode": "syd", - "RegionName": "Sydney", - "Latitude": -33.867778, - "Longitude": 151.21, - "Nodes": [ - { - "Name": "5f", - "RegionID": 5, - "HostName": "derp5f.tailscale.com", - "IPv4": "172.105.166.103", - "IPv6": "2400:8907::2000:ccff:fe1f:80da", - "CanPort80": true - }, - { - "Name": "5g", - "RegionID": 5, - "HostName": "derp5g.tailscale.com", - "IPv4": "172.105.169.57", - "IPv6": "2400:8907::2000:2fff:fea7:57f4", - "CanPort80": true - }, - { - "Name": "5e", - "RegionID": 5, - "HostName": "derp5e.tailscale.com", - "IPv4": "172.105.179.230", - "IPv6": "2400:8907::2000:ceff:fe8d:4f4e", - "CanPort80": true - } - ] - }, - "6": { - "RegionID": 6, - "RegionCode": "blr", - "RegionName": "Bengaluru", - "Latitude": 12.9716, - "Longitude": 77.5946, - "Nodes": [ - { - "Name": "6a", - "RegionID": 6, - "HostName": "derp6.tailscale.com", - "IPv4": "68.183.90.120", - "IPv6": "2400:6180:100:d0::982:d001", - "CanPort80": true - } - ] - }, - "7": { - "RegionID": 7, - "RegionCode": "tok", - "RegionName": "Tokyo", - "Latitude": 35.6764, - "Longitude": 139.65, - "Nodes": [ - { - "Name": "7g", - "RegionID": 7, - "HostName": "derp7g.tailscale.com", - "IPv4": "172.238.6.179", - "IPv6": "2600:3c18::2000:3fff:fe80:3ebd", - "CanPort80": true - }, - { - "Name": "7f", - "RegionID": 7, - "HostName": "derp7f.tailscale.com", - "IPv4": "172.238.6.34", - "IPv6": "2600:3c18::2000:acff:fe8e:3ed5", - "CanPort80": true - }, - { - "Name": "7h", - "RegionID": 7, - "HostName": "derp7h.tailscale.com", - "IPv4": "172.237.28.183", - "IPv6": "2600:3c18::2000:b1ff:fea9:4560", - "CanPort80": true - }, - { - "Name": "7e", - "RegionID": 7, - "HostName": "derp7e.tailscale.com", - "IPv4": "172.238.6.180", - "IPv6": "2600:3c18::2000:60ff:fe0f:6e83", - "STUNOnly": true, - "CanPort80": true - } - ] - }, - "8": { - "RegionID": 8, - "RegionCode": "lhr", - "RegionName": "London", - "Latitude": 51.5072, - "Longitude": 0.1276, - "Nodes": [ - { - "Name": "8f", - "RegionID": 8, - "HostName": "derp8f.tailscale.com", - "IPv4": "176.58.88.183", - "IPv6": "2a00:dd80:3a::dfa", - "CanPort80": true - }, - { - "Name": "8g", - "RegionID": 8, - "HostName": "derp8g.tailscale.com", - "IPv4": "176.58.92.254", - "IPv6": "2a00:dd80:3a::ed", - "CanPort80": true - }, - { - "Name": "8e", - "RegionID": 8, - "HostName": "derp8e.tailscale.com", - "IPv4": "176.58.92.144", - "IPv6": "2a00:dd80:3a::b33", - "CanPort80": true - } - ] - }, - "9": { - "RegionID": 9, - "RegionCode": "dfw", - "RegionName": "Dallas", - "Latitude": 32.779167, - "Longitude": -96.808889, - "Nodes": [ - { - "Name": "9e", - "RegionID": 9, - "HostName": "derp9e.tailscale.com", - "IPv4": "192.73.248.83", - "IPv6": "2607:f740:100::359", - "CanPort80": true - }, - { - "Name": "9f", - "RegionID": 9, - "HostName": "derp9f.tailscale.com", - "IPv4": "209.177.156.197", - "IPv6": "2607:f740:100::cad", - "CanPort80": true - }, - { - "Name": "9d", - "RegionID": 9, - "HostName": "derp9d.tailscale.com", - "IPv4": "209.177.156.94", - "IPv6": "2607:f740:100::c05", - "CanPort80": true - } - ] - } - } - }, - "DisplayMessages": null, - "TKAEnabled": false, - "TKAHead": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", - "Domain": "kratail2tid@passkey", - "DomainAuditLogID": "", - "UserProfiles": { - "3982058329734709": { - "ID": 3982058329734709, - "LoginName": "monitorpasskeykradalby@passkey", - "DisplayName": "monitorpasskeykradalby" - } - } + "PacketFilterRules": 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.124.195.93": { - "peer_name": "exit-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user1/tailscaled.sock whois --json 100.124.195.93", - "response": null - }, - "100.116.18.24": { - "peer_name": "exit-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user1/tailscaled.sock whois --json 100.116.18.24", - "response": null - }, - "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.107.162.14": { - "peer_name": "group-a-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user1/tailscaled.sock whois --json 100.107.162.14", - "response": null - }, - "100.77.135.18": { - "peer_name": "group-b-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user1/tailscaled.sock whois --json 100.77.135.18", - "response": null - }, - "100.105.127.107": { - "peer_name": "multi-exit-router", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user1/tailscaled.sock whois --json 100.105.127.107", - "response": null - }, - "100.109.43.124": { - "peer_name": "router-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user1/tailscaled.sock whois --json 100.109.43.124", - "response": null - }, - "100.65.172.123": { - "peer_name": "router-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user1/tailscaled.sock whois --json 100.65.172.123", - "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 - } - }, "netmap": { - "SelfNode": { - "ID": 539541576444929, - "StableID": "nSq9YrqMD511CNTRL", - "Name": "user1.tail78f774.ts.net.", - "User": 4156223528223174, - "Key": "nodekey:96338a2cd2ea803c915ed8fdf882d66ca0c6a59d0fcf0bc4b3f928d22d1ac743", - "KeyExpiry": "2026-07-22T10:04:13Z", - "DiscoKey": "discokey:94c62b25a93d1474bcbf8b0e5f79763e3b093993c831b0a40e98b875827b232a", - "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:43259", "10.65.0.27:43259", "172.17.0.1:43259"], - "Hostinfo": { - "Hostname": "user1", - "Services": [ - { "Proto": "peerapi4", "Port": 46708 }, - { "Proto": "peerapi6", "Port": 46708 }, - { "Proto": "peerapi-dns-proxy", "Port": 1 } - ] - }, - "Created": "2026-01-23T10:04:13.531671894Z", - "MachineAuthorized": true, - "CapMap": { - "https://tailscale.com/cap/file-sharing": null, - "https://tailscale.com/cap/is-admin": null, - "https://tailscale.com/cap/is-owner": null, - "https://tailscale.com/cap/ssh": null, - "https://tailscale.com/cap/tailnet-lock": null, - "probe-udp-lifetime": null, - "ssh-behavior-v1": null, - "ssh-env-vars": null, - "store-appc-routes": null, - "tailnet-display-name": ["kratail2tid@passkey"] - }, - "ComputedName": "user1", - "ComputedNameWithHost": "user1" - }, - "AllCaps": [ - "https://tailscale.com/cap/is-admin", - "ssh-env-vars", - "https://tailscale.com/cap/file-sharing", - "ssh-behavior-v1", - "https://tailscale.com/cap/is-owner", - "https://tailscale.com/cap/tailnet-lock", - "store-appc-routes", - "tailnet-display-name", - "https://tailscale.com/cap/ssh", - "probe-udp-lifetime" - ], - "NodeKey": "nodekey:96338a2cd2ea803c915ed8fdf882d66ca0c6a59d0fcf0bc4b3f928d22d1ac743", - "MachineKey": "mkey:98b7ed0fef020882cab4324b39ac93b60741794e722411083d0d3cf703833f4a", "Peers": [], - "DNS": { - "Routes": { - "tail78f774.ts.net.": null, - "ts.net.": [{ "Addr": "199.247.155.53" }, { "Addr": "2620:111:8007::53" }] - }, - "Domains": ["tail78f774.ts.net"], - "Proxied": true, - "ExitNodeFilteredSet": [".ts.net", ".tailscale.net"] - }, - "PacketFilter": [], - "PacketFilterRules": null, - "SSHPolicy": { "rules": [] }, - "CollectServices": false, - "DERPMap": { - "Regions": { - "1": { - "RegionID": 1, - "RegionCode": "nyc", - "RegionName": "New York City", - "Latitude": 40.7128, - "Longitude": -74.006, - "Nodes": [ - { - "Name": "1h", - "RegionID": 1, - "HostName": "derp1h.tailscale.com", - "IPv4": "199.38.181.93", - "IPv6": "2607:f740:f::afd", - "CanPort80": true - }, - { - "Name": "1g", - "RegionID": 1, - "HostName": "derp1g.tailscale.com", - "IPv4": "209.177.145.120", - "IPv6": "2607:f740:f::3eb", - "CanPort80": true - }, - { - "Name": "1i", - "RegionID": 1, - "HostName": "derp1i.tailscale.com", - "IPv4": "199.38.181.103", - "IPv6": "2607:f740:f::e19", - "CanPort80": true - }, - { - "Name": "1f", - "RegionID": 1, - "HostName": "derp1f.tailscale.com", - "IPv4": "199.38.181.104", - "IPv6": "2607:f740:f::bc", - "CanPort80": true - } - ] - }, - "10": { - "RegionID": 10, - "RegionCode": "sea", - "RegionName": "Seattle", - "Latitude": 47.609722, - "Longitude": -122.333056, - "Nodes": [ - { - "Name": "10c", - "RegionID": 10, - "HostName": "derp10c.tailscale.com", - "IPv4": "192.73.240.121", - "IPv6": "2607:f740:14::40c", - "CanPort80": true - }, - { - "Name": "10d", - "RegionID": 10, - "HostName": "derp10d.tailscale.com", - "IPv4": "192.73.240.132", - "IPv6": "2607:f740:14::500", - "CanPort80": true - }, - { - "Name": "10b", - "RegionID": 10, - "HostName": "derp10b.tailscale.com", - "IPv4": "192.73.240.161", - "IPv6": "2607:f740:14::61c", - "CanPort80": true - } - ] - }, - "11": { - "RegionID": 11, - "RegionCode": "sao", - "RegionName": "São Paulo", - "Latitude": -23.55, - "Longitude": -46.633333, - "Nodes": [ - { - "Name": "11f", - "RegionID": 11, - "HostName": "derp11f.tailscale.com", - "IPv4": "172.237.61.197", - "IPv6": "2600:3c0d::2000:3bff:fe44:6166", - "CanPort80": true - }, - { - "Name": "11g", - "RegionID": 11, - "HostName": "derp11g.tailscale.com", - "IPv4": "172.237.61.190", - "IPv6": "2600:3c0d::2000:62ff:febe:2e67", - "CanPort80": true - }, - { - "Name": "11e", - "RegionID": 11, - "HostName": "derp11e.tailscale.com", - "IPv4": "172.237.61.194", - "IPv6": "2600:3c0d::2000:d2ff:fe43:1790", - "CanPort80": true - } - ] - }, - "12": { - "RegionID": 12, - "RegionCode": "ord", - "RegionName": "Chicago", - "Latitude": 41.881944, - "Longitude": -87.627778, - "Nodes": [ - { - "Name": "12e", - "RegionID": 12, - "HostName": "derp12e.tailscale.com", - "IPv4": "209.177.158.15", - "IPv6": "2607:f740:e::b17", - "CanPort80": true - }, - { - "Name": "12f", - "RegionID": 12, - "HostName": "derp12f.tailscale.com", - "IPv4": "199.38.182.118", - "IPv6": "2607:f740:e::4c8", - "CanPort80": true - }, - { - "Name": "12d", - "RegionID": 12, - "HostName": "derp12d.tailscale.com", - "IPv4": "209.177.158.246", - "IPv6": "2607:f740:e::811", - "CanPort80": true - } - ] - }, - "13": { - "RegionID": 13, - "RegionCode": "den", - "RegionName": "Denver", - "Latitude": 39.7392, - "Longitude": -104.9849, - "Nodes": [ - { - "Name": "13c", - "RegionID": 13, - "HostName": "derp13c.tailscale.com", - "IPv4": "192.73.242.28", - "IPv6": "2607:f740:16::5c", - "CanPort80": true - }, - { - "Name": "13d", - "RegionID": 13, - "HostName": "derp13d.tailscale.com", - "IPv4": "192.73.242.204", - "IPv6": "2607:f740:16::c23", - "CanPort80": true - }, - { - "Name": "13b", - "RegionID": 13, - "HostName": "derp13b.tailscale.com", - "IPv4": "192.73.242.187", - "IPv6": "2607:f740:16::640", - "CanPort80": true - } - ] - }, - "14": { - "RegionID": 14, - "RegionCode": "ams", - "RegionName": "Amsterdam", - "Latitude": 52.372778, - "Longitude": 4.893611, - "Nodes": [ - { - "Name": "14c", - "RegionID": 14, - "HostName": "derp14c.tailscale.com", - "IPv4": "176.58.93.147", - "IPv6": "2a00:dd80:3c::b09", - "CanPort80": true - }, - { - "Name": "14d", - "RegionID": 14, - "HostName": "derp14d.tailscale.com", - "IPv4": "176.58.93.154", - "IPv6": "2a00:dd80:3c::3d5", - "CanPort80": true - }, - { - "Name": "14b", - "RegionID": 14, - "HostName": "derp14b.tailscale.com", - "IPv4": "176.58.93.248", - "IPv6": "2a00:dd80:3c::807", - "CanPort80": true - } - ] - }, - "15": { - "RegionID": 15, - "RegionCode": "jnb", - "RegionName": "Johannesburg", - "Latitude": -26.204444, - "Longitude": 28.045556, - "Nodes": [ - { - "Name": "15c", - "RegionID": 15, - "HostName": "derp15c.tailscale.com", - "IPv4": "102.67.165.185", - "IPv6": "2c0f:edb0:0:10::b59", - "CanPort80": true - }, - { - "Name": "15d", - "RegionID": 15, - "HostName": "derp15d.tailscale.com", - "IPv4": "102.67.165.36", - "IPv6": "2c0f:edb0:0:10::599", - "CanPort80": true - }, - { - "Name": "15b", - "RegionID": 15, - "HostName": "derp15b.tailscale.com", - "IPv4": "102.67.165.90", - "IPv6": "2c0f:edb0:0:10::963", - "CanPort80": true - } - ] - }, - "16": { - "RegionID": 16, - "RegionCode": "mia", - "RegionName": "Miami", - "Latitude": 25.78, - "Longitude": -80.21, - "Nodes": [ - { - "Name": "16c", - "RegionID": 16, - "HostName": "derp16c.tailscale.com", - "IPv4": "192.73.243.229", - "IPv6": "2607:f740:17::4e4", - "CanPort80": true - }, - { - "Name": "16d", - "RegionID": 16, - "HostName": "derp16d.tailscale.com", - "IPv4": "192.73.243.141", - "IPv6": "2607:f740:17::475", - "CanPort80": true - }, - { - "Name": "16b", - "RegionID": 16, - "HostName": "derp16b.tailscale.com", - "IPv4": "192.73.243.135", - "IPv6": "2607:f740:17::476", - "CanPort80": true - } - ] - }, - "17": { - "RegionID": 17, - "RegionCode": "lax", - "RegionName": "Los Angeles", - "Latitude": 34.05, - "Longitude": -118.25, - "Nodes": [ - { - "Name": "17c", - "RegionID": 17, - "HostName": "derp17c.tailscale.com", - "IPv4": "208.111.40.12", - "IPv6": "2607:f740:c::10", - "CanPort80": true - }, - { - "Name": "17d", - "RegionID": 17, - "HostName": "derp17d.tailscale.com", - "IPv4": "208.111.40.216", - "IPv6": "2607:f740:c::e1b", - "CanPort80": true - }, - { - "Name": "17b", - "RegionID": 17, - "HostName": "derp17b.tailscale.com", - "IPv4": "192.73.244.245", - "IPv6": "2607:f740:c::646", - "CanPort80": true - } - ] - }, - "18": { - "RegionID": 18, - "RegionCode": "par", - "RegionName": "Paris", - "Latitude": 48.856667, - "Longitude": 2.352222, - "Nodes": [ - { - "Name": "18c", - "RegionID": 18, - "HostName": "derp18c.tailscale.com", - "IPv4": "176.58.90.207", - "IPv6": "2a00:dd80:3e::c19", - "CanPort80": true - }, - { - "Name": "18d", - "RegionID": 18, - "HostName": "derp18d.tailscale.com", - "IPv4": "176.58.90.104", - "IPv6": "2a00:dd80:3e::f2e", - "CanPort80": true - }, - { - "Name": "18b", - "RegionID": 18, - "HostName": "derp18b.tailscale.com", - "IPv4": "176.58.90.147", - "IPv6": "2a00:dd80:3e::363", - "CanPort80": true - } - ] - }, - "19": { - "RegionID": 19, - "RegionCode": "mad", - "RegionName": "Madrid", - "Latitude": 40.416944, - "Longitude": -3.703333, - "Nodes": [ - { - "Name": "19c", - "RegionID": 19, - "HostName": "derp19c.tailscale.com", - "IPv4": "45.159.97.61", - "IPv6": "2a00:dd80:14:10::20", - "CanPort80": true - }, - { - "Name": "19d", - "RegionID": 19, - "HostName": "derp19d.tailscale.com", - "IPv4": "45.159.97.233", - "IPv6": "2a00:dd80:14:10::34a", - "CanPort80": true - }, - { - "Name": "19b", - "RegionID": 19, - "HostName": "derp19b.tailscale.com", - "IPv4": "45.159.97.144", - "IPv6": "2a00:dd80:14:10::335", - "CanPort80": true - } - ] - }, - "2": { - "RegionID": 2, - "RegionCode": "sfo", - "RegionName": "San Francisco", - "Latitude": 37.7775, - "Longitude": -122.416389, - "Nodes": [ - { - "Name": "2e", - "RegionID": 2, - "HostName": "derp2e.tailscale.com", - "IPv4": "192.73.252.134", - "IPv6": "2607:f740:0:3f::44c", - "CanPort80": true - }, - { - "Name": "2f", - "RegionID": 2, - "HostName": "derp2f.tailscale.com", - "IPv4": "208.111.34.178", - "IPv6": "2607:f740:0:3f::f4", - "CanPort80": true - }, - { - "Name": "2d", - "RegionID": 2, - "HostName": "derp2d.tailscale.com", - "IPv4": "192.73.252.65", - "IPv6": "2607:f740:0:3f::287", - "CanPort80": true - } - ] - }, - "20": { - "RegionID": 20, - "RegionCode": "hkg", - "RegionName": "Hong Kong", - "Latitude": 22.3193, - "Longitude": 114.1694, - "Nodes": [ - { - "Name": "20c", - "RegionID": 20, - "HostName": "derp20c.tailscale.com", - "IPv4": "205.147.105.30", - "IPv6": "2403:2500:8000:1::5fb", - "CanPort80": true - }, - { - "Name": "20d", - "RegionID": 20, - "HostName": "derp20d.tailscale.com", - "IPv4": "205.147.105.78", - "IPv6": "2403:2500:8000:1::e9a", - "CanPort80": true - }, - { - "Name": "20b", - "RegionID": 20, - "HostName": "derp20b.tailscale.com", - "IPv4": "103.6.84.152", - "IPv6": "2403:2500:8000:1::ef6", - "CanPort80": true - } - ] - }, - "21": { - "RegionID": 21, - "RegionCode": "tor", - "RegionName": "Toronto", - "Latitude": 43.741667, - "Longitude": -79.373333, - "Nodes": [ - { - "Name": "21c", - "RegionID": 21, - "HostName": "derp21c.tailscale.com", - "IPv4": "162.248.221.215", - "IPv6": "2607:f740:50::f10", - "CanPort80": true - }, - { - "Name": "21d", - "RegionID": 21, - "HostName": "derp21d.tailscale.com", - "IPv4": "162.248.221.248", - "IPv6": "2607:f740:50::ca4", - "CanPort80": true - }, - { - "Name": "21b", - "RegionID": 21, - "HostName": "derp21b.tailscale.com", - "IPv4": "162.248.221.199", - "IPv6": "2607:f740:50::1d1", - "CanPort80": true - } - ] - }, - "22": { - "RegionID": 22, - "RegionCode": "waw", - "RegionName": "Warsaw", - "Latitude": 52.23, - "Longitude": 21.011111, - "Nodes": [ - { - "Name": "22c", - "RegionID": 22, - "HostName": "derp22c.tailscale.com", - "IPv4": "45.159.98.253", - "IPv6": "2a00:dd80:40:100::3f", - "CanPort80": true - }, - { - "Name": "22d", - "RegionID": 22, - "HostName": "derp22d.tailscale.com", - "IPv4": "45.159.98.145", - "IPv6": "2a00:dd80:40:100::211", - "CanPort80": true - }, - { - "Name": "22b", - "RegionID": 22, - "HostName": "derp22b.tailscale.com", - "IPv4": "45.159.98.196", - "IPv6": "2a00:dd80:40:100::316", - "CanPort80": true - } - ] - }, - "23": { - "RegionID": 23, - "RegionCode": "dbi", - "RegionName": "Dubai", - "Latitude": 25.263056, - "Longitude": 55.297222, - "Nodes": [ - { - "Name": "23c", - "RegionID": 23, - "HostName": "derp23c.tailscale.com", - "IPv4": "185.34.3.207", - "IPv6": "2a00:dd80:3f:100::a50", - "CanPort80": true - }, - { - "Name": "23d", - "RegionID": 23, - "HostName": "derp23d.tailscale.com", - "IPv4": "185.34.3.75", - "IPv6": "2a00:dd80:3f:100::97e", - "CanPort80": true - }, - { - "Name": "23b", - "RegionID": 23, - "HostName": "derp23b.tailscale.com", - "IPv4": "185.34.3.232", - "IPv6": "2a00:dd80:3f:100::76f", - "CanPort80": true - } - ] - }, - "24": { - "RegionID": 24, - "RegionCode": "hnl", - "RegionName": "Honolulu", - "Latitude": 21.306944, - "Longitude": -157.858333, - "Nodes": [ - { - "Name": "24c", - "RegionID": 24, - "HostName": "derp24c.tailscale.com", - "IPv4": "208.83.233.233", - "IPv6": "2001:19f0:c000:c591:5400:04ff:fe26:2c5f", - "CanPort80": true - }, - { - "Name": "24d", - "RegionID": 24, - "HostName": "derp24d.tailscale.com", - "IPv4": "208.72.155.133", - "IPv6": "2001:19f0:c000:c564:5400:04ff:fe26:2ba8", - "CanPort80": true - }, - { - "Name": "24b", - "RegionID": 24, - "HostName": "derp24b.tailscale.com", - "IPv4": "208.83.234.151", - "IPv6": "2001:19f0:c000:c586:5400:04ff:fe26:2ba6", - "CanPort80": true - } - ] - }, - "25": { - "RegionID": 25, - "RegionCode": "nai", - "RegionName": "Nairobi", - "Latitude": -1.286389, - "Longitude": 36.817222, - "Nodes": [ - { - "Name": "25c", - "RegionID": 25, - "HostName": "derp25c.tailscale.com", - "IPv4": "102.67.167.37", - "IPv6": "2c0f:edb0:2000:1::2c7", - "CanPort80": true - }, - { - "Name": "25d", - "RegionID": 25, - "HostName": "derp25d.tailscale.com", - "IPv4": "102.67.167.188", - "IPv6": "2c0f:edb0:2000:1::188", - "CanPort80": true - }, - { - "Name": "25b", - "RegionID": 25, - "HostName": "derp25b.tailscale.com", - "IPv4": "102.67.167.245", - "IPv6": "2c0f:edb0:2000:1::2e9", - "CanPort80": true - } - ] - }, - "26": { - "RegionID": 26, - "RegionCode": "nue", - "RegionName": "Nuremberg", - "Latitude": 49.453889, - "Longitude": 11.0775, - "Nodes": [ - { - "Name": "26c", - "RegionID": 26, - "HostName": "derp26c.tailscale.com", - "IPv4": "49.12.193.137", - "IPv6": "2a01:4f8:1c1c:5c70::1", - "CanPort80": true - }, - { - "Name": "26d", - "RegionID": 26, - "HostName": "derp26d.tailscale.com", - "IPv4": "49.13.204.141", - "IPv6": "2a01:4f8:1c0c:7d06::1", - "CanPort80": true - }, - { - "Name": "26b", - "RegionID": 26, - "HostName": "derp26b.tailscale.com", - "IPv4": "167.235.72.200", - "IPv6": "2a01:4f8:1c1c:47b6::1", - "CanPort80": true - } - ] - }, - "27": { - "RegionID": 27, - "RegionCode": "iad", - "RegionName": "Ashburn", - "Latitude": 39.03, - "Longitude": -77.471111, - "Nodes": [ - { - "Name": "27d", - "RegionID": 27, - "HostName": "derp27d.tailscale.com", - "IPv4": "178.156.152.106", - "IPv6": "2a01:4ff:f0:3c8e::1", - "CanPort80": true - }, - { - "Name": "27c", - "RegionID": 27, - "HostName": "derp27c.tailscale.com", - "IPv4": "178.156.152.91", - "IPv6": "2a01:4ff:f0:3913::1", - "CanPort80": true - }, - { - "Name": "27e", - "RegionID": 27, - "HostName": "derp27e.tailscale.com", - "IPv4": "178.156.134.232", - "IPv6": "2a01:4ff:f0:28d4::1", - "CanPort80": true - }, - { - "Name": "27b", - "RegionID": 27, - "HostName": "derp27b.tailscale.com", - "IPv4": "5.161.218.233", - "IPv6": "2a01:4ff:f0:3db9::1", - "CanPort80": true - } - ] - }, - "28": { - "RegionID": 28, - "RegionCode": "hel", - "RegionName": "Helsinki", - "Latitude": 60.170833, - "Longitude": 24.9375, - "Nodes": [ - { - "Name": "28c", - "RegionID": 28, - "HostName": "derp28c.tailscale.com", - "IPv4": "95.217.2.165", - "IPv6": "2a01:4f9:c012:cd74::1", - "CanPort80": true - }, - { - "Name": "28d", - "RegionID": 28, - "HostName": "derp28d.tailscale.com", - "IPv4": "157.180.28.32", - "IPv6": "2a01:4f9:c012:2e5b::1", - "CanPort80": true - }, - { - "Name": "28b", - "RegionID": 28, - "HostName": "derp28b.tailscale.com", - "IPv4": "65.109.143.62", - "IPv6": "2a01:4f9:c012:d55c::1", - "CanPort80": true - } - ] - }, - "3": { - "RegionID": 3, - "RegionCode": "sin", - "RegionName": "Singapore", - "Latitude": 1.3521, - "Longitude": 103.8198, - "Nodes": [ - { - "Name": "3g", - "RegionID": 3, - "HostName": "derp3g.tailscale.com", - "IPv4": "172.237.72.79", - "IPv6": "2600:3c15::2000:adff:fe08:6fab", - "CanPort80": true - }, - { - "Name": "3f", - "RegionID": 3, - "HostName": "derp3f.tailscale.com", - "IPv4": "172.237.72.8", - "IPv6": "2600:3c15::2000:53ff:fe48:a668", - "CanPort80": true - }, - { - "Name": "3h", - "RegionID": 3, - "HostName": "derp3h.tailscale.com", - "IPv4": "172.237.66.30", - "IPv6": "2600:3c15::2000:3dff:fe44:50aa", - "CanPort80": true - }, - { - "Name": "3e", - "RegionID": 3, - "HostName": "derp3e.tailscale.com", - "IPv4": "172.237.72.43", - "IPv6": "2600:3c15::2000:6cff:fee4:d799", - "CanPort80": true - } - ] - }, - "4": { - "RegionID": 4, - "RegionCode": "fra", - "RegionName": "Frankfurt", - "Latitude": 50.1109, - "Longitude": 8.6821, - "Nodes": [ - { - "Name": "4h", - "RegionID": 4, - "HostName": "derp4h.tailscale.com", - "IPv4": "185.40.234.77", - "IPv6": "2a00:dd80:20::bcf", - "CanPort80": true - }, - { - "Name": "4g", - "RegionID": 4, - "HostName": "derp4g.tailscale.com", - "IPv4": "185.40.234.113", - "IPv6": "2a00:dd80:20::8f", - "CanPort80": true - }, - { - "Name": "4i", - "RegionID": 4, - "HostName": "derp4i.tailscale.com", - "IPv4": "185.40.234.53", - "IPv6": "2a00:dd80:20::8a6", - "CanPort80": true - }, - { - "Name": "4f", - "RegionID": 4, - "HostName": "derp4f.tailscale.com", - "IPv4": "185.40.234.219", - "IPv6": "2a00:dd80:20::a25", - "CanPort80": true - } - ] - }, - "5": { - "RegionID": 5, - "RegionCode": "syd", - "RegionName": "Sydney", - "Latitude": -33.867778, - "Longitude": 151.21, - "Nodes": [ - { - "Name": "5f", - "RegionID": 5, - "HostName": "derp5f.tailscale.com", - "IPv4": "172.105.166.103", - "IPv6": "2400:8907::2000:ccff:fe1f:80da", - "CanPort80": true - }, - { - "Name": "5g", - "RegionID": 5, - "HostName": "derp5g.tailscale.com", - "IPv4": "172.105.169.57", - "IPv6": "2400:8907::2000:2fff:fea7:57f4", - "CanPort80": true - }, - { - "Name": "5e", - "RegionID": 5, - "HostName": "derp5e.tailscale.com", - "IPv4": "172.105.179.230", - "IPv6": "2400:8907::2000:ceff:fe8d:4f4e", - "CanPort80": true - } - ] - }, - "6": { - "RegionID": 6, - "RegionCode": "blr", - "RegionName": "Bengaluru", - "Latitude": 12.9716, - "Longitude": 77.5946, - "Nodes": [ - { - "Name": "6a", - "RegionID": 6, - "HostName": "derp6.tailscale.com", - "IPv4": "68.183.90.120", - "IPv6": "2400:6180:100:d0::982:d001", - "CanPort80": true - } - ] - }, - "7": { - "RegionID": 7, - "RegionCode": "tok", - "RegionName": "Tokyo", - "Latitude": 35.6764, - "Longitude": 139.65, - "Nodes": [ - { - "Name": "7g", - "RegionID": 7, - "HostName": "derp7g.tailscale.com", - "IPv4": "172.238.6.179", - "IPv6": "2600:3c18::2000:3fff:fe80:3ebd", - "CanPort80": true - }, - { - "Name": "7f", - "RegionID": 7, - "HostName": "derp7f.tailscale.com", - "IPv4": "172.238.6.34", - "IPv6": "2600:3c18::2000:acff:fe8e:3ed5", - "CanPort80": true - }, - { - "Name": "7h", - "RegionID": 7, - "HostName": "derp7h.tailscale.com", - "IPv4": "172.237.28.183", - "IPv6": "2600:3c18::2000:b1ff:fea9:4560", - "CanPort80": true - }, - { - "Name": "7e", - "RegionID": 7, - "HostName": "derp7e.tailscale.com", - "IPv4": "172.238.6.180", - "IPv6": "2600:3c18::2000:60ff:fe0f:6e83", - "STUNOnly": true, - "CanPort80": true - } - ] - }, - "8": { - "RegionID": 8, - "RegionCode": "lhr", - "RegionName": "London", - "Latitude": 51.5072, - "Longitude": 0.1276, - "Nodes": [ - { - "Name": "8f", - "RegionID": 8, - "HostName": "derp8f.tailscale.com", - "IPv4": "176.58.88.183", - "IPv6": "2a00:dd80:3a::dfa", - "CanPort80": true - }, - { - "Name": "8g", - "RegionID": 8, - "HostName": "derp8g.tailscale.com", - "IPv4": "176.58.92.254", - "IPv6": "2a00:dd80:3a::ed", - "CanPort80": true - }, - { - "Name": "8e", - "RegionID": 8, - "HostName": "derp8e.tailscale.com", - "IPv4": "176.58.92.144", - "IPv6": "2a00:dd80:3a::b33", - "CanPort80": true - } - ] - }, - "9": { - "RegionID": 9, - "RegionCode": "dfw", - "RegionName": "Dallas", - "Latitude": 32.779167, - "Longitude": -96.808889, - "Nodes": [ - { - "Name": "9e", - "RegionID": 9, - "HostName": "derp9e.tailscale.com", - "IPv4": "192.73.248.83", - "IPv6": "2607:f740:100::359", - "CanPort80": true - }, - { - "Name": "9f", - "RegionID": 9, - "HostName": "derp9f.tailscale.com", - "IPv4": "209.177.156.197", - "IPv6": "2607:f740:100::cad", - "CanPort80": true - }, - { - "Name": "9d", - "RegionID": 9, - "HostName": "derp9d.tailscale.com", - "IPv4": "209.177.156.94", - "IPv6": "2607:f740:100::c05", - "CanPort80": true - } - ] - } - } - }, - "DisplayMessages": null, - "TKAEnabled": false, - "TKAHead": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", - "Domain": "kratail2tid@passkey", - "DomainAuditLogID": "", - "UserProfiles": { - "4156223528223174": { - "ID": 4156223528223174, - "LoginName": "kratail2tid@passkey", - "DisplayName": "kratail2tid" - } - } + "PacketFilterRules": null } } } diff --git a/hscontrol/policy/v2/testdata/grant_results/GRANT-V32.hujson b/hscontrol/policy/v2/testdata/grant_results/GRANT-V32.hujson index e7048e39e..7e2e7d420 100644 --- a/hscontrol/policy/v2/testdata/grant_results/GRANT-V32.hujson +++ b/hscontrol/policy/v2/testdata/grant_results/GRANT-V32.hujson @@ -7,29 +7,55 @@ // Expected: Rules on tagged-server { "test_id": "GRANT-V32", - "timestamp": "2026-03-28T11:52:50Z", - "propagation_wait_seconds": 8, "input": { - "policy_file": "grant_policies_via/grant_v32.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"], - "tag:exit-a": ["kratail2tid@passkey"], - "tag:exit-b": ["kratail2tid@passkey"], - "tag:group-a": ["kratail2tid@passkey"], - "tag:group-b": ["kratail2tid@passkey"], - "tag:router-a": ["kratail2tid@passkey"], - "tag:router-b": ["kratail2tid@passkey"] + "tag:server": [ + "kratail2tid@passkey" + ], + "tag:prod": [ + "kratail2tid@passkey" + ], + "tag:client": [ + "kratail2tid@passkey" + ], + "tag:router": [ + "kratail2tid@passkey" + ], + "tag:exit": [ + "kratail2tid@passkey" + ], + "tag:exit-a": [ + "kratail2tid@passkey" + ], + "tag:exit-b": [ + "kratail2tid@passkey" + ], + "tag:group-a": [ + "kratail2tid@passkey" + ], + "tag:group-b": [ + "kratail2tid@passkey" + ], + "tag:router-a": [ + "kratail2tid@passkey" + ], + "tag:router-b": [ + "kratail2tid@passkey" + ] }, "hosts": { "webserver": "100.108.74.26", @@ -38,168 +64,170 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "10.44.0.0/16": ["tag:router-a"], - "10.55.0.0/16": ["tag:router-b"], - "0.0.0.0/0": ["tag:exit", "tag:exit-a", "tag:exit-b"], - "::/0": ["tag:exit", "tag:exit-a", "tag:exit-b"] + "10.33.0.0/16": [ + "tag:router" + ], + "10.44.0.0/16": [ + "tag:router-a" + ], + "10.55.0.0/16": [ + "tag:router-b" + ], + "0.0.0.0/0": [ + "tag:exit", + "tag:exit-a", + "tag:exit-b" + ], + "::/0": [ + "tag:exit", + "tag:exit-a", + "tag:exit-b" + ] } }, "grants": [ { - "src": ["tag:client"], - "dst": ["autogroup:internet"], - "via": ["tag:exit"], - "ip": ["*"] + "src": [ + "tag:client" + ], + "dst": [ + "autogroup:internet" + ], + "via": [ + "tag:exit" + ], + "ip": [ + "*" + ] }, { - "src": ["autogroup:member"], - "dst": ["tag:server"], - "ip": ["22"] + "src": [ + "autogroup:member" + ], + "dst": [ + "tag:server" + ], + "ip": [ + "22" + ] } ] }, - "grants_section": [ - { "src": ["tag:client"], "dst": ["autogroup:internet"], "via": ["tag:exit"], "ip": ["*"] }, - { "src": ["autogroup:member"], "dst": ["tag:server"], "ip": ["22"] } - ], - "api_endpoint": "https://api.tailscale.com/api/v2/tailnet/kratail2tid%40passkey/acl", - "api_method": "POST", "api_response_code": 200 }, "topology": { "nodes": { "exit-a": { - "mts_name": "exit-a", - "socket": "/home/kradalby/.config/multi-tailscale-dev/exit-a/tailscaled.sock", "hostname": "exit-a", - "user_id": 3118755726458377, - "tags": ["tag:exit-a"], + "tags": [ + "tag:exit-a" + ], "ipv4": "100.124.195.93", "ipv6": "fd7a:115c:a1e0::7837:c35d" }, "exit-b": { - "mts_name": "exit-b", - "socket": "/home/kradalby/.config/multi-tailscale-dev/exit-b/tailscaled.sock", "hostname": "exit-b", - "user_id": 2230775583277936, - "tags": ["tag:exit-b"], + "tags": [ + "tag:exit-b" + ], "ipv4": "100.116.18.24", "ipv6": "fd7a:115c:a1e0::ff37:1218" }, "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"], + "tags": [ + "tag:exit" + ], "ipv4": "100.85.66.106", "ipv6": "fd7a:115c:a1e0::7c37:426a" }, "group-a-client": { - "mts_name": "group-a-client", - "socket": "/home/kradalby/.config/multi-tailscale-dev/group-a-client/tailscaled.sock", "hostname": "group-a-client", - "user_id": 6999435610919250, - "tags": ["tag:group-a"], + "tags": [ + "tag:group-a" + ], "ipv4": "100.107.162.14", "ipv6": "fd7a:115c:a1e0::a237:a20e" }, "group-b-client": { - "mts_name": "group-b-client", - "socket": "/home/kradalby/.config/multi-tailscale-dev/group-b-client/tailscaled.sock", "hostname": "group-b-client", - "user_id": 1008089393782498, - "tags": ["tag:group-b"], + "tags": [ + "tag:group-b" + ], "ipv4": "100.77.135.18", "ipv6": "fd7a:115c:a1e0::4b37:8712" }, "multi-exit-router": { - "mts_name": "multi-exit-router", - "socket": "/home/kradalby/.config/multi-tailscale-dev/multi-exit-router/tailscaled.sock", "hostname": "multi-exit-router", - "user_id": 6294409699640722, - "tags": ["tag:exit", "tag:router"], + "tags": [ + "tag:exit", + "tag:router" + ], "ipv4": "100.105.127.107", "ipv6": "fd7a:115c:a1e0::ad37:7f6b" }, "router-a": { - "mts_name": "router-a", - "socket": "/home/kradalby/.config/multi-tailscale-dev/router-a/tailscaled.sock", "hostname": "router-a", - "user_id": 50590507314324, - "tags": ["tag:router-a"], + "tags": [ + "tag:router-a" + ], "ipv4": "100.109.43.124", "ipv6": "fd7a:115c:a1e0::a537:2b7c" }, "router-b": { - "mts_name": "router-b", - "socket": "/home/kradalby/.config/multi-tailscale-dev/router-b/tailscaled.sock", "hostname": "router-b", - "user_id": 1399889648409786, - "tags": ["tag:router-b"], + "tags": [ + "tag:router-b" + ], "ipv4": "100.65.172.123", "ipv6": "fd7a:115c:a1e0::5a37:ac7c" }, "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"], + "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"], + "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"], + "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"], + "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" @@ -208,12229 +236,83 @@ }, "captures": { "exit-a": { - "commands": { - "packet_filter_rules": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-a/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-a/tailscaled.sock debug localapi POST debug-packet-filter-matches" - }, "packet_filter_rules": null, - "packet_filter_matches": [], - "whois": { - "100.116.18.24": { - "peer_name": "exit-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-a/tailscaled.sock whois --json 100.116.18.24", - "response": null - }, - "100.85.66.106": { - "peer_name": "exit-node", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-a/tailscaled.sock whois --json 100.85.66.106", - "response": null - }, - "100.107.162.14": { - "peer_name": "group-a-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-a/tailscaled.sock whois --json 100.107.162.14", - "response": null - }, - "100.77.135.18": { - "peer_name": "group-b-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-a/tailscaled.sock whois --json 100.77.135.18", - "response": null - }, - "100.105.127.107": { - "peer_name": "multi-exit-router", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-a/tailscaled.sock whois --json 100.105.127.107", - "response": null - }, - "100.109.43.124": { - "peer_name": "router-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-a/tailscaled.sock whois --json 100.109.43.124", - "response": null - }, - "100.65.172.123": { - "peer_name": "router-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-a/tailscaled.sock whois --json 100.65.172.123", - "response": null - }, - "100.92.142.61": { - "peer_name": "subnet-router", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-a/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-a/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-a/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-a/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-a/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-a/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-a/tailscaled.sock whois --json 100.90.199.68", - "response": null - } - }, "netmap": { - "SelfNode": { - "ID": 3118755726458377, - "StableID": "nvFTscRVMR11CNTRL", - "Name": "exit-a.tail78f774.ts.net.", - "User": 3118755726458377, - "Key": "nodekey:21ab6fa3288e3bf8cecced295316c6327f427649765eb1746cc6ee9978bcc35c", - "DiscoKey": "discokey:0c8595f67987ed47cf551646d6266c21a635d622409d10745cc08f6922066e49", - "Addresses": ["100.124.195.93/32", "fd7a:115c:a1e0::7837:c35d/128"], - "AllowedIPs": ["100.124.195.93/32", "fd7a:115c:a1e0::7837:c35d/128"], - "Endpoints": ["77.164.248.136:37550", "10.65.0.27:37550", "172.17.0.1:37550"], - "Hostinfo": { - "Hostname": "exit-a", - "RoutableIPs": ["0.0.0.0/0", "::/0"], - "RequestTags": ["tag:exit-a"], - "Services": [ - { "Proto": "peerapi4", "Port": 57826 }, - { "Proto": "peerapi6", "Port": 57826 }, - { "Proto": "peerapi-dns-proxy", "Port": 1 } - ] - }, - "Created": "2026-03-28T10:37:56.932966573Z", - "Tags": ["tag:exit-a"], - "MachineAuthorized": true, - "CapMap": { - "https://tailscale.com/cap/file-sharing": null, - "https://tailscale.com/cap/is-owner": null, - "https://tailscale.com/cap/ssh": null, - "https://tailscale.com/cap/tailnet-lock": null, - "probe-udp-lifetime": null, - "ssh-behavior-v1": null, - "ssh-env-vars": null, - "store-appc-routes": null, - "tailnet-display-name": ["kratail2tid@passkey"] - }, - "ComputedName": "exit-a", - "ComputedNameWithHost": "exit-a" - }, - "AllCaps": [ - "store-appc-routes", - "ssh-behavior-v1", - "tailnet-display-name", - "https://tailscale.com/cap/ssh", - "https://tailscale.com/cap/file-sharing", - "https://tailscale.com/cap/tailnet-lock", - "probe-udp-lifetime", - "https://tailscale.com/cap/is-owner", - "ssh-env-vars" - ], - "NodeKey": "nodekey:21ab6fa3288e3bf8cecced295316c6327f427649765eb1746cc6ee9978bcc35c", - "MachineKey": "mkey:d4a36168723163165bbdcb0b17762903171593d01c26c5bb12216932f6d10876", "Peers": [], - "DNS": { - "Routes": { - "tail78f774.ts.net.": null, - "ts.net.": [{ "Addr": "199.247.155.53" }, { "Addr": "2620:111:8007::53" }] - }, - "Domains": ["tail78f774.ts.net"], - "Proxied": true, - "ExitNodeFilteredSet": [".ts.net", ".tailscale.net"] - }, - "PacketFilter": [], - "PacketFilterRules": null, - "SSHPolicy": { "rules": [] }, - "CollectServices": false, - "DERPMap": { - "Regions": { - "1": { - "RegionID": 1, - "RegionCode": "nyc", - "RegionName": "New York City", - "Latitude": 40.7128, - "Longitude": -74.006, - "Nodes": [ - { - "Name": "1h", - "RegionID": 1, - "HostName": "derp1h.tailscale.com", - "IPv4": "199.38.181.93", - "IPv6": "2607:f740:f::afd", - "CanPort80": true - }, - { - "Name": "1g", - "RegionID": 1, - "HostName": "derp1g.tailscale.com", - "IPv4": "209.177.145.120", - "IPv6": "2607:f740:f::3eb", - "CanPort80": true - }, - { - "Name": "1i", - "RegionID": 1, - "HostName": "derp1i.tailscale.com", - "IPv4": "199.38.181.103", - "IPv6": "2607:f740:f::e19", - "CanPort80": true - }, - { - "Name": "1f", - "RegionID": 1, - "HostName": "derp1f.tailscale.com", - "IPv4": "199.38.181.104", - "IPv6": "2607:f740:f::bc", - "CanPort80": true - } - ] - }, - "10": { - "RegionID": 10, - "RegionCode": "sea", - "RegionName": "Seattle", - "Latitude": 47.609722, - "Longitude": -122.333056, - "Nodes": [ - { - "Name": "10c", - "RegionID": 10, - "HostName": "derp10c.tailscale.com", - "IPv4": "192.73.240.121", - "IPv6": "2607:f740:14::40c", - "CanPort80": true - }, - { - "Name": "10d", - "RegionID": 10, - "HostName": "derp10d.tailscale.com", - "IPv4": "192.73.240.132", - "IPv6": "2607:f740:14::500", - "CanPort80": true - }, - { - "Name": "10b", - "RegionID": 10, - "HostName": "derp10b.tailscale.com", - "IPv4": "192.73.240.161", - "IPv6": "2607:f740:14::61c", - "CanPort80": true - } - ] - }, - "11": { - "RegionID": 11, - "RegionCode": "sao", - "RegionName": "São Paulo", - "Latitude": -23.55, - "Longitude": -46.633333, - "Nodes": [ - { - "Name": "11f", - "RegionID": 11, - "HostName": "derp11f.tailscale.com", - "IPv4": "172.237.61.197", - "IPv6": "2600:3c0d::2000:3bff:fe44:6166", - "CanPort80": true - }, - { - "Name": "11g", - "RegionID": 11, - "HostName": "derp11g.tailscale.com", - "IPv4": "172.237.61.190", - "IPv6": "2600:3c0d::2000:62ff:febe:2e67", - "CanPort80": true - }, - { - "Name": "11e", - "RegionID": 11, - "HostName": "derp11e.tailscale.com", - "IPv4": "172.237.61.194", - "IPv6": "2600:3c0d::2000:d2ff:fe43:1790", - "CanPort80": true - } - ] - }, - "12": { - "RegionID": 12, - "RegionCode": "ord", - "RegionName": "Chicago", - "Latitude": 41.881944, - "Longitude": -87.627778, - "Nodes": [ - { - "Name": "12e", - "RegionID": 12, - "HostName": "derp12e.tailscale.com", - "IPv4": "209.177.158.15", - "IPv6": "2607:f740:e::b17", - "CanPort80": true - }, - { - "Name": "12f", - "RegionID": 12, - "HostName": "derp12f.tailscale.com", - "IPv4": "199.38.182.118", - "IPv6": "2607:f740:e::4c8", - "CanPort80": true - }, - { - "Name": "12d", - "RegionID": 12, - "HostName": "derp12d.tailscale.com", - "IPv4": "209.177.158.246", - "IPv6": "2607:f740:e::811", - "CanPort80": true - } - ] - }, - "13": { - "RegionID": 13, - "RegionCode": "den", - "RegionName": "Denver", - "Latitude": 39.7392, - "Longitude": -104.9849, - "Nodes": [ - { - "Name": "13c", - "RegionID": 13, - "HostName": "derp13c.tailscale.com", - "IPv4": "192.73.242.28", - "IPv6": "2607:f740:16::5c", - "CanPort80": true - }, - { - "Name": "13d", - "RegionID": 13, - "HostName": "derp13d.tailscale.com", - "IPv4": "192.73.242.204", - "IPv6": "2607:f740:16::c23", - "CanPort80": true - }, - { - "Name": "13b", - "RegionID": 13, - "HostName": "derp13b.tailscale.com", - "IPv4": "192.73.242.187", - "IPv6": "2607:f740:16::640", - "CanPort80": true - } - ] - }, - "14": { - "RegionID": 14, - "RegionCode": "ams", - "RegionName": "Amsterdam", - "Latitude": 52.372778, - "Longitude": 4.893611, - "Nodes": [ - { - "Name": "14c", - "RegionID": 14, - "HostName": "derp14c.tailscale.com", - "IPv4": "176.58.93.147", - "IPv6": "2a00:dd80:3c::b09", - "CanPort80": true - }, - { - "Name": "14d", - "RegionID": 14, - "HostName": "derp14d.tailscale.com", - "IPv4": "176.58.93.154", - "IPv6": "2a00:dd80:3c::3d5", - "CanPort80": true - }, - { - "Name": "14b", - "RegionID": 14, - "HostName": "derp14b.tailscale.com", - "IPv4": "176.58.93.248", - "IPv6": "2a00:dd80:3c::807", - "CanPort80": true - } - ] - }, - "15": { - "RegionID": 15, - "RegionCode": "jnb", - "RegionName": "Johannesburg", - "Latitude": -26.204444, - "Longitude": 28.045556, - "Nodes": [ - { - "Name": "15c", - "RegionID": 15, - "HostName": "derp15c.tailscale.com", - "IPv4": "102.67.165.185", - "IPv6": "2c0f:edb0:0:10::b59", - "CanPort80": true - }, - { - "Name": "15d", - "RegionID": 15, - "HostName": "derp15d.tailscale.com", - "IPv4": "102.67.165.36", - "IPv6": "2c0f:edb0:0:10::599", - "CanPort80": true - }, - { - "Name": "15b", - "RegionID": 15, - "HostName": "derp15b.tailscale.com", - "IPv4": "102.67.165.90", - "IPv6": "2c0f:edb0:0:10::963", - "CanPort80": true - } - ] - }, - "16": { - "RegionID": 16, - "RegionCode": "mia", - "RegionName": "Miami", - "Latitude": 25.78, - "Longitude": -80.21, - "Nodes": [ - { - "Name": "16c", - "RegionID": 16, - "HostName": "derp16c.tailscale.com", - "IPv4": "192.73.243.229", - "IPv6": "2607:f740:17::4e4", - "CanPort80": true - }, - { - "Name": "16d", - "RegionID": 16, - "HostName": "derp16d.tailscale.com", - "IPv4": "192.73.243.141", - "IPv6": "2607:f740:17::475", - "CanPort80": true - }, - { - "Name": "16b", - "RegionID": 16, - "HostName": "derp16b.tailscale.com", - "IPv4": "192.73.243.135", - "IPv6": "2607:f740:17::476", - "CanPort80": true - } - ] - }, - "17": { - "RegionID": 17, - "RegionCode": "lax", - "RegionName": "Los Angeles", - "Latitude": 34.05, - "Longitude": -118.25, - "Nodes": [ - { - "Name": "17c", - "RegionID": 17, - "HostName": "derp17c.tailscale.com", - "IPv4": "208.111.40.12", - "IPv6": "2607:f740:c::10", - "CanPort80": true - }, - { - "Name": "17d", - "RegionID": 17, - "HostName": "derp17d.tailscale.com", - "IPv4": "208.111.40.216", - "IPv6": "2607:f740:c::e1b", - "CanPort80": true - }, - { - "Name": "17b", - "RegionID": 17, - "HostName": "derp17b.tailscale.com", - "IPv4": "192.73.244.245", - "IPv6": "2607:f740:c::646", - "CanPort80": true - } - ] - }, - "18": { - "RegionID": 18, - "RegionCode": "par", - "RegionName": "Paris", - "Latitude": 48.856667, - "Longitude": 2.352222, - "Nodes": [ - { - "Name": "18c", - "RegionID": 18, - "HostName": "derp18c.tailscale.com", - "IPv4": "176.58.90.207", - "IPv6": "2a00:dd80:3e::c19", - "CanPort80": true - }, - { - "Name": "18d", - "RegionID": 18, - "HostName": "derp18d.tailscale.com", - "IPv4": "176.58.90.104", - "IPv6": "2a00:dd80:3e::f2e", - "CanPort80": true - }, - { - "Name": "18b", - "RegionID": 18, - "HostName": "derp18b.tailscale.com", - "IPv4": "176.58.90.147", - "IPv6": "2a00:dd80:3e::363", - "CanPort80": true - } - ] - }, - "19": { - "RegionID": 19, - "RegionCode": "mad", - "RegionName": "Madrid", - "Latitude": 40.416944, - "Longitude": -3.703333, - "Nodes": [ - { - "Name": "19c", - "RegionID": 19, - "HostName": "derp19c.tailscale.com", - "IPv4": "45.159.97.61", - "IPv6": "2a00:dd80:14:10::20", - "CanPort80": true - }, - { - "Name": "19d", - "RegionID": 19, - "HostName": "derp19d.tailscale.com", - "IPv4": "45.159.97.233", - "IPv6": "2a00:dd80:14:10::34a", - "CanPort80": true - }, - { - "Name": "19b", - "RegionID": 19, - "HostName": "derp19b.tailscale.com", - "IPv4": "45.159.97.144", - "IPv6": "2a00:dd80:14:10::335", - "CanPort80": true - } - ] - }, - "2": { - "RegionID": 2, - "RegionCode": "sfo", - "RegionName": "San Francisco", - "Latitude": 37.7775, - "Longitude": -122.416389, - "Nodes": [ - { - "Name": "2e", - "RegionID": 2, - "HostName": "derp2e.tailscale.com", - "IPv4": "192.73.252.134", - "IPv6": "2607:f740:0:3f::44c", - "CanPort80": true - }, - { - "Name": "2f", - "RegionID": 2, - "HostName": "derp2f.tailscale.com", - "IPv4": "208.111.34.178", - "IPv6": "2607:f740:0:3f::f4", - "CanPort80": true - }, - { - "Name": "2d", - "RegionID": 2, - "HostName": "derp2d.tailscale.com", - "IPv4": "192.73.252.65", - "IPv6": "2607:f740:0:3f::287", - "CanPort80": true - } - ] - }, - "20": { - "RegionID": 20, - "RegionCode": "hkg", - "RegionName": "Hong Kong", - "Latitude": 22.3193, - "Longitude": 114.1694, - "Nodes": [ - { - "Name": "20c", - "RegionID": 20, - "HostName": "derp20c.tailscale.com", - "IPv4": "205.147.105.30", - "IPv6": "2403:2500:8000:1::5fb", - "CanPort80": true - }, - { - "Name": "20d", - "RegionID": 20, - "HostName": "derp20d.tailscale.com", - "IPv4": "205.147.105.78", - "IPv6": "2403:2500:8000:1::e9a", - "CanPort80": true - }, - { - "Name": "20b", - "RegionID": 20, - "HostName": "derp20b.tailscale.com", - "IPv4": "103.6.84.152", - "IPv6": "2403:2500:8000:1::ef6", - "CanPort80": true - } - ] - }, - "21": { - "RegionID": 21, - "RegionCode": "tor", - "RegionName": "Toronto", - "Latitude": 43.741667, - "Longitude": -79.373333, - "Nodes": [ - { - "Name": "21c", - "RegionID": 21, - "HostName": "derp21c.tailscale.com", - "IPv4": "162.248.221.215", - "IPv6": "2607:f740:50::f10", - "CanPort80": true - }, - { - "Name": "21d", - "RegionID": 21, - "HostName": "derp21d.tailscale.com", - "IPv4": "162.248.221.248", - "IPv6": "2607:f740:50::ca4", - "CanPort80": true - }, - { - "Name": "21b", - "RegionID": 21, - "HostName": "derp21b.tailscale.com", - "IPv4": "162.248.221.199", - "IPv6": "2607:f740:50::1d1", - "CanPort80": true - } - ] - }, - "22": { - "RegionID": 22, - "RegionCode": "waw", - "RegionName": "Warsaw", - "Latitude": 52.23, - "Longitude": 21.011111, - "Nodes": [ - { - "Name": "22c", - "RegionID": 22, - "HostName": "derp22c.tailscale.com", - "IPv4": "45.159.98.253", - "IPv6": "2a00:dd80:40:100::3f", - "CanPort80": true - }, - { - "Name": "22d", - "RegionID": 22, - "HostName": "derp22d.tailscale.com", - "IPv4": "45.159.98.145", - "IPv6": "2a00:dd80:40:100::211", - "CanPort80": true - }, - { - "Name": "22b", - "RegionID": 22, - "HostName": "derp22b.tailscale.com", - "IPv4": "45.159.98.196", - "IPv6": "2a00:dd80:40:100::316", - "CanPort80": true - } - ] - }, - "23": { - "RegionID": 23, - "RegionCode": "dbi", - "RegionName": "Dubai", - "Latitude": 25.263056, - "Longitude": 55.297222, - "Nodes": [ - { - "Name": "23c", - "RegionID": 23, - "HostName": "derp23c.tailscale.com", - "IPv4": "185.34.3.207", - "IPv6": "2a00:dd80:3f:100::a50", - "CanPort80": true - }, - { - "Name": "23d", - "RegionID": 23, - "HostName": "derp23d.tailscale.com", - "IPv4": "185.34.3.75", - "IPv6": "2a00:dd80:3f:100::97e", - "CanPort80": true - }, - { - "Name": "23b", - "RegionID": 23, - "HostName": "derp23b.tailscale.com", - "IPv4": "185.34.3.232", - "IPv6": "2a00:dd80:3f:100::76f", - "CanPort80": true - } - ] - }, - "24": { - "RegionID": 24, - "RegionCode": "hnl", - "RegionName": "Honolulu", - "Latitude": 21.306944, - "Longitude": -157.858333, - "Nodes": [ - { - "Name": "24c", - "RegionID": 24, - "HostName": "derp24c.tailscale.com", - "IPv4": "208.83.233.233", - "IPv6": "2001:19f0:c000:c591:5400:04ff:fe26:2c5f", - "CanPort80": true - }, - { - "Name": "24d", - "RegionID": 24, - "HostName": "derp24d.tailscale.com", - "IPv4": "208.72.155.133", - "IPv6": "2001:19f0:c000:c564:5400:04ff:fe26:2ba8", - "CanPort80": true - }, - { - "Name": "24b", - "RegionID": 24, - "HostName": "derp24b.tailscale.com", - "IPv4": "208.83.234.151", - "IPv6": "2001:19f0:c000:c586:5400:04ff:fe26:2ba6", - "CanPort80": true - } - ] - }, - "25": { - "RegionID": 25, - "RegionCode": "nai", - "RegionName": "Nairobi", - "Latitude": -1.286389, - "Longitude": 36.817222, - "Nodes": [ - { - "Name": "25c", - "RegionID": 25, - "HostName": "derp25c.tailscale.com", - "IPv4": "102.67.167.37", - "IPv6": "2c0f:edb0:2000:1::2c7", - "CanPort80": true - }, - { - "Name": "25d", - "RegionID": 25, - "HostName": "derp25d.tailscale.com", - "IPv4": "102.67.167.188", - "IPv6": "2c0f:edb0:2000:1::188", - "CanPort80": true - }, - { - "Name": "25b", - "RegionID": 25, - "HostName": "derp25b.tailscale.com", - "IPv4": "102.67.167.245", - "IPv6": "2c0f:edb0:2000:1::2e9", - "CanPort80": true - } - ] - }, - "26": { - "RegionID": 26, - "RegionCode": "nue", - "RegionName": "Nuremberg", - "Latitude": 49.453889, - "Longitude": 11.0775, - "Nodes": [ - { - "Name": "26c", - "RegionID": 26, - "HostName": "derp26c.tailscale.com", - "IPv4": "49.12.193.137", - "IPv6": "2a01:4f8:1c1c:5c70::1", - "CanPort80": true - }, - { - "Name": "26d", - "RegionID": 26, - "HostName": "derp26d.tailscale.com", - "IPv4": "49.13.204.141", - "IPv6": "2a01:4f8:1c0c:7d06::1", - "CanPort80": true - }, - { - "Name": "26b", - "RegionID": 26, - "HostName": "derp26b.tailscale.com", - "IPv4": "167.235.72.200", - "IPv6": "2a01:4f8:1c1c:47b6::1", - "CanPort80": true - } - ] - }, - "27": { - "RegionID": 27, - "RegionCode": "iad", - "RegionName": "Ashburn", - "Latitude": 39.03, - "Longitude": -77.471111, - "Nodes": [ - { - "Name": "27d", - "RegionID": 27, - "HostName": "derp27d.tailscale.com", - "IPv4": "178.156.152.106", - "IPv6": "2a01:4ff:f0:3c8e::1", - "CanPort80": true - }, - { - "Name": "27c", - "RegionID": 27, - "HostName": "derp27c.tailscale.com", - "IPv4": "178.156.152.91", - "IPv6": "2a01:4ff:f0:3913::1", - "CanPort80": true - }, - { - "Name": "27e", - "RegionID": 27, - "HostName": "derp27e.tailscale.com", - "IPv4": "178.156.134.232", - "IPv6": "2a01:4ff:f0:28d4::1", - "CanPort80": true - }, - { - "Name": "27b", - "RegionID": 27, - "HostName": "derp27b.tailscale.com", - "IPv4": "5.161.218.233", - "IPv6": "2a01:4ff:f0:3db9::1", - "CanPort80": true - } - ] - }, - "28": { - "RegionID": 28, - "RegionCode": "hel", - "RegionName": "Helsinki", - "Latitude": 60.170833, - "Longitude": 24.9375, - "Nodes": [ - { - "Name": "28c", - "RegionID": 28, - "HostName": "derp28c.tailscale.com", - "IPv4": "95.217.2.165", - "IPv6": "2a01:4f9:c012:cd74::1", - "CanPort80": true - }, - { - "Name": "28d", - "RegionID": 28, - "HostName": "derp28d.tailscale.com", - "IPv4": "157.180.28.32", - "IPv6": "2a01:4f9:c012:2e5b::1", - "CanPort80": true - }, - { - "Name": "28b", - "RegionID": 28, - "HostName": "derp28b.tailscale.com", - "IPv4": "65.109.143.62", - "IPv6": "2a01:4f9:c012:d55c::1", - "CanPort80": true - } - ] - }, - "3": { - "RegionID": 3, - "RegionCode": "sin", - "RegionName": "Singapore", - "Latitude": 1.3521, - "Longitude": 103.8198, - "Nodes": [ - { - "Name": "3g", - "RegionID": 3, - "HostName": "derp3g.tailscale.com", - "IPv4": "172.237.72.79", - "IPv6": "2600:3c15::2000:adff:fe08:6fab", - "CanPort80": true - }, - { - "Name": "3f", - "RegionID": 3, - "HostName": "derp3f.tailscale.com", - "IPv4": "172.237.72.8", - "IPv6": "2600:3c15::2000:53ff:fe48:a668", - "CanPort80": true - }, - { - "Name": "3h", - "RegionID": 3, - "HostName": "derp3h.tailscale.com", - "IPv4": "172.237.66.30", - "IPv6": "2600:3c15::2000:3dff:fe44:50aa", - "CanPort80": true - }, - { - "Name": "3e", - "RegionID": 3, - "HostName": "derp3e.tailscale.com", - "IPv4": "172.237.72.43", - "IPv6": "2600:3c15::2000:6cff:fee4:d799", - "CanPort80": true - } - ] - }, - "4": { - "RegionID": 4, - "RegionCode": "fra", - "RegionName": "Frankfurt", - "Latitude": 50.1109, - "Longitude": 8.6821, - "Nodes": [ - { - "Name": "4h", - "RegionID": 4, - "HostName": "derp4h.tailscale.com", - "IPv4": "185.40.234.77", - "IPv6": "2a00:dd80:20::bcf", - "CanPort80": true - }, - { - "Name": "4g", - "RegionID": 4, - "HostName": "derp4g.tailscale.com", - "IPv4": "185.40.234.113", - "IPv6": "2a00:dd80:20::8f", - "CanPort80": true - }, - { - "Name": "4i", - "RegionID": 4, - "HostName": "derp4i.tailscale.com", - "IPv4": "185.40.234.53", - "IPv6": "2a00:dd80:20::8a6", - "CanPort80": true - }, - { - "Name": "4f", - "RegionID": 4, - "HostName": "derp4f.tailscale.com", - "IPv4": "185.40.234.219", - "IPv6": "2a00:dd80:20::a25", - "CanPort80": true - } - ] - }, - "5": { - "RegionID": 5, - "RegionCode": "syd", - "RegionName": "Sydney", - "Latitude": -33.867778, - "Longitude": 151.21, - "Nodes": [ - { - "Name": "5f", - "RegionID": 5, - "HostName": "derp5f.tailscale.com", - "IPv4": "172.105.166.103", - "IPv6": "2400:8907::2000:ccff:fe1f:80da", - "CanPort80": true - }, - { - "Name": "5g", - "RegionID": 5, - "HostName": "derp5g.tailscale.com", - "IPv4": "172.105.169.57", - "IPv6": "2400:8907::2000:2fff:fea7:57f4", - "CanPort80": true - }, - { - "Name": "5e", - "RegionID": 5, - "HostName": "derp5e.tailscale.com", - "IPv4": "172.105.179.230", - "IPv6": "2400:8907::2000:ceff:fe8d:4f4e", - "CanPort80": true - } - ] - }, - "6": { - "RegionID": 6, - "RegionCode": "blr", - "RegionName": "Bengaluru", - "Latitude": 12.9716, - "Longitude": 77.5946, - "Nodes": [ - { - "Name": "6a", - "RegionID": 6, - "HostName": "derp6.tailscale.com", - "IPv4": "68.183.90.120", - "IPv6": "2400:6180:100:d0::982:d001", - "CanPort80": true - } - ] - }, - "7": { - "RegionID": 7, - "RegionCode": "tok", - "RegionName": "Tokyo", - "Latitude": 35.6764, - "Longitude": 139.65, - "Nodes": [ - { - "Name": "7g", - "RegionID": 7, - "HostName": "derp7g.tailscale.com", - "IPv4": "172.238.6.179", - "IPv6": "2600:3c18::2000:3fff:fe80:3ebd", - "CanPort80": true - }, - { - "Name": "7f", - "RegionID": 7, - "HostName": "derp7f.tailscale.com", - "IPv4": "172.238.6.34", - "IPv6": "2600:3c18::2000:acff:fe8e:3ed5", - "CanPort80": true - }, - { - "Name": "7h", - "RegionID": 7, - "HostName": "derp7h.tailscale.com", - "IPv4": "172.237.28.183", - "IPv6": "2600:3c18::2000:b1ff:fea9:4560", - "CanPort80": true - }, - { - "Name": "7e", - "RegionID": 7, - "HostName": "derp7e.tailscale.com", - "IPv4": "172.238.6.180", - "IPv6": "2600:3c18::2000:60ff:fe0f:6e83", - "STUNOnly": true, - "CanPort80": true - } - ] - }, - "8": { - "RegionID": 8, - "RegionCode": "lhr", - "RegionName": "London", - "Latitude": 51.5072, - "Longitude": 0.1276, - "Nodes": [ - { - "Name": "8f", - "RegionID": 8, - "HostName": "derp8f.tailscale.com", - "IPv4": "176.58.88.183", - "IPv6": "2a00:dd80:3a::dfa", - "CanPort80": true - }, - { - "Name": "8g", - "RegionID": 8, - "HostName": "derp8g.tailscale.com", - "IPv4": "176.58.92.254", - "IPv6": "2a00:dd80:3a::ed", - "CanPort80": true - }, - { - "Name": "8e", - "RegionID": 8, - "HostName": "derp8e.tailscale.com", - "IPv4": "176.58.92.144", - "IPv6": "2a00:dd80:3a::b33", - "CanPort80": true - } - ] - }, - "9": { - "RegionID": 9, - "RegionCode": "dfw", - "RegionName": "Dallas", - "Latitude": 32.779167, - "Longitude": -96.808889, - "Nodes": [ - { - "Name": "9e", - "RegionID": 9, - "HostName": "derp9e.tailscale.com", - "IPv4": "192.73.248.83", - "IPv6": "2607:f740:100::359", - "CanPort80": true - }, - { - "Name": "9f", - "RegionID": 9, - "HostName": "derp9f.tailscale.com", - "IPv4": "209.177.156.197", - "IPv6": "2607:f740:100::cad", - "CanPort80": true - }, - { - "Name": "9d", - "RegionID": 9, - "HostName": "derp9d.tailscale.com", - "IPv4": "209.177.156.94", - "IPv6": "2607:f740:100::c05", - "CanPort80": true - } - ] - } - } - }, - "DisplayMessages": null, - "TKAEnabled": false, - "TKAHead": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", - "Domain": "kratail2tid@passkey", - "DomainAuditLogID": "", - "UserProfiles": { - "3118755726458377": { - "ID": 3118755726458377, - "LoginName": "exit-a.tail78f774.ts.net", - "DisplayName": "exit-a" - } - } + "PacketFilterRules": null } }, "exit-b": { - "commands": { - "packet_filter_rules": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-b/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-b/tailscaled.sock debug localapi POST debug-packet-filter-matches" - }, "packet_filter_rules": null, - "packet_filter_matches": [], - "whois": { - "100.124.195.93": { - "peer_name": "exit-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-b/tailscaled.sock whois --json 100.124.195.93", - "response": null - }, - "100.85.66.106": { - "peer_name": "exit-node", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-b/tailscaled.sock whois --json 100.85.66.106", - "response": null - }, - "100.107.162.14": { - "peer_name": "group-a-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-b/tailscaled.sock whois --json 100.107.162.14", - "response": null - }, - "100.77.135.18": { - "peer_name": "group-b-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-b/tailscaled.sock whois --json 100.77.135.18", - "response": null - }, - "100.105.127.107": { - "peer_name": "multi-exit-router", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-b/tailscaled.sock whois --json 100.105.127.107", - "response": null - }, - "100.109.43.124": { - "peer_name": "router-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-b/tailscaled.sock whois --json 100.109.43.124", - "response": null - }, - "100.65.172.123": { - "peer_name": "router-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-b/tailscaled.sock whois --json 100.65.172.123", - "response": null - }, - "100.92.142.61": { - "peer_name": "subnet-router", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-b/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-b/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-b/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-b/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-b/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-b/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-b/tailscaled.sock whois --json 100.90.199.68", - "response": null - } - }, "netmap": { - "SelfNode": { - "ID": 2230775583277936, - "StableID": "ndK1N8hKRJ11CNTRL", - "Name": "exit-b.tail78f774.ts.net.", - "User": 2230775583277936, - "Key": "nodekey:265e1377372be0d036773ac41339bf7b53ed18e9f67f196d7d517abeff741217", - "DiscoKey": "discokey:63071b08ff89860a2d98005f8f6f65f3b92e05b7b1338b1be71e4ad866f12728", - "Addresses": ["100.116.18.24/32", "fd7a:115c:a1e0::ff37:1218/128"], - "AllowedIPs": ["100.116.18.24/32", "fd7a:115c:a1e0::ff37:1218/128"], - "Endpoints": ["77.164.248.136:35565", "10.65.0.27:35565", "172.17.0.1:35565"], - "Hostinfo": { - "Hostname": "exit-b", - "RoutableIPs": ["0.0.0.0/0", "::/0"], - "RequestTags": ["tag:exit-b"], - "Services": [ - { "Proto": "peerapi4", "Port": 61723 }, - { "Proto": "peerapi6", "Port": 61723 }, - { "Proto": "peerapi-dns-proxy", "Port": 1 } - ] - }, - "Created": "2026-03-28T10:38:00.655990366Z", - "Tags": ["tag:exit-b"], - "MachineAuthorized": true, - "CapMap": { - "https://tailscale.com/cap/file-sharing": null, - "https://tailscale.com/cap/is-owner": null, - "https://tailscale.com/cap/ssh": null, - "https://tailscale.com/cap/tailnet-lock": null, - "probe-udp-lifetime": null, - "ssh-behavior-v1": null, - "ssh-env-vars": null, - "store-appc-routes": null, - "tailnet-display-name": ["kratail2tid@passkey"] - }, - "ComputedName": "exit-b", - "ComputedNameWithHost": "exit-b" - }, - "AllCaps": [ - "probe-udp-lifetime", - "store-appc-routes", - "https://tailscale.com/cap/is-owner", - "ssh-behavior-v1", - "https://tailscale.com/cap/ssh", - "https://tailscale.com/cap/file-sharing", - "ssh-env-vars", - "tailnet-display-name", - "https://tailscale.com/cap/tailnet-lock" - ], - "NodeKey": "nodekey:265e1377372be0d036773ac41339bf7b53ed18e9f67f196d7d517abeff741217", - "MachineKey": "mkey:f4cbc28e2db0f8d8a6a5fc3991b055477e5efc6c025d24b72d3509fa3743401c", "Peers": [], - "DNS": { - "Routes": { - "tail78f774.ts.net.": null, - "ts.net.": [{ "Addr": "199.247.155.53" }, { "Addr": "2620:111:8007::53" }] - }, - "Domains": ["tail78f774.ts.net"], - "Proxied": true, - "ExitNodeFilteredSet": [".ts.net", ".tailscale.net"] - }, - "PacketFilter": [], - "PacketFilterRules": null, - "SSHPolicy": { "rules": [] }, - "CollectServices": false, - "DERPMap": { - "Regions": { - "1": { - "RegionID": 1, - "RegionCode": "nyc", - "RegionName": "New York City", - "Latitude": 40.7128, - "Longitude": -74.006, - "Nodes": [ - { - "Name": "1h", - "RegionID": 1, - "HostName": "derp1h.tailscale.com", - "IPv4": "199.38.181.93", - "IPv6": "2607:f740:f::afd", - "CanPort80": true - }, - { - "Name": "1g", - "RegionID": 1, - "HostName": "derp1g.tailscale.com", - "IPv4": "209.177.145.120", - "IPv6": "2607:f740:f::3eb", - "CanPort80": true - }, - { - "Name": "1i", - "RegionID": 1, - "HostName": "derp1i.tailscale.com", - "IPv4": "199.38.181.103", - "IPv6": "2607:f740:f::e19", - "CanPort80": true - }, - { - "Name": "1f", - "RegionID": 1, - "HostName": "derp1f.tailscale.com", - "IPv4": "199.38.181.104", - "IPv6": "2607:f740:f::bc", - "CanPort80": true - } - ] - }, - "10": { - "RegionID": 10, - "RegionCode": "sea", - "RegionName": "Seattle", - "Latitude": 47.609722, - "Longitude": -122.333056, - "Nodes": [ - { - "Name": "10c", - "RegionID": 10, - "HostName": "derp10c.tailscale.com", - "IPv4": "192.73.240.121", - "IPv6": "2607:f740:14::40c", - "CanPort80": true - }, - { - "Name": "10d", - "RegionID": 10, - "HostName": "derp10d.tailscale.com", - "IPv4": "192.73.240.132", - "IPv6": "2607:f740:14::500", - "CanPort80": true - }, - { - "Name": "10b", - "RegionID": 10, - "HostName": "derp10b.tailscale.com", - "IPv4": "192.73.240.161", - "IPv6": "2607:f740:14::61c", - "CanPort80": true - } - ] - }, - "11": { - "RegionID": 11, - "RegionCode": "sao", - "RegionName": "São Paulo", - "Latitude": -23.55, - "Longitude": -46.633333, - "Nodes": [ - { - "Name": "11f", - "RegionID": 11, - "HostName": "derp11f.tailscale.com", - "IPv4": "172.237.61.197", - "IPv6": "2600:3c0d::2000:3bff:fe44:6166", - "CanPort80": true - }, - { - "Name": "11g", - "RegionID": 11, - "HostName": "derp11g.tailscale.com", - "IPv4": "172.237.61.190", - "IPv6": "2600:3c0d::2000:62ff:febe:2e67", - "CanPort80": true - }, - { - "Name": "11e", - "RegionID": 11, - "HostName": "derp11e.tailscale.com", - "IPv4": "172.237.61.194", - "IPv6": "2600:3c0d::2000:d2ff:fe43:1790", - "CanPort80": true - } - ] - }, - "12": { - "RegionID": 12, - "RegionCode": "ord", - "RegionName": "Chicago", - "Latitude": 41.881944, - "Longitude": -87.627778, - "Nodes": [ - { - "Name": "12e", - "RegionID": 12, - "HostName": "derp12e.tailscale.com", - "IPv4": "209.177.158.15", - "IPv6": "2607:f740:e::b17", - "CanPort80": true - }, - { - "Name": "12f", - "RegionID": 12, - "HostName": "derp12f.tailscale.com", - "IPv4": "199.38.182.118", - "IPv6": "2607:f740:e::4c8", - "CanPort80": true - }, - { - "Name": "12d", - "RegionID": 12, - "HostName": "derp12d.tailscale.com", - "IPv4": "209.177.158.246", - "IPv6": "2607:f740:e::811", - "CanPort80": true - } - ] - }, - "13": { - "RegionID": 13, - "RegionCode": "den", - "RegionName": "Denver", - "Latitude": 39.7392, - "Longitude": -104.9849, - "Nodes": [ - { - "Name": "13c", - "RegionID": 13, - "HostName": "derp13c.tailscale.com", - "IPv4": "192.73.242.28", - "IPv6": "2607:f740:16::5c", - "CanPort80": true - }, - { - "Name": "13d", - "RegionID": 13, - "HostName": "derp13d.tailscale.com", - "IPv4": "192.73.242.204", - "IPv6": "2607:f740:16::c23", - "CanPort80": true - }, - { - "Name": "13b", - "RegionID": 13, - "HostName": "derp13b.tailscale.com", - "IPv4": "192.73.242.187", - "IPv6": "2607:f740:16::640", - "CanPort80": true - } - ] - }, - "14": { - "RegionID": 14, - "RegionCode": "ams", - "RegionName": "Amsterdam", - "Latitude": 52.372778, - "Longitude": 4.893611, - "Nodes": [ - { - "Name": "14c", - "RegionID": 14, - "HostName": "derp14c.tailscale.com", - "IPv4": "176.58.93.147", - "IPv6": "2a00:dd80:3c::b09", - "CanPort80": true - }, - { - "Name": "14d", - "RegionID": 14, - "HostName": "derp14d.tailscale.com", - "IPv4": "176.58.93.154", - "IPv6": "2a00:dd80:3c::3d5", - "CanPort80": true - }, - { - "Name": "14b", - "RegionID": 14, - "HostName": "derp14b.tailscale.com", - "IPv4": "176.58.93.248", - "IPv6": "2a00:dd80:3c::807", - "CanPort80": true - } - ] - }, - "15": { - "RegionID": 15, - "RegionCode": "jnb", - "RegionName": "Johannesburg", - "Latitude": -26.204444, - "Longitude": 28.045556, - "Nodes": [ - { - "Name": "15c", - "RegionID": 15, - "HostName": "derp15c.tailscale.com", - "IPv4": "102.67.165.185", - "IPv6": "2c0f:edb0:0:10::b59", - "CanPort80": true - }, - { - "Name": "15d", - "RegionID": 15, - "HostName": "derp15d.tailscale.com", - "IPv4": "102.67.165.36", - "IPv6": "2c0f:edb0:0:10::599", - "CanPort80": true - }, - { - "Name": "15b", - "RegionID": 15, - "HostName": "derp15b.tailscale.com", - "IPv4": "102.67.165.90", - "IPv6": "2c0f:edb0:0:10::963", - "CanPort80": true - } - ] - }, - "16": { - "RegionID": 16, - "RegionCode": "mia", - "RegionName": "Miami", - "Latitude": 25.78, - "Longitude": -80.21, - "Nodes": [ - { - "Name": "16c", - "RegionID": 16, - "HostName": "derp16c.tailscale.com", - "IPv4": "192.73.243.229", - "IPv6": "2607:f740:17::4e4", - "CanPort80": true - }, - { - "Name": "16d", - "RegionID": 16, - "HostName": "derp16d.tailscale.com", - "IPv4": "192.73.243.141", - "IPv6": "2607:f740:17::475", - "CanPort80": true - }, - { - "Name": "16b", - "RegionID": 16, - "HostName": "derp16b.tailscale.com", - "IPv4": "192.73.243.135", - "IPv6": "2607:f740:17::476", - "CanPort80": true - } - ] - }, - "17": { - "RegionID": 17, - "RegionCode": "lax", - "RegionName": "Los Angeles", - "Latitude": 34.05, - "Longitude": -118.25, - "Nodes": [ - { - "Name": "17c", - "RegionID": 17, - "HostName": "derp17c.tailscale.com", - "IPv4": "208.111.40.12", - "IPv6": "2607:f740:c::10", - "CanPort80": true - }, - { - "Name": "17d", - "RegionID": 17, - "HostName": "derp17d.tailscale.com", - "IPv4": "208.111.40.216", - "IPv6": "2607:f740:c::e1b", - "CanPort80": true - }, - { - "Name": "17b", - "RegionID": 17, - "HostName": "derp17b.tailscale.com", - "IPv4": "192.73.244.245", - "IPv6": "2607:f740:c::646", - "CanPort80": true - } - ] - }, - "18": { - "RegionID": 18, - "RegionCode": "par", - "RegionName": "Paris", - "Latitude": 48.856667, - "Longitude": 2.352222, - "Nodes": [ - { - "Name": "18c", - "RegionID": 18, - "HostName": "derp18c.tailscale.com", - "IPv4": "176.58.90.207", - "IPv6": "2a00:dd80:3e::c19", - "CanPort80": true - }, - { - "Name": "18d", - "RegionID": 18, - "HostName": "derp18d.tailscale.com", - "IPv4": "176.58.90.104", - "IPv6": "2a00:dd80:3e::f2e", - "CanPort80": true - }, - { - "Name": "18b", - "RegionID": 18, - "HostName": "derp18b.tailscale.com", - "IPv4": "176.58.90.147", - "IPv6": "2a00:dd80:3e::363", - "CanPort80": true - } - ] - }, - "19": { - "RegionID": 19, - "RegionCode": "mad", - "RegionName": "Madrid", - "Latitude": 40.416944, - "Longitude": -3.703333, - "Nodes": [ - { - "Name": "19c", - "RegionID": 19, - "HostName": "derp19c.tailscale.com", - "IPv4": "45.159.97.61", - "IPv6": "2a00:dd80:14:10::20", - "CanPort80": true - }, - { - "Name": "19d", - "RegionID": 19, - "HostName": "derp19d.tailscale.com", - "IPv4": "45.159.97.233", - "IPv6": "2a00:dd80:14:10::34a", - "CanPort80": true - }, - { - "Name": "19b", - "RegionID": 19, - "HostName": "derp19b.tailscale.com", - "IPv4": "45.159.97.144", - "IPv6": "2a00:dd80:14:10::335", - "CanPort80": true - } - ] - }, - "2": { - "RegionID": 2, - "RegionCode": "sfo", - "RegionName": "San Francisco", - "Latitude": 37.7775, - "Longitude": -122.416389, - "Nodes": [ - { - "Name": "2e", - "RegionID": 2, - "HostName": "derp2e.tailscale.com", - "IPv4": "192.73.252.134", - "IPv6": "2607:f740:0:3f::44c", - "CanPort80": true - }, - { - "Name": "2f", - "RegionID": 2, - "HostName": "derp2f.tailscale.com", - "IPv4": "208.111.34.178", - "IPv6": "2607:f740:0:3f::f4", - "CanPort80": true - }, - { - "Name": "2d", - "RegionID": 2, - "HostName": "derp2d.tailscale.com", - "IPv4": "192.73.252.65", - "IPv6": "2607:f740:0:3f::287", - "CanPort80": true - } - ] - }, - "20": { - "RegionID": 20, - "RegionCode": "hkg", - "RegionName": "Hong Kong", - "Latitude": 22.3193, - "Longitude": 114.1694, - "Nodes": [ - { - "Name": "20c", - "RegionID": 20, - "HostName": "derp20c.tailscale.com", - "IPv4": "205.147.105.30", - "IPv6": "2403:2500:8000:1::5fb", - "CanPort80": true - }, - { - "Name": "20d", - "RegionID": 20, - "HostName": "derp20d.tailscale.com", - "IPv4": "205.147.105.78", - "IPv6": "2403:2500:8000:1::e9a", - "CanPort80": true - }, - { - "Name": "20b", - "RegionID": 20, - "HostName": "derp20b.tailscale.com", - "IPv4": "103.6.84.152", - "IPv6": "2403:2500:8000:1::ef6", - "CanPort80": true - } - ] - }, - "21": { - "RegionID": 21, - "RegionCode": "tor", - "RegionName": "Toronto", - "Latitude": 43.741667, - "Longitude": -79.373333, - "Nodes": [ - { - "Name": "21c", - "RegionID": 21, - "HostName": "derp21c.tailscale.com", - "IPv4": "162.248.221.215", - "IPv6": "2607:f740:50::f10", - "CanPort80": true - }, - { - "Name": "21d", - "RegionID": 21, - "HostName": "derp21d.tailscale.com", - "IPv4": "162.248.221.248", - "IPv6": "2607:f740:50::ca4", - "CanPort80": true - }, - { - "Name": "21b", - "RegionID": 21, - "HostName": "derp21b.tailscale.com", - "IPv4": "162.248.221.199", - "IPv6": "2607:f740:50::1d1", - "CanPort80": true - } - ] - }, - "22": { - "RegionID": 22, - "RegionCode": "waw", - "RegionName": "Warsaw", - "Latitude": 52.23, - "Longitude": 21.011111, - "Nodes": [ - { - "Name": "22c", - "RegionID": 22, - "HostName": "derp22c.tailscale.com", - "IPv4": "45.159.98.253", - "IPv6": "2a00:dd80:40:100::3f", - "CanPort80": true - }, - { - "Name": "22d", - "RegionID": 22, - "HostName": "derp22d.tailscale.com", - "IPv4": "45.159.98.145", - "IPv6": "2a00:dd80:40:100::211", - "CanPort80": true - }, - { - "Name": "22b", - "RegionID": 22, - "HostName": "derp22b.tailscale.com", - "IPv4": "45.159.98.196", - "IPv6": "2a00:dd80:40:100::316", - "CanPort80": true - } - ] - }, - "23": { - "RegionID": 23, - "RegionCode": "dbi", - "RegionName": "Dubai", - "Latitude": 25.263056, - "Longitude": 55.297222, - "Nodes": [ - { - "Name": "23c", - "RegionID": 23, - "HostName": "derp23c.tailscale.com", - "IPv4": "185.34.3.207", - "IPv6": "2a00:dd80:3f:100::a50", - "CanPort80": true - }, - { - "Name": "23d", - "RegionID": 23, - "HostName": "derp23d.tailscale.com", - "IPv4": "185.34.3.75", - "IPv6": "2a00:dd80:3f:100::97e", - "CanPort80": true - }, - { - "Name": "23b", - "RegionID": 23, - "HostName": "derp23b.tailscale.com", - "IPv4": "185.34.3.232", - "IPv6": "2a00:dd80:3f:100::76f", - "CanPort80": true - } - ] - }, - "24": { - "RegionID": 24, - "RegionCode": "hnl", - "RegionName": "Honolulu", - "Latitude": 21.306944, - "Longitude": -157.858333, - "Nodes": [ - { - "Name": "24c", - "RegionID": 24, - "HostName": "derp24c.tailscale.com", - "IPv4": "208.83.233.233", - "IPv6": "2001:19f0:c000:c591:5400:04ff:fe26:2c5f", - "CanPort80": true - }, - { - "Name": "24d", - "RegionID": 24, - "HostName": "derp24d.tailscale.com", - "IPv4": "208.72.155.133", - "IPv6": "2001:19f0:c000:c564:5400:04ff:fe26:2ba8", - "CanPort80": true - }, - { - "Name": "24b", - "RegionID": 24, - "HostName": "derp24b.tailscale.com", - "IPv4": "208.83.234.151", - "IPv6": "2001:19f0:c000:c586:5400:04ff:fe26:2ba6", - "CanPort80": true - } - ] - }, - "25": { - "RegionID": 25, - "RegionCode": "nai", - "RegionName": "Nairobi", - "Latitude": -1.286389, - "Longitude": 36.817222, - "Nodes": [ - { - "Name": "25c", - "RegionID": 25, - "HostName": "derp25c.tailscale.com", - "IPv4": "102.67.167.37", - "IPv6": "2c0f:edb0:2000:1::2c7", - "CanPort80": true - }, - { - "Name": "25d", - "RegionID": 25, - "HostName": "derp25d.tailscale.com", - "IPv4": "102.67.167.188", - "IPv6": "2c0f:edb0:2000:1::188", - "CanPort80": true - }, - { - "Name": "25b", - "RegionID": 25, - "HostName": "derp25b.tailscale.com", - "IPv4": "102.67.167.245", - "IPv6": "2c0f:edb0:2000:1::2e9", - "CanPort80": true - } - ] - }, - "26": { - "RegionID": 26, - "RegionCode": "nue", - "RegionName": "Nuremberg", - "Latitude": 49.453889, - "Longitude": 11.0775, - "Nodes": [ - { - "Name": "26c", - "RegionID": 26, - "HostName": "derp26c.tailscale.com", - "IPv4": "49.12.193.137", - "IPv6": "2a01:4f8:1c1c:5c70::1", - "CanPort80": true - }, - { - "Name": "26d", - "RegionID": 26, - "HostName": "derp26d.tailscale.com", - "IPv4": "49.13.204.141", - "IPv6": "2a01:4f8:1c0c:7d06::1", - "CanPort80": true - }, - { - "Name": "26b", - "RegionID": 26, - "HostName": "derp26b.tailscale.com", - "IPv4": "167.235.72.200", - "IPv6": "2a01:4f8:1c1c:47b6::1", - "CanPort80": true - } - ] - }, - "27": { - "RegionID": 27, - "RegionCode": "iad", - "RegionName": "Ashburn", - "Latitude": 39.03, - "Longitude": -77.471111, - "Nodes": [ - { - "Name": "27d", - "RegionID": 27, - "HostName": "derp27d.tailscale.com", - "IPv4": "178.156.152.106", - "IPv6": "2a01:4ff:f0:3c8e::1", - "CanPort80": true - }, - { - "Name": "27c", - "RegionID": 27, - "HostName": "derp27c.tailscale.com", - "IPv4": "178.156.152.91", - "IPv6": "2a01:4ff:f0:3913::1", - "CanPort80": true - }, - { - "Name": "27e", - "RegionID": 27, - "HostName": "derp27e.tailscale.com", - "IPv4": "178.156.134.232", - "IPv6": "2a01:4ff:f0:28d4::1", - "CanPort80": true - }, - { - "Name": "27b", - "RegionID": 27, - "HostName": "derp27b.tailscale.com", - "IPv4": "5.161.218.233", - "IPv6": "2a01:4ff:f0:3db9::1", - "CanPort80": true - } - ] - }, - "28": { - "RegionID": 28, - "RegionCode": "hel", - "RegionName": "Helsinki", - "Latitude": 60.170833, - "Longitude": 24.9375, - "Nodes": [ - { - "Name": "28c", - "RegionID": 28, - "HostName": "derp28c.tailscale.com", - "IPv4": "95.217.2.165", - "IPv6": "2a01:4f9:c012:cd74::1", - "CanPort80": true - }, - { - "Name": "28d", - "RegionID": 28, - "HostName": "derp28d.tailscale.com", - "IPv4": "157.180.28.32", - "IPv6": "2a01:4f9:c012:2e5b::1", - "CanPort80": true - }, - { - "Name": "28b", - "RegionID": 28, - "HostName": "derp28b.tailscale.com", - "IPv4": "65.109.143.62", - "IPv6": "2a01:4f9:c012:d55c::1", - "CanPort80": true - } - ] - }, - "3": { - "RegionID": 3, - "RegionCode": "sin", - "RegionName": "Singapore", - "Latitude": 1.3521, - "Longitude": 103.8198, - "Nodes": [ - { - "Name": "3g", - "RegionID": 3, - "HostName": "derp3g.tailscale.com", - "IPv4": "172.237.72.79", - "IPv6": "2600:3c15::2000:adff:fe08:6fab", - "CanPort80": true - }, - { - "Name": "3f", - "RegionID": 3, - "HostName": "derp3f.tailscale.com", - "IPv4": "172.237.72.8", - "IPv6": "2600:3c15::2000:53ff:fe48:a668", - "CanPort80": true - }, - { - "Name": "3h", - "RegionID": 3, - "HostName": "derp3h.tailscale.com", - "IPv4": "172.237.66.30", - "IPv6": "2600:3c15::2000:3dff:fe44:50aa", - "CanPort80": true - }, - { - "Name": "3e", - "RegionID": 3, - "HostName": "derp3e.tailscale.com", - "IPv4": "172.237.72.43", - "IPv6": "2600:3c15::2000:6cff:fee4:d799", - "CanPort80": true - } - ] - }, - "4": { - "RegionID": 4, - "RegionCode": "fra", - "RegionName": "Frankfurt", - "Latitude": 50.1109, - "Longitude": 8.6821, - "Nodes": [ - { - "Name": "4h", - "RegionID": 4, - "HostName": "derp4h.tailscale.com", - "IPv4": "185.40.234.77", - "IPv6": "2a00:dd80:20::bcf", - "CanPort80": true - }, - { - "Name": "4g", - "RegionID": 4, - "HostName": "derp4g.tailscale.com", - "IPv4": "185.40.234.113", - "IPv6": "2a00:dd80:20::8f", - "CanPort80": true - }, - { - "Name": "4i", - "RegionID": 4, - "HostName": "derp4i.tailscale.com", - "IPv4": "185.40.234.53", - "IPv6": "2a00:dd80:20::8a6", - "CanPort80": true - }, - { - "Name": "4f", - "RegionID": 4, - "HostName": "derp4f.tailscale.com", - "IPv4": "185.40.234.219", - "IPv6": "2a00:dd80:20::a25", - "CanPort80": true - } - ] - }, - "5": { - "RegionID": 5, - "RegionCode": "syd", - "RegionName": "Sydney", - "Latitude": -33.867778, - "Longitude": 151.21, - "Nodes": [ - { - "Name": "5f", - "RegionID": 5, - "HostName": "derp5f.tailscale.com", - "IPv4": "172.105.166.103", - "IPv6": "2400:8907::2000:ccff:fe1f:80da", - "CanPort80": true - }, - { - "Name": "5g", - "RegionID": 5, - "HostName": "derp5g.tailscale.com", - "IPv4": "172.105.169.57", - "IPv6": "2400:8907::2000:2fff:fea7:57f4", - "CanPort80": true - }, - { - "Name": "5e", - "RegionID": 5, - "HostName": "derp5e.tailscale.com", - "IPv4": "172.105.179.230", - "IPv6": "2400:8907::2000:ceff:fe8d:4f4e", - "CanPort80": true - } - ] - }, - "6": { - "RegionID": 6, - "RegionCode": "blr", - "RegionName": "Bengaluru", - "Latitude": 12.9716, - "Longitude": 77.5946, - "Nodes": [ - { - "Name": "6a", - "RegionID": 6, - "HostName": "derp6.tailscale.com", - "IPv4": "68.183.90.120", - "IPv6": "2400:6180:100:d0::982:d001", - "CanPort80": true - } - ] - }, - "7": { - "RegionID": 7, - "RegionCode": "tok", - "RegionName": "Tokyo", - "Latitude": 35.6764, - "Longitude": 139.65, - "Nodes": [ - { - "Name": "7g", - "RegionID": 7, - "HostName": "derp7g.tailscale.com", - "IPv4": "172.238.6.179", - "IPv6": "2600:3c18::2000:3fff:fe80:3ebd", - "CanPort80": true - }, - { - "Name": "7f", - "RegionID": 7, - "HostName": "derp7f.tailscale.com", - "IPv4": "172.238.6.34", - "IPv6": "2600:3c18::2000:acff:fe8e:3ed5", - "CanPort80": true - }, - { - "Name": "7h", - "RegionID": 7, - "HostName": "derp7h.tailscale.com", - "IPv4": "172.237.28.183", - "IPv6": "2600:3c18::2000:b1ff:fea9:4560", - "CanPort80": true - }, - { - "Name": "7e", - "RegionID": 7, - "HostName": "derp7e.tailscale.com", - "IPv4": "172.238.6.180", - "IPv6": "2600:3c18::2000:60ff:fe0f:6e83", - "STUNOnly": true, - "CanPort80": true - } - ] - }, - "8": { - "RegionID": 8, - "RegionCode": "lhr", - "RegionName": "London", - "Latitude": 51.5072, - "Longitude": 0.1276, - "Nodes": [ - { - "Name": "8f", - "RegionID": 8, - "HostName": "derp8f.tailscale.com", - "IPv4": "176.58.88.183", - "IPv6": "2a00:dd80:3a::dfa", - "CanPort80": true - }, - { - "Name": "8g", - "RegionID": 8, - "HostName": "derp8g.tailscale.com", - "IPv4": "176.58.92.254", - "IPv6": "2a00:dd80:3a::ed", - "CanPort80": true - }, - { - "Name": "8e", - "RegionID": 8, - "HostName": "derp8e.tailscale.com", - "IPv4": "176.58.92.144", - "IPv6": "2a00:dd80:3a::b33", - "CanPort80": true - } - ] - }, - "9": { - "RegionID": 9, - "RegionCode": "dfw", - "RegionName": "Dallas", - "Latitude": 32.779167, - "Longitude": -96.808889, - "Nodes": [ - { - "Name": "9e", - "RegionID": 9, - "HostName": "derp9e.tailscale.com", - "IPv4": "192.73.248.83", - "IPv6": "2607:f740:100::359", - "CanPort80": true - }, - { - "Name": "9f", - "RegionID": 9, - "HostName": "derp9f.tailscale.com", - "IPv4": "209.177.156.197", - "IPv6": "2607:f740:100::cad", - "CanPort80": true - }, - { - "Name": "9d", - "RegionID": 9, - "HostName": "derp9d.tailscale.com", - "IPv4": "209.177.156.94", - "IPv6": "2607:f740:100::c05", - "CanPort80": true - } - ] - } - } - }, - "DisplayMessages": null, - "TKAEnabled": false, - "TKAHead": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", - "Domain": "kratail2tid@passkey", - "DomainAuditLogID": "", - "UserProfiles": { - "2230775583277936": { - "ID": 2230775583277936, - "LoginName": "exit-b.tail78f774.ts.net", - "DisplayName": "exit-b" - } - } + "PacketFilterRules": null } }, "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.124.195.93": { - "peer_name": "exit-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-node/tailscaled.sock whois --json 100.124.195.93", - "response": null - }, - "100.116.18.24": { - "peer_name": "exit-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-node/tailscaled.sock whois --json 100.116.18.24", - "response": null - }, - "100.107.162.14": { - "peer_name": "group-a-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-node/tailscaled.sock whois --json 100.107.162.14", - "response": null - }, - "100.77.135.18": { - "peer_name": "group-b-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-node/tailscaled.sock whois --json 100.77.135.18", - "response": null - }, - "100.105.127.107": { - "peer_name": "multi-exit-router", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-node/tailscaled.sock whois --json 100.105.127.107", - "response": null - }, - "100.109.43.124": { - "peer_name": "router-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-node/tailscaled.sock whois --json 100.109.43.124", - "response": null - }, - "100.65.172.123": { - "peer_name": "router-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-node/tailscaled.sock whois --json 100.65.172.123", - "response": null - }, - "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 - } - }, "netmap": { - "SelfNode": { - "ID": 4041918547170221, - "StableID": "ngCb76MbZY11CNTRL", - "Name": "exit-node.tail78f774.ts.net.", - "User": 4041918547170221, - "Key": "nodekey:90f4a7b9dc024f1ddec414a49de2aa7611a2dd86efc9d7bae30862ad7c954269", - "DiscoKey": "discokey:6f1a76215431d7100538970473d97b4fde0e0a19b91035d1cba40b59ad79b437", - "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:36712", "10.65.0.27:36712", "172.17.0.1:36712"], - "Hostinfo": { - "Hostname": "exit-node", - "RoutableIPs": ["0.0.0.0/0", "::/0"], - "RequestTags": ["tag:exit"], - "Services": [ - { "Proto": "peerapi4", "Port": 37000 }, - { "Proto": "peerapi6", "Port": 37000 }, - { "Proto": "peerapi-dns-proxy", "Port": 1 } - ] - }, - "Created": "2026-02-23T00:13:20.566112173Z", - "Tags": ["tag:exit"], - "MachineAuthorized": true, - "CapMap": { - "https://tailscale.com/cap/file-sharing": null, - "https://tailscale.com/cap/is-owner": null, - "https://tailscale.com/cap/ssh": null, - "https://tailscale.com/cap/tailnet-lock": null, - "probe-udp-lifetime": null, - "ssh-behavior-v1": null, - "ssh-env-vars": null, - "store-appc-routes": null, - "tailnet-display-name": ["kratail2tid@passkey"] - }, - "ComputedName": "exit-node", - "ComputedNameWithHost": "exit-node" - }, - "AllCaps": [ - "https://tailscale.com/cap/tailnet-lock", - "ssh-env-vars", - "https://tailscale.com/cap/file-sharing", - "probe-udp-lifetime", - "ssh-behavior-v1", - "store-appc-routes", - "tailnet-display-name", - "https://tailscale.com/cap/is-owner", - "https://tailscale.com/cap/ssh" - ], - "NodeKey": "nodekey:90f4a7b9dc024f1ddec414a49de2aa7611a2dd86efc9d7bae30862ad7c954269", - "MachineKey": "mkey:e3be47b2090e55400f3e64825cd3092841529cd7b5b775e9e4553f12308abc2a", "Peers": [], - "DNS": { - "Routes": { - "tail78f774.ts.net.": null, - "ts.net.": [{ "Addr": "199.247.155.53" }, { "Addr": "2620:111:8007::53" }] - }, - "Domains": ["tail78f774.ts.net"], - "Proxied": true, - "ExitNodeFilteredSet": [".ts.net", ".tailscale.net"] - }, - "PacketFilter": [], - "PacketFilterRules": null, - "SSHPolicy": { "rules": [] }, - "CollectServices": false, - "DERPMap": { - "Regions": { - "1": { - "RegionID": 1, - "RegionCode": "nyc", - "RegionName": "New York City", - "Latitude": 40.7128, - "Longitude": -74.006, - "Nodes": [ - { - "Name": "1h", - "RegionID": 1, - "HostName": "derp1h.tailscale.com", - "IPv4": "199.38.181.93", - "IPv6": "2607:f740:f::afd", - "CanPort80": true - }, - { - "Name": "1g", - "RegionID": 1, - "HostName": "derp1g.tailscale.com", - "IPv4": "209.177.145.120", - "IPv6": "2607:f740:f::3eb", - "CanPort80": true - }, - { - "Name": "1i", - "RegionID": 1, - "HostName": "derp1i.tailscale.com", - "IPv4": "199.38.181.103", - "IPv6": "2607:f740:f::e19", - "CanPort80": true - }, - { - "Name": "1f", - "RegionID": 1, - "HostName": "derp1f.tailscale.com", - "IPv4": "199.38.181.104", - "IPv6": "2607:f740:f::bc", - "CanPort80": true - } - ] - }, - "10": { - "RegionID": 10, - "RegionCode": "sea", - "RegionName": "Seattle", - "Latitude": 47.609722, - "Longitude": -122.333056, - "Nodes": [ - { - "Name": "10c", - "RegionID": 10, - "HostName": "derp10c.tailscale.com", - "IPv4": "192.73.240.121", - "IPv6": "2607:f740:14::40c", - "CanPort80": true - }, - { - "Name": "10d", - "RegionID": 10, - "HostName": "derp10d.tailscale.com", - "IPv4": "192.73.240.132", - "IPv6": "2607:f740:14::500", - "CanPort80": true - }, - { - "Name": "10b", - "RegionID": 10, - "HostName": "derp10b.tailscale.com", - "IPv4": "192.73.240.161", - "IPv6": "2607:f740:14::61c", - "CanPort80": true - } - ] - }, - "11": { - "RegionID": 11, - "RegionCode": "sao", - "RegionName": "São Paulo", - "Latitude": -23.55, - "Longitude": -46.633333, - "Nodes": [ - { - "Name": "11f", - "RegionID": 11, - "HostName": "derp11f.tailscale.com", - "IPv4": "172.237.61.197", - "IPv6": "2600:3c0d::2000:3bff:fe44:6166", - "CanPort80": true - }, - { - "Name": "11g", - "RegionID": 11, - "HostName": "derp11g.tailscale.com", - "IPv4": "172.237.61.190", - "IPv6": "2600:3c0d::2000:62ff:febe:2e67", - "CanPort80": true - }, - { - "Name": "11e", - "RegionID": 11, - "HostName": "derp11e.tailscale.com", - "IPv4": "172.237.61.194", - "IPv6": "2600:3c0d::2000:d2ff:fe43:1790", - "CanPort80": true - } - ] - }, - "12": { - "RegionID": 12, - "RegionCode": "ord", - "RegionName": "Chicago", - "Latitude": 41.881944, - "Longitude": -87.627778, - "Nodes": [ - { - "Name": "12e", - "RegionID": 12, - "HostName": "derp12e.tailscale.com", - "IPv4": "209.177.158.15", - "IPv6": "2607:f740:e::b17", - "CanPort80": true - }, - { - "Name": "12f", - "RegionID": 12, - "HostName": "derp12f.tailscale.com", - "IPv4": "199.38.182.118", - "IPv6": "2607:f740:e::4c8", - "CanPort80": true - }, - { - "Name": "12d", - "RegionID": 12, - "HostName": "derp12d.tailscale.com", - "IPv4": "209.177.158.246", - "IPv6": "2607:f740:e::811", - "CanPort80": true - } - ] - }, - "13": { - "RegionID": 13, - "RegionCode": "den", - "RegionName": "Denver", - "Latitude": 39.7392, - "Longitude": -104.9849, - "Nodes": [ - { - "Name": "13c", - "RegionID": 13, - "HostName": "derp13c.tailscale.com", - "IPv4": "192.73.242.28", - "IPv6": "2607:f740:16::5c", - "CanPort80": true - }, - { - "Name": "13d", - "RegionID": 13, - "HostName": "derp13d.tailscale.com", - "IPv4": "192.73.242.204", - "IPv6": "2607:f740:16::c23", - "CanPort80": true - }, - { - "Name": "13b", - "RegionID": 13, - "HostName": "derp13b.tailscale.com", - "IPv4": "192.73.242.187", - "IPv6": "2607:f740:16::640", - "CanPort80": true - } - ] - }, - "14": { - "RegionID": 14, - "RegionCode": "ams", - "RegionName": "Amsterdam", - "Latitude": 52.372778, - "Longitude": 4.893611, - "Nodes": [ - { - "Name": "14c", - "RegionID": 14, - "HostName": "derp14c.tailscale.com", - "IPv4": "176.58.93.147", - "IPv6": "2a00:dd80:3c::b09", - "CanPort80": true - }, - { - "Name": "14d", - "RegionID": 14, - "HostName": "derp14d.tailscale.com", - "IPv4": "176.58.93.154", - "IPv6": "2a00:dd80:3c::3d5", - "CanPort80": true - }, - { - "Name": "14b", - "RegionID": 14, - "HostName": "derp14b.tailscale.com", - "IPv4": "176.58.93.248", - "IPv6": "2a00:dd80:3c::807", - "CanPort80": true - } - ] - }, - "15": { - "RegionID": 15, - "RegionCode": "jnb", - "RegionName": "Johannesburg", - "Latitude": -26.204444, - "Longitude": 28.045556, - "Nodes": [ - { - "Name": "15c", - "RegionID": 15, - "HostName": "derp15c.tailscale.com", - "IPv4": "102.67.165.185", - "IPv6": "2c0f:edb0:0:10::b59", - "CanPort80": true - }, - { - "Name": "15d", - "RegionID": 15, - "HostName": "derp15d.tailscale.com", - "IPv4": "102.67.165.36", - "IPv6": "2c0f:edb0:0:10::599", - "CanPort80": true - }, - { - "Name": "15b", - "RegionID": 15, - "HostName": "derp15b.tailscale.com", - "IPv4": "102.67.165.90", - "IPv6": "2c0f:edb0:0:10::963", - "CanPort80": true - } - ] - }, - "16": { - "RegionID": 16, - "RegionCode": "mia", - "RegionName": "Miami", - "Latitude": 25.78, - "Longitude": -80.21, - "Nodes": [ - { - "Name": "16c", - "RegionID": 16, - "HostName": "derp16c.tailscale.com", - "IPv4": "192.73.243.229", - "IPv6": "2607:f740:17::4e4", - "CanPort80": true - }, - { - "Name": "16d", - "RegionID": 16, - "HostName": "derp16d.tailscale.com", - "IPv4": "192.73.243.141", - "IPv6": "2607:f740:17::475", - "CanPort80": true - }, - { - "Name": "16b", - "RegionID": 16, - "HostName": "derp16b.tailscale.com", - "IPv4": "192.73.243.135", - "IPv6": "2607:f740:17::476", - "CanPort80": true - } - ] - }, - "17": { - "RegionID": 17, - "RegionCode": "lax", - "RegionName": "Los Angeles", - "Latitude": 34.05, - "Longitude": -118.25, - "Nodes": [ - { - "Name": "17c", - "RegionID": 17, - "HostName": "derp17c.tailscale.com", - "IPv4": "208.111.40.12", - "IPv6": "2607:f740:c::10", - "CanPort80": true - }, - { - "Name": "17d", - "RegionID": 17, - "HostName": "derp17d.tailscale.com", - "IPv4": "208.111.40.216", - "IPv6": "2607:f740:c::e1b", - "CanPort80": true - }, - { - "Name": "17b", - "RegionID": 17, - "HostName": "derp17b.tailscale.com", - "IPv4": "192.73.244.245", - "IPv6": "2607:f740:c::646", - "CanPort80": true - } - ] - }, - "18": { - "RegionID": 18, - "RegionCode": "par", - "RegionName": "Paris", - "Latitude": 48.856667, - "Longitude": 2.352222, - "Nodes": [ - { - "Name": "18c", - "RegionID": 18, - "HostName": "derp18c.tailscale.com", - "IPv4": "176.58.90.207", - "IPv6": "2a00:dd80:3e::c19", - "CanPort80": true - }, - { - "Name": "18d", - "RegionID": 18, - "HostName": "derp18d.tailscale.com", - "IPv4": "176.58.90.104", - "IPv6": "2a00:dd80:3e::f2e", - "CanPort80": true - }, - { - "Name": "18b", - "RegionID": 18, - "HostName": "derp18b.tailscale.com", - "IPv4": "176.58.90.147", - "IPv6": "2a00:dd80:3e::363", - "CanPort80": true - } - ] - }, - "19": { - "RegionID": 19, - "RegionCode": "mad", - "RegionName": "Madrid", - "Latitude": 40.416944, - "Longitude": -3.703333, - "Nodes": [ - { - "Name": "19c", - "RegionID": 19, - "HostName": "derp19c.tailscale.com", - "IPv4": "45.159.97.61", - "IPv6": "2a00:dd80:14:10::20", - "CanPort80": true - }, - { - "Name": "19d", - "RegionID": 19, - "HostName": "derp19d.tailscale.com", - "IPv4": "45.159.97.233", - "IPv6": "2a00:dd80:14:10::34a", - "CanPort80": true - }, - { - "Name": "19b", - "RegionID": 19, - "HostName": "derp19b.tailscale.com", - "IPv4": "45.159.97.144", - "IPv6": "2a00:dd80:14:10::335", - "CanPort80": true - } - ] - }, - "2": { - "RegionID": 2, - "RegionCode": "sfo", - "RegionName": "San Francisco", - "Latitude": 37.7775, - "Longitude": -122.416389, - "Nodes": [ - { - "Name": "2e", - "RegionID": 2, - "HostName": "derp2e.tailscale.com", - "IPv4": "192.73.252.134", - "IPv6": "2607:f740:0:3f::44c", - "CanPort80": true - }, - { - "Name": "2f", - "RegionID": 2, - "HostName": "derp2f.tailscale.com", - "IPv4": "208.111.34.178", - "IPv6": "2607:f740:0:3f::f4", - "CanPort80": true - }, - { - "Name": "2d", - "RegionID": 2, - "HostName": "derp2d.tailscale.com", - "IPv4": "192.73.252.65", - "IPv6": "2607:f740:0:3f::287", - "CanPort80": true - } - ] - }, - "20": { - "RegionID": 20, - "RegionCode": "hkg", - "RegionName": "Hong Kong", - "Latitude": 22.3193, - "Longitude": 114.1694, - "Nodes": [ - { - "Name": "20c", - "RegionID": 20, - "HostName": "derp20c.tailscale.com", - "IPv4": "205.147.105.30", - "IPv6": "2403:2500:8000:1::5fb", - "CanPort80": true - }, - { - "Name": "20d", - "RegionID": 20, - "HostName": "derp20d.tailscale.com", - "IPv4": "205.147.105.78", - "IPv6": "2403:2500:8000:1::e9a", - "CanPort80": true - }, - { - "Name": "20b", - "RegionID": 20, - "HostName": "derp20b.tailscale.com", - "IPv4": "103.6.84.152", - "IPv6": "2403:2500:8000:1::ef6", - "CanPort80": true - } - ] - }, - "21": { - "RegionID": 21, - "RegionCode": "tor", - "RegionName": "Toronto", - "Latitude": 43.741667, - "Longitude": -79.373333, - "Nodes": [ - { - "Name": "21c", - "RegionID": 21, - "HostName": "derp21c.tailscale.com", - "IPv4": "162.248.221.215", - "IPv6": "2607:f740:50::f10", - "CanPort80": true - }, - { - "Name": "21d", - "RegionID": 21, - "HostName": "derp21d.tailscale.com", - "IPv4": "162.248.221.248", - "IPv6": "2607:f740:50::ca4", - "CanPort80": true - }, - { - "Name": "21b", - "RegionID": 21, - "HostName": "derp21b.tailscale.com", - "IPv4": "162.248.221.199", - "IPv6": "2607:f740:50::1d1", - "CanPort80": true - } - ] - }, - "22": { - "RegionID": 22, - "RegionCode": "waw", - "RegionName": "Warsaw", - "Latitude": 52.23, - "Longitude": 21.011111, - "Nodes": [ - { - "Name": "22c", - "RegionID": 22, - "HostName": "derp22c.tailscale.com", - "IPv4": "45.159.98.253", - "IPv6": "2a00:dd80:40:100::3f", - "CanPort80": true - }, - { - "Name": "22d", - "RegionID": 22, - "HostName": "derp22d.tailscale.com", - "IPv4": "45.159.98.145", - "IPv6": "2a00:dd80:40:100::211", - "CanPort80": true - }, - { - "Name": "22b", - "RegionID": 22, - "HostName": "derp22b.tailscale.com", - "IPv4": "45.159.98.196", - "IPv6": "2a00:dd80:40:100::316", - "CanPort80": true - } - ] - }, - "23": { - "RegionID": 23, - "RegionCode": "dbi", - "RegionName": "Dubai", - "Latitude": 25.263056, - "Longitude": 55.297222, - "Nodes": [ - { - "Name": "23c", - "RegionID": 23, - "HostName": "derp23c.tailscale.com", - "IPv4": "185.34.3.207", - "IPv6": "2a00:dd80:3f:100::a50", - "CanPort80": true - }, - { - "Name": "23d", - "RegionID": 23, - "HostName": "derp23d.tailscale.com", - "IPv4": "185.34.3.75", - "IPv6": "2a00:dd80:3f:100::97e", - "CanPort80": true - }, - { - "Name": "23b", - "RegionID": 23, - "HostName": "derp23b.tailscale.com", - "IPv4": "185.34.3.232", - "IPv6": "2a00:dd80:3f:100::76f", - "CanPort80": true - } - ] - }, - "24": { - "RegionID": 24, - "RegionCode": "hnl", - "RegionName": "Honolulu", - "Latitude": 21.306944, - "Longitude": -157.858333, - "Nodes": [ - { - "Name": "24c", - "RegionID": 24, - "HostName": "derp24c.tailscale.com", - "IPv4": "208.83.233.233", - "IPv6": "2001:19f0:c000:c591:5400:04ff:fe26:2c5f", - "CanPort80": true - }, - { - "Name": "24d", - "RegionID": 24, - "HostName": "derp24d.tailscale.com", - "IPv4": "208.72.155.133", - "IPv6": "2001:19f0:c000:c564:5400:04ff:fe26:2ba8", - "CanPort80": true - }, - { - "Name": "24b", - "RegionID": 24, - "HostName": "derp24b.tailscale.com", - "IPv4": "208.83.234.151", - "IPv6": "2001:19f0:c000:c586:5400:04ff:fe26:2ba6", - "CanPort80": true - } - ] - }, - "25": { - "RegionID": 25, - "RegionCode": "nai", - "RegionName": "Nairobi", - "Latitude": -1.286389, - "Longitude": 36.817222, - "Nodes": [ - { - "Name": "25c", - "RegionID": 25, - "HostName": "derp25c.tailscale.com", - "IPv4": "102.67.167.37", - "IPv6": "2c0f:edb0:2000:1::2c7", - "CanPort80": true - }, - { - "Name": "25d", - "RegionID": 25, - "HostName": "derp25d.tailscale.com", - "IPv4": "102.67.167.188", - "IPv6": "2c0f:edb0:2000:1::188", - "CanPort80": true - }, - { - "Name": "25b", - "RegionID": 25, - "HostName": "derp25b.tailscale.com", - "IPv4": "102.67.167.245", - "IPv6": "2c0f:edb0:2000:1::2e9", - "CanPort80": true - } - ] - }, - "26": { - "RegionID": 26, - "RegionCode": "nue", - "RegionName": "Nuremberg", - "Latitude": 49.453889, - "Longitude": 11.0775, - "Nodes": [ - { - "Name": "26c", - "RegionID": 26, - "HostName": "derp26c.tailscale.com", - "IPv4": "49.12.193.137", - "IPv6": "2a01:4f8:1c1c:5c70::1", - "CanPort80": true - }, - { - "Name": "26d", - "RegionID": 26, - "HostName": "derp26d.tailscale.com", - "IPv4": "49.13.204.141", - "IPv6": "2a01:4f8:1c0c:7d06::1", - "CanPort80": true - }, - { - "Name": "26b", - "RegionID": 26, - "HostName": "derp26b.tailscale.com", - "IPv4": "167.235.72.200", - "IPv6": "2a01:4f8:1c1c:47b6::1", - "CanPort80": true - } - ] - }, - "27": { - "RegionID": 27, - "RegionCode": "iad", - "RegionName": "Ashburn", - "Latitude": 39.03, - "Longitude": -77.471111, - "Nodes": [ - { - "Name": "27d", - "RegionID": 27, - "HostName": "derp27d.tailscale.com", - "IPv4": "178.156.152.106", - "IPv6": "2a01:4ff:f0:3c8e::1", - "CanPort80": true - }, - { - "Name": "27c", - "RegionID": 27, - "HostName": "derp27c.tailscale.com", - "IPv4": "178.156.152.91", - "IPv6": "2a01:4ff:f0:3913::1", - "CanPort80": true - }, - { - "Name": "27e", - "RegionID": 27, - "HostName": "derp27e.tailscale.com", - "IPv4": "178.156.134.232", - "IPv6": "2a01:4ff:f0:28d4::1", - "CanPort80": true - }, - { - "Name": "27b", - "RegionID": 27, - "HostName": "derp27b.tailscale.com", - "IPv4": "5.161.218.233", - "IPv6": "2a01:4ff:f0:3db9::1", - "CanPort80": true - } - ] - }, - "28": { - "RegionID": 28, - "RegionCode": "hel", - "RegionName": "Helsinki", - "Latitude": 60.170833, - "Longitude": 24.9375, - "Nodes": [ - { - "Name": "28c", - "RegionID": 28, - "HostName": "derp28c.tailscale.com", - "IPv4": "95.217.2.165", - "IPv6": "2a01:4f9:c012:cd74::1", - "CanPort80": true - }, - { - "Name": "28d", - "RegionID": 28, - "HostName": "derp28d.tailscale.com", - "IPv4": "157.180.28.32", - "IPv6": "2a01:4f9:c012:2e5b::1", - "CanPort80": true - }, - { - "Name": "28b", - "RegionID": 28, - "HostName": "derp28b.tailscale.com", - "IPv4": "65.109.143.62", - "IPv6": "2a01:4f9:c012:d55c::1", - "CanPort80": true - } - ] - }, - "3": { - "RegionID": 3, - "RegionCode": "sin", - "RegionName": "Singapore", - "Latitude": 1.3521, - "Longitude": 103.8198, - "Nodes": [ - { - "Name": "3g", - "RegionID": 3, - "HostName": "derp3g.tailscale.com", - "IPv4": "172.237.72.79", - "IPv6": "2600:3c15::2000:adff:fe08:6fab", - "CanPort80": true - }, - { - "Name": "3f", - "RegionID": 3, - "HostName": "derp3f.tailscale.com", - "IPv4": "172.237.72.8", - "IPv6": "2600:3c15::2000:53ff:fe48:a668", - "CanPort80": true - }, - { - "Name": "3h", - "RegionID": 3, - "HostName": "derp3h.tailscale.com", - "IPv4": "172.237.66.30", - "IPv6": "2600:3c15::2000:3dff:fe44:50aa", - "CanPort80": true - }, - { - "Name": "3e", - "RegionID": 3, - "HostName": "derp3e.tailscale.com", - "IPv4": "172.237.72.43", - "IPv6": "2600:3c15::2000:6cff:fee4:d799", - "CanPort80": true - } - ] - }, - "4": { - "RegionID": 4, - "RegionCode": "fra", - "RegionName": "Frankfurt", - "Latitude": 50.1109, - "Longitude": 8.6821, - "Nodes": [ - { - "Name": "4h", - "RegionID": 4, - "HostName": "derp4h.tailscale.com", - "IPv4": "185.40.234.77", - "IPv6": "2a00:dd80:20::bcf", - "CanPort80": true - }, - { - "Name": "4g", - "RegionID": 4, - "HostName": "derp4g.tailscale.com", - "IPv4": "185.40.234.113", - "IPv6": "2a00:dd80:20::8f", - "CanPort80": true - }, - { - "Name": "4i", - "RegionID": 4, - "HostName": "derp4i.tailscale.com", - "IPv4": "185.40.234.53", - "IPv6": "2a00:dd80:20::8a6", - "CanPort80": true - }, - { - "Name": "4f", - "RegionID": 4, - "HostName": "derp4f.tailscale.com", - "IPv4": "185.40.234.219", - "IPv6": "2a00:dd80:20::a25", - "CanPort80": true - } - ] - }, - "5": { - "RegionID": 5, - "RegionCode": "syd", - "RegionName": "Sydney", - "Latitude": -33.867778, - "Longitude": 151.21, - "Nodes": [ - { - "Name": "5f", - "RegionID": 5, - "HostName": "derp5f.tailscale.com", - "IPv4": "172.105.166.103", - "IPv6": "2400:8907::2000:ccff:fe1f:80da", - "CanPort80": true - }, - { - "Name": "5g", - "RegionID": 5, - "HostName": "derp5g.tailscale.com", - "IPv4": "172.105.169.57", - "IPv6": "2400:8907::2000:2fff:fea7:57f4", - "CanPort80": true - }, - { - "Name": "5e", - "RegionID": 5, - "HostName": "derp5e.tailscale.com", - "IPv4": "172.105.179.230", - "IPv6": "2400:8907::2000:ceff:fe8d:4f4e", - "CanPort80": true - } - ] - }, - "6": { - "RegionID": 6, - "RegionCode": "blr", - "RegionName": "Bengaluru", - "Latitude": 12.9716, - "Longitude": 77.5946, - "Nodes": [ - { - "Name": "6a", - "RegionID": 6, - "HostName": "derp6.tailscale.com", - "IPv4": "68.183.90.120", - "IPv6": "2400:6180:100:d0::982:d001", - "CanPort80": true - } - ] - }, - "7": { - "RegionID": 7, - "RegionCode": "tok", - "RegionName": "Tokyo", - "Latitude": 35.6764, - "Longitude": 139.65, - "Nodes": [ - { - "Name": "7g", - "RegionID": 7, - "HostName": "derp7g.tailscale.com", - "IPv4": "172.238.6.179", - "IPv6": "2600:3c18::2000:3fff:fe80:3ebd", - "CanPort80": true - }, - { - "Name": "7f", - "RegionID": 7, - "HostName": "derp7f.tailscale.com", - "IPv4": "172.238.6.34", - "IPv6": "2600:3c18::2000:acff:fe8e:3ed5", - "CanPort80": true - }, - { - "Name": "7h", - "RegionID": 7, - "HostName": "derp7h.tailscale.com", - "IPv4": "172.237.28.183", - "IPv6": "2600:3c18::2000:b1ff:fea9:4560", - "CanPort80": true - }, - { - "Name": "7e", - "RegionID": 7, - "HostName": "derp7e.tailscale.com", - "IPv4": "172.238.6.180", - "IPv6": "2600:3c18::2000:60ff:fe0f:6e83", - "STUNOnly": true, - "CanPort80": true - } - ] - }, - "8": { - "RegionID": 8, - "RegionCode": "lhr", - "RegionName": "London", - "Latitude": 51.5072, - "Longitude": 0.1276, - "Nodes": [ - { - "Name": "8f", - "RegionID": 8, - "HostName": "derp8f.tailscale.com", - "IPv4": "176.58.88.183", - "IPv6": "2a00:dd80:3a::dfa", - "CanPort80": true - }, - { - "Name": "8g", - "RegionID": 8, - "HostName": "derp8g.tailscale.com", - "IPv4": "176.58.92.254", - "IPv6": "2a00:dd80:3a::ed", - "CanPort80": true - }, - { - "Name": "8e", - "RegionID": 8, - "HostName": "derp8e.tailscale.com", - "IPv4": "176.58.92.144", - "IPv6": "2a00:dd80:3a::b33", - "CanPort80": true - } - ] - }, - "9": { - "RegionID": 9, - "RegionCode": "dfw", - "RegionName": "Dallas", - "Latitude": 32.779167, - "Longitude": -96.808889, - "Nodes": [ - { - "Name": "9e", - "RegionID": 9, - "HostName": "derp9e.tailscale.com", - "IPv4": "192.73.248.83", - "IPv6": "2607:f740:100::359", - "CanPort80": true - }, - { - "Name": "9f", - "RegionID": 9, - "HostName": "derp9f.tailscale.com", - "IPv4": "209.177.156.197", - "IPv6": "2607:f740:100::cad", - "CanPort80": true - }, - { - "Name": "9d", - "RegionID": 9, - "HostName": "derp9d.tailscale.com", - "IPv4": "209.177.156.94", - "IPv6": "2607:f740:100::c05", - "CanPort80": true - } - ] - } - } - }, - "DisplayMessages": null, - "TKAEnabled": false, - "TKAHead": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", - "Domain": "kratail2tid@passkey", - "DomainAuditLogID": "", - "UserProfiles": { - "4041918547170221": { - "ID": 4041918547170221, - "LoginName": "exit-node.tail78f774.ts.net", - "DisplayName": "exit-node" - } - } + "PacketFilterRules": null } }, "group-a-client": { - "commands": { - "packet_filter_rules": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/group-a-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/group-a-client/tailscaled.sock debug localapi POST debug-packet-filter-matches" - }, "packet_filter_rules": null, - "packet_filter_matches": [], - "whois": { - "100.124.195.93": { - "peer_name": "exit-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/group-a-client/tailscaled.sock whois --json 100.124.195.93", - "response": null - }, - "100.116.18.24": { - "peer_name": "exit-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/group-a-client/tailscaled.sock whois --json 100.116.18.24", - "response": null - }, - "100.85.66.106": { - "peer_name": "exit-node", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/group-a-client/tailscaled.sock whois --json 100.85.66.106", - "response": null - }, - "100.77.135.18": { - "peer_name": "group-b-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/group-a-client/tailscaled.sock whois --json 100.77.135.18", - "response": null - }, - "100.105.127.107": { - "peer_name": "multi-exit-router", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/group-a-client/tailscaled.sock whois --json 100.105.127.107", - "response": null - }, - "100.109.43.124": { - "peer_name": "router-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/group-a-client/tailscaled.sock whois --json 100.109.43.124", - "response": null - }, - "100.65.172.123": { - "peer_name": "router-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/group-a-client/tailscaled.sock whois --json 100.65.172.123", - "response": null - }, - "100.92.142.61": { - "peer_name": "subnet-router", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/group-a-client/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/group-a-client/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/group-a-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/group-a-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/group-a-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/group-a-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/group-a-client/tailscaled.sock whois --json 100.90.199.68", - "response": null - } - }, "netmap": { - "SelfNode": { - "ID": 6999435610919250, - "StableID": "nyckVfJ4fw11CNTRL", - "Name": "group-a-client.tail78f774.ts.net.", - "User": 6999435610919250, - "Key": "nodekey:802726716bd4942fceb5e444218c930040fadb082698b57ea3eb59a6a26ba20d", - "DiscoKey": "discokey:bc93c2d3b81606e44eb1c96d721e7cd73c9497aa7d3efbe2f5e0d1e2e95b190f", - "Addresses": ["100.107.162.14/32", "fd7a:115c:a1e0::a237:a20e/128"], - "AllowedIPs": ["100.107.162.14/32", "fd7a:115c:a1e0::a237:a20e/128"], - "Endpoints": ["77.164.248.136:51980", "10.65.0.27:51980", "172.17.0.1:51980"], - "Hostinfo": { - "Hostname": "group-a-client", - "RequestTags": ["tag:group-a"], - "Services": [ - { "Proto": "peerapi4", "Port": 36543 }, - { "Proto": "peerapi6", "Port": 36543 }, - { "Proto": "peerapi-dns-proxy", "Port": 1 } - ] - }, - "Created": "2026-03-28T10:38:04.339428828Z", - "Tags": ["tag:group-a"], - "MachineAuthorized": true, - "CapMap": { - "https://tailscale.com/cap/file-sharing": null, - "https://tailscale.com/cap/is-owner": null, - "https://tailscale.com/cap/ssh": null, - "https://tailscale.com/cap/tailnet-lock": null, - "probe-udp-lifetime": null, - "ssh-behavior-v1": null, - "ssh-env-vars": null, - "store-appc-routes": null, - "tailnet-display-name": ["kratail2tid@passkey"] - }, - "ComputedName": "group-a-client", - "ComputedNameWithHost": "group-a-client" - }, - "AllCaps": [ - "store-appc-routes", - "https://tailscale.com/cap/is-owner", - "https://tailscale.com/cap/ssh", - "tailnet-display-name", - "https://tailscale.com/cap/tailnet-lock", - "probe-udp-lifetime", - "ssh-behavior-v1", - "ssh-env-vars", - "https://tailscale.com/cap/file-sharing" - ], - "NodeKey": "nodekey:802726716bd4942fceb5e444218c930040fadb082698b57ea3eb59a6a26ba20d", - "MachineKey": "mkey:fd2d0c2953440569b6c045d6bb1826bf138bf65b4ed4433532e4d91e09fd6b6b", "Peers": [], - "DNS": { - "Routes": { - "tail78f774.ts.net.": null, - "ts.net.": [{ "Addr": "199.247.155.53" }, { "Addr": "2620:111:8007::53" }] - }, - "Domains": ["tail78f774.ts.net"], - "Proxied": true, - "ExitNodeFilteredSet": [".ts.net", ".tailscale.net"] - }, - "PacketFilter": [], - "PacketFilterRules": null, - "SSHPolicy": { "rules": [] }, - "CollectServices": false, - "DERPMap": { - "Regions": { - "1": { - "RegionID": 1, - "RegionCode": "nyc", - "RegionName": "New York City", - "Latitude": 40.7128, - "Longitude": -74.006, - "Nodes": [ - { - "Name": "1h", - "RegionID": 1, - "HostName": "derp1h.tailscale.com", - "IPv4": "199.38.181.93", - "IPv6": "2607:f740:f::afd", - "CanPort80": true - }, - { - "Name": "1g", - "RegionID": 1, - "HostName": "derp1g.tailscale.com", - "IPv4": "209.177.145.120", - "IPv6": "2607:f740:f::3eb", - "CanPort80": true - }, - { - "Name": "1i", - "RegionID": 1, - "HostName": "derp1i.tailscale.com", - "IPv4": "199.38.181.103", - "IPv6": "2607:f740:f::e19", - "CanPort80": true - }, - { - "Name": "1f", - "RegionID": 1, - "HostName": "derp1f.tailscale.com", - "IPv4": "199.38.181.104", - "IPv6": "2607:f740:f::bc", - "CanPort80": true - } - ] - }, - "10": { - "RegionID": 10, - "RegionCode": "sea", - "RegionName": "Seattle", - "Latitude": 47.609722, - "Longitude": -122.333056, - "Nodes": [ - { - "Name": "10c", - "RegionID": 10, - "HostName": "derp10c.tailscale.com", - "IPv4": "192.73.240.121", - "IPv6": "2607:f740:14::40c", - "CanPort80": true - }, - { - "Name": "10d", - "RegionID": 10, - "HostName": "derp10d.tailscale.com", - "IPv4": "192.73.240.132", - "IPv6": "2607:f740:14::500", - "CanPort80": true - }, - { - "Name": "10b", - "RegionID": 10, - "HostName": "derp10b.tailscale.com", - "IPv4": "192.73.240.161", - "IPv6": "2607:f740:14::61c", - "CanPort80": true - } - ] - }, - "11": { - "RegionID": 11, - "RegionCode": "sao", - "RegionName": "São Paulo", - "Latitude": -23.55, - "Longitude": -46.633333, - "Nodes": [ - { - "Name": "11f", - "RegionID": 11, - "HostName": "derp11f.tailscale.com", - "IPv4": "172.237.61.197", - "IPv6": "2600:3c0d::2000:3bff:fe44:6166", - "CanPort80": true - }, - { - "Name": "11g", - "RegionID": 11, - "HostName": "derp11g.tailscale.com", - "IPv4": "172.237.61.190", - "IPv6": "2600:3c0d::2000:62ff:febe:2e67", - "CanPort80": true - }, - { - "Name": "11e", - "RegionID": 11, - "HostName": "derp11e.tailscale.com", - "IPv4": "172.237.61.194", - "IPv6": "2600:3c0d::2000:d2ff:fe43:1790", - "CanPort80": true - } - ] - }, - "12": { - "RegionID": 12, - "RegionCode": "ord", - "RegionName": "Chicago", - "Latitude": 41.881944, - "Longitude": -87.627778, - "Nodes": [ - { - "Name": "12e", - "RegionID": 12, - "HostName": "derp12e.tailscale.com", - "IPv4": "209.177.158.15", - "IPv6": "2607:f740:e::b17", - "CanPort80": true - }, - { - "Name": "12f", - "RegionID": 12, - "HostName": "derp12f.tailscale.com", - "IPv4": "199.38.182.118", - "IPv6": "2607:f740:e::4c8", - "CanPort80": true - }, - { - "Name": "12d", - "RegionID": 12, - "HostName": "derp12d.tailscale.com", - "IPv4": "209.177.158.246", - "IPv6": "2607:f740:e::811", - "CanPort80": true - } - ] - }, - "13": { - "RegionID": 13, - "RegionCode": "den", - "RegionName": "Denver", - "Latitude": 39.7392, - "Longitude": -104.9849, - "Nodes": [ - { - "Name": "13c", - "RegionID": 13, - "HostName": "derp13c.tailscale.com", - "IPv4": "192.73.242.28", - "IPv6": "2607:f740:16::5c", - "CanPort80": true - }, - { - "Name": "13d", - "RegionID": 13, - "HostName": "derp13d.tailscale.com", - "IPv4": "192.73.242.204", - "IPv6": "2607:f740:16::c23", - "CanPort80": true - }, - { - "Name": "13b", - "RegionID": 13, - "HostName": "derp13b.tailscale.com", - "IPv4": "192.73.242.187", - "IPv6": "2607:f740:16::640", - "CanPort80": true - } - ] - }, - "14": { - "RegionID": 14, - "RegionCode": "ams", - "RegionName": "Amsterdam", - "Latitude": 52.372778, - "Longitude": 4.893611, - "Nodes": [ - { - "Name": "14c", - "RegionID": 14, - "HostName": "derp14c.tailscale.com", - "IPv4": "176.58.93.147", - "IPv6": "2a00:dd80:3c::b09", - "CanPort80": true - }, - { - "Name": "14d", - "RegionID": 14, - "HostName": "derp14d.tailscale.com", - "IPv4": "176.58.93.154", - "IPv6": "2a00:dd80:3c::3d5", - "CanPort80": true - }, - { - "Name": "14b", - "RegionID": 14, - "HostName": "derp14b.tailscale.com", - "IPv4": "176.58.93.248", - "IPv6": "2a00:dd80:3c::807", - "CanPort80": true - } - ] - }, - "15": { - "RegionID": 15, - "RegionCode": "jnb", - "RegionName": "Johannesburg", - "Latitude": -26.204444, - "Longitude": 28.045556, - "Nodes": [ - { - "Name": "15c", - "RegionID": 15, - "HostName": "derp15c.tailscale.com", - "IPv4": "102.67.165.185", - "IPv6": "2c0f:edb0:0:10::b59", - "CanPort80": true - }, - { - "Name": "15d", - "RegionID": 15, - "HostName": "derp15d.tailscale.com", - "IPv4": "102.67.165.36", - "IPv6": "2c0f:edb0:0:10::599", - "CanPort80": true - }, - { - "Name": "15b", - "RegionID": 15, - "HostName": "derp15b.tailscale.com", - "IPv4": "102.67.165.90", - "IPv6": "2c0f:edb0:0:10::963", - "CanPort80": true - } - ] - }, - "16": { - "RegionID": 16, - "RegionCode": "mia", - "RegionName": "Miami", - "Latitude": 25.78, - "Longitude": -80.21, - "Nodes": [ - { - "Name": "16c", - "RegionID": 16, - "HostName": "derp16c.tailscale.com", - "IPv4": "192.73.243.229", - "IPv6": "2607:f740:17::4e4", - "CanPort80": true - }, - { - "Name": "16d", - "RegionID": 16, - "HostName": "derp16d.tailscale.com", - "IPv4": "192.73.243.141", - "IPv6": "2607:f740:17::475", - "CanPort80": true - }, - { - "Name": "16b", - "RegionID": 16, - "HostName": "derp16b.tailscale.com", - "IPv4": "192.73.243.135", - "IPv6": "2607:f740:17::476", - "CanPort80": true - } - ] - }, - "17": { - "RegionID": 17, - "RegionCode": "lax", - "RegionName": "Los Angeles", - "Latitude": 34.05, - "Longitude": -118.25, - "Nodes": [ - { - "Name": "17c", - "RegionID": 17, - "HostName": "derp17c.tailscale.com", - "IPv4": "208.111.40.12", - "IPv6": "2607:f740:c::10", - "CanPort80": true - }, - { - "Name": "17d", - "RegionID": 17, - "HostName": "derp17d.tailscale.com", - "IPv4": "208.111.40.216", - "IPv6": "2607:f740:c::e1b", - "CanPort80": true - }, - { - "Name": "17b", - "RegionID": 17, - "HostName": "derp17b.tailscale.com", - "IPv4": "192.73.244.245", - "IPv6": "2607:f740:c::646", - "CanPort80": true - } - ] - }, - "18": { - "RegionID": 18, - "RegionCode": "par", - "RegionName": "Paris", - "Latitude": 48.856667, - "Longitude": 2.352222, - "Nodes": [ - { - "Name": "18c", - "RegionID": 18, - "HostName": "derp18c.tailscale.com", - "IPv4": "176.58.90.207", - "IPv6": "2a00:dd80:3e::c19", - "CanPort80": true - }, - { - "Name": "18d", - "RegionID": 18, - "HostName": "derp18d.tailscale.com", - "IPv4": "176.58.90.104", - "IPv6": "2a00:dd80:3e::f2e", - "CanPort80": true - }, - { - "Name": "18b", - "RegionID": 18, - "HostName": "derp18b.tailscale.com", - "IPv4": "176.58.90.147", - "IPv6": "2a00:dd80:3e::363", - "CanPort80": true - } - ] - }, - "19": { - "RegionID": 19, - "RegionCode": "mad", - "RegionName": "Madrid", - "Latitude": 40.416944, - "Longitude": -3.703333, - "Nodes": [ - { - "Name": "19c", - "RegionID": 19, - "HostName": "derp19c.tailscale.com", - "IPv4": "45.159.97.61", - "IPv6": "2a00:dd80:14:10::20", - "CanPort80": true - }, - { - "Name": "19d", - "RegionID": 19, - "HostName": "derp19d.tailscale.com", - "IPv4": "45.159.97.233", - "IPv6": "2a00:dd80:14:10::34a", - "CanPort80": true - }, - { - "Name": "19b", - "RegionID": 19, - "HostName": "derp19b.tailscale.com", - "IPv4": "45.159.97.144", - "IPv6": "2a00:dd80:14:10::335", - "CanPort80": true - } - ] - }, - "2": { - "RegionID": 2, - "RegionCode": "sfo", - "RegionName": "San Francisco", - "Latitude": 37.7775, - "Longitude": -122.416389, - "Nodes": [ - { - "Name": "2e", - "RegionID": 2, - "HostName": "derp2e.tailscale.com", - "IPv4": "192.73.252.134", - "IPv6": "2607:f740:0:3f::44c", - "CanPort80": true - }, - { - "Name": "2f", - "RegionID": 2, - "HostName": "derp2f.tailscale.com", - "IPv4": "208.111.34.178", - "IPv6": "2607:f740:0:3f::f4", - "CanPort80": true - }, - { - "Name": "2d", - "RegionID": 2, - "HostName": "derp2d.tailscale.com", - "IPv4": "192.73.252.65", - "IPv6": "2607:f740:0:3f::287", - "CanPort80": true - } - ] - }, - "20": { - "RegionID": 20, - "RegionCode": "hkg", - "RegionName": "Hong Kong", - "Latitude": 22.3193, - "Longitude": 114.1694, - "Nodes": [ - { - "Name": "20c", - "RegionID": 20, - "HostName": "derp20c.tailscale.com", - "IPv4": "205.147.105.30", - "IPv6": "2403:2500:8000:1::5fb", - "CanPort80": true - }, - { - "Name": "20d", - "RegionID": 20, - "HostName": "derp20d.tailscale.com", - "IPv4": "205.147.105.78", - "IPv6": "2403:2500:8000:1::e9a", - "CanPort80": true - }, - { - "Name": "20b", - "RegionID": 20, - "HostName": "derp20b.tailscale.com", - "IPv4": "103.6.84.152", - "IPv6": "2403:2500:8000:1::ef6", - "CanPort80": true - } - ] - }, - "21": { - "RegionID": 21, - "RegionCode": "tor", - "RegionName": "Toronto", - "Latitude": 43.741667, - "Longitude": -79.373333, - "Nodes": [ - { - "Name": "21c", - "RegionID": 21, - "HostName": "derp21c.tailscale.com", - "IPv4": "162.248.221.215", - "IPv6": "2607:f740:50::f10", - "CanPort80": true - }, - { - "Name": "21d", - "RegionID": 21, - "HostName": "derp21d.tailscale.com", - "IPv4": "162.248.221.248", - "IPv6": "2607:f740:50::ca4", - "CanPort80": true - }, - { - "Name": "21b", - "RegionID": 21, - "HostName": "derp21b.tailscale.com", - "IPv4": "162.248.221.199", - "IPv6": "2607:f740:50::1d1", - "CanPort80": true - } - ] - }, - "22": { - "RegionID": 22, - "RegionCode": "waw", - "RegionName": "Warsaw", - "Latitude": 52.23, - "Longitude": 21.011111, - "Nodes": [ - { - "Name": "22c", - "RegionID": 22, - "HostName": "derp22c.tailscale.com", - "IPv4": "45.159.98.253", - "IPv6": "2a00:dd80:40:100::3f", - "CanPort80": true - }, - { - "Name": "22d", - "RegionID": 22, - "HostName": "derp22d.tailscale.com", - "IPv4": "45.159.98.145", - "IPv6": "2a00:dd80:40:100::211", - "CanPort80": true - }, - { - "Name": "22b", - "RegionID": 22, - "HostName": "derp22b.tailscale.com", - "IPv4": "45.159.98.196", - "IPv6": "2a00:dd80:40:100::316", - "CanPort80": true - } - ] - }, - "23": { - "RegionID": 23, - "RegionCode": "dbi", - "RegionName": "Dubai", - "Latitude": 25.263056, - "Longitude": 55.297222, - "Nodes": [ - { - "Name": "23c", - "RegionID": 23, - "HostName": "derp23c.tailscale.com", - "IPv4": "185.34.3.207", - "IPv6": "2a00:dd80:3f:100::a50", - "CanPort80": true - }, - { - "Name": "23d", - "RegionID": 23, - "HostName": "derp23d.tailscale.com", - "IPv4": "185.34.3.75", - "IPv6": "2a00:dd80:3f:100::97e", - "CanPort80": true - }, - { - "Name": "23b", - "RegionID": 23, - "HostName": "derp23b.tailscale.com", - "IPv4": "185.34.3.232", - "IPv6": "2a00:dd80:3f:100::76f", - "CanPort80": true - } - ] - }, - "24": { - "RegionID": 24, - "RegionCode": "hnl", - "RegionName": "Honolulu", - "Latitude": 21.306944, - "Longitude": -157.858333, - "Nodes": [ - { - "Name": "24c", - "RegionID": 24, - "HostName": "derp24c.tailscale.com", - "IPv4": "208.83.233.233", - "IPv6": "2001:19f0:c000:c591:5400:04ff:fe26:2c5f", - "CanPort80": true - }, - { - "Name": "24d", - "RegionID": 24, - "HostName": "derp24d.tailscale.com", - "IPv4": "208.72.155.133", - "IPv6": "2001:19f0:c000:c564:5400:04ff:fe26:2ba8", - "CanPort80": true - }, - { - "Name": "24b", - "RegionID": 24, - "HostName": "derp24b.tailscale.com", - "IPv4": "208.83.234.151", - "IPv6": "2001:19f0:c000:c586:5400:04ff:fe26:2ba6", - "CanPort80": true - } - ] - }, - "25": { - "RegionID": 25, - "RegionCode": "nai", - "RegionName": "Nairobi", - "Latitude": -1.286389, - "Longitude": 36.817222, - "Nodes": [ - { - "Name": "25c", - "RegionID": 25, - "HostName": "derp25c.tailscale.com", - "IPv4": "102.67.167.37", - "IPv6": "2c0f:edb0:2000:1::2c7", - "CanPort80": true - }, - { - "Name": "25d", - "RegionID": 25, - "HostName": "derp25d.tailscale.com", - "IPv4": "102.67.167.188", - "IPv6": "2c0f:edb0:2000:1::188", - "CanPort80": true - }, - { - "Name": "25b", - "RegionID": 25, - "HostName": "derp25b.tailscale.com", - "IPv4": "102.67.167.245", - "IPv6": "2c0f:edb0:2000:1::2e9", - "CanPort80": true - } - ] - }, - "26": { - "RegionID": 26, - "RegionCode": "nue", - "RegionName": "Nuremberg", - "Latitude": 49.453889, - "Longitude": 11.0775, - "Nodes": [ - { - "Name": "26c", - "RegionID": 26, - "HostName": "derp26c.tailscale.com", - "IPv4": "49.12.193.137", - "IPv6": "2a01:4f8:1c1c:5c70::1", - "CanPort80": true - }, - { - "Name": "26d", - "RegionID": 26, - "HostName": "derp26d.tailscale.com", - "IPv4": "49.13.204.141", - "IPv6": "2a01:4f8:1c0c:7d06::1", - "CanPort80": true - }, - { - "Name": "26b", - "RegionID": 26, - "HostName": "derp26b.tailscale.com", - "IPv4": "167.235.72.200", - "IPv6": "2a01:4f8:1c1c:47b6::1", - "CanPort80": true - } - ] - }, - "27": { - "RegionID": 27, - "RegionCode": "iad", - "RegionName": "Ashburn", - "Latitude": 39.03, - "Longitude": -77.471111, - "Nodes": [ - { - "Name": "27d", - "RegionID": 27, - "HostName": "derp27d.tailscale.com", - "IPv4": "178.156.152.106", - "IPv6": "2a01:4ff:f0:3c8e::1", - "CanPort80": true - }, - { - "Name": "27c", - "RegionID": 27, - "HostName": "derp27c.tailscale.com", - "IPv4": "178.156.152.91", - "IPv6": "2a01:4ff:f0:3913::1", - "CanPort80": true - }, - { - "Name": "27e", - "RegionID": 27, - "HostName": "derp27e.tailscale.com", - "IPv4": "178.156.134.232", - "IPv6": "2a01:4ff:f0:28d4::1", - "CanPort80": true - }, - { - "Name": "27b", - "RegionID": 27, - "HostName": "derp27b.tailscale.com", - "IPv4": "5.161.218.233", - "IPv6": "2a01:4ff:f0:3db9::1", - "CanPort80": true - } - ] - }, - "28": { - "RegionID": 28, - "RegionCode": "hel", - "RegionName": "Helsinki", - "Latitude": 60.170833, - "Longitude": 24.9375, - "Nodes": [ - { - "Name": "28c", - "RegionID": 28, - "HostName": "derp28c.tailscale.com", - "IPv4": "95.217.2.165", - "IPv6": "2a01:4f9:c012:cd74::1", - "CanPort80": true - }, - { - "Name": "28d", - "RegionID": 28, - "HostName": "derp28d.tailscale.com", - "IPv4": "157.180.28.32", - "IPv6": "2a01:4f9:c012:2e5b::1", - "CanPort80": true - }, - { - "Name": "28b", - "RegionID": 28, - "HostName": "derp28b.tailscale.com", - "IPv4": "65.109.143.62", - "IPv6": "2a01:4f9:c012:d55c::1", - "CanPort80": true - } - ] - }, - "3": { - "RegionID": 3, - "RegionCode": "sin", - "RegionName": "Singapore", - "Latitude": 1.3521, - "Longitude": 103.8198, - "Nodes": [ - { - "Name": "3g", - "RegionID": 3, - "HostName": "derp3g.tailscale.com", - "IPv4": "172.237.72.79", - "IPv6": "2600:3c15::2000:adff:fe08:6fab", - "CanPort80": true - }, - { - "Name": "3f", - "RegionID": 3, - "HostName": "derp3f.tailscale.com", - "IPv4": "172.237.72.8", - "IPv6": "2600:3c15::2000:53ff:fe48:a668", - "CanPort80": true - }, - { - "Name": "3h", - "RegionID": 3, - "HostName": "derp3h.tailscale.com", - "IPv4": "172.237.66.30", - "IPv6": "2600:3c15::2000:3dff:fe44:50aa", - "CanPort80": true - }, - { - "Name": "3e", - "RegionID": 3, - "HostName": "derp3e.tailscale.com", - "IPv4": "172.237.72.43", - "IPv6": "2600:3c15::2000:6cff:fee4:d799", - "CanPort80": true - } - ] - }, - "4": { - "RegionID": 4, - "RegionCode": "fra", - "RegionName": "Frankfurt", - "Latitude": 50.1109, - "Longitude": 8.6821, - "Nodes": [ - { - "Name": "4h", - "RegionID": 4, - "HostName": "derp4h.tailscale.com", - "IPv4": "185.40.234.77", - "IPv6": "2a00:dd80:20::bcf", - "CanPort80": true - }, - { - "Name": "4g", - "RegionID": 4, - "HostName": "derp4g.tailscale.com", - "IPv4": "185.40.234.113", - "IPv6": "2a00:dd80:20::8f", - "CanPort80": true - }, - { - "Name": "4i", - "RegionID": 4, - "HostName": "derp4i.tailscale.com", - "IPv4": "185.40.234.53", - "IPv6": "2a00:dd80:20::8a6", - "CanPort80": true - }, - { - "Name": "4f", - "RegionID": 4, - "HostName": "derp4f.tailscale.com", - "IPv4": "185.40.234.219", - "IPv6": "2a00:dd80:20::a25", - "CanPort80": true - } - ] - }, - "5": { - "RegionID": 5, - "RegionCode": "syd", - "RegionName": "Sydney", - "Latitude": -33.867778, - "Longitude": 151.21, - "Nodes": [ - { - "Name": "5f", - "RegionID": 5, - "HostName": "derp5f.tailscale.com", - "IPv4": "172.105.166.103", - "IPv6": "2400:8907::2000:ccff:fe1f:80da", - "CanPort80": true - }, - { - "Name": "5g", - "RegionID": 5, - "HostName": "derp5g.tailscale.com", - "IPv4": "172.105.169.57", - "IPv6": "2400:8907::2000:2fff:fea7:57f4", - "CanPort80": true - }, - { - "Name": "5e", - "RegionID": 5, - "HostName": "derp5e.tailscale.com", - "IPv4": "172.105.179.230", - "IPv6": "2400:8907::2000:ceff:fe8d:4f4e", - "CanPort80": true - } - ] - }, - "6": { - "RegionID": 6, - "RegionCode": "blr", - "RegionName": "Bengaluru", - "Latitude": 12.9716, - "Longitude": 77.5946, - "Nodes": [ - { - "Name": "6a", - "RegionID": 6, - "HostName": "derp6.tailscale.com", - "IPv4": "68.183.90.120", - "IPv6": "2400:6180:100:d0::982:d001", - "CanPort80": true - } - ] - }, - "7": { - "RegionID": 7, - "RegionCode": "tok", - "RegionName": "Tokyo", - "Latitude": 35.6764, - "Longitude": 139.65, - "Nodes": [ - { - "Name": "7g", - "RegionID": 7, - "HostName": "derp7g.tailscale.com", - "IPv4": "172.238.6.179", - "IPv6": "2600:3c18::2000:3fff:fe80:3ebd", - "CanPort80": true - }, - { - "Name": "7f", - "RegionID": 7, - "HostName": "derp7f.tailscale.com", - "IPv4": "172.238.6.34", - "IPv6": "2600:3c18::2000:acff:fe8e:3ed5", - "CanPort80": true - }, - { - "Name": "7h", - "RegionID": 7, - "HostName": "derp7h.tailscale.com", - "IPv4": "172.237.28.183", - "IPv6": "2600:3c18::2000:b1ff:fea9:4560", - "CanPort80": true - }, - { - "Name": "7e", - "RegionID": 7, - "HostName": "derp7e.tailscale.com", - "IPv4": "172.238.6.180", - "IPv6": "2600:3c18::2000:60ff:fe0f:6e83", - "STUNOnly": true, - "CanPort80": true - } - ] - }, - "8": { - "RegionID": 8, - "RegionCode": "lhr", - "RegionName": "London", - "Latitude": 51.5072, - "Longitude": 0.1276, - "Nodes": [ - { - "Name": "8f", - "RegionID": 8, - "HostName": "derp8f.tailscale.com", - "IPv4": "176.58.88.183", - "IPv6": "2a00:dd80:3a::dfa", - "CanPort80": true - }, - { - "Name": "8g", - "RegionID": 8, - "HostName": "derp8g.tailscale.com", - "IPv4": "176.58.92.254", - "IPv6": "2a00:dd80:3a::ed", - "CanPort80": true - }, - { - "Name": "8e", - "RegionID": 8, - "HostName": "derp8e.tailscale.com", - "IPv4": "176.58.92.144", - "IPv6": "2a00:dd80:3a::b33", - "CanPort80": true - } - ] - }, - "9": { - "RegionID": 9, - "RegionCode": "dfw", - "RegionName": "Dallas", - "Latitude": 32.779167, - "Longitude": -96.808889, - "Nodes": [ - { - "Name": "9e", - "RegionID": 9, - "HostName": "derp9e.tailscale.com", - "IPv4": "192.73.248.83", - "IPv6": "2607:f740:100::359", - "CanPort80": true - }, - { - "Name": "9f", - "RegionID": 9, - "HostName": "derp9f.tailscale.com", - "IPv4": "209.177.156.197", - "IPv6": "2607:f740:100::cad", - "CanPort80": true - }, - { - "Name": "9d", - "RegionID": 9, - "HostName": "derp9d.tailscale.com", - "IPv4": "209.177.156.94", - "IPv6": "2607:f740:100::c05", - "CanPort80": true - } - ] - } - } - }, - "DisplayMessages": null, - "TKAEnabled": false, - "TKAHead": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", - "Domain": "kratail2tid@passkey", - "DomainAuditLogID": "", - "UserProfiles": { - "6999435610919250": { - "ID": 6999435610919250, - "LoginName": "group-a-client.tail78f774.ts.net", - "DisplayName": "group-a-client" - } - } + "PacketFilterRules": null } }, "group-b-client": { - "commands": { - "packet_filter_rules": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/group-b-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/group-b-client/tailscaled.sock debug localapi POST debug-packet-filter-matches" - }, "packet_filter_rules": null, - "packet_filter_matches": [], - "whois": { - "100.124.195.93": { - "peer_name": "exit-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/group-b-client/tailscaled.sock whois --json 100.124.195.93", - "response": null - }, - "100.116.18.24": { - "peer_name": "exit-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/group-b-client/tailscaled.sock whois --json 100.116.18.24", - "response": null - }, - "100.85.66.106": { - "peer_name": "exit-node", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/group-b-client/tailscaled.sock whois --json 100.85.66.106", - "response": null - }, - "100.107.162.14": { - "peer_name": "group-a-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/group-b-client/tailscaled.sock whois --json 100.107.162.14", - "response": null - }, - "100.105.127.107": { - "peer_name": "multi-exit-router", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/group-b-client/tailscaled.sock whois --json 100.105.127.107", - "response": null - }, - "100.109.43.124": { - "peer_name": "router-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/group-b-client/tailscaled.sock whois --json 100.109.43.124", - "response": null - }, - "100.65.172.123": { - "peer_name": "router-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/group-b-client/tailscaled.sock whois --json 100.65.172.123", - "response": null - }, - "100.92.142.61": { - "peer_name": "subnet-router", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/group-b-client/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/group-b-client/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/group-b-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/group-b-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/group-b-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/group-b-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/group-b-client/tailscaled.sock whois --json 100.90.199.68", - "response": null - } - }, "netmap": { - "SelfNode": { - "ID": 1008089393782498, - "StableID": "ndUwgLoZs811CNTRL", - "Name": "group-b-client.tail78f774.ts.net.", - "User": 1008089393782498, - "Key": "nodekey:ef35a655163204a08b33e09fdc24709f1e3aaa7f40de4efd5549cf014b4d8711", - "DiscoKey": "discokey:e972182cda0d0b459c91b2881624b81749a7e44390a5dde1b9bc17c1ae67715a", - "Addresses": ["100.77.135.18/32", "fd7a:115c:a1e0::4b37:8712/128"], - "AllowedIPs": ["100.77.135.18/32", "fd7a:115c:a1e0::4b37:8712/128"], - "Endpoints": ["77.164.248.136:49377", "10.65.0.27:49377", "172.17.0.1:49377"], - "Hostinfo": { - "Hostname": "group-b-client", - "RequestTags": ["tag:group-b"], - "Services": [ - { "Proto": "peerapi4", "Port": 47173 }, - { "Proto": "peerapi6", "Port": 47173 }, - { "Proto": "peerapi-dns-proxy", "Port": 1 } - ] - }, - "Created": "2026-03-28T10:38:08.031309668Z", - "Tags": ["tag:group-b"], - "MachineAuthorized": true, - "CapMap": { - "https://tailscale.com/cap/file-sharing": null, - "https://tailscale.com/cap/is-owner": null, - "https://tailscale.com/cap/ssh": null, - "https://tailscale.com/cap/tailnet-lock": null, - "probe-udp-lifetime": null, - "ssh-behavior-v1": null, - "ssh-env-vars": null, - "store-appc-routes": null, - "tailnet-display-name": ["kratail2tid@passkey"] - }, - "ComputedName": "group-b-client", - "ComputedNameWithHost": "group-b-client" - }, - "AllCaps": [ - "store-appc-routes", - "probe-udp-lifetime", - "tailnet-display-name", - "https://tailscale.com/cap/ssh", - "https://tailscale.com/cap/tailnet-lock", - "ssh-env-vars", - "https://tailscale.com/cap/is-owner", - "ssh-behavior-v1", - "https://tailscale.com/cap/file-sharing" - ], - "NodeKey": "nodekey:ef35a655163204a08b33e09fdc24709f1e3aaa7f40de4efd5549cf014b4d8711", - "MachineKey": "mkey:f151b3ba7be457f1484c96d8daf48e032d8c9ed890a7f9b2f32c51458a19a05c", "Peers": [], - "DNS": { - "Routes": { - "tail78f774.ts.net.": null, - "ts.net.": [{ "Addr": "199.247.155.53" }, { "Addr": "2620:111:8007::53" }] - }, - "Domains": ["tail78f774.ts.net"], - "Proxied": true, - "ExitNodeFilteredSet": [".ts.net", ".tailscale.net"] - }, - "PacketFilter": [], - "PacketFilterRules": null, - "SSHPolicy": { "rules": [] }, - "CollectServices": false, - "DERPMap": { - "Regions": { - "1": { - "RegionID": 1, - "RegionCode": "nyc", - "RegionName": "New York City", - "Latitude": 40.7128, - "Longitude": -74.006, - "Nodes": [ - { - "Name": "1h", - "RegionID": 1, - "HostName": "derp1h.tailscale.com", - "IPv4": "199.38.181.93", - "IPv6": "2607:f740:f::afd", - "CanPort80": true - }, - { - "Name": "1g", - "RegionID": 1, - "HostName": "derp1g.tailscale.com", - "IPv4": "209.177.145.120", - "IPv6": "2607:f740:f::3eb", - "CanPort80": true - }, - { - "Name": "1i", - "RegionID": 1, - "HostName": "derp1i.tailscale.com", - "IPv4": "199.38.181.103", - "IPv6": "2607:f740:f::e19", - "CanPort80": true - }, - { - "Name": "1f", - "RegionID": 1, - "HostName": "derp1f.tailscale.com", - "IPv4": "199.38.181.104", - "IPv6": "2607:f740:f::bc", - "CanPort80": true - } - ] - }, - "10": { - "RegionID": 10, - "RegionCode": "sea", - "RegionName": "Seattle", - "Latitude": 47.609722, - "Longitude": -122.333056, - "Nodes": [ - { - "Name": "10c", - "RegionID": 10, - "HostName": "derp10c.tailscale.com", - "IPv4": "192.73.240.121", - "IPv6": "2607:f740:14::40c", - "CanPort80": true - }, - { - "Name": "10d", - "RegionID": 10, - "HostName": "derp10d.tailscale.com", - "IPv4": "192.73.240.132", - "IPv6": "2607:f740:14::500", - "CanPort80": true - }, - { - "Name": "10b", - "RegionID": 10, - "HostName": "derp10b.tailscale.com", - "IPv4": "192.73.240.161", - "IPv6": "2607:f740:14::61c", - "CanPort80": true - } - ] - }, - "11": { - "RegionID": 11, - "RegionCode": "sao", - "RegionName": "São Paulo", - "Latitude": -23.55, - "Longitude": -46.633333, - "Nodes": [ - { - "Name": "11f", - "RegionID": 11, - "HostName": "derp11f.tailscale.com", - "IPv4": "172.237.61.197", - "IPv6": "2600:3c0d::2000:3bff:fe44:6166", - "CanPort80": true - }, - { - "Name": "11g", - "RegionID": 11, - "HostName": "derp11g.tailscale.com", - "IPv4": "172.237.61.190", - "IPv6": "2600:3c0d::2000:62ff:febe:2e67", - "CanPort80": true - }, - { - "Name": "11e", - "RegionID": 11, - "HostName": "derp11e.tailscale.com", - "IPv4": "172.237.61.194", - "IPv6": "2600:3c0d::2000:d2ff:fe43:1790", - "CanPort80": true - } - ] - }, - "12": { - "RegionID": 12, - "RegionCode": "ord", - "RegionName": "Chicago", - "Latitude": 41.881944, - "Longitude": -87.627778, - "Nodes": [ - { - "Name": "12e", - "RegionID": 12, - "HostName": "derp12e.tailscale.com", - "IPv4": "209.177.158.15", - "IPv6": "2607:f740:e::b17", - "CanPort80": true - }, - { - "Name": "12f", - "RegionID": 12, - "HostName": "derp12f.tailscale.com", - "IPv4": "199.38.182.118", - "IPv6": "2607:f740:e::4c8", - "CanPort80": true - }, - { - "Name": "12d", - "RegionID": 12, - "HostName": "derp12d.tailscale.com", - "IPv4": "209.177.158.246", - "IPv6": "2607:f740:e::811", - "CanPort80": true - } - ] - }, - "13": { - "RegionID": 13, - "RegionCode": "den", - "RegionName": "Denver", - "Latitude": 39.7392, - "Longitude": -104.9849, - "Nodes": [ - { - "Name": "13c", - "RegionID": 13, - "HostName": "derp13c.tailscale.com", - "IPv4": "192.73.242.28", - "IPv6": "2607:f740:16::5c", - "CanPort80": true - }, - { - "Name": "13d", - "RegionID": 13, - "HostName": "derp13d.tailscale.com", - "IPv4": "192.73.242.204", - "IPv6": "2607:f740:16::c23", - "CanPort80": true - }, - { - "Name": "13b", - "RegionID": 13, - "HostName": "derp13b.tailscale.com", - "IPv4": "192.73.242.187", - "IPv6": "2607:f740:16::640", - "CanPort80": true - } - ] - }, - "14": { - "RegionID": 14, - "RegionCode": "ams", - "RegionName": "Amsterdam", - "Latitude": 52.372778, - "Longitude": 4.893611, - "Nodes": [ - { - "Name": "14c", - "RegionID": 14, - "HostName": "derp14c.tailscale.com", - "IPv4": "176.58.93.147", - "IPv6": "2a00:dd80:3c::b09", - "CanPort80": true - }, - { - "Name": "14d", - "RegionID": 14, - "HostName": "derp14d.tailscale.com", - "IPv4": "176.58.93.154", - "IPv6": "2a00:dd80:3c::3d5", - "CanPort80": true - }, - { - "Name": "14b", - "RegionID": 14, - "HostName": "derp14b.tailscale.com", - "IPv4": "176.58.93.248", - "IPv6": "2a00:dd80:3c::807", - "CanPort80": true - } - ] - }, - "15": { - "RegionID": 15, - "RegionCode": "jnb", - "RegionName": "Johannesburg", - "Latitude": -26.204444, - "Longitude": 28.045556, - "Nodes": [ - { - "Name": "15c", - "RegionID": 15, - "HostName": "derp15c.tailscale.com", - "IPv4": "102.67.165.185", - "IPv6": "2c0f:edb0:0:10::b59", - "CanPort80": true - }, - { - "Name": "15d", - "RegionID": 15, - "HostName": "derp15d.tailscale.com", - "IPv4": "102.67.165.36", - "IPv6": "2c0f:edb0:0:10::599", - "CanPort80": true - }, - { - "Name": "15b", - "RegionID": 15, - "HostName": "derp15b.tailscale.com", - "IPv4": "102.67.165.90", - "IPv6": "2c0f:edb0:0:10::963", - "CanPort80": true - } - ] - }, - "16": { - "RegionID": 16, - "RegionCode": "mia", - "RegionName": "Miami", - "Latitude": 25.78, - "Longitude": -80.21, - "Nodes": [ - { - "Name": "16c", - "RegionID": 16, - "HostName": "derp16c.tailscale.com", - "IPv4": "192.73.243.229", - "IPv6": "2607:f740:17::4e4", - "CanPort80": true - }, - { - "Name": "16d", - "RegionID": 16, - "HostName": "derp16d.tailscale.com", - "IPv4": "192.73.243.141", - "IPv6": "2607:f740:17::475", - "CanPort80": true - }, - { - "Name": "16b", - "RegionID": 16, - "HostName": "derp16b.tailscale.com", - "IPv4": "192.73.243.135", - "IPv6": "2607:f740:17::476", - "CanPort80": true - } - ] - }, - "17": { - "RegionID": 17, - "RegionCode": "lax", - "RegionName": "Los Angeles", - "Latitude": 34.05, - "Longitude": -118.25, - "Nodes": [ - { - "Name": "17c", - "RegionID": 17, - "HostName": "derp17c.tailscale.com", - "IPv4": "208.111.40.12", - "IPv6": "2607:f740:c::10", - "CanPort80": true - }, - { - "Name": "17d", - "RegionID": 17, - "HostName": "derp17d.tailscale.com", - "IPv4": "208.111.40.216", - "IPv6": "2607:f740:c::e1b", - "CanPort80": true - }, - { - "Name": "17b", - "RegionID": 17, - "HostName": "derp17b.tailscale.com", - "IPv4": "192.73.244.245", - "IPv6": "2607:f740:c::646", - "CanPort80": true - } - ] - }, - "18": { - "RegionID": 18, - "RegionCode": "par", - "RegionName": "Paris", - "Latitude": 48.856667, - "Longitude": 2.352222, - "Nodes": [ - { - "Name": "18c", - "RegionID": 18, - "HostName": "derp18c.tailscale.com", - "IPv4": "176.58.90.207", - "IPv6": "2a00:dd80:3e::c19", - "CanPort80": true - }, - { - "Name": "18d", - "RegionID": 18, - "HostName": "derp18d.tailscale.com", - "IPv4": "176.58.90.104", - "IPv6": "2a00:dd80:3e::f2e", - "CanPort80": true - }, - { - "Name": "18b", - "RegionID": 18, - "HostName": "derp18b.tailscale.com", - "IPv4": "176.58.90.147", - "IPv6": "2a00:dd80:3e::363", - "CanPort80": true - } - ] - }, - "19": { - "RegionID": 19, - "RegionCode": "mad", - "RegionName": "Madrid", - "Latitude": 40.416944, - "Longitude": -3.703333, - "Nodes": [ - { - "Name": "19c", - "RegionID": 19, - "HostName": "derp19c.tailscale.com", - "IPv4": "45.159.97.61", - "IPv6": "2a00:dd80:14:10::20", - "CanPort80": true - }, - { - "Name": "19d", - "RegionID": 19, - "HostName": "derp19d.tailscale.com", - "IPv4": "45.159.97.233", - "IPv6": "2a00:dd80:14:10::34a", - "CanPort80": true - }, - { - "Name": "19b", - "RegionID": 19, - "HostName": "derp19b.tailscale.com", - "IPv4": "45.159.97.144", - "IPv6": "2a00:dd80:14:10::335", - "CanPort80": true - } - ] - }, - "2": { - "RegionID": 2, - "RegionCode": "sfo", - "RegionName": "San Francisco", - "Latitude": 37.7775, - "Longitude": -122.416389, - "Nodes": [ - { - "Name": "2e", - "RegionID": 2, - "HostName": "derp2e.tailscale.com", - "IPv4": "192.73.252.134", - "IPv6": "2607:f740:0:3f::44c", - "CanPort80": true - }, - { - "Name": "2f", - "RegionID": 2, - "HostName": "derp2f.tailscale.com", - "IPv4": "208.111.34.178", - "IPv6": "2607:f740:0:3f::f4", - "CanPort80": true - }, - { - "Name": "2d", - "RegionID": 2, - "HostName": "derp2d.tailscale.com", - "IPv4": "192.73.252.65", - "IPv6": "2607:f740:0:3f::287", - "CanPort80": true - } - ] - }, - "20": { - "RegionID": 20, - "RegionCode": "hkg", - "RegionName": "Hong Kong", - "Latitude": 22.3193, - "Longitude": 114.1694, - "Nodes": [ - { - "Name": "20c", - "RegionID": 20, - "HostName": "derp20c.tailscale.com", - "IPv4": "205.147.105.30", - "IPv6": "2403:2500:8000:1::5fb", - "CanPort80": true - }, - { - "Name": "20d", - "RegionID": 20, - "HostName": "derp20d.tailscale.com", - "IPv4": "205.147.105.78", - "IPv6": "2403:2500:8000:1::e9a", - "CanPort80": true - }, - { - "Name": "20b", - "RegionID": 20, - "HostName": "derp20b.tailscale.com", - "IPv4": "103.6.84.152", - "IPv6": "2403:2500:8000:1::ef6", - "CanPort80": true - } - ] - }, - "21": { - "RegionID": 21, - "RegionCode": "tor", - "RegionName": "Toronto", - "Latitude": 43.741667, - "Longitude": -79.373333, - "Nodes": [ - { - "Name": "21c", - "RegionID": 21, - "HostName": "derp21c.tailscale.com", - "IPv4": "162.248.221.215", - "IPv6": "2607:f740:50::f10", - "CanPort80": true - }, - { - "Name": "21d", - "RegionID": 21, - "HostName": "derp21d.tailscale.com", - "IPv4": "162.248.221.248", - "IPv6": "2607:f740:50::ca4", - "CanPort80": true - }, - { - "Name": "21b", - "RegionID": 21, - "HostName": "derp21b.tailscale.com", - "IPv4": "162.248.221.199", - "IPv6": "2607:f740:50::1d1", - "CanPort80": true - } - ] - }, - "22": { - "RegionID": 22, - "RegionCode": "waw", - "RegionName": "Warsaw", - "Latitude": 52.23, - "Longitude": 21.011111, - "Nodes": [ - { - "Name": "22c", - "RegionID": 22, - "HostName": "derp22c.tailscale.com", - "IPv4": "45.159.98.253", - "IPv6": "2a00:dd80:40:100::3f", - "CanPort80": true - }, - { - "Name": "22d", - "RegionID": 22, - "HostName": "derp22d.tailscale.com", - "IPv4": "45.159.98.145", - "IPv6": "2a00:dd80:40:100::211", - "CanPort80": true - }, - { - "Name": "22b", - "RegionID": 22, - "HostName": "derp22b.tailscale.com", - "IPv4": "45.159.98.196", - "IPv6": "2a00:dd80:40:100::316", - "CanPort80": true - } - ] - }, - "23": { - "RegionID": 23, - "RegionCode": "dbi", - "RegionName": "Dubai", - "Latitude": 25.263056, - "Longitude": 55.297222, - "Nodes": [ - { - "Name": "23c", - "RegionID": 23, - "HostName": "derp23c.tailscale.com", - "IPv4": "185.34.3.207", - "IPv6": "2a00:dd80:3f:100::a50", - "CanPort80": true - }, - { - "Name": "23d", - "RegionID": 23, - "HostName": "derp23d.tailscale.com", - "IPv4": "185.34.3.75", - "IPv6": "2a00:dd80:3f:100::97e", - "CanPort80": true - }, - { - "Name": "23b", - "RegionID": 23, - "HostName": "derp23b.tailscale.com", - "IPv4": "185.34.3.232", - "IPv6": "2a00:dd80:3f:100::76f", - "CanPort80": true - } - ] - }, - "24": { - "RegionID": 24, - "RegionCode": "hnl", - "RegionName": "Honolulu", - "Latitude": 21.306944, - "Longitude": -157.858333, - "Nodes": [ - { - "Name": "24c", - "RegionID": 24, - "HostName": "derp24c.tailscale.com", - "IPv4": "208.83.233.233", - "IPv6": "2001:19f0:c000:c591:5400:04ff:fe26:2c5f", - "CanPort80": true - }, - { - "Name": "24d", - "RegionID": 24, - "HostName": "derp24d.tailscale.com", - "IPv4": "208.72.155.133", - "IPv6": "2001:19f0:c000:c564:5400:04ff:fe26:2ba8", - "CanPort80": true - }, - { - "Name": "24b", - "RegionID": 24, - "HostName": "derp24b.tailscale.com", - "IPv4": "208.83.234.151", - "IPv6": "2001:19f0:c000:c586:5400:04ff:fe26:2ba6", - "CanPort80": true - } - ] - }, - "25": { - "RegionID": 25, - "RegionCode": "nai", - "RegionName": "Nairobi", - "Latitude": -1.286389, - "Longitude": 36.817222, - "Nodes": [ - { - "Name": "25c", - "RegionID": 25, - "HostName": "derp25c.tailscale.com", - "IPv4": "102.67.167.37", - "IPv6": "2c0f:edb0:2000:1::2c7", - "CanPort80": true - }, - { - "Name": "25d", - "RegionID": 25, - "HostName": "derp25d.tailscale.com", - "IPv4": "102.67.167.188", - "IPv6": "2c0f:edb0:2000:1::188", - "CanPort80": true - }, - { - "Name": "25b", - "RegionID": 25, - "HostName": "derp25b.tailscale.com", - "IPv4": "102.67.167.245", - "IPv6": "2c0f:edb0:2000:1::2e9", - "CanPort80": true - } - ] - }, - "26": { - "RegionID": 26, - "RegionCode": "nue", - "RegionName": "Nuremberg", - "Latitude": 49.453889, - "Longitude": 11.0775, - "Nodes": [ - { - "Name": "26c", - "RegionID": 26, - "HostName": "derp26c.tailscale.com", - "IPv4": "49.12.193.137", - "IPv6": "2a01:4f8:1c1c:5c70::1", - "CanPort80": true - }, - { - "Name": "26d", - "RegionID": 26, - "HostName": "derp26d.tailscale.com", - "IPv4": "49.13.204.141", - "IPv6": "2a01:4f8:1c0c:7d06::1", - "CanPort80": true - }, - { - "Name": "26b", - "RegionID": 26, - "HostName": "derp26b.tailscale.com", - "IPv4": "167.235.72.200", - "IPv6": "2a01:4f8:1c1c:47b6::1", - "CanPort80": true - } - ] - }, - "27": { - "RegionID": 27, - "RegionCode": "iad", - "RegionName": "Ashburn", - "Latitude": 39.03, - "Longitude": -77.471111, - "Nodes": [ - { - "Name": "27d", - "RegionID": 27, - "HostName": "derp27d.tailscale.com", - "IPv4": "178.156.152.106", - "IPv6": "2a01:4ff:f0:3c8e::1", - "CanPort80": true - }, - { - "Name": "27c", - "RegionID": 27, - "HostName": "derp27c.tailscale.com", - "IPv4": "178.156.152.91", - "IPv6": "2a01:4ff:f0:3913::1", - "CanPort80": true - }, - { - "Name": "27e", - "RegionID": 27, - "HostName": "derp27e.tailscale.com", - "IPv4": "178.156.134.232", - "IPv6": "2a01:4ff:f0:28d4::1", - "CanPort80": true - }, - { - "Name": "27b", - "RegionID": 27, - "HostName": "derp27b.tailscale.com", - "IPv4": "5.161.218.233", - "IPv6": "2a01:4ff:f0:3db9::1", - "CanPort80": true - } - ] - }, - "28": { - "RegionID": 28, - "RegionCode": "hel", - "RegionName": "Helsinki", - "Latitude": 60.170833, - "Longitude": 24.9375, - "Nodes": [ - { - "Name": "28c", - "RegionID": 28, - "HostName": "derp28c.tailscale.com", - "IPv4": "95.217.2.165", - "IPv6": "2a01:4f9:c012:cd74::1", - "CanPort80": true - }, - { - "Name": "28d", - "RegionID": 28, - "HostName": "derp28d.tailscale.com", - "IPv4": "157.180.28.32", - "IPv6": "2a01:4f9:c012:2e5b::1", - "CanPort80": true - }, - { - "Name": "28b", - "RegionID": 28, - "HostName": "derp28b.tailscale.com", - "IPv4": "65.109.143.62", - "IPv6": "2a01:4f9:c012:d55c::1", - "CanPort80": true - } - ] - }, - "3": { - "RegionID": 3, - "RegionCode": "sin", - "RegionName": "Singapore", - "Latitude": 1.3521, - "Longitude": 103.8198, - "Nodes": [ - { - "Name": "3g", - "RegionID": 3, - "HostName": "derp3g.tailscale.com", - "IPv4": "172.237.72.79", - "IPv6": "2600:3c15::2000:adff:fe08:6fab", - "CanPort80": true - }, - { - "Name": "3f", - "RegionID": 3, - "HostName": "derp3f.tailscale.com", - "IPv4": "172.237.72.8", - "IPv6": "2600:3c15::2000:53ff:fe48:a668", - "CanPort80": true - }, - { - "Name": "3h", - "RegionID": 3, - "HostName": "derp3h.tailscale.com", - "IPv4": "172.237.66.30", - "IPv6": "2600:3c15::2000:3dff:fe44:50aa", - "CanPort80": true - }, - { - "Name": "3e", - "RegionID": 3, - "HostName": "derp3e.tailscale.com", - "IPv4": "172.237.72.43", - "IPv6": "2600:3c15::2000:6cff:fee4:d799", - "CanPort80": true - } - ] - }, - "4": { - "RegionID": 4, - "RegionCode": "fra", - "RegionName": "Frankfurt", - "Latitude": 50.1109, - "Longitude": 8.6821, - "Nodes": [ - { - "Name": "4h", - "RegionID": 4, - "HostName": "derp4h.tailscale.com", - "IPv4": "185.40.234.77", - "IPv6": "2a00:dd80:20::bcf", - "CanPort80": true - }, - { - "Name": "4g", - "RegionID": 4, - "HostName": "derp4g.tailscale.com", - "IPv4": "185.40.234.113", - "IPv6": "2a00:dd80:20::8f", - "CanPort80": true - }, - { - "Name": "4i", - "RegionID": 4, - "HostName": "derp4i.tailscale.com", - "IPv4": "185.40.234.53", - "IPv6": "2a00:dd80:20::8a6", - "CanPort80": true - }, - { - "Name": "4f", - "RegionID": 4, - "HostName": "derp4f.tailscale.com", - "IPv4": "185.40.234.219", - "IPv6": "2a00:dd80:20::a25", - "CanPort80": true - } - ] - }, - "5": { - "RegionID": 5, - "RegionCode": "syd", - "RegionName": "Sydney", - "Latitude": -33.867778, - "Longitude": 151.21, - "Nodes": [ - { - "Name": "5f", - "RegionID": 5, - "HostName": "derp5f.tailscale.com", - "IPv4": "172.105.166.103", - "IPv6": "2400:8907::2000:ccff:fe1f:80da", - "CanPort80": true - }, - { - "Name": "5g", - "RegionID": 5, - "HostName": "derp5g.tailscale.com", - "IPv4": "172.105.169.57", - "IPv6": "2400:8907::2000:2fff:fea7:57f4", - "CanPort80": true - }, - { - "Name": "5e", - "RegionID": 5, - "HostName": "derp5e.tailscale.com", - "IPv4": "172.105.179.230", - "IPv6": "2400:8907::2000:ceff:fe8d:4f4e", - "CanPort80": true - } - ] - }, - "6": { - "RegionID": 6, - "RegionCode": "blr", - "RegionName": "Bengaluru", - "Latitude": 12.9716, - "Longitude": 77.5946, - "Nodes": [ - { - "Name": "6a", - "RegionID": 6, - "HostName": "derp6.tailscale.com", - "IPv4": "68.183.90.120", - "IPv6": "2400:6180:100:d0::982:d001", - "CanPort80": true - } - ] - }, - "7": { - "RegionID": 7, - "RegionCode": "tok", - "RegionName": "Tokyo", - "Latitude": 35.6764, - "Longitude": 139.65, - "Nodes": [ - { - "Name": "7g", - "RegionID": 7, - "HostName": "derp7g.tailscale.com", - "IPv4": "172.238.6.179", - "IPv6": "2600:3c18::2000:3fff:fe80:3ebd", - "CanPort80": true - }, - { - "Name": "7f", - "RegionID": 7, - "HostName": "derp7f.tailscale.com", - "IPv4": "172.238.6.34", - "IPv6": "2600:3c18::2000:acff:fe8e:3ed5", - "CanPort80": true - }, - { - "Name": "7h", - "RegionID": 7, - "HostName": "derp7h.tailscale.com", - "IPv4": "172.237.28.183", - "IPv6": "2600:3c18::2000:b1ff:fea9:4560", - "CanPort80": true - }, - { - "Name": "7e", - "RegionID": 7, - "HostName": "derp7e.tailscale.com", - "IPv4": "172.238.6.180", - "IPv6": "2600:3c18::2000:60ff:fe0f:6e83", - "STUNOnly": true, - "CanPort80": true - } - ] - }, - "8": { - "RegionID": 8, - "RegionCode": "lhr", - "RegionName": "London", - "Latitude": 51.5072, - "Longitude": 0.1276, - "Nodes": [ - { - "Name": "8f", - "RegionID": 8, - "HostName": "derp8f.tailscale.com", - "IPv4": "176.58.88.183", - "IPv6": "2a00:dd80:3a::dfa", - "CanPort80": true - }, - { - "Name": "8g", - "RegionID": 8, - "HostName": "derp8g.tailscale.com", - "IPv4": "176.58.92.254", - "IPv6": "2a00:dd80:3a::ed", - "CanPort80": true - }, - { - "Name": "8e", - "RegionID": 8, - "HostName": "derp8e.tailscale.com", - "IPv4": "176.58.92.144", - "IPv6": "2a00:dd80:3a::b33", - "CanPort80": true - } - ] - }, - "9": { - "RegionID": 9, - "RegionCode": "dfw", - "RegionName": "Dallas", - "Latitude": 32.779167, - "Longitude": -96.808889, - "Nodes": [ - { - "Name": "9e", - "RegionID": 9, - "HostName": "derp9e.tailscale.com", - "IPv4": "192.73.248.83", - "IPv6": "2607:f740:100::359", - "CanPort80": true - }, - { - "Name": "9f", - "RegionID": 9, - "HostName": "derp9f.tailscale.com", - "IPv4": "209.177.156.197", - "IPv6": "2607:f740:100::cad", - "CanPort80": true - }, - { - "Name": "9d", - "RegionID": 9, - "HostName": "derp9d.tailscale.com", - "IPv4": "209.177.156.94", - "IPv6": "2607:f740:100::c05", - "CanPort80": true - } - ] - } - } - }, - "DisplayMessages": null, - "TKAEnabled": false, - "TKAHead": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", - "Domain": "kratail2tid@passkey", - "DomainAuditLogID": "", - "UserProfiles": { - "1008089393782498": { - "ID": 1008089393782498, - "LoginName": "group-b-client.tail78f774.ts.net", - "DisplayName": "group-b-client" - } - } + "PacketFilterRules": null } }, "multi-exit-router": { - "commands": { - "packet_filter_rules": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/multi-exit-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/multi-exit-router/tailscaled.sock debug localapi POST debug-packet-filter-matches" - }, "packet_filter_rules": null, - "packet_filter_matches": [], - "whois": { - "100.124.195.93": { - "peer_name": "exit-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/multi-exit-router/tailscaled.sock whois --json 100.124.195.93", - "response": null - }, - "100.116.18.24": { - "peer_name": "exit-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/multi-exit-router/tailscaled.sock whois --json 100.116.18.24", - "response": null - }, - "100.85.66.106": { - "peer_name": "exit-node", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/multi-exit-router/tailscaled.sock whois --json 100.85.66.106", - "response": null - }, - "100.107.162.14": { - "peer_name": "group-a-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/multi-exit-router/tailscaled.sock whois --json 100.107.162.14", - "response": null - }, - "100.77.135.18": { - "peer_name": "group-b-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/multi-exit-router/tailscaled.sock whois --json 100.77.135.18", - "response": null - }, - "100.109.43.124": { - "peer_name": "router-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/multi-exit-router/tailscaled.sock whois --json 100.109.43.124", - "response": null - }, - "100.65.172.123": { - "peer_name": "router-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/multi-exit-router/tailscaled.sock whois --json 100.65.172.123", - "response": null - }, - "100.92.142.61": { - "peer_name": "subnet-router", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/multi-exit-router/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/multi-exit-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/multi-exit-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/multi-exit-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/multi-exit-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/multi-exit-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/multi-exit-router/tailscaled.sock whois --json 100.90.199.68", - "response": null - } - }, "netmap": { - "SelfNode": { - "ID": 6294409699640722, - "StableID": "nMQuxDUk9r11CNTRL", - "Name": "multi-exit-router.tail78f774.ts.net.", - "User": 6294409699640722, - "Key": "nodekey:b854a0d64eba757cd3215c5bd78149cc0f927e35a2ad20342e88a15ead297f6a", - "DiscoKey": "discokey:762c82dd308809f511c6ac86dcc2642585837358fdd24958d55f16883c8e6c58", - "Addresses": ["100.105.127.107/32", "fd7a:115c:a1e0::ad37:7f6b/128"], - "AllowedIPs": ["100.105.127.107/32", "fd7a:115c:a1e0::ad37:7f6b/128", "10.33.0.0/16"], - "Endpoints": ["77.164.248.136:50766", "10.65.0.27:50766", "172.17.0.1:50766"], - "Hostinfo": { - "Hostname": "multi-exit-router", - "RoutableIPs": ["0.0.0.0/0", "::/0", "10.33.0.0/16"], - "RequestTags": ["tag:exit", "tag:router"], - "Services": [ - { "Proto": "peerapi4", "Port": 62548 }, - { "Proto": "peerapi6", "Port": 62548 }, - { "Proto": "peerapi-dns-proxy", "Port": 1 } - ] - }, - "Created": "2026-03-28T10:38:19.117098852Z", - "Tags": ["tag:exit", "tag:router"], - "PrimaryRoutes": ["10.33.0.0/16"], - "MachineAuthorized": true, - "CapMap": { - "https://tailscale.com/cap/file-sharing": null, - "https://tailscale.com/cap/is-owner": null, - "https://tailscale.com/cap/ssh": null, - "https://tailscale.com/cap/tailnet-lock": null, - "probe-udp-lifetime": null, - "ssh-behavior-v1": null, - "ssh-env-vars": null, - "store-appc-routes": null, - "tailnet-display-name": ["kratail2tid@passkey"] - }, - "ComputedName": "multi-exit-router", - "ComputedNameWithHost": "multi-exit-router" - }, - "AllCaps": [ - "ssh-behavior-v1", - "https://tailscale.com/cap/is-owner", - "https://tailscale.com/cap/tailnet-lock", - "ssh-env-vars", - "probe-udp-lifetime", - "tailnet-display-name", - "https://tailscale.com/cap/file-sharing", - "store-appc-routes", - "https://tailscale.com/cap/ssh" - ], - "NodeKey": "nodekey:b854a0d64eba757cd3215c5bd78149cc0f927e35a2ad20342e88a15ead297f6a", - "MachineKey": "mkey:91bee804809f30d07bfc29cf556844288fc3d45e0572469a3cb0799a535fda7d", "Peers": [], - "DNS": { - "Routes": { - "tail78f774.ts.net.": null, - "ts.net.": [{ "Addr": "199.247.155.53" }, { "Addr": "2620:111:8007::53" }] - }, - "Domains": ["tail78f774.ts.net"], - "Proxied": true, - "ExitNodeFilteredSet": [".ts.net", ".tailscale.net"] - }, - "PacketFilter": [], - "PacketFilterRules": null, - "SSHPolicy": { "rules": [] }, - "CollectServices": false, - "DERPMap": { - "Regions": { - "1": { - "RegionID": 1, - "RegionCode": "nyc", - "RegionName": "New York City", - "Latitude": 40.7128, - "Longitude": -74.006, - "Nodes": [ - { - "Name": "1h", - "RegionID": 1, - "HostName": "derp1h.tailscale.com", - "IPv4": "199.38.181.93", - "IPv6": "2607:f740:f::afd", - "CanPort80": true - }, - { - "Name": "1g", - "RegionID": 1, - "HostName": "derp1g.tailscale.com", - "IPv4": "209.177.145.120", - "IPv6": "2607:f740:f::3eb", - "CanPort80": true - }, - { - "Name": "1i", - "RegionID": 1, - "HostName": "derp1i.tailscale.com", - "IPv4": "199.38.181.103", - "IPv6": "2607:f740:f::e19", - "CanPort80": true - }, - { - "Name": "1f", - "RegionID": 1, - "HostName": "derp1f.tailscale.com", - "IPv4": "199.38.181.104", - "IPv6": "2607:f740:f::bc", - "CanPort80": true - } - ] - }, - "10": { - "RegionID": 10, - "RegionCode": "sea", - "RegionName": "Seattle", - "Latitude": 47.609722, - "Longitude": -122.333056, - "Nodes": [ - { - "Name": "10c", - "RegionID": 10, - "HostName": "derp10c.tailscale.com", - "IPv4": "192.73.240.121", - "IPv6": "2607:f740:14::40c", - "CanPort80": true - }, - { - "Name": "10d", - "RegionID": 10, - "HostName": "derp10d.tailscale.com", - "IPv4": "192.73.240.132", - "IPv6": "2607:f740:14::500", - "CanPort80": true - }, - { - "Name": "10b", - "RegionID": 10, - "HostName": "derp10b.tailscale.com", - "IPv4": "192.73.240.161", - "IPv6": "2607:f740:14::61c", - "CanPort80": true - } - ] - }, - "11": { - "RegionID": 11, - "RegionCode": "sao", - "RegionName": "São Paulo", - "Latitude": -23.55, - "Longitude": -46.633333, - "Nodes": [ - { - "Name": "11f", - "RegionID": 11, - "HostName": "derp11f.tailscale.com", - "IPv4": "172.237.61.197", - "IPv6": "2600:3c0d::2000:3bff:fe44:6166", - "CanPort80": true - }, - { - "Name": "11g", - "RegionID": 11, - "HostName": "derp11g.tailscale.com", - "IPv4": "172.237.61.190", - "IPv6": "2600:3c0d::2000:62ff:febe:2e67", - "CanPort80": true - }, - { - "Name": "11e", - "RegionID": 11, - "HostName": "derp11e.tailscale.com", - "IPv4": "172.237.61.194", - "IPv6": "2600:3c0d::2000:d2ff:fe43:1790", - "CanPort80": true - } - ] - }, - "12": { - "RegionID": 12, - "RegionCode": "ord", - "RegionName": "Chicago", - "Latitude": 41.881944, - "Longitude": -87.627778, - "Nodes": [ - { - "Name": "12e", - "RegionID": 12, - "HostName": "derp12e.tailscale.com", - "IPv4": "209.177.158.15", - "IPv6": "2607:f740:e::b17", - "CanPort80": true - }, - { - "Name": "12f", - "RegionID": 12, - "HostName": "derp12f.tailscale.com", - "IPv4": "199.38.182.118", - "IPv6": "2607:f740:e::4c8", - "CanPort80": true - }, - { - "Name": "12d", - "RegionID": 12, - "HostName": "derp12d.tailscale.com", - "IPv4": "209.177.158.246", - "IPv6": "2607:f740:e::811", - "CanPort80": true - } - ] - }, - "13": { - "RegionID": 13, - "RegionCode": "den", - "RegionName": "Denver", - "Latitude": 39.7392, - "Longitude": -104.9849, - "Nodes": [ - { - "Name": "13c", - "RegionID": 13, - "HostName": "derp13c.tailscale.com", - "IPv4": "192.73.242.28", - "IPv6": "2607:f740:16::5c", - "CanPort80": true - }, - { - "Name": "13d", - "RegionID": 13, - "HostName": "derp13d.tailscale.com", - "IPv4": "192.73.242.204", - "IPv6": "2607:f740:16::c23", - "CanPort80": true - }, - { - "Name": "13b", - "RegionID": 13, - "HostName": "derp13b.tailscale.com", - "IPv4": "192.73.242.187", - "IPv6": "2607:f740:16::640", - "CanPort80": true - } - ] - }, - "14": { - "RegionID": 14, - "RegionCode": "ams", - "RegionName": "Amsterdam", - "Latitude": 52.372778, - "Longitude": 4.893611, - "Nodes": [ - { - "Name": "14c", - "RegionID": 14, - "HostName": "derp14c.tailscale.com", - "IPv4": "176.58.93.147", - "IPv6": "2a00:dd80:3c::b09", - "CanPort80": true - }, - { - "Name": "14d", - "RegionID": 14, - "HostName": "derp14d.tailscale.com", - "IPv4": "176.58.93.154", - "IPv6": "2a00:dd80:3c::3d5", - "CanPort80": true - }, - { - "Name": "14b", - "RegionID": 14, - "HostName": "derp14b.tailscale.com", - "IPv4": "176.58.93.248", - "IPv6": "2a00:dd80:3c::807", - "CanPort80": true - } - ] - }, - "15": { - "RegionID": 15, - "RegionCode": "jnb", - "RegionName": "Johannesburg", - "Latitude": -26.204444, - "Longitude": 28.045556, - "Nodes": [ - { - "Name": "15c", - "RegionID": 15, - "HostName": "derp15c.tailscale.com", - "IPv4": "102.67.165.185", - "IPv6": "2c0f:edb0:0:10::b59", - "CanPort80": true - }, - { - "Name": "15d", - "RegionID": 15, - "HostName": "derp15d.tailscale.com", - "IPv4": "102.67.165.36", - "IPv6": "2c0f:edb0:0:10::599", - "CanPort80": true - }, - { - "Name": "15b", - "RegionID": 15, - "HostName": "derp15b.tailscale.com", - "IPv4": "102.67.165.90", - "IPv6": "2c0f:edb0:0:10::963", - "CanPort80": true - } - ] - }, - "16": { - "RegionID": 16, - "RegionCode": "mia", - "RegionName": "Miami", - "Latitude": 25.78, - "Longitude": -80.21, - "Nodes": [ - { - "Name": "16c", - "RegionID": 16, - "HostName": "derp16c.tailscale.com", - "IPv4": "192.73.243.229", - "IPv6": "2607:f740:17::4e4", - "CanPort80": true - }, - { - "Name": "16d", - "RegionID": 16, - "HostName": "derp16d.tailscale.com", - "IPv4": "192.73.243.141", - "IPv6": "2607:f740:17::475", - "CanPort80": true - }, - { - "Name": "16b", - "RegionID": 16, - "HostName": "derp16b.tailscale.com", - "IPv4": "192.73.243.135", - "IPv6": "2607:f740:17::476", - "CanPort80": true - } - ] - }, - "17": { - "RegionID": 17, - "RegionCode": "lax", - "RegionName": "Los Angeles", - "Latitude": 34.05, - "Longitude": -118.25, - "Nodes": [ - { - "Name": "17c", - "RegionID": 17, - "HostName": "derp17c.tailscale.com", - "IPv4": "208.111.40.12", - "IPv6": "2607:f740:c::10", - "CanPort80": true - }, - { - "Name": "17d", - "RegionID": 17, - "HostName": "derp17d.tailscale.com", - "IPv4": "208.111.40.216", - "IPv6": "2607:f740:c::e1b", - "CanPort80": true - }, - { - "Name": "17b", - "RegionID": 17, - "HostName": "derp17b.tailscale.com", - "IPv4": "192.73.244.245", - "IPv6": "2607:f740:c::646", - "CanPort80": true - } - ] - }, - "18": { - "RegionID": 18, - "RegionCode": "par", - "RegionName": "Paris", - "Latitude": 48.856667, - "Longitude": 2.352222, - "Nodes": [ - { - "Name": "18c", - "RegionID": 18, - "HostName": "derp18c.tailscale.com", - "IPv4": "176.58.90.207", - "IPv6": "2a00:dd80:3e::c19", - "CanPort80": true - }, - { - "Name": "18d", - "RegionID": 18, - "HostName": "derp18d.tailscale.com", - "IPv4": "176.58.90.104", - "IPv6": "2a00:dd80:3e::f2e", - "CanPort80": true - }, - { - "Name": "18b", - "RegionID": 18, - "HostName": "derp18b.tailscale.com", - "IPv4": "176.58.90.147", - "IPv6": "2a00:dd80:3e::363", - "CanPort80": true - } - ] - }, - "19": { - "RegionID": 19, - "RegionCode": "mad", - "RegionName": "Madrid", - "Latitude": 40.416944, - "Longitude": -3.703333, - "Nodes": [ - { - "Name": "19c", - "RegionID": 19, - "HostName": "derp19c.tailscale.com", - "IPv4": "45.159.97.61", - "IPv6": "2a00:dd80:14:10::20", - "CanPort80": true - }, - { - "Name": "19d", - "RegionID": 19, - "HostName": "derp19d.tailscale.com", - "IPv4": "45.159.97.233", - "IPv6": "2a00:dd80:14:10::34a", - "CanPort80": true - }, - { - "Name": "19b", - "RegionID": 19, - "HostName": "derp19b.tailscale.com", - "IPv4": "45.159.97.144", - "IPv6": "2a00:dd80:14:10::335", - "CanPort80": true - } - ] - }, - "2": { - "RegionID": 2, - "RegionCode": "sfo", - "RegionName": "San Francisco", - "Latitude": 37.7775, - "Longitude": -122.416389, - "Nodes": [ - { - "Name": "2e", - "RegionID": 2, - "HostName": "derp2e.tailscale.com", - "IPv4": "192.73.252.134", - "IPv6": "2607:f740:0:3f::44c", - "CanPort80": true - }, - { - "Name": "2f", - "RegionID": 2, - "HostName": "derp2f.tailscale.com", - "IPv4": "208.111.34.178", - "IPv6": "2607:f740:0:3f::f4", - "CanPort80": true - }, - { - "Name": "2d", - "RegionID": 2, - "HostName": "derp2d.tailscale.com", - "IPv4": "192.73.252.65", - "IPv6": "2607:f740:0:3f::287", - "CanPort80": true - } - ] - }, - "20": { - "RegionID": 20, - "RegionCode": "hkg", - "RegionName": "Hong Kong", - "Latitude": 22.3193, - "Longitude": 114.1694, - "Nodes": [ - { - "Name": "20c", - "RegionID": 20, - "HostName": "derp20c.tailscale.com", - "IPv4": "205.147.105.30", - "IPv6": "2403:2500:8000:1::5fb", - "CanPort80": true - }, - { - "Name": "20d", - "RegionID": 20, - "HostName": "derp20d.tailscale.com", - "IPv4": "205.147.105.78", - "IPv6": "2403:2500:8000:1::e9a", - "CanPort80": true - }, - { - "Name": "20b", - "RegionID": 20, - "HostName": "derp20b.tailscale.com", - "IPv4": "103.6.84.152", - "IPv6": "2403:2500:8000:1::ef6", - "CanPort80": true - } - ] - }, - "21": { - "RegionID": 21, - "RegionCode": "tor", - "RegionName": "Toronto", - "Latitude": 43.741667, - "Longitude": -79.373333, - "Nodes": [ - { - "Name": "21c", - "RegionID": 21, - "HostName": "derp21c.tailscale.com", - "IPv4": "162.248.221.215", - "IPv6": "2607:f740:50::f10", - "CanPort80": true - }, - { - "Name": "21d", - "RegionID": 21, - "HostName": "derp21d.tailscale.com", - "IPv4": "162.248.221.248", - "IPv6": "2607:f740:50::ca4", - "CanPort80": true - }, - { - "Name": "21b", - "RegionID": 21, - "HostName": "derp21b.tailscale.com", - "IPv4": "162.248.221.199", - "IPv6": "2607:f740:50::1d1", - "CanPort80": true - } - ] - }, - "22": { - "RegionID": 22, - "RegionCode": "waw", - "RegionName": "Warsaw", - "Latitude": 52.23, - "Longitude": 21.011111, - "Nodes": [ - { - "Name": "22c", - "RegionID": 22, - "HostName": "derp22c.tailscale.com", - "IPv4": "45.159.98.253", - "IPv6": "2a00:dd80:40:100::3f", - "CanPort80": true - }, - { - "Name": "22d", - "RegionID": 22, - "HostName": "derp22d.tailscale.com", - "IPv4": "45.159.98.145", - "IPv6": "2a00:dd80:40:100::211", - "CanPort80": true - }, - { - "Name": "22b", - "RegionID": 22, - "HostName": "derp22b.tailscale.com", - "IPv4": "45.159.98.196", - "IPv6": "2a00:dd80:40:100::316", - "CanPort80": true - } - ] - }, - "23": { - "RegionID": 23, - "RegionCode": "dbi", - "RegionName": "Dubai", - "Latitude": 25.263056, - "Longitude": 55.297222, - "Nodes": [ - { - "Name": "23c", - "RegionID": 23, - "HostName": "derp23c.tailscale.com", - "IPv4": "185.34.3.207", - "IPv6": "2a00:dd80:3f:100::a50", - "CanPort80": true - }, - { - "Name": "23d", - "RegionID": 23, - "HostName": "derp23d.tailscale.com", - "IPv4": "185.34.3.75", - "IPv6": "2a00:dd80:3f:100::97e", - "CanPort80": true - }, - { - "Name": "23b", - "RegionID": 23, - "HostName": "derp23b.tailscale.com", - "IPv4": "185.34.3.232", - "IPv6": "2a00:dd80:3f:100::76f", - "CanPort80": true - } - ] - }, - "24": { - "RegionID": 24, - "RegionCode": "hnl", - "RegionName": "Honolulu", - "Latitude": 21.306944, - "Longitude": -157.858333, - "Nodes": [ - { - "Name": "24c", - "RegionID": 24, - "HostName": "derp24c.tailscale.com", - "IPv4": "208.83.233.233", - "IPv6": "2001:19f0:c000:c591:5400:04ff:fe26:2c5f", - "CanPort80": true - }, - { - "Name": "24d", - "RegionID": 24, - "HostName": "derp24d.tailscale.com", - "IPv4": "208.72.155.133", - "IPv6": "2001:19f0:c000:c564:5400:04ff:fe26:2ba8", - "CanPort80": true - }, - { - "Name": "24b", - "RegionID": 24, - "HostName": "derp24b.tailscale.com", - "IPv4": "208.83.234.151", - "IPv6": "2001:19f0:c000:c586:5400:04ff:fe26:2ba6", - "CanPort80": true - } - ] - }, - "25": { - "RegionID": 25, - "RegionCode": "nai", - "RegionName": "Nairobi", - "Latitude": -1.286389, - "Longitude": 36.817222, - "Nodes": [ - { - "Name": "25c", - "RegionID": 25, - "HostName": "derp25c.tailscale.com", - "IPv4": "102.67.167.37", - "IPv6": "2c0f:edb0:2000:1::2c7", - "CanPort80": true - }, - { - "Name": "25d", - "RegionID": 25, - "HostName": "derp25d.tailscale.com", - "IPv4": "102.67.167.188", - "IPv6": "2c0f:edb0:2000:1::188", - "CanPort80": true - }, - { - "Name": "25b", - "RegionID": 25, - "HostName": "derp25b.tailscale.com", - "IPv4": "102.67.167.245", - "IPv6": "2c0f:edb0:2000:1::2e9", - "CanPort80": true - } - ] - }, - "26": { - "RegionID": 26, - "RegionCode": "nue", - "RegionName": "Nuremberg", - "Latitude": 49.453889, - "Longitude": 11.0775, - "Nodes": [ - { - "Name": "26c", - "RegionID": 26, - "HostName": "derp26c.tailscale.com", - "IPv4": "49.12.193.137", - "IPv6": "2a01:4f8:1c1c:5c70::1", - "CanPort80": true - }, - { - "Name": "26d", - "RegionID": 26, - "HostName": "derp26d.tailscale.com", - "IPv4": "49.13.204.141", - "IPv6": "2a01:4f8:1c0c:7d06::1", - "CanPort80": true - }, - { - "Name": "26b", - "RegionID": 26, - "HostName": "derp26b.tailscale.com", - "IPv4": "167.235.72.200", - "IPv6": "2a01:4f8:1c1c:47b6::1", - "CanPort80": true - } - ] - }, - "27": { - "RegionID": 27, - "RegionCode": "iad", - "RegionName": "Ashburn", - "Latitude": 39.03, - "Longitude": -77.471111, - "Nodes": [ - { - "Name": "27d", - "RegionID": 27, - "HostName": "derp27d.tailscale.com", - "IPv4": "178.156.152.106", - "IPv6": "2a01:4ff:f0:3c8e::1", - "CanPort80": true - }, - { - "Name": "27c", - "RegionID": 27, - "HostName": "derp27c.tailscale.com", - "IPv4": "178.156.152.91", - "IPv6": "2a01:4ff:f0:3913::1", - "CanPort80": true - }, - { - "Name": "27e", - "RegionID": 27, - "HostName": "derp27e.tailscale.com", - "IPv4": "178.156.134.232", - "IPv6": "2a01:4ff:f0:28d4::1", - "CanPort80": true - }, - { - "Name": "27b", - "RegionID": 27, - "HostName": "derp27b.tailscale.com", - "IPv4": "5.161.218.233", - "IPv6": "2a01:4ff:f0:3db9::1", - "CanPort80": true - } - ] - }, - "28": { - "RegionID": 28, - "RegionCode": "hel", - "RegionName": "Helsinki", - "Latitude": 60.170833, - "Longitude": 24.9375, - "Nodes": [ - { - "Name": "28c", - "RegionID": 28, - "HostName": "derp28c.tailscale.com", - "IPv4": "95.217.2.165", - "IPv6": "2a01:4f9:c012:cd74::1", - "CanPort80": true - }, - { - "Name": "28d", - "RegionID": 28, - "HostName": "derp28d.tailscale.com", - "IPv4": "157.180.28.32", - "IPv6": "2a01:4f9:c012:2e5b::1", - "CanPort80": true - }, - { - "Name": "28b", - "RegionID": 28, - "HostName": "derp28b.tailscale.com", - "IPv4": "65.109.143.62", - "IPv6": "2a01:4f9:c012:d55c::1", - "CanPort80": true - } - ] - }, - "3": { - "RegionID": 3, - "RegionCode": "sin", - "RegionName": "Singapore", - "Latitude": 1.3521, - "Longitude": 103.8198, - "Nodes": [ - { - "Name": "3g", - "RegionID": 3, - "HostName": "derp3g.tailscale.com", - "IPv4": "172.237.72.79", - "IPv6": "2600:3c15::2000:adff:fe08:6fab", - "CanPort80": true - }, - { - "Name": "3f", - "RegionID": 3, - "HostName": "derp3f.tailscale.com", - "IPv4": "172.237.72.8", - "IPv6": "2600:3c15::2000:53ff:fe48:a668", - "CanPort80": true - }, - { - "Name": "3h", - "RegionID": 3, - "HostName": "derp3h.tailscale.com", - "IPv4": "172.237.66.30", - "IPv6": "2600:3c15::2000:3dff:fe44:50aa", - "CanPort80": true - }, - { - "Name": "3e", - "RegionID": 3, - "HostName": "derp3e.tailscale.com", - "IPv4": "172.237.72.43", - "IPv6": "2600:3c15::2000:6cff:fee4:d799", - "CanPort80": true - } - ] - }, - "4": { - "RegionID": 4, - "RegionCode": "fra", - "RegionName": "Frankfurt", - "Latitude": 50.1109, - "Longitude": 8.6821, - "Nodes": [ - { - "Name": "4h", - "RegionID": 4, - "HostName": "derp4h.tailscale.com", - "IPv4": "185.40.234.77", - "IPv6": "2a00:dd80:20::bcf", - "CanPort80": true - }, - { - "Name": "4g", - "RegionID": 4, - "HostName": "derp4g.tailscale.com", - "IPv4": "185.40.234.113", - "IPv6": "2a00:dd80:20::8f", - "CanPort80": true - }, - { - "Name": "4i", - "RegionID": 4, - "HostName": "derp4i.tailscale.com", - "IPv4": "185.40.234.53", - "IPv6": "2a00:dd80:20::8a6", - "CanPort80": true - }, - { - "Name": "4f", - "RegionID": 4, - "HostName": "derp4f.tailscale.com", - "IPv4": "185.40.234.219", - "IPv6": "2a00:dd80:20::a25", - "CanPort80": true - } - ] - }, - "5": { - "RegionID": 5, - "RegionCode": "syd", - "RegionName": "Sydney", - "Latitude": -33.867778, - "Longitude": 151.21, - "Nodes": [ - { - "Name": "5f", - "RegionID": 5, - "HostName": "derp5f.tailscale.com", - "IPv4": "172.105.166.103", - "IPv6": "2400:8907::2000:ccff:fe1f:80da", - "CanPort80": true - }, - { - "Name": "5g", - "RegionID": 5, - "HostName": "derp5g.tailscale.com", - "IPv4": "172.105.169.57", - "IPv6": "2400:8907::2000:2fff:fea7:57f4", - "CanPort80": true - }, - { - "Name": "5e", - "RegionID": 5, - "HostName": "derp5e.tailscale.com", - "IPv4": "172.105.179.230", - "IPv6": "2400:8907::2000:ceff:fe8d:4f4e", - "CanPort80": true - } - ] - }, - "6": { - "RegionID": 6, - "RegionCode": "blr", - "RegionName": "Bengaluru", - "Latitude": 12.9716, - "Longitude": 77.5946, - "Nodes": [ - { - "Name": "6a", - "RegionID": 6, - "HostName": "derp6.tailscale.com", - "IPv4": "68.183.90.120", - "IPv6": "2400:6180:100:d0::982:d001", - "CanPort80": true - } - ] - }, - "7": { - "RegionID": 7, - "RegionCode": "tok", - "RegionName": "Tokyo", - "Latitude": 35.6764, - "Longitude": 139.65, - "Nodes": [ - { - "Name": "7g", - "RegionID": 7, - "HostName": "derp7g.tailscale.com", - "IPv4": "172.238.6.179", - "IPv6": "2600:3c18::2000:3fff:fe80:3ebd", - "CanPort80": true - }, - { - "Name": "7f", - "RegionID": 7, - "HostName": "derp7f.tailscale.com", - "IPv4": "172.238.6.34", - "IPv6": "2600:3c18::2000:acff:fe8e:3ed5", - "CanPort80": true - }, - { - "Name": "7h", - "RegionID": 7, - "HostName": "derp7h.tailscale.com", - "IPv4": "172.237.28.183", - "IPv6": "2600:3c18::2000:b1ff:fea9:4560", - "CanPort80": true - }, - { - "Name": "7e", - "RegionID": 7, - "HostName": "derp7e.tailscale.com", - "IPv4": "172.238.6.180", - "IPv6": "2600:3c18::2000:60ff:fe0f:6e83", - "STUNOnly": true, - "CanPort80": true - } - ] - }, - "8": { - "RegionID": 8, - "RegionCode": "lhr", - "RegionName": "London", - "Latitude": 51.5072, - "Longitude": 0.1276, - "Nodes": [ - { - "Name": "8f", - "RegionID": 8, - "HostName": "derp8f.tailscale.com", - "IPv4": "176.58.88.183", - "IPv6": "2a00:dd80:3a::dfa", - "CanPort80": true - }, - { - "Name": "8g", - "RegionID": 8, - "HostName": "derp8g.tailscale.com", - "IPv4": "176.58.92.254", - "IPv6": "2a00:dd80:3a::ed", - "CanPort80": true - }, - { - "Name": "8e", - "RegionID": 8, - "HostName": "derp8e.tailscale.com", - "IPv4": "176.58.92.144", - "IPv6": "2a00:dd80:3a::b33", - "CanPort80": true - } - ] - }, - "9": { - "RegionID": 9, - "RegionCode": "dfw", - "RegionName": "Dallas", - "Latitude": 32.779167, - "Longitude": -96.808889, - "Nodes": [ - { - "Name": "9e", - "RegionID": 9, - "HostName": "derp9e.tailscale.com", - "IPv4": "192.73.248.83", - "IPv6": "2607:f740:100::359", - "CanPort80": true - }, - { - "Name": "9f", - "RegionID": 9, - "HostName": "derp9f.tailscale.com", - "IPv4": "209.177.156.197", - "IPv6": "2607:f740:100::cad", - "CanPort80": true - }, - { - "Name": "9d", - "RegionID": 9, - "HostName": "derp9d.tailscale.com", - "IPv4": "209.177.156.94", - "IPv6": "2607:f740:100::c05", - "CanPort80": true - } - ] - } - } - }, - "DisplayMessages": null, - "TKAEnabled": false, - "TKAHead": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", - "Domain": "kratail2tid@passkey", - "DomainAuditLogID": "", - "UserProfiles": { - "6294409699640722": { - "ID": 6294409699640722, - "LoginName": "multi-exit-router.tail78f774.ts.net", - "DisplayName": "multi-exit-router" - } - } + "PacketFilterRules": null } }, "router-a": { - "commands": { - "packet_filter_rules": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/router-a/tailscaled.sock debug localapi POST debug-packet-filter-rules", - "packet_filter_matches": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/router-a/tailscaled.sock debug localapi POST debug-packet-filter-matches" - }, "packet_filter_rules": null, - "packet_filter_matches": [], - "whois": { - "100.124.195.93": { - "peer_name": "exit-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/router-a/tailscaled.sock whois --json 100.124.195.93", - "response": null - }, - "100.116.18.24": { - "peer_name": "exit-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/router-a/tailscaled.sock whois --json 100.116.18.24", - "response": null - }, - "100.85.66.106": { - "peer_name": "exit-node", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/router-a/tailscaled.sock whois --json 100.85.66.106", - "response": null - }, - "100.107.162.14": { - "peer_name": "group-a-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/router-a/tailscaled.sock whois --json 100.107.162.14", - "response": null - }, - "100.77.135.18": { - "peer_name": "group-b-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/router-a/tailscaled.sock whois --json 100.77.135.18", - "response": null - }, - "100.105.127.107": { - "peer_name": "multi-exit-router", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/router-a/tailscaled.sock whois --json 100.105.127.107", - "response": null - }, - "100.65.172.123": { - "peer_name": "router-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/router-a/tailscaled.sock whois --json 100.65.172.123", - "response": null - }, - "100.92.142.61": { - "peer_name": "subnet-router", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/router-a/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/router-a/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/router-a/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/router-a/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/router-a/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/router-a/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/router-a/tailscaled.sock whois --json 100.90.199.68", - "response": null - } - }, "netmap": { - "SelfNode": { - "ID": 50590507314324, - "StableID": "n3kktkvuP111CNTRL", - "Name": "router-a.tail78f774.ts.net.", - "User": 50590507314324, - "Key": "nodekey:b4566fef38b3b2b15684fc8890f5fbaea4525b467825f57a02801969a5ed2b7b", - "DiscoKey": "discokey:368ba711a8394633b4626eb7cd8e6a2df90d8e554505dc032ea9658ceee0f731", - "Addresses": ["100.109.43.124/32", "fd7a:115c:a1e0::a537:2b7c/128"], - "AllowedIPs": ["100.109.43.124/32", "fd7a:115c:a1e0::a537:2b7c/128", "10.44.0.0/16"], - "Endpoints": ["77.164.248.136:34130", "10.65.0.27:34130", "172.17.0.1:34130"], - "Hostinfo": { - "Hostname": "router-a", - "RoutableIPs": ["10.44.0.0/16"], - "RequestTags": ["tag:router-a"], - "Services": [ - { "Proto": "peerapi4", "Port": 49439 }, - { "Proto": "peerapi6", "Port": 49439 }, - { "Proto": "peerapi-dns-proxy", "Port": 1 } - ] - }, - "Created": "2026-03-28T10:38:11.734910312Z", - "Tags": ["tag:router-a"], - "PrimaryRoutes": ["10.44.0.0/16"], - "MachineAuthorized": true, - "CapMap": { - "https://tailscale.com/cap/file-sharing": null, - "https://tailscale.com/cap/is-owner": null, - "https://tailscale.com/cap/ssh": null, - "https://tailscale.com/cap/tailnet-lock": null, - "probe-udp-lifetime": null, - "ssh-behavior-v1": null, - "ssh-env-vars": null, - "store-appc-routes": null, - "tailnet-display-name": ["kratail2tid@passkey"] - }, - "ComputedName": "router-a", - "ComputedNameWithHost": "router-a" - }, - "AllCaps": [ - "tailnet-display-name", - "https://tailscale.com/cap/ssh", - "ssh-behavior-v1", - "https://tailscale.com/cap/tailnet-lock", - "https://tailscale.com/cap/file-sharing", - "https://tailscale.com/cap/is-owner", - "probe-udp-lifetime", - "ssh-env-vars", - "store-appc-routes" - ], - "NodeKey": "nodekey:b4566fef38b3b2b15684fc8890f5fbaea4525b467825f57a02801969a5ed2b7b", - "MachineKey": "mkey:868ba8a45654990c1c153c5ce33ef50ddd8d769841335e42decda4462d1dcf4e", "Peers": [], - "DNS": { - "Routes": { - "tail78f774.ts.net.": null, - "ts.net.": [{ "Addr": "199.247.155.53" }, { "Addr": "2620:111:8007::53" }] - }, - "Domains": ["tail78f774.ts.net"], - "Proxied": true, - "ExitNodeFilteredSet": [".ts.net", ".tailscale.net"] - }, - "PacketFilter": [], - "PacketFilterRules": null, - "SSHPolicy": { "rules": [] }, - "CollectServices": false, - "DERPMap": { - "Regions": { - "1": { - "RegionID": 1, - "RegionCode": "nyc", - "RegionName": "New York City", - "Latitude": 40.7128, - "Longitude": -74.006, - "Nodes": [ - { - "Name": "1h", - "RegionID": 1, - "HostName": "derp1h.tailscale.com", - "IPv4": "199.38.181.93", - "IPv6": "2607:f740:f::afd", - "CanPort80": true - }, - { - "Name": "1g", - "RegionID": 1, - "HostName": "derp1g.tailscale.com", - "IPv4": "209.177.145.120", - "IPv6": "2607:f740:f::3eb", - "CanPort80": true - }, - { - "Name": "1i", - "RegionID": 1, - "HostName": "derp1i.tailscale.com", - "IPv4": "199.38.181.103", - "IPv6": "2607:f740:f::e19", - "CanPort80": true - }, - { - "Name": "1f", - "RegionID": 1, - "HostName": "derp1f.tailscale.com", - "IPv4": "199.38.181.104", - "IPv6": "2607:f740:f::bc", - "CanPort80": true - } - ] - }, - "10": { - "RegionID": 10, - "RegionCode": "sea", - "RegionName": "Seattle", - "Latitude": 47.609722, - "Longitude": -122.333056, - "Nodes": [ - { - "Name": "10c", - "RegionID": 10, - "HostName": "derp10c.tailscale.com", - "IPv4": "192.73.240.121", - "IPv6": "2607:f740:14::40c", - "CanPort80": true - }, - { - "Name": "10d", - "RegionID": 10, - "HostName": "derp10d.tailscale.com", - "IPv4": "192.73.240.132", - "IPv6": "2607:f740:14::500", - "CanPort80": true - }, - { - "Name": "10b", - "RegionID": 10, - "HostName": "derp10b.tailscale.com", - "IPv4": "192.73.240.161", - "IPv6": "2607:f740:14::61c", - "CanPort80": true - } - ] - }, - "11": { - "RegionID": 11, - "RegionCode": "sao", - "RegionName": "São Paulo", - "Latitude": -23.55, - "Longitude": -46.633333, - "Nodes": [ - { - "Name": "11f", - "RegionID": 11, - "HostName": "derp11f.tailscale.com", - "IPv4": "172.237.61.197", - "IPv6": "2600:3c0d::2000:3bff:fe44:6166", - "CanPort80": true - }, - { - "Name": "11g", - "RegionID": 11, - "HostName": "derp11g.tailscale.com", - "IPv4": "172.237.61.190", - "IPv6": "2600:3c0d::2000:62ff:febe:2e67", - "CanPort80": true - }, - { - "Name": "11e", - "RegionID": 11, - "HostName": "derp11e.tailscale.com", - "IPv4": "172.237.61.194", - "IPv6": "2600:3c0d::2000:d2ff:fe43:1790", - "CanPort80": true - } - ] - }, - "12": { - "RegionID": 12, - "RegionCode": "ord", - "RegionName": "Chicago", - "Latitude": 41.881944, - "Longitude": -87.627778, - "Nodes": [ - { - "Name": "12e", - "RegionID": 12, - "HostName": "derp12e.tailscale.com", - "IPv4": "209.177.158.15", - "IPv6": "2607:f740:e::b17", - "CanPort80": true - }, - { - "Name": "12f", - "RegionID": 12, - "HostName": "derp12f.tailscale.com", - "IPv4": "199.38.182.118", - "IPv6": "2607:f740:e::4c8", - "CanPort80": true - }, - { - "Name": "12d", - "RegionID": 12, - "HostName": "derp12d.tailscale.com", - "IPv4": "209.177.158.246", - "IPv6": "2607:f740:e::811", - "CanPort80": true - } - ] - }, - "13": { - "RegionID": 13, - "RegionCode": "den", - "RegionName": "Denver", - "Latitude": 39.7392, - "Longitude": -104.9849, - "Nodes": [ - { - "Name": "13c", - "RegionID": 13, - "HostName": "derp13c.tailscale.com", - "IPv4": "192.73.242.28", - "IPv6": "2607:f740:16::5c", - "CanPort80": true - }, - { - "Name": "13d", - "RegionID": 13, - "HostName": "derp13d.tailscale.com", - "IPv4": "192.73.242.204", - "IPv6": "2607:f740:16::c23", - "CanPort80": true - }, - { - "Name": "13b", - "RegionID": 13, - "HostName": "derp13b.tailscale.com", - "IPv4": "192.73.242.187", - "IPv6": "2607:f740:16::640", - "CanPort80": true - } - ] - }, - "14": { - "RegionID": 14, - "RegionCode": "ams", - "RegionName": "Amsterdam", - "Latitude": 52.372778, - "Longitude": 4.893611, - "Nodes": [ - { - "Name": "14c", - "RegionID": 14, - "HostName": "derp14c.tailscale.com", - "IPv4": "176.58.93.147", - "IPv6": "2a00:dd80:3c::b09", - "CanPort80": true - }, - { - "Name": "14d", - "RegionID": 14, - "HostName": "derp14d.tailscale.com", - "IPv4": "176.58.93.154", - "IPv6": "2a00:dd80:3c::3d5", - "CanPort80": true - }, - { - "Name": "14b", - "RegionID": 14, - "HostName": "derp14b.tailscale.com", - "IPv4": "176.58.93.248", - "IPv6": "2a00:dd80:3c::807", - "CanPort80": true - } - ] - }, - "15": { - "RegionID": 15, - "RegionCode": "jnb", - "RegionName": "Johannesburg", - "Latitude": -26.204444, - "Longitude": 28.045556, - "Nodes": [ - { - "Name": "15c", - "RegionID": 15, - "HostName": "derp15c.tailscale.com", - "IPv4": "102.67.165.185", - "IPv6": "2c0f:edb0:0:10::b59", - "CanPort80": true - }, - { - "Name": "15d", - "RegionID": 15, - "HostName": "derp15d.tailscale.com", - "IPv4": "102.67.165.36", - "IPv6": "2c0f:edb0:0:10::599", - "CanPort80": true - }, - { - "Name": "15b", - "RegionID": 15, - "HostName": "derp15b.tailscale.com", - "IPv4": "102.67.165.90", - "IPv6": "2c0f:edb0:0:10::963", - "CanPort80": true - } - ] - }, - "16": { - "RegionID": 16, - "RegionCode": "mia", - "RegionName": "Miami", - "Latitude": 25.78, - "Longitude": -80.21, - "Nodes": [ - { - "Name": "16c", - "RegionID": 16, - "HostName": "derp16c.tailscale.com", - "IPv4": "192.73.243.229", - "IPv6": "2607:f740:17::4e4", - "CanPort80": true - }, - { - "Name": "16d", - "RegionID": 16, - "HostName": "derp16d.tailscale.com", - "IPv4": "192.73.243.141", - "IPv6": "2607:f740:17::475", - "CanPort80": true - }, - { - "Name": "16b", - "RegionID": 16, - "HostName": "derp16b.tailscale.com", - "IPv4": "192.73.243.135", - "IPv6": "2607:f740:17::476", - "CanPort80": true - } - ] - }, - "17": { - "RegionID": 17, - "RegionCode": "lax", - "RegionName": "Los Angeles", - "Latitude": 34.05, - "Longitude": -118.25, - "Nodes": [ - { - "Name": "17c", - "RegionID": 17, - "HostName": "derp17c.tailscale.com", - "IPv4": "208.111.40.12", - "IPv6": "2607:f740:c::10", - "CanPort80": true - }, - { - "Name": "17d", - "RegionID": 17, - "HostName": "derp17d.tailscale.com", - "IPv4": "208.111.40.216", - "IPv6": "2607:f740:c::e1b", - "CanPort80": true - }, - { - "Name": "17b", - "RegionID": 17, - "HostName": "derp17b.tailscale.com", - "IPv4": "192.73.244.245", - "IPv6": "2607:f740:c::646", - "CanPort80": true - } - ] - }, - "18": { - "RegionID": 18, - "RegionCode": "par", - "RegionName": "Paris", - "Latitude": 48.856667, - "Longitude": 2.352222, - "Nodes": [ - { - "Name": "18c", - "RegionID": 18, - "HostName": "derp18c.tailscale.com", - "IPv4": "176.58.90.207", - "IPv6": "2a00:dd80:3e::c19", - "CanPort80": true - }, - { - "Name": "18d", - "RegionID": 18, - "HostName": "derp18d.tailscale.com", - "IPv4": "176.58.90.104", - "IPv6": "2a00:dd80:3e::f2e", - "CanPort80": true - }, - { - "Name": "18b", - "RegionID": 18, - "HostName": "derp18b.tailscale.com", - "IPv4": "176.58.90.147", - "IPv6": "2a00:dd80:3e::363", - "CanPort80": true - } - ] - }, - "19": { - "RegionID": 19, - "RegionCode": "mad", - "RegionName": "Madrid", - "Latitude": 40.416944, - "Longitude": -3.703333, - "Nodes": [ - { - "Name": "19c", - "RegionID": 19, - "HostName": "derp19c.tailscale.com", - "IPv4": "45.159.97.61", - "IPv6": "2a00:dd80:14:10::20", - "CanPort80": true - }, - { - "Name": "19d", - "RegionID": 19, - "HostName": "derp19d.tailscale.com", - "IPv4": "45.159.97.233", - "IPv6": "2a00:dd80:14:10::34a", - "CanPort80": true - }, - { - "Name": "19b", - "RegionID": 19, - "HostName": "derp19b.tailscale.com", - "IPv4": "45.159.97.144", - "IPv6": "2a00:dd80:14:10::335", - "CanPort80": true - } - ] - }, - "2": { - "RegionID": 2, - "RegionCode": "sfo", - "RegionName": "San Francisco", - "Latitude": 37.7775, - "Longitude": -122.416389, - "Nodes": [ - { - "Name": "2e", - "RegionID": 2, - "HostName": "derp2e.tailscale.com", - "IPv4": "192.73.252.134", - "IPv6": "2607:f740:0:3f::44c", - "CanPort80": true - }, - { - "Name": "2f", - "RegionID": 2, - "HostName": "derp2f.tailscale.com", - "IPv4": "208.111.34.178", - "IPv6": "2607:f740:0:3f::f4", - "CanPort80": true - }, - { - "Name": "2d", - "RegionID": 2, - "HostName": "derp2d.tailscale.com", - "IPv4": "192.73.252.65", - "IPv6": "2607:f740:0:3f::287", - "CanPort80": true - } - ] - }, - "20": { - "RegionID": 20, - "RegionCode": "hkg", - "RegionName": "Hong Kong", - "Latitude": 22.3193, - "Longitude": 114.1694, - "Nodes": [ - { - "Name": "20c", - "RegionID": 20, - "HostName": "derp20c.tailscale.com", - "IPv4": "205.147.105.30", - "IPv6": "2403:2500:8000:1::5fb", - "CanPort80": true - }, - { - "Name": "20d", - "RegionID": 20, - "HostName": "derp20d.tailscale.com", - "IPv4": "205.147.105.78", - "IPv6": "2403:2500:8000:1::e9a", - "CanPort80": true - }, - { - "Name": "20b", - "RegionID": 20, - "HostName": "derp20b.tailscale.com", - "IPv4": "103.6.84.152", - "IPv6": "2403:2500:8000:1::ef6", - "CanPort80": true - } - ] - }, - "21": { - "RegionID": 21, - "RegionCode": "tor", - "RegionName": "Toronto", - "Latitude": 43.741667, - "Longitude": -79.373333, - "Nodes": [ - { - "Name": "21c", - "RegionID": 21, - "HostName": "derp21c.tailscale.com", - "IPv4": "162.248.221.215", - "IPv6": "2607:f740:50::f10", - "CanPort80": true - }, - { - "Name": "21d", - "RegionID": 21, - "HostName": "derp21d.tailscale.com", - "IPv4": "162.248.221.248", - "IPv6": "2607:f740:50::ca4", - "CanPort80": true - }, - { - "Name": "21b", - "RegionID": 21, - "HostName": "derp21b.tailscale.com", - "IPv4": "162.248.221.199", - "IPv6": "2607:f740:50::1d1", - "CanPort80": true - } - ] - }, - "22": { - "RegionID": 22, - "RegionCode": "waw", - "RegionName": "Warsaw", - "Latitude": 52.23, - "Longitude": 21.011111, - "Nodes": [ - { - "Name": "22c", - "RegionID": 22, - "HostName": "derp22c.tailscale.com", - "IPv4": "45.159.98.253", - "IPv6": "2a00:dd80:40:100::3f", - "CanPort80": true - }, - { - "Name": "22d", - "RegionID": 22, - "HostName": "derp22d.tailscale.com", - "IPv4": "45.159.98.145", - "IPv6": "2a00:dd80:40:100::211", - "CanPort80": true - }, - { - "Name": "22b", - "RegionID": 22, - "HostName": "derp22b.tailscale.com", - "IPv4": "45.159.98.196", - "IPv6": "2a00:dd80:40:100::316", - "CanPort80": true - } - ] - }, - "23": { - "RegionID": 23, - "RegionCode": "dbi", - "RegionName": "Dubai", - "Latitude": 25.263056, - "Longitude": 55.297222, - "Nodes": [ - { - "Name": "23c", - "RegionID": 23, - "HostName": "derp23c.tailscale.com", - "IPv4": "185.34.3.207", - "IPv6": "2a00:dd80:3f:100::a50", - "CanPort80": true - }, - { - "Name": "23d", - "RegionID": 23, - "HostName": "derp23d.tailscale.com", - "IPv4": "185.34.3.75", - "IPv6": "2a00:dd80:3f:100::97e", - "CanPort80": true - }, - { - "Name": "23b", - "RegionID": 23, - "HostName": "derp23b.tailscale.com", - "IPv4": "185.34.3.232", - "IPv6": "2a00:dd80:3f:100::76f", - "CanPort80": true - } - ] - }, - "24": { - "RegionID": 24, - "RegionCode": "hnl", - "RegionName": "Honolulu", - "Latitude": 21.306944, - "Longitude": -157.858333, - "Nodes": [ - { - "Name": "24c", - "RegionID": 24, - "HostName": "derp24c.tailscale.com", - "IPv4": "208.83.233.233", - "IPv6": "2001:19f0:c000:c591:5400:04ff:fe26:2c5f", - "CanPort80": true - }, - { - "Name": "24d", - "RegionID": 24, - "HostName": "derp24d.tailscale.com", - "IPv4": "208.72.155.133", - "IPv6": "2001:19f0:c000:c564:5400:04ff:fe26:2ba8", - "CanPort80": true - }, - { - "Name": "24b", - "RegionID": 24, - "HostName": "derp24b.tailscale.com", - "IPv4": "208.83.234.151", - "IPv6": "2001:19f0:c000:c586:5400:04ff:fe26:2ba6", - "CanPort80": true - } - ] - }, - "25": { - "RegionID": 25, - "RegionCode": "nai", - "RegionName": "Nairobi", - "Latitude": -1.286389, - "Longitude": 36.817222, - "Nodes": [ - { - "Name": "25c", - "RegionID": 25, - "HostName": "derp25c.tailscale.com", - "IPv4": "102.67.167.37", - "IPv6": "2c0f:edb0:2000:1::2c7", - "CanPort80": true - }, - { - "Name": "25d", - "RegionID": 25, - "HostName": "derp25d.tailscale.com", - "IPv4": "102.67.167.188", - "IPv6": "2c0f:edb0:2000:1::188", - "CanPort80": true - }, - { - "Name": "25b", - "RegionID": 25, - "HostName": "derp25b.tailscale.com", - "IPv4": "102.67.167.245", - "IPv6": "2c0f:edb0:2000:1::2e9", - "CanPort80": true - } - ] - }, - "26": { - "RegionID": 26, - "RegionCode": "nue", - "RegionName": "Nuremberg", - "Latitude": 49.453889, - "Longitude": 11.0775, - "Nodes": [ - { - "Name": "26c", - "RegionID": 26, - "HostName": "derp26c.tailscale.com", - "IPv4": "49.12.193.137", - "IPv6": "2a01:4f8:1c1c:5c70::1", - "CanPort80": true - }, - { - "Name": "26d", - "RegionID": 26, - "HostName": "derp26d.tailscale.com", - "IPv4": "49.13.204.141", - "IPv6": "2a01:4f8:1c0c:7d06::1", - "CanPort80": true - }, - { - "Name": "26b", - "RegionID": 26, - "HostName": "derp26b.tailscale.com", - "IPv4": "167.235.72.200", - "IPv6": "2a01:4f8:1c1c:47b6::1", - "CanPort80": true - } - ] - }, - "27": { - "RegionID": 27, - "RegionCode": "iad", - "RegionName": "Ashburn", - "Latitude": 39.03, - "Longitude": -77.471111, - "Nodes": [ - { - "Name": "27d", - "RegionID": 27, - "HostName": "derp27d.tailscale.com", - "IPv4": "178.156.152.106", - "IPv6": "2a01:4ff:f0:3c8e::1", - "CanPort80": true - }, - { - "Name": "27c", - "RegionID": 27, - "HostName": "derp27c.tailscale.com", - "IPv4": "178.156.152.91", - "IPv6": "2a01:4ff:f0:3913::1", - "CanPort80": true - }, - { - "Name": "27e", - "RegionID": 27, - "HostName": "derp27e.tailscale.com", - "IPv4": "178.156.134.232", - "IPv6": "2a01:4ff:f0:28d4::1", - "CanPort80": true - }, - { - "Name": "27b", - "RegionID": 27, - "HostName": "derp27b.tailscale.com", - "IPv4": "5.161.218.233", - "IPv6": "2a01:4ff:f0:3db9::1", - "CanPort80": true - } - ] - }, - "28": { - "RegionID": 28, - "RegionCode": "hel", - "RegionName": "Helsinki", - "Latitude": 60.170833, - "Longitude": 24.9375, - "Nodes": [ - { - "Name": "28c", - "RegionID": 28, - "HostName": "derp28c.tailscale.com", - "IPv4": "95.217.2.165", - "IPv6": "2a01:4f9:c012:cd74::1", - "CanPort80": true - }, - { - "Name": "28d", - "RegionID": 28, - "HostName": "derp28d.tailscale.com", - "IPv4": "157.180.28.32", - "IPv6": "2a01:4f9:c012:2e5b::1", - "CanPort80": true - }, - { - "Name": "28b", - "RegionID": 28, - "HostName": "derp28b.tailscale.com", - "IPv4": "65.109.143.62", - "IPv6": "2a01:4f9:c012:d55c::1", - "CanPort80": true - } - ] - }, - "3": { - "RegionID": 3, - "RegionCode": "sin", - "RegionName": "Singapore", - "Latitude": 1.3521, - "Longitude": 103.8198, - "Nodes": [ - { - "Name": "3g", - "RegionID": 3, - "HostName": "derp3g.tailscale.com", - "IPv4": "172.237.72.79", - "IPv6": "2600:3c15::2000:adff:fe08:6fab", - "CanPort80": true - }, - { - "Name": "3f", - "RegionID": 3, - "HostName": "derp3f.tailscale.com", - "IPv4": "172.237.72.8", - "IPv6": "2600:3c15::2000:53ff:fe48:a668", - "CanPort80": true - }, - { - "Name": "3h", - "RegionID": 3, - "HostName": "derp3h.tailscale.com", - "IPv4": "172.237.66.30", - "IPv6": "2600:3c15::2000:3dff:fe44:50aa", - "CanPort80": true - }, - { - "Name": "3e", - "RegionID": 3, - "HostName": "derp3e.tailscale.com", - "IPv4": "172.237.72.43", - "IPv6": "2600:3c15::2000:6cff:fee4:d799", - "CanPort80": true - } - ] - }, - "4": { - "RegionID": 4, - "RegionCode": "fra", - "RegionName": "Frankfurt", - "Latitude": 50.1109, - "Longitude": 8.6821, - "Nodes": [ - { - "Name": "4h", - "RegionID": 4, - "HostName": "derp4h.tailscale.com", - "IPv4": "185.40.234.77", - "IPv6": "2a00:dd80:20::bcf", - "CanPort80": true - }, - { - "Name": "4g", - "RegionID": 4, - "HostName": "derp4g.tailscale.com", - "IPv4": "185.40.234.113", - "IPv6": "2a00:dd80:20::8f", - "CanPort80": true - }, - { - "Name": "4i", - "RegionID": 4, - "HostName": "derp4i.tailscale.com", - "IPv4": "185.40.234.53", - "IPv6": "2a00:dd80:20::8a6", - "CanPort80": true - }, - { - "Name": "4f", - "RegionID": 4, - "HostName": "derp4f.tailscale.com", - "IPv4": "185.40.234.219", - "IPv6": "2a00:dd80:20::a25", - "CanPort80": true - } - ] - }, - "5": { - "RegionID": 5, - "RegionCode": "syd", - "RegionName": "Sydney", - "Latitude": -33.867778, - "Longitude": 151.21, - "Nodes": [ - { - "Name": "5f", - "RegionID": 5, - "HostName": "derp5f.tailscale.com", - "IPv4": "172.105.166.103", - "IPv6": "2400:8907::2000:ccff:fe1f:80da", - "CanPort80": true - }, - { - "Name": "5g", - "RegionID": 5, - "HostName": "derp5g.tailscale.com", - "IPv4": "172.105.169.57", - "IPv6": "2400:8907::2000:2fff:fea7:57f4", - "CanPort80": true - }, - { - "Name": "5e", - "RegionID": 5, - "HostName": "derp5e.tailscale.com", - "IPv4": "172.105.179.230", - "IPv6": "2400:8907::2000:ceff:fe8d:4f4e", - "CanPort80": true - } - ] - }, - "6": { - "RegionID": 6, - "RegionCode": "blr", - "RegionName": "Bengaluru", - "Latitude": 12.9716, - "Longitude": 77.5946, - "Nodes": [ - { - "Name": "6a", - "RegionID": 6, - "HostName": "derp6.tailscale.com", - "IPv4": "68.183.90.120", - "IPv6": "2400:6180:100:d0::982:d001", - "CanPort80": true - } - ] - }, - "7": { - "RegionID": 7, - "RegionCode": "tok", - "RegionName": "Tokyo", - "Latitude": 35.6764, - "Longitude": 139.65, - "Nodes": [ - { - "Name": "7g", - "RegionID": 7, - "HostName": "derp7g.tailscale.com", - "IPv4": "172.238.6.179", - "IPv6": "2600:3c18::2000:3fff:fe80:3ebd", - "CanPort80": true - }, - { - "Name": "7f", - "RegionID": 7, - "HostName": "derp7f.tailscale.com", - "IPv4": "172.238.6.34", - "IPv6": "2600:3c18::2000:acff:fe8e:3ed5", - "CanPort80": true - }, - { - "Name": "7h", - "RegionID": 7, - "HostName": "derp7h.tailscale.com", - "IPv4": "172.237.28.183", - "IPv6": "2600:3c18::2000:b1ff:fea9:4560", - "CanPort80": true - }, - { - "Name": "7e", - "RegionID": 7, - "HostName": "derp7e.tailscale.com", - "IPv4": "172.238.6.180", - "IPv6": "2600:3c18::2000:60ff:fe0f:6e83", - "STUNOnly": true, - "CanPort80": true - } - ] - }, - "8": { - "RegionID": 8, - "RegionCode": "lhr", - "RegionName": "London", - "Latitude": 51.5072, - "Longitude": 0.1276, - "Nodes": [ - { - "Name": "8f", - "RegionID": 8, - "HostName": "derp8f.tailscale.com", - "IPv4": "176.58.88.183", - "IPv6": "2a00:dd80:3a::dfa", - "CanPort80": true - }, - { - "Name": "8g", - "RegionID": 8, - "HostName": "derp8g.tailscale.com", - "IPv4": "176.58.92.254", - "IPv6": "2a00:dd80:3a::ed", - "CanPort80": true - }, - { - "Name": "8e", - "RegionID": 8, - "HostName": "derp8e.tailscale.com", - "IPv4": "176.58.92.144", - "IPv6": "2a00:dd80:3a::b33", - "CanPort80": true - } - ] - }, - "9": { - "RegionID": 9, - "RegionCode": "dfw", - "RegionName": "Dallas", - "Latitude": 32.779167, - "Longitude": -96.808889, - "Nodes": [ - { - "Name": "9e", - "RegionID": 9, - "HostName": "derp9e.tailscale.com", - "IPv4": "192.73.248.83", - "IPv6": "2607:f740:100::359", - "CanPort80": true - }, - { - "Name": "9f", - "RegionID": 9, - "HostName": "derp9f.tailscale.com", - "IPv4": "209.177.156.197", - "IPv6": "2607:f740:100::cad", - "CanPort80": true - }, - { - "Name": "9d", - "RegionID": 9, - "HostName": "derp9d.tailscale.com", - "IPv4": "209.177.156.94", - "IPv6": "2607:f740:100::c05", - "CanPort80": true - } - ] - } - } - }, - "DisplayMessages": null, - "TKAEnabled": false, - "TKAHead": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", - "Domain": "kratail2tid@passkey", - "DomainAuditLogID": "", - "UserProfiles": { - "50590507314324": { - "ID": 50590507314324, - "LoginName": "router-a.tail78f774.ts.net", - "DisplayName": "router-a" - } - } + "PacketFilterRules": null } }, "router-b": { - "commands": { - "packet_filter_rules": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/router-b/tailscaled.sock debug localapi POST debug-packet-filter-rules", - "packet_filter_matches": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/router-b/tailscaled.sock debug localapi POST debug-packet-filter-matches" - }, "packet_filter_rules": null, - "packet_filter_matches": [], - "whois": { - "100.124.195.93": { - "peer_name": "exit-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/router-b/tailscaled.sock whois --json 100.124.195.93", - "response": null - }, - "100.116.18.24": { - "peer_name": "exit-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/router-b/tailscaled.sock whois --json 100.116.18.24", - "response": null - }, - "100.85.66.106": { - "peer_name": "exit-node", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/router-b/tailscaled.sock whois --json 100.85.66.106", - "response": null - }, - "100.107.162.14": { - "peer_name": "group-a-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/router-b/tailscaled.sock whois --json 100.107.162.14", - "response": null - }, - "100.77.135.18": { - "peer_name": "group-b-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/router-b/tailscaled.sock whois --json 100.77.135.18", - "response": null - }, - "100.105.127.107": { - "peer_name": "multi-exit-router", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/router-b/tailscaled.sock whois --json 100.105.127.107", - "response": null - }, - "100.109.43.124": { - "peer_name": "router-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/router-b/tailscaled.sock whois --json 100.109.43.124", - "response": null - }, - "100.92.142.61": { - "peer_name": "subnet-router", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/router-b/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/router-b/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/router-b/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/router-b/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/router-b/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/router-b/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/router-b/tailscaled.sock whois --json 100.90.199.68", - "response": null - } - }, "netmap": { - "SelfNode": { - "ID": 1399889648409786, - "StableID": "nPHvXBj1wB11CNTRL", - "Name": "router-b.tail78f774.ts.net.", - "User": 1399889648409786, - "Key": "nodekey:4e6d3473c516cea37bcefdf4368932c623fd91c24aee1aacc27ca8165a41ac7a", - "DiscoKey": "discokey:dd5532635b8e3ddf25186e36671c16dd17c005c8b6a6862f4b5cc4e4f459e705", - "Addresses": ["100.65.172.123/32", "fd7a:115c:a1e0::5a37:ac7c/128"], - "AllowedIPs": ["100.65.172.123/32", "fd7a:115c:a1e0::5a37:ac7c/128", "10.55.0.0/16"], - "Endpoints": ["77.164.248.136:35931", "10.65.0.27:35931", "172.17.0.1:35931"], - "Hostinfo": { - "Hostname": "router-b", - "RoutableIPs": ["10.55.0.0/16"], - "RequestTags": ["tag:router-b"], - "Services": [ - { "Proto": "peerapi4", "Port": 58804 }, - { "Proto": "peerapi6", "Port": 58804 }, - { "Proto": "peerapi-dns-proxy", "Port": 1 } - ] - }, - "Created": "2026-03-28T10:38:15.42735258Z", - "Tags": ["tag:router-b"], - "PrimaryRoutes": ["10.55.0.0/16"], - "MachineAuthorized": true, - "CapMap": { - "https://tailscale.com/cap/file-sharing": null, - "https://tailscale.com/cap/is-owner": null, - "https://tailscale.com/cap/ssh": null, - "https://tailscale.com/cap/tailnet-lock": null, - "probe-udp-lifetime": null, - "ssh-behavior-v1": null, - "ssh-env-vars": null, - "store-appc-routes": null, - "tailnet-display-name": ["kratail2tid@passkey"] - }, - "ComputedName": "router-b", - "ComputedNameWithHost": "router-b" - }, - "AllCaps": [ - "store-appc-routes", - "ssh-behavior-v1", - "https://tailscale.com/cap/is-owner", - "probe-udp-lifetime", - "https://tailscale.com/cap/ssh", - "https://tailscale.com/cap/tailnet-lock", - "https://tailscale.com/cap/file-sharing", - "ssh-env-vars", - "tailnet-display-name" - ], - "NodeKey": "nodekey:4e6d3473c516cea37bcefdf4368932c623fd91c24aee1aacc27ca8165a41ac7a", - "MachineKey": "mkey:d040ca033391d3dedae7b2ad7ec3334646cda7aeca501780bdaa37addec3c228", "Peers": [], - "DNS": { - "Routes": { - "tail78f774.ts.net.": null, - "ts.net.": [{ "Addr": "199.247.155.53" }, { "Addr": "2620:111:8007::53" }] - }, - "Domains": ["tail78f774.ts.net"], - "Proxied": true, - "ExitNodeFilteredSet": [".ts.net", ".tailscale.net"] - }, - "PacketFilter": [], - "PacketFilterRules": null, - "SSHPolicy": { "rules": [] }, - "CollectServices": false, - "DERPMap": { - "Regions": { - "1": { - "RegionID": 1, - "RegionCode": "nyc", - "RegionName": "New York City", - "Latitude": 40.7128, - "Longitude": -74.006, - "Nodes": [ - { - "Name": "1h", - "RegionID": 1, - "HostName": "derp1h.tailscale.com", - "IPv4": "199.38.181.93", - "IPv6": "2607:f740:f::afd", - "CanPort80": true - }, - { - "Name": "1g", - "RegionID": 1, - "HostName": "derp1g.tailscale.com", - "IPv4": "209.177.145.120", - "IPv6": "2607:f740:f::3eb", - "CanPort80": true - }, - { - "Name": "1i", - "RegionID": 1, - "HostName": "derp1i.tailscale.com", - "IPv4": "199.38.181.103", - "IPv6": "2607:f740:f::e19", - "CanPort80": true - }, - { - "Name": "1f", - "RegionID": 1, - "HostName": "derp1f.tailscale.com", - "IPv4": "199.38.181.104", - "IPv6": "2607:f740:f::bc", - "CanPort80": true - } - ] - }, - "10": { - "RegionID": 10, - "RegionCode": "sea", - "RegionName": "Seattle", - "Latitude": 47.609722, - "Longitude": -122.333056, - "Nodes": [ - { - "Name": "10c", - "RegionID": 10, - "HostName": "derp10c.tailscale.com", - "IPv4": "192.73.240.121", - "IPv6": "2607:f740:14::40c", - "CanPort80": true - }, - { - "Name": "10d", - "RegionID": 10, - "HostName": "derp10d.tailscale.com", - "IPv4": "192.73.240.132", - "IPv6": "2607:f740:14::500", - "CanPort80": true - }, - { - "Name": "10b", - "RegionID": 10, - "HostName": "derp10b.tailscale.com", - "IPv4": "192.73.240.161", - "IPv6": "2607:f740:14::61c", - "CanPort80": true - } - ] - }, - "11": { - "RegionID": 11, - "RegionCode": "sao", - "RegionName": "São Paulo", - "Latitude": -23.55, - "Longitude": -46.633333, - "Nodes": [ - { - "Name": "11f", - "RegionID": 11, - "HostName": "derp11f.tailscale.com", - "IPv4": "172.237.61.197", - "IPv6": "2600:3c0d::2000:3bff:fe44:6166", - "CanPort80": true - }, - { - "Name": "11g", - "RegionID": 11, - "HostName": "derp11g.tailscale.com", - "IPv4": "172.237.61.190", - "IPv6": "2600:3c0d::2000:62ff:febe:2e67", - "CanPort80": true - }, - { - "Name": "11e", - "RegionID": 11, - "HostName": "derp11e.tailscale.com", - "IPv4": "172.237.61.194", - "IPv6": "2600:3c0d::2000:d2ff:fe43:1790", - "CanPort80": true - } - ] - }, - "12": { - "RegionID": 12, - "RegionCode": "ord", - "RegionName": "Chicago", - "Latitude": 41.881944, - "Longitude": -87.627778, - "Nodes": [ - { - "Name": "12e", - "RegionID": 12, - "HostName": "derp12e.tailscale.com", - "IPv4": "209.177.158.15", - "IPv6": "2607:f740:e::b17", - "CanPort80": true - }, - { - "Name": "12f", - "RegionID": 12, - "HostName": "derp12f.tailscale.com", - "IPv4": "199.38.182.118", - "IPv6": "2607:f740:e::4c8", - "CanPort80": true - }, - { - "Name": "12d", - "RegionID": 12, - "HostName": "derp12d.tailscale.com", - "IPv4": "209.177.158.246", - "IPv6": "2607:f740:e::811", - "CanPort80": true - } - ] - }, - "13": { - "RegionID": 13, - "RegionCode": "den", - "RegionName": "Denver", - "Latitude": 39.7392, - "Longitude": -104.9849, - "Nodes": [ - { - "Name": "13c", - "RegionID": 13, - "HostName": "derp13c.tailscale.com", - "IPv4": "192.73.242.28", - "IPv6": "2607:f740:16::5c", - "CanPort80": true - }, - { - "Name": "13d", - "RegionID": 13, - "HostName": "derp13d.tailscale.com", - "IPv4": "192.73.242.204", - "IPv6": "2607:f740:16::c23", - "CanPort80": true - }, - { - "Name": "13b", - "RegionID": 13, - "HostName": "derp13b.tailscale.com", - "IPv4": "192.73.242.187", - "IPv6": "2607:f740:16::640", - "CanPort80": true - } - ] - }, - "14": { - "RegionID": 14, - "RegionCode": "ams", - "RegionName": "Amsterdam", - "Latitude": 52.372778, - "Longitude": 4.893611, - "Nodes": [ - { - "Name": "14c", - "RegionID": 14, - "HostName": "derp14c.tailscale.com", - "IPv4": "176.58.93.147", - "IPv6": "2a00:dd80:3c::b09", - "CanPort80": true - }, - { - "Name": "14d", - "RegionID": 14, - "HostName": "derp14d.tailscale.com", - "IPv4": "176.58.93.154", - "IPv6": "2a00:dd80:3c::3d5", - "CanPort80": true - }, - { - "Name": "14b", - "RegionID": 14, - "HostName": "derp14b.tailscale.com", - "IPv4": "176.58.93.248", - "IPv6": "2a00:dd80:3c::807", - "CanPort80": true - } - ] - }, - "15": { - "RegionID": 15, - "RegionCode": "jnb", - "RegionName": "Johannesburg", - "Latitude": -26.204444, - "Longitude": 28.045556, - "Nodes": [ - { - "Name": "15c", - "RegionID": 15, - "HostName": "derp15c.tailscale.com", - "IPv4": "102.67.165.185", - "IPv6": "2c0f:edb0:0:10::b59", - "CanPort80": true - }, - { - "Name": "15d", - "RegionID": 15, - "HostName": "derp15d.tailscale.com", - "IPv4": "102.67.165.36", - "IPv6": "2c0f:edb0:0:10::599", - "CanPort80": true - }, - { - "Name": "15b", - "RegionID": 15, - "HostName": "derp15b.tailscale.com", - "IPv4": "102.67.165.90", - "IPv6": "2c0f:edb0:0:10::963", - "CanPort80": true - } - ] - }, - "16": { - "RegionID": 16, - "RegionCode": "mia", - "RegionName": "Miami", - "Latitude": 25.78, - "Longitude": -80.21, - "Nodes": [ - { - "Name": "16c", - "RegionID": 16, - "HostName": "derp16c.tailscale.com", - "IPv4": "192.73.243.229", - "IPv6": "2607:f740:17::4e4", - "CanPort80": true - }, - { - "Name": "16d", - "RegionID": 16, - "HostName": "derp16d.tailscale.com", - "IPv4": "192.73.243.141", - "IPv6": "2607:f740:17::475", - "CanPort80": true - }, - { - "Name": "16b", - "RegionID": 16, - "HostName": "derp16b.tailscale.com", - "IPv4": "192.73.243.135", - "IPv6": "2607:f740:17::476", - "CanPort80": true - } - ] - }, - "17": { - "RegionID": 17, - "RegionCode": "lax", - "RegionName": "Los Angeles", - "Latitude": 34.05, - "Longitude": -118.25, - "Nodes": [ - { - "Name": "17c", - "RegionID": 17, - "HostName": "derp17c.tailscale.com", - "IPv4": "208.111.40.12", - "IPv6": "2607:f740:c::10", - "CanPort80": true - }, - { - "Name": "17d", - "RegionID": 17, - "HostName": "derp17d.tailscale.com", - "IPv4": "208.111.40.216", - "IPv6": "2607:f740:c::e1b", - "CanPort80": true - }, - { - "Name": "17b", - "RegionID": 17, - "HostName": "derp17b.tailscale.com", - "IPv4": "192.73.244.245", - "IPv6": "2607:f740:c::646", - "CanPort80": true - } - ] - }, - "18": { - "RegionID": 18, - "RegionCode": "par", - "RegionName": "Paris", - "Latitude": 48.856667, - "Longitude": 2.352222, - "Nodes": [ - { - "Name": "18c", - "RegionID": 18, - "HostName": "derp18c.tailscale.com", - "IPv4": "176.58.90.207", - "IPv6": "2a00:dd80:3e::c19", - "CanPort80": true - }, - { - "Name": "18d", - "RegionID": 18, - "HostName": "derp18d.tailscale.com", - "IPv4": "176.58.90.104", - "IPv6": "2a00:dd80:3e::f2e", - "CanPort80": true - }, - { - "Name": "18b", - "RegionID": 18, - "HostName": "derp18b.tailscale.com", - "IPv4": "176.58.90.147", - "IPv6": "2a00:dd80:3e::363", - "CanPort80": true - } - ] - }, - "19": { - "RegionID": 19, - "RegionCode": "mad", - "RegionName": "Madrid", - "Latitude": 40.416944, - "Longitude": -3.703333, - "Nodes": [ - { - "Name": "19c", - "RegionID": 19, - "HostName": "derp19c.tailscale.com", - "IPv4": "45.159.97.61", - "IPv6": "2a00:dd80:14:10::20", - "CanPort80": true - }, - { - "Name": "19d", - "RegionID": 19, - "HostName": "derp19d.tailscale.com", - "IPv4": "45.159.97.233", - "IPv6": "2a00:dd80:14:10::34a", - "CanPort80": true - }, - { - "Name": "19b", - "RegionID": 19, - "HostName": "derp19b.tailscale.com", - "IPv4": "45.159.97.144", - "IPv6": "2a00:dd80:14:10::335", - "CanPort80": true - } - ] - }, - "2": { - "RegionID": 2, - "RegionCode": "sfo", - "RegionName": "San Francisco", - "Latitude": 37.7775, - "Longitude": -122.416389, - "Nodes": [ - { - "Name": "2e", - "RegionID": 2, - "HostName": "derp2e.tailscale.com", - "IPv4": "192.73.252.134", - "IPv6": "2607:f740:0:3f::44c", - "CanPort80": true - }, - { - "Name": "2f", - "RegionID": 2, - "HostName": "derp2f.tailscale.com", - "IPv4": "208.111.34.178", - "IPv6": "2607:f740:0:3f::f4", - "CanPort80": true - }, - { - "Name": "2d", - "RegionID": 2, - "HostName": "derp2d.tailscale.com", - "IPv4": "192.73.252.65", - "IPv6": "2607:f740:0:3f::287", - "CanPort80": true - } - ] - }, - "20": { - "RegionID": 20, - "RegionCode": "hkg", - "RegionName": "Hong Kong", - "Latitude": 22.3193, - "Longitude": 114.1694, - "Nodes": [ - { - "Name": "20c", - "RegionID": 20, - "HostName": "derp20c.tailscale.com", - "IPv4": "205.147.105.30", - "IPv6": "2403:2500:8000:1::5fb", - "CanPort80": true - }, - { - "Name": "20d", - "RegionID": 20, - "HostName": "derp20d.tailscale.com", - "IPv4": "205.147.105.78", - "IPv6": "2403:2500:8000:1::e9a", - "CanPort80": true - }, - { - "Name": "20b", - "RegionID": 20, - "HostName": "derp20b.tailscale.com", - "IPv4": "103.6.84.152", - "IPv6": "2403:2500:8000:1::ef6", - "CanPort80": true - } - ] - }, - "21": { - "RegionID": 21, - "RegionCode": "tor", - "RegionName": "Toronto", - "Latitude": 43.741667, - "Longitude": -79.373333, - "Nodes": [ - { - "Name": "21c", - "RegionID": 21, - "HostName": "derp21c.tailscale.com", - "IPv4": "162.248.221.215", - "IPv6": "2607:f740:50::f10", - "CanPort80": true - }, - { - "Name": "21d", - "RegionID": 21, - "HostName": "derp21d.tailscale.com", - "IPv4": "162.248.221.248", - "IPv6": "2607:f740:50::ca4", - "CanPort80": true - }, - { - "Name": "21b", - "RegionID": 21, - "HostName": "derp21b.tailscale.com", - "IPv4": "162.248.221.199", - "IPv6": "2607:f740:50::1d1", - "CanPort80": true - } - ] - }, - "22": { - "RegionID": 22, - "RegionCode": "waw", - "RegionName": "Warsaw", - "Latitude": 52.23, - "Longitude": 21.011111, - "Nodes": [ - { - "Name": "22c", - "RegionID": 22, - "HostName": "derp22c.tailscale.com", - "IPv4": "45.159.98.253", - "IPv6": "2a00:dd80:40:100::3f", - "CanPort80": true - }, - { - "Name": "22d", - "RegionID": 22, - "HostName": "derp22d.tailscale.com", - "IPv4": "45.159.98.145", - "IPv6": "2a00:dd80:40:100::211", - "CanPort80": true - }, - { - "Name": "22b", - "RegionID": 22, - "HostName": "derp22b.tailscale.com", - "IPv4": "45.159.98.196", - "IPv6": "2a00:dd80:40:100::316", - "CanPort80": true - } - ] - }, - "23": { - "RegionID": 23, - "RegionCode": "dbi", - "RegionName": "Dubai", - "Latitude": 25.263056, - "Longitude": 55.297222, - "Nodes": [ - { - "Name": "23c", - "RegionID": 23, - "HostName": "derp23c.tailscale.com", - "IPv4": "185.34.3.207", - "IPv6": "2a00:dd80:3f:100::a50", - "CanPort80": true - }, - { - "Name": "23d", - "RegionID": 23, - "HostName": "derp23d.tailscale.com", - "IPv4": "185.34.3.75", - "IPv6": "2a00:dd80:3f:100::97e", - "CanPort80": true - }, - { - "Name": "23b", - "RegionID": 23, - "HostName": "derp23b.tailscale.com", - "IPv4": "185.34.3.232", - "IPv6": "2a00:dd80:3f:100::76f", - "CanPort80": true - } - ] - }, - "24": { - "RegionID": 24, - "RegionCode": "hnl", - "RegionName": "Honolulu", - "Latitude": 21.306944, - "Longitude": -157.858333, - "Nodes": [ - { - "Name": "24c", - "RegionID": 24, - "HostName": "derp24c.tailscale.com", - "IPv4": "208.83.233.233", - "IPv6": "2001:19f0:c000:c591:5400:04ff:fe26:2c5f", - "CanPort80": true - }, - { - "Name": "24d", - "RegionID": 24, - "HostName": "derp24d.tailscale.com", - "IPv4": "208.72.155.133", - "IPv6": "2001:19f0:c000:c564:5400:04ff:fe26:2ba8", - "CanPort80": true - }, - { - "Name": "24b", - "RegionID": 24, - "HostName": "derp24b.tailscale.com", - "IPv4": "208.83.234.151", - "IPv6": "2001:19f0:c000:c586:5400:04ff:fe26:2ba6", - "CanPort80": true - } - ] - }, - "25": { - "RegionID": 25, - "RegionCode": "nai", - "RegionName": "Nairobi", - "Latitude": -1.286389, - "Longitude": 36.817222, - "Nodes": [ - { - "Name": "25c", - "RegionID": 25, - "HostName": "derp25c.tailscale.com", - "IPv4": "102.67.167.37", - "IPv6": "2c0f:edb0:2000:1::2c7", - "CanPort80": true - }, - { - "Name": "25d", - "RegionID": 25, - "HostName": "derp25d.tailscale.com", - "IPv4": "102.67.167.188", - "IPv6": "2c0f:edb0:2000:1::188", - "CanPort80": true - }, - { - "Name": "25b", - "RegionID": 25, - "HostName": "derp25b.tailscale.com", - "IPv4": "102.67.167.245", - "IPv6": "2c0f:edb0:2000:1::2e9", - "CanPort80": true - } - ] - }, - "26": { - "RegionID": 26, - "RegionCode": "nue", - "RegionName": "Nuremberg", - "Latitude": 49.453889, - "Longitude": 11.0775, - "Nodes": [ - { - "Name": "26c", - "RegionID": 26, - "HostName": "derp26c.tailscale.com", - "IPv4": "49.12.193.137", - "IPv6": "2a01:4f8:1c1c:5c70::1", - "CanPort80": true - }, - { - "Name": "26d", - "RegionID": 26, - "HostName": "derp26d.tailscale.com", - "IPv4": "49.13.204.141", - "IPv6": "2a01:4f8:1c0c:7d06::1", - "CanPort80": true - }, - { - "Name": "26b", - "RegionID": 26, - "HostName": "derp26b.tailscale.com", - "IPv4": "167.235.72.200", - "IPv6": "2a01:4f8:1c1c:47b6::1", - "CanPort80": true - } - ] - }, - "27": { - "RegionID": 27, - "RegionCode": "iad", - "RegionName": "Ashburn", - "Latitude": 39.03, - "Longitude": -77.471111, - "Nodes": [ - { - "Name": "27d", - "RegionID": 27, - "HostName": "derp27d.tailscale.com", - "IPv4": "178.156.152.106", - "IPv6": "2a01:4ff:f0:3c8e::1", - "CanPort80": true - }, - { - "Name": "27c", - "RegionID": 27, - "HostName": "derp27c.tailscale.com", - "IPv4": "178.156.152.91", - "IPv6": "2a01:4ff:f0:3913::1", - "CanPort80": true - }, - { - "Name": "27e", - "RegionID": 27, - "HostName": "derp27e.tailscale.com", - "IPv4": "178.156.134.232", - "IPv6": "2a01:4ff:f0:28d4::1", - "CanPort80": true - }, - { - "Name": "27b", - "RegionID": 27, - "HostName": "derp27b.tailscale.com", - "IPv4": "5.161.218.233", - "IPv6": "2a01:4ff:f0:3db9::1", - "CanPort80": true - } - ] - }, - "28": { - "RegionID": 28, - "RegionCode": "hel", - "RegionName": "Helsinki", - "Latitude": 60.170833, - "Longitude": 24.9375, - "Nodes": [ - { - "Name": "28c", - "RegionID": 28, - "HostName": "derp28c.tailscale.com", - "IPv4": "95.217.2.165", - "IPv6": "2a01:4f9:c012:cd74::1", - "CanPort80": true - }, - { - "Name": "28d", - "RegionID": 28, - "HostName": "derp28d.tailscale.com", - "IPv4": "157.180.28.32", - "IPv6": "2a01:4f9:c012:2e5b::1", - "CanPort80": true - }, - { - "Name": "28b", - "RegionID": 28, - "HostName": "derp28b.tailscale.com", - "IPv4": "65.109.143.62", - "IPv6": "2a01:4f9:c012:d55c::1", - "CanPort80": true - } - ] - }, - "3": { - "RegionID": 3, - "RegionCode": "sin", - "RegionName": "Singapore", - "Latitude": 1.3521, - "Longitude": 103.8198, - "Nodes": [ - { - "Name": "3g", - "RegionID": 3, - "HostName": "derp3g.tailscale.com", - "IPv4": "172.237.72.79", - "IPv6": "2600:3c15::2000:adff:fe08:6fab", - "CanPort80": true - }, - { - "Name": "3f", - "RegionID": 3, - "HostName": "derp3f.tailscale.com", - "IPv4": "172.237.72.8", - "IPv6": "2600:3c15::2000:53ff:fe48:a668", - "CanPort80": true - }, - { - "Name": "3h", - "RegionID": 3, - "HostName": "derp3h.tailscale.com", - "IPv4": "172.237.66.30", - "IPv6": "2600:3c15::2000:3dff:fe44:50aa", - "CanPort80": true - }, - { - "Name": "3e", - "RegionID": 3, - "HostName": "derp3e.tailscale.com", - "IPv4": "172.237.72.43", - "IPv6": "2600:3c15::2000:6cff:fee4:d799", - "CanPort80": true - } - ] - }, - "4": { - "RegionID": 4, - "RegionCode": "fra", - "RegionName": "Frankfurt", - "Latitude": 50.1109, - "Longitude": 8.6821, - "Nodes": [ - { - "Name": "4h", - "RegionID": 4, - "HostName": "derp4h.tailscale.com", - "IPv4": "185.40.234.77", - "IPv6": "2a00:dd80:20::bcf", - "CanPort80": true - }, - { - "Name": "4g", - "RegionID": 4, - "HostName": "derp4g.tailscale.com", - "IPv4": "185.40.234.113", - "IPv6": "2a00:dd80:20::8f", - "CanPort80": true - }, - { - "Name": "4i", - "RegionID": 4, - "HostName": "derp4i.tailscale.com", - "IPv4": "185.40.234.53", - "IPv6": "2a00:dd80:20::8a6", - "CanPort80": true - }, - { - "Name": "4f", - "RegionID": 4, - "HostName": "derp4f.tailscale.com", - "IPv4": "185.40.234.219", - "IPv6": "2a00:dd80:20::a25", - "CanPort80": true - } - ] - }, - "5": { - "RegionID": 5, - "RegionCode": "syd", - "RegionName": "Sydney", - "Latitude": -33.867778, - "Longitude": 151.21, - "Nodes": [ - { - "Name": "5f", - "RegionID": 5, - "HostName": "derp5f.tailscale.com", - "IPv4": "172.105.166.103", - "IPv6": "2400:8907::2000:ccff:fe1f:80da", - "CanPort80": true - }, - { - "Name": "5g", - "RegionID": 5, - "HostName": "derp5g.tailscale.com", - "IPv4": "172.105.169.57", - "IPv6": "2400:8907::2000:2fff:fea7:57f4", - "CanPort80": true - }, - { - "Name": "5e", - "RegionID": 5, - "HostName": "derp5e.tailscale.com", - "IPv4": "172.105.179.230", - "IPv6": "2400:8907::2000:ceff:fe8d:4f4e", - "CanPort80": true - } - ] - }, - "6": { - "RegionID": 6, - "RegionCode": "blr", - "RegionName": "Bengaluru", - "Latitude": 12.9716, - "Longitude": 77.5946, - "Nodes": [ - { - "Name": "6a", - "RegionID": 6, - "HostName": "derp6.tailscale.com", - "IPv4": "68.183.90.120", - "IPv6": "2400:6180:100:d0::982:d001", - "CanPort80": true - } - ] - }, - "7": { - "RegionID": 7, - "RegionCode": "tok", - "RegionName": "Tokyo", - "Latitude": 35.6764, - "Longitude": 139.65, - "Nodes": [ - { - "Name": "7g", - "RegionID": 7, - "HostName": "derp7g.tailscale.com", - "IPv4": "172.238.6.179", - "IPv6": "2600:3c18::2000:3fff:fe80:3ebd", - "CanPort80": true - }, - { - "Name": "7f", - "RegionID": 7, - "HostName": "derp7f.tailscale.com", - "IPv4": "172.238.6.34", - "IPv6": "2600:3c18::2000:acff:fe8e:3ed5", - "CanPort80": true - }, - { - "Name": "7h", - "RegionID": 7, - "HostName": "derp7h.tailscale.com", - "IPv4": "172.237.28.183", - "IPv6": "2600:3c18::2000:b1ff:fea9:4560", - "CanPort80": true - }, - { - "Name": "7e", - "RegionID": 7, - "HostName": "derp7e.tailscale.com", - "IPv4": "172.238.6.180", - "IPv6": "2600:3c18::2000:60ff:fe0f:6e83", - "STUNOnly": true, - "CanPort80": true - } - ] - }, - "8": { - "RegionID": 8, - "RegionCode": "lhr", - "RegionName": "London", - "Latitude": 51.5072, - "Longitude": 0.1276, - "Nodes": [ - { - "Name": "8f", - "RegionID": 8, - "HostName": "derp8f.tailscale.com", - "IPv4": "176.58.88.183", - "IPv6": "2a00:dd80:3a::dfa", - "CanPort80": true - }, - { - "Name": "8g", - "RegionID": 8, - "HostName": "derp8g.tailscale.com", - "IPv4": "176.58.92.254", - "IPv6": "2a00:dd80:3a::ed", - "CanPort80": true - }, - { - "Name": "8e", - "RegionID": 8, - "HostName": "derp8e.tailscale.com", - "IPv4": "176.58.92.144", - "IPv6": "2a00:dd80:3a::b33", - "CanPort80": true - } - ] - }, - "9": { - "RegionID": 9, - "RegionCode": "dfw", - "RegionName": "Dallas", - "Latitude": 32.779167, - "Longitude": -96.808889, - "Nodes": [ - { - "Name": "9e", - "RegionID": 9, - "HostName": "derp9e.tailscale.com", - "IPv4": "192.73.248.83", - "IPv6": "2607:f740:100::359", - "CanPort80": true - }, - { - "Name": "9f", - "RegionID": 9, - "HostName": "derp9f.tailscale.com", - "IPv4": "209.177.156.197", - "IPv6": "2607:f740:100::cad", - "CanPort80": true - }, - { - "Name": "9d", - "RegionID": 9, - "HostName": "derp9d.tailscale.com", - "IPv4": "209.177.156.94", - "IPv6": "2607:f740:100::c05", - "CanPort80": true - } - ] - } - } - }, - "DisplayMessages": null, - "TKAEnabled": false, - "TKAHead": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", - "Domain": "kratail2tid@passkey", - "DomainAuditLogID": "", - "UserProfiles": { - "1399889648409786": { - "ID": 1399889648409786, - "LoginName": "router-b.tail78f774.ts.net", - "DisplayName": "router-b" - } - } + "PacketFilterRules": 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.124.195.93": { - "peer_name": "exit-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/subnet-router/tailscaled.sock whois --json 100.124.195.93", - "response": null - }, - "100.116.18.24": { - "peer_name": "exit-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/subnet-router/tailscaled.sock whois --json 100.116.18.24", - "response": null - }, - "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.107.162.14": { - "peer_name": "group-a-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/subnet-router/tailscaled.sock whois --json 100.107.162.14", - "response": null - }, - "100.77.135.18": { - "peer_name": "group-b-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/subnet-router/tailscaled.sock whois --json 100.77.135.18", - "response": null - }, - "100.105.127.107": { - "peer_name": "multi-exit-router", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/subnet-router/tailscaled.sock whois --json 100.105.127.107", - "response": null - }, - "100.109.43.124": { - "peer_name": "router-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/subnet-router/tailscaled.sock whois --json 100.109.43.124", - "response": null - }, - "100.65.172.123": { - "peer_name": "router-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/subnet-router/tailscaled.sock whois --json 100.65.172.123", - "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 - } - }, "netmap": { - "SelfNode": { - "ID": 7489538288452506, - "StableID": "nTPEqJU2V121CNTRL", - "Name": "subnet-router.tail78f774.ts.net.", - "User": 7489538288452506, - "Key": "nodekey:887ae2351c09c3b952f1f42bdac4095ec396ebf15824a746e4193c003e9c8e3c", - "DiscoKey": "discokey:9e3167ceaf53735a2fcaa7d3a85ad3a6118274deb448326d594849275014cc56", - "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:58597", "10.65.0.27:58597", "172.17.0.1:58597"], - "Hostinfo": { - "Hostname": "subnet-router", - "RoutableIPs": ["10.33.0.0/16"], - "RequestTags": ["tag:router"], - "Services": [ - { "Proto": "peerapi4", "Port": 63250 }, - { "Proto": "peerapi6", "Port": 63250 }, - { "Proto": "peerapi-dns-proxy", "Port": 1 } - ] - }, - "Created": "2026-02-23T00:13:15.731478784Z", - "Tags": ["tag:router"], - "MachineAuthorized": true, - "CapMap": { - "https://tailscale.com/cap/file-sharing": null, - "https://tailscale.com/cap/is-owner": null, - "https://tailscale.com/cap/ssh": null, - "https://tailscale.com/cap/tailnet-lock": null, - "probe-udp-lifetime": null, - "ssh-behavior-v1": null, - "ssh-env-vars": null, - "store-appc-routes": null, - "tailnet-display-name": ["kratail2tid@passkey"] - }, - "ComputedName": "subnet-router", - "ComputedNameWithHost": "subnet-router" - }, - "AllCaps": [ - "https://tailscale.com/cap/is-owner", - "https://tailscale.com/cap/tailnet-lock", - "https://tailscale.com/cap/file-sharing", - "ssh-env-vars", - "https://tailscale.com/cap/ssh", - "probe-udp-lifetime", - "store-appc-routes", - "tailnet-display-name", - "ssh-behavior-v1" - ], - "NodeKey": "nodekey:887ae2351c09c3b952f1f42bdac4095ec396ebf15824a746e4193c003e9c8e3c", - "MachineKey": "mkey:324efa54cc51a7b4f266f6a236904c755d32b6e547a76ad3c1d1e9d348de682a", "Peers": [], - "DNS": { - "Routes": { - "tail78f774.ts.net.": null, - "ts.net.": [{ "Addr": "199.247.155.53" }, { "Addr": "2620:111:8007::53" }] - }, - "Domains": ["tail78f774.ts.net"], - "Proxied": true, - "ExitNodeFilteredSet": [".ts.net", ".tailscale.net"] - }, - "PacketFilter": [], - "PacketFilterRules": null, - "SSHPolicy": { "rules": [] }, - "CollectServices": false, - "DERPMap": { - "Regions": { - "1": { - "RegionID": 1, - "RegionCode": "nyc", - "RegionName": "New York City", - "Latitude": 40.7128, - "Longitude": -74.006, - "Nodes": [ - { - "Name": "1h", - "RegionID": 1, - "HostName": "derp1h.tailscale.com", - "IPv4": "199.38.181.93", - "IPv6": "2607:f740:f::afd", - "CanPort80": true - }, - { - "Name": "1g", - "RegionID": 1, - "HostName": "derp1g.tailscale.com", - "IPv4": "209.177.145.120", - "IPv6": "2607:f740:f::3eb", - "CanPort80": true - }, - { - "Name": "1i", - "RegionID": 1, - "HostName": "derp1i.tailscale.com", - "IPv4": "199.38.181.103", - "IPv6": "2607:f740:f::e19", - "CanPort80": true - }, - { - "Name": "1f", - "RegionID": 1, - "HostName": "derp1f.tailscale.com", - "IPv4": "199.38.181.104", - "IPv6": "2607:f740:f::bc", - "CanPort80": true - } - ] - }, - "10": { - "RegionID": 10, - "RegionCode": "sea", - "RegionName": "Seattle", - "Latitude": 47.609722, - "Longitude": -122.333056, - "Nodes": [ - { - "Name": "10c", - "RegionID": 10, - "HostName": "derp10c.tailscale.com", - "IPv4": "192.73.240.121", - "IPv6": "2607:f740:14::40c", - "CanPort80": true - }, - { - "Name": "10d", - "RegionID": 10, - "HostName": "derp10d.tailscale.com", - "IPv4": "192.73.240.132", - "IPv6": "2607:f740:14::500", - "CanPort80": true - }, - { - "Name": "10b", - "RegionID": 10, - "HostName": "derp10b.tailscale.com", - "IPv4": "192.73.240.161", - "IPv6": "2607:f740:14::61c", - "CanPort80": true - } - ] - }, - "11": { - "RegionID": 11, - "RegionCode": "sao", - "RegionName": "São Paulo", - "Latitude": -23.55, - "Longitude": -46.633333, - "Nodes": [ - { - "Name": "11f", - "RegionID": 11, - "HostName": "derp11f.tailscale.com", - "IPv4": "172.237.61.197", - "IPv6": "2600:3c0d::2000:3bff:fe44:6166", - "CanPort80": true - }, - { - "Name": "11g", - "RegionID": 11, - "HostName": "derp11g.tailscale.com", - "IPv4": "172.237.61.190", - "IPv6": "2600:3c0d::2000:62ff:febe:2e67", - "CanPort80": true - }, - { - "Name": "11e", - "RegionID": 11, - "HostName": "derp11e.tailscale.com", - "IPv4": "172.237.61.194", - "IPv6": "2600:3c0d::2000:d2ff:fe43:1790", - "CanPort80": true - } - ] - }, - "12": { - "RegionID": 12, - "RegionCode": "ord", - "RegionName": "Chicago", - "Latitude": 41.881944, - "Longitude": -87.627778, - "Nodes": [ - { - "Name": "12e", - "RegionID": 12, - "HostName": "derp12e.tailscale.com", - "IPv4": "209.177.158.15", - "IPv6": "2607:f740:e::b17", - "CanPort80": true - }, - { - "Name": "12f", - "RegionID": 12, - "HostName": "derp12f.tailscale.com", - "IPv4": "199.38.182.118", - "IPv6": "2607:f740:e::4c8", - "CanPort80": true - }, - { - "Name": "12d", - "RegionID": 12, - "HostName": "derp12d.tailscale.com", - "IPv4": "209.177.158.246", - "IPv6": "2607:f740:e::811", - "CanPort80": true - } - ] - }, - "13": { - "RegionID": 13, - "RegionCode": "den", - "RegionName": "Denver", - "Latitude": 39.7392, - "Longitude": -104.9849, - "Nodes": [ - { - "Name": "13c", - "RegionID": 13, - "HostName": "derp13c.tailscale.com", - "IPv4": "192.73.242.28", - "IPv6": "2607:f740:16::5c", - "CanPort80": true - }, - { - "Name": "13d", - "RegionID": 13, - "HostName": "derp13d.tailscale.com", - "IPv4": "192.73.242.204", - "IPv6": "2607:f740:16::c23", - "CanPort80": true - }, - { - "Name": "13b", - "RegionID": 13, - "HostName": "derp13b.tailscale.com", - "IPv4": "192.73.242.187", - "IPv6": "2607:f740:16::640", - "CanPort80": true - } - ] - }, - "14": { - "RegionID": 14, - "RegionCode": "ams", - "RegionName": "Amsterdam", - "Latitude": 52.372778, - "Longitude": 4.893611, - "Nodes": [ - { - "Name": "14c", - "RegionID": 14, - "HostName": "derp14c.tailscale.com", - "IPv4": "176.58.93.147", - "IPv6": "2a00:dd80:3c::b09", - "CanPort80": true - }, - { - "Name": "14d", - "RegionID": 14, - "HostName": "derp14d.tailscale.com", - "IPv4": "176.58.93.154", - "IPv6": "2a00:dd80:3c::3d5", - "CanPort80": true - }, - { - "Name": "14b", - "RegionID": 14, - "HostName": "derp14b.tailscale.com", - "IPv4": "176.58.93.248", - "IPv6": "2a00:dd80:3c::807", - "CanPort80": true - } - ] - }, - "15": { - "RegionID": 15, - "RegionCode": "jnb", - "RegionName": "Johannesburg", - "Latitude": -26.204444, - "Longitude": 28.045556, - "Nodes": [ - { - "Name": "15c", - "RegionID": 15, - "HostName": "derp15c.tailscale.com", - "IPv4": "102.67.165.185", - "IPv6": "2c0f:edb0:0:10::b59", - "CanPort80": true - }, - { - "Name": "15d", - "RegionID": 15, - "HostName": "derp15d.tailscale.com", - "IPv4": "102.67.165.36", - "IPv6": "2c0f:edb0:0:10::599", - "CanPort80": true - }, - { - "Name": "15b", - "RegionID": 15, - "HostName": "derp15b.tailscale.com", - "IPv4": "102.67.165.90", - "IPv6": "2c0f:edb0:0:10::963", - "CanPort80": true - } - ] - }, - "16": { - "RegionID": 16, - "RegionCode": "mia", - "RegionName": "Miami", - "Latitude": 25.78, - "Longitude": -80.21, - "Nodes": [ - { - "Name": "16c", - "RegionID": 16, - "HostName": "derp16c.tailscale.com", - "IPv4": "192.73.243.229", - "IPv6": "2607:f740:17::4e4", - "CanPort80": true - }, - { - "Name": "16d", - "RegionID": 16, - "HostName": "derp16d.tailscale.com", - "IPv4": "192.73.243.141", - "IPv6": "2607:f740:17::475", - "CanPort80": true - }, - { - "Name": "16b", - "RegionID": 16, - "HostName": "derp16b.tailscale.com", - "IPv4": "192.73.243.135", - "IPv6": "2607:f740:17::476", - "CanPort80": true - } - ] - }, - "17": { - "RegionID": 17, - "RegionCode": "lax", - "RegionName": "Los Angeles", - "Latitude": 34.05, - "Longitude": -118.25, - "Nodes": [ - { - "Name": "17c", - "RegionID": 17, - "HostName": "derp17c.tailscale.com", - "IPv4": "208.111.40.12", - "IPv6": "2607:f740:c::10", - "CanPort80": true - }, - { - "Name": "17d", - "RegionID": 17, - "HostName": "derp17d.tailscale.com", - "IPv4": "208.111.40.216", - "IPv6": "2607:f740:c::e1b", - "CanPort80": true - }, - { - "Name": "17b", - "RegionID": 17, - "HostName": "derp17b.tailscale.com", - "IPv4": "192.73.244.245", - "IPv6": "2607:f740:c::646", - "CanPort80": true - } - ] - }, - "18": { - "RegionID": 18, - "RegionCode": "par", - "RegionName": "Paris", - "Latitude": 48.856667, - "Longitude": 2.352222, - "Nodes": [ - { - "Name": "18c", - "RegionID": 18, - "HostName": "derp18c.tailscale.com", - "IPv4": "176.58.90.207", - "IPv6": "2a00:dd80:3e::c19", - "CanPort80": true - }, - { - "Name": "18d", - "RegionID": 18, - "HostName": "derp18d.tailscale.com", - "IPv4": "176.58.90.104", - "IPv6": "2a00:dd80:3e::f2e", - "CanPort80": true - }, - { - "Name": "18b", - "RegionID": 18, - "HostName": "derp18b.tailscale.com", - "IPv4": "176.58.90.147", - "IPv6": "2a00:dd80:3e::363", - "CanPort80": true - } - ] - }, - "19": { - "RegionID": 19, - "RegionCode": "mad", - "RegionName": "Madrid", - "Latitude": 40.416944, - "Longitude": -3.703333, - "Nodes": [ - { - "Name": "19c", - "RegionID": 19, - "HostName": "derp19c.tailscale.com", - "IPv4": "45.159.97.61", - "IPv6": "2a00:dd80:14:10::20", - "CanPort80": true - }, - { - "Name": "19d", - "RegionID": 19, - "HostName": "derp19d.tailscale.com", - "IPv4": "45.159.97.233", - "IPv6": "2a00:dd80:14:10::34a", - "CanPort80": true - }, - { - "Name": "19b", - "RegionID": 19, - "HostName": "derp19b.tailscale.com", - "IPv4": "45.159.97.144", - "IPv6": "2a00:dd80:14:10::335", - "CanPort80": true - } - ] - }, - "2": { - "RegionID": 2, - "RegionCode": "sfo", - "RegionName": "San Francisco", - "Latitude": 37.7775, - "Longitude": -122.416389, - "Nodes": [ - { - "Name": "2e", - "RegionID": 2, - "HostName": "derp2e.tailscale.com", - "IPv4": "192.73.252.134", - "IPv6": "2607:f740:0:3f::44c", - "CanPort80": true - }, - { - "Name": "2f", - "RegionID": 2, - "HostName": "derp2f.tailscale.com", - "IPv4": "208.111.34.178", - "IPv6": "2607:f740:0:3f::f4", - "CanPort80": true - }, - { - "Name": "2d", - "RegionID": 2, - "HostName": "derp2d.tailscale.com", - "IPv4": "192.73.252.65", - "IPv6": "2607:f740:0:3f::287", - "CanPort80": true - } - ] - }, - "20": { - "RegionID": 20, - "RegionCode": "hkg", - "RegionName": "Hong Kong", - "Latitude": 22.3193, - "Longitude": 114.1694, - "Nodes": [ - { - "Name": "20c", - "RegionID": 20, - "HostName": "derp20c.tailscale.com", - "IPv4": "205.147.105.30", - "IPv6": "2403:2500:8000:1::5fb", - "CanPort80": true - }, - { - "Name": "20d", - "RegionID": 20, - "HostName": "derp20d.tailscale.com", - "IPv4": "205.147.105.78", - "IPv6": "2403:2500:8000:1::e9a", - "CanPort80": true - }, - { - "Name": "20b", - "RegionID": 20, - "HostName": "derp20b.tailscale.com", - "IPv4": "103.6.84.152", - "IPv6": "2403:2500:8000:1::ef6", - "CanPort80": true - } - ] - }, - "21": { - "RegionID": 21, - "RegionCode": "tor", - "RegionName": "Toronto", - "Latitude": 43.741667, - "Longitude": -79.373333, - "Nodes": [ - { - "Name": "21c", - "RegionID": 21, - "HostName": "derp21c.tailscale.com", - "IPv4": "162.248.221.215", - "IPv6": "2607:f740:50::f10", - "CanPort80": true - }, - { - "Name": "21d", - "RegionID": 21, - "HostName": "derp21d.tailscale.com", - "IPv4": "162.248.221.248", - "IPv6": "2607:f740:50::ca4", - "CanPort80": true - }, - { - "Name": "21b", - "RegionID": 21, - "HostName": "derp21b.tailscale.com", - "IPv4": "162.248.221.199", - "IPv6": "2607:f740:50::1d1", - "CanPort80": true - } - ] - }, - "22": { - "RegionID": 22, - "RegionCode": "waw", - "RegionName": "Warsaw", - "Latitude": 52.23, - "Longitude": 21.011111, - "Nodes": [ - { - "Name": "22c", - "RegionID": 22, - "HostName": "derp22c.tailscale.com", - "IPv4": "45.159.98.253", - "IPv6": "2a00:dd80:40:100::3f", - "CanPort80": true - }, - { - "Name": "22d", - "RegionID": 22, - "HostName": "derp22d.tailscale.com", - "IPv4": "45.159.98.145", - "IPv6": "2a00:dd80:40:100::211", - "CanPort80": true - }, - { - "Name": "22b", - "RegionID": 22, - "HostName": "derp22b.tailscale.com", - "IPv4": "45.159.98.196", - "IPv6": "2a00:dd80:40:100::316", - "CanPort80": true - } - ] - }, - "23": { - "RegionID": 23, - "RegionCode": "dbi", - "RegionName": "Dubai", - "Latitude": 25.263056, - "Longitude": 55.297222, - "Nodes": [ - { - "Name": "23c", - "RegionID": 23, - "HostName": "derp23c.tailscale.com", - "IPv4": "185.34.3.207", - "IPv6": "2a00:dd80:3f:100::a50", - "CanPort80": true - }, - { - "Name": "23d", - "RegionID": 23, - "HostName": "derp23d.tailscale.com", - "IPv4": "185.34.3.75", - "IPv6": "2a00:dd80:3f:100::97e", - "CanPort80": true - }, - { - "Name": "23b", - "RegionID": 23, - "HostName": "derp23b.tailscale.com", - "IPv4": "185.34.3.232", - "IPv6": "2a00:dd80:3f:100::76f", - "CanPort80": true - } - ] - }, - "24": { - "RegionID": 24, - "RegionCode": "hnl", - "RegionName": "Honolulu", - "Latitude": 21.306944, - "Longitude": -157.858333, - "Nodes": [ - { - "Name": "24c", - "RegionID": 24, - "HostName": "derp24c.tailscale.com", - "IPv4": "208.83.233.233", - "IPv6": "2001:19f0:c000:c591:5400:04ff:fe26:2c5f", - "CanPort80": true - }, - { - "Name": "24d", - "RegionID": 24, - "HostName": "derp24d.tailscale.com", - "IPv4": "208.72.155.133", - "IPv6": "2001:19f0:c000:c564:5400:04ff:fe26:2ba8", - "CanPort80": true - }, - { - "Name": "24b", - "RegionID": 24, - "HostName": "derp24b.tailscale.com", - "IPv4": "208.83.234.151", - "IPv6": "2001:19f0:c000:c586:5400:04ff:fe26:2ba6", - "CanPort80": true - } - ] - }, - "25": { - "RegionID": 25, - "RegionCode": "nai", - "RegionName": "Nairobi", - "Latitude": -1.286389, - "Longitude": 36.817222, - "Nodes": [ - { - "Name": "25c", - "RegionID": 25, - "HostName": "derp25c.tailscale.com", - "IPv4": "102.67.167.37", - "IPv6": "2c0f:edb0:2000:1::2c7", - "CanPort80": true - }, - { - "Name": "25d", - "RegionID": 25, - "HostName": "derp25d.tailscale.com", - "IPv4": "102.67.167.188", - "IPv6": "2c0f:edb0:2000:1::188", - "CanPort80": true - }, - { - "Name": "25b", - "RegionID": 25, - "HostName": "derp25b.tailscale.com", - "IPv4": "102.67.167.245", - "IPv6": "2c0f:edb0:2000:1::2e9", - "CanPort80": true - } - ] - }, - "26": { - "RegionID": 26, - "RegionCode": "nue", - "RegionName": "Nuremberg", - "Latitude": 49.453889, - "Longitude": 11.0775, - "Nodes": [ - { - "Name": "26c", - "RegionID": 26, - "HostName": "derp26c.tailscale.com", - "IPv4": "49.12.193.137", - "IPv6": "2a01:4f8:1c1c:5c70::1", - "CanPort80": true - }, - { - "Name": "26d", - "RegionID": 26, - "HostName": "derp26d.tailscale.com", - "IPv4": "49.13.204.141", - "IPv6": "2a01:4f8:1c0c:7d06::1", - "CanPort80": true - }, - { - "Name": "26b", - "RegionID": 26, - "HostName": "derp26b.tailscale.com", - "IPv4": "167.235.72.200", - "IPv6": "2a01:4f8:1c1c:47b6::1", - "CanPort80": true - } - ] - }, - "27": { - "RegionID": 27, - "RegionCode": "iad", - "RegionName": "Ashburn", - "Latitude": 39.03, - "Longitude": -77.471111, - "Nodes": [ - { - "Name": "27d", - "RegionID": 27, - "HostName": "derp27d.tailscale.com", - "IPv4": "178.156.152.106", - "IPv6": "2a01:4ff:f0:3c8e::1", - "CanPort80": true - }, - { - "Name": "27c", - "RegionID": 27, - "HostName": "derp27c.tailscale.com", - "IPv4": "178.156.152.91", - "IPv6": "2a01:4ff:f0:3913::1", - "CanPort80": true - }, - { - "Name": "27e", - "RegionID": 27, - "HostName": "derp27e.tailscale.com", - "IPv4": "178.156.134.232", - "IPv6": "2a01:4ff:f0:28d4::1", - "CanPort80": true - }, - { - "Name": "27b", - "RegionID": 27, - "HostName": "derp27b.tailscale.com", - "IPv4": "5.161.218.233", - "IPv6": "2a01:4ff:f0:3db9::1", - "CanPort80": true - } - ] - }, - "28": { - "RegionID": 28, - "RegionCode": "hel", - "RegionName": "Helsinki", - "Latitude": 60.170833, - "Longitude": 24.9375, - "Nodes": [ - { - "Name": "28c", - "RegionID": 28, - "HostName": "derp28c.tailscale.com", - "IPv4": "95.217.2.165", - "IPv6": "2a01:4f9:c012:cd74::1", - "CanPort80": true - }, - { - "Name": "28d", - "RegionID": 28, - "HostName": "derp28d.tailscale.com", - "IPv4": "157.180.28.32", - "IPv6": "2a01:4f9:c012:2e5b::1", - "CanPort80": true - }, - { - "Name": "28b", - "RegionID": 28, - "HostName": "derp28b.tailscale.com", - "IPv4": "65.109.143.62", - "IPv6": "2a01:4f9:c012:d55c::1", - "CanPort80": true - } - ] - }, - "3": { - "RegionID": 3, - "RegionCode": "sin", - "RegionName": "Singapore", - "Latitude": 1.3521, - "Longitude": 103.8198, - "Nodes": [ - { - "Name": "3g", - "RegionID": 3, - "HostName": "derp3g.tailscale.com", - "IPv4": "172.237.72.79", - "IPv6": "2600:3c15::2000:adff:fe08:6fab", - "CanPort80": true - }, - { - "Name": "3f", - "RegionID": 3, - "HostName": "derp3f.tailscale.com", - "IPv4": "172.237.72.8", - "IPv6": "2600:3c15::2000:53ff:fe48:a668", - "CanPort80": true - }, - { - "Name": "3h", - "RegionID": 3, - "HostName": "derp3h.tailscale.com", - "IPv4": "172.237.66.30", - "IPv6": "2600:3c15::2000:3dff:fe44:50aa", - "CanPort80": true - }, - { - "Name": "3e", - "RegionID": 3, - "HostName": "derp3e.tailscale.com", - "IPv4": "172.237.72.43", - "IPv6": "2600:3c15::2000:6cff:fee4:d799", - "CanPort80": true - } - ] - }, - "4": { - "RegionID": 4, - "RegionCode": "fra", - "RegionName": "Frankfurt", - "Latitude": 50.1109, - "Longitude": 8.6821, - "Nodes": [ - { - "Name": "4h", - "RegionID": 4, - "HostName": "derp4h.tailscale.com", - "IPv4": "185.40.234.77", - "IPv6": "2a00:dd80:20::bcf", - "CanPort80": true - }, - { - "Name": "4g", - "RegionID": 4, - "HostName": "derp4g.tailscale.com", - "IPv4": "185.40.234.113", - "IPv6": "2a00:dd80:20::8f", - "CanPort80": true - }, - { - "Name": "4i", - "RegionID": 4, - "HostName": "derp4i.tailscale.com", - "IPv4": "185.40.234.53", - "IPv6": "2a00:dd80:20::8a6", - "CanPort80": true - }, - { - "Name": "4f", - "RegionID": 4, - "HostName": "derp4f.tailscale.com", - "IPv4": "185.40.234.219", - "IPv6": "2a00:dd80:20::a25", - "CanPort80": true - } - ] - }, - "5": { - "RegionID": 5, - "RegionCode": "syd", - "RegionName": "Sydney", - "Latitude": -33.867778, - "Longitude": 151.21, - "Nodes": [ - { - "Name": "5f", - "RegionID": 5, - "HostName": "derp5f.tailscale.com", - "IPv4": "172.105.166.103", - "IPv6": "2400:8907::2000:ccff:fe1f:80da", - "CanPort80": true - }, - { - "Name": "5g", - "RegionID": 5, - "HostName": "derp5g.tailscale.com", - "IPv4": "172.105.169.57", - "IPv6": "2400:8907::2000:2fff:fea7:57f4", - "CanPort80": true - }, - { - "Name": "5e", - "RegionID": 5, - "HostName": "derp5e.tailscale.com", - "IPv4": "172.105.179.230", - "IPv6": "2400:8907::2000:ceff:fe8d:4f4e", - "CanPort80": true - } - ] - }, - "6": { - "RegionID": 6, - "RegionCode": "blr", - "RegionName": "Bengaluru", - "Latitude": 12.9716, - "Longitude": 77.5946, - "Nodes": [ - { - "Name": "6a", - "RegionID": 6, - "HostName": "derp6.tailscale.com", - "IPv4": "68.183.90.120", - "IPv6": "2400:6180:100:d0::982:d001", - "CanPort80": true - } - ] - }, - "7": { - "RegionID": 7, - "RegionCode": "tok", - "RegionName": "Tokyo", - "Latitude": 35.6764, - "Longitude": 139.65, - "Nodes": [ - { - "Name": "7g", - "RegionID": 7, - "HostName": "derp7g.tailscale.com", - "IPv4": "172.238.6.179", - "IPv6": "2600:3c18::2000:3fff:fe80:3ebd", - "CanPort80": true - }, - { - "Name": "7f", - "RegionID": 7, - "HostName": "derp7f.tailscale.com", - "IPv4": "172.238.6.34", - "IPv6": "2600:3c18::2000:acff:fe8e:3ed5", - "CanPort80": true - }, - { - "Name": "7h", - "RegionID": 7, - "HostName": "derp7h.tailscale.com", - "IPv4": "172.237.28.183", - "IPv6": "2600:3c18::2000:b1ff:fea9:4560", - "CanPort80": true - }, - { - "Name": "7e", - "RegionID": 7, - "HostName": "derp7e.tailscale.com", - "IPv4": "172.238.6.180", - "IPv6": "2600:3c18::2000:60ff:fe0f:6e83", - "STUNOnly": true, - "CanPort80": true - } - ] - }, - "8": { - "RegionID": 8, - "RegionCode": "lhr", - "RegionName": "London", - "Latitude": 51.5072, - "Longitude": 0.1276, - "Nodes": [ - { - "Name": "8f", - "RegionID": 8, - "HostName": "derp8f.tailscale.com", - "IPv4": "176.58.88.183", - "IPv6": "2a00:dd80:3a::dfa", - "CanPort80": true - }, - { - "Name": "8g", - "RegionID": 8, - "HostName": "derp8g.tailscale.com", - "IPv4": "176.58.92.254", - "IPv6": "2a00:dd80:3a::ed", - "CanPort80": true - }, - { - "Name": "8e", - "RegionID": 8, - "HostName": "derp8e.tailscale.com", - "IPv4": "176.58.92.144", - "IPv6": "2a00:dd80:3a::b33", - "CanPort80": true - } - ] - }, - "9": { - "RegionID": 9, - "RegionCode": "dfw", - "RegionName": "Dallas", - "Latitude": 32.779167, - "Longitude": -96.808889, - "Nodes": [ - { - "Name": "9e", - "RegionID": 9, - "HostName": "derp9e.tailscale.com", - "IPv4": "192.73.248.83", - "IPv6": "2607:f740:100::359", - "CanPort80": true - }, - { - "Name": "9f", - "RegionID": 9, - "HostName": "derp9f.tailscale.com", - "IPv4": "209.177.156.197", - "IPv6": "2607:f740:100::cad", - "CanPort80": true - }, - { - "Name": "9d", - "RegionID": 9, - "HostName": "derp9d.tailscale.com", - "IPv4": "209.177.156.94", - "IPv6": "2607:f740:100::c05", - "CanPort80": true - } - ] - } - } - }, - "DisplayMessages": null, - "TKAEnabled": false, - "TKAHead": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", - "Domain": "kratail2tid@passkey", - "DomainAuditLogID": "", - "UserProfiles": { - "7489538288452506": { - "ID": 7489538288452506, - "LoginName": "subnet-router.tail78f774.ts.net", - "DisplayName": "subnet-router" - } - } + "PacketFilterRules": 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.124.195.93": { - "peer_name": "exit-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-client/tailscaled.sock whois --json 100.124.195.93", - "response": null - }, - "100.116.18.24": { - "peer_name": "exit-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-client/tailscaled.sock whois --json 100.116.18.24", - "response": null - }, - "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.107.162.14": { - "peer_name": "group-a-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-client/tailscaled.sock whois --json 100.107.162.14", - "response": null - }, - "100.77.135.18": { - "peer_name": "group-b-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-client/tailscaled.sock whois --json 100.77.135.18", - "response": null - }, - "100.105.127.107": { - "peer_name": "multi-exit-router", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-client/tailscaled.sock whois --json 100.105.127.107", - "response": null - }, - "100.109.43.124": { - "peer_name": "router-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-client/tailscaled.sock whois --json 100.109.43.124", - "response": null - }, - "100.65.172.123": { - "peer_name": "router-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-client/tailscaled.sock whois --json 100.65.172.123", - "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 - } - }, "netmap": { - "SelfNode": { - "ID": 4031348162889210, - "StableID": "nf7BTTgoUY11CNTRL", - "Name": "tagged-client.tail78f774.ts.net.", - "User": 4031348162889210, - "Key": "nodekey:3011e53353e49142ea56ae11f81e0dceae0d667093d04ee086dcb1e9c5d3c844", - "DiscoKey": "discokey:64af337a7e8b61dce500da3b8f7d0a95fc6fe0e57c2f9e57b9b484a9b4acbe1e", - "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:47143", "10.65.0.27:47143", "172.17.0.1:47143"], - "Hostinfo": { - "Hostname": "tagged-client", - "RequestTags": ["tag:client"], - "Services": [ - { "Proto": "peerapi4", "Port": 41378 }, - { "Proto": "peerapi6", "Port": 41378 }, - { "Proto": "peerapi-dns-proxy", "Port": 1 } - ] - }, - "Created": "2026-02-23T00:13:11.017324028Z", - "Tags": ["tag:client"], - "MachineAuthorized": true, - "CapMap": { - "https://tailscale.com/cap/file-sharing": null, - "https://tailscale.com/cap/is-owner": null, - "https://tailscale.com/cap/ssh": null, - "https://tailscale.com/cap/tailnet-lock": null, - "probe-udp-lifetime": null, - "ssh-behavior-v1": null, - "ssh-env-vars": null, - "store-appc-routes": null, - "tailnet-display-name": ["kratail2tid@passkey"] - }, - "ComputedName": "tagged-client", - "ComputedNameWithHost": "tagged-client" - }, - "AllCaps": [ - "probe-udp-lifetime", - "store-appc-routes", - "https://tailscale.com/cap/file-sharing", - "ssh-behavior-v1", - "https://tailscale.com/cap/tailnet-lock", - "ssh-env-vars", - "tailnet-display-name", - "https://tailscale.com/cap/ssh", - "https://tailscale.com/cap/is-owner" - ], - "NodeKey": "nodekey:3011e53353e49142ea56ae11f81e0dceae0d667093d04ee086dcb1e9c5d3c844", - "MachineKey": "mkey:92af46ce21e67878315fe620545c207854ab6cec2d03adc106c50f64f9692711", "Peers": [], - "DNS": { - "Routes": { - "tail78f774.ts.net.": null, - "ts.net.": [{ "Addr": "199.247.155.53" }, { "Addr": "2620:111:8007::53" }] - }, - "Domains": ["tail78f774.ts.net"], - "Proxied": true, - "ExitNodeFilteredSet": [".ts.net", ".tailscale.net"] - }, - "PacketFilter": [], - "PacketFilterRules": null, - "SSHPolicy": { "rules": [] }, - "CollectServices": false, - "DERPMap": { - "Regions": { - "1": { - "RegionID": 1, - "RegionCode": "nyc", - "RegionName": "New York City", - "Latitude": 40.7128, - "Longitude": -74.006, - "Nodes": [ - { - "Name": "1h", - "RegionID": 1, - "HostName": "derp1h.tailscale.com", - "IPv4": "199.38.181.93", - "IPv6": "2607:f740:f::afd", - "CanPort80": true - }, - { - "Name": "1g", - "RegionID": 1, - "HostName": "derp1g.tailscale.com", - "IPv4": "209.177.145.120", - "IPv6": "2607:f740:f::3eb", - "CanPort80": true - }, - { - "Name": "1i", - "RegionID": 1, - "HostName": "derp1i.tailscale.com", - "IPv4": "199.38.181.103", - "IPv6": "2607:f740:f::e19", - "CanPort80": true - }, - { - "Name": "1f", - "RegionID": 1, - "HostName": "derp1f.tailscale.com", - "IPv4": "199.38.181.104", - "IPv6": "2607:f740:f::bc", - "CanPort80": true - } - ] - }, - "10": { - "RegionID": 10, - "RegionCode": "sea", - "RegionName": "Seattle", - "Latitude": 47.609722, - "Longitude": -122.333056, - "Nodes": [ - { - "Name": "10c", - "RegionID": 10, - "HostName": "derp10c.tailscale.com", - "IPv4": "192.73.240.121", - "IPv6": "2607:f740:14::40c", - "CanPort80": true - }, - { - "Name": "10d", - "RegionID": 10, - "HostName": "derp10d.tailscale.com", - "IPv4": "192.73.240.132", - "IPv6": "2607:f740:14::500", - "CanPort80": true - }, - { - "Name": "10b", - "RegionID": 10, - "HostName": "derp10b.tailscale.com", - "IPv4": "192.73.240.161", - "IPv6": "2607:f740:14::61c", - "CanPort80": true - } - ] - }, - "11": { - "RegionID": 11, - "RegionCode": "sao", - "RegionName": "São Paulo", - "Latitude": -23.55, - "Longitude": -46.633333, - "Nodes": [ - { - "Name": "11f", - "RegionID": 11, - "HostName": "derp11f.tailscale.com", - "IPv4": "172.237.61.197", - "IPv6": "2600:3c0d::2000:3bff:fe44:6166", - "CanPort80": true - }, - { - "Name": "11g", - "RegionID": 11, - "HostName": "derp11g.tailscale.com", - "IPv4": "172.237.61.190", - "IPv6": "2600:3c0d::2000:62ff:febe:2e67", - "CanPort80": true - }, - { - "Name": "11e", - "RegionID": 11, - "HostName": "derp11e.tailscale.com", - "IPv4": "172.237.61.194", - "IPv6": "2600:3c0d::2000:d2ff:fe43:1790", - "CanPort80": true - } - ] - }, - "12": { - "RegionID": 12, - "RegionCode": "ord", - "RegionName": "Chicago", - "Latitude": 41.881944, - "Longitude": -87.627778, - "Nodes": [ - { - "Name": "12e", - "RegionID": 12, - "HostName": "derp12e.tailscale.com", - "IPv4": "209.177.158.15", - "IPv6": "2607:f740:e::b17", - "CanPort80": true - }, - { - "Name": "12f", - "RegionID": 12, - "HostName": "derp12f.tailscale.com", - "IPv4": "199.38.182.118", - "IPv6": "2607:f740:e::4c8", - "CanPort80": true - }, - { - "Name": "12d", - "RegionID": 12, - "HostName": "derp12d.tailscale.com", - "IPv4": "209.177.158.246", - "IPv6": "2607:f740:e::811", - "CanPort80": true - } - ] - }, - "13": { - "RegionID": 13, - "RegionCode": "den", - "RegionName": "Denver", - "Latitude": 39.7392, - "Longitude": -104.9849, - "Nodes": [ - { - "Name": "13c", - "RegionID": 13, - "HostName": "derp13c.tailscale.com", - "IPv4": "192.73.242.28", - "IPv6": "2607:f740:16::5c", - "CanPort80": true - }, - { - "Name": "13d", - "RegionID": 13, - "HostName": "derp13d.tailscale.com", - "IPv4": "192.73.242.204", - "IPv6": "2607:f740:16::c23", - "CanPort80": true - }, - { - "Name": "13b", - "RegionID": 13, - "HostName": "derp13b.tailscale.com", - "IPv4": "192.73.242.187", - "IPv6": "2607:f740:16::640", - "CanPort80": true - } - ] - }, - "14": { - "RegionID": 14, - "RegionCode": "ams", - "RegionName": "Amsterdam", - "Latitude": 52.372778, - "Longitude": 4.893611, - "Nodes": [ - { - "Name": "14c", - "RegionID": 14, - "HostName": "derp14c.tailscale.com", - "IPv4": "176.58.93.147", - "IPv6": "2a00:dd80:3c::b09", - "CanPort80": true - }, - { - "Name": "14d", - "RegionID": 14, - "HostName": "derp14d.tailscale.com", - "IPv4": "176.58.93.154", - "IPv6": "2a00:dd80:3c::3d5", - "CanPort80": true - }, - { - "Name": "14b", - "RegionID": 14, - "HostName": "derp14b.tailscale.com", - "IPv4": "176.58.93.248", - "IPv6": "2a00:dd80:3c::807", - "CanPort80": true - } - ] - }, - "15": { - "RegionID": 15, - "RegionCode": "jnb", - "RegionName": "Johannesburg", - "Latitude": -26.204444, - "Longitude": 28.045556, - "Nodes": [ - { - "Name": "15c", - "RegionID": 15, - "HostName": "derp15c.tailscale.com", - "IPv4": "102.67.165.185", - "IPv6": "2c0f:edb0:0:10::b59", - "CanPort80": true - }, - { - "Name": "15d", - "RegionID": 15, - "HostName": "derp15d.tailscale.com", - "IPv4": "102.67.165.36", - "IPv6": "2c0f:edb0:0:10::599", - "CanPort80": true - }, - { - "Name": "15b", - "RegionID": 15, - "HostName": "derp15b.tailscale.com", - "IPv4": "102.67.165.90", - "IPv6": "2c0f:edb0:0:10::963", - "CanPort80": true - } - ] - }, - "16": { - "RegionID": 16, - "RegionCode": "mia", - "RegionName": "Miami", - "Latitude": 25.78, - "Longitude": -80.21, - "Nodes": [ - { - "Name": "16c", - "RegionID": 16, - "HostName": "derp16c.tailscale.com", - "IPv4": "192.73.243.229", - "IPv6": "2607:f740:17::4e4", - "CanPort80": true - }, - { - "Name": "16d", - "RegionID": 16, - "HostName": "derp16d.tailscale.com", - "IPv4": "192.73.243.141", - "IPv6": "2607:f740:17::475", - "CanPort80": true - }, - { - "Name": "16b", - "RegionID": 16, - "HostName": "derp16b.tailscale.com", - "IPv4": "192.73.243.135", - "IPv6": "2607:f740:17::476", - "CanPort80": true - } - ] - }, - "17": { - "RegionID": 17, - "RegionCode": "lax", - "RegionName": "Los Angeles", - "Latitude": 34.05, - "Longitude": -118.25, - "Nodes": [ - { - "Name": "17c", - "RegionID": 17, - "HostName": "derp17c.tailscale.com", - "IPv4": "208.111.40.12", - "IPv6": "2607:f740:c::10", - "CanPort80": true - }, - { - "Name": "17d", - "RegionID": 17, - "HostName": "derp17d.tailscale.com", - "IPv4": "208.111.40.216", - "IPv6": "2607:f740:c::e1b", - "CanPort80": true - }, - { - "Name": "17b", - "RegionID": 17, - "HostName": "derp17b.tailscale.com", - "IPv4": "192.73.244.245", - "IPv6": "2607:f740:c::646", - "CanPort80": true - } - ] - }, - "18": { - "RegionID": 18, - "RegionCode": "par", - "RegionName": "Paris", - "Latitude": 48.856667, - "Longitude": 2.352222, - "Nodes": [ - { - "Name": "18c", - "RegionID": 18, - "HostName": "derp18c.tailscale.com", - "IPv4": "176.58.90.207", - "IPv6": "2a00:dd80:3e::c19", - "CanPort80": true - }, - { - "Name": "18d", - "RegionID": 18, - "HostName": "derp18d.tailscale.com", - "IPv4": "176.58.90.104", - "IPv6": "2a00:dd80:3e::f2e", - "CanPort80": true - }, - { - "Name": "18b", - "RegionID": 18, - "HostName": "derp18b.tailscale.com", - "IPv4": "176.58.90.147", - "IPv6": "2a00:dd80:3e::363", - "CanPort80": true - } - ] - }, - "19": { - "RegionID": 19, - "RegionCode": "mad", - "RegionName": "Madrid", - "Latitude": 40.416944, - "Longitude": -3.703333, - "Nodes": [ - { - "Name": "19c", - "RegionID": 19, - "HostName": "derp19c.tailscale.com", - "IPv4": "45.159.97.61", - "IPv6": "2a00:dd80:14:10::20", - "CanPort80": true - }, - { - "Name": "19d", - "RegionID": 19, - "HostName": "derp19d.tailscale.com", - "IPv4": "45.159.97.233", - "IPv6": "2a00:dd80:14:10::34a", - "CanPort80": true - }, - { - "Name": "19b", - "RegionID": 19, - "HostName": "derp19b.tailscale.com", - "IPv4": "45.159.97.144", - "IPv6": "2a00:dd80:14:10::335", - "CanPort80": true - } - ] - }, - "2": { - "RegionID": 2, - "RegionCode": "sfo", - "RegionName": "San Francisco", - "Latitude": 37.7775, - "Longitude": -122.416389, - "Nodes": [ - { - "Name": "2e", - "RegionID": 2, - "HostName": "derp2e.tailscale.com", - "IPv4": "192.73.252.134", - "IPv6": "2607:f740:0:3f::44c", - "CanPort80": true - }, - { - "Name": "2f", - "RegionID": 2, - "HostName": "derp2f.tailscale.com", - "IPv4": "208.111.34.178", - "IPv6": "2607:f740:0:3f::f4", - "CanPort80": true - }, - { - "Name": "2d", - "RegionID": 2, - "HostName": "derp2d.tailscale.com", - "IPv4": "192.73.252.65", - "IPv6": "2607:f740:0:3f::287", - "CanPort80": true - } - ] - }, - "20": { - "RegionID": 20, - "RegionCode": "hkg", - "RegionName": "Hong Kong", - "Latitude": 22.3193, - "Longitude": 114.1694, - "Nodes": [ - { - "Name": "20c", - "RegionID": 20, - "HostName": "derp20c.tailscale.com", - "IPv4": "205.147.105.30", - "IPv6": "2403:2500:8000:1::5fb", - "CanPort80": true - }, - { - "Name": "20d", - "RegionID": 20, - "HostName": "derp20d.tailscale.com", - "IPv4": "205.147.105.78", - "IPv6": "2403:2500:8000:1::e9a", - "CanPort80": true - }, - { - "Name": "20b", - "RegionID": 20, - "HostName": "derp20b.tailscale.com", - "IPv4": "103.6.84.152", - "IPv6": "2403:2500:8000:1::ef6", - "CanPort80": true - } - ] - }, - "21": { - "RegionID": 21, - "RegionCode": "tor", - "RegionName": "Toronto", - "Latitude": 43.741667, - "Longitude": -79.373333, - "Nodes": [ - { - "Name": "21c", - "RegionID": 21, - "HostName": "derp21c.tailscale.com", - "IPv4": "162.248.221.215", - "IPv6": "2607:f740:50::f10", - "CanPort80": true - }, - { - "Name": "21d", - "RegionID": 21, - "HostName": "derp21d.tailscale.com", - "IPv4": "162.248.221.248", - "IPv6": "2607:f740:50::ca4", - "CanPort80": true - }, - { - "Name": "21b", - "RegionID": 21, - "HostName": "derp21b.tailscale.com", - "IPv4": "162.248.221.199", - "IPv6": "2607:f740:50::1d1", - "CanPort80": true - } - ] - }, - "22": { - "RegionID": 22, - "RegionCode": "waw", - "RegionName": "Warsaw", - "Latitude": 52.23, - "Longitude": 21.011111, - "Nodes": [ - { - "Name": "22c", - "RegionID": 22, - "HostName": "derp22c.tailscale.com", - "IPv4": "45.159.98.253", - "IPv6": "2a00:dd80:40:100::3f", - "CanPort80": true - }, - { - "Name": "22d", - "RegionID": 22, - "HostName": "derp22d.tailscale.com", - "IPv4": "45.159.98.145", - "IPv6": "2a00:dd80:40:100::211", - "CanPort80": true - }, - { - "Name": "22b", - "RegionID": 22, - "HostName": "derp22b.tailscale.com", - "IPv4": "45.159.98.196", - "IPv6": "2a00:dd80:40:100::316", - "CanPort80": true - } - ] - }, - "23": { - "RegionID": 23, - "RegionCode": "dbi", - "RegionName": "Dubai", - "Latitude": 25.263056, - "Longitude": 55.297222, - "Nodes": [ - { - "Name": "23c", - "RegionID": 23, - "HostName": "derp23c.tailscale.com", - "IPv4": "185.34.3.207", - "IPv6": "2a00:dd80:3f:100::a50", - "CanPort80": true - }, - { - "Name": "23d", - "RegionID": 23, - "HostName": "derp23d.tailscale.com", - "IPv4": "185.34.3.75", - "IPv6": "2a00:dd80:3f:100::97e", - "CanPort80": true - }, - { - "Name": "23b", - "RegionID": 23, - "HostName": "derp23b.tailscale.com", - "IPv4": "185.34.3.232", - "IPv6": "2a00:dd80:3f:100::76f", - "CanPort80": true - } - ] - }, - "24": { - "RegionID": 24, - "RegionCode": "hnl", - "RegionName": "Honolulu", - "Latitude": 21.306944, - "Longitude": -157.858333, - "Nodes": [ - { - "Name": "24c", - "RegionID": 24, - "HostName": "derp24c.tailscale.com", - "IPv4": "208.83.233.233", - "IPv6": "2001:19f0:c000:c591:5400:04ff:fe26:2c5f", - "CanPort80": true - }, - { - "Name": "24d", - "RegionID": 24, - "HostName": "derp24d.tailscale.com", - "IPv4": "208.72.155.133", - "IPv6": "2001:19f0:c000:c564:5400:04ff:fe26:2ba8", - "CanPort80": true - }, - { - "Name": "24b", - "RegionID": 24, - "HostName": "derp24b.tailscale.com", - "IPv4": "208.83.234.151", - "IPv6": "2001:19f0:c000:c586:5400:04ff:fe26:2ba6", - "CanPort80": true - } - ] - }, - "25": { - "RegionID": 25, - "RegionCode": "nai", - "RegionName": "Nairobi", - "Latitude": -1.286389, - "Longitude": 36.817222, - "Nodes": [ - { - "Name": "25c", - "RegionID": 25, - "HostName": "derp25c.tailscale.com", - "IPv4": "102.67.167.37", - "IPv6": "2c0f:edb0:2000:1::2c7", - "CanPort80": true - }, - { - "Name": "25d", - "RegionID": 25, - "HostName": "derp25d.tailscale.com", - "IPv4": "102.67.167.188", - "IPv6": "2c0f:edb0:2000:1::188", - "CanPort80": true - }, - { - "Name": "25b", - "RegionID": 25, - "HostName": "derp25b.tailscale.com", - "IPv4": "102.67.167.245", - "IPv6": "2c0f:edb0:2000:1::2e9", - "CanPort80": true - } - ] - }, - "26": { - "RegionID": 26, - "RegionCode": "nue", - "RegionName": "Nuremberg", - "Latitude": 49.453889, - "Longitude": 11.0775, - "Nodes": [ - { - "Name": "26c", - "RegionID": 26, - "HostName": "derp26c.tailscale.com", - "IPv4": "49.12.193.137", - "IPv6": "2a01:4f8:1c1c:5c70::1", - "CanPort80": true - }, - { - "Name": "26d", - "RegionID": 26, - "HostName": "derp26d.tailscale.com", - "IPv4": "49.13.204.141", - "IPv6": "2a01:4f8:1c0c:7d06::1", - "CanPort80": true - }, - { - "Name": "26b", - "RegionID": 26, - "HostName": "derp26b.tailscale.com", - "IPv4": "167.235.72.200", - "IPv6": "2a01:4f8:1c1c:47b6::1", - "CanPort80": true - } - ] - }, - "27": { - "RegionID": 27, - "RegionCode": "iad", - "RegionName": "Ashburn", - "Latitude": 39.03, - "Longitude": -77.471111, - "Nodes": [ - { - "Name": "27d", - "RegionID": 27, - "HostName": "derp27d.tailscale.com", - "IPv4": "178.156.152.106", - "IPv6": "2a01:4ff:f0:3c8e::1", - "CanPort80": true - }, - { - "Name": "27c", - "RegionID": 27, - "HostName": "derp27c.tailscale.com", - "IPv4": "178.156.152.91", - "IPv6": "2a01:4ff:f0:3913::1", - "CanPort80": true - }, - { - "Name": "27e", - "RegionID": 27, - "HostName": "derp27e.tailscale.com", - "IPv4": "178.156.134.232", - "IPv6": "2a01:4ff:f0:28d4::1", - "CanPort80": true - }, - { - "Name": "27b", - "RegionID": 27, - "HostName": "derp27b.tailscale.com", - "IPv4": "5.161.218.233", - "IPv6": "2a01:4ff:f0:3db9::1", - "CanPort80": true - } - ] - }, - "28": { - "RegionID": 28, - "RegionCode": "hel", - "RegionName": "Helsinki", - "Latitude": 60.170833, - "Longitude": 24.9375, - "Nodes": [ - { - "Name": "28c", - "RegionID": 28, - "HostName": "derp28c.tailscale.com", - "IPv4": "95.217.2.165", - "IPv6": "2a01:4f9:c012:cd74::1", - "CanPort80": true - }, - { - "Name": "28d", - "RegionID": 28, - "HostName": "derp28d.tailscale.com", - "IPv4": "157.180.28.32", - "IPv6": "2a01:4f9:c012:2e5b::1", - "CanPort80": true - }, - { - "Name": "28b", - "RegionID": 28, - "HostName": "derp28b.tailscale.com", - "IPv4": "65.109.143.62", - "IPv6": "2a01:4f9:c012:d55c::1", - "CanPort80": true - } - ] - }, - "3": { - "RegionID": 3, - "RegionCode": "sin", - "RegionName": "Singapore", - "Latitude": 1.3521, - "Longitude": 103.8198, - "Nodes": [ - { - "Name": "3g", - "RegionID": 3, - "HostName": "derp3g.tailscale.com", - "IPv4": "172.237.72.79", - "IPv6": "2600:3c15::2000:adff:fe08:6fab", - "CanPort80": true - }, - { - "Name": "3f", - "RegionID": 3, - "HostName": "derp3f.tailscale.com", - "IPv4": "172.237.72.8", - "IPv6": "2600:3c15::2000:53ff:fe48:a668", - "CanPort80": true - }, - { - "Name": "3h", - "RegionID": 3, - "HostName": "derp3h.tailscale.com", - "IPv4": "172.237.66.30", - "IPv6": "2600:3c15::2000:3dff:fe44:50aa", - "CanPort80": true - }, - { - "Name": "3e", - "RegionID": 3, - "HostName": "derp3e.tailscale.com", - "IPv4": "172.237.72.43", - "IPv6": "2600:3c15::2000:6cff:fee4:d799", - "CanPort80": true - } - ] - }, - "4": { - "RegionID": 4, - "RegionCode": "fra", - "RegionName": "Frankfurt", - "Latitude": 50.1109, - "Longitude": 8.6821, - "Nodes": [ - { - "Name": "4h", - "RegionID": 4, - "HostName": "derp4h.tailscale.com", - "IPv4": "185.40.234.77", - "IPv6": "2a00:dd80:20::bcf", - "CanPort80": true - }, - { - "Name": "4g", - "RegionID": 4, - "HostName": "derp4g.tailscale.com", - "IPv4": "185.40.234.113", - "IPv6": "2a00:dd80:20::8f", - "CanPort80": true - }, - { - "Name": "4i", - "RegionID": 4, - "HostName": "derp4i.tailscale.com", - "IPv4": "185.40.234.53", - "IPv6": "2a00:dd80:20::8a6", - "CanPort80": true - }, - { - "Name": "4f", - "RegionID": 4, - "HostName": "derp4f.tailscale.com", - "IPv4": "185.40.234.219", - "IPv6": "2a00:dd80:20::a25", - "CanPort80": true - } - ] - }, - "5": { - "RegionID": 5, - "RegionCode": "syd", - "RegionName": "Sydney", - "Latitude": -33.867778, - "Longitude": 151.21, - "Nodes": [ - { - "Name": "5f", - "RegionID": 5, - "HostName": "derp5f.tailscale.com", - "IPv4": "172.105.166.103", - "IPv6": "2400:8907::2000:ccff:fe1f:80da", - "CanPort80": true - }, - { - "Name": "5g", - "RegionID": 5, - "HostName": "derp5g.tailscale.com", - "IPv4": "172.105.169.57", - "IPv6": "2400:8907::2000:2fff:fea7:57f4", - "CanPort80": true - }, - { - "Name": "5e", - "RegionID": 5, - "HostName": "derp5e.tailscale.com", - "IPv4": "172.105.179.230", - "IPv6": "2400:8907::2000:ceff:fe8d:4f4e", - "CanPort80": true - } - ] - }, - "6": { - "RegionID": 6, - "RegionCode": "blr", - "RegionName": "Bengaluru", - "Latitude": 12.9716, - "Longitude": 77.5946, - "Nodes": [ - { - "Name": "6a", - "RegionID": 6, - "HostName": "derp6.tailscale.com", - "IPv4": "68.183.90.120", - "IPv6": "2400:6180:100:d0::982:d001", - "CanPort80": true - } - ] - }, - "7": { - "RegionID": 7, - "RegionCode": "tok", - "RegionName": "Tokyo", - "Latitude": 35.6764, - "Longitude": 139.65, - "Nodes": [ - { - "Name": "7g", - "RegionID": 7, - "HostName": "derp7g.tailscale.com", - "IPv4": "172.238.6.179", - "IPv6": "2600:3c18::2000:3fff:fe80:3ebd", - "CanPort80": true - }, - { - "Name": "7f", - "RegionID": 7, - "HostName": "derp7f.tailscale.com", - "IPv4": "172.238.6.34", - "IPv6": "2600:3c18::2000:acff:fe8e:3ed5", - "CanPort80": true - }, - { - "Name": "7h", - "RegionID": 7, - "HostName": "derp7h.tailscale.com", - "IPv4": "172.237.28.183", - "IPv6": "2600:3c18::2000:b1ff:fea9:4560", - "CanPort80": true - }, - { - "Name": "7e", - "RegionID": 7, - "HostName": "derp7e.tailscale.com", - "IPv4": "172.238.6.180", - "IPv6": "2600:3c18::2000:60ff:fe0f:6e83", - "STUNOnly": true, - "CanPort80": true - } - ] - }, - "8": { - "RegionID": 8, - "RegionCode": "lhr", - "RegionName": "London", - "Latitude": 51.5072, - "Longitude": 0.1276, - "Nodes": [ - { - "Name": "8f", - "RegionID": 8, - "HostName": "derp8f.tailscale.com", - "IPv4": "176.58.88.183", - "IPv6": "2a00:dd80:3a::dfa", - "CanPort80": true - }, - { - "Name": "8g", - "RegionID": 8, - "HostName": "derp8g.tailscale.com", - "IPv4": "176.58.92.254", - "IPv6": "2a00:dd80:3a::ed", - "CanPort80": true - }, - { - "Name": "8e", - "RegionID": 8, - "HostName": "derp8e.tailscale.com", - "IPv4": "176.58.92.144", - "IPv6": "2a00:dd80:3a::b33", - "CanPort80": true - } - ] - }, - "9": { - "RegionID": 9, - "RegionCode": "dfw", - "RegionName": "Dallas", - "Latitude": 32.779167, - "Longitude": -96.808889, - "Nodes": [ - { - "Name": "9e", - "RegionID": 9, - "HostName": "derp9e.tailscale.com", - "IPv4": "192.73.248.83", - "IPv6": "2607:f740:100::359", - "CanPort80": true - }, - { - "Name": "9f", - "RegionID": 9, - "HostName": "derp9f.tailscale.com", - "IPv4": "209.177.156.197", - "IPv6": "2607:f740:100::cad", - "CanPort80": true - }, - { - "Name": "9d", - "RegionID": 9, - "HostName": "derp9d.tailscale.com", - "IPv4": "209.177.156.94", - "IPv6": "2607:f740:100::c05", - "CanPort80": true - } - ] - } - } - }, - "DisplayMessages": null, - "TKAEnabled": false, - "TKAHead": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", - "Domain": "kratail2tid@passkey", - "DomainAuditLogID": "", - "UserProfiles": { - "4031348162889210": { - "ID": 4031348162889210, - "LoginName": "tagged-client.tail78f774.ts.net", - "DisplayName": "tagged-client" - } - } + "PacketFilterRules": 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.124.195.93": { - "peer_name": "exit-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-prod/tailscaled.sock whois --json 100.124.195.93", - "response": null - }, - "100.116.18.24": { - "peer_name": "exit-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-prod/tailscaled.sock whois --json 100.116.18.24", - "response": null - }, - "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.107.162.14": { - "peer_name": "group-a-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-prod/tailscaled.sock whois --json 100.107.162.14", - "response": null - }, - "100.77.135.18": { - "peer_name": "group-b-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-prod/tailscaled.sock whois --json 100.77.135.18", - "response": null - }, - "100.105.127.107": { - "peer_name": "multi-exit-router", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-prod/tailscaled.sock whois --json 100.105.127.107", - "response": null - }, - "100.109.43.124": { - "peer_name": "router-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-prod/tailscaled.sock whois --json 100.109.43.124", - "response": null - }, - "100.65.172.123": { - "peer_name": "router-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-prod/tailscaled.sock whois --json 100.65.172.123", - "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 - } - }, "netmap": { - "SelfNode": { - "ID": 301794218943819, - "StableID": "neJag6dgM311CNTRL", - "Name": "tagged-prod.tail78f774.ts.net.", - "User": 301794218943819, - "Key": "nodekey:54c79503322a5d0a9701ce19d11963cfff9c05667ac06ef976af86275ba7080e", - "DiscoKey": "discokey:5e4985009b42b7c82ffb2cb5fa735a90f967f6b3f886b71268ebbeffa324556b", - "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:46164", "10.65.0.27:46164", "172.17.0.1:46164"], - "Hostinfo": { - "Hostname": "tagged-prod", - "Services": [ - { "Proto": "peerapi4", "Port": 37678 }, - { "Proto": "peerapi6", "Port": 37678 }, - { "Proto": "peerapi-dns-proxy", "Port": 1 } - ] - }, - "Created": "2026-02-20T14:03:12.89283153Z", - "Tags": ["tag:prod"], - "MachineAuthorized": true, - "CapMap": { - "https://tailscale.com/cap/file-sharing": null, - "https://tailscale.com/cap/is-owner": null, - "https://tailscale.com/cap/ssh": null, - "https://tailscale.com/cap/tailnet-lock": null, - "probe-udp-lifetime": null, - "ssh-behavior-v1": null, - "ssh-env-vars": null, - "store-appc-routes": null, - "tailnet-display-name": ["kratail2tid@passkey"] - }, - "ComputedName": "tagged-prod", - "ComputedNameWithHost": "tagged-prod" - }, - "AllCaps": [ - "ssh-env-vars", - "tailnet-display-name", - "https://tailscale.com/cap/ssh", - "https://tailscale.com/cap/is-owner", - "store-appc-routes", - "ssh-behavior-v1", - "https://tailscale.com/cap/tailnet-lock", - "probe-udp-lifetime", - "https://tailscale.com/cap/file-sharing" - ], - "NodeKey": "nodekey:54c79503322a5d0a9701ce19d11963cfff9c05667ac06ef976af86275ba7080e", - "MachineKey": "mkey:af805e02d1594ab20eaf3e2df5b379eec6453fa649344fcd564b7bae20e46a63", "Peers": [], - "DNS": { - "Routes": { - "tail78f774.ts.net.": null, - "ts.net.": [{ "Addr": "199.247.155.53" }, { "Addr": "2620:111:8007::53" }] - }, - "Domains": ["tail78f774.ts.net"], - "Proxied": true, - "ExitNodeFilteredSet": [".ts.net", ".tailscale.net"] - }, - "PacketFilter": [], - "PacketFilterRules": null, - "SSHPolicy": { "rules": [] }, - "CollectServices": false, - "DERPMap": { - "Regions": { - "1": { - "RegionID": 1, - "RegionCode": "nyc", - "RegionName": "New York City", - "Latitude": 40.7128, - "Longitude": -74.006, - "Nodes": [ - { - "Name": "1h", - "RegionID": 1, - "HostName": "derp1h.tailscale.com", - "IPv4": "199.38.181.93", - "IPv6": "2607:f740:f::afd", - "CanPort80": true - }, - { - "Name": "1g", - "RegionID": 1, - "HostName": "derp1g.tailscale.com", - "IPv4": "209.177.145.120", - "IPv6": "2607:f740:f::3eb", - "CanPort80": true - }, - { - "Name": "1i", - "RegionID": 1, - "HostName": "derp1i.tailscale.com", - "IPv4": "199.38.181.103", - "IPv6": "2607:f740:f::e19", - "CanPort80": true - }, - { - "Name": "1f", - "RegionID": 1, - "HostName": "derp1f.tailscale.com", - "IPv4": "199.38.181.104", - "IPv6": "2607:f740:f::bc", - "CanPort80": true - } - ] - }, - "10": { - "RegionID": 10, - "RegionCode": "sea", - "RegionName": "Seattle", - "Latitude": 47.609722, - "Longitude": -122.333056, - "Nodes": [ - { - "Name": "10c", - "RegionID": 10, - "HostName": "derp10c.tailscale.com", - "IPv4": "192.73.240.121", - "IPv6": "2607:f740:14::40c", - "CanPort80": true - }, - { - "Name": "10d", - "RegionID": 10, - "HostName": "derp10d.tailscale.com", - "IPv4": "192.73.240.132", - "IPv6": "2607:f740:14::500", - "CanPort80": true - }, - { - "Name": "10b", - "RegionID": 10, - "HostName": "derp10b.tailscale.com", - "IPv4": "192.73.240.161", - "IPv6": "2607:f740:14::61c", - "CanPort80": true - } - ] - }, - "11": { - "RegionID": 11, - "RegionCode": "sao", - "RegionName": "São Paulo", - "Latitude": -23.55, - "Longitude": -46.633333, - "Nodes": [ - { - "Name": "11f", - "RegionID": 11, - "HostName": "derp11f.tailscale.com", - "IPv4": "172.237.61.197", - "IPv6": "2600:3c0d::2000:3bff:fe44:6166", - "CanPort80": true - }, - { - "Name": "11g", - "RegionID": 11, - "HostName": "derp11g.tailscale.com", - "IPv4": "172.237.61.190", - "IPv6": "2600:3c0d::2000:62ff:febe:2e67", - "CanPort80": true - }, - { - "Name": "11e", - "RegionID": 11, - "HostName": "derp11e.tailscale.com", - "IPv4": "172.237.61.194", - "IPv6": "2600:3c0d::2000:d2ff:fe43:1790", - "CanPort80": true - } - ] - }, - "12": { - "RegionID": 12, - "RegionCode": "ord", - "RegionName": "Chicago", - "Latitude": 41.881944, - "Longitude": -87.627778, - "Nodes": [ - { - "Name": "12e", - "RegionID": 12, - "HostName": "derp12e.tailscale.com", - "IPv4": "209.177.158.15", - "IPv6": "2607:f740:e::b17", - "CanPort80": true - }, - { - "Name": "12f", - "RegionID": 12, - "HostName": "derp12f.tailscale.com", - "IPv4": "199.38.182.118", - "IPv6": "2607:f740:e::4c8", - "CanPort80": true - }, - { - "Name": "12d", - "RegionID": 12, - "HostName": "derp12d.tailscale.com", - "IPv4": "209.177.158.246", - "IPv6": "2607:f740:e::811", - "CanPort80": true - } - ] - }, - "13": { - "RegionID": 13, - "RegionCode": "den", - "RegionName": "Denver", - "Latitude": 39.7392, - "Longitude": -104.9849, - "Nodes": [ - { - "Name": "13c", - "RegionID": 13, - "HostName": "derp13c.tailscale.com", - "IPv4": "192.73.242.28", - "IPv6": "2607:f740:16::5c", - "CanPort80": true - }, - { - "Name": "13d", - "RegionID": 13, - "HostName": "derp13d.tailscale.com", - "IPv4": "192.73.242.204", - "IPv6": "2607:f740:16::c23", - "CanPort80": true - }, - { - "Name": "13b", - "RegionID": 13, - "HostName": "derp13b.tailscale.com", - "IPv4": "192.73.242.187", - "IPv6": "2607:f740:16::640", - "CanPort80": true - } - ] - }, - "14": { - "RegionID": 14, - "RegionCode": "ams", - "RegionName": "Amsterdam", - "Latitude": 52.372778, - "Longitude": 4.893611, - "Nodes": [ - { - "Name": "14c", - "RegionID": 14, - "HostName": "derp14c.tailscale.com", - "IPv4": "176.58.93.147", - "IPv6": "2a00:dd80:3c::b09", - "CanPort80": true - }, - { - "Name": "14d", - "RegionID": 14, - "HostName": "derp14d.tailscale.com", - "IPv4": "176.58.93.154", - "IPv6": "2a00:dd80:3c::3d5", - "CanPort80": true - }, - { - "Name": "14b", - "RegionID": 14, - "HostName": "derp14b.tailscale.com", - "IPv4": "176.58.93.248", - "IPv6": "2a00:dd80:3c::807", - "CanPort80": true - } - ] - }, - "15": { - "RegionID": 15, - "RegionCode": "jnb", - "RegionName": "Johannesburg", - "Latitude": -26.204444, - "Longitude": 28.045556, - "Nodes": [ - { - "Name": "15c", - "RegionID": 15, - "HostName": "derp15c.tailscale.com", - "IPv4": "102.67.165.185", - "IPv6": "2c0f:edb0:0:10::b59", - "CanPort80": true - }, - { - "Name": "15d", - "RegionID": 15, - "HostName": "derp15d.tailscale.com", - "IPv4": "102.67.165.36", - "IPv6": "2c0f:edb0:0:10::599", - "CanPort80": true - }, - { - "Name": "15b", - "RegionID": 15, - "HostName": "derp15b.tailscale.com", - "IPv4": "102.67.165.90", - "IPv6": "2c0f:edb0:0:10::963", - "CanPort80": true - } - ] - }, - "16": { - "RegionID": 16, - "RegionCode": "mia", - "RegionName": "Miami", - "Latitude": 25.78, - "Longitude": -80.21, - "Nodes": [ - { - "Name": "16c", - "RegionID": 16, - "HostName": "derp16c.tailscale.com", - "IPv4": "192.73.243.229", - "IPv6": "2607:f740:17::4e4", - "CanPort80": true - }, - { - "Name": "16d", - "RegionID": 16, - "HostName": "derp16d.tailscale.com", - "IPv4": "192.73.243.141", - "IPv6": "2607:f740:17::475", - "CanPort80": true - }, - { - "Name": "16b", - "RegionID": 16, - "HostName": "derp16b.tailscale.com", - "IPv4": "192.73.243.135", - "IPv6": "2607:f740:17::476", - "CanPort80": true - } - ] - }, - "17": { - "RegionID": 17, - "RegionCode": "lax", - "RegionName": "Los Angeles", - "Latitude": 34.05, - "Longitude": -118.25, - "Nodes": [ - { - "Name": "17c", - "RegionID": 17, - "HostName": "derp17c.tailscale.com", - "IPv4": "208.111.40.12", - "IPv6": "2607:f740:c::10", - "CanPort80": true - }, - { - "Name": "17d", - "RegionID": 17, - "HostName": "derp17d.tailscale.com", - "IPv4": "208.111.40.216", - "IPv6": "2607:f740:c::e1b", - "CanPort80": true - }, - { - "Name": "17b", - "RegionID": 17, - "HostName": "derp17b.tailscale.com", - "IPv4": "192.73.244.245", - "IPv6": "2607:f740:c::646", - "CanPort80": true - } - ] - }, - "18": { - "RegionID": 18, - "RegionCode": "par", - "RegionName": "Paris", - "Latitude": 48.856667, - "Longitude": 2.352222, - "Nodes": [ - { - "Name": "18c", - "RegionID": 18, - "HostName": "derp18c.tailscale.com", - "IPv4": "176.58.90.207", - "IPv6": "2a00:dd80:3e::c19", - "CanPort80": true - }, - { - "Name": "18d", - "RegionID": 18, - "HostName": "derp18d.tailscale.com", - "IPv4": "176.58.90.104", - "IPv6": "2a00:dd80:3e::f2e", - "CanPort80": true - }, - { - "Name": "18b", - "RegionID": 18, - "HostName": "derp18b.tailscale.com", - "IPv4": "176.58.90.147", - "IPv6": "2a00:dd80:3e::363", - "CanPort80": true - } - ] - }, - "19": { - "RegionID": 19, - "RegionCode": "mad", - "RegionName": "Madrid", - "Latitude": 40.416944, - "Longitude": -3.703333, - "Nodes": [ - { - "Name": "19c", - "RegionID": 19, - "HostName": "derp19c.tailscale.com", - "IPv4": "45.159.97.61", - "IPv6": "2a00:dd80:14:10::20", - "CanPort80": true - }, - { - "Name": "19d", - "RegionID": 19, - "HostName": "derp19d.tailscale.com", - "IPv4": "45.159.97.233", - "IPv6": "2a00:dd80:14:10::34a", - "CanPort80": true - }, - { - "Name": "19b", - "RegionID": 19, - "HostName": "derp19b.tailscale.com", - "IPv4": "45.159.97.144", - "IPv6": "2a00:dd80:14:10::335", - "CanPort80": true - } - ] - }, - "2": { - "RegionID": 2, - "RegionCode": "sfo", - "RegionName": "San Francisco", - "Latitude": 37.7775, - "Longitude": -122.416389, - "Nodes": [ - { - "Name": "2e", - "RegionID": 2, - "HostName": "derp2e.tailscale.com", - "IPv4": "192.73.252.134", - "IPv6": "2607:f740:0:3f::44c", - "CanPort80": true - }, - { - "Name": "2f", - "RegionID": 2, - "HostName": "derp2f.tailscale.com", - "IPv4": "208.111.34.178", - "IPv6": "2607:f740:0:3f::f4", - "CanPort80": true - }, - { - "Name": "2d", - "RegionID": 2, - "HostName": "derp2d.tailscale.com", - "IPv4": "192.73.252.65", - "IPv6": "2607:f740:0:3f::287", - "CanPort80": true - } - ] - }, - "20": { - "RegionID": 20, - "RegionCode": "hkg", - "RegionName": "Hong Kong", - "Latitude": 22.3193, - "Longitude": 114.1694, - "Nodes": [ - { - "Name": "20c", - "RegionID": 20, - "HostName": "derp20c.tailscale.com", - "IPv4": "205.147.105.30", - "IPv6": "2403:2500:8000:1::5fb", - "CanPort80": true - }, - { - "Name": "20d", - "RegionID": 20, - "HostName": "derp20d.tailscale.com", - "IPv4": "205.147.105.78", - "IPv6": "2403:2500:8000:1::e9a", - "CanPort80": true - }, - { - "Name": "20b", - "RegionID": 20, - "HostName": "derp20b.tailscale.com", - "IPv4": "103.6.84.152", - "IPv6": "2403:2500:8000:1::ef6", - "CanPort80": true - } - ] - }, - "21": { - "RegionID": 21, - "RegionCode": "tor", - "RegionName": "Toronto", - "Latitude": 43.741667, - "Longitude": -79.373333, - "Nodes": [ - { - "Name": "21c", - "RegionID": 21, - "HostName": "derp21c.tailscale.com", - "IPv4": "162.248.221.215", - "IPv6": "2607:f740:50::f10", - "CanPort80": true - }, - { - "Name": "21d", - "RegionID": 21, - "HostName": "derp21d.tailscale.com", - "IPv4": "162.248.221.248", - "IPv6": "2607:f740:50::ca4", - "CanPort80": true - }, - { - "Name": "21b", - "RegionID": 21, - "HostName": "derp21b.tailscale.com", - "IPv4": "162.248.221.199", - "IPv6": "2607:f740:50::1d1", - "CanPort80": true - } - ] - }, - "22": { - "RegionID": 22, - "RegionCode": "waw", - "RegionName": "Warsaw", - "Latitude": 52.23, - "Longitude": 21.011111, - "Nodes": [ - { - "Name": "22c", - "RegionID": 22, - "HostName": "derp22c.tailscale.com", - "IPv4": "45.159.98.253", - "IPv6": "2a00:dd80:40:100::3f", - "CanPort80": true - }, - { - "Name": "22d", - "RegionID": 22, - "HostName": "derp22d.tailscale.com", - "IPv4": "45.159.98.145", - "IPv6": "2a00:dd80:40:100::211", - "CanPort80": true - }, - { - "Name": "22b", - "RegionID": 22, - "HostName": "derp22b.tailscale.com", - "IPv4": "45.159.98.196", - "IPv6": "2a00:dd80:40:100::316", - "CanPort80": true - } - ] - }, - "23": { - "RegionID": 23, - "RegionCode": "dbi", - "RegionName": "Dubai", - "Latitude": 25.263056, - "Longitude": 55.297222, - "Nodes": [ - { - "Name": "23c", - "RegionID": 23, - "HostName": "derp23c.tailscale.com", - "IPv4": "185.34.3.207", - "IPv6": "2a00:dd80:3f:100::a50", - "CanPort80": true - }, - { - "Name": "23d", - "RegionID": 23, - "HostName": "derp23d.tailscale.com", - "IPv4": "185.34.3.75", - "IPv6": "2a00:dd80:3f:100::97e", - "CanPort80": true - }, - { - "Name": "23b", - "RegionID": 23, - "HostName": "derp23b.tailscale.com", - "IPv4": "185.34.3.232", - "IPv6": "2a00:dd80:3f:100::76f", - "CanPort80": true - } - ] - }, - "24": { - "RegionID": 24, - "RegionCode": "hnl", - "RegionName": "Honolulu", - "Latitude": 21.306944, - "Longitude": -157.858333, - "Nodes": [ - { - "Name": "24c", - "RegionID": 24, - "HostName": "derp24c.tailscale.com", - "IPv4": "208.83.233.233", - "IPv6": "2001:19f0:c000:c591:5400:04ff:fe26:2c5f", - "CanPort80": true - }, - { - "Name": "24d", - "RegionID": 24, - "HostName": "derp24d.tailscale.com", - "IPv4": "208.72.155.133", - "IPv6": "2001:19f0:c000:c564:5400:04ff:fe26:2ba8", - "CanPort80": true - }, - { - "Name": "24b", - "RegionID": 24, - "HostName": "derp24b.tailscale.com", - "IPv4": "208.83.234.151", - "IPv6": "2001:19f0:c000:c586:5400:04ff:fe26:2ba6", - "CanPort80": true - } - ] - }, - "25": { - "RegionID": 25, - "RegionCode": "nai", - "RegionName": "Nairobi", - "Latitude": -1.286389, - "Longitude": 36.817222, - "Nodes": [ - { - "Name": "25c", - "RegionID": 25, - "HostName": "derp25c.tailscale.com", - "IPv4": "102.67.167.37", - "IPv6": "2c0f:edb0:2000:1::2c7", - "CanPort80": true - }, - { - "Name": "25d", - "RegionID": 25, - "HostName": "derp25d.tailscale.com", - "IPv4": "102.67.167.188", - "IPv6": "2c0f:edb0:2000:1::188", - "CanPort80": true - }, - { - "Name": "25b", - "RegionID": 25, - "HostName": "derp25b.tailscale.com", - "IPv4": "102.67.167.245", - "IPv6": "2c0f:edb0:2000:1::2e9", - "CanPort80": true - } - ] - }, - "26": { - "RegionID": 26, - "RegionCode": "nue", - "RegionName": "Nuremberg", - "Latitude": 49.453889, - "Longitude": 11.0775, - "Nodes": [ - { - "Name": "26c", - "RegionID": 26, - "HostName": "derp26c.tailscale.com", - "IPv4": "49.12.193.137", - "IPv6": "2a01:4f8:1c1c:5c70::1", - "CanPort80": true - }, - { - "Name": "26d", - "RegionID": 26, - "HostName": "derp26d.tailscale.com", - "IPv4": "49.13.204.141", - "IPv6": "2a01:4f8:1c0c:7d06::1", - "CanPort80": true - }, - { - "Name": "26b", - "RegionID": 26, - "HostName": "derp26b.tailscale.com", - "IPv4": "167.235.72.200", - "IPv6": "2a01:4f8:1c1c:47b6::1", - "CanPort80": true - } - ] - }, - "27": { - "RegionID": 27, - "RegionCode": "iad", - "RegionName": "Ashburn", - "Latitude": 39.03, - "Longitude": -77.471111, - "Nodes": [ - { - "Name": "27d", - "RegionID": 27, - "HostName": "derp27d.tailscale.com", - "IPv4": "178.156.152.106", - "IPv6": "2a01:4ff:f0:3c8e::1", - "CanPort80": true - }, - { - "Name": "27c", - "RegionID": 27, - "HostName": "derp27c.tailscale.com", - "IPv4": "178.156.152.91", - "IPv6": "2a01:4ff:f0:3913::1", - "CanPort80": true - }, - { - "Name": "27e", - "RegionID": 27, - "HostName": "derp27e.tailscale.com", - "IPv4": "178.156.134.232", - "IPv6": "2a01:4ff:f0:28d4::1", - "CanPort80": true - }, - { - "Name": "27b", - "RegionID": 27, - "HostName": "derp27b.tailscale.com", - "IPv4": "5.161.218.233", - "IPv6": "2a01:4ff:f0:3db9::1", - "CanPort80": true - } - ] - }, - "28": { - "RegionID": 28, - "RegionCode": "hel", - "RegionName": "Helsinki", - "Latitude": 60.170833, - "Longitude": 24.9375, - "Nodes": [ - { - "Name": "28c", - "RegionID": 28, - "HostName": "derp28c.tailscale.com", - "IPv4": "95.217.2.165", - "IPv6": "2a01:4f9:c012:cd74::1", - "CanPort80": true - }, - { - "Name": "28d", - "RegionID": 28, - "HostName": "derp28d.tailscale.com", - "IPv4": "157.180.28.32", - "IPv6": "2a01:4f9:c012:2e5b::1", - "CanPort80": true - }, - { - "Name": "28b", - "RegionID": 28, - "HostName": "derp28b.tailscale.com", - "IPv4": "65.109.143.62", - "IPv6": "2a01:4f9:c012:d55c::1", - "CanPort80": true - } - ] - }, - "3": { - "RegionID": 3, - "RegionCode": "sin", - "RegionName": "Singapore", - "Latitude": 1.3521, - "Longitude": 103.8198, - "Nodes": [ - { - "Name": "3g", - "RegionID": 3, - "HostName": "derp3g.tailscale.com", - "IPv4": "172.237.72.79", - "IPv6": "2600:3c15::2000:adff:fe08:6fab", - "CanPort80": true - }, - { - "Name": "3f", - "RegionID": 3, - "HostName": "derp3f.tailscale.com", - "IPv4": "172.237.72.8", - "IPv6": "2600:3c15::2000:53ff:fe48:a668", - "CanPort80": true - }, - { - "Name": "3h", - "RegionID": 3, - "HostName": "derp3h.tailscale.com", - "IPv4": "172.237.66.30", - "IPv6": "2600:3c15::2000:3dff:fe44:50aa", - "CanPort80": true - }, - { - "Name": "3e", - "RegionID": 3, - "HostName": "derp3e.tailscale.com", - "IPv4": "172.237.72.43", - "IPv6": "2600:3c15::2000:6cff:fee4:d799", - "CanPort80": true - } - ] - }, - "4": { - "RegionID": 4, - "RegionCode": "fra", - "RegionName": "Frankfurt", - "Latitude": 50.1109, - "Longitude": 8.6821, - "Nodes": [ - { - "Name": "4h", - "RegionID": 4, - "HostName": "derp4h.tailscale.com", - "IPv4": "185.40.234.77", - "IPv6": "2a00:dd80:20::bcf", - "CanPort80": true - }, - { - "Name": "4g", - "RegionID": 4, - "HostName": "derp4g.tailscale.com", - "IPv4": "185.40.234.113", - "IPv6": "2a00:dd80:20::8f", - "CanPort80": true - }, - { - "Name": "4i", - "RegionID": 4, - "HostName": "derp4i.tailscale.com", - "IPv4": "185.40.234.53", - "IPv6": "2a00:dd80:20::8a6", - "CanPort80": true - }, - { - "Name": "4f", - "RegionID": 4, - "HostName": "derp4f.tailscale.com", - "IPv4": "185.40.234.219", - "IPv6": "2a00:dd80:20::a25", - "CanPort80": true - } - ] - }, - "5": { - "RegionID": 5, - "RegionCode": "syd", - "RegionName": "Sydney", - "Latitude": -33.867778, - "Longitude": 151.21, - "Nodes": [ - { - "Name": "5f", - "RegionID": 5, - "HostName": "derp5f.tailscale.com", - "IPv4": "172.105.166.103", - "IPv6": "2400:8907::2000:ccff:fe1f:80da", - "CanPort80": true - }, - { - "Name": "5g", - "RegionID": 5, - "HostName": "derp5g.tailscale.com", - "IPv4": "172.105.169.57", - "IPv6": "2400:8907::2000:2fff:fea7:57f4", - "CanPort80": true - }, - { - "Name": "5e", - "RegionID": 5, - "HostName": "derp5e.tailscale.com", - "IPv4": "172.105.179.230", - "IPv6": "2400:8907::2000:ceff:fe8d:4f4e", - "CanPort80": true - } - ] - }, - "6": { - "RegionID": 6, - "RegionCode": "blr", - "RegionName": "Bengaluru", - "Latitude": 12.9716, - "Longitude": 77.5946, - "Nodes": [ - { - "Name": "6a", - "RegionID": 6, - "HostName": "derp6.tailscale.com", - "IPv4": "68.183.90.120", - "IPv6": "2400:6180:100:d0::982:d001", - "CanPort80": true - } - ] - }, - "7": { - "RegionID": 7, - "RegionCode": "tok", - "RegionName": "Tokyo", - "Latitude": 35.6764, - "Longitude": 139.65, - "Nodes": [ - { - "Name": "7g", - "RegionID": 7, - "HostName": "derp7g.tailscale.com", - "IPv4": "172.238.6.179", - "IPv6": "2600:3c18::2000:3fff:fe80:3ebd", - "CanPort80": true - }, - { - "Name": "7f", - "RegionID": 7, - "HostName": "derp7f.tailscale.com", - "IPv4": "172.238.6.34", - "IPv6": "2600:3c18::2000:acff:fe8e:3ed5", - "CanPort80": true - }, - { - "Name": "7h", - "RegionID": 7, - "HostName": "derp7h.tailscale.com", - "IPv4": "172.237.28.183", - "IPv6": "2600:3c18::2000:b1ff:fea9:4560", - "CanPort80": true - }, - { - "Name": "7e", - "RegionID": 7, - "HostName": "derp7e.tailscale.com", - "IPv4": "172.238.6.180", - "IPv6": "2600:3c18::2000:60ff:fe0f:6e83", - "STUNOnly": true, - "CanPort80": true - } - ] - }, - "8": { - "RegionID": 8, - "RegionCode": "lhr", - "RegionName": "London", - "Latitude": 51.5072, - "Longitude": 0.1276, - "Nodes": [ - { - "Name": "8f", - "RegionID": 8, - "HostName": "derp8f.tailscale.com", - "IPv4": "176.58.88.183", - "IPv6": "2a00:dd80:3a::dfa", - "CanPort80": true - }, - { - "Name": "8g", - "RegionID": 8, - "HostName": "derp8g.tailscale.com", - "IPv4": "176.58.92.254", - "IPv6": "2a00:dd80:3a::ed", - "CanPort80": true - }, - { - "Name": "8e", - "RegionID": 8, - "HostName": "derp8e.tailscale.com", - "IPv4": "176.58.92.144", - "IPv6": "2a00:dd80:3a::b33", - "CanPort80": true - } - ] - }, - "9": { - "RegionID": 9, - "RegionCode": "dfw", - "RegionName": "Dallas", - "Latitude": 32.779167, - "Longitude": -96.808889, - "Nodes": [ - { - "Name": "9e", - "RegionID": 9, - "HostName": "derp9e.tailscale.com", - "IPv4": "192.73.248.83", - "IPv6": "2607:f740:100::359", - "CanPort80": true - }, - { - "Name": "9f", - "RegionID": 9, - "HostName": "derp9f.tailscale.com", - "IPv4": "209.177.156.197", - "IPv6": "2607:f740:100::cad", - "CanPort80": true - }, - { - "Name": "9d", - "RegionID": 9, - "HostName": "derp9d.tailscale.com", - "IPv4": "209.177.156.94", - "IPv6": "2607:f740:100::c05", - "CanPort80": true - } - ] - } - } - }, - "DisplayMessages": null, - "TKAEnabled": false, - "TKAHead": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", - "Domain": "kratail2tid@passkey", - "DomainAuditLogID": "", - "UserProfiles": { - "301794218943819": { - "ID": 301794218943819, - "LoginName": "tagged-prod.tail78f774.ts.net", - "DisplayName": "tagged-prod" - } - } + "PacketFilterRules": 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": [ @@ -12442,348 +324,48 @@ "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 } } + { + "IP": "100.108.74.26", + "Ports": { + "First": 22, + "Last": 22 + } + }, + { + "IP": "fd7a:115c:a1e0::b901:4a87", + "Ports": { + "First": 22, + "Last": 22 + } + } ] } ], - "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": 22, "Last": 22 } }, - { "Net": "fd7a:115c:a1e0::b901:4a87/128", "Ports": { "First": 22, "Last": 22 } } - ], - "Caps": [] - } - ], - "whois": { - "100.124.195.93": { - "peer_name": "exit-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-server/tailscaled.sock whois --json 100.124.195.93", - "response": null - }, - "100.116.18.24": { - "peer_name": "exit-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-server/tailscaled.sock whois --json 100.116.18.24", - "response": null - }, - "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.107.162.14": { - "peer_name": "group-a-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-server/tailscaled.sock whois --json 100.107.162.14", - "response": null - }, - "100.77.135.18": { - "peer_name": "group-b-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-server/tailscaled.sock whois --json 100.77.135.18", - "response": null - }, - "100.105.127.107": { - "peer_name": "multi-exit-router", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-server/tailscaled.sock whois --json 100.105.127.107", - "response": null - }, - "100.109.43.124": { - "peer_name": "router-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-server/tailscaled.sock whois --json 100.109.43.124", - "response": null - }, - "100.65.172.123": { - "peer_name": "router-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-server/tailscaled.sock whois --json 100.65.172.123", - "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:60de987544859962048376b0950731bfa8017a7fc7df694ef376d4bb42eb9871", - "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:59717", "10.65.0.27:59717", "172.17.0.1:59717"], - "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:67ba1473894f09b564073adb12b27df2a45c513afd9e48922a0346d5d2715d12", - "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:36593", "10.65.0.27:36593", "172.17.0.1:36593"], - "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:94c62b25a93d1474bcbf8b0e5f79763e3b093993c831b0a40e98b875827b232a", - "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:43259", "10.65.0.27:43259", "172.17.0.1:43259"], - "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 - } - } - }, "netmap": { - "SelfNode": { - "ID": 1440249486084758, - "StableID": "nXRbBtuHFC11CNTRL", - "Name": "tagged-server.tail78f774.ts.net.", - "User": 1440249486084758, - "Key": "nodekey:7d5c34b3e8082069d0a82838165c33f8e1b5eb32c6211c2d23d4fe8fb9ec4a19", - "DiscoKey": "discokey:aa5732e314175928eff41cc8f8a7b6edd4694b7d00e420a6573ecc11a88cb203", - "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:57971", "10.65.0.27:57971", "172.17.0.1:57971"], - "Hostinfo": { - "Hostname": "tagged-server", - "Services": [ - { "Proto": "peerapi4", "Port": 46499 }, - { "Proto": "peerapi6", "Port": 46499 }, - { "Proto": "peerapi-dns-proxy", "Port": 1 } - ] - }, - "Created": "2026-01-23T10:10:26.365653609Z", - "Tags": ["tag:server"], - "MachineAuthorized": true, - "CapMap": { - "https://tailscale.com/cap/file-sharing": null, - "https://tailscale.com/cap/is-owner": null, - "https://tailscale.com/cap/ssh": null, - "https://tailscale.com/cap/tailnet-lock": null, - "probe-udp-lifetime": null, - "ssh-behavior-v1": null, - "ssh-env-vars": null, - "store-appc-routes": null, - "tailnet-display-name": ["kratail2tid@passkey"] - }, - "ComputedName": "tagged-server", - "ComputedNameWithHost": "tagged-server" - }, - "AllCaps": [ - "https://tailscale.com/cap/file-sharing", - "https://tailscale.com/cap/is-owner", - "store-appc-routes", - "tailnet-display-name", - "ssh-env-vars", - "https://tailscale.com/cap/tailnet-lock", - "probe-udp-lifetime", - "https://tailscale.com/cap/ssh", - "ssh-behavior-v1" - ], - "NodeKey": "nodekey:7d5c34b3e8082069d0a82838165c33f8e1b5eb32c6211c2d23d4fe8fb9ec4a19", - "MachineKey": "mkey:7d9c55c88bb618638f3f049b95c797f64eb0259810146d2644fef3e53acfdf6b", "Peers": [ { - "ID": 539541576444929, - "StableID": "nSq9YrqMD511CNTRL", "Name": "user1.tail78f774.ts.net.", - "User": 4156223528223174, - "Key": "nodekey:96338a2cd2ea803c915ed8fdf882d66ca0c6a59d0fcf0bc4b3f928d22d1ac743", - "KeyExpiry": "2026-07-22T10:04:13Z", - "DiscoKey": "discokey:94c62b25a93d1474bcbf8b0e5f79763e3b093993c831b0a40e98b875827b232a", - "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:43259", "10.65.0.27:43259", "172.17.0.1:43259"], - "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" - }, - { - "ID": 1840115676059256, - "StableID": "nFzZ7giPNF11CNTRL", - "Name": "user-mon.tail78f774.ts.net.", - "User": 3982058329734709, - "Key": "nodekey:1ca6cca66d2b3811ec290c2f7ac30125c3568e19e303a8e30f6b165c9ee75a51", - "KeyExpiry": "2026-08-19T14:09:00Z", - "DiscoKey": "discokey:67ba1473894f09b564073adb12b27df2a45c513afd9e48922a0346d5d2715d12", - "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:36593", "10.65.0.27:36593", "172.17.0.1:36593"], - "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" - }, - { - "ID": 7728836216590060, - "StableID": "nf4dJTRQM321CNTRL", - "Name": "user-kris.tail78f774.ts.net.", - "User": 4538565228176803, - "Key": "nodekey:40d0f8f49fd519e4a4a2b7d278dcc8863254d4fb8b0219f1d1304cdd172e795f", - "KeyExpiry": "2026-08-19T14:09:34Z", - "DiscoKey": "discokey:60de987544859962048376b0950731bfa8017a7fc7df694ef376d4bb42eb9871", - "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:59717", "10.65.0.27:59717", "172.17.0.1:59717"], - "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" - } - ], - "DNS": { - "Routes": { - "tail78f774.ts.net.": null, - "ts.net.": [{ "Addr": "199.247.155.53" }, { "Addr": "2620:111:8007::53" }] - }, - "Domains": ["tail78f774.ts.net"], - "Proxied": true, - "ExitNodeFilteredSet": [".ts.net", ".tailscale.net"] - }, - "PacketFilter": [ - { - "IPProto": [6, 17, 1, 58], - "Srcs": [ - "100.103.90.82/32", - "100.110.121.96/32", + "AllowedIPs": [ "100.90.199.68/32", - "fd7a:115c:a1e0::1737:7960/128", - "fd7a:115c:a1e0::2d01:c747/128", + "fd7a:115c:a1e0::2d01:c747/128" + ], + "PrimaryRoutes": [] + }, + { + "Name": "user-mon.tail78f774.ts.net.", + "AllowedIPs": [ + "100.103.90.82/32", "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 } } + "PrimaryRoutes": [] + }, + { + "Name": "user-kris.tail78f774.ts.net.", + "AllowedIPs": [ + "100.110.121.96/32", + "fd7a:115c:a1e0::1737:7960/128" ], - "Caps": [] + "PrimaryRoutes": [] } ], "PacketFilterRules": [ @@ -12797,4505 +379,71 @@ "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 } } + { + "IP": "100.108.74.26", + "Ports": { + "First": 22, + "Last": 22 + } + }, + { + "IP": "fd7a:115c:a1e0::b901:4a87", + "Ports": { + "First": 22, + "Last": 22 + } + } ] } - ], - "SSHPolicy": { "rules": [] }, - "CollectServices": false, - "DERPMap": { - "Regions": { - "1": { - "RegionID": 1, - "RegionCode": "nyc", - "RegionName": "New York City", - "Latitude": 40.7128, - "Longitude": -74.006, - "Nodes": [ - { - "Name": "1h", - "RegionID": 1, - "HostName": "derp1h.tailscale.com", - "IPv4": "199.38.181.93", - "IPv6": "2607:f740:f::afd", - "CanPort80": true - }, - { - "Name": "1g", - "RegionID": 1, - "HostName": "derp1g.tailscale.com", - "IPv4": "209.177.145.120", - "IPv6": "2607:f740:f::3eb", - "CanPort80": true - }, - { - "Name": "1i", - "RegionID": 1, - "HostName": "derp1i.tailscale.com", - "IPv4": "199.38.181.103", - "IPv6": "2607:f740:f::e19", - "CanPort80": true - }, - { - "Name": "1f", - "RegionID": 1, - "HostName": "derp1f.tailscale.com", - "IPv4": "199.38.181.104", - "IPv6": "2607:f740:f::bc", - "CanPort80": true - } - ] - }, - "10": { - "RegionID": 10, - "RegionCode": "sea", - "RegionName": "Seattle", - "Latitude": 47.609722, - "Longitude": -122.333056, - "Nodes": [ - { - "Name": "10c", - "RegionID": 10, - "HostName": "derp10c.tailscale.com", - "IPv4": "192.73.240.121", - "IPv6": "2607:f740:14::40c", - "CanPort80": true - }, - { - "Name": "10d", - "RegionID": 10, - "HostName": "derp10d.tailscale.com", - "IPv4": "192.73.240.132", - "IPv6": "2607:f740:14::500", - "CanPort80": true - }, - { - "Name": "10b", - "RegionID": 10, - "HostName": "derp10b.tailscale.com", - "IPv4": "192.73.240.161", - "IPv6": "2607:f740:14::61c", - "CanPort80": true - } - ] - }, - "11": { - "RegionID": 11, - "RegionCode": "sao", - "RegionName": "São Paulo", - "Latitude": -23.55, - "Longitude": -46.633333, - "Nodes": [ - { - "Name": "11f", - "RegionID": 11, - "HostName": "derp11f.tailscale.com", - "IPv4": "172.237.61.197", - "IPv6": "2600:3c0d::2000:3bff:fe44:6166", - "CanPort80": true - }, - { - "Name": "11g", - "RegionID": 11, - "HostName": "derp11g.tailscale.com", - "IPv4": "172.237.61.190", - "IPv6": "2600:3c0d::2000:62ff:febe:2e67", - "CanPort80": true - }, - { - "Name": "11e", - "RegionID": 11, - "HostName": "derp11e.tailscale.com", - "IPv4": "172.237.61.194", - "IPv6": "2600:3c0d::2000:d2ff:fe43:1790", - "CanPort80": true - } - ] - }, - "12": { - "RegionID": 12, - "RegionCode": "ord", - "RegionName": "Chicago", - "Latitude": 41.881944, - "Longitude": -87.627778, - "Nodes": [ - { - "Name": "12e", - "RegionID": 12, - "HostName": "derp12e.tailscale.com", - "IPv4": "209.177.158.15", - "IPv6": "2607:f740:e::b17", - "CanPort80": true - }, - { - "Name": "12f", - "RegionID": 12, - "HostName": "derp12f.tailscale.com", - "IPv4": "199.38.182.118", - "IPv6": "2607:f740:e::4c8", - "CanPort80": true - }, - { - "Name": "12d", - "RegionID": 12, - "HostName": "derp12d.tailscale.com", - "IPv4": "209.177.158.246", - "IPv6": "2607:f740:e::811", - "CanPort80": true - } - ] - }, - "13": { - "RegionID": 13, - "RegionCode": "den", - "RegionName": "Denver", - "Latitude": 39.7392, - "Longitude": -104.9849, - "Nodes": [ - { - "Name": "13c", - "RegionID": 13, - "HostName": "derp13c.tailscale.com", - "IPv4": "192.73.242.28", - "IPv6": "2607:f740:16::5c", - "CanPort80": true - }, - { - "Name": "13d", - "RegionID": 13, - "HostName": "derp13d.tailscale.com", - "IPv4": "192.73.242.204", - "IPv6": "2607:f740:16::c23", - "CanPort80": true - }, - { - "Name": "13b", - "RegionID": 13, - "HostName": "derp13b.tailscale.com", - "IPv4": "192.73.242.187", - "IPv6": "2607:f740:16::640", - "CanPort80": true - } - ] - }, - "14": { - "RegionID": 14, - "RegionCode": "ams", - "RegionName": "Amsterdam", - "Latitude": 52.372778, - "Longitude": 4.893611, - "Nodes": [ - { - "Name": "14c", - "RegionID": 14, - "HostName": "derp14c.tailscale.com", - "IPv4": "176.58.93.147", - "IPv6": "2a00:dd80:3c::b09", - "CanPort80": true - }, - { - "Name": "14d", - "RegionID": 14, - "HostName": "derp14d.tailscale.com", - "IPv4": "176.58.93.154", - "IPv6": "2a00:dd80:3c::3d5", - "CanPort80": true - }, - { - "Name": "14b", - "RegionID": 14, - "HostName": "derp14b.tailscale.com", - "IPv4": "176.58.93.248", - "IPv6": "2a00:dd80:3c::807", - "CanPort80": true - } - ] - }, - "15": { - "RegionID": 15, - "RegionCode": "jnb", - "RegionName": "Johannesburg", - "Latitude": -26.204444, - "Longitude": 28.045556, - "Nodes": [ - { - "Name": "15c", - "RegionID": 15, - "HostName": "derp15c.tailscale.com", - "IPv4": "102.67.165.185", - "IPv6": "2c0f:edb0:0:10::b59", - "CanPort80": true - }, - { - "Name": "15d", - "RegionID": 15, - "HostName": "derp15d.tailscale.com", - "IPv4": "102.67.165.36", - "IPv6": "2c0f:edb0:0:10::599", - "CanPort80": true - }, - { - "Name": "15b", - "RegionID": 15, - "HostName": "derp15b.tailscale.com", - "IPv4": "102.67.165.90", - "IPv6": "2c0f:edb0:0:10::963", - "CanPort80": true - } - ] - }, - "16": { - "RegionID": 16, - "RegionCode": "mia", - "RegionName": "Miami", - "Latitude": 25.78, - "Longitude": -80.21, - "Nodes": [ - { - "Name": "16c", - "RegionID": 16, - "HostName": "derp16c.tailscale.com", - "IPv4": "192.73.243.229", - "IPv6": "2607:f740:17::4e4", - "CanPort80": true - }, - { - "Name": "16d", - "RegionID": 16, - "HostName": "derp16d.tailscale.com", - "IPv4": "192.73.243.141", - "IPv6": "2607:f740:17::475", - "CanPort80": true - }, - { - "Name": "16b", - "RegionID": 16, - "HostName": "derp16b.tailscale.com", - "IPv4": "192.73.243.135", - "IPv6": "2607:f740:17::476", - "CanPort80": true - } - ] - }, - "17": { - "RegionID": 17, - "RegionCode": "lax", - "RegionName": "Los Angeles", - "Latitude": 34.05, - "Longitude": -118.25, - "Nodes": [ - { - "Name": "17c", - "RegionID": 17, - "HostName": "derp17c.tailscale.com", - "IPv4": "208.111.40.12", - "IPv6": "2607:f740:c::10", - "CanPort80": true - }, - { - "Name": "17d", - "RegionID": 17, - "HostName": "derp17d.tailscale.com", - "IPv4": "208.111.40.216", - "IPv6": "2607:f740:c::e1b", - "CanPort80": true - }, - { - "Name": "17b", - "RegionID": 17, - "HostName": "derp17b.tailscale.com", - "IPv4": "192.73.244.245", - "IPv6": "2607:f740:c::646", - "CanPort80": true - } - ] - }, - "18": { - "RegionID": 18, - "RegionCode": "par", - "RegionName": "Paris", - "Latitude": 48.856667, - "Longitude": 2.352222, - "Nodes": [ - { - "Name": "18c", - "RegionID": 18, - "HostName": "derp18c.tailscale.com", - "IPv4": "176.58.90.207", - "IPv6": "2a00:dd80:3e::c19", - "CanPort80": true - }, - { - "Name": "18d", - "RegionID": 18, - "HostName": "derp18d.tailscale.com", - "IPv4": "176.58.90.104", - "IPv6": "2a00:dd80:3e::f2e", - "CanPort80": true - }, - { - "Name": "18b", - "RegionID": 18, - "HostName": "derp18b.tailscale.com", - "IPv4": "176.58.90.147", - "IPv6": "2a00:dd80:3e::363", - "CanPort80": true - } - ] - }, - "19": { - "RegionID": 19, - "RegionCode": "mad", - "RegionName": "Madrid", - "Latitude": 40.416944, - "Longitude": -3.703333, - "Nodes": [ - { - "Name": "19c", - "RegionID": 19, - "HostName": "derp19c.tailscale.com", - "IPv4": "45.159.97.61", - "IPv6": "2a00:dd80:14:10::20", - "CanPort80": true - }, - { - "Name": "19d", - "RegionID": 19, - "HostName": "derp19d.tailscale.com", - "IPv4": "45.159.97.233", - "IPv6": "2a00:dd80:14:10::34a", - "CanPort80": true - }, - { - "Name": "19b", - "RegionID": 19, - "HostName": "derp19b.tailscale.com", - "IPv4": "45.159.97.144", - "IPv6": "2a00:dd80:14:10::335", - "CanPort80": true - } - ] - }, - "2": { - "RegionID": 2, - "RegionCode": "sfo", - "RegionName": "San Francisco", - "Latitude": 37.7775, - "Longitude": -122.416389, - "Nodes": [ - { - "Name": "2e", - "RegionID": 2, - "HostName": "derp2e.tailscale.com", - "IPv4": "192.73.252.134", - "IPv6": "2607:f740:0:3f::44c", - "CanPort80": true - }, - { - "Name": "2f", - "RegionID": 2, - "HostName": "derp2f.tailscale.com", - "IPv4": "208.111.34.178", - "IPv6": "2607:f740:0:3f::f4", - "CanPort80": true - }, - { - "Name": "2d", - "RegionID": 2, - "HostName": "derp2d.tailscale.com", - "IPv4": "192.73.252.65", - "IPv6": "2607:f740:0:3f::287", - "CanPort80": true - } - ] - }, - "20": { - "RegionID": 20, - "RegionCode": "hkg", - "RegionName": "Hong Kong", - "Latitude": 22.3193, - "Longitude": 114.1694, - "Nodes": [ - { - "Name": "20c", - "RegionID": 20, - "HostName": "derp20c.tailscale.com", - "IPv4": "205.147.105.30", - "IPv6": "2403:2500:8000:1::5fb", - "CanPort80": true - }, - { - "Name": "20d", - "RegionID": 20, - "HostName": "derp20d.tailscale.com", - "IPv4": "205.147.105.78", - "IPv6": "2403:2500:8000:1::e9a", - "CanPort80": true - }, - { - "Name": "20b", - "RegionID": 20, - "HostName": "derp20b.tailscale.com", - "IPv4": "103.6.84.152", - "IPv6": "2403:2500:8000:1::ef6", - "CanPort80": true - } - ] - }, - "21": { - "RegionID": 21, - "RegionCode": "tor", - "RegionName": "Toronto", - "Latitude": 43.741667, - "Longitude": -79.373333, - "Nodes": [ - { - "Name": "21c", - "RegionID": 21, - "HostName": "derp21c.tailscale.com", - "IPv4": "162.248.221.215", - "IPv6": "2607:f740:50::f10", - "CanPort80": true - }, - { - "Name": "21d", - "RegionID": 21, - "HostName": "derp21d.tailscale.com", - "IPv4": "162.248.221.248", - "IPv6": "2607:f740:50::ca4", - "CanPort80": true - }, - { - "Name": "21b", - "RegionID": 21, - "HostName": "derp21b.tailscale.com", - "IPv4": "162.248.221.199", - "IPv6": "2607:f740:50::1d1", - "CanPort80": true - } - ] - }, - "22": { - "RegionID": 22, - "RegionCode": "waw", - "RegionName": "Warsaw", - "Latitude": 52.23, - "Longitude": 21.011111, - "Nodes": [ - { - "Name": "22c", - "RegionID": 22, - "HostName": "derp22c.tailscale.com", - "IPv4": "45.159.98.253", - "IPv6": "2a00:dd80:40:100::3f", - "CanPort80": true - }, - { - "Name": "22d", - "RegionID": 22, - "HostName": "derp22d.tailscale.com", - "IPv4": "45.159.98.145", - "IPv6": "2a00:dd80:40:100::211", - "CanPort80": true - }, - { - "Name": "22b", - "RegionID": 22, - "HostName": "derp22b.tailscale.com", - "IPv4": "45.159.98.196", - "IPv6": "2a00:dd80:40:100::316", - "CanPort80": true - } - ] - }, - "23": { - "RegionID": 23, - "RegionCode": "dbi", - "RegionName": "Dubai", - "Latitude": 25.263056, - "Longitude": 55.297222, - "Nodes": [ - { - "Name": "23c", - "RegionID": 23, - "HostName": "derp23c.tailscale.com", - "IPv4": "185.34.3.207", - "IPv6": "2a00:dd80:3f:100::a50", - "CanPort80": true - }, - { - "Name": "23d", - "RegionID": 23, - "HostName": "derp23d.tailscale.com", - "IPv4": "185.34.3.75", - "IPv6": "2a00:dd80:3f:100::97e", - "CanPort80": true - }, - { - "Name": "23b", - "RegionID": 23, - "HostName": "derp23b.tailscale.com", - "IPv4": "185.34.3.232", - "IPv6": "2a00:dd80:3f:100::76f", - "CanPort80": true - } - ] - }, - "24": { - "RegionID": 24, - "RegionCode": "hnl", - "RegionName": "Honolulu", - "Latitude": 21.306944, - "Longitude": -157.858333, - "Nodes": [ - { - "Name": "24c", - "RegionID": 24, - "HostName": "derp24c.tailscale.com", - "IPv4": "208.83.233.233", - "IPv6": "2001:19f0:c000:c591:5400:04ff:fe26:2c5f", - "CanPort80": true - }, - { - "Name": "24d", - "RegionID": 24, - "HostName": "derp24d.tailscale.com", - "IPv4": "208.72.155.133", - "IPv6": "2001:19f0:c000:c564:5400:04ff:fe26:2ba8", - "CanPort80": true - }, - { - "Name": "24b", - "RegionID": 24, - "HostName": "derp24b.tailscale.com", - "IPv4": "208.83.234.151", - "IPv6": "2001:19f0:c000:c586:5400:04ff:fe26:2ba6", - "CanPort80": true - } - ] - }, - "25": { - "RegionID": 25, - "RegionCode": "nai", - "RegionName": "Nairobi", - "Latitude": -1.286389, - "Longitude": 36.817222, - "Nodes": [ - { - "Name": "25c", - "RegionID": 25, - "HostName": "derp25c.tailscale.com", - "IPv4": "102.67.167.37", - "IPv6": "2c0f:edb0:2000:1::2c7", - "CanPort80": true - }, - { - "Name": "25d", - "RegionID": 25, - "HostName": "derp25d.tailscale.com", - "IPv4": "102.67.167.188", - "IPv6": "2c0f:edb0:2000:1::188", - "CanPort80": true - }, - { - "Name": "25b", - "RegionID": 25, - "HostName": "derp25b.tailscale.com", - "IPv4": "102.67.167.245", - "IPv6": "2c0f:edb0:2000:1::2e9", - "CanPort80": true - } - ] - }, - "26": { - "RegionID": 26, - "RegionCode": "nue", - "RegionName": "Nuremberg", - "Latitude": 49.453889, - "Longitude": 11.0775, - "Nodes": [ - { - "Name": "26c", - "RegionID": 26, - "HostName": "derp26c.tailscale.com", - "IPv4": "49.12.193.137", - "IPv6": "2a01:4f8:1c1c:5c70::1", - "CanPort80": true - }, - { - "Name": "26d", - "RegionID": 26, - "HostName": "derp26d.tailscale.com", - "IPv4": "49.13.204.141", - "IPv6": "2a01:4f8:1c0c:7d06::1", - "CanPort80": true - }, - { - "Name": "26b", - "RegionID": 26, - "HostName": "derp26b.tailscale.com", - "IPv4": "167.235.72.200", - "IPv6": "2a01:4f8:1c1c:47b6::1", - "CanPort80": true - } - ] - }, - "27": { - "RegionID": 27, - "RegionCode": "iad", - "RegionName": "Ashburn", - "Latitude": 39.03, - "Longitude": -77.471111, - "Nodes": [ - { - "Name": "27d", - "RegionID": 27, - "HostName": "derp27d.tailscale.com", - "IPv4": "178.156.152.106", - "IPv6": "2a01:4ff:f0:3c8e::1", - "CanPort80": true - }, - { - "Name": "27c", - "RegionID": 27, - "HostName": "derp27c.tailscale.com", - "IPv4": "178.156.152.91", - "IPv6": "2a01:4ff:f0:3913::1", - "CanPort80": true - }, - { - "Name": "27e", - "RegionID": 27, - "HostName": "derp27e.tailscale.com", - "IPv4": "178.156.134.232", - "IPv6": "2a01:4ff:f0:28d4::1", - "CanPort80": true - }, - { - "Name": "27b", - "RegionID": 27, - "HostName": "derp27b.tailscale.com", - "IPv4": "5.161.218.233", - "IPv6": "2a01:4ff:f0:3db9::1", - "CanPort80": true - } - ] - }, - "28": { - "RegionID": 28, - "RegionCode": "hel", - "RegionName": "Helsinki", - "Latitude": 60.170833, - "Longitude": 24.9375, - "Nodes": [ - { - "Name": "28c", - "RegionID": 28, - "HostName": "derp28c.tailscale.com", - "IPv4": "95.217.2.165", - "IPv6": "2a01:4f9:c012:cd74::1", - "CanPort80": true - }, - { - "Name": "28d", - "RegionID": 28, - "HostName": "derp28d.tailscale.com", - "IPv4": "157.180.28.32", - "IPv6": "2a01:4f9:c012:2e5b::1", - "CanPort80": true - }, - { - "Name": "28b", - "RegionID": 28, - "HostName": "derp28b.tailscale.com", - "IPv4": "65.109.143.62", - "IPv6": "2a01:4f9:c012:d55c::1", - "CanPort80": true - } - ] - }, - "3": { - "RegionID": 3, - "RegionCode": "sin", - "RegionName": "Singapore", - "Latitude": 1.3521, - "Longitude": 103.8198, - "Nodes": [ - { - "Name": "3g", - "RegionID": 3, - "HostName": "derp3g.tailscale.com", - "IPv4": "172.237.72.79", - "IPv6": "2600:3c15::2000:adff:fe08:6fab", - "CanPort80": true - }, - { - "Name": "3f", - "RegionID": 3, - "HostName": "derp3f.tailscale.com", - "IPv4": "172.237.72.8", - "IPv6": "2600:3c15::2000:53ff:fe48:a668", - "CanPort80": true - }, - { - "Name": "3h", - "RegionID": 3, - "HostName": "derp3h.tailscale.com", - "IPv4": "172.237.66.30", - "IPv6": "2600:3c15::2000:3dff:fe44:50aa", - "CanPort80": true - }, - { - "Name": "3e", - "RegionID": 3, - "HostName": "derp3e.tailscale.com", - "IPv4": "172.237.72.43", - "IPv6": "2600:3c15::2000:6cff:fee4:d799", - "CanPort80": true - } - ] - }, - "4": { - "RegionID": 4, - "RegionCode": "fra", - "RegionName": "Frankfurt", - "Latitude": 50.1109, - "Longitude": 8.6821, - "Nodes": [ - { - "Name": "4h", - "RegionID": 4, - "HostName": "derp4h.tailscale.com", - "IPv4": "185.40.234.77", - "IPv6": "2a00:dd80:20::bcf", - "CanPort80": true - }, - { - "Name": "4g", - "RegionID": 4, - "HostName": "derp4g.tailscale.com", - "IPv4": "185.40.234.113", - "IPv6": "2a00:dd80:20::8f", - "CanPort80": true - }, - { - "Name": "4i", - "RegionID": 4, - "HostName": "derp4i.tailscale.com", - "IPv4": "185.40.234.53", - "IPv6": "2a00:dd80:20::8a6", - "CanPort80": true - }, - { - "Name": "4f", - "RegionID": 4, - "HostName": "derp4f.tailscale.com", - "IPv4": "185.40.234.219", - "IPv6": "2a00:dd80:20::a25", - "CanPort80": true - } - ] - }, - "5": { - "RegionID": 5, - "RegionCode": "syd", - "RegionName": "Sydney", - "Latitude": -33.867778, - "Longitude": 151.21, - "Nodes": [ - { - "Name": "5f", - "RegionID": 5, - "HostName": "derp5f.tailscale.com", - "IPv4": "172.105.166.103", - "IPv6": "2400:8907::2000:ccff:fe1f:80da", - "CanPort80": true - }, - { - "Name": "5g", - "RegionID": 5, - "HostName": "derp5g.tailscale.com", - "IPv4": "172.105.169.57", - "IPv6": "2400:8907::2000:2fff:fea7:57f4", - "CanPort80": true - }, - { - "Name": "5e", - "RegionID": 5, - "HostName": "derp5e.tailscale.com", - "IPv4": "172.105.179.230", - "IPv6": "2400:8907::2000:ceff:fe8d:4f4e", - "CanPort80": true - } - ] - }, - "6": { - "RegionID": 6, - "RegionCode": "blr", - "RegionName": "Bengaluru", - "Latitude": 12.9716, - "Longitude": 77.5946, - "Nodes": [ - { - "Name": "6a", - "RegionID": 6, - "HostName": "derp6.tailscale.com", - "IPv4": "68.183.90.120", - "IPv6": "2400:6180:100:d0::982:d001", - "CanPort80": true - } - ] - }, - "7": { - "RegionID": 7, - "RegionCode": "tok", - "RegionName": "Tokyo", - "Latitude": 35.6764, - "Longitude": 139.65, - "Nodes": [ - { - "Name": "7g", - "RegionID": 7, - "HostName": "derp7g.tailscale.com", - "IPv4": "172.238.6.179", - "IPv6": "2600:3c18::2000:3fff:fe80:3ebd", - "CanPort80": true - }, - { - "Name": "7f", - "RegionID": 7, - "HostName": "derp7f.tailscale.com", - "IPv4": "172.238.6.34", - "IPv6": "2600:3c18::2000:acff:fe8e:3ed5", - "CanPort80": true - }, - { - "Name": "7h", - "RegionID": 7, - "HostName": "derp7h.tailscale.com", - "IPv4": "172.237.28.183", - "IPv6": "2600:3c18::2000:b1ff:fea9:4560", - "CanPort80": true - }, - { - "Name": "7e", - "RegionID": 7, - "HostName": "derp7e.tailscale.com", - "IPv4": "172.238.6.180", - "IPv6": "2600:3c18::2000:60ff:fe0f:6e83", - "STUNOnly": true, - "CanPort80": true - } - ] - }, - "8": { - "RegionID": 8, - "RegionCode": "lhr", - "RegionName": "London", - "Latitude": 51.5072, - "Longitude": 0.1276, - "Nodes": [ - { - "Name": "8f", - "RegionID": 8, - "HostName": "derp8f.tailscale.com", - "IPv4": "176.58.88.183", - "IPv6": "2a00:dd80:3a::dfa", - "CanPort80": true - }, - { - "Name": "8g", - "RegionID": 8, - "HostName": "derp8g.tailscale.com", - "IPv4": "176.58.92.254", - "IPv6": "2a00:dd80:3a::ed", - "CanPort80": true - }, - { - "Name": "8e", - "RegionID": 8, - "HostName": "derp8e.tailscale.com", - "IPv4": "176.58.92.144", - "IPv6": "2a00:dd80:3a::b33", - "CanPort80": true - } - ] - }, - "9": { - "RegionID": 9, - "RegionCode": "dfw", - "RegionName": "Dallas", - "Latitude": 32.779167, - "Longitude": -96.808889, - "Nodes": [ - { - "Name": "9e", - "RegionID": 9, - "HostName": "derp9e.tailscale.com", - "IPv4": "192.73.248.83", - "IPv6": "2607:f740:100::359", - "CanPort80": true - }, - { - "Name": "9f", - "RegionID": 9, - "HostName": "derp9f.tailscale.com", - "IPv4": "209.177.156.197", - "IPv6": "2607:f740:100::cad", - "CanPort80": true - }, - { - "Name": "9d", - "RegionID": 9, - "HostName": "derp9d.tailscale.com", - "IPv4": "209.177.156.94", - "IPv6": "2607:f740:100::c05", - "CanPort80": true - } - ] - } - } - }, - "DisplayMessages": null, - "TKAEnabled": false, - "TKAHead": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", - "Domain": "kratail2tid@passkey", - "DomainAuditLogID": "", - "UserProfiles": { - "1440249486084758": { - "ID": 1440249486084758, - "LoginName": "tagged-server.tail78f774.ts.net", - "DisplayName": "tagged-server" - }, - "3982058329734709": { - "ID": 3982058329734709, - "LoginName": "monitorpasskeykradalby@passkey", - "DisplayName": "monitorpasskeykradalby" - }, - "4156223528223174": { - "ID": 4156223528223174, - "LoginName": "kratail2tid@passkey", - "DisplayName": "kratail2tid" - }, - "4538565228176803": { - "ID": 4538565228176803, - "LoginName": "kristoffer@dalby.cc", - "DisplayName": "kristoffer" - } - } + ] } }, "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.124.195.93": { - "peer_name": "exit-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-kris/tailscaled.sock whois --json 100.124.195.93", - "response": null - }, - "100.116.18.24": { - "peer_name": "exit-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-kris/tailscaled.sock whois --json 100.116.18.24", - "response": null - }, - "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.107.162.14": { - "peer_name": "group-a-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-kris/tailscaled.sock whois --json 100.107.162.14", - "response": null - }, - "100.77.135.18": { - "peer_name": "group-b-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-kris/tailscaled.sock whois --json 100.77.135.18", - "response": null - }, - "100.105.127.107": { - "peer_name": "multi-exit-router", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-kris/tailscaled.sock whois --json 100.105.127.107", - "response": null - }, - "100.109.43.124": { - "peer_name": "router-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-kris/tailscaled.sock whois --json 100.109.43.124", - "response": null - }, - "100.65.172.123": { - "peer_name": "router-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-kris/tailscaled.sock whois --json 100.65.172.123", - "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:aa5732e314175928eff41cc8f8a7b6edd4694b7d00e420a6573ecc11a88cb203", - "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:57971", "10.65.0.27:57971", "172.17.0.1:57971"], - "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 - } - }, "netmap": { - "SelfNode": { - "ID": 7728836216590060, - "StableID": "nf4dJTRQM321CNTRL", - "Name": "user-kris.tail78f774.ts.net.", - "User": 4538565228176803, - "Key": "nodekey:40d0f8f49fd519e4a4a2b7d278dcc8863254d4fb8b0219f1d1304cdd172e795f", - "KeyExpiry": "2026-08-19T14:09:34Z", - "DiscoKey": "discokey:60de987544859962048376b0950731bfa8017a7fc7df694ef376d4bb42eb9871", - "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:59717", "10.65.0.27:59717", "172.17.0.1:59717"], - "Hostinfo": { - "Hostname": "user-kris", - "Services": [ - { "Proto": "peerapi4", "Port": 40159 }, - { "Proto": "peerapi6", "Port": 40159 }, - { "Proto": "peerapi-dns-proxy", "Port": 1 } - ] - }, - "Created": "2026-02-20T14:09:34.803901523Z", - "MachineAuthorized": true, - "CapMap": { - "https://tailscale.com/cap/file-sharing": null, - "https://tailscale.com/cap/is-admin": null, - "https://tailscale.com/cap/ssh": null, - "https://tailscale.com/cap/tailnet-lock": null, - "probe-udp-lifetime": null, - "ssh-behavior-v1": null, - "ssh-env-vars": null, - "store-appc-routes": null, - "tailnet-display-name": ["kratail2tid@passkey"] - }, - "ComputedName": "user-kris", - "ComputedNameWithHost": "user-kris" - }, - "AllCaps": [ - "https://tailscale.com/cap/file-sharing", - "https://tailscale.com/cap/ssh", - "probe-udp-lifetime", - "ssh-env-vars", - "store-appc-routes", - "tailnet-display-name", - "https://tailscale.com/cap/tailnet-lock", - "ssh-behavior-v1", - "https://tailscale.com/cap/is-admin" - ], - "NodeKey": "nodekey:40d0f8f49fd519e4a4a2b7d278dcc8863254d4fb8b0219f1d1304cdd172e795f", - "MachineKey": "mkey:ff16066d907c58407972ee4a05a30386bd21bc0b420d8f9290eb70b95b3e1457", "Peers": [ { - "ID": 1440249486084758, - "StableID": "nXRbBtuHFC11CNTRL", "Name": "tagged-server.tail78f774.ts.net.", - "User": 1260082990019555, - "Key": "nodekey:7d5c34b3e8082069d0a82838165c33f8e1b5eb32c6211c2d23d4fe8fb9ec4a19", - "DiscoKey": "discokey:aa5732e314175928eff41cc8f8a7b6edd4694b7d00e420a6573ecc11a88cb203", - "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:57971", "10.65.0.27:57971", "172.17.0.1:57971"], - "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" + "AllowedIPs": [ + "100.108.74.26/32", + "fd7a:115c:a1e0::b901:4a87/128" + ], + "PrimaryRoutes": [] } ], - "DNS": { - "Routes": { - "tail78f774.ts.net.": null, - "ts.net.": [{ "Addr": "199.247.155.53" }, { "Addr": "2620:111:8007::53" }] - }, - "Domains": ["tail78f774.ts.net"], - "Proxied": true, - "ExitNodeFilteredSet": [".ts.net", ".tailscale.net"] - }, - "PacketFilter": [], - "PacketFilterRules": null, - "SSHPolicy": { "rules": [] }, - "CollectServices": false, - "DERPMap": { - "Regions": { - "1": { - "RegionID": 1, - "RegionCode": "nyc", - "RegionName": "New York City", - "Latitude": 40.7128, - "Longitude": -74.006, - "Nodes": [ - { - "Name": "1h", - "RegionID": 1, - "HostName": "derp1h.tailscale.com", - "IPv4": "199.38.181.93", - "IPv6": "2607:f740:f::afd", - "CanPort80": true - }, - { - "Name": "1g", - "RegionID": 1, - "HostName": "derp1g.tailscale.com", - "IPv4": "209.177.145.120", - "IPv6": "2607:f740:f::3eb", - "CanPort80": true - }, - { - "Name": "1i", - "RegionID": 1, - "HostName": "derp1i.tailscale.com", - "IPv4": "199.38.181.103", - "IPv6": "2607:f740:f::e19", - "CanPort80": true - }, - { - "Name": "1f", - "RegionID": 1, - "HostName": "derp1f.tailscale.com", - "IPv4": "199.38.181.104", - "IPv6": "2607:f740:f::bc", - "CanPort80": true - } - ] - }, - "10": { - "RegionID": 10, - "RegionCode": "sea", - "RegionName": "Seattle", - "Latitude": 47.609722, - "Longitude": -122.333056, - "Nodes": [ - { - "Name": "10c", - "RegionID": 10, - "HostName": "derp10c.tailscale.com", - "IPv4": "192.73.240.121", - "IPv6": "2607:f740:14::40c", - "CanPort80": true - }, - { - "Name": "10d", - "RegionID": 10, - "HostName": "derp10d.tailscale.com", - "IPv4": "192.73.240.132", - "IPv6": "2607:f740:14::500", - "CanPort80": true - }, - { - "Name": "10b", - "RegionID": 10, - "HostName": "derp10b.tailscale.com", - "IPv4": "192.73.240.161", - "IPv6": "2607:f740:14::61c", - "CanPort80": true - } - ] - }, - "11": { - "RegionID": 11, - "RegionCode": "sao", - "RegionName": "São Paulo", - "Latitude": -23.55, - "Longitude": -46.633333, - "Nodes": [ - { - "Name": "11f", - "RegionID": 11, - "HostName": "derp11f.tailscale.com", - "IPv4": "172.237.61.197", - "IPv6": "2600:3c0d::2000:3bff:fe44:6166", - "CanPort80": true - }, - { - "Name": "11g", - "RegionID": 11, - "HostName": "derp11g.tailscale.com", - "IPv4": "172.237.61.190", - "IPv6": "2600:3c0d::2000:62ff:febe:2e67", - "CanPort80": true - }, - { - "Name": "11e", - "RegionID": 11, - "HostName": "derp11e.tailscale.com", - "IPv4": "172.237.61.194", - "IPv6": "2600:3c0d::2000:d2ff:fe43:1790", - "CanPort80": true - } - ] - }, - "12": { - "RegionID": 12, - "RegionCode": "ord", - "RegionName": "Chicago", - "Latitude": 41.881944, - "Longitude": -87.627778, - "Nodes": [ - { - "Name": "12e", - "RegionID": 12, - "HostName": "derp12e.tailscale.com", - "IPv4": "209.177.158.15", - "IPv6": "2607:f740:e::b17", - "CanPort80": true - }, - { - "Name": "12f", - "RegionID": 12, - "HostName": "derp12f.tailscale.com", - "IPv4": "199.38.182.118", - "IPv6": "2607:f740:e::4c8", - "CanPort80": true - }, - { - "Name": "12d", - "RegionID": 12, - "HostName": "derp12d.tailscale.com", - "IPv4": "209.177.158.246", - "IPv6": "2607:f740:e::811", - "CanPort80": true - } - ] - }, - "13": { - "RegionID": 13, - "RegionCode": "den", - "RegionName": "Denver", - "Latitude": 39.7392, - "Longitude": -104.9849, - "Nodes": [ - { - "Name": "13c", - "RegionID": 13, - "HostName": "derp13c.tailscale.com", - "IPv4": "192.73.242.28", - "IPv6": "2607:f740:16::5c", - "CanPort80": true - }, - { - "Name": "13d", - "RegionID": 13, - "HostName": "derp13d.tailscale.com", - "IPv4": "192.73.242.204", - "IPv6": "2607:f740:16::c23", - "CanPort80": true - }, - { - "Name": "13b", - "RegionID": 13, - "HostName": "derp13b.tailscale.com", - "IPv4": "192.73.242.187", - "IPv6": "2607:f740:16::640", - "CanPort80": true - } - ] - }, - "14": { - "RegionID": 14, - "RegionCode": "ams", - "RegionName": "Amsterdam", - "Latitude": 52.372778, - "Longitude": 4.893611, - "Nodes": [ - { - "Name": "14c", - "RegionID": 14, - "HostName": "derp14c.tailscale.com", - "IPv4": "176.58.93.147", - "IPv6": "2a00:dd80:3c::b09", - "CanPort80": true - }, - { - "Name": "14d", - "RegionID": 14, - "HostName": "derp14d.tailscale.com", - "IPv4": "176.58.93.154", - "IPv6": "2a00:dd80:3c::3d5", - "CanPort80": true - }, - { - "Name": "14b", - "RegionID": 14, - "HostName": "derp14b.tailscale.com", - "IPv4": "176.58.93.248", - "IPv6": "2a00:dd80:3c::807", - "CanPort80": true - } - ] - }, - "15": { - "RegionID": 15, - "RegionCode": "jnb", - "RegionName": "Johannesburg", - "Latitude": -26.204444, - "Longitude": 28.045556, - "Nodes": [ - { - "Name": "15c", - "RegionID": 15, - "HostName": "derp15c.tailscale.com", - "IPv4": "102.67.165.185", - "IPv6": "2c0f:edb0:0:10::b59", - "CanPort80": true - }, - { - "Name": "15d", - "RegionID": 15, - "HostName": "derp15d.tailscale.com", - "IPv4": "102.67.165.36", - "IPv6": "2c0f:edb0:0:10::599", - "CanPort80": true - }, - { - "Name": "15b", - "RegionID": 15, - "HostName": "derp15b.tailscale.com", - "IPv4": "102.67.165.90", - "IPv6": "2c0f:edb0:0:10::963", - "CanPort80": true - } - ] - }, - "16": { - "RegionID": 16, - "RegionCode": "mia", - "RegionName": "Miami", - "Latitude": 25.78, - "Longitude": -80.21, - "Nodes": [ - { - "Name": "16c", - "RegionID": 16, - "HostName": "derp16c.tailscale.com", - "IPv4": "192.73.243.229", - "IPv6": "2607:f740:17::4e4", - "CanPort80": true - }, - { - "Name": "16d", - "RegionID": 16, - "HostName": "derp16d.tailscale.com", - "IPv4": "192.73.243.141", - "IPv6": "2607:f740:17::475", - "CanPort80": true - }, - { - "Name": "16b", - "RegionID": 16, - "HostName": "derp16b.tailscale.com", - "IPv4": "192.73.243.135", - "IPv6": "2607:f740:17::476", - "CanPort80": true - } - ] - }, - "17": { - "RegionID": 17, - "RegionCode": "lax", - "RegionName": "Los Angeles", - "Latitude": 34.05, - "Longitude": -118.25, - "Nodes": [ - { - "Name": "17c", - "RegionID": 17, - "HostName": "derp17c.tailscale.com", - "IPv4": "208.111.40.12", - "IPv6": "2607:f740:c::10", - "CanPort80": true - }, - { - "Name": "17d", - "RegionID": 17, - "HostName": "derp17d.tailscale.com", - "IPv4": "208.111.40.216", - "IPv6": "2607:f740:c::e1b", - "CanPort80": true - }, - { - "Name": "17b", - "RegionID": 17, - "HostName": "derp17b.tailscale.com", - "IPv4": "192.73.244.245", - "IPv6": "2607:f740:c::646", - "CanPort80": true - } - ] - }, - "18": { - "RegionID": 18, - "RegionCode": "par", - "RegionName": "Paris", - "Latitude": 48.856667, - "Longitude": 2.352222, - "Nodes": [ - { - "Name": "18c", - "RegionID": 18, - "HostName": "derp18c.tailscale.com", - "IPv4": "176.58.90.207", - "IPv6": "2a00:dd80:3e::c19", - "CanPort80": true - }, - { - "Name": "18d", - "RegionID": 18, - "HostName": "derp18d.tailscale.com", - "IPv4": "176.58.90.104", - "IPv6": "2a00:dd80:3e::f2e", - "CanPort80": true - }, - { - "Name": "18b", - "RegionID": 18, - "HostName": "derp18b.tailscale.com", - "IPv4": "176.58.90.147", - "IPv6": "2a00:dd80:3e::363", - "CanPort80": true - } - ] - }, - "19": { - "RegionID": 19, - "RegionCode": "mad", - "RegionName": "Madrid", - "Latitude": 40.416944, - "Longitude": -3.703333, - "Nodes": [ - { - "Name": "19c", - "RegionID": 19, - "HostName": "derp19c.tailscale.com", - "IPv4": "45.159.97.61", - "IPv6": "2a00:dd80:14:10::20", - "CanPort80": true - }, - { - "Name": "19d", - "RegionID": 19, - "HostName": "derp19d.tailscale.com", - "IPv4": "45.159.97.233", - "IPv6": "2a00:dd80:14:10::34a", - "CanPort80": true - }, - { - "Name": "19b", - "RegionID": 19, - "HostName": "derp19b.tailscale.com", - "IPv4": "45.159.97.144", - "IPv6": "2a00:dd80:14:10::335", - "CanPort80": true - } - ] - }, - "2": { - "RegionID": 2, - "RegionCode": "sfo", - "RegionName": "San Francisco", - "Latitude": 37.7775, - "Longitude": -122.416389, - "Nodes": [ - { - "Name": "2e", - "RegionID": 2, - "HostName": "derp2e.tailscale.com", - "IPv4": "192.73.252.134", - "IPv6": "2607:f740:0:3f::44c", - "CanPort80": true - }, - { - "Name": "2f", - "RegionID": 2, - "HostName": "derp2f.tailscale.com", - "IPv4": "208.111.34.178", - "IPv6": "2607:f740:0:3f::f4", - "CanPort80": true - }, - { - "Name": "2d", - "RegionID": 2, - "HostName": "derp2d.tailscale.com", - "IPv4": "192.73.252.65", - "IPv6": "2607:f740:0:3f::287", - "CanPort80": true - } - ] - }, - "20": { - "RegionID": 20, - "RegionCode": "hkg", - "RegionName": "Hong Kong", - "Latitude": 22.3193, - "Longitude": 114.1694, - "Nodes": [ - { - "Name": "20c", - "RegionID": 20, - "HostName": "derp20c.tailscale.com", - "IPv4": "205.147.105.30", - "IPv6": "2403:2500:8000:1::5fb", - "CanPort80": true - }, - { - "Name": "20d", - "RegionID": 20, - "HostName": "derp20d.tailscale.com", - "IPv4": "205.147.105.78", - "IPv6": "2403:2500:8000:1::e9a", - "CanPort80": true - }, - { - "Name": "20b", - "RegionID": 20, - "HostName": "derp20b.tailscale.com", - "IPv4": "103.6.84.152", - "IPv6": "2403:2500:8000:1::ef6", - "CanPort80": true - } - ] - }, - "21": { - "RegionID": 21, - "RegionCode": "tor", - "RegionName": "Toronto", - "Latitude": 43.741667, - "Longitude": -79.373333, - "Nodes": [ - { - "Name": "21c", - "RegionID": 21, - "HostName": "derp21c.tailscale.com", - "IPv4": "162.248.221.215", - "IPv6": "2607:f740:50::f10", - "CanPort80": true - }, - { - "Name": "21d", - "RegionID": 21, - "HostName": "derp21d.tailscale.com", - "IPv4": "162.248.221.248", - "IPv6": "2607:f740:50::ca4", - "CanPort80": true - }, - { - "Name": "21b", - "RegionID": 21, - "HostName": "derp21b.tailscale.com", - "IPv4": "162.248.221.199", - "IPv6": "2607:f740:50::1d1", - "CanPort80": true - } - ] - }, - "22": { - "RegionID": 22, - "RegionCode": "waw", - "RegionName": "Warsaw", - "Latitude": 52.23, - "Longitude": 21.011111, - "Nodes": [ - { - "Name": "22c", - "RegionID": 22, - "HostName": "derp22c.tailscale.com", - "IPv4": "45.159.98.253", - "IPv6": "2a00:dd80:40:100::3f", - "CanPort80": true - }, - { - "Name": "22d", - "RegionID": 22, - "HostName": "derp22d.tailscale.com", - "IPv4": "45.159.98.145", - "IPv6": "2a00:dd80:40:100::211", - "CanPort80": true - }, - { - "Name": "22b", - "RegionID": 22, - "HostName": "derp22b.tailscale.com", - "IPv4": "45.159.98.196", - "IPv6": "2a00:dd80:40:100::316", - "CanPort80": true - } - ] - }, - "23": { - "RegionID": 23, - "RegionCode": "dbi", - "RegionName": "Dubai", - "Latitude": 25.263056, - "Longitude": 55.297222, - "Nodes": [ - { - "Name": "23c", - "RegionID": 23, - "HostName": "derp23c.tailscale.com", - "IPv4": "185.34.3.207", - "IPv6": "2a00:dd80:3f:100::a50", - "CanPort80": true - }, - { - "Name": "23d", - "RegionID": 23, - "HostName": "derp23d.tailscale.com", - "IPv4": "185.34.3.75", - "IPv6": "2a00:dd80:3f:100::97e", - "CanPort80": true - }, - { - "Name": "23b", - "RegionID": 23, - "HostName": "derp23b.tailscale.com", - "IPv4": "185.34.3.232", - "IPv6": "2a00:dd80:3f:100::76f", - "CanPort80": true - } - ] - }, - "24": { - "RegionID": 24, - "RegionCode": "hnl", - "RegionName": "Honolulu", - "Latitude": 21.306944, - "Longitude": -157.858333, - "Nodes": [ - { - "Name": "24c", - "RegionID": 24, - "HostName": "derp24c.tailscale.com", - "IPv4": "208.83.233.233", - "IPv6": "2001:19f0:c000:c591:5400:04ff:fe26:2c5f", - "CanPort80": true - }, - { - "Name": "24d", - "RegionID": 24, - "HostName": "derp24d.tailscale.com", - "IPv4": "208.72.155.133", - "IPv6": "2001:19f0:c000:c564:5400:04ff:fe26:2ba8", - "CanPort80": true - }, - { - "Name": "24b", - "RegionID": 24, - "HostName": "derp24b.tailscale.com", - "IPv4": "208.83.234.151", - "IPv6": "2001:19f0:c000:c586:5400:04ff:fe26:2ba6", - "CanPort80": true - } - ] - }, - "25": { - "RegionID": 25, - "RegionCode": "nai", - "RegionName": "Nairobi", - "Latitude": -1.286389, - "Longitude": 36.817222, - "Nodes": [ - { - "Name": "25c", - "RegionID": 25, - "HostName": "derp25c.tailscale.com", - "IPv4": "102.67.167.37", - "IPv6": "2c0f:edb0:2000:1::2c7", - "CanPort80": true - }, - { - "Name": "25d", - "RegionID": 25, - "HostName": "derp25d.tailscale.com", - "IPv4": "102.67.167.188", - "IPv6": "2c0f:edb0:2000:1::188", - "CanPort80": true - }, - { - "Name": "25b", - "RegionID": 25, - "HostName": "derp25b.tailscale.com", - "IPv4": "102.67.167.245", - "IPv6": "2c0f:edb0:2000:1::2e9", - "CanPort80": true - } - ] - }, - "26": { - "RegionID": 26, - "RegionCode": "nue", - "RegionName": "Nuremberg", - "Latitude": 49.453889, - "Longitude": 11.0775, - "Nodes": [ - { - "Name": "26c", - "RegionID": 26, - "HostName": "derp26c.tailscale.com", - "IPv4": "49.12.193.137", - "IPv6": "2a01:4f8:1c1c:5c70::1", - "CanPort80": true - }, - { - "Name": "26d", - "RegionID": 26, - "HostName": "derp26d.tailscale.com", - "IPv4": "49.13.204.141", - "IPv6": "2a01:4f8:1c0c:7d06::1", - "CanPort80": true - }, - { - "Name": "26b", - "RegionID": 26, - "HostName": "derp26b.tailscale.com", - "IPv4": "167.235.72.200", - "IPv6": "2a01:4f8:1c1c:47b6::1", - "CanPort80": true - } - ] - }, - "27": { - "RegionID": 27, - "RegionCode": "iad", - "RegionName": "Ashburn", - "Latitude": 39.03, - "Longitude": -77.471111, - "Nodes": [ - { - "Name": "27d", - "RegionID": 27, - "HostName": "derp27d.tailscale.com", - "IPv4": "178.156.152.106", - "IPv6": "2a01:4ff:f0:3c8e::1", - "CanPort80": true - }, - { - "Name": "27c", - "RegionID": 27, - "HostName": "derp27c.tailscale.com", - "IPv4": "178.156.152.91", - "IPv6": "2a01:4ff:f0:3913::1", - "CanPort80": true - }, - { - "Name": "27e", - "RegionID": 27, - "HostName": "derp27e.tailscale.com", - "IPv4": "178.156.134.232", - "IPv6": "2a01:4ff:f0:28d4::1", - "CanPort80": true - }, - { - "Name": "27b", - "RegionID": 27, - "HostName": "derp27b.tailscale.com", - "IPv4": "5.161.218.233", - "IPv6": "2a01:4ff:f0:3db9::1", - "CanPort80": true - } - ] - }, - "28": { - "RegionID": 28, - "RegionCode": "hel", - "RegionName": "Helsinki", - "Latitude": 60.170833, - "Longitude": 24.9375, - "Nodes": [ - { - "Name": "28c", - "RegionID": 28, - "HostName": "derp28c.tailscale.com", - "IPv4": "95.217.2.165", - "IPv6": "2a01:4f9:c012:cd74::1", - "CanPort80": true - }, - { - "Name": "28d", - "RegionID": 28, - "HostName": "derp28d.tailscale.com", - "IPv4": "157.180.28.32", - "IPv6": "2a01:4f9:c012:2e5b::1", - "CanPort80": true - }, - { - "Name": "28b", - "RegionID": 28, - "HostName": "derp28b.tailscale.com", - "IPv4": "65.109.143.62", - "IPv6": "2a01:4f9:c012:d55c::1", - "CanPort80": true - } - ] - }, - "3": { - "RegionID": 3, - "RegionCode": "sin", - "RegionName": "Singapore", - "Latitude": 1.3521, - "Longitude": 103.8198, - "Nodes": [ - { - "Name": "3g", - "RegionID": 3, - "HostName": "derp3g.tailscale.com", - "IPv4": "172.237.72.79", - "IPv6": "2600:3c15::2000:adff:fe08:6fab", - "CanPort80": true - }, - { - "Name": "3f", - "RegionID": 3, - "HostName": "derp3f.tailscale.com", - "IPv4": "172.237.72.8", - "IPv6": "2600:3c15::2000:53ff:fe48:a668", - "CanPort80": true - }, - { - "Name": "3h", - "RegionID": 3, - "HostName": "derp3h.tailscale.com", - "IPv4": "172.237.66.30", - "IPv6": "2600:3c15::2000:3dff:fe44:50aa", - "CanPort80": true - }, - { - "Name": "3e", - "RegionID": 3, - "HostName": "derp3e.tailscale.com", - "IPv4": "172.237.72.43", - "IPv6": "2600:3c15::2000:6cff:fee4:d799", - "CanPort80": true - } - ] - }, - "4": { - "RegionID": 4, - "RegionCode": "fra", - "RegionName": "Frankfurt", - "Latitude": 50.1109, - "Longitude": 8.6821, - "Nodes": [ - { - "Name": "4h", - "RegionID": 4, - "HostName": "derp4h.tailscale.com", - "IPv4": "185.40.234.77", - "IPv6": "2a00:dd80:20::bcf", - "CanPort80": true - }, - { - "Name": "4g", - "RegionID": 4, - "HostName": "derp4g.tailscale.com", - "IPv4": "185.40.234.113", - "IPv6": "2a00:dd80:20::8f", - "CanPort80": true - }, - { - "Name": "4i", - "RegionID": 4, - "HostName": "derp4i.tailscale.com", - "IPv4": "185.40.234.53", - "IPv6": "2a00:dd80:20::8a6", - "CanPort80": true - }, - { - "Name": "4f", - "RegionID": 4, - "HostName": "derp4f.tailscale.com", - "IPv4": "185.40.234.219", - "IPv6": "2a00:dd80:20::a25", - "CanPort80": true - } - ] - }, - "5": { - "RegionID": 5, - "RegionCode": "syd", - "RegionName": "Sydney", - "Latitude": -33.867778, - "Longitude": 151.21, - "Nodes": [ - { - "Name": "5f", - "RegionID": 5, - "HostName": "derp5f.tailscale.com", - "IPv4": "172.105.166.103", - "IPv6": "2400:8907::2000:ccff:fe1f:80da", - "CanPort80": true - }, - { - "Name": "5g", - "RegionID": 5, - "HostName": "derp5g.tailscale.com", - "IPv4": "172.105.169.57", - "IPv6": "2400:8907::2000:2fff:fea7:57f4", - "CanPort80": true - }, - { - "Name": "5e", - "RegionID": 5, - "HostName": "derp5e.tailscale.com", - "IPv4": "172.105.179.230", - "IPv6": "2400:8907::2000:ceff:fe8d:4f4e", - "CanPort80": true - } - ] - }, - "6": { - "RegionID": 6, - "RegionCode": "blr", - "RegionName": "Bengaluru", - "Latitude": 12.9716, - "Longitude": 77.5946, - "Nodes": [ - { - "Name": "6a", - "RegionID": 6, - "HostName": "derp6.tailscale.com", - "IPv4": "68.183.90.120", - "IPv6": "2400:6180:100:d0::982:d001", - "CanPort80": true - } - ] - }, - "7": { - "RegionID": 7, - "RegionCode": "tok", - "RegionName": "Tokyo", - "Latitude": 35.6764, - "Longitude": 139.65, - "Nodes": [ - { - "Name": "7g", - "RegionID": 7, - "HostName": "derp7g.tailscale.com", - "IPv4": "172.238.6.179", - "IPv6": "2600:3c18::2000:3fff:fe80:3ebd", - "CanPort80": true - }, - { - "Name": "7f", - "RegionID": 7, - "HostName": "derp7f.tailscale.com", - "IPv4": "172.238.6.34", - "IPv6": "2600:3c18::2000:acff:fe8e:3ed5", - "CanPort80": true - }, - { - "Name": "7h", - "RegionID": 7, - "HostName": "derp7h.tailscale.com", - "IPv4": "172.237.28.183", - "IPv6": "2600:3c18::2000:b1ff:fea9:4560", - "CanPort80": true - }, - { - "Name": "7e", - "RegionID": 7, - "HostName": "derp7e.tailscale.com", - "IPv4": "172.238.6.180", - "IPv6": "2600:3c18::2000:60ff:fe0f:6e83", - "STUNOnly": true, - "CanPort80": true - } - ] - }, - "8": { - "RegionID": 8, - "RegionCode": "lhr", - "RegionName": "London", - "Latitude": 51.5072, - "Longitude": 0.1276, - "Nodes": [ - { - "Name": "8f", - "RegionID": 8, - "HostName": "derp8f.tailscale.com", - "IPv4": "176.58.88.183", - "IPv6": "2a00:dd80:3a::dfa", - "CanPort80": true - }, - { - "Name": "8g", - "RegionID": 8, - "HostName": "derp8g.tailscale.com", - "IPv4": "176.58.92.254", - "IPv6": "2a00:dd80:3a::ed", - "CanPort80": true - }, - { - "Name": "8e", - "RegionID": 8, - "HostName": "derp8e.tailscale.com", - "IPv4": "176.58.92.144", - "IPv6": "2a00:dd80:3a::b33", - "CanPort80": true - } - ] - }, - "9": { - "RegionID": 9, - "RegionCode": "dfw", - "RegionName": "Dallas", - "Latitude": 32.779167, - "Longitude": -96.808889, - "Nodes": [ - { - "Name": "9e", - "RegionID": 9, - "HostName": "derp9e.tailscale.com", - "IPv4": "192.73.248.83", - "IPv6": "2607:f740:100::359", - "CanPort80": true - }, - { - "Name": "9f", - "RegionID": 9, - "HostName": "derp9f.tailscale.com", - "IPv4": "209.177.156.197", - "IPv6": "2607:f740:100::cad", - "CanPort80": true - }, - { - "Name": "9d", - "RegionID": 9, - "HostName": "derp9d.tailscale.com", - "IPv4": "209.177.156.94", - "IPv6": "2607:f740:100::c05", - "CanPort80": true - } - ] - } - } - }, - "DisplayMessages": null, - "TKAEnabled": false, - "TKAHead": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", - "Domain": "kratail2tid@passkey", - "DomainAuditLogID": "", - "UserProfiles": { - "1260082990019555": { - "ID": 1260082990019555, - "LoginName": "tagged-devices", - "DisplayName": "Tagged Devices" - }, - "4538565228176803": { - "ID": 4538565228176803, - "LoginName": "kristoffer@dalby.cc", - "DisplayName": "kristoffer" - } - } + "PacketFilterRules": 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.124.195.93": { - "peer_name": "exit-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-mon/tailscaled.sock whois --json 100.124.195.93", - "response": null - }, - "100.116.18.24": { - "peer_name": "exit-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-mon/tailscaled.sock whois --json 100.116.18.24", - "response": null - }, - "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.107.162.14": { - "peer_name": "group-a-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-mon/tailscaled.sock whois --json 100.107.162.14", - "response": null - }, - "100.77.135.18": { - "peer_name": "group-b-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-mon/tailscaled.sock whois --json 100.77.135.18", - "response": null - }, - "100.105.127.107": { - "peer_name": "multi-exit-router", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-mon/tailscaled.sock whois --json 100.105.127.107", - "response": null - }, - "100.109.43.124": { - "peer_name": "router-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-mon/tailscaled.sock whois --json 100.109.43.124", - "response": null - }, - "100.65.172.123": { - "peer_name": "router-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-mon/tailscaled.sock whois --json 100.65.172.123", - "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:aa5732e314175928eff41cc8f8a7b6edd4694b7d00e420a6573ecc11a88cb203", - "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:57971", "10.65.0.27:57971", "172.17.0.1:57971"], - "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 - } - }, "netmap": { - "SelfNode": { - "ID": 1840115676059256, - "StableID": "nFzZ7giPNF11CNTRL", - "Name": "user-mon.tail78f774.ts.net.", - "User": 3982058329734709, - "Key": "nodekey:1ca6cca66d2b3811ec290c2f7ac30125c3568e19e303a8e30f6b165c9ee75a51", - "KeyExpiry": "2026-08-19T14:09:00Z", - "DiscoKey": "discokey:67ba1473894f09b564073adb12b27df2a45c513afd9e48922a0346d5d2715d12", - "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:36593", "10.65.0.27:36593", "172.17.0.1:36593"], - "Hostinfo": { - "Hostname": "user-mon", - "Services": [ - { "Proto": "peerapi4", "Port": 33201 }, - { "Proto": "peerapi6", "Port": 33201 }, - { "Proto": "peerapi-dns-proxy", "Port": 1 } - ] - }, - "Created": "2026-02-20T14:09:00.203639664Z", - "MachineAuthorized": true, - "CapMap": { - "https://tailscale.com/cap/file-sharing": null, - "https://tailscale.com/cap/is-admin": null, - "https://tailscale.com/cap/ssh": null, - "https://tailscale.com/cap/tailnet-lock": null, - "probe-udp-lifetime": null, - "ssh-behavior-v1": null, - "ssh-env-vars": null, - "store-appc-routes": null, - "tailnet-display-name": ["kratail2tid@passkey"] - }, - "ComputedName": "user-mon", - "ComputedNameWithHost": "user-mon" - }, - "AllCaps": [ - "https://tailscale.com/cap/is-admin", - "store-appc-routes", - "https://tailscale.com/cap/ssh", - "ssh-env-vars", - "tailnet-display-name", - "ssh-behavior-v1", - "https://tailscale.com/cap/tailnet-lock", - "https://tailscale.com/cap/file-sharing", - "probe-udp-lifetime" - ], - "NodeKey": "nodekey:1ca6cca66d2b3811ec290c2f7ac30125c3568e19e303a8e30f6b165c9ee75a51", - "MachineKey": "mkey:d63fc325663eef5dabd4d236e1fa5a26ed14ad31ea0711840cf755a5e8a9df39", "Peers": [ { - "ID": 1440249486084758, - "StableID": "nXRbBtuHFC11CNTRL", "Name": "tagged-server.tail78f774.ts.net.", - "User": 1260082990019555, - "Key": "nodekey:7d5c34b3e8082069d0a82838165c33f8e1b5eb32c6211c2d23d4fe8fb9ec4a19", - "DiscoKey": "discokey:aa5732e314175928eff41cc8f8a7b6edd4694b7d00e420a6573ecc11a88cb203", - "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:57971", "10.65.0.27:57971", "172.17.0.1:57971"], - "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" + "AllowedIPs": [ + "100.108.74.26/32", + "fd7a:115c:a1e0::b901:4a87/128" + ], + "PrimaryRoutes": [] } ], - "DNS": { - "Routes": { - "tail78f774.ts.net.": null, - "ts.net.": [{ "Addr": "199.247.155.53" }, { "Addr": "2620:111:8007::53" }] - }, - "Domains": ["tail78f774.ts.net"], - "Proxied": true, - "ExitNodeFilteredSet": [".ts.net", ".tailscale.net"] - }, - "PacketFilter": [], - "PacketFilterRules": null, - "SSHPolicy": { "rules": [] }, - "CollectServices": false, - "DERPMap": { - "Regions": { - "1": { - "RegionID": 1, - "RegionCode": "nyc", - "RegionName": "New York City", - "Latitude": 40.7128, - "Longitude": -74.006, - "Nodes": [ - { - "Name": "1h", - "RegionID": 1, - "HostName": "derp1h.tailscale.com", - "IPv4": "199.38.181.93", - "IPv6": "2607:f740:f::afd", - "CanPort80": true - }, - { - "Name": "1g", - "RegionID": 1, - "HostName": "derp1g.tailscale.com", - "IPv4": "209.177.145.120", - "IPv6": "2607:f740:f::3eb", - "CanPort80": true - }, - { - "Name": "1i", - "RegionID": 1, - "HostName": "derp1i.tailscale.com", - "IPv4": "199.38.181.103", - "IPv6": "2607:f740:f::e19", - "CanPort80": true - }, - { - "Name": "1f", - "RegionID": 1, - "HostName": "derp1f.tailscale.com", - "IPv4": "199.38.181.104", - "IPv6": "2607:f740:f::bc", - "CanPort80": true - } - ] - }, - "10": { - "RegionID": 10, - "RegionCode": "sea", - "RegionName": "Seattle", - "Latitude": 47.609722, - "Longitude": -122.333056, - "Nodes": [ - { - "Name": "10c", - "RegionID": 10, - "HostName": "derp10c.tailscale.com", - "IPv4": "192.73.240.121", - "IPv6": "2607:f740:14::40c", - "CanPort80": true - }, - { - "Name": "10d", - "RegionID": 10, - "HostName": "derp10d.tailscale.com", - "IPv4": "192.73.240.132", - "IPv6": "2607:f740:14::500", - "CanPort80": true - }, - { - "Name": "10b", - "RegionID": 10, - "HostName": "derp10b.tailscale.com", - "IPv4": "192.73.240.161", - "IPv6": "2607:f740:14::61c", - "CanPort80": true - } - ] - }, - "11": { - "RegionID": 11, - "RegionCode": "sao", - "RegionName": "São Paulo", - "Latitude": -23.55, - "Longitude": -46.633333, - "Nodes": [ - { - "Name": "11f", - "RegionID": 11, - "HostName": "derp11f.tailscale.com", - "IPv4": "172.237.61.197", - "IPv6": "2600:3c0d::2000:3bff:fe44:6166", - "CanPort80": true - }, - { - "Name": "11g", - "RegionID": 11, - "HostName": "derp11g.tailscale.com", - "IPv4": "172.237.61.190", - "IPv6": "2600:3c0d::2000:62ff:febe:2e67", - "CanPort80": true - }, - { - "Name": "11e", - "RegionID": 11, - "HostName": "derp11e.tailscale.com", - "IPv4": "172.237.61.194", - "IPv6": "2600:3c0d::2000:d2ff:fe43:1790", - "CanPort80": true - } - ] - }, - "12": { - "RegionID": 12, - "RegionCode": "ord", - "RegionName": "Chicago", - "Latitude": 41.881944, - "Longitude": -87.627778, - "Nodes": [ - { - "Name": "12e", - "RegionID": 12, - "HostName": "derp12e.tailscale.com", - "IPv4": "209.177.158.15", - "IPv6": "2607:f740:e::b17", - "CanPort80": true - }, - { - "Name": "12f", - "RegionID": 12, - "HostName": "derp12f.tailscale.com", - "IPv4": "199.38.182.118", - "IPv6": "2607:f740:e::4c8", - "CanPort80": true - }, - { - "Name": "12d", - "RegionID": 12, - "HostName": "derp12d.tailscale.com", - "IPv4": "209.177.158.246", - "IPv6": "2607:f740:e::811", - "CanPort80": true - } - ] - }, - "13": { - "RegionID": 13, - "RegionCode": "den", - "RegionName": "Denver", - "Latitude": 39.7392, - "Longitude": -104.9849, - "Nodes": [ - { - "Name": "13c", - "RegionID": 13, - "HostName": "derp13c.tailscale.com", - "IPv4": "192.73.242.28", - "IPv6": "2607:f740:16::5c", - "CanPort80": true - }, - { - "Name": "13d", - "RegionID": 13, - "HostName": "derp13d.tailscale.com", - "IPv4": "192.73.242.204", - "IPv6": "2607:f740:16::c23", - "CanPort80": true - }, - { - "Name": "13b", - "RegionID": 13, - "HostName": "derp13b.tailscale.com", - "IPv4": "192.73.242.187", - "IPv6": "2607:f740:16::640", - "CanPort80": true - } - ] - }, - "14": { - "RegionID": 14, - "RegionCode": "ams", - "RegionName": "Amsterdam", - "Latitude": 52.372778, - "Longitude": 4.893611, - "Nodes": [ - { - "Name": "14c", - "RegionID": 14, - "HostName": "derp14c.tailscale.com", - "IPv4": "176.58.93.147", - "IPv6": "2a00:dd80:3c::b09", - "CanPort80": true - }, - { - "Name": "14d", - "RegionID": 14, - "HostName": "derp14d.tailscale.com", - "IPv4": "176.58.93.154", - "IPv6": "2a00:dd80:3c::3d5", - "CanPort80": true - }, - { - "Name": "14b", - "RegionID": 14, - "HostName": "derp14b.tailscale.com", - "IPv4": "176.58.93.248", - "IPv6": "2a00:dd80:3c::807", - "CanPort80": true - } - ] - }, - "15": { - "RegionID": 15, - "RegionCode": "jnb", - "RegionName": "Johannesburg", - "Latitude": -26.204444, - "Longitude": 28.045556, - "Nodes": [ - { - "Name": "15c", - "RegionID": 15, - "HostName": "derp15c.tailscale.com", - "IPv4": "102.67.165.185", - "IPv6": "2c0f:edb0:0:10::b59", - "CanPort80": true - }, - { - "Name": "15d", - "RegionID": 15, - "HostName": "derp15d.tailscale.com", - "IPv4": "102.67.165.36", - "IPv6": "2c0f:edb0:0:10::599", - "CanPort80": true - }, - { - "Name": "15b", - "RegionID": 15, - "HostName": "derp15b.tailscale.com", - "IPv4": "102.67.165.90", - "IPv6": "2c0f:edb0:0:10::963", - "CanPort80": true - } - ] - }, - "16": { - "RegionID": 16, - "RegionCode": "mia", - "RegionName": "Miami", - "Latitude": 25.78, - "Longitude": -80.21, - "Nodes": [ - { - "Name": "16c", - "RegionID": 16, - "HostName": "derp16c.tailscale.com", - "IPv4": "192.73.243.229", - "IPv6": "2607:f740:17::4e4", - "CanPort80": true - }, - { - "Name": "16d", - "RegionID": 16, - "HostName": "derp16d.tailscale.com", - "IPv4": "192.73.243.141", - "IPv6": "2607:f740:17::475", - "CanPort80": true - }, - { - "Name": "16b", - "RegionID": 16, - "HostName": "derp16b.tailscale.com", - "IPv4": "192.73.243.135", - "IPv6": "2607:f740:17::476", - "CanPort80": true - } - ] - }, - "17": { - "RegionID": 17, - "RegionCode": "lax", - "RegionName": "Los Angeles", - "Latitude": 34.05, - "Longitude": -118.25, - "Nodes": [ - { - "Name": "17c", - "RegionID": 17, - "HostName": "derp17c.tailscale.com", - "IPv4": "208.111.40.12", - "IPv6": "2607:f740:c::10", - "CanPort80": true - }, - { - "Name": "17d", - "RegionID": 17, - "HostName": "derp17d.tailscale.com", - "IPv4": "208.111.40.216", - "IPv6": "2607:f740:c::e1b", - "CanPort80": true - }, - { - "Name": "17b", - "RegionID": 17, - "HostName": "derp17b.tailscale.com", - "IPv4": "192.73.244.245", - "IPv6": "2607:f740:c::646", - "CanPort80": true - } - ] - }, - "18": { - "RegionID": 18, - "RegionCode": "par", - "RegionName": "Paris", - "Latitude": 48.856667, - "Longitude": 2.352222, - "Nodes": [ - { - "Name": "18c", - "RegionID": 18, - "HostName": "derp18c.tailscale.com", - "IPv4": "176.58.90.207", - "IPv6": "2a00:dd80:3e::c19", - "CanPort80": true - }, - { - "Name": "18d", - "RegionID": 18, - "HostName": "derp18d.tailscale.com", - "IPv4": "176.58.90.104", - "IPv6": "2a00:dd80:3e::f2e", - "CanPort80": true - }, - { - "Name": "18b", - "RegionID": 18, - "HostName": "derp18b.tailscale.com", - "IPv4": "176.58.90.147", - "IPv6": "2a00:dd80:3e::363", - "CanPort80": true - } - ] - }, - "19": { - "RegionID": 19, - "RegionCode": "mad", - "RegionName": "Madrid", - "Latitude": 40.416944, - "Longitude": -3.703333, - "Nodes": [ - { - "Name": "19c", - "RegionID": 19, - "HostName": "derp19c.tailscale.com", - "IPv4": "45.159.97.61", - "IPv6": "2a00:dd80:14:10::20", - "CanPort80": true - }, - { - "Name": "19d", - "RegionID": 19, - "HostName": "derp19d.tailscale.com", - "IPv4": "45.159.97.233", - "IPv6": "2a00:dd80:14:10::34a", - "CanPort80": true - }, - { - "Name": "19b", - "RegionID": 19, - "HostName": "derp19b.tailscale.com", - "IPv4": "45.159.97.144", - "IPv6": "2a00:dd80:14:10::335", - "CanPort80": true - } - ] - }, - "2": { - "RegionID": 2, - "RegionCode": "sfo", - "RegionName": "San Francisco", - "Latitude": 37.7775, - "Longitude": -122.416389, - "Nodes": [ - { - "Name": "2e", - "RegionID": 2, - "HostName": "derp2e.tailscale.com", - "IPv4": "192.73.252.134", - "IPv6": "2607:f740:0:3f::44c", - "CanPort80": true - }, - { - "Name": "2f", - "RegionID": 2, - "HostName": "derp2f.tailscale.com", - "IPv4": "208.111.34.178", - "IPv6": "2607:f740:0:3f::f4", - "CanPort80": true - }, - { - "Name": "2d", - "RegionID": 2, - "HostName": "derp2d.tailscale.com", - "IPv4": "192.73.252.65", - "IPv6": "2607:f740:0:3f::287", - "CanPort80": true - } - ] - }, - "20": { - "RegionID": 20, - "RegionCode": "hkg", - "RegionName": "Hong Kong", - "Latitude": 22.3193, - "Longitude": 114.1694, - "Nodes": [ - { - "Name": "20c", - "RegionID": 20, - "HostName": "derp20c.tailscale.com", - "IPv4": "205.147.105.30", - "IPv6": "2403:2500:8000:1::5fb", - "CanPort80": true - }, - { - "Name": "20d", - "RegionID": 20, - "HostName": "derp20d.tailscale.com", - "IPv4": "205.147.105.78", - "IPv6": "2403:2500:8000:1::e9a", - "CanPort80": true - }, - { - "Name": "20b", - "RegionID": 20, - "HostName": "derp20b.tailscale.com", - "IPv4": "103.6.84.152", - "IPv6": "2403:2500:8000:1::ef6", - "CanPort80": true - } - ] - }, - "21": { - "RegionID": 21, - "RegionCode": "tor", - "RegionName": "Toronto", - "Latitude": 43.741667, - "Longitude": -79.373333, - "Nodes": [ - { - "Name": "21c", - "RegionID": 21, - "HostName": "derp21c.tailscale.com", - "IPv4": "162.248.221.215", - "IPv6": "2607:f740:50::f10", - "CanPort80": true - }, - { - "Name": "21d", - "RegionID": 21, - "HostName": "derp21d.tailscale.com", - "IPv4": "162.248.221.248", - "IPv6": "2607:f740:50::ca4", - "CanPort80": true - }, - { - "Name": "21b", - "RegionID": 21, - "HostName": "derp21b.tailscale.com", - "IPv4": "162.248.221.199", - "IPv6": "2607:f740:50::1d1", - "CanPort80": true - } - ] - }, - "22": { - "RegionID": 22, - "RegionCode": "waw", - "RegionName": "Warsaw", - "Latitude": 52.23, - "Longitude": 21.011111, - "Nodes": [ - { - "Name": "22c", - "RegionID": 22, - "HostName": "derp22c.tailscale.com", - "IPv4": "45.159.98.253", - "IPv6": "2a00:dd80:40:100::3f", - "CanPort80": true - }, - { - "Name": "22d", - "RegionID": 22, - "HostName": "derp22d.tailscale.com", - "IPv4": "45.159.98.145", - "IPv6": "2a00:dd80:40:100::211", - "CanPort80": true - }, - { - "Name": "22b", - "RegionID": 22, - "HostName": "derp22b.tailscale.com", - "IPv4": "45.159.98.196", - "IPv6": "2a00:dd80:40:100::316", - "CanPort80": true - } - ] - }, - "23": { - "RegionID": 23, - "RegionCode": "dbi", - "RegionName": "Dubai", - "Latitude": 25.263056, - "Longitude": 55.297222, - "Nodes": [ - { - "Name": "23c", - "RegionID": 23, - "HostName": "derp23c.tailscale.com", - "IPv4": "185.34.3.207", - "IPv6": "2a00:dd80:3f:100::a50", - "CanPort80": true - }, - { - "Name": "23d", - "RegionID": 23, - "HostName": "derp23d.tailscale.com", - "IPv4": "185.34.3.75", - "IPv6": "2a00:dd80:3f:100::97e", - "CanPort80": true - }, - { - "Name": "23b", - "RegionID": 23, - "HostName": "derp23b.tailscale.com", - "IPv4": "185.34.3.232", - "IPv6": "2a00:dd80:3f:100::76f", - "CanPort80": true - } - ] - }, - "24": { - "RegionID": 24, - "RegionCode": "hnl", - "RegionName": "Honolulu", - "Latitude": 21.306944, - "Longitude": -157.858333, - "Nodes": [ - { - "Name": "24c", - "RegionID": 24, - "HostName": "derp24c.tailscale.com", - "IPv4": "208.83.233.233", - "IPv6": "2001:19f0:c000:c591:5400:04ff:fe26:2c5f", - "CanPort80": true - }, - { - "Name": "24d", - "RegionID": 24, - "HostName": "derp24d.tailscale.com", - "IPv4": "208.72.155.133", - "IPv6": "2001:19f0:c000:c564:5400:04ff:fe26:2ba8", - "CanPort80": true - }, - { - "Name": "24b", - "RegionID": 24, - "HostName": "derp24b.tailscale.com", - "IPv4": "208.83.234.151", - "IPv6": "2001:19f0:c000:c586:5400:04ff:fe26:2ba6", - "CanPort80": true - } - ] - }, - "25": { - "RegionID": 25, - "RegionCode": "nai", - "RegionName": "Nairobi", - "Latitude": -1.286389, - "Longitude": 36.817222, - "Nodes": [ - { - "Name": "25c", - "RegionID": 25, - "HostName": "derp25c.tailscale.com", - "IPv4": "102.67.167.37", - "IPv6": "2c0f:edb0:2000:1::2c7", - "CanPort80": true - }, - { - "Name": "25d", - "RegionID": 25, - "HostName": "derp25d.tailscale.com", - "IPv4": "102.67.167.188", - "IPv6": "2c0f:edb0:2000:1::188", - "CanPort80": true - }, - { - "Name": "25b", - "RegionID": 25, - "HostName": "derp25b.tailscale.com", - "IPv4": "102.67.167.245", - "IPv6": "2c0f:edb0:2000:1::2e9", - "CanPort80": true - } - ] - }, - "26": { - "RegionID": 26, - "RegionCode": "nue", - "RegionName": "Nuremberg", - "Latitude": 49.453889, - "Longitude": 11.0775, - "Nodes": [ - { - "Name": "26c", - "RegionID": 26, - "HostName": "derp26c.tailscale.com", - "IPv4": "49.12.193.137", - "IPv6": "2a01:4f8:1c1c:5c70::1", - "CanPort80": true - }, - { - "Name": "26d", - "RegionID": 26, - "HostName": "derp26d.tailscale.com", - "IPv4": "49.13.204.141", - "IPv6": "2a01:4f8:1c0c:7d06::1", - "CanPort80": true - }, - { - "Name": "26b", - "RegionID": 26, - "HostName": "derp26b.tailscale.com", - "IPv4": "167.235.72.200", - "IPv6": "2a01:4f8:1c1c:47b6::1", - "CanPort80": true - } - ] - }, - "27": { - "RegionID": 27, - "RegionCode": "iad", - "RegionName": "Ashburn", - "Latitude": 39.03, - "Longitude": -77.471111, - "Nodes": [ - { - "Name": "27d", - "RegionID": 27, - "HostName": "derp27d.tailscale.com", - "IPv4": "178.156.152.106", - "IPv6": "2a01:4ff:f0:3c8e::1", - "CanPort80": true - }, - { - "Name": "27c", - "RegionID": 27, - "HostName": "derp27c.tailscale.com", - "IPv4": "178.156.152.91", - "IPv6": "2a01:4ff:f0:3913::1", - "CanPort80": true - }, - { - "Name": "27e", - "RegionID": 27, - "HostName": "derp27e.tailscale.com", - "IPv4": "178.156.134.232", - "IPv6": "2a01:4ff:f0:28d4::1", - "CanPort80": true - }, - { - "Name": "27b", - "RegionID": 27, - "HostName": "derp27b.tailscale.com", - "IPv4": "5.161.218.233", - "IPv6": "2a01:4ff:f0:3db9::1", - "CanPort80": true - } - ] - }, - "28": { - "RegionID": 28, - "RegionCode": "hel", - "RegionName": "Helsinki", - "Latitude": 60.170833, - "Longitude": 24.9375, - "Nodes": [ - { - "Name": "28c", - "RegionID": 28, - "HostName": "derp28c.tailscale.com", - "IPv4": "95.217.2.165", - "IPv6": "2a01:4f9:c012:cd74::1", - "CanPort80": true - }, - { - "Name": "28d", - "RegionID": 28, - "HostName": "derp28d.tailscale.com", - "IPv4": "157.180.28.32", - "IPv6": "2a01:4f9:c012:2e5b::1", - "CanPort80": true - }, - { - "Name": "28b", - "RegionID": 28, - "HostName": "derp28b.tailscale.com", - "IPv4": "65.109.143.62", - "IPv6": "2a01:4f9:c012:d55c::1", - "CanPort80": true - } - ] - }, - "3": { - "RegionID": 3, - "RegionCode": "sin", - "RegionName": "Singapore", - "Latitude": 1.3521, - "Longitude": 103.8198, - "Nodes": [ - { - "Name": "3g", - "RegionID": 3, - "HostName": "derp3g.tailscale.com", - "IPv4": "172.237.72.79", - "IPv6": "2600:3c15::2000:adff:fe08:6fab", - "CanPort80": true - }, - { - "Name": "3f", - "RegionID": 3, - "HostName": "derp3f.tailscale.com", - "IPv4": "172.237.72.8", - "IPv6": "2600:3c15::2000:53ff:fe48:a668", - "CanPort80": true - }, - { - "Name": "3h", - "RegionID": 3, - "HostName": "derp3h.tailscale.com", - "IPv4": "172.237.66.30", - "IPv6": "2600:3c15::2000:3dff:fe44:50aa", - "CanPort80": true - }, - { - "Name": "3e", - "RegionID": 3, - "HostName": "derp3e.tailscale.com", - "IPv4": "172.237.72.43", - "IPv6": "2600:3c15::2000:6cff:fee4:d799", - "CanPort80": true - } - ] - }, - "4": { - "RegionID": 4, - "RegionCode": "fra", - "RegionName": "Frankfurt", - "Latitude": 50.1109, - "Longitude": 8.6821, - "Nodes": [ - { - "Name": "4h", - "RegionID": 4, - "HostName": "derp4h.tailscale.com", - "IPv4": "185.40.234.77", - "IPv6": "2a00:dd80:20::bcf", - "CanPort80": true - }, - { - "Name": "4g", - "RegionID": 4, - "HostName": "derp4g.tailscale.com", - "IPv4": "185.40.234.113", - "IPv6": "2a00:dd80:20::8f", - "CanPort80": true - }, - { - "Name": "4i", - "RegionID": 4, - "HostName": "derp4i.tailscale.com", - "IPv4": "185.40.234.53", - "IPv6": "2a00:dd80:20::8a6", - "CanPort80": true - }, - { - "Name": "4f", - "RegionID": 4, - "HostName": "derp4f.tailscale.com", - "IPv4": "185.40.234.219", - "IPv6": "2a00:dd80:20::a25", - "CanPort80": true - } - ] - }, - "5": { - "RegionID": 5, - "RegionCode": "syd", - "RegionName": "Sydney", - "Latitude": -33.867778, - "Longitude": 151.21, - "Nodes": [ - { - "Name": "5f", - "RegionID": 5, - "HostName": "derp5f.tailscale.com", - "IPv4": "172.105.166.103", - "IPv6": "2400:8907::2000:ccff:fe1f:80da", - "CanPort80": true - }, - { - "Name": "5g", - "RegionID": 5, - "HostName": "derp5g.tailscale.com", - "IPv4": "172.105.169.57", - "IPv6": "2400:8907::2000:2fff:fea7:57f4", - "CanPort80": true - }, - { - "Name": "5e", - "RegionID": 5, - "HostName": "derp5e.tailscale.com", - "IPv4": "172.105.179.230", - "IPv6": "2400:8907::2000:ceff:fe8d:4f4e", - "CanPort80": true - } - ] - }, - "6": { - "RegionID": 6, - "RegionCode": "blr", - "RegionName": "Bengaluru", - "Latitude": 12.9716, - "Longitude": 77.5946, - "Nodes": [ - { - "Name": "6a", - "RegionID": 6, - "HostName": "derp6.tailscale.com", - "IPv4": "68.183.90.120", - "IPv6": "2400:6180:100:d0::982:d001", - "CanPort80": true - } - ] - }, - "7": { - "RegionID": 7, - "RegionCode": "tok", - "RegionName": "Tokyo", - "Latitude": 35.6764, - "Longitude": 139.65, - "Nodes": [ - { - "Name": "7g", - "RegionID": 7, - "HostName": "derp7g.tailscale.com", - "IPv4": "172.238.6.179", - "IPv6": "2600:3c18::2000:3fff:fe80:3ebd", - "CanPort80": true - }, - { - "Name": "7f", - "RegionID": 7, - "HostName": "derp7f.tailscale.com", - "IPv4": "172.238.6.34", - "IPv6": "2600:3c18::2000:acff:fe8e:3ed5", - "CanPort80": true - }, - { - "Name": "7h", - "RegionID": 7, - "HostName": "derp7h.tailscale.com", - "IPv4": "172.237.28.183", - "IPv6": "2600:3c18::2000:b1ff:fea9:4560", - "CanPort80": true - }, - { - "Name": "7e", - "RegionID": 7, - "HostName": "derp7e.tailscale.com", - "IPv4": "172.238.6.180", - "IPv6": "2600:3c18::2000:60ff:fe0f:6e83", - "STUNOnly": true, - "CanPort80": true - } - ] - }, - "8": { - "RegionID": 8, - "RegionCode": "lhr", - "RegionName": "London", - "Latitude": 51.5072, - "Longitude": 0.1276, - "Nodes": [ - { - "Name": "8f", - "RegionID": 8, - "HostName": "derp8f.tailscale.com", - "IPv4": "176.58.88.183", - "IPv6": "2a00:dd80:3a::dfa", - "CanPort80": true - }, - { - "Name": "8g", - "RegionID": 8, - "HostName": "derp8g.tailscale.com", - "IPv4": "176.58.92.254", - "IPv6": "2a00:dd80:3a::ed", - "CanPort80": true - }, - { - "Name": "8e", - "RegionID": 8, - "HostName": "derp8e.tailscale.com", - "IPv4": "176.58.92.144", - "IPv6": "2a00:dd80:3a::b33", - "CanPort80": true - } - ] - }, - "9": { - "RegionID": 9, - "RegionCode": "dfw", - "RegionName": "Dallas", - "Latitude": 32.779167, - "Longitude": -96.808889, - "Nodes": [ - { - "Name": "9e", - "RegionID": 9, - "HostName": "derp9e.tailscale.com", - "IPv4": "192.73.248.83", - "IPv6": "2607:f740:100::359", - "CanPort80": true - }, - { - "Name": "9f", - "RegionID": 9, - "HostName": "derp9f.tailscale.com", - "IPv4": "209.177.156.197", - "IPv6": "2607:f740:100::cad", - "CanPort80": true - }, - { - "Name": "9d", - "RegionID": 9, - "HostName": "derp9d.tailscale.com", - "IPv4": "209.177.156.94", - "IPv6": "2607:f740:100::c05", - "CanPort80": true - } - ] - } - } - }, - "DisplayMessages": null, - "TKAEnabled": false, - "TKAHead": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", - "Domain": "kratail2tid@passkey", - "DomainAuditLogID": "", - "UserProfiles": { - "1260082990019555": { - "ID": 1260082990019555, - "LoginName": "tagged-devices", - "DisplayName": "Tagged Devices" - }, - "3982058329734709": { - "ID": 3982058329734709, - "LoginName": "monitorpasskeykradalby@passkey", - "DisplayName": "monitorpasskeykradalby" - } - } + "PacketFilterRules": 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.124.195.93": { - "peer_name": "exit-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user1/tailscaled.sock whois --json 100.124.195.93", - "response": null - }, - "100.116.18.24": { - "peer_name": "exit-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user1/tailscaled.sock whois --json 100.116.18.24", - "response": null - }, - "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.107.162.14": { - "peer_name": "group-a-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user1/tailscaled.sock whois --json 100.107.162.14", - "response": null - }, - "100.77.135.18": { - "peer_name": "group-b-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user1/tailscaled.sock whois --json 100.77.135.18", - "response": null - }, - "100.105.127.107": { - "peer_name": "multi-exit-router", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user1/tailscaled.sock whois --json 100.105.127.107", - "response": null - }, - "100.109.43.124": { - "peer_name": "router-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user1/tailscaled.sock whois --json 100.109.43.124", - "response": null - }, - "100.65.172.123": { - "peer_name": "router-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user1/tailscaled.sock whois --json 100.65.172.123", - "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:aa5732e314175928eff41cc8f8a7b6edd4694b7d00e420a6573ecc11a88cb203", - "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:57971", "10.65.0.27:57971", "172.17.0.1:57971"], - "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 - } - }, "netmap": { - "SelfNode": { - "ID": 539541576444929, - "StableID": "nSq9YrqMD511CNTRL", - "Name": "user1.tail78f774.ts.net.", - "User": 4156223528223174, - "Key": "nodekey:96338a2cd2ea803c915ed8fdf882d66ca0c6a59d0fcf0bc4b3f928d22d1ac743", - "KeyExpiry": "2026-07-22T10:04:13Z", - "DiscoKey": "discokey:94c62b25a93d1474bcbf8b0e5f79763e3b093993c831b0a40e98b875827b232a", - "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:43259", "10.65.0.27:43259", "172.17.0.1:43259"], - "Hostinfo": { - "Hostname": "user1", - "Services": [ - { "Proto": "peerapi4", "Port": 46708 }, - { "Proto": "peerapi6", "Port": 46708 }, - { "Proto": "peerapi-dns-proxy", "Port": 1 } - ] - }, - "Created": "2026-01-23T10:04:13.531671894Z", - "MachineAuthorized": true, - "CapMap": { - "https://tailscale.com/cap/file-sharing": null, - "https://tailscale.com/cap/is-admin": null, - "https://tailscale.com/cap/is-owner": null, - "https://tailscale.com/cap/ssh": null, - "https://tailscale.com/cap/tailnet-lock": null, - "probe-udp-lifetime": null, - "ssh-behavior-v1": null, - "ssh-env-vars": null, - "store-appc-routes": null, - "tailnet-display-name": ["kratail2tid@passkey"] - }, - "ComputedName": "user1", - "ComputedNameWithHost": "user1" - }, - "AllCaps": [ - "https://tailscale.com/cap/is-owner", - "https://tailscale.com/cap/ssh", - "https://tailscale.com/cap/tailnet-lock", - "store-appc-routes", - "ssh-env-vars", - "ssh-behavior-v1", - "tailnet-display-name", - "probe-udp-lifetime", - "https://tailscale.com/cap/is-admin", - "https://tailscale.com/cap/file-sharing" - ], - "NodeKey": "nodekey:96338a2cd2ea803c915ed8fdf882d66ca0c6a59d0fcf0bc4b3f928d22d1ac743", - "MachineKey": "mkey:98b7ed0fef020882cab4324b39ac93b60741794e722411083d0d3cf703833f4a", "Peers": [ { - "ID": 1440249486084758, - "StableID": "nXRbBtuHFC11CNTRL", "Name": "tagged-server.tail78f774.ts.net.", - "User": 1260082990019555, - "Key": "nodekey:7d5c34b3e8082069d0a82838165c33f8e1b5eb32c6211c2d23d4fe8fb9ec4a19", - "DiscoKey": "discokey:aa5732e314175928eff41cc8f8a7b6edd4694b7d00e420a6573ecc11a88cb203", - "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:57971", "10.65.0.27:57971", "172.17.0.1:57971"], - "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" + "AllowedIPs": [ + "100.108.74.26/32", + "fd7a:115c:a1e0::b901:4a87/128" + ], + "PrimaryRoutes": [] } ], - "DNS": { - "Routes": { - "tail78f774.ts.net.": null, - "ts.net.": [{ "Addr": "199.247.155.53" }, { "Addr": "2620:111:8007::53" }] - }, - "Domains": ["tail78f774.ts.net"], - "Proxied": true, - "ExitNodeFilteredSet": [".ts.net", ".tailscale.net"] - }, - "PacketFilter": [], - "PacketFilterRules": null, - "SSHPolicy": { "rules": [] }, - "CollectServices": false, - "DERPMap": { - "Regions": { - "1": { - "RegionID": 1, - "RegionCode": "nyc", - "RegionName": "New York City", - "Latitude": 40.7128, - "Longitude": -74.006, - "Nodes": [ - { - "Name": "1h", - "RegionID": 1, - "HostName": "derp1h.tailscale.com", - "IPv4": "199.38.181.93", - "IPv6": "2607:f740:f::afd", - "CanPort80": true - }, - { - "Name": "1g", - "RegionID": 1, - "HostName": "derp1g.tailscale.com", - "IPv4": "209.177.145.120", - "IPv6": "2607:f740:f::3eb", - "CanPort80": true - }, - { - "Name": "1i", - "RegionID": 1, - "HostName": "derp1i.tailscale.com", - "IPv4": "199.38.181.103", - "IPv6": "2607:f740:f::e19", - "CanPort80": true - }, - { - "Name": "1f", - "RegionID": 1, - "HostName": "derp1f.tailscale.com", - "IPv4": "199.38.181.104", - "IPv6": "2607:f740:f::bc", - "CanPort80": true - } - ] - }, - "10": { - "RegionID": 10, - "RegionCode": "sea", - "RegionName": "Seattle", - "Latitude": 47.609722, - "Longitude": -122.333056, - "Nodes": [ - { - "Name": "10c", - "RegionID": 10, - "HostName": "derp10c.tailscale.com", - "IPv4": "192.73.240.121", - "IPv6": "2607:f740:14::40c", - "CanPort80": true - }, - { - "Name": "10d", - "RegionID": 10, - "HostName": "derp10d.tailscale.com", - "IPv4": "192.73.240.132", - "IPv6": "2607:f740:14::500", - "CanPort80": true - }, - { - "Name": "10b", - "RegionID": 10, - "HostName": "derp10b.tailscale.com", - "IPv4": "192.73.240.161", - "IPv6": "2607:f740:14::61c", - "CanPort80": true - } - ] - }, - "11": { - "RegionID": 11, - "RegionCode": "sao", - "RegionName": "São Paulo", - "Latitude": -23.55, - "Longitude": -46.633333, - "Nodes": [ - { - "Name": "11f", - "RegionID": 11, - "HostName": "derp11f.tailscale.com", - "IPv4": "172.237.61.197", - "IPv6": "2600:3c0d::2000:3bff:fe44:6166", - "CanPort80": true - }, - { - "Name": "11g", - "RegionID": 11, - "HostName": "derp11g.tailscale.com", - "IPv4": "172.237.61.190", - "IPv6": "2600:3c0d::2000:62ff:febe:2e67", - "CanPort80": true - }, - { - "Name": "11e", - "RegionID": 11, - "HostName": "derp11e.tailscale.com", - "IPv4": "172.237.61.194", - "IPv6": "2600:3c0d::2000:d2ff:fe43:1790", - "CanPort80": true - } - ] - }, - "12": { - "RegionID": 12, - "RegionCode": "ord", - "RegionName": "Chicago", - "Latitude": 41.881944, - "Longitude": -87.627778, - "Nodes": [ - { - "Name": "12e", - "RegionID": 12, - "HostName": "derp12e.tailscale.com", - "IPv4": "209.177.158.15", - "IPv6": "2607:f740:e::b17", - "CanPort80": true - }, - { - "Name": "12f", - "RegionID": 12, - "HostName": "derp12f.tailscale.com", - "IPv4": "199.38.182.118", - "IPv6": "2607:f740:e::4c8", - "CanPort80": true - }, - { - "Name": "12d", - "RegionID": 12, - "HostName": "derp12d.tailscale.com", - "IPv4": "209.177.158.246", - "IPv6": "2607:f740:e::811", - "CanPort80": true - } - ] - }, - "13": { - "RegionID": 13, - "RegionCode": "den", - "RegionName": "Denver", - "Latitude": 39.7392, - "Longitude": -104.9849, - "Nodes": [ - { - "Name": "13c", - "RegionID": 13, - "HostName": "derp13c.tailscale.com", - "IPv4": "192.73.242.28", - "IPv6": "2607:f740:16::5c", - "CanPort80": true - }, - { - "Name": "13d", - "RegionID": 13, - "HostName": "derp13d.tailscale.com", - "IPv4": "192.73.242.204", - "IPv6": "2607:f740:16::c23", - "CanPort80": true - }, - { - "Name": "13b", - "RegionID": 13, - "HostName": "derp13b.tailscale.com", - "IPv4": "192.73.242.187", - "IPv6": "2607:f740:16::640", - "CanPort80": true - } - ] - }, - "14": { - "RegionID": 14, - "RegionCode": "ams", - "RegionName": "Amsterdam", - "Latitude": 52.372778, - "Longitude": 4.893611, - "Nodes": [ - { - "Name": "14c", - "RegionID": 14, - "HostName": "derp14c.tailscale.com", - "IPv4": "176.58.93.147", - "IPv6": "2a00:dd80:3c::b09", - "CanPort80": true - }, - { - "Name": "14d", - "RegionID": 14, - "HostName": "derp14d.tailscale.com", - "IPv4": "176.58.93.154", - "IPv6": "2a00:dd80:3c::3d5", - "CanPort80": true - }, - { - "Name": "14b", - "RegionID": 14, - "HostName": "derp14b.tailscale.com", - "IPv4": "176.58.93.248", - "IPv6": "2a00:dd80:3c::807", - "CanPort80": true - } - ] - }, - "15": { - "RegionID": 15, - "RegionCode": "jnb", - "RegionName": "Johannesburg", - "Latitude": -26.204444, - "Longitude": 28.045556, - "Nodes": [ - { - "Name": "15c", - "RegionID": 15, - "HostName": "derp15c.tailscale.com", - "IPv4": "102.67.165.185", - "IPv6": "2c0f:edb0:0:10::b59", - "CanPort80": true - }, - { - "Name": "15d", - "RegionID": 15, - "HostName": "derp15d.tailscale.com", - "IPv4": "102.67.165.36", - "IPv6": "2c0f:edb0:0:10::599", - "CanPort80": true - }, - { - "Name": "15b", - "RegionID": 15, - "HostName": "derp15b.tailscale.com", - "IPv4": "102.67.165.90", - "IPv6": "2c0f:edb0:0:10::963", - "CanPort80": true - } - ] - }, - "16": { - "RegionID": 16, - "RegionCode": "mia", - "RegionName": "Miami", - "Latitude": 25.78, - "Longitude": -80.21, - "Nodes": [ - { - "Name": "16c", - "RegionID": 16, - "HostName": "derp16c.tailscale.com", - "IPv4": "192.73.243.229", - "IPv6": "2607:f740:17::4e4", - "CanPort80": true - }, - { - "Name": "16d", - "RegionID": 16, - "HostName": "derp16d.tailscale.com", - "IPv4": "192.73.243.141", - "IPv6": "2607:f740:17::475", - "CanPort80": true - }, - { - "Name": "16b", - "RegionID": 16, - "HostName": "derp16b.tailscale.com", - "IPv4": "192.73.243.135", - "IPv6": "2607:f740:17::476", - "CanPort80": true - } - ] - }, - "17": { - "RegionID": 17, - "RegionCode": "lax", - "RegionName": "Los Angeles", - "Latitude": 34.05, - "Longitude": -118.25, - "Nodes": [ - { - "Name": "17c", - "RegionID": 17, - "HostName": "derp17c.tailscale.com", - "IPv4": "208.111.40.12", - "IPv6": "2607:f740:c::10", - "CanPort80": true - }, - { - "Name": "17d", - "RegionID": 17, - "HostName": "derp17d.tailscale.com", - "IPv4": "208.111.40.216", - "IPv6": "2607:f740:c::e1b", - "CanPort80": true - }, - { - "Name": "17b", - "RegionID": 17, - "HostName": "derp17b.tailscale.com", - "IPv4": "192.73.244.245", - "IPv6": "2607:f740:c::646", - "CanPort80": true - } - ] - }, - "18": { - "RegionID": 18, - "RegionCode": "par", - "RegionName": "Paris", - "Latitude": 48.856667, - "Longitude": 2.352222, - "Nodes": [ - { - "Name": "18c", - "RegionID": 18, - "HostName": "derp18c.tailscale.com", - "IPv4": "176.58.90.207", - "IPv6": "2a00:dd80:3e::c19", - "CanPort80": true - }, - { - "Name": "18d", - "RegionID": 18, - "HostName": "derp18d.tailscale.com", - "IPv4": "176.58.90.104", - "IPv6": "2a00:dd80:3e::f2e", - "CanPort80": true - }, - { - "Name": "18b", - "RegionID": 18, - "HostName": "derp18b.tailscale.com", - "IPv4": "176.58.90.147", - "IPv6": "2a00:dd80:3e::363", - "CanPort80": true - } - ] - }, - "19": { - "RegionID": 19, - "RegionCode": "mad", - "RegionName": "Madrid", - "Latitude": 40.416944, - "Longitude": -3.703333, - "Nodes": [ - { - "Name": "19c", - "RegionID": 19, - "HostName": "derp19c.tailscale.com", - "IPv4": "45.159.97.61", - "IPv6": "2a00:dd80:14:10::20", - "CanPort80": true - }, - { - "Name": "19d", - "RegionID": 19, - "HostName": "derp19d.tailscale.com", - "IPv4": "45.159.97.233", - "IPv6": "2a00:dd80:14:10::34a", - "CanPort80": true - }, - { - "Name": "19b", - "RegionID": 19, - "HostName": "derp19b.tailscale.com", - "IPv4": "45.159.97.144", - "IPv6": "2a00:dd80:14:10::335", - "CanPort80": true - } - ] - }, - "2": { - "RegionID": 2, - "RegionCode": "sfo", - "RegionName": "San Francisco", - "Latitude": 37.7775, - "Longitude": -122.416389, - "Nodes": [ - { - "Name": "2e", - "RegionID": 2, - "HostName": "derp2e.tailscale.com", - "IPv4": "192.73.252.134", - "IPv6": "2607:f740:0:3f::44c", - "CanPort80": true - }, - { - "Name": "2f", - "RegionID": 2, - "HostName": "derp2f.tailscale.com", - "IPv4": "208.111.34.178", - "IPv6": "2607:f740:0:3f::f4", - "CanPort80": true - }, - { - "Name": "2d", - "RegionID": 2, - "HostName": "derp2d.tailscale.com", - "IPv4": "192.73.252.65", - "IPv6": "2607:f740:0:3f::287", - "CanPort80": true - } - ] - }, - "20": { - "RegionID": 20, - "RegionCode": "hkg", - "RegionName": "Hong Kong", - "Latitude": 22.3193, - "Longitude": 114.1694, - "Nodes": [ - { - "Name": "20c", - "RegionID": 20, - "HostName": "derp20c.tailscale.com", - "IPv4": "205.147.105.30", - "IPv6": "2403:2500:8000:1::5fb", - "CanPort80": true - }, - { - "Name": "20d", - "RegionID": 20, - "HostName": "derp20d.tailscale.com", - "IPv4": "205.147.105.78", - "IPv6": "2403:2500:8000:1::e9a", - "CanPort80": true - }, - { - "Name": "20b", - "RegionID": 20, - "HostName": "derp20b.tailscale.com", - "IPv4": "103.6.84.152", - "IPv6": "2403:2500:8000:1::ef6", - "CanPort80": true - } - ] - }, - "21": { - "RegionID": 21, - "RegionCode": "tor", - "RegionName": "Toronto", - "Latitude": 43.741667, - "Longitude": -79.373333, - "Nodes": [ - { - "Name": "21c", - "RegionID": 21, - "HostName": "derp21c.tailscale.com", - "IPv4": "162.248.221.215", - "IPv6": "2607:f740:50::f10", - "CanPort80": true - }, - { - "Name": "21d", - "RegionID": 21, - "HostName": "derp21d.tailscale.com", - "IPv4": "162.248.221.248", - "IPv6": "2607:f740:50::ca4", - "CanPort80": true - }, - { - "Name": "21b", - "RegionID": 21, - "HostName": "derp21b.tailscale.com", - "IPv4": "162.248.221.199", - "IPv6": "2607:f740:50::1d1", - "CanPort80": true - } - ] - }, - "22": { - "RegionID": 22, - "RegionCode": "waw", - "RegionName": "Warsaw", - "Latitude": 52.23, - "Longitude": 21.011111, - "Nodes": [ - { - "Name": "22c", - "RegionID": 22, - "HostName": "derp22c.tailscale.com", - "IPv4": "45.159.98.253", - "IPv6": "2a00:dd80:40:100::3f", - "CanPort80": true - }, - { - "Name": "22d", - "RegionID": 22, - "HostName": "derp22d.tailscale.com", - "IPv4": "45.159.98.145", - "IPv6": "2a00:dd80:40:100::211", - "CanPort80": true - }, - { - "Name": "22b", - "RegionID": 22, - "HostName": "derp22b.tailscale.com", - "IPv4": "45.159.98.196", - "IPv6": "2a00:dd80:40:100::316", - "CanPort80": true - } - ] - }, - "23": { - "RegionID": 23, - "RegionCode": "dbi", - "RegionName": "Dubai", - "Latitude": 25.263056, - "Longitude": 55.297222, - "Nodes": [ - { - "Name": "23c", - "RegionID": 23, - "HostName": "derp23c.tailscale.com", - "IPv4": "185.34.3.207", - "IPv6": "2a00:dd80:3f:100::a50", - "CanPort80": true - }, - { - "Name": "23d", - "RegionID": 23, - "HostName": "derp23d.tailscale.com", - "IPv4": "185.34.3.75", - "IPv6": "2a00:dd80:3f:100::97e", - "CanPort80": true - }, - { - "Name": "23b", - "RegionID": 23, - "HostName": "derp23b.tailscale.com", - "IPv4": "185.34.3.232", - "IPv6": "2a00:dd80:3f:100::76f", - "CanPort80": true - } - ] - }, - "24": { - "RegionID": 24, - "RegionCode": "hnl", - "RegionName": "Honolulu", - "Latitude": 21.306944, - "Longitude": -157.858333, - "Nodes": [ - { - "Name": "24c", - "RegionID": 24, - "HostName": "derp24c.tailscale.com", - "IPv4": "208.83.233.233", - "IPv6": "2001:19f0:c000:c591:5400:04ff:fe26:2c5f", - "CanPort80": true - }, - { - "Name": "24d", - "RegionID": 24, - "HostName": "derp24d.tailscale.com", - "IPv4": "208.72.155.133", - "IPv6": "2001:19f0:c000:c564:5400:04ff:fe26:2ba8", - "CanPort80": true - }, - { - "Name": "24b", - "RegionID": 24, - "HostName": "derp24b.tailscale.com", - "IPv4": "208.83.234.151", - "IPv6": "2001:19f0:c000:c586:5400:04ff:fe26:2ba6", - "CanPort80": true - } - ] - }, - "25": { - "RegionID": 25, - "RegionCode": "nai", - "RegionName": "Nairobi", - "Latitude": -1.286389, - "Longitude": 36.817222, - "Nodes": [ - { - "Name": "25c", - "RegionID": 25, - "HostName": "derp25c.tailscale.com", - "IPv4": "102.67.167.37", - "IPv6": "2c0f:edb0:2000:1::2c7", - "CanPort80": true - }, - { - "Name": "25d", - "RegionID": 25, - "HostName": "derp25d.tailscale.com", - "IPv4": "102.67.167.188", - "IPv6": "2c0f:edb0:2000:1::188", - "CanPort80": true - }, - { - "Name": "25b", - "RegionID": 25, - "HostName": "derp25b.tailscale.com", - "IPv4": "102.67.167.245", - "IPv6": "2c0f:edb0:2000:1::2e9", - "CanPort80": true - } - ] - }, - "26": { - "RegionID": 26, - "RegionCode": "nue", - "RegionName": "Nuremberg", - "Latitude": 49.453889, - "Longitude": 11.0775, - "Nodes": [ - { - "Name": "26c", - "RegionID": 26, - "HostName": "derp26c.tailscale.com", - "IPv4": "49.12.193.137", - "IPv6": "2a01:4f8:1c1c:5c70::1", - "CanPort80": true - }, - { - "Name": "26d", - "RegionID": 26, - "HostName": "derp26d.tailscale.com", - "IPv4": "49.13.204.141", - "IPv6": "2a01:4f8:1c0c:7d06::1", - "CanPort80": true - }, - { - "Name": "26b", - "RegionID": 26, - "HostName": "derp26b.tailscale.com", - "IPv4": "167.235.72.200", - "IPv6": "2a01:4f8:1c1c:47b6::1", - "CanPort80": true - } - ] - }, - "27": { - "RegionID": 27, - "RegionCode": "iad", - "RegionName": "Ashburn", - "Latitude": 39.03, - "Longitude": -77.471111, - "Nodes": [ - { - "Name": "27d", - "RegionID": 27, - "HostName": "derp27d.tailscale.com", - "IPv4": "178.156.152.106", - "IPv6": "2a01:4ff:f0:3c8e::1", - "CanPort80": true - }, - { - "Name": "27c", - "RegionID": 27, - "HostName": "derp27c.tailscale.com", - "IPv4": "178.156.152.91", - "IPv6": "2a01:4ff:f0:3913::1", - "CanPort80": true - }, - { - "Name": "27e", - "RegionID": 27, - "HostName": "derp27e.tailscale.com", - "IPv4": "178.156.134.232", - "IPv6": "2a01:4ff:f0:28d4::1", - "CanPort80": true - }, - { - "Name": "27b", - "RegionID": 27, - "HostName": "derp27b.tailscale.com", - "IPv4": "5.161.218.233", - "IPv6": "2a01:4ff:f0:3db9::1", - "CanPort80": true - } - ] - }, - "28": { - "RegionID": 28, - "RegionCode": "hel", - "RegionName": "Helsinki", - "Latitude": 60.170833, - "Longitude": 24.9375, - "Nodes": [ - { - "Name": "28c", - "RegionID": 28, - "HostName": "derp28c.tailscale.com", - "IPv4": "95.217.2.165", - "IPv6": "2a01:4f9:c012:cd74::1", - "CanPort80": true - }, - { - "Name": "28d", - "RegionID": 28, - "HostName": "derp28d.tailscale.com", - "IPv4": "157.180.28.32", - "IPv6": "2a01:4f9:c012:2e5b::1", - "CanPort80": true - }, - { - "Name": "28b", - "RegionID": 28, - "HostName": "derp28b.tailscale.com", - "IPv4": "65.109.143.62", - "IPv6": "2a01:4f9:c012:d55c::1", - "CanPort80": true - } - ] - }, - "3": { - "RegionID": 3, - "RegionCode": "sin", - "RegionName": "Singapore", - "Latitude": 1.3521, - "Longitude": 103.8198, - "Nodes": [ - { - "Name": "3g", - "RegionID": 3, - "HostName": "derp3g.tailscale.com", - "IPv4": "172.237.72.79", - "IPv6": "2600:3c15::2000:adff:fe08:6fab", - "CanPort80": true - }, - { - "Name": "3f", - "RegionID": 3, - "HostName": "derp3f.tailscale.com", - "IPv4": "172.237.72.8", - "IPv6": "2600:3c15::2000:53ff:fe48:a668", - "CanPort80": true - }, - { - "Name": "3h", - "RegionID": 3, - "HostName": "derp3h.tailscale.com", - "IPv4": "172.237.66.30", - "IPv6": "2600:3c15::2000:3dff:fe44:50aa", - "CanPort80": true - }, - { - "Name": "3e", - "RegionID": 3, - "HostName": "derp3e.tailscale.com", - "IPv4": "172.237.72.43", - "IPv6": "2600:3c15::2000:6cff:fee4:d799", - "CanPort80": true - } - ] - }, - "4": { - "RegionID": 4, - "RegionCode": "fra", - "RegionName": "Frankfurt", - "Latitude": 50.1109, - "Longitude": 8.6821, - "Nodes": [ - { - "Name": "4h", - "RegionID": 4, - "HostName": "derp4h.tailscale.com", - "IPv4": "185.40.234.77", - "IPv6": "2a00:dd80:20::bcf", - "CanPort80": true - }, - { - "Name": "4g", - "RegionID": 4, - "HostName": "derp4g.tailscale.com", - "IPv4": "185.40.234.113", - "IPv6": "2a00:dd80:20::8f", - "CanPort80": true - }, - { - "Name": "4i", - "RegionID": 4, - "HostName": "derp4i.tailscale.com", - "IPv4": "185.40.234.53", - "IPv6": "2a00:dd80:20::8a6", - "CanPort80": true - }, - { - "Name": "4f", - "RegionID": 4, - "HostName": "derp4f.tailscale.com", - "IPv4": "185.40.234.219", - "IPv6": "2a00:dd80:20::a25", - "CanPort80": true - } - ] - }, - "5": { - "RegionID": 5, - "RegionCode": "syd", - "RegionName": "Sydney", - "Latitude": -33.867778, - "Longitude": 151.21, - "Nodes": [ - { - "Name": "5f", - "RegionID": 5, - "HostName": "derp5f.tailscale.com", - "IPv4": "172.105.166.103", - "IPv6": "2400:8907::2000:ccff:fe1f:80da", - "CanPort80": true - }, - { - "Name": "5g", - "RegionID": 5, - "HostName": "derp5g.tailscale.com", - "IPv4": "172.105.169.57", - "IPv6": "2400:8907::2000:2fff:fea7:57f4", - "CanPort80": true - }, - { - "Name": "5e", - "RegionID": 5, - "HostName": "derp5e.tailscale.com", - "IPv4": "172.105.179.230", - "IPv6": "2400:8907::2000:ceff:fe8d:4f4e", - "CanPort80": true - } - ] - }, - "6": { - "RegionID": 6, - "RegionCode": "blr", - "RegionName": "Bengaluru", - "Latitude": 12.9716, - "Longitude": 77.5946, - "Nodes": [ - { - "Name": "6a", - "RegionID": 6, - "HostName": "derp6.tailscale.com", - "IPv4": "68.183.90.120", - "IPv6": "2400:6180:100:d0::982:d001", - "CanPort80": true - } - ] - }, - "7": { - "RegionID": 7, - "RegionCode": "tok", - "RegionName": "Tokyo", - "Latitude": 35.6764, - "Longitude": 139.65, - "Nodes": [ - { - "Name": "7g", - "RegionID": 7, - "HostName": "derp7g.tailscale.com", - "IPv4": "172.238.6.179", - "IPv6": "2600:3c18::2000:3fff:fe80:3ebd", - "CanPort80": true - }, - { - "Name": "7f", - "RegionID": 7, - "HostName": "derp7f.tailscale.com", - "IPv4": "172.238.6.34", - "IPv6": "2600:3c18::2000:acff:fe8e:3ed5", - "CanPort80": true - }, - { - "Name": "7h", - "RegionID": 7, - "HostName": "derp7h.tailscale.com", - "IPv4": "172.237.28.183", - "IPv6": "2600:3c18::2000:b1ff:fea9:4560", - "CanPort80": true - }, - { - "Name": "7e", - "RegionID": 7, - "HostName": "derp7e.tailscale.com", - "IPv4": "172.238.6.180", - "IPv6": "2600:3c18::2000:60ff:fe0f:6e83", - "STUNOnly": true, - "CanPort80": true - } - ] - }, - "8": { - "RegionID": 8, - "RegionCode": "lhr", - "RegionName": "London", - "Latitude": 51.5072, - "Longitude": 0.1276, - "Nodes": [ - { - "Name": "8f", - "RegionID": 8, - "HostName": "derp8f.tailscale.com", - "IPv4": "176.58.88.183", - "IPv6": "2a00:dd80:3a::dfa", - "CanPort80": true - }, - { - "Name": "8g", - "RegionID": 8, - "HostName": "derp8g.tailscale.com", - "IPv4": "176.58.92.254", - "IPv6": "2a00:dd80:3a::ed", - "CanPort80": true - }, - { - "Name": "8e", - "RegionID": 8, - "HostName": "derp8e.tailscale.com", - "IPv4": "176.58.92.144", - "IPv6": "2a00:dd80:3a::b33", - "CanPort80": true - } - ] - }, - "9": { - "RegionID": 9, - "RegionCode": "dfw", - "RegionName": "Dallas", - "Latitude": 32.779167, - "Longitude": -96.808889, - "Nodes": [ - { - "Name": "9e", - "RegionID": 9, - "HostName": "derp9e.tailscale.com", - "IPv4": "192.73.248.83", - "IPv6": "2607:f740:100::359", - "CanPort80": true - }, - { - "Name": "9f", - "RegionID": 9, - "HostName": "derp9f.tailscale.com", - "IPv4": "209.177.156.197", - "IPv6": "2607:f740:100::cad", - "CanPort80": true - }, - { - "Name": "9d", - "RegionID": 9, - "HostName": "derp9d.tailscale.com", - "IPv4": "209.177.156.94", - "IPv6": "2607:f740:100::c05", - "CanPort80": true - } - ] - } - } - }, - "DisplayMessages": null, - "TKAEnabled": false, - "TKAHead": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", - "Domain": "kratail2tid@passkey", - "DomainAuditLogID": "", - "UserProfiles": { - "1260082990019555": { - "ID": 1260082990019555, - "LoginName": "tagged-devices", - "DisplayName": "Tagged Devices" - }, - "4156223528223174": { - "ID": 4156223528223174, - "LoginName": "kratail2tid@passkey", - "DisplayName": "kratail2tid" - } - } + "PacketFilterRules": null } } } diff --git a/hscontrol/policy/v2/testdata/grant_results/GRANT-V33.hujson b/hscontrol/policy/v2/testdata/grant_results/GRANT-V33.hujson index db29215a9..a6ab03892 100644 --- a/hscontrol/policy/v2/testdata/grant_results/GRANT-V33.hujson +++ b/hscontrol/policy/v2/testdata/grant_results/GRANT-V33.hujson @@ -7,29 +7,55 @@ // Expected: Rules on multi-exit-router, subnet-router { "test_id": "GRANT-V33", - "timestamp": "2026-03-28T11:53:04Z", - "propagation_wait_seconds": 8, "input": { - "policy_file": "grant_policies_via/grant_v33.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"], - "tag:exit-a": ["kratail2tid@passkey"], - "tag:exit-b": ["kratail2tid@passkey"], - "tag:group-a": ["kratail2tid@passkey"], - "tag:group-b": ["kratail2tid@passkey"], - "tag:router-a": ["kratail2tid@passkey"], - "tag:router-b": ["kratail2tid@passkey"] + "tag:server": [ + "kratail2tid@passkey" + ], + "tag:prod": [ + "kratail2tid@passkey" + ], + "tag:client": [ + "kratail2tid@passkey" + ], + "tag:router": [ + "kratail2tid@passkey" + ], + "tag:exit": [ + "kratail2tid@passkey" + ], + "tag:exit-a": [ + "kratail2tid@passkey" + ], + "tag:exit-b": [ + "kratail2tid@passkey" + ], + "tag:group-a": [ + "kratail2tid@passkey" + ], + "tag:group-b": [ + "kratail2tid@passkey" + ], + "tag:router-a": [ + "kratail2tid@passkey" + ], + "tag:router-b": [ + "kratail2tid@passkey" + ] }, "hosts": { "webserver": "100.108.74.26", @@ -38,169 +64,173 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "10.44.0.0/16": ["tag:router-a"], - "10.55.0.0/16": ["tag:router-b"], - "0.0.0.0/0": ["tag:exit", "tag:exit-a", "tag:exit-b"], - "::/0": ["tag:exit", "tag:exit-a", "tag:exit-b"] + "10.33.0.0/16": [ + "tag:router" + ], + "10.44.0.0/16": [ + "tag:router-a" + ], + "10.55.0.0/16": [ + "tag:router-b" + ], + "0.0.0.0/0": [ + "tag:exit", + "tag:exit-a", + "tag:exit-b" + ], + "::/0": [ + "tag:exit", + "tag:exit-a", + "tag:exit-b" + ] } }, "grants": [ { - "src": ["tag:client"], - "dst": ["10.33.0.0/16"], - "via": ["tag:router"], - "ip": ["*"] + "src": [ + "tag:client" + ], + "dst": [ + "10.33.0.0/16" + ], + "via": [ + "tag:router" + ], + "ip": [ + "*" + ] }, { - "src": ["tag:client"], - "dst": ["autogroup:internet"], - "via": ["tag:exit"], - "ip": ["*"] + "src": [ + "tag:client" + ], + "dst": [ + "autogroup:internet" + ], + "via": [ + "tag:exit" + ], + "ip": [ + "*" + ] } ] }, - "grants_section": [ - { "src": ["tag:client"], "dst": ["10.33.0.0/16"], "via": ["tag:router"], "ip": ["*"] }, - { "src": ["tag:client"], "dst": ["autogroup:internet"], "via": ["tag:exit"], "ip": ["*"] } - ], - "api_endpoint": "https://api.tailscale.com/api/v2/tailnet/kratail2tid%40passkey/acl", - "api_method": "POST", "api_response_code": 200 }, "topology": { "nodes": { "exit-a": { - "mts_name": "exit-a", - "socket": "/home/kradalby/.config/multi-tailscale-dev/exit-a/tailscaled.sock", "hostname": "exit-a", - "user_id": 3118755726458377, - "tags": ["tag:exit-a"], + "tags": [ + "tag:exit-a" + ], "ipv4": "100.124.195.93", "ipv6": "fd7a:115c:a1e0::7837:c35d" }, "exit-b": { - "mts_name": "exit-b", - "socket": "/home/kradalby/.config/multi-tailscale-dev/exit-b/tailscaled.sock", "hostname": "exit-b", - "user_id": 2230775583277936, - "tags": ["tag:exit-b"], + "tags": [ + "tag:exit-b" + ], "ipv4": "100.116.18.24", "ipv6": "fd7a:115c:a1e0::ff37:1218" }, "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"], + "tags": [ + "tag:exit" + ], "ipv4": "100.85.66.106", "ipv6": "fd7a:115c:a1e0::7c37:426a" }, "group-a-client": { - "mts_name": "group-a-client", - "socket": "/home/kradalby/.config/multi-tailscale-dev/group-a-client/tailscaled.sock", "hostname": "group-a-client", - "user_id": 6999435610919250, - "tags": ["tag:group-a"], + "tags": [ + "tag:group-a" + ], "ipv4": "100.107.162.14", "ipv6": "fd7a:115c:a1e0::a237:a20e" }, "group-b-client": { - "mts_name": "group-b-client", - "socket": "/home/kradalby/.config/multi-tailscale-dev/group-b-client/tailscaled.sock", "hostname": "group-b-client", - "user_id": 1008089393782498, - "tags": ["tag:group-b"], + "tags": [ + "tag:group-b" + ], "ipv4": "100.77.135.18", "ipv6": "fd7a:115c:a1e0::4b37:8712" }, "multi-exit-router": { - "mts_name": "multi-exit-router", - "socket": "/home/kradalby/.config/multi-tailscale-dev/multi-exit-router/tailscaled.sock", "hostname": "multi-exit-router", - "user_id": 6294409699640722, - "tags": ["tag:exit", "tag:router"], + "tags": [ + "tag:exit", + "tag:router" + ], "ipv4": "100.105.127.107", "ipv6": "fd7a:115c:a1e0::ad37:7f6b" }, "router-a": { - "mts_name": "router-a", - "socket": "/home/kradalby/.config/multi-tailscale-dev/router-a/tailscaled.sock", "hostname": "router-a", - "user_id": 50590507314324, - "tags": ["tag:router-a"], + "tags": [ + "tag:router-a" + ], "ipv4": "100.109.43.124", "ipv6": "fd7a:115c:a1e0::a537:2b7c" }, "router-b": { - "mts_name": "router-b", - "socket": "/home/kradalby/.config/multi-tailscale-dev/router-b/tailscaled.sock", "hostname": "router-b", - "user_id": 1399889648409786, - "tags": ["tag:router-b"], + "tags": [ + "tag:router-b" + ], "ipv4": "100.65.172.123", "ipv6": "fd7a:115c:a1e0::5a37:ac7c" }, "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"], + "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"], + "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"], + "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"], + "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" @@ -209,16986 +239,221 @@ }, "captures": { "exit-a": { - "commands": { - "packet_filter_rules": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-a/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-a/tailscaled.sock debug localapi POST debug-packet-filter-matches" - }, "packet_filter_rules": null, - "packet_filter_matches": [], - "whois": { - "100.116.18.24": { - "peer_name": "exit-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-a/tailscaled.sock whois --json 100.116.18.24", - "response": null - }, - "100.85.66.106": { - "peer_name": "exit-node", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-a/tailscaled.sock whois --json 100.85.66.106", - "response": null - }, - "100.107.162.14": { - "peer_name": "group-a-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-a/tailscaled.sock whois --json 100.107.162.14", - "response": null - }, - "100.77.135.18": { - "peer_name": "group-b-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-a/tailscaled.sock whois --json 100.77.135.18", - "response": null - }, - "100.105.127.107": { - "peer_name": "multi-exit-router", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-a/tailscaled.sock whois --json 100.105.127.107", - "response": null - }, - "100.109.43.124": { - "peer_name": "router-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-a/tailscaled.sock whois --json 100.109.43.124", - "response": null - }, - "100.65.172.123": { - "peer_name": "router-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-a/tailscaled.sock whois --json 100.65.172.123", - "response": null - }, - "100.92.142.61": { - "peer_name": "subnet-router", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-a/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-a/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-a/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-a/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-a/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-a/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-a/tailscaled.sock whois --json 100.90.199.68", - "response": null - } - }, "netmap": { - "SelfNode": { - "ID": 3118755726458377, - "StableID": "nvFTscRVMR11CNTRL", - "Name": "exit-a.tail78f774.ts.net.", - "User": 3118755726458377, - "Key": "nodekey:21ab6fa3288e3bf8cecced295316c6327f427649765eb1746cc6ee9978bcc35c", - "DiscoKey": "discokey:0c8595f67987ed47cf551646d6266c21a635d622409d10745cc08f6922066e49", - "Addresses": ["100.124.195.93/32", "fd7a:115c:a1e0::7837:c35d/128"], - "AllowedIPs": ["100.124.195.93/32", "fd7a:115c:a1e0::7837:c35d/128"], - "Endpoints": ["77.164.248.136:37550", "10.65.0.27:37550", "172.17.0.1:37550"], - "Hostinfo": { - "Hostname": "exit-a", - "RoutableIPs": ["0.0.0.0/0", "::/0"], - "RequestTags": ["tag:exit-a"], - "Services": [ - { "Proto": "peerapi4", "Port": 57826 }, - { "Proto": "peerapi6", "Port": 57826 }, - { "Proto": "peerapi-dns-proxy", "Port": 1 } - ] - }, - "Created": "2026-03-28T10:37:56.932966573Z", - "Tags": ["tag:exit-a"], - "MachineAuthorized": true, - "CapMap": { - "https://tailscale.com/cap/file-sharing": null, - "https://tailscale.com/cap/is-owner": null, - "https://tailscale.com/cap/ssh": null, - "https://tailscale.com/cap/tailnet-lock": null, - "probe-udp-lifetime": null, - "ssh-behavior-v1": null, - "ssh-env-vars": null, - "store-appc-routes": null, - "tailnet-display-name": ["kratail2tid@passkey"] - }, - "ComputedName": "exit-a", - "ComputedNameWithHost": "exit-a" - }, - "AllCaps": [ - "https://tailscale.com/cap/file-sharing", - "https://tailscale.com/cap/tailnet-lock", - "probe-udp-lifetime", - "https://tailscale.com/cap/is-owner", - "ssh-env-vars", - "store-appc-routes", - "ssh-behavior-v1", - "tailnet-display-name", - "https://tailscale.com/cap/ssh" - ], - "NodeKey": "nodekey:21ab6fa3288e3bf8cecced295316c6327f427649765eb1746cc6ee9978bcc35c", - "MachineKey": "mkey:d4a36168723163165bbdcb0b17762903171593d01c26c5bb12216932f6d10876", "Peers": [], - "DNS": { - "Routes": { - "tail78f774.ts.net.": null, - "ts.net.": [{ "Addr": "199.247.155.53" }, { "Addr": "2620:111:8007::53" }] - }, - "Domains": ["tail78f774.ts.net"], - "Proxied": true, - "ExitNodeFilteredSet": [".ts.net", ".tailscale.net"] - }, - "PacketFilter": [], - "PacketFilterRules": null, - "SSHPolicy": { "rules": [] }, - "CollectServices": false, - "DERPMap": { - "Regions": { - "1": { - "RegionID": 1, - "RegionCode": "nyc", - "RegionName": "New York City", - "Latitude": 40.7128, - "Longitude": -74.006, - "Nodes": [ - { - "Name": "1h", - "RegionID": 1, - "HostName": "derp1h.tailscale.com", - "IPv4": "199.38.181.93", - "IPv6": "2607:f740:f::afd", - "CanPort80": true - }, - { - "Name": "1g", - "RegionID": 1, - "HostName": "derp1g.tailscale.com", - "IPv4": "209.177.145.120", - "IPv6": "2607:f740:f::3eb", - "CanPort80": true - }, - { - "Name": "1i", - "RegionID": 1, - "HostName": "derp1i.tailscale.com", - "IPv4": "199.38.181.103", - "IPv6": "2607:f740:f::e19", - "CanPort80": true - }, - { - "Name": "1f", - "RegionID": 1, - "HostName": "derp1f.tailscale.com", - "IPv4": "199.38.181.104", - "IPv6": "2607:f740:f::bc", - "CanPort80": true - } - ] - }, - "10": { - "RegionID": 10, - "RegionCode": "sea", - "RegionName": "Seattle", - "Latitude": 47.609722, - "Longitude": -122.333056, - "Nodes": [ - { - "Name": "10c", - "RegionID": 10, - "HostName": "derp10c.tailscale.com", - "IPv4": "192.73.240.121", - "IPv6": "2607:f740:14::40c", - "CanPort80": true - }, - { - "Name": "10d", - "RegionID": 10, - "HostName": "derp10d.tailscale.com", - "IPv4": "192.73.240.132", - "IPv6": "2607:f740:14::500", - "CanPort80": true - }, - { - "Name": "10b", - "RegionID": 10, - "HostName": "derp10b.tailscale.com", - "IPv4": "192.73.240.161", - "IPv6": "2607:f740:14::61c", - "CanPort80": true - } - ] - }, - "11": { - "RegionID": 11, - "RegionCode": "sao", - "RegionName": "São Paulo", - "Latitude": -23.55, - "Longitude": -46.633333, - "Nodes": [ - { - "Name": "11f", - "RegionID": 11, - "HostName": "derp11f.tailscale.com", - "IPv4": "172.237.61.197", - "IPv6": "2600:3c0d::2000:3bff:fe44:6166", - "CanPort80": true - }, - { - "Name": "11g", - "RegionID": 11, - "HostName": "derp11g.tailscale.com", - "IPv4": "172.237.61.190", - "IPv6": "2600:3c0d::2000:62ff:febe:2e67", - "CanPort80": true - }, - { - "Name": "11e", - "RegionID": 11, - "HostName": "derp11e.tailscale.com", - "IPv4": "172.237.61.194", - "IPv6": "2600:3c0d::2000:d2ff:fe43:1790", - "CanPort80": true - } - ] - }, - "12": { - "RegionID": 12, - "RegionCode": "ord", - "RegionName": "Chicago", - "Latitude": 41.881944, - "Longitude": -87.627778, - "Nodes": [ - { - "Name": "12e", - "RegionID": 12, - "HostName": "derp12e.tailscale.com", - "IPv4": "209.177.158.15", - "IPv6": "2607:f740:e::b17", - "CanPort80": true - }, - { - "Name": "12f", - "RegionID": 12, - "HostName": "derp12f.tailscale.com", - "IPv4": "199.38.182.118", - "IPv6": "2607:f740:e::4c8", - "CanPort80": true - }, - { - "Name": "12d", - "RegionID": 12, - "HostName": "derp12d.tailscale.com", - "IPv4": "209.177.158.246", - "IPv6": "2607:f740:e::811", - "CanPort80": true - } - ] - }, - "13": { - "RegionID": 13, - "RegionCode": "den", - "RegionName": "Denver", - "Latitude": 39.7392, - "Longitude": -104.9849, - "Nodes": [ - { - "Name": "13c", - "RegionID": 13, - "HostName": "derp13c.tailscale.com", - "IPv4": "192.73.242.28", - "IPv6": "2607:f740:16::5c", - "CanPort80": true - }, - { - "Name": "13d", - "RegionID": 13, - "HostName": "derp13d.tailscale.com", - "IPv4": "192.73.242.204", - "IPv6": "2607:f740:16::c23", - "CanPort80": true - }, - { - "Name": "13b", - "RegionID": 13, - "HostName": "derp13b.tailscale.com", - "IPv4": "192.73.242.187", - "IPv6": "2607:f740:16::640", - "CanPort80": true - } - ] - }, - "14": { - "RegionID": 14, - "RegionCode": "ams", - "RegionName": "Amsterdam", - "Latitude": 52.372778, - "Longitude": 4.893611, - "Nodes": [ - { - "Name": "14c", - "RegionID": 14, - "HostName": "derp14c.tailscale.com", - "IPv4": "176.58.93.147", - "IPv6": "2a00:dd80:3c::b09", - "CanPort80": true - }, - { - "Name": "14d", - "RegionID": 14, - "HostName": "derp14d.tailscale.com", - "IPv4": "176.58.93.154", - "IPv6": "2a00:dd80:3c::3d5", - "CanPort80": true - }, - { - "Name": "14b", - "RegionID": 14, - "HostName": "derp14b.tailscale.com", - "IPv4": "176.58.93.248", - "IPv6": "2a00:dd80:3c::807", - "CanPort80": true - } - ] - }, - "15": { - "RegionID": 15, - "RegionCode": "jnb", - "RegionName": "Johannesburg", - "Latitude": -26.204444, - "Longitude": 28.045556, - "Nodes": [ - { - "Name": "15c", - "RegionID": 15, - "HostName": "derp15c.tailscale.com", - "IPv4": "102.67.165.185", - "IPv6": "2c0f:edb0:0:10::b59", - "CanPort80": true - }, - { - "Name": "15d", - "RegionID": 15, - "HostName": "derp15d.tailscale.com", - "IPv4": "102.67.165.36", - "IPv6": "2c0f:edb0:0:10::599", - "CanPort80": true - }, - { - "Name": "15b", - "RegionID": 15, - "HostName": "derp15b.tailscale.com", - "IPv4": "102.67.165.90", - "IPv6": "2c0f:edb0:0:10::963", - "CanPort80": true - } - ] - }, - "16": { - "RegionID": 16, - "RegionCode": "mia", - "RegionName": "Miami", - "Latitude": 25.78, - "Longitude": -80.21, - "Nodes": [ - { - "Name": "16c", - "RegionID": 16, - "HostName": "derp16c.tailscale.com", - "IPv4": "192.73.243.229", - "IPv6": "2607:f740:17::4e4", - "CanPort80": true - }, - { - "Name": "16d", - "RegionID": 16, - "HostName": "derp16d.tailscale.com", - "IPv4": "192.73.243.141", - "IPv6": "2607:f740:17::475", - "CanPort80": true - }, - { - "Name": "16b", - "RegionID": 16, - "HostName": "derp16b.tailscale.com", - "IPv4": "192.73.243.135", - "IPv6": "2607:f740:17::476", - "CanPort80": true - } - ] - }, - "17": { - "RegionID": 17, - "RegionCode": "lax", - "RegionName": "Los Angeles", - "Latitude": 34.05, - "Longitude": -118.25, - "Nodes": [ - { - "Name": "17c", - "RegionID": 17, - "HostName": "derp17c.tailscale.com", - "IPv4": "208.111.40.12", - "IPv6": "2607:f740:c::10", - "CanPort80": true - }, - { - "Name": "17d", - "RegionID": 17, - "HostName": "derp17d.tailscale.com", - "IPv4": "208.111.40.216", - "IPv6": "2607:f740:c::e1b", - "CanPort80": true - }, - { - "Name": "17b", - "RegionID": 17, - "HostName": "derp17b.tailscale.com", - "IPv4": "192.73.244.245", - "IPv6": "2607:f740:c::646", - "CanPort80": true - } - ] - }, - "18": { - "RegionID": 18, - "RegionCode": "par", - "RegionName": "Paris", - "Latitude": 48.856667, - "Longitude": 2.352222, - "Nodes": [ - { - "Name": "18c", - "RegionID": 18, - "HostName": "derp18c.tailscale.com", - "IPv4": "176.58.90.207", - "IPv6": "2a00:dd80:3e::c19", - "CanPort80": true - }, - { - "Name": "18d", - "RegionID": 18, - "HostName": "derp18d.tailscale.com", - "IPv4": "176.58.90.104", - "IPv6": "2a00:dd80:3e::f2e", - "CanPort80": true - }, - { - "Name": "18b", - "RegionID": 18, - "HostName": "derp18b.tailscale.com", - "IPv4": "176.58.90.147", - "IPv6": "2a00:dd80:3e::363", - "CanPort80": true - } - ] - }, - "19": { - "RegionID": 19, - "RegionCode": "mad", - "RegionName": "Madrid", - "Latitude": 40.416944, - "Longitude": -3.703333, - "Nodes": [ - { - "Name": "19c", - "RegionID": 19, - "HostName": "derp19c.tailscale.com", - "IPv4": "45.159.97.61", - "IPv6": "2a00:dd80:14:10::20", - "CanPort80": true - }, - { - "Name": "19d", - "RegionID": 19, - "HostName": "derp19d.tailscale.com", - "IPv4": "45.159.97.233", - "IPv6": "2a00:dd80:14:10::34a", - "CanPort80": true - }, - { - "Name": "19b", - "RegionID": 19, - "HostName": "derp19b.tailscale.com", - "IPv4": "45.159.97.144", - "IPv6": "2a00:dd80:14:10::335", - "CanPort80": true - } - ] - }, - "2": { - "RegionID": 2, - "RegionCode": "sfo", - "RegionName": "San Francisco", - "Latitude": 37.7775, - "Longitude": -122.416389, - "Nodes": [ - { - "Name": "2e", - "RegionID": 2, - "HostName": "derp2e.tailscale.com", - "IPv4": "192.73.252.134", - "IPv6": "2607:f740:0:3f::44c", - "CanPort80": true - }, - { - "Name": "2f", - "RegionID": 2, - "HostName": "derp2f.tailscale.com", - "IPv4": "208.111.34.178", - "IPv6": "2607:f740:0:3f::f4", - "CanPort80": true - }, - { - "Name": "2d", - "RegionID": 2, - "HostName": "derp2d.tailscale.com", - "IPv4": "192.73.252.65", - "IPv6": "2607:f740:0:3f::287", - "CanPort80": true - } - ] - }, - "20": { - "RegionID": 20, - "RegionCode": "hkg", - "RegionName": "Hong Kong", - "Latitude": 22.3193, - "Longitude": 114.1694, - "Nodes": [ - { - "Name": "20c", - "RegionID": 20, - "HostName": "derp20c.tailscale.com", - "IPv4": "205.147.105.30", - "IPv6": "2403:2500:8000:1::5fb", - "CanPort80": true - }, - { - "Name": "20d", - "RegionID": 20, - "HostName": "derp20d.tailscale.com", - "IPv4": "205.147.105.78", - "IPv6": "2403:2500:8000:1::e9a", - "CanPort80": true - }, - { - "Name": "20b", - "RegionID": 20, - "HostName": "derp20b.tailscale.com", - "IPv4": "103.6.84.152", - "IPv6": "2403:2500:8000:1::ef6", - "CanPort80": true - } - ] - }, - "21": { - "RegionID": 21, - "RegionCode": "tor", - "RegionName": "Toronto", - "Latitude": 43.741667, - "Longitude": -79.373333, - "Nodes": [ - { - "Name": "21c", - "RegionID": 21, - "HostName": "derp21c.tailscale.com", - "IPv4": "162.248.221.215", - "IPv6": "2607:f740:50::f10", - "CanPort80": true - }, - { - "Name": "21d", - "RegionID": 21, - "HostName": "derp21d.tailscale.com", - "IPv4": "162.248.221.248", - "IPv6": "2607:f740:50::ca4", - "CanPort80": true - }, - { - "Name": "21b", - "RegionID": 21, - "HostName": "derp21b.tailscale.com", - "IPv4": "162.248.221.199", - "IPv6": "2607:f740:50::1d1", - "CanPort80": true - } - ] - }, - "22": { - "RegionID": 22, - "RegionCode": "waw", - "RegionName": "Warsaw", - "Latitude": 52.23, - "Longitude": 21.011111, - "Nodes": [ - { - "Name": "22c", - "RegionID": 22, - "HostName": "derp22c.tailscale.com", - "IPv4": "45.159.98.253", - "IPv6": "2a00:dd80:40:100::3f", - "CanPort80": true - }, - { - "Name": "22d", - "RegionID": 22, - "HostName": "derp22d.tailscale.com", - "IPv4": "45.159.98.145", - "IPv6": "2a00:dd80:40:100::211", - "CanPort80": true - }, - { - "Name": "22b", - "RegionID": 22, - "HostName": "derp22b.tailscale.com", - "IPv4": "45.159.98.196", - "IPv6": "2a00:dd80:40:100::316", - "CanPort80": true - } - ] - }, - "23": { - "RegionID": 23, - "RegionCode": "dbi", - "RegionName": "Dubai", - "Latitude": 25.263056, - "Longitude": 55.297222, - "Nodes": [ - { - "Name": "23c", - "RegionID": 23, - "HostName": "derp23c.tailscale.com", - "IPv4": "185.34.3.207", - "IPv6": "2a00:dd80:3f:100::a50", - "CanPort80": true - }, - { - "Name": "23d", - "RegionID": 23, - "HostName": "derp23d.tailscale.com", - "IPv4": "185.34.3.75", - "IPv6": "2a00:dd80:3f:100::97e", - "CanPort80": true - }, - { - "Name": "23b", - "RegionID": 23, - "HostName": "derp23b.tailscale.com", - "IPv4": "185.34.3.232", - "IPv6": "2a00:dd80:3f:100::76f", - "CanPort80": true - } - ] - }, - "24": { - "RegionID": 24, - "RegionCode": "hnl", - "RegionName": "Honolulu", - "Latitude": 21.306944, - "Longitude": -157.858333, - "Nodes": [ - { - "Name": "24c", - "RegionID": 24, - "HostName": "derp24c.tailscale.com", - "IPv4": "208.83.233.233", - "IPv6": "2001:19f0:c000:c591:5400:04ff:fe26:2c5f", - "CanPort80": true - }, - { - "Name": "24d", - "RegionID": 24, - "HostName": "derp24d.tailscale.com", - "IPv4": "208.72.155.133", - "IPv6": "2001:19f0:c000:c564:5400:04ff:fe26:2ba8", - "CanPort80": true - }, - { - "Name": "24b", - "RegionID": 24, - "HostName": "derp24b.tailscale.com", - "IPv4": "208.83.234.151", - "IPv6": "2001:19f0:c000:c586:5400:04ff:fe26:2ba6", - "CanPort80": true - } - ] - }, - "25": { - "RegionID": 25, - "RegionCode": "nai", - "RegionName": "Nairobi", - "Latitude": -1.286389, - "Longitude": 36.817222, - "Nodes": [ - { - "Name": "25c", - "RegionID": 25, - "HostName": "derp25c.tailscale.com", - "IPv4": "102.67.167.37", - "IPv6": "2c0f:edb0:2000:1::2c7", - "CanPort80": true - }, - { - "Name": "25d", - "RegionID": 25, - "HostName": "derp25d.tailscale.com", - "IPv4": "102.67.167.188", - "IPv6": "2c0f:edb0:2000:1::188", - "CanPort80": true - }, - { - "Name": "25b", - "RegionID": 25, - "HostName": "derp25b.tailscale.com", - "IPv4": "102.67.167.245", - "IPv6": "2c0f:edb0:2000:1::2e9", - "CanPort80": true - } - ] - }, - "26": { - "RegionID": 26, - "RegionCode": "nue", - "RegionName": "Nuremberg", - "Latitude": 49.453889, - "Longitude": 11.0775, - "Nodes": [ - { - "Name": "26c", - "RegionID": 26, - "HostName": "derp26c.tailscale.com", - "IPv4": "49.12.193.137", - "IPv6": "2a01:4f8:1c1c:5c70::1", - "CanPort80": true - }, - { - "Name": "26d", - "RegionID": 26, - "HostName": "derp26d.tailscale.com", - "IPv4": "49.13.204.141", - "IPv6": "2a01:4f8:1c0c:7d06::1", - "CanPort80": true - }, - { - "Name": "26b", - "RegionID": 26, - "HostName": "derp26b.tailscale.com", - "IPv4": "167.235.72.200", - "IPv6": "2a01:4f8:1c1c:47b6::1", - "CanPort80": true - } - ] - }, - "27": { - "RegionID": 27, - "RegionCode": "iad", - "RegionName": "Ashburn", - "Latitude": 39.03, - "Longitude": -77.471111, - "Nodes": [ - { - "Name": "27d", - "RegionID": 27, - "HostName": "derp27d.tailscale.com", - "IPv4": "178.156.152.106", - "IPv6": "2a01:4ff:f0:3c8e::1", - "CanPort80": true - }, - { - "Name": "27c", - "RegionID": 27, - "HostName": "derp27c.tailscale.com", - "IPv4": "178.156.152.91", - "IPv6": "2a01:4ff:f0:3913::1", - "CanPort80": true - }, - { - "Name": "27e", - "RegionID": 27, - "HostName": "derp27e.tailscale.com", - "IPv4": "178.156.134.232", - "IPv6": "2a01:4ff:f0:28d4::1", - "CanPort80": true - }, - { - "Name": "27b", - "RegionID": 27, - "HostName": "derp27b.tailscale.com", - "IPv4": "5.161.218.233", - "IPv6": "2a01:4ff:f0:3db9::1", - "CanPort80": true - } - ] - }, - "28": { - "RegionID": 28, - "RegionCode": "hel", - "RegionName": "Helsinki", - "Latitude": 60.170833, - "Longitude": 24.9375, - "Nodes": [ - { - "Name": "28c", - "RegionID": 28, - "HostName": "derp28c.tailscale.com", - "IPv4": "95.217.2.165", - "IPv6": "2a01:4f9:c012:cd74::1", - "CanPort80": true - }, - { - "Name": "28d", - "RegionID": 28, - "HostName": "derp28d.tailscale.com", - "IPv4": "157.180.28.32", - "IPv6": "2a01:4f9:c012:2e5b::1", - "CanPort80": true - }, - { - "Name": "28b", - "RegionID": 28, - "HostName": "derp28b.tailscale.com", - "IPv4": "65.109.143.62", - "IPv6": "2a01:4f9:c012:d55c::1", - "CanPort80": true - } - ] - }, - "3": { - "RegionID": 3, - "RegionCode": "sin", - "RegionName": "Singapore", - "Latitude": 1.3521, - "Longitude": 103.8198, - "Nodes": [ - { - "Name": "3g", - "RegionID": 3, - "HostName": "derp3g.tailscale.com", - "IPv4": "172.237.72.79", - "IPv6": "2600:3c15::2000:adff:fe08:6fab", - "CanPort80": true - }, - { - "Name": "3f", - "RegionID": 3, - "HostName": "derp3f.tailscale.com", - "IPv4": "172.237.72.8", - "IPv6": "2600:3c15::2000:53ff:fe48:a668", - "CanPort80": true - }, - { - "Name": "3h", - "RegionID": 3, - "HostName": "derp3h.tailscale.com", - "IPv4": "172.237.66.30", - "IPv6": "2600:3c15::2000:3dff:fe44:50aa", - "CanPort80": true - }, - { - "Name": "3e", - "RegionID": 3, - "HostName": "derp3e.tailscale.com", - "IPv4": "172.237.72.43", - "IPv6": "2600:3c15::2000:6cff:fee4:d799", - "CanPort80": true - } - ] - }, - "4": { - "RegionID": 4, - "RegionCode": "fra", - "RegionName": "Frankfurt", - "Latitude": 50.1109, - "Longitude": 8.6821, - "Nodes": [ - { - "Name": "4h", - "RegionID": 4, - "HostName": "derp4h.tailscale.com", - "IPv4": "185.40.234.77", - "IPv6": "2a00:dd80:20::bcf", - "CanPort80": true - }, - { - "Name": "4g", - "RegionID": 4, - "HostName": "derp4g.tailscale.com", - "IPv4": "185.40.234.113", - "IPv6": "2a00:dd80:20::8f", - "CanPort80": true - }, - { - "Name": "4i", - "RegionID": 4, - "HostName": "derp4i.tailscale.com", - "IPv4": "185.40.234.53", - "IPv6": "2a00:dd80:20::8a6", - "CanPort80": true - }, - { - "Name": "4f", - "RegionID": 4, - "HostName": "derp4f.tailscale.com", - "IPv4": "185.40.234.219", - "IPv6": "2a00:dd80:20::a25", - "CanPort80": true - } - ] - }, - "5": { - "RegionID": 5, - "RegionCode": "syd", - "RegionName": "Sydney", - "Latitude": -33.867778, - "Longitude": 151.21, - "Nodes": [ - { - "Name": "5f", - "RegionID": 5, - "HostName": "derp5f.tailscale.com", - "IPv4": "172.105.166.103", - "IPv6": "2400:8907::2000:ccff:fe1f:80da", - "CanPort80": true - }, - { - "Name": "5g", - "RegionID": 5, - "HostName": "derp5g.tailscale.com", - "IPv4": "172.105.169.57", - "IPv6": "2400:8907::2000:2fff:fea7:57f4", - "CanPort80": true - }, - { - "Name": "5e", - "RegionID": 5, - "HostName": "derp5e.tailscale.com", - "IPv4": "172.105.179.230", - "IPv6": "2400:8907::2000:ceff:fe8d:4f4e", - "CanPort80": true - } - ] - }, - "6": { - "RegionID": 6, - "RegionCode": "blr", - "RegionName": "Bengaluru", - "Latitude": 12.9716, - "Longitude": 77.5946, - "Nodes": [ - { - "Name": "6a", - "RegionID": 6, - "HostName": "derp6.tailscale.com", - "IPv4": "68.183.90.120", - "IPv6": "2400:6180:100:d0::982:d001", - "CanPort80": true - } - ] - }, - "7": { - "RegionID": 7, - "RegionCode": "tok", - "RegionName": "Tokyo", - "Latitude": 35.6764, - "Longitude": 139.65, - "Nodes": [ - { - "Name": "7g", - "RegionID": 7, - "HostName": "derp7g.tailscale.com", - "IPv4": "172.238.6.179", - "IPv6": "2600:3c18::2000:3fff:fe80:3ebd", - "CanPort80": true - }, - { - "Name": "7f", - "RegionID": 7, - "HostName": "derp7f.tailscale.com", - "IPv4": "172.238.6.34", - "IPv6": "2600:3c18::2000:acff:fe8e:3ed5", - "CanPort80": true - }, - { - "Name": "7h", - "RegionID": 7, - "HostName": "derp7h.tailscale.com", - "IPv4": "172.237.28.183", - "IPv6": "2600:3c18::2000:b1ff:fea9:4560", - "CanPort80": true - }, - { - "Name": "7e", - "RegionID": 7, - "HostName": "derp7e.tailscale.com", - "IPv4": "172.238.6.180", - "IPv6": "2600:3c18::2000:60ff:fe0f:6e83", - "STUNOnly": true, - "CanPort80": true - } - ] - }, - "8": { - "RegionID": 8, - "RegionCode": "lhr", - "RegionName": "London", - "Latitude": 51.5072, - "Longitude": 0.1276, - "Nodes": [ - { - "Name": "8f", - "RegionID": 8, - "HostName": "derp8f.tailscale.com", - "IPv4": "176.58.88.183", - "IPv6": "2a00:dd80:3a::dfa", - "CanPort80": true - }, - { - "Name": "8g", - "RegionID": 8, - "HostName": "derp8g.tailscale.com", - "IPv4": "176.58.92.254", - "IPv6": "2a00:dd80:3a::ed", - "CanPort80": true - }, - { - "Name": "8e", - "RegionID": 8, - "HostName": "derp8e.tailscale.com", - "IPv4": "176.58.92.144", - "IPv6": "2a00:dd80:3a::b33", - "CanPort80": true - } - ] - }, - "9": { - "RegionID": 9, - "RegionCode": "dfw", - "RegionName": "Dallas", - "Latitude": 32.779167, - "Longitude": -96.808889, - "Nodes": [ - { - "Name": "9e", - "RegionID": 9, - "HostName": "derp9e.tailscale.com", - "IPv4": "192.73.248.83", - "IPv6": "2607:f740:100::359", - "CanPort80": true - }, - { - "Name": "9f", - "RegionID": 9, - "HostName": "derp9f.tailscale.com", - "IPv4": "209.177.156.197", - "IPv6": "2607:f740:100::cad", - "CanPort80": true - }, - { - "Name": "9d", - "RegionID": 9, - "HostName": "derp9d.tailscale.com", - "IPv4": "209.177.156.94", - "IPv6": "2607:f740:100::c05", - "CanPort80": true - } - ] - } - } - }, - "DisplayMessages": null, - "TKAEnabled": false, - "TKAHead": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", - "Domain": "kratail2tid@passkey", - "DomainAuditLogID": "", - "UserProfiles": { - "3118755726458377": { - "ID": 3118755726458377, - "LoginName": "exit-a.tail78f774.ts.net", - "DisplayName": "exit-a" - } - } + "PacketFilterRules": null } }, "exit-b": { - "commands": { - "packet_filter_rules": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-b/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-b/tailscaled.sock debug localapi POST debug-packet-filter-matches" - }, "packet_filter_rules": null, - "packet_filter_matches": [], - "whois": { - "100.124.195.93": { - "peer_name": "exit-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-b/tailscaled.sock whois --json 100.124.195.93", - "response": null - }, - "100.85.66.106": { - "peer_name": "exit-node", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-b/tailscaled.sock whois --json 100.85.66.106", - "response": null - }, - "100.107.162.14": { - "peer_name": "group-a-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-b/tailscaled.sock whois --json 100.107.162.14", - "response": null - }, - "100.77.135.18": { - "peer_name": "group-b-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-b/tailscaled.sock whois --json 100.77.135.18", - "response": null - }, - "100.105.127.107": { - "peer_name": "multi-exit-router", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-b/tailscaled.sock whois --json 100.105.127.107", - "response": null - }, - "100.109.43.124": { - "peer_name": "router-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-b/tailscaled.sock whois --json 100.109.43.124", - "response": null - }, - "100.65.172.123": { - "peer_name": "router-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-b/tailscaled.sock whois --json 100.65.172.123", - "response": null - }, - "100.92.142.61": { - "peer_name": "subnet-router", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-b/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-b/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-b/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-b/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-b/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-b/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-b/tailscaled.sock whois --json 100.90.199.68", - "response": null - } - }, "netmap": { - "SelfNode": { - "ID": 2230775583277936, - "StableID": "ndK1N8hKRJ11CNTRL", - "Name": "exit-b.tail78f774.ts.net.", - "User": 2230775583277936, - "Key": "nodekey:265e1377372be0d036773ac41339bf7b53ed18e9f67f196d7d517abeff741217", - "DiscoKey": "discokey:63071b08ff89860a2d98005f8f6f65f3b92e05b7b1338b1be71e4ad866f12728", - "Addresses": ["100.116.18.24/32", "fd7a:115c:a1e0::ff37:1218/128"], - "AllowedIPs": ["100.116.18.24/32", "fd7a:115c:a1e0::ff37:1218/128"], - "Endpoints": ["77.164.248.136:35565", "10.65.0.27:35565", "172.17.0.1:35565"], - "Hostinfo": { - "Hostname": "exit-b", - "RoutableIPs": ["0.0.0.0/0", "::/0"], - "RequestTags": ["tag:exit-b"], - "Services": [ - { "Proto": "peerapi4", "Port": 61723 }, - { "Proto": "peerapi6", "Port": 61723 }, - { "Proto": "peerapi-dns-proxy", "Port": 1 } - ] - }, - "Created": "2026-03-28T10:38:00.655990366Z", - "Tags": ["tag:exit-b"], - "MachineAuthorized": true, - "CapMap": { - "https://tailscale.com/cap/file-sharing": null, - "https://tailscale.com/cap/is-owner": null, - "https://tailscale.com/cap/ssh": null, - "https://tailscale.com/cap/tailnet-lock": null, - "probe-udp-lifetime": null, - "ssh-behavior-v1": null, - "ssh-env-vars": null, - "store-appc-routes": null, - "tailnet-display-name": ["kratail2tid@passkey"] - }, - "ComputedName": "exit-b", - "ComputedNameWithHost": "exit-b" - }, - "AllCaps": [ - "https://tailscale.com/cap/is-owner", - "tailnet-display-name", - "probe-udp-lifetime", - "ssh-env-vars", - "store-appc-routes", - "ssh-behavior-v1", - "https://tailscale.com/cap/ssh", - "https://tailscale.com/cap/file-sharing", - "https://tailscale.com/cap/tailnet-lock" - ], - "NodeKey": "nodekey:265e1377372be0d036773ac41339bf7b53ed18e9f67f196d7d517abeff741217", - "MachineKey": "mkey:f4cbc28e2db0f8d8a6a5fc3991b055477e5efc6c025d24b72d3509fa3743401c", "Peers": [], - "DNS": { - "Routes": { - "tail78f774.ts.net.": null, - "ts.net.": [{ "Addr": "199.247.155.53" }, { "Addr": "2620:111:8007::53" }] - }, - "Domains": ["tail78f774.ts.net"], - "Proxied": true, - "ExitNodeFilteredSet": [".ts.net", ".tailscale.net"] - }, - "PacketFilter": [], - "PacketFilterRules": null, - "SSHPolicy": { "rules": [] }, - "CollectServices": false, - "DERPMap": { - "Regions": { - "1": { - "RegionID": 1, - "RegionCode": "nyc", - "RegionName": "New York City", - "Latitude": 40.7128, - "Longitude": -74.006, - "Nodes": [ - { - "Name": "1h", - "RegionID": 1, - "HostName": "derp1h.tailscale.com", - "IPv4": "199.38.181.93", - "IPv6": "2607:f740:f::afd", - "CanPort80": true - }, - { - "Name": "1g", - "RegionID": 1, - "HostName": "derp1g.tailscale.com", - "IPv4": "209.177.145.120", - "IPv6": "2607:f740:f::3eb", - "CanPort80": true - }, - { - "Name": "1i", - "RegionID": 1, - "HostName": "derp1i.tailscale.com", - "IPv4": "199.38.181.103", - "IPv6": "2607:f740:f::e19", - "CanPort80": true - }, - { - "Name": "1f", - "RegionID": 1, - "HostName": "derp1f.tailscale.com", - "IPv4": "199.38.181.104", - "IPv6": "2607:f740:f::bc", - "CanPort80": true - } - ] - }, - "10": { - "RegionID": 10, - "RegionCode": "sea", - "RegionName": "Seattle", - "Latitude": 47.609722, - "Longitude": -122.333056, - "Nodes": [ - { - "Name": "10c", - "RegionID": 10, - "HostName": "derp10c.tailscale.com", - "IPv4": "192.73.240.121", - "IPv6": "2607:f740:14::40c", - "CanPort80": true - }, - { - "Name": "10d", - "RegionID": 10, - "HostName": "derp10d.tailscale.com", - "IPv4": "192.73.240.132", - "IPv6": "2607:f740:14::500", - "CanPort80": true - }, - { - "Name": "10b", - "RegionID": 10, - "HostName": "derp10b.tailscale.com", - "IPv4": "192.73.240.161", - "IPv6": "2607:f740:14::61c", - "CanPort80": true - } - ] - }, - "11": { - "RegionID": 11, - "RegionCode": "sao", - "RegionName": "São Paulo", - "Latitude": -23.55, - "Longitude": -46.633333, - "Nodes": [ - { - "Name": "11f", - "RegionID": 11, - "HostName": "derp11f.tailscale.com", - "IPv4": "172.237.61.197", - "IPv6": "2600:3c0d::2000:3bff:fe44:6166", - "CanPort80": true - }, - { - "Name": "11g", - "RegionID": 11, - "HostName": "derp11g.tailscale.com", - "IPv4": "172.237.61.190", - "IPv6": "2600:3c0d::2000:62ff:febe:2e67", - "CanPort80": true - }, - { - "Name": "11e", - "RegionID": 11, - "HostName": "derp11e.tailscale.com", - "IPv4": "172.237.61.194", - "IPv6": "2600:3c0d::2000:d2ff:fe43:1790", - "CanPort80": true - } - ] - }, - "12": { - "RegionID": 12, - "RegionCode": "ord", - "RegionName": "Chicago", - "Latitude": 41.881944, - "Longitude": -87.627778, - "Nodes": [ - { - "Name": "12e", - "RegionID": 12, - "HostName": "derp12e.tailscale.com", - "IPv4": "209.177.158.15", - "IPv6": "2607:f740:e::b17", - "CanPort80": true - }, - { - "Name": "12f", - "RegionID": 12, - "HostName": "derp12f.tailscale.com", - "IPv4": "199.38.182.118", - "IPv6": "2607:f740:e::4c8", - "CanPort80": true - }, - { - "Name": "12d", - "RegionID": 12, - "HostName": "derp12d.tailscale.com", - "IPv4": "209.177.158.246", - "IPv6": "2607:f740:e::811", - "CanPort80": true - } - ] - }, - "13": { - "RegionID": 13, - "RegionCode": "den", - "RegionName": "Denver", - "Latitude": 39.7392, - "Longitude": -104.9849, - "Nodes": [ - { - "Name": "13c", - "RegionID": 13, - "HostName": "derp13c.tailscale.com", - "IPv4": "192.73.242.28", - "IPv6": "2607:f740:16::5c", - "CanPort80": true - }, - { - "Name": "13d", - "RegionID": 13, - "HostName": "derp13d.tailscale.com", - "IPv4": "192.73.242.204", - "IPv6": "2607:f740:16::c23", - "CanPort80": true - }, - { - "Name": "13b", - "RegionID": 13, - "HostName": "derp13b.tailscale.com", - "IPv4": "192.73.242.187", - "IPv6": "2607:f740:16::640", - "CanPort80": true - } - ] - }, - "14": { - "RegionID": 14, - "RegionCode": "ams", - "RegionName": "Amsterdam", - "Latitude": 52.372778, - "Longitude": 4.893611, - "Nodes": [ - { - "Name": "14c", - "RegionID": 14, - "HostName": "derp14c.tailscale.com", - "IPv4": "176.58.93.147", - "IPv6": "2a00:dd80:3c::b09", - "CanPort80": true - }, - { - "Name": "14d", - "RegionID": 14, - "HostName": "derp14d.tailscale.com", - "IPv4": "176.58.93.154", - "IPv6": "2a00:dd80:3c::3d5", - "CanPort80": true - }, - { - "Name": "14b", - "RegionID": 14, - "HostName": "derp14b.tailscale.com", - "IPv4": "176.58.93.248", - "IPv6": "2a00:dd80:3c::807", - "CanPort80": true - } - ] - }, - "15": { - "RegionID": 15, - "RegionCode": "jnb", - "RegionName": "Johannesburg", - "Latitude": -26.204444, - "Longitude": 28.045556, - "Nodes": [ - { - "Name": "15c", - "RegionID": 15, - "HostName": "derp15c.tailscale.com", - "IPv4": "102.67.165.185", - "IPv6": "2c0f:edb0:0:10::b59", - "CanPort80": true - }, - { - "Name": "15d", - "RegionID": 15, - "HostName": "derp15d.tailscale.com", - "IPv4": "102.67.165.36", - "IPv6": "2c0f:edb0:0:10::599", - "CanPort80": true - }, - { - "Name": "15b", - "RegionID": 15, - "HostName": "derp15b.tailscale.com", - "IPv4": "102.67.165.90", - "IPv6": "2c0f:edb0:0:10::963", - "CanPort80": true - } - ] - }, - "16": { - "RegionID": 16, - "RegionCode": "mia", - "RegionName": "Miami", - "Latitude": 25.78, - "Longitude": -80.21, - "Nodes": [ - { - "Name": "16c", - "RegionID": 16, - "HostName": "derp16c.tailscale.com", - "IPv4": "192.73.243.229", - "IPv6": "2607:f740:17::4e4", - "CanPort80": true - }, - { - "Name": "16d", - "RegionID": 16, - "HostName": "derp16d.tailscale.com", - "IPv4": "192.73.243.141", - "IPv6": "2607:f740:17::475", - "CanPort80": true - }, - { - "Name": "16b", - "RegionID": 16, - "HostName": "derp16b.tailscale.com", - "IPv4": "192.73.243.135", - "IPv6": "2607:f740:17::476", - "CanPort80": true - } - ] - }, - "17": { - "RegionID": 17, - "RegionCode": "lax", - "RegionName": "Los Angeles", - "Latitude": 34.05, - "Longitude": -118.25, - "Nodes": [ - { - "Name": "17c", - "RegionID": 17, - "HostName": "derp17c.tailscale.com", - "IPv4": "208.111.40.12", - "IPv6": "2607:f740:c::10", - "CanPort80": true - }, - { - "Name": "17d", - "RegionID": 17, - "HostName": "derp17d.tailscale.com", - "IPv4": "208.111.40.216", - "IPv6": "2607:f740:c::e1b", - "CanPort80": true - }, - { - "Name": "17b", - "RegionID": 17, - "HostName": "derp17b.tailscale.com", - "IPv4": "192.73.244.245", - "IPv6": "2607:f740:c::646", - "CanPort80": true - } - ] - }, - "18": { - "RegionID": 18, - "RegionCode": "par", - "RegionName": "Paris", - "Latitude": 48.856667, - "Longitude": 2.352222, - "Nodes": [ - { - "Name": "18c", - "RegionID": 18, - "HostName": "derp18c.tailscale.com", - "IPv4": "176.58.90.207", - "IPv6": "2a00:dd80:3e::c19", - "CanPort80": true - }, - { - "Name": "18d", - "RegionID": 18, - "HostName": "derp18d.tailscale.com", - "IPv4": "176.58.90.104", - "IPv6": "2a00:dd80:3e::f2e", - "CanPort80": true - }, - { - "Name": "18b", - "RegionID": 18, - "HostName": "derp18b.tailscale.com", - "IPv4": "176.58.90.147", - "IPv6": "2a00:dd80:3e::363", - "CanPort80": true - } - ] - }, - "19": { - "RegionID": 19, - "RegionCode": "mad", - "RegionName": "Madrid", - "Latitude": 40.416944, - "Longitude": -3.703333, - "Nodes": [ - { - "Name": "19c", - "RegionID": 19, - "HostName": "derp19c.tailscale.com", - "IPv4": "45.159.97.61", - "IPv6": "2a00:dd80:14:10::20", - "CanPort80": true - }, - { - "Name": "19d", - "RegionID": 19, - "HostName": "derp19d.tailscale.com", - "IPv4": "45.159.97.233", - "IPv6": "2a00:dd80:14:10::34a", - "CanPort80": true - }, - { - "Name": "19b", - "RegionID": 19, - "HostName": "derp19b.tailscale.com", - "IPv4": "45.159.97.144", - "IPv6": "2a00:dd80:14:10::335", - "CanPort80": true - } - ] - }, - "2": { - "RegionID": 2, - "RegionCode": "sfo", - "RegionName": "San Francisco", - "Latitude": 37.7775, - "Longitude": -122.416389, - "Nodes": [ - { - "Name": "2e", - "RegionID": 2, - "HostName": "derp2e.tailscale.com", - "IPv4": "192.73.252.134", - "IPv6": "2607:f740:0:3f::44c", - "CanPort80": true - }, - { - "Name": "2f", - "RegionID": 2, - "HostName": "derp2f.tailscale.com", - "IPv4": "208.111.34.178", - "IPv6": "2607:f740:0:3f::f4", - "CanPort80": true - }, - { - "Name": "2d", - "RegionID": 2, - "HostName": "derp2d.tailscale.com", - "IPv4": "192.73.252.65", - "IPv6": "2607:f740:0:3f::287", - "CanPort80": true - } - ] - }, - "20": { - "RegionID": 20, - "RegionCode": "hkg", - "RegionName": "Hong Kong", - "Latitude": 22.3193, - "Longitude": 114.1694, - "Nodes": [ - { - "Name": "20c", - "RegionID": 20, - "HostName": "derp20c.tailscale.com", - "IPv4": "205.147.105.30", - "IPv6": "2403:2500:8000:1::5fb", - "CanPort80": true - }, - { - "Name": "20d", - "RegionID": 20, - "HostName": "derp20d.tailscale.com", - "IPv4": "205.147.105.78", - "IPv6": "2403:2500:8000:1::e9a", - "CanPort80": true - }, - { - "Name": "20b", - "RegionID": 20, - "HostName": "derp20b.tailscale.com", - "IPv4": "103.6.84.152", - "IPv6": "2403:2500:8000:1::ef6", - "CanPort80": true - } - ] - }, - "21": { - "RegionID": 21, - "RegionCode": "tor", - "RegionName": "Toronto", - "Latitude": 43.741667, - "Longitude": -79.373333, - "Nodes": [ - { - "Name": "21c", - "RegionID": 21, - "HostName": "derp21c.tailscale.com", - "IPv4": "162.248.221.215", - "IPv6": "2607:f740:50::f10", - "CanPort80": true - }, - { - "Name": "21d", - "RegionID": 21, - "HostName": "derp21d.tailscale.com", - "IPv4": "162.248.221.248", - "IPv6": "2607:f740:50::ca4", - "CanPort80": true - }, - { - "Name": "21b", - "RegionID": 21, - "HostName": "derp21b.tailscale.com", - "IPv4": "162.248.221.199", - "IPv6": "2607:f740:50::1d1", - "CanPort80": true - } - ] - }, - "22": { - "RegionID": 22, - "RegionCode": "waw", - "RegionName": "Warsaw", - "Latitude": 52.23, - "Longitude": 21.011111, - "Nodes": [ - { - "Name": "22c", - "RegionID": 22, - "HostName": "derp22c.tailscale.com", - "IPv4": "45.159.98.253", - "IPv6": "2a00:dd80:40:100::3f", - "CanPort80": true - }, - { - "Name": "22d", - "RegionID": 22, - "HostName": "derp22d.tailscale.com", - "IPv4": "45.159.98.145", - "IPv6": "2a00:dd80:40:100::211", - "CanPort80": true - }, - { - "Name": "22b", - "RegionID": 22, - "HostName": "derp22b.tailscale.com", - "IPv4": "45.159.98.196", - "IPv6": "2a00:dd80:40:100::316", - "CanPort80": true - } - ] - }, - "23": { - "RegionID": 23, - "RegionCode": "dbi", - "RegionName": "Dubai", - "Latitude": 25.263056, - "Longitude": 55.297222, - "Nodes": [ - { - "Name": "23c", - "RegionID": 23, - "HostName": "derp23c.tailscale.com", - "IPv4": "185.34.3.207", - "IPv6": "2a00:dd80:3f:100::a50", - "CanPort80": true - }, - { - "Name": "23d", - "RegionID": 23, - "HostName": "derp23d.tailscale.com", - "IPv4": "185.34.3.75", - "IPv6": "2a00:dd80:3f:100::97e", - "CanPort80": true - }, - { - "Name": "23b", - "RegionID": 23, - "HostName": "derp23b.tailscale.com", - "IPv4": "185.34.3.232", - "IPv6": "2a00:dd80:3f:100::76f", - "CanPort80": true - } - ] - }, - "24": { - "RegionID": 24, - "RegionCode": "hnl", - "RegionName": "Honolulu", - "Latitude": 21.306944, - "Longitude": -157.858333, - "Nodes": [ - { - "Name": "24c", - "RegionID": 24, - "HostName": "derp24c.tailscale.com", - "IPv4": "208.83.233.233", - "IPv6": "2001:19f0:c000:c591:5400:04ff:fe26:2c5f", - "CanPort80": true - }, - { - "Name": "24d", - "RegionID": 24, - "HostName": "derp24d.tailscale.com", - "IPv4": "208.72.155.133", - "IPv6": "2001:19f0:c000:c564:5400:04ff:fe26:2ba8", - "CanPort80": true - }, - { - "Name": "24b", - "RegionID": 24, - "HostName": "derp24b.tailscale.com", - "IPv4": "208.83.234.151", - "IPv6": "2001:19f0:c000:c586:5400:04ff:fe26:2ba6", - "CanPort80": true - } - ] - }, - "25": { - "RegionID": 25, - "RegionCode": "nai", - "RegionName": "Nairobi", - "Latitude": -1.286389, - "Longitude": 36.817222, - "Nodes": [ - { - "Name": "25c", - "RegionID": 25, - "HostName": "derp25c.tailscale.com", - "IPv4": "102.67.167.37", - "IPv6": "2c0f:edb0:2000:1::2c7", - "CanPort80": true - }, - { - "Name": "25d", - "RegionID": 25, - "HostName": "derp25d.tailscale.com", - "IPv4": "102.67.167.188", - "IPv6": "2c0f:edb0:2000:1::188", - "CanPort80": true - }, - { - "Name": "25b", - "RegionID": 25, - "HostName": "derp25b.tailscale.com", - "IPv4": "102.67.167.245", - "IPv6": "2c0f:edb0:2000:1::2e9", - "CanPort80": true - } - ] - }, - "26": { - "RegionID": 26, - "RegionCode": "nue", - "RegionName": "Nuremberg", - "Latitude": 49.453889, - "Longitude": 11.0775, - "Nodes": [ - { - "Name": "26c", - "RegionID": 26, - "HostName": "derp26c.tailscale.com", - "IPv4": "49.12.193.137", - "IPv6": "2a01:4f8:1c1c:5c70::1", - "CanPort80": true - }, - { - "Name": "26d", - "RegionID": 26, - "HostName": "derp26d.tailscale.com", - "IPv4": "49.13.204.141", - "IPv6": "2a01:4f8:1c0c:7d06::1", - "CanPort80": true - }, - { - "Name": "26b", - "RegionID": 26, - "HostName": "derp26b.tailscale.com", - "IPv4": "167.235.72.200", - "IPv6": "2a01:4f8:1c1c:47b6::1", - "CanPort80": true - } - ] - }, - "27": { - "RegionID": 27, - "RegionCode": "iad", - "RegionName": "Ashburn", - "Latitude": 39.03, - "Longitude": -77.471111, - "Nodes": [ - { - "Name": "27d", - "RegionID": 27, - "HostName": "derp27d.tailscale.com", - "IPv4": "178.156.152.106", - "IPv6": "2a01:4ff:f0:3c8e::1", - "CanPort80": true - }, - { - "Name": "27c", - "RegionID": 27, - "HostName": "derp27c.tailscale.com", - "IPv4": "178.156.152.91", - "IPv6": "2a01:4ff:f0:3913::1", - "CanPort80": true - }, - { - "Name": "27e", - "RegionID": 27, - "HostName": "derp27e.tailscale.com", - "IPv4": "178.156.134.232", - "IPv6": "2a01:4ff:f0:28d4::1", - "CanPort80": true - }, - { - "Name": "27b", - "RegionID": 27, - "HostName": "derp27b.tailscale.com", - "IPv4": "5.161.218.233", - "IPv6": "2a01:4ff:f0:3db9::1", - "CanPort80": true - } - ] - }, - "28": { - "RegionID": 28, - "RegionCode": "hel", - "RegionName": "Helsinki", - "Latitude": 60.170833, - "Longitude": 24.9375, - "Nodes": [ - { - "Name": "28c", - "RegionID": 28, - "HostName": "derp28c.tailscale.com", - "IPv4": "95.217.2.165", - "IPv6": "2a01:4f9:c012:cd74::1", - "CanPort80": true - }, - { - "Name": "28d", - "RegionID": 28, - "HostName": "derp28d.tailscale.com", - "IPv4": "157.180.28.32", - "IPv6": "2a01:4f9:c012:2e5b::1", - "CanPort80": true - }, - { - "Name": "28b", - "RegionID": 28, - "HostName": "derp28b.tailscale.com", - "IPv4": "65.109.143.62", - "IPv6": "2a01:4f9:c012:d55c::1", - "CanPort80": true - } - ] - }, - "3": { - "RegionID": 3, - "RegionCode": "sin", - "RegionName": "Singapore", - "Latitude": 1.3521, - "Longitude": 103.8198, - "Nodes": [ - { - "Name": "3g", - "RegionID": 3, - "HostName": "derp3g.tailscale.com", - "IPv4": "172.237.72.79", - "IPv6": "2600:3c15::2000:adff:fe08:6fab", - "CanPort80": true - }, - { - "Name": "3f", - "RegionID": 3, - "HostName": "derp3f.tailscale.com", - "IPv4": "172.237.72.8", - "IPv6": "2600:3c15::2000:53ff:fe48:a668", - "CanPort80": true - }, - { - "Name": "3h", - "RegionID": 3, - "HostName": "derp3h.tailscale.com", - "IPv4": "172.237.66.30", - "IPv6": "2600:3c15::2000:3dff:fe44:50aa", - "CanPort80": true - }, - { - "Name": "3e", - "RegionID": 3, - "HostName": "derp3e.tailscale.com", - "IPv4": "172.237.72.43", - "IPv6": "2600:3c15::2000:6cff:fee4:d799", - "CanPort80": true - } - ] - }, - "4": { - "RegionID": 4, - "RegionCode": "fra", - "RegionName": "Frankfurt", - "Latitude": 50.1109, - "Longitude": 8.6821, - "Nodes": [ - { - "Name": "4h", - "RegionID": 4, - "HostName": "derp4h.tailscale.com", - "IPv4": "185.40.234.77", - "IPv6": "2a00:dd80:20::bcf", - "CanPort80": true - }, - { - "Name": "4g", - "RegionID": 4, - "HostName": "derp4g.tailscale.com", - "IPv4": "185.40.234.113", - "IPv6": "2a00:dd80:20::8f", - "CanPort80": true - }, - { - "Name": "4i", - "RegionID": 4, - "HostName": "derp4i.tailscale.com", - "IPv4": "185.40.234.53", - "IPv6": "2a00:dd80:20::8a6", - "CanPort80": true - }, - { - "Name": "4f", - "RegionID": 4, - "HostName": "derp4f.tailscale.com", - "IPv4": "185.40.234.219", - "IPv6": "2a00:dd80:20::a25", - "CanPort80": true - } - ] - }, - "5": { - "RegionID": 5, - "RegionCode": "syd", - "RegionName": "Sydney", - "Latitude": -33.867778, - "Longitude": 151.21, - "Nodes": [ - { - "Name": "5f", - "RegionID": 5, - "HostName": "derp5f.tailscale.com", - "IPv4": "172.105.166.103", - "IPv6": "2400:8907::2000:ccff:fe1f:80da", - "CanPort80": true - }, - { - "Name": "5g", - "RegionID": 5, - "HostName": "derp5g.tailscale.com", - "IPv4": "172.105.169.57", - "IPv6": "2400:8907::2000:2fff:fea7:57f4", - "CanPort80": true - }, - { - "Name": "5e", - "RegionID": 5, - "HostName": "derp5e.tailscale.com", - "IPv4": "172.105.179.230", - "IPv6": "2400:8907::2000:ceff:fe8d:4f4e", - "CanPort80": true - } - ] - }, - "6": { - "RegionID": 6, - "RegionCode": "blr", - "RegionName": "Bengaluru", - "Latitude": 12.9716, - "Longitude": 77.5946, - "Nodes": [ - { - "Name": "6a", - "RegionID": 6, - "HostName": "derp6.tailscale.com", - "IPv4": "68.183.90.120", - "IPv6": "2400:6180:100:d0::982:d001", - "CanPort80": true - } - ] - }, - "7": { - "RegionID": 7, - "RegionCode": "tok", - "RegionName": "Tokyo", - "Latitude": 35.6764, - "Longitude": 139.65, - "Nodes": [ - { - "Name": "7g", - "RegionID": 7, - "HostName": "derp7g.tailscale.com", - "IPv4": "172.238.6.179", - "IPv6": "2600:3c18::2000:3fff:fe80:3ebd", - "CanPort80": true - }, - { - "Name": "7f", - "RegionID": 7, - "HostName": "derp7f.tailscale.com", - "IPv4": "172.238.6.34", - "IPv6": "2600:3c18::2000:acff:fe8e:3ed5", - "CanPort80": true - }, - { - "Name": "7h", - "RegionID": 7, - "HostName": "derp7h.tailscale.com", - "IPv4": "172.237.28.183", - "IPv6": "2600:3c18::2000:b1ff:fea9:4560", - "CanPort80": true - }, - { - "Name": "7e", - "RegionID": 7, - "HostName": "derp7e.tailscale.com", - "IPv4": "172.238.6.180", - "IPv6": "2600:3c18::2000:60ff:fe0f:6e83", - "STUNOnly": true, - "CanPort80": true - } - ] - }, - "8": { - "RegionID": 8, - "RegionCode": "lhr", - "RegionName": "London", - "Latitude": 51.5072, - "Longitude": 0.1276, - "Nodes": [ - { - "Name": "8f", - "RegionID": 8, - "HostName": "derp8f.tailscale.com", - "IPv4": "176.58.88.183", - "IPv6": "2a00:dd80:3a::dfa", - "CanPort80": true - }, - { - "Name": "8g", - "RegionID": 8, - "HostName": "derp8g.tailscale.com", - "IPv4": "176.58.92.254", - "IPv6": "2a00:dd80:3a::ed", - "CanPort80": true - }, - { - "Name": "8e", - "RegionID": 8, - "HostName": "derp8e.tailscale.com", - "IPv4": "176.58.92.144", - "IPv6": "2a00:dd80:3a::b33", - "CanPort80": true - } - ] - }, - "9": { - "RegionID": 9, - "RegionCode": "dfw", - "RegionName": "Dallas", - "Latitude": 32.779167, - "Longitude": -96.808889, - "Nodes": [ - { - "Name": "9e", - "RegionID": 9, - "HostName": "derp9e.tailscale.com", - "IPv4": "192.73.248.83", - "IPv6": "2607:f740:100::359", - "CanPort80": true - }, - { - "Name": "9f", - "RegionID": 9, - "HostName": "derp9f.tailscale.com", - "IPv4": "209.177.156.197", - "IPv6": "2607:f740:100::cad", - "CanPort80": true - }, - { - "Name": "9d", - "RegionID": 9, - "HostName": "derp9d.tailscale.com", - "IPv4": "209.177.156.94", - "IPv6": "2607:f740:100::c05", - "CanPort80": true - } - ] - } - } - }, - "DisplayMessages": null, - "TKAEnabled": false, - "TKAHead": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", - "Domain": "kratail2tid@passkey", - "DomainAuditLogID": "", - "UserProfiles": { - "2230775583277936": { - "ID": 2230775583277936, - "LoginName": "exit-b.tail78f774.ts.net", - "DisplayName": "exit-b" - } - } + "PacketFilterRules": null } }, "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.124.195.93": { - "peer_name": "exit-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-node/tailscaled.sock whois --json 100.124.195.93", - "response": null - }, - "100.116.18.24": { - "peer_name": "exit-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-node/tailscaled.sock whois --json 100.116.18.24", - "response": null - }, - "100.107.162.14": { - "peer_name": "group-a-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-node/tailscaled.sock whois --json 100.107.162.14", - "response": null - }, - "100.77.135.18": { - "peer_name": "group-b-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-node/tailscaled.sock whois --json 100.77.135.18", - "response": null - }, - "100.105.127.107": { - "peer_name": "multi-exit-router", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-node/tailscaled.sock whois --json 100.105.127.107", - "response": null - }, - "100.109.43.124": { - "peer_name": "router-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-node/tailscaled.sock whois --json 100.109.43.124", - "response": null - }, - "100.65.172.123": { - "peer_name": "router-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-node/tailscaled.sock whois --json 100.65.172.123", - "response": null - }, - "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 - } - }, "netmap": { - "SelfNode": { - "ID": 4041918547170221, - "StableID": "ngCb76MbZY11CNTRL", - "Name": "exit-node.tail78f774.ts.net.", - "User": 4041918547170221, - "Key": "nodekey:90f4a7b9dc024f1ddec414a49de2aa7611a2dd86efc9d7bae30862ad7c954269", - "DiscoKey": "discokey:6f1a76215431d7100538970473d97b4fde0e0a19b91035d1cba40b59ad79b437", - "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:36712", "10.65.0.27:36712", "172.17.0.1:36712"], - "Hostinfo": { - "Hostname": "exit-node", - "RoutableIPs": ["0.0.0.0/0", "::/0"], - "RequestTags": ["tag:exit"], - "Services": [ - { "Proto": "peerapi4", "Port": 37000 }, - { "Proto": "peerapi6", "Port": 37000 }, - { "Proto": "peerapi-dns-proxy", "Port": 1 } - ] - }, - "Created": "2026-02-23T00:13:20.566112173Z", - "Tags": ["tag:exit"], - "MachineAuthorized": true, - "CapMap": { - "https://tailscale.com/cap/file-sharing": null, - "https://tailscale.com/cap/is-owner": null, - "https://tailscale.com/cap/ssh": null, - "https://tailscale.com/cap/tailnet-lock": null, - "probe-udp-lifetime": null, - "ssh-behavior-v1": null, - "ssh-env-vars": null, - "store-appc-routes": null, - "tailnet-display-name": ["kratail2tid@passkey"] - }, - "ComputedName": "exit-node", - "ComputedNameWithHost": "exit-node" - }, - "AllCaps": [ - "https://tailscale.com/cap/file-sharing", - "probe-udp-lifetime", - "https://tailscale.com/cap/ssh", - "ssh-env-vars", - "https://tailscale.com/cap/is-owner", - "ssh-behavior-v1", - "https://tailscale.com/cap/tailnet-lock", - "store-appc-routes", - "tailnet-display-name" - ], - "NodeKey": "nodekey:90f4a7b9dc024f1ddec414a49de2aa7611a2dd86efc9d7bae30862ad7c954269", - "MachineKey": "mkey:e3be47b2090e55400f3e64825cd3092841529cd7b5b775e9e4553f12308abc2a", "Peers": [], - "DNS": { - "Routes": { - "tail78f774.ts.net.": null, - "ts.net.": [{ "Addr": "199.247.155.53" }, { "Addr": "2620:111:8007::53" }] - }, - "Domains": ["tail78f774.ts.net"], - "Proxied": true, - "ExitNodeFilteredSet": [".ts.net", ".tailscale.net"] - }, - "PacketFilter": [], - "PacketFilterRules": null, - "SSHPolicy": { "rules": [] }, - "CollectServices": false, - "DERPMap": { - "Regions": { - "1": { - "RegionID": 1, - "RegionCode": "nyc", - "RegionName": "New York City", - "Latitude": 40.7128, - "Longitude": -74.006, - "Nodes": [ - { - "Name": "1h", - "RegionID": 1, - "HostName": "derp1h.tailscale.com", - "IPv4": "199.38.181.93", - "IPv6": "2607:f740:f::afd", - "CanPort80": true - }, - { - "Name": "1g", - "RegionID": 1, - "HostName": "derp1g.tailscale.com", - "IPv4": "209.177.145.120", - "IPv6": "2607:f740:f::3eb", - "CanPort80": true - }, - { - "Name": "1i", - "RegionID": 1, - "HostName": "derp1i.tailscale.com", - "IPv4": "199.38.181.103", - "IPv6": "2607:f740:f::e19", - "CanPort80": true - }, - { - "Name": "1f", - "RegionID": 1, - "HostName": "derp1f.tailscale.com", - "IPv4": "199.38.181.104", - "IPv6": "2607:f740:f::bc", - "CanPort80": true - } - ] - }, - "10": { - "RegionID": 10, - "RegionCode": "sea", - "RegionName": "Seattle", - "Latitude": 47.609722, - "Longitude": -122.333056, - "Nodes": [ - { - "Name": "10c", - "RegionID": 10, - "HostName": "derp10c.tailscale.com", - "IPv4": "192.73.240.121", - "IPv6": "2607:f740:14::40c", - "CanPort80": true - }, - { - "Name": "10d", - "RegionID": 10, - "HostName": "derp10d.tailscale.com", - "IPv4": "192.73.240.132", - "IPv6": "2607:f740:14::500", - "CanPort80": true - }, - { - "Name": "10b", - "RegionID": 10, - "HostName": "derp10b.tailscale.com", - "IPv4": "192.73.240.161", - "IPv6": "2607:f740:14::61c", - "CanPort80": true - } - ] - }, - "11": { - "RegionID": 11, - "RegionCode": "sao", - "RegionName": "São Paulo", - "Latitude": -23.55, - "Longitude": -46.633333, - "Nodes": [ - { - "Name": "11f", - "RegionID": 11, - "HostName": "derp11f.tailscale.com", - "IPv4": "172.237.61.197", - "IPv6": "2600:3c0d::2000:3bff:fe44:6166", - "CanPort80": true - }, - { - "Name": "11g", - "RegionID": 11, - "HostName": "derp11g.tailscale.com", - "IPv4": "172.237.61.190", - "IPv6": "2600:3c0d::2000:62ff:febe:2e67", - "CanPort80": true - }, - { - "Name": "11e", - "RegionID": 11, - "HostName": "derp11e.tailscale.com", - "IPv4": "172.237.61.194", - "IPv6": "2600:3c0d::2000:d2ff:fe43:1790", - "CanPort80": true - } - ] - }, - "12": { - "RegionID": 12, - "RegionCode": "ord", - "RegionName": "Chicago", - "Latitude": 41.881944, - "Longitude": -87.627778, - "Nodes": [ - { - "Name": "12e", - "RegionID": 12, - "HostName": "derp12e.tailscale.com", - "IPv4": "209.177.158.15", - "IPv6": "2607:f740:e::b17", - "CanPort80": true - }, - { - "Name": "12f", - "RegionID": 12, - "HostName": "derp12f.tailscale.com", - "IPv4": "199.38.182.118", - "IPv6": "2607:f740:e::4c8", - "CanPort80": true - }, - { - "Name": "12d", - "RegionID": 12, - "HostName": "derp12d.tailscale.com", - "IPv4": "209.177.158.246", - "IPv6": "2607:f740:e::811", - "CanPort80": true - } - ] - }, - "13": { - "RegionID": 13, - "RegionCode": "den", - "RegionName": "Denver", - "Latitude": 39.7392, - "Longitude": -104.9849, - "Nodes": [ - { - "Name": "13c", - "RegionID": 13, - "HostName": "derp13c.tailscale.com", - "IPv4": "192.73.242.28", - "IPv6": "2607:f740:16::5c", - "CanPort80": true - }, - { - "Name": "13d", - "RegionID": 13, - "HostName": "derp13d.tailscale.com", - "IPv4": "192.73.242.204", - "IPv6": "2607:f740:16::c23", - "CanPort80": true - }, - { - "Name": "13b", - "RegionID": 13, - "HostName": "derp13b.tailscale.com", - "IPv4": "192.73.242.187", - "IPv6": "2607:f740:16::640", - "CanPort80": true - } - ] - }, - "14": { - "RegionID": 14, - "RegionCode": "ams", - "RegionName": "Amsterdam", - "Latitude": 52.372778, - "Longitude": 4.893611, - "Nodes": [ - { - "Name": "14c", - "RegionID": 14, - "HostName": "derp14c.tailscale.com", - "IPv4": "176.58.93.147", - "IPv6": "2a00:dd80:3c::b09", - "CanPort80": true - }, - { - "Name": "14d", - "RegionID": 14, - "HostName": "derp14d.tailscale.com", - "IPv4": "176.58.93.154", - "IPv6": "2a00:dd80:3c::3d5", - "CanPort80": true - }, - { - "Name": "14b", - "RegionID": 14, - "HostName": "derp14b.tailscale.com", - "IPv4": "176.58.93.248", - "IPv6": "2a00:dd80:3c::807", - "CanPort80": true - } - ] - }, - "15": { - "RegionID": 15, - "RegionCode": "jnb", - "RegionName": "Johannesburg", - "Latitude": -26.204444, - "Longitude": 28.045556, - "Nodes": [ - { - "Name": "15c", - "RegionID": 15, - "HostName": "derp15c.tailscale.com", - "IPv4": "102.67.165.185", - "IPv6": "2c0f:edb0:0:10::b59", - "CanPort80": true - }, - { - "Name": "15d", - "RegionID": 15, - "HostName": "derp15d.tailscale.com", - "IPv4": "102.67.165.36", - "IPv6": "2c0f:edb0:0:10::599", - "CanPort80": true - }, - { - "Name": "15b", - "RegionID": 15, - "HostName": "derp15b.tailscale.com", - "IPv4": "102.67.165.90", - "IPv6": "2c0f:edb0:0:10::963", - "CanPort80": true - } - ] - }, - "16": { - "RegionID": 16, - "RegionCode": "mia", - "RegionName": "Miami", - "Latitude": 25.78, - "Longitude": -80.21, - "Nodes": [ - { - "Name": "16c", - "RegionID": 16, - "HostName": "derp16c.tailscale.com", - "IPv4": "192.73.243.229", - "IPv6": "2607:f740:17::4e4", - "CanPort80": true - }, - { - "Name": "16d", - "RegionID": 16, - "HostName": "derp16d.tailscale.com", - "IPv4": "192.73.243.141", - "IPv6": "2607:f740:17::475", - "CanPort80": true - }, - { - "Name": "16b", - "RegionID": 16, - "HostName": "derp16b.tailscale.com", - "IPv4": "192.73.243.135", - "IPv6": "2607:f740:17::476", - "CanPort80": true - } - ] - }, - "17": { - "RegionID": 17, - "RegionCode": "lax", - "RegionName": "Los Angeles", - "Latitude": 34.05, - "Longitude": -118.25, - "Nodes": [ - { - "Name": "17c", - "RegionID": 17, - "HostName": "derp17c.tailscale.com", - "IPv4": "208.111.40.12", - "IPv6": "2607:f740:c::10", - "CanPort80": true - }, - { - "Name": "17d", - "RegionID": 17, - "HostName": "derp17d.tailscale.com", - "IPv4": "208.111.40.216", - "IPv6": "2607:f740:c::e1b", - "CanPort80": true - }, - { - "Name": "17b", - "RegionID": 17, - "HostName": "derp17b.tailscale.com", - "IPv4": "192.73.244.245", - "IPv6": "2607:f740:c::646", - "CanPort80": true - } - ] - }, - "18": { - "RegionID": 18, - "RegionCode": "par", - "RegionName": "Paris", - "Latitude": 48.856667, - "Longitude": 2.352222, - "Nodes": [ - { - "Name": "18c", - "RegionID": 18, - "HostName": "derp18c.tailscale.com", - "IPv4": "176.58.90.207", - "IPv6": "2a00:dd80:3e::c19", - "CanPort80": true - }, - { - "Name": "18d", - "RegionID": 18, - "HostName": "derp18d.tailscale.com", - "IPv4": "176.58.90.104", - "IPv6": "2a00:dd80:3e::f2e", - "CanPort80": true - }, - { - "Name": "18b", - "RegionID": 18, - "HostName": "derp18b.tailscale.com", - "IPv4": "176.58.90.147", - "IPv6": "2a00:dd80:3e::363", - "CanPort80": true - } - ] - }, - "19": { - "RegionID": 19, - "RegionCode": "mad", - "RegionName": "Madrid", - "Latitude": 40.416944, - "Longitude": -3.703333, - "Nodes": [ - { - "Name": "19c", - "RegionID": 19, - "HostName": "derp19c.tailscale.com", - "IPv4": "45.159.97.61", - "IPv6": "2a00:dd80:14:10::20", - "CanPort80": true - }, - { - "Name": "19d", - "RegionID": 19, - "HostName": "derp19d.tailscale.com", - "IPv4": "45.159.97.233", - "IPv6": "2a00:dd80:14:10::34a", - "CanPort80": true - }, - { - "Name": "19b", - "RegionID": 19, - "HostName": "derp19b.tailscale.com", - "IPv4": "45.159.97.144", - "IPv6": "2a00:dd80:14:10::335", - "CanPort80": true - } - ] - }, - "2": { - "RegionID": 2, - "RegionCode": "sfo", - "RegionName": "San Francisco", - "Latitude": 37.7775, - "Longitude": -122.416389, - "Nodes": [ - { - "Name": "2e", - "RegionID": 2, - "HostName": "derp2e.tailscale.com", - "IPv4": "192.73.252.134", - "IPv6": "2607:f740:0:3f::44c", - "CanPort80": true - }, - { - "Name": "2f", - "RegionID": 2, - "HostName": "derp2f.tailscale.com", - "IPv4": "208.111.34.178", - "IPv6": "2607:f740:0:3f::f4", - "CanPort80": true - }, - { - "Name": "2d", - "RegionID": 2, - "HostName": "derp2d.tailscale.com", - "IPv4": "192.73.252.65", - "IPv6": "2607:f740:0:3f::287", - "CanPort80": true - } - ] - }, - "20": { - "RegionID": 20, - "RegionCode": "hkg", - "RegionName": "Hong Kong", - "Latitude": 22.3193, - "Longitude": 114.1694, - "Nodes": [ - { - "Name": "20c", - "RegionID": 20, - "HostName": "derp20c.tailscale.com", - "IPv4": "205.147.105.30", - "IPv6": "2403:2500:8000:1::5fb", - "CanPort80": true - }, - { - "Name": "20d", - "RegionID": 20, - "HostName": "derp20d.tailscale.com", - "IPv4": "205.147.105.78", - "IPv6": "2403:2500:8000:1::e9a", - "CanPort80": true - }, - { - "Name": "20b", - "RegionID": 20, - "HostName": "derp20b.tailscale.com", - "IPv4": "103.6.84.152", - "IPv6": "2403:2500:8000:1::ef6", - "CanPort80": true - } - ] - }, - "21": { - "RegionID": 21, - "RegionCode": "tor", - "RegionName": "Toronto", - "Latitude": 43.741667, - "Longitude": -79.373333, - "Nodes": [ - { - "Name": "21c", - "RegionID": 21, - "HostName": "derp21c.tailscale.com", - "IPv4": "162.248.221.215", - "IPv6": "2607:f740:50::f10", - "CanPort80": true - }, - { - "Name": "21d", - "RegionID": 21, - "HostName": "derp21d.tailscale.com", - "IPv4": "162.248.221.248", - "IPv6": "2607:f740:50::ca4", - "CanPort80": true - }, - { - "Name": "21b", - "RegionID": 21, - "HostName": "derp21b.tailscale.com", - "IPv4": "162.248.221.199", - "IPv6": "2607:f740:50::1d1", - "CanPort80": true - } - ] - }, - "22": { - "RegionID": 22, - "RegionCode": "waw", - "RegionName": "Warsaw", - "Latitude": 52.23, - "Longitude": 21.011111, - "Nodes": [ - { - "Name": "22c", - "RegionID": 22, - "HostName": "derp22c.tailscale.com", - "IPv4": "45.159.98.253", - "IPv6": "2a00:dd80:40:100::3f", - "CanPort80": true - }, - { - "Name": "22d", - "RegionID": 22, - "HostName": "derp22d.tailscale.com", - "IPv4": "45.159.98.145", - "IPv6": "2a00:dd80:40:100::211", - "CanPort80": true - }, - { - "Name": "22b", - "RegionID": 22, - "HostName": "derp22b.tailscale.com", - "IPv4": "45.159.98.196", - "IPv6": "2a00:dd80:40:100::316", - "CanPort80": true - } - ] - }, - "23": { - "RegionID": 23, - "RegionCode": "dbi", - "RegionName": "Dubai", - "Latitude": 25.263056, - "Longitude": 55.297222, - "Nodes": [ - { - "Name": "23c", - "RegionID": 23, - "HostName": "derp23c.tailscale.com", - "IPv4": "185.34.3.207", - "IPv6": "2a00:dd80:3f:100::a50", - "CanPort80": true - }, - { - "Name": "23d", - "RegionID": 23, - "HostName": "derp23d.tailscale.com", - "IPv4": "185.34.3.75", - "IPv6": "2a00:dd80:3f:100::97e", - "CanPort80": true - }, - { - "Name": "23b", - "RegionID": 23, - "HostName": "derp23b.tailscale.com", - "IPv4": "185.34.3.232", - "IPv6": "2a00:dd80:3f:100::76f", - "CanPort80": true - } - ] - }, - "24": { - "RegionID": 24, - "RegionCode": "hnl", - "RegionName": "Honolulu", - "Latitude": 21.306944, - "Longitude": -157.858333, - "Nodes": [ - { - "Name": "24c", - "RegionID": 24, - "HostName": "derp24c.tailscale.com", - "IPv4": "208.83.233.233", - "IPv6": "2001:19f0:c000:c591:5400:04ff:fe26:2c5f", - "CanPort80": true - }, - { - "Name": "24d", - "RegionID": 24, - "HostName": "derp24d.tailscale.com", - "IPv4": "208.72.155.133", - "IPv6": "2001:19f0:c000:c564:5400:04ff:fe26:2ba8", - "CanPort80": true - }, - { - "Name": "24b", - "RegionID": 24, - "HostName": "derp24b.tailscale.com", - "IPv4": "208.83.234.151", - "IPv6": "2001:19f0:c000:c586:5400:04ff:fe26:2ba6", - "CanPort80": true - } - ] - }, - "25": { - "RegionID": 25, - "RegionCode": "nai", - "RegionName": "Nairobi", - "Latitude": -1.286389, - "Longitude": 36.817222, - "Nodes": [ - { - "Name": "25c", - "RegionID": 25, - "HostName": "derp25c.tailscale.com", - "IPv4": "102.67.167.37", - "IPv6": "2c0f:edb0:2000:1::2c7", - "CanPort80": true - }, - { - "Name": "25d", - "RegionID": 25, - "HostName": "derp25d.tailscale.com", - "IPv4": "102.67.167.188", - "IPv6": "2c0f:edb0:2000:1::188", - "CanPort80": true - }, - { - "Name": "25b", - "RegionID": 25, - "HostName": "derp25b.tailscale.com", - "IPv4": "102.67.167.245", - "IPv6": "2c0f:edb0:2000:1::2e9", - "CanPort80": true - } - ] - }, - "26": { - "RegionID": 26, - "RegionCode": "nue", - "RegionName": "Nuremberg", - "Latitude": 49.453889, - "Longitude": 11.0775, - "Nodes": [ - { - "Name": "26c", - "RegionID": 26, - "HostName": "derp26c.tailscale.com", - "IPv4": "49.12.193.137", - "IPv6": "2a01:4f8:1c1c:5c70::1", - "CanPort80": true - }, - { - "Name": "26d", - "RegionID": 26, - "HostName": "derp26d.tailscale.com", - "IPv4": "49.13.204.141", - "IPv6": "2a01:4f8:1c0c:7d06::1", - "CanPort80": true - }, - { - "Name": "26b", - "RegionID": 26, - "HostName": "derp26b.tailscale.com", - "IPv4": "167.235.72.200", - "IPv6": "2a01:4f8:1c1c:47b6::1", - "CanPort80": true - } - ] - }, - "27": { - "RegionID": 27, - "RegionCode": "iad", - "RegionName": "Ashburn", - "Latitude": 39.03, - "Longitude": -77.471111, - "Nodes": [ - { - "Name": "27d", - "RegionID": 27, - "HostName": "derp27d.tailscale.com", - "IPv4": "178.156.152.106", - "IPv6": "2a01:4ff:f0:3c8e::1", - "CanPort80": true - }, - { - "Name": "27c", - "RegionID": 27, - "HostName": "derp27c.tailscale.com", - "IPv4": "178.156.152.91", - "IPv6": "2a01:4ff:f0:3913::1", - "CanPort80": true - }, - { - "Name": "27e", - "RegionID": 27, - "HostName": "derp27e.tailscale.com", - "IPv4": "178.156.134.232", - "IPv6": "2a01:4ff:f0:28d4::1", - "CanPort80": true - }, - { - "Name": "27b", - "RegionID": 27, - "HostName": "derp27b.tailscale.com", - "IPv4": "5.161.218.233", - "IPv6": "2a01:4ff:f0:3db9::1", - "CanPort80": true - } - ] - }, - "28": { - "RegionID": 28, - "RegionCode": "hel", - "RegionName": "Helsinki", - "Latitude": 60.170833, - "Longitude": 24.9375, - "Nodes": [ - { - "Name": "28c", - "RegionID": 28, - "HostName": "derp28c.tailscale.com", - "IPv4": "95.217.2.165", - "IPv6": "2a01:4f9:c012:cd74::1", - "CanPort80": true - }, - { - "Name": "28d", - "RegionID": 28, - "HostName": "derp28d.tailscale.com", - "IPv4": "157.180.28.32", - "IPv6": "2a01:4f9:c012:2e5b::1", - "CanPort80": true - }, - { - "Name": "28b", - "RegionID": 28, - "HostName": "derp28b.tailscale.com", - "IPv4": "65.109.143.62", - "IPv6": "2a01:4f9:c012:d55c::1", - "CanPort80": true - } - ] - }, - "3": { - "RegionID": 3, - "RegionCode": "sin", - "RegionName": "Singapore", - "Latitude": 1.3521, - "Longitude": 103.8198, - "Nodes": [ - { - "Name": "3g", - "RegionID": 3, - "HostName": "derp3g.tailscale.com", - "IPv4": "172.237.72.79", - "IPv6": "2600:3c15::2000:adff:fe08:6fab", - "CanPort80": true - }, - { - "Name": "3f", - "RegionID": 3, - "HostName": "derp3f.tailscale.com", - "IPv4": "172.237.72.8", - "IPv6": "2600:3c15::2000:53ff:fe48:a668", - "CanPort80": true - }, - { - "Name": "3h", - "RegionID": 3, - "HostName": "derp3h.tailscale.com", - "IPv4": "172.237.66.30", - "IPv6": "2600:3c15::2000:3dff:fe44:50aa", - "CanPort80": true - }, - { - "Name": "3e", - "RegionID": 3, - "HostName": "derp3e.tailscale.com", - "IPv4": "172.237.72.43", - "IPv6": "2600:3c15::2000:6cff:fee4:d799", - "CanPort80": true - } - ] - }, - "4": { - "RegionID": 4, - "RegionCode": "fra", - "RegionName": "Frankfurt", - "Latitude": 50.1109, - "Longitude": 8.6821, - "Nodes": [ - { - "Name": "4h", - "RegionID": 4, - "HostName": "derp4h.tailscale.com", - "IPv4": "185.40.234.77", - "IPv6": "2a00:dd80:20::bcf", - "CanPort80": true - }, - { - "Name": "4g", - "RegionID": 4, - "HostName": "derp4g.tailscale.com", - "IPv4": "185.40.234.113", - "IPv6": "2a00:dd80:20::8f", - "CanPort80": true - }, - { - "Name": "4i", - "RegionID": 4, - "HostName": "derp4i.tailscale.com", - "IPv4": "185.40.234.53", - "IPv6": "2a00:dd80:20::8a6", - "CanPort80": true - }, - { - "Name": "4f", - "RegionID": 4, - "HostName": "derp4f.tailscale.com", - "IPv4": "185.40.234.219", - "IPv6": "2a00:dd80:20::a25", - "CanPort80": true - } - ] - }, - "5": { - "RegionID": 5, - "RegionCode": "syd", - "RegionName": "Sydney", - "Latitude": -33.867778, - "Longitude": 151.21, - "Nodes": [ - { - "Name": "5f", - "RegionID": 5, - "HostName": "derp5f.tailscale.com", - "IPv4": "172.105.166.103", - "IPv6": "2400:8907::2000:ccff:fe1f:80da", - "CanPort80": true - }, - { - "Name": "5g", - "RegionID": 5, - "HostName": "derp5g.tailscale.com", - "IPv4": "172.105.169.57", - "IPv6": "2400:8907::2000:2fff:fea7:57f4", - "CanPort80": true - }, - { - "Name": "5e", - "RegionID": 5, - "HostName": "derp5e.tailscale.com", - "IPv4": "172.105.179.230", - "IPv6": "2400:8907::2000:ceff:fe8d:4f4e", - "CanPort80": true - } - ] - }, - "6": { - "RegionID": 6, - "RegionCode": "blr", - "RegionName": "Bengaluru", - "Latitude": 12.9716, - "Longitude": 77.5946, - "Nodes": [ - { - "Name": "6a", - "RegionID": 6, - "HostName": "derp6.tailscale.com", - "IPv4": "68.183.90.120", - "IPv6": "2400:6180:100:d0::982:d001", - "CanPort80": true - } - ] - }, - "7": { - "RegionID": 7, - "RegionCode": "tok", - "RegionName": "Tokyo", - "Latitude": 35.6764, - "Longitude": 139.65, - "Nodes": [ - { - "Name": "7g", - "RegionID": 7, - "HostName": "derp7g.tailscale.com", - "IPv4": "172.238.6.179", - "IPv6": "2600:3c18::2000:3fff:fe80:3ebd", - "CanPort80": true - }, - { - "Name": "7f", - "RegionID": 7, - "HostName": "derp7f.tailscale.com", - "IPv4": "172.238.6.34", - "IPv6": "2600:3c18::2000:acff:fe8e:3ed5", - "CanPort80": true - }, - { - "Name": "7h", - "RegionID": 7, - "HostName": "derp7h.tailscale.com", - "IPv4": "172.237.28.183", - "IPv6": "2600:3c18::2000:b1ff:fea9:4560", - "CanPort80": true - }, - { - "Name": "7e", - "RegionID": 7, - "HostName": "derp7e.tailscale.com", - "IPv4": "172.238.6.180", - "IPv6": "2600:3c18::2000:60ff:fe0f:6e83", - "STUNOnly": true, - "CanPort80": true - } - ] - }, - "8": { - "RegionID": 8, - "RegionCode": "lhr", - "RegionName": "London", - "Latitude": 51.5072, - "Longitude": 0.1276, - "Nodes": [ - { - "Name": "8f", - "RegionID": 8, - "HostName": "derp8f.tailscale.com", - "IPv4": "176.58.88.183", - "IPv6": "2a00:dd80:3a::dfa", - "CanPort80": true - }, - { - "Name": "8g", - "RegionID": 8, - "HostName": "derp8g.tailscale.com", - "IPv4": "176.58.92.254", - "IPv6": "2a00:dd80:3a::ed", - "CanPort80": true - }, - { - "Name": "8e", - "RegionID": 8, - "HostName": "derp8e.tailscale.com", - "IPv4": "176.58.92.144", - "IPv6": "2a00:dd80:3a::b33", - "CanPort80": true - } - ] - }, - "9": { - "RegionID": 9, - "RegionCode": "dfw", - "RegionName": "Dallas", - "Latitude": 32.779167, - "Longitude": -96.808889, - "Nodes": [ - { - "Name": "9e", - "RegionID": 9, - "HostName": "derp9e.tailscale.com", - "IPv4": "192.73.248.83", - "IPv6": "2607:f740:100::359", - "CanPort80": true - }, - { - "Name": "9f", - "RegionID": 9, - "HostName": "derp9f.tailscale.com", - "IPv4": "209.177.156.197", - "IPv6": "2607:f740:100::cad", - "CanPort80": true - }, - { - "Name": "9d", - "RegionID": 9, - "HostName": "derp9d.tailscale.com", - "IPv4": "209.177.156.94", - "IPv6": "2607:f740:100::c05", - "CanPort80": true - } - ] - } - } - }, - "DisplayMessages": null, - "TKAEnabled": false, - "TKAHead": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", - "Domain": "kratail2tid@passkey", - "DomainAuditLogID": "", - "UserProfiles": { - "4041918547170221": { - "ID": 4041918547170221, - "LoginName": "exit-node.tail78f774.ts.net", - "DisplayName": "exit-node" - } - } + "PacketFilterRules": null } }, "group-a-client": { - "commands": { - "packet_filter_rules": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/group-a-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/group-a-client/tailscaled.sock debug localapi POST debug-packet-filter-matches" - }, "packet_filter_rules": null, - "packet_filter_matches": [], - "whois": { - "100.124.195.93": { - "peer_name": "exit-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/group-a-client/tailscaled.sock whois --json 100.124.195.93", - "response": null - }, - "100.116.18.24": { - "peer_name": "exit-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/group-a-client/tailscaled.sock whois --json 100.116.18.24", - "response": null - }, - "100.85.66.106": { - "peer_name": "exit-node", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/group-a-client/tailscaled.sock whois --json 100.85.66.106", - "response": null - }, - "100.77.135.18": { - "peer_name": "group-b-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/group-a-client/tailscaled.sock whois --json 100.77.135.18", - "response": null - }, - "100.105.127.107": { - "peer_name": "multi-exit-router", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/group-a-client/tailscaled.sock whois --json 100.105.127.107", - "response": null - }, - "100.109.43.124": { - "peer_name": "router-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/group-a-client/tailscaled.sock whois --json 100.109.43.124", - "response": null - }, - "100.65.172.123": { - "peer_name": "router-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/group-a-client/tailscaled.sock whois --json 100.65.172.123", - "response": null - }, - "100.92.142.61": { - "peer_name": "subnet-router", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/group-a-client/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/group-a-client/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/group-a-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/group-a-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/group-a-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/group-a-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/group-a-client/tailscaled.sock whois --json 100.90.199.68", - "response": null - } - }, "netmap": { - "SelfNode": { - "ID": 6999435610919250, - "StableID": "nyckVfJ4fw11CNTRL", - "Name": "group-a-client.tail78f774.ts.net.", - "User": 6999435610919250, - "Key": "nodekey:802726716bd4942fceb5e444218c930040fadb082698b57ea3eb59a6a26ba20d", - "DiscoKey": "discokey:bc93c2d3b81606e44eb1c96d721e7cd73c9497aa7d3efbe2f5e0d1e2e95b190f", - "Addresses": ["100.107.162.14/32", "fd7a:115c:a1e0::a237:a20e/128"], - "AllowedIPs": ["100.107.162.14/32", "fd7a:115c:a1e0::a237:a20e/128"], - "Endpoints": ["77.164.248.136:51980", "10.65.0.27:51980", "172.17.0.1:51980"], - "Hostinfo": { - "Hostname": "group-a-client", - "RequestTags": ["tag:group-a"], - "Services": [ - { "Proto": "peerapi4", "Port": 36543 }, - { "Proto": "peerapi6", "Port": 36543 }, - { "Proto": "peerapi-dns-proxy", "Port": 1 } - ] - }, - "Created": "2026-03-28T10:38:04.339428828Z", - "Tags": ["tag:group-a"], - "MachineAuthorized": true, - "CapMap": { - "https://tailscale.com/cap/file-sharing": null, - "https://tailscale.com/cap/is-owner": null, - "https://tailscale.com/cap/ssh": null, - "https://tailscale.com/cap/tailnet-lock": null, - "probe-udp-lifetime": null, - "ssh-behavior-v1": null, - "ssh-env-vars": null, - "store-appc-routes": null, - "tailnet-display-name": ["kratail2tid@passkey"] - }, - "ComputedName": "group-a-client", - "ComputedNameWithHost": "group-a-client" - }, - "AllCaps": [ - "https://tailscale.com/cap/ssh", - "ssh-behavior-v1", - "tailnet-display-name", - "https://tailscale.com/cap/is-owner", - "ssh-env-vars", - "https://tailscale.com/cap/tailnet-lock", - "https://tailscale.com/cap/file-sharing", - "probe-udp-lifetime", - "store-appc-routes" - ], - "NodeKey": "nodekey:802726716bd4942fceb5e444218c930040fadb082698b57ea3eb59a6a26ba20d", - "MachineKey": "mkey:fd2d0c2953440569b6c045d6bb1826bf138bf65b4ed4433532e4d91e09fd6b6b", "Peers": [], - "DNS": { - "Routes": { - "tail78f774.ts.net.": null, - "ts.net.": [{ "Addr": "199.247.155.53" }, { "Addr": "2620:111:8007::53" }] - }, - "Domains": ["tail78f774.ts.net"], - "Proxied": true, - "ExitNodeFilteredSet": [".ts.net", ".tailscale.net"] - }, - "PacketFilter": [], - "PacketFilterRules": null, - "SSHPolicy": { "rules": [] }, - "CollectServices": false, - "DERPMap": { - "Regions": { - "1": { - "RegionID": 1, - "RegionCode": "nyc", - "RegionName": "New York City", - "Latitude": 40.7128, - "Longitude": -74.006, - "Nodes": [ - { - "Name": "1h", - "RegionID": 1, - "HostName": "derp1h.tailscale.com", - "IPv4": "199.38.181.93", - "IPv6": "2607:f740:f::afd", - "CanPort80": true - }, - { - "Name": "1g", - "RegionID": 1, - "HostName": "derp1g.tailscale.com", - "IPv4": "209.177.145.120", - "IPv6": "2607:f740:f::3eb", - "CanPort80": true - }, - { - "Name": "1i", - "RegionID": 1, - "HostName": "derp1i.tailscale.com", - "IPv4": "199.38.181.103", - "IPv6": "2607:f740:f::e19", - "CanPort80": true - }, - { - "Name": "1f", - "RegionID": 1, - "HostName": "derp1f.tailscale.com", - "IPv4": "199.38.181.104", - "IPv6": "2607:f740:f::bc", - "CanPort80": true - } - ] - }, - "10": { - "RegionID": 10, - "RegionCode": "sea", - "RegionName": "Seattle", - "Latitude": 47.609722, - "Longitude": -122.333056, - "Nodes": [ - { - "Name": "10c", - "RegionID": 10, - "HostName": "derp10c.tailscale.com", - "IPv4": "192.73.240.121", - "IPv6": "2607:f740:14::40c", - "CanPort80": true - }, - { - "Name": "10d", - "RegionID": 10, - "HostName": "derp10d.tailscale.com", - "IPv4": "192.73.240.132", - "IPv6": "2607:f740:14::500", - "CanPort80": true - }, - { - "Name": "10b", - "RegionID": 10, - "HostName": "derp10b.tailscale.com", - "IPv4": "192.73.240.161", - "IPv6": "2607:f740:14::61c", - "CanPort80": true - } - ] - }, - "11": { - "RegionID": 11, - "RegionCode": "sao", - "RegionName": "São Paulo", - "Latitude": -23.55, - "Longitude": -46.633333, - "Nodes": [ - { - "Name": "11f", - "RegionID": 11, - "HostName": "derp11f.tailscale.com", - "IPv4": "172.237.61.197", - "IPv6": "2600:3c0d::2000:3bff:fe44:6166", - "CanPort80": true - }, - { - "Name": "11g", - "RegionID": 11, - "HostName": "derp11g.tailscale.com", - "IPv4": "172.237.61.190", - "IPv6": "2600:3c0d::2000:62ff:febe:2e67", - "CanPort80": true - }, - { - "Name": "11e", - "RegionID": 11, - "HostName": "derp11e.tailscale.com", - "IPv4": "172.237.61.194", - "IPv6": "2600:3c0d::2000:d2ff:fe43:1790", - "CanPort80": true - } - ] - }, - "12": { - "RegionID": 12, - "RegionCode": "ord", - "RegionName": "Chicago", - "Latitude": 41.881944, - "Longitude": -87.627778, - "Nodes": [ - { - "Name": "12e", - "RegionID": 12, - "HostName": "derp12e.tailscale.com", - "IPv4": "209.177.158.15", - "IPv6": "2607:f740:e::b17", - "CanPort80": true - }, - { - "Name": "12f", - "RegionID": 12, - "HostName": "derp12f.tailscale.com", - "IPv4": "199.38.182.118", - "IPv6": "2607:f740:e::4c8", - "CanPort80": true - }, - { - "Name": "12d", - "RegionID": 12, - "HostName": "derp12d.tailscale.com", - "IPv4": "209.177.158.246", - "IPv6": "2607:f740:e::811", - "CanPort80": true - } - ] - }, - "13": { - "RegionID": 13, - "RegionCode": "den", - "RegionName": "Denver", - "Latitude": 39.7392, - "Longitude": -104.9849, - "Nodes": [ - { - "Name": "13c", - "RegionID": 13, - "HostName": "derp13c.tailscale.com", - "IPv4": "192.73.242.28", - "IPv6": "2607:f740:16::5c", - "CanPort80": true - }, - { - "Name": "13d", - "RegionID": 13, - "HostName": "derp13d.tailscale.com", - "IPv4": "192.73.242.204", - "IPv6": "2607:f740:16::c23", - "CanPort80": true - }, - { - "Name": "13b", - "RegionID": 13, - "HostName": "derp13b.tailscale.com", - "IPv4": "192.73.242.187", - "IPv6": "2607:f740:16::640", - "CanPort80": true - } - ] - }, - "14": { - "RegionID": 14, - "RegionCode": "ams", - "RegionName": "Amsterdam", - "Latitude": 52.372778, - "Longitude": 4.893611, - "Nodes": [ - { - "Name": "14c", - "RegionID": 14, - "HostName": "derp14c.tailscale.com", - "IPv4": "176.58.93.147", - "IPv6": "2a00:dd80:3c::b09", - "CanPort80": true - }, - { - "Name": "14d", - "RegionID": 14, - "HostName": "derp14d.tailscale.com", - "IPv4": "176.58.93.154", - "IPv6": "2a00:dd80:3c::3d5", - "CanPort80": true - }, - { - "Name": "14b", - "RegionID": 14, - "HostName": "derp14b.tailscale.com", - "IPv4": "176.58.93.248", - "IPv6": "2a00:dd80:3c::807", - "CanPort80": true - } - ] - }, - "15": { - "RegionID": 15, - "RegionCode": "jnb", - "RegionName": "Johannesburg", - "Latitude": -26.204444, - "Longitude": 28.045556, - "Nodes": [ - { - "Name": "15c", - "RegionID": 15, - "HostName": "derp15c.tailscale.com", - "IPv4": "102.67.165.185", - "IPv6": "2c0f:edb0:0:10::b59", - "CanPort80": true - }, - { - "Name": "15d", - "RegionID": 15, - "HostName": "derp15d.tailscale.com", - "IPv4": "102.67.165.36", - "IPv6": "2c0f:edb0:0:10::599", - "CanPort80": true - }, - { - "Name": "15b", - "RegionID": 15, - "HostName": "derp15b.tailscale.com", - "IPv4": "102.67.165.90", - "IPv6": "2c0f:edb0:0:10::963", - "CanPort80": true - } - ] - }, - "16": { - "RegionID": 16, - "RegionCode": "mia", - "RegionName": "Miami", - "Latitude": 25.78, - "Longitude": -80.21, - "Nodes": [ - { - "Name": "16c", - "RegionID": 16, - "HostName": "derp16c.tailscale.com", - "IPv4": "192.73.243.229", - "IPv6": "2607:f740:17::4e4", - "CanPort80": true - }, - { - "Name": "16d", - "RegionID": 16, - "HostName": "derp16d.tailscale.com", - "IPv4": "192.73.243.141", - "IPv6": "2607:f740:17::475", - "CanPort80": true - }, - { - "Name": "16b", - "RegionID": 16, - "HostName": "derp16b.tailscale.com", - "IPv4": "192.73.243.135", - "IPv6": "2607:f740:17::476", - "CanPort80": true - } - ] - }, - "17": { - "RegionID": 17, - "RegionCode": "lax", - "RegionName": "Los Angeles", - "Latitude": 34.05, - "Longitude": -118.25, - "Nodes": [ - { - "Name": "17c", - "RegionID": 17, - "HostName": "derp17c.tailscale.com", - "IPv4": "208.111.40.12", - "IPv6": "2607:f740:c::10", - "CanPort80": true - }, - { - "Name": "17d", - "RegionID": 17, - "HostName": "derp17d.tailscale.com", - "IPv4": "208.111.40.216", - "IPv6": "2607:f740:c::e1b", - "CanPort80": true - }, - { - "Name": "17b", - "RegionID": 17, - "HostName": "derp17b.tailscale.com", - "IPv4": "192.73.244.245", - "IPv6": "2607:f740:c::646", - "CanPort80": true - } - ] - }, - "18": { - "RegionID": 18, - "RegionCode": "par", - "RegionName": "Paris", - "Latitude": 48.856667, - "Longitude": 2.352222, - "Nodes": [ - { - "Name": "18c", - "RegionID": 18, - "HostName": "derp18c.tailscale.com", - "IPv4": "176.58.90.207", - "IPv6": "2a00:dd80:3e::c19", - "CanPort80": true - }, - { - "Name": "18d", - "RegionID": 18, - "HostName": "derp18d.tailscale.com", - "IPv4": "176.58.90.104", - "IPv6": "2a00:dd80:3e::f2e", - "CanPort80": true - }, - { - "Name": "18b", - "RegionID": 18, - "HostName": "derp18b.tailscale.com", - "IPv4": "176.58.90.147", - "IPv6": "2a00:dd80:3e::363", - "CanPort80": true - } - ] - }, - "19": { - "RegionID": 19, - "RegionCode": "mad", - "RegionName": "Madrid", - "Latitude": 40.416944, - "Longitude": -3.703333, - "Nodes": [ - { - "Name": "19c", - "RegionID": 19, - "HostName": "derp19c.tailscale.com", - "IPv4": "45.159.97.61", - "IPv6": "2a00:dd80:14:10::20", - "CanPort80": true - }, - { - "Name": "19d", - "RegionID": 19, - "HostName": "derp19d.tailscale.com", - "IPv4": "45.159.97.233", - "IPv6": "2a00:dd80:14:10::34a", - "CanPort80": true - }, - { - "Name": "19b", - "RegionID": 19, - "HostName": "derp19b.tailscale.com", - "IPv4": "45.159.97.144", - "IPv6": "2a00:dd80:14:10::335", - "CanPort80": true - } - ] - }, - "2": { - "RegionID": 2, - "RegionCode": "sfo", - "RegionName": "San Francisco", - "Latitude": 37.7775, - "Longitude": -122.416389, - "Nodes": [ - { - "Name": "2e", - "RegionID": 2, - "HostName": "derp2e.tailscale.com", - "IPv4": "192.73.252.134", - "IPv6": "2607:f740:0:3f::44c", - "CanPort80": true - }, - { - "Name": "2f", - "RegionID": 2, - "HostName": "derp2f.tailscale.com", - "IPv4": "208.111.34.178", - "IPv6": "2607:f740:0:3f::f4", - "CanPort80": true - }, - { - "Name": "2d", - "RegionID": 2, - "HostName": "derp2d.tailscale.com", - "IPv4": "192.73.252.65", - "IPv6": "2607:f740:0:3f::287", - "CanPort80": true - } - ] - }, - "20": { - "RegionID": 20, - "RegionCode": "hkg", - "RegionName": "Hong Kong", - "Latitude": 22.3193, - "Longitude": 114.1694, - "Nodes": [ - { - "Name": "20c", - "RegionID": 20, - "HostName": "derp20c.tailscale.com", - "IPv4": "205.147.105.30", - "IPv6": "2403:2500:8000:1::5fb", - "CanPort80": true - }, - { - "Name": "20d", - "RegionID": 20, - "HostName": "derp20d.tailscale.com", - "IPv4": "205.147.105.78", - "IPv6": "2403:2500:8000:1::e9a", - "CanPort80": true - }, - { - "Name": "20b", - "RegionID": 20, - "HostName": "derp20b.tailscale.com", - "IPv4": "103.6.84.152", - "IPv6": "2403:2500:8000:1::ef6", - "CanPort80": true - } - ] - }, - "21": { - "RegionID": 21, - "RegionCode": "tor", - "RegionName": "Toronto", - "Latitude": 43.741667, - "Longitude": -79.373333, - "Nodes": [ - { - "Name": "21c", - "RegionID": 21, - "HostName": "derp21c.tailscale.com", - "IPv4": "162.248.221.215", - "IPv6": "2607:f740:50::f10", - "CanPort80": true - }, - { - "Name": "21d", - "RegionID": 21, - "HostName": "derp21d.tailscale.com", - "IPv4": "162.248.221.248", - "IPv6": "2607:f740:50::ca4", - "CanPort80": true - }, - { - "Name": "21b", - "RegionID": 21, - "HostName": "derp21b.tailscale.com", - "IPv4": "162.248.221.199", - "IPv6": "2607:f740:50::1d1", - "CanPort80": true - } - ] - }, - "22": { - "RegionID": 22, - "RegionCode": "waw", - "RegionName": "Warsaw", - "Latitude": 52.23, - "Longitude": 21.011111, - "Nodes": [ - { - "Name": "22c", - "RegionID": 22, - "HostName": "derp22c.tailscale.com", - "IPv4": "45.159.98.253", - "IPv6": "2a00:dd80:40:100::3f", - "CanPort80": true - }, - { - "Name": "22d", - "RegionID": 22, - "HostName": "derp22d.tailscale.com", - "IPv4": "45.159.98.145", - "IPv6": "2a00:dd80:40:100::211", - "CanPort80": true - }, - { - "Name": "22b", - "RegionID": 22, - "HostName": "derp22b.tailscale.com", - "IPv4": "45.159.98.196", - "IPv6": "2a00:dd80:40:100::316", - "CanPort80": true - } - ] - }, - "23": { - "RegionID": 23, - "RegionCode": "dbi", - "RegionName": "Dubai", - "Latitude": 25.263056, - "Longitude": 55.297222, - "Nodes": [ - { - "Name": "23c", - "RegionID": 23, - "HostName": "derp23c.tailscale.com", - "IPv4": "185.34.3.207", - "IPv6": "2a00:dd80:3f:100::a50", - "CanPort80": true - }, - { - "Name": "23d", - "RegionID": 23, - "HostName": "derp23d.tailscale.com", - "IPv4": "185.34.3.75", - "IPv6": "2a00:dd80:3f:100::97e", - "CanPort80": true - }, - { - "Name": "23b", - "RegionID": 23, - "HostName": "derp23b.tailscale.com", - "IPv4": "185.34.3.232", - "IPv6": "2a00:dd80:3f:100::76f", - "CanPort80": true - } - ] - }, - "24": { - "RegionID": 24, - "RegionCode": "hnl", - "RegionName": "Honolulu", - "Latitude": 21.306944, - "Longitude": -157.858333, - "Nodes": [ - { - "Name": "24c", - "RegionID": 24, - "HostName": "derp24c.tailscale.com", - "IPv4": "208.83.233.233", - "IPv6": "2001:19f0:c000:c591:5400:04ff:fe26:2c5f", - "CanPort80": true - }, - { - "Name": "24d", - "RegionID": 24, - "HostName": "derp24d.tailscale.com", - "IPv4": "208.72.155.133", - "IPv6": "2001:19f0:c000:c564:5400:04ff:fe26:2ba8", - "CanPort80": true - }, - { - "Name": "24b", - "RegionID": 24, - "HostName": "derp24b.tailscale.com", - "IPv4": "208.83.234.151", - "IPv6": "2001:19f0:c000:c586:5400:04ff:fe26:2ba6", - "CanPort80": true - } - ] - }, - "25": { - "RegionID": 25, - "RegionCode": "nai", - "RegionName": "Nairobi", - "Latitude": -1.286389, - "Longitude": 36.817222, - "Nodes": [ - { - "Name": "25c", - "RegionID": 25, - "HostName": "derp25c.tailscale.com", - "IPv4": "102.67.167.37", - "IPv6": "2c0f:edb0:2000:1::2c7", - "CanPort80": true - }, - { - "Name": "25d", - "RegionID": 25, - "HostName": "derp25d.tailscale.com", - "IPv4": "102.67.167.188", - "IPv6": "2c0f:edb0:2000:1::188", - "CanPort80": true - }, - { - "Name": "25b", - "RegionID": 25, - "HostName": "derp25b.tailscale.com", - "IPv4": "102.67.167.245", - "IPv6": "2c0f:edb0:2000:1::2e9", - "CanPort80": true - } - ] - }, - "26": { - "RegionID": 26, - "RegionCode": "nue", - "RegionName": "Nuremberg", - "Latitude": 49.453889, - "Longitude": 11.0775, - "Nodes": [ - { - "Name": "26c", - "RegionID": 26, - "HostName": "derp26c.tailscale.com", - "IPv4": "49.12.193.137", - "IPv6": "2a01:4f8:1c1c:5c70::1", - "CanPort80": true - }, - { - "Name": "26d", - "RegionID": 26, - "HostName": "derp26d.tailscale.com", - "IPv4": "49.13.204.141", - "IPv6": "2a01:4f8:1c0c:7d06::1", - "CanPort80": true - }, - { - "Name": "26b", - "RegionID": 26, - "HostName": "derp26b.tailscale.com", - "IPv4": "167.235.72.200", - "IPv6": "2a01:4f8:1c1c:47b6::1", - "CanPort80": true - } - ] - }, - "27": { - "RegionID": 27, - "RegionCode": "iad", - "RegionName": "Ashburn", - "Latitude": 39.03, - "Longitude": -77.471111, - "Nodes": [ - { - "Name": "27d", - "RegionID": 27, - "HostName": "derp27d.tailscale.com", - "IPv4": "178.156.152.106", - "IPv6": "2a01:4ff:f0:3c8e::1", - "CanPort80": true - }, - { - "Name": "27c", - "RegionID": 27, - "HostName": "derp27c.tailscale.com", - "IPv4": "178.156.152.91", - "IPv6": "2a01:4ff:f0:3913::1", - "CanPort80": true - }, - { - "Name": "27e", - "RegionID": 27, - "HostName": "derp27e.tailscale.com", - "IPv4": "178.156.134.232", - "IPv6": "2a01:4ff:f0:28d4::1", - "CanPort80": true - }, - { - "Name": "27b", - "RegionID": 27, - "HostName": "derp27b.tailscale.com", - "IPv4": "5.161.218.233", - "IPv6": "2a01:4ff:f0:3db9::1", - "CanPort80": true - } - ] - }, - "28": { - "RegionID": 28, - "RegionCode": "hel", - "RegionName": "Helsinki", - "Latitude": 60.170833, - "Longitude": 24.9375, - "Nodes": [ - { - "Name": "28c", - "RegionID": 28, - "HostName": "derp28c.tailscale.com", - "IPv4": "95.217.2.165", - "IPv6": "2a01:4f9:c012:cd74::1", - "CanPort80": true - }, - { - "Name": "28d", - "RegionID": 28, - "HostName": "derp28d.tailscale.com", - "IPv4": "157.180.28.32", - "IPv6": "2a01:4f9:c012:2e5b::1", - "CanPort80": true - }, - { - "Name": "28b", - "RegionID": 28, - "HostName": "derp28b.tailscale.com", - "IPv4": "65.109.143.62", - "IPv6": "2a01:4f9:c012:d55c::1", - "CanPort80": true - } - ] - }, - "3": { - "RegionID": 3, - "RegionCode": "sin", - "RegionName": "Singapore", - "Latitude": 1.3521, - "Longitude": 103.8198, - "Nodes": [ - { - "Name": "3g", - "RegionID": 3, - "HostName": "derp3g.tailscale.com", - "IPv4": "172.237.72.79", - "IPv6": "2600:3c15::2000:adff:fe08:6fab", - "CanPort80": true - }, - { - "Name": "3f", - "RegionID": 3, - "HostName": "derp3f.tailscale.com", - "IPv4": "172.237.72.8", - "IPv6": "2600:3c15::2000:53ff:fe48:a668", - "CanPort80": true - }, - { - "Name": "3h", - "RegionID": 3, - "HostName": "derp3h.tailscale.com", - "IPv4": "172.237.66.30", - "IPv6": "2600:3c15::2000:3dff:fe44:50aa", - "CanPort80": true - }, - { - "Name": "3e", - "RegionID": 3, - "HostName": "derp3e.tailscale.com", - "IPv4": "172.237.72.43", - "IPv6": "2600:3c15::2000:6cff:fee4:d799", - "CanPort80": true - } - ] - }, - "4": { - "RegionID": 4, - "RegionCode": "fra", - "RegionName": "Frankfurt", - "Latitude": 50.1109, - "Longitude": 8.6821, - "Nodes": [ - { - "Name": "4h", - "RegionID": 4, - "HostName": "derp4h.tailscale.com", - "IPv4": "185.40.234.77", - "IPv6": "2a00:dd80:20::bcf", - "CanPort80": true - }, - { - "Name": "4g", - "RegionID": 4, - "HostName": "derp4g.tailscale.com", - "IPv4": "185.40.234.113", - "IPv6": "2a00:dd80:20::8f", - "CanPort80": true - }, - { - "Name": "4i", - "RegionID": 4, - "HostName": "derp4i.tailscale.com", - "IPv4": "185.40.234.53", - "IPv6": "2a00:dd80:20::8a6", - "CanPort80": true - }, - { - "Name": "4f", - "RegionID": 4, - "HostName": "derp4f.tailscale.com", - "IPv4": "185.40.234.219", - "IPv6": "2a00:dd80:20::a25", - "CanPort80": true - } - ] - }, - "5": { - "RegionID": 5, - "RegionCode": "syd", - "RegionName": "Sydney", - "Latitude": -33.867778, - "Longitude": 151.21, - "Nodes": [ - { - "Name": "5f", - "RegionID": 5, - "HostName": "derp5f.tailscale.com", - "IPv4": "172.105.166.103", - "IPv6": "2400:8907::2000:ccff:fe1f:80da", - "CanPort80": true - }, - { - "Name": "5g", - "RegionID": 5, - "HostName": "derp5g.tailscale.com", - "IPv4": "172.105.169.57", - "IPv6": "2400:8907::2000:2fff:fea7:57f4", - "CanPort80": true - }, - { - "Name": "5e", - "RegionID": 5, - "HostName": "derp5e.tailscale.com", - "IPv4": "172.105.179.230", - "IPv6": "2400:8907::2000:ceff:fe8d:4f4e", - "CanPort80": true - } - ] - }, - "6": { - "RegionID": 6, - "RegionCode": "blr", - "RegionName": "Bengaluru", - "Latitude": 12.9716, - "Longitude": 77.5946, - "Nodes": [ - { - "Name": "6a", - "RegionID": 6, - "HostName": "derp6.tailscale.com", - "IPv4": "68.183.90.120", - "IPv6": "2400:6180:100:d0::982:d001", - "CanPort80": true - } - ] - }, - "7": { - "RegionID": 7, - "RegionCode": "tok", - "RegionName": "Tokyo", - "Latitude": 35.6764, - "Longitude": 139.65, - "Nodes": [ - { - "Name": "7g", - "RegionID": 7, - "HostName": "derp7g.tailscale.com", - "IPv4": "172.238.6.179", - "IPv6": "2600:3c18::2000:3fff:fe80:3ebd", - "CanPort80": true - }, - { - "Name": "7f", - "RegionID": 7, - "HostName": "derp7f.tailscale.com", - "IPv4": "172.238.6.34", - "IPv6": "2600:3c18::2000:acff:fe8e:3ed5", - "CanPort80": true - }, - { - "Name": "7h", - "RegionID": 7, - "HostName": "derp7h.tailscale.com", - "IPv4": "172.237.28.183", - "IPv6": "2600:3c18::2000:b1ff:fea9:4560", - "CanPort80": true - }, - { - "Name": "7e", - "RegionID": 7, - "HostName": "derp7e.tailscale.com", - "IPv4": "172.238.6.180", - "IPv6": "2600:3c18::2000:60ff:fe0f:6e83", - "STUNOnly": true, - "CanPort80": true - } - ] - }, - "8": { - "RegionID": 8, - "RegionCode": "lhr", - "RegionName": "London", - "Latitude": 51.5072, - "Longitude": 0.1276, - "Nodes": [ - { - "Name": "8f", - "RegionID": 8, - "HostName": "derp8f.tailscale.com", - "IPv4": "176.58.88.183", - "IPv6": "2a00:dd80:3a::dfa", - "CanPort80": true - }, - { - "Name": "8g", - "RegionID": 8, - "HostName": "derp8g.tailscale.com", - "IPv4": "176.58.92.254", - "IPv6": "2a00:dd80:3a::ed", - "CanPort80": true - }, - { - "Name": "8e", - "RegionID": 8, - "HostName": "derp8e.tailscale.com", - "IPv4": "176.58.92.144", - "IPv6": "2a00:dd80:3a::b33", - "CanPort80": true - } - ] - }, - "9": { - "RegionID": 9, - "RegionCode": "dfw", - "RegionName": "Dallas", - "Latitude": 32.779167, - "Longitude": -96.808889, - "Nodes": [ - { - "Name": "9e", - "RegionID": 9, - "HostName": "derp9e.tailscale.com", - "IPv4": "192.73.248.83", - "IPv6": "2607:f740:100::359", - "CanPort80": true - }, - { - "Name": "9f", - "RegionID": 9, - "HostName": "derp9f.tailscale.com", - "IPv4": "209.177.156.197", - "IPv6": "2607:f740:100::cad", - "CanPort80": true - }, - { - "Name": "9d", - "RegionID": 9, - "HostName": "derp9d.tailscale.com", - "IPv4": "209.177.156.94", - "IPv6": "2607:f740:100::c05", - "CanPort80": true - } - ] - } - } - }, - "DisplayMessages": null, - "TKAEnabled": false, - "TKAHead": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", - "Domain": "kratail2tid@passkey", - "DomainAuditLogID": "", - "UserProfiles": { - "6999435610919250": { - "ID": 6999435610919250, - "LoginName": "group-a-client.tail78f774.ts.net", - "DisplayName": "group-a-client" - } - } + "PacketFilterRules": null } }, "group-b-client": { - "commands": { - "packet_filter_rules": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/group-b-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/group-b-client/tailscaled.sock debug localapi POST debug-packet-filter-matches" - }, "packet_filter_rules": null, - "packet_filter_matches": [], - "whois": { - "100.124.195.93": { - "peer_name": "exit-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/group-b-client/tailscaled.sock whois --json 100.124.195.93", - "response": null - }, - "100.116.18.24": { - "peer_name": "exit-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/group-b-client/tailscaled.sock whois --json 100.116.18.24", - "response": null - }, - "100.85.66.106": { - "peer_name": "exit-node", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/group-b-client/tailscaled.sock whois --json 100.85.66.106", - "response": null - }, - "100.107.162.14": { - "peer_name": "group-a-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/group-b-client/tailscaled.sock whois --json 100.107.162.14", - "response": null - }, - "100.105.127.107": { - "peer_name": "multi-exit-router", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/group-b-client/tailscaled.sock whois --json 100.105.127.107", - "response": null - }, - "100.109.43.124": { - "peer_name": "router-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/group-b-client/tailscaled.sock whois --json 100.109.43.124", - "response": null - }, - "100.65.172.123": { - "peer_name": "router-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/group-b-client/tailscaled.sock whois --json 100.65.172.123", - "response": null - }, - "100.92.142.61": { - "peer_name": "subnet-router", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/group-b-client/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/group-b-client/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/group-b-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/group-b-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/group-b-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/group-b-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/group-b-client/tailscaled.sock whois --json 100.90.199.68", - "response": null - } - }, "netmap": { - "SelfNode": { - "ID": 1008089393782498, - "StableID": "ndUwgLoZs811CNTRL", - "Name": "group-b-client.tail78f774.ts.net.", - "User": 1008089393782498, - "Key": "nodekey:ef35a655163204a08b33e09fdc24709f1e3aaa7f40de4efd5549cf014b4d8711", - "DiscoKey": "discokey:e972182cda0d0b459c91b2881624b81749a7e44390a5dde1b9bc17c1ae67715a", - "Addresses": ["100.77.135.18/32", "fd7a:115c:a1e0::4b37:8712/128"], - "AllowedIPs": ["100.77.135.18/32", "fd7a:115c:a1e0::4b37:8712/128"], - "Endpoints": ["77.164.248.136:49377", "10.65.0.27:49377", "172.17.0.1:49377"], - "Hostinfo": { - "Hostname": "group-b-client", - "RequestTags": ["tag:group-b"], - "Services": [ - { "Proto": "peerapi4", "Port": 47173 }, - { "Proto": "peerapi6", "Port": 47173 }, - { "Proto": "peerapi-dns-proxy", "Port": 1 } - ] - }, - "Created": "2026-03-28T10:38:08.031309668Z", - "Tags": ["tag:group-b"], - "MachineAuthorized": true, - "CapMap": { - "https://tailscale.com/cap/file-sharing": null, - "https://tailscale.com/cap/is-owner": null, - "https://tailscale.com/cap/ssh": null, - "https://tailscale.com/cap/tailnet-lock": null, - "probe-udp-lifetime": null, - "ssh-behavior-v1": null, - "ssh-env-vars": null, - "store-appc-routes": null, - "tailnet-display-name": ["kratail2tid@passkey"] - }, - "ComputedName": "group-b-client", - "ComputedNameWithHost": "group-b-client" - }, - "AllCaps": [ - "store-appc-routes", - "ssh-behavior-v1", - "https://tailscale.com/cap/file-sharing", - "https://tailscale.com/cap/ssh", - "ssh-env-vars", - "https://tailscale.com/cap/is-owner", - "probe-udp-lifetime", - "tailnet-display-name", - "https://tailscale.com/cap/tailnet-lock" - ], - "NodeKey": "nodekey:ef35a655163204a08b33e09fdc24709f1e3aaa7f40de4efd5549cf014b4d8711", - "MachineKey": "mkey:f151b3ba7be457f1484c96d8daf48e032d8c9ed890a7f9b2f32c51458a19a05c", "Peers": [], - "DNS": { - "Routes": { - "tail78f774.ts.net.": null, - "ts.net.": [{ "Addr": "199.247.155.53" }, { "Addr": "2620:111:8007::53" }] - }, - "Domains": ["tail78f774.ts.net"], - "Proxied": true, - "ExitNodeFilteredSet": [".ts.net", ".tailscale.net"] - }, - "PacketFilter": [], - "PacketFilterRules": null, - "SSHPolicy": { "rules": [] }, - "CollectServices": false, - "DERPMap": { - "Regions": { - "1": { - "RegionID": 1, - "RegionCode": "nyc", - "RegionName": "New York City", - "Latitude": 40.7128, - "Longitude": -74.006, - "Nodes": [ - { - "Name": "1h", - "RegionID": 1, - "HostName": "derp1h.tailscale.com", - "IPv4": "199.38.181.93", - "IPv6": "2607:f740:f::afd", - "CanPort80": true - }, - { - "Name": "1g", - "RegionID": 1, - "HostName": "derp1g.tailscale.com", - "IPv4": "209.177.145.120", - "IPv6": "2607:f740:f::3eb", - "CanPort80": true - }, - { - "Name": "1i", - "RegionID": 1, - "HostName": "derp1i.tailscale.com", - "IPv4": "199.38.181.103", - "IPv6": "2607:f740:f::e19", - "CanPort80": true - }, - { - "Name": "1f", - "RegionID": 1, - "HostName": "derp1f.tailscale.com", - "IPv4": "199.38.181.104", - "IPv6": "2607:f740:f::bc", - "CanPort80": true - } - ] - }, - "10": { - "RegionID": 10, - "RegionCode": "sea", - "RegionName": "Seattle", - "Latitude": 47.609722, - "Longitude": -122.333056, - "Nodes": [ - { - "Name": "10c", - "RegionID": 10, - "HostName": "derp10c.tailscale.com", - "IPv4": "192.73.240.121", - "IPv6": "2607:f740:14::40c", - "CanPort80": true - }, - { - "Name": "10d", - "RegionID": 10, - "HostName": "derp10d.tailscale.com", - "IPv4": "192.73.240.132", - "IPv6": "2607:f740:14::500", - "CanPort80": true - }, - { - "Name": "10b", - "RegionID": 10, - "HostName": "derp10b.tailscale.com", - "IPv4": "192.73.240.161", - "IPv6": "2607:f740:14::61c", - "CanPort80": true - } - ] - }, - "11": { - "RegionID": 11, - "RegionCode": "sao", - "RegionName": "São Paulo", - "Latitude": -23.55, - "Longitude": -46.633333, - "Nodes": [ - { - "Name": "11f", - "RegionID": 11, - "HostName": "derp11f.tailscale.com", - "IPv4": "172.237.61.197", - "IPv6": "2600:3c0d::2000:3bff:fe44:6166", - "CanPort80": true - }, - { - "Name": "11g", - "RegionID": 11, - "HostName": "derp11g.tailscale.com", - "IPv4": "172.237.61.190", - "IPv6": "2600:3c0d::2000:62ff:febe:2e67", - "CanPort80": true - }, - { - "Name": "11e", - "RegionID": 11, - "HostName": "derp11e.tailscale.com", - "IPv4": "172.237.61.194", - "IPv6": "2600:3c0d::2000:d2ff:fe43:1790", - "CanPort80": true - } - ] - }, - "12": { - "RegionID": 12, - "RegionCode": "ord", - "RegionName": "Chicago", - "Latitude": 41.881944, - "Longitude": -87.627778, - "Nodes": [ - { - "Name": "12e", - "RegionID": 12, - "HostName": "derp12e.tailscale.com", - "IPv4": "209.177.158.15", - "IPv6": "2607:f740:e::b17", - "CanPort80": true - }, - { - "Name": "12f", - "RegionID": 12, - "HostName": "derp12f.tailscale.com", - "IPv4": "199.38.182.118", - "IPv6": "2607:f740:e::4c8", - "CanPort80": true - }, - { - "Name": "12d", - "RegionID": 12, - "HostName": "derp12d.tailscale.com", - "IPv4": "209.177.158.246", - "IPv6": "2607:f740:e::811", - "CanPort80": true - } - ] - }, - "13": { - "RegionID": 13, - "RegionCode": "den", - "RegionName": "Denver", - "Latitude": 39.7392, - "Longitude": -104.9849, - "Nodes": [ - { - "Name": "13c", - "RegionID": 13, - "HostName": "derp13c.tailscale.com", - "IPv4": "192.73.242.28", - "IPv6": "2607:f740:16::5c", - "CanPort80": true - }, - { - "Name": "13d", - "RegionID": 13, - "HostName": "derp13d.tailscale.com", - "IPv4": "192.73.242.204", - "IPv6": "2607:f740:16::c23", - "CanPort80": true - }, - { - "Name": "13b", - "RegionID": 13, - "HostName": "derp13b.tailscale.com", - "IPv4": "192.73.242.187", - "IPv6": "2607:f740:16::640", - "CanPort80": true - } - ] - }, - "14": { - "RegionID": 14, - "RegionCode": "ams", - "RegionName": "Amsterdam", - "Latitude": 52.372778, - "Longitude": 4.893611, - "Nodes": [ - { - "Name": "14c", - "RegionID": 14, - "HostName": "derp14c.tailscale.com", - "IPv4": "176.58.93.147", - "IPv6": "2a00:dd80:3c::b09", - "CanPort80": true - }, - { - "Name": "14d", - "RegionID": 14, - "HostName": "derp14d.tailscale.com", - "IPv4": "176.58.93.154", - "IPv6": "2a00:dd80:3c::3d5", - "CanPort80": true - }, - { - "Name": "14b", - "RegionID": 14, - "HostName": "derp14b.tailscale.com", - "IPv4": "176.58.93.248", - "IPv6": "2a00:dd80:3c::807", - "CanPort80": true - } - ] - }, - "15": { - "RegionID": 15, - "RegionCode": "jnb", - "RegionName": "Johannesburg", - "Latitude": -26.204444, - "Longitude": 28.045556, - "Nodes": [ - { - "Name": "15c", - "RegionID": 15, - "HostName": "derp15c.tailscale.com", - "IPv4": "102.67.165.185", - "IPv6": "2c0f:edb0:0:10::b59", - "CanPort80": true - }, - { - "Name": "15d", - "RegionID": 15, - "HostName": "derp15d.tailscale.com", - "IPv4": "102.67.165.36", - "IPv6": "2c0f:edb0:0:10::599", - "CanPort80": true - }, - { - "Name": "15b", - "RegionID": 15, - "HostName": "derp15b.tailscale.com", - "IPv4": "102.67.165.90", - "IPv6": "2c0f:edb0:0:10::963", - "CanPort80": true - } - ] - }, - "16": { - "RegionID": 16, - "RegionCode": "mia", - "RegionName": "Miami", - "Latitude": 25.78, - "Longitude": -80.21, - "Nodes": [ - { - "Name": "16c", - "RegionID": 16, - "HostName": "derp16c.tailscale.com", - "IPv4": "192.73.243.229", - "IPv6": "2607:f740:17::4e4", - "CanPort80": true - }, - { - "Name": "16d", - "RegionID": 16, - "HostName": "derp16d.tailscale.com", - "IPv4": "192.73.243.141", - "IPv6": "2607:f740:17::475", - "CanPort80": true - }, - { - "Name": "16b", - "RegionID": 16, - "HostName": "derp16b.tailscale.com", - "IPv4": "192.73.243.135", - "IPv6": "2607:f740:17::476", - "CanPort80": true - } - ] - }, - "17": { - "RegionID": 17, - "RegionCode": "lax", - "RegionName": "Los Angeles", - "Latitude": 34.05, - "Longitude": -118.25, - "Nodes": [ - { - "Name": "17c", - "RegionID": 17, - "HostName": "derp17c.tailscale.com", - "IPv4": "208.111.40.12", - "IPv6": "2607:f740:c::10", - "CanPort80": true - }, - { - "Name": "17d", - "RegionID": 17, - "HostName": "derp17d.tailscale.com", - "IPv4": "208.111.40.216", - "IPv6": "2607:f740:c::e1b", - "CanPort80": true - }, - { - "Name": "17b", - "RegionID": 17, - "HostName": "derp17b.tailscale.com", - "IPv4": "192.73.244.245", - "IPv6": "2607:f740:c::646", - "CanPort80": true - } - ] - }, - "18": { - "RegionID": 18, - "RegionCode": "par", - "RegionName": "Paris", - "Latitude": 48.856667, - "Longitude": 2.352222, - "Nodes": [ - { - "Name": "18c", - "RegionID": 18, - "HostName": "derp18c.tailscale.com", - "IPv4": "176.58.90.207", - "IPv6": "2a00:dd80:3e::c19", - "CanPort80": true - }, - { - "Name": "18d", - "RegionID": 18, - "HostName": "derp18d.tailscale.com", - "IPv4": "176.58.90.104", - "IPv6": "2a00:dd80:3e::f2e", - "CanPort80": true - }, - { - "Name": "18b", - "RegionID": 18, - "HostName": "derp18b.tailscale.com", - "IPv4": "176.58.90.147", - "IPv6": "2a00:dd80:3e::363", - "CanPort80": true - } - ] - }, - "19": { - "RegionID": 19, - "RegionCode": "mad", - "RegionName": "Madrid", - "Latitude": 40.416944, - "Longitude": -3.703333, - "Nodes": [ - { - "Name": "19c", - "RegionID": 19, - "HostName": "derp19c.tailscale.com", - "IPv4": "45.159.97.61", - "IPv6": "2a00:dd80:14:10::20", - "CanPort80": true - }, - { - "Name": "19d", - "RegionID": 19, - "HostName": "derp19d.tailscale.com", - "IPv4": "45.159.97.233", - "IPv6": "2a00:dd80:14:10::34a", - "CanPort80": true - }, - { - "Name": "19b", - "RegionID": 19, - "HostName": "derp19b.tailscale.com", - "IPv4": "45.159.97.144", - "IPv6": "2a00:dd80:14:10::335", - "CanPort80": true - } - ] - }, - "2": { - "RegionID": 2, - "RegionCode": "sfo", - "RegionName": "San Francisco", - "Latitude": 37.7775, - "Longitude": -122.416389, - "Nodes": [ - { - "Name": "2e", - "RegionID": 2, - "HostName": "derp2e.tailscale.com", - "IPv4": "192.73.252.134", - "IPv6": "2607:f740:0:3f::44c", - "CanPort80": true - }, - { - "Name": "2f", - "RegionID": 2, - "HostName": "derp2f.tailscale.com", - "IPv4": "208.111.34.178", - "IPv6": "2607:f740:0:3f::f4", - "CanPort80": true - }, - { - "Name": "2d", - "RegionID": 2, - "HostName": "derp2d.tailscale.com", - "IPv4": "192.73.252.65", - "IPv6": "2607:f740:0:3f::287", - "CanPort80": true - } - ] - }, - "20": { - "RegionID": 20, - "RegionCode": "hkg", - "RegionName": "Hong Kong", - "Latitude": 22.3193, - "Longitude": 114.1694, - "Nodes": [ - { - "Name": "20c", - "RegionID": 20, - "HostName": "derp20c.tailscale.com", - "IPv4": "205.147.105.30", - "IPv6": "2403:2500:8000:1::5fb", - "CanPort80": true - }, - { - "Name": "20d", - "RegionID": 20, - "HostName": "derp20d.tailscale.com", - "IPv4": "205.147.105.78", - "IPv6": "2403:2500:8000:1::e9a", - "CanPort80": true - }, - { - "Name": "20b", - "RegionID": 20, - "HostName": "derp20b.tailscale.com", - "IPv4": "103.6.84.152", - "IPv6": "2403:2500:8000:1::ef6", - "CanPort80": true - } - ] - }, - "21": { - "RegionID": 21, - "RegionCode": "tor", - "RegionName": "Toronto", - "Latitude": 43.741667, - "Longitude": -79.373333, - "Nodes": [ - { - "Name": "21c", - "RegionID": 21, - "HostName": "derp21c.tailscale.com", - "IPv4": "162.248.221.215", - "IPv6": "2607:f740:50::f10", - "CanPort80": true - }, - { - "Name": "21d", - "RegionID": 21, - "HostName": "derp21d.tailscale.com", - "IPv4": "162.248.221.248", - "IPv6": "2607:f740:50::ca4", - "CanPort80": true - }, - { - "Name": "21b", - "RegionID": 21, - "HostName": "derp21b.tailscale.com", - "IPv4": "162.248.221.199", - "IPv6": "2607:f740:50::1d1", - "CanPort80": true - } - ] - }, - "22": { - "RegionID": 22, - "RegionCode": "waw", - "RegionName": "Warsaw", - "Latitude": 52.23, - "Longitude": 21.011111, - "Nodes": [ - { - "Name": "22c", - "RegionID": 22, - "HostName": "derp22c.tailscale.com", - "IPv4": "45.159.98.253", - "IPv6": "2a00:dd80:40:100::3f", - "CanPort80": true - }, - { - "Name": "22d", - "RegionID": 22, - "HostName": "derp22d.tailscale.com", - "IPv4": "45.159.98.145", - "IPv6": "2a00:dd80:40:100::211", - "CanPort80": true - }, - { - "Name": "22b", - "RegionID": 22, - "HostName": "derp22b.tailscale.com", - "IPv4": "45.159.98.196", - "IPv6": "2a00:dd80:40:100::316", - "CanPort80": true - } - ] - }, - "23": { - "RegionID": 23, - "RegionCode": "dbi", - "RegionName": "Dubai", - "Latitude": 25.263056, - "Longitude": 55.297222, - "Nodes": [ - { - "Name": "23c", - "RegionID": 23, - "HostName": "derp23c.tailscale.com", - "IPv4": "185.34.3.207", - "IPv6": "2a00:dd80:3f:100::a50", - "CanPort80": true - }, - { - "Name": "23d", - "RegionID": 23, - "HostName": "derp23d.tailscale.com", - "IPv4": "185.34.3.75", - "IPv6": "2a00:dd80:3f:100::97e", - "CanPort80": true - }, - { - "Name": "23b", - "RegionID": 23, - "HostName": "derp23b.tailscale.com", - "IPv4": "185.34.3.232", - "IPv6": "2a00:dd80:3f:100::76f", - "CanPort80": true - } - ] - }, - "24": { - "RegionID": 24, - "RegionCode": "hnl", - "RegionName": "Honolulu", - "Latitude": 21.306944, - "Longitude": -157.858333, - "Nodes": [ - { - "Name": "24c", - "RegionID": 24, - "HostName": "derp24c.tailscale.com", - "IPv4": "208.83.233.233", - "IPv6": "2001:19f0:c000:c591:5400:04ff:fe26:2c5f", - "CanPort80": true - }, - { - "Name": "24d", - "RegionID": 24, - "HostName": "derp24d.tailscale.com", - "IPv4": "208.72.155.133", - "IPv6": "2001:19f0:c000:c564:5400:04ff:fe26:2ba8", - "CanPort80": true - }, - { - "Name": "24b", - "RegionID": 24, - "HostName": "derp24b.tailscale.com", - "IPv4": "208.83.234.151", - "IPv6": "2001:19f0:c000:c586:5400:04ff:fe26:2ba6", - "CanPort80": true - } - ] - }, - "25": { - "RegionID": 25, - "RegionCode": "nai", - "RegionName": "Nairobi", - "Latitude": -1.286389, - "Longitude": 36.817222, - "Nodes": [ - { - "Name": "25c", - "RegionID": 25, - "HostName": "derp25c.tailscale.com", - "IPv4": "102.67.167.37", - "IPv6": "2c0f:edb0:2000:1::2c7", - "CanPort80": true - }, - { - "Name": "25d", - "RegionID": 25, - "HostName": "derp25d.tailscale.com", - "IPv4": "102.67.167.188", - "IPv6": "2c0f:edb0:2000:1::188", - "CanPort80": true - }, - { - "Name": "25b", - "RegionID": 25, - "HostName": "derp25b.tailscale.com", - "IPv4": "102.67.167.245", - "IPv6": "2c0f:edb0:2000:1::2e9", - "CanPort80": true - } - ] - }, - "26": { - "RegionID": 26, - "RegionCode": "nue", - "RegionName": "Nuremberg", - "Latitude": 49.453889, - "Longitude": 11.0775, - "Nodes": [ - { - "Name": "26c", - "RegionID": 26, - "HostName": "derp26c.tailscale.com", - "IPv4": "49.12.193.137", - "IPv6": "2a01:4f8:1c1c:5c70::1", - "CanPort80": true - }, - { - "Name": "26d", - "RegionID": 26, - "HostName": "derp26d.tailscale.com", - "IPv4": "49.13.204.141", - "IPv6": "2a01:4f8:1c0c:7d06::1", - "CanPort80": true - }, - { - "Name": "26b", - "RegionID": 26, - "HostName": "derp26b.tailscale.com", - "IPv4": "167.235.72.200", - "IPv6": "2a01:4f8:1c1c:47b6::1", - "CanPort80": true - } - ] - }, - "27": { - "RegionID": 27, - "RegionCode": "iad", - "RegionName": "Ashburn", - "Latitude": 39.03, - "Longitude": -77.471111, - "Nodes": [ - { - "Name": "27d", - "RegionID": 27, - "HostName": "derp27d.tailscale.com", - "IPv4": "178.156.152.106", - "IPv6": "2a01:4ff:f0:3c8e::1", - "CanPort80": true - }, - { - "Name": "27c", - "RegionID": 27, - "HostName": "derp27c.tailscale.com", - "IPv4": "178.156.152.91", - "IPv6": "2a01:4ff:f0:3913::1", - "CanPort80": true - }, - { - "Name": "27e", - "RegionID": 27, - "HostName": "derp27e.tailscale.com", - "IPv4": "178.156.134.232", - "IPv6": "2a01:4ff:f0:28d4::1", - "CanPort80": true - }, - { - "Name": "27b", - "RegionID": 27, - "HostName": "derp27b.tailscale.com", - "IPv4": "5.161.218.233", - "IPv6": "2a01:4ff:f0:3db9::1", - "CanPort80": true - } - ] - }, - "28": { - "RegionID": 28, - "RegionCode": "hel", - "RegionName": "Helsinki", - "Latitude": 60.170833, - "Longitude": 24.9375, - "Nodes": [ - { - "Name": "28c", - "RegionID": 28, - "HostName": "derp28c.tailscale.com", - "IPv4": "95.217.2.165", - "IPv6": "2a01:4f9:c012:cd74::1", - "CanPort80": true - }, - { - "Name": "28d", - "RegionID": 28, - "HostName": "derp28d.tailscale.com", - "IPv4": "157.180.28.32", - "IPv6": "2a01:4f9:c012:2e5b::1", - "CanPort80": true - }, - { - "Name": "28b", - "RegionID": 28, - "HostName": "derp28b.tailscale.com", - "IPv4": "65.109.143.62", - "IPv6": "2a01:4f9:c012:d55c::1", - "CanPort80": true - } - ] - }, - "3": { - "RegionID": 3, - "RegionCode": "sin", - "RegionName": "Singapore", - "Latitude": 1.3521, - "Longitude": 103.8198, - "Nodes": [ - { - "Name": "3g", - "RegionID": 3, - "HostName": "derp3g.tailscale.com", - "IPv4": "172.237.72.79", - "IPv6": "2600:3c15::2000:adff:fe08:6fab", - "CanPort80": true - }, - { - "Name": "3f", - "RegionID": 3, - "HostName": "derp3f.tailscale.com", - "IPv4": "172.237.72.8", - "IPv6": "2600:3c15::2000:53ff:fe48:a668", - "CanPort80": true - }, - { - "Name": "3h", - "RegionID": 3, - "HostName": "derp3h.tailscale.com", - "IPv4": "172.237.66.30", - "IPv6": "2600:3c15::2000:3dff:fe44:50aa", - "CanPort80": true - }, - { - "Name": "3e", - "RegionID": 3, - "HostName": "derp3e.tailscale.com", - "IPv4": "172.237.72.43", - "IPv6": "2600:3c15::2000:6cff:fee4:d799", - "CanPort80": true - } - ] - }, - "4": { - "RegionID": 4, - "RegionCode": "fra", - "RegionName": "Frankfurt", - "Latitude": 50.1109, - "Longitude": 8.6821, - "Nodes": [ - { - "Name": "4h", - "RegionID": 4, - "HostName": "derp4h.tailscale.com", - "IPv4": "185.40.234.77", - "IPv6": "2a00:dd80:20::bcf", - "CanPort80": true - }, - { - "Name": "4g", - "RegionID": 4, - "HostName": "derp4g.tailscale.com", - "IPv4": "185.40.234.113", - "IPv6": "2a00:dd80:20::8f", - "CanPort80": true - }, - { - "Name": "4i", - "RegionID": 4, - "HostName": "derp4i.tailscale.com", - "IPv4": "185.40.234.53", - "IPv6": "2a00:dd80:20::8a6", - "CanPort80": true - }, - { - "Name": "4f", - "RegionID": 4, - "HostName": "derp4f.tailscale.com", - "IPv4": "185.40.234.219", - "IPv6": "2a00:dd80:20::a25", - "CanPort80": true - } - ] - }, - "5": { - "RegionID": 5, - "RegionCode": "syd", - "RegionName": "Sydney", - "Latitude": -33.867778, - "Longitude": 151.21, - "Nodes": [ - { - "Name": "5f", - "RegionID": 5, - "HostName": "derp5f.tailscale.com", - "IPv4": "172.105.166.103", - "IPv6": "2400:8907::2000:ccff:fe1f:80da", - "CanPort80": true - }, - { - "Name": "5g", - "RegionID": 5, - "HostName": "derp5g.tailscale.com", - "IPv4": "172.105.169.57", - "IPv6": "2400:8907::2000:2fff:fea7:57f4", - "CanPort80": true - }, - { - "Name": "5e", - "RegionID": 5, - "HostName": "derp5e.tailscale.com", - "IPv4": "172.105.179.230", - "IPv6": "2400:8907::2000:ceff:fe8d:4f4e", - "CanPort80": true - } - ] - }, - "6": { - "RegionID": 6, - "RegionCode": "blr", - "RegionName": "Bengaluru", - "Latitude": 12.9716, - "Longitude": 77.5946, - "Nodes": [ - { - "Name": "6a", - "RegionID": 6, - "HostName": "derp6.tailscale.com", - "IPv4": "68.183.90.120", - "IPv6": "2400:6180:100:d0::982:d001", - "CanPort80": true - } - ] - }, - "7": { - "RegionID": 7, - "RegionCode": "tok", - "RegionName": "Tokyo", - "Latitude": 35.6764, - "Longitude": 139.65, - "Nodes": [ - { - "Name": "7g", - "RegionID": 7, - "HostName": "derp7g.tailscale.com", - "IPv4": "172.238.6.179", - "IPv6": "2600:3c18::2000:3fff:fe80:3ebd", - "CanPort80": true - }, - { - "Name": "7f", - "RegionID": 7, - "HostName": "derp7f.tailscale.com", - "IPv4": "172.238.6.34", - "IPv6": "2600:3c18::2000:acff:fe8e:3ed5", - "CanPort80": true - }, - { - "Name": "7h", - "RegionID": 7, - "HostName": "derp7h.tailscale.com", - "IPv4": "172.237.28.183", - "IPv6": "2600:3c18::2000:b1ff:fea9:4560", - "CanPort80": true - }, - { - "Name": "7e", - "RegionID": 7, - "HostName": "derp7e.tailscale.com", - "IPv4": "172.238.6.180", - "IPv6": "2600:3c18::2000:60ff:fe0f:6e83", - "STUNOnly": true, - "CanPort80": true - } - ] - }, - "8": { - "RegionID": 8, - "RegionCode": "lhr", - "RegionName": "London", - "Latitude": 51.5072, - "Longitude": 0.1276, - "Nodes": [ - { - "Name": "8f", - "RegionID": 8, - "HostName": "derp8f.tailscale.com", - "IPv4": "176.58.88.183", - "IPv6": "2a00:dd80:3a::dfa", - "CanPort80": true - }, - { - "Name": "8g", - "RegionID": 8, - "HostName": "derp8g.tailscale.com", - "IPv4": "176.58.92.254", - "IPv6": "2a00:dd80:3a::ed", - "CanPort80": true - }, - { - "Name": "8e", - "RegionID": 8, - "HostName": "derp8e.tailscale.com", - "IPv4": "176.58.92.144", - "IPv6": "2a00:dd80:3a::b33", - "CanPort80": true - } - ] - }, - "9": { - "RegionID": 9, - "RegionCode": "dfw", - "RegionName": "Dallas", - "Latitude": 32.779167, - "Longitude": -96.808889, - "Nodes": [ - { - "Name": "9e", - "RegionID": 9, - "HostName": "derp9e.tailscale.com", - "IPv4": "192.73.248.83", - "IPv6": "2607:f740:100::359", - "CanPort80": true - }, - { - "Name": "9f", - "RegionID": 9, - "HostName": "derp9f.tailscale.com", - "IPv4": "209.177.156.197", - "IPv6": "2607:f740:100::cad", - "CanPort80": true - }, - { - "Name": "9d", - "RegionID": 9, - "HostName": "derp9d.tailscale.com", - "IPv4": "209.177.156.94", - "IPv6": "2607:f740:100::c05", - "CanPort80": true - } - ] - } - } - }, - "DisplayMessages": null, - "TKAEnabled": false, - "TKAHead": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", - "Domain": "kratail2tid@passkey", - "DomainAuditLogID": "", - "UserProfiles": { - "1008089393782498": { - "ID": 1008089393782498, - "LoginName": "group-b-client.tail78f774.ts.net", - "DisplayName": "group-b-client" - } - } + "PacketFilterRules": null } }, "multi-exit-router": { - "commands": { - "packet_filter_rules": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/multi-exit-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/multi-exit-router/tailscaled.sock debug localapi POST debug-packet-filter-matches" - }, "packet_filter_rules": [ { - "SrcIPs": ["100.83.200.69", "fd7a:115c:a1e0::c537:c845"], - "DstPorts": [{ "IP": "10.33.0.0/16", "Ports": { "First": 0, "Last": 65535 } }] + "SrcIPs": [ + "100.83.200.69", + "fd7a:115c:a1e0::c537:c845" + ], + "DstPorts": [ + { + "IP": "10.33.0.0/16", + "Ports": { + "First": 0, + "Last": 65535 + } + } + ] } ], - "packet_filter_matches": [ - { - "IPProto": [6, 17, 1, 58], - "Srcs": ["100.83.200.69/32", "fd7a:115c:a1e0::c537:c845/128"], - "SrcCaps": null, - "Dsts": [{ "Net": "10.33.0.0/16", "Ports": { "First": 0, "Last": 65535 } }], - "Caps": [] - } - ], - "whois": { - "100.124.195.93": { - "peer_name": "exit-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/multi-exit-router/tailscaled.sock whois --json 100.124.195.93", - "response": null - }, - "100.116.18.24": { - "peer_name": "exit-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/multi-exit-router/tailscaled.sock whois --json 100.116.18.24", - "response": null - }, - "100.85.66.106": { - "peer_name": "exit-node", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/multi-exit-router/tailscaled.sock whois --json 100.85.66.106", - "response": null - }, - "100.107.162.14": { - "peer_name": "group-a-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/multi-exit-router/tailscaled.sock whois --json 100.107.162.14", - "response": null - }, - "100.77.135.18": { - "peer_name": "group-b-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/multi-exit-router/tailscaled.sock whois --json 100.77.135.18", - "response": null - }, - "100.109.43.124": { - "peer_name": "router-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/multi-exit-router/tailscaled.sock whois --json 100.109.43.124", - "response": null - }, - "100.65.172.123": { - "peer_name": "router-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/multi-exit-router/tailscaled.sock whois --json 100.65.172.123", - "response": null - }, - "100.92.142.61": { - "peer_name": "subnet-router", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/multi-exit-router/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/multi-exit-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:64af337a7e8b61dce500da3b8f7d0a95fc6fe0e57c2f9e57b9b484a9b4acbe1e", - "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:47143", "10.65.0.27:47143", "172.17.0.1:47143"], - "HomeDERP": 8, - "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/multi-exit-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/multi-exit-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/multi-exit-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/multi-exit-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/multi-exit-router/tailscaled.sock whois --json 100.90.199.68", - "response": null - } - }, "netmap": { - "SelfNode": { - "ID": 6294409699640722, - "StableID": "nMQuxDUk9r11CNTRL", - "Name": "multi-exit-router.tail78f774.ts.net.", - "User": 6294409699640722, - "Key": "nodekey:b854a0d64eba757cd3215c5bd78149cc0f927e35a2ad20342e88a15ead297f6a", - "DiscoKey": "discokey:762c82dd308809f511c6ac86dcc2642585837358fdd24958d55f16883c8e6c58", - "Addresses": ["100.105.127.107/32", "fd7a:115c:a1e0::ad37:7f6b/128"], - "AllowedIPs": ["100.105.127.107/32", "fd7a:115c:a1e0::ad37:7f6b/128", "10.33.0.0/16"], - "Endpoints": ["77.164.248.136:50766", "10.65.0.27:50766", "172.17.0.1:50766"], - "Hostinfo": { - "Hostname": "multi-exit-router", - "RoutableIPs": ["0.0.0.0/0", "::/0", "10.33.0.0/16"], - "RequestTags": ["tag:exit", "tag:router"], - "Services": [ - { "Proto": "peerapi4", "Port": 62548 }, - { "Proto": "peerapi6", "Port": 62548 }, - { "Proto": "peerapi-dns-proxy", "Port": 1 } - ] - }, - "Created": "2026-03-28T10:38:19.117098852Z", - "Tags": ["tag:exit", "tag:router"], - "PrimaryRoutes": ["10.33.0.0/16"], - "MachineAuthorized": true, - "CapMap": { - "https://tailscale.com/cap/file-sharing": null, - "https://tailscale.com/cap/is-owner": null, - "https://tailscale.com/cap/ssh": null, - "https://tailscale.com/cap/tailnet-lock": null, - "probe-udp-lifetime": null, - "ssh-behavior-v1": null, - "ssh-env-vars": null, - "store-appc-routes": null, - "tailnet-display-name": ["kratail2tid@passkey"] - }, - "ComputedName": "multi-exit-router", - "ComputedNameWithHost": "multi-exit-router" - }, - "AllCaps": [ - "https://tailscale.com/cap/tailnet-lock", - "ssh-env-vars", - "ssh-behavior-v1", - "tailnet-display-name", - "https://tailscale.com/cap/file-sharing", - "https://tailscale.com/cap/ssh", - "probe-udp-lifetime", - "https://tailscale.com/cap/is-owner", - "store-appc-routes" - ], - "NodeKey": "nodekey:b854a0d64eba757cd3215c5bd78149cc0f927e35a2ad20342e88a15ead297f6a", - "MachineKey": "mkey:91bee804809f30d07bfc29cf556844288fc3d45e0572469a3cb0799a535fda7d", "Peers": [ { - "ID": 4031348162889210, - "StableID": "nf7BTTgoUY11CNTRL", "Name": "tagged-client.tail78f774.ts.net.", - "User": 1260082990019555, - "Key": "nodekey:3011e53353e49142ea56ae11f81e0dceae0d667093d04ee086dcb1e9c5d3c844", - "DiscoKey": "discokey:64af337a7e8b61dce500da3b8f7d0a95fc6fe0e57c2f9e57b9b484a9b4acbe1e", - "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:47143", "10.65.0.27:47143", "172.17.0.1:47143"], - "HomeDERP": 8, - "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" - } - ], - "DNS": { - "Routes": { - "tail78f774.ts.net.": null, - "ts.net.": [{ "Addr": "199.247.155.53" }, { "Addr": "2620:111:8007::53" }] - }, - "Domains": ["tail78f774.ts.net"], - "Proxied": true, - "ExitNodeFilteredSet": [".ts.net", ".tailscale.net"] - }, - "PacketFilter": [ - { - "IPProto": [6, 17, 1, 58], - "Srcs": ["100.83.200.69/32", "fd7a:115c:a1e0::c537:c845/128"], - "SrcCaps": null, - "Dsts": [{ "Net": "10.33.0.0/16", "Ports": { "First": 0, "Last": 65535 } }], - "Caps": [] + "AllowedIPs": [ + "100.83.200.69/32", + "fd7a:115c:a1e0::c537:c845/128" + ], + "PrimaryRoutes": [] } ], "PacketFilterRules": [ { - "SrcIPs": ["100.83.200.69", "fd7a:115c:a1e0::c537:c845"], - "DstPorts": [{ "IP": "10.33.0.0/16", "Ports": { "First": 0, "Last": 65535 } }] + "SrcIPs": [ + "100.83.200.69", + "fd7a:115c:a1e0::c537:c845" + ], + "DstPorts": [ + { + "IP": "10.33.0.0/16", + "Ports": { + "First": 0, + "Last": 65535 + } + } + ] } - ], - "SSHPolicy": { "rules": [] }, - "CollectServices": false, - "DERPMap": { - "Regions": { - "1": { - "RegionID": 1, - "RegionCode": "nyc", - "RegionName": "New York City", - "Latitude": 40.7128, - "Longitude": -74.006, - "Nodes": [ - { - "Name": "1h", - "RegionID": 1, - "HostName": "derp1h.tailscale.com", - "IPv4": "199.38.181.93", - "IPv6": "2607:f740:f::afd", - "CanPort80": true - }, - { - "Name": "1g", - "RegionID": 1, - "HostName": "derp1g.tailscale.com", - "IPv4": "209.177.145.120", - "IPv6": "2607:f740:f::3eb", - "CanPort80": true - }, - { - "Name": "1i", - "RegionID": 1, - "HostName": "derp1i.tailscale.com", - "IPv4": "199.38.181.103", - "IPv6": "2607:f740:f::e19", - "CanPort80": true - }, - { - "Name": "1f", - "RegionID": 1, - "HostName": "derp1f.tailscale.com", - "IPv4": "199.38.181.104", - "IPv6": "2607:f740:f::bc", - "CanPort80": true - } - ] - }, - "10": { - "RegionID": 10, - "RegionCode": "sea", - "RegionName": "Seattle", - "Latitude": 47.609722, - "Longitude": -122.333056, - "Nodes": [ - { - "Name": "10c", - "RegionID": 10, - "HostName": "derp10c.tailscale.com", - "IPv4": "192.73.240.121", - "IPv6": "2607:f740:14::40c", - "CanPort80": true - }, - { - "Name": "10d", - "RegionID": 10, - "HostName": "derp10d.tailscale.com", - "IPv4": "192.73.240.132", - "IPv6": "2607:f740:14::500", - "CanPort80": true - }, - { - "Name": "10b", - "RegionID": 10, - "HostName": "derp10b.tailscale.com", - "IPv4": "192.73.240.161", - "IPv6": "2607:f740:14::61c", - "CanPort80": true - } - ] - }, - "11": { - "RegionID": 11, - "RegionCode": "sao", - "RegionName": "São Paulo", - "Latitude": -23.55, - "Longitude": -46.633333, - "Nodes": [ - { - "Name": "11f", - "RegionID": 11, - "HostName": "derp11f.tailscale.com", - "IPv4": "172.237.61.197", - "IPv6": "2600:3c0d::2000:3bff:fe44:6166", - "CanPort80": true - }, - { - "Name": "11g", - "RegionID": 11, - "HostName": "derp11g.tailscale.com", - "IPv4": "172.237.61.190", - "IPv6": "2600:3c0d::2000:62ff:febe:2e67", - "CanPort80": true - }, - { - "Name": "11e", - "RegionID": 11, - "HostName": "derp11e.tailscale.com", - "IPv4": "172.237.61.194", - "IPv6": "2600:3c0d::2000:d2ff:fe43:1790", - "CanPort80": true - } - ] - }, - "12": { - "RegionID": 12, - "RegionCode": "ord", - "RegionName": "Chicago", - "Latitude": 41.881944, - "Longitude": -87.627778, - "Nodes": [ - { - "Name": "12e", - "RegionID": 12, - "HostName": "derp12e.tailscale.com", - "IPv4": "209.177.158.15", - "IPv6": "2607:f740:e::b17", - "CanPort80": true - }, - { - "Name": "12f", - "RegionID": 12, - "HostName": "derp12f.tailscale.com", - "IPv4": "199.38.182.118", - "IPv6": "2607:f740:e::4c8", - "CanPort80": true - }, - { - "Name": "12d", - "RegionID": 12, - "HostName": "derp12d.tailscale.com", - "IPv4": "209.177.158.246", - "IPv6": "2607:f740:e::811", - "CanPort80": true - } - ] - }, - "13": { - "RegionID": 13, - "RegionCode": "den", - "RegionName": "Denver", - "Latitude": 39.7392, - "Longitude": -104.9849, - "Nodes": [ - { - "Name": "13c", - "RegionID": 13, - "HostName": "derp13c.tailscale.com", - "IPv4": "192.73.242.28", - "IPv6": "2607:f740:16::5c", - "CanPort80": true - }, - { - "Name": "13d", - "RegionID": 13, - "HostName": "derp13d.tailscale.com", - "IPv4": "192.73.242.204", - "IPv6": "2607:f740:16::c23", - "CanPort80": true - }, - { - "Name": "13b", - "RegionID": 13, - "HostName": "derp13b.tailscale.com", - "IPv4": "192.73.242.187", - "IPv6": "2607:f740:16::640", - "CanPort80": true - } - ] - }, - "14": { - "RegionID": 14, - "RegionCode": "ams", - "RegionName": "Amsterdam", - "Latitude": 52.372778, - "Longitude": 4.893611, - "Nodes": [ - { - "Name": "14c", - "RegionID": 14, - "HostName": "derp14c.tailscale.com", - "IPv4": "176.58.93.147", - "IPv6": "2a00:dd80:3c::b09", - "CanPort80": true - }, - { - "Name": "14d", - "RegionID": 14, - "HostName": "derp14d.tailscale.com", - "IPv4": "176.58.93.154", - "IPv6": "2a00:dd80:3c::3d5", - "CanPort80": true - }, - { - "Name": "14b", - "RegionID": 14, - "HostName": "derp14b.tailscale.com", - "IPv4": "176.58.93.248", - "IPv6": "2a00:dd80:3c::807", - "CanPort80": true - } - ] - }, - "15": { - "RegionID": 15, - "RegionCode": "jnb", - "RegionName": "Johannesburg", - "Latitude": -26.204444, - "Longitude": 28.045556, - "Nodes": [ - { - "Name": "15c", - "RegionID": 15, - "HostName": "derp15c.tailscale.com", - "IPv4": "102.67.165.185", - "IPv6": "2c0f:edb0:0:10::b59", - "CanPort80": true - }, - { - "Name": "15d", - "RegionID": 15, - "HostName": "derp15d.tailscale.com", - "IPv4": "102.67.165.36", - "IPv6": "2c0f:edb0:0:10::599", - "CanPort80": true - }, - { - "Name": "15b", - "RegionID": 15, - "HostName": "derp15b.tailscale.com", - "IPv4": "102.67.165.90", - "IPv6": "2c0f:edb0:0:10::963", - "CanPort80": true - } - ] - }, - "16": { - "RegionID": 16, - "RegionCode": "mia", - "RegionName": "Miami", - "Latitude": 25.78, - "Longitude": -80.21, - "Nodes": [ - { - "Name": "16c", - "RegionID": 16, - "HostName": "derp16c.tailscale.com", - "IPv4": "192.73.243.229", - "IPv6": "2607:f740:17::4e4", - "CanPort80": true - }, - { - "Name": "16d", - "RegionID": 16, - "HostName": "derp16d.tailscale.com", - "IPv4": "192.73.243.141", - "IPv6": "2607:f740:17::475", - "CanPort80": true - }, - { - "Name": "16b", - "RegionID": 16, - "HostName": "derp16b.tailscale.com", - "IPv4": "192.73.243.135", - "IPv6": "2607:f740:17::476", - "CanPort80": true - } - ] - }, - "17": { - "RegionID": 17, - "RegionCode": "lax", - "RegionName": "Los Angeles", - "Latitude": 34.05, - "Longitude": -118.25, - "Nodes": [ - { - "Name": "17c", - "RegionID": 17, - "HostName": "derp17c.tailscale.com", - "IPv4": "208.111.40.12", - "IPv6": "2607:f740:c::10", - "CanPort80": true - }, - { - "Name": "17d", - "RegionID": 17, - "HostName": "derp17d.tailscale.com", - "IPv4": "208.111.40.216", - "IPv6": "2607:f740:c::e1b", - "CanPort80": true - }, - { - "Name": "17b", - "RegionID": 17, - "HostName": "derp17b.tailscale.com", - "IPv4": "192.73.244.245", - "IPv6": "2607:f740:c::646", - "CanPort80": true - } - ] - }, - "18": { - "RegionID": 18, - "RegionCode": "par", - "RegionName": "Paris", - "Latitude": 48.856667, - "Longitude": 2.352222, - "Nodes": [ - { - "Name": "18c", - "RegionID": 18, - "HostName": "derp18c.tailscale.com", - "IPv4": "176.58.90.207", - "IPv6": "2a00:dd80:3e::c19", - "CanPort80": true - }, - { - "Name": "18d", - "RegionID": 18, - "HostName": "derp18d.tailscale.com", - "IPv4": "176.58.90.104", - "IPv6": "2a00:dd80:3e::f2e", - "CanPort80": true - }, - { - "Name": "18b", - "RegionID": 18, - "HostName": "derp18b.tailscale.com", - "IPv4": "176.58.90.147", - "IPv6": "2a00:dd80:3e::363", - "CanPort80": true - } - ] - }, - "19": { - "RegionID": 19, - "RegionCode": "mad", - "RegionName": "Madrid", - "Latitude": 40.416944, - "Longitude": -3.703333, - "Nodes": [ - { - "Name": "19c", - "RegionID": 19, - "HostName": "derp19c.tailscale.com", - "IPv4": "45.159.97.61", - "IPv6": "2a00:dd80:14:10::20", - "CanPort80": true - }, - { - "Name": "19d", - "RegionID": 19, - "HostName": "derp19d.tailscale.com", - "IPv4": "45.159.97.233", - "IPv6": "2a00:dd80:14:10::34a", - "CanPort80": true - }, - { - "Name": "19b", - "RegionID": 19, - "HostName": "derp19b.tailscale.com", - "IPv4": "45.159.97.144", - "IPv6": "2a00:dd80:14:10::335", - "CanPort80": true - } - ] - }, - "2": { - "RegionID": 2, - "RegionCode": "sfo", - "RegionName": "San Francisco", - "Latitude": 37.7775, - "Longitude": -122.416389, - "Nodes": [ - { - "Name": "2e", - "RegionID": 2, - "HostName": "derp2e.tailscale.com", - "IPv4": "192.73.252.134", - "IPv6": "2607:f740:0:3f::44c", - "CanPort80": true - }, - { - "Name": "2f", - "RegionID": 2, - "HostName": "derp2f.tailscale.com", - "IPv4": "208.111.34.178", - "IPv6": "2607:f740:0:3f::f4", - "CanPort80": true - }, - { - "Name": "2d", - "RegionID": 2, - "HostName": "derp2d.tailscale.com", - "IPv4": "192.73.252.65", - "IPv6": "2607:f740:0:3f::287", - "CanPort80": true - } - ] - }, - "20": { - "RegionID": 20, - "RegionCode": "hkg", - "RegionName": "Hong Kong", - "Latitude": 22.3193, - "Longitude": 114.1694, - "Nodes": [ - { - "Name": "20c", - "RegionID": 20, - "HostName": "derp20c.tailscale.com", - "IPv4": "205.147.105.30", - "IPv6": "2403:2500:8000:1::5fb", - "CanPort80": true - }, - { - "Name": "20d", - "RegionID": 20, - "HostName": "derp20d.tailscale.com", - "IPv4": "205.147.105.78", - "IPv6": "2403:2500:8000:1::e9a", - "CanPort80": true - }, - { - "Name": "20b", - "RegionID": 20, - "HostName": "derp20b.tailscale.com", - "IPv4": "103.6.84.152", - "IPv6": "2403:2500:8000:1::ef6", - "CanPort80": true - } - ] - }, - "21": { - "RegionID": 21, - "RegionCode": "tor", - "RegionName": "Toronto", - "Latitude": 43.741667, - "Longitude": -79.373333, - "Nodes": [ - { - "Name": "21c", - "RegionID": 21, - "HostName": "derp21c.tailscale.com", - "IPv4": "162.248.221.215", - "IPv6": "2607:f740:50::f10", - "CanPort80": true - }, - { - "Name": "21d", - "RegionID": 21, - "HostName": "derp21d.tailscale.com", - "IPv4": "162.248.221.248", - "IPv6": "2607:f740:50::ca4", - "CanPort80": true - }, - { - "Name": "21b", - "RegionID": 21, - "HostName": "derp21b.tailscale.com", - "IPv4": "162.248.221.199", - "IPv6": "2607:f740:50::1d1", - "CanPort80": true - } - ] - }, - "22": { - "RegionID": 22, - "RegionCode": "waw", - "RegionName": "Warsaw", - "Latitude": 52.23, - "Longitude": 21.011111, - "Nodes": [ - { - "Name": "22c", - "RegionID": 22, - "HostName": "derp22c.tailscale.com", - "IPv4": "45.159.98.253", - "IPv6": "2a00:dd80:40:100::3f", - "CanPort80": true - }, - { - "Name": "22d", - "RegionID": 22, - "HostName": "derp22d.tailscale.com", - "IPv4": "45.159.98.145", - "IPv6": "2a00:dd80:40:100::211", - "CanPort80": true - }, - { - "Name": "22b", - "RegionID": 22, - "HostName": "derp22b.tailscale.com", - "IPv4": "45.159.98.196", - "IPv6": "2a00:dd80:40:100::316", - "CanPort80": true - } - ] - }, - "23": { - "RegionID": 23, - "RegionCode": "dbi", - "RegionName": "Dubai", - "Latitude": 25.263056, - "Longitude": 55.297222, - "Nodes": [ - { - "Name": "23c", - "RegionID": 23, - "HostName": "derp23c.tailscale.com", - "IPv4": "185.34.3.207", - "IPv6": "2a00:dd80:3f:100::a50", - "CanPort80": true - }, - { - "Name": "23d", - "RegionID": 23, - "HostName": "derp23d.tailscale.com", - "IPv4": "185.34.3.75", - "IPv6": "2a00:dd80:3f:100::97e", - "CanPort80": true - }, - { - "Name": "23b", - "RegionID": 23, - "HostName": "derp23b.tailscale.com", - "IPv4": "185.34.3.232", - "IPv6": "2a00:dd80:3f:100::76f", - "CanPort80": true - } - ] - }, - "24": { - "RegionID": 24, - "RegionCode": "hnl", - "RegionName": "Honolulu", - "Latitude": 21.306944, - "Longitude": -157.858333, - "Nodes": [ - { - "Name": "24c", - "RegionID": 24, - "HostName": "derp24c.tailscale.com", - "IPv4": "208.83.233.233", - "IPv6": "2001:19f0:c000:c591:5400:04ff:fe26:2c5f", - "CanPort80": true - }, - { - "Name": "24d", - "RegionID": 24, - "HostName": "derp24d.tailscale.com", - "IPv4": "208.72.155.133", - "IPv6": "2001:19f0:c000:c564:5400:04ff:fe26:2ba8", - "CanPort80": true - }, - { - "Name": "24b", - "RegionID": 24, - "HostName": "derp24b.tailscale.com", - "IPv4": "208.83.234.151", - "IPv6": "2001:19f0:c000:c586:5400:04ff:fe26:2ba6", - "CanPort80": true - } - ] - }, - "25": { - "RegionID": 25, - "RegionCode": "nai", - "RegionName": "Nairobi", - "Latitude": -1.286389, - "Longitude": 36.817222, - "Nodes": [ - { - "Name": "25c", - "RegionID": 25, - "HostName": "derp25c.tailscale.com", - "IPv4": "102.67.167.37", - "IPv6": "2c0f:edb0:2000:1::2c7", - "CanPort80": true - }, - { - "Name": "25d", - "RegionID": 25, - "HostName": "derp25d.tailscale.com", - "IPv4": "102.67.167.188", - "IPv6": "2c0f:edb0:2000:1::188", - "CanPort80": true - }, - { - "Name": "25b", - "RegionID": 25, - "HostName": "derp25b.tailscale.com", - "IPv4": "102.67.167.245", - "IPv6": "2c0f:edb0:2000:1::2e9", - "CanPort80": true - } - ] - }, - "26": { - "RegionID": 26, - "RegionCode": "nue", - "RegionName": "Nuremberg", - "Latitude": 49.453889, - "Longitude": 11.0775, - "Nodes": [ - { - "Name": "26c", - "RegionID": 26, - "HostName": "derp26c.tailscale.com", - "IPv4": "49.12.193.137", - "IPv6": "2a01:4f8:1c1c:5c70::1", - "CanPort80": true - }, - { - "Name": "26d", - "RegionID": 26, - "HostName": "derp26d.tailscale.com", - "IPv4": "49.13.204.141", - "IPv6": "2a01:4f8:1c0c:7d06::1", - "CanPort80": true - }, - { - "Name": "26b", - "RegionID": 26, - "HostName": "derp26b.tailscale.com", - "IPv4": "167.235.72.200", - "IPv6": "2a01:4f8:1c1c:47b6::1", - "CanPort80": true - } - ] - }, - "27": { - "RegionID": 27, - "RegionCode": "iad", - "RegionName": "Ashburn", - "Latitude": 39.03, - "Longitude": -77.471111, - "Nodes": [ - { - "Name": "27d", - "RegionID": 27, - "HostName": "derp27d.tailscale.com", - "IPv4": "178.156.152.106", - "IPv6": "2a01:4ff:f0:3c8e::1", - "CanPort80": true - }, - { - "Name": "27c", - "RegionID": 27, - "HostName": "derp27c.tailscale.com", - "IPv4": "178.156.152.91", - "IPv6": "2a01:4ff:f0:3913::1", - "CanPort80": true - }, - { - "Name": "27e", - "RegionID": 27, - "HostName": "derp27e.tailscale.com", - "IPv4": "178.156.134.232", - "IPv6": "2a01:4ff:f0:28d4::1", - "CanPort80": true - }, - { - "Name": "27b", - "RegionID": 27, - "HostName": "derp27b.tailscale.com", - "IPv4": "5.161.218.233", - "IPv6": "2a01:4ff:f0:3db9::1", - "CanPort80": true - } - ] - }, - "28": { - "RegionID": 28, - "RegionCode": "hel", - "RegionName": "Helsinki", - "Latitude": 60.170833, - "Longitude": 24.9375, - "Nodes": [ - { - "Name": "28c", - "RegionID": 28, - "HostName": "derp28c.tailscale.com", - "IPv4": "95.217.2.165", - "IPv6": "2a01:4f9:c012:cd74::1", - "CanPort80": true - }, - { - "Name": "28d", - "RegionID": 28, - "HostName": "derp28d.tailscale.com", - "IPv4": "157.180.28.32", - "IPv6": "2a01:4f9:c012:2e5b::1", - "CanPort80": true - }, - { - "Name": "28b", - "RegionID": 28, - "HostName": "derp28b.tailscale.com", - "IPv4": "65.109.143.62", - "IPv6": "2a01:4f9:c012:d55c::1", - "CanPort80": true - } - ] - }, - "3": { - "RegionID": 3, - "RegionCode": "sin", - "RegionName": "Singapore", - "Latitude": 1.3521, - "Longitude": 103.8198, - "Nodes": [ - { - "Name": "3g", - "RegionID": 3, - "HostName": "derp3g.tailscale.com", - "IPv4": "172.237.72.79", - "IPv6": "2600:3c15::2000:adff:fe08:6fab", - "CanPort80": true - }, - { - "Name": "3f", - "RegionID": 3, - "HostName": "derp3f.tailscale.com", - "IPv4": "172.237.72.8", - "IPv6": "2600:3c15::2000:53ff:fe48:a668", - "CanPort80": true - }, - { - "Name": "3h", - "RegionID": 3, - "HostName": "derp3h.tailscale.com", - "IPv4": "172.237.66.30", - "IPv6": "2600:3c15::2000:3dff:fe44:50aa", - "CanPort80": true - }, - { - "Name": "3e", - "RegionID": 3, - "HostName": "derp3e.tailscale.com", - "IPv4": "172.237.72.43", - "IPv6": "2600:3c15::2000:6cff:fee4:d799", - "CanPort80": true - } - ] - }, - "4": { - "RegionID": 4, - "RegionCode": "fra", - "RegionName": "Frankfurt", - "Latitude": 50.1109, - "Longitude": 8.6821, - "Nodes": [ - { - "Name": "4h", - "RegionID": 4, - "HostName": "derp4h.tailscale.com", - "IPv4": "185.40.234.77", - "IPv6": "2a00:dd80:20::bcf", - "CanPort80": true - }, - { - "Name": "4g", - "RegionID": 4, - "HostName": "derp4g.tailscale.com", - "IPv4": "185.40.234.113", - "IPv6": "2a00:dd80:20::8f", - "CanPort80": true - }, - { - "Name": "4i", - "RegionID": 4, - "HostName": "derp4i.tailscale.com", - "IPv4": "185.40.234.53", - "IPv6": "2a00:dd80:20::8a6", - "CanPort80": true - }, - { - "Name": "4f", - "RegionID": 4, - "HostName": "derp4f.tailscale.com", - "IPv4": "185.40.234.219", - "IPv6": "2a00:dd80:20::a25", - "CanPort80": true - } - ] - }, - "5": { - "RegionID": 5, - "RegionCode": "syd", - "RegionName": "Sydney", - "Latitude": -33.867778, - "Longitude": 151.21, - "Nodes": [ - { - "Name": "5f", - "RegionID": 5, - "HostName": "derp5f.tailscale.com", - "IPv4": "172.105.166.103", - "IPv6": "2400:8907::2000:ccff:fe1f:80da", - "CanPort80": true - }, - { - "Name": "5g", - "RegionID": 5, - "HostName": "derp5g.tailscale.com", - "IPv4": "172.105.169.57", - "IPv6": "2400:8907::2000:2fff:fea7:57f4", - "CanPort80": true - }, - { - "Name": "5e", - "RegionID": 5, - "HostName": "derp5e.tailscale.com", - "IPv4": "172.105.179.230", - "IPv6": "2400:8907::2000:ceff:fe8d:4f4e", - "CanPort80": true - } - ] - }, - "6": { - "RegionID": 6, - "RegionCode": "blr", - "RegionName": "Bengaluru", - "Latitude": 12.9716, - "Longitude": 77.5946, - "Nodes": [ - { - "Name": "6a", - "RegionID": 6, - "HostName": "derp6.tailscale.com", - "IPv4": "68.183.90.120", - "IPv6": "2400:6180:100:d0::982:d001", - "CanPort80": true - } - ] - }, - "7": { - "RegionID": 7, - "RegionCode": "tok", - "RegionName": "Tokyo", - "Latitude": 35.6764, - "Longitude": 139.65, - "Nodes": [ - { - "Name": "7g", - "RegionID": 7, - "HostName": "derp7g.tailscale.com", - "IPv4": "172.238.6.179", - "IPv6": "2600:3c18::2000:3fff:fe80:3ebd", - "CanPort80": true - }, - { - "Name": "7f", - "RegionID": 7, - "HostName": "derp7f.tailscale.com", - "IPv4": "172.238.6.34", - "IPv6": "2600:3c18::2000:acff:fe8e:3ed5", - "CanPort80": true - }, - { - "Name": "7h", - "RegionID": 7, - "HostName": "derp7h.tailscale.com", - "IPv4": "172.237.28.183", - "IPv6": "2600:3c18::2000:b1ff:fea9:4560", - "CanPort80": true - }, - { - "Name": "7e", - "RegionID": 7, - "HostName": "derp7e.tailscale.com", - "IPv4": "172.238.6.180", - "IPv6": "2600:3c18::2000:60ff:fe0f:6e83", - "STUNOnly": true, - "CanPort80": true - } - ] - }, - "8": { - "RegionID": 8, - "RegionCode": "lhr", - "RegionName": "London", - "Latitude": 51.5072, - "Longitude": 0.1276, - "Nodes": [ - { - "Name": "8f", - "RegionID": 8, - "HostName": "derp8f.tailscale.com", - "IPv4": "176.58.88.183", - "IPv6": "2a00:dd80:3a::dfa", - "CanPort80": true - }, - { - "Name": "8g", - "RegionID": 8, - "HostName": "derp8g.tailscale.com", - "IPv4": "176.58.92.254", - "IPv6": "2a00:dd80:3a::ed", - "CanPort80": true - }, - { - "Name": "8e", - "RegionID": 8, - "HostName": "derp8e.tailscale.com", - "IPv4": "176.58.92.144", - "IPv6": "2a00:dd80:3a::b33", - "CanPort80": true - } - ] - }, - "9": { - "RegionID": 9, - "RegionCode": "dfw", - "RegionName": "Dallas", - "Latitude": 32.779167, - "Longitude": -96.808889, - "Nodes": [ - { - "Name": "9e", - "RegionID": 9, - "HostName": "derp9e.tailscale.com", - "IPv4": "192.73.248.83", - "IPv6": "2607:f740:100::359", - "CanPort80": true - }, - { - "Name": "9f", - "RegionID": 9, - "HostName": "derp9f.tailscale.com", - "IPv4": "209.177.156.197", - "IPv6": "2607:f740:100::cad", - "CanPort80": true - }, - { - "Name": "9d", - "RegionID": 9, - "HostName": "derp9d.tailscale.com", - "IPv4": "209.177.156.94", - "IPv6": "2607:f740:100::c05", - "CanPort80": true - } - ] - } - } - }, - "DisplayMessages": null, - "TKAEnabled": false, - "TKAHead": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", - "Domain": "kratail2tid@passkey", - "DomainAuditLogID": "", - "UserProfiles": { - "1260082990019555": { - "ID": 1260082990019555, - "LoginName": "tagged-devices", - "DisplayName": "Tagged Devices" - }, - "6294409699640722": { - "ID": 6294409699640722, - "LoginName": "multi-exit-router.tail78f774.ts.net", - "DisplayName": "multi-exit-router" - } - } + ] } }, "router-a": { - "commands": { - "packet_filter_rules": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/router-a/tailscaled.sock debug localapi POST debug-packet-filter-rules", - "packet_filter_matches": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/router-a/tailscaled.sock debug localapi POST debug-packet-filter-matches" - }, "packet_filter_rules": null, - "packet_filter_matches": [], - "whois": { - "100.124.195.93": { - "peer_name": "exit-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/router-a/tailscaled.sock whois --json 100.124.195.93", - "response": null - }, - "100.116.18.24": { - "peer_name": "exit-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/router-a/tailscaled.sock whois --json 100.116.18.24", - "response": null - }, - "100.85.66.106": { - "peer_name": "exit-node", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/router-a/tailscaled.sock whois --json 100.85.66.106", - "response": null - }, - "100.107.162.14": { - "peer_name": "group-a-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/router-a/tailscaled.sock whois --json 100.107.162.14", - "response": null - }, - "100.77.135.18": { - "peer_name": "group-b-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/router-a/tailscaled.sock whois --json 100.77.135.18", - "response": null - }, - "100.105.127.107": { - "peer_name": "multi-exit-router", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/router-a/tailscaled.sock whois --json 100.105.127.107", - "response": null - }, - "100.65.172.123": { - "peer_name": "router-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/router-a/tailscaled.sock whois --json 100.65.172.123", - "response": null - }, - "100.92.142.61": { - "peer_name": "subnet-router", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/router-a/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/router-a/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/router-a/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/router-a/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/router-a/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/router-a/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/router-a/tailscaled.sock whois --json 100.90.199.68", - "response": null - } - }, "netmap": { - "SelfNode": { - "ID": 50590507314324, - "StableID": "n3kktkvuP111CNTRL", - "Name": "router-a.tail78f774.ts.net.", - "User": 50590507314324, - "Key": "nodekey:b4566fef38b3b2b15684fc8890f5fbaea4525b467825f57a02801969a5ed2b7b", - "DiscoKey": "discokey:368ba711a8394633b4626eb7cd8e6a2df90d8e554505dc032ea9658ceee0f731", - "Addresses": ["100.109.43.124/32", "fd7a:115c:a1e0::a537:2b7c/128"], - "AllowedIPs": ["100.109.43.124/32", "fd7a:115c:a1e0::a537:2b7c/128", "10.44.0.0/16"], - "Endpoints": ["77.164.248.136:34130", "10.65.0.27:34130", "172.17.0.1:34130"], - "Hostinfo": { - "Hostname": "router-a", - "RoutableIPs": ["10.44.0.0/16"], - "RequestTags": ["tag:router-a"], - "Services": [ - { "Proto": "peerapi4", "Port": 49439 }, - { "Proto": "peerapi6", "Port": 49439 }, - { "Proto": "peerapi-dns-proxy", "Port": 1 } - ] - }, - "Created": "2026-03-28T10:38:11.734910312Z", - "Tags": ["tag:router-a"], - "PrimaryRoutes": ["10.44.0.0/16"], - "MachineAuthorized": true, - "CapMap": { - "https://tailscale.com/cap/file-sharing": null, - "https://tailscale.com/cap/is-owner": null, - "https://tailscale.com/cap/ssh": null, - "https://tailscale.com/cap/tailnet-lock": null, - "probe-udp-lifetime": null, - "ssh-behavior-v1": null, - "ssh-env-vars": null, - "store-appc-routes": null, - "tailnet-display-name": ["kratail2tid@passkey"] - }, - "ComputedName": "router-a", - "ComputedNameWithHost": "router-a" - }, - "AllCaps": [ - "https://tailscale.com/cap/ssh", - "ssh-behavior-v1", - "ssh-env-vars", - "store-appc-routes", - "https://tailscale.com/cap/is-owner", - "https://tailscale.com/cap/tailnet-lock", - "probe-udp-lifetime", - "tailnet-display-name", - "https://tailscale.com/cap/file-sharing" - ], - "NodeKey": "nodekey:b4566fef38b3b2b15684fc8890f5fbaea4525b467825f57a02801969a5ed2b7b", - "MachineKey": "mkey:868ba8a45654990c1c153c5ce33ef50ddd8d769841335e42decda4462d1dcf4e", "Peers": [], - "DNS": { - "Routes": { - "tail78f774.ts.net.": null, - "ts.net.": [{ "Addr": "199.247.155.53" }, { "Addr": "2620:111:8007::53" }] - }, - "Domains": ["tail78f774.ts.net"], - "Proxied": true, - "ExitNodeFilteredSet": [".ts.net", ".tailscale.net"] - }, - "PacketFilter": [], - "PacketFilterRules": null, - "SSHPolicy": { "rules": [] }, - "CollectServices": false, - "DERPMap": { - "Regions": { - "1": { - "RegionID": 1, - "RegionCode": "nyc", - "RegionName": "New York City", - "Latitude": 40.7128, - "Longitude": -74.006, - "Nodes": [ - { - "Name": "1h", - "RegionID": 1, - "HostName": "derp1h.tailscale.com", - "IPv4": "199.38.181.93", - "IPv6": "2607:f740:f::afd", - "CanPort80": true - }, - { - "Name": "1g", - "RegionID": 1, - "HostName": "derp1g.tailscale.com", - "IPv4": "209.177.145.120", - "IPv6": "2607:f740:f::3eb", - "CanPort80": true - }, - { - "Name": "1i", - "RegionID": 1, - "HostName": "derp1i.tailscale.com", - "IPv4": "199.38.181.103", - "IPv6": "2607:f740:f::e19", - "CanPort80": true - }, - { - "Name": "1f", - "RegionID": 1, - "HostName": "derp1f.tailscale.com", - "IPv4": "199.38.181.104", - "IPv6": "2607:f740:f::bc", - "CanPort80": true - } - ] - }, - "10": { - "RegionID": 10, - "RegionCode": "sea", - "RegionName": "Seattle", - "Latitude": 47.609722, - "Longitude": -122.333056, - "Nodes": [ - { - "Name": "10c", - "RegionID": 10, - "HostName": "derp10c.tailscale.com", - "IPv4": "192.73.240.121", - "IPv6": "2607:f740:14::40c", - "CanPort80": true - }, - { - "Name": "10d", - "RegionID": 10, - "HostName": "derp10d.tailscale.com", - "IPv4": "192.73.240.132", - "IPv6": "2607:f740:14::500", - "CanPort80": true - }, - { - "Name": "10b", - "RegionID": 10, - "HostName": "derp10b.tailscale.com", - "IPv4": "192.73.240.161", - "IPv6": "2607:f740:14::61c", - "CanPort80": true - } - ] - }, - "11": { - "RegionID": 11, - "RegionCode": "sao", - "RegionName": "São Paulo", - "Latitude": -23.55, - "Longitude": -46.633333, - "Nodes": [ - { - "Name": "11f", - "RegionID": 11, - "HostName": "derp11f.tailscale.com", - "IPv4": "172.237.61.197", - "IPv6": "2600:3c0d::2000:3bff:fe44:6166", - "CanPort80": true - }, - { - "Name": "11g", - "RegionID": 11, - "HostName": "derp11g.tailscale.com", - "IPv4": "172.237.61.190", - "IPv6": "2600:3c0d::2000:62ff:febe:2e67", - "CanPort80": true - }, - { - "Name": "11e", - "RegionID": 11, - "HostName": "derp11e.tailscale.com", - "IPv4": "172.237.61.194", - "IPv6": "2600:3c0d::2000:d2ff:fe43:1790", - "CanPort80": true - } - ] - }, - "12": { - "RegionID": 12, - "RegionCode": "ord", - "RegionName": "Chicago", - "Latitude": 41.881944, - "Longitude": -87.627778, - "Nodes": [ - { - "Name": "12e", - "RegionID": 12, - "HostName": "derp12e.tailscale.com", - "IPv4": "209.177.158.15", - "IPv6": "2607:f740:e::b17", - "CanPort80": true - }, - { - "Name": "12f", - "RegionID": 12, - "HostName": "derp12f.tailscale.com", - "IPv4": "199.38.182.118", - "IPv6": "2607:f740:e::4c8", - "CanPort80": true - }, - { - "Name": "12d", - "RegionID": 12, - "HostName": "derp12d.tailscale.com", - "IPv4": "209.177.158.246", - "IPv6": "2607:f740:e::811", - "CanPort80": true - } - ] - }, - "13": { - "RegionID": 13, - "RegionCode": "den", - "RegionName": "Denver", - "Latitude": 39.7392, - "Longitude": -104.9849, - "Nodes": [ - { - "Name": "13c", - "RegionID": 13, - "HostName": "derp13c.tailscale.com", - "IPv4": "192.73.242.28", - "IPv6": "2607:f740:16::5c", - "CanPort80": true - }, - { - "Name": "13d", - "RegionID": 13, - "HostName": "derp13d.tailscale.com", - "IPv4": "192.73.242.204", - "IPv6": "2607:f740:16::c23", - "CanPort80": true - }, - { - "Name": "13b", - "RegionID": 13, - "HostName": "derp13b.tailscale.com", - "IPv4": "192.73.242.187", - "IPv6": "2607:f740:16::640", - "CanPort80": true - } - ] - }, - "14": { - "RegionID": 14, - "RegionCode": "ams", - "RegionName": "Amsterdam", - "Latitude": 52.372778, - "Longitude": 4.893611, - "Nodes": [ - { - "Name": "14c", - "RegionID": 14, - "HostName": "derp14c.tailscale.com", - "IPv4": "176.58.93.147", - "IPv6": "2a00:dd80:3c::b09", - "CanPort80": true - }, - { - "Name": "14d", - "RegionID": 14, - "HostName": "derp14d.tailscale.com", - "IPv4": "176.58.93.154", - "IPv6": "2a00:dd80:3c::3d5", - "CanPort80": true - }, - { - "Name": "14b", - "RegionID": 14, - "HostName": "derp14b.tailscale.com", - "IPv4": "176.58.93.248", - "IPv6": "2a00:dd80:3c::807", - "CanPort80": true - } - ] - }, - "15": { - "RegionID": 15, - "RegionCode": "jnb", - "RegionName": "Johannesburg", - "Latitude": -26.204444, - "Longitude": 28.045556, - "Nodes": [ - { - "Name": "15c", - "RegionID": 15, - "HostName": "derp15c.tailscale.com", - "IPv4": "102.67.165.185", - "IPv6": "2c0f:edb0:0:10::b59", - "CanPort80": true - }, - { - "Name": "15d", - "RegionID": 15, - "HostName": "derp15d.tailscale.com", - "IPv4": "102.67.165.36", - "IPv6": "2c0f:edb0:0:10::599", - "CanPort80": true - }, - { - "Name": "15b", - "RegionID": 15, - "HostName": "derp15b.tailscale.com", - "IPv4": "102.67.165.90", - "IPv6": "2c0f:edb0:0:10::963", - "CanPort80": true - } - ] - }, - "16": { - "RegionID": 16, - "RegionCode": "mia", - "RegionName": "Miami", - "Latitude": 25.78, - "Longitude": -80.21, - "Nodes": [ - { - "Name": "16c", - "RegionID": 16, - "HostName": "derp16c.tailscale.com", - "IPv4": "192.73.243.229", - "IPv6": "2607:f740:17::4e4", - "CanPort80": true - }, - { - "Name": "16d", - "RegionID": 16, - "HostName": "derp16d.tailscale.com", - "IPv4": "192.73.243.141", - "IPv6": "2607:f740:17::475", - "CanPort80": true - }, - { - "Name": "16b", - "RegionID": 16, - "HostName": "derp16b.tailscale.com", - "IPv4": "192.73.243.135", - "IPv6": "2607:f740:17::476", - "CanPort80": true - } - ] - }, - "17": { - "RegionID": 17, - "RegionCode": "lax", - "RegionName": "Los Angeles", - "Latitude": 34.05, - "Longitude": -118.25, - "Nodes": [ - { - "Name": "17c", - "RegionID": 17, - "HostName": "derp17c.tailscale.com", - "IPv4": "208.111.40.12", - "IPv6": "2607:f740:c::10", - "CanPort80": true - }, - { - "Name": "17d", - "RegionID": 17, - "HostName": "derp17d.tailscale.com", - "IPv4": "208.111.40.216", - "IPv6": "2607:f740:c::e1b", - "CanPort80": true - }, - { - "Name": "17b", - "RegionID": 17, - "HostName": "derp17b.tailscale.com", - "IPv4": "192.73.244.245", - "IPv6": "2607:f740:c::646", - "CanPort80": true - } - ] - }, - "18": { - "RegionID": 18, - "RegionCode": "par", - "RegionName": "Paris", - "Latitude": 48.856667, - "Longitude": 2.352222, - "Nodes": [ - { - "Name": "18c", - "RegionID": 18, - "HostName": "derp18c.tailscale.com", - "IPv4": "176.58.90.207", - "IPv6": "2a00:dd80:3e::c19", - "CanPort80": true - }, - { - "Name": "18d", - "RegionID": 18, - "HostName": "derp18d.tailscale.com", - "IPv4": "176.58.90.104", - "IPv6": "2a00:dd80:3e::f2e", - "CanPort80": true - }, - { - "Name": "18b", - "RegionID": 18, - "HostName": "derp18b.tailscale.com", - "IPv4": "176.58.90.147", - "IPv6": "2a00:dd80:3e::363", - "CanPort80": true - } - ] - }, - "19": { - "RegionID": 19, - "RegionCode": "mad", - "RegionName": "Madrid", - "Latitude": 40.416944, - "Longitude": -3.703333, - "Nodes": [ - { - "Name": "19c", - "RegionID": 19, - "HostName": "derp19c.tailscale.com", - "IPv4": "45.159.97.61", - "IPv6": "2a00:dd80:14:10::20", - "CanPort80": true - }, - { - "Name": "19d", - "RegionID": 19, - "HostName": "derp19d.tailscale.com", - "IPv4": "45.159.97.233", - "IPv6": "2a00:dd80:14:10::34a", - "CanPort80": true - }, - { - "Name": "19b", - "RegionID": 19, - "HostName": "derp19b.tailscale.com", - "IPv4": "45.159.97.144", - "IPv6": "2a00:dd80:14:10::335", - "CanPort80": true - } - ] - }, - "2": { - "RegionID": 2, - "RegionCode": "sfo", - "RegionName": "San Francisco", - "Latitude": 37.7775, - "Longitude": -122.416389, - "Nodes": [ - { - "Name": "2e", - "RegionID": 2, - "HostName": "derp2e.tailscale.com", - "IPv4": "192.73.252.134", - "IPv6": "2607:f740:0:3f::44c", - "CanPort80": true - }, - { - "Name": "2f", - "RegionID": 2, - "HostName": "derp2f.tailscale.com", - "IPv4": "208.111.34.178", - "IPv6": "2607:f740:0:3f::f4", - "CanPort80": true - }, - { - "Name": "2d", - "RegionID": 2, - "HostName": "derp2d.tailscale.com", - "IPv4": "192.73.252.65", - "IPv6": "2607:f740:0:3f::287", - "CanPort80": true - } - ] - }, - "20": { - "RegionID": 20, - "RegionCode": "hkg", - "RegionName": "Hong Kong", - "Latitude": 22.3193, - "Longitude": 114.1694, - "Nodes": [ - { - "Name": "20c", - "RegionID": 20, - "HostName": "derp20c.tailscale.com", - "IPv4": "205.147.105.30", - "IPv6": "2403:2500:8000:1::5fb", - "CanPort80": true - }, - { - "Name": "20d", - "RegionID": 20, - "HostName": "derp20d.tailscale.com", - "IPv4": "205.147.105.78", - "IPv6": "2403:2500:8000:1::e9a", - "CanPort80": true - }, - { - "Name": "20b", - "RegionID": 20, - "HostName": "derp20b.tailscale.com", - "IPv4": "103.6.84.152", - "IPv6": "2403:2500:8000:1::ef6", - "CanPort80": true - } - ] - }, - "21": { - "RegionID": 21, - "RegionCode": "tor", - "RegionName": "Toronto", - "Latitude": 43.741667, - "Longitude": -79.373333, - "Nodes": [ - { - "Name": "21c", - "RegionID": 21, - "HostName": "derp21c.tailscale.com", - "IPv4": "162.248.221.215", - "IPv6": "2607:f740:50::f10", - "CanPort80": true - }, - { - "Name": "21d", - "RegionID": 21, - "HostName": "derp21d.tailscale.com", - "IPv4": "162.248.221.248", - "IPv6": "2607:f740:50::ca4", - "CanPort80": true - }, - { - "Name": "21b", - "RegionID": 21, - "HostName": "derp21b.tailscale.com", - "IPv4": "162.248.221.199", - "IPv6": "2607:f740:50::1d1", - "CanPort80": true - } - ] - }, - "22": { - "RegionID": 22, - "RegionCode": "waw", - "RegionName": "Warsaw", - "Latitude": 52.23, - "Longitude": 21.011111, - "Nodes": [ - { - "Name": "22c", - "RegionID": 22, - "HostName": "derp22c.tailscale.com", - "IPv4": "45.159.98.253", - "IPv6": "2a00:dd80:40:100::3f", - "CanPort80": true - }, - { - "Name": "22d", - "RegionID": 22, - "HostName": "derp22d.tailscale.com", - "IPv4": "45.159.98.145", - "IPv6": "2a00:dd80:40:100::211", - "CanPort80": true - }, - { - "Name": "22b", - "RegionID": 22, - "HostName": "derp22b.tailscale.com", - "IPv4": "45.159.98.196", - "IPv6": "2a00:dd80:40:100::316", - "CanPort80": true - } - ] - }, - "23": { - "RegionID": 23, - "RegionCode": "dbi", - "RegionName": "Dubai", - "Latitude": 25.263056, - "Longitude": 55.297222, - "Nodes": [ - { - "Name": "23c", - "RegionID": 23, - "HostName": "derp23c.tailscale.com", - "IPv4": "185.34.3.207", - "IPv6": "2a00:dd80:3f:100::a50", - "CanPort80": true - }, - { - "Name": "23d", - "RegionID": 23, - "HostName": "derp23d.tailscale.com", - "IPv4": "185.34.3.75", - "IPv6": "2a00:dd80:3f:100::97e", - "CanPort80": true - }, - { - "Name": "23b", - "RegionID": 23, - "HostName": "derp23b.tailscale.com", - "IPv4": "185.34.3.232", - "IPv6": "2a00:dd80:3f:100::76f", - "CanPort80": true - } - ] - }, - "24": { - "RegionID": 24, - "RegionCode": "hnl", - "RegionName": "Honolulu", - "Latitude": 21.306944, - "Longitude": -157.858333, - "Nodes": [ - { - "Name": "24c", - "RegionID": 24, - "HostName": "derp24c.tailscale.com", - "IPv4": "208.83.233.233", - "IPv6": "2001:19f0:c000:c591:5400:04ff:fe26:2c5f", - "CanPort80": true - }, - { - "Name": "24d", - "RegionID": 24, - "HostName": "derp24d.tailscale.com", - "IPv4": "208.72.155.133", - "IPv6": "2001:19f0:c000:c564:5400:04ff:fe26:2ba8", - "CanPort80": true - }, - { - "Name": "24b", - "RegionID": 24, - "HostName": "derp24b.tailscale.com", - "IPv4": "208.83.234.151", - "IPv6": "2001:19f0:c000:c586:5400:04ff:fe26:2ba6", - "CanPort80": true - } - ] - }, - "25": { - "RegionID": 25, - "RegionCode": "nai", - "RegionName": "Nairobi", - "Latitude": -1.286389, - "Longitude": 36.817222, - "Nodes": [ - { - "Name": "25c", - "RegionID": 25, - "HostName": "derp25c.tailscale.com", - "IPv4": "102.67.167.37", - "IPv6": "2c0f:edb0:2000:1::2c7", - "CanPort80": true - }, - { - "Name": "25d", - "RegionID": 25, - "HostName": "derp25d.tailscale.com", - "IPv4": "102.67.167.188", - "IPv6": "2c0f:edb0:2000:1::188", - "CanPort80": true - }, - { - "Name": "25b", - "RegionID": 25, - "HostName": "derp25b.tailscale.com", - "IPv4": "102.67.167.245", - "IPv6": "2c0f:edb0:2000:1::2e9", - "CanPort80": true - } - ] - }, - "26": { - "RegionID": 26, - "RegionCode": "nue", - "RegionName": "Nuremberg", - "Latitude": 49.453889, - "Longitude": 11.0775, - "Nodes": [ - { - "Name": "26c", - "RegionID": 26, - "HostName": "derp26c.tailscale.com", - "IPv4": "49.12.193.137", - "IPv6": "2a01:4f8:1c1c:5c70::1", - "CanPort80": true - }, - { - "Name": "26d", - "RegionID": 26, - "HostName": "derp26d.tailscale.com", - "IPv4": "49.13.204.141", - "IPv6": "2a01:4f8:1c0c:7d06::1", - "CanPort80": true - }, - { - "Name": "26b", - "RegionID": 26, - "HostName": "derp26b.tailscale.com", - "IPv4": "167.235.72.200", - "IPv6": "2a01:4f8:1c1c:47b6::1", - "CanPort80": true - } - ] - }, - "27": { - "RegionID": 27, - "RegionCode": "iad", - "RegionName": "Ashburn", - "Latitude": 39.03, - "Longitude": -77.471111, - "Nodes": [ - { - "Name": "27d", - "RegionID": 27, - "HostName": "derp27d.tailscale.com", - "IPv4": "178.156.152.106", - "IPv6": "2a01:4ff:f0:3c8e::1", - "CanPort80": true - }, - { - "Name": "27c", - "RegionID": 27, - "HostName": "derp27c.tailscale.com", - "IPv4": "178.156.152.91", - "IPv6": "2a01:4ff:f0:3913::1", - "CanPort80": true - }, - { - "Name": "27e", - "RegionID": 27, - "HostName": "derp27e.tailscale.com", - "IPv4": "178.156.134.232", - "IPv6": "2a01:4ff:f0:28d4::1", - "CanPort80": true - }, - { - "Name": "27b", - "RegionID": 27, - "HostName": "derp27b.tailscale.com", - "IPv4": "5.161.218.233", - "IPv6": "2a01:4ff:f0:3db9::1", - "CanPort80": true - } - ] - }, - "28": { - "RegionID": 28, - "RegionCode": "hel", - "RegionName": "Helsinki", - "Latitude": 60.170833, - "Longitude": 24.9375, - "Nodes": [ - { - "Name": "28c", - "RegionID": 28, - "HostName": "derp28c.tailscale.com", - "IPv4": "95.217.2.165", - "IPv6": "2a01:4f9:c012:cd74::1", - "CanPort80": true - }, - { - "Name": "28d", - "RegionID": 28, - "HostName": "derp28d.tailscale.com", - "IPv4": "157.180.28.32", - "IPv6": "2a01:4f9:c012:2e5b::1", - "CanPort80": true - }, - { - "Name": "28b", - "RegionID": 28, - "HostName": "derp28b.tailscale.com", - "IPv4": "65.109.143.62", - "IPv6": "2a01:4f9:c012:d55c::1", - "CanPort80": true - } - ] - }, - "3": { - "RegionID": 3, - "RegionCode": "sin", - "RegionName": "Singapore", - "Latitude": 1.3521, - "Longitude": 103.8198, - "Nodes": [ - { - "Name": "3g", - "RegionID": 3, - "HostName": "derp3g.tailscale.com", - "IPv4": "172.237.72.79", - "IPv6": "2600:3c15::2000:adff:fe08:6fab", - "CanPort80": true - }, - { - "Name": "3f", - "RegionID": 3, - "HostName": "derp3f.tailscale.com", - "IPv4": "172.237.72.8", - "IPv6": "2600:3c15::2000:53ff:fe48:a668", - "CanPort80": true - }, - { - "Name": "3h", - "RegionID": 3, - "HostName": "derp3h.tailscale.com", - "IPv4": "172.237.66.30", - "IPv6": "2600:3c15::2000:3dff:fe44:50aa", - "CanPort80": true - }, - { - "Name": "3e", - "RegionID": 3, - "HostName": "derp3e.tailscale.com", - "IPv4": "172.237.72.43", - "IPv6": "2600:3c15::2000:6cff:fee4:d799", - "CanPort80": true - } - ] - }, - "4": { - "RegionID": 4, - "RegionCode": "fra", - "RegionName": "Frankfurt", - "Latitude": 50.1109, - "Longitude": 8.6821, - "Nodes": [ - { - "Name": "4h", - "RegionID": 4, - "HostName": "derp4h.tailscale.com", - "IPv4": "185.40.234.77", - "IPv6": "2a00:dd80:20::bcf", - "CanPort80": true - }, - { - "Name": "4g", - "RegionID": 4, - "HostName": "derp4g.tailscale.com", - "IPv4": "185.40.234.113", - "IPv6": "2a00:dd80:20::8f", - "CanPort80": true - }, - { - "Name": "4i", - "RegionID": 4, - "HostName": "derp4i.tailscale.com", - "IPv4": "185.40.234.53", - "IPv6": "2a00:dd80:20::8a6", - "CanPort80": true - }, - { - "Name": "4f", - "RegionID": 4, - "HostName": "derp4f.tailscale.com", - "IPv4": "185.40.234.219", - "IPv6": "2a00:dd80:20::a25", - "CanPort80": true - } - ] - }, - "5": { - "RegionID": 5, - "RegionCode": "syd", - "RegionName": "Sydney", - "Latitude": -33.867778, - "Longitude": 151.21, - "Nodes": [ - { - "Name": "5f", - "RegionID": 5, - "HostName": "derp5f.tailscale.com", - "IPv4": "172.105.166.103", - "IPv6": "2400:8907::2000:ccff:fe1f:80da", - "CanPort80": true - }, - { - "Name": "5g", - "RegionID": 5, - "HostName": "derp5g.tailscale.com", - "IPv4": "172.105.169.57", - "IPv6": "2400:8907::2000:2fff:fea7:57f4", - "CanPort80": true - }, - { - "Name": "5e", - "RegionID": 5, - "HostName": "derp5e.tailscale.com", - "IPv4": "172.105.179.230", - "IPv6": "2400:8907::2000:ceff:fe8d:4f4e", - "CanPort80": true - } - ] - }, - "6": { - "RegionID": 6, - "RegionCode": "blr", - "RegionName": "Bengaluru", - "Latitude": 12.9716, - "Longitude": 77.5946, - "Nodes": [ - { - "Name": "6a", - "RegionID": 6, - "HostName": "derp6.tailscale.com", - "IPv4": "68.183.90.120", - "IPv6": "2400:6180:100:d0::982:d001", - "CanPort80": true - } - ] - }, - "7": { - "RegionID": 7, - "RegionCode": "tok", - "RegionName": "Tokyo", - "Latitude": 35.6764, - "Longitude": 139.65, - "Nodes": [ - { - "Name": "7g", - "RegionID": 7, - "HostName": "derp7g.tailscale.com", - "IPv4": "172.238.6.179", - "IPv6": "2600:3c18::2000:3fff:fe80:3ebd", - "CanPort80": true - }, - { - "Name": "7f", - "RegionID": 7, - "HostName": "derp7f.tailscale.com", - "IPv4": "172.238.6.34", - "IPv6": "2600:3c18::2000:acff:fe8e:3ed5", - "CanPort80": true - }, - { - "Name": "7h", - "RegionID": 7, - "HostName": "derp7h.tailscale.com", - "IPv4": "172.237.28.183", - "IPv6": "2600:3c18::2000:b1ff:fea9:4560", - "CanPort80": true - }, - { - "Name": "7e", - "RegionID": 7, - "HostName": "derp7e.tailscale.com", - "IPv4": "172.238.6.180", - "IPv6": "2600:3c18::2000:60ff:fe0f:6e83", - "STUNOnly": true, - "CanPort80": true - } - ] - }, - "8": { - "RegionID": 8, - "RegionCode": "lhr", - "RegionName": "London", - "Latitude": 51.5072, - "Longitude": 0.1276, - "Nodes": [ - { - "Name": "8f", - "RegionID": 8, - "HostName": "derp8f.tailscale.com", - "IPv4": "176.58.88.183", - "IPv6": "2a00:dd80:3a::dfa", - "CanPort80": true - }, - { - "Name": "8g", - "RegionID": 8, - "HostName": "derp8g.tailscale.com", - "IPv4": "176.58.92.254", - "IPv6": "2a00:dd80:3a::ed", - "CanPort80": true - }, - { - "Name": "8e", - "RegionID": 8, - "HostName": "derp8e.tailscale.com", - "IPv4": "176.58.92.144", - "IPv6": "2a00:dd80:3a::b33", - "CanPort80": true - } - ] - }, - "9": { - "RegionID": 9, - "RegionCode": "dfw", - "RegionName": "Dallas", - "Latitude": 32.779167, - "Longitude": -96.808889, - "Nodes": [ - { - "Name": "9e", - "RegionID": 9, - "HostName": "derp9e.tailscale.com", - "IPv4": "192.73.248.83", - "IPv6": "2607:f740:100::359", - "CanPort80": true - }, - { - "Name": "9f", - "RegionID": 9, - "HostName": "derp9f.tailscale.com", - "IPv4": "209.177.156.197", - "IPv6": "2607:f740:100::cad", - "CanPort80": true - }, - { - "Name": "9d", - "RegionID": 9, - "HostName": "derp9d.tailscale.com", - "IPv4": "209.177.156.94", - "IPv6": "2607:f740:100::c05", - "CanPort80": true - } - ] - } - } - }, - "DisplayMessages": null, - "TKAEnabled": false, - "TKAHead": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", - "Domain": "kratail2tid@passkey", - "DomainAuditLogID": "", - "UserProfiles": { - "50590507314324": { - "ID": 50590507314324, - "LoginName": "router-a.tail78f774.ts.net", - "DisplayName": "router-a" - } - } + "PacketFilterRules": null } }, "router-b": { - "commands": { - "packet_filter_rules": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/router-b/tailscaled.sock debug localapi POST debug-packet-filter-rules", - "packet_filter_matches": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/router-b/tailscaled.sock debug localapi POST debug-packet-filter-matches" - }, "packet_filter_rules": null, - "packet_filter_matches": [], - "whois": { - "100.124.195.93": { - "peer_name": "exit-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/router-b/tailscaled.sock whois --json 100.124.195.93", - "response": null - }, - "100.116.18.24": { - "peer_name": "exit-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/router-b/tailscaled.sock whois --json 100.116.18.24", - "response": null - }, - "100.85.66.106": { - "peer_name": "exit-node", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/router-b/tailscaled.sock whois --json 100.85.66.106", - "response": null - }, - "100.107.162.14": { - "peer_name": "group-a-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/router-b/tailscaled.sock whois --json 100.107.162.14", - "response": null - }, - "100.77.135.18": { - "peer_name": "group-b-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/router-b/tailscaled.sock whois --json 100.77.135.18", - "response": null - }, - "100.105.127.107": { - "peer_name": "multi-exit-router", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/router-b/tailscaled.sock whois --json 100.105.127.107", - "response": null - }, - "100.109.43.124": { - "peer_name": "router-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/router-b/tailscaled.sock whois --json 100.109.43.124", - "response": null - }, - "100.92.142.61": { - "peer_name": "subnet-router", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/router-b/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/router-b/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/router-b/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/router-b/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/router-b/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/router-b/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/router-b/tailscaled.sock whois --json 100.90.199.68", - "response": null - } - }, "netmap": { - "SelfNode": { - "ID": 1399889648409786, - "StableID": "nPHvXBj1wB11CNTRL", - "Name": "router-b.tail78f774.ts.net.", - "User": 1399889648409786, - "Key": "nodekey:4e6d3473c516cea37bcefdf4368932c623fd91c24aee1aacc27ca8165a41ac7a", - "DiscoKey": "discokey:dd5532635b8e3ddf25186e36671c16dd17c005c8b6a6862f4b5cc4e4f459e705", - "Addresses": ["100.65.172.123/32", "fd7a:115c:a1e0::5a37:ac7c/128"], - "AllowedIPs": ["100.65.172.123/32", "fd7a:115c:a1e0::5a37:ac7c/128", "10.55.0.0/16"], - "Endpoints": ["77.164.248.136:35931", "10.65.0.27:35931", "172.17.0.1:35931"], - "Hostinfo": { - "Hostname": "router-b", - "RoutableIPs": ["10.55.0.0/16"], - "RequestTags": ["tag:router-b"], - "Services": [ - { "Proto": "peerapi4", "Port": 58804 }, - { "Proto": "peerapi6", "Port": 58804 }, - { "Proto": "peerapi-dns-proxy", "Port": 1 } - ] - }, - "Created": "2026-03-28T10:38:15.42735258Z", - "Tags": ["tag:router-b"], - "PrimaryRoutes": ["10.55.0.0/16"], - "MachineAuthorized": true, - "CapMap": { - "https://tailscale.com/cap/file-sharing": null, - "https://tailscale.com/cap/is-owner": null, - "https://tailscale.com/cap/ssh": null, - "https://tailscale.com/cap/tailnet-lock": null, - "probe-udp-lifetime": null, - "ssh-behavior-v1": null, - "ssh-env-vars": null, - "store-appc-routes": null, - "tailnet-display-name": ["kratail2tid@passkey"] - }, - "ComputedName": "router-b", - "ComputedNameWithHost": "router-b" - }, - "AllCaps": [ - "probe-udp-lifetime", - "store-appc-routes", - "https://tailscale.com/cap/is-owner", - "https://tailscale.com/cap/tailnet-lock", - "ssh-behavior-v1", - "https://tailscale.com/cap/ssh", - "https://tailscale.com/cap/file-sharing", - "ssh-env-vars", - "tailnet-display-name" - ], - "NodeKey": "nodekey:4e6d3473c516cea37bcefdf4368932c623fd91c24aee1aacc27ca8165a41ac7a", - "MachineKey": "mkey:d040ca033391d3dedae7b2ad7ec3334646cda7aeca501780bdaa37addec3c228", "Peers": [], - "DNS": { - "Routes": { - "tail78f774.ts.net.": null, - "ts.net.": [{ "Addr": "199.247.155.53" }, { "Addr": "2620:111:8007::53" }] - }, - "Domains": ["tail78f774.ts.net"], - "Proxied": true, - "ExitNodeFilteredSet": [".ts.net", ".tailscale.net"] - }, - "PacketFilter": [], - "PacketFilterRules": null, - "SSHPolicy": { "rules": [] }, - "CollectServices": false, - "DERPMap": { - "Regions": { - "1": { - "RegionID": 1, - "RegionCode": "nyc", - "RegionName": "New York City", - "Latitude": 40.7128, - "Longitude": -74.006, - "Nodes": [ - { - "Name": "1h", - "RegionID": 1, - "HostName": "derp1h.tailscale.com", - "IPv4": "199.38.181.93", - "IPv6": "2607:f740:f::afd", - "CanPort80": true - }, - { - "Name": "1g", - "RegionID": 1, - "HostName": "derp1g.tailscale.com", - "IPv4": "209.177.145.120", - "IPv6": "2607:f740:f::3eb", - "CanPort80": true - }, - { - "Name": "1i", - "RegionID": 1, - "HostName": "derp1i.tailscale.com", - "IPv4": "199.38.181.103", - "IPv6": "2607:f740:f::e19", - "CanPort80": true - }, - { - "Name": "1f", - "RegionID": 1, - "HostName": "derp1f.tailscale.com", - "IPv4": "199.38.181.104", - "IPv6": "2607:f740:f::bc", - "CanPort80": true - } - ] - }, - "10": { - "RegionID": 10, - "RegionCode": "sea", - "RegionName": "Seattle", - "Latitude": 47.609722, - "Longitude": -122.333056, - "Nodes": [ - { - "Name": "10c", - "RegionID": 10, - "HostName": "derp10c.tailscale.com", - "IPv4": "192.73.240.121", - "IPv6": "2607:f740:14::40c", - "CanPort80": true - }, - { - "Name": "10d", - "RegionID": 10, - "HostName": "derp10d.tailscale.com", - "IPv4": "192.73.240.132", - "IPv6": "2607:f740:14::500", - "CanPort80": true - }, - { - "Name": "10b", - "RegionID": 10, - "HostName": "derp10b.tailscale.com", - "IPv4": "192.73.240.161", - "IPv6": "2607:f740:14::61c", - "CanPort80": true - } - ] - }, - "11": { - "RegionID": 11, - "RegionCode": "sao", - "RegionName": "São Paulo", - "Latitude": -23.55, - "Longitude": -46.633333, - "Nodes": [ - { - "Name": "11f", - "RegionID": 11, - "HostName": "derp11f.tailscale.com", - "IPv4": "172.237.61.197", - "IPv6": "2600:3c0d::2000:3bff:fe44:6166", - "CanPort80": true - }, - { - "Name": "11g", - "RegionID": 11, - "HostName": "derp11g.tailscale.com", - "IPv4": "172.237.61.190", - "IPv6": "2600:3c0d::2000:62ff:febe:2e67", - "CanPort80": true - }, - { - "Name": "11e", - "RegionID": 11, - "HostName": "derp11e.tailscale.com", - "IPv4": "172.237.61.194", - "IPv6": "2600:3c0d::2000:d2ff:fe43:1790", - "CanPort80": true - } - ] - }, - "12": { - "RegionID": 12, - "RegionCode": "ord", - "RegionName": "Chicago", - "Latitude": 41.881944, - "Longitude": -87.627778, - "Nodes": [ - { - "Name": "12e", - "RegionID": 12, - "HostName": "derp12e.tailscale.com", - "IPv4": "209.177.158.15", - "IPv6": "2607:f740:e::b17", - "CanPort80": true - }, - { - "Name": "12f", - "RegionID": 12, - "HostName": "derp12f.tailscale.com", - "IPv4": "199.38.182.118", - "IPv6": "2607:f740:e::4c8", - "CanPort80": true - }, - { - "Name": "12d", - "RegionID": 12, - "HostName": "derp12d.tailscale.com", - "IPv4": "209.177.158.246", - "IPv6": "2607:f740:e::811", - "CanPort80": true - } - ] - }, - "13": { - "RegionID": 13, - "RegionCode": "den", - "RegionName": "Denver", - "Latitude": 39.7392, - "Longitude": -104.9849, - "Nodes": [ - { - "Name": "13c", - "RegionID": 13, - "HostName": "derp13c.tailscale.com", - "IPv4": "192.73.242.28", - "IPv6": "2607:f740:16::5c", - "CanPort80": true - }, - { - "Name": "13d", - "RegionID": 13, - "HostName": "derp13d.tailscale.com", - "IPv4": "192.73.242.204", - "IPv6": "2607:f740:16::c23", - "CanPort80": true - }, - { - "Name": "13b", - "RegionID": 13, - "HostName": "derp13b.tailscale.com", - "IPv4": "192.73.242.187", - "IPv6": "2607:f740:16::640", - "CanPort80": true - } - ] - }, - "14": { - "RegionID": 14, - "RegionCode": "ams", - "RegionName": "Amsterdam", - "Latitude": 52.372778, - "Longitude": 4.893611, - "Nodes": [ - { - "Name": "14c", - "RegionID": 14, - "HostName": "derp14c.tailscale.com", - "IPv4": "176.58.93.147", - "IPv6": "2a00:dd80:3c::b09", - "CanPort80": true - }, - { - "Name": "14d", - "RegionID": 14, - "HostName": "derp14d.tailscale.com", - "IPv4": "176.58.93.154", - "IPv6": "2a00:dd80:3c::3d5", - "CanPort80": true - }, - { - "Name": "14b", - "RegionID": 14, - "HostName": "derp14b.tailscale.com", - "IPv4": "176.58.93.248", - "IPv6": "2a00:dd80:3c::807", - "CanPort80": true - } - ] - }, - "15": { - "RegionID": 15, - "RegionCode": "jnb", - "RegionName": "Johannesburg", - "Latitude": -26.204444, - "Longitude": 28.045556, - "Nodes": [ - { - "Name": "15c", - "RegionID": 15, - "HostName": "derp15c.tailscale.com", - "IPv4": "102.67.165.185", - "IPv6": "2c0f:edb0:0:10::b59", - "CanPort80": true - }, - { - "Name": "15d", - "RegionID": 15, - "HostName": "derp15d.tailscale.com", - "IPv4": "102.67.165.36", - "IPv6": "2c0f:edb0:0:10::599", - "CanPort80": true - }, - { - "Name": "15b", - "RegionID": 15, - "HostName": "derp15b.tailscale.com", - "IPv4": "102.67.165.90", - "IPv6": "2c0f:edb0:0:10::963", - "CanPort80": true - } - ] - }, - "16": { - "RegionID": 16, - "RegionCode": "mia", - "RegionName": "Miami", - "Latitude": 25.78, - "Longitude": -80.21, - "Nodes": [ - { - "Name": "16c", - "RegionID": 16, - "HostName": "derp16c.tailscale.com", - "IPv4": "192.73.243.229", - "IPv6": "2607:f740:17::4e4", - "CanPort80": true - }, - { - "Name": "16d", - "RegionID": 16, - "HostName": "derp16d.tailscale.com", - "IPv4": "192.73.243.141", - "IPv6": "2607:f740:17::475", - "CanPort80": true - }, - { - "Name": "16b", - "RegionID": 16, - "HostName": "derp16b.tailscale.com", - "IPv4": "192.73.243.135", - "IPv6": "2607:f740:17::476", - "CanPort80": true - } - ] - }, - "17": { - "RegionID": 17, - "RegionCode": "lax", - "RegionName": "Los Angeles", - "Latitude": 34.05, - "Longitude": -118.25, - "Nodes": [ - { - "Name": "17c", - "RegionID": 17, - "HostName": "derp17c.tailscale.com", - "IPv4": "208.111.40.12", - "IPv6": "2607:f740:c::10", - "CanPort80": true - }, - { - "Name": "17d", - "RegionID": 17, - "HostName": "derp17d.tailscale.com", - "IPv4": "208.111.40.216", - "IPv6": "2607:f740:c::e1b", - "CanPort80": true - }, - { - "Name": "17b", - "RegionID": 17, - "HostName": "derp17b.tailscale.com", - "IPv4": "192.73.244.245", - "IPv6": "2607:f740:c::646", - "CanPort80": true - } - ] - }, - "18": { - "RegionID": 18, - "RegionCode": "par", - "RegionName": "Paris", - "Latitude": 48.856667, - "Longitude": 2.352222, - "Nodes": [ - { - "Name": "18c", - "RegionID": 18, - "HostName": "derp18c.tailscale.com", - "IPv4": "176.58.90.207", - "IPv6": "2a00:dd80:3e::c19", - "CanPort80": true - }, - { - "Name": "18d", - "RegionID": 18, - "HostName": "derp18d.tailscale.com", - "IPv4": "176.58.90.104", - "IPv6": "2a00:dd80:3e::f2e", - "CanPort80": true - }, - { - "Name": "18b", - "RegionID": 18, - "HostName": "derp18b.tailscale.com", - "IPv4": "176.58.90.147", - "IPv6": "2a00:dd80:3e::363", - "CanPort80": true - } - ] - }, - "19": { - "RegionID": 19, - "RegionCode": "mad", - "RegionName": "Madrid", - "Latitude": 40.416944, - "Longitude": -3.703333, - "Nodes": [ - { - "Name": "19c", - "RegionID": 19, - "HostName": "derp19c.tailscale.com", - "IPv4": "45.159.97.61", - "IPv6": "2a00:dd80:14:10::20", - "CanPort80": true - }, - { - "Name": "19d", - "RegionID": 19, - "HostName": "derp19d.tailscale.com", - "IPv4": "45.159.97.233", - "IPv6": "2a00:dd80:14:10::34a", - "CanPort80": true - }, - { - "Name": "19b", - "RegionID": 19, - "HostName": "derp19b.tailscale.com", - "IPv4": "45.159.97.144", - "IPv6": "2a00:dd80:14:10::335", - "CanPort80": true - } - ] - }, - "2": { - "RegionID": 2, - "RegionCode": "sfo", - "RegionName": "San Francisco", - "Latitude": 37.7775, - "Longitude": -122.416389, - "Nodes": [ - { - "Name": "2e", - "RegionID": 2, - "HostName": "derp2e.tailscale.com", - "IPv4": "192.73.252.134", - "IPv6": "2607:f740:0:3f::44c", - "CanPort80": true - }, - { - "Name": "2f", - "RegionID": 2, - "HostName": "derp2f.tailscale.com", - "IPv4": "208.111.34.178", - "IPv6": "2607:f740:0:3f::f4", - "CanPort80": true - }, - { - "Name": "2d", - "RegionID": 2, - "HostName": "derp2d.tailscale.com", - "IPv4": "192.73.252.65", - "IPv6": "2607:f740:0:3f::287", - "CanPort80": true - } - ] - }, - "20": { - "RegionID": 20, - "RegionCode": "hkg", - "RegionName": "Hong Kong", - "Latitude": 22.3193, - "Longitude": 114.1694, - "Nodes": [ - { - "Name": "20c", - "RegionID": 20, - "HostName": "derp20c.tailscale.com", - "IPv4": "205.147.105.30", - "IPv6": "2403:2500:8000:1::5fb", - "CanPort80": true - }, - { - "Name": "20d", - "RegionID": 20, - "HostName": "derp20d.tailscale.com", - "IPv4": "205.147.105.78", - "IPv6": "2403:2500:8000:1::e9a", - "CanPort80": true - }, - { - "Name": "20b", - "RegionID": 20, - "HostName": "derp20b.tailscale.com", - "IPv4": "103.6.84.152", - "IPv6": "2403:2500:8000:1::ef6", - "CanPort80": true - } - ] - }, - "21": { - "RegionID": 21, - "RegionCode": "tor", - "RegionName": "Toronto", - "Latitude": 43.741667, - "Longitude": -79.373333, - "Nodes": [ - { - "Name": "21c", - "RegionID": 21, - "HostName": "derp21c.tailscale.com", - "IPv4": "162.248.221.215", - "IPv6": "2607:f740:50::f10", - "CanPort80": true - }, - { - "Name": "21d", - "RegionID": 21, - "HostName": "derp21d.tailscale.com", - "IPv4": "162.248.221.248", - "IPv6": "2607:f740:50::ca4", - "CanPort80": true - }, - { - "Name": "21b", - "RegionID": 21, - "HostName": "derp21b.tailscale.com", - "IPv4": "162.248.221.199", - "IPv6": "2607:f740:50::1d1", - "CanPort80": true - } - ] - }, - "22": { - "RegionID": 22, - "RegionCode": "waw", - "RegionName": "Warsaw", - "Latitude": 52.23, - "Longitude": 21.011111, - "Nodes": [ - { - "Name": "22c", - "RegionID": 22, - "HostName": "derp22c.tailscale.com", - "IPv4": "45.159.98.253", - "IPv6": "2a00:dd80:40:100::3f", - "CanPort80": true - }, - { - "Name": "22d", - "RegionID": 22, - "HostName": "derp22d.tailscale.com", - "IPv4": "45.159.98.145", - "IPv6": "2a00:dd80:40:100::211", - "CanPort80": true - }, - { - "Name": "22b", - "RegionID": 22, - "HostName": "derp22b.tailscale.com", - "IPv4": "45.159.98.196", - "IPv6": "2a00:dd80:40:100::316", - "CanPort80": true - } - ] - }, - "23": { - "RegionID": 23, - "RegionCode": "dbi", - "RegionName": "Dubai", - "Latitude": 25.263056, - "Longitude": 55.297222, - "Nodes": [ - { - "Name": "23c", - "RegionID": 23, - "HostName": "derp23c.tailscale.com", - "IPv4": "185.34.3.207", - "IPv6": "2a00:dd80:3f:100::a50", - "CanPort80": true - }, - { - "Name": "23d", - "RegionID": 23, - "HostName": "derp23d.tailscale.com", - "IPv4": "185.34.3.75", - "IPv6": "2a00:dd80:3f:100::97e", - "CanPort80": true - }, - { - "Name": "23b", - "RegionID": 23, - "HostName": "derp23b.tailscale.com", - "IPv4": "185.34.3.232", - "IPv6": "2a00:dd80:3f:100::76f", - "CanPort80": true - } - ] - }, - "24": { - "RegionID": 24, - "RegionCode": "hnl", - "RegionName": "Honolulu", - "Latitude": 21.306944, - "Longitude": -157.858333, - "Nodes": [ - { - "Name": "24c", - "RegionID": 24, - "HostName": "derp24c.tailscale.com", - "IPv4": "208.83.233.233", - "IPv6": "2001:19f0:c000:c591:5400:04ff:fe26:2c5f", - "CanPort80": true - }, - { - "Name": "24d", - "RegionID": 24, - "HostName": "derp24d.tailscale.com", - "IPv4": "208.72.155.133", - "IPv6": "2001:19f0:c000:c564:5400:04ff:fe26:2ba8", - "CanPort80": true - }, - { - "Name": "24b", - "RegionID": 24, - "HostName": "derp24b.tailscale.com", - "IPv4": "208.83.234.151", - "IPv6": "2001:19f0:c000:c586:5400:04ff:fe26:2ba6", - "CanPort80": true - } - ] - }, - "25": { - "RegionID": 25, - "RegionCode": "nai", - "RegionName": "Nairobi", - "Latitude": -1.286389, - "Longitude": 36.817222, - "Nodes": [ - { - "Name": "25c", - "RegionID": 25, - "HostName": "derp25c.tailscale.com", - "IPv4": "102.67.167.37", - "IPv6": "2c0f:edb0:2000:1::2c7", - "CanPort80": true - }, - { - "Name": "25d", - "RegionID": 25, - "HostName": "derp25d.tailscale.com", - "IPv4": "102.67.167.188", - "IPv6": "2c0f:edb0:2000:1::188", - "CanPort80": true - }, - { - "Name": "25b", - "RegionID": 25, - "HostName": "derp25b.tailscale.com", - "IPv4": "102.67.167.245", - "IPv6": "2c0f:edb0:2000:1::2e9", - "CanPort80": true - } - ] - }, - "26": { - "RegionID": 26, - "RegionCode": "nue", - "RegionName": "Nuremberg", - "Latitude": 49.453889, - "Longitude": 11.0775, - "Nodes": [ - { - "Name": "26c", - "RegionID": 26, - "HostName": "derp26c.tailscale.com", - "IPv4": "49.12.193.137", - "IPv6": "2a01:4f8:1c1c:5c70::1", - "CanPort80": true - }, - { - "Name": "26d", - "RegionID": 26, - "HostName": "derp26d.tailscale.com", - "IPv4": "49.13.204.141", - "IPv6": "2a01:4f8:1c0c:7d06::1", - "CanPort80": true - }, - { - "Name": "26b", - "RegionID": 26, - "HostName": "derp26b.tailscale.com", - "IPv4": "167.235.72.200", - "IPv6": "2a01:4f8:1c1c:47b6::1", - "CanPort80": true - } - ] - }, - "27": { - "RegionID": 27, - "RegionCode": "iad", - "RegionName": "Ashburn", - "Latitude": 39.03, - "Longitude": -77.471111, - "Nodes": [ - { - "Name": "27d", - "RegionID": 27, - "HostName": "derp27d.tailscale.com", - "IPv4": "178.156.152.106", - "IPv6": "2a01:4ff:f0:3c8e::1", - "CanPort80": true - }, - { - "Name": "27c", - "RegionID": 27, - "HostName": "derp27c.tailscale.com", - "IPv4": "178.156.152.91", - "IPv6": "2a01:4ff:f0:3913::1", - "CanPort80": true - }, - { - "Name": "27e", - "RegionID": 27, - "HostName": "derp27e.tailscale.com", - "IPv4": "178.156.134.232", - "IPv6": "2a01:4ff:f0:28d4::1", - "CanPort80": true - }, - { - "Name": "27b", - "RegionID": 27, - "HostName": "derp27b.tailscale.com", - "IPv4": "5.161.218.233", - "IPv6": "2a01:4ff:f0:3db9::1", - "CanPort80": true - } - ] - }, - "28": { - "RegionID": 28, - "RegionCode": "hel", - "RegionName": "Helsinki", - "Latitude": 60.170833, - "Longitude": 24.9375, - "Nodes": [ - { - "Name": "28c", - "RegionID": 28, - "HostName": "derp28c.tailscale.com", - "IPv4": "95.217.2.165", - "IPv6": "2a01:4f9:c012:cd74::1", - "CanPort80": true - }, - { - "Name": "28d", - "RegionID": 28, - "HostName": "derp28d.tailscale.com", - "IPv4": "157.180.28.32", - "IPv6": "2a01:4f9:c012:2e5b::1", - "CanPort80": true - }, - { - "Name": "28b", - "RegionID": 28, - "HostName": "derp28b.tailscale.com", - "IPv4": "65.109.143.62", - "IPv6": "2a01:4f9:c012:d55c::1", - "CanPort80": true - } - ] - }, - "3": { - "RegionID": 3, - "RegionCode": "sin", - "RegionName": "Singapore", - "Latitude": 1.3521, - "Longitude": 103.8198, - "Nodes": [ - { - "Name": "3g", - "RegionID": 3, - "HostName": "derp3g.tailscale.com", - "IPv4": "172.237.72.79", - "IPv6": "2600:3c15::2000:adff:fe08:6fab", - "CanPort80": true - }, - { - "Name": "3f", - "RegionID": 3, - "HostName": "derp3f.tailscale.com", - "IPv4": "172.237.72.8", - "IPv6": "2600:3c15::2000:53ff:fe48:a668", - "CanPort80": true - }, - { - "Name": "3h", - "RegionID": 3, - "HostName": "derp3h.tailscale.com", - "IPv4": "172.237.66.30", - "IPv6": "2600:3c15::2000:3dff:fe44:50aa", - "CanPort80": true - }, - { - "Name": "3e", - "RegionID": 3, - "HostName": "derp3e.tailscale.com", - "IPv4": "172.237.72.43", - "IPv6": "2600:3c15::2000:6cff:fee4:d799", - "CanPort80": true - } - ] - }, - "4": { - "RegionID": 4, - "RegionCode": "fra", - "RegionName": "Frankfurt", - "Latitude": 50.1109, - "Longitude": 8.6821, - "Nodes": [ - { - "Name": "4h", - "RegionID": 4, - "HostName": "derp4h.tailscale.com", - "IPv4": "185.40.234.77", - "IPv6": "2a00:dd80:20::bcf", - "CanPort80": true - }, - { - "Name": "4g", - "RegionID": 4, - "HostName": "derp4g.tailscale.com", - "IPv4": "185.40.234.113", - "IPv6": "2a00:dd80:20::8f", - "CanPort80": true - }, - { - "Name": "4i", - "RegionID": 4, - "HostName": "derp4i.tailscale.com", - "IPv4": "185.40.234.53", - "IPv6": "2a00:dd80:20::8a6", - "CanPort80": true - }, - { - "Name": "4f", - "RegionID": 4, - "HostName": "derp4f.tailscale.com", - "IPv4": "185.40.234.219", - "IPv6": "2a00:dd80:20::a25", - "CanPort80": true - } - ] - }, - "5": { - "RegionID": 5, - "RegionCode": "syd", - "RegionName": "Sydney", - "Latitude": -33.867778, - "Longitude": 151.21, - "Nodes": [ - { - "Name": "5f", - "RegionID": 5, - "HostName": "derp5f.tailscale.com", - "IPv4": "172.105.166.103", - "IPv6": "2400:8907::2000:ccff:fe1f:80da", - "CanPort80": true - }, - { - "Name": "5g", - "RegionID": 5, - "HostName": "derp5g.tailscale.com", - "IPv4": "172.105.169.57", - "IPv6": "2400:8907::2000:2fff:fea7:57f4", - "CanPort80": true - }, - { - "Name": "5e", - "RegionID": 5, - "HostName": "derp5e.tailscale.com", - "IPv4": "172.105.179.230", - "IPv6": "2400:8907::2000:ceff:fe8d:4f4e", - "CanPort80": true - } - ] - }, - "6": { - "RegionID": 6, - "RegionCode": "blr", - "RegionName": "Bengaluru", - "Latitude": 12.9716, - "Longitude": 77.5946, - "Nodes": [ - { - "Name": "6a", - "RegionID": 6, - "HostName": "derp6.tailscale.com", - "IPv4": "68.183.90.120", - "IPv6": "2400:6180:100:d0::982:d001", - "CanPort80": true - } - ] - }, - "7": { - "RegionID": 7, - "RegionCode": "tok", - "RegionName": "Tokyo", - "Latitude": 35.6764, - "Longitude": 139.65, - "Nodes": [ - { - "Name": "7g", - "RegionID": 7, - "HostName": "derp7g.tailscale.com", - "IPv4": "172.238.6.179", - "IPv6": "2600:3c18::2000:3fff:fe80:3ebd", - "CanPort80": true - }, - { - "Name": "7f", - "RegionID": 7, - "HostName": "derp7f.tailscale.com", - "IPv4": "172.238.6.34", - "IPv6": "2600:3c18::2000:acff:fe8e:3ed5", - "CanPort80": true - }, - { - "Name": "7h", - "RegionID": 7, - "HostName": "derp7h.tailscale.com", - "IPv4": "172.237.28.183", - "IPv6": "2600:3c18::2000:b1ff:fea9:4560", - "CanPort80": true - }, - { - "Name": "7e", - "RegionID": 7, - "HostName": "derp7e.tailscale.com", - "IPv4": "172.238.6.180", - "IPv6": "2600:3c18::2000:60ff:fe0f:6e83", - "STUNOnly": true, - "CanPort80": true - } - ] - }, - "8": { - "RegionID": 8, - "RegionCode": "lhr", - "RegionName": "London", - "Latitude": 51.5072, - "Longitude": 0.1276, - "Nodes": [ - { - "Name": "8f", - "RegionID": 8, - "HostName": "derp8f.tailscale.com", - "IPv4": "176.58.88.183", - "IPv6": "2a00:dd80:3a::dfa", - "CanPort80": true - }, - { - "Name": "8g", - "RegionID": 8, - "HostName": "derp8g.tailscale.com", - "IPv4": "176.58.92.254", - "IPv6": "2a00:dd80:3a::ed", - "CanPort80": true - }, - { - "Name": "8e", - "RegionID": 8, - "HostName": "derp8e.tailscale.com", - "IPv4": "176.58.92.144", - "IPv6": "2a00:dd80:3a::b33", - "CanPort80": true - } - ] - }, - "9": { - "RegionID": 9, - "RegionCode": "dfw", - "RegionName": "Dallas", - "Latitude": 32.779167, - "Longitude": -96.808889, - "Nodes": [ - { - "Name": "9e", - "RegionID": 9, - "HostName": "derp9e.tailscale.com", - "IPv4": "192.73.248.83", - "IPv6": "2607:f740:100::359", - "CanPort80": true - }, - { - "Name": "9f", - "RegionID": 9, - "HostName": "derp9f.tailscale.com", - "IPv4": "209.177.156.197", - "IPv6": "2607:f740:100::cad", - "CanPort80": true - }, - { - "Name": "9d", - "RegionID": 9, - "HostName": "derp9d.tailscale.com", - "IPv4": "209.177.156.94", - "IPv6": "2607:f740:100::c05", - "CanPort80": true - } - ] - } - } - }, - "DisplayMessages": null, - "TKAEnabled": false, - "TKAHead": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", - "Domain": "kratail2tid@passkey", - "DomainAuditLogID": "", - "UserProfiles": { - "1399889648409786": { - "ID": 1399889648409786, - "LoginName": "router-b.tail78f774.ts.net", - "DisplayName": "router-b" - } - } + "PacketFilterRules": 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.83.200.69", "fd7a:115c:a1e0::c537:c845"], - "DstPorts": [{ "IP": "10.33.0.0/16", "Ports": { "First": 0, "Last": 65535 } }] + "SrcIPs": [ + "100.83.200.69", + "fd7a:115c:a1e0::c537:c845" + ], + "DstPorts": [ + { + "IP": "10.33.0.0/16", + "Ports": { + "First": 0, + "Last": 65535 + } + } + ] } ], - "packet_filter_matches": [ - { - "IPProto": [6, 17, 1, 58], - "Srcs": ["100.83.200.69/32", "fd7a:115c:a1e0::c537:c845/128"], - "SrcCaps": null, - "Dsts": [{ "Net": "10.33.0.0/16", "Ports": { "First": 0, "Last": 65535 } }], - "Caps": [] - } - ], - "whois": { - "100.124.195.93": { - "peer_name": "exit-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/subnet-router/tailscaled.sock whois --json 100.124.195.93", - "response": null - }, - "100.116.18.24": { - "peer_name": "exit-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/subnet-router/tailscaled.sock whois --json 100.116.18.24", - "response": null - }, - "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.107.162.14": { - "peer_name": "group-a-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/subnet-router/tailscaled.sock whois --json 100.107.162.14", - "response": null - }, - "100.77.135.18": { - "peer_name": "group-b-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/subnet-router/tailscaled.sock whois --json 100.77.135.18", - "response": null - }, - "100.105.127.107": { - "peer_name": "multi-exit-router", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/subnet-router/tailscaled.sock whois --json 100.105.127.107", - "response": null - }, - "100.109.43.124": { - "peer_name": "router-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/subnet-router/tailscaled.sock whois --json 100.109.43.124", - "response": null - }, - "100.65.172.123": { - "peer_name": "router-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/subnet-router/tailscaled.sock whois --json 100.65.172.123", - "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": { - "Node": { - "ID": 4031348162889210, - "StableID": "nf7BTTgoUY11CNTRL", - "Name": "tagged-client.tail78f774.ts.net.", - "User": 1260082990019555, - "Key": "nodekey:3011e53353e49142ea56ae11f81e0dceae0d667093d04ee086dcb1e9c5d3c844", - "DiscoKey": "discokey:64af337a7e8b61dce500da3b8f7d0a95fc6fe0e57c2f9e57b9b484a9b4acbe1e", - "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:47143", "10.65.0.27:47143", "172.17.0.1:47143"], - "HomeDERP": 8, - "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": 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 - } - }, "netmap": { - "SelfNode": { - "ID": 7489538288452506, - "StableID": "nTPEqJU2V121CNTRL", - "Name": "subnet-router.tail78f774.ts.net.", - "User": 7489538288452506, - "Key": "nodekey:887ae2351c09c3b952f1f42bdac4095ec396ebf15824a746e4193c003e9c8e3c", - "DiscoKey": "discokey:9e3167ceaf53735a2fcaa7d3a85ad3a6118274deb448326d594849275014cc56", - "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:58597", "10.65.0.27:58597", "172.17.0.1:58597"], - "Hostinfo": { - "Hostname": "subnet-router", - "RoutableIPs": ["10.33.0.0/16"], - "RequestTags": ["tag:router"], - "Services": [ - { "Proto": "peerapi4", "Port": 63250 }, - { "Proto": "peerapi6", "Port": 63250 }, - { "Proto": "peerapi-dns-proxy", "Port": 1 } - ] - }, - "Created": "2026-02-23T00:13:15.731478784Z", - "Tags": ["tag:router"], - "MachineAuthorized": true, - "CapMap": { - "https://tailscale.com/cap/file-sharing": null, - "https://tailscale.com/cap/is-owner": null, - "https://tailscale.com/cap/ssh": null, - "https://tailscale.com/cap/tailnet-lock": null, - "probe-udp-lifetime": null, - "ssh-behavior-v1": null, - "ssh-env-vars": null, - "store-appc-routes": null, - "tailnet-display-name": ["kratail2tid@passkey"] - }, - "ComputedName": "subnet-router", - "ComputedNameWithHost": "subnet-router" - }, - "AllCaps": [ - "https://tailscale.com/cap/file-sharing", - "https://tailscale.com/cap/ssh", - "https://tailscale.com/cap/is-owner", - "https://tailscale.com/cap/tailnet-lock", - "probe-udp-lifetime", - "store-appc-routes", - "tailnet-display-name", - "ssh-behavior-v1", - "ssh-env-vars" - ], - "NodeKey": "nodekey:887ae2351c09c3b952f1f42bdac4095ec396ebf15824a746e4193c003e9c8e3c", - "MachineKey": "mkey:324efa54cc51a7b4f266f6a236904c755d32b6e547a76ad3c1d1e9d348de682a", "Peers": [ { - "ID": 4031348162889210, - "StableID": "nf7BTTgoUY11CNTRL", "Name": "tagged-client.tail78f774.ts.net.", - "User": 1260082990019555, - "Key": "nodekey:3011e53353e49142ea56ae11f81e0dceae0d667093d04ee086dcb1e9c5d3c844", - "DiscoKey": "discokey:64af337a7e8b61dce500da3b8f7d0a95fc6fe0e57c2f9e57b9b484a9b4acbe1e", - "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:47143", "10.65.0.27:47143", "172.17.0.1:47143"], - "HomeDERP": 8, - "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" - } - ], - "DNS": { - "Routes": { - "tail78f774.ts.net.": null, - "ts.net.": [{ "Addr": "199.247.155.53" }, { "Addr": "2620:111:8007::53" }] - }, - "Domains": ["tail78f774.ts.net"], - "Proxied": true, - "ExitNodeFilteredSet": [".ts.net", ".tailscale.net"] - }, - "PacketFilter": [ - { - "IPProto": [6, 17, 1, 58], - "Srcs": ["100.83.200.69/32", "fd7a:115c:a1e0::c537:c845/128"], - "SrcCaps": null, - "Dsts": [{ "Net": "10.33.0.0/16", "Ports": { "First": 0, "Last": 65535 } }], - "Caps": [] + "AllowedIPs": [ + "100.83.200.69/32", + "fd7a:115c:a1e0::c537:c845/128" + ], + "PrimaryRoutes": [] } ], "PacketFilterRules": [ { - "SrcIPs": ["100.83.200.69", "fd7a:115c:a1e0::c537:c845"], - "DstPorts": [{ "IP": "10.33.0.0/16", "Ports": { "First": 0, "Last": 65535 } }] + "SrcIPs": [ + "100.83.200.69", + "fd7a:115c:a1e0::c537:c845" + ], + "DstPorts": [ + { + "IP": "10.33.0.0/16", + "Ports": { + "First": 0, + "Last": 65535 + } + } + ] } - ], - "SSHPolicy": { "rules": [] }, - "CollectServices": false, - "DERPMap": { - "Regions": { - "1": { - "RegionID": 1, - "RegionCode": "nyc", - "RegionName": "New York City", - "Latitude": 40.7128, - "Longitude": -74.006, - "Nodes": [ - { - "Name": "1h", - "RegionID": 1, - "HostName": "derp1h.tailscale.com", - "IPv4": "199.38.181.93", - "IPv6": "2607:f740:f::afd", - "CanPort80": true - }, - { - "Name": "1g", - "RegionID": 1, - "HostName": "derp1g.tailscale.com", - "IPv4": "209.177.145.120", - "IPv6": "2607:f740:f::3eb", - "CanPort80": true - }, - { - "Name": "1i", - "RegionID": 1, - "HostName": "derp1i.tailscale.com", - "IPv4": "199.38.181.103", - "IPv6": "2607:f740:f::e19", - "CanPort80": true - }, - { - "Name": "1f", - "RegionID": 1, - "HostName": "derp1f.tailscale.com", - "IPv4": "199.38.181.104", - "IPv6": "2607:f740:f::bc", - "CanPort80": true - } - ] - }, - "10": { - "RegionID": 10, - "RegionCode": "sea", - "RegionName": "Seattle", - "Latitude": 47.609722, - "Longitude": -122.333056, - "Nodes": [ - { - "Name": "10c", - "RegionID": 10, - "HostName": "derp10c.tailscale.com", - "IPv4": "192.73.240.121", - "IPv6": "2607:f740:14::40c", - "CanPort80": true - }, - { - "Name": "10d", - "RegionID": 10, - "HostName": "derp10d.tailscale.com", - "IPv4": "192.73.240.132", - "IPv6": "2607:f740:14::500", - "CanPort80": true - }, - { - "Name": "10b", - "RegionID": 10, - "HostName": "derp10b.tailscale.com", - "IPv4": "192.73.240.161", - "IPv6": "2607:f740:14::61c", - "CanPort80": true - } - ] - }, - "11": { - "RegionID": 11, - "RegionCode": "sao", - "RegionName": "São Paulo", - "Latitude": -23.55, - "Longitude": -46.633333, - "Nodes": [ - { - "Name": "11f", - "RegionID": 11, - "HostName": "derp11f.tailscale.com", - "IPv4": "172.237.61.197", - "IPv6": "2600:3c0d::2000:3bff:fe44:6166", - "CanPort80": true - }, - { - "Name": "11g", - "RegionID": 11, - "HostName": "derp11g.tailscale.com", - "IPv4": "172.237.61.190", - "IPv6": "2600:3c0d::2000:62ff:febe:2e67", - "CanPort80": true - }, - { - "Name": "11e", - "RegionID": 11, - "HostName": "derp11e.tailscale.com", - "IPv4": "172.237.61.194", - "IPv6": "2600:3c0d::2000:d2ff:fe43:1790", - "CanPort80": true - } - ] - }, - "12": { - "RegionID": 12, - "RegionCode": "ord", - "RegionName": "Chicago", - "Latitude": 41.881944, - "Longitude": -87.627778, - "Nodes": [ - { - "Name": "12e", - "RegionID": 12, - "HostName": "derp12e.tailscale.com", - "IPv4": "209.177.158.15", - "IPv6": "2607:f740:e::b17", - "CanPort80": true - }, - { - "Name": "12f", - "RegionID": 12, - "HostName": "derp12f.tailscale.com", - "IPv4": "199.38.182.118", - "IPv6": "2607:f740:e::4c8", - "CanPort80": true - }, - { - "Name": "12d", - "RegionID": 12, - "HostName": "derp12d.tailscale.com", - "IPv4": "209.177.158.246", - "IPv6": "2607:f740:e::811", - "CanPort80": true - } - ] - }, - "13": { - "RegionID": 13, - "RegionCode": "den", - "RegionName": "Denver", - "Latitude": 39.7392, - "Longitude": -104.9849, - "Nodes": [ - { - "Name": "13c", - "RegionID": 13, - "HostName": "derp13c.tailscale.com", - "IPv4": "192.73.242.28", - "IPv6": "2607:f740:16::5c", - "CanPort80": true - }, - { - "Name": "13d", - "RegionID": 13, - "HostName": "derp13d.tailscale.com", - "IPv4": "192.73.242.204", - "IPv6": "2607:f740:16::c23", - "CanPort80": true - }, - { - "Name": "13b", - "RegionID": 13, - "HostName": "derp13b.tailscale.com", - "IPv4": "192.73.242.187", - "IPv6": "2607:f740:16::640", - "CanPort80": true - } - ] - }, - "14": { - "RegionID": 14, - "RegionCode": "ams", - "RegionName": "Amsterdam", - "Latitude": 52.372778, - "Longitude": 4.893611, - "Nodes": [ - { - "Name": "14c", - "RegionID": 14, - "HostName": "derp14c.tailscale.com", - "IPv4": "176.58.93.147", - "IPv6": "2a00:dd80:3c::b09", - "CanPort80": true - }, - { - "Name": "14d", - "RegionID": 14, - "HostName": "derp14d.tailscale.com", - "IPv4": "176.58.93.154", - "IPv6": "2a00:dd80:3c::3d5", - "CanPort80": true - }, - { - "Name": "14b", - "RegionID": 14, - "HostName": "derp14b.tailscale.com", - "IPv4": "176.58.93.248", - "IPv6": "2a00:dd80:3c::807", - "CanPort80": true - } - ] - }, - "15": { - "RegionID": 15, - "RegionCode": "jnb", - "RegionName": "Johannesburg", - "Latitude": -26.204444, - "Longitude": 28.045556, - "Nodes": [ - { - "Name": "15c", - "RegionID": 15, - "HostName": "derp15c.tailscale.com", - "IPv4": "102.67.165.185", - "IPv6": "2c0f:edb0:0:10::b59", - "CanPort80": true - }, - { - "Name": "15d", - "RegionID": 15, - "HostName": "derp15d.tailscale.com", - "IPv4": "102.67.165.36", - "IPv6": "2c0f:edb0:0:10::599", - "CanPort80": true - }, - { - "Name": "15b", - "RegionID": 15, - "HostName": "derp15b.tailscale.com", - "IPv4": "102.67.165.90", - "IPv6": "2c0f:edb0:0:10::963", - "CanPort80": true - } - ] - }, - "16": { - "RegionID": 16, - "RegionCode": "mia", - "RegionName": "Miami", - "Latitude": 25.78, - "Longitude": -80.21, - "Nodes": [ - { - "Name": "16c", - "RegionID": 16, - "HostName": "derp16c.tailscale.com", - "IPv4": "192.73.243.229", - "IPv6": "2607:f740:17::4e4", - "CanPort80": true - }, - { - "Name": "16d", - "RegionID": 16, - "HostName": "derp16d.tailscale.com", - "IPv4": "192.73.243.141", - "IPv6": "2607:f740:17::475", - "CanPort80": true - }, - { - "Name": "16b", - "RegionID": 16, - "HostName": "derp16b.tailscale.com", - "IPv4": "192.73.243.135", - "IPv6": "2607:f740:17::476", - "CanPort80": true - } - ] - }, - "17": { - "RegionID": 17, - "RegionCode": "lax", - "RegionName": "Los Angeles", - "Latitude": 34.05, - "Longitude": -118.25, - "Nodes": [ - { - "Name": "17c", - "RegionID": 17, - "HostName": "derp17c.tailscale.com", - "IPv4": "208.111.40.12", - "IPv6": "2607:f740:c::10", - "CanPort80": true - }, - { - "Name": "17d", - "RegionID": 17, - "HostName": "derp17d.tailscale.com", - "IPv4": "208.111.40.216", - "IPv6": "2607:f740:c::e1b", - "CanPort80": true - }, - { - "Name": "17b", - "RegionID": 17, - "HostName": "derp17b.tailscale.com", - "IPv4": "192.73.244.245", - "IPv6": "2607:f740:c::646", - "CanPort80": true - } - ] - }, - "18": { - "RegionID": 18, - "RegionCode": "par", - "RegionName": "Paris", - "Latitude": 48.856667, - "Longitude": 2.352222, - "Nodes": [ - { - "Name": "18c", - "RegionID": 18, - "HostName": "derp18c.tailscale.com", - "IPv4": "176.58.90.207", - "IPv6": "2a00:dd80:3e::c19", - "CanPort80": true - }, - { - "Name": "18d", - "RegionID": 18, - "HostName": "derp18d.tailscale.com", - "IPv4": "176.58.90.104", - "IPv6": "2a00:dd80:3e::f2e", - "CanPort80": true - }, - { - "Name": "18b", - "RegionID": 18, - "HostName": "derp18b.tailscale.com", - "IPv4": "176.58.90.147", - "IPv6": "2a00:dd80:3e::363", - "CanPort80": true - } - ] - }, - "19": { - "RegionID": 19, - "RegionCode": "mad", - "RegionName": "Madrid", - "Latitude": 40.416944, - "Longitude": -3.703333, - "Nodes": [ - { - "Name": "19c", - "RegionID": 19, - "HostName": "derp19c.tailscale.com", - "IPv4": "45.159.97.61", - "IPv6": "2a00:dd80:14:10::20", - "CanPort80": true - }, - { - "Name": "19d", - "RegionID": 19, - "HostName": "derp19d.tailscale.com", - "IPv4": "45.159.97.233", - "IPv6": "2a00:dd80:14:10::34a", - "CanPort80": true - }, - { - "Name": "19b", - "RegionID": 19, - "HostName": "derp19b.tailscale.com", - "IPv4": "45.159.97.144", - "IPv6": "2a00:dd80:14:10::335", - "CanPort80": true - } - ] - }, - "2": { - "RegionID": 2, - "RegionCode": "sfo", - "RegionName": "San Francisco", - "Latitude": 37.7775, - "Longitude": -122.416389, - "Nodes": [ - { - "Name": "2e", - "RegionID": 2, - "HostName": "derp2e.tailscale.com", - "IPv4": "192.73.252.134", - "IPv6": "2607:f740:0:3f::44c", - "CanPort80": true - }, - { - "Name": "2f", - "RegionID": 2, - "HostName": "derp2f.tailscale.com", - "IPv4": "208.111.34.178", - "IPv6": "2607:f740:0:3f::f4", - "CanPort80": true - }, - { - "Name": "2d", - "RegionID": 2, - "HostName": "derp2d.tailscale.com", - "IPv4": "192.73.252.65", - "IPv6": "2607:f740:0:3f::287", - "CanPort80": true - } - ] - }, - "20": { - "RegionID": 20, - "RegionCode": "hkg", - "RegionName": "Hong Kong", - "Latitude": 22.3193, - "Longitude": 114.1694, - "Nodes": [ - { - "Name": "20c", - "RegionID": 20, - "HostName": "derp20c.tailscale.com", - "IPv4": "205.147.105.30", - "IPv6": "2403:2500:8000:1::5fb", - "CanPort80": true - }, - { - "Name": "20d", - "RegionID": 20, - "HostName": "derp20d.tailscale.com", - "IPv4": "205.147.105.78", - "IPv6": "2403:2500:8000:1::e9a", - "CanPort80": true - }, - { - "Name": "20b", - "RegionID": 20, - "HostName": "derp20b.tailscale.com", - "IPv4": "103.6.84.152", - "IPv6": "2403:2500:8000:1::ef6", - "CanPort80": true - } - ] - }, - "21": { - "RegionID": 21, - "RegionCode": "tor", - "RegionName": "Toronto", - "Latitude": 43.741667, - "Longitude": -79.373333, - "Nodes": [ - { - "Name": "21c", - "RegionID": 21, - "HostName": "derp21c.tailscale.com", - "IPv4": "162.248.221.215", - "IPv6": "2607:f740:50::f10", - "CanPort80": true - }, - { - "Name": "21d", - "RegionID": 21, - "HostName": "derp21d.tailscale.com", - "IPv4": "162.248.221.248", - "IPv6": "2607:f740:50::ca4", - "CanPort80": true - }, - { - "Name": "21b", - "RegionID": 21, - "HostName": "derp21b.tailscale.com", - "IPv4": "162.248.221.199", - "IPv6": "2607:f740:50::1d1", - "CanPort80": true - } - ] - }, - "22": { - "RegionID": 22, - "RegionCode": "waw", - "RegionName": "Warsaw", - "Latitude": 52.23, - "Longitude": 21.011111, - "Nodes": [ - { - "Name": "22c", - "RegionID": 22, - "HostName": "derp22c.tailscale.com", - "IPv4": "45.159.98.253", - "IPv6": "2a00:dd80:40:100::3f", - "CanPort80": true - }, - { - "Name": "22d", - "RegionID": 22, - "HostName": "derp22d.tailscale.com", - "IPv4": "45.159.98.145", - "IPv6": "2a00:dd80:40:100::211", - "CanPort80": true - }, - { - "Name": "22b", - "RegionID": 22, - "HostName": "derp22b.tailscale.com", - "IPv4": "45.159.98.196", - "IPv6": "2a00:dd80:40:100::316", - "CanPort80": true - } - ] - }, - "23": { - "RegionID": 23, - "RegionCode": "dbi", - "RegionName": "Dubai", - "Latitude": 25.263056, - "Longitude": 55.297222, - "Nodes": [ - { - "Name": "23c", - "RegionID": 23, - "HostName": "derp23c.tailscale.com", - "IPv4": "185.34.3.207", - "IPv6": "2a00:dd80:3f:100::a50", - "CanPort80": true - }, - { - "Name": "23d", - "RegionID": 23, - "HostName": "derp23d.tailscale.com", - "IPv4": "185.34.3.75", - "IPv6": "2a00:dd80:3f:100::97e", - "CanPort80": true - }, - { - "Name": "23b", - "RegionID": 23, - "HostName": "derp23b.tailscale.com", - "IPv4": "185.34.3.232", - "IPv6": "2a00:dd80:3f:100::76f", - "CanPort80": true - } - ] - }, - "24": { - "RegionID": 24, - "RegionCode": "hnl", - "RegionName": "Honolulu", - "Latitude": 21.306944, - "Longitude": -157.858333, - "Nodes": [ - { - "Name": "24c", - "RegionID": 24, - "HostName": "derp24c.tailscale.com", - "IPv4": "208.83.233.233", - "IPv6": "2001:19f0:c000:c591:5400:04ff:fe26:2c5f", - "CanPort80": true - }, - { - "Name": "24d", - "RegionID": 24, - "HostName": "derp24d.tailscale.com", - "IPv4": "208.72.155.133", - "IPv6": "2001:19f0:c000:c564:5400:04ff:fe26:2ba8", - "CanPort80": true - }, - { - "Name": "24b", - "RegionID": 24, - "HostName": "derp24b.tailscale.com", - "IPv4": "208.83.234.151", - "IPv6": "2001:19f0:c000:c586:5400:04ff:fe26:2ba6", - "CanPort80": true - } - ] - }, - "25": { - "RegionID": 25, - "RegionCode": "nai", - "RegionName": "Nairobi", - "Latitude": -1.286389, - "Longitude": 36.817222, - "Nodes": [ - { - "Name": "25c", - "RegionID": 25, - "HostName": "derp25c.tailscale.com", - "IPv4": "102.67.167.37", - "IPv6": "2c0f:edb0:2000:1::2c7", - "CanPort80": true - }, - { - "Name": "25d", - "RegionID": 25, - "HostName": "derp25d.tailscale.com", - "IPv4": "102.67.167.188", - "IPv6": "2c0f:edb0:2000:1::188", - "CanPort80": true - }, - { - "Name": "25b", - "RegionID": 25, - "HostName": "derp25b.tailscale.com", - "IPv4": "102.67.167.245", - "IPv6": "2c0f:edb0:2000:1::2e9", - "CanPort80": true - } - ] - }, - "26": { - "RegionID": 26, - "RegionCode": "nue", - "RegionName": "Nuremberg", - "Latitude": 49.453889, - "Longitude": 11.0775, - "Nodes": [ - { - "Name": "26c", - "RegionID": 26, - "HostName": "derp26c.tailscale.com", - "IPv4": "49.12.193.137", - "IPv6": "2a01:4f8:1c1c:5c70::1", - "CanPort80": true - }, - { - "Name": "26d", - "RegionID": 26, - "HostName": "derp26d.tailscale.com", - "IPv4": "49.13.204.141", - "IPv6": "2a01:4f8:1c0c:7d06::1", - "CanPort80": true - }, - { - "Name": "26b", - "RegionID": 26, - "HostName": "derp26b.tailscale.com", - "IPv4": "167.235.72.200", - "IPv6": "2a01:4f8:1c1c:47b6::1", - "CanPort80": true - } - ] - }, - "27": { - "RegionID": 27, - "RegionCode": "iad", - "RegionName": "Ashburn", - "Latitude": 39.03, - "Longitude": -77.471111, - "Nodes": [ - { - "Name": "27d", - "RegionID": 27, - "HostName": "derp27d.tailscale.com", - "IPv4": "178.156.152.106", - "IPv6": "2a01:4ff:f0:3c8e::1", - "CanPort80": true - }, - { - "Name": "27c", - "RegionID": 27, - "HostName": "derp27c.tailscale.com", - "IPv4": "178.156.152.91", - "IPv6": "2a01:4ff:f0:3913::1", - "CanPort80": true - }, - { - "Name": "27e", - "RegionID": 27, - "HostName": "derp27e.tailscale.com", - "IPv4": "178.156.134.232", - "IPv6": "2a01:4ff:f0:28d4::1", - "CanPort80": true - }, - { - "Name": "27b", - "RegionID": 27, - "HostName": "derp27b.tailscale.com", - "IPv4": "5.161.218.233", - "IPv6": "2a01:4ff:f0:3db9::1", - "CanPort80": true - } - ] - }, - "28": { - "RegionID": 28, - "RegionCode": "hel", - "RegionName": "Helsinki", - "Latitude": 60.170833, - "Longitude": 24.9375, - "Nodes": [ - { - "Name": "28c", - "RegionID": 28, - "HostName": "derp28c.tailscale.com", - "IPv4": "95.217.2.165", - "IPv6": "2a01:4f9:c012:cd74::1", - "CanPort80": true - }, - { - "Name": "28d", - "RegionID": 28, - "HostName": "derp28d.tailscale.com", - "IPv4": "157.180.28.32", - "IPv6": "2a01:4f9:c012:2e5b::1", - "CanPort80": true - }, - { - "Name": "28b", - "RegionID": 28, - "HostName": "derp28b.tailscale.com", - "IPv4": "65.109.143.62", - "IPv6": "2a01:4f9:c012:d55c::1", - "CanPort80": true - } - ] - }, - "3": { - "RegionID": 3, - "RegionCode": "sin", - "RegionName": "Singapore", - "Latitude": 1.3521, - "Longitude": 103.8198, - "Nodes": [ - { - "Name": "3g", - "RegionID": 3, - "HostName": "derp3g.tailscale.com", - "IPv4": "172.237.72.79", - "IPv6": "2600:3c15::2000:adff:fe08:6fab", - "CanPort80": true - }, - { - "Name": "3f", - "RegionID": 3, - "HostName": "derp3f.tailscale.com", - "IPv4": "172.237.72.8", - "IPv6": "2600:3c15::2000:53ff:fe48:a668", - "CanPort80": true - }, - { - "Name": "3h", - "RegionID": 3, - "HostName": "derp3h.tailscale.com", - "IPv4": "172.237.66.30", - "IPv6": "2600:3c15::2000:3dff:fe44:50aa", - "CanPort80": true - }, - { - "Name": "3e", - "RegionID": 3, - "HostName": "derp3e.tailscale.com", - "IPv4": "172.237.72.43", - "IPv6": "2600:3c15::2000:6cff:fee4:d799", - "CanPort80": true - } - ] - }, - "4": { - "RegionID": 4, - "RegionCode": "fra", - "RegionName": "Frankfurt", - "Latitude": 50.1109, - "Longitude": 8.6821, - "Nodes": [ - { - "Name": "4h", - "RegionID": 4, - "HostName": "derp4h.tailscale.com", - "IPv4": "185.40.234.77", - "IPv6": "2a00:dd80:20::bcf", - "CanPort80": true - }, - { - "Name": "4g", - "RegionID": 4, - "HostName": "derp4g.tailscale.com", - "IPv4": "185.40.234.113", - "IPv6": "2a00:dd80:20::8f", - "CanPort80": true - }, - { - "Name": "4i", - "RegionID": 4, - "HostName": "derp4i.tailscale.com", - "IPv4": "185.40.234.53", - "IPv6": "2a00:dd80:20::8a6", - "CanPort80": true - }, - { - "Name": "4f", - "RegionID": 4, - "HostName": "derp4f.tailscale.com", - "IPv4": "185.40.234.219", - "IPv6": "2a00:dd80:20::a25", - "CanPort80": true - } - ] - }, - "5": { - "RegionID": 5, - "RegionCode": "syd", - "RegionName": "Sydney", - "Latitude": -33.867778, - "Longitude": 151.21, - "Nodes": [ - { - "Name": "5f", - "RegionID": 5, - "HostName": "derp5f.tailscale.com", - "IPv4": "172.105.166.103", - "IPv6": "2400:8907::2000:ccff:fe1f:80da", - "CanPort80": true - }, - { - "Name": "5g", - "RegionID": 5, - "HostName": "derp5g.tailscale.com", - "IPv4": "172.105.169.57", - "IPv6": "2400:8907::2000:2fff:fea7:57f4", - "CanPort80": true - }, - { - "Name": "5e", - "RegionID": 5, - "HostName": "derp5e.tailscale.com", - "IPv4": "172.105.179.230", - "IPv6": "2400:8907::2000:ceff:fe8d:4f4e", - "CanPort80": true - } - ] - }, - "6": { - "RegionID": 6, - "RegionCode": "blr", - "RegionName": "Bengaluru", - "Latitude": 12.9716, - "Longitude": 77.5946, - "Nodes": [ - { - "Name": "6a", - "RegionID": 6, - "HostName": "derp6.tailscale.com", - "IPv4": "68.183.90.120", - "IPv6": "2400:6180:100:d0::982:d001", - "CanPort80": true - } - ] - }, - "7": { - "RegionID": 7, - "RegionCode": "tok", - "RegionName": "Tokyo", - "Latitude": 35.6764, - "Longitude": 139.65, - "Nodes": [ - { - "Name": "7g", - "RegionID": 7, - "HostName": "derp7g.tailscale.com", - "IPv4": "172.238.6.179", - "IPv6": "2600:3c18::2000:3fff:fe80:3ebd", - "CanPort80": true - }, - { - "Name": "7f", - "RegionID": 7, - "HostName": "derp7f.tailscale.com", - "IPv4": "172.238.6.34", - "IPv6": "2600:3c18::2000:acff:fe8e:3ed5", - "CanPort80": true - }, - { - "Name": "7h", - "RegionID": 7, - "HostName": "derp7h.tailscale.com", - "IPv4": "172.237.28.183", - "IPv6": "2600:3c18::2000:b1ff:fea9:4560", - "CanPort80": true - }, - { - "Name": "7e", - "RegionID": 7, - "HostName": "derp7e.tailscale.com", - "IPv4": "172.238.6.180", - "IPv6": "2600:3c18::2000:60ff:fe0f:6e83", - "STUNOnly": true, - "CanPort80": true - } - ] - }, - "8": { - "RegionID": 8, - "RegionCode": "lhr", - "RegionName": "London", - "Latitude": 51.5072, - "Longitude": 0.1276, - "Nodes": [ - { - "Name": "8f", - "RegionID": 8, - "HostName": "derp8f.tailscale.com", - "IPv4": "176.58.88.183", - "IPv6": "2a00:dd80:3a::dfa", - "CanPort80": true - }, - { - "Name": "8g", - "RegionID": 8, - "HostName": "derp8g.tailscale.com", - "IPv4": "176.58.92.254", - "IPv6": "2a00:dd80:3a::ed", - "CanPort80": true - }, - { - "Name": "8e", - "RegionID": 8, - "HostName": "derp8e.tailscale.com", - "IPv4": "176.58.92.144", - "IPv6": "2a00:dd80:3a::b33", - "CanPort80": true - } - ] - }, - "9": { - "RegionID": 9, - "RegionCode": "dfw", - "RegionName": "Dallas", - "Latitude": 32.779167, - "Longitude": -96.808889, - "Nodes": [ - { - "Name": "9e", - "RegionID": 9, - "HostName": "derp9e.tailscale.com", - "IPv4": "192.73.248.83", - "IPv6": "2607:f740:100::359", - "CanPort80": true - }, - { - "Name": "9f", - "RegionID": 9, - "HostName": "derp9f.tailscale.com", - "IPv4": "209.177.156.197", - "IPv6": "2607:f740:100::cad", - "CanPort80": true - }, - { - "Name": "9d", - "RegionID": 9, - "HostName": "derp9d.tailscale.com", - "IPv4": "209.177.156.94", - "IPv6": "2607:f740:100::c05", - "CanPort80": true - } - ] - } - } - }, - "DisplayMessages": null, - "TKAEnabled": false, - "TKAHead": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", - "Domain": "kratail2tid@passkey", - "DomainAuditLogID": "", - "UserProfiles": { - "1260082990019555": { - "ID": 1260082990019555, - "LoginName": "tagged-devices", - "DisplayName": "Tagged Devices" - }, - "7489538288452506": { - "ID": 7489538288452506, - "LoginName": "subnet-router.tail78f774.ts.net", - "DisplayName": "subnet-router" - } - } + ] } }, "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.124.195.93": { - "peer_name": "exit-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-client/tailscaled.sock whois --json 100.124.195.93", - "response": null - }, - "100.116.18.24": { - "peer_name": "exit-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-client/tailscaled.sock whois --json 100.116.18.24", - "response": null - }, - "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.107.162.14": { - "peer_name": "group-a-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-client/tailscaled.sock whois --json 100.107.162.14", - "response": null - }, - "100.77.135.18": { - "peer_name": "group-b-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-client/tailscaled.sock whois --json 100.77.135.18", - "response": null - }, - "100.105.127.107": { - "peer_name": "multi-exit-router", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-client/tailscaled.sock whois --json 100.105.127.107", - "response": { - "Node": { - "ID": 6294409699640722, - "StableID": "nMQuxDUk9r11CNTRL", - "Name": "multi-exit-router.tail78f774.ts.net.", - "User": 1260082990019555, - "Key": "nodekey:b854a0d64eba757cd3215c5bd78149cc0f927e35a2ad20342e88a15ead297f6a", - "DiscoKey": "discokey:762c82dd308809f511c6ac86dcc2642585837358fdd24958d55f16883c8e6c58", - "Addresses": ["100.105.127.107/32", "fd7a:115c:a1e0::ad37:7f6b/128"], - "AllowedIPs": ["100.105.127.107/32", "fd7a:115c:a1e0::ad37:7f6b/128", "10.33.0.0/16"], - "Endpoints": ["77.164.248.136:50766", "10.65.0.27:50766", "172.17.0.1:50766"], - "HomeDERP": 14, - "Hostinfo": { - "OS": "linux", - "Hostname": "multi-exit-router", - "Services": [ - { "Proto": "peerapi4", "Port": 62548 }, - { "Proto": "peerapi6", "Port": 62548 } - ] - }, - "Created": "2026-03-28T10:38:19.117098852Z", - "Cap": 131, - "Tags": ["tag:exit", "tag:router"], - "PrimaryRoutes": ["10.33.0.0/16"], - "Online": true, - "ComputedName": "multi-exit-router", - "ComputedNameWithHost": "multi-exit-router" - }, - "UserProfile": { "ID": 1260082990019555, "LoginName": "tagged-devices", "DisplayName": "Tagged Devices" }, - "CapMap": null - } - }, - "100.109.43.124": { - "peer_name": "router-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-client/tailscaled.sock whois --json 100.109.43.124", - "response": null - }, - "100.65.172.123": { - "peer_name": "router-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-client/tailscaled.sock whois --json 100.65.172.123", - "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:9e3167ceaf53735a2fcaa7d3a85ad3a6118274deb448326d594849275014cc56", - "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:58597", "10.65.0.27:58597", "172.17.0.1:58597"], - "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": 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 - } - }, "netmap": { - "SelfNode": { - "ID": 4031348162889210, - "StableID": "nf7BTTgoUY11CNTRL", - "Name": "tagged-client.tail78f774.ts.net.", - "User": 4031348162889210, - "Key": "nodekey:3011e53353e49142ea56ae11f81e0dceae0d667093d04ee086dcb1e9c5d3c844", - "DiscoKey": "discokey:64af337a7e8b61dce500da3b8f7d0a95fc6fe0e57c2f9e57b9b484a9b4acbe1e", - "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:47143", "10.65.0.27:47143", "172.17.0.1:47143"], - "Hostinfo": { - "Hostname": "tagged-client", - "RequestTags": ["tag:client"], - "Services": [ - { "Proto": "peerapi4", "Port": 41378 }, - { "Proto": "peerapi6", "Port": 41378 }, - { "Proto": "peerapi-dns-proxy", "Port": 1 } - ] - }, - "Created": "2026-02-23T00:13:11.017324028Z", - "Tags": ["tag:client"], - "MachineAuthorized": true, - "CapMap": { - "https://tailscale.com/cap/file-sharing": null, - "https://tailscale.com/cap/is-owner": null, - "https://tailscale.com/cap/ssh": null, - "https://tailscale.com/cap/tailnet-lock": null, - "probe-udp-lifetime": null, - "ssh-behavior-v1": null, - "ssh-env-vars": null, - "store-appc-routes": null, - "tailnet-display-name": ["kratail2tid@passkey"] - }, - "ComputedName": "tagged-client", - "ComputedNameWithHost": "tagged-client" - }, - "AllCaps": [ - "tailnet-display-name", - "https://tailscale.com/cap/ssh", - "https://tailscale.com/cap/is-owner", - "ssh-behavior-v1", - "https://tailscale.com/cap/tailnet-lock", - "ssh-env-vars", - "probe-udp-lifetime", - "store-appc-routes", - "https://tailscale.com/cap/file-sharing" - ], - "NodeKey": "nodekey:3011e53353e49142ea56ae11f81e0dceae0d667093d04ee086dcb1e9c5d3c844", - "MachineKey": "mkey:92af46ce21e67878315fe620545c207854ab6cec2d03adc106c50f64f9692711", "Peers": [ { - "ID": 1971858445916131, - "StableID": "n6G7ZuN4QG11CNTRL", "Name": "big-router.tail78f774.ts.net.", - "User": 1260082990019555, - "Key": "nodekey:6351880da5cebbde07c80cbce8c74eb62d72f05345033adba79ee1a051e1ae14", - "DiscoKey": "discokey:1396ccf4bd8aeee36a21bc03d8c6fcc1fcd858b32d21103c4fd44fcf0b178d0d", - "Addresses": ["100.97.174.21/32", "fd7a:115c:a1e0::5137:ae15/128"], - "AllowedIPs": ["100.97.174.21/32", "fd7a:115c:a1e0::5137:ae15/128", "10.0.0.0/8"], - "Endpoints": [ - "77.164.248.136:60017", - "10.65.0.27:60017", - "172.17.0.1:60017", - "172.18.0.1:60017", - "172.19.0.1:60017" + "AllowedIPs": [ + "100.97.174.21/32", + "fd7a:115c:a1e0::5137:ae15/128", + "10.0.0.0/8" ], - "HomeDERP": 14, - "Hostinfo": { - "OS": "linux", - "Hostname": "big-router", - "Services": [ - { "Proto": "peerapi4", "Port": 36233 }, - { "Proto": "peerapi6", "Port": 36233 } - ] - }, - "Created": "2026-03-17T16:09:39.110443536Z", - "Cap": 131, - "Tags": ["tag:router"], - "PrimaryRoutes": ["10.0.0.0/8"], - "LastSeen": "2026-03-28T10:06:16.1Z", - "Online": false, - "ComputedName": "big-router", - "ComputedNameWithHost": "big-router" + "PrimaryRoutes": [ + "10.0.0.0/8" + ] }, { - "ID": 6294409699640722, - "StableID": "nMQuxDUk9r11CNTRL", "Name": "multi-exit-router.tail78f774.ts.net.", - "User": 1260082990019555, - "Key": "nodekey:b854a0d64eba757cd3215c5bd78149cc0f927e35a2ad20342e88a15ead297f6a", - "DiscoKey": "discokey:762c82dd308809f511c6ac86dcc2642585837358fdd24958d55f16883c8e6c58", - "Addresses": ["100.105.127.107/32", "fd7a:115c:a1e0::ad37:7f6b/128"], - "AllowedIPs": ["100.105.127.107/32", "fd7a:115c:a1e0::ad37:7f6b/128", "10.33.0.0/16"], - "Endpoints": ["77.164.248.136:50766", "10.65.0.27:50766", "172.17.0.1:50766"], - "HomeDERP": 14, - "Hostinfo": { - "OS": "linux", - "Hostname": "multi-exit-router", - "Services": [ - { "Proto": "peerapi4", "Port": 62548 }, - { "Proto": "peerapi6", "Port": 62548 } - ] - }, - "Created": "2026-03-28T10:38:19.117098852Z", - "Cap": 131, - "Tags": ["tag:exit", "tag:router"], - "PrimaryRoutes": ["10.33.0.0/16"], - "Online": true, - "ComputedName": "multi-exit-router", - "ComputedNameWithHost": "multi-exit-router" + "AllowedIPs": [ + "100.105.127.107/32", + "fd7a:115c:a1e0::ad37:7f6b/128", + "10.33.0.0/16" + ], + "PrimaryRoutes": [ + "10.33.0.0/16" + ] }, { - "ID": 7489538288452506, - "StableID": "nTPEqJU2V121CNTRL", "Name": "subnet-router.tail78f774.ts.net.", - "User": 1260082990019555, - "Key": "nodekey:887ae2351c09c3b952f1f42bdac4095ec396ebf15824a746e4193c003e9c8e3c", - "DiscoKey": "discokey:9e3167ceaf53735a2fcaa7d3a85ad3a6118274deb448326d594849275014cc56", - "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:58597", "10.65.0.27:58597", "172.17.0.1:58597"], - "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" + "AllowedIPs": [ + "100.92.142.61/32", + "fd7a:115c:a1e0::3e37:8e3d/128" + ], + "PrimaryRoutes": [] } ], - "DNS": { - "Routes": { - "tail78f774.ts.net.": null, - "ts.net.": [{ "Addr": "199.247.155.53" }, { "Addr": "2620:111:8007::53" }] - }, - "Domains": ["tail78f774.ts.net"], - "Proxied": true, - "ExitNodeFilteredSet": [".ts.net", ".tailscale.net"] - }, - "PacketFilter": [], - "PacketFilterRules": null, - "SSHPolicy": { "rules": [] }, - "CollectServices": false, - "DERPMap": { - "Regions": { - "1": { - "RegionID": 1, - "RegionCode": "nyc", - "RegionName": "New York City", - "Latitude": 40.7128, - "Longitude": -74.006, - "Nodes": [ - { - "Name": "1h", - "RegionID": 1, - "HostName": "derp1h.tailscale.com", - "IPv4": "199.38.181.93", - "IPv6": "2607:f740:f::afd", - "CanPort80": true - }, - { - "Name": "1g", - "RegionID": 1, - "HostName": "derp1g.tailscale.com", - "IPv4": "209.177.145.120", - "IPv6": "2607:f740:f::3eb", - "CanPort80": true - }, - { - "Name": "1i", - "RegionID": 1, - "HostName": "derp1i.tailscale.com", - "IPv4": "199.38.181.103", - "IPv6": "2607:f740:f::e19", - "CanPort80": true - }, - { - "Name": "1f", - "RegionID": 1, - "HostName": "derp1f.tailscale.com", - "IPv4": "199.38.181.104", - "IPv6": "2607:f740:f::bc", - "CanPort80": true - } - ] - }, - "10": { - "RegionID": 10, - "RegionCode": "sea", - "RegionName": "Seattle", - "Latitude": 47.609722, - "Longitude": -122.333056, - "Nodes": [ - { - "Name": "10c", - "RegionID": 10, - "HostName": "derp10c.tailscale.com", - "IPv4": "192.73.240.121", - "IPv6": "2607:f740:14::40c", - "CanPort80": true - }, - { - "Name": "10d", - "RegionID": 10, - "HostName": "derp10d.tailscale.com", - "IPv4": "192.73.240.132", - "IPv6": "2607:f740:14::500", - "CanPort80": true - }, - { - "Name": "10b", - "RegionID": 10, - "HostName": "derp10b.tailscale.com", - "IPv4": "192.73.240.161", - "IPv6": "2607:f740:14::61c", - "CanPort80": true - } - ] - }, - "11": { - "RegionID": 11, - "RegionCode": "sao", - "RegionName": "São Paulo", - "Latitude": -23.55, - "Longitude": -46.633333, - "Nodes": [ - { - "Name": "11f", - "RegionID": 11, - "HostName": "derp11f.tailscale.com", - "IPv4": "172.237.61.197", - "IPv6": "2600:3c0d::2000:3bff:fe44:6166", - "CanPort80": true - }, - { - "Name": "11g", - "RegionID": 11, - "HostName": "derp11g.tailscale.com", - "IPv4": "172.237.61.190", - "IPv6": "2600:3c0d::2000:62ff:febe:2e67", - "CanPort80": true - }, - { - "Name": "11e", - "RegionID": 11, - "HostName": "derp11e.tailscale.com", - "IPv4": "172.237.61.194", - "IPv6": "2600:3c0d::2000:d2ff:fe43:1790", - "CanPort80": true - } - ] - }, - "12": { - "RegionID": 12, - "RegionCode": "ord", - "RegionName": "Chicago", - "Latitude": 41.881944, - "Longitude": -87.627778, - "Nodes": [ - { - "Name": "12e", - "RegionID": 12, - "HostName": "derp12e.tailscale.com", - "IPv4": "209.177.158.15", - "IPv6": "2607:f740:e::b17", - "CanPort80": true - }, - { - "Name": "12f", - "RegionID": 12, - "HostName": "derp12f.tailscale.com", - "IPv4": "199.38.182.118", - "IPv6": "2607:f740:e::4c8", - "CanPort80": true - }, - { - "Name": "12d", - "RegionID": 12, - "HostName": "derp12d.tailscale.com", - "IPv4": "209.177.158.246", - "IPv6": "2607:f740:e::811", - "CanPort80": true - } - ] - }, - "13": { - "RegionID": 13, - "RegionCode": "den", - "RegionName": "Denver", - "Latitude": 39.7392, - "Longitude": -104.9849, - "Nodes": [ - { - "Name": "13c", - "RegionID": 13, - "HostName": "derp13c.tailscale.com", - "IPv4": "192.73.242.28", - "IPv6": "2607:f740:16::5c", - "CanPort80": true - }, - { - "Name": "13d", - "RegionID": 13, - "HostName": "derp13d.tailscale.com", - "IPv4": "192.73.242.204", - "IPv6": "2607:f740:16::c23", - "CanPort80": true - }, - { - "Name": "13b", - "RegionID": 13, - "HostName": "derp13b.tailscale.com", - "IPv4": "192.73.242.187", - "IPv6": "2607:f740:16::640", - "CanPort80": true - } - ] - }, - "14": { - "RegionID": 14, - "RegionCode": "ams", - "RegionName": "Amsterdam", - "Latitude": 52.372778, - "Longitude": 4.893611, - "Nodes": [ - { - "Name": "14c", - "RegionID": 14, - "HostName": "derp14c.tailscale.com", - "IPv4": "176.58.93.147", - "IPv6": "2a00:dd80:3c::b09", - "CanPort80": true - }, - { - "Name": "14d", - "RegionID": 14, - "HostName": "derp14d.tailscale.com", - "IPv4": "176.58.93.154", - "IPv6": "2a00:dd80:3c::3d5", - "CanPort80": true - }, - { - "Name": "14b", - "RegionID": 14, - "HostName": "derp14b.tailscale.com", - "IPv4": "176.58.93.248", - "IPv6": "2a00:dd80:3c::807", - "CanPort80": true - } - ] - }, - "15": { - "RegionID": 15, - "RegionCode": "jnb", - "RegionName": "Johannesburg", - "Latitude": -26.204444, - "Longitude": 28.045556, - "Nodes": [ - { - "Name": "15c", - "RegionID": 15, - "HostName": "derp15c.tailscale.com", - "IPv4": "102.67.165.185", - "IPv6": "2c0f:edb0:0:10::b59", - "CanPort80": true - }, - { - "Name": "15d", - "RegionID": 15, - "HostName": "derp15d.tailscale.com", - "IPv4": "102.67.165.36", - "IPv6": "2c0f:edb0:0:10::599", - "CanPort80": true - }, - { - "Name": "15b", - "RegionID": 15, - "HostName": "derp15b.tailscale.com", - "IPv4": "102.67.165.90", - "IPv6": "2c0f:edb0:0:10::963", - "CanPort80": true - } - ] - }, - "16": { - "RegionID": 16, - "RegionCode": "mia", - "RegionName": "Miami", - "Latitude": 25.78, - "Longitude": -80.21, - "Nodes": [ - { - "Name": "16c", - "RegionID": 16, - "HostName": "derp16c.tailscale.com", - "IPv4": "192.73.243.229", - "IPv6": "2607:f740:17::4e4", - "CanPort80": true - }, - { - "Name": "16d", - "RegionID": 16, - "HostName": "derp16d.tailscale.com", - "IPv4": "192.73.243.141", - "IPv6": "2607:f740:17::475", - "CanPort80": true - }, - { - "Name": "16b", - "RegionID": 16, - "HostName": "derp16b.tailscale.com", - "IPv4": "192.73.243.135", - "IPv6": "2607:f740:17::476", - "CanPort80": true - } - ] - }, - "17": { - "RegionID": 17, - "RegionCode": "lax", - "RegionName": "Los Angeles", - "Latitude": 34.05, - "Longitude": -118.25, - "Nodes": [ - { - "Name": "17c", - "RegionID": 17, - "HostName": "derp17c.tailscale.com", - "IPv4": "208.111.40.12", - "IPv6": "2607:f740:c::10", - "CanPort80": true - }, - { - "Name": "17d", - "RegionID": 17, - "HostName": "derp17d.tailscale.com", - "IPv4": "208.111.40.216", - "IPv6": "2607:f740:c::e1b", - "CanPort80": true - }, - { - "Name": "17b", - "RegionID": 17, - "HostName": "derp17b.tailscale.com", - "IPv4": "192.73.244.245", - "IPv6": "2607:f740:c::646", - "CanPort80": true - } - ] - }, - "18": { - "RegionID": 18, - "RegionCode": "par", - "RegionName": "Paris", - "Latitude": 48.856667, - "Longitude": 2.352222, - "Nodes": [ - { - "Name": "18c", - "RegionID": 18, - "HostName": "derp18c.tailscale.com", - "IPv4": "176.58.90.207", - "IPv6": "2a00:dd80:3e::c19", - "CanPort80": true - }, - { - "Name": "18d", - "RegionID": 18, - "HostName": "derp18d.tailscale.com", - "IPv4": "176.58.90.104", - "IPv6": "2a00:dd80:3e::f2e", - "CanPort80": true - }, - { - "Name": "18b", - "RegionID": 18, - "HostName": "derp18b.tailscale.com", - "IPv4": "176.58.90.147", - "IPv6": "2a00:dd80:3e::363", - "CanPort80": true - } - ] - }, - "19": { - "RegionID": 19, - "RegionCode": "mad", - "RegionName": "Madrid", - "Latitude": 40.416944, - "Longitude": -3.703333, - "Nodes": [ - { - "Name": "19c", - "RegionID": 19, - "HostName": "derp19c.tailscale.com", - "IPv4": "45.159.97.61", - "IPv6": "2a00:dd80:14:10::20", - "CanPort80": true - }, - { - "Name": "19d", - "RegionID": 19, - "HostName": "derp19d.tailscale.com", - "IPv4": "45.159.97.233", - "IPv6": "2a00:dd80:14:10::34a", - "CanPort80": true - }, - { - "Name": "19b", - "RegionID": 19, - "HostName": "derp19b.tailscale.com", - "IPv4": "45.159.97.144", - "IPv6": "2a00:dd80:14:10::335", - "CanPort80": true - } - ] - }, - "2": { - "RegionID": 2, - "RegionCode": "sfo", - "RegionName": "San Francisco", - "Latitude": 37.7775, - "Longitude": -122.416389, - "Nodes": [ - { - "Name": "2e", - "RegionID": 2, - "HostName": "derp2e.tailscale.com", - "IPv4": "192.73.252.134", - "IPv6": "2607:f740:0:3f::44c", - "CanPort80": true - }, - { - "Name": "2f", - "RegionID": 2, - "HostName": "derp2f.tailscale.com", - "IPv4": "208.111.34.178", - "IPv6": "2607:f740:0:3f::f4", - "CanPort80": true - }, - { - "Name": "2d", - "RegionID": 2, - "HostName": "derp2d.tailscale.com", - "IPv4": "192.73.252.65", - "IPv6": "2607:f740:0:3f::287", - "CanPort80": true - } - ] - }, - "20": { - "RegionID": 20, - "RegionCode": "hkg", - "RegionName": "Hong Kong", - "Latitude": 22.3193, - "Longitude": 114.1694, - "Nodes": [ - { - "Name": "20c", - "RegionID": 20, - "HostName": "derp20c.tailscale.com", - "IPv4": "205.147.105.30", - "IPv6": "2403:2500:8000:1::5fb", - "CanPort80": true - }, - { - "Name": "20d", - "RegionID": 20, - "HostName": "derp20d.tailscale.com", - "IPv4": "205.147.105.78", - "IPv6": "2403:2500:8000:1::e9a", - "CanPort80": true - }, - { - "Name": "20b", - "RegionID": 20, - "HostName": "derp20b.tailscale.com", - "IPv4": "103.6.84.152", - "IPv6": "2403:2500:8000:1::ef6", - "CanPort80": true - } - ] - }, - "21": { - "RegionID": 21, - "RegionCode": "tor", - "RegionName": "Toronto", - "Latitude": 43.741667, - "Longitude": -79.373333, - "Nodes": [ - { - "Name": "21c", - "RegionID": 21, - "HostName": "derp21c.tailscale.com", - "IPv4": "162.248.221.215", - "IPv6": "2607:f740:50::f10", - "CanPort80": true - }, - { - "Name": "21d", - "RegionID": 21, - "HostName": "derp21d.tailscale.com", - "IPv4": "162.248.221.248", - "IPv6": "2607:f740:50::ca4", - "CanPort80": true - }, - { - "Name": "21b", - "RegionID": 21, - "HostName": "derp21b.tailscale.com", - "IPv4": "162.248.221.199", - "IPv6": "2607:f740:50::1d1", - "CanPort80": true - } - ] - }, - "22": { - "RegionID": 22, - "RegionCode": "waw", - "RegionName": "Warsaw", - "Latitude": 52.23, - "Longitude": 21.011111, - "Nodes": [ - { - "Name": "22c", - "RegionID": 22, - "HostName": "derp22c.tailscale.com", - "IPv4": "45.159.98.253", - "IPv6": "2a00:dd80:40:100::3f", - "CanPort80": true - }, - { - "Name": "22d", - "RegionID": 22, - "HostName": "derp22d.tailscale.com", - "IPv4": "45.159.98.145", - "IPv6": "2a00:dd80:40:100::211", - "CanPort80": true - }, - { - "Name": "22b", - "RegionID": 22, - "HostName": "derp22b.tailscale.com", - "IPv4": "45.159.98.196", - "IPv6": "2a00:dd80:40:100::316", - "CanPort80": true - } - ] - }, - "23": { - "RegionID": 23, - "RegionCode": "dbi", - "RegionName": "Dubai", - "Latitude": 25.263056, - "Longitude": 55.297222, - "Nodes": [ - { - "Name": "23c", - "RegionID": 23, - "HostName": "derp23c.tailscale.com", - "IPv4": "185.34.3.207", - "IPv6": "2a00:dd80:3f:100::a50", - "CanPort80": true - }, - { - "Name": "23d", - "RegionID": 23, - "HostName": "derp23d.tailscale.com", - "IPv4": "185.34.3.75", - "IPv6": "2a00:dd80:3f:100::97e", - "CanPort80": true - }, - { - "Name": "23b", - "RegionID": 23, - "HostName": "derp23b.tailscale.com", - "IPv4": "185.34.3.232", - "IPv6": "2a00:dd80:3f:100::76f", - "CanPort80": true - } - ] - }, - "24": { - "RegionID": 24, - "RegionCode": "hnl", - "RegionName": "Honolulu", - "Latitude": 21.306944, - "Longitude": -157.858333, - "Nodes": [ - { - "Name": "24c", - "RegionID": 24, - "HostName": "derp24c.tailscale.com", - "IPv4": "208.83.233.233", - "IPv6": "2001:19f0:c000:c591:5400:04ff:fe26:2c5f", - "CanPort80": true - }, - { - "Name": "24d", - "RegionID": 24, - "HostName": "derp24d.tailscale.com", - "IPv4": "208.72.155.133", - "IPv6": "2001:19f0:c000:c564:5400:04ff:fe26:2ba8", - "CanPort80": true - }, - { - "Name": "24b", - "RegionID": 24, - "HostName": "derp24b.tailscale.com", - "IPv4": "208.83.234.151", - "IPv6": "2001:19f0:c000:c586:5400:04ff:fe26:2ba6", - "CanPort80": true - } - ] - }, - "25": { - "RegionID": 25, - "RegionCode": "nai", - "RegionName": "Nairobi", - "Latitude": -1.286389, - "Longitude": 36.817222, - "Nodes": [ - { - "Name": "25c", - "RegionID": 25, - "HostName": "derp25c.tailscale.com", - "IPv4": "102.67.167.37", - "IPv6": "2c0f:edb0:2000:1::2c7", - "CanPort80": true - }, - { - "Name": "25d", - "RegionID": 25, - "HostName": "derp25d.tailscale.com", - "IPv4": "102.67.167.188", - "IPv6": "2c0f:edb0:2000:1::188", - "CanPort80": true - }, - { - "Name": "25b", - "RegionID": 25, - "HostName": "derp25b.tailscale.com", - "IPv4": "102.67.167.245", - "IPv6": "2c0f:edb0:2000:1::2e9", - "CanPort80": true - } - ] - }, - "26": { - "RegionID": 26, - "RegionCode": "nue", - "RegionName": "Nuremberg", - "Latitude": 49.453889, - "Longitude": 11.0775, - "Nodes": [ - { - "Name": "26c", - "RegionID": 26, - "HostName": "derp26c.tailscale.com", - "IPv4": "49.12.193.137", - "IPv6": "2a01:4f8:1c1c:5c70::1", - "CanPort80": true - }, - { - "Name": "26d", - "RegionID": 26, - "HostName": "derp26d.tailscale.com", - "IPv4": "49.13.204.141", - "IPv6": "2a01:4f8:1c0c:7d06::1", - "CanPort80": true - }, - { - "Name": "26b", - "RegionID": 26, - "HostName": "derp26b.tailscale.com", - "IPv4": "167.235.72.200", - "IPv6": "2a01:4f8:1c1c:47b6::1", - "CanPort80": true - } - ] - }, - "27": { - "RegionID": 27, - "RegionCode": "iad", - "RegionName": "Ashburn", - "Latitude": 39.03, - "Longitude": -77.471111, - "Nodes": [ - { - "Name": "27d", - "RegionID": 27, - "HostName": "derp27d.tailscale.com", - "IPv4": "178.156.152.106", - "IPv6": "2a01:4ff:f0:3c8e::1", - "CanPort80": true - }, - { - "Name": "27c", - "RegionID": 27, - "HostName": "derp27c.tailscale.com", - "IPv4": "178.156.152.91", - "IPv6": "2a01:4ff:f0:3913::1", - "CanPort80": true - }, - { - "Name": "27e", - "RegionID": 27, - "HostName": "derp27e.tailscale.com", - "IPv4": "178.156.134.232", - "IPv6": "2a01:4ff:f0:28d4::1", - "CanPort80": true - }, - { - "Name": "27b", - "RegionID": 27, - "HostName": "derp27b.tailscale.com", - "IPv4": "5.161.218.233", - "IPv6": "2a01:4ff:f0:3db9::1", - "CanPort80": true - } - ] - }, - "28": { - "RegionID": 28, - "RegionCode": "hel", - "RegionName": "Helsinki", - "Latitude": 60.170833, - "Longitude": 24.9375, - "Nodes": [ - { - "Name": "28c", - "RegionID": 28, - "HostName": "derp28c.tailscale.com", - "IPv4": "95.217.2.165", - "IPv6": "2a01:4f9:c012:cd74::1", - "CanPort80": true - }, - { - "Name": "28d", - "RegionID": 28, - "HostName": "derp28d.tailscale.com", - "IPv4": "157.180.28.32", - "IPv6": "2a01:4f9:c012:2e5b::1", - "CanPort80": true - }, - { - "Name": "28b", - "RegionID": 28, - "HostName": "derp28b.tailscale.com", - "IPv4": "65.109.143.62", - "IPv6": "2a01:4f9:c012:d55c::1", - "CanPort80": true - } - ] - }, - "3": { - "RegionID": 3, - "RegionCode": "sin", - "RegionName": "Singapore", - "Latitude": 1.3521, - "Longitude": 103.8198, - "Nodes": [ - { - "Name": "3g", - "RegionID": 3, - "HostName": "derp3g.tailscale.com", - "IPv4": "172.237.72.79", - "IPv6": "2600:3c15::2000:adff:fe08:6fab", - "CanPort80": true - }, - { - "Name": "3f", - "RegionID": 3, - "HostName": "derp3f.tailscale.com", - "IPv4": "172.237.72.8", - "IPv6": "2600:3c15::2000:53ff:fe48:a668", - "CanPort80": true - }, - { - "Name": "3h", - "RegionID": 3, - "HostName": "derp3h.tailscale.com", - "IPv4": "172.237.66.30", - "IPv6": "2600:3c15::2000:3dff:fe44:50aa", - "CanPort80": true - }, - { - "Name": "3e", - "RegionID": 3, - "HostName": "derp3e.tailscale.com", - "IPv4": "172.237.72.43", - "IPv6": "2600:3c15::2000:6cff:fee4:d799", - "CanPort80": true - } - ] - }, - "4": { - "RegionID": 4, - "RegionCode": "fra", - "RegionName": "Frankfurt", - "Latitude": 50.1109, - "Longitude": 8.6821, - "Nodes": [ - { - "Name": "4h", - "RegionID": 4, - "HostName": "derp4h.tailscale.com", - "IPv4": "185.40.234.77", - "IPv6": "2a00:dd80:20::bcf", - "CanPort80": true - }, - { - "Name": "4g", - "RegionID": 4, - "HostName": "derp4g.tailscale.com", - "IPv4": "185.40.234.113", - "IPv6": "2a00:dd80:20::8f", - "CanPort80": true - }, - { - "Name": "4i", - "RegionID": 4, - "HostName": "derp4i.tailscale.com", - "IPv4": "185.40.234.53", - "IPv6": "2a00:dd80:20::8a6", - "CanPort80": true - }, - { - "Name": "4f", - "RegionID": 4, - "HostName": "derp4f.tailscale.com", - "IPv4": "185.40.234.219", - "IPv6": "2a00:dd80:20::a25", - "CanPort80": true - } - ] - }, - "5": { - "RegionID": 5, - "RegionCode": "syd", - "RegionName": "Sydney", - "Latitude": -33.867778, - "Longitude": 151.21, - "Nodes": [ - { - "Name": "5f", - "RegionID": 5, - "HostName": "derp5f.tailscale.com", - "IPv4": "172.105.166.103", - "IPv6": "2400:8907::2000:ccff:fe1f:80da", - "CanPort80": true - }, - { - "Name": "5g", - "RegionID": 5, - "HostName": "derp5g.tailscale.com", - "IPv4": "172.105.169.57", - "IPv6": "2400:8907::2000:2fff:fea7:57f4", - "CanPort80": true - }, - { - "Name": "5e", - "RegionID": 5, - "HostName": "derp5e.tailscale.com", - "IPv4": "172.105.179.230", - "IPv6": "2400:8907::2000:ceff:fe8d:4f4e", - "CanPort80": true - } - ] - }, - "6": { - "RegionID": 6, - "RegionCode": "blr", - "RegionName": "Bengaluru", - "Latitude": 12.9716, - "Longitude": 77.5946, - "Nodes": [ - { - "Name": "6a", - "RegionID": 6, - "HostName": "derp6.tailscale.com", - "IPv4": "68.183.90.120", - "IPv6": "2400:6180:100:d0::982:d001", - "CanPort80": true - } - ] - }, - "7": { - "RegionID": 7, - "RegionCode": "tok", - "RegionName": "Tokyo", - "Latitude": 35.6764, - "Longitude": 139.65, - "Nodes": [ - { - "Name": "7g", - "RegionID": 7, - "HostName": "derp7g.tailscale.com", - "IPv4": "172.238.6.179", - "IPv6": "2600:3c18::2000:3fff:fe80:3ebd", - "CanPort80": true - }, - { - "Name": "7f", - "RegionID": 7, - "HostName": "derp7f.tailscale.com", - "IPv4": "172.238.6.34", - "IPv6": "2600:3c18::2000:acff:fe8e:3ed5", - "CanPort80": true - }, - { - "Name": "7h", - "RegionID": 7, - "HostName": "derp7h.tailscale.com", - "IPv4": "172.237.28.183", - "IPv6": "2600:3c18::2000:b1ff:fea9:4560", - "CanPort80": true - }, - { - "Name": "7e", - "RegionID": 7, - "HostName": "derp7e.tailscale.com", - "IPv4": "172.238.6.180", - "IPv6": "2600:3c18::2000:60ff:fe0f:6e83", - "STUNOnly": true, - "CanPort80": true - } - ] - }, - "8": { - "RegionID": 8, - "RegionCode": "lhr", - "RegionName": "London", - "Latitude": 51.5072, - "Longitude": 0.1276, - "Nodes": [ - { - "Name": "8f", - "RegionID": 8, - "HostName": "derp8f.tailscale.com", - "IPv4": "176.58.88.183", - "IPv6": "2a00:dd80:3a::dfa", - "CanPort80": true - }, - { - "Name": "8g", - "RegionID": 8, - "HostName": "derp8g.tailscale.com", - "IPv4": "176.58.92.254", - "IPv6": "2a00:dd80:3a::ed", - "CanPort80": true - }, - { - "Name": "8e", - "RegionID": 8, - "HostName": "derp8e.tailscale.com", - "IPv4": "176.58.92.144", - "IPv6": "2a00:dd80:3a::b33", - "CanPort80": true - } - ] - }, - "9": { - "RegionID": 9, - "RegionCode": "dfw", - "RegionName": "Dallas", - "Latitude": 32.779167, - "Longitude": -96.808889, - "Nodes": [ - { - "Name": "9e", - "RegionID": 9, - "HostName": "derp9e.tailscale.com", - "IPv4": "192.73.248.83", - "IPv6": "2607:f740:100::359", - "CanPort80": true - }, - { - "Name": "9f", - "RegionID": 9, - "HostName": "derp9f.tailscale.com", - "IPv4": "209.177.156.197", - "IPv6": "2607:f740:100::cad", - "CanPort80": true - }, - { - "Name": "9d", - "RegionID": 9, - "HostName": "derp9d.tailscale.com", - "IPv4": "209.177.156.94", - "IPv6": "2607:f740:100::c05", - "CanPort80": true - } - ] - } - } - }, - "DisplayMessages": null, - "TKAEnabled": false, - "TKAHead": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", - "Domain": "kratail2tid@passkey", - "DomainAuditLogID": "", - "UserProfiles": { - "1260082990019555": { - "ID": 1260082990019555, - "LoginName": "tagged-devices", - "DisplayName": "Tagged Devices" - }, - "4031348162889210": { - "ID": 4031348162889210, - "LoginName": "tagged-client.tail78f774.ts.net", - "DisplayName": "tagged-client" - } - } + "PacketFilterRules": 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.124.195.93": { - "peer_name": "exit-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-prod/tailscaled.sock whois --json 100.124.195.93", - "response": null - }, - "100.116.18.24": { - "peer_name": "exit-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-prod/tailscaled.sock whois --json 100.116.18.24", - "response": null - }, - "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.107.162.14": { - "peer_name": "group-a-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-prod/tailscaled.sock whois --json 100.107.162.14", - "response": null - }, - "100.77.135.18": { - "peer_name": "group-b-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-prod/tailscaled.sock whois --json 100.77.135.18", - "response": null - }, - "100.105.127.107": { - "peer_name": "multi-exit-router", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-prod/tailscaled.sock whois --json 100.105.127.107", - "response": null - }, - "100.109.43.124": { - "peer_name": "router-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-prod/tailscaled.sock whois --json 100.109.43.124", - "response": null - }, - "100.65.172.123": { - "peer_name": "router-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-prod/tailscaled.sock whois --json 100.65.172.123", - "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 - } - }, "netmap": { - "SelfNode": { - "ID": 301794218943819, - "StableID": "neJag6dgM311CNTRL", - "Name": "tagged-prod.tail78f774.ts.net.", - "User": 301794218943819, - "Key": "nodekey:54c79503322a5d0a9701ce19d11963cfff9c05667ac06ef976af86275ba7080e", - "DiscoKey": "discokey:5e4985009b42b7c82ffb2cb5fa735a90f967f6b3f886b71268ebbeffa324556b", - "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:46164", "10.65.0.27:46164", "172.17.0.1:46164"], - "Hostinfo": { - "Hostname": "tagged-prod", - "Services": [ - { "Proto": "peerapi4", "Port": 37678 }, - { "Proto": "peerapi6", "Port": 37678 }, - { "Proto": "peerapi-dns-proxy", "Port": 1 } - ] - }, - "Created": "2026-02-20T14:03:12.89283153Z", - "Tags": ["tag:prod"], - "MachineAuthorized": true, - "CapMap": { - "https://tailscale.com/cap/file-sharing": null, - "https://tailscale.com/cap/is-owner": null, - "https://tailscale.com/cap/ssh": null, - "https://tailscale.com/cap/tailnet-lock": null, - "probe-udp-lifetime": null, - "ssh-behavior-v1": null, - "ssh-env-vars": null, - "store-appc-routes": null, - "tailnet-display-name": ["kratail2tid@passkey"] - }, - "ComputedName": "tagged-prod", - "ComputedNameWithHost": "tagged-prod" - }, - "AllCaps": [ - "store-appc-routes", - "tailnet-display-name", - "https://tailscale.com/cap/is-owner", - "https://tailscale.com/cap/tailnet-lock", - "probe-udp-lifetime", - "https://tailscale.com/cap/file-sharing", - "ssh-env-vars", - "https://tailscale.com/cap/ssh", - "ssh-behavior-v1" - ], - "NodeKey": "nodekey:54c79503322a5d0a9701ce19d11963cfff9c05667ac06ef976af86275ba7080e", - "MachineKey": "mkey:af805e02d1594ab20eaf3e2df5b379eec6453fa649344fcd564b7bae20e46a63", "Peers": [], - "DNS": { - "Routes": { - "tail78f774.ts.net.": null, - "ts.net.": [{ "Addr": "199.247.155.53" }, { "Addr": "2620:111:8007::53" }] - }, - "Domains": ["tail78f774.ts.net"], - "Proxied": true, - "ExitNodeFilteredSet": [".ts.net", ".tailscale.net"] - }, - "PacketFilter": [], - "PacketFilterRules": null, - "SSHPolicy": { "rules": [] }, - "CollectServices": false, - "DERPMap": { - "Regions": { - "1": { - "RegionID": 1, - "RegionCode": "nyc", - "RegionName": "New York City", - "Latitude": 40.7128, - "Longitude": -74.006, - "Nodes": [ - { - "Name": "1h", - "RegionID": 1, - "HostName": "derp1h.tailscale.com", - "IPv4": "199.38.181.93", - "IPv6": "2607:f740:f::afd", - "CanPort80": true - }, - { - "Name": "1g", - "RegionID": 1, - "HostName": "derp1g.tailscale.com", - "IPv4": "209.177.145.120", - "IPv6": "2607:f740:f::3eb", - "CanPort80": true - }, - { - "Name": "1i", - "RegionID": 1, - "HostName": "derp1i.tailscale.com", - "IPv4": "199.38.181.103", - "IPv6": "2607:f740:f::e19", - "CanPort80": true - }, - { - "Name": "1f", - "RegionID": 1, - "HostName": "derp1f.tailscale.com", - "IPv4": "199.38.181.104", - "IPv6": "2607:f740:f::bc", - "CanPort80": true - } - ] - }, - "10": { - "RegionID": 10, - "RegionCode": "sea", - "RegionName": "Seattle", - "Latitude": 47.609722, - "Longitude": -122.333056, - "Nodes": [ - { - "Name": "10c", - "RegionID": 10, - "HostName": "derp10c.tailscale.com", - "IPv4": "192.73.240.121", - "IPv6": "2607:f740:14::40c", - "CanPort80": true - }, - { - "Name": "10d", - "RegionID": 10, - "HostName": "derp10d.tailscale.com", - "IPv4": "192.73.240.132", - "IPv6": "2607:f740:14::500", - "CanPort80": true - }, - { - "Name": "10b", - "RegionID": 10, - "HostName": "derp10b.tailscale.com", - "IPv4": "192.73.240.161", - "IPv6": "2607:f740:14::61c", - "CanPort80": true - } - ] - }, - "11": { - "RegionID": 11, - "RegionCode": "sao", - "RegionName": "São Paulo", - "Latitude": -23.55, - "Longitude": -46.633333, - "Nodes": [ - { - "Name": "11f", - "RegionID": 11, - "HostName": "derp11f.tailscale.com", - "IPv4": "172.237.61.197", - "IPv6": "2600:3c0d::2000:3bff:fe44:6166", - "CanPort80": true - }, - { - "Name": "11g", - "RegionID": 11, - "HostName": "derp11g.tailscale.com", - "IPv4": "172.237.61.190", - "IPv6": "2600:3c0d::2000:62ff:febe:2e67", - "CanPort80": true - }, - { - "Name": "11e", - "RegionID": 11, - "HostName": "derp11e.tailscale.com", - "IPv4": "172.237.61.194", - "IPv6": "2600:3c0d::2000:d2ff:fe43:1790", - "CanPort80": true - } - ] - }, - "12": { - "RegionID": 12, - "RegionCode": "ord", - "RegionName": "Chicago", - "Latitude": 41.881944, - "Longitude": -87.627778, - "Nodes": [ - { - "Name": "12e", - "RegionID": 12, - "HostName": "derp12e.tailscale.com", - "IPv4": "209.177.158.15", - "IPv6": "2607:f740:e::b17", - "CanPort80": true - }, - { - "Name": "12f", - "RegionID": 12, - "HostName": "derp12f.tailscale.com", - "IPv4": "199.38.182.118", - "IPv6": "2607:f740:e::4c8", - "CanPort80": true - }, - { - "Name": "12d", - "RegionID": 12, - "HostName": "derp12d.tailscale.com", - "IPv4": "209.177.158.246", - "IPv6": "2607:f740:e::811", - "CanPort80": true - } - ] - }, - "13": { - "RegionID": 13, - "RegionCode": "den", - "RegionName": "Denver", - "Latitude": 39.7392, - "Longitude": -104.9849, - "Nodes": [ - { - "Name": "13c", - "RegionID": 13, - "HostName": "derp13c.tailscale.com", - "IPv4": "192.73.242.28", - "IPv6": "2607:f740:16::5c", - "CanPort80": true - }, - { - "Name": "13d", - "RegionID": 13, - "HostName": "derp13d.tailscale.com", - "IPv4": "192.73.242.204", - "IPv6": "2607:f740:16::c23", - "CanPort80": true - }, - { - "Name": "13b", - "RegionID": 13, - "HostName": "derp13b.tailscale.com", - "IPv4": "192.73.242.187", - "IPv6": "2607:f740:16::640", - "CanPort80": true - } - ] - }, - "14": { - "RegionID": 14, - "RegionCode": "ams", - "RegionName": "Amsterdam", - "Latitude": 52.372778, - "Longitude": 4.893611, - "Nodes": [ - { - "Name": "14c", - "RegionID": 14, - "HostName": "derp14c.tailscale.com", - "IPv4": "176.58.93.147", - "IPv6": "2a00:dd80:3c::b09", - "CanPort80": true - }, - { - "Name": "14d", - "RegionID": 14, - "HostName": "derp14d.tailscale.com", - "IPv4": "176.58.93.154", - "IPv6": "2a00:dd80:3c::3d5", - "CanPort80": true - }, - { - "Name": "14b", - "RegionID": 14, - "HostName": "derp14b.tailscale.com", - "IPv4": "176.58.93.248", - "IPv6": "2a00:dd80:3c::807", - "CanPort80": true - } - ] - }, - "15": { - "RegionID": 15, - "RegionCode": "jnb", - "RegionName": "Johannesburg", - "Latitude": -26.204444, - "Longitude": 28.045556, - "Nodes": [ - { - "Name": "15c", - "RegionID": 15, - "HostName": "derp15c.tailscale.com", - "IPv4": "102.67.165.185", - "IPv6": "2c0f:edb0:0:10::b59", - "CanPort80": true - }, - { - "Name": "15d", - "RegionID": 15, - "HostName": "derp15d.tailscale.com", - "IPv4": "102.67.165.36", - "IPv6": "2c0f:edb0:0:10::599", - "CanPort80": true - }, - { - "Name": "15b", - "RegionID": 15, - "HostName": "derp15b.tailscale.com", - "IPv4": "102.67.165.90", - "IPv6": "2c0f:edb0:0:10::963", - "CanPort80": true - } - ] - }, - "16": { - "RegionID": 16, - "RegionCode": "mia", - "RegionName": "Miami", - "Latitude": 25.78, - "Longitude": -80.21, - "Nodes": [ - { - "Name": "16c", - "RegionID": 16, - "HostName": "derp16c.tailscale.com", - "IPv4": "192.73.243.229", - "IPv6": "2607:f740:17::4e4", - "CanPort80": true - }, - { - "Name": "16d", - "RegionID": 16, - "HostName": "derp16d.tailscale.com", - "IPv4": "192.73.243.141", - "IPv6": "2607:f740:17::475", - "CanPort80": true - }, - { - "Name": "16b", - "RegionID": 16, - "HostName": "derp16b.tailscale.com", - "IPv4": "192.73.243.135", - "IPv6": "2607:f740:17::476", - "CanPort80": true - } - ] - }, - "17": { - "RegionID": 17, - "RegionCode": "lax", - "RegionName": "Los Angeles", - "Latitude": 34.05, - "Longitude": -118.25, - "Nodes": [ - { - "Name": "17c", - "RegionID": 17, - "HostName": "derp17c.tailscale.com", - "IPv4": "208.111.40.12", - "IPv6": "2607:f740:c::10", - "CanPort80": true - }, - { - "Name": "17d", - "RegionID": 17, - "HostName": "derp17d.tailscale.com", - "IPv4": "208.111.40.216", - "IPv6": "2607:f740:c::e1b", - "CanPort80": true - }, - { - "Name": "17b", - "RegionID": 17, - "HostName": "derp17b.tailscale.com", - "IPv4": "192.73.244.245", - "IPv6": "2607:f740:c::646", - "CanPort80": true - } - ] - }, - "18": { - "RegionID": 18, - "RegionCode": "par", - "RegionName": "Paris", - "Latitude": 48.856667, - "Longitude": 2.352222, - "Nodes": [ - { - "Name": "18c", - "RegionID": 18, - "HostName": "derp18c.tailscale.com", - "IPv4": "176.58.90.207", - "IPv6": "2a00:dd80:3e::c19", - "CanPort80": true - }, - { - "Name": "18d", - "RegionID": 18, - "HostName": "derp18d.tailscale.com", - "IPv4": "176.58.90.104", - "IPv6": "2a00:dd80:3e::f2e", - "CanPort80": true - }, - { - "Name": "18b", - "RegionID": 18, - "HostName": "derp18b.tailscale.com", - "IPv4": "176.58.90.147", - "IPv6": "2a00:dd80:3e::363", - "CanPort80": true - } - ] - }, - "19": { - "RegionID": 19, - "RegionCode": "mad", - "RegionName": "Madrid", - "Latitude": 40.416944, - "Longitude": -3.703333, - "Nodes": [ - { - "Name": "19c", - "RegionID": 19, - "HostName": "derp19c.tailscale.com", - "IPv4": "45.159.97.61", - "IPv6": "2a00:dd80:14:10::20", - "CanPort80": true - }, - { - "Name": "19d", - "RegionID": 19, - "HostName": "derp19d.tailscale.com", - "IPv4": "45.159.97.233", - "IPv6": "2a00:dd80:14:10::34a", - "CanPort80": true - }, - { - "Name": "19b", - "RegionID": 19, - "HostName": "derp19b.tailscale.com", - "IPv4": "45.159.97.144", - "IPv6": "2a00:dd80:14:10::335", - "CanPort80": true - } - ] - }, - "2": { - "RegionID": 2, - "RegionCode": "sfo", - "RegionName": "San Francisco", - "Latitude": 37.7775, - "Longitude": -122.416389, - "Nodes": [ - { - "Name": "2e", - "RegionID": 2, - "HostName": "derp2e.tailscale.com", - "IPv4": "192.73.252.134", - "IPv6": "2607:f740:0:3f::44c", - "CanPort80": true - }, - { - "Name": "2f", - "RegionID": 2, - "HostName": "derp2f.tailscale.com", - "IPv4": "208.111.34.178", - "IPv6": "2607:f740:0:3f::f4", - "CanPort80": true - }, - { - "Name": "2d", - "RegionID": 2, - "HostName": "derp2d.tailscale.com", - "IPv4": "192.73.252.65", - "IPv6": "2607:f740:0:3f::287", - "CanPort80": true - } - ] - }, - "20": { - "RegionID": 20, - "RegionCode": "hkg", - "RegionName": "Hong Kong", - "Latitude": 22.3193, - "Longitude": 114.1694, - "Nodes": [ - { - "Name": "20c", - "RegionID": 20, - "HostName": "derp20c.tailscale.com", - "IPv4": "205.147.105.30", - "IPv6": "2403:2500:8000:1::5fb", - "CanPort80": true - }, - { - "Name": "20d", - "RegionID": 20, - "HostName": "derp20d.tailscale.com", - "IPv4": "205.147.105.78", - "IPv6": "2403:2500:8000:1::e9a", - "CanPort80": true - }, - { - "Name": "20b", - "RegionID": 20, - "HostName": "derp20b.tailscale.com", - "IPv4": "103.6.84.152", - "IPv6": "2403:2500:8000:1::ef6", - "CanPort80": true - } - ] - }, - "21": { - "RegionID": 21, - "RegionCode": "tor", - "RegionName": "Toronto", - "Latitude": 43.741667, - "Longitude": -79.373333, - "Nodes": [ - { - "Name": "21c", - "RegionID": 21, - "HostName": "derp21c.tailscale.com", - "IPv4": "162.248.221.215", - "IPv6": "2607:f740:50::f10", - "CanPort80": true - }, - { - "Name": "21d", - "RegionID": 21, - "HostName": "derp21d.tailscale.com", - "IPv4": "162.248.221.248", - "IPv6": "2607:f740:50::ca4", - "CanPort80": true - }, - { - "Name": "21b", - "RegionID": 21, - "HostName": "derp21b.tailscale.com", - "IPv4": "162.248.221.199", - "IPv6": "2607:f740:50::1d1", - "CanPort80": true - } - ] - }, - "22": { - "RegionID": 22, - "RegionCode": "waw", - "RegionName": "Warsaw", - "Latitude": 52.23, - "Longitude": 21.011111, - "Nodes": [ - { - "Name": "22c", - "RegionID": 22, - "HostName": "derp22c.tailscale.com", - "IPv4": "45.159.98.253", - "IPv6": "2a00:dd80:40:100::3f", - "CanPort80": true - }, - { - "Name": "22d", - "RegionID": 22, - "HostName": "derp22d.tailscale.com", - "IPv4": "45.159.98.145", - "IPv6": "2a00:dd80:40:100::211", - "CanPort80": true - }, - { - "Name": "22b", - "RegionID": 22, - "HostName": "derp22b.tailscale.com", - "IPv4": "45.159.98.196", - "IPv6": "2a00:dd80:40:100::316", - "CanPort80": true - } - ] - }, - "23": { - "RegionID": 23, - "RegionCode": "dbi", - "RegionName": "Dubai", - "Latitude": 25.263056, - "Longitude": 55.297222, - "Nodes": [ - { - "Name": "23c", - "RegionID": 23, - "HostName": "derp23c.tailscale.com", - "IPv4": "185.34.3.207", - "IPv6": "2a00:dd80:3f:100::a50", - "CanPort80": true - }, - { - "Name": "23d", - "RegionID": 23, - "HostName": "derp23d.tailscale.com", - "IPv4": "185.34.3.75", - "IPv6": "2a00:dd80:3f:100::97e", - "CanPort80": true - }, - { - "Name": "23b", - "RegionID": 23, - "HostName": "derp23b.tailscale.com", - "IPv4": "185.34.3.232", - "IPv6": "2a00:dd80:3f:100::76f", - "CanPort80": true - } - ] - }, - "24": { - "RegionID": 24, - "RegionCode": "hnl", - "RegionName": "Honolulu", - "Latitude": 21.306944, - "Longitude": -157.858333, - "Nodes": [ - { - "Name": "24c", - "RegionID": 24, - "HostName": "derp24c.tailscale.com", - "IPv4": "208.83.233.233", - "IPv6": "2001:19f0:c000:c591:5400:04ff:fe26:2c5f", - "CanPort80": true - }, - { - "Name": "24d", - "RegionID": 24, - "HostName": "derp24d.tailscale.com", - "IPv4": "208.72.155.133", - "IPv6": "2001:19f0:c000:c564:5400:04ff:fe26:2ba8", - "CanPort80": true - }, - { - "Name": "24b", - "RegionID": 24, - "HostName": "derp24b.tailscale.com", - "IPv4": "208.83.234.151", - "IPv6": "2001:19f0:c000:c586:5400:04ff:fe26:2ba6", - "CanPort80": true - } - ] - }, - "25": { - "RegionID": 25, - "RegionCode": "nai", - "RegionName": "Nairobi", - "Latitude": -1.286389, - "Longitude": 36.817222, - "Nodes": [ - { - "Name": "25c", - "RegionID": 25, - "HostName": "derp25c.tailscale.com", - "IPv4": "102.67.167.37", - "IPv6": "2c0f:edb0:2000:1::2c7", - "CanPort80": true - }, - { - "Name": "25d", - "RegionID": 25, - "HostName": "derp25d.tailscale.com", - "IPv4": "102.67.167.188", - "IPv6": "2c0f:edb0:2000:1::188", - "CanPort80": true - }, - { - "Name": "25b", - "RegionID": 25, - "HostName": "derp25b.tailscale.com", - "IPv4": "102.67.167.245", - "IPv6": "2c0f:edb0:2000:1::2e9", - "CanPort80": true - } - ] - }, - "26": { - "RegionID": 26, - "RegionCode": "nue", - "RegionName": "Nuremberg", - "Latitude": 49.453889, - "Longitude": 11.0775, - "Nodes": [ - { - "Name": "26c", - "RegionID": 26, - "HostName": "derp26c.tailscale.com", - "IPv4": "49.12.193.137", - "IPv6": "2a01:4f8:1c1c:5c70::1", - "CanPort80": true - }, - { - "Name": "26d", - "RegionID": 26, - "HostName": "derp26d.tailscale.com", - "IPv4": "49.13.204.141", - "IPv6": "2a01:4f8:1c0c:7d06::1", - "CanPort80": true - }, - { - "Name": "26b", - "RegionID": 26, - "HostName": "derp26b.tailscale.com", - "IPv4": "167.235.72.200", - "IPv6": "2a01:4f8:1c1c:47b6::1", - "CanPort80": true - } - ] - }, - "27": { - "RegionID": 27, - "RegionCode": "iad", - "RegionName": "Ashburn", - "Latitude": 39.03, - "Longitude": -77.471111, - "Nodes": [ - { - "Name": "27d", - "RegionID": 27, - "HostName": "derp27d.tailscale.com", - "IPv4": "178.156.152.106", - "IPv6": "2a01:4ff:f0:3c8e::1", - "CanPort80": true - }, - { - "Name": "27c", - "RegionID": 27, - "HostName": "derp27c.tailscale.com", - "IPv4": "178.156.152.91", - "IPv6": "2a01:4ff:f0:3913::1", - "CanPort80": true - }, - { - "Name": "27e", - "RegionID": 27, - "HostName": "derp27e.tailscale.com", - "IPv4": "178.156.134.232", - "IPv6": "2a01:4ff:f0:28d4::1", - "CanPort80": true - }, - { - "Name": "27b", - "RegionID": 27, - "HostName": "derp27b.tailscale.com", - "IPv4": "5.161.218.233", - "IPv6": "2a01:4ff:f0:3db9::1", - "CanPort80": true - } - ] - }, - "28": { - "RegionID": 28, - "RegionCode": "hel", - "RegionName": "Helsinki", - "Latitude": 60.170833, - "Longitude": 24.9375, - "Nodes": [ - { - "Name": "28c", - "RegionID": 28, - "HostName": "derp28c.tailscale.com", - "IPv4": "95.217.2.165", - "IPv6": "2a01:4f9:c012:cd74::1", - "CanPort80": true - }, - { - "Name": "28d", - "RegionID": 28, - "HostName": "derp28d.tailscale.com", - "IPv4": "157.180.28.32", - "IPv6": "2a01:4f9:c012:2e5b::1", - "CanPort80": true - }, - { - "Name": "28b", - "RegionID": 28, - "HostName": "derp28b.tailscale.com", - "IPv4": "65.109.143.62", - "IPv6": "2a01:4f9:c012:d55c::1", - "CanPort80": true - } - ] - }, - "3": { - "RegionID": 3, - "RegionCode": "sin", - "RegionName": "Singapore", - "Latitude": 1.3521, - "Longitude": 103.8198, - "Nodes": [ - { - "Name": "3g", - "RegionID": 3, - "HostName": "derp3g.tailscale.com", - "IPv4": "172.237.72.79", - "IPv6": "2600:3c15::2000:adff:fe08:6fab", - "CanPort80": true - }, - { - "Name": "3f", - "RegionID": 3, - "HostName": "derp3f.tailscale.com", - "IPv4": "172.237.72.8", - "IPv6": "2600:3c15::2000:53ff:fe48:a668", - "CanPort80": true - }, - { - "Name": "3h", - "RegionID": 3, - "HostName": "derp3h.tailscale.com", - "IPv4": "172.237.66.30", - "IPv6": "2600:3c15::2000:3dff:fe44:50aa", - "CanPort80": true - }, - { - "Name": "3e", - "RegionID": 3, - "HostName": "derp3e.tailscale.com", - "IPv4": "172.237.72.43", - "IPv6": "2600:3c15::2000:6cff:fee4:d799", - "CanPort80": true - } - ] - }, - "4": { - "RegionID": 4, - "RegionCode": "fra", - "RegionName": "Frankfurt", - "Latitude": 50.1109, - "Longitude": 8.6821, - "Nodes": [ - { - "Name": "4h", - "RegionID": 4, - "HostName": "derp4h.tailscale.com", - "IPv4": "185.40.234.77", - "IPv6": "2a00:dd80:20::bcf", - "CanPort80": true - }, - { - "Name": "4g", - "RegionID": 4, - "HostName": "derp4g.tailscale.com", - "IPv4": "185.40.234.113", - "IPv6": "2a00:dd80:20::8f", - "CanPort80": true - }, - { - "Name": "4i", - "RegionID": 4, - "HostName": "derp4i.tailscale.com", - "IPv4": "185.40.234.53", - "IPv6": "2a00:dd80:20::8a6", - "CanPort80": true - }, - { - "Name": "4f", - "RegionID": 4, - "HostName": "derp4f.tailscale.com", - "IPv4": "185.40.234.219", - "IPv6": "2a00:dd80:20::a25", - "CanPort80": true - } - ] - }, - "5": { - "RegionID": 5, - "RegionCode": "syd", - "RegionName": "Sydney", - "Latitude": -33.867778, - "Longitude": 151.21, - "Nodes": [ - { - "Name": "5f", - "RegionID": 5, - "HostName": "derp5f.tailscale.com", - "IPv4": "172.105.166.103", - "IPv6": "2400:8907::2000:ccff:fe1f:80da", - "CanPort80": true - }, - { - "Name": "5g", - "RegionID": 5, - "HostName": "derp5g.tailscale.com", - "IPv4": "172.105.169.57", - "IPv6": "2400:8907::2000:2fff:fea7:57f4", - "CanPort80": true - }, - { - "Name": "5e", - "RegionID": 5, - "HostName": "derp5e.tailscale.com", - "IPv4": "172.105.179.230", - "IPv6": "2400:8907::2000:ceff:fe8d:4f4e", - "CanPort80": true - } - ] - }, - "6": { - "RegionID": 6, - "RegionCode": "blr", - "RegionName": "Bengaluru", - "Latitude": 12.9716, - "Longitude": 77.5946, - "Nodes": [ - { - "Name": "6a", - "RegionID": 6, - "HostName": "derp6.tailscale.com", - "IPv4": "68.183.90.120", - "IPv6": "2400:6180:100:d0::982:d001", - "CanPort80": true - } - ] - }, - "7": { - "RegionID": 7, - "RegionCode": "tok", - "RegionName": "Tokyo", - "Latitude": 35.6764, - "Longitude": 139.65, - "Nodes": [ - { - "Name": "7g", - "RegionID": 7, - "HostName": "derp7g.tailscale.com", - "IPv4": "172.238.6.179", - "IPv6": "2600:3c18::2000:3fff:fe80:3ebd", - "CanPort80": true - }, - { - "Name": "7f", - "RegionID": 7, - "HostName": "derp7f.tailscale.com", - "IPv4": "172.238.6.34", - "IPv6": "2600:3c18::2000:acff:fe8e:3ed5", - "CanPort80": true - }, - { - "Name": "7h", - "RegionID": 7, - "HostName": "derp7h.tailscale.com", - "IPv4": "172.237.28.183", - "IPv6": "2600:3c18::2000:b1ff:fea9:4560", - "CanPort80": true - }, - { - "Name": "7e", - "RegionID": 7, - "HostName": "derp7e.tailscale.com", - "IPv4": "172.238.6.180", - "IPv6": "2600:3c18::2000:60ff:fe0f:6e83", - "STUNOnly": true, - "CanPort80": true - } - ] - }, - "8": { - "RegionID": 8, - "RegionCode": "lhr", - "RegionName": "London", - "Latitude": 51.5072, - "Longitude": 0.1276, - "Nodes": [ - { - "Name": "8f", - "RegionID": 8, - "HostName": "derp8f.tailscale.com", - "IPv4": "176.58.88.183", - "IPv6": "2a00:dd80:3a::dfa", - "CanPort80": true - }, - { - "Name": "8g", - "RegionID": 8, - "HostName": "derp8g.tailscale.com", - "IPv4": "176.58.92.254", - "IPv6": "2a00:dd80:3a::ed", - "CanPort80": true - }, - { - "Name": "8e", - "RegionID": 8, - "HostName": "derp8e.tailscale.com", - "IPv4": "176.58.92.144", - "IPv6": "2a00:dd80:3a::b33", - "CanPort80": true - } - ] - }, - "9": { - "RegionID": 9, - "RegionCode": "dfw", - "RegionName": "Dallas", - "Latitude": 32.779167, - "Longitude": -96.808889, - "Nodes": [ - { - "Name": "9e", - "RegionID": 9, - "HostName": "derp9e.tailscale.com", - "IPv4": "192.73.248.83", - "IPv6": "2607:f740:100::359", - "CanPort80": true - }, - { - "Name": "9f", - "RegionID": 9, - "HostName": "derp9f.tailscale.com", - "IPv4": "209.177.156.197", - "IPv6": "2607:f740:100::cad", - "CanPort80": true - }, - { - "Name": "9d", - "RegionID": 9, - "HostName": "derp9d.tailscale.com", - "IPv4": "209.177.156.94", - "IPv6": "2607:f740:100::c05", - "CanPort80": true - } - ] - } - } - }, - "DisplayMessages": null, - "TKAEnabled": false, - "TKAHead": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", - "Domain": "kratail2tid@passkey", - "DomainAuditLogID": "", - "UserProfiles": { - "301794218943819": { - "ID": 301794218943819, - "LoginName": "tagged-prod.tail78f774.ts.net", - "DisplayName": "tagged-prod" - } - } + "PacketFilterRules": 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.124.195.93": { - "peer_name": "exit-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-server/tailscaled.sock whois --json 100.124.195.93", - "response": null - }, - "100.116.18.24": { - "peer_name": "exit-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-server/tailscaled.sock whois --json 100.116.18.24", - "response": null - }, - "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.107.162.14": { - "peer_name": "group-a-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-server/tailscaled.sock whois --json 100.107.162.14", - "response": null - }, - "100.77.135.18": { - "peer_name": "group-b-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-server/tailscaled.sock whois --json 100.77.135.18", - "response": null - }, - "100.105.127.107": { - "peer_name": "multi-exit-router", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-server/tailscaled.sock whois --json 100.105.127.107", - "response": null - }, - "100.109.43.124": { - "peer_name": "router-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-server/tailscaled.sock whois --json 100.109.43.124", - "response": null - }, - "100.65.172.123": { - "peer_name": "router-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-server/tailscaled.sock whois --json 100.65.172.123", - "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 - } - }, "netmap": { - "SelfNode": { - "ID": 1440249486084758, - "StableID": "nXRbBtuHFC11CNTRL", - "Name": "tagged-server.tail78f774.ts.net.", - "User": 1440249486084758, - "Key": "nodekey:7d5c34b3e8082069d0a82838165c33f8e1b5eb32c6211c2d23d4fe8fb9ec4a19", - "DiscoKey": "discokey:aa5732e314175928eff41cc8f8a7b6edd4694b7d00e420a6573ecc11a88cb203", - "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:57971", "10.65.0.27:57971", "172.17.0.1:57971"], - "Hostinfo": { - "Hostname": "tagged-server", - "Services": [ - { "Proto": "peerapi4", "Port": 46499 }, - { "Proto": "peerapi6", "Port": 46499 }, - { "Proto": "peerapi-dns-proxy", "Port": 1 } - ] - }, - "Created": "2026-01-23T10:10:26.365653609Z", - "Tags": ["tag:server"], - "MachineAuthorized": true, - "CapMap": { - "https://tailscale.com/cap/file-sharing": null, - "https://tailscale.com/cap/is-owner": null, - "https://tailscale.com/cap/ssh": null, - "https://tailscale.com/cap/tailnet-lock": null, - "probe-udp-lifetime": null, - "ssh-behavior-v1": null, - "ssh-env-vars": null, - "store-appc-routes": null, - "tailnet-display-name": ["kratail2tid@passkey"] - }, - "ComputedName": "tagged-server", - "ComputedNameWithHost": "tagged-server" - }, - "AllCaps": [ - "ssh-behavior-v1", - "ssh-env-vars", - "https://tailscale.com/cap/file-sharing", - "https://tailscale.com/cap/is-owner", - "https://tailscale.com/cap/tailnet-lock", - "probe-udp-lifetime", - "store-appc-routes", - "https://tailscale.com/cap/ssh", - "tailnet-display-name" - ], - "NodeKey": "nodekey:7d5c34b3e8082069d0a82838165c33f8e1b5eb32c6211c2d23d4fe8fb9ec4a19", - "MachineKey": "mkey:7d9c55c88bb618638f3f049b95c797f64eb0259810146d2644fef3e53acfdf6b", "Peers": [], - "DNS": { - "Routes": { - "tail78f774.ts.net.": null, - "ts.net.": [{ "Addr": "199.247.155.53" }, { "Addr": "2620:111:8007::53" }] - }, - "Domains": ["tail78f774.ts.net"], - "Proxied": true, - "ExitNodeFilteredSet": [".ts.net", ".tailscale.net"] - }, - "PacketFilter": [], - "PacketFilterRules": null, - "SSHPolicy": { "rules": [] }, - "CollectServices": false, - "DERPMap": { - "Regions": { - "1": { - "RegionID": 1, - "RegionCode": "nyc", - "RegionName": "New York City", - "Latitude": 40.7128, - "Longitude": -74.006, - "Nodes": [ - { - "Name": "1h", - "RegionID": 1, - "HostName": "derp1h.tailscale.com", - "IPv4": "199.38.181.93", - "IPv6": "2607:f740:f::afd", - "CanPort80": true - }, - { - "Name": "1g", - "RegionID": 1, - "HostName": "derp1g.tailscale.com", - "IPv4": "209.177.145.120", - "IPv6": "2607:f740:f::3eb", - "CanPort80": true - }, - { - "Name": "1i", - "RegionID": 1, - "HostName": "derp1i.tailscale.com", - "IPv4": "199.38.181.103", - "IPv6": "2607:f740:f::e19", - "CanPort80": true - }, - { - "Name": "1f", - "RegionID": 1, - "HostName": "derp1f.tailscale.com", - "IPv4": "199.38.181.104", - "IPv6": "2607:f740:f::bc", - "CanPort80": true - } - ] - }, - "10": { - "RegionID": 10, - "RegionCode": "sea", - "RegionName": "Seattle", - "Latitude": 47.609722, - "Longitude": -122.333056, - "Nodes": [ - { - "Name": "10c", - "RegionID": 10, - "HostName": "derp10c.tailscale.com", - "IPv4": "192.73.240.121", - "IPv6": "2607:f740:14::40c", - "CanPort80": true - }, - { - "Name": "10d", - "RegionID": 10, - "HostName": "derp10d.tailscale.com", - "IPv4": "192.73.240.132", - "IPv6": "2607:f740:14::500", - "CanPort80": true - }, - { - "Name": "10b", - "RegionID": 10, - "HostName": "derp10b.tailscale.com", - "IPv4": "192.73.240.161", - "IPv6": "2607:f740:14::61c", - "CanPort80": true - } - ] - }, - "11": { - "RegionID": 11, - "RegionCode": "sao", - "RegionName": "São Paulo", - "Latitude": -23.55, - "Longitude": -46.633333, - "Nodes": [ - { - "Name": "11f", - "RegionID": 11, - "HostName": "derp11f.tailscale.com", - "IPv4": "172.237.61.197", - "IPv6": "2600:3c0d::2000:3bff:fe44:6166", - "CanPort80": true - }, - { - "Name": "11g", - "RegionID": 11, - "HostName": "derp11g.tailscale.com", - "IPv4": "172.237.61.190", - "IPv6": "2600:3c0d::2000:62ff:febe:2e67", - "CanPort80": true - }, - { - "Name": "11e", - "RegionID": 11, - "HostName": "derp11e.tailscale.com", - "IPv4": "172.237.61.194", - "IPv6": "2600:3c0d::2000:d2ff:fe43:1790", - "CanPort80": true - } - ] - }, - "12": { - "RegionID": 12, - "RegionCode": "ord", - "RegionName": "Chicago", - "Latitude": 41.881944, - "Longitude": -87.627778, - "Nodes": [ - { - "Name": "12e", - "RegionID": 12, - "HostName": "derp12e.tailscale.com", - "IPv4": "209.177.158.15", - "IPv6": "2607:f740:e::b17", - "CanPort80": true - }, - { - "Name": "12f", - "RegionID": 12, - "HostName": "derp12f.tailscale.com", - "IPv4": "199.38.182.118", - "IPv6": "2607:f740:e::4c8", - "CanPort80": true - }, - { - "Name": "12d", - "RegionID": 12, - "HostName": "derp12d.tailscale.com", - "IPv4": "209.177.158.246", - "IPv6": "2607:f740:e::811", - "CanPort80": true - } - ] - }, - "13": { - "RegionID": 13, - "RegionCode": "den", - "RegionName": "Denver", - "Latitude": 39.7392, - "Longitude": -104.9849, - "Nodes": [ - { - "Name": "13c", - "RegionID": 13, - "HostName": "derp13c.tailscale.com", - "IPv4": "192.73.242.28", - "IPv6": "2607:f740:16::5c", - "CanPort80": true - }, - { - "Name": "13d", - "RegionID": 13, - "HostName": "derp13d.tailscale.com", - "IPv4": "192.73.242.204", - "IPv6": "2607:f740:16::c23", - "CanPort80": true - }, - { - "Name": "13b", - "RegionID": 13, - "HostName": "derp13b.tailscale.com", - "IPv4": "192.73.242.187", - "IPv6": "2607:f740:16::640", - "CanPort80": true - } - ] - }, - "14": { - "RegionID": 14, - "RegionCode": "ams", - "RegionName": "Amsterdam", - "Latitude": 52.372778, - "Longitude": 4.893611, - "Nodes": [ - { - "Name": "14c", - "RegionID": 14, - "HostName": "derp14c.tailscale.com", - "IPv4": "176.58.93.147", - "IPv6": "2a00:dd80:3c::b09", - "CanPort80": true - }, - { - "Name": "14d", - "RegionID": 14, - "HostName": "derp14d.tailscale.com", - "IPv4": "176.58.93.154", - "IPv6": "2a00:dd80:3c::3d5", - "CanPort80": true - }, - { - "Name": "14b", - "RegionID": 14, - "HostName": "derp14b.tailscale.com", - "IPv4": "176.58.93.248", - "IPv6": "2a00:dd80:3c::807", - "CanPort80": true - } - ] - }, - "15": { - "RegionID": 15, - "RegionCode": "jnb", - "RegionName": "Johannesburg", - "Latitude": -26.204444, - "Longitude": 28.045556, - "Nodes": [ - { - "Name": "15c", - "RegionID": 15, - "HostName": "derp15c.tailscale.com", - "IPv4": "102.67.165.185", - "IPv6": "2c0f:edb0:0:10::b59", - "CanPort80": true - }, - { - "Name": "15d", - "RegionID": 15, - "HostName": "derp15d.tailscale.com", - "IPv4": "102.67.165.36", - "IPv6": "2c0f:edb0:0:10::599", - "CanPort80": true - }, - { - "Name": "15b", - "RegionID": 15, - "HostName": "derp15b.tailscale.com", - "IPv4": "102.67.165.90", - "IPv6": "2c0f:edb0:0:10::963", - "CanPort80": true - } - ] - }, - "16": { - "RegionID": 16, - "RegionCode": "mia", - "RegionName": "Miami", - "Latitude": 25.78, - "Longitude": -80.21, - "Nodes": [ - { - "Name": "16c", - "RegionID": 16, - "HostName": "derp16c.tailscale.com", - "IPv4": "192.73.243.229", - "IPv6": "2607:f740:17::4e4", - "CanPort80": true - }, - { - "Name": "16d", - "RegionID": 16, - "HostName": "derp16d.tailscale.com", - "IPv4": "192.73.243.141", - "IPv6": "2607:f740:17::475", - "CanPort80": true - }, - { - "Name": "16b", - "RegionID": 16, - "HostName": "derp16b.tailscale.com", - "IPv4": "192.73.243.135", - "IPv6": "2607:f740:17::476", - "CanPort80": true - } - ] - }, - "17": { - "RegionID": 17, - "RegionCode": "lax", - "RegionName": "Los Angeles", - "Latitude": 34.05, - "Longitude": -118.25, - "Nodes": [ - { - "Name": "17c", - "RegionID": 17, - "HostName": "derp17c.tailscale.com", - "IPv4": "208.111.40.12", - "IPv6": "2607:f740:c::10", - "CanPort80": true - }, - { - "Name": "17d", - "RegionID": 17, - "HostName": "derp17d.tailscale.com", - "IPv4": "208.111.40.216", - "IPv6": "2607:f740:c::e1b", - "CanPort80": true - }, - { - "Name": "17b", - "RegionID": 17, - "HostName": "derp17b.tailscale.com", - "IPv4": "192.73.244.245", - "IPv6": "2607:f740:c::646", - "CanPort80": true - } - ] - }, - "18": { - "RegionID": 18, - "RegionCode": "par", - "RegionName": "Paris", - "Latitude": 48.856667, - "Longitude": 2.352222, - "Nodes": [ - { - "Name": "18c", - "RegionID": 18, - "HostName": "derp18c.tailscale.com", - "IPv4": "176.58.90.207", - "IPv6": "2a00:dd80:3e::c19", - "CanPort80": true - }, - { - "Name": "18d", - "RegionID": 18, - "HostName": "derp18d.tailscale.com", - "IPv4": "176.58.90.104", - "IPv6": "2a00:dd80:3e::f2e", - "CanPort80": true - }, - { - "Name": "18b", - "RegionID": 18, - "HostName": "derp18b.tailscale.com", - "IPv4": "176.58.90.147", - "IPv6": "2a00:dd80:3e::363", - "CanPort80": true - } - ] - }, - "19": { - "RegionID": 19, - "RegionCode": "mad", - "RegionName": "Madrid", - "Latitude": 40.416944, - "Longitude": -3.703333, - "Nodes": [ - { - "Name": "19c", - "RegionID": 19, - "HostName": "derp19c.tailscale.com", - "IPv4": "45.159.97.61", - "IPv6": "2a00:dd80:14:10::20", - "CanPort80": true - }, - { - "Name": "19d", - "RegionID": 19, - "HostName": "derp19d.tailscale.com", - "IPv4": "45.159.97.233", - "IPv6": "2a00:dd80:14:10::34a", - "CanPort80": true - }, - { - "Name": "19b", - "RegionID": 19, - "HostName": "derp19b.tailscale.com", - "IPv4": "45.159.97.144", - "IPv6": "2a00:dd80:14:10::335", - "CanPort80": true - } - ] - }, - "2": { - "RegionID": 2, - "RegionCode": "sfo", - "RegionName": "San Francisco", - "Latitude": 37.7775, - "Longitude": -122.416389, - "Nodes": [ - { - "Name": "2e", - "RegionID": 2, - "HostName": "derp2e.tailscale.com", - "IPv4": "192.73.252.134", - "IPv6": "2607:f740:0:3f::44c", - "CanPort80": true - }, - { - "Name": "2f", - "RegionID": 2, - "HostName": "derp2f.tailscale.com", - "IPv4": "208.111.34.178", - "IPv6": "2607:f740:0:3f::f4", - "CanPort80": true - }, - { - "Name": "2d", - "RegionID": 2, - "HostName": "derp2d.tailscale.com", - "IPv4": "192.73.252.65", - "IPv6": "2607:f740:0:3f::287", - "CanPort80": true - } - ] - }, - "20": { - "RegionID": 20, - "RegionCode": "hkg", - "RegionName": "Hong Kong", - "Latitude": 22.3193, - "Longitude": 114.1694, - "Nodes": [ - { - "Name": "20c", - "RegionID": 20, - "HostName": "derp20c.tailscale.com", - "IPv4": "205.147.105.30", - "IPv6": "2403:2500:8000:1::5fb", - "CanPort80": true - }, - { - "Name": "20d", - "RegionID": 20, - "HostName": "derp20d.tailscale.com", - "IPv4": "205.147.105.78", - "IPv6": "2403:2500:8000:1::e9a", - "CanPort80": true - }, - { - "Name": "20b", - "RegionID": 20, - "HostName": "derp20b.tailscale.com", - "IPv4": "103.6.84.152", - "IPv6": "2403:2500:8000:1::ef6", - "CanPort80": true - } - ] - }, - "21": { - "RegionID": 21, - "RegionCode": "tor", - "RegionName": "Toronto", - "Latitude": 43.741667, - "Longitude": -79.373333, - "Nodes": [ - { - "Name": "21c", - "RegionID": 21, - "HostName": "derp21c.tailscale.com", - "IPv4": "162.248.221.215", - "IPv6": "2607:f740:50::f10", - "CanPort80": true - }, - { - "Name": "21d", - "RegionID": 21, - "HostName": "derp21d.tailscale.com", - "IPv4": "162.248.221.248", - "IPv6": "2607:f740:50::ca4", - "CanPort80": true - }, - { - "Name": "21b", - "RegionID": 21, - "HostName": "derp21b.tailscale.com", - "IPv4": "162.248.221.199", - "IPv6": "2607:f740:50::1d1", - "CanPort80": true - } - ] - }, - "22": { - "RegionID": 22, - "RegionCode": "waw", - "RegionName": "Warsaw", - "Latitude": 52.23, - "Longitude": 21.011111, - "Nodes": [ - { - "Name": "22c", - "RegionID": 22, - "HostName": "derp22c.tailscale.com", - "IPv4": "45.159.98.253", - "IPv6": "2a00:dd80:40:100::3f", - "CanPort80": true - }, - { - "Name": "22d", - "RegionID": 22, - "HostName": "derp22d.tailscale.com", - "IPv4": "45.159.98.145", - "IPv6": "2a00:dd80:40:100::211", - "CanPort80": true - }, - { - "Name": "22b", - "RegionID": 22, - "HostName": "derp22b.tailscale.com", - "IPv4": "45.159.98.196", - "IPv6": "2a00:dd80:40:100::316", - "CanPort80": true - } - ] - }, - "23": { - "RegionID": 23, - "RegionCode": "dbi", - "RegionName": "Dubai", - "Latitude": 25.263056, - "Longitude": 55.297222, - "Nodes": [ - { - "Name": "23c", - "RegionID": 23, - "HostName": "derp23c.tailscale.com", - "IPv4": "185.34.3.207", - "IPv6": "2a00:dd80:3f:100::a50", - "CanPort80": true - }, - { - "Name": "23d", - "RegionID": 23, - "HostName": "derp23d.tailscale.com", - "IPv4": "185.34.3.75", - "IPv6": "2a00:dd80:3f:100::97e", - "CanPort80": true - }, - { - "Name": "23b", - "RegionID": 23, - "HostName": "derp23b.tailscale.com", - "IPv4": "185.34.3.232", - "IPv6": "2a00:dd80:3f:100::76f", - "CanPort80": true - } - ] - }, - "24": { - "RegionID": 24, - "RegionCode": "hnl", - "RegionName": "Honolulu", - "Latitude": 21.306944, - "Longitude": -157.858333, - "Nodes": [ - { - "Name": "24c", - "RegionID": 24, - "HostName": "derp24c.tailscale.com", - "IPv4": "208.83.233.233", - "IPv6": "2001:19f0:c000:c591:5400:04ff:fe26:2c5f", - "CanPort80": true - }, - { - "Name": "24d", - "RegionID": 24, - "HostName": "derp24d.tailscale.com", - "IPv4": "208.72.155.133", - "IPv6": "2001:19f0:c000:c564:5400:04ff:fe26:2ba8", - "CanPort80": true - }, - { - "Name": "24b", - "RegionID": 24, - "HostName": "derp24b.tailscale.com", - "IPv4": "208.83.234.151", - "IPv6": "2001:19f0:c000:c586:5400:04ff:fe26:2ba6", - "CanPort80": true - } - ] - }, - "25": { - "RegionID": 25, - "RegionCode": "nai", - "RegionName": "Nairobi", - "Latitude": -1.286389, - "Longitude": 36.817222, - "Nodes": [ - { - "Name": "25c", - "RegionID": 25, - "HostName": "derp25c.tailscale.com", - "IPv4": "102.67.167.37", - "IPv6": "2c0f:edb0:2000:1::2c7", - "CanPort80": true - }, - { - "Name": "25d", - "RegionID": 25, - "HostName": "derp25d.tailscale.com", - "IPv4": "102.67.167.188", - "IPv6": "2c0f:edb0:2000:1::188", - "CanPort80": true - }, - { - "Name": "25b", - "RegionID": 25, - "HostName": "derp25b.tailscale.com", - "IPv4": "102.67.167.245", - "IPv6": "2c0f:edb0:2000:1::2e9", - "CanPort80": true - } - ] - }, - "26": { - "RegionID": 26, - "RegionCode": "nue", - "RegionName": "Nuremberg", - "Latitude": 49.453889, - "Longitude": 11.0775, - "Nodes": [ - { - "Name": "26c", - "RegionID": 26, - "HostName": "derp26c.tailscale.com", - "IPv4": "49.12.193.137", - "IPv6": "2a01:4f8:1c1c:5c70::1", - "CanPort80": true - }, - { - "Name": "26d", - "RegionID": 26, - "HostName": "derp26d.tailscale.com", - "IPv4": "49.13.204.141", - "IPv6": "2a01:4f8:1c0c:7d06::1", - "CanPort80": true - }, - { - "Name": "26b", - "RegionID": 26, - "HostName": "derp26b.tailscale.com", - "IPv4": "167.235.72.200", - "IPv6": "2a01:4f8:1c1c:47b6::1", - "CanPort80": true - } - ] - }, - "27": { - "RegionID": 27, - "RegionCode": "iad", - "RegionName": "Ashburn", - "Latitude": 39.03, - "Longitude": -77.471111, - "Nodes": [ - { - "Name": "27d", - "RegionID": 27, - "HostName": "derp27d.tailscale.com", - "IPv4": "178.156.152.106", - "IPv6": "2a01:4ff:f0:3c8e::1", - "CanPort80": true - }, - { - "Name": "27c", - "RegionID": 27, - "HostName": "derp27c.tailscale.com", - "IPv4": "178.156.152.91", - "IPv6": "2a01:4ff:f0:3913::1", - "CanPort80": true - }, - { - "Name": "27e", - "RegionID": 27, - "HostName": "derp27e.tailscale.com", - "IPv4": "178.156.134.232", - "IPv6": "2a01:4ff:f0:28d4::1", - "CanPort80": true - }, - { - "Name": "27b", - "RegionID": 27, - "HostName": "derp27b.tailscale.com", - "IPv4": "5.161.218.233", - "IPv6": "2a01:4ff:f0:3db9::1", - "CanPort80": true - } - ] - }, - "28": { - "RegionID": 28, - "RegionCode": "hel", - "RegionName": "Helsinki", - "Latitude": 60.170833, - "Longitude": 24.9375, - "Nodes": [ - { - "Name": "28c", - "RegionID": 28, - "HostName": "derp28c.tailscale.com", - "IPv4": "95.217.2.165", - "IPv6": "2a01:4f9:c012:cd74::1", - "CanPort80": true - }, - { - "Name": "28d", - "RegionID": 28, - "HostName": "derp28d.tailscale.com", - "IPv4": "157.180.28.32", - "IPv6": "2a01:4f9:c012:2e5b::1", - "CanPort80": true - }, - { - "Name": "28b", - "RegionID": 28, - "HostName": "derp28b.tailscale.com", - "IPv4": "65.109.143.62", - "IPv6": "2a01:4f9:c012:d55c::1", - "CanPort80": true - } - ] - }, - "3": { - "RegionID": 3, - "RegionCode": "sin", - "RegionName": "Singapore", - "Latitude": 1.3521, - "Longitude": 103.8198, - "Nodes": [ - { - "Name": "3g", - "RegionID": 3, - "HostName": "derp3g.tailscale.com", - "IPv4": "172.237.72.79", - "IPv6": "2600:3c15::2000:adff:fe08:6fab", - "CanPort80": true - }, - { - "Name": "3f", - "RegionID": 3, - "HostName": "derp3f.tailscale.com", - "IPv4": "172.237.72.8", - "IPv6": "2600:3c15::2000:53ff:fe48:a668", - "CanPort80": true - }, - { - "Name": "3h", - "RegionID": 3, - "HostName": "derp3h.tailscale.com", - "IPv4": "172.237.66.30", - "IPv6": "2600:3c15::2000:3dff:fe44:50aa", - "CanPort80": true - }, - { - "Name": "3e", - "RegionID": 3, - "HostName": "derp3e.tailscale.com", - "IPv4": "172.237.72.43", - "IPv6": "2600:3c15::2000:6cff:fee4:d799", - "CanPort80": true - } - ] - }, - "4": { - "RegionID": 4, - "RegionCode": "fra", - "RegionName": "Frankfurt", - "Latitude": 50.1109, - "Longitude": 8.6821, - "Nodes": [ - { - "Name": "4h", - "RegionID": 4, - "HostName": "derp4h.tailscale.com", - "IPv4": "185.40.234.77", - "IPv6": "2a00:dd80:20::bcf", - "CanPort80": true - }, - { - "Name": "4g", - "RegionID": 4, - "HostName": "derp4g.tailscale.com", - "IPv4": "185.40.234.113", - "IPv6": "2a00:dd80:20::8f", - "CanPort80": true - }, - { - "Name": "4i", - "RegionID": 4, - "HostName": "derp4i.tailscale.com", - "IPv4": "185.40.234.53", - "IPv6": "2a00:dd80:20::8a6", - "CanPort80": true - }, - { - "Name": "4f", - "RegionID": 4, - "HostName": "derp4f.tailscale.com", - "IPv4": "185.40.234.219", - "IPv6": "2a00:dd80:20::a25", - "CanPort80": true - } - ] - }, - "5": { - "RegionID": 5, - "RegionCode": "syd", - "RegionName": "Sydney", - "Latitude": -33.867778, - "Longitude": 151.21, - "Nodes": [ - { - "Name": "5f", - "RegionID": 5, - "HostName": "derp5f.tailscale.com", - "IPv4": "172.105.166.103", - "IPv6": "2400:8907::2000:ccff:fe1f:80da", - "CanPort80": true - }, - { - "Name": "5g", - "RegionID": 5, - "HostName": "derp5g.tailscale.com", - "IPv4": "172.105.169.57", - "IPv6": "2400:8907::2000:2fff:fea7:57f4", - "CanPort80": true - }, - { - "Name": "5e", - "RegionID": 5, - "HostName": "derp5e.tailscale.com", - "IPv4": "172.105.179.230", - "IPv6": "2400:8907::2000:ceff:fe8d:4f4e", - "CanPort80": true - } - ] - }, - "6": { - "RegionID": 6, - "RegionCode": "blr", - "RegionName": "Bengaluru", - "Latitude": 12.9716, - "Longitude": 77.5946, - "Nodes": [ - { - "Name": "6a", - "RegionID": 6, - "HostName": "derp6.tailscale.com", - "IPv4": "68.183.90.120", - "IPv6": "2400:6180:100:d0::982:d001", - "CanPort80": true - } - ] - }, - "7": { - "RegionID": 7, - "RegionCode": "tok", - "RegionName": "Tokyo", - "Latitude": 35.6764, - "Longitude": 139.65, - "Nodes": [ - { - "Name": "7g", - "RegionID": 7, - "HostName": "derp7g.tailscale.com", - "IPv4": "172.238.6.179", - "IPv6": "2600:3c18::2000:3fff:fe80:3ebd", - "CanPort80": true - }, - { - "Name": "7f", - "RegionID": 7, - "HostName": "derp7f.tailscale.com", - "IPv4": "172.238.6.34", - "IPv6": "2600:3c18::2000:acff:fe8e:3ed5", - "CanPort80": true - }, - { - "Name": "7h", - "RegionID": 7, - "HostName": "derp7h.tailscale.com", - "IPv4": "172.237.28.183", - "IPv6": "2600:3c18::2000:b1ff:fea9:4560", - "CanPort80": true - }, - { - "Name": "7e", - "RegionID": 7, - "HostName": "derp7e.tailscale.com", - "IPv4": "172.238.6.180", - "IPv6": "2600:3c18::2000:60ff:fe0f:6e83", - "STUNOnly": true, - "CanPort80": true - } - ] - }, - "8": { - "RegionID": 8, - "RegionCode": "lhr", - "RegionName": "London", - "Latitude": 51.5072, - "Longitude": 0.1276, - "Nodes": [ - { - "Name": "8f", - "RegionID": 8, - "HostName": "derp8f.tailscale.com", - "IPv4": "176.58.88.183", - "IPv6": "2a00:dd80:3a::dfa", - "CanPort80": true - }, - { - "Name": "8g", - "RegionID": 8, - "HostName": "derp8g.tailscale.com", - "IPv4": "176.58.92.254", - "IPv6": "2a00:dd80:3a::ed", - "CanPort80": true - }, - { - "Name": "8e", - "RegionID": 8, - "HostName": "derp8e.tailscale.com", - "IPv4": "176.58.92.144", - "IPv6": "2a00:dd80:3a::b33", - "CanPort80": true - } - ] - }, - "9": { - "RegionID": 9, - "RegionCode": "dfw", - "RegionName": "Dallas", - "Latitude": 32.779167, - "Longitude": -96.808889, - "Nodes": [ - { - "Name": "9e", - "RegionID": 9, - "HostName": "derp9e.tailscale.com", - "IPv4": "192.73.248.83", - "IPv6": "2607:f740:100::359", - "CanPort80": true - }, - { - "Name": "9f", - "RegionID": 9, - "HostName": "derp9f.tailscale.com", - "IPv4": "209.177.156.197", - "IPv6": "2607:f740:100::cad", - "CanPort80": true - }, - { - "Name": "9d", - "RegionID": 9, - "HostName": "derp9d.tailscale.com", - "IPv4": "209.177.156.94", - "IPv6": "2607:f740:100::c05", - "CanPort80": true - } - ] - } - } - }, - "DisplayMessages": null, - "TKAEnabled": false, - "TKAHead": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", - "Domain": "kratail2tid@passkey", - "DomainAuditLogID": "", - "UserProfiles": { - "1440249486084758": { - "ID": 1440249486084758, - "LoginName": "tagged-server.tail78f774.ts.net", - "DisplayName": "tagged-server" - } - } + "PacketFilterRules": 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.124.195.93": { - "peer_name": "exit-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-kris/tailscaled.sock whois --json 100.124.195.93", - "response": null - }, - "100.116.18.24": { - "peer_name": "exit-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-kris/tailscaled.sock whois --json 100.116.18.24", - "response": null - }, - "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.107.162.14": { - "peer_name": "group-a-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-kris/tailscaled.sock whois --json 100.107.162.14", - "response": null - }, - "100.77.135.18": { - "peer_name": "group-b-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-kris/tailscaled.sock whois --json 100.77.135.18", - "response": null - }, - "100.105.127.107": { - "peer_name": "multi-exit-router", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-kris/tailscaled.sock whois --json 100.105.127.107", - "response": null - }, - "100.109.43.124": { - "peer_name": "router-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-kris/tailscaled.sock whois --json 100.109.43.124", - "response": null - }, - "100.65.172.123": { - "peer_name": "router-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-kris/tailscaled.sock whois --json 100.65.172.123", - "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 - } - }, "netmap": { - "SelfNode": { - "ID": 7728836216590060, - "StableID": "nf4dJTRQM321CNTRL", - "Name": "user-kris.tail78f774.ts.net.", - "User": 4538565228176803, - "Key": "nodekey:40d0f8f49fd519e4a4a2b7d278dcc8863254d4fb8b0219f1d1304cdd172e795f", - "KeyExpiry": "2026-08-19T14:09:34Z", - "DiscoKey": "discokey:60de987544859962048376b0950731bfa8017a7fc7df694ef376d4bb42eb9871", - "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:59717", "10.65.0.27:59717", "172.17.0.1:59717"], - "Hostinfo": { - "Hostname": "user-kris", - "Services": [ - { "Proto": "peerapi4", "Port": 40159 }, - { "Proto": "peerapi6", "Port": 40159 }, - { "Proto": "peerapi-dns-proxy", "Port": 1 } - ] - }, - "Created": "2026-02-20T14:09:34.803901523Z", - "MachineAuthorized": true, - "CapMap": { - "https://tailscale.com/cap/file-sharing": null, - "https://tailscale.com/cap/is-admin": null, - "https://tailscale.com/cap/ssh": null, - "https://tailscale.com/cap/tailnet-lock": null, - "probe-udp-lifetime": null, - "ssh-behavior-v1": null, - "ssh-env-vars": null, - "store-appc-routes": null, - "tailnet-display-name": ["kratail2tid@passkey"] - }, - "ComputedName": "user-kris", - "ComputedNameWithHost": "user-kris" - }, - "AllCaps": [ - "https://tailscale.com/cap/ssh", - "tailnet-display-name", - "https://tailscale.com/cap/tailnet-lock", - "ssh-behavior-v1", - "https://tailscale.com/cap/is-admin", - "probe-udp-lifetime", - "store-appc-routes", - "ssh-env-vars", - "https://tailscale.com/cap/file-sharing" - ], - "NodeKey": "nodekey:40d0f8f49fd519e4a4a2b7d278dcc8863254d4fb8b0219f1d1304cdd172e795f", - "MachineKey": "mkey:ff16066d907c58407972ee4a05a30386bd21bc0b420d8f9290eb70b95b3e1457", "Peers": [], - "DNS": { - "Routes": { - "tail78f774.ts.net.": null, - "ts.net.": [{ "Addr": "199.247.155.53" }, { "Addr": "2620:111:8007::53" }] - }, - "Domains": ["tail78f774.ts.net"], - "Proxied": true, - "ExitNodeFilteredSet": [".ts.net", ".tailscale.net"] - }, - "PacketFilter": [], - "PacketFilterRules": null, - "SSHPolicy": { "rules": [] }, - "CollectServices": false, - "DERPMap": { - "Regions": { - "1": { - "RegionID": 1, - "RegionCode": "nyc", - "RegionName": "New York City", - "Latitude": 40.7128, - "Longitude": -74.006, - "Nodes": [ - { - "Name": "1h", - "RegionID": 1, - "HostName": "derp1h.tailscale.com", - "IPv4": "199.38.181.93", - "IPv6": "2607:f740:f::afd", - "CanPort80": true - }, - { - "Name": "1g", - "RegionID": 1, - "HostName": "derp1g.tailscale.com", - "IPv4": "209.177.145.120", - "IPv6": "2607:f740:f::3eb", - "CanPort80": true - }, - { - "Name": "1i", - "RegionID": 1, - "HostName": "derp1i.tailscale.com", - "IPv4": "199.38.181.103", - "IPv6": "2607:f740:f::e19", - "CanPort80": true - }, - { - "Name": "1f", - "RegionID": 1, - "HostName": "derp1f.tailscale.com", - "IPv4": "199.38.181.104", - "IPv6": "2607:f740:f::bc", - "CanPort80": true - } - ] - }, - "10": { - "RegionID": 10, - "RegionCode": "sea", - "RegionName": "Seattle", - "Latitude": 47.609722, - "Longitude": -122.333056, - "Nodes": [ - { - "Name": "10c", - "RegionID": 10, - "HostName": "derp10c.tailscale.com", - "IPv4": "192.73.240.121", - "IPv6": "2607:f740:14::40c", - "CanPort80": true - }, - { - "Name": "10d", - "RegionID": 10, - "HostName": "derp10d.tailscale.com", - "IPv4": "192.73.240.132", - "IPv6": "2607:f740:14::500", - "CanPort80": true - }, - { - "Name": "10b", - "RegionID": 10, - "HostName": "derp10b.tailscale.com", - "IPv4": "192.73.240.161", - "IPv6": "2607:f740:14::61c", - "CanPort80": true - } - ] - }, - "11": { - "RegionID": 11, - "RegionCode": "sao", - "RegionName": "São Paulo", - "Latitude": -23.55, - "Longitude": -46.633333, - "Nodes": [ - { - "Name": "11f", - "RegionID": 11, - "HostName": "derp11f.tailscale.com", - "IPv4": "172.237.61.197", - "IPv6": "2600:3c0d::2000:3bff:fe44:6166", - "CanPort80": true - }, - { - "Name": "11g", - "RegionID": 11, - "HostName": "derp11g.tailscale.com", - "IPv4": "172.237.61.190", - "IPv6": "2600:3c0d::2000:62ff:febe:2e67", - "CanPort80": true - }, - { - "Name": "11e", - "RegionID": 11, - "HostName": "derp11e.tailscale.com", - "IPv4": "172.237.61.194", - "IPv6": "2600:3c0d::2000:d2ff:fe43:1790", - "CanPort80": true - } - ] - }, - "12": { - "RegionID": 12, - "RegionCode": "ord", - "RegionName": "Chicago", - "Latitude": 41.881944, - "Longitude": -87.627778, - "Nodes": [ - { - "Name": "12e", - "RegionID": 12, - "HostName": "derp12e.tailscale.com", - "IPv4": "209.177.158.15", - "IPv6": "2607:f740:e::b17", - "CanPort80": true - }, - { - "Name": "12f", - "RegionID": 12, - "HostName": "derp12f.tailscale.com", - "IPv4": "199.38.182.118", - "IPv6": "2607:f740:e::4c8", - "CanPort80": true - }, - { - "Name": "12d", - "RegionID": 12, - "HostName": "derp12d.tailscale.com", - "IPv4": "209.177.158.246", - "IPv6": "2607:f740:e::811", - "CanPort80": true - } - ] - }, - "13": { - "RegionID": 13, - "RegionCode": "den", - "RegionName": "Denver", - "Latitude": 39.7392, - "Longitude": -104.9849, - "Nodes": [ - { - "Name": "13c", - "RegionID": 13, - "HostName": "derp13c.tailscale.com", - "IPv4": "192.73.242.28", - "IPv6": "2607:f740:16::5c", - "CanPort80": true - }, - { - "Name": "13d", - "RegionID": 13, - "HostName": "derp13d.tailscale.com", - "IPv4": "192.73.242.204", - "IPv6": "2607:f740:16::c23", - "CanPort80": true - }, - { - "Name": "13b", - "RegionID": 13, - "HostName": "derp13b.tailscale.com", - "IPv4": "192.73.242.187", - "IPv6": "2607:f740:16::640", - "CanPort80": true - } - ] - }, - "14": { - "RegionID": 14, - "RegionCode": "ams", - "RegionName": "Amsterdam", - "Latitude": 52.372778, - "Longitude": 4.893611, - "Nodes": [ - { - "Name": "14c", - "RegionID": 14, - "HostName": "derp14c.tailscale.com", - "IPv4": "176.58.93.147", - "IPv6": "2a00:dd80:3c::b09", - "CanPort80": true - }, - { - "Name": "14d", - "RegionID": 14, - "HostName": "derp14d.tailscale.com", - "IPv4": "176.58.93.154", - "IPv6": "2a00:dd80:3c::3d5", - "CanPort80": true - }, - { - "Name": "14b", - "RegionID": 14, - "HostName": "derp14b.tailscale.com", - "IPv4": "176.58.93.248", - "IPv6": "2a00:dd80:3c::807", - "CanPort80": true - } - ] - }, - "15": { - "RegionID": 15, - "RegionCode": "jnb", - "RegionName": "Johannesburg", - "Latitude": -26.204444, - "Longitude": 28.045556, - "Nodes": [ - { - "Name": "15c", - "RegionID": 15, - "HostName": "derp15c.tailscale.com", - "IPv4": "102.67.165.185", - "IPv6": "2c0f:edb0:0:10::b59", - "CanPort80": true - }, - { - "Name": "15d", - "RegionID": 15, - "HostName": "derp15d.tailscale.com", - "IPv4": "102.67.165.36", - "IPv6": "2c0f:edb0:0:10::599", - "CanPort80": true - }, - { - "Name": "15b", - "RegionID": 15, - "HostName": "derp15b.tailscale.com", - "IPv4": "102.67.165.90", - "IPv6": "2c0f:edb0:0:10::963", - "CanPort80": true - } - ] - }, - "16": { - "RegionID": 16, - "RegionCode": "mia", - "RegionName": "Miami", - "Latitude": 25.78, - "Longitude": -80.21, - "Nodes": [ - { - "Name": "16c", - "RegionID": 16, - "HostName": "derp16c.tailscale.com", - "IPv4": "192.73.243.229", - "IPv6": "2607:f740:17::4e4", - "CanPort80": true - }, - { - "Name": "16d", - "RegionID": 16, - "HostName": "derp16d.tailscale.com", - "IPv4": "192.73.243.141", - "IPv6": "2607:f740:17::475", - "CanPort80": true - }, - { - "Name": "16b", - "RegionID": 16, - "HostName": "derp16b.tailscale.com", - "IPv4": "192.73.243.135", - "IPv6": "2607:f740:17::476", - "CanPort80": true - } - ] - }, - "17": { - "RegionID": 17, - "RegionCode": "lax", - "RegionName": "Los Angeles", - "Latitude": 34.05, - "Longitude": -118.25, - "Nodes": [ - { - "Name": "17c", - "RegionID": 17, - "HostName": "derp17c.tailscale.com", - "IPv4": "208.111.40.12", - "IPv6": "2607:f740:c::10", - "CanPort80": true - }, - { - "Name": "17d", - "RegionID": 17, - "HostName": "derp17d.tailscale.com", - "IPv4": "208.111.40.216", - "IPv6": "2607:f740:c::e1b", - "CanPort80": true - }, - { - "Name": "17b", - "RegionID": 17, - "HostName": "derp17b.tailscale.com", - "IPv4": "192.73.244.245", - "IPv6": "2607:f740:c::646", - "CanPort80": true - } - ] - }, - "18": { - "RegionID": 18, - "RegionCode": "par", - "RegionName": "Paris", - "Latitude": 48.856667, - "Longitude": 2.352222, - "Nodes": [ - { - "Name": "18c", - "RegionID": 18, - "HostName": "derp18c.tailscale.com", - "IPv4": "176.58.90.207", - "IPv6": "2a00:dd80:3e::c19", - "CanPort80": true - }, - { - "Name": "18d", - "RegionID": 18, - "HostName": "derp18d.tailscale.com", - "IPv4": "176.58.90.104", - "IPv6": "2a00:dd80:3e::f2e", - "CanPort80": true - }, - { - "Name": "18b", - "RegionID": 18, - "HostName": "derp18b.tailscale.com", - "IPv4": "176.58.90.147", - "IPv6": "2a00:dd80:3e::363", - "CanPort80": true - } - ] - }, - "19": { - "RegionID": 19, - "RegionCode": "mad", - "RegionName": "Madrid", - "Latitude": 40.416944, - "Longitude": -3.703333, - "Nodes": [ - { - "Name": "19c", - "RegionID": 19, - "HostName": "derp19c.tailscale.com", - "IPv4": "45.159.97.61", - "IPv6": "2a00:dd80:14:10::20", - "CanPort80": true - }, - { - "Name": "19d", - "RegionID": 19, - "HostName": "derp19d.tailscale.com", - "IPv4": "45.159.97.233", - "IPv6": "2a00:dd80:14:10::34a", - "CanPort80": true - }, - { - "Name": "19b", - "RegionID": 19, - "HostName": "derp19b.tailscale.com", - "IPv4": "45.159.97.144", - "IPv6": "2a00:dd80:14:10::335", - "CanPort80": true - } - ] - }, - "2": { - "RegionID": 2, - "RegionCode": "sfo", - "RegionName": "San Francisco", - "Latitude": 37.7775, - "Longitude": -122.416389, - "Nodes": [ - { - "Name": "2e", - "RegionID": 2, - "HostName": "derp2e.tailscale.com", - "IPv4": "192.73.252.134", - "IPv6": "2607:f740:0:3f::44c", - "CanPort80": true - }, - { - "Name": "2f", - "RegionID": 2, - "HostName": "derp2f.tailscale.com", - "IPv4": "208.111.34.178", - "IPv6": "2607:f740:0:3f::f4", - "CanPort80": true - }, - { - "Name": "2d", - "RegionID": 2, - "HostName": "derp2d.tailscale.com", - "IPv4": "192.73.252.65", - "IPv6": "2607:f740:0:3f::287", - "CanPort80": true - } - ] - }, - "20": { - "RegionID": 20, - "RegionCode": "hkg", - "RegionName": "Hong Kong", - "Latitude": 22.3193, - "Longitude": 114.1694, - "Nodes": [ - { - "Name": "20c", - "RegionID": 20, - "HostName": "derp20c.tailscale.com", - "IPv4": "205.147.105.30", - "IPv6": "2403:2500:8000:1::5fb", - "CanPort80": true - }, - { - "Name": "20d", - "RegionID": 20, - "HostName": "derp20d.tailscale.com", - "IPv4": "205.147.105.78", - "IPv6": "2403:2500:8000:1::e9a", - "CanPort80": true - }, - { - "Name": "20b", - "RegionID": 20, - "HostName": "derp20b.tailscale.com", - "IPv4": "103.6.84.152", - "IPv6": "2403:2500:8000:1::ef6", - "CanPort80": true - } - ] - }, - "21": { - "RegionID": 21, - "RegionCode": "tor", - "RegionName": "Toronto", - "Latitude": 43.741667, - "Longitude": -79.373333, - "Nodes": [ - { - "Name": "21c", - "RegionID": 21, - "HostName": "derp21c.tailscale.com", - "IPv4": "162.248.221.215", - "IPv6": "2607:f740:50::f10", - "CanPort80": true - }, - { - "Name": "21d", - "RegionID": 21, - "HostName": "derp21d.tailscale.com", - "IPv4": "162.248.221.248", - "IPv6": "2607:f740:50::ca4", - "CanPort80": true - }, - { - "Name": "21b", - "RegionID": 21, - "HostName": "derp21b.tailscale.com", - "IPv4": "162.248.221.199", - "IPv6": "2607:f740:50::1d1", - "CanPort80": true - } - ] - }, - "22": { - "RegionID": 22, - "RegionCode": "waw", - "RegionName": "Warsaw", - "Latitude": 52.23, - "Longitude": 21.011111, - "Nodes": [ - { - "Name": "22c", - "RegionID": 22, - "HostName": "derp22c.tailscale.com", - "IPv4": "45.159.98.253", - "IPv6": "2a00:dd80:40:100::3f", - "CanPort80": true - }, - { - "Name": "22d", - "RegionID": 22, - "HostName": "derp22d.tailscale.com", - "IPv4": "45.159.98.145", - "IPv6": "2a00:dd80:40:100::211", - "CanPort80": true - }, - { - "Name": "22b", - "RegionID": 22, - "HostName": "derp22b.tailscale.com", - "IPv4": "45.159.98.196", - "IPv6": "2a00:dd80:40:100::316", - "CanPort80": true - } - ] - }, - "23": { - "RegionID": 23, - "RegionCode": "dbi", - "RegionName": "Dubai", - "Latitude": 25.263056, - "Longitude": 55.297222, - "Nodes": [ - { - "Name": "23c", - "RegionID": 23, - "HostName": "derp23c.tailscale.com", - "IPv4": "185.34.3.207", - "IPv6": "2a00:dd80:3f:100::a50", - "CanPort80": true - }, - { - "Name": "23d", - "RegionID": 23, - "HostName": "derp23d.tailscale.com", - "IPv4": "185.34.3.75", - "IPv6": "2a00:dd80:3f:100::97e", - "CanPort80": true - }, - { - "Name": "23b", - "RegionID": 23, - "HostName": "derp23b.tailscale.com", - "IPv4": "185.34.3.232", - "IPv6": "2a00:dd80:3f:100::76f", - "CanPort80": true - } - ] - }, - "24": { - "RegionID": 24, - "RegionCode": "hnl", - "RegionName": "Honolulu", - "Latitude": 21.306944, - "Longitude": -157.858333, - "Nodes": [ - { - "Name": "24c", - "RegionID": 24, - "HostName": "derp24c.tailscale.com", - "IPv4": "208.83.233.233", - "IPv6": "2001:19f0:c000:c591:5400:04ff:fe26:2c5f", - "CanPort80": true - }, - { - "Name": "24d", - "RegionID": 24, - "HostName": "derp24d.tailscale.com", - "IPv4": "208.72.155.133", - "IPv6": "2001:19f0:c000:c564:5400:04ff:fe26:2ba8", - "CanPort80": true - }, - { - "Name": "24b", - "RegionID": 24, - "HostName": "derp24b.tailscale.com", - "IPv4": "208.83.234.151", - "IPv6": "2001:19f0:c000:c586:5400:04ff:fe26:2ba6", - "CanPort80": true - } - ] - }, - "25": { - "RegionID": 25, - "RegionCode": "nai", - "RegionName": "Nairobi", - "Latitude": -1.286389, - "Longitude": 36.817222, - "Nodes": [ - { - "Name": "25c", - "RegionID": 25, - "HostName": "derp25c.tailscale.com", - "IPv4": "102.67.167.37", - "IPv6": "2c0f:edb0:2000:1::2c7", - "CanPort80": true - }, - { - "Name": "25d", - "RegionID": 25, - "HostName": "derp25d.tailscale.com", - "IPv4": "102.67.167.188", - "IPv6": "2c0f:edb0:2000:1::188", - "CanPort80": true - }, - { - "Name": "25b", - "RegionID": 25, - "HostName": "derp25b.tailscale.com", - "IPv4": "102.67.167.245", - "IPv6": "2c0f:edb0:2000:1::2e9", - "CanPort80": true - } - ] - }, - "26": { - "RegionID": 26, - "RegionCode": "nue", - "RegionName": "Nuremberg", - "Latitude": 49.453889, - "Longitude": 11.0775, - "Nodes": [ - { - "Name": "26c", - "RegionID": 26, - "HostName": "derp26c.tailscale.com", - "IPv4": "49.12.193.137", - "IPv6": "2a01:4f8:1c1c:5c70::1", - "CanPort80": true - }, - { - "Name": "26d", - "RegionID": 26, - "HostName": "derp26d.tailscale.com", - "IPv4": "49.13.204.141", - "IPv6": "2a01:4f8:1c0c:7d06::1", - "CanPort80": true - }, - { - "Name": "26b", - "RegionID": 26, - "HostName": "derp26b.tailscale.com", - "IPv4": "167.235.72.200", - "IPv6": "2a01:4f8:1c1c:47b6::1", - "CanPort80": true - } - ] - }, - "27": { - "RegionID": 27, - "RegionCode": "iad", - "RegionName": "Ashburn", - "Latitude": 39.03, - "Longitude": -77.471111, - "Nodes": [ - { - "Name": "27d", - "RegionID": 27, - "HostName": "derp27d.tailscale.com", - "IPv4": "178.156.152.106", - "IPv6": "2a01:4ff:f0:3c8e::1", - "CanPort80": true - }, - { - "Name": "27c", - "RegionID": 27, - "HostName": "derp27c.tailscale.com", - "IPv4": "178.156.152.91", - "IPv6": "2a01:4ff:f0:3913::1", - "CanPort80": true - }, - { - "Name": "27e", - "RegionID": 27, - "HostName": "derp27e.tailscale.com", - "IPv4": "178.156.134.232", - "IPv6": "2a01:4ff:f0:28d4::1", - "CanPort80": true - }, - { - "Name": "27b", - "RegionID": 27, - "HostName": "derp27b.tailscale.com", - "IPv4": "5.161.218.233", - "IPv6": "2a01:4ff:f0:3db9::1", - "CanPort80": true - } - ] - }, - "28": { - "RegionID": 28, - "RegionCode": "hel", - "RegionName": "Helsinki", - "Latitude": 60.170833, - "Longitude": 24.9375, - "Nodes": [ - { - "Name": "28c", - "RegionID": 28, - "HostName": "derp28c.tailscale.com", - "IPv4": "95.217.2.165", - "IPv6": "2a01:4f9:c012:cd74::1", - "CanPort80": true - }, - { - "Name": "28d", - "RegionID": 28, - "HostName": "derp28d.tailscale.com", - "IPv4": "157.180.28.32", - "IPv6": "2a01:4f9:c012:2e5b::1", - "CanPort80": true - }, - { - "Name": "28b", - "RegionID": 28, - "HostName": "derp28b.tailscale.com", - "IPv4": "65.109.143.62", - "IPv6": "2a01:4f9:c012:d55c::1", - "CanPort80": true - } - ] - }, - "3": { - "RegionID": 3, - "RegionCode": "sin", - "RegionName": "Singapore", - "Latitude": 1.3521, - "Longitude": 103.8198, - "Nodes": [ - { - "Name": "3g", - "RegionID": 3, - "HostName": "derp3g.tailscale.com", - "IPv4": "172.237.72.79", - "IPv6": "2600:3c15::2000:adff:fe08:6fab", - "CanPort80": true - }, - { - "Name": "3f", - "RegionID": 3, - "HostName": "derp3f.tailscale.com", - "IPv4": "172.237.72.8", - "IPv6": "2600:3c15::2000:53ff:fe48:a668", - "CanPort80": true - }, - { - "Name": "3h", - "RegionID": 3, - "HostName": "derp3h.tailscale.com", - "IPv4": "172.237.66.30", - "IPv6": "2600:3c15::2000:3dff:fe44:50aa", - "CanPort80": true - }, - { - "Name": "3e", - "RegionID": 3, - "HostName": "derp3e.tailscale.com", - "IPv4": "172.237.72.43", - "IPv6": "2600:3c15::2000:6cff:fee4:d799", - "CanPort80": true - } - ] - }, - "4": { - "RegionID": 4, - "RegionCode": "fra", - "RegionName": "Frankfurt", - "Latitude": 50.1109, - "Longitude": 8.6821, - "Nodes": [ - { - "Name": "4h", - "RegionID": 4, - "HostName": "derp4h.tailscale.com", - "IPv4": "185.40.234.77", - "IPv6": "2a00:dd80:20::bcf", - "CanPort80": true - }, - { - "Name": "4g", - "RegionID": 4, - "HostName": "derp4g.tailscale.com", - "IPv4": "185.40.234.113", - "IPv6": "2a00:dd80:20::8f", - "CanPort80": true - }, - { - "Name": "4i", - "RegionID": 4, - "HostName": "derp4i.tailscale.com", - "IPv4": "185.40.234.53", - "IPv6": "2a00:dd80:20::8a6", - "CanPort80": true - }, - { - "Name": "4f", - "RegionID": 4, - "HostName": "derp4f.tailscale.com", - "IPv4": "185.40.234.219", - "IPv6": "2a00:dd80:20::a25", - "CanPort80": true - } - ] - }, - "5": { - "RegionID": 5, - "RegionCode": "syd", - "RegionName": "Sydney", - "Latitude": -33.867778, - "Longitude": 151.21, - "Nodes": [ - { - "Name": "5f", - "RegionID": 5, - "HostName": "derp5f.tailscale.com", - "IPv4": "172.105.166.103", - "IPv6": "2400:8907::2000:ccff:fe1f:80da", - "CanPort80": true - }, - { - "Name": "5g", - "RegionID": 5, - "HostName": "derp5g.tailscale.com", - "IPv4": "172.105.169.57", - "IPv6": "2400:8907::2000:2fff:fea7:57f4", - "CanPort80": true - }, - { - "Name": "5e", - "RegionID": 5, - "HostName": "derp5e.tailscale.com", - "IPv4": "172.105.179.230", - "IPv6": "2400:8907::2000:ceff:fe8d:4f4e", - "CanPort80": true - } - ] - }, - "6": { - "RegionID": 6, - "RegionCode": "blr", - "RegionName": "Bengaluru", - "Latitude": 12.9716, - "Longitude": 77.5946, - "Nodes": [ - { - "Name": "6a", - "RegionID": 6, - "HostName": "derp6.tailscale.com", - "IPv4": "68.183.90.120", - "IPv6": "2400:6180:100:d0::982:d001", - "CanPort80": true - } - ] - }, - "7": { - "RegionID": 7, - "RegionCode": "tok", - "RegionName": "Tokyo", - "Latitude": 35.6764, - "Longitude": 139.65, - "Nodes": [ - { - "Name": "7g", - "RegionID": 7, - "HostName": "derp7g.tailscale.com", - "IPv4": "172.238.6.179", - "IPv6": "2600:3c18::2000:3fff:fe80:3ebd", - "CanPort80": true - }, - { - "Name": "7f", - "RegionID": 7, - "HostName": "derp7f.tailscale.com", - "IPv4": "172.238.6.34", - "IPv6": "2600:3c18::2000:acff:fe8e:3ed5", - "CanPort80": true - }, - { - "Name": "7h", - "RegionID": 7, - "HostName": "derp7h.tailscale.com", - "IPv4": "172.237.28.183", - "IPv6": "2600:3c18::2000:b1ff:fea9:4560", - "CanPort80": true - }, - { - "Name": "7e", - "RegionID": 7, - "HostName": "derp7e.tailscale.com", - "IPv4": "172.238.6.180", - "IPv6": "2600:3c18::2000:60ff:fe0f:6e83", - "STUNOnly": true, - "CanPort80": true - } - ] - }, - "8": { - "RegionID": 8, - "RegionCode": "lhr", - "RegionName": "London", - "Latitude": 51.5072, - "Longitude": 0.1276, - "Nodes": [ - { - "Name": "8f", - "RegionID": 8, - "HostName": "derp8f.tailscale.com", - "IPv4": "176.58.88.183", - "IPv6": "2a00:dd80:3a::dfa", - "CanPort80": true - }, - { - "Name": "8g", - "RegionID": 8, - "HostName": "derp8g.tailscale.com", - "IPv4": "176.58.92.254", - "IPv6": "2a00:dd80:3a::ed", - "CanPort80": true - }, - { - "Name": "8e", - "RegionID": 8, - "HostName": "derp8e.tailscale.com", - "IPv4": "176.58.92.144", - "IPv6": "2a00:dd80:3a::b33", - "CanPort80": true - } - ] - }, - "9": { - "RegionID": 9, - "RegionCode": "dfw", - "RegionName": "Dallas", - "Latitude": 32.779167, - "Longitude": -96.808889, - "Nodes": [ - { - "Name": "9e", - "RegionID": 9, - "HostName": "derp9e.tailscale.com", - "IPv4": "192.73.248.83", - "IPv6": "2607:f740:100::359", - "CanPort80": true - }, - { - "Name": "9f", - "RegionID": 9, - "HostName": "derp9f.tailscale.com", - "IPv4": "209.177.156.197", - "IPv6": "2607:f740:100::cad", - "CanPort80": true - }, - { - "Name": "9d", - "RegionID": 9, - "HostName": "derp9d.tailscale.com", - "IPv4": "209.177.156.94", - "IPv6": "2607:f740:100::c05", - "CanPort80": true - } - ] - } - } - }, - "DisplayMessages": null, - "TKAEnabled": false, - "TKAHead": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", - "Domain": "kratail2tid@passkey", - "DomainAuditLogID": "", - "UserProfiles": { - "4538565228176803": { - "ID": 4538565228176803, - "LoginName": "kristoffer@dalby.cc", - "DisplayName": "kristoffer" - } - } + "PacketFilterRules": 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.124.195.93": { - "peer_name": "exit-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-mon/tailscaled.sock whois --json 100.124.195.93", - "response": null - }, - "100.116.18.24": { - "peer_name": "exit-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-mon/tailscaled.sock whois --json 100.116.18.24", - "response": null - }, - "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.107.162.14": { - "peer_name": "group-a-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-mon/tailscaled.sock whois --json 100.107.162.14", - "response": null - }, - "100.77.135.18": { - "peer_name": "group-b-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-mon/tailscaled.sock whois --json 100.77.135.18", - "response": null - }, - "100.105.127.107": { - "peer_name": "multi-exit-router", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-mon/tailscaled.sock whois --json 100.105.127.107", - "response": null - }, - "100.109.43.124": { - "peer_name": "router-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-mon/tailscaled.sock whois --json 100.109.43.124", - "response": null - }, - "100.65.172.123": { - "peer_name": "router-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-mon/tailscaled.sock whois --json 100.65.172.123", - "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 - } - }, "netmap": { - "SelfNode": { - "ID": 1840115676059256, - "StableID": "nFzZ7giPNF11CNTRL", - "Name": "user-mon.tail78f774.ts.net.", - "User": 3982058329734709, - "Key": "nodekey:1ca6cca66d2b3811ec290c2f7ac30125c3568e19e303a8e30f6b165c9ee75a51", - "KeyExpiry": "2026-08-19T14:09:00Z", - "DiscoKey": "discokey:67ba1473894f09b564073adb12b27df2a45c513afd9e48922a0346d5d2715d12", - "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:36593", "10.65.0.27:36593", "172.17.0.1:36593"], - "Hostinfo": { - "Hostname": "user-mon", - "Services": [ - { "Proto": "peerapi4", "Port": 33201 }, - { "Proto": "peerapi6", "Port": 33201 }, - { "Proto": "peerapi-dns-proxy", "Port": 1 } - ] - }, - "Created": "2026-02-20T14:09:00.203639664Z", - "MachineAuthorized": true, - "CapMap": { - "https://tailscale.com/cap/file-sharing": null, - "https://tailscale.com/cap/is-admin": null, - "https://tailscale.com/cap/ssh": null, - "https://tailscale.com/cap/tailnet-lock": null, - "probe-udp-lifetime": null, - "ssh-behavior-v1": null, - "ssh-env-vars": null, - "store-appc-routes": null, - "tailnet-display-name": ["kratail2tid@passkey"] - }, - "ComputedName": "user-mon", - "ComputedNameWithHost": "user-mon" - }, - "AllCaps": [ - "probe-udp-lifetime", - "tailnet-display-name", - "https://tailscale.com/cap/is-admin", - "ssh-behavior-v1", - "https://tailscale.com/cap/file-sharing", - "ssh-env-vars", - "https://tailscale.com/cap/tailnet-lock", - "store-appc-routes", - "https://tailscale.com/cap/ssh" - ], - "NodeKey": "nodekey:1ca6cca66d2b3811ec290c2f7ac30125c3568e19e303a8e30f6b165c9ee75a51", - "MachineKey": "mkey:d63fc325663eef5dabd4d236e1fa5a26ed14ad31ea0711840cf755a5e8a9df39", "Peers": [], - "DNS": { - "Routes": { - "tail78f774.ts.net.": null, - "ts.net.": [{ "Addr": "199.247.155.53" }, { "Addr": "2620:111:8007::53" }] - }, - "Domains": ["tail78f774.ts.net"], - "Proxied": true, - "ExitNodeFilteredSet": [".ts.net", ".tailscale.net"] - }, - "PacketFilter": [], - "PacketFilterRules": null, - "SSHPolicy": { "rules": [] }, - "CollectServices": false, - "DERPMap": { - "Regions": { - "1": { - "RegionID": 1, - "RegionCode": "nyc", - "RegionName": "New York City", - "Latitude": 40.7128, - "Longitude": -74.006, - "Nodes": [ - { - "Name": "1h", - "RegionID": 1, - "HostName": "derp1h.tailscale.com", - "IPv4": "199.38.181.93", - "IPv6": "2607:f740:f::afd", - "CanPort80": true - }, - { - "Name": "1g", - "RegionID": 1, - "HostName": "derp1g.tailscale.com", - "IPv4": "209.177.145.120", - "IPv6": "2607:f740:f::3eb", - "CanPort80": true - }, - { - "Name": "1i", - "RegionID": 1, - "HostName": "derp1i.tailscale.com", - "IPv4": "199.38.181.103", - "IPv6": "2607:f740:f::e19", - "CanPort80": true - }, - { - "Name": "1f", - "RegionID": 1, - "HostName": "derp1f.tailscale.com", - "IPv4": "199.38.181.104", - "IPv6": "2607:f740:f::bc", - "CanPort80": true - } - ] - }, - "10": { - "RegionID": 10, - "RegionCode": "sea", - "RegionName": "Seattle", - "Latitude": 47.609722, - "Longitude": -122.333056, - "Nodes": [ - { - "Name": "10c", - "RegionID": 10, - "HostName": "derp10c.tailscale.com", - "IPv4": "192.73.240.121", - "IPv6": "2607:f740:14::40c", - "CanPort80": true - }, - { - "Name": "10d", - "RegionID": 10, - "HostName": "derp10d.tailscale.com", - "IPv4": "192.73.240.132", - "IPv6": "2607:f740:14::500", - "CanPort80": true - }, - { - "Name": "10b", - "RegionID": 10, - "HostName": "derp10b.tailscale.com", - "IPv4": "192.73.240.161", - "IPv6": "2607:f740:14::61c", - "CanPort80": true - } - ] - }, - "11": { - "RegionID": 11, - "RegionCode": "sao", - "RegionName": "São Paulo", - "Latitude": -23.55, - "Longitude": -46.633333, - "Nodes": [ - { - "Name": "11f", - "RegionID": 11, - "HostName": "derp11f.tailscale.com", - "IPv4": "172.237.61.197", - "IPv6": "2600:3c0d::2000:3bff:fe44:6166", - "CanPort80": true - }, - { - "Name": "11g", - "RegionID": 11, - "HostName": "derp11g.tailscale.com", - "IPv4": "172.237.61.190", - "IPv6": "2600:3c0d::2000:62ff:febe:2e67", - "CanPort80": true - }, - { - "Name": "11e", - "RegionID": 11, - "HostName": "derp11e.tailscale.com", - "IPv4": "172.237.61.194", - "IPv6": "2600:3c0d::2000:d2ff:fe43:1790", - "CanPort80": true - } - ] - }, - "12": { - "RegionID": 12, - "RegionCode": "ord", - "RegionName": "Chicago", - "Latitude": 41.881944, - "Longitude": -87.627778, - "Nodes": [ - { - "Name": "12e", - "RegionID": 12, - "HostName": "derp12e.tailscale.com", - "IPv4": "209.177.158.15", - "IPv6": "2607:f740:e::b17", - "CanPort80": true - }, - { - "Name": "12f", - "RegionID": 12, - "HostName": "derp12f.tailscale.com", - "IPv4": "199.38.182.118", - "IPv6": "2607:f740:e::4c8", - "CanPort80": true - }, - { - "Name": "12d", - "RegionID": 12, - "HostName": "derp12d.tailscale.com", - "IPv4": "209.177.158.246", - "IPv6": "2607:f740:e::811", - "CanPort80": true - } - ] - }, - "13": { - "RegionID": 13, - "RegionCode": "den", - "RegionName": "Denver", - "Latitude": 39.7392, - "Longitude": -104.9849, - "Nodes": [ - { - "Name": "13c", - "RegionID": 13, - "HostName": "derp13c.tailscale.com", - "IPv4": "192.73.242.28", - "IPv6": "2607:f740:16::5c", - "CanPort80": true - }, - { - "Name": "13d", - "RegionID": 13, - "HostName": "derp13d.tailscale.com", - "IPv4": "192.73.242.204", - "IPv6": "2607:f740:16::c23", - "CanPort80": true - }, - { - "Name": "13b", - "RegionID": 13, - "HostName": "derp13b.tailscale.com", - "IPv4": "192.73.242.187", - "IPv6": "2607:f740:16::640", - "CanPort80": true - } - ] - }, - "14": { - "RegionID": 14, - "RegionCode": "ams", - "RegionName": "Amsterdam", - "Latitude": 52.372778, - "Longitude": 4.893611, - "Nodes": [ - { - "Name": "14c", - "RegionID": 14, - "HostName": "derp14c.tailscale.com", - "IPv4": "176.58.93.147", - "IPv6": "2a00:dd80:3c::b09", - "CanPort80": true - }, - { - "Name": "14d", - "RegionID": 14, - "HostName": "derp14d.tailscale.com", - "IPv4": "176.58.93.154", - "IPv6": "2a00:dd80:3c::3d5", - "CanPort80": true - }, - { - "Name": "14b", - "RegionID": 14, - "HostName": "derp14b.tailscale.com", - "IPv4": "176.58.93.248", - "IPv6": "2a00:dd80:3c::807", - "CanPort80": true - } - ] - }, - "15": { - "RegionID": 15, - "RegionCode": "jnb", - "RegionName": "Johannesburg", - "Latitude": -26.204444, - "Longitude": 28.045556, - "Nodes": [ - { - "Name": "15c", - "RegionID": 15, - "HostName": "derp15c.tailscale.com", - "IPv4": "102.67.165.185", - "IPv6": "2c0f:edb0:0:10::b59", - "CanPort80": true - }, - { - "Name": "15d", - "RegionID": 15, - "HostName": "derp15d.tailscale.com", - "IPv4": "102.67.165.36", - "IPv6": "2c0f:edb0:0:10::599", - "CanPort80": true - }, - { - "Name": "15b", - "RegionID": 15, - "HostName": "derp15b.tailscale.com", - "IPv4": "102.67.165.90", - "IPv6": "2c0f:edb0:0:10::963", - "CanPort80": true - } - ] - }, - "16": { - "RegionID": 16, - "RegionCode": "mia", - "RegionName": "Miami", - "Latitude": 25.78, - "Longitude": -80.21, - "Nodes": [ - { - "Name": "16c", - "RegionID": 16, - "HostName": "derp16c.tailscale.com", - "IPv4": "192.73.243.229", - "IPv6": "2607:f740:17::4e4", - "CanPort80": true - }, - { - "Name": "16d", - "RegionID": 16, - "HostName": "derp16d.tailscale.com", - "IPv4": "192.73.243.141", - "IPv6": "2607:f740:17::475", - "CanPort80": true - }, - { - "Name": "16b", - "RegionID": 16, - "HostName": "derp16b.tailscale.com", - "IPv4": "192.73.243.135", - "IPv6": "2607:f740:17::476", - "CanPort80": true - } - ] - }, - "17": { - "RegionID": 17, - "RegionCode": "lax", - "RegionName": "Los Angeles", - "Latitude": 34.05, - "Longitude": -118.25, - "Nodes": [ - { - "Name": "17c", - "RegionID": 17, - "HostName": "derp17c.tailscale.com", - "IPv4": "208.111.40.12", - "IPv6": "2607:f740:c::10", - "CanPort80": true - }, - { - "Name": "17d", - "RegionID": 17, - "HostName": "derp17d.tailscale.com", - "IPv4": "208.111.40.216", - "IPv6": "2607:f740:c::e1b", - "CanPort80": true - }, - { - "Name": "17b", - "RegionID": 17, - "HostName": "derp17b.tailscale.com", - "IPv4": "192.73.244.245", - "IPv6": "2607:f740:c::646", - "CanPort80": true - } - ] - }, - "18": { - "RegionID": 18, - "RegionCode": "par", - "RegionName": "Paris", - "Latitude": 48.856667, - "Longitude": 2.352222, - "Nodes": [ - { - "Name": "18c", - "RegionID": 18, - "HostName": "derp18c.tailscale.com", - "IPv4": "176.58.90.207", - "IPv6": "2a00:dd80:3e::c19", - "CanPort80": true - }, - { - "Name": "18d", - "RegionID": 18, - "HostName": "derp18d.tailscale.com", - "IPv4": "176.58.90.104", - "IPv6": "2a00:dd80:3e::f2e", - "CanPort80": true - }, - { - "Name": "18b", - "RegionID": 18, - "HostName": "derp18b.tailscale.com", - "IPv4": "176.58.90.147", - "IPv6": "2a00:dd80:3e::363", - "CanPort80": true - } - ] - }, - "19": { - "RegionID": 19, - "RegionCode": "mad", - "RegionName": "Madrid", - "Latitude": 40.416944, - "Longitude": -3.703333, - "Nodes": [ - { - "Name": "19c", - "RegionID": 19, - "HostName": "derp19c.tailscale.com", - "IPv4": "45.159.97.61", - "IPv6": "2a00:dd80:14:10::20", - "CanPort80": true - }, - { - "Name": "19d", - "RegionID": 19, - "HostName": "derp19d.tailscale.com", - "IPv4": "45.159.97.233", - "IPv6": "2a00:dd80:14:10::34a", - "CanPort80": true - }, - { - "Name": "19b", - "RegionID": 19, - "HostName": "derp19b.tailscale.com", - "IPv4": "45.159.97.144", - "IPv6": "2a00:dd80:14:10::335", - "CanPort80": true - } - ] - }, - "2": { - "RegionID": 2, - "RegionCode": "sfo", - "RegionName": "San Francisco", - "Latitude": 37.7775, - "Longitude": -122.416389, - "Nodes": [ - { - "Name": "2e", - "RegionID": 2, - "HostName": "derp2e.tailscale.com", - "IPv4": "192.73.252.134", - "IPv6": "2607:f740:0:3f::44c", - "CanPort80": true - }, - { - "Name": "2f", - "RegionID": 2, - "HostName": "derp2f.tailscale.com", - "IPv4": "208.111.34.178", - "IPv6": "2607:f740:0:3f::f4", - "CanPort80": true - }, - { - "Name": "2d", - "RegionID": 2, - "HostName": "derp2d.tailscale.com", - "IPv4": "192.73.252.65", - "IPv6": "2607:f740:0:3f::287", - "CanPort80": true - } - ] - }, - "20": { - "RegionID": 20, - "RegionCode": "hkg", - "RegionName": "Hong Kong", - "Latitude": 22.3193, - "Longitude": 114.1694, - "Nodes": [ - { - "Name": "20c", - "RegionID": 20, - "HostName": "derp20c.tailscale.com", - "IPv4": "205.147.105.30", - "IPv6": "2403:2500:8000:1::5fb", - "CanPort80": true - }, - { - "Name": "20d", - "RegionID": 20, - "HostName": "derp20d.tailscale.com", - "IPv4": "205.147.105.78", - "IPv6": "2403:2500:8000:1::e9a", - "CanPort80": true - }, - { - "Name": "20b", - "RegionID": 20, - "HostName": "derp20b.tailscale.com", - "IPv4": "103.6.84.152", - "IPv6": "2403:2500:8000:1::ef6", - "CanPort80": true - } - ] - }, - "21": { - "RegionID": 21, - "RegionCode": "tor", - "RegionName": "Toronto", - "Latitude": 43.741667, - "Longitude": -79.373333, - "Nodes": [ - { - "Name": "21c", - "RegionID": 21, - "HostName": "derp21c.tailscale.com", - "IPv4": "162.248.221.215", - "IPv6": "2607:f740:50::f10", - "CanPort80": true - }, - { - "Name": "21d", - "RegionID": 21, - "HostName": "derp21d.tailscale.com", - "IPv4": "162.248.221.248", - "IPv6": "2607:f740:50::ca4", - "CanPort80": true - }, - { - "Name": "21b", - "RegionID": 21, - "HostName": "derp21b.tailscale.com", - "IPv4": "162.248.221.199", - "IPv6": "2607:f740:50::1d1", - "CanPort80": true - } - ] - }, - "22": { - "RegionID": 22, - "RegionCode": "waw", - "RegionName": "Warsaw", - "Latitude": 52.23, - "Longitude": 21.011111, - "Nodes": [ - { - "Name": "22c", - "RegionID": 22, - "HostName": "derp22c.tailscale.com", - "IPv4": "45.159.98.253", - "IPv6": "2a00:dd80:40:100::3f", - "CanPort80": true - }, - { - "Name": "22d", - "RegionID": 22, - "HostName": "derp22d.tailscale.com", - "IPv4": "45.159.98.145", - "IPv6": "2a00:dd80:40:100::211", - "CanPort80": true - }, - { - "Name": "22b", - "RegionID": 22, - "HostName": "derp22b.tailscale.com", - "IPv4": "45.159.98.196", - "IPv6": "2a00:dd80:40:100::316", - "CanPort80": true - } - ] - }, - "23": { - "RegionID": 23, - "RegionCode": "dbi", - "RegionName": "Dubai", - "Latitude": 25.263056, - "Longitude": 55.297222, - "Nodes": [ - { - "Name": "23c", - "RegionID": 23, - "HostName": "derp23c.tailscale.com", - "IPv4": "185.34.3.207", - "IPv6": "2a00:dd80:3f:100::a50", - "CanPort80": true - }, - { - "Name": "23d", - "RegionID": 23, - "HostName": "derp23d.tailscale.com", - "IPv4": "185.34.3.75", - "IPv6": "2a00:dd80:3f:100::97e", - "CanPort80": true - }, - { - "Name": "23b", - "RegionID": 23, - "HostName": "derp23b.tailscale.com", - "IPv4": "185.34.3.232", - "IPv6": "2a00:dd80:3f:100::76f", - "CanPort80": true - } - ] - }, - "24": { - "RegionID": 24, - "RegionCode": "hnl", - "RegionName": "Honolulu", - "Latitude": 21.306944, - "Longitude": -157.858333, - "Nodes": [ - { - "Name": "24c", - "RegionID": 24, - "HostName": "derp24c.tailscale.com", - "IPv4": "208.83.233.233", - "IPv6": "2001:19f0:c000:c591:5400:04ff:fe26:2c5f", - "CanPort80": true - }, - { - "Name": "24d", - "RegionID": 24, - "HostName": "derp24d.tailscale.com", - "IPv4": "208.72.155.133", - "IPv6": "2001:19f0:c000:c564:5400:04ff:fe26:2ba8", - "CanPort80": true - }, - { - "Name": "24b", - "RegionID": 24, - "HostName": "derp24b.tailscale.com", - "IPv4": "208.83.234.151", - "IPv6": "2001:19f0:c000:c586:5400:04ff:fe26:2ba6", - "CanPort80": true - } - ] - }, - "25": { - "RegionID": 25, - "RegionCode": "nai", - "RegionName": "Nairobi", - "Latitude": -1.286389, - "Longitude": 36.817222, - "Nodes": [ - { - "Name": "25c", - "RegionID": 25, - "HostName": "derp25c.tailscale.com", - "IPv4": "102.67.167.37", - "IPv6": "2c0f:edb0:2000:1::2c7", - "CanPort80": true - }, - { - "Name": "25d", - "RegionID": 25, - "HostName": "derp25d.tailscale.com", - "IPv4": "102.67.167.188", - "IPv6": "2c0f:edb0:2000:1::188", - "CanPort80": true - }, - { - "Name": "25b", - "RegionID": 25, - "HostName": "derp25b.tailscale.com", - "IPv4": "102.67.167.245", - "IPv6": "2c0f:edb0:2000:1::2e9", - "CanPort80": true - } - ] - }, - "26": { - "RegionID": 26, - "RegionCode": "nue", - "RegionName": "Nuremberg", - "Latitude": 49.453889, - "Longitude": 11.0775, - "Nodes": [ - { - "Name": "26c", - "RegionID": 26, - "HostName": "derp26c.tailscale.com", - "IPv4": "49.12.193.137", - "IPv6": "2a01:4f8:1c1c:5c70::1", - "CanPort80": true - }, - { - "Name": "26d", - "RegionID": 26, - "HostName": "derp26d.tailscale.com", - "IPv4": "49.13.204.141", - "IPv6": "2a01:4f8:1c0c:7d06::1", - "CanPort80": true - }, - { - "Name": "26b", - "RegionID": 26, - "HostName": "derp26b.tailscale.com", - "IPv4": "167.235.72.200", - "IPv6": "2a01:4f8:1c1c:47b6::1", - "CanPort80": true - } - ] - }, - "27": { - "RegionID": 27, - "RegionCode": "iad", - "RegionName": "Ashburn", - "Latitude": 39.03, - "Longitude": -77.471111, - "Nodes": [ - { - "Name": "27d", - "RegionID": 27, - "HostName": "derp27d.tailscale.com", - "IPv4": "178.156.152.106", - "IPv6": "2a01:4ff:f0:3c8e::1", - "CanPort80": true - }, - { - "Name": "27c", - "RegionID": 27, - "HostName": "derp27c.tailscale.com", - "IPv4": "178.156.152.91", - "IPv6": "2a01:4ff:f0:3913::1", - "CanPort80": true - }, - { - "Name": "27e", - "RegionID": 27, - "HostName": "derp27e.tailscale.com", - "IPv4": "178.156.134.232", - "IPv6": "2a01:4ff:f0:28d4::1", - "CanPort80": true - }, - { - "Name": "27b", - "RegionID": 27, - "HostName": "derp27b.tailscale.com", - "IPv4": "5.161.218.233", - "IPv6": "2a01:4ff:f0:3db9::1", - "CanPort80": true - } - ] - }, - "28": { - "RegionID": 28, - "RegionCode": "hel", - "RegionName": "Helsinki", - "Latitude": 60.170833, - "Longitude": 24.9375, - "Nodes": [ - { - "Name": "28c", - "RegionID": 28, - "HostName": "derp28c.tailscale.com", - "IPv4": "95.217.2.165", - "IPv6": "2a01:4f9:c012:cd74::1", - "CanPort80": true - }, - { - "Name": "28d", - "RegionID": 28, - "HostName": "derp28d.tailscale.com", - "IPv4": "157.180.28.32", - "IPv6": "2a01:4f9:c012:2e5b::1", - "CanPort80": true - }, - { - "Name": "28b", - "RegionID": 28, - "HostName": "derp28b.tailscale.com", - "IPv4": "65.109.143.62", - "IPv6": "2a01:4f9:c012:d55c::1", - "CanPort80": true - } - ] - }, - "3": { - "RegionID": 3, - "RegionCode": "sin", - "RegionName": "Singapore", - "Latitude": 1.3521, - "Longitude": 103.8198, - "Nodes": [ - { - "Name": "3g", - "RegionID": 3, - "HostName": "derp3g.tailscale.com", - "IPv4": "172.237.72.79", - "IPv6": "2600:3c15::2000:adff:fe08:6fab", - "CanPort80": true - }, - { - "Name": "3f", - "RegionID": 3, - "HostName": "derp3f.tailscale.com", - "IPv4": "172.237.72.8", - "IPv6": "2600:3c15::2000:53ff:fe48:a668", - "CanPort80": true - }, - { - "Name": "3h", - "RegionID": 3, - "HostName": "derp3h.tailscale.com", - "IPv4": "172.237.66.30", - "IPv6": "2600:3c15::2000:3dff:fe44:50aa", - "CanPort80": true - }, - { - "Name": "3e", - "RegionID": 3, - "HostName": "derp3e.tailscale.com", - "IPv4": "172.237.72.43", - "IPv6": "2600:3c15::2000:6cff:fee4:d799", - "CanPort80": true - } - ] - }, - "4": { - "RegionID": 4, - "RegionCode": "fra", - "RegionName": "Frankfurt", - "Latitude": 50.1109, - "Longitude": 8.6821, - "Nodes": [ - { - "Name": "4h", - "RegionID": 4, - "HostName": "derp4h.tailscale.com", - "IPv4": "185.40.234.77", - "IPv6": "2a00:dd80:20::bcf", - "CanPort80": true - }, - { - "Name": "4g", - "RegionID": 4, - "HostName": "derp4g.tailscale.com", - "IPv4": "185.40.234.113", - "IPv6": "2a00:dd80:20::8f", - "CanPort80": true - }, - { - "Name": "4i", - "RegionID": 4, - "HostName": "derp4i.tailscale.com", - "IPv4": "185.40.234.53", - "IPv6": "2a00:dd80:20::8a6", - "CanPort80": true - }, - { - "Name": "4f", - "RegionID": 4, - "HostName": "derp4f.tailscale.com", - "IPv4": "185.40.234.219", - "IPv6": "2a00:dd80:20::a25", - "CanPort80": true - } - ] - }, - "5": { - "RegionID": 5, - "RegionCode": "syd", - "RegionName": "Sydney", - "Latitude": -33.867778, - "Longitude": 151.21, - "Nodes": [ - { - "Name": "5f", - "RegionID": 5, - "HostName": "derp5f.tailscale.com", - "IPv4": "172.105.166.103", - "IPv6": "2400:8907::2000:ccff:fe1f:80da", - "CanPort80": true - }, - { - "Name": "5g", - "RegionID": 5, - "HostName": "derp5g.tailscale.com", - "IPv4": "172.105.169.57", - "IPv6": "2400:8907::2000:2fff:fea7:57f4", - "CanPort80": true - }, - { - "Name": "5e", - "RegionID": 5, - "HostName": "derp5e.tailscale.com", - "IPv4": "172.105.179.230", - "IPv6": "2400:8907::2000:ceff:fe8d:4f4e", - "CanPort80": true - } - ] - }, - "6": { - "RegionID": 6, - "RegionCode": "blr", - "RegionName": "Bengaluru", - "Latitude": 12.9716, - "Longitude": 77.5946, - "Nodes": [ - { - "Name": "6a", - "RegionID": 6, - "HostName": "derp6.tailscale.com", - "IPv4": "68.183.90.120", - "IPv6": "2400:6180:100:d0::982:d001", - "CanPort80": true - } - ] - }, - "7": { - "RegionID": 7, - "RegionCode": "tok", - "RegionName": "Tokyo", - "Latitude": 35.6764, - "Longitude": 139.65, - "Nodes": [ - { - "Name": "7g", - "RegionID": 7, - "HostName": "derp7g.tailscale.com", - "IPv4": "172.238.6.179", - "IPv6": "2600:3c18::2000:3fff:fe80:3ebd", - "CanPort80": true - }, - { - "Name": "7f", - "RegionID": 7, - "HostName": "derp7f.tailscale.com", - "IPv4": "172.238.6.34", - "IPv6": "2600:3c18::2000:acff:fe8e:3ed5", - "CanPort80": true - }, - { - "Name": "7h", - "RegionID": 7, - "HostName": "derp7h.tailscale.com", - "IPv4": "172.237.28.183", - "IPv6": "2600:3c18::2000:b1ff:fea9:4560", - "CanPort80": true - }, - { - "Name": "7e", - "RegionID": 7, - "HostName": "derp7e.tailscale.com", - "IPv4": "172.238.6.180", - "IPv6": "2600:3c18::2000:60ff:fe0f:6e83", - "STUNOnly": true, - "CanPort80": true - } - ] - }, - "8": { - "RegionID": 8, - "RegionCode": "lhr", - "RegionName": "London", - "Latitude": 51.5072, - "Longitude": 0.1276, - "Nodes": [ - { - "Name": "8f", - "RegionID": 8, - "HostName": "derp8f.tailscale.com", - "IPv4": "176.58.88.183", - "IPv6": "2a00:dd80:3a::dfa", - "CanPort80": true - }, - { - "Name": "8g", - "RegionID": 8, - "HostName": "derp8g.tailscale.com", - "IPv4": "176.58.92.254", - "IPv6": "2a00:dd80:3a::ed", - "CanPort80": true - }, - { - "Name": "8e", - "RegionID": 8, - "HostName": "derp8e.tailscale.com", - "IPv4": "176.58.92.144", - "IPv6": "2a00:dd80:3a::b33", - "CanPort80": true - } - ] - }, - "9": { - "RegionID": 9, - "RegionCode": "dfw", - "RegionName": "Dallas", - "Latitude": 32.779167, - "Longitude": -96.808889, - "Nodes": [ - { - "Name": "9e", - "RegionID": 9, - "HostName": "derp9e.tailscale.com", - "IPv4": "192.73.248.83", - "IPv6": "2607:f740:100::359", - "CanPort80": true - }, - { - "Name": "9f", - "RegionID": 9, - "HostName": "derp9f.tailscale.com", - "IPv4": "209.177.156.197", - "IPv6": "2607:f740:100::cad", - "CanPort80": true - }, - { - "Name": "9d", - "RegionID": 9, - "HostName": "derp9d.tailscale.com", - "IPv4": "209.177.156.94", - "IPv6": "2607:f740:100::c05", - "CanPort80": true - } - ] - } - } - }, - "DisplayMessages": null, - "TKAEnabled": false, - "TKAHead": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", - "Domain": "kratail2tid@passkey", - "DomainAuditLogID": "", - "UserProfiles": { - "3982058329734709": { - "ID": 3982058329734709, - "LoginName": "monitorpasskeykradalby@passkey", - "DisplayName": "monitorpasskeykradalby" - } - } + "PacketFilterRules": 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.124.195.93": { - "peer_name": "exit-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user1/tailscaled.sock whois --json 100.124.195.93", - "response": null - }, - "100.116.18.24": { - "peer_name": "exit-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user1/tailscaled.sock whois --json 100.116.18.24", - "response": null - }, - "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.107.162.14": { - "peer_name": "group-a-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user1/tailscaled.sock whois --json 100.107.162.14", - "response": null - }, - "100.77.135.18": { - "peer_name": "group-b-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user1/tailscaled.sock whois --json 100.77.135.18", - "response": null - }, - "100.105.127.107": { - "peer_name": "multi-exit-router", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user1/tailscaled.sock whois --json 100.105.127.107", - "response": null - }, - "100.109.43.124": { - "peer_name": "router-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user1/tailscaled.sock whois --json 100.109.43.124", - "response": null - }, - "100.65.172.123": { - "peer_name": "router-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user1/tailscaled.sock whois --json 100.65.172.123", - "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 - } - }, "netmap": { - "SelfNode": { - "ID": 539541576444929, - "StableID": "nSq9YrqMD511CNTRL", - "Name": "user1.tail78f774.ts.net.", - "User": 4156223528223174, - "Key": "nodekey:96338a2cd2ea803c915ed8fdf882d66ca0c6a59d0fcf0bc4b3f928d22d1ac743", - "KeyExpiry": "2026-07-22T10:04:13Z", - "DiscoKey": "discokey:94c62b25a93d1474bcbf8b0e5f79763e3b093993c831b0a40e98b875827b232a", - "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:43259", "10.65.0.27:43259", "172.17.0.1:43259"], - "Hostinfo": { - "Hostname": "user1", - "Services": [ - { "Proto": "peerapi4", "Port": 46708 }, - { "Proto": "peerapi6", "Port": 46708 }, - { "Proto": "peerapi-dns-proxy", "Port": 1 } - ] - }, - "Created": "2026-01-23T10:04:13.531671894Z", - "MachineAuthorized": true, - "CapMap": { - "https://tailscale.com/cap/file-sharing": null, - "https://tailscale.com/cap/is-admin": null, - "https://tailscale.com/cap/is-owner": null, - "https://tailscale.com/cap/ssh": null, - "https://tailscale.com/cap/tailnet-lock": null, - "probe-udp-lifetime": null, - "ssh-behavior-v1": null, - "ssh-env-vars": null, - "store-appc-routes": null, - "tailnet-display-name": ["kratail2tid@passkey"] - }, - "ComputedName": "user1", - "ComputedNameWithHost": "user1" - }, - "AllCaps": [ - "ssh-env-vars", - "ssh-behavior-v1", - "probe-udp-lifetime", - "store-appc-routes", - "https://tailscale.com/cap/file-sharing", - "tailnet-display-name", - "https://tailscale.com/cap/is-owner", - "https://tailscale.com/cap/ssh", - "https://tailscale.com/cap/tailnet-lock", - "https://tailscale.com/cap/is-admin" - ], - "NodeKey": "nodekey:96338a2cd2ea803c915ed8fdf882d66ca0c6a59d0fcf0bc4b3f928d22d1ac743", - "MachineKey": "mkey:98b7ed0fef020882cab4324b39ac93b60741794e722411083d0d3cf703833f4a", "Peers": [], - "DNS": { - "Routes": { - "tail78f774.ts.net.": null, - "ts.net.": [{ "Addr": "199.247.155.53" }, { "Addr": "2620:111:8007::53" }] - }, - "Domains": ["tail78f774.ts.net"], - "Proxied": true, - "ExitNodeFilteredSet": [".ts.net", ".tailscale.net"] - }, - "PacketFilter": [], - "PacketFilterRules": null, - "SSHPolicy": { "rules": [] }, - "CollectServices": false, - "DERPMap": { - "Regions": { - "1": { - "RegionID": 1, - "RegionCode": "nyc", - "RegionName": "New York City", - "Latitude": 40.7128, - "Longitude": -74.006, - "Nodes": [ - { - "Name": "1h", - "RegionID": 1, - "HostName": "derp1h.tailscale.com", - "IPv4": "199.38.181.93", - "IPv6": "2607:f740:f::afd", - "CanPort80": true - }, - { - "Name": "1g", - "RegionID": 1, - "HostName": "derp1g.tailscale.com", - "IPv4": "209.177.145.120", - "IPv6": "2607:f740:f::3eb", - "CanPort80": true - }, - { - "Name": "1i", - "RegionID": 1, - "HostName": "derp1i.tailscale.com", - "IPv4": "199.38.181.103", - "IPv6": "2607:f740:f::e19", - "CanPort80": true - }, - { - "Name": "1f", - "RegionID": 1, - "HostName": "derp1f.tailscale.com", - "IPv4": "199.38.181.104", - "IPv6": "2607:f740:f::bc", - "CanPort80": true - } - ] - }, - "10": { - "RegionID": 10, - "RegionCode": "sea", - "RegionName": "Seattle", - "Latitude": 47.609722, - "Longitude": -122.333056, - "Nodes": [ - { - "Name": "10c", - "RegionID": 10, - "HostName": "derp10c.tailscale.com", - "IPv4": "192.73.240.121", - "IPv6": "2607:f740:14::40c", - "CanPort80": true - }, - { - "Name": "10d", - "RegionID": 10, - "HostName": "derp10d.tailscale.com", - "IPv4": "192.73.240.132", - "IPv6": "2607:f740:14::500", - "CanPort80": true - }, - { - "Name": "10b", - "RegionID": 10, - "HostName": "derp10b.tailscale.com", - "IPv4": "192.73.240.161", - "IPv6": "2607:f740:14::61c", - "CanPort80": true - } - ] - }, - "11": { - "RegionID": 11, - "RegionCode": "sao", - "RegionName": "São Paulo", - "Latitude": -23.55, - "Longitude": -46.633333, - "Nodes": [ - { - "Name": "11f", - "RegionID": 11, - "HostName": "derp11f.tailscale.com", - "IPv4": "172.237.61.197", - "IPv6": "2600:3c0d::2000:3bff:fe44:6166", - "CanPort80": true - }, - { - "Name": "11g", - "RegionID": 11, - "HostName": "derp11g.tailscale.com", - "IPv4": "172.237.61.190", - "IPv6": "2600:3c0d::2000:62ff:febe:2e67", - "CanPort80": true - }, - { - "Name": "11e", - "RegionID": 11, - "HostName": "derp11e.tailscale.com", - "IPv4": "172.237.61.194", - "IPv6": "2600:3c0d::2000:d2ff:fe43:1790", - "CanPort80": true - } - ] - }, - "12": { - "RegionID": 12, - "RegionCode": "ord", - "RegionName": "Chicago", - "Latitude": 41.881944, - "Longitude": -87.627778, - "Nodes": [ - { - "Name": "12e", - "RegionID": 12, - "HostName": "derp12e.tailscale.com", - "IPv4": "209.177.158.15", - "IPv6": "2607:f740:e::b17", - "CanPort80": true - }, - { - "Name": "12f", - "RegionID": 12, - "HostName": "derp12f.tailscale.com", - "IPv4": "199.38.182.118", - "IPv6": "2607:f740:e::4c8", - "CanPort80": true - }, - { - "Name": "12d", - "RegionID": 12, - "HostName": "derp12d.tailscale.com", - "IPv4": "209.177.158.246", - "IPv6": "2607:f740:e::811", - "CanPort80": true - } - ] - }, - "13": { - "RegionID": 13, - "RegionCode": "den", - "RegionName": "Denver", - "Latitude": 39.7392, - "Longitude": -104.9849, - "Nodes": [ - { - "Name": "13c", - "RegionID": 13, - "HostName": "derp13c.tailscale.com", - "IPv4": "192.73.242.28", - "IPv6": "2607:f740:16::5c", - "CanPort80": true - }, - { - "Name": "13d", - "RegionID": 13, - "HostName": "derp13d.tailscale.com", - "IPv4": "192.73.242.204", - "IPv6": "2607:f740:16::c23", - "CanPort80": true - }, - { - "Name": "13b", - "RegionID": 13, - "HostName": "derp13b.tailscale.com", - "IPv4": "192.73.242.187", - "IPv6": "2607:f740:16::640", - "CanPort80": true - } - ] - }, - "14": { - "RegionID": 14, - "RegionCode": "ams", - "RegionName": "Amsterdam", - "Latitude": 52.372778, - "Longitude": 4.893611, - "Nodes": [ - { - "Name": "14c", - "RegionID": 14, - "HostName": "derp14c.tailscale.com", - "IPv4": "176.58.93.147", - "IPv6": "2a00:dd80:3c::b09", - "CanPort80": true - }, - { - "Name": "14d", - "RegionID": 14, - "HostName": "derp14d.tailscale.com", - "IPv4": "176.58.93.154", - "IPv6": "2a00:dd80:3c::3d5", - "CanPort80": true - }, - { - "Name": "14b", - "RegionID": 14, - "HostName": "derp14b.tailscale.com", - "IPv4": "176.58.93.248", - "IPv6": "2a00:dd80:3c::807", - "CanPort80": true - } - ] - }, - "15": { - "RegionID": 15, - "RegionCode": "jnb", - "RegionName": "Johannesburg", - "Latitude": -26.204444, - "Longitude": 28.045556, - "Nodes": [ - { - "Name": "15c", - "RegionID": 15, - "HostName": "derp15c.tailscale.com", - "IPv4": "102.67.165.185", - "IPv6": "2c0f:edb0:0:10::b59", - "CanPort80": true - }, - { - "Name": "15d", - "RegionID": 15, - "HostName": "derp15d.tailscale.com", - "IPv4": "102.67.165.36", - "IPv6": "2c0f:edb0:0:10::599", - "CanPort80": true - }, - { - "Name": "15b", - "RegionID": 15, - "HostName": "derp15b.tailscale.com", - "IPv4": "102.67.165.90", - "IPv6": "2c0f:edb0:0:10::963", - "CanPort80": true - } - ] - }, - "16": { - "RegionID": 16, - "RegionCode": "mia", - "RegionName": "Miami", - "Latitude": 25.78, - "Longitude": -80.21, - "Nodes": [ - { - "Name": "16c", - "RegionID": 16, - "HostName": "derp16c.tailscale.com", - "IPv4": "192.73.243.229", - "IPv6": "2607:f740:17::4e4", - "CanPort80": true - }, - { - "Name": "16d", - "RegionID": 16, - "HostName": "derp16d.tailscale.com", - "IPv4": "192.73.243.141", - "IPv6": "2607:f740:17::475", - "CanPort80": true - }, - { - "Name": "16b", - "RegionID": 16, - "HostName": "derp16b.tailscale.com", - "IPv4": "192.73.243.135", - "IPv6": "2607:f740:17::476", - "CanPort80": true - } - ] - }, - "17": { - "RegionID": 17, - "RegionCode": "lax", - "RegionName": "Los Angeles", - "Latitude": 34.05, - "Longitude": -118.25, - "Nodes": [ - { - "Name": "17c", - "RegionID": 17, - "HostName": "derp17c.tailscale.com", - "IPv4": "208.111.40.12", - "IPv6": "2607:f740:c::10", - "CanPort80": true - }, - { - "Name": "17d", - "RegionID": 17, - "HostName": "derp17d.tailscale.com", - "IPv4": "208.111.40.216", - "IPv6": "2607:f740:c::e1b", - "CanPort80": true - }, - { - "Name": "17b", - "RegionID": 17, - "HostName": "derp17b.tailscale.com", - "IPv4": "192.73.244.245", - "IPv6": "2607:f740:c::646", - "CanPort80": true - } - ] - }, - "18": { - "RegionID": 18, - "RegionCode": "par", - "RegionName": "Paris", - "Latitude": 48.856667, - "Longitude": 2.352222, - "Nodes": [ - { - "Name": "18c", - "RegionID": 18, - "HostName": "derp18c.tailscale.com", - "IPv4": "176.58.90.207", - "IPv6": "2a00:dd80:3e::c19", - "CanPort80": true - }, - { - "Name": "18d", - "RegionID": 18, - "HostName": "derp18d.tailscale.com", - "IPv4": "176.58.90.104", - "IPv6": "2a00:dd80:3e::f2e", - "CanPort80": true - }, - { - "Name": "18b", - "RegionID": 18, - "HostName": "derp18b.tailscale.com", - "IPv4": "176.58.90.147", - "IPv6": "2a00:dd80:3e::363", - "CanPort80": true - } - ] - }, - "19": { - "RegionID": 19, - "RegionCode": "mad", - "RegionName": "Madrid", - "Latitude": 40.416944, - "Longitude": -3.703333, - "Nodes": [ - { - "Name": "19c", - "RegionID": 19, - "HostName": "derp19c.tailscale.com", - "IPv4": "45.159.97.61", - "IPv6": "2a00:dd80:14:10::20", - "CanPort80": true - }, - { - "Name": "19d", - "RegionID": 19, - "HostName": "derp19d.tailscale.com", - "IPv4": "45.159.97.233", - "IPv6": "2a00:dd80:14:10::34a", - "CanPort80": true - }, - { - "Name": "19b", - "RegionID": 19, - "HostName": "derp19b.tailscale.com", - "IPv4": "45.159.97.144", - "IPv6": "2a00:dd80:14:10::335", - "CanPort80": true - } - ] - }, - "2": { - "RegionID": 2, - "RegionCode": "sfo", - "RegionName": "San Francisco", - "Latitude": 37.7775, - "Longitude": -122.416389, - "Nodes": [ - { - "Name": "2e", - "RegionID": 2, - "HostName": "derp2e.tailscale.com", - "IPv4": "192.73.252.134", - "IPv6": "2607:f740:0:3f::44c", - "CanPort80": true - }, - { - "Name": "2f", - "RegionID": 2, - "HostName": "derp2f.tailscale.com", - "IPv4": "208.111.34.178", - "IPv6": "2607:f740:0:3f::f4", - "CanPort80": true - }, - { - "Name": "2d", - "RegionID": 2, - "HostName": "derp2d.tailscale.com", - "IPv4": "192.73.252.65", - "IPv6": "2607:f740:0:3f::287", - "CanPort80": true - } - ] - }, - "20": { - "RegionID": 20, - "RegionCode": "hkg", - "RegionName": "Hong Kong", - "Latitude": 22.3193, - "Longitude": 114.1694, - "Nodes": [ - { - "Name": "20c", - "RegionID": 20, - "HostName": "derp20c.tailscale.com", - "IPv4": "205.147.105.30", - "IPv6": "2403:2500:8000:1::5fb", - "CanPort80": true - }, - { - "Name": "20d", - "RegionID": 20, - "HostName": "derp20d.tailscale.com", - "IPv4": "205.147.105.78", - "IPv6": "2403:2500:8000:1::e9a", - "CanPort80": true - }, - { - "Name": "20b", - "RegionID": 20, - "HostName": "derp20b.tailscale.com", - "IPv4": "103.6.84.152", - "IPv6": "2403:2500:8000:1::ef6", - "CanPort80": true - } - ] - }, - "21": { - "RegionID": 21, - "RegionCode": "tor", - "RegionName": "Toronto", - "Latitude": 43.741667, - "Longitude": -79.373333, - "Nodes": [ - { - "Name": "21c", - "RegionID": 21, - "HostName": "derp21c.tailscale.com", - "IPv4": "162.248.221.215", - "IPv6": "2607:f740:50::f10", - "CanPort80": true - }, - { - "Name": "21d", - "RegionID": 21, - "HostName": "derp21d.tailscale.com", - "IPv4": "162.248.221.248", - "IPv6": "2607:f740:50::ca4", - "CanPort80": true - }, - { - "Name": "21b", - "RegionID": 21, - "HostName": "derp21b.tailscale.com", - "IPv4": "162.248.221.199", - "IPv6": "2607:f740:50::1d1", - "CanPort80": true - } - ] - }, - "22": { - "RegionID": 22, - "RegionCode": "waw", - "RegionName": "Warsaw", - "Latitude": 52.23, - "Longitude": 21.011111, - "Nodes": [ - { - "Name": "22c", - "RegionID": 22, - "HostName": "derp22c.tailscale.com", - "IPv4": "45.159.98.253", - "IPv6": "2a00:dd80:40:100::3f", - "CanPort80": true - }, - { - "Name": "22d", - "RegionID": 22, - "HostName": "derp22d.tailscale.com", - "IPv4": "45.159.98.145", - "IPv6": "2a00:dd80:40:100::211", - "CanPort80": true - }, - { - "Name": "22b", - "RegionID": 22, - "HostName": "derp22b.tailscale.com", - "IPv4": "45.159.98.196", - "IPv6": "2a00:dd80:40:100::316", - "CanPort80": true - } - ] - }, - "23": { - "RegionID": 23, - "RegionCode": "dbi", - "RegionName": "Dubai", - "Latitude": 25.263056, - "Longitude": 55.297222, - "Nodes": [ - { - "Name": "23c", - "RegionID": 23, - "HostName": "derp23c.tailscale.com", - "IPv4": "185.34.3.207", - "IPv6": "2a00:dd80:3f:100::a50", - "CanPort80": true - }, - { - "Name": "23d", - "RegionID": 23, - "HostName": "derp23d.tailscale.com", - "IPv4": "185.34.3.75", - "IPv6": "2a00:dd80:3f:100::97e", - "CanPort80": true - }, - { - "Name": "23b", - "RegionID": 23, - "HostName": "derp23b.tailscale.com", - "IPv4": "185.34.3.232", - "IPv6": "2a00:dd80:3f:100::76f", - "CanPort80": true - } - ] - }, - "24": { - "RegionID": 24, - "RegionCode": "hnl", - "RegionName": "Honolulu", - "Latitude": 21.306944, - "Longitude": -157.858333, - "Nodes": [ - { - "Name": "24c", - "RegionID": 24, - "HostName": "derp24c.tailscale.com", - "IPv4": "208.83.233.233", - "IPv6": "2001:19f0:c000:c591:5400:04ff:fe26:2c5f", - "CanPort80": true - }, - { - "Name": "24d", - "RegionID": 24, - "HostName": "derp24d.tailscale.com", - "IPv4": "208.72.155.133", - "IPv6": "2001:19f0:c000:c564:5400:04ff:fe26:2ba8", - "CanPort80": true - }, - { - "Name": "24b", - "RegionID": 24, - "HostName": "derp24b.tailscale.com", - "IPv4": "208.83.234.151", - "IPv6": "2001:19f0:c000:c586:5400:04ff:fe26:2ba6", - "CanPort80": true - } - ] - }, - "25": { - "RegionID": 25, - "RegionCode": "nai", - "RegionName": "Nairobi", - "Latitude": -1.286389, - "Longitude": 36.817222, - "Nodes": [ - { - "Name": "25c", - "RegionID": 25, - "HostName": "derp25c.tailscale.com", - "IPv4": "102.67.167.37", - "IPv6": "2c0f:edb0:2000:1::2c7", - "CanPort80": true - }, - { - "Name": "25d", - "RegionID": 25, - "HostName": "derp25d.tailscale.com", - "IPv4": "102.67.167.188", - "IPv6": "2c0f:edb0:2000:1::188", - "CanPort80": true - }, - { - "Name": "25b", - "RegionID": 25, - "HostName": "derp25b.tailscale.com", - "IPv4": "102.67.167.245", - "IPv6": "2c0f:edb0:2000:1::2e9", - "CanPort80": true - } - ] - }, - "26": { - "RegionID": 26, - "RegionCode": "nue", - "RegionName": "Nuremberg", - "Latitude": 49.453889, - "Longitude": 11.0775, - "Nodes": [ - { - "Name": "26c", - "RegionID": 26, - "HostName": "derp26c.tailscale.com", - "IPv4": "49.12.193.137", - "IPv6": "2a01:4f8:1c1c:5c70::1", - "CanPort80": true - }, - { - "Name": "26d", - "RegionID": 26, - "HostName": "derp26d.tailscale.com", - "IPv4": "49.13.204.141", - "IPv6": "2a01:4f8:1c0c:7d06::1", - "CanPort80": true - }, - { - "Name": "26b", - "RegionID": 26, - "HostName": "derp26b.tailscale.com", - "IPv4": "167.235.72.200", - "IPv6": "2a01:4f8:1c1c:47b6::1", - "CanPort80": true - } - ] - }, - "27": { - "RegionID": 27, - "RegionCode": "iad", - "RegionName": "Ashburn", - "Latitude": 39.03, - "Longitude": -77.471111, - "Nodes": [ - { - "Name": "27d", - "RegionID": 27, - "HostName": "derp27d.tailscale.com", - "IPv4": "178.156.152.106", - "IPv6": "2a01:4ff:f0:3c8e::1", - "CanPort80": true - }, - { - "Name": "27c", - "RegionID": 27, - "HostName": "derp27c.tailscale.com", - "IPv4": "178.156.152.91", - "IPv6": "2a01:4ff:f0:3913::1", - "CanPort80": true - }, - { - "Name": "27e", - "RegionID": 27, - "HostName": "derp27e.tailscale.com", - "IPv4": "178.156.134.232", - "IPv6": "2a01:4ff:f0:28d4::1", - "CanPort80": true - }, - { - "Name": "27b", - "RegionID": 27, - "HostName": "derp27b.tailscale.com", - "IPv4": "5.161.218.233", - "IPv6": "2a01:4ff:f0:3db9::1", - "CanPort80": true - } - ] - }, - "28": { - "RegionID": 28, - "RegionCode": "hel", - "RegionName": "Helsinki", - "Latitude": 60.170833, - "Longitude": 24.9375, - "Nodes": [ - { - "Name": "28c", - "RegionID": 28, - "HostName": "derp28c.tailscale.com", - "IPv4": "95.217.2.165", - "IPv6": "2a01:4f9:c012:cd74::1", - "CanPort80": true - }, - { - "Name": "28d", - "RegionID": 28, - "HostName": "derp28d.tailscale.com", - "IPv4": "157.180.28.32", - "IPv6": "2a01:4f9:c012:2e5b::1", - "CanPort80": true - }, - { - "Name": "28b", - "RegionID": 28, - "HostName": "derp28b.tailscale.com", - "IPv4": "65.109.143.62", - "IPv6": "2a01:4f9:c012:d55c::1", - "CanPort80": true - } - ] - }, - "3": { - "RegionID": 3, - "RegionCode": "sin", - "RegionName": "Singapore", - "Latitude": 1.3521, - "Longitude": 103.8198, - "Nodes": [ - { - "Name": "3g", - "RegionID": 3, - "HostName": "derp3g.tailscale.com", - "IPv4": "172.237.72.79", - "IPv6": "2600:3c15::2000:adff:fe08:6fab", - "CanPort80": true - }, - { - "Name": "3f", - "RegionID": 3, - "HostName": "derp3f.tailscale.com", - "IPv4": "172.237.72.8", - "IPv6": "2600:3c15::2000:53ff:fe48:a668", - "CanPort80": true - }, - { - "Name": "3h", - "RegionID": 3, - "HostName": "derp3h.tailscale.com", - "IPv4": "172.237.66.30", - "IPv6": "2600:3c15::2000:3dff:fe44:50aa", - "CanPort80": true - }, - { - "Name": "3e", - "RegionID": 3, - "HostName": "derp3e.tailscale.com", - "IPv4": "172.237.72.43", - "IPv6": "2600:3c15::2000:6cff:fee4:d799", - "CanPort80": true - } - ] - }, - "4": { - "RegionID": 4, - "RegionCode": "fra", - "RegionName": "Frankfurt", - "Latitude": 50.1109, - "Longitude": 8.6821, - "Nodes": [ - { - "Name": "4h", - "RegionID": 4, - "HostName": "derp4h.tailscale.com", - "IPv4": "185.40.234.77", - "IPv6": "2a00:dd80:20::bcf", - "CanPort80": true - }, - { - "Name": "4g", - "RegionID": 4, - "HostName": "derp4g.tailscale.com", - "IPv4": "185.40.234.113", - "IPv6": "2a00:dd80:20::8f", - "CanPort80": true - }, - { - "Name": "4i", - "RegionID": 4, - "HostName": "derp4i.tailscale.com", - "IPv4": "185.40.234.53", - "IPv6": "2a00:dd80:20::8a6", - "CanPort80": true - }, - { - "Name": "4f", - "RegionID": 4, - "HostName": "derp4f.tailscale.com", - "IPv4": "185.40.234.219", - "IPv6": "2a00:dd80:20::a25", - "CanPort80": true - } - ] - }, - "5": { - "RegionID": 5, - "RegionCode": "syd", - "RegionName": "Sydney", - "Latitude": -33.867778, - "Longitude": 151.21, - "Nodes": [ - { - "Name": "5f", - "RegionID": 5, - "HostName": "derp5f.tailscale.com", - "IPv4": "172.105.166.103", - "IPv6": "2400:8907::2000:ccff:fe1f:80da", - "CanPort80": true - }, - { - "Name": "5g", - "RegionID": 5, - "HostName": "derp5g.tailscale.com", - "IPv4": "172.105.169.57", - "IPv6": "2400:8907::2000:2fff:fea7:57f4", - "CanPort80": true - }, - { - "Name": "5e", - "RegionID": 5, - "HostName": "derp5e.tailscale.com", - "IPv4": "172.105.179.230", - "IPv6": "2400:8907::2000:ceff:fe8d:4f4e", - "CanPort80": true - } - ] - }, - "6": { - "RegionID": 6, - "RegionCode": "blr", - "RegionName": "Bengaluru", - "Latitude": 12.9716, - "Longitude": 77.5946, - "Nodes": [ - { - "Name": "6a", - "RegionID": 6, - "HostName": "derp6.tailscale.com", - "IPv4": "68.183.90.120", - "IPv6": "2400:6180:100:d0::982:d001", - "CanPort80": true - } - ] - }, - "7": { - "RegionID": 7, - "RegionCode": "tok", - "RegionName": "Tokyo", - "Latitude": 35.6764, - "Longitude": 139.65, - "Nodes": [ - { - "Name": "7g", - "RegionID": 7, - "HostName": "derp7g.tailscale.com", - "IPv4": "172.238.6.179", - "IPv6": "2600:3c18::2000:3fff:fe80:3ebd", - "CanPort80": true - }, - { - "Name": "7f", - "RegionID": 7, - "HostName": "derp7f.tailscale.com", - "IPv4": "172.238.6.34", - "IPv6": "2600:3c18::2000:acff:fe8e:3ed5", - "CanPort80": true - }, - { - "Name": "7h", - "RegionID": 7, - "HostName": "derp7h.tailscale.com", - "IPv4": "172.237.28.183", - "IPv6": "2600:3c18::2000:b1ff:fea9:4560", - "CanPort80": true - }, - { - "Name": "7e", - "RegionID": 7, - "HostName": "derp7e.tailscale.com", - "IPv4": "172.238.6.180", - "IPv6": "2600:3c18::2000:60ff:fe0f:6e83", - "STUNOnly": true, - "CanPort80": true - } - ] - }, - "8": { - "RegionID": 8, - "RegionCode": "lhr", - "RegionName": "London", - "Latitude": 51.5072, - "Longitude": 0.1276, - "Nodes": [ - { - "Name": "8f", - "RegionID": 8, - "HostName": "derp8f.tailscale.com", - "IPv4": "176.58.88.183", - "IPv6": "2a00:dd80:3a::dfa", - "CanPort80": true - }, - { - "Name": "8g", - "RegionID": 8, - "HostName": "derp8g.tailscale.com", - "IPv4": "176.58.92.254", - "IPv6": "2a00:dd80:3a::ed", - "CanPort80": true - }, - { - "Name": "8e", - "RegionID": 8, - "HostName": "derp8e.tailscale.com", - "IPv4": "176.58.92.144", - "IPv6": "2a00:dd80:3a::b33", - "CanPort80": true - } - ] - }, - "9": { - "RegionID": 9, - "RegionCode": "dfw", - "RegionName": "Dallas", - "Latitude": 32.779167, - "Longitude": -96.808889, - "Nodes": [ - { - "Name": "9e", - "RegionID": 9, - "HostName": "derp9e.tailscale.com", - "IPv4": "192.73.248.83", - "IPv6": "2607:f740:100::359", - "CanPort80": true - }, - { - "Name": "9f", - "RegionID": 9, - "HostName": "derp9f.tailscale.com", - "IPv4": "209.177.156.197", - "IPv6": "2607:f740:100::cad", - "CanPort80": true - }, - { - "Name": "9d", - "RegionID": 9, - "HostName": "derp9d.tailscale.com", - "IPv4": "209.177.156.94", - "IPv6": "2607:f740:100::c05", - "CanPort80": true - } - ] - } - } - }, - "DisplayMessages": null, - "TKAEnabled": false, - "TKAHead": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", - "Domain": "kratail2tid@passkey", - "DomainAuditLogID": "", - "UserProfiles": { - "4156223528223174": { - "ID": 4156223528223174, - "LoginName": "kratail2tid@passkey", - "DisplayName": "kratail2tid" - } - } + "PacketFilterRules": null } } } diff --git a/hscontrol/policy/v2/testdata/grant_results/GRANT-V34.hujson b/hscontrol/policy/v2/testdata/grant_results/GRANT-V34.hujson index 0c702eceb..883aeef62 100644 --- a/hscontrol/policy/v2/testdata/grant_results/GRANT-V34.hujson +++ b/hscontrol/policy/v2/testdata/grant_results/GRANT-V34.hujson @@ -5,29 +5,55 @@ // Expected: No filter rules on any node { "test_id": "GRANT-V34", - "timestamp": "2026-03-28T11:53:16Z", - "propagation_wait_seconds": 8, "input": { - "policy_file": "grant_policies_via/grant_v34.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"], - "tag:exit-a": ["kratail2tid@passkey"], - "tag:exit-b": ["kratail2tid@passkey"], - "tag:group-a": ["kratail2tid@passkey"], - "tag:group-b": ["kratail2tid@passkey"], - "tag:router-a": ["kratail2tid@passkey"], - "tag:router-b": ["kratail2tid@passkey"] + "tag:server": [ + "kratail2tid@passkey" + ], + "tag:prod": [ + "kratail2tid@passkey" + ], + "tag:client": [ + "kratail2tid@passkey" + ], + "tag:router": [ + "kratail2tid@passkey" + ], + "tag:exit": [ + "kratail2tid@passkey" + ], + "tag:exit-a": [ + "kratail2tid@passkey" + ], + "tag:exit-b": [ + "kratail2tid@passkey" + ], + "tag:group-a": [ + "kratail2tid@passkey" + ], + "tag:group-b": [ + "kratail2tid@passkey" + ], + "tag:router-a": [ + "kratail2tid@passkey" + ], + "tag:router-b": [ + "kratail2tid@passkey" + ] }, "hosts": { "webserver": "100.108.74.26", @@ -36,162 +62,160 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "10.44.0.0/16": ["tag:router-a"], - "10.55.0.0/16": ["tag:router-b"], - "0.0.0.0/0": ["tag:exit", "tag:exit-a", "tag:exit-b"], - "::/0": ["tag:exit", "tag:exit-a", "tag:exit-b"] + "10.33.0.0/16": [ + "tag:router" + ], + "10.44.0.0/16": [ + "tag:router-a" + ], + "10.55.0.0/16": [ + "tag:router-b" + ], + "0.0.0.0/0": [ + "tag:exit", + "tag:exit-a", + "tag:exit-b" + ], + "::/0": [ + "tag:exit", + "tag:exit-a", + "tag:exit-b" + ] } }, "grants": [ { - "src": ["*"], - "dst": ["autogroup:internet"], - "via": ["tag:exit-a", "tag:exit-b"], - "ip": ["*"] + "src": [ + "*" + ], + "dst": [ + "autogroup:internet" + ], + "via": [ + "tag:exit-a", + "tag:exit-b" + ], + "ip": [ + "*" + ] } ] }, - "grants_section": [ - { "src": ["*"], "dst": ["autogroup:internet"], "via": ["tag:exit-a", "tag:exit-b"], "ip": ["*"] } - ], - "api_endpoint": "https://api.tailscale.com/api/v2/tailnet/kratail2tid%40passkey/acl", - "api_method": "POST", "api_response_code": 200 }, "topology": { "nodes": { "exit-a": { - "mts_name": "exit-a", - "socket": "/home/kradalby/.config/multi-tailscale-dev/exit-a/tailscaled.sock", "hostname": "exit-a", - "user_id": 3118755726458377, - "tags": ["tag:exit-a"], + "tags": [ + "tag:exit-a" + ], "ipv4": "100.124.195.93", "ipv6": "fd7a:115c:a1e0::7837:c35d" }, "exit-b": { - "mts_name": "exit-b", - "socket": "/home/kradalby/.config/multi-tailscale-dev/exit-b/tailscaled.sock", "hostname": "exit-b", - "user_id": 2230775583277936, - "tags": ["tag:exit-b"], + "tags": [ + "tag:exit-b" + ], "ipv4": "100.116.18.24", "ipv6": "fd7a:115c:a1e0::ff37:1218" }, "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"], + "tags": [ + "tag:exit" + ], "ipv4": "100.85.66.106", "ipv6": "fd7a:115c:a1e0::7c37:426a" }, "group-a-client": { - "mts_name": "group-a-client", - "socket": "/home/kradalby/.config/multi-tailscale-dev/group-a-client/tailscaled.sock", "hostname": "group-a-client", - "user_id": 6999435610919250, - "tags": ["tag:group-a"], + "tags": [ + "tag:group-a" + ], "ipv4": "100.107.162.14", "ipv6": "fd7a:115c:a1e0::a237:a20e" }, "group-b-client": { - "mts_name": "group-b-client", - "socket": "/home/kradalby/.config/multi-tailscale-dev/group-b-client/tailscaled.sock", "hostname": "group-b-client", - "user_id": 1008089393782498, - "tags": ["tag:group-b"], + "tags": [ + "tag:group-b" + ], "ipv4": "100.77.135.18", "ipv6": "fd7a:115c:a1e0::4b37:8712" }, "multi-exit-router": { - "mts_name": "multi-exit-router", - "socket": "/home/kradalby/.config/multi-tailscale-dev/multi-exit-router/tailscaled.sock", "hostname": "multi-exit-router", - "user_id": 6294409699640722, - "tags": ["tag:exit", "tag:router"], + "tags": [ + "tag:exit", + "tag:router" + ], "ipv4": "100.105.127.107", "ipv6": "fd7a:115c:a1e0::ad37:7f6b" }, "router-a": { - "mts_name": "router-a", - "socket": "/home/kradalby/.config/multi-tailscale-dev/router-a/tailscaled.sock", "hostname": "router-a", - "user_id": 50590507314324, - "tags": ["tag:router-a"], + "tags": [ + "tag:router-a" + ], "ipv4": "100.109.43.124", "ipv6": "fd7a:115c:a1e0::a537:2b7c" }, "router-b": { - "mts_name": "router-b", - "socket": "/home/kradalby/.config/multi-tailscale-dev/router-b/tailscaled.sock", "hostname": "router-b", - "user_id": 1399889648409786, - "tags": ["tag:router-b"], + "tags": [ + "tag:router-b" + ], "ipv4": "100.65.172.123", "ipv6": "fd7a:115c:a1e0::5a37:ac7c" }, "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"], + "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"], + "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"], + "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"], + "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" @@ -200,16660 +224,108 @@ }, "captures": { "exit-a": { - "commands": { - "packet_filter_rules": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-a/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-a/tailscaled.sock debug localapi POST debug-packet-filter-matches" - }, "packet_filter_rules": null, - "packet_filter_matches": [], - "whois": { - "100.116.18.24": { - "peer_name": "exit-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-a/tailscaled.sock whois --json 100.116.18.24", - "response": null - }, - "100.85.66.106": { - "peer_name": "exit-node", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-a/tailscaled.sock whois --json 100.85.66.106", - "response": null - }, - "100.107.162.14": { - "peer_name": "group-a-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-a/tailscaled.sock whois --json 100.107.162.14", - "response": null - }, - "100.77.135.18": { - "peer_name": "group-b-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-a/tailscaled.sock whois --json 100.77.135.18", - "response": null - }, - "100.105.127.107": { - "peer_name": "multi-exit-router", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-a/tailscaled.sock whois --json 100.105.127.107", - "response": null - }, - "100.109.43.124": { - "peer_name": "router-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-a/tailscaled.sock whois --json 100.109.43.124", - "response": null - }, - "100.65.172.123": { - "peer_name": "router-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-a/tailscaled.sock whois --json 100.65.172.123", - "response": null - }, - "100.92.142.61": { - "peer_name": "subnet-router", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-a/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-a/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-a/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-a/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-a/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-a/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-a/tailscaled.sock whois --json 100.90.199.68", - "response": null - } - }, "netmap": { - "SelfNode": { - "ID": 3118755726458377, - "StableID": "nvFTscRVMR11CNTRL", - "Name": "exit-a.tail78f774.ts.net.", - "User": 3118755726458377, - "Key": "nodekey:21ab6fa3288e3bf8cecced295316c6327f427649765eb1746cc6ee9978bcc35c", - "DiscoKey": "discokey:0c8595f67987ed47cf551646d6266c21a635d622409d10745cc08f6922066e49", - "Addresses": ["100.124.195.93/32", "fd7a:115c:a1e0::7837:c35d/128"], - "AllowedIPs": ["100.124.195.93/32", "fd7a:115c:a1e0::7837:c35d/128"], - "Endpoints": ["77.164.248.136:37550", "10.65.0.27:37550", "172.17.0.1:37550"], - "Hostinfo": { - "Hostname": "exit-a", - "RoutableIPs": ["0.0.0.0/0", "::/0"], - "RequestTags": ["tag:exit-a"], - "Services": [ - { "Proto": "peerapi4", "Port": 57826 }, - { "Proto": "peerapi6", "Port": 57826 }, - { "Proto": "peerapi-dns-proxy", "Port": 1 } - ] - }, - "Created": "2026-03-28T10:37:56.932966573Z", - "Tags": ["tag:exit-a"], - "MachineAuthorized": true, - "CapMap": { - "https://tailscale.com/cap/file-sharing": null, - "https://tailscale.com/cap/is-owner": null, - "https://tailscale.com/cap/ssh": null, - "https://tailscale.com/cap/tailnet-lock": null, - "probe-udp-lifetime": null, - "ssh-behavior-v1": null, - "ssh-env-vars": null, - "store-appc-routes": null, - "tailnet-display-name": ["kratail2tid@passkey"] - }, - "ComputedName": "exit-a", - "ComputedNameWithHost": "exit-a" - }, - "AllCaps": [ - "tailnet-display-name", - "probe-udp-lifetime", - "store-appc-routes", - "ssh-behavior-v1", - "https://tailscale.com/cap/ssh", - "https://tailscale.com/cap/tailnet-lock", - "https://tailscale.com/cap/is-owner", - "ssh-env-vars", - "https://tailscale.com/cap/file-sharing" - ], - "NodeKey": "nodekey:21ab6fa3288e3bf8cecced295316c6327f427649765eb1746cc6ee9978bcc35c", - "MachineKey": "mkey:d4a36168723163165bbdcb0b17762903171593d01c26c5bb12216932f6d10876", "Peers": [], - "DNS": { - "Routes": { - "tail78f774.ts.net.": null, - "ts.net.": [{ "Addr": "199.247.155.53" }, { "Addr": "2620:111:8007::53" }] - }, - "Domains": ["tail78f774.ts.net"], - "Proxied": true, - "ExitNodeFilteredSet": [".ts.net", ".tailscale.net"] - }, - "PacketFilter": [], - "PacketFilterRules": null, - "SSHPolicy": { "rules": [] }, - "CollectServices": false, - "DERPMap": { - "Regions": { - "1": { - "RegionID": 1, - "RegionCode": "nyc", - "RegionName": "New York City", - "Latitude": 40.7128, - "Longitude": -74.006, - "Nodes": [ - { - "Name": "1h", - "RegionID": 1, - "HostName": "derp1h.tailscale.com", - "IPv4": "199.38.181.93", - "IPv6": "2607:f740:f::afd", - "CanPort80": true - }, - { - "Name": "1g", - "RegionID": 1, - "HostName": "derp1g.tailscale.com", - "IPv4": "209.177.145.120", - "IPv6": "2607:f740:f::3eb", - "CanPort80": true - }, - { - "Name": "1i", - "RegionID": 1, - "HostName": "derp1i.tailscale.com", - "IPv4": "199.38.181.103", - "IPv6": "2607:f740:f::e19", - "CanPort80": true - }, - { - "Name": "1f", - "RegionID": 1, - "HostName": "derp1f.tailscale.com", - "IPv4": "199.38.181.104", - "IPv6": "2607:f740:f::bc", - "CanPort80": true - } - ] - }, - "10": { - "RegionID": 10, - "RegionCode": "sea", - "RegionName": "Seattle", - "Latitude": 47.609722, - "Longitude": -122.333056, - "Nodes": [ - { - "Name": "10c", - "RegionID": 10, - "HostName": "derp10c.tailscale.com", - "IPv4": "192.73.240.121", - "IPv6": "2607:f740:14::40c", - "CanPort80": true - }, - { - "Name": "10d", - "RegionID": 10, - "HostName": "derp10d.tailscale.com", - "IPv4": "192.73.240.132", - "IPv6": "2607:f740:14::500", - "CanPort80": true - }, - { - "Name": "10b", - "RegionID": 10, - "HostName": "derp10b.tailscale.com", - "IPv4": "192.73.240.161", - "IPv6": "2607:f740:14::61c", - "CanPort80": true - } - ] - }, - "11": { - "RegionID": 11, - "RegionCode": "sao", - "RegionName": "São Paulo", - "Latitude": -23.55, - "Longitude": -46.633333, - "Nodes": [ - { - "Name": "11f", - "RegionID": 11, - "HostName": "derp11f.tailscale.com", - "IPv4": "172.237.61.197", - "IPv6": "2600:3c0d::2000:3bff:fe44:6166", - "CanPort80": true - }, - { - "Name": "11g", - "RegionID": 11, - "HostName": "derp11g.tailscale.com", - "IPv4": "172.237.61.190", - "IPv6": "2600:3c0d::2000:62ff:febe:2e67", - "CanPort80": true - }, - { - "Name": "11e", - "RegionID": 11, - "HostName": "derp11e.tailscale.com", - "IPv4": "172.237.61.194", - "IPv6": "2600:3c0d::2000:d2ff:fe43:1790", - "CanPort80": true - } - ] - }, - "12": { - "RegionID": 12, - "RegionCode": "ord", - "RegionName": "Chicago", - "Latitude": 41.881944, - "Longitude": -87.627778, - "Nodes": [ - { - "Name": "12e", - "RegionID": 12, - "HostName": "derp12e.tailscale.com", - "IPv4": "209.177.158.15", - "IPv6": "2607:f740:e::b17", - "CanPort80": true - }, - { - "Name": "12f", - "RegionID": 12, - "HostName": "derp12f.tailscale.com", - "IPv4": "199.38.182.118", - "IPv6": "2607:f740:e::4c8", - "CanPort80": true - }, - { - "Name": "12d", - "RegionID": 12, - "HostName": "derp12d.tailscale.com", - "IPv4": "209.177.158.246", - "IPv6": "2607:f740:e::811", - "CanPort80": true - } - ] - }, - "13": { - "RegionID": 13, - "RegionCode": "den", - "RegionName": "Denver", - "Latitude": 39.7392, - "Longitude": -104.9849, - "Nodes": [ - { - "Name": "13c", - "RegionID": 13, - "HostName": "derp13c.tailscale.com", - "IPv4": "192.73.242.28", - "IPv6": "2607:f740:16::5c", - "CanPort80": true - }, - { - "Name": "13d", - "RegionID": 13, - "HostName": "derp13d.tailscale.com", - "IPv4": "192.73.242.204", - "IPv6": "2607:f740:16::c23", - "CanPort80": true - }, - { - "Name": "13b", - "RegionID": 13, - "HostName": "derp13b.tailscale.com", - "IPv4": "192.73.242.187", - "IPv6": "2607:f740:16::640", - "CanPort80": true - } - ] - }, - "14": { - "RegionID": 14, - "RegionCode": "ams", - "RegionName": "Amsterdam", - "Latitude": 52.372778, - "Longitude": 4.893611, - "Nodes": [ - { - "Name": "14c", - "RegionID": 14, - "HostName": "derp14c.tailscale.com", - "IPv4": "176.58.93.147", - "IPv6": "2a00:dd80:3c::b09", - "CanPort80": true - }, - { - "Name": "14d", - "RegionID": 14, - "HostName": "derp14d.tailscale.com", - "IPv4": "176.58.93.154", - "IPv6": "2a00:dd80:3c::3d5", - "CanPort80": true - }, - { - "Name": "14b", - "RegionID": 14, - "HostName": "derp14b.tailscale.com", - "IPv4": "176.58.93.248", - "IPv6": "2a00:dd80:3c::807", - "CanPort80": true - } - ] - }, - "15": { - "RegionID": 15, - "RegionCode": "jnb", - "RegionName": "Johannesburg", - "Latitude": -26.204444, - "Longitude": 28.045556, - "Nodes": [ - { - "Name": "15c", - "RegionID": 15, - "HostName": "derp15c.tailscale.com", - "IPv4": "102.67.165.185", - "IPv6": "2c0f:edb0:0:10::b59", - "CanPort80": true - }, - { - "Name": "15d", - "RegionID": 15, - "HostName": "derp15d.tailscale.com", - "IPv4": "102.67.165.36", - "IPv6": "2c0f:edb0:0:10::599", - "CanPort80": true - }, - { - "Name": "15b", - "RegionID": 15, - "HostName": "derp15b.tailscale.com", - "IPv4": "102.67.165.90", - "IPv6": "2c0f:edb0:0:10::963", - "CanPort80": true - } - ] - }, - "16": { - "RegionID": 16, - "RegionCode": "mia", - "RegionName": "Miami", - "Latitude": 25.78, - "Longitude": -80.21, - "Nodes": [ - { - "Name": "16c", - "RegionID": 16, - "HostName": "derp16c.tailscale.com", - "IPv4": "192.73.243.229", - "IPv6": "2607:f740:17::4e4", - "CanPort80": true - }, - { - "Name": "16d", - "RegionID": 16, - "HostName": "derp16d.tailscale.com", - "IPv4": "192.73.243.141", - "IPv6": "2607:f740:17::475", - "CanPort80": true - }, - { - "Name": "16b", - "RegionID": 16, - "HostName": "derp16b.tailscale.com", - "IPv4": "192.73.243.135", - "IPv6": "2607:f740:17::476", - "CanPort80": true - } - ] - }, - "17": { - "RegionID": 17, - "RegionCode": "lax", - "RegionName": "Los Angeles", - "Latitude": 34.05, - "Longitude": -118.25, - "Nodes": [ - { - "Name": "17c", - "RegionID": 17, - "HostName": "derp17c.tailscale.com", - "IPv4": "208.111.40.12", - "IPv6": "2607:f740:c::10", - "CanPort80": true - }, - { - "Name": "17d", - "RegionID": 17, - "HostName": "derp17d.tailscale.com", - "IPv4": "208.111.40.216", - "IPv6": "2607:f740:c::e1b", - "CanPort80": true - }, - { - "Name": "17b", - "RegionID": 17, - "HostName": "derp17b.tailscale.com", - "IPv4": "192.73.244.245", - "IPv6": "2607:f740:c::646", - "CanPort80": true - } - ] - }, - "18": { - "RegionID": 18, - "RegionCode": "par", - "RegionName": "Paris", - "Latitude": 48.856667, - "Longitude": 2.352222, - "Nodes": [ - { - "Name": "18c", - "RegionID": 18, - "HostName": "derp18c.tailscale.com", - "IPv4": "176.58.90.207", - "IPv6": "2a00:dd80:3e::c19", - "CanPort80": true - }, - { - "Name": "18d", - "RegionID": 18, - "HostName": "derp18d.tailscale.com", - "IPv4": "176.58.90.104", - "IPv6": "2a00:dd80:3e::f2e", - "CanPort80": true - }, - { - "Name": "18b", - "RegionID": 18, - "HostName": "derp18b.tailscale.com", - "IPv4": "176.58.90.147", - "IPv6": "2a00:dd80:3e::363", - "CanPort80": true - } - ] - }, - "19": { - "RegionID": 19, - "RegionCode": "mad", - "RegionName": "Madrid", - "Latitude": 40.416944, - "Longitude": -3.703333, - "Nodes": [ - { - "Name": "19c", - "RegionID": 19, - "HostName": "derp19c.tailscale.com", - "IPv4": "45.159.97.61", - "IPv6": "2a00:dd80:14:10::20", - "CanPort80": true - }, - { - "Name": "19d", - "RegionID": 19, - "HostName": "derp19d.tailscale.com", - "IPv4": "45.159.97.233", - "IPv6": "2a00:dd80:14:10::34a", - "CanPort80": true - }, - { - "Name": "19b", - "RegionID": 19, - "HostName": "derp19b.tailscale.com", - "IPv4": "45.159.97.144", - "IPv6": "2a00:dd80:14:10::335", - "CanPort80": true - } - ] - }, - "2": { - "RegionID": 2, - "RegionCode": "sfo", - "RegionName": "San Francisco", - "Latitude": 37.7775, - "Longitude": -122.416389, - "Nodes": [ - { - "Name": "2e", - "RegionID": 2, - "HostName": "derp2e.tailscale.com", - "IPv4": "192.73.252.134", - "IPv6": "2607:f740:0:3f::44c", - "CanPort80": true - }, - { - "Name": "2f", - "RegionID": 2, - "HostName": "derp2f.tailscale.com", - "IPv4": "208.111.34.178", - "IPv6": "2607:f740:0:3f::f4", - "CanPort80": true - }, - { - "Name": "2d", - "RegionID": 2, - "HostName": "derp2d.tailscale.com", - "IPv4": "192.73.252.65", - "IPv6": "2607:f740:0:3f::287", - "CanPort80": true - } - ] - }, - "20": { - "RegionID": 20, - "RegionCode": "hkg", - "RegionName": "Hong Kong", - "Latitude": 22.3193, - "Longitude": 114.1694, - "Nodes": [ - { - "Name": "20c", - "RegionID": 20, - "HostName": "derp20c.tailscale.com", - "IPv4": "205.147.105.30", - "IPv6": "2403:2500:8000:1::5fb", - "CanPort80": true - }, - { - "Name": "20d", - "RegionID": 20, - "HostName": "derp20d.tailscale.com", - "IPv4": "205.147.105.78", - "IPv6": "2403:2500:8000:1::e9a", - "CanPort80": true - }, - { - "Name": "20b", - "RegionID": 20, - "HostName": "derp20b.tailscale.com", - "IPv4": "103.6.84.152", - "IPv6": "2403:2500:8000:1::ef6", - "CanPort80": true - } - ] - }, - "21": { - "RegionID": 21, - "RegionCode": "tor", - "RegionName": "Toronto", - "Latitude": 43.741667, - "Longitude": -79.373333, - "Nodes": [ - { - "Name": "21c", - "RegionID": 21, - "HostName": "derp21c.tailscale.com", - "IPv4": "162.248.221.215", - "IPv6": "2607:f740:50::f10", - "CanPort80": true - }, - { - "Name": "21d", - "RegionID": 21, - "HostName": "derp21d.tailscale.com", - "IPv4": "162.248.221.248", - "IPv6": "2607:f740:50::ca4", - "CanPort80": true - }, - { - "Name": "21b", - "RegionID": 21, - "HostName": "derp21b.tailscale.com", - "IPv4": "162.248.221.199", - "IPv6": "2607:f740:50::1d1", - "CanPort80": true - } - ] - }, - "22": { - "RegionID": 22, - "RegionCode": "waw", - "RegionName": "Warsaw", - "Latitude": 52.23, - "Longitude": 21.011111, - "Nodes": [ - { - "Name": "22c", - "RegionID": 22, - "HostName": "derp22c.tailscale.com", - "IPv4": "45.159.98.253", - "IPv6": "2a00:dd80:40:100::3f", - "CanPort80": true - }, - { - "Name": "22d", - "RegionID": 22, - "HostName": "derp22d.tailscale.com", - "IPv4": "45.159.98.145", - "IPv6": "2a00:dd80:40:100::211", - "CanPort80": true - }, - { - "Name": "22b", - "RegionID": 22, - "HostName": "derp22b.tailscale.com", - "IPv4": "45.159.98.196", - "IPv6": "2a00:dd80:40:100::316", - "CanPort80": true - } - ] - }, - "23": { - "RegionID": 23, - "RegionCode": "dbi", - "RegionName": "Dubai", - "Latitude": 25.263056, - "Longitude": 55.297222, - "Nodes": [ - { - "Name": "23c", - "RegionID": 23, - "HostName": "derp23c.tailscale.com", - "IPv4": "185.34.3.207", - "IPv6": "2a00:dd80:3f:100::a50", - "CanPort80": true - }, - { - "Name": "23d", - "RegionID": 23, - "HostName": "derp23d.tailscale.com", - "IPv4": "185.34.3.75", - "IPv6": "2a00:dd80:3f:100::97e", - "CanPort80": true - }, - { - "Name": "23b", - "RegionID": 23, - "HostName": "derp23b.tailscale.com", - "IPv4": "185.34.3.232", - "IPv6": "2a00:dd80:3f:100::76f", - "CanPort80": true - } - ] - }, - "24": { - "RegionID": 24, - "RegionCode": "hnl", - "RegionName": "Honolulu", - "Latitude": 21.306944, - "Longitude": -157.858333, - "Nodes": [ - { - "Name": "24c", - "RegionID": 24, - "HostName": "derp24c.tailscale.com", - "IPv4": "208.83.233.233", - "IPv6": "2001:19f0:c000:c591:5400:04ff:fe26:2c5f", - "CanPort80": true - }, - { - "Name": "24d", - "RegionID": 24, - "HostName": "derp24d.tailscale.com", - "IPv4": "208.72.155.133", - "IPv6": "2001:19f0:c000:c564:5400:04ff:fe26:2ba8", - "CanPort80": true - }, - { - "Name": "24b", - "RegionID": 24, - "HostName": "derp24b.tailscale.com", - "IPv4": "208.83.234.151", - "IPv6": "2001:19f0:c000:c586:5400:04ff:fe26:2ba6", - "CanPort80": true - } - ] - }, - "25": { - "RegionID": 25, - "RegionCode": "nai", - "RegionName": "Nairobi", - "Latitude": -1.286389, - "Longitude": 36.817222, - "Nodes": [ - { - "Name": "25c", - "RegionID": 25, - "HostName": "derp25c.tailscale.com", - "IPv4": "102.67.167.37", - "IPv6": "2c0f:edb0:2000:1::2c7", - "CanPort80": true - }, - { - "Name": "25d", - "RegionID": 25, - "HostName": "derp25d.tailscale.com", - "IPv4": "102.67.167.188", - "IPv6": "2c0f:edb0:2000:1::188", - "CanPort80": true - }, - { - "Name": "25b", - "RegionID": 25, - "HostName": "derp25b.tailscale.com", - "IPv4": "102.67.167.245", - "IPv6": "2c0f:edb0:2000:1::2e9", - "CanPort80": true - } - ] - }, - "26": { - "RegionID": 26, - "RegionCode": "nue", - "RegionName": "Nuremberg", - "Latitude": 49.453889, - "Longitude": 11.0775, - "Nodes": [ - { - "Name": "26c", - "RegionID": 26, - "HostName": "derp26c.tailscale.com", - "IPv4": "49.12.193.137", - "IPv6": "2a01:4f8:1c1c:5c70::1", - "CanPort80": true - }, - { - "Name": "26d", - "RegionID": 26, - "HostName": "derp26d.tailscale.com", - "IPv4": "49.13.204.141", - "IPv6": "2a01:4f8:1c0c:7d06::1", - "CanPort80": true - }, - { - "Name": "26b", - "RegionID": 26, - "HostName": "derp26b.tailscale.com", - "IPv4": "167.235.72.200", - "IPv6": "2a01:4f8:1c1c:47b6::1", - "CanPort80": true - } - ] - }, - "27": { - "RegionID": 27, - "RegionCode": "iad", - "RegionName": "Ashburn", - "Latitude": 39.03, - "Longitude": -77.471111, - "Nodes": [ - { - "Name": "27d", - "RegionID": 27, - "HostName": "derp27d.tailscale.com", - "IPv4": "178.156.152.106", - "IPv6": "2a01:4ff:f0:3c8e::1", - "CanPort80": true - }, - { - "Name": "27c", - "RegionID": 27, - "HostName": "derp27c.tailscale.com", - "IPv4": "178.156.152.91", - "IPv6": "2a01:4ff:f0:3913::1", - "CanPort80": true - }, - { - "Name": "27e", - "RegionID": 27, - "HostName": "derp27e.tailscale.com", - "IPv4": "178.156.134.232", - "IPv6": "2a01:4ff:f0:28d4::1", - "CanPort80": true - }, - { - "Name": "27b", - "RegionID": 27, - "HostName": "derp27b.tailscale.com", - "IPv4": "5.161.218.233", - "IPv6": "2a01:4ff:f0:3db9::1", - "CanPort80": true - } - ] - }, - "28": { - "RegionID": 28, - "RegionCode": "hel", - "RegionName": "Helsinki", - "Latitude": 60.170833, - "Longitude": 24.9375, - "Nodes": [ - { - "Name": "28c", - "RegionID": 28, - "HostName": "derp28c.tailscale.com", - "IPv4": "95.217.2.165", - "IPv6": "2a01:4f9:c012:cd74::1", - "CanPort80": true - }, - { - "Name": "28d", - "RegionID": 28, - "HostName": "derp28d.tailscale.com", - "IPv4": "157.180.28.32", - "IPv6": "2a01:4f9:c012:2e5b::1", - "CanPort80": true - }, - { - "Name": "28b", - "RegionID": 28, - "HostName": "derp28b.tailscale.com", - "IPv4": "65.109.143.62", - "IPv6": "2a01:4f9:c012:d55c::1", - "CanPort80": true - } - ] - }, - "3": { - "RegionID": 3, - "RegionCode": "sin", - "RegionName": "Singapore", - "Latitude": 1.3521, - "Longitude": 103.8198, - "Nodes": [ - { - "Name": "3g", - "RegionID": 3, - "HostName": "derp3g.tailscale.com", - "IPv4": "172.237.72.79", - "IPv6": "2600:3c15::2000:adff:fe08:6fab", - "CanPort80": true - }, - { - "Name": "3f", - "RegionID": 3, - "HostName": "derp3f.tailscale.com", - "IPv4": "172.237.72.8", - "IPv6": "2600:3c15::2000:53ff:fe48:a668", - "CanPort80": true - }, - { - "Name": "3h", - "RegionID": 3, - "HostName": "derp3h.tailscale.com", - "IPv4": "172.237.66.30", - "IPv6": "2600:3c15::2000:3dff:fe44:50aa", - "CanPort80": true - }, - { - "Name": "3e", - "RegionID": 3, - "HostName": "derp3e.tailscale.com", - "IPv4": "172.237.72.43", - "IPv6": "2600:3c15::2000:6cff:fee4:d799", - "CanPort80": true - } - ] - }, - "4": { - "RegionID": 4, - "RegionCode": "fra", - "RegionName": "Frankfurt", - "Latitude": 50.1109, - "Longitude": 8.6821, - "Nodes": [ - { - "Name": "4h", - "RegionID": 4, - "HostName": "derp4h.tailscale.com", - "IPv4": "185.40.234.77", - "IPv6": "2a00:dd80:20::bcf", - "CanPort80": true - }, - { - "Name": "4g", - "RegionID": 4, - "HostName": "derp4g.tailscale.com", - "IPv4": "185.40.234.113", - "IPv6": "2a00:dd80:20::8f", - "CanPort80": true - }, - { - "Name": "4i", - "RegionID": 4, - "HostName": "derp4i.tailscale.com", - "IPv4": "185.40.234.53", - "IPv6": "2a00:dd80:20::8a6", - "CanPort80": true - }, - { - "Name": "4f", - "RegionID": 4, - "HostName": "derp4f.tailscale.com", - "IPv4": "185.40.234.219", - "IPv6": "2a00:dd80:20::a25", - "CanPort80": true - } - ] - }, - "5": { - "RegionID": 5, - "RegionCode": "syd", - "RegionName": "Sydney", - "Latitude": -33.867778, - "Longitude": 151.21, - "Nodes": [ - { - "Name": "5f", - "RegionID": 5, - "HostName": "derp5f.tailscale.com", - "IPv4": "172.105.166.103", - "IPv6": "2400:8907::2000:ccff:fe1f:80da", - "CanPort80": true - }, - { - "Name": "5g", - "RegionID": 5, - "HostName": "derp5g.tailscale.com", - "IPv4": "172.105.169.57", - "IPv6": "2400:8907::2000:2fff:fea7:57f4", - "CanPort80": true - }, - { - "Name": "5e", - "RegionID": 5, - "HostName": "derp5e.tailscale.com", - "IPv4": "172.105.179.230", - "IPv6": "2400:8907::2000:ceff:fe8d:4f4e", - "CanPort80": true - } - ] - }, - "6": { - "RegionID": 6, - "RegionCode": "blr", - "RegionName": "Bengaluru", - "Latitude": 12.9716, - "Longitude": 77.5946, - "Nodes": [ - { - "Name": "6a", - "RegionID": 6, - "HostName": "derp6.tailscale.com", - "IPv4": "68.183.90.120", - "IPv6": "2400:6180:100:d0::982:d001", - "CanPort80": true - } - ] - }, - "7": { - "RegionID": 7, - "RegionCode": "tok", - "RegionName": "Tokyo", - "Latitude": 35.6764, - "Longitude": 139.65, - "Nodes": [ - { - "Name": "7g", - "RegionID": 7, - "HostName": "derp7g.tailscale.com", - "IPv4": "172.238.6.179", - "IPv6": "2600:3c18::2000:3fff:fe80:3ebd", - "CanPort80": true - }, - { - "Name": "7f", - "RegionID": 7, - "HostName": "derp7f.tailscale.com", - "IPv4": "172.238.6.34", - "IPv6": "2600:3c18::2000:acff:fe8e:3ed5", - "CanPort80": true - }, - { - "Name": "7h", - "RegionID": 7, - "HostName": "derp7h.tailscale.com", - "IPv4": "172.237.28.183", - "IPv6": "2600:3c18::2000:b1ff:fea9:4560", - "CanPort80": true - }, - { - "Name": "7e", - "RegionID": 7, - "HostName": "derp7e.tailscale.com", - "IPv4": "172.238.6.180", - "IPv6": "2600:3c18::2000:60ff:fe0f:6e83", - "STUNOnly": true, - "CanPort80": true - } - ] - }, - "8": { - "RegionID": 8, - "RegionCode": "lhr", - "RegionName": "London", - "Latitude": 51.5072, - "Longitude": 0.1276, - "Nodes": [ - { - "Name": "8f", - "RegionID": 8, - "HostName": "derp8f.tailscale.com", - "IPv4": "176.58.88.183", - "IPv6": "2a00:dd80:3a::dfa", - "CanPort80": true - }, - { - "Name": "8g", - "RegionID": 8, - "HostName": "derp8g.tailscale.com", - "IPv4": "176.58.92.254", - "IPv6": "2a00:dd80:3a::ed", - "CanPort80": true - }, - { - "Name": "8e", - "RegionID": 8, - "HostName": "derp8e.tailscale.com", - "IPv4": "176.58.92.144", - "IPv6": "2a00:dd80:3a::b33", - "CanPort80": true - } - ] - }, - "9": { - "RegionID": 9, - "RegionCode": "dfw", - "RegionName": "Dallas", - "Latitude": 32.779167, - "Longitude": -96.808889, - "Nodes": [ - { - "Name": "9e", - "RegionID": 9, - "HostName": "derp9e.tailscale.com", - "IPv4": "192.73.248.83", - "IPv6": "2607:f740:100::359", - "CanPort80": true - }, - { - "Name": "9f", - "RegionID": 9, - "HostName": "derp9f.tailscale.com", - "IPv4": "209.177.156.197", - "IPv6": "2607:f740:100::cad", - "CanPort80": true - }, - { - "Name": "9d", - "RegionID": 9, - "HostName": "derp9d.tailscale.com", - "IPv4": "209.177.156.94", - "IPv6": "2607:f740:100::c05", - "CanPort80": true - } - ] - } - } - }, - "DisplayMessages": null, - "TKAEnabled": false, - "TKAHead": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", - "Domain": "kratail2tid@passkey", - "DomainAuditLogID": "", - "UserProfiles": { - "3118755726458377": { - "ID": 3118755726458377, - "LoginName": "exit-a.tail78f774.ts.net", - "DisplayName": "exit-a" - } - } + "PacketFilterRules": null } }, "exit-b": { - "commands": { - "packet_filter_rules": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-b/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-b/tailscaled.sock debug localapi POST debug-packet-filter-matches" - }, "packet_filter_rules": null, - "packet_filter_matches": [], - "whois": { - "100.124.195.93": { - "peer_name": "exit-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-b/tailscaled.sock whois --json 100.124.195.93", - "response": null - }, - "100.85.66.106": { - "peer_name": "exit-node", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-b/tailscaled.sock whois --json 100.85.66.106", - "response": null - }, - "100.107.162.14": { - "peer_name": "group-a-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-b/tailscaled.sock whois --json 100.107.162.14", - "response": null - }, - "100.77.135.18": { - "peer_name": "group-b-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-b/tailscaled.sock whois --json 100.77.135.18", - "response": null - }, - "100.105.127.107": { - "peer_name": "multi-exit-router", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-b/tailscaled.sock whois --json 100.105.127.107", - "response": null - }, - "100.109.43.124": { - "peer_name": "router-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-b/tailscaled.sock whois --json 100.109.43.124", - "response": null - }, - "100.65.172.123": { - "peer_name": "router-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-b/tailscaled.sock whois --json 100.65.172.123", - "response": null - }, - "100.92.142.61": { - "peer_name": "subnet-router", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-b/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-b/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-b/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-b/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-b/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-b/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-b/tailscaled.sock whois --json 100.90.199.68", - "response": null - } - }, "netmap": { - "SelfNode": { - "ID": 2230775583277936, - "StableID": "ndK1N8hKRJ11CNTRL", - "Name": "exit-b.tail78f774.ts.net.", - "User": 2230775583277936, - "Key": "nodekey:265e1377372be0d036773ac41339bf7b53ed18e9f67f196d7d517abeff741217", - "DiscoKey": "discokey:63071b08ff89860a2d98005f8f6f65f3b92e05b7b1338b1be71e4ad866f12728", - "Addresses": ["100.116.18.24/32", "fd7a:115c:a1e0::ff37:1218/128"], - "AllowedIPs": ["100.116.18.24/32", "fd7a:115c:a1e0::ff37:1218/128"], - "Endpoints": ["77.164.248.136:35565", "10.65.0.27:35565", "172.17.0.1:35565"], - "Hostinfo": { - "Hostname": "exit-b", - "RoutableIPs": ["0.0.0.0/0", "::/0"], - "RequestTags": ["tag:exit-b"], - "Services": [ - { "Proto": "peerapi4", "Port": 61723 }, - { "Proto": "peerapi6", "Port": 61723 }, - { "Proto": "peerapi-dns-proxy", "Port": 1 } - ] - }, - "Created": "2026-03-28T10:38:00.655990366Z", - "Tags": ["tag:exit-b"], - "MachineAuthorized": true, - "CapMap": { - "https://tailscale.com/cap/file-sharing": null, - "https://tailscale.com/cap/is-owner": null, - "https://tailscale.com/cap/ssh": null, - "https://tailscale.com/cap/tailnet-lock": null, - "probe-udp-lifetime": null, - "ssh-behavior-v1": null, - "ssh-env-vars": null, - "store-appc-routes": null, - "tailnet-display-name": ["kratail2tid@passkey"] - }, - "ComputedName": "exit-b", - "ComputedNameWithHost": "exit-b" - }, - "AllCaps": [ - "https://tailscale.com/cap/file-sharing", - "https://tailscale.com/cap/tailnet-lock", - "probe-udp-lifetime", - "ssh-env-vars", - "store-appc-routes", - "ssh-behavior-v1", - "tailnet-display-name", - "https://tailscale.com/cap/ssh", - "https://tailscale.com/cap/is-owner" - ], - "NodeKey": "nodekey:265e1377372be0d036773ac41339bf7b53ed18e9f67f196d7d517abeff741217", - "MachineKey": "mkey:f4cbc28e2db0f8d8a6a5fc3991b055477e5efc6c025d24b72d3509fa3743401c", "Peers": [], - "DNS": { - "Routes": { - "tail78f774.ts.net.": null, - "ts.net.": [{ "Addr": "199.247.155.53" }, { "Addr": "2620:111:8007::53" }] - }, - "Domains": ["tail78f774.ts.net"], - "Proxied": true, - "ExitNodeFilteredSet": [".ts.net", ".tailscale.net"] - }, - "PacketFilter": [], - "PacketFilterRules": null, - "SSHPolicy": { "rules": [] }, - "CollectServices": false, - "DERPMap": { - "Regions": { - "1": { - "RegionID": 1, - "RegionCode": "nyc", - "RegionName": "New York City", - "Latitude": 40.7128, - "Longitude": -74.006, - "Nodes": [ - { - "Name": "1h", - "RegionID": 1, - "HostName": "derp1h.tailscale.com", - "IPv4": "199.38.181.93", - "IPv6": "2607:f740:f::afd", - "CanPort80": true - }, - { - "Name": "1g", - "RegionID": 1, - "HostName": "derp1g.tailscale.com", - "IPv4": "209.177.145.120", - "IPv6": "2607:f740:f::3eb", - "CanPort80": true - }, - { - "Name": "1i", - "RegionID": 1, - "HostName": "derp1i.tailscale.com", - "IPv4": "199.38.181.103", - "IPv6": "2607:f740:f::e19", - "CanPort80": true - }, - { - "Name": "1f", - "RegionID": 1, - "HostName": "derp1f.tailscale.com", - "IPv4": "199.38.181.104", - "IPv6": "2607:f740:f::bc", - "CanPort80": true - } - ] - }, - "10": { - "RegionID": 10, - "RegionCode": "sea", - "RegionName": "Seattle", - "Latitude": 47.609722, - "Longitude": -122.333056, - "Nodes": [ - { - "Name": "10c", - "RegionID": 10, - "HostName": "derp10c.tailscale.com", - "IPv4": "192.73.240.121", - "IPv6": "2607:f740:14::40c", - "CanPort80": true - }, - { - "Name": "10d", - "RegionID": 10, - "HostName": "derp10d.tailscale.com", - "IPv4": "192.73.240.132", - "IPv6": "2607:f740:14::500", - "CanPort80": true - }, - { - "Name": "10b", - "RegionID": 10, - "HostName": "derp10b.tailscale.com", - "IPv4": "192.73.240.161", - "IPv6": "2607:f740:14::61c", - "CanPort80": true - } - ] - }, - "11": { - "RegionID": 11, - "RegionCode": "sao", - "RegionName": "São Paulo", - "Latitude": -23.55, - "Longitude": -46.633333, - "Nodes": [ - { - "Name": "11f", - "RegionID": 11, - "HostName": "derp11f.tailscale.com", - "IPv4": "172.237.61.197", - "IPv6": "2600:3c0d::2000:3bff:fe44:6166", - "CanPort80": true - }, - { - "Name": "11g", - "RegionID": 11, - "HostName": "derp11g.tailscale.com", - "IPv4": "172.237.61.190", - "IPv6": "2600:3c0d::2000:62ff:febe:2e67", - "CanPort80": true - }, - { - "Name": "11e", - "RegionID": 11, - "HostName": "derp11e.tailscale.com", - "IPv4": "172.237.61.194", - "IPv6": "2600:3c0d::2000:d2ff:fe43:1790", - "CanPort80": true - } - ] - }, - "12": { - "RegionID": 12, - "RegionCode": "ord", - "RegionName": "Chicago", - "Latitude": 41.881944, - "Longitude": -87.627778, - "Nodes": [ - { - "Name": "12e", - "RegionID": 12, - "HostName": "derp12e.tailscale.com", - "IPv4": "209.177.158.15", - "IPv6": "2607:f740:e::b17", - "CanPort80": true - }, - { - "Name": "12f", - "RegionID": 12, - "HostName": "derp12f.tailscale.com", - "IPv4": "199.38.182.118", - "IPv6": "2607:f740:e::4c8", - "CanPort80": true - }, - { - "Name": "12d", - "RegionID": 12, - "HostName": "derp12d.tailscale.com", - "IPv4": "209.177.158.246", - "IPv6": "2607:f740:e::811", - "CanPort80": true - } - ] - }, - "13": { - "RegionID": 13, - "RegionCode": "den", - "RegionName": "Denver", - "Latitude": 39.7392, - "Longitude": -104.9849, - "Nodes": [ - { - "Name": "13c", - "RegionID": 13, - "HostName": "derp13c.tailscale.com", - "IPv4": "192.73.242.28", - "IPv6": "2607:f740:16::5c", - "CanPort80": true - }, - { - "Name": "13d", - "RegionID": 13, - "HostName": "derp13d.tailscale.com", - "IPv4": "192.73.242.204", - "IPv6": "2607:f740:16::c23", - "CanPort80": true - }, - { - "Name": "13b", - "RegionID": 13, - "HostName": "derp13b.tailscale.com", - "IPv4": "192.73.242.187", - "IPv6": "2607:f740:16::640", - "CanPort80": true - } - ] - }, - "14": { - "RegionID": 14, - "RegionCode": "ams", - "RegionName": "Amsterdam", - "Latitude": 52.372778, - "Longitude": 4.893611, - "Nodes": [ - { - "Name": "14c", - "RegionID": 14, - "HostName": "derp14c.tailscale.com", - "IPv4": "176.58.93.147", - "IPv6": "2a00:dd80:3c::b09", - "CanPort80": true - }, - { - "Name": "14d", - "RegionID": 14, - "HostName": "derp14d.tailscale.com", - "IPv4": "176.58.93.154", - "IPv6": "2a00:dd80:3c::3d5", - "CanPort80": true - }, - { - "Name": "14b", - "RegionID": 14, - "HostName": "derp14b.tailscale.com", - "IPv4": "176.58.93.248", - "IPv6": "2a00:dd80:3c::807", - "CanPort80": true - } - ] - }, - "15": { - "RegionID": 15, - "RegionCode": "jnb", - "RegionName": "Johannesburg", - "Latitude": -26.204444, - "Longitude": 28.045556, - "Nodes": [ - { - "Name": "15c", - "RegionID": 15, - "HostName": "derp15c.tailscale.com", - "IPv4": "102.67.165.185", - "IPv6": "2c0f:edb0:0:10::b59", - "CanPort80": true - }, - { - "Name": "15d", - "RegionID": 15, - "HostName": "derp15d.tailscale.com", - "IPv4": "102.67.165.36", - "IPv6": "2c0f:edb0:0:10::599", - "CanPort80": true - }, - { - "Name": "15b", - "RegionID": 15, - "HostName": "derp15b.tailscale.com", - "IPv4": "102.67.165.90", - "IPv6": "2c0f:edb0:0:10::963", - "CanPort80": true - } - ] - }, - "16": { - "RegionID": 16, - "RegionCode": "mia", - "RegionName": "Miami", - "Latitude": 25.78, - "Longitude": -80.21, - "Nodes": [ - { - "Name": "16c", - "RegionID": 16, - "HostName": "derp16c.tailscale.com", - "IPv4": "192.73.243.229", - "IPv6": "2607:f740:17::4e4", - "CanPort80": true - }, - { - "Name": "16d", - "RegionID": 16, - "HostName": "derp16d.tailscale.com", - "IPv4": "192.73.243.141", - "IPv6": "2607:f740:17::475", - "CanPort80": true - }, - { - "Name": "16b", - "RegionID": 16, - "HostName": "derp16b.tailscale.com", - "IPv4": "192.73.243.135", - "IPv6": "2607:f740:17::476", - "CanPort80": true - } - ] - }, - "17": { - "RegionID": 17, - "RegionCode": "lax", - "RegionName": "Los Angeles", - "Latitude": 34.05, - "Longitude": -118.25, - "Nodes": [ - { - "Name": "17c", - "RegionID": 17, - "HostName": "derp17c.tailscale.com", - "IPv4": "208.111.40.12", - "IPv6": "2607:f740:c::10", - "CanPort80": true - }, - { - "Name": "17d", - "RegionID": 17, - "HostName": "derp17d.tailscale.com", - "IPv4": "208.111.40.216", - "IPv6": "2607:f740:c::e1b", - "CanPort80": true - }, - { - "Name": "17b", - "RegionID": 17, - "HostName": "derp17b.tailscale.com", - "IPv4": "192.73.244.245", - "IPv6": "2607:f740:c::646", - "CanPort80": true - } - ] - }, - "18": { - "RegionID": 18, - "RegionCode": "par", - "RegionName": "Paris", - "Latitude": 48.856667, - "Longitude": 2.352222, - "Nodes": [ - { - "Name": "18c", - "RegionID": 18, - "HostName": "derp18c.tailscale.com", - "IPv4": "176.58.90.207", - "IPv6": "2a00:dd80:3e::c19", - "CanPort80": true - }, - { - "Name": "18d", - "RegionID": 18, - "HostName": "derp18d.tailscale.com", - "IPv4": "176.58.90.104", - "IPv6": "2a00:dd80:3e::f2e", - "CanPort80": true - }, - { - "Name": "18b", - "RegionID": 18, - "HostName": "derp18b.tailscale.com", - "IPv4": "176.58.90.147", - "IPv6": "2a00:dd80:3e::363", - "CanPort80": true - } - ] - }, - "19": { - "RegionID": 19, - "RegionCode": "mad", - "RegionName": "Madrid", - "Latitude": 40.416944, - "Longitude": -3.703333, - "Nodes": [ - { - "Name": "19c", - "RegionID": 19, - "HostName": "derp19c.tailscale.com", - "IPv4": "45.159.97.61", - "IPv6": "2a00:dd80:14:10::20", - "CanPort80": true - }, - { - "Name": "19d", - "RegionID": 19, - "HostName": "derp19d.tailscale.com", - "IPv4": "45.159.97.233", - "IPv6": "2a00:dd80:14:10::34a", - "CanPort80": true - }, - { - "Name": "19b", - "RegionID": 19, - "HostName": "derp19b.tailscale.com", - "IPv4": "45.159.97.144", - "IPv6": "2a00:dd80:14:10::335", - "CanPort80": true - } - ] - }, - "2": { - "RegionID": 2, - "RegionCode": "sfo", - "RegionName": "San Francisco", - "Latitude": 37.7775, - "Longitude": -122.416389, - "Nodes": [ - { - "Name": "2e", - "RegionID": 2, - "HostName": "derp2e.tailscale.com", - "IPv4": "192.73.252.134", - "IPv6": "2607:f740:0:3f::44c", - "CanPort80": true - }, - { - "Name": "2f", - "RegionID": 2, - "HostName": "derp2f.tailscale.com", - "IPv4": "208.111.34.178", - "IPv6": "2607:f740:0:3f::f4", - "CanPort80": true - }, - { - "Name": "2d", - "RegionID": 2, - "HostName": "derp2d.tailscale.com", - "IPv4": "192.73.252.65", - "IPv6": "2607:f740:0:3f::287", - "CanPort80": true - } - ] - }, - "20": { - "RegionID": 20, - "RegionCode": "hkg", - "RegionName": "Hong Kong", - "Latitude": 22.3193, - "Longitude": 114.1694, - "Nodes": [ - { - "Name": "20c", - "RegionID": 20, - "HostName": "derp20c.tailscale.com", - "IPv4": "205.147.105.30", - "IPv6": "2403:2500:8000:1::5fb", - "CanPort80": true - }, - { - "Name": "20d", - "RegionID": 20, - "HostName": "derp20d.tailscale.com", - "IPv4": "205.147.105.78", - "IPv6": "2403:2500:8000:1::e9a", - "CanPort80": true - }, - { - "Name": "20b", - "RegionID": 20, - "HostName": "derp20b.tailscale.com", - "IPv4": "103.6.84.152", - "IPv6": "2403:2500:8000:1::ef6", - "CanPort80": true - } - ] - }, - "21": { - "RegionID": 21, - "RegionCode": "tor", - "RegionName": "Toronto", - "Latitude": 43.741667, - "Longitude": -79.373333, - "Nodes": [ - { - "Name": "21c", - "RegionID": 21, - "HostName": "derp21c.tailscale.com", - "IPv4": "162.248.221.215", - "IPv6": "2607:f740:50::f10", - "CanPort80": true - }, - { - "Name": "21d", - "RegionID": 21, - "HostName": "derp21d.tailscale.com", - "IPv4": "162.248.221.248", - "IPv6": "2607:f740:50::ca4", - "CanPort80": true - }, - { - "Name": "21b", - "RegionID": 21, - "HostName": "derp21b.tailscale.com", - "IPv4": "162.248.221.199", - "IPv6": "2607:f740:50::1d1", - "CanPort80": true - } - ] - }, - "22": { - "RegionID": 22, - "RegionCode": "waw", - "RegionName": "Warsaw", - "Latitude": 52.23, - "Longitude": 21.011111, - "Nodes": [ - { - "Name": "22c", - "RegionID": 22, - "HostName": "derp22c.tailscale.com", - "IPv4": "45.159.98.253", - "IPv6": "2a00:dd80:40:100::3f", - "CanPort80": true - }, - { - "Name": "22d", - "RegionID": 22, - "HostName": "derp22d.tailscale.com", - "IPv4": "45.159.98.145", - "IPv6": "2a00:dd80:40:100::211", - "CanPort80": true - }, - { - "Name": "22b", - "RegionID": 22, - "HostName": "derp22b.tailscale.com", - "IPv4": "45.159.98.196", - "IPv6": "2a00:dd80:40:100::316", - "CanPort80": true - } - ] - }, - "23": { - "RegionID": 23, - "RegionCode": "dbi", - "RegionName": "Dubai", - "Latitude": 25.263056, - "Longitude": 55.297222, - "Nodes": [ - { - "Name": "23c", - "RegionID": 23, - "HostName": "derp23c.tailscale.com", - "IPv4": "185.34.3.207", - "IPv6": "2a00:dd80:3f:100::a50", - "CanPort80": true - }, - { - "Name": "23d", - "RegionID": 23, - "HostName": "derp23d.tailscale.com", - "IPv4": "185.34.3.75", - "IPv6": "2a00:dd80:3f:100::97e", - "CanPort80": true - }, - { - "Name": "23b", - "RegionID": 23, - "HostName": "derp23b.tailscale.com", - "IPv4": "185.34.3.232", - "IPv6": "2a00:dd80:3f:100::76f", - "CanPort80": true - } - ] - }, - "24": { - "RegionID": 24, - "RegionCode": "hnl", - "RegionName": "Honolulu", - "Latitude": 21.306944, - "Longitude": -157.858333, - "Nodes": [ - { - "Name": "24c", - "RegionID": 24, - "HostName": "derp24c.tailscale.com", - "IPv4": "208.83.233.233", - "IPv6": "2001:19f0:c000:c591:5400:04ff:fe26:2c5f", - "CanPort80": true - }, - { - "Name": "24d", - "RegionID": 24, - "HostName": "derp24d.tailscale.com", - "IPv4": "208.72.155.133", - "IPv6": "2001:19f0:c000:c564:5400:04ff:fe26:2ba8", - "CanPort80": true - }, - { - "Name": "24b", - "RegionID": 24, - "HostName": "derp24b.tailscale.com", - "IPv4": "208.83.234.151", - "IPv6": "2001:19f0:c000:c586:5400:04ff:fe26:2ba6", - "CanPort80": true - } - ] - }, - "25": { - "RegionID": 25, - "RegionCode": "nai", - "RegionName": "Nairobi", - "Latitude": -1.286389, - "Longitude": 36.817222, - "Nodes": [ - { - "Name": "25c", - "RegionID": 25, - "HostName": "derp25c.tailscale.com", - "IPv4": "102.67.167.37", - "IPv6": "2c0f:edb0:2000:1::2c7", - "CanPort80": true - }, - { - "Name": "25d", - "RegionID": 25, - "HostName": "derp25d.tailscale.com", - "IPv4": "102.67.167.188", - "IPv6": "2c0f:edb0:2000:1::188", - "CanPort80": true - }, - { - "Name": "25b", - "RegionID": 25, - "HostName": "derp25b.tailscale.com", - "IPv4": "102.67.167.245", - "IPv6": "2c0f:edb0:2000:1::2e9", - "CanPort80": true - } - ] - }, - "26": { - "RegionID": 26, - "RegionCode": "nue", - "RegionName": "Nuremberg", - "Latitude": 49.453889, - "Longitude": 11.0775, - "Nodes": [ - { - "Name": "26c", - "RegionID": 26, - "HostName": "derp26c.tailscale.com", - "IPv4": "49.12.193.137", - "IPv6": "2a01:4f8:1c1c:5c70::1", - "CanPort80": true - }, - { - "Name": "26d", - "RegionID": 26, - "HostName": "derp26d.tailscale.com", - "IPv4": "49.13.204.141", - "IPv6": "2a01:4f8:1c0c:7d06::1", - "CanPort80": true - }, - { - "Name": "26b", - "RegionID": 26, - "HostName": "derp26b.tailscale.com", - "IPv4": "167.235.72.200", - "IPv6": "2a01:4f8:1c1c:47b6::1", - "CanPort80": true - } - ] - }, - "27": { - "RegionID": 27, - "RegionCode": "iad", - "RegionName": "Ashburn", - "Latitude": 39.03, - "Longitude": -77.471111, - "Nodes": [ - { - "Name": "27d", - "RegionID": 27, - "HostName": "derp27d.tailscale.com", - "IPv4": "178.156.152.106", - "IPv6": "2a01:4ff:f0:3c8e::1", - "CanPort80": true - }, - { - "Name": "27c", - "RegionID": 27, - "HostName": "derp27c.tailscale.com", - "IPv4": "178.156.152.91", - "IPv6": "2a01:4ff:f0:3913::1", - "CanPort80": true - }, - { - "Name": "27e", - "RegionID": 27, - "HostName": "derp27e.tailscale.com", - "IPv4": "178.156.134.232", - "IPv6": "2a01:4ff:f0:28d4::1", - "CanPort80": true - }, - { - "Name": "27b", - "RegionID": 27, - "HostName": "derp27b.tailscale.com", - "IPv4": "5.161.218.233", - "IPv6": "2a01:4ff:f0:3db9::1", - "CanPort80": true - } - ] - }, - "28": { - "RegionID": 28, - "RegionCode": "hel", - "RegionName": "Helsinki", - "Latitude": 60.170833, - "Longitude": 24.9375, - "Nodes": [ - { - "Name": "28c", - "RegionID": 28, - "HostName": "derp28c.tailscale.com", - "IPv4": "95.217.2.165", - "IPv6": "2a01:4f9:c012:cd74::1", - "CanPort80": true - }, - { - "Name": "28d", - "RegionID": 28, - "HostName": "derp28d.tailscale.com", - "IPv4": "157.180.28.32", - "IPv6": "2a01:4f9:c012:2e5b::1", - "CanPort80": true - }, - { - "Name": "28b", - "RegionID": 28, - "HostName": "derp28b.tailscale.com", - "IPv4": "65.109.143.62", - "IPv6": "2a01:4f9:c012:d55c::1", - "CanPort80": true - } - ] - }, - "3": { - "RegionID": 3, - "RegionCode": "sin", - "RegionName": "Singapore", - "Latitude": 1.3521, - "Longitude": 103.8198, - "Nodes": [ - { - "Name": "3g", - "RegionID": 3, - "HostName": "derp3g.tailscale.com", - "IPv4": "172.237.72.79", - "IPv6": "2600:3c15::2000:adff:fe08:6fab", - "CanPort80": true - }, - { - "Name": "3f", - "RegionID": 3, - "HostName": "derp3f.tailscale.com", - "IPv4": "172.237.72.8", - "IPv6": "2600:3c15::2000:53ff:fe48:a668", - "CanPort80": true - }, - { - "Name": "3h", - "RegionID": 3, - "HostName": "derp3h.tailscale.com", - "IPv4": "172.237.66.30", - "IPv6": "2600:3c15::2000:3dff:fe44:50aa", - "CanPort80": true - }, - { - "Name": "3e", - "RegionID": 3, - "HostName": "derp3e.tailscale.com", - "IPv4": "172.237.72.43", - "IPv6": "2600:3c15::2000:6cff:fee4:d799", - "CanPort80": true - } - ] - }, - "4": { - "RegionID": 4, - "RegionCode": "fra", - "RegionName": "Frankfurt", - "Latitude": 50.1109, - "Longitude": 8.6821, - "Nodes": [ - { - "Name": "4h", - "RegionID": 4, - "HostName": "derp4h.tailscale.com", - "IPv4": "185.40.234.77", - "IPv6": "2a00:dd80:20::bcf", - "CanPort80": true - }, - { - "Name": "4g", - "RegionID": 4, - "HostName": "derp4g.tailscale.com", - "IPv4": "185.40.234.113", - "IPv6": "2a00:dd80:20::8f", - "CanPort80": true - }, - { - "Name": "4i", - "RegionID": 4, - "HostName": "derp4i.tailscale.com", - "IPv4": "185.40.234.53", - "IPv6": "2a00:dd80:20::8a6", - "CanPort80": true - }, - { - "Name": "4f", - "RegionID": 4, - "HostName": "derp4f.tailscale.com", - "IPv4": "185.40.234.219", - "IPv6": "2a00:dd80:20::a25", - "CanPort80": true - } - ] - }, - "5": { - "RegionID": 5, - "RegionCode": "syd", - "RegionName": "Sydney", - "Latitude": -33.867778, - "Longitude": 151.21, - "Nodes": [ - { - "Name": "5f", - "RegionID": 5, - "HostName": "derp5f.tailscale.com", - "IPv4": "172.105.166.103", - "IPv6": "2400:8907::2000:ccff:fe1f:80da", - "CanPort80": true - }, - { - "Name": "5g", - "RegionID": 5, - "HostName": "derp5g.tailscale.com", - "IPv4": "172.105.169.57", - "IPv6": "2400:8907::2000:2fff:fea7:57f4", - "CanPort80": true - }, - { - "Name": "5e", - "RegionID": 5, - "HostName": "derp5e.tailscale.com", - "IPv4": "172.105.179.230", - "IPv6": "2400:8907::2000:ceff:fe8d:4f4e", - "CanPort80": true - } - ] - }, - "6": { - "RegionID": 6, - "RegionCode": "blr", - "RegionName": "Bengaluru", - "Latitude": 12.9716, - "Longitude": 77.5946, - "Nodes": [ - { - "Name": "6a", - "RegionID": 6, - "HostName": "derp6.tailscale.com", - "IPv4": "68.183.90.120", - "IPv6": "2400:6180:100:d0::982:d001", - "CanPort80": true - } - ] - }, - "7": { - "RegionID": 7, - "RegionCode": "tok", - "RegionName": "Tokyo", - "Latitude": 35.6764, - "Longitude": 139.65, - "Nodes": [ - { - "Name": "7g", - "RegionID": 7, - "HostName": "derp7g.tailscale.com", - "IPv4": "172.238.6.179", - "IPv6": "2600:3c18::2000:3fff:fe80:3ebd", - "CanPort80": true - }, - { - "Name": "7f", - "RegionID": 7, - "HostName": "derp7f.tailscale.com", - "IPv4": "172.238.6.34", - "IPv6": "2600:3c18::2000:acff:fe8e:3ed5", - "CanPort80": true - }, - { - "Name": "7h", - "RegionID": 7, - "HostName": "derp7h.tailscale.com", - "IPv4": "172.237.28.183", - "IPv6": "2600:3c18::2000:b1ff:fea9:4560", - "CanPort80": true - }, - { - "Name": "7e", - "RegionID": 7, - "HostName": "derp7e.tailscale.com", - "IPv4": "172.238.6.180", - "IPv6": "2600:3c18::2000:60ff:fe0f:6e83", - "STUNOnly": true, - "CanPort80": true - } - ] - }, - "8": { - "RegionID": 8, - "RegionCode": "lhr", - "RegionName": "London", - "Latitude": 51.5072, - "Longitude": 0.1276, - "Nodes": [ - { - "Name": "8f", - "RegionID": 8, - "HostName": "derp8f.tailscale.com", - "IPv4": "176.58.88.183", - "IPv6": "2a00:dd80:3a::dfa", - "CanPort80": true - }, - { - "Name": "8g", - "RegionID": 8, - "HostName": "derp8g.tailscale.com", - "IPv4": "176.58.92.254", - "IPv6": "2a00:dd80:3a::ed", - "CanPort80": true - }, - { - "Name": "8e", - "RegionID": 8, - "HostName": "derp8e.tailscale.com", - "IPv4": "176.58.92.144", - "IPv6": "2a00:dd80:3a::b33", - "CanPort80": true - } - ] - }, - "9": { - "RegionID": 9, - "RegionCode": "dfw", - "RegionName": "Dallas", - "Latitude": 32.779167, - "Longitude": -96.808889, - "Nodes": [ - { - "Name": "9e", - "RegionID": 9, - "HostName": "derp9e.tailscale.com", - "IPv4": "192.73.248.83", - "IPv6": "2607:f740:100::359", - "CanPort80": true - }, - { - "Name": "9f", - "RegionID": 9, - "HostName": "derp9f.tailscale.com", - "IPv4": "209.177.156.197", - "IPv6": "2607:f740:100::cad", - "CanPort80": true - }, - { - "Name": "9d", - "RegionID": 9, - "HostName": "derp9d.tailscale.com", - "IPv4": "209.177.156.94", - "IPv6": "2607:f740:100::c05", - "CanPort80": true - } - ] - } - } - }, - "DisplayMessages": null, - "TKAEnabled": false, - "TKAHead": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", - "Domain": "kratail2tid@passkey", - "DomainAuditLogID": "", - "UserProfiles": { - "2230775583277936": { - "ID": 2230775583277936, - "LoginName": "exit-b.tail78f774.ts.net", - "DisplayName": "exit-b" - } - } + "PacketFilterRules": null } }, "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.124.195.93": { - "peer_name": "exit-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-node/tailscaled.sock whois --json 100.124.195.93", - "response": null - }, - "100.116.18.24": { - "peer_name": "exit-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-node/tailscaled.sock whois --json 100.116.18.24", - "response": null - }, - "100.107.162.14": { - "peer_name": "group-a-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-node/tailscaled.sock whois --json 100.107.162.14", - "response": null - }, - "100.77.135.18": { - "peer_name": "group-b-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-node/tailscaled.sock whois --json 100.77.135.18", - "response": null - }, - "100.105.127.107": { - "peer_name": "multi-exit-router", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-node/tailscaled.sock whois --json 100.105.127.107", - "response": null - }, - "100.109.43.124": { - "peer_name": "router-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-node/tailscaled.sock whois --json 100.109.43.124", - "response": null - }, - "100.65.172.123": { - "peer_name": "router-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-node/tailscaled.sock whois --json 100.65.172.123", - "response": null - }, - "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 - } - }, "netmap": { - "SelfNode": { - "ID": 4041918547170221, - "StableID": "ngCb76MbZY11CNTRL", - "Name": "exit-node.tail78f774.ts.net.", - "User": 4041918547170221, - "Key": "nodekey:90f4a7b9dc024f1ddec414a49de2aa7611a2dd86efc9d7bae30862ad7c954269", - "DiscoKey": "discokey:6f1a76215431d7100538970473d97b4fde0e0a19b91035d1cba40b59ad79b437", - "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:36712", "10.65.0.27:36712", "172.17.0.1:36712"], - "Hostinfo": { - "Hostname": "exit-node", - "RoutableIPs": ["0.0.0.0/0", "::/0"], - "RequestTags": ["tag:exit"], - "Services": [ - { "Proto": "peerapi4", "Port": 37000 }, - { "Proto": "peerapi6", "Port": 37000 }, - { "Proto": "peerapi-dns-proxy", "Port": 1 } - ] - }, - "Created": "2026-02-23T00:13:20.566112173Z", - "Tags": ["tag:exit"], - "MachineAuthorized": true, - "CapMap": { - "https://tailscale.com/cap/file-sharing": null, - "https://tailscale.com/cap/is-owner": null, - "https://tailscale.com/cap/ssh": null, - "https://tailscale.com/cap/tailnet-lock": null, - "probe-udp-lifetime": null, - "ssh-behavior-v1": null, - "ssh-env-vars": null, - "store-appc-routes": null, - "tailnet-display-name": ["kratail2tid@passkey"] - }, - "ComputedName": "exit-node", - "ComputedNameWithHost": "exit-node" - }, - "AllCaps": [ - "https://tailscale.com/cap/ssh", - "https://tailscale.com/cap/tailnet-lock", - "tailnet-display-name", - "probe-udp-lifetime", - "ssh-behavior-v1", - "store-appc-routes", - "ssh-env-vars", - "https://tailscale.com/cap/file-sharing", - "https://tailscale.com/cap/is-owner" - ], - "NodeKey": "nodekey:90f4a7b9dc024f1ddec414a49de2aa7611a2dd86efc9d7bae30862ad7c954269", - "MachineKey": "mkey:e3be47b2090e55400f3e64825cd3092841529cd7b5b775e9e4553f12308abc2a", "Peers": [], - "DNS": { - "Routes": { - "tail78f774.ts.net.": null, - "ts.net.": [{ "Addr": "199.247.155.53" }, { "Addr": "2620:111:8007::53" }] - }, - "Domains": ["tail78f774.ts.net"], - "Proxied": true, - "ExitNodeFilteredSet": [".ts.net", ".tailscale.net"] - }, - "PacketFilter": [], - "PacketFilterRules": null, - "SSHPolicy": { "rules": [] }, - "CollectServices": false, - "DERPMap": { - "Regions": { - "1": { - "RegionID": 1, - "RegionCode": "nyc", - "RegionName": "New York City", - "Latitude": 40.7128, - "Longitude": -74.006, - "Nodes": [ - { - "Name": "1h", - "RegionID": 1, - "HostName": "derp1h.tailscale.com", - "IPv4": "199.38.181.93", - "IPv6": "2607:f740:f::afd", - "CanPort80": true - }, - { - "Name": "1g", - "RegionID": 1, - "HostName": "derp1g.tailscale.com", - "IPv4": "209.177.145.120", - "IPv6": "2607:f740:f::3eb", - "CanPort80": true - }, - { - "Name": "1i", - "RegionID": 1, - "HostName": "derp1i.tailscale.com", - "IPv4": "199.38.181.103", - "IPv6": "2607:f740:f::e19", - "CanPort80": true - }, - { - "Name": "1f", - "RegionID": 1, - "HostName": "derp1f.tailscale.com", - "IPv4": "199.38.181.104", - "IPv6": "2607:f740:f::bc", - "CanPort80": true - } - ] - }, - "10": { - "RegionID": 10, - "RegionCode": "sea", - "RegionName": "Seattle", - "Latitude": 47.609722, - "Longitude": -122.333056, - "Nodes": [ - { - "Name": "10c", - "RegionID": 10, - "HostName": "derp10c.tailscale.com", - "IPv4": "192.73.240.121", - "IPv6": "2607:f740:14::40c", - "CanPort80": true - }, - { - "Name": "10d", - "RegionID": 10, - "HostName": "derp10d.tailscale.com", - "IPv4": "192.73.240.132", - "IPv6": "2607:f740:14::500", - "CanPort80": true - }, - { - "Name": "10b", - "RegionID": 10, - "HostName": "derp10b.tailscale.com", - "IPv4": "192.73.240.161", - "IPv6": "2607:f740:14::61c", - "CanPort80": true - } - ] - }, - "11": { - "RegionID": 11, - "RegionCode": "sao", - "RegionName": "São Paulo", - "Latitude": -23.55, - "Longitude": -46.633333, - "Nodes": [ - { - "Name": "11f", - "RegionID": 11, - "HostName": "derp11f.tailscale.com", - "IPv4": "172.237.61.197", - "IPv6": "2600:3c0d::2000:3bff:fe44:6166", - "CanPort80": true - }, - { - "Name": "11g", - "RegionID": 11, - "HostName": "derp11g.tailscale.com", - "IPv4": "172.237.61.190", - "IPv6": "2600:3c0d::2000:62ff:febe:2e67", - "CanPort80": true - }, - { - "Name": "11e", - "RegionID": 11, - "HostName": "derp11e.tailscale.com", - "IPv4": "172.237.61.194", - "IPv6": "2600:3c0d::2000:d2ff:fe43:1790", - "CanPort80": true - } - ] - }, - "12": { - "RegionID": 12, - "RegionCode": "ord", - "RegionName": "Chicago", - "Latitude": 41.881944, - "Longitude": -87.627778, - "Nodes": [ - { - "Name": "12e", - "RegionID": 12, - "HostName": "derp12e.tailscale.com", - "IPv4": "209.177.158.15", - "IPv6": "2607:f740:e::b17", - "CanPort80": true - }, - { - "Name": "12f", - "RegionID": 12, - "HostName": "derp12f.tailscale.com", - "IPv4": "199.38.182.118", - "IPv6": "2607:f740:e::4c8", - "CanPort80": true - }, - { - "Name": "12d", - "RegionID": 12, - "HostName": "derp12d.tailscale.com", - "IPv4": "209.177.158.246", - "IPv6": "2607:f740:e::811", - "CanPort80": true - } - ] - }, - "13": { - "RegionID": 13, - "RegionCode": "den", - "RegionName": "Denver", - "Latitude": 39.7392, - "Longitude": -104.9849, - "Nodes": [ - { - "Name": "13c", - "RegionID": 13, - "HostName": "derp13c.tailscale.com", - "IPv4": "192.73.242.28", - "IPv6": "2607:f740:16::5c", - "CanPort80": true - }, - { - "Name": "13d", - "RegionID": 13, - "HostName": "derp13d.tailscale.com", - "IPv4": "192.73.242.204", - "IPv6": "2607:f740:16::c23", - "CanPort80": true - }, - { - "Name": "13b", - "RegionID": 13, - "HostName": "derp13b.tailscale.com", - "IPv4": "192.73.242.187", - "IPv6": "2607:f740:16::640", - "CanPort80": true - } - ] - }, - "14": { - "RegionID": 14, - "RegionCode": "ams", - "RegionName": "Amsterdam", - "Latitude": 52.372778, - "Longitude": 4.893611, - "Nodes": [ - { - "Name": "14c", - "RegionID": 14, - "HostName": "derp14c.tailscale.com", - "IPv4": "176.58.93.147", - "IPv6": "2a00:dd80:3c::b09", - "CanPort80": true - }, - { - "Name": "14d", - "RegionID": 14, - "HostName": "derp14d.tailscale.com", - "IPv4": "176.58.93.154", - "IPv6": "2a00:dd80:3c::3d5", - "CanPort80": true - }, - { - "Name": "14b", - "RegionID": 14, - "HostName": "derp14b.tailscale.com", - "IPv4": "176.58.93.248", - "IPv6": "2a00:dd80:3c::807", - "CanPort80": true - } - ] - }, - "15": { - "RegionID": 15, - "RegionCode": "jnb", - "RegionName": "Johannesburg", - "Latitude": -26.204444, - "Longitude": 28.045556, - "Nodes": [ - { - "Name": "15c", - "RegionID": 15, - "HostName": "derp15c.tailscale.com", - "IPv4": "102.67.165.185", - "IPv6": "2c0f:edb0:0:10::b59", - "CanPort80": true - }, - { - "Name": "15d", - "RegionID": 15, - "HostName": "derp15d.tailscale.com", - "IPv4": "102.67.165.36", - "IPv6": "2c0f:edb0:0:10::599", - "CanPort80": true - }, - { - "Name": "15b", - "RegionID": 15, - "HostName": "derp15b.tailscale.com", - "IPv4": "102.67.165.90", - "IPv6": "2c0f:edb0:0:10::963", - "CanPort80": true - } - ] - }, - "16": { - "RegionID": 16, - "RegionCode": "mia", - "RegionName": "Miami", - "Latitude": 25.78, - "Longitude": -80.21, - "Nodes": [ - { - "Name": "16c", - "RegionID": 16, - "HostName": "derp16c.tailscale.com", - "IPv4": "192.73.243.229", - "IPv6": "2607:f740:17::4e4", - "CanPort80": true - }, - { - "Name": "16d", - "RegionID": 16, - "HostName": "derp16d.tailscale.com", - "IPv4": "192.73.243.141", - "IPv6": "2607:f740:17::475", - "CanPort80": true - }, - { - "Name": "16b", - "RegionID": 16, - "HostName": "derp16b.tailscale.com", - "IPv4": "192.73.243.135", - "IPv6": "2607:f740:17::476", - "CanPort80": true - } - ] - }, - "17": { - "RegionID": 17, - "RegionCode": "lax", - "RegionName": "Los Angeles", - "Latitude": 34.05, - "Longitude": -118.25, - "Nodes": [ - { - "Name": "17c", - "RegionID": 17, - "HostName": "derp17c.tailscale.com", - "IPv4": "208.111.40.12", - "IPv6": "2607:f740:c::10", - "CanPort80": true - }, - { - "Name": "17d", - "RegionID": 17, - "HostName": "derp17d.tailscale.com", - "IPv4": "208.111.40.216", - "IPv6": "2607:f740:c::e1b", - "CanPort80": true - }, - { - "Name": "17b", - "RegionID": 17, - "HostName": "derp17b.tailscale.com", - "IPv4": "192.73.244.245", - "IPv6": "2607:f740:c::646", - "CanPort80": true - } - ] - }, - "18": { - "RegionID": 18, - "RegionCode": "par", - "RegionName": "Paris", - "Latitude": 48.856667, - "Longitude": 2.352222, - "Nodes": [ - { - "Name": "18c", - "RegionID": 18, - "HostName": "derp18c.tailscale.com", - "IPv4": "176.58.90.207", - "IPv6": "2a00:dd80:3e::c19", - "CanPort80": true - }, - { - "Name": "18d", - "RegionID": 18, - "HostName": "derp18d.tailscale.com", - "IPv4": "176.58.90.104", - "IPv6": "2a00:dd80:3e::f2e", - "CanPort80": true - }, - { - "Name": "18b", - "RegionID": 18, - "HostName": "derp18b.tailscale.com", - "IPv4": "176.58.90.147", - "IPv6": "2a00:dd80:3e::363", - "CanPort80": true - } - ] - }, - "19": { - "RegionID": 19, - "RegionCode": "mad", - "RegionName": "Madrid", - "Latitude": 40.416944, - "Longitude": -3.703333, - "Nodes": [ - { - "Name": "19c", - "RegionID": 19, - "HostName": "derp19c.tailscale.com", - "IPv4": "45.159.97.61", - "IPv6": "2a00:dd80:14:10::20", - "CanPort80": true - }, - { - "Name": "19d", - "RegionID": 19, - "HostName": "derp19d.tailscale.com", - "IPv4": "45.159.97.233", - "IPv6": "2a00:dd80:14:10::34a", - "CanPort80": true - }, - { - "Name": "19b", - "RegionID": 19, - "HostName": "derp19b.tailscale.com", - "IPv4": "45.159.97.144", - "IPv6": "2a00:dd80:14:10::335", - "CanPort80": true - } - ] - }, - "2": { - "RegionID": 2, - "RegionCode": "sfo", - "RegionName": "San Francisco", - "Latitude": 37.7775, - "Longitude": -122.416389, - "Nodes": [ - { - "Name": "2e", - "RegionID": 2, - "HostName": "derp2e.tailscale.com", - "IPv4": "192.73.252.134", - "IPv6": "2607:f740:0:3f::44c", - "CanPort80": true - }, - { - "Name": "2f", - "RegionID": 2, - "HostName": "derp2f.tailscale.com", - "IPv4": "208.111.34.178", - "IPv6": "2607:f740:0:3f::f4", - "CanPort80": true - }, - { - "Name": "2d", - "RegionID": 2, - "HostName": "derp2d.tailscale.com", - "IPv4": "192.73.252.65", - "IPv6": "2607:f740:0:3f::287", - "CanPort80": true - } - ] - }, - "20": { - "RegionID": 20, - "RegionCode": "hkg", - "RegionName": "Hong Kong", - "Latitude": 22.3193, - "Longitude": 114.1694, - "Nodes": [ - { - "Name": "20c", - "RegionID": 20, - "HostName": "derp20c.tailscale.com", - "IPv4": "205.147.105.30", - "IPv6": "2403:2500:8000:1::5fb", - "CanPort80": true - }, - { - "Name": "20d", - "RegionID": 20, - "HostName": "derp20d.tailscale.com", - "IPv4": "205.147.105.78", - "IPv6": "2403:2500:8000:1::e9a", - "CanPort80": true - }, - { - "Name": "20b", - "RegionID": 20, - "HostName": "derp20b.tailscale.com", - "IPv4": "103.6.84.152", - "IPv6": "2403:2500:8000:1::ef6", - "CanPort80": true - } - ] - }, - "21": { - "RegionID": 21, - "RegionCode": "tor", - "RegionName": "Toronto", - "Latitude": 43.741667, - "Longitude": -79.373333, - "Nodes": [ - { - "Name": "21c", - "RegionID": 21, - "HostName": "derp21c.tailscale.com", - "IPv4": "162.248.221.215", - "IPv6": "2607:f740:50::f10", - "CanPort80": true - }, - { - "Name": "21d", - "RegionID": 21, - "HostName": "derp21d.tailscale.com", - "IPv4": "162.248.221.248", - "IPv6": "2607:f740:50::ca4", - "CanPort80": true - }, - { - "Name": "21b", - "RegionID": 21, - "HostName": "derp21b.tailscale.com", - "IPv4": "162.248.221.199", - "IPv6": "2607:f740:50::1d1", - "CanPort80": true - } - ] - }, - "22": { - "RegionID": 22, - "RegionCode": "waw", - "RegionName": "Warsaw", - "Latitude": 52.23, - "Longitude": 21.011111, - "Nodes": [ - { - "Name": "22c", - "RegionID": 22, - "HostName": "derp22c.tailscale.com", - "IPv4": "45.159.98.253", - "IPv6": "2a00:dd80:40:100::3f", - "CanPort80": true - }, - { - "Name": "22d", - "RegionID": 22, - "HostName": "derp22d.tailscale.com", - "IPv4": "45.159.98.145", - "IPv6": "2a00:dd80:40:100::211", - "CanPort80": true - }, - { - "Name": "22b", - "RegionID": 22, - "HostName": "derp22b.tailscale.com", - "IPv4": "45.159.98.196", - "IPv6": "2a00:dd80:40:100::316", - "CanPort80": true - } - ] - }, - "23": { - "RegionID": 23, - "RegionCode": "dbi", - "RegionName": "Dubai", - "Latitude": 25.263056, - "Longitude": 55.297222, - "Nodes": [ - { - "Name": "23c", - "RegionID": 23, - "HostName": "derp23c.tailscale.com", - "IPv4": "185.34.3.207", - "IPv6": "2a00:dd80:3f:100::a50", - "CanPort80": true - }, - { - "Name": "23d", - "RegionID": 23, - "HostName": "derp23d.tailscale.com", - "IPv4": "185.34.3.75", - "IPv6": "2a00:dd80:3f:100::97e", - "CanPort80": true - }, - { - "Name": "23b", - "RegionID": 23, - "HostName": "derp23b.tailscale.com", - "IPv4": "185.34.3.232", - "IPv6": "2a00:dd80:3f:100::76f", - "CanPort80": true - } - ] - }, - "24": { - "RegionID": 24, - "RegionCode": "hnl", - "RegionName": "Honolulu", - "Latitude": 21.306944, - "Longitude": -157.858333, - "Nodes": [ - { - "Name": "24c", - "RegionID": 24, - "HostName": "derp24c.tailscale.com", - "IPv4": "208.83.233.233", - "IPv6": "2001:19f0:c000:c591:5400:04ff:fe26:2c5f", - "CanPort80": true - }, - { - "Name": "24d", - "RegionID": 24, - "HostName": "derp24d.tailscale.com", - "IPv4": "208.72.155.133", - "IPv6": "2001:19f0:c000:c564:5400:04ff:fe26:2ba8", - "CanPort80": true - }, - { - "Name": "24b", - "RegionID": 24, - "HostName": "derp24b.tailscale.com", - "IPv4": "208.83.234.151", - "IPv6": "2001:19f0:c000:c586:5400:04ff:fe26:2ba6", - "CanPort80": true - } - ] - }, - "25": { - "RegionID": 25, - "RegionCode": "nai", - "RegionName": "Nairobi", - "Latitude": -1.286389, - "Longitude": 36.817222, - "Nodes": [ - { - "Name": "25c", - "RegionID": 25, - "HostName": "derp25c.tailscale.com", - "IPv4": "102.67.167.37", - "IPv6": "2c0f:edb0:2000:1::2c7", - "CanPort80": true - }, - { - "Name": "25d", - "RegionID": 25, - "HostName": "derp25d.tailscale.com", - "IPv4": "102.67.167.188", - "IPv6": "2c0f:edb0:2000:1::188", - "CanPort80": true - }, - { - "Name": "25b", - "RegionID": 25, - "HostName": "derp25b.tailscale.com", - "IPv4": "102.67.167.245", - "IPv6": "2c0f:edb0:2000:1::2e9", - "CanPort80": true - } - ] - }, - "26": { - "RegionID": 26, - "RegionCode": "nue", - "RegionName": "Nuremberg", - "Latitude": 49.453889, - "Longitude": 11.0775, - "Nodes": [ - { - "Name": "26c", - "RegionID": 26, - "HostName": "derp26c.tailscale.com", - "IPv4": "49.12.193.137", - "IPv6": "2a01:4f8:1c1c:5c70::1", - "CanPort80": true - }, - { - "Name": "26d", - "RegionID": 26, - "HostName": "derp26d.tailscale.com", - "IPv4": "49.13.204.141", - "IPv6": "2a01:4f8:1c0c:7d06::1", - "CanPort80": true - }, - { - "Name": "26b", - "RegionID": 26, - "HostName": "derp26b.tailscale.com", - "IPv4": "167.235.72.200", - "IPv6": "2a01:4f8:1c1c:47b6::1", - "CanPort80": true - } - ] - }, - "27": { - "RegionID": 27, - "RegionCode": "iad", - "RegionName": "Ashburn", - "Latitude": 39.03, - "Longitude": -77.471111, - "Nodes": [ - { - "Name": "27d", - "RegionID": 27, - "HostName": "derp27d.tailscale.com", - "IPv4": "178.156.152.106", - "IPv6": "2a01:4ff:f0:3c8e::1", - "CanPort80": true - }, - { - "Name": "27c", - "RegionID": 27, - "HostName": "derp27c.tailscale.com", - "IPv4": "178.156.152.91", - "IPv6": "2a01:4ff:f0:3913::1", - "CanPort80": true - }, - { - "Name": "27e", - "RegionID": 27, - "HostName": "derp27e.tailscale.com", - "IPv4": "178.156.134.232", - "IPv6": "2a01:4ff:f0:28d4::1", - "CanPort80": true - }, - { - "Name": "27b", - "RegionID": 27, - "HostName": "derp27b.tailscale.com", - "IPv4": "5.161.218.233", - "IPv6": "2a01:4ff:f0:3db9::1", - "CanPort80": true - } - ] - }, - "28": { - "RegionID": 28, - "RegionCode": "hel", - "RegionName": "Helsinki", - "Latitude": 60.170833, - "Longitude": 24.9375, - "Nodes": [ - { - "Name": "28c", - "RegionID": 28, - "HostName": "derp28c.tailscale.com", - "IPv4": "95.217.2.165", - "IPv6": "2a01:4f9:c012:cd74::1", - "CanPort80": true - }, - { - "Name": "28d", - "RegionID": 28, - "HostName": "derp28d.tailscale.com", - "IPv4": "157.180.28.32", - "IPv6": "2a01:4f9:c012:2e5b::1", - "CanPort80": true - }, - { - "Name": "28b", - "RegionID": 28, - "HostName": "derp28b.tailscale.com", - "IPv4": "65.109.143.62", - "IPv6": "2a01:4f9:c012:d55c::1", - "CanPort80": true - } - ] - }, - "3": { - "RegionID": 3, - "RegionCode": "sin", - "RegionName": "Singapore", - "Latitude": 1.3521, - "Longitude": 103.8198, - "Nodes": [ - { - "Name": "3g", - "RegionID": 3, - "HostName": "derp3g.tailscale.com", - "IPv4": "172.237.72.79", - "IPv6": "2600:3c15::2000:adff:fe08:6fab", - "CanPort80": true - }, - { - "Name": "3f", - "RegionID": 3, - "HostName": "derp3f.tailscale.com", - "IPv4": "172.237.72.8", - "IPv6": "2600:3c15::2000:53ff:fe48:a668", - "CanPort80": true - }, - { - "Name": "3h", - "RegionID": 3, - "HostName": "derp3h.tailscale.com", - "IPv4": "172.237.66.30", - "IPv6": "2600:3c15::2000:3dff:fe44:50aa", - "CanPort80": true - }, - { - "Name": "3e", - "RegionID": 3, - "HostName": "derp3e.tailscale.com", - "IPv4": "172.237.72.43", - "IPv6": "2600:3c15::2000:6cff:fee4:d799", - "CanPort80": true - } - ] - }, - "4": { - "RegionID": 4, - "RegionCode": "fra", - "RegionName": "Frankfurt", - "Latitude": 50.1109, - "Longitude": 8.6821, - "Nodes": [ - { - "Name": "4h", - "RegionID": 4, - "HostName": "derp4h.tailscale.com", - "IPv4": "185.40.234.77", - "IPv6": "2a00:dd80:20::bcf", - "CanPort80": true - }, - { - "Name": "4g", - "RegionID": 4, - "HostName": "derp4g.tailscale.com", - "IPv4": "185.40.234.113", - "IPv6": "2a00:dd80:20::8f", - "CanPort80": true - }, - { - "Name": "4i", - "RegionID": 4, - "HostName": "derp4i.tailscale.com", - "IPv4": "185.40.234.53", - "IPv6": "2a00:dd80:20::8a6", - "CanPort80": true - }, - { - "Name": "4f", - "RegionID": 4, - "HostName": "derp4f.tailscale.com", - "IPv4": "185.40.234.219", - "IPv6": "2a00:dd80:20::a25", - "CanPort80": true - } - ] - }, - "5": { - "RegionID": 5, - "RegionCode": "syd", - "RegionName": "Sydney", - "Latitude": -33.867778, - "Longitude": 151.21, - "Nodes": [ - { - "Name": "5f", - "RegionID": 5, - "HostName": "derp5f.tailscale.com", - "IPv4": "172.105.166.103", - "IPv6": "2400:8907::2000:ccff:fe1f:80da", - "CanPort80": true - }, - { - "Name": "5g", - "RegionID": 5, - "HostName": "derp5g.tailscale.com", - "IPv4": "172.105.169.57", - "IPv6": "2400:8907::2000:2fff:fea7:57f4", - "CanPort80": true - }, - { - "Name": "5e", - "RegionID": 5, - "HostName": "derp5e.tailscale.com", - "IPv4": "172.105.179.230", - "IPv6": "2400:8907::2000:ceff:fe8d:4f4e", - "CanPort80": true - } - ] - }, - "6": { - "RegionID": 6, - "RegionCode": "blr", - "RegionName": "Bengaluru", - "Latitude": 12.9716, - "Longitude": 77.5946, - "Nodes": [ - { - "Name": "6a", - "RegionID": 6, - "HostName": "derp6.tailscale.com", - "IPv4": "68.183.90.120", - "IPv6": "2400:6180:100:d0::982:d001", - "CanPort80": true - } - ] - }, - "7": { - "RegionID": 7, - "RegionCode": "tok", - "RegionName": "Tokyo", - "Latitude": 35.6764, - "Longitude": 139.65, - "Nodes": [ - { - "Name": "7g", - "RegionID": 7, - "HostName": "derp7g.tailscale.com", - "IPv4": "172.238.6.179", - "IPv6": "2600:3c18::2000:3fff:fe80:3ebd", - "CanPort80": true - }, - { - "Name": "7f", - "RegionID": 7, - "HostName": "derp7f.tailscale.com", - "IPv4": "172.238.6.34", - "IPv6": "2600:3c18::2000:acff:fe8e:3ed5", - "CanPort80": true - }, - { - "Name": "7h", - "RegionID": 7, - "HostName": "derp7h.tailscale.com", - "IPv4": "172.237.28.183", - "IPv6": "2600:3c18::2000:b1ff:fea9:4560", - "CanPort80": true - }, - { - "Name": "7e", - "RegionID": 7, - "HostName": "derp7e.tailscale.com", - "IPv4": "172.238.6.180", - "IPv6": "2600:3c18::2000:60ff:fe0f:6e83", - "STUNOnly": true, - "CanPort80": true - } - ] - }, - "8": { - "RegionID": 8, - "RegionCode": "lhr", - "RegionName": "London", - "Latitude": 51.5072, - "Longitude": 0.1276, - "Nodes": [ - { - "Name": "8f", - "RegionID": 8, - "HostName": "derp8f.tailscale.com", - "IPv4": "176.58.88.183", - "IPv6": "2a00:dd80:3a::dfa", - "CanPort80": true - }, - { - "Name": "8g", - "RegionID": 8, - "HostName": "derp8g.tailscale.com", - "IPv4": "176.58.92.254", - "IPv6": "2a00:dd80:3a::ed", - "CanPort80": true - }, - { - "Name": "8e", - "RegionID": 8, - "HostName": "derp8e.tailscale.com", - "IPv4": "176.58.92.144", - "IPv6": "2a00:dd80:3a::b33", - "CanPort80": true - } - ] - }, - "9": { - "RegionID": 9, - "RegionCode": "dfw", - "RegionName": "Dallas", - "Latitude": 32.779167, - "Longitude": -96.808889, - "Nodes": [ - { - "Name": "9e", - "RegionID": 9, - "HostName": "derp9e.tailscale.com", - "IPv4": "192.73.248.83", - "IPv6": "2607:f740:100::359", - "CanPort80": true - }, - { - "Name": "9f", - "RegionID": 9, - "HostName": "derp9f.tailscale.com", - "IPv4": "209.177.156.197", - "IPv6": "2607:f740:100::cad", - "CanPort80": true - }, - { - "Name": "9d", - "RegionID": 9, - "HostName": "derp9d.tailscale.com", - "IPv4": "209.177.156.94", - "IPv6": "2607:f740:100::c05", - "CanPort80": true - } - ] - } - } - }, - "DisplayMessages": null, - "TKAEnabled": false, - "TKAHead": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", - "Domain": "kratail2tid@passkey", - "DomainAuditLogID": "", - "UserProfiles": { - "4041918547170221": { - "ID": 4041918547170221, - "LoginName": "exit-node.tail78f774.ts.net", - "DisplayName": "exit-node" - } - } + "PacketFilterRules": null } }, "group-a-client": { - "commands": { - "packet_filter_rules": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/group-a-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/group-a-client/tailscaled.sock debug localapi POST debug-packet-filter-matches" - }, "packet_filter_rules": null, - "packet_filter_matches": [], - "whois": { - "100.124.195.93": { - "peer_name": "exit-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/group-a-client/tailscaled.sock whois --json 100.124.195.93", - "response": null - }, - "100.116.18.24": { - "peer_name": "exit-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/group-a-client/tailscaled.sock whois --json 100.116.18.24", - "response": null - }, - "100.85.66.106": { - "peer_name": "exit-node", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/group-a-client/tailscaled.sock whois --json 100.85.66.106", - "response": null - }, - "100.77.135.18": { - "peer_name": "group-b-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/group-a-client/tailscaled.sock whois --json 100.77.135.18", - "response": null - }, - "100.105.127.107": { - "peer_name": "multi-exit-router", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/group-a-client/tailscaled.sock whois --json 100.105.127.107", - "response": null - }, - "100.109.43.124": { - "peer_name": "router-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/group-a-client/tailscaled.sock whois --json 100.109.43.124", - "response": null - }, - "100.65.172.123": { - "peer_name": "router-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/group-a-client/tailscaled.sock whois --json 100.65.172.123", - "response": null - }, - "100.92.142.61": { - "peer_name": "subnet-router", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/group-a-client/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/group-a-client/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/group-a-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/group-a-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/group-a-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/group-a-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/group-a-client/tailscaled.sock whois --json 100.90.199.68", - "response": null - } - }, "netmap": { - "SelfNode": { - "ID": 6999435610919250, - "StableID": "nyckVfJ4fw11CNTRL", - "Name": "group-a-client.tail78f774.ts.net.", - "User": 6999435610919250, - "Key": "nodekey:802726716bd4942fceb5e444218c930040fadb082698b57ea3eb59a6a26ba20d", - "DiscoKey": "discokey:bc93c2d3b81606e44eb1c96d721e7cd73c9497aa7d3efbe2f5e0d1e2e95b190f", - "Addresses": ["100.107.162.14/32", "fd7a:115c:a1e0::a237:a20e/128"], - "AllowedIPs": ["100.107.162.14/32", "fd7a:115c:a1e0::a237:a20e/128"], - "Endpoints": ["77.164.248.136:51980", "10.65.0.27:51980", "172.17.0.1:51980"], - "Hostinfo": { - "Hostname": "group-a-client", - "RequestTags": ["tag:group-a"], - "Services": [ - { "Proto": "peerapi4", "Port": 36543 }, - { "Proto": "peerapi6", "Port": 36543 }, - { "Proto": "peerapi-dns-proxy", "Port": 1 } - ] - }, - "Created": "2026-03-28T10:38:04.339428828Z", - "Tags": ["tag:group-a"], - "MachineAuthorized": true, - "CapMap": { - "https://tailscale.com/cap/file-sharing": null, - "https://tailscale.com/cap/is-owner": null, - "https://tailscale.com/cap/ssh": null, - "https://tailscale.com/cap/tailnet-lock": null, - "probe-udp-lifetime": null, - "ssh-behavior-v1": null, - "ssh-env-vars": null, - "store-appc-routes": null, - "tailnet-display-name": ["kratail2tid@passkey"] - }, - "ComputedName": "group-a-client", - "ComputedNameWithHost": "group-a-client" - }, - "AllCaps": [ - "https://tailscale.com/cap/is-owner", - "https://tailscale.com/cap/ssh", - "ssh-behavior-v1", - "tailnet-display-name", - "ssh-env-vars", - "https://tailscale.com/cap/tailnet-lock", - "https://tailscale.com/cap/file-sharing", - "probe-udp-lifetime", - "store-appc-routes" - ], - "NodeKey": "nodekey:802726716bd4942fceb5e444218c930040fadb082698b57ea3eb59a6a26ba20d", - "MachineKey": "mkey:fd2d0c2953440569b6c045d6bb1826bf138bf65b4ed4433532e4d91e09fd6b6b", "Peers": [], - "DNS": { - "Routes": { - "tail78f774.ts.net.": null, - "ts.net.": [{ "Addr": "199.247.155.53" }, { "Addr": "2620:111:8007::53" }] - }, - "Domains": ["tail78f774.ts.net"], - "Proxied": true, - "ExitNodeFilteredSet": [".ts.net", ".tailscale.net"] - }, - "PacketFilter": [], - "PacketFilterRules": null, - "SSHPolicy": { "rules": [] }, - "CollectServices": false, - "DERPMap": { - "Regions": { - "1": { - "RegionID": 1, - "RegionCode": "nyc", - "RegionName": "New York City", - "Latitude": 40.7128, - "Longitude": -74.006, - "Nodes": [ - { - "Name": "1h", - "RegionID": 1, - "HostName": "derp1h.tailscale.com", - "IPv4": "199.38.181.93", - "IPv6": "2607:f740:f::afd", - "CanPort80": true - }, - { - "Name": "1g", - "RegionID": 1, - "HostName": "derp1g.tailscale.com", - "IPv4": "209.177.145.120", - "IPv6": "2607:f740:f::3eb", - "CanPort80": true - }, - { - "Name": "1i", - "RegionID": 1, - "HostName": "derp1i.tailscale.com", - "IPv4": "199.38.181.103", - "IPv6": "2607:f740:f::e19", - "CanPort80": true - }, - { - "Name": "1f", - "RegionID": 1, - "HostName": "derp1f.tailscale.com", - "IPv4": "199.38.181.104", - "IPv6": "2607:f740:f::bc", - "CanPort80": true - } - ] - }, - "10": { - "RegionID": 10, - "RegionCode": "sea", - "RegionName": "Seattle", - "Latitude": 47.609722, - "Longitude": -122.333056, - "Nodes": [ - { - "Name": "10c", - "RegionID": 10, - "HostName": "derp10c.tailscale.com", - "IPv4": "192.73.240.121", - "IPv6": "2607:f740:14::40c", - "CanPort80": true - }, - { - "Name": "10d", - "RegionID": 10, - "HostName": "derp10d.tailscale.com", - "IPv4": "192.73.240.132", - "IPv6": "2607:f740:14::500", - "CanPort80": true - }, - { - "Name": "10b", - "RegionID": 10, - "HostName": "derp10b.tailscale.com", - "IPv4": "192.73.240.161", - "IPv6": "2607:f740:14::61c", - "CanPort80": true - } - ] - }, - "11": { - "RegionID": 11, - "RegionCode": "sao", - "RegionName": "São Paulo", - "Latitude": -23.55, - "Longitude": -46.633333, - "Nodes": [ - { - "Name": "11f", - "RegionID": 11, - "HostName": "derp11f.tailscale.com", - "IPv4": "172.237.61.197", - "IPv6": "2600:3c0d::2000:3bff:fe44:6166", - "CanPort80": true - }, - { - "Name": "11g", - "RegionID": 11, - "HostName": "derp11g.tailscale.com", - "IPv4": "172.237.61.190", - "IPv6": "2600:3c0d::2000:62ff:febe:2e67", - "CanPort80": true - }, - { - "Name": "11e", - "RegionID": 11, - "HostName": "derp11e.tailscale.com", - "IPv4": "172.237.61.194", - "IPv6": "2600:3c0d::2000:d2ff:fe43:1790", - "CanPort80": true - } - ] - }, - "12": { - "RegionID": 12, - "RegionCode": "ord", - "RegionName": "Chicago", - "Latitude": 41.881944, - "Longitude": -87.627778, - "Nodes": [ - { - "Name": "12e", - "RegionID": 12, - "HostName": "derp12e.tailscale.com", - "IPv4": "209.177.158.15", - "IPv6": "2607:f740:e::b17", - "CanPort80": true - }, - { - "Name": "12f", - "RegionID": 12, - "HostName": "derp12f.tailscale.com", - "IPv4": "199.38.182.118", - "IPv6": "2607:f740:e::4c8", - "CanPort80": true - }, - { - "Name": "12d", - "RegionID": 12, - "HostName": "derp12d.tailscale.com", - "IPv4": "209.177.158.246", - "IPv6": "2607:f740:e::811", - "CanPort80": true - } - ] - }, - "13": { - "RegionID": 13, - "RegionCode": "den", - "RegionName": "Denver", - "Latitude": 39.7392, - "Longitude": -104.9849, - "Nodes": [ - { - "Name": "13c", - "RegionID": 13, - "HostName": "derp13c.tailscale.com", - "IPv4": "192.73.242.28", - "IPv6": "2607:f740:16::5c", - "CanPort80": true - }, - { - "Name": "13d", - "RegionID": 13, - "HostName": "derp13d.tailscale.com", - "IPv4": "192.73.242.204", - "IPv6": "2607:f740:16::c23", - "CanPort80": true - }, - { - "Name": "13b", - "RegionID": 13, - "HostName": "derp13b.tailscale.com", - "IPv4": "192.73.242.187", - "IPv6": "2607:f740:16::640", - "CanPort80": true - } - ] - }, - "14": { - "RegionID": 14, - "RegionCode": "ams", - "RegionName": "Amsterdam", - "Latitude": 52.372778, - "Longitude": 4.893611, - "Nodes": [ - { - "Name": "14c", - "RegionID": 14, - "HostName": "derp14c.tailscale.com", - "IPv4": "176.58.93.147", - "IPv6": "2a00:dd80:3c::b09", - "CanPort80": true - }, - { - "Name": "14d", - "RegionID": 14, - "HostName": "derp14d.tailscale.com", - "IPv4": "176.58.93.154", - "IPv6": "2a00:dd80:3c::3d5", - "CanPort80": true - }, - { - "Name": "14b", - "RegionID": 14, - "HostName": "derp14b.tailscale.com", - "IPv4": "176.58.93.248", - "IPv6": "2a00:dd80:3c::807", - "CanPort80": true - } - ] - }, - "15": { - "RegionID": 15, - "RegionCode": "jnb", - "RegionName": "Johannesburg", - "Latitude": -26.204444, - "Longitude": 28.045556, - "Nodes": [ - { - "Name": "15c", - "RegionID": 15, - "HostName": "derp15c.tailscale.com", - "IPv4": "102.67.165.185", - "IPv6": "2c0f:edb0:0:10::b59", - "CanPort80": true - }, - { - "Name": "15d", - "RegionID": 15, - "HostName": "derp15d.tailscale.com", - "IPv4": "102.67.165.36", - "IPv6": "2c0f:edb0:0:10::599", - "CanPort80": true - }, - { - "Name": "15b", - "RegionID": 15, - "HostName": "derp15b.tailscale.com", - "IPv4": "102.67.165.90", - "IPv6": "2c0f:edb0:0:10::963", - "CanPort80": true - } - ] - }, - "16": { - "RegionID": 16, - "RegionCode": "mia", - "RegionName": "Miami", - "Latitude": 25.78, - "Longitude": -80.21, - "Nodes": [ - { - "Name": "16c", - "RegionID": 16, - "HostName": "derp16c.tailscale.com", - "IPv4": "192.73.243.229", - "IPv6": "2607:f740:17::4e4", - "CanPort80": true - }, - { - "Name": "16d", - "RegionID": 16, - "HostName": "derp16d.tailscale.com", - "IPv4": "192.73.243.141", - "IPv6": "2607:f740:17::475", - "CanPort80": true - }, - { - "Name": "16b", - "RegionID": 16, - "HostName": "derp16b.tailscale.com", - "IPv4": "192.73.243.135", - "IPv6": "2607:f740:17::476", - "CanPort80": true - } - ] - }, - "17": { - "RegionID": 17, - "RegionCode": "lax", - "RegionName": "Los Angeles", - "Latitude": 34.05, - "Longitude": -118.25, - "Nodes": [ - { - "Name": "17c", - "RegionID": 17, - "HostName": "derp17c.tailscale.com", - "IPv4": "208.111.40.12", - "IPv6": "2607:f740:c::10", - "CanPort80": true - }, - { - "Name": "17d", - "RegionID": 17, - "HostName": "derp17d.tailscale.com", - "IPv4": "208.111.40.216", - "IPv6": "2607:f740:c::e1b", - "CanPort80": true - }, - { - "Name": "17b", - "RegionID": 17, - "HostName": "derp17b.tailscale.com", - "IPv4": "192.73.244.245", - "IPv6": "2607:f740:c::646", - "CanPort80": true - } - ] - }, - "18": { - "RegionID": 18, - "RegionCode": "par", - "RegionName": "Paris", - "Latitude": 48.856667, - "Longitude": 2.352222, - "Nodes": [ - { - "Name": "18c", - "RegionID": 18, - "HostName": "derp18c.tailscale.com", - "IPv4": "176.58.90.207", - "IPv6": "2a00:dd80:3e::c19", - "CanPort80": true - }, - { - "Name": "18d", - "RegionID": 18, - "HostName": "derp18d.tailscale.com", - "IPv4": "176.58.90.104", - "IPv6": "2a00:dd80:3e::f2e", - "CanPort80": true - }, - { - "Name": "18b", - "RegionID": 18, - "HostName": "derp18b.tailscale.com", - "IPv4": "176.58.90.147", - "IPv6": "2a00:dd80:3e::363", - "CanPort80": true - } - ] - }, - "19": { - "RegionID": 19, - "RegionCode": "mad", - "RegionName": "Madrid", - "Latitude": 40.416944, - "Longitude": -3.703333, - "Nodes": [ - { - "Name": "19c", - "RegionID": 19, - "HostName": "derp19c.tailscale.com", - "IPv4": "45.159.97.61", - "IPv6": "2a00:dd80:14:10::20", - "CanPort80": true - }, - { - "Name": "19d", - "RegionID": 19, - "HostName": "derp19d.tailscale.com", - "IPv4": "45.159.97.233", - "IPv6": "2a00:dd80:14:10::34a", - "CanPort80": true - }, - { - "Name": "19b", - "RegionID": 19, - "HostName": "derp19b.tailscale.com", - "IPv4": "45.159.97.144", - "IPv6": "2a00:dd80:14:10::335", - "CanPort80": true - } - ] - }, - "2": { - "RegionID": 2, - "RegionCode": "sfo", - "RegionName": "San Francisco", - "Latitude": 37.7775, - "Longitude": -122.416389, - "Nodes": [ - { - "Name": "2e", - "RegionID": 2, - "HostName": "derp2e.tailscale.com", - "IPv4": "192.73.252.134", - "IPv6": "2607:f740:0:3f::44c", - "CanPort80": true - }, - { - "Name": "2f", - "RegionID": 2, - "HostName": "derp2f.tailscale.com", - "IPv4": "208.111.34.178", - "IPv6": "2607:f740:0:3f::f4", - "CanPort80": true - }, - { - "Name": "2d", - "RegionID": 2, - "HostName": "derp2d.tailscale.com", - "IPv4": "192.73.252.65", - "IPv6": "2607:f740:0:3f::287", - "CanPort80": true - } - ] - }, - "20": { - "RegionID": 20, - "RegionCode": "hkg", - "RegionName": "Hong Kong", - "Latitude": 22.3193, - "Longitude": 114.1694, - "Nodes": [ - { - "Name": "20c", - "RegionID": 20, - "HostName": "derp20c.tailscale.com", - "IPv4": "205.147.105.30", - "IPv6": "2403:2500:8000:1::5fb", - "CanPort80": true - }, - { - "Name": "20d", - "RegionID": 20, - "HostName": "derp20d.tailscale.com", - "IPv4": "205.147.105.78", - "IPv6": "2403:2500:8000:1::e9a", - "CanPort80": true - }, - { - "Name": "20b", - "RegionID": 20, - "HostName": "derp20b.tailscale.com", - "IPv4": "103.6.84.152", - "IPv6": "2403:2500:8000:1::ef6", - "CanPort80": true - } - ] - }, - "21": { - "RegionID": 21, - "RegionCode": "tor", - "RegionName": "Toronto", - "Latitude": 43.741667, - "Longitude": -79.373333, - "Nodes": [ - { - "Name": "21c", - "RegionID": 21, - "HostName": "derp21c.tailscale.com", - "IPv4": "162.248.221.215", - "IPv6": "2607:f740:50::f10", - "CanPort80": true - }, - { - "Name": "21d", - "RegionID": 21, - "HostName": "derp21d.tailscale.com", - "IPv4": "162.248.221.248", - "IPv6": "2607:f740:50::ca4", - "CanPort80": true - }, - { - "Name": "21b", - "RegionID": 21, - "HostName": "derp21b.tailscale.com", - "IPv4": "162.248.221.199", - "IPv6": "2607:f740:50::1d1", - "CanPort80": true - } - ] - }, - "22": { - "RegionID": 22, - "RegionCode": "waw", - "RegionName": "Warsaw", - "Latitude": 52.23, - "Longitude": 21.011111, - "Nodes": [ - { - "Name": "22c", - "RegionID": 22, - "HostName": "derp22c.tailscale.com", - "IPv4": "45.159.98.253", - "IPv6": "2a00:dd80:40:100::3f", - "CanPort80": true - }, - { - "Name": "22d", - "RegionID": 22, - "HostName": "derp22d.tailscale.com", - "IPv4": "45.159.98.145", - "IPv6": "2a00:dd80:40:100::211", - "CanPort80": true - }, - { - "Name": "22b", - "RegionID": 22, - "HostName": "derp22b.tailscale.com", - "IPv4": "45.159.98.196", - "IPv6": "2a00:dd80:40:100::316", - "CanPort80": true - } - ] - }, - "23": { - "RegionID": 23, - "RegionCode": "dbi", - "RegionName": "Dubai", - "Latitude": 25.263056, - "Longitude": 55.297222, - "Nodes": [ - { - "Name": "23c", - "RegionID": 23, - "HostName": "derp23c.tailscale.com", - "IPv4": "185.34.3.207", - "IPv6": "2a00:dd80:3f:100::a50", - "CanPort80": true - }, - { - "Name": "23d", - "RegionID": 23, - "HostName": "derp23d.tailscale.com", - "IPv4": "185.34.3.75", - "IPv6": "2a00:dd80:3f:100::97e", - "CanPort80": true - }, - { - "Name": "23b", - "RegionID": 23, - "HostName": "derp23b.tailscale.com", - "IPv4": "185.34.3.232", - "IPv6": "2a00:dd80:3f:100::76f", - "CanPort80": true - } - ] - }, - "24": { - "RegionID": 24, - "RegionCode": "hnl", - "RegionName": "Honolulu", - "Latitude": 21.306944, - "Longitude": -157.858333, - "Nodes": [ - { - "Name": "24c", - "RegionID": 24, - "HostName": "derp24c.tailscale.com", - "IPv4": "208.83.233.233", - "IPv6": "2001:19f0:c000:c591:5400:04ff:fe26:2c5f", - "CanPort80": true - }, - { - "Name": "24d", - "RegionID": 24, - "HostName": "derp24d.tailscale.com", - "IPv4": "208.72.155.133", - "IPv6": "2001:19f0:c000:c564:5400:04ff:fe26:2ba8", - "CanPort80": true - }, - { - "Name": "24b", - "RegionID": 24, - "HostName": "derp24b.tailscale.com", - "IPv4": "208.83.234.151", - "IPv6": "2001:19f0:c000:c586:5400:04ff:fe26:2ba6", - "CanPort80": true - } - ] - }, - "25": { - "RegionID": 25, - "RegionCode": "nai", - "RegionName": "Nairobi", - "Latitude": -1.286389, - "Longitude": 36.817222, - "Nodes": [ - { - "Name": "25c", - "RegionID": 25, - "HostName": "derp25c.tailscale.com", - "IPv4": "102.67.167.37", - "IPv6": "2c0f:edb0:2000:1::2c7", - "CanPort80": true - }, - { - "Name": "25d", - "RegionID": 25, - "HostName": "derp25d.tailscale.com", - "IPv4": "102.67.167.188", - "IPv6": "2c0f:edb0:2000:1::188", - "CanPort80": true - }, - { - "Name": "25b", - "RegionID": 25, - "HostName": "derp25b.tailscale.com", - "IPv4": "102.67.167.245", - "IPv6": "2c0f:edb0:2000:1::2e9", - "CanPort80": true - } - ] - }, - "26": { - "RegionID": 26, - "RegionCode": "nue", - "RegionName": "Nuremberg", - "Latitude": 49.453889, - "Longitude": 11.0775, - "Nodes": [ - { - "Name": "26c", - "RegionID": 26, - "HostName": "derp26c.tailscale.com", - "IPv4": "49.12.193.137", - "IPv6": "2a01:4f8:1c1c:5c70::1", - "CanPort80": true - }, - { - "Name": "26d", - "RegionID": 26, - "HostName": "derp26d.tailscale.com", - "IPv4": "49.13.204.141", - "IPv6": "2a01:4f8:1c0c:7d06::1", - "CanPort80": true - }, - { - "Name": "26b", - "RegionID": 26, - "HostName": "derp26b.tailscale.com", - "IPv4": "167.235.72.200", - "IPv6": "2a01:4f8:1c1c:47b6::1", - "CanPort80": true - } - ] - }, - "27": { - "RegionID": 27, - "RegionCode": "iad", - "RegionName": "Ashburn", - "Latitude": 39.03, - "Longitude": -77.471111, - "Nodes": [ - { - "Name": "27d", - "RegionID": 27, - "HostName": "derp27d.tailscale.com", - "IPv4": "178.156.152.106", - "IPv6": "2a01:4ff:f0:3c8e::1", - "CanPort80": true - }, - { - "Name": "27c", - "RegionID": 27, - "HostName": "derp27c.tailscale.com", - "IPv4": "178.156.152.91", - "IPv6": "2a01:4ff:f0:3913::1", - "CanPort80": true - }, - { - "Name": "27e", - "RegionID": 27, - "HostName": "derp27e.tailscale.com", - "IPv4": "178.156.134.232", - "IPv6": "2a01:4ff:f0:28d4::1", - "CanPort80": true - }, - { - "Name": "27b", - "RegionID": 27, - "HostName": "derp27b.tailscale.com", - "IPv4": "5.161.218.233", - "IPv6": "2a01:4ff:f0:3db9::1", - "CanPort80": true - } - ] - }, - "28": { - "RegionID": 28, - "RegionCode": "hel", - "RegionName": "Helsinki", - "Latitude": 60.170833, - "Longitude": 24.9375, - "Nodes": [ - { - "Name": "28c", - "RegionID": 28, - "HostName": "derp28c.tailscale.com", - "IPv4": "95.217.2.165", - "IPv6": "2a01:4f9:c012:cd74::1", - "CanPort80": true - }, - { - "Name": "28d", - "RegionID": 28, - "HostName": "derp28d.tailscale.com", - "IPv4": "157.180.28.32", - "IPv6": "2a01:4f9:c012:2e5b::1", - "CanPort80": true - }, - { - "Name": "28b", - "RegionID": 28, - "HostName": "derp28b.tailscale.com", - "IPv4": "65.109.143.62", - "IPv6": "2a01:4f9:c012:d55c::1", - "CanPort80": true - } - ] - }, - "3": { - "RegionID": 3, - "RegionCode": "sin", - "RegionName": "Singapore", - "Latitude": 1.3521, - "Longitude": 103.8198, - "Nodes": [ - { - "Name": "3g", - "RegionID": 3, - "HostName": "derp3g.tailscale.com", - "IPv4": "172.237.72.79", - "IPv6": "2600:3c15::2000:adff:fe08:6fab", - "CanPort80": true - }, - { - "Name": "3f", - "RegionID": 3, - "HostName": "derp3f.tailscale.com", - "IPv4": "172.237.72.8", - "IPv6": "2600:3c15::2000:53ff:fe48:a668", - "CanPort80": true - }, - { - "Name": "3h", - "RegionID": 3, - "HostName": "derp3h.tailscale.com", - "IPv4": "172.237.66.30", - "IPv6": "2600:3c15::2000:3dff:fe44:50aa", - "CanPort80": true - }, - { - "Name": "3e", - "RegionID": 3, - "HostName": "derp3e.tailscale.com", - "IPv4": "172.237.72.43", - "IPv6": "2600:3c15::2000:6cff:fee4:d799", - "CanPort80": true - } - ] - }, - "4": { - "RegionID": 4, - "RegionCode": "fra", - "RegionName": "Frankfurt", - "Latitude": 50.1109, - "Longitude": 8.6821, - "Nodes": [ - { - "Name": "4h", - "RegionID": 4, - "HostName": "derp4h.tailscale.com", - "IPv4": "185.40.234.77", - "IPv6": "2a00:dd80:20::bcf", - "CanPort80": true - }, - { - "Name": "4g", - "RegionID": 4, - "HostName": "derp4g.tailscale.com", - "IPv4": "185.40.234.113", - "IPv6": "2a00:dd80:20::8f", - "CanPort80": true - }, - { - "Name": "4i", - "RegionID": 4, - "HostName": "derp4i.tailscale.com", - "IPv4": "185.40.234.53", - "IPv6": "2a00:dd80:20::8a6", - "CanPort80": true - }, - { - "Name": "4f", - "RegionID": 4, - "HostName": "derp4f.tailscale.com", - "IPv4": "185.40.234.219", - "IPv6": "2a00:dd80:20::a25", - "CanPort80": true - } - ] - }, - "5": { - "RegionID": 5, - "RegionCode": "syd", - "RegionName": "Sydney", - "Latitude": -33.867778, - "Longitude": 151.21, - "Nodes": [ - { - "Name": "5f", - "RegionID": 5, - "HostName": "derp5f.tailscale.com", - "IPv4": "172.105.166.103", - "IPv6": "2400:8907::2000:ccff:fe1f:80da", - "CanPort80": true - }, - { - "Name": "5g", - "RegionID": 5, - "HostName": "derp5g.tailscale.com", - "IPv4": "172.105.169.57", - "IPv6": "2400:8907::2000:2fff:fea7:57f4", - "CanPort80": true - }, - { - "Name": "5e", - "RegionID": 5, - "HostName": "derp5e.tailscale.com", - "IPv4": "172.105.179.230", - "IPv6": "2400:8907::2000:ceff:fe8d:4f4e", - "CanPort80": true - } - ] - }, - "6": { - "RegionID": 6, - "RegionCode": "blr", - "RegionName": "Bengaluru", - "Latitude": 12.9716, - "Longitude": 77.5946, - "Nodes": [ - { - "Name": "6a", - "RegionID": 6, - "HostName": "derp6.tailscale.com", - "IPv4": "68.183.90.120", - "IPv6": "2400:6180:100:d0::982:d001", - "CanPort80": true - } - ] - }, - "7": { - "RegionID": 7, - "RegionCode": "tok", - "RegionName": "Tokyo", - "Latitude": 35.6764, - "Longitude": 139.65, - "Nodes": [ - { - "Name": "7g", - "RegionID": 7, - "HostName": "derp7g.tailscale.com", - "IPv4": "172.238.6.179", - "IPv6": "2600:3c18::2000:3fff:fe80:3ebd", - "CanPort80": true - }, - { - "Name": "7f", - "RegionID": 7, - "HostName": "derp7f.tailscale.com", - "IPv4": "172.238.6.34", - "IPv6": "2600:3c18::2000:acff:fe8e:3ed5", - "CanPort80": true - }, - { - "Name": "7h", - "RegionID": 7, - "HostName": "derp7h.tailscale.com", - "IPv4": "172.237.28.183", - "IPv6": "2600:3c18::2000:b1ff:fea9:4560", - "CanPort80": true - }, - { - "Name": "7e", - "RegionID": 7, - "HostName": "derp7e.tailscale.com", - "IPv4": "172.238.6.180", - "IPv6": "2600:3c18::2000:60ff:fe0f:6e83", - "STUNOnly": true, - "CanPort80": true - } - ] - }, - "8": { - "RegionID": 8, - "RegionCode": "lhr", - "RegionName": "London", - "Latitude": 51.5072, - "Longitude": 0.1276, - "Nodes": [ - { - "Name": "8f", - "RegionID": 8, - "HostName": "derp8f.tailscale.com", - "IPv4": "176.58.88.183", - "IPv6": "2a00:dd80:3a::dfa", - "CanPort80": true - }, - { - "Name": "8g", - "RegionID": 8, - "HostName": "derp8g.tailscale.com", - "IPv4": "176.58.92.254", - "IPv6": "2a00:dd80:3a::ed", - "CanPort80": true - }, - { - "Name": "8e", - "RegionID": 8, - "HostName": "derp8e.tailscale.com", - "IPv4": "176.58.92.144", - "IPv6": "2a00:dd80:3a::b33", - "CanPort80": true - } - ] - }, - "9": { - "RegionID": 9, - "RegionCode": "dfw", - "RegionName": "Dallas", - "Latitude": 32.779167, - "Longitude": -96.808889, - "Nodes": [ - { - "Name": "9e", - "RegionID": 9, - "HostName": "derp9e.tailscale.com", - "IPv4": "192.73.248.83", - "IPv6": "2607:f740:100::359", - "CanPort80": true - }, - { - "Name": "9f", - "RegionID": 9, - "HostName": "derp9f.tailscale.com", - "IPv4": "209.177.156.197", - "IPv6": "2607:f740:100::cad", - "CanPort80": true - }, - { - "Name": "9d", - "RegionID": 9, - "HostName": "derp9d.tailscale.com", - "IPv4": "209.177.156.94", - "IPv6": "2607:f740:100::c05", - "CanPort80": true - } - ] - } - } - }, - "DisplayMessages": null, - "TKAEnabled": false, - "TKAHead": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", - "Domain": "kratail2tid@passkey", - "DomainAuditLogID": "", - "UserProfiles": { - "6999435610919250": { - "ID": 6999435610919250, - "LoginName": "group-a-client.tail78f774.ts.net", - "DisplayName": "group-a-client" - } - } + "PacketFilterRules": null } }, "group-b-client": { - "commands": { - "packet_filter_rules": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/group-b-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/group-b-client/tailscaled.sock debug localapi POST debug-packet-filter-matches" - }, "packet_filter_rules": null, - "packet_filter_matches": [], - "whois": { - "100.124.195.93": { - "peer_name": "exit-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/group-b-client/tailscaled.sock whois --json 100.124.195.93", - "response": null - }, - "100.116.18.24": { - "peer_name": "exit-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/group-b-client/tailscaled.sock whois --json 100.116.18.24", - "response": null - }, - "100.85.66.106": { - "peer_name": "exit-node", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/group-b-client/tailscaled.sock whois --json 100.85.66.106", - "response": null - }, - "100.107.162.14": { - "peer_name": "group-a-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/group-b-client/tailscaled.sock whois --json 100.107.162.14", - "response": null - }, - "100.105.127.107": { - "peer_name": "multi-exit-router", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/group-b-client/tailscaled.sock whois --json 100.105.127.107", - "response": null - }, - "100.109.43.124": { - "peer_name": "router-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/group-b-client/tailscaled.sock whois --json 100.109.43.124", - "response": null - }, - "100.65.172.123": { - "peer_name": "router-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/group-b-client/tailscaled.sock whois --json 100.65.172.123", - "response": null - }, - "100.92.142.61": { - "peer_name": "subnet-router", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/group-b-client/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/group-b-client/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/group-b-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/group-b-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/group-b-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/group-b-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/group-b-client/tailscaled.sock whois --json 100.90.199.68", - "response": null - } - }, "netmap": { - "SelfNode": { - "ID": 1008089393782498, - "StableID": "ndUwgLoZs811CNTRL", - "Name": "group-b-client.tail78f774.ts.net.", - "User": 1008089393782498, - "Key": "nodekey:ef35a655163204a08b33e09fdc24709f1e3aaa7f40de4efd5549cf014b4d8711", - "DiscoKey": "discokey:e972182cda0d0b459c91b2881624b81749a7e44390a5dde1b9bc17c1ae67715a", - "Addresses": ["100.77.135.18/32", "fd7a:115c:a1e0::4b37:8712/128"], - "AllowedIPs": ["100.77.135.18/32", "fd7a:115c:a1e0::4b37:8712/128"], - "Endpoints": ["77.164.248.136:49377", "10.65.0.27:49377", "172.17.0.1:49377"], - "Hostinfo": { - "Hostname": "group-b-client", - "RequestTags": ["tag:group-b"], - "Services": [ - { "Proto": "peerapi4", "Port": 47173 }, - { "Proto": "peerapi6", "Port": 47173 }, - { "Proto": "peerapi-dns-proxy", "Port": 1 } - ] - }, - "Created": "2026-03-28T10:38:08.031309668Z", - "Tags": ["tag:group-b"], - "MachineAuthorized": true, - "CapMap": { - "https://tailscale.com/cap/file-sharing": null, - "https://tailscale.com/cap/is-owner": null, - "https://tailscale.com/cap/ssh": null, - "https://tailscale.com/cap/tailnet-lock": null, - "probe-udp-lifetime": null, - "ssh-behavior-v1": null, - "ssh-env-vars": null, - "store-appc-routes": null, - "tailnet-display-name": ["kratail2tid@passkey"] - }, - "ComputedName": "group-b-client", - "ComputedNameWithHost": "group-b-client" - }, - "AllCaps": [ - "https://tailscale.com/cap/file-sharing", - "https://tailscale.com/cap/ssh", - "https://tailscale.com/cap/tailnet-lock", - "store-appc-routes", - "https://tailscale.com/cap/is-owner", - "probe-udp-lifetime", - "ssh-behavior-v1", - "ssh-env-vars", - "tailnet-display-name" - ], - "NodeKey": "nodekey:ef35a655163204a08b33e09fdc24709f1e3aaa7f40de4efd5549cf014b4d8711", - "MachineKey": "mkey:f151b3ba7be457f1484c96d8daf48e032d8c9ed890a7f9b2f32c51458a19a05c", "Peers": [], - "DNS": { - "Routes": { - "tail78f774.ts.net.": null, - "ts.net.": [{ "Addr": "199.247.155.53" }, { "Addr": "2620:111:8007::53" }] - }, - "Domains": ["tail78f774.ts.net"], - "Proxied": true, - "ExitNodeFilteredSet": [".ts.net", ".tailscale.net"] - }, - "PacketFilter": [], - "PacketFilterRules": null, - "SSHPolicy": { "rules": [] }, - "CollectServices": false, - "DERPMap": { - "Regions": { - "1": { - "RegionID": 1, - "RegionCode": "nyc", - "RegionName": "New York City", - "Latitude": 40.7128, - "Longitude": -74.006, - "Nodes": [ - { - "Name": "1h", - "RegionID": 1, - "HostName": "derp1h.tailscale.com", - "IPv4": "199.38.181.93", - "IPv6": "2607:f740:f::afd", - "CanPort80": true - }, - { - "Name": "1g", - "RegionID": 1, - "HostName": "derp1g.tailscale.com", - "IPv4": "209.177.145.120", - "IPv6": "2607:f740:f::3eb", - "CanPort80": true - }, - { - "Name": "1i", - "RegionID": 1, - "HostName": "derp1i.tailscale.com", - "IPv4": "199.38.181.103", - "IPv6": "2607:f740:f::e19", - "CanPort80": true - }, - { - "Name": "1f", - "RegionID": 1, - "HostName": "derp1f.tailscale.com", - "IPv4": "199.38.181.104", - "IPv6": "2607:f740:f::bc", - "CanPort80": true - } - ] - }, - "10": { - "RegionID": 10, - "RegionCode": "sea", - "RegionName": "Seattle", - "Latitude": 47.609722, - "Longitude": -122.333056, - "Nodes": [ - { - "Name": "10c", - "RegionID": 10, - "HostName": "derp10c.tailscale.com", - "IPv4": "192.73.240.121", - "IPv6": "2607:f740:14::40c", - "CanPort80": true - }, - { - "Name": "10d", - "RegionID": 10, - "HostName": "derp10d.tailscale.com", - "IPv4": "192.73.240.132", - "IPv6": "2607:f740:14::500", - "CanPort80": true - }, - { - "Name": "10b", - "RegionID": 10, - "HostName": "derp10b.tailscale.com", - "IPv4": "192.73.240.161", - "IPv6": "2607:f740:14::61c", - "CanPort80": true - } - ] - }, - "11": { - "RegionID": 11, - "RegionCode": "sao", - "RegionName": "São Paulo", - "Latitude": -23.55, - "Longitude": -46.633333, - "Nodes": [ - { - "Name": "11f", - "RegionID": 11, - "HostName": "derp11f.tailscale.com", - "IPv4": "172.237.61.197", - "IPv6": "2600:3c0d::2000:3bff:fe44:6166", - "CanPort80": true - }, - { - "Name": "11g", - "RegionID": 11, - "HostName": "derp11g.tailscale.com", - "IPv4": "172.237.61.190", - "IPv6": "2600:3c0d::2000:62ff:febe:2e67", - "CanPort80": true - }, - { - "Name": "11e", - "RegionID": 11, - "HostName": "derp11e.tailscale.com", - "IPv4": "172.237.61.194", - "IPv6": "2600:3c0d::2000:d2ff:fe43:1790", - "CanPort80": true - } - ] - }, - "12": { - "RegionID": 12, - "RegionCode": "ord", - "RegionName": "Chicago", - "Latitude": 41.881944, - "Longitude": -87.627778, - "Nodes": [ - { - "Name": "12e", - "RegionID": 12, - "HostName": "derp12e.tailscale.com", - "IPv4": "209.177.158.15", - "IPv6": "2607:f740:e::b17", - "CanPort80": true - }, - { - "Name": "12f", - "RegionID": 12, - "HostName": "derp12f.tailscale.com", - "IPv4": "199.38.182.118", - "IPv6": "2607:f740:e::4c8", - "CanPort80": true - }, - { - "Name": "12d", - "RegionID": 12, - "HostName": "derp12d.tailscale.com", - "IPv4": "209.177.158.246", - "IPv6": "2607:f740:e::811", - "CanPort80": true - } - ] - }, - "13": { - "RegionID": 13, - "RegionCode": "den", - "RegionName": "Denver", - "Latitude": 39.7392, - "Longitude": -104.9849, - "Nodes": [ - { - "Name": "13c", - "RegionID": 13, - "HostName": "derp13c.tailscale.com", - "IPv4": "192.73.242.28", - "IPv6": "2607:f740:16::5c", - "CanPort80": true - }, - { - "Name": "13d", - "RegionID": 13, - "HostName": "derp13d.tailscale.com", - "IPv4": "192.73.242.204", - "IPv6": "2607:f740:16::c23", - "CanPort80": true - }, - { - "Name": "13b", - "RegionID": 13, - "HostName": "derp13b.tailscale.com", - "IPv4": "192.73.242.187", - "IPv6": "2607:f740:16::640", - "CanPort80": true - } - ] - }, - "14": { - "RegionID": 14, - "RegionCode": "ams", - "RegionName": "Amsterdam", - "Latitude": 52.372778, - "Longitude": 4.893611, - "Nodes": [ - { - "Name": "14c", - "RegionID": 14, - "HostName": "derp14c.tailscale.com", - "IPv4": "176.58.93.147", - "IPv6": "2a00:dd80:3c::b09", - "CanPort80": true - }, - { - "Name": "14d", - "RegionID": 14, - "HostName": "derp14d.tailscale.com", - "IPv4": "176.58.93.154", - "IPv6": "2a00:dd80:3c::3d5", - "CanPort80": true - }, - { - "Name": "14b", - "RegionID": 14, - "HostName": "derp14b.tailscale.com", - "IPv4": "176.58.93.248", - "IPv6": "2a00:dd80:3c::807", - "CanPort80": true - } - ] - }, - "15": { - "RegionID": 15, - "RegionCode": "jnb", - "RegionName": "Johannesburg", - "Latitude": -26.204444, - "Longitude": 28.045556, - "Nodes": [ - { - "Name": "15c", - "RegionID": 15, - "HostName": "derp15c.tailscale.com", - "IPv4": "102.67.165.185", - "IPv6": "2c0f:edb0:0:10::b59", - "CanPort80": true - }, - { - "Name": "15d", - "RegionID": 15, - "HostName": "derp15d.tailscale.com", - "IPv4": "102.67.165.36", - "IPv6": "2c0f:edb0:0:10::599", - "CanPort80": true - }, - { - "Name": "15b", - "RegionID": 15, - "HostName": "derp15b.tailscale.com", - "IPv4": "102.67.165.90", - "IPv6": "2c0f:edb0:0:10::963", - "CanPort80": true - } - ] - }, - "16": { - "RegionID": 16, - "RegionCode": "mia", - "RegionName": "Miami", - "Latitude": 25.78, - "Longitude": -80.21, - "Nodes": [ - { - "Name": "16c", - "RegionID": 16, - "HostName": "derp16c.tailscale.com", - "IPv4": "192.73.243.229", - "IPv6": "2607:f740:17::4e4", - "CanPort80": true - }, - { - "Name": "16d", - "RegionID": 16, - "HostName": "derp16d.tailscale.com", - "IPv4": "192.73.243.141", - "IPv6": "2607:f740:17::475", - "CanPort80": true - }, - { - "Name": "16b", - "RegionID": 16, - "HostName": "derp16b.tailscale.com", - "IPv4": "192.73.243.135", - "IPv6": "2607:f740:17::476", - "CanPort80": true - } - ] - }, - "17": { - "RegionID": 17, - "RegionCode": "lax", - "RegionName": "Los Angeles", - "Latitude": 34.05, - "Longitude": -118.25, - "Nodes": [ - { - "Name": "17c", - "RegionID": 17, - "HostName": "derp17c.tailscale.com", - "IPv4": "208.111.40.12", - "IPv6": "2607:f740:c::10", - "CanPort80": true - }, - { - "Name": "17d", - "RegionID": 17, - "HostName": "derp17d.tailscale.com", - "IPv4": "208.111.40.216", - "IPv6": "2607:f740:c::e1b", - "CanPort80": true - }, - { - "Name": "17b", - "RegionID": 17, - "HostName": "derp17b.tailscale.com", - "IPv4": "192.73.244.245", - "IPv6": "2607:f740:c::646", - "CanPort80": true - } - ] - }, - "18": { - "RegionID": 18, - "RegionCode": "par", - "RegionName": "Paris", - "Latitude": 48.856667, - "Longitude": 2.352222, - "Nodes": [ - { - "Name": "18c", - "RegionID": 18, - "HostName": "derp18c.tailscale.com", - "IPv4": "176.58.90.207", - "IPv6": "2a00:dd80:3e::c19", - "CanPort80": true - }, - { - "Name": "18d", - "RegionID": 18, - "HostName": "derp18d.tailscale.com", - "IPv4": "176.58.90.104", - "IPv6": "2a00:dd80:3e::f2e", - "CanPort80": true - }, - { - "Name": "18b", - "RegionID": 18, - "HostName": "derp18b.tailscale.com", - "IPv4": "176.58.90.147", - "IPv6": "2a00:dd80:3e::363", - "CanPort80": true - } - ] - }, - "19": { - "RegionID": 19, - "RegionCode": "mad", - "RegionName": "Madrid", - "Latitude": 40.416944, - "Longitude": -3.703333, - "Nodes": [ - { - "Name": "19c", - "RegionID": 19, - "HostName": "derp19c.tailscale.com", - "IPv4": "45.159.97.61", - "IPv6": "2a00:dd80:14:10::20", - "CanPort80": true - }, - { - "Name": "19d", - "RegionID": 19, - "HostName": "derp19d.tailscale.com", - "IPv4": "45.159.97.233", - "IPv6": "2a00:dd80:14:10::34a", - "CanPort80": true - }, - { - "Name": "19b", - "RegionID": 19, - "HostName": "derp19b.tailscale.com", - "IPv4": "45.159.97.144", - "IPv6": "2a00:dd80:14:10::335", - "CanPort80": true - } - ] - }, - "2": { - "RegionID": 2, - "RegionCode": "sfo", - "RegionName": "San Francisco", - "Latitude": 37.7775, - "Longitude": -122.416389, - "Nodes": [ - { - "Name": "2e", - "RegionID": 2, - "HostName": "derp2e.tailscale.com", - "IPv4": "192.73.252.134", - "IPv6": "2607:f740:0:3f::44c", - "CanPort80": true - }, - { - "Name": "2f", - "RegionID": 2, - "HostName": "derp2f.tailscale.com", - "IPv4": "208.111.34.178", - "IPv6": "2607:f740:0:3f::f4", - "CanPort80": true - }, - { - "Name": "2d", - "RegionID": 2, - "HostName": "derp2d.tailscale.com", - "IPv4": "192.73.252.65", - "IPv6": "2607:f740:0:3f::287", - "CanPort80": true - } - ] - }, - "20": { - "RegionID": 20, - "RegionCode": "hkg", - "RegionName": "Hong Kong", - "Latitude": 22.3193, - "Longitude": 114.1694, - "Nodes": [ - { - "Name": "20c", - "RegionID": 20, - "HostName": "derp20c.tailscale.com", - "IPv4": "205.147.105.30", - "IPv6": "2403:2500:8000:1::5fb", - "CanPort80": true - }, - { - "Name": "20d", - "RegionID": 20, - "HostName": "derp20d.tailscale.com", - "IPv4": "205.147.105.78", - "IPv6": "2403:2500:8000:1::e9a", - "CanPort80": true - }, - { - "Name": "20b", - "RegionID": 20, - "HostName": "derp20b.tailscale.com", - "IPv4": "103.6.84.152", - "IPv6": "2403:2500:8000:1::ef6", - "CanPort80": true - } - ] - }, - "21": { - "RegionID": 21, - "RegionCode": "tor", - "RegionName": "Toronto", - "Latitude": 43.741667, - "Longitude": -79.373333, - "Nodes": [ - { - "Name": "21c", - "RegionID": 21, - "HostName": "derp21c.tailscale.com", - "IPv4": "162.248.221.215", - "IPv6": "2607:f740:50::f10", - "CanPort80": true - }, - { - "Name": "21d", - "RegionID": 21, - "HostName": "derp21d.tailscale.com", - "IPv4": "162.248.221.248", - "IPv6": "2607:f740:50::ca4", - "CanPort80": true - }, - { - "Name": "21b", - "RegionID": 21, - "HostName": "derp21b.tailscale.com", - "IPv4": "162.248.221.199", - "IPv6": "2607:f740:50::1d1", - "CanPort80": true - } - ] - }, - "22": { - "RegionID": 22, - "RegionCode": "waw", - "RegionName": "Warsaw", - "Latitude": 52.23, - "Longitude": 21.011111, - "Nodes": [ - { - "Name": "22c", - "RegionID": 22, - "HostName": "derp22c.tailscale.com", - "IPv4": "45.159.98.253", - "IPv6": "2a00:dd80:40:100::3f", - "CanPort80": true - }, - { - "Name": "22d", - "RegionID": 22, - "HostName": "derp22d.tailscale.com", - "IPv4": "45.159.98.145", - "IPv6": "2a00:dd80:40:100::211", - "CanPort80": true - }, - { - "Name": "22b", - "RegionID": 22, - "HostName": "derp22b.tailscale.com", - "IPv4": "45.159.98.196", - "IPv6": "2a00:dd80:40:100::316", - "CanPort80": true - } - ] - }, - "23": { - "RegionID": 23, - "RegionCode": "dbi", - "RegionName": "Dubai", - "Latitude": 25.263056, - "Longitude": 55.297222, - "Nodes": [ - { - "Name": "23c", - "RegionID": 23, - "HostName": "derp23c.tailscale.com", - "IPv4": "185.34.3.207", - "IPv6": "2a00:dd80:3f:100::a50", - "CanPort80": true - }, - { - "Name": "23d", - "RegionID": 23, - "HostName": "derp23d.tailscale.com", - "IPv4": "185.34.3.75", - "IPv6": "2a00:dd80:3f:100::97e", - "CanPort80": true - }, - { - "Name": "23b", - "RegionID": 23, - "HostName": "derp23b.tailscale.com", - "IPv4": "185.34.3.232", - "IPv6": "2a00:dd80:3f:100::76f", - "CanPort80": true - } - ] - }, - "24": { - "RegionID": 24, - "RegionCode": "hnl", - "RegionName": "Honolulu", - "Latitude": 21.306944, - "Longitude": -157.858333, - "Nodes": [ - { - "Name": "24c", - "RegionID": 24, - "HostName": "derp24c.tailscale.com", - "IPv4": "208.83.233.233", - "IPv6": "2001:19f0:c000:c591:5400:04ff:fe26:2c5f", - "CanPort80": true - }, - { - "Name": "24d", - "RegionID": 24, - "HostName": "derp24d.tailscale.com", - "IPv4": "208.72.155.133", - "IPv6": "2001:19f0:c000:c564:5400:04ff:fe26:2ba8", - "CanPort80": true - }, - { - "Name": "24b", - "RegionID": 24, - "HostName": "derp24b.tailscale.com", - "IPv4": "208.83.234.151", - "IPv6": "2001:19f0:c000:c586:5400:04ff:fe26:2ba6", - "CanPort80": true - } - ] - }, - "25": { - "RegionID": 25, - "RegionCode": "nai", - "RegionName": "Nairobi", - "Latitude": -1.286389, - "Longitude": 36.817222, - "Nodes": [ - { - "Name": "25c", - "RegionID": 25, - "HostName": "derp25c.tailscale.com", - "IPv4": "102.67.167.37", - "IPv6": "2c0f:edb0:2000:1::2c7", - "CanPort80": true - }, - { - "Name": "25d", - "RegionID": 25, - "HostName": "derp25d.tailscale.com", - "IPv4": "102.67.167.188", - "IPv6": "2c0f:edb0:2000:1::188", - "CanPort80": true - }, - { - "Name": "25b", - "RegionID": 25, - "HostName": "derp25b.tailscale.com", - "IPv4": "102.67.167.245", - "IPv6": "2c0f:edb0:2000:1::2e9", - "CanPort80": true - } - ] - }, - "26": { - "RegionID": 26, - "RegionCode": "nue", - "RegionName": "Nuremberg", - "Latitude": 49.453889, - "Longitude": 11.0775, - "Nodes": [ - { - "Name": "26c", - "RegionID": 26, - "HostName": "derp26c.tailscale.com", - "IPv4": "49.12.193.137", - "IPv6": "2a01:4f8:1c1c:5c70::1", - "CanPort80": true - }, - { - "Name": "26d", - "RegionID": 26, - "HostName": "derp26d.tailscale.com", - "IPv4": "49.13.204.141", - "IPv6": "2a01:4f8:1c0c:7d06::1", - "CanPort80": true - }, - { - "Name": "26b", - "RegionID": 26, - "HostName": "derp26b.tailscale.com", - "IPv4": "167.235.72.200", - "IPv6": "2a01:4f8:1c1c:47b6::1", - "CanPort80": true - } - ] - }, - "27": { - "RegionID": 27, - "RegionCode": "iad", - "RegionName": "Ashburn", - "Latitude": 39.03, - "Longitude": -77.471111, - "Nodes": [ - { - "Name": "27d", - "RegionID": 27, - "HostName": "derp27d.tailscale.com", - "IPv4": "178.156.152.106", - "IPv6": "2a01:4ff:f0:3c8e::1", - "CanPort80": true - }, - { - "Name": "27c", - "RegionID": 27, - "HostName": "derp27c.tailscale.com", - "IPv4": "178.156.152.91", - "IPv6": "2a01:4ff:f0:3913::1", - "CanPort80": true - }, - { - "Name": "27e", - "RegionID": 27, - "HostName": "derp27e.tailscale.com", - "IPv4": "178.156.134.232", - "IPv6": "2a01:4ff:f0:28d4::1", - "CanPort80": true - }, - { - "Name": "27b", - "RegionID": 27, - "HostName": "derp27b.tailscale.com", - "IPv4": "5.161.218.233", - "IPv6": "2a01:4ff:f0:3db9::1", - "CanPort80": true - } - ] - }, - "28": { - "RegionID": 28, - "RegionCode": "hel", - "RegionName": "Helsinki", - "Latitude": 60.170833, - "Longitude": 24.9375, - "Nodes": [ - { - "Name": "28c", - "RegionID": 28, - "HostName": "derp28c.tailscale.com", - "IPv4": "95.217.2.165", - "IPv6": "2a01:4f9:c012:cd74::1", - "CanPort80": true - }, - { - "Name": "28d", - "RegionID": 28, - "HostName": "derp28d.tailscale.com", - "IPv4": "157.180.28.32", - "IPv6": "2a01:4f9:c012:2e5b::1", - "CanPort80": true - }, - { - "Name": "28b", - "RegionID": 28, - "HostName": "derp28b.tailscale.com", - "IPv4": "65.109.143.62", - "IPv6": "2a01:4f9:c012:d55c::1", - "CanPort80": true - } - ] - }, - "3": { - "RegionID": 3, - "RegionCode": "sin", - "RegionName": "Singapore", - "Latitude": 1.3521, - "Longitude": 103.8198, - "Nodes": [ - { - "Name": "3g", - "RegionID": 3, - "HostName": "derp3g.tailscale.com", - "IPv4": "172.237.72.79", - "IPv6": "2600:3c15::2000:adff:fe08:6fab", - "CanPort80": true - }, - { - "Name": "3f", - "RegionID": 3, - "HostName": "derp3f.tailscale.com", - "IPv4": "172.237.72.8", - "IPv6": "2600:3c15::2000:53ff:fe48:a668", - "CanPort80": true - }, - { - "Name": "3h", - "RegionID": 3, - "HostName": "derp3h.tailscale.com", - "IPv4": "172.237.66.30", - "IPv6": "2600:3c15::2000:3dff:fe44:50aa", - "CanPort80": true - }, - { - "Name": "3e", - "RegionID": 3, - "HostName": "derp3e.tailscale.com", - "IPv4": "172.237.72.43", - "IPv6": "2600:3c15::2000:6cff:fee4:d799", - "CanPort80": true - } - ] - }, - "4": { - "RegionID": 4, - "RegionCode": "fra", - "RegionName": "Frankfurt", - "Latitude": 50.1109, - "Longitude": 8.6821, - "Nodes": [ - { - "Name": "4h", - "RegionID": 4, - "HostName": "derp4h.tailscale.com", - "IPv4": "185.40.234.77", - "IPv6": "2a00:dd80:20::bcf", - "CanPort80": true - }, - { - "Name": "4g", - "RegionID": 4, - "HostName": "derp4g.tailscale.com", - "IPv4": "185.40.234.113", - "IPv6": "2a00:dd80:20::8f", - "CanPort80": true - }, - { - "Name": "4i", - "RegionID": 4, - "HostName": "derp4i.tailscale.com", - "IPv4": "185.40.234.53", - "IPv6": "2a00:dd80:20::8a6", - "CanPort80": true - }, - { - "Name": "4f", - "RegionID": 4, - "HostName": "derp4f.tailscale.com", - "IPv4": "185.40.234.219", - "IPv6": "2a00:dd80:20::a25", - "CanPort80": true - } - ] - }, - "5": { - "RegionID": 5, - "RegionCode": "syd", - "RegionName": "Sydney", - "Latitude": -33.867778, - "Longitude": 151.21, - "Nodes": [ - { - "Name": "5f", - "RegionID": 5, - "HostName": "derp5f.tailscale.com", - "IPv4": "172.105.166.103", - "IPv6": "2400:8907::2000:ccff:fe1f:80da", - "CanPort80": true - }, - { - "Name": "5g", - "RegionID": 5, - "HostName": "derp5g.tailscale.com", - "IPv4": "172.105.169.57", - "IPv6": "2400:8907::2000:2fff:fea7:57f4", - "CanPort80": true - }, - { - "Name": "5e", - "RegionID": 5, - "HostName": "derp5e.tailscale.com", - "IPv4": "172.105.179.230", - "IPv6": "2400:8907::2000:ceff:fe8d:4f4e", - "CanPort80": true - } - ] - }, - "6": { - "RegionID": 6, - "RegionCode": "blr", - "RegionName": "Bengaluru", - "Latitude": 12.9716, - "Longitude": 77.5946, - "Nodes": [ - { - "Name": "6a", - "RegionID": 6, - "HostName": "derp6.tailscale.com", - "IPv4": "68.183.90.120", - "IPv6": "2400:6180:100:d0::982:d001", - "CanPort80": true - } - ] - }, - "7": { - "RegionID": 7, - "RegionCode": "tok", - "RegionName": "Tokyo", - "Latitude": 35.6764, - "Longitude": 139.65, - "Nodes": [ - { - "Name": "7g", - "RegionID": 7, - "HostName": "derp7g.tailscale.com", - "IPv4": "172.238.6.179", - "IPv6": "2600:3c18::2000:3fff:fe80:3ebd", - "CanPort80": true - }, - { - "Name": "7f", - "RegionID": 7, - "HostName": "derp7f.tailscale.com", - "IPv4": "172.238.6.34", - "IPv6": "2600:3c18::2000:acff:fe8e:3ed5", - "CanPort80": true - }, - { - "Name": "7h", - "RegionID": 7, - "HostName": "derp7h.tailscale.com", - "IPv4": "172.237.28.183", - "IPv6": "2600:3c18::2000:b1ff:fea9:4560", - "CanPort80": true - }, - { - "Name": "7e", - "RegionID": 7, - "HostName": "derp7e.tailscale.com", - "IPv4": "172.238.6.180", - "IPv6": "2600:3c18::2000:60ff:fe0f:6e83", - "STUNOnly": true, - "CanPort80": true - } - ] - }, - "8": { - "RegionID": 8, - "RegionCode": "lhr", - "RegionName": "London", - "Latitude": 51.5072, - "Longitude": 0.1276, - "Nodes": [ - { - "Name": "8f", - "RegionID": 8, - "HostName": "derp8f.tailscale.com", - "IPv4": "176.58.88.183", - "IPv6": "2a00:dd80:3a::dfa", - "CanPort80": true - }, - { - "Name": "8g", - "RegionID": 8, - "HostName": "derp8g.tailscale.com", - "IPv4": "176.58.92.254", - "IPv6": "2a00:dd80:3a::ed", - "CanPort80": true - }, - { - "Name": "8e", - "RegionID": 8, - "HostName": "derp8e.tailscale.com", - "IPv4": "176.58.92.144", - "IPv6": "2a00:dd80:3a::b33", - "CanPort80": true - } - ] - }, - "9": { - "RegionID": 9, - "RegionCode": "dfw", - "RegionName": "Dallas", - "Latitude": 32.779167, - "Longitude": -96.808889, - "Nodes": [ - { - "Name": "9e", - "RegionID": 9, - "HostName": "derp9e.tailscale.com", - "IPv4": "192.73.248.83", - "IPv6": "2607:f740:100::359", - "CanPort80": true - }, - { - "Name": "9f", - "RegionID": 9, - "HostName": "derp9f.tailscale.com", - "IPv4": "209.177.156.197", - "IPv6": "2607:f740:100::cad", - "CanPort80": true - }, - { - "Name": "9d", - "RegionID": 9, - "HostName": "derp9d.tailscale.com", - "IPv4": "209.177.156.94", - "IPv6": "2607:f740:100::c05", - "CanPort80": true - } - ] - } - } - }, - "DisplayMessages": null, - "TKAEnabled": false, - "TKAHead": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", - "Domain": "kratail2tid@passkey", - "DomainAuditLogID": "", - "UserProfiles": { - "1008089393782498": { - "ID": 1008089393782498, - "LoginName": "group-b-client.tail78f774.ts.net", - "DisplayName": "group-b-client" - } - } + "PacketFilterRules": null } }, "multi-exit-router": { - "commands": { - "packet_filter_rules": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/multi-exit-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/multi-exit-router/tailscaled.sock debug localapi POST debug-packet-filter-matches" - }, "packet_filter_rules": null, - "packet_filter_matches": [], - "whois": { - "100.124.195.93": { - "peer_name": "exit-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/multi-exit-router/tailscaled.sock whois --json 100.124.195.93", - "response": null - }, - "100.116.18.24": { - "peer_name": "exit-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/multi-exit-router/tailscaled.sock whois --json 100.116.18.24", - "response": null - }, - "100.85.66.106": { - "peer_name": "exit-node", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/multi-exit-router/tailscaled.sock whois --json 100.85.66.106", - "response": null - }, - "100.107.162.14": { - "peer_name": "group-a-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/multi-exit-router/tailscaled.sock whois --json 100.107.162.14", - "response": null - }, - "100.77.135.18": { - "peer_name": "group-b-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/multi-exit-router/tailscaled.sock whois --json 100.77.135.18", - "response": null - }, - "100.109.43.124": { - "peer_name": "router-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/multi-exit-router/tailscaled.sock whois --json 100.109.43.124", - "response": null - }, - "100.65.172.123": { - "peer_name": "router-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/multi-exit-router/tailscaled.sock whois --json 100.65.172.123", - "response": null - }, - "100.92.142.61": { - "peer_name": "subnet-router", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/multi-exit-router/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/multi-exit-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/multi-exit-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/multi-exit-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/multi-exit-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/multi-exit-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/multi-exit-router/tailscaled.sock whois --json 100.90.199.68", - "response": null - } - }, "netmap": { - "SelfNode": { - "ID": 6294409699640722, - "StableID": "nMQuxDUk9r11CNTRL", - "Name": "multi-exit-router.tail78f774.ts.net.", - "User": 6294409699640722, - "Key": "nodekey:b854a0d64eba757cd3215c5bd78149cc0f927e35a2ad20342e88a15ead297f6a", - "DiscoKey": "discokey:762c82dd308809f511c6ac86dcc2642585837358fdd24958d55f16883c8e6c58", - "Addresses": ["100.105.127.107/32", "fd7a:115c:a1e0::ad37:7f6b/128"], - "AllowedIPs": ["100.105.127.107/32", "fd7a:115c:a1e0::ad37:7f6b/128", "10.33.0.0/16"], - "Endpoints": ["77.164.248.136:50766", "10.65.0.27:50766", "172.17.0.1:50766"], - "Hostinfo": { - "Hostname": "multi-exit-router", - "RoutableIPs": ["0.0.0.0/0", "::/0", "10.33.0.0/16"], - "RequestTags": ["tag:exit", "tag:router"], - "Services": [ - { "Proto": "peerapi4", "Port": 62548 }, - { "Proto": "peerapi6", "Port": 62548 }, - { "Proto": "peerapi-dns-proxy", "Port": 1 } - ] - }, - "Created": "2026-03-28T10:38:19.117098852Z", - "Tags": ["tag:exit", "tag:router"], - "PrimaryRoutes": ["10.33.0.0/16"], - "MachineAuthorized": true, - "CapMap": { - "https://tailscale.com/cap/file-sharing": null, - "https://tailscale.com/cap/is-owner": null, - "https://tailscale.com/cap/ssh": null, - "https://tailscale.com/cap/tailnet-lock": null, - "probe-udp-lifetime": null, - "ssh-behavior-v1": null, - "ssh-env-vars": null, - "store-appc-routes": null, - "tailnet-display-name": ["kratail2tid@passkey"] - }, - "ComputedName": "multi-exit-router", - "ComputedNameWithHost": "multi-exit-router" - }, - "AllCaps": [ - "tailnet-display-name", - "store-appc-routes", - "probe-udp-lifetime", - "https://tailscale.com/cap/file-sharing", - "https://tailscale.com/cap/is-owner", - "https://tailscale.com/cap/tailnet-lock", - "ssh-env-vars", - "https://tailscale.com/cap/ssh", - "ssh-behavior-v1" - ], - "NodeKey": "nodekey:b854a0d64eba757cd3215c5bd78149cc0f927e35a2ad20342e88a15ead297f6a", - "MachineKey": "mkey:91bee804809f30d07bfc29cf556844288fc3d45e0572469a3cb0799a535fda7d", "Peers": [], - "DNS": { - "Routes": { - "tail78f774.ts.net.": null, - "ts.net.": [{ "Addr": "199.247.155.53" }, { "Addr": "2620:111:8007::53" }] - }, - "Domains": ["tail78f774.ts.net"], - "Proxied": true, - "ExitNodeFilteredSet": [".ts.net", ".tailscale.net"] - }, - "PacketFilter": [], - "PacketFilterRules": null, - "SSHPolicy": { "rules": [] }, - "CollectServices": false, - "DERPMap": { - "Regions": { - "1": { - "RegionID": 1, - "RegionCode": "nyc", - "RegionName": "New York City", - "Latitude": 40.7128, - "Longitude": -74.006, - "Nodes": [ - { - "Name": "1h", - "RegionID": 1, - "HostName": "derp1h.tailscale.com", - "IPv4": "199.38.181.93", - "IPv6": "2607:f740:f::afd", - "CanPort80": true - }, - { - "Name": "1g", - "RegionID": 1, - "HostName": "derp1g.tailscale.com", - "IPv4": "209.177.145.120", - "IPv6": "2607:f740:f::3eb", - "CanPort80": true - }, - { - "Name": "1i", - "RegionID": 1, - "HostName": "derp1i.tailscale.com", - "IPv4": "199.38.181.103", - "IPv6": "2607:f740:f::e19", - "CanPort80": true - }, - { - "Name": "1f", - "RegionID": 1, - "HostName": "derp1f.tailscale.com", - "IPv4": "199.38.181.104", - "IPv6": "2607:f740:f::bc", - "CanPort80": true - } - ] - }, - "10": { - "RegionID": 10, - "RegionCode": "sea", - "RegionName": "Seattle", - "Latitude": 47.609722, - "Longitude": -122.333056, - "Nodes": [ - { - "Name": "10c", - "RegionID": 10, - "HostName": "derp10c.tailscale.com", - "IPv4": "192.73.240.121", - "IPv6": "2607:f740:14::40c", - "CanPort80": true - }, - { - "Name": "10d", - "RegionID": 10, - "HostName": "derp10d.tailscale.com", - "IPv4": "192.73.240.132", - "IPv6": "2607:f740:14::500", - "CanPort80": true - }, - { - "Name": "10b", - "RegionID": 10, - "HostName": "derp10b.tailscale.com", - "IPv4": "192.73.240.161", - "IPv6": "2607:f740:14::61c", - "CanPort80": true - } - ] - }, - "11": { - "RegionID": 11, - "RegionCode": "sao", - "RegionName": "São Paulo", - "Latitude": -23.55, - "Longitude": -46.633333, - "Nodes": [ - { - "Name": "11f", - "RegionID": 11, - "HostName": "derp11f.tailscale.com", - "IPv4": "172.237.61.197", - "IPv6": "2600:3c0d::2000:3bff:fe44:6166", - "CanPort80": true - }, - { - "Name": "11g", - "RegionID": 11, - "HostName": "derp11g.tailscale.com", - "IPv4": "172.237.61.190", - "IPv6": "2600:3c0d::2000:62ff:febe:2e67", - "CanPort80": true - }, - { - "Name": "11e", - "RegionID": 11, - "HostName": "derp11e.tailscale.com", - "IPv4": "172.237.61.194", - "IPv6": "2600:3c0d::2000:d2ff:fe43:1790", - "CanPort80": true - } - ] - }, - "12": { - "RegionID": 12, - "RegionCode": "ord", - "RegionName": "Chicago", - "Latitude": 41.881944, - "Longitude": -87.627778, - "Nodes": [ - { - "Name": "12e", - "RegionID": 12, - "HostName": "derp12e.tailscale.com", - "IPv4": "209.177.158.15", - "IPv6": "2607:f740:e::b17", - "CanPort80": true - }, - { - "Name": "12f", - "RegionID": 12, - "HostName": "derp12f.tailscale.com", - "IPv4": "199.38.182.118", - "IPv6": "2607:f740:e::4c8", - "CanPort80": true - }, - { - "Name": "12d", - "RegionID": 12, - "HostName": "derp12d.tailscale.com", - "IPv4": "209.177.158.246", - "IPv6": "2607:f740:e::811", - "CanPort80": true - } - ] - }, - "13": { - "RegionID": 13, - "RegionCode": "den", - "RegionName": "Denver", - "Latitude": 39.7392, - "Longitude": -104.9849, - "Nodes": [ - { - "Name": "13c", - "RegionID": 13, - "HostName": "derp13c.tailscale.com", - "IPv4": "192.73.242.28", - "IPv6": "2607:f740:16::5c", - "CanPort80": true - }, - { - "Name": "13d", - "RegionID": 13, - "HostName": "derp13d.tailscale.com", - "IPv4": "192.73.242.204", - "IPv6": "2607:f740:16::c23", - "CanPort80": true - }, - { - "Name": "13b", - "RegionID": 13, - "HostName": "derp13b.tailscale.com", - "IPv4": "192.73.242.187", - "IPv6": "2607:f740:16::640", - "CanPort80": true - } - ] - }, - "14": { - "RegionID": 14, - "RegionCode": "ams", - "RegionName": "Amsterdam", - "Latitude": 52.372778, - "Longitude": 4.893611, - "Nodes": [ - { - "Name": "14c", - "RegionID": 14, - "HostName": "derp14c.tailscale.com", - "IPv4": "176.58.93.147", - "IPv6": "2a00:dd80:3c::b09", - "CanPort80": true - }, - { - "Name": "14d", - "RegionID": 14, - "HostName": "derp14d.tailscale.com", - "IPv4": "176.58.93.154", - "IPv6": "2a00:dd80:3c::3d5", - "CanPort80": true - }, - { - "Name": "14b", - "RegionID": 14, - "HostName": "derp14b.tailscale.com", - "IPv4": "176.58.93.248", - "IPv6": "2a00:dd80:3c::807", - "CanPort80": true - } - ] - }, - "15": { - "RegionID": 15, - "RegionCode": "jnb", - "RegionName": "Johannesburg", - "Latitude": -26.204444, - "Longitude": 28.045556, - "Nodes": [ - { - "Name": "15c", - "RegionID": 15, - "HostName": "derp15c.tailscale.com", - "IPv4": "102.67.165.185", - "IPv6": "2c0f:edb0:0:10::b59", - "CanPort80": true - }, - { - "Name": "15d", - "RegionID": 15, - "HostName": "derp15d.tailscale.com", - "IPv4": "102.67.165.36", - "IPv6": "2c0f:edb0:0:10::599", - "CanPort80": true - }, - { - "Name": "15b", - "RegionID": 15, - "HostName": "derp15b.tailscale.com", - "IPv4": "102.67.165.90", - "IPv6": "2c0f:edb0:0:10::963", - "CanPort80": true - } - ] - }, - "16": { - "RegionID": 16, - "RegionCode": "mia", - "RegionName": "Miami", - "Latitude": 25.78, - "Longitude": -80.21, - "Nodes": [ - { - "Name": "16c", - "RegionID": 16, - "HostName": "derp16c.tailscale.com", - "IPv4": "192.73.243.229", - "IPv6": "2607:f740:17::4e4", - "CanPort80": true - }, - { - "Name": "16d", - "RegionID": 16, - "HostName": "derp16d.tailscale.com", - "IPv4": "192.73.243.141", - "IPv6": "2607:f740:17::475", - "CanPort80": true - }, - { - "Name": "16b", - "RegionID": 16, - "HostName": "derp16b.tailscale.com", - "IPv4": "192.73.243.135", - "IPv6": "2607:f740:17::476", - "CanPort80": true - } - ] - }, - "17": { - "RegionID": 17, - "RegionCode": "lax", - "RegionName": "Los Angeles", - "Latitude": 34.05, - "Longitude": -118.25, - "Nodes": [ - { - "Name": "17c", - "RegionID": 17, - "HostName": "derp17c.tailscale.com", - "IPv4": "208.111.40.12", - "IPv6": "2607:f740:c::10", - "CanPort80": true - }, - { - "Name": "17d", - "RegionID": 17, - "HostName": "derp17d.tailscale.com", - "IPv4": "208.111.40.216", - "IPv6": "2607:f740:c::e1b", - "CanPort80": true - }, - { - "Name": "17b", - "RegionID": 17, - "HostName": "derp17b.tailscale.com", - "IPv4": "192.73.244.245", - "IPv6": "2607:f740:c::646", - "CanPort80": true - } - ] - }, - "18": { - "RegionID": 18, - "RegionCode": "par", - "RegionName": "Paris", - "Latitude": 48.856667, - "Longitude": 2.352222, - "Nodes": [ - { - "Name": "18c", - "RegionID": 18, - "HostName": "derp18c.tailscale.com", - "IPv4": "176.58.90.207", - "IPv6": "2a00:dd80:3e::c19", - "CanPort80": true - }, - { - "Name": "18d", - "RegionID": 18, - "HostName": "derp18d.tailscale.com", - "IPv4": "176.58.90.104", - "IPv6": "2a00:dd80:3e::f2e", - "CanPort80": true - }, - { - "Name": "18b", - "RegionID": 18, - "HostName": "derp18b.tailscale.com", - "IPv4": "176.58.90.147", - "IPv6": "2a00:dd80:3e::363", - "CanPort80": true - } - ] - }, - "19": { - "RegionID": 19, - "RegionCode": "mad", - "RegionName": "Madrid", - "Latitude": 40.416944, - "Longitude": -3.703333, - "Nodes": [ - { - "Name": "19c", - "RegionID": 19, - "HostName": "derp19c.tailscale.com", - "IPv4": "45.159.97.61", - "IPv6": "2a00:dd80:14:10::20", - "CanPort80": true - }, - { - "Name": "19d", - "RegionID": 19, - "HostName": "derp19d.tailscale.com", - "IPv4": "45.159.97.233", - "IPv6": "2a00:dd80:14:10::34a", - "CanPort80": true - }, - { - "Name": "19b", - "RegionID": 19, - "HostName": "derp19b.tailscale.com", - "IPv4": "45.159.97.144", - "IPv6": "2a00:dd80:14:10::335", - "CanPort80": true - } - ] - }, - "2": { - "RegionID": 2, - "RegionCode": "sfo", - "RegionName": "San Francisco", - "Latitude": 37.7775, - "Longitude": -122.416389, - "Nodes": [ - { - "Name": "2e", - "RegionID": 2, - "HostName": "derp2e.tailscale.com", - "IPv4": "192.73.252.134", - "IPv6": "2607:f740:0:3f::44c", - "CanPort80": true - }, - { - "Name": "2f", - "RegionID": 2, - "HostName": "derp2f.tailscale.com", - "IPv4": "208.111.34.178", - "IPv6": "2607:f740:0:3f::f4", - "CanPort80": true - }, - { - "Name": "2d", - "RegionID": 2, - "HostName": "derp2d.tailscale.com", - "IPv4": "192.73.252.65", - "IPv6": "2607:f740:0:3f::287", - "CanPort80": true - } - ] - }, - "20": { - "RegionID": 20, - "RegionCode": "hkg", - "RegionName": "Hong Kong", - "Latitude": 22.3193, - "Longitude": 114.1694, - "Nodes": [ - { - "Name": "20c", - "RegionID": 20, - "HostName": "derp20c.tailscale.com", - "IPv4": "205.147.105.30", - "IPv6": "2403:2500:8000:1::5fb", - "CanPort80": true - }, - { - "Name": "20d", - "RegionID": 20, - "HostName": "derp20d.tailscale.com", - "IPv4": "205.147.105.78", - "IPv6": "2403:2500:8000:1::e9a", - "CanPort80": true - }, - { - "Name": "20b", - "RegionID": 20, - "HostName": "derp20b.tailscale.com", - "IPv4": "103.6.84.152", - "IPv6": "2403:2500:8000:1::ef6", - "CanPort80": true - } - ] - }, - "21": { - "RegionID": 21, - "RegionCode": "tor", - "RegionName": "Toronto", - "Latitude": 43.741667, - "Longitude": -79.373333, - "Nodes": [ - { - "Name": "21c", - "RegionID": 21, - "HostName": "derp21c.tailscale.com", - "IPv4": "162.248.221.215", - "IPv6": "2607:f740:50::f10", - "CanPort80": true - }, - { - "Name": "21d", - "RegionID": 21, - "HostName": "derp21d.tailscale.com", - "IPv4": "162.248.221.248", - "IPv6": "2607:f740:50::ca4", - "CanPort80": true - }, - { - "Name": "21b", - "RegionID": 21, - "HostName": "derp21b.tailscale.com", - "IPv4": "162.248.221.199", - "IPv6": "2607:f740:50::1d1", - "CanPort80": true - } - ] - }, - "22": { - "RegionID": 22, - "RegionCode": "waw", - "RegionName": "Warsaw", - "Latitude": 52.23, - "Longitude": 21.011111, - "Nodes": [ - { - "Name": "22c", - "RegionID": 22, - "HostName": "derp22c.tailscale.com", - "IPv4": "45.159.98.253", - "IPv6": "2a00:dd80:40:100::3f", - "CanPort80": true - }, - { - "Name": "22d", - "RegionID": 22, - "HostName": "derp22d.tailscale.com", - "IPv4": "45.159.98.145", - "IPv6": "2a00:dd80:40:100::211", - "CanPort80": true - }, - { - "Name": "22b", - "RegionID": 22, - "HostName": "derp22b.tailscale.com", - "IPv4": "45.159.98.196", - "IPv6": "2a00:dd80:40:100::316", - "CanPort80": true - } - ] - }, - "23": { - "RegionID": 23, - "RegionCode": "dbi", - "RegionName": "Dubai", - "Latitude": 25.263056, - "Longitude": 55.297222, - "Nodes": [ - { - "Name": "23c", - "RegionID": 23, - "HostName": "derp23c.tailscale.com", - "IPv4": "185.34.3.207", - "IPv6": "2a00:dd80:3f:100::a50", - "CanPort80": true - }, - { - "Name": "23d", - "RegionID": 23, - "HostName": "derp23d.tailscale.com", - "IPv4": "185.34.3.75", - "IPv6": "2a00:dd80:3f:100::97e", - "CanPort80": true - }, - { - "Name": "23b", - "RegionID": 23, - "HostName": "derp23b.tailscale.com", - "IPv4": "185.34.3.232", - "IPv6": "2a00:dd80:3f:100::76f", - "CanPort80": true - } - ] - }, - "24": { - "RegionID": 24, - "RegionCode": "hnl", - "RegionName": "Honolulu", - "Latitude": 21.306944, - "Longitude": -157.858333, - "Nodes": [ - { - "Name": "24c", - "RegionID": 24, - "HostName": "derp24c.tailscale.com", - "IPv4": "208.83.233.233", - "IPv6": "2001:19f0:c000:c591:5400:04ff:fe26:2c5f", - "CanPort80": true - }, - { - "Name": "24d", - "RegionID": 24, - "HostName": "derp24d.tailscale.com", - "IPv4": "208.72.155.133", - "IPv6": "2001:19f0:c000:c564:5400:04ff:fe26:2ba8", - "CanPort80": true - }, - { - "Name": "24b", - "RegionID": 24, - "HostName": "derp24b.tailscale.com", - "IPv4": "208.83.234.151", - "IPv6": "2001:19f0:c000:c586:5400:04ff:fe26:2ba6", - "CanPort80": true - } - ] - }, - "25": { - "RegionID": 25, - "RegionCode": "nai", - "RegionName": "Nairobi", - "Latitude": -1.286389, - "Longitude": 36.817222, - "Nodes": [ - { - "Name": "25c", - "RegionID": 25, - "HostName": "derp25c.tailscale.com", - "IPv4": "102.67.167.37", - "IPv6": "2c0f:edb0:2000:1::2c7", - "CanPort80": true - }, - { - "Name": "25d", - "RegionID": 25, - "HostName": "derp25d.tailscale.com", - "IPv4": "102.67.167.188", - "IPv6": "2c0f:edb0:2000:1::188", - "CanPort80": true - }, - { - "Name": "25b", - "RegionID": 25, - "HostName": "derp25b.tailscale.com", - "IPv4": "102.67.167.245", - "IPv6": "2c0f:edb0:2000:1::2e9", - "CanPort80": true - } - ] - }, - "26": { - "RegionID": 26, - "RegionCode": "nue", - "RegionName": "Nuremberg", - "Latitude": 49.453889, - "Longitude": 11.0775, - "Nodes": [ - { - "Name": "26c", - "RegionID": 26, - "HostName": "derp26c.tailscale.com", - "IPv4": "49.12.193.137", - "IPv6": "2a01:4f8:1c1c:5c70::1", - "CanPort80": true - }, - { - "Name": "26d", - "RegionID": 26, - "HostName": "derp26d.tailscale.com", - "IPv4": "49.13.204.141", - "IPv6": "2a01:4f8:1c0c:7d06::1", - "CanPort80": true - }, - { - "Name": "26b", - "RegionID": 26, - "HostName": "derp26b.tailscale.com", - "IPv4": "167.235.72.200", - "IPv6": "2a01:4f8:1c1c:47b6::1", - "CanPort80": true - } - ] - }, - "27": { - "RegionID": 27, - "RegionCode": "iad", - "RegionName": "Ashburn", - "Latitude": 39.03, - "Longitude": -77.471111, - "Nodes": [ - { - "Name": "27d", - "RegionID": 27, - "HostName": "derp27d.tailscale.com", - "IPv4": "178.156.152.106", - "IPv6": "2a01:4ff:f0:3c8e::1", - "CanPort80": true - }, - { - "Name": "27c", - "RegionID": 27, - "HostName": "derp27c.tailscale.com", - "IPv4": "178.156.152.91", - "IPv6": "2a01:4ff:f0:3913::1", - "CanPort80": true - }, - { - "Name": "27e", - "RegionID": 27, - "HostName": "derp27e.tailscale.com", - "IPv4": "178.156.134.232", - "IPv6": "2a01:4ff:f0:28d4::1", - "CanPort80": true - }, - { - "Name": "27b", - "RegionID": 27, - "HostName": "derp27b.tailscale.com", - "IPv4": "5.161.218.233", - "IPv6": "2a01:4ff:f0:3db9::1", - "CanPort80": true - } - ] - }, - "28": { - "RegionID": 28, - "RegionCode": "hel", - "RegionName": "Helsinki", - "Latitude": 60.170833, - "Longitude": 24.9375, - "Nodes": [ - { - "Name": "28c", - "RegionID": 28, - "HostName": "derp28c.tailscale.com", - "IPv4": "95.217.2.165", - "IPv6": "2a01:4f9:c012:cd74::1", - "CanPort80": true - }, - { - "Name": "28d", - "RegionID": 28, - "HostName": "derp28d.tailscale.com", - "IPv4": "157.180.28.32", - "IPv6": "2a01:4f9:c012:2e5b::1", - "CanPort80": true - }, - { - "Name": "28b", - "RegionID": 28, - "HostName": "derp28b.tailscale.com", - "IPv4": "65.109.143.62", - "IPv6": "2a01:4f9:c012:d55c::1", - "CanPort80": true - } - ] - }, - "3": { - "RegionID": 3, - "RegionCode": "sin", - "RegionName": "Singapore", - "Latitude": 1.3521, - "Longitude": 103.8198, - "Nodes": [ - { - "Name": "3g", - "RegionID": 3, - "HostName": "derp3g.tailscale.com", - "IPv4": "172.237.72.79", - "IPv6": "2600:3c15::2000:adff:fe08:6fab", - "CanPort80": true - }, - { - "Name": "3f", - "RegionID": 3, - "HostName": "derp3f.tailscale.com", - "IPv4": "172.237.72.8", - "IPv6": "2600:3c15::2000:53ff:fe48:a668", - "CanPort80": true - }, - { - "Name": "3h", - "RegionID": 3, - "HostName": "derp3h.tailscale.com", - "IPv4": "172.237.66.30", - "IPv6": "2600:3c15::2000:3dff:fe44:50aa", - "CanPort80": true - }, - { - "Name": "3e", - "RegionID": 3, - "HostName": "derp3e.tailscale.com", - "IPv4": "172.237.72.43", - "IPv6": "2600:3c15::2000:6cff:fee4:d799", - "CanPort80": true - } - ] - }, - "4": { - "RegionID": 4, - "RegionCode": "fra", - "RegionName": "Frankfurt", - "Latitude": 50.1109, - "Longitude": 8.6821, - "Nodes": [ - { - "Name": "4h", - "RegionID": 4, - "HostName": "derp4h.tailscale.com", - "IPv4": "185.40.234.77", - "IPv6": "2a00:dd80:20::bcf", - "CanPort80": true - }, - { - "Name": "4g", - "RegionID": 4, - "HostName": "derp4g.tailscale.com", - "IPv4": "185.40.234.113", - "IPv6": "2a00:dd80:20::8f", - "CanPort80": true - }, - { - "Name": "4i", - "RegionID": 4, - "HostName": "derp4i.tailscale.com", - "IPv4": "185.40.234.53", - "IPv6": "2a00:dd80:20::8a6", - "CanPort80": true - }, - { - "Name": "4f", - "RegionID": 4, - "HostName": "derp4f.tailscale.com", - "IPv4": "185.40.234.219", - "IPv6": "2a00:dd80:20::a25", - "CanPort80": true - } - ] - }, - "5": { - "RegionID": 5, - "RegionCode": "syd", - "RegionName": "Sydney", - "Latitude": -33.867778, - "Longitude": 151.21, - "Nodes": [ - { - "Name": "5f", - "RegionID": 5, - "HostName": "derp5f.tailscale.com", - "IPv4": "172.105.166.103", - "IPv6": "2400:8907::2000:ccff:fe1f:80da", - "CanPort80": true - }, - { - "Name": "5g", - "RegionID": 5, - "HostName": "derp5g.tailscale.com", - "IPv4": "172.105.169.57", - "IPv6": "2400:8907::2000:2fff:fea7:57f4", - "CanPort80": true - }, - { - "Name": "5e", - "RegionID": 5, - "HostName": "derp5e.tailscale.com", - "IPv4": "172.105.179.230", - "IPv6": "2400:8907::2000:ceff:fe8d:4f4e", - "CanPort80": true - } - ] - }, - "6": { - "RegionID": 6, - "RegionCode": "blr", - "RegionName": "Bengaluru", - "Latitude": 12.9716, - "Longitude": 77.5946, - "Nodes": [ - { - "Name": "6a", - "RegionID": 6, - "HostName": "derp6.tailscale.com", - "IPv4": "68.183.90.120", - "IPv6": "2400:6180:100:d0::982:d001", - "CanPort80": true - } - ] - }, - "7": { - "RegionID": 7, - "RegionCode": "tok", - "RegionName": "Tokyo", - "Latitude": 35.6764, - "Longitude": 139.65, - "Nodes": [ - { - "Name": "7g", - "RegionID": 7, - "HostName": "derp7g.tailscale.com", - "IPv4": "172.238.6.179", - "IPv6": "2600:3c18::2000:3fff:fe80:3ebd", - "CanPort80": true - }, - { - "Name": "7f", - "RegionID": 7, - "HostName": "derp7f.tailscale.com", - "IPv4": "172.238.6.34", - "IPv6": "2600:3c18::2000:acff:fe8e:3ed5", - "CanPort80": true - }, - { - "Name": "7h", - "RegionID": 7, - "HostName": "derp7h.tailscale.com", - "IPv4": "172.237.28.183", - "IPv6": "2600:3c18::2000:b1ff:fea9:4560", - "CanPort80": true - }, - { - "Name": "7e", - "RegionID": 7, - "HostName": "derp7e.tailscale.com", - "IPv4": "172.238.6.180", - "IPv6": "2600:3c18::2000:60ff:fe0f:6e83", - "STUNOnly": true, - "CanPort80": true - } - ] - }, - "8": { - "RegionID": 8, - "RegionCode": "lhr", - "RegionName": "London", - "Latitude": 51.5072, - "Longitude": 0.1276, - "Nodes": [ - { - "Name": "8f", - "RegionID": 8, - "HostName": "derp8f.tailscale.com", - "IPv4": "176.58.88.183", - "IPv6": "2a00:dd80:3a::dfa", - "CanPort80": true - }, - { - "Name": "8g", - "RegionID": 8, - "HostName": "derp8g.tailscale.com", - "IPv4": "176.58.92.254", - "IPv6": "2a00:dd80:3a::ed", - "CanPort80": true - }, - { - "Name": "8e", - "RegionID": 8, - "HostName": "derp8e.tailscale.com", - "IPv4": "176.58.92.144", - "IPv6": "2a00:dd80:3a::b33", - "CanPort80": true - } - ] - }, - "9": { - "RegionID": 9, - "RegionCode": "dfw", - "RegionName": "Dallas", - "Latitude": 32.779167, - "Longitude": -96.808889, - "Nodes": [ - { - "Name": "9e", - "RegionID": 9, - "HostName": "derp9e.tailscale.com", - "IPv4": "192.73.248.83", - "IPv6": "2607:f740:100::359", - "CanPort80": true - }, - { - "Name": "9f", - "RegionID": 9, - "HostName": "derp9f.tailscale.com", - "IPv4": "209.177.156.197", - "IPv6": "2607:f740:100::cad", - "CanPort80": true - }, - { - "Name": "9d", - "RegionID": 9, - "HostName": "derp9d.tailscale.com", - "IPv4": "209.177.156.94", - "IPv6": "2607:f740:100::c05", - "CanPort80": true - } - ] - } - } - }, - "DisplayMessages": null, - "TKAEnabled": false, - "TKAHead": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", - "Domain": "kratail2tid@passkey", - "DomainAuditLogID": "", - "UserProfiles": { - "6294409699640722": { - "ID": 6294409699640722, - "LoginName": "multi-exit-router.tail78f774.ts.net", - "DisplayName": "multi-exit-router" - } - } + "PacketFilterRules": null } }, "router-a": { - "commands": { - "packet_filter_rules": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/router-a/tailscaled.sock debug localapi POST debug-packet-filter-rules", - "packet_filter_matches": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/router-a/tailscaled.sock debug localapi POST debug-packet-filter-matches" - }, "packet_filter_rules": null, - "packet_filter_matches": [], - "whois": { - "100.124.195.93": { - "peer_name": "exit-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/router-a/tailscaled.sock whois --json 100.124.195.93", - "response": null - }, - "100.116.18.24": { - "peer_name": "exit-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/router-a/tailscaled.sock whois --json 100.116.18.24", - "response": null - }, - "100.85.66.106": { - "peer_name": "exit-node", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/router-a/tailscaled.sock whois --json 100.85.66.106", - "response": null - }, - "100.107.162.14": { - "peer_name": "group-a-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/router-a/tailscaled.sock whois --json 100.107.162.14", - "response": null - }, - "100.77.135.18": { - "peer_name": "group-b-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/router-a/tailscaled.sock whois --json 100.77.135.18", - "response": null - }, - "100.105.127.107": { - "peer_name": "multi-exit-router", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/router-a/tailscaled.sock whois --json 100.105.127.107", - "response": null - }, - "100.65.172.123": { - "peer_name": "router-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/router-a/tailscaled.sock whois --json 100.65.172.123", - "response": null - }, - "100.92.142.61": { - "peer_name": "subnet-router", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/router-a/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/router-a/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/router-a/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/router-a/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/router-a/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/router-a/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/router-a/tailscaled.sock whois --json 100.90.199.68", - "response": null - } - }, "netmap": { - "SelfNode": { - "ID": 50590507314324, - "StableID": "n3kktkvuP111CNTRL", - "Name": "router-a.tail78f774.ts.net.", - "User": 50590507314324, - "Key": "nodekey:b4566fef38b3b2b15684fc8890f5fbaea4525b467825f57a02801969a5ed2b7b", - "DiscoKey": "discokey:368ba711a8394633b4626eb7cd8e6a2df90d8e554505dc032ea9658ceee0f731", - "Addresses": ["100.109.43.124/32", "fd7a:115c:a1e0::a537:2b7c/128"], - "AllowedIPs": ["100.109.43.124/32", "fd7a:115c:a1e0::a537:2b7c/128", "10.44.0.0/16"], - "Endpoints": ["77.164.248.136:34130", "10.65.0.27:34130", "172.17.0.1:34130"], - "Hostinfo": { - "Hostname": "router-a", - "RoutableIPs": ["10.44.0.0/16"], - "RequestTags": ["tag:router-a"], - "Services": [ - { "Proto": "peerapi4", "Port": 49439 }, - { "Proto": "peerapi6", "Port": 49439 }, - { "Proto": "peerapi-dns-proxy", "Port": 1 } - ] - }, - "Created": "2026-03-28T10:38:11.734910312Z", - "Tags": ["tag:router-a"], - "PrimaryRoutes": ["10.44.0.0/16"], - "MachineAuthorized": true, - "CapMap": { - "https://tailscale.com/cap/file-sharing": null, - "https://tailscale.com/cap/is-owner": null, - "https://tailscale.com/cap/ssh": null, - "https://tailscale.com/cap/tailnet-lock": null, - "probe-udp-lifetime": null, - "ssh-behavior-v1": null, - "ssh-env-vars": null, - "store-appc-routes": null, - "tailnet-display-name": ["kratail2tid@passkey"] - }, - "ComputedName": "router-a", - "ComputedNameWithHost": "router-a" - }, - "AllCaps": [ - "https://tailscale.com/cap/is-owner", - "probe-udp-lifetime", - "store-appc-routes", - "https://tailscale.com/cap/ssh", - "ssh-behavior-v1", - "https://tailscale.com/cap/tailnet-lock", - "ssh-env-vars", - "tailnet-display-name", - "https://tailscale.com/cap/file-sharing" - ], - "NodeKey": "nodekey:b4566fef38b3b2b15684fc8890f5fbaea4525b467825f57a02801969a5ed2b7b", - "MachineKey": "mkey:868ba8a45654990c1c153c5ce33ef50ddd8d769841335e42decda4462d1dcf4e", "Peers": [], - "DNS": { - "Routes": { - "tail78f774.ts.net.": null, - "ts.net.": [{ "Addr": "199.247.155.53" }, { "Addr": "2620:111:8007::53" }] - }, - "Domains": ["tail78f774.ts.net"], - "Proxied": true, - "ExitNodeFilteredSet": [".ts.net", ".tailscale.net"] - }, - "PacketFilter": [], - "PacketFilterRules": null, - "SSHPolicy": { "rules": [] }, - "CollectServices": false, - "DERPMap": { - "Regions": { - "1": { - "RegionID": 1, - "RegionCode": "nyc", - "RegionName": "New York City", - "Latitude": 40.7128, - "Longitude": -74.006, - "Nodes": [ - { - "Name": "1h", - "RegionID": 1, - "HostName": "derp1h.tailscale.com", - "IPv4": "199.38.181.93", - "IPv6": "2607:f740:f::afd", - "CanPort80": true - }, - { - "Name": "1g", - "RegionID": 1, - "HostName": "derp1g.tailscale.com", - "IPv4": "209.177.145.120", - "IPv6": "2607:f740:f::3eb", - "CanPort80": true - }, - { - "Name": "1i", - "RegionID": 1, - "HostName": "derp1i.tailscale.com", - "IPv4": "199.38.181.103", - "IPv6": "2607:f740:f::e19", - "CanPort80": true - }, - { - "Name": "1f", - "RegionID": 1, - "HostName": "derp1f.tailscale.com", - "IPv4": "199.38.181.104", - "IPv6": "2607:f740:f::bc", - "CanPort80": true - } - ] - }, - "10": { - "RegionID": 10, - "RegionCode": "sea", - "RegionName": "Seattle", - "Latitude": 47.609722, - "Longitude": -122.333056, - "Nodes": [ - { - "Name": "10c", - "RegionID": 10, - "HostName": "derp10c.tailscale.com", - "IPv4": "192.73.240.121", - "IPv6": "2607:f740:14::40c", - "CanPort80": true - }, - { - "Name": "10d", - "RegionID": 10, - "HostName": "derp10d.tailscale.com", - "IPv4": "192.73.240.132", - "IPv6": "2607:f740:14::500", - "CanPort80": true - }, - { - "Name": "10b", - "RegionID": 10, - "HostName": "derp10b.tailscale.com", - "IPv4": "192.73.240.161", - "IPv6": "2607:f740:14::61c", - "CanPort80": true - } - ] - }, - "11": { - "RegionID": 11, - "RegionCode": "sao", - "RegionName": "São Paulo", - "Latitude": -23.55, - "Longitude": -46.633333, - "Nodes": [ - { - "Name": "11f", - "RegionID": 11, - "HostName": "derp11f.tailscale.com", - "IPv4": "172.237.61.197", - "IPv6": "2600:3c0d::2000:3bff:fe44:6166", - "CanPort80": true - }, - { - "Name": "11g", - "RegionID": 11, - "HostName": "derp11g.tailscale.com", - "IPv4": "172.237.61.190", - "IPv6": "2600:3c0d::2000:62ff:febe:2e67", - "CanPort80": true - }, - { - "Name": "11e", - "RegionID": 11, - "HostName": "derp11e.tailscale.com", - "IPv4": "172.237.61.194", - "IPv6": "2600:3c0d::2000:d2ff:fe43:1790", - "CanPort80": true - } - ] - }, - "12": { - "RegionID": 12, - "RegionCode": "ord", - "RegionName": "Chicago", - "Latitude": 41.881944, - "Longitude": -87.627778, - "Nodes": [ - { - "Name": "12e", - "RegionID": 12, - "HostName": "derp12e.tailscale.com", - "IPv4": "209.177.158.15", - "IPv6": "2607:f740:e::b17", - "CanPort80": true - }, - { - "Name": "12f", - "RegionID": 12, - "HostName": "derp12f.tailscale.com", - "IPv4": "199.38.182.118", - "IPv6": "2607:f740:e::4c8", - "CanPort80": true - }, - { - "Name": "12d", - "RegionID": 12, - "HostName": "derp12d.tailscale.com", - "IPv4": "209.177.158.246", - "IPv6": "2607:f740:e::811", - "CanPort80": true - } - ] - }, - "13": { - "RegionID": 13, - "RegionCode": "den", - "RegionName": "Denver", - "Latitude": 39.7392, - "Longitude": -104.9849, - "Nodes": [ - { - "Name": "13c", - "RegionID": 13, - "HostName": "derp13c.tailscale.com", - "IPv4": "192.73.242.28", - "IPv6": "2607:f740:16::5c", - "CanPort80": true - }, - { - "Name": "13d", - "RegionID": 13, - "HostName": "derp13d.tailscale.com", - "IPv4": "192.73.242.204", - "IPv6": "2607:f740:16::c23", - "CanPort80": true - }, - { - "Name": "13b", - "RegionID": 13, - "HostName": "derp13b.tailscale.com", - "IPv4": "192.73.242.187", - "IPv6": "2607:f740:16::640", - "CanPort80": true - } - ] - }, - "14": { - "RegionID": 14, - "RegionCode": "ams", - "RegionName": "Amsterdam", - "Latitude": 52.372778, - "Longitude": 4.893611, - "Nodes": [ - { - "Name": "14c", - "RegionID": 14, - "HostName": "derp14c.tailscale.com", - "IPv4": "176.58.93.147", - "IPv6": "2a00:dd80:3c::b09", - "CanPort80": true - }, - { - "Name": "14d", - "RegionID": 14, - "HostName": "derp14d.tailscale.com", - "IPv4": "176.58.93.154", - "IPv6": "2a00:dd80:3c::3d5", - "CanPort80": true - }, - { - "Name": "14b", - "RegionID": 14, - "HostName": "derp14b.tailscale.com", - "IPv4": "176.58.93.248", - "IPv6": "2a00:dd80:3c::807", - "CanPort80": true - } - ] - }, - "15": { - "RegionID": 15, - "RegionCode": "jnb", - "RegionName": "Johannesburg", - "Latitude": -26.204444, - "Longitude": 28.045556, - "Nodes": [ - { - "Name": "15c", - "RegionID": 15, - "HostName": "derp15c.tailscale.com", - "IPv4": "102.67.165.185", - "IPv6": "2c0f:edb0:0:10::b59", - "CanPort80": true - }, - { - "Name": "15d", - "RegionID": 15, - "HostName": "derp15d.tailscale.com", - "IPv4": "102.67.165.36", - "IPv6": "2c0f:edb0:0:10::599", - "CanPort80": true - }, - { - "Name": "15b", - "RegionID": 15, - "HostName": "derp15b.tailscale.com", - "IPv4": "102.67.165.90", - "IPv6": "2c0f:edb0:0:10::963", - "CanPort80": true - } - ] - }, - "16": { - "RegionID": 16, - "RegionCode": "mia", - "RegionName": "Miami", - "Latitude": 25.78, - "Longitude": -80.21, - "Nodes": [ - { - "Name": "16c", - "RegionID": 16, - "HostName": "derp16c.tailscale.com", - "IPv4": "192.73.243.229", - "IPv6": "2607:f740:17::4e4", - "CanPort80": true - }, - { - "Name": "16d", - "RegionID": 16, - "HostName": "derp16d.tailscale.com", - "IPv4": "192.73.243.141", - "IPv6": "2607:f740:17::475", - "CanPort80": true - }, - { - "Name": "16b", - "RegionID": 16, - "HostName": "derp16b.tailscale.com", - "IPv4": "192.73.243.135", - "IPv6": "2607:f740:17::476", - "CanPort80": true - } - ] - }, - "17": { - "RegionID": 17, - "RegionCode": "lax", - "RegionName": "Los Angeles", - "Latitude": 34.05, - "Longitude": -118.25, - "Nodes": [ - { - "Name": "17c", - "RegionID": 17, - "HostName": "derp17c.tailscale.com", - "IPv4": "208.111.40.12", - "IPv6": "2607:f740:c::10", - "CanPort80": true - }, - { - "Name": "17d", - "RegionID": 17, - "HostName": "derp17d.tailscale.com", - "IPv4": "208.111.40.216", - "IPv6": "2607:f740:c::e1b", - "CanPort80": true - }, - { - "Name": "17b", - "RegionID": 17, - "HostName": "derp17b.tailscale.com", - "IPv4": "192.73.244.245", - "IPv6": "2607:f740:c::646", - "CanPort80": true - } - ] - }, - "18": { - "RegionID": 18, - "RegionCode": "par", - "RegionName": "Paris", - "Latitude": 48.856667, - "Longitude": 2.352222, - "Nodes": [ - { - "Name": "18c", - "RegionID": 18, - "HostName": "derp18c.tailscale.com", - "IPv4": "176.58.90.207", - "IPv6": "2a00:dd80:3e::c19", - "CanPort80": true - }, - { - "Name": "18d", - "RegionID": 18, - "HostName": "derp18d.tailscale.com", - "IPv4": "176.58.90.104", - "IPv6": "2a00:dd80:3e::f2e", - "CanPort80": true - }, - { - "Name": "18b", - "RegionID": 18, - "HostName": "derp18b.tailscale.com", - "IPv4": "176.58.90.147", - "IPv6": "2a00:dd80:3e::363", - "CanPort80": true - } - ] - }, - "19": { - "RegionID": 19, - "RegionCode": "mad", - "RegionName": "Madrid", - "Latitude": 40.416944, - "Longitude": -3.703333, - "Nodes": [ - { - "Name": "19c", - "RegionID": 19, - "HostName": "derp19c.tailscale.com", - "IPv4": "45.159.97.61", - "IPv6": "2a00:dd80:14:10::20", - "CanPort80": true - }, - { - "Name": "19d", - "RegionID": 19, - "HostName": "derp19d.tailscale.com", - "IPv4": "45.159.97.233", - "IPv6": "2a00:dd80:14:10::34a", - "CanPort80": true - }, - { - "Name": "19b", - "RegionID": 19, - "HostName": "derp19b.tailscale.com", - "IPv4": "45.159.97.144", - "IPv6": "2a00:dd80:14:10::335", - "CanPort80": true - } - ] - }, - "2": { - "RegionID": 2, - "RegionCode": "sfo", - "RegionName": "San Francisco", - "Latitude": 37.7775, - "Longitude": -122.416389, - "Nodes": [ - { - "Name": "2e", - "RegionID": 2, - "HostName": "derp2e.tailscale.com", - "IPv4": "192.73.252.134", - "IPv6": "2607:f740:0:3f::44c", - "CanPort80": true - }, - { - "Name": "2f", - "RegionID": 2, - "HostName": "derp2f.tailscale.com", - "IPv4": "208.111.34.178", - "IPv6": "2607:f740:0:3f::f4", - "CanPort80": true - }, - { - "Name": "2d", - "RegionID": 2, - "HostName": "derp2d.tailscale.com", - "IPv4": "192.73.252.65", - "IPv6": "2607:f740:0:3f::287", - "CanPort80": true - } - ] - }, - "20": { - "RegionID": 20, - "RegionCode": "hkg", - "RegionName": "Hong Kong", - "Latitude": 22.3193, - "Longitude": 114.1694, - "Nodes": [ - { - "Name": "20c", - "RegionID": 20, - "HostName": "derp20c.tailscale.com", - "IPv4": "205.147.105.30", - "IPv6": "2403:2500:8000:1::5fb", - "CanPort80": true - }, - { - "Name": "20d", - "RegionID": 20, - "HostName": "derp20d.tailscale.com", - "IPv4": "205.147.105.78", - "IPv6": "2403:2500:8000:1::e9a", - "CanPort80": true - }, - { - "Name": "20b", - "RegionID": 20, - "HostName": "derp20b.tailscale.com", - "IPv4": "103.6.84.152", - "IPv6": "2403:2500:8000:1::ef6", - "CanPort80": true - } - ] - }, - "21": { - "RegionID": 21, - "RegionCode": "tor", - "RegionName": "Toronto", - "Latitude": 43.741667, - "Longitude": -79.373333, - "Nodes": [ - { - "Name": "21c", - "RegionID": 21, - "HostName": "derp21c.tailscale.com", - "IPv4": "162.248.221.215", - "IPv6": "2607:f740:50::f10", - "CanPort80": true - }, - { - "Name": "21d", - "RegionID": 21, - "HostName": "derp21d.tailscale.com", - "IPv4": "162.248.221.248", - "IPv6": "2607:f740:50::ca4", - "CanPort80": true - }, - { - "Name": "21b", - "RegionID": 21, - "HostName": "derp21b.tailscale.com", - "IPv4": "162.248.221.199", - "IPv6": "2607:f740:50::1d1", - "CanPort80": true - } - ] - }, - "22": { - "RegionID": 22, - "RegionCode": "waw", - "RegionName": "Warsaw", - "Latitude": 52.23, - "Longitude": 21.011111, - "Nodes": [ - { - "Name": "22c", - "RegionID": 22, - "HostName": "derp22c.tailscale.com", - "IPv4": "45.159.98.253", - "IPv6": "2a00:dd80:40:100::3f", - "CanPort80": true - }, - { - "Name": "22d", - "RegionID": 22, - "HostName": "derp22d.tailscale.com", - "IPv4": "45.159.98.145", - "IPv6": "2a00:dd80:40:100::211", - "CanPort80": true - }, - { - "Name": "22b", - "RegionID": 22, - "HostName": "derp22b.tailscale.com", - "IPv4": "45.159.98.196", - "IPv6": "2a00:dd80:40:100::316", - "CanPort80": true - } - ] - }, - "23": { - "RegionID": 23, - "RegionCode": "dbi", - "RegionName": "Dubai", - "Latitude": 25.263056, - "Longitude": 55.297222, - "Nodes": [ - { - "Name": "23c", - "RegionID": 23, - "HostName": "derp23c.tailscale.com", - "IPv4": "185.34.3.207", - "IPv6": "2a00:dd80:3f:100::a50", - "CanPort80": true - }, - { - "Name": "23d", - "RegionID": 23, - "HostName": "derp23d.tailscale.com", - "IPv4": "185.34.3.75", - "IPv6": "2a00:dd80:3f:100::97e", - "CanPort80": true - }, - { - "Name": "23b", - "RegionID": 23, - "HostName": "derp23b.tailscale.com", - "IPv4": "185.34.3.232", - "IPv6": "2a00:dd80:3f:100::76f", - "CanPort80": true - } - ] - }, - "24": { - "RegionID": 24, - "RegionCode": "hnl", - "RegionName": "Honolulu", - "Latitude": 21.306944, - "Longitude": -157.858333, - "Nodes": [ - { - "Name": "24c", - "RegionID": 24, - "HostName": "derp24c.tailscale.com", - "IPv4": "208.83.233.233", - "IPv6": "2001:19f0:c000:c591:5400:04ff:fe26:2c5f", - "CanPort80": true - }, - { - "Name": "24d", - "RegionID": 24, - "HostName": "derp24d.tailscale.com", - "IPv4": "208.72.155.133", - "IPv6": "2001:19f0:c000:c564:5400:04ff:fe26:2ba8", - "CanPort80": true - }, - { - "Name": "24b", - "RegionID": 24, - "HostName": "derp24b.tailscale.com", - "IPv4": "208.83.234.151", - "IPv6": "2001:19f0:c000:c586:5400:04ff:fe26:2ba6", - "CanPort80": true - } - ] - }, - "25": { - "RegionID": 25, - "RegionCode": "nai", - "RegionName": "Nairobi", - "Latitude": -1.286389, - "Longitude": 36.817222, - "Nodes": [ - { - "Name": "25c", - "RegionID": 25, - "HostName": "derp25c.tailscale.com", - "IPv4": "102.67.167.37", - "IPv6": "2c0f:edb0:2000:1::2c7", - "CanPort80": true - }, - { - "Name": "25d", - "RegionID": 25, - "HostName": "derp25d.tailscale.com", - "IPv4": "102.67.167.188", - "IPv6": "2c0f:edb0:2000:1::188", - "CanPort80": true - }, - { - "Name": "25b", - "RegionID": 25, - "HostName": "derp25b.tailscale.com", - "IPv4": "102.67.167.245", - "IPv6": "2c0f:edb0:2000:1::2e9", - "CanPort80": true - } - ] - }, - "26": { - "RegionID": 26, - "RegionCode": "nue", - "RegionName": "Nuremberg", - "Latitude": 49.453889, - "Longitude": 11.0775, - "Nodes": [ - { - "Name": "26c", - "RegionID": 26, - "HostName": "derp26c.tailscale.com", - "IPv4": "49.12.193.137", - "IPv6": "2a01:4f8:1c1c:5c70::1", - "CanPort80": true - }, - { - "Name": "26d", - "RegionID": 26, - "HostName": "derp26d.tailscale.com", - "IPv4": "49.13.204.141", - "IPv6": "2a01:4f8:1c0c:7d06::1", - "CanPort80": true - }, - { - "Name": "26b", - "RegionID": 26, - "HostName": "derp26b.tailscale.com", - "IPv4": "167.235.72.200", - "IPv6": "2a01:4f8:1c1c:47b6::1", - "CanPort80": true - } - ] - }, - "27": { - "RegionID": 27, - "RegionCode": "iad", - "RegionName": "Ashburn", - "Latitude": 39.03, - "Longitude": -77.471111, - "Nodes": [ - { - "Name": "27d", - "RegionID": 27, - "HostName": "derp27d.tailscale.com", - "IPv4": "178.156.152.106", - "IPv6": "2a01:4ff:f0:3c8e::1", - "CanPort80": true - }, - { - "Name": "27c", - "RegionID": 27, - "HostName": "derp27c.tailscale.com", - "IPv4": "178.156.152.91", - "IPv6": "2a01:4ff:f0:3913::1", - "CanPort80": true - }, - { - "Name": "27e", - "RegionID": 27, - "HostName": "derp27e.tailscale.com", - "IPv4": "178.156.134.232", - "IPv6": "2a01:4ff:f0:28d4::1", - "CanPort80": true - }, - { - "Name": "27b", - "RegionID": 27, - "HostName": "derp27b.tailscale.com", - "IPv4": "5.161.218.233", - "IPv6": "2a01:4ff:f0:3db9::1", - "CanPort80": true - } - ] - }, - "28": { - "RegionID": 28, - "RegionCode": "hel", - "RegionName": "Helsinki", - "Latitude": 60.170833, - "Longitude": 24.9375, - "Nodes": [ - { - "Name": "28c", - "RegionID": 28, - "HostName": "derp28c.tailscale.com", - "IPv4": "95.217.2.165", - "IPv6": "2a01:4f9:c012:cd74::1", - "CanPort80": true - }, - { - "Name": "28d", - "RegionID": 28, - "HostName": "derp28d.tailscale.com", - "IPv4": "157.180.28.32", - "IPv6": "2a01:4f9:c012:2e5b::1", - "CanPort80": true - }, - { - "Name": "28b", - "RegionID": 28, - "HostName": "derp28b.tailscale.com", - "IPv4": "65.109.143.62", - "IPv6": "2a01:4f9:c012:d55c::1", - "CanPort80": true - } - ] - }, - "3": { - "RegionID": 3, - "RegionCode": "sin", - "RegionName": "Singapore", - "Latitude": 1.3521, - "Longitude": 103.8198, - "Nodes": [ - { - "Name": "3g", - "RegionID": 3, - "HostName": "derp3g.tailscale.com", - "IPv4": "172.237.72.79", - "IPv6": "2600:3c15::2000:adff:fe08:6fab", - "CanPort80": true - }, - { - "Name": "3f", - "RegionID": 3, - "HostName": "derp3f.tailscale.com", - "IPv4": "172.237.72.8", - "IPv6": "2600:3c15::2000:53ff:fe48:a668", - "CanPort80": true - }, - { - "Name": "3h", - "RegionID": 3, - "HostName": "derp3h.tailscale.com", - "IPv4": "172.237.66.30", - "IPv6": "2600:3c15::2000:3dff:fe44:50aa", - "CanPort80": true - }, - { - "Name": "3e", - "RegionID": 3, - "HostName": "derp3e.tailscale.com", - "IPv4": "172.237.72.43", - "IPv6": "2600:3c15::2000:6cff:fee4:d799", - "CanPort80": true - } - ] - }, - "4": { - "RegionID": 4, - "RegionCode": "fra", - "RegionName": "Frankfurt", - "Latitude": 50.1109, - "Longitude": 8.6821, - "Nodes": [ - { - "Name": "4h", - "RegionID": 4, - "HostName": "derp4h.tailscale.com", - "IPv4": "185.40.234.77", - "IPv6": "2a00:dd80:20::bcf", - "CanPort80": true - }, - { - "Name": "4g", - "RegionID": 4, - "HostName": "derp4g.tailscale.com", - "IPv4": "185.40.234.113", - "IPv6": "2a00:dd80:20::8f", - "CanPort80": true - }, - { - "Name": "4i", - "RegionID": 4, - "HostName": "derp4i.tailscale.com", - "IPv4": "185.40.234.53", - "IPv6": "2a00:dd80:20::8a6", - "CanPort80": true - }, - { - "Name": "4f", - "RegionID": 4, - "HostName": "derp4f.tailscale.com", - "IPv4": "185.40.234.219", - "IPv6": "2a00:dd80:20::a25", - "CanPort80": true - } - ] - }, - "5": { - "RegionID": 5, - "RegionCode": "syd", - "RegionName": "Sydney", - "Latitude": -33.867778, - "Longitude": 151.21, - "Nodes": [ - { - "Name": "5f", - "RegionID": 5, - "HostName": "derp5f.tailscale.com", - "IPv4": "172.105.166.103", - "IPv6": "2400:8907::2000:ccff:fe1f:80da", - "CanPort80": true - }, - { - "Name": "5g", - "RegionID": 5, - "HostName": "derp5g.tailscale.com", - "IPv4": "172.105.169.57", - "IPv6": "2400:8907::2000:2fff:fea7:57f4", - "CanPort80": true - }, - { - "Name": "5e", - "RegionID": 5, - "HostName": "derp5e.tailscale.com", - "IPv4": "172.105.179.230", - "IPv6": "2400:8907::2000:ceff:fe8d:4f4e", - "CanPort80": true - } - ] - }, - "6": { - "RegionID": 6, - "RegionCode": "blr", - "RegionName": "Bengaluru", - "Latitude": 12.9716, - "Longitude": 77.5946, - "Nodes": [ - { - "Name": "6a", - "RegionID": 6, - "HostName": "derp6.tailscale.com", - "IPv4": "68.183.90.120", - "IPv6": "2400:6180:100:d0::982:d001", - "CanPort80": true - } - ] - }, - "7": { - "RegionID": 7, - "RegionCode": "tok", - "RegionName": "Tokyo", - "Latitude": 35.6764, - "Longitude": 139.65, - "Nodes": [ - { - "Name": "7g", - "RegionID": 7, - "HostName": "derp7g.tailscale.com", - "IPv4": "172.238.6.179", - "IPv6": "2600:3c18::2000:3fff:fe80:3ebd", - "CanPort80": true - }, - { - "Name": "7f", - "RegionID": 7, - "HostName": "derp7f.tailscale.com", - "IPv4": "172.238.6.34", - "IPv6": "2600:3c18::2000:acff:fe8e:3ed5", - "CanPort80": true - }, - { - "Name": "7h", - "RegionID": 7, - "HostName": "derp7h.tailscale.com", - "IPv4": "172.237.28.183", - "IPv6": "2600:3c18::2000:b1ff:fea9:4560", - "CanPort80": true - }, - { - "Name": "7e", - "RegionID": 7, - "HostName": "derp7e.tailscale.com", - "IPv4": "172.238.6.180", - "IPv6": "2600:3c18::2000:60ff:fe0f:6e83", - "STUNOnly": true, - "CanPort80": true - } - ] - }, - "8": { - "RegionID": 8, - "RegionCode": "lhr", - "RegionName": "London", - "Latitude": 51.5072, - "Longitude": 0.1276, - "Nodes": [ - { - "Name": "8f", - "RegionID": 8, - "HostName": "derp8f.tailscale.com", - "IPv4": "176.58.88.183", - "IPv6": "2a00:dd80:3a::dfa", - "CanPort80": true - }, - { - "Name": "8g", - "RegionID": 8, - "HostName": "derp8g.tailscale.com", - "IPv4": "176.58.92.254", - "IPv6": "2a00:dd80:3a::ed", - "CanPort80": true - }, - { - "Name": "8e", - "RegionID": 8, - "HostName": "derp8e.tailscale.com", - "IPv4": "176.58.92.144", - "IPv6": "2a00:dd80:3a::b33", - "CanPort80": true - } - ] - }, - "9": { - "RegionID": 9, - "RegionCode": "dfw", - "RegionName": "Dallas", - "Latitude": 32.779167, - "Longitude": -96.808889, - "Nodes": [ - { - "Name": "9e", - "RegionID": 9, - "HostName": "derp9e.tailscale.com", - "IPv4": "192.73.248.83", - "IPv6": "2607:f740:100::359", - "CanPort80": true - }, - { - "Name": "9f", - "RegionID": 9, - "HostName": "derp9f.tailscale.com", - "IPv4": "209.177.156.197", - "IPv6": "2607:f740:100::cad", - "CanPort80": true - }, - { - "Name": "9d", - "RegionID": 9, - "HostName": "derp9d.tailscale.com", - "IPv4": "209.177.156.94", - "IPv6": "2607:f740:100::c05", - "CanPort80": true - } - ] - } - } - }, - "DisplayMessages": null, - "TKAEnabled": false, - "TKAHead": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", - "Domain": "kratail2tid@passkey", - "DomainAuditLogID": "", - "UserProfiles": { - "50590507314324": { - "ID": 50590507314324, - "LoginName": "router-a.tail78f774.ts.net", - "DisplayName": "router-a" - } - } + "PacketFilterRules": null } }, "router-b": { - "commands": { - "packet_filter_rules": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/router-b/tailscaled.sock debug localapi POST debug-packet-filter-rules", - "packet_filter_matches": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/router-b/tailscaled.sock debug localapi POST debug-packet-filter-matches" - }, "packet_filter_rules": null, - "packet_filter_matches": [], - "whois": { - "100.124.195.93": { - "peer_name": "exit-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/router-b/tailscaled.sock whois --json 100.124.195.93", - "response": null - }, - "100.116.18.24": { - "peer_name": "exit-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/router-b/tailscaled.sock whois --json 100.116.18.24", - "response": null - }, - "100.85.66.106": { - "peer_name": "exit-node", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/router-b/tailscaled.sock whois --json 100.85.66.106", - "response": null - }, - "100.107.162.14": { - "peer_name": "group-a-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/router-b/tailscaled.sock whois --json 100.107.162.14", - "response": null - }, - "100.77.135.18": { - "peer_name": "group-b-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/router-b/tailscaled.sock whois --json 100.77.135.18", - "response": null - }, - "100.105.127.107": { - "peer_name": "multi-exit-router", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/router-b/tailscaled.sock whois --json 100.105.127.107", - "response": null - }, - "100.109.43.124": { - "peer_name": "router-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/router-b/tailscaled.sock whois --json 100.109.43.124", - "response": null - }, - "100.92.142.61": { - "peer_name": "subnet-router", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/router-b/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/router-b/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/router-b/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/router-b/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/router-b/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/router-b/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/router-b/tailscaled.sock whois --json 100.90.199.68", - "response": null - } - }, "netmap": { - "SelfNode": { - "ID": 1399889648409786, - "StableID": "nPHvXBj1wB11CNTRL", - "Name": "router-b.tail78f774.ts.net.", - "User": 1399889648409786, - "Key": "nodekey:4e6d3473c516cea37bcefdf4368932c623fd91c24aee1aacc27ca8165a41ac7a", - "DiscoKey": "discokey:dd5532635b8e3ddf25186e36671c16dd17c005c8b6a6862f4b5cc4e4f459e705", - "Addresses": ["100.65.172.123/32", "fd7a:115c:a1e0::5a37:ac7c/128"], - "AllowedIPs": ["100.65.172.123/32", "fd7a:115c:a1e0::5a37:ac7c/128", "10.55.0.0/16"], - "Endpoints": ["77.164.248.136:35931", "10.65.0.27:35931", "172.17.0.1:35931"], - "Hostinfo": { - "Hostname": "router-b", - "RoutableIPs": ["10.55.0.0/16"], - "RequestTags": ["tag:router-b"], - "Services": [ - { "Proto": "peerapi4", "Port": 58804 }, - { "Proto": "peerapi6", "Port": 58804 }, - { "Proto": "peerapi-dns-proxy", "Port": 1 } - ] - }, - "Created": "2026-03-28T10:38:15.42735258Z", - "Tags": ["tag:router-b"], - "PrimaryRoutes": ["10.55.0.0/16"], - "MachineAuthorized": true, - "CapMap": { - "https://tailscale.com/cap/file-sharing": null, - "https://tailscale.com/cap/is-owner": null, - "https://tailscale.com/cap/ssh": null, - "https://tailscale.com/cap/tailnet-lock": null, - "probe-udp-lifetime": null, - "ssh-behavior-v1": null, - "ssh-env-vars": null, - "store-appc-routes": null, - "tailnet-display-name": ["kratail2tid@passkey"] - }, - "ComputedName": "router-b", - "ComputedNameWithHost": "router-b" - }, - "AllCaps": [ - "https://tailscale.com/cap/is-owner", - "https://tailscale.com/cap/ssh", - "https://tailscale.com/cap/tailnet-lock", - "ssh-env-vars", - "probe-udp-lifetime", - "store-appc-routes", - "ssh-behavior-v1", - "https://tailscale.com/cap/file-sharing", - "tailnet-display-name" - ], - "NodeKey": "nodekey:4e6d3473c516cea37bcefdf4368932c623fd91c24aee1aacc27ca8165a41ac7a", - "MachineKey": "mkey:d040ca033391d3dedae7b2ad7ec3334646cda7aeca501780bdaa37addec3c228", "Peers": [], - "DNS": { - "Routes": { - "tail78f774.ts.net.": null, - "ts.net.": [{ "Addr": "199.247.155.53" }, { "Addr": "2620:111:8007::53" }] - }, - "Domains": ["tail78f774.ts.net"], - "Proxied": true, - "ExitNodeFilteredSet": [".ts.net", ".tailscale.net"] - }, - "PacketFilter": [], - "PacketFilterRules": null, - "SSHPolicy": { "rules": [] }, - "CollectServices": false, - "DERPMap": { - "Regions": { - "1": { - "RegionID": 1, - "RegionCode": "nyc", - "RegionName": "New York City", - "Latitude": 40.7128, - "Longitude": -74.006, - "Nodes": [ - { - "Name": "1h", - "RegionID": 1, - "HostName": "derp1h.tailscale.com", - "IPv4": "199.38.181.93", - "IPv6": "2607:f740:f::afd", - "CanPort80": true - }, - { - "Name": "1g", - "RegionID": 1, - "HostName": "derp1g.tailscale.com", - "IPv4": "209.177.145.120", - "IPv6": "2607:f740:f::3eb", - "CanPort80": true - }, - { - "Name": "1i", - "RegionID": 1, - "HostName": "derp1i.tailscale.com", - "IPv4": "199.38.181.103", - "IPv6": "2607:f740:f::e19", - "CanPort80": true - }, - { - "Name": "1f", - "RegionID": 1, - "HostName": "derp1f.tailscale.com", - "IPv4": "199.38.181.104", - "IPv6": "2607:f740:f::bc", - "CanPort80": true - } - ] - }, - "10": { - "RegionID": 10, - "RegionCode": "sea", - "RegionName": "Seattle", - "Latitude": 47.609722, - "Longitude": -122.333056, - "Nodes": [ - { - "Name": "10c", - "RegionID": 10, - "HostName": "derp10c.tailscale.com", - "IPv4": "192.73.240.121", - "IPv6": "2607:f740:14::40c", - "CanPort80": true - }, - { - "Name": "10d", - "RegionID": 10, - "HostName": "derp10d.tailscale.com", - "IPv4": "192.73.240.132", - "IPv6": "2607:f740:14::500", - "CanPort80": true - }, - { - "Name": "10b", - "RegionID": 10, - "HostName": "derp10b.tailscale.com", - "IPv4": "192.73.240.161", - "IPv6": "2607:f740:14::61c", - "CanPort80": true - } - ] - }, - "11": { - "RegionID": 11, - "RegionCode": "sao", - "RegionName": "São Paulo", - "Latitude": -23.55, - "Longitude": -46.633333, - "Nodes": [ - { - "Name": "11f", - "RegionID": 11, - "HostName": "derp11f.tailscale.com", - "IPv4": "172.237.61.197", - "IPv6": "2600:3c0d::2000:3bff:fe44:6166", - "CanPort80": true - }, - { - "Name": "11g", - "RegionID": 11, - "HostName": "derp11g.tailscale.com", - "IPv4": "172.237.61.190", - "IPv6": "2600:3c0d::2000:62ff:febe:2e67", - "CanPort80": true - }, - { - "Name": "11e", - "RegionID": 11, - "HostName": "derp11e.tailscale.com", - "IPv4": "172.237.61.194", - "IPv6": "2600:3c0d::2000:d2ff:fe43:1790", - "CanPort80": true - } - ] - }, - "12": { - "RegionID": 12, - "RegionCode": "ord", - "RegionName": "Chicago", - "Latitude": 41.881944, - "Longitude": -87.627778, - "Nodes": [ - { - "Name": "12e", - "RegionID": 12, - "HostName": "derp12e.tailscale.com", - "IPv4": "209.177.158.15", - "IPv6": "2607:f740:e::b17", - "CanPort80": true - }, - { - "Name": "12f", - "RegionID": 12, - "HostName": "derp12f.tailscale.com", - "IPv4": "199.38.182.118", - "IPv6": "2607:f740:e::4c8", - "CanPort80": true - }, - { - "Name": "12d", - "RegionID": 12, - "HostName": "derp12d.tailscale.com", - "IPv4": "209.177.158.246", - "IPv6": "2607:f740:e::811", - "CanPort80": true - } - ] - }, - "13": { - "RegionID": 13, - "RegionCode": "den", - "RegionName": "Denver", - "Latitude": 39.7392, - "Longitude": -104.9849, - "Nodes": [ - { - "Name": "13c", - "RegionID": 13, - "HostName": "derp13c.tailscale.com", - "IPv4": "192.73.242.28", - "IPv6": "2607:f740:16::5c", - "CanPort80": true - }, - { - "Name": "13d", - "RegionID": 13, - "HostName": "derp13d.tailscale.com", - "IPv4": "192.73.242.204", - "IPv6": "2607:f740:16::c23", - "CanPort80": true - }, - { - "Name": "13b", - "RegionID": 13, - "HostName": "derp13b.tailscale.com", - "IPv4": "192.73.242.187", - "IPv6": "2607:f740:16::640", - "CanPort80": true - } - ] - }, - "14": { - "RegionID": 14, - "RegionCode": "ams", - "RegionName": "Amsterdam", - "Latitude": 52.372778, - "Longitude": 4.893611, - "Nodes": [ - { - "Name": "14c", - "RegionID": 14, - "HostName": "derp14c.tailscale.com", - "IPv4": "176.58.93.147", - "IPv6": "2a00:dd80:3c::b09", - "CanPort80": true - }, - { - "Name": "14d", - "RegionID": 14, - "HostName": "derp14d.tailscale.com", - "IPv4": "176.58.93.154", - "IPv6": "2a00:dd80:3c::3d5", - "CanPort80": true - }, - { - "Name": "14b", - "RegionID": 14, - "HostName": "derp14b.tailscale.com", - "IPv4": "176.58.93.248", - "IPv6": "2a00:dd80:3c::807", - "CanPort80": true - } - ] - }, - "15": { - "RegionID": 15, - "RegionCode": "jnb", - "RegionName": "Johannesburg", - "Latitude": -26.204444, - "Longitude": 28.045556, - "Nodes": [ - { - "Name": "15c", - "RegionID": 15, - "HostName": "derp15c.tailscale.com", - "IPv4": "102.67.165.185", - "IPv6": "2c0f:edb0:0:10::b59", - "CanPort80": true - }, - { - "Name": "15d", - "RegionID": 15, - "HostName": "derp15d.tailscale.com", - "IPv4": "102.67.165.36", - "IPv6": "2c0f:edb0:0:10::599", - "CanPort80": true - }, - { - "Name": "15b", - "RegionID": 15, - "HostName": "derp15b.tailscale.com", - "IPv4": "102.67.165.90", - "IPv6": "2c0f:edb0:0:10::963", - "CanPort80": true - } - ] - }, - "16": { - "RegionID": 16, - "RegionCode": "mia", - "RegionName": "Miami", - "Latitude": 25.78, - "Longitude": -80.21, - "Nodes": [ - { - "Name": "16c", - "RegionID": 16, - "HostName": "derp16c.tailscale.com", - "IPv4": "192.73.243.229", - "IPv6": "2607:f740:17::4e4", - "CanPort80": true - }, - { - "Name": "16d", - "RegionID": 16, - "HostName": "derp16d.tailscale.com", - "IPv4": "192.73.243.141", - "IPv6": "2607:f740:17::475", - "CanPort80": true - }, - { - "Name": "16b", - "RegionID": 16, - "HostName": "derp16b.tailscale.com", - "IPv4": "192.73.243.135", - "IPv6": "2607:f740:17::476", - "CanPort80": true - } - ] - }, - "17": { - "RegionID": 17, - "RegionCode": "lax", - "RegionName": "Los Angeles", - "Latitude": 34.05, - "Longitude": -118.25, - "Nodes": [ - { - "Name": "17c", - "RegionID": 17, - "HostName": "derp17c.tailscale.com", - "IPv4": "208.111.40.12", - "IPv6": "2607:f740:c::10", - "CanPort80": true - }, - { - "Name": "17d", - "RegionID": 17, - "HostName": "derp17d.tailscale.com", - "IPv4": "208.111.40.216", - "IPv6": "2607:f740:c::e1b", - "CanPort80": true - }, - { - "Name": "17b", - "RegionID": 17, - "HostName": "derp17b.tailscale.com", - "IPv4": "192.73.244.245", - "IPv6": "2607:f740:c::646", - "CanPort80": true - } - ] - }, - "18": { - "RegionID": 18, - "RegionCode": "par", - "RegionName": "Paris", - "Latitude": 48.856667, - "Longitude": 2.352222, - "Nodes": [ - { - "Name": "18c", - "RegionID": 18, - "HostName": "derp18c.tailscale.com", - "IPv4": "176.58.90.207", - "IPv6": "2a00:dd80:3e::c19", - "CanPort80": true - }, - { - "Name": "18d", - "RegionID": 18, - "HostName": "derp18d.tailscale.com", - "IPv4": "176.58.90.104", - "IPv6": "2a00:dd80:3e::f2e", - "CanPort80": true - }, - { - "Name": "18b", - "RegionID": 18, - "HostName": "derp18b.tailscale.com", - "IPv4": "176.58.90.147", - "IPv6": "2a00:dd80:3e::363", - "CanPort80": true - } - ] - }, - "19": { - "RegionID": 19, - "RegionCode": "mad", - "RegionName": "Madrid", - "Latitude": 40.416944, - "Longitude": -3.703333, - "Nodes": [ - { - "Name": "19c", - "RegionID": 19, - "HostName": "derp19c.tailscale.com", - "IPv4": "45.159.97.61", - "IPv6": "2a00:dd80:14:10::20", - "CanPort80": true - }, - { - "Name": "19d", - "RegionID": 19, - "HostName": "derp19d.tailscale.com", - "IPv4": "45.159.97.233", - "IPv6": "2a00:dd80:14:10::34a", - "CanPort80": true - }, - { - "Name": "19b", - "RegionID": 19, - "HostName": "derp19b.tailscale.com", - "IPv4": "45.159.97.144", - "IPv6": "2a00:dd80:14:10::335", - "CanPort80": true - } - ] - }, - "2": { - "RegionID": 2, - "RegionCode": "sfo", - "RegionName": "San Francisco", - "Latitude": 37.7775, - "Longitude": -122.416389, - "Nodes": [ - { - "Name": "2e", - "RegionID": 2, - "HostName": "derp2e.tailscale.com", - "IPv4": "192.73.252.134", - "IPv6": "2607:f740:0:3f::44c", - "CanPort80": true - }, - { - "Name": "2f", - "RegionID": 2, - "HostName": "derp2f.tailscale.com", - "IPv4": "208.111.34.178", - "IPv6": "2607:f740:0:3f::f4", - "CanPort80": true - }, - { - "Name": "2d", - "RegionID": 2, - "HostName": "derp2d.tailscale.com", - "IPv4": "192.73.252.65", - "IPv6": "2607:f740:0:3f::287", - "CanPort80": true - } - ] - }, - "20": { - "RegionID": 20, - "RegionCode": "hkg", - "RegionName": "Hong Kong", - "Latitude": 22.3193, - "Longitude": 114.1694, - "Nodes": [ - { - "Name": "20c", - "RegionID": 20, - "HostName": "derp20c.tailscale.com", - "IPv4": "205.147.105.30", - "IPv6": "2403:2500:8000:1::5fb", - "CanPort80": true - }, - { - "Name": "20d", - "RegionID": 20, - "HostName": "derp20d.tailscale.com", - "IPv4": "205.147.105.78", - "IPv6": "2403:2500:8000:1::e9a", - "CanPort80": true - }, - { - "Name": "20b", - "RegionID": 20, - "HostName": "derp20b.tailscale.com", - "IPv4": "103.6.84.152", - "IPv6": "2403:2500:8000:1::ef6", - "CanPort80": true - } - ] - }, - "21": { - "RegionID": 21, - "RegionCode": "tor", - "RegionName": "Toronto", - "Latitude": 43.741667, - "Longitude": -79.373333, - "Nodes": [ - { - "Name": "21c", - "RegionID": 21, - "HostName": "derp21c.tailscale.com", - "IPv4": "162.248.221.215", - "IPv6": "2607:f740:50::f10", - "CanPort80": true - }, - { - "Name": "21d", - "RegionID": 21, - "HostName": "derp21d.tailscale.com", - "IPv4": "162.248.221.248", - "IPv6": "2607:f740:50::ca4", - "CanPort80": true - }, - { - "Name": "21b", - "RegionID": 21, - "HostName": "derp21b.tailscale.com", - "IPv4": "162.248.221.199", - "IPv6": "2607:f740:50::1d1", - "CanPort80": true - } - ] - }, - "22": { - "RegionID": 22, - "RegionCode": "waw", - "RegionName": "Warsaw", - "Latitude": 52.23, - "Longitude": 21.011111, - "Nodes": [ - { - "Name": "22c", - "RegionID": 22, - "HostName": "derp22c.tailscale.com", - "IPv4": "45.159.98.253", - "IPv6": "2a00:dd80:40:100::3f", - "CanPort80": true - }, - { - "Name": "22d", - "RegionID": 22, - "HostName": "derp22d.tailscale.com", - "IPv4": "45.159.98.145", - "IPv6": "2a00:dd80:40:100::211", - "CanPort80": true - }, - { - "Name": "22b", - "RegionID": 22, - "HostName": "derp22b.tailscale.com", - "IPv4": "45.159.98.196", - "IPv6": "2a00:dd80:40:100::316", - "CanPort80": true - } - ] - }, - "23": { - "RegionID": 23, - "RegionCode": "dbi", - "RegionName": "Dubai", - "Latitude": 25.263056, - "Longitude": 55.297222, - "Nodes": [ - { - "Name": "23c", - "RegionID": 23, - "HostName": "derp23c.tailscale.com", - "IPv4": "185.34.3.207", - "IPv6": "2a00:dd80:3f:100::a50", - "CanPort80": true - }, - { - "Name": "23d", - "RegionID": 23, - "HostName": "derp23d.tailscale.com", - "IPv4": "185.34.3.75", - "IPv6": "2a00:dd80:3f:100::97e", - "CanPort80": true - }, - { - "Name": "23b", - "RegionID": 23, - "HostName": "derp23b.tailscale.com", - "IPv4": "185.34.3.232", - "IPv6": "2a00:dd80:3f:100::76f", - "CanPort80": true - } - ] - }, - "24": { - "RegionID": 24, - "RegionCode": "hnl", - "RegionName": "Honolulu", - "Latitude": 21.306944, - "Longitude": -157.858333, - "Nodes": [ - { - "Name": "24c", - "RegionID": 24, - "HostName": "derp24c.tailscale.com", - "IPv4": "208.83.233.233", - "IPv6": "2001:19f0:c000:c591:5400:04ff:fe26:2c5f", - "CanPort80": true - }, - { - "Name": "24d", - "RegionID": 24, - "HostName": "derp24d.tailscale.com", - "IPv4": "208.72.155.133", - "IPv6": "2001:19f0:c000:c564:5400:04ff:fe26:2ba8", - "CanPort80": true - }, - { - "Name": "24b", - "RegionID": 24, - "HostName": "derp24b.tailscale.com", - "IPv4": "208.83.234.151", - "IPv6": "2001:19f0:c000:c586:5400:04ff:fe26:2ba6", - "CanPort80": true - } - ] - }, - "25": { - "RegionID": 25, - "RegionCode": "nai", - "RegionName": "Nairobi", - "Latitude": -1.286389, - "Longitude": 36.817222, - "Nodes": [ - { - "Name": "25c", - "RegionID": 25, - "HostName": "derp25c.tailscale.com", - "IPv4": "102.67.167.37", - "IPv6": "2c0f:edb0:2000:1::2c7", - "CanPort80": true - }, - { - "Name": "25d", - "RegionID": 25, - "HostName": "derp25d.tailscale.com", - "IPv4": "102.67.167.188", - "IPv6": "2c0f:edb0:2000:1::188", - "CanPort80": true - }, - { - "Name": "25b", - "RegionID": 25, - "HostName": "derp25b.tailscale.com", - "IPv4": "102.67.167.245", - "IPv6": "2c0f:edb0:2000:1::2e9", - "CanPort80": true - } - ] - }, - "26": { - "RegionID": 26, - "RegionCode": "nue", - "RegionName": "Nuremberg", - "Latitude": 49.453889, - "Longitude": 11.0775, - "Nodes": [ - { - "Name": "26c", - "RegionID": 26, - "HostName": "derp26c.tailscale.com", - "IPv4": "49.12.193.137", - "IPv6": "2a01:4f8:1c1c:5c70::1", - "CanPort80": true - }, - { - "Name": "26d", - "RegionID": 26, - "HostName": "derp26d.tailscale.com", - "IPv4": "49.13.204.141", - "IPv6": "2a01:4f8:1c0c:7d06::1", - "CanPort80": true - }, - { - "Name": "26b", - "RegionID": 26, - "HostName": "derp26b.tailscale.com", - "IPv4": "167.235.72.200", - "IPv6": "2a01:4f8:1c1c:47b6::1", - "CanPort80": true - } - ] - }, - "27": { - "RegionID": 27, - "RegionCode": "iad", - "RegionName": "Ashburn", - "Latitude": 39.03, - "Longitude": -77.471111, - "Nodes": [ - { - "Name": "27d", - "RegionID": 27, - "HostName": "derp27d.tailscale.com", - "IPv4": "178.156.152.106", - "IPv6": "2a01:4ff:f0:3c8e::1", - "CanPort80": true - }, - { - "Name": "27c", - "RegionID": 27, - "HostName": "derp27c.tailscale.com", - "IPv4": "178.156.152.91", - "IPv6": "2a01:4ff:f0:3913::1", - "CanPort80": true - }, - { - "Name": "27e", - "RegionID": 27, - "HostName": "derp27e.tailscale.com", - "IPv4": "178.156.134.232", - "IPv6": "2a01:4ff:f0:28d4::1", - "CanPort80": true - }, - { - "Name": "27b", - "RegionID": 27, - "HostName": "derp27b.tailscale.com", - "IPv4": "5.161.218.233", - "IPv6": "2a01:4ff:f0:3db9::1", - "CanPort80": true - } - ] - }, - "28": { - "RegionID": 28, - "RegionCode": "hel", - "RegionName": "Helsinki", - "Latitude": 60.170833, - "Longitude": 24.9375, - "Nodes": [ - { - "Name": "28c", - "RegionID": 28, - "HostName": "derp28c.tailscale.com", - "IPv4": "95.217.2.165", - "IPv6": "2a01:4f9:c012:cd74::1", - "CanPort80": true - }, - { - "Name": "28d", - "RegionID": 28, - "HostName": "derp28d.tailscale.com", - "IPv4": "157.180.28.32", - "IPv6": "2a01:4f9:c012:2e5b::1", - "CanPort80": true - }, - { - "Name": "28b", - "RegionID": 28, - "HostName": "derp28b.tailscale.com", - "IPv4": "65.109.143.62", - "IPv6": "2a01:4f9:c012:d55c::1", - "CanPort80": true - } - ] - }, - "3": { - "RegionID": 3, - "RegionCode": "sin", - "RegionName": "Singapore", - "Latitude": 1.3521, - "Longitude": 103.8198, - "Nodes": [ - { - "Name": "3g", - "RegionID": 3, - "HostName": "derp3g.tailscale.com", - "IPv4": "172.237.72.79", - "IPv6": "2600:3c15::2000:adff:fe08:6fab", - "CanPort80": true - }, - { - "Name": "3f", - "RegionID": 3, - "HostName": "derp3f.tailscale.com", - "IPv4": "172.237.72.8", - "IPv6": "2600:3c15::2000:53ff:fe48:a668", - "CanPort80": true - }, - { - "Name": "3h", - "RegionID": 3, - "HostName": "derp3h.tailscale.com", - "IPv4": "172.237.66.30", - "IPv6": "2600:3c15::2000:3dff:fe44:50aa", - "CanPort80": true - }, - { - "Name": "3e", - "RegionID": 3, - "HostName": "derp3e.tailscale.com", - "IPv4": "172.237.72.43", - "IPv6": "2600:3c15::2000:6cff:fee4:d799", - "CanPort80": true - } - ] - }, - "4": { - "RegionID": 4, - "RegionCode": "fra", - "RegionName": "Frankfurt", - "Latitude": 50.1109, - "Longitude": 8.6821, - "Nodes": [ - { - "Name": "4h", - "RegionID": 4, - "HostName": "derp4h.tailscale.com", - "IPv4": "185.40.234.77", - "IPv6": "2a00:dd80:20::bcf", - "CanPort80": true - }, - { - "Name": "4g", - "RegionID": 4, - "HostName": "derp4g.tailscale.com", - "IPv4": "185.40.234.113", - "IPv6": "2a00:dd80:20::8f", - "CanPort80": true - }, - { - "Name": "4i", - "RegionID": 4, - "HostName": "derp4i.tailscale.com", - "IPv4": "185.40.234.53", - "IPv6": "2a00:dd80:20::8a6", - "CanPort80": true - }, - { - "Name": "4f", - "RegionID": 4, - "HostName": "derp4f.tailscale.com", - "IPv4": "185.40.234.219", - "IPv6": "2a00:dd80:20::a25", - "CanPort80": true - } - ] - }, - "5": { - "RegionID": 5, - "RegionCode": "syd", - "RegionName": "Sydney", - "Latitude": -33.867778, - "Longitude": 151.21, - "Nodes": [ - { - "Name": "5f", - "RegionID": 5, - "HostName": "derp5f.tailscale.com", - "IPv4": "172.105.166.103", - "IPv6": "2400:8907::2000:ccff:fe1f:80da", - "CanPort80": true - }, - { - "Name": "5g", - "RegionID": 5, - "HostName": "derp5g.tailscale.com", - "IPv4": "172.105.169.57", - "IPv6": "2400:8907::2000:2fff:fea7:57f4", - "CanPort80": true - }, - { - "Name": "5e", - "RegionID": 5, - "HostName": "derp5e.tailscale.com", - "IPv4": "172.105.179.230", - "IPv6": "2400:8907::2000:ceff:fe8d:4f4e", - "CanPort80": true - } - ] - }, - "6": { - "RegionID": 6, - "RegionCode": "blr", - "RegionName": "Bengaluru", - "Latitude": 12.9716, - "Longitude": 77.5946, - "Nodes": [ - { - "Name": "6a", - "RegionID": 6, - "HostName": "derp6.tailscale.com", - "IPv4": "68.183.90.120", - "IPv6": "2400:6180:100:d0::982:d001", - "CanPort80": true - } - ] - }, - "7": { - "RegionID": 7, - "RegionCode": "tok", - "RegionName": "Tokyo", - "Latitude": 35.6764, - "Longitude": 139.65, - "Nodes": [ - { - "Name": "7g", - "RegionID": 7, - "HostName": "derp7g.tailscale.com", - "IPv4": "172.238.6.179", - "IPv6": "2600:3c18::2000:3fff:fe80:3ebd", - "CanPort80": true - }, - { - "Name": "7f", - "RegionID": 7, - "HostName": "derp7f.tailscale.com", - "IPv4": "172.238.6.34", - "IPv6": "2600:3c18::2000:acff:fe8e:3ed5", - "CanPort80": true - }, - { - "Name": "7h", - "RegionID": 7, - "HostName": "derp7h.tailscale.com", - "IPv4": "172.237.28.183", - "IPv6": "2600:3c18::2000:b1ff:fea9:4560", - "CanPort80": true - }, - { - "Name": "7e", - "RegionID": 7, - "HostName": "derp7e.tailscale.com", - "IPv4": "172.238.6.180", - "IPv6": "2600:3c18::2000:60ff:fe0f:6e83", - "STUNOnly": true, - "CanPort80": true - } - ] - }, - "8": { - "RegionID": 8, - "RegionCode": "lhr", - "RegionName": "London", - "Latitude": 51.5072, - "Longitude": 0.1276, - "Nodes": [ - { - "Name": "8f", - "RegionID": 8, - "HostName": "derp8f.tailscale.com", - "IPv4": "176.58.88.183", - "IPv6": "2a00:dd80:3a::dfa", - "CanPort80": true - }, - { - "Name": "8g", - "RegionID": 8, - "HostName": "derp8g.tailscale.com", - "IPv4": "176.58.92.254", - "IPv6": "2a00:dd80:3a::ed", - "CanPort80": true - }, - { - "Name": "8e", - "RegionID": 8, - "HostName": "derp8e.tailscale.com", - "IPv4": "176.58.92.144", - "IPv6": "2a00:dd80:3a::b33", - "CanPort80": true - } - ] - }, - "9": { - "RegionID": 9, - "RegionCode": "dfw", - "RegionName": "Dallas", - "Latitude": 32.779167, - "Longitude": -96.808889, - "Nodes": [ - { - "Name": "9e", - "RegionID": 9, - "HostName": "derp9e.tailscale.com", - "IPv4": "192.73.248.83", - "IPv6": "2607:f740:100::359", - "CanPort80": true - }, - { - "Name": "9f", - "RegionID": 9, - "HostName": "derp9f.tailscale.com", - "IPv4": "209.177.156.197", - "IPv6": "2607:f740:100::cad", - "CanPort80": true - }, - { - "Name": "9d", - "RegionID": 9, - "HostName": "derp9d.tailscale.com", - "IPv4": "209.177.156.94", - "IPv6": "2607:f740:100::c05", - "CanPort80": true - } - ] - } - } - }, - "DisplayMessages": null, - "TKAEnabled": false, - "TKAHead": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", - "Domain": "kratail2tid@passkey", - "DomainAuditLogID": "", - "UserProfiles": { - "1399889648409786": { - "ID": 1399889648409786, - "LoginName": "router-b.tail78f774.ts.net", - "DisplayName": "router-b" - } - } + "PacketFilterRules": 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.124.195.93": { - "peer_name": "exit-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/subnet-router/tailscaled.sock whois --json 100.124.195.93", - "response": null - }, - "100.116.18.24": { - "peer_name": "exit-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/subnet-router/tailscaled.sock whois --json 100.116.18.24", - "response": null - }, - "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.107.162.14": { - "peer_name": "group-a-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/subnet-router/tailscaled.sock whois --json 100.107.162.14", - "response": null - }, - "100.77.135.18": { - "peer_name": "group-b-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/subnet-router/tailscaled.sock whois --json 100.77.135.18", - "response": null - }, - "100.105.127.107": { - "peer_name": "multi-exit-router", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/subnet-router/tailscaled.sock whois --json 100.105.127.107", - "response": null - }, - "100.109.43.124": { - "peer_name": "router-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/subnet-router/tailscaled.sock whois --json 100.109.43.124", - "response": null - }, - "100.65.172.123": { - "peer_name": "router-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/subnet-router/tailscaled.sock whois --json 100.65.172.123", - "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 - } - }, "netmap": { - "SelfNode": { - "ID": 7489538288452506, - "StableID": "nTPEqJU2V121CNTRL", - "Name": "subnet-router.tail78f774.ts.net.", - "User": 7489538288452506, - "Key": "nodekey:887ae2351c09c3b952f1f42bdac4095ec396ebf15824a746e4193c003e9c8e3c", - "DiscoKey": "discokey:9e3167ceaf53735a2fcaa7d3a85ad3a6118274deb448326d594849275014cc56", - "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:58597", "10.65.0.27:58597", "172.17.0.1:58597"], - "Hostinfo": { - "Hostname": "subnet-router", - "RoutableIPs": ["10.33.0.0/16"], - "RequestTags": ["tag:router"], - "Services": [ - { "Proto": "peerapi4", "Port": 63250 }, - { "Proto": "peerapi6", "Port": 63250 }, - { "Proto": "peerapi-dns-proxy", "Port": 1 } - ] - }, - "Created": "2026-02-23T00:13:15.731478784Z", - "Tags": ["tag:router"], - "MachineAuthorized": true, - "CapMap": { - "https://tailscale.com/cap/file-sharing": null, - "https://tailscale.com/cap/is-owner": null, - "https://tailscale.com/cap/ssh": null, - "https://tailscale.com/cap/tailnet-lock": null, - "probe-udp-lifetime": null, - "ssh-behavior-v1": null, - "ssh-env-vars": null, - "store-appc-routes": null, - "tailnet-display-name": ["kratail2tid@passkey"] - }, - "ComputedName": "subnet-router", - "ComputedNameWithHost": "subnet-router" - }, - "AllCaps": [ - "https://tailscale.com/cap/tailnet-lock", - "https://tailscale.com/cap/file-sharing", - "ssh-behavior-v1", - "ssh-env-vars", - "https://tailscale.com/cap/ssh", - "probe-udp-lifetime", - "store-appc-routes", - "tailnet-display-name", - "https://tailscale.com/cap/is-owner" - ], - "NodeKey": "nodekey:887ae2351c09c3b952f1f42bdac4095ec396ebf15824a746e4193c003e9c8e3c", - "MachineKey": "mkey:324efa54cc51a7b4f266f6a236904c755d32b6e547a76ad3c1d1e9d348de682a", "Peers": [], - "DNS": { - "Routes": { - "tail78f774.ts.net.": null, - "ts.net.": [{ "Addr": "199.247.155.53" }, { "Addr": "2620:111:8007::53" }] - }, - "Domains": ["tail78f774.ts.net"], - "Proxied": true, - "ExitNodeFilteredSet": [".ts.net", ".tailscale.net"] - }, - "PacketFilter": [], - "PacketFilterRules": null, - "SSHPolicy": { "rules": [] }, - "CollectServices": false, - "DERPMap": { - "Regions": { - "1": { - "RegionID": 1, - "RegionCode": "nyc", - "RegionName": "New York City", - "Latitude": 40.7128, - "Longitude": -74.006, - "Nodes": [ - { - "Name": "1h", - "RegionID": 1, - "HostName": "derp1h.tailscale.com", - "IPv4": "199.38.181.93", - "IPv6": "2607:f740:f::afd", - "CanPort80": true - }, - { - "Name": "1g", - "RegionID": 1, - "HostName": "derp1g.tailscale.com", - "IPv4": "209.177.145.120", - "IPv6": "2607:f740:f::3eb", - "CanPort80": true - }, - { - "Name": "1i", - "RegionID": 1, - "HostName": "derp1i.tailscale.com", - "IPv4": "199.38.181.103", - "IPv6": "2607:f740:f::e19", - "CanPort80": true - }, - { - "Name": "1f", - "RegionID": 1, - "HostName": "derp1f.tailscale.com", - "IPv4": "199.38.181.104", - "IPv6": "2607:f740:f::bc", - "CanPort80": true - } - ] - }, - "10": { - "RegionID": 10, - "RegionCode": "sea", - "RegionName": "Seattle", - "Latitude": 47.609722, - "Longitude": -122.333056, - "Nodes": [ - { - "Name": "10c", - "RegionID": 10, - "HostName": "derp10c.tailscale.com", - "IPv4": "192.73.240.121", - "IPv6": "2607:f740:14::40c", - "CanPort80": true - }, - { - "Name": "10d", - "RegionID": 10, - "HostName": "derp10d.tailscale.com", - "IPv4": "192.73.240.132", - "IPv6": "2607:f740:14::500", - "CanPort80": true - }, - { - "Name": "10b", - "RegionID": 10, - "HostName": "derp10b.tailscale.com", - "IPv4": "192.73.240.161", - "IPv6": "2607:f740:14::61c", - "CanPort80": true - } - ] - }, - "11": { - "RegionID": 11, - "RegionCode": "sao", - "RegionName": "São Paulo", - "Latitude": -23.55, - "Longitude": -46.633333, - "Nodes": [ - { - "Name": "11f", - "RegionID": 11, - "HostName": "derp11f.tailscale.com", - "IPv4": "172.237.61.197", - "IPv6": "2600:3c0d::2000:3bff:fe44:6166", - "CanPort80": true - }, - { - "Name": "11g", - "RegionID": 11, - "HostName": "derp11g.tailscale.com", - "IPv4": "172.237.61.190", - "IPv6": "2600:3c0d::2000:62ff:febe:2e67", - "CanPort80": true - }, - { - "Name": "11e", - "RegionID": 11, - "HostName": "derp11e.tailscale.com", - "IPv4": "172.237.61.194", - "IPv6": "2600:3c0d::2000:d2ff:fe43:1790", - "CanPort80": true - } - ] - }, - "12": { - "RegionID": 12, - "RegionCode": "ord", - "RegionName": "Chicago", - "Latitude": 41.881944, - "Longitude": -87.627778, - "Nodes": [ - { - "Name": "12e", - "RegionID": 12, - "HostName": "derp12e.tailscale.com", - "IPv4": "209.177.158.15", - "IPv6": "2607:f740:e::b17", - "CanPort80": true - }, - { - "Name": "12f", - "RegionID": 12, - "HostName": "derp12f.tailscale.com", - "IPv4": "199.38.182.118", - "IPv6": "2607:f740:e::4c8", - "CanPort80": true - }, - { - "Name": "12d", - "RegionID": 12, - "HostName": "derp12d.tailscale.com", - "IPv4": "209.177.158.246", - "IPv6": "2607:f740:e::811", - "CanPort80": true - } - ] - }, - "13": { - "RegionID": 13, - "RegionCode": "den", - "RegionName": "Denver", - "Latitude": 39.7392, - "Longitude": -104.9849, - "Nodes": [ - { - "Name": "13c", - "RegionID": 13, - "HostName": "derp13c.tailscale.com", - "IPv4": "192.73.242.28", - "IPv6": "2607:f740:16::5c", - "CanPort80": true - }, - { - "Name": "13d", - "RegionID": 13, - "HostName": "derp13d.tailscale.com", - "IPv4": "192.73.242.204", - "IPv6": "2607:f740:16::c23", - "CanPort80": true - }, - { - "Name": "13b", - "RegionID": 13, - "HostName": "derp13b.tailscale.com", - "IPv4": "192.73.242.187", - "IPv6": "2607:f740:16::640", - "CanPort80": true - } - ] - }, - "14": { - "RegionID": 14, - "RegionCode": "ams", - "RegionName": "Amsterdam", - "Latitude": 52.372778, - "Longitude": 4.893611, - "Nodes": [ - { - "Name": "14c", - "RegionID": 14, - "HostName": "derp14c.tailscale.com", - "IPv4": "176.58.93.147", - "IPv6": "2a00:dd80:3c::b09", - "CanPort80": true - }, - { - "Name": "14d", - "RegionID": 14, - "HostName": "derp14d.tailscale.com", - "IPv4": "176.58.93.154", - "IPv6": "2a00:dd80:3c::3d5", - "CanPort80": true - }, - { - "Name": "14b", - "RegionID": 14, - "HostName": "derp14b.tailscale.com", - "IPv4": "176.58.93.248", - "IPv6": "2a00:dd80:3c::807", - "CanPort80": true - } - ] - }, - "15": { - "RegionID": 15, - "RegionCode": "jnb", - "RegionName": "Johannesburg", - "Latitude": -26.204444, - "Longitude": 28.045556, - "Nodes": [ - { - "Name": "15c", - "RegionID": 15, - "HostName": "derp15c.tailscale.com", - "IPv4": "102.67.165.185", - "IPv6": "2c0f:edb0:0:10::b59", - "CanPort80": true - }, - { - "Name": "15d", - "RegionID": 15, - "HostName": "derp15d.tailscale.com", - "IPv4": "102.67.165.36", - "IPv6": "2c0f:edb0:0:10::599", - "CanPort80": true - }, - { - "Name": "15b", - "RegionID": 15, - "HostName": "derp15b.tailscale.com", - "IPv4": "102.67.165.90", - "IPv6": "2c0f:edb0:0:10::963", - "CanPort80": true - } - ] - }, - "16": { - "RegionID": 16, - "RegionCode": "mia", - "RegionName": "Miami", - "Latitude": 25.78, - "Longitude": -80.21, - "Nodes": [ - { - "Name": "16c", - "RegionID": 16, - "HostName": "derp16c.tailscale.com", - "IPv4": "192.73.243.229", - "IPv6": "2607:f740:17::4e4", - "CanPort80": true - }, - { - "Name": "16d", - "RegionID": 16, - "HostName": "derp16d.tailscale.com", - "IPv4": "192.73.243.141", - "IPv6": "2607:f740:17::475", - "CanPort80": true - }, - { - "Name": "16b", - "RegionID": 16, - "HostName": "derp16b.tailscale.com", - "IPv4": "192.73.243.135", - "IPv6": "2607:f740:17::476", - "CanPort80": true - } - ] - }, - "17": { - "RegionID": 17, - "RegionCode": "lax", - "RegionName": "Los Angeles", - "Latitude": 34.05, - "Longitude": -118.25, - "Nodes": [ - { - "Name": "17c", - "RegionID": 17, - "HostName": "derp17c.tailscale.com", - "IPv4": "208.111.40.12", - "IPv6": "2607:f740:c::10", - "CanPort80": true - }, - { - "Name": "17d", - "RegionID": 17, - "HostName": "derp17d.tailscale.com", - "IPv4": "208.111.40.216", - "IPv6": "2607:f740:c::e1b", - "CanPort80": true - }, - { - "Name": "17b", - "RegionID": 17, - "HostName": "derp17b.tailscale.com", - "IPv4": "192.73.244.245", - "IPv6": "2607:f740:c::646", - "CanPort80": true - } - ] - }, - "18": { - "RegionID": 18, - "RegionCode": "par", - "RegionName": "Paris", - "Latitude": 48.856667, - "Longitude": 2.352222, - "Nodes": [ - { - "Name": "18c", - "RegionID": 18, - "HostName": "derp18c.tailscale.com", - "IPv4": "176.58.90.207", - "IPv6": "2a00:dd80:3e::c19", - "CanPort80": true - }, - { - "Name": "18d", - "RegionID": 18, - "HostName": "derp18d.tailscale.com", - "IPv4": "176.58.90.104", - "IPv6": "2a00:dd80:3e::f2e", - "CanPort80": true - }, - { - "Name": "18b", - "RegionID": 18, - "HostName": "derp18b.tailscale.com", - "IPv4": "176.58.90.147", - "IPv6": "2a00:dd80:3e::363", - "CanPort80": true - } - ] - }, - "19": { - "RegionID": 19, - "RegionCode": "mad", - "RegionName": "Madrid", - "Latitude": 40.416944, - "Longitude": -3.703333, - "Nodes": [ - { - "Name": "19c", - "RegionID": 19, - "HostName": "derp19c.tailscale.com", - "IPv4": "45.159.97.61", - "IPv6": "2a00:dd80:14:10::20", - "CanPort80": true - }, - { - "Name": "19d", - "RegionID": 19, - "HostName": "derp19d.tailscale.com", - "IPv4": "45.159.97.233", - "IPv6": "2a00:dd80:14:10::34a", - "CanPort80": true - }, - { - "Name": "19b", - "RegionID": 19, - "HostName": "derp19b.tailscale.com", - "IPv4": "45.159.97.144", - "IPv6": "2a00:dd80:14:10::335", - "CanPort80": true - } - ] - }, - "2": { - "RegionID": 2, - "RegionCode": "sfo", - "RegionName": "San Francisco", - "Latitude": 37.7775, - "Longitude": -122.416389, - "Nodes": [ - { - "Name": "2e", - "RegionID": 2, - "HostName": "derp2e.tailscale.com", - "IPv4": "192.73.252.134", - "IPv6": "2607:f740:0:3f::44c", - "CanPort80": true - }, - { - "Name": "2f", - "RegionID": 2, - "HostName": "derp2f.tailscale.com", - "IPv4": "208.111.34.178", - "IPv6": "2607:f740:0:3f::f4", - "CanPort80": true - }, - { - "Name": "2d", - "RegionID": 2, - "HostName": "derp2d.tailscale.com", - "IPv4": "192.73.252.65", - "IPv6": "2607:f740:0:3f::287", - "CanPort80": true - } - ] - }, - "20": { - "RegionID": 20, - "RegionCode": "hkg", - "RegionName": "Hong Kong", - "Latitude": 22.3193, - "Longitude": 114.1694, - "Nodes": [ - { - "Name": "20c", - "RegionID": 20, - "HostName": "derp20c.tailscale.com", - "IPv4": "205.147.105.30", - "IPv6": "2403:2500:8000:1::5fb", - "CanPort80": true - }, - { - "Name": "20d", - "RegionID": 20, - "HostName": "derp20d.tailscale.com", - "IPv4": "205.147.105.78", - "IPv6": "2403:2500:8000:1::e9a", - "CanPort80": true - }, - { - "Name": "20b", - "RegionID": 20, - "HostName": "derp20b.tailscale.com", - "IPv4": "103.6.84.152", - "IPv6": "2403:2500:8000:1::ef6", - "CanPort80": true - } - ] - }, - "21": { - "RegionID": 21, - "RegionCode": "tor", - "RegionName": "Toronto", - "Latitude": 43.741667, - "Longitude": -79.373333, - "Nodes": [ - { - "Name": "21c", - "RegionID": 21, - "HostName": "derp21c.tailscale.com", - "IPv4": "162.248.221.215", - "IPv6": "2607:f740:50::f10", - "CanPort80": true - }, - { - "Name": "21d", - "RegionID": 21, - "HostName": "derp21d.tailscale.com", - "IPv4": "162.248.221.248", - "IPv6": "2607:f740:50::ca4", - "CanPort80": true - }, - { - "Name": "21b", - "RegionID": 21, - "HostName": "derp21b.tailscale.com", - "IPv4": "162.248.221.199", - "IPv6": "2607:f740:50::1d1", - "CanPort80": true - } - ] - }, - "22": { - "RegionID": 22, - "RegionCode": "waw", - "RegionName": "Warsaw", - "Latitude": 52.23, - "Longitude": 21.011111, - "Nodes": [ - { - "Name": "22c", - "RegionID": 22, - "HostName": "derp22c.tailscale.com", - "IPv4": "45.159.98.253", - "IPv6": "2a00:dd80:40:100::3f", - "CanPort80": true - }, - { - "Name": "22d", - "RegionID": 22, - "HostName": "derp22d.tailscale.com", - "IPv4": "45.159.98.145", - "IPv6": "2a00:dd80:40:100::211", - "CanPort80": true - }, - { - "Name": "22b", - "RegionID": 22, - "HostName": "derp22b.tailscale.com", - "IPv4": "45.159.98.196", - "IPv6": "2a00:dd80:40:100::316", - "CanPort80": true - } - ] - }, - "23": { - "RegionID": 23, - "RegionCode": "dbi", - "RegionName": "Dubai", - "Latitude": 25.263056, - "Longitude": 55.297222, - "Nodes": [ - { - "Name": "23c", - "RegionID": 23, - "HostName": "derp23c.tailscale.com", - "IPv4": "185.34.3.207", - "IPv6": "2a00:dd80:3f:100::a50", - "CanPort80": true - }, - { - "Name": "23d", - "RegionID": 23, - "HostName": "derp23d.tailscale.com", - "IPv4": "185.34.3.75", - "IPv6": "2a00:dd80:3f:100::97e", - "CanPort80": true - }, - { - "Name": "23b", - "RegionID": 23, - "HostName": "derp23b.tailscale.com", - "IPv4": "185.34.3.232", - "IPv6": "2a00:dd80:3f:100::76f", - "CanPort80": true - } - ] - }, - "24": { - "RegionID": 24, - "RegionCode": "hnl", - "RegionName": "Honolulu", - "Latitude": 21.306944, - "Longitude": -157.858333, - "Nodes": [ - { - "Name": "24c", - "RegionID": 24, - "HostName": "derp24c.tailscale.com", - "IPv4": "208.83.233.233", - "IPv6": "2001:19f0:c000:c591:5400:04ff:fe26:2c5f", - "CanPort80": true - }, - { - "Name": "24d", - "RegionID": 24, - "HostName": "derp24d.tailscale.com", - "IPv4": "208.72.155.133", - "IPv6": "2001:19f0:c000:c564:5400:04ff:fe26:2ba8", - "CanPort80": true - }, - { - "Name": "24b", - "RegionID": 24, - "HostName": "derp24b.tailscale.com", - "IPv4": "208.83.234.151", - "IPv6": "2001:19f0:c000:c586:5400:04ff:fe26:2ba6", - "CanPort80": true - } - ] - }, - "25": { - "RegionID": 25, - "RegionCode": "nai", - "RegionName": "Nairobi", - "Latitude": -1.286389, - "Longitude": 36.817222, - "Nodes": [ - { - "Name": "25c", - "RegionID": 25, - "HostName": "derp25c.tailscale.com", - "IPv4": "102.67.167.37", - "IPv6": "2c0f:edb0:2000:1::2c7", - "CanPort80": true - }, - { - "Name": "25d", - "RegionID": 25, - "HostName": "derp25d.tailscale.com", - "IPv4": "102.67.167.188", - "IPv6": "2c0f:edb0:2000:1::188", - "CanPort80": true - }, - { - "Name": "25b", - "RegionID": 25, - "HostName": "derp25b.tailscale.com", - "IPv4": "102.67.167.245", - "IPv6": "2c0f:edb0:2000:1::2e9", - "CanPort80": true - } - ] - }, - "26": { - "RegionID": 26, - "RegionCode": "nue", - "RegionName": "Nuremberg", - "Latitude": 49.453889, - "Longitude": 11.0775, - "Nodes": [ - { - "Name": "26c", - "RegionID": 26, - "HostName": "derp26c.tailscale.com", - "IPv4": "49.12.193.137", - "IPv6": "2a01:4f8:1c1c:5c70::1", - "CanPort80": true - }, - { - "Name": "26d", - "RegionID": 26, - "HostName": "derp26d.tailscale.com", - "IPv4": "49.13.204.141", - "IPv6": "2a01:4f8:1c0c:7d06::1", - "CanPort80": true - }, - { - "Name": "26b", - "RegionID": 26, - "HostName": "derp26b.tailscale.com", - "IPv4": "167.235.72.200", - "IPv6": "2a01:4f8:1c1c:47b6::1", - "CanPort80": true - } - ] - }, - "27": { - "RegionID": 27, - "RegionCode": "iad", - "RegionName": "Ashburn", - "Latitude": 39.03, - "Longitude": -77.471111, - "Nodes": [ - { - "Name": "27d", - "RegionID": 27, - "HostName": "derp27d.tailscale.com", - "IPv4": "178.156.152.106", - "IPv6": "2a01:4ff:f0:3c8e::1", - "CanPort80": true - }, - { - "Name": "27c", - "RegionID": 27, - "HostName": "derp27c.tailscale.com", - "IPv4": "178.156.152.91", - "IPv6": "2a01:4ff:f0:3913::1", - "CanPort80": true - }, - { - "Name": "27e", - "RegionID": 27, - "HostName": "derp27e.tailscale.com", - "IPv4": "178.156.134.232", - "IPv6": "2a01:4ff:f0:28d4::1", - "CanPort80": true - }, - { - "Name": "27b", - "RegionID": 27, - "HostName": "derp27b.tailscale.com", - "IPv4": "5.161.218.233", - "IPv6": "2a01:4ff:f0:3db9::1", - "CanPort80": true - } - ] - }, - "28": { - "RegionID": 28, - "RegionCode": "hel", - "RegionName": "Helsinki", - "Latitude": 60.170833, - "Longitude": 24.9375, - "Nodes": [ - { - "Name": "28c", - "RegionID": 28, - "HostName": "derp28c.tailscale.com", - "IPv4": "95.217.2.165", - "IPv6": "2a01:4f9:c012:cd74::1", - "CanPort80": true - }, - { - "Name": "28d", - "RegionID": 28, - "HostName": "derp28d.tailscale.com", - "IPv4": "157.180.28.32", - "IPv6": "2a01:4f9:c012:2e5b::1", - "CanPort80": true - }, - { - "Name": "28b", - "RegionID": 28, - "HostName": "derp28b.tailscale.com", - "IPv4": "65.109.143.62", - "IPv6": "2a01:4f9:c012:d55c::1", - "CanPort80": true - } - ] - }, - "3": { - "RegionID": 3, - "RegionCode": "sin", - "RegionName": "Singapore", - "Latitude": 1.3521, - "Longitude": 103.8198, - "Nodes": [ - { - "Name": "3g", - "RegionID": 3, - "HostName": "derp3g.tailscale.com", - "IPv4": "172.237.72.79", - "IPv6": "2600:3c15::2000:adff:fe08:6fab", - "CanPort80": true - }, - { - "Name": "3f", - "RegionID": 3, - "HostName": "derp3f.tailscale.com", - "IPv4": "172.237.72.8", - "IPv6": "2600:3c15::2000:53ff:fe48:a668", - "CanPort80": true - }, - { - "Name": "3h", - "RegionID": 3, - "HostName": "derp3h.tailscale.com", - "IPv4": "172.237.66.30", - "IPv6": "2600:3c15::2000:3dff:fe44:50aa", - "CanPort80": true - }, - { - "Name": "3e", - "RegionID": 3, - "HostName": "derp3e.tailscale.com", - "IPv4": "172.237.72.43", - "IPv6": "2600:3c15::2000:6cff:fee4:d799", - "CanPort80": true - } - ] - }, - "4": { - "RegionID": 4, - "RegionCode": "fra", - "RegionName": "Frankfurt", - "Latitude": 50.1109, - "Longitude": 8.6821, - "Nodes": [ - { - "Name": "4h", - "RegionID": 4, - "HostName": "derp4h.tailscale.com", - "IPv4": "185.40.234.77", - "IPv6": "2a00:dd80:20::bcf", - "CanPort80": true - }, - { - "Name": "4g", - "RegionID": 4, - "HostName": "derp4g.tailscale.com", - "IPv4": "185.40.234.113", - "IPv6": "2a00:dd80:20::8f", - "CanPort80": true - }, - { - "Name": "4i", - "RegionID": 4, - "HostName": "derp4i.tailscale.com", - "IPv4": "185.40.234.53", - "IPv6": "2a00:dd80:20::8a6", - "CanPort80": true - }, - { - "Name": "4f", - "RegionID": 4, - "HostName": "derp4f.tailscale.com", - "IPv4": "185.40.234.219", - "IPv6": "2a00:dd80:20::a25", - "CanPort80": true - } - ] - }, - "5": { - "RegionID": 5, - "RegionCode": "syd", - "RegionName": "Sydney", - "Latitude": -33.867778, - "Longitude": 151.21, - "Nodes": [ - { - "Name": "5f", - "RegionID": 5, - "HostName": "derp5f.tailscale.com", - "IPv4": "172.105.166.103", - "IPv6": "2400:8907::2000:ccff:fe1f:80da", - "CanPort80": true - }, - { - "Name": "5g", - "RegionID": 5, - "HostName": "derp5g.tailscale.com", - "IPv4": "172.105.169.57", - "IPv6": "2400:8907::2000:2fff:fea7:57f4", - "CanPort80": true - }, - { - "Name": "5e", - "RegionID": 5, - "HostName": "derp5e.tailscale.com", - "IPv4": "172.105.179.230", - "IPv6": "2400:8907::2000:ceff:fe8d:4f4e", - "CanPort80": true - } - ] - }, - "6": { - "RegionID": 6, - "RegionCode": "blr", - "RegionName": "Bengaluru", - "Latitude": 12.9716, - "Longitude": 77.5946, - "Nodes": [ - { - "Name": "6a", - "RegionID": 6, - "HostName": "derp6.tailscale.com", - "IPv4": "68.183.90.120", - "IPv6": "2400:6180:100:d0::982:d001", - "CanPort80": true - } - ] - }, - "7": { - "RegionID": 7, - "RegionCode": "tok", - "RegionName": "Tokyo", - "Latitude": 35.6764, - "Longitude": 139.65, - "Nodes": [ - { - "Name": "7g", - "RegionID": 7, - "HostName": "derp7g.tailscale.com", - "IPv4": "172.238.6.179", - "IPv6": "2600:3c18::2000:3fff:fe80:3ebd", - "CanPort80": true - }, - { - "Name": "7f", - "RegionID": 7, - "HostName": "derp7f.tailscale.com", - "IPv4": "172.238.6.34", - "IPv6": "2600:3c18::2000:acff:fe8e:3ed5", - "CanPort80": true - }, - { - "Name": "7h", - "RegionID": 7, - "HostName": "derp7h.tailscale.com", - "IPv4": "172.237.28.183", - "IPv6": "2600:3c18::2000:b1ff:fea9:4560", - "CanPort80": true - }, - { - "Name": "7e", - "RegionID": 7, - "HostName": "derp7e.tailscale.com", - "IPv4": "172.238.6.180", - "IPv6": "2600:3c18::2000:60ff:fe0f:6e83", - "STUNOnly": true, - "CanPort80": true - } - ] - }, - "8": { - "RegionID": 8, - "RegionCode": "lhr", - "RegionName": "London", - "Latitude": 51.5072, - "Longitude": 0.1276, - "Nodes": [ - { - "Name": "8f", - "RegionID": 8, - "HostName": "derp8f.tailscale.com", - "IPv4": "176.58.88.183", - "IPv6": "2a00:dd80:3a::dfa", - "CanPort80": true - }, - { - "Name": "8g", - "RegionID": 8, - "HostName": "derp8g.tailscale.com", - "IPv4": "176.58.92.254", - "IPv6": "2a00:dd80:3a::ed", - "CanPort80": true - }, - { - "Name": "8e", - "RegionID": 8, - "HostName": "derp8e.tailscale.com", - "IPv4": "176.58.92.144", - "IPv6": "2a00:dd80:3a::b33", - "CanPort80": true - } - ] - }, - "9": { - "RegionID": 9, - "RegionCode": "dfw", - "RegionName": "Dallas", - "Latitude": 32.779167, - "Longitude": -96.808889, - "Nodes": [ - { - "Name": "9e", - "RegionID": 9, - "HostName": "derp9e.tailscale.com", - "IPv4": "192.73.248.83", - "IPv6": "2607:f740:100::359", - "CanPort80": true - }, - { - "Name": "9f", - "RegionID": 9, - "HostName": "derp9f.tailscale.com", - "IPv4": "209.177.156.197", - "IPv6": "2607:f740:100::cad", - "CanPort80": true - }, - { - "Name": "9d", - "RegionID": 9, - "HostName": "derp9d.tailscale.com", - "IPv4": "209.177.156.94", - "IPv6": "2607:f740:100::c05", - "CanPort80": true - } - ] - } - } - }, - "DisplayMessages": null, - "TKAEnabled": false, - "TKAHead": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", - "Domain": "kratail2tid@passkey", - "DomainAuditLogID": "", - "UserProfiles": { - "7489538288452506": { - "ID": 7489538288452506, - "LoginName": "subnet-router.tail78f774.ts.net", - "DisplayName": "subnet-router" - } - } + "PacketFilterRules": 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.124.195.93": { - "peer_name": "exit-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-client/tailscaled.sock whois --json 100.124.195.93", - "response": null - }, - "100.116.18.24": { - "peer_name": "exit-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-client/tailscaled.sock whois --json 100.116.18.24", - "response": null - }, - "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.107.162.14": { - "peer_name": "group-a-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-client/tailscaled.sock whois --json 100.107.162.14", - "response": null - }, - "100.77.135.18": { - "peer_name": "group-b-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-client/tailscaled.sock whois --json 100.77.135.18", - "response": null - }, - "100.105.127.107": { - "peer_name": "multi-exit-router", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-client/tailscaled.sock whois --json 100.105.127.107", - "response": null - }, - "100.109.43.124": { - "peer_name": "router-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-client/tailscaled.sock whois --json 100.109.43.124", - "response": null - }, - "100.65.172.123": { - "peer_name": "router-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-client/tailscaled.sock whois --json 100.65.172.123", - "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 - } - }, "netmap": { - "SelfNode": { - "ID": 4031348162889210, - "StableID": "nf7BTTgoUY11CNTRL", - "Name": "tagged-client.tail78f774.ts.net.", - "User": 4031348162889210, - "Key": "nodekey:3011e53353e49142ea56ae11f81e0dceae0d667093d04ee086dcb1e9c5d3c844", - "DiscoKey": "discokey:64af337a7e8b61dce500da3b8f7d0a95fc6fe0e57c2f9e57b9b484a9b4acbe1e", - "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:47143", "10.65.0.27:47143", "172.17.0.1:47143"], - "Hostinfo": { - "Hostname": "tagged-client", - "RequestTags": ["tag:client"], - "Services": [ - { "Proto": "peerapi4", "Port": 41378 }, - { "Proto": "peerapi6", "Port": 41378 }, - { "Proto": "peerapi-dns-proxy", "Port": 1 } - ] - }, - "Created": "2026-02-23T00:13:11.017324028Z", - "Tags": ["tag:client"], - "MachineAuthorized": true, - "CapMap": { - "https://tailscale.com/cap/file-sharing": null, - "https://tailscale.com/cap/is-owner": null, - "https://tailscale.com/cap/ssh": null, - "https://tailscale.com/cap/tailnet-lock": null, - "probe-udp-lifetime": null, - "ssh-behavior-v1": null, - "ssh-env-vars": null, - "store-appc-routes": null, - "tailnet-display-name": ["kratail2tid@passkey"] - }, - "ComputedName": "tagged-client", - "ComputedNameWithHost": "tagged-client" - }, - "AllCaps": [ - "https://tailscale.com/cap/is-owner", - "store-appc-routes", - "https://tailscale.com/cap/file-sharing", - "ssh-env-vars", - "tailnet-display-name", - "https://tailscale.com/cap/ssh", - "probe-udp-lifetime", - "ssh-behavior-v1", - "https://tailscale.com/cap/tailnet-lock" - ], - "NodeKey": "nodekey:3011e53353e49142ea56ae11f81e0dceae0d667093d04ee086dcb1e9c5d3c844", - "MachineKey": "mkey:92af46ce21e67878315fe620545c207854ab6cec2d03adc106c50f64f9692711", "Peers": [], - "DNS": { - "Routes": { - "tail78f774.ts.net.": null, - "ts.net.": [{ "Addr": "199.247.155.53" }, { "Addr": "2620:111:8007::53" }] - }, - "Domains": ["tail78f774.ts.net"], - "Proxied": true, - "ExitNodeFilteredSet": [".ts.net", ".tailscale.net"] - }, - "PacketFilter": [], - "PacketFilterRules": null, - "SSHPolicy": { "rules": [] }, - "CollectServices": false, - "DERPMap": { - "Regions": { - "1": { - "RegionID": 1, - "RegionCode": "nyc", - "RegionName": "New York City", - "Latitude": 40.7128, - "Longitude": -74.006, - "Nodes": [ - { - "Name": "1h", - "RegionID": 1, - "HostName": "derp1h.tailscale.com", - "IPv4": "199.38.181.93", - "IPv6": "2607:f740:f::afd", - "CanPort80": true - }, - { - "Name": "1g", - "RegionID": 1, - "HostName": "derp1g.tailscale.com", - "IPv4": "209.177.145.120", - "IPv6": "2607:f740:f::3eb", - "CanPort80": true - }, - { - "Name": "1i", - "RegionID": 1, - "HostName": "derp1i.tailscale.com", - "IPv4": "199.38.181.103", - "IPv6": "2607:f740:f::e19", - "CanPort80": true - }, - { - "Name": "1f", - "RegionID": 1, - "HostName": "derp1f.tailscale.com", - "IPv4": "199.38.181.104", - "IPv6": "2607:f740:f::bc", - "CanPort80": true - } - ] - }, - "10": { - "RegionID": 10, - "RegionCode": "sea", - "RegionName": "Seattle", - "Latitude": 47.609722, - "Longitude": -122.333056, - "Nodes": [ - { - "Name": "10c", - "RegionID": 10, - "HostName": "derp10c.tailscale.com", - "IPv4": "192.73.240.121", - "IPv6": "2607:f740:14::40c", - "CanPort80": true - }, - { - "Name": "10d", - "RegionID": 10, - "HostName": "derp10d.tailscale.com", - "IPv4": "192.73.240.132", - "IPv6": "2607:f740:14::500", - "CanPort80": true - }, - { - "Name": "10b", - "RegionID": 10, - "HostName": "derp10b.tailscale.com", - "IPv4": "192.73.240.161", - "IPv6": "2607:f740:14::61c", - "CanPort80": true - } - ] - }, - "11": { - "RegionID": 11, - "RegionCode": "sao", - "RegionName": "São Paulo", - "Latitude": -23.55, - "Longitude": -46.633333, - "Nodes": [ - { - "Name": "11f", - "RegionID": 11, - "HostName": "derp11f.tailscale.com", - "IPv4": "172.237.61.197", - "IPv6": "2600:3c0d::2000:3bff:fe44:6166", - "CanPort80": true - }, - { - "Name": "11g", - "RegionID": 11, - "HostName": "derp11g.tailscale.com", - "IPv4": "172.237.61.190", - "IPv6": "2600:3c0d::2000:62ff:febe:2e67", - "CanPort80": true - }, - { - "Name": "11e", - "RegionID": 11, - "HostName": "derp11e.tailscale.com", - "IPv4": "172.237.61.194", - "IPv6": "2600:3c0d::2000:d2ff:fe43:1790", - "CanPort80": true - } - ] - }, - "12": { - "RegionID": 12, - "RegionCode": "ord", - "RegionName": "Chicago", - "Latitude": 41.881944, - "Longitude": -87.627778, - "Nodes": [ - { - "Name": "12e", - "RegionID": 12, - "HostName": "derp12e.tailscale.com", - "IPv4": "209.177.158.15", - "IPv6": "2607:f740:e::b17", - "CanPort80": true - }, - { - "Name": "12f", - "RegionID": 12, - "HostName": "derp12f.tailscale.com", - "IPv4": "199.38.182.118", - "IPv6": "2607:f740:e::4c8", - "CanPort80": true - }, - { - "Name": "12d", - "RegionID": 12, - "HostName": "derp12d.tailscale.com", - "IPv4": "209.177.158.246", - "IPv6": "2607:f740:e::811", - "CanPort80": true - } - ] - }, - "13": { - "RegionID": 13, - "RegionCode": "den", - "RegionName": "Denver", - "Latitude": 39.7392, - "Longitude": -104.9849, - "Nodes": [ - { - "Name": "13c", - "RegionID": 13, - "HostName": "derp13c.tailscale.com", - "IPv4": "192.73.242.28", - "IPv6": "2607:f740:16::5c", - "CanPort80": true - }, - { - "Name": "13d", - "RegionID": 13, - "HostName": "derp13d.tailscale.com", - "IPv4": "192.73.242.204", - "IPv6": "2607:f740:16::c23", - "CanPort80": true - }, - { - "Name": "13b", - "RegionID": 13, - "HostName": "derp13b.tailscale.com", - "IPv4": "192.73.242.187", - "IPv6": "2607:f740:16::640", - "CanPort80": true - } - ] - }, - "14": { - "RegionID": 14, - "RegionCode": "ams", - "RegionName": "Amsterdam", - "Latitude": 52.372778, - "Longitude": 4.893611, - "Nodes": [ - { - "Name": "14c", - "RegionID": 14, - "HostName": "derp14c.tailscale.com", - "IPv4": "176.58.93.147", - "IPv6": "2a00:dd80:3c::b09", - "CanPort80": true - }, - { - "Name": "14d", - "RegionID": 14, - "HostName": "derp14d.tailscale.com", - "IPv4": "176.58.93.154", - "IPv6": "2a00:dd80:3c::3d5", - "CanPort80": true - }, - { - "Name": "14b", - "RegionID": 14, - "HostName": "derp14b.tailscale.com", - "IPv4": "176.58.93.248", - "IPv6": "2a00:dd80:3c::807", - "CanPort80": true - } - ] - }, - "15": { - "RegionID": 15, - "RegionCode": "jnb", - "RegionName": "Johannesburg", - "Latitude": -26.204444, - "Longitude": 28.045556, - "Nodes": [ - { - "Name": "15c", - "RegionID": 15, - "HostName": "derp15c.tailscale.com", - "IPv4": "102.67.165.185", - "IPv6": "2c0f:edb0:0:10::b59", - "CanPort80": true - }, - { - "Name": "15d", - "RegionID": 15, - "HostName": "derp15d.tailscale.com", - "IPv4": "102.67.165.36", - "IPv6": "2c0f:edb0:0:10::599", - "CanPort80": true - }, - { - "Name": "15b", - "RegionID": 15, - "HostName": "derp15b.tailscale.com", - "IPv4": "102.67.165.90", - "IPv6": "2c0f:edb0:0:10::963", - "CanPort80": true - } - ] - }, - "16": { - "RegionID": 16, - "RegionCode": "mia", - "RegionName": "Miami", - "Latitude": 25.78, - "Longitude": -80.21, - "Nodes": [ - { - "Name": "16c", - "RegionID": 16, - "HostName": "derp16c.tailscale.com", - "IPv4": "192.73.243.229", - "IPv6": "2607:f740:17::4e4", - "CanPort80": true - }, - { - "Name": "16d", - "RegionID": 16, - "HostName": "derp16d.tailscale.com", - "IPv4": "192.73.243.141", - "IPv6": "2607:f740:17::475", - "CanPort80": true - }, - { - "Name": "16b", - "RegionID": 16, - "HostName": "derp16b.tailscale.com", - "IPv4": "192.73.243.135", - "IPv6": "2607:f740:17::476", - "CanPort80": true - } - ] - }, - "17": { - "RegionID": 17, - "RegionCode": "lax", - "RegionName": "Los Angeles", - "Latitude": 34.05, - "Longitude": -118.25, - "Nodes": [ - { - "Name": "17c", - "RegionID": 17, - "HostName": "derp17c.tailscale.com", - "IPv4": "208.111.40.12", - "IPv6": "2607:f740:c::10", - "CanPort80": true - }, - { - "Name": "17d", - "RegionID": 17, - "HostName": "derp17d.tailscale.com", - "IPv4": "208.111.40.216", - "IPv6": "2607:f740:c::e1b", - "CanPort80": true - }, - { - "Name": "17b", - "RegionID": 17, - "HostName": "derp17b.tailscale.com", - "IPv4": "192.73.244.245", - "IPv6": "2607:f740:c::646", - "CanPort80": true - } - ] - }, - "18": { - "RegionID": 18, - "RegionCode": "par", - "RegionName": "Paris", - "Latitude": 48.856667, - "Longitude": 2.352222, - "Nodes": [ - { - "Name": "18c", - "RegionID": 18, - "HostName": "derp18c.tailscale.com", - "IPv4": "176.58.90.207", - "IPv6": "2a00:dd80:3e::c19", - "CanPort80": true - }, - { - "Name": "18d", - "RegionID": 18, - "HostName": "derp18d.tailscale.com", - "IPv4": "176.58.90.104", - "IPv6": "2a00:dd80:3e::f2e", - "CanPort80": true - }, - { - "Name": "18b", - "RegionID": 18, - "HostName": "derp18b.tailscale.com", - "IPv4": "176.58.90.147", - "IPv6": "2a00:dd80:3e::363", - "CanPort80": true - } - ] - }, - "19": { - "RegionID": 19, - "RegionCode": "mad", - "RegionName": "Madrid", - "Latitude": 40.416944, - "Longitude": -3.703333, - "Nodes": [ - { - "Name": "19c", - "RegionID": 19, - "HostName": "derp19c.tailscale.com", - "IPv4": "45.159.97.61", - "IPv6": "2a00:dd80:14:10::20", - "CanPort80": true - }, - { - "Name": "19d", - "RegionID": 19, - "HostName": "derp19d.tailscale.com", - "IPv4": "45.159.97.233", - "IPv6": "2a00:dd80:14:10::34a", - "CanPort80": true - }, - { - "Name": "19b", - "RegionID": 19, - "HostName": "derp19b.tailscale.com", - "IPv4": "45.159.97.144", - "IPv6": "2a00:dd80:14:10::335", - "CanPort80": true - } - ] - }, - "2": { - "RegionID": 2, - "RegionCode": "sfo", - "RegionName": "San Francisco", - "Latitude": 37.7775, - "Longitude": -122.416389, - "Nodes": [ - { - "Name": "2e", - "RegionID": 2, - "HostName": "derp2e.tailscale.com", - "IPv4": "192.73.252.134", - "IPv6": "2607:f740:0:3f::44c", - "CanPort80": true - }, - { - "Name": "2f", - "RegionID": 2, - "HostName": "derp2f.tailscale.com", - "IPv4": "208.111.34.178", - "IPv6": "2607:f740:0:3f::f4", - "CanPort80": true - }, - { - "Name": "2d", - "RegionID": 2, - "HostName": "derp2d.tailscale.com", - "IPv4": "192.73.252.65", - "IPv6": "2607:f740:0:3f::287", - "CanPort80": true - } - ] - }, - "20": { - "RegionID": 20, - "RegionCode": "hkg", - "RegionName": "Hong Kong", - "Latitude": 22.3193, - "Longitude": 114.1694, - "Nodes": [ - { - "Name": "20c", - "RegionID": 20, - "HostName": "derp20c.tailscale.com", - "IPv4": "205.147.105.30", - "IPv6": "2403:2500:8000:1::5fb", - "CanPort80": true - }, - { - "Name": "20d", - "RegionID": 20, - "HostName": "derp20d.tailscale.com", - "IPv4": "205.147.105.78", - "IPv6": "2403:2500:8000:1::e9a", - "CanPort80": true - }, - { - "Name": "20b", - "RegionID": 20, - "HostName": "derp20b.tailscale.com", - "IPv4": "103.6.84.152", - "IPv6": "2403:2500:8000:1::ef6", - "CanPort80": true - } - ] - }, - "21": { - "RegionID": 21, - "RegionCode": "tor", - "RegionName": "Toronto", - "Latitude": 43.741667, - "Longitude": -79.373333, - "Nodes": [ - { - "Name": "21c", - "RegionID": 21, - "HostName": "derp21c.tailscale.com", - "IPv4": "162.248.221.215", - "IPv6": "2607:f740:50::f10", - "CanPort80": true - }, - { - "Name": "21d", - "RegionID": 21, - "HostName": "derp21d.tailscale.com", - "IPv4": "162.248.221.248", - "IPv6": "2607:f740:50::ca4", - "CanPort80": true - }, - { - "Name": "21b", - "RegionID": 21, - "HostName": "derp21b.tailscale.com", - "IPv4": "162.248.221.199", - "IPv6": "2607:f740:50::1d1", - "CanPort80": true - } - ] - }, - "22": { - "RegionID": 22, - "RegionCode": "waw", - "RegionName": "Warsaw", - "Latitude": 52.23, - "Longitude": 21.011111, - "Nodes": [ - { - "Name": "22c", - "RegionID": 22, - "HostName": "derp22c.tailscale.com", - "IPv4": "45.159.98.253", - "IPv6": "2a00:dd80:40:100::3f", - "CanPort80": true - }, - { - "Name": "22d", - "RegionID": 22, - "HostName": "derp22d.tailscale.com", - "IPv4": "45.159.98.145", - "IPv6": "2a00:dd80:40:100::211", - "CanPort80": true - }, - { - "Name": "22b", - "RegionID": 22, - "HostName": "derp22b.tailscale.com", - "IPv4": "45.159.98.196", - "IPv6": "2a00:dd80:40:100::316", - "CanPort80": true - } - ] - }, - "23": { - "RegionID": 23, - "RegionCode": "dbi", - "RegionName": "Dubai", - "Latitude": 25.263056, - "Longitude": 55.297222, - "Nodes": [ - { - "Name": "23c", - "RegionID": 23, - "HostName": "derp23c.tailscale.com", - "IPv4": "185.34.3.207", - "IPv6": "2a00:dd80:3f:100::a50", - "CanPort80": true - }, - { - "Name": "23d", - "RegionID": 23, - "HostName": "derp23d.tailscale.com", - "IPv4": "185.34.3.75", - "IPv6": "2a00:dd80:3f:100::97e", - "CanPort80": true - }, - { - "Name": "23b", - "RegionID": 23, - "HostName": "derp23b.tailscale.com", - "IPv4": "185.34.3.232", - "IPv6": "2a00:dd80:3f:100::76f", - "CanPort80": true - } - ] - }, - "24": { - "RegionID": 24, - "RegionCode": "hnl", - "RegionName": "Honolulu", - "Latitude": 21.306944, - "Longitude": -157.858333, - "Nodes": [ - { - "Name": "24c", - "RegionID": 24, - "HostName": "derp24c.tailscale.com", - "IPv4": "208.83.233.233", - "IPv6": "2001:19f0:c000:c591:5400:04ff:fe26:2c5f", - "CanPort80": true - }, - { - "Name": "24d", - "RegionID": 24, - "HostName": "derp24d.tailscale.com", - "IPv4": "208.72.155.133", - "IPv6": "2001:19f0:c000:c564:5400:04ff:fe26:2ba8", - "CanPort80": true - }, - { - "Name": "24b", - "RegionID": 24, - "HostName": "derp24b.tailscale.com", - "IPv4": "208.83.234.151", - "IPv6": "2001:19f0:c000:c586:5400:04ff:fe26:2ba6", - "CanPort80": true - } - ] - }, - "25": { - "RegionID": 25, - "RegionCode": "nai", - "RegionName": "Nairobi", - "Latitude": -1.286389, - "Longitude": 36.817222, - "Nodes": [ - { - "Name": "25c", - "RegionID": 25, - "HostName": "derp25c.tailscale.com", - "IPv4": "102.67.167.37", - "IPv6": "2c0f:edb0:2000:1::2c7", - "CanPort80": true - }, - { - "Name": "25d", - "RegionID": 25, - "HostName": "derp25d.tailscale.com", - "IPv4": "102.67.167.188", - "IPv6": "2c0f:edb0:2000:1::188", - "CanPort80": true - }, - { - "Name": "25b", - "RegionID": 25, - "HostName": "derp25b.tailscale.com", - "IPv4": "102.67.167.245", - "IPv6": "2c0f:edb0:2000:1::2e9", - "CanPort80": true - } - ] - }, - "26": { - "RegionID": 26, - "RegionCode": "nue", - "RegionName": "Nuremberg", - "Latitude": 49.453889, - "Longitude": 11.0775, - "Nodes": [ - { - "Name": "26c", - "RegionID": 26, - "HostName": "derp26c.tailscale.com", - "IPv4": "49.12.193.137", - "IPv6": "2a01:4f8:1c1c:5c70::1", - "CanPort80": true - }, - { - "Name": "26d", - "RegionID": 26, - "HostName": "derp26d.tailscale.com", - "IPv4": "49.13.204.141", - "IPv6": "2a01:4f8:1c0c:7d06::1", - "CanPort80": true - }, - { - "Name": "26b", - "RegionID": 26, - "HostName": "derp26b.tailscale.com", - "IPv4": "167.235.72.200", - "IPv6": "2a01:4f8:1c1c:47b6::1", - "CanPort80": true - } - ] - }, - "27": { - "RegionID": 27, - "RegionCode": "iad", - "RegionName": "Ashburn", - "Latitude": 39.03, - "Longitude": -77.471111, - "Nodes": [ - { - "Name": "27d", - "RegionID": 27, - "HostName": "derp27d.tailscale.com", - "IPv4": "178.156.152.106", - "IPv6": "2a01:4ff:f0:3c8e::1", - "CanPort80": true - }, - { - "Name": "27c", - "RegionID": 27, - "HostName": "derp27c.tailscale.com", - "IPv4": "178.156.152.91", - "IPv6": "2a01:4ff:f0:3913::1", - "CanPort80": true - }, - { - "Name": "27e", - "RegionID": 27, - "HostName": "derp27e.tailscale.com", - "IPv4": "178.156.134.232", - "IPv6": "2a01:4ff:f0:28d4::1", - "CanPort80": true - }, - { - "Name": "27b", - "RegionID": 27, - "HostName": "derp27b.tailscale.com", - "IPv4": "5.161.218.233", - "IPv6": "2a01:4ff:f0:3db9::1", - "CanPort80": true - } - ] - }, - "28": { - "RegionID": 28, - "RegionCode": "hel", - "RegionName": "Helsinki", - "Latitude": 60.170833, - "Longitude": 24.9375, - "Nodes": [ - { - "Name": "28c", - "RegionID": 28, - "HostName": "derp28c.tailscale.com", - "IPv4": "95.217.2.165", - "IPv6": "2a01:4f9:c012:cd74::1", - "CanPort80": true - }, - { - "Name": "28d", - "RegionID": 28, - "HostName": "derp28d.tailscale.com", - "IPv4": "157.180.28.32", - "IPv6": "2a01:4f9:c012:2e5b::1", - "CanPort80": true - }, - { - "Name": "28b", - "RegionID": 28, - "HostName": "derp28b.tailscale.com", - "IPv4": "65.109.143.62", - "IPv6": "2a01:4f9:c012:d55c::1", - "CanPort80": true - } - ] - }, - "3": { - "RegionID": 3, - "RegionCode": "sin", - "RegionName": "Singapore", - "Latitude": 1.3521, - "Longitude": 103.8198, - "Nodes": [ - { - "Name": "3g", - "RegionID": 3, - "HostName": "derp3g.tailscale.com", - "IPv4": "172.237.72.79", - "IPv6": "2600:3c15::2000:adff:fe08:6fab", - "CanPort80": true - }, - { - "Name": "3f", - "RegionID": 3, - "HostName": "derp3f.tailscale.com", - "IPv4": "172.237.72.8", - "IPv6": "2600:3c15::2000:53ff:fe48:a668", - "CanPort80": true - }, - { - "Name": "3h", - "RegionID": 3, - "HostName": "derp3h.tailscale.com", - "IPv4": "172.237.66.30", - "IPv6": "2600:3c15::2000:3dff:fe44:50aa", - "CanPort80": true - }, - { - "Name": "3e", - "RegionID": 3, - "HostName": "derp3e.tailscale.com", - "IPv4": "172.237.72.43", - "IPv6": "2600:3c15::2000:6cff:fee4:d799", - "CanPort80": true - } - ] - }, - "4": { - "RegionID": 4, - "RegionCode": "fra", - "RegionName": "Frankfurt", - "Latitude": 50.1109, - "Longitude": 8.6821, - "Nodes": [ - { - "Name": "4h", - "RegionID": 4, - "HostName": "derp4h.tailscale.com", - "IPv4": "185.40.234.77", - "IPv6": "2a00:dd80:20::bcf", - "CanPort80": true - }, - { - "Name": "4g", - "RegionID": 4, - "HostName": "derp4g.tailscale.com", - "IPv4": "185.40.234.113", - "IPv6": "2a00:dd80:20::8f", - "CanPort80": true - }, - { - "Name": "4i", - "RegionID": 4, - "HostName": "derp4i.tailscale.com", - "IPv4": "185.40.234.53", - "IPv6": "2a00:dd80:20::8a6", - "CanPort80": true - }, - { - "Name": "4f", - "RegionID": 4, - "HostName": "derp4f.tailscale.com", - "IPv4": "185.40.234.219", - "IPv6": "2a00:dd80:20::a25", - "CanPort80": true - } - ] - }, - "5": { - "RegionID": 5, - "RegionCode": "syd", - "RegionName": "Sydney", - "Latitude": -33.867778, - "Longitude": 151.21, - "Nodes": [ - { - "Name": "5f", - "RegionID": 5, - "HostName": "derp5f.tailscale.com", - "IPv4": "172.105.166.103", - "IPv6": "2400:8907::2000:ccff:fe1f:80da", - "CanPort80": true - }, - { - "Name": "5g", - "RegionID": 5, - "HostName": "derp5g.tailscale.com", - "IPv4": "172.105.169.57", - "IPv6": "2400:8907::2000:2fff:fea7:57f4", - "CanPort80": true - }, - { - "Name": "5e", - "RegionID": 5, - "HostName": "derp5e.tailscale.com", - "IPv4": "172.105.179.230", - "IPv6": "2400:8907::2000:ceff:fe8d:4f4e", - "CanPort80": true - } - ] - }, - "6": { - "RegionID": 6, - "RegionCode": "blr", - "RegionName": "Bengaluru", - "Latitude": 12.9716, - "Longitude": 77.5946, - "Nodes": [ - { - "Name": "6a", - "RegionID": 6, - "HostName": "derp6.tailscale.com", - "IPv4": "68.183.90.120", - "IPv6": "2400:6180:100:d0::982:d001", - "CanPort80": true - } - ] - }, - "7": { - "RegionID": 7, - "RegionCode": "tok", - "RegionName": "Tokyo", - "Latitude": 35.6764, - "Longitude": 139.65, - "Nodes": [ - { - "Name": "7g", - "RegionID": 7, - "HostName": "derp7g.tailscale.com", - "IPv4": "172.238.6.179", - "IPv6": "2600:3c18::2000:3fff:fe80:3ebd", - "CanPort80": true - }, - { - "Name": "7f", - "RegionID": 7, - "HostName": "derp7f.tailscale.com", - "IPv4": "172.238.6.34", - "IPv6": "2600:3c18::2000:acff:fe8e:3ed5", - "CanPort80": true - }, - { - "Name": "7h", - "RegionID": 7, - "HostName": "derp7h.tailscale.com", - "IPv4": "172.237.28.183", - "IPv6": "2600:3c18::2000:b1ff:fea9:4560", - "CanPort80": true - }, - { - "Name": "7e", - "RegionID": 7, - "HostName": "derp7e.tailscale.com", - "IPv4": "172.238.6.180", - "IPv6": "2600:3c18::2000:60ff:fe0f:6e83", - "STUNOnly": true, - "CanPort80": true - } - ] - }, - "8": { - "RegionID": 8, - "RegionCode": "lhr", - "RegionName": "London", - "Latitude": 51.5072, - "Longitude": 0.1276, - "Nodes": [ - { - "Name": "8f", - "RegionID": 8, - "HostName": "derp8f.tailscale.com", - "IPv4": "176.58.88.183", - "IPv6": "2a00:dd80:3a::dfa", - "CanPort80": true - }, - { - "Name": "8g", - "RegionID": 8, - "HostName": "derp8g.tailscale.com", - "IPv4": "176.58.92.254", - "IPv6": "2a00:dd80:3a::ed", - "CanPort80": true - }, - { - "Name": "8e", - "RegionID": 8, - "HostName": "derp8e.tailscale.com", - "IPv4": "176.58.92.144", - "IPv6": "2a00:dd80:3a::b33", - "CanPort80": true - } - ] - }, - "9": { - "RegionID": 9, - "RegionCode": "dfw", - "RegionName": "Dallas", - "Latitude": 32.779167, - "Longitude": -96.808889, - "Nodes": [ - { - "Name": "9e", - "RegionID": 9, - "HostName": "derp9e.tailscale.com", - "IPv4": "192.73.248.83", - "IPv6": "2607:f740:100::359", - "CanPort80": true - }, - { - "Name": "9f", - "RegionID": 9, - "HostName": "derp9f.tailscale.com", - "IPv4": "209.177.156.197", - "IPv6": "2607:f740:100::cad", - "CanPort80": true - }, - { - "Name": "9d", - "RegionID": 9, - "HostName": "derp9d.tailscale.com", - "IPv4": "209.177.156.94", - "IPv6": "2607:f740:100::c05", - "CanPort80": true - } - ] - } - } - }, - "DisplayMessages": null, - "TKAEnabled": false, - "TKAHead": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", - "Domain": "kratail2tid@passkey", - "DomainAuditLogID": "", - "UserProfiles": { - "4031348162889210": { - "ID": 4031348162889210, - "LoginName": "tagged-client.tail78f774.ts.net", - "DisplayName": "tagged-client" - } - } + "PacketFilterRules": 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.124.195.93": { - "peer_name": "exit-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-prod/tailscaled.sock whois --json 100.124.195.93", - "response": null - }, - "100.116.18.24": { - "peer_name": "exit-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-prod/tailscaled.sock whois --json 100.116.18.24", - "response": null - }, - "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.107.162.14": { - "peer_name": "group-a-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-prod/tailscaled.sock whois --json 100.107.162.14", - "response": null - }, - "100.77.135.18": { - "peer_name": "group-b-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-prod/tailscaled.sock whois --json 100.77.135.18", - "response": null - }, - "100.105.127.107": { - "peer_name": "multi-exit-router", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-prod/tailscaled.sock whois --json 100.105.127.107", - "response": null - }, - "100.109.43.124": { - "peer_name": "router-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-prod/tailscaled.sock whois --json 100.109.43.124", - "response": null - }, - "100.65.172.123": { - "peer_name": "router-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-prod/tailscaled.sock whois --json 100.65.172.123", - "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 - } - }, "netmap": { - "SelfNode": { - "ID": 301794218943819, - "StableID": "neJag6dgM311CNTRL", - "Name": "tagged-prod.tail78f774.ts.net.", - "User": 301794218943819, - "Key": "nodekey:54c79503322a5d0a9701ce19d11963cfff9c05667ac06ef976af86275ba7080e", - "DiscoKey": "discokey:5e4985009b42b7c82ffb2cb5fa735a90f967f6b3f886b71268ebbeffa324556b", - "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:46164", "10.65.0.27:46164", "172.17.0.1:46164"], - "Hostinfo": { - "Hostname": "tagged-prod", - "Services": [ - { "Proto": "peerapi4", "Port": 37678 }, - { "Proto": "peerapi6", "Port": 37678 }, - { "Proto": "peerapi-dns-proxy", "Port": 1 } - ] - }, - "Created": "2026-02-20T14:03:12.89283153Z", - "Tags": ["tag:prod"], - "MachineAuthorized": true, - "CapMap": { - "https://tailscale.com/cap/file-sharing": null, - "https://tailscale.com/cap/is-owner": null, - "https://tailscale.com/cap/ssh": null, - "https://tailscale.com/cap/tailnet-lock": null, - "probe-udp-lifetime": null, - "ssh-behavior-v1": null, - "ssh-env-vars": null, - "store-appc-routes": null, - "tailnet-display-name": ["kratail2tid@passkey"] - }, - "ComputedName": "tagged-prod", - "ComputedNameWithHost": "tagged-prod" - }, - "AllCaps": [ - "https://tailscale.com/cap/ssh", - "ssh-behavior-v1", - "https://tailscale.com/cap/is-owner", - "https://tailscale.com/cap/tailnet-lock", - "ssh-env-vars", - "store-appc-routes", - "tailnet-display-name", - "probe-udp-lifetime", - "https://tailscale.com/cap/file-sharing" - ], - "NodeKey": "nodekey:54c79503322a5d0a9701ce19d11963cfff9c05667ac06ef976af86275ba7080e", - "MachineKey": "mkey:af805e02d1594ab20eaf3e2df5b379eec6453fa649344fcd564b7bae20e46a63", "Peers": [], - "DNS": { - "Routes": { - "tail78f774.ts.net.": null, - "ts.net.": [{ "Addr": "199.247.155.53" }, { "Addr": "2620:111:8007::53" }] - }, - "Domains": ["tail78f774.ts.net"], - "Proxied": true, - "ExitNodeFilteredSet": [".ts.net", ".tailscale.net"] - }, - "PacketFilter": [], - "PacketFilterRules": null, - "SSHPolicy": { "rules": [] }, - "CollectServices": false, - "DERPMap": { - "Regions": { - "1": { - "RegionID": 1, - "RegionCode": "nyc", - "RegionName": "New York City", - "Latitude": 40.7128, - "Longitude": -74.006, - "Nodes": [ - { - "Name": "1h", - "RegionID": 1, - "HostName": "derp1h.tailscale.com", - "IPv4": "199.38.181.93", - "IPv6": "2607:f740:f::afd", - "CanPort80": true - }, - { - "Name": "1g", - "RegionID": 1, - "HostName": "derp1g.tailscale.com", - "IPv4": "209.177.145.120", - "IPv6": "2607:f740:f::3eb", - "CanPort80": true - }, - { - "Name": "1i", - "RegionID": 1, - "HostName": "derp1i.tailscale.com", - "IPv4": "199.38.181.103", - "IPv6": "2607:f740:f::e19", - "CanPort80": true - }, - { - "Name": "1f", - "RegionID": 1, - "HostName": "derp1f.tailscale.com", - "IPv4": "199.38.181.104", - "IPv6": "2607:f740:f::bc", - "CanPort80": true - } - ] - }, - "10": { - "RegionID": 10, - "RegionCode": "sea", - "RegionName": "Seattle", - "Latitude": 47.609722, - "Longitude": -122.333056, - "Nodes": [ - { - "Name": "10c", - "RegionID": 10, - "HostName": "derp10c.tailscale.com", - "IPv4": "192.73.240.121", - "IPv6": "2607:f740:14::40c", - "CanPort80": true - }, - { - "Name": "10d", - "RegionID": 10, - "HostName": "derp10d.tailscale.com", - "IPv4": "192.73.240.132", - "IPv6": "2607:f740:14::500", - "CanPort80": true - }, - { - "Name": "10b", - "RegionID": 10, - "HostName": "derp10b.tailscale.com", - "IPv4": "192.73.240.161", - "IPv6": "2607:f740:14::61c", - "CanPort80": true - } - ] - }, - "11": { - "RegionID": 11, - "RegionCode": "sao", - "RegionName": "São Paulo", - "Latitude": -23.55, - "Longitude": -46.633333, - "Nodes": [ - { - "Name": "11f", - "RegionID": 11, - "HostName": "derp11f.tailscale.com", - "IPv4": "172.237.61.197", - "IPv6": "2600:3c0d::2000:3bff:fe44:6166", - "CanPort80": true - }, - { - "Name": "11g", - "RegionID": 11, - "HostName": "derp11g.tailscale.com", - "IPv4": "172.237.61.190", - "IPv6": "2600:3c0d::2000:62ff:febe:2e67", - "CanPort80": true - }, - { - "Name": "11e", - "RegionID": 11, - "HostName": "derp11e.tailscale.com", - "IPv4": "172.237.61.194", - "IPv6": "2600:3c0d::2000:d2ff:fe43:1790", - "CanPort80": true - } - ] - }, - "12": { - "RegionID": 12, - "RegionCode": "ord", - "RegionName": "Chicago", - "Latitude": 41.881944, - "Longitude": -87.627778, - "Nodes": [ - { - "Name": "12e", - "RegionID": 12, - "HostName": "derp12e.tailscale.com", - "IPv4": "209.177.158.15", - "IPv6": "2607:f740:e::b17", - "CanPort80": true - }, - { - "Name": "12f", - "RegionID": 12, - "HostName": "derp12f.tailscale.com", - "IPv4": "199.38.182.118", - "IPv6": "2607:f740:e::4c8", - "CanPort80": true - }, - { - "Name": "12d", - "RegionID": 12, - "HostName": "derp12d.tailscale.com", - "IPv4": "209.177.158.246", - "IPv6": "2607:f740:e::811", - "CanPort80": true - } - ] - }, - "13": { - "RegionID": 13, - "RegionCode": "den", - "RegionName": "Denver", - "Latitude": 39.7392, - "Longitude": -104.9849, - "Nodes": [ - { - "Name": "13c", - "RegionID": 13, - "HostName": "derp13c.tailscale.com", - "IPv4": "192.73.242.28", - "IPv6": "2607:f740:16::5c", - "CanPort80": true - }, - { - "Name": "13d", - "RegionID": 13, - "HostName": "derp13d.tailscale.com", - "IPv4": "192.73.242.204", - "IPv6": "2607:f740:16::c23", - "CanPort80": true - }, - { - "Name": "13b", - "RegionID": 13, - "HostName": "derp13b.tailscale.com", - "IPv4": "192.73.242.187", - "IPv6": "2607:f740:16::640", - "CanPort80": true - } - ] - }, - "14": { - "RegionID": 14, - "RegionCode": "ams", - "RegionName": "Amsterdam", - "Latitude": 52.372778, - "Longitude": 4.893611, - "Nodes": [ - { - "Name": "14c", - "RegionID": 14, - "HostName": "derp14c.tailscale.com", - "IPv4": "176.58.93.147", - "IPv6": "2a00:dd80:3c::b09", - "CanPort80": true - }, - { - "Name": "14d", - "RegionID": 14, - "HostName": "derp14d.tailscale.com", - "IPv4": "176.58.93.154", - "IPv6": "2a00:dd80:3c::3d5", - "CanPort80": true - }, - { - "Name": "14b", - "RegionID": 14, - "HostName": "derp14b.tailscale.com", - "IPv4": "176.58.93.248", - "IPv6": "2a00:dd80:3c::807", - "CanPort80": true - } - ] - }, - "15": { - "RegionID": 15, - "RegionCode": "jnb", - "RegionName": "Johannesburg", - "Latitude": -26.204444, - "Longitude": 28.045556, - "Nodes": [ - { - "Name": "15c", - "RegionID": 15, - "HostName": "derp15c.tailscale.com", - "IPv4": "102.67.165.185", - "IPv6": "2c0f:edb0:0:10::b59", - "CanPort80": true - }, - { - "Name": "15d", - "RegionID": 15, - "HostName": "derp15d.tailscale.com", - "IPv4": "102.67.165.36", - "IPv6": "2c0f:edb0:0:10::599", - "CanPort80": true - }, - { - "Name": "15b", - "RegionID": 15, - "HostName": "derp15b.tailscale.com", - "IPv4": "102.67.165.90", - "IPv6": "2c0f:edb0:0:10::963", - "CanPort80": true - } - ] - }, - "16": { - "RegionID": 16, - "RegionCode": "mia", - "RegionName": "Miami", - "Latitude": 25.78, - "Longitude": -80.21, - "Nodes": [ - { - "Name": "16c", - "RegionID": 16, - "HostName": "derp16c.tailscale.com", - "IPv4": "192.73.243.229", - "IPv6": "2607:f740:17::4e4", - "CanPort80": true - }, - { - "Name": "16d", - "RegionID": 16, - "HostName": "derp16d.tailscale.com", - "IPv4": "192.73.243.141", - "IPv6": "2607:f740:17::475", - "CanPort80": true - }, - { - "Name": "16b", - "RegionID": 16, - "HostName": "derp16b.tailscale.com", - "IPv4": "192.73.243.135", - "IPv6": "2607:f740:17::476", - "CanPort80": true - } - ] - }, - "17": { - "RegionID": 17, - "RegionCode": "lax", - "RegionName": "Los Angeles", - "Latitude": 34.05, - "Longitude": -118.25, - "Nodes": [ - { - "Name": "17c", - "RegionID": 17, - "HostName": "derp17c.tailscale.com", - "IPv4": "208.111.40.12", - "IPv6": "2607:f740:c::10", - "CanPort80": true - }, - { - "Name": "17d", - "RegionID": 17, - "HostName": "derp17d.tailscale.com", - "IPv4": "208.111.40.216", - "IPv6": "2607:f740:c::e1b", - "CanPort80": true - }, - { - "Name": "17b", - "RegionID": 17, - "HostName": "derp17b.tailscale.com", - "IPv4": "192.73.244.245", - "IPv6": "2607:f740:c::646", - "CanPort80": true - } - ] - }, - "18": { - "RegionID": 18, - "RegionCode": "par", - "RegionName": "Paris", - "Latitude": 48.856667, - "Longitude": 2.352222, - "Nodes": [ - { - "Name": "18c", - "RegionID": 18, - "HostName": "derp18c.tailscale.com", - "IPv4": "176.58.90.207", - "IPv6": "2a00:dd80:3e::c19", - "CanPort80": true - }, - { - "Name": "18d", - "RegionID": 18, - "HostName": "derp18d.tailscale.com", - "IPv4": "176.58.90.104", - "IPv6": "2a00:dd80:3e::f2e", - "CanPort80": true - }, - { - "Name": "18b", - "RegionID": 18, - "HostName": "derp18b.tailscale.com", - "IPv4": "176.58.90.147", - "IPv6": "2a00:dd80:3e::363", - "CanPort80": true - } - ] - }, - "19": { - "RegionID": 19, - "RegionCode": "mad", - "RegionName": "Madrid", - "Latitude": 40.416944, - "Longitude": -3.703333, - "Nodes": [ - { - "Name": "19c", - "RegionID": 19, - "HostName": "derp19c.tailscale.com", - "IPv4": "45.159.97.61", - "IPv6": "2a00:dd80:14:10::20", - "CanPort80": true - }, - { - "Name": "19d", - "RegionID": 19, - "HostName": "derp19d.tailscale.com", - "IPv4": "45.159.97.233", - "IPv6": "2a00:dd80:14:10::34a", - "CanPort80": true - }, - { - "Name": "19b", - "RegionID": 19, - "HostName": "derp19b.tailscale.com", - "IPv4": "45.159.97.144", - "IPv6": "2a00:dd80:14:10::335", - "CanPort80": true - } - ] - }, - "2": { - "RegionID": 2, - "RegionCode": "sfo", - "RegionName": "San Francisco", - "Latitude": 37.7775, - "Longitude": -122.416389, - "Nodes": [ - { - "Name": "2e", - "RegionID": 2, - "HostName": "derp2e.tailscale.com", - "IPv4": "192.73.252.134", - "IPv6": "2607:f740:0:3f::44c", - "CanPort80": true - }, - { - "Name": "2f", - "RegionID": 2, - "HostName": "derp2f.tailscale.com", - "IPv4": "208.111.34.178", - "IPv6": "2607:f740:0:3f::f4", - "CanPort80": true - }, - { - "Name": "2d", - "RegionID": 2, - "HostName": "derp2d.tailscale.com", - "IPv4": "192.73.252.65", - "IPv6": "2607:f740:0:3f::287", - "CanPort80": true - } - ] - }, - "20": { - "RegionID": 20, - "RegionCode": "hkg", - "RegionName": "Hong Kong", - "Latitude": 22.3193, - "Longitude": 114.1694, - "Nodes": [ - { - "Name": "20c", - "RegionID": 20, - "HostName": "derp20c.tailscale.com", - "IPv4": "205.147.105.30", - "IPv6": "2403:2500:8000:1::5fb", - "CanPort80": true - }, - { - "Name": "20d", - "RegionID": 20, - "HostName": "derp20d.tailscale.com", - "IPv4": "205.147.105.78", - "IPv6": "2403:2500:8000:1::e9a", - "CanPort80": true - }, - { - "Name": "20b", - "RegionID": 20, - "HostName": "derp20b.tailscale.com", - "IPv4": "103.6.84.152", - "IPv6": "2403:2500:8000:1::ef6", - "CanPort80": true - } - ] - }, - "21": { - "RegionID": 21, - "RegionCode": "tor", - "RegionName": "Toronto", - "Latitude": 43.741667, - "Longitude": -79.373333, - "Nodes": [ - { - "Name": "21c", - "RegionID": 21, - "HostName": "derp21c.tailscale.com", - "IPv4": "162.248.221.215", - "IPv6": "2607:f740:50::f10", - "CanPort80": true - }, - { - "Name": "21d", - "RegionID": 21, - "HostName": "derp21d.tailscale.com", - "IPv4": "162.248.221.248", - "IPv6": "2607:f740:50::ca4", - "CanPort80": true - }, - { - "Name": "21b", - "RegionID": 21, - "HostName": "derp21b.tailscale.com", - "IPv4": "162.248.221.199", - "IPv6": "2607:f740:50::1d1", - "CanPort80": true - } - ] - }, - "22": { - "RegionID": 22, - "RegionCode": "waw", - "RegionName": "Warsaw", - "Latitude": 52.23, - "Longitude": 21.011111, - "Nodes": [ - { - "Name": "22c", - "RegionID": 22, - "HostName": "derp22c.tailscale.com", - "IPv4": "45.159.98.253", - "IPv6": "2a00:dd80:40:100::3f", - "CanPort80": true - }, - { - "Name": "22d", - "RegionID": 22, - "HostName": "derp22d.tailscale.com", - "IPv4": "45.159.98.145", - "IPv6": "2a00:dd80:40:100::211", - "CanPort80": true - }, - { - "Name": "22b", - "RegionID": 22, - "HostName": "derp22b.tailscale.com", - "IPv4": "45.159.98.196", - "IPv6": "2a00:dd80:40:100::316", - "CanPort80": true - } - ] - }, - "23": { - "RegionID": 23, - "RegionCode": "dbi", - "RegionName": "Dubai", - "Latitude": 25.263056, - "Longitude": 55.297222, - "Nodes": [ - { - "Name": "23c", - "RegionID": 23, - "HostName": "derp23c.tailscale.com", - "IPv4": "185.34.3.207", - "IPv6": "2a00:dd80:3f:100::a50", - "CanPort80": true - }, - { - "Name": "23d", - "RegionID": 23, - "HostName": "derp23d.tailscale.com", - "IPv4": "185.34.3.75", - "IPv6": "2a00:dd80:3f:100::97e", - "CanPort80": true - }, - { - "Name": "23b", - "RegionID": 23, - "HostName": "derp23b.tailscale.com", - "IPv4": "185.34.3.232", - "IPv6": "2a00:dd80:3f:100::76f", - "CanPort80": true - } - ] - }, - "24": { - "RegionID": 24, - "RegionCode": "hnl", - "RegionName": "Honolulu", - "Latitude": 21.306944, - "Longitude": -157.858333, - "Nodes": [ - { - "Name": "24c", - "RegionID": 24, - "HostName": "derp24c.tailscale.com", - "IPv4": "208.83.233.233", - "IPv6": "2001:19f0:c000:c591:5400:04ff:fe26:2c5f", - "CanPort80": true - }, - { - "Name": "24d", - "RegionID": 24, - "HostName": "derp24d.tailscale.com", - "IPv4": "208.72.155.133", - "IPv6": "2001:19f0:c000:c564:5400:04ff:fe26:2ba8", - "CanPort80": true - }, - { - "Name": "24b", - "RegionID": 24, - "HostName": "derp24b.tailscale.com", - "IPv4": "208.83.234.151", - "IPv6": "2001:19f0:c000:c586:5400:04ff:fe26:2ba6", - "CanPort80": true - } - ] - }, - "25": { - "RegionID": 25, - "RegionCode": "nai", - "RegionName": "Nairobi", - "Latitude": -1.286389, - "Longitude": 36.817222, - "Nodes": [ - { - "Name": "25c", - "RegionID": 25, - "HostName": "derp25c.tailscale.com", - "IPv4": "102.67.167.37", - "IPv6": "2c0f:edb0:2000:1::2c7", - "CanPort80": true - }, - { - "Name": "25d", - "RegionID": 25, - "HostName": "derp25d.tailscale.com", - "IPv4": "102.67.167.188", - "IPv6": "2c0f:edb0:2000:1::188", - "CanPort80": true - }, - { - "Name": "25b", - "RegionID": 25, - "HostName": "derp25b.tailscale.com", - "IPv4": "102.67.167.245", - "IPv6": "2c0f:edb0:2000:1::2e9", - "CanPort80": true - } - ] - }, - "26": { - "RegionID": 26, - "RegionCode": "nue", - "RegionName": "Nuremberg", - "Latitude": 49.453889, - "Longitude": 11.0775, - "Nodes": [ - { - "Name": "26c", - "RegionID": 26, - "HostName": "derp26c.tailscale.com", - "IPv4": "49.12.193.137", - "IPv6": "2a01:4f8:1c1c:5c70::1", - "CanPort80": true - }, - { - "Name": "26d", - "RegionID": 26, - "HostName": "derp26d.tailscale.com", - "IPv4": "49.13.204.141", - "IPv6": "2a01:4f8:1c0c:7d06::1", - "CanPort80": true - }, - { - "Name": "26b", - "RegionID": 26, - "HostName": "derp26b.tailscale.com", - "IPv4": "167.235.72.200", - "IPv6": "2a01:4f8:1c1c:47b6::1", - "CanPort80": true - } - ] - }, - "27": { - "RegionID": 27, - "RegionCode": "iad", - "RegionName": "Ashburn", - "Latitude": 39.03, - "Longitude": -77.471111, - "Nodes": [ - { - "Name": "27d", - "RegionID": 27, - "HostName": "derp27d.tailscale.com", - "IPv4": "178.156.152.106", - "IPv6": "2a01:4ff:f0:3c8e::1", - "CanPort80": true - }, - { - "Name": "27c", - "RegionID": 27, - "HostName": "derp27c.tailscale.com", - "IPv4": "178.156.152.91", - "IPv6": "2a01:4ff:f0:3913::1", - "CanPort80": true - }, - { - "Name": "27e", - "RegionID": 27, - "HostName": "derp27e.tailscale.com", - "IPv4": "178.156.134.232", - "IPv6": "2a01:4ff:f0:28d4::1", - "CanPort80": true - }, - { - "Name": "27b", - "RegionID": 27, - "HostName": "derp27b.tailscale.com", - "IPv4": "5.161.218.233", - "IPv6": "2a01:4ff:f0:3db9::1", - "CanPort80": true - } - ] - }, - "28": { - "RegionID": 28, - "RegionCode": "hel", - "RegionName": "Helsinki", - "Latitude": 60.170833, - "Longitude": 24.9375, - "Nodes": [ - { - "Name": "28c", - "RegionID": 28, - "HostName": "derp28c.tailscale.com", - "IPv4": "95.217.2.165", - "IPv6": "2a01:4f9:c012:cd74::1", - "CanPort80": true - }, - { - "Name": "28d", - "RegionID": 28, - "HostName": "derp28d.tailscale.com", - "IPv4": "157.180.28.32", - "IPv6": "2a01:4f9:c012:2e5b::1", - "CanPort80": true - }, - { - "Name": "28b", - "RegionID": 28, - "HostName": "derp28b.tailscale.com", - "IPv4": "65.109.143.62", - "IPv6": "2a01:4f9:c012:d55c::1", - "CanPort80": true - } - ] - }, - "3": { - "RegionID": 3, - "RegionCode": "sin", - "RegionName": "Singapore", - "Latitude": 1.3521, - "Longitude": 103.8198, - "Nodes": [ - { - "Name": "3g", - "RegionID": 3, - "HostName": "derp3g.tailscale.com", - "IPv4": "172.237.72.79", - "IPv6": "2600:3c15::2000:adff:fe08:6fab", - "CanPort80": true - }, - { - "Name": "3f", - "RegionID": 3, - "HostName": "derp3f.tailscale.com", - "IPv4": "172.237.72.8", - "IPv6": "2600:3c15::2000:53ff:fe48:a668", - "CanPort80": true - }, - { - "Name": "3h", - "RegionID": 3, - "HostName": "derp3h.tailscale.com", - "IPv4": "172.237.66.30", - "IPv6": "2600:3c15::2000:3dff:fe44:50aa", - "CanPort80": true - }, - { - "Name": "3e", - "RegionID": 3, - "HostName": "derp3e.tailscale.com", - "IPv4": "172.237.72.43", - "IPv6": "2600:3c15::2000:6cff:fee4:d799", - "CanPort80": true - } - ] - }, - "4": { - "RegionID": 4, - "RegionCode": "fra", - "RegionName": "Frankfurt", - "Latitude": 50.1109, - "Longitude": 8.6821, - "Nodes": [ - { - "Name": "4h", - "RegionID": 4, - "HostName": "derp4h.tailscale.com", - "IPv4": "185.40.234.77", - "IPv6": "2a00:dd80:20::bcf", - "CanPort80": true - }, - { - "Name": "4g", - "RegionID": 4, - "HostName": "derp4g.tailscale.com", - "IPv4": "185.40.234.113", - "IPv6": "2a00:dd80:20::8f", - "CanPort80": true - }, - { - "Name": "4i", - "RegionID": 4, - "HostName": "derp4i.tailscale.com", - "IPv4": "185.40.234.53", - "IPv6": "2a00:dd80:20::8a6", - "CanPort80": true - }, - { - "Name": "4f", - "RegionID": 4, - "HostName": "derp4f.tailscale.com", - "IPv4": "185.40.234.219", - "IPv6": "2a00:dd80:20::a25", - "CanPort80": true - } - ] - }, - "5": { - "RegionID": 5, - "RegionCode": "syd", - "RegionName": "Sydney", - "Latitude": -33.867778, - "Longitude": 151.21, - "Nodes": [ - { - "Name": "5f", - "RegionID": 5, - "HostName": "derp5f.tailscale.com", - "IPv4": "172.105.166.103", - "IPv6": "2400:8907::2000:ccff:fe1f:80da", - "CanPort80": true - }, - { - "Name": "5g", - "RegionID": 5, - "HostName": "derp5g.tailscale.com", - "IPv4": "172.105.169.57", - "IPv6": "2400:8907::2000:2fff:fea7:57f4", - "CanPort80": true - }, - { - "Name": "5e", - "RegionID": 5, - "HostName": "derp5e.tailscale.com", - "IPv4": "172.105.179.230", - "IPv6": "2400:8907::2000:ceff:fe8d:4f4e", - "CanPort80": true - } - ] - }, - "6": { - "RegionID": 6, - "RegionCode": "blr", - "RegionName": "Bengaluru", - "Latitude": 12.9716, - "Longitude": 77.5946, - "Nodes": [ - { - "Name": "6a", - "RegionID": 6, - "HostName": "derp6.tailscale.com", - "IPv4": "68.183.90.120", - "IPv6": "2400:6180:100:d0::982:d001", - "CanPort80": true - } - ] - }, - "7": { - "RegionID": 7, - "RegionCode": "tok", - "RegionName": "Tokyo", - "Latitude": 35.6764, - "Longitude": 139.65, - "Nodes": [ - { - "Name": "7g", - "RegionID": 7, - "HostName": "derp7g.tailscale.com", - "IPv4": "172.238.6.179", - "IPv6": "2600:3c18::2000:3fff:fe80:3ebd", - "CanPort80": true - }, - { - "Name": "7f", - "RegionID": 7, - "HostName": "derp7f.tailscale.com", - "IPv4": "172.238.6.34", - "IPv6": "2600:3c18::2000:acff:fe8e:3ed5", - "CanPort80": true - }, - { - "Name": "7h", - "RegionID": 7, - "HostName": "derp7h.tailscale.com", - "IPv4": "172.237.28.183", - "IPv6": "2600:3c18::2000:b1ff:fea9:4560", - "CanPort80": true - }, - { - "Name": "7e", - "RegionID": 7, - "HostName": "derp7e.tailscale.com", - "IPv4": "172.238.6.180", - "IPv6": "2600:3c18::2000:60ff:fe0f:6e83", - "STUNOnly": true, - "CanPort80": true - } - ] - }, - "8": { - "RegionID": 8, - "RegionCode": "lhr", - "RegionName": "London", - "Latitude": 51.5072, - "Longitude": 0.1276, - "Nodes": [ - { - "Name": "8f", - "RegionID": 8, - "HostName": "derp8f.tailscale.com", - "IPv4": "176.58.88.183", - "IPv6": "2a00:dd80:3a::dfa", - "CanPort80": true - }, - { - "Name": "8g", - "RegionID": 8, - "HostName": "derp8g.tailscale.com", - "IPv4": "176.58.92.254", - "IPv6": "2a00:dd80:3a::ed", - "CanPort80": true - }, - { - "Name": "8e", - "RegionID": 8, - "HostName": "derp8e.tailscale.com", - "IPv4": "176.58.92.144", - "IPv6": "2a00:dd80:3a::b33", - "CanPort80": true - } - ] - }, - "9": { - "RegionID": 9, - "RegionCode": "dfw", - "RegionName": "Dallas", - "Latitude": 32.779167, - "Longitude": -96.808889, - "Nodes": [ - { - "Name": "9e", - "RegionID": 9, - "HostName": "derp9e.tailscale.com", - "IPv4": "192.73.248.83", - "IPv6": "2607:f740:100::359", - "CanPort80": true - }, - { - "Name": "9f", - "RegionID": 9, - "HostName": "derp9f.tailscale.com", - "IPv4": "209.177.156.197", - "IPv6": "2607:f740:100::cad", - "CanPort80": true - }, - { - "Name": "9d", - "RegionID": 9, - "HostName": "derp9d.tailscale.com", - "IPv4": "209.177.156.94", - "IPv6": "2607:f740:100::c05", - "CanPort80": true - } - ] - } - } - }, - "DisplayMessages": null, - "TKAEnabled": false, - "TKAHead": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", - "Domain": "kratail2tid@passkey", - "DomainAuditLogID": "", - "UserProfiles": { - "301794218943819": { - "ID": 301794218943819, - "LoginName": "tagged-prod.tail78f774.ts.net", - "DisplayName": "tagged-prod" - } - } + "PacketFilterRules": 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.124.195.93": { - "peer_name": "exit-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-server/tailscaled.sock whois --json 100.124.195.93", - "response": null - }, - "100.116.18.24": { - "peer_name": "exit-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-server/tailscaled.sock whois --json 100.116.18.24", - "response": null - }, - "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.107.162.14": { - "peer_name": "group-a-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-server/tailscaled.sock whois --json 100.107.162.14", - "response": null - }, - "100.77.135.18": { - "peer_name": "group-b-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-server/tailscaled.sock whois --json 100.77.135.18", - "response": null - }, - "100.105.127.107": { - "peer_name": "multi-exit-router", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-server/tailscaled.sock whois --json 100.105.127.107", - "response": null - }, - "100.109.43.124": { - "peer_name": "router-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-server/tailscaled.sock whois --json 100.109.43.124", - "response": null - }, - "100.65.172.123": { - "peer_name": "router-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-server/tailscaled.sock whois --json 100.65.172.123", - "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 - } - }, "netmap": { - "SelfNode": { - "ID": 1440249486084758, - "StableID": "nXRbBtuHFC11CNTRL", - "Name": "tagged-server.tail78f774.ts.net.", - "User": 1440249486084758, - "Key": "nodekey:7d5c34b3e8082069d0a82838165c33f8e1b5eb32c6211c2d23d4fe8fb9ec4a19", - "DiscoKey": "discokey:aa5732e314175928eff41cc8f8a7b6edd4694b7d00e420a6573ecc11a88cb203", - "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:57971", "10.65.0.27:57971", "172.17.0.1:57971"], - "Hostinfo": { - "Hostname": "tagged-server", - "Services": [ - { "Proto": "peerapi4", "Port": 46499 }, - { "Proto": "peerapi6", "Port": 46499 }, - { "Proto": "peerapi-dns-proxy", "Port": 1 } - ] - }, - "Created": "2026-01-23T10:10:26.365653609Z", - "Tags": ["tag:server"], - "MachineAuthorized": true, - "CapMap": { - "https://tailscale.com/cap/file-sharing": null, - "https://tailscale.com/cap/is-owner": null, - "https://tailscale.com/cap/ssh": null, - "https://tailscale.com/cap/tailnet-lock": null, - "probe-udp-lifetime": null, - "ssh-behavior-v1": null, - "ssh-env-vars": null, - "store-appc-routes": null, - "tailnet-display-name": ["kratail2tid@passkey"] - }, - "ComputedName": "tagged-server", - "ComputedNameWithHost": "tagged-server" - }, - "AllCaps": [ - "ssh-behavior-v1", - "https://tailscale.com/cap/file-sharing", - "https://tailscale.com/cap/tailnet-lock", - "https://tailscale.com/cap/ssh", - "ssh-env-vars", - "https://tailscale.com/cap/is-owner", - "probe-udp-lifetime", - "store-appc-routes", - "tailnet-display-name" - ], - "NodeKey": "nodekey:7d5c34b3e8082069d0a82838165c33f8e1b5eb32c6211c2d23d4fe8fb9ec4a19", - "MachineKey": "mkey:7d9c55c88bb618638f3f049b95c797f64eb0259810146d2644fef3e53acfdf6b", "Peers": [], - "DNS": { - "Routes": { - "tail78f774.ts.net.": null, - "ts.net.": [{ "Addr": "199.247.155.53" }, { "Addr": "2620:111:8007::53" }] - }, - "Domains": ["tail78f774.ts.net"], - "Proxied": true, - "ExitNodeFilteredSet": [".ts.net", ".tailscale.net"] - }, - "PacketFilter": [], - "PacketFilterRules": null, - "SSHPolicy": { "rules": [] }, - "CollectServices": false, - "DERPMap": { - "Regions": { - "1": { - "RegionID": 1, - "RegionCode": "nyc", - "RegionName": "New York City", - "Latitude": 40.7128, - "Longitude": -74.006, - "Nodes": [ - { - "Name": "1h", - "RegionID": 1, - "HostName": "derp1h.tailscale.com", - "IPv4": "199.38.181.93", - "IPv6": "2607:f740:f::afd", - "CanPort80": true - }, - { - "Name": "1g", - "RegionID": 1, - "HostName": "derp1g.tailscale.com", - "IPv4": "209.177.145.120", - "IPv6": "2607:f740:f::3eb", - "CanPort80": true - }, - { - "Name": "1i", - "RegionID": 1, - "HostName": "derp1i.tailscale.com", - "IPv4": "199.38.181.103", - "IPv6": "2607:f740:f::e19", - "CanPort80": true - }, - { - "Name": "1f", - "RegionID": 1, - "HostName": "derp1f.tailscale.com", - "IPv4": "199.38.181.104", - "IPv6": "2607:f740:f::bc", - "CanPort80": true - } - ] - }, - "10": { - "RegionID": 10, - "RegionCode": "sea", - "RegionName": "Seattle", - "Latitude": 47.609722, - "Longitude": -122.333056, - "Nodes": [ - { - "Name": "10c", - "RegionID": 10, - "HostName": "derp10c.tailscale.com", - "IPv4": "192.73.240.121", - "IPv6": "2607:f740:14::40c", - "CanPort80": true - }, - { - "Name": "10d", - "RegionID": 10, - "HostName": "derp10d.tailscale.com", - "IPv4": "192.73.240.132", - "IPv6": "2607:f740:14::500", - "CanPort80": true - }, - { - "Name": "10b", - "RegionID": 10, - "HostName": "derp10b.tailscale.com", - "IPv4": "192.73.240.161", - "IPv6": "2607:f740:14::61c", - "CanPort80": true - } - ] - }, - "11": { - "RegionID": 11, - "RegionCode": "sao", - "RegionName": "São Paulo", - "Latitude": -23.55, - "Longitude": -46.633333, - "Nodes": [ - { - "Name": "11f", - "RegionID": 11, - "HostName": "derp11f.tailscale.com", - "IPv4": "172.237.61.197", - "IPv6": "2600:3c0d::2000:3bff:fe44:6166", - "CanPort80": true - }, - { - "Name": "11g", - "RegionID": 11, - "HostName": "derp11g.tailscale.com", - "IPv4": "172.237.61.190", - "IPv6": "2600:3c0d::2000:62ff:febe:2e67", - "CanPort80": true - }, - { - "Name": "11e", - "RegionID": 11, - "HostName": "derp11e.tailscale.com", - "IPv4": "172.237.61.194", - "IPv6": "2600:3c0d::2000:d2ff:fe43:1790", - "CanPort80": true - } - ] - }, - "12": { - "RegionID": 12, - "RegionCode": "ord", - "RegionName": "Chicago", - "Latitude": 41.881944, - "Longitude": -87.627778, - "Nodes": [ - { - "Name": "12e", - "RegionID": 12, - "HostName": "derp12e.tailscale.com", - "IPv4": "209.177.158.15", - "IPv6": "2607:f740:e::b17", - "CanPort80": true - }, - { - "Name": "12f", - "RegionID": 12, - "HostName": "derp12f.tailscale.com", - "IPv4": "199.38.182.118", - "IPv6": "2607:f740:e::4c8", - "CanPort80": true - }, - { - "Name": "12d", - "RegionID": 12, - "HostName": "derp12d.tailscale.com", - "IPv4": "209.177.158.246", - "IPv6": "2607:f740:e::811", - "CanPort80": true - } - ] - }, - "13": { - "RegionID": 13, - "RegionCode": "den", - "RegionName": "Denver", - "Latitude": 39.7392, - "Longitude": -104.9849, - "Nodes": [ - { - "Name": "13c", - "RegionID": 13, - "HostName": "derp13c.tailscale.com", - "IPv4": "192.73.242.28", - "IPv6": "2607:f740:16::5c", - "CanPort80": true - }, - { - "Name": "13d", - "RegionID": 13, - "HostName": "derp13d.tailscale.com", - "IPv4": "192.73.242.204", - "IPv6": "2607:f740:16::c23", - "CanPort80": true - }, - { - "Name": "13b", - "RegionID": 13, - "HostName": "derp13b.tailscale.com", - "IPv4": "192.73.242.187", - "IPv6": "2607:f740:16::640", - "CanPort80": true - } - ] - }, - "14": { - "RegionID": 14, - "RegionCode": "ams", - "RegionName": "Amsterdam", - "Latitude": 52.372778, - "Longitude": 4.893611, - "Nodes": [ - { - "Name": "14c", - "RegionID": 14, - "HostName": "derp14c.tailscale.com", - "IPv4": "176.58.93.147", - "IPv6": "2a00:dd80:3c::b09", - "CanPort80": true - }, - { - "Name": "14d", - "RegionID": 14, - "HostName": "derp14d.tailscale.com", - "IPv4": "176.58.93.154", - "IPv6": "2a00:dd80:3c::3d5", - "CanPort80": true - }, - { - "Name": "14b", - "RegionID": 14, - "HostName": "derp14b.tailscale.com", - "IPv4": "176.58.93.248", - "IPv6": "2a00:dd80:3c::807", - "CanPort80": true - } - ] - }, - "15": { - "RegionID": 15, - "RegionCode": "jnb", - "RegionName": "Johannesburg", - "Latitude": -26.204444, - "Longitude": 28.045556, - "Nodes": [ - { - "Name": "15c", - "RegionID": 15, - "HostName": "derp15c.tailscale.com", - "IPv4": "102.67.165.185", - "IPv6": "2c0f:edb0:0:10::b59", - "CanPort80": true - }, - { - "Name": "15d", - "RegionID": 15, - "HostName": "derp15d.tailscale.com", - "IPv4": "102.67.165.36", - "IPv6": "2c0f:edb0:0:10::599", - "CanPort80": true - }, - { - "Name": "15b", - "RegionID": 15, - "HostName": "derp15b.tailscale.com", - "IPv4": "102.67.165.90", - "IPv6": "2c0f:edb0:0:10::963", - "CanPort80": true - } - ] - }, - "16": { - "RegionID": 16, - "RegionCode": "mia", - "RegionName": "Miami", - "Latitude": 25.78, - "Longitude": -80.21, - "Nodes": [ - { - "Name": "16c", - "RegionID": 16, - "HostName": "derp16c.tailscale.com", - "IPv4": "192.73.243.229", - "IPv6": "2607:f740:17::4e4", - "CanPort80": true - }, - { - "Name": "16d", - "RegionID": 16, - "HostName": "derp16d.tailscale.com", - "IPv4": "192.73.243.141", - "IPv6": "2607:f740:17::475", - "CanPort80": true - }, - { - "Name": "16b", - "RegionID": 16, - "HostName": "derp16b.tailscale.com", - "IPv4": "192.73.243.135", - "IPv6": "2607:f740:17::476", - "CanPort80": true - } - ] - }, - "17": { - "RegionID": 17, - "RegionCode": "lax", - "RegionName": "Los Angeles", - "Latitude": 34.05, - "Longitude": -118.25, - "Nodes": [ - { - "Name": "17c", - "RegionID": 17, - "HostName": "derp17c.tailscale.com", - "IPv4": "208.111.40.12", - "IPv6": "2607:f740:c::10", - "CanPort80": true - }, - { - "Name": "17d", - "RegionID": 17, - "HostName": "derp17d.tailscale.com", - "IPv4": "208.111.40.216", - "IPv6": "2607:f740:c::e1b", - "CanPort80": true - }, - { - "Name": "17b", - "RegionID": 17, - "HostName": "derp17b.tailscale.com", - "IPv4": "192.73.244.245", - "IPv6": "2607:f740:c::646", - "CanPort80": true - } - ] - }, - "18": { - "RegionID": 18, - "RegionCode": "par", - "RegionName": "Paris", - "Latitude": 48.856667, - "Longitude": 2.352222, - "Nodes": [ - { - "Name": "18c", - "RegionID": 18, - "HostName": "derp18c.tailscale.com", - "IPv4": "176.58.90.207", - "IPv6": "2a00:dd80:3e::c19", - "CanPort80": true - }, - { - "Name": "18d", - "RegionID": 18, - "HostName": "derp18d.tailscale.com", - "IPv4": "176.58.90.104", - "IPv6": "2a00:dd80:3e::f2e", - "CanPort80": true - }, - { - "Name": "18b", - "RegionID": 18, - "HostName": "derp18b.tailscale.com", - "IPv4": "176.58.90.147", - "IPv6": "2a00:dd80:3e::363", - "CanPort80": true - } - ] - }, - "19": { - "RegionID": 19, - "RegionCode": "mad", - "RegionName": "Madrid", - "Latitude": 40.416944, - "Longitude": -3.703333, - "Nodes": [ - { - "Name": "19c", - "RegionID": 19, - "HostName": "derp19c.tailscale.com", - "IPv4": "45.159.97.61", - "IPv6": "2a00:dd80:14:10::20", - "CanPort80": true - }, - { - "Name": "19d", - "RegionID": 19, - "HostName": "derp19d.tailscale.com", - "IPv4": "45.159.97.233", - "IPv6": "2a00:dd80:14:10::34a", - "CanPort80": true - }, - { - "Name": "19b", - "RegionID": 19, - "HostName": "derp19b.tailscale.com", - "IPv4": "45.159.97.144", - "IPv6": "2a00:dd80:14:10::335", - "CanPort80": true - } - ] - }, - "2": { - "RegionID": 2, - "RegionCode": "sfo", - "RegionName": "San Francisco", - "Latitude": 37.7775, - "Longitude": -122.416389, - "Nodes": [ - { - "Name": "2e", - "RegionID": 2, - "HostName": "derp2e.tailscale.com", - "IPv4": "192.73.252.134", - "IPv6": "2607:f740:0:3f::44c", - "CanPort80": true - }, - { - "Name": "2f", - "RegionID": 2, - "HostName": "derp2f.tailscale.com", - "IPv4": "208.111.34.178", - "IPv6": "2607:f740:0:3f::f4", - "CanPort80": true - }, - { - "Name": "2d", - "RegionID": 2, - "HostName": "derp2d.tailscale.com", - "IPv4": "192.73.252.65", - "IPv6": "2607:f740:0:3f::287", - "CanPort80": true - } - ] - }, - "20": { - "RegionID": 20, - "RegionCode": "hkg", - "RegionName": "Hong Kong", - "Latitude": 22.3193, - "Longitude": 114.1694, - "Nodes": [ - { - "Name": "20c", - "RegionID": 20, - "HostName": "derp20c.tailscale.com", - "IPv4": "205.147.105.30", - "IPv6": "2403:2500:8000:1::5fb", - "CanPort80": true - }, - { - "Name": "20d", - "RegionID": 20, - "HostName": "derp20d.tailscale.com", - "IPv4": "205.147.105.78", - "IPv6": "2403:2500:8000:1::e9a", - "CanPort80": true - }, - { - "Name": "20b", - "RegionID": 20, - "HostName": "derp20b.tailscale.com", - "IPv4": "103.6.84.152", - "IPv6": "2403:2500:8000:1::ef6", - "CanPort80": true - } - ] - }, - "21": { - "RegionID": 21, - "RegionCode": "tor", - "RegionName": "Toronto", - "Latitude": 43.741667, - "Longitude": -79.373333, - "Nodes": [ - { - "Name": "21c", - "RegionID": 21, - "HostName": "derp21c.tailscale.com", - "IPv4": "162.248.221.215", - "IPv6": "2607:f740:50::f10", - "CanPort80": true - }, - { - "Name": "21d", - "RegionID": 21, - "HostName": "derp21d.tailscale.com", - "IPv4": "162.248.221.248", - "IPv6": "2607:f740:50::ca4", - "CanPort80": true - }, - { - "Name": "21b", - "RegionID": 21, - "HostName": "derp21b.tailscale.com", - "IPv4": "162.248.221.199", - "IPv6": "2607:f740:50::1d1", - "CanPort80": true - } - ] - }, - "22": { - "RegionID": 22, - "RegionCode": "waw", - "RegionName": "Warsaw", - "Latitude": 52.23, - "Longitude": 21.011111, - "Nodes": [ - { - "Name": "22c", - "RegionID": 22, - "HostName": "derp22c.tailscale.com", - "IPv4": "45.159.98.253", - "IPv6": "2a00:dd80:40:100::3f", - "CanPort80": true - }, - { - "Name": "22d", - "RegionID": 22, - "HostName": "derp22d.tailscale.com", - "IPv4": "45.159.98.145", - "IPv6": "2a00:dd80:40:100::211", - "CanPort80": true - }, - { - "Name": "22b", - "RegionID": 22, - "HostName": "derp22b.tailscale.com", - "IPv4": "45.159.98.196", - "IPv6": "2a00:dd80:40:100::316", - "CanPort80": true - } - ] - }, - "23": { - "RegionID": 23, - "RegionCode": "dbi", - "RegionName": "Dubai", - "Latitude": 25.263056, - "Longitude": 55.297222, - "Nodes": [ - { - "Name": "23c", - "RegionID": 23, - "HostName": "derp23c.tailscale.com", - "IPv4": "185.34.3.207", - "IPv6": "2a00:dd80:3f:100::a50", - "CanPort80": true - }, - { - "Name": "23d", - "RegionID": 23, - "HostName": "derp23d.tailscale.com", - "IPv4": "185.34.3.75", - "IPv6": "2a00:dd80:3f:100::97e", - "CanPort80": true - }, - { - "Name": "23b", - "RegionID": 23, - "HostName": "derp23b.tailscale.com", - "IPv4": "185.34.3.232", - "IPv6": "2a00:dd80:3f:100::76f", - "CanPort80": true - } - ] - }, - "24": { - "RegionID": 24, - "RegionCode": "hnl", - "RegionName": "Honolulu", - "Latitude": 21.306944, - "Longitude": -157.858333, - "Nodes": [ - { - "Name": "24c", - "RegionID": 24, - "HostName": "derp24c.tailscale.com", - "IPv4": "208.83.233.233", - "IPv6": "2001:19f0:c000:c591:5400:04ff:fe26:2c5f", - "CanPort80": true - }, - { - "Name": "24d", - "RegionID": 24, - "HostName": "derp24d.tailscale.com", - "IPv4": "208.72.155.133", - "IPv6": "2001:19f0:c000:c564:5400:04ff:fe26:2ba8", - "CanPort80": true - }, - { - "Name": "24b", - "RegionID": 24, - "HostName": "derp24b.tailscale.com", - "IPv4": "208.83.234.151", - "IPv6": "2001:19f0:c000:c586:5400:04ff:fe26:2ba6", - "CanPort80": true - } - ] - }, - "25": { - "RegionID": 25, - "RegionCode": "nai", - "RegionName": "Nairobi", - "Latitude": -1.286389, - "Longitude": 36.817222, - "Nodes": [ - { - "Name": "25c", - "RegionID": 25, - "HostName": "derp25c.tailscale.com", - "IPv4": "102.67.167.37", - "IPv6": "2c0f:edb0:2000:1::2c7", - "CanPort80": true - }, - { - "Name": "25d", - "RegionID": 25, - "HostName": "derp25d.tailscale.com", - "IPv4": "102.67.167.188", - "IPv6": "2c0f:edb0:2000:1::188", - "CanPort80": true - }, - { - "Name": "25b", - "RegionID": 25, - "HostName": "derp25b.tailscale.com", - "IPv4": "102.67.167.245", - "IPv6": "2c0f:edb0:2000:1::2e9", - "CanPort80": true - } - ] - }, - "26": { - "RegionID": 26, - "RegionCode": "nue", - "RegionName": "Nuremberg", - "Latitude": 49.453889, - "Longitude": 11.0775, - "Nodes": [ - { - "Name": "26c", - "RegionID": 26, - "HostName": "derp26c.tailscale.com", - "IPv4": "49.12.193.137", - "IPv6": "2a01:4f8:1c1c:5c70::1", - "CanPort80": true - }, - { - "Name": "26d", - "RegionID": 26, - "HostName": "derp26d.tailscale.com", - "IPv4": "49.13.204.141", - "IPv6": "2a01:4f8:1c0c:7d06::1", - "CanPort80": true - }, - { - "Name": "26b", - "RegionID": 26, - "HostName": "derp26b.tailscale.com", - "IPv4": "167.235.72.200", - "IPv6": "2a01:4f8:1c1c:47b6::1", - "CanPort80": true - } - ] - }, - "27": { - "RegionID": 27, - "RegionCode": "iad", - "RegionName": "Ashburn", - "Latitude": 39.03, - "Longitude": -77.471111, - "Nodes": [ - { - "Name": "27d", - "RegionID": 27, - "HostName": "derp27d.tailscale.com", - "IPv4": "178.156.152.106", - "IPv6": "2a01:4ff:f0:3c8e::1", - "CanPort80": true - }, - { - "Name": "27c", - "RegionID": 27, - "HostName": "derp27c.tailscale.com", - "IPv4": "178.156.152.91", - "IPv6": "2a01:4ff:f0:3913::1", - "CanPort80": true - }, - { - "Name": "27e", - "RegionID": 27, - "HostName": "derp27e.tailscale.com", - "IPv4": "178.156.134.232", - "IPv6": "2a01:4ff:f0:28d4::1", - "CanPort80": true - }, - { - "Name": "27b", - "RegionID": 27, - "HostName": "derp27b.tailscale.com", - "IPv4": "5.161.218.233", - "IPv6": "2a01:4ff:f0:3db9::1", - "CanPort80": true - } - ] - }, - "28": { - "RegionID": 28, - "RegionCode": "hel", - "RegionName": "Helsinki", - "Latitude": 60.170833, - "Longitude": 24.9375, - "Nodes": [ - { - "Name": "28c", - "RegionID": 28, - "HostName": "derp28c.tailscale.com", - "IPv4": "95.217.2.165", - "IPv6": "2a01:4f9:c012:cd74::1", - "CanPort80": true - }, - { - "Name": "28d", - "RegionID": 28, - "HostName": "derp28d.tailscale.com", - "IPv4": "157.180.28.32", - "IPv6": "2a01:4f9:c012:2e5b::1", - "CanPort80": true - }, - { - "Name": "28b", - "RegionID": 28, - "HostName": "derp28b.tailscale.com", - "IPv4": "65.109.143.62", - "IPv6": "2a01:4f9:c012:d55c::1", - "CanPort80": true - } - ] - }, - "3": { - "RegionID": 3, - "RegionCode": "sin", - "RegionName": "Singapore", - "Latitude": 1.3521, - "Longitude": 103.8198, - "Nodes": [ - { - "Name": "3g", - "RegionID": 3, - "HostName": "derp3g.tailscale.com", - "IPv4": "172.237.72.79", - "IPv6": "2600:3c15::2000:adff:fe08:6fab", - "CanPort80": true - }, - { - "Name": "3f", - "RegionID": 3, - "HostName": "derp3f.tailscale.com", - "IPv4": "172.237.72.8", - "IPv6": "2600:3c15::2000:53ff:fe48:a668", - "CanPort80": true - }, - { - "Name": "3h", - "RegionID": 3, - "HostName": "derp3h.tailscale.com", - "IPv4": "172.237.66.30", - "IPv6": "2600:3c15::2000:3dff:fe44:50aa", - "CanPort80": true - }, - { - "Name": "3e", - "RegionID": 3, - "HostName": "derp3e.tailscale.com", - "IPv4": "172.237.72.43", - "IPv6": "2600:3c15::2000:6cff:fee4:d799", - "CanPort80": true - } - ] - }, - "4": { - "RegionID": 4, - "RegionCode": "fra", - "RegionName": "Frankfurt", - "Latitude": 50.1109, - "Longitude": 8.6821, - "Nodes": [ - { - "Name": "4h", - "RegionID": 4, - "HostName": "derp4h.tailscale.com", - "IPv4": "185.40.234.77", - "IPv6": "2a00:dd80:20::bcf", - "CanPort80": true - }, - { - "Name": "4g", - "RegionID": 4, - "HostName": "derp4g.tailscale.com", - "IPv4": "185.40.234.113", - "IPv6": "2a00:dd80:20::8f", - "CanPort80": true - }, - { - "Name": "4i", - "RegionID": 4, - "HostName": "derp4i.tailscale.com", - "IPv4": "185.40.234.53", - "IPv6": "2a00:dd80:20::8a6", - "CanPort80": true - }, - { - "Name": "4f", - "RegionID": 4, - "HostName": "derp4f.tailscale.com", - "IPv4": "185.40.234.219", - "IPv6": "2a00:dd80:20::a25", - "CanPort80": true - } - ] - }, - "5": { - "RegionID": 5, - "RegionCode": "syd", - "RegionName": "Sydney", - "Latitude": -33.867778, - "Longitude": 151.21, - "Nodes": [ - { - "Name": "5f", - "RegionID": 5, - "HostName": "derp5f.tailscale.com", - "IPv4": "172.105.166.103", - "IPv6": "2400:8907::2000:ccff:fe1f:80da", - "CanPort80": true - }, - { - "Name": "5g", - "RegionID": 5, - "HostName": "derp5g.tailscale.com", - "IPv4": "172.105.169.57", - "IPv6": "2400:8907::2000:2fff:fea7:57f4", - "CanPort80": true - }, - { - "Name": "5e", - "RegionID": 5, - "HostName": "derp5e.tailscale.com", - "IPv4": "172.105.179.230", - "IPv6": "2400:8907::2000:ceff:fe8d:4f4e", - "CanPort80": true - } - ] - }, - "6": { - "RegionID": 6, - "RegionCode": "blr", - "RegionName": "Bengaluru", - "Latitude": 12.9716, - "Longitude": 77.5946, - "Nodes": [ - { - "Name": "6a", - "RegionID": 6, - "HostName": "derp6.tailscale.com", - "IPv4": "68.183.90.120", - "IPv6": "2400:6180:100:d0::982:d001", - "CanPort80": true - } - ] - }, - "7": { - "RegionID": 7, - "RegionCode": "tok", - "RegionName": "Tokyo", - "Latitude": 35.6764, - "Longitude": 139.65, - "Nodes": [ - { - "Name": "7g", - "RegionID": 7, - "HostName": "derp7g.tailscale.com", - "IPv4": "172.238.6.179", - "IPv6": "2600:3c18::2000:3fff:fe80:3ebd", - "CanPort80": true - }, - { - "Name": "7f", - "RegionID": 7, - "HostName": "derp7f.tailscale.com", - "IPv4": "172.238.6.34", - "IPv6": "2600:3c18::2000:acff:fe8e:3ed5", - "CanPort80": true - }, - { - "Name": "7h", - "RegionID": 7, - "HostName": "derp7h.tailscale.com", - "IPv4": "172.237.28.183", - "IPv6": "2600:3c18::2000:b1ff:fea9:4560", - "CanPort80": true - }, - { - "Name": "7e", - "RegionID": 7, - "HostName": "derp7e.tailscale.com", - "IPv4": "172.238.6.180", - "IPv6": "2600:3c18::2000:60ff:fe0f:6e83", - "STUNOnly": true, - "CanPort80": true - } - ] - }, - "8": { - "RegionID": 8, - "RegionCode": "lhr", - "RegionName": "London", - "Latitude": 51.5072, - "Longitude": 0.1276, - "Nodes": [ - { - "Name": "8f", - "RegionID": 8, - "HostName": "derp8f.tailscale.com", - "IPv4": "176.58.88.183", - "IPv6": "2a00:dd80:3a::dfa", - "CanPort80": true - }, - { - "Name": "8g", - "RegionID": 8, - "HostName": "derp8g.tailscale.com", - "IPv4": "176.58.92.254", - "IPv6": "2a00:dd80:3a::ed", - "CanPort80": true - }, - { - "Name": "8e", - "RegionID": 8, - "HostName": "derp8e.tailscale.com", - "IPv4": "176.58.92.144", - "IPv6": "2a00:dd80:3a::b33", - "CanPort80": true - } - ] - }, - "9": { - "RegionID": 9, - "RegionCode": "dfw", - "RegionName": "Dallas", - "Latitude": 32.779167, - "Longitude": -96.808889, - "Nodes": [ - { - "Name": "9e", - "RegionID": 9, - "HostName": "derp9e.tailscale.com", - "IPv4": "192.73.248.83", - "IPv6": "2607:f740:100::359", - "CanPort80": true - }, - { - "Name": "9f", - "RegionID": 9, - "HostName": "derp9f.tailscale.com", - "IPv4": "209.177.156.197", - "IPv6": "2607:f740:100::cad", - "CanPort80": true - }, - { - "Name": "9d", - "RegionID": 9, - "HostName": "derp9d.tailscale.com", - "IPv4": "209.177.156.94", - "IPv6": "2607:f740:100::c05", - "CanPort80": true - } - ] - } - } - }, - "DisplayMessages": null, - "TKAEnabled": false, - "TKAHead": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", - "Domain": "kratail2tid@passkey", - "DomainAuditLogID": "", - "UserProfiles": { - "1440249486084758": { - "ID": 1440249486084758, - "LoginName": "tagged-server.tail78f774.ts.net", - "DisplayName": "tagged-server" - } - } + "PacketFilterRules": 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.124.195.93": { - "peer_name": "exit-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-kris/tailscaled.sock whois --json 100.124.195.93", - "response": null - }, - "100.116.18.24": { - "peer_name": "exit-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-kris/tailscaled.sock whois --json 100.116.18.24", - "response": null - }, - "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.107.162.14": { - "peer_name": "group-a-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-kris/tailscaled.sock whois --json 100.107.162.14", - "response": null - }, - "100.77.135.18": { - "peer_name": "group-b-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-kris/tailscaled.sock whois --json 100.77.135.18", - "response": null - }, - "100.105.127.107": { - "peer_name": "multi-exit-router", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-kris/tailscaled.sock whois --json 100.105.127.107", - "response": null - }, - "100.109.43.124": { - "peer_name": "router-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-kris/tailscaled.sock whois --json 100.109.43.124", - "response": null - }, - "100.65.172.123": { - "peer_name": "router-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-kris/tailscaled.sock whois --json 100.65.172.123", - "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 - } - }, "netmap": { - "SelfNode": { - "ID": 7728836216590060, - "StableID": "nf4dJTRQM321CNTRL", - "Name": "user-kris.tail78f774.ts.net.", - "User": 4538565228176803, - "Key": "nodekey:40d0f8f49fd519e4a4a2b7d278dcc8863254d4fb8b0219f1d1304cdd172e795f", - "KeyExpiry": "2026-08-19T14:09:34Z", - "DiscoKey": "discokey:60de987544859962048376b0950731bfa8017a7fc7df694ef376d4bb42eb9871", - "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:59717", "10.65.0.27:59717", "172.17.0.1:59717"], - "Hostinfo": { - "Hostname": "user-kris", - "Services": [ - { "Proto": "peerapi4", "Port": 40159 }, - { "Proto": "peerapi6", "Port": 40159 }, - { "Proto": "peerapi-dns-proxy", "Port": 1 } - ] - }, - "Created": "2026-02-20T14:09:34.803901523Z", - "MachineAuthorized": true, - "CapMap": { - "https://tailscale.com/cap/file-sharing": null, - "https://tailscale.com/cap/is-admin": null, - "https://tailscale.com/cap/ssh": null, - "https://tailscale.com/cap/tailnet-lock": null, - "probe-udp-lifetime": null, - "ssh-behavior-v1": null, - "ssh-env-vars": null, - "store-appc-routes": null, - "tailnet-display-name": ["kratail2tid@passkey"] - }, - "ComputedName": "user-kris", - "ComputedNameWithHost": "user-kris" - }, - "AllCaps": [ - "https://tailscale.com/cap/ssh", - "tailnet-display-name", - "https://tailscale.com/cap/tailnet-lock", - "probe-udp-lifetime", - "https://tailscale.com/cap/file-sharing", - "store-appc-routes", - "ssh-behavior-v1", - "https://tailscale.com/cap/is-admin", - "ssh-env-vars" - ], - "NodeKey": "nodekey:40d0f8f49fd519e4a4a2b7d278dcc8863254d4fb8b0219f1d1304cdd172e795f", - "MachineKey": "mkey:ff16066d907c58407972ee4a05a30386bd21bc0b420d8f9290eb70b95b3e1457", "Peers": [], - "DNS": { - "Routes": { - "tail78f774.ts.net.": null, - "ts.net.": [{ "Addr": "199.247.155.53" }, { "Addr": "2620:111:8007::53" }] - }, - "Domains": ["tail78f774.ts.net"], - "Proxied": true, - "ExitNodeFilteredSet": [".ts.net", ".tailscale.net"] - }, - "PacketFilter": [], - "PacketFilterRules": null, - "SSHPolicy": { "rules": [] }, - "CollectServices": false, - "DERPMap": { - "Regions": { - "1": { - "RegionID": 1, - "RegionCode": "nyc", - "RegionName": "New York City", - "Latitude": 40.7128, - "Longitude": -74.006, - "Nodes": [ - { - "Name": "1h", - "RegionID": 1, - "HostName": "derp1h.tailscale.com", - "IPv4": "199.38.181.93", - "IPv6": "2607:f740:f::afd", - "CanPort80": true - }, - { - "Name": "1g", - "RegionID": 1, - "HostName": "derp1g.tailscale.com", - "IPv4": "209.177.145.120", - "IPv6": "2607:f740:f::3eb", - "CanPort80": true - }, - { - "Name": "1i", - "RegionID": 1, - "HostName": "derp1i.tailscale.com", - "IPv4": "199.38.181.103", - "IPv6": "2607:f740:f::e19", - "CanPort80": true - }, - { - "Name": "1f", - "RegionID": 1, - "HostName": "derp1f.tailscale.com", - "IPv4": "199.38.181.104", - "IPv6": "2607:f740:f::bc", - "CanPort80": true - } - ] - }, - "10": { - "RegionID": 10, - "RegionCode": "sea", - "RegionName": "Seattle", - "Latitude": 47.609722, - "Longitude": -122.333056, - "Nodes": [ - { - "Name": "10c", - "RegionID": 10, - "HostName": "derp10c.tailscale.com", - "IPv4": "192.73.240.121", - "IPv6": "2607:f740:14::40c", - "CanPort80": true - }, - { - "Name": "10d", - "RegionID": 10, - "HostName": "derp10d.tailscale.com", - "IPv4": "192.73.240.132", - "IPv6": "2607:f740:14::500", - "CanPort80": true - }, - { - "Name": "10b", - "RegionID": 10, - "HostName": "derp10b.tailscale.com", - "IPv4": "192.73.240.161", - "IPv6": "2607:f740:14::61c", - "CanPort80": true - } - ] - }, - "11": { - "RegionID": 11, - "RegionCode": "sao", - "RegionName": "São Paulo", - "Latitude": -23.55, - "Longitude": -46.633333, - "Nodes": [ - { - "Name": "11f", - "RegionID": 11, - "HostName": "derp11f.tailscale.com", - "IPv4": "172.237.61.197", - "IPv6": "2600:3c0d::2000:3bff:fe44:6166", - "CanPort80": true - }, - { - "Name": "11g", - "RegionID": 11, - "HostName": "derp11g.tailscale.com", - "IPv4": "172.237.61.190", - "IPv6": "2600:3c0d::2000:62ff:febe:2e67", - "CanPort80": true - }, - { - "Name": "11e", - "RegionID": 11, - "HostName": "derp11e.tailscale.com", - "IPv4": "172.237.61.194", - "IPv6": "2600:3c0d::2000:d2ff:fe43:1790", - "CanPort80": true - } - ] - }, - "12": { - "RegionID": 12, - "RegionCode": "ord", - "RegionName": "Chicago", - "Latitude": 41.881944, - "Longitude": -87.627778, - "Nodes": [ - { - "Name": "12e", - "RegionID": 12, - "HostName": "derp12e.tailscale.com", - "IPv4": "209.177.158.15", - "IPv6": "2607:f740:e::b17", - "CanPort80": true - }, - { - "Name": "12f", - "RegionID": 12, - "HostName": "derp12f.tailscale.com", - "IPv4": "199.38.182.118", - "IPv6": "2607:f740:e::4c8", - "CanPort80": true - }, - { - "Name": "12d", - "RegionID": 12, - "HostName": "derp12d.tailscale.com", - "IPv4": "209.177.158.246", - "IPv6": "2607:f740:e::811", - "CanPort80": true - } - ] - }, - "13": { - "RegionID": 13, - "RegionCode": "den", - "RegionName": "Denver", - "Latitude": 39.7392, - "Longitude": -104.9849, - "Nodes": [ - { - "Name": "13c", - "RegionID": 13, - "HostName": "derp13c.tailscale.com", - "IPv4": "192.73.242.28", - "IPv6": "2607:f740:16::5c", - "CanPort80": true - }, - { - "Name": "13d", - "RegionID": 13, - "HostName": "derp13d.tailscale.com", - "IPv4": "192.73.242.204", - "IPv6": "2607:f740:16::c23", - "CanPort80": true - }, - { - "Name": "13b", - "RegionID": 13, - "HostName": "derp13b.tailscale.com", - "IPv4": "192.73.242.187", - "IPv6": "2607:f740:16::640", - "CanPort80": true - } - ] - }, - "14": { - "RegionID": 14, - "RegionCode": "ams", - "RegionName": "Amsterdam", - "Latitude": 52.372778, - "Longitude": 4.893611, - "Nodes": [ - { - "Name": "14c", - "RegionID": 14, - "HostName": "derp14c.tailscale.com", - "IPv4": "176.58.93.147", - "IPv6": "2a00:dd80:3c::b09", - "CanPort80": true - }, - { - "Name": "14d", - "RegionID": 14, - "HostName": "derp14d.tailscale.com", - "IPv4": "176.58.93.154", - "IPv6": "2a00:dd80:3c::3d5", - "CanPort80": true - }, - { - "Name": "14b", - "RegionID": 14, - "HostName": "derp14b.tailscale.com", - "IPv4": "176.58.93.248", - "IPv6": "2a00:dd80:3c::807", - "CanPort80": true - } - ] - }, - "15": { - "RegionID": 15, - "RegionCode": "jnb", - "RegionName": "Johannesburg", - "Latitude": -26.204444, - "Longitude": 28.045556, - "Nodes": [ - { - "Name": "15c", - "RegionID": 15, - "HostName": "derp15c.tailscale.com", - "IPv4": "102.67.165.185", - "IPv6": "2c0f:edb0:0:10::b59", - "CanPort80": true - }, - { - "Name": "15d", - "RegionID": 15, - "HostName": "derp15d.tailscale.com", - "IPv4": "102.67.165.36", - "IPv6": "2c0f:edb0:0:10::599", - "CanPort80": true - }, - { - "Name": "15b", - "RegionID": 15, - "HostName": "derp15b.tailscale.com", - "IPv4": "102.67.165.90", - "IPv6": "2c0f:edb0:0:10::963", - "CanPort80": true - } - ] - }, - "16": { - "RegionID": 16, - "RegionCode": "mia", - "RegionName": "Miami", - "Latitude": 25.78, - "Longitude": -80.21, - "Nodes": [ - { - "Name": "16c", - "RegionID": 16, - "HostName": "derp16c.tailscale.com", - "IPv4": "192.73.243.229", - "IPv6": "2607:f740:17::4e4", - "CanPort80": true - }, - { - "Name": "16d", - "RegionID": 16, - "HostName": "derp16d.tailscale.com", - "IPv4": "192.73.243.141", - "IPv6": "2607:f740:17::475", - "CanPort80": true - }, - { - "Name": "16b", - "RegionID": 16, - "HostName": "derp16b.tailscale.com", - "IPv4": "192.73.243.135", - "IPv6": "2607:f740:17::476", - "CanPort80": true - } - ] - }, - "17": { - "RegionID": 17, - "RegionCode": "lax", - "RegionName": "Los Angeles", - "Latitude": 34.05, - "Longitude": -118.25, - "Nodes": [ - { - "Name": "17c", - "RegionID": 17, - "HostName": "derp17c.tailscale.com", - "IPv4": "208.111.40.12", - "IPv6": "2607:f740:c::10", - "CanPort80": true - }, - { - "Name": "17d", - "RegionID": 17, - "HostName": "derp17d.tailscale.com", - "IPv4": "208.111.40.216", - "IPv6": "2607:f740:c::e1b", - "CanPort80": true - }, - { - "Name": "17b", - "RegionID": 17, - "HostName": "derp17b.tailscale.com", - "IPv4": "192.73.244.245", - "IPv6": "2607:f740:c::646", - "CanPort80": true - } - ] - }, - "18": { - "RegionID": 18, - "RegionCode": "par", - "RegionName": "Paris", - "Latitude": 48.856667, - "Longitude": 2.352222, - "Nodes": [ - { - "Name": "18c", - "RegionID": 18, - "HostName": "derp18c.tailscale.com", - "IPv4": "176.58.90.207", - "IPv6": "2a00:dd80:3e::c19", - "CanPort80": true - }, - { - "Name": "18d", - "RegionID": 18, - "HostName": "derp18d.tailscale.com", - "IPv4": "176.58.90.104", - "IPv6": "2a00:dd80:3e::f2e", - "CanPort80": true - }, - { - "Name": "18b", - "RegionID": 18, - "HostName": "derp18b.tailscale.com", - "IPv4": "176.58.90.147", - "IPv6": "2a00:dd80:3e::363", - "CanPort80": true - } - ] - }, - "19": { - "RegionID": 19, - "RegionCode": "mad", - "RegionName": "Madrid", - "Latitude": 40.416944, - "Longitude": -3.703333, - "Nodes": [ - { - "Name": "19c", - "RegionID": 19, - "HostName": "derp19c.tailscale.com", - "IPv4": "45.159.97.61", - "IPv6": "2a00:dd80:14:10::20", - "CanPort80": true - }, - { - "Name": "19d", - "RegionID": 19, - "HostName": "derp19d.tailscale.com", - "IPv4": "45.159.97.233", - "IPv6": "2a00:dd80:14:10::34a", - "CanPort80": true - }, - { - "Name": "19b", - "RegionID": 19, - "HostName": "derp19b.tailscale.com", - "IPv4": "45.159.97.144", - "IPv6": "2a00:dd80:14:10::335", - "CanPort80": true - } - ] - }, - "2": { - "RegionID": 2, - "RegionCode": "sfo", - "RegionName": "San Francisco", - "Latitude": 37.7775, - "Longitude": -122.416389, - "Nodes": [ - { - "Name": "2e", - "RegionID": 2, - "HostName": "derp2e.tailscale.com", - "IPv4": "192.73.252.134", - "IPv6": "2607:f740:0:3f::44c", - "CanPort80": true - }, - { - "Name": "2f", - "RegionID": 2, - "HostName": "derp2f.tailscale.com", - "IPv4": "208.111.34.178", - "IPv6": "2607:f740:0:3f::f4", - "CanPort80": true - }, - { - "Name": "2d", - "RegionID": 2, - "HostName": "derp2d.tailscale.com", - "IPv4": "192.73.252.65", - "IPv6": "2607:f740:0:3f::287", - "CanPort80": true - } - ] - }, - "20": { - "RegionID": 20, - "RegionCode": "hkg", - "RegionName": "Hong Kong", - "Latitude": 22.3193, - "Longitude": 114.1694, - "Nodes": [ - { - "Name": "20c", - "RegionID": 20, - "HostName": "derp20c.tailscale.com", - "IPv4": "205.147.105.30", - "IPv6": "2403:2500:8000:1::5fb", - "CanPort80": true - }, - { - "Name": "20d", - "RegionID": 20, - "HostName": "derp20d.tailscale.com", - "IPv4": "205.147.105.78", - "IPv6": "2403:2500:8000:1::e9a", - "CanPort80": true - }, - { - "Name": "20b", - "RegionID": 20, - "HostName": "derp20b.tailscale.com", - "IPv4": "103.6.84.152", - "IPv6": "2403:2500:8000:1::ef6", - "CanPort80": true - } - ] - }, - "21": { - "RegionID": 21, - "RegionCode": "tor", - "RegionName": "Toronto", - "Latitude": 43.741667, - "Longitude": -79.373333, - "Nodes": [ - { - "Name": "21c", - "RegionID": 21, - "HostName": "derp21c.tailscale.com", - "IPv4": "162.248.221.215", - "IPv6": "2607:f740:50::f10", - "CanPort80": true - }, - { - "Name": "21d", - "RegionID": 21, - "HostName": "derp21d.tailscale.com", - "IPv4": "162.248.221.248", - "IPv6": "2607:f740:50::ca4", - "CanPort80": true - }, - { - "Name": "21b", - "RegionID": 21, - "HostName": "derp21b.tailscale.com", - "IPv4": "162.248.221.199", - "IPv6": "2607:f740:50::1d1", - "CanPort80": true - } - ] - }, - "22": { - "RegionID": 22, - "RegionCode": "waw", - "RegionName": "Warsaw", - "Latitude": 52.23, - "Longitude": 21.011111, - "Nodes": [ - { - "Name": "22c", - "RegionID": 22, - "HostName": "derp22c.tailscale.com", - "IPv4": "45.159.98.253", - "IPv6": "2a00:dd80:40:100::3f", - "CanPort80": true - }, - { - "Name": "22d", - "RegionID": 22, - "HostName": "derp22d.tailscale.com", - "IPv4": "45.159.98.145", - "IPv6": "2a00:dd80:40:100::211", - "CanPort80": true - }, - { - "Name": "22b", - "RegionID": 22, - "HostName": "derp22b.tailscale.com", - "IPv4": "45.159.98.196", - "IPv6": "2a00:dd80:40:100::316", - "CanPort80": true - } - ] - }, - "23": { - "RegionID": 23, - "RegionCode": "dbi", - "RegionName": "Dubai", - "Latitude": 25.263056, - "Longitude": 55.297222, - "Nodes": [ - { - "Name": "23c", - "RegionID": 23, - "HostName": "derp23c.tailscale.com", - "IPv4": "185.34.3.207", - "IPv6": "2a00:dd80:3f:100::a50", - "CanPort80": true - }, - { - "Name": "23d", - "RegionID": 23, - "HostName": "derp23d.tailscale.com", - "IPv4": "185.34.3.75", - "IPv6": "2a00:dd80:3f:100::97e", - "CanPort80": true - }, - { - "Name": "23b", - "RegionID": 23, - "HostName": "derp23b.tailscale.com", - "IPv4": "185.34.3.232", - "IPv6": "2a00:dd80:3f:100::76f", - "CanPort80": true - } - ] - }, - "24": { - "RegionID": 24, - "RegionCode": "hnl", - "RegionName": "Honolulu", - "Latitude": 21.306944, - "Longitude": -157.858333, - "Nodes": [ - { - "Name": "24c", - "RegionID": 24, - "HostName": "derp24c.tailscale.com", - "IPv4": "208.83.233.233", - "IPv6": "2001:19f0:c000:c591:5400:04ff:fe26:2c5f", - "CanPort80": true - }, - { - "Name": "24d", - "RegionID": 24, - "HostName": "derp24d.tailscale.com", - "IPv4": "208.72.155.133", - "IPv6": "2001:19f0:c000:c564:5400:04ff:fe26:2ba8", - "CanPort80": true - }, - { - "Name": "24b", - "RegionID": 24, - "HostName": "derp24b.tailscale.com", - "IPv4": "208.83.234.151", - "IPv6": "2001:19f0:c000:c586:5400:04ff:fe26:2ba6", - "CanPort80": true - } - ] - }, - "25": { - "RegionID": 25, - "RegionCode": "nai", - "RegionName": "Nairobi", - "Latitude": -1.286389, - "Longitude": 36.817222, - "Nodes": [ - { - "Name": "25c", - "RegionID": 25, - "HostName": "derp25c.tailscale.com", - "IPv4": "102.67.167.37", - "IPv6": "2c0f:edb0:2000:1::2c7", - "CanPort80": true - }, - { - "Name": "25d", - "RegionID": 25, - "HostName": "derp25d.tailscale.com", - "IPv4": "102.67.167.188", - "IPv6": "2c0f:edb0:2000:1::188", - "CanPort80": true - }, - { - "Name": "25b", - "RegionID": 25, - "HostName": "derp25b.tailscale.com", - "IPv4": "102.67.167.245", - "IPv6": "2c0f:edb0:2000:1::2e9", - "CanPort80": true - } - ] - }, - "26": { - "RegionID": 26, - "RegionCode": "nue", - "RegionName": "Nuremberg", - "Latitude": 49.453889, - "Longitude": 11.0775, - "Nodes": [ - { - "Name": "26c", - "RegionID": 26, - "HostName": "derp26c.tailscale.com", - "IPv4": "49.12.193.137", - "IPv6": "2a01:4f8:1c1c:5c70::1", - "CanPort80": true - }, - { - "Name": "26d", - "RegionID": 26, - "HostName": "derp26d.tailscale.com", - "IPv4": "49.13.204.141", - "IPv6": "2a01:4f8:1c0c:7d06::1", - "CanPort80": true - }, - { - "Name": "26b", - "RegionID": 26, - "HostName": "derp26b.tailscale.com", - "IPv4": "167.235.72.200", - "IPv6": "2a01:4f8:1c1c:47b6::1", - "CanPort80": true - } - ] - }, - "27": { - "RegionID": 27, - "RegionCode": "iad", - "RegionName": "Ashburn", - "Latitude": 39.03, - "Longitude": -77.471111, - "Nodes": [ - { - "Name": "27d", - "RegionID": 27, - "HostName": "derp27d.tailscale.com", - "IPv4": "178.156.152.106", - "IPv6": "2a01:4ff:f0:3c8e::1", - "CanPort80": true - }, - { - "Name": "27c", - "RegionID": 27, - "HostName": "derp27c.tailscale.com", - "IPv4": "178.156.152.91", - "IPv6": "2a01:4ff:f0:3913::1", - "CanPort80": true - }, - { - "Name": "27e", - "RegionID": 27, - "HostName": "derp27e.tailscale.com", - "IPv4": "178.156.134.232", - "IPv6": "2a01:4ff:f0:28d4::1", - "CanPort80": true - }, - { - "Name": "27b", - "RegionID": 27, - "HostName": "derp27b.tailscale.com", - "IPv4": "5.161.218.233", - "IPv6": "2a01:4ff:f0:3db9::1", - "CanPort80": true - } - ] - }, - "28": { - "RegionID": 28, - "RegionCode": "hel", - "RegionName": "Helsinki", - "Latitude": 60.170833, - "Longitude": 24.9375, - "Nodes": [ - { - "Name": "28c", - "RegionID": 28, - "HostName": "derp28c.tailscale.com", - "IPv4": "95.217.2.165", - "IPv6": "2a01:4f9:c012:cd74::1", - "CanPort80": true - }, - { - "Name": "28d", - "RegionID": 28, - "HostName": "derp28d.tailscale.com", - "IPv4": "157.180.28.32", - "IPv6": "2a01:4f9:c012:2e5b::1", - "CanPort80": true - }, - { - "Name": "28b", - "RegionID": 28, - "HostName": "derp28b.tailscale.com", - "IPv4": "65.109.143.62", - "IPv6": "2a01:4f9:c012:d55c::1", - "CanPort80": true - } - ] - }, - "3": { - "RegionID": 3, - "RegionCode": "sin", - "RegionName": "Singapore", - "Latitude": 1.3521, - "Longitude": 103.8198, - "Nodes": [ - { - "Name": "3g", - "RegionID": 3, - "HostName": "derp3g.tailscale.com", - "IPv4": "172.237.72.79", - "IPv6": "2600:3c15::2000:adff:fe08:6fab", - "CanPort80": true - }, - { - "Name": "3f", - "RegionID": 3, - "HostName": "derp3f.tailscale.com", - "IPv4": "172.237.72.8", - "IPv6": "2600:3c15::2000:53ff:fe48:a668", - "CanPort80": true - }, - { - "Name": "3h", - "RegionID": 3, - "HostName": "derp3h.tailscale.com", - "IPv4": "172.237.66.30", - "IPv6": "2600:3c15::2000:3dff:fe44:50aa", - "CanPort80": true - }, - { - "Name": "3e", - "RegionID": 3, - "HostName": "derp3e.tailscale.com", - "IPv4": "172.237.72.43", - "IPv6": "2600:3c15::2000:6cff:fee4:d799", - "CanPort80": true - } - ] - }, - "4": { - "RegionID": 4, - "RegionCode": "fra", - "RegionName": "Frankfurt", - "Latitude": 50.1109, - "Longitude": 8.6821, - "Nodes": [ - { - "Name": "4h", - "RegionID": 4, - "HostName": "derp4h.tailscale.com", - "IPv4": "185.40.234.77", - "IPv6": "2a00:dd80:20::bcf", - "CanPort80": true - }, - { - "Name": "4g", - "RegionID": 4, - "HostName": "derp4g.tailscale.com", - "IPv4": "185.40.234.113", - "IPv6": "2a00:dd80:20::8f", - "CanPort80": true - }, - { - "Name": "4i", - "RegionID": 4, - "HostName": "derp4i.tailscale.com", - "IPv4": "185.40.234.53", - "IPv6": "2a00:dd80:20::8a6", - "CanPort80": true - }, - { - "Name": "4f", - "RegionID": 4, - "HostName": "derp4f.tailscale.com", - "IPv4": "185.40.234.219", - "IPv6": "2a00:dd80:20::a25", - "CanPort80": true - } - ] - }, - "5": { - "RegionID": 5, - "RegionCode": "syd", - "RegionName": "Sydney", - "Latitude": -33.867778, - "Longitude": 151.21, - "Nodes": [ - { - "Name": "5f", - "RegionID": 5, - "HostName": "derp5f.tailscale.com", - "IPv4": "172.105.166.103", - "IPv6": "2400:8907::2000:ccff:fe1f:80da", - "CanPort80": true - }, - { - "Name": "5g", - "RegionID": 5, - "HostName": "derp5g.tailscale.com", - "IPv4": "172.105.169.57", - "IPv6": "2400:8907::2000:2fff:fea7:57f4", - "CanPort80": true - }, - { - "Name": "5e", - "RegionID": 5, - "HostName": "derp5e.tailscale.com", - "IPv4": "172.105.179.230", - "IPv6": "2400:8907::2000:ceff:fe8d:4f4e", - "CanPort80": true - } - ] - }, - "6": { - "RegionID": 6, - "RegionCode": "blr", - "RegionName": "Bengaluru", - "Latitude": 12.9716, - "Longitude": 77.5946, - "Nodes": [ - { - "Name": "6a", - "RegionID": 6, - "HostName": "derp6.tailscale.com", - "IPv4": "68.183.90.120", - "IPv6": "2400:6180:100:d0::982:d001", - "CanPort80": true - } - ] - }, - "7": { - "RegionID": 7, - "RegionCode": "tok", - "RegionName": "Tokyo", - "Latitude": 35.6764, - "Longitude": 139.65, - "Nodes": [ - { - "Name": "7g", - "RegionID": 7, - "HostName": "derp7g.tailscale.com", - "IPv4": "172.238.6.179", - "IPv6": "2600:3c18::2000:3fff:fe80:3ebd", - "CanPort80": true - }, - { - "Name": "7f", - "RegionID": 7, - "HostName": "derp7f.tailscale.com", - "IPv4": "172.238.6.34", - "IPv6": "2600:3c18::2000:acff:fe8e:3ed5", - "CanPort80": true - }, - { - "Name": "7h", - "RegionID": 7, - "HostName": "derp7h.tailscale.com", - "IPv4": "172.237.28.183", - "IPv6": "2600:3c18::2000:b1ff:fea9:4560", - "CanPort80": true - }, - { - "Name": "7e", - "RegionID": 7, - "HostName": "derp7e.tailscale.com", - "IPv4": "172.238.6.180", - "IPv6": "2600:3c18::2000:60ff:fe0f:6e83", - "STUNOnly": true, - "CanPort80": true - } - ] - }, - "8": { - "RegionID": 8, - "RegionCode": "lhr", - "RegionName": "London", - "Latitude": 51.5072, - "Longitude": 0.1276, - "Nodes": [ - { - "Name": "8f", - "RegionID": 8, - "HostName": "derp8f.tailscale.com", - "IPv4": "176.58.88.183", - "IPv6": "2a00:dd80:3a::dfa", - "CanPort80": true - }, - { - "Name": "8g", - "RegionID": 8, - "HostName": "derp8g.tailscale.com", - "IPv4": "176.58.92.254", - "IPv6": "2a00:dd80:3a::ed", - "CanPort80": true - }, - { - "Name": "8e", - "RegionID": 8, - "HostName": "derp8e.tailscale.com", - "IPv4": "176.58.92.144", - "IPv6": "2a00:dd80:3a::b33", - "CanPort80": true - } - ] - }, - "9": { - "RegionID": 9, - "RegionCode": "dfw", - "RegionName": "Dallas", - "Latitude": 32.779167, - "Longitude": -96.808889, - "Nodes": [ - { - "Name": "9e", - "RegionID": 9, - "HostName": "derp9e.tailscale.com", - "IPv4": "192.73.248.83", - "IPv6": "2607:f740:100::359", - "CanPort80": true - }, - { - "Name": "9f", - "RegionID": 9, - "HostName": "derp9f.tailscale.com", - "IPv4": "209.177.156.197", - "IPv6": "2607:f740:100::cad", - "CanPort80": true - }, - { - "Name": "9d", - "RegionID": 9, - "HostName": "derp9d.tailscale.com", - "IPv4": "209.177.156.94", - "IPv6": "2607:f740:100::c05", - "CanPort80": true - } - ] - } - } - }, - "DisplayMessages": null, - "TKAEnabled": false, - "TKAHead": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", - "Domain": "kratail2tid@passkey", - "DomainAuditLogID": "", - "UserProfiles": { - "4538565228176803": { - "ID": 4538565228176803, - "LoginName": "kristoffer@dalby.cc", - "DisplayName": "kristoffer" - } - } + "PacketFilterRules": 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.124.195.93": { - "peer_name": "exit-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-mon/tailscaled.sock whois --json 100.124.195.93", - "response": null - }, - "100.116.18.24": { - "peer_name": "exit-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-mon/tailscaled.sock whois --json 100.116.18.24", - "response": null - }, - "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.107.162.14": { - "peer_name": "group-a-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-mon/tailscaled.sock whois --json 100.107.162.14", - "response": null - }, - "100.77.135.18": { - "peer_name": "group-b-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-mon/tailscaled.sock whois --json 100.77.135.18", - "response": null - }, - "100.105.127.107": { - "peer_name": "multi-exit-router", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-mon/tailscaled.sock whois --json 100.105.127.107", - "response": null - }, - "100.109.43.124": { - "peer_name": "router-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-mon/tailscaled.sock whois --json 100.109.43.124", - "response": null - }, - "100.65.172.123": { - "peer_name": "router-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-mon/tailscaled.sock whois --json 100.65.172.123", - "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 - } - }, "netmap": { - "SelfNode": { - "ID": 1840115676059256, - "StableID": "nFzZ7giPNF11CNTRL", - "Name": "user-mon.tail78f774.ts.net.", - "User": 3982058329734709, - "Key": "nodekey:1ca6cca66d2b3811ec290c2f7ac30125c3568e19e303a8e30f6b165c9ee75a51", - "KeyExpiry": "2026-08-19T14:09:00Z", - "DiscoKey": "discokey:67ba1473894f09b564073adb12b27df2a45c513afd9e48922a0346d5d2715d12", - "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:36593", "10.65.0.27:36593", "172.17.0.1:36593"], - "Hostinfo": { - "Hostname": "user-mon", - "Services": [ - { "Proto": "peerapi4", "Port": 33201 }, - { "Proto": "peerapi6", "Port": 33201 }, - { "Proto": "peerapi-dns-proxy", "Port": 1 } - ] - }, - "Created": "2026-02-20T14:09:00.203639664Z", - "MachineAuthorized": true, - "CapMap": { - "https://tailscale.com/cap/file-sharing": null, - "https://tailscale.com/cap/is-admin": null, - "https://tailscale.com/cap/ssh": null, - "https://tailscale.com/cap/tailnet-lock": null, - "probe-udp-lifetime": null, - "ssh-behavior-v1": null, - "ssh-env-vars": null, - "store-appc-routes": null, - "tailnet-display-name": ["kratail2tid@passkey"] - }, - "ComputedName": "user-mon", - "ComputedNameWithHost": "user-mon" - }, - "AllCaps": [ - "tailnet-display-name", - "https://tailscale.com/cap/is-admin", - "ssh-behavior-v1", - "https://tailscale.com/cap/tailnet-lock", - "https://tailscale.com/cap/file-sharing", - "https://tailscale.com/cap/ssh", - "ssh-env-vars", - "store-appc-routes", - "probe-udp-lifetime" - ], - "NodeKey": "nodekey:1ca6cca66d2b3811ec290c2f7ac30125c3568e19e303a8e30f6b165c9ee75a51", - "MachineKey": "mkey:d63fc325663eef5dabd4d236e1fa5a26ed14ad31ea0711840cf755a5e8a9df39", "Peers": [], - "DNS": { - "Routes": { - "tail78f774.ts.net.": null, - "ts.net.": [{ "Addr": "199.247.155.53" }, { "Addr": "2620:111:8007::53" }] - }, - "Domains": ["tail78f774.ts.net"], - "Proxied": true, - "ExitNodeFilteredSet": [".ts.net", ".tailscale.net"] - }, - "PacketFilter": [], - "PacketFilterRules": null, - "SSHPolicy": { "rules": [] }, - "CollectServices": false, - "DERPMap": { - "Regions": { - "1": { - "RegionID": 1, - "RegionCode": "nyc", - "RegionName": "New York City", - "Latitude": 40.7128, - "Longitude": -74.006, - "Nodes": [ - { - "Name": "1h", - "RegionID": 1, - "HostName": "derp1h.tailscale.com", - "IPv4": "199.38.181.93", - "IPv6": "2607:f740:f::afd", - "CanPort80": true - }, - { - "Name": "1g", - "RegionID": 1, - "HostName": "derp1g.tailscale.com", - "IPv4": "209.177.145.120", - "IPv6": "2607:f740:f::3eb", - "CanPort80": true - }, - { - "Name": "1i", - "RegionID": 1, - "HostName": "derp1i.tailscale.com", - "IPv4": "199.38.181.103", - "IPv6": "2607:f740:f::e19", - "CanPort80": true - }, - { - "Name": "1f", - "RegionID": 1, - "HostName": "derp1f.tailscale.com", - "IPv4": "199.38.181.104", - "IPv6": "2607:f740:f::bc", - "CanPort80": true - } - ] - }, - "10": { - "RegionID": 10, - "RegionCode": "sea", - "RegionName": "Seattle", - "Latitude": 47.609722, - "Longitude": -122.333056, - "Nodes": [ - { - "Name": "10c", - "RegionID": 10, - "HostName": "derp10c.tailscale.com", - "IPv4": "192.73.240.121", - "IPv6": "2607:f740:14::40c", - "CanPort80": true - }, - { - "Name": "10d", - "RegionID": 10, - "HostName": "derp10d.tailscale.com", - "IPv4": "192.73.240.132", - "IPv6": "2607:f740:14::500", - "CanPort80": true - }, - { - "Name": "10b", - "RegionID": 10, - "HostName": "derp10b.tailscale.com", - "IPv4": "192.73.240.161", - "IPv6": "2607:f740:14::61c", - "CanPort80": true - } - ] - }, - "11": { - "RegionID": 11, - "RegionCode": "sao", - "RegionName": "São Paulo", - "Latitude": -23.55, - "Longitude": -46.633333, - "Nodes": [ - { - "Name": "11f", - "RegionID": 11, - "HostName": "derp11f.tailscale.com", - "IPv4": "172.237.61.197", - "IPv6": "2600:3c0d::2000:3bff:fe44:6166", - "CanPort80": true - }, - { - "Name": "11g", - "RegionID": 11, - "HostName": "derp11g.tailscale.com", - "IPv4": "172.237.61.190", - "IPv6": "2600:3c0d::2000:62ff:febe:2e67", - "CanPort80": true - }, - { - "Name": "11e", - "RegionID": 11, - "HostName": "derp11e.tailscale.com", - "IPv4": "172.237.61.194", - "IPv6": "2600:3c0d::2000:d2ff:fe43:1790", - "CanPort80": true - } - ] - }, - "12": { - "RegionID": 12, - "RegionCode": "ord", - "RegionName": "Chicago", - "Latitude": 41.881944, - "Longitude": -87.627778, - "Nodes": [ - { - "Name": "12e", - "RegionID": 12, - "HostName": "derp12e.tailscale.com", - "IPv4": "209.177.158.15", - "IPv6": "2607:f740:e::b17", - "CanPort80": true - }, - { - "Name": "12f", - "RegionID": 12, - "HostName": "derp12f.tailscale.com", - "IPv4": "199.38.182.118", - "IPv6": "2607:f740:e::4c8", - "CanPort80": true - }, - { - "Name": "12d", - "RegionID": 12, - "HostName": "derp12d.tailscale.com", - "IPv4": "209.177.158.246", - "IPv6": "2607:f740:e::811", - "CanPort80": true - } - ] - }, - "13": { - "RegionID": 13, - "RegionCode": "den", - "RegionName": "Denver", - "Latitude": 39.7392, - "Longitude": -104.9849, - "Nodes": [ - { - "Name": "13c", - "RegionID": 13, - "HostName": "derp13c.tailscale.com", - "IPv4": "192.73.242.28", - "IPv6": "2607:f740:16::5c", - "CanPort80": true - }, - { - "Name": "13d", - "RegionID": 13, - "HostName": "derp13d.tailscale.com", - "IPv4": "192.73.242.204", - "IPv6": "2607:f740:16::c23", - "CanPort80": true - }, - { - "Name": "13b", - "RegionID": 13, - "HostName": "derp13b.tailscale.com", - "IPv4": "192.73.242.187", - "IPv6": "2607:f740:16::640", - "CanPort80": true - } - ] - }, - "14": { - "RegionID": 14, - "RegionCode": "ams", - "RegionName": "Amsterdam", - "Latitude": 52.372778, - "Longitude": 4.893611, - "Nodes": [ - { - "Name": "14c", - "RegionID": 14, - "HostName": "derp14c.tailscale.com", - "IPv4": "176.58.93.147", - "IPv6": "2a00:dd80:3c::b09", - "CanPort80": true - }, - { - "Name": "14d", - "RegionID": 14, - "HostName": "derp14d.tailscale.com", - "IPv4": "176.58.93.154", - "IPv6": "2a00:dd80:3c::3d5", - "CanPort80": true - }, - { - "Name": "14b", - "RegionID": 14, - "HostName": "derp14b.tailscale.com", - "IPv4": "176.58.93.248", - "IPv6": "2a00:dd80:3c::807", - "CanPort80": true - } - ] - }, - "15": { - "RegionID": 15, - "RegionCode": "jnb", - "RegionName": "Johannesburg", - "Latitude": -26.204444, - "Longitude": 28.045556, - "Nodes": [ - { - "Name": "15c", - "RegionID": 15, - "HostName": "derp15c.tailscale.com", - "IPv4": "102.67.165.185", - "IPv6": "2c0f:edb0:0:10::b59", - "CanPort80": true - }, - { - "Name": "15d", - "RegionID": 15, - "HostName": "derp15d.tailscale.com", - "IPv4": "102.67.165.36", - "IPv6": "2c0f:edb0:0:10::599", - "CanPort80": true - }, - { - "Name": "15b", - "RegionID": 15, - "HostName": "derp15b.tailscale.com", - "IPv4": "102.67.165.90", - "IPv6": "2c0f:edb0:0:10::963", - "CanPort80": true - } - ] - }, - "16": { - "RegionID": 16, - "RegionCode": "mia", - "RegionName": "Miami", - "Latitude": 25.78, - "Longitude": -80.21, - "Nodes": [ - { - "Name": "16c", - "RegionID": 16, - "HostName": "derp16c.tailscale.com", - "IPv4": "192.73.243.229", - "IPv6": "2607:f740:17::4e4", - "CanPort80": true - }, - { - "Name": "16d", - "RegionID": 16, - "HostName": "derp16d.tailscale.com", - "IPv4": "192.73.243.141", - "IPv6": "2607:f740:17::475", - "CanPort80": true - }, - { - "Name": "16b", - "RegionID": 16, - "HostName": "derp16b.tailscale.com", - "IPv4": "192.73.243.135", - "IPv6": "2607:f740:17::476", - "CanPort80": true - } - ] - }, - "17": { - "RegionID": 17, - "RegionCode": "lax", - "RegionName": "Los Angeles", - "Latitude": 34.05, - "Longitude": -118.25, - "Nodes": [ - { - "Name": "17c", - "RegionID": 17, - "HostName": "derp17c.tailscale.com", - "IPv4": "208.111.40.12", - "IPv6": "2607:f740:c::10", - "CanPort80": true - }, - { - "Name": "17d", - "RegionID": 17, - "HostName": "derp17d.tailscale.com", - "IPv4": "208.111.40.216", - "IPv6": "2607:f740:c::e1b", - "CanPort80": true - }, - { - "Name": "17b", - "RegionID": 17, - "HostName": "derp17b.tailscale.com", - "IPv4": "192.73.244.245", - "IPv6": "2607:f740:c::646", - "CanPort80": true - } - ] - }, - "18": { - "RegionID": 18, - "RegionCode": "par", - "RegionName": "Paris", - "Latitude": 48.856667, - "Longitude": 2.352222, - "Nodes": [ - { - "Name": "18c", - "RegionID": 18, - "HostName": "derp18c.tailscale.com", - "IPv4": "176.58.90.207", - "IPv6": "2a00:dd80:3e::c19", - "CanPort80": true - }, - { - "Name": "18d", - "RegionID": 18, - "HostName": "derp18d.tailscale.com", - "IPv4": "176.58.90.104", - "IPv6": "2a00:dd80:3e::f2e", - "CanPort80": true - }, - { - "Name": "18b", - "RegionID": 18, - "HostName": "derp18b.tailscale.com", - "IPv4": "176.58.90.147", - "IPv6": "2a00:dd80:3e::363", - "CanPort80": true - } - ] - }, - "19": { - "RegionID": 19, - "RegionCode": "mad", - "RegionName": "Madrid", - "Latitude": 40.416944, - "Longitude": -3.703333, - "Nodes": [ - { - "Name": "19c", - "RegionID": 19, - "HostName": "derp19c.tailscale.com", - "IPv4": "45.159.97.61", - "IPv6": "2a00:dd80:14:10::20", - "CanPort80": true - }, - { - "Name": "19d", - "RegionID": 19, - "HostName": "derp19d.tailscale.com", - "IPv4": "45.159.97.233", - "IPv6": "2a00:dd80:14:10::34a", - "CanPort80": true - }, - { - "Name": "19b", - "RegionID": 19, - "HostName": "derp19b.tailscale.com", - "IPv4": "45.159.97.144", - "IPv6": "2a00:dd80:14:10::335", - "CanPort80": true - } - ] - }, - "2": { - "RegionID": 2, - "RegionCode": "sfo", - "RegionName": "San Francisco", - "Latitude": 37.7775, - "Longitude": -122.416389, - "Nodes": [ - { - "Name": "2e", - "RegionID": 2, - "HostName": "derp2e.tailscale.com", - "IPv4": "192.73.252.134", - "IPv6": "2607:f740:0:3f::44c", - "CanPort80": true - }, - { - "Name": "2f", - "RegionID": 2, - "HostName": "derp2f.tailscale.com", - "IPv4": "208.111.34.178", - "IPv6": "2607:f740:0:3f::f4", - "CanPort80": true - }, - { - "Name": "2d", - "RegionID": 2, - "HostName": "derp2d.tailscale.com", - "IPv4": "192.73.252.65", - "IPv6": "2607:f740:0:3f::287", - "CanPort80": true - } - ] - }, - "20": { - "RegionID": 20, - "RegionCode": "hkg", - "RegionName": "Hong Kong", - "Latitude": 22.3193, - "Longitude": 114.1694, - "Nodes": [ - { - "Name": "20c", - "RegionID": 20, - "HostName": "derp20c.tailscale.com", - "IPv4": "205.147.105.30", - "IPv6": "2403:2500:8000:1::5fb", - "CanPort80": true - }, - { - "Name": "20d", - "RegionID": 20, - "HostName": "derp20d.tailscale.com", - "IPv4": "205.147.105.78", - "IPv6": "2403:2500:8000:1::e9a", - "CanPort80": true - }, - { - "Name": "20b", - "RegionID": 20, - "HostName": "derp20b.tailscale.com", - "IPv4": "103.6.84.152", - "IPv6": "2403:2500:8000:1::ef6", - "CanPort80": true - } - ] - }, - "21": { - "RegionID": 21, - "RegionCode": "tor", - "RegionName": "Toronto", - "Latitude": 43.741667, - "Longitude": -79.373333, - "Nodes": [ - { - "Name": "21c", - "RegionID": 21, - "HostName": "derp21c.tailscale.com", - "IPv4": "162.248.221.215", - "IPv6": "2607:f740:50::f10", - "CanPort80": true - }, - { - "Name": "21d", - "RegionID": 21, - "HostName": "derp21d.tailscale.com", - "IPv4": "162.248.221.248", - "IPv6": "2607:f740:50::ca4", - "CanPort80": true - }, - { - "Name": "21b", - "RegionID": 21, - "HostName": "derp21b.tailscale.com", - "IPv4": "162.248.221.199", - "IPv6": "2607:f740:50::1d1", - "CanPort80": true - } - ] - }, - "22": { - "RegionID": 22, - "RegionCode": "waw", - "RegionName": "Warsaw", - "Latitude": 52.23, - "Longitude": 21.011111, - "Nodes": [ - { - "Name": "22c", - "RegionID": 22, - "HostName": "derp22c.tailscale.com", - "IPv4": "45.159.98.253", - "IPv6": "2a00:dd80:40:100::3f", - "CanPort80": true - }, - { - "Name": "22d", - "RegionID": 22, - "HostName": "derp22d.tailscale.com", - "IPv4": "45.159.98.145", - "IPv6": "2a00:dd80:40:100::211", - "CanPort80": true - }, - { - "Name": "22b", - "RegionID": 22, - "HostName": "derp22b.tailscale.com", - "IPv4": "45.159.98.196", - "IPv6": "2a00:dd80:40:100::316", - "CanPort80": true - } - ] - }, - "23": { - "RegionID": 23, - "RegionCode": "dbi", - "RegionName": "Dubai", - "Latitude": 25.263056, - "Longitude": 55.297222, - "Nodes": [ - { - "Name": "23c", - "RegionID": 23, - "HostName": "derp23c.tailscale.com", - "IPv4": "185.34.3.207", - "IPv6": "2a00:dd80:3f:100::a50", - "CanPort80": true - }, - { - "Name": "23d", - "RegionID": 23, - "HostName": "derp23d.tailscale.com", - "IPv4": "185.34.3.75", - "IPv6": "2a00:dd80:3f:100::97e", - "CanPort80": true - }, - { - "Name": "23b", - "RegionID": 23, - "HostName": "derp23b.tailscale.com", - "IPv4": "185.34.3.232", - "IPv6": "2a00:dd80:3f:100::76f", - "CanPort80": true - } - ] - }, - "24": { - "RegionID": 24, - "RegionCode": "hnl", - "RegionName": "Honolulu", - "Latitude": 21.306944, - "Longitude": -157.858333, - "Nodes": [ - { - "Name": "24c", - "RegionID": 24, - "HostName": "derp24c.tailscale.com", - "IPv4": "208.83.233.233", - "IPv6": "2001:19f0:c000:c591:5400:04ff:fe26:2c5f", - "CanPort80": true - }, - { - "Name": "24d", - "RegionID": 24, - "HostName": "derp24d.tailscale.com", - "IPv4": "208.72.155.133", - "IPv6": "2001:19f0:c000:c564:5400:04ff:fe26:2ba8", - "CanPort80": true - }, - { - "Name": "24b", - "RegionID": 24, - "HostName": "derp24b.tailscale.com", - "IPv4": "208.83.234.151", - "IPv6": "2001:19f0:c000:c586:5400:04ff:fe26:2ba6", - "CanPort80": true - } - ] - }, - "25": { - "RegionID": 25, - "RegionCode": "nai", - "RegionName": "Nairobi", - "Latitude": -1.286389, - "Longitude": 36.817222, - "Nodes": [ - { - "Name": "25c", - "RegionID": 25, - "HostName": "derp25c.tailscale.com", - "IPv4": "102.67.167.37", - "IPv6": "2c0f:edb0:2000:1::2c7", - "CanPort80": true - }, - { - "Name": "25d", - "RegionID": 25, - "HostName": "derp25d.tailscale.com", - "IPv4": "102.67.167.188", - "IPv6": "2c0f:edb0:2000:1::188", - "CanPort80": true - }, - { - "Name": "25b", - "RegionID": 25, - "HostName": "derp25b.tailscale.com", - "IPv4": "102.67.167.245", - "IPv6": "2c0f:edb0:2000:1::2e9", - "CanPort80": true - } - ] - }, - "26": { - "RegionID": 26, - "RegionCode": "nue", - "RegionName": "Nuremberg", - "Latitude": 49.453889, - "Longitude": 11.0775, - "Nodes": [ - { - "Name": "26c", - "RegionID": 26, - "HostName": "derp26c.tailscale.com", - "IPv4": "49.12.193.137", - "IPv6": "2a01:4f8:1c1c:5c70::1", - "CanPort80": true - }, - { - "Name": "26d", - "RegionID": 26, - "HostName": "derp26d.tailscale.com", - "IPv4": "49.13.204.141", - "IPv6": "2a01:4f8:1c0c:7d06::1", - "CanPort80": true - }, - { - "Name": "26b", - "RegionID": 26, - "HostName": "derp26b.tailscale.com", - "IPv4": "167.235.72.200", - "IPv6": "2a01:4f8:1c1c:47b6::1", - "CanPort80": true - } - ] - }, - "27": { - "RegionID": 27, - "RegionCode": "iad", - "RegionName": "Ashburn", - "Latitude": 39.03, - "Longitude": -77.471111, - "Nodes": [ - { - "Name": "27d", - "RegionID": 27, - "HostName": "derp27d.tailscale.com", - "IPv4": "178.156.152.106", - "IPv6": "2a01:4ff:f0:3c8e::1", - "CanPort80": true - }, - { - "Name": "27c", - "RegionID": 27, - "HostName": "derp27c.tailscale.com", - "IPv4": "178.156.152.91", - "IPv6": "2a01:4ff:f0:3913::1", - "CanPort80": true - }, - { - "Name": "27e", - "RegionID": 27, - "HostName": "derp27e.tailscale.com", - "IPv4": "178.156.134.232", - "IPv6": "2a01:4ff:f0:28d4::1", - "CanPort80": true - }, - { - "Name": "27b", - "RegionID": 27, - "HostName": "derp27b.tailscale.com", - "IPv4": "5.161.218.233", - "IPv6": "2a01:4ff:f0:3db9::1", - "CanPort80": true - } - ] - }, - "28": { - "RegionID": 28, - "RegionCode": "hel", - "RegionName": "Helsinki", - "Latitude": 60.170833, - "Longitude": 24.9375, - "Nodes": [ - { - "Name": "28c", - "RegionID": 28, - "HostName": "derp28c.tailscale.com", - "IPv4": "95.217.2.165", - "IPv6": "2a01:4f9:c012:cd74::1", - "CanPort80": true - }, - { - "Name": "28d", - "RegionID": 28, - "HostName": "derp28d.tailscale.com", - "IPv4": "157.180.28.32", - "IPv6": "2a01:4f9:c012:2e5b::1", - "CanPort80": true - }, - { - "Name": "28b", - "RegionID": 28, - "HostName": "derp28b.tailscale.com", - "IPv4": "65.109.143.62", - "IPv6": "2a01:4f9:c012:d55c::1", - "CanPort80": true - } - ] - }, - "3": { - "RegionID": 3, - "RegionCode": "sin", - "RegionName": "Singapore", - "Latitude": 1.3521, - "Longitude": 103.8198, - "Nodes": [ - { - "Name": "3g", - "RegionID": 3, - "HostName": "derp3g.tailscale.com", - "IPv4": "172.237.72.79", - "IPv6": "2600:3c15::2000:adff:fe08:6fab", - "CanPort80": true - }, - { - "Name": "3f", - "RegionID": 3, - "HostName": "derp3f.tailscale.com", - "IPv4": "172.237.72.8", - "IPv6": "2600:3c15::2000:53ff:fe48:a668", - "CanPort80": true - }, - { - "Name": "3h", - "RegionID": 3, - "HostName": "derp3h.tailscale.com", - "IPv4": "172.237.66.30", - "IPv6": "2600:3c15::2000:3dff:fe44:50aa", - "CanPort80": true - }, - { - "Name": "3e", - "RegionID": 3, - "HostName": "derp3e.tailscale.com", - "IPv4": "172.237.72.43", - "IPv6": "2600:3c15::2000:6cff:fee4:d799", - "CanPort80": true - } - ] - }, - "4": { - "RegionID": 4, - "RegionCode": "fra", - "RegionName": "Frankfurt", - "Latitude": 50.1109, - "Longitude": 8.6821, - "Nodes": [ - { - "Name": "4h", - "RegionID": 4, - "HostName": "derp4h.tailscale.com", - "IPv4": "185.40.234.77", - "IPv6": "2a00:dd80:20::bcf", - "CanPort80": true - }, - { - "Name": "4g", - "RegionID": 4, - "HostName": "derp4g.tailscale.com", - "IPv4": "185.40.234.113", - "IPv6": "2a00:dd80:20::8f", - "CanPort80": true - }, - { - "Name": "4i", - "RegionID": 4, - "HostName": "derp4i.tailscale.com", - "IPv4": "185.40.234.53", - "IPv6": "2a00:dd80:20::8a6", - "CanPort80": true - }, - { - "Name": "4f", - "RegionID": 4, - "HostName": "derp4f.tailscale.com", - "IPv4": "185.40.234.219", - "IPv6": "2a00:dd80:20::a25", - "CanPort80": true - } - ] - }, - "5": { - "RegionID": 5, - "RegionCode": "syd", - "RegionName": "Sydney", - "Latitude": -33.867778, - "Longitude": 151.21, - "Nodes": [ - { - "Name": "5f", - "RegionID": 5, - "HostName": "derp5f.tailscale.com", - "IPv4": "172.105.166.103", - "IPv6": "2400:8907::2000:ccff:fe1f:80da", - "CanPort80": true - }, - { - "Name": "5g", - "RegionID": 5, - "HostName": "derp5g.tailscale.com", - "IPv4": "172.105.169.57", - "IPv6": "2400:8907::2000:2fff:fea7:57f4", - "CanPort80": true - }, - { - "Name": "5e", - "RegionID": 5, - "HostName": "derp5e.tailscale.com", - "IPv4": "172.105.179.230", - "IPv6": "2400:8907::2000:ceff:fe8d:4f4e", - "CanPort80": true - } - ] - }, - "6": { - "RegionID": 6, - "RegionCode": "blr", - "RegionName": "Bengaluru", - "Latitude": 12.9716, - "Longitude": 77.5946, - "Nodes": [ - { - "Name": "6a", - "RegionID": 6, - "HostName": "derp6.tailscale.com", - "IPv4": "68.183.90.120", - "IPv6": "2400:6180:100:d0::982:d001", - "CanPort80": true - } - ] - }, - "7": { - "RegionID": 7, - "RegionCode": "tok", - "RegionName": "Tokyo", - "Latitude": 35.6764, - "Longitude": 139.65, - "Nodes": [ - { - "Name": "7g", - "RegionID": 7, - "HostName": "derp7g.tailscale.com", - "IPv4": "172.238.6.179", - "IPv6": "2600:3c18::2000:3fff:fe80:3ebd", - "CanPort80": true - }, - { - "Name": "7f", - "RegionID": 7, - "HostName": "derp7f.tailscale.com", - "IPv4": "172.238.6.34", - "IPv6": "2600:3c18::2000:acff:fe8e:3ed5", - "CanPort80": true - }, - { - "Name": "7h", - "RegionID": 7, - "HostName": "derp7h.tailscale.com", - "IPv4": "172.237.28.183", - "IPv6": "2600:3c18::2000:b1ff:fea9:4560", - "CanPort80": true - }, - { - "Name": "7e", - "RegionID": 7, - "HostName": "derp7e.tailscale.com", - "IPv4": "172.238.6.180", - "IPv6": "2600:3c18::2000:60ff:fe0f:6e83", - "STUNOnly": true, - "CanPort80": true - } - ] - }, - "8": { - "RegionID": 8, - "RegionCode": "lhr", - "RegionName": "London", - "Latitude": 51.5072, - "Longitude": 0.1276, - "Nodes": [ - { - "Name": "8f", - "RegionID": 8, - "HostName": "derp8f.tailscale.com", - "IPv4": "176.58.88.183", - "IPv6": "2a00:dd80:3a::dfa", - "CanPort80": true - }, - { - "Name": "8g", - "RegionID": 8, - "HostName": "derp8g.tailscale.com", - "IPv4": "176.58.92.254", - "IPv6": "2a00:dd80:3a::ed", - "CanPort80": true - }, - { - "Name": "8e", - "RegionID": 8, - "HostName": "derp8e.tailscale.com", - "IPv4": "176.58.92.144", - "IPv6": "2a00:dd80:3a::b33", - "CanPort80": true - } - ] - }, - "9": { - "RegionID": 9, - "RegionCode": "dfw", - "RegionName": "Dallas", - "Latitude": 32.779167, - "Longitude": -96.808889, - "Nodes": [ - { - "Name": "9e", - "RegionID": 9, - "HostName": "derp9e.tailscale.com", - "IPv4": "192.73.248.83", - "IPv6": "2607:f740:100::359", - "CanPort80": true - }, - { - "Name": "9f", - "RegionID": 9, - "HostName": "derp9f.tailscale.com", - "IPv4": "209.177.156.197", - "IPv6": "2607:f740:100::cad", - "CanPort80": true - }, - { - "Name": "9d", - "RegionID": 9, - "HostName": "derp9d.tailscale.com", - "IPv4": "209.177.156.94", - "IPv6": "2607:f740:100::c05", - "CanPort80": true - } - ] - } - } - }, - "DisplayMessages": null, - "TKAEnabled": false, - "TKAHead": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", - "Domain": "kratail2tid@passkey", - "DomainAuditLogID": "", - "UserProfiles": { - "3982058329734709": { - "ID": 3982058329734709, - "LoginName": "monitorpasskeykradalby@passkey", - "DisplayName": "monitorpasskeykradalby" - } - } + "PacketFilterRules": 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.124.195.93": { - "peer_name": "exit-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user1/tailscaled.sock whois --json 100.124.195.93", - "response": null - }, - "100.116.18.24": { - "peer_name": "exit-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user1/tailscaled.sock whois --json 100.116.18.24", - "response": null - }, - "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.107.162.14": { - "peer_name": "group-a-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user1/tailscaled.sock whois --json 100.107.162.14", - "response": null - }, - "100.77.135.18": { - "peer_name": "group-b-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user1/tailscaled.sock whois --json 100.77.135.18", - "response": null - }, - "100.105.127.107": { - "peer_name": "multi-exit-router", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user1/tailscaled.sock whois --json 100.105.127.107", - "response": null - }, - "100.109.43.124": { - "peer_name": "router-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user1/tailscaled.sock whois --json 100.109.43.124", - "response": null - }, - "100.65.172.123": { - "peer_name": "router-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user1/tailscaled.sock whois --json 100.65.172.123", - "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 - } - }, "netmap": { - "SelfNode": { - "ID": 539541576444929, - "StableID": "nSq9YrqMD511CNTRL", - "Name": "user1.tail78f774.ts.net.", - "User": 4156223528223174, - "Key": "nodekey:96338a2cd2ea803c915ed8fdf882d66ca0c6a59d0fcf0bc4b3f928d22d1ac743", - "KeyExpiry": "2026-07-22T10:04:13Z", - "DiscoKey": "discokey:94c62b25a93d1474bcbf8b0e5f79763e3b093993c831b0a40e98b875827b232a", - "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:43259", "10.65.0.27:43259", "172.17.0.1:43259"], - "Hostinfo": { - "Hostname": "user1", - "Services": [ - { "Proto": "peerapi4", "Port": 46708 }, - { "Proto": "peerapi6", "Port": 46708 }, - { "Proto": "peerapi-dns-proxy", "Port": 1 } - ] - }, - "Created": "2026-01-23T10:04:13.531671894Z", - "MachineAuthorized": true, - "CapMap": { - "https://tailscale.com/cap/file-sharing": null, - "https://tailscale.com/cap/is-admin": null, - "https://tailscale.com/cap/is-owner": null, - "https://tailscale.com/cap/ssh": null, - "https://tailscale.com/cap/tailnet-lock": null, - "probe-udp-lifetime": null, - "ssh-behavior-v1": null, - "ssh-env-vars": null, - "store-appc-routes": null, - "tailnet-display-name": ["kratail2tid@passkey"] - }, - "ComputedName": "user1", - "ComputedNameWithHost": "user1" - }, - "AllCaps": [ - "https://tailscale.com/cap/is-owner", - "https://tailscale.com/cap/ssh", - "ssh-env-vars", - "https://tailscale.com/cap/file-sharing", - "ssh-behavior-v1", - "tailnet-display-name", - "https://tailscale.com/cap/tailnet-lock", - "probe-udp-lifetime", - "https://tailscale.com/cap/is-admin", - "store-appc-routes" - ], - "NodeKey": "nodekey:96338a2cd2ea803c915ed8fdf882d66ca0c6a59d0fcf0bc4b3f928d22d1ac743", - "MachineKey": "mkey:98b7ed0fef020882cab4324b39ac93b60741794e722411083d0d3cf703833f4a", "Peers": [], - "DNS": { - "Routes": { - "tail78f774.ts.net.": null, - "ts.net.": [{ "Addr": "199.247.155.53" }, { "Addr": "2620:111:8007::53" }] - }, - "Domains": ["tail78f774.ts.net"], - "Proxied": true, - "ExitNodeFilteredSet": [".ts.net", ".tailscale.net"] - }, - "PacketFilter": [], - "PacketFilterRules": null, - "SSHPolicy": { "rules": [] }, - "CollectServices": false, - "DERPMap": { - "Regions": { - "1": { - "RegionID": 1, - "RegionCode": "nyc", - "RegionName": "New York City", - "Latitude": 40.7128, - "Longitude": -74.006, - "Nodes": [ - { - "Name": "1h", - "RegionID": 1, - "HostName": "derp1h.tailscale.com", - "IPv4": "199.38.181.93", - "IPv6": "2607:f740:f::afd", - "CanPort80": true - }, - { - "Name": "1g", - "RegionID": 1, - "HostName": "derp1g.tailscale.com", - "IPv4": "209.177.145.120", - "IPv6": "2607:f740:f::3eb", - "CanPort80": true - }, - { - "Name": "1i", - "RegionID": 1, - "HostName": "derp1i.tailscale.com", - "IPv4": "199.38.181.103", - "IPv6": "2607:f740:f::e19", - "CanPort80": true - }, - { - "Name": "1f", - "RegionID": 1, - "HostName": "derp1f.tailscale.com", - "IPv4": "199.38.181.104", - "IPv6": "2607:f740:f::bc", - "CanPort80": true - } - ] - }, - "10": { - "RegionID": 10, - "RegionCode": "sea", - "RegionName": "Seattle", - "Latitude": 47.609722, - "Longitude": -122.333056, - "Nodes": [ - { - "Name": "10c", - "RegionID": 10, - "HostName": "derp10c.tailscale.com", - "IPv4": "192.73.240.121", - "IPv6": "2607:f740:14::40c", - "CanPort80": true - }, - { - "Name": "10d", - "RegionID": 10, - "HostName": "derp10d.tailscale.com", - "IPv4": "192.73.240.132", - "IPv6": "2607:f740:14::500", - "CanPort80": true - }, - { - "Name": "10b", - "RegionID": 10, - "HostName": "derp10b.tailscale.com", - "IPv4": "192.73.240.161", - "IPv6": "2607:f740:14::61c", - "CanPort80": true - } - ] - }, - "11": { - "RegionID": 11, - "RegionCode": "sao", - "RegionName": "São Paulo", - "Latitude": -23.55, - "Longitude": -46.633333, - "Nodes": [ - { - "Name": "11f", - "RegionID": 11, - "HostName": "derp11f.tailscale.com", - "IPv4": "172.237.61.197", - "IPv6": "2600:3c0d::2000:3bff:fe44:6166", - "CanPort80": true - }, - { - "Name": "11g", - "RegionID": 11, - "HostName": "derp11g.tailscale.com", - "IPv4": "172.237.61.190", - "IPv6": "2600:3c0d::2000:62ff:febe:2e67", - "CanPort80": true - }, - { - "Name": "11e", - "RegionID": 11, - "HostName": "derp11e.tailscale.com", - "IPv4": "172.237.61.194", - "IPv6": "2600:3c0d::2000:d2ff:fe43:1790", - "CanPort80": true - } - ] - }, - "12": { - "RegionID": 12, - "RegionCode": "ord", - "RegionName": "Chicago", - "Latitude": 41.881944, - "Longitude": -87.627778, - "Nodes": [ - { - "Name": "12e", - "RegionID": 12, - "HostName": "derp12e.tailscale.com", - "IPv4": "209.177.158.15", - "IPv6": "2607:f740:e::b17", - "CanPort80": true - }, - { - "Name": "12f", - "RegionID": 12, - "HostName": "derp12f.tailscale.com", - "IPv4": "199.38.182.118", - "IPv6": "2607:f740:e::4c8", - "CanPort80": true - }, - { - "Name": "12d", - "RegionID": 12, - "HostName": "derp12d.tailscale.com", - "IPv4": "209.177.158.246", - "IPv6": "2607:f740:e::811", - "CanPort80": true - } - ] - }, - "13": { - "RegionID": 13, - "RegionCode": "den", - "RegionName": "Denver", - "Latitude": 39.7392, - "Longitude": -104.9849, - "Nodes": [ - { - "Name": "13c", - "RegionID": 13, - "HostName": "derp13c.tailscale.com", - "IPv4": "192.73.242.28", - "IPv6": "2607:f740:16::5c", - "CanPort80": true - }, - { - "Name": "13d", - "RegionID": 13, - "HostName": "derp13d.tailscale.com", - "IPv4": "192.73.242.204", - "IPv6": "2607:f740:16::c23", - "CanPort80": true - }, - { - "Name": "13b", - "RegionID": 13, - "HostName": "derp13b.tailscale.com", - "IPv4": "192.73.242.187", - "IPv6": "2607:f740:16::640", - "CanPort80": true - } - ] - }, - "14": { - "RegionID": 14, - "RegionCode": "ams", - "RegionName": "Amsterdam", - "Latitude": 52.372778, - "Longitude": 4.893611, - "Nodes": [ - { - "Name": "14c", - "RegionID": 14, - "HostName": "derp14c.tailscale.com", - "IPv4": "176.58.93.147", - "IPv6": "2a00:dd80:3c::b09", - "CanPort80": true - }, - { - "Name": "14d", - "RegionID": 14, - "HostName": "derp14d.tailscale.com", - "IPv4": "176.58.93.154", - "IPv6": "2a00:dd80:3c::3d5", - "CanPort80": true - }, - { - "Name": "14b", - "RegionID": 14, - "HostName": "derp14b.tailscale.com", - "IPv4": "176.58.93.248", - "IPv6": "2a00:dd80:3c::807", - "CanPort80": true - } - ] - }, - "15": { - "RegionID": 15, - "RegionCode": "jnb", - "RegionName": "Johannesburg", - "Latitude": -26.204444, - "Longitude": 28.045556, - "Nodes": [ - { - "Name": "15c", - "RegionID": 15, - "HostName": "derp15c.tailscale.com", - "IPv4": "102.67.165.185", - "IPv6": "2c0f:edb0:0:10::b59", - "CanPort80": true - }, - { - "Name": "15d", - "RegionID": 15, - "HostName": "derp15d.tailscale.com", - "IPv4": "102.67.165.36", - "IPv6": "2c0f:edb0:0:10::599", - "CanPort80": true - }, - { - "Name": "15b", - "RegionID": 15, - "HostName": "derp15b.tailscale.com", - "IPv4": "102.67.165.90", - "IPv6": "2c0f:edb0:0:10::963", - "CanPort80": true - } - ] - }, - "16": { - "RegionID": 16, - "RegionCode": "mia", - "RegionName": "Miami", - "Latitude": 25.78, - "Longitude": -80.21, - "Nodes": [ - { - "Name": "16c", - "RegionID": 16, - "HostName": "derp16c.tailscale.com", - "IPv4": "192.73.243.229", - "IPv6": "2607:f740:17::4e4", - "CanPort80": true - }, - { - "Name": "16d", - "RegionID": 16, - "HostName": "derp16d.tailscale.com", - "IPv4": "192.73.243.141", - "IPv6": "2607:f740:17::475", - "CanPort80": true - }, - { - "Name": "16b", - "RegionID": 16, - "HostName": "derp16b.tailscale.com", - "IPv4": "192.73.243.135", - "IPv6": "2607:f740:17::476", - "CanPort80": true - } - ] - }, - "17": { - "RegionID": 17, - "RegionCode": "lax", - "RegionName": "Los Angeles", - "Latitude": 34.05, - "Longitude": -118.25, - "Nodes": [ - { - "Name": "17c", - "RegionID": 17, - "HostName": "derp17c.tailscale.com", - "IPv4": "208.111.40.12", - "IPv6": "2607:f740:c::10", - "CanPort80": true - }, - { - "Name": "17d", - "RegionID": 17, - "HostName": "derp17d.tailscale.com", - "IPv4": "208.111.40.216", - "IPv6": "2607:f740:c::e1b", - "CanPort80": true - }, - { - "Name": "17b", - "RegionID": 17, - "HostName": "derp17b.tailscale.com", - "IPv4": "192.73.244.245", - "IPv6": "2607:f740:c::646", - "CanPort80": true - } - ] - }, - "18": { - "RegionID": 18, - "RegionCode": "par", - "RegionName": "Paris", - "Latitude": 48.856667, - "Longitude": 2.352222, - "Nodes": [ - { - "Name": "18c", - "RegionID": 18, - "HostName": "derp18c.tailscale.com", - "IPv4": "176.58.90.207", - "IPv6": "2a00:dd80:3e::c19", - "CanPort80": true - }, - { - "Name": "18d", - "RegionID": 18, - "HostName": "derp18d.tailscale.com", - "IPv4": "176.58.90.104", - "IPv6": "2a00:dd80:3e::f2e", - "CanPort80": true - }, - { - "Name": "18b", - "RegionID": 18, - "HostName": "derp18b.tailscale.com", - "IPv4": "176.58.90.147", - "IPv6": "2a00:dd80:3e::363", - "CanPort80": true - } - ] - }, - "19": { - "RegionID": 19, - "RegionCode": "mad", - "RegionName": "Madrid", - "Latitude": 40.416944, - "Longitude": -3.703333, - "Nodes": [ - { - "Name": "19c", - "RegionID": 19, - "HostName": "derp19c.tailscale.com", - "IPv4": "45.159.97.61", - "IPv6": "2a00:dd80:14:10::20", - "CanPort80": true - }, - { - "Name": "19d", - "RegionID": 19, - "HostName": "derp19d.tailscale.com", - "IPv4": "45.159.97.233", - "IPv6": "2a00:dd80:14:10::34a", - "CanPort80": true - }, - { - "Name": "19b", - "RegionID": 19, - "HostName": "derp19b.tailscale.com", - "IPv4": "45.159.97.144", - "IPv6": "2a00:dd80:14:10::335", - "CanPort80": true - } - ] - }, - "2": { - "RegionID": 2, - "RegionCode": "sfo", - "RegionName": "San Francisco", - "Latitude": 37.7775, - "Longitude": -122.416389, - "Nodes": [ - { - "Name": "2e", - "RegionID": 2, - "HostName": "derp2e.tailscale.com", - "IPv4": "192.73.252.134", - "IPv6": "2607:f740:0:3f::44c", - "CanPort80": true - }, - { - "Name": "2f", - "RegionID": 2, - "HostName": "derp2f.tailscale.com", - "IPv4": "208.111.34.178", - "IPv6": "2607:f740:0:3f::f4", - "CanPort80": true - }, - { - "Name": "2d", - "RegionID": 2, - "HostName": "derp2d.tailscale.com", - "IPv4": "192.73.252.65", - "IPv6": "2607:f740:0:3f::287", - "CanPort80": true - } - ] - }, - "20": { - "RegionID": 20, - "RegionCode": "hkg", - "RegionName": "Hong Kong", - "Latitude": 22.3193, - "Longitude": 114.1694, - "Nodes": [ - { - "Name": "20c", - "RegionID": 20, - "HostName": "derp20c.tailscale.com", - "IPv4": "205.147.105.30", - "IPv6": "2403:2500:8000:1::5fb", - "CanPort80": true - }, - { - "Name": "20d", - "RegionID": 20, - "HostName": "derp20d.tailscale.com", - "IPv4": "205.147.105.78", - "IPv6": "2403:2500:8000:1::e9a", - "CanPort80": true - }, - { - "Name": "20b", - "RegionID": 20, - "HostName": "derp20b.tailscale.com", - "IPv4": "103.6.84.152", - "IPv6": "2403:2500:8000:1::ef6", - "CanPort80": true - } - ] - }, - "21": { - "RegionID": 21, - "RegionCode": "tor", - "RegionName": "Toronto", - "Latitude": 43.741667, - "Longitude": -79.373333, - "Nodes": [ - { - "Name": "21c", - "RegionID": 21, - "HostName": "derp21c.tailscale.com", - "IPv4": "162.248.221.215", - "IPv6": "2607:f740:50::f10", - "CanPort80": true - }, - { - "Name": "21d", - "RegionID": 21, - "HostName": "derp21d.tailscale.com", - "IPv4": "162.248.221.248", - "IPv6": "2607:f740:50::ca4", - "CanPort80": true - }, - { - "Name": "21b", - "RegionID": 21, - "HostName": "derp21b.tailscale.com", - "IPv4": "162.248.221.199", - "IPv6": "2607:f740:50::1d1", - "CanPort80": true - } - ] - }, - "22": { - "RegionID": 22, - "RegionCode": "waw", - "RegionName": "Warsaw", - "Latitude": 52.23, - "Longitude": 21.011111, - "Nodes": [ - { - "Name": "22c", - "RegionID": 22, - "HostName": "derp22c.tailscale.com", - "IPv4": "45.159.98.253", - "IPv6": "2a00:dd80:40:100::3f", - "CanPort80": true - }, - { - "Name": "22d", - "RegionID": 22, - "HostName": "derp22d.tailscale.com", - "IPv4": "45.159.98.145", - "IPv6": "2a00:dd80:40:100::211", - "CanPort80": true - }, - { - "Name": "22b", - "RegionID": 22, - "HostName": "derp22b.tailscale.com", - "IPv4": "45.159.98.196", - "IPv6": "2a00:dd80:40:100::316", - "CanPort80": true - } - ] - }, - "23": { - "RegionID": 23, - "RegionCode": "dbi", - "RegionName": "Dubai", - "Latitude": 25.263056, - "Longitude": 55.297222, - "Nodes": [ - { - "Name": "23c", - "RegionID": 23, - "HostName": "derp23c.tailscale.com", - "IPv4": "185.34.3.207", - "IPv6": "2a00:dd80:3f:100::a50", - "CanPort80": true - }, - { - "Name": "23d", - "RegionID": 23, - "HostName": "derp23d.tailscale.com", - "IPv4": "185.34.3.75", - "IPv6": "2a00:dd80:3f:100::97e", - "CanPort80": true - }, - { - "Name": "23b", - "RegionID": 23, - "HostName": "derp23b.tailscale.com", - "IPv4": "185.34.3.232", - "IPv6": "2a00:dd80:3f:100::76f", - "CanPort80": true - } - ] - }, - "24": { - "RegionID": 24, - "RegionCode": "hnl", - "RegionName": "Honolulu", - "Latitude": 21.306944, - "Longitude": -157.858333, - "Nodes": [ - { - "Name": "24c", - "RegionID": 24, - "HostName": "derp24c.tailscale.com", - "IPv4": "208.83.233.233", - "IPv6": "2001:19f0:c000:c591:5400:04ff:fe26:2c5f", - "CanPort80": true - }, - { - "Name": "24d", - "RegionID": 24, - "HostName": "derp24d.tailscale.com", - "IPv4": "208.72.155.133", - "IPv6": "2001:19f0:c000:c564:5400:04ff:fe26:2ba8", - "CanPort80": true - }, - { - "Name": "24b", - "RegionID": 24, - "HostName": "derp24b.tailscale.com", - "IPv4": "208.83.234.151", - "IPv6": "2001:19f0:c000:c586:5400:04ff:fe26:2ba6", - "CanPort80": true - } - ] - }, - "25": { - "RegionID": 25, - "RegionCode": "nai", - "RegionName": "Nairobi", - "Latitude": -1.286389, - "Longitude": 36.817222, - "Nodes": [ - { - "Name": "25c", - "RegionID": 25, - "HostName": "derp25c.tailscale.com", - "IPv4": "102.67.167.37", - "IPv6": "2c0f:edb0:2000:1::2c7", - "CanPort80": true - }, - { - "Name": "25d", - "RegionID": 25, - "HostName": "derp25d.tailscale.com", - "IPv4": "102.67.167.188", - "IPv6": "2c0f:edb0:2000:1::188", - "CanPort80": true - }, - { - "Name": "25b", - "RegionID": 25, - "HostName": "derp25b.tailscale.com", - "IPv4": "102.67.167.245", - "IPv6": "2c0f:edb0:2000:1::2e9", - "CanPort80": true - } - ] - }, - "26": { - "RegionID": 26, - "RegionCode": "nue", - "RegionName": "Nuremberg", - "Latitude": 49.453889, - "Longitude": 11.0775, - "Nodes": [ - { - "Name": "26c", - "RegionID": 26, - "HostName": "derp26c.tailscale.com", - "IPv4": "49.12.193.137", - "IPv6": "2a01:4f8:1c1c:5c70::1", - "CanPort80": true - }, - { - "Name": "26d", - "RegionID": 26, - "HostName": "derp26d.tailscale.com", - "IPv4": "49.13.204.141", - "IPv6": "2a01:4f8:1c0c:7d06::1", - "CanPort80": true - }, - { - "Name": "26b", - "RegionID": 26, - "HostName": "derp26b.tailscale.com", - "IPv4": "167.235.72.200", - "IPv6": "2a01:4f8:1c1c:47b6::1", - "CanPort80": true - } - ] - }, - "27": { - "RegionID": 27, - "RegionCode": "iad", - "RegionName": "Ashburn", - "Latitude": 39.03, - "Longitude": -77.471111, - "Nodes": [ - { - "Name": "27d", - "RegionID": 27, - "HostName": "derp27d.tailscale.com", - "IPv4": "178.156.152.106", - "IPv6": "2a01:4ff:f0:3c8e::1", - "CanPort80": true - }, - { - "Name": "27c", - "RegionID": 27, - "HostName": "derp27c.tailscale.com", - "IPv4": "178.156.152.91", - "IPv6": "2a01:4ff:f0:3913::1", - "CanPort80": true - }, - { - "Name": "27e", - "RegionID": 27, - "HostName": "derp27e.tailscale.com", - "IPv4": "178.156.134.232", - "IPv6": "2a01:4ff:f0:28d4::1", - "CanPort80": true - }, - { - "Name": "27b", - "RegionID": 27, - "HostName": "derp27b.tailscale.com", - "IPv4": "5.161.218.233", - "IPv6": "2a01:4ff:f0:3db9::1", - "CanPort80": true - } - ] - }, - "28": { - "RegionID": 28, - "RegionCode": "hel", - "RegionName": "Helsinki", - "Latitude": 60.170833, - "Longitude": 24.9375, - "Nodes": [ - { - "Name": "28c", - "RegionID": 28, - "HostName": "derp28c.tailscale.com", - "IPv4": "95.217.2.165", - "IPv6": "2a01:4f9:c012:cd74::1", - "CanPort80": true - }, - { - "Name": "28d", - "RegionID": 28, - "HostName": "derp28d.tailscale.com", - "IPv4": "157.180.28.32", - "IPv6": "2a01:4f9:c012:2e5b::1", - "CanPort80": true - }, - { - "Name": "28b", - "RegionID": 28, - "HostName": "derp28b.tailscale.com", - "IPv4": "65.109.143.62", - "IPv6": "2a01:4f9:c012:d55c::1", - "CanPort80": true - } - ] - }, - "3": { - "RegionID": 3, - "RegionCode": "sin", - "RegionName": "Singapore", - "Latitude": 1.3521, - "Longitude": 103.8198, - "Nodes": [ - { - "Name": "3g", - "RegionID": 3, - "HostName": "derp3g.tailscale.com", - "IPv4": "172.237.72.79", - "IPv6": "2600:3c15::2000:adff:fe08:6fab", - "CanPort80": true - }, - { - "Name": "3f", - "RegionID": 3, - "HostName": "derp3f.tailscale.com", - "IPv4": "172.237.72.8", - "IPv6": "2600:3c15::2000:53ff:fe48:a668", - "CanPort80": true - }, - { - "Name": "3h", - "RegionID": 3, - "HostName": "derp3h.tailscale.com", - "IPv4": "172.237.66.30", - "IPv6": "2600:3c15::2000:3dff:fe44:50aa", - "CanPort80": true - }, - { - "Name": "3e", - "RegionID": 3, - "HostName": "derp3e.tailscale.com", - "IPv4": "172.237.72.43", - "IPv6": "2600:3c15::2000:6cff:fee4:d799", - "CanPort80": true - } - ] - }, - "4": { - "RegionID": 4, - "RegionCode": "fra", - "RegionName": "Frankfurt", - "Latitude": 50.1109, - "Longitude": 8.6821, - "Nodes": [ - { - "Name": "4h", - "RegionID": 4, - "HostName": "derp4h.tailscale.com", - "IPv4": "185.40.234.77", - "IPv6": "2a00:dd80:20::bcf", - "CanPort80": true - }, - { - "Name": "4g", - "RegionID": 4, - "HostName": "derp4g.tailscale.com", - "IPv4": "185.40.234.113", - "IPv6": "2a00:dd80:20::8f", - "CanPort80": true - }, - { - "Name": "4i", - "RegionID": 4, - "HostName": "derp4i.tailscale.com", - "IPv4": "185.40.234.53", - "IPv6": "2a00:dd80:20::8a6", - "CanPort80": true - }, - { - "Name": "4f", - "RegionID": 4, - "HostName": "derp4f.tailscale.com", - "IPv4": "185.40.234.219", - "IPv6": "2a00:dd80:20::a25", - "CanPort80": true - } - ] - }, - "5": { - "RegionID": 5, - "RegionCode": "syd", - "RegionName": "Sydney", - "Latitude": -33.867778, - "Longitude": 151.21, - "Nodes": [ - { - "Name": "5f", - "RegionID": 5, - "HostName": "derp5f.tailscale.com", - "IPv4": "172.105.166.103", - "IPv6": "2400:8907::2000:ccff:fe1f:80da", - "CanPort80": true - }, - { - "Name": "5g", - "RegionID": 5, - "HostName": "derp5g.tailscale.com", - "IPv4": "172.105.169.57", - "IPv6": "2400:8907::2000:2fff:fea7:57f4", - "CanPort80": true - }, - { - "Name": "5e", - "RegionID": 5, - "HostName": "derp5e.tailscale.com", - "IPv4": "172.105.179.230", - "IPv6": "2400:8907::2000:ceff:fe8d:4f4e", - "CanPort80": true - } - ] - }, - "6": { - "RegionID": 6, - "RegionCode": "blr", - "RegionName": "Bengaluru", - "Latitude": 12.9716, - "Longitude": 77.5946, - "Nodes": [ - { - "Name": "6a", - "RegionID": 6, - "HostName": "derp6.tailscale.com", - "IPv4": "68.183.90.120", - "IPv6": "2400:6180:100:d0::982:d001", - "CanPort80": true - } - ] - }, - "7": { - "RegionID": 7, - "RegionCode": "tok", - "RegionName": "Tokyo", - "Latitude": 35.6764, - "Longitude": 139.65, - "Nodes": [ - { - "Name": "7g", - "RegionID": 7, - "HostName": "derp7g.tailscale.com", - "IPv4": "172.238.6.179", - "IPv6": "2600:3c18::2000:3fff:fe80:3ebd", - "CanPort80": true - }, - { - "Name": "7f", - "RegionID": 7, - "HostName": "derp7f.tailscale.com", - "IPv4": "172.238.6.34", - "IPv6": "2600:3c18::2000:acff:fe8e:3ed5", - "CanPort80": true - }, - { - "Name": "7h", - "RegionID": 7, - "HostName": "derp7h.tailscale.com", - "IPv4": "172.237.28.183", - "IPv6": "2600:3c18::2000:b1ff:fea9:4560", - "CanPort80": true - }, - { - "Name": "7e", - "RegionID": 7, - "HostName": "derp7e.tailscale.com", - "IPv4": "172.238.6.180", - "IPv6": "2600:3c18::2000:60ff:fe0f:6e83", - "STUNOnly": true, - "CanPort80": true - } - ] - }, - "8": { - "RegionID": 8, - "RegionCode": "lhr", - "RegionName": "London", - "Latitude": 51.5072, - "Longitude": 0.1276, - "Nodes": [ - { - "Name": "8f", - "RegionID": 8, - "HostName": "derp8f.tailscale.com", - "IPv4": "176.58.88.183", - "IPv6": "2a00:dd80:3a::dfa", - "CanPort80": true - }, - { - "Name": "8g", - "RegionID": 8, - "HostName": "derp8g.tailscale.com", - "IPv4": "176.58.92.254", - "IPv6": "2a00:dd80:3a::ed", - "CanPort80": true - }, - { - "Name": "8e", - "RegionID": 8, - "HostName": "derp8e.tailscale.com", - "IPv4": "176.58.92.144", - "IPv6": "2a00:dd80:3a::b33", - "CanPort80": true - } - ] - }, - "9": { - "RegionID": 9, - "RegionCode": "dfw", - "RegionName": "Dallas", - "Latitude": 32.779167, - "Longitude": -96.808889, - "Nodes": [ - { - "Name": "9e", - "RegionID": 9, - "HostName": "derp9e.tailscale.com", - "IPv4": "192.73.248.83", - "IPv6": "2607:f740:100::359", - "CanPort80": true - }, - { - "Name": "9f", - "RegionID": 9, - "HostName": "derp9f.tailscale.com", - "IPv4": "209.177.156.197", - "IPv6": "2607:f740:100::cad", - "CanPort80": true - }, - { - "Name": "9d", - "RegionID": 9, - "HostName": "derp9d.tailscale.com", - "IPv4": "209.177.156.94", - "IPv6": "2607:f740:100::c05", - "CanPort80": true - } - ] - } - } - }, - "DisplayMessages": null, - "TKAEnabled": false, - "TKAHead": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", - "Domain": "kratail2tid@passkey", - "DomainAuditLogID": "", - "UserProfiles": { - "4156223528223174": { - "ID": 4156223528223174, - "LoginName": "kratail2tid@passkey", - "DisplayName": "kratail2tid" - } - } + "PacketFilterRules": null } } } diff --git a/hscontrol/policy/v2/testdata/grant_results/GRANT-V35.hujson b/hscontrol/policy/v2/testdata/grant_results/GRANT-V35.hujson index caa225bef..fa32dd51c 100644 --- a/hscontrol/policy/v2/testdata/grant_results/GRANT-V35.hujson +++ b/hscontrol/policy/v2/testdata/grant_results/GRANT-V35.hujson @@ -5,29 +5,55 @@ // Expected: No filter rules on any node { "test_id": "GRANT-V35", - "timestamp": "2026-03-28T11:53:31Z", - "propagation_wait_seconds": 8, "input": { - "policy_file": "grant_policies_via/grant_v35.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"], - "tag:exit-a": ["kratail2tid@passkey"], - "tag:exit-b": ["kratail2tid@passkey"], - "tag:group-a": ["kratail2tid@passkey"], - "tag:group-b": ["kratail2tid@passkey"], - "tag:router-a": ["kratail2tid@passkey"], - "tag:router-b": ["kratail2tid@passkey"] + "tag:server": [ + "kratail2tid@passkey" + ], + "tag:prod": [ + "kratail2tid@passkey" + ], + "tag:client": [ + "kratail2tid@passkey" + ], + "tag:router": [ + "kratail2tid@passkey" + ], + "tag:exit": [ + "kratail2tid@passkey" + ], + "tag:exit-a": [ + "kratail2tid@passkey" + ], + "tag:exit-b": [ + "kratail2tid@passkey" + ], + "tag:group-a": [ + "kratail2tid@passkey" + ], + "tag:group-b": [ + "kratail2tid@passkey" + ], + "tag:router-a": [ + "kratail2tid@passkey" + ], + "tag:router-b": [ + "kratail2tid@passkey" + ] }, "hosts": { "webserver": "100.108.74.26", @@ -36,160 +62,159 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "10.44.0.0/16": ["tag:router-a"], - "10.55.0.0/16": ["tag:router-b"], - "0.0.0.0/0": ["tag:exit", "tag:exit-a", "tag:exit-b"], - "::/0": ["tag:exit", "tag:exit-a", "tag:exit-b"] + "10.33.0.0/16": [ + "tag:router" + ], + "10.44.0.0/16": [ + "tag:router-a" + ], + "10.55.0.0/16": [ + "tag:router-b" + ], + "0.0.0.0/0": [ + "tag:exit", + "tag:exit-a", + "tag:exit-b" + ], + "::/0": [ + "tag:exit", + "tag:exit-a", + "tag:exit-b" + ] } }, "grants": [ { - "src": ["tag:client"], - "dst": ["10.99.0.0/16"], - "via": ["tag:router"], - "ip": ["*"] + "src": [ + "tag:client" + ], + "dst": [ + "10.99.0.0/16" + ], + "via": [ + "tag:router" + ], + "ip": [ + "*" + ] } ] }, - "grants_section": [{ "src": ["tag:client"], "dst": ["10.99.0.0/16"], "via": ["tag:router"], "ip": ["*"] }], - "api_endpoint": "https://api.tailscale.com/api/v2/tailnet/kratail2tid%40passkey/acl", - "api_method": "POST", "api_response_code": 200 }, "topology": { "nodes": { "exit-a": { - "mts_name": "exit-a", - "socket": "/home/kradalby/.config/multi-tailscale-dev/exit-a/tailscaled.sock", "hostname": "exit-a", - "user_id": 3118755726458377, - "tags": ["tag:exit-a"], + "tags": [ + "tag:exit-a" + ], "ipv4": "100.124.195.93", "ipv6": "fd7a:115c:a1e0::7837:c35d" }, "exit-b": { - "mts_name": "exit-b", - "socket": "/home/kradalby/.config/multi-tailscale-dev/exit-b/tailscaled.sock", "hostname": "exit-b", - "user_id": 2230775583277936, - "tags": ["tag:exit-b"], + "tags": [ + "tag:exit-b" + ], "ipv4": "100.116.18.24", "ipv6": "fd7a:115c:a1e0::ff37:1218" }, "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"], + "tags": [ + "tag:exit" + ], "ipv4": "100.85.66.106", "ipv6": "fd7a:115c:a1e0::7c37:426a" }, "group-a-client": { - "mts_name": "group-a-client", - "socket": "/home/kradalby/.config/multi-tailscale-dev/group-a-client/tailscaled.sock", "hostname": "group-a-client", - "user_id": 6999435610919250, - "tags": ["tag:group-a"], + "tags": [ + "tag:group-a" + ], "ipv4": "100.107.162.14", "ipv6": "fd7a:115c:a1e0::a237:a20e" }, "group-b-client": { - "mts_name": "group-b-client", - "socket": "/home/kradalby/.config/multi-tailscale-dev/group-b-client/tailscaled.sock", "hostname": "group-b-client", - "user_id": 1008089393782498, - "tags": ["tag:group-b"], + "tags": [ + "tag:group-b" + ], "ipv4": "100.77.135.18", "ipv6": "fd7a:115c:a1e0::4b37:8712" }, "multi-exit-router": { - "mts_name": "multi-exit-router", - "socket": "/home/kradalby/.config/multi-tailscale-dev/multi-exit-router/tailscaled.sock", "hostname": "multi-exit-router", - "user_id": 6294409699640722, - "tags": ["tag:exit", "tag:router"], + "tags": [ + "tag:exit", + "tag:router" + ], "ipv4": "100.105.127.107", "ipv6": "fd7a:115c:a1e0::ad37:7f6b" }, "router-a": { - "mts_name": "router-a", - "socket": "/home/kradalby/.config/multi-tailscale-dev/router-a/tailscaled.sock", "hostname": "router-a", - "user_id": 50590507314324, - "tags": ["tag:router-a"], + "tags": [ + "tag:router-a" + ], "ipv4": "100.109.43.124", "ipv6": "fd7a:115c:a1e0::a537:2b7c" }, "router-b": { - "mts_name": "router-b", - "socket": "/home/kradalby/.config/multi-tailscale-dev/router-b/tailscaled.sock", "hostname": "router-b", - "user_id": 1399889648409786, - "tags": ["tag:router-b"], + "tags": [ + "tag:router-b" + ], "ipv4": "100.65.172.123", "ipv6": "fd7a:115c:a1e0::5a37:ac7c" }, "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"], + "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"], + "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"], + "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"], + "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" @@ -198,16700 +223,120 @@ }, "captures": { "exit-a": { - "commands": { - "packet_filter_rules": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-a/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-a/tailscaled.sock debug localapi POST debug-packet-filter-matches" - }, "packet_filter_rules": null, - "packet_filter_matches": [], - "whois": { - "100.116.18.24": { - "peer_name": "exit-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-a/tailscaled.sock whois --json 100.116.18.24", - "response": null - }, - "100.85.66.106": { - "peer_name": "exit-node", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-a/tailscaled.sock whois --json 100.85.66.106", - "response": null - }, - "100.107.162.14": { - "peer_name": "group-a-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-a/tailscaled.sock whois --json 100.107.162.14", - "response": null - }, - "100.77.135.18": { - "peer_name": "group-b-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-a/tailscaled.sock whois --json 100.77.135.18", - "response": null - }, - "100.105.127.107": { - "peer_name": "multi-exit-router", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-a/tailscaled.sock whois --json 100.105.127.107", - "response": null - }, - "100.109.43.124": { - "peer_name": "router-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-a/tailscaled.sock whois --json 100.109.43.124", - "response": null - }, - "100.65.172.123": { - "peer_name": "router-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-a/tailscaled.sock whois --json 100.65.172.123", - "response": null - }, - "100.92.142.61": { - "peer_name": "subnet-router", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-a/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-a/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-a/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-a/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-a/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-a/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-a/tailscaled.sock whois --json 100.90.199.68", - "response": null - } - }, "netmap": { - "SelfNode": { - "ID": 3118755726458377, - "StableID": "nvFTscRVMR11CNTRL", - "Name": "exit-a.tail78f774.ts.net.", - "User": 3118755726458377, - "Key": "nodekey:21ab6fa3288e3bf8cecced295316c6327f427649765eb1746cc6ee9978bcc35c", - "DiscoKey": "discokey:0c8595f67987ed47cf551646d6266c21a635d622409d10745cc08f6922066e49", - "Addresses": ["100.124.195.93/32", "fd7a:115c:a1e0::7837:c35d/128"], - "AllowedIPs": ["100.124.195.93/32", "fd7a:115c:a1e0::7837:c35d/128"], - "Endpoints": ["77.164.248.136:37550", "10.65.0.27:37550", "172.17.0.1:37550"], - "Hostinfo": { - "Hostname": "exit-a", - "RoutableIPs": ["0.0.0.0/0", "::/0"], - "RequestTags": ["tag:exit-a"], - "Services": [ - { "Proto": "peerapi4", "Port": 57826 }, - { "Proto": "peerapi6", "Port": 57826 }, - { "Proto": "peerapi-dns-proxy", "Port": 1 } - ] - }, - "Created": "2026-03-28T10:37:56.932966573Z", - "Tags": ["tag:exit-a"], - "MachineAuthorized": true, - "CapMap": { - "https://tailscale.com/cap/file-sharing": null, - "https://tailscale.com/cap/is-owner": null, - "https://tailscale.com/cap/ssh": null, - "https://tailscale.com/cap/tailnet-lock": null, - "probe-udp-lifetime": null, - "ssh-behavior-v1": null, - "ssh-env-vars": null, - "store-appc-routes": null, - "tailnet-display-name": ["kratail2tid@passkey"] - }, - "ComputedName": "exit-a", - "ComputedNameWithHost": "exit-a" - }, - "AllCaps": [ - "https://tailscale.com/cap/ssh", - "https://tailscale.com/cap/tailnet-lock", - "probe-udp-lifetime", - "https://tailscale.com/cap/is-owner", - "https://tailscale.com/cap/file-sharing", - "store-appc-routes", - "ssh-behavior-v1", - "tailnet-display-name", - "ssh-env-vars" - ], - "NodeKey": "nodekey:21ab6fa3288e3bf8cecced295316c6327f427649765eb1746cc6ee9978bcc35c", - "MachineKey": "mkey:d4a36168723163165bbdcb0b17762903171593d01c26c5bb12216932f6d10876", "Peers": [], - "DNS": { - "Routes": { - "tail78f774.ts.net.": null, - "ts.net.": [{ "Addr": "199.247.155.53" }, { "Addr": "2620:111:8007::53" }] - }, - "Domains": ["tail78f774.ts.net"], - "Proxied": true, - "ExitNodeFilteredSet": [".ts.net", ".tailscale.net"] - }, - "PacketFilter": [], - "PacketFilterRules": null, - "SSHPolicy": { "rules": [] }, - "CollectServices": false, - "DERPMap": { - "Regions": { - "1": { - "RegionID": 1, - "RegionCode": "nyc", - "RegionName": "New York City", - "Latitude": 40.7128, - "Longitude": -74.006, - "Nodes": [ - { - "Name": "1h", - "RegionID": 1, - "HostName": "derp1h.tailscale.com", - "IPv4": "199.38.181.93", - "IPv6": "2607:f740:f::afd", - "CanPort80": true - }, - { - "Name": "1g", - "RegionID": 1, - "HostName": "derp1g.tailscale.com", - "IPv4": "209.177.145.120", - "IPv6": "2607:f740:f::3eb", - "CanPort80": true - }, - { - "Name": "1i", - "RegionID": 1, - "HostName": "derp1i.tailscale.com", - "IPv4": "199.38.181.103", - "IPv6": "2607:f740:f::e19", - "CanPort80": true - }, - { - "Name": "1f", - "RegionID": 1, - "HostName": "derp1f.tailscale.com", - "IPv4": "199.38.181.104", - "IPv6": "2607:f740:f::bc", - "CanPort80": true - } - ] - }, - "10": { - "RegionID": 10, - "RegionCode": "sea", - "RegionName": "Seattle", - "Latitude": 47.609722, - "Longitude": -122.333056, - "Nodes": [ - { - "Name": "10c", - "RegionID": 10, - "HostName": "derp10c.tailscale.com", - "IPv4": "192.73.240.121", - "IPv6": "2607:f740:14::40c", - "CanPort80": true - }, - { - "Name": "10d", - "RegionID": 10, - "HostName": "derp10d.tailscale.com", - "IPv4": "192.73.240.132", - "IPv6": "2607:f740:14::500", - "CanPort80": true - }, - { - "Name": "10b", - "RegionID": 10, - "HostName": "derp10b.tailscale.com", - "IPv4": "192.73.240.161", - "IPv6": "2607:f740:14::61c", - "CanPort80": true - } - ] - }, - "11": { - "RegionID": 11, - "RegionCode": "sao", - "RegionName": "São Paulo", - "Latitude": -23.55, - "Longitude": -46.633333, - "Nodes": [ - { - "Name": "11f", - "RegionID": 11, - "HostName": "derp11f.tailscale.com", - "IPv4": "172.237.61.197", - "IPv6": "2600:3c0d::2000:3bff:fe44:6166", - "CanPort80": true - }, - { - "Name": "11g", - "RegionID": 11, - "HostName": "derp11g.tailscale.com", - "IPv4": "172.237.61.190", - "IPv6": "2600:3c0d::2000:62ff:febe:2e67", - "CanPort80": true - }, - { - "Name": "11e", - "RegionID": 11, - "HostName": "derp11e.tailscale.com", - "IPv4": "172.237.61.194", - "IPv6": "2600:3c0d::2000:d2ff:fe43:1790", - "CanPort80": true - } - ] - }, - "12": { - "RegionID": 12, - "RegionCode": "ord", - "RegionName": "Chicago", - "Latitude": 41.881944, - "Longitude": -87.627778, - "Nodes": [ - { - "Name": "12e", - "RegionID": 12, - "HostName": "derp12e.tailscale.com", - "IPv4": "209.177.158.15", - "IPv6": "2607:f740:e::b17", - "CanPort80": true - }, - { - "Name": "12f", - "RegionID": 12, - "HostName": "derp12f.tailscale.com", - "IPv4": "199.38.182.118", - "IPv6": "2607:f740:e::4c8", - "CanPort80": true - }, - { - "Name": "12d", - "RegionID": 12, - "HostName": "derp12d.tailscale.com", - "IPv4": "209.177.158.246", - "IPv6": "2607:f740:e::811", - "CanPort80": true - } - ] - }, - "13": { - "RegionID": 13, - "RegionCode": "den", - "RegionName": "Denver", - "Latitude": 39.7392, - "Longitude": -104.9849, - "Nodes": [ - { - "Name": "13c", - "RegionID": 13, - "HostName": "derp13c.tailscale.com", - "IPv4": "192.73.242.28", - "IPv6": "2607:f740:16::5c", - "CanPort80": true - }, - { - "Name": "13d", - "RegionID": 13, - "HostName": "derp13d.tailscale.com", - "IPv4": "192.73.242.204", - "IPv6": "2607:f740:16::c23", - "CanPort80": true - }, - { - "Name": "13b", - "RegionID": 13, - "HostName": "derp13b.tailscale.com", - "IPv4": "192.73.242.187", - "IPv6": "2607:f740:16::640", - "CanPort80": true - } - ] - }, - "14": { - "RegionID": 14, - "RegionCode": "ams", - "RegionName": "Amsterdam", - "Latitude": 52.372778, - "Longitude": 4.893611, - "Nodes": [ - { - "Name": "14c", - "RegionID": 14, - "HostName": "derp14c.tailscale.com", - "IPv4": "176.58.93.147", - "IPv6": "2a00:dd80:3c::b09", - "CanPort80": true - }, - { - "Name": "14d", - "RegionID": 14, - "HostName": "derp14d.tailscale.com", - "IPv4": "176.58.93.154", - "IPv6": "2a00:dd80:3c::3d5", - "CanPort80": true - }, - { - "Name": "14b", - "RegionID": 14, - "HostName": "derp14b.tailscale.com", - "IPv4": "176.58.93.248", - "IPv6": "2a00:dd80:3c::807", - "CanPort80": true - } - ] - }, - "15": { - "RegionID": 15, - "RegionCode": "jnb", - "RegionName": "Johannesburg", - "Latitude": -26.204444, - "Longitude": 28.045556, - "Nodes": [ - { - "Name": "15c", - "RegionID": 15, - "HostName": "derp15c.tailscale.com", - "IPv4": "102.67.165.185", - "IPv6": "2c0f:edb0:0:10::b59", - "CanPort80": true - }, - { - "Name": "15d", - "RegionID": 15, - "HostName": "derp15d.tailscale.com", - "IPv4": "102.67.165.36", - "IPv6": "2c0f:edb0:0:10::599", - "CanPort80": true - }, - { - "Name": "15b", - "RegionID": 15, - "HostName": "derp15b.tailscale.com", - "IPv4": "102.67.165.90", - "IPv6": "2c0f:edb0:0:10::963", - "CanPort80": true - } - ] - }, - "16": { - "RegionID": 16, - "RegionCode": "mia", - "RegionName": "Miami", - "Latitude": 25.78, - "Longitude": -80.21, - "Nodes": [ - { - "Name": "16c", - "RegionID": 16, - "HostName": "derp16c.tailscale.com", - "IPv4": "192.73.243.229", - "IPv6": "2607:f740:17::4e4", - "CanPort80": true - }, - { - "Name": "16d", - "RegionID": 16, - "HostName": "derp16d.tailscale.com", - "IPv4": "192.73.243.141", - "IPv6": "2607:f740:17::475", - "CanPort80": true - }, - { - "Name": "16b", - "RegionID": 16, - "HostName": "derp16b.tailscale.com", - "IPv4": "192.73.243.135", - "IPv6": "2607:f740:17::476", - "CanPort80": true - } - ] - }, - "17": { - "RegionID": 17, - "RegionCode": "lax", - "RegionName": "Los Angeles", - "Latitude": 34.05, - "Longitude": -118.25, - "Nodes": [ - { - "Name": "17c", - "RegionID": 17, - "HostName": "derp17c.tailscale.com", - "IPv4": "208.111.40.12", - "IPv6": "2607:f740:c::10", - "CanPort80": true - }, - { - "Name": "17d", - "RegionID": 17, - "HostName": "derp17d.tailscale.com", - "IPv4": "208.111.40.216", - "IPv6": "2607:f740:c::e1b", - "CanPort80": true - }, - { - "Name": "17b", - "RegionID": 17, - "HostName": "derp17b.tailscale.com", - "IPv4": "192.73.244.245", - "IPv6": "2607:f740:c::646", - "CanPort80": true - } - ] - }, - "18": { - "RegionID": 18, - "RegionCode": "par", - "RegionName": "Paris", - "Latitude": 48.856667, - "Longitude": 2.352222, - "Nodes": [ - { - "Name": "18c", - "RegionID": 18, - "HostName": "derp18c.tailscale.com", - "IPv4": "176.58.90.207", - "IPv6": "2a00:dd80:3e::c19", - "CanPort80": true - }, - { - "Name": "18d", - "RegionID": 18, - "HostName": "derp18d.tailscale.com", - "IPv4": "176.58.90.104", - "IPv6": "2a00:dd80:3e::f2e", - "CanPort80": true - }, - { - "Name": "18b", - "RegionID": 18, - "HostName": "derp18b.tailscale.com", - "IPv4": "176.58.90.147", - "IPv6": "2a00:dd80:3e::363", - "CanPort80": true - } - ] - }, - "19": { - "RegionID": 19, - "RegionCode": "mad", - "RegionName": "Madrid", - "Latitude": 40.416944, - "Longitude": -3.703333, - "Nodes": [ - { - "Name": "19c", - "RegionID": 19, - "HostName": "derp19c.tailscale.com", - "IPv4": "45.159.97.61", - "IPv6": "2a00:dd80:14:10::20", - "CanPort80": true - }, - { - "Name": "19d", - "RegionID": 19, - "HostName": "derp19d.tailscale.com", - "IPv4": "45.159.97.233", - "IPv6": "2a00:dd80:14:10::34a", - "CanPort80": true - }, - { - "Name": "19b", - "RegionID": 19, - "HostName": "derp19b.tailscale.com", - "IPv4": "45.159.97.144", - "IPv6": "2a00:dd80:14:10::335", - "CanPort80": true - } - ] - }, - "2": { - "RegionID": 2, - "RegionCode": "sfo", - "RegionName": "San Francisco", - "Latitude": 37.7775, - "Longitude": -122.416389, - "Nodes": [ - { - "Name": "2e", - "RegionID": 2, - "HostName": "derp2e.tailscale.com", - "IPv4": "192.73.252.134", - "IPv6": "2607:f740:0:3f::44c", - "CanPort80": true - }, - { - "Name": "2f", - "RegionID": 2, - "HostName": "derp2f.tailscale.com", - "IPv4": "208.111.34.178", - "IPv6": "2607:f740:0:3f::f4", - "CanPort80": true - }, - { - "Name": "2d", - "RegionID": 2, - "HostName": "derp2d.tailscale.com", - "IPv4": "192.73.252.65", - "IPv6": "2607:f740:0:3f::287", - "CanPort80": true - } - ] - }, - "20": { - "RegionID": 20, - "RegionCode": "hkg", - "RegionName": "Hong Kong", - "Latitude": 22.3193, - "Longitude": 114.1694, - "Nodes": [ - { - "Name": "20c", - "RegionID": 20, - "HostName": "derp20c.tailscale.com", - "IPv4": "205.147.105.30", - "IPv6": "2403:2500:8000:1::5fb", - "CanPort80": true - }, - { - "Name": "20d", - "RegionID": 20, - "HostName": "derp20d.tailscale.com", - "IPv4": "205.147.105.78", - "IPv6": "2403:2500:8000:1::e9a", - "CanPort80": true - }, - { - "Name": "20b", - "RegionID": 20, - "HostName": "derp20b.tailscale.com", - "IPv4": "103.6.84.152", - "IPv6": "2403:2500:8000:1::ef6", - "CanPort80": true - } - ] - }, - "21": { - "RegionID": 21, - "RegionCode": "tor", - "RegionName": "Toronto", - "Latitude": 43.741667, - "Longitude": -79.373333, - "Nodes": [ - { - "Name": "21c", - "RegionID": 21, - "HostName": "derp21c.tailscale.com", - "IPv4": "162.248.221.215", - "IPv6": "2607:f740:50::f10", - "CanPort80": true - }, - { - "Name": "21d", - "RegionID": 21, - "HostName": "derp21d.tailscale.com", - "IPv4": "162.248.221.248", - "IPv6": "2607:f740:50::ca4", - "CanPort80": true - }, - { - "Name": "21b", - "RegionID": 21, - "HostName": "derp21b.tailscale.com", - "IPv4": "162.248.221.199", - "IPv6": "2607:f740:50::1d1", - "CanPort80": true - } - ] - }, - "22": { - "RegionID": 22, - "RegionCode": "waw", - "RegionName": "Warsaw", - "Latitude": 52.23, - "Longitude": 21.011111, - "Nodes": [ - { - "Name": "22c", - "RegionID": 22, - "HostName": "derp22c.tailscale.com", - "IPv4": "45.159.98.253", - "IPv6": "2a00:dd80:40:100::3f", - "CanPort80": true - }, - { - "Name": "22d", - "RegionID": 22, - "HostName": "derp22d.tailscale.com", - "IPv4": "45.159.98.145", - "IPv6": "2a00:dd80:40:100::211", - "CanPort80": true - }, - { - "Name": "22b", - "RegionID": 22, - "HostName": "derp22b.tailscale.com", - "IPv4": "45.159.98.196", - "IPv6": "2a00:dd80:40:100::316", - "CanPort80": true - } - ] - }, - "23": { - "RegionID": 23, - "RegionCode": "dbi", - "RegionName": "Dubai", - "Latitude": 25.263056, - "Longitude": 55.297222, - "Nodes": [ - { - "Name": "23c", - "RegionID": 23, - "HostName": "derp23c.tailscale.com", - "IPv4": "185.34.3.207", - "IPv6": "2a00:dd80:3f:100::a50", - "CanPort80": true - }, - { - "Name": "23d", - "RegionID": 23, - "HostName": "derp23d.tailscale.com", - "IPv4": "185.34.3.75", - "IPv6": "2a00:dd80:3f:100::97e", - "CanPort80": true - }, - { - "Name": "23b", - "RegionID": 23, - "HostName": "derp23b.tailscale.com", - "IPv4": "185.34.3.232", - "IPv6": "2a00:dd80:3f:100::76f", - "CanPort80": true - } - ] - }, - "24": { - "RegionID": 24, - "RegionCode": "hnl", - "RegionName": "Honolulu", - "Latitude": 21.306944, - "Longitude": -157.858333, - "Nodes": [ - { - "Name": "24c", - "RegionID": 24, - "HostName": "derp24c.tailscale.com", - "IPv4": "208.83.233.233", - "IPv6": "2001:19f0:c000:c591:5400:04ff:fe26:2c5f", - "CanPort80": true - }, - { - "Name": "24d", - "RegionID": 24, - "HostName": "derp24d.tailscale.com", - "IPv4": "208.72.155.133", - "IPv6": "2001:19f0:c000:c564:5400:04ff:fe26:2ba8", - "CanPort80": true - }, - { - "Name": "24b", - "RegionID": 24, - "HostName": "derp24b.tailscale.com", - "IPv4": "208.83.234.151", - "IPv6": "2001:19f0:c000:c586:5400:04ff:fe26:2ba6", - "CanPort80": true - } - ] - }, - "25": { - "RegionID": 25, - "RegionCode": "nai", - "RegionName": "Nairobi", - "Latitude": -1.286389, - "Longitude": 36.817222, - "Nodes": [ - { - "Name": "25c", - "RegionID": 25, - "HostName": "derp25c.tailscale.com", - "IPv4": "102.67.167.37", - "IPv6": "2c0f:edb0:2000:1::2c7", - "CanPort80": true - }, - { - "Name": "25d", - "RegionID": 25, - "HostName": "derp25d.tailscale.com", - "IPv4": "102.67.167.188", - "IPv6": "2c0f:edb0:2000:1::188", - "CanPort80": true - }, - { - "Name": "25b", - "RegionID": 25, - "HostName": "derp25b.tailscale.com", - "IPv4": "102.67.167.245", - "IPv6": "2c0f:edb0:2000:1::2e9", - "CanPort80": true - } - ] - }, - "26": { - "RegionID": 26, - "RegionCode": "nue", - "RegionName": "Nuremberg", - "Latitude": 49.453889, - "Longitude": 11.0775, - "Nodes": [ - { - "Name": "26c", - "RegionID": 26, - "HostName": "derp26c.tailscale.com", - "IPv4": "49.12.193.137", - "IPv6": "2a01:4f8:1c1c:5c70::1", - "CanPort80": true - }, - { - "Name": "26d", - "RegionID": 26, - "HostName": "derp26d.tailscale.com", - "IPv4": "49.13.204.141", - "IPv6": "2a01:4f8:1c0c:7d06::1", - "CanPort80": true - }, - { - "Name": "26b", - "RegionID": 26, - "HostName": "derp26b.tailscale.com", - "IPv4": "167.235.72.200", - "IPv6": "2a01:4f8:1c1c:47b6::1", - "CanPort80": true - } - ] - }, - "27": { - "RegionID": 27, - "RegionCode": "iad", - "RegionName": "Ashburn", - "Latitude": 39.03, - "Longitude": -77.471111, - "Nodes": [ - { - "Name": "27d", - "RegionID": 27, - "HostName": "derp27d.tailscale.com", - "IPv4": "178.156.152.106", - "IPv6": "2a01:4ff:f0:3c8e::1", - "CanPort80": true - }, - { - "Name": "27c", - "RegionID": 27, - "HostName": "derp27c.tailscale.com", - "IPv4": "178.156.152.91", - "IPv6": "2a01:4ff:f0:3913::1", - "CanPort80": true - }, - { - "Name": "27e", - "RegionID": 27, - "HostName": "derp27e.tailscale.com", - "IPv4": "178.156.134.232", - "IPv6": "2a01:4ff:f0:28d4::1", - "CanPort80": true - }, - { - "Name": "27b", - "RegionID": 27, - "HostName": "derp27b.tailscale.com", - "IPv4": "5.161.218.233", - "IPv6": "2a01:4ff:f0:3db9::1", - "CanPort80": true - } - ] - }, - "28": { - "RegionID": 28, - "RegionCode": "hel", - "RegionName": "Helsinki", - "Latitude": 60.170833, - "Longitude": 24.9375, - "Nodes": [ - { - "Name": "28c", - "RegionID": 28, - "HostName": "derp28c.tailscale.com", - "IPv4": "95.217.2.165", - "IPv6": "2a01:4f9:c012:cd74::1", - "CanPort80": true - }, - { - "Name": "28d", - "RegionID": 28, - "HostName": "derp28d.tailscale.com", - "IPv4": "157.180.28.32", - "IPv6": "2a01:4f9:c012:2e5b::1", - "CanPort80": true - }, - { - "Name": "28b", - "RegionID": 28, - "HostName": "derp28b.tailscale.com", - "IPv4": "65.109.143.62", - "IPv6": "2a01:4f9:c012:d55c::1", - "CanPort80": true - } - ] - }, - "3": { - "RegionID": 3, - "RegionCode": "sin", - "RegionName": "Singapore", - "Latitude": 1.3521, - "Longitude": 103.8198, - "Nodes": [ - { - "Name": "3g", - "RegionID": 3, - "HostName": "derp3g.tailscale.com", - "IPv4": "172.237.72.79", - "IPv6": "2600:3c15::2000:adff:fe08:6fab", - "CanPort80": true - }, - { - "Name": "3f", - "RegionID": 3, - "HostName": "derp3f.tailscale.com", - "IPv4": "172.237.72.8", - "IPv6": "2600:3c15::2000:53ff:fe48:a668", - "CanPort80": true - }, - { - "Name": "3h", - "RegionID": 3, - "HostName": "derp3h.tailscale.com", - "IPv4": "172.237.66.30", - "IPv6": "2600:3c15::2000:3dff:fe44:50aa", - "CanPort80": true - }, - { - "Name": "3e", - "RegionID": 3, - "HostName": "derp3e.tailscale.com", - "IPv4": "172.237.72.43", - "IPv6": "2600:3c15::2000:6cff:fee4:d799", - "CanPort80": true - } - ] - }, - "4": { - "RegionID": 4, - "RegionCode": "fra", - "RegionName": "Frankfurt", - "Latitude": 50.1109, - "Longitude": 8.6821, - "Nodes": [ - { - "Name": "4h", - "RegionID": 4, - "HostName": "derp4h.tailscale.com", - "IPv4": "185.40.234.77", - "IPv6": "2a00:dd80:20::bcf", - "CanPort80": true - }, - { - "Name": "4g", - "RegionID": 4, - "HostName": "derp4g.tailscale.com", - "IPv4": "185.40.234.113", - "IPv6": "2a00:dd80:20::8f", - "CanPort80": true - }, - { - "Name": "4i", - "RegionID": 4, - "HostName": "derp4i.tailscale.com", - "IPv4": "185.40.234.53", - "IPv6": "2a00:dd80:20::8a6", - "CanPort80": true - }, - { - "Name": "4f", - "RegionID": 4, - "HostName": "derp4f.tailscale.com", - "IPv4": "185.40.234.219", - "IPv6": "2a00:dd80:20::a25", - "CanPort80": true - } - ] - }, - "5": { - "RegionID": 5, - "RegionCode": "syd", - "RegionName": "Sydney", - "Latitude": -33.867778, - "Longitude": 151.21, - "Nodes": [ - { - "Name": "5f", - "RegionID": 5, - "HostName": "derp5f.tailscale.com", - "IPv4": "172.105.166.103", - "IPv6": "2400:8907::2000:ccff:fe1f:80da", - "CanPort80": true - }, - { - "Name": "5g", - "RegionID": 5, - "HostName": "derp5g.tailscale.com", - "IPv4": "172.105.169.57", - "IPv6": "2400:8907::2000:2fff:fea7:57f4", - "CanPort80": true - }, - { - "Name": "5e", - "RegionID": 5, - "HostName": "derp5e.tailscale.com", - "IPv4": "172.105.179.230", - "IPv6": "2400:8907::2000:ceff:fe8d:4f4e", - "CanPort80": true - } - ] - }, - "6": { - "RegionID": 6, - "RegionCode": "blr", - "RegionName": "Bengaluru", - "Latitude": 12.9716, - "Longitude": 77.5946, - "Nodes": [ - { - "Name": "6a", - "RegionID": 6, - "HostName": "derp6.tailscale.com", - "IPv4": "68.183.90.120", - "IPv6": "2400:6180:100:d0::982:d001", - "CanPort80": true - } - ] - }, - "7": { - "RegionID": 7, - "RegionCode": "tok", - "RegionName": "Tokyo", - "Latitude": 35.6764, - "Longitude": 139.65, - "Nodes": [ - { - "Name": "7g", - "RegionID": 7, - "HostName": "derp7g.tailscale.com", - "IPv4": "172.238.6.179", - "IPv6": "2600:3c18::2000:3fff:fe80:3ebd", - "CanPort80": true - }, - { - "Name": "7f", - "RegionID": 7, - "HostName": "derp7f.tailscale.com", - "IPv4": "172.238.6.34", - "IPv6": "2600:3c18::2000:acff:fe8e:3ed5", - "CanPort80": true - }, - { - "Name": "7h", - "RegionID": 7, - "HostName": "derp7h.tailscale.com", - "IPv4": "172.237.28.183", - "IPv6": "2600:3c18::2000:b1ff:fea9:4560", - "CanPort80": true - }, - { - "Name": "7e", - "RegionID": 7, - "HostName": "derp7e.tailscale.com", - "IPv4": "172.238.6.180", - "IPv6": "2600:3c18::2000:60ff:fe0f:6e83", - "STUNOnly": true, - "CanPort80": true - } - ] - }, - "8": { - "RegionID": 8, - "RegionCode": "lhr", - "RegionName": "London", - "Latitude": 51.5072, - "Longitude": 0.1276, - "Nodes": [ - { - "Name": "8f", - "RegionID": 8, - "HostName": "derp8f.tailscale.com", - "IPv4": "176.58.88.183", - "IPv6": "2a00:dd80:3a::dfa", - "CanPort80": true - }, - { - "Name": "8g", - "RegionID": 8, - "HostName": "derp8g.tailscale.com", - "IPv4": "176.58.92.254", - "IPv6": "2a00:dd80:3a::ed", - "CanPort80": true - }, - { - "Name": "8e", - "RegionID": 8, - "HostName": "derp8e.tailscale.com", - "IPv4": "176.58.92.144", - "IPv6": "2a00:dd80:3a::b33", - "CanPort80": true - } - ] - }, - "9": { - "RegionID": 9, - "RegionCode": "dfw", - "RegionName": "Dallas", - "Latitude": 32.779167, - "Longitude": -96.808889, - "Nodes": [ - { - "Name": "9e", - "RegionID": 9, - "HostName": "derp9e.tailscale.com", - "IPv4": "192.73.248.83", - "IPv6": "2607:f740:100::359", - "CanPort80": true - }, - { - "Name": "9f", - "RegionID": 9, - "HostName": "derp9f.tailscale.com", - "IPv4": "209.177.156.197", - "IPv6": "2607:f740:100::cad", - "CanPort80": true - }, - { - "Name": "9d", - "RegionID": 9, - "HostName": "derp9d.tailscale.com", - "IPv4": "209.177.156.94", - "IPv6": "2607:f740:100::c05", - "CanPort80": true - } - ] - } - } - }, - "DisplayMessages": null, - "TKAEnabled": false, - "TKAHead": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", - "Domain": "kratail2tid@passkey", - "DomainAuditLogID": "", - "UserProfiles": { - "3118755726458377": { - "ID": 3118755726458377, - "LoginName": "exit-a.tail78f774.ts.net", - "DisplayName": "exit-a" - } - } + "PacketFilterRules": null } }, "exit-b": { - "commands": { - "packet_filter_rules": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-b/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-b/tailscaled.sock debug localapi POST debug-packet-filter-matches" - }, "packet_filter_rules": null, - "packet_filter_matches": [], - "whois": { - "100.124.195.93": { - "peer_name": "exit-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-b/tailscaled.sock whois --json 100.124.195.93", - "response": null - }, - "100.85.66.106": { - "peer_name": "exit-node", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-b/tailscaled.sock whois --json 100.85.66.106", - "response": null - }, - "100.107.162.14": { - "peer_name": "group-a-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-b/tailscaled.sock whois --json 100.107.162.14", - "response": null - }, - "100.77.135.18": { - "peer_name": "group-b-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-b/tailscaled.sock whois --json 100.77.135.18", - "response": null - }, - "100.105.127.107": { - "peer_name": "multi-exit-router", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-b/tailscaled.sock whois --json 100.105.127.107", - "response": null - }, - "100.109.43.124": { - "peer_name": "router-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-b/tailscaled.sock whois --json 100.109.43.124", - "response": null - }, - "100.65.172.123": { - "peer_name": "router-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-b/tailscaled.sock whois --json 100.65.172.123", - "response": null - }, - "100.92.142.61": { - "peer_name": "subnet-router", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-b/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-b/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-b/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-b/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-b/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-b/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-b/tailscaled.sock whois --json 100.90.199.68", - "response": null - } - }, "netmap": { - "SelfNode": { - "ID": 2230775583277936, - "StableID": "ndK1N8hKRJ11CNTRL", - "Name": "exit-b.tail78f774.ts.net.", - "User": 2230775583277936, - "Key": "nodekey:265e1377372be0d036773ac41339bf7b53ed18e9f67f196d7d517abeff741217", - "DiscoKey": "discokey:63071b08ff89860a2d98005f8f6f65f3b92e05b7b1338b1be71e4ad866f12728", - "Addresses": ["100.116.18.24/32", "fd7a:115c:a1e0::ff37:1218/128"], - "AllowedIPs": ["100.116.18.24/32", "fd7a:115c:a1e0::ff37:1218/128"], - "Endpoints": ["77.164.248.136:35565", "10.65.0.27:35565", "172.17.0.1:35565"], - "Hostinfo": { - "Hostname": "exit-b", - "RoutableIPs": ["0.0.0.0/0", "::/0"], - "RequestTags": ["tag:exit-b"], - "Services": [ - { "Proto": "peerapi4", "Port": 61723 }, - { "Proto": "peerapi6", "Port": 61723 }, - { "Proto": "peerapi-dns-proxy", "Port": 1 } - ] - }, - "Created": "2026-03-28T10:38:00.655990366Z", - "Tags": ["tag:exit-b"], - "MachineAuthorized": true, - "CapMap": { - "https://tailscale.com/cap/file-sharing": null, - "https://tailscale.com/cap/is-owner": null, - "https://tailscale.com/cap/ssh": null, - "https://tailscale.com/cap/tailnet-lock": null, - "probe-udp-lifetime": null, - "ssh-behavior-v1": null, - "ssh-env-vars": null, - "store-appc-routes": null, - "tailnet-display-name": ["kratail2tid@passkey"] - }, - "ComputedName": "exit-b", - "ComputedNameWithHost": "exit-b" - }, - "AllCaps": [ - "tailnet-display-name", - "https://tailscale.com/cap/tailnet-lock", - "ssh-env-vars", - "ssh-behavior-v1", - "https://tailscale.com/cap/ssh", - "https://tailscale.com/cap/file-sharing", - "probe-udp-lifetime", - "store-appc-routes", - "https://tailscale.com/cap/is-owner" - ], - "NodeKey": "nodekey:265e1377372be0d036773ac41339bf7b53ed18e9f67f196d7d517abeff741217", - "MachineKey": "mkey:f4cbc28e2db0f8d8a6a5fc3991b055477e5efc6c025d24b72d3509fa3743401c", "Peers": [], - "DNS": { - "Routes": { - "tail78f774.ts.net.": null, - "ts.net.": [{ "Addr": "199.247.155.53" }, { "Addr": "2620:111:8007::53" }] - }, - "Domains": ["tail78f774.ts.net"], - "Proxied": true, - "ExitNodeFilteredSet": [".ts.net", ".tailscale.net"] - }, - "PacketFilter": [], - "PacketFilterRules": null, - "SSHPolicy": { "rules": [] }, - "CollectServices": false, - "DERPMap": { - "Regions": { - "1": { - "RegionID": 1, - "RegionCode": "nyc", - "RegionName": "New York City", - "Latitude": 40.7128, - "Longitude": -74.006, - "Nodes": [ - { - "Name": "1h", - "RegionID": 1, - "HostName": "derp1h.tailscale.com", - "IPv4": "199.38.181.93", - "IPv6": "2607:f740:f::afd", - "CanPort80": true - }, - { - "Name": "1g", - "RegionID": 1, - "HostName": "derp1g.tailscale.com", - "IPv4": "209.177.145.120", - "IPv6": "2607:f740:f::3eb", - "CanPort80": true - }, - { - "Name": "1i", - "RegionID": 1, - "HostName": "derp1i.tailscale.com", - "IPv4": "199.38.181.103", - "IPv6": "2607:f740:f::e19", - "CanPort80": true - }, - { - "Name": "1f", - "RegionID": 1, - "HostName": "derp1f.tailscale.com", - "IPv4": "199.38.181.104", - "IPv6": "2607:f740:f::bc", - "CanPort80": true - } - ] - }, - "10": { - "RegionID": 10, - "RegionCode": "sea", - "RegionName": "Seattle", - "Latitude": 47.609722, - "Longitude": -122.333056, - "Nodes": [ - { - "Name": "10c", - "RegionID": 10, - "HostName": "derp10c.tailscale.com", - "IPv4": "192.73.240.121", - "IPv6": "2607:f740:14::40c", - "CanPort80": true - }, - { - "Name": "10d", - "RegionID": 10, - "HostName": "derp10d.tailscale.com", - "IPv4": "192.73.240.132", - "IPv6": "2607:f740:14::500", - "CanPort80": true - }, - { - "Name": "10b", - "RegionID": 10, - "HostName": "derp10b.tailscale.com", - "IPv4": "192.73.240.161", - "IPv6": "2607:f740:14::61c", - "CanPort80": true - } - ] - }, - "11": { - "RegionID": 11, - "RegionCode": "sao", - "RegionName": "São Paulo", - "Latitude": -23.55, - "Longitude": -46.633333, - "Nodes": [ - { - "Name": "11f", - "RegionID": 11, - "HostName": "derp11f.tailscale.com", - "IPv4": "172.237.61.197", - "IPv6": "2600:3c0d::2000:3bff:fe44:6166", - "CanPort80": true - }, - { - "Name": "11g", - "RegionID": 11, - "HostName": "derp11g.tailscale.com", - "IPv4": "172.237.61.190", - "IPv6": "2600:3c0d::2000:62ff:febe:2e67", - "CanPort80": true - }, - { - "Name": "11e", - "RegionID": 11, - "HostName": "derp11e.tailscale.com", - "IPv4": "172.237.61.194", - "IPv6": "2600:3c0d::2000:d2ff:fe43:1790", - "CanPort80": true - } - ] - }, - "12": { - "RegionID": 12, - "RegionCode": "ord", - "RegionName": "Chicago", - "Latitude": 41.881944, - "Longitude": -87.627778, - "Nodes": [ - { - "Name": "12e", - "RegionID": 12, - "HostName": "derp12e.tailscale.com", - "IPv4": "209.177.158.15", - "IPv6": "2607:f740:e::b17", - "CanPort80": true - }, - { - "Name": "12f", - "RegionID": 12, - "HostName": "derp12f.tailscale.com", - "IPv4": "199.38.182.118", - "IPv6": "2607:f740:e::4c8", - "CanPort80": true - }, - { - "Name": "12d", - "RegionID": 12, - "HostName": "derp12d.tailscale.com", - "IPv4": "209.177.158.246", - "IPv6": "2607:f740:e::811", - "CanPort80": true - } - ] - }, - "13": { - "RegionID": 13, - "RegionCode": "den", - "RegionName": "Denver", - "Latitude": 39.7392, - "Longitude": -104.9849, - "Nodes": [ - { - "Name": "13c", - "RegionID": 13, - "HostName": "derp13c.tailscale.com", - "IPv4": "192.73.242.28", - "IPv6": "2607:f740:16::5c", - "CanPort80": true - }, - { - "Name": "13d", - "RegionID": 13, - "HostName": "derp13d.tailscale.com", - "IPv4": "192.73.242.204", - "IPv6": "2607:f740:16::c23", - "CanPort80": true - }, - { - "Name": "13b", - "RegionID": 13, - "HostName": "derp13b.tailscale.com", - "IPv4": "192.73.242.187", - "IPv6": "2607:f740:16::640", - "CanPort80": true - } - ] - }, - "14": { - "RegionID": 14, - "RegionCode": "ams", - "RegionName": "Amsterdam", - "Latitude": 52.372778, - "Longitude": 4.893611, - "Nodes": [ - { - "Name": "14c", - "RegionID": 14, - "HostName": "derp14c.tailscale.com", - "IPv4": "176.58.93.147", - "IPv6": "2a00:dd80:3c::b09", - "CanPort80": true - }, - { - "Name": "14d", - "RegionID": 14, - "HostName": "derp14d.tailscale.com", - "IPv4": "176.58.93.154", - "IPv6": "2a00:dd80:3c::3d5", - "CanPort80": true - }, - { - "Name": "14b", - "RegionID": 14, - "HostName": "derp14b.tailscale.com", - "IPv4": "176.58.93.248", - "IPv6": "2a00:dd80:3c::807", - "CanPort80": true - } - ] - }, - "15": { - "RegionID": 15, - "RegionCode": "jnb", - "RegionName": "Johannesburg", - "Latitude": -26.204444, - "Longitude": 28.045556, - "Nodes": [ - { - "Name": "15c", - "RegionID": 15, - "HostName": "derp15c.tailscale.com", - "IPv4": "102.67.165.185", - "IPv6": "2c0f:edb0:0:10::b59", - "CanPort80": true - }, - { - "Name": "15d", - "RegionID": 15, - "HostName": "derp15d.tailscale.com", - "IPv4": "102.67.165.36", - "IPv6": "2c0f:edb0:0:10::599", - "CanPort80": true - }, - { - "Name": "15b", - "RegionID": 15, - "HostName": "derp15b.tailscale.com", - "IPv4": "102.67.165.90", - "IPv6": "2c0f:edb0:0:10::963", - "CanPort80": true - } - ] - }, - "16": { - "RegionID": 16, - "RegionCode": "mia", - "RegionName": "Miami", - "Latitude": 25.78, - "Longitude": -80.21, - "Nodes": [ - { - "Name": "16c", - "RegionID": 16, - "HostName": "derp16c.tailscale.com", - "IPv4": "192.73.243.229", - "IPv6": "2607:f740:17::4e4", - "CanPort80": true - }, - { - "Name": "16d", - "RegionID": 16, - "HostName": "derp16d.tailscale.com", - "IPv4": "192.73.243.141", - "IPv6": "2607:f740:17::475", - "CanPort80": true - }, - { - "Name": "16b", - "RegionID": 16, - "HostName": "derp16b.tailscale.com", - "IPv4": "192.73.243.135", - "IPv6": "2607:f740:17::476", - "CanPort80": true - } - ] - }, - "17": { - "RegionID": 17, - "RegionCode": "lax", - "RegionName": "Los Angeles", - "Latitude": 34.05, - "Longitude": -118.25, - "Nodes": [ - { - "Name": "17c", - "RegionID": 17, - "HostName": "derp17c.tailscale.com", - "IPv4": "208.111.40.12", - "IPv6": "2607:f740:c::10", - "CanPort80": true - }, - { - "Name": "17d", - "RegionID": 17, - "HostName": "derp17d.tailscale.com", - "IPv4": "208.111.40.216", - "IPv6": "2607:f740:c::e1b", - "CanPort80": true - }, - { - "Name": "17b", - "RegionID": 17, - "HostName": "derp17b.tailscale.com", - "IPv4": "192.73.244.245", - "IPv6": "2607:f740:c::646", - "CanPort80": true - } - ] - }, - "18": { - "RegionID": 18, - "RegionCode": "par", - "RegionName": "Paris", - "Latitude": 48.856667, - "Longitude": 2.352222, - "Nodes": [ - { - "Name": "18c", - "RegionID": 18, - "HostName": "derp18c.tailscale.com", - "IPv4": "176.58.90.207", - "IPv6": "2a00:dd80:3e::c19", - "CanPort80": true - }, - { - "Name": "18d", - "RegionID": 18, - "HostName": "derp18d.tailscale.com", - "IPv4": "176.58.90.104", - "IPv6": "2a00:dd80:3e::f2e", - "CanPort80": true - }, - { - "Name": "18b", - "RegionID": 18, - "HostName": "derp18b.tailscale.com", - "IPv4": "176.58.90.147", - "IPv6": "2a00:dd80:3e::363", - "CanPort80": true - } - ] - }, - "19": { - "RegionID": 19, - "RegionCode": "mad", - "RegionName": "Madrid", - "Latitude": 40.416944, - "Longitude": -3.703333, - "Nodes": [ - { - "Name": "19c", - "RegionID": 19, - "HostName": "derp19c.tailscale.com", - "IPv4": "45.159.97.61", - "IPv6": "2a00:dd80:14:10::20", - "CanPort80": true - }, - { - "Name": "19d", - "RegionID": 19, - "HostName": "derp19d.tailscale.com", - "IPv4": "45.159.97.233", - "IPv6": "2a00:dd80:14:10::34a", - "CanPort80": true - }, - { - "Name": "19b", - "RegionID": 19, - "HostName": "derp19b.tailscale.com", - "IPv4": "45.159.97.144", - "IPv6": "2a00:dd80:14:10::335", - "CanPort80": true - } - ] - }, - "2": { - "RegionID": 2, - "RegionCode": "sfo", - "RegionName": "San Francisco", - "Latitude": 37.7775, - "Longitude": -122.416389, - "Nodes": [ - { - "Name": "2e", - "RegionID": 2, - "HostName": "derp2e.tailscale.com", - "IPv4": "192.73.252.134", - "IPv6": "2607:f740:0:3f::44c", - "CanPort80": true - }, - { - "Name": "2f", - "RegionID": 2, - "HostName": "derp2f.tailscale.com", - "IPv4": "208.111.34.178", - "IPv6": "2607:f740:0:3f::f4", - "CanPort80": true - }, - { - "Name": "2d", - "RegionID": 2, - "HostName": "derp2d.tailscale.com", - "IPv4": "192.73.252.65", - "IPv6": "2607:f740:0:3f::287", - "CanPort80": true - } - ] - }, - "20": { - "RegionID": 20, - "RegionCode": "hkg", - "RegionName": "Hong Kong", - "Latitude": 22.3193, - "Longitude": 114.1694, - "Nodes": [ - { - "Name": "20c", - "RegionID": 20, - "HostName": "derp20c.tailscale.com", - "IPv4": "205.147.105.30", - "IPv6": "2403:2500:8000:1::5fb", - "CanPort80": true - }, - { - "Name": "20d", - "RegionID": 20, - "HostName": "derp20d.tailscale.com", - "IPv4": "205.147.105.78", - "IPv6": "2403:2500:8000:1::e9a", - "CanPort80": true - }, - { - "Name": "20b", - "RegionID": 20, - "HostName": "derp20b.tailscale.com", - "IPv4": "103.6.84.152", - "IPv6": "2403:2500:8000:1::ef6", - "CanPort80": true - } - ] - }, - "21": { - "RegionID": 21, - "RegionCode": "tor", - "RegionName": "Toronto", - "Latitude": 43.741667, - "Longitude": -79.373333, - "Nodes": [ - { - "Name": "21c", - "RegionID": 21, - "HostName": "derp21c.tailscale.com", - "IPv4": "162.248.221.215", - "IPv6": "2607:f740:50::f10", - "CanPort80": true - }, - { - "Name": "21d", - "RegionID": 21, - "HostName": "derp21d.tailscale.com", - "IPv4": "162.248.221.248", - "IPv6": "2607:f740:50::ca4", - "CanPort80": true - }, - { - "Name": "21b", - "RegionID": 21, - "HostName": "derp21b.tailscale.com", - "IPv4": "162.248.221.199", - "IPv6": "2607:f740:50::1d1", - "CanPort80": true - } - ] - }, - "22": { - "RegionID": 22, - "RegionCode": "waw", - "RegionName": "Warsaw", - "Latitude": 52.23, - "Longitude": 21.011111, - "Nodes": [ - { - "Name": "22c", - "RegionID": 22, - "HostName": "derp22c.tailscale.com", - "IPv4": "45.159.98.253", - "IPv6": "2a00:dd80:40:100::3f", - "CanPort80": true - }, - { - "Name": "22d", - "RegionID": 22, - "HostName": "derp22d.tailscale.com", - "IPv4": "45.159.98.145", - "IPv6": "2a00:dd80:40:100::211", - "CanPort80": true - }, - { - "Name": "22b", - "RegionID": 22, - "HostName": "derp22b.tailscale.com", - "IPv4": "45.159.98.196", - "IPv6": "2a00:dd80:40:100::316", - "CanPort80": true - } - ] - }, - "23": { - "RegionID": 23, - "RegionCode": "dbi", - "RegionName": "Dubai", - "Latitude": 25.263056, - "Longitude": 55.297222, - "Nodes": [ - { - "Name": "23c", - "RegionID": 23, - "HostName": "derp23c.tailscale.com", - "IPv4": "185.34.3.207", - "IPv6": "2a00:dd80:3f:100::a50", - "CanPort80": true - }, - { - "Name": "23d", - "RegionID": 23, - "HostName": "derp23d.tailscale.com", - "IPv4": "185.34.3.75", - "IPv6": "2a00:dd80:3f:100::97e", - "CanPort80": true - }, - { - "Name": "23b", - "RegionID": 23, - "HostName": "derp23b.tailscale.com", - "IPv4": "185.34.3.232", - "IPv6": "2a00:dd80:3f:100::76f", - "CanPort80": true - } - ] - }, - "24": { - "RegionID": 24, - "RegionCode": "hnl", - "RegionName": "Honolulu", - "Latitude": 21.306944, - "Longitude": -157.858333, - "Nodes": [ - { - "Name": "24c", - "RegionID": 24, - "HostName": "derp24c.tailscale.com", - "IPv4": "208.83.233.233", - "IPv6": "2001:19f0:c000:c591:5400:04ff:fe26:2c5f", - "CanPort80": true - }, - { - "Name": "24d", - "RegionID": 24, - "HostName": "derp24d.tailscale.com", - "IPv4": "208.72.155.133", - "IPv6": "2001:19f0:c000:c564:5400:04ff:fe26:2ba8", - "CanPort80": true - }, - { - "Name": "24b", - "RegionID": 24, - "HostName": "derp24b.tailscale.com", - "IPv4": "208.83.234.151", - "IPv6": "2001:19f0:c000:c586:5400:04ff:fe26:2ba6", - "CanPort80": true - } - ] - }, - "25": { - "RegionID": 25, - "RegionCode": "nai", - "RegionName": "Nairobi", - "Latitude": -1.286389, - "Longitude": 36.817222, - "Nodes": [ - { - "Name": "25c", - "RegionID": 25, - "HostName": "derp25c.tailscale.com", - "IPv4": "102.67.167.37", - "IPv6": "2c0f:edb0:2000:1::2c7", - "CanPort80": true - }, - { - "Name": "25d", - "RegionID": 25, - "HostName": "derp25d.tailscale.com", - "IPv4": "102.67.167.188", - "IPv6": "2c0f:edb0:2000:1::188", - "CanPort80": true - }, - { - "Name": "25b", - "RegionID": 25, - "HostName": "derp25b.tailscale.com", - "IPv4": "102.67.167.245", - "IPv6": "2c0f:edb0:2000:1::2e9", - "CanPort80": true - } - ] - }, - "26": { - "RegionID": 26, - "RegionCode": "nue", - "RegionName": "Nuremberg", - "Latitude": 49.453889, - "Longitude": 11.0775, - "Nodes": [ - { - "Name": "26c", - "RegionID": 26, - "HostName": "derp26c.tailscale.com", - "IPv4": "49.12.193.137", - "IPv6": "2a01:4f8:1c1c:5c70::1", - "CanPort80": true - }, - { - "Name": "26d", - "RegionID": 26, - "HostName": "derp26d.tailscale.com", - "IPv4": "49.13.204.141", - "IPv6": "2a01:4f8:1c0c:7d06::1", - "CanPort80": true - }, - { - "Name": "26b", - "RegionID": 26, - "HostName": "derp26b.tailscale.com", - "IPv4": "167.235.72.200", - "IPv6": "2a01:4f8:1c1c:47b6::1", - "CanPort80": true - } - ] - }, - "27": { - "RegionID": 27, - "RegionCode": "iad", - "RegionName": "Ashburn", - "Latitude": 39.03, - "Longitude": -77.471111, - "Nodes": [ - { - "Name": "27d", - "RegionID": 27, - "HostName": "derp27d.tailscale.com", - "IPv4": "178.156.152.106", - "IPv6": "2a01:4ff:f0:3c8e::1", - "CanPort80": true - }, - { - "Name": "27c", - "RegionID": 27, - "HostName": "derp27c.tailscale.com", - "IPv4": "178.156.152.91", - "IPv6": "2a01:4ff:f0:3913::1", - "CanPort80": true - }, - { - "Name": "27e", - "RegionID": 27, - "HostName": "derp27e.tailscale.com", - "IPv4": "178.156.134.232", - "IPv6": "2a01:4ff:f0:28d4::1", - "CanPort80": true - }, - { - "Name": "27b", - "RegionID": 27, - "HostName": "derp27b.tailscale.com", - "IPv4": "5.161.218.233", - "IPv6": "2a01:4ff:f0:3db9::1", - "CanPort80": true - } - ] - }, - "28": { - "RegionID": 28, - "RegionCode": "hel", - "RegionName": "Helsinki", - "Latitude": 60.170833, - "Longitude": 24.9375, - "Nodes": [ - { - "Name": "28c", - "RegionID": 28, - "HostName": "derp28c.tailscale.com", - "IPv4": "95.217.2.165", - "IPv6": "2a01:4f9:c012:cd74::1", - "CanPort80": true - }, - { - "Name": "28d", - "RegionID": 28, - "HostName": "derp28d.tailscale.com", - "IPv4": "157.180.28.32", - "IPv6": "2a01:4f9:c012:2e5b::1", - "CanPort80": true - }, - { - "Name": "28b", - "RegionID": 28, - "HostName": "derp28b.tailscale.com", - "IPv4": "65.109.143.62", - "IPv6": "2a01:4f9:c012:d55c::1", - "CanPort80": true - } - ] - }, - "3": { - "RegionID": 3, - "RegionCode": "sin", - "RegionName": "Singapore", - "Latitude": 1.3521, - "Longitude": 103.8198, - "Nodes": [ - { - "Name": "3g", - "RegionID": 3, - "HostName": "derp3g.tailscale.com", - "IPv4": "172.237.72.79", - "IPv6": "2600:3c15::2000:adff:fe08:6fab", - "CanPort80": true - }, - { - "Name": "3f", - "RegionID": 3, - "HostName": "derp3f.tailscale.com", - "IPv4": "172.237.72.8", - "IPv6": "2600:3c15::2000:53ff:fe48:a668", - "CanPort80": true - }, - { - "Name": "3h", - "RegionID": 3, - "HostName": "derp3h.tailscale.com", - "IPv4": "172.237.66.30", - "IPv6": "2600:3c15::2000:3dff:fe44:50aa", - "CanPort80": true - }, - { - "Name": "3e", - "RegionID": 3, - "HostName": "derp3e.tailscale.com", - "IPv4": "172.237.72.43", - "IPv6": "2600:3c15::2000:6cff:fee4:d799", - "CanPort80": true - } - ] - }, - "4": { - "RegionID": 4, - "RegionCode": "fra", - "RegionName": "Frankfurt", - "Latitude": 50.1109, - "Longitude": 8.6821, - "Nodes": [ - { - "Name": "4h", - "RegionID": 4, - "HostName": "derp4h.tailscale.com", - "IPv4": "185.40.234.77", - "IPv6": "2a00:dd80:20::bcf", - "CanPort80": true - }, - { - "Name": "4g", - "RegionID": 4, - "HostName": "derp4g.tailscale.com", - "IPv4": "185.40.234.113", - "IPv6": "2a00:dd80:20::8f", - "CanPort80": true - }, - { - "Name": "4i", - "RegionID": 4, - "HostName": "derp4i.tailscale.com", - "IPv4": "185.40.234.53", - "IPv6": "2a00:dd80:20::8a6", - "CanPort80": true - }, - { - "Name": "4f", - "RegionID": 4, - "HostName": "derp4f.tailscale.com", - "IPv4": "185.40.234.219", - "IPv6": "2a00:dd80:20::a25", - "CanPort80": true - } - ] - }, - "5": { - "RegionID": 5, - "RegionCode": "syd", - "RegionName": "Sydney", - "Latitude": -33.867778, - "Longitude": 151.21, - "Nodes": [ - { - "Name": "5f", - "RegionID": 5, - "HostName": "derp5f.tailscale.com", - "IPv4": "172.105.166.103", - "IPv6": "2400:8907::2000:ccff:fe1f:80da", - "CanPort80": true - }, - { - "Name": "5g", - "RegionID": 5, - "HostName": "derp5g.tailscale.com", - "IPv4": "172.105.169.57", - "IPv6": "2400:8907::2000:2fff:fea7:57f4", - "CanPort80": true - }, - { - "Name": "5e", - "RegionID": 5, - "HostName": "derp5e.tailscale.com", - "IPv4": "172.105.179.230", - "IPv6": "2400:8907::2000:ceff:fe8d:4f4e", - "CanPort80": true - } - ] - }, - "6": { - "RegionID": 6, - "RegionCode": "blr", - "RegionName": "Bengaluru", - "Latitude": 12.9716, - "Longitude": 77.5946, - "Nodes": [ - { - "Name": "6a", - "RegionID": 6, - "HostName": "derp6.tailscale.com", - "IPv4": "68.183.90.120", - "IPv6": "2400:6180:100:d0::982:d001", - "CanPort80": true - } - ] - }, - "7": { - "RegionID": 7, - "RegionCode": "tok", - "RegionName": "Tokyo", - "Latitude": 35.6764, - "Longitude": 139.65, - "Nodes": [ - { - "Name": "7g", - "RegionID": 7, - "HostName": "derp7g.tailscale.com", - "IPv4": "172.238.6.179", - "IPv6": "2600:3c18::2000:3fff:fe80:3ebd", - "CanPort80": true - }, - { - "Name": "7f", - "RegionID": 7, - "HostName": "derp7f.tailscale.com", - "IPv4": "172.238.6.34", - "IPv6": "2600:3c18::2000:acff:fe8e:3ed5", - "CanPort80": true - }, - { - "Name": "7h", - "RegionID": 7, - "HostName": "derp7h.tailscale.com", - "IPv4": "172.237.28.183", - "IPv6": "2600:3c18::2000:b1ff:fea9:4560", - "CanPort80": true - }, - { - "Name": "7e", - "RegionID": 7, - "HostName": "derp7e.tailscale.com", - "IPv4": "172.238.6.180", - "IPv6": "2600:3c18::2000:60ff:fe0f:6e83", - "STUNOnly": true, - "CanPort80": true - } - ] - }, - "8": { - "RegionID": 8, - "RegionCode": "lhr", - "RegionName": "London", - "Latitude": 51.5072, - "Longitude": 0.1276, - "Nodes": [ - { - "Name": "8f", - "RegionID": 8, - "HostName": "derp8f.tailscale.com", - "IPv4": "176.58.88.183", - "IPv6": "2a00:dd80:3a::dfa", - "CanPort80": true - }, - { - "Name": "8g", - "RegionID": 8, - "HostName": "derp8g.tailscale.com", - "IPv4": "176.58.92.254", - "IPv6": "2a00:dd80:3a::ed", - "CanPort80": true - }, - { - "Name": "8e", - "RegionID": 8, - "HostName": "derp8e.tailscale.com", - "IPv4": "176.58.92.144", - "IPv6": "2a00:dd80:3a::b33", - "CanPort80": true - } - ] - }, - "9": { - "RegionID": 9, - "RegionCode": "dfw", - "RegionName": "Dallas", - "Latitude": 32.779167, - "Longitude": -96.808889, - "Nodes": [ - { - "Name": "9e", - "RegionID": 9, - "HostName": "derp9e.tailscale.com", - "IPv4": "192.73.248.83", - "IPv6": "2607:f740:100::359", - "CanPort80": true - }, - { - "Name": "9f", - "RegionID": 9, - "HostName": "derp9f.tailscale.com", - "IPv4": "209.177.156.197", - "IPv6": "2607:f740:100::cad", - "CanPort80": true - }, - { - "Name": "9d", - "RegionID": 9, - "HostName": "derp9d.tailscale.com", - "IPv4": "209.177.156.94", - "IPv6": "2607:f740:100::c05", - "CanPort80": true - } - ] - } - } - }, - "DisplayMessages": null, - "TKAEnabled": false, - "TKAHead": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", - "Domain": "kratail2tid@passkey", - "DomainAuditLogID": "", - "UserProfiles": { - "2230775583277936": { - "ID": 2230775583277936, - "LoginName": "exit-b.tail78f774.ts.net", - "DisplayName": "exit-b" - } - } + "PacketFilterRules": null } }, "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.124.195.93": { - "peer_name": "exit-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-node/tailscaled.sock whois --json 100.124.195.93", - "response": null - }, - "100.116.18.24": { - "peer_name": "exit-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-node/tailscaled.sock whois --json 100.116.18.24", - "response": null - }, - "100.107.162.14": { - "peer_name": "group-a-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-node/tailscaled.sock whois --json 100.107.162.14", - "response": null - }, - "100.77.135.18": { - "peer_name": "group-b-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-node/tailscaled.sock whois --json 100.77.135.18", - "response": null - }, - "100.105.127.107": { - "peer_name": "multi-exit-router", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-node/tailscaled.sock whois --json 100.105.127.107", - "response": null - }, - "100.109.43.124": { - "peer_name": "router-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-node/tailscaled.sock whois --json 100.109.43.124", - "response": null - }, - "100.65.172.123": { - "peer_name": "router-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-node/tailscaled.sock whois --json 100.65.172.123", - "response": null - }, - "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 - } - }, "netmap": { - "SelfNode": { - "ID": 4041918547170221, - "StableID": "ngCb76MbZY11CNTRL", - "Name": "exit-node.tail78f774.ts.net.", - "User": 4041918547170221, - "Key": "nodekey:90f4a7b9dc024f1ddec414a49de2aa7611a2dd86efc9d7bae30862ad7c954269", - "DiscoKey": "discokey:6f1a76215431d7100538970473d97b4fde0e0a19b91035d1cba40b59ad79b437", - "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:36712", "10.65.0.27:36712", "172.17.0.1:36712"], - "Hostinfo": { - "Hostname": "exit-node", - "RoutableIPs": ["0.0.0.0/0", "::/0"], - "RequestTags": ["tag:exit"], - "Services": [ - { "Proto": "peerapi4", "Port": 37000 }, - { "Proto": "peerapi6", "Port": 37000 }, - { "Proto": "peerapi-dns-proxy", "Port": 1 } - ] - }, - "Created": "2026-02-23T00:13:20.566112173Z", - "Tags": ["tag:exit"], - "MachineAuthorized": true, - "CapMap": { - "https://tailscale.com/cap/file-sharing": null, - "https://tailscale.com/cap/is-owner": null, - "https://tailscale.com/cap/ssh": null, - "https://tailscale.com/cap/tailnet-lock": null, - "probe-udp-lifetime": null, - "ssh-behavior-v1": null, - "ssh-env-vars": null, - "store-appc-routes": null, - "tailnet-display-name": ["kratail2tid@passkey"] - }, - "ComputedName": "exit-node", - "ComputedNameWithHost": "exit-node" - }, - "AllCaps": [ - "https://tailscale.com/cap/is-owner", - "probe-udp-lifetime", - "https://tailscale.com/cap/ssh", - "https://tailscale.com/cap/tailnet-lock", - "store-appc-routes", - "tailnet-display-name", - "https://tailscale.com/cap/file-sharing", - "ssh-behavior-v1", - "ssh-env-vars" - ], - "NodeKey": "nodekey:90f4a7b9dc024f1ddec414a49de2aa7611a2dd86efc9d7bae30862ad7c954269", - "MachineKey": "mkey:e3be47b2090e55400f3e64825cd3092841529cd7b5b775e9e4553f12308abc2a", "Peers": [], - "DNS": { - "Routes": { - "tail78f774.ts.net.": null, - "ts.net.": [{ "Addr": "199.247.155.53" }, { "Addr": "2620:111:8007::53" }] - }, - "Domains": ["tail78f774.ts.net"], - "Proxied": true, - "ExitNodeFilteredSet": [".ts.net", ".tailscale.net"] - }, - "PacketFilter": [], - "PacketFilterRules": null, - "SSHPolicy": { "rules": [] }, - "CollectServices": false, - "DERPMap": { - "Regions": { - "1": { - "RegionID": 1, - "RegionCode": "nyc", - "RegionName": "New York City", - "Latitude": 40.7128, - "Longitude": -74.006, - "Nodes": [ - { - "Name": "1h", - "RegionID": 1, - "HostName": "derp1h.tailscale.com", - "IPv4": "199.38.181.93", - "IPv6": "2607:f740:f::afd", - "CanPort80": true - }, - { - "Name": "1g", - "RegionID": 1, - "HostName": "derp1g.tailscale.com", - "IPv4": "209.177.145.120", - "IPv6": "2607:f740:f::3eb", - "CanPort80": true - }, - { - "Name": "1i", - "RegionID": 1, - "HostName": "derp1i.tailscale.com", - "IPv4": "199.38.181.103", - "IPv6": "2607:f740:f::e19", - "CanPort80": true - }, - { - "Name": "1f", - "RegionID": 1, - "HostName": "derp1f.tailscale.com", - "IPv4": "199.38.181.104", - "IPv6": "2607:f740:f::bc", - "CanPort80": true - } - ] - }, - "10": { - "RegionID": 10, - "RegionCode": "sea", - "RegionName": "Seattle", - "Latitude": 47.609722, - "Longitude": -122.333056, - "Nodes": [ - { - "Name": "10c", - "RegionID": 10, - "HostName": "derp10c.tailscale.com", - "IPv4": "192.73.240.121", - "IPv6": "2607:f740:14::40c", - "CanPort80": true - }, - { - "Name": "10d", - "RegionID": 10, - "HostName": "derp10d.tailscale.com", - "IPv4": "192.73.240.132", - "IPv6": "2607:f740:14::500", - "CanPort80": true - }, - { - "Name": "10b", - "RegionID": 10, - "HostName": "derp10b.tailscale.com", - "IPv4": "192.73.240.161", - "IPv6": "2607:f740:14::61c", - "CanPort80": true - } - ] - }, - "11": { - "RegionID": 11, - "RegionCode": "sao", - "RegionName": "São Paulo", - "Latitude": -23.55, - "Longitude": -46.633333, - "Nodes": [ - { - "Name": "11f", - "RegionID": 11, - "HostName": "derp11f.tailscale.com", - "IPv4": "172.237.61.197", - "IPv6": "2600:3c0d::2000:3bff:fe44:6166", - "CanPort80": true - }, - { - "Name": "11g", - "RegionID": 11, - "HostName": "derp11g.tailscale.com", - "IPv4": "172.237.61.190", - "IPv6": "2600:3c0d::2000:62ff:febe:2e67", - "CanPort80": true - }, - { - "Name": "11e", - "RegionID": 11, - "HostName": "derp11e.tailscale.com", - "IPv4": "172.237.61.194", - "IPv6": "2600:3c0d::2000:d2ff:fe43:1790", - "CanPort80": true - } - ] - }, - "12": { - "RegionID": 12, - "RegionCode": "ord", - "RegionName": "Chicago", - "Latitude": 41.881944, - "Longitude": -87.627778, - "Nodes": [ - { - "Name": "12e", - "RegionID": 12, - "HostName": "derp12e.tailscale.com", - "IPv4": "209.177.158.15", - "IPv6": "2607:f740:e::b17", - "CanPort80": true - }, - { - "Name": "12f", - "RegionID": 12, - "HostName": "derp12f.tailscale.com", - "IPv4": "199.38.182.118", - "IPv6": "2607:f740:e::4c8", - "CanPort80": true - }, - { - "Name": "12d", - "RegionID": 12, - "HostName": "derp12d.tailscale.com", - "IPv4": "209.177.158.246", - "IPv6": "2607:f740:e::811", - "CanPort80": true - } - ] - }, - "13": { - "RegionID": 13, - "RegionCode": "den", - "RegionName": "Denver", - "Latitude": 39.7392, - "Longitude": -104.9849, - "Nodes": [ - { - "Name": "13c", - "RegionID": 13, - "HostName": "derp13c.tailscale.com", - "IPv4": "192.73.242.28", - "IPv6": "2607:f740:16::5c", - "CanPort80": true - }, - { - "Name": "13d", - "RegionID": 13, - "HostName": "derp13d.tailscale.com", - "IPv4": "192.73.242.204", - "IPv6": "2607:f740:16::c23", - "CanPort80": true - }, - { - "Name": "13b", - "RegionID": 13, - "HostName": "derp13b.tailscale.com", - "IPv4": "192.73.242.187", - "IPv6": "2607:f740:16::640", - "CanPort80": true - } - ] - }, - "14": { - "RegionID": 14, - "RegionCode": "ams", - "RegionName": "Amsterdam", - "Latitude": 52.372778, - "Longitude": 4.893611, - "Nodes": [ - { - "Name": "14c", - "RegionID": 14, - "HostName": "derp14c.tailscale.com", - "IPv4": "176.58.93.147", - "IPv6": "2a00:dd80:3c::b09", - "CanPort80": true - }, - { - "Name": "14d", - "RegionID": 14, - "HostName": "derp14d.tailscale.com", - "IPv4": "176.58.93.154", - "IPv6": "2a00:dd80:3c::3d5", - "CanPort80": true - }, - { - "Name": "14b", - "RegionID": 14, - "HostName": "derp14b.tailscale.com", - "IPv4": "176.58.93.248", - "IPv6": "2a00:dd80:3c::807", - "CanPort80": true - } - ] - }, - "15": { - "RegionID": 15, - "RegionCode": "jnb", - "RegionName": "Johannesburg", - "Latitude": -26.204444, - "Longitude": 28.045556, - "Nodes": [ - { - "Name": "15c", - "RegionID": 15, - "HostName": "derp15c.tailscale.com", - "IPv4": "102.67.165.185", - "IPv6": "2c0f:edb0:0:10::b59", - "CanPort80": true - }, - { - "Name": "15d", - "RegionID": 15, - "HostName": "derp15d.tailscale.com", - "IPv4": "102.67.165.36", - "IPv6": "2c0f:edb0:0:10::599", - "CanPort80": true - }, - { - "Name": "15b", - "RegionID": 15, - "HostName": "derp15b.tailscale.com", - "IPv4": "102.67.165.90", - "IPv6": "2c0f:edb0:0:10::963", - "CanPort80": true - } - ] - }, - "16": { - "RegionID": 16, - "RegionCode": "mia", - "RegionName": "Miami", - "Latitude": 25.78, - "Longitude": -80.21, - "Nodes": [ - { - "Name": "16c", - "RegionID": 16, - "HostName": "derp16c.tailscale.com", - "IPv4": "192.73.243.229", - "IPv6": "2607:f740:17::4e4", - "CanPort80": true - }, - { - "Name": "16d", - "RegionID": 16, - "HostName": "derp16d.tailscale.com", - "IPv4": "192.73.243.141", - "IPv6": "2607:f740:17::475", - "CanPort80": true - }, - { - "Name": "16b", - "RegionID": 16, - "HostName": "derp16b.tailscale.com", - "IPv4": "192.73.243.135", - "IPv6": "2607:f740:17::476", - "CanPort80": true - } - ] - }, - "17": { - "RegionID": 17, - "RegionCode": "lax", - "RegionName": "Los Angeles", - "Latitude": 34.05, - "Longitude": -118.25, - "Nodes": [ - { - "Name": "17c", - "RegionID": 17, - "HostName": "derp17c.tailscale.com", - "IPv4": "208.111.40.12", - "IPv6": "2607:f740:c::10", - "CanPort80": true - }, - { - "Name": "17d", - "RegionID": 17, - "HostName": "derp17d.tailscale.com", - "IPv4": "208.111.40.216", - "IPv6": "2607:f740:c::e1b", - "CanPort80": true - }, - { - "Name": "17b", - "RegionID": 17, - "HostName": "derp17b.tailscale.com", - "IPv4": "192.73.244.245", - "IPv6": "2607:f740:c::646", - "CanPort80": true - } - ] - }, - "18": { - "RegionID": 18, - "RegionCode": "par", - "RegionName": "Paris", - "Latitude": 48.856667, - "Longitude": 2.352222, - "Nodes": [ - { - "Name": "18c", - "RegionID": 18, - "HostName": "derp18c.tailscale.com", - "IPv4": "176.58.90.207", - "IPv6": "2a00:dd80:3e::c19", - "CanPort80": true - }, - { - "Name": "18d", - "RegionID": 18, - "HostName": "derp18d.tailscale.com", - "IPv4": "176.58.90.104", - "IPv6": "2a00:dd80:3e::f2e", - "CanPort80": true - }, - { - "Name": "18b", - "RegionID": 18, - "HostName": "derp18b.tailscale.com", - "IPv4": "176.58.90.147", - "IPv6": "2a00:dd80:3e::363", - "CanPort80": true - } - ] - }, - "19": { - "RegionID": 19, - "RegionCode": "mad", - "RegionName": "Madrid", - "Latitude": 40.416944, - "Longitude": -3.703333, - "Nodes": [ - { - "Name": "19c", - "RegionID": 19, - "HostName": "derp19c.tailscale.com", - "IPv4": "45.159.97.61", - "IPv6": "2a00:dd80:14:10::20", - "CanPort80": true - }, - { - "Name": "19d", - "RegionID": 19, - "HostName": "derp19d.tailscale.com", - "IPv4": "45.159.97.233", - "IPv6": "2a00:dd80:14:10::34a", - "CanPort80": true - }, - { - "Name": "19b", - "RegionID": 19, - "HostName": "derp19b.tailscale.com", - "IPv4": "45.159.97.144", - "IPv6": "2a00:dd80:14:10::335", - "CanPort80": true - } - ] - }, - "2": { - "RegionID": 2, - "RegionCode": "sfo", - "RegionName": "San Francisco", - "Latitude": 37.7775, - "Longitude": -122.416389, - "Nodes": [ - { - "Name": "2e", - "RegionID": 2, - "HostName": "derp2e.tailscale.com", - "IPv4": "192.73.252.134", - "IPv6": "2607:f740:0:3f::44c", - "CanPort80": true - }, - { - "Name": "2f", - "RegionID": 2, - "HostName": "derp2f.tailscale.com", - "IPv4": "208.111.34.178", - "IPv6": "2607:f740:0:3f::f4", - "CanPort80": true - }, - { - "Name": "2d", - "RegionID": 2, - "HostName": "derp2d.tailscale.com", - "IPv4": "192.73.252.65", - "IPv6": "2607:f740:0:3f::287", - "CanPort80": true - } - ] - }, - "20": { - "RegionID": 20, - "RegionCode": "hkg", - "RegionName": "Hong Kong", - "Latitude": 22.3193, - "Longitude": 114.1694, - "Nodes": [ - { - "Name": "20c", - "RegionID": 20, - "HostName": "derp20c.tailscale.com", - "IPv4": "205.147.105.30", - "IPv6": "2403:2500:8000:1::5fb", - "CanPort80": true - }, - { - "Name": "20d", - "RegionID": 20, - "HostName": "derp20d.tailscale.com", - "IPv4": "205.147.105.78", - "IPv6": "2403:2500:8000:1::e9a", - "CanPort80": true - }, - { - "Name": "20b", - "RegionID": 20, - "HostName": "derp20b.tailscale.com", - "IPv4": "103.6.84.152", - "IPv6": "2403:2500:8000:1::ef6", - "CanPort80": true - } - ] - }, - "21": { - "RegionID": 21, - "RegionCode": "tor", - "RegionName": "Toronto", - "Latitude": 43.741667, - "Longitude": -79.373333, - "Nodes": [ - { - "Name": "21c", - "RegionID": 21, - "HostName": "derp21c.tailscale.com", - "IPv4": "162.248.221.215", - "IPv6": "2607:f740:50::f10", - "CanPort80": true - }, - { - "Name": "21d", - "RegionID": 21, - "HostName": "derp21d.tailscale.com", - "IPv4": "162.248.221.248", - "IPv6": "2607:f740:50::ca4", - "CanPort80": true - }, - { - "Name": "21b", - "RegionID": 21, - "HostName": "derp21b.tailscale.com", - "IPv4": "162.248.221.199", - "IPv6": "2607:f740:50::1d1", - "CanPort80": true - } - ] - }, - "22": { - "RegionID": 22, - "RegionCode": "waw", - "RegionName": "Warsaw", - "Latitude": 52.23, - "Longitude": 21.011111, - "Nodes": [ - { - "Name": "22c", - "RegionID": 22, - "HostName": "derp22c.tailscale.com", - "IPv4": "45.159.98.253", - "IPv6": "2a00:dd80:40:100::3f", - "CanPort80": true - }, - { - "Name": "22d", - "RegionID": 22, - "HostName": "derp22d.tailscale.com", - "IPv4": "45.159.98.145", - "IPv6": "2a00:dd80:40:100::211", - "CanPort80": true - }, - { - "Name": "22b", - "RegionID": 22, - "HostName": "derp22b.tailscale.com", - "IPv4": "45.159.98.196", - "IPv6": "2a00:dd80:40:100::316", - "CanPort80": true - } - ] - }, - "23": { - "RegionID": 23, - "RegionCode": "dbi", - "RegionName": "Dubai", - "Latitude": 25.263056, - "Longitude": 55.297222, - "Nodes": [ - { - "Name": "23c", - "RegionID": 23, - "HostName": "derp23c.tailscale.com", - "IPv4": "185.34.3.207", - "IPv6": "2a00:dd80:3f:100::a50", - "CanPort80": true - }, - { - "Name": "23d", - "RegionID": 23, - "HostName": "derp23d.tailscale.com", - "IPv4": "185.34.3.75", - "IPv6": "2a00:dd80:3f:100::97e", - "CanPort80": true - }, - { - "Name": "23b", - "RegionID": 23, - "HostName": "derp23b.tailscale.com", - "IPv4": "185.34.3.232", - "IPv6": "2a00:dd80:3f:100::76f", - "CanPort80": true - } - ] - }, - "24": { - "RegionID": 24, - "RegionCode": "hnl", - "RegionName": "Honolulu", - "Latitude": 21.306944, - "Longitude": -157.858333, - "Nodes": [ - { - "Name": "24c", - "RegionID": 24, - "HostName": "derp24c.tailscale.com", - "IPv4": "208.83.233.233", - "IPv6": "2001:19f0:c000:c591:5400:04ff:fe26:2c5f", - "CanPort80": true - }, - { - "Name": "24d", - "RegionID": 24, - "HostName": "derp24d.tailscale.com", - "IPv4": "208.72.155.133", - "IPv6": "2001:19f0:c000:c564:5400:04ff:fe26:2ba8", - "CanPort80": true - }, - { - "Name": "24b", - "RegionID": 24, - "HostName": "derp24b.tailscale.com", - "IPv4": "208.83.234.151", - "IPv6": "2001:19f0:c000:c586:5400:04ff:fe26:2ba6", - "CanPort80": true - } - ] - }, - "25": { - "RegionID": 25, - "RegionCode": "nai", - "RegionName": "Nairobi", - "Latitude": -1.286389, - "Longitude": 36.817222, - "Nodes": [ - { - "Name": "25c", - "RegionID": 25, - "HostName": "derp25c.tailscale.com", - "IPv4": "102.67.167.37", - "IPv6": "2c0f:edb0:2000:1::2c7", - "CanPort80": true - }, - { - "Name": "25d", - "RegionID": 25, - "HostName": "derp25d.tailscale.com", - "IPv4": "102.67.167.188", - "IPv6": "2c0f:edb0:2000:1::188", - "CanPort80": true - }, - { - "Name": "25b", - "RegionID": 25, - "HostName": "derp25b.tailscale.com", - "IPv4": "102.67.167.245", - "IPv6": "2c0f:edb0:2000:1::2e9", - "CanPort80": true - } - ] - }, - "26": { - "RegionID": 26, - "RegionCode": "nue", - "RegionName": "Nuremberg", - "Latitude": 49.453889, - "Longitude": 11.0775, - "Nodes": [ - { - "Name": "26c", - "RegionID": 26, - "HostName": "derp26c.tailscale.com", - "IPv4": "49.12.193.137", - "IPv6": "2a01:4f8:1c1c:5c70::1", - "CanPort80": true - }, - { - "Name": "26d", - "RegionID": 26, - "HostName": "derp26d.tailscale.com", - "IPv4": "49.13.204.141", - "IPv6": "2a01:4f8:1c0c:7d06::1", - "CanPort80": true - }, - { - "Name": "26b", - "RegionID": 26, - "HostName": "derp26b.tailscale.com", - "IPv4": "167.235.72.200", - "IPv6": "2a01:4f8:1c1c:47b6::1", - "CanPort80": true - } - ] - }, - "27": { - "RegionID": 27, - "RegionCode": "iad", - "RegionName": "Ashburn", - "Latitude": 39.03, - "Longitude": -77.471111, - "Nodes": [ - { - "Name": "27d", - "RegionID": 27, - "HostName": "derp27d.tailscale.com", - "IPv4": "178.156.152.106", - "IPv6": "2a01:4ff:f0:3c8e::1", - "CanPort80": true - }, - { - "Name": "27c", - "RegionID": 27, - "HostName": "derp27c.tailscale.com", - "IPv4": "178.156.152.91", - "IPv6": "2a01:4ff:f0:3913::1", - "CanPort80": true - }, - { - "Name": "27e", - "RegionID": 27, - "HostName": "derp27e.tailscale.com", - "IPv4": "178.156.134.232", - "IPv6": "2a01:4ff:f0:28d4::1", - "CanPort80": true - }, - { - "Name": "27b", - "RegionID": 27, - "HostName": "derp27b.tailscale.com", - "IPv4": "5.161.218.233", - "IPv6": "2a01:4ff:f0:3db9::1", - "CanPort80": true - } - ] - }, - "28": { - "RegionID": 28, - "RegionCode": "hel", - "RegionName": "Helsinki", - "Latitude": 60.170833, - "Longitude": 24.9375, - "Nodes": [ - { - "Name": "28c", - "RegionID": 28, - "HostName": "derp28c.tailscale.com", - "IPv4": "95.217.2.165", - "IPv6": "2a01:4f9:c012:cd74::1", - "CanPort80": true - }, - { - "Name": "28d", - "RegionID": 28, - "HostName": "derp28d.tailscale.com", - "IPv4": "157.180.28.32", - "IPv6": "2a01:4f9:c012:2e5b::1", - "CanPort80": true - }, - { - "Name": "28b", - "RegionID": 28, - "HostName": "derp28b.tailscale.com", - "IPv4": "65.109.143.62", - "IPv6": "2a01:4f9:c012:d55c::1", - "CanPort80": true - } - ] - }, - "3": { - "RegionID": 3, - "RegionCode": "sin", - "RegionName": "Singapore", - "Latitude": 1.3521, - "Longitude": 103.8198, - "Nodes": [ - { - "Name": "3g", - "RegionID": 3, - "HostName": "derp3g.tailscale.com", - "IPv4": "172.237.72.79", - "IPv6": "2600:3c15::2000:adff:fe08:6fab", - "CanPort80": true - }, - { - "Name": "3f", - "RegionID": 3, - "HostName": "derp3f.tailscale.com", - "IPv4": "172.237.72.8", - "IPv6": "2600:3c15::2000:53ff:fe48:a668", - "CanPort80": true - }, - { - "Name": "3h", - "RegionID": 3, - "HostName": "derp3h.tailscale.com", - "IPv4": "172.237.66.30", - "IPv6": "2600:3c15::2000:3dff:fe44:50aa", - "CanPort80": true - }, - { - "Name": "3e", - "RegionID": 3, - "HostName": "derp3e.tailscale.com", - "IPv4": "172.237.72.43", - "IPv6": "2600:3c15::2000:6cff:fee4:d799", - "CanPort80": true - } - ] - }, - "4": { - "RegionID": 4, - "RegionCode": "fra", - "RegionName": "Frankfurt", - "Latitude": 50.1109, - "Longitude": 8.6821, - "Nodes": [ - { - "Name": "4h", - "RegionID": 4, - "HostName": "derp4h.tailscale.com", - "IPv4": "185.40.234.77", - "IPv6": "2a00:dd80:20::bcf", - "CanPort80": true - }, - { - "Name": "4g", - "RegionID": 4, - "HostName": "derp4g.tailscale.com", - "IPv4": "185.40.234.113", - "IPv6": "2a00:dd80:20::8f", - "CanPort80": true - }, - { - "Name": "4i", - "RegionID": 4, - "HostName": "derp4i.tailscale.com", - "IPv4": "185.40.234.53", - "IPv6": "2a00:dd80:20::8a6", - "CanPort80": true - }, - { - "Name": "4f", - "RegionID": 4, - "HostName": "derp4f.tailscale.com", - "IPv4": "185.40.234.219", - "IPv6": "2a00:dd80:20::a25", - "CanPort80": true - } - ] - }, - "5": { - "RegionID": 5, - "RegionCode": "syd", - "RegionName": "Sydney", - "Latitude": -33.867778, - "Longitude": 151.21, - "Nodes": [ - { - "Name": "5f", - "RegionID": 5, - "HostName": "derp5f.tailscale.com", - "IPv4": "172.105.166.103", - "IPv6": "2400:8907::2000:ccff:fe1f:80da", - "CanPort80": true - }, - { - "Name": "5g", - "RegionID": 5, - "HostName": "derp5g.tailscale.com", - "IPv4": "172.105.169.57", - "IPv6": "2400:8907::2000:2fff:fea7:57f4", - "CanPort80": true - }, - { - "Name": "5e", - "RegionID": 5, - "HostName": "derp5e.tailscale.com", - "IPv4": "172.105.179.230", - "IPv6": "2400:8907::2000:ceff:fe8d:4f4e", - "CanPort80": true - } - ] - }, - "6": { - "RegionID": 6, - "RegionCode": "blr", - "RegionName": "Bengaluru", - "Latitude": 12.9716, - "Longitude": 77.5946, - "Nodes": [ - { - "Name": "6a", - "RegionID": 6, - "HostName": "derp6.tailscale.com", - "IPv4": "68.183.90.120", - "IPv6": "2400:6180:100:d0::982:d001", - "CanPort80": true - } - ] - }, - "7": { - "RegionID": 7, - "RegionCode": "tok", - "RegionName": "Tokyo", - "Latitude": 35.6764, - "Longitude": 139.65, - "Nodes": [ - { - "Name": "7g", - "RegionID": 7, - "HostName": "derp7g.tailscale.com", - "IPv4": "172.238.6.179", - "IPv6": "2600:3c18::2000:3fff:fe80:3ebd", - "CanPort80": true - }, - { - "Name": "7f", - "RegionID": 7, - "HostName": "derp7f.tailscale.com", - "IPv4": "172.238.6.34", - "IPv6": "2600:3c18::2000:acff:fe8e:3ed5", - "CanPort80": true - }, - { - "Name": "7h", - "RegionID": 7, - "HostName": "derp7h.tailscale.com", - "IPv4": "172.237.28.183", - "IPv6": "2600:3c18::2000:b1ff:fea9:4560", - "CanPort80": true - }, - { - "Name": "7e", - "RegionID": 7, - "HostName": "derp7e.tailscale.com", - "IPv4": "172.238.6.180", - "IPv6": "2600:3c18::2000:60ff:fe0f:6e83", - "STUNOnly": true, - "CanPort80": true - } - ] - }, - "8": { - "RegionID": 8, - "RegionCode": "lhr", - "RegionName": "London", - "Latitude": 51.5072, - "Longitude": 0.1276, - "Nodes": [ - { - "Name": "8f", - "RegionID": 8, - "HostName": "derp8f.tailscale.com", - "IPv4": "176.58.88.183", - "IPv6": "2a00:dd80:3a::dfa", - "CanPort80": true - }, - { - "Name": "8g", - "RegionID": 8, - "HostName": "derp8g.tailscale.com", - "IPv4": "176.58.92.254", - "IPv6": "2a00:dd80:3a::ed", - "CanPort80": true - }, - { - "Name": "8e", - "RegionID": 8, - "HostName": "derp8e.tailscale.com", - "IPv4": "176.58.92.144", - "IPv6": "2a00:dd80:3a::b33", - "CanPort80": true - } - ] - }, - "9": { - "RegionID": 9, - "RegionCode": "dfw", - "RegionName": "Dallas", - "Latitude": 32.779167, - "Longitude": -96.808889, - "Nodes": [ - { - "Name": "9e", - "RegionID": 9, - "HostName": "derp9e.tailscale.com", - "IPv4": "192.73.248.83", - "IPv6": "2607:f740:100::359", - "CanPort80": true - }, - { - "Name": "9f", - "RegionID": 9, - "HostName": "derp9f.tailscale.com", - "IPv4": "209.177.156.197", - "IPv6": "2607:f740:100::cad", - "CanPort80": true - }, - { - "Name": "9d", - "RegionID": 9, - "HostName": "derp9d.tailscale.com", - "IPv4": "209.177.156.94", - "IPv6": "2607:f740:100::c05", - "CanPort80": true - } - ] - } - } - }, - "DisplayMessages": null, - "TKAEnabled": false, - "TKAHead": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", - "Domain": "kratail2tid@passkey", - "DomainAuditLogID": "", - "UserProfiles": { - "4041918547170221": { - "ID": 4041918547170221, - "LoginName": "exit-node.tail78f774.ts.net", - "DisplayName": "exit-node" - } - } + "PacketFilterRules": null } }, "group-a-client": { - "commands": { - "packet_filter_rules": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/group-a-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/group-a-client/tailscaled.sock debug localapi POST debug-packet-filter-matches" - }, "packet_filter_rules": null, - "packet_filter_matches": [], - "whois": { - "100.124.195.93": { - "peer_name": "exit-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/group-a-client/tailscaled.sock whois --json 100.124.195.93", - "response": null - }, - "100.116.18.24": { - "peer_name": "exit-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/group-a-client/tailscaled.sock whois --json 100.116.18.24", - "response": null - }, - "100.85.66.106": { - "peer_name": "exit-node", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/group-a-client/tailscaled.sock whois --json 100.85.66.106", - "response": null - }, - "100.77.135.18": { - "peer_name": "group-b-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/group-a-client/tailscaled.sock whois --json 100.77.135.18", - "response": null - }, - "100.105.127.107": { - "peer_name": "multi-exit-router", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/group-a-client/tailscaled.sock whois --json 100.105.127.107", - "response": null - }, - "100.109.43.124": { - "peer_name": "router-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/group-a-client/tailscaled.sock whois --json 100.109.43.124", - "response": null - }, - "100.65.172.123": { - "peer_name": "router-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/group-a-client/tailscaled.sock whois --json 100.65.172.123", - "response": null - }, - "100.92.142.61": { - "peer_name": "subnet-router", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/group-a-client/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/group-a-client/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/group-a-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/group-a-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/group-a-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/group-a-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/group-a-client/tailscaled.sock whois --json 100.90.199.68", - "response": null - } - }, "netmap": { - "SelfNode": { - "ID": 6999435610919250, - "StableID": "nyckVfJ4fw11CNTRL", - "Name": "group-a-client.tail78f774.ts.net.", - "User": 6999435610919250, - "Key": "nodekey:802726716bd4942fceb5e444218c930040fadb082698b57ea3eb59a6a26ba20d", - "DiscoKey": "discokey:bc93c2d3b81606e44eb1c96d721e7cd73c9497aa7d3efbe2f5e0d1e2e95b190f", - "Addresses": ["100.107.162.14/32", "fd7a:115c:a1e0::a237:a20e/128"], - "AllowedIPs": ["100.107.162.14/32", "fd7a:115c:a1e0::a237:a20e/128"], - "Endpoints": ["77.164.248.136:51980", "10.65.0.27:51980", "172.17.0.1:51980"], - "Hostinfo": { - "Hostname": "group-a-client", - "RequestTags": ["tag:group-a"], - "Services": [ - { "Proto": "peerapi4", "Port": 36543 }, - { "Proto": "peerapi6", "Port": 36543 }, - { "Proto": "peerapi-dns-proxy", "Port": 1 } - ] - }, - "Created": "2026-03-28T10:38:04.339428828Z", - "Tags": ["tag:group-a"], - "MachineAuthorized": true, - "CapMap": { - "https://tailscale.com/cap/file-sharing": null, - "https://tailscale.com/cap/is-owner": null, - "https://tailscale.com/cap/ssh": null, - "https://tailscale.com/cap/tailnet-lock": null, - "probe-udp-lifetime": null, - "ssh-behavior-v1": null, - "ssh-env-vars": null, - "store-appc-routes": null, - "tailnet-display-name": ["kratail2tid@passkey"] - }, - "ComputedName": "group-a-client", - "ComputedNameWithHost": "group-a-client" - }, - "AllCaps": [ - "probe-udp-lifetime", - "ssh-behavior-v1", - "https://tailscale.com/cap/file-sharing", - "store-appc-routes", - "https://tailscale.com/cap/is-owner", - "https://tailscale.com/cap/ssh", - "ssh-env-vars", - "tailnet-display-name", - "https://tailscale.com/cap/tailnet-lock" - ], - "NodeKey": "nodekey:802726716bd4942fceb5e444218c930040fadb082698b57ea3eb59a6a26ba20d", - "MachineKey": "mkey:fd2d0c2953440569b6c045d6bb1826bf138bf65b4ed4433532e4d91e09fd6b6b", "Peers": [], - "DNS": { - "Routes": { - "tail78f774.ts.net.": null, - "ts.net.": [{ "Addr": "199.247.155.53" }, { "Addr": "2620:111:8007::53" }] - }, - "Domains": ["tail78f774.ts.net"], - "Proxied": true, - "ExitNodeFilteredSet": [".ts.net", ".tailscale.net"] - }, - "PacketFilter": [], - "PacketFilterRules": null, - "SSHPolicy": { "rules": [] }, - "CollectServices": false, - "DERPMap": { - "Regions": { - "1": { - "RegionID": 1, - "RegionCode": "nyc", - "RegionName": "New York City", - "Latitude": 40.7128, - "Longitude": -74.006, - "Nodes": [ - { - "Name": "1h", - "RegionID": 1, - "HostName": "derp1h.tailscale.com", - "IPv4": "199.38.181.93", - "IPv6": "2607:f740:f::afd", - "CanPort80": true - }, - { - "Name": "1g", - "RegionID": 1, - "HostName": "derp1g.tailscale.com", - "IPv4": "209.177.145.120", - "IPv6": "2607:f740:f::3eb", - "CanPort80": true - }, - { - "Name": "1i", - "RegionID": 1, - "HostName": "derp1i.tailscale.com", - "IPv4": "199.38.181.103", - "IPv6": "2607:f740:f::e19", - "CanPort80": true - }, - { - "Name": "1f", - "RegionID": 1, - "HostName": "derp1f.tailscale.com", - "IPv4": "199.38.181.104", - "IPv6": "2607:f740:f::bc", - "CanPort80": true - } - ] - }, - "10": { - "RegionID": 10, - "RegionCode": "sea", - "RegionName": "Seattle", - "Latitude": 47.609722, - "Longitude": -122.333056, - "Nodes": [ - { - "Name": "10c", - "RegionID": 10, - "HostName": "derp10c.tailscale.com", - "IPv4": "192.73.240.121", - "IPv6": "2607:f740:14::40c", - "CanPort80": true - }, - { - "Name": "10d", - "RegionID": 10, - "HostName": "derp10d.tailscale.com", - "IPv4": "192.73.240.132", - "IPv6": "2607:f740:14::500", - "CanPort80": true - }, - { - "Name": "10b", - "RegionID": 10, - "HostName": "derp10b.tailscale.com", - "IPv4": "192.73.240.161", - "IPv6": "2607:f740:14::61c", - "CanPort80": true - } - ] - }, - "11": { - "RegionID": 11, - "RegionCode": "sao", - "RegionName": "São Paulo", - "Latitude": -23.55, - "Longitude": -46.633333, - "Nodes": [ - { - "Name": "11f", - "RegionID": 11, - "HostName": "derp11f.tailscale.com", - "IPv4": "172.237.61.197", - "IPv6": "2600:3c0d::2000:3bff:fe44:6166", - "CanPort80": true - }, - { - "Name": "11g", - "RegionID": 11, - "HostName": "derp11g.tailscale.com", - "IPv4": "172.237.61.190", - "IPv6": "2600:3c0d::2000:62ff:febe:2e67", - "CanPort80": true - }, - { - "Name": "11e", - "RegionID": 11, - "HostName": "derp11e.tailscale.com", - "IPv4": "172.237.61.194", - "IPv6": "2600:3c0d::2000:d2ff:fe43:1790", - "CanPort80": true - } - ] - }, - "12": { - "RegionID": 12, - "RegionCode": "ord", - "RegionName": "Chicago", - "Latitude": 41.881944, - "Longitude": -87.627778, - "Nodes": [ - { - "Name": "12e", - "RegionID": 12, - "HostName": "derp12e.tailscale.com", - "IPv4": "209.177.158.15", - "IPv6": "2607:f740:e::b17", - "CanPort80": true - }, - { - "Name": "12f", - "RegionID": 12, - "HostName": "derp12f.tailscale.com", - "IPv4": "199.38.182.118", - "IPv6": "2607:f740:e::4c8", - "CanPort80": true - }, - { - "Name": "12d", - "RegionID": 12, - "HostName": "derp12d.tailscale.com", - "IPv4": "209.177.158.246", - "IPv6": "2607:f740:e::811", - "CanPort80": true - } - ] - }, - "13": { - "RegionID": 13, - "RegionCode": "den", - "RegionName": "Denver", - "Latitude": 39.7392, - "Longitude": -104.9849, - "Nodes": [ - { - "Name": "13c", - "RegionID": 13, - "HostName": "derp13c.tailscale.com", - "IPv4": "192.73.242.28", - "IPv6": "2607:f740:16::5c", - "CanPort80": true - }, - { - "Name": "13d", - "RegionID": 13, - "HostName": "derp13d.tailscale.com", - "IPv4": "192.73.242.204", - "IPv6": "2607:f740:16::c23", - "CanPort80": true - }, - { - "Name": "13b", - "RegionID": 13, - "HostName": "derp13b.tailscale.com", - "IPv4": "192.73.242.187", - "IPv6": "2607:f740:16::640", - "CanPort80": true - } - ] - }, - "14": { - "RegionID": 14, - "RegionCode": "ams", - "RegionName": "Amsterdam", - "Latitude": 52.372778, - "Longitude": 4.893611, - "Nodes": [ - { - "Name": "14c", - "RegionID": 14, - "HostName": "derp14c.tailscale.com", - "IPv4": "176.58.93.147", - "IPv6": "2a00:dd80:3c::b09", - "CanPort80": true - }, - { - "Name": "14d", - "RegionID": 14, - "HostName": "derp14d.tailscale.com", - "IPv4": "176.58.93.154", - "IPv6": "2a00:dd80:3c::3d5", - "CanPort80": true - }, - { - "Name": "14b", - "RegionID": 14, - "HostName": "derp14b.tailscale.com", - "IPv4": "176.58.93.248", - "IPv6": "2a00:dd80:3c::807", - "CanPort80": true - } - ] - }, - "15": { - "RegionID": 15, - "RegionCode": "jnb", - "RegionName": "Johannesburg", - "Latitude": -26.204444, - "Longitude": 28.045556, - "Nodes": [ - { - "Name": "15c", - "RegionID": 15, - "HostName": "derp15c.tailscale.com", - "IPv4": "102.67.165.185", - "IPv6": "2c0f:edb0:0:10::b59", - "CanPort80": true - }, - { - "Name": "15d", - "RegionID": 15, - "HostName": "derp15d.tailscale.com", - "IPv4": "102.67.165.36", - "IPv6": "2c0f:edb0:0:10::599", - "CanPort80": true - }, - { - "Name": "15b", - "RegionID": 15, - "HostName": "derp15b.tailscale.com", - "IPv4": "102.67.165.90", - "IPv6": "2c0f:edb0:0:10::963", - "CanPort80": true - } - ] - }, - "16": { - "RegionID": 16, - "RegionCode": "mia", - "RegionName": "Miami", - "Latitude": 25.78, - "Longitude": -80.21, - "Nodes": [ - { - "Name": "16c", - "RegionID": 16, - "HostName": "derp16c.tailscale.com", - "IPv4": "192.73.243.229", - "IPv6": "2607:f740:17::4e4", - "CanPort80": true - }, - { - "Name": "16d", - "RegionID": 16, - "HostName": "derp16d.tailscale.com", - "IPv4": "192.73.243.141", - "IPv6": "2607:f740:17::475", - "CanPort80": true - }, - { - "Name": "16b", - "RegionID": 16, - "HostName": "derp16b.tailscale.com", - "IPv4": "192.73.243.135", - "IPv6": "2607:f740:17::476", - "CanPort80": true - } - ] - }, - "17": { - "RegionID": 17, - "RegionCode": "lax", - "RegionName": "Los Angeles", - "Latitude": 34.05, - "Longitude": -118.25, - "Nodes": [ - { - "Name": "17c", - "RegionID": 17, - "HostName": "derp17c.tailscale.com", - "IPv4": "208.111.40.12", - "IPv6": "2607:f740:c::10", - "CanPort80": true - }, - { - "Name": "17d", - "RegionID": 17, - "HostName": "derp17d.tailscale.com", - "IPv4": "208.111.40.216", - "IPv6": "2607:f740:c::e1b", - "CanPort80": true - }, - { - "Name": "17b", - "RegionID": 17, - "HostName": "derp17b.tailscale.com", - "IPv4": "192.73.244.245", - "IPv6": "2607:f740:c::646", - "CanPort80": true - } - ] - }, - "18": { - "RegionID": 18, - "RegionCode": "par", - "RegionName": "Paris", - "Latitude": 48.856667, - "Longitude": 2.352222, - "Nodes": [ - { - "Name": "18c", - "RegionID": 18, - "HostName": "derp18c.tailscale.com", - "IPv4": "176.58.90.207", - "IPv6": "2a00:dd80:3e::c19", - "CanPort80": true - }, - { - "Name": "18d", - "RegionID": 18, - "HostName": "derp18d.tailscale.com", - "IPv4": "176.58.90.104", - "IPv6": "2a00:dd80:3e::f2e", - "CanPort80": true - }, - { - "Name": "18b", - "RegionID": 18, - "HostName": "derp18b.tailscale.com", - "IPv4": "176.58.90.147", - "IPv6": "2a00:dd80:3e::363", - "CanPort80": true - } - ] - }, - "19": { - "RegionID": 19, - "RegionCode": "mad", - "RegionName": "Madrid", - "Latitude": 40.416944, - "Longitude": -3.703333, - "Nodes": [ - { - "Name": "19c", - "RegionID": 19, - "HostName": "derp19c.tailscale.com", - "IPv4": "45.159.97.61", - "IPv6": "2a00:dd80:14:10::20", - "CanPort80": true - }, - { - "Name": "19d", - "RegionID": 19, - "HostName": "derp19d.tailscale.com", - "IPv4": "45.159.97.233", - "IPv6": "2a00:dd80:14:10::34a", - "CanPort80": true - }, - { - "Name": "19b", - "RegionID": 19, - "HostName": "derp19b.tailscale.com", - "IPv4": "45.159.97.144", - "IPv6": "2a00:dd80:14:10::335", - "CanPort80": true - } - ] - }, - "2": { - "RegionID": 2, - "RegionCode": "sfo", - "RegionName": "San Francisco", - "Latitude": 37.7775, - "Longitude": -122.416389, - "Nodes": [ - { - "Name": "2e", - "RegionID": 2, - "HostName": "derp2e.tailscale.com", - "IPv4": "192.73.252.134", - "IPv6": "2607:f740:0:3f::44c", - "CanPort80": true - }, - { - "Name": "2f", - "RegionID": 2, - "HostName": "derp2f.tailscale.com", - "IPv4": "208.111.34.178", - "IPv6": "2607:f740:0:3f::f4", - "CanPort80": true - }, - { - "Name": "2d", - "RegionID": 2, - "HostName": "derp2d.tailscale.com", - "IPv4": "192.73.252.65", - "IPv6": "2607:f740:0:3f::287", - "CanPort80": true - } - ] - }, - "20": { - "RegionID": 20, - "RegionCode": "hkg", - "RegionName": "Hong Kong", - "Latitude": 22.3193, - "Longitude": 114.1694, - "Nodes": [ - { - "Name": "20c", - "RegionID": 20, - "HostName": "derp20c.tailscale.com", - "IPv4": "205.147.105.30", - "IPv6": "2403:2500:8000:1::5fb", - "CanPort80": true - }, - { - "Name": "20d", - "RegionID": 20, - "HostName": "derp20d.tailscale.com", - "IPv4": "205.147.105.78", - "IPv6": "2403:2500:8000:1::e9a", - "CanPort80": true - }, - { - "Name": "20b", - "RegionID": 20, - "HostName": "derp20b.tailscale.com", - "IPv4": "103.6.84.152", - "IPv6": "2403:2500:8000:1::ef6", - "CanPort80": true - } - ] - }, - "21": { - "RegionID": 21, - "RegionCode": "tor", - "RegionName": "Toronto", - "Latitude": 43.741667, - "Longitude": -79.373333, - "Nodes": [ - { - "Name": "21c", - "RegionID": 21, - "HostName": "derp21c.tailscale.com", - "IPv4": "162.248.221.215", - "IPv6": "2607:f740:50::f10", - "CanPort80": true - }, - { - "Name": "21d", - "RegionID": 21, - "HostName": "derp21d.tailscale.com", - "IPv4": "162.248.221.248", - "IPv6": "2607:f740:50::ca4", - "CanPort80": true - }, - { - "Name": "21b", - "RegionID": 21, - "HostName": "derp21b.tailscale.com", - "IPv4": "162.248.221.199", - "IPv6": "2607:f740:50::1d1", - "CanPort80": true - } - ] - }, - "22": { - "RegionID": 22, - "RegionCode": "waw", - "RegionName": "Warsaw", - "Latitude": 52.23, - "Longitude": 21.011111, - "Nodes": [ - { - "Name": "22c", - "RegionID": 22, - "HostName": "derp22c.tailscale.com", - "IPv4": "45.159.98.253", - "IPv6": "2a00:dd80:40:100::3f", - "CanPort80": true - }, - { - "Name": "22d", - "RegionID": 22, - "HostName": "derp22d.tailscale.com", - "IPv4": "45.159.98.145", - "IPv6": "2a00:dd80:40:100::211", - "CanPort80": true - }, - { - "Name": "22b", - "RegionID": 22, - "HostName": "derp22b.tailscale.com", - "IPv4": "45.159.98.196", - "IPv6": "2a00:dd80:40:100::316", - "CanPort80": true - } - ] - }, - "23": { - "RegionID": 23, - "RegionCode": "dbi", - "RegionName": "Dubai", - "Latitude": 25.263056, - "Longitude": 55.297222, - "Nodes": [ - { - "Name": "23c", - "RegionID": 23, - "HostName": "derp23c.tailscale.com", - "IPv4": "185.34.3.207", - "IPv6": "2a00:dd80:3f:100::a50", - "CanPort80": true - }, - { - "Name": "23d", - "RegionID": 23, - "HostName": "derp23d.tailscale.com", - "IPv4": "185.34.3.75", - "IPv6": "2a00:dd80:3f:100::97e", - "CanPort80": true - }, - { - "Name": "23b", - "RegionID": 23, - "HostName": "derp23b.tailscale.com", - "IPv4": "185.34.3.232", - "IPv6": "2a00:dd80:3f:100::76f", - "CanPort80": true - } - ] - }, - "24": { - "RegionID": 24, - "RegionCode": "hnl", - "RegionName": "Honolulu", - "Latitude": 21.306944, - "Longitude": -157.858333, - "Nodes": [ - { - "Name": "24c", - "RegionID": 24, - "HostName": "derp24c.tailscale.com", - "IPv4": "208.83.233.233", - "IPv6": "2001:19f0:c000:c591:5400:04ff:fe26:2c5f", - "CanPort80": true - }, - { - "Name": "24d", - "RegionID": 24, - "HostName": "derp24d.tailscale.com", - "IPv4": "208.72.155.133", - "IPv6": "2001:19f0:c000:c564:5400:04ff:fe26:2ba8", - "CanPort80": true - }, - { - "Name": "24b", - "RegionID": 24, - "HostName": "derp24b.tailscale.com", - "IPv4": "208.83.234.151", - "IPv6": "2001:19f0:c000:c586:5400:04ff:fe26:2ba6", - "CanPort80": true - } - ] - }, - "25": { - "RegionID": 25, - "RegionCode": "nai", - "RegionName": "Nairobi", - "Latitude": -1.286389, - "Longitude": 36.817222, - "Nodes": [ - { - "Name": "25c", - "RegionID": 25, - "HostName": "derp25c.tailscale.com", - "IPv4": "102.67.167.37", - "IPv6": "2c0f:edb0:2000:1::2c7", - "CanPort80": true - }, - { - "Name": "25d", - "RegionID": 25, - "HostName": "derp25d.tailscale.com", - "IPv4": "102.67.167.188", - "IPv6": "2c0f:edb0:2000:1::188", - "CanPort80": true - }, - { - "Name": "25b", - "RegionID": 25, - "HostName": "derp25b.tailscale.com", - "IPv4": "102.67.167.245", - "IPv6": "2c0f:edb0:2000:1::2e9", - "CanPort80": true - } - ] - }, - "26": { - "RegionID": 26, - "RegionCode": "nue", - "RegionName": "Nuremberg", - "Latitude": 49.453889, - "Longitude": 11.0775, - "Nodes": [ - { - "Name": "26c", - "RegionID": 26, - "HostName": "derp26c.tailscale.com", - "IPv4": "49.12.193.137", - "IPv6": "2a01:4f8:1c1c:5c70::1", - "CanPort80": true - }, - { - "Name": "26d", - "RegionID": 26, - "HostName": "derp26d.tailscale.com", - "IPv4": "49.13.204.141", - "IPv6": "2a01:4f8:1c0c:7d06::1", - "CanPort80": true - }, - { - "Name": "26b", - "RegionID": 26, - "HostName": "derp26b.tailscale.com", - "IPv4": "167.235.72.200", - "IPv6": "2a01:4f8:1c1c:47b6::1", - "CanPort80": true - } - ] - }, - "27": { - "RegionID": 27, - "RegionCode": "iad", - "RegionName": "Ashburn", - "Latitude": 39.03, - "Longitude": -77.471111, - "Nodes": [ - { - "Name": "27d", - "RegionID": 27, - "HostName": "derp27d.tailscale.com", - "IPv4": "178.156.152.106", - "IPv6": "2a01:4ff:f0:3c8e::1", - "CanPort80": true - }, - { - "Name": "27c", - "RegionID": 27, - "HostName": "derp27c.tailscale.com", - "IPv4": "178.156.152.91", - "IPv6": "2a01:4ff:f0:3913::1", - "CanPort80": true - }, - { - "Name": "27e", - "RegionID": 27, - "HostName": "derp27e.tailscale.com", - "IPv4": "178.156.134.232", - "IPv6": "2a01:4ff:f0:28d4::1", - "CanPort80": true - }, - { - "Name": "27b", - "RegionID": 27, - "HostName": "derp27b.tailscale.com", - "IPv4": "5.161.218.233", - "IPv6": "2a01:4ff:f0:3db9::1", - "CanPort80": true - } - ] - }, - "28": { - "RegionID": 28, - "RegionCode": "hel", - "RegionName": "Helsinki", - "Latitude": 60.170833, - "Longitude": 24.9375, - "Nodes": [ - { - "Name": "28c", - "RegionID": 28, - "HostName": "derp28c.tailscale.com", - "IPv4": "95.217.2.165", - "IPv6": "2a01:4f9:c012:cd74::1", - "CanPort80": true - }, - { - "Name": "28d", - "RegionID": 28, - "HostName": "derp28d.tailscale.com", - "IPv4": "157.180.28.32", - "IPv6": "2a01:4f9:c012:2e5b::1", - "CanPort80": true - }, - { - "Name": "28b", - "RegionID": 28, - "HostName": "derp28b.tailscale.com", - "IPv4": "65.109.143.62", - "IPv6": "2a01:4f9:c012:d55c::1", - "CanPort80": true - } - ] - }, - "3": { - "RegionID": 3, - "RegionCode": "sin", - "RegionName": "Singapore", - "Latitude": 1.3521, - "Longitude": 103.8198, - "Nodes": [ - { - "Name": "3g", - "RegionID": 3, - "HostName": "derp3g.tailscale.com", - "IPv4": "172.237.72.79", - "IPv6": "2600:3c15::2000:adff:fe08:6fab", - "CanPort80": true - }, - { - "Name": "3f", - "RegionID": 3, - "HostName": "derp3f.tailscale.com", - "IPv4": "172.237.72.8", - "IPv6": "2600:3c15::2000:53ff:fe48:a668", - "CanPort80": true - }, - { - "Name": "3h", - "RegionID": 3, - "HostName": "derp3h.tailscale.com", - "IPv4": "172.237.66.30", - "IPv6": "2600:3c15::2000:3dff:fe44:50aa", - "CanPort80": true - }, - { - "Name": "3e", - "RegionID": 3, - "HostName": "derp3e.tailscale.com", - "IPv4": "172.237.72.43", - "IPv6": "2600:3c15::2000:6cff:fee4:d799", - "CanPort80": true - } - ] - }, - "4": { - "RegionID": 4, - "RegionCode": "fra", - "RegionName": "Frankfurt", - "Latitude": 50.1109, - "Longitude": 8.6821, - "Nodes": [ - { - "Name": "4h", - "RegionID": 4, - "HostName": "derp4h.tailscale.com", - "IPv4": "185.40.234.77", - "IPv6": "2a00:dd80:20::bcf", - "CanPort80": true - }, - { - "Name": "4g", - "RegionID": 4, - "HostName": "derp4g.tailscale.com", - "IPv4": "185.40.234.113", - "IPv6": "2a00:dd80:20::8f", - "CanPort80": true - }, - { - "Name": "4i", - "RegionID": 4, - "HostName": "derp4i.tailscale.com", - "IPv4": "185.40.234.53", - "IPv6": "2a00:dd80:20::8a6", - "CanPort80": true - }, - { - "Name": "4f", - "RegionID": 4, - "HostName": "derp4f.tailscale.com", - "IPv4": "185.40.234.219", - "IPv6": "2a00:dd80:20::a25", - "CanPort80": true - } - ] - }, - "5": { - "RegionID": 5, - "RegionCode": "syd", - "RegionName": "Sydney", - "Latitude": -33.867778, - "Longitude": 151.21, - "Nodes": [ - { - "Name": "5f", - "RegionID": 5, - "HostName": "derp5f.tailscale.com", - "IPv4": "172.105.166.103", - "IPv6": "2400:8907::2000:ccff:fe1f:80da", - "CanPort80": true - }, - { - "Name": "5g", - "RegionID": 5, - "HostName": "derp5g.tailscale.com", - "IPv4": "172.105.169.57", - "IPv6": "2400:8907::2000:2fff:fea7:57f4", - "CanPort80": true - }, - { - "Name": "5e", - "RegionID": 5, - "HostName": "derp5e.tailscale.com", - "IPv4": "172.105.179.230", - "IPv6": "2400:8907::2000:ceff:fe8d:4f4e", - "CanPort80": true - } - ] - }, - "6": { - "RegionID": 6, - "RegionCode": "blr", - "RegionName": "Bengaluru", - "Latitude": 12.9716, - "Longitude": 77.5946, - "Nodes": [ - { - "Name": "6a", - "RegionID": 6, - "HostName": "derp6.tailscale.com", - "IPv4": "68.183.90.120", - "IPv6": "2400:6180:100:d0::982:d001", - "CanPort80": true - } - ] - }, - "7": { - "RegionID": 7, - "RegionCode": "tok", - "RegionName": "Tokyo", - "Latitude": 35.6764, - "Longitude": 139.65, - "Nodes": [ - { - "Name": "7g", - "RegionID": 7, - "HostName": "derp7g.tailscale.com", - "IPv4": "172.238.6.179", - "IPv6": "2600:3c18::2000:3fff:fe80:3ebd", - "CanPort80": true - }, - { - "Name": "7f", - "RegionID": 7, - "HostName": "derp7f.tailscale.com", - "IPv4": "172.238.6.34", - "IPv6": "2600:3c18::2000:acff:fe8e:3ed5", - "CanPort80": true - }, - { - "Name": "7h", - "RegionID": 7, - "HostName": "derp7h.tailscale.com", - "IPv4": "172.237.28.183", - "IPv6": "2600:3c18::2000:b1ff:fea9:4560", - "CanPort80": true - }, - { - "Name": "7e", - "RegionID": 7, - "HostName": "derp7e.tailscale.com", - "IPv4": "172.238.6.180", - "IPv6": "2600:3c18::2000:60ff:fe0f:6e83", - "STUNOnly": true, - "CanPort80": true - } - ] - }, - "8": { - "RegionID": 8, - "RegionCode": "lhr", - "RegionName": "London", - "Latitude": 51.5072, - "Longitude": 0.1276, - "Nodes": [ - { - "Name": "8f", - "RegionID": 8, - "HostName": "derp8f.tailscale.com", - "IPv4": "176.58.88.183", - "IPv6": "2a00:dd80:3a::dfa", - "CanPort80": true - }, - { - "Name": "8g", - "RegionID": 8, - "HostName": "derp8g.tailscale.com", - "IPv4": "176.58.92.254", - "IPv6": "2a00:dd80:3a::ed", - "CanPort80": true - }, - { - "Name": "8e", - "RegionID": 8, - "HostName": "derp8e.tailscale.com", - "IPv4": "176.58.92.144", - "IPv6": "2a00:dd80:3a::b33", - "CanPort80": true - } - ] - }, - "9": { - "RegionID": 9, - "RegionCode": "dfw", - "RegionName": "Dallas", - "Latitude": 32.779167, - "Longitude": -96.808889, - "Nodes": [ - { - "Name": "9e", - "RegionID": 9, - "HostName": "derp9e.tailscale.com", - "IPv4": "192.73.248.83", - "IPv6": "2607:f740:100::359", - "CanPort80": true - }, - { - "Name": "9f", - "RegionID": 9, - "HostName": "derp9f.tailscale.com", - "IPv4": "209.177.156.197", - "IPv6": "2607:f740:100::cad", - "CanPort80": true - }, - { - "Name": "9d", - "RegionID": 9, - "HostName": "derp9d.tailscale.com", - "IPv4": "209.177.156.94", - "IPv6": "2607:f740:100::c05", - "CanPort80": true - } - ] - } - } - }, - "DisplayMessages": null, - "TKAEnabled": false, - "TKAHead": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", - "Domain": "kratail2tid@passkey", - "DomainAuditLogID": "", - "UserProfiles": { - "6999435610919250": { - "ID": 6999435610919250, - "LoginName": "group-a-client.tail78f774.ts.net", - "DisplayName": "group-a-client" - } - } + "PacketFilterRules": null } }, "group-b-client": { - "commands": { - "packet_filter_rules": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/group-b-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/group-b-client/tailscaled.sock debug localapi POST debug-packet-filter-matches" - }, "packet_filter_rules": null, - "packet_filter_matches": [], - "whois": { - "100.124.195.93": { - "peer_name": "exit-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/group-b-client/tailscaled.sock whois --json 100.124.195.93", - "response": null - }, - "100.116.18.24": { - "peer_name": "exit-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/group-b-client/tailscaled.sock whois --json 100.116.18.24", - "response": null - }, - "100.85.66.106": { - "peer_name": "exit-node", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/group-b-client/tailscaled.sock whois --json 100.85.66.106", - "response": null - }, - "100.107.162.14": { - "peer_name": "group-a-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/group-b-client/tailscaled.sock whois --json 100.107.162.14", - "response": null - }, - "100.105.127.107": { - "peer_name": "multi-exit-router", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/group-b-client/tailscaled.sock whois --json 100.105.127.107", - "response": null - }, - "100.109.43.124": { - "peer_name": "router-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/group-b-client/tailscaled.sock whois --json 100.109.43.124", - "response": null - }, - "100.65.172.123": { - "peer_name": "router-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/group-b-client/tailscaled.sock whois --json 100.65.172.123", - "response": null - }, - "100.92.142.61": { - "peer_name": "subnet-router", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/group-b-client/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/group-b-client/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/group-b-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/group-b-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/group-b-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/group-b-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/group-b-client/tailscaled.sock whois --json 100.90.199.68", - "response": null - } - }, "netmap": { - "SelfNode": { - "ID": 1008089393782498, - "StableID": "ndUwgLoZs811CNTRL", - "Name": "group-b-client.tail78f774.ts.net.", - "User": 1008089393782498, - "Key": "nodekey:ef35a655163204a08b33e09fdc24709f1e3aaa7f40de4efd5549cf014b4d8711", - "DiscoKey": "discokey:e972182cda0d0b459c91b2881624b81749a7e44390a5dde1b9bc17c1ae67715a", - "Addresses": ["100.77.135.18/32", "fd7a:115c:a1e0::4b37:8712/128"], - "AllowedIPs": ["100.77.135.18/32", "fd7a:115c:a1e0::4b37:8712/128"], - "Endpoints": ["77.164.248.136:49377", "10.65.0.27:49377", "172.17.0.1:49377"], - "Hostinfo": { - "Hostname": "group-b-client", - "RequestTags": ["tag:group-b"], - "Services": [ - { "Proto": "peerapi4", "Port": 47173 }, - { "Proto": "peerapi6", "Port": 47173 }, - { "Proto": "peerapi-dns-proxy", "Port": 1 } - ] - }, - "Created": "2026-03-28T10:38:08.031309668Z", - "Tags": ["tag:group-b"], - "MachineAuthorized": true, - "CapMap": { - "https://tailscale.com/cap/file-sharing": null, - "https://tailscale.com/cap/is-owner": null, - "https://tailscale.com/cap/ssh": null, - "https://tailscale.com/cap/tailnet-lock": null, - "probe-udp-lifetime": null, - "ssh-behavior-v1": null, - "ssh-env-vars": null, - "store-appc-routes": null, - "tailnet-display-name": ["kratail2tid@passkey"] - }, - "ComputedName": "group-b-client", - "ComputedNameWithHost": "group-b-client" - }, - "AllCaps": [ - "probe-udp-lifetime", - "https://tailscale.com/cap/tailnet-lock", - "ssh-env-vars", - "store-appc-routes", - "https://tailscale.com/cap/is-owner", - "ssh-behavior-v1", - "tailnet-display-name", - "https://tailscale.com/cap/file-sharing", - "https://tailscale.com/cap/ssh" - ], - "NodeKey": "nodekey:ef35a655163204a08b33e09fdc24709f1e3aaa7f40de4efd5549cf014b4d8711", - "MachineKey": "mkey:f151b3ba7be457f1484c96d8daf48e032d8c9ed890a7f9b2f32c51458a19a05c", "Peers": [], - "DNS": { - "Routes": { - "tail78f774.ts.net.": null, - "ts.net.": [{ "Addr": "199.247.155.53" }, { "Addr": "2620:111:8007::53" }] - }, - "Domains": ["tail78f774.ts.net"], - "Proxied": true, - "ExitNodeFilteredSet": [".ts.net", ".tailscale.net"] - }, - "PacketFilter": [], - "PacketFilterRules": null, - "SSHPolicy": { "rules": [] }, - "CollectServices": false, - "DERPMap": { - "Regions": { - "1": { - "RegionID": 1, - "RegionCode": "nyc", - "RegionName": "New York City", - "Latitude": 40.7128, - "Longitude": -74.006, - "Nodes": [ - { - "Name": "1h", - "RegionID": 1, - "HostName": "derp1h.tailscale.com", - "IPv4": "199.38.181.93", - "IPv6": "2607:f740:f::afd", - "CanPort80": true - }, - { - "Name": "1g", - "RegionID": 1, - "HostName": "derp1g.tailscale.com", - "IPv4": "209.177.145.120", - "IPv6": "2607:f740:f::3eb", - "CanPort80": true - }, - { - "Name": "1i", - "RegionID": 1, - "HostName": "derp1i.tailscale.com", - "IPv4": "199.38.181.103", - "IPv6": "2607:f740:f::e19", - "CanPort80": true - }, - { - "Name": "1f", - "RegionID": 1, - "HostName": "derp1f.tailscale.com", - "IPv4": "199.38.181.104", - "IPv6": "2607:f740:f::bc", - "CanPort80": true - } - ] - }, - "10": { - "RegionID": 10, - "RegionCode": "sea", - "RegionName": "Seattle", - "Latitude": 47.609722, - "Longitude": -122.333056, - "Nodes": [ - { - "Name": "10c", - "RegionID": 10, - "HostName": "derp10c.tailscale.com", - "IPv4": "192.73.240.121", - "IPv6": "2607:f740:14::40c", - "CanPort80": true - }, - { - "Name": "10d", - "RegionID": 10, - "HostName": "derp10d.tailscale.com", - "IPv4": "192.73.240.132", - "IPv6": "2607:f740:14::500", - "CanPort80": true - }, - { - "Name": "10b", - "RegionID": 10, - "HostName": "derp10b.tailscale.com", - "IPv4": "192.73.240.161", - "IPv6": "2607:f740:14::61c", - "CanPort80": true - } - ] - }, - "11": { - "RegionID": 11, - "RegionCode": "sao", - "RegionName": "São Paulo", - "Latitude": -23.55, - "Longitude": -46.633333, - "Nodes": [ - { - "Name": "11f", - "RegionID": 11, - "HostName": "derp11f.tailscale.com", - "IPv4": "172.237.61.197", - "IPv6": "2600:3c0d::2000:3bff:fe44:6166", - "CanPort80": true - }, - { - "Name": "11g", - "RegionID": 11, - "HostName": "derp11g.tailscale.com", - "IPv4": "172.237.61.190", - "IPv6": "2600:3c0d::2000:62ff:febe:2e67", - "CanPort80": true - }, - { - "Name": "11e", - "RegionID": 11, - "HostName": "derp11e.tailscale.com", - "IPv4": "172.237.61.194", - "IPv6": "2600:3c0d::2000:d2ff:fe43:1790", - "CanPort80": true - } - ] - }, - "12": { - "RegionID": 12, - "RegionCode": "ord", - "RegionName": "Chicago", - "Latitude": 41.881944, - "Longitude": -87.627778, - "Nodes": [ - { - "Name": "12e", - "RegionID": 12, - "HostName": "derp12e.tailscale.com", - "IPv4": "209.177.158.15", - "IPv6": "2607:f740:e::b17", - "CanPort80": true - }, - { - "Name": "12f", - "RegionID": 12, - "HostName": "derp12f.tailscale.com", - "IPv4": "199.38.182.118", - "IPv6": "2607:f740:e::4c8", - "CanPort80": true - }, - { - "Name": "12d", - "RegionID": 12, - "HostName": "derp12d.tailscale.com", - "IPv4": "209.177.158.246", - "IPv6": "2607:f740:e::811", - "CanPort80": true - } - ] - }, - "13": { - "RegionID": 13, - "RegionCode": "den", - "RegionName": "Denver", - "Latitude": 39.7392, - "Longitude": -104.9849, - "Nodes": [ - { - "Name": "13c", - "RegionID": 13, - "HostName": "derp13c.tailscale.com", - "IPv4": "192.73.242.28", - "IPv6": "2607:f740:16::5c", - "CanPort80": true - }, - { - "Name": "13d", - "RegionID": 13, - "HostName": "derp13d.tailscale.com", - "IPv4": "192.73.242.204", - "IPv6": "2607:f740:16::c23", - "CanPort80": true - }, - { - "Name": "13b", - "RegionID": 13, - "HostName": "derp13b.tailscale.com", - "IPv4": "192.73.242.187", - "IPv6": "2607:f740:16::640", - "CanPort80": true - } - ] - }, - "14": { - "RegionID": 14, - "RegionCode": "ams", - "RegionName": "Amsterdam", - "Latitude": 52.372778, - "Longitude": 4.893611, - "Nodes": [ - { - "Name": "14c", - "RegionID": 14, - "HostName": "derp14c.tailscale.com", - "IPv4": "176.58.93.147", - "IPv6": "2a00:dd80:3c::b09", - "CanPort80": true - }, - { - "Name": "14d", - "RegionID": 14, - "HostName": "derp14d.tailscale.com", - "IPv4": "176.58.93.154", - "IPv6": "2a00:dd80:3c::3d5", - "CanPort80": true - }, - { - "Name": "14b", - "RegionID": 14, - "HostName": "derp14b.tailscale.com", - "IPv4": "176.58.93.248", - "IPv6": "2a00:dd80:3c::807", - "CanPort80": true - } - ] - }, - "15": { - "RegionID": 15, - "RegionCode": "jnb", - "RegionName": "Johannesburg", - "Latitude": -26.204444, - "Longitude": 28.045556, - "Nodes": [ - { - "Name": "15c", - "RegionID": 15, - "HostName": "derp15c.tailscale.com", - "IPv4": "102.67.165.185", - "IPv6": "2c0f:edb0:0:10::b59", - "CanPort80": true - }, - { - "Name": "15d", - "RegionID": 15, - "HostName": "derp15d.tailscale.com", - "IPv4": "102.67.165.36", - "IPv6": "2c0f:edb0:0:10::599", - "CanPort80": true - }, - { - "Name": "15b", - "RegionID": 15, - "HostName": "derp15b.tailscale.com", - "IPv4": "102.67.165.90", - "IPv6": "2c0f:edb0:0:10::963", - "CanPort80": true - } - ] - }, - "16": { - "RegionID": 16, - "RegionCode": "mia", - "RegionName": "Miami", - "Latitude": 25.78, - "Longitude": -80.21, - "Nodes": [ - { - "Name": "16c", - "RegionID": 16, - "HostName": "derp16c.tailscale.com", - "IPv4": "192.73.243.229", - "IPv6": "2607:f740:17::4e4", - "CanPort80": true - }, - { - "Name": "16d", - "RegionID": 16, - "HostName": "derp16d.tailscale.com", - "IPv4": "192.73.243.141", - "IPv6": "2607:f740:17::475", - "CanPort80": true - }, - { - "Name": "16b", - "RegionID": 16, - "HostName": "derp16b.tailscale.com", - "IPv4": "192.73.243.135", - "IPv6": "2607:f740:17::476", - "CanPort80": true - } - ] - }, - "17": { - "RegionID": 17, - "RegionCode": "lax", - "RegionName": "Los Angeles", - "Latitude": 34.05, - "Longitude": -118.25, - "Nodes": [ - { - "Name": "17c", - "RegionID": 17, - "HostName": "derp17c.tailscale.com", - "IPv4": "208.111.40.12", - "IPv6": "2607:f740:c::10", - "CanPort80": true - }, - { - "Name": "17d", - "RegionID": 17, - "HostName": "derp17d.tailscale.com", - "IPv4": "208.111.40.216", - "IPv6": "2607:f740:c::e1b", - "CanPort80": true - }, - { - "Name": "17b", - "RegionID": 17, - "HostName": "derp17b.tailscale.com", - "IPv4": "192.73.244.245", - "IPv6": "2607:f740:c::646", - "CanPort80": true - } - ] - }, - "18": { - "RegionID": 18, - "RegionCode": "par", - "RegionName": "Paris", - "Latitude": 48.856667, - "Longitude": 2.352222, - "Nodes": [ - { - "Name": "18c", - "RegionID": 18, - "HostName": "derp18c.tailscale.com", - "IPv4": "176.58.90.207", - "IPv6": "2a00:dd80:3e::c19", - "CanPort80": true - }, - { - "Name": "18d", - "RegionID": 18, - "HostName": "derp18d.tailscale.com", - "IPv4": "176.58.90.104", - "IPv6": "2a00:dd80:3e::f2e", - "CanPort80": true - }, - { - "Name": "18b", - "RegionID": 18, - "HostName": "derp18b.tailscale.com", - "IPv4": "176.58.90.147", - "IPv6": "2a00:dd80:3e::363", - "CanPort80": true - } - ] - }, - "19": { - "RegionID": 19, - "RegionCode": "mad", - "RegionName": "Madrid", - "Latitude": 40.416944, - "Longitude": -3.703333, - "Nodes": [ - { - "Name": "19c", - "RegionID": 19, - "HostName": "derp19c.tailscale.com", - "IPv4": "45.159.97.61", - "IPv6": "2a00:dd80:14:10::20", - "CanPort80": true - }, - { - "Name": "19d", - "RegionID": 19, - "HostName": "derp19d.tailscale.com", - "IPv4": "45.159.97.233", - "IPv6": "2a00:dd80:14:10::34a", - "CanPort80": true - }, - { - "Name": "19b", - "RegionID": 19, - "HostName": "derp19b.tailscale.com", - "IPv4": "45.159.97.144", - "IPv6": "2a00:dd80:14:10::335", - "CanPort80": true - } - ] - }, - "2": { - "RegionID": 2, - "RegionCode": "sfo", - "RegionName": "San Francisco", - "Latitude": 37.7775, - "Longitude": -122.416389, - "Nodes": [ - { - "Name": "2e", - "RegionID": 2, - "HostName": "derp2e.tailscale.com", - "IPv4": "192.73.252.134", - "IPv6": "2607:f740:0:3f::44c", - "CanPort80": true - }, - { - "Name": "2f", - "RegionID": 2, - "HostName": "derp2f.tailscale.com", - "IPv4": "208.111.34.178", - "IPv6": "2607:f740:0:3f::f4", - "CanPort80": true - }, - { - "Name": "2d", - "RegionID": 2, - "HostName": "derp2d.tailscale.com", - "IPv4": "192.73.252.65", - "IPv6": "2607:f740:0:3f::287", - "CanPort80": true - } - ] - }, - "20": { - "RegionID": 20, - "RegionCode": "hkg", - "RegionName": "Hong Kong", - "Latitude": 22.3193, - "Longitude": 114.1694, - "Nodes": [ - { - "Name": "20c", - "RegionID": 20, - "HostName": "derp20c.tailscale.com", - "IPv4": "205.147.105.30", - "IPv6": "2403:2500:8000:1::5fb", - "CanPort80": true - }, - { - "Name": "20d", - "RegionID": 20, - "HostName": "derp20d.tailscale.com", - "IPv4": "205.147.105.78", - "IPv6": "2403:2500:8000:1::e9a", - "CanPort80": true - }, - { - "Name": "20b", - "RegionID": 20, - "HostName": "derp20b.tailscale.com", - "IPv4": "103.6.84.152", - "IPv6": "2403:2500:8000:1::ef6", - "CanPort80": true - } - ] - }, - "21": { - "RegionID": 21, - "RegionCode": "tor", - "RegionName": "Toronto", - "Latitude": 43.741667, - "Longitude": -79.373333, - "Nodes": [ - { - "Name": "21c", - "RegionID": 21, - "HostName": "derp21c.tailscale.com", - "IPv4": "162.248.221.215", - "IPv6": "2607:f740:50::f10", - "CanPort80": true - }, - { - "Name": "21d", - "RegionID": 21, - "HostName": "derp21d.tailscale.com", - "IPv4": "162.248.221.248", - "IPv6": "2607:f740:50::ca4", - "CanPort80": true - }, - { - "Name": "21b", - "RegionID": 21, - "HostName": "derp21b.tailscale.com", - "IPv4": "162.248.221.199", - "IPv6": "2607:f740:50::1d1", - "CanPort80": true - } - ] - }, - "22": { - "RegionID": 22, - "RegionCode": "waw", - "RegionName": "Warsaw", - "Latitude": 52.23, - "Longitude": 21.011111, - "Nodes": [ - { - "Name": "22c", - "RegionID": 22, - "HostName": "derp22c.tailscale.com", - "IPv4": "45.159.98.253", - "IPv6": "2a00:dd80:40:100::3f", - "CanPort80": true - }, - { - "Name": "22d", - "RegionID": 22, - "HostName": "derp22d.tailscale.com", - "IPv4": "45.159.98.145", - "IPv6": "2a00:dd80:40:100::211", - "CanPort80": true - }, - { - "Name": "22b", - "RegionID": 22, - "HostName": "derp22b.tailscale.com", - "IPv4": "45.159.98.196", - "IPv6": "2a00:dd80:40:100::316", - "CanPort80": true - } - ] - }, - "23": { - "RegionID": 23, - "RegionCode": "dbi", - "RegionName": "Dubai", - "Latitude": 25.263056, - "Longitude": 55.297222, - "Nodes": [ - { - "Name": "23c", - "RegionID": 23, - "HostName": "derp23c.tailscale.com", - "IPv4": "185.34.3.207", - "IPv6": "2a00:dd80:3f:100::a50", - "CanPort80": true - }, - { - "Name": "23d", - "RegionID": 23, - "HostName": "derp23d.tailscale.com", - "IPv4": "185.34.3.75", - "IPv6": "2a00:dd80:3f:100::97e", - "CanPort80": true - }, - { - "Name": "23b", - "RegionID": 23, - "HostName": "derp23b.tailscale.com", - "IPv4": "185.34.3.232", - "IPv6": "2a00:dd80:3f:100::76f", - "CanPort80": true - } - ] - }, - "24": { - "RegionID": 24, - "RegionCode": "hnl", - "RegionName": "Honolulu", - "Latitude": 21.306944, - "Longitude": -157.858333, - "Nodes": [ - { - "Name": "24c", - "RegionID": 24, - "HostName": "derp24c.tailscale.com", - "IPv4": "208.83.233.233", - "IPv6": "2001:19f0:c000:c591:5400:04ff:fe26:2c5f", - "CanPort80": true - }, - { - "Name": "24d", - "RegionID": 24, - "HostName": "derp24d.tailscale.com", - "IPv4": "208.72.155.133", - "IPv6": "2001:19f0:c000:c564:5400:04ff:fe26:2ba8", - "CanPort80": true - }, - { - "Name": "24b", - "RegionID": 24, - "HostName": "derp24b.tailscale.com", - "IPv4": "208.83.234.151", - "IPv6": "2001:19f0:c000:c586:5400:04ff:fe26:2ba6", - "CanPort80": true - } - ] - }, - "25": { - "RegionID": 25, - "RegionCode": "nai", - "RegionName": "Nairobi", - "Latitude": -1.286389, - "Longitude": 36.817222, - "Nodes": [ - { - "Name": "25c", - "RegionID": 25, - "HostName": "derp25c.tailscale.com", - "IPv4": "102.67.167.37", - "IPv6": "2c0f:edb0:2000:1::2c7", - "CanPort80": true - }, - { - "Name": "25d", - "RegionID": 25, - "HostName": "derp25d.tailscale.com", - "IPv4": "102.67.167.188", - "IPv6": "2c0f:edb0:2000:1::188", - "CanPort80": true - }, - { - "Name": "25b", - "RegionID": 25, - "HostName": "derp25b.tailscale.com", - "IPv4": "102.67.167.245", - "IPv6": "2c0f:edb0:2000:1::2e9", - "CanPort80": true - } - ] - }, - "26": { - "RegionID": 26, - "RegionCode": "nue", - "RegionName": "Nuremberg", - "Latitude": 49.453889, - "Longitude": 11.0775, - "Nodes": [ - { - "Name": "26c", - "RegionID": 26, - "HostName": "derp26c.tailscale.com", - "IPv4": "49.12.193.137", - "IPv6": "2a01:4f8:1c1c:5c70::1", - "CanPort80": true - }, - { - "Name": "26d", - "RegionID": 26, - "HostName": "derp26d.tailscale.com", - "IPv4": "49.13.204.141", - "IPv6": "2a01:4f8:1c0c:7d06::1", - "CanPort80": true - }, - { - "Name": "26b", - "RegionID": 26, - "HostName": "derp26b.tailscale.com", - "IPv4": "167.235.72.200", - "IPv6": "2a01:4f8:1c1c:47b6::1", - "CanPort80": true - } - ] - }, - "27": { - "RegionID": 27, - "RegionCode": "iad", - "RegionName": "Ashburn", - "Latitude": 39.03, - "Longitude": -77.471111, - "Nodes": [ - { - "Name": "27d", - "RegionID": 27, - "HostName": "derp27d.tailscale.com", - "IPv4": "178.156.152.106", - "IPv6": "2a01:4ff:f0:3c8e::1", - "CanPort80": true - }, - { - "Name": "27c", - "RegionID": 27, - "HostName": "derp27c.tailscale.com", - "IPv4": "178.156.152.91", - "IPv6": "2a01:4ff:f0:3913::1", - "CanPort80": true - }, - { - "Name": "27e", - "RegionID": 27, - "HostName": "derp27e.tailscale.com", - "IPv4": "178.156.134.232", - "IPv6": "2a01:4ff:f0:28d4::1", - "CanPort80": true - }, - { - "Name": "27b", - "RegionID": 27, - "HostName": "derp27b.tailscale.com", - "IPv4": "5.161.218.233", - "IPv6": "2a01:4ff:f0:3db9::1", - "CanPort80": true - } - ] - }, - "28": { - "RegionID": 28, - "RegionCode": "hel", - "RegionName": "Helsinki", - "Latitude": 60.170833, - "Longitude": 24.9375, - "Nodes": [ - { - "Name": "28c", - "RegionID": 28, - "HostName": "derp28c.tailscale.com", - "IPv4": "95.217.2.165", - "IPv6": "2a01:4f9:c012:cd74::1", - "CanPort80": true - }, - { - "Name": "28d", - "RegionID": 28, - "HostName": "derp28d.tailscale.com", - "IPv4": "157.180.28.32", - "IPv6": "2a01:4f9:c012:2e5b::1", - "CanPort80": true - }, - { - "Name": "28b", - "RegionID": 28, - "HostName": "derp28b.tailscale.com", - "IPv4": "65.109.143.62", - "IPv6": "2a01:4f9:c012:d55c::1", - "CanPort80": true - } - ] - }, - "3": { - "RegionID": 3, - "RegionCode": "sin", - "RegionName": "Singapore", - "Latitude": 1.3521, - "Longitude": 103.8198, - "Nodes": [ - { - "Name": "3g", - "RegionID": 3, - "HostName": "derp3g.tailscale.com", - "IPv4": "172.237.72.79", - "IPv6": "2600:3c15::2000:adff:fe08:6fab", - "CanPort80": true - }, - { - "Name": "3f", - "RegionID": 3, - "HostName": "derp3f.tailscale.com", - "IPv4": "172.237.72.8", - "IPv6": "2600:3c15::2000:53ff:fe48:a668", - "CanPort80": true - }, - { - "Name": "3h", - "RegionID": 3, - "HostName": "derp3h.tailscale.com", - "IPv4": "172.237.66.30", - "IPv6": "2600:3c15::2000:3dff:fe44:50aa", - "CanPort80": true - }, - { - "Name": "3e", - "RegionID": 3, - "HostName": "derp3e.tailscale.com", - "IPv4": "172.237.72.43", - "IPv6": "2600:3c15::2000:6cff:fee4:d799", - "CanPort80": true - } - ] - }, - "4": { - "RegionID": 4, - "RegionCode": "fra", - "RegionName": "Frankfurt", - "Latitude": 50.1109, - "Longitude": 8.6821, - "Nodes": [ - { - "Name": "4h", - "RegionID": 4, - "HostName": "derp4h.tailscale.com", - "IPv4": "185.40.234.77", - "IPv6": "2a00:dd80:20::bcf", - "CanPort80": true - }, - { - "Name": "4g", - "RegionID": 4, - "HostName": "derp4g.tailscale.com", - "IPv4": "185.40.234.113", - "IPv6": "2a00:dd80:20::8f", - "CanPort80": true - }, - { - "Name": "4i", - "RegionID": 4, - "HostName": "derp4i.tailscale.com", - "IPv4": "185.40.234.53", - "IPv6": "2a00:dd80:20::8a6", - "CanPort80": true - }, - { - "Name": "4f", - "RegionID": 4, - "HostName": "derp4f.tailscale.com", - "IPv4": "185.40.234.219", - "IPv6": "2a00:dd80:20::a25", - "CanPort80": true - } - ] - }, - "5": { - "RegionID": 5, - "RegionCode": "syd", - "RegionName": "Sydney", - "Latitude": -33.867778, - "Longitude": 151.21, - "Nodes": [ - { - "Name": "5f", - "RegionID": 5, - "HostName": "derp5f.tailscale.com", - "IPv4": "172.105.166.103", - "IPv6": "2400:8907::2000:ccff:fe1f:80da", - "CanPort80": true - }, - { - "Name": "5g", - "RegionID": 5, - "HostName": "derp5g.tailscale.com", - "IPv4": "172.105.169.57", - "IPv6": "2400:8907::2000:2fff:fea7:57f4", - "CanPort80": true - }, - { - "Name": "5e", - "RegionID": 5, - "HostName": "derp5e.tailscale.com", - "IPv4": "172.105.179.230", - "IPv6": "2400:8907::2000:ceff:fe8d:4f4e", - "CanPort80": true - } - ] - }, - "6": { - "RegionID": 6, - "RegionCode": "blr", - "RegionName": "Bengaluru", - "Latitude": 12.9716, - "Longitude": 77.5946, - "Nodes": [ - { - "Name": "6a", - "RegionID": 6, - "HostName": "derp6.tailscale.com", - "IPv4": "68.183.90.120", - "IPv6": "2400:6180:100:d0::982:d001", - "CanPort80": true - } - ] - }, - "7": { - "RegionID": 7, - "RegionCode": "tok", - "RegionName": "Tokyo", - "Latitude": 35.6764, - "Longitude": 139.65, - "Nodes": [ - { - "Name": "7g", - "RegionID": 7, - "HostName": "derp7g.tailscale.com", - "IPv4": "172.238.6.179", - "IPv6": "2600:3c18::2000:3fff:fe80:3ebd", - "CanPort80": true - }, - { - "Name": "7f", - "RegionID": 7, - "HostName": "derp7f.tailscale.com", - "IPv4": "172.238.6.34", - "IPv6": "2600:3c18::2000:acff:fe8e:3ed5", - "CanPort80": true - }, - { - "Name": "7h", - "RegionID": 7, - "HostName": "derp7h.tailscale.com", - "IPv4": "172.237.28.183", - "IPv6": "2600:3c18::2000:b1ff:fea9:4560", - "CanPort80": true - }, - { - "Name": "7e", - "RegionID": 7, - "HostName": "derp7e.tailscale.com", - "IPv4": "172.238.6.180", - "IPv6": "2600:3c18::2000:60ff:fe0f:6e83", - "STUNOnly": true, - "CanPort80": true - } - ] - }, - "8": { - "RegionID": 8, - "RegionCode": "lhr", - "RegionName": "London", - "Latitude": 51.5072, - "Longitude": 0.1276, - "Nodes": [ - { - "Name": "8f", - "RegionID": 8, - "HostName": "derp8f.tailscale.com", - "IPv4": "176.58.88.183", - "IPv6": "2a00:dd80:3a::dfa", - "CanPort80": true - }, - { - "Name": "8g", - "RegionID": 8, - "HostName": "derp8g.tailscale.com", - "IPv4": "176.58.92.254", - "IPv6": "2a00:dd80:3a::ed", - "CanPort80": true - }, - { - "Name": "8e", - "RegionID": 8, - "HostName": "derp8e.tailscale.com", - "IPv4": "176.58.92.144", - "IPv6": "2a00:dd80:3a::b33", - "CanPort80": true - } - ] - }, - "9": { - "RegionID": 9, - "RegionCode": "dfw", - "RegionName": "Dallas", - "Latitude": 32.779167, - "Longitude": -96.808889, - "Nodes": [ - { - "Name": "9e", - "RegionID": 9, - "HostName": "derp9e.tailscale.com", - "IPv4": "192.73.248.83", - "IPv6": "2607:f740:100::359", - "CanPort80": true - }, - { - "Name": "9f", - "RegionID": 9, - "HostName": "derp9f.tailscale.com", - "IPv4": "209.177.156.197", - "IPv6": "2607:f740:100::cad", - "CanPort80": true - }, - { - "Name": "9d", - "RegionID": 9, - "HostName": "derp9d.tailscale.com", - "IPv4": "209.177.156.94", - "IPv6": "2607:f740:100::c05", - "CanPort80": true - } - ] - } - } - }, - "DisplayMessages": null, - "TKAEnabled": false, - "TKAHead": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", - "Domain": "kratail2tid@passkey", - "DomainAuditLogID": "", - "UserProfiles": { - "1008089393782498": { - "ID": 1008089393782498, - "LoginName": "group-b-client.tail78f774.ts.net", - "DisplayName": "group-b-client" - } - } + "PacketFilterRules": null } }, "multi-exit-router": { - "commands": { - "packet_filter_rules": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/multi-exit-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/multi-exit-router/tailscaled.sock debug localapi POST debug-packet-filter-matches" - }, "packet_filter_rules": null, - "packet_filter_matches": [], - "whois": { - "100.124.195.93": { - "peer_name": "exit-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/multi-exit-router/tailscaled.sock whois --json 100.124.195.93", - "response": null - }, - "100.116.18.24": { - "peer_name": "exit-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/multi-exit-router/tailscaled.sock whois --json 100.116.18.24", - "response": null - }, - "100.85.66.106": { - "peer_name": "exit-node", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/multi-exit-router/tailscaled.sock whois --json 100.85.66.106", - "response": null - }, - "100.107.162.14": { - "peer_name": "group-a-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/multi-exit-router/tailscaled.sock whois --json 100.107.162.14", - "response": null - }, - "100.77.135.18": { - "peer_name": "group-b-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/multi-exit-router/tailscaled.sock whois --json 100.77.135.18", - "response": null - }, - "100.109.43.124": { - "peer_name": "router-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/multi-exit-router/tailscaled.sock whois --json 100.109.43.124", - "response": null - }, - "100.65.172.123": { - "peer_name": "router-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/multi-exit-router/tailscaled.sock whois --json 100.65.172.123", - "response": null - }, - "100.92.142.61": { - "peer_name": "subnet-router", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/multi-exit-router/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/multi-exit-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/multi-exit-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/multi-exit-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/multi-exit-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/multi-exit-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/multi-exit-router/tailscaled.sock whois --json 100.90.199.68", - "response": null - } - }, "netmap": { - "SelfNode": { - "ID": 6294409699640722, - "StableID": "nMQuxDUk9r11CNTRL", - "Name": "multi-exit-router.tail78f774.ts.net.", - "User": 6294409699640722, - "Key": "nodekey:b854a0d64eba757cd3215c5bd78149cc0f927e35a2ad20342e88a15ead297f6a", - "DiscoKey": "discokey:762c82dd308809f511c6ac86dcc2642585837358fdd24958d55f16883c8e6c58", - "Addresses": ["100.105.127.107/32", "fd7a:115c:a1e0::ad37:7f6b/128"], - "AllowedIPs": ["100.105.127.107/32", "fd7a:115c:a1e0::ad37:7f6b/128", "10.33.0.0/16"], - "Endpoints": ["77.164.248.136:50766", "10.65.0.27:50766", "172.17.0.1:50766"], - "Hostinfo": { - "Hostname": "multi-exit-router", - "RoutableIPs": ["0.0.0.0/0", "::/0", "10.33.0.0/16"], - "RequestTags": ["tag:exit", "tag:router"], - "Services": [ - { "Proto": "peerapi4", "Port": 62548 }, - { "Proto": "peerapi6", "Port": 62548 }, - { "Proto": "peerapi-dns-proxy", "Port": 1 } - ] - }, - "Created": "2026-03-28T10:38:19.117098852Z", - "Tags": ["tag:exit", "tag:router"], - "PrimaryRoutes": ["10.33.0.0/16"], - "MachineAuthorized": true, - "CapMap": { - "https://tailscale.com/cap/file-sharing": null, - "https://tailscale.com/cap/is-owner": null, - "https://tailscale.com/cap/ssh": null, - "https://tailscale.com/cap/tailnet-lock": null, - "probe-udp-lifetime": null, - "ssh-behavior-v1": null, - "ssh-env-vars": null, - "store-appc-routes": null, - "tailnet-display-name": ["kratail2tid@passkey"] - }, - "ComputedName": "multi-exit-router", - "ComputedNameWithHost": "multi-exit-router" - }, - "AllCaps": [ - "store-appc-routes", - "https://tailscale.com/cap/tailnet-lock", - "https://tailscale.com/cap/file-sharing", - "ssh-env-vars", - "https://tailscale.com/cap/ssh", - "probe-udp-lifetime", - "ssh-behavior-v1", - "tailnet-display-name", - "https://tailscale.com/cap/is-owner" - ], - "NodeKey": "nodekey:b854a0d64eba757cd3215c5bd78149cc0f927e35a2ad20342e88a15ead297f6a", - "MachineKey": "mkey:91bee804809f30d07bfc29cf556844288fc3d45e0572469a3cb0799a535fda7d", "Peers": [], - "DNS": { - "Routes": { - "tail78f774.ts.net.": null, - "ts.net.": [{ "Addr": "199.247.155.53" }, { "Addr": "2620:111:8007::53" }] - }, - "Domains": ["tail78f774.ts.net"], - "Proxied": true, - "ExitNodeFilteredSet": [".ts.net", ".tailscale.net"] - }, - "PacketFilter": [], - "PacketFilterRules": null, - "SSHPolicy": { "rules": [] }, - "CollectServices": false, - "DERPMap": { - "Regions": { - "1": { - "RegionID": 1, - "RegionCode": "nyc", - "RegionName": "New York City", - "Latitude": 40.7128, - "Longitude": -74.006, - "Nodes": [ - { - "Name": "1h", - "RegionID": 1, - "HostName": "derp1h.tailscale.com", - "IPv4": "199.38.181.93", - "IPv6": "2607:f740:f::afd", - "CanPort80": true - }, - { - "Name": "1g", - "RegionID": 1, - "HostName": "derp1g.tailscale.com", - "IPv4": "209.177.145.120", - "IPv6": "2607:f740:f::3eb", - "CanPort80": true - }, - { - "Name": "1i", - "RegionID": 1, - "HostName": "derp1i.tailscale.com", - "IPv4": "199.38.181.103", - "IPv6": "2607:f740:f::e19", - "CanPort80": true - }, - { - "Name": "1f", - "RegionID": 1, - "HostName": "derp1f.tailscale.com", - "IPv4": "199.38.181.104", - "IPv6": "2607:f740:f::bc", - "CanPort80": true - } - ] - }, - "10": { - "RegionID": 10, - "RegionCode": "sea", - "RegionName": "Seattle", - "Latitude": 47.609722, - "Longitude": -122.333056, - "Nodes": [ - { - "Name": "10c", - "RegionID": 10, - "HostName": "derp10c.tailscale.com", - "IPv4": "192.73.240.121", - "IPv6": "2607:f740:14::40c", - "CanPort80": true - }, - { - "Name": "10d", - "RegionID": 10, - "HostName": "derp10d.tailscale.com", - "IPv4": "192.73.240.132", - "IPv6": "2607:f740:14::500", - "CanPort80": true - }, - { - "Name": "10b", - "RegionID": 10, - "HostName": "derp10b.tailscale.com", - "IPv4": "192.73.240.161", - "IPv6": "2607:f740:14::61c", - "CanPort80": true - } - ] - }, - "11": { - "RegionID": 11, - "RegionCode": "sao", - "RegionName": "São Paulo", - "Latitude": -23.55, - "Longitude": -46.633333, - "Nodes": [ - { - "Name": "11f", - "RegionID": 11, - "HostName": "derp11f.tailscale.com", - "IPv4": "172.237.61.197", - "IPv6": "2600:3c0d::2000:3bff:fe44:6166", - "CanPort80": true - }, - { - "Name": "11g", - "RegionID": 11, - "HostName": "derp11g.tailscale.com", - "IPv4": "172.237.61.190", - "IPv6": "2600:3c0d::2000:62ff:febe:2e67", - "CanPort80": true - }, - { - "Name": "11e", - "RegionID": 11, - "HostName": "derp11e.tailscale.com", - "IPv4": "172.237.61.194", - "IPv6": "2600:3c0d::2000:d2ff:fe43:1790", - "CanPort80": true - } - ] - }, - "12": { - "RegionID": 12, - "RegionCode": "ord", - "RegionName": "Chicago", - "Latitude": 41.881944, - "Longitude": -87.627778, - "Nodes": [ - { - "Name": "12e", - "RegionID": 12, - "HostName": "derp12e.tailscale.com", - "IPv4": "209.177.158.15", - "IPv6": "2607:f740:e::b17", - "CanPort80": true - }, - { - "Name": "12f", - "RegionID": 12, - "HostName": "derp12f.tailscale.com", - "IPv4": "199.38.182.118", - "IPv6": "2607:f740:e::4c8", - "CanPort80": true - }, - { - "Name": "12d", - "RegionID": 12, - "HostName": "derp12d.tailscale.com", - "IPv4": "209.177.158.246", - "IPv6": "2607:f740:e::811", - "CanPort80": true - } - ] - }, - "13": { - "RegionID": 13, - "RegionCode": "den", - "RegionName": "Denver", - "Latitude": 39.7392, - "Longitude": -104.9849, - "Nodes": [ - { - "Name": "13c", - "RegionID": 13, - "HostName": "derp13c.tailscale.com", - "IPv4": "192.73.242.28", - "IPv6": "2607:f740:16::5c", - "CanPort80": true - }, - { - "Name": "13d", - "RegionID": 13, - "HostName": "derp13d.tailscale.com", - "IPv4": "192.73.242.204", - "IPv6": "2607:f740:16::c23", - "CanPort80": true - }, - { - "Name": "13b", - "RegionID": 13, - "HostName": "derp13b.tailscale.com", - "IPv4": "192.73.242.187", - "IPv6": "2607:f740:16::640", - "CanPort80": true - } - ] - }, - "14": { - "RegionID": 14, - "RegionCode": "ams", - "RegionName": "Amsterdam", - "Latitude": 52.372778, - "Longitude": 4.893611, - "Nodes": [ - { - "Name": "14c", - "RegionID": 14, - "HostName": "derp14c.tailscale.com", - "IPv4": "176.58.93.147", - "IPv6": "2a00:dd80:3c::b09", - "CanPort80": true - }, - { - "Name": "14d", - "RegionID": 14, - "HostName": "derp14d.tailscale.com", - "IPv4": "176.58.93.154", - "IPv6": "2a00:dd80:3c::3d5", - "CanPort80": true - }, - { - "Name": "14b", - "RegionID": 14, - "HostName": "derp14b.tailscale.com", - "IPv4": "176.58.93.248", - "IPv6": "2a00:dd80:3c::807", - "CanPort80": true - } - ] - }, - "15": { - "RegionID": 15, - "RegionCode": "jnb", - "RegionName": "Johannesburg", - "Latitude": -26.204444, - "Longitude": 28.045556, - "Nodes": [ - { - "Name": "15c", - "RegionID": 15, - "HostName": "derp15c.tailscale.com", - "IPv4": "102.67.165.185", - "IPv6": "2c0f:edb0:0:10::b59", - "CanPort80": true - }, - { - "Name": "15d", - "RegionID": 15, - "HostName": "derp15d.tailscale.com", - "IPv4": "102.67.165.36", - "IPv6": "2c0f:edb0:0:10::599", - "CanPort80": true - }, - { - "Name": "15b", - "RegionID": 15, - "HostName": "derp15b.tailscale.com", - "IPv4": "102.67.165.90", - "IPv6": "2c0f:edb0:0:10::963", - "CanPort80": true - } - ] - }, - "16": { - "RegionID": 16, - "RegionCode": "mia", - "RegionName": "Miami", - "Latitude": 25.78, - "Longitude": -80.21, - "Nodes": [ - { - "Name": "16c", - "RegionID": 16, - "HostName": "derp16c.tailscale.com", - "IPv4": "192.73.243.229", - "IPv6": "2607:f740:17::4e4", - "CanPort80": true - }, - { - "Name": "16d", - "RegionID": 16, - "HostName": "derp16d.tailscale.com", - "IPv4": "192.73.243.141", - "IPv6": "2607:f740:17::475", - "CanPort80": true - }, - { - "Name": "16b", - "RegionID": 16, - "HostName": "derp16b.tailscale.com", - "IPv4": "192.73.243.135", - "IPv6": "2607:f740:17::476", - "CanPort80": true - } - ] - }, - "17": { - "RegionID": 17, - "RegionCode": "lax", - "RegionName": "Los Angeles", - "Latitude": 34.05, - "Longitude": -118.25, - "Nodes": [ - { - "Name": "17c", - "RegionID": 17, - "HostName": "derp17c.tailscale.com", - "IPv4": "208.111.40.12", - "IPv6": "2607:f740:c::10", - "CanPort80": true - }, - { - "Name": "17d", - "RegionID": 17, - "HostName": "derp17d.tailscale.com", - "IPv4": "208.111.40.216", - "IPv6": "2607:f740:c::e1b", - "CanPort80": true - }, - { - "Name": "17b", - "RegionID": 17, - "HostName": "derp17b.tailscale.com", - "IPv4": "192.73.244.245", - "IPv6": "2607:f740:c::646", - "CanPort80": true - } - ] - }, - "18": { - "RegionID": 18, - "RegionCode": "par", - "RegionName": "Paris", - "Latitude": 48.856667, - "Longitude": 2.352222, - "Nodes": [ - { - "Name": "18c", - "RegionID": 18, - "HostName": "derp18c.tailscale.com", - "IPv4": "176.58.90.207", - "IPv6": "2a00:dd80:3e::c19", - "CanPort80": true - }, - { - "Name": "18d", - "RegionID": 18, - "HostName": "derp18d.tailscale.com", - "IPv4": "176.58.90.104", - "IPv6": "2a00:dd80:3e::f2e", - "CanPort80": true - }, - { - "Name": "18b", - "RegionID": 18, - "HostName": "derp18b.tailscale.com", - "IPv4": "176.58.90.147", - "IPv6": "2a00:dd80:3e::363", - "CanPort80": true - } - ] - }, - "19": { - "RegionID": 19, - "RegionCode": "mad", - "RegionName": "Madrid", - "Latitude": 40.416944, - "Longitude": -3.703333, - "Nodes": [ - { - "Name": "19c", - "RegionID": 19, - "HostName": "derp19c.tailscale.com", - "IPv4": "45.159.97.61", - "IPv6": "2a00:dd80:14:10::20", - "CanPort80": true - }, - { - "Name": "19d", - "RegionID": 19, - "HostName": "derp19d.tailscale.com", - "IPv4": "45.159.97.233", - "IPv6": "2a00:dd80:14:10::34a", - "CanPort80": true - }, - { - "Name": "19b", - "RegionID": 19, - "HostName": "derp19b.tailscale.com", - "IPv4": "45.159.97.144", - "IPv6": "2a00:dd80:14:10::335", - "CanPort80": true - } - ] - }, - "2": { - "RegionID": 2, - "RegionCode": "sfo", - "RegionName": "San Francisco", - "Latitude": 37.7775, - "Longitude": -122.416389, - "Nodes": [ - { - "Name": "2e", - "RegionID": 2, - "HostName": "derp2e.tailscale.com", - "IPv4": "192.73.252.134", - "IPv6": "2607:f740:0:3f::44c", - "CanPort80": true - }, - { - "Name": "2f", - "RegionID": 2, - "HostName": "derp2f.tailscale.com", - "IPv4": "208.111.34.178", - "IPv6": "2607:f740:0:3f::f4", - "CanPort80": true - }, - { - "Name": "2d", - "RegionID": 2, - "HostName": "derp2d.tailscale.com", - "IPv4": "192.73.252.65", - "IPv6": "2607:f740:0:3f::287", - "CanPort80": true - } - ] - }, - "20": { - "RegionID": 20, - "RegionCode": "hkg", - "RegionName": "Hong Kong", - "Latitude": 22.3193, - "Longitude": 114.1694, - "Nodes": [ - { - "Name": "20c", - "RegionID": 20, - "HostName": "derp20c.tailscale.com", - "IPv4": "205.147.105.30", - "IPv6": "2403:2500:8000:1::5fb", - "CanPort80": true - }, - { - "Name": "20d", - "RegionID": 20, - "HostName": "derp20d.tailscale.com", - "IPv4": "205.147.105.78", - "IPv6": "2403:2500:8000:1::e9a", - "CanPort80": true - }, - { - "Name": "20b", - "RegionID": 20, - "HostName": "derp20b.tailscale.com", - "IPv4": "103.6.84.152", - "IPv6": "2403:2500:8000:1::ef6", - "CanPort80": true - } - ] - }, - "21": { - "RegionID": 21, - "RegionCode": "tor", - "RegionName": "Toronto", - "Latitude": 43.741667, - "Longitude": -79.373333, - "Nodes": [ - { - "Name": "21c", - "RegionID": 21, - "HostName": "derp21c.tailscale.com", - "IPv4": "162.248.221.215", - "IPv6": "2607:f740:50::f10", - "CanPort80": true - }, - { - "Name": "21d", - "RegionID": 21, - "HostName": "derp21d.tailscale.com", - "IPv4": "162.248.221.248", - "IPv6": "2607:f740:50::ca4", - "CanPort80": true - }, - { - "Name": "21b", - "RegionID": 21, - "HostName": "derp21b.tailscale.com", - "IPv4": "162.248.221.199", - "IPv6": "2607:f740:50::1d1", - "CanPort80": true - } - ] - }, - "22": { - "RegionID": 22, - "RegionCode": "waw", - "RegionName": "Warsaw", - "Latitude": 52.23, - "Longitude": 21.011111, - "Nodes": [ - { - "Name": "22c", - "RegionID": 22, - "HostName": "derp22c.tailscale.com", - "IPv4": "45.159.98.253", - "IPv6": "2a00:dd80:40:100::3f", - "CanPort80": true - }, - { - "Name": "22d", - "RegionID": 22, - "HostName": "derp22d.tailscale.com", - "IPv4": "45.159.98.145", - "IPv6": "2a00:dd80:40:100::211", - "CanPort80": true - }, - { - "Name": "22b", - "RegionID": 22, - "HostName": "derp22b.tailscale.com", - "IPv4": "45.159.98.196", - "IPv6": "2a00:dd80:40:100::316", - "CanPort80": true - } - ] - }, - "23": { - "RegionID": 23, - "RegionCode": "dbi", - "RegionName": "Dubai", - "Latitude": 25.263056, - "Longitude": 55.297222, - "Nodes": [ - { - "Name": "23c", - "RegionID": 23, - "HostName": "derp23c.tailscale.com", - "IPv4": "185.34.3.207", - "IPv6": "2a00:dd80:3f:100::a50", - "CanPort80": true - }, - { - "Name": "23d", - "RegionID": 23, - "HostName": "derp23d.tailscale.com", - "IPv4": "185.34.3.75", - "IPv6": "2a00:dd80:3f:100::97e", - "CanPort80": true - }, - { - "Name": "23b", - "RegionID": 23, - "HostName": "derp23b.tailscale.com", - "IPv4": "185.34.3.232", - "IPv6": "2a00:dd80:3f:100::76f", - "CanPort80": true - } - ] - }, - "24": { - "RegionID": 24, - "RegionCode": "hnl", - "RegionName": "Honolulu", - "Latitude": 21.306944, - "Longitude": -157.858333, - "Nodes": [ - { - "Name": "24c", - "RegionID": 24, - "HostName": "derp24c.tailscale.com", - "IPv4": "208.83.233.233", - "IPv6": "2001:19f0:c000:c591:5400:04ff:fe26:2c5f", - "CanPort80": true - }, - { - "Name": "24d", - "RegionID": 24, - "HostName": "derp24d.tailscale.com", - "IPv4": "208.72.155.133", - "IPv6": "2001:19f0:c000:c564:5400:04ff:fe26:2ba8", - "CanPort80": true - }, - { - "Name": "24b", - "RegionID": 24, - "HostName": "derp24b.tailscale.com", - "IPv4": "208.83.234.151", - "IPv6": "2001:19f0:c000:c586:5400:04ff:fe26:2ba6", - "CanPort80": true - } - ] - }, - "25": { - "RegionID": 25, - "RegionCode": "nai", - "RegionName": "Nairobi", - "Latitude": -1.286389, - "Longitude": 36.817222, - "Nodes": [ - { - "Name": "25c", - "RegionID": 25, - "HostName": "derp25c.tailscale.com", - "IPv4": "102.67.167.37", - "IPv6": "2c0f:edb0:2000:1::2c7", - "CanPort80": true - }, - { - "Name": "25d", - "RegionID": 25, - "HostName": "derp25d.tailscale.com", - "IPv4": "102.67.167.188", - "IPv6": "2c0f:edb0:2000:1::188", - "CanPort80": true - }, - { - "Name": "25b", - "RegionID": 25, - "HostName": "derp25b.tailscale.com", - "IPv4": "102.67.167.245", - "IPv6": "2c0f:edb0:2000:1::2e9", - "CanPort80": true - } - ] - }, - "26": { - "RegionID": 26, - "RegionCode": "nue", - "RegionName": "Nuremberg", - "Latitude": 49.453889, - "Longitude": 11.0775, - "Nodes": [ - { - "Name": "26c", - "RegionID": 26, - "HostName": "derp26c.tailscale.com", - "IPv4": "49.12.193.137", - "IPv6": "2a01:4f8:1c1c:5c70::1", - "CanPort80": true - }, - { - "Name": "26d", - "RegionID": 26, - "HostName": "derp26d.tailscale.com", - "IPv4": "49.13.204.141", - "IPv6": "2a01:4f8:1c0c:7d06::1", - "CanPort80": true - }, - { - "Name": "26b", - "RegionID": 26, - "HostName": "derp26b.tailscale.com", - "IPv4": "167.235.72.200", - "IPv6": "2a01:4f8:1c1c:47b6::1", - "CanPort80": true - } - ] - }, - "27": { - "RegionID": 27, - "RegionCode": "iad", - "RegionName": "Ashburn", - "Latitude": 39.03, - "Longitude": -77.471111, - "Nodes": [ - { - "Name": "27d", - "RegionID": 27, - "HostName": "derp27d.tailscale.com", - "IPv4": "178.156.152.106", - "IPv6": "2a01:4ff:f0:3c8e::1", - "CanPort80": true - }, - { - "Name": "27c", - "RegionID": 27, - "HostName": "derp27c.tailscale.com", - "IPv4": "178.156.152.91", - "IPv6": "2a01:4ff:f0:3913::1", - "CanPort80": true - }, - { - "Name": "27e", - "RegionID": 27, - "HostName": "derp27e.tailscale.com", - "IPv4": "178.156.134.232", - "IPv6": "2a01:4ff:f0:28d4::1", - "CanPort80": true - }, - { - "Name": "27b", - "RegionID": 27, - "HostName": "derp27b.tailscale.com", - "IPv4": "5.161.218.233", - "IPv6": "2a01:4ff:f0:3db9::1", - "CanPort80": true - } - ] - }, - "28": { - "RegionID": 28, - "RegionCode": "hel", - "RegionName": "Helsinki", - "Latitude": 60.170833, - "Longitude": 24.9375, - "Nodes": [ - { - "Name": "28c", - "RegionID": 28, - "HostName": "derp28c.tailscale.com", - "IPv4": "95.217.2.165", - "IPv6": "2a01:4f9:c012:cd74::1", - "CanPort80": true - }, - { - "Name": "28d", - "RegionID": 28, - "HostName": "derp28d.tailscale.com", - "IPv4": "157.180.28.32", - "IPv6": "2a01:4f9:c012:2e5b::1", - "CanPort80": true - }, - { - "Name": "28b", - "RegionID": 28, - "HostName": "derp28b.tailscale.com", - "IPv4": "65.109.143.62", - "IPv6": "2a01:4f9:c012:d55c::1", - "CanPort80": true - } - ] - }, - "3": { - "RegionID": 3, - "RegionCode": "sin", - "RegionName": "Singapore", - "Latitude": 1.3521, - "Longitude": 103.8198, - "Nodes": [ - { - "Name": "3g", - "RegionID": 3, - "HostName": "derp3g.tailscale.com", - "IPv4": "172.237.72.79", - "IPv6": "2600:3c15::2000:adff:fe08:6fab", - "CanPort80": true - }, - { - "Name": "3f", - "RegionID": 3, - "HostName": "derp3f.tailscale.com", - "IPv4": "172.237.72.8", - "IPv6": "2600:3c15::2000:53ff:fe48:a668", - "CanPort80": true - }, - { - "Name": "3h", - "RegionID": 3, - "HostName": "derp3h.tailscale.com", - "IPv4": "172.237.66.30", - "IPv6": "2600:3c15::2000:3dff:fe44:50aa", - "CanPort80": true - }, - { - "Name": "3e", - "RegionID": 3, - "HostName": "derp3e.tailscale.com", - "IPv4": "172.237.72.43", - "IPv6": "2600:3c15::2000:6cff:fee4:d799", - "CanPort80": true - } - ] - }, - "4": { - "RegionID": 4, - "RegionCode": "fra", - "RegionName": "Frankfurt", - "Latitude": 50.1109, - "Longitude": 8.6821, - "Nodes": [ - { - "Name": "4h", - "RegionID": 4, - "HostName": "derp4h.tailscale.com", - "IPv4": "185.40.234.77", - "IPv6": "2a00:dd80:20::bcf", - "CanPort80": true - }, - { - "Name": "4g", - "RegionID": 4, - "HostName": "derp4g.tailscale.com", - "IPv4": "185.40.234.113", - "IPv6": "2a00:dd80:20::8f", - "CanPort80": true - }, - { - "Name": "4i", - "RegionID": 4, - "HostName": "derp4i.tailscale.com", - "IPv4": "185.40.234.53", - "IPv6": "2a00:dd80:20::8a6", - "CanPort80": true - }, - { - "Name": "4f", - "RegionID": 4, - "HostName": "derp4f.tailscale.com", - "IPv4": "185.40.234.219", - "IPv6": "2a00:dd80:20::a25", - "CanPort80": true - } - ] - }, - "5": { - "RegionID": 5, - "RegionCode": "syd", - "RegionName": "Sydney", - "Latitude": -33.867778, - "Longitude": 151.21, - "Nodes": [ - { - "Name": "5f", - "RegionID": 5, - "HostName": "derp5f.tailscale.com", - "IPv4": "172.105.166.103", - "IPv6": "2400:8907::2000:ccff:fe1f:80da", - "CanPort80": true - }, - { - "Name": "5g", - "RegionID": 5, - "HostName": "derp5g.tailscale.com", - "IPv4": "172.105.169.57", - "IPv6": "2400:8907::2000:2fff:fea7:57f4", - "CanPort80": true - }, - { - "Name": "5e", - "RegionID": 5, - "HostName": "derp5e.tailscale.com", - "IPv4": "172.105.179.230", - "IPv6": "2400:8907::2000:ceff:fe8d:4f4e", - "CanPort80": true - } - ] - }, - "6": { - "RegionID": 6, - "RegionCode": "blr", - "RegionName": "Bengaluru", - "Latitude": 12.9716, - "Longitude": 77.5946, - "Nodes": [ - { - "Name": "6a", - "RegionID": 6, - "HostName": "derp6.tailscale.com", - "IPv4": "68.183.90.120", - "IPv6": "2400:6180:100:d0::982:d001", - "CanPort80": true - } - ] - }, - "7": { - "RegionID": 7, - "RegionCode": "tok", - "RegionName": "Tokyo", - "Latitude": 35.6764, - "Longitude": 139.65, - "Nodes": [ - { - "Name": "7g", - "RegionID": 7, - "HostName": "derp7g.tailscale.com", - "IPv4": "172.238.6.179", - "IPv6": "2600:3c18::2000:3fff:fe80:3ebd", - "CanPort80": true - }, - { - "Name": "7f", - "RegionID": 7, - "HostName": "derp7f.tailscale.com", - "IPv4": "172.238.6.34", - "IPv6": "2600:3c18::2000:acff:fe8e:3ed5", - "CanPort80": true - }, - { - "Name": "7h", - "RegionID": 7, - "HostName": "derp7h.tailscale.com", - "IPv4": "172.237.28.183", - "IPv6": "2600:3c18::2000:b1ff:fea9:4560", - "CanPort80": true - }, - { - "Name": "7e", - "RegionID": 7, - "HostName": "derp7e.tailscale.com", - "IPv4": "172.238.6.180", - "IPv6": "2600:3c18::2000:60ff:fe0f:6e83", - "STUNOnly": true, - "CanPort80": true - } - ] - }, - "8": { - "RegionID": 8, - "RegionCode": "lhr", - "RegionName": "London", - "Latitude": 51.5072, - "Longitude": 0.1276, - "Nodes": [ - { - "Name": "8f", - "RegionID": 8, - "HostName": "derp8f.tailscale.com", - "IPv4": "176.58.88.183", - "IPv6": "2a00:dd80:3a::dfa", - "CanPort80": true - }, - { - "Name": "8g", - "RegionID": 8, - "HostName": "derp8g.tailscale.com", - "IPv4": "176.58.92.254", - "IPv6": "2a00:dd80:3a::ed", - "CanPort80": true - }, - { - "Name": "8e", - "RegionID": 8, - "HostName": "derp8e.tailscale.com", - "IPv4": "176.58.92.144", - "IPv6": "2a00:dd80:3a::b33", - "CanPort80": true - } - ] - }, - "9": { - "RegionID": 9, - "RegionCode": "dfw", - "RegionName": "Dallas", - "Latitude": 32.779167, - "Longitude": -96.808889, - "Nodes": [ - { - "Name": "9e", - "RegionID": 9, - "HostName": "derp9e.tailscale.com", - "IPv4": "192.73.248.83", - "IPv6": "2607:f740:100::359", - "CanPort80": true - }, - { - "Name": "9f", - "RegionID": 9, - "HostName": "derp9f.tailscale.com", - "IPv4": "209.177.156.197", - "IPv6": "2607:f740:100::cad", - "CanPort80": true - }, - { - "Name": "9d", - "RegionID": 9, - "HostName": "derp9d.tailscale.com", - "IPv4": "209.177.156.94", - "IPv6": "2607:f740:100::c05", - "CanPort80": true - } - ] - } - } - }, - "DisplayMessages": null, - "TKAEnabled": false, - "TKAHead": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", - "Domain": "kratail2tid@passkey", - "DomainAuditLogID": "", - "UserProfiles": { - "6294409699640722": { - "ID": 6294409699640722, - "LoginName": "multi-exit-router.tail78f774.ts.net", - "DisplayName": "multi-exit-router" - } - } + "PacketFilterRules": null } }, "router-a": { - "commands": { - "packet_filter_rules": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/router-a/tailscaled.sock debug localapi POST debug-packet-filter-rules", - "packet_filter_matches": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/router-a/tailscaled.sock debug localapi POST debug-packet-filter-matches" - }, "packet_filter_rules": null, - "packet_filter_matches": [], - "whois": { - "100.124.195.93": { - "peer_name": "exit-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/router-a/tailscaled.sock whois --json 100.124.195.93", - "response": null - }, - "100.116.18.24": { - "peer_name": "exit-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/router-a/tailscaled.sock whois --json 100.116.18.24", - "response": null - }, - "100.85.66.106": { - "peer_name": "exit-node", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/router-a/tailscaled.sock whois --json 100.85.66.106", - "response": null - }, - "100.107.162.14": { - "peer_name": "group-a-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/router-a/tailscaled.sock whois --json 100.107.162.14", - "response": null - }, - "100.77.135.18": { - "peer_name": "group-b-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/router-a/tailscaled.sock whois --json 100.77.135.18", - "response": null - }, - "100.105.127.107": { - "peer_name": "multi-exit-router", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/router-a/tailscaled.sock whois --json 100.105.127.107", - "response": null - }, - "100.65.172.123": { - "peer_name": "router-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/router-a/tailscaled.sock whois --json 100.65.172.123", - "response": null - }, - "100.92.142.61": { - "peer_name": "subnet-router", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/router-a/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/router-a/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/router-a/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/router-a/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/router-a/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/router-a/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/router-a/tailscaled.sock whois --json 100.90.199.68", - "response": null - } - }, "netmap": { - "SelfNode": { - "ID": 50590507314324, - "StableID": "n3kktkvuP111CNTRL", - "Name": "router-a.tail78f774.ts.net.", - "User": 50590507314324, - "Key": "nodekey:b4566fef38b3b2b15684fc8890f5fbaea4525b467825f57a02801969a5ed2b7b", - "DiscoKey": "discokey:368ba711a8394633b4626eb7cd8e6a2df90d8e554505dc032ea9658ceee0f731", - "Addresses": ["100.109.43.124/32", "fd7a:115c:a1e0::a537:2b7c/128"], - "AllowedIPs": ["100.109.43.124/32", "fd7a:115c:a1e0::a537:2b7c/128", "10.44.0.0/16"], - "Endpoints": ["77.164.248.136:34130", "10.65.0.27:34130", "172.17.0.1:34130"], - "Hostinfo": { - "Hostname": "router-a", - "RoutableIPs": ["10.44.0.0/16"], - "RequestTags": ["tag:router-a"], - "Services": [ - { "Proto": "peerapi4", "Port": 49439 }, - { "Proto": "peerapi6", "Port": 49439 }, - { "Proto": "peerapi-dns-proxy", "Port": 1 } - ] - }, - "Created": "2026-03-28T10:38:11.734910312Z", - "Tags": ["tag:router-a"], - "PrimaryRoutes": ["10.44.0.0/16"], - "MachineAuthorized": true, - "CapMap": { - "https://tailscale.com/cap/file-sharing": null, - "https://tailscale.com/cap/is-owner": null, - "https://tailscale.com/cap/ssh": null, - "https://tailscale.com/cap/tailnet-lock": null, - "probe-udp-lifetime": null, - "ssh-behavior-v1": null, - "ssh-env-vars": null, - "store-appc-routes": null, - "tailnet-display-name": ["kratail2tid@passkey"] - }, - "ComputedName": "router-a", - "ComputedNameWithHost": "router-a" - }, - "AllCaps": [ - "https://tailscale.com/cap/ssh", - "probe-udp-lifetime", - "ssh-env-vars", - "tailnet-display-name", - "https://tailscale.com/cap/file-sharing", - "https://tailscale.com/cap/is-owner", - "ssh-behavior-v1", - "https://tailscale.com/cap/tailnet-lock", - "store-appc-routes" - ], - "NodeKey": "nodekey:b4566fef38b3b2b15684fc8890f5fbaea4525b467825f57a02801969a5ed2b7b", - "MachineKey": "mkey:868ba8a45654990c1c153c5ce33ef50ddd8d769841335e42decda4462d1dcf4e", "Peers": [], - "DNS": { - "Routes": { - "tail78f774.ts.net.": null, - "ts.net.": [{ "Addr": "199.247.155.53" }, { "Addr": "2620:111:8007::53" }] - }, - "Domains": ["tail78f774.ts.net"], - "Proxied": true, - "ExitNodeFilteredSet": [".ts.net", ".tailscale.net"] - }, - "PacketFilter": [], - "PacketFilterRules": null, - "SSHPolicy": { "rules": [] }, - "CollectServices": false, - "DERPMap": { - "Regions": { - "1": { - "RegionID": 1, - "RegionCode": "nyc", - "RegionName": "New York City", - "Latitude": 40.7128, - "Longitude": -74.006, - "Nodes": [ - { - "Name": "1h", - "RegionID": 1, - "HostName": "derp1h.tailscale.com", - "IPv4": "199.38.181.93", - "IPv6": "2607:f740:f::afd", - "CanPort80": true - }, - { - "Name": "1g", - "RegionID": 1, - "HostName": "derp1g.tailscale.com", - "IPv4": "209.177.145.120", - "IPv6": "2607:f740:f::3eb", - "CanPort80": true - }, - { - "Name": "1i", - "RegionID": 1, - "HostName": "derp1i.tailscale.com", - "IPv4": "199.38.181.103", - "IPv6": "2607:f740:f::e19", - "CanPort80": true - }, - { - "Name": "1f", - "RegionID": 1, - "HostName": "derp1f.tailscale.com", - "IPv4": "199.38.181.104", - "IPv6": "2607:f740:f::bc", - "CanPort80": true - } - ] - }, - "10": { - "RegionID": 10, - "RegionCode": "sea", - "RegionName": "Seattle", - "Latitude": 47.609722, - "Longitude": -122.333056, - "Nodes": [ - { - "Name": "10c", - "RegionID": 10, - "HostName": "derp10c.tailscale.com", - "IPv4": "192.73.240.121", - "IPv6": "2607:f740:14::40c", - "CanPort80": true - }, - { - "Name": "10d", - "RegionID": 10, - "HostName": "derp10d.tailscale.com", - "IPv4": "192.73.240.132", - "IPv6": "2607:f740:14::500", - "CanPort80": true - }, - { - "Name": "10b", - "RegionID": 10, - "HostName": "derp10b.tailscale.com", - "IPv4": "192.73.240.161", - "IPv6": "2607:f740:14::61c", - "CanPort80": true - } - ] - }, - "11": { - "RegionID": 11, - "RegionCode": "sao", - "RegionName": "São Paulo", - "Latitude": -23.55, - "Longitude": -46.633333, - "Nodes": [ - { - "Name": "11f", - "RegionID": 11, - "HostName": "derp11f.tailscale.com", - "IPv4": "172.237.61.197", - "IPv6": "2600:3c0d::2000:3bff:fe44:6166", - "CanPort80": true - }, - { - "Name": "11g", - "RegionID": 11, - "HostName": "derp11g.tailscale.com", - "IPv4": "172.237.61.190", - "IPv6": "2600:3c0d::2000:62ff:febe:2e67", - "CanPort80": true - }, - { - "Name": "11e", - "RegionID": 11, - "HostName": "derp11e.tailscale.com", - "IPv4": "172.237.61.194", - "IPv6": "2600:3c0d::2000:d2ff:fe43:1790", - "CanPort80": true - } - ] - }, - "12": { - "RegionID": 12, - "RegionCode": "ord", - "RegionName": "Chicago", - "Latitude": 41.881944, - "Longitude": -87.627778, - "Nodes": [ - { - "Name": "12e", - "RegionID": 12, - "HostName": "derp12e.tailscale.com", - "IPv4": "209.177.158.15", - "IPv6": "2607:f740:e::b17", - "CanPort80": true - }, - { - "Name": "12f", - "RegionID": 12, - "HostName": "derp12f.tailscale.com", - "IPv4": "199.38.182.118", - "IPv6": "2607:f740:e::4c8", - "CanPort80": true - }, - { - "Name": "12d", - "RegionID": 12, - "HostName": "derp12d.tailscale.com", - "IPv4": "209.177.158.246", - "IPv6": "2607:f740:e::811", - "CanPort80": true - } - ] - }, - "13": { - "RegionID": 13, - "RegionCode": "den", - "RegionName": "Denver", - "Latitude": 39.7392, - "Longitude": -104.9849, - "Nodes": [ - { - "Name": "13c", - "RegionID": 13, - "HostName": "derp13c.tailscale.com", - "IPv4": "192.73.242.28", - "IPv6": "2607:f740:16::5c", - "CanPort80": true - }, - { - "Name": "13d", - "RegionID": 13, - "HostName": "derp13d.tailscale.com", - "IPv4": "192.73.242.204", - "IPv6": "2607:f740:16::c23", - "CanPort80": true - }, - { - "Name": "13b", - "RegionID": 13, - "HostName": "derp13b.tailscale.com", - "IPv4": "192.73.242.187", - "IPv6": "2607:f740:16::640", - "CanPort80": true - } - ] - }, - "14": { - "RegionID": 14, - "RegionCode": "ams", - "RegionName": "Amsterdam", - "Latitude": 52.372778, - "Longitude": 4.893611, - "Nodes": [ - { - "Name": "14c", - "RegionID": 14, - "HostName": "derp14c.tailscale.com", - "IPv4": "176.58.93.147", - "IPv6": "2a00:dd80:3c::b09", - "CanPort80": true - }, - { - "Name": "14d", - "RegionID": 14, - "HostName": "derp14d.tailscale.com", - "IPv4": "176.58.93.154", - "IPv6": "2a00:dd80:3c::3d5", - "CanPort80": true - }, - { - "Name": "14b", - "RegionID": 14, - "HostName": "derp14b.tailscale.com", - "IPv4": "176.58.93.248", - "IPv6": "2a00:dd80:3c::807", - "CanPort80": true - } - ] - }, - "15": { - "RegionID": 15, - "RegionCode": "jnb", - "RegionName": "Johannesburg", - "Latitude": -26.204444, - "Longitude": 28.045556, - "Nodes": [ - { - "Name": "15c", - "RegionID": 15, - "HostName": "derp15c.tailscale.com", - "IPv4": "102.67.165.185", - "IPv6": "2c0f:edb0:0:10::b59", - "CanPort80": true - }, - { - "Name": "15d", - "RegionID": 15, - "HostName": "derp15d.tailscale.com", - "IPv4": "102.67.165.36", - "IPv6": "2c0f:edb0:0:10::599", - "CanPort80": true - }, - { - "Name": "15b", - "RegionID": 15, - "HostName": "derp15b.tailscale.com", - "IPv4": "102.67.165.90", - "IPv6": "2c0f:edb0:0:10::963", - "CanPort80": true - } - ] - }, - "16": { - "RegionID": 16, - "RegionCode": "mia", - "RegionName": "Miami", - "Latitude": 25.78, - "Longitude": -80.21, - "Nodes": [ - { - "Name": "16c", - "RegionID": 16, - "HostName": "derp16c.tailscale.com", - "IPv4": "192.73.243.229", - "IPv6": "2607:f740:17::4e4", - "CanPort80": true - }, - { - "Name": "16d", - "RegionID": 16, - "HostName": "derp16d.tailscale.com", - "IPv4": "192.73.243.141", - "IPv6": "2607:f740:17::475", - "CanPort80": true - }, - { - "Name": "16b", - "RegionID": 16, - "HostName": "derp16b.tailscale.com", - "IPv4": "192.73.243.135", - "IPv6": "2607:f740:17::476", - "CanPort80": true - } - ] - }, - "17": { - "RegionID": 17, - "RegionCode": "lax", - "RegionName": "Los Angeles", - "Latitude": 34.05, - "Longitude": -118.25, - "Nodes": [ - { - "Name": "17c", - "RegionID": 17, - "HostName": "derp17c.tailscale.com", - "IPv4": "208.111.40.12", - "IPv6": "2607:f740:c::10", - "CanPort80": true - }, - { - "Name": "17d", - "RegionID": 17, - "HostName": "derp17d.tailscale.com", - "IPv4": "208.111.40.216", - "IPv6": "2607:f740:c::e1b", - "CanPort80": true - }, - { - "Name": "17b", - "RegionID": 17, - "HostName": "derp17b.tailscale.com", - "IPv4": "192.73.244.245", - "IPv6": "2607:f740:c::646", - "CanPort80": true - } - ] - }, - "18": { - "RegionID": 18, - "RegionCode": "par", - "RegionName": "Paris", - "Latitude": 48.856667, - "Longitude": 2.352222, - "Nodes": [ - { - "Name": "18c", - "RegionID": 18, - "HostName": "derp18c.tailscale.com", - "IPv4": "176.58.90.207", - "IPv6": "2a00:dd80:3e::c19", - "CanPort80": true - }, - { - "Name": "18d", - "RegionID": 18, - "HostName": "derp18d.tailscale.com", - "IPv4": "176.58.90.104", - "IPv6": "2a00:dd80:3e::f2e", - "CanPort80": true - }, - { - "Name": "18b", - "RegionID": 18, - "HostName": "derp18b.tailscale.com", - "IPv4": "176.58.90.147", - "IPv6": "2a00:dd80:3e::363", - "CanPort80": true - } - ] - }, - "19": { - "RegionID": 19, - "RegionCode": "mad", - "RegionName": "Madrid", - "Latitude": 40.416944, - "Longitude": -3.703333, - "Nodes": [ - { - "Name": "19c", - "RegionID": 19, - "HostName": "derp19c.tailscale.com", - "IPv4": "45.159.97.61", - "IPv6": "2a00:dd80:14:10::20", - "CanPort80": true - }, - { - "Name": "19d", - "RegionID": 19, - "HostName": "derp19d.tailscale.com", - "IPv4": "45.159.97.233", - "IPv6": "2a00:dd80:14:10::34a", - "CanPort80": true - }, - { - "Name": "19b", - "RegionID": 19, - "HostName": "derp19b.tailscale.com", - "IPv4": "45.159.97.144", - "IPv6": "2a00:dd80:14:10::335", - "CanPort80": true - } - ] - }, - "2": { - "RegionID": 2, - "RegionCode": "sfo", - "RegionName": "San Francisco", - "Latitude": 37.7775, - "Longitude": -122.416389, - "Nodes": [ - { - "Name": "2e", - "RegionID": 2, - "HostName": "derp2e.tailscale.com", - "IPv4": "192.73.252.134", - "IPv6": "2607:f740:0:3f::44c", - "CanPort80": true - }, - { - "Name": "2f", - "RegionID": 2, - "HostName": "derp2f.tailscale.com", - "IPv4": "208.111.34.178", - "IPv6": "2607:f740:0:3f::f4", - "CanPort80": true - }, - { - "Name": "2d", - "RegionID": 2, - "HostName": "derp2d.tailscale.com", - "IPv4": "192.73.252.65", - "IPv6": "2607:f740:0:3f::287", - "CanPort80": true - } - ] - }, - "20": { - "RegionID": 20, - "RegionCode": "hkg", - "RegionName": "Hong Kong", - "Latitude": 22.3193, - "Longitude": 114.1694, - "Nodes": [ - { - "Name": "20c", - "RegionID": 20, - "HostName": "derp20c.tailscale.com", - "IPv4": "205.147.105.30", - "IPv6": "2403:2500:8000:1::5fb", - "CanPort80": true - }, - { - "Name": "20d", - "RegionID": 20, - "HostName": "derp20d.tailscale.com", - "IPv4": "205.147.105.78", - "IPv6": "2403:2500:8000:1::e9a", - "CanPort80": true - }, - { - "Name": "20b", - "RegionID": 20, - "HostName": "derp20b.tailscale.com", - "IPv4": "103.6.84.152", - "IPv6": "2403:2500:8000:1::ef6", - "CanPort80": true - } - ] - }, - "21": { - "RegionID": 21, - "RegionCode": "tor", - "RegionName": "Toronto", - "Latitude": 43.741667, - "Longitude": -79.373333, - "Nodes": [ - { - "Name": "21c", - "RegionID": 21, - "HostName": "derp21c.tailscale.com", - "IPv4": "162.248.221.215", - "IPv6": "2607:f740:50::f10", - "CanPort80": true - }, - { - "Name": "21d", - "RegionID": 21, - "HostName": "derp21d.tailscale.com", - "IPv4": "162.248.221.248", - "IPv6": "2607:f740:50::ca4", - "CanPort80": true - }, - { - "Name": "21b", - "RegionID": 21, - "HostName": "derp21b.tailscale.com", - "IPv4": "162.248.221.199", - "IPv6": "2607:f740:50::1d1", - "CanPort80": true - } - ] - }, - "22": { - "RegionID": 22, - "RegionCode": "waw", - "RegionName": "Warsaw", - "Latitude": 52.23, - "Longitude": 21.011111, - "Nodes": [ - { - "Name": "22c", - "RegionID": 22, - "HostName": "derp22c.tailscale.com", - "IPv4": "45.159.98.253", - "IPv6": "2a00:dd80:40:100::3f", - "CanPort80": true - }, - { - "Name": "22d", - "RegionID": 22, - "HostName": "derp22d.tailscale.com", - "IPv4": "45.159.98.145", - "IPv6": "2a00:dd80:40:100::211", - "CanPort80": true - }, - { - "Name": "22b", - "RegionID": 22, - "HostName": "derp22b.tailscale.com", - "IPv4": "45.159.98.196", - "IPv6": "2a00:dd80:40:100::316", - "CanPort80": true - } - ] - }, - "23": { - "RegionID": 23, - "RegionCode": "dbi", - "RegionName": "Dubai", - "Latitude": 25.263056, - "Longitude": 55.297222, - "Nodes": [ - { - "Name": "23c", - "RegionID": 23, - "HostName": "derp23c.tailscale.com", - "IPv4": "185.34.3.207", - "IPv6": "2a00:dd80:3f:100::a50", - "CanPort80": true - }, - { - "Name": "23d", - "RegionID": 23, - "HostName": "derp23d.tailscale.com", - "IPv4": "185.34.3.75", - "IPv6": "2a00:dd80:3f:100::97e", - "CanPort80": true - }, - { - "Name": "23b", - "RegionID": 23, - "HostName": "derp23b.tailscale.com", - "IPv4": "185.34.3.232", - "IPv6": "2a00:dd80:3f:100::76f", - "CanPort80": true - } - ] - }, - "24": { - "RegionID": 24, - "RegionCode": "hnl", - "RegionName": "Honolulu", - "Latitude": 21.306944, - "Longitude": -157.858333, - "Nodes": [ - { - "Name": "24c", - "RegionID": 24, - "HostName": "derp24c.tailscale.com", - "IPv4": "208.83.233.233", - "IPv6": "2001:19f0:c000:c591:5400:04ff:fe26:2c5f", - "CanPort80": true - }, - { - "Name": "24d", - "RegionID": 24, - "HostName": "derp24d.tailscale.com", - "IPv4": "208.72.155.133", - "IPv6": "2001:19f0:c000:c564:5400:04ff:fe26:2ba8", - "CanPort80": true - }, - { - "Name": "24b", - "RegionID": 24, - "HostName": "derp24b.tailscale.com", - "IPv4": "208.83.234.151", - "IPv6": "2001:19f0:c000:c586:5400:04ff:fe26:2ba6", - "CanPort80": true - } - ] - }, - "25": { - "RegionID": 25, - "RegionCode": "nai", - "RegionName": "Nairobi", - "Latitude": -1.286389, - "Longitude": 36.817222, - "Nodes": [ - { - "Name": "25c", - "RegionID": 25, - "HostName": "derp25c.tailscale.com", - "IPv4": "102.67.167.37", - "IPv6": "2c0f:edb0:2000:1::2c7", - "CanPort80": true - }, - { - "Name": "25d", - "RegionID": 25, - "HostName": "derp25d.tailscale.com", - "IPv4": "102.67.167.188", - "IPv6": "2c0f:edb0:2000:1::188", - "CanPort80": true - }, - { - "Name": "25b", - "RegionID": 25, - "HostName": "derp25b.tailscale.com", - "IPv4": "102.67.167.245", - "IPv6": "2c0f:edb0:2000:1::2e9", - "CanPort80": true - } - ] - }, - "26": { - "RegionID": 26, - "RegionCode": "nue", - "RegionName": "Nuremberg", - "Latitude": 49.453889, - "Longitude": 11.0775, - "Nodes": [ - { - "Name": "26c", - "RegionID": 26, - "HostName": "derp26c.tailscale.com", - "IPv4": "49.12.193.137", - "IPv6": "2a01:4f8:1c1c:5c70::1", - "CanPort80": true - }, - { - "Name": "26d", - "RegionID": 26, - "HostName": "derp26d.tailscale.com", - "IPv4": "49.13.204.141", - "IPv6": "2a01:4f8:1c0c:7d06::1", - "CanPort80": true - }, - { - "Name": "26b", - "RegionID": 26, - "HostName": "derp26b.tailscale.com", - "IPv4": "167.235.72.200", - "IPv6": "2a01:4f8:1c1c:47b6::1", - "CanPort80": true - } - ] - }, - "27": { - "RegionID": 27, - "RegionCode": "iad", - "RegionName": "Ashburn", - "Latitude": 39.03, - "Longitude": -77.471111, - "Nodes": [ - { - "Name": "27d", - "RegionID": 27, - "HostName": "derp27d.tailscale.com", - "IPv4": "178.156.152.106", - "IPv6": "2a01:4ff:f0:3c8e::1", - "CanPort80": true - }, - { - "Name": "27c", - "RegionID": 27, - "HostName": "derp27c.tailscale.com", - "IPv4": "178.156.152.91", - "IPv6": "2a01:4ff:f0:3913::1", - "CanPort80": true - }, - { - "Name": "27e", - "RegionID": 27, - "HostName": "derp27e.tailscale.com", - "IPv4": "178.156.134.232", - "IPv6": "2a01:4ff:f0:28d4::1", - "CanPort80": true - }, - { - "Name": "27b", - "RegionID": 27, - "HostName": "derp27b.tailscale.com", - "IPv4": "5.161.218.233", - "IPv6": "2a01:4ff:f0:3db9::1", - "CanPort80": true - } - ] - }, - "28": { - "RegionID": 28, - "RegionCode": "hel", - "RegionName": "Helsinki", - "Latitude": 60.170833, - "Longitude": 24.9375, - "Nodes": [ - { - "Name": "28c", - "RegionID": 28, - "HostName": "derp28c.tailscale.com", - "IPv4": "95.217.2.165", - "IPv6": "2a01:4f9:c012:cd74::1", - "CanPort80": true - }, - { - "Name": "28d", - "RegionID": 28, - "HostName": "derp28d.tailscale.com", - "IPv4": "157.180.28.32", - "IPv6": "2a01:4f9:c012:2e5b::1", - "CanPort80": true - }, - { - "Name": "28b", - "RegionID": 28, - "HostName": "derp28b.tailscale.com", - "IPv4": "65.109.143.62", - "IPv6": "2a01:4f9:c012:d55c::1", - "CanPort80": true - } - ] - }, - "3": { - "RegionID": 3, - "RegionCode": "sin", - "RegionName": "Singapore", - "Latitude": 1.3521, - "Longitude": 103.8198, - "Nodes": [ - { - "Name": "3g", - "RegionID": 3, - "HostName": "derp3g.tailscale.com", - "IPv4": "172.237.72.79", - "IPv6": "2600:3c15::2000:adff:fe08:6fab", - "CanPort80": true - }, - { - "Name": "3f", - "RegionID": 3, - "HostName": "derp3f.tailscale.com", - "IPv4": "172.237.72.8", - "IPv6": "2600:3c15::2000:53ff:fe48:a668", - "CanPort80": true - }, - { - "Name": "3h", - "RegionID": 3, - "HostName": "derp3h.tailscale.com", - "IPv4": "172.237.66.30", - "IPv6": "2600:3c15::2000:3dff:fe44:50aa", - "CanPort80": true - }, - { - "Name": "3e", - "RegionID": 3, - "HostName": "derp3e.tailscale.com", - "IPv4": "172.237.72.43", - "IPv6": "2600:3c15::2000:6cff:fee4:d799", - "CanPort80": true - } - ] - }, - "4": { - "RegionID": 4, - "RegionCode": "fra", - "RegionName": "Frankfurt", - "Latitude": 50.1109, - "Longitude": 8.6821, - "Nodes": [ - { - "Name": "4h", - "RegionID": 4, - "HostName": "derp4h.tailscale.com", - "IPv4": "185.40.234.77", - "IPv6": "2a00:dd80:20::bcf", - "CanPort80": true - }, - { - "Name": "4g", - "RegionID": 4, - "HostName": "derp4g.tailscale.com", - "IPv4": "185.40.234.113", - "IPv6": "2a00:dd80:20::8f", - "CanPort80": true - }, - { - "Name": "4i", - "RegionID": 4, - "HostName": "derp4i.tailscale.com", - "IPv4": "185.40.234.53", - "IPv6": "2a00:dd80:20::8a6", - "CanPort80": true - }, - { - "Name": "4f", - "RegionID": 4, - "HostName": "derp4f.tailscale.com", - "IPv4": "185.40.234.219", - "IPv6": "2a00:dd80:20::a25", - "CanPort80": true - } - ] - }, - "5": { - "RegionID": 5, - "RegionCode": "syd", - "RegionName": "Sydney", - "Latitude": -33.867778, - "Longitude": 151.21, - "Nodes": [ - { - "Name": "5f", - "RegionID": 5, - "HostName": "derp5f.tailscale.com", - "IPv4": "172.105.166.103", - "IPv6": "2400:8907::2000:ccff:fe1f:80da", - "CanPort80": true - }, - { - "Name": "5g", - "RegionID": 5, - "HostName": "derp5g.tailscale.com", - "IPv4": "172.105.169.57", - "IPv6": "2400:8907::2000:2fff:fea7:57f4", - "CanPort80": true - }, - { - "Name": "5e", - "RegionID": 5, - "HostName": "derp5e.tailscale.com", - "IPv4": "172.105.179.230", - "IPv6": "2400:8907::2000:ceff:fe8d:4f4e", - "CanPort80": true - } - ] - }, - "6": { - "RegionID": 6, - "RegionCode": "blr", - "RegionName": "Bengaluru", - "Latitude": 12.9716, - "Longitude": 77.5946, - "Nodes": [ - { - "Name": "6a", - "RegionID": 6, - "HostName": "derp6.tailscale.com", - "IPv4": "68.183.90.120", - "IPv6": "2400:6180:100:d0::982:d001", - "CanPort80": true - } - ] - }, - "7": { - "RegionID": 7, - "RegionCode": "tok", - "RegionName": "Tokyo", - "Latitude": 35.6764, - "Longitude": 139.65, - "Nodes": [ - { - "Name": "7g", - "RegionID": 7, - "HostName": "derp7g.tailscale.com", - "IPv4": "172.238.6.179", - "IPv6": "2600:3c18::2000:3fff:fe80:3ebd", - "CanPort80": true - }, - { - "Name": "7f", - "RegionID": 7, - "HostName": "derp7f.tailscale.com", - "IPv4": "172.238.6.34", - "IPv6": "2600:3c18::2000:acff:fe8e:3ed5", - "CanPort80": true - }, - { - "Name": "7h", - "RegionID": 7, - "HostName": "derp7h.tailscale.com", - "IPv4": "172.237.28.183", - "IPv6": "2600:3c18::2000:b1ff:fea9:4560", - "CanPort80": true - }, - { - "Name": "7e", - "RegionID": 7, - "HostName": "derp7e.tailscale.com", - "IPv4": "172.238.6.180", - "IPv6": "2600:3c18::2000:60ff:fe0f:6e83", - "STUNOnly": true, - "CanPort80": true - } - ] - }, - "8": { - "RegionID": 8, - "RegionCode": "lhr", - "RegionName": "London", - "Latitude": 51.5072, - "Longitude": 0.1276, - "Nodes": [ - { - "Name": "8f", - "RegionID": 8, - "HostName": "derp8f.tailscale.com", - "IPv4": "176.58.88.183", - "IPv6": "2a00:dd80:3a::dfa", - "CanPort80": true - }, - { - "Name": "8g", - "RegionID": 8, - "HostName": "derp8g.tailscale.com", - "IPv4": "176.58.92.254", - "IPv6": "2a00:dd80:3a::ed", - "CanPort80": true - }, - { - "Name": "8e", - "RegionID": 8, - "HostName": "derp8e.tailscale.com", - "IPv4": "176.58.92.144", - "IPv6": "2a00:dd80:3a::b33", - "CanPort80": true - } - ] - }, - "9": { - "RegionID": 9, - "RegionCode": "dfw", - "RegionName": "Dallas", - "Latitude": 32.779167, - "Longitude": -96.808889, - "Nodes": [ - { - "Name": "9e", - "RegionID": 9, - "HostName": "derp9e.tailscale.com", - "IPv4": "192.73.248.83", - "IPv6": "2607:f740:100::359", - "CanPort80": true - }, - { - "Name": "9f", - "RegionID": 9, - "HostName": "derp9f.tailscale.com", - "IPv4": "209.177.156.197", - "IPv6": "2607:f740:100::cad", - "CanPort80": true - }, - { - "Name": "9d", - "RegionID": 9, - "HostName": "derp9d.tailscale.com", - "IPv4": "209.177.156.94", - "IPv6": "2607:f740:100::c05", - "CanPort80": true - } - ] - } - } - }, - "DisplayMessages": null, - "TKAEnabled": false, - "TKAHead": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", - "Domain": "kratail2tid@passkey", - "DomainAuditLogID": "", - "UserProfiles": { - "50590507314324": { - "ID": 50590507314324, - "LoginName": "router-a.tail78f774.ts.net", - "DisplayName": "router-a" - } - } + "PacketFilterRules": null } }, "router-b": { - "commands": { - "packet_filter_rules": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/router-b/tailscaled.sock debug localapi POST debug-packet-filter-rules", - "packet_filter_matches": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/router-b/tailscaled.sock debug localapi POST debug-packet-filter-matches" - }, "packet_filter_rules": null, - "packet_filter_matches": [], - "whois": { - "100.124.195.93": { - "peer_name": "exit-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/router-b/tailscaled.sock whois --json 100.124.195.93", - "response": null - }, - "100.116.18.24": { - "peer_name": "exit-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/router-b/tailscaled.sock whois --json 100.116.18.24", - "response": null - }, - "100.85.66.106": { - "peer_name": "exit-node", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/router-b/tailscaled.sock whois --json 100.85.66.106", - "response": null - }, - "100.107.162.14": { - "peer_name": "group-a-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/router-b/tailscaled.sock whois --json 100.107.162.14", - "response": null - }, - "100.77.135.18": { - "peer_name": "group-b-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/router-b/tailscaled.sock whois --json 100.77.135.18", - "response": null - }, - "100.105.127.107": { - "peer_name": "multi-exit-router", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/router-b/tailscaled.sock whois --json 100.105.127.107", - "response": null - }, - "100.109.43.124": { - "peer_name": "router-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/router-b/tailscaled.sock whois --json 100.109.43.124", - "response": null - }, - "100.92.142.61": { - "peer_name": "subnet-router", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/router-b/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/router-b/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/router-b/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/router-b/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/router-b/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/router-b/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/router-b/tailscaled.sock whois --json 100.90.199.68", - "response": null - } - }, "netmap": { - "SelfNode": { - "ID": 1399889648409786, - "StableID": "nPHvXBj1wB11CNTRL", - "Name": "router-b.tail78f774.ts.net.", - "User": 1399889648409786, - "Key": "nodekey:4e6d3473c516cea37bcefdf4368932c623fd91c24aee1aacc27ca8165a41ac7a", - "DiscoKey": "discokey:dd5532635b8e3ddf25186e36671c16dd17c005c8b6a6862f4b5cc4e4f459e705", - "Addresses": ["100.65.172.123/32", "fd7a:115c:a1e0::5a37:ac7c/128"], - "AllowedIPs": ["100.65.172.123/32", "fd7a:115c:a1e0::5a37:ac7c/128", "10.55.0.0/16"], - "Endpoints": ["77.164.248.136:35931", "10.65.0.27:35931", "172.17.0.1:35931"], - "Hostinfo": { - "Hostname": "router-b", - "RoutableIPs": ["10.55.0.0/16"], - "RequestTags": ["tag:router-b"], - "Services": [ - { "Proto": "peerapi4", "Port": 58804 }, - { "Proto": "peerapi6", "Port": 58804 }, - { "Proto": "peerapi-dns-proxy", "Port": 1 } - ] - }, - "Created": "2026-03-28T10:38:15.42735258Z", - "Tags": ["tag:router-b"], - "PrimaryRoutes": ["10.55.0.0/16"], - "MachineAuthorized": true, - "CapMap": { - "https://tailscale.com/cap/file-sharing": null, - "https://tailscale.com/cap/is-owner": null, - "https://tailscale.com/cap/ssh": null, - "https://tailscale.com/cap/tailnet-lock": null, - "probe-udp-lifetime": null, - "ssh-behavior-v1": null, - "ssh-env-vars": null, - "store-appc-routes": null, - "tailnet-display-name": ["kratail2tid@passkey"] - }, - "ComputedName": "router-b", - "ComputedNameWithHost": "router-b" - }, - "AllCaps": [ - "tailnet-display-name", - "store-appc-routes", - "ssh-behavior-v1", - "https://tailscale.com/cap/ssh", - "https://tailscale.com/cap/file-sharing", - "probe-udp-lifetime", - "https://tailscale.com/cap/is-owner", - "https://tailscale.com/cap/tailnet-lock", - "ssh-env-vars" - ], - "NodeKey": "nodekey:4e6d3473c516cea37bcefdf4368932c623fd91c24aee1aacc27ca8165a41ac7a", - "MachineKey": "mkey:d040ca033391d3dedae7b2ad7ec3334646cda7aeca501780bdaa37addec3c228", "Peers": [], - "DNS": { - "Routes": { - "tail78f774.ts.net.": null, - "ts.net.": [{ "Addr": "199.247.155.53" }, { "Addr": "2620:111:8007::53" }] - }, - "Domains": ["tail78f774.ts.net"], - "Proxied": true, - "ExitNodeFilteredSet": [".ts.net", ".tailscale.net"] - }, - "PacketFilter": [], - "PacketFilterRules": null, - "SSHPolicy": { "rules": [] }, - "CollectServices": false, - "DERPMap": { - "Regions": { - "1": { - "RegionID": 1, - "RegionCode": "nyc", - "RegionName": "New York City", - "Latitude": 40.7128, - "Longitude": -74.006, - "Nodes": [ - { - "Name": "1h", - "RegionID": 1, - "HostName": "derp1h.tailscale.com", - "IPv4": "199.38.181.93", - "IPv6": "2607:f740:f::afd", - "CanPort80": true - }, - { - "Name": "1g", - "RegionID": 1, - "HostName": "derp1g.tailscale.com", - "IPv4": "209.177.145.120", - "IPv6": "2607:f740:f::3eb", - "CanPort80": true - }, - { - "Name": "1i", - "RegionID": 1, - "HostName": "derp1i.tailscale.com", - "IPv4": "199.38.181.103", - "IPv6": "2607:f740:f::e19", - "CanPort80": true - }, - { - "Name": "1f", - "RegionID": 1, - "HostName": "derp1f.tailscale.com", - "IPv4": "199.38.181.104", - "IPv6": "2607:f740:f::bc", - "CanPort80": true - } - ] - }, - "10": { - "RegionID": 10, - "RegionCode": "sea", - "RegionName": "Seattle", - "Latitude": 47.609722, - "Longitude": -122.333056, - "Nodes": [ - { - "Name": "10c", - "RegionID": 10, - "HostName": "derp10c.tailscale.com", - "IPv4": "192.73.240.121", - "IPv6": "2607:f740:14::40c", - "CanPort80": true - }, - { - "Name": "10d", - "RegionID": 10, - "HostName": "derp10d.tailscale.com", - "IPv4": "192.73.240.132", - "IPv6": "2607:f740:14::500", - "CanPort80": true - }, - { - "Name": "10b", - "RegionID": 10, - "HostName": "derp10b.tailscale.com", - "IPv4": "192.73.240.161", - "IPv6": "2607:f740:14::61c", - "CanPort80": true - } - ] - }, - "11": { - "RegionID": 11, - "RegionCode": "sao", - "RegionName": "São Paulo", - "Latitude": -23.55, - "Longitude": -46.633333, - "Nodes": [ - { - "Name": "11f", - "RegionID": 11, - "HostName": "derp11f.tailscale.com", - "IPv4": "172.237.61.197", - "IPv6": "2600:3c0d::2000:3bff:fe44:6166", - "CanPort80": true - }, - { - "Name": "11g", - "RegionID": 11, - "HostName": "derp11g.tailscale.com", - "IPv4": "172.237.61.190", - "IPv6": "2600:3c0d::2000:62ff:febe:2e67", - "CanPort80": true - }, - { - "Name": "11e", - "RegionID": 11, - "HostName": "derp11e.tailscale.com", - "IPv4": "172.237.61.194", - "IPv6": "2600:3c0d::2000:d2ff:fe43:1790", - "CanPort80": true - } - ] - }, - "12": { - "RegionID": 12, - "RegionCode": "ord", - "RegionName": "Chicago", - "Latitude": 41.881944, - "Longitude": -87.627778, - "Nodes": [ - { - "Name": "12e", - "RegionID": 12, - "HostName": "derp12e.tailscale.com", - "IPv4": "209.177.158.15", - "IPv6": "2607:f740:e::b17", - "CanPort80": true - }, - { - "Name": "12f", - "RegionID": 12, - "HostName": "derp12f.tailscale.com", - "IPv4": "199.38.182.118", - "IPv6": "2607:f740:e::4c8", - "CanPort80": true - }, - { - "Name": "12d", - "RegionID": 12, - "HostName": "derp12d.tailscale.com", - "IPv4": "209.177.158.246", - "IPv6": "2607:f740:e::811", - "CanPort80": true - } - ] - }, - "13": { - "RegionID": 13, - "RegionCode": "den", - "RegionName": "Denver", - "Latitude": 39.7392, - "Longitude": -104.9849, - "Nodes": [ - { - "Name": "13c", - "RegionID": 13, - "HostName": "derp13c.tailscale.com", - "IPv4": "192.73.242.28", - "IPv6": "2607:f740:16::5c", - "CanPort80": true - }, - { - "Name": "13d", - "RegionID": 13, - "HostName": "derp13d.tailscale.com", - "IPv4": "192.73.242.204", - "IPv6": "2607:f740:16::c23", - "CanPort80": true - }, - { - "Name": "13b", - "RegionID": 13, - "HostName": "derp13b.tailscale.com", - "IPv4": "192.73.242.187", - "IPv6": "2607:f740:16::640", - "CanPort80": true - } - ] - }, - "14": { - "RegionID": 14, - "RegionCode": "ams", - "RegionName": "Amsterdam", - "Latitude": 52.372778, - "Longitude": 4.893611, - "Nodes": [ - { - "Name": "14c", - "RegionID": 14, - "HostName": "derp14c.tailscale.com", - "IPv4": "176.58.93.147", - "IPv6": "2a00:dd80:3c::b09", - "CanPort80": true - }, - { - "Name": "14d", - "RegionID": 14, - "HostName": "derp14d.tailscale.com", - "IPv4": "176.58.93.154", - "IPv6": "2a00:dd80:3c::3d5", - "CanPort80": true - }, - { - "Name": "14b", - "RegionID": 14, - "HostName": "derp14b.tailscale.com", - "IPv4": "176.58.93.248", - "IPv6": "2a00:dd80:3c::807", - "CanPort80": true - } - ] - }, - "15": { - "RegionID": 15, - "RegionCode": "jnb", - "RegionName": "Johannesburg", - "Latitude": -26.204444, - "Longitude": 28.045556, - "Nodes": [ - { - "Name": "15c", - "RegionID": 15, - "HostName": "derp15c.tailscale.com", - "IPv4": "102.67.165.185", - "IPv6": "2c0f:edb0:0:10::b59", - "CanPort80": true - }, - { - "Name": "15d", - "RegionID": 15, - "HostName": "derp15d.tailscale.com", - "IPv4": "102.67.165.36", - "IPv6": "2c0f:edb0:0:10::599", - "CanPort80": true - }, - { - "Name": "15b", - "RegionID": 15, - "HostName": "derp15b.tailscale.com", - "IPv4": "102.67.165.90", - "IPv6": "2c0f:edb0:0:10::963", - "CanPort80": true - } - ] - }, - "16": { - "RegionID": 16, - "RegionCode": "mia", - "RegionName": "Miami", - "Latitude": 25.78, - "Longitude": -80.21, - "Nodes": [ - { - "Name": "16c", - "RegionID": 16, - "HostName": "derp16c.tailscale.com", - "IPv4": "192.73.243.229", - "IPv6": "2607:f740:17::4e4", - "CanPort80": true - }, - { - "Name": "16d", - "RegionID": 16, - "HostName": "derp16d.tailscale.com", - "IPv4": "192.73.243.141", - "IPv6": "2607:f740:17::475", - "CanPort80": true - }, - { - "Name": "16b", - "RegionID": 16, - "HostName": "derp16b.tailscale.com", - "IPv4": "192.73.243.135", - "IPv6": "2607:f740:17::476", - "CanPort80": true - } - ] - }, - "17": { - "RegionID": 17, - "RegionCode": "lax", - "RegionName": "Los Angeles", - "Latitude": 34.05, - "Longitude": -118.25, - "Nodes": [ - { - "Name": "17c", - "RegionID": 17, - "HostName": "derp17c.tailscale.com", - "IPv4": "208.111.40.12", - "IPv6": "2607:f740:c::10", - "CanPort80": true - }, - { - "Name": "17d", - "RegionID": 17, - "HostName": "derp17d.tailscale.com", - "IPv4": "208.111.40.216", - "IPv6": "2607:f740:c::e1b", - "CanPort80": true - }, - { - "Name": "17b", - "RegionID": 17, - "HostName": "derp17b.tailscale.com", - "IPv4": "192.73.244.245", - "IPv6": "2607:f740:c::646", - "CanPort80": true - } - ] - }, - "18": { - "RegionID": 18, - "RegionCode": "par", - "RegionName": "Paris", - "Latitude": 48.856667, - "Longitude": 2.352222, - "Nodes": [ - { - "Name": "18c", - "RegionID": 18, - "HostName": "derp18c.tailscale.com", - "IPv4": "176.58.90.207", - "IPv6": "2a00:dd80:3e::c19", - "CanPort80": true - }, - { - "Name": "18d", - "RegionID": 18, - "HostName": "derp18d.tailscale.com", - "IPv4": "176.58.90.104", - "IPv6": "2a00:dd80:3e::f2e", - "CanPort80": true - }, - { - "Name": "18b", - "RegionID": 18, - "HostName": "derp18b.tailscale.com", - "IPv4": "176.58.90.147", - "IPv6": "2a00:dd80:3e::363", - "CanPort80": true - } - ] - }, - "19": { - "RegionID": 19, - "RegionCode": "mad", - "RegionName": "Madrid", - "Latitude": 40.416944, - "Longitude": -3.703333, - "Nodes": [ - { - "Name": "19c", - "RegionID": 19, - "HostName": "derp19c.tailscale.com", - "IPv4": "45.159.97.61", - "IPv6": "2a00:dd80:14:10::20", - "CanPort80": true - }, - { - "Name": "19d", - "RegionID": 19, - "HostName": "derp19d.tailscale.com", - "IPv4": "45.159.97.233", - "IPv6": "2a00:dd80:14:10::34a", - "CanPort80": true - }, - { - "Name": "19b", - "RegionID": 19, - "HostName": "derp19b.tailscale.com", - "IPv4": "45.159.97.144", - "IPv6": "2a00:dd80:14:10::335", - "CanPort80": true - } - ] - }, - "2": { - "RegionID": 2, - "RegionCode": "sfo", - "RegionName": "San Francisco", - "Latitude": 37.7775, - "Longitude": -122.416389, - "Nodes": [ - { - "Name": "2e", - "RegionID": 2, - "HostName": "derp2e.tailscale.com", - "IPv4": "192.73.252.134", - "IPv6": "2607:f740:0:3f::44c", - "CanPort80": true - }, - { - "Name": "2f", - "RegionID": 2, - "HostName": "derp2f.tailscale.com", - "IPv4": "208.111.34.178", - "IPv6": "2607:f740:0:3f::f4", - "CanPort80": true - }, - { - "Name": "2d", - "RegionID": 2, - "HostName": "derp2d.tailscale.com", - "IPv4": "192.73.252.65", - "IPv6": "2607:f740:0:3f::287", - "CanPort80": true - } - ] - }, - "20": { - "RegionID": 20, - "RegionCode": "hkg", - "RegionName": "Hong Kong", - "Latitude": 22.3193, - "Longitude": 114.1694, - "Nodes": [ - { - "Name": "20c", - "RegionID": 20, - "HostName": "derp20c.tailscale.com", - "IPv4": "205.147.105.30", - "IPv6": "2403:2500:8000:1::5fb", - "CanPort80": true - }, - { - "Name": "20d", - "RegionID": 20, - "HostName": "derp20d.tailscale.com", - "IPv4": "205.147.105.78", - "IPv6": "2403:2500:8000:1::e9a", - "CanPort80": true - }, - { - "Name": "20b", - "RegionID": 20, - "HostName": "derp20b.tailscale.com", - "IPv4": "103.6.84.152", - "IPv6": "2403:2500:8000:1::ef6", - "CanPort80": true - } - ] - }, - "21": { - "RegionID": 21, - "RegionCode": "tor", - "RegionName": "Toronto", - "Latitude": 43.741667, - "Longitude": -79.373333, - "Nodes": [ - { - "Name": "21c", - "RegionID": 21, - "HostName": "derp21c.tailscale.com", - "IPv4": "162.248.221.215", - "IPv6": "2607:f740:50::f10", - "CanPort80": true - }, - { - "Name": "21d", - "RegionID": 21, - "HostName": "derp21d.tailscale.com", - "IPv4": "162.248.221.248", - "IPv6": "2607:f740:50::ca4", - "CanPort80": true - }, - { - "Name": "21b", - "RegionID": 21, - "HostName": "derp21b.tailscale.com", - "IPv4": "162.248.221.199", - "IPv6": "2607:f740:50::1d1", - "CanPort80": true - } - ] - }, - "22": { - "RegionID": 22, - "RegionCode": "waw", - "RegionName": "Warsaw", - "Latitude": 52.23, - "Longitude": 21.011111, - "Nodes": [ - { - "Name": "22c", - "RegionID": 22, - "HostName": "derp22c.tailscale.com", - "IPv4": "45.159.98.253", - "IPv6": "2a00:dd80:40:100::3f", - "CanPort80": true - }, - { - "Name": "22d", - "RegionID": 22, - "HostName": "derp22d.tailscale.com", - "IPv4": "45.159.98.145", - "IPv6": "2a00:dd80:40:100::211", - "CanPort80": true - }, - { - "Name": "22b", - "RegionID": 22, - "HostName": "derp22b.tailscale.com", - "IPv4": "45.159.98.196", - "IPv6": "2a00:dd80:40:100::316", - "CanPort80": true - } - ] - }, - "23": { - "RegionID": 23, - "RegionCode": "dbi", - "RegionName": "Dubai", - "Latitude": 25.263056, - "Longitude": 55.297222, - "Nodes": [ - { - "Name": "23c", - "RegionID": 23, - "HostName": "derp23c.tailscale.com", - "IPv4": "185.34.3.207", - "IPv6": "2a00:dd80:3f:100::a50", - "CanPort80": true - }, - { - "Name": "23d", - "RegionID": 23, - "HostName": "derp23d.tailscale.com", - "IPv4": "185.34.3.75", - "IPv6": "2a00:dd80:3f:100::97e", - "CanPort80": true - }, - { - "Name": "23b", - "RegionID": 23, - "HostName": "derp23b.tailscale.com", - "IPv4": "185.34.3.232", - "IPv6": "2a00:dd80:3f:100::76f", - "CanPort80": true - } - ] - }, - "24": { - "RegionID": 24, - "RegionCode": "hnl", - "RegionName": "Honolulu", - "Latitude": 21.306944, - "Longitude": -157.858333, - "Nodes": [ - { - "Name": "24c", - "RegionID": 24, - "HostName": "derp24c.tailscale.com", - "IPv4": "208.83.233.233", - "IPv6": "2001:19f0:c000:c591:5400:04ff:fe26:2c5f", - "CanPort80": true - }, - { - "Name": "24d", - "RegionID": 24, - "HostName": "derp24d.tailscale.com", - "IPv4": "208.72.155.133", - "IPv6": "2001:19f0:c000:c564:5400:04ff:fe26:2ba8", - "CanPort80": true - }, - { - "Name": "24b", - "RegionID": 24, - "HostName": "derp24b.tailscale.com", - "IPv4": "208.83.234.151", - "IPv6": "2001:19f0:c000:c586:5400:04ff:fe26:2ba6", - "CanPort80": true - } - ] - }, - "25": { - "RegionID": 25, - "RegionCode": "nai", - "RegionName": "Nairobi", - "Latitude": -1.286389, - "Longitude": 36.817222, - "Nodes": [ - { - "Name": "25c", - "RegionID": 25, - "HostName": "derp25c.tailscale.com", - "IPv4": "102.67.167.37", - "IPv6": "2c0f:edb0:2000:1::2c7", - "CanPort80": true - }, - { - "Name": "25d", - "RegionID": 25, - "HostName": "derp25d.tailscale.com", - "IPv4": "102.67.167.188", - "IPv6": "2c0f:edb0:2000:1::188", - "CanPort80": true - }, - { - "Name": "25b", - "RegionID": 25, - "HostName": "derp25b.tailscale.com", - "IPv4": "102.67.167.245", - "IPv6": "2c0f:edb0:2000:1::2e9", - "CanPort80": true - } - ] - }, - "26": { - "RegionID": 26, - "RegionCode": "nue", - "RegionName": "Nuremberg", - "Latitude": 49.453889, - "Longitude": 11.0775, - "Nodes": [ - { - "Name": "26c", - "RegionID": 26, - "HostName": "derp26c.tailscale.com", - "IPv4": "49.12.193.137", - "IPv6": "2a01:4f8:1c1c:5c70::1", - "CanPort80": true - }, - { - "Name": "26d", - "RegionID": 26, - "HostName": "derp26d.tailscale.com", - "IPv4": "49.13.204.141", - "IPv6": "2a01:4f8:1c0c:7d06::1", - "CanPort80": true - }, - { - "Name": "26b", - "RegionID": 26, - "HostName": "derp26b.tailscale.com", - "IPv4": "167.235.72.200", - "IPv6": "2a01:4f8:1c1c:47b6::1", - "CanPort80": true - } - ] - }, - "27": { - "RegionID": 27, - "RegionCode": "iad", - "RegionName": "Ashburn", - "Latitude": 39.03, - "Longitude": -77.471111, - "Nodes": [ - { - "Name": "27d", - "RegionID": 27, - "HostName": "derp27d.tailscale.com", - "IPv4": "178.156.152.106", - "IPv6": "2a01:4ff:f0:3c8e::1", - "CanPort80": true - }, - { - "Name": "27c", - "RegionID": 27, - "HostName": "derp27c.tailscale.com", - "IPv4": "178.156.152.91", - "IPv6": "2a01:4ff:f0:3913::1", - "CanPort80": true - }, - { - "Name": "27e", - "RegionID": 27, - "HostName": "derp27e.tailscale.com", - "IPv4": "178.156.134.232", - "IPv6": "2a01:4ff:f0:28d4::1", - "CanPort80": true - }, - { - "Name": "27b", - "RegionID": 27, - "HostName": "derp27b.tailscale.com", - "IPv4": "5.161.218.233", - "IPv6": "2a01:4ff:f0:3db9::1", - "CanPort80": true - } - ] - }, - "28": { - "RegionID": 28, - "RegionCode": "hel", - "RegionName": "Helsinki", - "Latitude": 60.170833, - "Longitude": 24.9375, - "Nodes": [ - { - "Name": "28c", - "RegionID": 28, - "HostName": "derp28c.tailscale.com", - "IPv4": "95.217.2.165", - "IPv6": "2a01:4f9:c012:cd74::1", - "CanPort80": true - }, - { - "Name": "28d", - "RegionID": 28, - "HostName": "derp28d.tailscale.com", - "IPv4": "157.180.28.32", - "IPv6": "2a01:4f9:c012:2e5b::1", - "CanPort80": true - }, - { - "Name": "28b", - "RegionID": 28, - "HostName": "derp28b.tailscale.com", - "IPv4": "65.109.143.62", - "IPv6": "2a01:4f9:c012:d55c::1", - "CanPort80": true - } - ] - }, - "3": { - "RegionID": 3, - "RegionCode": "sin", - "RegionName": "Singapore", - "Latitude": 1.3521, - "Longitude": 103.8198, - "Nodes": [ - { - "Name": "3g", - "RegionID": 3, - "HostName": "derp3g.tailscale.com", - "IPv4": "172.237.72.79", - "IPv6": "2600:3c15::2000:adff:fe08:6fab", - "CanPort80": true - }, - { - "Name": "3f", - "RegionID": 3, - "HostName": "derp3f.tailscale.com", - "IPv4": "172.237.72.8", - "IPv6": "2600:3c15::2000:53ff:fe48:a668", - "CanPort80": true - }, - { - "Name": "3h", - "RegionID": 3, - "HostName": "derp3h.tailscale.com", - "IPv4": "172.237.66.30", - "IPv6": "2600:3c15::2000:3dff:fe44:50aa", - "CanPort80": true - }, - { - "Name": "3e", - "RegionID": 3, - "HostName": "derp3e.tailscale.com", - "IPv4": "172.237.72.43", - "IPv6": "2600:3c15::2000:6cff:fee4:d799", - "CanPort80": true - } - ] - }, - "4": { - "RegionID": 4, - "RegionCode": "fra", - "RegionName": "Frankfurt", - "Latitude": 50.1109, - "Longitude": 8.6821, - "Nodes": [ - { - "Name": "4h", - "RegionID": 4, - "HostName": "derp4h.tailscale.com", - "IPv4": "185.40.234.77", - "IPv6": "2a00:dd80:20::bcf", - "CanPort80": true - }, - { - "Name": "4g", - "RegionID": 4, - "HostName": "derp4g.tailscale.com", - "IPv4": "185.40.234.113", - "IPv6": "2a00:dd80:20::8f", - "CanPort80": true - }, - { - "Name": "4i", - "RegionID": 4, - "HostName": "derp4i.tailscale.com", - "IPv4": "185.40.234.53", - "IPv6": "2a00:dd80:20::8a6", - "CanPort80": true - }, - { - "Name": "4f", - "RegionID": 4, - "HostName": "derp4f.tailscale.com", - "IPv4": "185.40.234.219", - "IPv6": "2a00:dd80:20::a25", - "CanPort80": true - } - ] - }, - "5": { - "RegionID": 5, - "RegionCode": "syd", - "RegionName": "Sydney", - "Latitude": -33.867778, - "Longitude": 151.21, - "Nodes": [ - { - "Name": "5f", - "RegionID": 5, - "HostName": "derp5f.tailscale.com", - "IPv4": "172.105.166.103", - "IPv6": "2400:8907::2000:ccff:fe1f:80da", - "CanPort80": true - }, - { - "Name": "5g", - "RegionID": 5, - "HostName": "derp5g.tailscale.com", - "IPv4": "172.105.169.57", - "IPv6": "2400:8907::2000:2fff:fea7:57f4", - "CanPort80": true - }, - { - "Name": "5e", - "RegionID": 5, - "HostName": "derp5e.tailscale.com", - "IPv4": "172.105.179.230", - "IPv6": "2400:8907::2000:ceff:fe8d:4f4e", - "CanPort80": true - } - ] - }, - "6": { - "RegionID": 6, - "RegionCode": "blr", - "RegionName": "Bengaluru", - "Latitude": 12.9716, - "Longitude": 77.5946, - "Nodes": [ - { - "Name": "6a", - "RegionID": 6, - "HostName": "derp6.tailscale.com", - "IPv4": "68.183.90.120", - "IPv6": "2400:6180:100:d0::982:d001", - "CanPort80": true - } - ] - }, - "7": { - "RegionID": 7, - "RegionCode": "tok", - "RegionName": "Tokyo", - "Latitude": 35.6764, - "Longitude": 139.65, - "Nodes": [ - { - "Name": "7g", - "RegionID": 7, - "HostName": "derp7g.tailscale.com", - "IPv4": "172.238.6.179", - "IPv6": "2600:3c18::2000:3fff:fe80:3ebd", - "CanPort80": true - }, - { - "Name": "7f", - "RegionID": 7, - "HostName": "derp7f.tailscale.com", - "IPv4": "172.238.6.34", - "IPv6": "2600:3c18::2000:acff:fe8e:3ed5", - "CanPort80": true - }, - { - "Name": "7h", - "RegionID": 7, - "HostName": "derp7h.tailscale.com", - "IPv4": "172.237.28.183", - "IPv6": "2600:3c18::2000:b1ff:fea9:4560", - "CanPort80": true - }, - { - "Name": "7e", - "RegionID": 7, - "HostName": "derp7e.tailscale.com", - "IPv4": "172.238.6.180", - "IPv6": "2600:3c18::2000:60ff:fe0f:6e83", - "STUNOnly": true, - "CanPort80": true - } - ] - }, - "8": { - "RegionID": 8, - "RegionCode": "lhr", - "RegionName": "London", - "Latitude": 51.5072, - "Longitude": 0.1276, - "Nodes": [ - { - "Name": "8f", - "RegionID": 8, - "HostName": "derp8f.tailscale.com", - "IPv4": "176.58.88.183", - "IPv6": "2a00:dd80:3a::dfa", - "CanPort80": true - }, - { - "Name": "8g", - "RegionID": 8, - "HostName": "derp8g.tailscale.com", - "IPv4": "176.58.92.254", - "IPv6": "2a00:dd80:3a::ed", - "CanPort80": true - }, - { - "Name": "8e", - "RegionID": 8, - "HostName": "derp8e.tailscale.com", - "IPv4": "176.58.92.144", - "IPv6": "2a00:dd80:3a::b33", - "CanPort80": true - } - ] - }, - "9": { - "RegionID": 9, - "RegionCode": "dfw", - "RegionName": "Dallas", - "Latitude": 32.779167, - "Longitude": -96.808889, - "Nodes": [ - { - "Name": "9e", - "RegionID": 9, - "HostName": "derp9e.tailscale.com", - "IPv4": "192.73.248.83", - "IPv6": "2607:f740:100::359", - "CanPort80": true - }, - { - "Name": "9f", - "RegionID": 9, - "HostName": "derp9f.tailscale.com", - "IPv4": "209.177.156.197", - "IPv6": "2607:f740:100::cad", - "CanPort80": true - }, - { - "Name": "9d", - "RegionID": 9, - "HostName": "derp9d.tailscale.com", - "IPv4": "209.177.156.94", - "IPv6": "2607:f740:100::c05", - "CanPort80": true - } - ] - } - } - }, - "DisplayMessages": null, - "TKAEnabled": false, - "TKAHead": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", - "Domain": "kratail2tid@passkey", - "DomainAuditLogID": "", - "UserProfiles": { - "1399889648409786": { - "ID": 1399889648409786, - "LoginName": "router-b.tail78f774.ts.net", - "DisplayName": "router-b" - } - } + "PacketFilterRules": 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.124.195.93": { - "peer_name": "exit-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/subnet-router/tailscaled.sock whois --json 100.124.195.93", - "response": null - }, - "100.116.18.24": { - "peer_name": "exit-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/subnet-router/tailscaled.sock whois --json 100.116.18.24", - "response": null - }, - "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.107.162.14": { - "peer_name": "group-a-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/subnet-router/tailscaled.sock whois --json 100.107.162.14", - "response": null - }, - "100.77.135.18": { - "peer_name": "group-b-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/subnet-router/tailscaled.sock whois --json 100.77.135.18", - "response": null - }, - "100.105.127.107": { - "peer_name": "multi-exit-router", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/subnet-router/tailscaled.sock whois --json 100.105.127.107", - "response": null - }, - "100.109.43.124": { - "peer_name": "router-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/subnet-router/tailscaled.sock whois --json 100.109.43.124", - "response": null - }, - "100.65.172.123": { - "peer_name": "router-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/subnet-router/tailscaled.sock whois --json 100.65.172.123", - "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 - } - }, "netmap": { - "SelfNode": { - "ID": 7489538288452506, - "StableID": "nTPEqJU2V121CNTRL", - "Name": "subnet-router.tail78f774.ts.net.", - "User": 7489538288452506, - "Key": "nodekey:887ae2351c09c3b952f1f42bdac4095ec396ebf15824a746e4193c003e9c8e3c", - "DiscoKey": "discokey:9e3167ceaf53735a2fcaa7d3a85ad3a6118274deb448326d594849275014cc56", - "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:58597", "10.65.0.27:58597", "172.17.0.1:58597"], - "Hostinfo": { - "Hostname": "subnet-router", - "RoutableIPs": ["10.33.0.0/16"], - "RequestTags": ["tag:router"], - "Services": [ - { "Proto": "peerapi4", "Port": 63250 }, - { "Proto": "peerapi6", "Port": 63250 }, - { "Proto": "peerapi-dns-proxy", "Port": 1 } - ] - }, - "Created": "2026-02-23T00:13:15.731478784Z", - "Tags": ["tag:router"], - "MachineAuthorized": true, - "CapMap": { - "https://tailscale.com/cap/file-sharing": null, - "https://tailscale.com/cap/is-owner": null, - "https://tailscale.com/cap/ssh": null, - "https://tailscale.com/cap/tailnet-lock": null, - "probe-udp-lifetime": null, - "ssh-behavior-v1": null, - "ssh-env-vars": null, - "store-appc-routes": null, - "tailnet-display-name": ["kratail2tid@passkey"] - }, - "ComputedName": "subnet-router", - "ComputedNameWithHost": "subnet-router" - }, - "AllCaps": [ - "https://tailscale.com/cap/is-owner", - "store-appc-routes", - "tailnet-display-name", - "ssh-behavior-v1", - "https://tailscale.com/cap/ssh", - "https://tailscale.com/cap/tailnet-lock", - "probe-udp-lifetime", - "https://tailscale.com/cap/file-sharing", - "ssh-env-vars" - ], - "NodeKey": "nodekey:887ae2351c09c3b952f1f42bdac4095ec396ebf15824a746e4193c003e9c8e3c", - "MachineKey": "mkey:324efa54cc51a7b4f266f6a236904c755d32b6e547a76ad3c1d1e9d348de682a", "Peers": [], - "DNS": { - "Routes": { - "tail78f774.ts.net.": null, - "ts.net.": [{ "Addr": "199.247.155.53" }, { "Addr": "2620:111:8007::53" }] - }, - "Domains": ["tail78f774.ts.net"], - "Proxied": true, - "ExitNodeFilteredSet": [".ts.net", ".tailscale.net"] - }, - "PacketFilter": [], - "PacketFilterRules": null, - "SSHPolicy": { "rules": [] }, - "CollectServices": false, - "DERPMap": { - "Regions": { - "1": { - "RegionID": 1, - "RegionCode": "nyc", - "RegionName": "New York City", - "Latitude": 40.7128, - "Longitude": -74.006, - "Nodes": [ - { - "Name": "1h", - "RegionID": 1, - "HostName": "derp1h.tailscale.com", - "IPv4": "199.38.181.93", - "IPv6": "2607:f740:f::afd", - "CanPort80": true - }, - { - "Name": "1g", - "RegionID": 1, - "HostName": "derp1g.tailscale.com", - "IPv4": "209.177.145.120", - "IPv6": "2607:f740:f::3eb", - "CanPort80": true - }, - { - "Name": "1i", - "RegionID": 1, - "HostName": "derp1i.tailscale.com", - "IPv4": "199.38.181.103", - "IPv6": "2607:f740:f::e19", - "CanPort80": true - }, - { - "Name": "1f", - "RegionID": 1, - "HostName": "derp1f.tailscale.com", - "IPv4": "199.38.181.104", - "IPv6": "2607:f740:f::bc", - "CanPort80": true - } - ] - }, - "10": { - "RegionID": 10, - "RegionCode": "sea", - "RegionName": "Seattle", - "Latitude": 47.609722, - "Longitude": -122.333056, - "Nodes": [ - { - "Name": "10c", - "RegionID": 10, - "HostName": "derp10c.tailscale.com", - "IPv4": "192.73.240.121", - "IPv6": "2607:f740:14::40c", - "CanPort80": true - }, - { - "Name": "10d", - "RegionID": 10, - "HostName": "derp10d.tailscale.com", - "IPv4": "192.73.240.132", - "IPv6": "2607:f740:14::500", - "CanPort80": true - }, - { - "Name": "10b", - "RegionID": 10, - "HostName": "derp10b.tailscale.com", - "IPv4": "192.73.240.161", - "IPv6": "2607:f740:14::61c", - "CanPort80": true - } - ] - }, - "11": { - "RegionID": 11, - "RegionCode": "sao", - "RegionName": "São Paulo", - "Latitude": -23.55, - "Longitude": -46.633333, - "Nodes": [ - { - "Name": "11f", - "RegionID": 11, - "HostName": "derp11f.tailscale.com", - "IPv4": "172.237.61.197", - "IPv6": "2600:3c0d::2000:3bff:fe44:6166", - "CanPort80": true - }, - { - "Name": "11g", - "RegionID": 11, - "HostName": "derp11g.tailscale.com", - "IPv4": "172.237.61.190", - "IPv6": "2600:3c0d::2000:62ff:febe:2e67", - "CanPort80": true - }, - { - "Name": "11e", - "RegionID": 11, - "HostName": "derp11e.tailscale.com", - "IPv4": "172.237.61.194", - "IPv6": "2600:3c0d::2000:d2ff:fe43:1790", - "CanPort80": true - } - ] - }, - "12": { - "RegionID": 12, - "RegionCode": "ord", - "RegionName": "Chicago", - "Latitude": 41.881944, - "Longitude": -87.627778, - "Nodes": [ - { - "Name": "12e", - "RegionID": 12, - "HostName": "derp12e.tailscale.com", - "IPv4": "209.177.158.15", - "IPv6": "2607:f740:e::b17", - "CanPort80": true - }, - { - "Name": "12f", - "RegionID": 12, - "HostName": "derp12f.tailscale.com", - "IPv4": "199.38.182.118", - "IPv6": "2607:f740:e::4c8", - "CanPort80": true - }, - { - "Name": "12d", - "RegionID": 12, - "HostName": "derp12d.tailscale.com", - "IPv4": "209.177.158.246", - "IPv6": "2607:f740:e::811", - "CanPort80": true - } - ] - }, - "13": { - "RegionID": 13, - "RegionCode": "den", - "RegionName": "Denver", - "Latitude": 39.7392, - "Longitude": -104.9849, - "Nodes": [ - { - "Name": "13c", - "RegionID": 13, - "HostName": "derp13c.tailscale.com", - "IPv4": "192.73.242.28", - "IPv6": "2607:f740:16::5c", - "CanPort80": true - }, - { - "Name": "13d", - "RegionID": 13, - "HostName": "derp13d.tailscale.com", - "IPv4": "192.73.242.204", - "IPv6": "2607:f740:16::c23", - "CanPort80": true - }, - { - "Name": "13b", - "RegionID": 13, - "HostName": "derp13b.tailscale.com", - "IPv4": "192.73.242.187", - "IPv6": "2607:f740:16::640", - "CanPort80": true - } - ] - }, - "14": { - "RegionID": 14, - "RegionCode": "ams", - "RegionName": "Amsterdam", - "Latitude": 52.372778, - "Longitude": 4.893611, - "Nodes": [ - { - "Name": "14c", - "RegionID": 14, - "HostName": "derp14c.tailscale.com", - "IPv4": "176.58.93.147", - "IPv6": "2a00:dd80:3c::b09", - "CanPort80": true - }, - { - "Name": "14d", - "RegionID": 14, - "HostName": "derp14d.tailscale.com", - "IPv4": "176.58.93.154", - "IPv6": "2a00:dd80:3c::3d5", - "CanPort80": true - }, - { - "Name": "14b", - "RegionID": 14, - "HostName": "derp14b.tailscale.com", - "IPv4": "176.58.93.248", - "IPv6": "2a00:dd80:3c::807", - "CanPort80": true - } - ] - }, - "15": { - "RegionID": 15, - "RegionCode": "jnb", - "RegionName": "Johannesburg", - "Latitude": -26.204444, - "Longitude": 28.045556, - "Nodes": [ - { - "Name": "15c", - "RegionID": 15, - "HostName": "derp15c.tailscale.com", - "IPv4": "102.67.165.185", - "IPv6": "2c0f:edb0:0:10::b59", - "CanPort80": true - }, - { - "Name": "15d", - "RegionID": 15, - "HostName": "derp15d.tailscale.com", - "IPv4": "102.67.165.36", - "IPv6": "2c0f:edb0:0:10::599", - "CanPort80": true - }, - { - "Name": "15b", - "RegionID": 15, - "HostName": "derp15b.tailscale.com", - "IPv4": "102.67.165.90", - "IPv6": "2c0f:edb0:0:10::963", - "CanPort80": true - } - ] - }, - "16": { - "RegionID": 16, - "RegionCode": "mia", - "RegionName": "Miami", - "Latitude": 25.78, - "Longitude": -80.21, - "Nodes": [ - { - "Name": "16c", - "RegionID": 16, - "HostName": "derp16c.tailscale.com", - "IPv4": "192.73.243.229", - "IPv6": "2607:f740:17::4e4", - "CanPort80": true - }, - { - "Name": "16d", - "RegionID": 16, - "HostName": "derp16d.tailscale.com", - "IPv4": "192.73.243.141", - "IPv6": "2607:f740:17::475", - "CanPort80": true - }, - { - "Name": "16b", - "RegionID": 16, - "HostName": "derp16b.tailscale.com", - "IPv4": "192.73.243.135", - "IPv6": "2607:f740:17::476", - "CanPort80": true - } - ] - }, - "17": { - "RegionID": 17, - "RegionCode": "lax", - "RegionName": "Los Angeles", - "Latitude": 34.05, - "Longitude": -118.25, - "Nodes": [ - { - "Name": "17c", - "RegionID": 17, - "HostName": "derp17c.tailscale.com", - "IPv4": "208.111.40.12", - "IPv6": "2607:f740:c::10", - "CanPort80": true - }, - { - "Name": "17d", - "RegionID": 17, - "HostName": "derp17d.tailscale.com", - "IPv4": "208.111.40.216", - "IPv6": "2607:f740:c::e1b", - "CanPort80": true - }, - { - "Name": "17b", - "RegionID": 17, - "HostName": "derp17b.tailscale.com", - "IPv4": "192.73.244.245", - "IPv6": "2607:f740:c::646", - "CanPort80": true - } - ] - }, - "18": { - "RegionID": 18, - "RegionCode": "par", - "RegionName": "Paris", - "Latitude": 48.856667, - "Longitude": 2.352222, - "Nodes": [ - { - "Name": "18c", - "RegionID": 18, - "HostName": "derp18c.tailscale.com", - "IPv4": "176.58.90.207", - "IPv6": "2a00:dd80:3e::c19", - "CanPort80": true - }, - { - "Name": "18d", - "RegionID": 18, - "HostName": "derp18d.tailscale.com", - "IPv4": "176.58.90.104", - "IPv6": "2a00:dd80:3e::f2e", - "CanPort80": true - }, - { - "Name": "18b", - "RegionID": 18, - "HostName": "derp18b.tailscale.com", - "IPv4": "176.58.90.147", - "IPv6": "2a00:dd80:3e::363", - "CanPort80": true - } - ] - }, - "19": { - "RegionID": 19, - "RegionCode": "mad", - "RegionName": "Madrid", - "Latitude": 40.416944, - "Longitude": -3.703333, - "Nodes": [ - { - "Name": "19c", - "RegionID": 19, - "HostName": "derp19c.tailscale.com", - "IPv4": "45.159.97.61", - "IPv6": "2a00:dd80:14:10::20", - "CanPort80": true - }, - { - "Name": "19d", - "RegionID": 19, - "HostName": "derp19d.tailscale.com", - "IPv4": "45.159.97.233", - "IPv6": "2a00:dd80:14:10::34a", - "CanPort80": true - }, - { - "Name": "19b", - "RegionID": 19, - "HostName": "derp19b.tailscale.com", - "IPv4": "45.159.97.144", - "IPv6": "2a00:dd80:14:10::335", - "CanPort80": true - } - ] - }, - "2": { - "RegionID": 2, - "RegionCode": "sfo", - "RegionName": "San Francisco", - "Latitude": 37.7775, - "Longitude": -122.416389, - "Nodes": [ - { - "Name": "2e", - "RegionID": 2, - "HostName": "derp2e.tailscale.com", - "IPv4": "192.73.252.134", - "IPv6": "2607:f740:0:3f::44c", - "CanPort80": true - }, - { - "Name": "2f", - "RegionID": 2, - "HostName": "derp2f.tailscale.com", - "IPv4": "208.111.34.178", - "IPv6": "2607:f740:0:3f::f4", - "CanPort80": true - }, - { - "Name": "2d", - "RegionID": 2, - "HostName": "derp2d.tailscale.com", - "IPv4": "192.73.252.65", - "IPv6": "2607:f740:0:3f::287", - "CanPort80": true - } - ] - }, - "20": { - "RegionID": 20, - "RegionCode": "hkg", - "RegionName": "Hong Kong", - "Latitude": 22.3193, - "Longitude": 114.1694, - "Nodes": [ - { - "Name": "20c", - "RegionID": 20, - "HostName": "derp20c.tailscale.com", - "IPv4": "205.147.105.30", - "IPv6": "2403:2500:8000:1::5fb", - "CanPort80": true - }, - { - "Name": "20d", - "RegionID": 20, - "HostName": "derp20d.tailscale.com", - "IPv4": "205.147.105.78", - "IPv6": "2403:2500:8000:1::e9a", - "CanPort80": true - }, - { - "Name": "20b", - "RegionID": 20, - "HostName": "derp20b.tailscale.com", - "IPv4": "103.6.84.152", - "IPv6": "2403:2500:8000:1::ef6", - "CanPort80": true - } - ] - }, - "21": { - "RegionID": 21, - "RegionCode": "tor", - "RegionName": "Toronto", - "Latitude": 43.741667, - "Longitude": -79.373333, - "Nodes": [ - { - "Name": "21c", - "RegionID": 21, - "HostName": "derp21c.tailscale.com", - "IPv4": "162.248.221.215", - "IPv6": "2607:f740:50::f10", - "CanPort80": true - }, - { - "Name": "21d", - "RegionID": 21, - "HostName": "derp21d.tailscale.com", - "IPv4": "162.248.221.248", - "IPv6": "2607:f740:50::ca4", - "CanPort80": true - }, - { - "Name": "21b", - "RegionID": 21, - "HostName": "derp21b.tailscale.com", - "IPv4": "162.248.221.199", - "IPv6": "2607:f740:50::1d1", - "CanPort80": true - } - ] - }, - "22": { - "RegionID": 22, - "RegionCode": "waw", - "RegionName": "Warsaw", - "Latitude": 52.23, - "Longitude": 21.011111, - "Nodes": [ - { - "Name": "22c", - "RegionID": 22, - "HostName": "derp22c.tailscale.com", - "IPv4": "45.159.98.253", - "IPv6": "2a00:dd80:40:100::3f", - "CanPort80": true - }, - { - "Name": "22d", - "RegionID": 22, - "HostName": "derp22d.tailscale.com", - "IPv4": "45.159.98.145", - "IPv6": "2a00:dd80:40:100::211", - "CanPort80": true - }, - { - "Name": "22b", - "RegionID": 22, - "HostName": "derp22b.tailscale.com", - "IPv4": "45.159.98.196", - "IPv6": "2a00:dd80:40:100::316", - "CanPort80": true - } - ] - }, - "23": { - "RegionID": 23, - "RegionCode": "dbi", - "RegionName": "Dubai", - "Latitude": 25.263056, - "Longitude": 55.297222, - "Nodes": [ - { - "Name": "23c", - "RegionID": 23, - "HostName": "derp23c.tailscale.com", - "IPv4": "185.34.3.207", - "IPv6": "2a00:dd80:3f:100::a50", - "CanPort80": true - }, - { - "Name": "23d", - "RegionID": 23, - "HostName": "derp23d.tailscale.com", - "IPv4": "185.34.3.75", - "IPv6": "2a00:dd80:3f:100::97e", - "CanPort80": true - }, - { - "Name": "23b", - "RegionID": 23, - "HostName": "derp23b.tailscale.com", - "IPv4": "185.34.3.232", - "IPv6": "2a00:dd80:3f:100::76f", - "CanPort80": true - } - ] - }, - "24": { - "RegionID": 24, - "RegionCode": "hnl", - "RegionName": "Honolulu", - "Latitude": 21.306944, - "Longitude": -157.858333, - "Nodes": [ - { - "Name": "24c", - "RegionID": 24, - "HostName": "derp24c.tailscale.com", - "IPv4": "208.83.233.233", - "IPv6": "2001:19f0:c000:c591:5400:04ff:fe26:2c5f", - "CanPort80": true - }, - { - "Name": "24d", - "RegionID": 24, - "HostName": "derp24d.tailscale.com", - "IPv4": "208.72.155.133", - "IPv6": "2001:19f0:c000:c564:5400:04ff:fe26:2ba8", - "CanPort80": true - }, - { - "Name": "24b", - "RegionID": 24, - "HostName": "derp24b.tailscale.com", - "IPv4": "208.83.234.151", - "IPv6": "2001:19f0:c000:c586:5400:04ff:fe26:2ba6", - "CanPort80": true - } - ] - }, - "25": { - "RegionID": 25, - "RegionCode": "nai", - "RegionName": "Nairobi", - "Latitude": -1.286389, - "Longitude": 36.817222, - "Nodes": [ - { - "Name": "25c", - "RegionID": 25, - "HostName": "derp25c.tailscale.com", - "IPv4": "102.67.167.37", - "IPv6": "2c0f:edb0:2000:1::2c7", - "CanPort80": true - }, - { - "Name": "25d", - "RegionID": 25, - "HostName": "derp25d.tailscale.com", - "IPv4": "102.67.167.188", - "IPv6": "2c0f:edb0:2000:1::188", - "CanPort80": true - }, - { - "Name": "25b", - "RegionID": 25, - "HostName": "derp25b.tailscale.com", - "IPv4": "102.67.167.245", - "IPv6": "2c0f:edb0:2000:1::2e9", - "CanPort80": true - } - ] - }, - "26": { - "RegionID": 26, - "RegionCode": "nue", - "RegionName": "Nuremberg", - "Latitude": 49.453889, - "Longitude": 11.0775, - "Nodes": [ - { - "Name": "26c", - "RegionID": 26, - "HostName": "derp26c.tailscale.com", - "IPv4": "49.12.193.137", - "IPv6": "2a01:4f8:1c1c:5c70::1", - "CanPort80": true - }, - { - "Name": "26d", - "RegionID": 26, - "HostName": "derp26d.tailscale.com", - "IPv4": "49.13.204.141", - "IPv6": "2a01:4f8:1c0c:7d06::1", - "CanPort80": true - }, - { - "Name": "26b", - "RegionID": 26, - "HostName": "derp26b.tailscale.com", - "IPv4": "167.235.72.200", - "IPv6": "2a01:4f8:1c1c:47b6::1", - "CanPort80": true - } - ] - }, - "27": { - "RegionID": 27, - "RegionCode": "iad", - "RegionName": "Ashburn", - "Latitude": 39.03, - "Longitude": -77.471111, - "Nodes": [ - { - "Name": "27d", - "RegionID": 27, - "HostName": "derp27d.tailscale.com", - "IPv4": "178.156.152.106", - "IPv6": "2a01:4ff:f0:3c8e::1", - "CanPort80": true - }, - { - "Name": "27c", - "RegionID": 27, - "HostName": "derp27c.tailscale.com", - "IPv4": "178.156.152.91", - "IPv6": "2a01:4ff:f0:3913::1", - "CanPort80": true - }, - { - "Name": "27e", - "RegionID": 27, - "HostName": "derp27e.tailscale.com", - "IPv4": "178.156.134.232", - "IPv6": "2a01:4ff:f0:28d4::1", - "CanPort80": true - }, - { - "Name": "27b", - "RegionID": 27, - "HostName": "derp27b.tailscale.com", - "IPv4": "5.161.218.233", - "IPv6": "2a01:4ff:f0:3db9::1", - "CanPort80": true - } - ] - }, - "28": { - "RegionID": 28, - "RegionCode": "hel", - "RegionName": "Helsinki", - "Latitude": 60.170833, - "Longitude": 24.9375, - "Nodes": [ - { - "Name": "28c", - "RegionID": 28, - "HostName": "derp28c.tailscale.com", - "IPv4": "95.217.2.165", - "IPv6": "2a01:4f9:c012:cd74::1", - "CanPort80": true - }, - { - "Name": "28d", - "RegionID": 28, - "HostName": "derp28d.tailscale.com", - "IPv4": "157.180.28.32", - "IPv6": "2a01:4f9:c012:2e5b::1", - "CanPort80": true - }, - { - "Name": "28b", - "RegionID": 28, - "HostName": "derp28b.tailscale.com", - "IPv4": "65.109.143.62", - "IPv6": "2a01:4f9:c012:d55c::1", - "CanPort80": true - } - ] - }, - "3": { - "RegionID": 3, - "RegionCode": "sin", - "RegionName": "Singapore", - "Latitude": 1.3521, - "Longitude": 103.8198, - "Nodes": [ - { - "Name": "3g", - "RegionID": 3, - "HostName": "derp3g.tailscale.com", - "IPv4": "172.237.72.79", - "IPv6": "2600:3c15::2000:adff:fe08:6fab", - "CanPort80": true - }, - { - "Name": "3f", - "RegionID": 3, - "HostName": "derp3f.tailscale.com", - "IPv4": "172.237.72.8", - "IPv6": "2600:3c15::2000:53ff:fe48:a668", - "CanPort80": true - }, - { - "Name": "3h", - "RegionID": 3, - "HostName": "derp3h.tailscale.com", - "IPv4": "172.237.66.30", - "IPv6": "2600:3c15::2000:3dff:fe44:50aa", - "CanPort80": true - }, - { - "Name": "3e", - "RegionID": 3, - "HostName": "derp3e.tailscale.com", - "IPv4": "172.237.72.43", - "IPv6": "2600:3c15::2000:6cff:fee4:d799", - "CanPort80": true - } - ] - }, - "4": { - "RegionID": 4, - "RegionCode": "fra", - "RegionName": "Frankfurt", - "Latitude": 50.1109, - "Longitude": 8.6821, - "Nodes": [ - { - "Name": "4h", - "RegionID": 4, - "HostName": "derp4h.tailscale.com", - "IPv4": "185.40.234.77", - "IPv6": "2a00:dd80:20::bcf", - "CanPort80": true - }, - { - "Name": "4g", - "RegionID": 4, - "HostName": "derp4g.tailscale.com", - "IPv4": "185.40.234.113", - "IPv6": "2a00:dd80:20::8f", - "CanPort80": true - }, - { - "Name": "4i", - "RegionID": 4, - "HostName": "derp4i.tailscale.com", - "IPv4": "185.40.234.53", - "IPv6": "2a00:dd80:20::8a6", - "CanPort80": true - }, - { - "Name": "4f", - "RegionID": 4, - "HostName": "derp4f.tailscale.com", - "IPv4": "185.40.234.219", - "IPv6": "2a00:dd80:20::a25", - "CanPort80": true - } - ] - }, - "5": { - "RegionID": 5, - "RegionCode": "syd", - "RegionName": "Sydney", - "Latitude": -33.867778, - "Longitude": 151.21, - "Nodes": [ - { - "Name": "5f", - "RegionID": 5, - "HostName": "derp5f.tailscale.com", - "IPv4": "172.105.166.103", - "IPv6": "2400:8907::2000:ccff:fe1f:80da", - "CanPort80": true - }, - { - "Name": "5g", - "RegionID": 5, - "HostName": "derp5g.tailscale.com", - "IPv4": "172.105.169.57", - "IPv6": "2400:8907::2000:2fff:fea7:57f4", - "CanPort80": true - }, - { - "Name": "5e", - "RegionID": 5, - "HostName": "derp5e.tailscale.com", - "IPv4": "172.105.179.230", - "IPv6": "2400:8907::2000:ceff:fe8d:4f4e", - "CanPort80": true - } - ] - }, - "6": { - "RegionID": 6, - "RegionCode": "blr", - "RegionName": "Bengaluru", - "Latitude": 12.9716, - "Longitude": 77.5946, - "Nodes": [ - { - "Name": "6a", - "RegionID": 6, - "HostName": "derp6.tailscale.com", - "IPv4": "68.183.90.120", - "IPv6": "2400:6180:100:d0::982:d001", - "CanPort80": true - } - ] - }, - "7": { - "RegionID": 7, - "RegionCode": "tok", - "RegionName": "Tokyo", - "Latitude": 35.6764, - "Longitude": 139.65, - "Nodes": [ - { - "Name": "7g", - "RegionID": 7, - "HostName": "derp7g.tailscale.com", - "IPv4": "172.238.6.179", - "IPv6": "2600:3c18::2000:3fff:fe80:3ebd", - "CanPort80": true - }, - { - "Name": "7f", - "RegionID": 7, - "HostName": "derp7f.tailscale.com", - "IPv4": "172.238.6.34", - "IPv6": "2600:3c18::2000:acff:fe8e:3ed5", - "CanPort80": true - }, - { - "Name": "7h", - "RegionID": 7, - "HostName": "derp7h.tailscale.com", - "IPv4": "172.237.28.183", - "IPv6": "2600:3c18::2000:b1ff:fea9:4560", - "CanPort80": true - }, - { - "Name": "7e", - "RegionID": 7, - "HostName": "derp7e.tailscale.com", - "IPv4": "172.238.6.180", - "IPv6": "2600:3c18::2000:60ff:fe0f:6e83", - "STUNOnly": true, - "CanPort80": true - } - ] - }, - "8": { - "RegionID": 8, - "RegionCode": "lhr", - "RegionName": "London", - "Latitude": 51.5072, - "Longitude": 0.1276, - "Nodes": [ - { - "Name": "8f", - "RegionID": 8, - "HostName": "derp8f.tailscale.com", - "IPv4": "176.58.88.183", - "IPv6": "2a00:dd80:3a::dfa", - "CanPort80": true - }, - { - "Name": "8g", - "RegionID": 8, - "HostName": "derp8g.tailscale.com", - "IPv4": "176.58.92.254", - "IPv6": "2a00:dd80:3a::ed", - "CanPort80": true - }, - { - "Name": "8e", - "RegionID": 8, - "HostName": "derp8e.tailscale.com", - "IPv4": "176.58.92.144", - "IPv6": "2a00:dd80:3a::b33", - "CanPort80": true - } - ] - }, - "9": { - "RegionID": 9, - "RegionCode": "dfw", - "RegionName": "Dallas", - "Latitude": 32.779167, - "Longitude": -96.808889, - "Nodes": [ - { - "Name": "9e", - "RegionID": 9, - "HostName": "derp9e.tailscale.com", - "IPv4": "192.73.248.83", - "IPv6": "2607:f740:100::359", - "CanPort80": true - }, - { - "Name": "9f", - "RegionID": 9, - "HostName": "derp9f.tailscale.com", - "IPv4": "209.177.156.197", - "IPv6": "2607:f740:100::cad", - "CanPort80": true - }, - { - "Name": "9d", - "RegionID": 9, - "HostName": "derp9d.tailscale.com", - "IPv4": "209.177.156.94", - "IPv6": "2607:f740:100::c05", - "CanPort80": true - } - ] - } - } - }, - "DisplayMessages": null, - "TKAEnabled": false, - "TKAHead": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", - "Domain": "kratail2tid@passkey", - "DomainAuditLogID": "", - "UserProfiles": { - "7489538288452506": { - "ID": 7489538288452506, - "LoginName": "subnet-router.tail78f774.ts.net", - "DisplayName": "subnet-router" - } - } + "PacketFilterRules": 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.124.195.93": { - "peer_name": "exit-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-client/tailscaled.sock whois --json 100.124.195.93", - "response": null - }, - "100.116.18.24": { - "peer_name": "exit-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-client/tailscaled.sock whois --json 100.116.18.24", - "response": null - }, - "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.107.162.14": { - "peer_name": "group-a-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-client/tailscaled.sock whois --json 100.107.162.14", - "response": null - }, - "100.77.135.18": { - "peer_name": "group-b-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-client/tailscaled.sock whois --json 100.77.135.18", - "response": null - }, - "100.105.127.107": { - "peer_name": "multi-exit-router", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-client/tailscaled.sock whois --json 100.105.127.107", - "response": null - }, - "100.109.43.124": { - "peer_name": "router-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-client/tailscaled.sock whois --json 100.109.43.124", - "response": null - }, - "100.65.172.123": { - "peer_name": "router-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-client/tailscaled.sock whois --json 100.65.172.123", - "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 - } - }, "netmap": { - "SelfNode": { - "ID": 4031348162889210, - "StableID": "nf7BTTgoUY11CNTRL", - "Name": "tagged-client.tail78f774.ts.net.", - "User": 4031348162889210, - "Key": "nodekey:3011e53353e49142ea56ae11f81e0dceae0d667093d04ee086dcb1e9c5d3c844", - "DiscoKey": "discokey:64af337a7e8b61dce500da3b8f7d0a95fc6fe0e57c2f9e57b9b484a9b4acbe1e", - "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:47143", "10.65.0.27:47143", "172.17.0.1:47143"], - "Hostinfo": { - "Hostname": "tagged-client", - "RequestTags": ["tag:client"], - "Services": [ - { "Proto": "peerapi4", "Port": 41378 }, - { "Proto": "peerapi6", "Port": 41378 }, - { "Proto": "peerapi-dns-proxy", "Port": 1 } - ] - }, - "Created": "2026-02-23T00:13:11.017324028Z", - "Tags": ["tag:client"], - "MachineAuthorized": true, - "CapMap": { - "https://tailscale.com/cap/file-sharing": null, - "https://tailscale.com/cap/is-owner": null, - "https://tailscale.com/cap/ssh": null, - "https://tailscale.com/cap/tailnet-lock": null, - "probe-udp-lifetime": null, - "ssh-behavior-v1": null, - "ssh-env-vars": null, - "store-appc-routes": null, - "tailnet-display-name": ["kratail2tid@passkey"] - }, - "ComputedName": "tagged-client", - "ComputedNameWithHost": "tagged-client" - }, - "AllCaps": [ - "probe-udp-lifetime", - "store-appc-routes", - "https://tailscale.com/cap/file-sharing", - "tailnet-display-name", - "ssh-behavior-v1", - "https://tailscale.com/cap/tailnet-lock", - "ssh-env-vars", - "https://tailscale.com/cap/ssh", - "https://tailscale.com/cap/is-owner" - ], - "NodeKey": "nodekey:3011e53353e49142ea56ae11f81e0dceae0d667093d04ee086dcb1e9c5d3c844", - "MachineKey": "mkey:92af46ce21e67878315fe620545c207854ab6cec2d03adc106c50f64f9692711", "Peers": [ { - "ID": 1971858445916131, - "StableID": "n6G7ZuN4QG11CNTRL", "Name": "big-router.tail78f774.ts.net.", - "User": 1260082990019555, - "Key": "nodekey:6351880da5cebbde07c80cbce8c74eb62d72f05345033adba79ee1a051e1ae14", - "DiscoKey": "discokey:1396ccf4bd8aeee36a21bc03d8c6fcc1fcd858b32d21103c4fd44fcf0b178d0d", - "Addresses": ["100.97.174.21/32", "fd7a:115c:a1e0::5137:ae15/128"], - "AllowedIPs": ["100.97.174.21/32", "fd7a:115c:a1e0::5137:ae15/128", "10.0.0.0/8"], - "Endpoints": [ - "77.164.248.136:60017", - "10.65.0.27:60017", - "172.17.0.1:60017", - "172.18.0.1:60017", - "172.19.0.1:60017" + "AllowedIPs": [ + "100.97.174.21/32", + "fd7a:115c:a1e0::5137:ae15/128", + "10.0.0.0/8" ], - "HomeDERP": 14, - "Hostinfo": { - "OS": "linux", - "Hostname": "big-router", - "Services": [ - { "Proto": "peerapi4", "Port": 36233 }, - { "Proto": "peerapi6", "Port": 36233 } - ] - }, - "Created": "2026-03-17T16:09:39.110443536Z", - "Cap": 131, - "Tags": ["tag:router"], - "PrimaryRoutes": ["10.0.0.0/8"], - "LastSeen": "2026-03-28T10:06:16.1Z", - "Online": false, - "ComputedName": "big-router", - "ComputedNameWithHost": "big-router" + "PrimaryRoutes": [ + "10.0.0.0/8" + ] } ], - "DNS": { - "Routes": { - "tail78f774.ts.net.": null, - "ts.net.": [{ "Addr": "199.247.155.53" }, { "Addr": "2620:111:8007::53" }] - }, - "Domains": ["tail78f774.ts.net"], - "Proxied": true, - "ExitNodeFilteredSet": [".ts.net", ".tailscale.net"] - }, - "PacketFilter": [], - "PacketFilterRules": null, - "SSHPolicy": { "rules": [] }, - "CollectServices": false, - "DERPMap": { - "Regions": { - "1": { - "RegionID": 1, - "RegionCode": "nyc", - "RegionName": "New York City", - "Latitude": 40.7128, - "Longitude": -74.006, - "Nodes": [ - { - "Name": "1h", - "RegionID": 1, - "HostName": "derp1h.tailscale.com", - "IPv4": "199.38.181.93", - "IPv6": "2607:f740:f::afd", - "CanPort80": true - }, - { - "Name": "1g", - "RegionID": 1, - "HostName": "derp1g.tailscale.com", - "IPv4": "209.177.145.120", - "IPv6": "2607:f740:f::3eb", - "CanPort80": true - }, - { - "Name": "1i", - "RegionID": 1, - "HostName": "derp1i.tailscale.com", - "IPv4": "199.38.181.103", - "IPv6": "2607:f740:f::e19", - "CanPort80": true - }, - { - "Name": "1f", - "RegionID": 1, - "HostName": "derp1f.tailscale.com", - "IPv4": "199.38.181.104", - "IPv6": "2607:f740:f::bc", - "CanPort80": true - } - ] - }, - "10": { - "RegionID": 10, - "RegionCode": "sea", - "RegionName": "Seattle", - "Latitude": 47.609722, - "Longitude": -122.333056, - "Nodes": [ - { - "Name": "10c", - "RegionID": 10, - "HostName": "derp10c.tailscale.com", - "IPv4": "192.73.240.121", - "IPv6": "2607:f740:14::40c", - "CanPort80": true - }, - { - "Name": "10d", - "RegionID": 10, - "HostName": "derp10d.tailscale.com", - "IPv4": "192.73.240.132", - "IPv6": "2607:f740:14::500", - "CanPort80": true - }, - { - "Name": "10b", - "RegionID": 10, - "HostName": "derp10b.tailscale.com", - "IPv4": "192.73.240.161", - "IPv6": "2607:f740:14::61c", - "CanPort80": true - } - ] - }, - "11": { - "RegionID": 11, - "RegionCode": "sao", - "RegionName": "São Paulo", - "Latitude": -23.55, - "Longitude": -46.633333, - "Nodes": [ - { - "Name": "11f", - "RegionID": 11, - "HostName": "derp11f.tailscale.com", - "IPv4": "172.237.61.197", - "IPv6": "2600:3c0d::2000:3bff:fe44:6166", - "CanPort80": true - }, - { - "Name": "11g", - "RegionID": 11, - "HostName": "derp11g.tailscale.com", - "IPv4": "172.237.61.190", - "IPv6": "2600:3c0d::2000:62ff:febe:2e67", - "CanPort80": true - }, - { - "Name": "11e", - "RegionID": 11, - "HostName": "derp11e.tailscale.com", - "IPv4": "172.237.61.194", - "IPv6": "2600:3c0d::2000:d2ff:fe43:1790", - "CanPort80": true - } - ] - }, - "12": { - "RegionID": 12, - "RegionCode": "ord", - "RegionName": "Chicago", - "Latitude": 41.881944, - "Longitude": -87.627778, - "Nodes": [ - { - "Name": "12e", - "RegionID": 12, - "HostName": "derp12e.tailscale.com", - "IPv4": "209.177.158.15", - "IPv6": "2607:f740:e::b17", - "CanPort80": true - }, - { - "Name": "12f", - "RegionID": 12, - "HostName": "derp12f.tailscale.com", - "IPv4": "199.38.182.118", - "IPv6": "2607:f740:e::4c8", - "CanPort80": true - }, - { - "Name": "12d", - "RegionID": 12, - "HostName": "derp12d.tailscale.com", - "IPv4": "209.177.158.246", - "IPv6": "2607:f740:e::811", - "CanPort80": true - } - ] - }, - "13": { - "RegionID": 13, - "RegionCode": "den", - "RegionName": "Denver", - "Latitude": 39.7392, - "Longitude": -104.9849, - "Nodes": [ - { - "Name": "13c", - "RegionID": 13, - "HostName": "derp13c.tailscale.com", - "IPv4": "192.73.242.28", - "IPv6": "2607:f740:16::5c", - "CanPort80": true - }, - { - "Name": "13d", - "RegionID": 13, - "HostName": "derp13d.tailscale.com", - "IPv4": "192.73.242.204", - "IPv6": "2607:f740:16::c23", - "CanPort80": true - }, - { - "Name": "13b", - "RegionID": 13, - "HostName": "derp13b.tailscale.com", - "IPv4": "192.73.242.187", - "IPv6": "2607:f740:16::640", - "CanPort80": true - } - ] - }, - "14": { - "RegionID": 14, - "RegionCode": "ams", - "RegionName": "Amsterdam", - "Latitude": 52.372778, - "Longitude": 4.893611, - "Nodes": [ - { - "Name": "14c", - "RegionID": 14, - "HostName": "derp14c.tailscale.com", - "IPv4": "176.58.93.147", - "IPv6": "2a00:dd80:3c::b09", - "CanPort80": true - }, - { - "Name": "14d", - "RegionID": 14, - "HostName": "derp14d.tailscale.com", - "IPv4": "176.58.93.154", - "IPv6": "2a00:dd80:3c::3d5", - "CanPort80": true - }, - { - "Name": "14b", - "RegionID": 14, - "HostName": "derp14b.tailscale.com", - "IPv4": "176.58.93.248", - "IPv6": "2a00:dd80:3c::807", - "CanPort80": true - } - ] - }, - "15": { - "RegionID": 15, - "RegionCode": "jnb", - "RegionName": "Johannesburg", - "Latitude": -26.204444, - "Longitude": 28.045556, - "Nodes": [ - { - "Name": "15c", - "RegionID": 15, - "HostName": "derp15c.tailscale.com", - "IPv4": "102.67.165.185", - "IPv6": "2c0f:edb0:0:10::b59", - "CanPort80": true - }, - { - "Name": "15d", - "RegionID": 15, - "HostName": "derp15d.tailscale.com", - "IPv4": "102.67.165.36", - "IPv6": "2c0f:edb0:0:10::599", - "CanPort80": true - }, - { - "Name": "15b", - "RegionID": 15, - "HostName": "derp15b.tailscale.com", - "IPv4": "102.67.165.90", - "IPv6": "2c0f:edb0:0:10::963", - "CanPort80": true - } - ] - }, - "16": { - "RegionID": 16, - "RegionCode": "mia", - "RegionName": "Miami", - "Latitude": 25.78, - "Longitude": -80.21, - "Nodes": [ - { - "Name": "16c", - "RegionID": 16, - "HostName": "derp16c.tailscale.com", - "IPv4": "192.73.243.229", - "IPv6": "2607:f740:17::4e4", - "CanPort80": true - }, - { - "Name": "16d", - "RegionID": 16, - "HostName": "derp16d.tailscale.com", - "IPv4": "192.73.243.141", - "IPv6": "2607:f740:17::475", - "CanPort80": true - }, - { - "Name": "16b", - "RegionID": 16, - "HostName": "derp16b.tailscale.com", - "IPv4": "192.73.243.135", - "IPv6": "2607:f740:17::476", - "CanPort80": true - } - ] - }, - "17": { - "RegionID": 17, - "RegionCode": "lax", - "RegionName": "Los Angeles", - "Latitude": 34.05, - "Longitude": -118.25, - "Nodes": [ - { - "Name": "17c", - "RegionID": 17, - "HostName": "derp17c.tailscale.com", - "IPv4": "208.111.40.12", - "IPv6": "2607:f740:c::10", - "CanPort80": true - }, - { - "Name": "17d", - "RegionID": 17, - "HostName": "derp17d.tailscale.com", - "IPv4": "208.111.40.216", - "IPv6": "2607:f740:c::e1b", - "CanPort80": true - }, - { - "Name": "17b", - "RegionID": 17, - "HostName": "derp17b.tailscale.com", - "IPv4": "192.73.244.245", - "IPv6": "2607:f740:c::646", - "CanPort80": true - } - ] - }, - "18": { - "RegionID": 18, - "RegionCode": "par", - "RegionName": "Paris", - "Latitude": 48.856667, - "Longitude": 2.352222, - "Nodes": [ - { - "Name": "18c", - "RegionID": 18, - "HostName": "derp18c.tailscale.com", - "IPv4": "176.58.90.207", - "IPv6": "2a00:dd80:3e::c19", - "CanPort80": true - }, - { - "Name": "18d", - "RegionID": 18, - "HostName": "derp18d.tailscale.com", - "IPv4": "176.58.90.104", - "IPv6": "2a00:dd80:3e::f2e", - "CanPort80": true - }, - { - "Name": "18b", - "RegionID": 18, - "HostName": "derp18b.tailscale.com", - "IPv4": "176.58.90.147", - "IPv6": "2a00:dd80:3e::363", - "CanPort80": true - } - ] - }, - "19": { - "RegionID": 19, - "RegionCode": "mad", - "RegionName": "Madrid", - "Latitude": 40.416944, - "Longitude": -3.703333, - "Nodes": [ - { - "Name": "19c", - "RegionID": 19, - "HostName": "derp19c.tailscale.com", - "IPv4": "45.159.97.61", - "IPv6": "2a00:dd80:14:10::20", - "CanPort80": true - }, - { - "Name": "19d", - "RegionID": 19, - "HostName": "derp19d.tailscale.com", - "IPv4": "45.159.97.233", - "IPv6": "2a00:dd80:14:10::34a", - "CanPort80": true - }, - { - "Name": "19b", - "RegionID": 19, - "HostName": "derp19b.tailscale.com", - "IPv4": "45.159.97.144", - "IPv6": "2a00:dd80:14:10::335", - "CanPort80": true - } - ] - }, - "2": { - "RegionID": 2, - "RegionCode": "sfo", - "RegionName": "San Francisco", - "Latitude": 37.7775, - "Longitude": -122.416389, - "Nodes": [ - { - "Name": "2e", - "RegionID": 2, - "HostName": "derp2e.tailscale.com", - "IPv4": "192.73.252.134", - "IPv6": "2607:f740:0:3f::44c", - "CanPort80": true - }, - { - "Name": "2f", - "RegionID": 2, - "HostName": "derp2f.tailscale.com", - "IPv4": "208.111.34.178", - "IPv6": "2607:f740:0:3f::f4", - "CanPort80": true - }, - { - "Name": "2d", - "RegionID": 2, - "HostName": "derp2d.tailscale.com", - "IPv4": "192.73.252.65", - "IPv6": "2607:f740:0:3f::287", - "CanPort80": true - } - ] - }, - "20": { - "RegionID": 20, - "RegionCode": "hkg", - "RegionName": "Hong Kong", - "Latitude": 22.3193, - "Longitude": 114.1694, - "Nodes": [ - { - "Name": "20c", - "RegionID": 20, - "HostName": "derp20c.tailscale.com", - "IPv4": "205.147.105.30", - "IPv6": "2403:2500:8000:1::5fb", - "CanPort80": true - }, - { - "Name": "20d", - "RegionID": 20, - "HostName": "derp20d.tailscale.com", - "IPv4": "205.147.105.78", - "IPv6": "2403:2500:8000:1::e9a", - "CanPort80": true - }, - { - "Name": "20b", - "RegionID": 20, - "HostName": "derp20b.tailscale.com", - "IPv4": "103.6.84.152", - "IPv6": "2403:2500:8000:1::ef6", - "CanPort80": true - } - ] - }, - "21": { - "RegionID": 21, - "RegionCode": "tor", - "RegionName": "Toronto", - "Latitude": 43.741667, - "Longitude": -79.373333, - "Nodes": [ - { - "Name": "21c", - "RegionID": 21, - "HostName": "derp21c.tailscale.com", - "IPv4": "162.248.221.215", - "IPv6": "2607:f740:50::f10", - "CanPort80": true - }, - { - "Name": "21d", - "RegionID": 21, - "HostName": "derp21d.tailscale.com", - "IPv4": "162.248.221.248", - "IPv6": "2607:f740:50::ca4", - "CanPort80": true - }, - { - "Name": "21b", - "RegionID": 21, - "HostName": "derp21b.tailscale.com", - "IPv4": "162.248.221.199", - "IPv6": "2607:f740:50::1d1", - "CanPort80": true - } - ] - }, - "22": { - "RegionID": 22, - "RegionCode": "waw", - "RegionName": "Warsaw", - "Latitude": 52.23, - "Longitude": 21.011111, - "Nodes": [ - { - "Name": "22c", - "RegionID": 22, - "HostName": "derp22c.tailscale.com", - "IPv4": "45.159.98.253", - "IPv6": "2a00:dd80:40:100::3f", - "CanPort80": true - }, - { - "Name": "22d", - "RegionID": 22, - "HostName": "derp22d.tailscale.com", - "IPv4": "45.159.98.145", - "IPv6": "2a00:dd80:40:100::211", - "CanPort80": true - }, - { - "Name": "22b", - "RegionID": 22, - "HostName": "derp22b.tailscale.com", - "IPv4": "45.159.98.196", - "IPv6": "2a00:dd80:40:100::316", - "CanPort80": true - } - ] - }, - "23": { - "RegionID": 23, - "RegionCode": "dbi", - "RegionName": "Dubai", - "Latitude": 25.263056, - "Longitude": 55.297222, - "Nodes": [ - { - "Name": "23c", - "RegionID": 23, - "HostName": "derp23c.tailscale.com", - "IPv4": "185.34.3.207", - "IPv6": "2a00:dd80:3f:100::a50", - "CanPort80": true - }, - { - "Name": "23d", - "RegionID": 23, - "HostName": "derp23d.tailscale.com", - "IPv4": "185.34.3.75", - "IPv6": "2a00:dd80:3f:100::97e", - "CanPort80": true - }, - { - "Name": "23b", - "RegionID": 23, - "HostName": "derp23b.tailscale.com", - "IPv4": "185.34.3.232", - "IPv6": "2a00:dd80:3f:100::76f", - "CanPort80": true - } - ] - }, - "24": { - "RegionID": 24, - "RegionCode": "hnl", - "RegionName": "Honolulu", - "Latitude": 21.306944, - "Longitude": -157.858333, - "Nodes": [ - { - "Name": "24c", - "RegionID": 24, - "HostName": "derp24c.tailscale.com", - "IPv4": "208.83.233.233", - "IPv6": "2001:19f0:c000:c591:5400:04ff:fe26:2c5f", - "CanPort80": true - }, - { - "Name": "24d", - "RegionID": 24, - "HostName": "derp24d.tailscale.com", - "IPv4": "208.72.155.133", - "IPv6": "2001:19f0:c000:c564:5400:04ff:fe26:2ba8", - "CanPort80": true - }, - { - "Name": "24b", - "RegionID": 24, - "HostName": "derp24b.tailscale.com", - "IPv4": "208.83.234.151", - "IPv6": "2001:19f0:c000:c586:5400:04ff:fe26:2ba6", - "CanPort80": true - } - ] - }, - "25": { - "RegionID": 25, - "RegionCode": "nai", - "RegionName": "Nairobi", - "Latitude": -1.286389, - "Longitude": 36.817222, - "Nodes": [ - { - "Name": "25c", - "RegionID": 25, - "HostName": "derp25c.tailscale.com", - "IPv4": "102.67.167.37", - "IPv6": "2c0f:edb0:2000:1::2c7", - "CanPort80": true - }, - { - "Name": "25d", - "RegionID": 25, - "HostName": "derp25d.tailscale.com", - "IPv4": "102.67.167.188", - "IPv6": "2c0f:edb0:2000:1::188", - "CanPort80": true - }, - { - "Name": "25b", - "RegionID": 25, - "HostName": "derp25b.tailscale.com", - "IPv4": "102.67.167.245", - "IPv6": "2c0f:edb0:2000:1::2e9", - "CanPort80": true - } - ] - }, - "26": { - "RegionID": 26, - "RegionCode": "nue", - "RegionName": "Nuremberg", - "Latitude": 49.453889, - "Longitude": 11.0775, - "Nodes": [ - { - "Name": "26c", - "RegionID": 26, - "HostName": "derp26c.tailscale.com", - "IPv4": "49.12.193.137", - "IPv6": "2a01:4f8:1c1c:5c70::1", - "CanPort80": true - }, - { - "Name": "26d", - "RegionID": 26, - "HostName": "derp26d.tailscale.com", - "IPv4": "49.13.204.141", - "IPv6": "2a01:4f8:1c0c:7d06::1", - "CanPort80": true - }, - { - "Name": "26b", - "RegionID": 26, - "HostName": "derp26b.tailscale.com", - "IPv4": "167.235.72.200", - "IPv6": "2a01:4f8:1c1c:47b6::1", - "CanPort80": true - } - ] - }, - "27": { - "RegionID": 27, - "RegionCode": "iad", - "RegionName": "Ashburn", - "Latitude": 39.03, - "Longitude": -77.471111, - "Nodes": [ - { - "Name": "27d", - "RegionID": 27, - "HostName": "derp27d.tailscale.com", - "IPv4": "178.156.152.106", - "IPv6": "2a01:4ff:f0:3c8e::1", - "CanPort80": true - }, - { - "Name": "27c", - "RegionID": 27, - "HostName": "derp27c.tailscale.com", - "IPv4": "178.156.152.91", - "IPv6": "2a01:4ff:f0:3913::1", - "CanPort80": true - }, - { - "Name": "27e", - "RegionID": 27, - "HostName": "derp27e.tailscale.com", - "IPv4": "178.156.134.232", - "IPv6": "2a01:4ff:f0:28d4::1", - "CanPort80": true - }, - { - "Name": "27b", - "RegionID": 27, - "HostName": "derp27b.tailscale.com", - "IPv4": "5.161.218.233", - "IPv6": "2a01:4ff:f0:3db9::1", - "CanPort80": true - } - ] - }, - "28": { - "RegionID": 28, - "RegionCode": "hel", - "RegionName": "Helsinki", - "Latitude": 60.170833, - "Longitude": 24.9375, - "Nodes": [ - { - "Name": "28c", - "RegionID": 28, - "HostName": "derp28c.tailscale.com", - "IPv4": "95.217.2.165", - "IPv6": "2a01:4f9:c012:cd74::1", - "CanPort80": true - }, - { - "Name": "28d", - "RegionID": 28, - "HostName": "derp28d.tailscale.com", - "IPv4": "157.180.28.32", - "IPv6": "2a01:4f9:c012:2e5b::1", - "CanPort80": true - }, - { - "Name": "28b", - "RegionID": 28, - "HostName": "derp28b.tailscale.com", - "IPv4": "65.109.143.62", - "IPv6": "2a01:4f9:c012:d55c::1", - "CanPort80": true - } - ] - }, - "3": { - "RegionID": 3, - "RegionCode": "sin", - "RegionName": "Singapore", - "Latitude": 1.3521, - "Longitude": 103.8198, - "Nodes": [ - { - "Name": "3g", - "RegionID": 3, - "HostName": "derp3g.tailscale.com", - "IPv4": "172.237.72.79", - "IPv6": "2600:3c15::2000:adff:fe08:6fab", - "CanPort80": true - }, - { - "Name": "3f", - "RegionID": 3, - "HostName": "derp3f.tailscale.com", - "IPv4": "172.237.72.8", - "IPv6": "2600:3c15::2000:53ff:fe48:a668", - "CanPort80": true - }, - { - "Name": "3h", - "RegionID": 3, - "HostName": "derp3h.tailscale.com", - "IPv4": "172.237.66.30", - "IPv6": "2600:3c15::2000:3dff:fe44:50aa", - "CanPort80": true - }, - { - "Name": "3e", - "RegionID": 3, - "HostName": "derp3e.tailscale.com", - "IPv4": "172.237.72.43", - "IPv6": "2600:3c15::2000:6cff:fee4:d799", - "CanPort80": true - } - ] - }, - "4": { - "RegionID": 4, - "RegionCode": "fra", - "RegionName": "Frankfurt", - "Latitude": 50.1109, - "Longitude": 8.6821, - "Nodes": [ - { - "Name": "4h", - "RegionID": 4, - "HostName": "derp4h.tailscale.com", - "IPv4": "185.40.234.77", - "IPv6": "2a00:dd80:20::bcf", - "CanPort80": true - }, - { - "Name": "4g", - "RegionID": 4, - "HostName": "derp4g.tailscale.com", - "IPv4": "185.40.234.113", - "IPv6": "2a00:dd80:20::8f", - "CanPort80": true - }, - { - "Name": "4i", - "RegionID": 4, - "HostName": "derp4i.tailscale.com", - "IPv4": "185.40.234.53", - "IPv6": "2a00:dd80:20::8a6", - "CanPort80": true - }, - { - "Name": "4f", - "RegionID": 4, - "HostName": "derp4f.tailscale.com", - "IPv4": "185.40.234.219", - "IPv6": "2a00:dd80:20::a25", - "CanPort80": true - } - ] - }, - "5": { - "RegionID": 5, - "RegionCode": "syd", - "RegionName": "Sydney", - "Latitude": -33.867778, - "Longitude": 151.21, - "Nodes": [ - { - "Name": "5f", - "RegionID": 5, - "HostName": "derp5f.tailscale.com", - "IPv4": "172.105.166.103", - "IPv6": "2400:8907::2000:ccff:fe1f:80da", - "CanPort80": true - }, - { - "Name": "5g", - "RegionID": 5, - "HostName": "derp5g.tailscale.com", - "IPv4": "172.105.169.57", - "IPv6": "2400:8907::2000:2fff:fea7:57f4", - "CanPort80": true - }, - { - "Name": "5e", - "RegionID": 5, - "HostName": "derp5e.tailscale.com", - "IPv4": "172.105.179.230", - "IPv6": "2400:8907::2000:ceff:fe8d:4f4e", - "CanPort80": true - } - ] - }, - "6": { - "RegionID": 6, - "RegionCode": "blr", - "RegionName": "Bengaluru", - "Latitude": 12.9716, - "Longitude": 77.5946, - "Nodes": [ - { - "Name": "6a", - "RegionID": 6, - "HostName": "derp6.tailscale.com", - "IPv4": "68.183.90.120", - "IPv6": "2400:6180:100:d0::982:d001", - "CanPort80": true - } - ] - }, - "7": { - "RegionID": 7, - "RegionCode": "tok", - "RegionName": "Tokyo", - "Latitude": 35.6764, - "Longitude": 139.65, - "Nodes": [ - { - "Name": "7g", - "RegionID": 7, - "HostName": "derp7g.tailscale.com", - "IPv4": "172.238.6.179", - "IPv6": "2600:3c18::2000:3fff:fe80:3ebd", - "CanPort80": true - }, - { - "Name": "7f", - "RegionID": 7, - "HostName": "derp7f.tailscale.com", - "IPv4": "172.238.6.34", - "IPv6": "2600:3c18::2000:acff:fe8e:3ed5", - "CanPort80": true - }, - { - "Name": "7h", - "RegionID": 7, - "HostName": "derp7h.tailscale.com", - "IPv4": "172.237.28.183", - "IPv6": "2600:3c18::2000:b1ff:fea9:4560", - "CanPort80": true - }, - { - "Name": "7e", - "RegionID": 7, - "HostName": "derp7e.tailscale.com", - "IPv4": "172.238.6.180", - "IPv6": "2600:3c18::2000:60ff:fe0f:6e83", - "STUNOnly": true, - "CanPort80": true - } - ] - }, - "8": { - "RegionID": 8, - "RegionCode": "lhr", - "RegionName": "London", - "Latitude": 51.5072, - "Longitude": 0.1276, - "Nodes": [ - { - "Name": "8f", - "RegionID": 8, - "HostName": "derp8f.tailscale.com", - "IPv4": "176.58.88.183", - "IPv6": "2a00:dd80:3a::dfa", - "CanPort80": true - }, - { - "Name": "8g", - "RegionID": 8, - "HostName": "derp8g.tailscale.com", - "IPv4": "176.58.92.254", - "IPv6": "2a00:dd80:3a::ed", - "CanPort80": true - }, - { - "Name": "8e", - "RegionID": 8, - "HostName": "derp8e.tailscale.com", - "IPv4": "176.58.92.144", - "IPv6": "2a00:dd80:3a::b33", - "CanPort80": true - } - ] - }, - "9": { - "RegionID": 9, - "RegionCode": "dfw", - "RegionName": "Dallas", - "Latitude": 32.779167, - "Longitude": -96.808889, - "Nodes": [ - { - "Name": "9e", - "RegionID": 9, - "HostName": "derp9e.tailscale.com", - "IPv4": "192.73.248.83", - "IPv6": "2607:f740:100::359", - "CanPort80": true - }, - { - "Name": "9f", - "RegionID": 9, - "HostName": "derp9f.tailscale.com", - "IPv4": "209.177.156.197", - "IPv6": "2607:f740:100::cad", - "CanPort80": true - }, - { - "Name": "9d", - "RegionID": 9, - "HostName": "derp9d.tailscale.com", - "IPv4": "209.177.156.94", - "IPv6": "2607:f740:100::c05", - "CanPort80": true - } - ] - } - } - }, - "DisplayMessages": null, - "TKAEnabled": false, - "TKAHead": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", - "Domain": "kratail2tid@passkey", - "DomainAuditLogID": "", - "UserProfiles": { - "1260082990019555": { - "ID": 1260082990019555, - "LoginName": "tagged-devices", - "DisplayName": "Tagged Devices" - }, - "4031348162889210": { - "ID": 4031348162889210, - "LoginName": "tagged-client.tail78f774.ts.net", - "DisplayName": "tagged-client" - } - } + "PacketFilterRules": 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.124.195.93": { - "peer_name": "exit-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-prod/tailscaled.sock whois --json 100.124.195.93", - "response": null - }, - "100.116.18.24": { - "peer_name": "exit-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-prod/tailscaled.sock whois --json 100.116.18.24", - "response": null - }, - "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.107.162.14": { - "peer_name": "group-a-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-prod/tailscaled.sock whois --json 100.107.162.14", - "response": null - }, - "100.77.135.18": { - "peer_name": "group-b-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-prod/tailscaled.sock whois --json 100.77.135.18", - "response": null - }, - "100.105.127.107": { - "peer_name": "multi-exit-router", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-prod/tailscaled.sock whois --json 100.105.127.107", - "response": null - }, - "100.109.43.124": { - "peer_name": "router-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-prod/tailscaled.sock whois --json 100.109.43.124", - "response": null - }, - "100.65.172.123": { - "peer_name": "router-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-prod/tailscaled.sock whois --json 100.65.172.123", - "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 - } - }, "netmap": { - "SelfNode": { - "ID": 301794218943819, - "StableID": "neJag6dgM311CNTRL", - "Name": "tagged-prod.tail78f774.ts.net.", - "User": 301794218943819, - "Key": "nodekey:54c79503322a5d0a9701ce19d11963cfff9c05667ac06ef976af86275ba7080e", - "DiscoKey": "discokey:5e4985009b42b7c82ffb2cb5fa735a90f967f6b3f886b71268ebbeffa324556b", - "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:46164", "10.65.0.27:46164", "172.17.0.1:46164"], - "Hostinfo": { - "Hostname": "tagged-prod", - "Services": [ - { "Proto": "peerapi4", "Port": 37678 }, - { "Proto": "peerapi6", "Port": 37678 }, - { "Proto": "peerapi-dns-proxy", "Port": 1 } - ] - }, - "Created": "2026-02-20T14:03:12.89283153Z", - "Tags": ["tag:prod"], - "MachineAuthorized": true, - "CapMap": { - "https://tailscale.com/cap/file-sharing": null, - "https://tailscale.com/cap/is-owner": null, - "https://tailscale.com/cap/ssh": null, - "https://tailscale.com/cap/tailnet-lock": null, - "probe-udp-lifetime": null, - "ssh-behavior-v1": null, - "ssh-env-vars": null, - "store-appc-routes": null, - "tailnet-display-name": ["kratail2tid@passkey"] - }, - "ComputedName": "tagged-prod", - "ComputedNameWithHost": "tagged-prod" - }, - "AllCaps": [ - "ssh-behavior-v1", - "https://tailscale.com/cap/is-owner", - "probe-udp-lifetime", - "ssh-env-vars", - "store-appc-routes", - "https://tailscale.com/cap/ssh", - "https://tailscale.com/cap/tailnet-lock", - "https://tailscale.com/cap/file-sharing", - "tailnet-display-name" - ], - "NodeKey": "nodekey:54c79503322a5d0a9701ce19d11963cfff9c05667ac06ef976af86275ba7080e", - "MachineKey": "mkey:af805e02d1594ab20eaf3e2df5b379eec6453fa649344fcd564b7bae20e46a63", "Peers": [], - "DNS": { - "Routes": { - "tail78f774.ts.net.": null, - "ts.net.": [{ "Addr": "199.247.155.53" }, { "Addr": "2620:111:8007::53" }] - }, - "Domains": ["tail78f774.ts.net"], - "Proxied": true, - "ExitNodeFilteredSet": [".ts.net", ".tailscale.net"] - }, - "PacketFilter": [], - "PacketFilterRules": null, - "SSHPolicy": { "rules": [] }, - "CollectServices": false, - "DERPMap": { - "Regions": { - "1": { - "RegionID": 1, - "RegionCode": "nyc", - "RegionName": "New York City", - "Latitude": 40.7128, - "Longitude": -74.006, - "Nodes": [ - { - "Name": "1h", - "RegionID": 1, - "HostName": "derp1h.tailscale.com", - "IPv4": "199.38.181.93", - "IPv6": "2607:f740:f::afd", - "CanPort80": true - }, - { - "Name": "1g", - "RegionID": 1, - "HostName": "derp1g.tailscale.com", - "IPv4": "209.177.145.120", - "IPv6": "2607:f740:f::3eb", - "CanPort80": true - }, - { - "Name": "1i", - "RegionID": 1, - "HostName": "derp1i.tailscale.com", - "IPv4": "199.38.181.103", - "IPv6": "2607:f740:f::e19", - "CanPort80": true - }, - { - "Name": "1f", - "RegionID": 1, - "HostName": "derp1f.tailscale.com", - "IPv4": "199.38.181.104", - "IPv6": "2607:f740:f::bc", - "CanPort80": true - } - ] - }, - "10": { - "RegionID": 10, - "RegionCode": "sea", - "RegionName": "Seattle", - "Latitude": 47.609722, - "Longitude": -122.333056, - "Nodes": [ - { - "Name": "10c", - "RegionID": 10, - "HostName": "derp10c.tailscale.com", - "IPv4": "192.73.240.121", - "IPv6": "2607:f740:14::40c", - "CanPort80": true - }, - { - "Name": "10d", - "RegionID": 10, - "HostName": "derp10d.tailscale.com", - "IPv4": "192.73.240.132", - "IPv6": "2607:f740:14::500", - "CanPort80": true - }, - { - "Name": "10b", - "RegionID": 10, - "HostName": "derp10b.tailscale.com", - "IPv4": "192.73.240.161", - "IPv6": "2607:f740:14::61c", - "CanPort80": true - } - ] - }, - "11": { - "RegionID": 11, - "RegionCode": "sao", - "RegionName": "São Paulo", - "Latitude": -23.55, - "Longitude": -46.633333, - "Nodes": [ - { - "Name": "11f", - "RegionID": 11, - "HostName": "derp11f.tailscale.com", - "IPv4": "172.237.61.197", - "IPv6": "2600:3c0d::2000:3bff:fe44:6166", - "CanPort80": true - }, - { - "Name": "11g", - "RegionID": 11, - "HostName": "derp11g.tailscale.com", - "IPv4": "172.237.61.190", - "IPv6": "2600:3c0d::2000:62ff:febe:2e67", - "CanPort80": true - }, - { - "Name": "11e", - "RegionID": 11, - "HostName": "derp11e.tailscale.com", - "IPv4": "172.237.61.194", - "IPv6": "2600:3c0d::2000:d2ff:fe43:1790", - "CanPort80": true - } - ] - }, - "12": { - "RegionID": 12, - "RegionCode": "ord", - "RegionName": "Chicago", - "Latitude": 41.881944, - "Longitude": -87.627778, - "Nodes": [ - { - "Name": "12e", - "RegionID": 12, - "HostName": "derp12e.tailscale.com", - "IPv4": "209.177.158.15", - "IPv6": "2607:f740:e::b17", - "CanPort80": true - }, - { - "Name": "12f", - "RegionID": 12, - "HostName": "derp12f.tailscale.com", - "IPv4": "199.38.182.118", - "IPv6": "2607:f740:e::4c8", - "CanPort80": true - }, - { - "Name": "12d", - "RegionID": 12, - "HostName": "derp12d.tailscale.com", - "IPv4": "209.177.158.246", - "IPv6": "2607:f740:e::811", - "CanPort80": true - } - ] - }, - "13": { - "RegionID": 13, - "RegionCode": "den", - "RegionName": "Denver", - "Latitude": 39.7392, - "Longitude": -104.9849, - "Nodes": [ - { - "Name": "13c", - "RegionID": 13, - "HostName": "derp13c.tailscale.com", - "IPv4": "192.73.242.28", - "IPv6": "2607:f740:16::5c", - "CanPort80": true - }, - { - "Name": "13d", - "RegionID": 13, - "HostName": "derp13d.tailscale.com", - "IPv4": "192.73.242.204", - "IPv6": "2607:f740:16::c23", - "CanPort80": true - }, - { - "Name": "13b", - "RegionID": 13, - "HostName": "derp13b.tailscale.com", - "IPv4": "192.73.242.187", - "IPv6": "2607:f740:16::640", - "CanPort80": true - } - ] - }, - "14": { - "RegionID": 14, - "RegionCode": "ams", - "RegionName": "Amsterdam", - "Latitude": 52.372778, - "Longitude": 4.893611, - "Nodes": [ - { - "Name": "14c", - "RegionID": 14, - "HostName": "derp14c.tailscale.com", - "IPv4": "176.58.93.147", - "IPv6": "2a00:dd80:3c::b09", - "CanPort80": true - }, - { - "Name": "14d", - "RegionID": 14, - "HostName": "derp14d.tailscale.com", - "IPv4": "176.58.93.154", - "IPv6": "2a00:dd80:3c::3d5", - "CanPort80": true - }, - { - "Name": "14b", - "RegionID": 14, - "HostName": "derp14b.tailscale.com", - "IPv4": "176.58.93.248", - "IPv6": "2a00:dd80:3c::807", - "CanPort80": true - } - ] - }, - "15": { - "RegionID": 15, - "RegionCode": "jnb", - "RegionName": "Johannesburg", - "Latitude": -26.204444, - "Longitude": 28.045556, - "Nodes": [ - { - "Name": "15c", - "RegionID": 15, - "HostName": "derp15c.tailscale.com", - "IPv4": "102.67.165.185", - "IPv6": "2c0f:edb0:0:10::b59", - "CanPort80": true - }, - { - "Name": "15d", - "RegionID": 15, - "HostName": "derp15d.tailscale.com", - "IPv4": "102.67.165.36", - "IPv6": "2c0f:edb0:0:10::599", - "CanPort80": true - }, - { - "Name": "15b", - "RegionID": 15, - "HostName": "derp15b.tailscale.com", - "IPv4": "102.67.165.90", - "IPv6": "2c0f:edb0:0:10::963", - "CanPort80": true - } - ] - }, - "16": { - "RegionID": 16, - "RegionCode": "mia", - "RegionName": "Miami", - "Latitude": 25.78, - "Longitude": -80.21, - "Nodes": [ - { - "Name": "16c", - "RegionID": 16, - "HostName": "derp16c.tailscale.com", - "IPv4": "192.73.243.229", - "IPv6": "2607:f740:17::4e4", - "CanPort80": true - }, - { - "Name": "16d", - "RegionID": 16, - "HostName": "derp16d.tailscale.com", - "IPv4": "192.73.243.141", - "IPv6": "2607:f740:17::475", - "CanPort80": true - }, - { - "Name": "16b", - "RegionID": 16, - "HostName": "derp16b.tailscale.com", - "IPv4": "192.73.243.135", - "IPv6": "2607:f740:17::476", - "CanPort80": true - } - ] - }, - "17": { - "RegionID": 17, - "RegionCode": "lax", - "RegionName": "Los Angeles", - "Latitude": 34.05, - "Longitude": -118.25, - "Nodes": [ - { - "Name": "17c", - "RegionID": 17, - "HostName": "derp17c.tailscale.com", - "IPv4": "208.111.40.12", - "IPv6": "2607:f740:c::10", - "CanPort80": true - }, - { - "Name": "17d", - "RegionID": 17, - "HostName": "derp17d.tailscale.com", - "IPv4": "208.111.40.216", - "IPv6": "2607:f740:c::e1b", - "CanPort80": true - }, - { - "Name": "17b", - "RegionID": 17, - "HostName": "derp17b.tailscale.com", - "IPv4": "192.73.244.245", - "IPv6": "2607:f740:c::646", - "CanPort80": true - } - ] - }, - "18": { - "RegionID": 18, - "RegionCode": "par", - "RegionName": "Paris", - "Latitude": 48.856667, - "Longitude": 2.352222, - "Nodes": [ - { - "Name": "18c", - "RegionID": 18, - "HostName": "derp18c.tailscale.com", - "IPv4": "176.58.90.207", - "IPv6": "2a00:dd80:3e::c19", - "CanPort80": true - }, - { - "Name": "18d", - "RegionID": 18, - "HostName": "derp18d.tailscale.com", - "IPv4": "176.58.90.104", - "IPv6": "2a00:dd80:3e::f2e", - "CanPort80": true - }, - { - "Name": "18b", - "RegionID": 18, - "HostName": "derp18b.tailscale.com", - "IPv4": "176.58.90.147", - "IPv6": "2a00:dd80:3e::363", - "CanPort80": true - } - ] - }, - "19": { - "RegionID": 19, - "RegionCode": "mad", - "RegionName": "Madrid", - "Latitude": 40.416944, - "Longitude": -3.703333, - "Nodes": [ - { - "Name": "19c", - "RegionID": 19, - "HostName": "derp19c.tailscale.com", - "IPv4": "45.159.97.61", - "IPv6": "2a00:dd80:14:10::20", - "CanPort80": true - }, - { - "Name": "19d", - "RegionID": 19, - "HostName": "derp19d.tailscale.com", - "IPv4": "45.159.97.233", - "IPv6": "2a00:dd80:14:10::34a", - "CanPort80": true - }, - { - "Name": "19b", - "RegionID": 19, - "HostName": "derp19b.tailscale.com", - "IPv4": "45.159.97.144", - "IPv6": "2a00:dd80:14:10::335", - "CanPort80": true - } - ] - }, - "2": { - "RegionID": 2, - "RegionCode": "sfo", - "RegionName": "San Francisco", - "Latitude": 37.7775, - "Longitude": -122.416389, - "Nodes": [ - { - "Name": "2e", - "RegionID": 2, - "HostName": "derp2e.tailscale.com", - "IPv4": "192.73.252.134", - "IPv6": "2607:f740:0:3f::44c", - "CanPort80": true - }, - { - "Name": "2f", - "RegionID": 2, - "HostName": "derp2f.tailscale.com", - "IPv4": "208.111.34.178", - "IPv6": "2607:f740:0:3f::f4", - "CanPort80": true - }, - { - "Name": "2d", - "RegionID": 2, - "HostName": "derp2d.tailscale.com", - "IPv4": "192.73.252.65", - "IPv6": "2607:f740:0:3f::287", - "CanPort80": true - } - ] - }, - "20": { - "RegionID": 20, - "RegionCode": "hkg", - "RegionName": "Hong Kong", - "Latitude": 22.3193, - "Longitude": 114.1694, - "Nodes": [ - { - "Name": "20c", - "RegionID": 20, - "HostName": "derp20c.tailscale.com", - "IPv4": "205.147.105.30", - "IPv6": "2403:2500:8000:1::5fb", - "CanPort80": true - }, - { - "Name": "20d", - "RegionID": 20, - "HostName": "derp20d.tailscale.com", - "IPv4": "205.147.105.78", - "IPv6": "2403:2500:8000:1::e9a", - "CanPort80": true - }, - { - "Name": "20b", - "RegionID": 20, - "HostName": "derp20b.tailscale.com", - "IPv4": "103.6.84.152", - "IPv6": "2403:2500:8000:1::ef6", - "CanPort80": true - } - ] - }, - "21": { - "RegionID": 21, - "RegionCode": "tor", - "RegionName": "Toronto", - "Latitude": 43.741667, - "Longitude": -79.373333, - "Nodes": [ - { - "Name": "21c", - "RegionID": 21, - "HostName": "derp21c.tailscale.com", - "IPv4": "162.248.221.215", - "IPv6": "2607:f740:50::f10", - "CanPort80": true - }, - { - "Name": "21d", - "RegionID": 21, - "HostName": "derp21d.tailscale.com", - "IPv4": "162.248.221.248", - "IPv6": "2607:f740:50::ca4", - "CanPort80": true - }, - { - "Name": "21b", - "RegionID": 21, - "HostName": "derp21b.tailscale.com", - "IPv4": "162.248.221.199", - "IPv6": "2607:f740:50::1d1", - "CanPort80": true - } - ] - }, - "22": { - "RegionID": 22, - "RegionCode": "waw", - "RegionName": "Warsaw", - "Latitude": 52.23, - "Longitude": 21.011111, - "Nodes": [ - { - "Name": "22c", - "RegionID": 22, - "HostName": "derp22c.tailscale.com", - "IPv4": "45.159.98.253", - "IPv6": "2a00:dd80:40:100::3f", - "CanPort80": true - }, - { - "Name": "22d", - "RegionID": 22, - "HostName": "derp22d.tailscale.com", - "IPv4": "45.159.98.145", - "IPv6": "2a00:dd80:40:100::211", - "CanPort80": true - }, - { - "Name": "22b", - "RegionID": 22, - "HostName": "derp22b.tailscale.com", - "IPv4": "45.159.98.196", - "IPv6": "2a00:dd80:40:100::316", - "CanPort80": true - } - ] - }, - "23": { - "RegionID": 23, - "RegionCode": "dbi", - "RegionName": "Dubai", - "Latitude": 25.263056, - "Longitude": 55.297222, - "Nodes": [ - { - "Name": "23c", - "RegionID": 23, - "HostName": "derp23c.tailscale.com", - "IPv4": "185.34.3.207", - "IPv6": "2a00:dd80:3f:100::a50", - "CanPort80": true - }, - { - "Name": "23d", - "RegionID": 23, - "HostName": "derp23d.tailscale.com", - "IPv4": "185.34.3.75", - "IPv6": "2a00:dd80:3f:100::97e", - "CanPort80": true - }, - { - "Name": "23b", - "RegionID": 23, - "HostName": "derp23b.tailscale.com", - "IPv4": "185.34.3.232", - "IPv6": "2a00:dd80:3f:100::76f", - "CanPort80": true - } - ] - }, - "24": { - "RegionID": 24, - "RegionCode": "hnl", - "RegionName": "Honolulu", - "Latitude": 21.306944, - "Longitude": -157.858333, - "Nodes": [ - { - "Name": "24c", - "RegionID": 24, - "HostName": "derp24c.tailscale.com", - "IPv4": "208.83.233.233", - "IPv6": "2001:19f0:c000:c591:5400:04ff:fe26:2c5f", - "CanPort80": true - }, - { - "Name": "24d", - "RegionID": 24, - "HostName": "derp24d.tailscale.com", - "IPv4": "208.72.155.133", - "IPv6": "2001:19f0:c000:c564:5400:04ff:fe26:2ba8", - "CanPort80": true - }, - { - "Name": "24b", - "RegionID": 24, - "HostName": "derp24b.tailscale.com", - "IPv4": "208.83.234.151", - "IPv6": "2001:19f0:c000:c586:5400:04ff:fe26:2ba6", - "CanPort80": true - } - ] - }, - "25": { - "RegionID": 25, - "RegionCode": "nai", - "RegionName": "Nairobi", - "Latitude": -1.286389, - "Longitude": 36.817222, - "Nodes": [ - { - "Name": "25c", - "RegionID": 25, - "HostName": "derp25c.tailscale.com", - "IPv4": "102.67.167.37", - "IPv6": "2c0f:edb0:2000:1::2c7", - "CanPort80": true - }, - { - "Name": "25d", - "RegionID": 25, - "HostName": "derp25d.tailscale.com", - "IPv4": "102.67.167.188", - "IPv6": "2c0f:edb0:2000:1::188", - "CanPort80": true - }, - { - "Name": "25b", - "RegionID": 25, - "HostName": "derp25b.tailscale.com", - "IPv4": "102.67.167.245", - "IPv6": "2c0f:edb0:2000:1::2e9", - "CanPort80": true - } - ] - }, - "26": { - "RegionID": 26, - "RegionCode": "nue", - "RegionName": "Nuremberg", - "Latitude": 49.453889, - "Longitude": 11.0775, - "Nodes": [ - { - "Name": "26c", - "RegionID": 26, - "HostName": "derp26c.tailscale.com", - "IPv4": "49.12.193.137", - "IPv6": "2a01:4f8:1c1c:5c70::1", - "CanPort80": true - }, - { - "Name": "26d", - "RegionID": 26, - "HostName": "derp26d.tailscale.com", - "IPv4": "49.13.204.141", - "IPv6": "2a01:4f8:1c0c:7d06::1", - "CanPort80": true - }, - { - "Name": "26b", - "RegionID": 26, - "HostName": "derp26b.tailscale.com", - "IPv4": "167.235.72.200", - "IPv6": "2a01:4f8:1c1c:47b6::1", - "CanPort80": true - } - ] - }, - "27": { - "RegionID": 27, - "RegionCode": "iad", - "RegionName": "Ashburn", - "Latitude": 39.03, - "Longitude": -77.471111, - "Nodes": [ - { - "Name": "27d", - "RegionID": 27, - "HostName": "derp27d.tailscale.com", - "IPv4": "178.156.152.106", - "IPv6": "2a01:4ff:f0:3c8e::1", - "CanPort80": true - }, - { - "Name": "27c", - "RegionID": 27, - "HostName": "derp27c.tailscale.com", - "IPv4": "178.156.152.91", - "IPv6": "2a01:4ff:f0:3913::1", - "CanPort80": true - }, - { - "Name": "27e", - "RegionID": 27, - "HostName": "derp27e.tailscale.com", - "IPv4": "178.156.134.232", - "IPv6": "2a01:4ff:f0:28d4::1", - "CanPort80": true - }, - { - "Name": "27b", - "RegionID": 27, - "HostName": "derp27b.tailscale.com", - "IPv4": "5.161.218.233", - "IPv6": "2a01:4ff:f0:3db9::1", - "CanPort80": true - } - ] - }, - "28": { - "RegionID": 28, - "RegionCode": "hel", - "RegionName": "Helsinki", - "Latitude": 60.170833, - "Longitude": 24.9375, - "Nodes": [ - { - "Name": "28c", - "RegionID": 28, - "HostName": "derp28c.tailscale.com", - "IPv4": "95.217.2.165", - "IPv6": "2a01:4f9:c012:cd74::1", - "CanPort80": true - }, - { - "Name": "28d", - "RegionID": 28, - "HostName": "derp28d.tailscale.com", - "IPv4": "157.180.28.32", - "IPv6": "2a01:4f9:c012:2e5b::1", - "CanPort80": true - }, - { - "Name": "28b", - "RegionID": 28, - "HostName": "derp28b.tailscale.com", - "IPv4": "65.109.143.62", - "IPv6": "2a01:4f9:c012:d55c::1", - "CanPort80": true - } - ] - }, - "3": { - "RegionID": 3, - "RegionCode": "sin", - "RegionName": "Singapore", - "Latitude": 1.3521, - "Longitude": 103.8198, - "Nodes": [ - { - "Name": "3g", - "RegionID": 3, - "HostName": "derp3g.tailscale.com", - "IPv4": "172.237.72.79", - "IPv6": "2600:3c15::2000:adff:fe08:6fab", - "CanPort80": true - }, - { - "Name": "3f", - "RegionID": 3, - "HostName": "derp3f.tailscale.com", - "IPv4": "172.237.72.8", - "IPv6": "2600:3c15::2000:53ff:fe48:a668", - "CanPort80": true - }, - { - "Name": "3h", - "RegionID": 3, - "HostName": "derp3h.tailscale.com", - "IPv4": "172.237.66.30", - "IPv6": "2600:3c15::2000:3dff:fe44:50aa", - "CanPort80": true - }, - { - "Name": "3e", - "RegionID": 3, - "HostName": "derp3e.tailscale.com", - "IPv4": "172.237.72.43", - "IPv6": "2600:3c15::2000:6cff:fee4:d799", - "CanPort80": true - } - ] - }, - "4": { - "RegionID": 4, - "RegionCode": "fra", - "RegionName": "Frankfurt", - "Latitude": 50.1109, - "Longitude": 8.6821, - "Nodes": [ - { - "Name": "4h", - "RegionID": 4, - "HostName": "derp4h.tailscale.com", - "IPv4": "185.40.234.77", - "IPv6": "2a00:dd80:20::bcf", - "CanPort80": true - }, - { - "Name": "4g", - "RegionID": 4, - "HostName": "derp4g.tailscale.com", - "IPv4": "185.40.234.113", - "IPv6": "2a00:dd80:20::8f", - "CanPort80": true - }, - { - "Name": "4i", - "RegionID": 4, - "HostName": "derp4i.tailscale.com", - "IPv4": "185.40.234.53", - "IPv6": "2a00:dd80:20::8a6", - "CanPort80": true - }, - { - "Name": "4f", - "RegionID": 4, - "HostName": "derp4f.tailscale.com", - "IPv4": "185.40.234.219", - "IPv6": "2a00:dd80:20::a25", - "CanPort80": true - } - ] - }, - "5": { - "RegionID": 5, - "RegionCode": "syd", - "RegionName": "Sydney", - "Latitude": -33.867778, - "Longitude": 151.21, - "Nodes": [ - { - "Name": "5f", - "RegionID": 5, - "HostName": "derp5f.tailscale.com", - "IPv4": "172.105.166.103", - "IPv6": "2400:8907::2000:ccff:fe1f:80da", - "CanPort80": true - }, - { - "Name": "5g", - "RegionID": 5, - "HostName": "derp5g.tailscale.com", - "IPv4": "172.105.169.57", - "IPv6": "2400:8907::2000:2fff:fea7:57f4", - "CanPort80": true - }, - { - "Name": "5e", - "RegionID": 5, - "HostName": "derp5e.tailscale.com", - "IPv4": "172.105.179.230", - "IPv6": "2400:8907::2000:ceff:fe8d:4f4e", - "CanPort80": true - } - ] - }, - "6": { - "RegionID": 6, - "RegionCode": "blr", - "RegionName": "Bengaluru", - "Latitude": 12.9716, - "Longitude": 77.5946, - "Nodes": [ - { - "Name": "6a", - "RegionID": 6, - "HostName": "derp6.tailscale.com", - "IPv4": "68.183.90.120", - "IPv6": "2400:6180:100:d0::982:d001", - "CanPort80": true - } - ] - }, - "7": { - "RegionID": 7, - "RegionCode": "tok", - "RegionName": "Tokyo", - "Latitude": 35.6764, - "Longitude": 139.65, - "Nodes": [ - { - "Name": "7g", - "RegionID": 7, - "HostName": "derp7g.tailscale.com", - "IPv4": "172.238.6.179", - "IPv6": "2600:3c18::2000:3fff:fe80:3ebd", - "CanPort80": true - }, - { - "Name": "7f", - "RegionID": 7, - "HostName": "derp7f.tailscale.com", - "IPv4": "172.238.6.34", - "IPv6": "2600:3c18::2000:acff:fe8e:3ed5", - "CanPort80": true - }, - { - "Name": "7h", - "RegionID": 7, - "HostName": "derp7h.tailscale.com", - "IPv4": "172.237.28.183", - "IPv6": "2600:3c18::2000:b1ff:fea9:4560", - "CanPort80": true - }, - { - "Name": "7e", - "RegionID": 7, - "HostName": "derp7e.tailscale.com", - "IPv4": "172.238.6.180", - "IPv6": "2600:3c18::2000:60ff:fe0f:6e83", - "STUNOnly": true, - "CanPort80": true - } - ] - }, - "8": { - "RegionID": 8, - "RegionCode": "lhr", - "RegionName": "London", - "Latitude": 51.5072, - "Longitude": 0.1276, - "Nodes": [ - { - "Name": "8f", - "RegionID": 8, - "HostName": "derp8f.tailscale.com", - "IPv4": "176.58.88.183", - "IPv6": "2a00:dd80:3a::dfa", - "CanPort80": true - }, - { - "Name": "8g", - "RegionID": 8, - "HostName": "derp8g.tailscale.com", - "IPv4": "176.58.92.254", - "IPv6": "2a00:dd80:3a::ed", - "CanPort80": true - }, - { - "Name": "8e", - "RegionID": 8, - "HostName": "derp8e.tailscale.com", - "IPv4": "176.58.92.144", - "IPv6": "2a00:dd80:3a::b33", - "CanPort80": true - } - ] - }, - "9": { - "RegionID": 9, - "RegionCode": "dfw", - "RegionName": "Dallas", - "Latitude": 32.779167, - "Longitude": -96.808889, - "Nodes": [ - { - "Name": "9e", - "RegionID": 9, - "HostName": "derp9e.tailscale.com", - "IPv4": "192.73.248.83", - "IPv6": "2607:f740:100::359", - "CanPort80": true - }, - { - "Name": "9f", - "RegionID": 9, - "HostName": "derp9f.tailscale.com", - "IPv4": "209.177.156.197", - "IPv6": "2607:f740:100::cad", - "CanPort80": true - }, - { - "Name": "9d", - "RegionID": 9, - "HostName": "derp9d.tailscale.com", - "IPv4": "209.177.156.94", - "IPv6": "2607:f740:100::c05", - "CanPort80": true - } - ] - } - } - }, - "DisplayMessages": null, - "TKAEnabled": false, - "TKAHead": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", - "Domain": "kratail2tid@passkey", - "DomainAuditLogID": "", - "UserProfiles": { - "301794218943819": { - "ID": 301794218943819, - "LoginName": "tagged-prod.tail78f774.ts.net", - "DisplayName": "tagged-prod" - } - } + "PacketFilterRules": 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.124.195.93": { - "peer_name": "exit-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-server/tailscaled.sock whois --json 100.124.195.93", - "response": null - }, - "100.116.18.24": { - "peer_name": "exit-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-server/tailscaled.sock whois --json 100.116.18.24", - "response": null - }, - "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.107.162.14": { - "peer_name": "group-a-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-server/tailscaled.sock whois --json 100.107.162.14", - "response": null - }, - "100.77.135.18": { - "peer_name": "group-b-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-server/tailscaled.sock whois --json 100.77.135.18", - "response": null - }, - "100.105.127.107": { - "peer_name": "multi-exit-router", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-server/tailscaled.sock whois --json 100.105.127.107", - "response": null - }, - "100.109.43.124": { - "peer_name": "router-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-server/tailscaled.sock whois --json 100.109.43.124", - "response": null - }, - "100.65.172.123": { - "peer_name": "router-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-server/tailscaled.sock whois --json 100.65.172.123", - "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 - } - }, "netmap": { - "SelfNode": { - "ID": 1440249486084758, - "StableID": "nXRbBtuHFC11CNTRL", - "Name": "tagged-server.tail78f774.ts.net.", - "User": 1440249486084758, - "Key": "nodekey:7d5c34b3e8082069d0a82838165c33f8e1b5eb32c6211c2d23d4fe8fb9ec4a19", - "DiscoKey": "discokey:aa5732e314175928eff41cc8f8a7b6edd4694b7d00e420a6573ecc11a88cb203", - "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:57971", "10.65.0.27:57971", "172.17.0.1:57971"], - "Hostinfo": { - "Hostname": "tagged-server", - "Services": [ - { "Proto": "peerapi4", "Port": 46499 }, - { "Proto": "peerapi6", "Port": 46499 }, - { "Proto": "peerapi-dns-proxy", "Port": 1 } - ] - }, - "Created": "2026-01-23T10:10:26.365653609Z", - "Tags": ["tag:server"], - "MachineAuthorized": true, - "CapMap": { - "https://tailscale.com/cap/file-sharing": null, - "https://tailscale.com/cap/is-owner": null, - "https://tailscale.com/cap/ssh": null, - "https://tailscale.com/cap/tailnet-lock": null, - "probe-udp-lifetime": null, - "ssh-behavior-v1": null, - "ssh-env-vars": null, - "store-appc-routes": null, - "tailnet-display-name": ["kratail2tid@passkey"] - }, - "ComputedName": "tagged-server", - "ComputedNameWithHost": "tagged-server" - }, - "AllCaps": [ - "tailnet-display-name", - "https://tailscale.com/cap/ssh", - "ssh-behavior-v1", - "probe-udp-lifetime", - "ssh-env-vars", - "https://tailscale.com/cap/file-sharing", - "https://tailscale.com/cap/is-owner", - "https://tailscale.com/cap/tailnet-lock", - "store-appc-routes" - ], - "NodeKey": "nodekey:7d5c34b3e8082069d0a82838165c33f8e1b5eb32c6211c2d23d4fe8fb9ec4a19", - "MachineKey": "mkey:7d9c55c88bb618638f3f049b95c797f64eb0259810146d2644fef3e53acfdf6b", "Peers": [], - "DNS": { - "Routes": { - "tail78f774.ts.net.": null, - "ts.net.": [{ "Addr": "199.247.155.53" }, { "Addr": "2620:111:8007::53" }] - }, - "Domains": ["tail78f774.ts.net"], - "Proxied": true, - "ExitNodeFilteredSet": [".ts.net", ".tailscale.net"] - }, - "PacketFilter": [], - "PacketFilterRules": null, - "SSHPolicy": { "rules": [] }, - "CollectServices": false, - "DERPMap": { - "Regions": { - "1": { - "RegionID": 1, - "RegionCode": "nyc", - "RegionName": "New York City", - "Latitude": 40.7128, - "Longitude": -74.006, - "Nodes": [ - { - "Name": "1h", - "RegionID": 1, - "HostName": "derp1h.tailscale.com", - "IPv4": "199.38.181.93", - "IPv6": "2607:f740:f::afd", - "CanPort80": true - }, - { - "Name": "1g", - "RegionID": 1, - "HostName": "derp1g.tailscale.com", - "IPv4": "209.177.145.120", - "IPv6": "2607:f740:f::3eb", - "CanPort80": true - }, - { - "Name": "1i", - "RegionID": 1, - "HostName": "derp1i.tailscale.com", - "IPv4": "199.38.181.103", - "IPv6": "2607:f740:f::e19", - "CanPort80": true - }, - { - "Name": "1f", - "RegionID": 1, - "HostName": "derp1f.tailscale.com", - "IPv4": "199.38.181.104", - "IPv6": "2607:f740:f::bc", - "CanPort80": true - } - ] - }, - "10": { - "RegionID": 10, - "RegionCode": "sea", - "RegionName": "Seattle", - "Latitude": 47.609722, - "Longitude": -122.333056, - "Nodes": [ - { - "Name": "10c", - "RegionID": 10, - "HostName": "derp10c.tailscale.com", - "IPv4": "192.73.240.121", - "IPv6": "2607:f740:14::40c", - "CanPort80": true - }, - { - "Name": "10d", - "RegionID": 10, - "HostName": "derp10d.tailscale.com", - "IPv4": "192.73.240.132", - "IPv6": "2607:f740:14::500", - "CanPort80": true - }, - { - "Name": "10b", - "RegionID": 10, - "HostName": "derp10b.tailscale.com", - "IPv4": "192.73.240.161", - "IPv6": "2607:f740:14::61c", - "CanPort80": true - } - ] - }, - "11": { - "RegionID": 11, - "RegionCode": "sao", - "RegionName": "São Paulo", - "Latitude": -23.55, - "Longitude": -46.633333, - "Nodes": [ - { - "Name": "11f", - "RegionID": 11, - "HostName": "derp11f.tailscale.com", - "IPv4": "172.237.61.197", - "IPv6": "2600:3c0d::2000:3bff:fe44:6166", - "CanPort80": true - }, - { - "Name": "11g", - "RegionID": 11, - "HostName": "derp11g.tailscale.com", - "IPv4": "172.237.61.190", - "IPv6": "2600:3c0d::2000:62ff:febe:2e67", - "CanPort80": true - }, - { - "Name": "11e", - "RegionID": 11, - "HostName": "derp11e.tailscale.com", - "IPv4": "172.237.61.194", - "IPv6": "2600:3c0d::2000:d2ff:fe43:1790", - "CanPort80": true - } - ] - }, - "12": { - "RegionID": 12, - "RegionCode": "ord", - "RegionName": "Chicago", - "Latitude": 41.881944, - "Longitude": -87.627778, - "Nodes": [ - { - "Name": "12e", - "RegionID": 12, - "HostName": "derp12e.tailscale.com", - "IPv4": "209.177.158.15", - "IPv6": "2607:f740:e::b17", - "CanPort80": true - }, - { - "Name": "12f", - "RegionID": 12, - "HostName": "derp12f.tailscale.com", - "IPv4": "199.38.182.118", - "IPv6": "2607:f740:e::4c8", - "CanPort80": true - }, - { - "Name": "12d", - "RegionID": 12, - "HostName": "derp12d.tailscale.com", - "IPv4": "209.177.158.246", - "IPv6": "2607:f740:e::811", - "CanPort80": true - } - ] - }, - "13": { - "RegionID": 13, - "RegionCode": "den", - "RegionName": "Denver", - "Latitude": 39.7392, - "Longitude": -104.9849, - "Nodes": [ - { - "Name": "13c", - "RegionID": 13, - "HostName": "derp13c.tailscale.com", - "IPv4": "192.73.242.28", - "IPv6": "2607:f740:16::5c", - "CanPort80": true - }, - { - "Name": "13d", - "RegionID": 13, - "HostName": "derp13d.tailscale.com", - "IPv4": "192.73.242.204", - "IPv6": "2607:f740:16::c23", - "CanPort80": true - }, - { - "Name": "13b", - "RegionID": 13, - "HostName": "derp13b.tailscale.com", - "IPv4": "192.73.242.187", - "IPv6": "2607:f740:16::640", - "CanPort80": true - } - ] - }, - "14": { - "RegionID": 14, - "RegionCode": "ams", - "RegionName": "Amsterdam", - "Latitude": 52.372778, - "Longitude": 4.893611, - "Nodes": [ - { - "Name": "14c", - "RegionID": 14, - "HostName": "derp14c.tailscale.com", - "IPv4": "176.58.93.147", - "IPv6": "2a00:dd80:3c::b09", - "CanPort80": true - }, - { - "Name": "14d", - "RegionID": 14, - "HostName": "derp14d.tailscale.com", - "IPv4": "176.58.93.154", - "IPv6": "2a00:dd80:3c::3d5", - "CanPort80": true - }, - { - "Name": "14b", - "RegionID": 14, - "HostName": "derp14b.tailscale.com", - "IPv4": "176.58.93.248", - "IPv6": "2a00:dd80:3c::807", - "CanPort80": true - } - ] - }, - "15": { - "RegionID": 15, - "RegionCode": "jnb", - "RegionName": "Johannesburg", - "Latitude": -26.204444, - "Longitude": 28.045556, - "Nodes": [ - { - "Name": "15c", - "RegionID": 15, - "HostName": "derp15c.tailscale.com", - "IPv4": "102.67.165.185", - "IPv6": "2c0f:edb0:0:10::b59", - "CanPort80": true - }, - { - "Name": "15d", - "RegionID": 15, - "HostName": "derp15d.tailscale.com", - "IPv4": "102.67.165.36", - "IPv6": "2c0f:edb0:0:10::599", - "CanPort80": true - }, - { - "Name": "15b", - "RegionID": 15, - "HostName": "derp15b.tailscale.com", - "IPv4": "102.67.165.90", - "IPv6": "2c0f:edb0:0:10::963", - "CanPort80": true - } - ] - }, - "16": { - "RegionID": 16, - "RegionCode": "mia", - "RegionName": "Miami", - "Latitude": 25.78, - "Longitude": -80.21, - "Nodes": [ - { - "Name": "16c", - "RegionID": 16, - "HostName": "derp16c.tailscale.com", - "IPv4": "192.73.243.229", - "IPv6": "2607:f740:17::4e4", - "CanPort80": true - }, - { - "Name": "16d", - "RegionID": 16, - "HostName": "derp16d.tailscale.com", - "IPv4": "192.73.243.141", - "IPv6": "2607:f740:17::475", - "CanPort80": true - }, - { - "Name": "16b", - "RegionID": 16, - "HostName": "derp16b.tailscale.com", - "IPv4": "192.73.243.135", - "IPv6": "2607:f740:17::476", - "CanPort80": true - } - ] - }, - "17": { - "RegionID": 17, - "RegionCode": "lax", - "RegionName": "Los Angeles", - "Latitude": 34.05, - "Longitude": -118.25, - "Nodes": [ - { - "Name": "17c", - "RegionID": 17, - "HostName": "derp17c.tailscale.com", - "IPv4": "208.111.40.12", - "IPv6": "2607:f740:c::10", - "CanPort80": true - }, - { - "Name": "17d", - "RegionID": 17, - "HostName": "derp17d.tailscale.com", - "IPv4": "208.111.40.216", - "IPv6": "2607:f740:c::e1b", - "CanPort80": true - }, - { - "Name": "17b", - "RegionID": 17, - "HostName": "derp17b.tailscale.com", - "IPv4": "192.73.244.245", - "IPv6": "2607:f740:c::646", - "CanPort80": true - } - ] - }, - "18": { - "RegionID": 18, - "RegionCode": "par", - "RegionName": "Paris", - "Latitude": 48.856667, - "Longitude": 2.352222, - "Nodes": [ - { - "Name": "18c", - "RegionID": 18, - "HostName": "derp18c.tailscale.com", - "IPv4": "176.58.90.207", - "IPv6": "2a00:dd80:3e::c19", - "CanPort80": true - }, - { - "Name": "18d", - "RegionID": 18, - "HostName": "derp18d.tailscale.com", - "IPv4": "176.58.90.104", - "IPv6": "2a00:dd80:3e::f2e", - "CanPort80": true - }, - { - "Name": "18b", - "RegionID": 18, - "HostName": "derp18b.tailscale.com", - "IPv4": "176.58.90.147", - "IPv6": "2a00:dd80:3e::363", - "CanPort80": true - } - ] - }, - "19": { - "RegionID": 19, - "RegionCode": "mad", - "RegionName": "Madrid", - "Latitude": 40.416944, - "Longitude": -3.703333, - "Nodes": [ - { - "Name": "19c", - "RegionID": 19, - "HostName": "derp19c.tailscale.com", - "IPv4": "45.159.97.61", - "IPv6": "2a00:dd80:14:10::20", - "CanPort80": true - }, - { - "Name": "19d", - "RegionID": 19, - "HostName": "derp19d.tailscale.com", - "IPv4": "45.159.97.233", - "IPv6": "2a00:dd80:14:10::34a", - "CanPort80": true - }, - { - "Name": "19b", - "RegionID": 19, - "HostName": "derp19b.tailscale.com", - "IPv4": "45.159.97.144", - "IPv6": "2a00:dd80:14:10::335", - "CanPort80": true - } - ] - }, - "2": { - "RegionID": 2, - "RegionCode": "sfo", - "RegionName": "San Francisco", - "Latitude": 37.7775, - "Longitude": -122.416389, - "Nodes": [ - { - "Name": "2e", - "RegionID": 2, - "HostName": "derp2e.tailscale.com", - "IPv4": "192.73.252.134", - "IPv6": "2607:f740:0:3f::44c", - "CanPort80": true - }, - { - "Name": "2f", - "RegionID": 2, - "HostName": "derp2f.tailscale.com", - "IPv4": "208.111.34.178", - "IPv6": "2607:f740:0:3f::f4", - "CanPort80": true - }, - { - "Name": "2d", - "RegionID": 2, - "HostName": "derp2d.tailscale.com", - "IPv4": "192.73.252.65", - "IPv6": "2607:f740:0:3f::287", - "CanPort80": true - } - ] - }, - "20": { - "RegionID": 20, - "RegionCode": "hkg", - "RegionName": "Hong Kong", - "Latitude": 22.3193, - "Longitude": 114.1694, - "Nodes": [ - { - "Name": "20c", - "RegionID": 20, - "HostName": "derp20c.tailscale.com", - "IPv4": "205.147.105.30", - "IPv6": "2403:2500:8000:1::5fb", - "CanPort80": true - }, - { - "Name": "20d", - "RegionID": 20, - "HostName": "derp20d.tailscale.com", - "IPv4": "205.147.105.78", - "IPv6": "2403:2500:8000:1::e9a", - "CanPort80": true - }, - { - "Name": "20b", - "RegionID": 20, - "HostName": "derp20b.tailscale.com", - "IPv4": "103.6.84.152", - "IPv6": "2403:2500:8000:1::ef6", - "CanPort80": true - } - ] - }, - "21": { - "RegionID": 21, - "RegionCode": "tor", - "RegionName": "Toronto", - "Latitude": 43.741667, - "Longitude": -79.373333, - "Nodes": [ - { - "Name": "21c", - "RegionID": 21, - "HostName": "derp21c.tailscale.com", - "IPv4": "162.248.221.215", - "IPv6": "2607:f740:50::f10", - "CanPort80": true - }, - { - "Name": "21d", - "RegionID": 21, - "HostName": "derp21d.tailscale.com", - "IPv4": "162.248.221.248", - "IPv6": "2607:f740:50::ca4", - "CanPort80": true - }, - { - "Name": "21b", - "RegionID": 21, - "HostName": "derp21b.tailscale.com", - "IPv4": "162.248.221.199", - "IPv6": "2607:f740:50::1d1", - "CanPort80": true - } - ] - }, - "22": { - "RegionID": 22, - "RegionCode": "waw", - "RegionName": "Warsaw", - "Latitude": 52.23, - "Longitude": 21.011111, - "Nodes": [ - { - "Name": "22c", - "RegionID": 22, - "HostName": "derp22c.tailscale.com", - "IPv4": "45.159.98.253", - "IPv6": "2a00:dd80:40:100::3f", - "CanPort80": true - }, - { - "Name": "22d", - "RegionID": 22, - "HostName": "derp22d.tailscale.com", - "IPv4": "45.159.98.145", - "IPv6": "2a00:dd80:40:100::211", - "CanPort80": true - }, - { - "Name": "22b", - "RegionID": 22, - "HostName": "derp22b.tailscale.com", - "IPv4": "45.159.98.196", - "IPv6": "2a00:dd80:40:100::316", - "CanPort80": true - } - ] - }, - "23": { - "RegionID": 23, - "RegionCode": "dbi", - "RegionName": "Dubai", - "Latitude": 25.263056, - "Longitude": 55.297222, - "Nodes": [ - { - "Name": "23c", - "RegionID": 23, - "HostName": "derp23c.tailscale.com", - "IPv4": "185.34.3.207", - "IPv6": "2a00:dd80:3f:100::a50", - "CanPort80": true - }, - { - "Name": "23d", - "RegionID": 23, - "HostName": "derp23d.tailscale.com", - "IPv4": "185.34.3.75", - "IPv6": "2a00:dd80:3f:100::97e", - "CanPort80": true - }, - { - "Name": "23b", - "RegionID": 23, - "HostName": "derp23b.tailscale.com", - "IPv4": "185.34.3.232", - "IPv6": "2a00:dd80:3f:100::76f", - "CanPort80": true - } - ] - }, - "24": { - "RegionID": 24, - "RegionCode": "hnl", - "RegionName": "Honolulu", - "Latitude": 21.306944, - "Longitude": -157.858333, - "Nodes": [ - { - "Name": "24c", - "RegionID": 24, - "HostName": "derp24c.tailscale.com", - "IPv4": "208.83.233.233", - "IPv6": "2001:19f0:c000:c591:5400:04ff:fe26:2c5f", - "CanPort80": true - }, - { - "Name": "24d", - "RegionID": 24, - "HostName": "derp24d.tailscale.com", - "IPv4": "208.72.155.133", - "IPv6": "2001:19f0:c000:c564:5400:04ff:fe26:2ba8", - "CanPort80": true - }, - { - "Name": "24b", - "RegionID": 24, - "HostName": "derp24b.tailscale.com", - "IPv4": "208.83.234.151", - "IPv6": "2001:19f0:c000:c586:5400:04ff:fe26:2ba6", - "CanPort80": true - } - ] - }, - "25": { - "RegionID": 25, - "RegionCode": "nai", - "RegionName": "Nairobi", - "Latitude": -1.286389, - "Longitude": 36.817222, - "Nodes": [ - { - "Name": "25c", - "RegionID": 25, - "HostName": "derp25c.tailscale.com", - "IPv4": "102.67.167.37", - "IPv6": "2c0f:edb0:2000:1::2c7", - "CanPort80": true - }, - { - "Name": "25d", - "RegionID": 25, - "HostName": "derp25d.tailscale.com", - "IPv4": "102.67.167.188", - "IPv6": "2c0f:edb0:2000:1::188", - "CanPort80": true - }, - { - "Name": "25b", - "RegionID": 25, - "HostName": "derp25b.tailscale.com", - "IPv4": "102.67.167.245", - "IPv6": "2c0f:edb0:2000:1::2e9", - "CanPort80": true - } - ] - }, - "26": { - "RegionID": 26, - "RegionCode": "nue", - "RegionName": "Nuremberg", - "Latitude": 49.453889, - "Longitude": 11.0775, - "Nodes": [ - { - "Name": "26c", - "RegionID": 26, - "HostName": "derp26c.tailscale.com", - "IPv4": "49.12.193.137", - "IPv6": "2a01:4f8:1c1c:5c70::1", - "CanPort80": true - }, - { - "Name": "26d", - "RegionID": 26, - "HostName": "derp26d.tailscale.com", - "IPv4": "49.13.204.141", - "IPv6": "2a01:4f8:1c0c:7d06::1", - "CanPort80": true - }, - { - "Name": "26b", - "RegionID": 26, - "HostName": "derp26b.tailscale.com", - "IPv4": "167.235.72.200", - "IPv6": "2a01:4f8:1c1c:47b6::1", - "CanPort80": true - } - ] - }, - "27": { - "RegionID": 27, - "RegionCode": "iad", - "RegionName": "Ashburn", - "Latitude": 39.03, - "Longitude": -77.471111, - "Nodes": [ - { - "Name": "27d", - "RegionID": 27, - "HostName": "derp27d.tailscale.com", - "IPv4": "178.156.152.106", - "IPv6": "2a01:4ff:f0:3c8e::1", - "CanPort80": true - }, - { - "Name": "27c", - "RegionID": 27, - "HostName": "derp27c.tailscale.com", - "IPv4": "178.156.152.91", - "IPv6": "2a01:4ff:f0:3913::1", - "CanPort80": true - }, - { - "Name": "27e", - "RegionID": 27, - "HostName": "derp27e.tailscale.com", - "IPv4": "178.156.134.232", - "IPv6": "2a01:4ff:f0:28d4::1", - "CanPort80": true - }, - { - "Name": "27b", - "RegionID": 27, - "HostName": "derp27b.tailscale.com", - "IPv4": "5.161.218.233", - "IPv6": "2a01:4ff:f0:3db9::1", - "CanPort80": true - } - ] - }, - "28": { - "RegionID": 28, - "RegionCode": "hel", - "RegionName": "Helsinki", - "Latitude": 60.170833, - "Longitude": 24.9375, - "Nodes": [ - { - "Name": "28c", - "RegionID": 28, - "HostName": "derp28c.tailscale.com", - "IPv4": "95.217.2.165", - "IPv6": "2a01:4f9:c012:cd74::1", - "CanPort80": true - }, - { - "Name": "28d", - "RegionID": 28, - "HostName": "derp28d.tailscale.com", - "IPv4": "157.180.28.32", - "IPv6": "2a01:4f9:c012:2e5b::1", - "CanPort80": true - }, - { - "Name": "28b", - "RegionID": 28, - "HostName": "derp28b.tailscale.com", - "IPv4": "65.109.143.62", - "IPv6": "2a01:4f9:c012:d55c::1", - "CanPort80": true - } - ] - }, - "3": { - "RegionID": 3, - "RegionCode": "sin", - "RegionName": "Singapore", - "Latitude": 1.3521, - "Longitude": 103.8198, - "Nodes": [ - { - "Name": "3g", - "RegionID": 3, - "HostName": "derp3g.tailscale.com", - "IPv4": "172.237.72.79", - "IPv6": "2600:3c15::2000:adff:fe08:6fab", - "CanPort80": true - }, - { - "Name": "3f", - "RegionID": 3, - "HostName": "derp3f.tailscale.com", - "IPv4": "172.237.72.8", - "IPv6": "2600:3c15::2000:53ff:fe48:a668", - "CanPort80": true - }, - { - "Name": "3h", - "RegionID": 3, - "HostName": "derp3h.tailscale.com", - "IPv4": "172.237.66.30", - "IPv6": "2600:3c15::2000:3dff:fe44:50aa", - "CanPort80": true - }, - { - "Name": "3e", - "RegionID": 3, - "HostName": "derp3e.tailscale.com", - "IPv4": "172.237.72.43", - "IPv6": "2600:3c15::2000:6cff:fee4:d799", - "CanPort80": true - } - ] - }, - "4": { - "RegionID": 4, - "RegionCode": "fra", - "RegionName": "Frankfurt", - "Latitude": 50.1109, - "Longitude": 8.6821, - "Nodes": [ - { - "Name": "4h", - "RegionID": 4, - "HostName": "derp4h.tailscale.com", - "IPv4": "185.40.234.77", - "IPv6": "2a00:dd80:20::bcf", - "CanPort80": true - }, - { - "Name": "4g", - "RegionID": 4, - "HostName": "derp4g.tailscale.com", - "IPv4": "185.40.234.113", - "IPv6": "2a00:dd80:20::8f", - "CanPort80": true - }, - { - "Name": "4i", - "RegionID": 4, - "HostName": "derp4i.tailscale.com", - "IPv4": "185.40.234.53", - "IPv6": "2a00:dd80:20::8a6", - "CanPort80": true - }, - { - "Name": "4f", - "RegionID": 4, - "HostName": "derp4f.tailscale.com", - "IPv4": "185.40.234.219", - "IPv6": "2a00:dd80:20::a25", - "CanPort80": true - } - ] - }, - "5": { - "RegionID": 5, - "RegionCode": "syd", - "RegionName": "Sydney", - "Latitude": -33.867778, - "Longitude": 151.21, - "Nodes": [ - { - "Name": "5f", - "RegionID": 5, - "HostName": "derp5f.tailscale.com", - "IPv4": "172.105.166.103", - "IPv6": "2400:8907::2000:ccff:fe1f:80da", - "CanPort80": true - }, - { - "Name": "5g", - "RegionID": 5, - "HostName": "derp5g.tailscale.com", - "IPv4": "172.105.169.57", - "IPv6": "2400:8907::2000:2fff:fea7:57f4", - "CanPort80": true - }, - { - "Name": "5e", - "RegionID": 5, - "HostName": "derp5e.tailscale.com", - "IPv4": "172.105.179.230", - "IPv6": "2400:8907::2000:ceff:fe8d:4f4e", - "CanPort80": true - } - ] - }, - "6": { - "RegionID": 6, - "RegionCode": "blr", - "RegionName": "Bengaluru", - "Latitude": 12.9716, - "Longitude": 77.5946, - "Nodes": [ - { - "Name": "6a", - "RegionID": 6, - "HostName": "derp6.tailscale.com", - "IPv4": "68.183.90.120", - "IPv6": "2400:6180:100:d0::982:d001", - "CanPort80": true - } - ] - }, - "7": { - "RegionID": 7, - "RegionCode": "tok", - "RegionName": "Tokyo", - "Latitude": 35.6764, - "Longitude": 139.65, - "Nodes": [ - { - "Name": "7g", - "RegionID": 7, - "HostName": "derp7g.tailscale.com", - "IPv4": "172.238.6.179", - "IPv6": "2600:3c18::2000:3fff:fe80:3ebd", - "CanPort80": true - }, - { - "Name": "7f", - "RegionID": 7, - "HostName": "derp7f.tailscale.com", - "IPv4": "172.238.6.34", - "IPv6": "2600:3c18::2000:acff:fe8e:3ed5", - "CanPort80": true - }, - { - "Name": "7h", - "RegionID": 7, - "HostName": "derp7h.tailscale.com", - "IPv4": "172.237.28.183", - "IPv6": "2600:3c18::2000:b1ff:fea9:4560", - "CanPort80": true - }, - { - "Name": "7e", - "RegionID": 7, - "HostName": "derp7e.tailscale.com", - "IPv4": "172.238.6.180", - "IPv6": "2600:3c18::2000:60ff:fe0f:6e83", - "STUNOnly": true, - "CanPort80": true - } - ] - }, - "8": { - "RegionID": 8, - "RegionCode": "lhr", - "RegionName": "London", - "Latitude": 51.5072, - "Longitude": 0.1276, - "Nodes": [ - { - "Name": "8f", - "RegionID": 8, - "HostName": "derp8f.tailscale.com", - "IPv4": "176.58.88.183", - "IPv6": "2a00:dd80:3a::dfa", - "CanPort80": true - }, - { - "Name": "8g", - "RegionID": 8, - "HostName": "derp8g.tailscale.com", - "IPv4": "176.58.92.254", - "IPv6": "2a00:dd80:3a::ed", - "CanPort80": true - }, - { - "Name": "8e", - "RegionID": 8, - "HostName": "derp8e.tailscale.com", - "IPv4": "176.58.92.144", - "IPv6": "2a00:dd80:3a::b33", - "CanPort80": true - } - ] - }, - "9": { - "RegionID": 9, - "RegionCode": "dfw", - "RegionName": "Dallas", - "Latitude": 32.779167, - "Longitude": -96.808889, - "Nodes": [ - { - "Name": "9e", - "RegionID": 9, - "HostName": "derp9e.tailscale.com", - "IPv4": "192.73.248.83", - "IPv6": "2607:f740:100::359", - "CanPort80": true - }, - { - "Name": "9f", - "RegionID": 9, - "HostName": "derp9f.tailscale.com", - "IPv4": "209.177.156.197", - "IPv6": "2607:f740:100::cad", - "CanPort80": true - }, - { - "Name": "9d", - "RegionID": 9, - "HostName": "derp9d.tailscale.com", - "IPv4": "209.177.156.94", - "IPv6": "2607:f740:100::c05", - "CanPort80": true - } - ] - } - } - }, - "DisplayMessages": null, - "TKAEnabled": false, - "TKAHead": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", - "Domain": "kratail2tid@passkey", - "DomainAuditLogID": "", - "UserProfiles": { - "1440249486084758": { - "ID": 1440249486084758, - "LoginName": "tagged-server.tail78f774.ts.net", - "DisplayName": "tagged-server" - } - } + "PacketFilterRules": 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.124.195.93": { - "peer_name": "exit-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-kris/tailscaled.sock whois --json 100.124.195.93", - "response": null - }, - "100.116.18.24": { - "peer_name": "exit-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-kris/tailscaled.sock whois --json 100.116.18.24", - "response": null - }, - "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.107.162.14": { - "peer_name": "group-a-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-kris/tailscaled.sock whois --json 100.107.162.14", - "response": null - }, - "100.77.135.18": { - "peer_name": "group-b-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-kris/tailscaled.sock whois --json 100.77.135.18", - "response": null - }, - "100.105.127.107": { - "peer_name": "multi-exit-router", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-kris/tailscaled.sock whois --json 100.105.127.107", - "response": null - }, - "100.109.43.124": { - "peer_name": "router-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-kris/tailscaled.sock whois --json 100.109.43.124", - "response": null - }, - "100.65.172.123": { - "peer_name": "router-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-kris/tailscaled.sock whois --json 100.65.172.123", - "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 - } - }, "netmap": { - "SelfNode": { - "ID": 7728836216590060, - "StableID": "nf4dJTRQM321CNTRL", - "Name": "user-kris.tail78f774.ts.net.", - "User": 4538565228176803, - "Key": "nodekey:40d0f8f49fd519e4a4a2b7d278dcc8863254d4fb8b0219f1d1304cdd172e795f", - "KeyExpiry": "2026-08-19T14:09:34Z", - "DiscoKey": "discokey:60de987544859962048376b0950731bfa8017a7fc7df694ef376d4bb42eb9871", - "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:59717", "10.65.0.27:59717", "172.17.0.1:59717"], - "Hostinfo": { - "Hostname": "user-kris", - "Services": [ - { "Proto": "peerapi4", "Port": 40159 }, - { "Proto": "peerapi6", "Port": 40159 }, - { "Proto": "peerapi-dns-proxy", "Port": 1 } - ] - }, - "Created": "2026-02-20T14:09:34.803901523Z", - "MachineAuthorized": true, - "CapMap": { - "https://tailscale.com/cap/file-sharing": null, - "https://tailscale.com/cap/is-admin": null, - "https://tailscale.com/cap/ssh": null, - "https://tailscale.com/cap/tailnet-lock": null, - "probe-udp-lifetime": null, - "ssh-behavior-v1": null, - "ssh-env-vars": null, - "store-appc-routes": null, - "tailnet-display-name": ["kratail2tid@passkey"] - }, - "ComputedName": "user-kris", - "ComputedNameWithHost": "user-kris" - }, - "AllCaps": [ - "tailnet-display-name", - "https://tailscale.com/cap/tailnet-lock", - "ssh-behavior-v1", - "probe-udp-lifetime", - "ssh-env-vars", - "https://tailscale.com/cap/file-sharing", - "https://tailscale.com/cap/ssh", - "https://tailscale.com/cap/is-admin", - "store-appc-routes" - ], - "NodeKey": "nodekey:40d0f8f49fd519e4a4a2b7d278dcc8863254d4fb8b0219f1d1304cdd172e795f", - "MachineKey": "mkey:ff16066d907c58407972ee4a05a30386bd21bc0b420d8f9290eb70b95b3e1457", "Peers": [], - "DNS": { - "Routes": { - "tail78f774.ts.net.": null, - "ts.net.": [{ "Addr": "199.247.155.53" }, { "Addr": "2620:111:8007::53" }] - }, - "Domains": ["tail78f774.ts.net"], - "Proxied": true, - "ExitNodeFilteredSet": [".ts.net", ".tailscale.net"] - }, - "PacketFilter": [], - "PacketFilterRules": null, - "SSHPolicy": { "rules": [] }, - "CollectServices": false, - "DERPMap": { - "Regions": { - "1": { - "RegionID": 1, - "RegionCode": "nyc", - "RegionName": "New York City", - "Latitude": 40.7128, - "Longitude": -74.006, - "Nodes": [ - { - "Name": "1h", - "RegionID": 1, - "HostName": "derp1h.tailscale.com", - "IPv4": "199.38.181.93", - "IPv6": "2607:f740:f::afd", - "CanPort80": true - }, - { - "Name": "1g", - "RegionID": 1, - "HostName": "derp1g.tailscale.com", - "IPv4": "209.177.145.120", - "IPv6": "2607:f740:f::3eb", - "CanPort80": true - }, - { - "Name": "1i", - "RegionID": 1, - "HostName": "derp1i.tailscale.com", - "IPv4": "199.38.181.103", - "IPv6": "2607:f740:f::e19", - "CanPort80": true - }, - { - "Name": "1f", - "RegionID": 1, - "HostName": "derp1f.tailscale.com", - "IPv4": "199.38.181.104", - "IPv6": "2607:f740:f::bc", - "CanPort80": true - } - ] - }, - "10": { - "RegionID": 10, - "RegionCode": "sea", - "RegionName": "Seattle", - "Latitude": 47.609722, - "Longitude": -122.333056, - "Nodes": [ - { - "Name": "10c", - "RegionID": 10, - "HostName": "derp10c.tailscale.com", - "IPv4": "192.73.240.121", - "IPv6": "2607:f740:14::40c", - "CanPort80": true - }, - { - "Name": "10d", - "RegionID": 10, - "HostName": "derp10d.tailscale.com", - "IPv4": "192.73.240.132", - "IPv6": "2607:f740:14::500", - "CanPort80": true - }, - { - "Name": "10b", - "RegionID": 10, - "HostName": "derp10b.tailscale.com", - "IPv4": "192.73.240.161", - "IPv6": "2607:f740:14::61c", - "CanPort80": true - } - ] - }, - "11": { - "RegionID": 11, - "RegionCode": "sao", - "RegionName": "São Paulo", - "Latitude": -23.55, - "Longitude": -46.633333, - "Nodes": [ - { - "Name": "11f", - "RegionID": 11, - "HostName": "derp11f.tailscale.com", - "IPv4": "172.237.61.197", - "IPv6": "2600:3c0d::2000:3bff:fe44:6166", - "CanPort80": true - }, - { - "Name": "11g", - "RegionID": 11, - "HostName": "derp11g.tailscale.com", - "IPv4": "172.237.61.190", - "IPv6": "2600:3c0d::2000:62ff:febe:2e67", - "CanPort80": true - }, - { - "Name": "11e", - "RegionID": 11, - "HostName": "derp11e.tailscale.com", - "IPv4": "172.237.61.194", - "IPv6": "2600:3c0d::2000:d2ff:fe43:1790", - "CanPort80": true - } - ] - }, - "12": { - "RegionID": 12, - "RegionCode": "ord", - "RegionName": "Chicago", - "Latitude": 41.881944, - "Longitude": -87.627778, - "Nodes": [ - { - "Name": "12e", - "RegionID": 12, - "HostName": "derp12e.tailscale.com", - "IPv4": "209.177.158.15", - "IPv6": "2607:f740:e::b17", - "CanPort80": true - }, - { - "Name": "12f", - "RegionID": 12, - "HostName": "derp12f.tailscale.com", - "IPv4": "199.38.182.118", - "IPv6": "2607:f740:e::4c8", - "CanPort80": true - }, - { - "Name": "12d", - "RegionID": 12, - "HostName": "derp12d.tailscale.com", - "IPv4": "209.177.158.246", - "IPv6": "2607:f740:e::811", - "CanPort80": true - } - ] - }, - "13": { - "RegionID": 13, - "RegionCode": "den", - "RegionName": "Denver", - "Latitude": 39.7392, - "Longitude": -104.9849, - "Nodes": [ - { - "Name": "13c", - "RegionID": 13, - "HostName": "derp13c.tailscale.com", - "IPv4": "192.73.242.28", - "IPv6": "2607:f740:16::5c", - "CanPort80": true - }, - { - "Name": "13d", - "RegionID": 13, - "HostName": "derp13d.tailscale.com", - "IPv4": "192.73.242.204", - "IPv6": "2607:f740:16::c23", - "CanPort80": true - }, - { - "Name": "13b", - "RegionID": 13, - "HostName": "derp13b.tailscale.com", - "IPv4": "192.73.242.187", - "IPv6": "2607:f740:16::640", - "CanPort80": true - } - ] - }, - "14": { - "RegionID": 14, - "RegionCode": "ams", - "RegionName": "Amsterdam", - "Latitude": 52.372778, - "Longitude": 4.893611, - "Nodes": [ - { - "Name": "14c", - "RegionID": 14, - "HostName": "derp14c.tailscale.com", - "IPv4": "176.58.93.147", - "IPv6": "2a00:dd80:3c::b09", - "CanPort80": true - }, - { - "Name": "14d", - "RegionID": 14, - "HostName": "derp14d.tailscale.com", - "IPv4": "176.58.93.154", - "IPv6": "2a00:dd80:3c::3d5", - "CanPort80": true - }, - { - "Name": "14b", - "RegionID": 14, - "HostName": "derp14b.tailscale.com", - "IPv4": "176.58.93.248", - "IPv6": "2a00:dd80:3c::807", - "CanPort80": true - } - ] - }, - "15": { - "RegionID": 15, - "RegionCode": "jnb", - "RegionName": "Johannesburg", - "Latitude": -26.204444, - "Longitude": 28.045556, - "Nodes": [ - { - "Name": "15c", - "RegionID": 15, - "HostName": "derp15c.tailscale.com", - "IPv4": "102.67.165.185", - "IPv6": "2c0f:edb0:0:10::b59", - "CanPort80": true - }, - { - "Name": "15d", - "RegionID": 15, - "HostName": "derp15d.tailscale.com", - "IPv4": "102.67.165.36", - "IPv6": "2c0f:edb0:0:10::599", - "CanPort80": true - }, - { - "Name": "15b", - "RegionID": 15, - "HostName": "derp15b.tailscale.com", - "IPv4": "102.67.165.90", - "IPv6": "2c0f:edb0:0:10::963", - "CanPort80": true - } - ] - }, - "16": { - "RegionID": 16, - "RegionCode": "mia", - "RegionName": "Miami", - "Latitude": 25.78, - "Longitude": -80.21, - "Nodes": [ - { - "Name": "16c", - "RegionID": 16, - "HostName": "derp16c.tailscale.com", - "IPv4": "192.73.243.229", - "IPv6": "2607:f740:17::4e4", - "CanPort80": true - }, - { - "Name": "16d", - "RegionID": 16, - "HostName": "derp16d.tailscale.com", - "IPv4": "192.73.243.141", - "IPv6": "2607:f740:17::475", - "CanPort80": true - }, - { - "Name": "16b", - "RegionID": 16, - "HostName": "derp16b.tailscale.com", - "IPv4": "192.73.243.135", - "IPv6": "2607:f740:17::476", - "CanPort80": true - } - ] - }, - "17": { - "RegionID": 17, - "RegionCode": "lax", - "RegionName": "Los Angeles", - "Latitude": 34.05, - "Longitude": -118.25, - "Nodes": [ - { - "Name": "17c", - "RegionID": 17, - "HostName": "derp17c.tailscale.com", - "IPv4": "208.111.40.12", - "IPv6": "2607:f740:c::10", - "CanPort80": true - }, - { - "Name": "17d", - "RegionID": 17, - "HostName": "derp17d.tailscale.com", - "IPv4": "208.111.40.216", - "IPv6": "2607:f740:c::e1b", - "CanPort80": true - }, - { - "Name": "17b", - "RegionID": 17, - "HostName": "derp17b.tailscale.com", - "IPv4": "192.73.244.245", - "IPv6": "2607:f740:c::646", - "CanPort80": true - } - ] - }, - "18": { - "RegionID": 18, - "RegionCode": "par", - "RegionName": "Paris", - "Latitude": 48.856667, - "Longitude": 2.352222, - "Nodes": [ - { - "Name": "18c", - "RegionID": 18, - "HostName": "derp18c.tailscale.com", - "IPv4": "176.58.90.207", - "IPv6": "2a00:dd80:3e::c19", - "CanPort80": true - }, - { - "Name": "18d", - "RegionID": 18, - "HostName": "derp18d.tailscale.com", - "IPv4": "176.58.90.104", - "IPv6": "2a00:dd80:3e::f2e", - "CanPort80": true - }, - { - "Name": "18b", - "RegionID": 18, - "HostName": "derp18b.tailscale.com", - "IPv4": "176.58.90.147", - "IPv6": "2a00:dd80:3e::363", - "CanPort80": true - } - ] - }, - "19": { - "RegionID": 19, - "RegionCode": "mad", - "RegionName": "Madrid", - "Latitude": 40.416944, - "Longitude": -3.703333, - "Nodes": [ - { - "Name": "19c", - "RegionID": 19, - "HostName": "derp19c.tailscale.com", - "IPv4": "45.159.97.61", - "IPv6": "2a00:dd80:14:10::20", - "CanPort80": true - }, - { - "Name": "19d", - "RegionID": 19, - "HostName": "derp19d.tailscale.com", - "IPv4": "45.159.97.233", - "IPv6": "2a00:dd80:14:10::34a", - "CanPort80": true - }, - { - "Name": "19b", - "RegionID": 19, - "HostName": "derp19b.tailscale.com", - "IPv4": "45.159.97.144", - "IPv6": "2a00:dd80:14:10::335", - "CanPort80": true - } - ] - }, - "2": { - "RegionID": 2, - "RegionCode": "sfo", - "RegionName": "San Francisco", - "Latitude": 37.7775, - "Longitude": -122.416389, - "Nodes": [ - { - "Name": "2e", - "RegionID": 2, - "HostName": "derp2e.tailscale.com", - "IPv4": "192.73.252.134", - "IPv6": "2607:f740:0:3f::44c", - "CanPort80": true - }, - { - "Name": "2f", - "RegionID": 2, - "HostName": "derp2f.tailscale.com", - "IPv4": "208.111.34.178", - "IPv6": "2607:f740:0:3f::f4", - "CanPort80": true - }, - { - "Name": "2d", - "RegionID": 2, - "HostName": "derp2d.tailscale.com", - "IPv4": "192.73.252.65", - "IPv6": "2607:f740:0:3f::287", - "CanPort80": true - } - ] - }, - "20": { - "RegionID": 20, - "RegionCode": "hkg", - "RegionName": "Hong Kong", - "Latitude": 22.3193, - "Longitude": 114.1694, - "Nodes": [ - { - "Name": "20c", - "RegionID": 20, - "HostName": "derp20c.tailscale.com", - "IPv4": "205.147.105.30", - "IPv6": "2403:2500:8000:1::5fb", - "CanPort80": true - }, - { - "Name": "20d", - "RegionID": 20, - "HostName": "derp20d.tailscale.com", - "IPv4": "205.147.105.78", - "IPv6": "2403:2500:8000:1::e9a", - "CanPort80": true - }, - { - "Name": "20b", - "RegionID": 20, - "HostName": "derp20b.tailscale.com", - "IPv4": "103.6.84.152", - "IPv6": "2403:2500:8000:1::ef6", - "CanPort80": true - } - ] - }, - "21": { - "RegionID": 21, - "RegionCode": "tor", - "RegionName": "Toronto", - "Latitude": 43.741667, - "Longitude": -79.373333, - "Nodes": [ - { - "Name": "21c", - "RegionID": 21, - "HostName": "derp21c.tailscale.com", - "IPv4": "162.248.221.215", - "IPv6": "2607:f740:50::f10", - "CanPort80": true - }, - { - "Name": "21d", - "RegionID": 21, - "HostName": "derp21d.tailscale.com", - "IPv4": "162.248.221.248", - "IPv6": "2607:f740:50::ca4", - "CanPort80": true - }, - { - "Name": "21b", - "RegionID": 21, - "HostName": "derp21b.tailscale.com", - "IPv4": "162.248.221.199", - "IPv6": "2607:f740:50::1d1", - "CanPort80": true - } - ] - }, - "22": { - "RegionID": 22, - "RegionCode": "waw", - "RegionName": "Warsaw", - "Latitude": 52.23, - "Longitude": 21.011111, - "Nodes": [ - { - "Name": "22c", - "RegionID": 22, - "HostName": "derp22c.tailscale.com", - "IPv4": "45.159.98.253", - "IPv6": "2a00:dd80:40:100::3f", - "CanPort80": true - }, - { - "Name": "22d", - "RegionID": 22, - "HostName": "derp22d.tailscale.com", - "IPv4": "45.159.98.145", - "IPv6": "2a00:dd80:40:100::211", - "CanPort80": true - }, - { - "Name": "22b", - "RegionID": 22, - "HostName": "derp22b.tailscale.com", - "IPv4": "45.159.98.196", - "IPv6": "2a00:dd80:40:100::316", - "CanPort80": true - } - ] - }, - "23": { - "RegionID": 23, - "RegionCode": "dbi", - "RegionName": "Dubai", - "Latitude": 25.263056, - "Longitude": 55.297222, - "Nodes": [ - { - "Name": "23c", - "RegionID": 23, - "HostName": "derp23c.tailscale.com", - "IPv4": "185.34.3.207", - "IPv6": "2a00:dd80:3f:100::a50", - "CanPort80": true - }, - { - "Name": "23d", - "RegionID": 23, - "HostName": "derp23d.tailscale.com", - "IPv4": "185.34.3.75", - "IPv6": "2a00:dd80:3f:100::97e", - "CanPort80": true - }, - { - "Name": "23b", - "RegionID": 23, - "HostName": "derp23b.tailscale.com", - "IPv4": "185.34.3.232", - "IPv6": "2a00:dd80:3f:100::76f", - "CanPort80": true - } - ] - }, - "24": { - "RegionID": 24, - "RegionCode": "hnl", - "RegionName": "Honolulu", - "Latitude": 21.306944, - "Longitude": -157.858333, - "Nodes": [ - { - "Name": "24c", - "RegionID": 24, - "HostName": "derp24c.tailscale.com", - "IPv4": "208.83.233.233", - "IPv6": "2001:19f0:c000:c591:5400:04ff:fe26:2c5f", - "CanPort80": true - }, - { - "Name": "24d", - "RegionID": 24, - "HostName": "derp24d.tailscale.com", - "IPv4": "208.72.155.133", - "IPv6": "2001:19f0:c000:c564:5400:04ff:fe26:2ba8", - "CanPort80": true - }, - { - "Name": "24b", - "RegionID": 24, - "HostName": "derp24b.tailscale.com", - "IPv4": "208.83.234.151", - "IPv6": "2001:19f0:c000:c586:5400:04ff:fe26:2ba6", - "CanPort80": true - } - ] - }, - "25": { - "RegionID": 25, - "RegionCode": "nai", - "RegionName": "Nairobi", - "Latitude": -1.286389, - "Longitude": 36.817222, - "Nodes": [ - { - "Name": "25c", - "RegionID": 25, - "HostName": "derp25c.tailscale.com", - "IPv4": "102.67.167.37", - "IPv6": "2c0f:edb0:2000:1::2c7", - "CanPort80": true - }, - { - "Name": "25d", - "RegionID": 25, - "HostName": "derp25d.tailscale.com", - "IPv4": "102.67.167.188", - "IPv6": "2c0f:edb0:2000:1::188", - "CanPort80": true - }, - { - "Name": "25b", - "RegionID": 25, - "HostName": "derp25b.tailscale.com", - "IPv4": "102.67.167.245", - "IPv6": "2c0f:edb0:2000:1::2e9", - "CanPort80": true - } - ] - }, - "26": { - "RegionID": 26, - "RegionCode": "nue", - "RegionName": "Nuremberg", - "Latitude": 49.453889, - "Longitude": 11.0775, - "Nodes": [ - { - "Name": "26c", - "RegionID": 26, - "HostName": "derp26c.tailscale.com", - "IPv4": "49.12.193.137", - "IPv6": "2a01:4f8:1c1c:5c70::1", - "CanPort80": true - }, - { - "Name": "26d", - "RegionID": 26, - "HostName": "derp26d.tailscale.com", - "IPv4": "49.13.204.141", - "IPv6": "2a01:4f8:1c0c:7d06::1", - "CanPort80": true - }, - { - "Name": "26b", - "RegionID": 26, - "HostName": "derp26b.tailscale.com", - "IPv4": "167.235.72.200", - "IPv6": "2a01:4f8:1c1c:47b6::1", - "CanPort80": true - } - ] - }, - "27": { - "RegionID": 27, - "RegionCode": "iad", - "RegionName": "Ashburn", - "Latitude": 39.03, - "Longitude": -77.471111, - "Nodes": [ - { - "Name": "27d", - "RegionID": 27, - "HostName": "derp27d.tailscale.com", - "IPv4": "178.156.152.106", - "IPv6": "2a01:4ff:f0:3c8e::1", - "CanPort80": true - }, - { - "Name": "27c", - "RegionID": 27, - "HostName": "derp27c.tailscale.com", - "IPv4": "178.156.152.91", - "IPv6": "2a01:4ff:f0:3913::1", - "CanPort80": true - }, - { - "Name": "27e", - "RegionID": 27, - "HostName": "derp27e.tailscale.com", - "IPv4": "178.156.134.232", - "IPv6": "2a01:4ff:f0:28d4::1", - "CanPort80": true - }, - { - "Name": "27b", - "RegionID": 27, - "HostName": "derp27b.tailscale.com", - "IPv4": "5.161.218.233", - "IPv6": "2a01:4ff:f0:3db9::1", - "CanPort80": true - } - ] - }, - "28": { - "RegionID": 28, - "RegionCode": "hel", - "RegionName": "Helsinki", - "Latitude": 60.170833, - "Longitude": 24.9375, - "Nodes": [ - { - "Name": "28c", - "RegionID": 28, - "HostName": "derp28c.tailscale.com", - "IPv4": "95.217.2.165", - "IPv6": "2a01:4f9:c012:cd74::1", - "CanPort80": true - }, - { - "Name": "28d", - "RegionID": 28, - "HostName": "derp28d.tailscale.com", - "IPv4": "157.180.28.32", - "IPv6": "2a01:4f9:c012:2e5b::1", - "CanPort80": true - }, - { - "Name": "28b", - "RegionID": 28, - "HostName": "derp28b.tailscale.com", - "IPv4": "65.109.143.62", - "IPv6": "2a01:4f9:c012:d55c::1", - "CanPort80": true - } - ] - }, - "3": { - "RegionID": 3, - "RegionCode": "sin", - "RegionName": "Singapore", - "Latitude": 1.3521, - "Longitude": 103.8198, - "Nodes": [ - { - "Name": "3g", - "RegionID": 3, - "HostName": "derp3g.tailscale.com", - "IPv4": "172.237.72.79", - "IPv6": "2600:3c15::2000:adff:fe08:6fab", - "CanPort80": true - }, - { - "Name": "3f", - "RegionID": 3, - "HostName": "derp3f.tailscale.com", - "IPv4": "172.237.72.8", - "IPv6": "2600:3c15::2000:53ff:fe48:a668", - "CanPort80": true - }, - { - "Name": "3h", - "RegionID": 3, - "HostName": "derp3h.tailscale.com", - "IPv4": "172.237.66.30", - "IPv6": "2600:3c15::2000:3dff:fe44:50aa", - "CanPort80": true - }, - { - "Name": "3e", - "RegionID": 3, - "HostName": "derp3e.tailscale.com", - "IPv4": "172.237.72.43", - "IPv6": "2600:3c15::2000:6cff:fee4:d799", - "CanPort80": true - } - ] - }, - "4": { - "RegionID": 4, - "RegionCode": "fra", - "RegionName": "Frankfurt", - "Latitude": 50.1109, - "Longitude": 8.6821, - "Nodes": [ - { - "Name": "4h", - "RegionID": 4, - "HostName": "derp4h.tailscale.com", - "IPv4": "185.40.234.77", - "IPv6": "2a00:dd80:20::bcf", - "CanPort80": true - }, - { - "Name": "4g", - "RegionID": 4, - "HostName": "derp4g.tailscale.com", - "IPv4": "185.40.234.113", - "IPv6": "2a00:dd80:20::8f", - "CanPort80": true - }, - { - "Name": "4i", - "RegionID": 4, - "HostName": "derp4i.tailscale.com", - "IPv4": "185.40.234.53", - "IPv6": "2a00:dd80:20::8a6", - "CanPort80": true - }, - { - "Name": "4f", - "RegionID": 4, - "HostName": "derp4f.tailscale.com", - "IPv4": "185.40.234.219", - "IPv6": "2a00:dd80:20::a25", - "CanPort80": true - } - ] - }, - "5": { - "RegionID": 5, - "RegionCode": "syd", - "RegionName": "Sydney", - "Latitude": -33.867778, - "Longitude": 151.21, - "Nodes": [ - { - "Name": "5f", - "RegionID": 5, - "HostName": "derp5f.tailscale.com", - "IPv4": "172.105.166.103", - "IPv6": "2400:8907::2000:ccff:fe1f:80da", - "CanPort80": true - }, - { - "Name": "5g", - "RegionID": 5, - "HostName": "derp5g.tailscale.com", - "IPv4": "172.105.169.57", - "IPv6": "2400:8907::2000:2fff:fea7:57f4", - "CanPort80": true - }, - { - "Name": "5e", - "RegionID": 5, - "HostName": "derp5e.tailscale.com", - "IPv4": "172.105.179.230", - "IPv6": "2400:8907::2000:ceff:fe8d:4f4e", - "CanPort80": true - } - ] - }, - "6": { - "RegionID": 6, - "RegionCode": "blr", - "RegionName": "Bengaluru", - "Latitude": 12.9716, - "Longitude": 77.5946, - "Nodes": [ - { - "Name": "6a", - "RegionID": 6, - "HostName": "derp6.tailscale.com", - "IPv4": "68.183.90.120", - "IPv6": "2400:6180:100:d0::982:d001", - "CanPort80": true - } - ] - }, - "7": { - "RegionID": 7, - "RegionCode": "tok", - "RegionName": "Tokyo", - "Latitude": 35.6764, - "Longitude": 139.65, - "Nodes": [ - { - "Name": "7g", - "RegionID": 7, - "HostName": "derp7g.tailscale.com", - "IPv4": "172.238.6.179", - "IPv6": "2600:3c18::2000:3fff:fe80:3ebd", - "CanPort80": true - }, - { - "Name": "7f", - "RegionID": 7, - "HostName": "derp7f.tailscale.com", - "IPv4": "172.238.6.34", - "IPv6": "2600:3c18::2000:acff:fe8e:3ed5", - "CanPort80": true - }, - { - "Name": "7h", - "RegionID": 7, - "HostName": "derp7h.tailscale.com", - "IPv4": "172.237.28.183", - "IPv6": "2600:3c18::2000:b1ff:fea9:4560", - "CanPort80": true - }, - { - "Name": "7e", - "RegionID": 7, - "HostName": "derp7e.tailscale.com", - "IPv4": "172.238.6.180", - "IPv6": "2600:3c18::2000:60ff:fe0f:6e83", - "STUNOnly": true, - "CanPort80": true - } - ] - }, - "8": { - "RegionID": 8, - "RegionCode": "lhr", - "RegionName": "London", - "Latitude": 51.5072, - "Longitude": 0.1276, - "Nodes": [ - { - "Name": "8f", - "RegionID": 8, - "HostName": "derp8f.tailscale.com", - "IPv4": "176.58.88.183", - "IPv6": "2a00:dd80:3a::dfa", - "CanPort80": true - }, - { - "Name": "8g", - "RegionID": 8, - "HostName": "derp8g.tailscale.com", - "IPv4": "176.58.92.254", - "IPv6": "2a00:dd80:3a::ed", - "CanPort80": true - }, - { - "Name": "8e", - "RegionID": 8, - "HostName": "derp8e.tailscale.com", - "IPv4": "176.58.92.144", - "IPv6": "2a00:dd80:3a::b33", - "CanPort80": true - } - ] - }, - "9": { - "RegionID": 9, - "RegionCode": "dfw", - "RegionName": "Dallas", - "Latitude": 32.779167, - "Longitude": -96.808889, - "Nodes": [ - { - "Name": "9e", - "RegionID": 9, - "HostName": "derp9e.tailscale.com", - "IPv4": "192.73.248.83", - "IPv6": "2607:f740:100::359", - "CanPort80": true - }, - { - "Name": "9f", - "RegionID": 9, - "HostName": "derp9f.tailscale.com", - "IPv4": "209.177.156.197", - "IPv6": "2607:f740:100::cad", - "CanPort80": true - }, - { - "Name": "9d", - "RegionID": 9, - "HostName": "derp9d.tailscale.com", - "IPv4": "209.177.156.94", - "IPv6": "2607:f740:100::c05", - "CanPort80": true - } - ] - } - } - }, - "DisplayMessages": null, - "TKAEnabled": false, - "TKAHead": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", - "Domain": "kratail2tid@passkey", - "DomainAuditLogID": "", - "UserProfiles": { - "4538565228176803": { - "ID": 4538565228176803, - "LoginName": "kristoffer@dalby.cc", - "DisplayName": "kristoffer" - } - } + "PacketFilterRules": 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.124.195.93": { - "peer_name": "exit-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-mon/tailscaled.sock whois --json 100.124.195.93", - "response": null - }, - "100.116.18.24": { - "peer_name": "exit-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-mon/tailscaled.sock whois --json 100.116.18.24", - "response": null - }, - "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.107.162.14": { - "peer_name": "group-a-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-mon/tailscaled.sock whois --json 100.107.162.14", - "response": null - }, - "100.77.135.18": { - "peer_name": "group-b-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-mon/tailscaled.sock whois --json 100.77.135.18", - "response": null - }, - "100.105.127.107": { - "peer_name": "multi-exit-router", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-mon/tailscaled.sock whois --json 100.105.127.107", - "response": null - }, - "100.109.43.124": { - "peer_name": "router-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-mon/tailscaled.sock whois --json 100.109.43.124", - "response": null - }, - "100.65.172.123": { - "peer_name": "router-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-mon/tailscaled.sock whois --json 100.65.172.123", - "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 - } - }, "netmap": { - "SelfNode": { - "ID": 1840115676059256, - "StableID": "nFzZ7giPNF11CNTRL", - "Name": "user-mon.tail78f774.ts.net.", - "User": 3982058329734709, - "Key": "nodekey:1ca6cca66d2b3811ec290c2f7ac30125c3568e19e303a8e30f6b165c9ee75a51", - "KeyExpiry": "2026-08-19T14:09:00Z", - "DiscoKey": "discokey:67ba1473894f09b564073adb12b27df2a45c513afd9e48922a0346d5d2715d12", - "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:36593", "10.65.0.27:36593", "172.17.0.1:36593"], - "Hostinfo": { - "Hostname": "user-mon", - "Services": [ - { "Proto": "peerapi4", "Port": 33201 }, - { "Proto": "peerapi6", "Port": 33201 }, - { "Proto": "peerapi-dns-proxy", "Port": 1 } - ] - }, - "Created": "2026-02-20T14:09:00.203639664Z", - "MachineAuthorized": true, - "CapMap": { - "https://tailscale.com/cap/file-sharing": null, - "https://tailscale.com/cap/is-admin": null, - "https://tailscale.com/cap/ssh": null, - "https://tailscale.com/cap/tailnet-lock": null, - "probe-udp-lifetime": null, - "ssh-behavior-v1": null, - "ssh-env-vars": null, - "store-appc-routes": null, - "tailnet-display-name": ["kratail2tid@passkey"] - }, - "ComputedName": "user-mon", - "ComputedNameWithHost": "user-mon" - }, - "AllCaps": [ - "https://tailscale.com/cap/tailnet-lock", - "store-appc-routes", - "https://tailscale.com/cap/file-sharing", - "https://tailscale.com/cap/ssh", - "probe-udp-lifetime", - "ssh-env-vars", - "tailnet-display-name", - "https://tailscale.com/cap/is-admin", - "ssh-behavior-v1" - ], - "NodeKey": "nodekey:1ca6cca66d2b3811ec290c2f7ac30125c3568e19e303a8e30f6b165c9ee75a51", - "MachineKey": "mkey:d63fc325663eef5dabd4d236e1fa5a26ed14ad31ea0711840cf755a5e8a9df39", "Peers": [], - "DNS": { - "Routes": { - "tail78f774.ts.net.": null, - "ts.net.": [{ "Addr": "199.247.155.53" }, { "Addr": "2620:111:8007::53" }] - }, - "Domains": ["tail78f774.ts.net"], - "Proxied": true, - "ExitNodeFilteredSet": [".ts.net", ".tailscale.net"] - }, - "PacketFilter": [], - "PacketFilterRules": null, - "SSHPolicy": { "rules": [] }, - "CollectServices": false, - "DERPMap": { - "Regions": { - "1": { - "RegionID": 1, - "RegionCode": "nyc", - "RegionName": "New York City", - "Latitude": 40.7128, - "Longitude": -74.006, - "Nodes": [ - { - "Name": "1h", - "RegionID": 1, - "HostName": "derp1h.tailscale.com", - "IPv4": "199.38.181.93", - "IPv6": "2607:f740:f::afd", - "CanPort80": true - }, - { - "Name": "1g", - "RegionID": 1, - "HostName": "derp1g.tailscale.com", - "IPv4": "209.177.145.120", - "IPv6": "2607:f740:f::3eb", - "CanPort80": true - }, - { - "Name": "1i", - "RegionID": 1, - "HostName": "derp1i.tailscale.com", - "IPv4": "199.38.181.103", - "IPv6": "2607:f740:f::e19", - "CanPort80": true - }, - { - "Name": "1f", - "RegionID": 1, - "HostName": "derp1f.tailscale.com", - "IPv4": "199.38.181.104", - "IPv6": "2607:f740:f::bc", - "CanPort80": true - } - ] - }, - "10": { - "RegionID": 10, - "RegionCode": "sea", - "RegionName": "Seattle", - "Latitude": 47.609722, - "Longitude": -122.333056, - "Nodes": [ - { - "Name": "10c", - "RegionID": 10, - "HostName": "derp10c.tailscale.com", - "IPv4": "192.73.240.121", - "IPv6": "2607:f740:14::40c", - "CanPort80": true - }, - { - "Name": "10d", - "RegionID": 10, - "HostName": "derp10d.tailscale.com", - "IPv4": "192.73.240.132", - "IPv6": "2607:f740:14::500", - "CanPort80": true - }, - { - "Name": "10b", - "RegionID": 10, - "HostName": "derp10b.tailscale.com", - "IPv4": "192.73.240.161", - "IPv6": "2607:f740:14::61c", - "CanPort80": true - } - ] - }, - "11": { - "RegionID": 11, - "RegionCode": "sao", - "RegionName": "São Paulo", - "Latitude": -23.55, - "Longitude": -46.633333, - "Nodes": [ - { - "Name": "11f", - "RegionID": 11, - "HostName": "derp11f.tailscale.com", - "IPv4": "172.237.61.197", - "IPv6": "2600:3c0d::2000:3bff:fe44:6166", - "CanPort80": true - }, - { - "Name": "11g", - "RegionID": 11, - "HostName": "derp11g.tailscale.com", - "IPv4": "172.237.61.190", - "IPv6": "2600:3c0d::2000:62ff:febe:2e67", - "CanPort80": true - }, - { - "Name": "11e", - "RegionID": 11, - "HostName": "derp11e.tailscale.com", - "IPv4": "172.237.61.194", - "IPv6": "2600:3c0d::2000:d2ff:fe43:1790", - "CanPort80": true - } - ] - }, - "12": { - "RegionID": 12, - "RegionCode": "ord", - "RegionName": "Chicago", - "Latitude": 41.881944, - "Longitude": -87.627778, - "Nodes": [ - { - "Name": "12e", - "RegionID": 12, - "HostName": "derp12e.tailscale.com", - "IPv4": "209.177.158.15", - "IPv6": "2607:f740:e::b17", - "CanPort80": true - }, - { - "Name": "12f", - "RegionID": 12, - "HostName": "derp12f.tailscale.com", - "IPv4": "199.38.182.118", - "IPv6": "2607:f740:e::4c8", - "CanPort80": true - }, - { - "Name": "12d", - "RegionID": 12, - "HostName": "derp12d.tailscale.com", - "IPv4": "209.177.158.246", - "IPv6": "2607:f740:e::811", - "CanPort80": true - } - ] - }, - "13": { - "RegionID": 13, - "RegionCode": "den", - "RegionName": "Denver", - "Latitude": 39.7392, - "Longitude": -104.9849, - "Nodes": [ - { - "Name": "13c", - "RegionID": 13, - "HostName": "derp13c.tailscale.com", - "IPv4": "192.73.242.28", - "IPv6": "2607:f740:16::5c", - "CanPort80": true - }, - { - "Name": "13d", - "RegionID": 13, - "HostName": "derp13d.tailscale.com", - "IPv4": "192.73.242.204", - "IPv6": "2607:f740:16::c23", - "CanPort80": true - }, - { - "Name": "13b", - "RegionID": 13, - "HostName": "derp13b.tailscale.com", - "IPv4": "192.73.242.187", - "IPv6": "2607:f740:16::640", - "CanPort80": true - } - ] - }, - "14": { - "RegionID": 14, - "RegionCode": "ams", - "RegionName": "Amsterdam", - "Latitude": 52.372778, - "Longitude": 4.893611, - "Nodes": [ - { - "Name": "14c", - "RegionID": 14, - "HostName": "derp14c.tailscale.com", - "IPv4": "176.58.93.147", - "IPv6": "2a00:dd80:3c::b09", - "CanPort80": true - }, - { - "Name": "14d", - "RegionID": 14, - "HostName": "derp14d.tailscale.com", - "IPv4": "176.58.93.154", - "IPv6": "2a00:dd80:3c::3d5", - "CanPort80": true - }, - { - "Name": "14b", - "RegionID": 14, - "HostName": "derp14b.tailscale.com", - "IPv4": "176.58.93.248", - "IPv6": "2a00:dd80:3c::807", - "CanPort80": true - } - ] - }, - "15": { - "RegionID": 15, - "RegionCode": "jnb", - "RegionName": "Johannesburg", - "Latitude": -26.204444, - "Longitude": 28.045556, - "Nodes": [ - { - "Name": "15c", - "RegionID": 15, - "HostName": "derp15c.tailscale.com", - "IPv4": "102.67.165.185", - "IPv6": "2c0f:edb0:0:10::b59", - "CanPort80": true - }, - { - "Name": "15d", - "RegionID": 15, - "HostName": "derp15d.tailscale.com", - "IPv4": "102.67.165.36", - "IPv6": "2c0f:edb0:0:10::599", - "CanPort80": true - }, - { - "Name": "15b", - "RegionID": 15, - "HostName": "derp15b.tailscale.com", - "IPv4": "102.67.165.90", - "IPv6": "2c0f:edb0:0:10::963", - "CanPort80": true - } - ] - }, - "16": { - "RegionID": 16, - "RegionCode": "mia", - "RegionName": "Miami", - "Latitude": 25.78, - "Longitude": -80.21, - "Nodes": [ - { - "Name": "16c", - "RegionID": 16, - "HostName": "derp16c.tailscale.com", - "IPv4": "192.73.243.229", - "IPv6": "2607:f740:17::4e4", - "CanPort80": true - }, - { - "Name": "16d", - "RegionID": 16, - "HostName": "derp16d.tailscale.com", - "IPv4": "192.73.243.141", - "IPv6": "2607:f740:17::475", - "CanPort80": true - }, - { - "Name": "16b", - "RegionID": 16, - "HostName": "derp16b.tailscale.com", - "IPv4": "192.73.243.135", - "IPv6": "2607:f740:17::476", - "CanPort80": true - } - ] - }, - "17": { - "RegionID": 17, - "RegionCode": "lax", - "RegionName": "Los Angeles", - "Latitude": 34.05, - "Longitude": -118.25, - "Nodes": [ - { - "Name": "17c", - "RegionID": 17, - "HostName": "derp17c.tailscale.com", - "IPv4": "208.111.40.12", - "IPv6": "2607:f740:c::10", - "CanPort80": true - }, - { - "Name": "17d", - "RegionID": 17, - "HostName": "derp17d.tailscale.com", - "IPv4": "208.111.40.216", - "IPv6": "2607:f740:c::e1b", - "CanPort80": true - }, - { - "Name": "17b", - "RegionID": 17, - "HostName": "derp17b.tailscale.com", - "IPv4": "192.73.244.245", - "IPv6": "2607:f740:c::646", - "CanPort80": true - } - ] - }, - "18": { - "RegionID": 18, - "RegionCode": "par", - "RegionName": "Paris", - "Latitude": 48.856667, - "Longitude": 2.352222, - "Nodes": [ - { - "Name": "18c", - "RegionID": 18, - "HostName": "derp18c.tailscale.com", - "IPv4": "176.58.90.207", - "IPv6": "2a00:dd80:3e::c19", - "CanPort80": true - }, - { - "Name": "18d", - "RegionID": 18, - "HostName": "derp18d.tailscale.com", - "IPv4": "176.58.90.104", - "IPv6": "2a00:dd80:3e::f2e", - "CanPort80": true - }, - { - "Name": "18b", - "RegionID": 18, - "HostName": "derp18b.tailscale.com", - "IPv4": "176.58.90.147", - "IPv6": "2a00:dd80:3e::363", - "CanPort80": true - } - ] - }, - "19": { - "RegionID": 19, - "RegionCode": "mad", - "RegionName": "Madrid", - "Latitude": 40.416944, - "Longitude": -3.703333, - "Nodes": [ - { - "Name": "19c", - "RegionID": 19, - "HostName": "derp19c.tailscale.com", - "IPv4": "45.159.97.61", - "IPv6": "2a00:dd80:14:10::20", - "CanPort80": true - }, - { - "Name": "19d", - "RegionID": 19, - "HostName": "derp19d.tailscale.com", - "IPv4": "45.159.97.233", - "IPv6": "2a00:dd80:14:10::34a", - "CanPort80": true - }, - { - "Name": "19b", - "RegionID": 19, - "HostName": "derp19b.tailscale.com", - "IPv4": "45.159.97.144", - "IPv6": "2a00:dd80:14:10::335", - "CanPort80": true - } - ] - }, - "2": { - "RegionID": 2, - "RegionCode": "sfo", - "RegionName": "San Francisco", - "Latitude": 37.7775, - "Longitude": -122.416389, - "Nodes": [ - { - "Name": "2e", - "RegionID": 2, - "HostName": "derp2e.tailscale.com", - "IPv4": "192.73.252.134", - "IPv6": "2607:f740:0:3f::44c", - "CanPort80": true - }, - { - "Name": "2f", - "RegionID": 2, - "HostName": "derp2f.tailscale.com", - "IPv4": "208.111.34.178", - "IPv6": "2607:f740:0:3f::f4", - "CanPort80": true - }, - { - "Name": "2d", - "RegionID": 2, - "HostName": "derp2d.tailscale.com", - "IPv4": "192.73.252.65", - "IPv6": "2607:f740:0:3f::287", - "CanPort80": true - } - ] - }, - "20": { - "RegionID": 20, - "RegionCode": "hkg", - "RegionName": "Hong Kong", - "Latitude": 22.3193, - "Longitude": 114.1694, - "Nodes": [ - { - "Name": "20c", - "RegionID": 20, - "HostName": "derp20c.tailscale.com", - "IPv4": "205.147.105.30", - "IPv6": "2403:2500:8000:1::5fb", - "CanPort80": true - }, - { - "Name": "20d", - "RegionID": 20, - "HostName": "derp20d.tailscale.com", - "IPv4": "205.147.105.78", - "IPv6": "2403:2500:8000:1::e9a", - "CanPort80": true - }, - { - "Name": "20b", - "RegionID": 20, - "HostName": "derp20b.tailscale.com", - "IPv4": "103.6.84.152", - "IPv6": "2403:2500:8000:1::ef6", - "CanPort80": true - } - ] - }, - "21": { - "RegionID": 21, - "RegionCode": "tor", - "RegionName": "Toronto", - "Latitude": 43.741667, - "Longitude": -79.373333, - "Nodes": [ - { - "Name": "21c", - "RegionID": 21, - "HostName": "derp21c.tailscale.com", - "IPv4": "162.248.221.215", - "IPv6": "2607:f740:50::f10", - "CanPort80": true - }, - { - "Name": "21d", - "RegionID": 21, - "HostName": "derp21d.tailscale.com", - "IPv4": "162.248.221.248", - "IPv6": "2607:f740:50::ca4", - "CanPort80": true - }, - { - "Name": "21b", - "RegionID": 21, - "HostName": "derp21b.tailscale.com", - "IPv4": "162.248.221.199", - "IPv6": "2607:f740:50::1d1", - "CanPort80": true - } - ] - }, - "22": { - "RegionID": 22, - "RegionCode": "waw", - "RegionName": "Warsaw", - "Latitude": 52.23, - "Longitude": 21.011111, - "Nodes": [ - { - "Name": "22c", - "RegionID": 22, - "HostName": "derp22c.tailscale.com", - "IPv4": "45.159.98.253", - "IPv6": "2a00:dd80:40:100::3f", - "CanPort80": true - }, - { - "Name": "22d", - "RegionID": 22, - "HostName": "derp22d.tailscale.com", - "IPv4": "45.159.98.145", - "IPv6": "2a00:dd80:40:100::211", - "CanPort80": true - }, - { - "Name": "22b", - "RegionID": 22, - "HostName": "derp22b.tailscale.com", - "IPv4": "45.159.98.196", - "IPv6": "2a00:dd80:40:100::316", - "CanPort80": true - } - ] - }, - "23": { - "RegionID": 23, - "RegionCode": "dbi", - "RegionName": "Dubai", - "Latitude": 25.263056, - "Longitude": 55.297222, - "Nodes": [ - { - "Name": "23c", - "RegionID": 23, - "HostName": "derp23c.tailscale.com", - "IPv4": "185.34.3.207", - "IPv6": "2a00:dd80:3f:100::a50", - "CanPort80": true - }, - { - "Name": "23d", - "RegionID": 23, - "HostName": "derp23d.tailscale.com", - "IPv4": "185.34.3.75", - "IPv6": "2a00:dd80:3f:100::97e", - "CanPort80": true - }, - { - "Name": "23b", - "RegionID": 23, - "HostName": "derp23b.tailscale.com", - "IPv4": "185.34.3.232", - "IPv6": "2a00:dd80:3f:100::76f", - "CanPort80": true - } - ] - }, - "24": { - "RegionID": 24, - "RegionCode": "hnl", - "RegionName": "Honolulu", - "Latitude": 21.306944, - "Longitude": -157.858333, - "Nodes": [ - { - "Name": "24c", - "RegionID": 24, - "HostName": "derp24c.tailscale.com", - "IPv4": "208.83.233.233", - "IPv6": "2001:19f0:c000:c591:5400:04ff:fe26:2c5f", - "CanPort80": true - }, - { - "Name": "24d", - "RegionID": 24, - "HostName": "derp24d.tailscale.com", - "IPv4": "208.72.155.133", - "IPv6": "2001:19f0:c000:c564:5400:04ff:fe26:2ba8", - "CanPort80": true - }, - { - "Name": "24b", - "RegionID": 24, - "HostName": "derp24b.tailscale.com", - "IPv4": "208.83.234.151", - "IPv6": "2001:19f0:c000:c586:5400:04ff:fe26:2ba6", - "CanPort80": true - } - ] - }, - "25": { - "RegionID": 25, - "RegionCode": "nai", - "RegionName": "Nairobi", - "Latitude": -1.286389, - "Longitude": 36.817222, - "Nodes": [ - { - "Name": "25c", - "RegionID": 25, - "HostName": "derp25c.tailscale.com", - "IPv4": "102.67.167.37", - "IPv6": "2c0f:edb0:2000:1::2c7", - "CanPort80": true - }, - { - "Name": "25d", - "RegionID": 25, - "HostName": "derp25d.tailscale.com", - "IPv4": "102.67.167.188", - "IPv6": "2c0f:edb0:2000:1::188", - "CanPort80": true - }, - { - "Name": "25b", - "RegionID": 25, - "HostName": "derp25b.tailscale.com", - "IPv4": "102.67.167.245", - "IPv6": "2c0f:edb0:2000:1::2e9", - "CanPort80": true - } - ] - }, - "26": { - "RegionID": 26, - "RegionCode": "nue", - "RegionName": "Nuremberg", - "Latitude": 49.453889, - "Longitude": 11.0775, - "Nodes": [ - { - "Name": "26c", - "RegionID": 26, - "HostName": "derp26c.tailscale.com", - "IPv4": "49.12.193.137", - "IPv6": "2a01:4f8:1c1c:5c70::1", - "CanPort80": true - }, - { - "Name": "26d", - "RegionID": 26, - "HostName": "derp26d.tailscale.com", - "IPv4": "49.13.204.141", - "IPv6": "2a01:4f8:1c0c:7d06::1", - "CanPort80": true - }, - { - "Name": "26b", - "RegionID": 26, - "HostName": "derp26b.tailscale.com", - "IPv4": "167.235.72.200", - "IPv6": "2a01:4f8:1c1c:47b6::1", - "CanPort80": true - } - ] - }, - "27": { - "RegionID": 27, - "RegionCode": "iad", - "RegionName": "Ashburn", - "Latitude": 39.03, - "Longitude": -77.471111, - "Nodes": [ - { - "Name": "27d", - "RegionID": 27, - "HostName": "derp27d.tailscale.com", - "IPv4": "178.156.152.106", - "IPv6": "2a01:4ff:f0:3c8e::1", - "CanPort80": true - }, - { - "Name": "27c", - "RegionID": 27, - "HostName": "derp27c.tailscale.com", - "IPv4": "178.156.152.91", - "IPv6": "2a01:4ff:f0:3913::1", - "CanPort80": true - }, - { - "Name": "27e", - "RegionID": 27, - "HostName": "derp27e.tailscale.com", - "IPv4": "178.156.134.232", - "IPv6": "2a01:4ff:f0:28d4::1", - "CanPort80": true - }, - { - "Name": "27b", - "RegionID": 27, - "HostName": "derp27b.tailscale.com", - "IPv4": "5.161.218.233", - "IPv6": "2a01:4ff:f0:3db9::1", - "CanPort80": true - } - ] - }, - "28": { - "RegionID": 28, - "RegionCode": "hel", - "RegionName": "Helsinki", - "Latitude": 60.170833, - "Longitude": 24.9375, - "Nodes": [ - { - "Name": "28c", - "RegionID": 28, - "HostName": "derp28c.tailscale.com", - "IPv4": "95.217.2.165", - "IPv6": "2a01:4f9:c012:cd74::1", - "CanPort80": true - }, - { - "Name": "28d", - "RegionID": 28, - "HostName": "derp28d.tailscale.com", - "IPv4": "157.180.28.32", - "IPv6": "2a01:4f9:c012:2e5b::1", - "CanPort80": true - }, - { - "Name": "28b", - "RegionID": 28, - "HostName": "derp28b.tailscale.com", - "IPv4": "65.109.143.62", - "IPv6": "2a01:4f9:c012:d55c::1", - "CanPort80": true - } - ] - }, - "3": { - "RegionID": 3, - "RegionCode": "sin", - "RegionName": "Singapore", - "Latitude": 1.3521, - "Longitude": 103.8198, - "Nodes": [ - { - "Name": "3g", - "RegionID": 3, - "HostName": "derp3g.tailscale.com", - "IPv4": "172.237.72.79", - "IPv6": "2600:3c15::2000:adff:fe08:6fab", - "CanPort80": true - }, - { - "Name": "3f", - "RegionID": 3, - "HostName": "derp3f.tailscale.com", - "IPv4": "172.237.72.8", - "IPv6": "2600:3c15::2000:53ff:fe48:a668", - "CanPort80": true - }, - { - "Name": "3h", - "RegionID": 3, - "HostName": "derp3h.tailscale.com", - "IPv4": "172.237.66.30", - "IPv6": "2600:3c15::2000:3dff:fe44:50aa", - "CanPort80": true - }, - { - "Name": "3e", - "RegionID": 3, - "HostName": "derp3e.tailscale.com", - "IPv4": "172.237.72.43", - "IPv6": "2600:3c15::2000:6cff:fee4:d799", - "CanPort80": true - } - ] - }, - "4": { - "RegionID": 4, - "RegionCode": "fra", - "RegionName": "Frankfurt", - "Latitude": 50.1109, - "Longitude": 8.6821, - "Nodes": [ - { - "Name": "4h", - "RegionID": 4, - "HostName": "derp4h.tailscale.com", - "IPv4": "185.40.234.77", - "IPv6": "2a00:dd80:20::bcf", - "CanPort80": true - }, - { - "Name": "4g", - "RegionID": 4, - "HostName": "derp4g.tailscale.com", - "IPv4": "185.40.234.113", - "IPv6": "2a00:dd80:20::8f", - "CanPort80": true - }, - { - "Name": "4i", - "RegionID": 4, - "HostName": "derp4i.tailscale.com", - "IPv4": "185.40.234.53", - "IPv6": "2a00:dd80:20::8a6", - "CanPort80": true - }, - { - "Name": "4f", - "RegionID": 4, - "HostName": "derp4f.tailscale.com", - "IPv4": "185.40.234.219", - "IPv6": "2a00:dd80:20::a25", - "CanPort80": true - } - ] - }, - "5": { - "RegionID": 5, - "RegionCode": "syd", - "RegionName": "Sydney", - "Latitude": -33.867778, - "Longitude": 151.21, - "Nodes": [ - { - "Name": "5f", - "RegionID": 5, - "HostName": "derp5f.tailscale.com", - "IPv4": "172.105.166.103", - "IPv6": "2400:8907::2000:ccff:fe1f:80da", - "CanPort80": true - }, - { - "Name": "5g", - "RegionID": 5, - "HostName": "derp5g.tailscale.com", - "IPv4": "172.105.169.57", - "IPv6": "2400:8907::2000:2fff:fea7:57f4", - "CanPort80": true - }, - { - "Name": "5e", - "RegionID": 5, - "HostName": "derp5e.tailscale.com", - "IPv4": "172.105.179.230", - "IPv6": "2400:8907::2000:ceff:fe8d:4f4e", - "CanPort80": true - } - ] - }, - "6": { - "RegionID": 6, - "RegionCode": "blr", - "RegionName": "Bengaluru", - "Latitude": 12.9716, - "Longitude": 77.5946, - "Nodes": [ - { - "Name": "6a", - "RegionID": 6, - "HostName": "derp6.tailscale.com", - "IPv4": "68.183.90.120", - "IPv6": "2400:6180:100:d0::982:d001", - "CanPort80": true - } - ] - }, - "7": { - "RegionID": 7, - "RegionCode": "tok", - "RegionName": "Tokyo", - "Latitude": 35.6764, - "Longitude": 139.65, - "Nodes": [ - { - "Name": "7g", - "RegionID": 7, - "HostName": "derp7g.tailscale.com", - "IPv4": "172.238.6.179", - "IPv6": "2600:3c18::2000:3fff:fe80:3ebd", - "CanPort80": true - }, - { - "Name": "7f", - "RegionID": 7, - "HostName": "derp7f.tailscale.com", - "IPv4": "172.238.6.34", - "IPv6": "2600:3c18::2000:acff:fe8e:3ed5", - "CanPort80": true - }, - { - "Name": "7h", - "RegionID": 7, - "HostName": "derp7h.tailscale.com", - "IPv4": "172.237.28.183", - "IPv6": "2600:3c18::2000:b1ff:fea9:4560", - "CanPort80": true - }, - { - "Name": "7e", - "RegionID": 7, - "HostName": "derp7e.tailscale.com", - "IPv4": "172.238.6.180", - "IPv6": "2600:3c18::2000:60ff:fe0f:6e83", - "STUNOnly": true, - "CanPort80": true - } - ] - }, - "8": { - "RegionID": 8, - "RegionCode": "lhr", - "RegionName": "London", - "Latitude": 51.5072, - "Longitude": 0.1276, - "Nodes": [ - { - "Name": "8f", - "RegionID": 8, - "HostName": "derp8f.tailscale.com", - "IPv4": "176.58.88.183", - "IPv6": "2a00:dd80:3a::dfa", - "CanPort80": true - }, - { - "Name": "8g", - "RegionID": 8, - "HostName": "derp8g.tailscale.com", - "IPv4": "176.58.92.254", - "IPv6": "2a00:dd80:3a::ed", - "CanPort80": true - }, - { - "Name": "8e", - "RegionID": 8, - "HostName": "derp8e.tailscale.com", - "IPv4": "176.58.92.144", - "IPv6": "2a00:dd80:3a::b33", - "CanPort80": true - } - ] - }, - "9": { - "RegionID": 9, - "RegionCode": "dfw", - "RegionName": "Dallas", - "Latitude": 32.779167, - "Longitude": -96.808889, - "Nodes": [ - { - "Name": "9e", - "RegionID": 9, - "HostName": "derp9e.tailscale.com", - "IPv4": "192.73.248.83", - "IPv6": "2607:f740:100::359", - "CanPort80": true - }, - { - "Name": "9f", - "RegionID": 9, - "HostName": "derp9f.tailscale.com", - "IPv4": "209.177.156.197", - "IPv6": "2607:f740:100::cad", - "CanPort80": true - }, - { - "Name": "9d", - "RegionID": 9, - "HostName": "derp9d.tailscale.com", - "IPv4": "209.177.156.94", - "IPv6": "2607:f740:100::c05", - "CanPort80": true - } - ] - } - } - }, - "DisplayMessages": null, - "TKAEnabled": false, - "TKAHead": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", - "Domain": "kratail2tid@passkey", - "DomainAuditLogID": "", - "UserProfiles": { - "3982058329734709": { - "ID": 3982058329734709, - "LoginName": "monitorpasskeykradalby@passkey", - "DisplayName": "monitorpasskeykradalby" - } - } + "PacketFilterRules": 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.124.195.93": { - "peer_name": "exit-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user1/tailscaled.sock whois --json 100.124.195.93", - "response": null - }, - "100.116.18.24": { - "peer_name": "exit-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user1/tailscaled.sock whois --json 100.116.18.24", - "response": null - }, - "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.107.162.14": { - "peer_name": "group-a-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user1/tailscaled.sock whois --json 100.107.162.14", - "response": null - }, - "100.77.135.18": { - "peer_name": "group-b-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user1/tailscaled.sock whois --json 100.77.135.18", - "response": null - }, - "100.105.127.107": { - "peer_name": "multi-exit-router", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user1/tailscaled.sock whois --json 100.105.127.107", - "response": null - }, - "100.109.43.124": { - "peer_name": "router-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user1/tailscaled.sock whois --json 100.109.43.124", - "response": null - }, - "100.65.172.123": { - "peer_name": "router-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user1/tailscaled.sock whois --json 100.65.172.123", - "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 - } - }, "netmap": { - "SelfNode": { - "ID": 539541576444929, - "StableID": "nSq9YrqMD511CNTRL", - "Name": "user1.tail78f774.ts.net.", - "User": 4156223528223174, - "Key": "nodekey:96338a2cd2ea803c915ed8fdf882d66ca0c6a59d0fcf0bc4b3f928d22d1ac743", - "KeyExpiry": "2026-07-22T10:04:13Z", - "DiscoKey": "discokey:94c62b25a93d1474bcbf8b0e5f79763e3b093993c831b0a40e98b875827b232a", - "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:43259", "10.65.0.27:43259", "172.17.0.1:43259"], - "Hostinfo": { - "Hostname": "user1", - "Services": [ - { "Proto": "peerapi4", "Port": 46708 }, - { "Proto": "peerapi6", "Port": 46708 }, - { "Proto": "peerapi-dns-proxy", "Port": 1 } - ] - }, - "Created": "2026-01-23T10:04:13.531671894Z", - "MachineAuthorized": true, - "CapMap": { - "https://tailscale.com/cap/file-sharing": null, - "https://tailscale.com/cap/is-admin": null, - "https://tailscale.com/cap/is-owner": null, - "https://tailscale.com/cap/ssh": null, - "https://tailscale.com/cap/tailnet-lock": null, - "probe-udp-lifetime": null, - "ssh-behavior-v1": null, - "ssh-env-vars": null, - "store-appc-routes": null, - "tailnet-display-name": ["kratail2tid@passkey"] - }, - "ComputedName": "user1", - "ComputedNameWithHost": "user1" - }, - "AllCaps": [ - "https://tailscale.com/cap/ssh", - "https://tailscale.com/cap/tailnet-lock", - "store-appc-routes", - "ssh-behavior-v1", - "tailnet-display-name", - "https://tailscale.com/cap/is-owner", - "probe-udp-lifetime", - "https://tailscale.com/cap/is-admin", - "ssh-env-vars", - "https://tailscale.com/cap/file-sharing" - ], - "NodeKey": "nodekey:96338a2cd2ea803c915ed8fdf882d66ca0c6a59d0fcf0bc4b3f928d22d1ac743", - "MachineKey": "mkey:98b7ed0fef020882cab4324b39ac93b60741794e722411083d0d3cf703833f4a", "Peers": [], - "DNS": { - "Routes": { - "tail78f774.ts.net.": null, - "ts.net.": [{ "Addr": "199.247.155.53" }, { "Addr": "2620:111:8007::53" }] - }, - "Domains": ["tail78f774.ts.net"], - "Proxied": true, - "ExitNodeFilteredSet": [".ts.net", ".tailscale.net"] - }, - "PacketFilter": [], - "PacketFilterRules": null, - "SSHPolicy": { "rules": [] }, - "CollectServices": false, - "DERPMap": { - "Regions": { - "1": { - "RegionID": 1, - "RegionCode": "nyc", - "RegionName": "New York City", - "Latitude": 40.7128, - "Longitude": -74.006, - "Nodes": [ - { - "Name": "1h", - "RegionID": 1, - "HostName": "derp1h.tailscale.com", - "IPv4": "199.38.181.93", - "IPv6": "2607:f740:f::afd", - "CanPort80": true - }, - { - "Name": "1g", - "RegionID": 1, - "HostName": "derp1g.tailscale.com", - "IPv4": "209.177.145.120", - "IPv6": "2607:f740:f::3eb", - "CanPort80": true - }, - { - "Name": "1i", - "RegionID": 1, - "HostName": "derp1i.tailscale.com", - "IPv4": "199.38.181.103", - "IPv6": "2607:f740:f::e19", - "CanPort80": true - }, - { - "Name": "1f", - "RegionID": 1, - "HostName": "derp1f.tailscale.com", - "IPv4": "199.38.181.104", - "IPv6": "2607:f740:f::bc", - "CanPort80": true - } - ] - }, - "10": { - "RegionID": 10, - "RegionCode": "sea", - "RegionName": "Seattle", - "Latitude": 47.609722, - "Longitude": -122.333056, - "Nodes": [ - { - "Name": "10c", - "RegionID": 10, - "HostName": "derp10c.tailscale.com", - "IPv4": "192.73.240.121", - "IPv6": "2607:f740:14::40c", - "CanPort80": true - }, - { - "Name": "10d", - "RegionID": 10, - "HostName": "derp10d.tailscale.com", - "IPv4": "192.73.240.132", - "IPv6": "2607:f740:14::500", - "CanPort80": true - }, - { - "Name": "10b", - "RegionID": 10, - "HostName": "derp10b.tailscale.com", - "IPv4": "192.73.240.161", - "IPv6": "2607:f740:14::61c", - "CanPort80": true - } - ] - }, - "11": { - "RegionID": 11, - "RegionCode": "sao", - "RegionName": "São Paulo", - "Latitude": -23.55, - "Longitude": -46.633333, - "Nodes": [ - { - "Name": "11f", - "RegionID": 11, - "HostName": "derp11f.tailscale.com", - "IPv4": "172.237.61.197", - "IPv6": "2600:3c0d::2000:3bff:fe44:6166", - "CanPort80": true - }, - { - "Name": "11g", - "RegionID": 11, - "HostName": "derp11g.tailscale.com", - "IPv4": "172.237.61.190", - "IPv6": "2600:3c0d::2000:62ff:febe:2e67", - "CanPort80": true - }, - { - "Name": "11e", - "RegionID": 11, - "HostName": "derp11e.tailscale.com", - "IPv4": "172.237.61.194", - "IPv6": "2600:3c0d::2000:d2ff:fe43:1790", - "CanPort80": true - } - ] - }, - "12": { - "RegionID": 12, - "RegionCode": "ord", - "RegionName": "Chicago", - "Latitude": 41.881944, - "Longitude": -87.627778, - "Nodes": [ - { - "Name": "12e", - "RegionID": 12, - "HostName": "derp12e.tailscale.com", - "IPv4": "209.177.158.15", - "IPv6": "2607:f740:e::b17", - "CanPort80": true - }, - { - "Name": "12f", - "RegionID": 12, - "HostName": "derp12f.tailscale.com", - "IPv4": "199.38.182.118", - "IPv6": "2607:f740:e::4c8", - "CanPort80": true - }, - { - "Name": "12d", - "RegionID": 12, - "HostName": "derp12d.tailscale.com", - "IPv4": "209.177.158.246", - "IPv6": "2607:f740:e::811", - "CanPort80": true - } - ] - }, - "13": { - "RegionID": 13, - "RegionCode": "den", - "RegionName": "Denver", - "Latitude": 39.7392, - "Longitude": -104.9849, - "Nodes": [ - { - "Name": "13c", - "RegionID": 13, - "HostName": "derp13c.tailscale.com", - "IPv4": "192.73.242.28", - "IPv6": "2607:f740:16::5c", - "CanPort80": true - }, - { - "Name": "13d", - "RegionID": 13, - "HostName": "derp13d.tailscale.com", - "IPv4": "192.73.242.204", - "IPv6": "2607:f740:16::c23", - "CanPort80": true - }, - { - "Name": "13b", - "RegionID": 13, - "HostName": "derp13b.tailscale.com", - "IPv4": "192.73.242.187", - "IPv6": "2607:f740:16::640", - "CanPort80": true - } - ] - }, - "14": { - "RegionID": 14, - "RegionCode": "ams", - "RegionName": "Amsterdam", - "Latitude": 52.372778, - "Longitude": 4.893611, - "Nodes": [ - { - "Name": "14c", - "RegionID": 14, - "HostName": "derp14c.tailscale.com", - "IPv4": "176.58.93.147", - "IPv6": "2a00:dd80:3c::b09", - "CanPort80": true - }, - { - "Name": "14d", - "RegionID": 14, - "HostName": "derp14d.tailscale.com", - "IPv4": "176.58.93.154", - "IPv6": "2a00:dd80:3c::3d5", - "CanPort80": true - }, - { - "Name": "14b", - "RegionID": 14, - "HostName": "derp14b.tailscale.com", - "IPv4": "176.58.93.248", - "IPv6": "2a00:dd80:3c::807", - "CanPort80": true - } - ] - }, - "15": { - "RegionID": 15, - "RegionCode": "jnb", - "RegionName": "Johannesburg", - "Latitude": -26.204444, - "Longitude": 28.045556, - "Nodes": [ - { - "Name": "15c", - "RegionID": 15, - "HostName": "derp15c.tailscale.com", - "IPv4": "102.67.165.185", - "IPv6": "2c0f:edb0:0:10::b59", - "CanPort80": true - }, - { - "Name": "15d", - "RegionID": 15, - "HostName": "derp15d.tailscale.com", - "IPv4": "102.67.165.36", - "IPv6": "2c0f:edb0:0:10::599", - "CanPort80": true - }, - { - "Name": "15b", - "RegionID": 15, - "HostName": "derp15b.tailscale.com", - "IPv4": "102.67.165.90", - "IPv6": "2c0f:edb0:0:10::963", - "CanPort80": true - } - ] - }, - "16": { - "RegionID": 16, - "RegionCode": "mia", - "RegionName": "Miami", - "Latitude": 25.78, - "Longitude": -80.21, - "Nodes": [ - { - "Name": "16c", - "RegionID": 16, - "HostName": "derp16c.tailscale.com", - "IPv4": "192.73.243.229", - "IPv6": "2607:f740:17::4e4", - "CanPort80": true - }, - { - "Name": "16d", - "RegionID": 16, - "HostName": "derp16d.tailscale.com", - "IPv4": "192.73.243.141", - "IPv6": "2607:f740:17::475", - "CanPort80": true - }, - { - "Name": "16b", - "RegionID": 16, - "HostName": "derp16b.tailscale.com", - "IPv4": "192.73.243.135", - "IPv6": "2607:f740:17::476", - "CanPort80": true - } - ] - }, - "17": { - "RegionID": 17, - "RegionCode": "lax", - "RegionName": "Los Angeles", - "Latitude": 34.05, - "Longitude": -118.25, - "Nodes": [ - { - "Name": "17c", - "RegionID": 17, - "HostName": "derp17c.tailscale.com", - "IPv4": "208.111.40.12", - "IPv6": "2607:f740:c::10", - "CanPort80": true - }, - { - "Name": "17d", - "RegionID": 17, - "HostName": "derp17d.tailscale.com", - "IPv4": "208.111.40.216", - "IPv6": "2607:f740:c::e1b", - "CanPort80": true - }, - { - "Name": "17b", - "RegionID": 17, - "HostName": "derp17b.tailscale.com", - "IPv4": "192.73.244.245", - "IPv6": "2607:f740:c::646", - "CanPort80": true - } - ] - }, - "18": { - "RegionID": 18, - "RegionCode": "par", - "RegionName": "Paris", - "Latitude": 48.856667, - "Longitude": 2.352222, - "Nodes": [ - { - "Name": "18c", - "RegionID": 18, - "HostName": "derp18c.tailscale.com", - "IPv4": "176.58.90.207", - "IPv6": "2a00:dd80:3e::c19", - "CanPort80": true - }, - { - "Name": "18d", - "RegionID": 18, - "HostName": "derp18d.tailscale.com", - "IPv4": "176.58.90.104", - "IPv6": "2a00:dd80:3e::f2e", - "CanPort80": true - }, - { - "Name": "18b", - "RegionID": 18, - "HostName": "derp18b.tailscale.com", - "IPv4": "176.58.90.147", - "IPv6": "2a00:dd80:3e::363", - "CanPort80": true - } - ] - }, - "19": { - "RegionID": 19, - "RegionCode": "mad", - "RegionName": "Madrid", - "Latitude": 40.416944, - "Longitude": -3.703333, - "Nodes": [ - { - "Name": "19c", - "RegionID": 19, - "HostName": "derp19c.tailscale.com", - "IPv4": "45.159.97.61", - "IPv6": "2a00:dd80:14:10::20", - "CanPort80": true - }, - { - "Name": "19d", - "RegionID": 19, - "HostName": "derp19d.tailscale.com", - "IPv4": "45.159.97.233", - "IPv6": "2a00:dd80:14:10::34a", - "CanPort80": true - }, - { - "Name": "19b", - "RegionID": 19, - "HostName": "derp19b.tailscale.com", - "IPv4": "45.159.97.144", - "IPv6": "2a00:dd80:14:10::335", - "CanPort80": true - } - ] - }, - "2": { - "RegionID": 2, - "RegionCode": "sfo", - "RegionName": "San Francisco", - "Latitude": 37.7775, - "Longitude": -122.416389, - "Nodes": [ - { - "Name": "2e", - "RegionID": 2, - "HostName": "derp2e.tailscale.com", - "IPv4": "192.73.252.134", - "IPv6": "2607:f740:0:3f::44c", - "CanPort80": true - }, - { - "Name": "2f", - "RegionID": 2, - "HostName": "derp2f.tailscale.com", - "IPv4": "208.111.34.178", - "IPv6": "2607:f740:0:3f::f4", - "CanPort80": true - }, - { - "Name": "2d", - "RegionID": 2, - "HostName": "derp2d.tailscale.com", - "IPv4": "192.73.252.65", - "IPv6": "2607:f740:0:3f::287", - "CanPort80": true - } - ] - }, - "20": { - "RegionID": 20, - "RegionCode": "hkg", - "RegionName": "Hong Kong", - "Latitude": 22.3193, - "Longitude": 114.1694, - "Nodes": [ - { - "Name": "20c", - "RegionID": 20, - "HostName": "derp20c.tailscale.com", - "IPv4": "205.147.105.30", - "IPv6": "2403:2500:8000:1::5fb", - "CanPort80": true - }, - { - "Name": "20d", - "RegionID": 20, - "HostName": "derp20d.tailscale.com", - "IPv4": "205.147.105.78", - "IPv6": "2403:2500:8000:1::e9a", - "CanPort80": true - }, - { - "Name": "20b", - "RegionID": 20, - "HostName": "derp20b.tailscale.com", - "IPv4": "103.6.84.152", - "IPv6": "2403:2500:8000:1::ef6", - "CanPort80": true - } - ] - }, - "21": { - "RegionID": 21, - "RegionCode": "tor", - "RegionName": "Toronto", - "Latitude": 43.741667, - "Longitude": -79.373333, - "Nodes": [ - { - "Name": "21c", - "RegionID": 21, - "HostName": "derp21c.tailscale.com", - "IPv4": "162.248.221.215", - "IPv6": "2607:f740:50::f10", - "CanPort80": true - }, - { - "Name": "21d", - "RegionID": 21, - "HostName": "derp21d.tailscale.com", - "IPv4": "162.248.221.248", - "IPv6": "2607:f740:50::ca4", - "CanPort80": true - }, - { - "Name": "21b", - "RegionID": 21, - "HostName": "derp21b.tailscale.com", - "IPv4": "162.248.221.199", - "IPv6": "2607:f740:50::1d1", - "CanPort80": true - } - ] - }, - "22": { - "RegionID": 22, - "RegionCode": "waw", - "RegionName": "Warsaw", - "Latitude": 52.23, - "Longitude": 21.011111, - "Nodes": [ - { - "Name": "22c", - "RegionID": 22, - "HostName": "derp22c.tailscale.com", - "IPv4": "45.159.98.253", - "IPv6": "2a00:dd80:40:100::3f", - "CanPort80": true - }, - { - "Name": "22d", - "RegionID": 22, - "HostName": "derp22d.tailscale.com", - "IPv4": "45.159.98.145", - "IPv6": "2a00:dd80:40:100::211", - "CanPort80": true - }, - { - "Name": "22b", - "RegionID": 22, - "HostName": "derp22b.tailscale.com", - "IPv4": "45.159.98.196", - "IPv6": "2a00:dd80:40:100::316", - "CanPort80": true - } - ] - }, - "23": { - "RegionID": 23, - "RegionCode": "dbi", - "RegionName": "Dubai", - "Latitude": 25.263056, - "Longitude": 55.297222, - "Nodes": [ - { - "Name": "23c", - "RegionID": 23, - "HostName": "derp23c.tailscale.com", - "IPv4": "185.34.3.207", - "IPv6": "2a00:dd80:3f:100::a50", - "CanPort80": true - }, - { - "Name": "23d", - "RegionID": 23, - "HostName": "derp23d.tailscale.com", - "IPv4": "185.34.3.75", - "IPv6": "2a00:dd80:3f:100::97e", - "CanPort80": true - }, - { - "Name": "23b", - "RegionID": 23, - "HostName": "derp23b.tailscale.com", - "IPv4": "185.34.3.232", - "IPv6": "2a00:dd80:3f:100::76f", - "CanPort80": true - } - ] - }, - "24": { - "RegionID": 24, - "RegionCode": "hnl", - "RegionName": "Honolulu", - "Latitude": 21.306944, - "Longitude": -157.858333, - "Nodes": [ - { - "Name": "24c", - "RegionID": 24, - "HostName": "derp24c.tailscale.com", - "IPv4": "208.83.233.233", - "IPv6": "2001:19f0:c000:c591:5400:04ff:fe26:2c5f", - "CanPort80": true - }, - { - "Name": "24d", - "RegionID": 24, - "HostName": "derp24d.tailscale.com", - "IPv4": "208.72.155.133", - "IPv6": "2001:19f0:c000:c564:5400:04ff:fe26:2ba8", - "CanPort80": true - }, - { - "Name": "24b", - "RegionID": 24, - "HostName": "derp24b.tailscale.com", - "IPv4": "208.83.234.151", - "IPv6": "2001:19f0:c000:c586:5400:04ff:fe26:2ba6", - "CanPort80": true - } - ] - }, - "25": { - "RegionID": 25, - "RegionCode": "nai", - "RegionName": "Nairobi", - "Latitude": -1.286389, - "Longitude": 36.817222, - "Nodes": [ - { - "Name": "25c", - "RegionID": 25, - "HostName": "derp25c.tailscale.com", - "IPv4": "102.67.167.37", - "IPv6": "2c0f:edb0:2000:1::2c7", - "CanPort80": true - }, - { - "Name": "25d", - "RegionID": 25, - "HostName": "derp25d.tailscale.com", - "IPv4": "102.67.167.188", - "IPv6": "2c0f:edb0:2000:1::188", - "CanPort80": true - }, - { - "Name": "25b", - "RegionID": 25, - "HostName": "derp25b.tailscale.com", - "IPv4": "102.67.167.245", - "IPv6": "2c0f:edb0:2000:1::2e9", - "CanPort80": true - } - ] - }, - "26": { - "RegionID": 26, - "RegionCode": "nue", - "RegionName": "Nuremberg", - "Latitude": 49.453889, - "Longitude": 11.0775, - "Nodes": [ - { - "Name": "26c", - "RegionID": 26, - "HostName": "derp26c.tailscale.com", - "IPv4": "49.12.193.137", - "IPv6": "2a01:4f8:1c1c:5c70::1", - "CanPort80": true - }, - { - "Name": "26d", - "RegionID": 26, - "HostName": "derp26d.tailscale.com", - "IPv4": "49.13.204.141", - "IPv6": "2a01:4f8:1c0c:7d06::1", - "CanPort80": true - }, - { - "Name": "26b", - "RegionID": 26, - "HostName": "derp26b.tailscale.com", - "IPv4": "167.235.72.200", - "IPv6": "2a01:4f8:1c1c:47b6::1", - "CanPort80": true - } - ] - }, - "27": { - "RegionID": 27, - "RegionCode": "iad", - "RegionName": "Ashburn", - "Latitude": 39.03, - "Longitude": -77.471111, - "Nodes": [ - { - "Name": "27d", - "RegionID": 27, - "HostName": "derp27d.tailscale.com", - "IPv4": "178.156.152.106", - "IPv6": "2a01:4ff:f0:3c8e::1", - "CanPort80": true - }, - { - "Name": "27c", - "RegionID": 27, - "HostName": "derp27c.tailscale.com", - "IPv4": "178.156.152.91", - "IPv6": "2a01:4ff:f0:3913::1", - "CanPort80": true - }, - { - "Name": "27e", - "RegionID": 27, - "HostName": "derp27e.tailscale.com", - "IPv4": "178.156.134.232", - "IPv6": "2a01:4ff:f0:28d4::1", - "CanPort80": true - }, - { - "Name": "27b", - "RegionID": 27, - "HostName": "derp27b.tailscale.com", - "IPv4": "5.161.218.233", - "IPv6": "2a01:4ff:f0:3db9::1", - "CanPort80": true - } - ] - }, - "28": { - "RegionID": 28, - "RegionCode": "hel", - "RegionName": "Helsinki", - "Latitude": 60.170833, - "Longitude": 24.9375, - "Nodes": [ - { - "Name": "28c", - "RegionID": 28, - "HostName": "derp28c.tailscale.com", - "IPv4": "95.217.2.165", - "IPv6": "2a01:4f9:c012:cd74::1", - "CanPort80": true - }, - { - "Name": "28d", - "RegionID": 28, - "HostName": "derp28d.tailscale.com", - "IPv4": "157.180.28.32", - "IPv6": "2a01:4f9:c012:2e5b::1", - "CanPort80": true - }, - { - "Name": "28b", - "RegionID": 28, - "HostName": "derp28b.tailscale.com", - "IPv4": "65.109.143.62", - "IPv6": "2a01:4f9:c012:d55c::1", - "CanPort80": true - } - ] - }, - "3": { - "RegionID": 3, - "RegionCode": "sin", - "RegionName": "Singapore", - "Latitude": 1.3521, - "Longitude": 103.8198, - "Nodes": [ - { - "Name": "3g", - "RegionID": 3, - "HostName": "derp3g.tailscale.com", - "IPv4": "172.237.72.79", - "IPv6": "2600:3c15::2000:adff:fe08:6fab", - "CanPort80": true - }, - { - "Name": "3f", - "RegionID": 3, - "HostName": "derp3f.tailscale.com", - "IPv4": "172.237.72.8", - "IPv6": "2600:3c15::2000:53ff:fe48:a668", - "CanPort80": true - }, - { - "Name": "3h", - "RegionID": 3, - "HostName": "derp3h.tailscale.com", - "IPv4": "172.237.66.30", - "IPv6": "2600:3c15::2000:3dff:fe44:50aa", - "CanPort80": true - }, - { - "Name": "3e", - "RegionID": 3, - "HostName": "derp3e.tailscale.com", - "IPv4": "172.237.72.43", - "IPv6": "2600:3c15::2000:6cff:fee4:d799", - "CanPort80": true - } - ] - }, - "4": { - "RegionID": 4, - "RegionCode": "fra", - "RegionName": "Frankfurt", - "Latitude": 50.1109, - "Longitude": 8.6821, - "Nodes": [ - { - "Name": "4h", - "RegionID": 4, - "HostName": "derp4h.tailscale.com", - "IPv4": "185.40.234.77", - "IPv6": "2a00:dd80:20::bcf", - "CanPort80": true - }, - { - "Name": "4g", - "RegionID": 4, - "HostName": "derp4g.tailscale.com", - "IPv4": "185.40.234.113", - "IPv6": "2a00:dd80:20::8f", - "CanPort80": true - }, - { - "Name": "4i", - "RegionID": 4, - "HostName": "derp4i.tailscale.com", - "IPv4": "185.40.234.53", - "IPv6": "2a00:dd80:20::8a6", - "CanPort80": true - }, - { - "Name": "4f", - "RegionID": 4, - "HostName": "derp4f.tailscale.com", - "IPv4": "185.40.234.219", - "IPv6": "2a00:dd80:20::a25", - "CanPort80": true - } - ] - }, - "5": { - "RegionID": 5, - "RegionCode": "syd", - "RegionName": "Sydney", - "Latitude": -33.867778, - "Longitude": 151.21, - "Nodes": [ - { - "Name": "5f", - "RegionID": 5, - "HostName": "derp5f.tailscale.com", - "IPv4": "172.105.166.103", - "IPv6": "2400:8907::2000:ccff:fe1f:80da", - "CanPort80": true - }, - { - "Name": "5g", - "RegionID": 5, - "HostName": "derp5g.tailscale.com", - "IPv4": "172.105.169.57", - "IPv6": "2400:8907::2000:2fff:fea7:57f4", - "CanPort80": true - }, - { - "Name": "5e", - "RegionID": 5, - "HostName": "derp5e.tailscale.com", - "IPv4": "172.105.179.230", - "IPv6": "2400:8907::2000:ceff:fe8d:4f4e", - "CanPort80": true - } - ] - }, - "6": { - "RegionID": 6, - "RegionCode": "blr", - "RegionName": "Bengaluru", - "Latitude": 12.9716, - "Longitude": 77.5946, - "Nodes": [ - { - "Name": "6a", - "RegionID": 6, - "HostName": "derp6.tailscale.com", - "IPv4": "68.183.90.120", - "IPv6": "2400:6180:100:d0::982:d001", - "CanPort80": true - } - ] - }, - "7": { - "RegionID": 7, - "RegionCode": "tok", - "RegionName": "Tokyo", - "Latitude": 35.6764, - "Longitude": 139.65, - "Nodes": [ - { - "Name": "7g", - "RegionID": 7, - "HostName": "derp7g.tailscale.com", - "IPv4": "172.238.6.179", - "IPv6": "2600:3c18::2000:3fff:fe80:3ebd", - "CanPort80": true - }, - { - "Name": "7f", - "RegionID": 7, - "HostName": "derp7f.tailscale.com", - "IPv4": "172.238.6.34", - "IPv6": "2600:3c18::2000:acff:fe8e:3ed5", - "CanPort80": true - }, - { - "Name": "7h", - "RegionID": 7, - "HostName": "derp7h.tailscale.com", - "IPv4": "172.237.28.183", - "IPv6": "2600:3c18::2000:b1ff:fea9:4560", - "CanPort80": true - }, - { - "Name": "7e", - "RegionID": 7, - "HostName": "derp7e.tailscale.com", - "IPv4": "172.238.6.180", - "IPv6": "2600:3c18::2000:60ff:fe0f:6e83", - "STUNOnly": true, - "CanPort80": true - } - ] - }, - "8": { - "RegionID": 8, - "RegionCode": "lhr", - "RegionName": "London", - "Latitude": 51.5072, - "Longitude": 0.1276, - "Nodes": [ - { - "Name": "8f", - "RegionID": 8, - "HostName": "derp8f.tailscale.com", - "IPv4": "176.58.88.183", - "IPv6": "2a00:dd80:3a::dfa", - "CanPort80": true - }, - { - "Name": "8g", - "RegionID": 8, - "HostName": "derp8g.tailscale.com", - "IPv4": "176.58.92.254", - "IPv6": "2a00:dd80:3a::ed", - "CanPort80": true - }, - { - "Name": "8e", - "RegionID": 8, - "HostName": "derp8e.tailscale.com", - "IPv4": "176.58.92.144", - "IPv6": "2a00:dd80:3a::b33", - "CanPort80": true - } - ] - }, - "9": { - "RegionID": 9, - "RegionCode": "dfw", - "RegionName": "Dallas", - "Latitude": 32.779167, - "Longitude": -96.808889, - "Nodes": [ - { - "Name": "9e", - "RegionID": 9, - "HostName": "derp9e.tailscale.com", - "IPv4": "192.73.248.83", - "IPv6": "2607:f740:100::359", - "CanPort80": true - }, - { - "Name": "9f", - "RegionID": 9, - "HostName": "derp9f.tailscale.com", - "IPv4": "209.177.156.197", - "IPv6": "2607:f740:100::cad", - "CanPort80": true - }, - { - "Name": "9d", - "RegionID": 9, - "HostName": "derp9d.tailscale.com", - "IPv4": "209.177.156.94", - "IPv6": "2607:f740:100::c05", - "CanPort80": true - } - ] - } - } - }, - "DisplayMessages": null, - "TKAEnabled": false, - "TKAHead": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", - "Domain": "kratail2tid@passkey", - "DomainAuditLogID": "", - "UserProfiles": { - "4156223528223174": { - "ID": 4156223528223174, - "LoginName": "kratail2tid@passkey", - "DisplayName": "kratail2tid" - } - } + "PacketFilterRules": null } } } diff --git a/hscontrol/policy/v2/testdata/grant_results/GRANT-V36.hujson b/hscontrol/policy/v2/testdata/grant_results/GRANT-V36.hujson index 041605c19..3164f7bb9 100644 --- a/hscontrol/policy/v2/testdata/grant_results/GRANT-V36.hujson +++ b/hscontrol/policy/v2/testdata/grant_results/GRANT-V36.hujson @@ -15,29 +15,55 @@ // Expected: Rules on 6 nodes { "test_id": "GRANT-V36", - "timestamp": "2026-03-28T11:53:44Z", - "propagation_wait_seconds": 8, "input": { - "policy_file": "grant_policies_via/grant_v36.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"], - "tag:exit-a": ["kratail2tid@passkey"], - "tag:exit-b": ["kratail2tid@passkey"], - "tag:group-a": ["kratail2tid@passkey"], - "tag:group-b": ["kratail2tid@passkey"], - "tag:router-a": ["kratail2tid@passkey"], - "tag:router-b": ["kratail2tid@passkey"] + "tag:server": [ + "kratail2tid@passkey" + ], + "tag:prod": [ + "kratail2tid@passkey" + ], + "tag:client": [ + "kratail2tid@passkey" + ], + "tag:router": [ + "kratail2tid@passkey" + ], + "tag:exit": [ + "kratail2tid@passkey" + ], + "tag:exit-a": [ + "kratail2tid@passkey" + ], + "tag:exit-b": [ + "kratail2tid@passkey" + ], + "tag:group-a": [ + "kratail2tid@passkey" + ], + "tag:group-b": [ + "kratail2tid@passkey" + ], + "tag:router-a": [ + "kratail2tid@passkey" + ], + "tag:router-b": [ + "kratail2tid@passkey" + ] }, "hosts": { "webserver": "100.108.74.26", @@ -46,193 +72,222 @@ }, "autoApprovers": { "routes": { - "10.33.0.0/16": ["tag:router"], - "10.44.0.0/16": ["tag:router-a"], - "10.55.0.0/16": ["tag:router-b"], - "0.0.0.0/0": ["tag:exit", "tag:exit-a", "tag:exit-b"], - "::/0": ["tag:exit", "tag:exit-a", "tag:exit-b"] + "10.33.0.0/16": [ + "tag:router" + ], + "10.44.0.0/16": [ + "tag:router-a" + ], + "10.55.0.0/16": [ + "tag:router-b" + ], + "0.0.0.0/0": [ + "tag:exit", + "tag:exit-a", + "tag:exit-b" + ], + "::/0": [ + "tag:exit", + "tag:exit-a", + "tag:exit-b" + ] } }, "grants": [ { - "src": ["tag:group-a", "tag:group-b", "tag:exit-a", "tag:exit-b", "tag:router-a", "tag:router-b"], - "dst": ["tag:group-a", "tag:group-b", "tag:exit-a", "tag:exit-b", "tag:router-a", "tag:router-b"], - "ip": ["*"] + "src": [ + "tag:group-a", + "tag:group-b", + "tag:exit-a", + "tag:exit-b", + "tag:router-a", + "tag:router-b" + ], + "dst": [ + "tag:group-a", + "tag:group-b", + "tag:exit-a", + "tag:exit-b", + "tag:router-a", + "tag:router-b" + ], + "ip": [ + "*" + ] }, { - "src": ["tag:group-a"], - "dst": ["10.44.0.0/16"], - "via": ["tag:router-a"], - "ip": ["*"] + "src": [ + "tag:group-a" + ], + "dst": [ + "10.44.0.0/16" + ], + "via": [ + "tag:router-a" + ], + "ip": [ + "*" + ] }, { - "src": ["tag:group-b"], - "dst": ["10.55.0.0/16"], - "via": ["tag:router-b"], - "ip": ["*"] + "src": [ + "tag:group-b" + ], + "dst": [ + "10.55.0.0/16" + ], + "via": [ + "tag:router-b" + ], + "ip": [ + "*" + ] }, { - "src": ["tag:group-a"], - "dst": ["autogroup:internet"], - "via": ["tag:exit-b"], - "ip": ["*"] + "src": [ + "tag:group-a" + ], + "dst": [ + "autogroup:internet" + ], + "via": [ + "tag:exit-b" + ], + "ip": [ + "*" + ] }, { - "src": ["tag:group-b"], - "dst": ["autogroup:internet"], - "via": ["tag:exit-a"], - "ip": ["*"] + "src": [ + "tag:group-b" + ], + "dst": [ + "autogroup:internet" + ], + "via": [ + "tag:exit-a" + ], + "ip": [ + "*" + ] } ] }, - "grants_section": [ - { - "src": ["tag:group-a", "tag:group-b", "tag:exit-a", "tag:exit-b", "tag:router-a", "tag:router-b"], - "dst": ["tag:group-a", "tag:group-b", "tag:exit-a", "tag:exit-b", "tag:router-a", "tag:router-b"], - "ip": ["*"] - }, - { "src": ["tag:group-a"], "dst": ["10.44.0.0/16"], "via": ["tag:router-a"], "ip": ["*"] }, - { "src": ["tag:group-b"], "dst": ["10.55.0.0/16"], "via": ["tag:router-b"], "ip": ["*"] }, - { "src": ["tag:group-a"], "dst": ["autogroup:internet"], "via": ["tag:exit-b"], "ip": ["*"] }, - { "src": ["tag:group-b"], "dst": ["autogroup:internet"], "via": ["tag:exit-a"], "ip": ["*"] } - ], - "api_endpoint": "https://api.tailscale.com/api/v2/tailnet/kratail2tid%40passkey/acl", - "api_method": "POST", "api_response_code": 200 }, "topology": { "nodes": { "exit-a": { - "mts_name": "exit-a", - "socket": "/home/kradalby/.config/multi-tailscale-dev/exit-a/tailscaled.sock", "hostname": "exit-a", - "user_id": 3118755726458377, - "tags": ["tag:exit-a"], + "tags": [ + "tag:exit-a" + ], "ipv4": "100.124.195.93", "ipv6": "fd7a:115c:a1e0::7837:c35d" }, "exit-b": { - "mts_name": "exit-b", - "socket": "/home/kradalby/.config/multi-tailscale-dev/exit-b/tailscaled.sock", "hostname": "exit-b", - "user_id": 2230775583277936, - "tags": ["tag:exit-b"], + "tags": [ + "tag:exit-b" + ], "ipv4": "100.116.18.24", "ipv6": "fd7a:115c:a1e0::ff37:1218" }, "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"], + "tags": [ + "tag:exit" + ], "ipv4": "100.85.66.106", "ipv6": "fd7a:115c:a1e0::7c37:426a" }, "group-a-client": { - "mts_name": "group-a-client", - "socket": "/home/kradalby/.config/multi-tailscale-dev/group-a-client/tailscaled.sock", "hostname": "group-a-client", - "user_id": 6999435610919250, - "tags": ["tag:group-a"], + "tags": [ + "tag:group-a" + ], "ipv4": "100.107.162.14", "ipv6": "fd7a:115c:a1e0::a237:a20e" }, "group-b-client": { - "mts_name": "group-b-client", - "socket": "/home/kradalby/.config/multi-tailscale-dev/group-b-client/tailscaled.sock", "hostname": "group-b-client", - "user_id": 1008089393782498, - "tags": ["tag:group-b"], + "tags": [ + "tag:group-b" + ], "ipv4": "100.77.135.18", "ipv6": "fd7a:115c:a1e0::4b37:8712" }, "multi-exit-router": { - "mts_name": "multi-exit-router", - "socket": "/home/kradalby/.config/multi-tailscale-dev/multi-exit-router/tailscaled.sock", "hostname": "multi-exit-router", - "user_id": 6294409699640722, - "tags": ["tag:exit", "tag:router"], + "tags": [ + "tag:exit", + "tag:router" + ], "ipv4": "100.105.127.107", "ipv6": "fd7a:115c:a1e0::ad37:7f6b" }, "router-a": { - "mts_name": "router-a", - "socket": "/home/kradalby/.config/multi-tailscale-dev/router-a/tailscaled.sock", "hostname": "router-a", - "user_id": 50590507314324, - "tags": ["tag:router-a"], + "tags": [ + "tag:router-a" + ], "ipv4": "100.109.43.124", "ipv6": "fd7a:115c:a1e0::a537:2b7c" }, "router-b": { - "mts_name": "router-b", - "socket": "/home/kradalby/.config/multi-tailscale-dev/router-b/tailscaled.sock", "hostname": "router-b", - "user_id": 1399889648409786, - "tags": ["tag:router-b"], + "tags": [ + "tag:router-b" + ], "ipv4": "100.65.172.123", "ipv6": "fd7a:115c:a1e0::5a37:ac7c" }, "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"], + "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"], + "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"], + "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"], + "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" @@ -241,10 +296,6 @@ }, "captures": { "exit-a": { - "commands": { - "packet_filter_rules": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-a/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-a/tailscaled.sock debug localapi POST debug-packet-filter-matches" - }, "packet_filter_rules": [ { "SrcIPs": [ @@ -262,468 +313,64 @@ "fd7a:115c:a1e0::ff37:1218" ], "DstPorts": [ - { "IP": "100.124.195.93", "Ports": { "First": 0, "Last": 65535 } }, - { "IP": "fd7a:115c:a1e0::7837:c35d", "Ports": { "First": 0, "Last": 65535 } } + { + "IP": "100.124.195.93", + "Ports": { + "First": 0, + "Last": 65535 + } + }, + { + "IP": "fd7a:115c:a1e0::7837:c35d", + "Ports": { + "First": 0, + "Last": 65535 + } + } ] } ], - "packet_filter_matches": [ - { - "IPProto": [6, 17, 1, 58], - "Srcs": [ - "100.107.162.14/32", - "100.109.43.124/32", - "100.116.18.24/32", - "100.124.195.93/32", - "100.65.172.123/32", - "100.77.135.18/32", - "fd7a:115c:a1e0::4b37:8712/128", - "fd7a:115c:a1e0::5a37:ac7c/128", - "fd7a:115c:a1e0::7837:c35d/128", - "fd7a:115c:a1e0::a237:a20e/128", - "fd7a:115c:a1e0::a537:2b7c/128", - "fd7a:115c:a1e0::ff37:1218/128" - ], - "SrcCaps": null, - "Dsts": [ - { "Net": "100.124.195.93/32", "Ports": { "First": 0, "Last": 65535 } }, - { "Net": "fd7a:115c:a1e0::7837:c35d/128", "Ports": { "First": 0, "Last": 65535 } } - ], - "Caps": [] - } - ], - "whois": { - "100.116.18.24": { - "peer_name": "exit-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-a/tailscaled.sock whois --json 100.116.18.24", - "response": { - "Node": { - "ID": 2230775583277936, - "StableID": "ndK1N8hKRJ11CNTRL", - "Name": "exit-b.tail78f774.ts.net.", - "User": 1260082990019555, - "Key": "nodekey:265e1377372be0d036773ac41339bf7b53ed18e9f67f196d7d517abeff741217", - "DiscoKey": "discokey:63071b08ff89860a2d98005f8f6f65f3b92e05b7b1338b1be71e4ad866f12728", - "Addresses": ["100.116.18.24/32", "fd7a:115c:a1e0::ff37:1218/128"], - "AllowedIPs": ["100.116.18.24/32", "fd7a:115c:a1e0::ff37:1218/128"], - "Endpoints": ["77.164.248.136:35565", "10.65.0.27:35565", "172.17.0.1:35565"], - "HomeDERP": 14, - "Hostinfo": { - "OS": "linux", - "Hostname": "exit-b", - "Services": [ - { "Proto": "peerapi4", "Port": 61723 }, - { "Proto": "peerapi6", "Port": 61723 } - ] - }, - "Created": "2026-03-28T10:38:00.655990366Z", - "Cap": 131, - "Tags": ["tag:exit-b"], - "Online": true, - "ComputedName": "exit-b", - "ComputedNameWithHost": "exit-b" - }, - "UserProfile": { "ID": 1260082990019555, "LoginName": "tagged-devices", "DisplayName": "Tagged Devices" }, - "CapMap": null - } - }, - "100.85.66.106": { - "peer_name": "exit-node", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-a/tailscaled.sock whois --json 100.85.66.106", - "response": null - }, - "100.107.162.14": { - "peer_name": "group-a-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-a/tailscaled.sock whois --json 100.107.162.14", - "response": { - "Node": { - "ID": 6999435610919250, - "StableID": "nyckVfJ4fw11CNTRL", - "Name": "group-a-client.tail78f774.ts.net.", - "User": 1260082990019555, - "Key": "nodekey:802726716bd4942fceb5e444218c930040fadb082698b57ea3eb59a6a26ba20d", - "DiscoKey": "discokey:bc93c2d3b81606e44eb1c96d721e7cd73c9497aa7d3efbe2f5e0d1e2e95b190f", - "Addresses": ["100.107.162.14/32", "fd7a:115c:a1e0::a237:a20e/128"], - "AllowedIPs": ["100.107.162.14/32", "fd7a:115c:a1e0::a237:a20e/128"], - "Endpoints": ["77.164.248.136:51980", "10.65.0.27:51980", "172.17.0.1:51980"], - "HomeDERP": 14, - "Hostinfo": { - "OS": "linux", - "Hostname": "group-a-client", - "Services": [ - { "Proto": "peerapi4", "Port": 36543 }, - { "Proto": "peerapi6", "Port": 36543 } - ] - }, - "Created": "2026-03-28T10:38:04.339428828Z", - "Cap": 131, - "Tags": ["tag:group-a"], - "Online": true, - "ComputedName": "group-a-client", - "ComputedNameWithHost": "group-a-client" - }, - "UserProfile": { "ID": 1260082990019555, "LoginName": "tagged-devices", "DisplayName": "Tagged Devices" }, - "CapMap": null - } - }, - "100.77.135.18": { - "peer_name": "group-b-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-a/tailscaled.sock whois --json 100.77.135.18", - "response": { - "Node": { - "ID": 1008089393782498, - "StableID": "ndUwgLoZs811CNTRL", - "Name": "group-b-client.tail78f774.ts.net.", - "User": 1260082990019555, - "Key": "nodekey:ef35a655163204a08b33e09fdc24709f1e3aaa7f40de4efd5549cf014b4d8711", - "DiscoKey": "discokey:e972182cda0d0b459c91b2881624b81749a7e44390a5dde1b9bc17c1ae67715a", - "Addresses": ["100.77.135.18/32", "fd7a:115c:a1e0::4b37:8712/128"], - "AllowedIPs": ["100.77.135.18/32", "fd7a:115c:a1e0::4b37:8712/128"], - "Endpoints": ["77.164.248.136:49377", "10.65.0.27:49377", "172.17.0.1:49377"], - "HomeDERP": 14, - "Hostinfo": { - "OS": "linux", - "Hostname": "group-b-client", - "Services": [ - { "Proto": "peerapi4", "Port": 47173 }, - { "Proto": "peerapi6", "Port": 47173 } - ] - }, - "Created": "2026-03-28T10:38:08.031309668Z", - "Cap": 131, - "Tags": ["tag:group-b"], - "Online": true, - "ComputedName": "group-b-client", - "ComputedNameWithHost": "group-b-client" - }, - "UserProfile": { "ID": 1260082990019555, "LoginName": "tagged-devices", "DisplayName": "Tagged Devices" }, - "CapMap": null - } - }, - "100.105.127.107": { - "peer_name": "multi-exit-router", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-a/tailscaled.sock whois --json 100.105.127.107", - "response": null - }, - "100.109.43.124": { - "peer_name": "router-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-a/tailscaled.sock whois --json 100.109.43.124", - "response": { - "Node": { - "ID": 50590507314324, - "StableID": "n3kktkvuP111CNTRL", - "Name": "router-a.tail78f774.ts.net.", - "User": 1260082990019555, - "Key": "nodekey:b4566fef38b3b2b15684fc8890f5fbaea4525b467825f57a02801969a5ed2b7b", - "DiscoKey": "discokey:368ba711a8394633b4626eb7cd8e6a2df90d8e554505dc032ea9658ceee0f731", - "Addresses": ["100.109.43.124/32", "fd7a:115c:a1e0::a537:2b7c/128"], - "AllowedIPs": ["100.109.43.124/32", "fd7a:115c:a1e0::a537:2b7c/128"], - "Endpoints": ["77.164.248.136:34130", "10.65.0.27:34130", "172.17.0.1:34130"], - "HomeDERP": 14, - "Hostinfo": { - "OS": "linux", - "Hostname": "router-a", - "Services": [ - { "Proto": "peerapi4", "Port": 49439 }, - { "Proto": "peerapi6", "Port": 49439 } - ] - }, - "Created": "2026-03-28T10:38:11.734910312Z", - "Cap": 131, - "Tags": ["tag:router-a"], - "Online": true, - "ComputedName": "router-a", - "ComputedNameWithHost": "router-a" - }, - "UserProfile": { "ID": 1260082990019555, "LoginName": "tagged-devices", "DisplayName": "Tagged Devices" }, - "CapMap": null - } - }, - "100.65.172.123": { - "peer_name": "router-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-a/tailscaled.sock whois --json 100.65.172.123", - "response": { - "Node": { - "ID": 1399889648409786, - "StableID": "nPHvXBj1wB11CNTRL", - "Name": "router-b.tail78f774.ts.net.", - "User": 1260082990019555, - "Key": "nodekey:4e6d3473c516cea37bcefdf4368932c623fd91c24aee1aacc27ca8165a41ac7a", - "DiscoKey": "discokey:dd5532635b8e3ddf25186e36671c16dd17c005c8b6a6862f4b5cc4e4f459e705", - "Addresses": ["100.65.172.123/32", "fd7a:115c:a1e0::5a37:ac7c/128"], - "AllowedIPs": ["100.65.172.123/32", "fd7a:115c:a1e0::5a37:ac7c/128"], - "Endpoints": ["77.164.248.136:35931", "10.65.0.27:35931", "172.17.0.1:35931"], - "HomeDERP": 14, - "Hostinfo": { - "OS": "linux", - "Hostname": "router-b", - "Services": [ - { "Proto": "peerapi4", "Port": 58804 }, - { "Proto": "peerapi6", "Port": 58804 } - ] - }, - "Created": "2026-03-28T10:38:15.42735258Z", - "Cap": 131, - "Tags": ["tag:router-b"], - "Online": true, - "ComputedName": "router-b", - "ComputedNameWithHost": "router-b" - }, - "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/exit-a/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-a/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-a/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-a/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-a/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-a/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-a/tailscaled.sock whois --json 100.90.199.68", - "response": null - } - }, "netmap": { - "SelfNode": { - "ID": 3118755726458377, - "StableID": "nvFTscRVMR11CNTRL", - "Name": "exit-a.tail78f774.ts.net.", - "User": 3118755726458377, - "Key": "nodekey:21ab6fa3288e3bf8cecced295316c6327f427649765eb1746cc6ee9978bcc35c", - "DiscoKey": "discokey:0c8595f67987ed47cf551646d6266c21a635d622409d10745cc08f6922066e49", - "Addresses": ["100.124.195.93/32", "fd7a:115c:a1e0::7837:c35d/128"], - "AllowedIPs": ["100.124.195.93/32", "fd7a:115c:a1e0::7837:c35d/128"], - "Endpoints": ["77.164.248.136:37550", "10.65.0.27:37550", "172.17.0.1:37550"], - "Hostinfo": { - "Hostname": "exit-a", - "RoutableIPs": ["0.0.0.0/0", "::/0"], - "RequestTags": ["tag:exit-a"], - "Services": [ - { "Proto": "peerapi4", "Port": 57826 }, - { "Proto": "peerapi6", "Port": 57826 }, - { "Proto": "peerapi-dns-proxy", "Port": 1 } - ] - }, - "Created": "2026-03-28T10:37:56.932966573Z", - "Tags": ["tag:exit-a"], - "MachineAuthorized": true, - "CapMap": { - "https://tailscale.com/cap/file-sharing": null, - "https://tailscale.com/cap/is-owner": null, - "https://tailscale.com/cap/ssh": null, - "https://tailscale.com/cap/tailnet-lock": null, - "probe-udp-lifetime": null, - "ssh-behavior-v1": null, - "ssh-env-vars": null, - "store-appc-routes": null, - "tailnet-display-name": ["kratail2tid@passkey"] - }, - "ComputedName": "exit-a", - "ComputedNameWithHost": "exit-a" - }, - "AllCaps": [ - "https://tailscale.com/cap/ssh", - "https://tailscale.com/cap/tailnet-lock", - "probe-udp-lifetime", - "https://tailscale.com/cap/is-owner", - "ssh-env-vars", - "store-appc-routes", - "https://tailscale.com/cap/file-sharing", - "ssh-behavior-v1", - "tailnet-display-name" - ], - "NodeKey": "nodekey:21ab6fa3288e3bf8cecced295316c6327f427649765eb1746cc6ee9978bcc35c", - "MachineKey": "mkey:d4a36168723163165bbdcb0b17762903171593d01c26c5bb12216932f6d10876", "Peers": [ { - "ID": 50590507314324, - "StableID": "n3kktkvuP111CNTRL", "Name": "router-a.tail78f774.ts.net.", - "User": 1260082990019555, - "Key": "nodekey:b4566fef38b3b2b15684fc8890f5fbaea4525b467825f57a02801969a5ed2b7b", - "DiscoKey": "discokey:368ba711a8394633b4626eb7cd8e6a2df90d8e554505dc032ea9658ceee0f731", - "Addresses": ["100.109.43.124/32", "fd7a:115c:a1e0::a537:2b7c/128"], - "AllowedIPs": ["100.109.43.124/32", "fd7a:115c:a1e0::a537:2b7c/128"], - "Endpoints": ["77.164.248.136:34130", "10.65.0.27:34130", "172.17.0.1:34130"], - "HomeDERP": 14, - "Hostinfo": { - "OS": "linux", - "Hostname": "router-a", - "Services": [ - { "Proto": "peerapi4", "Port": 49439 }, - { "Proto": "peerapi6", "Port": 49439 } - ] - }, - "Created": "2026-03-28T10:38:11.734910312Z", - "Cap": 131, - "Tags": ["tag:router-a"], - "Online": true, - "ComputedName": "router-a", - "ComputedNameWithHost": "router-a" - }, - { - "ID": 1008089393782498, - "StableID": "ndUwgLoZs811CNTRL", - "Name": "group-b-client.tail78f774.ts.net.", - "User": 1260082990019555, - "Key": "nodekey:ef35a655163204a08b33e09fdc24709f1e3aaa7f40de4efd5549cf014b4d8711", - "DiscoKey": "discokey:e972182cda0d0b459c91b2881624b81749a7e44390a5dde1b9bc17c1ae67715a", - "Addresses": ["100.77.135.18/32", "fd7a:115c:a1e0::4b37:8712/128"], - "AllowedIPs": ["100.77.135.18/32", "fd7a:115c:a1e0::4b37:8712/128"], - "Endpoints": ["77.164.248.136:49377", "10.65.0.27:49377", "172.17.0.1:49377"], - "HomeDERP": 14, - "Hostinfo": { - "OS": "linux", - "Hostname": "group-b-client", - "Services": [ - { "Proto": "peerapi4", "Port": 47173 }, - { "Proto": "peerapi6", "Port": 47173 } - ] - }, - "Created": "2026-03-28T10:38:08.031309668Z", - "Cap": 131, - "Tags": ["tag:group-b"], - "Online": true, - "ComputedName": "group-b-client", - "ComputedNameWithHost": "group-b-client" - }, - { - "ID": 1399889648409786, - "StableID": "nPHvXBj1wB11CNTRL", - "Name": "router-b.tail78f774.ts.net.", - "User": 1260082990019555, - "Key": "nodekey:4e6d3473c516cea37bcefdf4368932c623fd91c24aee1aacc27ca8165a41ac7a", - "DiscoKey": "discokey:dd5532635b8e3ddf25186e36671c16dd17c005c8b6a6862f4b5cc4e4f459e705", - "Addresses": ["100.65.172.123/32", "fd7a:115c:a1e0::5a37:ac7c/128"], - "AllowedIPs": ["100.65.172.123/32", "fd7a:115c:a1e0::5a37:ac7c/128"], - "Endpoints": ["77.164.248.136:35931", "10.65.0.27:35931", "172.17.0.1:35931"], - "HomeDERP": 14, - "Hostinfo": { - "OS": "linux", - "Hostname": "router-b", - "Services": [ - { "Proto": "peerapi4", "Port": 58804 }, - { "Proto": "peerapi6", "Port": 58804 } - ] - }, - "Created": "2026-03-28T10:38:15.42735258Z", - "Cap": 131, - "Tags": ["tag:router-b"], - "Online": true, - "ComputedName": "router-b", - "ComputedNameWithHost": "router-b" - }, - { - "ID": 2230775583277936, - "StableID": "ndK1N8hKRJ11CNTRL", - "Name": "exit-b.tail78f774.ts.net.", - "User": 1260082990019555, - "Key": "nodekey:265e1377372be0d036773ac41339bf7b53ed18e9f67f196d7d517abeff741217", - "DiscoKey": "discokey:63071b08ff89860a2d98005f8f6f65f3b92e05b7b1338b1be71e4ad866f12728", - "Addresses": ["100.116.18.24/32", "fd7a:115c:a1e0::ff37:1218/128"], - "AllowedIPs": ["100.116.18.24/32", "fd7a:115c:a1e0::ff37:1218/128"], - "Endpoints": ["77.164.248.136:35565", "10.65.0.27:35565", "172.17.0.1:35565"], - "HomeDERP": 14, - "Hostinfo": { - "OS": "linux", - "Hostname": "exit-b", - "Services": [ - { "Proto": "peerapi4", "Port": 61723 }, - { "Proto": "peerapi6", "Port": 61723 } - ] - }, - "Created": "2026-03-28T10:38:00.655990366Z", - "Cap": 131, - "Tags": ["tag:exit-b"], - "Online": true, - "ComputedName": "exit-b", - "ComputedNameWithHost": "exit-b" - }, - { - "ID": 6999435610919250, - "StableID": "nyckVfJ4fw11CNTRL", - "Name": "group-a-client.tail78f774.ts.net.", - "User": 1260082990019555, - "Key": "nodekey:802726716bd4942fceb5e444218c930040fadb082698b57ea3eb59a6a26ba20d", - "DiscoKey": "discokey:bc93c2d3b81606e44eb1c96d721e7cd73c9497aa7d3efbe2f5e0d1e2e95b190f", - "Addresses": ["100.107.162.14/32", "fd7a:115c:a1e0::a237:a20e/128"], - "AllowedIPs": ["100.107.162.14/32", "fd7a:115c:a1e0::a237:a20e/128"], - "Endpoints": ["77.164.248.136:51980", "10.65.0.27:51980", "172.17.0.1:51980"], - "HomeDERP": 14, - "Hostinfo": { - "OS": "linux", - "Hostname": "group-a-client", - "Services": [ - { "Proto": "peerapi4", "Port": 36543 }, - { "Proto": "peerapi6", "Port": 36543 } - ] - }, - "Created": "2026-03-28T10:38:04.339428828Z", - "Cap": 131, - "Tags": ["tag:group-a"], - "Online": true, - "ComputedName": "group-a-client", - "ComputedNameWithHost": "group-a-client" - } - ], - "DNS": { - "Routes": { - "tail78f774.ts.net.": null, - "ts.net.": [{ "Addr": "199.247.155.53" }, { "Addr": "2620:111:8007::53" }] - }, - "Domains": ["tail78f774.ts.net"], - "Proxied": true, - "ExitNodeFilteredSet": [".ts.net", ".tailscale.net"] - }, - "PacketFilter": [ - { - "IPProto": [6, 17, 1, 58], - "Srcs": [ - "100.107.162.14/32", + "AllowedIPs": [ "100.109.43.124/32", - "100.116.18.24/32", - "100.124.195.93/32", - "100.65.172.123/32", + "fd7a:115c:a1e0::a537:2b7c/128" + ], + "PrimaryRoutes": [] + }, + { + "Name": "group-b-client.tail78f774.ts.net.", + "AllowedIPs": [ "100.77.135.18/32", - "fd7a:115c:a1e0::4b37:8712/128", - "fd7a:115c:a1e0::5a37:ac7c/128", - "fd7a:115c:a1e0::7837:c35d/128", - "fd7a:115c:a1e0::a237:a20e/128", - "fd7a:115c:a1e0::a537:2b7c/128", + "fd7a:115c:a1e0::4b37:8712/128" + ], + "PrimaryRoutes": [] + }, + { + "Name": "router-b.tail78f774.ts.net.", + "AllowedIPs": [ + "100.65.172.123/32", + "fd7a:115c:a1e0::5a37:ac7c/128" + ], + "PrimaryRoutes": [] + }, + { + "Name": "exit-b.tail78f774.ts.net.", + "AllowedIPs": [ + "100.116.18.24/32", "fd7a:115c:a1e0::ff37:1218/128" ], - "SrcCaps": null, - "Dsts": [ - { "Net": "100.124.195.93/32", "Ports": { "First": 0, "Last": 65535 } }, - { "Net": "fd7a:115c:a1e0::7837:c35d/128", "Ports": { "First": 0, "Last": 65535 } } + "PrimaryRoutes": [] + }, + { + "Name": "group-a-client.tail78f774.ts.net.", + "AllowedIPs": [ + "100.107.162.14/32", + "fd7a:115c:a1e0::a237:a20e/128" ], - "Caps": [] + "PrimaryRoutes": [] } ], "PacketFilterRules": [ @@ -743,990 +390,26 @@ "fd7a:115c:a1e0::ff37:1218" ], "DstPorts": [ - { "IP": "100.124.195.93", "Ports": { "First": 0, "Last": 65535 } }, - { "IP": "fd7a:115c:a1e0::7837:c35d", "Ports": { "First": 0, "Last": 65535 } } + { + "IP": "100.124.195.93", + "Ports": { + "First": 0, + "Last": 65535 + } + }, + { + "IP": "fd7a:115c:a1e0::7837:c35d", + "Ports": { + "First": 0, + "Last": 65535 + } + } ] } - ], - "SSHPolicy": { "rules": [] }, - "CollectServices": false, - "DERPMap": { - "Regions": { - "1": { - "RegionID": 1, - "RegionCode": "nyc", - "RegionName": "New York City", - "Latitude": 40.7128, - "Longitude": -74.006, - "Nodes": [ - { - "Name": "1h", - "RegionID": 1, - "HostName": "derp1h.tailscale.com", - "IPv4": "199.38.181.93", - "IPv6": "2607:f740:f::afd", - "CanPort80": true - }, - { - "Name": "1g", - "RegionID": 1, - "HostName": "derp1g.tailscale.com", - "IPv4": "209.177.145.120", - "IPv6": "2607:f740:f::3eb", - "CanPort80": true - }, - { - "Name": "1i", - "RegionID": 1, - "HostName": "derp1i.tailscale.com", - "IPv4": "199.38.181.103", - "IPv6": "2607:f740:f::e19", - "CanPort80": true - }, - { - "Name": "1f", - "RegionID": 1, - "HostName": "derp1f.tailscale.com", - "IPv4": "199.38.181.104", - "IPv6": "2607:f740:f::bc", - "CanPort80": true - } - ] - }, - "10": { - "RegionID": 10, - "RegionCode": "sea", - "RegionName": "Seattle", - "Latitude": 47.609722, - "Longitude": -122.333056, - "Nodes": [ - { - "Name": "10c", - "RegionID": 10, - "HostName": "derp10c.tailscale.com", - "IPv4": "192.73.240.121", - "IPv6": "2607:f740:14::40c", - "CanPort80": true - }, - { - "Name": "10d", - "RegionID": 10, - "HostName": "derp10d.tailscale.com", - "IPv4": "192.73.240.132", - "IPv6": "2607:f740:14::500", - "CanPort80": true - }, - { - "Name": "10b", - "RegionID": 10, - "HostName": "derp10b.tailscale.com", - "IPv4": "192.73.240.161", - "IPv6": "2607:f740:14::61c", - "CanPort80": true - } - ] - }, - "11": { - "RegionID": 11, - "RegionCode": "sao", - "RegionName": "São Paulo", - "Latitude": -23.55, - "Longitude": -46.633333, - "Nodes": [ - { - "Name": "11f", - "RegionID": 11, - "HostName": "derp11f.tailscale.com", - "IPv4": "172.237.61.197", - "IPv6": "2600:3c0d::2000:3bff:fe44:6166", - "CanPort80": true - }, - { - "Name": "11g", - "RegionID": 11, - "HostName": "derp11g.tailscale.com", - "IPv4": "172.237.61.190", - "IPv6": "2600:3c0d::2000:62ff:febe:2e67", - "CanPort80": true - }, - { - "Name": "11e", - "RegionID": 11, - "HostName": "derp11e.tailscale.com", - "IPv4": "172.237.61.194", - "IPv6": "2600:3c0d::2000:d2ff:fe43:1790", - "CanPort80": true - } - ] - }, - "12": { - "RegionID": 12, - "RegionCode": "ord", - "RegionName": "Chicago", - "Latitude": 41.881944, - "Longitude": -87.627778, - "Nodes": [ - { - "Name": "12e", - "RegionID": 12, - "HostName": "derp12e.tailscale.com", - "IPv4": "209.177.158.15", - "IPv6": "2607:f740:e::b17", - "CanPort80": true - }, - { - "Name": "12f", - "RegionID": 12, - "HostName": "derp12f.tailscale.com", - "IPv4": "199.38.182.118", - "IPv6": "2607:f740:e::4c8", - "CanPort80": true - }, - { - "Name": "12d", - "RegionID": 12, - "HostName": "derp12d.tailscale.com", - "IPv4": "209.177.158.246", - "IPv6": "2607:f740:e::811", - "CanPort80": true - } - ] - }, - "13": { - "RegionID": 13, - "RegionCode": "den", - "RegionName": "Denver", - "Latitude": 39.7392, - "Longitude": -104.9849, - "Nodes": [ - { - "Name": "13c", - "RegionID": 13, - "HostName": "derp13c.tailscale.com", - "IPv4": "192.73.242.28", - "IPv6": "2607:f740:16::5c", - "CanPort80": true - }, - { - "Name": "13d", - "RegionID": 13, - "HostName": "derp13d.tailscale.com", - "IPv4": "192.73.242.204", - "IPv6": "2607:f740:16::c23", - "CanPort80": true - }, - { - "Name": "13b", - "RegionID": 13, - "HostName": "derp13b.tailscale.com", - "IPv4": "192.73.242.187", - "IPv6": "2607:f740:16::640", - "CanPort80": true - } - ] - }, - "14": { - "RegionID": 14, - "RegionCode": "ams", - "RegionName": "Amsterdam", - "Latitude": 52.372778, - "Longitude": 4.893611, - "Nodes": [ - { - "Name": "14c", - "RegionID": 14, - "HostName": "derp14c.tailscale.com", - "IPv4": "176.58.93.147", - "IPv6": "2a00:dd80:3c::b09", - "CanPort80": true - }, - { - "Name": "14d", - "RegionID": 14, - "HostName": "derp14d.tailscale.com", - "IPv4": "176.58.93.154", - "IPv6": "2a00:dd80:3c::3d5", - "CanPort80": true - }, - { - "Name": "14b", - "RegionID": 14, - "HostName": "derp14b.tailscale.com", - "IPv4": "176.58.93.248", - "IPv6": "2a00:dd80:3c::807", - "CanPort80": true - } - ] - }, - "15": { - "RegionID": 15, - "RegionCode": "jnb", - "RegionName": "Johannesburg", - "Latitude": -26.204444, - "Longitude": 28.045556, - "Nodes": [ - { - "Name": "15c", - "RegionID": 15, - "HostName": "derp15c.tailscale.com", - "IPv4": "102.67.165.185", - "IPv6": "2c0f:edb0:0:10::b59", - "CanPort80": true - }, - { - "Name": "15d", - "RegionID": 15, - "HostName": "derp15d.tailscale.com", - "IPv4": "102.67.165.36", - "IPv6": "2c0f:edb0:0:10::599", - "CanPort80": true - }, - { - "Name": "15b", - "RegionID": 15, - "HostName": "derp15b.tailscale.com", - "IPv4": "102.67.165.90", - "IPv6": "2c0f:edb0:0:10::963", - "CanPort80": true - } - ] - }, - "16": { - "RegionID": 16, - "RegionCode": "mia", - "RegionName": "Miami", - "Latitude": 25.78, - "Longitude": -80.21, - "Nodes": [ - { - "Name": "16c", - "RegionID": 16, - "HostName": "derp16c.tailscale.com", - "IPv4": "192.73.243.229", - "IPv6": "2607:f740:17::4e4", - "CanPort80": true - }, - { - "Name": "16d", - "RegionID": 16, - "HostName": "derp16d.tailscale.com", - "IPv4": "192.73.243.141", - "IPv6": "2607:f740:17::475", - "CanPort80": true - }, - { - "Name": "16b", - "RegionID": 16, - "HostName": "derp16b.tailscale.com", - "IPv4": "192.73.243.135", - "IPv6": "2607:f740:17::476", - "CanPort80": true - } - ] - }, - "17": { - "RegionID": 17, - "RegionCode": "lax", - "RegionName": "Los Angeles", - "Latitude": 34.05, - "Longitude": -118.25, - "Nodes": [ - { - "Name": "17c", - "RegionID": 17, - "HostName": "derp17c.tailscale.com", - "IPv4": "208.111.40.12", - "IPv6": "2607:f740:c::10", - "CanPort80": true - }, - { - "Name": "17d", - "RegionID": 17, - "HostName": "derp17d.tailscale.com", - "IPv4": "208.111.40.216", - "IPv6": "2607:f740:c::e1b", - "CanPort80": true - }, - { - "Name": "17b", - "RegionID": 17, - "HostName": "derp17b.tailscale.com", - "IPv4": "192.73.244.245", - "IPv6": "2607:f740:c::646", - "CanPort80": true - } - ] - }, - "18": { - "RegionID": 18, - "RegionCode": "par", - "RegionName": "Paris", - "Latitude": 48.856667, - "Longitude": 2.352222, - "Nodes": [ - { - "Name": "18c", - "RegionID": 18, - "HostName": "derp18c.tailscale.com", - "IPv4": "176.58.90.207", - "IPv6": "2a00:dd80:3e::c19", - "CanPort80": true - }, - { - "Name": "18d", - "RegionID": 18, - "HostName": "derp18d.tailscale.com", - "IPv4": "176.58.90.104", - "IPv6": "2a00:dd80:3e::f2e", - "CanPort80": true - }, - { - "Name": "18b", - "RegionID": 18, - "HostName": "derp18b.tailscale.com", - "IPv4": "176.58.90.147", - "IPv6": "2a00:dd80:3e::363", - "CanPort80": true - } - ] - }, - "19": { - "RegionID": 19, - "RegionCode": "mad", - "RegionName": "Madrid", - "Latitude": 40.416944, - "Longitude": -3.703333, - "Nodes": [ - { - "Name": "19c", - "RegionID": 19, - "HostName": "derp19c.tailscale.com", - "IPv4": "45.159.97.61", - "IPv6": "2a00:dd80:14:10::20", - "CanPort80": true - }, - { - "Name": "19d", - "RegionID": 19, - "HostName": "derp19d.tailscale.com", - "IPv4": "45.159.97.233", - "IPv6": "2a00:dd80:14:10::34a", - "CanPort80": true - }, - { - "Name": "19b", - "RegionID": 19, - "HostName": "derp19b.tailscale.com", - "IPv4": "45.159.97.144", - "IPv6": "2a00:dd80:14:10::335", - "CanPort80": true - } - ] - }, - "2": { - "RegionID": 2, - "RegionCode": "sfo", - "RegionName": "San Francisco", - "Latitude": 37.7775, - "Longitude": -122.416389, - "Nodes": [ - { - "Name": "2e", - "RegionID": 2, - "HostName": "derp2e.tailscale.com", - "IPv4": "192.73.252.134", - "IPv6": "2607:f740:0:3f::44c", - "CanPort80": true - }, - { - "Name": "2f", - "RegionID": 2, - "HostName": "derp2f.tailscale.com", - "IPv4": "208.111.34.178", - "IPv6": "2607:f740:0:3f::f4", - "CanPort80": true - }, - { - "Name": "2d", - "RegionID": 2, - "HostName": "derp2d.tailscale.com", - "IPv4": "192.73.252.65", - "IPv6": "2607:f740:0:3f::287", - "CanPort80": true - } - ] - }, - "20": { - "RegionID": 20, - "RegionCode": "hkg", - "RegionName": "Hong Kong", - "Latitude": 22.3193, - "Longitude": 114.1694, - "Nodes": [ - { - "Name": "20c", - "RegionID": 20, - "HostName": "derp20c.tailscale.com", - "IPv4": "205.147.105.30", - "IPv6": "2403:2500:8000:1::5fb", - "CanPort80": true - }, - { - "Name": "20d", - "RegionID": 20, - "HostName": "derp20d.tailscale.com", - "IPv4": "205.147.105.78", - "IPv6": "2403:2500:8000:1::e9a", - "CanPort80": true - }, - { - "Name": "20b", - "RegionID": 20, - "HostName": "derp20b.tailscale.com", - "IPv4": "103.6.84.152", - "IPv6": "2403:2500:8000:1::ef6", - "CanPort80": true - } - ] - }, - "21": { - "RegionID": 21, - "RegionCode": "tor", - "RegionName": "Toronto", - "Latitude": 43.741667, - "Longitude": -79.373333, - "Nodes": [ - { - "Name": "21c", - "RegionID": 21, - "HostName": "derp21c.tailscale.com", - "IPv4": "162.248.221.215", - "IPv6": "2607:f740:50::f10", - "CanPort80": true - }, - { - "Name": "21d", - "RegionID": 21, - "HostName": "derp21d.tailscale.com", - "IPv4": "162.248.221.248", - "IPv6": "2607:f740:50::ca4", - "CanPort80": true - }, - { - "Name": "21b", - "RegionID": 21, - "HostName": "derp21b.tailscale.com", - "IPv4": "162.248.221.199", - "IPv6": "2607:f740:50::1d1", - "CanPort80": true - } - ] - }, - "22": { - "RegionID": 22, - "RegionCode": "waw", - "RegionName": "Warsaw", - "Latitude": 52.23, - "Longitude": 21.011111, - "Nodes": [ - { - "Name": "22c", - "RegionID": 22, - "HostName": "derp22c.tailscale.com", - "IPv4": "45.159.98.253", - "IPv6": "2a00:dd80:40:100::3f", - "CanPort80": true - }, - { - "Name": "22d", - "RegionID": 22, - "HostName": "derp22d.tailscale.com", - "IPv4": "45.159.98.145", - "IPv6": "2a00:dd80:40:100::211", - "CanPort80": true - }, - { - "Name": "22b", - "RegionID": 22, - "HostName": "derp22b.tailscale.com", - "IPv4": "45.159.98.196", - "IPv6": "2a00:dd80:40:100::316", - "CanPort80": true - } - ] - }, - "23": { - "RegionID": 23, - "RegionCode": "dbi", - "RegionName": "Dubai", - "Latitude": 25.263056, - "Longitude": 55.297222, - "Nodes": [ - { - "Name": "23c", - "RegionID": 23, - "HostName": "derp23c.tailscale.com", - "IPv4": "185.34.3.207", - "IPv6": "2a00:dd80:3f:100::a50", - "CanPort80": true - }, - { - "Name": "23d", - "RegionID": 23, - "HostName": "derp23d.tailscale.com", - "IPv4": "185.34.3.75", - "IPv6": "2a00:dd80:3f:100::97e", - "CanPort80": true - }, - { - "Name": "23b", - "RegionID": 23, - "HostName": "derp23b.tailscale.com", - "IPv4": "185.34.3.232", - "IPv6": "2a00:dd80:3f:100::76f", - "CanPort80": true - } - ] - }, - "24": { - "RegionID": 24, - "RegionCode": "hnl", - "RegionName": "Honolulu", - "Latitude": 21.306944, - "Longitude": -157.858333, - "Nodes": [ - { - "Name": "24c", - "RegionID": 24, - "HostName": "derp24c.tailscale.com", - "IPv4": "208.83.233.233", - "IPv6": "2001:19f0:c000:c591:5400:04ff:fe26:2c5f", - "CanPort80": true - }, - { - "Name": "24d", - "RegionID": 24, - "HostName": "derp24d.tailscale.com", - "IPv4": "208.72.155.133", - "IPv6": "2001:19f0:c000:c564:5400:04ff:fe26:2ba8", - "CanPort80": true - }, - { - "Name": "24b", - "RegionID": 24, - "HostName": "derp24b.tailscale.com", - "IPv4": "208.83.234.151", - "IPv6": "2001:19f0:c000:c586:5400:04ff:fe26:2ba6", - "CanPort80": true - } - ] - }, - "25": { - "RegionID": 25, - "RegionCode": "nai", - "RegionName": "Nairobi", - "Latitude": -1.286389, - "Longitude": 36.817222, - "Nodes": [ - { - "Name": "25c", - "RegionID": 25, - "HostName": "derp25c.tailscale.com", - "IPv4": "102.67.167.37", - "IPv6": "2c0f:edb0:2000:1::2c7", - "CanPort80": true - }, - { - "Name": "25d", - "RegionID": 25, - "HostName": "derp25d.tailscale.com", - "IPv4": "102.67.167.188", - "IPv6": "2c0f:edb0:2000:1::188", - "CanPort80": true - }, - { - "Name": "25b", - "RegionID": 25, - "HostName": "derp25b.tailscale.com", - "IPv4": "102.67.167.245", - "IPv6": "2c0f:edb0:2000:1::2e9", - "CanPort80": true - } - ] - }, - "26": { - "RegionID": 26, - "RegionCode": "nue", - "RegionName": "Nuremberg", - "Latitude": 49.453889, - "Longitude": 11.0775, - "Nodes": [ - { - "Name": "26c", - "RegionID": 26, - "HostName": "derp26c.tailscale.com", - "IPv4": "49.12.193.137", - "IPv6": "2a01:4f8:1c1c:5c70::1", - "CanPort80": true - }, - { - "Name": "26d", - "RegionID": 26, - "HostName": "derp26d.tailscale.com", - "IPv4": "49.13.204.141", - "IPv6": "2a01:4f8:1c0c:7d06::1", - "CanPort80": true - }, - { - "Name": "26b", - "RegionID": 26, - "HostName": "derp26b.tailscale.com", - "IPv4": "167.235.72.200", - "IPv6": "2a01:4f8:1c1c:47b6::1", - "CanPort80": true - } - ] - }, - "27": { - "RegionID": 27, - "RegionCode": "iad", - "RegionName": "Ashburn", - "Latitude": 39.03, - "Longitude": -77.471111, - "Nodes": [ - { - "Name": "27d", - "RegionID": 27, - "HostName": "derp27d.tailscale.com", - "IPv4": "178.156.152.106", - "IPv6": "2a01:4ff:f0:3c8e::1", - "CanPort80": true - }, - { - "Name": "27c", - "RegionID": 27, - "HostName": "derp27c.tailscale.com", - "IPv4": "178.156.152.91", - "IPv6": "2a01:4ff:f0:3913::1", - "CanPort80": true - }, - { - "Name": "27e", - "RegionID": 27, - "HostName": "derp27e.tailscale.com", - "IPv4": "178.156.134.232", - "IPv6": "2a01:4ff:f0:28d4::1", - "CanPort80": true - }, - { - "Name": "27b", - "RegionID": 27, - "HostName": "derp27b.tailscale.com", - "IPv4": "5.161.218.233", - "IPv6": "2a01:4ff:f0:3db9::1", - "CanPort80": true - } - ] - }, - "28": { - "RegionID": 28, - "RegionCode": "hel", - "RegionName": "Helsinki", - "Latitude": 60.170833, - "Longitude": 24.9375, - "Nodes": [ - { - "Name": "28c", - "RegionID": 28, - "HostName": "derp28c.tailscale.com", - "IPv4": "95.217.2.165", - "IPv6": "2a01:4f9:c012:cd74::1", - "CanPort80": true - }, - { - "Name": "28d", - "RegionID": 28, - "HostName": "derp28d.tailscale.com", - "IPv4": "157.180.28.32", - "IPv6": "2a01:4f9:c012:2e5b::1", - "CanPort80": true - }, - { - "Name": "28b", - "RegionID": 28, - "HostName": "derp28b.tailscale.com", - "IPv4": "65.109.143.62", - "IPv6": "2a01:4f9:c012:d55c::1", - "CanPort80": true - } - ] - }, - "3": { - "RegionID": 3, - "RegionCode": "sin", - "RegionName": "Singapore", - "Latitude": 1.3521, - "Longitude": 103.8198, - "Nodes": [ - { - "Name": "3g", - "RegionID": 3, - "HostName": "derp3g.tailscale.com", - "IPv4": "172.237.72.79", - "IPv6": "2600:3c15::2000:adff:fe08:6fab", - "CanPort80": true - }, - { - "Name": "3f", - "RegionID": 3, - "HostName": "derp3f.tailscale.com", - "IPv4": "172.237.72.8", - "IPv6": "2600:3c15::2000:53ff:fe48:a668", - "CanPort80": true - }, - { - "Name": "3h", - "RegionID": 3, - "HostName": "derp3h.tailscale.com", - "IPv4": "172.237.66.30", - "IPv6": "2600:3c15::2000:3dff:fe44:50aa", - "CanPort80": true - }, - { - "Name": "3e", - "RegionID": 3, - "HostName": "derp3e.tailscale.com", - "IPv4": "172.237.72.43", - "IPv6": "2600:3c15::2000:6cff:fee4:d799", - "CanPort80": true - } - ] - }, - "4": { - "RegionID": 4, - "RegionCode": "fra", - "RegionName": "Frankfurt", - "Latitude": 50.1109, - "Longitude": 8.6821, - "Nodes": [ - { - "Name": "4h", - "RegionID": 4, - "HostName": "derp4h.tailscale.com", - "IPv4": "185.40.234.77", - "IPv6": "2a00:dd80:20::bcf", - "CanPort80": true - }, - { - "Name": "4g", - "RegionID": 4, - "HostName": "derp4g.tailscale.com", - "IPv4": "185.40.234.113", - "IPv6": "2a00:dd80:20::8f", - "CanPort80": true - }, - { - "Name": "4i", - "RegionID": 4, - "HostName": "derp4i.tailscale.com", - "IPv4": "185.40.234.53", - "IPv6": "2a00:dd80:20::8a6", - "CanPort80": true - }, - { - "Name": "4f", - "RegionID": 4, - "HostName": "derp4f.tailscale.com", - "IPv4": "185.40.234.219", - "IPv6": "2a00:dd80:20::a25", - "CanPort80": true - } - ] - }, - "5": { - "RegionID": 5, - "RegionCode": "syd", - "RegionName": "Sydney", - "Latitude": -33.867778, - "Longitude": 151.21, - "Nodes": [ - { - "Name": "5f", - "RegionID": 5, - "HostName": "derp5f.tailscale.com", - "IPv4": "172.105.166.103", - "IPv6": "2400:8907::2000:ccff:fe1f:80da", - "CanPort80": true - }, - { - "Name": "5g", - "RegionID": 5, - "HostName": "derp5g.tailscale.com", - "IPv4": "172.105.169.57", - "IPv6": "2400:8907::2000:2fff:fea7:57f4", - "CanPort80": true - }, - { - "Name": "5e", - "RegionID": 5, - "HostName": "derp5e.tailscale.com", - "IPv4": "172.105.179.230", - "IPv6": "2400:8907::2000:ceff:fe8d:4f4e", - "CanPort80": true - } - ] - }, - "6": { - "RegionID": 6, - "RegionCode": "blr", - "RegionName": "Bengaluru", - "Latitude": 12.9716, - "Longitude": 77.5946, - "Nodes": [ - { - "Name": "6a", - "RegionID": 6, - "HostName": "derp6.tailscale.com", - "IPv4": "68.183.90.120", - "IPv6": "2400:6180:100:d0::982:d001", - "CanPort80": true - } - ] - }, - "7": { - "RegionID": 7, - "RegionCode": "tok", - "RegionName": "Tokyo", - "Latitude": 35.6764, - "Longitude": 139.65, - "Nodes": [ - { - "Name": "7g", - "RegionID": 7, - "HostName": "derp7g.tailscale.com", - "IPv4": "172.238.6.179", - "IPv6": "2600:3c18::2000:3fff:fe80:3ebd", - "CanPort80": true - }, - { - "Name": "7f", - "RegionID": 7, - "HostName": "derp7f.tailscale.com", - "IPv4": "172.238.6.34", - "IPv6": "2600:3c18::2000:acff:fe8e:3ed5", - "CanPort80": true - }, - { - "Name": "7h", - "RegionID": 7, - "HostName": "derp7h.tailscale.com", - "IPv4": "172.237.28.183", - "IPv6": "2600:3c18::2000:b1ff:fea9:4560", - "CanPort80": true - }, - { - "Name": "7e", - "RegionID": 7, - "HostName": "derp7e.tailscale.com", - "IPv4": "172.238.6.180", - "IPv6": "2600:3c18::2000:60ff:fe0f:6e83", - "STUNOnly": true, - "CanPort80": true - } - ] - }, - "8": { - "RegionID": 8, - "RegionCode": "lhr", - "RegionName": "London", - "Latitude": 51.5072, - "Longitude": 0.1276, - "Nodes": [ - { - "Name": "8f", - "RegionID": 8, - "HostName": "derp8f.tailscale.com", - "IPv4": "176.58.88.183", - "IPv6": "2a00:dd80:3a::dfa", - "CanPort80": true - }, - { - "Name": "8g", - "RegionID": 8, - "HostName": "derp8g.tailscale.com", - "IPv4": "176.58.92.254", - "IPv6": "2a00:dd80:3a::ed", - "CanPort80": true - }, - { - "Name": "8e", - "RegionID": 8, - "HostName": "derp8e.tailscale.com", - "IPv4": "176.58.92.144", - "IPv6": "2a00:dd80:3a::b33", - "CanPort80": true - } - ] - }, - "9": { - "RegionID": 9, - "RegionCode": "dfw", - "RegionName": "Dallas", - "Latitude": 32.779167, - "Longitude": -96.808889, - "Nodes": [ - { - "Name": "9e", - "RegionID": 9, - "HostName": "derp9e.tailscale.com", - "IPv4": "192.73.248.83", - "IPv6": "2607:f740:100::359", - "CanPort80": true - }, - { - "Name": "9f", - "RegionID": 9, - "HostName": "derp9f.tailscale.com", - "IPv4": "209.177.156.197", - "IPv6": "2607:f740:100::cad", - "CanPort80": true - }, - { - "Name": "9d", - "RegionID": 9, - "HostName": "derp9d.tailscale.com", - "IPv4": "209.177.156.94", - "IPv6": "2607:f740:100::c05", - "CanPort80": true - } - ] - } - } - }, - "DisplayMessages": null, - "TKAEnabled": false, - "TKAHead": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", - "Domain": "kratail2tid@passkey", - "DomainAuditLogID": "", - "UserProfiles": { - "1260082990019555": { - "ID": 1260082990019555, - "LoginName": "tagged-devices", - "DisplayName": "Tagged Devices" - }, - "3118755726458377": { - "ID": 3118755726458377, - "LoginName": "exit-a.tail78f774.ts.net", - "DisplayName": "exit-a" - } - } + ] } }, "exit-b": { - "commands": { - "packet_filter_rules": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-b/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-b/tailscaled.sock debug localapi POST debug-packet-filter-matches" - }, "packet_filter_rules": [ { "SrcIPs": [ @@ -1744,468 +427,64 @@ "fd7a:115c:a1e0::ff37:1218" ], "DstPorts": [ - { "IP": "100.116.18.24", "Ports": { "First": 0, "Last": 65535 } }, - { "IP": "fd7a:115c:a1e0::ff37:1218", "Ports": { "First": 0, "Last": 65535 } } + { + "IP": "100.116.18.24", + "Ports": { + "First": 0, + "Last": 65535 + } + }, + { + "IP": "fd7a:115c:a1e0::ff37:1218", + "Ports": { + "First": 0, + "Last": 65535 + } + } ] } ], - "packet_filter_matches": [ - { - "IPProto": [6, 17, 1, 58], - "Srcs": [ - "100.107.162.14/32", - "100.109.43.124/32", - "100.116.18.24/32", - "100.124.195.93/32", - "100.65.172.123/32", - "100.77.135.18/32", - "fd7a:115c:a1e0::4b37:8712/128", - "fd7a:115c:a1e0::5a37:ac7c/128", - "fd7a:115c:a1e0::7837:c35d/128", - "fd7a:115c:a1e0::a237:a20e/128", - "fd7a:115c:a1e0::a537:2b7c/128", - "fd7a:115c:a1e0::ff37:1218/128" - ], - "SrcCaps": null, - "Dsts": [ - { "Net": "100.116.18.24/32", "Ports": { "First": 0, "Last": 65535 } }, - { "Net": "fd7a:115c:a1e0::ff37:1218/128", "Ports": { "First": 0, "Last": 65535 } } - ], - "Caps": [] - } - ], - "whois": { - "100.124.195.93": { - "peer_name": "exit-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-b/tailscaled.sock whois --json 100.124.195.93", - "response": { - "Node": { - "ID": 3118755726458377, - "StableID": "nvFTscRVMR11CNTRL", - "Name": "exit-a.tail78f774.ts.net.", - "User": 1260082990019555, - "Key": "nodekey:21ab6fa3288e3bf8cecced295316c6327f427649765eb1746cc6ee9978bcc35c", - "DiscoKey": "discokey:0c8595f67987ed47cf551646d6266c21a635d622409d10745cc08f6922066e49", - "Addresses": ["100.124.195.93/32", "fd7a:115c:a1e0::7837:c35d/128"], - "AllowedIPs": ["100.124.195.93/32", "fd7a:115c:a1e0::7837:c35d/128"], - "Endpoints": ["77.164.248.136:37550", "10.65.0.27:37550", "172.17.0.1:37550"], - "HomeDERP": 14, - "Hostinfo": { - "OS": "linux", - "Hostname": "exit-a", - "Services": [ - { "Proto": "peerapi4", "Port": 57826 }, - { "Proto": "peerapi6", "Port": 57826 } - ] - }, - "Created": "2026-03-28T10:37:56.932966573Z", - "Cap": 131, - "Tags": ["tag:exit-a"], - "Online": true, - "ComputedName": "exit-a", - "ComputedNameWithHost": "exit-a" - }, - "UserProfile": { "ID": 1260082990019555, "LoginName": "tagged-devices", "DisplayName": "Tagged Devices" }, - "CapMap": null - } - }, - "100.85.66.106": { - "peer_name": "exit-node", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-b/tailscaled.sock whois --json 100.85.66.106", - "response": null - }, - "100.107.162.14": { - "peer_name": "group-a-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-b/tailscaled.sock whois --json 100.107.162.14", - "response": { - "Node": { - "ID": 6999435610919250, - "StableID": "nyckVfJ4fw11CNTRL", - "Name": "group-a-client.tail78f774.ts.net.", - "User": 1260082990019555, - "Key": "nodekey:802726716bd4942fceb5e444218c930040fadb082698b57ea3eb59a6a26ba20d", - "DiscoKey": "discokey:bc93c2d3b81606e44eb1c96d721e7cd73c9497aa7d3efbe2f5e0d1e2e95b190f", - "Addresses": ["100.107.162.14/32", "fd7a:115c:a1e0::a237:a20e/128"], - "AllowedIPs": ["100.107.162.14/32", "fd7a:115c:a1e0::a237:a20e/128"], - "Endpoints": ["77.164.248.136:51980", "10.65.0.27:51980", "172.17.0.1:51980"], - "HomeDERP": 14, - "Hostinfo": { - "OS": "linux", - "Hostname": "group-a-client", - "Services": [ - { "Proto": "peerapi4", "Port": 36543 }, - { "Proto": "peerapi6", "Port": 36543 } - ] - }, - "Created": "2026-03-28T10:38:04.339428828Z", - "Cap": 131, - "Tags": ["tag:group-a"], - "Online": true, - "ComputedName": "group-a-client", - "ComputedNameWithHost": "group-a-client" - }, - "UserProfile": { "ID": 1260082990019555, "LoginName": "tagged-devices", "DisplayName": "Tagged Devices" }, - "CapMap": null - } - }, - "100.77.135.18": { - "peer_name": "group-b-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-b/tailscaled.sock whois --json 100.77.135.18", - "response": { - "Node": { - "ID": 1008089393782498, - "StableID": "ndUwgLoZs811CNTRL", - "Name": "group-b-client.tail78f774.ts.net.", - "User": 1260082990019555, - "Key": "nodekey:ef35a655163204a08b33e09fdc24709f1e3aaa7f40de4efd5549cf014b4d8711", - "DiscoKey": "discokey:e972182cda0d0b459c91b2881624b81749a7e44390a5dde1b9bc17c1ae67715a", - "Addresses": ["100.77.135.18/32", "fd7a:115c:a1e0::4b37:8712/128"], - "AllowedIPs": ["100.77.135.18/32", "fd7a:115c:a1e0::4b37:8712/128"], - "Endpoints": ["77.164.248.136:49377", "10.65.0.27:49377", "172.17.0.1:49377"], - "HomeDERP": 14, - "Hostinfo": { - "OS": "linux", - "Hostname": "group-b-client", - "Services": [ - { "Proto": "peerapi4", "Port": 47173 }, - { "Proto": "peerapi6", "Port": 47173 } - ] - }, - "Created": "2026-03-28T10:38:08.031309668Z", - "Cap": 131, - "Tags": ["tag:group-b"], - "Online": true, - "ComputedName": "group-b-client", - "ComputedNameWithHost": "group-b-client" - }, - "UserProfile": { "ID": 1260082990019555, "LoginName": "tagged-devices", "DisplayName": "Tagged Devices" }, - "CapMap": null - } - }, - "100.105.127.107": { - "peer_name": "multi-exit-router", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-b/tailscaled.sock whois --json 100.105.127.107", - "response": null - }, - "100.109.43.124": { - "peer_name": "router-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-b/tailscaled.sock whois --json 100.109.43.124", - "response": { - "Node": { - "ID": 50590507314324, - "StableID": "n3kktkvuP111CNTRL", - "Name": "router-a.tail78f774.ts.net.", - "User": 1260082990019555, - "Key": "nodekey:b4566fef38b3b2b15684fc8890f5fbaea4525b467825f57a02801969a5ed2b7b", - "DiscoKey": "discokey:368ba711a8394633b4626eb7cd8e6a2df90d8e554505dc032ea9658ceee0f731", - "Addresses": ["100.109.43.124/32", "fd7a:115c:a1e0::a537:2b7c/128"], - "AllowedIPs": ["100.109.43.124/32", "fd7a:115c:a1e0::a537:2b7c/128"], - "Endpoints": ["77.164.248.136:34130", "10.65.0.27:34130", "172.17.0.1:34130"], - "HomeDERP": 14, - "Hostinfo": { - "OS": "linux", - "Hostname": "router-a", - "Services": [ - { "Proto": "peerapi4", "Port": 49439 }, - { "Proto": "peerapi6", "Port": 49439 } - ] - }, - "Created": "2026-03-28T10:38:11.734910312Z", - "Cap": 131, - "Tags": ["tag:router-a"], - "Online": true, - "ComputedName": "router-a", - "ComputedNameWithHost": "router-a" - }, - "UserProfile": { "ID": 1260082990019555, "LoginName": "tagged-devices", "DisplayName": "Tagged Devices" }, - "CapMap": null - } - }, - "100.65.172.123": { - "peer_name": "router-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-b/tailscaled.sock whois --json 100.65.172.123", - "response": { - "Node": { - "ID": 1399889648409786, - "StableID": "nPHvXBj1wB11CNTRL", - "Name": "router-b.tail78f774.ts.net.", - "User": 1260082990019555, - "Key": "nodekey:4e6d3473c516cea37bcefdf4368932c623fd91c24aee1aacc27ca8165a41ac7a", - "DiscoKey": "discokey:dd5532635b8e3ddf25186e36671c16dd17c005c8b6a6862f4b5cc4e4f459e705", - "Addresses": ["100.65.172.123/32", "fd7a:115c:a1e0::5a37:ac7c/128"], - "AllowedIPs": ["100.65.172.123/32", "fd7a:115c:a1e0::5a37:ac7c/128"], - "Endpoints": ["77.164.248.136:35931", "10.65.0.27:35931", "172.17.0.1:35931"], - "HomeDERP": 14, - "Hostinfo": { - "OS": "linux", - "Hostname": "router-b", - "Services": [ - { "Proto": "peerapi4", "Port": 58804 }, - { "Proto": "peerapi6", "Port": 58804 } - ] - }, - "Created": "2026-03-28T10:38:15.42735258Z", - "Cap": 131, - "Tags": ["tag:router-b"], - "Online": true, - "ComputedName": "router-b", - "ComputedNameWithHost": "router-b" - }, - "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/exit-b/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-b/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-b/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-b/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-b/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-b/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-b/tailscaled.sock whois --json 100.90.199.68", - "response": null - } - }, "netmap": { - "SelfNode": { - "ID": 2230775583277936, - "StableID": "ndK1N8hKRJ11CNTRL", - "Name": "exit-b.tail78f774.ts.net.", - "User": 2230775583277936, - "Key": "nodekey:265e1377372be0d036773ac41339bf7b53ed18e9f67f196d7d517abeff741217", - "DiscoKey": "discokey:63071b08ff89860a2d98005f8f6f65f3b92e05b7b1338b1be71e4ad866f12728", - "Addresses": ["100.116.18.24/32", "fd7a:115c:a1e0::ff37:1218/128"], - "AllowedIPs": ["100.116.18.24/32", "fd7a:115c:a1e0::ff37:1218/128"], - "Endpoints": ["77.164.248.136:35565", "10.65.0.27:35565", "172.17.0.1:35565"], - "Hostinfo": { - "Hostname": "exit-b", - "RoutableIPs": ["0.0.0.0/0", "::/0"], - "RequestTags": ["tag:exit-b"], - "Services": [ - { "Proto": "peerapi4", "Port": 61723 }, - { "Proto": "peerapi6", "Port": 61723 }, - { "Proto": "peerapi-dns-proxy", "Port": 1 } - ] - }, - "Created": "2026-03-28T10:38:00.655990366Z", - "Tags": ["tag:exit-b"], - "MachineAuthorized": true, - "CapMap": { - "https://tailscale.com/cap/file-sharing": null, - "https://tailscale.com/cap/is-owner": null, - "https://tailscale.com/cap/ssh": null, - "https://tailscale.com/cap/tailnet-lock": null, - "probe-udp-lifetime": null, - "ssh-behavior-v1": null, - "ssh-env-vars": null, - "store-appc-routes": null, - "tailnet-display-name": ["kratail2tid@passkey"] - }, - "ComputedName": "exit-b", - "ComputedNameWithHost": "exit-b" - }, - "AllCaps": [ - "ssh-env-vars", - "https://tailscale.com/cap/ssh", - "https://tailscale.com/cap/file-sharing", - "store-appc-routes", - "https://tailscale.com/cap/is-owner", - "ssh-behavior-v1", - "tailnet-display-name", - "https://tailscale.com/cap/tailnet-lock", - "probe-udp-lifetime" - ], - "NodeKey": "nodekey:265e1377372be0d036773ac41339bf7b53ed18e9f67f196d7d517abeff741217", - "MachineKey": "mkey:f4cbc28e2db0f8d8a6a5fc3991b055477e5efc6c025d24b72d3509fa3743401c", "Peers": [ { - "ID": 50590507314324, - "StableID": "n3kktkvuP111CNTRL", "Name": "router-a.tail78f774.ts.net.", - "User": 1260082990019555, - "Key": "nodekey:b4566fef38b3b2b15684fc8890f5fbaea4525b467825f57a02801969a5ed2b7b", - "DiscoKey": "discokey:368ba711a8394633b4626eb7cd8e6a2df90d8e554505dc032ea9658ceee0f731", - "Addresses": ["100.109.43.124/32", "fd7a:115c:a1e0::a537:2b7c/128"], - "AllowedIPs": ["100.109.43.124/32", "fd7a:115c:a1e0::a537:2b7c/128"], - "Endpoints": ["77.164.248.136:34130", "10.65.0.27:34130", "172.17.0.1:34130"], - "HomeDERP": 14, - "Hostinfo": { - "OS": "linux", - "Hostname": "router-a", - "Services": [ - { "Proto": "peerapi4", "Port": 49439 }, - { "Proto": "peerapi6", "Port": 49439 } - ] - }, - "Created": "2026-03-28T10:38:11.734910312Z", - "Cap": 131, - "Tags": ["tag:router-a"], - "Online": true, - "ComputedName": "router-a", - "ComputedNameWithHost": "router-a" - }, - { - "ID": 1008089393782498, - "StableID": "ndUwgLoZs811CNTRL", - "Name": "group-b-client.tail78f774.ts.net.", - "User": 1260082990019555, - "Key": "nodekey:ef35a655163204a08b33e09fdc24709f1e3aaa7f40de4efd5549cf014b4d8711", - "DiscoKey": "discokey:e972182cda0d0b459c91b2881624b81749a7e44390a5dde1b9bc17c1ae67715a", - "Addresses": ["100.77.135.18/32", "fd7a:115c:a1e0::4b37:8712/128"], - "AllowedIPs": ["100.77.135.18/32", "fd7a:115c:a1e0::4b37:8712/128"], - "Endpoints": ["77.164.248.136:49377", "10.65.0.27:49377", "172.17.0.1:49377"], - "HomeDERP": 14, - "Hostinfo": { - "OS": "linux", - "Hostname": "group-b-client", - "Services": [ - { "Proto": "peerapi4", "Port": 47173 }, - { "Proto": "peerapi6", "Port": 47173 } - ] - }, - "Created": "2026-03-28T10:38:08.031309668Z", - "Cap": 131, - "Tags": ["tag:group-b"], - "Online": true, - "ComputedName": "group-b-client", - "ComputedNameWithHost": "group-b-client" - }, - { - "ID": 1399889648409786, - "StableID": "nPHvXBj1wB11CNTRL", - "Name": "router-b.tail78f774.ts.net.", - "User": 1260082990019555, - "Key": "nodekey:4e6d3473c516cea37bcefdf4368932c623fd91c24aee1aacc27ca8165a41ac7a", - "DiscoKey": "discokey:dd5532635b8e3ddf25186e36671c16dd17c005c8b6a6862f4b5cc4e4f459e705", - "Addresses": ["100.65.172.123/32", "fd7a:115c:a1e0::5a37:ac7c/128"], - "AllowedIPs": ["100.65.172.123/32", "fd7a:115c:a1e0::5a37:ac7c/128"], - "Endpoints": ["77.164.248.136:35931", "10.65.0.27:35931", "172.17.0.1:35931"], - "HomeDERP": 14, - "Hostinfo": { - "OS": "linux", - "Hostname": "router-b", - "Services": [ - { "Proto": "peerapi4", "Port": 58804 }, - { "Proto": "peerapi6", "Port": 58804 } - ] - }, - "Created": "2026-03-28T10:38:15.42735258Z", - "Cap": 131, - "Tags": ["tag:router-b"], - "Online": true, - "ComputedName": "router-b", - "ComputedNameWithHost": "router-b" - }, - { - "ID": 3118755726458377, - "StableID": "nvFTscRVMR11CNTRL", - "Name": "exit-a.tail78f774.ts.net.", - "User": 1260082990019555, - "Key": "nodekey:21ab6fa3288e3bf8cecced295316c6327f427649765eb1746cc6ee9978bcc35c", - "DiscoKey": "discokey:0c8595f67987ed47cf551646d6266c21a635d622409d10745cc08f6922066e49", - "Addresses": ["100.124.195.93/32", "fd7a:115c:a1e0::7837:c35d/128"], - "AllowedIPs": ["100.124.195.93/32", "fd7a:115c:a1e0::7837:c35d/128"], - "Endpoints": ["77.164.248.136:37550", "10.65.0.27:37550", "172.17.0.1:37550"], - "HomeDERP": 14, - "Hostinfo": { - "OS": "linux", - "Hostname": "exit-a", - "Services": [ - { "Proto": "peerapi4", "Port": 57826 }, - { "Proto": "peerapi6", "Port": 57826 } - ] - }, - "Created": "2026-03-28T10:37:56.932966573Z", - "Cap": 131, - "Tags": ["tag:exit-a"], - "Online": true, - "ComputedName": "exit-a", - "ComputedNameWithHost": "exit-a" - }, - { - "ID": 6999435610919250, - "StableID": "nyckVfJ4fw11CNTRL", - "Name": "group-a-client.tail78f774.ts.net.", - "User": 1260082990019555, - "Key": "nodekey:802726716bd4942fceb5e444218c930040fadb082698b57ea3eb59a6a26ba20d", - "DiscoKey": "discokey:bc93c2d3b81606e44eb1c96d721e7cd73c9497aa7d3efbe2f5e0d1e2e95b190f", - "Addresses": ["100.107.162.14/32", "fd7a:115c:a1e0::a237:a20e/128"], - "AllowedIPs": ["100.107.162.14/32", "fd7a:115c:a1e0::a237:a20e/128"], - "Endpoints": ["77.164.248.136:51980", "10.65.0.27:51980", "172.17.0.1:51980"], - "HomeDERP": 14, - "Hostinfo": { - "OS": "linux", - "Hostname": "group-a-client", - "Services": [ - { "Proto": "peerapi4", "Port": 36543 }, - { "Proto": "peerapi6", "Port": 36543 } - ] - }, - "Created": "2026-03-28T10:38:04.339428828Z", - "Cap": 131, - "Tags": ["tag:group-a"], - "Online": true, - "ComputedName": "group-a-client", - "ComputedNameWithHost": "group-a-client" - } - ], - "DNS": { - "Routes": { - "tail78f774.ts.net.": null, - "ts.net.": [{ "Addr": "199.247.155.53" }, { "Addr": "2620:111:8007::53" }] - }, - "Domains": ["tail78f774.ts.net"], - "Proxied": true, - "ExitNodeFilteredSet": [".ts.net", ".tailscale.net"] - }, - "PacketFilter": [ - { - "IPProto": [6, 17, 1, 58], - "Srcs": [ - "100.107.162.14/32", + "AllowedIPs": [ "100.109.43.124/32", - "100.116.18.24/32", - "100.124.195.93/32", - "100.65.172.123/32", + "fd7a:115c:a1e0::a537:2b7c/128" + ], + "PrimaryRoutes": [] + }, + { + "Name": "group-b-client.tail78f774.ts.net.", + "AllowedIPs": [ "100.77.135.18/32", - "fd7a:115c:a1e0::4b37:8712/128", - "fd7a:115c:a1e0::5a37:ac7c/128", - "fd7a:115c:a1e0::7837:c35d/128", - "fd7a:115c:a1e0::a237:a20e/128", - "fd7a:115c:a1e0::a537:2b7c/128", - "fd7a:115c:a1e0::ff37:1218/128" + "fd7a:115c:a1e0::4b37:8712/128" ], - "SrcCaps": null, - "Dsts": [ - { "Net": "100.116.18.24/32", "Ports": { "First": 0, "Last": 65535 } }, - { "Net": "fd7a:115c:a1e0::ff37:1218/128", "Ports": { "First": 0, "Last": 65535 } } + "PrimaryRoutes": [] + }, + { + "Name": "router-b.tail78f774.ts.net.", + "AllowedIPs": [ + "100.65.172.123/32", + "fd7a:115c:a1e0::5a37:ac7c/128" ], - "Caps": [] + "PrimaryRoutes": [] + }, + { + "Name": "exit-a.tail78f774.ts.net.", + "AllowedIPs": [ + "100.124.195.93/32", + "fd7a:115c:a1e0::7837:c35d/128" + ], + "PrimaryRoutes": [] + }, + { + "Name": "group-a-client.tail78f774.ts.net.", + "AllowedIPs": [ + "100.107.162.14/32", + "fd7a:115c:a1e0::a237:a20e/128" + ], + "PrimaryRoutes": [] } ], "PacketFilterRules": [ @@ -2225,2101 +504,33 @@ "fd7a:115c:a1e0::ff37:1218" ], "DstPorts": [ - { "IP": "100.116.18.24", "Ports": { "First": 0, "Last": 65535 } }, - { "IP": "fd7a:115c:a1e0::ff37:1218", "Ports": { "First": 0, "Last": 65535 } } + { + "IP": "100.116.18.24", + "Ports": { + "First": 0, + "Last": 65535 + } + }, + { + "IP": "fd7a:115c:a1e0::ff37:1218", + "Ports": { + "First": 0, + "Last": 65535 + } + } ] } - ], - "SSHPolicy": { "rules": [] }, - "CollectServices": false, - "DERPMap": { - "Regions": { - "1": { - "RegionID": 1, - "RegionCode": "nyc", - "RegionName": "New York City", - "Latitude": 40.7128, - "Longitude": -74.006, - "Nodes": [ - { - "Name": "1h", - "RegionID": 1, - "HostName": "derp1h.tailscale.com", - "IPv4": "199.38.181.93", - "IPv6": "2607:f740:f::afd", - "CanPort80": true - }, - { - "Name": "1g", - "RegionID": 1, - "HostName": "derp1g.tailscale.com", - "IPv4": "209.177.145.120", - "IPv6": "2607:f740:f::3eb", - "CanPort80": true - }, - { - "Name": "1i", - "RegionID": 1, - "HostName": "derp1i.tailscale.com", - "IPv4": "199.38.181.103", - "IPv6": "2607:f740:f::e19", - "CanPort80": true - }, - { - "Name": "1f", - "RegionID": 1, - "HostName": "derp1f.tailscale.com", - "IPv4": "199.38.181.104", - "IPv6": "2607:f740:f::bc", - "CanPort80": true - } - ] - }, - "10": { - "RegionID": 10, - "RegionCode": "sea", - "RegionName": "Seattle", - "Latitude": 47.609722, - "Longitude": -122.333056, - "Nodes": [ - { - "Name": "10c", - "RegionID": 10, - "HostName": "derp10c.tailscale.com", - "IPv4": "192.73.240.121", - "IPv6": "2607:f740:14::40c", - "CanPort80": true - }, - { - "Name": "10d", - "RegionID": 10, - "HostName": "derp10d.tailscale.com", - "IPv4": "192.73.240.132", - "IPv6": "2607:f740:14::500", - "CanPort80": true - }, - { - "Name": "10b", - "RegionID": 10, - "HostName": "derp10b.tailscale.com", - "IPv4": "192.73.240.161", - "IPv6": "2607:f740:14::61c", - "CanPort80": true - } - ] - }, - "11": { - "RegionID": 11, - "RegionCode": "sao", - "RegionName": "São Paulo", - "Latitude": -23.55, - "Longitude": -46.633333, - "Nodes": [ - { - "Name": "11f", - "RegionID": 11, - "HostName": "derp11f.tailscale.com", - "IPv4": "172.237.61.197", - "IPv6": "2600:3c0d::2000:3bff:fe44:6166", - "CanPort80": true - }, - { - "Name": "11g", - "RegionID": 11, - "HostName": "derp11g.tailscale.com", - "IPv4": "172.237.61.190", - "IPv6": "2600:3c0d::2000:62ff:febe:2e67", - "CanPort80": true - }, - { - "Name": "11e", - "RegionID": 11, - "HostName": "derp11e.tailscale.com", - "IPv4": "172.237.61.194", - "IPv6": "2600:3c0d::2000:d2ff:fe43:1790", - "CanPort80": true - } - ] - }, - "12": { - "RegionID": 12, - "RegionCode": "ord", - "RegionName": "Chicago", - "Latitude": 41.881944, - "Longitude": -87.627778, - "Nodes": [ - { - "Name": "12e", - "RegionID": 12, - "HostName": "derp12e.tailscale.com", - "IPv4": "209.177.158.15", - "IPv6": "2607:f740:e::b17", - "CanPort80": true - }, - { - "Name": "12f", - "RegionID": 12, - "HostName": "derp12f.tailscale.com", - "IPv4": "199.38.182.118", - "IPv6": "2607:f740:e::4c8", - "CanPort80": true - }, - { - "Name": "12d", - "RegionID": 12, - "HostName": "derp12d.tailscale.com", - "IPv4": "209.177.158.246", - "IPv6": "2607:f740:e::811", - "CanPort80": true - } - ] - }, - "13": { - "RegionID": 13, - "RegionCode": "den", - "RegionName": "Denver", - "Latitude": 39.7392, - "Longitude": -104.9849, - "Nodes": [ - { - "Name": "13c", - "RegionID": 13, - "HostName": "derp13c.tailscale.com", - "IPv4": "192.73.242.28", - "IPv6": "2607:f740:16::5c", - "CanPort80": true - }, - { - "Name": "13d", - "RegionID": 13, - "HostName": "derp13d.tailscale.com", - "IPv4": "192.73.242.204", - "IPv6": "2607:f740:16::c23", - "CanPort80": true - }, - { - "Name": "13b", - "RegionID": 13, - "HostName": "derp13b.tailscale.com", - "IPv4": "192.73.242.187", - "IPv6": "2607:f740:16::640", - "CanPort80": true - } - ] - }, - "14": { - "RegionID": 14, - "RegionCode": "ams", - "RegionName": "Amsterdam", - "Latitude": 52.372778, - "Longitude": 4.893611, - "Nodes": [ - { - "Name": "14c", - "RegionID": 14, - "HostName": "derp14c.tailscale.com", - "IPv4": "176.58.93.147", - "IPv6": "2a00:dd80:3c::b09", - "CanPort80": true - }, - { - "Name": "14d", - "RegionID": 14, - "HostName": "derp14d.tailscale.com", - "IPv4": "176.58.93.154", - "IPv6": "2a00:dd80:3c::3d5", - "CanPort80": true - }, - { - "Name": "14b", - "RegionID": 14, - "HostName": "derp14b.tailscale.com", - "IPv4": "176.58.93.248", - "IPv6": "2a00:dd80:3c::807", - "CanPort80": true - } - ] - }, - "15": { - "RegionID": 15, - "RegionCode": "jnb", - "RegionName": "Johannesburg", - "Latitude": -26.204444, - "Longitude": 28.045556, - "Nodes": [ - { - "Name": "15c", - "RegionID": 15, - "HostName": "derp15c.tailscale.com", - "IPv4": "102.67.165.185", - "IPv6": "2c0f:edb0:0:10::b59", - "CanPort80": true - }, - { - "Name": "15d", - "RegionID": 15, - "HostName": "derp15d.tailscale.com", - "IPv4": "102.67.165.36", - "IPv6": "2c0f:edb0:0:10::599", - "CanPort80": true - }, - { - "Name": "15b", - "RegionID": 15, - "HostName": "derp15b.tailscale.com", - "IPv4": "102.67.165.90", - "IPv6": "2c0f:edb0:0:10::963", - "CanPort80": true - } - ] - }, - "16": { - "RegionID": 16, - "RegionCode": "mia", - "RegionName": "Miami", - "Latitude": 25.78, - "Longitude": -80.21, - "Nodes": [ - { - "Name": "16c", - "RegionID": 16, - "HostName": "derp16c.tailscale.com", - "IPv4": "192.73.243.229", - "IPv6": "2607:f740:17::4e4", - "CanPort80": true - }, - { - "Name": "16d", - "RegionID": 16, - "HostName": "derp16d.tailscale.com", - "IPv4": "192.73.243.141", - "IPv6": "2607:f740:17::475", - "CanPort80": true - }, - { - "Name": "16b", - "RegionID": 16, - "HostName": "derp16b.tailscale.com", - "IPv4": "192.73.243.135", - "IPv6": "2607:f740:17::476", - "CanPort80": true - } - ] - }, - "17": { - "RegionID": 17, - "RegionCode": "lax", - "RegionName": "Los Angeles", - "Latitude": 34.05, - "Longitude": -118.25, - "Nodes": [ - { - "Name": "17c", - "RegionID": 17, - "HostName": "derp17c.tailscale.com", - "IPv4": "208.111.40.12", - "IPv6": "2607:f740:c::10", - "CanPort80": true - }, - { - "Name": "17d", - "RegionID": 17, - "HostName": "derp17d.tailscale.com", - "IPv4": "208.111.40.216", - "IPv6": "2607:f740:c::e1b", - "CanPort80": true - }, - { - "Name": "17b", - "RegionID": 17, - "HostName": "derp17b.tailscale.com", - "IPv4": "192.73.244.245", - "IPv6": "2607:f740:c::646", - "CanPort80": true - } - ] - }, - "18": { - "RegionID": 18, - "RegionCode": "par", - "RegionName": "Paris", - "Latitude": 48.856667, - "Longitude": 2.352222, - "Nodes": [ - { - "Name": "18c", - "RegionID": 18, - "HostName": "derp18c.tailscale.com", - "IPv4": "176.58.90.207", - "IPv6": "2a00:dd80:3e::c19", - "CanPort80": true - }, - { - "Name": "18d", - "RegionID": 18, - "HostName": "derp18d.tailscale.com", - "IPv4": "176.58.90.104", - "IPv6": "2a00:dd80:3e::f2e", - "CanPort80": true - }, - { - "Name": "18b", - "RegionID": 18, - "HostName": "derp18b.tailscale.com", - "IPv4": "176.58.90.147", - "IPv6": "2a00:dd80:3e::363", - "CanPort80": true - } - ] - }, - "19": { - "RegionID": 19, - "RegionCode": "mad", - "RegionName": "Madrid", - "Latitude": 40.416944, - "Longitude": -3.703333, - "Nodes": [ - { - "Name": "19c", - "RegionID": 19, - "HostName": "derp19c.tailscale.com", - "IPv4": "45.159.97.61", - "IPv6": "2a00:dd80:14:10::20", - "CanPort80": true - }, - { - "Name": "19d", - "RegionID": 19, - "HostName": "derp19d.tailscale.com", - "IPv4": "45.159.97.233", - "IPv6": "2a00:dd80:14:10::34a", - "CanPort80": true - }, - { - "Name": "19b", - "RegionID": 19, - "HostName": "derp19b.tailscale.com", - "IPv4": "45.159.97.144", - "IPv6": "2a00:dd80:14:10::335", - "CanPort80": true - } - ] - }, - "2": { - "RegionID": 2, - "RegionCode": "sfo", - "RegionName": "San Francisco", - "Latitude": 37.7775, - "Longitude": -122.416389, - "Nodes": [ - { - "Name": "2e", - "RegionID": 2, - "HostName": "derp2e.tailscale.com", - "IPv4": "192.73.252.134", - "IPv6": "2607:f740:0:3f::44c", - "CanPort80": true - }, - { - "Name": "2f", - "RegionID": 2, - "HostName": "derp2f.tailscale.com", - "IPv4": "208.111.34.178", - "IPv6": "2607:f740:0:3f::f4", - "CanPort80": true - }, - { - "Name": "2d", - "RegionID": 2, - "HostName": "derp2d.tailscale.com", - "IPv4": "192.73.252.65", - "IPv6": "2607:f740:0:3f::287", - "CanPort80": true - } - ] - }, - "20": { - "RegionID": 20, - "RegionCode": "hkg", - "RegionName": "Hong Kong", - "Latitude": 22.3193, - "Longitude": 114.1694, - "Nodes": [ - { - "Name": "20c", - "RegionID": 20, - "HostName": "derp20c.tailscale.com", - "IPv4": "205.147.105.30", - "IPv6": "2403:2500:8000:1::5fb", - "CanPort80": true - }, - { - "Name": "20d", - "RegionID": 20, - "HostName": "derp20d.tailscale.com", - "IPv4": "205.147.105.78", - "IPv6": "2403:2500:8000:1::e9a", - "CanPort80": true - }, - { - "Name": "20b", - "RegionID": 20, - "HostName": "derp20b.tailscale.com", - "IPv4": "103.6.84.152", - "IPv6": "2403:2500:8000:1::ef6", - "CanPort80": true - } - ] - }, - "21": { - "RegionID": 21, - "RegionCode": "tor", - "RegionName": "Toronto", - "Latitude": 43.741667, - "Longitude": -79.373333, - "Nodes": [ - { - "Name": "21c", - "RegionID": 21, - "HostName": "derp21c.tailscale.com", - "IPv4": "162.248.221.215", - "IPv6": "2607:f740:50::f10", - "CanPort80": true - }, - { - "Name": "21d", - "RegionID": 21, - "HostName": "derp21d.tailscale.com", - "IPv4": "162.248.221.248", - "IPv6": "2607:f740:50::ca4", - "CanPort80": true - }, - { - "Name": "21b", - "RegionID": 21, - "HostName": "derp21b.tailscale.com", - "IPv4": "162.248.221.199", - "IPv6": "2607:f740:50::1d1", - "CanPort80": true - } - ] - }, - "22": { - "RegionID": 22, - "RegionCode": "waw", - "RegionName": "Warsaw", - "Latitude": 52.23, - "Longitude": 21.011111, - "Nodes": [ - { - "Name": "22c", - "RegionID": 22, - "HostName": "derp22c.tailscale.com", - "IPv4": "45.159.98.253", - "IPv6": "2a00:dd80:40:100::3f", - "CanPort80": true - }, - { - "Name": "22d", - "RegionID": 22, - "HostName": "derp22d.tailscale.com", - "IPv4": "45.159.98.145", - "IPv6": "2a00:dd80:40:100::211", - "CanPort80": true - }, - { - "Name": "22b", - "RegionID": 22, - "HostName": "derp22b.tailscale.com", - "IPv4": "45.159.98.196", - "IPv6": "2a00:dd80:40:100::316", - "CanPort80": true - } - ] - }, - "23": { - "RegionID": 23, - "RegionCode": "dbi", - "RegionName": "Dubai", - "Latitude": 25.263056, - "Longitude": 55.297222, - "Nodes": [ - { - "Name": "23c", - "RegionID": 23, - "HostName": "derp23c.tailscale.com", - "IPv4": "185.34.3.207", - "IPv6": "2a00:dd80:3f:100::a50", - "CanPort80": true - }, - { - "Name": "23d", - "RegionID": 23, - "HostName": "derp23d.tailscale.com", - "IPv4": "185.34.3.75", - "IPv6": "2a00:dd80:3f:100::97e", - "CanPort80": true - }, - { - "Name": "23b", - "RegionID": 23, - "HostName": "derp23b.tailscale.com", - "IPv4": "185.34.3.232", - "IPv6": "2a00:dd80:3f:100::76f", - "CanPort80": true - } - ] - }, - "24": { - "RegionID": 24, - "RegionCode": "hnl", - "RegionName": "Honolulu", - "Latitude": 21.306944, - "Longitude": -157.858333, - "Nodes": [ - { - "Name": "24c", - "RegionID": 24, - "HostName": "derp24c.tailscale.com", - "IPv4": "208.83.233.233", - "IPv6": "2001:19f0:c000:c591:5400:04ff:fe26:2c5f", - "CanPort80": true - }, - { - "Name": "24d", - "RegionID": 24, - "HostName": "derp24d.tailscale.com", - "IPv4": "208.72.155.133", - "IPv6": "2001:19f0:c000:c564:5400:04ff:fe26:2ba8", - "CanPort80": true - }, - { - "Name": "24b", - "RegionID": 24, - "HostName": "derp24b.tailscale.com", - "IPv4": "208.83.234.151", - "IPv6": "2001:19f0:c000:c586:5400:04ff:fe26:2ba6", - "CanPort80": true - } - ] - }, - "25": { - "RegionID": 25, - "RegionCode": "nai", - "RegionName": "Nairobi", - "Latitude": -1.286389, - "Longitude": 36.817222, - "Nodes": [ - { - "Name": "25c", - "RegionID": 25, - "HostName": "derp25c.tailscale.com", - "IPv4": "102.67.167.37", - "IPv6": "2c0f:edb0:2000:1::2c7", - "CanPort80": true - }, - { - "Name": "25d", - "RegionID": 25, - "HostName": "derp25d.tailscale.com", - "IPv4": "102.67.167.188", - "IPv6": "2c0f:edb0:2000:1::188", - "CanPort80": true - }, - { - "Name": "25b", - "RegionID": 25, - "HostName": "derp25b.tailscale.com", - "IPv4": "102.67.167.245", - "IPv6": "2c0f:edb0:2000:1::2e9", - "CanPort80": true - } - ] - }, - "26": { - "RegionID": 26, - "RegionCode": "nue", - "RegionName": "Nuremberg", - "Latitude": 49.453889, - "Longitude": 11.0775, - "Nodes": [ - { - "Name": "26c", - "RegionID": 26, - "HostName": "derp26c.tailscale.com", - "IPv4": "49.12.193.137", - "IPv6": "2a01:4f8:1c1c:5c70::1", - "CanPort80": true - }, - { - "Name": "26d", - "RegionID": 26, - "HostName": "derp26d.tailscale.com", - "IPv4": "49.13.204.141", - "IPv6": "2a01:4f8:1c0c:7d06::1", - "CanPort80": true - }, - { - "Name": "26b", - "RegionID": 26, - "HostName": "derp26b.tailscale.com", - "IPv4": "167.235.72.200", - "IPv6": "2a01:4f8:1c1c:47b6::1", - "CanPort80": true - } - ] - }, - "27": { - "RegionID": 27, - "RegionCode": "iad", - "RegionName": "Ashburn", - "Latitude": 39.03, - "Longitude": -77.471111, - "Nodes": [ - { - "Name": "27d", - "RegionID": 27, - "HostName": "derp27d.tailscale.com", - "IPv4": "178.156.152.106", - "IPv6": "2a01:4ff:f0:3c8e::1", - "CanPort80": true - }, - { - "Name": "27c", - "RegionID": 27, - "HostName": "derp27c.tailscale.com", - "IPv4": "178.156.152.91", - "IPv6": "2a01:4ff:f0:3913::1", - "CanPort80": true - }, - { - "Name": "27e", - "RegionID": 27, - "HostName": "derp27e.tailscale.com", - "IPv4": "178.156.134.232", - "IPv6": "2a01:4ff:f0:28d4::1", - "CanPort80": true - }, - { - "Name": "27b", - "RegionID": 27, - "HostName": "derp27b.tailscale.com", - "IPv4": "5.161.218.233", - "IPv6": "2a01:4ff:f0:3db9::1", - "CanPort80": true - } - ] - }, - "28": { - "RegionID": 28, - "RegionCode": "hel", - "RegionName": "Helsinki", - "Latitude": 60.170833, - "Longitude": 24.9375, - "Nodes": [ - { - "Name": "28c", - "RegionID": 28, - "HostName": "derp28c.tailscale.com", - "IPv4": "95.217.2.165", - "IPv6": "2a01:4f9:c012:cd74::1", - "CanPort80": true - }, - { - "Name": "28d", - "RegionID": 28, - "HostName": "derp28d.tailscale.com", - "IPv4": "157.180.28.32", - "IPv6": "2a01:4f9:c012:2e5b::1", - "CanPort80": true - }, - { - "Name": "28b", - "RegionID": 28, - "HostName": "derp28b.tailscale.com", - "IPv4": "65.109.143.62", - "IPv6": "2a01:4f9:c012:d55c::1", - "CanPort80": true - } - ] - }, - "3": { - "RegionID": 3, - "RegionCode": "sin", - "RegionName": "Singapore", - "Latitude": 1.3521, - "Longitude": 103.8198, - "Nodes": [ - { - "Name": "3g", - "RegionID": 3, - "HostName": "derp3g.tailscale.com", - "IPv4": "172.237.72.79", - "IPv6": "2600:3c15::2000:adff:fe08:6fab", - "CanPort80": true - }, - { - "Name": "3f", - "RegionID": 3, - "HostName": "derp3f.tailscale.com", - "IPv4": "172.237.72.8", - "IPv6": "2600:3c15::2000:53ff:fe48:a668", - "CanPort80": true - }, - { - "Name": "3h", - "RegionID": 3, - "HostName": "derp3h.tailscale.com", - "IPv4": "172.237.66.30", - "IPv6": "2600:3c15::2000:3dff:fe44:50aa", - "CanPort80": true - }, - { - "Name": "3e", - "RegionID": 3, - "HostName": "derp3e.tailscale.com", - "IPv4": "172.237.72.43", - "IPv6": "2600:3c15::2000:6cff:fee4:d799", - "CanPort80": true - } - ] - }, - "4": { - "RegionID": 4, - "RegionCode": "fra", - "RegionName": "Frankfurt", - "Latitude": 50.1109, - "Longitude": 8.6821, - "Nodes": [ - { - "Name": "4h", - "RegionID": 4, - "HostName": "derp4h.tailscale.com", - "IPv4": "185.40.234.77", - "IPv6": "2a00:dd80:20::bcf", - "CanPort80": true - }, - { - "Name": "4g", - "RegionID": 4, - "HostName": "derp4g.tailscale.com", - "IPv4": "185.40.234.113", - "IPv6": "2a00:dd80:20::8f", - "CanPort80": true - }, - { - "Name": "4i", - "RegionID": 4, - "HostName": "derp4i.tailscale.com", - "IPv4": "185.40.234.53", - "IPv6": "2a00:dd80:20::8a6", - "CanPort80": true - }, - { - "Name": "4f", - "RegionID": 4, - "HostName": "derp4f.tailscale.com", - "IPv4": "185.40.234.219", - "IPv6": "2a00:dd80:20::a25", - "CanPort80": true - } - ] - }, - "5": { - "RegionID": 5, - "RegionCode": "syd", - "RegionName": "Sydney", - "Latitude": -33.867778, - "Longitude": 151.21, - "Nodes": [ - { - "Name": "5f", - "RegionID": 5, - "HostName": "derp5f.tailscale.com", - "IPv4": "172.105.166.103", - "IPv6": "2400:8907::2000:ccff:fe1f:80da", - "CanPort80": true - }, - { - "Name": "5g", - "RegionID": 5, - "HostName": "derp5g.tailscale.com", - "IPv4": "172.105.169.57", - "IPv6": "2400:8907::2000:2fff:fea7:57f4", - "CanPort80": true - }, - { - "Name": "5e", - "RegionID": 5, - "HostName": "derp5e.tailscale.com", - "IPv4": "172.105.179.230", - "IPv6": "2400:8907::2000:ceff:fe8d:4f4e", - "CanPort80": true - } - ] - }, - "6": { - "RegionID": 6, - "RegionCode": "blr", - "RegionName": "Bengaluru", - "Latitude": 12.9716, - "Longitude": 77.5946, - "Nodes": [ - { - "Name": "6a", - "RegionID": 6, - "HostName": "derp6.tailscale.com", - "IPv4": "68.183.90.120", - "IPv6": "2400:6180:100:d0::982:d001", - "CanPort80": true - } - ] - }, - "7": { - "RegionID": 7, - "RegionCode": "tok", - "RegionName": "Tokyo", - "Latitude": 35.6764, - "Longitude": 139.65, - "Nodes": [ - { - "Name": "7g", - "RegionID": 7, - "HostName": "derp7g.tailscale.com", - "IPv4": "172.238.6.179", - "IPv6": "2600:3c18::2000:3fff:fe80:3ebd", - "CanPort80": true - }, - { - "Name": "7f", - "RegionID": 7, - "HostName": "derp7f.tailscale.com", - "IPv4": "172.238.6.34", - "IPv6": "2600:3c18::2000:acff:fe8e:3ed5", - "CanPort80": true - }, - { - "Name": "7h", - "RegionID": 7, - "HostName": "derp7h.tailscale.com", - "IPv4": "172.237.28.183", - "IPv6": "2600:3c18::2000:b1ff:fea9:4560", - "CanPort80": true - }, - { - "Name": "7e", - "RegionID": 7, - "HostName": "derp7e.tailscale.com", - "IPv4": "172.238.6.180", - "IPv6": "2600:3c18::2000:60ff:fe0f:6e83", - "STUNOnly": true, - "CanPort80": true - } - ] - }, - "8": { - "RegionID": 8, - "RegionCode": "lhr", - "RegionName": "London", - "Latitude": 51.5072, - "Longitude": 0.1276, - "Nodes": [ - { - "Name": "8f", - "RegionID": 8, - "HostName": "derp8f.tailscale.com", - "IPv4": "176.58.88.183", - "IPv6": "2a00:dd80:3a::dfa", - "CanPort80": true - }, - { - "Name": "8g", - "RegionID": 8, - "HostName": "derp8g.tailscale.com", - "IPv4": "176.58.92.254", - "IPv6": "2a00:dd80:3a::ed", - "CanPort80": true - }, - { - "Name": "8e", - "RegionID": 8, - "HostName": "derp8e.tailscale.com", - "IPv4": "176.58.92.144", - "IPv6": "2a00:dd80:3a::b33", - "CanPort80": true - } - ] - }, - "9": { - "RegionID": 9, - "RegionCode": "dfw", - "RegionName": "Dallas", - "Latitude": 32.779167, - "Longitude": -96.808889, - "Nodes": [ - { - "Name": "9e", - "RegionID": 9, - "HostName": "derp9e.tailscale.com", - "IPv4": "192.73.248.83", - "IPv6": "2607:f740:100::359", - "CanPort80": true - }, - { - "Name": "9f", - "RegionID": 9, - "HostName": "derp9f.tailscale.com", - "IPv4": "209.177.156.197", - "IPv6": "2607:f740:100::cad", - "CanPort80": true - }, - { - "Name": "9d", - "RegionID": 9, - "HostName": "derp9d.tailscale.com", - "IPv4": "209.177.156.94", - "IPv6": "2607:f740:100::c05", - "CanPort80": true - } - ] - } - } - }, - "DisplayMessages": null, - "TKAEnabled": false, - "TKAHead": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", - "Domain": "kratail2tid@passkey", - "DomainAuditLogID": "", - "UserProfiles": { - "1260082990019555": { - "ID": 1260082990019555, - "LoginName": "tagged-devices", - "DisplayName": "Tagged Devices" - }, - "2230775583277936": { - "ID": 2230775583277936, - "LoginName": "exit-b.tail78f774.ts.net", - "DisplayName": "exit-b" - } - } + ] } }, "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.124.195.93": { - "peer_name": "exit-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-node/tailscaled.sock whois --json 100.124.195.93", - "response": null - }, - "100.116.18.24": { - "peer_name": "exit-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-node/tailscaled.sock whois --json 100.116.18.24", - "response": null - }, - "100.107.162.14": { - "peer_name": "group-a-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-node/tailscaled.sock whois --json 100.107.162.14", - "response": null - }, - "100.77.135.18": { - "peer_name": "group-b-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-node/tailscaled.sock whois --json 100.77.135.18", - "response": null - }, - "100.105.127.107": { - "peer_name": "multi-exit-router", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-node/tailscaled.sock whois --json 100.105.127.107", - "response": null - }, - "100.109.43.124": { - "peer_name": "router-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-node/tailscaled.sock whois --json 100.109.43.124", - "response": null - }, - "100.65.172.123": { - "peer_name": "router-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-node/tailscaled.sock whois --json 100.65.172.123", - "response": null - }, - "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 - } - }, "netmap": { - "SelfNode": { - "ID": 4041918547170221, - "StableID": "ngCb76MbZY11CNTRL", - "Name": "exit-node.tail78f774.ts.net.", - "User": 4041918547170221, - "Key": "nodekey:90f4a7b9dc024f1ddec414a49de2aa7611a2dd86efc9d7bae30862ad7c954269", - "DiscoKey": "discokey:6f1a76215431d7100538970473d97b4fde0e0a19b91035d1cba40b59ad79b437", - "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:36712", "10.65.0.27:36712", "172.17.0.1:36712"], - "Hostinfo": { - "Hostname": "exit-node", - "RoutableIPs": ["0.0.0.0/0", "::/0"], - "RequestTags": ["tag:exit"], - "Services": [ - { "Proto": "peerapi4", "Port": 37000 }, - { "Proto": "peerapi6", "Port": 37000 }, - { "Proto": "peerapi-dns-proxy", "Port": 1 } - ] - }, - "Created": "2026-02-23T00:13:20.566112173Z", - "Tags": ["tag:exit"], - "MachineAuthorized": true, - "CapMap": { - "https://tailscale.com/cap/file-sharing": null, - "https://tailscale.com/cap/is-owner": null, - "https://tailscale.com/cap/ssh": null, - "https://tailscale.com/cap/tailnet-lock": null, - "probe-udp-lifetime": null, - "ssh-behavior-v1": null, - "ssh-env-vars": null, - "store-appc-routes": null, - "tailnet-display-name": ["kratail2tid@passkey"] - }, - "ComputedName": "exit-node", - "ComputedNameWithHost": "exit-node" - }, - "AllCaps": [ - "https://tailscale.com/cap/ssh", - "https://tailscale.com/cap/tailnet-lock", - "store-appc-routes", - "tailnet-display-name", - "https://tailscale.com/cap/file-sharing", - "https://tailscale.com/cap/is-owner", - "ssh-behavior-v1", - "ssh-env-vars", - "probe-udp-lifetime" - ], - "NodeKey": "nodekey:90f4a7b9dc024f1ddec414a49de2aa7611a2dd86efc9d7bae30862ad7c954269", - "MachineKey": "mkey:e3be47b2090e55400f3e64825cd3092841529cd7b5b775e9e4553f12308abc2a", "Peers": [], - "DNS": { - "Routes": { - "tail78f774.ts.net.": null, - "ts.net.": [{ "Addr": "199.247.155.53" }, { "Addr": "2620:111:8007::53" }] - }, - "Domains": ["tail78f774.ts.net"], - "Proxied": true, - "ExitNodeFilteredSet": [".ts.net", ".tailscale.net"] - }, - "PacketFilter": [], - "PacketFilterRules": null, - "SSHPolicy": { "rules": [] }, - "CollectServices": false, - "DERPMap": { - "Regions": { - "1": { - "RegionID": 1, - "RegionCode": "nyc", - "RegionName": "New York City", - "Latitude": 40.7128, - "Longitude": -74.006, - "Nodes": [ - { - "Name": "1h", - "RegionID": 1, - "HostName": "derp1h.tailscale.com", - "IPv4": "199.38.181.93", - "IPv6": "2607:f740:f::afd", - "CanPort80": true - }, - { - "Name": "1g", - "RegionID": 1, - "HostName": "derp1g.tailscale.com", - "IPv4": "209.177.145.120", - "IPv6": "2607:f740:f::3eb", - "CanPort80": true - }, - { - "Name": "1i", - "RegionID": 1, - "HostName": "derp1i.tailscale.com", - "IPv4": "199.38.181.103", - "IPv6": "2607:f740:f::e19", - "CanPort80": true - }, - { - "Name": "1f", - "RegionID": 1, - "HostName": "derp1f.tailscale.com", - "IPv4": "199.38.181.104", - "IPv6": "2607:f740:f::bc", - "CanPort80": true - } - ] - }, - "10": { - "RegionID": 10, - "RegionCode": "sea", - "RegionName": "Seattle", - "Latitude": 47.609722, - "Longitude": -122.333056, - "Nodes": [ - { - "Name": "10c", - "RegionID": 10, - "HostName": "derp10c.tailscale.com", - "IPv4": "192.73.240.121", - "IPv6": "2607:f740:14::40c", - "CanPort80": true - }, - { - "Name": "10d", - "RegionID": 10, - "HostName": "derp10d.tailscale.com", - "IPv4": "192.73.240.132", - "IPv6": "2607:f740:14::500", - "CanPort80": true - }, - { - "Name": "10b", - "RegionID": 10, - "HostName": "derp10b.tailscale.com", - "IPv4": "192.73.240.161", - "IPv6": "2607:f740:14::61c", - "CanPort80": true - } - ] - }, - "11": { - "RegionID": 11, - "RegionCode": "sao", - "RegionName": "São Paulo", - "Latitude": -23.55, - "Longitude": -46.633333, - "Nodes": [ - { - "Name": "11f", - "RegionID": 11, - "HostName": "derp11f.tailscale.com", - "IPv4": "172.237.61.197", - "IPv6": "2600:3c0d::2000:3bff:fe44:6166", - "CanPort80": true - }, - { - "Name": "11g", - "RegionID": 11, - "HostName": "derp11g.tailscale.com", - "IPv4": "172.237.61.190", - "IPv6": "2600:3c0d::2000:62ff:febe:2e67", - "CanPort80": true - }, - { - "Name": "11e", - "RegionID": 11, - "HostName": "derp11e.tailscale.com", - "IPv4": "172.237.61.194", - "IPv6": "2600:3c0d::2000:d2ff:fe43:1790", - "CanPort80": true - } - ] - }, - "12": { - "RegionID": 12, - "RegionCode": "ord", - "RegionName": "Chicago", - "Latitude": 41.881944, - "Longitude": -87.627778, - "Nodes": [ - { - "Name": "12e", - "RegionID": 12, - "HostName": "derp12e.tailscale.com", - "IPv4": "209.177.158.15", - "IPv6": "2607:f740:e::b17", - "CanPort80": true - }, - { - "Name": "12f", - "RegionID": 12, - "HostName": "derp12f.tailscale.com", - "IPv4": "199.38.182.118", - "IPv6": "2607:f740:e::4c8", - "CanPort80": true - }, - { - "Name": "12d", - "RegionID": 12, - "HostName": "derp12d.tailscale.com", - "IPv4": "209.177.158.246", - "IPv6": "2607:f740:e::811", - "CanPort80": true - } - ] - }, - "13": { - "RegionID": 13, - "RegionCode": "den", - "RegionName": "Denver", - "Latitude": 39.7392, - "Longitude": -104.9849, - "Nodes": [ - { - "Name": "13c", - "RegionID": 13, - "HostName": "derp13c.tailscale.com", - "IPv4": "192.73.242.28", - "IPv6": "2607:f740:16::5c", - "CanPort80": true - }, - { - "Name": "13d", - "RegionID": 13, - "HostName": "derp13d.tailscale.com", - "IPv4": "192.73.242.204", - "IPv6": "2607:f740:16::c23", - "CanPort80": true - }, - { - "Name": "13b", - "RegionID": 13, - "HostName": "derp13b.tailscale.com", - "IPv4": "192.73.242.187", - "IPv6": "2607:f740:16::640", - "CanPort80": true - } - ] - }, - "14": { - "RegionID": 14, - "RegionCode": "ams", - "RegionName": "Amsterdam", - "Latitude": 52.372778, - "Longitude": 4.893611, - "Nodes": [ - { - "Name": "14c", - "RegionID": 14, - "HostName": "derp14c.tailscale.com", - "IPv4": "176.58.93.147", - "IPv6": "2a00:dd80:3c::b09", - "CanPort80": true - }, - { - "Name": "14d", - "RegionID": 14, - "HostName": "derp14d.tailscale.com", - "IPv4": "176.58.93.154", - "IPv6": "2a00:dd80:3c::3d5", - "CanPort80": true - }, - { - "Name": "14b", - "RegionID": 14, - "HostName": "derp14b.tailscale.com", - "IPv4": "176.58.93.248", - "IPv6": "2a00:dd80:3c::807", - "CanPort80": true - } - ] - }, - "15": { - "RegionID": 15, - "RegionCode": "jnb", - "RegionName": "Johannesburg", - "Latitude": -26.204444, - "Longitude": 28.045556, - "Nodes": [ - { - "Name": "15c", - "RegionID": 15, - "HostName": "derp15c.tailscale.com", - "IPv4": "102.67.165.185", - "IPv6": "2c0f:edb0:0:10::b59", - "CanPort80": true - }, - { - "Name": "15d", - "RegionID": 15, - "HostName": "derp15d.tailscale.com", - "IPv4": "102.67.165.36", - "IPv6": "2c0f:edb0:0:10::599", - "CanPort80": true - }, - { - "Name": "15b", - "RegionID": 15, - "HostName": "derp15b.tailscale.com", - "IPv4": "102.67.165.90", - "IPv6": "2c0f:edb0:0:10::963", - "CanPort80": true - } - ] - }, - "16": { - "RegionID": 16, - "RegionCode": "mia", - "RegionName": "Miami", - "Latitude": 25.78, - "Longitude": -80.21, - "Nodes": [ - { - "Name": "16c", - "RegionID": 16, - "HostName": "derp16c.tailscale.com", - "IPv4": "192.73.243.229", - "IPv6": "2607:f740:17::4e4", - "CanPort80": true - }, - { - "Name": "16d", - "RegionID": 16, - "HostName": "derp16d.tailscale.com", - "IPv4": "192.73.243.141", - "IPv6": "2607:f740:17::475", - "CanPort80": true - }, - { - "Name": "16b", - "RegionID": 16, - "HostName": "derp16b.tailscale.com", - "IPv4": "192.73.243.135", - "IPv6": "2607:f740:17::476", - "CanPort80": true - } - ] - }, - "17": { - "RegionID": 17, - "RegionCode": "lax", - "RegionName": "Los Angeles", - "Latitude": 34.05, - "Longitude": -118.25, - "Nodes": [ - { - "Name": "17c", - "RegionID": 17, - "HostName": "derp17c.tailscale.com", - "IPv4": "208.111.40.12", - "IPv6": "2607:f740:c::10", - "CanPort80": true - }, - { - "Name": "17d", - "RegionID": 17, - "HostName": "derp17d.tailscale.com", - "IPv4": "208.111.40.216", - "IPv6": "2607:f740:c::e1b", - "CanPort80": true - }, - { - "Name": "17b", - "RegionID": 17, - "HostName": "derp17b.tailscale.com", - "IPv4": "192.73.244.245", - "IPv6": "2607:f740:c::646", - "CanPort80": true - } - ] - }, - "18": { - "RegionID": 18, - "RegionCode": "par", - "RegionName": "Paris", - "Latitude": 48.856667, - "Longitude": 2.352222, - "Nodes": [ - { - "Name": "18c", - "RegionID": 18, - "HostName": "derp18c.tailscale.com", - "IPv4": "176.58.90.207", - "IPv6": "2a00:dd80:3e::c19", - "CanPort80": true - }, - { - "Name": "18d", - "RegionID": 18, - "HostName": "derp18d.tailscale.com", - "IPv4": "176.58.90.104", - "IPv6": "2a00:dd80:3e::f2e", - "CanPort80": true - }, - { - "Name": "18b", - "RegionID": 18, - "HostName": "derp18b.tailscale.com", - "IPv4": "176.58.90.147", - "IPv6": "2a00:dd80:3e::363", - "CanPort80": true - } - ] - }, - "19": { - "RegionID": 19, - "RegionCode": "mad", - "RegionName": "Madrid", - "Latitude": 40.416944, - "Longitude": -3.703333, - "Nodes": [ - { - "Name": "19c", - "RegionID": 19, - "HostName": "derp19c.tailscale.com", - "IPv4": "45.159.97.61", - "IPv6": "2a00:dd80:14:10::20", - "CanPort80": true - }, - { - "Name": "19d", - "RegionID": 19, - "HostName": "derp19d.tailscale.com", - "IPv4": "45.159.97.233", - "IPv6": "2a00:dd80:14:10::34a", - "CanPort80": true - }, - { - "Name": "19b", - "RegionID": 19, - "HostName": "derp19b.tailscale.com", - "IPv4": "45.159.97.144", - "IPv6": "2a00:dd80:14:10::335", - "CanPort80": true - } - ] - }, - "2": { - "RegionID": 2, - "RegionCode": "sfo", - "RegionName": "San Francisco", - "Latitude": 37.7775, - "Longitude": -122.416389, - "Nodes": [ - { - "Name": "2e", - "RegionID": 2, - "HostName": "derp2e.tailscale.com", - "IPv4": "192.73.252.134", - "IPv6": "2607:f740:0:3f::44c", - "CanPort80": true - }, - { - "Name": "2f", - "RegionID": 2, - "HostName": "derp2f.tailscale.com", - "IPv4": "208.111.34.178", - "IPv6": "2607:f740:0:3f::f4", - "CanPort80": true - }, - { - "Name": "2d", - "RegionID": 2, - "HostName": "derp2d.tailscale.com", - "IPv4": "192.73.252.65", - "IPv6": "2607:f740:0:3f::287", - "CanPort80": true - } - ] - }, - "20": { - "RegionID": 20, - "RegionCode": "hkg", - "RegionName": "Hong Kong", - "Latitude": 22.3193, - "Longitude": 114.1694, - "Nodes": [ - { - "Name": "20c", - "RegionID": 20, - "HostName": "derp20c.tailscale.com", - "IPv4": "205.147.105.30", - "IPv6": "2403:2500:8000:1::5fb", - "CanPort80": true - }, - { - "Name": "20d", - "RegionID": 20, - "HostName": "derp20d.tailscale.com", - "IPv4": "205.147.105.78", - "IPv6": "2403:2500:8000:1::e9a", - "CanPort80": true - }, - { - "Name": "20b", - "RegionID": 20, - "HostName": "derp20b.tailscale.com", - "IPv4": "103.6.84.152", - "IPv6": "2403:2500:8000:1::ef6", - "CanPort80": true - } - ] - }, - "21": { - "RegionID": 21, - "RegionCode": "tor", - "RegionName": "Toronto", - "Latitude": 43.741667, - "Longitude": -79.373333, - "Nodes": [ - { - "Name": "21c", - "RegionID": 21, - "HostName": "derp21c.tailscale.com", - "IPv4": "162.248.221.215", - "IPv6": "2607:f740:50::f10", - "CanPort80": true - }, - { - "Name": "21d", - "RegionID": 21, - "HostName": "derp21d.tailscale.com", - "IPv4": "162.248.221.248", - "IPv6": "2607:f740:50::ca4", - "CanPort80": true - }, - { - "Name": "21b", - "RegionID": 21, - "HostName": "derp21b.tailscale.com", - "IPv4": "162.248.221.199", - "IPv6": "2607:f740:50::1d1", - "CanPort80": true - } - ] - }, - "22": { - "RegionID": 22, - "RegionCode": "waw", - "RegionName": "Warsaw", - "Latitude": 52.23, - "Longitude": 21.011111, - "Nodes": [ - { - "Name": "22c", - "RegionID": 22, - "HostName": "derp22c.tailscale.com", - "IPv4": "45.159.98.253", - "IPv6": "2a00:dd80:40:100::3f", - "CanPort80": true - }, - { - "Name": "22d", - "RegionID": 22, - "HostName": "derp22d.tailscale.com", - "IPv4": "45.159.98.145", - "IPv6": "2a00:dd80:40:100::211", - "CanPort80": true - }, - { - "Name": "22b", - "RegionID": 22, - "HostName": "derp22b.tailscale.com", - "IPv4": "45.159.98.196", - "IPv6": "2a00:dd80:40:100::316", - "CanPort80": true - } - ] - }, - "23": { - "RegionID": 23, - "RegionCode": "dbi", - "RegionName": "Dubai", - "Latitude": 25.263056, - "Longitude": 55.297222, - "Nodes": [ - { - "Name": "23c", - "RegionID": 23, - "HostName": "derp23c.tailscale.com", - "IPv4": "185.34.3.207", - "IPv6": "2a00:dd80:3f:100::a50", - "CanPort80": true - }, - { - "Name": "23d", - "RegionID": 23, - "HostName": "derp23d.tailscale.com", - "IPv4": "185.34.3.75", - "IPv6": "2a00:dd80:3f:100::97e", - "CanPort80": true - }, - { - "Name": "23b", - "RegionID": 23, - "HostName": "derp23b.tailscale.com", - "IPv4": "185.34.3.232", - "IPv6": "2a00:dd80:3f:100::76f", - "CanPort80": true - } - ] - }, - "24": { - "RegionID": 24, - "RegionCode": "hnl", - "RegionName": "Honolulu", - "Latitude": 21.306944, - "Longitude": -157.858333, - "Nodes": [ - { - "Name": "24c", - "RegionID": 24, - "HostName": "derp24c.tailscale.com", - "IPv4": "208.83.233.233", - "IPv6": "2001:19f0:c000:c591:5400:04ff:fe26:2c5f", - "CanPort80": true - }, - { - "Name": "24d", - "RegionID": 24, - "HostName": "derp24d.tailscale.com", - "IPv4": "208.72.155.133", - "IPv6": "2001:19f0:c000:c564:5400:04ff:fe26:2ba8", - "CanPort80": true - }, - { - "Name": "24b", - "RegionID": 24, - "HostName": "derp24b.tailscale.com", - "IPv4": "208.83.234.151", - "IPv6": "2001:19f0:c000:c586:5400:04ff:fe26:2ba6", - "CanPort80": true - } - ] - }, - "25": { - "RegionID": 25, - "RegionCode": "nai", - "RegionName": "Nairobi", - "Latitude": -1.286389, - "Longitude": 36.817222, - "Nodes": [ - { - "Name": "25c", - "RegionID": 25, - "HostName": "derp25c.tailscale.com", - "IPv4": "102.67.167.37", - "IPv6": "2c0f:edb0:2000:1::2c7", - "CanPort80": true - }, - { - "Name": "25d", - "RegionID": 25, - "HostName": "derp25d.tailscale.com", - "IPv4": "102.67.167.188", - "IPv6": "2c0f:edb0:2000:1::188", - "CanPort80": true - }, - { - "Name": "25b", - "RegionID": 25, - "HostName": "derp25b.tailscale.com", - "IPv4": "102.67.167.245", - "IPv6": "2c0f:edb0:2000:1::2e9", - "CanPort80": true - } - ] - }, - "26": { - "RegionID": 26, - "RegionCode": "nue", - "RegionName": "Nuremberg", - "Latitude": 49.453889, - "Longitude": 11.0775, - "Nodes": [ - { - "Name": "26c", - "RegionID": 26, - "HostName": "derp26c.tailscale.com", - "IPv4": "49.12.193.137", - "IPv6": "2a01:4f8:1c1c:5c70::1", - "CanPort80": true - }, - { - "Name": "26d", - "RegionID": 26, - "HostName": "derp26d.tailscale.com", - "IPv4": "49.13.204.141", - "IPv6": "2a01:4f8:1c0c:7d06::1", - "CanPort80": true - }, - { - "Name": "26b", - "RegionID": 26, - "HostName": "derp26b.tailscale.com", - "IPv4": "167.235.72.200", - "IPv6": "2a01:4f8:1c1c:47b6::1", - "CanPort80": true - } - ] - }, - "27": { - "RegionID": 27, - "RegionCode": "iad", - "RegionName": "Ashburn", - "Latitude": 39.03, - "Longitude": -77.471111, - "Nodes": [ - { - "Name": "27d", - "RegionID": 27, - "HostName": "derp27d.tailscale.com", - "IPv4": "178.156.152.106", - "IPv6": "2a01:4ff:f0:3c8e::1", - "CanPort80": true - }, - { - "Name": "27c", - "RegionID": 27, - "HostName": "derp27c.tailscale.com", - "IPv4": "178.156.152.91", - "IPv6": "2a01:4ff:f0:3913::1", - "CanPort80": true - }, - { - "Name": "27e", - "RegionID": 27, - "HostName": "derp27e.tailscale.com", - "IPv4": "178.156.134.232", - "IPv6": "2a01:4ff:f0:28d4::1", - "CanPort80": true - }, - { - "Name": "27b", - "RegionID": 27, - "HostName": "derp27b.tailscale.com", - "IPv4": "5.161.218.233", - "IPv6": "2a01:4ff:f0:3db9::1", - "CanPort80": true - } - ] - }, - "28": { - "RegionID": 28, - "RegionCode": "hel", - "RegionName": "Helsinki", - "Latitude": 60.170833, - "Longitude": 24.9375, - "Nodes": [ - { - "Name": "28c", - "RegionID": 28, - "HostName": "derp28c.tailscale.com", - "IPv4": "95.217.2.165", - "IPv6": "2a01:4f9:c012:cd74::1", - "CanPort80": true - }, - { - "Name": "28d", - "RegionID": 28, - "HostName": "derp28d.tailscale.com", - "IPv4": "157.180.28.32", - "IPv6": "2a01:4f9:c012:2e5b::1", - "CanPort80": true - }, - { - "Name": "28b", - "RegionID": 28, - "HostName": "derp28b.tailscale.com", - "IPv4": "65.109.143.62", - "IPv6": "2a01:4f9:c012:d55c::1", - "CanPort80": true - } - ] - }, - "3": { - "RegionID": 3, - "RegionCode": "sin", - "RegionName": "Singapore", - "Latitude": 1.3521, - "Longitude": 103.8198, - "Nodes": [ - { - "Name": "3g", - "RegionID": 3, - "HostName": "derp3g.tailscale.com", - "IPv4": "172.237.72.79", - "IPv6": "2600:3c15::2000:adff:fe08:6fab", - "CanPort80": true - }, - { - "Name": "3f", - "RegionID": 3, - "HostName": "derp3f.tailscale.com", - "IPv4": "172.237.72.8", - "IPv6": "2600:3c15::2000:53ff:fe48:a668", - "CanPort80": true - }, - { - "Name": "3h", - "RegionID": 3, - "HostName": "derp3h.tailscale.com", - "IPv4": "172.237.66.30", - "IPv6": "2600:3c15::2000:3dff:fe44:50aa", - "CanPort80": true - }, - { - "Name": "3e", - "RegionID": 3, - "HostName": "derp3e.tailscale.com", - "IPv4": "172.237.72.43", - "IPv6": "2600:3c15::2000:6cff:fee4:d799", - "CanPort80": true - } - ] - }, - "4": { - "RegionID": 4, - "RegionCode": "fra", - "RegionName": "Frankfurt", - "Latitude": 50.1109, - "Longitude": 8.6821, - "Nodes": [ - { - "Name": "4h", - "RegionID": 4, - "HostName": "derp4h.tailscale.com", - "IPv4": "185.40.234.77", - "IPv6": "2a00:dd80:20::bcf", - "CanPort80": true - }, - { - "Name": "4g", - "RegionID": 4, - "HostName": "derp4g.tailscale.com", - "IPv4": "185.40.234.113", - "IPv6": "2a00:dd80:20::8f", - "CanPort80": true - }, - { - "Name": "4i", - "RegionID": 4, - "HostName": "derp4i.tailscale.com", - "IPv4": "185.40.234.53", - "IPv6": "2a00:dd80:20::8a6", - "CanPort80": true - }, - { - "Name": "4f", - "RegionID": 4, - "HostName": "derp4f.tailscale.com", - "IPv4": "185.40.234.219", - "IPv6": "2a00:dd80:20::a25", - "CanPort80": true - } - ] - }, - "5": { - "RegionID": 5, - "RegionCode": "syd", - "RegionName": "Sydney", - "Latitude": -33.867778, - "Longitude": 151.21, - "Nodes": [ - { - "Name": "5f", - "RegionID": 5, - "HostName": "derp5f.tailscale.com", - "IPv4": "172.105.166.103", - "IPv6": "2400:8907::2000:ccff:fe1f:80da", - "CanPort80": true - }, - { - "Name": "5g", - "RegionID": 5, - "HostName": "derp5g.tailscale.com", - "IPv4": "172.105.169.57", - "IPv6": "2400:8907::2000:2fff:fea7:57f4", - "CanPort80": true - }, - { - "Name": "5e", - "RegionID": 5, - "HostName": "derp5e.tailscale.com", - "IPv4": "172.105.179.230", - "IPv6": "2400:8907::2000:ceff:fe8d:4f4e", - "CanPort80": true - } - ] - }, - "6": { - "RegionID": 6, - "RegionCode": "blr", - "RegionName": "Bengaluru", - "Latitude": 12.9716, - "Longitude": 77.5946, - "Nodes": [ - { - "Name": "6a", - "RegionID": 6, - "HostName": "derp6.tailscale.com", - "IPv4": "68.183.90.120", - "IPv6": "2400:6180:100:d0::982:d001", - "CanPort80": true - } - ] - }, - "7": { - "RegionID": 7, - "RegionCode": "tok", - "RegionName": "Tokyo", - "Latitude": 35.6764, - "Longitude": 139.65, - "Nodes": [ - { - "Name": "7g", - "RegionID": 7, - "HostName": "derp7g.tailscale.com", - "IPv4": "172.238.6.179", - "IPv6": "2600:3c18::2000:3fff:fe80:3ebd", - "CanPort80": true - }, - { - "Name": "7f", - "RegionID": 7, - "HostName": "derp7f.tailscale.com", - "IPv4": "172.238.6.34", - "IPv6": "2600:3c18::2000:acff:fe8e:3ed5", - "CanPort80": true - }, - { - "Name": "7h", - "RegionID": 7, - "HostName": "derp7h.tailscale.com", - "IPv4": "172.237.28.183", - "IPv6": "2600:3c18::2000:b1ff:fea9:4560", - "CanPort80": true - }, - { - "Name": "7e", - "RegionID": 7, - "HostName": "derp7e.tailscale.com", - "IPv4": "172.238.6.180", - "IPv6": "2600:3c18::2000:60ff:fe0f:6e83", - "STUNOnly": true, - "CanPort80": true - } - ] - }, - "8": { - "RegionID": 8, - "RegionCode": "lhr", - "RegionName": "London", - "Latitude": 51.5072, - "Longitude": 0.1276, - "Nodes": [ - { - "Name": "8f", - "RegionID": 8, - "HostName": "derp8f.tailscale.com", - "IPv4": "176.58.88.183", - "IPv6": "2a00:dd80:3a::dfa", - "CanPort80": true - }, - { - "Name": "8g", - "RegionID": 8, - "HostName": "derp8g.tailscale.com", - "IPv4": "176.58.92.254", - "IPv6": "2a00:dd80:3a::ed", - "CanPort80": true - }, - { - "Name": "8e", - "RegionID": 8, - "HostName": "derp8e.tailscale.com", - "IPv4": "176.58.92.144", - "IPv6": "2a00:dd80:3a::b33", - "CanPort80": true - } - ] - }, - "9": { - "RegionID": 9, - "RegionCode": "dfw", - "RegionName": "Dallas", - "Latitude": 32.779167, - "Longitude": -96.808889, - "Nodes": [ - { - "Name": "9e", - "RegionID": 9, - "HostName": "derp9e.tailscale.com", - "IPv4": "192.73.248.83", - "IPv6": "2607:f740:100::359", - "CanPort80": true - }, - { - "Name": "9f", - "RegionID": 9, - "HostName": "derp9f.tailscale.com", - "IPv4": "209.177.156.197", - "IPv6": "2607:f740:100::cad", - "CanPort80": true - }, - { - "Name": "9d", - "RegionID": 9, - "HostName": "derp9d.tailscale.com", - "IPv4": "209.177.156.94", - "IPv6": "2607:f740:100::c05", - "CanPort80": true - } - ] - } - } - }, - "DisplayMessages": null, - "TKAEnabled": false, - "TKAHead": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", - "Domain": "kratail2tid@passkey", - "DomainAuditLogID": "", - "UserProfiles": { - "4041918547170221": { - "ID": 4041918547170221, - "LoginName": "exit-node.tail78f774.ts.net", - "DisplayName": "exit-node" - } - } + "PacketFilterRules": null } }, "group-a-client": { - "commands": { - "packet_filter_rules": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/group-a-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/group-a-client/tailscaled.sock debug localapi POST debug-packet-filter-matches" - }, "packet_filter_rules": [ { "SrcIPs": [ @@ -4337,469 +548,67 @@ "fd7a:115c:a1e0::ff37:1218" ], "DstPorts": [ - { "IP": "100.107.162.14", "Ports": { "First": 0, "Last": 65535 } }, - { "IP": "fd7a:115c:a1e0::a237:a20e", "Ports": { "First": 0, "Last": 65535 } } + { + "IP": "100.107.162.14", + "Ports": { + "First": 0, + "Last": 65535 + } + }, + { + "IP": "fd7a:115c:a1e0::a237:a20e", + "Ports": { + "First": 0, + "Last": 65535 + } + } ] } ], - "packet_filter_matches": [ - { - "IPProto": [6, 17, 1, 58], - "Srcs": [ - "100.107.162.14/32", - "100.109.43.124/32", - "100.116.18.24/32", - "100.124.195.93/32", - "100.65.172.123/32", - "100.77.135.18/32", - "fd7a:115c:a1e0::4b37:8712/128", - "fd7a:115c:a1e0::5a37:ac7c/128", - "fd7a:115c:a1e0::7837:c35d/128", - "fd7a:115c:a1e0::a237:a20e/128", - "fd7a:115c:a1e0::a537:2b7c/128", - "fd7a:115c:a1e0::ff37:1218/128" - ], - "SrcCaps": null, - "Dsts": [ - { "Net": "100.107.162.14/32", "Ports": { "First": 0, "Last": 65535 } }, - { "Net": "fd7a:115c:a1e0::a237:a20e/128", "Ports": { "First": 0, "Last": 65535 } } - ], - "Caps": [] - } - ], - "whois": { - "100.124.195.93": { - "peer_name": "exit-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/group-a-client/tailscaled.sock whois --json 100.124.195.93", - "response": { - "Node": { - "ID": 3118755726458377, - "StableID": "nvFTscRVMR11CNTRL", - "Name": "exit-a.tail78f774.ts.net.", - "User": 1260082990019555, - "Key": "nodekey:21ab6fa3288e3bf8cecced295316c6327f427649765eb1746cc6ee9978bcc35c", - "DiscoKey": "discokey:0c8595f67987ed47cf551646d6266c21a635d622409d10745cc08f6922066e49", - "Addresses": ["100.124.195.93/32", "fd7a:115c:a1e0::7837:c35d/128"], - "AllowedIPs": ["100.124.195.93/32", "fd7a:115c:a1e0::7837:c35d/128"], - "Endpoints": ["77.164.248.136:37550", "10.65.0.27:37550", "172.17.0.1:37550"], - "HomeDERP": 14, - "Hostinfo": { - "OS": "linux", - "Hostname": "exit-a", - "Services": [ - { "Proto": "peerapi4", "Port": 57826 }, - { "Proto": "peerapi6", "Port": 57826 } - ] - }, - "Created": "2026-03-28T10:37:56.932966573Z", - "Cap": 131, - "Tags": ["tag:exit-a"], - "Online": true, - "ComputedName": "exit-a", - "ComputedNameWithHost": "exit-a" - }, - "UserProfile": { "ID": 1260082990019555, "LoginName": "tagged-devices", "DisplayName": "Tagged Devices" }, - "CapMap": null - } - }, - "100.116.18.24": { - "peer_name": "exit-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/group-a-client/tailscaled.sock whois --json 100.116.18.24", - "response": { - "Node": { - "ID": 2230775583277936, - "StableID": "ndK1N8hKRJ11CNTRL", - "Name": "exit-b.tail78f774.ts.net.", - "User": 1260082990019555, - "Key": "nodekey:265e1377372be0d036773ac41339bf7b53ed18e9f67f196d7d517abeff741217", - "DiscoKey": "discokey:63071b08ff89860a2d98005f8f6f65f3b92e05b7b1338b1be71e4ad866f12728", - "Addresses": ["100.116.18.24/32", "fd7a:115c:a1e0::ff37:1218/128"], - "AllowedIPs": ["100.116.18.24/32", "fd7a:115c:a1e0::ff37:1218/128"], - "Endpoints": ["77.164.248.136:35565", "10.65.0.27:35565", "172.17.0.1:35565"], - "HomeDERP": 14, - "Hostinfo": { - "OS": "linux", - "Hostname": "exit-b", - "Services": [ - { "Proto": "peerapi4", "Port": 61723 }, - { "Proto": "peerapi6", "Port": 61723 } - ] - }, - "Created": "2026-03-28T10:38:00.655990366Z", - "Cap": 131, - "Tags": ["tag:exit-b"], - "Online": true, - "ComputedName": "exit-b", - "ComputedNameWithHost": "exit-b" - }, - "UserProfile": { "ID": 1260082990019555, "LoginName": "tagged-devices", "DisplayName": "Tagged Devices" }, - "CapMap": null - } - }, - "100.85.66.106": { - "peer_name": "exit-node", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/group-a-client/tailscaled.sock whois --json 100.85.66.106", - "response": null - }, - "100.77.135.18": { - "peer_name": "group-b-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/group-a-client/tailscaled.sock whois --json 100.77.135.18", - "response": { - "Node": { - "ID": 1008089393782498, - "StableID": "ndUwgLoZs811CNTRL", - "Name": "group-b-client.tail78f774.ts.net.", - "User": 1260082990019555, - "Key": "nodekey:ef35a655163204a08b33e09fdc24709f1e3aaa7f40de4efd5549cf014b4d8711", - "DiscoKey": "discokey:e972182cda0d0b459c91b2881624b81749a7e44390a5dde1b9bc17c1ae67715a", - "Addresses": ["100.77.135.18/32", "fd7a:115c:a1e0::4b37:8712/128"], - "AllowedIPs": ["100.77.135.18/32", "fd7a:115c:a1e0::4b37:8712/128"], - "Endpoints": ["77.164.248.136:49377", "10.65.0.27:49377", "172.17.0.1:49377"], - "HomeDERP": 14, - "Hostinfo": { - "OS": "linux", - "Hostname": "group-b-client", - "Services": [ - { "Proto": "peerapi4", "Port": 47173 }, - { "Proto": "peerapi6", "Port": 47173 } - ] - }, - "Created": "2026-03-28T10:38:08.031309668Z", - "Cap": 131, - "Tags": ["tag:group-b"], - "Online": true, - "ComputedName": "group-b-client", - "ComputedNameWithHost": "group-b-client" - }, - "UserProfile": { "ID": 1260082990019555, "LoginName": "tagged-devices", "DisplayName": "Tagged Devices" }, - "CapMap": null - } - }, - "100.105.127.107": { - "peer_name": "multi-exit-router", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/group-a-client/tailscaled.sock whois --json 100.105.127.107", - "response": null - }, - "100.109.43.124": { - "peer_name": "router-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/group-a-client/tailscaled.sock whois --json 100.109.43.124", - "response": { - "Node": { - "ID": 50590507314324, - "StableID": "n3kktkvuP111CNTRL", - "Name": "router-a.tail78f774.ts.net.", - "User": 1260082990019555, - "Key": "nodekey:b4566fef38b3b2b15684fc8890f5fbaea4525b467825f57a02801969a5ed2b7b", - "DiscoKey": "discokey:368ba711a8394633b4626eb7cd8e6a2df90d8e554505dc032ea9658ceee0f731", - "Addresses": ["100.109.43.124/32", "fd7a:115c:a1e0::a537:2b7c/128"], - "AllowedIPs": ["100.109.43.124/32", "fd7a:115c:a1e0::a537:2b7c/128", "10.44.0.0/16"], - "Endpoints": ["77.164.248.136:34130", "10.65.0.27:34130", "172.17.0.1:34130"], - "HomeDERP": 14, - "Hostinfo": { - "OS": "linux", - "Hostname": "router-a", - "Services": [ - { "Proto": "peerapi4", "Port": 49439 }, - { "Proto": "peerapi6", "Port": 49439 } - ] - }, - "Created": "2026-03-28T10:38:11.734910312Z", - "Cap": 131, - "Tags": ["tag:router-a"], - "PrimaryRoutes": ["10.44.0.0/16"], - "Online": true, - "ComputedName": "router-a", - "ComputedNameWithHost": "router-a" - }, - "UserProfile": { "ID": 1260082990019555, "LoginName": "tagged-devices", "DisplayName": "Tagged Devices" }, - "CapMap": null - } - }, - "100.65.172.123": { - "peer_name": "router-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/group-a-client/tailscaled.sock whois --json 100.65.172.123", - "response": { - "Node": { - "ID": 1399889648409786, - "StableID": "nPHvXBj1wB11CNTRL", - "Name": "router-b.tail78f774.ts.net.", - "User": 1260082990019555, - "Key": "nodekey:4e6d3473c516cea37bcefdf4368932c623fd91c24aee1aacc27ca8165a41ac7a", - "DiscoKey": "discokey:dd5532635b8e3ddf25186e36671c16dd17c005c8b6a6862f4b5cc4e4f459e705", - "Addresses": ["100.65.172.123/32", "fd7a:115c:a1e0::5a37:ac7c/128"], - "AllowedIPs": ["100.65.172.123/32", "fd7a:115c:a1e0::5a37:ac7c/128"], - "Endpoints": ["77.164.248.136:35931", "10.65.0.27:35931", "172.17.0.1:35931"], - "HomeDERP": 14, - "Hostinfo": { - "OS": "linux", - "Hostname": "router-b", - "Services": [ - { "Proto": "peerapi4", "Port": 58804 }, - { "Proto": "peerapi6", "Port": 58804 } - ] - }, - "Created": "2026-03-28T10:38:15.42735258Z", - "Cap": 131, - "Tags": ["tag:router-b"], - "Online": true, - "ComputedName": "router-b", - "ComputedNameWithHost": "router-b" - }, - "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/group-a-client/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/group-a-client/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/group-a-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/group-a-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/group-a-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/group-a-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/group-a-client/tailscaled.sock whois --json 100.90.199.68", - "response": null - } - }, "netmap": { - "SelfNode": { - "ID": 6999435610919250, - "StableID": "nyckVfJ4fw11CNTRL", - "Name": "group-a-client.tail78f774.ts.net.", - "User": 6999435610919250, - "Key": "nodekey:802726716bd4942fceb5e444218c930040fadb082698b57ea3eb59a6a26ba20d", - "DiscoKey": "discokey:bc93c2d3b81606e44eb1c96d721e7cd73c9497aa7d3efbe2f5e0d1e2e95b190f", - "Addresses": ["100.107.162.14/32", "fd7a:115c:a1e0::a237:a20e/128"], - "AllowedIPs": ["100.107.162.14/32", "fd7a:115c:a1e0::a237:a20e/128"], - "Endpoints": ["77.164.248.136:51980", "10.65.0.27:51980", "172.17.0.1:51980"], - "Hostinfo": { - "Hostname": "group-a-client", - "RequestTags": ["tag:group-a"], - "Services": [ - { "Proto": "peerapi4", "Port": 36543 }, - { "Proto": "peerapi6", "Port": 36543 }, - { "Proto": "peerapi-dns-proxy", "Port": 1 } - ] - }, - "Created": "2026-03-28T10:38:04.339428828Z", - "Tags": ["tag:group-a"], - "MachineAuthorized": true, - "CapMap": { - "https://tailscale.com/cap/file-sharing": null, - "https://tailscale.com/cap/is-owner": null, - "https://tailscale.com/cap/ssh": null, - "https://tailscale.com/cap/tailnet-lock": null, - "probe-udp-lifetime": null, - "ssh-behavior-v1": null, - "ssh-env-vars": null, - "store-appc-routes": null, - "tailnet-display-name": ["kratail2tid@passkey"] - }, - "ComputedName": "group-a-client", - "ComputedNameWithHost": "group-a-client" - }, - "AllCaps": [ - "https://tailscale.com/cap/file-sharing", - "probe-udp-lifetime", - "store-appc-routes", - "https://tailscale.com/cap/is-owner", - "https://tailscale.com/cap/ssh", - "tailnet-display-name", - "https://tailscale.com/cap/tailnet-lock", - "ssh-behavior-v1", - "ssh-env-vars" - ], - "NodeKey": "nodekey:802726716bd4942fceb5e444218c930040fadb082698b57ea3eb59a6a26ba20d", - "MachineKey": "mkey:fd2d0c2953440569b6c045d6bb1826bf138bf65b4ed4433532e4d91e09fd6b6b", "Peers": [ { - "ID": 50590507314324, - "StableID": "n3kktkvuP111CNTRL", "Name": "router-a.tail78f774.ts.net.", - "User": 1260082990019555, - "Key": "nodekey:b4566fef38b3b2b15684fc8890f5fbaea4525b467825f57a02801969a5ed2b7b", - "DiscoKey": "discokey:368ba711a8394633b4626eb7cd8e6a2df90d8e554505dc032ea9658ceee0f731", - "Addresses": ["100.109.43.124/32", "fd7a:115c:a1e0::a537:2b7c/128"], - "AllowedIPs": ["100.109.43.124/32", "fd7a:115c:a1e0::a537:2b7c/128", "10.44.0.0/16"], - "Endpoints": ["77.164.248.136:34130", "10.65.0.27:34130", "172.17.0.1:34130"], - "HomeDERP": 14, - "Hostinfo": { - "OS": "linux", - "Hostname": "router-a", - "Services": [ - { "Proto": "peerapi4", "Port": 49439 }, - { "Proto": "peerapi6", "Port": 49439 } - ] - }, - "Created": "2026-03-28T10:38:11.734910312Z", - "Cap": 131, - "Tags": ["tag:router-a"], - "PrimaryRoutes": ["10.44.0.0/16"], - "Online": true, - "ComputedName": "router-a", - "ComputedNameWithHost": "router-a" - }, - { - "ID": 1008089393782498, - "StableID": "ndUwgLoZs811CNTRL", - "Name": "group-b-client.tail78f774.ts.net.", - "User": 1260082990019555, - "Key": "nodekey:ef35a655163204a08b33e09fdc24709f1e3aaa7f40de4efd5549cf014b4d8711", - "DiscoKey": "discokey:e972182cda0d0b459c91b2881624b81749a7e44390a5dde1b9bc17c1ae67715a", - "Addresses": ["100.77.135.18/32", "fd7a:115c:a1e0::4b37:8712/128"], - "AllowedIPs": ["100.77.135.18/32", "fd7a:115c:a1e0::4b37:8712/128"], - "Endpoints": ["77.164.248.136:49377", "10.65.0.27:49377", "172.17.0.1:49377"], - "HomeDERP": 14, - "Hostinfo": { - "OS": "linux", - "Hostname": "group-b-client", - "Services": [ - { "Proto": "peerapi4", "Port": 47173 }, - { "Proto": "peerapi6", "Port": 47173 } - ] - }, - "Created": "2026-03-28T10:38:08.031309668Z", - "Cap": 131, - "Tags": ["tag:group-b"], - "Online": true, - "ComputedName": "group-b-client", - "ComputedNameWithHost": "group-b-client" - }, - { - "ID": 1399889648409786, - "StableID": "nPHvXBj1wB11CNTRL", - "Name": "router-b.tail78f774.ts.net.", - "User": 1260082990019555, - "Key": "nodekey:4e6d3473c516cea37bcefdf4368932c623fd91c24aee1aacc27ca8165a41ac7a", - "DiscoKey": "discokey:dd5532635b8e3ddf25186e36671c16dd17c005c8b6a6862f4b5cc4e4f459e705", - "Addresses": ["100.65.172.123/32", "fd7a:115c:a1e0::5a37:ac7c/128"], - "AllowedIPs": ["100.65.172.123/32", "fd7a:115c:a1e0::5a37:ac7c/128"], - "Endpoints": ["77.164.248.136:35931", "10.65.0.27:35931", "172.17.0.1:35931"], - "HomeDERP": 14, - "Hostinfo": { - "OS": "linux", - "Hostname": "router-b", - "Services": [ - { "Proto": "peerapi4", "Port": 58804 }, - { "Proto": "peerapi6", "Port": 58804 } - ] - }, - "Created": "2026-03-28T10:38:15.42735258Z", - "Cap": 131, - "Tags": ["tag:router-b"], - "Online": true, - "ComputedName": "router-b", - "ComputedNameWithHost": "router-b" - }, - { - "ID": 2230775583277936, - "StableID": "ndK1N8hKRJ11CNTRL", - "Name": "exit-b.tail78f774.ts.net.", - "User": 1260082990019555, - "Key": "nodekey:265e1377372be0d036773ac41339bf7b53ed18e9f67f196d7d517abeff741217", - "DiscoKey": "discokey:63071b08ff89860a2d98005f8f6f65f3b92e05b7b1338b1be71e4ad866f12728", - "Addresses": ["100.116.18.24/32", "fd7a:115c:a1e0::ff37:1218/128"], - "AllowedIPs": ["100.116.18.24/32", "fd7a:115c:a1e0::ff37:1218/128"], - "Endpoints": ["77.164.248.136:35565", "10.65.0.27:35565", "172.17.0.1:35565"], - "HomeDERP": 14, - "Hostinfo": { - "OS": "linux", - "Hostname": "exit-b", - "Services": [ - { "Proto": "peerapi4", "Port": 61723 }, - { "Proto": "peerapi6", "Port": 61723 } - ] - }, - "Created": "2026-03-28T10:38:00.655990366Z", - "Cap": 131, - "Tags": ["tag:exit-b"], - "Online": true, - "ComputedName": "exit-b", - "ComputedNameWithHost": "exit-b" - }, - { - "ID": 3118755726458377, - "StableID": "nvFTscRVMR11CNTRL", - "Name": "exit-a.tail78f774.ts.net.", - "User": 1260082990019555, - "Key": "nodekey:21ab6fa3288e3bf8cecced295316c6327f427649765eb1746cc6ee9978bcc35c", - "DiscoKey": "discokey:0c8595f67987ed47cf551646d6266c21a635d622409d10745cc08f6922066e49", - "Addresses": ["100.124.195.93/32", "fd7a:115c:a1e0::7837:c35d/128"], - "AllowedIPs": ["100.124.195.93/32", "fd7a:115c:a1e0::7837:c35d/128"], - "Endpoints": ["77.164.248.136:37550", "10.65.0.27:37550", "172.17.0.1:37550"], - "HomeDERP": 14, - "Hostinfo": { - "OS": "linux", - "Hostname": "exit-a", - "Services": [ - { "Proto": "peerapi4", "Port": 57826 }, - { "Proto": "peerapi6", "Port": 57826 } - ] - }, - "Created": "2026-03-28T10:37:56.932966573Z", - "Cap": 131, - "Tags": ["tag:exit-a"], - "Online": true, - "ComputedName": "exit-a", - "ComputedNameWithHost": "exit-a" - } - ], - "DNS": { - "Routes": { - "tail78f774.ts.net.": null, - "ts.net.": [{ "Addr": "199.247.155.53" }, { "Addr": "2620:111:8007::53" }] - }, - "Domains": ["tail78f774.ts.net"], - "Proxied": true, - "ExitNodeFilteredSet": [".ts.net", ".tailscale.net"] - }, - "PacketFilter": [ - { - "IPProto": [6, 17, 1, 58], - "Srcs": [ - "100.107.162.14/32", + "AllowedIPs": [ "100.109.43.124/32", - "100.116.18.24/32", - "100.124.195.93/32", - "100.65.172.123/32", - "100.77.135.18/32", - "fd7a:115c:a1e0::4b37:8712/128", - "fd7a:115c:a1e0::5a37:ac7c/128", - "fd7a:115c:a1e0::7837:c35d/128", - "fd7a:115c:a1e0::a237:a20e/128", "fd7a:115c:a1e0::a537:2b7c/128", + "10.44.0.0/16" + ], + "PrimaryRoutes": [ + "10.44.0.0/16" + ] + }, + { + "Name": "group-b-client.tail78f774.ts.net.", + "AllowedIPs": [ + "100.77.135.18/32", + "fd7a:115c:a1e0::4b37:8712/128" + ], + "PrimaryRoutes": [] + }, + { + "Name": "router-b.tail78f774.ts.net.", + "AllowedIPs": [ + "100.65.172.123/32", + "fd7a:115c:a1e0::5a37:ac7c/128" + ], + "PrimaryRoutes": [] + }, + { + "Name": "exit-b.tail78f774.ts.net.", + "AllowedIPs": [ + "100.116.18.24/32", "fd7a:115c:a1e0::ff37:1218/128" ], - "SrcCaps": null, - "Dsts": [ - { "Net": "100.107.162.14/32", "Ports": { "First": 0, "Last": 65535 } }, - { "Net": "fd7a:115c:a1e0::a237:a20e/128", "Ports": { "First": 0, "Last": 65535 } } + "PrimaryRoutes": [] + }, + { + "Name": "exit-a.tail78f774.ts.net.", + "AllowedIPs": [ + "100.124.195.93/32", + "fd7a:115c:a1e0::7837:c35d/128" ], - "Caps": [] + "PrimaryRoutes": [] } ], "PacketFilterRules": [ @@ -4819,990 +628,26 @@ "fd7a:115c:a1e0::ff37:1218" ], "DstPorts": [ - { "IP": "100.107.162.14", "Ports": { "First": 0, "Last": 65535 } }, - { "IP": "fd7a:115c:a1e0::a237:a20e", "Ports": { "First": 0, "Last": 65535 } } + { + "IP": "100.107.162.14", + "Ports": { + "First": 0, + "Last": 65535 + } + }, + { + "IP": "fd7a:115c:a1e0::a237:a20e", + "Ports": { + "First": 0, + "Last": 65535 + } + } ] } - ], - "SSHPolicy": { "rules": [] }, - "CollectServices": false, - "DERPMap": { - "Regions": { - "1": { - "RegionID": 1, - "RegionCode": "nyc", - "RegionName": "New York City", - "Latitude": 40.7128, - "Longitude": -74.006, - "Nodes": [ - { - "Name": "1h", - "RegionID": 1, - "HostName": "derp1h.tailscale.com", - "IPv4": "199.38.181.93", - "IPv6": "2607:f740:f::afd", - "CanPort80": true - }, - { - "Name": "1g", - "RegionID": 1, - "HostName": "derp1g.tailscale.com", - "IPv4": "209.177.145.120", - "IPv6": "2607:f740:f::3eb", - "CanPort80": true - }, - { - "Name": "1i", - "RegionID": 1, - "HostName": "derp1i.tailscale.com", - "IPv4": "199.38.181.103", - "IPv6": "2607:f740:f::e19", - "CanPort80": true - }, - { - "Name": "1f", - "RegionID": 1, - "HostName": "derp1f.tailscale.com", - "IPv4": "199.38.181.104", - "IPv6": "2607:f740:f::bc", - "CanPort80": true - } - ] - }, - "10": { - "RegionID": 10, - "RegionCode": "sea", - "RegionName": "Seattle", - "Latitude": 47.609722, - "Longitude": -122.333056, - "Nodes": [ - { - "Name": "10c", - "RegionID": 10, - "HostName": "derp10c.tailscale.com", - "IPv4": "192.73.240.121", - "IPv6": "2607:f740:14::40c", - "CanPort80": true - }, - { - "Name": "10d", - "RegionID": 10, - "HostName": "derp10d.tailscale.com", - "IPv4": "192.73.240.132", - "IPv6": "2607:f740:14::500", - "CanPort80": true - }, - { - "Name": "10b", - "RegionID": 10, - "HostName": "derp10b.tailscale.com", - "IPv4": "192.73.240.161", - "IPv6": "2607:f740:14::61c", - "CanPort80": true - } - ] - }, - "11": { - "RegionID": 11, - "RegionCode": "sao", - "RegionName": "São Paulo", - "Latitude": -23.55, - "Longitude": -46.633333, - "Nodes": [ - { - "Name": "11f", - "RegionID": 11, - "HostName": "derp11f.tailscale.com", - "IPv4": "172.237.61.197", - "IPv6": "2600:3c0d::2000:3bff:fe44:6166", - "CanPort80": true - }, - { - "Name": "11g", - "RegionID": 11, - "HostName": "derp11g.tailscale.com", - "IPv4": "172.237.61.190", - "IPv6": "2600:3c0d::2000:62ff:febe:2e67", - "CanPort80": true - }, - { - "Name": "11e", - "RegionID": 11, - "HostName": "derp11e.tailscale.com", - "IPv4": "172.237.61.194", - "IPv6": "2600:3c0d::2000:d2ff:fe43:1790", - "CanPort80": true - } - ] - }, - "12": { - "RegionID": 12, - "RegionCode": "ord", - "RegionName": "Chicago", - "Latitude": 41.881944, - "Longitude": -87.627778, - "Nodes": [ - { - "Name": "12e", - "RegionID": 12, - "HostName": "derp12e.tailscale.com", - "IPv4": "209.177.158.15", - "IPv6": "2607:f740:e::b17", - "CanPort80": true - }, - { - "Name": "12f", - "RegionID": 12, - "HostName": "derp12f.tailscale.com", - "IPv4": "199.38.182.118", - "IPv6": "2607:f740:e::4c8", - "CanPort80": true - }, - { - "Name": "12d", - "RegionID": 12, - "HostName": "derp12d.tailscale.com", - "IPv4": "209.177.158.246", - "IPv6": "2607:f740:e::811", - "CanPort80": true - } - ] - }, - "13": { - "RegionID": 13, - "RegionCode": "den", - "RegionName": "Denver", - "Latitude": 39.7392, - "Longitude": -104.9849, - "Nodes": [ - { - "Name": "13c", - "RegionID": 13, - "HostName": "derp13c.tailscale.com", - "IPv4": "192.73.242.28", - "IPv6": "2607:f740:16::5c", - "CanPort80": true - }, - { - "Name": "13d", - "RegionID": 13, - "HostName": "derp13d.tailscale.com", - "IPv4": "192.73.242.204", - "IPv6": "2607:f740:16::c23", - "CanPort80": true - }, - { - "Name": "13b", - "RegionID": 13, - "HostName": "derp13b.tailscale.com", - "IPv4": "192.73.242.187", - "IPv6": "2607:f740:16::640", - "CanPort80": true - } - ] - }, - "14": { - "RegionID": 14, - "RegionCode": "ams", - "RegionName": "Amsterdam", - "Latitude": 52.372778, - "Longitude": 4.893611, - "Nodes": [ - { - "Name": "14c", - "RegionID": 14, - "HostName": "derp14c.tailscale.com", - "IPv4": "176.58.93.147", - "IPv6": "2a00:dd80:3c::b09", - "CanPort80": true - }, - { - "Name": "14d", - "RegionID": 14, - "HostName": "derp14d.tailscale.com", - "IPv4": "176.58.93.154", - "IPv6": "2a00:dd80:3c::3d5", - "CanPort80": true - }, - { - "Name": "14b", - "RegionID": 14, - "HostName": "derp14b.tailscale.com", - "IPv4": "176.58.93.248", - "IPv6": "2a00:dd80:3c::807", - "CanPort80": true - } - ] - }, - "15": { - "RegionID": 15, - "RegionCode": "jnb", - "RegionName": "Johannesburg", - "Latitude": -26.204444, - "Longitude": 28.045556, - "Nodes": [ - { - "Name": "15c", - "RegionID": 15, - "HostName": "derp15c.tailscale.com", - "IPv4": "102.67.165.185", - "IPv6": "2c0f:edb0:0:10::b59", - "CanPort80": true - }, - { - "Name": "15d", - "RegionID": 15, - "HostName": "derp15d.tailscale.com", - "IPv4": "102.67.165.36", - "IPv6": "2c0f:edb0:0:10::599", - "CanPort80": true - }, - { - "Name": "15b", - "RegionID": 15, - "HostName": "derp15b.tailscale.com", - "IPv4": "102.67.165.90", - "IPv6": "2c0f:edb0:0:10::963", - "CanPort80": true - } - ] - }, - "16": { - "RegionID": 16, - "RegionCode": "mia", - "RegionName": "Miami", - "Latitude": 25.78, - "Longitude": -80.21, - "Nodes": [ - { - "Name": "16c", - "RegionID": 16, - "HostName": "derp16c.tailscale.com", - "IPv4": "192.73.243.229", - "IPv6": "2607:f740:17::4e4", - "CanPort80": true - }, - { - "Name": "16d", - "RegionID": 16, - "HostName": "derp16d.tailscale.com", - "IPv4": "192.73.243.141", - "IPv6": "2607:f740:17::475", - "CanPort80": true - }, - { - "Name": "16b", - "RegionID": 16, - "HostName": "derp16b.tailscale.com", - "IPv4": "192.73.243.135", - "IPv6": "2607:f740:17::476", - "CanPort80": true - } - ] - }, - "17": { - "RegionID": 17, - "RegionCode": "lax", - "RegionName": "Los Angeles", - "Latitude": 34.05, - "Longitude": -118.25, - "Nodes": [ - { - "Name": "17c", - "RegionID": 17, - "HostName": "derp17c.tailscale.com", - "IPv4": "208.111.40.12", - "IPv6": "2607:f740:c::10", - "CanPort80": true - }, - { - "Name": "17d", - "RegionID": 17, - "HostName": "derp17d.tailscale.com", - "IPv4": "208.111.40.216", - "IPv6": "2607:f740:c::e1b", - "CanPort80": true - }, - { - "Name": "17b", - "RegionID": 17, - "HostName": "derp17b.tailscale.com", - "IPv4": "192.73.244.245", - "IPv6": "2607:f740:c::646", - "CanPort80": true - } - ] - }, - "18": { - "RegionID": 18, - "RegionCode": "par", - "RegionName": "Paris", - "Latitude": 48.856667, - "Longitude": 2.352222, - "Nodes": [ - { - "Name": "18c", - "RegionID": 18, - "HostName": "derp18c.tailscale.com", - "IPv4": "176.58.90.207", - "IPv6": "2a00:dd80:3e::c19", - "CanPort80": true - }, - { - "Name": "18d", - "RegionID": 18, - "HostName": "derp18d.tailscale.com", - "IPv4": "176.58.90.104", - "IPv6": "2a00:dd80:3e::f2e", - "CanPort80": true - }, - { - "Name": "18b", - "RegionID": 18, - "HostName": "derp18b.tailscale.com", - "IPv4": "176.58.90.147", - "IPv6": "2a00:dd80:3e::363", - "CanPort80": true - } - ] - }, - "19": { - "RegionID": 19, - "RegionCode": "mad", - "RegionName": "Madrid", - "Latitude": 40.416944, - "Longitude": -3.703333, - "Nodes": [ - { - "Name": "19c", - "RegionID": 19, - "HostName": "derp19c.tailscale.com", - "IPv4": "45.159.97.61", - "IPv6": "2a00:dd80:14:10::20", - "CanPort80": true - }, - { - "Name": "19d", - "RegionID": 19, - "HostName": "derp19d.tailscale.com", - "IPv4": "45.159.97.233", - "IPv6": "2a00:dd80:14:10::34a", - "CanPort80": true - }, - { - "Name": "19b", - "RegionID": 19, - "HostName": "derp19b.tailscale.com", - "IPv4": "45.159.97.144", - "IPv6": "2a00:dd80:14:10::335", - "CanPort80": true - } - ] - }, - "2": { - "RegionID": 2, - "RegionCode": "sfo", - "RegionName": "San Francisco", - "Latitude": 37.7775, - "Longitude": -122.416389, - "Nodes": [ - { - "Name": "2e", - "RegionID": 2, - "HostName": "derp2e.tailscale.com", - "IPv4": "192.73.252.134", - "IPv6": "2607:f740:0:3f::44c", - "CanPort80": true - }, - { - "Name": "2f", - "RegionID": 2, - "HostName": "derp2f.tailscale.com", - "IPv4": "208.111.34.178", - "IPv6": "2607:f740:0:3f::f4", - "CanPort80": true - }, - { - "Name": "2d", - "RegionID": 2, - "HostName": "derp2d.tailscale.com", - "IPv4": "192.73.252.65", - "IPv6": "2607:f740:0:3f::287", - "CanPort80": true - } - ] - }, - "20": { - "RegionID": 20, - "RegionCode": "hkg", - "RegionName": "Hong Kong", - "Latitude": 22.3193, - "Longitude": 114.1694, - "Nodes": [ - { - "Name": "20c", - "RegionID": 20, - "HostName": "derp20c.tailscale.com", - "IPv4": "205.147.105.30", - "IPv6": "2403:2500:8000:1::5fb", - "CanPort80": true - }, - { - "Name": "20d", - "RegionID": 20, - "HostName": "derp20d.tailscale.com", - "IPv4": "205.147.105.78", - "IPv6": "2403:2500:8000:1::e9a", - "CanPort80": true - }, - { - "Name": "20b", - "RegionID": 20, - "HostName": "derp20b.tailscale.com", - "IPv4": "103.6.84.152", - "IPv6": "2403:2500:8000:1::ef6", - "CanPort80": true - } - ] - }, - "21": { - "RegionID": 21, - "RegionCode": "tor", - "RegionName": "Toronto", - "Latitude": 43.741667, - "Longitude": -79.373333, - "Nodes": [ - { - "Name": "21c", - "RegionID": 21, - "HostName": "derp21c.tailscale.com", - "IPv4": "162.248.221.215", - "IPv6": "2607:f740:50::f10", - "CanPort80": true - }, - { - "Name": "21d", - "RegionID": 21, - "HostName": "derp21d.tailscale.com", - "IPv4": "162.248.221.248", - "IPv6": "2607:f740:50::ca4", - "CanPort80": true - }, - { - "Name": "21b", - "RegionID": 21, - "HostName": "derp21b.tailscale.com", - "IPv4": "162.248.221.199", - "IPv6": "2607:f740:50::1d1", - "CanPort80": true - } - ] - }, - "22": { - "RegionID": 22, - "RegionCode": "waw", - "RegionName": "Warsaw", - "Latitude": 52.23, - "Longitude": 21.011111, - "Nodes": [ - { - "Name": "22c", - "RegionID": 22, - "HostName": "derp22c.tailscale.com", - "IPv4": "45.159.98.253", - "IPv6": "2a00:dd80:40:100::3f", - "CanPort80": true - }, - { - "Name": "22d", - "RegionID": 22, - "HostName": "derp22d.tailscale.com", - "IPv4": "45.159.98.145", - "IPv6": "2a00:dd80:40:100::211", - "CanPort80": true - }, - { - "Name": "22b", - "RegionID": 22, - "HostName": "derp22b.tailscale.com", - "IPv4": "45.159.98.196", - "IPv6": "2a00:dd80:40:100::316", - "CanPort80": true - } - ] - }, - "23": { - "RegionID": 23, - "RegionCode": "dbi", - "RegionName": "Dubai", - "Latitude": 25.263056, - "Longitude": 55.297222, - "Nodes": [ - { - "Name": "23c", - "RegionID": 23, - "HostName": "derp23c.tailscale.com", - "IPv4": "185.34.3.207", - "IPv6": "2a00:dd80:3f:100::a50", - "CanPort80": true - }, - { - "Name": "23d", - "RegionID": 23, - "HostName": "derp23d.tailscale.com", - "IPv4": "185.34.3.75", - "IPv6": "2a00:dd80:3f:100::97e", - "CanPort80": true - }, - { - "Name": "23b", - "RegionID": 23, - "HostName": "derp23b.tailscale.com", - "IPv4": "185.34.3.232", - "IPv6": "2a00:dd80:3f:100::76f", - "CanPort80": true - } - ] - }, - "24": { - "RegionID": 24, - "RegionCode": "hnl", - "RegionName": "Honolulu", - "Latitude": 21.306944, - "Longitude": -157.858333, - "Nodes": [ - { - "Name": "24c", - "RegionID": 24, - "HostName": "derp24c.tailscale.com", - "IPv4": "208.83.233.233", - "IPv6": "2001:19f0:c000:c591:5400:04ff:fe26:2c5f", - "CanPort80": true - }, - { - "Name": "24d", - "RegionID": 24, - "HostName": "derp24d.tailscale.com", - "IPv4": "208.72.155.133", - "IPv6": "2001:19f0:c000:c564:5400:04ff:fe26:2ba8", - "CanPort80": true - }, - { - "Name": "24b", - "RegionID": 24, - "HostName": "derp24b.tailscale.com", - "IPv4": "208.83.234.151", - "IPv6": "2001:19f0:c000:c586:5400:04ff:fe26:2ba6", - "CanPort80": true - } - ] - }, - "25": { - "RegionID": 25, - "RegionCode": "nai", - "RegionName": "Nairobi", - "Latitude": -1.286389, - "Longitude": 36.817222, - "Nodes": [ - { - "Name": "25c", - "RegionID": 25, - "HostName": "derp25c.tailscale.com", - "IPv4": "102.67.167.37", - "IPv6": "2c0f:edb0:2000:1::2c7", - "CanPort80": true - }, - { - "Name": "25d", - "RegionID": 25, - "HostName": "derp25d.tailscale.com", - "IPv4": "102.67.167.188", - "IPv6": "2c0f:edb0:2000:1::188", - "CanPort80": true - }, - { - "Name": "25b", - "RegionID": 25, - "HostName": "derp25b.tailscale.com", - "IPv4": "102.67.167.245", - "IPv6": "2c0f:edb0:2000:1::2e9", - "CanPort80": true - } - ] - }, - "26": { - "RegionID": 26, - "RegionCode": "nue", - "RegionName": "Nuremberg", - "Latitude": 49.453889, - "Longitude": 11.0775, - "Nodes": [ - { - "Name": "26c", - "RegionID": 26, - "HostName": "derp26c.tailscale.com", - "IPv4": "49.12.193.137", - "IPv6": "2a01:4f8:1c1c:5c70::1", - "CanPort80": true - }, - { - "Name": "26d", - "RegionID": 26, - "HostName": "derp26d.tailscale.com", - "IPv4": "49.13.204.141", - "IPv6": "2a01:4f8:1c0c:7d06::1", - "CanPort80": true - }, - { - "Name": "26b", - "RegionID": 26, - "HostName": "derp26b.tailscale.com", - "IPv4": "167.235.72.200", - "IPv6": "2a01:4f8:1c1c:47b6::1", - "CanPort80": true - } - ] - }, - "27": { - "RegionID": 27, - "RegionCode": "iad", - "RegionName": "Ashburn", - "Latitude": 39.03, - "Longitude": -77.471111, - "Nodes": [ - { - "Name": "27d", - "RegionID": 27, - "HostName": "derp27d.tailscale.com", - "IPv4": "178.156.152.106", - "IPv6": "2a01:4ff:f0:3c8e::1", - "CanPort80": true - }, - { - "Name": "27c", - "RegionID": 27, - "HostName": "derp27c.tailscale.com", - "IPv4": "178.156.152.91", - "IPv6": "2a01:4ff:f0:3913::1", - "CanPort80": true - }, - { - "Name": "27e", - "RegionID": 27, - "HostName": "derp27e.tailscale.com", - "IPv4": "178.156.134.232", - "IPv6": "2a01:4ff:f0:28d4::1", - "CanPort80": true - }, - { - "Name": "27b", - "RegionID": 27, - "HostName": "derp27b.tailscale.com", - "IPv4": "5.161.218.233", - "IPv6": "2a01:4ff:f0:3db9::1", - "CanPort80": true - } - ] - }, - "28": { - "RegionID": 28, - "RegionCode": "hel", - "RegionName": "Helsinki", - "Latitude": 60.170833, - "Longitude": 24.9375, - "Nodes": [ - { - "Name": "28c", - "RegionID": 28, - "HostName": "derp28c.tailscale.com", - "IPv4": "95.217.2.165", - "IPv6": "2a01:4f9:c012:cd74::1", - "CanPort80": true - }, - { - "Name": "28d", - "RegionID": 28, - "HostName": "derp28d.tailscale.com", - "IPv4": "157.180.28.32", - "IPv6": "2a01:4f9:c012:2e5b::1", - "CanPort80": true - }, - { - "Name": "28b", - "RegionID": 28, - "HostName": "derp28b.tailscale.com", - "IPv4": "65.109.143.62", - "IPv6": "2a01:4f9:c012:d55c::1", - "CanPort80": true - } - ] - }, - "3": { - "RegionID": 3, - "RegionCode": "sin", - "RegionName": "Singapore", - "Latitude": 1.3521, - "Longitude": 103.8198, - "Nodes": [ - { - "Name": "3g", - "RegionID": 3, - "HostName": "derp3g.tailscale.com", - "IPv4": "172.237.72.79", - "IPv6": "2600:3c15::2000:adff:fe08:6fab", - "CanPort80": true - }, - { - "Name": "3f", - "RegionID": 3, - "HostName": "derp3f.tailscale.com", - "IPv4": "172.237.72.8", - "IPv6": "2600:3c15::2000:53ff:fe48:a668", - "CanPort80": true - }, - { - "Name": "3h", - "RegionID": 3, - "HostName": "derp3h.tailscale.com", - "IPv4": "172.237.66.30", - "IPv6": "2600:3c15::2000:3dff:fe44:50aa", - "CanPort80": true - }, - { - "Name": "3e", - "RegionID": 3, - "HostName": "derp3e.tailscale.com", - "IPv4": "172.237.72.43", - "IPv6": "2600:3c15::2000:6cff:fee4:d799", - "CanPort80": true - } - ] - }, - "4": { - "RegionID": 4, - "RegionCode": "fra", - "RegionName": "Frankfurt", - "Latitude": 50.1109, - "Longitude": 8.6821, - "Nodes": [ - { - "Name": "4h", - "RegionID": 4, - "HostName": "derp4h.tailscale.com", - "IPv4": "185.40.234.77", - "IPv6": "2a00:dd80:20::bcf", - "CanPort80": true - }, - { - "Name": "4g", - "RegionID": 4, - "HostName": "derp4g.tailscale.com", - "IPv4": "185.40.234.113", - "IPv6": "2a00:dd80:20::8f", - "CanPort80": true - }, - { - "Name": "4i", - "RegionID": 4, - "HostName": "derp4i.tailscale.com", - "IPv4": "185.40.234.53", - "IPv6": "2a00:dd80:20::8a6", - "CanPort80": true - }, - { - "Name": "4f", - "RegionID": 4, - "HostName": "derp4f.tailscale.com", - "IPv4": "185.40.234.219", - "IPv6": "2a00:dd80:20::a25", - "CanPort80": true - } - ] - }, - "5": { - "RegionID": 5, - "RegionCode": "syd", - "RegionName": "Sydney", - "Latitude": -33.867778, - "Longitude": 151.21, - "Nodes": [ - { - "Name": "5f", - "RegionID": 5, - "HostName": "derp5f.tailscale.com", - "IPv4": "172.105.166.103", - "IPv6": "2400:8907::2000:ccff:fe1f:80da", - "CanPort80": true - }, - { - "Name": "5g", - "RegionID": 5, - "HostName": "derp5g.tailscale.com", - "IPv4": "172.105.169.57", - "IPv6": "2400:8907::2000:2fff:fea7:57f4", - "CanPort80": true - }, - { - "Name": "5e", - "RegionID": 5, - "HostName": "derp5e.tailscale.com", - "IPv4": "172.105.179.230", - "IPv6": "2400:8907::2000:ceff:fe8d:4f4e", - "CanPort80": true - } - ] - }, - "6": { - "RegionID": 6, - "RegionCode": "blr", - "RegionName": "Bengaluru", - "Latitude": 12.9716, - "Longitude": 77.5946, - "Nodes": [ - { - "Name": "6a", - "RegionID": 6, - "HostName": "derp6.tailscale.com", - "IPv4": "68.183.90.120", - "IPv6": "2400:6180:100:d0::982:d001", - "CanPort80": true - } - ] - }, - "7": { - "RegionID": 7, - "RegionCode": "tok", - "RegionName": "Tokyo", - "Latitude": 35.6764, - "Longitude": 139.65, - "Nodes": [ - { - "Name": "7g", - "RegionID": 7, - "HostName": "derp7g.tailscale.com", - "IPv4": "172.238.6.179", - "IPv6": "2600:3c18::2000:3fff:fe80:3ebd", - "CanPort80": true - }, - { - "Name": "7f", - "RegionID": 7, - "HostName": "derp7f.tailscale.com", - "IPv4": "172.238.6.34", - "IPv6": "2600:3c18::2000:acff:fe8e:3ed5", - "CanPort80": true - }, - { - "Name": "7h", - "RegionID": 7, - "HostName": "derp7h.tailscale.com", - "IPv4": "172.237.28.183", - "IPv6": "2600:3c18::2000:b1ff:fea9:4560", - "CanPort80": true - }, - { - "Name": "7e", - "RegionID": 7, - "HostName": "derp7e.tailscale.com", - "IPv4": "172.238.6.180", - "IPv6": "2600:3c18::2000:60ff:fe0f:6e83", - "STUNOnly": true, - "CanPort80": true - } - ] - }, - "8": { - "RegionID": 8, - "RegionCode": "lhr", - "RegionName": "London", - "Latitude": 51.5072, - "Longitude": 0.1276, - "Nodes": [ - { - "Name": "8f", - "RegionID": 8, - "HostName": "derp8f.tailscale.com", - "IPv4": "176.58.88.183", - "IPv6": "2a00:dd80:3a::dfa", - "CanPort80": true - }, - { - "Name": "8g", - "RegionID": 8, - "HostName": "derp8g.tailscale.com", - "IPv4": "176.58.92.254", - "IPv6": "2a00:dd80:3a::ed", - "CanPort80": true - }, - { - "Name": "8e", - "RegionID": 8, - "HostName": "derp8e.tailscale.com", - "IPv4": "176.58.92.144", - "IPv6": "2a00:dd80:3a::b33", - "CanPort80": true - } - ] - }, - "9": { - "RegionID": 9, - "RegionCode": "dfw", - "RegionName": "Dallas", - "Latitude": 32.779167, - "Longitude": -96.808889, - "Nodes": [ - { - "Name": "9e", - "RegionID": 9, - "HostName": "derp9e.tailscale.com", - "IPv4": "192.73.248.83", - "IPv6": "2607:f740:100::359", - "CanPort80": true - }, - { - "Name": "9f", - "RegionID": 9, - "HostName": "derp9f.tailscale.com", - "IPv4": "209.177.156.197", - "IPv6": "2607:f740:100::cad", - "CanPort80": true - }, - { - "Name": "9d", - "RegionID": 9, - "HostName": "derp9d.tailscale.com", - "IPv4": "209.177.156.94", - "IPv6": "2607:f740:100::c05", - "CanPort80": true - } - ] - } - } - }, - "DisplayMessages": null, - "TKAEnabled": false, - "TKAHead": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", - "Domain": "kratail2tid@passkey", - "DomainAuditLogID": "", - "UserProfiles": { - "1260082990019555": { - "ID": 1260082990019555, - "LoginName": "tagged-devices", - "DisplayName": "Tagged Devices" - }, - "6999435610919250": { - "ID": 6999435610919250, - "LoginName": "group-a-client.tail78f774.ts.net", - "DisplayName": "group-a-client" - } - } + ] } }, "group-b-client": { - "commands": { - "packet_filter_rules": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/group-b-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/group-b-client/tailscaled.sock debug localapi POST debug-packet-filter-matches" - }, "packet_filter_rules": [ { "SrcIPs": [ @@ -5820,469 +665,67 @@ "fd7a:115c:a1e0::ff37:1218" ], "DstPorts": [ - { "IP": "100.77.135.18", "Ports": { "First": 0, "Last": 65535 } }, - { "IP": "fd7a:115c:a1e0::4b37:8712", "Ports": { "First": 0, "Last": 65535 } } + { + "IP": "100.77.135.18", + "Ports": { + "First": 0, + "Last": 65535 + } + }, + { + "IP": "fd7a:115c:a1e0::4b37:8712", + "Ports": { + "First": 0, + "Last": 65535 + } + } ] } ], - "packet_filter_matches": [ - { - "IPProto": [6, 17, 1, 58], - "Srcs": [ - "100.107.162.14/32", - "100.109.43.124/32", - "100.116.18.24/32", - "100.124.195.93/32", - "100.65.172.123/32", - "100.77.135.18/32", - "fd7a:115c:a1e0::4b37:8712/128", - "fd7a:115c:a1e0::5a37:ac7c/128", - "fd7a:115c:a1e0::7837:c35d/128", - "fd7a:115c:a1e0::a237:a20e/128", - "fd7a:115c:a1e0::a537:2b7c/128", - "fd7a:115c:a1e0::ff37:1218/128" - ], - "SrcCaps": null, - "Dsts": [ - { "Net": "100.77.135.18/32", "Ports": { "First": 0, "Last": 65535 } }, - { "Net": "fd7a:115c:a1e0::4b37:8712/128", "Ports": { "First": 0, "Last": 65535 } } - ], - "Caps": [] - } - ], - "whois": { - "100.124.195.93": { - "peer_name": "exit-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/group-b-client/tailscaled.sock whois --json 100.124.195.93", - "response": { - "Node": { - "ID": 3118755726458377, - "StableID": "nvFTscRVMR11CNTRL", - "Name": "exit-a.tail78f774.ts.net.", - "User": 1260082990019555, - "Key": "nodekey:21ab6fa3288e3bf8cecced295316c6327f427649765eb1746cc6ee9978bcc35c", - "DiscoKey": "discokey:0c8595f67987ed47cf551646d6266c21a635d622409d10745cc08f6922066e49", - "Addresses": ["100.124.195.93/32", "fd7a:115c:a1e0::7837:c35d/128"], - "AllowedIPs": ["100.124.195.93/32", "fd7a:115c:a1e0::7837:c35d/128"], - "Endpoints": ["77.164.248.136:37550", "10.65.0.27:37550", "172.17.0.1:37550"], - "HomeDERP": 14, - "Hostinfo": { - "OS": "linux", - "Hostname": "exit-a", - "Services": [ - { "Proto": "peerapi4", "Port": 57826 }, - { "Proto": "peerapi6", "Port": 57826 } - ] - }, - "Created": "2026-03-28T10:37:56.932966573Z", - "Cap": 131, - "Tags": ["tag:exit-a"], - "Online": true, - "ComputedName": "exit-a", - "ComputedNameWithHost": "exit-a" - }, - "UserProfile": { "ID": 1260082990019555, "LoginName": "tagged-devices", "DisplayName": "Tagged Devices" }, - "CapMap": null - } - }, - "100.116.18.24": { - "peer_name": "exit-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/group-b-client/tailscaled.sock whois --json 100.116.18.24", - "response": { - "Node": { - "ID": 2230775583277936, - "StableID": "ndK1N8hKRJ11CNTRL", - "Name": "exit-b.tail78f774.ts.net.", - "User": 1260082990019555, - "Key": "nodekey:265e1377372be0d036773ac41339bf7b53ed18e9f67f196d7d517abeff741217", - "DiscoKey": "discokey:63071b08ff89860a2d98005f8f6f65f3b92e05b7b1338b1be71e4ad866f12728", - "Addresses": ["100.116.18.24/32", "fd7a:115c:a1e0::ff37:1218/128"], - "AllowedIPs": ["100.116.18.24/32", "fd7a:115c:a1e0::ff37:1218/128"], - "Endpoints": ["77.164.248.136:35565", "10.65.0.27:35565", "172.17.0.1:35565"], - "HomeDERP": 14, - "Hostinfo": { - "OS": "linux", - "Hostname": "exit-b", - "Services": [ - { "Proto": "peerapi4", "Port": 61723 }, - { "Proto": "peerapi6", "Port": 61723 } - ] - }, - "Created": "2026-03-28T10:38:00.655990366Z", - "Cap": 131, - "Tags": ["tag:exit-b"], - "Online": true, - "ComputedName": "exit-b", - "ComputedNameWithHost": "exit-b" - }, - "UserProfile": { "ID": 1260082990019555, "LoginName": "tagged-devices", "DisplayName": "Tagged Devices" }, - "CapMap": null - } - }, - "100.85.66.106": { - "peer_name": "exit-node", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/group-b-client/tailscaled.sock whois --json 100.85.66.106", - "response": null - }, - "100.107.162.14": { - "peer_name": "group-a-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/group-b-client/tailscaled.sock whois --json 100.107.162.14", - "response": { - "Node": { - "ID": 6999435610919250, - "StableID": "nyckVfJ4fw11CNTRL", - "Name": "group-a-client.tail78f774.ts.net.", - "User": 1260082990019555, - "Key": "nodekey:802726716bd4942fceb5e444218c930040fadb082698b57ea3eb59a6a26ba20d", - "DiscoKey": "discokey:bc93c2d3b81606e44eb1c96d721e7cd73c9497aa7d3efbe2f5e0d1e2e95b190f", - "Addresses": ["100.107.162.14/32", "fd7a:115c:a1e0::a237:a20e/128"], - "AllowedIPs": ["100.107.162.14/32", "fd7a:115c:a1e0::a237:a20e/128"], - "Endpoints": ["77.164.248.136:51980", "10.65.0.27:51980", "172.17.0.1:51980"], - "HomeDERP": 14, - "Hostinfo": { - "OS": "linux", - "Hostname": "group-a-client", - "Services": [ - { "Proto": "peerapi4", "Port": 36543 }, - { "Proto": "peerapi6", "Port": 36543 } - ] - }, - "Created": "2026-03-28T10:38:04.339428828Z", - "Cap": 131, - "Tags": ["tag:group-a"], - "Online": true, - "ComputedName": "group-a-client", - "ComputedNameWithHost": "group-a-client" - }, - "UserProfile": { "ID": 1260082990019555, "LoginName": "tagged-devices", "DisplayName": "Tagged Devices" }, - "CapMap": null - } - }, - "100.105.127.107": { - "peer_name": "multi-exit-router", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/group-b-client/tailscaled.sock whois --json 100.105.127.107", - "response": null - }, - "100.109.43.124": { - "peer_name": "router-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/group-b-client/tailscaled.sock whois --json 100.109.43.124", - "response": { - "Node": { - "ID": 50590507314324, - "StableID": "n3kktkvuP111CNTRL", - "Name": "router-a.tail78f774.ts.net.", - "User": 1260082990019555, - "Key": "nodekey:b4566fef38b3b2b15684fc8890f5fbaea4525b467825f57a02801969a5ed2b7b", - "DiscoKey": "discokey:368ba711a8394633b4626eb7cd8e6a2df90d8e554505dc032ea9658ceee0f731", - "Addresses": ["100.109.43.124/32", "fd7a:115c:a1e0::a537:2b7c/128"], - "AllowedIPs": ["100.109.43.124/32", "fd7a:115c:a1e0::a537:2b7c/128"], - "Endpoints": ["77.164.248.136:34130", "10.65.0.27:34130", "172.17.0.1:34130"], - "HomeDERP": 14, - "Hostinfo": { - "OS": "linux", - "Hostname": "router-a", - "Services": [ - { "Proto": "peerapi4", "Port": 49439 }, - { "Proto": "peerapi6", "Port": 49439 } - ] - }, - "Created": "2026-03-28T10:38:11.734910312Z", - "Cap": 131, - "Tags": ["tag:router-a"], - "Online": true, - "ComputedName": "router-a", - "ComputedNameWithHost": "router-a" - }, - "UserProfile": { "ID": 1260082990019555, "LoginName": "tagged-devices", "DisplayName": "Tagged Devices" }, - "CapMap": null - } - }, - "100.65.172.123": { - "peer_name": "router-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/group-b-client/tailscaled.sock whois --json 100.65.172.123", - "response": { - "Node": { - "ID": 1399889648409786, - "StableID": "nPHvXBj1wB11CNTRL", - "Name": "router-b.tail78f774.ts.net.", - "User": 1260082990019555, - "Key": "nodekey:4e6d3473c516cea37bcefdf4368932c623fd91c24aee1aacc27ca8165a41ac7a", - "DiscoKey": "discokey:dd5532635b8e3ddf25186e36671c16dd17c005c8b6a6862f4b5cc4e4f459e705", - "Addresses": ["100.65.172.123/32", "fd7a:115c:a1e0::5a37:ac7c/128"], - "AllowedIPs": ["100.65.172.123/32", "fd7a:115c:a1e0::5a37:ac7c/128", "10.55.0.0/16"], - "Endpoints": ["77.164.248.136:35931", "10.65.0.27:35931", "172.17.0.1:35931"], - "HomeDERP": 14, - "Hostinfo": { - "OS": "linux", - "Hostname": "router-b", - "Services": [ - { "Proto": "peerapi4", "Port": 58804 }, - { "Proto": "peerapi6", "Port": 58804 } - ] - }, - "Created": "2026-03-28T10:38:15.42735258Z", - "Cap": 131, - "Tags": ["tag:router-b"], - "PrimaryRoutes": ["10.55.0.0/16"], - "Online": true, - "ComputedName": "router-b", - "ComputedNameWithHost": "router-b" - }, - "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/group-b-client/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/group-b-client/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/group-b-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/group-b-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/group-b-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/group-b-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/group-b-client/tailscaled.sock whois --json 100.90.199.68", - "response": null - } - }, "netmap": { - "SelfNode": { - "ID": 1008089393782498, - "StableID": "ndUwgLoZs811CNTRL", - "Name": "group-b-client.tail78f774.ts.net.", - "User": 1008089393782498, - "Key": "nodekey:ef35a655163204a08b33e09fdc24709f1e3aaa7f40de4efd5549cf014b4d8711", - "DiscoKey": "discokey:e972182cda0d0b459c91b2881624b81749a7e44390a5dde1b9bc17c1ae67715a", - "Addresses": ["100.77.135.18/32", "fd7a:115c:a1e0::4b37:8712/128"], - "AllowedIPs": ["100.77.135.18/32", "fd7a:115c:a1e0::4b37:8712/128"], - "Endpoints": ["77.164.248.136:49377", "10.65.0.27:49377", "172.17.0.1:49377"], - "Hostinfo": { - "Hostname": "group-b-client", - "RequestTags": ["tag:group-b"], - "Services": [ - { "Proto": "peerapi4", "Port": 47173 }, - { "Proto": "peerapi6", "Port": 47173 }, - { "Proto": "peerapi-dns-proxy", "Port": 1 } - ] - }, - "Created": "2026-03-28T10:38:08.031309668Z", - "Tags": ["tag:group-b"], - "MachineAuthorized": true, - "CapMap": { - "https://tailscale.com/cap/file-sharing": null, - "https://tailscale.com/cap/is-owner": null, - "https://tailscale.com/cap/ssh": null, - "https://tailscale.com/cap/tailnet-lock": null, - "probe-udp-lifetime": null, - "ssh-behavior-v1": null, - "ssh-env-vars": null, - "store-appc-routes": null, - "tailnet-display-name": ["kratail2tid@passkey"] - }, - "ComputedName": "group-b-client", - "ComputedNameWithHost": "group-b-client" - }, - "AllCaps": [ - "store-appc-routes", - "tailnet-display-name", - "https://tailscale.com/cap/file-sharing", - "https://tailscale.com/cap/tailnet-lock", - "ssh-env-vars", - "https://tailscale.com/cap/is-owner", - "probe-udp-lifetime", - "ssh-behavior-v1", - "https://tailscale.com/cap/ssh" - ], - "NodeKey": "nodekey:ef35a655163204a08b33e09fdc24709f1e3aaa7f40de4efd5549cf014b4d8711", - "MachineKey": "mkey:f151b3ba7be457f1484c96d8daf48e032d8c9ed890a7f9b2f32c51458a19a05c", "Peers": [ { - "ID": 50590507314324, - "StableID": "n3kktkvuP111CNTRL", "Name": "router-a.tail78f774.ts.net.", - "User": 1260082990019555, - "Key": "nodekey:b4566fef38b3b2b15684fc8890f5fbaea4525b467825f57a02801969a5ed2b7b", - "DiscoKey": "discokey:368ba711a8394633b4626eb7cd8e6a2df90d8e554505dc032ea9658ceee0f731", - "Addresses": ["100.109.43.124/32", "fd7a:115c:a1e0::a537:2b7c/128"], - "AllowedIPs": ["100.109.43.124/32", "fd7a:115c:a1e0::a537:2b7c/128"], - "Endpoints": ["77.164.248.136:34130", "10.65.0.27:34130", "172.17.0.1:34130"], - "HomeDERP": 14, - "Hostinfo": { - "OS": "linux", - "Hostname": "router-a", - "Services": [ - { "Proto": "peerapi4", "Port": 49439 }, - { "Proto": "peerapi6", "Port": 49439 } - ] - }, - "Created": "2026-03-28T10:38:11.734910312Z", - "Cap": 131, - "Tags": ["tag:router-a"], - "Online": true, - "ComputedName": "router-a", - "ComputedNameWithHost": "router-a" - }, - { - "ID": 1399889648409786, - "StableID": "nPHvXBj1wB11CNTRL", - "Name": "router-b.tail78f774.ts.net.", - "User": 1260082990019555, - "Key": "nodekey:4e6d3473c516cea37bcefdf4368932c623fd91c24aee1aacc27ca8165a41ac7a", - "DiscoKey": "discokey:dd5532635b8e3ddf25186e36671c16dd17c005c8b6a6862f4b5cc4e4f459e705", - "Addresses": ["100.65.172.123/32", "fd7a:115c:a1e0::5a37:ac7c/128"], - "AllowedIPs": ["100.65.172.123/32", "fd7a:115c:a1e0::5a37:ac7c/128", "10.55.0.0/16"], - "Endpoints": ["77.164.248.136:35931", "10.65.0.27:35931", "172.17.0.1:35931"], - "HomeDERP": 14, - "Hostinfo": { - "OS": "linux", - "Hostname": "router-b", - "Services": [ - { "Proto": "peerapi4", "Port": 58804 }, - { "Proto": "peerapi6", "Port": 58804 } - ] - }, - "Created": "2026-03-28T10:38:15.42735258Z", - "Cap": 131, - "Tags": ["tag:router-b"], - "PrimaryRoutes": ["10.55.0.0/16"], - "Online": true, - "ComputedName": "router-b", - "ComputedNameWithHost": "router-b" - }, - { - "ID": 2230775583277936, - "StableID": "ndK1N8hKRJ11CNTRL", - "Name": "exit-b.tail78f774.ts.net.", - "User": 1260082990019555, - "Key": "nodekey:265e1377372be0d036773ac41339bf7b53ed18e9f67f196d7d517abeff741217", - "DiscoKey": "discokey:63071b08ff89860a2d98005f8f6f65f3b92e05b7b1338b1be71e4ad866f12728", - "Addresses": ["100.116.18.24/32", "fd7a:115c:a1e0::ff37:1218/128"], - "AllowedIPs": ["100.116.18.24/32", "fd7a:115c:a1e0::ff37:1218/128"], - "Endpoints": ["77.164.248.136:35565", "10.65.0.27:35565", "172.17.0.1:35565"], - "HomeDERP": 14, - "Hostinfo": { - "OS": "linux", - "Hostname": "exit-b", - "Services": [ - { "Proto": "peerapi4", "Port": 61723 }, - { "Proto": "peerapi6", "Port": 61723 } - ] - }, - "Created": "2026-03-28T10:38:00.655990366Z", - "Cap": 131, - "Tags": ["tag:exit-b"], - "Online": true, - "ComputedName": "exit-b", - "ComputedNameWithHost": "exit-b" - }, - { - "ID": 3118755726458377, - "StableID": "nvFTscRVMR11CNTRL", - "Name": "exit-a.tail78f774.ts.net.", - "User": 1260082990019555, - "Key": "nodekey:21ab6fa3288e3bf8cecced295316c6327f427649765eb1746cc6ee9978bcc35c", - "DiscoKey": "discokey:0c8595f67987ed47cf551646d6266c21a635d622409d10745cc08f6922066e49", - "Addresses": ["100.124.195.93/32", "fd7a:115c:a1e0::7837:c35d/128"], - "AllowedIPs": ["100.124.195.93/32", "fd7a:115c:a1e0::7837:c35d/128"], - "Endpoints": ["77.164.248.136:37550", "10.65.0.27:37550", "172.17.0.1:37550"], - "HomeDERP": 14, - "Hostinfo": { - "OS": "linux", - "Hostname": "exit-a", - "Services": [ - { "Proto": "peerapi4", "Port": 57826 }, - { "Proto": "peerapi6", "Port": 57826 } - ] - }, - "Created": "2026-03-28T10:37:56.932966573Z", - "Cap": 131, - "Tags": ["tag:exit-a"], - "Online": true, - "ComputedName": "exit-a", - "ComputedNameWithHost": "exit-a" - }, - { - "ID": 6999435610919250, - "StableID": "nyckVfJ4fw11CNTRL", - "Name": "group-a-client.tail78f774.ts.net.", - "User": 1260082990019555, - "Key": "nodekey:802726716bd4942fceb5e444218c930040fadb082698b57ea3eb59a6a26ba20d", - "DiscoKey": "discokey:bc93c2d3b81606e44eb1c96d721e7cd73c9497aa7d3efbe2f5e0d1e2e95b190f", - "Addresses": ["100.107.162.14/32", "fd7a:115c:a1e0::a237:a20e/128"], - "AllowedIPs": ["100.107.162.14/32", "fd7a:115c:a1e0::a237:a20e/128"], - "Endpoints": ["77.164.248.136:51980", "10.65.0.27:51980", "172.17.0.1:51980"], - "HomeDERP": 14, - "Hostinfo": { - "OS": "linux", - "Hostname": "group-a-client", - "Services": [ - { "Proto": "peerapi4", "Port": 36543 }, - { "Proto": "peerapi6", "Port": 36543 } - ] - }, - "Created": "2026-03-28T10:38:04.339428828Z", - "Cap": 131, - "Tags": ["tag:group-a"], - "Online": true, - "ComputedName": "group-a-client", - "ComputedNameWithHost": "group-a-client" - } - ], - "DNS": { - "Routes": { - "tail78f774.ts.net.": null, - "ts.net.": [{ "Addr": "199.247.155.53" }, { "Addr": "2620:111:8007::53" }] - }, - "Domains": ["tail78f774.ts.net"], - "Proxied": true, - "ExitNodeFilteredSet": [".ts.net", ".tailscale.net"] - }, - "PacketFilter": [ - { - "IPProto": [6, 17, 1, 58], - "Srcs": [ - "100.107.162.14/32", + "AllowedIPs": [ "100.109.43.124/32", - "100.116.18.24/32", - "100.124.195.93/32", + "fd7a:115c:a1e0::a537:2b7c/128" + ], + "PrimaryRoutes": [] + }, + { + "Name": "router-b.tail78f774.ts.net.", + "AllowedIPs": [ "100.65.172.123/32", - "100.77.135.18/32", - "fd7a:115c:a1e0::4b37:8712/128", "fd7a:115c:a1e0::5a37:ac7c/128", - "fd7a:115c:a1e0::7837:c35d/128", - "fd7a:115c:a1e0::a237:a20e/128", - "fd7a:115c:a1e0::a537:2b7c/128", + "10.55.0.0/16" + ], + "PrimaryRoutes": [ + "10.55.0.0/16" + ] + }, + { + "Name": "exit-b.tail78f774.ts.net.", + "AllowedIPs": [ + "100.116.18.24/32", "fd7a:115c:a1e0::ff37:1218/128" ], - "SrcCaps": null, - "Dsts": [ - { "Net": "100.77.135.18/32", "Ports": { "First": 0, "Last": 65535 } }, - { "Net": "fd7a:115c:a1e0::4b37:8712/128", "Ports": { "First": 0, "Last": 65535 } } + "PrimaryRoutes": [] + }, + { + "Name": "exit-a.tail78f774.ts.net.", + "AllowedIPs": [ + "100.124.195.93/32", + "fd7a:115c:a1e0::7837:c35d/128" ], - "Caps": [] + "PrimaryRoutes": [] + }, + { + "Name": "group-a-client.tail78f774.ts.net.", + "AllowedIPs": [ + "100.107.162.14/32", + "fd7a:115c:a1e0::a237:a20e/128" + ], + "PrimaryRoutes": [] } ], "PacketFilterRules": [ @@ -6302,2098 +745,33 @@ "fd7a:115c:a1e0::ff37:1218" ], "DstPorts": [ - { "IP": "100.77.135.18", "Ports": { "First": 0, "Last": 65535 } }, - { "IP": "fd7a:115c:a1e0::4b37:8712", "Ports": { "First": 0, "Last": 65535 } } + { + "IP": "100.77.135.18", + "Ports": { + "First": 0, + "Last": 65535 + } + }, + { + "IP": "fd7a:115c:a1e0::4b37:8712", + "Ports": { + "First": 0, + "Last": 65535 + } + } ] } - ], - "SSHPolicy": { "rules": [] }, - "CollectServices": false, - "DERPMap": { - "Regions": { - "1": { - "RegionID": 1, - "RegionCode": "nyc", - "RegionName": "New York City", - "Latitude": 40.7128, - "Longitude": -74.006, - "Nodes": [ - { - "Name": "1h", - "RegionID": 1, - "HostName": "derp1h.tailscale.com", - "IPv4": "199.38.181.93", - "IPv6": "2607:f740:f::afd", - "CanPort80": true - }, - { - "Name": "1g", - "RegionID": 1, - "HostName": "derp1g.tailscale.com", - "IPv4": "209.177.145.120", - "IPv6": "2607:f740:f::3eb", - "CanPort80": true - }, - { - "Name": "1i", - "RegionID": 1, - "HostName": "derp1i.tailscale.com", - "IPv4": "199.38.181.103", - "IPv6": "2607:f740:f::e19", - "CanPort80": true - }, - { - "Name": "1f", - "RegionID": 1, - "HostName": "derp1f.tailscale.com", - "IPv4": "199.38.181.104", - "IPv6": "2607:f740:f::bc", - "CanPort80": true - } - ] - }, - "10": { - "RegionID": 10, - "RegionCode": "sea", - "RegionName": "Seattle", - "Latitude": 47.609722, - "Longitude": -122.333056, - "Nodes": [ - { - "Name": "10c", - "RegionID": 10, - "HostName": "derp10c.tailscale.com", - "IPv4": "192.73.240.121", - "IPv6": "2607:f740:14::40c", - "CanPort80": true - }, - { - "Name": "10d", - "RegionID": 10, - "HostName": "derp10d.tailscale.com", - "IPv4": "192.73.240.132", - "IPv6": "2607:f740:14::500", - "CanPort80": true - }, - { - "Name": "10b", - "RegionID": 10, - "HostName": "derp10b.tailscale.com", - "IPv4": "192.73.240.161", - "IPv6": "2607:f740:14::61c", - "CanPort80": true - } - ] - }, - "11": { - "RegionID": 11, - "RegionCode": "sao", - "RegionName": "São Paulo", - "Latitude": -23.55, - "Longitude": -46.633333, - "Nodes": [ - { - "Name": "11f", - "RegionID": 11, - "HostName": "derp11f.tailscale.com", - "IPv4": "172.237.61.197", - "IPv6": "2600:3c0d::2000:3bff:fe44:6166", - "CanPort80": true - }, - { - "Name": "11g", - "RegionID": 11, - "HostName": "derp11g.tailscale.com", - "IPv4": "172.237.61.190", - "IPv6": "2600:3c0d::2000:62ff:febe:2e67", - "CanPort80": true - }, - { - "Name": "11e", - "RegionID": 11, - "HostName": "derp11e.tailscale.com", - "IPv4": "172.237.61.194", - "IPv6": "2600:3c0d::2000:d2ff:fe43:1790", - "CanPort80": true - } - ] - }, - "12": { - "RegionID": 12, - "RegionCode": "ord", - "RegionName": "Chicago", - "Latitude": 41.881944, - "Longitude": -87.627778, - "Nodes": [ - { - "Name": "12e", - "RegionID": 12, - "HostName": "derp12e.tailscale.com", - "IPv4": "209.177.158.15", - "IPv6": "2607:f740:e::b17", - "CanPort80": true - }, - { - "Name": "12f", - "RegionID": 12, - "HostName": "derp12f.tailscale.com", - "IPv4": "199.38.182.118", - "IPv6": "2607:f740:e::4c8", - "CanPort80": true - }, - { - "Name": "12d", - "RegionID": 12, - "HostName": "derp12d.tailscale.com", - "IPv4": "209.177.158.246", - "IPv6": "2607:f740:e::811", - "CanPort80": true - } - ] - }, - "13": { - "RegionID": 13, - "RegionCode": "den", - "RegionName": "Denver", - "Latitude": 39.7392, - "Longitude": -104.9849, - "Nodes": [ - { - "Name": "13c", - "RegionID": 13, - "HostName": "derp13c.tailscale.com", - "IPv4": "192.73.242.28", - "IPv6": "2607:f740:16::5c", - "CanPort80": true - }, - { - "Name": "13d", - "RegionID": 13, - "HostName": "derp13d.tailscale.com", - "IPv4": "192.73.242.204", - "IPv6": "2607:f740:16::c23", - "CanPort80": true - }, - { - "Name": "13b", - "RegionID": 13, - "HostName": "derp13b.tailscale.com", - "IPv4": "192.73.242.187", - "IPv6": "2607:f740:16::640", - "CanPort80": true - } - ] - }, - "14": { - "RegionID": 14, - "RegionCode": "ams", - "RegionName": "Amsterdam", - "Latitude": 52.372778, - "Longitude": 4.893611, - "Nodes": [ - { - "Name": "14c", - "RegionID": 14, - "HostName": "derp14c.tailscale.com", - "IPv4": "176.58.93.147", - "IPv6": "2a00:dd80:3c::b09", - "CanPort80": true - }, - { - "Name": "14d", - "RegionID": 14, - "HostName": "derp14d.tailscale.com", - "IPv4": "176.58.93.154", - "IPv6": "2a00:dd80:3c::3d5", - "CanPort80": true - }, - { - "Name": "14b", - "RegionID": 14, - "HostName": "derp14b.tailscale.com", - "IPv4": "176.58.93.248", - "IPv6": "2a00:dd80:3c::807", - "CanPort80": true - } - ] - }, - "15": { - "RegionID": 15, - "RegionCode": "jnb", - "RegionName": "Johannesburg", - "Latitude": -26.204444, - "Longitude": 28.045556, - "Nodes": [ - { - "Name": "15c", - "RegionID": 15, - "HostName": "derp15c.tailscale.com", - "IPv4": "102.67.165.185", - "IPv6": "2c0f:edb0:0:10::b59", - "CanPort80": true - }, - { - "Name": "15d", - "RegionID": 15, - "HostName": "derp15d.tailscale.com", - "IPv4": "102.67.165.36", - "IPv6": "2c0f:edb0:0:10::599", - "CanPort80": true - }, - { - "Name": "15b", - "RegionID": 15, - "HostName": "derp15b.tailscale.com", - "IPv4": "102.67.165.90", - "IPv6": "2c0f:edb0:0:10::963", - "CanPort80": true - } - ] - }, - "16": { - "RegionID": 16, - "RegionCode": "mia", - "RegionName": "Miami", - "Latitude": 25.78, - "Longitude": -80.21, - "Nodes": [ - { - "Name": "16c", - "RegionID": 16, - "HostName": "derp16c.tailscale.com", - "IPv4": "192.73.243.229", - "IPv6": "2607:f740:17::4e4", - "CanPort80": true - }, - { - "Name": "16d", - "RegionID": 16, - "HostName": "derp16d.tailscale.com", - "IPv4": "192.73.243.141", - "IPv6": "2607:f740:17::475", - "CanPort80": true - }, - { - "Name": "16b", - "RegionID": 16, - "HostName": "derp16b.tailscale.com", - "IPv4": "192.73.243.135", - "IPv6": "2607:f740:17::476", - "CanPort80": true - } - ] - }, - "17": { - "RegionID": 17, - "RegionCode": "lax", - "RegionName": "Los Angeles", - "Latitude": 34.05, - "Longitude": -118.25, - "Nodes": [ - { - "Name": "17c", - "RegionID": 17, - "HostName": "derp17c.tailscale.com", - "IPv4": "208.111.40.12", - "IPv6": "2607:f740:c::10", - "CanPort80": true - }, - { - "Name": "17d", - "RegionID": 17, - "HostName": "derp17d.tailscale.com", - "IPv4": "208.111.40.216", - "IPv6": "2607:f740:c::e1b", - "CanPort80": true - }, - { - "Name": "17b", - "RegionID": 17, - "HostName": "derp17b.tailscale.com", - "IPv4": "192.73.244.245", - "IPv6": "2607:f740:c::646", - "CanPort80": true - } - ] - }, - "18": { - "RegionID": 18, - "RegionCode": "par", - "RegionName": "Paris", - "Latitude": 48.856667, - "Longitude": 2.352222, - "Nodes": [ - { - "Name": "18c", - "RegionID": 18, - "HostName": "derp18c.tailscale.com", - "IPv4": "176.58.90.207", - "IPv6": "2a00:dd80:3e::c19", - "CanPort80": true - }, - { - "Name": "18d", - "RegionID": 18, - "HostName": "derp18d.tailscale.com", - "IPv4": "176.58.90.104", - "IPv6": "2a00:dd80:3e::f2e", - "CanPort80": true - }, - { - "Name": "18b", - "RegionID": 18, - "HostName": "derp18b.tailscale.com", - "IPv4": "176.58.90.147", - "IPv6": "2a00:dd80:3e::363", - "CanPort80": true - } - ] - }, - "19": { - "RegionID": 19, - "RegionCode": "mad", - "RegionName": "Madrid", - "Latitude": 40.416944, - "Longitude": -3.703333, - "Nodes": [ - { - "Name": "19c", - "RegionID": 19, - "HostName": "derp19c.tailscale.com", - "IPv4": "45.159.97.61", - "IPv6": "2a00:dd80:14:10::20", - "CanPort80": true - }, - { - "Name": "19d", - "RegionID": 19, - "HostName": "derp19d.tailscale.com", - "IPv4": "45.159.97.233", - "IPv6": "2a00:dd80:14:10::34a", - "CanPort80": true - }, - { - "Name": "19b", - "RegionID": 19, - "HostName": "derp19b.tailscale.com", - "IPv4": "45.159.97.144", - "IPv6": "2a00:dd80:14:10::335", - "CanPort80": true - } - ] - }, - "2": { - "RegionID": 2, - "RegionCode": "sfo", - "RegionName": "San Francisco", - "Latitude": 37.7775, - "Longitude": -122.416389, - "Nodes": [ - { - "Name": "2e", - "RegionID": 2, - "HostName": "derp2e.tailscale.com", - "IPv4": "192.73.252.134", - "IPv6": "2607:f740:0:3f::44c", - "CanPort80": true - }, - { - "Name": "2f", - "RegionID": 2, - "HostName": "derp2f.tailscale.com", - "IPv4": "208.111.34.178", - "IPv6": "2607:f740:0:3f::f4", - "CanPort80": true - }, - { - "Name": "2d", - "RegionID": 2, - "HostName": "derp2d.tailscale.com", - "IPv4": "192.73.252.65", - "IPv6": "2607:f740:0:3f::287", - "CanPort80": true - } - ] - }, - "20": { - "RegionID": 20, - "RegionCode": "hkg", - "RegionName": "Hong Kong", - "Latitude": 22.3193, - "Longitude": 114.1694, - "Nodes": [ - { - "Name": "20c", - "RegionID": 20, - "HostName": "derp20c.tailscale.com", - "IPv4": "205.147.105.30", - "IPv6": "2403:2500:8000:1::5fb", - "CanPort80": true - }, - { - "Name": "20d", - "RegionID": 20, - "HostName": "derp20d.tailscale.com", - "IPv4": "205.147.105.78", - "IPv6": "2403:2500:8000:1::e9a", - "CanPort80": true - }, - { - "Name": "20b", - "RegionID": 20, - "HostName": "derp20b.tailscale.com", - "IPv4": "103.6.84.152", - "IPv6": "2403:2500:8000:1::ef6", - "CanPort80": true - } - ] - }, - "21": { - "RegionID": 21, - "RegionCode": "tor", - "RegionName": "Toronto", - "Latitude": 43.741667, - "Longitude": -79.373333, - "Nodes": [ - { - "Name": "21c", - "RegionID": 21, - "HostName": "derp21c.tailscale.com", - "IPv4": "162.248.221.215", - "IPv6": "2607:f740:50::f10", - "CanPort80": true - }, - { - "Name": "21d", - "RegionID": 21, - "HostName": "derp21d.tailscale.com", - "IPv4": "162.248.221.248", - "IPv6": "2607:f740:50::ca4", - "CanPort80": true - }, - { - "Name": "21b", - "RegionID": 21, - "HostName": "derp21b.tailscale.com", - "IPv4": "162.248.221.199", - "IPv6": "2607:f740:50::1d1", - "CanPort80": true - } - ] - }, - "22": { - "RegionID": 22, - "RegionCode": "waw", - "RegionName": "Warsaw", - "Latitude": 52.23, - "Longitude": 21.011111, - "Nodes": [ - { - "Name": "22c", - "RegionID": 22, - "HostName": "derp22c.tailscale.com", - "IPv4": "45.159.98.253", - "IPv6": "2a00:dd80:40:100::3f", - "CanPort80": true - }, - { - "Name": "22d", - "RegionID": 22, - "HostName": "derp22d.tailscale.com", - "IPv4": "45.159.98.145", - "IPv6": "2a00:dd80:40:100::211", - "CanPort80": true - }, - { - "Name": "22b", - "RegionID": 22, - "HostName": "derp22b.tailscale.com", - "IPv4": "45.159.98.196", - "IPv6": "2a00:dd80:40:100::316", - "CanPort80": true - } - ] - }, - "23": { - "RegionID": 23, - "RegionCode": "dbi", - "RegionName": "Dubai", - "Latitude": 25.263056, - "Longitude": 55.297222, - "Nodes": [ - { - "Name": "23c", - "RegionID": 23, - "HostName": "derp23c.tailscale.com", - "IPv4": "185.34.3.207", - "IPv6": "2a00:dd80:3f:100::a50", - "CanPort80": true - }, - { - "Name": "23d", - "RegionID": 23, - "HostName": "derp23d.tailscale.com", - "IPv4": "185.34.3.75", - "IPv6": "2a00:dd80:3f:100::97e", - "CanPort80": true - }, - { - "Name": "23b", - "RegionID": 23, - "HostName": "derp23b.tailscale.com", - "IPv4": "185.34.3.232", - "IPv6": "2a00:dd80:3f:100::76f", - "CanPort80": true - } - ] - }, - "24": { - "RegionID": 24, - "RegionCode": "hnl", - "RegionName": "Honolulu", - "Latitude": 21.306944, - "Longitude": -157.858333, - "Nodes": [ - { - "Name": "24c", - "RegionID": 24, - "HostName": "derp24c.tailscale.com", - "IPv4": "208.83.233.233", - "IPv6": "2001:19f0:c000:c591:5400:04ff:fe26:2c5f", - "CanPort80": true - }, - { - "Name": "24d", - "RegionID": 24, - "HostName": "derp24d.tailscale.com", - "IPv4": "208.72.155.133", - "IPv6": "2001:19f0:c000:c564:5400:04ff:fe26:2ba8", - "CanPort80": true - }, - { - "Name": "24b", - "RegionID": 24, - "HostName": "derp24b.tailscale.com", - "IPv4": "208.83.234.151", - "IPv6": "2001:19f0:c000:c586:5400:04ff:fe26:2ba6", - "CanPort80": true - } - ] - }, - "25": { - "RegionID": 25, - "RegionCode": "nai", - "RegionName": "Nairobi", - "Latitude": -1.286389, - "Longitude": 36.817222, - "Nodes": [ - { - "Name": "25c", - "RegionID": 25, - "HostName": "derp25c.tailscale.com", - "IPv4": "102.67.167.37", - "IPv6": "2c0f:edb0:2000:1::2c7", - "CanPort80": true - }, - { - "Name": "25d", - "RegionID": 25, - "HostName": "derp25d.tailscale.com", - "IPv4": "102.67.167.188", - "IPv6": "2c0f:edb0:2000:1::188", - "CanPort80": true - }, - { - "Name": "25b", - "RegionID": 25, - "HostName": "derp25b.tailscale.com", - "IPv4": "102.67.167.245", - "IPv6": "2c0f:edb0:2000:1::2e9", - "CanPort80": true - } - ] - }, - "26": { - "RegionID": 26, - "RegionCode": "nue", - "RegionName": "Nuremberg", - "Latitude": 49.453889, - "Longitude": 11.0775, - "Nodes": [ - { - "Name": "26c", - "RegionID": 26, - "HostName": "derp26c.tailscale.com", - "IPv4": "49.12.193.137", - "IPv6": "2a01:4f8:1c1c:5c70::1", - "CanPort80": true - }, - { - "Name": "26d", - "RegionID": 26, - "HostName": "derp26d.tailscale.com", - "IPv4": "49.13.204.141", - "IPv6": "2a01:4f8:1c0c:7d06::1", - "CanPort80": true - }, - { - "Name": "26b", - "RegionID": 26, - "HostName": "derp26b.tailscale.com", - "IPv4": "167.235.72.200", - "IPv6": "2a01:4f8:1c1c:47b6::1", - "CanPort80": true - } - ] - }, - "27": { - "RegionID": 27, - "RegionCode": "iad", - "RegionName": "Ashburn", - "Latitude": 39.03, - "Longitude": -77.471111, - "Nodes": [ - { - "Name": "27d", - "RegionID": 27, - "HostName": "derp27d.tailscale.com", - "IPv4": "178.156.152.106", - "IPv6": "2a01:4ff:f0:3c8e::1", - "CanPort80": true - }, - { - "Name": "27c", - "RegionID": 27, - "HostName": "derp27c.tailscale.com", - "IPv4": "178.156.152.91", - "IPv6": "2a01:4ff:f0:3913::1", - "CanPort80": true - }, - { - "Name": "27e", - "RegionID": 27, - "HostName": "derp27e.tailscale.com", - "IPv4": "178.156.134.232", - "IPv6": "2a01:4ff:f0:28d4::1", - "CanPort80": true - }, - { - "Name": "27b", - "RegionID": 27, - "HostName": "derp27b.tailscale.com", - "IPv4": "5.161.218.233", - "IPv6": "2a01:4ff:f0:3db9::1", - "CanPort80": true - } - ] - }, - "28": { - "RegionID": 28, - "RegionCode": "hel", - "RegionName": "Helsinki", - "Latitude": 60.170833, - "Longitude": 24.9375, - "Nodes": [ - { - "Name": "28c", - "RegionID": 28, - "HostName": "derp28c.tailscale.com", - "IPv4": "95.217.2.165", - "IPv6": "2a01:4f9:c012:cd74::1", - "CanPort80": true - }, - { - "Name": "28d", - "RegionID": 28, - "HostName": "derp28d.tailscale.com", - "IPv4": "157.180.28.32", - "IPv6": "2a01:4f9:c012:2e5b::1", - "CanPort80": true - }, - { - "Name": "28b", - "RegionID": 28, - "HostName": "derp28b.tailscale.com", - "IPv4": "65.109.143.62", - "IPv6": "2a01:4f9:c012:d55c::1", - "CanPort80": true - } - ] - }, - "3": { - "RegionID": 3, - "RegionCode": "sin", - "RegionName": "Singapore", - "Latitude": 1.3521, - "Longitude": 103.8198, - "Nodes": [ - { - "Name": "3g", - "RegionID": 3, - "HostName": "derp3g.tailscale.com", - "IPv4": "172.237.72.79", - "IPv6": "2600:3c15::2000:adff:fe08:6fab", - "CanPort80": true - }, - { - "Name": "3f", - "RegionID": 3, - "HostName": "derp3f.tailscale.com", - "IPv4": "172.237.72.8", - "IPv6": "2600:3c15::2000:53ff:fe48:a668", - "CanPort80": true - }, - { - "Name": "3h", - "RegionID": 3, - "HostName": "derp3h.tailscale.com", - "IPv4": "172.237.66.30", - "IPv6": "2600:3c15::2000:3dff:fe44:50aa", - "CanPort80": true - }, - { - "Name": "3e", - "RegionID": 3, - "HostName": "derp3e.tailscale.com", - "IPv4": "172.237.72.43", - "IPv6": "2600:3c15::2000:6cff:fee4:d799", - "CanPort80": true - } - ] - }, - "4": { - "RegionID": 4, - "RegionCode": "fra", - "RegionName": "Frankfurt", - "Latitude": 50.1109, - "Longitude": 8.6821, - "Nodes": [ - { - "Name": "4h", - "RegionID": 4, - "HostName": "derp4h.tailscale.com", - "IPv4": "185.40.234.77", - "IPv6": "2a00:dd80:20::bcf", - "CanPort80": true - }, - { - "Name": "4g", - "RegionID": 4, - "HostName": "derp4g.tailscale.com", - "IPv4": "185.40.234.113", - "IPv6": "2a00:dd80:20::8f", - "CanPort80": true - }, - { - "Name": "4i", - "RegionID": 4, - "HostName": "derp4i.tailscale.com", - "IPv4": "185.40.234.53", - "IPv6": "2a00:dd80:20::8a6", - "CanPort80": true - }, - { - "Name": "4f", - "RegionID": 4, - "HostName": "derp4f.tailscale.com", - "IPv4": "185.40.234.219", - "IPv6": "2a00:dd80:20::a25", - "CanPort80": true - } - ] - }, - "5": { - "RegionID": 5, - "RegionCode": "syd", - "RegionName": "Sydney", - "Latitude": -33.867778, - "Longitude": 151.21, - "Nodes": [ - { - "Name": "5f", - "RegionID": 5, - "HostName": "derp5f.tailscale.com", - "IPv4": "172.105.166.103", - "IPv6": "2400:8907::2000:ccff:fe1f:80da", - "CanPort80": true - }, - { - "Name": "5g", - "RegionID": 5, - "HostName": "derp5g.tailscale.com", - "IPv4": "172.105.169.57", - "IPv6": "2400:8907::2000:2fff:fea7:57f4", - "CanPort80": true - }, - { - "Name": "5e", - "RegionID": 5, - "HostName": "derp5e.tailscale.com", - "IPv4": "172.105.179.230", - "IPv6": "2400:8907::2000:ceff:fe8d:4f4e", - "CanPort80": true - } - ] - }, - "6": { - "RegionID": 6, - "RegionCode": "blr", - "RegionName": "Bengaluru", - "Latitude": 12.9716, - "Longitude": 77.5946, - "Nodes": [ - { - "Name": "6a", - "RegionID": 6, - "HostName": "derp6.tailscale.com", - "IPv4": "68.183.90.120", - "IPv6": "2400:6180:100:d0::982:d001", - "CanPort80": true - } - ] - }, - "7": { - "RegionID": 7, - "RegionCode": "tok", - "RegionName": "Tokyo", - "Latitude": 35.6764, - "Longitude": 139.65, - "Nodes": [ - { - "Name": "7g", - "RegionID": 7, - "HostName": "derp7g.tailscale.com", - "IPv4": "172.238.6.179", - "IPv6": "2600:3c18::2000:3fff:fe80:3ebd", - "CanPort80": true - }, - { - "Name": "7f", - "RegionID": 7, - "HostName": "derp7f.tailscale.com", - "IPv4": "172.238.6.34", - "IPv6": "2600:3c18::2000:acff:fe8e:3ed5", - "CanPort80": true - }, - { - "Name": "7h", - "RegionID": 7, - "HostName": "derp7h.tailscale.com", - "IPv4": "172.237.28.183", - "IPv6": "2600:3c18::2000:b1ff:fea9:4560", - "CanPort80": true - }, - { - "Name": "7e", - "RegionID": 7, - "HostName": "derp7e.tailscale.com", - "IPv4": "172.238.6.180", - "IPv6": "2600:3c18::2000:60ff:fe0f:6e83", - "STUNOnly": true, - "CanPort80": true - } - ] - }, - "8": { - "RegionID": 8, - "RegionCode": "lhr", - "RegionName": "London", - "Latitude": 51.5072, - "Longitude": 0.1276, - "Nodes": [ - { - "Name": "8f", - "RegionID": 8, - "HostName": "derp8f.tailscale.com", - "IPv4": "176.58.88.183", - "IPv6": "2a00:dd80:3a::dfa", - "CanPort80": true - }, - { - "Name": "8g", - "RegionID": 8, - "HostName": "derp8g.tailscale.com", - "IPv4": "176.58.92.254", - "IPv6": "2a00:dd80:3a::ed", - "CanPort80": true - }, - { - "Name": "8e", - "RegionID": 8, - "HostName": "derp8e.tailscale.com", - "IPv4": "176.58.92.144", - "IPv6": "2a00:dd80:3a::b33", - "CanPort80": true - } - ] - }, - "9": { - "RegionID": 9, - "RegionCode": "dfw", - "RegionName": "Dallas", - "Latitude": 32.779167, - "Longitude": -96.808889, - "Nodes": [ - { - "Name": "9e", - "RegionID": 9, - "HostName": "derp9e.tailscale.com", - "IPv4": "192.73.248.83", - "IPv6": "2607:f740:100::359", - "CanPort80": true - }, - { - "Name": "9f", - "RegionID": 9, - "HostName": "derp9f.tailscale.com", - "IPv4": "209.177.156.197", - "IPv6": "2607:f740:100::cad", - "CanPort80": true - }, - { - "Name": "9d", - "RegionID": 9, - "HostName": "derp9d.tailscale.com", - "IPv4": "209.177.156.94", - "IPv6": "2607:f740:100::c05", - "CanPort80": true - } - ] - } - } - }, - "DisplayMessages": null, - "TKAEnabled": false, - "TKAHead": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", - "Domain": "kratail2tid@passkey", - "DomainAuditLogID": "", - "UserProfiles": { - "1008089393782498": { - "ID": 1008089393782498, - "LoginName": "group-b-client.tail78f774.ts.net", - "DisplayName": "group-b-client" - }, - "1260082990019555": { "ID": 1260082990019555, "LoginName": "tagged-devices", "DisplayName": "Tagged Devices" } - } + ] } }, "multi-exit-router": { - "commands": { - "packet_filter_rules": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/multi-exit-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/multi-exit-router/tailscaled.sock debug localapi POST debug-packet-filter-matches" - }, "packet_filter_rules": null, - "packet_filter_matches": [], - "whois": { - "100.124.195.93": { - "peer_name": "exit-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/multi-exit-router/tailscaled.sock whois --json 100.124.195.93", - "response": null - }, - "100.116.18.24": { - "peer_name": "exit-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/multi-exit-router/tailscaled.sock whois --json 100.116.18.24", - "response": null - }, - "100.85.66.106": { - "peer_name": "exit-node", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/multi-exit-router/tailscaled.sock whois --json 100.85.66.106", - "response": null - }, - "100.107.162.14": { - "peer_name": "group-a-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/multi-exit-router/tailscaled.sock whois --json 100.107.162.14", - "response": null - }, - "100.77.135.18": { - "peer_name": "group-b-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/multi-exit-router/tailscaled.sock whois --json 100.77.135.18", - "response": null - }, - "100.109.43.124": { - "peer_name": "router-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/multi-exit-router/tailscaled.sock whois --json 100.109.43.124", - "response": null - }, - "100.65.172.123": { - "peer_name": "router-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/multi-exit-router/tailscaled.sock whois --json 100.65.172.123", - "response": null - }, - "100.92.142.61": { - "peer_name": "subnet-router", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/multi-exit-router/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/multi-exit-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/multi-exit-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/multi-exit-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/multi-exit-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/multi-exit-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/multi-exit-router/tailscaled.sock whois --json 100.90.199.68", - "response": null - } - }, "netmap": { - "SelfNode": { - "ID": 6294409699640722, - "StableID": "nMQuxDUk9r11CNTRL", - "Name": "multi-exit-router.tail78f774.ts.net.", - "User": 6294409699640722, - "Key": "nodekey:b854a0d64eba757cd3215c5bd78149cc0f927e35a2ad20342e88a15ead297f6a", - "DiscoKey": "discokey:762c82dd308809f511c6ac86dcc2642585837358fdd24958d55f16883c8e6c58", - "Addresses": ["100.105.127.107/32", "fd7a:115c:a1e0::ad37:7f6b/128"], - "AllowedIPs": ["100.105.127.107/32", "fd7a:115c:a1e0::ad37:7f6b/128", "10.33.0.0/16"], - "Endpoints": ["77.164.248.136:50766", "10.65.0.27:50766", "172.17.0.1:50766"], - "Hostinfo": { - "Hostname": "multi-exit-router", - "RoutableIPs": ["0.0.0.0/0", "::/0", "10.33.0.0/16"], - "RequestTags": ["tag:exit", "tag:router"], - "Services": [ - { "Proto": "peerapi4", "Port": 62548 }, - { "Proto": "peerapi6", "Port": 62548 }, - { "Proto": "peerapi-dns-proxy", "Port": 1 } - ] - }, - "Created": "2026-03-28T10:38:19.117098852Z", - "Tags": ["tag:exit", "tag:router"], - "PrimaryRoutes": ["10.33.0.0/16"], - "MachineAuthorized": true, - "CapMap": { - "https://tailscale.com/cap/file-sharing": null, - "https://tailscale.com/cap/is-owner": null, - "https://tailscale.com/cap/ssh": null, - "https://tailscale.com/cap/tailnet-lock": null, - "probe-udp-lifetime": null, - "ssh-behavior-v1": null, - "ssh-env-vars": null, - "store-appc-routes": null, - "tailnet-display-name": ["kratail2tid@passkey"] - }, - "ComputedName": "multi-exit-router", - "ComputedNameWithHost": "multi-exit-router" - }, - "AllCaps": [ - "ssh-behavior-v1", - "tailnet-display-name", - "https://tailscale.com/cap/file-sharing", - "https://tailscale.com/cap/is-owner", - "https://tailscale.com/cap/tailnet-lock", - "https://tailscale.com/cap/ssh", - "store-appc-routes", - "ssh-env-vars", - "probe-udp-lifetime" - ], - "NodeKey": "nodekey:b854a0d64eba757cd3215c5bd78149cc0f927e35a2ad20342e88a15ead297f6a", - "MachineKey": "mkey:91bee804809f30d07bfc29cf556844288fc3d45e0572469a3cb0799a535fda7d", "Peers": [], - "DNS": { - "Routes": { - "tail78f774.ts.net.": null, - "ts.net.": [{ "Addr": "199.247.155.53" }, { "Addr": "2620:111:8007::53" }] - }, - "Domains": ["tail78f774.ts.net"], - "Proxied": true, - "ExitNodeFilteredSet": [".ts.net", ".tailscale.net"] - }, - "PacketFilter": [], - "PacketFilterRules": null, - "SSHPolicy": { "rules": [] }, - "CollectServices": false, - "DERPMap": { - "Regions": { - "1": { - "RegionID": 1, - "RegionCode": "nyc", - "RegionName": "New York City", - "Latitude": 40.7128, - "Longitude": -74.006, - "Nodes": [ - { - "Name": "1h", - "RegionID": 1, - "HostName": "derp1h.tailscale.com", - "IPv4": "199.38.181.93", - "IPv6": "2607:f740:f::afd", - "CanPort80": true - }, - { - "Name": "1g", - "RegionID": 1, - "HostName": "derp1g.tailscale.com", - "IPv4": "209.177.145.120", - "IPv6": "2607:f740:f::3eb", - "CanPort80": true - }, - { - "Name": "1i", - "RegionID": 1, - "HostName": "derp1i.tailscale.com", - "IPv4": "199.38.181.103", - "IPv6": "2607:f740:f::e19", - "CanPort80": true - }, - { - "Name": "1f", - "RegionID": 1, - "HostName": "derp1f.tailscale.com", - "IPv4": "199.38.181.104", - "IPv6": "2607:f740:f::bc", - "CanPort80": true - } - ] - }, - "10": { - "RegionID": 10, - "RegionCode": "sea", - "RegionName": "Seattle", - "Latitude": 47.609722, - "Longitude": -122.333056, - "Nodes": [ - { - "Name": "10c", - "RegionID": 10, - "HostName": "derp10c.tailscale.com", - "IPv4": "192.73.240.121", - "IPv6": "2607:f740:14::40c", - "CanPort80": true - }, - { - "Name": "10d", - "RegionID": 10, - "HostName": "derp10d.tailscale.com", - "IPv4": "192.73.240.132", - "IPv6": "2607:f740:14::500", - "CanPort80": true - }, - { - "Name": "10b", - "RegionID": 10, - "HostName": "derp10b.tailscale.com", - "IPv4": "192.73.240.161", - "IPv6": "2607:f740:14::61c", - "CanPort80": true - } - ] - }, - "11": { - "RegionID": 11, - "RegionCode": "sao", - "RegionName": "São Paulo", - "Latitude": -23.55, - "Longitude": -46.633333, - "Nodes": [ - { - "Name": "11f", - "RegionID": 11, - "HostName": "derp11f.tailscale.com", - "IPv4": "172.237.61.197", - "IPv6": "2600:3c0d::2000:3bff:fe44:6166", - "CanPort80": true - }, - { - "Name": "11g", - "RegionID": 11, - "HostName": "derp11g.tailscale.com", - "IPv4": "172.237.61.190", - "IPv6": "2600:3c0d::2000:62ff:febe:2e67", - "CanPort80": true - }, - { - "Name": "11e", - "RegionID": 11, - "HostName": "derp11e.tailscale.com", - "IPv4": "172.237.61.194", - "IPv6": "2600:3c0d::2000:d2ff:fe43:1790", - "CanPort80": true - } - ] - }, - "12": { - "RegionID": 12, - "RegionCode": "ord", - "RegionName": "Chicago", - "Latitude": 41.881944, - "Longitude": -87.627778, - "Nodes": [ - { - "Name": "12e", - "RegionID": 12, - "HostName": "derp12e.tailscale.com", - "IPv4": "209.177.158.15", - "IPv6": "2607:f740:e::b17", - "CanPort80": true - }, - { - "Name": "12f", - "RegionID": 12, - "HostName": "derp12f.tailscale.com", - "IPv4": "199.38.182.118", - "IPv6": "2607:f740:e::4c8", - "CanPort80": true - }, - { - "Name": "12d", - "RegionID": 12, - "HostName": "derp12d.tailscale.com", - "IPv4": "209.177.158.246", - "IPv6": "2607:f740:e::811", - "CanPort80": true - } - ] - }, - "13": { - "RegionID": 13, - "RegionCode": "den", - "RegionName": "Denver", - "Latitude": 39.7392, - "Longitude": -104.9849, - "Nodes": [ - { - "Name": "13c", - "RegionID": 13, - "HostName": "derp13c.tailscale.com", - "IPv4": "192.73.242.28", - "IPv6": "2607:f740:16::5c", - "CanPort80": true - }, - { - "Name": "13d", - "RegionID": 13, - "HostName": "derp13d.tailscale.com", - "IPv4": "192.73.242.204", - "IPv6": "2607:f740:16::c23", - "CanPort80": true - }, - { - "Name": "13b", - "RegionID": 13, - "HostName": "derp13b.tailscale.com", - "IPv4": "192.73.242.187", - "IPv6": "2607:f740:16::640", - "CanPort80": true - } - ] - }, - "14": { - "RegionID": 14, - "RegionCode": "ams", - "RegionName": "Amsterdam", - "Latitude": 52.372778, - "Longitude": 4.893611, - "Nodes": [ - { - "Name": "14c", - "RegionID": 14, - "HostName": "derp14c.tailscale.com", - "IPv4": "176.58.93.147", - "IPv6": "2a00:dd80:3c::b09", - "CanPort80": true - }, - { - "Name": "14d", - "RegionID": 14, - "HostName": "derp14d.tailscale.com", - "IPv4": "176.58.93.154", - "IPv6": "2a00:dd80:3c::3d5", - "CanPort80": true - }, - { - "Name": "14b", - "RegionID": 14, - "HostName": "derp14b.tailscale.com", - "IPv4": "176.58.93.248", - "IPv6": "2a00:dd80:3c::807", - "CanPort80": true - } - ] - }, - "15": { - "RegionID": 15, - "RegionCode": "jnb", - "RegionName": "Johannesburg", - "Latitude": -26.204444, - "Longitude": 28.045556, - "Nodes": [ - { - "Name": "15c", - "RegionID": 15, - "HostName": "derp15c.tailscale.com", - "IPv4": "102.67.165.185", - "IPv6": "2c0f:edb0:0:10::b59", - "CanPort80": true - }, - { - "Name": "15d", - "RegionID": 15, - "HostName": "derp15d.tailscale.com", - "IPv4": "102.67.165.36", - "IPv6": "2c0f:edb0:0:10::599", - "CanPort80": true - }, - { - "Name": "15b", - "RegionID": 15, - "HostName": "derp15b.tailscale.com", - "IPv4": "102.67.165.90", - "IPv6": "2c0f:edb0:0:10::963", - "CanPort80": true - } - ] - }, - "16": { - "RegionID": 16, - "RegionCode": "mia", - "RegionName": "Miami", - "Latitude": 25.78, - "Longitude": -80.21, - "Nodes": [ - { - "Name": "16c", - "RegionID": 16, - "HostName": "derp16c.tailscale.com", - "IPv4": "192.73.243.229", - "IPv6": "2607:f740:17::4e4", - "CanPort80": true - }, - { - "Name": "16d", - "RegionID": 16, - "HostName": "derp16d.tailscale.com", - "IPv4": "192.73.243.141", - "IPv6": "2607:f740:17::475", - "CanPort80": true - }, - { - "Name": "16b", - "RegionID": 16, - "HostName": "derp16b.tailscale.com", - "IPv4": "192.73.243.135", - "IPv6": "2607:f740:17::476", - "CanPort80": true - } - ] - }, - "17": { - "RegionID": 17, - "RegionCode": "lax", - "RegionName": "Los Angeles", - "Latitude": 34.05, - "Longitude": -118.25, - "Nodes": [ - { - "Name": "17c", - "RegionID": 17, - "HostName": "derp17c.tailscale.com", - "IPv4": "208.111.40.12", - "IPv6": "2607:f740:c::10", - "CanPort80": true - }, - { - "Name": "17d", - "RegionID": 17, - "HostName": "derp17d.tailscale.com", - "IPv4": "208.111.40.216", - "IPv6": "2607:f740:c::e1b", - "CanPort80": true - }, - { - "Name": "17b", - "RegionID": 17, - "HostName": "derp17b.tailscale.com", - "IPv4": "192.73.244.245", - "IPv6": "2607:f740:c::646", - "CanPort80": true - } - ] - }, - "18": { - "RegionID": 18, - "RegionCode": "par", - "RegionName": "Paris", - "Latitude": 48.856667, - "Longitude": 2.352222, - "Nodes": [ - { - "Name": "18c", - "RegionID": 18, - "HostName": "derp18c.tailscale.com", - "IPv4": "176.58.90.207", - "IPv6": "2a00:dd80:3e::c19", - "CanPort80": true - }, - { - "Name": "18d", - "RegionID": 18, - "HostName": "derp18d.tailscale.com", - "IPv4": "176.58.90.104", - "IPv6": "2a00:dd80:3e::f2e", - "CanPort80": true - }, - { - "Name": "18b", - "RegionID": 18, - "HostName": "derp18b.tailscale.com", - "IPv4": "176.58.90.147", - "IPv6": "2a00:dd80:3e::363", - "CanPort80": true - } - ] - }, - "19": { - "RegionID": 19, - "RegionCode": "mad", - "RegionName": "Madrid", - "Latitude": 40.416944, - "Longitude": -3.703333, - "Nodes": [ - { - "Name": "19c", - "RegionID": 19, - "HostName": "derp19c.tailscale.com", - "IPv4": "45.159.97.61", - "IPv6": "2a00:dd80:14:10::20", - "CanPort80": true - }, - { - "Name": "19d", - "RegionID": 19, - "HostName": "derp19d.tailscale.com", - "IPv4": "45.159.97.233", - "IPv6": "2a00:dd80:14:10::34a", - "CanPort80": true - }, - { - "Name": "19b", - "RegionID": 19, - "HostName": "derp19b.tailscale.com", - "IPv4": "45.159.97.144", - "IPv6": "2a00:dd80:14:10::335", - "CanPort80": true - } - ] - }, - "2": { - "RegionID": 2, - "RegionCode": "sfo", - "RegionName": "San Francisco", - "Latitude": 37.7775, - "Longitude": -122.416389, - "Nodes": [ - { - "Name": "2e", - "RegionID": 2, - "HostName": "derp2e.tailscale.com", - "IPv4": "192.73.252.134", - "IPv6": "2607:f740:0:3f::44c", - "CanPort80": true - }, - { - "Name": "2f", - "RegionID": 2, - "HostName": "derp2f.tailscale.com", - "IPv4": "208.111.34.178", - "IPv6": "2607:f740:0:3f::f4", - "CanPort80": true - }, - { - "Name": "2d", - "RegionID": 2, - "HostName": "derp2d.tailscale.com", - "IPv4": "192.73.252.65", - "IPv6": "2607:f740:0:3f::287", - "CanPort80": true - } - ] - }, - "20": { - "RegionID": 20, - "RegionCode": "hkg", - "RegionName": "Hong Kong", - "Latitude": 22.3193, - "Longitude": 114.1694, - "Nodes": [ - { - "Name": "20c", - "RegionID": 20, - "HostName": "derp20c.tailscale.com", - "IPv4": "205.147.105.30", - "IPv6": "2403:2500:8000:1::5fb", - "CanPort80": true - }, - { - "Name": "20d", - "RegionID": 20, - "HostName": "derp20d.tailscale.com", - "IPv4": "205.147.105.78", - "IPv6": "2403:2500:8000:1::e9a", - "CanPort80": true - }, - { - "Name": "20b", - "RegionID": 20, - "HostName": "derp20b.tailscale.com", - "IPv4": "103.6.84.152", - "IPv6": "2403:2500:8000:1::ef6", - "CanPort80": true - } - ] - }, - "21": { - "RegionID": 21, - "RegionCode": "tor", - "RegionName": "Toronto", - "Latitude": 43.741667, - "Longitude": -79.373333, - "Nodes": [ - { - "Name": "21c", - "RegionID": 21, - "HostName": "derp21c.tailscale.com", - "IPv4": "162.248.221.215", - "IPv6": "2607:f740:50::f10", - "CanPort80": true - }, - { - "Name": "21d", - "RegionID": 21, - "HostName": "derp21d.tailscale.com", - "IPv4": "162.248.221.248", - "IPv6": "2607:f740:50::ca4", - "CanPort80": true - }, - { - "Name": "21b", - "RegionID": 21, - "HostName": "derp21b.tailscale.com", - "IPv4": "162.248.221.199", - "IPv6": "2607:f740:50::1d1", - "CanPort80": true - } - ] - }, - "22": { - "RegionID": 22, - "RegionCode": "waw", - "RegionName": "Warsaw", - "Latitude": 52.23, - "Longitude": 21.011111, - "Nodes": [ - { - "Name": "22c", - "RegionID": 22, - "HostName": "derp22c.tailscale.com", - "IPv4": "45.159.98.253", - "IPv6": "2a00:dd80:40:100::3f", - "CanPort80": true - }, - { - "Name": "22d", - "RegionID": 22, - "HostName": "derp22d.tailscale.com", - "IPv4": "45.159.98.145", - "IPv6": "2a00:dd80:40:100::211", - "CanPort80": true - }, - { - "Name": "22b", - "RegionID": 22, - "HostName": "derp22b.tailscale.com", - "IPv4": "45.159.98.196", - "IPv6": "2a00:dd80:40:100::316", - "CanPort80": true - } - ] - }, - "23": { - "RegionID": 23, - "RegionCode": "dbi", - "RegionName": "Dubai", - "Latitude": 25.263056, - "Longitude": 55.297222, - "Nodes": [ - { - "Name": "23c", - "RegionID": 23, - "HostName": "derp23c.tailscale.com", - "IPv4": "185.34.3.207", - "IPv6": "2a00:dd80:3f:100::a50", - "CanPort80": true - }, - { - "Name": "23d", - "RegionID": 23, - "HostName": "derp23d.tailscale.com", - "IPv4": "185.34.3.75", - "IPv6": "2a00:dd80:3f:100::97e", - "CanPort80": true - }, - { - "Name": "23b", - "RegionID": 23, - "HostName": "derp23b.tailscale.com", - "IPv4": "185.34.3.232", - "IPv6": "2a00:dd80:3f:100::76f", - "CanPort80": true - } - ] - }, - "24": { - "RegionID": 24, - "RegionCode": "hnl", - "RegionName": "Honolulu", - "Latitude": 21.306944, - "Longitude": -157.858333, - "Nodes": [ - { - "Name": "24c", - "RegionID": 24, - "HostName": "derp24c.tailscale.com", - "IPv4": "208.83.233.233", - "IPv6": "2001:19f0:c000:c591:5400:04ff:fe26:2c5f", - "CanPort80": true - }, - { - "Name": "24d", - "RegionID": 24, - "HostName": "derp24d.tailscale.com", - "IPv4": "208.72.155.133", - "IPv6": "2001:19f0:c000:c564:5400:04ff:fe26:2ba8", - "CanPort80": true - }, - { - "Name": "24b", - "RegionID": 24, - "HostName": "derp24b.tailscale.com", - "IPv4": "208.83.234.151", - "IPv6": "2001:19f0:c000:c586:5400:04ff:fe26:2ba6", - "CanPort80": true - } - ] - }, - "25": { - "RegionID": 25, - "RegionCode": "nai", - "RegionName": "Nairobi", - "Latitude": -1.286389, - "Longitude": 36.817222, - "Nodes": [ - { - "Name": "25c", - "RegionID": 25, - "HostName": "derp25c.tailscale.com", - "IPv4": "102.67.167.37", - "IPv6": "2c0f:edb0:2000:1::2c7", - "CanPort80": true - }, - { - "Name": "25d", - "RegionID": 25, - "HostName": "derp25d.tailscale.com", - "IPv4": "102.67.167.188", - "IPv6": "2c0f:edb0:2000:1::188", - "CanPort80": true - }, - { - "Name": "25b", - "RegionID": 25, - "HostName": "derp25b.tailscale.com", - "IPv4": "102.67.167.245", - "IPv6": "2c0f:edb0:2000:1::2e9", - "CanPort80": true - } - ] - }, - "26": { - "RegionID": 26, - "RegionCode": "nue", - "RegionName": "Nuremberg", - "Latitude": 49.453889, - "Longitude": 11.0775, - "Nodes": [ - { - "Name": "26c", - "RegionID": 26, - "HostName": "derp26c.tailscale.com", - "IPv4": "49.12.193.137", - "IPv6": "2a01:4f8:1c1c:5c70::1", - "CanPort80": true - }, - { - "Name": "26d", - "RegionID": 26, - "HostName": "derp26d.tailscale.com", - "IPv4": "49.13.204.141", - "IPv6": "2a01:4f8:1c0c:7d06::1", - "CanPort80": true - }, - { - "Name": "26b", - "RegionID": 26, - "HostName": "derp26b.tailscale.com", - "IPv4": "167.235.72.200", - "IPv6": "2a01:4f8:1c1c:47b6::1", - "CanPort80": true - } - ] - }, - "27": { - "RegionID": 27, - "RegionCode": "iad", - "RegionName": "Ashburn", - "Latitude": 39.03, - "Longitude": -77.471111, - "Nodes": [ - { - "Name": "27d", - "RegionID": 27, - "HostName": "derp27d.tailscale.com", - "IPv4": "178.156.152.106", - "IPv6": "2a01:4ff:f0:3c8e::1", - "CanPort80": true - }, - { - "Name": "27c", - "RegionID": 27, - "HostName": "derp27c.tailscale.com", - "IPv4": "178.156.152.91", - "IPv6": "2a01:4ff:f0:3913::1", - "CanPort80": true - }, - { - "Name": "27e", - "RegionID": 27, - "HostName": "derp27e.tailscale.com", - "IPv4": "178.156.134.232", - "IPv6": "2a01:4ff:f0:28d4::1", - "CanPort80": true - }, - { - "Name": "27b", - "RegionID": 27, - "HostName": "derp27b.tailscale.com", - "IPv4": "5.161.218.233", - "IPv6": "2a01:4ff:f0:3db9::1", - "CanPort80": true - } - ] - }, - "28": { - "RegionID": 28, - "RegionCode": "hel", - "RegionName": "Helsinki", - "Latitude": 60.170833, - "Longitude": 24.9375, - "Nodes": [ - { - "Name": "28c", - "RegionID": 28, - "HostName": "derp28c.tailscale.com", - "IPv4": "95.217.2.165", - "IPv6": "2a01:4f9:c012:cd74::1", - "CanPort80": true - }, - { - "Name": "28d", - "RegionID": 28, - "HostName": "derp28d.tailscale.com", - "IPv4": "157.180.28.32", - "IPv6": "2a01:4f9:c012:2e5b::1", - "CanPort80": true - }, - { - "Name": "28b", - "RegionID": 28, - "HostName": "derp28b.tailscale.com", - "IPv4": "65.109.143.62", - "IPv6": "2a01:4f9:c012:d55c::1", - "CanPort80": true - } - ] - }, - "3": { - "RegionID": 3, - "RegionCode": "sin", - "RegionName": "Singapore", - "Latitude": 1.3521, - "Longitude": 103.8198, - "Nodes": [ - { - "Name": "3g", - "RegionID": 3, - "HostName": "derp3g.tailscale.com", - "IPv4": "172.237.72.79", - "IPv6": "2600:3c15::2000:adff:fe08:6fab", - "CanPort80": true - }, - { - "Name": "3f", - "RegionID": 3, - "HostName": "derp3f.tailscale.com", - "IPv4": "172.237.72.8", - "IPv6": "2600:3c15::2000:53ff:fe48:a668", - "CanPort80": true - }, - { - "Name": "3h", - "RegionID": 3, - "HostName": "derp3h.tailscale.com", - "IPv4": "172.237.66.30", - "IPv6": "2600:3c15::2000:3dff:fe44:50aa", - "CanPort80": true - }, - { - "Name": "3e", - "RegionID": 3, - "HostName": "derp3e.tailscale.com", - "IPv4": "172.237.72.43", - "IPv6": "2600:3c15::2000:6cff:fee4:d799", - "CanPort80": true - } - ] - }, - "4": { - "RegionID": 4, - "RegionCode": "fra", - "RegionName": "Frankfurt", - "Latitude": 50.1109, - "Longitude": 8.6821, - "Nodes": [ - { - "Name": "4h", - "RegionID": 4, - "HostName": "derp4h.tailscale.com", - "IPv4": "185.40.234.77", - "IPv6": "2a00:dd80:20::bcf", - "CanPort80": true - }, - { - "Name": "4g", - "RegionID": 4, - "HostName": "derp4g.tailscale.com", - "IPv4": "185.40.234.113", - "IPv6": "2a00:dd80:20::8f", - "CanPort80": true - }, - { - "Name": "4i", - "RegionID": 4, - "HostName": "derp4i.tailscale.com", - "IPv4": "185.40.234.53", - "IPv6": "2a00:dd80:20::8a6", - "CanPort80": true - }, - { - "Name": "4f", - "RegionID": 4, - "HostName": "derp4f.tailscale.com", - "IPv4": "185.40.234.219", - "IPv6": "2a00:dd80:20::a25", - "CanPort80": true - } - ] - }, - "5": { - "RegionID": 5, - "RegionCode": "syd", - "RegionName": "Sydney", - "Latitude": -33.867778, - "Longitude": 151.21, - "Nodes": [ - { - "Name": "5f", - "RegionID": 5, - "HostName": "derp5f.tailscale.com", - "IPv4": "172.105.166.103", - "IPv6": "2400:8907::2000:ccff:fe1f:80da", - "CanPort80": true - }, - { - "Name": "5g", - "RegionID": 5, - "HostName": "derp5g.tailscale.com", - "IPv4": "172.105.169.57", - "IPv6": "2400:8907::2000:2fff:fea7:57f4", - "CanPort80": true - }, - { - "Name": "5e", - "RegionID": 5, - "HostName": "derp5e.tailscale.com", - "IPv4": "172.105.179.230", - "IPv6": "2400:8907::2000:ceff:fe8d:4f4e", - "CanPort80": true - } - ] - }, - "6": { - "RegionID": 6, - "RegionCode": "blr", - "RegionName": "Bengaluru", - "Latitude": 12.9716, - "Longitude": 77.5946, - "Nodes": [ - { - "Name": "6a", - "RegionID": 6, - "HostName": "derp6.tailscale.com", - "IPv4": "68.183.90.120", - "IPv6": "2400:6180:100:d0::982:d001", - "CanPort80": true - } - ] - }, - "7": { - "RegionID": 7, - "RegionCode": "tok", - "RegionName": "Tokyo", - "Latitude": 35.6764, - "Longitude": 139.65, - "Nodes": [ - { - "Name": "7g", - "RegionID": 7, - "HostName": "derp7g.tailscale.com", - "IPv4": "172.238.6.179", - "IPv6": "2600:3c18::2000:3fff:fe80:3ebd", - "CanPort80": true - }, - { - "Name": "7f", - "RegionID": 7, - "HostName": "derp7f.tailscale.com", - "IPv4": "172.238.6.34", - "IPv6": "2600:3c18::2000:acff:fe8e:3ed5", - "CanPort80": true - }, - { - "Name": "7h", - "RegionID": 7, - "HostName": "derp7h.tailscale.com", - "IPv4": "172.237.28.183", - "IPv6": "2600:3c18::2000:b1ff:fea9:4560", - "CanPort80": true - }, - { - "Name": "7e", - "RegionID": 7, - "HostName": "derp7e.tailscale.com", - "IPv4": "172.238.6.180", - "IPv6": "2600:3c18::2000:60ff:fe0f:6e83", - "STUNOnly": true, - "CanPort80": true - } - ] - }, - "8": { - "RegionID": 8, - "RegionCode": "lhr", - "RegionName": "London", - "Latitude": 51.5072, - "Longitude": 0.1276, - "Nodes": [ - { - "Name": "8f", - "RegionID": 8, - "HostName": "derp8f.tailscale.com", - "IPv4": "176.58.88.183", - "IPv6": "2a00:dd80:3a::dfa", - "CanPort80": true - }, - { - "Name": "8g", - "RegionID": 8, - "HostName": "derp8g.tailscale.com", - "IPv4": "176.58.92.254", - "IPv6": "2a00:dd80:3a::ed", - "CanPort80": true - }, - { - "Name": "8e", - "RegionID": 8, - "HostName": "derp8e.tailscale.com", - "IPv4": "176.58.92.144", - "IPv6": "2a00:dd80:3a::b33", - "CanPort80": true - } - ] - }, - "9": { - "RegionID": 9, - "RegionCode": "dfw", - "RegionName": "Dallas", - "Latitude": 32.779167, - "Longitude": -96.808889, - "Nodes": [ - { - "Name": "9e", - "RegionID": 9, - "HostName": "derp9e.tailscale.com", - "IPv4": "192.73.248.83", - "IPv6": "2607:f740:100::359", - "CanPort80": true - }, - { - "Name": "9f", - "RegionID": 9, - "HostName": "derp9f.tailscale.com", - "IPv4": "209.177.156.197", - "IPv6": "2607:f740:100::cad", - "CanPort80": true - }, - { - "Name": "9d", - "RegionID": 9, - "HostName": "derp9d.tailscale.com", - "IPv4": "209.177.156.94", - "IPv6": "2607:f740:100::c05", - "CanPort80": true - } - ] - } - } - }, - "DisplayMessages": null, - "TKAEnabled": false, - "TKAHead": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", - "Domain": "kratail2tid@passkey", - "DomainAuditLogID": "", - "UserProfiles": { - "6294409699640722": { - "ID": 6294409699640722, - "LoginName": "multi-exit-router.tail78f774.ts.net", - "DisplayName": "multi-exit-router" - } - } + "PacketFilterRules": null } }, "router-a": { - "commands": { - "packet_filter_rules": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/router-a/tailscaled.sock debug localapi POST debug-packet-filter-rules", - "packet_filter_matches": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/router-a/tailscaled.sock debug localapi POST debug-packet-filter-matches" - }, "packet_filter_rules": [ { "SrcIPs": [ @@ -8411,487 +789,79 @@ "fd7a:115c:a1e0::ff37:1218" ], "DstPorts": [ - { "IP": "100.109.43.124", "Ports": { "First": 0, "Last": 65535 } }, - { "IP": "fd7a:115c:a1e0::a537:2b7c", "Ports": { "First": 0, "Last": 65535 } } + { + "IP": "100.109.43.124", + "Ports": { + "First": 0, + "Last": 65535 + } + }, + { + "IP": "fd7a:115c:a1e0::a537:2b7c", + "Ports": { + "First": 0, + "Last": 65535 + } + } ] }, { - "SrcIPs": ["100.107.162.14", "fd7a:115c:a1e0::a237:a20e"], - "DstPorts": [{ "IP": "10.44.0.0/16", "Ports": { "First": 0, "Last": 65535 } }] + "SrcIPs": [ + "100.107.162.14", + "fd7a:115c:a1e0::a237:a20e" + ], + "DstPorts": [ + { + "IP": "10.44.0.0/16", + "Ports": { + "First": 0, + "Last": 65535 + } + } + ] } ], - "packet_filter_matches": [ - { - "IPProto": [6, 17, 1, 58], - "Srcs": [ - "100.107.162.14/32", - "100.109.43.124/32", - "100.116.18.24/32", - "100.124.195.93/32", - "100.65.172.123/32", - "100.77.135.18/32", - "fd7a:115c:a1e0::4b37:8712/128", - "fd7a:115c:a1e0::5a37:ac7c/128", - "fd7a:115c:a1e0::7837:c35d/128", - "fd7a:115c:a1e0::a237:a20e/128", - "fd7a:115c:a1e0::a537:2b7c/128", - "fd7a:115c:a1e0::ff37:1218/128" - ], - "SrcCaps": null, - "Dsts": [ - { "Net": "100.109.43.124/32", "Ports": { "First": 0, "Last": 65535 } }, - { "Net": "fd7a:115c:a1e0::a537:2b7c/128", "Ports": { "First": 0, "Last": 65535 } } - ], - "Caps": [] - }, - { - "IPProto": [6, 17, 1, 58], - "Srcs": ["100.107.162.14/32", "fd7a:115c:a1e0::a237:a20e/128"], - "SrcCaps": null, - "Dsts": [{ "Net": "10.44.0.0/16", "Ports": { "First": 0, "Last": 65535 } }], - "Caps": [] - } - ], - "whois": { - "100.124.195.93": { - "peer_name": "exit-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/router-a/tailscaled.sock whois --json 100.124.195.93", - "response": { - "Node": { - "ID": 3118755726458377, - "StableID": "nvFTscRVMR11CNTRL", - "Name": "exit-a.tail78f774.ts.net.", - "User": 1260082990019555, - "Key": "nodekey:21ab6fa3288e3bf8cecced295316c6327f427649765eb1746cc6ee9978bcc35c", - "DiscoKey": "discokey:0c8595f67987ed47cf551646d6266c21a635d622409d10745cc08f6922066e49", - "Addresses": ["100.124.195.93/32", "fd7a:115c:a1e0::7837:c35d/128"], - "AllowedIPs": ["100.124.195.93/32", "fd7a:115c:a1e0::7837:c35d/128"], - "Endpoints": ["77.164.248.136:37550", "10.65.0.27:37550", "172.17.0.1:37550"], - "HomeDERP": 14, - "Hostinfo": { - "OS": "linux", - "Hostname": "exit-a", - "Services": [ - { "Proto": "peerapi4", "Port": 57826 }, - { "Proto": "peerapi6", "Port": 57826 } - ] - }, - "Created": "2026-03-28T10:37:56.932966573Z", - "Cap": 131, - "Tags": ["tag:exit-a"], - "Online": true, - "ComputedName": "exit-a", - "ComputedNameWithHost": "exit-a" - }, - "UserProfile": { "ID": 1260082990019555, "LoginName": "tagged-devices", "DisplayName": "Tagged Devices" }, - "CapMap": null - } - }, - "100.116.18.24": { - "peer_name": "exit-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/router-a/tailscaled.sock whois --json 100.116.18.24", - "response": { - "Node": { - "ID": 2230775583277936, - "StableID": "ndK1N8hKRJ11CNTRL", - "Name": "exit-b.tail78f774.ts.net.", - "User": 1260082990019555, - "Key": "nodekey:265e1377372be0d036773ac41339bf7b53ed18e9f67f196d7d517abeff741217", - "DiscoKey": "discokey:63071b08ff89860a2d98005f8f6f65f3b92e05b7b1338b1be71e4ad866f12728", - "Addresses": ["100.116.18.24/32", "fd7a:115c:a1e0::ff37:1218/128"], - "AllowedIPs": ["100.116.18.24/32", "fd7a:115c:a1e0::ff37:1218/128"], - "Endpoints": ["77.164.248.136:35565", "10.65.0.27:35565", "172.17.0.1:35565"], - "HomeDERP": 14, - "Hostinfo": { - "OS": "linux", - "Hostname": "exit-b", - "Services": [ - { "Proto": "peerapi4", "Port": 61723 }, - { "Proto": "peerapi6", "Port": 61723 } - ] - }, - "Created": "2026-03-28T10:38:00.655990366Z", - "Cap": 131, - "Tags": ["tag:exit-b"], - "Online": true, - "ComputedName": "exit-b", - "ComputedNameWithHost": "exit-b" - }, - "UserProfile": { "ID": 1260082990019555, "LoginName": "tagged-devices", "DisplayName": "Tagged Devices" }, - "CapMap": null - } - }, - "100.85.66.106": { - "peer_name": "exit-node", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/router-a/tailscaled.sock whois --json 100.85.66.106", - "response": null - }, - "100.107.162.14": { - "peer_name": "group-a-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/router-a/tailscaled.sock whois --json 100.107.162.14", - "response": { - "Node": { - "ID": 6999435610919250, - "StableID": "nyckVfJ4fw11CNTRL", - "Name": "group-a-client.tail78f774.ts.net.", - "User": 1260082990019555, - "Key": "nodekey:802726716bd4942fceb5e444218c930040fadb082698b57ea3eb59a6a26ba20d", - "DiscoKey": "discokey:bc93c2d3b81606e44eb1c96d721e7cd73c9497aa7d3efbe2f5e0d1e2e95b190f", - "Addresses": ["100.107.162.14/32", "fd7a:115c:a1e0::a237:a20e/128"], - "AllowedIPs": ["100.107.162.14/32", "fd7a:115c:a1e0::a237:a20e/128"], - "Endpoints": ["77.164.248.136:51980", "10.65.0.27:51980", "172.17.0.1:51980"], - "HomeDERP": 14, - "Hostinfo": { - "OS": "linux", - "Hostname": "group-a-client", - "Services": [ - { "Proto": "peerapi4", "Port": 36543 }, - { "Proto": "peerapi6", "Port": 36543 } - ] - }, - "Created": "2026-03-28T10:38:04.339428828Z", - "Cap": 131, - "Tags": ["tag:group-a"], - "Online": true, - "ComputedName": "group-a-client", - "ComputedNameWithHost": "group-a-client" - }, - "UserProfile": { "ID": 1260082990019555, "LoginName": "tagged-devices", "DisplayName": "Tagged Devices" }, - "CapMap": null - } - }, - "100.77.135.18": { - "peer_name": "group-b-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/router-a/tailscaled.sock whois --json 100.77.135.18", - "response": { - "Node": { - "ID": 1008089393782498, - "StableID": "ndUwgLoZs811CNTRL", - "Name": "group-b-client.tail78f774.ts.net.", - "User": 1260082990019555, - "Key": "nodekey:ef35a655163204a08b33e09fdc24709f1e3aaa7f40de4efd5549cf014b4d8711", - "DiscoKey": "discokey:e972182cda0d0b459c91b2881624b81749a7e44390a5dde1b9bc17c1ae67715a", - "Addresses": ["100.77.135.18/32", "fd7a:115c:a1e0::4b37:8712/128"], - "AllowedIPs": ["100.77.135.18/32", "fd7a:115c:a1e0::4b37:8712/128"], - "Endpoints": ["77.164.248.136:49377", "10.65.0.27:49377", "172.17.0.1:49377"], - "HomeDERP": 14, - "Hostinfo": { - "OS": "linux", - "Hostname": "group-b-client", - "Services": [ - { "Proto": "peerapi4", "Port": 47173 }, - { "Proto": "peerapi6", "Port": 47173 } - ] - }, - "Created": "2026-03-28T10:38:08.031309668Z", - "Cap": 131, - "Tags": ["tag:group-b"], - "Online": true, - "ComputedName": "group-b-client", - "ComputedNameWithHost": "group-b-client" - }, - "UserProfile": { "ID": 1260082990019555, "LoginName": "tagged-devices", "DisplayName": "Tagged Devices" }, - "CapMap": null - } - }, - "100.105.127.107": { - "peer_name": "multi-exit-router", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/router-a/tailscaled.sock whois --json 100.105.127.107", - "response": null - }, - "100.65.172.123": { - "peer_name": "router-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/router-a/tailscaled.sock whois --json 100.65.172.123", - "response": { - "Node": { - "ID": 1399889648409786, - "StableID": "nPHvXBj1wB11CNTRL", - "Name": "router-b.tail78f774.ts.net.", - "User": 1260082990019555, - "Key": "nodekey:4e6d3473c516cea37bcefdf4368932c623fd91c24aee1aacc27ca8165a41ac7a", - "DiscoKey": "discokey:dd5532635b8e3ddf25186e36671c16dd17c005c8b6a6862f4b5cc4e4f459e705", - "Addresses": ["100.65.172.123/32", "fd7a:115c:a1e0::5a37:ac7c/128"], - "AllowedIPs": ["100.65.172.123/32", "fd7a:115c:a1e0::5a37:ac7c/128"], - "Endpoints": ["77.164.248.136:35931", "10.65.0.27:35931", "172.17.0.1:35931"], - "HomeDERP": 14, - "Hostinfo": { - "OS": "linux", - "Hostname": "router-b", - "Services": [ - { "Proto": "peerapi4", "Port": 58804 }, - { "Proto": "peerapi6", "Port": 58804 } - ] - }, - "Created": "2026-03-28T10:38:15.42735258Z", - "Cap": 131, - "Tags": ["tag:router-b"], - "Online": true, - "ComputedName": "router-b", - "ComputedNameWithHost": "router-b" - }, - "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/router-a/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/router-a/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/router-a/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/router-a/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/router-a/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/router-a/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/router-a/tailscaled.sock whois --json 100.90.199.68", - "response": null - } - }, "netmap": { - "SelfNode": { - "ID": 50590507314324, - "StableID": "n3kktkvuP111CNTRL", - "Name": "router-a.tail78f774.ts.net.", - "User": 50590507314324, - "Key": "nodekey:b4566fef38b3b2b15684fc8890f5fbaea4525b467825f57a02801969a5ed2b7b", - "DiscoKey": "discokey:368ba711a8394633b4626eb7cd8e6a2df90d8e554505dc032ea9658ceee0f731", - "Addresses": ["100.109.43.124/32", "fd7a:115c:a1e0::a537:2b7c/128"], - "AllowedIPs": ["100.109.43.124/32", "fd7a:115c:a1e0::a537:2b7c/128", "10.44.0.0/16"], - "Endpoints": ["77.164.248.136:34130", "10.65.0.27:34130", "172.17.0.1:34130"], - "Hostinfo": { - "Hostname": "router-a", - "RoutableIPs": ["10.44.0.0/16"], - "RequestTags": ["tag:router-a"], - "Services": [ - { "Proto": "peerapi4", "Port": 49439 }, - { "Proto": "peerapi6", "Port": 49439 }, - { "Proto": "peerapi-dns-proxy", "Port": 1 } - ] - }, - "Created": "2026-03-28T10:38:11.734910312Z", - "Tags": ["tag:router-a"], - "PrimaryRoutes": ["10.44.0.0/16"], - "MachineAuthorized": true, - "CapMap": { - "https://tailscale.com/cap/file-sharing": null, - "https://tailscale.com/cap/is-owner": null, - "https://tailscale.com/cap/ssh": null, - "https://tailscale.com/cap/tailnet-lock": null, - "probe-udp-lifetime": null, - "ssh-behavior-v1": null, - "ssh-env-vars": null, - "store-appc-routes": null, - "tailnet-display-name": ["kratail2tid@passkey"] - }, - "ComputedName": "router-a", - "ComputedNameWithHost": "router-a" - }, - "AllCaps": [ - "probe-udp-lifetime", - "store-appc-routes", - "https://tailscale.com/cap/ssh", - "ssh-behavior-v1", - "ssh-env-vars", - "tailnet-display-name", - "https://tailscale.com/cap/file-sharing", - "https://tailscale.com/cap/is-owner", - "https://tailscale.com/cap/tailnet-lock" - ], - "NodeKey": "nodekey:b4566fef38b3b2b15684fc8890f5fbaea4525b467825f57a02801969a5ed2b7b", - "MachineKey": "mkey:868ba8a45654990c1c153c5ce33ef50ddd8d769841335e42decda4462d1dcf4e", "Peers": [ { - "ID": 1008089393782498, - "StableID": "ndUwgLoZs811CNTRL", "Name": "group-b-client.tail78f774.ts.net.", - "User": 1260082990019555, - "Key": "nodekey:ef35a655163204a08b33e09fdc24709f1e3aaa7f40de4efd5549cf014b4d8711", - "DiscoKey": "discokey:e972182cda0d0b459c91b2881624b81749a7e44390a5dde1b9bc17c1ae67715a", - "Addresses": ["100.77.135.18/32", "fd7a:115c:a1e0::4b37:8712/128"], - "AllowedIPs": ["100.77.135.18/32", "fd7a:115c:a1e0::4b37:8712/128"], - "Endpoints": ["77.164.248.136:49377", "10.65.0.27:49377", "172.17.0.1:49377"], - "HomeDERP": 14, - "Hostinfo": { - "OS": "linux", - "Hostname": "group-b-client", - "Services": [ - { "Proto": "peerapi4", "Port": 47173 }, - { "Proto": "peerapi6", "Port": 47173 } - ] - }, - "Created": "2026-03-28T10:38:08.031309668Z", - "Cap": 131, - "Tags": ["tag:group-b"], - "Online": true, - "ComputedName": "group-b-client", - "ComputedNameWithHost": "group-b-client" - }, - { - "ID": 1399889648409786, - "StableID": "nPHvXBj1wB11CNTRL", - "Name": "router-b.tail78f774.ts.net.", - "User": 1260082990019555, - "Key": "nodekey:4e6d3473c516cea37bcefdf4368932c623fd91c24aee1aacc27ca8165a41ac7a", - "DiscoKey": "discokey:dd5532635b8e3ddf25186e36671c16dd17c005c8b6a6862f4b5cc4e4f459e705", - "Addresses": ["100.65.172.123/32", "fd7a:115c:a1e0::5a37:ac7c/128"], - "AllowedIPs": ["100.65.172.123/32", "fd7a:115c:a1e0::5a37:ac7c/128"], - "Endpoints": ["77.164.248.136:35931", "10.65.0.27:35931", "172.17.0.1:35931"], - "HomeDERP": 14, - "Hostinfo": { - "OS": "linux", - "Hostname": "router-b", - "Services": [ - { "Proto": "peerapi4", "Port": 58804 }, - { "Proto": "peerapi6", "Port": 58804 } - ] - }, - "Created": "2026-03-28T10:38:15.42735258Z", - "Cap": 131, - "Tags": ["tag:router-b"], - "Online": true, - "ComputedName": "router-b", - "ComputedNameWithHost": "router-b" - }, - { - "ID": 2230775583277936, - "StableID": "ndK1N8hKRJ11CNTRL", - "Name": "exit-b.tail78f774.ts.net.", - "User": 1260082990019555, - "Key": "nodekey:265e1377372be0d036773ac41339bf7b53ed18e9f67f196d7d517abeff741217", - "DiscoKey": "discokey:63071b08ff89860a2d98005f8f6f65f3b92e05b7b1338b1be71e4ad866f12728", - "Addresses": ["100.116.18.24/32", "fd7a:115c:a1e0::ff37:1218/128"], - "AllowedIPs": ["100.116.18.24/32", "fd7a:115c:a1e0::ff37:1218/128"], - "Endpoints": ["77.164.248.136:35565", "10.65.0.27:35565", "172.17.0.1:35565"], - "HomeDERP": 14, - "Hostinfo": { - "OS": "linux", - "Hostname": "exit-b", - "Services": [ - { "Proto": "peerapi4", "Port": 61723 }, - { "Proto": "peerapi6", "Port": 61723 } - ] - }, - "Created": "2026-03-28T10:38:00.655990366Z", - "Cap": 131, - "Tags": ["tag:exit-b"], - "Online": true, - "ComputedName": "exit-b", - "ComputedNameWithHost": "exit-b" - }, - { - "ID": 3118755726458377, - "StableID": "nvFTscRVMR11CNTRL", - "Name": "exit-a.tail78f774.ts.net.", - "User": 1260082990019555, - "Key": "nodekey:21ab6fa3288e3bf8cecced295316c6327f427649765eb1746cc6ee9978bcc35c", - "DiscoKey": "discokey:0c8595f67987ed47cf551646d6266c21a635d622409d10745cc08f6922066e49", - "Addresses": ["100.124.195.93/32", "fd7a:115c:a1e0::7837:c35d/128"], - "AllowedIPs": ["100.124.195.93/32", "fd7a:115c:a1e0::7837:c35d/128"], - "Endpoints": ["77.164.248.136:37550", "10.65.0.27:37550", "172.17.0.1:37550"], - "HomeDERP": 14, - "Hostinfo": { - "OS": "linux", - "Hostname": "exit-a", - "Services": [ - { "Proto": "peerapi4", "Port": 57826 }, - { "Proto": "peerapi6", "Port": 57826 } - ] - }, - "Created": "2026-03-28T10:37:56.932966573Z", - "Cap": 131, - "Tags": ["tag:exit-a"], - "Online": true, - "ComputedName": "exit-a", - "ComputedNameWithHost": "exit-a" - }, - { - "ID": 6999435610919250, - "StableID": "nyckVfJ4fw11CNTRL", - "Name": "group-a-client.tail78f774.ts.net.", - "User": 1260082990019555, - "Key": "nodekey:802726716bd4942fceb5e444218c930040fadb082698b57ea3eb59a6a26ba20d", - "DiscoKey": "discokey:bc93c2d3b81606e44eb1c96d721e7cd73c9497aa7d3efbe2f5e0d1e2e95b190f", - "Addresses": ["100.107.162.14/32", "fd7a:115c:a1e0::a237:a20e/128"], - "AllowedIPs": ["100.107.162.14/32", "fd7a:115c:a1e0::a237:a20e/128"], - "Endpoints": ["77.164.248.136:51980", "10.65.0.27:51980", "172.17.0.1:51980"], - "HomeDERP": 14, - "Hostinfo": { - "OS": "linux", - "Hostname": "group-a-client", - "Services": [ - { "Proto": "peerapi4", "Port": 36543 }, - { "Proto": "peerapi6", "Port": 36543 } - ] - }, - "Created": "2026-03-28T10:38:04.339428828Z", - "Cap": 131, - "Tags": ["tag:group-a"], - "Online": true, - "ComputedName": "group-a-client", - "ComputedNameWithHost": "group-a-client" - } - ], - "DNS": { - "Routes": { - "tail78f774.ts.net.": null, - "ts.net.": [{ "Addr": "199.247.155.53" }, { "Addr": "2620:111:8007::53" }] - }, - "Domains": ["tail78f774.ts.net"], - "Proxied": true, - "ExitNodeFilteredSet": [".ts.net", ".tailscale.net"] - }, - "PacketFilter": [ - { - "IPProto": [6, 17, 1, 58], - "Srcs": [ - "100.107.162.14/32", - "100.109.43.124/32", - "100.116.18.24/32", - "100.124.195.93/32", - "100.65.172.123/32", + "AllowedIPs": [ "100.77.135.18/32", - "fd7a:115c:a1e0::4b37:8712/128", - "fd7a:115c:a1e0::5a37:ac7c/128", - "fd7a:115c:a1e0::7837:c35d/128", - "fd7a:115c:a1e0::a237:a20e/128", - "fd7a:115c:a1e0::a537:2b7c/128", + "fd7a:115c:a1e0::4b37:8712/128" + ], + "PrimaryRoutes": [] + }, + { + "Name": "router-b.tail78f774.ts.net.", + "AllowedIPs": [ + "100.65.172.123/32", + "fd7a:115c:a1e0::5a37:ac7c/128" + ], + "PrimaryRoutes": [] + }, + { + "Name": "exit-b.tail78f774.ts.net.", + "AllowedIPs": [ + "100.116.18.24/32", "fd7a:115c:a1e0::ff37:1218/128" ], - "SrcCaps": null, - "Dsts": [ - { "Net": "100.109.43.124/32", "Ports": { "First": 0, "Last": 65535 } }, - { "Net": "fd7a:115c:a1e0::a537:2b7c/128", "Ports": { "First": 0, "Last": 65535 } } - ], - "Caps": [] + "PrimaryRoutes": [] }, { - "IPProto": [6, 17, 1, 58], - "Srcs": ["100.107.162.14/32", "fd7a:115c:a1e0::a237:a20e/128"], - "SrcCaps": null, - "Dsts": [{ "Net": "10.44.0.0/16", "Ports": { "First": 0, "Last": 65535 } }], - "Caps": [] + "Name": "exit-a.tail78f774.ts.net.", + "AllowedIPs": [ + "100.124.195.93/32", + "fd7a:115c:a1e0::7837:c35d/128" + ], + "PrimaryRoutes": [] + }, + { + "Name": "group-a-client.tail78f774.ts.net.", + "AllowedIPs": [ + "100.107.162.14/32", + "fd7a:115c:a1e0::a237:a20e/128" + ], + "PrimaryRoutes": [] } ], "PacketFilterRules": [ @@ -8911,994 +881,41 @@ "fd7a:115c:a1e0::ff37:1218" ], "DstPorts": [ - { "IP": "100.109.43.124", "Ports": { "First": 0, "Last": 65535 } }, - { "IP": "fd7a:115c:a1e0::a537:2b7c", "Ports": { "First": 0, "Last": 65535 } } + { + "IP": "100.109.43.124", + "Ports": { + "First": 0, + "Last": 65535 + } + }, + { + "IP": "fd7a:115c:a1e0::a537:2b7c", + "Ports": { + "First": 0, + "Last": 65535 + } + } ] }, { - "SrcIPs": ["100.107.162.14", "fd7a:115c:a1e0::a237:a20e"], - "DstPorts": [{ "IP": "10.44.0.0/16", "Ports": { "First": 0, "Last": 65535 } }] + "SrcIPs": [ + "100.107.162.14", + "fd7a:115c:a1e0::a237:a20e" + ], + "DstPorts": [ + { + "IP": "10.44.0.0/16", + "Ports": { + "First": 0, + "Last": 65535 + } + } + ] } - ], - "SSHPolicy": { "rules": [] }, - "CollectServices": false, - "DERPMap": { - "Regions": { - "1": { - "RegionID": 1, - "RegionCode": "nyc", - "RegionName": "New York City", - "Latitude": 40.7128, - "Longitude": -74.006, - "Nodes": [ - { - "Name": "1h", - "RegionID": 1, - "HostName": "derp1h.tailscale.com", - "IPv4": "199.38.181.93", - "IPv6": "2607:f740:f::afd", - "CanPort80": true - }, - { - "Name": "1g", - "RegionID": 1, - "HostName": "derp1g.tailscale.com", - "IPv4": "209.177.145.120", - "IPv6": "2607:f740:f::3eb", - "CanPort80": true - }, - { - "Name": "1i", - "RegionID": 1, - "HostName": "derp1i.tailscale.com", - "IPv4": "199.38.181.103", - "IPv6": "2607:f740:f::e19", - "CanPort80": true - }, - { - "Name": "1f", - "RegionID": 1, - "HostName": "derp1f.tailscale.com", - "IPv4": "199.38.181.104", - "IPv6": "2607:f740:f::bc", - "CanPort80": true - } - ] - }, - "10": { - "RegionID": 10, - "RegionCode": "sea", - "RegionName": "Seattle", - "Latitude": 47.609722, - "Longitude": -122.333056, - "Nodes": [ - { - "Name": "10c", - "RegionID": 10, - "HostName": "derp10c.tailscale.com", - "IPv4": "192.73.240.121", - "IPv6": "2607:f740:14::40c", - "CanPort80": true - }, - { - "Name": "10d", - "RegionID": 10, - "HostName": "derp10d.tailscale.com", - "IPv4": "192.73.240.132", - "IPv6": "2607:f740:14::500", - "CanPort80": true - }, - { - "Name": "10b", - "RegionID": 10, - "HostName": "derp10b.tailscale.com", - "IPv4": "192.73.240.161", - "IPv6": "2607:f740:14::61c", - "CanPort80": true - } - ] - }, - "11": { - "RegionID": 11, - "RegionCode": "sao", - "RegionName": "São Paulo", - "Latitude": -23.55, - "Longitude": -46.633333, - "Nodes": [ - { - "Name": "11f", - "RegionID": 11, - "HostName": "derp11f.tailscale.com", - "IPv4": "172.237.61.197", - "IPv6": "2600:3c0d::2000:3bff:fe44:6166", - "CanPort80": true - }, - { - "Name": "11g", - "RegionID": 11, - "HostName": "derp11g.tailscale.com", - "IPv4": "172.237.61.190", - "IPv6": "2600:3c0d::2000:62ff:febe:2e67", - "CanPort80": true - }, - { - "Name": "11e", - "RegionID": 11, - "HostName": "derp11e.tailscale.com", - "IPv4": "172.237.61.194", - "IPv6": "2600:3c0d::2000:d2ff:fe43:1790", - "CanPort80": true - } - ] - }, - "12": { - "RegionID": 12, - "RegionCode": "ord", - "RegionName": "Chicago", - "Latitude": 41.881944, - "Longitude": -87.627778, - "Nodes": [ - { - "Name": "12e", - "RegionID": 12, - "HostName": "derp12e.tailscale.com", - "IPv4": "209.177.158.15", - "IPv6": "2607:f740:e::b17", - "CanPort80": true - }, - { - "Name": "12f", - "RegionID": 12, - "HostName": "derp12f.tailscale.com", - "IPv4": "199.38.182.118", - "IPv6": "2607:f740:e::4c8", - "CanPort80": true - }, - { - "Name": "12d", - "RegionID": 12, - "HostName": "derp12d.tailscale.com", - "IPv4": "209.177.158.246", - "IPv6": "2607:f740:e::811", - "CanPort80": true - } - ] - }, - "13": { - "RegionID": 13, - "RegionCode": "den", - "RegionName": "Denver", - "Latitude": 39.7392, - "Longitude": -104.9849, - "Nodes": [ - { - "Name": "13c", - "RegionID": 13, - "HostName": "derp13c.tailscale.com", - "IPv4": "192.73.242.28", - "IPv6": "2607:f740:16::5c", - "CanPort80": true - }, - { - "Name": "13d", - "RegionID": 13, - "HostName": "derp13d.tailscale.com", - "IPv4": "192.73.242.204", - "IPv6": "2607:f740:16::c23", - "CanPort80": true - }, - { - "Name": "13b", - "RegionID": 13, - "HostName": "derp13b.tailscale.com", - "IPv4": "192.73.242.187", - "IPv6": "2607:f740:16::640", - "CanPort80": true - } - ] - }, - "14": { - "RegionID": 14, - "RegionCode": "ams", - "RegionName": "Amsterdam", - "Latitude": 52.372778, - "Longitude": 4.893611, - "Nodes": [ - { - "Name": "14c", - "RegionID": 14, - "HostName": "derp14c.tailscale.com", - "IPv4": "176.58.93.147", - "IPv6": "2a00:dd80:3c::b09", - "CanPort80": true - }, - { - "Name": "14d", - "RegionID": 14, - "HostName": "derp14d.tailscale.com", - "IPv4": "176.58.93.154", - "IPv6": "2a00:dd80:3c::3d5", - "CanPort80": true - }, - { - "Name": "14b", - "RegionID": 14, - "HostName": "derp14b.tailscale.com", - "IPv4": "176.58.93.248", - "IPv6": "2a00:dd80:3c::807", - "CanPort80": true - } - ] - }, - "15": { - "RegionID": 15, - "RegionCode": "jnb", - "RegionName": "Johannesburg", - "Latitude": -26.204444, - "Longitude": 28.045556, - "Nodes": [ - { - "Name": "15c", - "RegionID": 15, - "HostName": "derp15c.tailscale.com", - "IPv4": "102.67.165.185", - "IPv6": "2c0f:edb0:0:10::b59", - "CanPort80": true - }, - { - "Name": "15d", - "RegionID": 15, - "HostName": "derp15d.tailscale.com", - "IPv4": "102.67.165.36", - "IPv6": "2c0f:edb0:0:10::599", - "CanPort80": true - }, - { - "Name": "15b", - "RegionID": 15, - "HostName": "derp15b.tailscale.com", - "IPv4": "102.67.165.90", - "IPv6": "2c0f:edb0:0:10::963", - "CanPort80": true - } - ] - }, - "16": { - "RegionID": 16, - "RegionCode": "mia", - "RegionName": "Miami", - "Latitude": 25.78, - "Longitude": -80.21, - "Nodes": [ - { - "Name": "16c", - "RegionID": 16, - "HostName": "derp16c.tailscale.com", - "IPv4": "192.73.243.229", - "IPv6": "2607:f740:17::4e4", - "CanPort80": true - }, - { - "Name": "16d", - "RegionID": 16, - "HostName": "derp16d.tailscale.com", - "IPv4": "192.73.243.141", - "IPv6": "2607:f740:17::475", - "CanPort80": true - }, - { - "Name": "16b", - "RegionID": 16, - "HostName": "derp16b.tailscale.com", - "IPv4": "192.73.243.135", - "IPv6": "2607:f740:17::476", - "CanPort80": true - } - ] - }, - "17": { - "RegionID": 17, - "RegionCode": "lax", - "RegionName": "Los Angeles", - "Latitude": 34.05, - "Longitude": -118.25, - "Nodes": [ - { - "Name": "17c", - "RegionID": 17, - "HostName": "derp17c.tailscale.com", - "IPv4": "208.111.40.12", - "IPv6": "2607:f740:c::10", - "CanPort80": true - }, - { - "Name": "17d", - "RegionID": 17, - "HostName": "derp17d.tailscale.com", - "IPv4": "208.111.40.216", - "IPv6": "2607:f740:c::e1b", - "CanPort80": true - }, - { - "Name": "17b", - "RegionID": 17, - "HostName": "derp17b.tailscale.com", - "IPv4": "192.73.244.245", - "IPv6": "2607:f740:c::646", - "CanPort80": true - } - ] - }, - "18": { - "RegionID": 18, - "RegionCode": "par", - "RegionName": "Paris", - "Latitude": 48.856667, - "Longitude": 2.352222, - "Nodes": [ - { - "Name": "18c", - "RegionID": 18, - "HostName": "derp18c.tailscale.com", - "IPv4": "176.58.90.207", - "IPv6": "2a00:dd80:3e::c19", - "CanPort80": true - }, - { - "Name": "18d", - "RegionID": 18, - "HostName": "derp18d.tailscale.com", - "IPv4": "176.58.90.104", - "IPv6": "2a00:dd80:3e::f2e", - "CanPort80": true - }, - { - "Name": "18b", - "RegionID": 18, - "HostName": "derp18b.tailscale.com", - "IPv4": "176.58.90.147", - "IPv6": "2a00:dd80:3e::363", - "CanPort80": true - } - ] - }, - "19": { - "RegionID": 19, - "RegionCode": "mad", - "RegionName": "Madrid", - "Latitude": 40.416944, - "Longitude": -3.703333, - "Nodes": [ - { - "Name": "19c", - "RegionID": 19, - "HostName": "derp19c.tailscale.com", - "IPv4": "45.159.97.61", - "IPv6": "2a00:dd80:14:10::20", - "CanPort80": true - }, - { - "Name": "19d", - "RegionID": 19, - "HostName": "derp19d.tailscale.com", - "IPv4": "45.159.97.233", - "IPv6": "2a00:dd80:14:10::34a", - "CanPort80": true - }, - { - "Name": "19b", - "RegionID": 19, - "HostName": "derp19b.tailscale.com", - "IPv4": "45.159.97.144", - "IPv6": "2a00:dd80:14:10::335", - "CanPort80": true - } - ] - }, - "2": { - "RegionID": 2, - "RegionCode": "sfo", - "RegionName": "San Francisco", - "Latitude": 37.7775, - "Longitude": -122.416389, - "Nodes": [ - { - "Name": "2e", - "RegionID": 2, - "HostName": "derp2e.tailscale.com", - "IPv4": "192.73.252.134", - "IPv6": "2607:f740:0:3f::44c", - "CanPort80": true - }, - { - "Name": "2f", - "RegionID": 2, - "HostName": "derp2f.tailscale.com", - "IPv4": "208.111.34.178", - "IPv6": "2607:f740:0:3f::f4", - "CanPort80": true - }, - { - "Name": "2d", - "RegionID": 2, - "HostName": "derp2d.tailscale.com", - "IPv4": "192.73.252.65", - "IPv6": "2607:f740:0:3f::287", - "CanPort80": true - } - ] - }, - "20": { - "RegionID": 20, - "RegionCode": "hkg", - "RegionName": "Hong Kong", - "Latitude": 22.3193, - "Longitude": 114.1694, - "Nodes": [ - { - "Name": "20c", - "RegionID": 20, - "HostName": "derp20c.tailscale.com", - "IPv4": "205.147.105.30", - "IPv6": "2403:2500:8000:1::5fb", - "CanPort80": true - }, - { - "Name": "20d", - "RegionID": 20, - "HostName": "derp20d.tailscale.com", - "IPv4": "205.147.105.78", - "IPv6": "2403:2500:8000:1::e9a", - "CanPort80": true - }, - { - "Name": "20b", - "RegionID": 20, - "HostName": "derp20b.tailscale.com", - "IPv4": "103.6.84.152", - "IPv6": "2403:2500:8000:1::ef6", - "CanPort80": true - } - ] - }, - "21": { - "RegionID": 21, - "RegionCode": "tor", - "RegionName": "Toronto", - "Latitude": 43.741667, - "Longitude": -79.373333, - "Nodes": [ - { - "Name": "21c", - "RegionID": 21, - "HostName": "derp21c.tailscale.com", - "IPv4": "162.248.221.215", - "IPv6": "2607:f740:50::f10", - "CanPort80": true - }, - { - "Name": "21d", - "RegionID": 21, - "HostName": "derp21d.tailscale.com", - "IPv4": "162.248.221.248", - "IPv6": "2607:f740:50::ca4", - "CanPort80": true - }, - { - "Name": "21b", - "RegionID": 21, - "HostName": "derp21b.tailscale.com", - "IPv4": "162.248.221.199", - "IPv6": "2607:f740:50::1d1", - "CanPort80": true - } - ] - }, - "22": { - "RegionID": 22, - "RegionCode": "waw", - "RegionName": "Warsaw", - "Latitude": 52.23, - "Longitude": 21.011111, - "Nodes": [ - { - "Name": "22c", - "RegionID": 22, - "HostName": "derp22c.tailscale.com", - "IPv4": "45.159.98.253", - "IPv6": "2a00:dd80:40:100::3f", - "CanPort80": true - }, - { - "Name": "22d", - "RegionID": 22, - "HostName": "derp22d.tailscale.com", - "IPv4": "45.159.98.145", - "IPv6": "2a00:dd80:40:100::211", - "CanPort80": true - }, - { - "Name": "22b", - "RegionID": 22, - "HostName": "derp22b.tailscale.com", - "IPv4": "45.159.98.196", - "IPv6": "2a00:dd80:40:100::316", - "CanPort80": true - } - ] - }, - "23": { - "RegionID": 23, - "RegionCode": "dbi", - "RegionName": "Dubai", - "Latitude": 25.263056, - "Longitude": 55.297222, - "Nodes": [ - { - "Name": "23c", - "RegionID": 23, - "HostName": "derp23c.tailscale.com", - "IPv4": "185.34.3.207", - "IPv6": "2a00:dd80:3f:100::a50", - "CanPort80": true - }, - { - "Name": "23d", - "RegionID": 23, - "HostName": "derp23d.tailscale.com", - "IPv4": "185.34.3.75", - "IPv6": "2a00:dd80:3f:100::97e", - "CanPort80": true - }, - { - "Name": "23b", - "RegionID": 23, - "HostName": "derp23b.tailscale.com", - "IPv4": "185.34.3.232", - "IPv6": "2a00:dd80:3f:100::76f", - "CanPort80": true - } - ] - }, - "24": { - "RegionID": 24, - "RegionCode": "hnl", - "RegionName": "Honolulu", - "Latitude": 21.306944, - "Longitude": -157.858333, - "Nodes": [ - { - "Name": "24c", - "RegionID": 24, - "HostName": "derp24c.tailscale.com", - "IPv4": "208.83.233.233", - "IPv6": "2001:19f0:c000:c591:5400:04ff:fe26:2c5f", - "CanPort80": true - }, - { - "Name": "24d", - "RegionID": 24, - "HostName": "derp24d.tailscale.com", - "IPv4": "208.72.155.133", - "IPv6": "2001:19f0:c000:c564:5400:04ff:fe26:2ba8", - "CanPort80": true - }, - { - "Name": "24b", - "RegionID": 24, - "HostName": "derp24b.tailscale.com", - "IPv4": "208.83.234.151", - "IPv6": "2001:19f0:c000:c586:5400:04ff:fe26:2ba6", - "CanPort80": true - } - ] - }, - "25": { - "RegionID": 25, - "RegionCode": "nai", - "RegionName": "Nairobi", - "Latitude": -1.286389, - "Longitude": 36.817222, - "Nodes": [ - { - "Name": "25c", - "RegionID": 25, - "HostName": "derp25c.tailscale.com", - "IPv4": "102.67.167.37", - "IPv6": "2c0f:edb0:2000:1::2c7", - "CanPort80": true - }, - { - "Name": "25d", - "RegionID": 25, - "HostName": "derp25d.tailscale.com", - "IPv4": "102.67.167.188", - "IPv6": "2c0f:edb0:2000:1::188", - "CanPort80": true - }, - { - "Name": "25b", - "RegionID": 25, - "HostName": "derp25b.tailscale.com", - "IPv4": "102.67.167.245", - "IPv6": "2c0f:edb0:2000:1::2e9", - "CanPort80": true - } - ] - }, - "26": { - "RegionID": 26, - "RegionCode": "nue", - "RegionName": "Nuremberg", - "Latitude": 49.453889, - "Longitude": 11.0775, - "Nodes": [ - { - "Name": "26c", - "RegionID": 26, - "HostName": "derp26c.tailscale.com", - "IPv4": "49.12.193.137", - "IPv6": "2a01:4f8:1c1c:5c70::1", - "CanPort80": true - }, - { - "Name": "26d", - "RegionID": 26, - "HostName": "derp26d.tailscale.com", - "IPv4": "49.13.204.141", - "IPv6": "2a01:4f8:1c0c:7d06::1", - "CanPort80": true - }, - { - "Name": "26b", - "RegionID": 26, - "HostName": "derp26b.tailscale.com", - "IPv4": "167.235.72.200", - "IPv6": "2a01:4f8:1c1c:47b6::1", - "CanPort80": true - } - ] - }, - "27": { - "RegionID": 27, - "RegionCode": "iad", - "RegionName": "Ashburn", - "Latitude": 39.03, - "Longitude": -77.471111, - "Nodes": [ - { - "Name": "27d", - "RegionID": 27, - "HostName": "derp27d.tailscale.com", - "IPv4": "178.156.152.106", - "IPv6": "2a01:4ff:f0:3c8e::1", - "CanPort80": true - }, - { - "Name": "27c", - "RegionID": 27, - "HostName": "derp27c.tailscale.com", - "IPv4": "178.156.152.91", - "IPv6": "2a01:4ff:f0:3913::1", - "CanPort80": true - }, - { - "Name": "27e", - "RegionID": 27, - "HostName": "derp27e.tailscale.com", - "IPv4": "178.156.134.232", - "IPv6": "2a01:4ff:f0:28d4::1", - "CanPort80": true - }, - { - "Name": "27b", - "RegionID": 27, - "HostName": "derp27b.tailscale.com", - "IPv4": "5.161.218.233", - "IPv6": "2a01:4ff:f0:3db9::1", - "CanPort80": true - } - ] - }, - "28": { - "RegionID": 28, - "RegionCode": "hel", - "RegionName": "Helsinki", - "Latitude": 60.170833, - "Longitude": 24.9375, - "Nodes": [ - { - "Name": "28c", - "RegionID": 28, - "HostName": "derp28c.tailscale.com", - "IPv4": "95.217.2.165", - "IPv6": "2a01:4f9:c012:cd74::1", - "CanPort80": true - }, - { - "Name": "28d", - "RegionID": 28, - "HostName": "derp28d.tailscale.com", - "IPv4": "157.180.28.32", - "IPv6": "2a01:4f9:c012:2e5b::1", - "CanPort80": true - }, - { - "Name": "28b", - "RegionID": 28, - "HostName": "derp28b.tailscale.com", - "IPv4": "65.109.143.62", - "IPv6": "2a01:4f9:c012:d55c::1", - "CanPort80": true - } - ] - }, - "3": { - "RegionID": 3, - "RegionCode": "sin", - "RegionName": "Singapore", - "Latitude": 1.3521, - "Longitude": 103.8198, - "Nodes": [ - { - "Name": "3g", - "RegionID": 3, - "HostName": "derp3g.tailscale.com", - "IPv4": "172.237.72.79", - "IPv6": "2600:3c15::2000:adff:fe08:6fab", - "CanPort80": true - }, - { - "Name": "3f", - "RegionID": 3, - "HostName": "derp3f.tailscale.com", - "IPv4": "172.237.72.8", - "IPv6": "2600:3c15::2000:53ff:fe48:a668", - "CanPort80": true - }, - { - "Name": "3h", - "RegionID": 3, - "HostName": "derp3h.tailscale.com", - "IPv4": "172.237.66.30", - "IPv6": "2600:3c15::2000:3dff:fe44:50aa", - "CanPort80": true - }, - { - "Name": "3e", - "RegionID": 3, - "HostName": "derp3e.tailscale.com", - "IPv4": "172.237.72.43", - "IPv6": "2600:3c15::2000:6cff:fee4:d799", - "CanPort80": true - } - ] - }, - "4": { - "RegionID": 4, - "RegionCode": "fra", - "RegionName": "Frankfurt", - "Latitude": 50.1109, - "Longitude": 8.6821, - "Nodes": [ - { - "Name": "4h", - "RegionID": 4, - "HostName": "derp4h.tailscale.com", - "IPv4": "185.40.234.77", - "IPv6": "2a00:dd80:20::bcf", - "CanPort80": true - }, - { - "Name": "4g", - "RegionID": 4, - "HostName": "derp4g.tailscale.com", - "IPv4": "185.40.234.113", - "IPv6": "2a00:dd80:20::8f", - "CanPort80": true - }, - { - "Name": "4i", - "RegionID": 4, - "HostName": "derp4i.tailscale.com", - "IPv4": "185.40.234.53", - "IPv6": "2a00:dd80:20::8a6", - "CanPort80": true - }, - { - "Name": "4f", - "RegionID": 4, - "HostName": "derp4f.tailscale.com", - "IPv4": "185.40.234.219", - "IPv6": "2a00:dd80:20::a25", - "CanPort80": true - } - ] - }, - "5": { - "RegionID": 5, - "RegionCode": "syd", - "RegionName": "Sydney", - "Latitude": -33.867778, - "Longitude": 151.21, - "Nodes": [ - { - "Name": "5f", - "RegionID": 5, - "HostName": "derp5f.tailscale.com", - "IPv4": "172.105.166.103", - "IPv6": "2400:8907::2000:ccff:fe1f:80da", - "CanPort80": true - }, - { - "Name": "5g", - "RegionID": 5, - "HostName": "derp5g.tailscale.com", - "IPv4": "172.105.169.57", - "IPv6": "2400:8907::2000:2fff:fea7:57f4", - "CanPort80": true - }, - { - "Name": "5e", - "RegionID": 5, - "HostName": "derp5e.tailscale.com", - "IPv4": "172.105.179.230", - "IPv6": "2400:8907::2000:ceff:fe8d:4f4e", - "CanPort80": true - } - ] - }, - "6": { - "RegionID": 6, - "RegionCode": "blr", - "RegionName": "Bengaluru", - "Latitude": 12.9716, - "Longitude": 77.5946, - "Nodes": [ - { - "Name": "6a", - "RegionID": 6, - "HostName": "derp6.tailscale.com", - "IPv4": "68.183.90.120", - "IPv6": "2400:6180:100:d0::982:d001", - "CanPort80": true - } - ] - }, - "7": { - "RegionID": 7, - "RegionCode": "tok", - "RegionName": "Tokyo", - "Latitude": 35.6764, - "Longitude": 139.65, - "Nodes": [ - { - "Name": "7g", - "RegionID": 7, - "HostName": "derp7g.tailscale.com", - "IPv4": "172.238.6.179", - "IPv6": "2600:3c18::2000:3fff:fe80:3ebd", - "CanPort80": true - }, - { - "Name": "7f", - "RegionID": 7, - "HostName": "derp7f.tailscale.com", - "IPv4": "172.238.6.34", - "IPv6": "2600:3c18::2000:acff:fe8e:3ed5", - "CanPort80": true - }, - { - "Name": "7h", - "RegionID": 7, - "HostName": "derp7h.tailscale.com", - "IPv4": "172.237.28.183", - "IPv6": "2600:3c18::2000:b1ff:fea9:4560", - "CanPort80": true - }, - { - "Name": "7e", - "RegionID": 7, - "HostName": "derp7e.tailscale.com", - "IPv4": "172.238.6.180", - "IPv6": "2600:3c18::2000:60ff:fe0f:6e83", - "STUNOnly": true, - "CanPort80": true - } - ] - }, - "8": { - "RegionID": 8, - "RegionCode": "lhr", - "RegionName": "London", - "Latitude": 51.5072, - "Longitude": 0.1276, - "Nodes": [ - { - "Name": "8f", - "RegionID": 8, - "HostName": "derp8f.tailscale.com", - "IPv4": "176.58.88.183", - "IPv6": "2a00:dd80:3a::dfa", - "CanPort80": true - }, - { - "Name": "8g", - "RegionID": 8, - "HostName": "derp8g.tailscale.com", - "IPv4": "176.58.92.254", - "IPv6": "2a00:dd80:3a::ed", - "CanPort80": true - }, - { - "Name": "8e", - "RegionID": 8, - "HostName": "derp8e.tailscale.com", - "IPv4": "176.58.92.144", - "IPv6": "2a00:dd80:3a::b33", - "CanPort80": true - } - ] - }, - "9": { - "RegionID": 9, - "RegionCode": "dfw", - "RegionName": "Dallas", - "Latitude": 32.779167, - "Longitude": -96.808889, - "Nodes": [ - { - "Name": "9e", - "RegionID": 9, - "HostName": "derp9e.tailscale.com", - "IPv4": "192.73.248.83", - "IPv6": "2607:f740:100::359", - "CanPort80": true - }, - { - "Name": "9f", - "RegionID": 9, - "HostName": "derp9f.tailscale.com", - "IPv4": "209.177.156.197", - "IPv6": "2607:f740:100::cad", - "CanPort80": true - }, - { - "Name": "9d", - "RegionID": 9, - "HostName": "derp9d.tailscale.com", - "IPv4": "209.177.156.94", - "IPv6": "2607:f740:100::c05", - "CanPort80": true - } - ] - } - } - }, - "DisplayMessages": null, - "TKAEnabled": false, - "TKAHead": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", - "Domain": "kratail2tid@passkey", - "DomainAuditLogID": "", - "UserProfiles": { - "1260082990019555": { - "ID": 1260082990019555, - "LoginName": "tagged-devices", - "DisplayName": "Tagged Devices" - }, - "50590507314324": { - "ID": 50590507314324, - "LoginName": "router-a.tail78f774.ts.net", - "DisplayName": "router-a" - } - } + ] } }, "router-b": { - "commands": { - "packet_filter_rules": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/router-b/tailscaled.sock debug localapi POST debug-packet-filter-rules", - "packet_filter_matches": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/router-b/tailscaled.sock debug localapi POST debug-packet-filter-matches" - }, "packet_filter_rules": [ { "SrcIPs": [ @@ -9916,487 +933,79 @@ "fd7a:115c:a1e0::ff37:1218" ], "DstPorts": [ - { "IP": "100.65.172.123", "Ports": { "First": 0, "Last": 65535 } }, - { "IP": "fd7a:115c:a1e0::5a37:ac7c", "Ports": { "First": 0, "Last": 65535 } } + { + "IP": "100.65.172.123", + "Ports": { + "First": 0, + "Last": 65535 + } + }, + { + "IP": "fd7a:115c:a1e0::5a37:ac7c", + "Ports": { + "First": 0, + "Last": 65535 + } + } ] }, { - "SrcIPs": ["100.77.135.18", "fd7a:115c:a1e0::4b37:8712"], - "DstPorts": [{ "IP": "10.55.0.0/16", "Ports": { "First": 0, "Last": 65535 } }] + "SrcIPs": [ + "100.77.135.18", + "fd7a:115c:a1e0::4b37:8712" + ], + "DstPorts": [ + { + "IP": "10.55.0.0/16", + "Ports": { + "First": 0, + "Last": 65535 + } + } + ] } ], - "packet_filter_matches": [ - { - "IPProto": [6, 17, 1, 58], - "Srcs": [ - "100.107.162.14/32", - "100.109.43.124/32", - "100.116.18.24/32", - "100.124.195.93/32", - "100.65.172.123/32", - "100.77.135.18/32", - "fd7a:115c:a1e0::4b37:8712/128", - "fd7a:115c:a1e0::5a37:ac7c/128", - "fd7a:115c:a1e0::7837:c35d/128", - "fd7a:115c:a1e0::a237:a20e/128", - "fd7a:115c:a1e0::a537:2b7c/128", - "fd7a:115c:a1e0::ff37:1218/128" - ], - "SrcCaps": null, - "Dsts": [ - { "Net": "100.65.172.123/32", "Ports": { "First": 0, "Last": 65535 } }, - { "Net": "fd7a:115c:a1e0::5a37:ac7c/128", "Ports": { "First": 0, "Last": 65535 } } - ], - "Caps": [] - }, - { - "IPProto": [6, 17, 1, 58], - "Srcs": ["100.77.135.18/32", "fd7a:115c:a1e0::4b37:8712/128"], - "SrcCaps": null, - "Dsts": [{ "Net": "10.55.0.0/16", "Ports": { "First": 0, "Last": 65535 } }], - "Caps": [] - } - ], - "whois": { - "100.124.195.93": { - "peer_name": "exit-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/router-b/tailscaled.sock whois --json 100.124.195.93", - "response": { - "Node": { - "ID": 3118755726458377, - "StableID": "nvFTscRVMR11CNTRL", - "Name": "exit-a.tail78f774.ts.net.", - "User": 1260082990019555, - "Key": "nodekey:21ab6fa3288e3bf8cecced295316c6327f427649765eb1746cc6ee9978bcc35c", - "DiscoKey": "discokey:0c8595f67987ed47cf551646d6266c21a635d622409d10745cc08f6922066e49", - "Addresses": ["100.124.195.93/32", "fd7a:115c:a1e0::7837:c35d/128"], - "AllowedIPs": ["100.124.195.93/32", "fd7a:115c:a1e0::7837:c35d/128"], - "Endpoints": ["77.164.248.136:37550", "10.65.0.27:37550", "172.17.0.1:37550"], - "HomeDERP": 14, - "Hostinfo": { - "OS": "linux", - "Hostname": "exit-a", - "Services": [ - { "Proto": "peerapi4", "Port": 57826 }, - { "Proto": "peerapi6", "Port": 57826 } - ] - }, - "Created": "2026-03-28T10:37:56.932966573Z", - "Cap": 131, - "Tags": ["tag:exit-a"], - "Online": true, - "ComputedName": "exit-a", - "ComputedNameWithHost": "exit-a" - }, - "UserProfile": { "ID": 1260082990019555, "LoginName": "tagged-devices", "DisplayName": "Tagged Devices" }, - "CapMap": null - } - }, - "100.116.18.24": { - "peer_name": "exit-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/router-b/tailscaled.sock whois --json 100.116.18.24", - "response": { - "Node": { - "ID": 2230775583277936, - "StableID": "ndK1N8hKRJ11CNTRL", - "Name": "exit-b.tail78f774.ts.net.", - "User": 1260082990019555, - "Key": "nodekey:265e1377372be0d036773ac41339bf7b53ed18e9f67f196d7d517abeff741217", - "DiscoKey": "discokey:63071b08ff89860a2d98005f8f6f65f3b92e05b7b1338b1be71e4ad866f12728", - "Addresses": ["100.116.18.24/32", "fd7a:115c:a1e0::ff37:1218/128"], - "AllowedIPs": ["100.116.18.24/32", "fd7a:115c:a1e0::ff37:1218/128"], - "Endpoints": ["77.164.248.136:35565", "10.65.0.27:35565", "172.17.0.1:35565"], - "HomeDERP": 14, - "Hostinfo": { - "OS": "linux", - "Hostname": "exit-b", - "Services": [ - { "Proto": "peerapi4", "Port": 61723 }, - { "Proto": "peerapi6", "Port": 61723 } - ] - }, - "Created": "2026-03-28T10:38:00.655990366Z", - "Cap": 131, - "Tags": ["tag:exit-b"], - "Online": true, - "ComputedName": "exit-b", - "ComputedNameWithHost": "exit-b" - }, - "UserProfile": { "ID": 1260082990019555, "LoginName": "tagged-devices", "DisplayName": "Tagged Devices" }, - "CapMap": null - } - }, - "100.85.66.106": { - "peer_name": "exit-node", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/router-b/tailscaled.sock whois --json 100.85.66.106", - "response": null - }, - "100.107.162.14": { - "peer_name": "group-a-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/router-b/tailscaled.sock whois --json 100.107.162.14", - "response": { - "Node": { - "ID": 6999435610919250, - "StableID": "nyckVfJ4fw11CNTRL", - "Name": "group-a-client.tail78f774.ts.net.", - "User": 1260082990019555, - "Key": "nodekey:802726716bd4942fceb5e444218c930040fadb082698b57ea3eb59a6a26ba20d", - "DiscoKey": "discokey:bc93c2d3b81606e44eb1c96d721e7cd73c9497aa7d3efbe2f5e0d1e2e95b190f", - "Addresses": ["100.107.162.14/32", "fd7a:115c:a1e0::a237:a20e/128"], - "AllowedIPs": ["100.107.162.14/32", "fd7a:115c:a1e0::a237:a20e/128"], - "Endpoints": ["77.164.248.136:51980", "10.65.0.27:51980", "172.17.0.1:51980"], - "HomeDERP": 14, - "Hostinfo": { - "OS": "linux", - "Hostname": "group-a-client", - "Services": [ - { "Proto": "peerapi4", "Port": 36543 }, - { "Proto": "peerapi6", "Port": 36543 } - ] - }, - "Created": "2026-03-28T10:38:04.339428828Z", - "Cap": 131, - "Tags": ["tag:group-a"], - "Online": true, - "ComputedName": "group-a-client", - "ComputedNameWithHost": "group-a-client" - }, - "UserProfile": { "ID": 1260082990019555, "LoginName": "tagged-devices", "DisplayName": "Tagged Devices" }, - "CapMap": null - } - }, - "100.77.135.18": { - "peer_name": "group-b-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/router-b/tailscaled.sock whois --json 100.77.135.18", - "response": { - "Node": { - "ID": 1008089393782498, - "StableID": "ndUwgLoZs811CNTRL", - "Name": "group-b-client.tail78f774.ts.net.", - "User": 1260082990019555, - "Key": "nodekey:ef35a655163204a08b33e09fdc24709f1e3aaa7f40de4efd5549cf014b4d8711", - "DiscoKey": "discokey:e972182cda0d0b459c91b2881624b81749a7e44390a5dde1b9bc17c1ae67715a", - "Addresses": ["100.77.135.18/32", "fd7a:115c:a1e0::4b37:8712/128"], - "AllowedIPs": ["100.77.135.18/32", "fd7a:115c:a1e0::4b37:8712/128"], - "Endpoints": ["77.164.248.136:49377", "10.65.0.27:49377", "172.17.0.1:49377"], - "HomeDERP": 14, - "Hostinfo": { - "OS": "linux", - "Hostname": "group-b-client", - "Services": [ - { "Proto": "peerapi4", "Port": 47173 }, - { "Proto": "peerapi6", "Port": 47173 } - ] - }, - "Created": "2026-03-28T10:38:08.031309668Z", - "Cap": 131, - "Tags": ["tag:group-b"], - "Online": true, - "ComputedName": "group-b-client", - "ComputedNameWithHost": "group-b-client" - }, - "UserProfile": { "ID": 1260082990019555, "LoginName": "tagged-devices", "DisplayName": "Tagged Devices" }, - "CapMap": null - } - }, - "100.105.127.107": { - "peer_name": "multi-exit-router", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/router-b/tailscaled.sock whois --json 100.105.127.107", - "response": null - }, - "100.109.43.124": { - "peer_name": "router-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/router-b/tailscaled.sock whois --json 100.109.43.124", - "response": { - "Node": { - "ID": 50590507314324, - "StableID": "n3kktkvuP111CNTRL", - "Name": "router-a.tail78f774.ts.net.", - "User": 1260082990019555, - "Key": "nodekey:b4566fef38b3b2b15684fc8890f5fbaea4525b467825f57a02801969a5ed2b7b", - "DiscoKey": "discokey:368ba711a8394633b4626eb7cd8e6a2df90d8e554505dc032ea9658ceee0f731", - "Addresses": ["100.109.43.124/32", "fd7a:115c:a1e0::a537:2b7c/128"], - "AllowedIPs": ["100.109.43.124/32", "fd7a:115c:a1e0::a537:2b7c/128"], - "Endpoints": ["77.164.248.136:34130", "10.65.0.27:34130", "172.17.0.1:34130"], - "HomeDERP": 14, - "Hostinfo": { - "OS": "linux", - "Hostname": "router-a", - "Services": [ - { "Proto": "peerapi4", "Port": 49439 }, - { "Proto": "peerapi6", "Port": 49439 } - ] - }, - "Created": "2026-03-28T10:38:11.734910312Z", - "Cap": 131, - "Tags": ["tag:router-a"], - "Online": true, - "ComputedName": "router-a", - "ComputedNameWithHost": "router-a" - }, - "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/router-b/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/router-b/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/router-b/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/router-b/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/router-b/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/router-b/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/router-b/tailscaled.sock whois --json 100.90.199.68", - "response": null - } - }, "netmap": { - "SelfNode": { - "ID": 1399889648409786, - "StableID": "nPHvXBj1wB11CNTRL", - "Name": "router-b.tail78f774.ts.net.", - "User": 1399889648409786, - "Key": "nodekey:4e6d3473c516cea37bcefdf4368932c623fd91c24aee1aacc27ca8165a41ac7a", - "DiscoKey": "discokey:dd5532635b8e3ddf25186e36671c16dd17c005c8b6a6862f4b5cc4e4f459e705", - "Addresses": ["100.65.172.123/32", "fd7a:115c:a1e0::5a37:ac7c/128"], - "AllowedIPs": ["100.65.172.123/32", "fd7a:115c:a1e0::5a37:ac7c/128", "10.55.0.0/16"], - "Endpoints": ["77.164.248.136:35931", "10.65.0.27:35931", "172.17.0.1:35931"], - "Hostinfo": { - "Hostname": "router-b", - "RoutableIPs": ["10.55.0.0/16"], - "RequestTags": ["tag:router-b"], - "Services": [ - { "Proto": "peerapi4", "Port": 58804 }, - { "Proto": "peerapi6", "Port": 58804 }, - { "Proto": "peerapi-dns-proxy", "Port": 1 } - ] - }, - "Created": "2026-03-28T10:38:15.42735258Z", - "Tags": ["tag:router-b"], - "PrimaryRoutes": ["10.55.0.0/16"], - "MachineAuthorized": true, - "CapMap": { - "https://tailscale.com/cap/file-sharing": null, - "https://tailscale.com/cap/is-owner": null, - "https://tailscale.com/cap/ssh": null, - "https://tailscale.com/cap/tailnet-lock": null, - "probe-udp-lifetime": null, - "ssh-behavior-v1": null, - "ssh-env-vars": null, - "store-appc-routes": null, - "tailnet-display-name": ["kratail2tid@passkey"] - }, - "ComputedName": "router-b", - "ComputedNameWithHost": "router-b" - }, - "AllCaps": [ - "store-appc-routes", - "https://tailscale.com/cap/is-owner", - "https://tailscale.com/cap/ssh", - "ssh-env-vars", - "tailnet-display-name", - "probe-udp-lifetime", - "ssh-behavior-v1", - "https://tailscale.com/cap/tailnet-lock", - "https://tailscale.com/cap/file-sharing" - ], - "NodeKey": "nodekey:4e6d3473c516cea37bcefdf4368932c623fd91c24aee1aacc27ca8165a41ac7a", - "MachineKey": "mkey:d040ca033391d3dedae7b2ad7ec3334646cda7aeca501780bdaa37addec3c228", "Peers": [ { - "ID": 50590507314324, - "StableID": "n3kktkvuP111CNTRL", "Name": "router-a.tail78f774.ts.net.", - "User": 1260082990019555, - "Key": "nodekey:b4566fef38b3b2b15684fc8890f5fbaea4525b467825f57a02801969a5ed2b7b", - "DiscoKey": "discokey:368ba711a8394633b4626eb7cd8e6a2df90d8e554505dc032ea9658ceee0f731", - "Addresses": ["100.109.43.124/32", "fd7a:115c:a1e0::a537:2b7c/128"], - "AllowedIPs": ["100.109.43.124/32", "fd7a:115c:a1e0::a537:2b7c/128"], - "Endpoints": ["77.164.248.136:34130", "10.65.0.27:34130", "172.17.0.1:34130"], - "HomeDERP": 14, - "Hostinfo": { - "OS": "linux", - "Hostname": "router-a", - "Services": [ - { "Proto": "peerapi4", "Port": 49439 }, - { "Proto": "peerapi6", "Port": 49439 } - ] - }, - "Created": "2026-03-28T10:38:11.734910312Z", - "Cap": 131, - "Tags": ["tag:router-a"], - "Online": true, - "ComputedName": "router-a", - "ComputedNameWithHost": "router-a" - }, - { - "ID": 1008089393782498, - "StableID": "ndUwgLoZs811CNTRL", - "Name": "group-b-client.tail78f774.ts.net.", - "User": 1260082990019555, - "Key": "nodekey:ef35a655163204a08b33e09fdc24709f1e3aaa7f40de4efd5549cf014b4d8711", - "DiscoKey": "discokey:e972182cda0d0b459c91b2881624b81749a7e44390a5dde1b9bc17c1ae67715a", - "Addresses": ["100.77.135.18/32", "fd7a:115c:a1e0::4b37:8712/128"], - "AllowedIPs": ["100.77.135.18/32", "fd7a:115c:a1e0::4b37:8712/128"], - "Endpoints": ["77.164.248.136:49377", "10.65.0.27:49377", "172.17.0.1:49377"], - "HomeDERP": 14, - "Hostinfo": { - "OS": "linux", - "Hostname": "group-b-client", - "Services": [ - { "Proto": "peerapi4", "Port": 47173 }, - { "Proto": "peerapi6", "Port": 47173 } - ] - }, - "Created": "2026-03-28T10:38:08.031309668Z", - "Cap": 131, - "Tags": ["tag:group-b"], - "Online": true, - "ComputedName": "group-b-client", - "ComputedNameWithHost": "group-b-client" - }, - { - "ID": 2230775583277936, - "StableID": "ndK1N8hKRJ11CNTRL", - "Name": "exit-b.tail78f774.ts.net.", - "User": 1260082990019555, - "Key": "nodekey:265e1377372be0d036773ac41339bf7b53ed18e9f67f196d7d517abeff741217", - "DiscoKey": "discokey:63071b08ff89860a2d98005f8f6f65f3b92e05b7b1338b1be71e4ad866f12728", - "Addresses": ["100.116.18.24/32", "fd7a:115c:a1e0::ff37:1218/128"], - "AllowedIPs": ["100.116.18.24/32", "fd7a:115c:a1e0::ff37:1218/128"], - "Endpoints": ["77.164.248.136:35565", "10.65.0.27:35565", "172.17.0.1:35565"], - "HomeDERP": 14, - "Hostinfo": { - "OS": "linux", - "Hostname": "exit-b", - "Services": [ - { "Proto": "peerapi4", "Port": 61723 }, - { "Proto": "peerapi6", "Port": 61723 } - ] - }, - "Created": "2026-03-28T10:38:00.655990366Z", - "Cap": 131, - "Tags": ["tag:exit-b"], - "Online": true, - "ComputedName": "exit-b", - "ComputedNameWithHost": "exit-b" - }, - { - "ID": 3118755726458377, - "StableID": "nvFTscRVMR11CNTRL", - "Name": "exit-a.tail78f774.ts.net.", - "User": 1260082990019555, - "Key": "nodekey:21ab6fa3288e3bf8cecced295316c6327f427649765eb1746cc6ee9978bcc35c", - "DiscoKey": "discokey:0c8595f67987ed47cf551646d6266c21a635d622409d10745cc08f6922066e49", - "Addresses": ["100.124.195.93/32", "fd7a:115c:a1e0::7837:c35d/128"], - "AllowedIPs": ["100.124.195.93/32", "fd7a:115c:a1e0::7837:c35d/128"], - "Endpoints": ["77.164.248.136:37550", "10.65.0.27:37550", "172.17.0.1:37550"], - "HomeDERP": 14, - "Hostinfo": { - "OS": "linux", - "Hostname": "exit-a", - "Services": [ - { "Proto": "peerapi4", "Port": 57826 }, - { "Proto": "peerapi6", "Port": 57826 } - ] - }, - "Created": "2026-03-28T10:37:56.932966573Z", - "Cap": 131, - "Tags": ["tag:exit-a"], - "Online": true, - "ComputedName": "exit-a", - "ComputedNameWithHost": "exit-a" - }, - { - "ID": 6999435610919250, - "StableID": "nyckVfJ4fw11CNTRL", - "Name": "group-a-client.tail78f774.ts.net.", - "User": 1260082990019555, - "Key": "nodekey:802726716bd4942fceb5e444218c930040fadb082698b57ea3eb59a6a26ba20d", - "DiscoKey": "discokey:bc93c2d3b81606e44eb1c96d721e7cd73c9497aa7d3efbe2f5e0d1e2e95b190f", - "Addresses": ["100.107.162.14/32", "fd7a:115c:a1e0::a237:a20e/128"], - "AllowedIPs": ["100.107.162.14/32", "fd7a:115c:a1e0::a237:a20e/128"], - "Endpoints": ["77.164.248.136:51980", "10.65.0.27:51980", "172.17.0.1:51980"], - "HomeDERP": 14, - "Hostinfo": { - "OS": "linux", - "Hostname": "group-a-client", - "Services": [ - { "Proto": "peerapi4", "Port": 36543 }, - { "Proto": "peerapi6", "Port": 36543 } - ] - }, - "Created": "2026-03-28T10:38:04.339428828Z", - "Cap": 131, - "Tags": ["tag:group-a"], - "Online": true, - "ComputedName": "group-a-client", - "ComputedNameWithHost": "group-a-client" - } - ], - "DNS": { - "Routes": { - "tail78f774.ts.net.": null, - "ts.net.": [{ "Addr": "199.247.155.53" }, { "Addr": "2620:111:8007::53" }] - }, - "Domains": ["tail78f774.ts.net"], - "Proxied": true, - "ExitNodeFilteredSet": [".ts.net", ".tailscale.net"] - }, - "PacketFilter": [ - { - "IPProto": [6, 17, 1, 58], - "Srcs": [ - "100.107.162.14/32", + "AllowedIPs": [ "100.109.43.124/32", - "100.116.18.24/32", - "100.124.195.93/32", - "100.65.172.123/32", + "fd7a:115c:a1e0::a537:2b7c/128" + ], + "PrimaryRoutes": [] + }, + { + "Name": "group-b-client.tail78f774.ts.net.", + "AllowedIPs": [ "100.77.135.18/32", - "fd7a:115c:a1e0::4b37:8712/128", - "fd7a:115c:a1e0::5a37:ac7c/128", - "fd7a:115c:a1e0::7837:c35d/128", - "fd7a:115c:a1e0::a237:a20e/128", - "fd7a:115c:a1e0::a537:2b7c/128", + "fd7a:115c:a1e0::4b37:8712/128" + ], + "PrimaryRoutes": [] + }, + { + "Name": "exit-b.tail78f774.ts.net.", + "AllowedIPs": [ + "100.116.18.24/32", "fd7a:115c:a1e0::ff37:1218/128" ], - "SrcCaps": null, - "Dsts": [ - { "Net": "100.65.172.123/32", "Ports": { "First": 0, "Last": 65535 } }, - { "Net": "fd7a:115c:a1e0::5a37:ac7c/128", "Ports": { "First": 0, "Last": 65535 } } - ], - "Caps": [] + "PrimaryRoutes": [] }, { - "IPProto": [6, 17, 1, 58], - "Srcs": ["100.77.135.18/32", "fd7a:115c:a1e0::4b37:8712/128"], - "SrcCaps": null, - "Dsts": [{ "Net": "10.55.0.0/16", "Ports": { "First": 0, "Last": 65535 } }], - "Caps": [] + "Name": "exit-a.tail78f774.ts.net.", + "AllowedIPs": [ + "100.124.195.93/32", + "fd7a:115c:a1e0::7837:c35d/128" + ], + "PrimaryRoutes": [] + }, + { + "Name": "group-a-client.tail78f774.ts.net.", + "AllowedIPs": [ + "100.107.162.14/32", + "fd7a:115c:a1e0::a237:a20e/128" + ], + "PrimaryRoutes": [] } ], "PacketFilterRules": [ @@ -10416,8755 +1025,87 @@ "fd7a:115c:a1e0::ff37:1218" ], "DstPorts": [ - { "IP": "100.65.172.123", "Ports": { "First": 0, "Last": 65535 } }, - { "IP": "fd7a:115c:a1e0::5a37:ac7c", "Ports": { "First": 0, "Last": 65535 } } + { + "IP": "100.65.172.123", + "Ports": { + "First": 0, + "Last": 65535 + } + }, + { + "IP": "fd7a:115c:a1e0::5a37:ac7c", + "Ports": { + "First": 0, + "Last": 65535 + } + } ] }, { - "SrcIPs": ["100.77.135.18", "fd7a:115c:a1e0::4b37:8712"], - "DstPorts": [{ "IP": "10.55.0.0/16", "Ports": { "First": 0, "Last": 65535 } }] + "SrcIPs": [ + "100.77.135.18", + "fd7a:115c:a1e0::4b37:8712" + ], + "DstPorts": [ + { + "IP": "10.55.0.0/16", + "Ports": { + "First": 0, + "Last": 65535 + } + } + ] } - ], - "SSHPolicy": { "rules": [] }, - "CollectServices": false, - "DERPMap": { - "Regions": { - "1": { - "RegionID": 1, - "RegionCode": "nyc", - "RegionName": "New York City", - "Latitude": 40.7128, - "Longitude": -74.006, - "Nodes": [ - { - "Name": "1h", - "RegionID": 1, - "HostName": "derp1h.tailscale.com", - "IPv4": "199.38.181.93", - "IPv6": "2607:f740:f::afd", - "CanPort80": true - }, - { - "Name": "1g", - "RegionID": 1, - "HostName": "derp1g.tailscale.com", - "IPv4": "209.177.145.120", - "IPv6": "2607:f740:f::3eb", - "CanPort80": true - }, - { - "Name": "1i", - "RegionID": 1, - "HostName": "derp1i.tailscale.com", - "IPv4": "199.38.181.103", - "IPv6": "2607:f740:f::e19", - "CanPort80": true - }, - { - "Name": "1f", - "RegionID": 1, - "HostName": "derp1f.tailscale.com", - "IPv4": "199.38.181.104", - "IPv6": "2607:f740:f::bc", - "CanPort80": true - } - ] - }, - "10": { - "RegionID": 10, - "RegionCode": "sea", - "RegionName": "Seattle", - "Latitude": 47.609722, - "Longitude": -122.333056, - "Nodes": [ - { - "Name": "10c", - "RegionID": 10, - "HostName": "derp10c.tailscale.com", - "IPv4": "192.73.240.121", - "IPv6": "2607:f740:14::40c", - "CanPort80": true - }, - { - "Name": "10d", - "RegionID": 10, - "HostName": "derp10d.tailscale.com", - "IPv4": "192.73.240.132", - "IPv6": "2607:f740:14::500", - "CanPort80": true - }, - { - "Name": "10b", - "RegionID": 10, - "HostName": "derp10b.tailscale.com", - "IPv4": "192.73.240.161", - "IPv6": "2607:f740:14::61c", - "CanPort80": true - } - ] - }, - "11": { - "RegionID": 11, - "RegionCode": "sao", - "RegionName": "São Paulo", - "Latitude": -23.55, - "Longitude": -46.633333, - "Nodes": [ - { - "Name": "11f", - "RegionID": 11, - "HostName": "derp11f.tailscale.com", - "IPv4": "172.237.61.197", - "IPv6": "2600:3c0d::2000:3bff:fe44:6166", - "CanPort80": true - }, - { - "Name": "11g", - "RegionID": 11, - "HostName": "derp11g.tailscale.com", - "IPv4": "172.237.61.190", - "IPv6": "2600:3c0d::2000:62ff:febe:2e67", - "CanPort80": true - }, - { - "Name": "11e", - "RegionID": 11, - "HostName": "derp11e.tailscale.com", - "IPv4": "172.237.61.194", - "IPv6": "2600:3c0d::2000:d2ff:fe43:1790", - "CanPort80": true - } - ] - }, - "12": { - "RegionID": 12, - "RegionCode": "ord", - "RegionName": "Chicago", - "Latitude": 41.881944, - "Longitude": -87.627778, - "Nodes": [ - { - "Name": "12e", - "RegionID": 12, - "HostName": "derp12e.tailscale.com", - "IPv4": "209.177.158.15", - "IPv6": "2607:f740:e::b17", - "CanPort80": true - }, - { - "Name": "12f", - "RegionID": 12, - "HostName": "derp12f.tailscale.com", - "IPv4": "199.38.182.118", - "IPv6": "2607:f740:e::4c8", - "CanPort80": true - }, - { - "Name": "12d", - "RegionID": 12, - "HostName": "derp12d.tailscale.com", - "IPv4": "209.177.158.246", - "IPv6": "2607:f740:e::811", - "CanPort80": true - } - ] - }, - "13": { - "RegionID": 13, - "RegionCode": "den", - "RegionName": "Denver", - "Latitude": 39.7392, - "Longitude": -104.9849, - "Nodes": [ - { - "Name": "13c", - "RegionID": 13, - "HostName": "derp13c.tailscale.com", - "IPv4": "192.73.242.28", - "IPv6": "2607:f740:16::5c", - "CanPort80": true - }, - { - "Name": "13d", - "RegionID": 13, - "HostName": "derp13d.tailscale.com", - "IPv4": "192.73.242.204", - "IPv6": "2607:f740:16::c23", - "CanPort80": true - }, - { - "Name": "13b", - "RegionID": 13, - "HostName": "derp13b.tailscale.com", - "IPv4": "192.73.242.187", - "IPv6": "2607:f740:16::640", - "CanPort80": true - } - ] - }, - "14": { - "RegionID": 14, - "RegionCode": "ams", - "RegionName": "Amsterdam", - "Latitude": 52.372778, - "Longitude": 4.893611, - "Nodes": [ - { - "Name": "14c", - "RegionID": 14, - "HostName": "derp14c.tailscale.com", - "IPv4": "176.58.93.147", - "IPv6": "2a00:dd80:3c::b09", - "CanPort80": true - }, - { - "Name": "14d", - "RegionID": 14, - "HostName": "derp14d.tailscale.com", - "IPv4": "176.58.93.154", - "IPv6": "2a00:dd80:3c::3d5", - "CanPort80": true - }, - { - "Name": "14b", - "RegionID": 14, - "HostName": "derp14b.tailscale.com", - "IPv4": "176.58.93.248", - "IPv6": "2a00:dd80:3c::807", - "CanPort80": true - } - ] - }, - "15": { - "RegionID": 15, - "RegionCode": "jnb", - "RegionName": "Johannesburg", - "Latitude": -26.204444, - "Longitude": 28.045556, - "Nodes": [ - { - "Name": "15c", - "RegionID": 15, - "HostName": "derp15c.tailscale.com", - "IPv4": "102.67.165.185", - "IPv6": "2c0f:edb0:0:10::b59", - "CanPort80": true - }, - { - "Name": "15d", - "RegionID": 15, - "HostName": "derp15d.tailscale.com", - "IPv4": "102.67.165.36", - "IPv6": "2c0f:edb0:0:10::599", - "CanPort80": true - }, - { - "Name": "15b", - "RegionID": 15, - "HostName": "derp15b.tailscale.com", - "IPv4": "102.67.165.90", - "IPv6": "2c0f:edb0:0:10::963", - "CanPort80": true - } - ] - }, - "16": { - "RegionID": 16, - "RegionCode": "mia", - "RegionName": "Miami", - "Latitude": 25.78, - "Longitude": -80.21, - "Nodes": [ - { - "Name": "16c", - "RegionID": 16, - "HostName": "derp16c.tailscale.com", - "IPv4": "192.73.243.229", - "IPv6": "2607:f740:17::4e4", - "CanPort80": true - }, - { - "Name": "16d", - "RegionID": 16, - "HostName": "derp16d.tailscale.com", - "IPv4": "192.73.243.141", - "IPv6": "2607:f740:17::475", - "CanPort80": true - }, - { - "Name": "16b", - "RegionID": 16, - "HostName": "derp16b.tailscale.com", - "IPv4": "192.73.243.135", - "IPv6": "2607:f740:17::476", - "CanPort80": true - } - ] - }, - "17": { - "RegionID": 17, - "RegionCode": "lax", - "RegionName": "Los Angeles", - "Latitude": 34.05, - "Longitude": -118.25, - "Nodes": [ - { - "Name": "17c", - "RegionID": 17, - "HostName": "derp17c.tailscale.com", - "IPv4": "208.111.40.12", - "IPv6": "2607:f740:c::10", - "CanPort80": true - }, - { - "Name": "17d", - "RegionID": 17, - "HostName": "derp17d.tailscale.com", - "IPv4": "208.111.40.216", - "IPv6": "2607:f740:c::e1b", - "CanPort80": true - }, - { - "Name": "17b", - "RegionID": 17, - "HostName": "derp17b.tailscale.com", - "IPv4": "192.73.244.245", - "IPv6": "2607:f740:c::646", - "CanPort80": true - } - ] - }, - "18": { - "RegionID": 18, - "RegionCode": "par", - "RegionName": "Paris", - "Latitude": 48.856667, - "Longitude": 2.352222, - "Nodes": [ - { - "Name": "18c", - "RegionID": 18, - "HostName": "derp18c.tailscale.com", - "IPv4": "176.58.90.207", - "IPv6": "2a00:dd80:3e::c19", - "CanPort80": true - }, - { - "Name": "18d", - "RegionID": 18, - "HostName": "derp18d.tailscale.com", - "IPv4": "176.58.90.104", - "IPv6": "2a00:dd80:3e::f2e", - "CanPort80": true - }, - { - "Name": "18b", - "RegionID": 18, - "HostName": "derp18b.tailscale.com", - "IPv4": "176.58.90.147", - "IPv6": "2a00:dd80:3e::363", - "CanPort80": true - } - ] - }, - "19": { - "RegionID": 19, - "RegionCode": "mad", - "RegionName": "Madrid", - "Latitude": 40.416944, - "Longitude": -3.703333, - "Nodes": [ - { - "Name": "19c", - "RegionID": 19, - "HostName": "derp19c.tailscale.com", - "IPv4": "45.159.97.61", - "IPv6": "2a00:dd80:14:10::20", - "CanPort80": true - }, - { - "Name": "19d", - "RegionID": 19, - "HostName": "derp19d.tailscale.com", - "IPv4": "45.159.97.233", - "IPv6": "2a00:dd80:14:10::34a", - "CanPort80": true - }, - { - "Name": "19b", - "RegionID": 19, - "HostName": "derp19b.tailscale.com", - "IPv4": "45.159.97.144", - "IPv6": "2a00:dd80:14:10::335", - "CanPort80": true - } - ] - }, - "2": { - "RegionID": 2, - "RegionCode": "sfo", - "RegionName": "San Francisco", - "Latitude": 37.7775, - "Longitude": -122.416389, - "Nodes": [ - { - "Name": "2e", - "RegionID": 2, - "HostName": "derp2e.tailscale.com", - "IPv4": "192.73.252.134", - "IPv6": "2607:f740:0:3f::44c", - "CanPort80": true - }, - { - "Name": "2f", - "RegionID": 2, - "HostName": "derp2f.tailscale.com", - "IPv4": "208.111.34.178", - "IPv6": "2607:f740:0:3f::f4", - "CanPort80": true - }, - { - "Name": "2d", - "RegionID": 2, - "HostName": "derp2d.tailscale.com", - "IPv4": "192.73.252.65", - "IPv6": "2607:f740:0:3f::287", - "CanPort80": true - } - ] - }, - "20": { - "RegionID": 20, - "RegionCode": "hkg", - "RegionName": "Hong Kong", - "Latitude": 22.3193, - "Longitude": 114.1694, - "Nodes": [ - { - "Name": "20c", - "RegionID": 20, - "HostName": "derp20c.tailscale.com", - "IPv4": "205.147.105.30", - "IPv6": "2403:2500:8000:1::5fb", - "CanPort80": true - }, - { - "Name": "20d", - "RegionID": 20, - "HostName": "derp20d.tailscale.com", - "IPv4": "205.147.105.78", - "IPv6": "2403:2500:8000:1::e9a", - "CanPort80": true - }, - { - "Name": "20b", - "RegionID": 20, - "HostName": "derp20b.tailscale.com", - "IPv4": "103.6.84.152", - "IPv6": "2403:2500:8000:1::ef6", - "CanPort80": true - } - ] - }, - "21": { - "RegionID": 21, - "RegionCode": "tor", - "RegionName": "Toronto", - "Latitude": 43.741667, - "Longitude": -79.373333, - "Nodes": [ - { - "Name": "21c", - "RegionID": 21, - "HostName": "derp21c.tailscale.com", - "IPv4": "162.248.221.215", - "IPv6": "2607:f740:50::f10", - "CanPort80": true - }, - { - "Name": "21d", - "RegionID": 21, - "HostName": "derp21d.tailscale.com", - "IPv4": "162.248.221.248", - "IPv6": "2607:f740:50::ca4", - "CanPort80": true - }, - { - "Name": "21b", - "RegionID": 21, - "HostName": "derp21b.tailscale.com", - "IPv4": "162.248.221.199", - "IPv6": "2607:f740:50::1d1", - "CanPort80": true - } - ] - }, - "22": { - "RegionID": 22, - "RegionCode": "waw", - "RegionName": "Warsaw", - "Latitude": 52.23, - "Longitude": 21.011111, - "Nodes": [ - { - "Name": "22c", - "RegionID": 22, - "HostName": "derp22c.tailscale.com", - "IPv4": "45.159.98.253", - "IPv6": "2a00:dd80:40:100::3f", - "CanPort80": true - }, - { - "Name": "22d", - "RegionID": 22, - "HostName": "derp22d.tailscale.com", - "IPv4": "45.159.98.145", - "IPv6": "2a00:dd80:40:100::211", - "CanPort80": true - }, - { - "Name": "22b", - "RegionID": 22, - "HostName": "derp22b.tailscale.com", - "IPv4": "45.159.98.196", - "IPv6": "2a00:dd80:40:100::316", - "CanPort80": true - } - ] - }, - "23": { - "RegionID": 23, - "RegionCode": "dbi", - "RegionName": "Dubai", - "Latitude": 25.263056, - "Longitude": 55.297222, - "Nodes": [ - { - "Name": "23c", - "RegionID": 23, - "HostName": "derp23c.tailscale.com", - "IPv4": "185.34.3.207", - "IPv6": "2a00:dd80:3f:100::a50", - "CanPort80": true - }, - { - "Name": "23d", - "RegionID": 23, - "HostName": "derp23d.tailscale.com", - "IPv4": "185.34.3.75", - "IPv6": "2a00:dd80:3f:100::97e", - "CanPort80": true - }, - { - "Name": "23b", - "RegionID": 23, - "HostName": "derp23b.tailscale.com", - "IPv4": "185.34.3.232", - "IPv6": "2a00:dd80:3f:100::76f", - "CanPort80": true - } - ] - }, - "24": { - "RegionID": 24, - "RegionCode": "hnl", - "RegionName": "Honolulu", - "Latitude": 21.306944, - "Longitude": -157.858333, - "Nodes": [ - { - "Name": "24c", - "RegionID": 24, - "HostName": "derp24c.tailscale.com", - "IPv4": "208.83.233.233", - "IPv6": "2001:19f0:c000:c591:5400:04ff:fe26:2c5f", - "CanPort80": true - }, - { - "Name": "24d", - "RegionID": 24, - "HostName": "derp24d.tailscale.com", - "IPv4": "208.72.155.133", - "IPv6": "2001:19f0:c000:c564:5400:04ff:fe26:2ba8", - "CanPort80": true - }, - { - "Name": "24b", - "RegionID": 24, - "HostName": "derp24b.tailscale.com", - "IPv4": "208.83.234.151", - "IPv6": "2001:19f0:c000:c586:5400:04ff:fe26:2ba6", - "CanPort80": true - } - ] - }, - "25": { - "RegionID": 25, - "RegionCode": "nai", - "RegionName": "Nairobi", - "Latitude": -1.286389, - "Longitude": 36.817222, - "Nodes": [ - { - "Name": "25c", - "RegionID": 25, - "HostName": "derp25c.tailscale.com", - "IPv4": "102.67.167.37", - "IPv6": "2c0f:edb0:2000:1::2c7", - "CanPort80": true - }, - { - "Name": "25d", - "RegionID": 25, - "HostName": "derp25d.tailscale.com", - "IPv4": "102.67.167.188", - "IPv6": "2c0f:edb0:2000:1::188", - "CanPort80": true - }, - { - "Name": "25b", - "RegionID": 25, - "HostName": "derp25b.tailscale.com", - "IPv4": "102.67.167.245", - "IPv6": "2c0f:edb0:2000:1::2e9", - "CanPort80": true - } - ] - }, - "26": { - "RegionID": 26, - "RegionCode": "nue", - "RegionName": "Nuremberg", - "Latitude": 49.453889, - "Longitude": 11.0775, - "Nodes": [ - { - "Name": "26c", - "RegionID": 26, - "HostName": "derp26c.tailscale.com", - "IPv4": "49.12.193.137", - "IPv6": "2a01:4f8:1c1c:5c70::1", - "CanPort80": true - }, - { - "Name": "26d", - "RegionID": 26, - "HostName": "derp26d.tailscale.com", - "IPv4": "49.13.204.141", - "IPv6": "2a01:4f8:1c0c:7d06::1", - "CanPort80": true - }, - { - "Name": "26b", - "RegionID": 26, - "HostName": "derp26b.tailscale.com", - "IPv4": "167.235.72.200", - "IPv6": "2a01:4f8:1c1c:47b6::1", - "CanPort80": true - } - ] - }, - "27": { - "RegionID": 27, - "RegionCode": "iad", - "RegionName": "Ashburn", - "Latitude": 39.03, - "Longitude": -77.471111, - "Nodes": [ - { - "Name": "27d", - "RegionID": 27, - "HostName": "derp27d.tailscale.com", - "IPv4": "178.156.152.106", - "IPv6": "2a01:4ff:f0:3c8e::1", - "CanPort80": true - }, - { - "Name": "27c", - "RegionID": 27, - "HostName": "derp27c.tailscale.com", - "IPv4": "178.156.152.91", - "IPv6": "2a01:4ff:f0:3913::1", - "CanPort80": true - }, - { - "Name": "27e", - "RegionID": 27, - "HostName": "derp27e.tailscale.com", - "IPv4": "178.156.134.232", - "IPv6": "2a01:4ff:f0:28d4::1", - "CanPort80": true - }, - { - "Name": "27b", - "RegionID": 27, - "HostName": "derp27b.tailscale.com", - "IPv4": "5.161.218.233", - "IPv6": "2a01:4ff:f0:3db9::1", - "CanPort80": true - } - ] - }, - "28": { - "RegionID": 28, - "RegionCode": "hel", - "RegionName": "Helsinki", - "Latitude": 60.170833, - "Longitude": 24.9375, - "Nodes": [ - { - "Name": "28c", - "RegionID": 28, - "HostName": "derp28c.tailscale.com", - "IPv4": "95.217.2.165", - "IPv6": "2a01:4f9:c012:cd74::1", - "CanPort80": true - }, - { - "Name": "28d", - "RegionID": 28, - "HostName": "derp28d.tailscale.com", - "IPv4": "157.180.28.32", - "IPv6": "2a01:4f9:c012:2e5b::1", - "CanPort80": true - }, - { - "Name": "28b", - "RegionID": 28, - "HostName": "derp28b.tailscale.com", - "IPv4": "65.109.143.62", - "IPv6": "2a01:4f9:c012:d55c::1", - "CanPort80": true - } - ] - }, - "3": { - "RegionID": 3, - "RegionCode": "sin", - "RegionName": "Singapore", - "Latitude": 1.3521, - "Longitude": 103.8198, - "Nodes": [ - { - "Name": "3g", - "RegionID": 3, - "HostName": "derp3g.tailscale.com", - "IPv4": "172.237.72.79", - "IPv6": "2600:3c15::2000:adff:fe08:6fab", - "CanPort80": true - }, - { - "Name": "3f", - "RegionID": 3, - "HostName": "derp3f.tailscale.com", - "IPv4": "172.237.72.8", - "IPv6": "2600:3c15::2000:53ff:fe48:a668", - "CanPort80": true - }, - { - "Name": "3h", - "RegionID": 3, - "HostName": "derp3h.tailscale.com", - "IPv4": "172.237.66.30", - "IPv6": "2600:3c15::2000:3dff:fe44:50aa", - "CanPort80": true - }, - { - "Name": "3e", - "RegionID": 3, - "HostName": "derp3e.tailscale.com", - "IPv4": "172.237.72.43", - "IPv6": "2600:3c15::2000:6cff:fee4:d799", - "CanPort80": true - } - ] - }, - "4": { - "RegionID": 4, - "RegionCode": "fra", - "RegionName": "Frankfurt", - "Latitude": 50.1109, - "Longitude": 8.6821, - "Nodes": [ - { - "Name": "4h", - "RegionID": 4, - "HostName": "derp4h.tailscale.com", - "IPv4": "185.40.234.77", - "IPv6": "2a00:dd80:20::bcf", - "CanPort80": true - }, - { - "Name": "4g", - "RegionID": 4, - "HostName": "derp4g.tailscale.com", - "IPv4": "185.40.234.113", - "IPv6": "2a00:dd80:20::8f", - "CanPort80": true - }, - { - "Name": "4i", - "RegionID": 4, - "HostName": "derp4i.tailscale.com", - "IPv4": "185.40.234.53", - "IPv6": "2a00:dd80:20::8a6", - "CanPort80": true - }, - { - "Name": "4f", - "RegionID": 4, - "HostName": "derp4f.tailscale.com", - "IPv4": "185.40.234.219", - "IPv6": "2a00:dd80:20::a25", - "CanPort80": true - } - ] - }, - "5": { - "RegionID": 5, - "RegionCode": "syd", - "RegionName": "Sydney", - "Latitude": -33.867778, - "Longitude": 151.21, - "Nodes": [ - { - "Name": "5f", - "RegionID": 5, - "HostName": "derp5f.tailscale.com", - "IPv4": "172.105.166.103", - "IPv6": "2400:8907::2000:ccff:fe1f:80da", - "CanPort80": true - }, - { - "Name": "5g", - "RegionID": 5, - "HostName": "derp5g.tailscale.com", - "IPv4": "172.105.169.57", - "IPv6": "2400:8907::2000:2fff:fea7:57f4", - "CanPort80": true - }, - { - "Name": "5e", - "RegionID": 5, - "HostName": "derp5e.tailscale.com", - "IPv4": "172.105.179.230", - "IPv6": "2400:8907::2000:ceff:fe8d:4f4e", - "CanPort80": true - } - ] - }, - "6": { - "RegionID": 6, - "RegionCode": "blr", - "RegionName": "Bengaluru", - "Latitude": 12.9716, - "Longitude": 77.5946, - "Nodes": [ - { - "Name": "6a", - "RegionID": 6, - "HostName": "derp6.tailscale.com", - "IPv4": "68.183.90.120", - "IPv6": "2400:6180:100:d0::982:d001", - "CanPort80": true - } - ] - }, - "7": { - "RegionID": 7, - "RegionCode": "tok", - "RegionName": "Tokyo", - "Latitude": 35.6764, - "Longitude": 139.65, - "Nodes": [ - { - "Name": "7g", - "RegionID": 7, - "HostName": "derp7g.tailscale.com", - "IPv4": "172.238.6.179", - "IPv6": "2600:3c18::2000:3fff:fe80:3ebd", - "CanPort80": true - }, - { - "Name": "7f", - "RegionID": 7, - "HostName": "derp7f.tailscale.com", - "IPv4": "172.238.6.34", - "IPv6": "2600:3c18::2000:acff:fe8e:3ed5", - "CanPort80": true - }, - { - "Name": "7h", - "RegionID": 7, - "HostName": "derp7h.tailscale.com", - "IPv4": "172.237.28.183", - "IPv6": "2600:3c18::2000:b1ff:fea9:4560", - "CanPort80": true - }, - { - "Name": "7e", - "RegionID": 7, - "HostName": "derp7e.tailscale.com", - "IPv4": "172.238.6.180", - "IPv6": "2600:3c18::2000:60ff:fe0f:6e83", - "STUNOnly": true, - "CanPort80": true - } - ] - }, - "8": { - "RegionID": 8, - "RegionCode": "lhr", - "RegionName": "London", - "Latitude": 51.5072, - "Longitude": 0.1276, - "Nodes": [ - { - "Name": "8f", - "RegionID": 8, - "HostName": "derp8f.tailscale.com", - "IPv4": "176.58.88.183", - "IPv6": "2a00:dd80:3a::dfa", - "CanPort80": true - }, - { - "Name": "8g", - "RegionID": 8, - "HostName": "derp8g.tailscale.com", - "IPv4": "176.58.92.254", - "IPv6": "2a00:dd80:3a::ed", - "CanPort80": true - }, - { - "Name": "8e", - "RegionID": 8, - "HostName": "derp8e.tailscale.com", - "IPv4": "176.58.92.144", - "IPv6": "2a00:dd80:3a::b33", - "CanPort80": true - } - ] - }, - "9": { - "RegionID": 9, - "RegionCode": "dfw", - "RegionName": "Dallas", - "Latitude": 32.779167, - "Longitude": -96.808889, - "Nodes": [ - { - "Name": "9e", - "RegionID": 9, - "HostName": "derp9e.tailscale.com", - "IPv4": "192.73.248.83", - "IPv6": "2607:f740:100::359", - "CanPort80": true - }, - { - "Name": "9f", - "RegionID": 9, - "HostName": "derp9f.tailscale.com", - "IPv4": "209.177.156.197", - "IPv6": "2607:f740:100::cad", - "CanPort80": true - }, - { - "Name": "9d", - "RegionID": 9, - "HostName": "derp9d.tailscale.com", - "IPv4": "209.177.156.94", - "IPv6": "2607:f740:100::c05", - "CanPort80": true - } - ] - } - } - }, - "DisplayMessages": null, - "TKAEnabled": false, - "TKAHead": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", - "Domain": "kratail2tid@passkey", - "DomainAuditLogID": "", - "UserProfiles": { - "1260082990019555": { - "ID": 1260082990019555, - "LoginName": "tagged-devices", - "DisplayName": "Tagged Devices" - }, - "1399889648409786": { - "ID": 1399889648409786, - "LoginName": "router-b.tail78f774.ts.net", - "DisplayName": "router-b" - } - } + ] } }, "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.124.195.93": { - "peer_name": "exit-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/subnet-router/tailscaled.sock whois --json 100.124.195.93", - "response": null - }, - "100.116.18.24": { - "peer_name": "exit-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/subnet-router/tailscaled.sock whois --json 100.116.18.24", - "response": null - }, - "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.107.162.14": { - "peer_name": "group-a-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/subnet-router/tailscaled.sock whois --json 100.107.162.14", - "response": null - }, - "100.77.135.18": { - "peer_name": "group-b-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/subnet-router/tailscaled.sock whois --json 100.77.135.18", - "response": null - }, - "100.105.127.107": { - "peer_name": "multi-exit-router", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/subnet-router/tailscaled.sock whois --json 100.105.127.107", - "response": null - }, - "100.109.43.124": { - "peer_name": "router-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/subnet-router/tailscaled.sock whois --json 100.109.43.124", - "response": null - }, - "100.65.172.123": { - "peer_name": "router-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/subnet-router/tailscaled.sock whois --json 100.65.172.123", - "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 - } - }, "netmap": { - "SelfNode": { - "ID": 7489538288452506, - "StableID": "nTPEqJU2V121CNTRL", - "Name": "subnet-router.tail78f774.ts.net.", - "User": 7489538288452506, - "Key": "nodekey:887ae2351c09c3b952f1f42bdac4095ec396ebf15824a746e4193c003e9c8e3c", - "DiscoKey": "discokey:9e3167ceaf53735a2fcaa7d3a85ad3a6118274deb448326d594849275014cc56", - "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:58597", "10.65.0.27:58597", "172.17.0.1:58597"], - "Hostinfo": { - "Hostname": "subnet-router", - "RoutableIPs": ["10.33.0.0/16"], - "RequestTags": ["tag:router"], - "Services": [ - { "Proto": "peerapi4", "Port": 63250 }, - { "Proto": "peerapi6", "Port": 63250 }, - { "Proto": "peerapi-dns-proxy", "Port": 1 } - ] - }, - "Created": "2026-02-23T00:13:15.731478784Z", - "Tags": ["tag:router"], - "MachineAuthorized": true, - "CapMap": { - "https://tailscale.com/cap/file-sharing": null, - "https://tailscale.com/cap/is-owner": null, - "https://tailscale.com/cap/ssh": null, - "https://tailscale.com/cap/tailnet-lock": null, - "probe-udp-lifetime": null, - "ssh-behavior-v1": null, - "ssh-env-vars": null, - "store-appc-routes": null, - "tailnet-display-name": ["kratail2tid@passkey"] - }, - "ComputedName": "subnet-router", - "ComputedNameWithHost": "subnet-router" - }, - "AllCaps": [ - "tailnet-display-name", - "ssh-behavior-v1", - "ssh-env-vars", - "https://tailscale.com/cap/is-owner", - "https://tailscale.com/cap/tailnet-lock", - "store-appc-routes", - "https://tailscale.com/cap/file-sharing", - "https://tailscale.com/cap/ssh", - "probe-udp-lifetime" - ], - "NodeKey": "nodekey:887ae2351c09c3b952f1f42bdac4095ec396ebf15824a746e4193c003e9c8e3c", - "MachineKey": "mkey:324efa54cc51a7b4f266f6a236904c755d32b6e547a76ad3c1d1e9d348de682a", "Peers": [], - "DNS": { - "Routes": { - "tail78f774.ts.net.": null, - "ts.net.": [{ "Addr": "199.247.155.53" }, { "Addr": "2620:111:8007::53" }] - }, - "Domains": ["tail78f774.ts.net"], - "Proxied": true, - "ExitNodeFilteredSet": [".ts.net", ".tailscale.net"] - }, - "PacketFilter": [], - "PacketFilterRules": null, - "SSHPolicy": { "rules": [] }, - "CollectServices": false, - "DERPMap": { - "Regions": { - "1": { - "RegionID": 1, - "RegionCode": "nyc", - "RegionName": "New York City", - "Latitude": 40.7128, - "Longitude": -74.006, - "Nodes": [ - { - "Name": "1h", - "RegionID": 1, - "HostName": "derp1h.tailscale.com", - "IPv4": "199.38.181.93", - "IPv6": "2607:f740:f::afd", - "CanPort80": true - }, - { - "Name": "1g", - "RegionID": 1, - "HostName": "derp1g.tailscale.com", - "IPv4": "209.177.145.120", - "IPv6": "2607:f740:f::3eb", - "CanPort80": true - }, - { - "Name": "1i", - "RegionID": 1, - "HostName": "derp1i.tailscale.com", - "IPv4": "199.38.181.103", - "IPv6": "2607:f740:f::e19", - "CanPort80": true - }, - { - "Name": "1f", - "RegionID": 1, - "HostName": "derp1f.tailscale.com", - "IPv4": "199.38.181.104", - "IPv6": "2607:f740:f::bc", - "CanPort80": true - } - ] - }, - "10": { - "RegionID": 10, - "RegionCode": "sea", - "RegionName": "Seattle", - "Latitude": 47.609722, - "Longitude": -122.333056, - "Nodes": [ - { - "Name": "10c", - "RegionID": 10, - "HostName": "derp10c.tailscale.com", - "IPv4": "192.73.240.121", - "IPv6": "2607:f740:14::40c", - "CanPort80": true - }, - { - "Name": "10d", - "RegionID": 10, - "HostName": "derp10d.tailscale.com", - "IPv4": "192.73.240.132", - "IPv6": "2607:f740:14::500", - "CanPort80": true - }, - { - "Name": "10b", - "RegionID": 10, - "HostName": "derp10b.tailscale.com", - "IPv4": "192.73.240.161", - "IPv6": "2607:f740:14::61c", - "CanPort80": true - } - ] - }, - "11": { - "RegionID": 11, - "RegionCode": "sao", - "RegionName": "São Paulo", - "Latitude": -23.55, - "Longitude": -46.633333, - "Nodes": [ - { - "Name": "11f", - "RegionID": 11, - "HostName": "derp11f.tailscale.com", - "IPv4": "172.237.61.197", - "IPv6": "2600:3c0d::2000:3bff:fe44:6166", - "CanPort80": true - }, - { - "Name": "11g", - "RegionID": 11, - "HostName": "derp11g.tailscale.com", - "IPv4": "172.237.61.190", - "IPv6": "2600:3c0d::2000:62ff:febe:2e67", - "CanPort80": true - }, - { - "Name": "11e", - "RegionID": 11, - "HostName": "derp11e.tailscale.com", - "IPv4": "172.237.61.194", - "IPv6": "2600:3c0d::2000:d2ff:fe43:1790", - "CanPort80": true - } - ] - }, - "12": { - "RegionID": 12, - "RegionCode": "ord", - "RegionName": "Chicago", - "Latitude": 41.881944, - "Longitude": -87.627778, - "Nodes": [ - { - "Name": "12e", - "RegionID": 12, - "HostName": "derp12e.tailscale.com", - "IPv4": "209.177.158.15", - "IPv6": "2607:f740:e::b17", - "CanPort80": true - }, - { - "Name": "12f", - "RegionID": 12, - "HostName": "derp12f.tailscale.com", - "IPv4": "199.38.182.118", - "IPv6": "2607:f740:e::4c8", - "CanPort80": true - }, - { - "Name": "12d", - "RegionID": 12, - "HostName": "derp12d.tailscale.com", - "IPv4": "209.177.158.246", - "IPv6": "2607:f740:e::811", - "CanPort80": true - } - ] - }, - "13": { - "RegionID": 13, - "RegionCode": "den", - "RegionName": "Denver", - "Latitude": 39.7392, - "Longitude": -104.9849, - "Nodes": [ - { - "Name": "13c", - "RegionID": 13, - "HostName": "derp13c.tailscale.com", - "IPv4": "192.73.242.28", - "IPv6": "2607:f740:16::5c", - "CanPort80": true - }, - { - "Name": "13d", - "RegionID": 13, - "HostName": "derp13d.tailscale.com", - "IPv4": "192.73.242.204", - "IPv6": "2607:f740:16::c23", - "CanPort80": true - }, - { - "Name": "13b", - "RegionID": 13, - "HostName": "derp13b.tailscale.com", - "IPv4": "192.73.242.187", - "IPv6": "2607:f740:16::640", - "CanPort80": true - } - ] - }, - "14": { - "RegionID": 14, - "RegionCode": "ams", - "RegionName": "Amsterdam", - "Latitude": 52.372778, - "Longitude": 4.893611, - "Nodes": [ - { - "Name": "14c", - "RegionID": 14, - "HostName": "derp14c.tailscale.com", - "IPv4": "176.58.93.147", - "IPv6": "2a00:dd80:3c::b09", - "CanPort80": true - }, - { - "Name": "14d", - "RegionID": 14, - "HostName": "derp14d.tailscale.com", - "IPv4": "176.58.93.154", - "IPv6": "2a00:dd80:3c::3d5", - "CanPort80": true - }, - { - "Name": "14b", - "RegionID": 14, - "HostName": "derp14b.tailscale.com", - "IPv4": "176.58.93.248", - "IPv6": "2a00:dd80:3c::807", - "CanPort80": true - } - ] - }, - "15": { - "RegionID": 15, - "RegionCode": "jnb", - "RegionName": "Johannesburg", - "Latitude": -26.204444, - "Longitude": 28.045556, - "Nodes": [ - { - "Name": "15c", - "RegionID": 15, - "HostName": "derp15c.tailscale.com", - "IPv4": "102.67.165.185", - "IPv6": "2c0f:edb0:0:10::b59", - "CanPort80": true - }, - { - "Name": "15d", - "RegionID": 15, - "HostName": "derp15d.tailscale.com", - "IPv4": "102.67.165.36", - "IPv6": "2c0f:edb0:0:10::599", - "CanPort80": true - }, - { - "Name": "15b", - "RegionID": 15, - "HostName": "derp15b.tailscale.com", - "IPv4": "102.67.165.90", - "IPv6": "2c0f:edb0:0:10::963", - "CanPort80": true - } - ] - }, - "16": { - "RegionID": 16, - "RegionCode": "mia", - "RegionName": "Miami", - "Latitude": 25.78, - "Longitude": -80.21, - "Nodes": [ - { - "Name": "16c", - "RegionID": 16, - "HostName": "derp16c.tailscale.com", - "IPv4": "192.73.243.229", - "IPv6": "2607:f740:17::4e4", - "CanPort80": true - }, - { - "Name": "16d", - "RegionID": 16, - "HostName": "derp16d.tailscale.com", - "IPv4": "192.73.243.141", - "IPv6": "2607:f740:17::475", - "CanPort80": true - }, - { - "Name": "16b", - "RegionID": 16, - "HostName": "derp16b.tailscale.com", - "IPv4": "192.73.243.135", - "IPv6": "2607:f740:17::476", - "CanPort80": true - } - ] - }, - "17": { - "RegionID": 17, - "RegionCode": "lax", - "RegionName": "Los Angeles", - "Latitude": 34.05, - "Longitude": -118.25, - "Nodes": [ - { - "Name": "17c", - "RegionID": 17, - "HostName": "derp17c.tailscale.com", - "IPv4": "208.111.40.12", - "IPv6": "2607:f740:c::10", - "CanPort80": true - }, - { - "Name": "17d", - "RegionID": 17, - "HostName": "derp17d.tailscale.com", - "IPv4": "208.111.40.216", - "IPv6": "2607:f740:c::e1b", - "CanPort80": true - }, - { - "Name": "17b", - "RegionID": 17, - "HostName": "derp17b.tailscale.com", - "IPv4": "192.73.244.245", - "IPv6": "2607:f740:c::646", - "CanPort80": true - } - ] - }, - "18": { - "RegionID": 18, - "RegionCode": "par", - "RegionName": "Paris", - "Latitude": 48.856667, - "Longitude": 2.352222, - "Nodes": [ - { - "Name": "18c", - "RegionID": 18, - "HostName": "derp18c.tailscale.com", - "IPv4": "176.58.90.207", - "IPv6": "2a00:dd80:3e::c19", - "CanPort80": true - }, - { - "Name": "18d", - "RegionID": 18, - "HostName": "derp18d.tailscale.com", - "IPv4": "176.58.90.104", - "IPv6": "2a00:dd80:3e::f2e", - "CanPort80": true - }, - { - "Name": "18b", - "RegionID": 18, - "HostName": "derp18b.tailscale.com", - "IPv4": "176.58.90.147", - "IPv6": "2a00:dd80:3e::363", - "CanPort80": true - } - ] - }, - "19": { - "RegionID": 19, - "RegionCode": "mad", - "RegionName": "Madrid", - "Latitude": 40.416944, - "Longitude": -3.703333, - "Nodes": [ - { - "Name": "19c", - "RegionID": 19, - "HostName": "derp19c.tailscale.com", - "IPv4": "45.159.97.61", - "IPv6": "2a00:dd80:14:10::20", - "CanPort80": true - }, - { - "Name": "19d", - "RegionID": 19, - "HostName": "derp19d.tailscale.com", - "IPv4": "45.159.97.233", - "IPv6": "2a00:dd80:14:10::34a", - "CanPort80": true - }, - { - "Name": "19b", - "RegionID": 19, - "HostName": "derp19b.tailscale.com", - "IPv4": "45.159.97.144", - "IPv6": "2a00:dd80:14:10::335", - "CanPort80": true - } - ] - }, - "2": { - "RegionID": 2, - "RegionCode": "sfo", - "RegionName": "San Francisco", - "Latitude": 37.7775, - "Longitude": -122.416389, - "Nodes": [ - { - "Name": "2e", - "RegionID": 2, - "HostName": "derp2e.tailscale.com", - "IPv4": "192.73.252.134", - "IPv6": "2607:f740:0:3f::44c", - "CanPort80": true - }, - { - "Name": "2f", - "RegionID": 2, - "HostName": "derp2f.tailscale.com", - "IPv4": "208.111.34.178", - "IPv6": "2607:f740:0:3f::f4", - "CanPort80": true - }, - { - "Name": "2d", - "RegionID": 2, - "HostName": "derp2d.tailscale.com", - "IPv4": "192.73.252.65", - "IPv6": "2607:f740:0:3f::287", - "CanPort80": true - } - ] - }, - "20": { - "RegionID": 20, - "RegionCode": "hkg", - "RegionName": "Hong Kong", - "Latitude": 22.3193, - "Longitude": 114.1694, - "Nodes": [ - { - "Name": "20c", - "RegionID": 20, - "HostName": "derp20c.tailscale.com", - "IPv4": "205.147.105.30", - "IPv6": "2403:2500:8000:1::5fb", - "CanPort80": true - }, - { - "Name": "20d", - "RegionID": 20, - "HostName": "derp20d.tailscale.com", - "IPv4": "205.147.105.78", - "IPv6": "2403:2500:8000:1::e9a", - "CanPort80": true - }, - { - "Name": "20b", - "RegionID": 20, - "HostName": "derp20b.tailscale.com", - "IPv4": "103.6.84.152", - "IPv6": "2403:2500:8000:1::ef6", - "CanPort80": true - } - ] - }, - "21": { - "RegionID": 21, - "RegionCode": "tor", - "RegionName": "Toronto", - "Latitude": 43.741667, - "Longitude": -79.373333, - "Nodes": [ - { - "Name": "21c", - "RegionID": 21, - "HostName": "derp21c.tailscale.com", - "IPv4": "162.248.221.215", - "IPv6": "2607:f740:50::f10", - "CanPort80": true - }, - { - "Name": "21d", - "RegionID": 21, - "HostName": "derp21d.tailscale.com", - "IPv4": "162.248.221.248", - "IPv6": "2607:f740:50::ca4", - "CanPort80": true - }, - { - "Name": "21b", - "RegionID": 21, - "HostName": "derp21b.tailscale.com", - "IPv4": "162.248.221.199", - "IPv6": "2607:f740:50::1d1", - "CanPort80": true - } - ] - }, - "22": { - "RegionID": 22, - "RegionCode": "waw", - "RegionName": "Warsaw", - "Latitude": 52.23, - "Longitude": 21.011111, - "Nodes": [ - { - "Name": "22c", - "RegionID": 22, - "HostName": "derp22c.tailscale.com", - "IPv4": "45.159.98.253", - "IPv6": "2a00:dd80:40:100::3f", - "CanPort80": true - }, - { - "Name": "22d", - "RegionID": 22, - "HostName": "derp22d.tailscale.com", - "IPv4": "45.159.98.145", - "IPv6": "2a00:dd80:40:100::211", - "CanPort80": true - }, - { - "Name": "22b", - "RegionID": 22, - "HostName": "derp22b.tailscale.com", - "IPv4": "45.159.98.196", - "IPv6": "2a00:dd80:40:100::316", - "CanPort80": true - } - ] - }, - "23": { - "RegionID": 23, - "RegionCode": "dbi", - "RegionName": "Dubai", - "Latitude": 25.263056, - "Longitude": 55.297222, - "Nodes": [ - { - "Name": "23c", - "RegionID": 23, - "HostName": "derp23c.tailscale.com", - "IPv4": "185.34.3.207", - "IPv6": "2a00:dd80:3f:100::a50", - "CanPort80": true - }, - { - "Name": "23d", - "RegionID": 23, - "HostName": "derp23d.tailscale.com", - "IPv4": "185.34.3.75", - "IPv6": "2a00:dd80:3f:100::97e", - "CanPort80": true - }, - { - "Name": "23b", - "RegionID": 23, - "HostName": "derp23b.tailscale.com", - "IPv4": "185.34.3.232", - "IPv6": "2a00:dd80:3f:100::76f", - "CanPort80": true - } - ] - }, - "24": { - "RegionID": 24, - "RegionCode": "hnl", - "RegionName": "Honolulu", - "Latitude": 21.306944, - "Longitude": -157.858333, - "Nodes": [ - { - "Name": "24c", - "RegionID": 24, - "HostName": "derp24c.tailscale.com", - "IPv4": "208.83.233.233", - "IPv6": "2001:19f0:c000:c591:5400:04ff:fe26:2c5f", - "CanPort80": true - }, - { - "Name": "24d", - "RegionID": 24, - "HostName": "derp24d.tailscale.com", - "IPv4": "208.72.155.133", - "IPv6": "2001:19f0:c000:c564:5400:04ff:fe26:2ba8", - "CanPort80": true - }, - { - "Name": "24b", - "RegionID": 24, - "HostName": "derp24b.tailscale.com", - "IPv4": "208.83.234.151", - "IPv6": "2001:19f0:c000:c586:5400:04ff:fe26:2ba6", - "CanPort80": true - } - ] - }, - "25": { - "RegionID": 25, - "RegionCode": "nai", - "RegionName": "Nairobi", - "Latitude": -1.286389, - "Longitude": 36.817222, - "Nodes": [ - { - "Name": "25c", - "RegionID": 25, - "HostName": "derp25c.tailscale.com", - "IPv4": "102.67.167.37", - "IPv6": "2c0f:edb0:2000:1::2c7", - "CanPort80": true - }, - { - "Name": "25d", - "RegionID": 25, - "HostName": "derp25d.tailscale.com", - "IPv4": "102.67.167.188", - "IPv6": "2c0f:edb0:2000:1::188", - "CanPort80": true - }, - { - "Name": "25b", - "RegionID": 25, - "HostName": "derp25b.tailscale.com", - "IPv4": "102.67.167.245", - "IPv6": "2c0f:edb0:2000:1::2e9", - "CanPort80": true - } - ] - }, - "26": { - "RegionID": 26, - "RegionCode": "nue", - "RegionName": "Nuremberg", - "Latitude": 49.453889, - "Longitude": 11.0775, - "Nodes": [ - { - "Name": "26c", - "RegionID": 26, - "HostName": "derp26c.tailscale.com", - "IPv4": "49.12.193.137", - "IPv6": "2a01:4f8:1c1c:5c70::1", - "CanPort80": true - }, - { - "Name": "26d", - "RegionID": 26, - "HostName": "derp26d.tailscale.com", - "IPv4": "49.13.204.141", - "IPv6": "2a01:4f8:1c0c:7d06::1", - "CanPort80": true - }, - { - "Name": "26b", - "RegionID": 26, - "HostName": "derp26b.tailscale.com", - "IPv4": "167.235.72.200", - "IPv6": "2a01:4f8:1c1c:47b6::1", - "CanPort80": true - } - ] - }, - "27": { - "RegionID": 27, - "RegionCode": "iad", - "RegionName": "Ashburn", - "Latitude": 39.03, - "Longitude": -77.471111, - "Nodes": [ - { - "Name": "27d", - "RegionID": 27, - "HostName": "derp27d.tailscale.com", - "IPv4": "178.156.152.106", - "IPv6": "2a01:4ff:f0:3c8e::1", - "CanPort80": true - }, - { - "Name": "27c", - "RegionID": 27, - "HostName": "derp27c.tailscale.com", - "IPv4": "178.156.152.91", - "IPv6": "2a01:4ff:f0:3913::1", - "CanPort80": true - }, - { - "Name": "27e", - "RegionID": 27, - "HostName": "derp27e.tailscale.com", - "IPv4": "178.156.134.232", - "IPv6": "2a01:4ff:f0:28d4::1", - "CanPort80": true - }, - { - "Name": "27b", - "RegionID": 27, - "HostName": "derp27b.tailscale.com", - "IPv4": "5.161.218.233", - "IPv6": "2a01:4ff:f0:3db9::1", - "CanPort80": true - } - ] - }, - "28": { - "RegionID": 28, - "RegionCode": "hel", - "RegionName": "Helsinki", - "Latitude": 60.170833, - "Longitude": 24.9375, - "Nodes": [ - { - "Name": "28c", - "RegionID": 28, - "HostName": "derp28c.tailscale.com", - "IPv4": "95.217.2.165", - "IPv6": "2a01:4f9:c012:cd74::1", - "CanPort80": true - }, - { - "Name": "28d", - "RegionID": 28, - "HostName": "derp28d.tailscale.com", - "IPv4": "157.180.28.32", - "IPv6": "2a01:4f9:c012:2e5b::1", - "CanPort80": true - }, - { - "Name": "28b", - "RegionID": 28, - "HostName": "derp28b.tailscale.com", - "IPv4": "65.109.143.62", - "IPv6": "2a01:4f9:c012:d55c::1", - "CanPort80": true - } - ] - }, - "3": { - "RegionID": 3, - "RegionCode": "sin", - "RegionName": "Singapore", - "Latitude": 1.3521, - "Longitude": 103.8198, - "Nodes": [ - { - "Name": "3g", - "RegionID": 3, - "HostName": "derp3g.tailscale.com", - "IPv4": "172.237.72.79", - "IPv6": "2600:3c15::2000:adff:fe08:6fab", - "CanPort80": true - }, - { - "Name": "3f", - "RegionID": 3, - "HostName": "derp3f.tailscale.com", - "IPv4": "172.237.72.8", - "IPv6": "2600:3c15::2000:53ff:fe48:a668", - "CanPort80": true - }, - { - "Name": "3h", - "RegionID": 3, - "HostName": "derp3h.tailscale.com", - "IPv4": "172.237.66.30", - "IPv6": "2600:3c15::2000:3dff:fe44:50aa", - "CanPort80": true - }, - { - "Name": "3e", - "RegionID": 3, - "HostName": "derp3e.tailscale.com", - "IPv4": "172.237.72.43", - "IPv6": "2600:3c15::2000:6cff:fee4:d799", - "CanPort80": true - } - ] - }, - "4": { - "RegionID": 4, - "RegionCode": "fra", - "RegionName": "Frankfurt", - "Latitude": 50.1109, - "Longitude": 8.6821, - "Nodes": [ - { - "Name": "4h", - "RegionID": 4, - "HostName": "derp4h.tailscale.com", - "IPv4": "185.40.234.77", - "IPv6": "2a00:dd80:20::bcf", - "CanPort80": true - }, - { - "Name": "4g", - "RegionID": 4, - "HostName": "derp4g.tailscale.com", - "IPv4": "185.40.234.113", - "IPv6": "2a00:dd80:20::8f", - "CanPort80": true - }, - { - "Name": "4i", - "RegionID": 4, - "HostName": "derp4i.tailscale.com", - "IPv4": "185.40.234.53", - "IPv6": "2a00:dd80:20::8a6", - "CanPort80": true - }, - { - "Name": "4f", - "RegionID": 4, - "HostName": "derp4f.tailscale.com", - "IPv4": "185.40.234.219", - "IPv6": "2a00:dd80:20::a25", - "CanPort80": true - } - ] - }, - "5": { - "RegionID": 5, - "RegionCode": "syd", - "RegionName": "Sydney", - "Latitude": -33.867778, - "Longitude": 151.21, - "Nodes": [ - { - "Name": "5f", - "RegionID": 5, - "HostName": "derp5f.tailscale.com", - "IPv4": "172.105.166.103", - "IPv6": "2400:8907::2000:ccff:fe1f:80da", - "CanPort80": true - }, - { - "Name": "5g", - "RegionID": 5, - "HostName": "derp5g.tailscale.com", - "IPv4": "172.105.169.57", - "IPv6": "2400:8907::2000:2fff:fea7:57f4", - "CanPort80": true - }, - { - "Name": "5e", - "RegionID": 5, - "HostName": "derp5e.tailscale.com", - "IPv4": "172.105.179.230", - "IPv6": "2400:8907::2000:ceff:fe8d:4f4e", - "CanPort80": true - } - ] - }, - "6": { - "RegionID": 6, - "RegionCode": "blr", - "RegionName": "Bengaluru", - "Latitude": 12.9716, - "Longitude": 77.5946, - "Nodes": [ - { - "Name": "6a", - "RegionID": 6, - "HostName": "derp6.tailscale.com", - "IPv4": "68.183.90.120", - "IPv6": "2400:6180:100:d0::982:d001", - "CanPort80": true - } - ] - }, - "7": { - "RegionID": 7, - "RegionCode": "tok", - "RegionName": "Tokyo", - "Latitude": 35.6764, - "Longitude": 139.65, - "Nodes": [ - { - "Name": "7g", - "RegionID": 7, - "HostName": "derp7g.tailscale.com", - "IPv4": "172.238.6.179", - "IPv6": "2600:3c18::2000:3fff:fe80:3ebd", - "CanPort80": true - }, - { - "Name": "7f", - "RegionID": 7, - "HostName": "derp7f.tailscale.com", - "IPv4": "172.238.6.34", - "IPv6": "2600:3c18::2000:acff:fe8e:3ed5", - "CanPort80": true - }, - { - "Name": "7h", - "RegionID": 7, - "HostName": "derp7h.tailscale.com", - "IPv4": "172.237.28.183", - "IPv6": "2600:3c18::2000:b1ff:fea9:4560", - "CanPort80": true - }, - { - "Name": "7e", - "RegionID": 7, - "HostName": "derp7e.tailscale.com", - "IPv4": "172.238.6.180", - "IPv6": "2600:3c18::2000:60ff:fe0f:6e83", - "STUNOnly": true, - "CanPort80": true - } - ] - }, - "8": { - "RegionID": 8, - "RegionCode": "lhr", - "RegionName": "London", - "Latitude": 51.5072, - "Longitude": 0.1276, - "Nodes": [ - { - "Name": "8f", - "RegionID": 8, - "HostName": "derp8f.tailscale.com", - "IPv4": "176.58.88.183", - "IPv6": "2a00:dd80:3a::dfa", - "CanPort80": true - }, - { - "Name": "8g", - "RegionID": 8, - "HostName": "derp8g.tailscale.com", - "IPv4": "176.58.92.254", - "IPv6": "2a00:dd80:3a::ed", - "CanPort80": true - }, - { - "Name": "8e", - "RegionID": 8, - "HostName": "derp8e.tailscale.com", - "IPv4": "176.58.92.144", - "IPv6": "2a00:dd80:3a::b33", - "CanPort80": true - } - ] - }, - "9": { - "RegionID": 9, - "RegionCode": "dfw", - "RegionName": "Dallas", - "Latitude": 32.779167, - "Longitude": -96.808889, - "Nodes": [ - { - "Name": "9e", - "RegionID": 9, - "HostName": "derp9e.tailscale.com", - "IPv4": "192.73.248.83", - "IPv6": "2607:f740:100::359", - "CanPort80": true - }, - { - "Name": "9f", - "RegionID": 9, - "HostName": "derp9f.tailscale.com", - "IPv4": "209.177.156.197", - "IPv6": "2607:f740:100::cad", - "CanPort80": true - }, - { - "Name": "9d", - "RegionID": 9, - "HostName": "derp9d.tailscale.com", - "IPv4": "209.177.156.94", - "IPv6": "2607:f740:100::c05", - "CanPort80": true - } - ] - } - } - }, - "DisplayMessages": null, - "TKAEnabled": false, - "TKAHead": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", - "Domain": "kratail2tid@passkey", - "DomainAuditLogID": "", - "UserProfiles": { - "7489538288452506": { - "ID": 7489538288452506, - "LoginName": "subnet-router.tail78f774.ts.net", - "DisplayName": "subnet-router" - } - } + "PacketFilterRules": 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.124.195.93": { - "peer_name": "exit-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-client/tailscaled.sock whois --json 100.124.195.93", - "response": null - }, - "100.116.18.24": { - "peer_name": "exit-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-client/tailscaled.sock whois --json 100.116.18.24", - "response": null - }, - "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.107.162.14": { - "peer_name": "group-a-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-client/tailscaled.sock whois --json 100.107.162.14", - "response": null - }, - "100.77.135.18": { - "peer_name": "group-b-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-client/tailscaled.sock whois --json 100.77.135.18", - "response": null - }, - "100.105.127.107": { - "peer_name": "multi-exit-router", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-client/tailscaled.sock whois --json 100.105.127.107", - "response": null - }, - "100.109.43.124": { - "peer_name": "router-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-client/tailscaled.sock whois --json 100.109.43.124", - "response": null - }, - "100.65.172.123": { - "peer_name": "router-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-client/tailscaled.sock whois --json 100.65.172.123", - "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 - } - }, "netmap": { - "SelfNode": { - "ID": 4031348162889210, - "StableID": "nf7BTTgoUY11CNTRL", - "Name": "tagged-client.tail78f774.ts.net.", - "User": 4031348162889210, - "Key": "nodekey:3011e53353e49142ea56ae11f81e0dceae0d667093d04ee086dcb1e9c5d3c844", - "DiscoKey": "discokey:64af337a7e8b61dce500da3b8f7d0a95fc6fe0e57c2f9e57b9b484a9b4acbe1e", - "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:47143", "10.65.0.27:47143", "172.17.0.1:47143"], - "Hostinfo": { - "Hostname": "tagged-client", - "RequestTags": ["tag:client"], - "Services": [ - { "Proto": "peerapi4", "Port": 41378 }, - { "Proto": "peerapi6", "Port": 41378 }, - { "Proto": "peerapi-dns-proxy", "Port": 1 } - ] - }, - "Created": "2026-02-23T00:13:11.017324028Z", - "Tags": ["tag:client"], - "MachineAuthorized": true, - "CapMap": { - "https://tailscale.com/cap/file-sharing": null, - "https://tailscale.com/cap/is-owner": null, - "https://tailscale.com/cap/ssh": null, - "https://tailscale.com/cap/tailnet-lock": null, - "probe-udp-lifetime": null, - "ssh-behavior-v1": null, - "ssh-env-vars": null, - "store-appc-routes": null, - "tailnet-display-name": ["kratail2tid@passkey"] - }, - "ComputedName": "tagged-client", - "ComputedNameWithHost": "tagged-client" - }, - "AllCaps": [ - "ssh-env-vars", - "tailnet-display-name", - "https://tailscale.com/cap/tailnet-lock", - "https://tailscale.com/cap/ssh", - "https://tailscale.com/cap/is-owner", - "probe-udp-lifetime", - "store-appc-routes", - "https://tailscale.com/cap/file-sharing", - "ssh-behavior-v1" - ], - "NodeKey": "nodekey:3011e53353e49142ea56ae11f81e0dceae0d667093d04ee086dcb1e9c5d3c844", - "MachineKey": "mkey:92af46ce21e67878315fe620545c207854ab6cec2d03adc106c50f64f9692711", "Peers": [], - "DNS": { - "Routes": { - "tail78f774.ts.net.": null, - "ts.net.": [{ "Addr": "199.247.155.53" }, { "Addr": "2620:111:8007::53" }] - }, - "Domains": ["tail78f774.ts.net"], - "Proxied": true, - "ExitNodeFilteredSet": [".ts.net", ".tailscale.net"] - }, - "PacketFilter": [], - "PacketFilterRules": null, - "SSHPolicy": { "rules": [] }, - "CollectServices": false, - "DERPMap": { - "Regions": { - "1": { - "RegionID": 1, - "RegionCode": "nyc", - "RegionName": "New York City", - "Latitude": 40.7128, - "Longitude": -74.006, - "Nodes": [ - { - "Name": "1h", - "RegionID": 1, - "HostName": "derp1h.tailscale.com", - "IPv4": "199.38.181.93", - "IPv6": "2607:f740:f::afd", - "CanPort80": true - }, - { - "Name": "1g", - "RegionID": 1, - "HostName": "derp1g.tailscale.com", - "IPv4": "209.177.145.120", - "IPv6": "2607:f740:f::3eb", - "CanPort80": true - }, - { - "Name": "1i", - "RegionID": 1, - "HostName": "derp1i.tailscale.com", - "IPv4": "199.38.181.103", - "IPv6": "2607:f740:f::e19", - "CanPort80": true - }, - { - "Name": "1f", - "RegionID": 1, - "HostName": "derp1f.tailscale.com", - "IPv4": "199.38.181.104", - "IPv6": "2607:f740:f::bc", - "CanPort80": true - } - ] - }, - "10": { - "RegionID": 10, - "RegionCode": "sea", - "RegionName": "Seattle", - "Latitude": 47.609722, - "Longitude": -122.333056, - "Nodes": [ - { - "Name": "10c", - "RegionID": 10, - "HostName": "derp10c.tailscale.com", - "IPv4": "192.73.240.121", - "IPv6": "2607:f740:14::40c", - "CanPort80": true - }, - { - "Name": "10d", - "RegionID": 10, - "HostName": "derp10d.tailscale.com", - "IPv4": "192.73.240.132", - "IPv6": "2607:f740:14::500", - "CanPort80": true - }, - { - "Name": "10b", - "RegionID": 10, - "HostName": "derp10b.tailscale.com", - "IPv4": "192.73.240.161", - "IPv6": "2607:f740:14::61c", - "CanPort80": true - } - ] - }, - "11": { - "RegionID": 11, - "RegionCode": "sao", - "RegionName": "São Paulo", - "Latitude": -23.55, - "Longitude": -46.633333, - "Nodes": [ - { - "Name": "11f", - "RegionID": 11, - "HostName": "derp11f.tailscale.com", - "IPv4": "172.237.61.197", - "IPv6": "2600:3c0d::2000:3bff:fe44:6166", - "CanPort80": true - }, - { - "Name": "11g", - "RegionID": 11, - "HostName": "derp11g.tailscale.com", - "IPv4": "172.237.61.190", - "IPv6": "2600:3c0d::2000:62ff:febe:2e67", - "CanPort80": true - }, - { - "Name": "11e", - "RegionID": 11, - "HostName": "derp11e.tailscale.com", - "IPv4": "172.237.61.194", - "IPv6": "2600:3c0d::2000:d2ff:fe43:1790", - "CanPort80": true - } - ] - }, - "12": { - "RegionID": 12, - "RegionCode": "ord", - "RegionName": "Chicago", - "Latitude": 41.881944, - "Longitude": -87.627778, - "Nodes": [ - { - "Name": "12e", - "RegionID": 12, - "HostName": "derp12e.tailscale.com", - "IPv4": "209.177.158.15", - "IPv6": "2607:f740:e::b17", - "CanPort80": true - }, - { - "Name": "12f", - "RegionID": 12, - "HostName": "derp12f.tailscale.com", - "IPv4": "199.38.182.118", - "IPv6": "2607:f740:e::4c8", - "CanPort80": true - }, - { - "Name": "12d", - "RegionID": 12, - "HostName": "derp12d.tailscale.com", - "IPv4": "209.177.158.246", - "IPv6": "2607:f740:e::811", - "CanPort80": true - } - ] - }, - "13": { - "RegionID": 13, - "RegionCode": "den", - "RegionName": "Denver", - "Latitude": 39.7392, - "Longitude": -104.9849, - "Nodes": [ - { - "Name": "13c", - "RegionID": 13, - "HostName": "derp13c.tailscale.com", - "IPv4": "192.73.242.28", - "IPv6": "2607:f740:16::5c", - "CanPort80": true - }, - { - "Name": "13d", - "RegionID": 13, - "HostName": "derp13d.tailscale.com", - "IPv4": "192.73.242.204", - "IPv6": "2607:f740:16::c23", - "CanPort80": true - }, - { - "Name": "13b", - "RegionID": 13, - "HostName": "derp13b.tailscale.com", - "IPv4": "192.73.242.187", - "IPv6": "2607:f740:16::640", - "CanPort80": true - } - ] - }, - "14": { - "RegionID": 14, - "RegionCode": "ams", - "RegionName": "Amsterdam", - "Latitude": 52.372778, - "Longitude": 4.893611, - "Nodes": [ - { - "Name": "14c", - "RegionID": 14, - "HostName": "derp14c.tailscale.com", - "IPv4": "176.58.93.147", - "IPv6": "2a00:dd80:3c::b09", - "CanPort80": true - }, - { - "Name": "14d", - "RegionID": 14, - "HostName": "derp14d.tailscale.com", - "IPv4": "176.58.93.154", - "IPv6": "2a00:dd80:3c::3d5", - "CanPort80": true - }, - { - "Name": "14b", - "RegionID": 14, - "HostName": "derp14b.tailscale.com", - "IPv4": "176.58.93.248", - "IPv6": "2a00:dd80:3c::807", - "CanPort80": true - } - ] - }, - "15": { - "RegionID": 15, - "RegionCode": "jnb", - "RegionName": "Johannesburg", - "Latitude": -26.204444, - "Longitude": 28.045556, - "Nodes": [ - { - "Name": "15c", - "RegionID": 15, - "HostName": "derp15c.tailscale.com", - "IPv4": "102.67.165.185", - "IPv6": "2c0f:edb0:0:10::b59", - "CanPort80": true - }, - { - "Name": "15d", - "RegionID": 15, - "HostName": "derp15d.tailscale.com", - "IPv4": "102.67.165.36", - "IPv6": "2c0f:edb0:0:10::599", - "CanPort80": true - }, - { - "Name": "15b", - "RegionID": 15, - "HostName": "derp15b.tailscale.com", - "IPv4": "102.67.165.90", - "IPv6": "2c0f:edb0:0:10::963", - "CanPort80": true - } - ] - }, - "16": { - "RegionID": 16, - "RegionCode": "mia", - "RegionName": "Miami", - "Latitude": 25.78, - "Longitude": -80.21, - "Nodes": [ - { - "Name": "16c", - "RegionID": 16, - "HostName": "derp16c.tailscale.com", - "IPv4": "192.73.243.229", - "IPv6": "2607:f740:17::4e4", - "CanPort80": true - }, - { - "Name": "16d", - "RegionID": 16, - "HostName": "derp16d.tailscale.com", - "IPv4": "192.73.243.141", - "IPv6": "2607:f740:17::475", - "CanPort80": true - }, - { - "Name": "16b", - "RegionID": 16, - "HostName": "derp16b.tailscale.com", - "IPv4": "192.73.243.135", - "IPv6": "2607:f740:17::476", - "CanPort80": true - } - ] - }, - "17": { - "RegionID": 17, - "RegionCode": "lax", - "RegionName": "Los Angeles", - "Latitude": 34.05, - "Longitude": -118.25, - "Nodes": [ - { - "Name": "17c", - "RegionID": 17, - "HostName": "derp17c.tailscale.com", - "IPv4": "208.111.40.12", - "IPv6": "2607:f740:c::10", - "CanPort80": true - }, - { - "Name": "17d", - "RegionID": 17, - "HostName": "derp17d.tailscale.com", - "IPv4": "208.111.40.216", - "IPv6": "2607:f740:c::e1b", - "CanPort80": true - }, - { - "Name": "17b", - "RegionID": 17, - "HostName": "derp17b.tailscale.com", - "IPv4": "192.73.244.245", - "IPv6": "2607:f740:c::646", - "CanPort80": true - } - ] - }, - "18": { - "RegionID": 18, - "RegionCode": "par", - "RegionName": "Paris", - "Latitude": 48.856667, - "Longitude": 2.352222, - "Nodes": [ - { - "Name": "18c", - "RegionID": 18, - "HostName": "derp18c.tailscale.com", - "IPv4": "176.58.90.207", - "IPv6": "2a00:dd80:3e::c19", - "CanPort80": true - }, - { - "Name": "18d", - "RegionID": 18, - "HostName": "derp18d.tailscale.com", - "IPv4": "176.58.90.104", - "IPv6": "2a00:dd80:3e::f2e", - "CanPort80": true - }, - { - "Name": "18b", - "RegionID": 18, - "HostName": "derp18b.tailscale.com", - "IPv4": "176.58.90.147", - "IPv6": "2a00:dd80:3e::363", - "CanPort80": true - } - ] - }, - "19": { - "RegionID": 19, - "RegionCode": "mad", - "RegionName": "Madrid", - "Latitude": 40.416944, - "Longitude": -3.703333, - "Nodes": [ - { - "Name": "19c", - "RegionID": 19, - "HostName": "derp19c.tailscale.com", - "IPv4": "45.159.97.61", - "IPv6": "2a00:dd80:14:10::20", - "CanPort80": true - }, - { - "Name": "19d", - "RegionID": 19, - "HostName": "derp19d.tailscale.com", - "IPv4": "45.159.97.233", - "IPv6": "2a00:dd80:14:10::34a", - "CanPort80": true - }, - { - "Name": "19b", - "RegionID": 19, - "HostName": "derp19b.tailscale.com", - "IPv4": "45.159.97.144", - "IPv6": "2a00:dd80:14:10::335", - "CanPort80": true - } - ] - }, - "2": { - "RegionID": 2, - "RegionCode": "sfo", - "RegionName": "San Francisco", - "Latitude": 37.7775, - "Longitude": -122.416389, - "Nodes": [ - { - "Name": "2e", - "RegionID": 2, - "HostName": "derp2e.tailscale.com", - "IPv4": "192.73.252.134", - "IPv6": "2607:f740:0:3f::44c", - "CanPort80": true - }, - { - "Name": "2f", - "RegionID": 2, - "HostName": "derp2f.tailscale.com", - "IPv4": "208.111.34.178", - "IPv6": "2607:f740:0:3f::f4", - "CanPort80": true - }, - { - "Name": "2d", - "RegionID": 2, - "HostName": "derp2d.tailscale.com", - "IPv4": "192.73.252.65", - "IPv6": "2607:f740:0:3f::287", - "CanPort80": true - } - ] - }, - "20": { - "RegionID": 20, - "RegionCode": "hkg", - "RegionName": "Hong Kong", - "Latitude": 22.3193, - "Longitude": 114.1694, - "Nodes": [ - { - "Name": "20c", - "RegionID": 20, - "HostName": "derp20c.tailscale.com", - "IPv4": "205.147.105.30", - "IPv6": "2403:2500:8000:1::5fb", - "CanPort80": true - }, - { - "Name": "20d", - "RegionID": 20, - "HostName": "derp20d.tailscale.com", - "IPv4": "205.147.105.78", - "IPv6": "2403:2500:8000:1::e9a", - "CanPort80": true - }, - { - "Name": "20b", - "RegionID": 20, - "HostName": "derp20b.tailscale.com", - "IPv4": "103.6.84.152", - "IPv6": "2403:2500:8000:1::ef6", - "CanPort80": true - } - ] - }, - "21": { - "RegionID": 21, - "RegionCode": "tor", - "RegionName": "Toronto", - "Latitude": 43.741667, - "Longitude": -79.373333, - "Nodes": [ - { - "Name": "21c", - "RegionID": 21, - "HostName": "derp21c.tailscale.com", - "IPv4": "162.248.221.215", - "IPv6": "2607:f740:50::f10", - "CanPort80": true - }, - { - "Name": "21d", - "RegionID": 21, - "HostName": "derp21d.tailscale.com", - "IPv4": "162.248.221.248", - "IPv6": "2607:f740:50::ca4", - "CanPort80": true - }, - { - "Name": "21b", - "RegionID": 21, - "HostName": "derp21b.tailscale.com", - "IPv4": "162.248.221.199", - "IPv6": "2607:f740:50::1d1", - "CanPort80": true - } - ] - }, - "22": { - "RegionID": 22, - "RegionCode": "waw", - "RegionName": "Warsaw", - "Latitude": 52.23, - "Longitude": 21.011111, - "Nodes": [ - { - "Name": "22c", - "RegionID": 22, - "HostName": "derp22c.tailscale.com", - "IPv4": "45.159.98.253", - "IPv6": "2a00:dd80:40:100::3f", - "CanPort80": true - }, - { - "Name": "22d", - "RegionID": 22, - "HostName": "derp22d.tailscale.com", - "IPv4": "45.159.98.145", - "IPv6": "2a00:dd80:40:100::211", - "CanPort80": true - }, - { - "Name": "22b", - "RegionID": 22, - "HostName": "derp22b.tailscale.com", - "IPv4": "45.159.98.196", - "IPv6": "2a00:dd80:40:100::316", - "CanPort80": true - } - ] - }, - "23": { - "RegionID": 23, - "RegionCode": "dbi", - "RegionName": "Dubai", - "Latitude": 25.263056, - "Longitude": 55.297222, - "Nodes": [ - { - "Name": "23c", - "RegionID": 23, - "HostName": "derp23c.tailscale.com", - "IPv4": "185.34.3.207", - "IPv6": "2a00:dd80:3f:100::a50", - "CanPort80": true - }, - { - "Name": "23d", - "RegionID": 23, - "HostName": "derp23d.tailscale.com", - "IPv4": "185.34.3.75", - "IPv6": "2a00:dd80:3f:100::97e", - "CanPort80": true - }, - { - "Name": "23b", - "RegionID": 23, - "HostName": "derp23b.tailscale.com", - "IPv4": "185.34.3.232", - "IPv6": "2a00:dd80:3f:100::76f", - "CanPort80": true - } - ] - }, - "24": { - "RegionID": 24, - "RegionCode": "hnl", - "RegionName": "Honolulu", - "Latitude": 21.306944, - "Longitude": -157.858333, - "Nodes": [ - { - "Name": "24c", - "RegionID": 24, - "HostName": "derp24c.tailscale.com", - "IPv4": "208.83.233.233", - "IPv6": "2001:19f0:c000:c591:5400:04ff:fe26:2c5f", - "CanPort80": true - }, - { - "Name": "24d", - "RegionID": 24, - "HostName": "derp24d.tailscale.com", - "IPv4": "208.72.155.133", - "IPv6": "2001:19f0:c000:c564:5400:04ff:fe26:2ba8", - "CanPort80": true - }, - { - "Name": "24b", - "RegionID": 24, - "HostName": "derp24b.tailscale.com", - "IPv4": "208.83.234.151", - "IPv6": "2001:19f0:c000:c586:5400:04ff:fe26:2ba6", - "CanPort80": true - } - ] - }, - "25": { - "RegionID": 25, - "RegionCode": "nai", - "RegionName": "Nairobi", - "Latitude": -1.286389, - "Longitude": 36.817222, - "Nodes": [ - { - "Name": "25c", - "RegionID": 25, - "HostName": "derp25c.tailscale.com", - "IPv4": "102.67.167.37", - "IPv6": "2c0f:edb0:2000:1::2c7", - "CanPort80": true - }, - { - "Name": "25d", - "RegionID": 25, - "HostName": "derp25d.tailscale.com", - "IPv4": "102.67.167.188", - "IPv6": "2c0f:edb0:2000:1::188", - "CanPort80": true - }, - { - "Name": "25b", - "RegionID": 25, - "HostName": "derp25b.tailscale.com", - "IPv4": "102.67.167.245", - "IPv6": "2c0f:edb0:2000:1::2e9", - "CanPort80": true - } - ] - }, - "26": { - "RegionID": 26, - "RegionCode": "nue", - "RegionName": "Nuremberg", - "Latitude": 49.453889, - "Longitude": 11.0775, - "Nodes": [ - { - "Name": "26c", - "RegionID": 26, - "HostName": "derp26c.tailscale.com", - "IPv4": "49.12.193.137", - "IPv6": "2a01:4f8:1c1c:5c70::1", - "CanPort80": true - }, - { - "Name": "26d", - "RegionID": 26, - "HostName": "derp26d.tailscale.com", - "IPv4": "49.13.204.141", - "IPv6": "2a01:4f8:1c0c:7d06::1", - "CanPort80": true - }, - { - "Name": "26b", - "RegionID": 26, - "HostName": "derp26b.tailscale.com", - "IPv4": "167.235.72.200", - "IPv6": "2a01:4f8:1c1c:47b6::1", - "CanPort80": true - } - ] - }, - "27": { - "RegionID": 27, - "RegionCode": "iad", - "RegionName": "Ashburn", - "Latitude": 39.03, - "Longitude": -77.471111, - "Nodes": [ - { - "Name": "27d", - "RegionID": 27, - "HostName": "derp27d.tailscale.com", - "IPv4": "178.156.152.106", - "IPv6": "2a01:4ff:f0:3c8e::1", - "CanPort80": true - }, - { - "Name": "27c", - "RegionID": 27, - "HostName": "derp27c.tailscale.com", - "IPv4": "178.156.152.91", - "IPv6": "2a01:4ff:f0:3913::1", - "CanPort80": true - }, - { - "Name": "27e", - "RegionID": 27, - "HostName": "derp27e.tailscale.com", - "IPv4": "178.156.134.232", - "IPv6": "2a01:4ff:f0:28d4::1", - "CanPort80": true - }, - { - "Name": "27b", - "RegionID": 27, - "HostName": "derp27b.tailscale.com", - "IPv4": "5.161.218.233", - "IPv6": "2a01:4ff:f0:3db9::1", - "CanPort80": true - } - ] - }, - "28": { - "RegionID": 28, - "RegionCode": "hel", - "RegionName": "Helsinki", - "Latitude": 60.170833, - "Longitude": 24.9375, - "Nodes": [ - { - "Name": "28c", - "RegionID": 28, - "HostName": "derp28c.tailscale.com", - "IPv4": "95.217.2.165", - "IPv6": "2a01:4f9:c012:cd74::1", - "CanPort80": true - }, - { - "Name": "28d", - "RegionID": 28, - "HostName": "derp28d.tailscale.com", - "IPv4": "157.180.28.32", - "IPv6": "2a01:4f9:c012:2e5b::1", - "CanPort80": true - }, - { - "Name": "28b", - "RegionID": 28, - "HostName": "derp28b.tailscale.com", - "IPv4": "65.109.143.62", - "IPv6": "2a01:4f9:c012:d55c::1", - "CanPort80": true - } - ] - }, - "3": { - "RegionID": 3, - "RegionCode": "sin", - "RegionName": "Singapore", - "Latitude": 1.3521, - "Longitude": 103.8198, - "Nodes": [ - { - "Name": "3g", - "RegionID": 3, - "HostName": "derp3g.tailscale.com", - "IPv4": "172.237.72.79", - "IPv6": "2600:3c15::2000:adff:fe08:6fab", - "CanPort80": true - }, - { - "Name": "3f", - "RegionID": 3, - "HostName": "derp3f.tailscale.com", - "IPv4": "172.237.72.8", - "IPv6": "2600:3c15::2000:53ff:fe48:a668", - "CanPort80": true - }, - { - "Name": "3h", - "RegionID": 3, - "HostName": "derp3h.tailscale.com", - "IPv4": "172.237.66.30", - "IPv6": "2600:3c15::2000:3dff:fe44:50aa", - "CanPort80": true - }, - { - "Name": "3e", - "RegionID": 3, - "HostName": "derp3e.tailscale.com", - "IPv4": "172.237.72.43", - "IPv6": "2600:3c15::2000:6cff:fee4:d799", - "CanPort80": true - } - ] - }, - "4": { - "RegionID": 4, - "RegionCode": "fra", - "RegionName": "Frankfurt", - "Latitude": 50.1109, - "Longitude": 8.6821, - "Nodes": [ - { - "Name": "4h", - "RegionID": 4, - "HostName": "derp4h.tailscale.com", - "IPv4": "185.40.234.77", - "IPv6": "2a00:dd80:20::bcf", - "CanPort80": true - }, - { - "Name": "4g", - "RegionID": 4, - "HostName": "derp4g.tailscale.com", - "IPv4": "185.40.234.113", - "IPv6": "2a00:dd80:20::8f", - "CanPort80": true - }, - { - "Name": "4i", - "RegionID": 4, - "HostName": "derp4i.tailscale.com", - "IPv4": "185.40.234.53", - "IPv6": "2a00:dd80:20::8a6", - "CanPort80": true - }, - { - "Name": "4f", - "RegionID": 4, - "HostName": "derp4f.tailscale.com", - "IPv4": "185.40.234.219", - "IPv6": "2a00:dd80:20::a25", - "CanPort80": true - } - ] - }, - "5": { - "RegionID": 5, - "RegionCode": "syd", - "RegionName": "Sydney", - "Latitude": -33.867778, - "Longitude": 151.21, - "Nodes": [ - { - "Name": "5f", - "RegionID": 5, - "HostName": "derp5f.tailscale.com", - "IPv4": "172.105.166.103", - "IPv6": "2400:8907::2000:ccff:fe1f:80da", - "CanPort80": true - }, - { - "Name": "5g", - "RegionID": 5, - "HostName": "derp5g.tailscale.com", - "IPv4": "172.105.169.57", - "IPv6": "2400:8907::2000:2fff:fea7:57f4", - "CanPort80": true - }, - { - "Name": "5e", - "RegionID": 5, - "HostName": "derp5e.tailscale.com", - "IPv4": "172.105.179.230", - "IPv6": "2400:8907::2000:ceff:fe8d:4f4e", - "CanPort80": true - } - ] - }, - "6": { - "RegionID": 6, - "RegionCode": "blr", - "RegionName": "Bengaluru", - "Latitude": 12.9716, - "Longitude": 77.5946, - "Nodes": [ - { - "Name": "6a", - "RegionID": 6, - "HostName": "derp6.tailscale.com", - "IPv4": "68.183.90.120", - "IPv6": "2400:6180:100:d0::982:d001", - "CanPort80": true - } - ] - }, - "7": { - "RegionID": 7, - "RegionCode": "tok", - "RegionName": "Tokyo", - "Latitude": 35.6764, - "Longitude": 139.65, - "Nodes": [ - { - "Name": "7g", - "RegionID": 7, - "HostName": "derp7g.tailscale.com", - "IPv4": "172.238.6.179", - "IPv6": "2600:3c18::2000:3fff:fe80:3ebd", - "CanPort80": true - }, - { - "Name": "7f", - "RegionID": 7, - "HostName": "derp7f.tailscale.com", - "IPv4": "172.238.6.34", - "IPv6": "2600:3c18::2000:acff:fe8e:3ed5", - "CanPort80": true - }, - { - "Name": "7h", - "RegionID": 7, - "HostName": "derp7h.tailscale.com", - "IPv4": "172.237.28.183", - "IPv6": "2600:3c18::2000:b1ff:fea9:4560", - "CanPort80": true - }, - { - "Name": "7e", - "RegionID": 7, - "HostName": "derp7e.tailscale.com", - "IPv4": "172.238.6.180", - "IPv6": "2600:3c18::2000:60ff:fe0f:6e83", - "STUNOnly": true, - "CanPort80": true - } - ] - }, - "8": { - "RegionID": 8, - "RegionCode": "lhr", - "RegionName": "London", - "Latitude": 51.5072, - "Longitude": 0.1276, - "Nodes": [ - { - "Name": "8f", - "RegionID": 8, - "HostName": "derp8f.tailscale.com", - "IPv4": "176.58.88.183", - "IPv6": "2a00:dd80:3a::dfa", - "CanPort80": true - }, - { - "Name": "8g", - "RegionID": 8, - "HostName": "derp8g.tailscale.com", - "IPv4": "176.58.92.254", - "IPv6": "2a00:dd80:3a::ed", - "CanPort80": true - }, - { - "Name": "8e", - "RegionID": 8, - "HostName": "derp8e.tailscale.com", - "IPv4": "176.58.92.144", - "IPv6": "2a00:dd80:3a::b33", - "CanPort80": true - } - ] - }, - "9": { - "RegionID": 9, - "RegionCode": "dfw", - "RegionName": "Dallas", - "Latitude": 32.779167, - "Longitude": -96.808889, - "Nodes": [ - { - "Name": "9e", - "RegionID": 9, - "HostName": "derp9e.tailscale.com", - "IPv4": "192.73.248.83", - "IPv6": "2607:f740:100::359", - "CanPort80": true - }, - { - "Name": "9f", - "RegionID": 9, - "HostName": "derp9f.tailscale.com", - "IPv4": "209.177.156.197", - "IPv6": "2607:f740:100::cad", - "CanPort80": true - }, - { - "Name": "9d", - "RegionID": 9, - "HostName": "derp9d.tailscale.com", - "IPv4": "209.177.156.94", - "IPv6": "2607:f740:100::c05", - "CanPort80": true - } - ] - } - } - }, - "DisplayMessages": null, - "TKAEnabled": false, - "TKAHead": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", - "Domain": "kratail2tid@passkey", - "DomainAuditLogID": "", - "UserProfiles": { - "4031348162889210": { - "ID": 4031348162889210, - "LoginName": "tagged-client.tail78f774.ts.net", - "DisplayName": "tagged-client" - } - } + "PacketFilterRules": 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.124.195.93": { - "peer_name": "exit-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-prod/tailscaled.sock whois --json 100.124.195.93", - "response": null - }, - "100.116.18.24": { - "peer_name": "exit-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-prod/tailscaled.sock whois --json 100.116.18.24", - "response": null - }, - "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.107.162.14": { - "peer_name": "group-a-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-prod/tailscaled.sock whois --json 100.107.162.14", - "response": null - }, - "100.77.135.18": { - "peer_name": "group-b-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-prod/tailscaled.sock whois --json 100.77.135.18", - "response": null - }, - "100.105.127.107": { - "peer_name": "multi-exit-router", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-prod/tailscaled.sock whois --json 100.105.127.107", - "response": null - }, - "100.109.43.124": { - "peer_name": "router-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-prod/tailscaled.sock whois --json 100.109.43.124", - "response": null - }, - "100.65.172.123": { - "peer_name": "router-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-prod/tailscaled.sock whois --json 100.65.172.123", - "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 - } - }, "netmap": { - "SelfNode": { - "ID": 301794218943819, - "StableID": "neJag6dgM311CNTRL", - "Name": "tagged-prod.tail78f774.ts.net.", - "User": 301794218943819, - "Key": "nodekey:54c79503322a5d0a9701ce19d11963cfff9c05667ac06ef976af86275ba7080e", - "DiscoKey": "discokey:5e4985009b42b7c82ffb2cb5fa735a90f967f6b3f886b71268ebbeffa324556b", - "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:46164", "10.65.0.27:46164", "172.17.0.1:46164"], - "Hostinfo": { - "Hostname": "tagged-prod", - "Services": [ - { "Proto": "peerapi4", "Port": 37678 }, - { "Proto": "peerapi6", "Port": 37678 }, - { "Proto": "peerapi-dns-proxy", "Port": 1 } - ] - }, - "Created": "2026-02-20T14:03:12.89283153Z", - "Tags": ["tag:prod"], - "MachineAuthorized": true, - "CapMap": { - "https://tailscale.com/cap/file-sharing": null, - "https://tailscale.com/cap/is-owner": null, - "https://tailscale.com/cap/ssh": null, - "https://tailscale.com/cap/tailnet-lock": null, - "probe-udp-lifetime": null, - "ssh-behavior-v1": null, - "ssh-env-vars": null, - "store-appc-routes": null, - "tailnet-display-name": ["kratail2tid@passkey"] - }, - "ComputedName": "tagged-prod", - "ComputedNameWithHost": "tagged-prod" - }, - "AllCaps": [ - "https://tailscale.com/cap/ssh", - "https://tailscale.com/cap/file-sharing", - "tailnet-display-name", - "ssh-behavior-v1", - "https://tailscale.com/cap/is-owner", - "https://tailscale.com/cap/tailnet-lock", - "probe-udp-lifetime", - "ssh-env-vars", - "store-appc-routes" - ], - "NodeKey": "nodekey:54c79503322a5d0a9701ce19d11963cfff9c05667ac06ef976af86275ba7080e", - "MachineKey": "mkey:af805e02d1594ab20eaf3e2df5b379eec6453fa649344fcd564b7bae20e46a63", "Peers": [], - "DNS": { - "Routes": { - "tail78f774.ts.net.": null, - "ts.net.": [{ "Addr": "199.247.155.53" }, { "Addr": "2620:111:8007::53" }] - }, - "Domains": ["tail78f774.ts.net"], - "Proxied": true, - "ExitNodeFilteredSet": [".ts.net", ".tailscale.net"] - }, - "PacketFilter": [], - "PacketFilterRules": null, - "SSHPolicy": { "rules": [] }, - "CollectServices": false, - "DERPMap": { - "Regions": { - "1": { - "RegionID": 1, - "RegionCode": "nyc", - "RegionName": "New York City", - "Latitude": 40.7128, - "Longitude": -74.006, - "Nodes": [ - { - "Name": "1h", - "RegionID": 1, - "HostName": "derp1h.tailscale.com", - "IPv4": "199.38.181.93", - "IPv6": "2607:f740:f::afd", - "CanPort80": true - }, - { - "Name": "1g", - "RegionID": 1, - "HostName": "derp1g.tailscale.com", - "IPv4": "209.177.145.120", - "IPv6": "2607:f740:f::3eb", - "CanPort80": true - }, - { - "Name": "1i", - "RegionID": 1, - "HostName": "derp1i.tailscale.com", - "IPv4": "199.38.181.103", - "IPv6": "2607:f740:f::e19", - "CanPort80": true - }, - { - "Name": "1f", - "RegionID": 1, - "HostName": "derp1f.tailscale.com", - "IPv4": "199.38.181.104", - "IPv6": "2607:f740:f::bc", - "CanPort80": true - } - ] - }, - "10": { - "RegionID": 10, - "RegionCode": "sea", - "RegionName": "Seattle", - "Latitude": 47.609722, - "Longitude": -122.333056, - "Nodes": [ - { - "Name": "10c", - "RegionID": 10, - "HostName": "derp10c.tailscale.com", - "IPv4": "192.73.240.121", - "IPv6": "2607:f740:14::40c", - "CanPort80": true - }, - { - "Name": "10d", - "RegionID": 10, - "HostName": "derp10d.tailscale.com", - "IPv4": "192.73.240.132", - "IPv6": "2607:f740:14::500", - "CanPort80": true - }, - { - "Name": "10b", - "RegionID": 10, - "HostName": "derp10b.tailscale.com", - "IPv4": "192.73.240.161", - "IPv6": "2607:f740:14::61c", - "CanPort80": true - } - ] - }, - "11": { - "RegionID": 11, - "RegionCode": "sao", - "RegionName": "São Paulo", - "Latitude": -23.55, - "Longitude": -46.633333, - "Nodes": [ - { - "Name": "11f", - "RegionID": 11, - "HostName": "derp11f.tailscale.com", - "IPv4": "172.237.61.197", - "IPv6": "2600:3c0d::2000:3bff:fe44:6166", - "CanPort80": true - }, - { - "Name": "11g", - "RegionID": 11, - "HostName": "derp11g.tailscale.com", - "IPv4": "172.237.61.190", - "IPv6": "2600:3c0d::2000:62ff:febe:2e67", - "CanPort80": true - }, - { - "Name": "11e", - "RegionID": 11, - "HostName": "derp11e.tailscale.com", - "IPv4": "172.237.61.194", - "IPv6": "2600:3c0d::2000:d2ff:fe43:1790", - "CanPort80": true - } - ] - }, - "12": { - "RegionID": 12, - "RegionCode": "ord", - "RegionName": "Chicago", - "Latitude": 41.881944, - "Longitude": -87.627778, - "Nodes": [ - { - "Name": "12e", - "RegionID": 12, - "HostName": "derp12e.tailscale.com", - "IPv4": "209.177.158.15", - "IPv6": "2607:f740:e::b17", - "CanPort80": true - }, - { - "Name": "12f", - "RegionID": 12, - "HostName": "derp12f.tailscale.com", - "IPv4": "199.38.182.118", - "IPv6": "2607:f740:e::4c8", - "CanPort80": true - }, - { - "Name": "12d", - "RegionID": 12, - "HostName": "derp12d.tailscale.com", - "IPv4": "209.177.158.246", - "IPv6": "2607:f740:e::811", - "CanPort80": true - } - ] - }, - "13": { - "RegionID": 13, - "RegionCode": "den", - "RegionName": "Denver", - "Latitude": 39.7392, - "Longitude": -104.9849, - "Nodes": [ - { - "Name": "13c", - "RegionID": 13, - "HostName": "derp13c.tailscale.com", - "IPv4": "192.73.242.28", - "IPv6": "2607:f740:16::5c", - "CanPort80": true - }, - { - "Name": "13d", - "RegionID": 13, - "HostName": "derp13d.tailscale.com", - "IPv4": "192.73.242.204", - "IPv6": "2607:f740:16::c23", - "CanPort80": true - }, - { - "Name": "13b", - "RegionID": 13, - "HostName": "derp13b.tailscale.com", - "IPv4": "192.73.242.187", - "IPv6": "2607:f740:16::640", - "CanPort80": true - } - ] - }, - "14": { - "RegionID": 14, - "RegionCode": "ams", - "RegionName": "Amsterdam", - "Latitude": 52.372778, - "Longitude": 4.893611, - "Nodes": [ - { - "Name": "14c", - "RegionID": 14, - "HostName": "derp14c.tailscale.com", - "IPv4": "176.58.93.147", - "IPv6": "2a00:dd80:3c::b09", - "CanPort80": true - }, - { - "Name": "14d", - "RegionID": 14, - "HostName": "derp14d.tailscale.com", - "IPv4": "176.58.93.154", - "IPv6": "2a00:dd80:3c::3d5", - "CanPort80": true - }, - { - "Name": "14b", - "RegionID": 14, - "HostName": "derp14b.tailscale.com", - "IPv4": "176.58.93.248", - "IPv6": "2a00:dd80:3c::807", - "CanPort80": true - } - ] - }, - "15": { - "RegionID": 15, - "RegionCode": "jnb", - "RegionName": "Johannesburg", - "Latitude": -26.204444, - "Longitude": 28.045556, - "Nodes": [ - { - "Name": "15c", - "RegionID": 15, - "HostName": "derp15c.tailscale.com", - "IPv4": "102.67.165.185", - "IPv6": "2c0f:edb0:0:10::b59", - "CanPort80": true - }, - { - "Name": "15d", - "RegionID": 15, - "HostName": "derp15d.tailscale.com", - "IPv4": "102.67.165.36", - "IPv6": "2c0f:edb0:0:10::599", - "CanPort80": true - }, - { - "Name": "15b", - "RegionID": 15, - "HostName": "derp15b.tailscale.com", - "IPv4": "102.67.165.90", - "IPv6": "2c0f:edb0:0:10::963", - "CanPort80": true - } - ] - }, - "16": { - "RegionID": 16, - "RegionCode": "mia", - "RegionName": "Miami", - "Latitude": 25.78, - "Longitude": -80.21, - "Nodes": [ - { - "Name": "16c", - "RegionID": 16, - "HostName": "derp16c.tailscale.com", - "IPv4": "192.73.243.229", - "IPv6": "2607:f740:17::4e4", - "CanPort80": true - }, - { - "Name": "16d", - "RegionID": 16, - "HostName": "derp16d.tailscale.com", - "IPv4": "192.73.243.141", - "IPv6": "2607:f740:17::475", - "CanPort80": true - }, - { - "Name": "16b", - "RegionID": 16, - "HostName": "derp16b.tailscale.com", - "IPv4": "192.73.243.135", - "IPv6": "2607:f740:17::476", - "CanPort80": true - } - ] - }, - "17": { - "RegionID": 17, - "RegionCode": "lax", - "RegionName": "Los Angeles", - "Latitude": 34.05, - "Longitude": -118.25, - "Nodes": [ - { - "Name": "17c", - "RegionID": 17, - "HostName": "derp17c.tailscale.com", - "IPv4": "208.111.40.12", - "IPv6": "2607:f740:c::10", - "CanPort80": true - }, - { - "Name": "17d", - "RegionID": 17, - "HostName": "derp17d.tailscale.com", - "IPv4": "208.111.40.216", - "IPv6": "2607:f740:c::e1b", - "CanPort80": true - }, - { - "Name": "17b", - "RegionID": 17, - "HostName": "derp17b.tailscale.com", - "IPv4": "192.73.244.245", - "IPv6": "2607:f740:c::646", - "CanPort80": true - } - ] - }, - "18": { - "RegionID": 18, - "RegionCode": "par", - "RegionName": "Paris", - "Latitude": 48.856667, - "Longitude": 2.352222, - "Nodes": [ - { - "Name": "18c", - "RegionID": 18, - "HostName": "derp18c.tailscale.com", - "IPv4": "176.58.90.207", - "IPv6": "2a00:dd80:3e::c19", - "CanPort80": true - }, - { - "Name": "18d", - "RegionID": 18, - "HostName": "derp18d.tailscale.com", - "IPv4": "176.58.90.104", - "IPv6": "2a00:dd80:3e::f2e", - "CanPort80": true - }, - { - "Name": "18b", - "RegionID": 18, - "HostName": "derp18b.tailscale.com", - "IPv4": "176.58.90.147", - "IPv6": "2a00:dd80:3e::363", - "CanPort80": true - } - ] - }, - "19": { - "RegionID": 19, - "RegionCode": "mad", - "RegionName": "Madrid", - "Latitude": 40.416944, - "Longitude": -3.703333, - "Nodes": [ - { - "Name": "19c", - "RegionID": 19, - "HostName": "derp19c.tailscale.com", - "IPv4": "45.159.97.61", - "IPv6": "2a00:dd80:14:10::20", - "CanPort80": true - }, - { - "Name": "19d", - "RegionID": 19, - "HostName": "derp19d.tailscale.com", - "IPv4": "45.159.97.233", - "IPv6": "2a00:dd80:14:10::34a", - "CanPort80": true - }, - { - "Name": "19b", - "RegionID": 19, - "HostName": "derp19b.tailscale.com", - "IPv4": "45.159.97.144", - "IPv6": "2a00:dd80:14:10::335", - "CanPort80": true - } - ] - }, - "2": { - "RegionID": 2, - "RegionCode": "sfo", - "RegionName": "San Francisco", - "Latitude": 37.7775, - "Longitude": -122.416389, - "Nodes": [ - { - "Name": "2e", - "RegionID": 2, - "HostName": "derp2e.tailscale.com", - "IPv4": "192.73.252.134", - "IPv6": "2607:f740:0:3f::44c", - "CanPort80": true - }, - { - "Name": "2f", - "RegionID": 2, - "HostName": "derp2f.tailscale.com", - "IPv4": "208.111.34.178", - "IPv6": "2607:f740:0:3f::f4", - "CanPort80": true - }, - { - "Name": "2d", - "RegionID": 2, - "HostName": "derp2d.tailscale.com", - "IPv4": "192.73.252.65", - "IPv6": "2607:f740:0:3f::287", - "CanPort80": true - } - ] - }, - "20": { - "RegionID": 20, - "RegionCode": "hkg", - "RegionName": "Hong Kong", - "Latitude": 22.3193, - "Longitude": 114.1694, - "Nodes": [ - { - "Name": "20c", - "RegionID": 20, - "HostName": "derp20c.tailscale.com", - "IPv4": "205.147.105.30", - "IPv6": "2403:2500:8000:1::5fb", - "CanPort80": true - }, - { - "Name": "20d", - "RegionID": 20, - "HostName": "derp20d.tailscale.com", - "IPv4": "205.147.105.78", - "IPv6": "2403:2500:8000:1::e9a", - "CanPort80": true - }, - { - "Name": "20b", - "RegionID": 20, - "HostName": "derp20b.tailscale.com", - "IPv4": "103.6.84.152", - "IPv6": "2403:2500:8000:1::ef6", - "CanPort80": true - } - ] - }, - "21": { - "RegionID": 21, - "RegionCode": "tor", - "RegionName": "Toronto", - "Latitude": 43.741667, - "Longitude": -79.373333, - "Nodes": [ - { - "Name": "21c", - "RegionID": 21, - "HostName": "derp21c.tailscale.com", - "IPv4": "162.248.221.215", - "IPv6": "2607:f740:50::f10", - "CanPort80": true - }, - { - "Name": "21d", - "RegionID": 21, - "HostName": "derp21d.tailscale.com", - "IPv4": "162.248.221.248", - "IPv6": "2607:f740:50::ca4", - "CanPort80": true - }, - { - "Name": "21b", - "RegionID": 21, - "HostName": "derp21b.tailscale.com", - "IPv4": "162.248.221.199", - "IPv6": "2607:f740:50::1d1", - "CanPort80": true - } - ] - }, - "22": { - "RegionID": 22, - "RegionCode": "waw", - "RegionName": "Warsaw", - "Latitude": 52.23, - "Longitude": 21.011111, - "Nodes": [ - { - "Name": "22c", - "RegionID": 22, - "HostName": "derp22c.tailscale.com", - "IPv4": "45.159.98.253", - "IPv6": "2a00:dd80:40:100::3f", - "CanPort80": true - }, - { - "Name": "22d", - "RegionID": 22, - "HostName": "derp22d.tailscale.com", - "IPv4": "45.159.98.145", - "IPv6": "2a00:dd80:40:100::211", - "CanPort80": true - }, - { - "Name": "22b", - "RegionID": 22, - "HostName": "derp22b.tailscale.com", - "IPv4": "45.159.98.196", - "IPv6": "2a00:dd80:40:100::316", - "CanPort80": true - } - ] - }, - "23": { - "RegionID": 23, - "RegionCode": "dbi", - "RegionName": "Dubai", - "Latitude": 25.263056, - "Longitude": 55.297222, - "Nodes": [ - { - "Name": "23c", - "RegionID": 23, - "HostName": "derp23c.tailscale.com", - "IPv4": "185.34.3.207", - "IPv6": "2a00:dd80:3f:100::a50", - "CanPort80": true - }, - { - "Name": "23d", - "RegionID": 23, - "HostName": "derp23d.tailscale.com", - "IPv4": "185.34.3.75", - "IPv6": "2a00:dd80:3f:100::97e", - "CanPort80": true - }, - { - "Name": "23b", - "RegionID": 23, - "HostName": "derp23b.tailscale.com", - "IPv4": "185.34.3.232", - "IPv6": "2a00:dd80:3f:100::76f", - "CanPort80": true - } - ] - }, - "24": { - "RegionID": 24, - "RegionCode": "hnl", - "RegionName": "Honolulu", - "Latitude": 21.306944, - "Longitude": -157.858333, - "Nodes": [ - { - "Name": "24c", - "RegionID": 24, - "HostName": "derp24c.tailscale.com", - "IPv4": "208.83.233.233", - "IPv6": "2001:19f0:c000:c591:5400:04ff:fe26:2c5f", - "CanPort80": true - }, - { - "Name": "24d", - "RegionID": 24, - "HostName": "derp24d.tailscale.com", - "IPv4": "208.72.155.133", - "IPv6": "2001:19f0:c000:c564:5400:04ff:fe26:2ba8", - "CanPort80": true - }, - { - "Name": "24b", - "RegionID": 24, - "HostName": "derp24b.tailscale.com", - "IPv4": "208.83.234.151", - "IPv6": "2001:19f0:c000:c586:5400:04ff:fe26:2ba6", - "CanPort80": true - } - ] - }, - "25": { - "RegionID": 25, - "RegionCode": "nai", - "RegionName": "Nairobi", - "Latitude": -1.286389, - "Longitude": 36.817222, - "Nodes": [ - { - "Name": "25c", - "RegionID": 25, - "HostName": "derp25c.tailscale.com", - "IPv4": "102.67.167.37", - "IPv6": "2c0f:edb0:2000:1::2c7", - "CanPort80": true - }, - { - "Name": "25d", - "RegionID": 25, - "HostName": "derp25d.tailscale.com", - "IPv4": "102.67.167.188", - "IPv6": "2c0f:edb0:2000:1::188", - "CanPort80": true - }, - { - "Name": "25b", - "RegionID": 25, - "HostName": "derp25b.tailscale.com", - "IPv4": "102.67.167.245", - "IPv6": "2c0f:edb0:2000:1::2e9", - "CanPort80": true - } - ] - }, - "26": { - "RegionID": 26, - "RegionCode": "nue", - "RegionName": "Nuremberg", - "Latitude": 49.453889, - "Longitude": 11.0775, - "Nodes": [ - { - "Name": "26c", - "RegionID": 26, - "HostName": "derp26c.tailscale.com", - "IPv4": "49.12.193.137", - "IPv6": "2a01:4f8:1c1c:5c70::1", - "CanPort80": true - }, - { - "Name": "26d", - "RegionID": 26, - "HostName": "derp26d.tailscale.com", - "IPv4": "49.13.204.141", - "IPv6": "2a01:4f8:1c0c:7d06::1", - "CanPort80": true - }, - { - "Name": "26b", - "RegionID": 26, - "HostName": "derp26b.tailscale.com", - "IPv4": "167.235.72.200", - "IPv6": "2a01:4f8:1c1c:47b6::1", - "CanPort80": true - } - ] - }, - "27": { - "RegionID": 27, - "RegionCode": "iad", - "RegionName": "Ashburn", - "Latitude": 39.03, - "Longitude": -77.471111, - "Nodes": [ - { - "Name": "27d", - "RegionID": 27, - "HostName": "derp27d.tailscale.com", - "IPv4": "178.156.152.106", - "IPv6": "2a01:4ff:f0:3c8e::1", - "CanPort80": true - }, - { - "Name": "27c", - "RegionID": 27, - "HostName": "derp27c.tailscale.com", - "IPv4": "178.156.152.91", - "IPv6": "2a01:4ff:f0:3913::1", - "CanPort80": true - }, - { - "Name": "27e", - "RegionID": 27, - "HostName": "derp27e.tailscale.com", - "IPv4": "178.156.134.232", - "IPv6": "2a01:4ff:f0:28d4::1", - "CanPort80": true - }, - { - "Name": "27b", - "RegionID": 27, - "HostName": "derp27b.tailscale.com", - "IPv4": "5.161.218.233", - "IPv6": "2a01:4ff:f0:3db9::1", - "CanPort80": true - } - ] - }, - "28": { - "RegionID": 28, - "RegionCode": "hel", - "RegionName": "Helsinki", - "Latitude": 60.170833, - "Longitude": 24.9375, - "Nodes": [ - { - "Name": "28c", - "RegionID": 28, - "HostName": "derp28c.tailscale.com", - "IPv4": "95.217.2.165", - "IPv6": "2a01:4f9:c012:cd74::1", - "CanPort80": true - }, - { - "Name": "28d", - "RegionID": 28, - "HostName": "derp28d.tailscale.com", - "IPv4": "157.180.28.32", - "IPv6": "2a01:4f9:c012:2e5b::1", - "CanPort80": true - }, - { - "Name": "28b", - "RegionID": 28, - "HostName": "derp28b.tailscale.com", - "IPv4": "65.109.143.62", - "IPv6": "2a01:4f9:c012:d55c::1", - "CanPort80": true - } - ] - }, - "3": { - "RegionID": 3, - "RegionCode": "sin", - "RegionName": "Singapore", - "Latitude": 1.3521, - "Longitude": 103.8198, - "Nodes": [ - { - "Name": "3g", - "RegionID": 3, - "HostName": "derp3g.tailscale.com", - "IPv4": "172.237.72.79", - "IPv6": "2600:3c15::2000:adff:fe08:6fab", - "CanPort80": true - }, - { - "Name": "3f", - "RegionID": 3, - "HostName": "derp3f.tailscale.com", - "IPv4": "172.237.72.8", - "IPv6": "2600:3c15::2000:53ff:fe48:a668", - "CanPort80": true - }, - { - "Name": "3h", - "RegionID": 3, - "HostName": "derp3h.tailscale.com", - "IPv4": "172.237.66.30", - "IPv6": "2600:3c15::2000:3dff:fe44:50aa", - "CanPort80": true - }, - { - "Name": "3e", - "RegionID": 3, - "HostName": "derp3e.tailscale.com", - "IPv4": "172.237.72.43", - "IPv6": "2600:3c15::2000:6cff:fee4:d799", - "CanPort80": true - } - ] - }, - "4": { - "RegionID": 4, - "RegionCode": "fra", - "RegionName": "Frankfurt", - "Latitude": 50.1109, - "Longitude": 8.6821, - "Nodes": [ - { - "Name": "4h", - "RegionID": 4, - "HostName": "derp4h.tailscale.com", - "IPv4": "185.40.234.77", - "IPv6": "2a00:dd80:20::bcf", - "CanPort80": true - }, - { - "Name": "4g", - "RegionID": 4, - "HostName": "derp4g.tailscale.com", - "IPv4": "185.40.234.113", - "IPv6": "2a00:dd80:20::8f", - "CanPort80": true - }, - { - "Name": "4i", - "RegionID": 4, - "HostName": "derp4i.tailscale.com", - "IPv4": "185.40.234.53", - "IPv6": "2a00:dd80:20::8a6", - "CanPort80": true - }, - { - "Name": "4f", - "RegionID": 4, - "HostName": "derp4f.tailscale.com", - "IPv4": "185.40.234.219", - "IPv6": "2a00:dd80:20::a25", - "CanPort80": true - } - ] - }, - "5": { - "RegionID": 5, - "RegionCode": "syd", - "RegionName": "Sydney", - "Latitude": -33.867778, - "Longitude": 151.21, - "Nodes": [ - { - "Name": "5f", - "RegionID": 5, - "HostName": "derp5f.tailscale.com", - "IPv4": "172.105.166.103", - "IPv6": "2400:8907::2000:ccff:fe1f:80da", - "CanPort80": true - }, - { - "Name": "5g", - "RegionID": 5, - "HostName": "derp5g.tailscale.com", - "IPv4": "172.105.169.57", - "IPv6": "2400:8907::2000:2fff:fea7:57f4", - "CanPort80": true - }, - { - "Name": "5e", - "RegionID": 5, - "HostName": "derp5e.tailscale.com", - "IPv4": "172.105.179.230", - "IPv6": "2400:8907::2000:ceff:fe8d:4f4e", - "CanPort80": true - } - ] - }, - "6": { - "RegionID": 6, - "RegionCode": "blr", - "RegionName": "Bengaluru", - "Latitude": 12.9716, - "Longitude": 77.5946, - "Nodes": [ - { - "Name": "6a", - "RegionID": 6, - "HostName": "derp6.tailscale.com", - "IPv4": "68.183.90.120", - "IPv6": "2400:6180:100:d0::982:d001", - "CanPort80": true - } - ] - }, - "7": { - "RegionID": 7, - "RegionCode": "tok", - "RegionName": "Tokyo", - "Latitude": 35.6764, - "Longitude": 139.65, - "Nodes": [ - { - "Name": "7g", - "RegionID": 7, - "HostName": "derp7g.tailscale.com", - "IPv4": "172.238.6.179", - "IPv6": "2600:3c18::2000:3fff:fe80:3ebd", - "CanPort80": true - }, - { - "Name": "7f", - "RegionID": 7, - "HostName": "derp7f.tailscale.com", - "IPv4": "172.238.6.34", - "IPv6": "2600:3c18::2000:acff:fe8e:3ed5", - "CanPort80": true - }, - { - "Name": "7h", - "RegionID": 7, - "HostName": "derp7h.tailscale.com", - "IPv4": "172.237.28.183", - "IPv6": "2600:3c18::2000:b1ff:fea9:4560", - "CanPort80": true - }, - { - "Name": "7e", - "RegionID": 7, - "HostName": "derp7e.tailscale.com", - "IPv4": "172.238.6.180", - "IPv6": "2600:3c18::2000:60ff:fe0f:6e83", - "STUNOnly": true, - "CanPort80": true - } - ] - }, - "8": { - "RegionID": 8, - "RegionCode": "lhr", - "RegionName": "London", - "Latitude": 51.5072, - "Longitude": 0.1276, - "Nodes": [ - { - "Name": "8f", - "RegionID": 8, - "HostName": "derp8f.tailscale.com", - "IPv4": "176.58.88.183", - "IPv6": "2a00:dd80:3a::dfa", - "CanPort80": true - }, - { - "Name": "8g", - "RegionID": 8, - "HostName": "derp8g.tailscale.com", - "IPv4": "176.58.92.254", - "IPv6": "2a00:dd80:3a::ed", - "CanPort80": true - }, - { - "Name": "8e", - "RegionID": 8, - "HostName": "derp8e.tailscale.com", - "IPv4": "176.58.92.144", - "IPv6": "2a00:dd80:3a::b33", - "CanPort80": true - } - ] - }, - "9": { - "RegionID": 9, - "RegionCode": "dfw", - "RegionName": "Dallas", - "Latitude": 32.779167, - "Longitude": -96.808889, - "Nodes": [ - { - "Name": "9e", - "RegionID": 9, - "HostName": "derp9e.tailscale.com", - "IPv4": "192.73.248.83", - "IPv6": "2607:f740:100::359", - "CanPort80": true - }, - { - "Name": "9f", - "RegionID": 9, - "HostName": "derp9f.tailscale.com", - "IPv4": "209.177.156.197", - "IPv6": "2607:f740:100::cad", - "CanPort80": true - }, - { - "Name": "9d", - "RegionID": 9, - "HostName": "derp9d.tailscale.com", - "IPv4": "209.177.156.94", - "IPv6": "2607:f740:100::c05", - "CanPort80": true - } - ] - } - } - }, - "DisplayMessages": null, - "TKAEnabled": false, - "TKAHead": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", - "Domain": "kratail2tid@passkey", - "DomainAuditLogID": "", - "UserProfiles": { - "301794218943819": { - "ID": 301794218943819, - "LoginName": "tagged-prod.tail78f774.ts.net", - "DisplayName": "tagged-prod" - } - } + "PacketFilterRules": 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.124.195.93": { - "peer_name": "exit-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-server/tailscaled.sock whois --json 100.124.195.93", - "response": null - }, - "100.116.18.24": { - "peer_name": "exit-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-server/tailscaled.sock whois --json 100.116.18.24", - "response": null - }, - "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.107.162.14": { - "peer_name": "group-a-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-server/tailscaled.sock whois --json 100.107.162.14", - "response": null - }, - "100.77.135.18": { - "peer_name": "group-b-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-server/tailscaled.sock whois --json 100.77.135.18", - "response": null - }, - "100.105.127.107": { - "peer_name": "multi-exit-router", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-server/tailscaled.sock whois --json 100.105.127.107", - "response": null - }, - "100.109.43.124": { - "peer_name": "router-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-server/tailscaled.sock whois --json 100.109.43.124", - "response": null - }, - "100.65.172.123": { - "peer_name": "router-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-server/tailscaled.sock whois --json 100.65.172.123", - "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 - } - }, "netmap": { - "SelfNode": { - "ID": 1440249486084758, - "StableID": "nXRbBtuHFC11CNTRL", - "Name": "tagged-server.tail78f774.ts.net.", - "User": 1440249486084758, - "Key": "nodekey:7d5c34b3e8082069d0a82838165c33f8e1b5eb32c6211c2d23d4fe8fb9ec4a19", - "DiscoKey": "discokey:aa5732e314175928eff41cc8f8a7b6edd4694b7d00e420a6573ecc11a88cb203", - "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:57971", "10.65.0.27:57971", "172.17.0.1:57971"], - "Hostinfo": { - "Hostname": "tagged-server", - "Services": [ - { "Proto": "peerapi4", "Port": 46499 }, - { "Proto": "peerapi6", "Port": 46499 }, - { "Proto": "peerapi-dns-proxy", "Port": 1 } - ] - }, - "Created": "2026-01-23T10:10:26.365653609Z", - "Tags": ["tag:server"], - "MachineAuthorized": true, - "CapMap": { - "https://tailscale.com/cap/file-sharing": null, - "https://tailscale.com/cap/is-owner": null, - "https://tailscale.com/cap/ssh": null, - "https://tailscale.com/cap/tailnet-lock": null, - "probe-udp-lifetime": null, - "ssh-behavior-v1": null, - "ssh-env-vars": null, - "store-appc-routes": null, - "tailnet-display-name": ["kratail2tid@passkey"] - }, - "ComputedName": "tagged-server", - "ComputedNameWithHost": "tagged-server" - }, - "AllCaps": [ - "https://tailscale.com/cap/is-owner", - "https://tailscale.com/cap/tailnet-lock", - "tailnet-display-name", - "https://tailscale.com/cap/ssh", - "ssh-env-vars", - "https://tailscale.com/cap/file-sharing", - "probe-udp-lifetime", - "store-appc-routes", - "ssh-behavior-v1" - ], - "NodeKey": "nodekey:7d5c34b3e8082069d0a82838165c33f8e1b5eb32c6211c2d23d4fe8fb9ec4a19", - "MachineKey": "mkey:7d9c55c88bb618638f3f049b95c797f64eb0259810146d2644fef3e53acfdf6b", "Peers": [], - "DNS": { - "Routes": { - "tail78f774.ts.net.": null, - "ts.net.": [{ "Addr": "199.247.155.53" }, { "Addr": "2620:111:8007::53" }] - }, - "Domains": ["tail78f774.ts.net"], - "Proxied": true, - "ExitNodeFilteredSet": [".ts.net", ".tailscale.net"] - }, - "PacketFilter": [], - "PacketFilterRules": null, - "SSHPolicy": { "rules": [] }, - "CollectServices": false, - "DERPMap": { - "Regions": { - "1": { - "RegionID": 1, - "RegionCode": "nyc", - "RegionName": "New York City", - "Latitude": 40.7128, - "Longitude": -74.006, - "Nodes": [ - { - "Name": "1h", - "RegionID": 1, - "HostName": "derp1h.tailscale.com", - "IPv4": "199.38.181.93", - "IPv6": "2607:f740:f::afd", - "CanPort80": true - }, - { - "Name": "1g", - "RegionID": 1, - "HostName": "derp1g.tailscale.com", - "IPv4": "209.177.145.120", - "IPv6": "2607:f740:f::3eb", - "CanPort80": true - }, - { - "Name": "1i", - "RegionID": 1, - "HostName": "derp1i.tailscale.com", - "IPv4": "199.38.181.103", - "IPv6": "2607:f740:f::e19", - "CanPort80": true - }, - { - "Name": "1f", - "RegionID": 1, - "HostName": "derp1f.tailscale.com", - "IPv4": "199.38.181.104", - "IPv6": "2607:f740:f::bc", - "CanPort80": true - } - ] - }, - "10": { - "RegionID": 10, - "RegionCode": "sea", - "RegionName": "Seattle", - "Latitude": 47.609722, - "Longitude": -122.333056, - "Nodes": [ - { - "Name": "10c", - "RegionID": 10, - "HostName": "derp10c.tailscale.com", - "IPv4": "192.73.240.121", - "IPv6": "2607:f740:14::40c", - "CanPort80": true - }, - { - "Name": "10d", - "RegionID": 10, - "HostName": "derp10d.tailscale.com", - "IPv4": "192.73.240.132", - "IPv6": "2607:f740:14::500", - "CanPort80": true - }, - { - "Name": "10b", - "RegionID": 10, - "HostName": "derp10b.tailscale.com", - "IPv4": "192.73.240.161", - "IPv6": "2607:f740:14::61c", - "CanPort80": true - } - ] - }, - "11": { - "RegionID": 11, - "RegionCode": "sao", - "RegionName": "São Paulo", - "Latitude": -23.55, - "Longitude": -46.633333, - "Nodes": [ - { - "Name": "11f", - "RegionID": 11, - "HostName": "derp11f.tailscale.com", - "IPv4": "172.237.61.197", - "IPv6": "2600:3c0d::2000:3bff:fe44:6166", - "CanPort80": true - }, - { - "Name": "11g", - "RegionID": 11, - "HostName": "derp11g.tailscale.com", - "IPv4": "172.237.61.190", - "IPv6": "2600:3c0d::2000:62ff:febe:2e67", - "CanPort80": true - }, - { - "Name": "11e", - "RegionID": 11, - "HostName": "derp11e.tailscale.com", - "IPv4": "172.237.61.194", - "IPv6": "2600:3c0d::2000:d2ff:fe43:1790", - "CanPort80": true - } - ] - }, - "12": { - "RegionID": 12, - "RegionCode": "ord", - "RegionName": "Chicago", - "Latitude": 41.881944, - "Longitude": -87.627778, - "Nodes": [ - { - "Name": "12e", - "RegionID": 12, - "HostName": "derp12e.tailscale.com", - "IPv4": "209.177.158.15", - "IPv6": "2607:f740:e::b17", - "CanPort80": true - }, - { - "Name": "12f", - "RegionID": 12, - "HostName": "derp12f.tailscale.com", - "IPv4": "199.38.182.118", - "IPv6": "2607:f740:e::4c8", - "CanPort80": true - }, - { - "Name": "12d", - "RegionID": 12, - "HostName": "derp12d.tailscale.com", - "IPv4": "209.177.158.246", - "IPv6": "2607:f740:e::811", - "CanPort80": true - } - ] - }, - "13": { - "RegionID": 13, - "RegionCode": "den", - "RegionName": "Denver", - "Latitude": 39.7392, - "Longitude": -104.9849, - "Nodes": [ - { - "Name": "13c", - "RegionID": 13, - "HostName": "derp13c.tailscale.com", - "IPv4": "192.73.242.28", - "IPv6": "2607:f740:16::5c", - "CanPort80": true - }, - { - "Name": "13d", - "RegionID": 13, - "HostName": "derp13d.tailscale.com", - "IPv4": "192.73.242.204", - "IPv6": "2607:f740:16::c23", - "CanPort80": true - }, - { - "Name": "13b", - "RegionID": 13, - "HostName": "derp13b.tailscale.com", - "IPv4": "192.73.242.187", - "IPv6": "2607:f740:16::640", - "CanPort80": true - } - ] - }, - "14": { - "RegionID": 14, - "RegionCode": "ams", - "RegionName": "Amsterdam", - "Latitude": 52.372778, - "Longitude": 4.893611, - "Nodes": [ - { - "Name": "14c", - "RegionID": 14, - "HostName": "derp14c.tailscale.com", - "IPv4": "176.58.93.147", - "IPv6": "2a00:dd80:3c::b09", - "CanPort80": true - }, - { - "Name": "14d", - "RegionID": 14, - "HostName": "derp14d.tailscale.com", - "IPv4": "176.58.93.154", - "IPv6": "2a00:dd80:3c::3d5", - "CanPort80": true - }, - { - "Name": "14b", - "RegionID": 14, - "HostName": "derp14b.tailscale.com", - "IPv4": "176.58.93.248", - "IPv6": "2a00:dd80:3c::807", - "CanPort80": true - } - ] - }, - "15": { - "RegionID": 15, - "RegionCode": "jnb", - "RegionName": "Johannesburg", - "Latitude": -26.204444, - "Longitude": 28.045556, - "Nodes": [ - { - "Name": "15c", - "RegionID": 15, - "HostName": "derp15c.tailscale.com", - "IPv4": "102.67.165.185", - "IPv6": "2c0f:edb0:0:10::b59", - "CanPort80": true - }, - { - "Name": "15d", - "RegionID": 15, - "HostName": "derp15d.tailscale.com", - "IPv4": "102.67.165.36", - "IPv6": "2c0f:edb0:0:10::599", - "CanPort80": true - }, - { - "Name": "15b", - "RegionID": 15, - "HostName": "derp15b.tailscale.com", - "IPv4": "102.67.165.90", - "IPv6": "2c0f:edb0:0:10::963", - "CanPort80": true - } - ] - }, - "16": { - "RegionID": 16, - "RegionCode": "mia", - "RegionName": "Miami", - "Latitude": 25.78, - "Longitude": -80.21, - "Nodes": [ - { - "Name": "16c", - "RegionID": 16, - "HostName": "derp16c.tailscale.com", - "IPv4": "192.73.243.229", - "IPv6": "2607:f740:17::4e4", - "CanPort80": true - }, - { - "Name": "16d", - "RegionID": 16, - "HostName": "derp16d.tailscale.com", - "IPv4": "192.73.243.141", - "IPv6": "2607:f740:17::475", - "CanPort80": true - }, - { - "Name": "16b", - "RegionID": 16, - "HostName": "derp16b.tailscale.com", - "IPv4": "192.73.243.135", - "IPv6": "2607:f740:17::476", - "CanPort80": true - } - ] - }, - "17": { - "RegionID": 17, - "RegionCode": "lax", - "RegionName": "Los Angeles", - "Latitude": 34.05, - "Longitude": -118.25, - "Nodes": [ - { - "Name": "17c", - "RegionID": 17, - "HostName": "derp17c.tailscale.com", - "IPv4": "208.111.40.12", - "IPv6": "2607:f740:c::10", - "CanPort80": true - }, - { - "Name": "17d", - "RegionID": 17, - "HostName": "derp17d.tailscale.com", - "IPv4": "208.111.40.216", - "IPv6": "2607:f740:c::e1b", - "CanPort80": true - }, - { - "Name": "17b", - "RegionID": 17, - "HostName": "derp17b.tailscale.com", - "IPv4": "192.73.244.245", - "IPv6": "2607:f740:c::646", - "CanPort80": true - } - ] - }, - "18": { - "RegionID": 18, - "RegionCode": "par", - "RegionName": "Paris", - "Latitude": 48.856667, - "Longitude": 2.352222, - "Nodes": [ - { - "Name": "18c", - "RegionID": 18, - "HostName": "derp18c.tailscale.com", - "IPv4": "176.58.90.207", - "IPv6": "2a00:dd80:3e::c19", - "CanPort80": true - }, - { - "Name": "18d", - "RegionID": 18, - "HostName": "derp18d.tailscale.com", - "IPv4": "176.58.90.104", - "IPv6": "2a00:dd80:3e::f2e", - "CanPort80": true - }, - { - "Name": "18b", - "RegionID": 18, - "HostName": "derp18b.tailscale.com", - "IPv4": "176.58.90.147", - "IPv6": "2a00:dd80:3e::363", - "CanPort80": true - } - ] - }, - "19": { - "RegionID": 19, - "RegionCode": "mad", - "RegionName": "Madrid", - "Latitude": 40.416944, - "Longitude": -3.703333, - "Nodes": [ - { - "Name": "19c", - "RegionID": 19, - "HostName": "derp19c.tailscale.com", - "IPv4": "45.159.97.61", - "IPv6": "2a00:dd80:14:10::20", - "CanPort80": true - }, - { - "Name": "19d", - "RegionID": 19, - "HostName": "derp19d.tailscale.com", - "IPv4": "45.159.97.233", - "IPv6": "2a00:dd80:14:10::34a", - "CanPort80": true - }, - { - "Name": "19b", - "RegionID": 19, - "HostName": "derp19b.tailscale.com", - "IPv4": "45.159.97.144", - "IPv6": "2a00:dd80:14:10::335", - "CanPort80": true - } - ] - }, - "2": { - "RegionID": 2, - "RegionCode": "sfo", - "RegionName": "San Francisco", - "Latitude": 37.7775, - "Longitude": -122.416389, - "Nodes": [ - { - "Name": "2e", - "RegionID": 2, - "HostName": "derp2e.tailscale.com", - "IPv4": "192.73.252.134", - "IPv6": "2607:f740:0:3f::44c", - "CanPort80": true - }, - { - "Name": "2f", - "RegionID": 2, - "HostName": "derp2f.tailscale.com", - "IPv4": "208.111.34.178", - "IPv6": "2607:f740:0:3f::f4", - "CanPort80": true - }, - { - "Name": "2d", - "RegionID": 2, - "HostName": "derp2d.tailscale.com", - "IPv4": "192.73.252.65", - "IPv6": "2607:f740:0:3f::287", - "CanPort80": true - } - ] - }, - "20": { - "RegionID": 20, - "RegionCode": "hkg", - "RegionName": "Hong Kong", - "Latitude": 22.3193, - "Longitude": 114.1694, - "Nodes": [ - { - "Name": "20c", - "RegionID": 20, - "HostName": "derp20c.tailscale.com", - "IPv4": "205.147.105.30", - "IPv6": "2403:2500:8000:1::5fb", - "CanPort80": true - }, - { - "Name": "20d", - "RegionID": 20, - "HostName": "derp20d.tailscale.com", - "IPv4": "205.147.105.78", - "IPv6": "2403:2500:8000:1::e9a", - "CanPort80": true - }, - { - "Name": "20b", - "RegionID": 20, - "HostName": "derp20b.tailscale.com", - "IPv4": "103.6.84.152", - "IPv6": "2403:2500:8000:1::ef6", - "CanPort80": true - } - ] - }, - "21": { - "RegionID": 21, - "RegionCode": "tor", - "RegionName": "Toronto", - "Latitude": 43.741667, - "Longitude": -79.373333, - "Nodes": [ - { - "Name": "21c", - "RegionID": 21, - "HostName": "derp21c.tailscale.com", - "IPv4": "162.248.221.215", - "IPv6": "2607:f740:50::f10", - "CanPort80": true - }, - { - "Name": "21d", - "RegionID": 21, - "HostName": "derp21d.tailscale.com", - "IPv4": "162.248.221.248", - "IPv6": "2607:f740:50::ca4", - "CanPort80": true - }, - { - "Name": "21b", - "RegionID": 21, - "HostName": "derp21b.tailscale.com", - "IPv4": "162.248.221.199", - "IPv6": "2607:f740:50::1d1", - "CanPort80": true - } - ] - }, - "22": { - "RegionID": 22, - "RegionCode": "waw", - "RegionName": "Warsaw", - "Latitude": 52.23, - "Longitude": 21.011111, - "Nodes": [ - { - "Name": "22c", - "RegionID": 22, - "HostName": "derp22c.tailscale.com", - "IPv4": "45.159.98.253", - "IPv6": "2a00:dd80:40:100::3f", - "CanPort80": true - }, - { - "Name": "22d", - "RegionID": 22, - "HostName": "derp22d.tailscale.com", - "IPv4": "45.159.98.145", - "IPv6": "2a00:dd80:40:100::211", - "CanPort80": true - }, - { - "Name": "22b", - "RegionID": 22, - "HostName": "derp22b.tailscale.com", - "IPv4": "45.159.98.196", - "IPv6": "2a00:dd80:40:100::316", - "CanPort80": true - } - ] - }, - "23": { - "RegionID": 23, - "RegionCode": "dbi", - "RegionName": "Dubai", - "Latitude": 25.263056, - "Longitude": 55.297222, - "Nodes": [ - { - "Name": "23c", - "RegionID": 23, - "HostName": "derp23c.tailscale.com", - "IPv4": "185.34.3.207", - "IPv6": "2a00:dd80:3f:100::a50", - "CanPort80": true - }, - { - "Name": "23d", - "RegionID": 23, - "HostName": "derp23d.tailscale.com", - "IPv4": "185.34.3.75", - "IPv6": "2a00:dd80:3f:100::97e", - "CanPort80": true - }, - { - "Name": "23b", - "RegionID": 23, - "HostName": "derp23b.tailscale.com", - "IPv4": "185.34.3.232", - "IPv6": "2a00:dd80:3f:100::76f", - "CanPort80": true - } - ] - }, - "24": { - "RegionID": 24, - "RegionCode": "hnl", - "RegionName": "Honolulu", - "Latitude": 21.306944, - "Longitude": -157.858333, - "Nodes": [ - { - "Name": "24c", - "RegionID": 24, - "HostName": "derp24c.tailscale.com", - "IPv4": "208.83.233.233", - "IPv6": "2001:19f0:c000:c591:5400:04ff:fe26:2c5f", - "CanPort80": true - }, - { - "Name": "24d", - "RegionID": 24, - "HostName": "derp24d.tailscale.com", - "IPv4": "208.72.155.133", - "IPv6": "2001:19f0:c000:c564:5400:04ff:fe26:2ba8", - "CanPort80": true - }, - { - "Name": "24b", - "RegionID": 24, - "HostName": "derp24b.tailscale.com", - "IPv4": "208.83.234.151", - "IPv6": "2001:19f0:c000:c586:5400:04ff:fe26:2ba6", - "CanPort80": true - } - ] - }, - "25": { - "RegionID": 25, - "RegionCode": "nai", - "RegionName": "Nairobi", - "Latitude": -1.286389, - "Longitude": 36.817222, - "Nodes": [ - { - "Name": "25c", - "RegionID": 25, - "HostName": "derp25c.tailscale.com", - "IPv4": "102.67.167.37", - "IPv6": "2c0f:edb0:2000:1::2c7", - "CanPort80": true - }, - { - "Name": "25d", - "RegionID": 25, - "HostName": "derp25d.tailscale.com", - "IPv4": "102.67.167.188", - "IPv6": "2c0f:edb0:2000:1::188", - "CanPort80": true - }, - { - "Name": "25b", - "RegionID": 25, - "HostName": "derp25b.tailscale.com", - "IPv4": "102.67.167.245", - "IPv6": "2c0f:edb0:2000:1::2e9", - "CanPort80": true - } - ] - }, - "26": { - "RegionID": 26, - "RegionCode": "nue", - "RegionName": "Nuremberg", - "Latitude": 49.453889, - "Longitude": 11.0775, - "Nodes": [ - { - "Name": "26c", - "RegionID": 26, - "HostName": "derp26c.tailscale.com", - "IPv4": "49.12.193.137", - "IPv6": "2a01:4f8:1c1c:5c70::1", - "CanPort80": true - }, - { - "Name": "26d", - "RegionID": 26, - "HostName": "derp26d.tailscale.com", - "IPv4": "49.13.204.141", - "IPv6": "2a01:4f8:1c0c:7d06::1", - "CanPort80": true - }, - { - "Name": "26b", - "RegionID": 26, - "HostName": "derp26b.tailscale.com", - "IPv4": "167.235.72.200", - "IPv6": "2a01:4f8:1c1c:47b6::1", - "CanPort80": true - } - ] - }, - "27": { - "RegionID": 27, - "RegionCode": "iad", - "RegionName": "Ashburn", - "Latitude": 39.03, - "Longitude": -77.471111, - "Nodes": [ - { - "Name": "27d", - "RegionID": 27, - "HostName": "derp27d.tailscale.com", - "IPv4": "178.156.152.106", - "IPv6": "2a01:4ff:f0:3c8e::1", - "CanPort80": true - }, - { - "Name": "27c", - "RegionID": 27, - "HostName": "derp27c.tailscale.com", - "IPv4": "178.156.152.91", - "IPv6": "2a01:4ff:f0:3913::1", - "CanPort80": true - }, - { - "Name": "27e", - "RegionID": 27, - "HostName": "derp27e.tailscale.com", - "IPv4": "178.156.134.232", - "IPv6": "2a01:4ff:f0:28d4::1", - "CanPort80": true - }, - { - "Name": "27b", - "RegionID": 27, - "HostName": "derp27b.tailscale.com", - "IPv4": "5.161.218.233", - "IPv6": "2a01:4ff:f0:3db9::1", - "CanPort80": true - } - ] - }, - "28": { - "RegionID": 28, - "RegionCode": "hel", - "RegionName": "Helsinki", - "Latitude": 60.170833, - "Longitude": 24.9375, - "Nodes": [ - { - "Name": "28c", - "RegionID": 28, - "HostName": "derp28c.tailscale.com", - "IPv4": "95.217.2.165", - "IPv6": "2a01:4f9:c012:cd74::1", - "CanPort80": true - }, - { - "Name": "28d", - "RegionID": 28, - "HostName": "derp28d.tailscale.com", - "IPv4": "157.180.28.32", - "IPv6": "2a01:4f9:c012:2e5b::1", - "CanPort80": true - }, - { - "Name": "28b", - "RegionID": 28, - "HostName": "derp28b.tailscale.com", - "IPv4": "65.109.143.62", - "IPv6": "2a01:4f9:c012:d55c::1", - "CanPort80": true - } - ] - }, - "3": { - "RegionID": 3, - "RegionCode": "sin", - "RegionName": "Singapore", - "Latitude": 1.3521, - "Longitude": 103.8198, - "Nodes": [ - { - "Name": "3g", - "RegionID": 3, - "HostName": "derp3g.tailscale.com", - "IPv4": "172.237.72.79", - "IPv6": "2600:3c15::2000:adff:fe08:6fab", - "CanPort80": true - }, - { - "Name": "3f", - "RegionID": 3, - "HostName": "derp3f.tailscale.com", - "IPv4": "172.237.72.8", - "IPv6": "2600:3c15::2000:53ff:fe48:a668", - "CanPort80": true - }, - { - "Name": "3h", - "RegionID": 3, - "HostName": "derp3h.tailscale.com", - "IPv4": "172.237.66.30", - "IPv6": "2600:3c15::2000:3dff:fe44:50aa", - "CanPort80": true - }, - { - "Name": "3e", - "RegionID": 3, - "HostName": "derp3e.tailscale.com", - "IPv4": "172.237.72.43", - "IPv6": "2600:3c15::2000:6cff:fee4:d799", - "CanPort80": true - } - ] - }, - "4": { - "RegionID": 4, - "RegionCode": "fra", - "RegionName": "Frankfurt", - "Latitude": 50.1109, - "Longitude": 8.6821, - "Nodes": [ - { - "Name": "4h", - "RegionID": 4, - "HostName": "derp4h.tailscale.com", - "IPv4": "185.40.234.77", - "IPv6": "2a00:dd80:20::bcf", - "CanPort80": true - }, - { - "Name": "4g", - "RegionID": 4, - "HostName": "derp4g.tailscale.com", - "IPv4": "185.40.234.113", - "IPv6": "2a00:dd80:20::8f", - "CanPort80": true - }, - { - "Name": "4i", - "RegionID": 4, - "HostName": "derp4i.tailscale.com", - "IPv4": "185.40.234.53", - "IPv6": "2a00:dd80:20::8a6", - "CanPort80": true - }, - { - "Name": "4f", - "RegionID": 4, - "HostName": "derp4f.tailscale.com", - "IPv4": "185.40.234.219", - "IPv6": "2a00:dd80:20::a25", - "CanPort80": true - } - ] - }, - "5": { - "RegionID": 5, - "RegionCode": "syd", - "RegionName": "Sydney", - "Latitude": -33.867778, - "Longitude": 151.21, - "Nodes": [ - { - "Name": "5f", - "RegionID": 5, - "HostName": "derp5f.tailscale.com", - "IPv4": "172.105.166.103", - "IPv6": "2400:8907::2000:ccff:fe1f:80da", - "CanPort80": true - }, - { - "Name": "5g", - "RegionID": 5, - "HostName": "derp5g.tailscale.com", - "IPv4": "172.105.169.57", - "IPv6": "2400:8907::2000:2fff:fea7:57f4", - "CanPort80": true - }, - { - "Name": "5e", - "RegionID": 5, - "HostName": "derp5e.tailscale.com", - "IPv4": "172.105.179.230", - "IPv6": "2400:8907::2000:ceff:fe8d:4f4e", - "CanPort80": true - } - ] - }, - "6": { - "RegionID": 6, - "RegionCode": "blr", - "RegionName": "Bengaluru", - "Latitude": 12.9716, - "Longitude": 77.5946, - "Nodes": [ - { - "Name": "6a", - "RegionID": 6, - "HostName": "derp6.tailscale.com", - "IPv4": "68.183.90.120", - "IPv6": "2400:6180:100:d0::982:d001", - "CanPort80": true - } - ] - }, - "7": { - "RegionID": 7, - "RegionCode": "tok", - "RegionName": "Tokyo", - "Latitude": 35.6764, - "Longitude": 139.65, - "Nodes": [ - { - "Name": "7g", - "RegionID": 7, - "HostName": "derp7g.tailscale.com", - "IPv4": "172.238.6.179", - "IPv6": "2600:3c18::2000:3fff:fe80:3ebd", - "CanPort80": true - }, - { - "Name": "7f", - "RegionID": 7, - "HostName": "derp7f.tailscale.com", - "IPv4": "172.238.6.34", - "IPv6": "2600:3c18::2000:acff:fe8e:3ed5", - "CanPort80": true - }, - { - "Name": "7h", - "RegionID": 7, - "HostName": "derp7h.tailscale.com", - "IPv4": "172.237.28.183", - "IPv6": "2600:3c18::2000:b1ff:fea9:4560", - "CanPort80": true - }, - { - "Name": "7e", - "RegionID": 7, - "HostName": "derp7e.tailscale.com", - "IPv4": "172.238.6.180", - "IPv6": "2600:3c18::2000:60ff:fe0f:6e83", - "STUNOnly": true, - "CanPort80": true - } - ] - }, - "8": { - "RegionID": 8, - "RegionCode": "lhr", - "RegionName": "London", - "Latitude": 51.5072, - "Longitude": 0.1276, - "Nodes": [ - { - "Name": "8f", - "RegionID": 8, - "HostName": "derp8f.tailscale.com", - "IPv4": "176.58.88.183", - "IPv6": "2a00:dd80:3a::dfa", - "CanPort80": true - }, - { - "Name": "8g", - "RegionID": 8, - "HostName": "derp8g.tailscale.com", - "IPv4": "176.58.92.254", - "IPv6": "2a00:dd80:3a::ed", - "CanPort80": true - }, - { - "Name": "8e", - "RegionID": 8, - "HostName": "derp8e.tailscale.com", - "IPv4": "176.58.92.144", - "IPv6": "2a00:dd80:3a::b33", - "CanPort80": true - } - ] - }, - "9": { - "RegionID": 9, - "RegionCode": "dfw", - "RegionName": "Dallas", - "Latitude": 32.779167, - "Longitude": -96.808889, - "Nodes": [ - { - "Name": "9e", - "RegionID": 9, - "HostName": "derp9e.tailscale.com", - "IPv4": "192.73.248.83", - "IPv6": "2607:f740:100::359", - "CanPort80": true - }, - { - "Name": "9f", - "RegionID": 9, - "HostName": "derp9f.tailscale.com", - "IPv4": "209.177.156.197", - "IPv6": "2607:f740:100::cad", - "CanPort80": true - }, - { - "Name": "9d", - "RegionID": 9, - "HostName": "derp9d.tailscale.com", - "IPv4": "209.177.156.94", - "IPv6": "2607:f740:100::c05", - "CanPort80": true - } - ] - } - } - }, - "DisplayMessages": null, - "TKAEnabled": false, - "TKAHead": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", - "Domain": "kratail2tid@passkey", - "DomainAuditLogID": "", - "UserProfiles": { - "1440249486084758": { - "ID": 1440249486084758, - "LoginName": "tagged-server.tail78f774.ts.net", - "DisplayName": "tagged-server" - } - } + "PacketFilterRules": 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.124.195.93": { - "peer_name": "exit-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-kris/tailscaled.sock whois --json 100.124.195.93", - "response": null - }, - "100.116.18.24": { - "peer_name": "exit-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-kris/tailscaled.sock whois --json 100.116.18.24", - "response": null - }, - "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.107.162.14": { - "peer_name": "group-a-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-kris/tailscaled.sock whois --json 100.107.162.14", - "response": null - }, - "100.77.135.18": { - "peer_name": "group-b-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-kris/tailscaled.sock whois --json 100.77.135.18", - "response": null - }, - "100.105.127.107": { - "peer_name": "multi-exit-router", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-kris/tailscaled.sock whois --json 100.105.127.107", - "response": null - }, - "100.109.43.124": { - "peer_name": "router-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-kris/tailscaled.sock whois --json 100.109.43.124", - "response": null - }, - "100.65.172.123": { - "peer_name": "router-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-kris/tailscaled.sock whois --json 100.65.172.123", - "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 - } - }, "netmap": { - "SelfNode": { - "ID": 7728836216590060, - "StableID": "nf4dJTRQM321CNTRL", - "Name": "user-kris.tail78f774.ts.net.", - "User": 4538565228176803, - "Key": "nodekey:40d0f8f49fd519e4a4a2b7d278dcc8863254d4fb8b0219f1d1304cdd172e795f", - "KeyExpiry": "2026-08-19T14:09:34Z", - "DiscoKey": "discokey:60de987544859962048376b0950731bfa8017a7fc7df694ef376d4bb42eb9871", - "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:59717", "10.65.0.27:59717", "172.17.0.1:59717"], - "Hostinfo": { - "Hostname": "user-kris", - "Services": [ - { "Proto": "peerapi4", "Port": 40159 }, - { "Proto": "peerapi6", "Port": 40159 }, - { "Proto": "peerapi-dns-proxy", "Port": 1 } - ] - }, - "Created": "2026-02-20T14:09:34.803901523Z", - "MachineAuthorized": true, - "CapMap": { - "https://tailscale.com/cap/file-sharing": null, - "https://tailscale.com/cap/is-admin": null, - "https://tailscale.com/cap/ssh": null, - "https://tailscale.com/cap/tailnet-lock": null, - "probe-udp-lifetime": null, - "ssh-behavior-v1": null, - "ssh-env-vars": null, - "store-appc-routes": null, - "tailnet-display-name": ["kratail2tid@passkey"] - }, - "ComputedName": "user-kris", - "ComputedNameWithHost": "user-kris" - }, - "AllCaps": [ - "store-appc-routes", - "tailnet-display-name", - "https://tailscale.com/cap/tailnet-lock", - "ssh-behavior-v1", - "https://tailscale.com/cap/file-sharing", - "https://tailscale.com/cap/is-admin", - "probe-udp-lifetime", - "ssh-env-vars", - "https://tailscale.com/cap/ssh" - ], - "NodeKey": "nodekey:40d0f8f49fd519e4a4a2b7d278dcc8863254d4fb8b0219f1d1304cdd172e795f", - "MachineKey": "mkey:ff16066d907c58407972ee4a05a30386bd21bc0b420d8f9290eb70b95b3e1457", "Peers": [], - "DNS": { - "Routes": { - "tail78f774.ts.net.": null, - "ts.net.": [{ "Addr": "199.247.155.53" }, { "Addr": "2620:111:8007::53" }] - }, - "Domains": ["tail78f774.ts.net"], - "Proxied": true, - "ExitNodeFilteredSet": [".ts.net", ".tailscale.net"] - }, - "PacketFilter": [], - "PacketFilterRules": null, - "SSHPolicy": { "rules": [] }, - "CollectServices": false, - "DERPMap": { - "Regions": { - "1": { - "RegionID": 1, - "RegionCode": "nyc", - "RegionName": "New York City", - "Latitude": 40.7128, - "Longitude": -74.006, - "Nodes": [ - { - "Name": "1h", - "RegionID": 1, - "HostName": "derp1h.tailscale.com", - "IPv4": "199.38.181.93", - "IPv6": "2607:f740:f::afd", - "CanPort80": true - }, - { - "Name": "1g", - "RegionID": 1, - "HostName": "derp1g.tailscale.com", - "IPv4": "209.177.145.120", - "IPv6": "2607:f740:f::3eb", - "CanPort80": true - }, - { - "Name": "1i", - "RegionID": 1, - "HostName": "derp1i.tailscale.com", - "IPv4": "199.38.181.103", - "IPv6": "2607:f740:f::e19", - "CanPort80": true - }, - { - "Name": "1f", - "RegionID": 1, - "HostName": "derp1f.tailscale.com", - "IPv4": "199.38.181.104", - "IPv6": "2607:f740:f::bc", - "CanPort80": true - } - ] - }, - "10": { - "RegionID": 10, - "RegionCode": "sea", - "RegionName": "Seattle", - "Latitude": 47.609722, - "Longitude": -122.333056, - "Nodes": [ - { - "Name": "10c", - "RegionID": 10, - "HostName": "derp10c.tailscale.com", - "IPv4": "192.73.240.121", - "IPv6": "2607:f740:14::40c", - "CanPort80": true - }, - { - "Name": "10d", - "RegionID": 10, - "HostName": "derp10d.tailscale.com", - "IPv4": "192.73.240.132", - "IPv6": "2607:f740:14::500", - "CanPort80": true - }, - { - "Name": "10b", - "RegionID": 10, - "HostName": "derp10b.tailscale.com", - "IPv4": "192.73.240.161", - "IPv6": "2607:f740:14::61c", - "CanPort80": true - } - ] - }, - "11": { - "RegionID": 11, - "RegionCode": "sao", - "RegionName": "São Paulo", - "Latitude": -23.55, - "Longitude": -46.633333, - "Nodes": [ - { - "Name": "11f", - "RegionID": 11, - "HostName": "derp11f.tailscale.com", - "IPv4": "172.237.61.197", - "IPv6": "2600:3c0d::2000:3bff:fe44:6166", - "CanPort80": true - }, - { - "Name": "11g", - "RegionID": 11, - "HostName": "derp11g.tailscale.com", - "IPv4": "172.237.61.190", - "IPv6": "2600:3c0d::2000:62ff:febe:2e67", - "CanPort80": true - }, - { - "Name": "11e", - "RegionID": 11, - "HostName": "derp11e.tailscale.com", - "IPv4": "172.237.61.194", - "IPv6": "2600:3c0d::2000:d2ff:fe43:1790", - "CanPort80": true - } - ] - }, - "12": { - "RegionID": 12, - "RegionCode": "ord", - "RegionName": "Chicago", - "Latitude": 41.881944, - "Longitude": -87.627778, - "Nodes": [ - { - "Name": "12e", - "RegionID": 12, - "HostName": "derp12e.tailscale.com", - "IPv4": "209.177.158.15", - "IPv6": "2607:f740:e::b17", - "CanPort80": true - }, - { - "Name": "12f", - "RegionID": 12, - "HostName": "derp12f.tailscale.com", - "IPv4": "199.38.182.118", - "IPv6": "2607:f740:e::4c8", - "CanPort80": true - }, - { - "Name": "12d", - "RegionID": 12, - "HostName": "derp12d.tailscale.com", - "IPv4": "209.177.158.246", - "IPv6": "2607:f740:e::811", - "CanPort80": true - } - ] - }, - "13": { - "RegionID": 13, - "RegionCode": "den", - "RegionName": "Denver", - "Latitude": 39.7392, - "Longitude": -104.9849, - "Nodes": [ - { - "Name": "13c", - "RegionID": 13, - "HostName": "derp13c.tailscale.com", - "IPv4": "192.73.242.28", - "IPv6": "2607:f740:16::5c", - "CanPort80": true - }, - { - "Name": "13d", - "RegionID": 13, - "HostName": "derp13d.tailscale.com", - "IPv4": "192.73.242.204", - "IPv6": "2607:f740:16::c23", - "CanPort80": true - }, - { - "Name": "13b", - "RegionID": 13, - "HostName": "derp13b.tailscale.com", - "IPv4": "192.73.242.187", - "IPv6": "2607:f740:16::640", - "CanPort80": true - } - ] - }, - "14": { - "RegionID": 14, - "RegionCode": "ams", - "RegionName": "Amsterdam", - "Latitude": 52.372778, - "Longitude": 4.893611, - "Nodes": [ - { - "Name": "14c", - "RegionID": 14, - "HostName": "derp14c.tailscale.com", - "IPv4": "176.58.93.147", - "IPv6": "2a00:dd80:3c::b09", - "CanPort80": true - }, - { - "Name": "14d", - "RegionID": 14, - "HostName": "derp14d.tailscale.com", - "IPv4": "176.58.93.154", - "IPv6": "2a00:dd80:3c::3d5", - "CanPort80": true - }, - { - "Name": "14b", - "RegionID": 14, - "HostName": "derp14b.tailscale.com", - "IPv4": "176.58.93.248", - "IPv6": "2a00:dd80:3c::807", - "CanPort80": true - } - ] - }, - "15": { - "RegionID": 15, - "RegionCode": "jnb", - "RegionName": "Johannesburg", - "Latitude": -26.204444, - "Longitude": 28.045556, - "Nodes": [ - { - "Name": "15c", - "RegionID": 15, - "HostName": "derp15c.tailscale.com", - "IPv4": "102.67.165.185", - "IPv6": "2c0f:edb0:0:10::b59", - "CanPort80": true - }, - { - "Name": "15d", - "RegionID": 15, - "HostName": "derp15d.tailscale.com", - "IPv4": "102.67.165.36", - "IPv6": "2c0f:edb0:0:10::599", - "CanPort80": true - }, - { - "Name": "15b", - "RegionID": 15, - "HostName": "derp15b.tailscale.com", - "IPv4": "102.67.165.90", - "IPv6": "2c0f:edb0:0:10::963", - "CanPort80": true - } - ] - }, - "16": { - "RegionID": 16, - "RegionCode": "mia", - "RegionName": "Miami", - "Latitude": 25.78, - "Longitude": -80.21, - "Nodes": [ - { - "Name": "16c", - "RegionID": 16, - "HostName": "derp16c.tailscale.com", - "IPv4": "192.73.243.229", - "IPv6": "2607:f740:17::4e4", - "CanPort80": true - }, - { - "Name": "16d", - "RegionID": 16, - "HostName": "derp16d.tailscale.com", - "IPv4": "192.73.243.141", - "IPv6": "2607:f740:17::475", - "CanPort80": true - }, - { - "Name": "16b", - "RegionID": 16, - "HostName": "derp16b.tailscale.com", - "IPv4": "192.73.243.135", - "IPv6": "2607:f740:17::476", - "CanPort80": true - } - ] - }, - "17": { - "RegionID": 17, - "RegionCode": "lax", - "RegionName": "Los Angeles", - "Latitude": 34.05, - "Longitude": -118.25, - "Nodes": [ - { - "Name": "17c", - "RegionID": 17, - "HostName": "derp17c.tailscale.com", - "IPv4": "208.111.40.12", - "IPv6": "2607:f740:c::10", - "CanPort80": true - }, - { - "Name": "17d", - "RegionID": 17, - "HostName": "derp17d.tailscale.com", - "IPv4": "208.111.40.216", - "IPv6": "2607:f740:c::e1b", - "CanPort80": true - }, - { - "Name": "17b", - "RegionID": 17, - "HostName": "derp17b.tailscale.com", - "IPv4": "192.73.244.245", - "IPv6": "2607:f740:c::646", - "CanPort80": true - } - ] - }, - "18": { - "RegionID": 18, - "RegionCode": "par", - "RegionName": "Paris", - "Latitude": 48.856667, - "Longitude": 2.352222, - "Nodes": [ - { - "Name": "18c", - "RegionID": 18, - "HostName": "derp18c.tailscale.com", - "IPv4": "176.58.90.207", - "IPv6": "2a00:dd80:3e::c19", - "CanPort80": true - }, - { - "Name": "18d", - "RegionID": 18, - "HostName": "derp18d.tailscale.com", - "IPv4": "176.58.90.104", - "IPv6": "2a00:dd80:3e::f2e", - "CanPort80": true - }, - { - "Name": "18b", - "RegionID": 18, - "HostName": "derp18b.tailscale.com", - "IPv4": "176.58.90.147", - "IPv6": "2a00:dd80:3e::363", - "CanPort80": true - } - ] - }, - "19": { - "RegionID": 19, - "RegionCode": "mad", - "RegionName": "Madrid", - "Latitude": 40.416944, - "Longitude": -3.703333, - "Nodes": [ - { - "Name": "19c", - "RegionID": 19, - "HostName": "derp19c.tailscale.com", - "IPv4": "45.159.97.61", - "IPv6": "2a00:dd80:14:10::20", - "CanPort80": true - }, - { - "Name": "19d", - "RegionID": 19, - "HostName": "derp19d.tailscale.com", - "IPv4": "45.159.97.233", - "IPv6": "2a00:dd80:14:10::34a", - "CanPort80": true - }, - { - "Name": "19b", - "RegionID": 19, - "HostName": "derp19b.tailscale.com", - "IPv4": "45.159.97.144", - "IPv6": "2a00:dd80:14:10::335", - "CanPort80": true - } - ] - }, - "2": { - "RegionID": 2, - "RegionCode": "sfo", - "RegionName": "San Francisco", - "Latitude": 37.7775, - "Longitude": -122.416389, - "Nodes": [ - { - "Name": "2e", - "RegionID": 2, - "HostName": "derp2e.tailscale.com", - "IPv4": "192.73.252.134", - "IPv6": "2607:f740:0:3f::44c", - "CanPort80": true - }, - { - "Name": "2f", - "RegionID": 2, - "HostName": "derp2f.tailscale.com", - "IPv4": "208.111.34.178", - "IPv6": "2607:f740:0:3f::f4", - "CanPort80": true - }, - { - "Name": "2d", - "RegionID": 2, - "HostName": "derp2d.tailscale.com", - "IPv4": "192.73.252.65", - "IPv6": "2607:f740:0:3f::287", - "CanPort80": true - } - ] - }, - "20": { - "RegionID": 20, - "RegionCode": "hkg", - "RegionName": "Hong Kong", - "Latitude": 22.3193, - "Longitude": 114.1694, - "Nodes": [ - { - "Name": "20c", - "RegionID": 20, - "HostName": "derp20c.tailscale.com", - "IPv4": "205.147.105.30", - "IPv6": "2403:2500:8000:1::5fb", - "CanPort80": true - }, - { - "Name": "20d", - "RegionID": 20, - "HostName": "derp20d.tailscale.com", - "IPv4": "205.147.105.78", - "IPv6": "2403:2500:8000:1::e9a", - "CanPort80": true - }, - { - "Name": "20b", - "RegionID": 20, - "HostName": "derp20b.tailscale.com", - "IPv4": "103.6.84.152", - "IPv6": "2403:2500:8000:1::ef6", - "CanPort80": true - } - ] - }, - "21": { - "RegionID": 21, - "RegionCode": "tor", - "RegionName": "Toronto", - "Latitude": 43.741667, - "Longitude": -79.373333, - "Nodes": [ - { - "Name": "21c", - "RegionID": 21, - "HostName": "derp21c.tailscale.com", - "IPv4": "162.248.221.215", - "IPv6": "2607:f740:50::f10", - "CanPort80": true - }, - { - "Name": "21d", - "RegionID": 21, - "HostName": "derp21d.tailscale.com", - "IPv4": "162.248.221.248", - "IPv6": "2607:f740:50::ca4", - "CanPort80": true - }, - { - "Name": "21b", - "RegionID": 21, - "HostName": "derp21b.tailscale.com", - "IPv4": "162.248.221.199", - "IPv6": "2607:f740:50::1d1", - "CanPort80": true - } - ] - }, - "22": { - "RegionID": 22, - "RegionCode": "waw", - "RegionName": "Warsaw", - "Latitude": 52.23, - "Longitude": 21.011111, - "Nodes": [ - { - "Name": "22c", - "RegionID": 22, - "HostName": "derp22c.tailscale.com", - "IPv4": "45.159.98.253", - "IPv6": "2a00:dd80:40:100::3f", - "CanPort80": true - }, - { - "Name": "22d", - "RegionID": 22, - "HostName": "derp22d.tailscale.com", - "IPv4": "45.159.98.145", - "IPv6": "2a00:dd80:40:100::211", - "CanPort80": true - }, - { - "Name": "22b", - "RegionID": 22, - "HostName": "derp22b.tailscale.com", - "IPv4": "45.159.98.196", - "IPv6": "2a00:dd80:40:100::316", - "CanPort80": true - } - ] - }, - "23": { - "RegionID": 23, - "RegionCode": "dbi", - "RegionName": "Dubai", - "Latitude": 25.263056, - "Longitude": 55.297222, - "Nodes": [ - { - "Name": "23c", - "RegionID": 23, - "HostName": "derp23c.tailscale.com", - "IPv4": "185.34.3.207", - "IPv6": "2a00:dd80:3f:100::a50", - "CanPort80": true - }, - { - "Name": "23d", - "RegionID": 23, - "HostName": "derp23d.tailscale.com", - "IPv4": "185.34.3.75", - "IPv6": "2a00:dd80:3f:100::97e", - "CanPort80": true - }, - { - "Name": "23b", - "RegionID": 23, - "HostName": "derp23b.tailscale.com", - "IPv4": "185.34.3.232", - "IPv6": "2a00:dd80:3f:100::76f", - "CanPort80": true - } - ] - }, - "24": { - "RegionID": 24, - "RegionCode": "hnl", - "RegionName": "Honolulu", - "Latitude": 21.306944, - "Longitude": -157.858333, - "Nodes": [ - { - "Name": "24c", - "RegionID": 24, - "HostName": "derp24c.tailscale.com", - "IPv4": "208.83.233.233", - "IPv6": "2001:19f0:c000:c591:5400:04ff:fe26:2c5f", - "CanPort80": true - }, - { - "Name": "24d", - "RegionID": 24, - "HostName": "derp24d.tailscale.com", - "IPv4": "208.72.155.133", - "IPv6": "2001:19f0:c000:c564:5400:04ff:fe26:2ba8", - "CanPort80": true - }, - { - "Name": "24b", - "RegionID": 24, - "HostName": "derp24b.tailscale.com", - "IPv4": "208.83.234.151", - "IPv6": "2001:19f0:c000:c586:5400:04ff:fe26:2ba6", - "CanPort80": true - } - ] - }, - "25": { - "RegionID": 25, - "RegionCode": "nai", - "RegionName": "Nairobi", - "Latitude": -1.286389, - "Longitude": 36.817222, - "Nodes": [ - { - "Name": "25c", - "RegionID": 25, - "HostName": "derp25c.tailscale.com", - "IPv4": "102.67.167.37", - "IPv6": "2c0f:edb0:2000:1::2c7", - "CanPort80": true - }, - { - "Name": "25d", - "RegionID": 25, - "HostName": "derp25d.tailscale.com", - "IPv4": "102.67.167.188", - "IPv6": "2c0f:edb0:2000:1::188", - "CanPort80": true - }, - { - "Name": "25b", - "RegionID": 25, - "HostName": "derp25b.tailscale.com", - "IPv4": "102.67.167.245", - "IPv6": "2c0f:edb0:2000:1::2e9", - "CanPort80": true - } - ] - }, - "26": { - "RegionID": 26, - "RegionCode": "nue", - "RegionName": "Nuremberg", - "Latitude": 49.453889, - "Longitude": 11.0775, - "Nodes": [ - { - "Name": "26c", - "RegionID": 26, - "HostName": "derp26c.tailscale.com", - "IPv4": "49.12.193.137", - "IPv6": "2a01:4f8:1c1c:5c70::1", - "CanPort80": true - }, - { - "Name": "26d", - "RegionID": 26, - "HostName": "derp26d.tailscale.com", - "IPv4": "49.13.204.141", - "IPv6": "2a01:4f8:1c0c:7d06::1", - "CanPort80": true - }, - { - "Name": "26b", - "RegionID": 26, - "HostName": "derp26b.tailscale.com", - "IPv4": "167.235.72.200", - "IPv6": "2a01:4f8:1c1c:47b6::1", - "CanPort80": true - } - ] - }, - "27": { - "RegionID": 27, - "RegionCode": "iad", - "RegionName": "Ashburn", - "Latitude": 39.03, - "Longitude": -77.471111, - "Nodes": [ - { - "Name": "27d", - "RegionID": 27, - "HostName": "derp27d.tailscale.com", - "IPv4": "178.156.152.106", - "IPv6": "2a01:4ff:f0:3c8e::1", - "CanPort80": true - }, - { - "Name": "27c", - "RegionID": 27, - "HostName": "derp27c.tailscale.com", - "IPv4": "178.156.152.91", - "IPv6": "2a01:4ff:f0:3913::1", - "CanPort80": true - }, - { - "Name": "27e", - "RegionID": 27, - "HostName": "derp27e.tailscale.com", - "IPv4": "178.156.134.232", - "IPv6": "2a01:4ff:f0:28d4::1", - "CanPort80": true - }, - { - "Name": "27b", - "RegionID": 27, - "HostName": "derp27b.tailscale.com", - "IPv4": "5.161.218.233", - "IPv6": "2a01:4ff:f0:3db9::1", - "CanPort80": true - } - ] - }, - "28": { - "RegionID": 28, - "RegionCode": "hel", - "RegionName": "Helsinki", - "Latitude": 60.170833, - "Longitude": 24.9375, - "Nodes": [ - { - "Name": "28c", - "RegionID": 28, - "HostName": "derp28c.tailscale.com", - "IPv4": "95.217.2.165", - "IPv6": "2a01:4f9:c012:cd74::1", - "CanPort80": true - }, - { - "Name": "28d", - "RegionID": 28, - "HostName": "derp28d.tailscale.com", - "IPv4": "157.180.28.32", - "IPv6": "2a01:4f9:c012:2e5b::1", - "CanPort80": true - }, - { - "Name": "28b", - "RegionID": 28, - "HostName": "derp28b.tailscale.com", - "IPv4": "65.109.143.62", - "IPv6": "2a01:4f9:c012:d55c::1", - "CanPort80": true - } - ] - }, - "3": { - "RegionID": 3, - "RegionCode": "sin", - "RegionName": "Singapore", - "Latitude": 1.3521, - "Longitude": 103.8198, - "Nodes": [ - { - "Name": "3g", - "RegionID": 3, - "HostName": "derp3g.tailscale.com", - "IPv4": "172.237.72.79", - "IPv6": "2600:3c15::2000:adff:fe08:6fab", - "CanPort80": true - }, - { - "Name": "3f", - "RegionID": 3, - "HostName": "derp3f.tailscale.com", - "IPv4": "172.237.72.8", - "IPv6": "2600:3c15::2000:53ff:fe48:a668", - "CanPort80": true - }, - { - "Name": "3h", - "RegionID": 3, - "HostName": "derp3h.tailscale.com", - "IPv4": "172.237.66.30", - "IPv6": "2600:3c15::2000:3dff:fe44:50aa", - "CanPort80": true - }, - { - "Name": "3e", - "RegionID": 3, - "HostName": "derp3e.tailscale.com", - "IPv4": "172.237.72.43", - "IPv6": "2600:3c15::2000:6cff:fee4:d799", - "CanPort80": true - } - ] - }, - "4": { - "RegionID": 4, - "RegionCode": "fra", - "RegionName": "Frankfurt", - "Latitude": 50.1109, - "Longitude": 8.6821, - "Nodes": [ - { - "Name": "4h", - "RegionID": 4, - "HostName": "derp4h.tailscale.com", - "IPv4": "185.40.234.77", - "IPv6": "2a00:dd80:20::bcf", - "CanPort80": true - }, - { - "Name": "4g", - "RegionID": 4, - "HostName": "derp4g.tailscale.com", - "IPv4": "185.40.234.113", - "IPv6": "2a00:dd80:20::8f", - "CanPort80": true - }, - { - "Name": "4i", - "RegionID": 4, - "HostName": "derp4i.tailscale.com", - "IPv4": "185.40.234.53", - "IPv6": "2a00:dd80:20::8a6", - "CanPort80": true - }, - { - "Name": "4f", - "RegionID": 4, - "HostName": "derp4f.tailscale.com", - "IPv4": "185.40.234.219", - "IPv6": "2a00:dd80:20::a25", - "CanPort80": true - } - ] - }, - "5": { - "RegionID": 5, - "RegionCode": "syd", - "RegionName": "Sydney", - "Latitude": -33.867778, - "Longitude": 151.21, - "Nodes": [ - { - "Name": "5f", - "RegionID": 5, - "HostName": "derp5f.tailscale.com", - "IPv4": "172.105.166.103", - "IPv6": "2400:8907::2000:ccff:fe1f:80da", - "CanPort80": true - }, - { - "Name": "5g", - "RegionID": 5, - "HostName": "derp5g.tailscale.com", - "IPv4": "172.105.169.57", - "IPv6": "2400:8907::2000:2fff:fea7:57f4", - "CanPort80": true - }, - { - "Name": "5e", - "RegionID": 5, - "HostName": "derp5e.tailscale.com", - "IPv4": "172.105.179.230", - "IPv6": "2400:8907::2000:ceff:fe8d:4f4e", - "CanPort80": true - } - ] - }, - "6": { - "RegionID": 6, - "RegionCode": "blr", - "RegionName": "Bengaluru", - "Latitude": 12.9716, - "Longitude": 77.5946, - "Nodes": [ - { - "Name": "6a", - "RegionID": 6, - "HostName": "derp6.tailscale.com", - "IPv4": "68.183.90.120", - "IPv6": "2400:6180:100:d0::982:d001", - "CanPort80": true - } - ] - }, - "7": { - "RegionID": 7, - "RegionCode": "tok", - "RegionName": "Tokyo", - "Latitude": 35.6764, - "Longitude": 139.65, - "Nodes": [ - { - "Name": "7g", - "RegionID": 7, - "HostName": "derp7g.tailscale.com", - "IPv4": "172.238.6.179", - "IPv6": "2600:3c18::2000:3fff:fe80:3ebd", - "CanPort80": true - }, - { - "Name": "7f", - "RegionID": 7, - "HostName": "derp7f.tailscale.com", - "IPv4": "172.238.6.34", - "IPv6": "2600:3c18::2000:acff:fe8e:3ed5", - "CanPort80": true - }, - { - "Name": "7h", - "RegionID": 7, - "HostName": "derp7h.tailscale.com", - "IPv4": "172.237.28.183", - "IPv6": "2600:3c18::2000:b1ff:fea9:4560", - "CanPort80": true - }, - { - "Name": "7e", - "RegionID": 7, - "HostName": "derp7e.tailscale.com", - "IPv4": "172.238.6.180", - "IPv6": "2600:3c18::2000:60ff:fe0f:6e83", - "STUNOnly": true, - "CanPort80": true - } - ] - }, - "8": { - "RegionID": 8, - "RegionCode": "lhr", - "RegionName": "London", - "Latitude": 51.5072, - "Longitude": 0.1276, - "Nodes": [ - { - "Name": "8f", - "RegionID": 8, - "HostName": "derp8f.tailscale.com", - "IPv4": "176.58.88.183", - "IPv6": "2a00:dd80:3a::dfa", - "CanPort80": true - }, - { - "Name": "8g", - "RegionID": 8, - "HostName": "derp8g.tailscale.com", - "IPv4": "176.58.92.254", - "IPv6": "2a00:dd80:3a::ed", - "CanPort80": true - }, - { - "Name": "8e", - "RegionID": 8, - "HostName": "derp8e.tailscale.com", - "IPv4": "176.58.92.144", - "IPv6": "2a00:dd80:3a::b33", - "CanPort80": true - } - ] - }, - "9": { - "RegionID": 9, - "RegionCode": "dfw", - "RegionName": "Dallas", - "Latitude": 32.779167, - "Longitude": -96.808889, - "Nodes": [ - { - "Name": "9e", - "RegionID": 9, - "HostName": "derp9e.tailscale.com", - "IPv4": "192.73.248.83", - "IPv6": "2607:f740:100::359", - "CanPort80": true - }, - { - "Name": "9f", - "RegionID": 9, - "HostName": "derp9f.tailscale.com", - "IPv4": "209.177.156.197", - "IPv6": "2607:f740:100::cad", - "CanPort80": true - }, - { - "Name": "9d", - "RegionID": 9, - "HostName": "derp9d.tailscale.com", - "IPv4": "209.177.156.94", - "IPv6": "2607:f740:100::c05", - "CanPort80": true - } - ] - } - } - }, - "DisplayMessages": null, - "TKAEnabled": false, - "TKAHead": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", - "Domain": "kratail2tid@passkey", - "DomainAuditLogID": "", - "UserProfiles": { - "4538565228176803": { - "ID": 4538565228176803, - "LoginName": "kristoffer@dalby.cc", - "DisplayName": "kristoffer" - } - } + "PacketFilterRules": 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.124.195.93": { - "peer_name": "exit-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-mon/tailscaled.sock whois --json 100.124.195.93", - "response": null - }, - "100.116.18.24": { - "peer_name": "exit-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-mon/tailscaled.sock whois --json 100.116.18.24", - "response": null - }, - "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.107.162.14": { - "peer_name": "group-a-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-mon/tailscaled.sock whois --json 100.107.162.14", - "response": null - }, - "100.77.135.18": { - "peer_name": "group-b-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-mon/tailscaled.sock whois --json 100.77.135.18", - "response": null - }, - "100.105.127.107": { - "peer_name": "multi-exit-router", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-mon/tailscaled.sock whois --json 100.105.127.107", - "response": null - }, - "100.109.43.124": { - "peer_name": "router-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-mon/tailscaled.sock whois --json 100.109.43.124", - "response": null - }, - "100.65.172.123": { - "peer_name": "router-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-mon/tailscaled.sock whois --json 100.65.172.123", - "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 - } - }, "netmap": { - "SelfNode": { - "ID": 1840115676059256, - "StableID": "nFzZ7giPNF11CNTRL", - "Name": "user-mon.tail78f774.ts.net.", - "User": 3982058329734709, - "Key": "nodekey:1ca6cca66d2b3811ec290c2f7ac30125c3568e19e303a8e30f6b165c9ee75a51", - "KeyExpiry": "2026-08-19T14:09:00Z", - "DiscoKey": "discokey:67ba1473894f09b564073adb12b27df2a45c513afd9e48922a0346d5d2715d12", - "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:36593", "10.65.0.27:36593", "172.17.0.1:36593"], - "Hostinfo": { - "Hostname": "user-mon", - "Services": [ - { "Proto": "peerapi4", "Port": 33201 }, - { "Proto": "peerapi6", "Port": 33201 }, - { "Proto": "peerapi-dns-proxy", "Port": 1 } - ] - }, - "Created": "2026-02-20T14:09:00.203639664Z", - "MachineAuthorized": true, - "CapMap": { - "https://tailscale.com/cap/file-sharing": null, - "https://tailscale.com/cap/is-admin": null, - "https://tailscale.com/cap/ssh": null, - "https://tailscale.com/cap/tailnet-lock": null, - "probe-udp-lifetime": null, - "ssh-behavior-v1": null, - "ssh-env-vars": null, - "store-appc-routes": null, - "tailnet-display-name": ["kratail2tid@passkey"] - }, - "ComputedName": "user-mon", - "ComputedNameWithHost": "user-mon" - }, - "AllCaps": [ - "https://tailscale.com/cap/ssh", - "ssh-env-vars", - "https://tailscale.com/cap/is-admin", - "ssh-behavior-v1", - "https://tailscale.com/cap/tailnet-lock", - "https://tailscale.com/cap/file-sharing", - "probe-udp-lifetime", - "tailnet-display-name", - "store-appc-routes" - ], - "NodeKey": "nodekey:1ca6cca66d2b3811ec290c2f7ac30125c3568e19e303a8e30f6b165c9ee75a51", - "MachineKey": "mkey:d63fc325663eef5dabd4d236e1fa5a26ed14ad31ea0711840cf755a5e8a9df39", "Peers": [], - "DNS": { - "Routes": { - "tail78f774.ts.net.": null, - "ts.net.": [{ "Addr": "199.247.155.53" }, { "Addr": "2620:111:8007::53" }] - }, - "Domains": ["tail78f774.ts.net"], - "Proxied": true, - "ExitNodeFilteredSet": [".ts.net", ".tailscale.net"] - }, - "PacketFilter": [], - "PacketFilterRules": null, - "SSHPolicy": { "rules": [] }, - "CollectServices": false, - "DERPMap": { - "Regions": { - "1": { - "RegionID": 1, - "RegionCode": "nyc", - "RegionName": "New York City", - "Latitude": 40.7128, - "Longitude": -74.006, - "Nodes": [ - { - "Name": "1h", - "RegionID": 1, - "HostName": "derp1h.tailscale.com", - "IPv4": "199.38.181.93", - "IPv6": "2607:f740:f::afd", - "CanPort80": true - }, - { - "Name": "1g", - "RegionID": 1, - "HostName": "derp1g.tailscale.com", - "IPv4": "209.177.145.120", - "IPv6": "2607:f740:f::3eb", - "CanPort80": true - }, - { - "Name": "1i", - "RegionID": 1, - "HostName": "derp1i.tailscale.com", - "IPv4": "199.38.181.103", - "IPv6": "2607:f740:f::e19", - "CanPort80": true - }, - { - "Name": "1f", - "RegionID": 1, - "HostName": "derp1f.tailscale.com", - "IPv4": "199.38.181.104", - "IPv6": "2607:f740:f::bc", - "CanPort80": true - } - ] - }, - "10": { - "RegionID": 10, - "RegionCode": "sea", - "RegionName": "Seattle", - "Latitude": 47.609722, - "Longitude": -122.333056, - "Nodes": [ - { - "Name": "10c", - "RegionID": 10, - "HostName": "derp10c.tailscale.com", - "IPv4": "192.73.240.121", - "IPv6": "2607:f740:14::40c", - "CanPort80": true - }, - { - "Name": "10d", - "RegionID": 10, - "HostName": "derp10d.tailscale.com", - "IPv4": "192.73.240.132", - "IPv6": "2607:f740:14::500", - "CanPort80": true - }, - { - "Name": "10b", - "RegionID": 10, - "HostName": "derp10b.tailscale.com", - "IPv4": "192.73.240.161", - "IPv6": "2607:f740:14::61c", - "CanPort80": true - } - ] - }, - "11": { - "RegionID": 11, - "RegionCode": "sao", - "RegionName": "São Paulo", - "Latitude": -23.55, - "Longitude": -46.633333, - "Nodes": [ - { - "Name": "11f", - "RegionID": 11, - "HostName": "derp11f.tailscale.com", - "IPv4": "172.237.61.197", - "IPv6": "2600:3c0d::2000:3bff:fe44:6166", - "CanPort80": true - }, - { - "Name": "11g", - "RegionID": 11, - "HostName": "derp11g.tailscale.com", - "IPv4": "172.237.61.190", - "IPv6": "2600:3c0d::2000:62ff:febe:2e67", - "CanPort80": true - }, - { - "Name": "11e", - "RegionID": 11, - "HostName": "derp11e.tailscale.com", - "IPv4": "172.237.61.194", - "IPv6": "2600:3c0d::2000:d2ff:fe43:1790", - "CanPort80": true - } - ] - }, - "12": { - "RegionID": 12, - "RegionCode": "ord", - "RegionName": "Chicago", - "Latitude": 41.881944, - "Longitude": -87.627778, - "Nodes": [ - { - "Name": "12e", - "RegionID": 12, - "HostName": "derp12e.tailscale.com", - "IPv4": "209.177.158.15", - "IPv6": "2607:f740:e::b17", - "CanPort80": true - }, - { - "Name": "12f", - "RegionID": 12, - "HostName": "derp12f.tailscale.com", - "IPv4": "199.38.182.118", - "IPv6": "2607:f740:e::4c8", - "CanPort80": true - }, - { - "Name": "12d", - "RegionID": 12, - "HostName": "derp12d.tailscale.com", - "IPv4": "209.177.158.246", - "IPv6": "2607:f740:e::811", - "CanPort80": true - } - ] - }, - "13": { - "RegionID": 13, - "RegionCode": "den", - "RegionName": "Denver", - "Latitude": 39.7392, - "Longitude": -104.9849, - "Nodes": [ - { - "Name": "13c", - "RegionID": 13, - "HostName": "derp13c.tailscale.com", - "IPv4": "192.73.242.28", - "IPv6": "2607:f740:16::5c", - "CanPort80": true - }, - { - "Name": "13d", - "RegionID": 13, - "HostName": "derp13d.tailscale.com", - "IPv4": "192.73.242.204", - "IPv6": "2607:f740:16::c23", - "CanPort80": true - }, - { - "Name": "13b", - "RegionID": 13, - "HostName": "derp13b.tailscale.com", - "IPv4": "192.73.242.187", - "IPv6": "2607:f740:16::640", - "CanPort80": true - } - ] - }, - "14": { - "RegionID": 14, - "RegionCode": "ams", - "RegionName": "Amsterdam", - "Latitude": 52.372778, - "Longitude": 4.893611, - "Nodes": [ - { - "Name": "14c", - "RegionID": 14, - "HostName": "derp14c.tailscale.com", - "IPv4": "176.58.93.147", - "IPv6": "2a00:dd80:3c::b09", - "CanPort80": true - }, - { - "Name": "14d", - "RegionID": 14, - "HostName": "derp14d.tailscale.com", - "IPv4": "176.58.93.154", - "IPv6": "2a00:dd80:3c::3d5", - "CanPort80": true - }, - { - "Name": "14b", - "RegionID": 14, - "HostName": "derp14b.tailscale.com", - "IPv4": "176.58.93.248", - "IPv6": "2a00:dd80:3c::807", - "CanPort80": true - } - ] - }, - "15": { - "RegionID": 15, - "RegionCode": "jnb", - "RegionName": "Johannesburg", - "Latitude": -26.204444, - "Longitude": 28.045556, - "Nodes": [ - { - "Name": "15c", - "RegionID": 15, - "HostName": "derp15c.tailscale.com", - "IPv4": "102.67.165.185", - "IPv6": "2c0f:edb0:0:10::b59", - "CanPort80": true - }, - { - "Name": "15d", - "RegionID": 15, - "HostName": "derp15d.tailscale.com", - "IPv4": "102.67.165.36", - "IPv6": "2c0f:edb0:0:10::599", - "CanPort80": true - }, - { - "Name": "15b", - "RegionID": 15, - "HostName": "derp15b.tailscale.com", - "IPv4": "102.67.165.90", - "IPv6": "2c0f:edb0:0:10::963", - "CanPort80": true - } - ] - }, - "16": { - "RegionID": 16, - "RegionCode": "mia", - "RegionName": "Miami", - "Latitude": 25.78, - "Longitude": -80.21, - "Nodes": [ - { - "Name": "16c", - "RegionID": 16, - "HostName": "derp16c.tailscale.com", - "IPv4": "192.73.243.229", - "IPv6": "2607:f740:17::4e4", - "CanPort80": true - }, - { - "Name": "16d", - "RegionID": 16, - "HostName": "derp16d.tailscale.com", - "IPv4": "192.73.243.141", - "IPv6": "2607:f740:17::475", - "CanPort80": true - }, - { - "Name": "16b", - "RegionID": 16, - "HostName": "derp16b.tailscale.com", - "IPv4": "192.73.243.135", - "IPv6": "2607:f740:17::476", - "CanPort80": true - } - ] - }, - "17": { - "RegionID": 17, - "RegionCode": "lax", - "RegionName": "Los Angeles", - "Latitude": 34.05, - "Longitude": -118.25, - "Nodes": [ - { - "Name": "17c", - "RegionID": 17, - "HostName": "derp17c.tailscale.com", - "IPv4": "208.111.40.12", - "IPv6": "2607:f740:c::10", - "CanPort80": true - }, - { - "Name": "17d", - "RegionID": 17, - "HostName": "derp17d.tailscale.com", - "IPv4": "208.111.40.216", - "IPv6": "2607:f740:c::e1b", - "CanPort80": true - }, - { - "Name": "17b", - "RegionID": 17, - "HostName": "derp17b.tailscale.com", - "IPv4": "192.73.244.245", - "IPv6": "2607:f740:c::646", - "CanPort80": true - } - ] - }, - "18": { - "RegionID": 18, - "RegionCode": "par", - "RegionName": "Paris", - "Latitude": 48.856667, - "Longitude": 2.352222, - "Nodes": [ - { - "Name": "18c", - "RegionID": 18, - "HostName": "derp18c.tailscale.com", - "IPv4": "176.58.90.207", - "IPv6": "2a00:dd80:3e::c19", - "CanPort80": true - }, - { - "Name": "18d", - "RegionID": 18, - "HostName": "derp18d.tailscale.com", - "IPv4": "176.58.90.104", - "IPv6": "2a00:dd80:3e::f2e", - "CanPort80": true - }, - { - "Name": "18b", - "RegionID": 18, - "HostName": "derp18b.tailscale.com", - "IPv4": "176.58.90.147", - "IPv6": "2a00:dd80:3e::363", - "CanPort80": true - } - ] - }, - "19": { - "RegionID": 19, - "RegionCode": "mad", - "RegionName": "Madrid", - "Latitude": 40.416944, - "Longitude": -3.703333, - "Nodes": [ - { - "Name": "19c", - "RegionID": 19, - "HostName": "derp19c.tailscale.com", - "IPv4": "45.159.97.61", - "IPv6": "2a00:dd80:14:10::20", - "CanPort80": true - }, - { - "Name": "19d", - "RegionID": 19, - "HostName": "derp19d.tailscale.com", - "IPv4": "45.159.97.233", - "IPv6": "2a00:dd80:14:10::34a", - "CanPort80": true - }, - { - "Name": "19b", - "RegionID": 19, - "HostName": "derp19b.tailscale.com", - "IPv4": "45.159.97.144", - "IPv6": "2a00:dd80:14:10::335", - "CanPort80": true - } - ] - }, - "2": { - "RegionID": 2, - "RegionCode": "sfo", - "RegionName": "San Francisco", - "Latitude": 37.7775, - "Longitude": -122.416389, - "Nodes": [ - { - "Name": "2e", - "RegionID": 2, - "HostName": "derp2e.tailscale.com", - "IPv4": "192.73.252.134", - "IPv6": "2607:f740:0:3f::44c", - "CanPort80": true - }, - { - "Name": "2f", - "RegionID": 2, - "HostName": "derp2f.tailscale.com", - "IPv4": "208.111.34.178", - "IPv6": "2607:f740:0:3f::f4", - "CanPort80": true - }, - { - "Name": "2d", - "RegionID": 2, - "HostName": "derp2d.tailscale.com", - "IPv4": "192.73.252.65", - "IPv6": "2607:f740:0:3f::287", - "CanPort80": true - } - ] - }, - "20": { - "RegionID": 20, - "RegionCode": "hkg", - "RegionName": "Hong Kong", - "Latitude": 22.3193, - "Longitude": 114.1694, - "Nodes": [ - { - "Name": "20c", - "RegionID": 20, - "HostName": "derp20c.tailscale.com", - "IPv4": "205.147.105.30", - "IPv6": "2403:2500:8000:1::5fb", - "CanPort80": true - }, - { - "Name": "20d", - "RegionID": 20, - "HostName": "derp20d.tailscale.com", - "IPv4": "205.147.105.78", - "IPv6": "2403:2500:8000:1::e9a", - "CanPort80": true - }, - { - "Name": "20b", - "RegionID": 20, - "HostName": "derp20b.tailscale.com", - "IPv4": "103.6.84.152", - "IPv6": "2403:2500:8000:1::ef6", - "CanPort80": true - } - ] - }, - "21": { - "RegionID": 21, - "RegionCode": "tor", - "RegionName": "Toronto", - "Latitude": 43.741667, - "Longitude": -79.373333, - "Nodes": [ - { - "Name": "21c", - "RegionID": 21, - "HostName": "derp21c.tailscale.com", - "IPv4": "162.248.221.215", - "IPv6": "2607:f740:50::f10", - "CanPort80": true - }, - { - "Name": "21d", - "RegionID": 21, - "HostName": "derp21d.tailscale.com", - "IPv4": "162.248.221.248", - "IPv6": "2607:f740:50::ca4", - "CanPort80": true - }, - { - "Name": "21b", - "RegionID": 21, - "HostName": "derp21b.tailscale.com", - "IPv4": "162.248.221.199", - "IPv6": "2607:f740:50::1d1", - "CanPort80": true - } - ] - }, - "22": { - "RegionID": 22, - "RegionCode": "waw", - "RegionName": "Warsaw", - "Latitude": 52.23, - "Longitude": 21.011111, - "Nodes": [ - { - "Name": "22c", - "RegionID": 22, - "HostName": "derp22c.tailscale.com", - "IPv4": "45.159.98.253", - "IPv6": "2a00:dd80:40:100::3f", - "CanPort80": true - }, - { - "Name": "22d", - "RegionID": 22, - "HostName": "derp22d.tailscale.com", - "IPv4": "45.159.98.145", - "IPv6": "2a00:dd80:40:100::211", - "CanPort80": true - }, - { - "Name": "22b", - "RegionID": 22, - "HostName": "derp22b.tailscale.com", - "IPv4": "45.159.98.196", - "IPv6": "2a00:dd80:40:100::316", - "CanPort80": true - } - ] - }, - "23": { - "RegionID": 23, - "RegionCode": "dbi", - "RegionName": "Dubai", - "Latitude": 25.263056, - "Longitude": 55.297222, - "Nodes": [ - { - "Name": "23c", - "RegionID": 23, - "HostName": "derp23c.tailscale.com", - "IPv4": "185.34.3.207", - "IPv6": "2a00:dd80:3f:100::a50", - "CanPort80": true - }, - { - "Name": "23d", - "RegionID": 23, - "HostName": "derp23d.tailscale.com", - "IPv4": "185.34.3.75", - "IPv6": "2a00:dd80:3f:100::97e", - "CanPort80": true - }, - { - "Name": "23b", - "RegionID": 23, - "HostName": "derp23b.tailscale.com", - "IPv4": "185.34.3.232", - "IPv6": "2a00:dd80:3f:100::76f", - "CanPort80": true - } - ] - }, - "24": { - "RegionID": 24, - "RegionCode": "hnl", - "RegionName": "Honolulu", - "Latitude": 21.306944, - "Longitude": -157.858333, - "Nodes": [ - { - "Name": "24c", - "RegionID": 24, - "HostName": "derp24c.tailscale.com", - "IPv4": "208.83.233.233", - "IPv6": "2001:19f0:c000:c591:5400:04ff:fe26:2c5f", - "CanPort80": true - }, - { - "Name": "24d", - "RegionID": 24, - "HostName": "derp24d.tailscale.com", - "IPv4": "208.72.155.133", - "IPv6": "2001:19f0:c000:c564:5400:04ff:fe26:2ba8", - "CanPort80": true - }, - { - "Name": "24b", - "RegionID": 24, - "HostName": "derp24b.tailscale.com", - "IPv4": "208.83.234.151", - "IPv6": "2001:19f0:c000:c586:5400:04ff:fe26:2ba6", - "CanPort80": true - } - ] - }, - "25": { - "RegionID": 25, - "RegionCode": "nai", - "RegionName": "Nairobi", - "Latitude": -1.286389, - "Longitude": 36.817222, - "Nodes": [ - { - "Name": "25c", - "RegionID": 25, - "HostName": "derp25c.tailscale.com", - "IPv4": "102.67.167.37", - "IPv6": "2c0f:edb0:2000:1::2c7", - "CanPort80": true - }, - { - "Name": "25d", - "RegionID": 25, - "HostName": "derp25d.tailscale.com", - "IPv4": "102.67.167.188", - "IPv6": "2c0f:edb0:2000:1::188", - "CanPort80": true - }, - { - "Name": "25b", - "RegionID": 25, - "HostName": "derp25b.tailscale.com", - "IPv4": "102.67.167.245", - "IPv6": "2c0f:edb0:2000:1::2e9", - "CanPort80": true - } - ] - }, - "26": { - "RegionID": 26, - "RegionCode": "nue", - "RegionName": "Nuremberg", - "Latitude": 49.453889, - "Longitude": 11.0775, - "Nodes": [ - { - "Name": "26c", - "RegionID": 26, - "HostName": "derp26c.tailscale.com", - "IPv4": "49.12.193.137", - "IPv6": "2a01:4f8:1c1c:5c70::1", - "CanPort80": true - }, - { - "Name": "26d", - "RegionID": 26, - "HostName": "derp26d.tailscale.com", - "IPv4": "49.13.204.141", - "IPv6": "2a01:4f8:1c0c:7d06::1", - "CanPort80": true - }, - { - "Name": "26b", - "RegionID": 26, - "HostName": "derp26b.tailscale.com", - "IPv4": "167.235.72.200", - "IPv6": "2a01:4f8:1c1c:47b6::1", - "CanPort80": true - } - ] - }, - "27": { - "RegionID": 27, - "RegionCode": "iad", - "RegionName": "Ashburn", - "Latitude": 39.03, - "Longitude": -77.471111, - "Nodes": [ - { - "Name": "27d", - "RegionID": 27, - "HostName": "derp27d.tailscale.com", - "IPv4": "178.156.152.106", - "IPv6": "2a01:4ff:f0:3c8e::1", - "CanPort80": true - }, - { - "Name": "27c", - "RegionID": 27, - "HostName": "derp27c.tailscale.com", - "IPv4": "178.156.152.91", - "IPv6": "2a01:4ff:f0:3913::1", - "CanPort80": true - }, - { - "Name": "27e", - "RegionID": 27, - "HostName": "derp27e.tailscale.com", - "IPv4": "178.156.134.232", - "IPv6": "2a01:4ff:f0:28d4::1", - "CanPort80": true - }, - { - "Name": "27b", - "RegionID": 27, - "HostName": "derp27b.tailscale.com", - "IPv4": "5.161.218.233", - "IPv6": "2a01:4ff:f0:3db9::1", - "CanPort80": true - } - ] - }, - "28": { - "RegionID": 28, - "RegionCode": "hel", - "RegionName": "Helsinki", - "Latitude": 60.170833, - "Longitude": 24.9375, - "Nodes": [ - { - "Name": "28c", - "RegionID": 28, - "HostName": "derp28c.tailscale.com", - "IPv4": "95.217.2.165", - "IPv6": "2a01:4f9:c012:cd74::1", - "CanPort80": true - }, - { - "Name": "28d", - "RegionID": 28, - "HostName": "derp28d.tailscale.com", - "IPv4": "157.180.28.32", - "IPv6": "2a01:4f9:c012:2e5b::1", - "CanPort80": true - }, - { - "Name": "28b", - "RegionID": 28, - "HostName": "derp28b.tailscale.com", - "IPv4": "65.109.143.62", - "IPv6": "2a01:4f9:c012:d55c::1", - "CanPort80": true - } - ] - }, - "3": { - "RegionID": 3, - "RegionCode": "sin", - "RegionName": "Singapore", - "Latitude": 1.3521, - "Longitude": 103.8198, - "Nodes": [ - { - "Name": "3g", - "RegionID": 3, - "HostName": "derp3g.tailscale.com", - "IPv4": "172.237.72.79", - "IPv6": "2600:3c15::2000:adff:fe08:6fab", - "CanPort80": true - }, - { - "Name": "3f", - "RegionID": 3, - "HostName": "derp3f.tailscale.com", - "IPv4": "172.237.72.8", - "IPv6": "2600:3c15::2000:53ff:fe48:a668", - "CanPort80": true - }, - { - "Name": "3h", - "RegionID": 3, - "HostName": "derp3h.tailscale.com", - "IPv4": "172.237.66.30", - "IPv6": "2600:3c15::2000:3dff:fe44:50aa", - "CanPort80": true - }, - { - "Name": "3e", - "RegionID": 3, - "HostName": "derp3e.tailscale.com", - "IPv4": "172.237.72.43", - "IPv6": "2600:3c15::2000:6cff:fee4:d799", - "CanPort80": true - } - ] - }, - "4": { - "RegionID": 4, - "RegionCode": "fra", - "RegionName": "Frankfurt", - "Latitude": 50.1109, - "Longitude": 8.6821, - "Nodes": [ - { - "Name": "4h", - "RegionID": 4, - "HostName": "derp4h.tailscale.com", - "IPv4": "185.40.234.77", - "IPv6": "2a00:dd80:20::bcf", - "CanPort80": true - }, - { - "Name": "4g", - "RegionID": 4, - "HostName": "derp4g.tailscale.com", - "IPv4": "185.40.234.113", - "IPv6": "2a00:dd80:20::8f", - "CanPort80": true - }, - { - "Name": "4i", - "RegionID": 4, - "HostName": "derp4i.tailscale.com", - "IPv4": "185.40.234.53", - "IPv6": "2a00:dd80:20::8a6", - "CanPort80": true - }, - { - "Name": "4f", - "RegionID": 4, - "HostName": "derp4f.tailscale.com", - "IPv4": "185.40.234.219", - "IPv6": "2a00:dd80:20::a25", - "CanPort80": true - } - ] - }, - "5": { - "RegionID": 5, - "RegionCode": "syd", - "RegionName": "Sydney", - "Latitude": -33.867778, - "Longitude": 151.21, - "Nodes": [ - { - "Name": "5f", - "RegionID": 5, - "HostName": "derp5f.tailscale.com", - "IPv4": "172.105.166.103", - "IPv6": "2400:8907::2000:ccff:fe1f:80da", - "CanPort80": true - }, - { - "Name": "5g", - "RegionID": 5, - "HostName": "derp5g.tailscale.com", - "IPv4": "172.105.169.57", - "IPv6": "2400:8907::2000:2fff:fea7:57f4", - "CanPort80": true - }, - { - "Name": "5e", - "RegionID": 5, - "HostName": "derp5e.tailscale.com", - "IPv4": "172.105.179.230", - "IPv6": "2400:8907::2000:ceff:fe8d:4f4e", - "CanPort80": true - } - ] - }, - "6": { - "RegionID": 6, - "RegionCode": "blr", - "RegionName": "Bengaluru", - "Latitude": 12.9716, - "Longitude": 77.5946, - "Nodes": [ - { - "Name": "6a", - "RegionID": 6, - "HostName": "derp6.tailscale.com", - "IPv4": "68.183.90.120", - "IPv6": "2400:6180:100:d0::982:d001", - "CanPort80": true - } - ] - }, - "7": { - "RegionID": 7, - "RegionCode": "tok", - "RegionName": "Tokyo", - "Latitude": 35.6764, - "Longitude": 139.65, - "Nodes": [ - { - "Name": "7g", - "RegionID": 7, - "HostName": "derp7g.tailscale.com", - "IPv4": "172.238.6.179", - "IPv6": "2600:3c18::2000:3fff:fe80:3ebd", - "CanPort80": true - }, - { - "Name": "7f", - "RegionID": 7, - "HostName": "derp7f.tailscale.com", - "IPv4": "172.238.6.34", - "IPv6": "2600:3c18::2000:acff:fe8e:3ed5", - "CanPort80": true - }, - { - "Name": "7h", - "RegionID": 7, - "HostName": "derp7h.tailscale.com", - "IPv4": "172.237.28.183", - "IPv6": "2600:3c18::2000:b1ff:fea9:4560", - "CanPort80": true - }, - { - "Name": "7e", - "RegionID": 7, - "HostName": "derp7e.tailscale.com", - "IPv4": "172.238.6.180", - "IPv6": "2600:3c18::2000:60ff:fe0f:6e83", - "STUNOnly": true, - "CanPort80": true - } - ] - }, - "8": { - "RegionID": 8, - "RegionCode": "lhr", - "RegionName": "London", - "Latitude": 51.5072, - "Longitude": 0.1276, - "Nodes": [ - { - "Name": "8f", - "RegionID": 8, - "HostName": "derp8f.tailscale.com", - "IPv4": "176.58.88.183", - "IPv6": "2a00:dd80:3a::dfa", - "CanPort80": true - }, - { - "Name": "8g", - "RegionID": 8, - "HostName": "derp8g.tailscale.com", - "IPv4": "176.58.92.254", - "IPv6": "2a00:dd80:3a::ed", - "CanPort80": true - }, - { - "Name": "8e", - "RegionID": 8, - "HostName": "derp8e.tailscale.com", - "IPv4": "176.58.92.144", - "IPv6": "2a00:dd80:3a::b33", - "CanPort80": true - } - ] - }, - "9": { - "RegionID": 9, - "RegionCode": "dfw", - "RegionName": "Dallas", - "Latitude": 32.779167, - "Longitude": -96.808889, - "Nodes": [ - { - "Name": "9e", - "RegionID": 9, - "HostName": "derp9e.tailscale.com", - "IPv4": "192.73.248.83", - "IPv6": "2607:f740:100::359", - "CanPort80": true - }, - { - "Name": "9f", - "RegionID": 9, - "HostName": "derp9f.tailscale.com", - "IPv4": "209.177.156.197", - "IPv6": "2607:f740:100::cad", - "CanPort80": true - }, - { - "Name": "9d", - "RegionID": 9, - "HostName": "derp9d.tailscale.com", - "IPv4": "209.177.156.94", - "IPv6": "2607:f740:100::c05", - "CanPort80": true - } - ] - } - } - }, - "DisplayMessages": null, - "TKAEnabled": false, - "TKAHead": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", - "Domain": "kratail2tid@passkey", - "DomainAuditLogID": "", - "UserProfiles": { - "3982058329734709": { - "ID": 3982058329734709, - "LoginName": "monitorpasskeykradalby@passkey", - "DisplayName": "monitorpasskeykradalby" - } - } + "PacketFilterRules": 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.124.195.93": { - "peer_name": "exit-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user1/tailscaled.sock whois --json 100.124.195.93", - "response": null - }, - "100.116.18.24": { - "peer_name": "exit-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user1/tailscaled.sock whois --json 100.116.18.24", - "response": null - }, - "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.107.162.14": { - "peer_name": "group-a-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user1/tailscaled.sock whois --json 100.107.162.14", - "response": null - }, - "100.77.135.18": { - "peer_name": "group-b-client", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user1/tailscaled.sock whois --json 100.77.135.18", - "response": null - }, - "100.105.127.107": { - "peer_name": "multi-exit-router", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user1/tailscaled.sock whois --json 100.105.127.107", - "response": null - }, - "100.109.43.124": { - "peer_name": "router-a", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user1/tailscaled.sock whois --json 100.109.43.124", - "response": null - }, - "100.65.172.123": { - "peer_name": "router-b", - "command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user1/tailscaled.sock whois --json 100.65.172.123", - "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 - } - }, "netmap": { - "SelfNode": { - "ID": 539541576444929, - "StableID": "nSq9YrqMD511CNTRL", - "Name": "user1.tail78f774.ts.net.", - "User": 4156223528223174, - "Key": "nodekey:96338a2cd2ea803c915ed8fdf882d66ca0c6a59d0fcf0bc4b3f928d22d1ac743", - "KeyExpiry": "2026-07-22T10:04:13Z", - "DiscoKey": "discokey:94c62b25a93d1474bcbf8b0e5f79763e3b093993c831b0a40e98b875827b232a", - "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:43259", "10.65.0.27:43259", "172.17.0.1:43259"], - "Hostinfo": { - "Hostname": "user1", - "Services": [ - { "Proto": "peerapi4", "Port": 46708 }, - { "Proto": "peerapi6", "Port": 46708 }, - { "Proto": "peerapi-dns-proxy", "Port": 1 } - ] - }, - "Created": "2026-01-23T10:04:13.531671894Z", - "MachineAuthorized": true, - "CapMap": { - "https://tailscale.com/cap/file-sharing": null, - "https://tailscale.com/cap/is-admin": null, - "https://tailscale.com/cap/is-owner": null, - "https://tailscale.com/cap/ssh": null, - "https://tailscale.com/cap/tailnet-lock": null, - "probe-udp-lifetime": null, - "ssh-behavior-v1": null, - "ssh-env-vars": null, - "store-appc-routes": null, - "tailnet-display-name": ["kratail2tid@passkey"] - }, - "ComputedName": "user1", - "ComputedNameWithHost": "user1" - }, - "AllCaps": [ - "https://tailscale.com/cap/is-owner", - "https://tailscale.com/cap/tailnet-lock", - "probe-udp-lifetime", - "store-appc-routes", - "tailnet-display-name", - "https://tailscale.com/cap/ssh", - "https://tailscale.com/cap/is-admin", - "ssh-env-vars", - "https://tailscale.com/cap/file-sharing", - "ssh-behavior-v1" - ], - "NodeKey": "nodekey:96338a2cd2ea803c915ed8fdf882d66ca0c6a59d0fcf0bc4b3f928d22d1ac743", - "MachineKey": "mkey:98b7ed0fef020882cab4324b39ac93b60741794e722411083d0d3cf703833f4a", "Peers": [], - "DNS": { - "Routes": { - "tail78f774.ts.net.": null, - "ts.net.": [{ "Addr": "199.247.155.53" }, { "Addr": "2620:111:8007::53" }] - }, - "Domains": ["tail78f774.ts.net"], - "Proxied": true, - "ExitNodeFilteredSet": [".ts.net", ".tailscale.net"] - }, - "PacketFilter": [], - "PacketFilterRules": null, - "SSHPolicy": { "rules": [] }, - "CollectServices": false, - "DERPMap": { - "Regions": { - "1": { - "RegionID": 1, - "RegionCode": "nyc", - "RegionName": "New York City", - "Latitude": 40.7128, - "Longitude": -74.006, - "Nodes": [ - { - "Name": "1h", - "RegionID": 1, - "HostName": "derp1h.tailscale.com", - "IPv4": "199.38.181.93", - "IPv6": "2607:f740:f::afd", - "CanPort80": true - }, - { - "Name": "1g", - "RegionID": 1, - "HostName": "derp1g.tailscale.com", - "IPv4": "209.177.145.120", - "IPv6": "2607:f740:f::3eb", - "CanPort80": true - }, - { - "Name": "1i", - "RegionID": 1, - "HostName": "derp1i.tailscale.com", - "IPv4": "199.38.181.103", - "IPv6": "2607:f740:f::e19", - "CanPort80": true - }, - { - "Name": "1f", - "RegionID": 1, - "HostName": "derp1f.tailscale.com", - "IPv4": "199.38.181.104", - "IPv6": "2607:f740:f::bc", - "CanPort80": true - } - ] - }, - "10": { - "RegionID": 10, - "RegionCode": "sea", - "RegionName": "Seattle", - "Latitude": 47.609722, - "Longitude": -122.333056, - "Nodes": [ - { - "Name": "10c", - "RegionID": 10, - "HostName": "derp10c.tailscale.com", - "IPv4": "192.73.240.121", - "IPv6": "2607:f740:14::40c", - "CanPort80": true - }, - { - "Name": "10d", - "RegionID": 10, - "HostName": "derp10d.tailscale.com", - "IPv4": "192.73.240.132", - "IPv6": "2607:f740:14::500", - "CanPort80": true - }, - { - "Name": "10b", - "RegionID": 10, - "HostName": "derp10b.tailscale.com", - "IPv4": "192.73.240.161", - "IPv6": "2607:f740:14::61c", - "CanPort80": true - } - ] - }, - "11": { - "RegionID": 11, - "RegionCode": "sao", - "RegionName": "São Paulo", - "Latitude": -23.55, - "Longitude": -46.633333, - "Nodes": [ - { - "Name": "11f", - "RegionID": 11, - "HostName": "derp11f.tailscale.com", - "IPv4": "172.237.61.197", - "IPv6": "2600:3c0d::2000:3bff:fe44:6166", - "CanPort80": true - }, - { - "Name": "11g", - "RegionID": 11, - "HostName": "derp11g.tailscale.com", - "IPv4": "172.237.61.190", - "IPv6": "2600:3c0d::2000:62ff:febe:2e67", - "CanPort80": true - }, - { - "Name": "11e", - "RegionID": 11, - "HostName": "derp11e.tailscale.com", - "IPv4": "172.237.61.194", - "IPv6": "2600:3c0d::2000:d2ff:fe43:1790", - "CanPort80": true - } - ] - }, - "12": { - "RegionID": 12, - "RegionCode": "ord", - "RegionName": "Chicago", - "Latitude": 41.881944, - "Longitude": -87.627778, - "Nodes": [ - { - "Name": "12e", - "RegionID": 12, - "HostName": "derp12e.tailscale.com", - "IPv4": "209.177.158.15", - "IPv6": "2607:f740:e::b17", - "CanPort80": true - }, - { - "Name": "12f", - "RegionID": 12, - "HostName": "derp12f.tailscale.com", - "IPv4": "199.38.182.118", - "IPv6": "2607:f740:e::4c8", - "CanPort80": true - }, - { - "Name": "12d", - "RegionID": 12, - "HostName": "derp12d.tailscale.com", - "IPv4": "209.177.158.246", - "IPv6": "2607:f740:e::811", - "CanPort80": true - } - ] - }, - "13": { - "RegionID": 13, - "RegionCode": "den", - "RegionName": "Denver", - "Latitude": 39.7392, - "Longitude": -104.9849, - "Nodes": [ - { - "Name": "13c", - "RegionID": 13, - "HostName": "derp13c.tailscale.com", - "IPv4": "192.73.242.28", - "IPv6": "2607:f740:16::5c", - "CanPort80": true - }, - { - "Name": "13d", - "RegionID": 13, - "HostName": "derp13d.tailscale.com", - "IPv4": "192.73.242.204", - "IPv6": "2607:f740:16::c23", - "CanPort80": true - }, - { - "Name": "13b", - "RegionID": 13, - "HostName": "derp13b.tailscale.com", - "IPv4": "192.73.242.187", - "IPv6": "2607:f740:16::640", - "CanPort80": true - } - ] - }, - "14": { - "RegionID": 14, - "RegionCode": "ams", - "RegionName": "Amsterdam", - "Latitude": 52.372778, - "Longitude": 4.893611, - "Nodes": [ - { - "Name": "14c", - "RegionID": 14, - "HostName": "derp14c.tailscale.com", - "IPv4": "176.58.93.147", - "IPv6": "2a00:dd80:3c::b09", - "CanPort80": true - }, - { - "Name": "14d", - "RegionID": 14, - "HostName": "derp14d.tailscale.com", - "IPv4": "176.58.93.154", - "IPv6": "2a00:dd80:3c::3d5", - "CanPort80": true - }, - { - "Name": "14b", - "RegionID": 14, - "HostName": "derp14b.tailscale.com", - "IPv4": "176.58.93.248", - "IPv6": "2a00:dd80:3c::807", - "CanPort80": true - } - ] - }, - "15": { - "RegionID": 15, - "RegionCode": "jnb", - "RegionName": "Johannesburg", - "Latitude": -26.204444, - "Longitude": 28.045556, - "Nodes": [ - { - "Name": "15c", - "RegionID": 15, - "HostName": "derp15c.tailscale.com", - "IPv4": "102.67.165.185", - "IPv6": "2c0f:edb0:0:10::b59", - "CanPort80": true - }, - { - "Name": "15d", - "RegionID": 15, - "HostName": "derp15d.tailscale.com", - "IPv4": "102.67.165.36", - "IPv6": "2c0f:edb0:0:10::599", - "CanPort80": true - }, - { - "Name": "15b", - "RegionID": 15, - "HostName": "derp15b.tailscale.com", - "IPv4": "102.67.165.90", - "IPv6": "2c0f:edb0:0:10::963", - "CanPort80": true - } - ] - }, - "16": { - "RegionID": 16, - "RegionCode": "mia", - "RegionName": "Miami", - "Latitude": 25.78, - "Longitude": -80.21, - "Nodes": [ - { - "Name": "16c", - "RegionID": 16, - "HostName": "derp16c.tailscale.com", - "IPv4": "192.73.243.229", - "IPv6": "2607:f740:17::4e4", - "CanPort80": true - }, - { - "Name": "16d", - "RegionID": 16, - "HostName": "derp16d.tailscale.com", - "IPv4": "192.73.243.141", - "IPv6": "2607:f740:17::475", - "CanPort80": true - }, - { - "Name": "16b", - "RegionID": 16, - "HostName": "derp16b.tailscale.com", - "IPv4": "192.73.243.135", - "IPv6": "2607:f740:17::476", - "CanPort80": true - } - ] - }, - "17": { - "RegionID": 17, - "RegionCode": "lax", - "RegionName": "Los Angeles", - "Latitude": 34.05, - "Longitude": -118.25, - "Nodes": [ - { - "Name": "17c", - "RegionID": 17, - "HostName": "derp17c.tailscale.com", - "IPv4": "208.111.40.12", - "IPv6": "2607:f740:c::10", - "CanPort80": true - }, - { - "Name": "17d", - "RegionID": 17, - "HostName": "derp17d.tailscale.com", - "IPv4": "208.111.40.216", - "IPv6": "2607:f740:c::e1b", - "CanPort80": true - }, - { - "Name": "17b", - "RegionID": 17, - "HostName": "derp17b.tailscale.com", - "IPv4": "192.73.244.245", - "IPv6": "2607:f740:c::646", - "CanPort80": true - } - ] - }, - "18": { - "RegionID": 18, - "RegionCode": "par", - "RegionName": "Paris", - "Latitude": 48.856667, - "Longitude": 2.352222, - "Nodes": [ - { - "Name": "18c", - "RegionID": 18, - "HostName": "derp18c.tailscale.com", - "IPv4": "176.58.90.207", - "IPv6": "2a00:dd80:3e::c19", - "CanPort80": true - }, - { - "Name": "18d", - "RegionID": 18, - "HostName": "derp18d.tailscale.com", - "IPv4": "176.58.90.104", - "IPv6": "2a00:dd80:3e::f2e", - "CanPort80": true - }, - { - "Name": "18b", - "RegionID": 18, - "HostName": "derp18b.tailscale.com", - "IPv4": "176.58.90.147", - "IPv6": "2a00:dd80:3e::363", - "CanPort80": true - } - ] - }, - "19": { - "RegionID": 19, - "RegionCode": "mad", - "RegionName": "Madrid", - "Latitude": 40.416944, - "Longitude": -3.703333, - "Nodes": [ - { - "Name": "19c", - "RegionID": 19, - "HostName": "derp19c.tailscale.com", - "IPv4": "45.159.97.61", - "IPv6": "2a00:dd80:14:10::20", - "CanPort80": true - }, - { - "Name": "19d", - "RegionID": 19, - "HostName": "derp19d.tailscale.com", - "IPv4": "45.159.97.233", - "IPv6": "2a00:dd80:14:10::34a", - "CanPort80": true - }, - { - "Name": "19b", - "RegionID": 19, - "HostName": "derp19b.tailscale.com", - "IPv4": "45.159.97.144", - "IPv6": "2a00:dd80:14:10::335", - "CanPort80": true - } - ] - }, - "2": { - "RegionID": 2, - "RegionCode": "sfo", - "RegionName": "San Francisco", - "Latitude": 37.7775, - "Longitude": -122.416389, - "Nodes": [ - { - "Name": "2e", - "RegionID": 2, - "HostName": "derp2e.tailscale.com", - "IPv4": "192.73.252.134", - "IPv6": "2607:f740:0:3f::44c", - "CanPort80": true - }, - { - "Name": "2f", - "RegionID": 2, - "HostName": "derp2f.tailscale.com", - "IPv4": "208.111.34.178", - "IPv6": "2607:f740:0:3f::f4", - "CanPort80": true - }, - { - "Name": "2d", - "RegionID": 2, - "HostName": "derp2d.tailscale.com", - "IPv4": "192.73.252.65", - "IPv6": "2607:f740:0:3f::287", - "CanPort80": true - } - ] - }, - "20": { - "RegionID": 20, - "RegionCode": "hkg", - "RegionName": "Hong Kong", - "Latitude": 22.3193, - "Longitude": 114.1694, - "Nodes": [ - { - "Name": "20c", - "RegionID": 20, - "HostName": "derp20c.tailscale.com", - "IPv4": "205.147.105.30", - "IPv6": "2403:2500:8000:1::5fb", - "CanPort80": true - }, - { - "Name": "20d", - "RegionID": 20, - "HostName": "derp20d.tailscale.com", - "IPv4": "205.147.105.78", - "IPv6": "2403:2500:8000:1::e9a", - "CanPort80": true - }, - { - "Name": "20b", - "RegionID": 20, - "HostName": "derp20b.tailscale.com", - "IPv4": "103.6.84.152", - "IPv6": "2403:2500:8000:1::ef6", - "CanPort80": true - } - ] - }, - "21": { - "RegionID": 21, - "RegionCode": "tor", - "RegionName": "Toronto", - "Latitude": 43.741667, - "Longitude": -79.373333, - "Nodes": [ - { - "Name": "21c", - "RegionID": 21, - "HostName": "derp21c.tailscale.com", - "IPv4": "162.248.221.215", - "IPv6": "2607:f740:50::f10", - "CanPort80": true - }, - { - "Name": "21d", - "RegionID": 21, - "HostName": "derp21d.tailscale.com", - "IPv4": "162.248.221.248", - "IPv6": "2607:f740:50::ca4", - "CanPort80": true - }, - { - "Name": "21b", - "RegionID": 21, - "HostName": "derp21b.tailscale.com", - "IPv4": "162.248.221.199", - "IPv6": "2607:f740:50::1d1", - "CanPort80": true - } - ] - }, - "22": { - "RegionID": 22, - "RegionCode": "waw", - "RegionName": "Warsaw", - "Latitude": 52.23, - "Longitude": 21.011111, - "Nodes": [ - { - "Name": "22c", - "RegionID": 22, - "HostName": "derp22c.tailscale.com", - "IPv4": "45.159.98.253", - "IPv6": "2a00:dd80:40:100::3f", - "CanPort80": true - }, - { - "Name": "22d", - "RegionID": 22, - "HostName": "derp22d.tailscale.com", - "IPv4": "45.159.98.145", - "IPv6": "2a00:dd80:40:100::211", - "CanPort80": true - }, - { - "Name": "22b", - "RegionID": 22, - "HostName": "derp22b.tailscale.com", - "IPv4": "45.159.98.196", - "IPv6": "2a00:dd80:40:100::316", - "CanPort80": true - } - ] - }, - "23": { - "RegionID": 23, - "RegionCode": "dbi", - "RegionName": "Dubai", - "Latitude": 25.263056, - "Longitude": 55.297222, - "Nodes": [ - { - "Name": "23c", - "RegionID": 23, - "HostName": "derp23c.tailscale.com", - "IPv4": "185.34.3.207", - "IPv6": "2a00:dd80:3f:100::a50", - "CanPort80": true - }, - { - "Name": "23d", - "RegionID": 23, - "HostName": "derp23d.tailscale.com", - "IPv4": "185.34.3.75", - "IPv6": "2a00:dd80:3f:100::97e", - "CanPort80": true - }, - { - "Name": "23b", - "RegionID": 23, - "HostName": "derp23b.tailscale.com", - "IPv4": "185.34.3.232", - "IPv6": "2a00:dd80:3f:100::76f", - "CanPort80": true - } - ] - }, - "24": { - "RegionID": 24, - "RegionCode": "hnl", - "RegionName": "Honolulu", - "Latitude": 21.306944, - "Longitude": -157.858333, - "Nodes": [ - { - "Name": "24c", - "RegionID": 24, - "HostName": "derp24c.tailscale.com", - "IPv4": "208.83.233.233", - "IPv6": "2001:19f0:c000:c591:5400:04ff:fe26:2c5f", - "CanPort80": true - }, - { - "Name": "24d", - "RegionID": 24, - "HostName": "derp24d.tailscale.com", - "IPv4": "208.72.155.133", - "IPv6": "2001:19f0:c000:c564:5400:04ff:fe26:2ba8", - "CanPort80": true - }, - { - "Name": "24b", - "RegionID": 24, - "HostName": "derp24b.tailscale.com", - "IPv4": "208.83.234.151", - "IPv6": "2001:19f0:c000:c586:5400:04ff:fe26:2ba6", - "CanPort80": true - } - ] - }, - "25": { - "RegionID": 25, - "RegionCode": "nai", - "RegionName": "Nairobi", - "Latitude": -1.286389, - "Longitude": 36.817222, - "Nodes": [ - { - "Name": "25c", - "RegionID": 25, - "HostName": "derp25c.tailscale.com", - "IPv4": "102.67.167.37", - "IPv6": "2c0f:edb0:2000:1::2c7", - "CanPort80": true - }, - { - "Name": "25d", - "RegionID": 25, - "HostName": "derp25d.tailscale.com", - "IPv4": "102.67.167.188", - "IPv6": "2c0f:edb0:2000:1::188", - "CanPort80": true - }, - { - "Name": "25b", - "RegionID": 25, - "HostName": "derp25b.tailscale.com", - "IPv4": "102.67.167.245", - "IPv6": "2c0f:edb0:2000:1::2e9", - "CanPort80": true - } - ] - }, - "26": { - "RegionID": 26, - "RegionCode": "nue", - "RegionName": "Nuremberg", - "Latitude": 49.453889, - "Longitude": 11.0775, - "Nodes": [ - { - "Name": "26c", - "RegionID": 26, - "HostName": "derp26c.tailscale.com", - "IPv4": "49.12.193.137", - "IPv6": "2a01:4f8:1c1c:5c70::1", - "CanPort80": true - }, - { - "Name": "26d", - "RegionID": 26, - "HostName": "derp26d.tailscale.com", - "IPv4": "49.13.204.141", - "IPv6": "2a01:4f8:1c0c:7d06::1", - "CanPort80": true - }, - { - "Name": "26b", - "RegionID": 26, - "HostName": "derp26b.tailscale.com", - "IPv4": "167.235.72.200", - "IPv6": "2a01:4f8:1c1c:47b6::1", - "CanPort80": true - } - ] - }, - "27": { - "RegionID": 27, - "RegionCode": "iad", - "RegionName": "Ashburn", - "Latitude": 39.03, - "Longitude": -77.471111, - "Nodes": [ - { - "Name": "27d", - "RegionID": 27, - "HostName": "derp27d.tailscale.com", - "IPv4": "178.156.152.106", - "IPv6": "2a01:4ff:f0:3c8e::1", - "CanPort80": true - }, - { - "Name": "27c", - "RegionID": 27, - "HostName": "derp27c.tailscale.com", - "IPv4": "178.156.152.91", - "IPv6": "2a01:4ff:f0:3913::1", - "CanPort80": true - }, - { - "Name": "27e", - "RegionID": 27, - "HostName": "derp27e.tailscale.com", - "IPv4": "178.156.134.232", - "IPv6": "2a01:4ff:f0:28d4::1", - "CanPort80": true - }, - { - "Name": "27b", - "RegionID": 27, - "HostName": "derp27b.tailscale.com", - "IPv4": "5.161.218.233", - "IPv6": "2a01:4ff:f0:3db9::1", - "CanPort80": true - } - ] - }, - "28": { - "RegionID": 28, - "RegionCode": "hel", - "RegionName": "Helsinki", - "Latitude": 60.170833, - "Longitude": 24.9375, - "Nodes": [ - { - "Name": "28c", - "RegionID": 28, - "HostName": "derp28c.tailscale.com", - "IPv4": "95.217.2.165", - "IPv6": "2a01:4f9:c012:cd74::1", - "CanPort80": true - }, - { - "Name": "28d", - "RegionID": 28, - "HostName": "derp28d.tailscale.com", - "IPv4": "157.180.28.32", - "IPv6": "2a01:4f9:c012:2e5b::1", - "CanPort80": true - }, - { - "Name": "28b", - "RegionID": 28, - "HostName": "derp28b.tailscale.com", - "IPv4": "65.109.143.62", - "IPv6": "2a01:4f9:c012:d55c::1", - "CanPort80": true - } - ] - }, - "3": { - "RegionID": 3, - "RegionCode": "sin", - "RegionName": "Singapore", - "Latitude": 1.3521, - "Longitude": 103.8198, - "Nodes": [ - { - "Name": "3g", - "RegionID": 3, - "HostName": "derp3g.tailscale.com", - "IPv4": "172.237.72.79", - "IPv6": "2600:3c15::2000:adff:fe08:6fab", - "CanPort80": true - }, - { - "Name": "3f", - "RegionID": 3, - "HostName": "derp3f.tailscale.com", - "IPv4": "172.237.72.8", - "IPv6": "2600:3c15::2000:53ff:fe48:a668", - "CanPort80": true - }, - { - "Name": "3h", - "RegionID": 3, - "HostName": "derp3h.tailscale.com", - "IPv4": "172.237.66.30", - "IPv6": "2600:3c15::2000:3dff:fe44:50aa", - "CanPort80": true - }, - { - "Name": "3e", - "RegionID": 3, - "HostName": "derp3e.tailscale.com", - "IPv4": "172.237.72.43", - "IPv6": "2600:3c15::2000:6cff:fee4:d799", - "CanPort80": true - } - ] - }, - "4": { - "RegionID": 4, - "RegionCode": "fra", - "RegionName": "Frankfurt", - "Latitude": 50.1109, - "Longitude": 8.6821, - "Nodes": [ - { - "Name": "4h", - "RegionID": 4, - "HostName": "derp4h.tailscale.com", - "IPv4": "185.40.234.77", - "IPv6": "2a00:dd80:20::bcf", - "CanPort80": true - }, - { - "Name": "4g", - "RegionID": 4, - "HostName": "derp4g.tailscale.com", - "IPv4": "185.40.234.113", - "IPv6": "2a00:dd80:20::8f", - "CanPort80": true - }, - { - "Name": "4i", - "RegionID": 4, - "HostName": "derp4i.tailscale.com", - "IPv4": "185.40.234.53", - "IPv6": "2a00:dd80:20::8a6", - "CanPort80": true - }, - { - "Name": "4f", - "RegionID": 4, - "HostName": "derp4f.tailscale.com", - "IPv4": "185.40.234.219", - "IPv6": "2a00:dd80:20::a25", - "CanPort80": true - } - ] - }, - "5": { - "RegionID": 5, - "RegionCode": "syd", - "RegionName": "Sydney", - "Latitude": -33.867778, - "Longitude": 151.21, - "Nodes": [ - { - "Name": "5f", - "RegionID": 5, - "HostName": "derp5f.tailscale.com", - "IPv4": "172.105.166.103", - "IPv6": "2400:8907::2000:ccff:fe1f:80da", - "CanPort80": true - }, - { - "Name": "5g", - "RegionID": 5, - "HostName": "derp5g.tailscale.com", - "IPv4": "172.105.169.57", - "IPv6": "2400:8907::2000:2fff:fea7:57f4", - "CanPort80": true - }, - { - "Name": "5e", - "RegionID": 5, - "HostName": "derp5e.tailscale.com", - "IPv4": "172.105.179.230", - "IPv6": "2400:8907::2000:ceff:fe8d:4f4e", - "CanPort80": true - } - ] - }, - "6": { - "RegionID": 6, - "RegionCode": "blr", - "RegionName": "Bengaluru", - "Latitude": 12.9716, - "Longitude": 77.5946, - "Nodes": [ - { - "Name": "6a", - "RegionID": 6, - "HostName": "derp6.tailscale.com", - "IPv4": "68.183.90.120", - "IPv6": "2400:6180:100:d0::982:d001", - "CanPort80": true - } - ] - }, - "7": { - "RegionID": 7, - "RegionCode": "tok", - "RegionName": "Tokyo", - "Latitude": 35.6764, - "Longitude": 139.65, - "Nodes": [ - { - "Name": "7g", - "RegionID": 7, - "HostName": "derp7g.tailscale.com", - "IPv4": "172.238.6.179", - "IPv6": "2600:3c18::2000:3fff:fe80:3ebd", - "CanPort80": true - }, - { - "Name": "7f", - "RegionID": 7, - "HostName": "derp7f.tailscale.com", - "IPv4": "172.238.6.34", - "IPv6": "2600:3c18::2000:acff:fe8e:3ed5", - "CanPort80": true - }, - { - "Name": "7h", - "RegionID": 7, - "HostName": "derp7h.tailscale.com", - "IPv4": "172.237.28.183", - "IPv6": "2600:3c18::2000:b1ff:fea9:4560", - "CanPort80": true - }, - { - "Name": "7e", - "RegionID": 7, - "HostName": "derp7e.tailscale.com", - "IPv4": "172.238.6.180", - "IPv6": "2600:3c18::2000:60ff:fe0f:6e83", - "STUNOnly": true, - "CanPort80": true - } - ] - }, - "8": { - "RegionID": 8, - "RegionCode": "lhr", - "RegionName": "London", - "Latitude": 51.5072, - "Longitude": 0.1276, - "Nodes": [ - { - "Name": "8f", - "RegionID": 8, - "HostName": "derp8f.tailscale.com", - "IPv4": "176.58.88.183", - "IPv6": "2a00:dd80:3a::dfa", - "CanPort80": true - }, - { - "Name": "8g", - "RegionID": 8, - "HostName": "derp8g.tailscale.com", - "IPv4": "176.58.92.254", - "IPv6": "2a00:dd80:3a::ed", - "CanPort80": true - }, - { - "Name": "8e", - "RegionID": 8, - "HostName": "derp8e.tailscale.com", - "IPv4": "176.58.92.144", - "IPv6": "2a00:dd80:3a::b33", - "CanPort80": true - } - ] - }, - "9": { - "RegionID": 9, - "RegionCode": "dfw", - "RegionName": "Dallas", - "Latitude": 32.779167, - "Longitude": -96.808889, - "Nodes": [ - { - "Name": "9e", - "RegionID": 9, - "HostName": "derp9e.tailscale.com", - "IPv4": "192.73.248.83", - "IPv6": "2607:f740:100::359", - "CanPort80": true - }, - { - "Name": "9f", - "RegionID": 9, - "HostName": "derp9f.tailscale.com", - "IPv4": "209.177.156.197", - "IPv6": "2607:f740:100::cad", - "CanPort80": true - }, - { - "Name": "9d", - "RegionID": 9, - "HostName": "derp9d.tailscale.com", - "IPv4": "209.177.156.94", - "IPv6": "2607:f740:100::c05", - "CanPort80": true - } - ] - } - } - }, - "DisplayMessages": null, - "TKAEnabled": false, - "TKAHead": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", - "Domain": "kratail2tid@passkey", - "DomainAuditLogID": "", - "UserProfiles": { - "4156223528223174": { - "ID": 4156223528223174, - "LoginName": "kratail2tid@passkey", - "DisplayName": "kratail2tid" - } - } + "PacketFilterRules": null } } } diff --git a/hscontrol/policy/v2/testdata/routes_results/ROUTES-a1_wildcard_acl_includes_routes_in_srcips.hujson b/hscontrol/policy/v2/testdata/routes_results/ROUTES-a1_wildcard_acl_includes_routes_in_srcips.hujson index 0c8cd6035..5c4547311 100644 --- a/hscontrol/policy/v2/testdata/routes_results/ROUTES-a1_wildcard_acl_includes_routes_in_srcips.hujson +++ b/hscontrol/policy/v2/testdata/routes_results/ROUTES-a1_wildcard_acl_includes_routes_in_srcips.hujson @@ -7,24 +7,40 @@ // Expected: Rules on 12 of 12 nodes { "test_id": "ROUTES-a1_wildcard_acl_includes_routes_in_srcips", - "timestamp": "2026-03-17T16:13:48Z", - "propagation_wait_seconds": 10, "input": { - "policy_file": "routes_policies/routes_a1_wildcard_acl_includes_routes_in_srcips.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"], - "tag:ha": ["kratail2tid@passkey"] + "tag:server": [ + "kratail2tid@passkey" + ], + "tag:prod": [ + "kratail2tid@passkey" + ], + "tag:client": [ + "kratail2tid@passkey" + ], + "tag:router": [ + "kratail2tid@passkey" + ], + "tag:exit": [ + "kratail2tid@passkey" + ], + "tag:ha": [ + "kratail2tid@passkey" + ] }, "hosts": { "webserver": "100.108.74.26", @@ -34,89 +50,146 @@ }, "autoApprovers": { "routes": { - "10.0.0.0/8": ["tag:router"], - "172.16.0.0/12": ["tag:router"], - "192.168.0.0/16": ["tag:ha"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.0.0.0/8": [ + "tag:router" + ], + "172.16.0.0/12": [ + "tag:router" + ], + "192.168.0.0/16": [ + "tag:ha" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "acls": [ { "action": "accept", - "src": ["*"], - "dst": ["*:*"] + "src": [ + "*" + ], + "dst": [ + "*:*" + ] } ] - }, - "api_endpoint": "https://api.tailscale.com/api/v2/tailnet/kratail2tid%40passkey/acl", - "api_response_code": 200 + } }, "topology": { "nodes": { "big-router": { "hostname": "big-router", - "tags": ["tag:router"], + "tags": [ + "tag:router" + ], "ipv4": "100.97.174.21", "ipv6": "fd7a:115c:a1e0::5137:ae15", - "routable_ips": ["10.0.0.0/8"], - "approved_routes": ["10.0.0.0/8"] + "routable_ips": [ + "10.0.0.0/8" + ], + "approved_routes": [ + "10.0.0.0/8" + ] }, "exit-node": { "hostname": "exit-node", - "tags": ["tag:exit"], + "tags": [ + "tag:exit" + ], "ipv4": "100.85.66.106", "ipv6": "fd7a:115c:a1e0::7c37:426a", - "routable_ips": ["0.0.0.0/0", "::/0"], - "approved_routes": ["0.0.0.0/0", "::/0"] + "routable_ips": [ + "0.0.0.0/0", + "::/0" + ], + "approved_routes": [ + "0.0.0.0/0", + "::/0" + ] }, "ha-router1": { "hostname": "ha-router1", - "tags": ["tag:ha"], + "tags": [ + "tag:ha" + ], "ipv4": "100.121.186.70", "ipv6": "fd7a:115c:a1e0::6737:ba46", - "routable_ips": ["192.168.1.0/24"], - "approved_routes": ["192.168.1.0/24"] + "routable_ips": [ + "192.168.1.0/24" + ], + "approved_routes": [ + "192.168.1.0/24" + ] }, "ha-router2": { "hostname": "ha-router2", - "tags": ["tag:ha"], + "tags": [ + "tag:ha" + ], "ipv4": "100.117.104.82", "ipv6": "fd7a:115c:a1e0::7437:6852", - "routable_ips": ["192.168.1.0/24"], - "approved_routes": ["192.168.1.0/24"] + "routable_ips": [ + "192.168.1.0/24" + ], + "approved_routes": [ + "192.168.1.0/24" + ] }, "multi-router": { "hostname": "multi-router", - "tags": ["tag:exit", "tag:router"], + "tags": [ + "tag:exit", + "tag:router" + ], "ipv4": "100.119.241.111", "ipv6": "fd7a:115c:a1e0::3337:f16f", - "routable_ips": ["172.16.0.0/24"], - "approved_routes": ["172.16.0.0/24"] + "routable_ips": [ + "172.16.0.0/24" + ], + "approved_routes": [ + "172.16.0.0/24" + ] }, "subnet-router": { "hostname": "subnet-router", - "tags": ["tag:router"], + "tags": [ + "tag:router" + ], "ipv4": "100.92.142.61", "ipv6": "fd7a:115c:a1e0::3e37:8e3d", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] + "routable_ips": [ + "10.33.0.0/16" + ], + "approved_routes": [ + "10.33.0.0/16" + ] }, "tagged-client": { "hostname": "tagged-client", - "tags": ["tag:client"], + "tags": [ + "tag:client" + ], "ipv4": "100.83.200.69", "ipv6": "fd7a:115c:a1e0::c537:c845" }, "tagged-prod": { "hostname": "tagged-prod", - "tags": ["tag:prod"], + "tags": [ + "tag:prod" + ], "ipv4": "100.103.8.15", "ipv6": "fd7a:115c:a1e0::5b37:80f" }, "tagged-server": { "hostname": "tagged-server", - "tags": ["tag:server"], + "tags": [ + "tag:server" + ], "ipv4": "100.108.74.26", "ipv6": "fd7a:115c:a1e0::b901:4a87" }, diff --git a/hscontrol/policy/v2/testdata/routes_results/ROUTES-a2_tag_based_acl_excludes_routes.hujson b/hscontrol/policy/v2/testdata/routes_results/ROUTES-a2_tag_based_acl_excludes_routes.hujson index ecb5f7ecb..7cec28888 100644 --- a/hscontrol/policy/v2/testdata/routes_results/ROUTES-a2_tag_based_acl_excludes_routes.hujson +++ b/hscontrol/policy/v2/testdata/routes_results/ROUTES-a2_tag_based_acl_excludes_routes.hujson @@ -7,24 +7,40 @@ // Expected: Rules on 3 of 12 nodes { "test_id": "ROUTES-a2_tag_based_acl_excludes_routes", - "timestamp": "2026-03-17T16:13:59Z", - "propagation_wait_seconds": 10, "input": { - "policy_file": "routes_policies/routes_a2_tag_based_acl_excludes_routes.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"], - "tag:ha": ["kratail2tid@passkey"] + "tag:server": [ + "kratail2tid@passkey" + ], + "tag:prod": [ + "kratail2tid@passkey" + ], + "tag:client": [ + "kratail2tid@passkey" + ], + "tag:router": [ + "kratail2tid@passkey" + ], + "tag:exit": [ + "kratail2tid@passkey" + ], + "tag:ha": [ + "kratail2tid@passkey" + ] }, "hosts": { "webserver": "100.108.74.26", @@ -34,89 +50,146 @@ }, "autoApprovers": { "routes": { - "10.0.0.0/8": ["tag:router"], - "172.16.0.0/12": ["tag:router"], - "192.168.0.0/16": ["tag:ha"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.0.0.0/8": [ + "tag:router" + ], + "172.16.0.0/12": [ + "tag:router" + ], + "192.168.0.0/16": [ + "tag:ha" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "acls": [ { "action": "accept", - "src": ["tag:router"], - "dst": ["tag:router:*"] + "src": [ + "tag:router" + ], + "dst": [ + "tag:router:*" + ] } ] - }, - "api_endpoint": "https://api.tailscale.com/api/v2/tailnet/kratail2tid%40passkey/acl", - "api_response_code": 200 + } }, "topology": { "nodes": { "big-router": { "hostname": "big-router", - "tags": ["tag:router"], + "tags": [ + "tag:router" + ], "ipv4": "100.97.174.21", "ipv6": "fd7a:115c:a1e0::5137:ae15", - "routable_ips": ["10.0.0.0/8"], - "approved_routes": ["10.0.0.0/8"] + "routable_ips": [ + "10.0.0.0/8" + ], + "approved_routes": [ + "10.0.0.0/8" + ] }, "exit-node": { "hostname": "exit-node", - "tags": ["tag:exit"], + "tags": [ + "tag:exit" + ], "ipv4": "100.85.66.106", "ipv6": "fd7a:115c:a1e0::7c37:426a", - "routable_ips": ["0.0.0.0/0", "::/0"], - "approved_routes": ["0.0.0.0/0", "::/0"] + "routable_ips": [ + "0.0.0.0/0", + "::/0" + ], + "approved_routes": [ + "0.0.0.0/0", + "::/0" + ] }, "ha-router1": { "hostname": "ha-router1", - "tags": ["tag:ha"], + "tags": [ + "tag:ha" + ], "ipv4": "100.121.186.70", "ipv6": "fd7a:115c:a1e0::6737:ba46", - "routable_ips": ["192.168.1.0/24"], - "approved_routes": ["192.168.1.0/24"] + "routable_ips": [ + "192.168.1.0/24" + ], + "approved_routes": [ + "192.168.1.0/24" + ] }, "ha-router2": { "hostname": "ha-router2", - "tags": ["tag:ha"], + "tags": [ + "tag:ha" + ], "ipv4": "100.117.104.82", "ipv6": "fd7a:115c:a1e0::7437:6852", - "routable_ips": ["192.168.1.0/24"], - "approved_routes": ["192.168.1.0/24"] + "routable_ips": [ + "192.168.1.0/24" + ], + "approved_routes": [ + "192.168.1.0/24" + ] }, "multi-router": { "hostname": "multi-router", - "tags": ["tag:exit", "tag:router"], + "tags": [ + "tag:exit", + "tag:router" + ], "ipv4": "100.119.241.111", "ipv6": "fd7a:115c:a1e0::3337:f16f", - "routable_ips": ["172.16.0.0/24"], - "approved_routes": ["172.16.0.0/24"] + "routable_ips": [ + "172.16.0.0/24" + ], + "approved_routes": [ + "172.16.0.0/24" + ] }, "subnet-router": { "hostname": "subnet-router", - "tags": ["tag:router"], + "tags": [ + "tag:router" + ], "ipv4": "100.92.142.61", "ipv6": "fd7a:115c:a1e0::3e37:8e3d", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] + "routable_ips": [ + "10.33.0.0/16" + ], + "approved_routes": [ + "10.33.0.0/16" + ] }, "tagged-client": { "hostname": "tagged-client", - "tags": ["tag:client"], + "tags": [ + "tag:client" + ], "ipv4": "100.83.200.69", "ipv6": "fd7a:115c:a1e0::c537:c845" }, "tagged-prod": { "hostname": "tagged-prod", - "tags": ["tag:prod"], + "tags": [ + "tag:prod" + ], "ipv4": "100.103.8.15", "ipv6": "fd7a:115c:a1e0::5b37:80f" }, "tagged-server": { "hostname": "tagged-server", - "tags": ["tag:server"], + "tags": [ + "tag:server" + ], "ipv4": "100.108.74.26", "ipv6": "fd7a:115c:a1e0::b901:4a87" }, diff --git a/hscontrol/policy/v2/testdata/routes_results/ROUTES-a3_explicit_subnet_filter_to_router.hujson b/hscontrol/policy/v2/testdata/routes_results/ROUTES-a3_explicit_subnet_filter_to_router.hujson index 348fcfb2d..c19ea6ef9 100644 --- a/hscontrol/policy/v2/testdata/routes_results/ROUTES-a3_explicit_subnet_filter_to_router.hujson +++ b/hscontrol/policy/v2/testdata/routes_results/ROUTES-a3_explicit_subnet_filter_to_router.hujson @@ -7,24 +7,40 @@ // Expected: Rules on 2 of 12 nodes { "test_id": "ROUTES-a3_explicit_subnet_filter_to_router", - "timestamp": "2026-03-17T16:14:20Z", - "propagation_wait_seconds": 10, "input": { - "policy_file": "routes_policies/routes_a3_explicit_subnet_filter_to_router.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"], - "tag:ha": ["kratail2tid@passkey"] + "tag:server": [ + "kratail2tid@passkey" + ], + "tag:prod": [ + "kratail2tid@passkey" + ], + "tag:client": [ + "kratail2tid@passkey" + ], + "tag:router": [ + "kratail2tid@passkey" + ], + "tag:exit": [ + "kratail2tid@passkey" + ], + "tag:ha": [ + "kratail2tid@passkey" + ] }, "hosts": { "webserver": "100.108.74.26", @@ -34,89 +50,146 @@ }, "autoApprovers": { "routes": { - "10.0.0.0/8": ["tag:router"], - "172.16.0.0/12": ["tag:router"], - "192.168.0.0/16": ["tag:ha"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.0.0.0/8": [ + "tag:router" + ], + "172.16.0.0/12": [ + "tag:router" + ], + "192.168.0.0/16": [ + "tag:ha" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "acls": [ { "action": "accept", - "src": ["*"], - "dst": ["10.33.0.0/16:*"] + "src": [ + "*" + ], + "dst": [ + "10.33.0.0/16:*" + ] } ] - }, - "api_endpoint": "https://api.tailscale.com/api/v2/tailnet/kratail2tid%40passkey/acl", - "api_response_code": 200 + } }, "topology": { "nodes": { "big-router": { "hostname": "big-router", - "tags": ["tag:router"], + "tags": [ + "tag:router" + ], "ipv4": "100.97.174.21", "ipv6": "fd7a:115c:a1e0::5137:ae15", - "routable_ips": ["10.0.0.0/8"], - "approved_routes": ["10.0.0.0/8"] + "routable_ips": [ + "10.0.0.0/8" + ], + "approved_routes": [ + "10.0.0.0/8" + ] }, "exit-node": { "hostname": "exit-node", - "tags": ["tag:exit"], + "tags": [ + "tag:exit" + ], "ipv4": "100.85.66.106", "ipv6": "fd7a:115c:a1e0::7c37:426a", - "routable_ips": ["0.0.0.0/0", "::/0"], - "approved_routes": ["0.0.0.0/0", "::/0"] + "routable_ips": [ + "0.0.0.0/0", + "::/0" + ], + "approved_routes": [ + "0.0.0.0/0", + "::/0" + ] }, "ha-router1": { "hostname": "ha-router1", - "tags": ["tag:ha"], + "tags": [ + "tag:ha" + ], "ipv4": "100.121.186.70", "ipv6": "fd7a:115c:a1e0::6737:ba46", - "routable_ips": ["192.168.1.0/24"], - "approved_routes": ["192.168.1.0/24"] + "routable_ips": [ + "192.168.1.0/24" + ], + "approved_routes": [ + "192.168.1.0/24" + ] }, "ha-router2": { "hostname": "ha-router2", - "tags": ["tag:ha"], + "tags": [ + "tag:ha" + ], "ipv4": "100.117.104.82", "ipv6": "fd7a:115c:a1e0::7437:6852", - "routable_ips": ["192.168.1.0/24"], - "approved_routes": ["192.168.1.0/24"] + "routable_ips": [ + "192.168.1.0/24" + ], + "approved_routes": [ + "192.168.1.0/24" + ] }, "multi-router": { "hostname": "multi-router", - "tags": ["tag:exit", "tag:router"], + "tags": [ + "tag:exit", + "tag:router" + ], "ipv4": "100.119.241.111", "ipv6": "fd7a:115c:a1e0::3337:f16f", - "routable_ips": ["172.16.0.0/24"], - "approved_routes": ["172.16.0.0/24"] + "routable_ips": [ + "172.16.0.0/24" + ], + "approved_routes": [ + "172.16.0.0/24" + ] }, "subnet-router": { "hostname": "subnet-router", - "tags": ["tag:router"], + "tags": [ + "tag:router" + ], "ipv4": "100.92.142.61", "ipv6": "fd7a:115c:a1e0::3e37:8e3d", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] + "routable_ips": [ + "10.33.0.0/16" + ], + "approved_routes": [ + "10.33.0.0/16" + ] }, "tagged-client": { "hostname": "tagged-client", - "tags": ["tag:client"], + "tags": [ + "tag:client" + ], "ipv4": "100.83.200.69", "ipv6": "fd7a:115c:a1e0::c537:c845" }, "tagged-prod": { "hostname": "tagged-prod", - "tags": ["tag:prod"], + "tags": [ + "tag:prod" + ], "ipv4": "100.103.8.15", "ipv6": "fd7a:115c:a1e0::5b37:80f" }, "tagged-server": { "hostname": "tagged-server", - "tags": ["tag:server"], + "tags": [ + "tag:server" + ], "ipv4": "100.108.74.26", "ipv6": "fd7a:115c:a1e0::b901:4a87" }, diff --git a/hscontrol/policy/v2/testdata/routes_results/ROUTES-a3b_autogroup_member_to_subnet.hujson b/hscontrol/policy/v2/testdata/routes_results/ROUTES-a3b_autogroup_member_to_subnet.hujson index 7854c89b4..1f4044690 100644 --- a/hscontrol/policy/v2/testdata/routes_results/ROUTES-a3b_autogroup_member_to_subnet.hujson +++ b/hscontrol/policy/v2/testdata/routes_results/ROUTES-a3b_autogroup_member_to_subnet.hujson @@ -7,24 +7,40 @@ // Expected: Rules on 2 of 12 nodes { "test_id": "ROUTES-a3b_autogroup_member_to_subnet", - "timestamp": "2026-03-17T16:14:10Z", - "propagation_wait_seconds": 10, "input": { - "policy_file": "routes_policies/routes_a3b_autogroup_member_to_subnet.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"], - "tag:ha": ["kratail2tid@passkey"] + "tag:server": [ + "kratail2tid@passkey" + ], + "tag:prod": [ + "kratail2tid@passkey" + ], + "tag:client": [ + "kratail2tid@passkey" + ], + "tag:router": [ + "kratail2tid@passkey" + ], + "tag:exit": [ + "kratail2tid@passkey" + ], + "tag:ha": [ + "kratail2tid@passkey" + ] }, "hosts": { "webserver": "100.108.74.26", @@ -34,89 +50,146 @@ }, "autoApprovers": { "routes": { - "10.0.0.0/8": ["tag:router"], - "172.16.0.0/12": ["tag:router"], - "192.168.0.0/16": ["tag:ha"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.0.0.0/8": [ + "tag:router" + ], + "172.16.0.0/12": [ + "tag:router" + ], + "192.168.0.0/16": [ + "tag:ha" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "acls": [ { "action": "accept", - "src": ["autogroup:member"], - "dst": ["10.33.0.0/16:*"] + "src": [ + "autogroup:member" + ], + "dst": [ + "10.33.0.0/16:*" + ] } ] - }, - "api_endpoint": "https://api.tailscale.com/api/v2/tailnet/kratail2tid%40passkey/acl", - "api_response_code": 200 + } }, "topology": { "nodes": { "big-router": { "hostname": "big-router", - "tags": ["tag:router"], + "tags": [ + "tag:router" + ], "ipv4": "100.97.174.21", "ipv6": "fd7a:115c:a1e0::5137:ae15", - "routable_ips": ["10.0.0.0/8"], - "approved_routes": ["10.0.0.0/8"] + "routable_ips": [ + "10.0.0.0/8" + ], + "approved_routes": [ + "10.0.0.0/8" + ] }, "exit-node": { "hostname": "exit-node", - "tags": ["tag:exit"], + "tags": [ + "tag:exit" + ], "ipv4": "100.85.66.106", "ipv6": "fd7a:115c:a1e0::7c37:426a", - "routable_ips": ["0.0.0.0/0", "::/0"], - "approved_routes": ["0.0.0.0/0", "::/0"] + "routable_ips": [ + "0.0.0.0/0", + "::/0" + ], + "approved_routes": [ + "0.0.0.0/0", + "::/0" + ] }, "ha-router1": { "hostname": "ha-router1", - "tags": ["tag:ha"], + "tags": [ + "tag:ha" + ], "ipv4": "100.121.186.70", "ipv6": "fd7a:115c:a1e0::6737:ba46", - "routable_ips": ["192.168.1.0/24"], - "approved_routes": ["192.168.1.0/24"] + "routable_ips": [ + "192.168.1.0/24" + ], + "approved_routes": [ + "192.168.1.0/24" + ] }, "ha-router2": { "hostname": "ha-router2", - "tags": ["tag:ha"], + "tags": [ + "tag:ha" + ], "ipv4": "100.117.104.82", "ipv6": "fd7a:115c:a1e0::7437:6852", - "routable_ips": ["192.168.1.0/24"], - "approved_routes": ["192.168.1.0/24"] + "routable_ips": [ + "192.168.1.0/24" + ], + "approved_routes": [ + "192.168.1.0/24" + ] }, "multi-router": { "hostname": "multi-router", - "tags": ["tag:exit", "tag:router"], + "tags": [ + "tag:exit", + "tag:router" + ], "ipv4": "100.119.241.111", "ipv6": "fd7a:115c:a1e0::3337:f16f", - "routable_ips": ["172.16.0.0/24"], - "approved_routes": ["172.16.0.0/24"] + "routable_ips": [ + "172.16.0.0/24" + ], + "approved_routes": [ + "172.16.0.0/24" + ] }, "subnet-router": { "hostname": "subnet-router", - "tags": ["tag:router"], + "tags": [ + "tag:router" + ], "ipv4": "100.92.142.61", "ipv6": "fd7a:115c:a1e0::3e37:8e3d", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] + "routable_ips": [ + "10.33.0.0/16" + ], + "approved_routes": [ + "10.33.0.0/16" + ] }, "tagged-client": { "hostname": "tagged-client", - "tags": ["tag:client"], + "tags": [ + "tag:client" + ], "ipv4": "100.83.200.69", "ipv6": "fd7a:115c:a1e0::c537:c845" }, "tagged-prod": { "hostname": "tagged-prod", - "tags": ["tag:prod"], + "tags": [ + "tag:prod" + ], "ipv4": "100.103.8.15", "ipv6": "fd7a:115c:a1e0::5b37:80f" }, "tagged-server": { "hostname": "tagged-server", - "tags": ["tag:server"], + "tags": [ + "tag:server" + ], "ipv4": "100.108.74.26", "ipv6": "fd7a:115c:a1e0::b901:4a87" }, diff --git a/hscontrol/policy/v2/testdata/routes_results/ROUTES-a4_multiple_routes_same_router.hujson b/hscontrol/policy/v2/testdata/routes_results/ROUTES-a4_multiple_routes_same_router.hujson index 8a2071c59..2c63f0ec3 100644 --- a/hscontrol/policy/v2/testdata/routes_results/ROUTES-a4_multiple_routes_same_router.hujson +++ b/hscontrol/policy/v2/testdata/routes_results/ROUTES-a4_multiple_routes_same_router.hujson @@ -7,24 +7,40 @@ // Expected: Rules on 1 of 12 nodes { "test_id": "ROUTES-a4_multiple_routes_same_router", - "timestamp": "2026-03-17T16:14:31Z", - "propagation_wait_seconds": 10, "input": { - "policy_file": "routes_policies/routes_a4_multiple_routes_same_router.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"], - "tag:ha": ["kratail2tid@passkey"] + "tag:server": [ + "kratail2tid@passkey" + ], + "tag:prod": [ + "kratail2tid@passkey" + ], + "tag:client": [ + "kratail2tid@passkey" + ], + "tag:router": [ + "kratail2tid@passkey" + ], + "tag:exit": [ + "kratail2tid@passkey" + ], + "tag:ha": [ + "kratail2tid@passkey" + ] }, "hosts": { "webserver": "100.108.74.26", @@ -34,89 +50,146 @@ }, "autoApprovers": { "routes": { - "10.0.0.0/8": ["tag:router"], - "172.16.0.0/12": ["tag:router"], - "192.168.0.0/16": ["tag:ha"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.0.0.0/8": [ + "tag:router" + ], + "172.16.0.0/12": [ + "tag:router" + ], + "192.168.0.0/16": [ + "tag:ha" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "acls": [ { "action": "accept", - "src": ["*"], - "dst": ["172.16.0.0/24:*"] + "src": [ + "*" + ], + "dst": [ + "172.16.0.0/24:*" + ] } ] - }, - "api_endpoint": "https://api.tailscale.com/api/v2/tailnet/kratail2tid%40passkey/acl", - "api_response_code": 200 + } }, "topology": { "nodes": { "big-router": { "hostname": "big-router", - "tags": ["tag:router"], + "tags": [ + "tag:router" + ], "ipv4": "100.97.174.21", "ipv6": "fd7a:115c:a1e0::5137:ae15", - "routable_ips": ["10.0.0.0/8"], - "approved_routes": ["10.0.0.0/8"] + "routable_ips": [ + "10.0.0.0/8" + ], + "approved_routes": [ + "10.0.0.0/8" + ] }, "exit-node": { "hostname": "exit-node", - "tags": ["tag:exit"], + "tags": [ + "tag:exit" + ], "ipv4": "100.85.66.106", "ipv6": "fd7a:115c:a1e0::7c37:426a", - "routable_ips": ["0.0.0.0/0", "::/0"], - "approved_routes": ["0.0.0.0/0", "::/0"] + "routable_ips": [ + "0.0.0.0/0", + "::/0" + ], + "approved_routes": [ + "0.0.0.0/0", + "::/0" + ] }, "ha-router1": { "hostname": "ha-router1", - "tags": ["tag:ha"], + "tags": [ + "tag:ha" + ], "ipv4": "100.121.186.70", "ipv6": "fd7a:115c:a1e0::6737:ba46", - "routable_ips": ["192.168.1.0/24"], - "approved_routes": ["192.168.1.0/24"] + "routable_ips": [ + "192.168.1.0/24" + ], + "approved_routes": [ + "192.168.1.0/24" + ] }, "ha-router2": { "hostname": "ha-router2", - "tags": ["tag:ha"], + "tags": [ + "tag:ha" + ], "ipv4": "100.117.104.82", "ipv6": "fd7a:115c:a1e0::7437:6852", - "routable_ips": ["192.168.1.0/24"], - "approved_routes": ["192.168.1.0/24"] + "routable_ips": [ + "192.168.1.0/24" + ], + "approved_routes": [ + "192.168.1.0/24" + ] }, "multi-router": { "hostname": "multi-router", - "tags": ["tag:exit", "tag:router"], + "tags": [ + "tag:exit", + "tag:router" + ], "ipv4": "100.119.241.111", "ipv6": "fd7a:115c:a1e0::3337:f16f", - "routable_ips": ["172.16.0.0/24"], - "approved_routes": ["172.16.0.0/24"] + "routable_ips": [ + "172.16.0.0/24" + ], + "approved_routes": [ + "172.16.0.0/24" + ] }, "subnet-router": { "hostname": "subnet-router", - "tags": ["tag:router"], + "tags": [ + "tag:router" + ], "ipv4": "100.92.142.61", "ipv6": "fd7a:115c:a1e0::3e37:8e3d", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] + "routable_ips": [ + "10.33.0.0/16" + ], + "approved_routes": [ + "10.33.0.0/16" + ] }, "tagged-client": { "hostname": "tagged-client", - "tags": ["tag:client"], + "tags": [ + "tag:client" + ], "ipv4": "100.83.200.69", "ipv6": "fd7a:115c:a1e0::c537:c845" }, "tagged-prod": { "hostname": "tagged-prod", - "tags": ["tag:prod"], + "tags": [ + "tag:prod" + ], "ipv4": "100.103.8.15", "ipv6": "fd7a:115c:a1e0::5b37:80f" }, "tagged-server": { "hostname": "tagged-server", - "tags": ["tag:server"], + "tags": [ + "tag:server" + ], "ipv4": "100.108.74.26", "ipv6": "fd7a:115c:a1e0::b901:4a87" }, diff --git a/hscontrol/policy/v2/testdata/routes_results/ROUTES-a5_host_alias_to_subnet.hujson b/hscontrol/policy/v2/testdata/routes_results/ROUTES-a5_host_alias_to_subnet.hujson index 427ef5158..330365e0a 100644 --- a/hscontrol/policy/v2/testdata/routes_results/ROUTES-a5_host_alias_to_subnet.hujson +++ b/hscontrol/policy/v2/testdata/routes_results/ROUTES-a5_host_alias_to_subnet.hujson @@ -7,24 +7,40 @@ // Expected: Rules on 2 of 12 nodes { "test_id": "ROUTES-a5_host_alias_to_subnet", - "timestamp": "2026-03-17T16:14:41Z", - "propagation_wait_seconds": 10, "input": { - "policy_file": "routes_policies/routes_a5_host_alias_to_subnet.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"], - "tag:ha": ["kratail2tid@passkey"] + "tag:server": [ + "kratail2tid@passkey" + ], + "tag:prod": [ + "kratail2tid@passkey" + ], + "tag:client": [ + "kratail2tid@passkey" + ], + "tag:router": [ + "kratail2tid@passkey" + ], + "tag:exit": [ + "kratail2tid@passkey" + ], + "tag:ha": [ + "kratail2tid@passkey" + ] }, "hosts": { "webserver": "100.108.74.26", @@ -34,89 +50,146 @@ }, "autoApprovers": { "routes": { - "10.0.0.0/8": ["tag:router"], - "172.16.0.0/12": ["tag:router"], - "192.168.0.0/16": ["tag:ha"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.0.0.0/8": [ + "tag:router" + ], + "172.16.0.0/12": [ + "tag:router" + ], + "192.168.0.0/16": [ + "tag:ha" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "acls": [ { "action": "accept", - "src": ["*"], - "dst": ["internal:22"] + "src": [ + "*" + ], + "dst": [ + "internal:22" + ] } ] - }, - "api_endpoint": "https://api.tailscale.com/api/v2/tailnet/kratail2tid%40passkey/acl", - "api_response_code": 200 + } }, "topology": { "nodes": { "big-router": { "hostname": "big-router", - "tags": ["tag:router"], + "tags": [ + "tag:router" + ], "ipv4": "100.97.174.21", "ipv6": "fd7a:115c:a1e0::5137:ae15", - "routable_ips": ["10.0.0.0/8"], - "approved_routes": ["10.0.0.0/8"] + "routable_ips": [ + "10.0.0.0/8" + ], + "approved_routes": [ + "10.0.0.0/8" + ] }, "exit-node": { "hostname": "exit-node", - "tags": ["tag:exit"], + "tags": [ + "tag:exit" + ], "ipv4": "100.85.66.106", "ipv6": "fd7a:115c:a1e0::7c37:426a", - "routable_ips": ["0.0.0.0/0", "::/0"], - "approved_routes": ["0.0.0.0/0", "::/0"] + "routable_ips": [ + "0.0.0.0/0", + "::/0" + ], + "approved_routes": [ + "0.0.0.0/0", + "::/0" + ] }, "ha-router1": { "hostname": "ha-router1", - "tags": ["tag:ha"], + "tags": [ + "tag:ha" + ], "ipv4": "100.121.186.70", "ipv6": "fd7a:115c:a1e0::6737:ba46", - "routable_ips": ["192.168.1.0/24"], - "approved_routes": ["192.168.1.0/24"] + "routable_ips": [ + "192.168.1.0/24" + ], + "approved_routes": [ + "192.168.1.0/24" + ] }, "ha-router2": { "hostname": "ha-router2", - "tags": ["tag:ha"], + "tags": [ + "tag:ha" + ], "ipv4": "100.117.104.82", "ipv6": "fd7a:115c:a1e0::7437:6852", - "routable_ips": ["192.168.1.0/24"], - "approved_routes": ["192.168.1.0/24"] + "routable_ips": [ + "192.168.1.0/24" + ], + "approved_routes": [ + "192.168.1.0/24" + ] }, "multi-router": { "hostname": "multi-router", - "tags": ["tag:exit", "tag:router"], + "tags": [ + "tag:exit", + "tag:router" + ], "ipv4": "100.119.241.111", "ipv6": "fd7a:115c:a1e0::3337:f16f", - "routable_ips": ["172.16.0.0/24"], - "approved_routes": ["172.16.0.0/24"] + "routable_ips": [ + "172.16.0.0/24" + ], + "approved_routes": [ + "172.16.0.0/24" + ] }, "subnet-router": { "hostname": "subnet-router", - "tags": ["tag:router"], + "tags": [ + "tag:router" + ], "ipv4": "100.92.142.61", "ipv6": "fd7a:115c:a1e0::3e37:8e3d", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] + "routable_ips": [ + "10.33.0.0/16" + ], + "approved_routes": [ + "10.33.0.0/16" + ] }, "tagged-client": { "hostname": "tagged-client", - "tags": ["tag:client"], + "tags": [ + "tag:client" + ], "ipv4": "100.83.200.69", "ipv6": "fd7a:115c:a1e0::c537:c845" }, "tagged-prod": { "hostname": "tagged-prod", - "tags": ["tag:prod"], + "tags": [ + "tag:prod" + ], "ipv4": "100.103.8.15", "ipv6": "fd7a:115c:a1e0::5b37:80f" }, "tagged-server": { "hostname": "tagged-server", - "tags": ["tag:server"], + "tags": [ + "tag:server" + ], "ipv4": "100.108.74.26", "ipv6": "fd7a:115c:a1e0::b901:4a87" }, diff --git a/hscontrol/policy/v2/testdata/routes_results/ROUTES-b10_exit_routes_not_in_primaryroutes.hujson b/hscontrol/policy/v2/testdata/routes_results/ROUTES-b10_exit_routes_not_in_primaryroutes.hujson index 3fc1a88c6..100634acd 100644 --- a/hscontrol/policy/v2/testdata/routes_results/ROUTES-b10_exit_routes_not_in_primaryroutes.hujson +++ b/hscontrol/policy/v2/testdata/routes_results/ROUTES-b10_exit_routes_not_in_primaryroutes.hujson @@ -7,24 +7,40 @@ // Expected: Rules on 12 of 12 nodes { "test_id": "ROUTES-b10_exit_routes_not_in_primaryroutes", - "timestamp": "2026-03-17T16:14:52Z", - "propagation_wait_seconds": 10, "input": { - "policy_file": "routes_policies/routes_b10_exit_routes_not_in_primaryroutes.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"], - "tag:ha": ["kratail2tid@passkey"] + "tag:server": [ + "kratail2tid@passkey" + ], + "tag:prod": [ + "kratail2tid@passkey" + ], + "tag:client": [ + "kratail2tid@passkey" + ], + "tag:router": [ + "kratail2tid@passkey" + ], + "tag:exit": [ + "kratail2tid@passkey" + ], + "tag:ha": [ + "kratail2tid@passkey" + ] }, "hosts": { "webserver": "100.108.74.26", @@ -34,89 +50,146 @@ }, "autoApprovers": { "routes": { - "10.0.0.0/8": ["tag:router"], - "172.16.0.0/12": ["tag:router"], - "192.168.0.0/16": ["tag:ha"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.0.0.0/8": [ + "tag:router" + ], + "172.16.0.0/12": [ + "tag:router" + ], + "192.168.0.0/16": [ + "tag:ha" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "acls": [ { "action": "accept", - "src": ["*"], - "dst": ["*:*"] + "src": [ + "*" + ], + "dst": [ + "*:*" + ] } ] - }, - "api_endpoint": "https://api.tailscale.com/api/v2/tailnet/kratail2tid%40passkey/acl", - "api_response_code": 200 + } }, "topology": { "nodes": { "big-router": { "hostname": "big-router", - "tags": ["tag:router"], + "tags": [ + "tag:router" + ], "ipv4": "100.97.174.21", "ipv6": "fd7a:115c:a1e0::5137:ae15", - "routable_ips": ["10.0.0.0/8"], - "approved_routes": ["10.0.0.0/8"] + "routable_ips": [ + "10.0.0.0/8" + ], + "approved_routes": [ + "10.0.0.0/8" + ] }, "exit-node": { "hostname": "exit-node", - "tags": ["tag:exit"], + "tags": [ + "tag:exit" + ], "ipv4": "100.85.66.106", "ipv6": "fd7a:115c:a1e0::7c37:426a", - "routable_ips": ["0.0.0.0/0", "::/0"], - "approved_routes": ["0.0.0.0/0", "::/0"] + "routable_ips": [ + "0.0.0.0/0", + "::/0" + ], + "approved_routes": [ + "0.0.0.0/0", + "::/0" + ] }, "ha-router1": { "hostname": "ha-router1", - "tags": ["tag:ha"], + "tags": [ + "tag:ha" + ], "ipv4": "100.121.186.70", "ipv6": "fd7a:115c:a1e0::6737:ba46", - "routable_ips": ["192.168.1.0/24"], - "approved_routes": ["192.168.1.0/24"] + "routable_ips": [ + "192.168.1.0/24" + ], + "approved_routes": [ + "192.168.1.0/24" + ] }, "ha-router2": { "hostname": "ha-router2", - "tags": ["tag:ha"], + "tags": [ + "tag:ha" + ], "ipv4": "100.117.104.82", "ipv6": "fd7a:115c:a1e0::7437:6852", - "routable_ips": ["192.168.1.0/24"], - "approved_routes": ["192.168.1.0/24"] + "routable_ips": [ + "192.168.1.0/24" + ], + "approved_routes": [ + "192.168.1.0/24" + ] }, "multi-router": { "hostname": "multi-router", - "tags": ["tag:exit", "tag:router"], + "tags": [ + "tag:exit", + "tag:router" + ], "ipv4": "100.119.241.111", "ipv6": "fd7a:115c:a1e0::3337:f16f", - "routable_ips": ["172.16.0.0/24"], - "approved_routes": ["172.16.0.0/24"] + "routable_ips": [ + "172.16.0.0/24" + ], + "approved_routes": [ + "172.16.0.0/24" + ] }, "subnet-router": { "hostname": "subnet-router", - "tags": ["tag:router"], + "tags": [ + "tag:router" + ], "ipv4": "100.92.142.61", "ipv6": "fd7a:115c:a1e0::3e37:8e3d", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] + "routable_ips": [ + "10.33.0.0/16" + ], + "approved_routes": [ + "10.33.0.0/16" + ] }, "tagged-client": { "hostname": "tagged-client", - "tags": ["tag:client"], + "tags": [ + "tag:client" + ], "ipv4": "100.83.200.69", "ipv6": "fd7a:115c:a1e0::c537:c845" }, "tagged-prod": { "hostname": "tagged-prod", - "tags": ["tag:prod"], + "tags": [ + "tag:prod" + ], "ipv4": "100.103.8.15", "ipv6": "fd7a:115c:a1e0::5b37:80f" }, "tagged-server": { "hostname": "tagged-server", - "tags": ["tag:server"], + "tags": [ + "tag:server" + ], "ipv4": "100.108.74.26", "ipv6": "fd7a:115c:a1e0::b901:4a87" }, diff --git a/hscontrol/policy/v2/testdata/routes_results/ROUTES-b1_exit_routes_not_in_srcips.hujson b/hscontrol/policy/v2/testdata/routes_results/ROUTES-b1_exit_routes_not_in_srcips.hujson index 000754fb4..1882fa8a6 100644 --- a/hscontrol/policy/v2/testdata/routes_results/ROUTES-b1_exit_routes_not_in_srcips.hujson +++ b/hscontrol/policy/v2/testdata/routes_results/ROUTES-b1_exit_routes_not_in_srcips.hujson @@ -7,24 +7,40 @@ // Expected: Rules on 12 of 12 nodes { "test_id": "ROUTES-b1_exit_routes_not_in_srcips", - "timestamp": "2026-03-17T16:15:03Z", - "propagation_wait_seconds": 10, "input": { - "policy_file": "routes_policies/routes_b1_exit_routes_not_in_srcips.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"], - "tag:ha": ["kratail2tid@passkey"] + "tag:server": [ + "kratail2tid@passkey" + ], + "tag:prod": [ + "kratail2tid@passkey" + ], + "tag:client": [ + "kratail2tid@passkey" + ], + "tag:router": [ + "kratail2tid@passkey" + ], + "tag:exit": [ + "kratail2tid@passkey" + ], + "tag:ha": [ + "kratail2tid@passkey" + ] }, "hosts": { "webserver": "100.108.74.26", @@ -34,89 +50,146 @@ }, "autoApprovers": { "routes": { - "10.0.0.0/8": ["tag:router"], - "172.16.0.0/12": ["tag:router"], - "192.168.0.0/16": ["tag:ha"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.0.0.0/8": [ + "tag:router" + ], + "172.16.0.0/12": [ + "tag:router" + ], + "192.168.0.0/16": [ + "tag:ha" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "acls": [ { "action": "accept", - "src": ["*"], - "dst": ["*:*"] + "src": [ + "*" + ], + "dst": [ + "*:*" + ] } ] - }, - "api_endpoint": "https://api.tailscale.com/api/v2/tailnet/kratail2tid%40passkey/acl", - "api_response_code": 200 + } }, "topology": { "nodes": { "big-router": { "hostname": "big-router", - "tags": ["tag:router"], + "tags": [ + "tag:router" + ], "ipv4": "100.97.174.21", "ipv6": "fd7a:115c:a1e0::5137:ae15", - "routable_ips": ["10.0.0.0/8"], - "approved_routes": ["10.0.0.0/8"] + "routable_ips": [ + "10.0.0.0/8" + ], + "approved_routes": [ + "10.0.0.0/8" + ] }, "exit-node": { "hostname": "exit-node", - "tags": ["tag:exit"], + "tags": [ + "tag:exit" + ], "ipv4": "100.85.66.106", "ipv6": "fd7a:115c:a1e0::7c37:426a", - "routable_ips": ["0.0.0.0/0", "::/0"], - "approved_routes": ["0.0.0.0/0", "::/0"] + "routable_ips": [ + "0.0.0.0/0", + "::/0" + ], + "approved_routes": [ + "0.0.0.0/0", + "::/0" + ] }, "ha-router1": { "hostname": "ha-router1", - "tags": ["tag:ha"], + "tags": [ + "tag:ha" + ], "ipv4": "100.121.186.70", "ipv6": "fd7a:115c:a1e0::6737:ba46", - "routable_ips": ["192.168.1.0/24"], - "approved_routes": ["192.168.1.0/24"] + "routable_ips": [ + "192.168.1.0/24" + ], + "approved_routes": [ + "192.168.1.0/24" + ] }, "ha-router2": { "hostname": "ha-router2", - "tags": ["tag:ha"], + "tags": [ + "tag:ha" + ], "ipv4": "100.117.104.82", "ipv6": "fd7a:115c:a1e0::7437:6852", - "routable_ips": ["192.168.1.0/24"], - "approved_routes": ["192.168.1.0/24"] + "routable_ips": [ + "192.168.1.0/24" + ], + "approved_routes": [ + "192.168.1.0/24" + ] }, "multi-router": { "hostname": "multi-router", - "tags": ["tag:exit", "tag:router"], + "tags": [ + "tag:exit", + "tag:router" + ], "ipv4": "100.119.241.111", "ipv6": "fd7a:115c:a1e0::3337:f16f", - "routable_ips": ["172.16.0.0/24"], - "approved_routes": ["172.16.0.0/24"] + "routable_ips": [ + "172.16.0.0/24" + ], + "approved_routes": [ + "172.16.0.0/24" + ] }, "subnet-router": { "hostname": "subnet-router", - "tags": ["tag:router"], + "tags": [ + "tag:router" + ], "ipv4": "100.92.142.61", "ipv6": "fd7a:115c:a1e0::3e37:8e3d", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] + "routable_ips": [ + "10.33.0.0/16" + ], + "approved_routes": [ + "10.33.0.0/16" + ] }, "tagged-client": { "hostname": "tagged-client", - "tags": ["tag:client"], + "tags": [ + "tag:client" + ], "ipv4": "100.83.200.69", "ipv6": "fd7a:115c:a1e0::c537:c845" }, "tagged-prod": { "hostname": "tagged-prod", - "tags": ["tag:prod"], + "tags": [ + "tag:prod" + ], "ipv4": "100.103.8.15", "ipv6": "fd7a:115c:a1e0::5b37:80f" }, "tagged-server": { "hostname": "tagged-server", - "tags": ["tag:server"], + "tags": [ + "tag:server" + ], "ipv4": "100.108.74.26", "ipv6": "fd7a:115c:a1e0::b901:4a87" }, diff --git a/hscontrol/policy/v2/testdata/routes_results/ROUTES-b2_tag_exit_excludes_exit_routes.hujson b/hscontrol/policy/v2/testdata/routes_results/ROUTES-b2_tag_exit_excludes_exit_routes.hujson index d919fefde..3756ff43f 100644 --- a/hscontrol/policy/v2/testdata/routes_results/ROUTES-b2_tag_exit_excludes_exit_routes.hujson +++ b/hscontrol/policy/v2/testdata/routes_results/ROUTES-b2_tag_exit_excludes_exit_routes.hujson @@ -7,24 +7,40 @@ // Expected: Rules on 2 of 12 nodes { "test_id": "ROUTES-b2_tag_exit_excludes_exit_routes", - "timestamp": "2026-03-17T16:15:13Z", - "propagation_wait_seconds": 10, "input": { - "policy_file": "routes_policies/routes_b2_tag_exit_excludes_exit_routes.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"], - "tag:ha": ["kratail2tid@passkey"] + "tag:server": [ + "kratail2tid@passkey" + ], + "tag:prod": [ + "kratail2tid@passkey" + ], + "tag:client": [ + "kratail2tid@passkey" + ], + "tag:router": [ + "kratail2tid@passkey" + ], + "tag:exit": [ + "kratail2tid@passkey" + ], + "tag:ha": [ + "kratail2tid@passkey" + ] }, "hosts": { "webserver": "100.108.74.26", @@ -34,89 +50,146 @@ }, "autoApprovers": { "routes": { - "10.0.0.0/8": ["tag:router"], - "172.16.0.0/12": ["tag:router"], - "192.168.0.0/16": ["tag:ha"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.0.0.0/8": [ + "tag:router" + ], + "172.16.0.0/12": [ + "tag:router" + ], + "192.168.0.0/16": [ + "tag:ha" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "acls": [ { "action": "accept", - "src": ["tag:exit"], - "dst": ["tag:exit:*"] + "src": [ + "tag:exit" + ], + "dst": [ + "tag:exit:*" + ] } ] - }, - "api_endpoint": "https://api.tailscale.com/api/v2/tailnet/kratail2tid%40passkey/acl", - "api_response_code": 200 + } }, "topology": { "nodes": { "big-router": { "hostname": "big-router", - "tags": ["tag:router"], + "tags": [ + "tag:router" + ], "ipv4": "100.97.174.21", "ipv6": "fd7a:115c:a1e0::5137:ae15", - "routable_ips": ["10.0.0.0/8"], - "approved_routes": ["10.0.0.0/8"] + "routable_ips": [ + "10.0.0.0/8" + ], + "approved_routes": [ + "10.0.0.0/8" + ] }, "exit-node": { "hostname": "exit-node", - "tags": ["tag:exit"], + "tags": [ + "tag:exit" + ], "ipv4": "100.85.66.106", "ipv6": "fd7a:115c:a1e0::7c37:426a", - "routable_ips": ["0.0.0.0/0", "::/0"], - "approved_routes": ["0.0.0.0/0", "::/0"] + "routable_ips": [ + "0.0.0.0/0", + "::/0" + ], + "approved_routes": [ + "0.0.0.0/0", + "::/0" + ] }, "ha-router1": { "hostname": "ha-router1", - "tags": ["tag:ha"], + "tags": [ + "tag:ha" + ], "ipv4": "100.121.186.70", "ipv6": "fd7a:115c:a1e0::6737:ba46", - "routable_ips": ["192.168.1.0/24"], - "approved_routes": ["192.168.1.0/24"] + "routable_ips": [ + "192.168.1.0/24" + ], + "approved_routes": [ + "192.168.1.0/24" + ] }, "ha-router2": { "hostname": "ha-router2", - "tags": ["tag:ha"], + "tags": [ + "tag:ha" + ], "ipv4": "100.117.104.82", "ipv6": "fd7a:115c:a1e0::7437:6852", - "routable_ips": ["192.168.1.0/24"], - "approved_routes": ["192.168.1.0/24"] + "routable_ips": [ + "192.168.1.0/24" + ], + "approved_routes": [ + "192.168.1.0/24" + ] }, "multi-router": { "hostname": "multi-router", - "tags": ["tag:exit", "tag:router"], + "tags": [ + "tag:exit", + "tag:router" + ], "ipv4": "100.119.241.111", "ipv6": "fd7a:115c:a1e0::3337:f16f", - "routable_ips": ["172.16.0.0/24"], - "approved_routes": ["172.16.0.0/24"] + "routable_ips": [ + "172.16.0.0/24" + ], + "approved_routes": [ + "172.16.0.0/24" + ] }, "subnet-router": { "hostname": "subnet-router", - "tags": ["tag:router"], + "tags": [ + "tag:router" + ], "ipv4": "100.92.142.61", "ipv6": "fd7a:115c:a1e0::3e37:8e3d", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] + "routable_ips": [ + "10.33.0.0/16" + ], + "approved_routes": [ + "10.33.0.0/16" + ] }, "tagged-client": { "hostname": "tagged-client", - "tags": ["tag:client"], + "tags": [ + "tag:client" + ], "ipv4": "100.83.200.69", "ipv6": "fd7a:115c:a1e0::c537:c845" }, "tagged-prod": { "hostname": "tagged-prod", - "tags": ["tag:prod"], + "tags": [ + "tag:prod" + ], "ipv4": "100.103.8.15", "ipv6": "fd7a:115c:a1e0::5b37:80f" }, "tagged-server": { "hostname": "tagged-server", - "tags": ["tag:server"], + "tags": [ + "tag:server" + ], "ipv4": "100.108.74.26", "ipv6": "fd7a:115c:a1e0::b901:4a87" }, @@ -147,7 +220,12 @@ "exit-node": { "packet_filter_rules": [ { - "SrcIPs": ["100.119.241.111", "100.85.66.106", "fd7a:115c:a1e0::3337:f16f", "fd7a:115c:a1e0::7c37:426a"], + "SrcIPs": [ + "100.119.241.111", + "100.85.66.106", + "fd7a:115c:a1e0::3337:f16f", + "fd7a:115c:a1e0::7c37:426a" + ], "DstPorts": [ { "IP": "100.85.66.106", @@ -176,7 +254,12 @@ "multi-router": { "packet_filter_rules": [ { - "SrcIPs": ["100.119.241.111", "100.85.66.106", "fd7a:115c:a1e0::3337:f16f", "fd7a:115c:a1e0::7c37:426a"], + "SrcIPs": [ + "100.119.241.111", + "100.85.66.106", + "fd7a:115c:a1e0::3337:f16f", + "fd7a:115c:a1e0::7c37:426a" + ], "DstPorts": [ { "IP": "100.119.241.111", diff --git a/hscontrol/policy/v2/testdata/routes_results/ROUTES-b3_exit_node_advertises_routes.hujson b/hscontrol/policy/v2/testdata/routes_results/ROUTES-b3_exit_node_advertises_routes.hujson index ceb89c5f7..0c09e17d1 100644 --- a/hscontrol/policy/v2/testdata/routes_results/ROUTES-b3_exit_node_advertises_routes.hujson +++ b/hscontrol/policy/v2/testdata/routes_results/ROUTES-b3_exit_node_advertises_routes.hujson @@ -7,24 +7,40 @@ // Expected: Rules on 12 of 12 nodes { "test_id": "ROUTES-b3_exit_node_advertises_routes", - "timestamp": "2026-03-17T16:15:24Z", - "propagation_wait_seconds": 10, "input": { - "policy_file": "routes_policies/routes_b3_exit_node_advertises_routes.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"], - "tag:ha": ["kratail2tid@passkey"] + "tag:server": [ + "kratail2tid@passkey" + ], + "tag:prod": [ + "kratail2tid@passkey" + ], + "tag:client": [ + "kratail2tid@passkey" + ], + "tag:router": [ + "kratail2tid@passkey" + ], + "tag:exit": [ + "kratail2tid@passkey" + ], + "tag:ha": [ + "kratail2tid@passkey" + ] }, "hosts": { "webserver": "100.108.74.26", @@ -34,89 +50,146 @@ }, "autoApprovers": { "routes": { - "10.0.0.0/8": ["tag:router"], - "172.16.0.0/12": ["tag:router"], - "192.168.0.0/16": ["tag:ha"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.0.0.0/8": [ + "tag:router" + ], + "172.16.0.0/12": [ + "tag:router" + ], + "192.168.0.0/16": [ + "tag:ha" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "acls": [ { "action": "accept", - "src": ["*"], - "dst": ["*:*"] + "src": [ + "*" + ], + "dst": [ + "*:*" + ] } ] - }, - "api_endpoint": "https://api.tailscale.com/api/v2/tailnet/kratail2tid%40passkey/acl", - "api_response_code": 200 + } }, "topology": { "nodes": { "big-router": { "hostname": "big-router", - "tags": ["tag:router"], + "tags": [ + "tag:router" + ], "ipv4": "100.97.174.21", "ipv6": "fd7a:115c:a1e0::5137:ae15", - "routable_ips": ["10.0.0.0/8"], - "approved_routes": ["10.0.0.0/8"] + "routable_ips": [ + "10.0.0.0/8" + ], + "approved_routes": [ + "10.0.0.0/8" + ] }, "exit-node": { "hostname": "exit-node", - "tags": ["tag:exit"], + "tags": [ + "tag:exit" + ], "ipv4": "100.85.66.106", "ipv6": "fd7a:115c:a1e0::7c37:426a", - "routable_ips": ["0.0.0.0/0", "::/0"], - "approved_routes": ["0.0.0.0/0", "::/0"] + "routable_ips": [ + "0.0.0.0/0", + "::/0" + ], + "approved_routes": [ + "0.0.0.0/0", + "::/0" + ] }, "ha-router1": { "hostname": "ha-router1", - "tags": ["tag:ha"], + "tags": [ + "tag:ha" + ], "ipv4": "100.121.186.70", "ipv6": "fd7a:115c:a1e0::6737:ba46", - "routable_ips": ["192.168.1.0/24"], - "approved_routes": ["192.168.1.0/24"] + "routable_ips": [ + "192.168.1.0/24" + ], + "approved_routes": [ + "192.168.1.0/24" + ] }, "ha-router2": { "hostname": "ha-router2", - "tags": ["tag:ha"], + "tags": [ + "tag:ha" + ], "ipv4": "100.117.104.82", "ipv6": "fd7a:115c:a1e0::7437:6852", - "routable_ips": ["192.168.1.0/24"], - "approved_routes": ["192.168.1.0/24"] + "routable_ips": [ + "192.168.1.0/24" + ], + "approved_routes": [ + "192.168.1.0/24" + ] }, "multi-router": { "hostname": "multi-router", - "tags": ["tag:exit", "tag:router"], + "tags": [ + "tag:exit", + "tag:router" + ], "ipv4": "100.119.241.111", "ipv6": "fd7a:115c:a1e0::3337:f16f", - "routable_ips": ["172.16.0.0/24"], - "approved_routes": ["172.16.0.0/24"] + "routable_ips": [ + "172.16.0.0/24" + ], + "approved_routes": [ + "172.16.0.0/24" + ] }, "subnet-router": { "hostname": "subnet-router", - "tags": ["tag:router"], + "tags": [ + "tag:router" + ], "ipv4": "100.92.142.61", "ipv6": "fd7a:115c:a1e0::3e37:8e3d", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] + "routable_ips": [ + "10.33.0.0/16" + ], + "approved_routes": [ + "10.33.0.0/16" + ] }, "tagged-client": { "hostname": "tagged-client", - "tags": ["tag:client"], + "tags": [ + "tag:client" + ], "ipv4": "100.83.200.69", "ipv6": "fd7a:115c:a1e0::c537:c845" }, "tagged-prod": { "hostname": "tagged-prod", - "tags": ["tag:prod"], + "tags": [ + "tag:prod" + ], "ipv4": "100.103.8.15", "ipv6": "fd7a:115c:a1e0::5b37:80f" }, "tagged-server": { "hostname": "tagged-server", - "tags": ["tag:server"], + "tags": [ + "tag:server" + ], "ipv4": "100.108.74.26", "ipv6": "fd7a:115c:a1e0::b901:4a87" }, diff --git a/hscontrol/policy/v2/testdata/routes_results/ROUTES-b4_multi_router_has_both_route_types.hujson b/hscontrol/policy/v2/testdata/routes_results/ROUTES-b4_multi_router_has_both_route_types.hujson index 602de1fcd..cdbbe9dc9 100644 --- a/hscontrol/policy/v2/testdata/routes_results/ROUTES-b4_multi_router_has_both_route_types.hujson +++ b/hscontrol/policy/v2/testdata/routes_results/ROUTES-b4_multi_router_has_both_route_types.hujson @@ -7,24 +7,40 @@ // Expected: Rules on 12 of 12 nodes { "test_id": "ROUTES-b4_multi_router_has_both_route_types", - "timestamp": "2026-03-17T16:15:35Z", - "propagation_wait_seconds": 10, "input": { - "policy_file": "routes_policies/routes_b4_multi_router_has_both_route_types.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"], - "tag:ha": ["kratail2tid@passkey"] + "tag:server": [ + "kratail2tid@passkey" + ], + "tag:prod": [ + "kratail2tid@passkey" + ], + "tag:client": [ + "kratail2tid@passkey" + ], + "tag:router": [ + "kratail2tid@passkey" + ], + "tag:exit": [ + "kratail2tid@passkey" + ], + "tag:ha": [ + "kratail2tid@passkey" + ] }, "hosts": { "webserver": "100.108.74.26", @@ -34,89 +50,146 @@ }, "autoApprovers": { "routes": { - "10.0.0.0/8": ["tag:router"], - "172.16.0.0/12": ["tag:router"], - "192.168.0.0/16": ["tag:ha"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.0.0.0/8": [ + "tag:router" + ], + "172.16.0.0/12": [ + "tag:router" + ], + "192.168.0.0/16": [ + "tag:ha" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "acls": [ { "action": "accept", - "src": ["*"], - "dst": ["*:*"] + "src": [ + "*" + ], + "dst": [ + "*:*" + ] } ] - }, - "api_endpoint": "https://api.tailscale.com/api/v2/tailnet/kratail2tid%40passkey/acl", - "api_response_code": 200 + } }, "topology": { "nodes": { "big-router": { "hostname": "big-router", - "tags": ["tag:router"], + "tags": [ + "tag:router" + ], "ipv4": "100.97.174.21", "ipv6": "fd7a:115c:a1e0::5137:ae15", - "routable_ips": ["10.0.0.0/8"], - "approved_routes": ["10.0.0.0/8"] + "routable_ips": [ + "10.0.0.0/8" + ], + "approved_routes": [ + "10.0.0.0/8" + ] }, "exit-node": { "hostname": "exit-node", - "tags": ["tag:exit"], + "tags": [ + "tag:exit" + ], "ipv4": "100.85.66.106", "ipv6": "fd7a:115c:a1e0::7c37:426a", - "routable_ips": ["0.0.0.0/0", "::/0"], - "approved_routes": ["0.0.0.0/0", "::/0"] + "routable_ips": [ + "0.0.0.0/0", + "::/0" + ], + "approved_routes": [ + "0.0.0.0/0", + "::/0" + ] }, "ha-router1": { "hostname": "ha-router1", - "tags": ["tag:ha"], + "tags": [ + "tag:ha" + ], "ipv4": "100.121.186.70", "ipv6": "fd7a:115c:a1e0::6737:ba46", - "routable_ips": ["192.168.1.0/24"], - "approved_routes": ["192.168.1.0/24"] + "routable_ips": [ + "192.168.1.0/24" + ], + "approved_routes": [ + "192.168.1.0/24" + ] }, "ha-router2": { "hostname": "ha-router2", - "tags": ["tag:ha"], + "tags": [ + "tag:ha" + ], "ipv4": "100.117.104.82", "ipv6": "fd7a:115c:a1e0::7437:6852", - "routable_ips": ["192.168.1.0/24"], - "approved_routes": ["192.168.1.0/24"] + "routable_ips": [ + "192.168.1.0/24" + ], + "approved_routes": [ + "192.168.1.0/24" + ] }, "multi-router": { "hostname": "multi-router", - "tags": ["tag:exit", "tag:router"], + "tags": [ + "tag:exit", + "tag:router" + ], "ipv4": "100.119.241.111", "ipv6": "fd7a:115c:a1e0::3337:f16f", - "routable_ips": ["172.16.0.0/24"], - "approved_routes": ["172.16.0.0/24"] + "routable_ips": [ + "172.16.0.0/24" + ], + "approved_routes": [ + "172.16.0.0/24" + ] }, "subnet-router": { "hostname": "subnet-router", - "tags": ["tag:router"], + "tags": [ + "tag:router" + ], "ipv4": "100.92.142.61", "ipv6": "fd7a:115c:a1e0::3e37:8e3d", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] + "routable_ips": [ + "10.33.0.0/16" + ], + "approved_routes": [ + "10.33.0.0/16" + ] }, "tagged-client": { "hostname": "tagged-client", - "tags": ["tag:client"], + "tags": [ + "tag:client" + ], "ipv4": "100.83.200.69", "ipv6": "fd7a:115c:a1e0::c537:c845" }, "tagged-prod": { "hostname": "tagged-prod", - "tags": ["tag:prod"], + "tags": [ + "tag:prod" + ], "ipv4": "100.103.8.15", "ipv6": "fd7a:115c:a1e0::5b37:80f" }, "tagged-server": { "hostname": "tagged-server", - "tags": ["tag:server"], + "tags": [ + "tag:server" + ], "ipv4": "100.108.74.26", "ipv6": "fd7a:115c:a1e0::b901:4a87" }, diff --git a/hscontrol/policy/v2/testdata/routes_results/ROUTES-b5_exit_with_wildcard_dst.hujson b/hscontrol/policy/v2/testdata/routes_results/ROUTES-b5_exit_with_wildcard_dst.hujson index 8fd5eba9f..6f77e8fa7 100644 --- a/hscontrol/policy/v2/testdata/routes_results/ROUTES-b5_exit_with_wildcard_dst.hujson +++ b/hscontrol/policy/v2/testdata/routes_results/ROUTES-b5_exit_with_wildcard_dst.hujson @@ -7,24 +7,40 @@ // Expected: Rules on 12 of 12 nodes { "test_id": "ROUTES-b5_exit_with_wildcard_dst", - "timestamp": "2026-03-17T16:15:45Z", - "propagation_wait_seconds": 10, "input": { - "policy_file": "routes_policies/routes_b5_exit_with_wildcard_dst.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"], - "tag:ha": ["kratail2tid@passkey"] + "tag:server": [ + "kratail2tid@passkey" + ], + "tag:prod": [ + "kratail2tid@passkey" + ], + "tag:client": [ + "kratail2tid@passkey" + ], + "tag:router": [ + "kratail2tid@passkey" + ], + "tag:exit": [ + "kratail2tid@passkey" + ], + "tag:ha": [ + "kratail2tid@passkey" + ] }, "hosts": { "webserver": "100.108.74.26", @@ -34,89 +50,146 @@ }, "autoApprovers": { "routes": { - "10.0.0.0/8": ["tag:router"], - "172.16.0.0/12": ["tag:router"], - "192.168.0.0/16": ["tag:ha"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.0.0.0/8": [ + "tag:router" + ], + "172.16.0.0/12": [ + "tag:router" + ], + "192.168.0.0/16": [ + "tag:ha" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "acls": [ { "action": "accept", - "src": ["*"], - "dst": ["*:*"] + "src": [ + "*" + ], + "dst": [ + "*:*" + ] } ] - }, - "api_endpoint": "https://api.tailscale.com/api/v2/tailnet/kratail2tid%40passkey/acl", - "api_response_code": 200 + } }, "topology": { "nodes": { "big-router": { "hostname": "big-router", - "tags": ["tag:router"], + "tags": [ + "tag:router" + ], "ipv4": "100.97.174.21", "ipv6": "fd7a:115c:a1e0::5137:ae15", - "routable_ips": ["10.0.0.0/8"], - "approved_routes": ["10.0.0.0/8"] + "routable_ips": [ + "10.0.0.0/8" + ], + "approved_routes": [ + "10.0.0.0/8" + ] }, "exit-node": { "hostname": "exit-node", - "tags": ["tag:exit"], + "tags": [ + "tag:exit" + ], "ipv4": "100.85.66.106", "ipv6": "fd7a:115c:a1e0::7c37:426a", - "routable_ips": ["0.0.0.0/0", "::/0"], - "approved_routes": ["0.0.0.0/0", "::/0"] + "routable_ips": [ + "0.0.0.0/0", + "::/0" + ], + "approved_routes": [ + "0.0.0.0/0", + "::/0" + ] }, "ha-router1": { "hostname": "ha-router1", - "tags": ["tag:ha"], + "tags": [ + "tag:ha" + ], "ipv4": "100.121.186.70", "ipv6": "fd7a:115c:a1e0::6737:ba46", - "routable_ips": ["192.168.1.0/24"], - "approved_routes": ["192.168.1.0/24"] + "routable_ips": [ + "192.168.1.0/24" + ], + "approved_routes": [ + "192.168.1.0/24" + ] }, "ha-router2": { "hostname": "ha-router2", - "tags": ["tag:ha"], + "tags": [ + "tag:ha" + ], "ipv4": "100.117.104.82", "ipv6": "fd7a:115c:a1e0::7437:6852", - "routable_ips": ["192.168.1.0/24"], - "approved_routes": ["192.168.1.0/24"] + "routable_ips": [ + "192.168.1.0/24" + ], + "approved_routes": [ + "192.168.1.0/24" + ] }, "multi-router": { "hostname": "multi-router", - "tags": ["tag:exit", "tag:router"], + "tags": [ + "tag:exit", + "tag:router" + ], "ipv4": "100.119.241.111", "ipv6": "fd7a:115c:a1e0::3337:f16f", - "routable_ips": ["172.16.0.0/24"], - "approved_routes": ["172.16.0.0/24"] + "routable_ips": [ + "172.16.0.0/24" + ], + "approved_routes": [ + "172.16.0.0/24" + ] }, "subnet-router": { "hostname": "subnet-router", - "tags": ["tag:router"], + "tags": [ + "tag:router" + ], "ipv4": "100.92.142.61", "ipv6": "fd7a:115c:a1e0::3e37:8e3d", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] + "routable_ips": [ + "10.33.0.0/16" + ], + "approved_routes": [ + "10.33.0.0/16" + ] }, "tagged-client": { "hostname": "tagged-client", - "tags": ["tag:client"], + "tags": [ + "tag:client" + ], "ipv4": "100.83.200.69", "ipv6": "fd7a:115c:a1e0::c537:c845" }, "tagged-prod": { "hostname": "tagged-prod", - "tags": ["tag:prod"], + "tags": [ + "tag:prod" + ], "ipv4": "100.103.8.15", "ipv6": "fd7a:115c:a1e0::5b37:80f" }, "tagged-server": { "hostname": "tagged-server", - "tags": ["tag:server"], + "tags": [ + "tag:server" + ], "ipv4": "100.108.74.26", "ipv6": "fd7a:115c:a1e0::b901:4a87" }, diff --git a/hscontrol/policy/v2/testdata/routes_results/ROUTES-b6_exit_node_option_field.hujson b/hscontrol/policy/v2/testdata/routes_results/ROUTES-b6_exit_node_option_field.hujson index b56a2b67f..fa1a33bc6 100644 --- a/hscontrol/policy/v2/testdata/routes_results/ROUTES-b6_exit_node_option_field.hujson +++ b/hscontrol/policy/v2/testdata/routes_results/ROUTES-b6_exit_node_option_field.hujson @@ -7,24 +7,40 @@ // Expected: Rules on 12 of 12 nodes { "test_id": "ROUTES-b6_exit_node_option_field", - "timestamp": "2026-03-17T16:15:56Z", - "propagation_wait_seconds": 10, "input": { - "policy_file": "routes_policies/routes_b6_exit_node_option_field.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"], - "tag:ha": ["kratail2tid@passkey"] + "tag:server": [ + "kratail2tid@passkey" + ], + "tag:prod": [ + "kratail2tid@passkey" + ], + "tag:client": [ + "kratail2tid@passkey" + ], + "tag:router": [ + "kratail2tid@passkey" + ], + "tag:exit": [ + "kratail2tid@passkey" + ], + "tag:ha": [ + "kratail2tid@passkey" + ] }, "hosts": { "webserver": "100.108.74.26", @@ -34,89 +50,146 @@ }, "autoApprovers": { "routes": { - "10.0.0.0/8": ["tag:router"], - "172.16.0.0/12": ["tag:router"], - "192.168.0.0/16": ["tag:ha"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.0.0.0/8": [ + "tag:router" + ], + "172.16.0.0/12": [ + "tag:router" + ], + "192.168.0.0/16": [ + "tag:ha" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "acls": [ { "action": "accept", - "src": ["tag:exit"], - "dst": ["*:*"] + "src": [ + "tag:exit" + ], + "dst": [ + "*:*" + ] } ] - }, - "api_endpoint": "https://api.tailscale.com/api/v2/tailnet/kratail2tid%40passkey/acl", - "api_response_code": 200 + } }, "topology": { "nodes": { "big-router": { "hostname": "big-router", - "tags": ["tag:router"], + "tags": [ + "tag:router" + ], "ipv4": "100.97.174.21", "ipv6": "fd7a:115c:a1e0::5137:ae15", - "routable_ips": ["10.0.0.0/8"], - "approved_routes": ["10.0.0.0/8"] + "routable_ips": [ + "10.0.0.0/8" + ], + "approved_routes": [ + "10.0.0.0/8" + ] }, "exit-node": { "hostname": "exit-node", - "tags": ["tag:exit"], + "tags": [ + "tag:exit" + ], "ipv4": "100.85.66.106", "ipv6": "fd7a:115c:a1e0::7c37:426a", - "routable_ips": ["0.0.0.0/0", "::/0"], - "approved_routes": ["0.0.0.0/0", "::/0"] + "routable_ips": [ + "0.0.0.0/0", + "::/0" + ], + "approved_routes": [ + "0.0.0.0/0", + "::/0" + ] }, "ha-router1": { "hostname": "ha-router1", - "tags": ["tag:ha"], + "tags": [ + "tag:ha" + ], "ipv4": "100.121.186.70", "ipv6": "fd7a:115c:a1e0::6737:ba46", - "routable_ips": ["192.168.1.0/24"], - "approved_routes": ["192.168.1.0/24"] + "routable_ips": [ + "192.168.1.0/24" + ], + "approved_routes": [ + "192.168.1.0/24" + ] }, "ha-router2": { "hostname": "ha-router2", - "tags": ["tag:ha"], + "tags": [ + "tag:ha" + ], "ipv4": "100.117.104.82", "ipv6": "fd7a:115c:a1e0::7437:6852", - "routable_ips": ["192.168.1.0/24"], - "approved_routes": ["192.168.1.0/24"] + "routable_ips": [ + "192.168.1.0/24" + ], + "approved_routes": [ + "192.168.1.0/24" + ] }, "multi-router": { "hostname": "multi-router", - "tags": ["tag:exit", "tag:router"], + "tags": [ + "tag:exit", + "tag:router" + ], "ipv4": "100.119.241.111", "ipv6": "fd7a:115c:a1e0::3337:f16f", - "routable_ips": ["172.16.0.0/24"], - "approved_routes": ["172.16.0.0/24"] + "routable_ips": [ + "172.16.0.0/24" + ], + "approved_routes": [ + "172.16.0.0/24" + ] }, "subnet-router": { "hostname": "subnet-router", - "tags": ["tag:router"], + "tags": [ + "tag:router" + ], "ipv4": "100.92.142.61", "ipv6": "fd7a:115c:a1e0::3e37:8e3d", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] + "routable_ips": [ + "10.33.0.0/16" + ], + "approved_routes": [ + "10.33.0.0/16" + ] }, "tagged-client": { "hostname": "tagged-client", - "tags": ["tag:client"], + "tags": [ + "tag:client" + ], "ipv4": "100.83.200.69", "ipv6": "fd7a:115c:a1e0::c537:c845" }, "tagged-prod": { "hostname": "tagged-prod", - "tags": ["tag:prod"], + "tags": [ + "tag:prod" + ], "ipv4": "100.103.8.15", "ipv6": "fd7a:115c:a1e0::5b37:80f" }, "tagged-server": { "hostname": "tagged-server", - "tags": ["tag:server"], + "tags": [ + "tag:server" + ], "ipv4": "100.108.74.26", "ipv6": "fd7a:115c:a1e0::b901:4a87" }, @@ -144,7 +217,12 @@ "big-router": { "packet_filter_rules": [ { - "SrcIPs": ["100.119.241.111", "100.85.66.106", "fd7a:115c:a1e0::3337:f16f", "fd7a:115c:a1e0::7c37:426a"], + "SrcIPs": [ + "100.119.241.111", + "100.85.66.106", + "fd7a:115c:a1e0::3337:f16f", + "fd7a:115c:a1e0::7c37:426a" + ], "DstPorts": [ { "IP": "*", @@ -160,7 +238,12 @@ "exit-node": { "packet_filter_rules": [ { - "SrcIPs": ["100.119.241.111", "100.85.66.106", "fd7a:115c:a1e0::3337:f16f", "fd7a:115c:a1e0::7c37:426a"], + "SrcIPs": [ + "100.119.241.111", + "100.85.66.106", + "fd7a:115c:a1e0::3337:f16f", + "fd7a:115c:a1e0::7c37:426a" + ], "DstPorts": [ { "IP": "*", @@ -176,7 +259,12 @@ "ha-router1": { "packet_filter_rules": [ { - "SrcIPs": ["100.119.241.111", "100.85.66.106", "fd7a:115c:a1e0::3337:f16f", "fd7a:115c:a1e0::7c37:426a"], + "SrcIPs": [ + "100.119.241.111", + "100.85.66.106", + "fd7a:115c:a1e0::3337:f16f", + "fd7a:115c:a1e0::7c37:426a" + ], "DstPorts": [ { "IP": "*", @@ -192,7 +280,12 @@ "ha-router2": { "packet_filter_rules": [ { - "SrcIPs": ["100.119.241.111", "100.85.66.106", "fd7a:115c:a1e0::3337:f16f", "fd7a:115c:a1e0::7c37:426a"], + "SrcIPs": [ + "100.119.241.111", + "100.85.66.106", + "fd7a:115c:a1e0::3337:f16f", + "fd7a:115c:a1e0::7c37:426a" + ], "DstPorts": [ { "IP": "*", @@ -208,7 +301,12 @@ "multi-router": { "packet_filter_rules": [ { - "SrcIPs": ["100.119.241.111", "100.85.66.106", "fd7a:115c:a1e0::3337:f16f", "fd7a:115c:a1e0::7c37:426a"], + "SrcIPs": [ + "100.119.241.111", + "100.85.66.106", + "fd7a:115c:a1e0::3337:f16f", + "fd7a:115c:a1e0::7c37:426a" + ], "DstPorts": [ { "IP": "*", @@ -224,7 +322,12 @@ "subnet-router": { "packet_filter_rules": [ { - "SrcIPs": ["100.119.241.111", "100.85.66.106", "fd7a:115c:a1e0::3337:f16f", "fd7a:115c:a1e0::7c37:426a"], + "SrcIPs": [ + "100.119.241.111", + "100.85.66.106", + "fd7a:115c:a1e0::3337:f16f", + "fd7a:115c:a1e0::7c37:426a" + ], "DstPorts": [ { "IP": "*", @@ -240,7 +343,12 @@ "tagged-client": { "packet_filter_rules": [ { - "SrcIPs": ["100.119.241.111", "100.85.66.106", "fd7a:115c:a1e0::3337:f16f", "fd7a:115c:a1e0::7c37:426a"], + "SrcIPs": [ + "100.119.241.111", + "100.85.66.106", + "fd7a:115c:a1e0::3337:f16f", + "fd7a:115c:a1e0::7c37:426a" + ], "DstPorts": [ { "IP": "*", @@ -256,7 +364,12 @@ "tagged-prod": { "packet_filter_rules": [ { - "SrcIPs": ["100.119.241.111", "100.85.66.106", "fd7a:115c:a1e0::3337:f16f", "fd7a:115c:a1e0::7c37:426a"], + "SrcIPs": [ + "100.119.241.111", + "100.85.66.106", + "fd7a:115c:a1e0::3337:f16f", + "fd7a:115c:a1e0::7c37:426a" + ], "DstPorts": [ { "IP": "*", @@ -272,7 +385,12 @@ "tagged-server": { "packet_filter_rules": [ { - "SrcIPs": ["100.119.241.111", "100.85.66.106", "fd7a:115c:a1e0::3337:f16f", "fd7a:115c:a1e0::7c37:426a"], + "SrcIPs": [ + "100.119.241.111", + "100.85.66.106", + "fd7a:115c:a1e0::3337:f16f", + "fd7a:115c:a1e0::7c37:426a" + ], "DstPorts": [ { "IP": "*", @@ -288,7 +406,12 @@ "user-kris": { "packet_filter_rules": [ { - "SrcIPs": ["100.119.241.111", "100.85.66.106", "fd7a:115c:a1e0::3337:f16f", "fd7a:115c:a1e0::7c37:426a"], + "SrcIPs": [ + "100.119.241.111", + "100.85.66.106", + "fd7a:115c:a1e0::3337:f16f", + "fd7a:115c:a1e0::7c37:426a" + ], "DstPorts": [ { "IP": "*", @@ -304,7 +427,12 @@ "user-mon": { "packet_filter_rules": [ { - "SrcIPs": ["100.119.241.111", "100.85.66.106", "fd7a:115c:a1e0::3337:f16f", "fd7a:115c:a1e0::7c37:426a"], + "SrcIPs": [ + "100.119.241.111", + "100.85.66.106", + "fd7a:115c:a1e0::3337:f16f", + "fd7a:115c:a1e0::7c37:426a" + ], "DstPorts": [ { "IP": "*", @@ -320,7 +448,12 @@ "user1": { "packet_filter_rules": [ { - "SrcIPs": ["100.119.241.111", "100.85.66.106", "fd7a:115c:a1e0::3337:f16f", "fd7a:115c:a1e0::7c37:426a"], + "SrcIPs": [ + "100.119.241.111", + "100.85.66.106", + "fd7a:115c:a1e0::3337:f16f", + "fd7a:115c:a1e0::7c37:426a" + ], "DstPorts": [ { "IP": "*", diff --git a/hscontrol/policy/v2/testdata/routes_results/ROUTES-b7_multiple_exit_nodes.hujson b/hscontrol/policy/v2/testdata/routes_results/ROUTES-b7_multiple_exit_nodes.hujson index 6a04af570..cbc0f1945 100644 --- a/hscontrol/policy/v2/testdata/routes_results/ROUTES-b7_multiple_exit_nodes.hujson +++ b/hscontrol/policy/v2/testdata/routes_results/ROUTES-b7_multiple_exit_nodes.hujson @@ -7,24 +7,40 @@ // Expected: Rules on 12 of 12 nodes { "test_id": "ROUTES-b7_multiple_exit_nodes", - "timestamp": "2026-03-17T16:16:07Z", - "propagation_wait_seconds": 10, "input": { - "policy_file": "routes_policies/routes_b7_multiple_exit_nodes.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"], - "tag:ha": ["kratail2tid@passkey"] + "tag:server": [ + "kratail2tid@passkey" + ], + "tag:prod": [ + "kratail2tid@passkey" + ], + "tag:client": [ + "kratail2tid@passkey" + ], + "tag:router": [ + "kratail2tid@passkey" + ], + "tag:exit": [ + "kratail2tid@passkey" + ], + "tag:ha": [ + "kratail2tid@passkey" + ] }, "hosts": { "webserver": "100.108.74.26", @@ -34,89 +50,146 @@ }, "autoApprovers": { "routes": { - "10.0.0.0/8": ["tag:router"], - "172.16.0.0/12": ["tag:router"], - "192.168.0.0/16": ["tag:ha"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.0.0.0/8": [ + "tag:router" + ], + "172.16.0.0/12": [ + "tag:router" + ], + "192.168.0.0/16": [ + "tag:ha" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "acls": [ { "action": "accept", - "src": ["tag:exit"], - "dst": ["*:*"] + "src": [ + "tag:exit" + ], + "dst": [ + "*:*" + ] } ] - }, - "api_endpoint": "https://api.tailscale.com/api/v2/tailnet/kratail2tid%40passkey/acl", - "api_response_code": 200 + } }, "topology": { "nodes": { "big-router": { "hostname": "big-router", - "tags": ["tag:router"], + "tags": [ + "tag:router" + ], "ipv4": "100.97.174.21", "ipv6": "fd7a:115c:a1e0::5137:ae15", - "routable_ips": ["10.0.0.0/8"], - "approved_routes": ["10.0.0.0/8"] + "routable_ips": [ + "10.0.0.0/8" + ], + "approved_routes": [ + "10.0.0.0/8" + ] }, "exit-node": { "hostname": "exit-node", - "tags": ["tag:exit"], + "tags": [ + "tag:exit" + ], "ipv4": "100.85.66.106", "ipv6": "fd7a:115c:a1e0::7c37:426a", - "routable_ips": ["0.0.0.0/0", "::/0"], - "approved_routes": ["0.0.0.0/0", "::/0"] + "routable_ips": [ + "0.0.0.0/0", + "::/0" + ], + "approved_routes": [ + "0.0.0.0/0", + "::/0" + ] }, "ha-router1": { "hostname": "ha-router1", - "tags": ["tag:ha"], + "tags": [ + "tag:ha" + ], "ipv4": "100.121.186.70", "ipv6": "fd7a:115c:a1e0::6737:ba46", - "routable_ips": ["192.168.1.0/24"], - "approved_routes": ["192.168.1.0/24"] + "routable_ips": [ + "192.168.1.0/24" + ], + "approved_routes": [ + "192.168.1.0/24" + ] }, "ha-router2": { "hostname": "ha-router2", - "tags": ["tag:ha"], + "tags": [ + "tag:ha" + ], "ipv4": "100.117.104.82", "ipv6": "fd7a:115c:a1e0::7437:6852", - "routable_ips": ["192.168.1.0/24"], - "approved_routes": ["192.168.1.0/24"] + "routable_ips": [ + "192.168.1.0/24" + ], + "approved_routes": [ + "192.168.1.0/24" + ] }, "multi-router": { "hostname": "multi-router", - "tags": ["tag:exit", "tag:router"], + "tags": [ + "tag:exit", + "tag:router" + ], "ipv4": "100.119.241.111", "ipv6": "fd7a:115c:a1e0::3337:f16f", - "routable_ips": ["172.16.0.0/24"], - "approved_routes": ["172.16.0.0/24"] + "routable_ips": [ + "172.16.0.0/24" + ], + "approved_routes": [ + "172.16.0.0/24" + ] }, "subnet-router": { "hostname": "subnet-router", - "tags": ["tag:router"], + "tags": [ + "tag:router" + ], "ipv4": "100.92.142.61", "ipv6": "fd7a:115c:a1e0::3e37:8e3d", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] + "routable_ips": [ + "10.33.0.0/16" + ], + "approved_routes": [ + "10.33.0.0/16" + ] }, "tagged-client": { "hostname": "tagged-client", - "tags": ["tag:client"], + "tags": [ + "tag:client" + ], "ipv4": "100.83.200.69", "ipv6": "fd7a:115c:a1e0::c537:c845" }, "tagged-prod": { "hostname": "tagged-prod", - "tags": ["tag:prod"], + "tags": [ + "tag:prod" + ], "ipv4": "100.103.8.15", "ipv6": "fd7a:115c:a1e0::5b37:80f" }, "tagged-server": { "hostname": "tagged-server", - "tags": ["tag:server"], + "tags": [ + "tag:server" + ], "ipv4": "100.108.74.26", "ipv6": "fd7a:115c:a1e0::b901:4a87" }, @@ -144,7 +217,12 @@ "big-router": { "packet_filter_rules": [ { - "SrcIPs": ["100.119.241.111", "100.85.66.106", "fd7a:115c:a1e0::3337:f16f", "fd7a:115c:a1e0::7c37:426a"], + "SrcIPs": [ + "100.119.241.111", + "100.85.66.106", + "fd7a:115c:a1e0::3337:f16f", + "fd7a:115c:a1e0::7c37:426a" + ], "DstPorts": [ { "IP": "*", @@ -160,7 +238,12 @@ "exit-node": { "packet_filter_rules": [ { - "SrcIPs": ["100.119.241.111", "100.85.66.106", "fd7a:115c:a1e0::3337:f16f", "fd7a:115c:a1e0::7c37:426a"], + "SrcIPs": [ + "100.119.241.111", + "100.85.66.106", + "fd7a:115c:a1e0::3337:f16f", + "fd7a:115c:a1e0::7c37:426a" + ], "DstPorts": [ { "IP": "*", @@ -176,7 +259,12 @@ "ha-router1": { "packet_filter_rules": [ { - "SrcIPs": ["100.119.241.111", "100.85.66.106", "fd7a:115c:a1e0::3337:f16f", "fd7a:115c:a1e0::7c37:426a"], + "SrcIPs": [ + "100.119.241.111", + "100.85.66.106", + "fd7a:115c:a1e0::3337:f16f", + "fd7a:115c:a1e0::7c37:426a" + ], "DstPorts": [ { "IP": "*", @@ -192,7 +280,12 @@ "ha-router2": { "packet_filter_rules": [ { - "SrcIPs": ["100.119.241.111", "100.85.66.106", "fd7a:115c:a1e0::3337:f16f", "fd7a:115c:a1e0::7c37:426a"], + "SrcIPs": [ + "100.119.241.111", + "100.85.66.106", + "fd7a:115c:a1e0::3337:f16f", + "fd7a:115c:a1e0::7c37:426a" + ], "DstPorts": [ { "IP": "*", @@ -208,7 +301,12 @@ "multi-router": { "packet_filter_rules": [ { - "SrcIPs": ["100.119.241.111", "100.85.66.106", "fd7a:115c:a1e0::3337:f16f", "fd7a:115c:a1e0::7c37:426a"], + "SrcIPs": [ + "100.119.241.111", + "100.85.66.106", + "fd7a:115c:a1e0::3337:f16f", + "fd7a:115c:a1e0::7c37:426a" + ], "DstPorts": [ { "IP": "*", @@ -224,7 +322,12 @@ "subnet-router": { "packet_filter_rules": [ { - "SrcIPs": ["100.119.241.111", "100.85.66.106", "fd7a:115c:a1e0::3337:f16f", "fd7a:115c:a1e0::7c37:426a"], + "SrcIPs": [ + "100.119.241.111", + "100.85.66.106", + "fd7a:115c:a1e0::3337:f16f", + "fd7a:115c:a1e0::7c37:426a" + ], "DstPorts": [ { "IP": "*", @@ -240,7 +343,12 @@ "tagged-client": { "packet_filter_rules": [ { - "SrcIPs": ["100.119.241.111", "100.85.66.106", "fd7a:115c:a1e0::3337:f16f", "fd7a:115c:a1e0::7c37:426a"], + "SrcIPs": [ + "100.119.241.111", + "100.85.66.106", + "fd7a:115c:a1e0::3337:f16f", + "fd7a:115c:a1e0::7c37:426a" + ], "DstPorts": [ { "IP": "*", @@ -256,7 +364,12 @@ "tagged-prod": { "packet_filter_rules": [ { - "SrcIPs": ["100.119.241.111", "100.85.66.106", "fd7a:115c:a1e0::3337:f16f", "fd7a:115c:a1e0::7c37:426a"], + "SrcIPs": [ + "100.119.241.111", + "100.85.66.106", + "fd7a:115c:a1e0::3337:f16f", + "fd7a:115c:a1e0::7c37:426a" + ], "DstPorts": [ { "IP": "*", @@ -272,7 +385,12 @@ "tagged-server": { "packet_filter_rules": [ { - "SrcIPs": ["100.119.241.111", "100.85.66.106", "fd7a:115c:a1e0::3337:f16f", "fd7a:115c:a1e0::7c37:426a"], + "SrcIPs": [ + "100.119.241.111", + "100.85.66.106", + "fd7a:115c:a1e0::3337:f16f", + "fd7a:115c:a1e0::7c37:426a" + ], "DstPorts": [ { "IP": "*", @@ -288,7 +406,12 @@ "user-kris": { "packet_filter_rules": [ { - "SrcIPs": ["100.119.241.111", "100.85.66.106", "fd7a:115c:a1e0::3337:f16f", "fd7a:115c:a1e0::7c37:426a"], + "SrcIPs": [ + "100.119.241.111", + "100.85.66.106", + "fd7a:115c:a1e0::3337:f16f", + "fd7a:115c:a1e0::7c37:426a" + ], "DstPorts": [ { "IP": "*", @@ -304,7 +427,12 @@ "user-mon": { "packet_filter_rules": [ { - "SrcIPs": ["100.119.241.111", "100.85.66.106", "fd7a:115c:a1e0::3337:f16f", "fd7a:115c:a1e0::7c37:426a"], + "SrcIPs": [ + "100.119.241.111", + "100.85.66.106", + "fd7a:115c:a1e0::3337:f16f", + "fd7a:115c:a1e0::7c37:426a" + ], "DstPorts": [ { "IP": "*", @@ -320,7 +448,12 @@ "user1": { "packet_filter_rules": [ { - "SrcIPs": ["100.119.241.111", "100.85.66.106", "fd7a:115c:a1e0::3337:f16f", "fd7a:115c:a1e0::7c37:426a"], + "SrcIPs": [ + "100.119.241.111", + "100.85.66.106", + "fd7a:115c:a1e0::3337:f16f", + "fd7a:115c:a1e0::7c37:426a" + ], "DstPorts": [ { "IP": "*", diff --git a/hscontrol/policy/v2/testdata/routes_results/ROUTES-b8_autogroup_internet_no_filters.hujson b/hscontrol/policy/v2/testdata/routes_results/ROUTES-b8_autogroup_internet_no_filters.hujson index c822c6323..8ec46ef6d 100644 --- a/hscontrol/policy/v2/testdata/routes_results/ROUTES-b8_autogroup_internet_no_filters.hujson +++ b/hscontrol/policy/v2/testdata/routes_results/ROUTES-b8_autogroup_internet_no_filters.hujson @@ -7,24 +7,40 @@ // Expected: No filter rules { "test_id": "ROUTES-b8_autogroup_internet_no_filters", - "timestamp": "2026-03-17T16:16:17Z", - "propagation_wait_seconds": 10, "input": { - "policy_file": "routes_policies/routes_b8_autogroup_internet_no_filters.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"], - "tag:ha": ["kratail2tid@passkey"] + "tag:server": [ + "kratail2tid@passkey" + ], + "tag:prod": [ + "kratail2tid@passkey" + ], + "tag:client": [ + "kratail2tid@passkey" + ], + "tag:router": [ + "kratail2tid@passkey" + ], + "tag:exit": [ + "kratail2tid@passkey" + ], + "tag:ha": [ + "kratail2tid@passkey" + ] }, "hosts": { "webserver": "100.108.74.26", @@ -34,89 +50,146 @@ }, "autoApprovers": { "routes": { - "10.0.0.0/8": ["tag:router"], - "172.16.0.0/12": ["tag:router"], - "192.168.0.0/16": ["tag:ha"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.0.0.0/8": [ + "tag:router" + ], + "172.16.0.0/12": [ + "tag:router" + ], + "192.168.0.0/16": [ + "tag:ha" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "acls": [ { "action": "accept", - "src": ["autogroup:member"], - "dst": ["autogroup:internet:*"] + "src": [ + "autogroup:member" + ], + "dst": [ + "autogroup:internet:*" + ] } ] - }, - "api_endpoint": "https://api.tailscale.com/api/v2/tailnet/kratail2tid%40passkey/acl", - "api_response_code": 200 + } }, "topology": { "nodes": { "big-router": { "hostname": "big-router", - "tags": ["tag:router"], + "tags": [ + "tag:router" + ], "ipv4": "100.97.174.21", "ipv6": "fd7a:115c:a1e0::5137:ae15", - "routable_ips": ["10.0.0.0/8"], - "approved_routes": ["10.0.0.0/8"] + "routable_ips": [ + "10.0.0.0/8" + ], + "approved_routes": [ + "10.0.0.0/8" + ] }, "exit-node": { "hostname": "exit-node", - "tags": ["tag:exit"], + "tags": [ + "tag:exit" + ], "ipv4": "100.85.66.106", "ipv6": "fd7a:115c:a1e0::7c37:426a", - "routable_ips": ["0.0.0.0/0", "::/0"], - "approved_routes": ["0.0.0.0/0", "::/0"] + "routable_ips": [ + "0.0.0.0/0", + "::/0" + ], + "approved_routes": [ + "0.0.0.0/0", + "::/0" + ] }, "ha-router1": { "hostname": "ha-router1", - "tags": ["tag:ha"], + "tags": [ + "tag:ha" + ], "ipv4": "100.121.186.70", "ipv6": "fd7a:115c:a1e0::6737:ba46", - "routable_ips": ["192.168.1.0/24"], - "approved_routes": ["192.168.1.0/24"] + "routable_ips": [ + "192.168.1.0/24" + ], + "approved_routes": [ + "192.168.1.0/24" + ] }, "ha-router2": { "hostname": "ha-router2", - "tags": ["tag:ha"], + "tags": [ + "tag:ha" + ], "ipv4": "100.117.104.82", "ipv6": "fd7a:115c:a1e0::7437:6852", - "routable_ips": ["192.168.1.0/24"], - "approved_routes": ["192.168.1.0/24"] + "routable_ips": [ + "192.168.1.0/24" + ], + "approved_routes": [ + "192.168.1.0/24" + ] }, "multi-router": { "hostname": "multi-router", - "tags": ["tag:exit", "tag:router"], + "tags": [ + "tag:exit", + "tag:router" + ], "ipv4": "100.119.241.111", "ipv6": "fd7a:115c:a1e0::3337:f16f", - "routable_ips": ["172.16.0.0/24"], - "approved_routes": ["172.16.0.0/24"] + "routable_ips": [ + "172.16.0.0/24" + ], + "approved_routes": [ + "172.16.0.0/24" + ] }, "subnet-router": { "hostname": "subnet-router", - "tags": ["tag:router"], + "tags": [ + "tag:router" + ], "ipv4": "100.92.142.61", "ipv6": "fd7a:115c:a1e0::3e37:8e3d", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] + "routable_ips": [ + "10.33.0.0/16" + ], + "approved_routes": [ + "10.33.0.0/16" + ] }, "tagged-client": { "hostname": "tagged-client", - "tags": ["tag:client"], + "tags": [ + "tag:client" + ], "ipv4": "100.83.200.69", "ipv6": "fd7a:115c:a1e0::c537:c845" }, "tagged-prod": { "hostname": "tagged-prod", - "tags": ["tag:prod"], + "tags": [ + "tag:prod" + ], "ipv4": "100.103.8.15", "ipv6": "fd7a:115c:a1e0::5b37:80f" }, "tagged-server": { "hostname": "tagged-server", - "tags": ["tag:server"], + "tags": [ + "tag:server" + ], "ipv4": "100.108.74.26", "ipv6": "fd7a:115c:a1e0::b901:4a87" }, diff --git a/hscontrol/policy/v2/testdata/routes_results/ROUTES-b9_exit_routes_in_allowedips.hujson b/hscontrol/policy/v2/testdata/routes_results/ROUTES-b9_exit_routes_in_allowedips.hujson index e0170774d..891746611 100644 --- a/hscontrol/policy/v2/testdata/routes_results/ROUTES-b9_exit_routes_in_allowedips.hujson +++ b/hscontrol/policy/v2/testdata/routes_results/ROUTES-b9_exit_routes_in_allowedips.hujson @@ -7,24 +7,40 @@ // Expected: Rules on 12 of 12 nodes { "test_id": "ROUTES-b9_exit_routes_in_allowedips", - "timestamp": "2026-03-17T16:16:28Z", - "propagation_wait_seconds": 10, "input": { - "policy_file": "routes_policies/routes_b9_exit_routes_in_allowedips.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"], - "tag:ha": ["kratail2tid@passkey"] + "tag:server": [ + "kratail2tid@passkey" + ], + "tag:prod": [ + "kratail2tid@passkey" + ], + "tag:client": [ + "kratail2tid@passkey" + ], + "tag:router": [ + "kratail2tid@passkey" + ], + "tag:exit": [ + "kratail2tid@passkey" + ], + "tag:ha": [ + "kratail2tid@passkey" + ] }, "hosts": { "webserver": "100.108.74.26", @@ -34,89 +50,146 @@ }, "autoApprovers": { "routes": { - "10.0.0.0/8": ["tag:router"], - "172.16.0.0/12": ["tag:router"], - "192.168.0.0/16": ["tag:ha"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.0.0.0/8": [ + "tag:router" + ], + "172.16.0.0/12": [ + "tag:router" + ], + "192.168.0.0/16": [ + "tag:ha" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "acls": [ { "action": "accept", - "src": ["*"], - "dst": ["*:*"] + "src": [ + "*" + ], + "dst": [ + "*:*" + ] } ] - }, - "api_endpoint": "https://api.tailscale.com/api/v2/tailnet/kratail2tid%40passkey/acl", - "api_response_code": 200 + } }, "topology": { "nodes": { "big-router": { "hostname": "big-router", - "tags": ["tag:router"], + "tags": [ + "tag:router" + ], "ipv4": "100.97.174.21", "ipv6": "fd7a:115c:a1e0::5137:ae15", - "routable_ips": ["10.0.0.0/8"], - "approved_routes": ["10.0.0.0/8"] + "routable_ips": [ + "10.0.0.0/8" + ], + "approved_routes": [ + "10.0.0.0/8" + ] }, "exit-node": { "hostname": "exit-node", - "tags": ["tag:exit"], + "tags": [ + "tag:exit" + ], "ipv4": "100.85.66.106", "ipv6": "fd7a:115c:a1e0::7c37:426a", - "routable_ips": ["0.0.0.0/0", "::/0"], - "approved_routes": ["0.0.0.0/0", "::/0"] + "routable_ips": [ + "0.0.0.0/0", + "::/0" + ], + "approved_routes": [ + "0.0.0.0/0", + "::/0" + ] }, "ha-router1": { "hostname": "ha-router1", - "tags": ["tag:ha"], + "tags": [ + "tag:ha" + ], "ipv4": "100.121.186.70", "ipv6": "fd7a:115c:a1e0::6737:ba46", - "routable_ips": ["192.168.1.0/24"], - "approved_routes": ["192.168.1.0/24"] + "routable_ips": [ + "192.168.1.0/24" + ], + "approved_routes": [ + "192.168.1.0/24" + ] }, "ha-router2": { "hostname": "ha-router2", - "tags": ["tag:ha"], + "tags": [ + "tag:ha" + ], "ipv4": "100.117.104.82", "ipv6": "fd7a:115c:a1e0::7437:6852", - "routable_ips": ["192.168.1.0/24"], - "approved_routes": ["192.168.1.0/24"] + "routable_ips": [ + "192.168.1.0/24" + ], + "approved_routes": [ + "192.168.1.0/24" + ] }, "multi-router": { "hostname": "multi-router", - "tags": ["tag:exit", "tag:router"], + "tags": [ + "tag:exit", + "tag:router" + ], "ipv4": "100.119.241.111", "ipv6": "fd7a:115c:a1e0::3337:f16f", - "routable_ips": ["172.16.0.0/24"], - "approved_routes": ["172.16.0.0/24"] + "routable_ips": [ + "172.16.0.0/24" + ], + "approved_routes": [ + "172.16.0.0/24" + ] }, "subnet-router": { "hostname": "subnet-router", - "tags": ["tag:router"], + "tags": [ + "tag:router" + ], "ipv4": "100.92.142.61", "ipv6": "fd7a:115c:a1e0::3e37:8e3d", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] + "routable_ips": [ + "10.33.0.0/16" + ], + "approved_routes": [ + "10.33.0.0/16" + ] }, "tagged-client": { "hostname": "tagged-client", - "tags": ["tag:client"], + "tags": [ + "tag:client" + ], "ipv4": "100.83.200.69", "ipv6": "fd7a:115c:a1e0::c537:c845" }, "tagged-prod": { "hostname": "tagged-prod", - "tags": ["tag:prod"], + "tags": [ + "tag:prod" + ], "ipv4": "100.103.8.15", "ipv6": "fd7a:115c:a1e0::5b37:80f" }, "tagged-server": { "hostname": "tagged-server", - "tags": ["tag:server"], + "tags": [ + "tag:server" + ], "ipv4": "100.108.74.26", "ipv6": "fd7a:115c:a1e0::b901:4a87" }, diff --git a/hscontrol/policy/v2/testdata/routes_results/ROUTES-d10_auto_approval_retroactive.hujson b/hscontrol/policy/v2/testdata/routes_results/ROUTES-d10_auto_approval_retroactive.hujson index e85d53b70..fb0a40cd3 100644 --- a/hscontrol/policy/v2/testdata/routes_results/ROUTES-d10_auto_approval_retroactive.hujson +++ b/hscontrol/policy/v2/testdata/routes_results/ROUTES-d10_auto_approval_retroactive.hujson @@ -7,24 +7,40 @@ // Expected: Rules on 2 of 12 nodes { "test_id": "ROUTES-d10_auto_approval_retroactive", - "timestamp": "2026-03-17T16:16:38Z", - "propagation_wait_seconds": 10, "input": { - "policy_file": "routes_policies/routes_d10_auto_approval_retroactive.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"], - "tag:ha": ["kratail2tid@passkey"] + "tag:server": [ + "kratail2tid@passkey" + ], + "tag:prod": [ + "kratail2tid@passkey" + ], + "tag:client": [ + "kratail2tid@passkey" + ], + "tag:router": [ + "kratail2tid@passkey" + ], + "tag:exit": [ + "kratail2tid@passkey" + ], + "tag:ha": [ + "kratail2tid@passkey" + ] }, "hosts": { "webserver": "100.108.74.26", @@ -34,89 +50,146 @@ }, "autoApprovers": { "routes": { - "10.0.0.0/8": ["tag:router"], - "172.16.0.0/12": ["tag:router"], - "192.168.0.0/16": ["tag:ha"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.0.0.0/8": [ + "tag:router" + ], + "172.16.0.0/12": [ + "tag:router" + ], + "192.168.0.0/16": [ + "tag:ha" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "acls": [ { "action": "accept", - "src": ["*"], - "dst": ["10.33.0.0/16:443"] + "src": [ + "*" + ], + "dst": [ + "10.33.0.0/16:443" + ] } ] - }, - "api_endpoint": "https://api.tailscale.com/api/v2/tailnet/kratail2tid%40passkey/acl", - "api_response_code": 200 + } }, "topology": { "nodes": { "big-router": { "hostname": "big-router", - "tags": ["tag:router"], + "tags": [ + "tag:router" + ], "ipv4": "100.97.174.21", "ipv6": "fd7a:115c:a1e0::5137:ae15", - "routable_ips": ["10.0.0.0/8"], - "approved_routes": ["10.0.0.0/8"] + "routable_ips": [ + "10.0.0.0/8" + ], + "approved_routes": [ + "10.0.0.0/8" + ] }, "exit-node": { "hostname": "exit-node", - "tags": ["tag:exit"], + "tags": [ + "tag:exit" + ], "ipv4": "100.85.66.106", "ipv6": "fd7a:115c:a1e0::7c37:426a", - "routable_ips": ["0.0.0.0/0", "::/0"], - "approved_routes": ["0.0.0.0/0", "::/0"] + "routable_ips": [ + "0.0.0.0/0", + "::/0" + ], + "approved_routes": [ + "0.0.0.0/0", + "::/0" + ] }, "ha-router1": { "hostname": "ha-router1", - "tags": ["tag:ha"], + "tags": [ + "tag:ha" + ], "ipv4": "100.121.186.70", "ipv6": "fd7a:115c:a1e0::6737:ba46", - "routable_ips": ["192.168.1.0/24"], - "approved_routes": ["192.168.1.0/24"] + "routable_ips": [ + "192.168.1.0/24" + ], + "approved_routes": [ + "192.168.1.0/24" + ] }, "ha-router2": { "hostname": "ha-router2", - "tags": ["tag:ha"], + "tags": [ + "tag:ha" + ], "ipv4": "100.117.104.82", "ipv6": "fd7a:115c:a1e0::7437:6852", - "routable_ips": ["192.168.1.0/24"], - "approved_routes": ["192.168.1.0/24"] + "routable_ips": [ + "192.168.1.0/24" + ], + "approved_routes": [ + "192.168.1.0/24" + ] }, "multi-router": { "hostname": "multi-router", - "tags": ["tag:exit", "tag:router"], + "tags": [ + "tag:exit", + "tag:router" + ], "ipv4": "100.119.241.111", "ipv6": "fd7a:115c:a1e0::3337:f16f", - "routable_ips": ["172.16.0.0/24"], - "approved_routes": ["172.16.0.0/24"] + "routable_ips": [ + "172.16.0.0/24" + ], + "approved_routes": [ + "172.16.0.0/24" + ] }, "subnet-router": { "hostname": "subnet-router", - "tags": ["tag:router"], + "tags": [ + "tag:router" + ], "ipv4": "100.92.142.61", "ipv6": "fd7a:115c:a1e0::3e37:8e3d", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] + "routable_ips": [ + "10.33.0.0/16" + ], + "approved_routes": [ + "10.33.0.0/16" + ] }, "tagged-client": { "hostname": "tagged-client", - "tags": ["tag:client"], + "tags": [ + "tag:client" + ], "ipv4": "100.83.200.69", "ipv6": "fd7a:115c:a1e0::c537:c845" }, "tagged-prod": { "hostname": "tagged-prod", - "tags": ["tag:prod"], + "tags": [ + "tag:prod" + ], "ipv4": "100.103.8.15", "ipv6": "fd7a:115c:a1e0::5b37:80f" }, "tagged-server": { "hostname": "tagged-server", - "tags": ["tag:server"], + "tags": [ + "tag:server" + ], "ipv4": "100.108.74.26", "ipv6": "fd7a:115c:a1e0::b901:4a87" }, diff --git a/hscontrol/policy/v2/testdata/routes_results/ROUTES-d11_overlapping_auto_approvers.hujson b/hscontrol/policy/v2/testdata/routes_results/ROUTES-d11_overlapping_auto_approvers.hujson index ac998d2e0..72b643e38 100644 --- a/hscontrol/policy/v2/testdata/routes_results/ROUTES-d11_overlapping_auto_approvers.hujson +++ b/hscontrol/policy/v2/testdata/routes_results/ROUTES-d11_overlapping_auto_approvers.hujson @@ -7,24 +7,40 @@ // Expected: Rules on 2 of 12 nodes { "test_id": "ROUTES-d11_overlapping_auto_approvers", - "timestamp": "2026-03-17T16:16:49Z", - "propagation_wait_seconds": 10, "input": { - "policy_file": "routes_policies/routes_d11_overlapping_auto_approvers.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"], - "tag:ha": ["kratail2tid@passkey"] + "tag:server": [ + "kratail2tid@passkey" + ], + "tag:prod": [ + "kratail2tid@passkey" + ], + "tag:client": [ + "kratail2tid@passkey" + ], + "tag:router": [ + "kratail2tid@passkey" + ], + "tag:exit": [ + "kratail2tid@passkey" + ], + "tag:ha": [ + "kratail2tid@passkey" + ] }, "hosts": { "webserver": "100.108.74.26", @@ -34,89 +50,146 @@ }, "autoApprovers": { "routes": { - "10.0.0.0/8": ["tag:router"], - "172.16.0.0/12": ["tag:router"], - "192.168.0.0/16": ["tag:ha"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.0.0.0/8": [ + "tag:router" + ], + "172.16.0.0/12": [ + "tag:router" + ], + "192.168.0.0/16": [ + "tag:ha" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "acls": [ { "action": "accept", - "src": ["*"], - "dst": ["10.0.0.0/8:80"] + "src": [ + "*" + ], + "dst": [ + "10.0.0.0/8:80" + ] } ] - }, - "api_endpoint": "https://api.tailscale.com/api/v2/tailnet/kratail2tid%40passkey/acl", - "api_response_code": 200 + } }, "topology": { "nodes": { "big-router": { "hostname": "big-router", - "tags": ["tag:router"], + "tags": [ + "tag:router" + ], "ipv4": "100.97.174.21", "ipv6": "fd7a:115c:a1e0::5137:ae15", - "routable_ips": ["10.0.0.0/8"], - "approved_routes": ["10.0.0.0/8"] + "routable_ips": [ + "10.0.0.0/8" + ], + "approved_routes": [ + "10.0.0.0/8" + ] }, "exit-node": { "hostname": "exit-node", - "tags": ["tag:exit"], + "tags": [ + "tag:exit" + ], "ipv4": "100.85.66.106", "ipv6": "fd7a:115c:a1e0::7c37:426a", - "routable_ips": ["0.0.0.0/0", "::/0"], - "approved_routes": ["0.0.0.0/0", "::/0"] + "routable_ips": [ + "0.0.0.0/0", + "::/0" + ], + "approved_routes": [ + "0.0.0.0/0", + "::/0" + ] }, "ha-router1": { "hostname": "ha-router1", - "tags": ["tag:ha"], + "tags": [ + "tag:ha" + ], "ipv4": "100.121.186.70", "ipv6": "fd7a:115c:a1e0::6737:ba46", - "routable_ips": ["192.168.1.0/24"], - "approved_routes": ["192.168.1.0/24"] + "routable_ips": [ + "192.168.1.0/24" + ], + "approved_routes": [ + "192.168.1.0/24" + ] }, "ha-router2": { "hostname": "ha-router2", - "tags": ["tag:ha"], + "tags": [ + "tag:ha" + ], "ipv4": "100.117.104.82", "ipv6": "fd7a:115c:a1e0::7437:6852", - "routable_ips": ["192.168.1.0/24"], - "approved_routes": ["192.168.1.0/24"] + "routable_ips": [ + "192.168.1.0/24" + ], + "approved_routes": [ + "192.168.1.0/24" + ] }, "multi-router": { "hostname": "multi-router", - "tags": ["tag:exit", "tag:router"], + "tags": [ + "tag:exit", + "tag:router" + ], "ipv4": "100.119.241.111", "ipv6": "fd7a:115c:a1e0::3337:f16f", - "routable_ips": ["172.16.0.0/24"], - "approved_routes": ["172.16.0.0/24"] + "routable_ips": [ + "172.16.0.0/24" + ], + "approved_routes": [ + "172.16.0.0/24" + ] }, "subnet-router": { "hostname": "subnet-router", - "tags": ["tag:router"], + "tags": [ + "tag:router" + ], "ipv4": "100.92.142.61", "ipv6": "fd7a:115c:a1e0::3e37:8e3d", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] + "routable_ips": [ + "10.33.0.0/16" + ], + "approved_routes": [ + "10.33.0.0/16" + ] }, "tagged-client": { "hostname": "tagged-client", - "tags": ["tag:client"], + "tags": [ + "tag:client" + ], "ipv4": "100.83.200.69", "ipv6": "fd7a:115c:a1e0::c537:c845" }, "tagged-prod": { "hostname": "tagged-prod", - "tags": ["tag:prod"], + "tags": [ + "tag:prod" + ], "ipv4": "100.103.8.15", "ipv6": "fd7a:115c:a1e0::5b37:80f" }, "tagged-server": { "hostname": "tagged-server", - "tags": ["tag:server"], + "tags": [ + "tag:server" + ], "ipv4": "100.108.74.26", "ipv6": "fd7a:115c:a1e0::b901:4a87" }, diff --git a/hscontrol/policy/v2/testdata/routes_results/ROUTES-d1_basic_route_auto_approval.hujson b/hscontrol/policy/v2/testdata/routes_results/ROUTES-d1_basic_route_auto_approval.hujson index 57e2d1534..051f5b23f 100644 --- a/hscontrol/policy/v2/testdata/routes_results/ROUTES-d1_basic_route_auto_approval.hujson +++ b/hscontrol/policy/v2/testdata/routes_results/ROUTES-d1_basic_route_auto_approval.hujson @@ -7,24 +7,40 @@ // Expected: Rules on 2 of 12 nodes { "test_id": "ROUTES-d1_basic_route_auto_approval", - "timestamp": "2026-03-17T16:17:00Z", - "propagation_wait_seconds": 10, "input": { - "policy_file": "routes_policies/routes_d1_basic_route_auto_approval.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"], - "tag:ha": ["kratail2tid@passkey"] + "tag:server": [ + "kratail2tid@passkey" + ], + "tag:prod": [ + "kratail2tid@passkey" + ], + "tag:client": [ + "kratail2tid@passkey" + ], + "tag:router": [ + "kratail2tid@passkey" + ], + "tag:exit": [ + "kratail2tid@passkey" + ], + "tag:ha": [ + "kratail2tid@passkey" + ] }, "hosts": { "webserver": "100.108.74.26", @@ -34,89 +50,146 @@ }, "autoApprovers": { "routes": { - "10.0.0.0/8": ["tag:router"], - "172.16.0.0/12": ["tag:router"], - "192.168.0.0/16": ["tag:ha"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.0.0.0/8": [ + "tag:router" + ], + "172.16.0.0/12": [ + "tag:router" + ], + "192.168.0.0/16": [ + "tag:ha" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "acls": [ { "action": "accept", - "src": ["*"], - "dst": ["10.33.0.0/16:*"] + "src": [ + "*" + ], + "dst": [ + "10.33.0.0/16:*" + ] } ] - }, - "api_endpoint": "https://api.tailscale.com/api/v2/tailnet/kratail2tid%40passkey/acl", - "api_response_code": 200 + } }, "topology": { "nodes": { "big-router": { "hostname": "big-router", - "tags": ["tag:router"], + "tags": [ + "tag:router" + ], "ipv4": "100.97.174.21", "ipv6": "fd7a:115c:a1e0::5137:ae15", - "routable_ips": ["10.0.0.0/8"], - "approved_routes": ["10.0.0.0/8"] + "routable_ips": [ + "10.0.0.0/8" + ], + "approved_routes": [ + "10.0.0.0/8" + ] }, "exit-node": { "hostname": "exit-node", - "tags": ["tag:exit"], + "tags": [ + "tag:exit" + ], "ipv4": "100.85.66.106", "ipv6": "fd7a:115c:a1e0::7c37:426a", - "routable_ips": ["0.0.0.0/0", "::/0"], - "approved_routes": ["0.0.0.0/0", "::/0"] + "routable_ips": [ + "0.0.0.0/0", + "::/0" + ], + "approved_routes": [ + "0.0.0.0/0", + "::/0" + ] }, "ha-router1": { "hostname": "ha-router1", - "tags": ["tag:ha"], + "tags": [ + "tag:ha" + ], "ipv4": "100.121.186.70", "ipv6": "fd7a:115c:a1e0::6737:ba46", - "routable_ips": ["192.168.1.0/24"], - "approved_routes": ["192.168.1.0/24"] + "routable_ips": [ + "192.168.1.0/24" + ], + "approved_routes": [ + "192.168.1.0/24" + ] }, "ha-router2": { "hostname": "ha-router2", - "tags": ["tag:ha"], + "tags": [ + "tag:ha" + ], "ipv4": "100.117.104.82", "ipv6": "fd7a:115c:a1e0::7437:6852", - "routable_ips": ["192.168.1.0/24"], - "approved_routes": ["192.168.1.0/24"] + "routable_ips": [ + "192.168.1.0/24" + ], + "approved_routes": [ + "192.168.1.0/24" + ] }, "multi-router": { "hostname": "multi-router", - "tags": ["tag:exit", "tag:router"], + "tags": [ + "tag:exit", + "tag:router" + ], "ipv4": "100.119.241.111", "ipv6": "fd7a:115c:a1e0::3337:f16f", - "routable_ips": ["172.16.0.0/24"], - "approved_routes": ["172.16.0.0/24"] + "routable_ips": [ + "172.16.0.0/24" + ], + "approved_routes": [ + "172.16.0.0/24" + ] }, "subnet-router": { "hostname": "subnet-router", - "tags": ["tag:router"], + "tags": [ + "tag:router" + ], "ipv4": "100.92.142.61", "ipv6": "fd7a:115c:a1e0::3e37:8e3d", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] + "routable_ips": [ + "10.33.0.0/16" + ], + "approved_routes": [ + "10.33.0.0/16" + ] }, "tagged-client": { "hostname": "tagged-client", - "tags": ["tag:client"], + "tags": [ + "tag:client" + ], "ipv4": "100.83.200.69", "ipv6": "fd7a:115c:a1e0::c537:c845" }, "tagged-prod": { "hostname": "tagged-prod", - "tags": ["tag:prod"], + "tags": [ + "tag:prod" + ], "ipv4": "100.103.8.15", "ipv6": "fd7a:115c:a1e0::5b37:80f" }, "tagged-server": { "hostname": "tagged-server", - "tags": ["tag:server"], + "tags": [ + "tag:server" + ], "ipv4": "100.108.74.26", "ipv6": "fd7a:115c:a1e0::b901:4a87" }, diff --git a/hscontrol/policy/v2/testdata/routes_results/ROUTES-d2_nested_prefix_approval.hujson b/hscontrol/policy/v2/testdata/routes_results/ROUTES-d2_nested_prefix_approval.hujson index b6d088545..bb640d9b9 100644 --- a/hscontrol/policy/v2/testdata/routes_results/ROUTES-d2_nested_prefix_approval.hujson +++ b/hscontrol/policy/v2/testdata/routes_results/ROUTES-d2_nested_prefix_approval.hujson @@ -7,24 +7,40 @@ // Expected: Rules on 2 of 12 nodes { "test_id": "ROUTES-d2_nested_prefix_approval", - "timestamp": "2026-03-17T16:17:10Z", - "propagation_wait_seconds": 10, "input": { - "policy_file": "routes_policies/routes_d2_nested_prefix_approval.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"], - "tag:ha": ["kratail2tid@passkey"] + "tag:server": [ + "kratail2tid@passkey" + ], + "tag:prod": [ + "kratail2tid@passkey" + ], + "tag:client": [ + "kratail2tid@passkey" + ], + "tag:router": [ + "kratail2tid@passkey" + ], + "tag:exit": [ + "kratail2tid@passkey" + ], + "tag:ha": [ + "kratail2tid@passkey" + ] }, "hosts": { "webserver": "100.108.74.26", @@ -34,89 +50,146 @@ }, "autoApprovers": { "routes": { - "10.0.0.0/8": ["tag:router"], - "172.16.0.0/12": ["tag:router"], - "192.168.0.0/16": ["tag:ha"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.0.0.0/8": [ + "tag:router" + ], + "172.16.0.0/12": [ + "tag:router" + ], + "192.168.0.0/16": [ + "tag:ha" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "acls": [ { "action": "accept", - "src": ["*"], - "dst": ["10.33.0.0/16:22"] + "src": [ + "*" + ], + "dst": [ + "10.33.0.0/16:22" + ] } ] - }, - "api_endpoint": "https://api.tailscale.com/api/v2/tailnet/kratail2tid%40passkey/acl", - "api_response_code": 200 + } }, "topology": { "nodes": { "big-router": { "hostname": "big-router", - "tags": ["tag:router"], + "tags": [ + "tag:router" + ], "ipv4": "100.97.174.21", "ipv6": "fd7a:115c:a1e0::5137:ae15", - "routable_ips": ["10.0.0.0/8"], - "approved_routes": ["10.0.0.0/8"] + "routable_ips": [ + "10.0.0.0/8" + ], + "approved_routes": [ + "10.0.0.0/8" + ] }, "exit-node": { "hostname": "exit-node", - "tags": ["tag:exit"], + "tags": [ + "tag:exit" + ], "ipv4": "100.85.66.106", "ipv6": "fd7a:115c:a1e0::7c37:426a", - "routable_ips": ["0.0.0.0/0", "::/0"], - "approved_routes": ["0.0.0.0/0", "::/0"] + "routable_ips": [ + "0.0.0.0/0", + "::/0" + ], + "approved_routes": [ + "0.0.0.0/0", + "::/0" + ] }, "ha-router1": { "hostname": "ha-router1", - "tags": ["tag:ha"], + "tags": [ + "tag:ha" + ], "ipv4": "100.121.186.70", "ipv6": "fd7a:115c:a1e0::6737:ba46", - "routable_ips": ["192.168.1.0/24"], - "approved_routes": ["192.168.1.0/24"] + "routable_ips": [ + "192.168.1.0/24" + ], + "approved_routes": [ + "192.168.1.0/24" + ] }, "ha-router2": { "hostname": "ha-router2", - "tags": ["tag:ha"], + "tags": [ + "tag:ha" + ], "ipv4": "100.117.104.82", "ipv6": "fd7a:115c:a1e0::7437:6852", - "routable_ips": ["192.168.1.0/24"], - "approved_routes": ["192.168.1.0/24"] + "routable_ips": [ + "192.168.1.0/24" + ], + "approved_routes": [ + "192.168.1.0/24" + ] }, "multi-router": { "hostname": "multi-router", - "tags": ["tag:exit", "tag:router"], + "tags": [ + "tag:exit", + "tag:router" + ], "ipv4": "100.119.241.111", "ipv6": "fd7a:115c:a1e0::3337:f16f", - "routable_ips": ["172.16.0.0/24"], - "approved_routes": ["172.16.0.0/24"] + "routable_ips": [ + "172.16.0.0/24" + ], + "approved_routes": [ + "172.16.0.0/24" + ] }, "subnet-router": { "hostname": "subnet-router", - "tags": ["tag:router"], + "tags": [ + "tag:router" + ], "ipv4": "100.92.142.61", "ipv6": "fd7a:115c:a1e0::3e37:8e3d", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] + "routable_ips": [ + "10.33.0.0/16" + ], + "approved_routes": [ + "10.33.0.0/16" + ] }, "tagged-client": { "hostname": "tagged-client", - "tags": ["tag:client"], + "tags": [ + "tag:client" + ], "ipv4": "100.83.200.69", "ipv6": "fd7a:115c:a1e0::c537:c845" }, "tagged-prod": { "hostname": "tagged-prod", - "tags": ["tag:prod"], + "tags": [ + "tag:prod" + ], "ipv4": "100.103.8.15", "ipv6": "fd7a:115c:a1e0::5b37:80f" }, "tagged-server": { "hostname": "tagged-server", - "tags": ["tag:server"], + "tags": [ + "tag:server" + ], "ipv4": "100.108.74.26", "ipv6": "fd7a:115c:a1e0::b901:4a87" }, diff --git a/hscontrol/policy/v2/testdata/routes_results/ROUTES-d3_exact_prefix_approval.hujson b/hscontrol/policy/v2/testdata/routes_results/ROUTES-d3_exact_prefix_approval.hujson index 3cd3c1071..37ea884cd 100644 --- a/hscontrol/policy/v2/testdata/routes_results/ROUTES-d3_exact_prefix_approval.hujson +++ b/hscontrol/policy/v2/testdata/routes_results/ROUTES-d3_exact_prefix_approval.hujson @@ -7,24 +7,40 @@ // Expected: Rules on 2 of 12 nodes { "test_id": "ROUTES-d3_exact_prefix_approval", - "timestamp": "2026-03-17T16:17:21Z", - "propagation_wait_seconds": 10, "input": { - "policy_file": "routes_policies/routes_d3_exact_prefix_approval.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"], - "tag:ha": ["kratail2tid@passkey"] + "tag:server": [ + "kratail2tid@passkey" + ], + "tag:prod": [ + "kratail2tid@passkey" + ], + "tag:client": [ + "kratail2tid@passkey" + ], + "tag:router": [ + "kratail2tid@passkey" + ], + "tag:exit": [ + "kratail2tid@passkey" + ], + "tag:ha": [ + "kratail2tid@passkey" + ] }, "hosts": { "webserver": "100.108.74.26", @@ -34,89 +50,146 @@ }, "autoApprovers": { "routes": { - "10.0.0.0/8": ["tag:router"], - "172.16.0.0/12": ["tag:router"], - "192.168.0.0/16": ["tag:ha"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.0.0.0/8": [ + "tag:router" + ], + "172.16.0.0/12": [ + "tag:router" + ], + "192.168.0.0/16": [ + "tag:ha" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "acls": [ { "action": "accept", - "src": ["*"], - "dst": ["10.33.0.0/16:*"] + "src": [ + "*" + ], + "dst": [ + "10.33.0.0/16:*" + ] } ] - }, - "api_endpoint": "https://api.tailscale.com/api/v2/tailnet/kratail2tid%40passkey/acl", - "api_response_code": 200 + } }, "topology": { "nodes": { "big-router": { "hostname": "big-router", - "tags": ["tag:router"], + "tags": [ + "tag:router" + ], "ipv4": "100.97.174.21", "ipv6": "fd7a:115c:a1e0::5137:ae15", - "routable_ips": ["10.0.0.0/8"], - "approved_routes": ["10.0.0.0/8"] + "routable_ips": [ + "10.0.0.0/8" + ], + "approved_routes": [ + "10.0.0.0/8" + ] }, "exit-node": { "hostname": "exit-node", - "tags": ["tag:exit"], + "tags": [ + "tag:exit" + ], "ipv4": "100.85.66.106", "ipv6": "fd7a:115c:a1e0::7c37:426a", - "routable_ips": ["0.0.0.0/0", "::/0"], - "approved_routes": ["0.0.0.0/0", "::/0"] + "routable_ips": [ + "0.0.0.0/0", + "::/0" + ], + "approved_routes": [ + "0.0.0.0/0", + "::/0" + ] }, "ha-router1": { "hostname": "ha-router1", - "tags": ["tag:ha"], + "tags": [ + "tag:ha" + ], "ipv4": "100.121.186.70", "ipv6": "fd7a:115c:a1e0::6737:ba46", - "routable_ips": ["192.168.1.0/24"], - "approved_routes": ["192.168.1.0/24"] + "routable_ips": [ + "192.168.1.0/24" + ], + "approved_routes": [ + "192.168.1.0/24" + ] }, "ha-router2": { "hostname": "ha-router2", - "tags": ["tag:ha"], + "tags": [ + "tag:ha" + ], "ipv4": "100.117.104.82", "ipv6": "fd7a:115c:a1e0::7437:6852", - "routable_ips": ["192.168.1.0/24"], - "approved_routes": ["192.168.1.0/24"] + "routable_ips": [ + "192.168.1.0/24" + ], + "approved_routes": [ + "192.168.1.0/24" + ] }, "multi-router": { "hostname": "multi-router", - "tags": ["tag:exit", "tag:router"], + "tags": [ + "tag:exit", + "tag:router" + ], "ipv4": "100.119.241.111", "ipv6": "fd7a:115c:a1e0::3337:f16f", - "routable_ips": ["172.16.0.0/24"], - "approved_routes": ["172.16.0.0/24"] + "routable_ips": [ + "172.16.0.0/24" + ], + "approved_routes": [ + "172.16.0.0/24" + ] }, "subnet-router": { "hostname": "subnet-router", - "tags": ["tag:router"], + "tags": [ + "tag:router" + ], "ipv4": "100.92.142.61", "ipv6": "fd7a:115c:a1e0::3e37:8e3d", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] + "routable_ips": [ + "10.33.0.0/16" + ], + "approved_routes": [ + "10.33.0.0/16" + ] }, "tagged-client": { "hostname": "tagged-client", - "tags": ["tag:client"], + "tags": [ + "tag:client" + ], "ipv4": "100.83.200.69", "ipv6": "fd7a:115c:a1e0::c537:c845" }, "tagged-prod": { "hostname": "tagged-prod", - "tags": ["tag:prod"], + "tags": [ + "tag:prod" + ], "ipv4": "100.103.8.15", "ipv6": "fd7a:115c:a1e0::5b37:80f" }, "tagged-server": { "hostname": "tagged-server", - "tags": ["tag:server"], + "tags": [ + "tag:server" + ], "ipv4": "100.108.74.26", "ipv6": "fd7a:115c:a1e0::b901:4a87" }, diff --git a/hscontrol/policy/v2/testdata/routes_results/ROUTES-d4_prefix_not_covered.hujson b/hscontrol/policy/v2/testdata/routes_results/ROUTES-d4_prefix_not_covered.hujson index dac6cb980..ef6ccecf9 100644 --- a/hscontrol/policy/v2/testdata/routes_results/ROUTES-d4_prefix_not_covered.hujson +++ b/hscontrol/policy/v2/testdata/routes_results/ROUTES-d4_prefix_not_covered.hujson @@ -7,24 +7,40 @@ // Expected: Rules on 2 of 12 nodes { "test_id": "ROUTES-d4_prefix_not_covered", - "timestamp": "2026-03-17T16:17:32Z", - "propagation_wait_seconds": 10, "input": { - "policy_file": "routes_policies/routes_d4_prefix_not_covered.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"], - "tag:ha": ["kratail2tid@passkey"] + "tag:server": [ + "kratail2tid@passkey" + ], + "tag:prod": [ + "kratail2tid@passkey" + ], + "tag:client": [ + "kratail2tid@passkey" + ], + "tag:router": [ + "kratail2tid@passkey" + ], + "tag:exit": [ + "kratail2tid@passkey" + ], + "tag:ha": [ + "kratail2tid@passkey" + ] }, "hosts": { "webserver": "100.108.74.26", @@ -34,89 +50,146 @@ }, "autoApprovers": { "routes": { - "10.0.0.0/8": ["tag:router"], - "172.16.0.0/12": ["tag:router"], - "192.168.0.0/16": ["tag:ha"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.0.0.0/8": [ + "tag:router" + ], + "172.16.0.0/12": [ + "tag:router" + ], + "192.168.0.0/16": [ + "tag:ha" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "acls": [ { "action": "accept", - "src": ["*"], - "dst": ["192.168.1.0/24:*"] + "src": [ + "*" + ], + "dst": [ + "192.168.1.0/24:*" + ] } ] - }, - "api_endpoint": "https://api.tailscale.com/api/v2/tailnet/kratail2tid%40passkey/acl", - "api_response_code": 200 + } }, "topology": { "nodes": { "big-router": { "hostname": "big-router", - "tags": ["tag:router"], + "tags": [ + "tag:router" + ], "ipv4": "100.97.174.21", "ipv6": "fd7a:115c:a1e0::5137:ae15", - "routable_ips": ["10.0.0.0/8"], - "approved_routes": ["10.0.0.0/8"] + "routable_ips": [ + "10.0.0.0/8" + ], + "approved_routes": [ + "10.0.0.0/8" + ] }, "exit-node": { "hostname": "exit-node", - "tags": ["tag:exit"], + "tags": [ + "tag:exit" + ], "ipv4": "100.85.66.106", "ipv6": "fd7a:115c:a1e0::7c37:426a", - "routable_ips": ["0.0.0.0/0", "::/0"], - "approved_routes": ["0.0.0.0/0", "::/0"] + "routable_ips": [ + "0.0.0.0/0", + "::/0" + ], + "approved_routes": [ + "0.0.0.0/0", + "::/0" + ] }, "ha-router1": { "hostname": "ha-router1", - "tags": ["tag:ha"], + "tags": [ + "tag:ha" + ], "ipv4": "100.121.186.70", "ipv6": "fd7a:115c:a1e0::6737:ba46", - "routable_ips": ["192.168.1.0/24"], - "approved_routes": ["192.168.1.0/24"] + "routable_ips": [ + "192.168.1.0/24" + ], + "approved_routes": [ + "192.168.1.0/24" + ] }, "ha-router2": { "hostname": "ha-router2", - "tags": ["tag:ha"], + "tags": [ + "tag:ha" + ], "ipv4": "100.117.104.82", "ipv6": "fd7a:115c:a1e0::7437:6852", - "routable_ips": ["192.168.1.0/24"], - "approved_routes": ["192.168.1.0/24"] + "routable_ips": [ + "192.168.1.0/24" + ], + "approved_routes": [ + "192.168.1.0/24" + ] }, "multi-router": { "hostname": "multi-router", - "tags": ["tag:exit", "tag:router"], + "tags": [ + "tag:exit", + "tag:router" + ], "ipv4": "100.119.241.111", "ipv6": "fd7a:115c:a1e0::3337:f16f", - "routable_ips": ["172.16.0.0/24"], - "approved_routes": ["172.16.0.0/24"] + "routable_ips": [ + "172.16.0.0/24" + ], + "approved_routes": [ + "172.16.0.0/24" + ] }, "subnet-router": { "hostname": "subnet-router", - "tags": ["tag:router"], + "tags": [ + "tag:router" + ], "ipv4": "100.92.142.61", "ipv6": "fd7a:115c:a1e0::3e37:8e3d", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] + "routable_ips": [ + "10.33.0.0/16" + ], + "approved_routes": [ + "10.33.0.0/16" + ] }, "tagged-client": { "hostname": "tagged-client", - "tags": ["tag:client"], + "tags": [ + "tag:client" + ], "ipv4": "100.83.200.69", "ipv6": "fd7a:115c:a1e0::c537:c845" }, "tagged-prod": { "hostname": "tagged-prod", - "tags": ["tag:prod"], + "tags": [ + "tag:prod" + ], "ipv4": "100.103.8.15", "ipv6": "fd7a:115c:a1e0::5b37:80f" }, "tagged-server": { "hostname": "tagged-server", - "tags": ["tag:server"], + "tags": [ + "tag:server" + ], "ipv4": "100.108.74.26", "ipv6": "fd7a:115c:a1e0::b901:4a87" }, diff --git a/hscontrol/policy/v2/testdata/routes_results/ROUTES-d5_wrong_tag_not_approved.hujson b/hscontrol/policy/v2/testdata/routes_results/ROUTES-d5_wrong_tag_not_approved.hujson index 2c4768598..41350a4af 100644 --- a/hscontrol/policy/v2/testdata/routes_results/ROUTES-d5_wrong_tag_not_approved.hujson +++ b/hscontrol/policy/v2/testdata/routes_results/ROUTES-d5_wrong_tag_not_approved.hujson @@ -7,24 +7,40 @@ // Expected: Rules on 2 of 12 nodes { "test_id": "ROUTES-d5_wrong_tag_not_approved", - "timestamp": "2026-03-17T16:17:42Z", - "propagation_wait_seconds": 10, "input": { - "policy_file": "routes_policies/routes_d5_wrong_tag_not_approved.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"], - "tag:ha": ["kratail2tid@passkey"] + "tag:server": [ + "kratail2tid@passkey" + ], + "tag:prod": [ + "kratail2tid@passkey" + ], + "tag:client": [ + "kratail2tid@passkey" + ], + "tag:router": [ + "kratail2tid@passkey" + ], + "tag:exit": [ + "kratail2tid@passkey" + ], + "tag:ha": [ + "kratail2tid@passkey" + ] }, "hosts": { "webserver": "100.108.74.26", @@ -34,89 +50,146 @@ }, "autoApprovers": { "routes": { - "10.0.0.0/8": ["tag:router"], - "172.16.0.0/12": ["tag:router"], - "192.168.0.0/16": ["tag:ha"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.0.0.0/8": [ + "tag:router" + ], + "172.16.0.0/12": [ + "tag:router" + ], + "192.168.0.0/16": [ + "tag:ha" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "acls": [ { "action": "accept", - "src": ["tag:router"], - "dst": ["192.168.1.0/24:*"] + "src": [ + "tag:router" + ], + "dst": [ + "192.168.1.0/24:*" + ] } ] - }, - "api_endpoint": "https://api.tailscale.com/api/v2/tailnet/kratail2tid%40passkey/acl", - "api_response_code": 200 + } }, "topology": { "nodes": { "big-router": { "hostname": "big-router", - "tags": ["tag:router"], + "tags": [ + "tag:router" + ], "ipv4": "100.97.174.21", "ipv6": "fd7a:115c:a1e0::5137:ae15", - "routable_ips": ["10.0.0.0/8"], - "approved_routes": ["10.0.0.0/8"] + "routable_ips": [ + "10.0.0.0/8" + ], + "approved_routes": [ + "10.0.0.0/8" + ] }, "exit-node": { "hostname": "exit-node", - "tags": ["tag:exit"], + "tags": [ + "tag:exit" + ], "ipv4": "100.85.66.106", "ipv6": "fd7a:115c:a1e0::7c37:426a", - "routable_ips": ["0.0.0.0/0", "::/0"], - "approved_routes": ["0.0.0.0/0", "::/0"] + "routable_ips": [ + "0.0.0.0/0", + "::/0" + ], + "approved_routes": [ + "0.0.0.0/0", + "::/0" + ] }, "ha-router1": { "hostname": "ha-router1", - "tags": ["tag:ha"], + "tags": [ + "tag:ha" + ], "ipv4": "100.121.186.70", "ipv6": "fd7a:115c:a1e0::6737:ba46", - "routable_ips": ["192.168.1.0/24"], - "approved_routes": ["192.168.1.0/24"] + "routable_ips": [ + "192.168.1.0/24" + ], + "approved_routes": [ + "192.168.1.0/24" + ] }, "ha-router2": { "hostname": "ha-router2", - "tags": ["tag:ha"], + "tags": [ + "tag:ha" + ], "ipv4": "100.117.104.82", "ipv6": "fd7a:115c:a1e0::7437:6852", - "routable_ips": ["192.168.1.0/24"], - "approved_routes": ["192.168.1.0/24"] + "routable_ips": [ + "192.168.1.0/24" + ], + "approved_routes": [ + "192.168.1.0/24" + ] }, "multi-router": { "hostname": "multi-router", - "tags": ["tag:exit", "tag:router"], + "tags": [ + "tag:exit", + "tag:router" + ], "ipv4": "100.119.241.111", "ipv6": "fd7a:115c:a1e0::3337:f16f", - "routable_ips": ["172.16.0.0/24"], - "approved_routes": ["172.16.0.0/24"] + "routable_ips": [ + "172.16.0.0/24" + ], + "approved_routes": [ + "172.16.0.0/24" + ] }, "subnet-router": { "hostname": "subnet-router", - "tags": ["tag:router"], + "tags": [ + "tag:router" + ], "ipv4": "100.92.142.61", "ipv6": "fd7a:115c:a1e0::3e37:8e3d", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] + "routable_ips": [ + "10.33.0.0/16" + ], + "approved_routes": [ + "10.33.0.0/16" + ] }, "tagged-client": { "hostname": "tagged-client", - "tags": ["tag:client"], + "tags": [ + "tag:client" + ], "ipv4": "100.83.200.69", "ipv6": "fd7a:115c:a1e0::c537:c845" }, "tagged-prod": { "hostname": "tagged-prod", - "tags": ["tag:prod"], + "tags": [ + "tag:prod" + ], "ipv4": "100.103.8.15", "ipv6": "fd7a:115c:a1e0::5b37:80f" }, "tagged-server": { "hostname": "tagged-server", - "tags": ["tag:server"], + "tags": [ + "tag:server" + ], "ipv4": "100.108.74.26", "ipv6": "fd7a:115c:a1e0::b901:4a87" }, diff --git a/hscontrol/policy/v2/testdata/routes_results/ROUTES-d6_exit_node_auto_approval.hujson b/hscontrol/policy/v2/testdata/routes_results/ROUTES-d6_exit_node_auto_approval.hujson index 73820b870..968bf37ff 100644 --- a/hscontrol/policy/v2/testdata/routes_results/ROUTES-d6_exit_node_auto_approval.hujson +++ b/hscontrol/policy/v2/testdata/routes_results/ROUTES-d6_exit_node_auto_approval.hujson @@ -7,24 +7,40 @@ // Expected: Rules on 12 of 12 nodes { "test_id": "ROUTES-d6_exit_node_auto_approval", - "timestamp": "2026-03-17T16:17:53Z", - "propagation_wait_seconds": 10, "input": { - "policy_file": "routes_policies/routes_d6_exit_node_auto_approval.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"], - "tag:ha": ["kratail2tid@passkey"] + "tag:server": [ + "kratail2tid@passkey" + ], + "tag:prod": [ + "kratail2tid@passkey" + ], + "tag:client": [ + "kratail2tid@passkey" + ], + "tag:router": [ + "kratail2tid@passkey" + ], + "tag:exit": [ + "kratail2tid@passkey" + ], + "tag:ha": [ + "kratail2tid@passkey" + ] }, "hosts": { "webserver": "100.108.74.26", @@ -34,89 +50,146 @@ }, "autoApprovers": { "routes": { - "10.0.0.0/8": ["tag:router"], - "172.16.0.0/12": ["tag:router"], - "192.168.0.0/16": ["tag:ha"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.0.0.0/8": [ + "tag:router" + ], + "172.16.0.0/12": [ + "tag:router" + ], + "192.168.0.0/16": [ + "tag:ha" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "acls": [ { "action": "accept", - "src": ["*"], - "dst": ["*:*"] + "src": [ + "*" + ], + "dst": [ + "*:*" + ] } ] - }, - "api_endpoint": "https://api.tailscale.com/api/v2/tailnet/kratail2tid%40passkey/acl", - "api_response_code": 200 + } }, "topology": { "nodes": { "big-router": { "hostname": "big-router", - "tags": ["tag:router"], + "tags": [ + "tag:router" + ], "ipv4": "100.97.174.21", "ipv6": "fd7a:115c:a1e0::5137:ae15", - "routable_ips": ["10.0.0.0/8"], - "approved_routes": ["10.0.0.0/8"] + "routable_ips": [ + "10.0.0.0/8" + ], + "approved_routes": [ + "10.0.0.0/8" + ] }, "exit-node": { "hostname": "exit-node", - "tags": ["tag:exit"], + "tags": [ + "tag:exit" + ], "ipv4": "100.85.66.106", "ipv6": "fd7a:115c:a1e0::7c37:426a", - "routable_ips": ["0.0.0.0/0", "::/0"], - "approved_routes": ["0.0.0.0/0", "::/0"] + "routable_ips": [ + "0.0.0.0/0", + "::/0" + ], + "approved_routes": [ + "0.0.0.0/0", + "::/0" + ] }, "ha-router1": { "hostname": "ha-router1", - "tags": ["tag:ha"], + "tags": [ + "tag:ha" + ], "ipv4": "100.121.186.70", "ipv6": "fd7a:115c:a1e0::6737:ba46", - "routable_ips": ["192.168.1.0/24"], - "approved_routes": ["192.168.1.0/24"] + "routable_ips": [ + "192.168.1.0/24" + ], + "approved_routes": [ + "192.168.1.0/24" + ] }, "ha-router2": { "hostname": "ha-router2", - "tags": ["tag:ha"], + "tags": [ + "tag:ha" + ], "ipv4": "100.117.104.82", "ipv6": "fd7a:115c:a1e0::7437:6852", - "routable_ips": ["192.168.1.0/24"], - "approved_routes": ["192.168.1.0/24"] + "routable_ips": [ + "192.168.1.0/24" + ], + "approved_routes": [ + "192.168.1.0/24" + ] }, "multi-router": { "hostname": "multi-router", - "tags": ["tag:exit", "tag:router"], + "tags": [ + "tag:exit", + "tag:router" + ], "ipv4": "100.119.241.111", "ipv6": "fd7a:115c:a1e0::3337:f16f", - "routable_ips": ["172.16.0.0/24"], - "approved_routes": ["172.16.0.0/24"] + "routable_ips": [ + "172.16.0.0/24" + ], + "approved_routes": [ + "172.16.0.0/24" + ] }, "subnet-router": { "hostname": "subnet-router", - "tags": ["tag:router"], + "tags": [ + "tag:router" + ], "ipv4": "100.92.142.61", "ipv6": "fd7a:115c:a1e0::3e37:8e3d", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] + "routable_ips": [ + "10.33.0.0/16" + ], + "approved_routes": [ + "10.33.0.0/16" + ] }, "tagged-client": { "hostname": "tagged-client", - "tags": ["tag:client"], + "tags": [ + "tag:client" + ], "ipv4": "100.83.200.69", "ipv6": "fd7a:115c:a1e0::c537:c845" }, "tagged-prod": { "hostname": "tagged-prod", - "tags": ["tag:prod"], + "tags": [ + "tag:prod" + ], "ipv4": "100.103.8.15", "ipv6": "fd7a:115c:a1e0::5b37:80f" }, "tagged-server": { "hostname": "tagged-server", - "tags": ["tag:server"], + "tags": [ + "tag:server" + ], "ipv4": "100.108.74.26", "ipv6": "fd7a:115c:a1e0::b901:4a87" }, diff --git a/hscontrol/policy/v2/testdata/routes_results/ROUTES-d7_exit_auto_approval_wrong_tag.hujson b/hscontrol/policy/v2/testdata/routes_results/ROUTES-d7_exit_auto_approval_wrong_tag.hujson index 7b278826d..6443aa7c6 100644 --- a/hscontrol/policy/v2/testdata/routes_results/ROUTES-d7_exit_auto_approval_wrong_tag.hujson +++ b/hscontrol/policy/v2/testdata/routes_results/ROUTES-d7_exit_auto_approval_wrong_tag.hujson @@ -7,24 +7,40 @@ // Expected: Rules on 12 of 12 nodes { "test_id": "ROUTES-d7_exit_auto_approval_wrong_tag", - "timestamp": "2026-03-17T16:18:04Z", - "propagation_wait_seconds": 10, "input": { - "policy_file": "routes_policies/routes_d7_exit_auto_approval_wrong_tag.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"], - "tag:ha": ["kratail2tid@passkey"] + "tag:server": [ + "kratail2tid@passkey" + ], + "tag:prod": [ + "kratail2tid@passkey" + ], + "tag:client": [ + "kratail2tid@passkey" + ], + "tag:router": [ + "kratail2tid@passkey" + ], + "tag:exit": [ + "kratail2tid@passkey" + ], + "tag:ha": [ + "kratail2tid@passkey" + ] }, "hosts": { "webserver": "100.108.74.26", @@ -34,89 +50,146 @@ }, "autoApprovers": { "routes": { - "10.0.0.0/8": ["tag:router"], - "172.16.0.0/12": ["tag:router"], - "192.168.0.0/16": ["tag:ha"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.0.0.0/8": [ + "tag:router" + ], + "172.16.0.0/12": [ + "tag:router" + ], + "192.168.0.0/16": [ + "tag:ha" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "acls": [ { "action": "accept", - "src": ["tag:exit"], - "dst": ["*:*"] + "src": [ + "tag:exit" + ], + "dst": [ + "*:*" + ] } ] - }, - "api_endpoint": "https://api.tailscale.com/api/v2/tailnet/kratail2tid%40passkey/acl", - "api_response_code": 200 + } }, "topology": { "nodes": { "big-router": { "hostname": "big-router", - "tags": ["tag:router"], + "tags": [ + "tag:router" + ], "ipv4": "100.97.174.21", "ipv6": "fd7a:115c:a1e0::5137:ae15", - "routable_ips": ["10.0.0.0/8"], - "approved_routes": ["10.0.0.0/8"] + "routable_ips": [ + "10.0.0.0/8" + ], + "approved_routes": [ + "10.0.0.0/8" + ] }, "exit-node": { "hostname": "exit-node", - "tags": ["tag:exit"], + "tags": [ + "tag:exit" + ], "ipv4": "100.85.66.106", "ipv6": "fd7a:115c:a1e0::7c37:426a", - "routable_ips": ["0.0.0.0/0", "::/0"], - "approved_routes": ["0.0.0.0/0", "::/0"] + "routable_ips": [ + "0.0.0.0/0", + "::/0" + ], + "approved_routes": [ + "0.0.0.0/0", + "::/0" + ] }, "ha-router1": { "hostname": "ha-router1", - "tags": ["tag:ha"], + "tags": [ + "tag:ha" + ], "ipv4": "100.121.186.70", "ipv6": "fd7a:115c:a1e0::6737:ba46", - "routable_ips": ["192.168.1.0/24"], - "approved_routes": ["192.168.1.0/24"] + "routable_ips": [ + "192.168.1.0/24" + ], + "approved_routes": [ + "192.168.1.0/24" + ] }, "ha-router2": { "hostname": "ha-router2", - "tags": ["tag:ha"], + "tags": [ + "tag:ha" + ], "ipv4": "100.117.104.82", "ipv6": "fd7a:115c:a1e0::7437:6852", - "routable_ips": ["192.168.1.0/24"], - "approved_routes": ["192.168.1.0/24"] + "routable_ips": [ + "192.168.1.0/24" + ], + "approved_routes": [ + "192.168.1.0/24" + ] }, "multi-router": { "hostname": "multi-router", - "tags": ["tag:exit", "tag:router"], + "tags": [ + "tag:exit", + "tag:router" + ], "ipv4": "100.119.241.111", "ipv6": "fd7a:115c:a1e0::3337:f16f", - "routable_ips": ["172.16.0.0/24"], - "approved_routes": ["172.16.0.0/24"] + "routable_ips": [ + "172.16.0.0/24" + ], + "approved_routes": [ + "172.16.0.0/24" + ] }, "subnet-router": { "hostname": "subnet-router", - "tags": ["tag:router"], + "tags": [ + "tag:router" + ], "ipv4": "100.92.142.61", "ipv6": "fd7a:115c:a1e0::3e37:8e3d", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] + "routable_ips": [ + "10.33.0.0/16" + ], + "approved_routes": [ + "10.33.0.0/16" + ] }, "tagged-client": { "hostname": "tagged-client", - "tags": ["tag:client"], + "tags": [ + "tag:client" + ], "ipv4": "100.83.200.69", "ipv6": "fd7a:115c:a1e0::c537:c845" }, "tagged-prod": { "hostname": "tagged-prod", - "tags": ["tag:prod"], + "tags": [ + "tag:prod" + ], "ipv4": "100.103.8.15", "ipv6": "fd7a:115c:a1e0::5b37:80f" }, "tagged-server": { "hostname": "tagged-server", - "tags": ["tag:server"], + "tags": [ + "tag:server" + ], "ipv4": "100.108.74.26", "ipv6": "fd7a:115c:a1e0::b901:4a87" }, @@ -144,7 +217,12 @@ "big-router": { "packet_filter_rules": [ { - "SrcIPs": ["100.119.241.111", "100.85.66.106", "fd7a:115c:a1e0::3337:f16f", "fd7a:115c:a1e0::7c37:426a"], + "SrcIPs": [ + "100.119.241.111", + "100.85.66.106", + "fd7a:115c:a1e0::3337:f16f", + "fd7a:115c:a1e0::7c37:426a" + ], "DstPorts": [ { "IP": "*", @@ -160,7 +238,12 @@ "exit-node": { "packet_filter_rules": [ { - "SrcIPs": ["100.119.241.111", "100.85.66.106", "fd7a:115c:a1e0::3337:f16f", "fd7a:115c:a1e0::7c37:426a"], + "SrcIPs": [ + "100.119.241.111", + "100.85.66.106", + "fd7a:115c:a1e0::3337:f16f", + "fd7a:115c:a1e0::7c37:426a" + ], "DstPorts": [ { "IP": "*", @@ -176,7 +259,12 @@ "ha-router1": { "packet_filter_rules": [ { - "SrcIPs": ["100.119.241.111", "100.85.66.106", "fd7a:115c:a1e0::3337:f16f", "fd7a:115c:a1e0::7c37:426a"], + "SrcIPs": [ + "100.119.241.111", + "100.85.66.106", + "fd7a:115c:a1e0::3337:f16f", + "fd7a:115c:a1e0::7c37:426a" + ], "DstPorts": [ { "IP": "*", @@ -192,7 +280,12 @@ "ha-router2": { "packet_filter_rules": [ { - "SrcIPs": ["100.119.241.111", "100.85.66.106", "fd7a:115c:a1e0::3337:f16f", "fd7a:115c:a1e0::7c37:426a"], + "SrcIPs": [ + "100.119.241.111", + "100.85.66.106", + "fd7a:115c:a1e0::3337:f16f", + "fd7a:115c:a1e0::7c37:426a" + ], "DstPorts": [ { "IP": "*", @@ -208,7 +301,12 @@ "multi-router": { "packet_filter_rules": [ { - "SrcIPs": ["100.119.241.111", "100.85.66.106", "fd7a:115c:a1e0::3337:f16f", "fd7a:115c:a1e0::7c37:426a"], + "SrcIPs": [ + "100.119.241.111", + "100.85.66.106", + "fd7a:115c:a1e0::3337:f16f", + "fd7a:115c:a1e0::7c37:426a" + ], "DstPorts": [ { "IP": "*", @@ -224,7 +322,12 @@ "subnet-router": { "packet_filter_rules": [ { - "SrcIPs": ["100.119.241.111", "100.85.66.106", "fd7a:115c:a1e0::3337:f16f", "fd7a:115c:a1e0::7c37:426a"], + "SrcIPs": [ + "100.119.241.111", + "100.85.66.106", + "fd7a:115c:a1e0::3337:f16f", + "fd7a:115c:a1e0::7c37:426a" + ], "DstPorts": [ { "IP": "*", @@ -240,7 +343,12 @@ "tagged-client": { "packet_filter_rules": [ { - "SrcIPs": ["100.119.241.111", "100.85.66.106", "fd7a:115c:a1e0::3337:f16f", "fd7a:115c:a1e0::7c37:426a"], + "SrcIPs": [ + "100.119.241.111", + "100.85.66.106", + "fd7a:115c:a1e0::3337:f16f", + "fd7a:115c:a1e0::7c37:426a" + ], "DstPorts": [ { "IP": "*", @@ -256,7 +364,12 @@ "tagged-prod": { "packet_filter_rules": [ { - "SrcIPs": ["100.119.241.111", "100.85.66.106", "fd7a:115c:a1e0::3337:f16f", "fd7a:115c:a1e0::7c37:426a"], + "SrcIPs": [ + "100.119.241.111", + "100.85.66.106", + "fd7a:115c:a1e0::3337:f16f", + "fd7a:115c:a1e0::7c37:426a" + ], "DstPorts": [ { "IP": "*", @@ -272,7 +385,12 @@ "tagged-server": { "packet_filter_rules": [ { - "SrcIPs": ["100.119.241.111", "100.85.66.106", "fd7a:115c:a1e0::3337:f16f", "fd7a:115c:a1e0::7c37:426a"], + "SrcIPs": [ + "100.119.241.111", + "100.85.66.106", + "fd7a:115c:a1e0::3337:f16f", + "fd7a:115c:a1e0::7c37:426a" + ], "DstPorts": [ { "IP": "*", @@ -288,7 +406,12 @@ "user-kris": { "packet_filter_rules": [ { - "SrcIPs": ["100.119.241.111", "100.85.66.106", "fd7a:115c:a1e0::3337:f16f", "fd7a:115c:a1e0::7c37:426a"], + "SrcIPs": [ + "100.119.241.111", + "100.85.66.106", + "fd7a:115c:a1e0::3337:f16f", + "fd7a:115c:a1e0::7c37:426a" + ], "DstPorts": [ { "IP": "*", @@ -304,7 +427,12 @@ "user-mon": { "packet_filter_rules": [ { - "SrcIPs": ["100.119.241.111", "100.85.66.106", "fd7a:115c:a1e0::3337:f16f", "fd7a:115c:a1e0::7c37:426a"], + "SrcIPs": [ + "100.119.241.111", + "100.85.66.106", + "fd7a:115c:a1e0::3337:f16f", + "fd7a:115c:a1e0::7c37:426a" + ], "DstPorts": [ { "IP": "*", @@ -320,7 +448,12 @@ "user1": { "packet_filter_rules": [ { - "SrcIPs": ["100.119.241.111", "100.85.66.106", "fd7a:115c:a1e0::3337:f16f", "fd7a:115c:a1e0::7c37:426a"], + "SrcIPs": [ + "100.119.241.111", + "100.85.66.106", + "fd7a:115c:a1e0::3337:f16f", + "fd7a:115c:a1e0::7c37:426a" + ], "DstPorts": [ { "IP": "*", diff --git a/hscontrol/policy/v2/testdata/routes_results/ROUTES-d8_auto_approval_acl_interaction.hujson b/hscontrol/policy/v2/testdata/routes_results/ROUTES-d8_auto_approval_acl_interaction.hujson index fbea5e78c..483651465 100644 --- a/hscontrol/policy/v2/testdata/routes_results/ROUTES-d8_auto_approval_acl_interaction.hujson +++ b/hscontrol/policy/v2/testdata/routes_results/ROUTES-d8_auto_approval_acl_interaction.hujson @@ -7,24 +7,40 @@ // Expected: Rules on 2 of 12 nodes { "test_id": "ROUTES-d8_auto_approval_acl_interaction", - "timestamp": "2026-03-17T16:18:14Z", - "propagation_wait_seconds": 10, "input": { - "policy_file": "routes_policies/routes_d8_auto_approval_acl_interaction.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"], - "tag:ha": ["kratail2tid@passkey"] + "tag:server": [ + "kratail2tid@passkey" + ], + "tag:prod": [ + "kratail2tid@passkey" + ], + "tag:client": [ + "kratail2tid@passkey" + ], + "tag:router": [ + "kratail2tid@passkey" + ], + "tag:exit": [ + "kratail2tid@passkey" + ], + "tag:ha": [ + "kratail2tid@passkey" + ] }, "hosts": { "webserver": "100.108.74.26", @@ -34,89 +50,146 @@ }, "autoApprovers": { "routes": { - "10.0.0.0/8": ["tag:router"], - "172.16.0.0/12": ["tag:router"], - "192.168.0.0/16": ["tag:ha"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.0.0.0/8": [ + "tag:router" + ], + "172.16.0.0/12": [ + "tag:router" + ], + "192.168.0.0/16": [ + "tag:ha" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "acls": [ { "action": "accept", - "src": ["autogroup:member"], - "dst": ["10.33.0.0/16:22"] + "src": [ + "autogroup:member" + ], + "dst": [ + "10.33.0.0/16:22" + ] } ] - }, - "api_endpoint": "https://api.tailscale.com/api/v2/tailnet/kratail2tid%40passkey/acl", - "api_response_code": 200 + } }, "topology": { "nodes": { "big-router": { "hostname": "big-router", - "tags": ["tag:router"], + "tags": [ + "tag:router" + ], "ipv4": "100.97.174.21", "ipv6": "fd7a:115c:a1e0::5137:ae15", - "routable_ips": ["10.0.0.0/8"], - "approved_routes": ["10.0.0.0/8"] + "routable_ips": [ + "10.0.0.0/8" + ], + "approved_routes": [ + "10.0.0.0/8" + ] }, "exit-node": { "hostname": "exit-node", - "tags": ["tag:exit"], + "tags": [ + "tag:exit" + ], "ipv4": "100.85.66.106", "ipv6": "fd7a:115c:a1e0::7c37:426a", - "routable_ips": ["0.0.0.0/0", "::/0"], - "approved_routes": ["0.0.0.0/0", "::/0"] + "routable_ips": [ + "0.0.0.0/0", + "::/0" + ], + "approved_routes": [ + "0.0.0.0/0", + "::/0" + ] }, "ha-router1": { "hostname": "ha-router1", - "tags": ["tag:ha"], + "tags": [ + "tag:ha" + ], "ipv4": "100.121.186.70", "ipv6": "fd7a:115c:a1e0::6737:ba46", - "routable_ips": ["192.168.1.0/24"], - "approved_routes": ["192.168.1.0/24"] + "routable_ips": [ + "192.168.1.0/24" + ], + "approved_routes": [ + "192.168.1.0/24" + ] }, "ha-router2": { "hostname": "ha-router2", - "tags": ["tag:ha"], + "tags": [ + "tag:ha" + ], "ipv4": "100.117.104.82", "ipv6": "fd7a:115c:a1e0::7437:6852", - "routable_ips": ["192.168.1.0/24"], - "approved_routes": ["192.168.1.0/24"] + "routable_ips": [ + "192.168.1.0/24" + ], + "approved_routes": [ + "192.168.1.0/24" + ] }, "multi-router": { "hostname": "multi-router", - "tags": ["tag:exit", "tag:router"], + "tags": [ + "tag:exit", + "tag:router" + ], "ipv4": "100.119.241.111", "ipv6": "fd7a:115c:a1e0::3337:f16f", - "routable_ips": ["172.16.0.0/24"], - "approved_routes": ["172.16.0.0/24"] + "routable_ips": [ + "172.16.0.0/24" + ], + "approved_routes": [ + "172.16.0.0/24" + ] }, "subnet-router": { "hostname": "subnet-router", - "tags": ["tag:router"], + "tags": [ + "tag:router" + ], "ipv4": "100.92.142.61", "ipv6": "fd7a:115c:a1e0::3e37:8e3d", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] + "routable_ips": [ + "10.33.0.0/16" + ], + "approved_routes": [ + "10.33.0.0/16" + ] }, "tagged-client": { "hostname": "tagged-client", - "tags": ["tag:client"], + "tags": [ + "tag:client" + ], "ipv4": "100.83.200.69", "ipv6": "fd7a:115c:a1e0::c537:c845" }, "tagged-prod": { "hostname": "tagged-prod", - "tags": ["tag:prod"], + "tags": [ + "tag:prod" + ], "ipv4": "100.103.8.15", "ipv6": "fd7a:115c:a1e0::5b37:80f" }, "tagged-server": { "hostname": "tagged-server", - "tags": ["tag:server"], + "tags": [ + "tag:server" + ], "ipv4": "100.108.74.26", "ipv6": "fd7a:115c:a1e0::b901:4a87" }, diff --git a/hscontrol/policy/v2/testdata/routes_results/ROUTES-d9_auto_approval_triggers_on_advertise.hujson b/hscontrol/policy/v2/testdata/routes_results/ROUTES-d9_auto_approval_triggers_on_advertise.hujson index 097e77180..2ba7b010e 100644 --- a/hscontrol/policy/v2/testdata/routes_results/ROUTES-d9_auto_approval_triggers_on_advertise.hujson +++ b/hscontrol/policy/v2/testdata/routes_results/ROUTES-d9_auto_approval_triggers_on_advertise.hujson @@ -7,24 +7,40 @@ // Expected: Rules on 2 of 12 nodes { "test_id": "ROUTES-d9_auto_approval_triggers_on_advertise", - "timestamp": "2026-03-17T16:18:25Z", - "propagation_wait_seconds": 10, "input": { - "policy_file": "routes_policies/routes_d9_auto_approval_triggers_on_advertise.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"], - "tag:ha": ["kratail2tid@passkey"] + "tag:server": [ + "kratail2tid@passkey" + ], + "tag:prod": [ + "kratail2tid@passkey" + ], + "tag:client": [ + "kratail2tid@passkey" + ], + "tag:router": [ + "kratail2tid@passkey" + ], + "tag:exit": [ + "kratail2tid@passkey" + ], + "tag:ha": [ + "kratail2tid@passkey" + ] }, "hosts": { "webserver": "100.108.74.26", @@ -34,89 +50,146 @@ }, "autoApprovers": { "routes": { - "10.0.0.0/8": ["tag:router"], - "172.16.0.0/12": ["tag:router"], - "192.168.0.0/16": ["tag:ha"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.0.0.0/8": [ + "tag:router" + ], + "172.16.0.0/12": [ + "tag:router" + ], + "192.168.0.0/16": [ + "tag:ha" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "acls": [ { "action": "accept", - "src": ["*"], - "dst": ["10.33.0.0/16:*"] + "src": [ + "*" + ], + "dst": [ + "10.33.0.0/16:*" + ] } ] - }, - "api_endpoint": "https://api.tailscale.com/api/v2/tailnet/kratail2tid%40passkey/acl", - "api_response_code": 200 + } }, "topology": { "nodes": { "big-router": { "hostname": "big-router", - "tags": ["tag:router"], + "tags": [ + "tag:router" + ], "ipv4": "100.97.174.21", "ipv6": "fd7a:115c:a1e0::5137:ae15", - "routable_ips": ["10.0.0.0/8"], - "approved_routes": ["10.0.0.0/8"] + "routable_ips": [ + "10.0.0.0/8" + ], + "approved_routes": [ + "10.0.0.0/8" + ] }, "exit-node": { "hostname": "exit-node", - "tags": ["tag:exit"], + "tags": [ + "tag:exit" + ], "ipv4": "100.85.66.106", "ipv6": "fd7a:115c:a1e0::7c37:426a", - "routable_ips": ["0.0.0.0/0", "::/0"], - "approved_routes": ["0.0.0.0/0", "::/0"] + "routable_ips": [ + "0.0.0.0/0", + "::/0" + ], + "approved_routes": [ + "0.0.0.0/0", + "::/0" + ] }, "ha-router1": { "hostname": "ha-router1", - "tags": ["tag:ha"], + "tags": [ + "tag:ha" + ], "ipv4": "100.121.186.70", "ipv6": "fd7a:115c:a1e0::6737:ba46", - "routable_ips": ["192.168.1.0/24"], - "approved_routes": ["192.168.1.0/24"] + "routable_ips": [ + "192.168.1.0/24" + ], + "approved_routes": [ + "192.168.1.0/24" + ] }, "ha-router2": { "hostname": "ha-router2", - "tags": ["tag:ha"], + "tags": [ + "tag:ha" + ], "ipv4": "100.117.104.82", "ipv6": "fd7a:115c:a1e0::7437:6852", - "routable_ips": ["192.168.1.0/24"], - "approved_routes": ["192.168.1.0/24"] + "routable_ips": [ + "192.168.1.0/24" + ], + "approved_routes": [ + "192.168.1.0/24" + ] }, "multi-router": { "hostname": "multi-router", - "tags": ["tag:exit", "tag:router"], + "tags": [ + "tag:exit", + "tag:router" + ], "ipv4": "100.119.241.111", "ipv6": "fd7a:115c:a1e0::3337:f16f", - "routable_ips": ["172.16.0.0/24"], - "approved_routes": ["172.16.0.0/24"] + "routable_ips": [ + "172.16.0.0/24" + ], + "approved_routes": [ + "172.16.0.0/24" + ] }, "subnet-router": { "hostname": "subnet-router", - "tags": ["tag:router"], + "tags": [ + "tag:router" + ], "ipv4": "100.92.142.61", "ipv6": "fd7a:115c:a1e0::3e37:8e3d", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] + "routable_ips": [ + "10.33.0.0/16" + ], + "approved_routes": [ + "10.33.0.0/16" + ] }, "tagged-client": { "hostname": "tagged-client", - "tags": ["tag:client"], + "tags": [ + "tag:client" + ], "ipv4": "100.83.200.69", "ipv6": "fd7a:115c:a1e0::c537:c845" }, "tagged-prod": { "hostname": "tagged-prod", - "tags": ["tag:prod"], + "tags": [ + "tag:prod" + ], "ipv4": "100.103.8.15", "ipv6": "fd7a:115c:a1e0::5b37:80f" }, "tagged-server": { "hostname": "tagged-server", - "tags": ["tag:server"], + "tags": [ + "tag:server" + ], "ipv4": "100.108.74.26", "ipv6": "fd7a:115c:a1e0::b901:4a87" }, diff --git a/hscontrol/policy/v2/testdata/routes_results/ROUTES-e1_ha_two_routers_same_subnet.hujson b/hscontrol/policy/v2/testdata/routes_results/ROUTES-e1_ha_two_routers_same_subnet.hujson index 2dc8dece4..a8c4bba14 100644 --- a/hscontrol/policy/v2/testdata/routes_results/ROUTES-e1_ha_two_routers_same_subnet.hujson +++ b/hscontrol/policy/v2/testdata/routes_results/ROUTES-e1_ha_two_routers_same_subnet.hujson @@ -7,24 +7,40 @@ // Expected: Rules on 2 of 12 nodes { "test_id": "ROUTES-e1_ha_two_routers_same_subnet", - "timestamp": "2026-03-17T16:18:36Z", - "propagation_wait_seconds": 10, "input": { - "policy_file": "routes_policies/routes_e1_ha_two_routers_same_subnet.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"], - "tag:ha": ["kratail2tid@passkey"] + "tag:server": [ + "kratail2tid@passkey" + ], + "tag:prod": [ + "kratail2tid@passkey" + ], + "tag:client": [ + "kratail2tid@passkey" + ], + "tag:router": [ + "kratail2tid@passkey" + ], + "tag:exit": [ + "kratail2tid@passkey" + ], + "tag:ha": [ + "kratail2tid@passkey" + ] }, "hosts": { "webserver": "100.108.74.26", @@ -34,89 +50,146 @@ }, "autoApprovers": { "routes": { - "10.0.0.0/8": ["tag:router"], - "172.16.0.0/12": ["tag:router"], - "192.168.0.0/16": ["tag:ha"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.0.0.0/8": [ + "tag:router" + ], + "172.16.0.0/12": [ + "tag:router" + ], + "192.168.0.0/16": [ + "tag:ha" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "acls": [ { "action": "accept", - "src": ["*"], - "dst": ["192.168.1.0/24:*"] + "src": [ + "*" + ], + "dst": [ + "192.168.1.0/24:*" + ] } ] - }, - "api_endpoint": "https://api.tailscale.com/api/v2/tailnet/kratail2tid%40passkey/acl", - "api_response_code": 200 + } }, "topology": { "nodes": { "big-router": { "hostname": "big-router", - "tags": ["tag:router"], + "tags": [ + "tag:router" + ], "ipv4": "100.97.174.21", "ipv6": "fd7a:115c:a1e0::5137:ae15", - "routable_ips": ["10.0.0.0/8"], - "approved_routes": ["10.0.0.0/8"] + "routable_ips": [ + "10.0.0.0/8" + ], + "approved_routes": [ + "10.0.0.0/8" + ] }, "exit-node": { "hostname": "exit-node", - "tags": ["tag:exit"], + "tags": [ + "tag:exit" + ], "ipv4": "100.85.66.106", "ipv6": "fd7a:115c:a1e0::7c37:426a", - "routable_ips": ["0.0.0.0/0", "::/0"], - "approved_routes": ["0.0.0.0/0", "::/0"] + "routable_ips": [ + "0.0.0.0/0", + "::/0" + ], + "approved_routes": [ + "0.0.0.0/0", + "::/0" + ] }, "ha-router1": { "hostname": "ha-router1", - "tags": ["tag:ha"], + "tags": [ + "tag:ha" + ], "ipv4": "100.121.186.70", "ipv6": "fd7a:115c:a1e0::6737:ba46", - "routable_ips": ["192.168.1.0/24"], - "approved_routes": ["192.168.1.0/24"] + "routable_ips": [ + "192.168.1.0/24" + ], + "approved_routes": [ + "192.168.1.0/24" + ] }, "ha-router2": { "hostname": "ha-router2", - "tags": ["tag:ha"], + "tags": [ + "tag:ha" + ], "ipv4": "100.117.104.82", "ipv6": "fd7a:115c:a1e0::7437:6852", - "routable_ips": ["192.168.1.0/24"], - "approved_routes": ["192.168.1.0/24"] + "routable_ips": [ + "192.168.1.0/24" + ], + "approved_routes": [ + "192.168.1.0/24" + ] }, "multi-router": { "hostname": "multi-router", - "tags": ["tag:exit", "tag:router"], + "tags": [ + "tag:exit", + "tag:router" + ], "ipv4": "100.119.241.111", "ipv6": "fd7a:115c:a1e0::3337:f16f", - "routable_ips": ["172.16.0.0/24"], - "approved_routes": ["172.16.0.0/24"] + "routable_ips": [ + "172.16.0.0/24" + ], + "approved_routes": [ + "172.16.0.0/24" + ] }, "subnet-router": { "hostname": "subnet-router", - "tags": ["tag:router"], + "tags": [ + "tag:router" + ], "ipv4": "100.92.142.61", "ipv6": "fd7a:115c:a1e0::3e37:8e3d", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] + "routable_ips": [ + "10.33.0.0/16" + ], + "approved_routes": [ + "10.33.0.0/16" + ] }, "tagged-client": { "hostname": "tagged-client", - "tags": ["tag:client"], + "tags": [ + "tag:client" + ], "ipv4": "100.83.200.69", "ipv6": "fd7a:115c:a1e0::c537:c845" }, "tagged-prod": { "hostname": "tagged-prod", - "tags": ["tag:prod"], + "tags": [ + "tag:prod" + ], "ipv4": "100.103.8.15", "ipv6": "fd7a:115c:a1e0::5b37:80f" }, "tagged-server": { "hostname": "tagged-server", - "tags": ["tag:server"], + "tags": [ + "tag:server" + ], "ipv4": "100.108.74.26", "ipv6": "fd7a:115c:a1e0::b901:4a87" }, diff --git a/hscontrol/policy/v2/testdata/routes_results/ROUTES-e2_ha_primary_in_allowedips.hujson b/hscontrol/policy/v2/testdata/routes_results/ROUTES-e2_ha_primary_in_allowedips.hujson index 8d4d5accc..190b218c4 100644 --- a/hscontrol/policy/v2/testdata/routes_results/ROUTES-e2_ha_primary_in_allowedips.hujson +++ b/hscontrol/policy/v2/testdata/routes_results/ROUTES-e2_ha_primary_in_allowedips.hujson @@ -7,24 +7,40 @@ // Expected: Rules on 2 of 12 nodes { "test_id": "ROUTES-e2_ha_primary_in_allowedips", - "timestamp": "2026-03-17T16:18:46Z", - "propagation_wait_seconds": 10, "input": { - "policy_file": "routes_policies/routes_e2_ha_primary_in_allowedips.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"], - "tag:ha": ["kratail2tid@passkey"] + "tag:server": [ + "kratail2tid@passkey" + ], + "tag:prod": [ + "kratail2tid@passkey" + ], + "tag:client": [ + "kratail2tid@passkey" + ], + "tag:router": [ + "kratail2tid@passkey" + ], + "tag:exit": [ + "kratail2tid@passkey" + ], + "tag:ha": [ + "kratail2tid@passkey" + ] }, "hosts": { "webserver": "100.108.74.26", @@ -34,89 +50,146 @@ }, "autoApprovers": { "routes": { - "10.0.0.0/8": ["tag:router"], - "172.16.0.0/12": ["tag:router"], - "192.168.0.0/16": ["tag:ha"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.0.0.0/8": [ + "tag:router" + ], + "172.16.0.0/12": [ + "tag:router" + ], + "192.168.0.0/16": [ + "tag:ha" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "acls": [ { "action": "accept", - "src": ["*"], - "dst": ["192.168.1.0/24:*"] + "src": [ + "*" + ], + "dst": [ + "192.168.1.0/24:*" + ] } ] - }, - "api_endpoint": "https://api.tailscale.com/api/v2/tailnet/kratail2tid%40passkey/acl", - "api_response_code": 200 + } }, "topology": { "nodes": { "big-router": { "hostname": "big-router", - "tags": ["tag:router"], + "tags": [ + "tag:router" + ], "ipv4": "100.97.174.21", "ipv6": "fd7a:115c:a1e0::5137:ae15", - "routable_ips": ["10.0.0.0/8"], - "approved_routes": ["10.0.0.0/8"] + "routable_ips": [ + "10.0.0.0/8" + ], + "approved_routes": [ + "10.0.0.0/8" + ] }, "exit-node": { "hostname": "exit-node", - "tags": ["tag:exit"], + "tags": [ + "tag:exit" + ], "ipv4": "100.85.66.106", "ipv6": "fd7a:115c:a1e0::7c37:426a", - "routable_ips": ["0.0.0.0/0", "::/0"], - "approved_routes": ["0.0.0.0/0", "::/0"] + "routable_ips": [ + "0.0.0.0/0", + "::/0" + ], + "approved_routes": [ + "0.0.0.0/0", + "::/0" + ] }, "ha-router1": { "hostname": "ha-router1", - "tags": ["tag:ha"], + "tags": [ + "tag:ha" + ], "ipv4": "100.121.186.70", "ipv6": "fd7a:115c:a1e0::6737:ba46", - "routable_ips": ["192.168.1.0/24"], - "approved_routes": ["192.168.1.0/24"] + "routable_ips": [ + "192.168.1.0/24" + ], + "approved_routes": [ + "192.168.1.0/24" + ] }, "ha-router2": { "hostname": "ha-router2", - "tags": ["tag:ha"], + "tags": [ + "tag:ha" + ], "ipv4": "100.117.104.82", "ipv6": "fd7a:115c:a1e0::7437:6852", - "routable_ips": ["192.168.1.0/24"], - "approved_routes": ["192.168.1.0/24"] + "routable_ips": [ + "192.168.1.0/24" + ], + "approved_routes": [ + "192.168.1.0/24" + ] }, "multi-router": { "hostname": "multi-router", - "tags": ["tag:exit", "tag:router"], + "tags": [ + "tag:exit", + "tag:router" + ], "ipv4": "100.119.241.111", "ipv6": "fd7a:115c:a1e0::3337:f16f", - "routable_ips": ["172.16.0.0/24"], - "approved_routes": ["172.16.0.0/24"] + "routable_ips": [ + "172.16.0.0/24" + ], + "approved_routes": [ + "172.16.0.0/24" + ] }, "subnet-router": { "hostname": "subnet-router", - "tags": ["tag:router"], + "tags": [ + "tag:router" + ], "ipv4": "100.92.142.61", "ipv6": "fd7a:115c:a1e0::3e37:8e3d", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] + "routable_ips": [ + "10.33.0.0/16" + ], + "approved_routes": [ + "10.33.0.0/16" + ] }, "tagged-client": { "hostname": "tagged-client", - "tags": ["tag:client"], + "tags": [ + "tag:client" + ], "ipv4": "100.83.200.69", "ipv6": "fd7a:115c:a1e0::c537:c845" }, "tagged-prod": { "hostname": "tagged-prod", - "tags": ["tag:prod"], + "tags": [ + "tag:prod" + ], "ipv4": "100.103.8.15", "ipv6": "fd7a:115c:a1e0::5b37:80f" }, "tagged-server": { "hostname": "tagged-server", - "tags": ["tag:server"], + "tags": [ + "tag:server" + ], "ipv4": "100.108.74.26", "ipv6": "fd7a:115c:a1e0::b901:4a87" }, diff --git a/hscontrol/policy/v2/testdata/routes_results/ROUTES-e3_ha_secondary_no_route_in_allowedips.hujson b/hscontrol/policy/v2/testdata/routes_results/ROUTES-e3_ha_secondary_no_route_in_allowedips.hujson index 850f84f6e..ad947e116 100644 --- a/hscontrol/policy/v2/testdata/routes_results/ROUTES-e3_ha_secondary_no_route_in_allowedips.hujson +++ b/hscontrol/policy/v2/testdata/routes_results/ROUTES-e3_ha_secondary_no_route_in_allowedips.hujson @@ -7,24 +7,40 @@ // Expected: Rules on 2 of 12 nodes { "test_id": "ROUTES-e3_ha_secondary_no_route_in_allowedips", - "timestamp": "2026-03-17T16:18:57Z", - "propagation_wait_seconds": 10, "input": { - "policy_file": "routes_policies/routes_e3_ha_secondary_no_route_in_allowedips.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"], - "tag:ha": ["kratail2tid@passkey"] + "tag:server": [ + "kratail2tid@passkey" + ], + "tag:prod": [ + "kratail2tid@passkey" + ], + "tag:client": [ + "kratail2tid@passkey" + ], + "tag:router": [ + "kratail2tid@passkey" + ], + "tag:exit": [ + "kratail2tid@passkey" + ], + "tag:ha": [ + "kratail2tid@passkey" + ] }, "hosts": { "webserver": "100.108.74.26", @@ -34,89 +50,146 @@ }, "autoApprovers": { "routes": { - "10.0.0.0/8": ["tag:router"], - "172.16.0.0/12": ["tag:router"], - "192.168.0.0/16": ["tag:ha"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.0.0.0/8": [ + "tag:router" + ], + "172.16.0.0/12": [ + "tag:router" + ], + "192.168.0.0/16": [ + "tag:ha" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "acls": [ { "action": "accept", - "src": ["*"], - "dst": ["192.168.1.0/24:*"] + "src": [ + "*" + ], + "dst": [ + "192.168.1.0/24:*" + ] } ] - }, - "api_endpoint": "https://api.tailscale.com/api/v2/tailnet/kratail2tid%40passkey/acl", - "api_response_code": 200 + } }, "topology": { "nodes": { "big-router": { "hostname": "big-router", - "tags": ["tag:router"], + "tags": [ + "tag:router" + ], "ipv4": "100.97.174.21", "ipv6": "fd7a:115c:a1e0::5137:ae15", - "routable_ips": ["10.0.0.0/8"], - "approved_routes": ["10.0.0.0/8"] + "routable_ips": [ + "10.0.0.0/8" + ], + "approved_routes": [ + "10.0.0.0/8" + ] }, "exit-node": { "hostname": "exit-node", - "tags": ["tag:exit"], + "tags": [ + "tag:exit" + ], "ipv4": "100.85.66.106", "ipv6": "fd7a:115c:a1e0::7c37:426a", - "routable_ips": ["0.0.0.0/0", "::/0"], - "approved_routes": ["0.0.0.0/0", "::/0"] + "routable_ips": [ + "0.0.0.0/0", + "::/0" + ], + "approved_routes": [ + "0.0.0.0/0", + "::/0" + ] }, "ha-router1": { "hostname": "ha-router1", - "tags": ["tag:ha"], + "tags": [ + "tag:ha" + ], "ipv4": "100.121.186.70", "ipv6": "fd7a:115c:a1e0::6737:ba46", - "routable_ips": ["192.168.1.0/24"], - "approved_routes": ["192.168.1.0/24"] + "routable_ips": [ + "192.168.1.0/24" + ], + "approved_routes": [ + "192.168.1.0/24" + ] }, "ha-router2": { "hostname": "ha-router2", - "tags": ["tag:ha"], + "tags": [ + "tag:ha" + ], "ipv4": "100.117.104.82", "ipv6": "fd7a:115c:a1e0::7437:6852", - "routable_ips": ["192.168.1.0/24"], - "approved_routes": ["192.168.1.0/24"] + "routable_ips": [ + "192.168.1.0/24" + ], + "approved_routes": [ + "192.168.1.0/24" + ] }, "multi-router": { "hostname": "multi-router", - "tags": ["tag:exit", "tag:router"], + "tags": [ + "tag:exit", + "tag:router" + ], "ipv4": "100.119.241.111", "ipv6": "fd7a:115c:a1e0::3337:f16f", - "routable_ips": ["172.16.0.0/24"], - "approved_routes": ["172.16.0.0/24"] + "routable_ips": [ + "172.16.0.0/24" + ], + "approved_routes": [ + "172.16.0.0/24" + ] }, "subnet-router": { "hostname": "subnet-router", - "tags": ["tag:router"], + "tags": [ + "tag:router" + ], "ipv4": "100.92.142.61", "ipv6": "fd7a:115c:a1e0::3e37:8e3d", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] + "routable_ips": [ + "10.33.0.0/16" + ], + "approved_routes": [ + "10.33.0.0/16" + ] }, "tagged-client": { "hostname": "tagged-client", - "tags": ["tag:client"], + "tags": [ + "tag:client" + ], "ipv4": "100.83.200.69", "ipv6": "fd7a:115c:a1e0::c537:c845" }, "tagged-prod": { "hostname": "tagged-prod", - "tags": ["tag:prod"], + "tags": [ + "tag:prod" + ], "ipv4": "100.103.8.15", "ipv6": "fd7a:115c:a1e0::5b37:80f" }, "tagged-server": { "hostname": "tagged-server", - "tags": ["tag:server"], + "tags": [ + "tag:server" + ], "ipv4": "100.108.74.26", "ipv6": "fd7a:115c:a1e0::b901:4a87" }, diff --git a/hscontrol/policy/v2/testdata/routes_results/ROUTES-e4_ha_both_get_filters_host_alias.hujson b/hscontrol/policy/v2/testdata/routes_results/ROUTES-e4_ha_both_get_filters_host_alias.hujson index cd150c6b2..302e532de 100644 --- a/hscontrol/policy/v2/testdata/routes_results/ROUTES-e4_ha_both_get_filters_host_alias.hujson +++ b/hscontrol/policy/v2/testdata/routes_results/ROUTES-e4_ha_both_get_filters_host_alias.hujson @@ -7,24 +7,40 @@ // Expected: Rules on 2 of 12 nodes { "test_id": "ROUTES-e4_ha_both_get_filters_host_alias", - "timestamp": "2026-03-17T16:19:07Z", - "propagation_wait_seconds": 10, "input": { - "policy_file": "routes_policies/routes_e4_ha_both_get_filters_host_alias.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"], - "tag:ha": ["kratail2tid@passkey"] + "tag:server": [ + "kratail2tid@passkey" + ], + "tag:prod": [ + "kratail2tid@passkey" + ], + "tag:client": [ + "kratail2tid@passkey" + ], + "tag:router": [ + "kratail2tid@passkey" + ], + "tag:exit": [ + "kratail2tid@passkey" + ], + "tag:ha": [ + "kratail2tid@passkey" + ] }, "hosts": { "webserver": "100.108.74.26", @@ -34,89 +50,146 @@ }, "autoApprovers": { "routes": { - "10.0.0.0/8": ["tag:router"], - "172.16.0.0/12": ["tag:router"], - "192.168.0.0/16": ["tag:ha"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.0.0.0/8": [ + "tag:router" + ], + "172.16.0.0/12": [ + "tag:router" + ], + "192.168.0.0/16": [ + "tag:ha" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "acls": [ { "action": "accept", - "src": ["*"], - "dst": ["subnet24:22"] + "src": [ + "*" + ], + "dst": [ + "subnet24:22" + ] } ] - }, - "api_endpoint": "https://api.tailscale.com/api/v2/tailnet/kratail2tid%40passkey/acl", - "api_response_code": 200 + } }, "topology": { "nodes": { "big-router": { "hostname": "big-router", - "tags": ["tag:router"], + "tags": [ + "tag:router" + ], "ipv4": "100.97.174.21", "ipv6": "fd7a:115c:a1e0::5137:ae15", - "routable_ips": ["10.0.0.0/8"], - "approved_routes": ["10.0.0.0/8"] + "routable_ips": [ + "10.0.0.0/8" + ], + "approved_routes": [ + "10.0.0.0/8" + ] }, "exit-node": { "hostname": "exit-node", - "tags": ["tag:exit"], + "tags": [ + "tag:exit" + ], "ipv4": "100.85.66.106", "ipv6": "fd7a:115c:a1e0::7c37:426a", - "routable_ips": ["0.0.0.0/0", "::/0"], - "approved_routes": ["0.0.0.0/0", "::/0"] + "routable_ips": [ + "0.0.0.0/0", + "::/0" + ], + "approved_routes": [ + "0.0.0.0/0", + "::/0" + ] }, "ha-router1": { "hostname": "ha-router1", - "tags": ["tag:ha"], + "tags": [ + "tag:ha" + ], "ipv4": "100.121.186.70", "ipv6": "fd7a:115c:a1e0::6737:ba46", - "routable_ips": ["192.168.1.0/24"], - "approved_routes": ["192.168.1.0/24"] + "routable_ips": [ + "192.168.1.0/24" + ], + "approved_routes": [ + "192.168.1.0/24" + ] }, "ha-router2": { "hostname": "ha-router2", - "tags": ["tag:ha"], + "tags": [ + "tag:ha" + ], "ipv4": "100.117.104.82", "ipv6": "fd7a:115c:a1e0::7437:6852", - "routable_ips": ["192.168.1.0/24"], - "approved_routes": ["192.168.1.0/24"] + "routable_ips": [ + "192.168.1.0/24" + ], + "approved_routes": [ + "192.168.1.0/24" + ] }, "multi-router": { "hostname": "multi-router", - "tags": ["tag:exit", "tag:router"], + "tags": [ + "tag:exit", + "tag:router" + ], "ipv4": "100.119.241.111", "ipv6": "fd7a:115c:a1e0::3337:f16f", - "routable_ips": ["172.16.0.0/24"], - "approved_routes": ["172.16.0.0/24"] + "routable_ips": [ + "172.16.0.0/24" + ], + "approved_routes": [ + "172.16.0.0/24" + ] }, "subnet-router": { "hostname": "subnet-router", - "tags": ["tag:router"], + "tags": [ + "tag:router" + ], "ipv4": "100.92.142.61", "ipv6": "fd7a:115c:a1e0::3e37:8e3d", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] + "routable_ips": [ + "10.33.0.0/16" + ], + "approved_routes": [ + "10.33.0.0/16" + ] }, "tagged-client": { "hostname": "tagged-client", - "tags": ["tag:client"], + "tags": [ + "tag:client" + ], "ipv4": "100.83.200.69", "ipv6": "fd7a:115c:a1e0::c537:c845" }, "tagged-prod": { "hostname": "tagged-prod", - "tags": ["tag:prod"], + "tags": [ + "tag:prod" + ], "ipv4": "100.103.8.15", "ipv6": "fd7a:115c:a1e0::5b37:80f" }, "tagged-server": { "hostname": "tagged-server", - "tags": ["tag:server"], + "tags": [ + "tag:server" + ], "ipv4": "100.108.74.26", "ipv6": "fd7a:115c:a1e0::b901:4a87" }, diff --git a/hscontrol/policy/v2/testdata/routes_results/ROUTES-e5_first_advertiser_is_primary.hujson b/hscontrol/policy/v2/testdata/routes_results/ROUTES-e5_first_advertiser_is_primary.hujson index c9ca7ed4c..8853942cd 100644 --- a/hscontrol/policy/v2/testdata/routes_results/ROUTES-e5_first_advertiser_is_primary.hujson +++ b/hscontrol/policy/v2/testdata/routes_results/ROUTES-e5_first_advertiser_is_primary.hujson @@ -7,24 +7,40 @@ // Expected: Rules on 2 of 12 nodes { "test_id": "ROUTES-e5_first_advertiser_is_primary", - "timestamp": "2026-03-17T16:19:18Z", - "propagation_wait_seconds": 10, "input": { - "policy_file": "routes_policies/routes_e5_first_advertiser_is_primary.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"], - "tag:ha": ["kratail2tid@passkey"] + "tag:server": [ + "kratail2tid@passkey" + ], + "tag:prod": [ + "kratail2tid@passkey" + ], + "tag:client": [ + "kratail2tid@passkey" + ], + "tag:router": [ + "kratail2tid@passkey" + ], + "tag:exit": [ + "kratail2tid@passkey" + ], + "tag:ha": [ + "kratail2tid@passkey" + ] }, "hosts": { "webserver": "100.108.74.26", @@ -34,89 +50,146 @@ }, "autoApprovers": { "routes": { - "10.0.0.0/8": ["tag:router"], - "172.16.0.0/12": ["tag:router"], - "192.168.0.0/16": ["tag:ha"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.0.0.0/8": [ + "tag:router" + ], + "172.16.0.0/12": [ + "tag:router" + ], + "192.168.0.0/16": [ + "tag:ha" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "acls": [ { "action": "accept", - "src": ["*"], - "dst": ["192.168.1.0/24:*"] + "src": [ + "*" + ], + "dst": [ + "192.168.1.0/24:*" + ] } ] - }, - "api_endpoint": "https://api.tailscale.com/api/v2/tailnet/kratail2tid%40passkey/acl", - "api_response_code": 200 + } }, "topology": { "nodes": { "big-router": { "hostname": "big-router", - "tags": ["tag:router"], + "tags": [ + "tag:router" + ], "ipv4": "100.97.174.21", "ipv6": "fd7a:115c:a1e0::5137:ae15", - "routable_ips": ["10.0.0.0/8"], - "approved_routes": ["10.0.0.0/8"] + "routable_ips": [ + "10.0.0.0/8" + ], + "approved_routes": [ + "10.0.0.0/8" + ] }, "exit-node": { "hostname": "exit-node", - "tags": ["tag:exit"], + "tags": [ + "tag:exit" + ], "ipv4": "100.85.66.106", "ipv6": "fd7a:115c:a1e0::7c37:426a", - "routable_ips": ["0.0.0.0/0", "::/0"], - "approved_routes": ["0.0.0.0/0", "::/0"] + "routable_ips": [ + "0.0.0.0/0", + "::/0" + ], + "approved_routes": [ + "0.0.0.0/0", + "::/0" + ] }, "ha-router1": { "hostname": "ha-router1", - "tags": ["tag:ha"], + "tags": [ + "tag:ha" + ], "ipv4": "100.121.186.70", "ipv6": "fd7a:115c:a1e0::6737:ba46", - "routable_ips": ["192.168.1.0/24"], - "approved_routes": ["192.168.1.0/24"] + "routable_ips": [ + "192.168.1.0/24" + ], + "approved_routes": [ + "192.168.1.0/24" + ] }, "ha-router2": { "hostname": "ha-router2", - "tags": ["tag:ha"], + "tags": [ + "tag:ha" + ], "ipv4": "100.117.104.82", "ipv6": "fd7a:115c:a1e0::7437:6852", - "routable_ips": ["192.168.1.0/24"], - "approved_routes": ["192.168.1.0/24"] + "routable_ips": [ + "192.168.1.0/24" + ], + "approved_routes": [ + "192.168.1.0/24" + ] }, "multi-router": { "hostname": "multi-router", - "tags": ["tag:exit", "tag:router"], + "tags": [ + "tag:exit", + "tag:router" + ], "ipv4": "100.119.241.111", "ipv6": "fd7a:115c:a1e0::3337:f16f", - "routable_ips": ["172.16.0.0/24"], - "approved_routes": ["172.16.0.0/24"] + "routable_ips": [ + "172.16.0.0/24" + ], + "approved_routes": [ + "172.16.0.0/24" + ] }, "subnet-router": { "hostname": "subnet-router", - "tags": ["tag:router"], + "tags": [ + "tag:router" + ], "ipv4": "100.92.142.61", "ipv6": "fd7a:115c:a1e0::3e37:8e3d", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] + "routable_ips": [ + "10.33.0.0/16" + ], + "approved_routes": [ + "10.33.0.0/16" + ] }, "tagged-client": { "hostname": "tagged-client", - "tags": ["tag:client"], + "tags": [ + "tag:client" + ], "ipv4": "100.83.200.69", "ipv6": "fd7a:115c:a1e0::c537:c845" }, "tagged-prod": { "hostname": "tagged-prod", - "tags": ["tag:prod"], + "tags": [ + "tag:prod" + ], "ipv4": "100.103.8.15", "ipv6": "fd7a:115c:a1e0::5b37:80f" }, "tagged-server": { "hostname": "tagged-server", - "tags": ["tag:server"], + "tags": [ + "tag:server" + ], "ipv4": "100.108.74.26", "ipv6": "fd7a:115c:a1e0::b901:4a87" }, diff --git a/hscontrol/policy/v2/testdata/routes_results/ROUTES-f1_filter_on_destination_not_source.hujson b/hscontrol/policy/v2/testdata/routes_results/ROUTES-f1_filter_on_destination_not_source.hujson index 4c624d5b8..1f5f707d2 100644 --- a/hscontrol/policy/v2/testdata/routes_results/ROUTES-f1_filter_on_destination_not_source.hujson +++ b/hscontrol/policy/v2/testdata/routes_results/ROUTES-f1_filter_on_destination_not_source.hujson @@ -7,24 +7,40 @@ // Expected: Rules on 2 of 12 nodes { "test_id": "ROUTES-f1_filter_on_destination_not_source", - "timestamp": "2026-03-17T16:19:29Z", - "propagation_wait_seconds": 10, "input": { - "policy_file": "routes_policies/routes_f1_filter_on_destination_not_source.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"], - "tag:ha": ["kratail2tid@passkey"] + "tag:server": [ + "kratail2tid@passkey" + ], + "tag:prod": [ + "kratail2tid@passkey" + ], + "tag:client": [ + "kratail2tid@passkey" + ], + "tag:router": [ + "kratail2tid@passkey" + ], + "tag:exit": [ + "kratail2tid@passkey" + ], + "tag:ha": [ + "kratail2tid@passkey" + ] }, "hosts": { "webserver": "100.108.74.26", @@ -34,89 +50,146 @@ }, "autoApprovers": { "routes": { - "10.0.0.0/8": ["tag:router"], - "172.16.0.0/12": ["tag:router"], - "192.168.0.0/16": ["tag:ha"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.0.0.0/8": [ + "tag:router" + ], + "172.16.0.0/12": [ + "tag:router" + ], + "192.168.0.0/16": [ + "tag:ha" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "acls": [ { "action": "accept", - "src": ["autogroup:member"], - "dst": ["10.33.0.0/16:22"] + "src": [ + "autogroup:member" + ], + "dst": [ + "10.33.0.0/16:22" + ] } ] - }, - "api_endpoint": "https://api.tailscale.com/api/v2/tailnet/kratail2tid%40passkey/acl", - "api_response_code": 200 + } }, "topology": { "nodes": { "big-router": { "hostname": "big-router", - "tags": ["tag:router"], + "tags": [ + "tag:router" + ], "ipv4": "100.97.174.21", "ipv6": "fd7a:115c:a1e0::5137:ae15", - "routable_ips": ["10.0.0.0/8"], - "approved_routes": ["10.0.0.0/8"] + "routable_ips": [ + "10.0.0.0/8" + ], + "approved_routes": [ + "10.0.0.0/8" + ] }, "exit-node": { "hostname": "exit-node", - "tags": ["tag:exit"], + "tags": [ + "tag:exit" + ], "ipv4": "100.85.66.106", "ipv6": "fd7a:115c:a1e0::7c37:426a", - "routable_ips": ["0.0.0.0/0", "::/0"], - "approved_routes": ["0.0.0.0/0", "::/0"] + "routable_ips": [ + "0.0.0.0/0", + "::/0" + ], + "approved_routes": [ + "0.0.0.0/0", + "::/0" + ] }, "ha-router1": { "hostname": "ha-router1", - "tags": ["tag:ha"], + "tags": [ + "tag:ha" + ], "ipv4": "100.121.186.70", "ipv6": "fd7a:115c:a1e0::6737:ba46", - "routable_ips": ["192.168.1.0/24"], - "approved_routes": ["192.168.1.0/24"] + "routable_ips": [ + "192.168.1.0/24" + ], + "approved_routes": [ + "192.168.1.0/24" + ] }, "ha-router2": { "hostname": "ha-router2", - "tags": ["tag:ha"], + "tags": [ + "tag:ha" + ], "ipv4": "100.117.104.82", "ipv6": "fd7a:115c:a1e0::7437:6852", - "routable_ips": ["192.168.1.0/24"], - "approved_routes": ["192.168.1.0/24"] + "routable_ips": [ + "192.168.1.0/24" + ], + "approved_routes": [ + "192.168.1.0/24" + ] }, "multi-router": { "hostname": "multi-router", - "tags": ["tag:exit", "tag:router"], + "tags": [ + "tag:exit", + "tag:router" + ], "ipv4": "100.119.241.111", "ipv6": "fd7a:115c:a1e0::3337:f16f", - "routable_ips": ["172.16.0.0/24"], - "approved_routes": ["172.16.0.0/24"] + "routable_ips": [ + "172.16.0.0/24" + ], + "approved_routes": [ + "172.16.0.0/24" + ] }, "subnet-router": { "hostname": "subnet-router", - "tags": ["tag:router"], + "tags": [ + "tag:router" + ], "ipv4": "100.92.142.61", "ipv6": "fd7a:115c:a1e0::3e37:8e3d", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] + "routable_ips": [ + "10.33.0.0/16" + ], + "approved_routes": [ + "10.33.0.0/16" + ] }, "tagged-client": { "hostname": "tagged-client", - "tags": ["tag:client"], + "tags": [ + "tag:client" + ], "ipv4": "100.83.200.69", "ipv6": "fd7a:115c:a1e0::c537:c845" }, "tagged-prod": { "hostname": "tagged-prod", - "tags": ["tag:prod"], + "tags": [ + "tag:prod" + ], "ipv4": "100.103.8.15", "ipv6": "fd7a:115c:a1e0::5b37:80f" }, "tagged-server": { "hostname": "tagged-server", - "tags": ["tag:server"], + "tags": [ + "tag:server" + ], "ipv4": "100.108.74.26", "ipv6": "fd7a:115c:a1e0::b901:4a87" }, diff --git a/hscontrol/policy/v2/testdata/routes_results/ROUTES-f2_subnet_as_acl_source.hujson b/hscontrol/policy/v2/testdata/routes_results/ROUTES-f2_subnet_as_acl_source.hujson index 1273baa6f..2d7ee79c6 100644 --- a/hscontrol/policy/v2/testdata/routes_results/ROUTES-f2_subnet_as_acl_source.hujson +++ b/hscontrol/policy/v2/testdata/routes_results/ROUTES-f2_subnet_as_acl_source.hujson @@ -7,24 +7,40 @@ // Expected: Rules on 3 of 12 nodes { "test_id": "ROUTES-f2_subnet_as_acl_source", - "timestamp": "2026-03-17T16:19:39Z", - "propagation_wait_seconds": 10, "input": { - "policy_file": "routes_policies/routes_f2_subnet_as_acl_source.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"], - "tag:ha": ["kratail2tid@passkey"] + "tag:server": [ + "kratail2tid@passkey" + ], + "tag:prod": [ + "kratail2tid@passkey" + ], + "tag:client": [ + "kratail2tid@passkey" + ], + "tag:router": [ + "kratail2tid@passkey" + ], + "tag:exit": [ + "kratail2tid@passkey" + ], + "tag:ha": [ + "kratail2tid@passkey" + ] }, "hosts": { "webserver": "100.108.74.26", @@ -34,89 +50,146 @@ }, "autoApprovers": { "routes": { - "10.0.0.0/8": ["tag:router"], - "172.16.0.0/12": ["tag:router"], - "192.168.0.0/16": ["tag:ha"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.0.0.0/8": [ + "tag:router" + ], + "172.16.0.0/12": [ + "tag:router" + ], + "192.168.0.0/16": [ + "tag:ha" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "acls": [ { "action": "accept", - "src": ["10.33.0.0/16"], - "dst": ["autogroup:member:*"] + "src": [ + "10.33.0.0/16" + ], + "dst": [ + "autogroup:member:*" + ] } ] - }, - "api_endpoint": "https://api.tailscale.com/api/v2/tailnet/kratail2tid%40passkey/acl", - "api_response_code": 200 + } }, "topology": { "nodes": { "big-router": { "hostname": "big-router", - "tags": ["tag:router"], + "tags": [ + "tag:router" + ], "ipv4": "100.97.174.21", "ipv6": "fd7a:115c:a1e0::5137:ae15", - "routable_ips": ["10.0.0.0/8"], - "approved_routes": ["10.0.0.0/8"] + "routable_ips": [ + "10.0.0.0/8" + ], + "approved_routes": [ + "10.0.0.0/8" + ] }, "exit-node": { "hostname": "exit-node", - "tags": ["tag:exit"], + "tags": [ + "tag:exit" + ], "ipv4": "100.85.66.106", "ipv6": "fd7a:115c:a1e0::7c37:426a", - "routable_ips": ["0.0.0.0/0", "::/0"], - "approved_routes": ["0.0.0.0/0", "::/0"] + "routable_ips": [ + "0.0.0.0/0", + "::/0" + ], + "approved_routes": [ + "0.0.0.0/0", + "::/0" + ] }, "ha-router1": { "hostname": "ha-router1", - "tags": ["tag:ha"], + "tags": [ + "tag:ha" + ], "ipv4": "100.121.186.70", "ipv6": "fd7a:115c:a1e0::6737:ba46", - "routable_ips": ["192.168.1.0/24"], - "approved_routes": ["192.168.1.0/24"] + "routable_ips": [ + "192.168.1.0/24" + ], + "approved_routes": [ + "192.168.1.0/24" + ] }, "ha-router2": { "hostname": "ha-router2", - "tags": ["tag:ha"], + "tags": [ + "tag:ha" + ], "ipv4": "100.117.104.82", "ipv6": "fd7a:115c:a1e0::7437:6852", - "routable_ips": ["192.168.1.0/24"], - "approved_routes": ["192.168.1.0/24"] + "routable_ips": [ + "192.168.1.0/24" + ], + "approved_routes": [ + "192.168.1.0/24" + ] }, "multi-router": { "hostname": "multi-router", - "tags": ["tag:exit", "tag:router"], + "tags": [ + "tag:exit", + "tag:router" + ], "ipv4": "100.119.241.111", "ipv6": "fd7a:115c:a1e0::3337:f16f", - "routable_ips": ["172.16.0.0/24"], - "approved_routes": ["172.16.0.0/24"] + "routable_ips": [ + "172.16.0.0/24" + ], + "approved_routes": [ + "172.16.0.0/24" + ] }, "subnet-router": { "hostname": "subnet-router", - "tags": ["tag:router"], + "tags": [ + "tag:router" + ], "ipv4": "100.92.142.61", "ipv6": "fd7a:115c:a1e0::3e37:8e3d", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] + "routable_ips": [ + "10.33.0.0/16" + ], + "approved_routes": [ + "10.33.0.0/16" + ] }, "tagged-client": { "hostname": "tagged-client", - "tags": ["tag:client"], + "tags": [ + "tag:client" + ], "ipv4": "100.83.200.69", "ipv6": "fd7a:115c:a1e0::c537:c845" }, "tagged-prod": { "hostname": "tagged-prod", - "tags": ["tag:prod"], + "tags": [ + "tag:prod" + ], "ipv4": "100.103.8.15", "ipv6": "fd7a:115c:a1e0::5b37:80f" }, "tagged-server": { "hostname": "tagged-server", - "tags": ["tag:server"], + "tags": [ + "tag:server" + ], "ipv4": "100.108.74.26", "ipv6": "fd7a:115c:a1e0::b901:4a87" }, @@ -171,7 +244,9 @@ "user-kris": { "packet_filter_rules": [ { - "SrcIPs": ["10.33.0.0/16"], + "SrcIPs": [ + "10.33.0.0/16" + ], "DstPorts": [ { "IP": "100.110.121.96", @@ -194,7 +269,9 @@ "user-mon": { "packet_filter_rules": [ { - "SrcIPs": ["10.33.0.0/16"], + "SrcIPs": [ + "10.33.0.0/16" + ], "DstPorts": [ { "IP": "100.103.90.82", @@ -217,7 +294,9 @@ "user1": { "packet_filter_rules": [ { - "SrcIPs": ["10.33.0.0/16"], + "SrcIPs": [ + "10.33.0.0/16" + ], "DstPorts": [ { "IP": "100.90.199.68", diff --git a/hscontrol/policy/v2/testdata/routes_results/ROUTES-f3_wildcard_src_specific_dst.hujson b/hscontrol/policy/v2/testdata/routes_results/ROUTES-f3_wildcard_src_specific_dst.hujson index d7079826d..6b6210b49 100644 --- a/hscontrol/policy/v2/testdata/routes_results/ROUTES-f3_wildcard_src_specific_dst.hujson +++ b/hscontrol/policy/v2/testdata/routes_results/ROUTES-f3_wildcard_src_specific_dst.hujson @@ -7,24 +7,40 @@ // Expected: Rules on 2 of 12 nodes { "test_id": "ROUTES-f3_wildcard_src_specific_dst", - "timestamp": "2026-03-17T16:19:50Z", - "propagation_wait_seconds": 10, "input": { - "policy_file": "routes_policies/routes_f3_wildcard_src_specific_dst.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"], - "tag:ha": ["kratail2tid@passkey"] + "tag:server": [ + "kratail2tid@passkey" + ], + "tag:prod": [ + "kratail2tid@passkey" + ], + "tag:client": [ + "kratail2tid@passkey" + ], + "tag:router": [ + "kratail2tid@passkey" + ], + "tag:exit": [ + "kratail2tid@passkey" + ], + "tag:ha": [ + "kratail2tid@passkey" + ] }, "hosts": { "webserver": "100.108.74.26", @@ -34,89 +50,146 @@ }, "autoApprovers": { "routes": { - "10.0.0.0/8": ["tag:router"], - "172.16.0.0/12": ["tag:router"], - "192.168.0.0/16": ["tag:ha"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.0.0.0/8": [ + "tag:router" + ], + "172.16.0.0/12": [ + "tag:router" + ], + "192.168.0.0/16": [ + "tag:ha" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "acls": [ { "action": "accept", - "src": ["*"], - "dst": ["10.33.0.0/16:22"] + "src": [ + "*" + ], + "dst": [ + "10.33.0.0/16:22" + ] } ] - }, - "api_endpoint": "https://api.tailscale.com/api/v2/tailnet/kratail2tid%40passkey/acl", - "api_response_code": 200 + } }, "topology": { "nodes": { "big-router": { "hostname": "big-router", - "tags": ["tag:router"], + "tags": [ + "tag:router" + ], "ipv4": "100.97.174.21", "ipv6": "fd7a:115c:a1e0::5137:ae15", - "routable_ips": ["10.0.0.0/8"], - "approved_routes": ["10.0.0.0/8"] + "routable_ips": [ + "10.0.0.0/8" + ], + "approved_routes": [ + "10.0.0.0/8" + ] }, "exit-node": { "hostname": "exit-node", - "tags": ["tag:exit"], + "tags": [ + "tag:exit" + ], "ipv4": "100.85.66.106", "ipv6": "fd7a:115c:a1e0::7c37:426a", - "routable_ips": ["0.0.0.0/0", "::/0"], - "approved_routes": ["0.0.0.0/0", "::/0"] + "routable_ips": [ + "0.0.0.0/0", + "::/0" + ], + "approved_routes": [ + "0.0.0.0/0", + "::/0" + ] }, "ha-router1": { "hostname": "ha-router1", - "tags": ["tag:ha"], + "tags": [ + "tag:ha" + ], "ipv4": "100.121.186.70", "ipv6": "fd7a:115c:a1e0::6737:ba46", - "routable_ips": ["192.168.1.0/24"], - "approved_routes": ["192.168.1.0/24"] + "routable_ips": [ + "192.168.1.0/24" + ], + "approved_routes": [ + "192.168.1.0/24" + ] }, "ha-router2": { "hostname": "ha-router2", - "tags": ["tag:ha"], + "tags": [ + "tag:ha" + ], "ipv4": "100.117.104.82", "ipv6": "fd7a:115c:a1e0::7437:6852", - "routable_ips": ["192.168.1.0/24"], - "approved_routes": ["192.168.1.0/24"] + "routable_ips": [ + "192.168.1.0/24" + ], + "approved_routes": [ + "192.168.1.0/24" + ] }, "multi-router": { "hostname": "multi-router", - "tags": ["tag:exit", "tag:router"], + "tags": [ + "tag:exit", + "tag:router" + ], "ipv4": "100.119.241.111", "ipv6": "fd7a:115c:a1e0::3337:f16f", - "routable_ips": ["172.16.0.0/24"], - "approved_routes": ["172.16.0.0/24"] + "routable_ips": [ + "172.16.0.0/24" + ], + "approved_routes": [ + "172.16.0.0/24" + ] }, "subnet-router": { "hostname": "subnet-router", - "tags": ["tag:router"], + "tags": [ + "tag:router" + ], "ipv4": "100.92.142.61", "ipv6": "fd7a:115c:a1e0::3e37:8e3d", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] + "routable_ips": [ + "10.33.0.0/16" + ], + "approved_routes": [ + "10.33.0.0/16" + ] }, "tagged-client": { "hostname": "tagged-client", - "tags": ["tag:client"], + "tags": [ + "tag:client" + ], "ipv4": "100.83.200.69", "ipv6": "fd7a:115c:a1e0::c537:c845" }, "tagged-prod": { "hostname": "tagged-prod", - "tags": ["tag:prod"], + "tags": [ + "tag:prod" + ], "ipv4": "100.103.8.15", "ipv6": "fd7a:115c:a1e0::5b37:80f" }, "tagged-server": { "hostname": "tagged-server", - "tags": ["tag:server"], + "tags": [ + "tag:server" + ], "ipv4": "100.108.74.26", "ipv6": "fd7a:115c:a1e0::b901:4a87" }, diff --git a/hscontrol/policy/v2/testdata/routes_results/ROUTES-f4_specific_src_wildcard_dst.hujson b/hscontrol/policy/v2/testdata/routes_results/ROUTES-f4_specific_src_wildcard_dst.hujson index 2b4e9d410..c40cd2148 100644 --- a/hscontrol/policy/v2/testdata/routes_results/ROUTES-f4_specific_src_wildcard_dst.hujson +++ b/hscontrol/policy/v2/testdata/routes_results/ROUTES-f4_specific_src_wildcard_dst.hujson @@ -7,24 +7,40 @@ // Expected: Rules on 12 of 12 nodes { "test_id": "ROUTES-f4_specific_src_wildcard_dst", - "timestamp": "2026-03-17T16:20:01Z", - "propagation_wait_seconds": 10, "input": { - "policy_file": "routes_policies/routes_f4_specific_src_wildcard_dst.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"], - "tag:ha": ["kratail2tid@passkey"] + "tag:server": [ + "kratail2tid@passkey" + ], + "tag:prod": [ + "kratail2tid@passkey" + ], + "tag:client": [ + "kratail2tid@passkey" + ], + "tag:router": [ + "kratail2tid@passkey" + ], + "tag:exit": [ + "kratail2tid@passkey" + ], + "tag:ha": [ + "kratail2tid@passkey" + ] }, "hosts": { "webserver": "100.108.74.26", @@ -34,89 +50,146 @@ }, "autoApprovers": { "routes": { - "10.0.0.0/8": ["tag:router"], - "172.16.0.0/12": ["tag:router"], - "192.168.0.0/16": ["tag:ha"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.0.0.0/8": [ + "tag:router" + ], + "172.16.0.0/12": [ + "tag:router" + ], + "192.168.0.0/16": [ + "tag:ha" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "acls": [ { "action": "accept", - "src": ["tag:router"], - "dst": ["*:*"] + "src": [ + "tag:router" + ], + "dst": [ + "*:*" + ] } ] - }, - "api_endpoint": "https://api.tailscale.com/api/v2/tailnet/kratail2tid%40passkey/acl", - "api_response_code": 200 + } }, "topology": { "nodes": { "big-router": { "hostname": "big-router", - "tags": ["tag:router"], + "tags": [ + "tag:router" + ], "ipv4": "100.97.174.21", "ipv6": "fd7a:115c:a1e0::5137:ae15", - "routable_ips": ["10.0.0.0/8"], - "approved_routes": ["10.0.0.0/8"] + "routable_ips": [ + "10.0.0.0/8" + ], + "approved_routes": [ + "10.0.0.0/8" + ] }, "exit-node": { "hostname": "exit-node", - "tags": ["tag:exit"], + "tags": [ + "tag:exit" + ], "ipv4": "100.85.66.106", "ipv6": "fd7a:115c:a1e0::7c37:426a", - "routable_ips": ["0.0.0.0/0", "::/0"], - "approved_routes": ["0.0.0.0/0", "::/0"] + "routable_ips": [ + "0.0.0.0/0", + "::/0" + ], + "approved_routes": [ + "0.0.0.0/0", + "::/0" + ] }, "ha-router1": { "hostname": "ha-router1", - "tags": ["tag:ha"], + "tags": [ + "tag:ha" + ], "ipv4": "100.121.186.70", "ipv6": "fd7a:115c:a1e0::6737:ba46", - "routable_ips": ["192.168.1.0/24"], - "approved_routes": ["192.168.1.0/24"] + "routable_ips": [ + "192.168.1.0/24" + ], + "approved_routes": [ + "192.168.1.0/24" + ] }, "ha-router2": { "hostname": "ha-router2", - "tags": ["tag:ha"], + "tags": [ + "tag:ha" + ], "ipv4": "100.117.104.82", "ipv6": "fd7a:115c:a1e0::7437:6852", - "routable_ips": ["192.168.1.0/24"], - "approved_routes": ["192.168.1.0/24"] + "routable_ips": [ + "192.168.1.0/24" + ], + "approved_routes": [ + "192.168.1.0/24" + ] }, "multi-router": { "hostname": "multi-router", - "tags": ["tag:exit", "tag:router"], + "tags": [ + "tag:exit", + "tag:router" + ], "ipv4": "100.119.241.111", "ipv6": "fd7a:115c:a1e0::3337:f16f", - "routable_ips": ["172.16.0.0/24"], - "approved_routes": ["172.16.0.0/24"] + "routable_ips": [ + "172.16.0.0/24" + ], + "approved_routes": [ + "172.16.0.0/24" + ] }, "subnet-router": { "hostname": "subnet-router", - "tags": ["tag:router"], + "tags": [ + "tag:router" + ], "ipv4": "100.92.142.61", "ipv6": "fd7a:115c:a1e0::3e37:8e3d", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] + "routable_ips": [ + "10.33.0.0/16" + ], + "approved_routes": [ + "10.33.0.0/16" + ] }, "tagged-client": { "hostname": "tagged-client", - "tags": ["tag:client"], + "tags": [ + "tag:client" + ], "ipv4": "100.83.200.69", "ipv6": "fd7a:115c:a1e0::c537:c845" }, "tagged-prod": { "hostname": "tagged-prod", - "tags": ["tag:prod"], + "tags": [ + "tag:prod" + ], "ipv4": "100.103.8.15", "ipv6": "fd7a:115c:a1e0::5b37:80f" }, "tagged-server": { "hostname": "tagged-server", - "tags": ["tag:server"], + "tags": [ + "tag:server" + ], "ipv4": "100.108.74.26", "ipv6": "fd7a:115c:a1e0::b901:4a87" }, diff --git a/hscontrol/policy/v2/testdata/routes_results/ROUTES-f5_bidirectional_subnet_access.hujson b/hscontrol/policy/v2/testdata/routes_results/ROUTES-f5_bidirectional_subnet_access.hujson index e431f2b48..60de3a15b 100644 --- a/hscontrol/policy/v2/testdata/routes_results/ROUTES-f5_bidirectional_subnet_access.hujson +++ b/hscontrol/policy/v2/testdata/routes_results/ROUTES-f5_bidirectional_subnet_access.hujson @@ -9,24 +9,40 @@ // Expected: Rules on 5 of 12 nodes { "test_id": "ROUTES-f5_bidirectional_subnet_access", - "timestamp": "2026-03-17T16:20:11Z", - "propagation_wait_seconds": 10, "input": { - "policy_file": "routes_policies/routes_f5_bidirectional_subnet_access.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"], - "tag:ha": ["kratail2tid@passkey"] + "tag:server": [ + "kratail2tid@passkey" + ], + "tag:prod": [ + "kratail2tid@passkey" + ], + "tag:client": [ + "kratail2tid@passkey" + ], + "tag:router": [ + "kratail2tid@passkey" + ], + "tag:exit": [ + "kratail2tid@passkey" + ], + "tag:ha": [ + "kratail2tid@passkey" + ] }, "hosts": { "webserver": "100.108.74.26", @@ -36,94 +52,155 @@ }, "autoApprovers": { "routes": { - "10.0.0.0/8": ["tag:router"], - "172.16.0.0/12": ["tag:router"], - "192.168.0.0/16": ["tag:ha"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.0.0.0/8": [ + "tag:router" + ], + "172.16.0.0/12": [ + "tag:router" + ], + "192.168.0.0/16": [ + "tag:ha" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "acls": [ { "action": "accept", - "src": ["autogroup:member"], - "dst": ["10.33.0.0/16:*"] + "src": [ + "autogroup:member" + ], + "dst": [ + "10.33.0.0/16:*" + ] }, { "action": "accept", - "src": ["10.33.0.0/16"], - "dst": ["autogroup:member:*"] + "src": [ + "10.33.0.0/16" + ], + "dst": [ + "autogroup:member:*" + ] } ] - }, - "api_endpoint": "https://api.tailscale.com/api/v2/tailnet/kratail2tid%40passkey/acl", - "api_response_code": 200 + } }, "topology": { "nodes": { "big-router": { "hostname": "big-router", - "tags": ["tag:router"], + "tags": [ + "tag:router" + ], "ipv4": "100.97.174.21", "ipv6": "fd7a:115c:a1e0::5137:ae15", - "routable_ips": ["10.0.0.0/8"], - "approved_routes": ["10.0.0.0/8"] + "routable_ips": [ + "10.0.0.0/8" + ], + "approved_routes": [ + "10.0.0.0/8" + ] }, "exit-node": { "hostname": "exit-node", - "tags": ["tag:exit"], + "tags": [ + "tag:exit" + ], "ipv4": "100.85.66.106", "ipv6": "fd7a:115c:a1e0::7c37:426a", - "routable_ips": ["0.0.0.0/0", "::/0"], - "approved_routes": ["0.0.0.0/0", "::/0"] + "routable_ips": [ + "0.0.0.0/0", + "::/0" + ], + "approved_routes": [ + "0.0.0.0/0", + "::/0" + ] }, "ha-router1": { "hostname": "ha-router1", - "tags": ["tag:ha"], + "tags": [ + "tag:ha" + ], "ipv4": "100.121.186.70", "ipv6": "fd7a:115c:a1e0::6737:ba46", - "routable_ips": ["192.168.1.0/24"], - "approved_routes": ["192.168.1.0/24"] + "routable_ips": [ + "192.168.1.0/24" + ], + "approved_routes": [ + "192.168.1.0/24" + ] }, "ha-router2": { "hostname": "ha-router2", - "tags": ["tag:ha"], + "tags": [ + "tag:ha" + ], "ipv4": "100.117.104.82", "ipv6": "fd7a:115c:a1e0::7437:6852", - "routable_ips": ["192.168.1.0/24"], - "approved_routes": ["192.168.1.0/24"] + "routable_ips": [ + "192.168.1.0/24" + ], + "approved_routes": [ + "192.168.1.0/24" + ] }, "multi-router": { "hostname": "multi-router", - "tags": ["tag:exit", "tag:router"], + "tags": [ + "tag:exit", + "tag:router" + ], "ipv4": "100.119.241.111", "ipv6": "fd7a:115c:a1e0::3337:f16f", - "routable_ips": ["172.16.0.0/24"], - "approved_routes": ["172.16.0.0/24"] + "routable_ips": [ + "172.16.0.0/24" + ], + "approved_routes": [ + "172.16.0.0/24" + ] }, "subnet-router": { "hostname": "subnet-router", - "tags": ["tag:router"], + "tags": [ + "tag:router" + ], "ipv4": "100.92.142.61", "ipv6": "fd7a:115c:a1e0::3e37:8e3d", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] + "routable_ips": [ + "10.33.0.0/16" + ], + "approved_routes": [ + "10.33.0.0/16" + ] }, "tagged-client": { "hostname": "tagged-client", - "tags": ["tag:client"], + "tags": [ + "tag:client" + ], "ipv4": "100.83.200.69", "ipv6": "fd7a:115c:a1e0::c537:c845" }, "tagged-prod": { "hostname": "tagged-prod", - "tags": ["tag:prod"], + "tags": [ + "tag:prod" + ], "ipv4": "100.103.8.15", "ipv6": "fd7a:115c:a1e0::5b37:80f" }, "tagged-server": { "hostname": "tagged-server", - "tags": ["tag:server"], + "tags": [ + "tag:server" + ], "ipv4": "100.108.74.26", "ipv6": "fd7a:115c:a1e0::b901:4a87" }, @@ -218,7 +295,9 @@ "user-kris": { "packet_filter_rules": [ { - "SrcIPs": ["10.33.0.0/16"], + "SrcIPs": [ + "10.33.0.0/16" + ], "DstPorts": [ { "IP": "100.110.121.96", @@ -241,7 +320,9 @@ "user-mon": { "packet_filter_rules": [ { - "SrcIPs": ["10.33.0.0/16"], + "SrcIPs": [ + "10.33.0.0/16" + ], "DstPorts": [ { "IP": "100.103.90.82", @@ -264,7 +345,9 @@ "user1": { "packet_filter_rules": [ { - "SrcIPs": ["10.33.0.0/16"], + "SrcIPs": [ + "10.33.0.0/16" + ], "DstPorts": [ { "IP": "100.90.199.68", diff --git a/hscontrol/policy/v2/testdata/routes_results/ROUTES-f6_filter_srcips_expansion.hujson b/hscontrol/policy/v2/testdata/routes_results/ROUTES-f6_filter_srcips_expansion.hujson index 7474b7344..fcd7e91fc 100644 --- a/hscontrol/policy/v2/testdata/routes_results/ROUTES-f6_filter_srcips_expansion.hujson +++ b/hscontrol/policy/v2/testdata/routes_results/ROUTES-f6_filter_srcips_expansion.hujson @@ -7,24 +7,40 @@ // Expected: Rules on 2 of 12 nodes { "test_id": "ROUTES-f6_filter_srcips_expansion", - "timestamp": "2026-03-17T16:20:22Z", - "propagation_wait_seconds": 10, "input": { - "policy_file": "routes_policies/routes_f6_filter_srcips_expansion.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"], - "tag:ha": ["kratail2tid@passkey"] + "tag:server": [ + "kratail2tid@passkey" + ], + "tag:prod": [ + "kratail2tid@passkey" + ], + "tag:client": [ + "kratail2tid@passkey" + ], + "tag:router": [ + "kratail2tid@passkey" + ], + "tag:exit": [ + "kratail2tid@passkey" + ], + "tag:ha": [ + "kratail2tid@passkey" + ] }, "hosts": { "webserver": "100.108.74.26", @@ -34,89 +50,146 @@ }, "autoApprovers": { "routes": { - "10.0.0.0/8": ["tag:router"], - "172.16.0.0/12": ["tag:router"], - "192.168.0.0/16": ["tag:ha"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.0.0.0/8": [ + "tag:router" + ], + "172.16.0.0/12": [ + "tag:router" + ], + "192.168.0.0/16": [ + "tag:ha" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "acls": [ { "action": "accept", - "src": ["autogroup:member"], - "dst": ["10.33.0.0/16:*"] + "src": [ + "autogroup:member" + ], + "dst": [ + "10.33.0.0/16:*" + ] } ] - }, - "api_endpoint": "https://api.tailscale.com/api/v2/tailnet/kratail2tid%40passkey/acl", - "api_response_code": 200 + } }, "topology": { "nodes": { "big-router": { "hostname": "big-router", - "tags": ["tag:router"], + "tags": [ + "tag:router" + ], "ipv4": "100.97.174.21", "ipv6": "fd7a:115c:a1e0::5137:ae15", - "routable_ips": ["10.0.0.0/8"], - "approved_routes": ["10.0.0.0/8"] + "routable_ips": [ + "10.0.0.0/8" + ], + "approved_routes": [ + "10.0.0.0/8" + ] }, "exit-node": { "hostname": "exit-node", - "tags": ["tag:exit"], + "tags": [ + "tag:exit" + ], "ipv4": "100.85.66.106", "ipv6": "fd7a:115c:a1e0::7c37:426a", - "routable_ips": ["0.0.0.0/0", "::/0"], - "approved_routes": ["0.0.0.0/0", "::/0"] + "routable_ips": [ + "0.0.0.0/0", + "::/0" + ], + "approved_routes": [ + "0.0.0.0/0", + "::/0" + ] }, "ha-router1": { "hostname": "ha-router1", - "tags": ["tag:ha"], + "tags": [ + "tag:ha" + ], "ipv4": "100.121.186.70", "ipv6": "fd7a:115c:a1e0::6737:ba46", - "routable_ips": ["192.168.1.0/24"], - "approved_routes": ["192.168.1.0/24"] + "routable_ips": [ + "192.168.1.0/24" + ], + "approved_routes": [ + "192.168.1.0/24" + ] }, "ha-router2": { "hostname": "ha-router2", - "tags": ["tag:ha"], + "tags": [ + "tag:ha" + ], "ipv4": "100.117.104.82", "ipv6": "fd7a:115c:a1e0::7437:6852", - "routable_ips": ["192.168.1.0/24"], - "approved_routes": ["192.168.1.0/24"] + "routable_ips": [ + "192.168.1.0/24" + ], + "approved_routes": [ + "192.168.1.0/24" + ] }, "multi-router": { "hostname": "multi-router", - "tags": ["tag:exit", "tag:router"], + "tags": [ + "tag:exit", + "tag:router" + ], "ipv4": "100.119.241.111", "ipv6": "fd7a:115c:a1e0::3337:f16f", - "routable_ips": ["172.16.0.0/24"], - "approved_routes": ["172.16.0.0/24"] + "routable_ips": [ + "172.16.0.0/24" + ], + "approved_routes": [ + "172.16.0.0/24" + ] }, "subnet-router": { "hostname": "subnet-router", - "tags": ["tag:router"], + "tags": [ + "tag:router" + ], "ipv4": "100.92.142.61", "ipv6": "fd7a:115c:a1e0::3e37:8e3d", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] + "routable_ips": [ + "10.33.0.0/16" + ], + "approved_routes": [ + "10.33.0.0/16" + ] }, "tagged-client": { "hostname": "tagged-client", - "tags": ["tag:client"], + "tags": [ + "tag:client" + ], "ipv4": "100.83.200.69", "ipv6": "fd7a:115c:a1e0::c537:c845" }, "tagged-prod": { "hostname": "tagged-prod", - "tags": ["tag:prod"], + "tags": [ + "tag:prod" + ], "ipv4": "100.103.8.15", "ipv6": "fd7a:115c:a1e0::5b37:80f" }, "tagged-server": { "hostname": "tagged-server", - "tags": ["tag:server"], + "tags": [ + "tag:server" + ], "ipv4": "100.108.74.26", "ipv6": "fd7a:115c:a1e0::b901:4a87" }, diff --git a/hscontrol/policy/v2/testdata/routes_results/ROUTES-f7_filter_dstports_shows_acl_cidr.hujson b/hscontrol/policy/v2/testdata/routes_results/ROUTES-f7_filter_dstports_shows_acl_cidr.hujson index 4a27a6243..43094ce8c 100644 --- a/hscontrol/policy/v2/testdata/routes_results/ROUTES-f7_filter_dstports_shows_acl_cidr.hujson +++ b/hscontrol/policy/v2/testdata/routes_results/ROUTES-f7_filter_dstports_shows_acl_cidr.hujson @@ -7,24 +7,40 @@ // Expected: Rules on 2 of 12 nodes { "test_id": "ROUTES-f7_filter_dstports_shows_acl_cidr", - "timestamp": "2026-03-17T16:20:32Z", - "propagation_wait_seconds": 10, "input": { - "policy_file": "routes_policies/routes_f7_filter_dstports_shows_acl_cidr.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"], - "tag:ha": ["kratail2tid@passkey"] + "tag:server": [ + "kratail2tid@passkey" + ], + "tag:prod": [ + "kratail2tid@passkey" + ], + "tag:client": [ + "kratail2tid@passkey" + ], + "tag:router": [ + "kratail2tid@passkey" + ], + "tag:exit": [ + "kratail2tid@passkey" + ], + "tag:ha": [ + "kratail2tid@passkey" + ] }, "hosts": { "webserver": "100.108.74.26", @@ -34,89 +50,146 @@ }, "autoApprovers": { "routes": { - "10.0.0.0/8": ["tag:router"], - "172.16.0.0/12": ["tag:router"], - "192.168.0.0/16": ["tag:ha"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.0.0.0/8": [ + "tag:router" + ], + "172.16.0.0/12": [ + "tag:router" + ], + "192.168.0.0/16": [ + "tag:ha" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "acls": [ { "action": "accept", - "src": ["*"], - "dst": ["10.33.1.0/24:22"] + "src": [ + "*" + ], + "dst": [ + "10.33.1.0/24:22" + ] } ] - }, - "api_endpoint": "https://api.tailscale.com/api/v2/tailnet/kratail2tid%40passkey/acl", - "api_response_code": 200 + } }, "topology": { "nodes": { "big-router": { "hostname": "big-router", - "tags": ["tag:router"], + "tags": [ + "tag:router" + ], "ipv4": "100.97.174.21", "ipv6": "fd7a:115c:a1e0::5137:ae15", - "routable_ips": ["10.0.0.0/8"], - "approved_routes": ["10.0.0.0/8"] + "routable_ips": [ + "10.0.0.0/8" + ], + "approved_routes": [ + "10.0.0.0/8" + ] }, "exit-node": { "hostname": "exit-node", - "tags": ["tag:exit"], + "tags": [ + "tag:exit" + ], "ipv4": "100.85.66.106", "ipv6": "fd7a:115c:a1e0::7c37:426a", - "routable_ips": ["0.0.0.0/0", "::/0"], - "approved_routes": ["0.0.0.0/0", "::/0"] + "routable_ips": [ + "0.0.0.0/0", + "::/0" + ], + "approved_routes": [ + "0.0.0.0/0", + "::/0" + ] }, "ha-router1": { "hostname": "ha-router1", - "tags": ["tag:ha"], + "tags": [ + "tag:ha" + ], "ipv4": "100.121.186.70", "ipv6": "fd7a:115c:a1e0::6737:ba46", - "routable_ips": ["192.168.1.0/24"], - "approved_routes": ["192.168.1.0/24"] + "routable_ips": [ + "192.168.1.0/24" + ], + "approved_routes": [ + "192.168.1.0/24" + ] }, "ha-router2": { "hostname": "ha-router2", - "tags": ["tag:ha"], + "tags": [ + "tag:ha" + ], "ipv4": "100.117.104.82", "ipv6": "fd7a:115c:a1e0::7437:6852", - "routable_ips": ["192.168.1.0/24"], - "approved_routes": ["192.168.1.0/24"] + "routable_ips": [ + "192.168.1.0/24" + ], + "approved_routes": [ + "192.168.1.0/24" + ] }, "multi-router": { "hostname": "multi-router", - "tags": ["tag:exit", "tag:router"], + "tags": [ + "tag:exit", + "tag:router" + ], "ipv4": "100.119.241.111", "ipv6": "fd7a:115c:a1e0::3337:f16f", - "routable_ips": ["172.16.0.0/24"], - "approved_routes": ["172.16.0.0/24"] + "routable_ips": [ + "172.16.0.0/24" + ], + "approved_routes": [ + "172.16.0.0/24" + ] }, "subnet-router": { "hostname": "subnet-router", - "tags": ["tag:router"], + "tags": [ + "tag:router" + ], "ipv4": "100.92.142.61", "ipv6": "fd7a:115c:a1e0::3e37:8e3d", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] + "routable_ips": [ + "10.33.0.0/16" + ], + "approved_routes": [ + "10.33.0.0/16" + ] }, "tagged-client": { "hostname": "tagged-client", - "tags": ["tag:client"], + "tags": [ + "tag:client" + ], "ipv4": "100.83.200.69", "ipv6": "fd7a:115c:a1e0::c537:c845" }, "tagged-prod": { "hostname": "tagged-prod", - "tags": ["tag:prod"], + "tags": [ + "tag:prod" + ], "ipv4": "100.103.8.15", "ipv6": "fd7a:115c:a1e0::5b37:80f" }, "tagged-server": { "hostname": "tagged-server", - "tags": ["tag:server"], + "tags": [ + "tag:server" + ], "ipv4": "100.108.74.26", "ipv6": "fd7a:115c:a1e0::b901:4a87" }, diff --git a/hscontrol/policy/v2/testdata/routes_results/ROUTES-f8_route_enabled_acl_denies.hujson b/hscontrol/policy/v2/testdata/routes_results/ROUTES-f8_route_enabled_acl_denies.hujson index a9443ded2..2fc9e97d7 100644 --- a/hscontrol/policy/v2/testdata/routes_results/ROUTES-f8_route_enabled_acl_denies.hujson +++ b/hscontrol/policy/v2/testdata/routes_results/ROUTES-f8_route_enabled_acl_denies.hujson @@ -7,24 +7,40 @@ // Expected: No filter rules { "test_id": "ROUTES-f8_route_enabled_acl_denies", - "timestamp": "2026-03-17T16:20:43Z", - "propagation_wait_seconds": 10, "input": { - "policy_file": "routes_policies/routes_f8_route_enabled_acl_denies.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"], - "tag:ha": ["kratail2tid@passkey"] + "tag:server": [ + "kratail2tid@passkey" + ], + "tag:prod": [ + "kratail2tid@passkey" + ], + "tag:client": [ + "kratail2tid@passkey" + ], + "tag:router": [ + "kratail2tid@passkey" + ], + "tag:exit": [ + "kratail2tid@passkey" + ], + "tag:ha": [ + "kratail2tid@passkey" + ] }, "hosts": { "webserver": "100.108.74.26", @@ -34,89 +50,146 @@ }, "autoApprovers": { "routes": { - "10.0.0.0/8": ["tag:router"], - "172.16.0.0/12": ["tag:router"], - "192.168.0.0/16": ["tag:ha"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.0.0.0/8": [ + "tag:router" + ], + "172.16.0.0/12": [ + "tag:router" + ], + "192.168.0.0/16": [ + "tag:ha" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "acls": [ { "action": "accept", - "src": ["group:empty"], - "dst": ["10.33.0.0/16:*"] + "src": [ + "group:empty" + ], + "dst": [ + "10.33.0.0/16:*" + ] } ] - }, - "api_endpoint": "https://api.tailscale.com/api/v2/tailnet/kratail2tid%40passkey/acl", - "api_response_code": 200 + } }, "topology": { "nodes": { "big-router": { "hostname": "big-router", - "tags": ["tag:router"], + "tags": [ + "tag:router" + ], "ipv4": "100.97.174.21", "ipv6": "fd7a:115c:a1e0::5137:ae15", - "routable_ips": ["10.0.0.0/8"], - "approved_routes": ["10.0.0.0/8"] + "routable_ips": [ + "10.0.0.0/8" + ], + "approved_routes": [ + "10.0.0.0/8" + ] }, "exit-node": { "hostname": "exit-node", - "tags": ["tag:exit"], + "tags": [ + "tag:exit" + ], "ipv4": "100.85.66.106", "ipv6": "fd7a:115c:a1e0::7c37:426a", - "routable_ips": ["0.0.0.0/0", "::/0"], - "approved_routes": ["0.0.0.0/0", "::/0"] + "routable_ips": [ + "0.0.0.0/0", + "::/0" + ], + "approved_routes": [ + "0.0.0.0/0", + "::/0" + ] }, "ha-router1": { "hostname": "ha-router1", - "tags": ["tag:ha"], + "tags": [ + "tag:ha" + ], "ipv4": "100.121.186.70", "ipv6": "fd7a:115c:a1e0::6737:ba46", - "routable_ips": ["192.168.1.0/24"], - "approved_routes": ["192.168.1.0/24"] + "routable_ips": [ + "192.168.1.0/24" + ], + "approved_routes": [ + "192.168.1.0/24" + ] }, "ha-router2": { "hostname": "ha-router2", - "tags": ["tag:ha"], + "tags": [ + "tag:ha" + ], "ipv4": "100.117.104.82", "ipv6": "fd7a:115c:a1e0::7437:6852", - "routable_ips": ["192.168.1.0/24"], - "approved_routes": ["192.168.1.0/24"] + "routable_ips": [ + "192.168.1.0/24" + ], + "approved_routes": [ + "192.168.1.0/24" + ] }, "multi-router": { "hostname": "multi-router", - "tags": ["tag:exit", "tag:router"], + "tags": [ + "tag:exit", + "tag:router" + ], "ipv4": "100.119.241.111", "ipv6": "fd7a:115c:a1e0::3337:f16f", - "routable_ips": ["172.16.0.0/24"], - "approved_routes": ["172.16.0.0/24"] + "routable_ips": [ + "172.16.0.0/24" + ], + "approved_routes": [ + "172.16.0.0/24" + ] }, "subnet-router": { "hostname": "subnet-router", - "tags": ["tag:router"], + "tags": [ + "tag:router" + ], "ipv4": "100.92.142.61", "ipv6": "fd7a:115c:a1e0::3e37:8e3d", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] + "routable_ips": [ + "10.33.0.0/16" + ], + "approved_routes": [ + "10.33.0.0/16" + ] }, "tagged-client": { "hostname": "tagged-client", - "tags": ["tag:client"], + "tags": [ + "tag:client" + ], "ipv4": "100.83.200.69", "ipv6": "fd7a:115c:a1e0::c537:c845" }, "tagged-prod": { "hostname": "tagged-prod", - "tags": ["tag:prod"], + "tags": [ + "tag:prod" + ], "ipv4": "100.103.8.15", "ipv6": "fd7a:115c:a1e0::5b37:80f" }, "tagged-server": { "hostname": "tagged-server", - "tags": ["tag:server"], + "tags": [ + "tag:server" + ], "ipv4": "100.108.74.26", "ipv6": "fd7a:115c:a1e0::b901:4a87" }, diff --git a/hscontrol/policy/v2/testdata/routes_results/ROUTES-f9_route_disabled_acl_allows.hujson b/hscontrol/policy/v2/testdata/routes_results/ROUTES-f9_route_disabled_acl_allows.hujson index 29de123c0..b855760f5 100644 --- a/hscontrol/policy/v2/testdata/routes_results/ROUTES-f9_route_disabled_acl_allows.hujson +++ b/hscontrol/policy/v2/testdata/routes_results/ROUTES-f9_route_disabled_acl_allows.hujson @@ -7,24 +7,40 @@ // Expected: Rules on 1 of 12 nodes { "test_id": "ROUTES-f9_route_disabled_acl_allows", - "timestamp": "2026-03-17T16:20:54Z", - "propagation_wait_seconds": 10, "input": { - "policy_file": "routes_policies/routes_f9_route_disabled_acl_allows.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"], - "tag:ha": ["kratail2tid@passkey"] + "tag:server": [ + "kratail2tid@passkey" + ], + "tag:prod": [ + "kratail2tid@passkey" + ], + "tag:client": [ + "kratail2tid@passkey" + ], + "tag:router": [ + "kratail2tid@passkey" + ], + "tag:exit": [ + "kratail2tid@passkey" + ], + "tag:ha": [ + "kratail2tid@passkey" + ] }, "hosts": { "webserver": "100.108.74.26", @@ -34,89 +50,146 @@ }, "autoApprovers": { "routes": { - "10.0.0.0/8": ["tag:router"], - "172.16.0.0/12": ["tag:router"], - "192.168.0.0/16": ["tag:ha"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.0.0.0/8": [ + "tag:router" + ], + "172.16.0.0/12": [ + "tag:router" + ], + "192.168.0.0/16": [ + "tag:ha" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "acls": [ { "action": "accept", - "src": ["*"], - "dst": ["10.99.0.0/16:*"] + "src": [ + "*" + ], + "dst": [ + "10.99.0.0/16:*" + ] } ] - }, - "api_endpoint": "https://api.tailscale.com/api/v2/tailnet/kratail2tid%40passkey/acl", - "api_response_code": 200 + } }, "topology": { "nodes": { "big-router": { "hostname": "big-router", - "tags": ["tag:router"], + "tags": [ + "tag:router" + ], "ipv4": "100.97.174.21", "ipv6": "fd7a:115c:a1e0::5137:ae15", - "routable_ips": ["10.0.0.0/8"], - "approved_routes": ["10.0.0.0/8"] + "routable_ips": [ + "10.0.0.0/8" + ], + "approved_routes": [ + "10.0.0.0/8" + ] }, "exit-node": { "hostname": "exit-node", - "tags": ["tag:exit"], + "tags": [ + "tag:exit" + ], "ipv4": "100.85.66.106", "ipv6": "fd7a:115c:a1e0::7c37:426a", - "routable_ips": ["0.0.0.0/0", "::/0"], - "approved_routes": ["0.0.0.0/0", "::/0"] + "routable_ips": [ + "0.0.0.0/0", + "::/0" + ], + "approved_routes": [ + "0.0.0.0/0", + "::/0" + ] }, "ha-router1": { "hostname": "ha-router1", - "tags": ["tag:ha"], + "tags": [ + "tag:ha" + ], "ipv4": "100.121.186.70", "ipv6": "fd7a:115c:a1e0::6737:ba46", - "routable_ips": ["192.168.1.0/24"], - "approved_routes": ["192.168.1.0/24"] + "routable_ips": [ + "192.168.1.0/24" + ], + "approved_routes": [ + "192.168.1.0/24" + ] }, "ha-router2": { "hostname": "ha-router2", - "tags": ["tag:ha"], + "tags": [ + "tag:ha" + ], "ipv4": "100.117.104.82", "ipv6": "fd7a:115c:a1e0::7437:6852", - "routable_ips": ["192.168.1.0/24"], - "approved_routes": ["192.168.1.0/24"] + "routable_ips": [ + "192.168.1.0/24" + ], + "approved_routes": [ + "192.168.1.0/24" + ] }, "multi-router": { "hostname": "multi-router", - "tags": ["tag:exit", "tag:router"], + "tags": [ + "tag:exit", + "tag:router" + ], "ipv4": "100.119.241.111", "ipv6": "fd7a:115c:a1e0::3337:f16f", - "routable_ips": ["172.16.0.0/24"], - "approved_routes": ["172.16.0.0/24"] + "routable_ips": [ + "172.16.0.0/24" + ], + "approved_routes": [ + "172.16.0.0/24" + ] }, "subnet-router": { "hostname": "subnet-router", - "tags": ["tag:router"], + "tags": [ + "tag:router" + ], "ipv4": "100.92.142.61", "ipv6": "fd7a:115c:a1e0::3e37:8e3d", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] + "routable_ips": [ + "10.33.0.0/16" + ], + "approved_routes": [ + "10.33.0.0/16" + ] }, "tagged-client": { "hostname": "tagged-client", - "tags": ["tag:client"], + "tags": [ + "tag:client" + ], "ipv4": "100.83.200.69", "ipv6": "fd7a:115c:a1e0::c537:c845" }, "tagged-prod": { "hostname": "tagged-prod", - "tags": ["tag:prod"], + "tags": [ + "tag:prod" + ], "ipv4": "100.103.8.15", "ipv6": "fd7a:115c:a1e0::5b37:80f" }, "tagged-server": { "hostname": "tagged-server", - "tags": ["tag:server"], + "tags": [ + "tag:server" + ], "ipv4": "100.108.74.26", "ipv6": "fd7a:115c:a1e0::b901:4a87" }, diff --git a/hscontrol/policy/v2/testdata/routes_results/ROUTES-g1_port_restriction_subnet.hujson b/hscontrol/policy/v2/testdata/routes_results/ROUTES-g1_port_restriction_subnet.hujson index 81e40dbde..4dcb21e87 100644 --- a/hscontrol/policy/v2/testdata/routes_results/ROUTES-g1_port_restriction_subnet.hujson +++ b/hscontrol/policy/v2/testdata/routes_results/ROUTES-g1_port_restriction_subnet.hujson @@ -7,24 +7,40 @@ // Expected: Rules on 2 of 12 nodes { "test_id": "ROUTES-g1_port_restriction_subnet", - "timestamp": "2026-03-17T16:21:04Z", - "propagation_wait_seconds": 10, "input": { - "policy_file": "routes_policies/routes_g1_port_restriction_subnet.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"], - "tag:ha": ["kratail2tid@passkey"] + "tag:server": [ + "kratail2tid@passkey" + ], + "tag:prod": [ + "kratail2tid@passkey" + ], + "tag:client": [ + "kratail2tid@passkey" + ], + "tag:router": [ + "kratail2tid@passkey" + ], + "tag:exit": [ + "kratail2tid@passkey" + ], + "tag:ha": [ + "kratail2tid@passkey" + ] }, "hosts": { "webserver": "100.108.74.26", @@ -34,89 +50,146 @@ }, "autoApprovers": { "routes": { - "10.0.0.0/8": ["tag:router"], - "172.16.0.0/12": ["tag:router"], - "192.168.0.0/16": ["tag:ha"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.0.0.0/8": [ + "tag:router" + ], + "172.16.0.0/12": [ + "tag:router" + ], + "192.168.0.0/16": [ + "tag:ha" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "acls": [ { "action": "accept", - "src": ["autogroup:member"], - "dst": ["10.33.0.0/16:22"] + "src": [ + "autogroup:member" + ], + "dst": [ + "10.33.0.0/16:22" + ] } ] - }, - "api_endpoint": "https://api.tailscale.com/api/v2/tailnet/kratail2tid%40passkey/acl", - "api_response_code": 200 + } }, "topology": { "nodes": { "big-router": { "hostname": "big-router", - "tags": ["tag:router"], + "tags": [ + "tag:router" + ], "ipv4": "100.97.174.21", "ipv6": "fd7a:115c:a1e0::5137:ae15", - "routable_ips": ["10.0.0.0/8"], - "approved_routes": ["10.0.0.0/8"] + "routable_ips": [ + "10.0.0.0/8" + ], + "approved_routes": [ + "10.0.0.0/8" + ] }, "exit-node": { "hostname": "exit-node", - "tags": ["tag:exit"], + "tags": [ + "tag:exit" + ], "ipv4": "100.85.66.106", "ipv6": "fd7a:115c:a1e0::7c37:426a", - "routable_ips": ["0.0.0.0/0", "::/0"], - "approved_routes": ["0.0.0.0/0", "::/0"] + "routable_ips": [ + "0.0.0.0/0", + "::/0" + ], + "approved_routes": [ + "0.0.0.0/0", + "::/0" + ] }, "ha-router1": { "hostname": "ha-router1", - "tags": ["tag:ha"], + "tags": [ + "tag:ha" + ], "ipv4": "100.121.186.70", "ipv6": "fd7a:115c:a1e0::6737:ba46", - "routable_ips": ["192.168.1.0/24"], - "approved_routes": ["192.168.1.0/24"] + "routable_ips": [ + "192.168.1.0/24" + ], + "approved_routes": [ + "192.168.1.0/24" + ] }, "ha-router2": { "hostname": "ha-router2", - "tags": ["tag:ha"], + "tags": [ + "tag:ha" + ], "ipv4": "100.117.104.82", "ipv6": "fd7a:115c:a1e0::7437:6852", - "routable_ips": ["192.168.1.0/24"], - "approved_routes": ["192.168.1.0/24"] + "routable_ips": [ + "192.168.1.0/24" + ], + "approved_routes": [ + "192.168.1.0/24" + ] }, "multi-router": { "hostname": "multi-router", - "tags": ["tag:exit", "tag:router"], + "tags": [ + "tag:exit", + "tag:router" + ], "ipv4": "100.119.241.111", "ipv6": "fd7a:115c:a1e0::3337:f16f", - "routable_ips": ["172.16.0.0/24"], - "approved_routes": ["172.16.0.0/24"] + "routable_ips": [ + "172.16.0.0/24" + ], + "approved_routes": [ + "172.16.0.0/24" + ] }, "subnet-router": { "hostname": "subnet-router", - "tags": ["tag:router"], + "tags": [ + "tag:router" + ], "ipv4": "100.92.142.61", "ipv6": "fd7a:115c:a1e0::3e37:8e3d", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] + "routable_ips": [ + "10.33.0.0/16" + ], + "approved_routes": [ + "10.33.0.0/16" + ] }, "tagged-client": { "hostname": "tagged-client", - "tags": ["tag:client"], + "tags": [ + "tag:client" + ], "ipv4": "100.83.200.69", "ipv6": "fd7a:115c:a1e0::c537:c845" }, "tagged-prod": { "hostname": "tagged-prod", - "tags": ["tag:prod"], + "tags": [ + "tag:prod" + ], "ipv4": "100.103.8.15", "ipv6": "fd7a:115c:a1e0::5b37:80f" }, "tagged-server": { "hostname": "tagged-server", - "tags": ["tag:server"], + "tags": [ + "tag:server" + ], "ipv4": "100.108.74.26", "ipv6": "fd7a:115c:a1e0::b901:4a87" }, diff --git a/hscontrol/policy/v2/testdata/routes_results/ROUTES-g2_port_range_subnet.hujson b/hscontrol/policy/v2/testdata/routes_results/ROUTES-g2_port_range_subnet.hujson index 03a7108a2..fc636f900 100644 --- a/hscontrol/policy/v2/testdata/routes_results/ROUTES-g2_port_range_subnet.hujson +++ b/hscontrol/policy/v2/testdata/routes_results/ROUTES-g2_port_range_subnet.hujson @@ -7,24 +7,40 @@ // Expected: Rules on 2 of 12 nodes { "test_id": "ROUTES-g2_port_range_subnet", - "timestamp": "2026-03-17T16:21:15Z", - "propagation_wait_seconds": 10, "input": { - "policy_file": "routes_policies/routes_g2_port_range_subnet.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"], - "tag:ha": ["kratail2tid@passkey"] + "tag:server": [ + "kratail2tid@passkey" + ], + "tag:prod": [ + "kratail2tid@passkey" + ], + "tag:client": [ + "kratail2tid@passkey" + ], + "tag:router": [ + "kratail2tid@passkey" + ], + "tag:exit": [ + "kratail2tid@passkey" + ], + "tag:ha": [ + "kratail2tid@passkey" + ] }, "hosts": { "webserver": "100.108.74.26", @@ -34,89 +50,146 @@ }, "autoApprovers": { "routes": { - "10.0.0.0/8": ["tag:router"], - "172.16.0.0/12": ["tag:router"], - "192.168.0.0/16": ["tag:ha"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.0.0.0/8": [ + "tag:router" + ], + "172.16.0.0/12": [ + "tag:router" + ], + "192.168.0.0/16": [ + "tag:ha" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "acls": [ { "action": "accept", - "src": ["*"], - "dst": ["10.33.0.0/16:80-443"] + "src": [ + "*" + ], + "dst": [ + "10.33.0.0/16:80-443" + ] } ] - }, - "api_endpoint": "https://api.tailscale.com/api/v2/tailnet/kratail2tid%40passkey/acl", - "api_response_code": 200 + } }, "topology": { "nodes": { "big-router": { "hostname": "big-router", - "tags": ["tag:router"], + "tags": [ + "tag:router" + ], "ipv4": "100.97.174.21", "ipv6": "fd7a:115c:a1e0::5137:ae15", - "routable_ips": ["10.0.0.0/8"], - "approved_routes": ["10.0.0.0/8"] + "routable_ips": [ + "10.0.0.0/8" + ], + "approved_routes": [ + "10.0.0.0/8" + ] }, "exit-node": { "hostname": "exit-node", - "tags": ["tag:exit"], + "tags": [ + "tag:exit" + ], "ipv4": "100.85.66.106", "ipv6": "fd7a:115c:a1e0::7c37:426a", - "routable_ips": ["0.0.0.0/0", "::/0"], - "approved_routes": ["0.0.0.0/0", "::/0"] + "routable_ips": [ + "0.0.0.0/0", + "::/0" + ], + "approved_routes": [ + "0.0.0.0/0", + "::/0" + ] }, "ha-router1": { "hostname": "ha-router1", - "tags": ["tag:ha"], + "tags": [ + "tag:ha" + ], "ipv4": "100.121.186.70", "ipv6": "fd7a:115c:a1e0::6737:ba46", - "routable_ips": ["192.168.1.0/24"], - "approved_routes": ["192.168.1.0/24"] + "routable_ips": [ + "192.168.1.0/24" + ], + "approved_routes": [ + "192.168.1.0/24" + ] }, "ha-router2": { "hostname": "ha-router2", - "tags": ["tag:ha"], + "tags": [ + "tag:ha" + ], "ipv4": "100.117.104.82", "ipv6": "fd7a:115c:a1e0::7437:6852", - "routable_ips": ["192.168.1.0/24"], - "approved_routes": ["192.168.1.0/24"] + "routable_ips": [ + "192.168.1.0/24" + ], + "approved_routes": [ + "192.168.1.0/24" + ] }, "multi-router": { "hostname": "multi-router", - "tags": ["tag:exit", "tag:router"], + "tags": [ + "tag:exit", + "tag:router" + ], "ipv4": "100.119.241.111", "ipv6": "fd7a:115c:a1e0::3337:f16f", - "routable_ips": ["172.16.0.0/24"], - "approved_routes": ["172.16.0.0/24"] + "routable_ips": [ + "172.16.0.0/24" + ], + "approved_routes": [ + "172.16.0.0/24" + ] }, "subnet-router": { "hostname": "subnet-router", - "tags": ["tag:router"], + "tags": [ + "tag:router" + ], "ipv4": "100.92.142.61", "ipv6": "fd7a:115c:a1e0::3e37:8e3d", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] + "routable_ips": [ + "10.33.0.0/16" + ], + "approved_routes": [ + "10.33.0.0/16" + ] }, "tagged-client": { "hostname": "tagged-client", - "tags": ["tag:client"], + "tags": [ + "tag:client" + ], "ipv4": "100.83.200.69", "ipv6": "fd7a:115c:a1e0::c537:c845" }, "tagged-prod": { "hostname": "tagged-prod", - "tags": ["tag:prod"], + "tags": [ + "tag:prod" + ], "ipv4": "100.103.8.15", "ipv6": "fd7a:115c:a1e0::5b37:80f" }, "tagged-server": { "hostname": "tagged-server", - "tags": ["tag:server"], + "tags": [ + "tag:server" + ], "ipv4": "100.108.74.26", "ipv6": "fd7a:115c:a1e0::b901:4a87" }, diff --git a/hscontrol/policy/v2/testdata/routes_results/ROUTES-g3_multiple_ports_subnet.hujson b/hscontrol/policy/v2/testdata/routes_results/ROUTES-g3_multiple_ports_subnet.hujson index 493814a8e..372c735c2 100644 --- a/hscontrol/policy/v2/testdata/routes_results/ROUTES-g3_multiple_ports_subnet.hujson +++ b/hscontrol/policy/v2/testdata/routes_results/ROUTES-g3_multiple_ports_subnet.hujson @@ -7,24 +7,40 @@ // Expected: Rules on 2 of 12 nodes { "test_id": "ROUTES-g3_multiple_ports_subnet", - "timestamp": "2026-03-17T16:21:26Z", - "propagation_wait_seconds": 10, "input": { - "policy_file": "routes_policies/routes_g3_multiple_ports_subnet.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"], - "tag:ha": ["kratail2tid@passkey"] + "tag:server": [ + "kratail2tid@passkey" + ], + "tag:prod": [ + "kratail2tid@passkey" + ], + "tag:client": [ + "kratail2tid@passkey" + ], + "tag:router": [ + "kratail2tid@passkey" + ], + "tag:exit": [ + "kratail2tid@passkey" + ], + "tag:ha": [ + "kratail2tid@passkey" + ] }, "hosts": { "webserver": "100.108.74.26", @@ -34,89 +50,146 @@ }, "autoApprovers": { "routes": { - "10.0.0.0/8": ["tag:router"], - "172.16.0.0/12": ["tag:router"], - "192.168.0.0/16": ["tag:ha"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.0.0.0/8": [ + "tag:router" + ], + "172.16.0.0/12": [ + "tag:router" + ], + "192.168.0.0/16": [ + "tag:ha" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "acls": [ { "action": "accept", - "src": ["*"], - "dst": ["10.33.0.0/16:22,80,443"] + "src": [ + "*" + ], + "dst": [ + "10.33.0.0/16:22,80,443" + ] } ] - }, - "api_endpoint": "https://api.tailscale.com/api/v2/tailnet/kratail2tid%40passkey/acl", - "api_response_code": 200 + } }, "topology": { "nodes": { "big-router": { "hostname": "big-router", - "tags": ["tag:router"], + "tags": [ + "tag:router" + ], "ipv4": "100.97.174.21", "ipv6": "fd7a:115c:a1e0::5137:ae15", - "routable_ips": ["10.0.0.0/8"], - "approved_routes": ["10.0.0.0/8"] + "routable_ips": [ + "10.0.0.0/8" + ], + "approved_routes": [ + "10.0.0.0/8" + ] }, "exit-node": { "hostname": "exit-node", - "tags": ["tag:exit"], + "tags": [ + "tag:exit" + ], "ipv4": "100.85.66.106", "ipv6": "fd7a:115c:a1e0::7c37:426a", - "routable_ips": ["0.0.0.0/0", "::/0"], - "approved_routes": ["0.0.0.0/0", "::/0"] + "routable_ips": [ + "0.0.0.0/0", + "::/0" + ], + "approved_routes": [ + "0.0.0.0/0", + "::/0" + ] }, "ha-router1": { "hostname": "ha-router1", - "tags": ["tag:ha"], + "tags": [ + "tag:ha" + ], "ipv4": "100.121.186.70", "ipv6": "fd7a:115c:a1e0::6737:ba46", - "routable_ips": ["192.168.1.0/24"], - "approved_routes": ["192.168.1.0/24"] + "routable_ips": [ + "192.168.1.0/24" + ], + "approved_routes": [ + "192.168.1.0/24" + ] }, "ha-router2": { "hostname": "ha-router2", - "tags": ["tag:ha"], + "tags": [ + "tag:ha" + ], "ipv4": "100.117.104.82", "ipv6": "fd7a:115c:a1e0::7437:6852", - "routable_ips": ["192.168.1.0/24"], - "approved_routes": ["192.168.1.0/24"] + "routable_ips": [ + "192.168.1.0/24" + ], + "approved_routes": [ + "192.168.1.0/24" + ] }, "multi-router": { "hostname": "multi-router", - "tags": ["tag:exit", "tag:router"], + "tags": [ + "tag:exit", + "tag:router" + ], "ipv4": "100.119.241.111", "ipv6": "fd7a:115c:a1e0::3337:f16f", - "routable_ips": ["172.16.0.0/24"], - "approved_routes": ["172.16.0.0/24"] + "routable_ips": [ + "172.16.0.0/24" + ], + "approved_routes": [ + "172.16.0.0/24" + ] }, "subnet-router": { "hostname": "subnet-router", - "tags": ["tag:router"], + "tags": [ + "tag:router" + ], "ipv4": "100.92.142.61", "ipv6": "fd7a:115c:a1e0::3e37:8e3d", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] + "routable_ips": [ + "10.33.0.0/16" + ], + "approved_routes": [ + "10.33.0.0/16" + ] }, "tagged-client": { "hostname": "tagged-client", - "tags": ["tag:client"], + "tags": [ + "tag:client" + ], "ipv4": "100.83.200.69", "ipv6": "fd7a:115c:a1e0::c537:c845" }, "tagged-prod": { "hostname": "tagged-prod", - "tags": ["tag:prod"], + "tags": [ + "tag:prod" + ], "ipv4": "100.103.8.15", "ipv6": "fd7a:115c:a1e0::5b37:80f" }, "tagged-server": { "hostname": "tagged-server", - "tags": ["tag:server"], + "tags": [ + "tag:server" + ], "ipv4": "100.108.74.26", "ipv6": "fd7a:115c:a1e0::b901:4a87" }, diff --git a/hscontrol/policy/v2/testdata/routes_results/ROUTES-g4_protocol_icmp_subnet.hujson b/hscontrol/policy/v2/testdata/routes_results/ROUTES-g4_protocol_icmp_subnet.hujson index 4f9a6bb09..c3814b0ca 100644 --- a/hscontrol/policy/v2/testdata/routes_results/ROUTES-g4_protocol_icmp_subnet.hujson +++ b/hscontrol/policy/v2/testdata/routes_results/ROUTES-g4_protocol_icmp_subnet.hujson @@ -7,24 +7,40 @@ // Expected: Rules on 2 of 12 nodes { "test_id": "ROUTES-g4_protocol_icmp_subnet", - "timestamp": "2026-03-17T16:21:36Z", - "propagation_wait_seconds": 10, "input": { - "policy_file": "routes_policies/routes_g4_protocol_icmp_subnet.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"], - "tag:ha": ["kratail2tid@passkey"] + "tag:server": [ + "kratail2tid@passkey" + ], + "tag:prod": [ + "kratail2tid@passkey" + ], + "tag:client": [ + "kratail2tid@passkey" + ], + "tag:router": [ + "kratail2tid@passkey" + ], + "tag:exit": [ + "kratail2tid@passkey" + ], + "tag:ha": [ + "kratail2tid@passkey" + ] }, "hosts": { "webserver": "100.108.74.26", @@ -34,90 +50,147 @@ }, "autoApprovers": { "routes": { - "10.0.0.0/8": ["tag:router"], - "172.16.0.0/12": ["tag:router"], - "192.168.0.0/16": ["tag:ha"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.0.0.0/8": [ + "tag:router" + ], + "172.16.0.0/12": [ + "tag:router" + ], + "192.168.0.0/16": [ + "tag:ha" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "acls": [ { "action": "accept", - "src": ["*"], - "dst": ["10.33.0.0/16:*"], + "src": [ + "*" + ], + "dst": [ + "10.33.0.0/16:*" + ], "proto": "icmp" } ] - }, - "api_endpoint": "https://api.tailscale.com/api/v2/tailnet/kratail2tid%40passkey/acl", - "api_response_code": 200 + } }, "topology": { "nodes": { "big-router": { "hostname": "big-router", - "tags": ["tag:router"], + "tags": [ + "tag:router" + ], "ipv4": "100.97.174.21", "ipv6": "fd7a:115c:a1e0::5137:ae15", - "routable_ips": ["10.0.0.0/8"], - "approved_routes": ["10.0.0.0/8"] + "routable_ips": [ + "10.0.0.0/8" + ], + "approved_routes": [ + "10.0.0.0/8" + ] }, "exit-node": { "hostname": "exit-node", - "tags": ["tag:exit"], + "tags": [ + "tag:exit" + ], "ipv4": "100.85.66.106", "ipv6": "fd7a:115c:a1e0::7c37:426a", - "routable_ips": ["0.0.0.0/0", "::/0"], - "approved_routes": ["0.0.0.0/0", "::/0"] + "routable_ips": [ + "0.0.0.0/0", + "::/0" + ], + "approved_routes": [ + "0.0.0.0/0", + "::/0" + ] }, "ha-router1": { "hostname": "ha-router1", - "tags": ["tag:ha"], + "tags": [ + "tag:ha" + ], "ipv4": "100.121.186.70", "ipv6": "fd7a:115c:a1e0::6737:ba46", - "routable_ips": ["192.168.1.0/24"], - "approved_routes": ["192.168.1.0/24"] + "routable_ips": [ + "192.168.1.0/24" + ], + "approved_routes": [ + "192.168.1.0/24" + ] }, "ha-router2": { "hostname": "ha-router2", - "tags": ["tag:ha"], + "tags": [ + "tag:ha" + ], "ipv4": "100.117.104.82", "ipv6": "fd7a:115c:a1e0::7437:6852", - "routable_ips": ["192.168.1.0/24"], - "approved_routes": ["192.168.1.0/24"] + "routable_ips": [ + "192.168.1.0/24" + ], + "approved_routes": [ + "192.168.1.0/24" + ] }, "multi-router": { "hostname": "multi-router", - "tags": ["tag:exit", "tag:router"], + "tags": [ + "tag:exit", + "tag:router" + ], "ipv4": "100.119.241.111", "ipv6": "fd7a:115c:a1e0::3337:f16f", - "routable_ips": ["172.16.0.0/24"], - "approved_routes": ["172.16.0.0/24"] + "routable_ips": [ + "172.16.0.0/24" + ], + "approved_routes": [ + "172.16.0.0/24" + ] }, "subnet-router": { "hostname": "subnet-router", - "tags": ["tag:router"], + "tags": [ + "tag:router" + ], "ipv4": "100.92.142.61", "ipv6": "fd7a:115c:a1e0::3e37:8e3d", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] + "routable_ips": [ + "10.33.0.0/16" + ], + "approved_routes": [ + "10.33.0.0/16" + ] }, "tagged-client": { "hostname": "tagged-client", - "tags": ["tag:client"], + "tags": [ + "tag:client" + ], "ipv4": "100.83.200.69", "ipv6": "fd7a:115c:a1e0::c537:c845" }, "tagged-prod": { "hostname": "tagged-prod", - "tags": ["tag:prod"], + "tags": [ + "tag:prod" + ], "ipv4": "100.103.8.15", "ipv6": "fd7a:115c:a1e0::5b37:80f" }, "tagged-server": { "hostname": "tagged-server", - "tags": ["tag:server"], + "tags": [ + "tag:server" + ], "ipv4": "100.108.74.26", "ipv6": "fd7a:115c:a1e0::b901:4a87" }, @@ -163,7 +236,9 @@ } } ], - "IPProto": [1] + "IPProto": [ + 1 + ] } ] }, @@ -200,7 +275,9 @@ } } ], - "IPProto": [1] + "IPProto": [ + 1 + ] } ] }, diff --git a/hscontrol/policy/v2/testdata/routes_results/ROUTES-g5_protocol_tcp_only.hujson b/hscontrol/policy/v2/testdata/routes_results/ROUTES-g5_protocol_tcp_only.hujson index ee34c4fe9..f3fac9ef6 100644 --- a/hscontrol/policy/v2/testdata/routes_results/ROUTES-g5_protocol_tcp_only.hujson +++ b/hscontrol/policy/v2/testdata/routes_results/ROUTES-g5_protocol_tcp_only.hujson @@ -7,24 +7,40 @@ // Expected: Rules on 2 of 12 nodes { "test_id": "ROUTES-g5_protocol_tcp_only", - "timestamp": "2026-03-17T16:21:47Z", - "propagation_wait_seconds": 10, "input": { - "policy_file": "routes_policies/routes_g5_protocol_tcp_only.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"], - "tag:ha": ["kratail2tid@passkey"] + "tag:server": [ + "kratail2tid@passkey" + ], + "tag:prod": [ + "kratail2tid@passkey" + ], + "tag:client": [ + "kratail2tid@passkey" + ], + "tag:router": [ + "kratail2tid@passkey" + ], + "tag:exit": [ + "kratail2tid@passkey" + ], + "tag:ha": [ + "kratail2tid@passkey" + ] }, "hosts": { "webserver": "100.108.74.26", @@ -34,90 +50,147 @@ }, "autoApprovers": { "routes": { - "10.0.0.0/8": ["tag:router"], - "172.16.0.0/12": ["tag:router"], - "192.168.0.0/16": ["tag:ha"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.0.0.0/8": [ + "tag:router" + ], + "172.16.0.0/12": [ + "tag:router" + ], + "192.168.0.0/16": [ + "tag:ha" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "acls": [ { "action": "accept", - "src": ["*"], - "dst": ["10.33.0.0/16:22"], + "src": [ + "*" + ], + "dst": [ + "10.33.0.0/16:22" + ], "proto": "tcp" } ] - }, - "api_endpoint": "https://api.tailscale.com/api/v2/tailnet/kratail2tid%40passkey/acl", - "api_response_code": 200 + } }, "topology": { "nodes": { "big-router": { "hostname": "big-router", - "tags": ["tag:router"], + "tags": [ + "tag:router" + ], "ipv4": "100.97.174.21", "ipv6": "fd7a:115c:a1e0::5137:ae15", - "routable_ips": ["10.0.0.0/8"], - "approved_routes": ["10.0.0.0/8"] + "routable_ips": [ + "10.0.0.0/8" + ], + "approved_routes": [ + "10.0.0.0/8" + ] }, "exit-node": { "hostname": "exit-node", - "tags": ["tag:exit"], + "tags": [ + "tag:exit" + ], "ipv4": "100.85.66.106", "ipv6": "fd7a:115c:a1e0::7c37:426a", - "routable_ips": ["0.0.0.0/0", "::/0"], - "approved_routes": ["0.0.0.0/0", "::/0"] + "routable_ips": [ + "0.0.0.0/0", + "::/0" + ], + "approved_routes": [ + "0.0.0.0/0", + "::/0" + ] }, "ha-router1": { "hostname": "ha-router1", - "tags": ["tag:ha"], + "tags": [ + "tag:ha" + ], "ipv4": "100.121.186.70", "ipv6": "fd7a:115c:a1e0::6737:ba46", - "routable_ips": ["192.168.1.0/24"], - "approved_routes": ["192.168.1.0/24"] + "routable_ips": [ + "192.168.1.0/24" + ], + "approved_routes": [ + "192.168.1.0/24" + ] }, "ha-router2": { "hostname": "ha-router2", - "tags": ["tag:ha"], + "tags": [ + "tag:ha" + ], "ipv4": "100.117.104.82", "ipv6": "fd7a:115c:a1e0::7437:6852", - "routable_ips": ["192.168.1.0/24"], - "approved_routes": ["192.168.1.0/24"] + "routable_ips": [ + "192.168.1.0/24" + ], + "approved_routes": [ + "192.168.1.0/24" + ] }, "multi-router": { "hostname": "multi-router", - "tags": ["tag:exit", "tag:router"], + "tags": [ + "tag:exit", + "tag:router" + ], "ipv4": "100.119.241.111", "ipv6": "fd7a:115c:a1e0::3337:f16f", - "routable_ips": ["172.16.0.0/24"], - "approved_routes": ["172.16.0.0/24"] + "routable_ips": [ + "172.16.0.0/24" + ], + "approved_routes": [ + "172.16.0.0/24" + ] }, "subnet-router": { "hostname": "subnet-router", - "tags": ["tag:router"], + "tags": [ + "tag:router" + ], "ipv4": "100.92.142.61", "ipv6": "fd7a:115c:a1e0::3e37:8e3d", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] + "routable_ips": [ + "10.33.0.0/16" + ], + "approved_routes": [ + "10.33.0.0/16" + ] }, "tagged-client": { "hostname": "tagged-client", - "tags": ["tag:client"], + "tags": [ + "tag:client" + ], "ipv4": "100.83.200.69", "ipv6": "fd7a:115c:a1e0::c537:c845" }, "tagged-prod": { "hostname": "tagged-prod", - "tags": ["tag:prod"], + "tags": [ + "tag:prod" + ], "ipv4": "100.103.8.15", "ipv6": "fd7a:115c:a1e0::5b37:80f" }, "tagged-server": { "hostname": "tagged-server", - "tags": ["tag:server"], + "tags": [ + "tag:server" + ], "ipv4": "100.108.74.26", "ipv6": "fd7a:115c:a1e0::b901:4a87" }, @@ -163,7 +236,9 @@ } } ], - "IPProto": [6] + "IPProto": [ + 6 + ] } ] }, @@ -200,7 +275,9 @@ } } ], - "IPProto": [6] + "IPProto": [ + 6 + ] } ] }, diff --git a/hscontrol/policy/v2/testdata/routes_results/ROUTES-g6_protocol_udp_only.hujson b/hscontrol/policy/v2/testdata/routes_results/ROUTES-g6_protocol_udp_only.hujson index a1903f10e..3fd9eca82 100644 --- a/hscontrol/policy/v2/testdata/routes_results/ROUTES-g6_protocol_udp_only.hujson +++ b/hscontrol/policy/v2/testdata/routes_results/ROUTES-g6_protocol_udp_only.hujson @@ -7,24 +7,40 @@ // Expected: Rules on 2 of 12 nodes { "test_id": "ROUTES-g6_protocol_udp_only", - "timestamp": "2026-03-17T16:21:58Z", - "propagation_wait_seconds": 10, "input": { - "policy_file": "routes_policies/routes_g6_protocol_udp_only.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"], - "tag:ha": ["kratail2tid@passkey"] + "tag:server": [ + "kratail2tid@passkey" + ], + "tag:prod": [ + "kratail2tid@passkey" + ], + "tag:client": [ + "kratail2tid@passkey" + ], + "tag:router": [ + "kratail2tid@passkey" + ], + "tag:exit": [ + "kratail2tid@passkey" + ], + "tag:ha": [ + "kratail2tid@passkey" + ] }, "hosts": { "webserver": "100.108.74.26", @@ -34,90 +50,147 @@ }, "autoApprovers": { "routes": { - "10.0.0.0/8": ["tag:router"], - "172.16.0.0/12": ["tag:router"], - "192.168.0.0/16": ["tag:ha"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.0.0.0/8": [ + "tag:router" + ], + "172.16.0.0/12": [ + "tag:router" + ], + "192.168.0.0/16": [ + "tag:ha" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "acls": [ { "action": "accept", - "src": ["*"], - "dst": ["10.33.0.0/16:53"], + "src": [ + "*" + ], + "dst": [ + "10.33.0.0/16:53" + ], "proto": "udp" } ] - }, - "api_endpoint": "https://api.tailscale.com/api/v2/tailnet/kratail2tid%40passkey/acl", - "api_response_code": 200 + } }, "topology": { "nodes": { "big-router": { "hostname": "big-router", - "tags": ["tag:router"], + "tags": [ + "tag:router" + ], "ipv4": "100.97.174.21", "ipv6": "fd7a:115c:a1e0::5137:ae15", - "routable_ips": ["10.0.0.0/8"], - "approved_routes": ["10.0.0.0/8"] + "routable_ips": [ + "10.0.0.0/8" + ], + "approved_routes": [ + "10.0.0.0/8" + ] }, "exit-node": { "hostname": "exit-node", - "tags": ["tag:exit"], + "tags": [ + "tag:exit" + ], "ipv4": "100.85.66.106", "ipv6": "fd7a:115c:a1e0::7c37:426a", - "routable_ips": ["0.0.0.0/0", "::/0"], - "approved_routes": ["0.0.0.0/0", "::/0"] + "routable_ips": [ + "0.0.0.0/0", + "::/0" + ], + "approved_routes": [ + "0.0.0.0/0", + "::/0" + ] }, "ha-router1": { "hostname": "ha-router1", - "tags": ["tag:ha"], + "tags": [ + "tag:ha" + ], "ipv4": "100.121.186.70", "ipv6": "fd7a:115c:a1e0::6737:ba46", - "routable_ips": ["192.168.1.0/24"], - "approved_routes": ["192.168.1.0/24"] + "routable_ips": [ + "192.168.1.0/24" + ], + "approved_routes": [ + "192.168.1.0/24" + ] }, "ha-router2": { "hostname": "ha-router2", - "tags": ["tag:ha"], + "tags": [ + "tag:ha" + ], "ipv4": "100.117.104.82", "ipv6": "fd7a:115c:a1e0::7437:6852", - "routable_ips": ["192.168.1.0/24"], - "approved_routes": ["192.168.1.0/24"] + "routable_ips": [ + "192.168.1.0/24" + ], + "approved_routes": [ + "192.168.1.0/24" + ] }, "multi-router": { "hostname": "multi-router", - "tags": ["tag:exit", "tag:router"], + "tags": [ + "tag:exit", + "tag:router" + ], "ipv4": "100.119.241.111", "ipv6": "fd7a:115c:a1e0::3337:f16f", - "routable_ips": ["172.16.0.0/24"], - "approved_routes": ["172.16.0.0/24"] + "routable_ips": [ + "172.16.0.0/24" + ], + "approved_routes": [ + "172.16.0.0/24" + ] }, "subnet-router": { "hostname": "subnet-router", - "tags": ["tag:router"], + "tags": [ + "tag:router" + ], "ipv4": "100.92.142.61", "ipv6": "fd7a:115c:a1e0::3e37:8e3d", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] + "routable_ips": [ + "10.33.0.0/16" + ], + "approved_routes": [ + "10.33.0.0/16" + ] }, "tagged-client": { "hostname": "tagged-client", - "tags": ["tag:client"], + "tags": [ + "tag:client" + ], "ipv4": "100.83.200.69", "ipv6": "fd7a:115c:a1e0::c537:c845" }, "tagged-prod": { "hostname": "tagged-prod", - "tags": ["tag:prod"], + "tags": [ + "tag:prod" + ], "ipv4": "100.103.8.15", "ipv6": "fd7a:115c:a1e0::5b37:80f" }, "tagged-server": { "hostname": "tagged-server", - "tags": ["tag:server"], + "tags": [ + "tag:server" + ], "ipv4": "100.108.74.26", "ipv6": "fd7a:115c:a1e0::b901:4a87" }, @@ -163,7 +236,9 @@ } } ], - "IPProto": [17] + "IPProto": [ + 17 + ] } ] }, @@ -200,7 +275,9 @@ } } ], - "IPProto": [17] + "IPProto": [ + 17 + ] } ] }, diff --git a/hscontrol/policy/v2/testdata/routes_results/ROUTES-g7_all_ports_wildcard.hujson b/hscontrol/policy/v2/testdata/routes_results/ROUTES-g7_all_ports_wildcard.hujson index 688913db2..30507dfdd 100644 --- a/hscontrol/policy/v2/testdata/routes_results/ROUTES-g7_all_ports_wildcard.hujson +++ b/hscontrol/policy/v2/testdata/routes_results/ROUTES-g7_all_ports_wildcard.hujson @@ -7,24 +7,40 @@ // Expected: Rules on 2 of 12 nodes { "test_id": "ROUTES-g7_all_ports_wildcard", - "timestamp": "2026-03-17T16:22:08Z", - "propagation_wait_seconds": 10, "input": { - "policy_file": "routes_policies/routes_g7_all_ports_wildcard.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"], - "tag:ha": ["kratail2tid@passkey"] + "tag:server": [ + "kratail2tid@passkey" + ], + "tag:prod": [ + "kratail2tid@passkey" + ], + "tag:client": [ + "kratail2tid@passkey" + ], + "tag:router": [ + "kratail2tid@passkey" + ], + "tag:exit": [ + "kratail2tid@passkey" + ], + "tag:ha": [ + "kratail2tid@passkey" + ] }, "hosts": { "webserver": "100.108.74.26", @@ -34,89 +50,146 @@ }, "autoApprovers": { "routes": { - "10.0.0.0/8": ["tag:router"], - "172.16.0.0/12": ["tag:router"], - "192.168.0.0/16": ["tag:ha"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.0.0.0/8": [ + "tag:router" + ], + "172.16.0.0/12": [ + "tag:router" + ], + "192.168.0.0/16": [ + "tag:ha" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "acls": [ { "action": "accept", - "src": ["autogroup:member"], - "dst": ["10.33.0.0/16:*"] + "src": [ + "autogroup:member" + ], + "dst": [ + "10.33.0.0/16:*" + ] } ] - }, - "api_endpoint": "https://api.tailscale.com/api/v2/tailnet/kratail2tid%40passkey/acl", - "api_response_code": 200 + } }, "topology": { "nodes": { "big-router": { "hostname": "big-router", - "tags": ["tag:router"], + "tags": [ + "tag:router" + ], "ipv4": "100.97.174.21", "ipv6": "fd7a:115c:a1e0::5137:ae15", - "routable_ips": ["10.0.0.0/8"], - "approved_routes": ["10.0.0.0/8"] + "routable_ips": [ + "10.0.0.0/8" + ], + "approved_routes": [ + "10.0.0.0/8" + ] }, "exit-node": { "hostname": "exit-node", - "tags": ["tag:exit"], + "tags": [ + "tag:exit" + ], "ipv4": "100.85.66.106", "ipv6": "fd7a:115c:a1e0::7c37:426a", - "routable_ips": ["0.0.0.0/0", "::/0"], - "approved_routes": ["0.0.0.0/0", "::/0"] + "routable_ips": [ + "0.0.0.0/0", + "::/0" + ], + "approved_routes": [ + "0.0.0.0/0", + "::/0" + ] }, "ha-router1": { "hostname": "ha-router1", - "tags": ["tag:ha"], + "tags": [ + "tag:ha" + ], "ipv4": "100.121.186.70", "ipv6": "fd7a:115c:a1e0::6737:ba46", - "routable_ips": ["192.168.1.0/24"], - "approved_routes": ["192.168.1.0/24"] + "routable_ips": [ + "192.168.1.0/24" + ], + "approved_routes": [ + "192.168.1.0/24" + ] }, "ha-router2": { "hostname": "ha-router2", - "tags": ["tag:ha"], + "tags": [ + "tag:ha" + ], "ipv4": "100.117.104.82", "ipv6": "fd7a:115c:a1e0::7437:6852", - "routable_ips": ["192.168.1.0/24"], - "approved_routes": ["192.168.1.0/24"] + "routable_ips": [ + "192.168.1.0/24" + ], + "approved_routes": [ + "192.168.1.0/24" + ] }, "multi-router": { "hostname": "multi-router", - "tags": ["tag:exit", "tag:router"], + "tags": [ + "tag:exit", + "tag:router" + ], "ipv4": "100.119.241.111", "ipv6": "fd7a:115c:a1e0::3337:f16f", - "routable_ips": ["172.16.0.0/24"], - "approved_routes": ["172.16.0.0/24"] + "routable_ips": [ + "172.16.0.0/24" + ], + "approved_routes": [ + "172.16.0.0/24" + ] }, "subnet-router": { "hostname": "subnet-router", - "tags": ["tag:router"], + "tags": [ + "tag:router" + ], "ipv4": "100.92.142.61", "ipv6": "fd7a:115c:a1e0::3e37:8e3d", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] + "routable_ips": [ + "10.33.0.0/16" + ], + "approved_routes": [ + "10.33.0.0/16" + ] }, "tagged-client": { "hostname": "tagged-client", - "tags": ["tag:client"], + "tags": [ + "tag:client" + ], "ipv4": "100.83.200.69", "ipv6": "fd7a:115c:a1e0::c537:c845" }, "tagged-prod": { "hostname": "tagged-prod", - "tags": ["tag:prod"], + "tags": [ + "tag:prod" + ], "ipv4": "100.103.8.15", "ipv6": "fd7a:115c:a1e0::5b37:80f" }, "tagged-server": { "hostname": "tagged-server", - "tags": ["tag:server"], + "tags": [ + "tag:server" + ], "ipv4": "100.108.74.26", "ipv6": "fd7a:115c:a1e0::b901:4a87" }, diff --git a/hscontrol/policy/v2/testdata/routes_results/ROUTES-g8_default_ipproto.hujson b/hscontrol/policy/v2/testdata/routes_results/ROUTES-g8_default_ipproto.hujson index 718ddeaa7..f52b890ac 100644 --- a/hscontrol/policy/v2/testdata/routes_results/ROUTES-g8_default_ipproto.hujson +++ b/hscontrol/policy/v2/testdata/routes_results/ROUTES-g8_default_ipproto.hujson @@ -7,24 +7,40 @@ // Expected: Rules on 2 of 12 nodes { "test_id": "ROUTES-g8_default_ipproto", - "timestamp": "2026-03-17T16:22:19Z", - "propagation_wait_seconds": 10, "input": { - "policy_file": "routes_policies/routes_g8_default_ipproto.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"], - "tag:ha": ["kratail2tid@passkey"] + "tag:server": [ + "kratail2tid@passkey" + ], + "tag:prod": [ + "kratail2tid@passkey" + ], + "tag:client": [ + "kratail2tid@passkey" + ], + "tag:router": [ + "kratail2tid@passkey" + ], + "tag:exit": [ + "kratail2tid@passkey" + ], + "tag:ha": [ + "kratail2tid@passkey" + ] }, "hosts": { "webserver": "100.108.74.26", @@ -34,89 +50,146 @@ }, "autoApprovers": { "routes": { - "10.0.0.0/8": ["tag:router"], - "172.16.0.0/12": ["tag:router"], - "192.168.0.0/16": ["tag:ha"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.0.0.0/8": [ + "tag:router" + ], + "172.16.0.0/12": [ + "tag:router" + ], + "192.168.0.0/16": [ + "tag:ha" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "acls": [ { "action": "accept", - "src": ["*"], - "dst": ["10.33.0.0/16:22"] + "src": [ + "*" + ], + "dst": [ + "10.33.0.0/16:22" + ] } ] - }, - "api_endpoint": "https://api.tailscale.com/api/v2/tailnet/kratail2tid%40passkey/acl", - "api_response_code": 200 + } }, "topology": { "nodes": { "big-router": { "hostname": "big-router", - "tags": ["tag:router"], + "tags": [ + "tag:router" + ], "ipv4": "100.97.174.21", "ipv6": "fd7a:115c:a1e0::5137:ae15", - "routable_ips": ["10.0.0.0/8"], - "approved_routes": ["10.0.0.0/8"] + "routable_ips": [ + "10.0.0.0/8" + ], + "approved_routes": [ + "10.0.0.0/8" + ] }, "exit-node": { "hostname": "exit-node", - "tags": ["tag:exit"], + "tags": [ + "tag:exit" + ], "ipv4": "100.85.66.106", "ipv6": "fd7a:115c:a1e0::7c37:426a", - "routable_ips": ["0.0.0.0/0", "::/0"], - "approved_routes": ["0.0.0.0/0", "::/0"] + "routable_ips": [ + "0.0.0.0/0", + "::/0" + ], + "approved_routes": [ + "0.0.0.0/0", + "::/0" + ] }, "ha-router1": { "hostname": "ha-router1", - "tags": ["tag:ha"], + "tags": [ + "tag:ha" + ], "ipv4": "100.121.186.70", "ipv6": "fd7a:115c:a1e0::6737:ba46", - "routable_ips": ["192.168.1.0/24"], - "approved_routes": ["192.168.1.0/24"] + "routable_ips": [ + "192.168.1.0/24" + ], + "approved_routes": [ + "192.168.1.0/24" + ] }, "ha-router2": { "hostname": "ha-router2", - "tags": ["tag:ha"], + "tags": [ + "tag:ha" + ], "ipv4": "100.117.104.82", "ipv6": "fd7a:115c:a1e0::7437:6852", - "routable_ips": ["192.168.1.0/24"], - "approved_routes": ["192.168.1.0/24"] + "routable_ips": [ + "192.168.1.0/24" + ], + "approved_routes": [ + "192.168.1.0/24" + ] }, "multi-router": { "hostname": "multi-router", - "tags": ["tag:exit", "tag:router"], + "tags": [ + "tag:exit", + "tag:router" + ], "ipv4": "100.119.241.111", "ipv6": "fd7a:115c:a1e0::3337:f16f", - "routable_ips": ["172.16.0.0/24"], - "approved_routes": ["172.16.0.0/24"] + "routable_ips": [ + "172.16.0.0/24" + ], + "approved_routes": [ + "172.16.0.0/24" + ] }, "subnet-router": { "hostname": "subnet-router", - "tags": ["tag:router"], + "tags": [ + "tag:router" + ], "ipv4": "100.92.142.61", "ipv6": "fd7a:115c:a1e0::3e37:8e3d", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] + "routable_ips": [ + "10.33.0.0/16" + ], + "approved_routes": [ + "10.33.0.0/16" + ] }, "tagged-client": { "hostname": "tagged-client", - "tags": ["tag:client"], + "tags": [ + "tag:client" + ], "ipv4": "100.83.200.69", "ipv6": "fd7a:115c:a1e0::c537:c845" }, "tagged-prod": { "hostname": "tagged-prod", - "tags": ["tag:prod"], + "tags": [ + "tag:prod" + ], "ipv4": "100.103.8.15", "ipv6": "fd7a:115c:a1e0::5b37:80f" }, "tagged-server": { "hostname": "tagged-server", - "tags": ["tag:server"], + "tags": [ + "tag:server" + ], "ipv4": "100.108.74.26", "ipv6": "fd7a:115c:a1e0::b901:4a87" }, diff --git a/hscontrol/policy/v2/testdata/routes_results/ROUTES-h10_very_small_prefix.hujson b/hscontrol/policy/v2/testdata/routes_results/ROUTES-h10_very_small_prefix.hujson index 0e05c9b59..3f363d6c6 100644 --- a/hscontrol/policy/v2/testdata/routes_results/ROUTES-h10_very_small_prefix.hujson +++ b/hscontrol/policy/v2/testdata/routes_results/ROUTES-h10_very_small_prefix.hujson @@ -7,24 +7,40 @@ // Expected: Rules on 2 of 12 nodes { "test_id": "ROUTES-h10_very_small_prefix", - "timestamp": "2026-03-17T16:22:30Z", - "propagation_wait_seconds": 10, "input": { - "policy_file": "routes_policies/routes_h10_very_small_prefix.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"], - "tag:ha": ["kratail2tid@passkey"] + "tag:server": [ + "kratail2tid@passkey" + ], + "tag:prod": [ + "kratail2tid@passkey" + ], + "tag:client": [ + "kratail2tid@passkey" + ], + "tag:router": [ + "kratail2tid@passkey" + ], + "tag:exit": [ + "kratail2tid@passkey" + ], + "tag:ha": [ + "kratail2tid@passkey" + ] }, "hosts": { "webserver": "100.108.74.26", @@ -34,89 +50,146 @@ }, "autoApprovers": { "routes": { - "10.0.0.0/8": ["tag:router"], - "172.16.0.0/12": ["tag:router"], - "192.168.0.0/16": ["tag:ha"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.0.0.0/8": [ + "tag:router" + ], + "172.16.0.0/12": [ + "tag:router" + ], + "192.168.0.0/16": [ + "tag:ha" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "acls": [ { "action": "accept", - "src": ["*"], - "dst": ["10.33.0.100/32:80"] + "src": [ + "*" + ], + "dst": [ + "10.33.0.100/32:80" + ] } ] - }, - "api_endpoint": "https://api.tailscale.com/api/v2/tailnet/kratail2tid%40passkey/acl", - "api_response_code": 200 + } }, "topology": { "nodes": { "big-router": { "hostname": "big-router", - "tags": ["tag:router"], + "tags": [ + "tag:router" + ], "ipv4": "100.97.174.21", "ipv6": "fd7a:115c:a1e0::5137:ae15", - "routable_ips": ["10.0.0.0/8"], - "approved_routes": ["10.0.0.0/8"] + "routable_ips": [ + "10.0.0.0/8" + ], + "approved_routes": [ + "10.0.0.0/8" + ] }, "exit-node": { "hostname": "exit-node", - "tags": ["tag:exit"], + "tags": [ + "tag:exit" + ], "ipv4": "100.85.66.106", "ipv6": "fd7a:115c:a1e0::7c37:426a", - "routable_ips": ["0.0.0.0/0", "::/0"], - "approved_routes": ["0.0.0.0/0", "::/0"] + "routable_ips": [ + "0.0.0.0/0", + "::/0" + ], + "approved_routes": [ + "0.0.0.0/0", + "::/0" + ] }, "ha-router1": { "hostname": "ha-router1", - "tags": ["tag:ha"], + "tags": [ + "tag:ha" + ], "ipv4": "100.121.186.70", "ipv6": "fd7a:115c:a1e0::6737:ba46", - "routable_ips": ["192.168.1.0/24"], - "approved_routes": ["192.168.1.0/24"] + "routable_ips": [ + "192.168.1.0/24" + ], + "approved_routes": [ + "192.168.1.0/24" + ] }, "ha-router2": { "hostname": "ha-router2", - "tags": ["tag:ha"], + "tags": [ + "tag:ha" + ], "ipv4": "100.117.104.82", "ipv6": "fd7a:115c:a1e0::7437:6852", - "routable_ips": ["192.168.1.0/24"], - "approved_routes": ["192.168.1.0/24"] + "routable_ips": [ + "192.168.1.0/24" + ], + "approved_routes": [ + "192.168.1.0/24" + ] }, "multi-router": { "hostname": "multi-router", - "tags": ["tag:exit", "tag:router"], + "tags": [ + "tag:exit", + "tag:router" + ], "ipv4": "100.119.241.111", "ipv6": "fd7a:115c:a1e0::3337:f16f", - "routable_ips": ["172.16.0.0/24"], - "approved_routes": ["172.16.0.0/24"] + "routable_ips": [ + "172.16.0.0/24" + ], + "approved_routes": [ + "172.16.0.0/24" + ] }, "subnet-router": { "hostname": "subnet-router", - "tags": ["tag:router"], + "tags": [ + "tag:router" + ], "ipv4": "100.92.142.61", "ipv6": "fd7a:115c:a1e0::3e37:8e3d", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] + "routable_ips": [ + "10.33.0.0/16" + ], + "approved_routes": [ + "10.33.0.0/16" + ] }, "tagged-client": { "hostname": "tagged-client", - "tags": ["tag:client"], + "tags": [ + "tag:client" + ], "ipv4": "100.83.200.69", "ipv6": "fd7a:115c:a1e0::c537:c845" }, "tagged-prod": { "hostname": "tagged-prod", - "tags": ["tag:prod"], + "tags": [ + "tag:prod" + ], "ipv4": "100.103.8.15", "ipv6": "fd7a:115c:a1e0::5b37:80f" }, "tagged-server": { "hostname": "tagged-server", - "tags": ["tag:server"], + "tags": [ + "tag:server" + ], "ipv4": "100.108.74.26", "ipv6": "fd7a:115c:a1e0::b901:4a87" }, diff --git a/hscontrol/policy/v2/testdata/routes_results/ROUTES-h11_ipv6_small_prefix.hujson b/hscontrol/policy/v2/testdata/routes_results/ROUTES-h11_ipv6_small_prefix.hujson index a1e68b81f..347b2fce7 100644 --- a/hscontrol/policy/v2/testdata/routes_results/ROUTES-h11_ipv6_small_prefix.hujson +++ b/hscontrol/policy/v2/testdata/routes_results/ROUTES-h11_ipv6_small_prefix.hujson @@ -7,24 +7,40 @@ // Expected: No filter rules { "test_id": "ROUTES-h11_ipv6_small_prefix", - "timestamp": "2026-03-17T16:22:40Z", - "propagation_wait_seconds": 10, "input": { - "policy_file": "routes_policies/routes_h11_ipv6_small_prefix.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"], - "tag:ha": ["kratail2tid@passkey"] + "tag:server": [ + "kratail2tid@passkey" + ], + "tag:prod": [ + "kratail2tid@passkey" + ], + "tag:client": [ + "kratail2tid@passkey" + ], + "tag:router": [ + "kratail2tid@passkey" + ], + "tag:exit": [ + "kratail2tid@passkey" + ], + "tag:ha": [ + "kratail2tid@passkey" + ] }, "hosts": { "webserver": "100.108.74.26", @@ -34,89 +50,146 @@ }, "autoApprovers": { "routes": { - "10.0.0.0/8": ["tag:router"], - "172.16.0.0/12": ["tag:router"], - "192.168.0.0/16": ["tag:ha"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.0.0.0/8": [ + "tag:router" + ], + "172.16.0.0/12": [ + "tag:router" + ], + "192.168.0.0/16": [ + "tag:ha" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "acls": [ { "action": "accept", - "src": ["*"], - "dst": ["fd00::1/128:443"] + "src": [ + "*" + ], + "dst": [ + "fd00::1/128:443" + ] } ] - }, - "api_endpoint": "https://api.tailscale.com/api/v2/tailnet/kratail2tid%40passkey/acl", - "api_response_code": 200 + } }, "topology": { "nodes": { "big-router": { "hostname": "big-router", - "tags": ["tag:router"], + "tags": [ + "tag:router" + ], "ipv4": "100.97.174.21", "ipv6": "fd7a:115c:a1e0::5137:ae15", - "routable_ips": ["10.0.0.0/8"], - "approved_routes": ["10.0.0.0/8"] + "routable_ips": [ + "10.0.0.0/8" + ], + "approved_routes": [ + "10.0.0.0/8" + ] }, "exit-node": { "hostname": "exit-node", - "tags": ["tag:exit"], + "tags": [ + "tag:exit" + ], "ipv4": "100.85.66.106", "ipv6": "fd7a:115c:a1e0::7c37:426a", - "routable_ips": ["0.0.0.0/0", "::/0"], - "approved_routes": ["0.0.0.0/0", "::/0"] + "routable_ips": [ + "0.0.0.0/0", + "::/0" + ], + "approved_routes": [ + "0.0.0.0/0", + "::/0" + ] }, "ha-router1": { "hostname": "ha-router1", - "tags": ["tag:ha"], + "tags": [ + "tag:ha" + ], "ipv4": "100.121.186.70", "ipv6": "fd7a:115c:a1e0::6737:ba46", - "routable_ips": ["192.168.1.0/24"], - "approved_routes": ["192.168.1.0/24"] + "routable_ips": [ + "192.168.1.0/24" + ], + "approved_routes": [ + "192.168.1.0/24" + ] }, "ha-router2": { "hostname": "ha-router2", - "tags": ["tag:ha"], + "tags": [ + "tag:ha" + ], "ipv4": "100.117.104.82", "ipv6": "fd7a:115c:a1e0::7437:6852", - "routable_ips": ["192.168.1.0/24"], - "approved_routes": ["192.168.1.0/24"] + "routable_ips": [ + "192.168.1.0/24" + ], + "approved_routes": [ + "192.168.1.0/24" + ] }, "multi-router": { "hostname": "multi-router", - "tags": ["tag:exit", "tag:router"], + "tags": [ + "tag:exit", + "tag:router" + ], "ipv4": "100.119.241.111", "ipv6": "fd7a:115c:a1e0::3337:f16f", - "routable_ips": ["172.16.0.0/24"], - "approved_routes": ["172.16.0.0/24"] + "routable_ips": [ + "172.16.0.0/24" + ], + "approved_routes": [ + "172.16.0.0/24" + ] }, "subnet-router": { "hostname": "subnet-router", - "tags": ["tag:router"], + "tags": [ + "tag:router" + ], "ipv4": "100.92.142.61", "ipv6": "fd7a:115c:a1e0::3e37:8e3d", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] + "routable_ips": [ + "10.33.0.0/16" + ], + "approved_routes": [ + "10.33.0.0/16" + ] }, "tagged-client": { "hostname": "tagged-client", - "tags": ["tag:client"], + "tags": [ + "tag:client" + ], "ipv4": "100.83.200.69", "ipv6": "fd7a:115c:a1e0::c537:c845" }, "tagged-prod": { "hostname": "tagged-prod", - "tags": ["tag:prod"], + "tags": [ + "tag:prod" + ], "ipv4": "100.103.8.15", "ipv6": "fd7a:115c:a1e0::5b37:80f" }, "tagged-server": { "hostname": "tagged-server", - "tags": ["tag:server"], + "tags": [ + "tag:server" + ], "ipv4": "100.108.74.26", "ipv6": "fd7a:115c:a1e0::b901:4a87" }, diff --git a/hscontrol/policy/v2/testdata/routes_results/ROUTES-h1_wildcard_srcips_format.hujson b/hscontrol/policy/v2/testdata/routes_results/ROUTES-h1_wildcard_srcips_format.hujson index 4d520293f..87c0cbba1 100644 --- a/hscontrol/policy/v2/testdata/routes_results/ROUTES-h1_wildcard_srcips_format.hujson +++ b/hscontrol/policy/v2/testdata/routes_results/ROUTES-h1_wildcard_srcips_format.hujson @@ -7,24 +7,40 @@ // Expected: Rules on 3 of 12 nodes { "test_id": "ROUTES-h1_wildcard_srcips_format", - "timestamp": "2026-03-17T16:22:51Z", - "propagation_wait_seconds": 10, "input": { - "policy_file": "routes_policies/routes_h1_wildcard_srcips_format.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"], - "tag:ha": ["kratail2tid@passkey"] + "tag:server": [ + "kratail2tid@passkey" + ], + "tag:prod": [ + "kratail2tid@passkey" + ], + "tag:client": [ + "kratail2tid@passkey" + ], + "tag:router": [ + "kratail2tid@passkey" + ], + "tag:exit": [ + "kratail2tid@passkey" + ], + "tag:ha": [ + "kratail2tid@passkey" + ] }, "hosts": { "webserver": "100.108.74.26", @@ -34,89 +50,146 @@ }, "autoApprovers": { "routes": { - "10.0.0.0/8": ["tag:router"], - "172.16.0.0/12": ["tag:router"], - "192.168.0.0/16": ["tag:ha"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.0.0.0/8": [ + "tag:router" + ], + "172.16.0.0/12": [ + "tag:router" + ], + "192.168.0.0/16": [ + "tag:ha" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "acls": [ { "action": "accept", - "src": ["*"], - "dst": ["tag:router:*"] + "src": [ + "*" + ], + "dst": [ + "tag:router:*" + ] } ] - }, - "api_endpoint": "https://api.tailscale.com/api/v2/tailnet/kratail2tid%40passkey/acl", - "api_response_code": 200 + } }, "topology": { "nodes": { "big-router": { "hostname": "big-router", - "tags": ["tag:router"], + "tags": [ + "tag:router" + ], "ipv4": "100.97.174.21", "ipv6": "fd7a:115c:a1e0::5137:ae15", - "routable_ips": ["10.0.0.0/8"], - "approved_routes": ["10.0.0.0/8"] + "routable_ips": [ + "10.0.0.0/8" + ], + "approved_routes": [ + "10.0.0.0/8" + ] }, "exit-node": { "hostname": "exit-node", - "tags": ["tag:exit"], + "tags": [ + "tag:exit" + ], "ipv4": "100.85.66.106", "ipv6": "fd7a:115c:a1e0::7c37:426a", - "routable_ips": ["0.0.0.0/0", "::/0"], - "approved_routes": ["0.0.0.0/0", "::/0"] + "routable_ips": [ + "0.0.0.0/0", + "::/0" + ], + "approved_routes": [ + "0.0.0.0/0", + "::/0" + ] }, "ha-router1": { "hostname": "ha-router1", - "tags": ["tag:ha"], + "tags": [ + "tag:ha" + ], "ipv4": "100.121.186.70", "ipv6": "fd7a:115c:a1e0::6737:ba46", - "routable_ips": ["192.168.1.0/24"], - "approved_routes": ["192.168.1.0/24"] + "routable_ips": [ + "192.168.1.0/24" + ], + "approved_routes": [ + "192.168.1.0/24" + ] }, "ha-router2": { "hostname": "ha-router2", - "tags": ["tag:ha"], + "tags": [ + "tag:ha" + ], "ipv4": "100.117.104.82", "ipv6": "fd7a:115c:a1e0::7437:6852", - "routable_ips": ["192.168.1.0/24"], - "approved_routes": ["192.168.1.0/24"] + "routable_ips": [ + "192.168.1.0/24" + ], + "approved_routes": [ + "192.168.1.0/24" + ] }, "multi-router": { "hostname": "multi-router", - "tags": ["tag:exit", "tag:router"], + "tags": [ + "tag:exit", + "tag:router" + ], "ipv4": "100.119.241.111", "ipv6": "fd7a:115c:a1e0::3337:f16f", - "routable_ips": ["172.16.0.0/24"], - "approved_routes": ["172.16.0.0/24"] + "routable_ips": [ + "172.16.0.0/24" + ], + "approved_routes": [ + "172.16.0.0/24" + ] }, "subnet-router": { "hostname": "subnet-router", - "tags": ["tag:router"], + "tags": [ + "tag:router" + ], "ipv4": "100.92.142.61", "ipv6": "fd7a:115c:a1e0::3e37:8e3d", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] + "routable_ips": [ + "10.33.0.0/16" + ], + "approved_routes": [ + "10.33.0.0/16" + ] }, "tagged-client": { "hostname": "tagged-client", - "tags": ["tag:client"], + "tags": [ + "tag:client" + ], "ipv4": "100.83.200.69", "ipv6": "fd7a:115c:a1e0::c537:c845" }, "tagged-prod": { "hostname": "tagged-prod", - "tags": ["tag:prod"], + "tags": [ + "tag:prod" + ], "ipv4": "100.103.8.15", "ipv6": "fd7a:115c:a1e0::5b37:80f" }, "tagged-server": { "hostname": "tagged-server", - "tags": ["tag:server"], + "tags": [ + "tag:server" + ], "ipv4": "100.108.74.26", "ipv6": "fd7a:115c:a1e0::b901:4a87" }, diff --git a/hscontrol/policy/v2/testdata/routes_results/ROUTES-h2_wildcard_dstports_format.hujson b/hscontrol/policy/v2/testdata/routes_results/ROUTES-h2_wildcard_dstports_format.hujson index 2630bce6c..dc7544c05 100644 --- a/hscontrol/policy/v2/testdata/routes_results/ROUTES-h2_wildcard_dstports_format.hujson +++ b/hscontrol/policy/v2/testdata/routes_results/ROUTES-h2_wildcard_dstports_format.hujson @@ -7,24 +7,40 @@ // Expected: Rules on 12 of 12 nodes { "test_id": "ROUTES-h2_wildcard_dstports_format", - "timestamp": "2026-03-17T16:23:01Z", - "propagation_wait_seconds": 10, "input": { - "policy_file": "routes_policies/routes_h2_wildcard_dstports_format.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"], - "tag:ha": ["kratail2tid@passkey"] + "tag:server": [ + "kratail2tid@passkey" + ], + "tag:prod": [ + "kratail2tid@passkey" + ], + "tag:client": [ + "kratail2tid@passkey" + ], + "tag:router": [ + "kratail2tid@passkey" + ], + "tag:exit": [ + "kratail2tid@passkey" + ], + "tag:ha": [ + "kratail2tid@passkey" + ] }, "hosts": { "webserver": "100.108.74.26", @@ -34,89 +50,146 @@ }, "autoApprovers": { "routes": { - "10.0.0.0/8": ["tag:router"], - "172.16.0.0/12": ["tag:router"], - "192.168.0.0/16": ["tag:ha"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.0.0.0/8": [ + "tag:router" + ], + "172.16.0.0/12": [ + "tag:router" + ], + "192.168.0.0/16": [ + "tag:ha" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "acls": [ { "action": "accept", - "src": ["autogroup:member"], - "dst": ["*:*"] + "src": [ + "autogroup:member" + ], + "dst": [ + "*:*" + ] } ] - }, - "api_endpoint": "https://api.tailscale.com/api/v2/tailnet/kratail2tid%40passkey/acl", - "api_response_code": 200 + } }, "topology": { "nodes": { "big-router": { "hostname": "big-router", - "tags": ["tag:router"], + "tags": [ + "tag:router" + ], "ipv4": "100.97.174.21", "ipv6": "fd7a:115c:a1e0::5137:ae15", - "routable_ips": ["10.0.0.0/8"], - "approved_routes": ["10.0.0.0/8"] + "routable_ips": [ + "10.0.0.0/8" + ], + "approved_routes": [ + "10.0.0.0/8" + ] }, "exit-node": { "hostname": "exit-node", - "tags": ["tag:exit"], + "tags": [ + "tag:exit" + ], "ipv4": "100.85.66.106", "ipv6": "fd7a:115c:a1e0::7c37:426a", - "routable_ips": ["0.0.0.0/0", "::/0"], - "approved_routes": ["0.0.0.0/0", "::/0"] + "routable_ips": [ + "0.0.0.0/0", + "::/0" + ], + "approved_routes": [ + "0.0.0.0/0", + "::/0" + ] }, "ha-router1": { "hostname": "ha-router1", - "tags": ["tag:ha"], + "tags": [ + "tag:ha" + ], "ipv4": "100.121.186.70", "ipv6": "fd7a:115c:a1e0::6737:ba46", - "routable_ips": ["192.168.1.0/24"], - "approved_routes": ["192.168.1.0/24"] + "routable_ips": [ + "192.168.1.0/24" + ], + "approved_routes": [ + "192.168.1.0/24" + ] }, "ha-router2": { "hostname": "ha-router2", - "tags": ["tag:ha"], + "tags": [ + "tag:ha" + ], "ipv4": "100.117.104.82", "ipv6": "fd7a:115c:a1e0::7437:6852", - "routable_ips": ["192.168.1.0/24"], - "approved_routes": ["192.168.1.0/24"] + "routable_ips": [ + "192.168.1.0/24" + ], + "approved_routes": [ + "192.168.1.0/24" + ] }, "multi-router": { "hostname": "multi-router", - "tags": ["tag:exit", "tag:router"], + "tags": [ + "tag:exit", + "tag:router" + ], "ipv4": "100.119.241.111", "ipv6": "fd7a:115c:a1e0::3337:f16f", - "routable_ips": ["172.16.0.0/24"], - "approved_routes": ["172.16.0.0/24"] + "routable_ips": [ + "172.16.0.0/24" + ], + "approved_routes": [ + "172.16.0.0/24" + ] }, "subnet-router": { "hostname": "subnet-router", - "tags": ["tag:router"], + "tags": [ + "tag:router" + ], "ipv4": "100.92.142.61", "ipv6": "fd7a:115c:a1e0::3e37:8e3d", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] + "routable_ips": [ + "10.33.0.0/16" + ], + "approved_routes": [ + "10.33.0.0/16" + ] }, "tagged-client": { "hostname": "tagged-client", - "tags": ["tag:client"], + "tags": [ + "tag:client" + ], "ipv4": "100.83.200.69", "ipv6": "fd7a:115c:a1e0::c537:c845" }, "tagged-prod": { "hostname": "tagged-prod", - "tags": ["tag:prod"], + "tags": [ + "tag:prod" + ], "ipv4": "100.103.8.15", "ipv6": "fd7a:115c:a1e0::5b37:80f" }, "tagged-server": { "hostname": "tagged-server", - "tags": ["tag:server"], + "tags": [ + "tag:server" + ], "ipv4": "100.108.74.26", "ipv6": "fd7a:115c:a1e0::b901:4a87" }, diff --git a/hscontrol/policy/v2/testdata/routes_results/ROUTES-h3_cgnat_range_expansion.hujson b/hscontrol/policy/v2/testdata/routes_results/ROUTES-h3_cgnat_range_expansion.hujson index ed7017849..ff18c3033 100644 --- a/hscontrol/policy/v2/testdata/routes_results/ROUTES-h3_cgnat_range_expansion.hujson +++ b/hscontrol/policy/v2/testdata/routes_results/ROUTES-h3_cgnat_range_expansion.hujson @@ -7,24 +7,40 @@ // Expected: Rules on 3 of 12 nodes { "test_id": "ROUTES-h3_cgnat_range_expansion", - "timestamp": "2026-03-17T16:23:12Z", - "propagation_wait_seconds": 10, "input": { - "policy_file": "routes_policies/routes_h3_cgnat_range_expansion.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"], - "tag:ha": ["kratail2tid@passkey"] + "tag:server": [ + "kratail2tid@passkey" + ], + "tag:prod": [ + "kratail2tid@passkey" + ], + "tag:client": [ + "kratail2tid@passkey" + ], + "tag:router": [ + "kratail2tid@passkey" + ], + "tag:exit": [ + "kratail2tid@passkey" + ], + "tag:ha": [ + "kratail2tid@passkey" + ] }, "hosts": { "webserver": "100.108.74.26", @@ -34,89 +50,146 @@ }, "autoApprovers": { "routes": { - "10.0.0.0/8": ["tag:router"], - "172.16.0.0/12": ["tag:router"], - "192.168.0.0/16": ["tag:ha"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.0.0.0/8": [ + "tag:router" + ], + "172.16.0.0/12": [ + "tag:router" + ], + "192.168.0.0/16": [ + "tag:ha" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "acls": [ { "action": "accept", - "src": ["*"], - "dst": ["tag:router:*"] + "src": [ + "*" + ], + "dst": [ + "tag:router:*" + ] } ] - }, - "api_endpoint": "https://api.tailscale.com/api/v2/tailnet/kratail2tid%40passkey/acl", - "api_response_code": 200 + } }, "topology": { "nodes": { "big-router": { "hostname": "big-router", - "tags": ["tag:router"], + "tags": [ + "tag:router" + ], "ipv4": "100.97.174.21", "ipv6": "fd7a:115c:a1e0::5137:ae15", - "routable_ips": ["10.0.0.0/8"], - "approved_routes": ["10.0.0.0/8"] + "routable_ips": [ + "10.0.0.0/8" + ], + "approved_routes": [ + "10.0.0.0/8" + ] }, "exit-node": { "hostname": "exit-node", - "tags": ["tag:exit"], + "tags": [ + "tag:exit" + ], "ipv4": "100.85.66.106", "ipv6": "fd7a:115c:a1e0::7c37:426a", - "routable_ips": ["0.0.0.0/0", "::/0"], - "approved_routes": ["0.0.0.0/0", "::/0"] + "routable_ips": [ + "0.0.0.0/0", + "::/0" + ], + "approved_routes": [ + "0.0.0.0/0", + "::/0" + ] }, "ha-router1": { "hostname": "ha-router1", - "tags": ["tag:ha"], + "tags": [ + "tag:ha" + ], "ipv4": "100.121.186.70", "ipv6": "fd7a:115c:a1e0::6737:ba46", - "routable_ips": ["192.168.1.0/24"], - "approved_routes": ["192.168.1.0/24"] + "routable_ips": [ + "192.168.1.0/24" + ], + "approved_routes": [ + "192.168.1.0/24" + ] }, "ha-router2": { "hostname": "ha-router2", - "tags": ["tag:ha"], + "tags": [ + "tag:ha" + ], "ipv4": "100.117.104.82", "ipv6": "fd7a:115c:a1e0::7437:6852", - "routable_ips": ["192.168.1.0/24"], - "approved_routes": ["192.168.1.0/24"] + "routable_ips": [ + "192.168.1.0/24" + ], + "approved_routes": [ + "192.168.1.0/24" + ] }, "multi-router": { "hostname": "multi-router", - "tags": ["tag:exit", "tag:router"], + "tags": [ + "tag:exit", + "tag:router" + ], "ipv4": "100.119.241.111", "ipv6": "fd7a:115c:a1e0::3337:f16f", - "routable_ips": ["172.16.0.0/24"], - "approved_routes": ["172.16.0.0/24"] + "routable_ips": [ + "172.16.0.0/24" + ], + "approved_routes": [ + "172.16.0.0/24" + ] }, "subnet-router": { "hostname": "subnet-router", - "tags": ["tag:router"], + "tags": [ + "tag:router" + ], "ipv4": "100.92.142.61", "ipv6": "fd7a:115c:a1e0::3e37:8e3d", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] + "routable_ips": [ + "10.33.0.0/16" + ], + "approved_routes": [ + "10.33.0.0/16" + ] }, "tagged-client": { "hostname": "tagged-client", - "tags": ["tag:client"], + "tags": [ + "tag:client" + ], "ipv4": "100.83.200.69", "ipv6": "fd7a:115c:a1e0::c537:c845" }, "tagged-prod": { "hostname": "tagged-prod", - "tags": ["tag:prod"], + "tags": [ + "tag:prod" + ], "ipv4": "100.103.8.15", "ipv6": "fd7a:115c:a1e0::5b37:80f" }, "tagged-server": { "hostname": "tagged-server", - "tags": ["tag:server"], + "tags": [ + "tag:server" + ], "ipv4": "100.108.74.26", "ipv6": "fd7a:115c:a1e0::b901:4a87" }, diff --git a/hscontrol/policy/v2/testdata/routes_results/ROUTES-h4_ipv6_range_in_srcips.hujson b/hscontrol/policy/v2/testdata/routes_results/ROUTES-h4_ipv6_range_in_srcips.hujson index f26f2f90d..2a29e30da 100644 --- a/hscontrol/policy/v2/testdata/routes_results/ROUTES-h4_ipv6_range_in_srcips.hujson +++ b/hscontrol/policy/v2/testdata/routes_results/ROUTES-h4_ipv6_range_in_srcips.hujson @@ -7,24 +7,40 @@ // Expected: Rules on 12 of 12 nodes { "test_id": "ROUTES-h4_ipv6_range_in_srcips", - "timestamp": "2026-03-17T16:23:23Z", - "propagation_wait_seconds": 10, "input": { - "policy_file": "routes_policies/routes_h4_ipv6_range_in_srcips.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"], - "tag:ha": ["kratail2tid@passkey"] + "tag:server": [ + "kratail2tid@passkey" + ], + "tag:prod": [ + "kratail2tid@passkey" + ], + "tag:client": [ + "kratail2tid@passkey" + ], + "tag:router": [ + "kratail2tid@passkey" + ], + "tag:exit": [ + "kratail2tid@passkey" + ], + "tag:ha": [ + "kratail2tid@passkey" + ] }, "hosts": { "webserver": "100.108.74.26", @@ -34,89 +50,146 @@ }, "autoApprovers": { "routes": { - "10.0.0.0/8": ["tag:router"], - "172.16.0.0/12": ["tag:router"], - "192.168.0.0/16": ["tag:ha"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.0.0.0/8": [ + "tag:router" + ], + "172.16.0.0/12": [ + "tag:router" + ], + "192.168.0.0/16": [ + "tag:ha" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "acls": [ { "action": "accept", - "src": ["*"], - "dst": ["*:*"] + "src": [ + "*" + ], + "dst": [ + "*:*" + ] } ] - }, - "api_endpoint": "https://api.tailscale.com/api/v2/tailnet/kratail2tid%40passkey/acl", - "api_response_code": 200 + } }, "topology": { "nodes": { "big-router": { "hostname": "big-router", - "tags": ["tag:router"], + "tags": [ + "tag:router" + ], "ipv4": "100.97.174.21", "ipv6": "fd7a:115c:a1e0::5137:ae15", - "routable_ips": ["10.0.0.0/8"], - "approved_routes": ["10.0.0.0/8"] + "routable_ips": [ + "10.0.0.0/8" + ], + "approved_routes": [ + "10.0.0.0/8" + ] }, "exit-node": { "hostname": "exit-node", - "tags": ["tag:exit"], + "tags": [ + "tag:exit" + ], "ipv4": "100.85.66.106", "ipv6": "fd7a:115c:a1e0::7c37:426a", - "routable_ips": ["0.0.0.0/0", "::/0"], - "approved_routes": ["0.0.0.0/0", "::/0"] + "routable_ips": [ + "0.0.0.0/0", + "::/0" + ], + "approved_routes": [ + "0.0.0.0/0", + "::/0" + ] }, "ha-router1": { "hostname": "ha-router1", - "tags": ["tag:ha"], + "tags": [ + "tag:ha" + ], "ipv4": "100.121.186.70", "ipv6": "fd7a:115c:a1e0::6737:ba46", - "routable_ips": ["192.168.1.0/24"], - "approved_routes": ["192.168.1.0/24"] + "routable_ips": [ + "192.168.1.0/24" + ], + "approved_routes": [ + "192.168.1.0/24" + ] }, "ha-router2": { "hostname": "ha-router2", - "tags": ["tag:ha"], + "tags": [ + "tag:ha" + ], "ipv4": "100.117.104.82", "ipv6": "fd7a:115c:a1e0::7437:6852", - "routable_ips": ["192.168.1.0/24"], - "approved_routes": ["192.168.1.0/24"] + "routable_ips": [ + "192.168.1.0/24" + ], + "approved_routes": [ + "192.168.1.0/24" + ] }, "multi-router": { "hostname": "multi-router", - "tags": ["tag:exit", "tag:router"], + "tags": [ + "tag:exit", + "tag:router" + ], "ipv4": "100.119.241.111", "ipv6": "fd7a:115c:a1e0::3337:f16f", - "routable_ips": ["172.16.0.0/24"], - "approved_routes": ["172.16.0.0/24"] + "routable_ips": [ + "172.16.0.0/24" + ], + "approved_routes": [ + "172.16.0.0/24" + ] }, "subnet-router": { "hostname": "subnet-router", - "tags": ["tag:router"], + "tags": [ + "tag:router" + ], "ipv4": "100.92.142.61", "ipv6": "fd7a:115c:a1e0::3e37:8e3d", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] + "routable_ips": [ + "10.33.0.0/16" + ], + "approved_routes": [ + "10.33.0.0/16" + ] }, "tagged-client": { "hostname": "tagged-client", - "tags": ["tag:client"], + "tags": [ + "tag:client" + ], "ipv4": "100.83.200.69", "ipv6": "fd7a:115c:a1e0::c537:c845" }, "tagged-prod": { "hostname": "tagged-prod", - "tags": ["tag:prod"], + "tags": [ + "tag:prod" + ], "ipv4": "100.103.8.15", "ipv6": "fd7a:115c:a1e0::5b37:80f" }, "tagged-server": { "hostname": "tagged-server", - "tags": ["tag:server"], + "tags": [ + "tag:server" + ], "ipv4": "100.108.74.26", "ipv6": "fd7a:115c:a1e0::b901:4a87" }, diff --git a/hscontrol/policy/v2/testdata/routes_results/ROUTES-h5_subnet_overlaps_cgnat.hujson b/hscontrol/policy/v2/testdata/routes_results/ROUTES-h5_subnet_overlaps_cgnat.hujson index 5ca15f58c..33cd8febd 100644 --- a/hscontrol/policy/v2/testdata/routes_results/ROUTES-h5_subnet_overlaps_cgnat.hujson +++ b/hscontrol/policy/v2/testdata/routes_results/ROUTES-h5_subnet_overlaps_cgnat.hujson @@ -7,24 +7,40 @@ // Expected: No filter rules { "test_id": "ROUTES-h5_subnet_overlaps_cgnat", - "timestamp": "2026-03-17T16:23:33Z", - "propagation_wait_seconds": 10, "input": { - "policy_file": "routes_policies/routes_h5_subnet_overlaps_cgnat.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"], - "tag:ha": ["kratail2tid@passkey"] + "tag:server": [ + "kratail2tid@passkey" + ], + "tag:prod": [ + "kratail2tid@passkey" + ], + "tag:client": [ + "kratail2tid@passkey" + ], + "tag:router": [ + "kratail2tid@passkey" + ], + "tag:exit": [ + "kratail2tid@passkey" + ], + "tag:ha": [ + "kratail2tid@passkey" + ] }, "hosts": { "webserver": "100.108.74.26", @@ -34,89 +50,146 @@ }, "autoApprovers": { "routes": { - "10.0.0.0/8": ["tag:router"], - "172.16.0.0/12": ["tag:router"], - "192.168.0.0/16": ["tag:ha"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.0.0.0/8": [ + "tag:router" + ], + "172.16.0.0/12": [ + "tag:router" + ], + "192.168.0.0/16": [ + "tag:ha" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "acls": [ { "action": "accept", - "src": ["*"], - "dst": ["100.64.0.0/24:*"] + "src": [ + "*" + ], + "dst": [ + "100.64.0.0/24:*" + ] } ] - }, - "api_endpoint": "https://api.tailscale.com/api/v2/tailnet/kratail2tid%40passkey/acl", - "api_response_code": 200 + } }, "topology": { "nodes": { "big-router": { "hostname": "big-router", - "tags": ["tag:router"], + "tags": [ + "tag:router" + ], "ipv4": "100.97.174.21", "ipv6": "fd7a:115c:a1e0::5137:ae15", - "routable_ips": ["10.0.0.0/8"], - "approved_routes": ["10.0.0.0/8"] + "routable_ips": [ + "10.0.0.0/8" + ], + "approved_routes": [ + "10.0.0.0/8" + ] }, "exit-node": { "hostname": "exit-node", - "tags": ["tag:exit"], + "tags": [ + "tag:exit" + ], "ipv4": "100.85.66.106", "ipv6": "fd7a:115c:a1e0::7c37:426a", - "routable_ips": ["0.0.0.0/0", "::/0"], - "approved_routes": ["0.0.0.0/0", "::/0"] + "routable_ips": [ + "0.0.0.0/0", + "::/0" + ], + "approved_routes": [ + "0.0.0.0/0", + "::/0" + ] }, "ha-router1": { "hostname": "ha-router1", - "tags": ["tag:ha"], + "tags": [ + "tag:ha" + ], "ipv4": "100.121.186.70", "ipv6": "fd7a:115c:a1e0::6737:ba46", - "routable_ips": ["192.168.1.0/24"], - "approved_routes": ["192.168.1.0/24"] + "routable_ips": [ + "192.168.1.0/24" + ], + "approved_routes": [ + "192.168.1.0/24" + ] }, "ha-router2": { "hostname": "ha-router2", - "tags": ["tag:ha"], + "tags": [ + "tag:ha" + ], "ipv4": "100.117.104.82", "ipv6": "fd7a:115c:a1e0::7437:6852", - "routable_ips": ["192.168.1.0/24"], - "approved_routes": ["192.168.1.0/24"] + "routable_ips": [ + "192.168.1.0/24" + ], + "approved_routes": [ + "192.168.1.0/24" + ] }, "multi-router": { "hostname": "multi-router", - "tags": ["tag:exit", "tag:router"], + "tags": [ + "tag:exit", + "tag:router" + ], "ipv4": "100.119.241.111", "ipv6": "fd7a:115c:a1e0::3337:f16f", - "routable_ips": ["172.16.0.0/24"], - "approved_routes": ["172.16.0.0/24"] + "routable_ips": [ + "172.16.0.0/24" + ], + "approved_routes": [ + "172.16.0.0/24" + ] }, "subnet-router": { "hostname": "subnet-router", - "tags": ["tag:router"], + "tags": [ + "tag:router" + ], "ipv4": "100.92.142.61", "ipv6": "fd7a:115c:a1e0::3e37:8e3d", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] + "routable_ips": [ + "10.33.0.0/16" + ], + "approved_routes": [ + "10.33.0.0/16" + ] }, "tagged-client": { "hostname": "tagged-client", - "tags": ["tag:client"], + "tags": [ + "tag:client" + ], "ipv4": "100.83.200.69", "ipv6": "fd7a:115c:a1e0::c537:c845" }, "tagged-prod": { "hostname": "tagged-prod", - "tags": ["tag:prod"], + "tags": [ + "tag:prod" + ], "ipv4": "100.103.8.15", "ipv6": "fd7a:115c:a1e0::5b37:80f" }, "tagged-server": { "hostname": "tagged-server", - "tags": ["tag:server"], + "tags": [ + "tag:server" + ], "ipv4": "100.108.74.26", "ipv6": "fd7a:115c:a1e0::b901:4a87" }, diff --git a/hscontrol/policy/v2/testdata/routes_results/ROUTES-h6_loopback_routes_not_distributed.hujson b/hscontrol/policy/v2/testdata/routes_results/ROUTES-h6_loopback_routes_not_distributed.hujson index 464223173..7c3ed8591 100644 --- a/hscontrol/policy/v2/testdata/routes_results/ROUTES-h6_loopback_routes_not_distributed.hujson +++ b/hscontrol/policy/v2/testdata/routes_results/ROUTES-h6_loopback_routes_not_distributed.hujson @@ -7,24 +7,40 @@ // Expected: No filter rules { "test_id": "ROUTES-h6_loopback_routes_not_distributed", - "timestamp": "2026-03-17T16:23:44Z", - "propagation_wait_seconds": 10, "input": { - "policy_file": "routes_policies/routes_h6_loopback_routes_not_distributed.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"], - "tag:ha": ["kratail2tid@passkey"] + "tag:server": [ + "kratail2tid@passkey" + ], + "tag:prod": [ + "kratail2tid@passkey" + ], + "tag:client": [ + "kratail2tid@passkey" + ], + "tag:router": [ + "kratail2tid@passkey" + ], + "tag:exit": [ + "kratail2tid@passkey" + ], + "tag:ha": [ + "kratail2tid@passkey" + ] }, "hosts": { "webserver": "100.108.74.26", @@ -34,89 +50,146 @@ }, "autoApprovers": { "routes": { - "10.0.0.0/8": ["tag:router"], - "172.16.0.0/12": ["tag:router"], - "192.168.0.0/16": ["tag:ha"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.0.0.0/8": [ + "tag:router" + ], + "172.16.0.0/12": [ + "tag:router" + ], + "192.168.0.0/16": [ + "tag:ha" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "acls": [ { "action": "accept", - "src": ["*"], - "dst": ["127.0.0.1/32:*"] + "src": [ + "*" + ], + "dst": [ + "127.0.0.1/32:*" + ] } ] - }, - "api_endpoint": "https://api.tailscale.com/api/v2/tailnet/kratail2tid%40passkey/acl", - "api_response_code": 200 + } }, "topology": { "nodes": { "big-router": { "hostname": "big-router", - "tags": ["tag:router"], + "tags": [ + "tag:router" + ], "ipv4": "100.97.174.21", "ipv6": "fd7a:115c:a1e0::5137:ae15", - "routable_ips": ["10.0.0.0/8"], - "approved_routes": ["10.0.0.0/8"] + "routable_ips": [ + "10.0.0.0/8" + ], + "approved_routes": [ + "10.0.0.0/8" + ] }, "exit-node": { "hostname": "exit-node", - "tags": ["tag:exit"], + "tags": [ + "tag:exit" + ], "ipv4": "100.85.66.106", "ipv6": "fd7a:115c:a1e0::7c37:426a", - "routable_ips": ["0.0.0.0/0", "::/0"], - "approved_routes": ["0.0.0.0/0", "::/0"] + "routable_ips": [ + "0.0.0.0/0", + "::/0" + ], + "approved_routes": [ + "0.0.0.0/0", + "::/0" + ] }, "ha-router1": { "hostname": "ha-router1", - "tags": ["tag:ha"], + "tags": [ + "tag:ha" + ], "ipv4": "100.121.186.70", "ipv6": "fd7a:115c:a1e0::6737:ba46", - "routable_ips": ["192.168.1.0/24"], - "approved_routes": ["192.168.1.0/24"] + "routable_ips": [ + "192.168.1.0/24" + ], + "approved_routes": [ + "192.168.1.0/24" + ] }, "ha-router2": { "hostname": "ha-router2", - "tags": ["tag:ha"], + "tags": [ + "tag:ha" + ], "ipv4": "100.117.104.82", "ipv6": "fd7a:115c:a1e0::7437:6852", - "routable_ips": ["192.168.1.0/24"], - "approved_routes": ["192.168.1.0/24"] + "routable_ips": [ + "192.168.1.0/24" + ], + "approved_routes": [ + "192.168.1.0/24" + ] }, "multi-router": { "hostname": "multi-router", - "tags": ["tag:exit", "tag:router"], + "tags": [ + "tag:exit", + "tag:router" + ], "ipv4": "100.119.241.111", "ipv6": "fd7a:115c:a1e0::3337:f16f", - "routable_ips": ["172.16.0.0/24"], - "approved_routes": ["172.16.0.0/24"] + "routable_ips": [ + "172.16.0.0/24" + ], + "approved_routes": [ + "172.16.0.0/24" + ] }, "subnet-router": { "hostname": "subnet-router", - "tags": ["tag:router"], + "tags": [ + "tag:router" + ], "ipv4": "100.92.142.61", "ipv6": "fd7a:115c:a1e0::3e37:8e3d", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] + "routable_ips": [ + "10.33.0.0/16" + ], + "approved_routes": [ + "10.33.0.0/16" + ] }, "tagged-client": { "hostname": "tagged-client", - "tags": ["tag:client"], + "tags": [ + "tag:client" + ], "ipv4": "100.83.200.69", "ipv6": "fd7a:115c:a1e0::c537:c845" }, "tagged-prod": { "hostname": "tagged-prod", - "tags": ["tag:prod"], + "tags": [ + "tag:prod" + ], "ipv4": "100.103.8.15", "ipv6": "fd7a:115c:a1e0::5b37:80f" }, "tagged-server": { "hostname": "tagged-server", - "tags": ["tag:server"], + "tags": [ + "tag:server" + ], "ipv4": "100.108.74.26", "ipv6": "fd7a:115c:a1e0::b901:4a87" }, diff --git a/hscontrol/policy/v2/testdata/routes_results/ROUTES-h7_two_nodes_same_subnet.hujson b/hscontrol/policy/v2/testdata/routes_results/ROUTES-h7_two_nodes_same_subnet.hujson index 7daa7d764..a10564102 100644 --- a/hscontrol/policy/v2/testdata/routes_results/ROUTES-h7_two_nodes_same_subnet.hujson +++ b/hscontrol/policy/v2/testdata/routes_results/ROUTES-h7_two_nodes_same_subnet.hujson @@ -7,24 +7,40 @@ // Expected: Rules on 2 of 12 nodes { "test_id": "ROUTES-h7_two_nodes_same_subnet", - "timestamp": "2026-03-17T16:23:55Z", - "propagation_wait_seconds": 10, "input": { - "policy_file": "routes_policies/routes_h7_two_nodes_same_subnet.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"], - "tag:ha": ["kratail2tid@passkey"] + "tag:server": [ + "kratail2tid@passkey" + ], + "tag:prod": [ + "kratail2tid@passkey" + ], + "tag:client": [ + "kratail2tid@passkey" + ], + "tag:router": [ + "kratail2tid@passkey" + ], + "tag:exit": [ + "kratail2tid@passkey" + ], + "tag:ha": [ + "kratail2tid@passkey" + ] }, "hosts": { "webserver": "100.108.74.26", @@ -34,89 +50,146 @@ }, "autoApprovers": { "routes": { - "10.0.0.0/8": ["tag:router"], - "172.16.0.0/12": ["tag:router"], - "192.168.0.0/16": ["tag:ha"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.0.0.0/8": [ + "tag:router" + ], + "172.16.0.0/12": [ + "tag:router" + ], + "192.168.0.0/16": [ + "tag:ha" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "acls": [ { "action": "accept", - "src": ["*"], - "dst": ["192.168.1.0/24:*"] + "src": [ + "*" + ], + "dst": [ + "192.168.1.0/24:*" + ] } ] - }, - "api_endpoint": "https://api.tailscale.com/api/v2/tailnet/kratail2tid%40passkey/acl", - "api_response_code": 200 + } }, "topology": { "nodes": { "big-router": { "hostname": "big-router", - "tags": ["tag:router"], + "tags": [ + "tag:router" + ], "ipv4": "100.97.174.21", "ipv6": "fd7a:115c:a1e0::5137:ae15", - "routable_ips": ["10.0.0.0/8"], - "approved_routes": ["10.0.0.0/8"] + "routable_ips": [ + "10.0.0.0/8" + ], + "approved_routes": [ + "10.0.0.0/8" + ] }, "exit-node": { "hostname": "exit-node", - "tags": ["tag:exit"], + "tags": [ + "tag:exit" + ], "ipv4": "100.85.66.106", "ipv6": "fd7a:115c:a1e0::7c37:426a", - "routable_ips": ["0.0.0.0/0", "::/0"], - "approved_routes": ["0.0.0.0/0", "::/0"] + "routable_ips": [ + "0.0.0.0/0", + "::/0" + ], + "approved_routes": [ + "0.0.0.0/0", + "::/0" + ] }, "ha-router1": { "hostname": "ha-router1", - "tags": ["tag:ha"], + "tags": [ + "tag:ha" + ], "ipv4": "100.121.186.70", "ipv6": "fd7a:115c:a1e0::6737:ba46", - "routable_ips": ["192.168.1.0/24"], - "approved_routes": ["192.168.1.0/24"] + "routable_ips": [ + "192.168.1.0/24" + ], + "approved_routes": [ + "192.168.1.0/24" + ] }, "ha-router2": { "hostname": "ha-router2", - "tags": ["tag:ha"], + "tags": [ + "tag:ha" + ], "ipv4": "100.117.104.82", "ipv6": "fd7a:115c:a1e0::7437:6852", - "routable_ips": ["192.168.1.0/24"], - "approved_routes": ["192.168.1.0/24"] + "routable_ips": [ + "192.168.1.0/24" + ], + "approved_routes": [ + "192.168.1.0/24" + ] }, "multi-router": { "hostname": "multi-router", - "tags": ["tag:exit", "tag:router"], + "tags": [ + "tag:exit", + "tag:router" + ], "ipv4": "100.119.241.111", "ipv6": "fd7a:115c:a1e0::3337:f16f", - "routable_ips": ["172.16.0.0/24"], - "approved_routes": ["172.16.0.0/24"] + "routable_ips": [ + "172.16.0.0/24" + ], + "approved_routes": [ + "172.16.0.0/24" + ] }, "subnet-router": { "hostname": "subnet-router", - "tags": ["tag:router"], + "tags": [ + "tag:router" + ], "ipv4": "100.92.142.61", "ipv6": "fd7a:115c:a1e0::3e37:8e3d", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] + "routable_ips": [ + "10.33.0.0/16" + ], + "approved_routes": [ + "10.33.0.0/16" + ] }, "tagged-client": { "hostname": "tagged-client", - "tags": ["tag:client"], + "tags": [ + "tag:client" + ], "ipv4": "100.83.200.69", "ipv6": "fd7a:115c:a1e0::c537:c845" }, "tagged-prod": { "hostname": "tagged-prod", - "tags": ["tag:prod"], + "tags": [ + "tag:prod" + ], "ipv4": "100.103.8.15", "ipv6": "fd7a:115c:a1e0::5b37:80f" }, "tagged-server": { "hostname": "tagged-server", - "tags": ["tag:server"], + "tags": [ + "tag:server" + ], "ipv4": "100.108.74.26", "ipv6": "fd7a:115c:a1e0::b901:4a87" }, diff --git a/hscontrol/policy/v2/testdata/routes_results/ROUTES-h8_cgnat_overlap_blocked.hujson b/hscontrol/policy/v2/testdata/routes_results/ROUTES-h8_cgnat_overlap_blocked.hujson index db01bcf7b..b5a0fcefa 100644 --- a/hscontrol/policy/v2/testdata/routes_results/ROUTES-h8_cgnat_overlap_blocked.hujson +++ b/hscontrol/policy/v2/testdata/routes_results/ROUTES-h8_cgnat_overlap_blocked.hujson @@ -7,24 +7,40 @@ // Expected: No filter rules { "test_id": "ROUTES-h8_cgnat_overlap_blocked", - "timestamp": "2026-03-17T16:24:05Z", - "propagation_wait_seconds": 10, "input": { - "policy_file": "routes_policies/routes_h8_cgnat_overlap_blocked.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"], - "tag:ha": ["kratail2tid@passkey"] + "tag:server": [ + "kratail2tid@passkey" + ], + "tag:prod": [ + "kratail2tid@passkey" + ], + "tag:client": [ + "kratail2tid@passkey" + ], + "tag:router": [ + "kratail2tid@passkey" + ], + "tag:exit": [ + "kratail2tid@passkey" + ], + "tag:ha": [ + "kratail2tid@passkey" + ] }, "hosts": { "webserver": "100.108.74.26", @@ -34,89 +50,146 @@ }, "autoApprovers": { "routes": { - "10.0.0.0/8": ["tag:router"], - "172.16.0.0/12": ["tag:router"], - "192.168.0.0/16": ["tag:ha"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.0.0.0/8": [ + "tag:router" + ], + "172.16.0.0/12": [ + "tag:router" + ], + "192.168.0.0/16": [ + "tag:ha" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "acls": [ { "action": "accept", - "src": ["*"], - "dst": ["100.100.0.0/16:*"] + "src": [ + "*" + ], + "dst": [ + "100.100.0.0/16:*" + ] } ] - }, - "api_endpoint": "https://api.tailscale.com/api/v2/tailnet/kratail2tid%40passkey/acl", - "api_response_code": 200 + } }, "topology": { "nodes": { "big-router": { "hostname": "big-router", - "tags": ["tag:router"], + "tags": [ + "tag:router" + ], "ipv4": "100.97.174.21", "ipv6": "fd7a:115c:a1e0::5137:ae15", - "routable_ips": ["10.0.0.0/8"], - "approved_routes": ["10.0.0.0/8"] + "routable_ips": [ + "10.0.0.0/8" + ], + "approved_routes": [ + "10.0.0.0/8" + ] }, "exit-node": { "hostname": "exit-node", - "tags": ["tag:exit"], + "tags": [ + "tag:exit" + ], "ipv4": "100.85.66.106", "ipv6": "fd7a:115c:a1e0::7c37:426a", - "routable_ips": ["0.0.0.0/0", "::/0"], - "approved_routes": ["0.0.0.0/0", "::/0"] + "routable_ips": [ + "0.0.0.0/0", + "::/0" + ], + "approved_routes": [ + "0.0.0.0/0", + "::/0" + ] }, "ha-router1": { "hostname": "ha-router1", - "tags": ["tag:ha"], + "tags": [ + "tag:ha" + ], "ipv4": "100.121.186.70", "ipv6": "fd7a:115c:a1e0::6737:ba46", - "routable_ips": ["192.168.1.0/24"], - "approved_routes": ["192.168.1.0/24"] + "routable_ips": [ + "192.168.1.0/24" + ], + "approved_routes": [ + "192.168.1.0/24" + ] }, "ha-router2": { "hostname": "ha-router2", - "tags": ["tag:ha"], + "tags": [ + "tag:ha" + ], "ipv4": "100.117.104.82", "ipv6": "fd7a:115c:a1e0::7437:6852", - "routable_ips": ["192.168.1.0/24"], - "approved_routes": ["192.168.1.0/24"] + "routable_ips": [ + "192.168.1.0/24" + ], + "approved_routes": [ + "192.168.1.0/24" + ] }, "multi-router": { "hostname": "multi-router", - "tags": ["tag:exit", "tag:router"], + "tags": [ + "tag:exit", + "tag:router" + ], "ipv4": "100.119.241.111", "ipv6": "fd7a:115c:a1e0::3337:f16f", - "routable_ips": ["172.16.0.0/24"], - "approved_routes": ["172.16.0.0/24"] + "routable_ips": [ + "172.16.0.0/24" + ], + "approved_routes": [ + "172.16.0.0/24" + ] }, "subnet-router": { "hostname": "subnet-router", - "tags": ["tag:router"], + "tags": [ + "tag:router" + ], "ipv4": "100.92.142.61", "ipv6": "fd7a:115c:a1e0::3e37:8e3d", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] + "routable_ips": [ + "10.33.0.0/16" + ], + "approved_routes": [ + "10.33.0.0/16" + ] }, "tagged-client": { "hostname": "tagged-client", - "tags": ["tag:client"], + "tags": [ + "tag:client" + ], "ipv4": "100.83.200.69", "ipv6": "fd7a:115c:a1e0::c537:c845" }, "tagged-prod": { "hostname": "tagged-prod", - "tags": ["tag:prod"], + "tags": [ + "tag:prod" + ], "ipv4": "100.103.8.15", "ipv6": "fd7a:115c:a1e0::5b37:80f" }, "tagged-server": { "hostname": "tagged-server", - "tags": ["tag:server"], + "tags": [ + "tag:server" + ], "ipv4": "100.108.74.26", "ipv6": "fd7a:115c:a1e0::b901:4a87" }, diff --git a/hscontrol/policy/v2/testdata/routes_results/ROUTES-h9_large_prefix_works.hujson b/hscontrol/policy/v2/testdata/routes_results/ROUTES-h9_large_prefix_works.hujson index 0917dfaba..d0e273d49 100644 --- a/hscontrol/policy/v2/testdata/routes_results/ROUTES-h9_large_prefix_works.hujson +++ b/hscontrol/policy/v2/testdata/routes_results/ROUTES-h9_large_prefix_works.hujson @@ -7,24 +7,40 @@ // Expected: Rules on 2 of 12 nodes { "test_id": "ROUTES-h9_large_prefix_works", - "timestamp": "2026-03-17T16:24:16Z", - "propagation_wait_seconds": 10, "input": { - "policy_file": "routes_policies/routes_h9_large_prefix_works.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"], - "tag:ha": ["kratail2tid@passkey"] + "tag:server": [ + "kratail2tid@passkey" + ], + "tag:prod": [ + "kratail2tid@passkey" + ], + "tag:client": [ + "kratail2tid@passkey" + ], + "tag:router": [ + "kratail2tid@passkey" + ], + "tag:exit": [ + "kratail2tid@passkey" + ], + "tag:ha": [ + "kratail2tid@passkey" + ] }, "hosts": { "webserver": "100.108.74.26", @@ -34,89 +50,146 @@ }, "autoApprovers": { "routes": { - "10.0.0.0/8": ["tag:router"], - "172.16.0.0/12": ["tag:router"], - "192.168.0.0/16": ["tag:ha"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.0.0.0/8": [ + "tag:router" + ], + "172.16.0.0/12": [ + "tag:router" + ], + "192.168.0.0/16": [ + "tag:ha" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "acls": [ { "action": "accept", - "src": ["autogroup:member"], - "dst": ["10.0.0.0/8:*"] + "src": [ + "autogroup:member" + ], + "dst": [ + "10.0.0.0/8:*" + ] } ] - }, - "api_endpoint": "https://api.tailscale.com/api/v2/tailnet/kratail2tid%40passkey/acl", - "api_response_code": 200 + } }, "topology": { "nodes": { "big-router": { "hostname": "big-router", - "tags": ["tag:router"], + "tags": [ + "tag:router" + ], "ipv4": "100.97.174.21", "ipv6": "fd7a:115c:a1e0::5137:ae15", - "routable_ips": ["10.0.0.0/8"], - "approved_routes": ["10.0.0.0/8"] + "routable_ips": [ + "10.0.0.0/8" + ], + "approved_routes": [ + "10.0.0.0/8" + ] }, "exit-node": { "hostname": "exit-node", - "tags": ["tag:exit"], + "tags": [ + "tag:exit" + ], "ipv4": "100.85.66.106", "ipv6": "fd7a:115c:a1e0::7c37:426a", - "routable_ips": ["0.0.0.0/0", "::/0"], - "approved_routes": ["0.0.0.0/0", "::/0"] + "routable_ips": [ + "0.0.0.0/0", + "::/0" + ], + "approved_routes": [ + "0.0.0.0/0", + "::/0" + ] }, "ha-router1": { "hostname": "ha-router1", - "tags": ["tag:ha"], + "tags": [ + "tag:ha" + ], "ipv4": "100.121.186.70", "ipv6": "fd7a:115c:a1e0::6737:ba46", - "routable_ips": ["192.168.1.0/24"], - "approved_routes": ["192.168.1.0/24"] + "routable_ips": [ + "192.168.1.0/24" + ], + "approved_routes": [ + "192.168.1.0/24" + ] }, "ha-router2": { "hostname": "ha-router2", - "tags": ["tag:ha"], + "tags": [ + "tag:ha" + ], "ipv4": "100.117.104.82", "ipv6": "fd7a:115c:a1e0::7437:6852", - "routable_ips": ["192.168.1.0/24"], - "approved_routes": ["192.168.1.0/24"] + "routable_ips": [ + "192.168.1.0/24" + ], + "approved_routes": [ + "192.168.1.0/24" + ] }, "multi-router": { "hostname": "multi-router", - "tags": ["tag:exit", "tag:router"], + "tags": [ + "tag:exit", + "tag:router" + ], "ipv4": "100.119.241.111", "ipv6": "fd7a:115c:a1e0::3337:f16f", - "routable_ips": ["172.16.0.0/24"], - "approved_routes": ["172.16.0.0/24"] + "routable_ips": [ + "172.16.0.0/24" + ], + "approved_routes": [ + "172.16.0.0/24" + ] }, "subnet-router": { "hostname": "subnet-router", - "tags": ["tag:router"], + "tags": [ + "tag:router" + ], "ipv4": "100.92.142.61", "ipv6": "fd7a:115c:a1e0::3e37:8e3d", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] + "routable_ips": [ + "10.33.0.0/16" + ], + "approved_routes": [ + "10.33.0.0/16" + ] }, "tagged-client": { "hostname": "tagged-client", - "tags": ["tag:client"], + "tags": [ + "tag:client" + ], "ipv4": "100.83.200.69", "ipv6": "fd7a:115c:a1e0::c537:c845" }, "tagged-prod": { "hostname": "tagged-prod", - "tags": ["tag:prod"], + "tags": [ + "tag:prod" + ], "ipv4": "100.103.8.15", "ipv6": "fd7a:115c:a1e0::5b37:80f" }, "tagged-server": { "hostname": "tagged-server", - "tags": ["tag:server"], + "tags": [ + "tag:server" + ], "ipv4": "100.108.74.26", "ipv6": "fd7a:115c:a1e0::b901:4a87" }, diff --git a/hscontrol/policy/v2/testdata/routes_results/ROUTES-i1_ipv6_subnet_route.hujson b/hscontrol/policy/v2/testdata/routes_results/ROUTES-i1_ipv6_subnet_route.hujson index 61e95f750..7a47de434 100644 --- a/hscontrol/policy/v2/testdata/routes_results/ROUTES-i1_ipv6_subnet_route.hujson +++ b/hscontrol/policy/v2/testdata/routes_results/ROUTES-i1_ipv6_subnet_route.hujson @@ -7,24 +7,40 @@ // Expected: Rules on 12 of 12 nodes { "test_id": "ROUTES-i1_ipv6_subnet_route", - "timestamp": "2026-03-17T16:24:27Z", - "propagation_wait_seconds": 10, "input": { - "policy_file": "routes_policies/routes_i1_ipv6_subnet_route.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"], - "tag:ha": ["kratail2tid@passkey"] + "tag:server": [ + "kratail2tid@passkey" + ], + "tag:prod": [ + "kratail2tid@passkey" + ], + "tag:client": [ + "kratail2tid@passkey" + ], + "tag:router": [ + "kratail2tid@passkey" + ], + "tag:exit": [ + "kratail2tid@passkey" + ], + "tag:ha": [ + "kratail2tid@passkey" + ] }, "hosts": { "webserver": "100.108.74.26", @@ -34,89 +50,146 @@ }, "autoApprovers": { "routes": { - "10.0.0.0/8": ["tag:router"], - "172.16.0.0/12": ["tag:router"], - "192.168.0.0/16": ["tag:ha"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.0.0.0/8": [ + "tag:router" + ], + "172.16.0.0/12": [ + "tag:router" + ], + "192.168.0.0/16": [ + "tag:ha" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "acls": [ { "action": "accept", - "src": ["*"], - "dst": ["*:*"] + "src": [ + "*" + ], + "dst": [ + "*:*" + ] } ] - }, - "api_endpoint": "https://api.tailscale.com/api/v2/tailnet/kratail2tid%40passkey/acl", - "api_response_code": 200 + } }, "topology": { "nodes": { "big-router": { "hostname": "big-router", - "tags": ["tag:router"], + "tags": [ + "tag:router" + ], "ipv4": "100.97.174.21", "ipv6": "fd7a:115c:a1e0::5137:ae15", - "routable_ips": ["10.0.0.0/8"], - "approved_routes": ["10.0.0.0/8"] + "routable_ips": [ + "10.0.0.0/8" + ], + "approved_routes": [ + "10.0.0.0/8" + ] }, "exit-node": { "hostname": "exit-node", - "tags": ["tag:exit"], + "tags": [ + "tag:exit" + ], "ipv4": "100.85.66.106", "ipv6": "fd7a:115c:a1e0::7c37:426a", - "routable_ips": ["0.0.0.0/0", "::/0"], - "approved_routes": ["0.0.0.0/0", "::/0"] + "routable_ips": [ + "0.0.0.0/0", + "::/0" + ], + "approved_routes": [ + "0.0.0.0/0", + "::/0" + ] }, "ha-router1": { "hostname": "ha-router1", - "tags": ["tag:ha"], + "tags": [ + "tag:ha" + ], "ipv4": "100.121.186.70", "ipv6": "fd7a:115c:a1e0::6737:ba46", - "routable_ips": ["192.168.1.0/24"], - "approved_routes": ["192.168.1.0/24"] + "routable_ips": [ + "192.168.1.0/24" + ], + "approved_routes": [ + "192.168.1.0/24" + ] }, "ha-router2": { "hostname": "ha-router2", - "tags": ["tag:ha"], + "tags": [ + "tag:ha" + ], "ipv4": "100.117.104.82", "ipv6": "fd7a:115c:a1e0::7437:6852", - "routable_ips": ["192.168.1.0/24"], - "approved_routes": ["192.168.1.0/24"] + "routable_ips": [ + "192.168.1.0/24" + ], + "approved_routes": [ + "192.168.1.0/24" + ] }, "multi-router": { "hostname": "multi-router", - "tags": ["tag:exit", "tag:router"], + "tags": [ + "tag:exit", + "tag:router" + ], "ipv4": "100.119.241.111", "ipv6": "fd7a:115c:a1e0::3337:f16f", - "routable_ips": ["172.16.0.0/24"], - "approved_routes": ["172.16.0.0/24"] + "routable_ips": [ + "172.16.0.0/24" + ], + "approved_routes": [ + "172.16.0.0/24" + ] }, "subnet-router": { "hostname": "subnet-router", - "tags": ["tag:router"], + "tags": [ + "tag:router" + ], "ipv4": "100.92.142.61", "ipv6": "fd7a:115c:a1e0::3e37:8e3d", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] + "routable_ips": [ + "10.33.0.0/16" + ], + "approved_routes": [ + "10.33.0.0/16" + ] }, "tagged-client": { "hostname": "tagged-client", - "tags": ["tag:client"], + "tags": [ + "tag:client" + ], "ipv4": "100.83.200.69", "ipv6": "fd7a:115c:a1e0::c537:c845" }, "tagged-prod": { "hostname": "tagged-prod", - "tags": ["tag:prod"], + "tags": [ + "tag:prod" + ], "ipv4": "100.103.8.15", "ipv6": "fd7a:115c:a1e0::5b37:80f" }, "tagged-server": { "hostname": "tagged-server", - "tags": ["tag:server"], + "tags": [ + "tag:server" + ], "ipv4": "100.108.74.26", "ipv6": "fd7a:115c:a1e0::b901:4a87" }, diff --git a/hscontrol/policy/v2/testdata/routes_results/ROUTES-i2_ipv6_exit_route.hujson b/hscontrol/policy/v2/testdata/routes_results/ROUTES-i2_ipv6_exit_route.hujson index def3a0a8a..216a35530 100644 --- a/hscontrol/policy/v2/testdata/routes_results/ROUTES-i2_ipv6_exit_route.hujson +++ b/hscontrol/policy/v2/testdata/routes_results/ROUTES-i2_ipv6_exit_route.hujson @@ -7,24 +7,40 @@ // Expected: Rules on 12 of 12 nodes { "test_id": "ROUTES-i2_ipv6_exit_route", - "timestamp": "2026-03-17T16:24:37Z", - "propagation_wait_seconds": 10, "input": { - "policy_file": "routes_policies/routes_i2_ipv6_exit_route.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"], - "tag:ha": ["kratail2tid@passkey"] + "tag:server": [ + "kratail2tid@passkey" + ], + "tag:prod": [ + "kratail2tid@passkey" + ], + "tag:client": [ + "kratail2tid@passkey" + ], + "tag:router": [ + "kratail2tid@passkey" + ], + "tag:exit": [ + "kratail2tid@passkey" + ], + "tag:ha": [ + "kratail2tid@passkey" + ] }, "hosts": { "webserver": "100.108.74.26", @@ -34,89 +50,146 @@ }, "autoApprovers": { "routes": { - "10.0.0.0/8": ["tag:router"], - "172.16.0.0/12": ["tag:router"], - "192.168.0.0/16": ["tag:ha"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.0.0.0/8": [ + "tag:router" + ], + "172.16.0.0/12": [ + "tag:router" + ], + "192.168.0.0/16": [ + "tag:ha" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "acls": [ { "action": "accept", - "src": ["*"], - "dst": ["*:*"] + "src": [ + "*" + ], + "dst": [ + "*:*" + ] } ] - }, - "api_endpoint": "https://api.tailscale.com/api/v2/tailnet/kratail2tid%40passkey/acl", - "api_response_code": 200 + } }, "topology": { "nodes": { "big-router": { "hostname": "big-router", - "tags": ["tag:router"], + "tags": [ + "tag:router" + ], "ipv4": "100.97.174.21", "ipv6": "fd7a:115c:a1e0::5137:ae15", - "routable_ips": ["10.0.0.0/8"], - "approved_routes": ["10.0.0.0/8"] + "routable_ips": [ + "10.0.0.0/8" + ], + "approved_routes": [ + "10.0.0.0/8" + ] }, "exit-node": { "hostname": "exit-node", - "tags": ["tag:exit"], + "tags": [ + "tag:exit" + ], "ipv4": "100.85.66.106", "ipv6": "fd7a:115c:a1e0::7c37:426a", - "routable_ips": ["0.0.0.0/0", "::/0"], - "approved_routes": ["0.0.0.0/0", "::/0"] + "routable_ips": [ + "0.0.0.0/0", + "::/0" + ], + "approved_routes": [ + "0.0.0.0/0", + "::/0" + ] }, "ha-router1": { "hostname": "ha-router1", - "tags": ["tag:ha"], + "tags": [ + "tag:ha" + ], "ipv4": "100.121.186.70", "ipv6": "fd7a:115c:a1e0::6737:ba46", - "routable_ips": ["192.168.1.0/24"], - "approved_routes": ["192.168.1.0/24"] + "routable_ips": [ + "192.168.1.0/24" + ], + "approved_routes": [ + "192.168.1.0/24" + ] }, "ha-router2": { "hostname": "ha-router2", - "tags": ["tag:ha"], + "tags": [ + "tag:ha" + ], "ipv4": "100.117.104.82", "ipv6": "fd7a:115c:a1e0::7437:6852", - "routable_ips": ["192.168.1.0/24"], - "approved_routes": ["192.168.1.0/24"] + "routable_ips": [ + "192.168.1.0/24" + ], + "approved_routes": [ + "192.168.1.0/24" + ] }, "multi-router": { "hostname": "multi-router", - "tags": ["tag:exit", "tag:router"], + "tags": [ + "tag:exit", + "tag:router" + ], "ipv4": "100.119.241.111", "ipv6": "fd7a:115c:a1e0::3337:f16f", - "routable_ips": ["172.16.0.0/24"], - "approved_routes": ["172.16.0.0/24"] + "routable_ips": [ + "172.16.0.0/24" + ], + "approved_routes": [ + "172.16.0.0/24" + ] }, "subnet-router": { "hostname": "subnet-router", - "tags": ["tag:router"], + "tags": [ + "tag:router" + ], "ipv4": "100.92.142.61", "ipv6": "fd7a:115c:a1e0::3e37:8e3d", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] + "routable_ips": [ + "10.33.0.0/16" + ], + "approved_routes": [ + "10.33.0.0/16" + ] }, "tagged-client": { "hostname": "tagged-client", - "tags": ["tag:client"], + "tags": [ + "tag:client" + ], "ipv4": "100.83.200.69", "ipv6": "fd7a:115c:a1e0::c537:c845" }, "tagged-prod": { "hostname": "tagged-prod", - "tags": ["tag:prod"], + "tags": [ + "tag:prod" + ], "ipv4": "100.103.8.15", "ipv6": "fd7a:115c:a1e0::5b37:80f" }, "tagged-server": { "hostname": "tagged-server", - "tags": ["tag:server"], + "tags": [ + "tag:server" + ], "ipv4": "100.108.74.26", "ipv6": "fd7a:115c:a1e0::b901:4a87" }, diff --git a/hscontrol/policy/v2/testdata/routes_results/ROUTES-i3_ipv6_in_wildcard_srcips.hujson b/hscontrol/policy/v2/testdata/routes_results/ROUTES-i3_ipv6_in_wildcard_srcips.hujson index f0d154116..d48ec4f6b 100644 --- a/hscontrol/policy/v2/testdata/routes_results/ROUTES-i3_ipv6_in_wildcard_srcips.hujson +++ b/hscontrol/policy/v2/testdata/routes_results/ROUTES-i3_ipv6_in_wildcard_srcips.hujson @@ -7,24 +7,40 @@ // Expected: Rules on 3 of 12 nodes { "test_id": "ROUTES-i3_ipv6_in_wildcard_srcips", - "timestamp": "2026-03-17T16:24:48Z", - "propagation_wait_seconds": 10, "input": { - "policy_file": "routes_policies/routes_i3_ipv6_in_wildcard_srcips.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"], - "tag:ha": ["kratail2tid@passkey"] + "tag:server": [ + "kratail2tid@passkey" + ], + "tag:prod": [ + "kratail2tid@passkey" + ], + "tag:client": [ + "kratail2tid@passkey" + ], + "tag:router": [ + "kratail2tid@passkey" + ], + "tag:exit": [ + "kratail2tid@passkey" + ], + "tag:ha": [ + "kratail2tid@passkey" + ] }, "hosts": { "webserver": "100.108.74.26", @@ -34,89 +50,146 @@ }, "autoApprovers": { "routes": { - "10.0.0.0/8": ["tag:router"], - "172.16.0.0/12": ["tag:router"], - "192.168.0.0/16": ["tag:ha"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.0.0.0/8": [ + "tag:router" + ], + "172.16.0.0/12": [ + "tag:router" + ], + "192.168.0.0/16": [ + "tag:ha" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "acls": [ { "action": "accept", - "src": ["*"], - "dst": ["tag:router:22"] + "src": [ + "*" + ], + "dst": [ + "tag:router:22" + ] } ] - }, - "api_endpoint": "https://api.tailscale.com/api/v2/tailnet/kratail2tid%40passkey/acl", - "api_response_code": 200 + } }, "topology": { "nodes": { "big-router": { "hostname": "big-router", - "tags": ["tag:router"], + "tags": [ + "tag:router" + ], "ipv4": "100.97.174.21", "ipv6": "fd7a:115c:a1e0::5137:ae15", - "routable_ips": ["10.0.0.0/8"], - "approved_routes": ["10.0.0.0/8"] + "routable_ips": [ + "10.0.0.0/8" + ], + "approved_routes": [ + "10.0.0.0/8" + ] }, "exit-node": { "hostname": "exit-node", - "tags": ["tag:exit"], + "tags": [ + "tag:exit" + ], "ipv4": "100.85.66.106", "ipv6": "fd7a:115c:a1e0::7c37:426a", - "routable_ips": ["0.0.0.0/0", "::/0"], - "approved_routes": ["0.0.0.0/0", "::/0"] + "routable_ips": [ + "0.0.0.0/0", + "::/0" + ], + "approved_routes": [ + "0.0.0.0/0", + "::/0" + ] }, "ha-router1": { "hostname": "ha-router1", - "tags": ["tag:ha"], + "tags": [ + "tag:ha" + ], "ipv4": "100.121.186.70", "ipv6": "fd7a:115c:a1e0::6737:ba46", - "routable_ips": ["192.168.1.0/24"], - "approved_routes": ["192.168.1.0/24"] + "routable_ips": [ + "192.168.1.0/24" + ], + "approved_routes": [ + "192.168.1.0/24" + ] }, "ha-router2": { "hostname": "ha-router2", - "tags": ["tag:ha"], + "tags": [ + "tag:ha" + ], "ipv4": "100.117.104.82", "ipv6": "fd7a:115c:a1e0::7437:6852", - "routable_ips": ["192.168.1.0/24"], - "approved_routes": ["192.168.1.0/24"] + "routable_ips": [ + "192.168.1.0/24" + ], + "approved_routes": [ + "192.168.1.0/24" + ] }, "multi-router": { "hostname": "multi-router", - "tags": ["tag:exit", "tag:router"], + "tags": [ + "tag:exit", + "tag:router" + ], "ipv4": "100.119.241.111", "ipv6": "fd7a:115c:a1e0::3337:f16f", - "routable_ips": ["172.16.0.0/24"], - "approved_routes": ["172.16.0.0/24"] + "routable_ips": [ + "172.16.0.0/24" + ], + "approved_routes": [ + "172.16.0.0/24" + ] }, "subnet-router": { "hostname": "subnet-router", - "tags": ["tag:router"], + "tags": [ + "tag:router" + ], "ipv4": "100.92.142.61", "ipv6": "fd7a:115c:a1e0::3e37:8e3d", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] + "routable_ips": [ + "10.33.0.0/16" + ], + "approved_routes": [ + "10.33.0.0/16" + ] }, "tagged-client": { "hostname": "tagged-client", - "tags": ["tag:client"], + "tags": [ + "tag:client" + ], "ipv4": "100.83.200.69", "ipv6": "fd7a:115c:a1e0::c537:c845" }, "tagged-prod": { "hostname": "tagged-prod", - "tags": ["tag:prod"], + "tags": [ + "tag:prod" + ], "ipv4": "100.103.8.15", "ipv6": "fd7a:115c:a1e0::5b37:80f" }, "tagged-server": { "hostname": "tagged-server", - "tags": ["tag:server"], + "tags": [ + "tag:server" + ], "ipv4": "100.108.74.26", "ipv6": "fd7a:115c:a1e0::b901:4a87" }, diff --git a/hscontrol/policy/v2/testdata/routes_results/ROUTES-i4_ipv6_specific_acl.hujson b/hscontrol/policy/v2/testdata/routes_results/ROUTES-i4_ipv6_specific_acl.hujson index c1769f4b5..7c880ff79 100644 --- a/hscontrol/policy/v2/testdata/routes_results/ROUTES-i4_ipv6_specific_acl.hujson +++ b/hscontrol/policy/v2/testdata/routes_results/ROUTES-i4_ipv6_specific_acl.hujson @@ -7,24 +7,40 @@ // Expected: No filter rules { "test_id": "ROUTES-i4_ipv6_specific_acl", - "timestamp": "2026-03-17T16:24:59Z", - "propagation_wait_seconds": 10, "input": { - "policy_file": "routes_policies/routes_i4_ipv6_specific_acl.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"], - "tag:ha": ["kratail2tid@passkey"] + "tag:server": [ + "kratail2tid@passkey" + ], + "tag:prod": [ + "kratail2tid@passkey" + ], + "tag:client": [ + "kratail2tid@passkey" + ], + "tag:router": [ + "kratail2tid@passkey" + ], + "tag:exit": [ + "kratail2tid@passkey" + ], + "tag:ha": [ + "kratail2tid@passkey" + ] }, "hosts": { "webserver": "100.108.74.26", @@ -34,89 +50,146 @@ }, "autoApprovers": { "routes": { - "10.0.0.0/8": ["tag:router"], - "172.16.0.0/12": ["tag:router"], - "192.168.0.0/16": ["tag:ha"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.0.0.0/8": [ + "tag:router" + ], + "172.16.0.0/12": [ + "tag:router" + ], + "192.168.0.0/16": [ + "tag:ha" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "acls": [ { "action": "accept", - "src": ["*"], - "dst": ["fd00:1::/64:443"] + "src": [ + "*" + ], + "dst": [ + "fd00:1::/64:443" + ] } ] - }, - "api_endpoint": "https://api.tailscale.com/api/v2/tailnet/kratail2tid%40passkey/acl", - "api_response_code": 200 + } }, "topology": { "nodes": { "big-router": { "hostname": "big-router", - "tags": ["tag:router"], + "tags": [ + "tag:router" + ], "ipv4": "100.97.174.21", "ipv6": "fd7a:115c:a1e0::5137:ae15", - "routable_ips": ["10.0.0.0/8"], - "approved_routes": ["10.0.0.0/8"] + "routable_ips": [ + "10.0.0.0/8" + ], + "approved_routes": [ + "10.0.0.0/8" + ] }, "exit-node": { "hostname": "exit-node", - "tags": ["tag:exit"], + "tags": [ + "tag:exit" + ], "ipv4": "100.85.66.106", "ipv6": "fd7a:115c:a1e0::7c37:426a", - "routable_ips": ["0.0.0.0/0", "::/0"], - "approved_routes": ["0.0.0.0/0", "::/0"] + "routable_ips": [ + "0.0.0.0/0", + "::/0" + ], + "approved_routes": [ + "0.0.0.0/0", + "::/0" + ] }, "ha-router1": { "hostname": "ha-router1", - "tags": ["tag:ha"], + "tags": [ + "tag:ha" + ], "ipv4": "100.121.186.70", "ipv6": "fd7a:115c:a1e0::6737:ba46", - "routable_ips": ["192.168.1.0/24"], - "approved_routes": ["192.168.1.0/24"] + "routable_ips": [ + "192.168.1.0/24" + ], + "approved_routes": [ + "192.168.1.0/24" + ] }, "ha-router2": { "hostname": "ha-router2", - "tags": ["tag:ha"], + "tags": [ + "tag:ha" + ], "ipv4": "100.117.104.82", "ipv6": "fd7a:115c:a1e0::7437:6852", - "routable_ips": ["192.168.1.0/24"], - "approved_routes": ["192.168.1.0/24"] + "routable_ips": [ + "192.168.1.0/24" + ], + "approved_routes": [ + "192.168.1.0/24" + ] }, "multi-router": { "hostname": "multi-router", - "tags": ["tag:exit", "tag:router"], + "tags": [ + "tag:exit", + "tag:router" + ], "ipv4": "100.119.241.111", "ipv6": "fd7a:115c:a1e0::3337:f16f", - "routable_ips": ["172.16.0.0/24"], - "approved_routes": ["172.16.0.0/24"] + "routable_ips": [ + "172.16.0.0/24" + ], + "approved_routes": [ + "172.16.0.0/24" + ] }, "subnet-router": { "hostname": "subnet-router", - "tags": ["tag:router"], + "tags": [ + "tag:router" + ], "ipv4": "100.92.142.61", "ipv6": "fd7a:115c:a1e0::3e37:8e3d", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] + "routable_ips": [ + "10.33.0.0/16" + ], + "approved_routes": [ + "10.33.0.0/16" + ] }, "tagged-client": { "hostname": "tagged-client", - "tags": ["tag:client"], + "tags": [ + "tag:client" + ], "ipv4": "100.83.200.69", "ipv6": "fd7a:115c:a1e0::c537:c845" }, "tagged-prod": { "hostname": "tagged-prod", - "tags": ["tag:prod"], + "tags": [ + "tag:prod" + ], "ipv4": "100.103.8.15", "ipv6": "fd7a:115c:a1e0::5b37:80f" }, "tagged-server": { "hostname": "tagged-server", - "tags": ["tag:server"], + "tags": [ + "tag:server" + ], "ipv4": "100.108.74.26", "ipv6": "fd7a:115c:a1e0::b901:4a87" }, diff --git a/hscontrol/policy/v2/testdata/routes_results/ROUTES-i5_ipv6_parent_child_routes.hujson b/hscontrol/policy/v2/testdata/routes_results/ROUTES-i5_ipv6_parent_child_routes.hujson index bc278ef8b..8fe17d66a 100644 --- a/hscontrol/policy/v2/testdata/routes_results/ROUTES-i5_ipv6_parent_child_routes.hujson +++ b/hscontrol/policy/v2/testdata/routes_results/ROUTES-i5_ipv6_parent_child_routes.hujson @@ -7,24 +7,40 @@ // Expected: No filter rules { "test_id": "ROUTES-i5_ipv6_parent_child_routes", - "timestamp": "2026-03-17T16:25:09Z", - "propagation_wait_seconds": 10, "input": { - "policy_file": "routes_policies/routes_i5_ipv6_parent_child_routes.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"], - "tag:ha": ["kratail2tid@passkey"] + "tag:server": [ + "kratail2tid@passkey" + ], + "tag:prod": [ + "kratail2tid@passkey" + ], + "tag:client": [ + "kratail2tid@passkey" + ], + "tag:router": [ + "kratail2tid@passkey" + ], + "tag:exit": [ + "kratail2tid@passkey" + ], + "tag:ha": [ + "kratail2tid@passkey" + ] }, "hosts": { "webserver": "100.108.74.26", @@ -34,89 +50,146 @@ }, "autoApprovers": { "routes": { - "10.0.0.0/8": ["tag:router"], - "172.16.0.0/12": ["tag:router"], - "192.168.0.0/16": ["tag:ha"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.0.0.0/8": [ + "tag:router" + ], + "172.16.0.0/12": [ + "tag:router" + ], + "192.168.0.0/16": [ + "tag:ha" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "acls": [ { "action": "accept", - "src": ["autogroup:member"], - "dst": ["fd00:1:2::/80:*"] + "src": [ + "autogroup:member" + ], + "dst": [ + "fd00:1:2::/80:*" + ] } ] - }, - "api_endpoint": "https://api.tailscale.com/api/v2/tailnet/kratail2tid%40passkey/acl", - "api_response_code": 200 + } }, "topology": { "nodes": { "big-router": { "hostname": "big-router", - "tags": ["tag:router"], + "tags": [ + "tag:router" + ], "ipv4": "100.97.174.21", "ipv6": "fd7a:115c:a1e0::5137:ae15", - "routable_ips": ["10.0.0.0/8"], - "approved_routes": ["10.0.0.0/8"] + "routable_ips": [ + "10.0.0.0/8" + ], + "approved_routes": [ + "10.0.0.0/8" + ] }, "exit-node": { "hostname": "exit-node", - "tags": ["tag:exit"], + "tags": [ + "tag:exit" + ], "ipv4": "100.85.66.106", "ipv6": "fd7a:115c:a1e0::7c37:426a", - "routable_ips": ["0.0.0.0/0", "::/0"], - "approved_routes": ["0.0.0.0/0", "::/0"] + "routable_ips": [ + "0.0.0.0/0", + "::/0" + ], + "approved_routes": [ + "0.0.0.0/0", + "::/0" + ] }, "ha-router1": { "hostname": "ha-router1", - "tags": ["tag:ha"], + "tags": [ + "tag:ha" + ], "ipv4": "100.121.186.70", "ipv6": "fd7a:115c:a1e0::6737:ba46", - "routable_ips": ["192.168.1.0/24"], - "approved_routes": ["192.168.1.0/24"] + "routable_ips": [ + "192.168.1.0/24" + ], + "approved_routes": [ + "192.168.1.0/24" + ] }, "ha-router2": { "hostname": "ha-router2", - "tags": ["tag:ha"], + "tags": [ + "tag:ha" + ], "ipv4": "100.117.104.82", "ipv6": "fd7a:115c:a1e0::7437:6852", - "routable_ips": ["192.168.1.0/24"], - "approved_routes": ["192.168.1.0/24"] + "routable_ips": [ + "192.168.1.0/24" + ], + "approved_routes": [ + "192.168.1.0/24" + ] }, "multi-router": { "hostname": "multi-router", - "tags": ["tag:exit", "tag:router"], + "tags": [ + "tag:exit", + "tag:router" + ], "ipv4": "100.119.241.111", "ipv6": "fd7a:115c:a1e0::3337:f16f", - "routable_ips": ["172.16.0.0/24"], - "approved_routes": ["172.16.0.0/24"] + "routable_ips": [ + "172.16.0.0/24" + ], + "approved_routes": [ + "172.16.0.0/24" + ] }, "subnet-router": { "hostname": "subnet-router", - "tags": ["tag:router"], + "tags": [ + "tag:router" + ], "ipv4": "100.92.142.61", "ipv6": "fd7a:115c:a1e0::3e37:8e3d", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] + "routable_ips": [ + "10.33.0.0/16" + ], + "approved_routes": [ + "10.33.0.0/16" + ] }, "tagged-client": { "hostname": "tagged-client", - "tags": ["tag:client"], + "tags": [ + "tag:client" + ], "ipv4": "100.83.200.69", "ipv6": "fd7a:115c:a1e0::c537:c845" }, "tagged-prod": { "hostname": "tagged-prod", - "tags": ["tag:prod"], + "tags": [ + "tag:prod" + ], "ipv4": "100.103.8.15", "ipv6": "fd7a:115c:a1e0::5b37:80f" }, "tagged-server": { "hostname": "tagged-server", - "tags": ["tag:server"], + "tags": [ + "tag:server" + ], "ipv4": "100.108.74.26", "ipv6": "fd7a:115c:a1e0::b901:4a87" }, diff --git a/hscontrol/policy/v2/testdata/routes_results/ROUTES-i6_dual_stack_node.hujson b/hscontrol/policy/v2/testdata/routes_results/ROUTES-i6_dual_stack_node.hujson index d0dbbafbc..0ee077bdd 100644 --- a/hscontrol/policy/v2/testdata/routes_results/ROUTES-i6_dual_stack_node.hujson +++ b/hscontrol/policy/v2/testdata/routes_results/ROUTES-i6_dual_stack_node.hujson @@ -9,24 +9,40 @@ // Expected: Rules on 2 of 12 nodes { "test_id": "ROUTES-i6_dual_stack_node", - "timestamp": "2026-03-17T16:25:20Z", - "propagation_wait_seconds": 10, "input": { - "policy_file": "routes_policies/routes_i6_dual_stack_node.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"], - "tag:ha": ["kratail2tid@passkey"] + "tag:server": [ + "kratail2tid@passkey" + ], + "tag:prod": [ + "kratail2tid@passkey" + ], + "tag:client": [ + "kratail2tid@passkey" + ], + "tag:router": [ + "kratail2tid@passkey" + ], + "tag:exit": [ + "kratail2tid@passkey" + ], + "tag:ha": [ + "kratail2tid@passkey" + ] }, "hosts": { "webserver": "100.108.74.26", @@ -36,94 +52,155 @@ }, "autoApprovers": { "routes": { - "10.0.0.0/8": ["tag:router"], - "172.16.0.0/12": ["tag:router"], - "192.168.0.0/16": ["tag:ha"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.0.0.0/8": [ + "tag:router" + ], + "172.16.0.0/12": [ + "tag:router" + ], + "192.168.0.0/16": [ + "tag:ha" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "acls": [ { "action": "accept", - "src": ["*"], - "dst": ["10.33.0.0/16:*"] + "src": [ + "*" + ], + "dst": [ + "10.33.0.0/16:*" + ] }, { "action": "accept", - "src": ["*"], - "dst": ["fd00:1::/64:*"] + "src": [ + "*" + ], + "dst": [ + "fd00:1::/64:*" + ] } ] - }, - "api_endpoint": "https://api.tailscale.com/api/v2/tailnet/kratail2tid%40passkey/acl", - "api_response_code": 200 + } }, "topology": { "nodes": { "big-router": { "hostname": "big-router", - "tags": ["tag:router"], + "tags": [ + "tag:router" + ], "ipv4": "100.97.174.21", "ipv6": "fd7a:115c:a1e0::5137:ae15", - "routable_ips": ["10.0.0.0/8"], - "approved_routes": ["10.0.0.0/8"] + "routable_ips": [ + "10.0.0.0/8" + ], + "approved_routes": [ + "10.0.0.0/8" + ] }, "exit-node": { "hostname": "exit-node", - "tags": ["tag:exit"], + "tags": [ + "tag:exit" + ], "ipv4": "100.85.66.106", "ipv6": "fd7a:115c:a1e0::7c37:426a", - "routable_ips": ["0.0.0.0/0", "::/0"], - "approved_routes": ["0.0.0.0/0", "::/0"] + "routable_ips": [ + "0.0.0.0/0", + "::/0" + ], + "approved_routes": [ + "0.0.0.0/0", + "::/0" + ] }, "ha-router1": { "hostname": "ha-router1", - "tags": ["tag:ha"], + "tags": [ + "tag:ha" + ], "ipv4": "100.121.186.70", "ipv6": "fd7a:115c:a1e0::6737:ba46", - "routable_ips": ["192.168.1.0/24"], - "approved_routes": ["192.168.1.0/24"] + "routable_ips": [ + "192.168.1.0/24" + ], + "approved_routes": [ + "192.168.1.0/24" + ] }, "ha-router2": { "hostname": "ha-router2", - "tags": ["tag:ha"], + "tags": [ + "tag:ha" + ], "ipv4": "100.117.104.82", "ipv6": "fd7a:115c:a1e0::7437:6852", - "routable_ips": ["192.168.1.0/24"], - "approved_routes": ["192.168.1.0/24"] + "routable_ips": [ + "192.168.1.0/24" + ], + "approved_routes": [ + "192.168.1.0/24" + ] }, "multi-router": { "hostname": "multi-router", - "tags": ["tag:exit", "tag:router"], + "tags": [ + "tag:exit", + "tag:router" + ], "ipv4": "100.119.241.111", "ipv6": "fd7a:115c:a1e0::3337:f16f", - "routable_ips": ["172.16.0.0/24"], - "approved_routes": ["172.16.0.0/24"] + "routable_ips": [ + "172.16.0.0/24" + ], + "approved_routes": [ + "172.16.0.0/24" + ] }, "subnet-router": { "hostname": "subnet-router", - "tags": ["tag:router"], + "tags": [ + "tag:router" + ], "ipv4": "100.92.142.61", "ipv6": "fd7a:115c:a1e0::3e37:8e3d", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] + "routable_ips": [ + "10.33.0.0/16" + ], + "approved_routes": [ + "10.33.0.0/16" + ] }, "tagged-client": { "hostname": "tagged-client", - "tags": ["tag:client"], + "tags": [ + "tag:client" + ], "ipv4": "100.83.200.69", "ipv6": "fd7a:115c:a1e0::c537:c845" }, "tagged-prod": { "hostname": "tagged-prod", - "tags": ["tag:prod"], + "tags": [ + "tag:prod" + ], "ipv4": "100.103.8.15", "ipv6": "fd7a:115c:a1e0::5b37:80f" }, "tagged-server": { "hostname": "tagged-server", - "tags": ["tag:server"], + "tags": [ + "tag:server" + ], "ipv4": "100.108.74.26", "ipv6": "fd7a:115c:a1e0::b901:4a87" }, diff --git a/hscontrol/policy/v2/testdata/routes_results/ROUTES-i7_ipv6_exit_coverage.hujson b/hscontrol/policy/v2/testdata/routes_results/ROUTES-i7_ipv6_exit_coverage.hujson index f4746c496..047ac0509 100644 --- a/hscontrol/policy/v2/testdata/routes_results/ROUTES-i7_ipv6_exit_coverage.hujson +++ b/hscontrol/policy/v2/testdata/routes_results/ROUTES-i7_ipv6_exit_coverage.hujson @@ -7,24 +7,40 @@ // Expected: No filter rules { "test_id": "ROUTES-i7_ipv6_exit_coverage", - "timestamp": "2026-03-17T16:25:31Z", - "propagation_wait_seconds": 10, "input": { - "policy_file": "routes_policies/routes_i7_ipv6_exit_coverage.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"], - "tag:ha": ["kratail2tid@passkey"] + "tag:server": [ + "kratail2tid@passkey" + ], + "tag:prod": [ + "kratail2tid@passkey" + ], + "tag:client": [ + "kratail2tid@passkey" + ], + "tag:router": [ + "kratail2tid@passkey" + ], + "tag:exit": [ + "kratail2tid@passkey" + ], + "tag:ha": [ + "kratail2tid@passkey" + ] }, "hosts": { "webserver": "100.108.74.26", @@ -34,89 +50,146 @@ }, "autoApprovers": { "routes": { - "10.0.0.0/8": ["tag:router"], - "172.16.0.0/12": ["tag:router"], - "192.168.0.0/16": ["tag:ha"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.0.0.0/8": [ + "tag:router" + ], + "172.16.0.0/12": [ + "tag:router" + ], + "192.168.0.0/16": [ + "tag:ha" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "acls": [ { "action": "accept", - "src": ["*"], - "dst": ["2001:db8::/32:443"] + "src": [ + "*" + ], + "dst": [ + "2001:db8::/32:443" + ] } ] - }, - "api_endpoint": "https://api.tailscale.com/api/v2/tailnet/kratail2tid%40passkey/acl", - "api_response_code": 200 + } }, "topology": { "nodes": { "big-router": { "hostname": "big-router", - "tags": ["tag:router"], + "tags": [ + "tag:router" + ], "ipv4": "100.97.174.21", "ipv6": "fd7a:115c:a1e0::5137:ae15", - "routable_ips": ["10.0.0.0/8"], - "approved_routes": ["10.0.0.0/8"] + "routable_ips": [ + "10.0.0.0/8" + ], + "approved_routes": [ + "10.0.0.0/8" + ] }, "exit-node": { "hostname": "exit-node", - "tags": ["tag:exit"], + "tags": [ + "tag:exit" + ], "ipv4": "100.85.66.106", "ipv6": "fd7a:115c:a1e0::7c37:426a", - "routable_ips": ["0.0.0.0/0", "::/0"], - "approved_routes": ["0.0.0.0/0", "::/0"] + "routable_ips": [ + "0.0.0.0/0", + "::/0" + ], + "approved_routes": [ + "0.0.0.0/0", + "::/0" + ] }, "ha-router1": { "hostname": "ha-router1", - "tags": ["tag:ha"], + "tags": [ + "tag:ha" + ], "ipv4": "100.121.186.70", "ipv6": "fd7a:115c:a1e0::6737:ba46", - "routable_ips": ["192.168.1.0/24"], - "approved_routes": ["192.168.1.0/24"] + "routable_ips": [ + "192.168.1.0/24" + ], + "approved_routes": [ + "192.168.1.0/24" + ] }, "ha-router2": { "hostname": "ha-router2", - "tags": ["tag:ha"], + "tags": [ + "tag:ha" + ], "ipv4": "100.117.104.82", "ipv6": "fd7a:115c:a1e0::7437:6852", - "routable_ips": ["192.168.1.0/24"], - "approved_routes": ["192.168.1.0/24"] + "routable_ips": [ + "192.168.1.0/24" + ], + "approved_routes": [ + "192.168.1.0/24" + ] }, "multi-router": { "hostname": "multi-router", - "tags": ["tag:exit", "tag:router"], + "tags": [ + "tag:exit", + "tag:router" + ], "ipv4": "100.119.241.111", "ipv6": "fd7a:115c:a1e0::3337:f16f", - "routable_ips": ["172.16.0.0/24"], - "approved_routes": ["172.16.0.0/24"] + "routable_ips": [ + "172.16.0.0/24" + ], + "approved_routes": [ + "172.16.0.0/24" + ] }, "subnet-router": { "hostname": "subnet-router", - "tags": ["tag:router"], + "tags": [ + "tag:router" + ], "ipv4": "100.92.142.61", "ipv6": "fd7a:115c:a1e0::3e37:8e3d", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] + "routable_ips": [ + "10.33.0.0/16" + ], + "approved_routes": [ + "10.33.0.0/16" + ] }, "tagged-client": { "hostname": "tagged-client", - "tags": ["tag:client"], + "tags": [ + "tag:client" + ], "ipv4": "100.83.200.69", "ipv6": "fd7a:115c:a1e0::c537:c845" }, "tagged-prod": { "hostname": "tagged-prod", - "tags": ["tag:prod"], + "tags": [ + "tag:prod" + ], "ipv4": "100.103.8.15", "ipv6": "fd7a:115c:a1e0::5b37:80f" }, "tagged-server": { "hostname": "tagged-server", - "tags": ["tag:server"], + "tags": [ + "tag:server" + ], "ipv4": "100.108.74.26", "ipv6": "fd7a:115c:a1e0::b901:4a87" }, diff --git a/hscontrol/policy/v2/testdata/routes_results/ROUTES-o10_acl_dest_covered_by_multiple.hujson b/hscontrol/policy/v2/testdata/routes_results/ROUTES-o10_acl_dest_covered_by_multiple.hujson index 8a61f510d..56d066552 100644 --- a/hscontrol/policy/v2/testdata/routes_results/ROUTES-o10_acl_dest_covered_by_multiple.hujson +++ b/hscontrol/policy/v2/testdata/routes_results/ROUTES-o10_acl_dest_covered_by_multiple.hujson @@ -7,24 +7,40 @@ // Expected: Rules on 2 of 12 nodes { "test_id": "ROUTES-o10_acl_dest_covered_by_multiple", - "timestamp": "2026-03-17T16:25:41Z", - "propagation_wait_seconds": 10, "input": { - "policy_file": "routes_policies/routes_o10_acl_dest_covered_by_multiple.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"], - "tag:ha": ["kratail2tid@passkey"] + "tag:server": [ + "kratail2tid@passkey" + ], + "tag:prod": [ + "kratail2tid@passkey" + ], + "tag:client": [ + "kratail2tid@passkey" + ], + "tag:router": [ + "kratail2tid@passkey" + ], + "tag:exit": [ + "kratail2tid@passkey" + ], + "tag:ha": [ + "kratail2tid@passkey" + ] }, "hosts": { "webserver": "100.108.74.26", @@ -34,89 +50,146 @@ }, "autoApprovers": { "routes": { - "10.0.0.0/8": ["tag:router"], - "172.16.0.0/12": ["tag:router"], - "192.168.0.0/16": ["tag:ha"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.0.0.0/8": [ + "tag:router" + ], + "172.16.0.0/12": [ + "tag:router" + ], + "192.168.0.0/16": [ + "tag:ha" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "acls": [ { "action": "accept", - "src": ["*"], - "dst": ["10.33.1.0/24:22"] + "src": [ + "*" + ], + "dst": [ + "10.33.1.0/24:22" + ] } ] - }, - "api_endpoint": "https://api.tailscale.com/api/v2/tailnet/kratail2tid%40passkey/acl", - "api_response_code": 200 + } }, "topology": { "nodes": { "big-router": { "hostname": "big-router", - "tags": ["tag:router"], + "tags": [ + "tag:router" + ], "ipv4": "100.97.174.21", "ipv6": "fd7a:115c:a1e0::5137:ae15", - "routable_ips": ["10.0.0.0/8"], - "approved_routes": ["10.0.0.0/8"] + "routable_ips": [ + "10.0.0.0/8" + ], + "approved_routes": [ + "10.0.0.0/8" + ] }, "exit-node": { "hostname": "exit-node", - "tags": ["tag:exit"], + "tags": [ + "tag:exit" + ], "ipv4": "100.85.66.106", "ipv6": "fd7a:115c:a1e0::7c37:426a", - "routable_ips": ["0.0.0.0/0", "::/0"], - "approved_routes": ["0.0.0.0/0", "::/0"] + "routable_ips": [ + "0.0.0.0/0", + "::/0" + ], + "approved_routes": [ + "0.0.0.0/0", + "::/0" + ] }, "ha-router1": { "hostname": "ha-router1", - "tags": ["tag:ha"], + "tags": [ + "tag:ha" + ], "ipv4": "100.121.186.70", "ipv6": "fd7a:115c:a1e0::6737:ba46", - "routable_ips": ["192.168.1.0/24"], - "approved_routes": ["192.168.1.0/24"] + "routable_ips": [ + "192.168.1.0/24" + ], + "approved_routes": [ + "192.168.1.0/24" + ] }, "ha-router2": { "hostname": "ha-router2", - "tags": ["tag:ha"], + "tags": [ + "tag:ha" + ], "ipv4": "100.117.104.82", "ipv6": "fd7a:115c:a1e0::7437:6852", - "routable_ips": ["192.168.1.0/24"], - "approved_routes": ["192.168.1.0/24"] + "routable_ips": [ + "192.168.1.0/24" + ], + "approved_routes": [ + "192.168.1.0/24" + ] }, "multi-router": { "hostname": "multi-router", - "tags": ["tag:exit", "tag:router"], + "tags": [ + "tag:exit", + "tag:router" + ], "ipv4": "100.119.241.111", "ipv6": "fd7a:115c:a1e0::3337:f16f", - "routable_ips": ["172.16.0.0/24"], - "approved_routes": ["172.16.0.0/24"] + "routable_ips": [ + "172.16.0.0/24" + ], + "approved_routes": [ + "172.16.0.0/24" + ] }, "subnet-router": { "hostname": "subnet-router", - "tags": ["tag:router"], + "tags": [ + "tag:router" + ], "ipv4": "100.92.142.61", "ipv6": "fd7a:115c:a1e0::3e37:8e3d", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] + "routable_ips": [ + "10.33.0.0/16" + ], + "approved_routes": [ + "10.33.0.0/16" + ] }, "tagged-client": { "hostname": "tagged-client", - "tags": ["tag:client"], + "tags": [ + "tag:client" + ], "ipv4": "100.83.200.69", "ipv6": "fd7a:115c:a1e0::c537:c845" }, "tagged-prod": { "hostname": "tagged-prod", - "tags": ["tag:prod"], + "tags": [ + "tag:prod" + ], "ipv4": "100.103.8.15", "ipv6": "fd7a:115c:a1e0::5b37:80f" }, "tagged-server": { "hostname": "tagged-server", - "tags": ["tag:server"], + "tags": [ + "tag:server" + ], "ipv4": "100.108.74.26", "ipv6": "fd7a:115c:a1e0::b901:4a87" }, diff --git a/hscontrol/policy/v2/testdata/routes_results/ROUTES-o11_acl_dest_not_covered.hujson b/hscontrol/policy/v2/testdata/routes_results/ROUTES-o11_acl_dest_not_covered.hujson index 6431d4303..d3a23bf95 100644 --- a/hscontrol/policy/v2/testdata/routes_results/ROUTES-o11_acl_dest_not_covered.hujson +++ b/hscontrol/policy/v2/testdata/routes_results/ROUTES-o11_acl_dest_not_covered.hujson @@ -7,24 +7,40 @@ // Expected: No filter rules { "test_id": "ROUTES-o11_acl_dest_not_covered", - "timestamp": "2026-03-17T16:25:52Z", - "propagation_wait_seconds": 10, "input": { - "policy_file": "routes_policies/routes_o11_acl_dest_not_covered.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"], - "tag:ha": ["kratail2tid@passkey"] + "tag:server": [ + "kratail2tid@passkey" + ], + "tag:prod": [ + "kratail2tid@passkey" + ], + "tag:client": [ + "kratail2tid@passkey" + ], + "tag:router": [ + "kratail2tid@passkey" + ], + "tag:exit": [ + "kratail2tid@passkey" + ], + "tag:ha": [ + "kratail2tid@passkey" + ] }, "hosts": { "webserver": "100.108.74.26", @@ -34,89 +50,146 @@ }, "autoApprovers": { "routes": { - "10.0.0.0/8": ["tag:router"], - "172.16.0.0/12": ["tag:router"], - "192.168.0.0/16": ["tag:ha"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.0.0.0/8": [ + "tag:router" + ], + "172.16.0.0/12": [ + "tag:router" + ], + "192.168.0.0/16": [ + "tag:ha" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "acls": [ { "action": "accept", - "src": ["*"], - "dst": ["192.168.99.0/24:22"] + "src": [ + "*" + ], + "dst": [ + "192.168.99.0/24:22" + ] } ] - }, - "api_endpoint": "https://api.tailscale.com/api/v2/tailnet/kratail2tid%40passkey/acl", - "api_response_code": 200 + } }, "topology": { "nodes": { "big-router": { "hostname": "big-router", - "tags": ["tag:router"], + "tags": [ + "tag:router" + ], "ipv4": "100.97.174.21", "ipv6": "fd7a:115c:a1e0::5137:ae15", - "routable_ips": ["10.0.0.0/8"], - "approved_routes": ["10.0.0.0/8"] + "routable_ips": [ + "10.0.0.0/8" + ], + "approved_routes": [ + "10.0.0.0/8" + ] }, "exit-node": { "hostname": "exit-node", - "tags": ["tag:exit"], + "tags": [ + "tag:exit" + ], "ipv4": "100.85.66.106", "ipv6": "fd7a:115c:a1e0::7c37:426a", - "routable_ips": ["0.0.0.0/0", "::/0"], - "approved_routes": ["0.0.0.0/0", "::/0"] + "routable_ips": [ + "0.0.0.0/0", + "::/0" + ], + "approved_routes": [ + "0.0.0.0/0", + "::/0" + ] }, "ha-router1": { "hostname": "ha-router1", - "tags": ["tag:ha"], + "tags": [ + "tag:ha" + ], "ipv4": "100.121.186.70", "ipv6": "fd7a:115c:a1e0::6737:ba46", - "routable_ips": ["192.168.1.0/24"], - "approved_routes": ["192.168.1.0/24"] + "routable_ips": [ + "192.168.1.0/24" + ], + "approved_routes": [ + "192.168.1.0/24" + ] }, "ha-router2": { "hostname": "ha-router2", - "tags": ["tag:ha"], + "tags": [ + "tag:ha" + ], "ipv4": "100.117.104.82", "ipv6": "fd7a:115c:a1e0::7437:6852", - "routable_ips": ["192.168.1.0/24"], - "approved_routes": ["192.168.1.0/24"] + "routable_ips": [ + "192.168.1.0/24" + ], + "approved_routes": [ + "192.168.1.0/24" + ] }, "multi-router": { "hostname": "multi-router", - "tags": ["tag:exit", "tag:router"], + "tags": [ + "tag:exit", + "tag:router" + ], "ipv4": "100.119.241.111", "ipv6": "fd7a:115c:a1e0::3337:f16f", - "routable_ips": ["172.16.0.0/24"], - "approved_routes": ["172.16.0.0/24"] + "routable_ips": [ + "172.16.0.0/24" + ], + "approved_routes": [ + "172.16.0.0/24" + ] }, "subnet-router": { "hostname": "subnet-router", - "tags": ["tag:router"], + "tags": [ + "tag:router" + ], "ipv4": "100.92.142.61", "ipv6": "fd7a:115c:a1e0::3e37:8e3d", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] + "routable_ips": [ + "10.33.0.0/16" + ], + "approved_routes": [ + "10.33.0.0/16" + ] }, "tagged-client": { "hostname": "tagged-client", - "tags": ["tag:client"], + "tags": [ + "tag:client" + ], "ipv4": "100.83.200.69", "ipv6": "fd7a:115c:a1e0::c537:c845" }, "tagged-prod": { "hostname": "tagged-prod", - "tags": ["tag:prod"], + "tags": [ + "tag:prod" + ], "ipv4": "100.103.8.15", "ipv6": "fd7a:115c:a1e0::5b37:80f" }, "tagged-server": { "hostname": "tagged-server", - "tags": ["tag:server"], + "tags": [ + "tag:server" + ], "ipv4": "100.108.74.26", "ipv6": "fd7a:115c:a1e0::b901:4a87" }, diff --git a/hscontrol/policy/v2/testdata/routes_results/ROUTES-o12_filter_dest_is_acl_cidr.hujson b/hscontrol/policy/v2/testdata/routes_results/ROUTES-o12_filter_dest_is_acl_cidr.hujson index 6423a3ab4..9c6254541 100644 --- a/hscontrol/policy/v2/testdata/routes_results/ROUTES-o12_filter_dest_is_acl_cidr.hujson +++ b/hscontrol/policy/v2/testdata/routes_results/ROUTES-o12_filter_dest_is_acl_cidr.hujson @@ -7,24 +7,40 @@ // Expected: Rules on 2 of 12 nodes { "test_id": "ROUTES-o12_filter_dest_is_acl_cidr", - "timestamp": "2026-03-17T16:26:03Z", - "propagation_wait_seconds": 10, "input": { - "policy_file": "routes_policies/routes_o12_filter_dest_is_acl_cidr.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"], - "tag:ha": ["kratail2tid@passkey"] + "tag:server": [ + "kratail2tid@passkey" + ], + "tag:prod": [ + "kratail2tid@passkey" + ], + "tag:client": [ + "kratail2tid@passkey" + ], + "tag:router": [ + "kratail2tid@passkey" + ], + "tag:exit": [ + "kratail2tid@passkey" + ], + "tag:ha": [ + "kratail2tid@passkey" + ] }, "hosts": { "webserver": "100.108.74.26", @@ -34,89 +50,146 @@ }, "autoApprovers": { "routes": { - "10.0.0.0/8": ["tag:router"], - "172.16.0.0/12": ["tag:router"], - "192.168.0.0/16": ["tag:ha"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.0.0.0/8": [ + "tag:router" + ], + "172.16.0.0/12": [ + "tag:router" + ], + "192.168.0.0/16": [ + "tag:ha" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "acls": [ { "action": "accept", - "src": ["*"], - "dst": ["10.33.1.0/24:22"] + "src": [ + "*" + ], + "dst": [ + "10.33.1.0/24:22" + ] } ] - }, - "api_endpoint": "https://api.tailscale.com/api/v2/tailnet/kratail2tid%40passkey/acl", - "api_response_code": 200 + } }, "topology": { "nodes": { "big-router": { "hostname": "big-router", - "tags": ["tag:router"], + "tags": [ + "tag:router" + ], "ipv4": "100.97.174.21", "ipv6": "fd7a:115c:a1e0::5137:ae15", - "routable_ips": ["10.0.0.0/8"], - "approved_routes": ["10.0.0.0/8"] + "routable_ips": [ + "10.0.0.0/8" + ], + "approved_routes": [ + "10.0.0.0/8" + ] }, "exit-node": { "hostname": "exit-node", - "tags": ["tag:exit"], + "tags": [ + "tag:exit" + ], "ipv4": "100.85.66.106", "ipv6": "fd7a:115c:a1e0::7c37:426a", - "routable_ips": ["0.0.0.0/0", "::/0"], - "approved_routes": ["0.0.0.0/0", "::/0"] + "routable_ips": [ + "0.0.0.0/0", + "::/0" + ], + "approved_routes": [ + "0.0.0.0/0", + "::/0" + ] }, "ha-router1": { "hostname": "ha-router1", - "tags": ["tag:ha"], + "tags": [ + "tag:ha" + ], "ipv4": "100.121.186.70", "ipv6": "fd7a:115c:a1e0::6737:ba46", - "routable_ips": ["192.168.1.0/24"], - "approved_routes": ["192.168.1.0/24"] + "routable_ips": [ + "192.168.1.0/24" + ], + "approved_routes": [ + "192.168.1.0/24" + ] }, "ha-router2": { "hostname": "ha-router2", - "tags": ["tag:ha"], + "tags": [ + "tag:ha" + ], "ipv4": "100.117.104.82", "ipv6": "fd7a:115c:a1e0::7437:6852", - "routable_ips": ["192.168.1.0/24"], - "approved_routes": ["192.168.1.0/24"] + "routable_ips": [ + "192.168.1.0/24" + ], + "approved_routes": [ + "192.168.1.0/24" + ] }, "multi-router": { "hostname": "multi-router", - "tags": ["tag:exit", "tag:router"], + "tags": [ + "tag:exit", + "tag:router" + ], "ipv4": "100.119.241.111", "ipv6": "fd7a:115c:a1e0::3337:f16f", - "routable_ips": ["172.16.0.0/24"], - "approved_routes": ["172.16.0.0/24"] + "routable_ips": [ + "172.16.0.0/24" + ], + "approved_routes": [ + "172.16.0.0/24" + ] }, "subnet-router": { "hostname": "subnet-router", - "tags": ["tag:router"], + "tags": [ + "tag:router" + ], "ipv4": "100.92.142.61", "ipv6": "fd7a:115c:a1e0::3e37:8e3d", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] + "routable_ips": [ + "10.33.0.0/16" + ], + "approved_routes": [ + "10.33.0.0/16" + ] }, "tagged-client": { "hostname": "tagged-client", - "tags": ["tag:client"], + "tags": [ + "tag:client" + ], "ipv4": "100.83.200.69", "ipv6": "fd7a:115c:a1e0::c537:c845" }, "tagged-prod": { "hostname": "tagged-prod", - "tags": ["tag:prod"], + "tags": [ + "tag:prod" + ], "ipv4": "100.103.8.15", "ipv6": "fd7a:115c:a1e0::5b37:80f" }, "tagged-server": { "hostname": "tagged-server", - "tags": ["tag:server"], + "tags": [ + "tag:server" + ], "ipv4": "100.108.74.26", "ipv6": "fd7a:115c:a1e0::b901:4a87" }, diff --git a/hscontrol/policy/v2/testdata/routes_results/ROUTES-o1_overlapping_routes_not_merged.hujson b/hscontrol/policy/v2/testdata/routes_results/ROUTES-o1_overlapping_routes_not_merged.hujson index 676eb7012..ae068c871 100644 --- a/hscontrol/policy/v2/testdata/routes_results/ROUTES-o1_overlapping_routes_not_merged.hujson +++ b/hscontrol/policy/v2/testdata/routes_results/ROUTES-o1_overlapping_routes_not_merged.hujson @@ -7,24 +7,40 @@ // Expected: Rules on 12 of 12 nodes { "test_id": "ROUTES-o1_overlapping_routes_not_merged", - "timestamp": "2026-03-17T16:26:13Z", - "propagation_wait_seconds": 10, "input": { - "policy_file": "routes_policies/routes_o1_overlapping_routes_not_merged.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"], - "tag:ha": ["kratail2tid@passkey"] + "tag:server": [ + "kratail2tid@passkey" + ], + "tag:prod": [ + "kratail2tid@passkey" + ], + "tag:client": [ + "kratail2tid@passkey" + ], + "tag:router": [ + "kratail2tid@passkey" + ], + "tag:exit": [ + "kratail2tid@passkey" + ], + "tag:ha": [ + "kratail2tid@passkey" + ] }, "hosts": { "webserver": "100.108.74.26", @@ -34,89 +50,146 @@ }, "autoApprovers": { "routes": { - "10.0.0.0/8": ["tag:router"], - "172.16.0.0/12": ["tag:router"], - "192.168.0.0/16": ["tag:ha"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.0.0.0/8": [ + "tag:router" + ], + "172.16.0.0/12": [ + "tag:router" + ], + "192.168.0.0/16": [ + "tag:ha" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "acls": [ { "action": "accept", - "src": ["*"], - "dst": ["*:*"] + "src": [ + "*" + ], + "dst": [ + "*:*" + ] } ] - }, - "api_endpoint": "https://api.tailscale.com/api/v2/tailnet/kratail2tid%40passkey/acl", - "api_response_code": 200 + } }, "topology": { "nodes": { "big-router": { "hostname": "big-router", - "tags": ["tag:router"], + "tags": [ + "tag:router" + ], "ipv4": "100.97.174.21", "ipv6": "fd7a:115c:a1e0::5137:ae15", - "routable_ips": ["10.0.0.0/8"], - "approved_routes": ["10.0.0.0/8"] + "routable_ips": [ + "10.0.0.0/8" + ], + "approved_routes": [ + "10.0.0.0/8" + ] }, "exit-node": { "hostname": "exit-node", - "tags": ["tag:exit"], + "tags": [ + "tag:exit" + ], "ipv4": "100.85.66.106", "ipv6": "fd7a:115c:a1e0::7c37:426a", - "routable_ips": ["0.0.0.0/0", "::/0"], - "approved_routes": ["0.0.0.0/0", "::/0"] + "routable_ips": [ + "0.0.0.0/0", + "::/0" + ], + "approved_routes": [ + "0.0.0.0/0", + "::/0" + ] }, "ha-router1": { "hostname": "ha-router1", - "tags": ["tag:ha"], + "tags": [ + "tag:ha" + ], "ipv4": "100.121.186.70", "ipv6": "fd7a:115c:a1e0::6737:ba46", - "routable_ips": ["192.168.1.0/24"], - "approved_routes": ["192.168.1.0/24"] + "routable_ips": [ + "192.168.1.0/24" + ], + "approved_routes": [ + "192.168.1.0/24" + ] }, "ha-router2": { "hostname": "ha-router2", - "tags": ["tag:ha"], + "tags": [ + "tag:ha" + ], "ipv4": "100.117.104.82", "ipv6": "fd7a:115c:a1e0::7437:6852", - "routable_ips": ["192.168.1.0/24"], - "approved_routes": ["192.168.1.0/24"] + "routable_ips": [ + "192.168.1.0/24" + ], + "approved_routes": [ + "192.168.1.0/24" + ] }, "multi-router": { "hostname": "multi-router", - "tags": ["tag:exit", "tag:router"], + "tags": [ + "tag:exit", + "tag:router" + ], "ipv4": "100.119.241.111", "ipv6": "fd7a:115c:a1e0::3337:f16f", - "routable_ips": ["172.16.0.0/24"], - "approved_routes": ["172.16.0.0/24"] + "routable_ips": [ + "172.16.0.0/24" + ], + "approved_routes": [ + "172.16.0.0/24" + ] }, "subnet-router": { "hostname": "subnet-router", - "tags": ["tag:router"], + "tags": [ + "tag:router" + ], "ipv4": "100.92.142.61", "ipv6": "fd7a:115c:a1e0::3e37:8e3d", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] + "routable_ips": [ + "10.33.0.0/16" + ], + "approved_routes": [ + "10.33.0.0/16" + ] }, "tagged-client": { "hostname": "tagged-client", - "tags": ["tag:client"], + "tags": [ + "tag:client" + ], "ipv4": "100.83.200.69", "ipv6": "fd7a:115c:a1e0::c537:c845" }, "tagged-prod": { "hostname": "tagged-prod", - "tags": ["tag:prod"], + "tags": [ + "tag:prod" + ], "ipv4": "100.103.8.15", "ipv6": "fd7a:115c:a1e0::5b37:80f" }, "tagged-server": { "hostname": "tagged-server", - "tags": ["tag:server"], + "tags": [ + "tag:server" + ], "ipv4": "100.108.74.26", "ipv6": "fd7a:115c:a1e0::b901:4a87" }, diff --git a/hscontrol/policy/v2/testdata/routes_results/ROUTES-o2_ha_routers_both_get_filter.hujson b/hscontrol/policy/v2/testdata/routes_results/ROUTES-o2_ha_routers_both_get_filter.hujson index b9c364143..81b86b974 100644 --- a/hscontrol/policy/v2/testdata/routes_results/ROUTES-o2_ha_routers_both_get_filter.hujson +++ b/hscontrol/policy/v2/testdata/routes_results/ROUTES-o2_ha_routers_both_get_filter.hujson @@ -7,24 +7,40 @@ // Expected: Rules on 2 of 12 nodes { "test_id": "ROUTES-o2_ha_routers_both_get_filter", - "timestamp": "2026-03-17T16:26:24Z", - "propagation_wait_seconds": 10, "input": { - "policy_file": "routes_policies/routes_o2_ha_routers_both_get_filter.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"], - "tag:ha": ["kratail2tid@passkey"] + "tag:server": [ + "kratail2tid@passkey" + ], + "tag:prod": [ + "kratail2tid@passkey" + ], + "tag:client": [ + "kratail2tid@passkey" + ], + "tag:router": [ + "kratail2tid@passkey" + ], + "tag:exit": [ + "kratail2tid@passkey" + ], + "tag:ha": [ + "kratail2tid@passkey" + ] }, "hosts": { "webserver": "100.108.74.26", @@ -34,89 +50,146 @@ }, "autoApprovers": { "routes": { - "10.0.0.0/8": ["tag:router"], - "172.16.0.0/12": ["tag:router"], - "192.168.0.0/16": ["tag:ha"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.0.0.0/8": [ + "tag:router" + ], + "172.16.0.0/12": [ + "tag:router" + ], + "192.168.0.0/16": [ + "tag:ha" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "acls": [ { "action": "accept", - "src": ["*"], - "dst": ["192.168.1.0/24:*"] + "src": [ + "*" + ], + "dst": [ + "192.168.1.0/24:*" + ] } ] - }, - "api_endpoint": "https://api.tailscale.com/api/v2/tailnet/kratail2tid%40passkey/acl", - "api_response_code": 200 + } }, "topology": { "nodes": { "big-router": { "hostname": "big-router", - "tags": ["tag:router"], + "tags": [ + "tag:router" + ], "ipv4": "100.97.174.21", "ipv6": "fd7a:115c:a1e0::5137:ae15", - "routable_ips": ["10.0.0.0/8"], - "approved_routes": ["10.0.0.0/8"] + "routable_ips": [ + "10.0.0.0/8" + ], + "approved_routes": [ + "10.0.0.0/8" + ] }, "exit-node": { "hostname": "exit-node", - "tags": ["tag:exit"], + "tags": [ + "tag:exit" + ], "ipv4": "100.85.66.106", "ipv6": "fd7a:115c:a1e0::7c37:426a", - "routable_ips": ["0.0.0.0/0", "::/0"], - "approved_routes": ["0.0.0.0/0", "::/0"] + "routable_ips": [ + "0.0.0.0/0", + "::/0" + ], + "approved_routes": [ + "0.0.0.0/0", + "::/0" + ] }, "ha-router1": { "hostname": "ha-router1", - "tags": ["tag:ha"], + "tags": [ + "tag:ha" + ], "ipv4": "100.121.186.70", "ipv6": "fd7a:115c:a1e0::6737:ba46", - "routable_ips": ["192.168.1.0/24"], - "approved_routes": ["192.168.1.0/24"] + "routable_ips": [ + "192.168.1.0/24" + ], + "approved_routes": [ + "192.168.1.0/24" + ] }, "ha-router2": { "hostname": "ha-router2", - "tags": ["tag:ha"], + "tags": [ + "tag:ha" + ], "ipv4": "100.117.104.82", "ipv6": "fd7a:115c:a1e0::7437:6852", - "routable_ips": ["192.168.1.0/24"], - "approved_routes": ["192.168.1.0/24"] + "routable_ips": [ + "192.168.1.0/24" + ], + "approved_routes": [ + "192.168.1.0/24" + ] }, "multi-router": { "hostname": "multi-router", - "tags": ["tag:exit", "tag:router"], + "tags": [ + "tag:exit", + "tag:router" + ], "ipv4": "100.119.241.111", "ipv6": "fd7a:115c:a1e0::3337:f16f", - "routable_ips": ["172.16.0.0/24"], - "approved_routes": ["172.16.0.0/24"] + "routable_ips": [ + "172.16.0.0/24" + ], + "approved_routes": [ + "172.16.0.0/24" + ] }, "subnet-router": { "hostname": "subnet-router", - "tags": ["tag:router"], + "tags": [ + "tag:router" + ], "ipv4": "100.92.142.61", "ipv6": "fd7a:115c:a1e0::3e37:8e3d", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] + "routable_ips": [ + "10.33.0.0/16" + ], + "approved_routes": [ + "10.33.0.0/16" + ] }, "tagged-client": { "hostname": "tagged-client", - "tags": ["tag:client"], + "tags": [ + "tag:client" + ], "ipv4": "100.83.200.69", "ipv6": "fd7a:115c:a1e0::c537:c845" }, "tagged-prod": { "hostname": "tagged-prod", - "tags": ["tag:prod"], + "tags": [ + "tag:prod" + ], "ipv4": "100.103.8.15", "ipv6": "fd7a:115c:a1e0::5b37:80f" }, "tagged-server": { "hostname": "tagged-server", - "tags": ["tag:server"], + "tags": [ + "tag:server" + ], "ipv4": "100.108.74.26", "ipv6": "fd7a:115c:a1e0::b901:4a87" }, diff --git a/hscontrol/policy/v2/testdata/routes_results/ROUTES-o3_parent_child_different_nodes.hujson b/hscontrol/policy/v2/testdata/routes_results/ROUTES-o3_parent_child_different_nodes.hujson index 51c81fc1c..8eb321c2b 100644 --- a/hscontrol/policy/v2/testdata/routes_results/ROUTES-o3_parent_child_different_nodes.hujson +++ b/hscontrol/policy/v2/testdata/routes_results/ROUTES-o3_parent_child_different_nodes.hujson @@ -7,24 +7,40 @@ // Expected: Rules on 2 of 12 nodes { "test_id": "ROUTES-o3_parent_child_different_nodes", - "timestamp": "2026-03-17T16:26:34Z", - "propagation_wait_seconds": 10, "input": { - "policy_file": "routes_policies/routes_o3_parent_child_different_nodes.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"], - "tag:ha": ["kratail2tid@passkey"] + "tag:server": [ + "kratail2tid@passkey" + ], + "tag:prod": [ + "kratail2tid@passkey" + ], + "tag:client": [ + "kratail2tid@passkey" + ], + "tag:router": [ + "kratail2tid@passkey" + ], + "tag:exit": [ + "kratail2tid@passkey" + ], + "tag:ha": [ + "kratail2tid@passkey" + ] }, "hosts": { "webserver": "100.108.74.26", @@ -34,89 +50,146 @@ }, "autoApprovers": { "routes": { - "10.0.0.0/8": ["tag:router"], - "172.16.0.0/12": ["tag:router"], - "192.168.0.0/16": ["tag:ha"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.0.0.0/8": [ + "tag:router" + ], + "172.16.0.0/12": [ + "tag:router" + ], + "192.168.0.0/16": [ + "tag:ha" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "acls": [ { "action": "accept", - "src": ["*"], - "dst": ["10.33.1.0/24:22"] + "src": [ + "*" + ], + "dst": [ + "10.33.1.0/24:22" + ] } ] - }, - "api_endpoint": "https://api.tailscale.com/api/v2/tailnet/kratail2tid%40passkey/acl", - "api_response_code": 200 + } }, "topology": { "nodes": { "big-router": { "hostname": "big-router", - "tags": ["tag:router"], + "tags": [ + "tag:router" + ], "ipv4": "100.97.174.21", "ipv6": "fd7a:115c:a1e0::5137:ae15", - "routable_ips": ["10.0.0.0/8"], - "approved_routes": ["10.0.0.0/8"] + "routable_ips": [ + "10.0.0.0/8" + ], + "approved_routes": [ + "10.0.0.0/8" + ] }, "exit-node": { "hostname": "exit-node", - "tags": ["tag:exit"], + "tags": [ + "tag:exit" + ], "ipv4": "100.85.66.106", "ipv6": "fd7a:115c:a1e0::7c37:426a", - "routable_ips": ["0.0.0.0/0", "::/0"], - "approved_routes": ["0.0.0.0/0", "::/0"] + "routable_ips": [ + "0.0.0.0/0", + "::/0" + ], + "approved_routes": [ + "0.0.0.0/0", + "::/0" + ] }, "ha-router1": { "hostname": "ha-router1", - "tags": ["tag:ha"], + "tags": [ + "tag:ha" + ], "ipv4": "100.121.186.70", "ipv6": "fd7a:115c:a1e0::6737:ba46", - "routable_ips": ["192.168.1.0/24"], - "approved_routes": ["192.168.1.0/24"] + "routable_ips": [ + "192.168.1.0/24" + ], + "approved_routes": [ + "192.168.1.0/24" + ] }, "ha-router2": { "hostname": "ha-router2", - "tags": ["tag:ha"], + "tags": [ + "tag:ha" + ], "ipv4": "100.117.104.82", "ipv6": "fd7a:115c:a1e0::7437:6852", - "routable_ips": ["192.168.1.0/24"], - "approved_routes": ["192.168.1.0/24"] + "routable_ips": [ + "192.168.1.0/24" + ], + "approved_routes": [ + "192.168.1.0/24" + ] }, "multi-router": { "hostname": "multi-router", - "tags": ["tag:exit", "tag:router"], + "tags": [ + "tag:exit", + "tag:router" + ], "ipv4": "100.119.241.111", "ipv6": "fd7a:115c:a1e0::3337:f16f", - "routable_ips": ["172.16.0.0/24"], - "approved_routes": ["172.16.0.0/24"] + "routable_ips": [ + "172.16.0.0/24" + ], + "approved_routes": [ + "172.16.0.0/24" + ] }, "subnet-router": { "hostname": "subnet-router", - "tags": ["tag:router"], + "tags": [ + "tag:router" + ], "ipv4": "100.92.142.61", "ipv6": "fd7a:115c:a1e0::3e37:8e3d", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] + "routable_ips": [ + "10.33.0.0/16" + ], + "approved_routes": [ + "10.33.0.0/16" + ] }, "tagged-client": { "hostname": "tagged-client", - "tags": ["tag:client"], + "tags": [ + "tag:client" + ], "ipv4": "100.83.200.69", "ipv6": "fd7a:115c:a1e0::c537:c845" }, "tagged-prod": { "hostname": "tagged-prod", - "tags": ["tag:prod"], + "tags": [ + "tag:prod" + ], "ipv4": "100.103.8.15", "ipv6": "fd7a:115c:a1e0::5b37:80f" }, "tagged-server": { "hostname": "tagged-server", - "tags": ["tag:server"], + "tags": [ + "tag:server" + ], "ipv4": "100.108.74.26", "ipv6": "fd7a:115c:a1e0::b901:4a87" }, diff --git a/hscontrol/policy/v2/testdata/routes_results/ROUTES-o4_three_way_hierarchy.hujson b/hscontrol/policy/v2/testdata/routes_results/ROUTES-o4_three_way_hierarchy.hujson index 98c96d86a..2c1d8ed54 100644 --- a/hscontrol/policy/v2/testdata/routes_results/ROUTES-o4_three_way_hierarchy.hujson +++ b/hscontrol/policy/v2/testdata/routes_results/ROUTES-o4_three_way_hierarchy.hujson @@ -7,24 +7,40 @@ // Expected: Rules on 2 of 12 nodes { "test_id": "ROUTES-o4_three_way_hierarchy", - "timestamp": "2026-03-17T16:26:45Z", - "propagation_wait_seconds": 10, "input": { - "policy_file": "routes_policies/routes_o4_three_way_hierarchy.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"], - "tag:ha": ["kratail2tid@passkey"] + "tag:server": [ + "kratail2tid@passkey" + ], + "tag:prod": [ + "kratail2tid@passkey" + ], + "tag:client": [ + "kratail2tid@passkey" + ], + "tag:router": [ + "kratail2tid@passkey" + ], + "tag:exit": [ + "kratail2tid@passkey" + ], + "tag:ha": [ + "kratail2tid@passkey" + ] }, "hosts": { "webserver": "100.108.74.26", @@ -34,89 +50,146 @@ }, "autoApprovers": { "routes": { - "10.0.0.0/8": ["tag:router"], - "172.16.0.0/12": ["tag:router"], - "192.168.0.0/16": ["tag:ha"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.0.0.0/8": [ + "tag:router" + ], + "172.16.0.0/12": [ + "tag:router" + ], + "192.168.0.0/16": [ + "tag:ha" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "acls": [ { "action": "accept", - "src": ["*"], - "dst": ["10.33.1.128/25:22"] + "src": [ + "*" + ], + "dst": [ + "10.33.1.128/25:22" + ] } ] - }, - "api_endpoint": "https://api.tailscale.com/api/v2/tailnet/kratail2tid%40passkey/acl", - "api_response_code": 200 + } }, "topology": { "nodes": { "big-router": { "hostname": "big-router", - "tags": ["tag:router"], + "tags": [ + "tag:router" + ], "ipv4": "100.97.174.21", "ipv6": "fd7a:115c:a1e0::5137:ae15", - "routable_ips": ["10.0.0.0/8"], - "approved_routes": ["10.0.0.0/8"] + "routable_ips": [ + "10.0.0.0/8" + ], + "approved_routes": [ + "10.0.0.0/8" + ] }, "exit-node": { "hostname": "exit-node", - "tags": ["tag:exit"], + "tags": [ + "tag:exit" + ], "ipv4": "100.85.66.106", "ipv6": "fd7a:115c:a1e0::7c37:426a", - "routable_ips": ["0.0.0.0/0", "::/0"], - "approved_routes": ["0.0.0.0/0", "::/0"] + "routable_ips": [ + "0.0.0.0/0", + "::/0" + ], + "approved_routes": [ + "0.0.0.0/0", + "::/0" + ] }, "ha-router1": { "hostname": "ha-router1", - "tags": ["tag:ha"], + "tags": [ + "tag:ha" + ], "ipv4": "100.121.186.70", "ipv6": "fd7a:115c:a1e0::6737:ba46", - "routable_ips": ["192.168.1.0/24"], - "approved_routes": ["192.168.1.0/24"] + "routable_ips": [ + "192.168.1.0/24" + ], + "approved_routes": [ + "192.168.1.0/24" + ] }, "ha-router2": { "hostname": "ha-router2", - "tags": ["tag:ha"], + "tags": [ + "tag:ha" + ], "ipv4": "100.117.104.82", "ipv6": "fd7a:115c:a1e0::7437:6852", - "routable_ips": ["192.168.1.0/24"], - "approved_routes": ["192.168.1.0/24"] + "routable_ips": [ + "192.168.1.0/24" + ], + "approved_routes": [ + "192.168.1.0/24" + ] }, "multi-router": { "hostname": "multi-router", - "tags": ["tag:exit", "tag:router"], + "tags": [ + "tag:exit", + "tag:router" + ], "ipv4": "100.119.241.111", "ipv6": "fd7a:115c:a1e0::3337:f16f", - "routable_ips": ["172.16.0.0/24"], - "approved_routes": ["172.16.0.0/24"] + "routable_ips": [ + "172.16.0.0/24" + ], + "approved_routes": [ + "172.16.0.0/24" + ] }, "subnet-router": { "hostname": "subnet-router", - "tags": ["tag:router"], + "tags": [ + "tag:router" + ], "ipv4": "100.92.142.61", "ipv6": "fd7a:115c:a1e0::3e37:8e3d", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] + "routable_ips": [ + "10.33.0.0/16" + ], + "approved_routes": [ + "10.33.0.0/16" + ] }, "tagged-client": { "hostname": "tagged-client", - "tags": ["tag:client"], + "tags": [ + "tag:client" + ], "ipv4": "100.83.200.69", "ipv6": "fd7a:115c:a1e0::c537:c845" }, "tagged-prod": { "hostname": "tagged-prod", - "tags": ["tag:prod"], + "tags": [ + "tag:prod" + ], "ipv4": "100.103.8.15", "ipv6": "fd7a:115c:a1e0::5b37:80f" }, "tagged-server": { "hostname": "tagged-server", - "tags": ["tag:server"], + "tags": [ + "tag:server" + ], "ipv4": "100.108.74.26", "ipv6": "fd7a:115c:a1e0::b901:4a87" }, diff --git a/hscontrol/policy/v2/testdata/routes_results/ROUTES-o5_sibling_routes_with_parent_acl.hujson b/hscontrol/policy/v2/testdata/routes_results/ROUTES-o5_sibling_routes_with_parent_acl.hujson index 0c197bbf1..1142855d6 100644 --- a/hscontrol/policy/v2/testdata/routes_results/ROUTES-o5_sibling_routes_with_parent_acl.hujson +++ b/hscontrol/policy/v2/testdata/routes_results/ROUTES-o5_sibling_routes_with_parent_acl.hujson @@ -7,24 +7,40 @@ // Expected: Rules on 2 of 12 nodes { "test_id": "ROUTES-o5_sibling_routes_with_parent_acl", - "timestamp": "2026-03-17T16:26:56Z", - "propagation_wait_seconds": 10, "input": { - "policy_file": "routes_policies/routes_o5_sibling_routes_with_parent_acl.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"], - "tag:ha": ["kratail2tid@passkey"] + "tag:server": [ + "kratail2tid@passkey" + ], + "tag:prod": [ + "kratail2tid@passkey" + ], + "tag:client": [ + "kratail2tid@passkey" + ], + "tag:router": [ + "kratail2tid@passkey" + ], + "tag:exit": [ + "kratail2tid@passkey" + ], + "tag:ha": [ + "kratail2tid@passkey" + ] }, "hosts": { "webserver": "100.108.74.26", @@ -34,89 +50,146 @@ }, "autoApprovers": { "routes": { - "10.0.0.0/8": ["tag:router"], - "172.16.0.0/12": ["tag:router"], - "192.168.0.0/16": ["tag:ha"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.0.0.0/8": [ + "tag:router" + ], + "172.16.0.0/12": [ + "tag:router" + ], + "192.168.0.0/16": [ + "tag:ha" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "acls": [ { "action": "accept", - "src": ["*"], - "dst": ["10.0.0.0/8:*"] + "src": [ + "*" + ], + "dst": [ + "10.0.0.0/8:*" + ] } ] - }, - "api_endpoint": "https://api.tailscale.com/api/v2/tailnet/kratail2tid%40passkey/acl", - "api_response_code": 200 + } }, "topology": { "nodes": { "big-router": { "hostname": "big-router", - "tags": ["tag:router"], + "tags": [ + "tag:router" + ], "ipv4": "100.97.174.21", "ipv6": "fd7a:115c:a1e0::5137:ae15", - "routable_ips": ["10.0.0.0/8"], - "approved_routes": ["10.0.0.0/8"] + "routable_ips": [ + "10.0.0.0/8" + ], + "approved_routes": [ + "10.0.0.0/8" + ] }, "exit-node": { "hostname": "exit-node", - "tags": ["tag:exit"], + "tags": [ + "tag:exit" + ], "ipv4": "100.85.66.106", "ipv6": "fd7a:115c:a1e0::7c37:426a", - "routable_ips": ["0.0.0.0/0", "::/0"], - "approved_routes": ["0.0.0.0/0", "::/0"] + "routable_ips": [ + "0.0.0.0/0", + "::/0" + ], + "approved_routes": [ + "0.0.0.0/0", + "::/0" + ] }, "ha-router1": { "hostname": "ha-router1", - "tags": ["tag:ha"], + "tags": [ + "tag:ha" + ], "ipv4": "100.121.186.70", "ipv6": "fd7a:115c:a1e0::6737:ba46", - "routable_ips": ["192.168.1.0/24"], - "approved_routes": ["192.168.1.0/24"] + "routable_ips": [ + "192.168.1.0/24" + ], + "approved_routes": [ + "192.168.1.0/24" + ] }, "ha-router2": { "hostname": "ha-router2", - "tags": ["tag:ha"], + "tags": [ + "tag:ha" + ], "ipv4": "100.117.104.82", "ipv6": "fd7a:115c:a1e0::7437:6852", - "routable_ips": ["192.168.1.0/24"], - "approved_routes": ["192.168.1.0/24"] + "routable_ips": [ + "192.168.1.0/24" + ], + "approved_routes": [ + "192.168.1.0/24" + ] }, "multi-router": { "hostname": "multi-router", - "tags": ["tag:exit", "tag:router"], + "tags": [ + "tag:exit", + "tag:router" + ], "ipv4": "100.119.241.111", "ipv6": "fd7a:115c:a1e0::3337:f16f", - "routable_ips": ["172.16.0.0/24"], - "approved_routes": ["172.16.0.0/24"] + "routable_ips": [ + "172.16.0.0/24" + ], + "approved_routes": [ + "172.16.0.0/24" + ] }, "subnet-router": { "hostname": "subnet-router", - "tags": ["tag:router"], + "tags": [ + "tag:router" + ], "ipv4": "100.92.142.61", "ipv6": "fd7a:115c:a1e0::3e37:8e3d", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] + "routable_ips": [ + "10.33.0.0/16" + ], + "approved_routes": [ + "10.33.0.0/16" + ] }, "tagged-client": { "hostname": "tagged-client", - "tags": ["tag:client"], + "tags": [ + "tag:client" + ], "ipv4": "100.83.200.69", "ipv6": "fd7a:115c:a1e0::c537:c845" }, "tagged-prod": { "hostname": "tagged-prod", - "tags": ["tag:prod"], + "tags": [ + "tag:prod" + ], "ipv4": "100.103.8.15", "ipv6": "fd7a:115c:a1e0::5b37:80f" }, "tagged-server": { "hostname": "tagged-server", - "tags": ["tag:server"], + "tags": [ + "tag:server" + ], "ipv4": "100.108.74.26", "ipv6": "fd7a:115c:a1e0::b901:4a87" }, diff --git a/hscontrol/policy/v2/testdata/routes_results/ROUTES-o6_exit_route_expands_filter_dist.hujson b/hscontrol/policy/v2/testdata/routes_results/ROUTES-o6_exit_route_expands_filter_dist.hujson index df5dc5bca..ef89fe177 100644 --- a/hscontrol/policy/v2/testdata/routes_results/ROUTES-o6_exit_route_expands_filter_dist.hujson +++ b/hscontrol/policy/v2/testdata/routes_results/ROUTES-o6_exit_route_expands_filter_dist.hujson @@ -7,24 +7,40 @@ // Expected: No filter rules { "test_id": "ROUTES-o6_exit_route_expands_filter_dist", - "timestamp": "2026-03-17T16:27:06Z", - "propagation_wait_seconds": 10, "input": { - "policy_file": "routes_policies/routes_o6_exit_route_expands_filter_dist.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"], - "tag:ha": ["kratail2tid@passkey"] + "tag:server": [ + "kratail2tid@passkey" + ], + "tag:prod": [ + "kratail2tid@passkey" + ], + "tag:client": [ + "kratail2tid@passkey" + ], + "tag:router": [ + "kratail2tid@passkey" + ], + "tag:exit": [ + "kratail2tid@passkey" + ], + "tag:ha": [ + "kratail2tid@passkey" + ] }, "hosts": { "webserver": "100.108.74.26", @@ -34,89 +50,146 @@ }, "autoApprovers": { "routes": { - "10.0.0.0/8": ["tag:router"], - "172.16.0.0/12": ["tag:router"], - "192.168.0.0/16": ["tag:ha"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.0.0.0/8": [ + "tag:router" + ], + "172.16.0.0/12": [ + "tag:router" + ], + "192.168.0.0/16": [ + "tag:ha" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "acls": [ { "action": "accept", - "src": ["*"], - "dst": ["8.8.8.0/24:53"] + "src": [ + "*" + ], + "dst": [ + "8.8.8.0/24:53" + ] } ] - }, - "api_endpoint": "https://api.tailscale.com/api/v2/tailnet/kratail2tid%40passkey/acl", - "api_response_code": 200 + } }, "topology": { "nodes": { "big-router": { "hostname": "big-router", - "tags": ["tag:router"], + "tags": [ + "tag:router" + ], "ipv4": "100.97.174.21", "ipv6": "fd7a:115c:a1e0::5137:ae15", - "routable_ips": ["10.0.0.0/8"], - "approved_routes": ["10.0.0.0/8"] + "routable_ips": [ + "10.0.0.0/8" + ], + "approved_routes": [ + "10.0.0.0/8" + ] }, "exit-node": { "hostname": "exit-node", - "tags": ["tag:exit"], + "tags": [ + "tag:exit" + ], "ipv4": "100.85.66.106", "ipv6": "fd7a:115c:a1e0::7c37:426a", - "routable_ips": ["0.0.0.0/0", "::/0"], - "approved_routes": ["0.0.0.0/0", "::/0"] + "routable_ips": [ + "0.0.0.0/0", + "::/0" + ], + "approved_routes": [ + "0.0.0.0/0", + "::/0" + ] }, "ha-router1": { "hostname": "ha-router1", - "tags": ["tag:ha"], + "tags": [ + "tag:ha" + ], "ipv4": "100.121.186.70", "ipv6": "fd7a:115c:a1e0::6737:ba46", - "routable_ips": ["192.168.1.0/24"], - "approved_routes": ["192.168.1.0/24"] + "routable_ips": [ + "192.168.1.0/24" + ], + "approved_routes": [ + "192.168.1.0/24" + ] }, "ha-router2": { "hostname": "ha-router2", - "tags": ["tag:ha"], + "tags": [ + "tag:ha" + ], "ipv4": "100.117.104.82", "ipv6": "fd7a:115c:a1e0::7437:6852", - "routable_ips": ["192.168.1.0/24"], - "approved_routes": ["192.168.1.0/24"] + "routable_ips": [ + "192.168.1.0/24" + ], + "approved_routes": [ + "192.168.1.0/24" + ] }, "multi-router": { "hostname": "multi-router", - "tags": ["tag:exit", "tag:router"], + "tags": [ + "tag:exit", + "tag:router" + ], "ipv4": "100.119.241.111", "ipv6": "fd7a:115c:a1e0::3337:f16f", - "routable_ips": ["172.16.0.0/24"], - "approved_routes": ["172.16.0.0/24"] + "routable_ips": [ + "172.16.0.0/24" + ], + "approved_routes": [ + "172.16.0.0/24" + ] }, "subnet-router": { "hostname": "subnet-router", - "tags": ["tag:router"], + "tags": [ + "tag:router" + ], "ipv4": "100.92.142.61", "ipv6": "fd7a:115c:a1e0::3e37:8e3d", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] + "routable_ips": [ + "10.33.0.0/16" + ], + "approved_routes": [ + "10.33.0.0/16" + ] }, "tagged-client": { "hostname": "tagged-client", - "tags": ["tag:client"], + "tags": [ + "tag:client" + ], "ipv4": "100.83.200.69", "ipv6": "fd7a:115c:a1e0::c537:c845" }, "tagged-prod": { "hostname": "tagged-prod", - "tags": ["tag:prod"], + "tags": [ + "tag:prod" + ], "ipv4": "100.103.8.15", "ipv6": "fd7a:115c:a1e0::5b37:80f" }, "tagged-server": { "hostname": "tagged-server", - "tags": ["tag:server"], + "tags": [ + "tag:server" + ], "ipv4": "100.108.74.26", "ipv6": "fd7a:115c:a1e0::b901:4a87" }, diff --git a/hscontrol/policy/v2/testdata/routes_results/ROUTES-o7_specific_ip_targeting.hujson b/hscontrol/policy/v2/testdata/routes_results/ROUTES-o7_specific_ip_targeting.hujson index d9457e6aa..4f8ace451 100644 --- a/hscontrol/policy/v2/testdata/routes_results/ROUTES-o7_specific_ip_targeting.hujson +++ b/hscontrol/policy/v2/testdata/routes_results/ROUTES-o7_specific_ip_targeting.hujson @@ -7,24 +7,40 @@ // Expected: Rules on 2 of 12 nodes { "test_id": "ROUTES-o7_specific_ip_targeting", - "timestamp": "2026-03-17T16:27:17Z", - "propagation_wait_seconds": 10, "input": { - "policy_file": "routes_policies/routes_o7_specific_ip_targeting.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"], - "tag:ha": ["kratail2tid@passkey"] + "tag:server": [ + "kratail2tid@passkey" + ], + "tag:prod": [ + "kratail2tid@passkey" + ], + "tag:client": [ + "kratail2tid@passkey" + ], + "tag:router": [ + "kratail2tid@passkey" + ], + "tag:exit": [ + "kratail2tid@passkey" + ], + "tag:ha": [ + "kratail2tid@passkey" + ] }, "hosts": { "webserver": "100.108.74.26", @@ -34,89 +50,146 @@ }, "autoApprovers": { "routes": { - "10.0.0.0/8": ["tag:router"], - "172.16.0.0/12": ["tag:router"], - "192.168.0.0/16": ["tag:ha"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.0.0.0/8": [ + "tag:router" + ], + "172.16.0.0/12": [ + "tag:router" + ], + "192.168.0.0/16": [ + "tag:ha" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "acls": [ { "action": "accept", - "src": ["*"], - "dst": ["10.33.0.100/32:80"] + "src": [ + "*" + ], + "dst": [ + "10.33.0.100/32:80" + ] } ] - }, - "api_endpoint": "https://api.tailscale.com/api/v2/tailnet/kratail2tid%40passkey/acl", - "api_response_code": 200 + } }, "topology": { "nodes": { "big-router": { "hostname": "big-router", - "tags": ["tag:router"], + "tags": [ + "tag:router" + ], "ipv4": "100.97.174.21", "ipv6": "fd7a:115c:a1e0::5137:ae15", - "routable_ips": ["10.0.0.0/8"], - "approved_routes": ["10.0.0.0/8"] + "routable_ips": [ + "10.0.0.0/8" + ], + "approved_routes": [ + "10.0.0.0/8" + ] }, "exit-node": { "hostname": "exit-node", - "tags": ["tag:exit"], + "tags": [ + "tag:exit" + ], "ipv4": "100.85.66.106", "ipv6": "fd7a:115c:a1e0::7c37:426a", - "routable_ips": ["0.0.0.0/0", "::/0"], - "approved_routes": ["0.0.0.0/0", "::/0"] + "routable_ips": [ + "0.0.0.0/0", + "::/0" + ], + "approved_routes": [ + "0.0.0.0/0", + "::/0" + ] }, "ha-router1": { "hostname": "ha-router1", - "tags": ["tag:ha"], + "tags": [ + "tag:ha" + ], "ipv4": "100.121.186.70", "ipv6": "fd7a:115c:a1e0::6737:ba46", - "routable_ips": ["192.168.1.0/24"], - "approved_routes": ["192.168.1.0/24"] + "routable_ips": [ + "192.168.1.0/24" + ], + "approved_routes": [ + "192.168.1.0/24" + ] }, "ha-router2": { "hostname": "ha-router2", - "tags": ["tag:ha"], + "tags": [ + "tag:ha" + ], "ipv4": "100.117.104.82", "ipv6": "fd7a:115c:a1e0::7437:6852", - "routable_ips": ["192.168.1.0/24"], - "approved_routes": ["192.168.1.0/24"] + "routable_ips": [ + "192.168.1.0/24" + ], + "approved_routes": [ + "192.168.1.0/24" + ] }, "multi-router": { "hostname": "multi-router", - "tags": ["tag:exit", "tag:router"], + "tags": [ + "tag:exit", + "tag:router" + ], "ipv4": "100.119.241.111", "ipv6": "fd7a:115c:a1e0::3337:f16f", - "routable_ips": ["172.16.0.0/24"], - "approved_routes": ["172.16.0.0/24"] + "routable_ips": [ + "172.16.0.0/24" + ], + "approved_routes": [ + "172.16.0.0/24" + ] }, "subnet-router": { "hostname": "subnet-router", - "tags": ["tag:router"], + "tags": [ + "tag:router" + ], "ipv4": "100.92.142.61", "ipv6": "fd7a:115c:a1e0::3e37:8e3d", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] + "routable_ips": [ + "10.33.0.0/16" + ], + "approved_routes": [ + "10.33.0.0/16" + ] }, "tagged-client": { "hostname": "tagged-client", - "tags": ["tag:client"], + "tags": [ + "tag:client" + ], "ipv4": "100.83.200.69", "ipv6": "fd7a:115c:a1e0::c537:c845" }, "tagged-prod": { "hostname": "tagged-prod", - "tags": ["tag:prod"], + "tags": [ + "tag:prod" + ], "ipv4": "100.103.8.15", "ipv6": "fd7a:115c:a1e0::5b37:80f" }, "tagged-server": { "hostname": "tagged-server", - "tags": ["tag:server"], + "tags": [ + "tag:server" + ], "ipv4": "100.108.74.26", "ipv6": "fd7a:115c:a1e0::b901:4a87" }, diff --git a/hscontrol/policy/v2/testdata/routes_results/ROUTES-o8_same_node_overlapping_routes.hujson b/hscontrol/policy/v2/testdata/routes_results/ROUTES-o8_same_node_overlapping_routes.hujson index cf069c6c9..ef35bf534 100644 --- a/hscontrol/policy/v2/testdata/routes_results/ROUTES-o8_same_node_overlapping_routes.hujson +++ b/hscontrol/policy/v2/testdata/routes_results/ROUTES-o8_same_node_overlapping_routes.hujson @@ -7,24 +7,40 @@ // Expected: Rules on 2 of 12 nodes { "test_id": "ROUTES-o8_same_node_overlapping_routes", - "timestamp": "2026-03-17T16:27:28Z", - "propagation_wait_seconds": 10, "input": { - "policy_file": "routes_policies/routes_o8_same_node_overlapping_routes.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"], - "tag:ha": ["kratail2tid@passkey"] + "tag:server": [ + "kratail2tid@passkey" + ], + "tag:prod": [ + "kratail2tid@passkey" + ], + "tag:client": [ + "kratail2tid@passkey" + ], + "tag:router": [ + "kratail2tid@passkey" + ], + "tag:exit": [ + "kratail2tid@passkey" + ], + "tag:ha": [ + "kratail2tid@passkey" + ] }, "hosts": { "webserver": "100.108.74.26", @@ -34,89 +50,146 @@ }, "autoApprovers": { "routes": { - "10.0.0.0/8": ["tag:router"], - "172.16.0.0/12": ["tag:router"], - "192.168.0.0/16": ["tag:ha"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.0.0.0/8": [ + "tag:router" + ], + "172.16.0.0/12": [ + "tag:router" + ], + "192.168.0.0/16": [ + "tag:ha" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "acls": [ { "action": "accept", - "src": ["*"], - "dst": ["10.33.1.0/24:*"] + "src": [ + "*" + ], + "dst": [ + "10.33.1.0/24:*" + ] } ] - }, - "api_endpoint": "https://api.tailscale.com/api/v2/tailnet/kratail2tid%40passkey/acl", - "api_response_code": 200 + } }, "topology": { "nodes": { "big-router": { "hostname": "big-router", - "tags": ["tag:router"], + "tags": [ + "tag:router" + ], "ipv4": "100.97.174.21", "ipv6": "fd7a:115c:a1e0::5137:ae15", - "routable_ips": ["10.0.0.0/8"], - "approved_routes": ["10.0.0.0/8"] + "routable_ips": [ + "10.0.0.0/8" + ], + "approved_routes": [ + "10.0.0.0/8" + ] }, "exit-node": { "hostname": "exit-node", - "tags": ["tag:exit"], + "tags": [ + "tag:exit" + ], "ipv4": "100.85.66.106", "ipv6": "fd7a:115c:a1e0::7c37:426a", - "routable_ips": ["0.0.0.0/0", "::/0"], - "approved_routes": ["0.0.0.0/0", "::/0"] + "routable_ips": [ + "0.0.0.0/0", + "::/0" + ], + "approved_routes": [ + "0.0.0.0/0", + "::/0" + ] }, "ha-router1": { "hostname": "ha-router1", - "tags": ["tag:ha"], + "tags": [ + "tag:ha" + ], "ipv4": "100.121.186.70", "ipv6": "fd7a:115c:a1e0::6737:ba46", - "routable_ips": ["192.168.1.0/24"], - "approved_routes": ["192.168.1.0/24"] + "routable_ips": [ + "192.168.1.0/24" + ], + "approved_routes": [ + "192.168.1.0/24" + ] }, "ha-router2": { "hostname": "ha-router2", - "tags": ["tag:ha"], + "tags": [ + "tag:ha" + ], "ipv4": "100.117.104.82", "ipv6": "fd7a:115c:a1e0::7437:6852", - "routable_ips": ["192.168.1.0/24"], - "approved_routes": ["192.168.1.0/24"] + "routable_ips": [ + "192.168.1.0/24" + ], + "approved_routes": [ + "192.168.1.0/24" + ] }, "multi-router": { "hostname": "multi-router", - "tags": ["tag:exit", "tag:router"], + "tags": [ + "tag:exit", + "tag:router" + ], "ipv4": "100.119.241.111", "ipv6": "fd7a:115c:a1e0::3337:f16f", - "routable_ips": ["172.16.0.0/24"], - "approved_routes": ["172.16.0.0/24"] + "routable_ips": [ + "172.16.0.0/24" + ], + "approved_routes": [ + "172.16.0.0/24" + ] }, "subnet-router": { "hostname": "subnet-router", - "tags": ["tag:router"], + "tags": [ + "tag:router" + ], "ipv4": "100.92.142.61", "ipv6": "fd7a:115c:a1e0::3e37:8e3d", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] + "routable_ips": [ + "10.33.0.0/16" + ], + "approved_routes": [ + "10.33.0.0/16" + ] }, "tagged-client": { "hostname": "tagged-client", - "tags": ["tag:client"], + "tags": [ + "tag:client" + ], "ipv4": "100.83.200.69", "ipv6": "fd7a:115c:a1e0::c537:c845" }, "tagged-prod": { "hostname": "tagged-prod", - "tags": ["tag:prod"], + "tags": [ + "tag:prod" + ], "ipv4": "100.103.8.15", "ipv6": "fd7a:115c:a1e0::5b37:80f" }, "tagged-server": { "hostname": "tagged-server", - "tags": ["tag:server"], + "tags": [ + "tag:server" + ], "ipv4": "100.108.74.26", "ipv6": "fd7a:115c:a1e0::b901:4a87" }, diff --git a/hscontrol/policy/v2/testdata/routes_results/ROUTES-o9_different_nodes_same_route.hujson b/hscontrol/policy/v2/testdata/routes_results/ROUTES-o9_different_nodes_same_route.hujson index 40929db3c..9d1fbdc26 100644 --- a/hscontrol/policy/v2/testdata/routes_results/ROUTES-o9_different_nodes_same_route.hujson +++ b/hscontrol/policy/v2/testdata/routes_results/ROUTES-o9_different_nodes_same_route.hujson @@ -7,24 +7,40 @@ // Expected: Rules on 2 of 12 nodes { "test_id": "ROUTES-o9_different_nodes_same_route", - "timestamp": "2026-03-17T16:27:38Z", - "propagation_wait_seconds": 10, "input": { - "policy_file": "routes_policies/routes_o9_different_nodes_same_route.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"], - "tag:ha": ["kratail2tid@passkey"] + "tag:server": [ + "kratail2tid@passkey" + ], + "tag:prod": [ + "kratail2tid@passkey" + ], + "tag:client": [ + "kratail2tid@passkey" + ], + "tag:router": [ + "kratail2tid@passkey" + ], + "tag:exit": [ + "kratail2tid@passkey" + ], + "tag:ha": [ + "kratail2tid@passkey" + ] }, "hosts": { "webserver": "100.108.74.26", @@ -34,89 +50,146 @@ }, "autoApprovers": { "routes": { - "10.0.0.0/8": ["tag:router"], - "172.16.0.0/12": ["tag:router"], - "192.168.0.0/16": ["tag:ha"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.0.0.0/8": [ + "tag:router" + ], + "172.16.0.0/12": [ + "tag:router" + ], + "192.168.0.0/16": [ + "tag:ha" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "acls": [ { "action": "accept", - "src": ["autogroup:member"], - "dst": ["192.168.1.0/24:*"] + "src": [ + "autogroup:member" + ], + "dst": [ + "192.168.1.0/24:*" + ] } ] - }, - "api_endpoint": "https://api.tailscale.com/api/v2/tailnet/kratail2tid%40passkey/acl", - "api_response_code": 200 + } }, "topology": { "nodes": { "big-router": { "hostname": "big-router", - "tags": ["tag:router"], + "tags": [ + "tag:router" + ], "ipv4": "100.97.174.21", "ipv6": "fd7a:115c:a1e0::5137:ae15", - "routable_ips": ["10.0.0.0/8"], - "approved_routes": ["10.0.0.0/8"] + "routable_ips": [ + "10.0.0.0/8" + ], + "approved_routes": [ + "10.0.0.0/8" + ] }, "exit-node": { "hostname": "exit-node", - "tags": ["tag:exit"], + "tags": [ + "tag:exit" + ], "ipv4": "100.85.66.106", "ipv6": "fd7a:115c:a1e0::7c37:426a", - "routable_ips": ["0.0.0.0/0", "::/0"], - "approved_routes": ["0.0.0.0/0", "::/0"] + "routable_ips": [ + "0.0.0.0/0", + "::/0" + ], + "approved_routes": [ + "0.0.0.0/0", + "::/0" + ] }, "ha-router1": { "hostname": "ha-router1", - "tags": ["tag:ha"], + "tags": [ + "tag:ha" + ], "ipv4": "100.121.186.70", "ipv6": "fd7a:115c:a1e0::6737:ba46", - "routable_ips": ["192.168.1.0/24"], - "approved_routes": ["192.168.1.0/24"] + "routable_ips": [ + "192.168.1.0/24" + ], + "approved_routes": [ + "192.168.1.0/24" + ] }, "ha-router2": { "hostname": "ha-router2", - "tags": ["tag:ha"], + "tags": [ + "tag:ha" + ], "ipv4": "100.117.104.82", "ipv6": "fd7a:115c:a1e0::7437:6852", - "routable_ips": ["192.168.1.0/24"], - "approved_routes": ["192.168.1.0/24"] + "routable_ips": [ + "192.168.1.0/24" + ], + "approved_routes": [ + "192.168.1.0/24" + ] }, "multi-router": { "hostname": "multi-router", - "tags": ["tag:exit", "tag:router"], + "tags": [ + "tag:exit", + "tag:router" + ], "ipv4": "100.119.241.111", "ipv6": "fd7a:115c:a1e0::3337:f16f", - "routable_ips": ["172.16.0.0/24"], - "approved_routes": ["172.16.0.0/24"] + "routable_ips": [ + "172.16.0.0/24" + ], + "approved_routes": [ + "172.16.0.0/24" + ] }, "subnet-router": { "hostname": "subnet-router", - "tags": ["tag:router"], + "tags": [ + "tag:router" + ], "ipv4": "100.92.142.61", "ipv6": "fd7a:115c:a1e0::3e37:8e3d", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] + "routable_ips": [ + "10.33.0.0/16" + ], + "approved_routes": [ + "10.33.0.0/16" + ] }, "tagged-client": { "hostname": "tagged-client", - "tags": ["tag:client"], + "tags": [ + "tag:client" + ], "ipv4": "100.83.200.69", "ipv6": "fd7a:115c:a1e0::c537:c845" }, "tagged-prod": { "hostname": "tagged-prod", - "tags": ["tag:prod"], + "tags": [ + "tag:prod" + ], "ipv4": "100.103.8.15", "ipv6": "fd7a:115c:a1e0::5b37:80f" }, "tagged-server": { "hostname": "tagged-server", - "tags": ["tag:server"], + "tags": [ + "tag:server" + ], "ipv4": "100.108.74.26", "ipv6": "fd7a:115c:a1e0::b901:4a87" }, diff --git a/hscontrol/policy/v2/testdata/routes_results/ROUTES-r1_exit_covers_external_dest.hujson b/hscontrol/policy/v2/testdata/routes_results/ROUTES-r1_exit_covers_external_dest.hujson index 5cea70b1a..4f1f2b702 100644 --- a/hscontrol/policy/v2/testdata/routes_results/ROUTES-r1_exit_covers_external_dest.hujson +++ b/hscontrol/policy/v2/testdata/routes_results/ROUTES-r1_exit_covers_external_dest.hujson @@ -7,24 +7,40 @@ // Expected: No filter rules { "test_id": "ROUTES-r1_exit_covers_external_dest", - "timestamp": "2026-03-17T16:27:49Z", - "propagation_wait_seconds": 10, "input": { - "policy_file": "routes_policies/routes_r1_exit_covers_external_dest.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"], - "tag:ha": ["kratail2tid@passkey"] + "tag:server": [ + "kratail2tid@passkey" + ], + "tag:prod": [ + "kratail2tid@passkey" + ], + "tag:client": [ + "kratail2tid@passkey" + ], + "tag:router": [ + "kratail2tid@passkey" + ], + "tag:exit": [ + "kratail2tid@passkey" + ], + "tag:ha": [ + "kratail2tid@passkey" + ] }, "hosts": { "webserver": "100.108.74.26", @@ -34,89 +50,146 @@ }, "autoApprovers": { "routes": { - "10.0.0.0/8": ["tag:router"], - "172.16.0.0/12": ["tag:router"], - "192.168.0.0/16": ["tag:ha"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.0.0.0/8": [ + "tag:router" + ], + "172.16.0.0/12": [ + "tag:router" + ], + "192.168.0.0/16": [ + "tag:ha" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "acls": [ { "action": "accept", - "src": ["*"], - "dst": ["8.8.8.0/24:53"] + "src": [ + "*" + ], + "dst": [ + "8.8.8.0/24:53" + ] } ] - }, - "api_endpoint": "https://api.tailscale.com/api/v2/tailnet/kratail2tid%40passkey/acl", - "api_response_code": 200 + } }, "topology": { "nodes": { "big-router": { "hostname": "big-router", - "tags": ["tag:router"], + "tags": [ + "tag:router" + ], "ipv4": "100.97.174.21", "ipv6": "fd7a:115c:a1e0::5137:ae15", - "routable_ips": ["10.0.0.0/8"], - "approved_routes": ["10.0.0.0/8"] + "routable_ips": [ + "10.0.0.0/8" + ], + "approved_routes": [ + "10.0.0.0/8" + ] }, "exit-node": { "hostname": "exit-node", - "tags": ["tag:exit"], + "tags": [ + "tag:exit" + ], "ipv4": "100.85.66.106", "ipv6": "fd7a:115c:a1e0::7c37:426a", - "routable_ips": ["0.0.0.0/0", "::/0"], - "approved_routes": ["0.0.0.0/0", "::/0"] + "routable_ips": [ + "0.0.0.0/0", + "::/0" + ], + "approved_routes": [ + "0.0.0.0/0", + "::/0" + ] }, "ha-router1": { "hostname": "ha-router1", - "tags": ["tag:ha"], + "tags": [ + "tag:ha" + ], "ipv4": "100.121.186.70", "ipv6": "fd7a:115c:a1e0::6737:ba46", - "routable_ips": ["192.168.1.0/24"], - "approved_routes": ["192.168.1.0/24"] + "routable_ips": [ + "192.168.1.0/24" + ], + "approved_routes": [ + "192.168.1.0/24" + ] }, "ha-router2": { "hostname": "ha-router2", - "tags": ["tag:ha"], + "tags": [ + "tag:ha" + ], "ipv4": "100.117.104.82", "ipv6": "fd7a:115c:a1e0::7437:6852", - "routable_ips": ["192.168.1.0/24"], - "approved_routes": ["192.168.1.0/24"] + "routable_ips": [ + "192.168.1.0/24" + ], + "approved_routes": [ + "192.168.1.0/24" + ] }, "multi-router": { "hostname": "multi-router", - "tags": ["tag:exit", "tag:router"], + "tags": [ + "tag:exit", + "tag:router" + ], "ipv4": "100.119.241.111", "ipv6": "fd7a:115c:a1e0::3337:f16f", - "routable_ips": ["172.16.0.0/24"], - "approved_routes": ["172.16.0.0/24"] + "routable_ips": [ + "172.16.0.0/24" + ], + "approved_routes": [ + "172.16.0.0/24" + ] }, "subnet-router": { "hostname": "subnet-router", - "tags": ["tag:router"], + "tags": [ + "tag:router" + ], "ipv4": "100.92.142.61", "ipv6": "fd7a:115c:a1e0::3e37:8e3d", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] + "routable_ips": [ + "10.33.0.0/16" + ], + "approved_routes": [ + "10.33.0.0/16" + ] }, "tagged-client": { "hostname": "tagged-client", - "tags": ["tag:client"], + "tags": [ + "tag:client" + ], "ipv4": "100.83.200.69", "ipv6": "fd7a:115c:a1e0::c537:c845" }, "tagged-prod": { "hostname": "tagged-prod", - "tags": ["tag:prod"], + "tags": [ + "tag:prod" + ], "ipv4": "100.103.8.15", "ipv6": "fd7a:115c:a1e0::5b37:80f" }, "tagged-server": { "hostname": "tagged-server", - "tags": ["tag:server"], + "tags": [ + "tag:server" + ], "ipv4": "100.108.74.26", "ipv6": "fd7a:115c:a1e0::b901:4a87" }, diff --git a/hscontrol/policy/v2/testdata/routes_results/ROUTES-r2_parent_route_covers_child_dest.hujson b/hscontrol/policy/v2/testdata/routes_results/ROUTES-r2_parent_route_covers_child_dest.hujson index e22054b00..b655697c9 100644 --- a/hscontrol/policy/v2/testdata/routes_results/ROUTES-r2_parent_route_covers_child_dest.hujson +++ b/hscontrol/policy/v2/testdata/routes_results/ROUTES-r2_parent_route_covers_child_dest.hujson @@ -7,24 +7,40 @@ // Expected: Rules on 2 of 12 nodes { "test_id": "ROUTES-r2_parent_route_covers_child_dest", - "timestamp": "2026-03-17T16:27:59Z", - "propagation_wait_seconds": 10, "input": { - "policy_file": "routes_policies/routes_r2_parent_route_covers_child_dest.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"], - "tag:ha": ["kratail2tid@passkey"] + "tag:server": [ + "kratail2tid@passkey" + ], + "tag:prod": [ + "kratail2tid@passkey" + ], + "tag:client": [ + "kratail2tid@passkey" + ], + "tag:router": [ + "kratail2tid@passkey" + ], + "tag:exit": [ + "kratail2tid@passkey" + ], + "tag:ha": [ + "kratail2tid@passkey" + ] }, "hosts": { "webserver": "100.108.74.26", @@ -34,89 +50,146 @@ }, "autoApprovers": { "routes": { - "10.0.0.0/8": ["tag:router"], - "172.16.0.0/12": ["tag:router"], - "192.168.0.0/16": ["tag:ha"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.0.0.0/8": [ + "tag:router" + ], + "172.16.0.0/12": [ + "tag:router" + ], + "192.168.0.0/16": [ + "tag:ha" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "acls": [ { "action": "accept", - "src": ["*"], - "dst": ["10.33.1.0/24:22"] + "src": [ + "*" + ], + "dst": [ + "10.33.1.0/24:22" + ] } ] - }, - "api_endpoint": "https://api.tailscale.com/api/v2/tailnet/kratail2tid%40passkey/acl", - "api_response_code": 200 + } }, "topology": { "nodes": { "big-router": { "hostname": "big-router", - "tags": ["tag:router"], + "tags": [ + "tag:router" + ], "ipv4": "100.97.174.21", "ipv6": "fd7a:115c:a1e0::5137:ae15", - "routable_ips": ["10.0.0.0/8"], - "approved_routes": ["10.0.0.0/8"] + "routable_ips": [ + "10.0.0.0/8" + ], + "approved_routes": [ + "10.0.0.0/8" + ] }, "exit-node": { "hostname": "exit-node", - "tags": ["tag:exit"], + "tags": [ + "tag:exit" + ], "ipv4": "100.85.66.106", "ipv6": "fd7a:115c:a1e0::7c37:426a", - "routable_ips": ["0.0.0.0/0", "::/0"], - "approved_routes": ["0.0.0.0/0", "::/0"] + "routable_ips": [ + "0.0.0.0/0", + "::/0" + ], + "approved_routes": [ + "0.0.0.0/0", + "::/0" + ] }, "ha-router1": { "hostname": "ha-router1", - "tags": ["tag:ha"], + "tags": [ + "tag:ha" + ], "ipv4": "100.121.186.70", "ipv6": "fd7a:115c:a1e0::6737:ba46", - "routable_ips": ["192.168.1.0/24"], - "approved_routes": ["192.168.1.0/24"] + "routable_ips": [ + "192.168.1.0/24" + ], + "approved_routes": [ + "192.168.1.0/24" + ] }, "ha-router2": { "hostname": "ha-router2", - "tags": ["tag:ha"], + "tags": [ + "tag:ha" + ], "ipv4": "100.117.104.82", "ipv6": "fd7a:115c:a1e0::7437:6852", - "routable_ips": ["192.168.1.0/24"], - "approved_routes": ["192.168.1.0/24"] + "routable_ips": [ + "192.168.1.0/24" + ], + "approved_routes": [ + "192.168.1.0/24" + ] }, "multi-router": { "hostname": "multi-router", - "tags": ["tag:exit", "tag:router"], + "tags": [ + "tag:exit", + "tag:router" + ], "ipv4": "100.119.241.111", "ipv6": "fd7a:115c:a1e0::3337:f16f", - "routable_ips": ["172.16.0.0/24"], - "approved_routes": ["172.16.0.0/24"] + "routable_ips": [ + "172.16.0.0/24" + ], + "approved_routes": [ + "172.16.0.0/24" + ] }, "subnet-router": { "hostname": "subnet-router", - "tags": ["tag:router"], + "tags": [ + "tag:router" + ], "ipv4": "100.92.142.61", "ipv6": "fd7a:115c:a1e0::3e37:8e3d", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] + "routable_ips": [ + "10.33.0.0/16" + ], + "approved_routes": [ + "10.33.0.0/16" + ] }, "tagged-client": { "hostname": "tagged-client", - "tags": ["tag:client"], + "tags": [ + "tag:client" + ], "ipv4": "100.83.200.69", "ipv6": "fd7a:115c:a1e0::c537:c845" }, "tagged-prod": { "hostname": "tagged-prod", - "tags": ["tag:prod"], + "tags": [ + "tag:prod" + ], "ipv4": "100.103.8.15", "ipv6": "fd7a:115c:a1e0::5b37:80f" }, "tagged-server": { "hostname": "tagged-server", - "tags": ["tag:server"], + "tags": [ + "tag:server" + ], "ipv4": "100.108.74.26", "ipv6": "fd7a:115c:a1e0::b901:4a87" }, diff --git a/hscontrol/policy/v2/testdata/routes_results/ROUTES-r3_sibling_routes_no_coverage.hujson b/hscontrol/policy/v2/testdata/routes_results/ROUTES-r3_sibling_routes_no_coverage.hujson index 8cef74f9d..0ba8434e6 100644 --- a/hscontrol/policy/v2/testdata/routes_results/ROUTES-r3_sibling_routes_no_coverage.hujson +++ b/hscontrol/policy/v2/testdata/routes_results/ROUTES-r3_sibling_routes_no_coverage.hujson @@ -7,24 +7,40 @@ // Expected: Rules on 1 of 12 nodes { "test_id": "ROUTES-r3_sibling_routes_no_coverage", - "timestamp": "2026-03-17T16:28:10Z", - "propagation_wait_seconds": 10, "input": { - "policy_file": "routes_policies/routes_r3_sibling_routes_no_coverage.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"], - "tag:ha": ["kratail2tid@passkey"] + "tag:server": [ + "kratail2tid@passkey" + ], + "tag:prod": [ + "kratail2tid@passkey" + ], + "tag:client": [ + "kratail2tid@passkey" + ], + "tag:router": [ + "kratail2tid@passkey" + ], + "tag:exit": [ + "kratail2tid@passkey" + ], + "tag:ha": [ + "kratail2tid@passkey" + ] }, "hosts": { "webserver": "100.108.74.26", @@ -34,89 +50,146 @@ }, "autoApprovers": { "routes": { - "10.0.0.0/8": ["tag:router"], - "172.16.0.0/12": ["tag:router"], - "192.168.0.0/16": ["tag:ha"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.0.0.0/8": [ + "tag:router" + ], + "172.16.0.0/12": [ + "tag:router" + ], + "192.168.0.0/16": [ + "tag:ha" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "acls": [ { "action": "accept", - "src": ["*"], - "dst": ["10.34.0.0/16:22"] + "src": [ + "*" + ], + "dst": [ + "10.34.0.0/16:22" + ] } ] - }, - "api_endpoint": "https://api.tailscale.com/api/v2/tailnet/kratail2tid%40passkey/acl", - "api_response_code": 200 + } }, "topology": { "nodes": { "big-router": { "hostname": "big-router", - "tags": ["tag:router"], + "tags": [ + "tag:router" + ], "ipv4": "100.97.174.21", "ipv6": "fd7a:115c:a1e0::5137:ae15", - "routable_ips": ["10.0.0.0/8"], - "approved_routes": ["10.0.0.0/8"] + "routable_ips": [ + "10.0.0.0/8" + ], + "approved_routes": [ + "10.0.0.0/8" + ] }, "exit-node": { "hostname": "exit-node", - "tags": ["tag:exit"], + "tags": [ + "tag:exit" + ], "ipv4": "100.85.66.106", "ipv6": "fd7a:115c:a1e0::7c37:426a", - "routable_ips": ["0.0.0.0/0", "::/0"], - "approved_routes": ["0.0.0.0/0", "::/0"] + "routable_ips": [ + "0.0.0.0/0", + "::/0" + ], + "approved_routes": [ + "0.0.0.0/0", + "::/0" + ] }, "ha-router1": { "hostname": "ha-router1", - "tags": ["tag:ha"], + "tags": [ + "tag:ha" + ], "ipv4": "100.121.186.70", "ipv6": "fd7a:115c:a1e0::6737:ba46", - "routable_ips": ["192.168.1.0/24"], - "approved_routes": ["192.168.1.0/24"] + "routable_ips": [ + "192.168.1.0/24" + ], + "approved_routes": [ + "192.168.1.0/24" + ] }, "ha-router2": { "hostname": "ha-router2", - "tags": ["tag:ha"], + "tags": [ + "tag:ha" + ], "ipv4": "100.117.104.82", "ipv6": "fd7a:115c:a1e0::7437:6852", - "routable_ips": ["192.168.1.0/24"], - "approved_routes": ["192.168.1.0/24"] + "routable_ips": [ + "192.168.1.0/24" + ], + "approved_routes": [ + "192.168.1.0/24" + ] }, "multi-router": { "hostname": "multi-router", - "tags": ["tag:exit", "tag:router"], + "tags": [ + "tag:exit", + "tag:router" + ], "ipv4": "100.119.241.111", "ipv6": "fd7a:115c:a1e0::3337:f16f", - "routable_ips": ["172.16.0.0/24"], - "approved_routes": ["172.16.0.0/24"] + "routable_ips": [ + "172.16.0.0/24" + ], + "approved_routes": [ + "172.16.0.0/24" + ] }, "subnet-router": { "hostname": "subnet-router", - "tags": ["tag:router"], + "tags": [ + "tag:router" + ], "ipv4": "100.92.142.61", "ipv6": "fd7a:115c:a1e0::3e37:8e3d", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] + "routable_ips": [ + "10.33.0.0/16" + ], + "approved_routes": [ + "10.33.0.0/16" + ] }, "tagged-client": { "hostname": "tagged-client", - "tags": ["tag:client"], + "tags": [ + "tag:client" + ], "ipv4": "100.83.200.69", "ipv6": "fd7a:115c:a1e0::c537:c845" }, "tagged-prod": { "hostname": "tagged-prod", - "tags": ["tag:prod"], + "tags": [ + "tag:prod" + ], "ipv4": "100.103.8.15", "ipv6": "fd7a:115c:a1e0::5b37:80f" }, "tagged-server": { "hostname": "tagged-server", - "tags": ["tag:server"], + "tags": [ + "tag:server" + ], "ipv4": "100.108.74.26", "ipv6": "fd7a:115c:a1e0::b901:4a87" }, diff --git a/hscontrol/policy/v2/testdata/routes_results/ROUTES-r4_exact_match_route.hujson b/hscontrol/policy/v2/testdata/routes_results/ROUTES-r4_exact_match_route.hujson index 1f0bbb9cd..1d8ca12ba 100644 --- a/hscontrol/policy/v2/testdata/routes_results/ROUTES-r4_exact_match_route.hujson +++ b/hscontrol/policy/v2/testdata/routes_results/ROUTES-r4_exact_match_route.hujson @@ -7,24 +7,40 @@ // Expected: Rules on 2 of 12 nodes { "test_id": "ROUTES-r4_exact_match_route", - "timestamp": "2026-03-17T16:28:21Z", - "propagation_wait_seconds": 10, "input": { - "policy_file": "routes_policies/routes_r4_exact_match_route.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"], - "tag:ha": ["kratail2tid@passkey"] + "tag:server": [ + "kratail2tid@passkey" + ], + "tag:prod": [ + "kratail2tid@passkey" + ], + "tag:client": [ + "kratail2tid@passkey" + ], + "tag:router": [ + "kratail2tid@passkey" + ], + "tag:exit": [ + "kratail2tid@passkey" + ], + "tag:ha": [ + "kratail2tid@passkey" + ] }, "hosts": { "webserver": "100.108.74.26", @@ -34,89 +50,146 @@ }, "autoApprovers": { "routes": { - "10.0.0.0/8": ["tag:router"], - "172.16.0.0/12": ["tag:router"], - "192.168.0.0/16": ["tag:ha"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.0.0.0/8": [ + "tag:router" + ], + "172.16.0.0/12": [ + "tag:router" + ], + "192.168.0.0/16": [ + "tag:ha" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "acls": [ { "action": "accept", - "src": ["*"], - "dst": ["10.33.0.0/16:22"] + "src": [ + "*" + ], + "dst": [ + "10.33.0.0/16:22" + ] } ] - }, - "api_endpoint": "https://api.tailscale.com/api/v2/tailnet/kratail2tid%40passkey/acl", - "api_response_code": 200 + } }, "topology": { "nodes": { "big-router": { "hostname": "big-router", - "tags": ["tag:router"], + "tags": [ + "tag:router" + ], "ipv4": "100.97.174.21", "ipv6": "fd7a:115c:a1e0::5137:ae15", - "routable_ips": ["10.0.0.0/8"], - "approved_routes": ["10.0.0.0/8"] + "routable_ips": [ + "10.0.0.0/8" + ], + "approved_routes": [ + "10.0.0.0/8" + ] }, "exit-node": { "hostname": "exit-node", - "tags": ["tag:exit"], + "tags": [ + "tag:exit" + ], "ipv4": "100.85.66.106", "ipv6": "fd7a:115c:a1e0::7c37:426a", - "routable_ips": ["0.0.0.0/0", "::/0"], - "approved_routes": ["0.0.0.0/0", "::/0"] + "routable_ips": [ + "0.0.0.0/0", + "::/0" + ], + "approved_routes": [ + "0.0.0.0/0", + "::/0" + ] }, "ha-router1": { "hostname": "ha-router1", - "tags": ["tag:ha"], + "tags": [ + "tag:ha" + ], "ipv4": "100.121.186.70", "ipv6": "fd7a:115c:a1e0::6737:ba46", - "routable_ips": ["192.168.1.0/24"], - "approved_routes": ["192.168.1.0/24"] + "routable_ips": [ + "192.168.1.0/24" + ], + "approved_routes": [ + "192.168.1.0/24" + ] }, "ha-router2": { "hostname": "ha-router2", - "tags": ["tag:ha"], + "tags": [ + "tag:ha" + ], "ipv4": "100.117.104.82", "ipv6": "fd7a:115c:a1e0::7437:6852", - "routable_ips": ["192.168.1.0/24"], - "approved_routes": ["192.168.1.0/24"] + "routable_ips": [ + "192.168.1.0/24" + ], + "approved_routes": [ + "192.168.1.0/24" + ] }, "multi-router": { "hostname": "multi-router", - "tags": ["tag:exit", "tag:router"], + "tags": [ + "tag:exit", + "tag:router" + ], "ipv4": "100.119.241.111", "ipv6": "fd7a:115c:a1e0::3337:f16f", - "routable_ips": ["172.16.0.0/24"], - "approved_routes": ["172.16.0.0/24"] + "routable_ips": [ + "172.16.0.0/24" + ], + "approved_routes": [ + "172.16.0.0/24" + ] }, "subnet-router": { "hostname": "subnet-router", - "tags": ["tag:router"], + "tags": [ + "tag:router" + ], "ipv4": "100.92.142.61", "ipv6": "fd7a:115c:a1e0::3e37:8e3d", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] + "routable_ips": [ + "10.33.0.0/16" + ], + "approved_routes": [ + "10.33.0.0/16" + ] }, "tagged-client": { "hostname": "tagged-client", - "tags": ["tag:client"], + "tags": [ + "tag:client" + ], "ipv4": "100.83.200.69", "ipv6": "fd7a:115c:a1e0::c537:c845" }, "tagged-prod": { "hostname": "tagged-prod", - "tags": ["tag:prod"], + "tags": [ + "tag:prod" + ], "ipv4": "100.103.8.15", "ipv6": "fd7a:115c:a1e0::5b37:80f" }, "tagged-server": { "hostname": "tagged-server", - "tags": ["tag:server"], + "tags": [ + "tag:server" + ], "ipv4": "100.108.74.26", "ipv6": "fd7a:115c:a1e0::b901:4a87" }, diff --git a/hscontrol/policy/v2/testdata/routes_results/ROUTES-r5_route_coverage_check_logic.hujson b/hscontrol/policy/v2/testdata/routes_results/ROUTES-r5_route_coverage_check_logic.hujson index a116a974c..e4d443e27 100644 --- a/hscontrol/policy/v2/testdata/routes_results/ROUTES-r5_route_coverage_check_logic.hujson +++ b/hscontrol/policy/v2/testdata/routes_results/ROUTES-r5_route_coverage_check_logic.hujson @@ -7,24 +7,40 @@ // Expected: Rules on 2 of 12 nodes { "test_id": "ROUTES-r5_route_coverage_check_logic", - "timestamp": "2026-03-17T16:28:31Z", - "propagation_wait_seconds": 10, "input": { - "policy_file": "routes_policies/routes_r5_route_coverage_check_logic.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"], - "tag:ha": ["kratail2tid@passkey"] + "tag:server": [ + "kratail2tid@passkey" + ], + "tag:prod": [ + "kratail2tid@passkey" + ], + "tag:client": [ + "kratail2tid@passkey" + ], + "tag:router": [ + "kratail2tid@passkey" + ], + "tag:exit": [ + "kratail2tid@passkey" + ], + "tag:ha": [ + "kratail2tid@passkey" + ] }, "hosts": { "webserver": "100.108.74.26", @@ -34,89 +50,146 @@ }, "autoApprovers": { "routes": { - "10.0.0.0/8": ["tag:router"], - "172.16.0.0/12": ["tag:router"], - "192.168.0.0/16": ["tag:ha"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.0.0.0/8": [ + "tag:router" + ], + "172.16.0.0/12": [ + "tag:router" + ], + "192.168.0.0/16": [ + "tag:ha" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "acls": [ { "action": "accept", - "src": ["*"], - "dst": ["10.33.1.0/24:22"] + "src": [ + "*" + ], + "dst": [ + "10.33.1.0/24:22" + ] } ] - }, - "api_endpoint": "https://api.tailscale.com/api/v2/tailnet/kratail2tid%40passkey/acl", - "api_response_code": 200 + } }, "topology": { "nodes": { "big-router": { "hostname": "big-router", - "tags": ["tag:router"], + "tags": [ + "tag:router" + ], "ipv4": "100.97.174.21", "ipv6": "fd7a:115c:a1e0::5137:ae15", - "routable_ips": ["10.0.0.0/8"], - "approved_routes": ["10.0.0.0/8"] + "routable_ips": [ + "10.0.0.0/8" + ], + "approved_routes": [ + "10.0.0.0/8" + ] }, "exit-node": { "hostname": "exit-node", - "tags": ["tag:exit"], + "tags": [ + "tag:exit" + ], "ipv4": "100.85.66.106", "ipv6": "fd7a:115c:a1e0::7c37:426a", - "routable_ips": ["0.0.0.0/0", "::/0"], - "approved_routes": ["0.0.0.0/0", "::/0"] + "routable_ips": [ + "0.0.0.0/0", + "::/0" + ], + "approved_routes": [ + "0.0.0.0/0", + "::/0" + ] }, "ha-router1": { "hostname": "ha-router1", - "tags": ["tag:ha"], + "tags": [ + "tag:ha" + ], "ipv4": "100.121.186.70", "ipv6": "fd7a:115c:a1e0::6737:ba46", - "routable_ips": ["192.168.1.0/24"], - "approved_routes": ["192.168.1.0/24"] + "routable_ips": [ + "192.168.1.0/24" + ], + "approved_routes": [ + "192.168.1.0/24" + ] }, "ha-router2": { "hostname": "ha-router2", - "tags": ["tag:ha"], + "tags": [ + "tag:ha" + ], "ipv4": "100.117.104.82", "ipv6": "fd7a:115c:a1e0::7437:6852", - "routable_ips": ["192.168.1.0/24"], - "approved_routes": ["192.168.1.0/24"] + "routable_ips": [ + "192.168.1.0/24" + ], + "approved_routes": [ + "192.168.1.0/24" + ] }, "multi-router": { "hostname": "multi-router", - "tags": ["tag:exit", "tag:router"], + "tags": [ + "tag:exit", + "tag:router" + ], "ipv4": "100.119.241.111", "ipv6": "fd7a:115c:a1e0::3337:f16f", - "routable_ips": ["172.16.0.0/24"], - "approved_routes": ["172.16.0.0/24"] + "routable_ips": [ + "172.16.0.0/24" + ], + "approved_routes": [ + "172.16.0.0/24" + ] }, "subnet-router": { "hostname": "subnet-router", - "tags": ["tag:router"], + "tags": [ + "tag:router" + ], "ipv4": "100.92.142.61", "ipv6": "fd7a:115c:a1e0::3e37:8e3d", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] + "routable_ips": [ + "10.33.0.0/16" + ], + "approved_routes": [ + "10.33.0.0/16" + ] }, "tagged-client": { "hostname": "tagged-client", - "tags": ["tag:client"], + "tags": [ + "tag:client" + ], "ipv4": "100.83.200.69", "ipv6": "fd7a:115c:a1e0::c537:c845" }, "tagged-prod": { "hostname": "tagged-prod", - "tags": ["tag:prod"], + "tags": [ + "tag:prod" + ], "ipv4": "100.103.8.15", "ipv6": "fd7a:115c:a1e0::5b37:80f" }, "tagged-server": { "hostname": "tagged-server", - "tags": ["tag:server"], + "tags": [ + "tag:server" + ], "ipv4": "100.108.74.26", "ipv6": "fd7a:115c:a1e0::b901:4a87" }, diff --git a/hscontrol/policy/v2/testdata/routes_results/ROUTES-r6_ipv6_route_coverage.hujson b/hscontrol/policy/v2/testdata/routes_results/ROUTES-r6_ipv6_route_coverage.hujson index f0edb840c..b204769fc 100644 --- a/hscontrol/policy/v2/testdata/routes_results/ROUTES-r6_ipv6_route_coverage.hujson +++ b/hscontrol/policy/v2/testdata/routes_results/ROUTES-r6_ipv6_route_coverage.hujson @@ -7,24 +7,40 @@ // Expected: No filter rules { "test_id": "ROUTES-r6_ipv6_route_coverage", - "timestamp": "2026-03-17T16:28:42Z", - "propagation_wait_seconds": 10, "input": { - "policy_file": "routes_policies/routes_r6_ipv6_route_coverage.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"], - "tag:ha": ["kratail2tid@passkey"] + "tag:server": [ + "kratail2tid@passkey" + ], + "tag:prod": [ + "kratail2tid@passkey" + ], + "tag:client": [ + "kratail2tid@passkey" + ], + "tag:router": [ + "kratail2tid@passkey" + ], + "tag:exit": [ + "kratail2tid@passkey" + ], + "tag:ha": [ + "kratail2tid@passkey" + ] }, "hosts": { "webserver": "100.108.74.26", @@ -34,89 +50,146 @@ }, "autoApprovers": { "routes": { - "10.0.0.0/8": ["tag:router"], - "172.16.0.0/12": ["tag:router"], - "192.168.0.0/16": ["tag:ha"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.0.0.0/8": [ + "tag:router" + ], + "172.16.0.0/12": [ + "tag:router" + ], + "192.168.0.0/16": [ + "tag:ha" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "acls": [ { "action": "accept", - "src": ["*"], - "dst": ["fd7a:115c:a1e0::1/128:443"] + "src": [ + "*" + ], + "dst": [ + "fd7a:115c:a1e0::1/128:443" + ] } ] - }, - "api_endpoint": "https://api.tailscale.com/api/v2/tailnet/kratail2tid%40passkey/acl", - "api_response_code": 200 + } }, "topology": { "nodes": { "big-router": { "hostname": "big-router", - "tags": ["tag:router"], + "tags": [ + "tag:router" + ], "ipv4": "100.97.174.21", "ipv6": "fd7a:115c:a1e0::5137:ae15", - "routable_ips": ["10.0.0.0/8"], - "approved_routes": ["10.0.0.0/8"] + "routable_ips": [ + "10.0.0.0/8" + ], + "approved_routes": [ + "10.0.0.0/8" + ] }, "exit-node": { "hostname": "exit-node", - "tags": ["tag:exit"], + "tags": [ + "tag:exit" + ], "ipv4": "100.85.66.106", "ipv6": "fd7a:115c:a1e0::7c37:426a", - "routable_ips": ["0.0.0.0/0", "::/0"], - "approved_routes": ["0.0.0.0/0", "::/0"] + "routable_ips": [ + "0.0.0.0/0", + "::/0" + ], + "approved_routes": [ + "0.0.0.0/0", + "::/0" + ] }, "ha-router1": { "hostname": "ha-router1", - "tags": ["tag:ha"], + "tags": [ + "tag:ha" + ], "ipv4": "100.121.186.70", "ipv6": "fd7a:115c:a1e0::6737:ba46", - "routable_ips": ["192.168.1.0/24"], - "approved_routes": ["192.168.1.0/24"] + "routable_ips": [ + "192.168.1.0/24" + ], + "approved_routes": [ + "192.168.1.0/24" + ] }, "ha-router2": { "hostname": "ha-router2", - "tags": ["tag:ha"], + "tags": [ + "tag:ha" + ], "ipv4": "100.117.104.82", "ipv6": "fd7a:115c:a1e0::7437:6852", - "routable_ips": ["192.168.1.0/24"], - "approved_routes": ["192.168.1.0/24"] + "routable_ips": [ + "192.168.1.0/24" + ], + "approved_routes": [ + "192.168.1.0/24" + ] }, "multi-router": { "hostname": "multi-router", - "tags": ["tag:exit", "tag:router"], + "tags": [ + "tag:exit", + "tag:router" + ], "ipv4": "100.119.241.111", "ipv6": "fd7a:115c:a1e0::3337:f16f", - "routable_ips": ["172.16.0.0/24"], - "approved_routes": ["172.16.0.0/24"] + "routable_ips": [ + "172.16.0.0/24" + ], + "approved_routes": [ + "172.16.0.0/24" + ] }, "subnet-router": { "hostname": "subnet-router", - "tags": ["tag:router"], + "tags": [ + "tag:router" + ], "ipv4": "100.92.142.61", "ipv6": "fd7a:115c:a1e0::3e37:8e3d", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] + "routable_ips": [ + "10.33.0.0/16" + ], + "approved_routes": [ + "10.33.0.0/16" + ] }, "tagged-client": { "hostname": "tagged-client", - "tags": ["tag:client"], + "tags": [ + "tag:client" + ], "ipv4": "100.83.200.69", "ipv6": "fd7a:115c:a1e0::c537:c845" }, "tagged-prod": { "hostname": "tagged-prod", - "tags": ["tag:prod"], + "tags": [ + "tag:prod" + ], "ipv4": "100.103.8.15", "ipv6": "fd7a:115c:a1e0::5b37:80f" }, "tagged-server": { "hostname": "tagged-server", - "tags": ["tag:server"], + "tags": [ + "tag:server" + ], "ipv4": "100.108.74.26", "ipv6": "fd7a:115c:a1e0::b901:4a87" }, diff --git a/hscontrol/policy/v2/testdata/routes_results/ROUTES-r7_exit_ipv6_coverage.hujson b/hscontrol/policy/v2/testdata/routes_results/ROUTES-r7_exit_ipv6_coverage.hujson index 821a3f047..9da253f3b 100644 --- a/hscontrol/policy/v2/testdata/routes_results/ROUTES-r7_exit_ipv6_coverage.hujson +++ b/hscontrol/policy/v2/testdata/routes_results/ROUTES-r7_exit_ipv6_coverage.hujson @@ -7,24 +7,40 @@ // Expected: No filter rules { "test_id": "ROUTES-r7_exit_ipv6_coverage", - "timestamp": "2026-03-17T16:28:53Z", - "propagation_wait_seconds": 10, "input": { - "policy_file": "routes_policies/routes_r7_exit_ipv6_coverage.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"], - "tag:ha": ["kratail2tid@passkey"] + "tag:server": [ + "kratail2tid@passkey" + ], + "tag:prod": [ + "kratail2tid@passkey" + ], + "tag:client": [ + "kratail2tid@passkey" + ], + "tag:router": [ + "kratail2tid@passkey" + ], + "tag:exit": [ + "kratail2tid@passkey" + ], + "tag:ha": [ + "kratail2tid@passkey" + ] }, "hosts": { "webserver": "100.108.74.26", @@ -34,89 +50,146 @@ }, "autoApprovers": { "routes": { - "10.0.0.0/8": ["tag:router"], - "172.16.0.0/12": ["tag:router"], - "192.168.0.0/16": ["tag:ha"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.0.0.0/8": [ + "tag:router" + ], + "172.16.0.0/12": [ + "tag:router" + ], + "192.168.0.0/16": [ + "tag:ha" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "acls": [ { "action": "accept", - "src": ["*"], - "dst": ["2001:db8::1/128:443"] + "src": [ + "*" + ], + "dst": [ + "2001:db8::1/128:443" + ] } ] - }, - "api_endpoint": "https://api.tailscale.com/api/v2/tailnet/kratail2tid%40passkey/acl", - "api_response_code": 200 + } }, "topology": { "nodes": { "big-router": { "hostname": "big-router", - "tags": ["tag:router"], + "tags": [ + "tag:router" + ], "ipv4": "100.97.174.21", "ipv6": "fd7a:115c:a1e0::5137:ae15", - "routable_ips": ["10.0.0.0/8"], - "approved_routes": ["10.0.0.0/8"] + "routable_ips": [ + "10.0.0.0/8" + ], + "approved_routes": [ + "10.0.0.0/8" + ] }, "exit-node": { "hostname": "exit-node", - "tags": ["tag:exit"], + "tags": [ + "tag:exit" + ], "ipv4": "100.85.66.106", "ipv6": "fd7a:115c:a1e0::7c37:426a", - "routable_ips": ["0.0.0.0/0", "::/0"], - "approved_routes": ["0.0.0.0/0", "::/0"] + "routable_ips": [ + "0.0.0.0/0", + "::/0" + ], + "approved_routes": [ + "0.0.0.0/0", + "::/0" + ] }, "ha-router1": { "hostname": "ha-router1", - "tags": ["tag:ha"], + "tags": [ + "tag:ha" + ], "ipv4": "100.121.186.70", "ipv6": "fd7a:115c:a1e0::6737:ba46", - "routable_ips": ["192.168.1.0/24"], - "approved_routes": ["192.168.1.0/24"] + "routable_ips": [ + "192.168.1.0/24" + ], + "approved_routes": [ + "192.168.1.0/24" + ] }, "ha-router2": { "hostname": "ha-router2", - "tags": ["tag:ha"], + "tags": [ + "tag:ha" + ], "ipv4": "100.117.104.82", "ipv6": "fd7a:115c:a1e0::7437:6852", - "routable_ips": ["192.168.1.0/24"], - "approved_routes": ["192.168.1.0/24"] + "routable_ips": [ + "192.168.1.0/24" + ], + "approved_routes": [ + "192.168.1.0/24" + ] }, "multi-router": { "hostname": "multi-router", - "tags": ["tag:exit", "tag:router"], + "tags": [ + "tag:exit", + "tag:router" + ], "ipv4": "100.119.241.111", "ipv6": "fd7a:115c:a1e0::3337:f16f", - "routable_ips": ["172.16.0.0/24"], - "approved_routes": ["172.16.0.0/24"] + "routable_ips": [ + "172.16.0.0/24" + ], + "approved_routes": [ + "172.16.0.0/24" + ] }, "subnet-router": { "hostname": "subnet-router", - "tags": ["tag:router"], + "tags": [ + "tag:router" + ], "ipv4": "100.92.142.61", "ipv6": "fd7a:115c:a1e0::3e37:8e3d", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] + "routable_ips": [ + "10.33.0.0/16" + ], + "approved_routes": [ + "10.33.0.0/16" + ] }, "tagged-client": { "hostname": "tagged-client", - "tags": ["tag:client"], + "tags": [ + "tag:client" + ], "ipv4": "100.83.200.69", "ipv6": "fd7a:115c:a1e0::c537:c845" }, "tagged-prod": { "hostname": "tagged-prod", - "tags": ["tag:prod"], + "tags": [ + "tag:prod" + ], "ipv4": "100.103.8.15", "ipv6": "fd7a:115c:a1e0::5b37:80f" }, "tagged-server": { "hostname": "tagged-server", - "tags": ["tag:server"], + "tags": [ + "tag:server" + ], "ipv4": "100.108.74.26", "ipv6": "fd7a:115c:a1e0::b901:4a87" }, diff --git a/hscontrol/policy/v2/testdata/routes_results/ROUTES-r8_mixed_ipv4_ipv6_coverage.hujson b/hscontrol/policy/v2/testdata/routes_results/ROUTES-r8_mixed_ipv4_ipv6_coverage.hujson index e8a672664..5dc08d25a 100644 --- a/hscontrol/policy/v2/testdata/routes_results/ROUTES-r8_mixed_ipv4_ipv6_coverage.hujson +++ b/hscontrol/policy/v2/testdata/routes_results/ROUTES-r8_mixed_ipv4_ipv6_coverage.hujson @@ -7,24 +7,40 @@ // Expected: Rules on 12 of 12 nodes { "test_id": "ROUTES-r8_mixed_ipv4_ipv6_coverage", - "timestamp": "2026-03-17T16:29:03Z", - "propagation_wait_seconds": 10, "input": { - "policy_file": "routes_policies/routes_r8_mixed_ipv4_ipv6_coverage.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"], - "tag:ha": ["kratail2tid@passkey"] + "tag:server": [ + "kratail2tid@passkey" + ], + "tag:prod": [ + "kratail2tid@passkey" + ], + "tag:client": [ + "kratail2tid@passkey" + ], + "tag:router": [ + "kratail2tid@passkey" + ], + "tag:exit": [ + "kratail2tid@passkey" + ], + "tag:ha": [ + "kratail2tid@passkey" + ] }, "hosts": { "webserver": "100.108.74.26", @@ -34,89 +50,147 @@ }, "autoApprovers": { "routes": { - "10.0.0.0/8": ["tag:router"], - "172.16.0.0/12": ["tag:router"], - "192.168.0.0/16": ["tag:ha"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.0.0.0/8": [ + "tag:router" + ], + "172.16.0.0/12": [ + "tag:router" + ], + "192.168.0.0/16": [ + "tag:ha" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "acls": [ { "action": "accept", - "src": ["*"], - "dst": ["10.33.0.0/16:*", "fd7a:115c:a1e0::/64:*"] + "src": [ + "*" + ], + "dst": [ + "10.33.0.0/16:*", + "fd7a:115c:a1e0::/64:*" + ] } ] - }, - "api_endpoint": "https://api.tailscale.com/api/v2/tailnet/kratail2tid%40passkey/acl", - "api_response_code": 200 + } }, "topology": { "nodes": { "big-router": { "hostname": "big-router", - "tags": ["tag:router"], + "tags": [ + "tag:router" + ], "ipv4": "100.97.174.21", "ipv6": "fd7a:115c:a1e0::5137:ae15", - "routable_ips": ["10.0.0.0/8"], - "approved_routes": ["10.0.0.0/8"] + "routable_ips": [ + "10.0.0.0/8" + ], + "approved_routes": [ + "10.0.0.0/8" + ] }, "exit-node": { "hostname": "exit-node", - "tags": ["tag:exit"], + "tags": [ + "tag:exit" + ], "ipv4": "100.85.66.106", "ipv6": "fd7a:115c:a1e0::7c37:426a", - "routable_ips": ["0.0.0.0/0", "::/0"], - "approved_routes": ["0.0.0.0/0", "::/0"] + "routable_ips": [ + "0.0.0.0/0", + "::/0" + ], + "approved_routes": [ + "0.0.0.0/0", + "::/0" + ] }, "ha-router1": { "hostname": "ha-router1", - "tags": ["tag:ha"], + "tags": [ + "tag:ha" + ], "ipv4": "100.121.186.70", "ipv6": "fd7a:115c:a1e0::6737:ba46", - "routable_ips": ["192.168.1.0/24"], - "approved_routes": ["192.168.1.0/24"] + "routable_ips": [ + "192.168.1.0/24" + ], + "approved_routes": [ + "192.168.1.0/24" + ] }, "ha-router2": { "hostname": "ha-router2", - "tags": ["tag:ha"], + "tags": [ + "tag:ha" + ], "ipv4": "100.117.104.82", "ipv6": "fd7a:115c:a1e0::7437:6852", - "routable_ips": ["192.168.1.0/24"], - "approved_routes": ["192.168.1.0/24"] + "routable_ips": [ + "192.168.1.0/24" + ], + "approved_routes": [ + "192.168.1.0/24" + ] }, "multi-router": { "hostname": "multi-router", - "tags": ["tag:exit", "tag:router"], + "tags": [ + "tag:exit", + "tag:router" + ], "ipv4": "100.119.241.111", "ipv6": "fd7a:115c:a1e0::3337:f16f", - "routable_ips": ["172.16.0.0/24"], - "approved_routes": ["172.16.0.0/24"] + "routable_ips": [ + "172.16.0.0/24" + ], + "approved_routes": [ + "172.16.0.0/24" + ] }, "subnet-router": { "hostname": "subnet-router", - "tags": ["tag:router"], + "tags": [ + "tag:router" + ], "ipv4": "100.92.142.61", "ipv6": "fd7a:115c:a1e0::3e37:8e3d", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] + "routable_ips": [ + "10.33.0.0/16" + ], + "approved_routes": [ + "10.33.0.0/16" + ] }, "tagged-client": { "hostname": "tagged-client", - "tags": ["tag:client"], + "tags": [ + "tag:client" + ], "ipv4": "100.83.200.69", "ipv6": "fd7a:115c:a1e0::c537:c845" }, "tagged-prod": { "hostname": "tagged-prod", - "tags": ["tag:prod"], + "tags": [ + "tag:prod" + ], "ipv4": "100.103.8.15", "ipv6": "fd7a:115c:a1e0::5b37:80f" }, "tagged-server": { "hostname": "tagged-server", - "tags": ["tag:server"], + "tags": [ + "tag:server" + ], "ipv4": "100.108.74.26", "ipv6": "fd7a:115c:a1e0::b901:4a87" }, diff --git a/hscontrol/policy/v2/testdata/routes_results/ROUTES-t1_tags_resolve_to_ips_not_routes.hujson b/hscontrol/policy/v2/testdata/routes_results/ROUTES-t1_tags_resolve_to_ips_not_routes.hujson index db23c8642..770664713 100644 --- a/hscontrol/policy/v2/testdata/routes_results/ROUTES-t1_tags_resolve_to_ips_not_routes.hujson +++ b/hscontrol/policy/v2/testdata/routes_results/ROUTES-t1_tags_resolve_to_ips_not_routes.hujson @@ -7,24 +7,40 @@ // Expected: Rules on 3 of 12 nodes { "test_id": "ROUTES-t1_tags_resolve_to_ips_not_routes", - "timestamp": "2026-03-17T16:29:14Z", - "propagation_wait_seconds": 10, "input": { - "policy_file": "routes_policies/routes_t1_tags_resolve_to_ips_not_routes.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"], - "tag:ha": ["kratail2tid@passkey"] + "tag:server": [ + "kratail2tid@passkey" + ], + "tag:prod": [ + "kratail2tid@passkey" + ], + "tag:client": [ + "kratail2tid@passkey" + ], + "tag:router": [ + "kratail2tid@passkey" + ], + "tag:exit": [ + "kratail2tid@passkey" + ], + "tag:ha": [ + "kratail2tid@passkey" + ] }, "hosts": { "webserver": "100.108.74.26", @@ -34,89 +50,146 @@ }, "autoApprovers": { "routes": { - "10.0.0.0/8": ["tag:router"], - "172.16.0.0/12": ["tag:router"], - "192.168.0.0/16": ["tag:ha"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.0.0.0/8": [ + "tag:router" + ], + "172.16.0.0/12": [ + "tag:router" + ], + "192.168.0.0/16": [ + "tag:ha" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "acls": [ { "action": "accept", - "src": ["tag:router"], - "dst": ["tag:router:*"] + "src": [ + "tag:router" + ], + "dst": [ + "tag:router:*" + ] } ] - }, - "api_endpoint": "https://api.tailscale.com/api/v2/tailnet/kratail2tid%40passkey/acl", - "api_response_code": 200 + } }, "topology": { "nodes": { "big-router": { "hostname": "big-router", - "tags": ["tag:router"], + "tags": [ + "tag:router" + ], "ipv4": "100.97.174.21", "ipv6": "fd7a:115c:a1e0::5137:ae15", - "routable_ips": ["10.0.0.0/8"], - "approved_routes": ["10.0.0.0/8"] + "routable_ips": [ + "10.0.0.0/8" + ], + "approved_routes": [ + "10.0.0.0/8" + ] }, "exit-node": { "hostname": "exit-node", - "tags": ["tag:exit"], + "tags": [ + "tag:exit" + ], "ipv4": "100.85.66.106", "ipv6": "fd7a:115c:a1e0::7c37:426a", - "routable_ips": ["0.0.0.0/0", "::/0"], - "approved_routes": ["0.0.0.0/0", "::/0"] + "routable_ips": [ + "0.0.0.0/0", + "::/0" + ], + "approved_routes": [ + "0.0.0.0/0", + "::/0" + ] }, "ha-router1": { "hostname": "ha-router1", - "tags": ["tag:ha"], + "tags": [ + "tag:ha" + ], "ipv4": "100.121.186.70", "ipv6": "fd7a:115c:a1e0::6737:ba46", - "routable_ips": ["192.168.1.0/24"], - "approved_routes": ["192.168.1.0/24"] + "routable_ips": [ + "192.168.1.0/24" + ], + "approved_routes": [ + "192.168.1.0/24" + ] }, "ha-router2": { "hostname": "ha-router2", - "tags": ["tag:ha"], + "tags": [ + "tag:ha" + ], "ipv4": "100.117.104.82", "ipv6": "fd7a:115c:a1e0::7437:6852", - "routable_ips": ["192.168.1.0/24"], - "approved_routes": ["192.168.1.0/24"] + "routable_ips": [ + "192.168.1.0/24" + ], + "approved_routes": [ + "192.168.1.0/24" + ] }, "multi-router": { "hostname": "multi-router", - "tags": ["tag:exit", "tag:router"], + "tags": [ + "tag:exit", + "tag:router" + ], "ipv4": "100.119.241.111", "ipv6": "fd7a:115c:a1e0::3337:f16f", - "routable_ips": ["172.16.0.0/24"], - "approved_routes": ["172.16.0.0/24"] + "routable_ips": [ + "172.16.0.0/24" + ], + "approved_routes": [ + "172.16.0.0/24" + ] }, "subnet-router": { "hostname": "subnet-router", - "tags": ["tag:router"], + "tags": [ + "tag:router" + ], "ipv4": "100.92.142.61", "ipv6": "fd7a:115c:a1e0::3e37:8e3d", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] + "routable_ips": [ + "10.33.0.0/16" + ], + "approved_routes": [ + "10.33.0.0/16" + ] }, "tagged-client": { "hostname": "tagged-client", - "tags": ["tag:client"], + "tags": [ + "tag:client" + ], "ipv4": "100.83.200.69", "ipv6": "fd7a:115c:a1e0::c537:c845" }, "tagged-prod": { "hostname": "tagged-prod", - "tags": ["tag:prod"], + "tags": [ + "tag:prod" + ], "ipv4": "100.103.8.15", "ipv6": "fd7a:115c:a1e0::5b37:80f" }, "tagged-server": { "hostname": "tagged-server", - "tags": ["tag:server"], + "tags": [ + "tag:server" + ], "ipv4": "100.108.74.26", "ipv6": "fd7a:115c:a1e0::b901:4a87" }, diff --git a/hscontrol/policy/v2/testdata/routes_results/ROUTES-t2_tag_to_tag_with_exit.hujson b/hscontrol/policy/v2/testdata/routes_results/ROUTES-t2_tag_to_tag_with_exit.hujson index 1acb126be..1452f2649 100644 --- a/hscontrol/policy/v2/testdata/routes_results/ROUTES-t2_tag_to_tag_with_exit.hujson +++ b/hscontrol/policy/v2/testdata/routes_results/ROUTES-t2_tag_to_tag_with_exit.hujson @@ -7,24 +7,40 @@ // Expected: Rules on 2 of 12 nodes { "test_id": "ROUTES-t2_tag_to_tag_with_exit", - "timestamp": "2026-03-17T16:29:24Z", - "propagation_wait_seconds": 10, "input": { - "policy_file": "routes_policies/routes_t2_tag_to_tag_with_exit.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"], - "tag:ha": ["kratail2tid@passkey"] + "tag:server": [ + "kratail2tid@passkey" + ], + "tag:prod": [ + "kratail2tid@passkey" + ], + "tag:client": [ + "kratail2tid@passkey" + ], + "tag:router": [ + "kratail2tid@passkey" + ], + "tag:exit": [ + "kratail2tid@passkey" + ], + "tag:ha": [ + "kratail2tid@passkey" + ] }, "hosts": { "webserver": "100.108.74.26", @@ -34,89 +50,146 @@ }, "autoApprovers": { "routes": { - "10.0.0.0/8": ["tag:router"], - "172.16.0.0/12": ["tag:router"], - "192.168.0.0/16": ["tag:ha"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.0.0.0/8": [ + "tag:router" + ], + "172.16.0.0/12": [ + "tag:router" + ], + "192.168.0.0/16": [ + "tag:ha" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "acls": [ { "action": "accept", - "src": ["tag:exit"], - "dst": ["tag:exit:*"] + "src": [ + "tag:exit" + ], + "dst": [ + "tag:exit:*" + ] } ] - }, - "api_endpoint": "https://api.tailscale.com/api/v2/tailnet/kratail2tid%40passkey/acl", - "api_response_code": 200 + } }, "topology": { "nodes": { "big-router": { "hostname": "big-router", - "tags": ["tag:router"], + "tags": [ + "tag:router" + ], "ipv4": "100.97.174.21", "ipv6": "fd7a:115c:a1e0::5137:ae15", - "routable_ips": ["10.0.0.0/8"], - "approved_routes": ["10.0.0.0/8"] + "routable_ips": [ + "10.0.0.0/8" + ], + "approved_routes": [ + "10.0.0.0/8" + ] }, "exit-node": { "hostname": "exit-node", - "tags": ["tag:exit"], + "tags": [ + "tag:exit" + ], "ipv4": "100.85.66.106", "ipv6": "fd7a:115c:a1e0::7c37:426a", - "routable_ips": ["0.0.0.0/0", "::/0"], - "approved_routes": ["0.0.0.0/0", "::/0"] + "routable_ips": [ + "0.0.0.0/0", + "::/0" + ], + "approved_routes": [ + "0.0.0.0/0", + "::/0" + ] }, "ha-router1": { "hostname": "ha-router1", - "tags": ["tag:ha"], + "tags": [ + "tag:ha" + ], "ipv4": "100.121.186.70", "ipv6": "fd7a:115c:a1e0::6737:ba46", - "routable_ips": ["192.168.1.0/24"], - "approved_routes": ["192.168.1.0/24"] + "routable_ips": [ + "192.168.1.0/24" + ], + "approved_routes": [ + "192.168.1.0/24" + ] }, "ha-router2": { "hostname": "ha-router2", - "tags": ["tag:ha"], + "tags": [ + "tag:ha" + ], "ipv4": "100.117.104.82", "ipv6": "fd7a:115c:a1e0::7437:6852", - "routable_ips": ["192.168.1.0/24"], - "approved_routes": ["192.168.1.0/24"] + "routable_ips": [ + "192.168.1.0/24" + ], + "approved_routes": [ + "192.168.1.0/24" + ] }, "multi-router": { "hostname": "multi-router", - "tags": ["tag:exit", "tag:router"], + "tags": [ + "tag:exit", + "tag:router" + ], "ipv4": "100.119.241.111", "ipv6": "fd7a:115c:a1e0::3337:f16f", - "routable_ips": ["172.16.0.0/24"], - "approved_routes": ["172.16.0.0/24"] + "routable_ips": [ + "172.16.0.0/24" + ], + "approved_routes": [ + "172.16.0.0/24" + ] }, "subnet-router": { "hostname": "subnet-router", - "tags": ["tag:router"], + "tags": [ + "tag:router" + ], "ipv4": "100.92.142.61", "ipv6": "fd7a:115c:a1e0::3e37:8e3d", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] + "routable_ips": [ + "10.33.0.0/16" + ], + "approved_routes": [ + "10.33.0.0/16" + ] }, "tagged-client": { "hostname": "tagged-client", - "tags": ["tag:client"], + "tags": [ + "tag:client" + ], "ipv4": "100.83.200.69", "ipv6": "fd7a:115c:a1e0::c537:c845" }, "tagged-prod": { "hostname": "tagged-prod", - "tags": ["tag:prod"], + "tags": [ + "tag:prod" + ], "ipv4": "100.103.8.15", "ipv6": "fd7a:115c:a1e0::5b37:80f" }, "tagged-server": { "hostname": "tagged-server", - "tags": ["tag:server"], + "tags": [ + "tag:server" + ], "ipv4": "100.108.74.26", "ipv6": "fd7a:115c:a1e0::b901:4a87" }, @@ -147,7 +220,12 @@ "exit-node": { "packet_filter_rules": [ { - "SrcIPs": ["100.119.241.111", "100.85.66.106", "fd7a:115c:a1e0::3337:f16f", "fd7a:115c:a1e0::7c37:426a"], + "SrcIPs": [ + "100.119.241.111", + "100.85.66.106", + "fd7a:115c:a1e0::3337:f16f", + "fd7a:115c:a1e0::7c37:426a" + ], "DstPorts": [ { "IP": "100.85.66.106", @@ -176,7 +254,12 @@ "multi-router": { "packet_filter_rules": [ { - "SrcIPs": ["100.119.241.111", "100.85.66.106", "fd7a:115c:a1e0::3337:f16f", "fd7a:115c:a1e0::7c37:426a"], + "SrcIPs": [ + "100.119.241.111", + "100.85.66.106", + "fd7a:115c:a1e0::3337:f16f", + "fd7a:115c:a1e0::7c37:426a" + ], "DstPorts": [ { "IP": "100.119.241.111", diff --git a/hscontrol/policy/v2/testdata/routes_results/ROUTES-t3_tag_src_includes_all_tagged.hujson b/hscontrol/policy/v2/testdata/routes_results/ROUTES-t3_tag_src_includes_all_tagged.hujson index 81fcbfce0..c44438bdd 100644 --- a/hscontrol/policy/v2/testdata/routes_results/ROUTES-t3_tag_src_includes_all_tagged.hujson +++ b/hscontrol/policy/v2/testdata/routes_results/ROUTES-t3_tag_src_includes_all_tagged.hujson @@ -7,24 +7,40 @@ // Expected: Rules on 12 of 12 nodes { "test_id": "ROUTES-t3_tag_src_includes_all_tagged", - "timestamp": "2026-03-17T16:29:35Z", - "propagation_wait_seconds": 10, "input": { - "policy_file": "routes_policies/routes_t3_tag_src_includes_all_tagged.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"], - "tag:ha": ["kratail2tid@passkey"] + "tag:server": [ + "kratail2tid@passkey" + ], + "tag:prod": [ + "kratail2tid@passkey" + ], + "tag:client": [ + "kratail2tid@passkey" + ], + "tag:router": [ + "kratail2tid@passkey" + ], + "tag:exit": [ + "kratail2tid@passkey" + ], + "tag:ha": [ + "kratail2tid@passkey" + ] }, "hosts": { "webserver": "100.108.74.26", @@ -34,89 +50,146 @@ }, "autoApprovers": { "routes": { - "10.0.0.0/8": ["tag:router"], - "172.16.0.0/12": ["tag:router"], - "192.168.0.0/16": ["tag:ha"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.0.0.0/8": [ + "tag:router" + ], + "172.16.0.0/12": [ + "tag:router" + ], + "192.168.0.0/16": [ + "tag:ha" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "acls": [ { "action": "accept", - "src": ["tag:router"], - "dst": ["*:*"] + "src": [ + "tag:router" + ], + "dst": [ + "*:*" + ] } ] - }, - "api_endpoint": "https://api.tailscale.com/api/v2/tailnet/kratail2tid%40passkey/acl", - "api_response_code": 200 + } }, "topology": { "nodes": { "big-router": { "hostname": "big-router", - "tags": ["tag:router"], + "tags": [ + "tag:router" + ], "ipv4": "100.97.174.21", "ipv6": "fd7a:115c:a1e0::5137:ae15", - "routable_ips": ["10.0.0.0/8"], - "approved_routes": ["10.0.0.0/8"] + "routable_ips": [ + "10.0.0.0/8" + ], + "approved_routes": [ + "10.0.0.0/8" + ] }, "exit-node": { "hostname": "exit-node", - "tags": ["tag:exit"], + "tags": [ + "tag:exit" + ], "ipv4": "100.85.66.106", "ipv6": "fd7a:115c:a1e0::7c37:426a", - "routable_ips": ["0.0.0.0/0", "::/0"], - "approved_routes": ["0.0.0.0/0", "::/0"] + "routable_ips": [ + "0.0.0.0/0", + "::/0" + ], + "approved_routes": [ + "0.0.0.0/0", + "::/0" + ] }, "ha-router1": { "hostname": "ha-router1", - "tags": ["tag:ha"], + "tags": [ + "tag:ha" + ], "ipv4": "100.121.186.70", "ipv6": "fd7a:115c:a1e0::6737:ba46", - "routable_ips": ["192.168.1.0/24"], - "approved_routes": ["192.168.1.0/24"] + "routable_ips": [ + "192.168.1.0/24" + ], + "approved_routes": [ + "192.168.1.0/24" + ] }, "ha-router2": { "hostname": "ha-router2", - "tags": ["tag:ha"], + "tags": [ + "tag:ha" + ], "ipv4": "100.117.104.82", "ipv6": "fd7a:115c:a1e0::7437:6852", - "routable_ips": ["192.168.1.0/24"], - "approved_routes": ["192.168.1.0/24"] + "routable_ips": [ + "192.168.1.0/24" + ], + "approved_routes": [ + "192.168.1.0/24" + ] }, "multi-router": { "hostname": "multi-router", - "tags": ["tag:exit", "tag:router"], + "tags": [ + "tag:exit", + "tag:router" + ], "ipv4": "100.119.241.111", "ipv6": "fd7a:115c:a1e0::3337:f16f", - "routable_ips": ["172.16.0.0/24"], - "approved_routes": ["172.16.0.0/24"] + "routable_ips": [ + "172.16.0.0/24" + ], + "approved_routes": [ + "172.16.0.0/24" + ] }, "subnet-router": { "hostname": "subnet-router", - "tags": ["tag:router"], + "tags": [ + "tag:router" + ], "ipv4": "100.92.142.61", "ipv6": "fd7a:115c:a1e0::3e37:8e3d", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] + "routable_ips": [ + "10.33.0.0/16" + ], + "approved_routes": [ + "10.33.0.0/16" + ] }, "tagged-client": { "hostname": "tagged-client", - "tags": ["tag:client"], + "tags": [ + "tag:client" + ], "ipv4": "100.83.200.69", "ipv6": "fd7a:115c:a1e0::c537:c845" }, "tagged-prod": { "hostname": "tagged-prod", - "tags": ["tag:prod"], + "tags": [ + "tag:prod" + ], "ipv4": "100.103.8.15", "ipv6": "fd7a:115c:a1e0::5b37:80f" }, "tagged-server": { "hostname": "tagged-server", - "tags": ["tag:server"], + "tags": [ + "tag:server" + ], "ipv4": "100.108.74.26", "ipv6": "fd7a:115c:a1e0::b901:4a87" }, diff --git a/hscontrol/policy/v2/testdata/routes_results/ROUTES-t4_tag_dst_includes_all_tagged.hujson b/hscontrol/policy/v2/testdata/routes_results/ROUTES-t4_tag_dst_includes_all_tagged.hujson index aa70366af..2eb674763 100644 --- a/hscontrol/policy/v2/testdata/routes_results/ROUTES-t4_tag_dst_includes_all_tagged.hujson +++ b/hscontrol/policy/v2/testdata/routes_results/ROUTES-t4_tag_dst_includes_all_tagged.hujson @@ -7,24 +7,40 @@ // Expected: Rules on 2 of 12 nodes { "test_id": "ROUTES-t4_tag_dst_includes_all_tagged", - "timestamp": "2026-03-17T16:29:46Z", - "propagation_wait_seconds": 10, "input": { - "policy_file": "routes_policies/routes_t4_tag_dst_includes_all_tagged.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"], - "tag:ha": ["kratail2tid@passkey"] + "tag:server": [ + "kratail2tid@passkey" + ], + "tag:prod": [ + "kratail2tid@passkey" + ], + "tag:client": [ + "kratail2tid@passkey" + ], + "tag:router": [ + "kratail2tid@passkey" + ], + "tag:exit": [ + "kratail2tid@passkey" + ], + "tag:ha": [ + "kratail2tid@passkey" + ] }, "hosts": { "webserver": "100.108.74.26", @@ -34,89 +50,146 @@ }, "autoApprovers": { "routes": { - "10.0.0.0/8": ["tag:router"], - "172.16.0.0/12": ["tag:router"], - "192.168.0.0/16": ["tag:ha"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.0.0.0/8": [ + "tag:router" + ], + "172.16.0.0/12": [ + "tag:router" + ], + "192.168.0.0/16": [ + "tag:ha" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "acls": [ { "action": "accept", - "src": ["*"], - "dst": ["tag:ha:*"] + "src": [ + "*" + ], + "dst": [ + "tag:ha:*" + ] } ] - }, - "api_endpoint": "https://api.tailscale.com/api/v2/tailnet/kratail2tid%40passkey/acl", - "api_response_code": 200 + } }, "topology": { "nodes": { "big-router": { "hostname": "big-router", - "tags": ["tag:router"], + "tags": [ + "tag:router" + ], "ipv4": "100.97.174.21", "ipv6": "fd7a:115c:a1e0::5137:ae15", - "routable_ips": ["10.0.0.0/8"], - "approved_routes": ["10.0.0.0/8"] + "routable_ips": [ + "10.0.0.0/8" + ], + "approved_routes": [ + "10.0.0.0/8" + ] }, "exit-node": { "hostname": "exit-node", - "tags": ["tag:exit"], + "tags": [ + "tag:exit" + ], "ipv4": "100.85.66.106", "ipv6": "fd7a:115c:a1e0::7c37:426a", - "routable_ips": ["0.0.0.0/0", "::/0"], - "approved_routes": ["0.0.0.0/0", "::/0"] + "routable_ips": [ + "0.0.0.0/0", + "::/0" + ], + "approved_routes": [ + "0.0.0.0/0", + "::/0" + ] }, "ha-router1": { "hostname": "ha-router1", - "tags": ["tag:ha"], + "tags": [ + "tag:ha" + ], "ipv4": "100.121.186.70", "ipv6": "fd7a:115c:a1e0::6737:ba46", - "routable_ips": ["192.168.1.0/24"], - "approved_routes": ["192.168.1.0/24"] + "routable_ips": [ + "192.168.1.0/24" + ], + "approved_routes": [ + "192.168.1.0/24" + ] }, "ha-router2": { "hostname": "ha-router2", - "tags": ["tag:ha"], + "tags": [ + "tag:ha" + ], "ipv4": "100.117.104.82", "ipv6": "fd7a:115c:a1e0::7437:6852", - "routable_ips": ["192.168.1.0/24"], - "approved_routes": ["192.168.1.0/24"] + "routable_ips": [ + "192.168.1.0/24" + ], + "approved_routes": [ + "192.168.1.0/24" + ] }, "multi-router": { "hostname": "multi-router", - "tags": ["tag:exit", "tag:router"], + "tags": [ + "tag:exit", + "tag:router" + ], "ipv4": "100.119.241.111", "ipv6": "fd7a:115c:a1e0::3337:f16f", - "routable_ips": ["172.16.0.0/24"], - "approved_routes": ["172.16.0.0/24"] + "routable_ips": [ + "172.16.0.0/24" + ], + "approved_routes": [ + "172.16.0.0/24" + ] }, "subnet-router": { "hostname": "subnet-router", - "tags": ["tag:router"], + "tags": [ + "tag:router" + ], "ipv4": "100.92.142.61", "ipv6": "fd7a:115c:a1e0::3e37:8e3d", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] + "routable_ips": [ + "10.33.0.0/16" + ], + "approved_routes": [ + "10.33.0.0/16" + ] }, "tagged-client": { "hostname": "tagged-client", - "tags": ["tag:client"], + "tags": [ + "tag:client" + ], "ipv4": "100.83.200.69", "ipv6": "fd7a:115c:a1e0::c537:c845" }, "tagged-prod": { "hostname": "tagged-prod", - "tags": ["tag:prod"], + "tags": [ + "tag:prod" + ], "ipv4": "100.103.8.15", "ipv6": "fd7a:115c:a1e0::5b37:80f" }, "tagged-server": { "hostname": "tagged-server", - "tags": ["tag:server"], + "tags": [ + "tag:server" + ], "ipv4": "100.108.74.26", "ipv6": "fd7a:115c:a1e0::b901:4a87" }, diff --git a/hscontrol/policy/v2/testdata/routes_results/ROUTES-t5_multi_tag_node_in_both.hujson b/hscontrol/policy/v2/testdata/routes_results/ROUTES-t5_multi_tag_node_in_both.hujson index 0d07755d9..8e8c8c0f5 100644 --- a/hscontrol/policy/v2/testdata/routes_results/ROUTES-t5_multi_tag_node_in_both.hujson +++ b/hscontrol/policy/v2/testdata/routes_results/ROUTES-t5_multi_tag_node_in_both.hujson @@ -7,24 +7,40 @@ // Expected: Rules on 2 of 12 nodes { "test_id": "ROUTES-t5_multi_tag_node_in_both", - "timestamp": "2026-03-17T16:29:56Z", - "propagation_wait_seconds": 10, "input": { - "policy_file": "routes_policies/routes_t5_multi_tag_node_in_both.json", "full_policy": { "groups": { - "group:admins": ["kratail2tid@passkey"], - "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], - "group:monitors": ["monitorpasskeykradalby@passkey"], + "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"], - "tag:ha": ["kratail2tid@passkey"] + "tag:server": [ + "kratail2tid@passkey" + ], + "tag:prod": [ + "kratail2tid@passkey" + ], + "tag:client": [ + "kratail2tid@passkey" + ], + "tag:router": [ + "kratail2tid@passkey" + ], + "tag:exit": [ + "kratail2tid@passkey" + ], + "tag:ha": [ + "kratail2tid@passkey" + ] }, "hosts": { "webserver": "100.108.74.26", @@ -34,89 +50,146 @@ }, "autoApprovers": { "routes": { - "10.0.0.0/8": ["tag:router"], - "172.16.0.0/12": ["tag:router"], - "192.168.0.0/16": ["tag:ha"], - "0.0.0.0/0": ["tag:exit"], - "::/0": ["tag:exit"] + "10.0.0.0/8": [ + "tag:router" + ], + "172.16.0.0/12": [ + "tag:router" + ], + "192.168.0.0/16": [ + "tag:ha" + ], + "0.0.0.0/0": [ + "tag:exit" + ], + "::/0": [ + "tag:exit" + ] } }, "acls": [ { "action": "accept", - "src": ["tag:router"], - "dst": ["tag:exit:*"] + "src": [ + "tag:router" + ], + "dst": [ + "tag:exit:*" + ] } ] - }, - "api_endpoint": "https://api.tailscale.com/api/v2/tailnet/kratail2tid%40passkey/acl", - "api_response_code": 200 + } }, "topology": { "nodes": { "big-router": { "hostname": "big-router", - "tags": ["tag:router"], + "tags": [ + "tag:router" + ], "ipv4": "100.97.174.21", "ipv6": "fd7a:115c:a1e0::5137:ae15", - "routable_ips": ["10.0.0.0/8"], - "approved_routes": ["10.0.0.0/8"] + "routable_ips": [ + "10.0.0.0/8" + ], + "approved_routes": [ + "10.0.0.0/8" + ] }, "exit-node": { "hostname": "exit-node", - "tags": ["tag:exit"], + "tags": [ + "tag:exit" + ], "ipv4": "100.85.66.106", "ipv6": "fd7a:115c:a1e0::7c37:426a", - "routable_ips": ["0.0.0.0/0", "::/0"], - "approved_routes": ["0.0.0.0/0", "::/0"] + "routable_ips": [ + "0.0.0.0/0", + "::/0" + ], + "approved_routes": [ + "0.0.0.0/0", + "::/0" + ] }, "ha-router1": { "hostname": "ha-router1", - "tags": ["tag:ha"], + "tags": [ + "tag:ha" + ], "ipv4": "100.121.186.70", "ipv6": "fd7a:115c:a1e0::6737:ba46", - "routable_ips": ["192.168.1.0/24"], - "approved_routes": ["192.168.1.0/24"] + "routable_ips": [ + "192.168.1.0/24" + ], + "approved_routes": [ + "192.168.1.0/24" + ] }, "ha-router2": { "hostname": "ha-router2", - "tags": ["tag:ha"], + "tags": [ + "tag:ha" + ], "ipv4": "100.117.104.82", "ipv6": "fd7a:115c:a1e0::7437:6852", - "routable_ips": ["192.168.1.0/24"], - "approved_routes": ["192.168.1.0/24"] + "routable_ips": [ + "192.168.1.0/24" + ], + "approved_routes": [ + "192.168.1.0/24" + ] }, "multi-router": { "hostname": "multi-router", - "tags": ["tag:exit", "tag:router"], + "tags": [ + "tag:exit", + "tag:router" + ], "ipv4": "100.119.241.111", "ipv6": "fd7a:115c:a1e0::3337:f16f", - "routable_ips": ["172.16.0.0/24"], - "approved_routes": ["172.16.0.0/24"] + "routable_ips": [ + "172.16.0.0/24" + ], + "approved_routes": [ + "172.16.0.0/24" + ] }, "subnet-router": { "hostname": "subnet-router", - "tags": ["tag:router"], + "tags": [ + "tag:router" + ], "ipv4": "100.92.142.61", "ipv6": "fd7a:115c:a1e0::3e37:8e3d", - "routable_ips": ["10.33.0.0/16"], - "approved_routes": ["10.33.0.0/16"] + "routable_ips": [ + "10.33.0.0/16" + ], + "approved_routes": [ + "10.33.0.0/16" + ] }, "tagged-client": { "hostname": "tagged-client", - "tags": ["tag:client"], + "tags": [ + "tag:client" + ], "ipv4": "100.83.200.69", "ipv6": "fd7a:115c:a1e0::c537:c845" }, "tagged-prod": { "hostname": "tagged-prod", - "tags": ["tag:prod"], + "tags": [ + "tag:prod" + ], "ipv4": "100.103.8.15", "ipv6": "fd7a:115c:a1e0::5b37:80f" }, "tagged-server": { "hostname": "tagged-server", - "tags": ["tag:server"], + "tags": [ + "tag:server" + ], "ipv4": "100.108.74.26", "ipv6": "fd7a:115c:a1e0::b901:4a87" }, diff --git a/hscontrol/policy/v2/testdata/ssh_results/SSH-A1.hujson b/hscontrol/policy/v2/testdata/ssh_results/SSH-A1.hujson index da6caf840..217c07e1f 100644 --- a/hscontrol/policy/v2/testdata/ssh_results/SSH-A1.hujson +++ b/hscontrol/policy/v2/testdata/ssh_results/SSH-A1.hujson @@ -5,14 +5,35 @@ // Expected: SSH rules on 3 of 5 nodes { "test_id": "SSH-A1", - "policy_file": "ssh_policies/ssh_a1.json", - "ssh_section": [{ "action": "accept", "src": ["autogroup:member"], "dst": ["autogroup:self"], "users": ["root"] }], + "ssh_section": [ + { + "action": "accept", + "src": [ + "autogroup:member" + ], + "dst": [ + "autogroup:self" + ], + "users": [ + "root" + ] + } + ], "nodes": { "user1": { "rules": [ { - "principals": [{ "nodeIP": "100.90.199.68" }, { "nodeIP": "fd7a:115c:a1e0::2d01:c747" }], - "sshUsers": { "root": "root" }, + "principals": [ + { + "nodeIP": "100.90.199.68" + }, + { + "nodeIP": "fd7a:115c:a1e0::2d01:c747" + } + ], + "sshUsers": { + "root": "root" + }, "action": { "accept": true, "allowAgentForwarding": true, @@ -25,8 +46,17 @@ "user-kris": { "rules": [ { - "principals": [{ "nodeIP": "100.110.121.96" }, { "nodeIP": "fd7a:115c:a1e0::1737:7960" }], - "sshUsers": { "root": "root" }, + "principals": [ + { + "nodeIP": "100.110.121.96" + }, + { + "nodeIP": "fd7a:115c:a1e0::1737:7960" + } + ], + "sshUsers": { + "root": "root" + }, "action": { "accept": true, "allowAgentForwarding": true, @@ -39,8 +69,17 @@ "user-mon": { "rules": [ { - "principals": [{ "nodeIP": "100.103.90.82" }, { "nodeIP": "fd7a:115c:a1e0::9e37:5a52" }], - "sshUsers": { "root": "root" }, + "principals": [ + { + "nodeIP": "100.103.90.82" + }, + { + "nodeIP": "fd7a:115c:a1e0::9e37:5a52" + } + ], + "sshUsers": { + "root": "root" + }, "action": { "accept": true, "allowAgentForwarding": true, @@ -50,7 +89,11 @@ } ] }, - "tagged-server": { "rules": [] }, - "tagged-prod": { "rules": [] } + "tagged-server": { + "rules": [] + }, + "tagged-prod": { + "rules": [] + } } } diff --git a/hscontrol/policy/v2/testdata/ssh_results/SSH-A2.hujson b/hscontrol/policy/v2/testdata/ssh_results/SSH-A2.hujson index 8ee9db205..63e1e3d30 100644 --- a/hscontrol/policy/v2/testdata/ssh_results/SSH-A2.hujson +++ b/hscontrol/policy/v2/testdata/ssh_results/SSH-A2.hujson @@ -5,16 +5,36 @@ // Expected: SSH rules on 3 of 5 nodes { "test_id": "SSH-A2", - "policy_file": "ssh_policies/ssh_a2.json", "ssh_section": [ - { "action": "accept", "src": ["autogroup:member"], "dst": ["autogroup:self"], "users": ["autogroup:nonroot"] } + { + "action": "accept", + "src": [ + "autogroup:member" + ], + "dst": [ + "autogroup:self" + ], + "users": [ + "autogroup:nonroot" + ] + } ], "nodes": { "user1": { "rules": [ { - "principals": [{ "nodeIP": "100.90.199.68" }, { "nodeIP": "fd7a:115c:a1e0::2d01:c747" }], - "sshUsers": { "*": "=", "root": "" }, + "principals": [ + { + "nodeIP": "100.90.199.68" + }, + { + "nodeIP": "fd7a:115c:a1e0::2d01:c747" + } + ], + "sshUsers": { + "*": "=", + "root": "" + }, "action": { "accept": true, "allowAgentForwarding": true, @@ -27,8 +47,18 @@ "user-kris": { "rules": [ { - "principals": [{ "nodeIP": "100.110.121.96" }, { "nodeIP": "fd7a:115c:a1e0::1737:7960" }], - "sshUsers": { "*": "=", "root": "" }, + "principals": [ + { + "nodeIP": "100.110.121.96" + }, + { + "nodeIP": "fd7a:115c:a1e0::1737:7960" + } + ], + "sshUsers": { + "*": "=", + "root": "" + }, "action": { "accept": true, "allowAgentForwarding": true, @@ -41,8 +71,18 @@ "user-mon": { "rules": [ { - "principals": [{ "nodeIP": "100.103.90.82" }, { "nodeIP": "fd7a:115c:a1e0::9e37:5a52" }], - "sshUsers": { "*": "=", "root": "" }, + "principals": [ + { + "nodeIP": "100.103.90.82" + }, + { + "nodeIP": "fd7a:115c:a1e0::9e37:5a52" + } + ], + "sshUsers": { + "*": "=", + "root": "" + }, "action": { "accept": true, "allowAgentForwarding": true, @@ -52,7 +92,11 @@ } ] }, - "tagged-server": { "rules": [] }, - "tagged-prod": { "rules": [] } + "tagged-server": { + "rules": [] + }, + "tagged-prod": { + "rules": [] + } } } diff --git a/hscontrol/policy/v2/testdata/ssh_results/SSH-A3.hujson b/hscontrol/policy/v2/testdata/ssh_results/SSH-A3.hujson index 26544aa05..457baed4a 100644 --- a/hscontrol/policy/v2/testdata/ssh_results/SSH-A3.hujson +++ b/hscontrol/policy/v2/testdata/ssh_results/SSH-A3.hujson @@ -5,21 +5,37 @@ // Expected: SSH rules on 3 of 5 nodes { "test_id": "SSH-A3", - "policy_file": "ssh_policies/ssh_a3.json", "ssh_section": [ { "action": "accept", - "src": ["autogroup:member"], - "dst": ["autogroup:self"], - "users": ["root", "autogroup:nonroot"] + "src": [ + "autogroup:member" + ], + "dst": [ + "autogroup:self" + ], + "users": [ + "root", + "autogroup:nonroot" + ] } ], "nodes": { "user1": { "rules": [ { - "principals": [{ "nodeIP": "100.90.199.68" }, { "nodeIP": "fd7a:115c:a1e0::2d01:c747" }], - "sshUsers": { "*": "=", "root": "root" }, + "principals": [ + { + "nodeIP": "100.90.199.68" + }, + { + "nodeIP": "fd7a:115c:a1e0::2d01:c747" + } + ], + "sshUsers": { + "*": "=", + "root": "root" + }, "action": { "accept": true, "allowAgentForwarding": true, @@ -32,8 +48,18 @@ "user-kris": { "rules": [ { - "principals": [{ "nodeIP": "100.110.121.96" }, { "nodeIP": "fd7a:115c:a1e0::1737:7960" }], - "sshUsers": { "*": "=", "root": "root" }, + "principals": [ + { + "nodeIP": "100.110.121.96" + }, + { + "nodeIP": "fd7a:115c:a1e0::1737:7960" + } + ], + "sshUsers": { + "*": "=", + "root": "root" + }, "action": { "accept": true, "allowAgentForwarding": true, @@ -46,8 +72,18 @@ "user-mon": { "rules": [ { - "principals": [{ "nodeIP": "100.103.90.82" }, { "nodeIP": "fd7a:115c:a1e0::9e37:5a52" }], - "sshUsers": { "*": "=", "root": "root" }, + "principals": [ + { + "nodeIP": "100.103.90.82" + }, + { + "nodeIP": "fd7a:115c:a1e0::9e37:5a52" + } + ], + "sshUsers": { + "*": "=", + "root": "root" + }, "action": { "accept": true, "allowAgentForwarding": true, @@ -57,7 +93,11 @@ } ] }, - "tagged-server": { "rules": [] }, - "tagged-prod": { "rules": [] } + "tagged-server": { + "rules": [] + }, + "tagged-prod": { + "rules": [] + } } } diff --git a/hscontrol/policy/v2/testdata/ssh_results/SSH-A4.hujson b/hscontrol/policy/v2/testdata/ssh_results/SSH-A4.hujson index 17af8ada8..5915802ea 100644 --- a/hscontrol/policy/v2/testdata/ssh_results/SSH-A4.hujson +++ b/hscontrol/policy/v2/testdata/ssh_results/SSH-A4.hujson @@ -5,24 +5,57 @@ // Expected: SSH rules on 1 of 5 nodes { "test_id": "SSH-A4", - "policy_file": "ssh_policies/ssh_a4.json", - "ssh_section": [{ "action": "accept", "src": ["autogroup:member"], "dst": ["tag:server"], "users": ["ubuntu"] }], + "ssh_section": [ + { + "action": "accept", + "src": [ + "autogroup:member" + ], + "dst": [ + "tag:server" + ], + "users": [ + "ubuntu" + ] + } + ], "nodes": { - "user1": { "rules": [] }, - "user-kris": { "rules": [] }, - "user-mon": { "rules": [] }, + "user1": { + "rules": [] + }, + "user-kris": { + "rules": [] + }, + "user-mon": { + "rules": [] + }, "tagged-server": { "rules": [ { "principals": [ - { "nodeIP": "100.103.90.82" }, - { "nodeIP": "100.110.121.96" }, - { "nodeIP": "100.90.199.68" }, - { "nodeIP": "fd7a:115c:a1e0::1737:7960" }, - { "nodeIP": "fd7a:115c:a1e0::2d01:c747" }, - { "nodeIP": "fd7a:115c:a1e0::9e37:5a52" } + { + "nodeIP": "100.103.90.82" + }, + { + "nodeIP": "100.110.121.96" + }, + { + "nodeIP": "100.90.199.68" + }, + { + "nodeIP": "fd7a:115c:a1e0::1737:7960" + }, + { + "nodeIP": "fd7a:115c:a1e0::2d01:c747" + }, + { + "nodeIP": "fd7a:115c:a1e0::9e37:5a52" + } ], - "sshUsers": { "root": "", "ubuntu": "ubuntu" }, + "sshUsers": { + "root": "", + "ubuntu": "ubuntu" + }, "action": { "accept": true, "allowAgentForwarding": true, @@ -32,6 +65,8 @@ } ] }, - "tagged-prod": { "rules": [] } + "tagged-prod": { + "rules": [] + } } } diff --git a/hscontrol/policy/v2/testdata/ssh_results/SSH-A5.hujson b/hscontrol/policy/v2/testdata/ssh_results/SSH-A5.hujson index 74b2162a3..cefbf3174 100644 --- a/hscontrol/policy/v2/testdata/ssh_results/SSH-A5.hujson +++ b/hscontrol/policy/v2/testdata/ssh_results/SSH-A5.hujson @@ -5,26 +5,58 @@ // Expected: SSH rules on 1 of 5 nodes { "test_id": "SSH-A5", - "policy_file": "ssh_policies/ssh_a5.json", "ssh_section": [ - { "action": "accept", "src": ["autogroup:member"], "dst": ["tag:server"], "users": ["root", "ubuntu"] } + { + "action": "accept", + "src": [ + "autogroup:member" + ], + "dst": [ + "tag:server" + ], + "users": [ + "root", + "ubuntu" + ] + } ], "nodes": { - "user1": { "rules": [] }, - "user-kris": { "rules": [] }, - "user-mon": { "rules": [] }, + "user1": { + "rules": [] + }, + "user-kris": { + "rules": [] + }, + "user-mon": { + "rules": [] + }, "tagged-server": { "rules": [ { "principals": [ - { "nodeIP": "100.103.90.82" }, - { "nodeIP": "100.110.121.96" }, - { "nodeIP": "100.90.199.68" }, - { "nodeIP": "fd7a:115c:a1e0::1737:7960" }, - { "nodeIP": "fd7a:115c:a1e0::2d01:c747" }, - { "nodeIP": "fd7a:115c:a1e0::9e37:5a52" } + { + "nodeIP": "100.103.90.82" + }, + { + "nodeIP": "100.110.121.96" + }, + { + "nodeIP": "100.90.199.68" + }, + { + "nodeIP": "fd7a:115c:a1e0::1737:7960" + }, + { + "nodeIP": "fd7a:115c:a1e0::2d01:c747" + }, + { + "nodeIP": "fd7a:115c:a1e0::9e37:5a52" + } ], - "sshUsers": { "root": "root", "ubuntu": "ubuntu" }, + "sshUsers": { + "root": "root", + "ubuntu": "ubuntu" + }, "action": { "accept": true, "allowAgentForwarding": true, @@ -34,6 +66,8 @@ } ] }, - "tagged-prod": { "rules": [] } + "tagged-prod": { + "rules": [] + } } } diff --git a/hscontrol/policy/v2/testdata/ssh_results/SSH-A6.hujson b/hscontrol/policy/v2/testdata/ssh_results/SSH-A6.hujson index 7e585c3d5..f9dec5691 100644 --- a/hscontrol/policy/v2/testdata/ssh_results/SSH-A6.hujson +++ b/hscontrol/policy/v2/testdata/ssh_results/SSH-A6.hujson @@ -5,7 +5,6 @@ // Expected: SSH rules on 3 of 5 nodes { "test_id": "SSH-A6", - "policy_file": "ssh_policies/ssh_a6.json", "ssh_section": [ { "action": "check", diff --git a/hscontrol/policy/v2/testdata/ssh_results/SSH-A7.hujson b/hscontrol/policy/v2/testdata/ssh_results/SSH-A7.hujson index 1038cfa6d..030bcec3e 100644 --- a/hscontrol/policy/v2/testdata/ssh_results/SSH-A7.hujson +++ b/hscontrol/policy/v2/testdata/ssh_results/SSH-A7.hujson @@ -5,7 +5,6 @@ // Expected: SSH rules on 3 of 5 nodes { "test_id": "SSH-A7", - "policy_file": "ssh_policies/ssh_a7.json", "ssh_section": [ { "action": "check", diff --git a/hscontrol/policy/v2/testdata/ssh_results/SSH-A8.hujson b/hscontrol/policy/v2/testdata/ssh_results/SSH-A8.hujson index 580db59d3..6217eb686 100644 --- a/hscontrol/policy/v2/testdata/ssh_results/SSH-A8.hujson +++ b/hscontrol/policy/v2/testdata/ssh_results/SSH-A8.hujson @@ -5,7 +5,6 @@ // Expected: SSH rules on 3 of 5 nodes { "test_id": "SSH-A8", - "policy_file": "ssh_policies/ssh_a8.json", "ssh_section": [ { "action": "check", diff --git a/hscontrol/policy/v2/testdata/ssh_results/SSH-B1.hujson b/hscontrol/policy/v2/testdata/ssh_results/SSH-B1.hujson index ca8f6cb45..837ff10c8 100644 --- a/hscontrol/policy/v2/testdata/ssh_results/SSH-B1.hujson +++ b/hscontrol/policy/v2/testdata/ssh_results/SSH-B1.hujson @@ -5,17 +5,44 @@ // Expected: SSH rules on 1 of 5 nodes { "test_id": "SSH-B1", - "policy_file": "ssh_policies/ssh_b1.json", - "ssh_section": [{ "action": "accept", "src": ["kristoffer@dalby.cc"], "dst": ["tag:server"], "users": ["root"] }], + "ssh_section": [ + { + "action": "accept", + "src": [ + "kristoffer@dalby.cc" + ], + "dst": [ + "tag:server" + ], + "users": [ + "root" + ] + } + ], "nodes": { - "user1": { "rules": [] }, - "user-kris": { "rules": [] }, - "user-mon": { "rules": [] }, + "user1": { + "rules": [] + }, + "user-kris": { + "rules": [] + }, + "user-mon": { + "rules": [] + }, "tagged-server": { "rules": [ { - "principals": [{ "nodeIP": "100.110.121.96" }, { "nodeIP": "fd7a:115c:a1e0::1737:7960" }], - "sshUsers": { "root": "root" }, + "principals": [ + { + "nodeIP": "100.110.121.96" + }, + { + "nodeIP": "fd7a:115c:a1e0::1737:7960" + } + ], + "sshUsers": { + "root": "root" + }, "action": { "accept": true, "allowAgentForwarding": true, @@ -25,6 +52,8 @@ } ] }, - "tagged-prod": { "rules": [] } + "tagged-prod": { + "rules": [] + } } } diff --git a/hscontrol/policy/v2/testdata/ssh_results/SSH-B2.hujson b/hscontrol/policy/v2/testdata/ssh_results/SSH-B2.hujson index e1256da25..f04d1f93e 100644 --- a/hscontrol/policy/v2/testdata/ssh_results/SSH-B2.hujson +++ b/hscontrol/policy/v2/testdata/ssh_results/SSH-B2.hujson @@ -5,22 +5,50 @@ // Expected: SSH rules on 1 of 5 nodes { "test_id": "SSH-B2", - "policy_file": "ssh_policies/ssh_b2.json", - "ssh_section": [{ "action": "accept", "src": ["group:developers"], "dst": ["tag:server"], "users": ["root"] }], + "ssh_section": [ + { + "action": "accept", + "src": [ + "group:developers" + ], + "dst": [ + "tag:server" + ], + "users": [ + "root" + ] + } + ], "nodes": { - "user1": { "rules": [] }, - "user-kris": { "rules": [] }, - "user-mon": { "rules": [] }, + "user1": { + "rules": [] + }, + "user-kris": { + "rules": [] + }, + "user-mon": { + "rules": [] + }, "tagged-server": { "rules": [ { "principals": [ - { "nodeIP": "100.110.121.96" }, - { "nodeIP": "100.90.199.68" }, - { "nodeIP": "fd7a:115c:a1e0::1737:7960" }, - { "nodeIP": "fd7a:115c:a1e0::2d01:c747" } + { + "nodeIP": "100.110.121.96" + }, + { + "nodeIP": "100.90.199.68" + }, + { + "nodeIP": "fd7a:115c:a1e0::1737:7960" + }, + { + "nodeIP": "fd7a:115c:a1e0::2d01:c747" + } ], - "sshUsers": { "root": "root" }, + "sshUsers": { + "root": "root" + }, "action": { "accept": true, "allowAgentForwarding": true, @@ -30,6 +58,8 @@ } ] }, - "tagged-prod": { "rules": [] } + "tagged-prod": { + "rules": [] + } } } diff --git a/hscontrol/policy/v2/testdata/ssh_results/SSH-B3.hujson b/hscontrol/policy/v2/testdata/ssh_results/SSH-B3.hujson index a24920112..5e9e435e5 100644 --- a/hscontrol/policy/v2/testdata/ssh_results/SSH-B3.hujson +++ b/hscontrol/policy/v2/testdata/ssh_results/SSH-B3.hujson @@ -5,17 +5,44 @@ // Expected: SSH rules on 1 of 5 nodes { "test_id": "SSH-B3", - "policy_file": "ssh_policies/ssh_b3.json", - "ssh_section": [{ "action": "accept", "src": ["tag:prod"], "dst": ["tag:server"], "users": ["root"] }], + "ssh_section": [ + { + "action": "accept", + "src": [ + "tag:prod" + ], + "dst": [ + "tag:server" + ], + "users": [ + "root" + ] + } + ], "nodes": { - "user1": { "rules": [] }, - "user-kris": { "rules": [] }, - "user-mon": { "rules": [] }, + "user1": { + "rules": [] + }, + "user-kris": { + "rules": [] + }, + "user-mon": { + "rules": [] + }, "tagged-server": { "rules": [ { - "principals": [{ "nodeIP": "100.103.8.15" }, { "nodeIP": "fd7a:115c:a1e0::5b37:80f" }], - "sshUsers": { "root": "root" }, + "principals": [ + { + "nodeIP": "100.103.8.15" + }, + { + "nodeIP": "fd7a:115c:a1e0::5b37:80f" + } + ], + "sshUsers": { + "root": "root" + }, "action": { "accept": true, "allowAgentForwarding": true, @@ -25,6 +52,8 @@ } ] }, - "tagged-prod": { "rules": [] } + "tagged-prod": { + "rules": [] + } } } diff --git a/hscontrol/policy/v2/testdata/ssh_results/SSH-B5.hujson b/hscontrol/policy/v2/testdata/ssh_results/SSH-B5.hujson index 1b2db59cd..c3e6febec 100644 --- a/hscontrol/policy/v2/testdata/ssh_results/SSH-B5.hujson +++ b/hscontrol/policy/v2/testdata/ssh_results/SSH-B5.hujson @@ -5,22 +5,50 @@ // Expected: SSH rules on 1 of 5 nodes { "test_id": "SSH-B5", - "policy_file": "ssh_policies/ssh_b5.json", - "ssh_section": [{ "action": "accept", "src": ["user:*@passkey"], "dst": ["tag:server"], "users": ["root"] }], + "ssh_section": [ + { + "action": "accept", + "src": [ + "user:*@passkey" + ], + "dst": [ + "tag:server" + ], + "users": [ + "root" + ] + } + ], "nodes": { - "user1": { "rules": [] }, - "user-kris": { "rules": [] }, - "user-mon": { "rules": [] }, + "user1": { + "rules": [] + }, + "user-kris": { + "rules": [] + }, + "user-mon": { + "rules": [] + }, "tagged-server": { "rules": [ { "principals": [ - { "nodeIP": "100.103.90.82" }, - { "nodeIP": "100.90.199.68" }, - { "nodeIP": "fd7a:115c:a1e0::2d01:c747" }, - { "nodeIP": "fd7a:115c:a1e0::9e37:5a52" } + { + "nodeIP": "100.103.90.82" + }, + { + "nodeIP": "100.90.199.68" + }, + { + "nodeIP": "fd7a:115c:a1e0::2d01:c747" + }, + { + "nodeIP": "fd7a:115c:a1e0::9e37:5a52" + } ], - "sshUsers": { "root": "root" }, + "sshUsers": { + "root": "root" + }, "action": { "accept": true, "allowAgentForwarding": true, @@ -30,6 +58,8 @@ } ] }, - "tagged-prod": { "rules": [] } + "tagged-prod": { + "rules": [] + } } } diff --git a/hscontrol/policy/v2/testdata/ssh_results/SSH-B6.hujson b/hscontrol/policy/v2/testdata/ssh_results/SSH-B6.hujson index 3fb7470f2..9aabaf211 100644 --- a/hscontrol/policy/v2/testdata/ssh_results/SSH-B6.hujson +++ b/hscontrol/policy/v2/testdata/ssh_results/SSH-B6.hujson @@ -5,22 +5,50 @@ // Expected: SSH rules on 1 of 5 nodes { "test_id": "SSH-B6", - "policy_file": "ssh_policies/ssh_b6.json", - "ssh_section": [{ "action": "accept", "src": ["autogroup:tagged"], "dst": ["tag:server"], "users": ["root"] }], + "ssh_section": [ + { + "action": "accept", + "src": [ + "autogroup:tagged" + ], + "dst": [ + "tag:server" + ], + "users": [ + "root" + ] + } + ], "nodes": { - "user1": { "rules": [] }, - "user-kris": { "rules": [] }, - "user-mon": { "rules": [] }, + "user1": { + "rules": [] + }, + "user-kris": { + "rules": [] + }, + "user-mon": { + "rules": [] + }, "tagged-server": { "rules": [ { "principals": [ - { "nodeIP": "100.103.8.15" }, - { "nodeIP": "100.108.74.26" }, - { "nodeIP": "fd7a:115c:a1e0::5b37:80f" }, - { "nodeIP": "fd7a:115c:a1e0::b901:4a87" } + { + "nodeIP": "100.103.8.15" + }, + { + "nodeIP": "100.108.74.26" + }, + { + "nodeIP": "fd7a:115c:a1e0::5b37:80f" + }, + { + "nodeIP": "fd7a:115c:a1e0::b901:4a87" + } ], - "sshUsers": { "root": "root" }, + "sshUsers": { + "root": "root" + }, "action": { "accept": true, "allowAgentForwarding": true, @@ -30,6 +58,8 @@ } ] }, - "tagged-prod": { "rules": [] } + "tagged-prod": { + "rules": [] + } } } diff --git a/hscontrol/policy/v2/testdata/ssh_results/SSH-C1.hujson b/hscontrol/policy/v2/testdata/ssh_results/SSH-C1.hujson index b49717781..579ed8145 100644 --- a/hscontrol/policy/v2/testdata/ssh_results/SSH-C1.hujson +++ b/hscontrol/policy/v2/testdata/ssh_results/SSH-C1.hujson @@ -5,14 +5,35 @@ // Expected: SSH rules on 3 of 5 nodes { "test_id": "SSH-C1", - "policy_file": "ssh_policies/ssh_c1.json", - "ssh_section": [{ "action": "accept", "src": ["autogroup:member"], "dst": ["autogroup:self"], "users": ["root"] }], + "ssh_section": [ + { + "action": "accept", + "src": [ + "autogroup:member" + ], + "dst": [ + "autogroup:self" + ], + "users": [ + "root" + ] + } + ], "nodes": { "user1": { "rules": [ { - "principals": [{ "nodeIP": "100.90.199.68" }, { "nodeIP": "fd7a:115c:a1e0::2d01:c747" }], - "sshUsers": { "root": "root" }, + "principals": [ + { + "nodeIP": "100.90.199.68" + }, + { + "nodeIP": "fd7a:115c:a1e0::2d01:c747" + } + ], + "sshUsers": { + "root": "root" + }, "action": { "accept": true, "allowAgentForwarding": true, @@ -25,8 +46,17 @@ "user-kris": { "rules": [ { - "principals": [{ "nodeIP": "100.110.121.96" }, { "nodeIP": "fd7a:115c:a1e0::1737:7960" }], - "sshUsers": { "root": "root" }, + "principals": [ + { + "nodeIP": "100.110.121.96" + }, + { + "nodeIP": "fd7a:115c:a1e0::1737:7960" + } + ], + "sshUsers": { + "root": "root" + }, "action": { "accept": true, "allowAgentForwarding": true, @@ -39,8 +69,17 @@ "user-mon": { "rules": [ { - "principals": [{ "nodeIP": "100.103.90.82" }, { "nodeIP": "fd7a:115c:a1e0::9e37:5a52" }], - "sshUsers": { "root": "root" }, + "principals": [ + { + "nodeIP": "100.103.90.82" + }, + { + "nodeIP": "fd7a:115c:a1e0::9e37:5a52" + } + ], + "sshUsers": { + "root": "root" + }, "action": { "accept": true, "allowAgentForwarding": true, @@ -50,7 +89,11 @@ } ] }, - "tagged-server": { "rules": [] }, - "tagged-prod": { "rules": [] } + "tagged-server": { + "rules": [] + }, + "tagged-prod": { + "rules": [] + } } } diff --git a/hscontrol/policy/v2/testdata/ssh_results/SSH-C2.hujson b/hscontrol/policy/v2/testdata/ssh_results/SSH-C2.hujson index 48aba4dc6..833818cef 100644 --- a/hscontrol/policy/v2/testdata/ssh_results/SSH-C2.hujson +++ b/hscontrol/policy/v2/testdata/ssh_results/SSH-C2.hujson @@ -5,24 +5,56 @@ // Expected: SSH rules on 1 of 5 nodes { "test_id": "SSH-C2", - "policy_file": "ssh_policies/ssh_c2.json", - "ssh_section": [{ "action": "accept", "src": ["autogroup:member"], "dst": ["tag:server"], "users": ["root"] }], + "ssh_section": [ + { + "action": "accept", + "src": [ + "autogroup:member" + ], + "dst": [ + "tag:server" + ], + "users": [ + "root" + ] + } + ], "nodes": { - "user1": { "rules": [] }, - "user-kris": { "rules": [] }, - "user-mon": { "rules": [] }, + "user1": { + "rules": [] + }, + "user-kris": { + "rules": [] + }, + "user-mon": { + "rules": [] + }, "tagged-server": { "rules": [ { "principals": [ - { "nodeIP": "100.103.90.82" }, - { "nodeIP": "100.110.121.96" }, - { "nodeIP": "100.90.199.68" }, - { "nodeIP": "fd7a:115c:a1e0::1737:7960" }, - { "nodeIP": "fd7a:115c:a1e0::2d01:c747" }, - { "nodeIP": "fd7a:115c:a1e0::9e37:5a52" } + { + "nodeIP": "100.103.90.82" + }, + { + "nodeIP": "100.110.121.96" + }, + { + "nodeIP": "100.90.199.68" + }, + { + "nodeIP": "fd7a:115c:a1e0::1737:7960" + }, + { + "nodeIP": "fd7a:115c:a1e0::2d01:c747" + }, + { + "nodeIP": "fd7a:115c:a1e0::9e37:5a52" + } ], - "sshUsers": { "root": "root" }, + "sshUsers": { + "root": "root" + }, "action": { "accept": true, "allowAgentForwarding": true, @@ -32,6 +64,8 @@ } ] }, - "tagged-prod": { "rules": [] } + "tagged-prod": { + "rules": [] + } } } diff --git a/hscontrol/policy/v2/testdata/ssh_results/SSH-C3.hujson b/hscontrol/policy/v2/testdata/ssh_results/SSH-C3.hujson index ece606471..b1e152077 100644 --- a/hscontrol/policy/v2/testdata/ssh_results/SSH-C3.hujson +++ b/hscontrol/policy/v2/testdata/ssh_results/SSH-C3.hujson @@ -5,17 +5,38 @@ // Expected: SSH rules on 1 of 5 nodes { "test_id": "SSH-C3", - "policy_file": "ssh_policies/ssh_c3.json", "ssh_section": [ - { "action": "accept", "src": ["kristoffer@dalby.cc"], "dst": ["kristoffer@dalby.cc"], "users": ["root"] } + { + "action": "accept", + "src": [ + "kristoffer@dalby.cc" + ], + "dst": [ + "kristoffer@dalby.cc" + ], + "users": [ + "root" + ] + } ], "nodes": { - "user1": { "rules": [] }, + "user1": { + "rules": [] + }, "user-kris": { "rules": [ { - "principals": [{ "nodeIP": "100.110.121.96" }, { "nodeIP": "fd7a:115c:a1e0::1737:7960" }], - "sshUsers": { "root": "root" }, + "principals": [ + { + "nodeIP": "100.110.121.96" + }, + { + "nodeIP": "fd7a:115c:a1e0::1737:7960" + } + ], + "sshUsers": { + "root": "root" + }, "action": { "accept": true, "allowAgentForwarding": true, @@ -25,8 +46,14 @@ } ] }, - "user-mon": { "rules": [] }, - "tagged-server": { "rules": [] }, - "tagged-prod": { "rules": [] } + "user-mon": { + "rules": [] + }, + "tagged-server": { + "rules": [] + }, + "tagged-prod": { + "rules": [] + } } } diff --git a/hscontrol/policy/v2/testdata/ssh_results/SSH-C4.hujson b/hscontrol/policy/v2/testdata/ssh_results/SSH-C4.hujson index c42c1e0d8..45f40d6ea 100644 --- a/hscontrol/policy/v2/testdata/ssh_results/SSH-C4.hujson +++ b/hscontrol/policy/v2/testdata/ssh_results/SSH-C4.hujson @@ -5,26 +5,57 @@ // Expected: SSH rules on 2 of 5 nodes { "test_id": "SSH-C4", - "policy_file": "ssh_policies/ssh_c4.json", "ssh_section": [ - { "action": "accept", "src": ["autogroup:member"], "dst": ["tag:server", "tag:prod"], "users": ["root"] } + { + "action": "accept", + "src": [ + "autogroup:member" + ], + "dst": [ + "tag:server", + "tag:prod" + ], + "users": [ + "root" + ] + } ], "nodes": { - "user1": { "rules": [] }, - "user-kris": { "rules": [] }, - "user-mon": { "rules": [] }, + "user1": { + "rules": [] + }, + "user-kris": { + "rules": [] + }, + "user-mon": { + "rules": [] + }, "tagged-server": { "rules": [ { "principals": [ - { "nodeIP": "100.103.90.82" }, - { "nodeIP": "100.110.121.96" }, - { "nodeIP": "100.90.199.68" }, - { "nodeIP": "fd7a:115c:a1e0::1737:7960" }, - { "nodeIP": "fd7a:115c:a1e0::2d01:c747" }, - { "nodeIP": "fd7a:115c:a1e0::9e37:5a52" } + { + "nodeIP": "100.103.90.82" + }, + { + "nodeIP": "100.110.121.96" + }, + { + "nodeIP": "100.90.199.68" + }, + { + "nodeIP": "fd7a:115c:a1e0::1737:7960" + }, + { + "nodeIP": "fd7a:115c:a1e0::2d01:c747" + }, + { + "nodeIP": "fd7a:115c:a1e0::9e37:5a52" + } ], - "sshUsers": { "root": "root" }, + "sshUsers": { + "root": "root" + }, "action": { "accept": true, "allowAgentForwarding": true, @@ -38,14 +69,28 @@ "rules": [ { "principals": [ - { "nodeIP": "100.103.90.82" }, - { "nodeIP": "100.110.121.96" }, - { "nodeIP": "100.90.199.68" }, - { "nodeIP": "fd7a:115c:a1e0::1737:7960" }, - { "nodeIP": "fd7a:115c:a1e0::2d01:c747" }, - { "nodeIP": "fd7a:115c:a1e0::9e37:5a52" } + { + "nodeIP": "100.103.90.82" + }, + { + "nodeIP": "100.110.121.96" + }, + { + "nodeIP": "100.90.199.68" + }, + { + "nodeIP": "fd7a:115c:a1e0::1737:7960" + }, + { + "nodeIP": "fd7a:115c:a1e0::2d01:c747" + }, + { + "nodeIP": "fd7a:115c:a1e0::9e37:5a52" + } ], - "sshUsers": { "root": "root" }, + "sshUsers": { + "root": "root" + }, "action": { "accept": true, "allowAgentForwarding": true, diff --git a/hscontrol/policy/v2/testdata/ssh_results/SSH-D10.hujson b/hscontrol/policy/v2/testdata/ssh_results/SSH-D10.hujson index 365d61675..8582932e6 100644 --- a/hscontrol/policy/v2/testdata/ssh_results/SSH-D10.hujson +++ b/hscontrol/policy/v2/testdata/ssh_results/SSH-D10.hujson @@ -5,16 +5,35 @@ // Expected: SSH rules on 3 of 5 nodes { "test_id": "SSH-D10", - "policy_file": "ssh_policies/ssh_d10.json", "ssh_section": [ - { "action": "accept", "src": ["user:*@passkey"], "dst": ["tag:server"], "users": ["localpart:*@passkey"] } + { + "action": "accept", + "src": [ + "user:*@passkey" + ], + "dst": [ + "tag:server" + ], + "users": [ + "localpart:*@passkey" + ] + } ], "nodes": { "user1": { "rules": [ { - "principals": [{ "nodeIP": "100.90.199.68" }, { "nodeIP": "fd7a:115c:a1e0::2d01:c747" }], - "sshUsers": { "root": "" }, + "principals": [ + { + "nodeIP": "100.90.199.68" + }, + { + "nodeIP": "fd7a:115c:a1e0::2d01:c747" + } + ], + "sshUsers": { + "root": "" + }, "action": { "accept": true, "allowAgentForwarding": true, @@ -23,8 +42,17 @@ } }, { - "principals": [{ "nodeIP": "100.90.199.68" }, { "nodeIP": "fd7a:115c:a1e0::2d01:c747" }], - "sshUsers": { "kratail2tid": "kratail2tid" }, + "principals": [ + { + "nodeIP": "100.90.199.68" + }, + { + "nodeIP": "fd7a:115c:a1e0::2d01:c747" + } + ], + "sshUsers": { + "kratail2tid": "kratail2tid" + }, "action": { "accept": true, "allowAgentForwarding": true, @@ -34,12 +62,23 @@ } ] }, - "user-kris": { "rules": [] }, + "user-kris": { + "rules": [] + }, "user-mon": { "rules": [ { - "principals": [{ "nodeIP": "100.103.90.82" }, { "nodeIP": "fd7a:115c:a1e0::9e37:5a52" }], - "sshUsers": { "root": "" }, + "principals": [ + { + "nodeIP": "100.103.90.82" + }, + { + "nodeIP": "fd7a:115c:a1e0::9e37:5a52" + } + ], + "sshUsers": { + "root": "" + }, "action": { "accept": true, "allowAgentForwarding": true, @@ -48,8 +87,17 @@ } }, { - "principals": [{ "nodeIP": "100.103.90.82" }, { "nodeIP": "fd7a:115c:a1e0::9e37:5a52" }], - "sshUsers": { "monitorpasskeykradalby": "monitorpasskeykradalby" }, + "principals": [ + { + "nodeIP": "100.103.90.82" + }, + { + "nodeIP": "fd7a:115c:a1e0::9e37:5a52" + } + ], + "sshUsers": { + "monitorpasskeykradalby": "monitorpasskeykradalby" + }, "action": { "accept": true, "allowAgentForwarding": true, @@ -62,8 +110,17 @@ "tagged-server": { "rules": [ { - "principals": [{ "nodeIP": "100.90.199.68" }, { "nodeIP": "fd7a:115c:a1e0::2d01:c747" }], - "sshUsers": { "root": "" }, + "principals": [ + { + "nodeIP": "100.90.199.68" + }, + { + "nodeIP": "fd7a:115c:a1e0::2d01:c747" + } + ], + "sshUsers": { + "root": "" + }, "action": { "accept": true, "allowAgentForwarding": true, @@ -72,8 +129,17 @@ } }, { - "principals": [{ "nodeIP": "100.90.199.68" }, { "nodeIP": "fd7a:115c:a1e0::2d01:c747" }], - "sshUsers": { "kratail2tid": "kratail2tid" }, + "principals": [ + { + "nodeIP": "100.90.199.68" + }, + { + "nodeIP": "fd7a:115c:a1e0::2d01:c747" + } + ], + "sshUsers": { + "kratail2tid": "kratail2tid" + }, "action": { "accept": true, "allowAgentForwarding": true, @@ -82,8 +148,17 @@ } }, { - "principals": [{ "nodeIP": "100.103.90.82" }, { "nodeIP": "fd7a:115c:a1e0::9e37:5a52" }], - "sshUsers": { "root": "" }, + "principals": [ + { + "nodeIP": "100.103.90.82" + }, + { + "nodeIP": "fd7a:115c:a1e0::9e37:5a52" + } + ], + "sshUsers": { + "root": "" + }, "action": { "accept": true, "allowAgentForwarding": true, @@ -92,8 +167,17 @@ } }, { - "principals": [{ "nodeIP": "100.103.90.82" }, { "nodeIP": "fd7a:115c:a1e0::9e37:5a52" }], - "sshUsers": { "monitorpasskeykradalby": "monitorpasskeykradalby" }, + "principals": [ + { + "nodeIP": "100.103.90.82" + }, + { + "nodeIP": "fd7a:115c:a1e0::9e37:5a52" + } + ], + "sshUsers": { + "monitorpasskeykradalby": "monitorpasskeykradalby" + }, "action": { "accept": true, "allowAgentForwarding": true, @@ -103,6 +187,8 @@ } ] }, - "tagged-prod": { "rules": [] } + "tagged-prod": { + "rules": [] + } } } diff --git a/hscontrol/policy/v2/testdata/ssh_results/SSH-D11.hujson b/hscontrol/policy/v2/testdata/ssh_results/SSH-D11.hujson index bb35c9f12..e052a8f17 100644 --- a/hscontrol/policy/v2/testdata/ssh_results/SSH-D11.hujson +++ b/hscontrol/policy/v2/testdata/ssh_results/SSH-D11.hujson @@ -5,21 +5,37 @@ // Expected: SSH rules on 4 of 5 nodes { "test_id": "SSH-D11", - "policy_file": "ssh_policies/ssh_d11.json", "ssh_section": [ { "action": "accept", - "src": ["autogroup:member"], - "dst": ["tag:server"], - "users": ["localpart:*@passkey", "ubuntu"] + "src": [ + "autogroup:member" + ], + "dst": [ + "tag:server" + ], + "users": [ + "localpart:*@passkey", + "ubuntu" + ] } ], "nodes": { "user1": { "rules": [ { - "principals": [{ "nodeIP": "100.90.199.68" }, { "nodeIP": "fd7a:115c:a1e0::2d01:c747" }], - "sshUsers": { "root": "", "ubuntu": "ubuntu" }, + "principals": [ + { + "nodeIP": "100.90.199.68" + }, + { + "nodeIP": "fd7a:115c:a1e0::2d01:c747" + } + ], + "sshUsers": { + "root": "", + "ubuntu": "ubuntu" + }, "action": { "accept": true, "allowAgentForwarding": true, @@ -28,8 +44,17 @@ } }, { - "principals": [{ "nodeIP": "100.90.199.68" }, { "nodeIP": "fd7a:115c:a1e0::2d01:c747" }], - "sshUsers": { "kratail2tid": "kratail2tid" }, + "principals": [ + { + "nodeIP": "100.90.199.68" + }, + { + "nodeIP": "fd7a:115c:a1e0::2d01:c747" + } + ], + "sshUsers": { + "kratail2tid": "kratail2tid" + }, "action": { "accept": true, "allowAgentForwarding": true, @@ -42,8 +67,18 @@ "user-kris": { "rules": [ { - "principals": [{ "nodeIP": "100.110.121.96" }, { "nodeIP": "fd7a:115c:a1e0::1737:7960" }], - "sshUsers": { "root": "", "ubuntu": "ubuntu" }, + "principals": [ + { + "nodeIP": "100.110.121.96" + }, + { + "nodeIP": "fd7a:115c:a1e0::1737:7960" + } + ], + "sshUsers": { + "root": "", + "ubuntu": "ubuntu" + }, "action": { "accept": true, "allowAgentForwarding": true, @@ -56,8 +91,18 @@ "user-mon": { "rules": [ { - "principals": [{ "nodeIP": "100.103.90.82" }, { "nodeIP": "fd7a:115c:a1e0::9e37:5a52" }], - "sshUsers": { "root": "", "ubuntu": "ubuntu" }, + "principals": [ + { + "nodeIP": "100.103.90.82" + }, + { + "nodeIP": "fd7a:115c:a1e0::9e37:5a52" + } + ], + "sshUsers": { + "root": "", + "ubuntu": "ubuntu" + }, "action": { "accept": true, "allowAgentForwarding": true, @@ -66,8 +111,17 @@ } }, { - "principals": [{ "nodeIP": "100.103.90.82" }, { "nodeIP": "fd7a:115c:a1e0::9e37:5a52" }], - "sshUsers": { "monitorpasskeykradalby": "monitorpasskeykradalby" }, + "principals": [ + { + "nodeIP": "100.103.90.82" + }, + { + "nodeIP": "fd7a:115c:a1e0::9e37:5a52" + } + ], + "sshUsers": { + "monitorpasskeykradalby": "monitorpasskeykradalby" + }, "action": { "accept": true, "allowAgentForwarding": true, @@ -80,8 +134,18 @@ "tagged-server": { "rules": [ { - "principals": [{ "nodeIP": "100.90.199.68" }, { "nodeIP": "fd7a:115c:a1e0::2d01:c747" }], - "sshUsers": { "root": "", "ubuntu": "ubuntu" }, + "principals": [ + { + "nodeIP": "100.90.199.68" + }, + { + "nodeIP": "fd7a:115c:a1e0::2d01:c747" + } + ], + "sshUsers": { + "root": "", + "ubuntu": "ubuntu" + }, "action": { "accept": true, "allowAgentForwarding": true, @@ -90,8 +154,17 @@ } }, { - "principals": [{ "nodeIP": "100.90.199.68" }, { "nodeIP": "fd7a:115c:a1e0::2d01:c747" }], - "sshUsers": { "kratail2tid": "kratail2tid" }, + "principals": [ + { + "nodeIP": "100.90.199.68" + }, + { + "nodeIP": "fd7a:115c:a1e0::2d01:c747" + } + ], + "sshUsers": { + "kratail2tid": "kratail2tid" + }, "action": { "accept": true, "allowAgentForwarding": true, @@ -100,8 +173,18 @@ } }, { - "principals": [{ "nodeIP": "100.110.121.96" }, { "nodeIP": "fd7a:115c:a1e0::1737:7960" }], - "sshUsers": { "root": "", "ubuntu": "ubuntu" }, + "principals": [ + { + "nodeIP": "100.110.121.96" + }, + { + "nodeIP": "fd7a:115c:a1e0::1737:7960" + } + ], + "sshUsers": { + "root": "", + "ubuntu": "ubuntu" + }, "action": { "accept": true, "allowAgentForwarding": true, @@ -110,8 +193,18 @@ } }, { - "principals": [{ "nodeIP": "100.103.90.82" }, { "nodeIP": "fd7a:115c:a1e0::9e37:5a52" }], - "sshUsers": { "root": "", "ubuntu": "ubuntu" }, + "principals": [ + { + "nodeIP": "100.103.90.82" + }, + { + "nodeIP": "fd7a:115c:a1e0::9e37:5a52" + } + ], + "sshUsers": { + "root": "", + "ubuntu": "ubuntu" + }, "action": { "accept": true, "allowAgentForwarding": true, @@ -120,8 +213,17 @@ } }, { - "principals": [{ "nodeIP": "100.103.90.82" }, { "nodeIP": "fd7a:115c:a1e0::9e37:5a52" }], - "sshUsers": { "monitorpasskeykradalby": "monitorpasskeykradalby" }, + "principals": [ + { + "nodeIP": "100.103.90.82" + }, + { + "nodeIP": "fd7a:115c:a1e0::9e37:5a52" + } + ], + "sshUsers": { + "monitorpasskeykradalby": "monitorpasskeykradalby" + }, "action": { "accept": true, "allowAgentForwarding": true, @@ -131,6 +233,8 @@ } ] }, - "tagged-prod": { "rules": [] } + "tagged-prod": { + "rules": [] + } } } diff --git a/hscontrol/policy/v2/testdata/ssh_results/SSH-D12.hujson b/hscontrol/policy/v2/testdata/ssh_results/SSH-D12.hujson index 83f81a45c..4301cc325 100644 --- a/hscontrol/policy/v2/testdata/ssh_results/SSH-D12.hujson +++ b/hscontrol/policy/v2/testdata/ssh_results/SSH-D12.hujson @@ -5,21 +5,37 @@ // Expected: SSH rules on 4 of 5 nodes { "test_id": "SSH-D12", - "policy_file": "ssh_policies/ssh_d12.json", "ssh_section": [ { "action": "accept", - "src": ["autogroup:member"], - "dst": ["tag:server"], - "users": ["localpart:*@passkey", "ubuntu"] + "src": [ + "autogroup:member" + ], + "dst": [ + "tag:server" + ], + "users": [ + "localpart:*@passkey", + "ubuntu" + ] } ], "nodes": { "user1": { "rules": [ { - "principals": [{ "nodeIP": "100.90.199.68" }, { "nodeIP": "fd7a:115c:a1e0::2d01:c747" }], - "sshUsers": { "root": "", "ubuntu": "ubuntu" }, + "principals": [ + { + "nodeIP": "100.90.199.68" + }, + { + "nodeIP": "fd7a:115c:a1e0::2d01:c747" + } + ], + "sshUsers": { + "root": "", + "ubuntu": "ubuntu" + }, "action": { "accept": true, "allowAgentForwarding": true, @@ -28,8 +44,17 @@ } }, { - "principals": [{ "nodeIP": "100.90.199.68" }, { "nodeIP": "fd7a:115c:a1e0::2d01:c747" }], - "sshUsers": { "kratail2tid": "kratail2tid" }, + "principals": [ + { + "nodeIP": "100.90.199.68" + }, + { + "nodeIP": "fd7a:115c:a1e0::2d01:c747" + } + ], + "sshUsers": { + "kratail2tid": "kratail2tid" + }, "action": { "accept": true, "allowAgentForwarding": true, @@ -42,8 +67,18 @@ "user-kris": { "rules": [ { - "principals": [{ "nodeIP": "100.110.121.96" }, { "nodeIP": "fd7a:115c:a1e0::1737:7960" }], - "sshUsers": { "root": "", "ubuntu": "ubuntu" }, + "principals": [ + { + "nodeIP": "100.110.121.96" + }, + { + "nodeIP": "fd7a:115c:a1e0::1737:7960" + } + ], + "sshUsers": { + "root": "", + "ubuntu": "ubuntu" + }, "action": { "accept": true, "allowAgentForwarding": true, @@ -56,8 +91,18 @@ "user-mon": { "rules": [ { - "principals": [{ "nodeIP": "100.103.90.82" }, { "nodeIP": "fd7a:115c:a1e0::9e37:5a52" }], - "sshUsers": { "root": "", "ubuntu": "ubuntu" }, + "principals": [ + { + "nodeIP": "100.103.90.82" + }, + { + "nodeIP": "fd7a:115c:a1e0::9e37:5a52" + } + ], + "sshUsers": { + "root": "", + "ubuntu": "ubuntu" + }, "action": { "accept": true, "allowAgentForwarding": true, @@ -66,8 +111,17 @@ } }, { - "principals": [{ "nodeIP": "100.103.90.82" }, { "nodeIP": "fd7a:115c:a1e0::9e37:5a52" }], - "sshUsers": { "monitorpasskeykradalby": "monitorpasskeykradalby" }, + "principals": [ + { + "nodeIP": "100.103.90.82" + }, + { + "nodeIP": "fd7a:115c:a1e0::9e37:5a52" + } + ], + "sshUsers": { + "monitorpasskeykradalby": "monitorpasskeykradalby" + }, "action": { "accept": true, "allowAgentForwarding": true, @@ -80,8 +134,18 @@ "tagged-server": { "rules": [ { - "principals": [{ "nodeIP": "100.90.199.68" }, { "nodeIP": "fd7a:115c:a1e0::2d01:c747" }], - "sshUsers": { "root": "", "ubuntu": "ubuntu" }, + "principals": [ + { + "nodeIP": "100.90.199.68" + }, + { + "nodeIP": "fd7a:115c:a1e0::2d01:c747" + } + ], + "sshUsers": { + "root": "", + "ubuntu": "ubuntu" + }, "action": { "accept": true, "allowAgentForwarding": true, @@ -90,8 +154,17 @@ } }, { - "principals": [{ "nodeIP": "100.90.199.68" }, { "nodeIP": "fd7a:115c:a1e0::2d01:c747" }], - "sshUsers": { "kratail2tid": "kratail2tid" }, + "principals": [ + { + "nodeIP": "100.90.199.68" + }, + { + "nodeIP": "fd7a:115c:a1e0::2d01:c747" + } + ], + "sshUsers": { + "kratail2tid": "kratail2tid" + }, "action": { "accept": true, "allowAgentForwarding": true, @@ -100,8 +173,18 @@ } }, { - "principals": [{ "nodeIP": "100.110.121.96" }, { "nodeIP": "fd7a:115c:a1e0::1737:7960" }], - "sshUsers": { "root": "", "ubuntu": "ubuntu" }, + "principals": [ + { + "nodeIP": "100.110.121.96" + }, + { + "nodeIP": "fd7a:115c:a1e0::1737:7960" + } + ], + "sshUsers": { + "root": "", + "ubuntu": "ubuntu" + }, "action": { "accept": true, "allowAgentForwarding": true, @@ -110,8 +193,18 @@ } }, { - "principals": [{ "nodeIP": "100.103.90.82" }, { "nodeIP": "fd7a:115c:a1e0::9e37:5a52" }], - "sshUsers": { "root": "", "ubuntu": "ubuntu" }, + "principals": [ + { + "nodeIP": "100.103.90.82" + }, + { + "nodeIP": "fd7a:115c:a1e0::9e37:5a52" + } + ], + "sshUsers": { + "root": "", + "ubuntu": "ubuntu" + }, "action": { "accept": true, "allowAgentForwarding": true, @@ -120,8 +213,17 @@ } }, { - "principals": [{ "nodeIP": "100.103.90.82" }, { "nodeIP": "fd7a:115c:a1e0::9e37:5a52" }], - "sshUsers": { "monitorpasskeykradalby": "monitorpasskeykradalby" }, + "principals": [ + { + "nodeIP": "100.103.90.82" + }, + { + "nodeIP": "fd7a:115c:a1e0::9e37:5a52" + } + ], + "sshUsers": { + "monitorpasskeykradalby": "monitorpasskeykradalby" + }, "action": { "accept": true, "allowAgentForwarding": true, @@ -131,6 +233,8 @@ } ] }, - "tagged-prod": { "rules": [] } + "tagged-prod": { + "rules": [] + } } } diff --git a/hscontrol/policy/v2/testdata/ssh_results/SSH-D2.hujson b/hscontrol/policy/v2/testdata/ssh_results/SSH-D2.hujson index b7aeaca2e..02681a7d6 100644 --- a/hscontrol/policy/v2/testdata/ssh_results/SSH-D2.hujson +++ b/hscontrol/policy/v2/testdata/ssh_results/SSH-D2.hujson @@ -5,16 +5,35 @@ // Expected: SSH rules on 4 of 5 nodes { "test_id": "SSH-D2", - "policy_file": "ssh_policies/ssh_d2.json", "ssh_section": [ - { "action": "accept", "src": ["autogroup:member"], "dst": ["tag:server"], "users": ["localpart:*@passkey"] } + { + "action": "accept", + "src": [ + "autogroup:member" + ], + "dst": [ + "tag:server" + ], + "users": [ + "localpart:*@passkey" + ] + } ], "nodes": { "user1": { "rules": [ { - "principals": [{ "nodeIP": "100.90.199.68" }, { "nodeIP": "fd7a:115c:a1e0::2d01:c747" }], - "sshUsers": { "root": "" }, + "principals": [ + { + "nodeIP": "100.90.199.68" + }, + { + "nodeIP": "fd7a:115c:a1e0::2d01:c747" + } + ], + "sshUsers": { + "root": "" + }, "action": { "accept": true, "allowAgentForwarding": true, @@ -23,8 +42,17 @@ } }, { - "principals": [{ "nodeIP": "100.90.199.68" }, { "nodeIP": "fd7a:115c:a1e0::2d01:c747" }], - "sshUsers": { "kratail2tid": "kratail2tid" }, + "principals": [ + { + "nodeIP": "100.90.199.68" + }, + { + "nodeIP": "fd7a:115c:a1e0::2d01:c747" + } + ], + "sshUsers": { + "kratail2tid": "kratail2tid" + }, "action": { "accept": true, "allowAgentForwarding": true, @@ -37,8 +65,17 @@ "user-kris": { "rules": [ { - "principals": [{ "nodeIP": "100.110.121.96" }, { "nodeIP": "fd7a:115c:a1e0::1737:7960" }], - "sshUsers": { "root": "" }, + "principals": [ + { + "nodeIP": "100.110.121.96" + }, + { + "nodeIP": "fd7a:115c:a1e0::1737:7960" + } + ], + "sshUsers": { + "root": "" + }, "action": { "accept": true, "allowAgentForwarding": true, @@ -51,8 +88,17 @@ "user-mon": { "rules": [ { - "principals": [{ "nodeIP": "100.103.90.82" }, { "nodeIP": "fd7a:115c:a1e0::9e37:5a52" }], - "sshUsers": { "root": "" }, + "principals": [ + { + "nodeIP": "100.103.90.82" + }, + { + "nodeIP": "fd7a:115c:a1e0::9e37:5a52" + } + ], + "sshUsers": { + "root": "" + }, "action": { "accept": true, "allowAgentForwarding": true, @@ -61,8 +107,17 @@ } }, { - "principals": [{ "nodeIP": "100.103.90.82" }, { "nodeIP": "fd7a:115c:a1e0::9e37:5a52" }], - "sshUsers": { "monitorpasskeykradalby": "monitorpasskeykradalby" }, + "principals": [ + { + "nodeIP": "100.103.90.82" + }, + { + "nodeIP": "fd7a:115c:a1e0::9e37:5a52" + } + ], + "sshUsers": { + "monitorpasskeykradalby": "monitorpasskeykradalby" + }, "action": { "accept": true, "allowAgentForwarding": true, @@ -75,8 +130,17 @@ "tagged-server": { "rules": [ { - "principals": [{ "nodeIP": "100.90.199.68" }, { "nodeIP": "fd7a:115c:a1e0::2d01:c747" }], - "sshUsers": { "root": "" }, + "principals": [ + { + "nodeIP": "100.90.199.68" + }, + { + "nodeIP": "fd7a:115c:a1e0::2d01:c747" + } + ], + "sshUsers": { + "root": "" + }, "action": { "accept": true, "allowAgentForwarding": true, @@ -85,8 +149,17 @@ } }, { - "principals": [{ "nodeIP": "100.90.199.68" }, { "nodeIP": "fd7a:115c:a1e0::2d01:c747" }], - "sshUsers": { "kratail2tid": "kratail2tid" }, + "principals": [ + { + "nodeIP": "100.90.199.68" + }, + { + "nodeIP": "fd7a:115c:a1e0::2d01:c747" + } + ], + "sshUsers": { + "kratail2tid": "kratail2tid" + }, "action": { "accept": true, "allowAgentForwarding": true, @@ -95,8 +168,17 @@ } }, { - "principals": [{ "nodeIP": "100.110.121.96" }, { "nodeIP": "fd7a:115c:a1e0::1737:7960" }], - "sshUsers": { "root": "" }, + "principals": [ + { + "nodeIP": "100.110.121.96" + }, + { + "nodeIP": "fd7a:115c:a1e0::1737:7960" + } + ], + "sshUsers": { + "root": "" + }, "action": { "accept": true, "allowAgentForwarding": true, @@ -105,8 +187,17 @@ } }, { - "principals": [{ "nodeIP": "100.103.90.82" }, { "nodeIP": "fd7a:115c:a1e0::9e37:5a52" }], - "sshUsers": { "root": "" }, + "principals": [ + { + "nodeIP": "100.103.90.82" + }, + { + "nodeIP": "fd7a:115c:a1e0::9e37:5a52" + } + ], + "sshUsers": { + "root": "" + }, "action": { "accept": true, "allowAgentForwarding": true, @@ -115,8 +206,17 @@ } }, { - "principals": [{ "nodeIP": "100.103.90.82" }, { "nodeIP": "fd7a:115c:a1e0::9e37:5a52" }], - "sshUsers": { "monitorpasskeykradalby": "monitorpasskeykradalby" }, + "principals": [ + { + "nodeIP": "100.103.90.82" + }, + { + "nodeIP": "fd7a:115c:a1e0::9e37:5a52" + } + ], + "sshUsers": { + "monitorpasskeykradalby": "monitorpasskeykradalby" + }, "action": { "accept": true, "allowAgentForwarding": true, @@ -126,6 +226,8 @@ } ] }, - "tagged-prod": { "rules": [] } + "tagged-prod": { + "rules": [] + } } } diff --git a/hscontrol/policy/v2/testdata/ssh_results/SSH-D3.hujson b/hscontrol/policy/v2/testdata/ssh_results/SSH-D3.hujson index 890544c94..e54ec97d3 100644 --- a/hscontrol/policy/v2/testdata/ssh_results/SSH-D3.hujson +++ b/hscontrol/policy/v2/testdata/ssh_results/SSH-D3.hujson @@ -5,16 +5,36 @@ // Expected: SSH rules on 4 of 5 nodes { "test_id": "SSH-D3", - "policy_file": "ssh_policies/ssh_d3.json", "ssh_section": [ - { "action": "accept", "src": ["autogroup:member"], "dst": ["tag:server"], "users": ["localpart:*@passkey", "root"] } + { + "action": "accept", + "src": [ + "autogroup:member" + ], + "dst": [ + "tag:server" + ], + "users": [ + "localpart:*@passkey", + "root" + ] + } ], "nodes": { "user1": { "rules": [ { - "principals": [{ "nodeIP": "100.90.199.68" }, { "nodeIP": "fd7a:115c:a1e0::2d01:c747" }], - "sshUsers": { "root": "root" }, + "principals": [ + { + "nodeIP": "100.90.199.68" + }, + { + "nodeIP": "fd7a:115c:a1e0::2d01:c747" + } + ], + "sshUsers": { + "root": "root" + }, "action": { "accept": true, "allowAgentForwarding": true, @@ -23,8 +43,17 @@ } }, { - "principals": [{ "nodeIP": "100.90.199.68" }, { "nodeIP": "fd7a:115c:a1e0::2d01:c747" }], - "sshUsers": { "kratail2tid": "kratail2tid" }, + "principals": [ + { + "nodeIP": "100.90.199.68" + }, + { + "nodeIP": "fd7a:115c:a1e0::2d01:c747" + } + ], + "sshUsers": { + "kratail2tid": "kratail2tid" + }, "action": { "accept": true, "allowAgentForwarding": true, @@ -37,8 +66,17 @@ "user-kris": { "rules": [ { - "principals": [{ "nodeIP": "100.110.121.96" }, { "nodeIP": "fd7a:115c:a1e0::1737:7960" }], - "sshUsers": { "root": "root" }, + "principals": [ + { + "nodeIP": "100.110.121.96" + }, + { + "nodeIP": "fd7a:115c:a1e0::1737:7960" + } + ], + "sshUsers": { + "root": "root" + }, "action": { "accept": true, "allowAgentForwarding": true, @@ -51,8 +89,17 @@ "user-mon": { "rules": [ { - "principals": [{ "nodeIP": "100.103.90.82" }, { "nodeIP": "fd7a:115c:a1e0::9e37:5a52" }], - "sshUsers": { "root": "root" }, + "principals": [ + { + "nodeIP": "100.103.90.82" + }, + { + "nodeIP": "fd7a:115c:a1e0::9e37:5a52" + } + ], + "sshUsers": { + "root": "root" + }, "action": { "accept": true, "allowAgentForwarding": true, @@ -61,8 +108,17 @@ } }, { - "principals": [{ "nodeIP": "100.103.90.82" }, { "nodeIP": "fd7a:115c:a1e0::9e37:5a52" }], - "sshUsers": { "monitorpasskeykradalby": "monitorpasskeykradalby" }, + "principals": [ + { + "nodeIP": "100.103.90.82" + }, + { + "nodeIP": "fd7a:115c:a1e0::9e37:5a52" + } + ], + "sshUsers": { + "monitorpasskeykradalby": "monitorpasskeykradalby" + }, "action": { "accept": true, "allowAgentForwarding": true, @@ -75,8 +131,17 @@ "tagged-server": { "rules": [ { - "principals": [{ "nodeIP": "100.90.199.68" }, { "nodeIP": "fd7a:115c:a1e0::2d01:c747" }], - "sshUsers": { "root": "root" }, + "principals": [ + { + "nodeIP": "100.90.199.68" + }, + { + "nodeIP": "fd7a:115c:a1e0::2d01:c747" + } + ], + "sshUsers": { + "root": "root" + }, "action": { "accept": true, "allowAgentForwarding": true, @@ -85,8 +150,17 @@ } }, { - "principals": [{ "nodeIP": "100.90.199.68" }, { "nodeIP": "fd7a:115c:a1e0::2d01:c747" }], - "sshUsers": { "kratail2tid": "kratail2tid" }, + "principals": [ + { + "nodeIP": "100.90.199.68" + }, + { + "nodeIP": "fd7a:115c:a1e0::2d01:c747" + } + ], + "sshUsers": { + "kratail2tid": "kratail2tid" + }, "action": { "accept": true, "allowAgentForwarding": true, @@ -95,8 +169,17 @@ } }, { - "principals": [{ "nodeIP": "100.110.121.96" }, { "nodeIP": "fd7a:115c:a1e0::1737:7960" }], - "sshUsers": { "root": "root" }, + "principals": [ + { + "nodeIP": "100.110.121.96" + }, + { + "nodeIP": "fd7a:115c:a1e0::1737:7960" + } + ], + "sshUsers": { + "root": "root" + }, "action": { "accept": true, "allowAgentForwarding": true, @@ -105,8 +188,17 @@ } }, { - "principals": [{ "nodeIP": "100.103.90.82" }, { "nodeIP": "fd7a:115c:a1e0::9e37:5a52" }], - "sshUsers": { "root": "root" }, + "principals": [ + { + "nodeIP": "100.103.90.82" + }, + { + "nodeIP": "fd7a:115c:a1e0::9e37:5a52" + } + ], + "sshUsers": { + "root": "root" + }, "action": { "accept": true, "allowAgentForwarding": true, @@ -115,8 +207,17 @@ } }, { - "principals": [{ "nodeIP": "100.103.90.82" }, { "nodeIP": "fd7a:115c:a1e0::9e37:5a52" }], - "sshUsers": { "monitorpasskeykradalby": "monitorpasskeykradalby" }, + "principals": [ + { + "nodeIP": "100.103.90.82" + }, + { + "nodeIP": "fd7a:115c:a1e0::9e37:5a52" + } + ], + "sshUsers": { + "monitorpasskeykradalby": "monitorpasskeykradalby" + }, "action": { "accept": true, "allowAgentForwarding": true, @@ -126,6 +227,8 @@ } ] }, - "tagged-prod": { "rules": [] } + "tagged-prod": { + "rules": [] + } } } diff --git a/hscontrol/policy/v2/testdata/ssh_results/SSH-D4.hujson b/hscontrol/policy/v2/testdata/ssh_results/SSH-D4.hujson index 34e072df3..c0cbf9358 100644 --- a/hscontrol/policy/v2/testdata/ssh_results/SSH-D4.hujson +++ b/hscontrol/policy/v2/testdata/ssh_results/SSH-D4.hujson @@ -5,21 +5,37 @@ // Expected: SSH rules on 4 of 5 nodes { "test_id": "SSH-D4", - "policy_file": "ssh_policies/ssh_d4.json", "ssh_section": [ { "action": "accept", - "src": ["autogroup:member"], - "dst": ["tag:server"], - "users": ["localpart:*@passkey", "autogroup:nonroot"] + "src": [ + "autogroup:member" + ], + "dst": [ + "tag:server" + ], + "users": [ + "localpart:*@passkey", + "autogroup:nonroot" + ] } ], "nodes": { "user1": { "rules": [ { - "principals": [{ "nodeIP": "100.90.199.68" }, { "nodeIP": "fd7a:115c:a1e0::2d01:c747" }], - "sshUsers": { "*": "=", "root": "" }, + "principals": [ + { + "nodeIP": "100.90.199.68" + }, + { + "nodeIP": "fd7a:115c:a1e0::2d01:c747" + } + ], + "sshUsers": { + "*": "=", + "root": "" + }, "action": { "accept": true, "allowAgentForwarding": true, @@ -28,8 +44,17 @@ } }, { - "principals": [{ "nodeIP": "100.90.199.68" }, { "nodeIP": "fd7a:115c:a1e0::2d01:c747" }], - "sshUsers": { "kratail2tid": "kratail2tid" }, + "principals": [ + { + "nodeIP": "100.90.199.68" + }, + { + "nodeIP": "fd7a:115c:a1e0::2d01:c747" + } + ], + "sshUsers": { + "kratail2tid": "kratail2tid" + }, "action": { "accept": true, "allowAgentForwarding": true, @@ -42,8 +67,18 @@ "user-kris": { "rules": [ { - "principals": [{ "nodeIP": "100.110.121.96" }, { "nodeIP": "fd7a:115c:a1e0::1737:7960" }], - "sshUsers": { "*": "=", "root": "" }, + "principals": [ + { + "nodeIP": "100.110.121.96" + }, + { + "nodeIP": "fd7a:115c:a1e0::1737:7960" + } + ], + "sshUsers": { + "*": "=", + "root": "" + }, "action": { "accept": true, "allowAgentForwarding": true, @@ -56,8 +91,18 @@ "user-mon": { "rules": [ { - "principals": [{ "nodeIP": "100.103.90.82" }, { "nodeIP": "fd7a:115c:a1e0::9e37:5a52" }], - "sshUsers": { "*": "=", "root": "" }, + "principals": [ + { + "nodeIP": "100.103.90.82" + }, + { + "nodeIP": "fd7a:115c:a1e0::9e37:5a52" + } + ], + "sshUsers": { + "*": "=", + "root": "" + }, "action": { "accept": true, "allowAgentForwarding": true, @@ -66,8 +111,17 @@ } }, { - "principals": [{ "nodeIP": "100.103.90.82" }, { "nodeIP": "fd7a:115c:a1e0::9e37:5a52" }], - "sshUsers": { "monitorpasskeykradalby": "monitorpasskeykradalby" }, + "principals": [ + { + "nodeIP": "100.103.90.82" + }, + { + "nodeIP": "fd7a:115c:a1e0::9e37:5a52" + } + ], + "sshUsers": { + "monitorpasskeykradalby": "monitorpasskeykradalby" + }, "action": { "accept": true, "allowAgentForwarding": true, @@ -80,8 +134,18 @@ "tagged-server": { "rules": [ { - "principals": [{ "nodeIP": "100.90.199.68" }, { "nodeIP": "fd7a:115c:a1e0::2d01:c747" }], - "sshUsers": { "*": "=", "root": "" }, + "principals": [ + { + "nodeIP": "100.90.199.68" + }, + { + "nodeIP": "fd7a:115c:a1e0::2d01:c747" + } + ], + "sshUsers": { + "*": "=", + "root": "" + }, "action": { "accept": true, "allowAgentForwarding": true, @@ -90,8 +154,17 @@ } }, { - "principals": [{ "nodeIP": "100.90.199.68" }, { "nodeIP": "fd7a:115c:a1e0::2d01:c747" }], - "sshUsers": { "kratail2tid": "kratail2tid" }, + "principals": [ + { + "nodeIP": "100.90.199.68" + }, + { + "nodeIP": "fd7a:115c:a1e0::2d01:c747" + } + ], + "sshUsers": { + "kratail2tid": "kratail2tid" + }, "action": { "accept": true, "allowAgentForwarding": true, @@ -100,8 +173,18 @@ } }, { - "principals": [{ "nodeIP": "100.110.121.96" }, { "nodeIP": "fd7a:115c:a1e0::1737:7960" }], - "sshUsers": { "*": "=", "root": "" }, + "principals": [ + { + "nodeIP": "100.110.121.96" + }, + { + "nodeIP": "fd7a:115c:a1e0::1737:7960" + } + ], + "sshUsers": { + "*": "=", + "root": "" + }, "action": { "accept": true, "allowAgentForwarding": true, @@ -110,8 +193,18 @@ } }, { - "principals": [{ "nodeIP": "100.103.90.82" }, { "nodeIP": "fd7a:115c:a1e0::9e37:5a52" }], - "sshUsers": { "*": "=", "root": "" }, + "principals": [ + { + "nodeIP": "100.103.90.82" + }, + { + "nodeIP": "fd7a:115c:a1e0::9e37:5a52" + } + ], + "sshUsers": { + "*": "=", + "root": "" + }, "action": { "accept": true, "allowAgentForwarding": true, @@ -120,8 +213,17 @@ } }, { - "principals": [{ "nodeIP": "100.103.90.82" }, { "nodeIP": "fd7a:115c:a1e0::9e37:5a52" }], - "sshUsers": { "monitorpasskeykradalby": "monitorpasskeykradalby" }, + "principals": [ + { + "nodeIP": "100.103.90.82" + }, + { + "nodeIP": "fd7a:115c:a1e0::9e37:5a52" + } + ], + "sshUsers": { + "monitorpasskeykradalby": "monitorpasskeykradalby" + }, "action": { "accept": true, "allowAgentForwarding": true, @@ -131,6 +233,8 @@ } ] }, - "tagged-prod": { "rules": [] } + "tagged-prod": { + "rules": [] + } } } diff --git a/hscontrol/policy/v2/testdata/ssh_results/SSH-D5.hujson b/hscontrol/policy/v2/testdata/ssh_results/SSH-D5.hujson index 1f1284836..846e5e9a1 100644 --- a/hscontrol/policy/v2/testdata/ssh_results/SSH-D5.hujson +++ b/hscontrol/policy/v2/testdata/ssh_results/SSH-D5.hujson @@ -5,21 +5,38 @@ // Expected: SSH rules on 4 of 5 nodes { "test_id": "SSH-D5", - "policy_file": "ssh_policies/ssh_d5.json", "ssh_section": [ { "action": "accept", - "src": ["autogroup:member"], - "dst": ["tag:server"], - "users": ["localpart:*@passkey", "root", "autogroup:nonroot"] + "src": [ + "autogroup:member" + ], + "dst": [ + "tag:server" + ], + "users": [ + "localpart:*@passkey", + "root", + "autogroup:nonroot" + ] } ], "nodes": { "user1": { "rules": [ { - "principals": [{ "nodeIP": "100.90.199.68" }, { "nodeIP": "fd7a:115c:a1e0::2d01:c747" }], - "sshUsers": { "*": "=", "root": "root" }, + "principals": [ + { + "nodeIP": "100.90.199.68" + }, + { + "nodeIP": "fd7a:115c:a1e0::2d01:c747" + } + ], + "sshUsers": { + "*": "=", + "root": "root" + }, "action": { "accept": true, "allowAgentForwarding": true, @@ -28,8 +45,17 @@ } }, { - "principals": [{ "nodeIP": "100.90.199.68" }, { "nodeIP": "fd7a:115c:a1e0::2d01:c747" }], - "sshUsers": { "kratail2tid": "kratail2tid" }, + "principals": [ + { + "nodeIP": "100.90.199.68" + }, + { + "nodeIP": "fd7a:115c:a1e0::2d01:c747" + } + ], + "sshUsers": { + "kratail2tid": "kratail2tid" + }, "action": { "accept": true, "allowAgentForwarding": true, @@ -42,8 +68,18 @@ "user-kris": { "rules": [ { - "principals": [{ "nodeIP": "100.110.121.96" }, { "nodeIP": "fd7a:115c:a1e0::1737:7960" }], - "sshUsers": { "*": "=", "root": "root" }, + "principals": [ + { + "nodeIP": "100.110.121.96" + }, + { + "nodeIP": "fd7a:115c:a1e0::1737:7960" + } + ], + "sshUsers": { + "*": "=", + "root": "root" + }, "action": { "accept": true, "allowAgentForwarding": true, @@ -56,8 +92,18 @@ "user-mon": { "rules": [ { - "principals": [{ "nodeIP": "100.103.90.82" }, { "nodeIP": "fd7a:115c:a1e0::9e37:5a52" }], - "sshUsers": { "*": "=", "root": "root" }, + "principals": [ + { + "nodeIP": "100.103.90.82" + }, + { + "nodeIP": "fd7a:115c:a1e0::9e37:5a52" + } + ], + "sshUsers": { + "*": "=", + "root": "root" + }, "action": { "accept": true, "allowAgentForwarding": true, @@ -66,8 +112,17 @@ } }, { - "principals": [{ "nodeIP": "100.103.90.82" }, { "nodeIP": "fd7a:115c:a1e0::9e37:5a52" }], - "sshUsers": { "monitorpasskeykradalby": "monitorpasskeykradalby" }, + "principals": [ + { + "nodeIP": "100.103.90.82" + }, + { + "nodeIP": "fd7a:115c:a1e0::9e37:5a52" + } + ], + "sshUsers": { + "monitorpasskeykradalby": "monitorpasskeykradalby" + }, "action": { "accept": true, "allowAgentForwarding": true, @@ -80,8 +135,18 @@ "tagged-server": { "rules": [ { - "principals": [{ "nodeIP": "100.90.199.68" }, { "nodeIP": "fd7a:115c:a1e0::2d01:c747" }], - "sshUsers": { "*": "=", "root": "root" }, + "principals": [ + { + "nodeIP": "100.90.199.68" + }, + { + "nodeIP": "fd7a:115c:a1e0::2d01:c747" + } + ], + "sshUsers": { + "*": "=", + "root": "root" + }, "action": { "accept": true, "allowAgentForwarding": true, @@ -90,8 +155,17 @@ } }, { - "principals": [{ "nodeIP": "100.90.199.68" }, { "nodeIP": "fd7a:115c:a1e0::2d01:c747" }], - "sshUsers": { "kratail2tid": "kratail2tid" }, + "principals": [ + { + "nodeIP": "100.90.199.68" + }, + { + "nodeIP": "fd7a:115c:a1e0::2d01:c747" + } + ], + "sshUsers": { + "kratail2tid": "kratail2tid" + }, "action": { "accept": true, "allowAgentForwarding": true, @@ -100,8 +174,18 @@ } }, { - "principals": [{ "nodeIP": "100.110.121.96" }, { "nodeIP": "fd7a:115c:a1e0::1737:7960" }], - "sshUsers": { "*": "=", "root": "root" }, + "principals": [ + { + "nodeIP": "100.110.121.96" + }, + { + "nodeIP": "fd7a:115c:a1e0::1737:7960" + } + ], + "sshUsers": { + "*": "=", + "root": "root" + }, "action": { "accept": true, "allowAgentForwarding": true, @@ -110,8 +194,18 @@ } }, { - "principals": [{ "nodeIP": "100.103.90.82" }, { "nodeIP": "fd7a:115c:a1e0::9e37:5a52" }], - "sshUsers": { "*": "=", "root": "root" }, + "principals": [ + { + "nodeIP": "100.103.90.82" + }, + { + "nodeIP": "fd7a:115c:a1e0::9e37:5a52" + } + ], + "sshUsers": { + "*": "=", + "root": "root" + }, "action": { "accept": true, "allowAgentForwarding": true, @@ -120,8 +214,17 @@ } }, { - "principals": [{ "nodeIP": "100.103.90.82" }, { "nodeIP": "fd7a:115c:a1e0::9e37:5a52" }], - "sshUsers": { "monitorpasskeykradalby": "monitorpasskeykradalby" }, + "principals": [ + { + "nodeIP": "100.103.90.82" + }, + { + "nodeIP": "fd7a:115c:a1e0::9e37:5a52" + } + ], + "sshUsers": { + "monitorpasskeykradalby": "monitorpasskeykradalby" + }, "action": { "accept": true, "allowAgentForwarding": true, @@ -131,6 +234,8 @@ } ] }, - "tagged-prod": { "rules": [] } + "tagged-prod": { + "rules": [] + } } } diff --git a/hscontrol/policy/v2/testdata/ssh_results/SSH-D6.hujson b/hscontrol/policy/v2/testdata/ssh_results/SSH-D6.hujson index d744cf015..39be0be81 100644 --- a/hscontrol/policy/v2/testdata/ssh_results/SSH-D6.hujson +++ b/hscontrol/policy/v2/testdata/ssh_results/SSH-D6.hujson @@ -5,21 +5,37 @@ // Expected: SSH rules on 4 of 5 nodes { "test_id": "SSH-D6", - "policy_file": "ssh_policies/ssh_d6.json", "ssh_section": [ { "action": "accept", - "src": ["autogroup:member"], - "dst": ["tag:server"], - "users": ["localpart:*@passkey", "autogroup:nonroot"] + "src": [ + "autogroup:member" + ], + "dst": [ + "tag:server" + ], + "users": [ + "localpart:*@passkey", + "autogroup:nonroot" + ] } ], "nodes": { "user1": { "rules": [ { - "principals": [{ "nodeIP": "100.90.199.68" }, { "nodeIP": "fd7a:115c:a1e0::2d01:c747" }], - "sshUsers": { "*": "=", "root": "" }, + "principals": [ + { + "nodeIP": "100.90.199.68" + }, + { + "nodeIP": "fd7a:115c:a1e0::2d01:c747" + } + ], + "sshUsers": { + "*": "=", + "root": "" + }, "action": { "accept": true, "allowAgentForwarding": true, @@ -28,8 +44,17 @@ } }, { - "principals": [{ "nodeIP": "100.90.199.68" }, { "nodeIP": "fd7a:115c:a1e0::2d01:c747" }], - "sshUsers": { "kratail2tid": "kratail2tid" }, + "principals": [ + { + "nodeIP": "100.90.199.68" + }, + { + "nodeIP": "fd7a:115c:a1e0::2d01:c747" + } + ], + "sshUsers": { + "kratail2tid": "kratail2tid" + }, "action": { "accept": true, "allowAgentForwarding": true, @@ -42,8 +67,18 @@ "user-kris": { "rules": [ { - "principals": [{ "nodeIP": "100.110.121.96" }, { "nodeIP": "fd7a:115c:a1e0::1737:7960" }], - "sshUsers": { "*": "=", "root": "" }, + "principals": [ + { + "nodeIP": "100.110.121.96" + }, + { + "nodeIP": "fd7a:115c:a1e0::1737:7960" + } + ], + "sshUsers": { + "*": "=", + "root": "" + }, "action": { "accept": true, "allowAgentForwarding": true, @@ -56,8 +91,18 @@ "user-mon": { "rules": [ { - "principals": [{ "nodeIP": "100.103.90.82" }, { "nodeIP": "fd7a:115c:a1e0::9e37:5a52" }], - "sshUsers": { "*": "=", "root": "" }, + "principals": [ + { + "nodeIP": "100.103.90.82" + }, + { + "nodeIP": "fd7a:115c:a1e0::9e37:5a52" + } + ], + "sshUsers": { + "*": "=", + "root": "" + }, "action": { "accept": true, "allowAgentForwarding": true, @@ -66,8 +111,17 @@ } }, { - "principals": [{ "nodeIP": "100.103.90.82" }, { "nodeIP": "fd7a:115c:a1e0::9e37:5a52" }], - "sshUsers": { "monitorpasskeykradalby": "monitorpasskeykradalby" }, + "principals": [ + { + "nodeIP": "100.103.90.82" + }, + { + "nodeIP": "fd7a:115c:a1e0::9e37:5a52" + } + ], + "sshUsers": { + "monitorpasskeykradalby": "monitorpasskeykradalby" + }, "action": { "accept": true, "allowAgentForwarding": true, @@ -80,8 +134,18 @@ "tagged-server": { "rules": [ { - "principals": [{ "nodeIP": "100.90.199.68" }, { "nodeIP": "fd7a:115c:a1e0::2d01:c747" }], - "sshUsers": { "*": "=", "root": "" }, + "principals": [ + { + "nodeIP": "100.90.199.68" + }, + { + "nodeIP": "fd7a:115c:a1e0::2d01:c747" + } + ], + "sshUsers": { + "*": "=", + "root": "" + }, "action": { "accept": true, "allowAgentForwarding": true, @@ -90,8 +154,17 @@ } }, { - "principals": [{ "nodeIP": "100.90.199.68" }, { "nodeIP": "fd7a:115c:a1e0::2d01:c747" }], - "sshUsers": { "kratail2tid": "kratail2tid" }, + "principals": [ + { + "nodeIP": "100.90.199.68" + }, + { + "nodeIP": "fd7a:115c:a1e0::2d01:c747" + } + ], + "sshUsers": { + "kratail2tid": "kratail2tid" + }, "action": { "accept": true, "allowAgentForwarding": true, @@ -100,8 +173,18 @@ } }, { - "principals": [{ "nodeIP": "100.110.121.96" }, { "nodeIP": "fd7a:115c:a1e0::1737:7960" }], - "sshUsers": { "*": "=", "root": "" }, + "principals": [ + { + "nodeIP": "100.110.121.96" + }, + { + "nodeIP": "fd7a:115c:a1e0::1737:7960" + } + ], + "sshUsers": { + "*": "=", + "root": "" + }, "action": { "accept": true, "allowAgentForwarding": true, @@ -110,8 +193,18 @@ } }, { - "principals": [{ "nodeIP": "100.103.90.82" }, { "nodeIP": "fd7a:115c:a1e0::9e37:5a52" }], - "sshUsers": { "*": "=", "root": "" }, + "principals": [ + { + "nodeIP": "100.103.90.82" + }, + { + "nodeIP": "fd7a:115c:a1e0::9e37:5a52" + } + ], + "sshUsers": { + "*": "=", + "root": "" + }, "action": { "accept": true, "allowAgentForwarding": true, @@ -120,8 +213,17 @@ } }, { - "principals": [{ "nodeIP": "100.103.90.82" }, { "nodeIP": "fd7a:115c:a1e0::9e37:5a52" }], - "sshUsers": { "monitorpasskeykradalby": "monitorpasskeykradalby" }, + "principals": [ + { + "nodeIP": "100.103.90.82" + }, + { + "nodeIP": "fd7a:115c:a1e0::9e37:5a52" + } + ], + "sshUsers": { + "monitorpasskeykradalby": "monitorpasskeykradalby" + }, "action": { "accept": true, "allowAgentForwarding": true, @@ -131,6 +233,8 @@ } ] }, - "tagged-prod": { "rules": [] } + "tagged-prod": { + "rules": [] + } } } diff --git a/hscontrol/policy/v2/testdata/ssh_results/SSH-D7.hujson b/hscontrol/policy/v2/testdata/ssh_results/SSH-D7.hujson index 23f182677..edb0d6c88 100644 --- a/hscontrol/policy/v2/testdata/ssh_results/SSH-D7.hujson +++ b/hscontrol/policy/v2/testdata/ssh_results/SSH-D7.hujson @@ -5,21 +5,38 @@ // Expected: SSH rules on 4 of 5 nodes { "test_id": "SSH-D7", - "policy_file": "ssh_policies/ssh_d7.json", "ssh_section": [ { "action": "accept", - "src": ["autogroup:member"], - "dst": ["tag:server"], - "users": ["localpart:*@passkey", "root", "autogroup:nonroot"] + "src": [ + "autogroup:member" + ], + "dst": [ + "tag:server" + ], + "users": [ + "localpart:*@passkey", + "root", + "autogroup:nonroot" + ] } ], "nodes": { "user1": { "rules": [ { - "principals": [{ "nodeIP": "100.90.199.68" }, { "nodeIP": "fd7a:115c:a1e0::2d01:c747" }], - "sshUsers": { "*": "=", "root": "root" }, + "principals": [ + { + "nodeIP": "100.90.199.68" + }, + { + "nodeIP": "fd7a:115c:a1e0::2d01:c747" + } + ], + "sshUsers": { + "*": "=", + "root": "root" + }, "action": { "accept": true, "allowAgentForwarding": true, @@ -28,8 +45,17 @@ } }, { - "principals": [{ "nodeIP": "100.90.199.68" }, { "nodeIP": "fd7a:115c:a1e0::2d01:c747" }], - "sshUsers": { "kratail2tid": "kratail2tid" }, + "principals": [ + { + "nodeIP": "100.90.199.68" + }, + { + "nodeIP": "fd7a:115c:a1e0::2d01:c747" + } + ], + "sshUsers": { + "kratail2tid": "kratail2tid" + }, "action": { "accept": true, "allowAgentForwarding": true, @@ -42,8 +68,18 @@ "user-kris": { "rules": [ { - "principals": [{ "nodeIP": "100.110.121.96" }, { "nodeIP": "fd7a:115c:a1e0::1737:7960" }], - "sshUsers": { "*": "=", "root": "root" }, + "principals": [ + { + "nodeIP": "100.110.121.96" + }, + { + "nodeIP": "fd7a:115c:a1e0::1737:7960" + } + ], + "sshUsers": { + "*": "=", + "root": "root" + }, "action": { "accept": true, "allowAgentForwarding": true, @@ -56,8 +92,18 @@ "user-mon": { "rules": [ { - "principals": [{ "nodeIP": "100.103.90.82" }, { "nodeIP": "fd7a:115c:a1e0::9e37:5a52" }], - "sshUsers": { "*": "=", "root": "root" }, + "principals": [ + { + "nodeIP": "100.103.90.82" + }, + { + "nodeIP": "fd7a:115c:a1e0::9e37:5a52" + } + ], + "sshUsers": { + "*": "=", + "root": "root" + }, "action": { "accept": true, "allowAgentForwarding": true, @@ -66,8 +112,17 @@ } }, { - "principals": [{ "nodeIP": "100.103.90.82" }, { "nodeIP": "fd7a:115c:a1e0::9e37:5a52" }], - "sshUsers": { "monitorpasskeykradalby": "monitorpasskeykradalby" }, + "principals": [ + { + "nodeIP": "100.103.90.82" + }, + { + "nodeIP": "fd7a:115c:a1e0::9e37:5a52" + } + ], + "sshUsers": { + "monitorpasskeykradalby": "monitorpasskeykradalby" + }, "action": { "accept": true, "allowAgentForwarding": true, @@ -80,8 +135,18 @@ "tagged-server": { "rules": [ { - "principals": [{ "nodeIP": "100.90.199.68" }, { "nodeIP": "fd7a:115c:a1e0::2d01:c747" }], - "sshUsers": { "*": "=", "root": "root" }, + "principals": [ + { + "nodeIP": "100.90.199.68" + }, + { + "nodeIP": "fd7a:115c:a1e0::2d01:c747" + } + ], + "sshUsers": { + "*": "=", + "root": "root" + }, "action": { "accept": true, "allowAgentForwarding": true, @@ -90,8 +155,17 @@ } }, { - "principals": [{ "nodeIP": "100.90.199.68" }, { "nodeIP": "fd7a:115c:a1e0::2d01:c747" }], - "sshUsers": { "kratail2tid": "kratail2tid" }, + "principals": [ + { + "nodeIP": "100.90.199.68" + }, + { + "nodeIP": "fd7a:115c:a1e0::2d01:c747" + } + ], + "sshUsers": { + "kratail2tid": "kratail2tid" + }, "action": { "accept": true, "allowAgentForwarding": true, @@ -100,8 +174,18 @@ } }, { - "principals": [{ "nodeIP": "100.110.121.96" }, { "nodeIP": "fd7a:115c:a1e0::1737:7960" }], - "sshUsers": { "*": "=", "root": "root" }, + "principals": [ + { + "nodeIP": "100.110.121.96" + }, + { + "nodeIP": "fd7a:115c:a1e0::1737:7960" + } + ], + "sshUsers": { + "*": "=", + "root": "root" + }, "action": { "accept": true, "allowAgentForwarding": true, @@ -110,8 +194,18 @@ } }, { - "principals": [{ "nodeIP": "100.103.90.82" }, { "nodeIP": "fd7a:115c:a1e0::9e37:5a52" }], - "sshUsers": { "*": "=", "root": "root" }, + "principals": [ + { + "nodeIP": "100.103.90.82" + }, + { + "nodeIP": "fd7a:115c:a1e0::9e37:5a52" + } + ], + "sshUsers": { + "*": "=", + "root": "root" + }, "action": { "accept": true, "allowAgentForwarding": true, @@ -120,8 +214,17 @@ } }, { - "principals": [{ "nodeIP": "100.103.90.82" }, { "nodeIP": "fd7a:115c:a1e0::9e37:5a52" }], - "sshUsers": { "monitorpasskeykradalby": "monitorpasskeykradalby" }, + "principals": [ + { + "nodeIP": "100.103.90.82" + }, + { + "nodeIP": "fd7a:115c:a1e0::9e37:5a52" + } + ], + "sshUsers": { + "monitorpasskeykradalby": "monitorpasskeykradalby" + }, "action": { "accept": true, "allowAgentForwarding": true, @@ -131,6 +234,8 @@ } ] }, - "tagged-prod": { "rules": [] } + "tagged-prod": { + "rules": [] + } } } diff --git a/hscontrol/policy/v2/testdata/ssh_results/SSH-D8.hujson b/hscontrol/policy/v2/testdata/ssh_results/SSH-D8.hujson index 866b1bf2d..c5dfd4ffa 100644 --- a/hscontrol/policy/v2/testdata/ssh_results/SSH-D8.hujson +++ b/hscontrol/policy/v2/testdata/ssh_results/SSH-D8.hujson @@ -5,16 +5,35 @@ // Expected: SSH rules on 3 of 5 nodes { "test_id": "SSH-D8", - "policy_file": "ssh_policies/ssh_d8.json", "ssh_section": [ - { "action": "accept", "src": ["autogroup:member"], "dst": ["autogroup:self"], "users": ["localpart:*@passkey"] } + { + "action": "accept", + "src": [ + "autogroup:member" + ], + "dst": [ + "autogroup:self" + ], + "users": [ + "localpart:*@passkey" + ] + } ], "nodes": { "user1": { "rules": [ { - "principals": [{ "nodeIP": "100.90.199.68" }, { "nodeIP": "fd7a:115c:a1e0::2d01:c747" }], - "sshUsers": { "root": "" }, + "principals": [ + { + "nodeIP": "100.90.199.68" + }, + { + "nodeIP": "fd7a:115c:a1e0::2d01:c747" + } + ], + "sshUsers": { + "root": "" + }, "action": { "accept": true, "allowAgentForwarding": true, @@ -23,8 +42,17 @@ } }, { - "principals": [{ "nodeIP": "100.90.199.68" }, { "nodeIP": "fd7a:115c:a1e0::2d01:c747" }], - "sshUsers": { "kratail2tid": "kratail2tid" }, + "principals": [ + { + "nodeIP": "100.90.199.68" + }, + { + "nodeIP": "fd7a:115c:a1e0::2d01:c747" + } + ], + "sshUsers": { + "kratail2tid": "kratail2tid" + }, "action": { "accept": true, "allowAgentForwarding": true, @@ -37,8 +65,17 @@ "user-kris": { "rules": [ { - "principals": [{ "nodeIP": "100.110.121.96" }, { "nodeIP": "fd7a:115c:a1e0::1737:7960" }], - "sshUsers": { "root": "" }, + "principals": [ + { + "nodeIP": "100.110.121.96" + }, + { + "nodeIP": "fd7a:115c:a1e0::1737:7960" + } + ], + "sshUsers": { + "root": "" + }, "action": { "accept": true, "allowAgentForwarding": true, @@ -51,8 +88,17 @@ "user-mon": { "rules": [ { - "principals": [{ "nodeIP": "100.103.90.82" }, { "nodeIP": "fd7a:115c:a1e0::9e37:5a52" }], - "sshUsers": { "root": "" }, + "principals": [ + { + "nodeIP": "100.103.90.82" + }, + { + "nodeIP": "fd7a:115c:a1e0::9e37:5a52" + } + ], + "sshUsers": { + "root": "" + }, "action": { "accept": true, "allowAgentForwarding": true, @@ -61,8 +107,17 @@ } }, { - "principals": [{ "nodeIP": "100.103.90.82" }, { "nodeIP": "fd7a:115c:a1e0::9e37:5a52" }], - "sshUsers": { "monitorpasskeykradalby": "monitorpasskeykradalby" }, + "principals": [ + { + "nodeIP": "100.103.90.82" + }, + { + "nodeIP": "fd7a:115c:a1e0::9e37:5a52" + } + ], + "sshUsers": { + "monitorpasskeykradalby": "monitorpasskeykradalby" + }, "action": { "accept": true, "allowAgentForwarding": true, @@ -72,7 +127,11 @@ } ] }, - "tagged-server": { "rules": [] }, - "tagged-prod": { "rules": [] } + "tagged-server": { + "rules": [] + }, + "tagged-prod": { + "rules": [] + } } } diff --git a/hscontrol/policy/v2/testdata/ssh_results/SSH-D9.hujson b/hscontrol/policy/v2/testdata/ssh_results/SSH-D9.hujson index 0144c5464..4fbcbce76 100644 --- a/hscontrol/policy/v2/testdata/ssh_results/SSH-D9.hujson +++ b/hscontrol/policy/v2/testdata/ssh_results/SSH-D9.hujson @@ -5,21 +5,36 @@ // Expected: SSH rules on 3 of 5 nodes { "test_id": "SSH-D9", - "policy_file": "ssh_policies/ssh_d9.json", "ssh_section": [ { "action": "accept", - "src": ["autogroup:member"], - "dst": ["autogroup:self"], - "users": ["localpart:*@passkey", "root"] + "src": [ + "autogroup:member" + ], + "dst": [ + "autogroup:self" + ], + "users": [ + "localpart:*@passkey", + "root" + ] } ], "nodes": { "user1": { "rules": [ { - "principals": [{ "nodeIP": "100.90.199.68" }, { "nodeIP": "fd7a:115c:a1e0::2d01:c747" }], - "sshUsers": { "root": "root" }, + "principals": [ + { + "nodeIP": "100.90.199.68" + }, + { + "nodeIP": "fd7a:115c:a1e0::2d01:c747" + } + ], + "sshUsers": { + "root": "root" + }, "action": { "accept": true, "allowAgentForwarding": true, @@ -28,8 +43,17 @@ } }, { - "principals": [{ "nodeIP": "100.90.199.68" }, { "nodeIP": "fd7a:115c:a1e0::2d01:c747" }], - "sshUsers": { "kratail2tid": "kratail2tid" }, + "principals": [ + { + "nodeIP": "100.90.199.68" + }, + { + "nodeIP": "fd7a:115c:a1e0::2d01:c747" + } + ], + "sshUsers": { + "kratail2tid": "kratail2tid" + }, "action": { "accept": true, "allowAgentForwarding": true, @@ -42,8 +66,17 @@ "user-kris": { "rules": [ { - "principals": [{ "nodeIP": "100.110.121.96" }, { "nodeIP": "fd7a:115c:a1e0::1737:7960" }], - "sshUsers": { "root": "root" }, + "principals": [ + { + "nodeIP": "100.110.121.96" + }, + { + "nodeIP": "fd7a:115c:a1e0::1737:7960" + } + ], + "sshUsers": { + "root": "root" + }, "action": { "accept": true, "allowAgentForwarding": true, @@ -56,8 +89,17 @@ "user-mon": { "rules": [ { - "principals": [{ "nodeIP": "100.103.90.82" }, { "nodeIP": "fd7a:115c:a1e0::9e37:5a52" }], - "sshUsers": { "root": "root" }, + "principals": [ + { + "nodeIP": "100.103.90.82" + }, + { + "nodeIP": "fd7a:115c:a1e0::9e37:5a52" + } + ], + "sshUsers": { + "root": "root" + }, "action": { "accept": true, "allowAgentForwarding": true, @@ -66,8 +108,17 @@ } }, { - "principals": [{ "nodeIP": "100.103.90.82" }, { "nodeIP": "fd7a:115c:a1e0::9e37:5a52" }], - "sshUsers": { "monitorpasskeykradalby": "monitorpasskeykradalby" }, + "principals": [ + { + "nodeIP": "100.103.90.82" + }, + { + "nodeIP": "fd7a:115c:a1e0::9e37:5a52" + } + ], + "sshUsers": { + "monitorpasskeykradalby": "monitorpasskeykradalby" + }, "action": { "accept": true, "allowAgentForwarding": true, @@ -77,7 +128,11 @@ } ] }, - "tagged-server": { "rules": [] }, - "tagged-prod": { "rules": [] } + "tagged-server": { + "rules": [] + }, + "tagged-prod": { + "rules": [] + } } } diff --git a/hscontrol/policy/v2/testdata/ssh_results/SSH-E3.hujson b/hscontrol/policy/v2/testdata/ssh_results/SSH-E3.hujson index 9f644ef0a..e2555bf21 100644 --- a/hscontrol/policy/v2/testdata/ssh_results/SSH-E3.hujson +++ b/hscontrol/policy/v2/testdata/ssh_results/SSH-E3.hujson @@ -5,13 +5,22 @@ // Expected: No SSH rules { "test_id": "SSH-E3", - "policy_file": "ssh_policies/ssh_e3.json", "ssh_section": [], "nodes": { - "user1": { "rules": [] }, - "user-kris": { "rules": [] }, - "user-mon": { "rules": [] }, - "tagged-server": { "rules": [] }, - "tagged-prod": { "rules": [] } + "user1": { + "rules": [] + }, + "user-kris": { + "rules": [] + }, + "user-mon": { + "rules": [] + }, + "tagged-server": { + "rules": [] + }, + "tagged-prod": { + "rules": [] + } } } diff --git a/hscontrol/policy/v2/testdata/ssh_results/SSH-E4.hujson b/hscontrol/policy/v2/testdata/ssh_results/SSH-E4.hujson index d1a9279a2..387078ecf 100644 --- a/hscontrol/policy/v2/testdata/ssh_results/SSH-E4.hujson +++ b/hscontrol/policy/v2/testdata/ssh_results/SSH-E4.hujson @@ -5,13 +5,22 @@ // Expected: No SSH rules { "test_id": "SSH-E4", - "policy_file": "ssh_policies/ssh_e4.json", "ssh_section": null, "nodes": { - "user1": { "rules": [] }, - "user-kris": { "rules": [] }, - "user-mon": { "rules": [] }, - "tagged-server": { "rules": [] }, - "tagged-prod": { "rules": [] } + "user1": { + "rules": [] + }, + "user-kris": { + "rules": [] + }, + "user-mon": { + "rules": [] + }, + "tagged-server": { + "rules": [] + }, + "tagged-prod": { + "rules": [] + } } } diff --git a/hscontrol/policy/v2/testdata/ssh_results/SSH-E5.hujson b/hscontrol/policy/v2/testdata/ssh_results/SSH-E5.hujson index 469f86cce..c8c715c6f 100644 --- a/hscontrol/policy/v2/testdata/ssh_results/SSH-E5.hujson +++ b/hscontrol/policy/v2/testdata/ssh_results/SSH-E5.hujson @@ -5,17 +5,44 @@ // Expected: SSH rules on 2 of 5 nodes { "test_id": "SSH-E5", - "policy_file": "ssh_policies/ssh_e5.json", - "ssh_section": [{ "action": "accept", "src": ["tag:prod"], "dst": ["tag:server"], "users": ["localpart:*@passkey"] }], + "ssh_section": [ + { + "action": "accept", + "src": [ + "tag:prod" + ], + "dst": [ + "tag:server" + ], + "users": [ + "localpart:*@passkey" + ] + } + ], "nodes": { - "user1": { "rules": [] }, - "user-kris": { "rules": [] }, - "user-mon": { "rules": [] }, + "user1": { + "rules": [] + }, + "user-kris": { + "rules": [] + }, + "user-mon": { + "rules": [] + }, "tagged-server": { "rules": [ { - "principals": [{ "nodeIP": "100.103.8.15" }, { "nodeIP": "fd7a:115c:a1e0::5b37:80f" }], - "sshUsers": { "root": "" }, + "principals": [ + { + "nodeIP": "100.103.8.15" + }, + { + "nodeIP": "fd7a:115c:a1e0::5b37:80f" + } + ], + "sshUsers": { + "root": "" + }, "action": { "accept": true, "allowAgentForwarding": true, @@ -28,8 +55,17 @@ "tagged-prod": { "rules": [ { - "principals": [{ "nodeIP": "100.103.8.15" }, { "nodeIP": "fd7a:115c:a1e0::5b37:80f" }], - "sshUsers": { "root": "" }, + "principals": [ + { + "nodeIP": "100.103.8.15" + }, + { + "nodeIP": "fd7a:115c:a1e0::5b37:80f" + } + ], + "sshUsers": { + "root": "" + }, "action": { "accept": true, "allowAgentForwarding": true, diff --git a/hscontrol/policy/v2/testdata/ssh_results/SSH-E6.hujson b/hscontrol/policy/v2/testdata/ssh_results/SSH-E6.hujson index 733d422d8..35323b407 100644 --- a/hscontrol/policy/v2/testdata/ssh_results/SSH-E6.hujson +++ b/hscontrol/policy/v2/testdata/ssh_results/SSH-E6.hujson @@ -5,7 +5,6 @@ // Expected: SSH rules on 4 of 5 nodes { "test_id": "SSH-E6", - "policy_file": "ssh_policies/ssh_e6.json", "ssh_section": [ { "action": "check", diff --git a/hscontrol/policy/v2/testdata/ssh_results/SSH-F1.hujson b/hscontrol/policy/v2/testdata/ssh_results/SSH-F1.hujson index 5d540dfa3..264387c22 100644 --- a/hscontrol/policy/v2/testdata/ssh_results/SSH-F1.hujson +++ b/hscontrol/policy/v2/testdata/ssh_results/SSH-F1.hujson @@ -7,17 +7,47 @@ // Expected: SSH rules on 4 of 5 nodes { "test_id": "SSH-F1", - "policy_file": "ssh_policies/ssh_f1.json", "ssh_section": [ - { "action": "accept", "src": ["autogroup:member"], "dst": ["autogroup:self"], "users": ["root"] }, - { "action": "accept", "src": ["autogroup:member"], "dst": ["tag:server"], "users": ["autogroup:nonroot"] } + { + "action": "accept", + "src": [ + "autogroup:member" + ], + "dst": [ + "autogroup:self" + ], + "users": [ + "root" + ] + }, + { + "action": "accept", + "src": [ + "autogroup:member" + ], + "dst": [ + "tag:server" + ], + "users": [ + "autogroup:nonroot" + ] + } ], "nodes": { "user1": { "rules": [ { - "principals": [{ "nodeIP": "100.90.199.68" }, { "nodeIP": "fd7a:115c:a1e0::2d01:c747" }], - "sshUsers": { "root": "root" }, + "principals": [ + { + "nodeIP": "100.90.199.68" + }, + { + "nodeIP": "fd7a:115c:a1e0::2d01:c747" + } + ], + "sshUsers": { + "root": "root" + }, "action": { "accept": true, "allowAgentForwarding": true, @@ -30,8 +60,17 @@ "user-kris": { "rules": [ { - "principals": [{ "nodeIP": "100.110.121.96" }, { "nodeIP": "fd7a:115c:a1e0::1737:7960" }], - "sshUsers": { "root": "root" }, + "principals": [ + { + "nodeIP": "100.110.121.96" + }, + { + "nodeIP": "fd7a:115c:a1e0::1737:7960" + } + ], + "sshUsers": { + "root": "root" + }, "action": { "accept": true, "allowAgentForwarding": true, @@ -44,8 +83,17 @@ "user-mon": { "rules": [ { - "principals": [{ "nodeIP": "100.103.90.82" }, { "nodeIP": "fd7a:115c:a1e0::9e37:5a52" }], - "sshUsers": { "root": "root" }, + "principals": [ + { + "nodeIP": "100.103.90.82" + }, + { + "nodeIP": "fd7a:115c:a1e0::9e37:5a52" + } + ], + "sshUsers": { + "root": "root" + }, "action": { "accept": true, "allowAgentForwarding": true, @@ -59,14 +107,29 @@ "rules": [ { "principals": [ - { "nodeIP": "100.103.90.82" }, - { "nodeIP": "100.110.121.96" }, - { "nodeIP": "100.90.199.68" }, - { "nodeIP": "fd7a:115c:a1e0::1737:7960" }, - { "nodeIP": "fd7a:115c:a1e0::2d01:c747" }, - { "nodeIP": "fd7a:115c:a1e0::9e37:5a52" } + { + "nodeIP": "100.103.90.82" + }, + { + "nodeIP": "100.110.121.96" + }, + { + "nodeIP": "100.90.199.68" + }, + { + "nodeIP": "fd7a:115c:a1e0::1737:7960" + }, + { + "nodeIP": "fd7a:115c:a1e0::2d01:c747" + }, + { + "nodeIP": "fd7a:115c:a1e0::9e37:5a52" + } ], - "sshUsers": { "*": "=", "root": "" }, + "sshUsers": { + "*": "=", + "root": "" + }, "action": { "accept": true, "allowAgentForwarding": true, @@ -76,6 +139,8 @@ } ] }, - "tagged-prod": { "rules": [] } + "tagged-prod": { + "rules": [] + } } } diff --git a/hscontrol/policy/v2/testdata/ssh_results/SSH-F2.hujson b/hscontrol/policy/v2/testdata/ssh_results/SSH-F2.hujson index ad227cdcc..611ba32ef 100644 --- a/hscontrol/policy/v2/testdata/ssh_results/SSH-F2.hujson +++ b/hscontrol/policy/v2/testdata/ssh_results/SSH-F2.hujson @@ -7,7 +7,6 @@ // Expected: SSH rules on 1 of 5 nodes { "test_id": "SSH-F2", - "policy_file": "ssh_policies/ssh_f2.json", "ssh_section": [ { "action": "accept", diff --git a/hscontrol/policy/v2/testdata/ssh_results/SSH-F3.hujson b/hscontrol/policy/v2/testdata/ssh_results/SSH-F3.hujson index 12d1f748a..d561ee207 100644 --- a/hscontrol/policy/v2/testdata/ssh_results/SSH-F3.hujson +++ b/hscontrol/policy/v2/testdata/ssh_results/SSH-F3.hujson @@ -7,17 +7,47 @@ // Expected: SSH rules on 4 of 5 nodes { "test_id": "SSH-F3", - "policy_file": "ssh_policies/ssh_f3.json", "ssh_section": [ - { "action": "accept", "src": ["autogroup:member"], "dst": ["tag:server"], "users": ["localpart:*@passkey"] }, - { "action": "accept", "src": ["autogroup:member"], "dst": ["tag:server"], "users": ["root"] } + { + "action": "accept", + "src": [ + "autogroup:member" + ], + "dst": [ + "tag:server" + ], + "users": [ + "localpart:*@passkey" + ] + }, + { + "action": "accept", + "src": [ + "autogroup:member" + ], + "dst": [ + "tag:server" + ], + "users": [ + "root" + ] + } ], "nodes": { "user1": { "rules": [ { - "principals": [{ "nodeIP": "100.90.199.68" }, { "nodeIP": "fd7a:115c:a1e0::2d01:c747" }], - "sshUsers": { "root": "" }, + "principals": [ + { + "nodeIP": "100.90.199.68" + }, + { + "nodeIP": "fd7a:115c:a1e0::2d01:c747" + } + ], + "sshUsers": { + "root": "" + }, "action": { "accept": true, "allowAgentForwarding": true, @@ -26,8 +56,17 @@ } }, { - "principals": [{ "nodeIP": "100.90.199.68" }, { "nodeIP": "fd7a:115c:a1e0::2d01:c747" }], - "sshUsers": { "kratail2tid": "kratail2tid" }, + "principals": [ + { + "nodeIP": "100.90.199.68" + }, + { + "nodeIP": "fd7a:115c:a1e0::2d01:c747" + } + ], + "sshUsers": { + "kratail2tid": "kratail2tid" + }, "action": { "accept": true, "allowAgentForwarding": true, @@ -40,8 +79,17 @@ "user-kris": { "rules": [ { - "principals": [{ "nodeIP": "100.110.121.96" }, { "nodeIP": "fd7a:115c:a1e0::1737:7960" }], - "sshUsers": { "root": "" }, + "principals": [ + { + "nodeIP": "100.110.121.96" + }, + { + "nodeIP": "fd7a:115c:a1e0::1737:7960" + } + ], + "sshUsers": { + "root": "" + }, "action": { "accept": true, "allowAgentForwarding": true, @@ -54,8 +102,17 @@ "user-mon": { "rules": [ { - "principals": [{ "nodeIP": "100.103.90.82" }, { "nodeIP": "fd7a:115c:a1e0::9e37:5a52" }], - "sshUsers": { "root": "" }, + "principals": [ + { + "nodeIP": "100.103.90.82" + }, + { + "nodeIP": "fd7a:115c:a1e0::9e37:5a52" + } + ], + "sshUsers": { + "root": "" + }, "action": { "accept": true, "allowAgentForwarding": true, @@ -64,8 +121,17 @@ } }, { - "principals": [{ "nodeIP": "100.103.90.82" }, { "nodeIP": "fd7a:115c:a1e0::9e37:5a52" }], - "sshUsers": { "monitorpasskeykradalby": "monitorpasskeykradalby" }, + "principals": [ + { + "nodeIP": "100.103.90.82" + }, + { + "nodeIP": "fd7a:115c:a1e0::9e37:5a52" + } + ], + "sshUsers": { + "monitorpasskeykradalby": "monitorpasskeykradalby" + }, "action": { "accept": true, "allowAgentForwarding": true, @@ -78,48 +144,17 @@ "tagged-server": { "rules": [ { - "principals": [{ "nodeIP": "100.90.199.68" }, { "nodeIP": "fd7a:115c:a1e0::2d01:c747" }], - "sshUsers": { "root": "" }, - "action": { - "accept": true, - "allowAgentForwarding": true, - "allowLocalPortForwarding": true, - "allowRemotePortForwarding": true - } - }, - { - "principals": [{ "nodeIP": "100.90.199.68" }, { "nodeIP": "fd7a:115c:a1e0::2d01:c747" }], - "sshUsers": { "kratail2tid": "kratail2tid" }, - "action": { - "accept": true, - "allowAgentForwarding": true, - "allowLocalPortForwarding": true, - "allowRemotePortForwarding": true - } - }, - { - "principals": [{ "nodeIP": "100.110.121.96" }, { "nodeIP": "fd7a:115c:a1e0::1737:7960" }], - "sshUsers": { "root": "" }, - "action": { - "accept": true, - "allowAgentForwarding": true, - "allowLocalPortForwarding": true, - "allowRemotePortForwarding": true - } - }, - { - "principals": [{ "nodeIP": "100.103.90.82" }, { "nodeIP": "fd7a:115c:a1e0::9e37:5a52" }], - "sshUsers": { "root": "" }, - "action": { - "accept": true, - "allowAgentForwarding": true, - "allowLocalPortForwarding": true, - "allowRemotePortForwarding": true - } - }, - { - "principals": [{ "nodeIP": "100.103.90.82" }, { "nodeIP": "fd7a:115c:a1e0::9e37:5a52" }], - "sshUsers": { "monitorpasskeykradalby": "monitorpasskeykradalby" }, + "principals": [ + { + "nodeIP": "100.90.199.68" + }, + { + "nodeIP": "fd7a:115c:a1e0::2d01:c747" + } + ], + "sshUsers": { + "root": "" + }, "action": { "accept": true, "allowAgentForwarding": true, @@ -129,14 +164,104 @@ }, { "principals": [ - { "nodeIP": "100.103.90.82" }, - { "nodeIP": "100.110.121.96" }, - { "nodeIP": "100.90.199.68" }, - { "nodeIP": "fd7a:115c:a1e0::1737:7960" }, - { "nodeIP": "fd7a:115c:a1e0::2d01:c747" }, - { "nodeIP": "fd7a:115c:a1e0::9e37:5a52" } + { + "nodeIP": "100.90.199.68" + }, + { + "nodeIP": "fd7a:115c:a1e0::2d01:c747" + } ], - "sshUsers": { "root": "root" }, + "sshUsers": { + "kratail2tid": "kratail2tid" + }, + "action": { + "accept": true, + "allowAgentForwarding": true, + "allowLocalPortForwarding": true, + "allowRemotePortForwarding": true + } + }, + { + "principals": [ + { + "nodeIP": "100.110.121.96" + }, + { + "nodeIP": "fd7a:115c:a1e0::1737:7960" + } + ], + "sshUsers": { + "root": "" + }, + "action": { + "accept": true, + "allowAgentForwarding": true, + "allowLocalPortForwarding": true, + "allowRemotePortForwarding": true + } + }, + { + "principals": [ + { + "nodeIP": "100.103.90.82" + }, + { + "nodeIP": "fd7a:115c:a1e0::9e37:5a52" + } + ], + "sshUsers": { + "root": "" + }, + "action": { + "accept": true, + "allowAgentForwarding": true, + "allowLocalPortForwarding": true, + "allowRemotePortForwarding": true + } + }, + { + "principals": [ + { + "nodeIP": "100.103.90.82" + }, + { + "nodeIP": "fd7a:115c:a1e0::9e37:5a52" + } + ], + "sshUsers": { + "monitorpasskeykradalby": "monitorpasskeykradalby" + }, + "action": { + "accept": true, + "allowAgentForwarding": true, + "allowLocalPortForwarding": true, + "allowRemotePortForwarding": true + } + }, + { + "principals": [ + { + "nodeIP": "100.103.90.82" + }, + { + "nodeIP": "100.110.121.96" + }, + { + "nodeIP": "100.90.199.68" + }, + { + "nodeIP": "fd7a:115c:a1e0::1737:7960" + }, + { + "nodeIP": "fd7a:115c:a1e0::2d01:c747" + }, + { + "nodeIP": "fd7a:115c:a1e0::9e37:5a52" + } + ], + "sshUsers": { + "root": "root" + }, "action": { "accept": true, "allowAgentForwarding": true, @@ -146,6 +271,8 @@ } ] }, - "tagged-prod": { "rules": [] } + "tagged-prod": { + "rules": [] + } } } diff --git a/hscontrol/policy/v2/testdata/ssh_results/SSH-F4.hujson b/hscontrol/policy/v2/testdata/ssh_results/SSH-F4.hujson index 206392c64..407b46f85 100644 --- a/hscontrol/policy/v2/testdata/ssh_results/SSH-F4.hujson +++ b/hscontrol/policy/v2/testdata/ssh_results/SSH-F4.hujson @@ -7,17 +7,47 @@ // Expected: SSH rules on 4 of 5 nodes { "test_id": "SSH-F4", - "policy_file": "ssh_policies/ssh_f4.json", "ssh_section": [ - { "action": "accept", "src": ["autogroup:member"], "dst": ["tag:server"], "users": ["localpart:*@passkey"] }, - { "action": "accept", "src": ["autogroup:member"], "dst": ["tag:server"], "users": ["autogroup:nonroot"] } + { + "action": "accept", + "src": [ + "autogroup:member" + ], + "dst": [ + "tag:server" + ], + "users": [ + "localpart:*@passkey" + ] + }, + { + "action": "accept", + "src": [ + "autogroup:member" + ], + "dst": [ + "tag:server" + ], + "users": [ + "autogroup:nonroot" + ] + } ], "nodes": { "user1": { "rules": [ { - "principals": [{ "nodeIP": "100.90.199.68" }, { "nodeIP": "fd7a:115c:a1e0::2d01:c747" }], - "sshUsers": { "root": "" }, + "principals": [ + { + "nodeIP": "100.90.199.68" + }, + { + "nodeIP": "fd7a:115c:a1e0::2d01:c747" + } + ], + "sshUsers": { + "root": "" + }, "action": { "accept": true, "allowAgentForwarding": true, @@ -26,8 +56,17 @@ } }, { - "principals": [{ "nodeIP": "100.90.199.68" }, { "nodeIP": "fd7a:115c:a1e0::2d01:c747" }], - "sshUsers": { "kratail2tid": "kratail2tid" }, + "principals": [ + { + "nodeIP": "100.90.199.68" + }, + { + "nodeIP": "fd7a:115c:a1e0::2d01:c747" + } + ], + "sshUsers": { + "kratail2tid": "kratail2tid" + }, "action": { "accept": true, "allowAgentForwarding": true, @@ -40,8 +79,17 @@ "user-kris": { "rules": [ { - "principals": [{ "nodeIP": "100.110.121.96" }, { "nodeIP": "fd7a:115c:a1e0::1737:7960" }], - "sshUsers": { "root": "" }, + "principals": [ + { + "nodeIP": "100.110.121.96" + }, + { + "nodeIP": "fd7a:115c:a1e0::1737:7960" + } + ], + "sshUsers": { + "root": "" + }, "action": { "accept": true, "allowAgentForwarding": true, @@ -54,8 +102,17 @@ "user-mon": { "rules": [ { - "principals": [{ "nodeIP": "100.103.90.82" }, { "nodeIP": "fd7a:115c:a1e0::9e37:5a52" }], - "sshUsers": { "root": "" }, + "principals": [ + { + "nodeIP": "100.103.90.82" + }, + { + "nodeIP": "fd7a:115c:a1e0::9e37:5a52" + } + ], + "sshUsers": { + "root": "" + }, "action": { "accept": true, "allowAgentForwarding": true, @@ -64,8 +121,17 @@ } }, { - "principals": [{ "nodeIP": "100.103.90.82" }, { "nodeIP": "fd7a:115c:a1e0::9e37:5a52" }], - "sshUsers": { "monitorpasskeykradalby": "monitorpasskeykradalby" }, + "principals": [ + { + "nodeIP": "100.103.90.82" + }, + { + "nodeIP": "fd7a:115c:a1e0::9e37:5a52" + } + ], + "sshUsers": { + "monitorpasskeykradalby": "monitorpasskeykradalby" + }, "action": { "accept": true, "allowAgentForwarding": true, @@ -78,48 +144,17 @@ "tagged-server": { "rules": [ { - "principals": [{ "nodeIP": "100.90.199.68" }, { "nodeIP": "fd7a:115c:a1e0::2d01:c747" }], - "sshUsers": { "root": "" }, - "action": { - "accept": true, - "allowAgentForwarding": true, - "allowLocalPortForwarding": true, - "allowRemotePortForwarding": true - } - }, - { - "principals": [{ "nodeIP": "100.90.199.68" }, { "nodeIP": "fd7a:115c:a1e0::2d01:c747" }], - "sshUsers": { "kratail2tid": "kratail2tid" }, - "action": { - "accept": true, - "allowAgentForwarding": true, - "allowLocalPortForwarding": true, - "allowRemotePortForwarding": true - } - }, - { - "principals": [{ "nodeIP": "100.110.121.96" }, { "nodeIP": "fd7a:115c:a1e0::1737:7960" }], - "sshUsers": { "root": "" }, - "action": { - "accept": true, - "allowAgentForwarding": true, - "allowLocalPortForwarding": true, - "allowRemotePortForwarding": true - } - }, - { - "principals": [{ "nodeIP": "100.103.90.82" }, { "nodeIP": "fd7a:115c:a1e0::9e37:5a52" }], - "sshUsers": { "root": "" }, - "action": { - "accept": true, - "allowAgentForwarding": true, - "allowLocalPortForwarding": true, - "allowRemotePortForwarding": true - } - }, - { - "principals": [{ "nodeIP": "100.103.90.82" }, { "nodeIP": "fd7a:115c:a1e0::9e37:5a52" }], - "sshUsers": { "monitorpasskeykradalby": "monitorpasskeykradalby" }, + "principals": [ + { + "nodeIP": "100.90.199.68" + }, + { + "nodeIP": "fd7a:115c:a1e0::2d01:c747" + } + ], + "sshUsers": { + "root": "" + }, "action": { "accept": true, "allowAgentForwarding": true, @@ -129,14 +164,105 @@ }, { "principals": [ - { "nodeIP": "100.103.90.82" }, - { "nodeIP": "100.110.121.96" }, - { "nodeIP": "100.90.199.68" }, - { "nodeIP": "fd7a:115c:a1e0::1737:7960" }, - { "nodeIP": "fd7a:115c:a1e0::2d01:c747" }, - { "nodeIP": "fd7a:115c:a1e0::9e37:5a52" } + { + "nodeIP": "100.90.199.68" + }, + { + "nodeIP": "fd7a:115c:a1e0::2d01:c747" + } ], - "sshUsers": { "*": "=", "root": "" }, + "sshUsers": { + "kratail2tid": "kratail2tid" + }, + "action": { + "accept": true, + "allowAgentForwarding": true, + "allowLocalPortForwarding": true, + "allowRemotePortForwarding": true + } + }, + { + "principals": [ + { + "nodeIP": "100.110.121.96" + }, + { + "nodeIP": "fd7a:115c:a1e0::1737:7960" + } + ], + "sshUsers": { + "root": "" + }, + "action": { + "accept": true, + "allowAgentForwarding": true, + "allowLocalPortForwarding": true, + "allowRemotePortForwarding": true + } + }, + { + "principals": [ + { + "nodeIP": "100.103.90.82" + }, + { + "nodeIP": "fd7a:115c:a1e0::9e37:5a52" + } + ], + "sshUsers": { + "root": "" + }, + "action": { + "accept": true, + "allowAgentForwarding": true, + "allowLocalPortForwarding": true, + "allowRemotePortForwarding": true + } + }, + { + "principals": [ + { + "nodeIP": "100.103.90.82" + }, + { + "nodeIP": "fd7a:115c:a1e0::9e37:5a52" + } + ], + "sshUsers": { + "monitorpasskeykradalby": "monitorpasskeykradalby" + }, + "action": { + "accept": true, + "allowAgentForwarding": true, + "allowLocalPortForwarding": true, + "allowRemotePortForwarding": true + } + }, + { + "principals": [ + { + "nodeIP": "100.103.90.82" + }, + { + "nodeIP": "100.110.121.96" + }, + { + "nodeIP": "100.90.199.68" + }, + { + "nodeIP": "fd7a:115c:a1e0::1737:7960" + }, + { + "nodeIP": "fd7a:115c:a1e0::2d01:c747" + }, + { + "nodeIP": "fd7a:115c:a1e0::9e37:5a52" + } + ], + "sshUsers": { + "*": "=", + "root": "" + }, "action": { "accept": true, "allowAgentForwarding": true, @@ -146,6 +272,8 @@ } ] }, - "tagged-prod": { "rules": [] } + "tagged-prod": { + "rules": [] + } } } diff --git a/hscontrol/policy/v2/testdata/ssh_results/SSH-F5.hujson b/hscontrol/policy/v2/testdata/ssh_results/SSH-F5.hujson index f0dc1bfa7..a3cde17e8 100644 --- a/hscontrol/policy/v2/testdata/ssh_results/SSH-F5.hujson +++ b/hscontrol/policy/v2/testdata/ssh_results/SSH-F5.hujson @@ -7,17 +7,47 @@ // Expected: SSH rules on 4 of 5 nodes { "test_id": "SSH-F5", - "policy_file": "ssh_policies/ssh_f5.json", "ssh_section": [ - { "action": "accept", "src": ["autogroup:member"], "dst": ["autogroup:self"], "users": ["localpart:*@passkey"] }, - { "action": "accept", "src": ["autogroup:member"], "dst": ["tag:server"], "users": ["localpart:*@passkey"] } + { + "action": "accept", + "src": [ + "autogroup:member" + ], + "dst": [ + "autogroup:self" + ], + "users": [ + "localpart:*@passkey" + ] + }, + { + "action": "accept", + "src": [ + "autogroup:member" + ], + "dst": [ + "tag:server" + ], + "users": [ + "localpart:*@passkey" + ] + } ], "nodes": { "user1": { "rules": [ { - "principals": [{ "nodeIP": "100.90.199.68" }, { "nodeIP": "fd7a:115c:a1e0::2d01:c747" }], - "sshUsers": { "root": "" }, + "principals": [ + { + "nodeIP": "100.90.199.68" + }, + { + "nodeIP": "fd7a:115c:a1e0::2d01:c747" + } + ], + "sshUsers": { + "root": "" + }, "action": { "accept": true, "allowAgentForwarding": true, @@ -26,8 +56,17 @@ } }, { - "principals": [{ "nodeIP": "100.90.199.68" }, { "nodeIP": "fd7a:115c:a1e0::2d01:c747" }], - "sshUsers": { "kratail2tid": "kratail2tid" }, + "principals": [ + { + "nodeIP": "100.90.199.68" + }, + { + "nodeIP": "fd7a:115c:a1e0::2d01:c747" + } + ], + "sshUsers": { + "kratail2tid": "kratail2tid" + }, "action": { "accept": true, "allowAgentForwarding": true, @@ -36,8 +75,17 @@ } }, { - "principals": [{ "nodeIP": "100.90.199.68" }, { "nodeIP": "fd7a:115c:a1e0::2d01:c747" }], - "sshUsers": { "root": "" }, + "principals": [ + { + "nodeIP": "100.90.199.68" + }, + { + "nodeIP": "fd7a:115c:a1e0::2d01:c747" + } + ], + "sshUsers": { + "root": "" + }, "action": { "accept": true, "allowAgentForwarding": true, @@ -46,8 +94,17 @@ } }, { - "principals": [{ "nodeIP": "100.90.199.68" }, { "nodeIP": "fd7a:115c:a1e0::2d01:c747" }], - "sshUsers": { "kratail2tid": "kratail2tid" }, + "principals": [ + { + "nodeIP": "100.90.199.68" + }, + { + "nodeIP": "fd7a:115c:a1e0::2d01:c747" + } + ], + "sshUsers": { + "kratail2tid": "kratail2tid" + }, "action": { "accept": true, "allowAgentForwarding": true, @@ -60,8 +117,17 @@ "user-kris": { "rules": [ { - "principals": [{ "nodeIP": "100.110.121.96" }, { "nodeIP": "fd7a:115c:a1e0::1737:7960" }], - "sshUsers": { "root": "" }, + "principals": [ + { + "nodeIP": "100.110.121.96" + }, + { + "nodeIP": "fd7a:115c:a1e0::1737:7960" + } + ], + "sshUsers": { + "root": "" + }, "action": { "accept": true, "allowAgentForwarding": true, @@ -70,8 +136,17 @@ } }, { - "principals": [{ "nodeIP": "100.110.121.96" }, { "nodeIP": "fd7a:115c:a1e0::1737:7960" }], - "sshUsers": { "root": "" }, + "principals": [ + { + "nodeIP": "100.110.121.96" + }, + { + "nodeIP": "fd7a:115c:a1e0::1737:7960" + } + ], + "sshUsers": { + "root": "" + }, "action": { "accept": true, "allowAgentForwarding": true, @@ -84,8 +159,17 @@ "user-mon": { "rules": [ { - "principals": [{ "nodeIP": "100.103.90.82" }, { "nodeIP": "fd7a:115c:a1e0::9e37:5a52" }], - "sshUsers": { "root": "" }, + "principals": [ + { + "nodeIP": "100.103.90.82" + }, + { + "nodeIP": "fd7a:115c:a1e0::9e37:5a52" + } + ], + "sshUsers": { + "root": "" + }, "action": { "accept": true, "allowAgentForwarding": true, @@ -94,8 +178,17 @@ } }, { - "principals": [{ "nodeIP": "100.103.90.82" }, { "nodeIP": "fd7a:115c:a1e0::9e37:5a52" }], - "sshUsers": { "monitorpasskeykradalby": "monitorpasskeykradalby" }, + "principals": [ + { + "nodeIP": "100.103.90.82" + }, + { + "nodeIP": "fd7a:115c:a1e0::9e37:5a52" + } + ], + "sshUsers": { + "monitorpasskeykradalby": "monitorpasskeykradalby" + }, "action": { "accept": true, "allowAgentForwarding": true, @@ -104,8 +197,17 @@ } }, { - "principals": [{ "nodeIP": "100.103.90.82" }, { "nodeIP": "fd7a:115c:a1e0::9e37:5a52" }], - "sshUsers": { "root": "" }, + "principals": [ + { + "nodeIP": "100.103.90.82" + }, + { + "nodeIP": "fd7a:115c:a1e0::9e37:5a52" + } + ], + "sshUsers": { + "root": "" + }, "action": { "accept": true, "allowAgentForwarding": true, @@ -114,8 +216,17 @@ } }, { - "principals": [{ "nodeIP": "100.103.90.82" }, { "nodeIP": "fd7a:115c:a1e0::9e37:5a52" }], - "sshUsers": { "monitorpasskeykradalby": "monitorpasskeykradalby" }, + "principals": [ + { + "nodeIP": "100.103.90.82" + }, + { + "nodeIP": "fd7a:115c:a1e0::9e37:5a52" + } + ], + "sshUsers": { + "monitorpasskeykradalby": "monitorpasskeykradalby" + }, "action": { "accept": true, "allowAgentForwarding": true, @@ -128,8 +239,17 @@ "tagged-server": { "rules": [ { - "principals": [{ "nodeIP": "100.90.199.68" }, { "nodeIP": "fd7a:115c:a1e0::2d01:c747" }], - "sshUsers": { "root": "" }, + "principals": [ + { + "nodeIP": "100.90.199.68" + }, + { + "nodeIP": "fd7a:115c:a1e0::2d01:c747" + } + ], + "sshUsers": { + "root": "" + }, "action": { "accept": true, "allowAgentForwarding": true, @@ -138,8 +258,17 @@ } }, { - "principals": [{ "nodeIP": "100.90.199.68" }, { "nodeIP": "fd7a:115c:a1e0::2d01:c747" }], - "sshUsers": { "kratail2tid": "kratail2tid" }, + "principals": [ + { + "nodeIP": "100.90.199.68" + }, + { + "nodeIP": "fd7a:115c:a1e0::2d01:c747" + } + ], + "sshUsers": { + "kratail2tid": "kratail2tid" + }, "action": { "accept": true, "allowAgentForwarding": true, @@ -148,8 +277,17 @@ } }, { - "principals": [{ "nodeIP": "100.110.121.96" }, { "nodeIP": "fd7a:115c:a1e0::1737:7960" }], - "sshUsers": { "root": "" }, + "principals": [ + { + "nodeIP": "100.110.121.96" + }, + { + "nodeIP": "fd7a:115c:a1e0::1737:7960" + } + ], + "sshUsers": { + "root": "" + }, "action": { "accept": true, "allowAgentForwarding": true, @@ -158,8 +296,17 @@ } }, { - "principals": [{ "nodeIP": "100.103.90.82" }, { "nodeIP": "fd7a:115c:a1e0::9e37:5a52" }], - "sshUsers": { "root": "" }, + "principals": [ + { + "nodeIP": "100.103.90.82" + }, + { + "nodeIP": "fd7a:115c:a1e0::9e37:5a52" + } + ], + "sshUsers": { + "root": "" + }, "action": { "accept": true, "allowAgentForwarding": true, @@ -168,8 +315,17 @@ } }, { - "principals": [{ "nodeIP": "100.103.90.82" }, { "nodeIP": "fd7a:115c:a1e0::9e37:5a52" }], - "sshUsers": { "monitorpasskeykradalby": "monitorpasskeykradalby" }, + "principals": [ + { + "nodeIP": "100.103.90.82" + }, + { + "nodeIP": "fd7a:115c:a1e0::9e37:5a52" + } + ], + "sshUsers": { + "monitorpasskeykradalby": "monitorpasskeykradalby" + }, "action": { "accept": true, "allowAgentForwarding": true, @@ -179,6 +335,8 @@ } ] }, - "tagged-prod": { "rules": [] } + "tagged-prod": { + "rules": [] + } } } diff --git a/hscontrol/policy/v2/testdata/ssh_results/SSH-G1.hujson b/hscontrol/policy/v2/testdata/ssh_results/SSH-G1.hujson index d355fbabe..8a3b3731d 100644 --- a/hscontrol/policy/v2/testdata/ssh_results/SSH-G1.hujson +++ b/hscontrol/policy/v2/testdata/ssh_results/SSH-G1.hujson @@ -5,42 +5,75 @@ // Expected: SSH rules on 1 of 5 nodes { "test_id": "SSH-G1", - "policy_file": "ssh_policies/ssh_g1.json", "ssh_section": [ { "action": "accept", - "src": ["autogroup:member"], - "dst": ["tag:server"], - "users": ["root"], - "acceptEnv": ["GIT_EDITOR", "TERM"] + "src": [ + "autogroup:member" + ], + "dst": [ + "tag:server" + ], + "users": [ + "root" + ], + "acceptEnv": [ + "GIT_EDITOR", + "TERM" + ] } ], "nodes": { - "user1": { "rules": [] }, - "user-kris": { "rules": [] }, - "user-mon": { "rules": [] }, + "user1": { + "rules": [] + }, + "user-kris": { + "rules": [] + }, + "user-mon": { + "rules": [] + }, "tagged-server": { "rules": [ { "principals": [ - { "nodeIP": "100.103.90.82" }, - { "nodeIP": "100.110.121.96" }, - { "nodeIP": "100.90.199.68" }, - { "nodeIP": "fd7a:115c:a1e0::1737:7960" }, - { "nodeIP": "fd7a:115c:a1e0::2d01:c747" }, - { "nodeIP": "fd7a:115c:a1e0::9e37:5a52" } + { + "nodeIP": "100.103.90.82" + }, + { + "nodeIP": "100.110.121.96" + }, + { + "nodeIP": "100.90.199.68" + }, + { + "nodeIP": "fd7a:115c:a1e0::1737:7960" + }, + { + "nodeIP": "fd7a:115c:a1e0::2d01:c747" + }, + { + "nodeIP": "fd7a:115c:a1e0::9e37:5a52" + } ], - "sshUsers": { "root": "root" }, + "sshUsers": { + "root": "root" + }, "action": { "accept": true, "allowAgentForwarding": true, "allowLocalPortForwarding": true, "allowRemotePortForwarding": true }, - "acceptEnv": ["GIT_EDITOR", "TERM"] + "acceptEnv": [ + "GIT_EDITOR", + "TERM" + ] } ] }, - "tagged-prod": { "rules": [] } + "tagged-prod": { + "rules": [] + } } } diff --git a/hscontrol/policy/v2/testdata/ssh_results/SSH-G2.hujson b/hscontrol/policy/v2/testdata/ssh_results/SSH-G2.hujson index a891b8a67..2bf0f272e 100644 --- a/hscontrol/policy/v2/testdata/ssh_results/SSH-G2.hujson +++ b/hscontrol/policy/v2/testdata/ssh_results/SSH-G2.hujson @@ -5,42 +5,75 @@ // Expected: SSH rules on 1 of 5 nodes { "test_id": "SSH-G2", - "policy_file": "ssh_policies/ssh_g2.json", "ssh_section": [ { "action": "accept", - "src": ["autogroup:member"], - "dst": ["tag:server"], - "users": ["root"], - "acceptEnv": ["GIT_*", "CUSTOM_VAR_?"] + "src": [ + "autogroup:member" + ], + "dst": [ + "tag:server" + ], + "users": [ + "root" + ], + "acceptEnv": [ + "GIT_*", + "CUSTOM_VAR_?" + ] } ], "nodes": { - "user1": { "rules": [] }, - "user-kris": { "rules": [] }, - "user-mon": { "rules": [] }, + "user1": { + "rules": [] + }, + "user-kris": { + "rules": [] + }, + "user-mon": { + "rules": [] + }, "tagged-server": { "rules": [ { "principals": [ - { "nodeIP": "100.103.90.82" }, - { "nodeIP": "100.110.121.96" }, - { "nodeIP": "100.90.199.68" }, - { "nodeIP": "fd7a:115c:a1e0::1737:7960" }, - { "nodeIP": "fd7a:115c:a1e0::2d01:c747" }, - { "nodeIP": "fd7a:115c:a1e0::9e37:5a52" } + { + "nodeIP": "100.103.90.82" + }, + { + "nodeIP": "100.110.121.96" + }, + { + "nodeIP": "100.90.199.68" + }, + { + "nodeIP": "fd7a:115c:a1e0::1737:7960" + }, + { + "nodeIP": "fd7a:115c:a1e0::2d01:c747" + }, + { + "nodeIP": "fd7a:115c:a1e0::9e37:5a52" + } ], - "sshUsers": { "root": "root" }, + "sshUsers": { + "root": "root" + }, "action": { "accept": true, "allowAgentForwarding": true, "allowLocalPortForwarding": true, "allowRemotePortForwarding": true }, - "acceptEnv": ["GIT_*", "CUSTOM_VAR_?"] + "acceptEnv": [ + "GIT_*", + "CUSTOM_VAR_?" + ] } ] }, - "tagged-prod": { "rules": [] } + "tagged-prod": { + "rules": [] + } } }