|
| 1 | +# VPN & Privacy Setup - Mullvad + Tailscale |
| 2 | + |
| 3 | +Guida per configurare Mullvad VPN e Tailscale in coesistenza su Fedora Linux, e gestire la privacy DNS su Android/GrapheneOS. |
| 4 | + |
| 5 | +## Panoramica |
| 6 | + |
| 7 | +| Piattaforma | Setup | Costo | |
| 8 | +|---|---|---| |
| 9 | +| **Fedora Linux** | Mullvad + Tailscale insieme (nftables) | Mullvad 5 EUR/mese | |
| 10 | +| **Android / GrapheneOS** | Switch manuale tra le due app | - | |
| 11 | + |
| 12 | +- **Mullvad**: privacy navigazione (nasconde IP e DNS dall'ISP) |
| 13 | +- **Tailscale**: accesso ai servizi privati (Jellyfin, Komga, Grafana) via MagicDNS |
| 14 | + |
| 15 | +--- |
| 16 | + |
| 17 | +## Fedora Linux |
| 18 | + |
| 19 | +### 1. Installa Mullvad |
| 20 | + |
| 21 | +```bash |
| 22 | +sudo dnf config-manager addrepo --from-repofile=https://repository.mullvad.net/rpm/stable/mullvad.repo |
| 23 | +sudo dnf install mullvad-vpn |
| 24 | + |
| 25 | +# Per l'icona nel system tray (GNOME) |
| 26 | +sudo dnf install libappindicator-gtk3 |
| 27 | +``` |
| 28 | + |
| 29 | +### 2. Login e connessione |
| 30 | + |
| 31 | +```bash |
| 32 | +mullvad account login TUO_ACCOUNT_NUMBER |
| 33 | +mullvad connect |
| 34 | +mullvad status |
| 35 | +``` |
| 36 | + |
| 37 | +### 3. Regole nftables per coesistenza con Tailscale |
| 38 | + |
| 39 | +Mullvad blocca tutto il traffico che non passa dal suo tunnel. Queste regole escludono il traffico Tailscale (subnet `100.64.0.0/10`) dal tunnel Mullvad, permettendo a entrambi di funzionare. |
| 40 | + |
| 41 | +Crea il file `/etc/nftables/mullvad_tailscale.conf`: |
| 42 | + |
| 43 | +``` |
| 44 | +table inet mullvad_tailscale { |
| 45 | + chain output { |
| 46 | + type route hook output priority -100; policy accept; |
| 47 | + ip daddr 100.64.0.0/10 ct mark set 0x00000f41 meta mark set 0x6d6f6c65; |
| 48 | + } |
| 49 | + chain input { |
| 50 | + type filter hook input priority -100; policy accept; |
| 51 | + ip saddr 100.64.0.0/10 ct mark set 0x00000f41 meta mark set 0x6d6f6c65; |
| 52 | + } |
| 53 | +} |
| 54 | +``` |
| 55 | + |
| 56 | +Carica e rendi permanente: |
| 57 | + |
| 58 | +```bash |
| 59 | +sudo nft -f /etc/nftables/mullvad_tailscale.conf |
| 60 | +echo 'include "/etc/nftables/mullvad_tailscale.conf"' | sudo tee -a /etc/nftables.conf |
| 61 | +sudo systemctl enable --now nftables |
| 62 | +``` |
| 63 | + |
| 64 | +### 4. Permetti traffico LAN |
| 65 | + |
| 66 | +```bash |
| 67 | +mullvad lan set allow |
| 68 | +``` |
| 69 | + |
| 70 | +### 5. Verifica |
| 71 | + |
| 72 | +```bash |
| 73 | +# Mullvad funziona? |
| 74 | +curl https://am.i.mullvad.net/connected |
| 75 | + |
| 76 | +# Tailscale funziona attraverso Mullvad? |
| 77 | +tailscale ping <nome-server> |
| 78 | + |
| 79 | +# Jellyfin raggiungibile? |
| 80 | +curl -k https://<tailscale-hostname>:8096 |
| 81 | +``` |
| 82 | + |
| 83 | +--- |
| 84 | + |
| 85 | +## Configurazione DNS su Tailscale (Admin Console) |
| 86 | + |
| 87 | +Impostazioni nella pagina **DNS** della Tailscale Admin Console: |
| 88 | + |
| 89 | +- **MagicDNS**: attivo (risolve i nomi `.ts.net`) |
| 90 | +- **Global nameservers**: nessuno (ci pensa Mullvad per la navigazione) |
| 91 | +- **Override DNS servers**: OFF |
| 92 | + |
| 93 | +### Importante |
| 94 | + |
| 95 | +Non impostare DNS manuali (es. 1.1.1.1) direttamente sui device. Con questa configurazione: |
| 96 | + |
| 97 | +- **Mullvad attivo** -> Mullvad gestisce i DNS (suoi server privati) |
| 98 | +- **Tailscale attivo** -> MagicDNS risolve `.ts.net`, il router gestisce il resto |
| 99 | +- **Entrambi attivi (Fedora)** -> Mullvad per internet, MagicDNS per `.ts.net` |
| 100 | + |
| 101 | +--- |
| 102 | + |
| 103 | +## Android / GrapheneOS |
| 104 | + |
| 105 | +Android permette una sola VPN attiva alla volta. Non si possono usare Mullvad e Tailscale contemporaneamente. |
| 106 | + |
| 107 | +### Setup |
| 108 | + |
| 109 | +1. Installa **Mullvad VPN** dal Play Store / F-Droid / sito Mullvad |
| 110 | +2. Installa **Tailscale** dal Play Store / F-Droid |
| 111 | +3. **Non attivare** DNS personalizzato su Mullvad (i suoi DNS di default sono gia privati) |
| 112 | + |
| 113 | +### Utilizzo |
| 114 | + |
| 115 | +- **Navigazione con privacy** -> attiva Mullvad |
| 116 | +- **Accesso a Jellyfin / Komga / Grafana** -> attiva Tailscale |
| 117 | + |
| 118 | +### Servizi accessibili via Tailscale |
| 119 | + |
| 120 | +| Servizio | URL | |
| 121 | +|---|---| |
| 122 | +| Jellyfin | `https://<tailscale-hostname>:8096` | |
| 123 | +| Komga | `https://<tailscale-hostname>:25600` | |
| 124 | +| Grafana | `https://<tailscale-hostname>:3000` | |
| 125 | +| AIO Admin | `https://<tailscale-hostname>:8443` | |
| 126 | + |
| 127 | +--- |
| 128 | + |
| 129 | +## Ripristino DNS su Fedora (se necessario) |
| 130 | + |
| 131 | +Se hai impostato DNS manuali e vuoi tornare ad automatico: |
| 132 | + |
| 133 | +```bash |
| 134 | +# Vedi connessione attiva |
| 135 | +nmcli -t -f NAME connection show --active |
| 136 | + |
| 137 | +# Rimuovi DNS manuali |
| 138 | +nmcli connection modify "NOME_CONNESSIONE" ipv4.dns "" ipv4.ignore-auto-dns no |
| 139 | +nmcli connection up "NOME_CONNESSIONE" |
| 140 | + |
| 141 | +# Verifica |
| 142 | +resolvectl status | grep -A2 "DNS Server" |
| 143 | +``` |
| 144 | + |
| 145 | +--- |
| 146 | + |
| 147 | +## Troubleshooting |
| 148 | + |
| 149 | +### Mullvad connesso ma nessuna navigazione |
| 150 | + |
| 151 | +```bash |
| 152 | +mullvad lan set allow |
| 153 | +mullvad reconnect |
| 154 | +``` |
| 155 | + |
| 156 | +### Tailscale non raggiungibile con Mullvad attivo |
| 157 | + |
| 158 | +Verifica che le regole nftables siano caricate: |
| 159 | + |
| 160 | +```bash |
| 161 | +sudo nft list table inet mullvad_tailscale |
| 162 | +``` |
| 163 | + |
| 164 | +Se non ci sono, ricaricale: |
| 165 | + |
| 166 | +```bash |
| 167 | +sudo nft -f /etc/nftables/mullvad_tailscale.conf |
| 168 | +``` |
| 169 | + |
| 170 | +### Cambiare server Mullvad |
| 171 | + |
| 172 | +```bash |
| 173 | +mullvad relay set location it mil # Italia, Milano |
| 174 | +mullvad relay set location de ber # Germania, Berlino |
| 175 | +mullvad reconnect |
| 176 | +``` |
| 177 | + |
| 178 | +### Stato completo |
| 179 | + |
| 180 | +```bash |
| 181 | +mullvad status |
| 182 | +tailscale status |
| 183 | +resolvectl status | grep -A2 "DNS Server" |
| 184 | +sudo nft list ruleset | grep mullvad_tailscale |
| 185 | +``` |
0 commit comments