mirror of
https://github.com/ditatompel/insights.git
synced 2025-01-08 03:12:06 +07:00
No featured post for ID
The featured posts image is not shown for ID articles, so I disable all ID featured posts.
This commit is contained in:
parent
f984c57952
commit
e13a117be4
3 changed files with 115 additions and 65 deletions
|
@ -6,8 +6,8 @@ date: 2022-09-09T19:47:48+07:00
|
|||
lastmod:
|
||||
draft: false
|
||||
noindex: false
|
||||
featured: true
|
||||
pinned: false
|
||||
featured: false
|
||||
pinned: true
|
||||
series:
|
||||
# -
|
||||
categories:
|
||||
|
|
|
@ -5,8 +5,8 @@ date: 2023-06-04T01:19:36+07:00
|
|||
lastmod:
|
||||
draft: false
|
||||
noindex: false
|
||||
featured: true
|
||||
pinned: false
|
||||
featured: false
|
||||
pinned: true
|
||||
# comments: false
|
||||
series:
|
||||
# -
|
||||
|
@ -211,4 +211,3 @@ Kita juga berharap bahwa teknologi **QUIC/HTTP3** segera masuk ke babak baru yan
|
|||
- Moh. Khory Alfarizi, Febriyan, "[Survei Indikator Politik Indonesia: 62,9 Persen Rakyat Semakin Takut Berpendapat](https://nasional.tempo.co/read/1580168/survei-indikator-politik-indonesia-629-persen-rakyat-semakin-takut-berpendapat)" - tempo.co .
|
||||
- Abba Gabrillin, Krisiandi, "[Selama 2018, Polisi Tangkap 122 Orang Terkait Ujaran Kebencian di Medsos](https://nasional.kompas.com/read/2019/02/15/15471281/selama-2018-polisi-tangkap-122-orang-terkait-ujaran-kebencian-di-medsos)" - kompas.com.
|
||||
- Tsarina Maharani, Dani Prabowo "[Kontras: Polisi Siber yang Akan Diaktifkan Pemerintah Berpotensi Bungkam Kebebasan Berekspresi](https://nasional.kompas.com/read/2020/12/28/14074121/kontras-polisi-siber-yang-akan-diaktifkan-pemerintah-berpotensi-bungkam)" - kompas.com.
|
||||
|
||||
|
|
|
@ -6,7 +6,8 @@ date: 2023-06-05T19:04:57+07:00
|
|||
lastmod:
|
||||
draft: false
|
||||
noindex: false
|
||||
featured: true
|
||||
featured: false
|
||||
pinned: true
|
||||
# comments: false
|
||||
nav_weight: 1000
|
||||
# nav_icon:
|
||||
|
@ -37,10 +38,9 @@ authors:
|
|||
- vie
|
||||
---
|
||||
|
||||
Cukup menggunakan VPS seharga *6 dolar* per bulan, Anda bisa memiliki **VPN** server sendiri menggunakan **WireGuard VPN**. Ikuti caranya di artikel berikut ini untuk menginstall, dan mensetting VPS **Ubuntu 22.04** menjadi **VPN server** Anda.
|
||||
Cukup menggunakan VPS seharga _6 dolar_ per bulan, Anda bisa memiliki **VPN** server sendiri menggunakan **WireGuard VPN**. Ikuti caranya di artikel berikut ini untuk menginstall, dan mensetting VPS **Ubuntu 22.04** menjadi **VPN server** Anda.
|
||||
|
||||
<!--more-->
|
||||
---
|
||||
## <!--more-->
|
||||
|
||||
Setelah [beberapa seri artikel tentang **VPN IPsec**](https://insights.ditatompel.com/en/series/ipsec-vpn/) (dalam bahasa Inggris), hari ini saya ingin berbagi bagaimana cara mensetting [**WireGuard VPN**](https://www.wireguard.com/) sebagai server VPN. Jika dibandingkan dengan [L2TP/xAuth](https://insights.ditatompel.com/en/tutorials/ipsec-l2tp-xauth-ikev2-vpn-server-auto-setup/) dan [IKEv2 VPN](https://insights.ditatompel.com/en/tutorials/set-up-ikev2-vpn-server-and-clients/) (artikel saya sebelumnya tentang **IPsec VPN** dalam bahasa Inggris), dari sisi performa, **WireGuard VPN jauh lebih unggul** karena menggunakan **UDP** dan bukan **TCP**.
|
||||
|
||||
|
@ -49,70 +49,81 @@ Setelah [beberapa seri artikel tentang **VPN IPsec**](https://insights.ditatompe
|
|||
Jika Anda memiliki kesulitan teknis untuk melakukan setup VPN server WireGuard sendiri, {{< bs/alert-link "saya dapat membantu Anda untuk melakukannya" "https://www.fiverr.com/s/4vzPGR" >}} dengan imbalan sedikit uang.
|
||||
{{< /bs/alert >}}
|
||||
|
||||
|
||||
## Prasyarat
|
||||
|
||||
- Sebuah **VPS** dengan alamat IP publik.
|
||||
- Nyaman dan terbiasa dengan Linux *command-line*.
|
||||
- Nyaman dan terbiasa dengan Linux _command-line_.
|
||||
- Pengetahuan dasar _subnetting_ di **IPv4** (_jujur saja, sayya tidak begitu familiar dengan subnetting di IPv6, jadi artikel ini hanya untuk IPv4_).
|
||||
|
||||
Untuk pemilihan *cloud provider* mana yang akan Anda gunakan, itu terserah Anda. Di artikel ini, saya akan mengguakan **Droplet** di [**DigitalOcean**](https://m.do.co/c/42d4ba96cc94) (*referral link*) untuk VPN server saya. (Anda bisa mendapatkan kredit sebesar 200 dolar yang valid untuk 60 hari secara cuma-cuma dengan menggunakan *link* referensi saya).
|
||||
Untuk pemilihan _cloud provider_ mana yang akan Anda gunakan, itu terserah Anda. Di artikel ini, saya akan mengguakan **Droplet** di [**DigitalOcean**](https://m.do.co/c/42d4ba96cc94) (_referral link_) untuk VPN server saya. (Anda bisa mendapatkan kredit sebesar 200 dolar yang valid untuk 60 hari secara cuma-cuma dengan menggunakan _link_ referensi saya).
|
||||
|
||||
> _**CATATAN**: Anda harus tahu bahwa **cloud provider biasanya membebankan biaya *extra* jika Anda melebihi batasan quota** yang telah mereka berikan._
|
||||
|
||||
> _VPS server yang saya gunakan untuk artikel ini akan saya hapus ketika artikel ini dipublikasikan._
|
||||
|
||||
## Memesan dan Menjalankan VPS Baru (DigitalOcean Droplet, opsional)
|
||||
|
||||
> _Jika Anda sudah memiliki VPS, Anda bisa lompati langkah pada sesi ini dah langsung menuju langkah berikutnya: "[Setup WireGuard Server](#setup-wireguard-server)._
|
||||
|
||||
1. Masuk ke *project* Anda dan buat **Droplet** baru dengan memilih **Create new Droplet**.
|
||||
2. Untuk menghindari *latency* yang tinggi, **pilihlah region yang paling dekat dengan lokasi Anda**. Jika Anda di Indonesia, maka saat ini region terdekat di DigitalOcean adalah Singapore. Namun untuk tutorial kali ini saya ingin mencoba menggunakan Droplet yang lokasinya berada di Frankfurt.
|
||||
1. Masuk ke _project_ Anda dan buat **Droplet** baru dengan memilih **Create new Droplet**.
|
||||
2. Untuk menghindari _latency_ yang tinggi, **pilihlah region yang paling dekat dengan lokasi Anda**. Jika Anda di Indonesia, maka saat ini region terdekat di DigitalOcean adalah Singapore. Namun untuk tutorial kali ini saya ingin mencoba menggunakan Droplet yang lokasinya berada di Frankfurt.
|
||||
3. Pilih sistem operasi untuk Droplet Anda, saya akan menggunakan **Ubuntu** `22.04 LTS`.
|
||||
4. Pilih paket (**Droplet size**). Saya akan mulai dari yang rendah saja, **1 CPU** dengan **1GB of RAM** dan **bandwidth 1TB per bulan** ($6/bulan).
|
||||
Sesuaikan paket / *Droplet Size* yang sesuai dengan kebutuhan Anda untuk menghindari kemungkinan terkena biaya ekstra atas pemakaian bandwidth yang melebihi kapasitas paket (1TB per bulan cukup untuk saya).
|
||||
5. Pilih metode autentikasi Anda untuk mengakses VPS, Saya lebih memilih menggunakan **SSH _public_ dan _private key_** daripada menggunakan authentikasi menggunakan *password*.
|
||||
6. Untuk opsi sisanya, biarkan *default* apa adanya. _Saya yakin **Anda tidak memerlukan opsi backup dan managed database** untuk VPN server ini._
|
||||
Sesuaikan paket / _Droplet Size_ yang sesuai dengan kebutuhan Anda untuk menghindari kemungkinan terkena biaya ekstra atas pemakaian bandwidth yang melebihi kapasitas paket (1TB per bulan cukup untuk saya).
|
||||
5. Pilih metode autentikasi Anda untuk mengakses VPS, Saya lebih memilih menggunakan **SSH _public_ dan _private key_** daripada menggunakan authentikasi menggunakan _password_.
|
||||
6. Untuk opsi sisanya, biarkan _default_ apa adanya. _Saya yakin **Anda tidak memerlukan opsi backup dan managed database** untuk VPN server ini._
|
||||
|
||||
> _**WireGuard** tidak membutuhkan **disk I/O** yang tinggi, jadi **VPS NVMe** tidak begitu penting (**SSD** sudah sangat cukup)._
|
||||
|
||||
## Setup WireGuard Server
|
||||
|
||||
> _**CATATAN PENTING**: Karena saya tidak begitu familiar dengan subnetting di **IPv6**, saya hanya akan menggunakan **IPv4** saja._
|
||||
|
||||
Setelah VPS kamu sudah siap dan sudah berjalan, saya sarankan untuk melakukan update OS terlebih dahulu menggunakan perintah `apt update && apt upgrade`, kemudian *restart* (`reboot`) VPS anda.
|
||||
Setelah VPS kamu sudah siap dan sudah berjalan, saya sarankan untuk melakukan update OS terlebih dahulu menggunakan perintah `apt update && apt upgrade`, kemudian _restart_ (`reboot`) VPS anda.
|
||||
|
||||
> _Jika Anda ingin bisa mengatur **WireGuard** peers (client) di server Anda dengan mudah, Anda mungkin tertarik untuk membaca "[Cara install WireGuard-UI untuk mengatur server VPN WireGuard dengan mudah]({{< ref "/tutorials/installing-wireguard-ui-to-manage-your-wireguard-vpn-server/index.id.md" >}})"._
|
||||
|
||||
### Install WireGuard
|
||||
Install WireGuard dengan menggunakan perintah `sudo apt install wireguard`. Setelah WireGuard berhasil diinstall, kita perlu membuat *private* dan *public key* untuk WireGuard server kita.
|
||||
|
||||
Install WireGuard dengan menggunakan perintah `sudo apt install wireguard`. Setelah WireGuard berhasil diinstall, kita perlu membuat _private_ dan _public key_ untuk WireGuard server kita.
|
||||
|
||||
> _Tips: Anda bisa membuat public key yang cantik (**vanity address**) untuk **WireGuard** menggunakan alat seperti [warner/wireguard-vanity-address](https://github.com/warner/wireguard-vanity-address)._
|
||||
|
||||
#### Membuat *Private Key*
|
||||
Anda bisa menggunakan perintah `wg genkey` untuk membuat *private key* Anda. Simpan *private key* Anda di tempat yang aman. Misalnya: di `/etc/wireguard/do_private.key` dengan *file permission* `600`.
|
||||
#### Membuat _Private Key_
|
||||
|
||||
Anda bisa menggunakan perintah `wg genkey` untuk membuat _private key_ Anda. Simpan _private key_ Anda di tempat yang aman. Misalnya: di `/etc/wireguard/do_private.key` dengan _file permission_ `600`.
|
||||
|
||||
```shell
|
||||
# membuat private key
|
||||
wg genkey | sudo tee /etc/wireguard/do_private.key
|
||||
# mengubah file permission
|
||||
sudo chmod 600 /etc/wireguard/do_private.key
|
||||
```
|
||||
*Private key* tersebut nantinya kita butuhkan untuk membuat *public key* untuk server WireGuard kita. Contoh WireGuard *private key* yang digunakan untuk artikel ini:
|
||||
|
||||
_Private key_ tersebut nantinya kita butuhkan untuk membuat _public key_ untuk server WireGuard kita. Contoh WireGuard _private key_ yang digunakan untuk artikel ini:
|
||||
|
||||
```
|
||||
uO0GDXBc+ZH5QsLmf+qRyCtFmUV1coadJvQp8iM0mEg=
|
||||
```
|
||||
|
||||
#### Membuat *Public Key*
|
||||
Sekarang, buat *public key* dari *private key* yang telah kita buat sebelumnya.
|
||||
#### Membuat _Public Key_
|
||||
|
||||
Sekarang, buat _public key_ dari _private key_ yang telah kita buat sebelumnya.
|
||||
|
||||
```shell
|
||||
sudo cat /etc/wireguard/do_private.key | wg pubkey | sudo tee /etc/wireguard/do_public.key
|
||||
```
|
||||
|
||||
*Public key* tersebut akan kita butuhkan untuk mengkonfigurasi koneksi WireGuard *client* (*peers*) kita. Contoh WireGuard *public key* yang digunakan untuk artikel ini:
|
||||
_Public key_ tersebut akan kita butuhkan untuk mengkonfigurasi koneksi WireGuard _client_ (_peers_) kita. Contoh WireGuard _public key_ yang digunakan untuk artikel ini:
|
||||
|
||||
```
|
||||
7c023YtKepRPNNKfGsP5f2H2VtfPvVptn8Hn6jjmaz8=
|
||||
```
|
||||
|
||||
### Mengkonfigurasi WireGuard Server
|
||||
Sebelum mengkonfigurasi server WireGuard Anda, Anda perlu memilih / menentukan *private network IP range* untuk koneksi WireGuard yang akan Anda gunakan. Anda harus menggunakan [private network IP ranges](https://en.wikipedia.org/wiki/Private_network#Private_IPv4_addresses) yang **valid**. Contoh:
|
||||
|
||||
Sebelum mengkonfigurasi server WireGuard Anda, Anda perlu memilih / menentukan _private network IP range_ untuk koneksi WireGuard yang akan Anda gunakan. Anda harus menggunakan [private network IP ranges](https://en.wikipedia.org/wiki/Private_network#Private_IPv4_addresses) yang **valid**. Contoh:
|
||||
|
||||
- Antara `10.0.0.0` - `10.255.255.255` (`10.0.0.0/8`)
|
||||
- Antara `172.16.0.0` - `172.31.255.255` (`172.16.0.0/12`)
|
||||
- Antara `192.168.0.0` - `192.168.255.255` (`192.168.0.0/16`)
|
||||
|
@ -121,9 +132,10 @@ Sebelum mengkonfigurasi server WireGuard Anda, Anda perlu memilih / menentukan *
|
|||
|
||||
Di artikel ini, saya akan menggunakan `10.10.88.0/24` untuk jaringan WireGuard saya.
|
||||
|
||||
Anda juga perlu menentukan *port* berapa (**UDP**) yang akan digunakan oleh WireGuard. Banyak perangkat jaringan di luar sana (seperti **Netgate**, **QNAP**, dan lain-lain) menggunakan **UDP** *port* **51280** untuk konfigurai WireGuard *default* mereka. Untuk artikel ini, saya akan menggunakan `UDP` port `51822`.
|
||||
Anda juga perlu menentukan _port_ berapa (**UDP**) yang akan digunakan oleh WireGuard. Banyak perangkat jaringan di luar sana (seperti **Netgate**, **QNAP**, dan lain-lain) menggunakan **UDP** _port_ **51280** untuk konfigurai WireGuard _default_ mereka. Untuk artikel ini, saya akan menggunakan `UDP` port `51822`.
|
||||
|
||||
Sekarang, kita sudah memiliki semua informasi dasar yang kita butuhkan supaya server WireGuard dapat dijalankan:
|
||||
|
||||
- Server Public IP: `xxx.xx.xx0.246`
|
||||
- Server Private key: `uO0GDXBc+ZH5QsLmf+qRyCtFmUV1coadJvQp8iM0mEg=`
|
||||
- Server Public Key: `7c023YtKepRPNNKfGsP5f2H2VtfPvVptn8Hn6jjmaz8=`
|
||||
|
@ -131,6 +143,7 @@ Sekarang, kita sudah memiliki semua informasi dasar yang kita butuhkan supaya se
|
|||
- WireGuard Network: `10.10.88.0/24`
|
||||
|
||||
Buat file dengan nama `wg0.conf` untuk konfigurasi WireGuard anda di folder `/etc/wireguard` dan isi dengan contoh konfigurasi berikut ini:
|
||||
|
||||
```plain
|
||||
# /etc/wireguard/wg0.conf
|
||||
|
||||
|
@ -140,43 +153,53 @@ Address = <YOUR_SERVER_WG_IP_ADDRESS> # Pada contoh artikel ini: 10.10.88.1/24
|
|||
ListenPort = <SERVER_UDP_LISTEN_PORT> # Pada contoh artikel ini: 51822
|
||||
SaveConfig = true
|
||||
```
|
||||
|
||||
> _**Catatan**: Dari konfigurasi diatas, perhatikan bahwa saya mengambil IP `10.10.88.1` untuk alamat IP server saya (di jaringan WireGuard)._
|
||||
|
||||
Ubah `<YOUR_SERVER_PRIVATE_KEY>`, `<YOUR_SERVER_IP_ADDRESS>`, `<SERVER_UDP_LISTEN_PORT>` dengan konfigurasi sesuai keinginan Anda.
|
||||
|
||||
#### Mengijinkan *IP forwarding*
|
||||
Di artikel ini, kita ingin memperbolehkan *peers* (*client* / perangkat yang terkoneksi ke jaringan WireGuard kita) untuk menggunakan WireGuard server sebagai *default gateway* mereka. Jadi semua lalu-lintas jaringan keluar (kecuali ke jaringan lokal **LAN/WLAN** Anda) dapat menggunakan server WireGuard ini. Jika Anda menggunakan WireGuard untuk *peer-to-peer* saja, Anda tidak memerlukan langkah ini.
|
||||
#### Mengijinkan _IP forwarding_
|
||||
|
||||
Di artikel ini, kita ingin memperbolehkan _peers_ (_client_ / perangkat yang terkoneksi ke jaringan WireGuard kita) untuk menggunakan WireGuard server sebagai _default gateway_ mereka. Jadi semua lalu-lintas jaringan keluar (kecuali ke jaringan lokal **LAN/WLAN** Anda) dapat menggunakan server WireGuard ini. Jika Anda menggunakan WireGuard untuk _peer-to-peer_ saja, Anda tidak memerlukan langkah ini.
|
||||
|
||||
Edit `/etc/sysctl.conf` dan di akhir file tersebut, tambahkan `net.ipv4.ip_forward=1`. Setelah itu jalankan perintah `sudo sysctl -p` untuk memuat ulang konfigurasi baru di `/etc/sysctl.conf` yang baru saja kita ubah.
|
||||
|
||||
```shell
|
||||
sudo sysctl -p
|
||||
```
|
||||
|
||||
Setelah itu, Anda perlu mengatur ulang konfigurasi *firewall* supaya *peers* (client) dapat melakukan koneksi ke server WireGuard dan lalu-lintas jaringan client ter-*routing* dengan benar.
|
||||
Setelah itu, Anda perlu mengatur ulang konfigurasi _firewall_ supaya _peers_ (client) dapat melakukan koneksi ke server WireGuard dan lalu-lintas jaringan client ter-_routing_ dengan benar.
|
||||
|
||||
#### Mengkonfigurasi Firewall
|
||||
Secara *default*, aplikasi **UFW** (program untuk memudahkan konfigurasi *firewall*) sudah terinstall di Ubuntu. Anda perlu menambahkan *port* yang digunakan oleh WireGuard supaya port tersebut terbuka dapat diakses dari mana saja.
|
||||
|
||||
Secara _default_, aplikasi **UFW** (program untuk memudahkan konfigurasi _firewall_) sudah terinstall di Ubuntu. Anda perlu menambahkan _port_ yang digunakan oleh WireGuard supaya port tersebut terbuka dapat diakses dari mana saja.
|
||||
|
||||
```shell
|
||||
sudo ufw allow OpenSSH
|
||||
sudo ufw allow proto udp to any port 51822
|
||||
```
|
||||
|
||||
Jika WireGuard port yang Anda konfigurasi bukan `51822`, ubah dan sesuaikan perintah diatas.
|
||||
|
||||
> _Perhatikan bahwa saya juga menambahkan **OpenSSH** ke *allow list* untuk menghindari terputusnya koneksi SSH ke server jika sebelumnya Anda belum mengkonfigurasi / mengaktifkan *firewall*._
|
||||
|
||||
Aktifkan / restart `ufw` dengan perintah:
|
||||
|
||||
```shell
|
||||
ufw enable # untuk mengaktifkan firewall, atau
|
||||
ufw reload # untuk merestart firewall
|
||||
```
|
||||
|
||||
Selanjutnya, Anda perlu mengetahui *interface* mana yang digunakan oleh server Anda sebagai *default route*-nya. untuk mengetahuinya, Anda bisa menggunakan perintah `ip route list default`. Contoh hasil dari perintah `ip route list default` saya:
|
||||
Selanjutnya, Anda perlu mengetahui _interface_ mana yang digunakan oleh server Anda sebagai _default route_-nya. untuk mengetahuinya, Anda bisa menggunakan perintah `ip route list default`. Contoh hasil dari perintah `ip route list default` saya:
|
||||
|
||||
```plain
|
||||
default via 164.90.160.1 dev eth0 proto static
|
||||
```
|
||||
Perhatikan kata setelah `dev`, itu adalah *default network interface*-nya. Dari contoh diatas, *default network interface* server saya adalah `eth0`.
|
||||
|
||||
Perhatikan kata setelah `dev`, itu adalah _default network interface_-nya. Dari contoh diatas, _default network interface_ server saya adalah `eth0`.
|
||||
|
||||
Sekarang, tambahkan konfigurasi berikut ke `/etc/wireguard/wg0.conf` pada bagian `[Interface]`:
|
||||
|
||||
```plain
|
||||
PostUp = ufw route allow in on wg0 out on eth0
|
||||
PostUp = iptables -t nat -I POSTROUTING -o eth0 -j MASQUERADE
|
||||
|
@ -184,9 +207,10 @@ PreDown = ufw route delete allow in on wg0 out on eth0
|
|||
PreDown = iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE
|
||||
```
|
||||
|
||||
Ubah `eth0` dari konfigurasi di atas dan sesuaikan dengan *default network interface* server Anda.
|
||||
Ubah `eth0` dari konfigurasi di atas dan sesuaikan dengan _default network interface_ server Anda.
|
||||
|
||||
Konfigurasi `/etc/wireguard/wg0.conf` Anda seharusnya mirip seperti berikut:
|
||||
|
||||
```plain
|
||||
# /etc/wireguard/wg0.conf
|
||||
|
||||
|
@ -202,13 +226,16 @@ PreDown = ufw route delete allow in on wg0 out on eth0
|
|||
PreDown = iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE
|
||||
```
|
||||
|
||||
Sekarang, server WireGuard kita sudah siap, cobalah untuk menjalankan *service* WireGuard menggunakan `wg-quick` (via `systemd`):
|
||||
Sekarang, server WireGuard kita sudah siap, cobalah untuk menjalankan _service_ WireGuard menggunakan `wg-quick` (via `systemd`):
|
||||
|
||||
```shell
|
||||
sudo systemctl start wg-quick@wg0.service
|
||||
```
|
||||
Perhatikan bahwa `wg0` diatas diambil dari nama konfigurasi file pada folder `/etc/wireguard` (tapi tanpa *file extension* `.conf`). Jika nama konfigurasi WireGuard-nya adalah `internal.conf`, Anda dapat menjalankan konfigurasi WireGuard tersebut menggunakan perintah `systemctl start wg-quick@internal.service`.
|
||||
|
||||
Setelah perinta diatas, pastikan *service* WireGuard berjalan dengan perintah `systemctl status wg-quick@wg0.service`:
|
||||
Perhatikan bahwa `wg0` diatas diambil dari nama konfigurasi file pada folder `/etc/wireguard` (tapi tanpa _file extension_ `.conf`). Jika nama konfigurasi WireGuard-nya adalah `internal.conf`, Anda dapat menjalankan konfigurasi WireGuard tersebut menggunakan perintah `systemctl start wg-quick@internal.service`.
|
||||
|
||||
Setelah perinta diatas, pastikan _service_ WireGuard berjalan dengan perintah `systemctl status wg-quick@wg0.service`:
|
||||
|
||||
```plain
|
||||
● wg-quick@wg0.service - WireGuard via wg-quick(8) for wg0
|
||||
Loaded: loaded (/lib/systemd/system/wg-quick@.service; enabled; vendor preset: enabled)
|
||||
|
@ -239,45 +266,57 @@ Jun 05 14:52:31 fra1-do1 systemd[1]: Finished WireGuard via wg-quick(8) for wg0.
|
|||
|
||||
> *Anda bisa menjalankan perintah `sudo systemctl enable wg-quick@wg0.service` agar service WireGuard berjalan otomatis setelah server dinyalakan atau *reboot*.*
|
||||
|
||||
## Konfigurasi WireGuard Peer (*client*)
|
||||
## Konfigurasi WireGuard Peer (_client_)
|
||||
|
||||
Pada sesi ini, saya akan menggunakan Linux (`wg-quick` via ``systemd`) sebagai contoh melakukan koneksi ke server WireGuard yang sudah kita konfigurasi sebelumnya. Untuk metode lain (seperti menggunakan **NetworkManager**), sistem operasi lain, atau koneksi dari ponsel, saya akan menambahkannya di lain artikel.
|
||||
|
||||
Mengkonfigurasi WireGuard *peer (client)* di Linux menggunakan `wg-quick` via `systemd` hampir sama seperti mengkonfigurasi server WireGuard. Perbedaannya adalah: Anda tidak memerlukan konfigurasi *IP forwarding* maupun *firewall* (kecuali Anda memiliki kebutuhan tertentu di mesin Linux Anda). Yang perlu Anda lakukan hanyalah menginstall WireGuard, membuat *private* dan *public key*, dan menentukan **DNS** server mana yang ingin Anda gunakan.
|
||||
Mengkonfigurasi WireGuard _peer (client)_ di Linux menggunakan `wg-quick` via `systemd` hampir sama seperti mengkonfigurasi server WireGuard. Perbedaannya adalah: Anda tidak memerlukan konfigurasi _IP forwarding_ maupun _firewall_ (kecuali Anda memiliki kebutuhan tertentu di mesin Linux Anda). Yang perlu Anda lakukan hanyalah menginstall WireGuard, membuat _private_ dan _public key_, dan menentukan **DNS** server mana yang ingin Anda gunakan.
|
||||
|
||||
### Membuat *Private* and *Public Key* (*Client Side*)
|
||||
Jika Anda sudah mempunyai pasangan *public & private key* untuk WireGuard sebelumnya, Anda bisa menggunakan *public & private key* tersebut dan langsung ke sesi berikutnya: "[Mengkonfigurasi WireGuard Peer (client)](#mengkonfigurasi-wireguard-peer-client)".
|
||||
### Membuat _Private_ and _Public Key_ (_Client Side_)
|
||||
|
||||
Jika Anda sudah mempunyai pasangan _public & private key_ untuk WireGuard sebelumnya, Anda bisa menggunakan _public & private key_ tersebut dan langsung ke sesi berikutnya: "[Mengkonfigurasi WireGuard Peer (client)](#mengkonfigurasi-wireguard-peer-client)".
|
||||
|
||||
> _Tips: Anda bisa membuat public key yang cantik (**vanity address**) untuk **WireGuard** menggunakan alat seperti [warner/wireguard-vanity-address](https://github.com/warner/wireguard-vanity-address)._
|
||||
|
||||
#### Membuat Peer Private key
|
||||
Anda bisa menggunakan perintah `wg genkey` untuk membuat *private key* Anda. Simpan *private key* Anda di tempat yang aman. Misalnya: di `/etc/wireguard/do_private.key` dengan *file permission* `600`.
|
||||
|
||||
Anda bisa menggunakan perintah `wg genkey` untuk membuat _private key_ Anda. Simpan _private key_ Anda di tempat yang aman. Misalnya: di `/etc/wireguard/do_private.key` dengan _file permission_ `600`.
|
||||
|
||||
```shell
|
||||
# membuat private key
|
||||
wg genkey | sudo tee /etc/wireguard/do_private.key
|
||||
# mengubah file permission
|
||||
sudo chmod 600 /etc/wireguard/do_private.key
|
||||
```
|
||||
*Private key* tersebut nantinya kita butuhkan untuk membuat *public key* untuk server WireGuard kita. Contoh WireGuard *private key* yang digunakan untuk artikel ini:
|
||||
|
||||
_Private key_ tersebut nantinya kita butuhkan untuk membuat _public key_ untuk server WireGuard kita. Contoh WireGuard _private key_ yang digunakan untuk artikel ini:
|
||||
|
||||
```
|
||||
WApLrVqFvXMbvsn+62DxfQCY8rsFqmHCEFAabAeA5WY=
|
||||
```
|
||||
|
||||
Change `/etc/wireguard/do_private.key` file permission with `sudo chmod 600 /etc/wireguard/do_private.key`.
|
||||
|
||||
#### Generate Peer Public Key
|
||||
Sekarang, buat *public key* dari *private key* yang telah kita buat sebelumnya.
|
||||
|
||||
Sekarang, buat _public key_ dari _private key_ yang telah kita buat sebelumnya.
|
||||
|
||||
```shell
|
||||
sudo cat /etc/wireguard/do_private.key | wg pubkey | sudo tee /etc/wireguard/do_public.key
|
||||
```
|
||||
|
||||
*Public key* tersebut akan kita butuhkan untuk ditambahkan ke konfigurasi server WireGuard kita. Contoh WireGuard *public key* yang digunakan untuk artikel ini:
|
||||
_Public key_ tersebut akan kita butuhkan untuk ditambahkan ke konfigurasi server WireGuard kita. Contoh WireGuard _public key_ yang digunakan untuk artikel ini:
|
||||
|
||||
```
|
||||
6gnV+QU7jG7BzwWrBbqiYpKQDGePYQunebkmvmFrxSk=
|
||||
```
|
||||
|
||||
### Mengkonfigurasi WireGuard Peer (client)
|
||||
Sebelum mengkonfigurasi WireGuard *peer* (*client*), Anda perlu memilih / menentukan *alamat IP private* untuk koneksi WireGuard peer yang akan Anda gunakan. Anda harus menggunakan alamat IP yang tidak terpakai dari *private network IP range* WireGuard server Anda. Di artikel ini, `10.10.88.1/24` sudah digunakan oleh server WireGuard, dan kita tidak bisa menggunakan alamat IP tersebut untuk *peer* / *client* kita. Maka dari itu, saya akan menggunakan `10.10.88.2/24` (atau `10.10.88.2/32`).
|
||||
|
||||
Sekarang, kita sudah memiliki semua informasi dasar yang kita butuhkan supaya untuk konfigurasi WireGuard *peer*:
|
||||
Sebelum mengkonfigurasi WireGuard _peer_ (_client_), Anda perlu memilih / menentukan _alamat IP private_ untuk koneksi WireGuard peer yang akan Anda gunakan. Anda harus menggunakan alamat IP yang tidak terpakai dari _private network IP range_ WireGuard server Anda. Di artikel ini, `10.10.88.1/24` sudah digunakan oleh server WireGuard, dan kita tidak bisa menggunakan alamat IP tersebut untuk _peer_ / _client_ kita. Maka dari itu, saya akan menggunakan `10.10.88.2/24` (atau `10.10.88.2/32`).
|
||||
|
||||
Sekarang, kita sudah memiliki semua informasi dasar yang kita butuhkan supaya untuk konfigurasi WireGuard _peer_:
|
||||
|
||||
- Server Public IP: `xxx.xx.xx0.246`
|
||||
- Server Public Key: `7c023YtKepRPNNKfGsP5f2H2VtfPvVptn8Hn6jjmaz8=`
|
||||
- Server Listen Port: `UDP` port `51822`
|
||||
|
@ -285,6 +324,7 @@ Sekarang, kita sudah memiliki semua informasi dasar yang kita butuhkan supaya un
|
|||
- Client IP address: `10.10.88.2/24`
|
||||
|
||||
Buat file dengan nama `wg-do1.conf` untuk konfigurasi WireGuard Anda di folder `/etc/wireguard` dan isi dengan contoh konfigurasi berikut ini:
|
||||
|
||||
```plain
|
||||
# /etc/wireguard/wg-do1.conf
|
||||
|
||||
|
@ -303,36 +343,45 @@ PersistentKeepalive = 15
|
|||
Ubah `<YOUR_PEER_PRIVATE_KEY>`, `<YOUR_PEER_IP_ADDRESS>`, `<YOUR_SERVER_PUBLIC_KEY>`, `<YOUR_SERVER_PUBLIC_IP_ADDRESS>`, dan `<SERVER_UDP_LISTEN_PORT>` dan sesuaikan dengan milik Anda.
|
||||
|
||||
Catatan:
|
||||
- `AllowedIPs` = `0.0.0.0/0` artinya semua lalu-lintas jaringan akan melalui *peer* tersebut (dalam hal ini, server WireGuard kita).
|
||||
Anda bisa menentukan / memilih *routing* menuju IP/*network* tertentu supaya melewati *peer* tertentu (Jika Anda terkoneksi ke banyak *peer* / server).
|
||||
Sebagai contoh, jika Anda hanya ingin mengarahkan lalu-lintas jaringan menuju IP 1.0.0.1 dan 8.8.4.4 melalui *peer* tertentu dan menggunakan konesi internet dari ISP Anda sebagai *default route*-nya, Anda bisa menghapus `0.0.0.0/0` dan menambahkan `1.0.0.1/32,8.8.4.4/32` (dipisahkan dengan tanda koma) untuk nilai dari `AllowedIPs`.
|
||||
- `PersistentKeepalive` = `15` : Berapa detik sekali *peer* mengirimkan *ping* ke server, supaya server dapat mencapai / berkomunikasi dengan peer yang berada dibalik **NAT**/firewall.
|
||||
|
||||
- `AllowedIPs` = `0.0.0.0/0` artinya semua lalu-lintas jaringan akan melalui _peer_ tersebut (dalam hal ini, server WireGuard kita).
|
||||
Anda bisa menentukan / memilih _routing_ menuju IP/_network_ tertentu supaya melewati _peer_ tertentu (Jika Anda terkoneksi ke banyak _peer_ / server).
|
||||
Sebagai contoh, jika Anda hanya ingin mengarahkan lalu-lintas jaringan menuju IP 1.0.0.1 dan 8.8.4.4 melalui _peer_ tertentu dan menggunakan konesi internet dari ISP Anda sebagai _default route_-nya, Anda bisa menghapus `0.0.0.0/0` dan menambahkan `1.0.0.1/32,8.8.4.4/32` (dipisahkan dengan tanda koma) untuk nilai dari `AllowedIPs`.
|
||||
- `PersistentKeepalive` = `15` : Berapa detik sekali _peer_ mengirimkan _ping_ ke server, supaya server dapat mencapai / berkomunikasi dengan peer yang berada dibalik **NAT**/firewall.
|
||||
- `DNS` Anda juga dapat menentukan DNS server yang ingin Anda gunakan dengan menentukan alamat IP DNS server pada konfigurasi `DNS`.
|
||||
|
||||
#### Menambahkan *Peers Public Key* ke WireGuard Server
|
||||
#### Menambahkan _Peers Public Key_ ke WireGuard Server
|
||||
|
||||
Setelah itu, Anda perlu menambahkan setiap peer public key ke konfigurasi WireGuard server. Hal ini perlu dilakukan agar peers (client) dapat melakukan koneksi ke WireGuard server. Ada 2 cara yang bisa dilakukan, tergantung dari konfigurasi server Anda.
|
||||
|
||||
Jika Anda mengikuti tutorial ini dengan setting `SaveConfig = true` pada server, maka Anda bisa menambahkan *peer public key* dengan perintah berikut di WireGuard Server:
|
||||
Jika Anda mengikuti tutorial ini dengan setting `SaveConfig = true` pada server, maka Anda bisa menambahkan _peer public key_ dengan perintah berikut di WireGuard Server:
|
||||
|
||||
```shell
|
||||
wg set wg0 peer 6gnV+QU7jG7BzwWrBbqiYpKQDGePYQunebkmvmFrxSk= allowed-ips 10.10.88.2
|
||||
```
|
||||
Ubah `wg0` sesuai dengan *interface* WireGuard Anda di server, `6gnV+QU7jG7BzwWrBbqiYpKQDGePYQunebkmvmFrxSk=` dengan *public key peer* Anda, dan `10.10.88.2` dengan alamat IP pada *IP range* WireGuard yang akan digunakan oleh peer.
|
||||
|
||||
Jika Anda tidak menggunakan setting `SaveConfig = true` pada server, maka Anda tinggal menambahkan informasi *peer* ke konfigurasi server (`/etc/wireguard/wg0.conf`). Contohnya:
|
||||
Ubah `wg0` sesuai dengan _interface_ WireGuard Anda di server, `6gnV+QU7jG7BzwWrBbqiYpKQDGePYQunebkmvmFrxSk=` dengan _public key peer_ Anda, dan `10.10.88.2` dengan alamat IP pada _IP range_ WireGuard yang akan digunakan oleh peer.
|
||||
|
||||
Jika Anda tidak menggunakan setting `SaveConfig = true` pada server, maka Anda tinggal menambahkan informasi _peer_ ke konfigurasi server (`/etc/wireguard/wg0.conf`). Contohnya:
|
||||
|
||||
```plain
|
||||
[Peer]
|
||||
PublicKey = 6gnV+QU7jG7BzwWrBbqiYpKQDGePYQunebkmvmFrxSk=
|
||||
AllowedIPs = 10.10.88.2/32
|
||||
```
|
||||
Ubah `6gnV+QU7jG7BzwWrBbqiYpKQDGePYQunebkmvmFrxSk=` dengan *public key peer* Anda, dan `10.10.88.2` dengan alamat IP pada *IP range* WireGuard yang akan digunakan oleh peer.
|
||||
|
||||
jangan lupa untuk melakukan *restart* WireGuard *service* setiap Anda melakukan perubahan pada file `/etc/wireguard/wg0.conf`.
|
||||
Ubah `6gnV+QU7jG7BzwWrBbqiYpKQDGePYQunebkmvmFrxSk=` dengan _public key peer_ Anda, dan `10.10.88.2` dengan alamat IP pada _IP range_ WireGuard yang akan digunakan oleh peer.
|
||||
|
||||
jangan lupa untuk melakukan _restart_ WireGuard _service_ setiap Anda melakukan perubahan pada file `/etc/wireguard/wg0.conf`.
|
||||
|
||||
```shell
|
||||
sudo systemctl restart wg-quick@wg0.service
|
||||
```
|
||||
|
||||
### Melakukan koneksi ke Server
|
||||
Sekarang, konfigurasi *peer* (*client*) sudah selesai, Anda dapat mencoba melakukan koneksi ke WireGuard server dengan `wg-quick` via `systemd`:
|
||||
|
||||
Sekarang, konfigurasi _peer_ (_client_) sudah selesai, Anda dapat mencoba melakukan koneksi ke WireGuard server dengan `wg-quick` via `systemd`:
|
||||
|
||||
```shell
|
||||
sudo systemctl start wg-quick@wg-do1.service
|
||||
```
|
||||
|
@ -344,19 +393,21 @@ sudo systemctl start wg-quick@wg-do1.service
|
|||
|
||||
> _**Note 3**: Pengguna Linux yang menggunakan `systemd-resolved` harus memastikan bahwa `systemd-resolvconf` terinstall di sistem operasi yang digunakan._
|
||||
|
||||
Untuk memverifikasi bahwa konfigurasi sudah benar dan bekerja, coba melakukan pengecekan IP publik Anda dari *browser* atau terminal menggunakan `wg show` atau `curl ifconfig.me`.
|
||||
Untuk memverifikasi bahwa konfigurasi sudah benar dan bekerja, coba melakukan pengecekan IP publik Anda dari _browser_ atau terminal menggunakan `wg show` atau `curl ifconfig.me`.
|
||||
|
||||
![wg show](wg-show.png#center)
|
||||
|
||||
![What is my IP](wg-vpn-do-ip.png#center)
|
||||
|
||||
## Kesimpulan
|
||||
WireGuard adalah protokol VPN favorit saya. Performanya cepat dan lebih hemat *resource* jika dibandingkan dengan protokol VPN lainnya. Ia juga bisa digunakan untuk koneksi *peer-to-peer*, koneksi *client-server* atau membuat *mesh network* yang aman.
|
||||
|
||||
Ketika dikombinasikan dengan **Nginx** sebagai *reverse proxy*, Anda bahkan bisa mengekspose / server HTTP di jaringan lokal Anda yang berada dibalik **NAT**/*firewall* ke internet.
|
||||
WireGuard adalah protokol VPN favorit saya. Performanya cepat dan lebih hemat _resource_ jika dibandingkan dengan protokol VPN lainnya. Ia juga bisa digunakan untuk koneksi _peer-to-peer_, koneksi _client-server_ atau membuat _mesh network_ yang aman.
|
||||
|
||||
Akan tetapi, melakukan *maintenance* pada jaringan WireGuard yang besar bisa sangat kompleks dan susah dilakukan. Namun, ada *software* yang dapat membantu Anda untuk membantu mengatur hal itu, salah satu contohnya adalah [Netmaker](https://www.netmaker.io/).
|
||||
Ketika dikombinasikan dengan **Nginx** sebagai _reverse proxy_, Anda bahkan bisa mengekspose / server HTTP di jaringan lokal Anda yang berada dibalik **NAT**/_firewall_ ke internet.
|
||||
|
||||
Akan tetapi, melakukan _maintenance_ pada jaringan WireGuard yang besar bisa sangat kompleks dan susah dilakukan. Namun, ada _software_ yang dapat membantu Anda untuk membantu mengatur hal itu, salah satu contohnya adalah [Netmaker](https://www.netmaker.io/).
|
||||
|
||||
### Catatan Tambahan
|
||||
- Jika Anda memiliki kesulitan teknis untuk melakukan *setup* VPN server WireGuard sendiri, [saya dapat membantu Anda untuk melakukannya](https://www.fiverr.com/s/4vzPGR) dengan imbalan sedikit uang.
|
||||
|
||||
- Jika Anda memiliki kesulitan teknis untuk melakukan _setup_ VPN server WireGuard sendiri, [saya dapat membantu Anda untuk melakukannya](https://www.fiverr.com/s/4vzPGR) dengan imbalan sedikit uang.
|
||||
- Untuk dapat menghubungi saya, silahkan kunjungi [https://www.ditatompel.com/about](https://www.ditatompel.com/about).
|
||||
|
|
Loading…
Reference in a new issue