mirror of
https://github.com/juanfont/headscale.git
synced 2026-01-13 12:50:32 +01:00
[Bug] Headscale exit node won´t let me access the internet when limited to specific user #967
Closed
opened 2025-12-29 02:26:49 +01:00 by adam
·
5 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
No Label
bug
Milestone
No items
No Milestone
Projects
Clear projects
No project
Notifications
Due Date
No due date set.
Dependencies
No dependencies set.
Reference: starred/headscale#967
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 @Lodeiro0001 on GitHub (Mar 10, 2025).
Is this a support request?
Is there an existing issue for this?
Current Behavior
Hi, I´ve configured my nodes to be only accessible by their respective users (I don´t want every user to be able to see other users´nodes).
But after doing so, I'm still able to see my exit node, but I can´t access the internet through them
Expected Behavior
Each user should only be able to see their nodes, and they should be able to access the internet when they select their respective exit node
Steps To Reproduce
Limit each user to only see their nodes and not every users´. My current ACL config bellow.
After doing this, users can only see their respective nodes, but cannot connect to the internet (exit nodes are visible and I can select them as exit nodes, but I´m not able to access the internet)
Environment
Runtime environment
Anything else?
My current ACL config is as follows:
@nblock commented on GitHub (Mar 15, 2025):
Your issue has a few interestings topics, let's discuss it one after the other.
Yes, your ACL does not have the required
autogroup:internetrule for exit nodes. Your nodes will be able to use an exit node as soon as you add this block to your ACL configuration:To me, this indicates a setup where each user has their individual nodes (laptops, phones, …) and a dedicated exit node that should only be used by the respective user. This design is problematic for two reasons:
user1is able to for example login to the exit node via SSH. This is probably not what you want.Here is an alternative approach (tested with Debian 12, Tailscale 1.80.3 and Headscale 0.25.1):
n1,n2infrahas exit nodes assigned to them:n3With this minimal ACL:
you get:
user1can communicate freely with each othern1andn2can usen3as exit noden1andn2can't use any services offered byn3. They can pingn3and access the Internet throughn3, but nothing more.Does this provide a suitable solution for your use case?
@Lodeiro0001 commented on GitHub (Mar 15, 2025):
Thank you for your help. Unfortunately, what you mentioned does not solve my use case. Let me detail my scenario and current configuration:
As it is reflected, I have two users, each with two nodes. Let's suppose that n1 is a smartphone and n2 is server 1, all belonging to user1. We also consider that n3 is another smartphone and n4 is server 2, These last two belong to user2.
With my initial ACL, user1 could only see their own server 1 and smartphone. User2 could also only see their own smartphone and server 2. That's what I want. The problem is that there was no internet access when selecting the exit node.
Now I’ve tried modifying the ACLs with what you mentioned, and it looks like this:
What happens now:
User1 can see n2, which is server 1, and use it as an exit node, with the internet connection working. But they can also see n4, which belongs to user2, and they can use it as an exit node (server 2). Similarly, user2 can use n4 as an exit node, but they can also use n2, which belongs to the other user.
What I need:
User1 should only be able to see and use n2 as the exit node, while user2 should only be able to see and use n4 as the exit node.
@nblock commented on GitHub (Mar 15, 2025):
Yes, this is expected. A exit node is visible to all users of the network.
AFAIK, this use case is currently not supported with Headscale, as it requires support for Grant and via. See also:
@Lodeiro0001 commented on GitHub (Mar 15, 2025):
Ok, thank you very much for your help.
@kradalby commented on GitHub (May 21, 2025):
Since this ended up being another feature request for
viasupport, I will close this a s a duplicate of https://github.com/juanfont/headscale/issues/2409