2025-05-09
Back | Home |
Finally got around to creating a journaling tool for these shorter blurbs. Nothing fancy, just a shell script and a template html file
Handy NetworkManager dispatcher.d script to only start tailscale when connecting to an untrusted network
#!/usr/bin/env bash # # /etc/NetworkManager/dispatcher.d/10-tailscale.sh # Runs `tailscale up` on untrusted networks, and `tailscale down` when disconnecting # if tailscale isn't already down. # List your trusted connections here (SSID or NM connection name) TRUSTED=("Home" "Work") INTERFACE="$1" ACTION="$2" # syslog identifier IDENTIFIER="tailscale-dispatcher" # Only care about connect/disconnect events: if [[ "$ACTION" != "up" && "$ACTION" != "down" ]]; then exit 0 fi # Function to check if $CONNECTION_ID is in the TRUSTED list is_trusted() { for net in "${TRUSTED[@]}"; do [[ "$CONNECTION_ID" == "$net" ]] && return 0 done return 1 } case "$ACTION" in up) # if this connection is NOT trusted, bring tailscale up if ! is_trusted; then logger -t "${IDENTIFIER}" "Untrusted network '$CONNECTION_ID' on $INTERFACE → tailscale up" tailscale up exit 0 fi logger -t "${IDENTIFIER}" "Connected to trusted network '$CONNECTION_ID'" ;; down) # only tear down if tailscale status indicates it's still up/failing if tailscale status &>/dev/null; then logger -t tailscale-dispatcher "Disconnect on $INTERFACE; tailscale status failed → tailscale down" tailscale down exit 0 fi logger -t "${IDENTIFIER}" "VPN not active on disconnect from '$CONNECTION_ID'" ;; esac exit 0