Ubuntu Setup Guide: Tailscale + Clash Verge TUN + iPhone Exit Node
Route iPhone traffic through your Ubuntu machine over Tailscale, with Ubuntu egress proxied by Clash Verge TUN. Prerequisites
- Ubuntu machine
- Your working Clash config already backed up/restored
- Tailscale account access (for route approval)
curl -fsSL https://tailscale.com/install.sh | sh
sudo systemctl enable --now tailscaled
sudo tailscale up
- Open the URL shown in terminal and complete login.
tailscale status
tailscale netcheck
sudo tailscale set --advertise-exit-node=true
This advertises:
0.0.0.0/0::/0Verify:
tailscale debug prefs
Expected in output:
"AdvertiseRoutes": ["0.0.0.0/0","::/0"]
Open:
- Select your Ubuntu machine.
- Approve advertised routes (0.0.0.0/0, ::/0).
Note: Without this approval, clients will not see any exit nodes.
In Tailscale app on iPhone:
- Connect Tailscale.
- Open Exit Node.
- Select your Ubuntu machine.
In your Clash config, ensure these key settings:
tun:
enable: true
auto-route: true
dns-hijack:
- any:53
route-exclude-address:
- 100.64.0.0/10
- 100.100.100.100/32
- fd7a:115c:a1e0::/48
dns:
enhanced-mode: fake-ip
fake-ip-filter:
- +.tailscale.com
- +.tailscale.io
- +.ts.net
From Ubuntu:
tailscale status --json
Check:
- iPhone peer is online/active
- traffic counters increase while browsing from iPhone
From iPhone:
- Open https://ifconfig.me or https://ip.sb
- IP should match your Ubuntu/Clash egress path (not local mobile/Wi-Fi IP)
tailscale exit-node list shows no exit nodes found
- Usually route approval not done yet in admin console.
iPhone has no Exit Node option
- Same root cause: no approved/available exit nodes in control plane.
tailscale up hangs
Check logs:
journalctl -u tailscaled -n 200 --no-pager
Then verify Clash TUN + DNS exclusions are still correct.