Instalace a nastavení Mullvad VPN v 10 krocích
- Přejděte do výchozí složky účtu
cd ~
a stáhněte poslední instalační soubor Mullvad VPNwget --content-disposition https://mullvad.net/download/app/deb/latest
- Příkazem
ls
si zobrazte soubory ve složce, najděte stažený MullvadVPN-XXXX.X_amd64.deb soubor a příkazemsudo apt install -y ./MullvadVPN-XXXX.X_amd64.deb
jej nainstalujte. - Příkazem
mullvad version
si ověřte, že Mullvad VPN máte nainstalováno - Příkazem
mullvad account login <číslo účtu>
se přihlaste ke svému účtu, jehož číslo získáte po přihlášení / při registraci. Konečný příkaz může vypadat následujícím způsobem:mullvad account login 1234123412341234
. - Na stránce Mullvad Servers si můžete projít lokace (VPN servery), ke kterým je možné se připojit. Totožný seznam dostanete i příkazem
mullvad relay list
. - Připojení k vybranému serveru definujete příkazem
mullvad relay set location se mma
, kdy "se" nahraďte zemí a "mma" městem. Dále je ještě možné na konec přiřadit celý název serveru z Mullvad seznamumullvad relay list
. V případě České Republiky a Prahy příkaz vypadá následovně:mullvad relay set location cz prg
, jestliže výběr seznamu necháváme automaticky na klinetu, respektive se můžeme připojit i ke konkrétnímu serveru, vizmullvad relay set location cz prg cz-prg-wg-201
. - Příkazem
mullvad lan set allow
můžete povolit LAN přístup - tedy, i když je server skryt za VPN, stále se k němu lze připojit z lokální sítě. - Samotné připojení k VPN se provede příkazem
mullvad connect
, případné odpojení příkazemmullvad disconnect
- Automatické připojování k VPN se nastaví příkazem
mullvad auto-connect set on
. - Stav připojení lze zjistit příkazem
mullvad status
, log připojení příkazemjournalctl -fu mullvad-daemon
.
Upgrade Mullvad VPN klienta se provede zopakováním kroku 1 a 2. Veškeré Mullvad Cli příkazy najdete na stránce How to use Mullvad Cli.
Mullvad běží jako systémový servis. Jako takový, je možné jej ovládat systémovými příkazy:
sudo systemctl status mullvad-daemon
- zobrazit stav službysudo systemctl stop mullvad-daemon
- vypnout službusudo systemctl start mullvad-daemon
- zapnout službusudo systemctl enable mullvad-daemon
- povolit automatické spouštění služby při načtení OSsudo systemctl disable mullvad-daemon
- zakázat automatické spouštění služby při načtení OS
Mullvad účet se spravuje prostřednictvím příkazové nabídky mullvad account
, pro informace kolem přihlášeného mullvad účtu (název zařízení a mullvad id) použijte příkaz mullvad account get
.
Poznámka: Aktivní VPN může komplikovat připojování se na server. Pro připojování se z lokální sítě, ujistěte se, že máte na mullvad klientu povolen LAN přístup (mullvad lan set allow
). Pro vzdálené připojení řešte VPN síť, ať už mezi klientem a serverem, nebo klientem a routerem, za nímž je server umístěn.
Více postupů a tipů pro Ubuntu Server naleznete v publikaci Instalace, zabezpečení a správa Ubuntu Serveru.
VPN Split Tunnel
Split Tunnel umožňuje směrovat část provozu aplikací nebo zařízení přes šifrovanou VPN, zatímco jiným aplikacím nebo zařízením nechat přímý přístup k internetu. To je zvláště užitečné při využívání služeb, které s použítím VPN nefungují tak, jak by bylo očekáváno.
VPN Split Tunel pro NTP service systemd-timesyncd
systemd-timesyncd
daemon je zodpovědný za synchronizaci času serveru s přesným světovým časem dle nastavené časové zóny. Správná funkce tohoto daemona je zásadní při všech službách pracujících s časem. Tou je například i 2-faktorové ověřování (2FA) pro možnost se k serveru vůbec přihlásit.
Zjištění stavu
timedatectl
timedatectl status
- zjištění stavu systemd-timesyncd daemonuVýstupem je informace o různých časech. Zásadními řádky jsou
NTP service
se stavemactive
(lze aktivovat příkazemtimedatectl set-ntp true
) a poté řádekSystem clock synchronized
s hodnotouyes
. Ovšem, stavyes
může být v případě používání VPN lichý - a to stav z doby před aktivací VPN. Problém je, že VPN může blokovat přístuk k NTP serverům a tím zamezit synchronizaci času.Zjištění stavu
systemd-timesyncd
službyStav služby zjistíme dotazem
systemctl status systemd-timesyncd
. Zde nás zajímá stav klíčeStatus
. Stav "Initial synchronization to time server ..." je běžný, jedná se o funkční stav. Současně stav zahrnuje IP adresu NTP serveru, který je službou k synchronizaci času využíván. Problematický je stavIdle.
-
Test přístupu k IP NTP serveru
IP NTP serveru lze zjistit rovněž pod příkazem
timedatectl timesync-status
, který ukazuje detailní časové hodnoty vztahující se k přesnosti času na serveru. IP NTP serveru, který je službou využíván, je pod hodnotu klíčeServer
. Možnost přístupu k danému serveru lze zjistit příkazemping
s adresou serveru, např.ping 8.8.8.8
. Jestliže jsme schopni IP NTP serveru pingnout, vše je v pořádku. -
Nastavení Spilt Tunelu VPN, pokud není možné NTP server pingnout
- Split tunel je potřeba v případě NTP serveru řešit, jestliže:
timedatectl status
ukazuje "System clock synchronized: no"systemctl status systemd-timesyncd
ukazuje stav "Status: Idle."- není možné NTP server pingnout
Split Tunel lze aktivovat pro jakoukoli službu na serveru, a to na základě jejího
pid
. PID zjistíme příkazemsystemctl status systemd-timesyncd
, kdypid
číslo je pod klíčemMain PID
. -
pid
služby lze vložit do mullvad VPN klienta příkazem:
Ver 2023.6 +mullvad split-tunnel add <pid>
Older vermullvad split-tunnel pid add <pid>
Od této chvíle by služba měla být prostřednictvím Split Tunnelu z VPN vyloučena. Opětovně zkontrolujte stav služby
systemctl status systemd-timesyncd
. Samotný ping bude i nadále neúspěšný, jelikož ten vykonáváte z vašeho účtu a ne účtu vyjmuté služby. -
Další užitečné příkazy:
Ver 2023.6 +mullvad split-tunnel list
- Zobraz všechny vyjmuté služby z VPNmullvad split-tunnel delete <pid>
- Obnov dříve vyloučený proces z VPNmullvad split-tunnel clear
- obnovit všechny dříve vyloučené procesy
Older vermullvad split-tunnel pid list
- Zobraz všechny vyjmuté služby z VPNmullvad split-tunnel pid delete <pid>
- Obnov dříve vyloučený proces z VPNmullvad split-tunnel pid clear
- obnovit všechny dříve vyloučené procesy
- Split tunel je potřeba v případě NTP serveru řešit, jestliže:
- Další příkazy
Automatická kontrola synchroniazce času a nastavení Split Tunnelu pro Mullvad VPN v případě, kdy čas není synchronizovaný
Níže je postup vytvoření mechanismu, kdy po spuštění systému a následně v pravidelných intervalech probíhá kontrola stavu synchronizace systémového času. Není-li čas synchronizován, nastaví se splitting VPN tunelu pro službu spravující čas serveru.
Postup níže zjistí zjištění PID
služby systemd-timesyncd
a následně tuto službu vyjme z provozu jdoucího skrze VPN.
- Vytvořte soubor
set_mullvad_split_tunnel.sh
Zkopírujte do souboru kód nížesudo nano /usr/local/bin/mullvad_split_tunnel_setup.sh
Nastavte souboru oprávnění ke spouštění#!/bin/bash # check sync status of timedatectl sync_status=$(timedatectl status | grep -oP 'System clock synchronized: \K\w+') if [[ $sync_status == "no" ]]; then # system time is not synchronized - set split tunnel for systemd-timesyncd service # Get PID of systemd-timesyncd SERVICE_PID=$(pgrep -f systemd-timesyncd) if [[ ! -z "$SERVICE_PID" ]]; then # Add PID to Mullvad split tunnel configuration mullvad split-tunnel add $SERVICE_PID echo "New VPN Split tunnel was set for PID $SERVICE_PID" else echo "Failed to get PID of systemd-timesyncd." fi else echo "System time is synchronized, no need of setting VPN split tunnel" fi
sudo chmod +x /usr/local/bin/mullvad_split_tunnel_setup.sh
- Vytvořte systemd soubor služby
servertime_sync_check.service
, prostřednictvím které se bude spouštět scriptmullvad_split_tunnel_setup.sh
Zkopírujte do souboru kód nížesudo nano /etc/systemd/system/servertime_sync_check.service
[Unit] Description=Check time synchronization and setup Mullvad VPN split tunneling if needed [Service] Type=oneshot ExecStart=/usr/local/bin/mullvad_split_tunnel_setup.sh [Install] WantedBy=multi-user.target
- Vytvořte časovač služby
servertime_sync_check
Zkopírujte do souboru kód nížesudo nano /etc/systemd/system/servertime_sync_check.timer
[Unit] Description=Timer to regularly check time synchronization [Timer] # Run it in 30 minutes interval OnCalendar=*:0/30 Persistent=true [Install] WantedBy=timers.target
- Načtěte provedené změny do systému
sudo systemctl daemon-reload
- Povolte automatické spuštění služeb při startu počítače
sudo systemctl enable servertime_sync_check.service sudo systemctl enable servertime_sync_check.timer
- Spusťte
servertime_sync_check.timer
servicesudo systemctl start servertime_sync_check.timer
servertime_sync_check.service
potřeba spouštět není. Je spouštěn prostřednictvímservertime_sync_check.timer
. Jelikož se používá direktivaPersistent=true
, jestliže některá z kontrol byla vynechána (napříkald počítač byl v dané době vypnutý), kontrola se vykoná současně i co nejdříve po spuštění počítače. - Kontrolujte logy služby
journalctl -u servertime_sync_check.service