Repository navigation
#8 docs: Tailscale DNS proven across a graceful reboot - #10
Merged
Merged
Conversation
….conf at creation, not each boot The 2026-10-01 reboot measured the boot path and disproved the runbook's claim that exe-init rewrites /etc/resolv.conf at boot. The packaged unit's ExecStopPost=tailscaled --cleanup restores the original on a clean stop. A hard reset skips that hook and is untested. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…-different, so the hard-reset path is stated as unknown Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…y the takeover (+1.46 s, mtime) is exact Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…its log live, for the hard-reset measurement Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
5 tasks
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Refs #8. Follows #9.
What the reboot showed
This was a graceful
sudo systemctl rebootof co-processor on 2026-10-01 at 16:41:59Z. A one-shot boot unit, since removed, timed each lookup from tailscaled's start. It would have rolled DNS back if public names had failed for 90 s.oom_score_adj -950, withCorpDNS: true.resolv.confat +1.46 s (exact, from the file's mtime), andbrokerresolved by +1.65 s. The probe polled every 0.25 s, so the lookup times are upper bounds.tests/test_tailscaled.pypasses on the node, 18 of 18, none skipped.Corrected in DEPLOYMENT.md
/etc/resolv.conf. #8 co-processor runs Tailscale --accept-dns=true; tailscaled OOM drop-in; the broker by name #9 said exe-init writes it at every boot. That isn't what the reboot showed. exe.dev wrote it at the VM's first boot: it has the same 2026-09-29 mtime as/etc/hosts, and the reboot rewrote neither file. Both already held exe.dev's content, though, so whether exe.dev rewrites a file that differs at boot is unknown.ExecStopPost=/usr/sbin/tailscaled --cleanupputs it back on a clean stop; the previous boot's journal shows the cleanup process running at shutdown. tailscaled then takes the file over again when it starts.exe.dev restart) skips the stop hook, and that what follows is untested: either tailscaled's file is still there at boot, or exe.dev rewrites it first. It also says where the probe, its unit and its log are kept, so that path can be measured the same way.Also posted to observo#631 (authorized): https://github.com/CannObserv/observo/issues/631#issuecomment-5936333096
Review
CR --fix, findings 10–12, one commit each:resolv.confat boot, and what the hard-reset path does, are now marked unknown. The reboot couldn't tell./var/backups/processor/8/.The observo#631 comment carried the same two claims and was corrected in place.
Gate
uv run pytest: 215 passed.ruff check,ruff format --checkanduv lock --lockedare clean, and the scratch Redis is clean.🤖 Generated with Claude Code