Tutorial ini akan menunjukkan kepada Anda cara mengatur server VPN WireGuard Anda sendiri di Debian 11 bullseye dan Debian 10 Buster. WireGuard dibuat khusus untuk kernel Linux. Ini berjalan di dalam kernel Linux dan memungkinkan Anda membuat terowongan VPN yang cepat, modern, dan aman.
Fitur WireGuard VPN
- Ringan dan kecepatan super cepat, membuat OpenVPN tersingkir.
- Cross-platform. WireGuard dapat berjalan di Linux, BSD, macOS, Windows, Android, iOS, dan OpenWRT.
- Autentikasi pengguna dilakukan dengan menukar kunci publik, mirip dengan kunci SSH.
- Ini memberikan alamat IP terowongan statis ke klien VPN. Beberapa orang mungkin tidak menyukainya, tetapi ini bisa berguna dalam beberapa kasus.
- Perangkat seluler dapat beralih antara Wi-Fi dan jaringan seluler dengan mulus tanpa kehilangan konektivitas apa pun.
- Ini bertujuan untuk menggantikan OpenVPN dan IPSec di sebagian besar kasus penggunaan.
Persyaratan
Untuk mengikuti tutorial ini, Anda memerlukan VPS (Virtual Private Server) yang dapat mengakses situs web yang diblokir secara bebas (Di luar negara Anda atau sistem penyaringan Internet). Saya merekomendasikan Kamatera VPS, yang memiliki fitur:
- Uji coba gratis 30 hari.
- Mulai dari $4/bulan (RAM 1 GB)
- VPS berbasis KVM berperforma tinggi
- 9 pusat data di seluruh dunia, termasuk Amerika Serikat, Kanada, Inggris Raya, Jerman, Belanda, Hong Kong, dan Israel.
Ikuti tutorial yang ditautkan di bawah ini untuk membuat server VPS Linux Anda di Kamatera.
- Cara Membuat Server VPS Linux di Kamatera
Setelah Anda memiliki VPS yang menjalankan Debian, ikuti petunjuk di bawah ini.
Tutorial ini mengasumsikan bahwa server VPN dan klien VPN keduanya menjalankan Debian sistem operasi.
Langkah 1:Instal WireGuard di Server dan Desktop Debian
Masuk ke server Debian Anda. WireGuard disertakan dalam Debian 11 (Bullseye) repositori, sehingga Anda dapat menjalankan perintah berikut untuk menginstalnya.
sudo apt updatesudo apt install wireguard wireguard-tools linux-headers-$(uname -r)
Debian 10 pengguna perlu menambahkan repositori backport dengan perintah berikut.
echo "deb http://deb.debian.org/debian buster-backports main" | sudo tee /etc/apt/sources.list.d/buster-backports.list
Kemudian instal WireGuard.
sudo apt updatesudo apt -t buster-backports install wireguard wireguard-tools wireguard-dkms linux-headers-$(uname -r)
Gunakan perintah yang sama untuk menginstal WireGuard di komputer Debian lokal Anda (klien VPN). Perhatikan bahwa Anda juga perlu menginstal openresolv
paket pada klien untuk mengkonfigurasi server DNS.
sudo apt install openresolv
Langkah 2:Buat Pasangan Kunci Publik/Pribadi
Server
Jalankan perintah berikut di server Debian untuk membuat pasangan kunci publik/pribadi, yang akan disimpan di bawah /etc/wireguard/
direktori.
wg genkey | sudo tee /etc/wireguard/server_private.key | wg pubkey | sudo tee /etc/wireguard/server_public.key
Klien
Jalankan perintah berikut untuk membuat pasangan kunci publik/pribadi di komputer Debian lokal (klien VPN).
wg genkey | sudo tee /etc/wireguard/client_private.key | wg pubkey | sudo tee /etc/wireguard/client_public.key
Langkah 3:Buat File Konfigurasi WireGuard
Server
Gunakan editor teks baris perintah seperti Nano untuk membuat file konfigurasi WireGuard di server Debian. wg0
akan menjadi nama antarmuka jaringan.
sudo nano /etc/wireguard/wg0.conf
Salin teks berikut dan tempel ke file konfigurasi Anda. Anda perlu menggunakan kunci pribadi server dan kunci publik klien Anda sendiri.
[Antarmuka]Alamat =10.10.10.1/24ListenPort =51820PrivateKey =cD+ZjXiVIX+0iSX1PNijl4a+88lCbDgw7kO78oXXLEc=[Peer]PublicKey =AYQJf6HbkQ0XMZ0Xyt+c.
Dimana:
- Alamat :Tentukan alamat IP pribadi server VPN. Di sini saya menggunakan jangkauan jaringan 10.10.10.0/24, sehingga tidak akan bertentangan dengan jangkauan jaringan rumah Anda. (Kebanyakan router rumah menggunakan 192.168.0.0/24 atau 192.168.1.0/24). 10.10.10.1 adalah alamat IP pribadi untuk server VPN.
- PrivateKey :Kunci pribadi server VPN, yang dapat ditemukan di
/etc/wireguard/server_private.key
file di server. - DengarkanPort :Server VPN WireGuard akan mendengarkan pada port UDP 51820, yang merupakan default.
- PublicKey :Kunci publik klien VPN, yang dapat ditemukan di
/etc/wireguard/client_public.key
file di komputer klien. - IP yang Diizinkan :Alamat IP yang diizinkan untuk digunakan oleh klien VPN. Dalam contoh ini, klien hanya dapat menggunakan alamat IP 10.10.10.2 di dalam terowongan VPN.
Simpan dan tutup file. (Untuk menyimpan file di editor teks Nano, tekan Ctrl+O
, lalu tekan Enter untuk mengonfirmasi. Tekan Ctrl+X
untuk keluar.)
Ubah mode izin file sehingga hanya pengguna root yang dapat membaca file.
sudo chmod 600 /etc/wireguard/ -R
Klien
Gunakan editor teks baris perintah seperti Nano untuk membuat file konfigurasi WireGuard di komputer Debian lokal Anda. wg-client0
akan menjadi nama antarmuka jaringan.
sudo nano /etc/wireguard/wg-client0.conf
Salin teks berikut dan tempel ke file konfigurasi Anda. Anda perlu menggunakan kunci pribadi klien dan kunci publik server Anda sendiri.
[Antarmuka] Alamat =10.10.10.2/24DNS =10.10.10.1PrivateKey =Cofa + x5UvHF + a3xJ6enLatG + DoE3I5PhMgKrMKkUyXI =[Sebaya] PublicKey =kQvxOJI5Km4S1c7WXu2UZFpB8mHGuf3Gz8mmgTIF2U0 =AllowedIPs =0.0.0.0/0Endpoint =12.34.56.78:51820PersistentKeepalive =25Dimana:
- Alamat :Tentukan alamat IP pribadi klien VPN.
- DNS :tentukan 10.10.10.1 (server VPN) sebagai server DNS. Ini akan dikonfigurasi melalui
resolvconf
memerintah. Anda juga dapat menentukan beberapa server DNS untuk redundansi seperti ini:DNS = 10.10.10.1 8.8.8.8
- PrivateKey :Kunci pribadi klien, yang dapat ditemukan di
/etc/wireguard/client_private.key
file di komputer klien. - PublicKey :Kunci publik server, yang dapat ditemukan di
/etc/wireguard/server_public.key
file di server. - IP yang Diizinkan :0.0.0.0/0 mewakili seluruh Internet, yang berarti semua lalu lintas ke Internet harus dirutekan melalui VPN.
- Titik akhir :Alamat IP publik dan nomor port server VPN. Ganti 12.34.56.78 dengan alamat IP publik asli server Anda.
- PersistentKeepalive :Kirim paket kosong yang diautentikasi ke peer setiap 25 detik untuk menjaga koneksi tetap hidup. Jika PersistentKeepalive tidak diaktifkan, server VPN mungkin tidak dapat melakukan ping ke klien VPN.
Simpan dan tutup file.
Ubah mode file sehingga hanya pengguna root yang dapat membaca file.
sudo chmod 600 /etc/wireguard/ -R
Langkah 4:Aktifkan Penerusan IP di Server
Agar server VPN dapat merutekan paket antara klien VPN dan Internet, kita perlu mengaktifkan penerusan IP. Edit sysctl.conf
berkas.
sudo nano /etc/sysctl.conf
Tambahkan baris berikut di akhir file ini.
net.ipv4.ip_forward =1
Simpan dan tutup file. Kemudian terapkan perubahan dengan perintah di bawah ini. -p opsi akan memuat pengaturan sysctl dari /etc/sysctl.conf mengajukan. Perintah ini akan mempertahankan perubahan kami di seluruh reboot sistem.
sudo sysctl -p
Langkah 5:Konfigurasi Penyamaran IP di Server
Kita perlu mengatur penyamaran IP di firewall server, sehingga server menjadi router virtual untuk klien VPN. Saya akan menggunakan UFW, yang merupakan ujung depan dari firewall iptables. Instal UFW di Debian dengan:
sudo apt install ufw
Pertama, Anda harus mengizinkan lalu lintas SSH.
sudo ufw allow 22/tcp
Selanjutnya, temukan nama antarmuka jaringan utama server Anda.
alamat ip
Seperti yang Anda lihat, namanya ens3
di server Debian saya.
Untuk mengkonfigurasi penyamaran IP, kita harus menambahkan perintah iptables dalam file konfigurasi UFW.
sudo nano /etc/ufw/before.rules
Secara default, ada beberapa aturan untuk filter
meja. Tambahkan baris berikut di akhir file ini. Ganti ens3
dengan nama antarmuka jaringan Anda sendiri.
# Aturan tabel NAT*nat:POSTROUTING ACCEPT [0:0]-A POSTROUTING -o ens3 -j MASQUERADE# Akhiri setiap tabel dengan baris 'COMMIT' atau aturan ini tidak akan diprosesCOMMIT
Di editor teks Nano, Anda dapat pergi ke akhir file dengan menekan Ctrl+W
, lalu tekan Ctrl+V
.
Baris di atas akan ditambahkan (-A ) aturan hingga akhir POSTROUTING rantai nat meja. Ini akan menghubungkan jaringan pribadi virtual Anda dengan Internet. Dan juga menyembunyikan jaringan Anda dari dunia luar. Jadi Internet hanya dapat melihat IP server VPN Anda, tetapi tidak dapat melihat IP klien VPN Anda, sama seperti router rumah Anda menyembunyikan jaringan rumah pribadi Anda.
Secara default, UFW melarang penerusan paket. Kami dapat mengizinkan penerusan untuk jaringan pribadi kami. Temukan ufw-before-forward
rantai dalam file ini dan tambahkan 3 baris berikut, yang akan menerima penerusan paket jika IP sumber atau IP tujuan ada di 10.10.10.0/24
jangkauan.
# izinkan penerusan untuk jaringan tepercaya-A ufw-before-forward -s 10.10.10.0/24 -j ACCEPT-A ufw-before-forward -d 10.10.10.0/24 -j ACCEPT
Simpan dan tutup file. Kemudian aktifkan UFW.
sudo ufw aktifkan
Jika Anda telah mengaktifkan UFW sebelumnya, Anda dapat menggunakan systemctl untuk memulai ulang UFW.
sudo systemctl restart ufw
Sekarang jika Anda membuat daftar aturan dalam rantai POSTROUTING tabel NAT dengan menggunakan perintah berikut:
sudo iptables -t nat -L POSTROUTING
Anda dapat melihat aturan Masquerade.
Langkah 6:Instal DNS Resolver di Server
Karena kami menetapkan server VPN sebagai server DNS untuk klien, kami perlu menjalankan resolver DNS di server VPN. Kita dapat menginstal server DNS bind9.
sudo apt install bind9
Setelah terinstal, BIND akan otomatis dimulai. Anda dapat memeriksa statusnya dengan:
systemctl status bind9
Contoh keluaran:
● Named.service - Server Nama Domain BIND Dimuat:dimuat (/lib/systemd/system/named.service; diaktifkan; preset vendor:diaktifkan) Aktif:aktif (berjalan) sejak Minggu 17-05-2020 08:11 :26 UTC; 37 detik yang lalu Dokumen:man:named(8) PID Utama:13820 (named) Tugas:5 (batas:1074) Memori:14.3M CGroup:/system.slice/named.service 13820 /usr/sbin/named -f -u mengikat
Jika tidak berjalan, mulai dengan:
sudo systemctl start bind9
Edit file konfigurasi server DNS BIND.
sudo nano /etc/bind/named.conf.options
Tambahkan baris berikut untuk mengizinkan klien VPN mengirim kueri DNS rekursif.
izinkan-rekursi { 127.0.0.1; 10.10.10.0/24; };
Simpan dan tutup file. Mulai ulang BIND9 agar perubahan diterapkan.
sudo systemctl restart bind9
Kemudian Anda perlu menjalankan perintah berikut untuk mengizinkan klien VPN terhubung ke port 53.
sudo ufw insert 1 izinkan masuk dari 10.10.10.0/24
Langkah 7:Buka Port WireGuard di Firewall
Jalankan perintah berikut untuk membuka port UDP 51820 di server.
sudo ufw allow 51820/udp
Langkah 8:Mulai WireGuard
server
Jalankan perintah berikut di server untuk memulai WireGuard.
sudo wg-quick up /etc/wireguard/wg0.conf
Untuk menghentikannya, jalankan
sudo wg-quick down /etc/wireguard/wg0.conf
Anda juga dapat menggunakan layanan systemd untuk memulai WireGuard.
sudo systemctl start [dilindungi email]
Aktifkan mulai otomatis pada waktu boot sistem.
sudo systemctl aktifkan [dilindungi email]
Periksa statusnya dengan perintah berikut. Statusnya harus active (exited)
.
status systemctl [dilindungi email]
Sekarang server WireGuard siap menerima koneksi klien.
Klien
Mulai WireGuard.
sudo systemctl start [dilindungi email]
Aktifkan mulai otomatis pada waktu boot sistem.
sudo systemctl aktifkan [dilindungi email]
Periksa statusnya:
status systemctl [dilindungi email]
Sekarang buka situs web ini:http://icanhazip.com/
untuk memeriksa alamat IP publik Anda. Jika semuanya berjalan dengan baik, alamat IP publik server VPN Anda akan ditampilkan, bukan alamat IP publik komputer klien Anda.
Anda juga dapat menjalankan perintah berikut untuk mendapatkan alamat IP publik saat ini.
curl https://icanhazip.com
Kiat Pemecahan Masalah
Tes ping
Anda dapat melakukan ping dari server VPN ke klien VPN (ping 10.10.10.2
) untuk melihat apakah terowongan berfungsi. Jika Anda melihat pesan kesalahan berikut di ping,
ping:sendmsg:Kunci yang diperlukan tidak tersedia
mungkin AllowedIPs
parameter salah, seperti salah ketik.
Jika pesan kesalahan ping adalah
ping:sendmsg:Alamat tujuan diperlukan
bisa jadi kunci privat/publik salah di file konfigurasi Anda.
Tidak dapat menjelajah Internet
Jika terowongan VPN berhasil dibuat, tetapi alamat IP publik klien tidak berubah, itu karena aturan penyamaran atau penerusan dalam file konfigurasi UFW Anda tidak berfungsi. Saya pernah salah ketik di /etc/ufw/before.rules
file, yang menyebabkan komputer saya tidak dapat menjelajahi Internet.
Perhatikan bahwa saya tidak menyarankan menggunakan SaveConfig=true
di [Interface]
bagian dari file konfigurasi WireGuard. SaveConfig
memberitahu WireGuard untuk menyimpan konfigurasi runtime saat shutdown. Jadi jika Anda menambahkan [Peer]
additional tambahan di file konfigurasi dan kemudian restart WireGuard, konfigurasi Anda yang baru ditambahkan akan ditimpa.
Aktifkan logging Debug di Kernel Linux
Jika Anda menggunakan kernel Linux 5.6+, Anda dapat mengaktifkan logging debug untuk WireGuard dengan perintah berikut.
sudo su -echo module wireguard +p> /sys/kernel/debug/dynamic_debug/control
Kemudian Anda dapat melihat log debug dengan
sudo dmesg -wH
atau
sudo journalctl -kf
Mulai ulang
Jika VPN Anda masih tidak berfungsi, coba mulai ulang server VPN.
sudo systemctl restart [dilindungi email]
Kemudian hentikan klien VPN.
sudo systemctl stop [dilindungi email]
Dan tingkatkan paket perangkat lunak pada klien VPN.
sudo apt update; sudo apt upgrade
Selanjutnya, reboot klien VPN.
sudo shutdown -r nowsudo systemctl start [dilindungi email]
Menambahkan Klien VPN Tambahan
WireGuard dirancang untuk mengaitkan satu alamat IP dengan satu klien VPN. Untuk menambahkan lebih banyak klien VPN, Anda perlu membuat pasangan kunci privat/publik yang unik untuk setiap klien, lalu menambahkan kunci publik setiap klien VPN di file konfigurasi server (/etc/wireguard/wg0.conf
) seperti ini:
Setiap klien VPN akan memiliki alamat IP pribadi statis (10.10.10.2, 10.10.10.3, 10.10.10.4, dll). Mulai ulang server WireGuard agar perubahan diterapkan.
sudo systemctl restart [dilindungi email]
Kemudian tambahkan konfigurasi WireGuard pada setiap klien VPN seperti biasa.
Perutean Kebijakan, Tunneling Terpisah &Sakelar Pembunuh VPN
Sekarang saya akan menunjukkan cara menggunakan perutean kebijakan , penerowongan terpisah , dan tombol pemutus VPN dengan WireGuard VPN. Catatan bahwa tidak disarankan untuk menggunakannya bersama satu sama lain. Jika Anda menggunakan perutean kebijakan, Anda tidak boleh mengaktifkan tunneling terpisah atau sakelar pemutus VPN, dan sebaliknya.
Perutean Kebijakan
Secara default, semua lalu lintas pada klien VPN akan dialihkan melalui server VPN. Terkadang Anda mungkin hanya ingin merutekan jenis lalu lintas tertentu, berdasarkan protokol lapisan transport dan port tujuan. Ini dikenal sebagai perutean kebijakan.
Perutean kebijakan dikonfigurasi pada komputer klien, dan kita perlu menghentikan proses klien WireGuard.
sudo systemctl stop [dilindungi email]
Kemudian edit file konfigurasi klien.
sudo nano /etc/wireguard/wg-client0.conf
Misalnya, jika Anda menambahkan 3 baris berikut di [interface]
bagian, maka WireGuard akan membuat tabel perutean bernama "1234" dan menambahkan aturan ip ke dalam tabel perutean. Dalam contoh ini, lalu lintas akan dirutekan melalui server VPN hanya ketika TCP digunakan sebagai protokol lapisan transport dan port tujuan adalah 25, yaitu ketika komputer klien mengirim email.
Tabel =1234PostUp =aturan ip tambahkan tabel ipproto tcp dport 25 1234PreDown =aturan ip hapus tabel ipproto tcp dport 25 1234
Simpan dan tutup file. Kemudian mulai klien WireGuard lagi.
sudo systemctl start [dilindungi email]
Terowongan Terpisah
Secara default, semua lalu lintas pada klien VPN akan dialihkan melalui server VPN. Berikut cara mengaktifkan tunneling terpisah, jadi hanya traffic ke 10.10.10.0/24
Rentang IP akan disalurkan melalui WireGuard VPN. Ini berguna ketika Anda ingin membangun jaringan pribadi untuk beberapa server awan, karena klien VPN akan berjalan di server awan dan jika Anda menggunakan terowongan VPN penuh, maka Anda mungkin akan kehilangan koneksi ke server awan.
Edit file konfigurasi klien.
sudo nano /etc/wireguard/wg-client0.conf
Ubah
IP yang Diizinkan =0.0.0.0/0
Untuk
IP yang Diizinkan =10.10.10.0/24
Jadi lalu lintas akan dialihkan melalui VPN hanya ketika alamat tujuan berada dalam rentang IP 10.10.10.0/24. Simpan dan tutup file. Kemudian restart klien WireGuard.
sudo systemctl restart [dilindungi email]
Sakelar Pembunuh VPN
Secara default, komputer Anda dapat mengakses Internet melalui gateway normal ketika koneksi VPN terganggu. Anda mungkin ingin mengaktifkan fitur sakelar pemutus, yang mencegah aliran paket tidak terenkripsi melalui antarmuka non-WireGuard.
Hentikan proses klien WireGuard.
sudo systemctl stop [dilindungi email]
Edit file konfigurasi klien.
sudo nano /etc/wireguard/wg-client0.conf
Tambahkan dua baris berikut di [interface]
bagian.
PostUp =iptables -I OUTPUT ! -o %i -m tandai ! --mark $(wg tampilkan %i fwmark) -m addrtype ! --dst-type LOCAL -j REJECTPreDown =iptables -D OUTPUT ! -o %i -m tandai ! --mark $(wg tampilkan %i fwmark) -m addrtype ! --dst-type LOCAL -j REJECT
Seperti ini:
[Antarmuka]Alamat =10.10.10.2/24DNS =10.10.10.1PrivateKey =cOFA+x5UvHF+a3xJ6enLatG+DoE3I5PhMgKrMKkUyXI=PostUp =iptables -I OUTPUT ! -o %i -m tandai ! --mark $(wg tampilkan %i fwmark) -m addrtype ! --dst-type LOCAL -j REJECTPreDown =iptables -D OUTPUT ! -o %i -m tandai ! --mark $(wg tampilkan %i fwmark) -m addrtype ! --dst-type LOKAL -j TOLAK [Peer]PublicKey =kQvxOJI5Km4S1c7WXu2UZFpB8mHGuf3Gz8mmgTIF2U0=AllowedIPs =0.0.0.0/0Endpoint =12.34.56.78:51820PersistentKeepalive =25
Simpan dan tutup file. Kemudian mulai klien WireGuard.
sudo systemctl start [dilindungi email]
Menginstal Kernel Linux 5.x di Debian 10
Versi kernel Linux saat ini pada Debian 10 adalah 4.19. Pada langkah 1, kami menambahkan repositori backport di Debian 10. Repositori backport termasuk kernel Linux 5.10, pada saat penulisan ini. Anda mungkin tahu bahwa modul wireguard disertakan dalam kernel Linux mulai dari versi 5.4. Jika kita menginstal kernel Linux 5.10 pada Debian 10, kita tidak perlu membangun modul wireguard saat sistem mengupgrade kernel Linux. Faktanya, server Debian 10 saya pernah mengalami masalah dalam membangun modul wireguard dengan wireguard-dkms.
Perhatikan bahwa pada saat Anda membaca artikel ini, repositori backport Debian 10 mungkin telah menghapus kernel 5.10 dan menyertakan kernel 5.11. Cukup ganti 5.8 dengan 5.9 dalam perintah berikut.
Untuk menginstal kernel Linux 5.8 di server cloud Debian 10, jalankan perintah berikut.
sudo apt install linux-image-5.10.0-0.bpo.7-cloud-amd64 linux-headers-5.10.0-0.bpo.7-cloud-amd64
Untuk menginstal kernel Linux 5.8 pada PC Debian 10, jalankan perintah berikut.
sudo apt install linux-image-5.10.0-0.bpo.7-amd64 linux-headers-5.10.0-0.bpo.7-amd64
Kemudian restart kotak Debian 10 Anda.
sudo shutdown -r now
Periksa versi kernel Linux Anda.
uname -r
Contoh keluaran
5.10.0-0.bpo.7-cloud-amd64
Meskipun kita tidak lagi membutuhkan wireguard-dkms
paket, ini adalah ketergantungan untuk wireguard
paket, jadi kami tidak dapat menghapusnya dari sistem. Anda mungkin akan melihat kesalahan berikut saat memutakhirkan wireguard
paket.
Kesalahan! dkms.conf untuk modul ini menyertakan direktif BUILD_EXCLUSIVE yang tidak cocok dengan kernel/arch ini. Ini menunjukkan bahwa itu tidak boleh dibangun
Ini menunjukkan wireguard-dkms
sedang mencoba membangun wireguard
modul ke dalam kernel Linux, tetapi Linux 5.10 menyertakan wireguard
native asli modul, sehingga operasi pembangunan dicegah dan Anda dapat mengabaikan kesalahan ini.