Selamat datang di repositori kode sumber aplikasi klien Mullvad VPN. Ini adalah perangkat lunak klien VPN untuk layanan Mullvad VPN. Untuk informasi lebih lanjut tentang layanan ini, silakan kunjungi situs web kami, mullvad.net (Juga dapat diakses melalui Tor pada layanan bawang kami).
Repositori ini berisi semua kode sumber untuk aplikasi versi desktop dan seluler. Untuk desktop, ini mencakup layanan sistem/daemon ( mullvad-daemon
), antarmuka pengguna grafis (GUI) dan antarmuka baris perintah (CLI). Aplikasi Android menggunakan layanan sistem pendukung yang sama untuk terowongan dan keamanan tetapi memiliki frontend khusus di android/. iOS terdiri dari implementasi yang sepenuhnya mandiri yang berada di ios/.
Ada rilis yang dibuat dan ditandatangani untuk macOS, Windows, Linux, dan Android yang tersedia di situs web kami dan di Github. Aplikasi Android juga tersedia di Google Play dan F-Droid dan versi iOS di App Store.
Anda dapat menemukan kunci penandatanganan kode kami serta instruksi tentang cara memverifikasi unduhan Anda secara kriptografis di halaman Sumber Terbuka Mullvad.
Ini adalah sistem operasi dan versinya yang didukung secara resmi oleh aplikasi. Ini mungkin berfungsi pada lebih banyak versi, namun kami tidak mengujinya dan tidak dapat menjamin kualitas atau keamanannya.
OS/Platform | Versi yang didukung |
---|---|
jendela | 10 dan 11 |
macOS | Tiga rilis besar terbaru |
Linux (Ubuntu) | Dua rilisan LTS terbaru dan rilisan non-LTS terbaru |
Linux (Fedora) | Versi yang belum EOL |
Linux (Debian) | 11 dan yang lebih baru |
Android | 8 dan yang lebih baru |
iOS | 15.0 dan yang lebih baru |
Di Linux kami menguji menggunakan lingkungan desktop Gnome. Aplikasi ini seharusnya, dan mungkin berfungsi di DE lain, tetapi kami tidak mengujinya secara berkala.
Berikut adalah tabel yang berisi fitur aplikasi lintas platform. Hal ini dimaksudkan untuk mencerminkan keadaan kode terbaru di git saat ini, belum tentu rilis yang sudah ada.
jendela | Linux | macOS | Android | iOS | |
---|---|---|---|---|---|
OpenVPN | ✓ | ✓ | ✓ | ||
Penjaga Kawat | ✓ | ✓ | ✓ | ✓ | ✓ |
Terowongan tahan kuantum | ✓ | ✓ | ✓ | ✓ | ✓ |
DAITA | ✓ | ✓ | ✓ | ✓ | ✓ |
multihop WireGuard | ✓ | ✓ | ✓ | ✓ | |
WireGuard melalui TCP | ✓ | ✓ | ✓ | ✓ | ✓ |
WireGuard atas Shadowsocks | ✓ | ✓ | ✓ | ✓ | |
OpenVPN melalui Shadowsocks | ✓ | ✓ | ✓ | ||
Terowongan terpisah | ✓ | ✓ | ✓ | ✓ | |
Server DNS khusus | ✓ | ✓ | ✓ | ✓ | ✓ |
Pemblokir konten (Iklan dll) | ✓ | ✓ | ✓ | ✓ | ✓ |
Akses jaringan lokal opsional | ✓ | ✓ | ✓ | ✓ | ✓* |
Diaudit secara eksternal | ✓ | ✓ | ✓ | ✓ | ✓ |
* Jaringan lokal selalu dapat diakses di iOS dengan implementasi saat ini
Aplikasi ini adalah klien VPN yang menjaga privasi. Oleh karena itu, upaya dilakukan untuk menghentikan kebocoran lalu lintas. Dan pada dasarnya semua pengaturan default ke opsi yang lebih aman/pribadi. Pengguna harus secara eksplisit mengizinkan aturan yang lebih longgar jika diinginkan. Lihat dokumen keamanan khusus untuk mengetahui detail tentang apa yang diblokir dan diizinkan oleh aplikasi, serta cara melakukannya.
Repositori ini berisi submodul yang diperlukan untuk membangun aplikasi. Namun, beberapa submodul tersebut juga memiliki submodul lebih lanjut yang berukuran cukup besar dan tidak diperlukan untuk membangun aplikasi. Jadi, kecuali Anda menginginkan kode sumber untuk OpenSSL, OpenVPN, dan beberapa proyek lainnya, Anda harus menghindari tiruan repositori secara rekursif. Alih-alih mengkloning repositori secara normal dan kemudian mendapatkan satu level submodul:
git clone https://github.com/mullvad/mullvadvpn-app.git
cd mullvadvpn-app
git submodule update --init
Di Android, Linux, dan macOS Anda juga ingin memeriksa submodul wireguard-go secara rekursif:
git submodule update --init --recursive --depth=1 wireguard-go-rs
Rincian lebih lanjut tentang mengapa hal ini perlu dapat ditemukan di peti wireguard-go-rs.
Kami menandatangani setiap komit di cabang main
serta tag rilis kami. Jika Anda ingin memverifikasi pembayaran Anda, Anda dapat menemukan kunci pengembang kami di halaman Sumber Terbuka Mullvad.
Repositori ini memiliki submodul git di dist-assets/binaries
. Submodul ini berisi binari dan skrip build untuk kode pihak ketiga yang perlu kita bundel dengan aplikasi. Seperti OpenVPN, Wintun dll.
Submodul ini mematuhi standar integritas/keamanan yang sama dengan repositori ini. Setiap komit penggabungan harus ditandatangani. Dan repositori utama ini hanya boleh menunjuk ke komit gabungan yang ditandatangani dari submodul binari.
Lihat README submodul biner untuk rincian lebih lanjut tentang repositori itu.
Lihat petunjuk pembuatan untuk bantuan dalam membangun aplikasi di platform desktop.
Untuk membuat aplikasi Android, lihat petunjuk untuk Android.
Untuk membuat aplikasi iOS, lihat petunjuk untuk iOS.
Lihat ini untuk petunjuk tentang cara membuat rilis baru.
TALPID_FIREWALL_DEBUG
- Membantu men-debug firewall. Melakukan hal yang berbeda tergantung pada platform:
"1"
untuk menambahkan penghitung paket ke semua aturan firewall.pflog0
."all"
untuk menambahkan logging ke semua aturan."pass"
untuk menambahkan logging ke aturan yang mengizinkan paket."drop"
untuk menambahkan logging ke aturan pemblokiran paket. TALPID_FIREWALL_DONT_SET_SRC_VALID_MARK
- Memaksa daemon untuk tidak menyetel konfigurasi src_valid_mark
di Linux. Opsi konfigurasi kernel disetel karena pemfilteran jalur balik yang ketat dapat mencegah lalu lintas relai mencapai daemon. Jika rp_filter
disetel ke 1
pada antarmuka yang akan menerima lalu lintas relai, dan src_valid_mark
tidak disetel ke 1
, daemon tidak akan dapat menerima lalu lintas relai.
TALPID_DNS_MODULE
- Memungkinkan perubahan metode yang akan digunakan untuk konfigurasi DNS. Secara default, ini terdeteksi secara otomatis, namun Anda dapat mengaturnya ke salah satu opsi di bawah untuk memilih metode tertentu.
Linux
"static-file"
: ubah file /etc/resolv.conf
secara langsung"resolvconf"
: gunakan program resolvconf
"systemd"
: gunakan layanan resolved
systemd melalui DBus"network-manager"
: gunakan layanan NetworkManager
melalui DBusjendela
iphlpapi
: gunakan API pembantu IPnetsh
: gunakan program netsh
tcpip
: mengatur parameter TCP/IP di registri TALPID_FORCE_USERSPACE_WIREGUARD
- Memaksa daemon untuk menggunakan implementasi ruang pengguna WireGuard di Linux.
TALPID_DISABLE_OFFLINE_MONITOR
- Memaksa daemon untuk selalu menganggap host sedang online.
TALPID_NET_CLS_MOUNT_DIR
- Di Linux, memaksa daemon untuk memasang pengontrol net_cls
di direktori yang ditentukan jika belum dipasang.
MULLVAD_MANAGEMENT_SOCKET_GROUP
- Di Linux dan macOS, ini membatasi akses ke soket UDS antarmuka manajemen untuk pengguna dalam grup tertentu. Artinya hanya pengguna di grup tersebut yang dapat menggunakan CLI dan GUI. Secara default, setiap orang memiliki akses ke soket.
MULLVAD_API_HOST
- Tetapkan nama host untuk digunakan dalam permintaan API. Misalnya api.mullvad.net
.
MULLVAD_API_ADDR
- Tetapkan alamat IP dan port yang akan digunakan dalam permintaan API. Misalnya 10.10.1.2:443
.
MULLVAD_API_DISABLE_TLS
- Gunakan HTTP biasa untuk permintaan API.
MULLVAD_CONNCHECK_HOST
- Tetapkan nama host untuk digunakan dalam permintaan pemeriksaan koneksi. Misalnya am.i.mullvad.net
.
Gunakan setx
dari shell yang ditinggikan:
setx TALPID_DISABLE_OFFLINE 1 /m
Agar perubahan diterapkan, mulai ulang daemon:
sc.exe stop mullvadvpn
sc.exe start mullvadvpn
Edit file unit systemd melalui systemctl edit mullvad-daemon.service
:
[Service]
Environment = " TALPID_DISABLE_OFFLINE_MONITOR=1 "
Agar perubahan diterapkan, mulai ulang daemon:
sudo systemctl restart mullvad-daemon
Gunakan launchctl
:
sudo launchctl setenv TALPID_DISABLE_OFFLINE_MONITOR 1
Agar perubahan diterapkan, mulai ulang daemon:
launchctl unload -w /Library/LaunchDaemons/net.mullvad.daemon.plist
launchctl load -w /Library/LaunchDaemons/net.mullvad.daemon.plist
MULLVAD_PATH
- Memungkinkan perubahan jalur ke folder dengan alat mullvad-problem-report
saat dijalankan dalam mode pengembangan. Defaultnya adalah: /target/debug/
.MULLVAD_DISABLE_UPDATE_NOTIFICATION
- Jika disetel ke 1
, notifikasi GUI akan dinonaktifkan saat pembaruan tersedia. $ npm run develop
- kembangkan aplikasi dengan live-reload diaktifkan$ npm run lint
- kode lint$ npm run pack:
- menyiapkan aplikasi untuk didistribusikan pada platform Anda. Dimana
bisa berupa linux
, mac
atau win
$ npm test
- jalankan tes Persyaratan untuk menampilkan ikon baki berbeda-beda di setiap lingkungan desktop. Jika ikon baki tidak muncul, coba instal salah satu paket berikut:
libappindicator3-1
libappindicator1
libappindicator
Jika Anda menggunakan GNOME, coba pasang salah satu ekstensi GNOME Shell berikut:
TopIconsFix
TopIcons Plus
electron-builder
Daemon diimplementasikan di Rust dan diimplementasikan di beberapa peti. Peti utama, atau tingkat atas, yang membangun biner daemon terakhir adalah mullvad-daemon
yang kemudian bergantung pada yang lain.
Secara umum kita dapat melihat daemon terbagi menjadi dua bagian, peti dimulai dengan talpid
dan peti dimulai dengan mullvad
. Peti talpid
seharusnya sama sekali tidak berhubungan dengan hal-hal spesifik Mullvad. Peti talpid
tidak diperbolehkan mengetahui apa pun tentang API yang digunakan daemon untuk mengambil detail akun Mullvad atau mengunduh daftar server VPN misalnya. Komponen talpid
harus dipandang sebagai klien VPN generik dengan fitur privasi ekstra dan menjaga anonimitas. Di sisi lain, peti yang memiliki nama mullvad
memanfaatkan komponen talpid
untuk membangun klien VPN yang aman dan spesifik untuk Mullvad.
Penjelasan untuk beberapa kata umum yang digunakan dalam dokumentasi dan kode di repositori ini.
mullvad-daemon
. Program tanpa kepala ini memperlihatkan antarmuka manajemen yang dapat digunakan untuk mengontrol daemonmullvad
yang merupakan antarmuka berbasis terminal untuk aplikasi Mullvad VPN. Daftar jalur file yang ditulis dan dibaca oleh berbagai komponen aplikasi Mullvad VPN
Di Windows, ketika suatu proses berjalan sebagai layanan sistem, variabel %LOCALAPPDATA%
diperluas menjadi C:Windowssystem32configsystemprofileAppDataLocal
.
Semua jalur direktori ditentukan di dalam, dan diambil dari, peti mullvad-paths
.
Direktori pengaturan dapat diubah dengan mengatur variabel lingkungan MULLVAD_SETTINGS_DIR
.
Platform | Jalur |
---|---|
Linux | /etc/mullvad-vpn/ |
macOS | /etc/mullvad-vpn/ |
jendela | %LOCALAPPDATA%Mullvad VPN |
Android | getFilesDir() |
Direktori log dapat diubah dengan mengatur variabel lingkungan MULLVAD_LOG_DIR
.
Platform | Jalur |
---|---|
Linux | /var/log/mullvad-vpn/ + systemd |
macOS | /var/log/mullvad-vpn/ |
jendela | C:ProgramDataMullvad VPN |
Android | getFilesDir() |
Direktori cache dapat diubah dengan mengatur variabel lingkungan MULLVAD_CACHE_DIR
.
Platform | Jalur |
---|---|
Linux | /var/cache/mullvad-vpn/ |
macOS | /Library/Caches/mullvad-vpn/ |
jendela | C:ProgramDataMullvad VPNcache |
Android | getCacheDir() |
Jalur lengkap ke file alamat RPC dapat diubah dengan mengatur variabel lingkungan MULLVAD_RPC_SOCKET_PATH
.
Platform | Jalur |
---|---|
Linux | /var/run/mullvad-vpn |
macOS | /var/run/mullvad-vpn |
jendela | //./pipe/Mullvad VPN |
Android | getNoBackupFilesDir() |
GUI memiliki file pengaturan khusus yang dikonfigurasi untuk setiap pengguna. Jalurnya diatur dalam file gui/packages/desktop/main/gui-settings.ts
.
Platform | Jalur |
---|---|
Linux | $XDG_CONFIG_HOME/Mullvad VPN/gui_settings.json |
macOS | ~/Library/Application Support/Mullvad VPN/gui_settings.json |
jendela | %LOCALAPPDATA%Mullvad VPNgui_settings.json |
Android | Hadir di logcat Android |
Lihat grafik README untuk informasi tentang ikon.
Petunjuk tentang cara menangani lokal dan terjemahan dapat ditemukan di sini.
Untuk petunjuk khusus untuk aplikasi Android, lihat di sini.
Mullvad telah menggunakan perusahaan pentesting eksternal untuk melakukan audit keamanan aplikasi VPN ini. Baca lebih lanjut tentang mereka di audit readme.
Hak Cipta (C) 2024 Mullvad VPN AB
Program ini adalah perangkat lunak bebas: Anda dapat mendistribusikan ulang dan/atau memodifikasinya berdasarkan ketentuan Lisensi Publik Umum GNU sebagaimana diterbitkan oleh Free Software Foundation, baik versi 3 dari Lisensi tersebut, atau (sesuai pilihan Anda) versi yang lebih baru.
Untuk perjanjian lisensi lengkap, lihat file LICENSE.md
Kode sumber untuk aplikasi iOS berlisensi GPL-3 seperti yang lainnya di repositori ini. Namun aplikasi yang didistribusikan di Apple App Store tidak berlisensi GPL, dan berada di bawah EULA Apple App Store.