Verify kai-server k3s API is locked to the tailnet - deny vs dial #167
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
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?
Question
Is the kai-server k3s Kubernetes API (
:6443) actually locked to the tailnet - i.e. does it deny connections originating outside Tailscale - or is it merely dialed over the tailnet by clients while still accepting connections from the LAN/WAN?Why the kubeconfig can't answer this
A kubeconfig is client-side only. It carries the
server:URL, the CA bundle (to verify the server), and client creds. None of that enforces a network restriction. A tailnetserver:URL (e.g.https://100.69.164.66:6443) constrains the client's route, not the cluster's accept policy. The CA cert in the kubeconfig also does not reveal the serving cert's SANs. So the lock question has to be answered from server-side config on kai-server.What to check on kai-server
--bind-address,--advertise-address,--node-ip. Stock k3s binds0.0.0.0:6443, which is not tailnet-locked on its own.:6443restricted to the tailscale interface (tailscale0) or the100.64.0.0/10CGNAT range, or is it open on the LAN/WAN?:6443?:6443reachable from a LAN host or via the public IP / any NAT port-forward? (the actual test of "locked or not")--tls-sanlist (informational - tells you which addresses the serving cert presents, not what is accepted).Acceptance
Context
Came up while wiring a local
kai-serverkubeconfig context on the Windows tower. Tailnet address resolved from SSM/coilysiren/kai-server/tailnet-ip.