Rewrite as bash script with ipify verification

Replace Python implementation with simpler bash script that:
- Uses tailscale set --exit-node instead of tailscale down/up
- Verifies IP change via api.ipify.org before and after switching
- Shows clear status with public IP
This commit is contained in:
Eddy 2026-05-16 10:33:53 +02:00
commit c58e5f8655
2 changed files with 125 additions and 235 deletions

View file

@ -1,60 +1,55 @@
# Tailscale-Mullvad
> 🤖 Gevibecode met **OpenCode 1.14.50** en **Deepseek v4 Pro**
CLI-tool om Mullvad exit nodes te gebruiken via Tailscale op macOS en Linux.
## Wat het doet
Schakelt Mullvad exit nodes in en uit via de Tailscale CLI. Al het internetverkeer loopt dan via een Mullvad VPN-server, terwijl Tailscale-peers direct bereikbaar blijven. Toont voor en na activatie het externe IP-adres.
Zoekt een Mullvad exit node op basis van stad/land/hostname, activeert deze via
`tailscale set --exit-node=...` en verifieert met een IP-check via api.ipify.org.
Bij uitzetten wordt de exit node verwijderd en het IP eveneens geverifieerd.
## Installatie
```bash
git clone https://git.eddydevink.nl/eddy/tailscale-mullvad.git
git clone ssh://git@nextcloud:2222/eddy/tailscale-mullvad.git
cd tailscale-mullvad
chmod +x tailscale-mullvad
sudo cp tailscale-mullvad /usr/local/bin/
```
Geen compilatie nodig — het is een Python 3 script.
**Vereisten:**
- Python 3
- Bash
- Tailscale CLI (`tailscale`)
- Mullvad VPN add-on geactiveerd in je Tailscale admin console
- Jouw device toegevoegd aan Mullvad VPN in de admin console
- Je device toegevoegd aan Mullvad VPN in de admin console
## Gebruik
```bash
tailscale-mullvad on <stad of land> # Verbind met Mullvad exit node
tailscale-mullvad off # Verbreek Mullvad exit node
tailscale-mullvad status # Toon huidige status
tailscale-mullvad on <query> # Verbind met Mullvad exit node
tailscale-mullvad off # Verbreek Mullvad exit node
tailscale-mullvad status # Toon huidige status
```
Matching is **case-insensitive** op stad of land. Bij meerdere nodes in dezelfde regio wordt er willekeurig één gekozen.
De query is case-insensitive en zoekt op hostname, land of stad in de exit
node lijst (`tailscale exit-node list`).
### Voorbeelden
```bash
$ tailscale-mullvad on amsterdam
Current IP: 94.157.20.52
Connecting to Mullvad: Netherlands - Amsterdam (nl-ams-wg-201.mullvad.ts.net)
...
Mullvad: ON -> nl-ams-wg-201.mullvad.ts.net
IP: 94.157.20.52 -> 169.150.196.4
Huidig IP: 94.157.20.52
Verbinden met nl-ams-wg-201.mullvad.ts.net...
Nieuw IP: 169.150.196.11
Exit node actief -- IP gewijzigd
$ tailscale-mullvad status
Mullvad: ON -> nl-ams-wg-201.mullvad.ts.net
Exit node actief
Publiek IP: 169.150.196.11
$ tailscale-mullvad off
Mullvad: OFF
$ tailscale-mullvad on japan
Current IP: 169.150.196.4
Connecting to Mullvad: Japan - Tokyo (jp-tyo-wg-001.mullvad.ts.net)
...
Mullvad: ON -> jp-tyo-wg-001.mullvad.ts.net
IP: 169.150.196.4 -> 146.70.45.83
Huidig IP: 169.150.196.11
Exit node uitzetten...
Nieuw IP: 94.157.20.52
Exit node uit -- IP gewijzigd
```