mirror of
https://github.com/juanfont/headscale.git
synced 2026-01-11 20:00:28 +01:00
[Bug] autogroup:self will cover other ACL rules #1127
Closed
opened 2025-12-29 02:28:25 +01:00 by adam
·
14 comments
No Branch/Tag Specified
main
update_flake_lock_action
gh-pages
kradalby/release-v0.27.2
dependabot/go_modules/golang.org/x/crypto-0.45.0
dependabot/go_modules/github.com/opencontainers/runc-1.3.3
copilot/investigate-headscale-issue-2788
copilot/investigate-visibility-issue-2788
copilot/investigate-issue-2833
copilot/debug-issue-2846
copilot/fix-issue-2847
dependabot/go_modules/github.com/go-viper/mapstructure/v2-2.4.0
dependabot/go_modules/github.com/docker/docker-28.3.3incompatible
kradalby/cli-experiement3
doc/0.26.1
doc/0.25.1
doc/0.25.0
doc/0.24.3
doc/0.24.2
doc/0.24.1
doc/0.24.0
kradalby/build-docker-on-pr
topic/docu-versioning
topic/docker-kos
juanfont/fix-crash-node-id
juanfont/better-disclaimer
update-contributors
topic/prettier
revert-1893-add-test-stage-to-docs
add-test-stage-to-docs
remove-node-check-interval
fix-empty-prefix
fix-ephemeral-reusable
bug_report-debuginfo
autogroups
logs-to-stderr
revert-1414-topic/fix_unix_socket
rename-machine-node
port-embedded-derp-tests-v2
port-derp-tests
duplicate-word-linter
update-tailscale-1.36
warn-against-apache
ko-fi-link
more-acl-tests
fix-typo-standalone
parallel-nolint
tparallel-fix
rerouting
ssh-changelog-docs
oidc-cleanup
web-auth-flow-tests
kradalby-gh-runner
fix-proto-lint
remove-funding-links
go-1.19
enable-1.30-in-tests
0.16.x
cosmetic-changes-integration
tmp-fix-integration-docker
fix-integration-docker
configurable-update-interval
show-nodes-online
hs2021
acl-syntax-fixes
ts2021-implementation
fix-spurious-updates
unstable-integration-tests
mandatory-stun
embedded-derp
prtemplate-fix
v0.28.0-beta.1
v0.27.2-rc.1
v0.27.1
v0.27.0
v0.27.0-beta.2
v0.27.0-beta.1
v0.26.1
v0.26.0
v0.26.0-beta.2
v0.26.0-beta.1
v0.25.1
v0.25.0
v0.25.0-beta.2
v0.24.3
v0.25.0-beta.1
v0.24.2
v0.24.1
v0.24.0
v0.24.0-beta.2
v0.24.0-beta.1
v0.23.0
v0.23.0-rc.1
v0.23.0-beta.5
v0.23.0-beta.4
v0.23.0-beta3
v0.23.0-beta2
v0.23.0-beta1
v0.23.0-alpha12
v0.23.0-alpha11
v0.23.0-alpha10
v0.23.0-alpha9
v0.23.0-alpha8
v0.23.0-alpha7
v0.23.0-alpha6
v0.23.0-alpha5
v0.23.0-alpha4
v0.23.0-alpha4-docker-ko-test9
v0.23.0-alpha4-docker-ko-test8
v0.23.0-alpha4-docker-ko-test7
v0.23.0-alpha4-docker-ko-test6
v0.23.0-alpha4-docker-ko-test5
v0.23.0-alpha-docker-release-test-debug2
v0.23.0-alpha-docker-release-test-debug
v0.23.0-alpha4-docker-ko-test4
v0.23.0-alpha4-docker-ko-test3
v0.23.0-alpha4-docker-ko-test2
v0.23.0-alpha4-docker-ko-test
v0.23.0-alpha3
v0.23.0-alpha2
v0.23.0-alpha1
v0.22.3
v0.22.2
v0.23.0-alpha-docker-release-test
v0.22.1
v0.22.0
v0.22.0-alpha3
v0.22.0-alpha2
v0.22.0-alpha1
v0.22.0-nfpmtest
v0.21.0
v0.20.0
v0.19.0
v0.19.0-beta2
v0.19.0-beta1
v0.18.0
v0.18.0-beta4
v0.18.0-beta3
v0.18.0-beta2
v0.18.0-beta1
v0.17.1
v0.17.0
v0.17.0-beta5
v0.17.0-beta4
v0.17.0-beta3
v0.17.0-beta2
v0.17.0-beta1
v0.17.0-alpha4
v0.17.0-alpha3
v0.17.0-alpha2
v0.17.0-alpha1
v0.16.4
v0.16.3
v0.16.2
v0.16.1
v0.16.0
v0.16.0-beta7
v0.16.0-beta6
v0.16.0-beta5
v0.16.0-beta4
v0.16.0-beta3
v0.16.0-beta2
v0.16.0-beta1
v0.15.0
v0.15.0-beta6
v0.15.0-beta5
v0.15.0-beta4
v0.15.0-beta3
v0.15.0-beta2
v0.15.0-beta1
v0.14.0
v0.14.0-beta2
v0.14.0-beta1
v0.13.0
v0.13.0-beta3
v0.13.0-beta2
v0.13.0-beta1
upstream/v0.12.4
v0.12.4
v0.12.3
v0.12.2
v0.12.2-beta1
v0.12.1
v0.12.0-beta2
v0.12.0-beta1
v0.11.0
v0.10.8
v0.10.7
v0.10.6
v0.10.5
v0.10.4
v0.10.3
v0.10.2
v0.10.1
v0.10.0
v0.9.3
v0.9.2
v0.9.1
v0.9.0
v0.8.1
v0.8.0
v0.7.1
v0.7.0
v0.6.1
v0.6.0
v0.5.2
v0.5.1
v0.5.0
v0.4.0
v0.3.6
v0.3.5
v0.3.4
v0.3.3
v0.3.2
v0.3.1
v0.3.0
v0.2.2
v0.2.1
v0.2.0
v0.1.1
v0.1.0
Labels
Clear labels
CLI
DERP
DNS
Nix
OIDC
SSH
bug
database
documentation
duplicate
enhancement
faq
good first issue
grants
help wanted
might-come
needs design doc
needs investigation
no-stale-bot
out of scope
performance
policy 📝
pull-request
question
regression
routes
stale
tags
tailscale-feature-gap
well described ❤️
wontfix
Mirrored from GitHub Pull Request
Milestone
No items
No Milestone
Projects
Clear projects
No project
Notifications
Due Date
No due date set.
Dependencies
No dependencies set.
Reference: starred/headscale#1127
Reference in New Issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Originally created by @hanzec on GitHub (Oct 30, 2025).
Is this a support request?
Is there an existing issue for this?
Current Behavior
When following ACL rules applied
running
tailscale statuson nodes register by user in group:home only return current user's node.Expected Behavior
running
tailscale statusshould return following nodes:Steps To Reproduce
inserting above to ACL Rules,
tailscale statusonly return current user's node.removing autogroup rules,
tailscale statusreturn nodes with tag:routerEnvironment
Runtime environment
Debug information
full configuration log:
@vdovhanych commented on GitHub (Oct 30, 2025):
I just tested this with a quick test file i wrote with help of Cursor and i can't seem to replicate this issue in the tests, i used the exact acl you provided for the test and this was the outcome.
Test Configuration
ACL allows:
Results
@Codelica commented on GitHub (Oct 30, 2025):
I'm seeing something similar which is 100% reproducible for me when
autogroup:member/selfis used in an ACL. This may get a little long but take this scenario:A test user:
And three nodes:
Two personal untagged nodes owned by "user@domain.com":
One server node tagged with "server" not owned by "user@domain.com":
Then start with an ACL like:
Restart Headscale (to work around the tagged ACL not getting picked up until a restart).
Then connect all three nodes. "personal1" can
tailscale pingboth "personal2" and "tagged-server" as expected.This is also stable between ACL updates (that don't include any autogroup:member/self)
Now add and apply an autogroup:member/self rule to the ACL like:
tailscale ping"personal2" but can no longer reach "tagged-server".The only way for it to access "tagged-server" again is to either disconnect/reconnect Tailscale on "personal1" or remove the autogroup:member/self rule from the ACL.
If Tailscale on "personal1" is disconnected/reconnected (with the autogroup rule still in place) it will be able to reach "tagged-server" until any sort of ACL update happens -- even just saving the ACL with no changes at all.
I know that's confusing, but if there are questions ask away.
@hanzec commented on GitHub (Oct 31, 2025):
Is there any other information I could provide to help identify this potential bug?
right now I have four users:
and following nodes:
router-a has 192.168.2.0/24 routing, and its tag is added by head scale command line
@vdovhanych commented on GitHub (Oct 31, 2025):
Ok i can replicate it now, i think i know what is the issue i'll try to create PR with a fix.
@Codelica commented on GitHub (Oct 31, 2025):
Great! If a dev Docker image can be built with the change I'd be glad to test it. 👍
@nblock commented on GitHub (Nov 2, 2025):
Fixed in
af2de35b6c@Codelica commented on GitHub (Nov 11, 2025):
I'm afraid I'm still seeing this behavior in 0.27.1. Basically once there is a autogroup:member/self rule in the ACL any updates to the ACL will cause connected nodes to not be able to reach any non-personal nodes until they disconnect and reconnect. (ie.
tailscale ping some-serverwon't work on acl update until Tailscale client is restarted)@nblock commented on GitHub (Nov 12, 2025):
Could you please provide all the required details to reproduce it?
@vdovhanych commented on GitHub (Nov 12, 2025):
That looks to be a different issue. It will likely be related to cache clearing, as using autogroup:self results in a different structure, which differs somewhat from the rest of the policy caching clearing. Is the original issue resolved for you? Meaning, if all nodes are connected, you have the autogroup:self in the ACLS. Do you see the nodes, and can you communicate between them as expected? Besides the issue you describe here.
@Codelica commented on GitHub (Nov 12, 2025):
Sorry for the delay, have to help with an urgent issue today but will respond later with detailed example.
But yes, it's only when an ACL update is pushed after
autogroup:member/selfexists in the ACL. If there is noautogroup:member/selfin the ACL you can modify the ACL without issue as expected. Onceautogroup:member/selfis in the ACL any future ACL changes/updates (even just updating ACL with no functional changes) causes connected clients who could normally communicate via rules outside ofautogroup:member/selfnot to be able to until they restart Tailscale. They can see each other viatailscale status, but can'ttailscale pingeach other.@vdovhanych commented on GitHub (Nov 12, 2025):
I have a potential fix for this, it should hopefully resolve it.
@kradalby commented on GitHub (Nov 30, 2025):
I've made a rc.1 release for 0.27.2 with fixes, would be great if you can test this.
@Codelica commented on GitHub (Dec 1, 2025):
Seems to be working for me on my personal system. 👍 Won't be able to try it on our (larger) company system for a few days.
@Codelica commented on GitHub (Dec 5, 2025):
Unfortunately I won't be able to update our larger install this week. Our salespeople are to blame ;) But it's been working well on my personal system where I've made several acl changes.