GNU/Linux >> Belajar Linux >  >> Cent OS

Cara mengatur VPN Wireguard di CentOS 8

Wireguard adalah implementasi VPN lintas platform sumber terbuka yang menggunakan kriptografi canggih. Ini lebih cepat, lebih sederhana, dan lebih fungsional daripada protokol IPSec dan OpenVPN. Ini dirancang sebagai VPN tujuan umum untuk berjalan pada antarmuka dan superkomputer yang disematkan dan berjalan di Linux, Windows, macOS, iOS, Android, BSD, dan berbagai platform lainnya.

Tutorial ini akan membahas cara menginstal Wireguard VPN pada server berbasis CentOS 8 dan menghubungkannya menggunakan klien Linux(CentOS/Fedora/Ubuntu).

Langkah 1 - Perbarui Sistem

Sebelum melanjutkan lebih jauh, penting untuk memperbarui sistem Anda untuk menginstal pembaruan terbaru.

$ sudo dnf update

Langkah 2 - Instal dan Aktifkan repo EPEL

Paket Wireguard yang diperlukan dapat ditemukan di repositori EPEL sehingga kita perlu menginstal dan mengaktifkannya.

$ sudo dnf install epel-release
$ sudo dnf config-manager --set-enabled PowerTools

Kami juga mengaktifkan repositori PowerTools karena paket EPEL bergantung padanya.

Langkah 3 - Instal Wireguard

Aktifkan repositori Wireguard.

$ sudo dnf copr enable jdoss/wireguard

Instal Wireguard.

$ sudo dnf install wireguard-dkms wireguard-tools

Langkah ini juga menginstal compiler GNU GCC yang diperlukan untuk membangun modul Kernel Linux.

Langkah 4 - Konfigurasikan Server Wireguard

Buat file konfigurasi kosong di server untuk pengaturan Wireguard dengan izin yang sesuai.

$ sudo mkdir /etc/wireguard
$ sudo sh -c 'umask 077; touch /etc/wireguard/wg0.conf'

Perintah sentuh membuat file wg0-server.conf file di /etc/wireguard direktori.

Selanjutnya, buat pasangan kunci privat/publik untuk server Wireguard.

$ cd /etc/wireguard
$ sudo sh -c 'umask 077; wg genkey | tee privatekey | wg pubkey > publickey'

Ini membuat kunci publik dan pribadi untuk Wireguard dan menulisnya ke file masing-masing.

Lihat kunci pribadi yang baru saja kita buat.

$ sudo cat privatekey

Catat kuncinya dan salin karena kita akan membutuhkannya untuk mengonfigurasi Wireguard.

Selanjutnya, edit file konfigurasi.

$ sudo nano /etc/wireguard/wg0.conf

Tambahkan kode berikut.

[Interface]
## VPN server private IP address ##
Address = 192.168.10.1/24
 
## VPN server port - You can choose any port ##
ListenPort = 37822
 
## VPN server's private key i.e. /etc/wireguard/privatekey - the one from above ##
PrivateKey = GCEXafeZKqSsuLfvuHE+zLzMYwoH4qQyBh7MZ4f/3kM=
 
## Save and update this config file when a new peer (vpn client) added ##
SaveConfig = true

Setiap konfigurasi memiliki satu bagian yang disebut [Interface] di mana bagian server ditentukan.

Ini berisi kunci pribadi dari server WireGuard lokal, port UDP yang harus mendengarkan koneksi masuk dan alamat IP VPN-nya sendiri.

Kami juga mengatur SaveConfig untuk true . Ini akan memberi tahu layanan Wireguard untuk secara otomatis menyimpan konfigurasi aktifnya ke file ini saat dimatikan.

Tekan Ctrl + W untuk menutup file dan memasukkan Y saat diminta untuk menyimpan file.

Langkah 5 - Konfigurasi Firewall

Kita perlu membuka port yang kita pilih untuk Wireguard.

Pertama, kita perlu mendefinisikan layanan Wireguard untuk firewall. Untuk melakukannya, buat file wireguard.xml dengan editor Nano.

$ sudo nano /etc/firewalld/services/wireguard.xml

Rekatkan kode berikut ke dalam file.

<?xml version="1.0" encoding="utf-8"?>
<service>
  <short>wireguard</short>
  <description>WireGuard open UDP port 37822 for client connections</description>
  <port protocol="udp" port="37822"/>
</service>

Tekan Ctrl + W untuk menutup file dan memasukkan Y saat diminta untuk menyimpan file.

Selanjutnya, aktifkan layanan Wireguard di firewall.

$ sudo firewall-cmd --permanent --add-service=wireguard

Aktifkan penyamaran sehingga semua lalu lintas masuk dan keluar dari 192.168.10.0/24 dirutekan melalui alamat IP publik server kami 203.1.114.98/24 .

$ sudo firewall-cmd --permanent --add-masquerade

Terakhir, muat ulang firewall untuk mengaktifkan aturan.

$ sudo firewall-cmd --reload

Buat daftar aturan firewall saat ini untuk mengonfirmasi.

$ sudo firewall-cmd --list-all
public (active)
  target: default
  icmp-block-inversion: no
  interfaces: eth0
  sources: 
  services: wireguard ssh
  ports: 
  protocols: 
  masquerade: yes
  forward-ports: 
  source-ports: 
  icmp-blocks: 
  rich rules: 

Langkah 6 - Aktifkan Penerusan IPv4

Buat /etc/sysctl.d/99-custom.conf berkas.

$ sudo nano /etc/sysctl.d/99-custom.conf

Rekatkan kode berikut ke dalam file.

## Turn on bbr ##
net.core.default_qdisc = fq
net.ipv4.tcp_congestion_control = bbr
 
## for IPv4 ##
net.ipv4.ip_forward = 1
 
## Turn on basic protection/security ##
net.ipv4.conf.default.rp_filter = 1
net.ipv4.conf.all.rp_filter = 1
net.ipv4.tcp_syncookies = 1

## for IPv6 ##
net.ipv6.conf.all.forwarding = 1

Tekan Ctrl + W untuk menutup file dan memasukkan Y saat diminta untuk menyimpan file.

Cakupan kode dalam file di atas berada di luar cakupan tutorial ini jadi untuk saat ini, gunakan saja apa adanya.

Muat ulang perubahan.

$ sudo sysctl -p /etc/sysctl.d/99-custom.conf

Secara default, firewall tidak akan membiarkan wg0 dan eth0 antarmuka berbicara satu sama lain. Jadi kita perlu menambahkan antarmuka Wireguard ke jaringan internal dan mengaktifkan penyamaran.

$ sudo firewall-cmd --add-interface=wg0 --zone=internal
$ sudo firewall-cmd --permanent --zone=internal --add-masquerade

Langkah 7 - Aktifkan dan Mulai Layanan Wireguard

Selanjutnya, kita perlu mengaktifkan dan memulai layanan Wireguard.

$ sudo systemctl enable [email protected]
$ sudo systemctl start [email protected]

Anda dapat memverifikasi apakah antarmuka Wireguard, wg0 aktif dan berjalan dengan menggunakan perintah berikut.

$ sudo wg
interface: wg0
  public key: VWndJ4oB7ZJwC/7UOm++OLDrbAxMPsR2yd0cl3sEkUI=
  private key: (hidden)
  listening port: 37822

$ sudo ip a show wg0
3: wg0: <POINTOPOINT,NOARP,UP,LOWER_UP> mtu 1420 qdisc noqueue state UNKNOWN group default qlen 1000
    link/none
    inet 192.168.10.1/24 scope global wg0
       valid_lft forever preferred_lft forever

Langkah 8 - Instal dan Konfigurasikan Klien WireGuard

Anda dapat menemukan petunjuk penginstalan untuk klien Wireguard untuk distribusi Linux Anda dari halaman penginstalan resmi mereka.

Setelah Anda menginstal klien, Anda perlu membuat file konfigurasi klien.

$ sudo mkdir /etc/wireguard
$ sudo sh -c 'umask 077; touch /etc/wireguard/wg0.conf'
$ cd /etc/wireguard/
$ sudo sh -c 'umask 077; wg genkey | tee privatekey | wg pubkey > publickey'
$ sudo cat privatekey

Perhatikan kunci pribadi yang Anda dapatkan di bagian akhir. Selanjutnya, kita perlu mengedit file konfigurasi yang baru saja kita buat.

$ sudo nano /etc/wireguard/wg0.conf

Tambahkan arahan berikut ke file.

[Interface]
## client private key ##
PrivateKey = OEM6D/zt2fVWOepVv3iEDD430V0gAshKp4+5oVVt5EE=
 
## client ip address ##
Address = 192.168.10.2/24
 
[Peer]
## CentOS 8 server public key ##
PublicKey = VWndJ4oB7ZJwC/7UOm++OLDrbAxMPsR2yd0cl3sEkUI=
 
## set ACL ##
AllowedIPs = 192.168.10.0/24
 
## Your CentOS 8 server's public IPv4/IPv6 address and port ##
Endpoint = 203.1.114.98:37822
 
##  Key connection alive ##
PersistentKeepalive = 15

Perhatikan bahwa kami menetapkan IP pribadi 192.168.10.1 ke server dan 192.168.10.2 kepada klien. Kami juga menambahkan kunci pribadi klien ke file.

[Peer] bagian adalah tempat Anda memasukkan konfigurasi server yang akan disambungkan klien. Di sini kami telah menambahkan kunci publik, IP publik, dan satu set IP yang Diizinkan yang berisi IP pribadi server kami. PersistentKeepalive memberitahu WireGuard untuk mengirim paket UDP setiap 15 detik, ini berguna jika Anda berada di belakang NAT dan ingin menjaga koneksi tetap hidup.

Tekan Ctrl + W untuk menutup file dan memasukkan Y saat diminta untuk menyimpan file.

Sekarang saatnya untuk mengaktifkan dan memulai klien VPN.

$ sudo systemctl enable [email protected]
$ sudo systemctl start [email protected]
$ sudo systemctl status [email protected]

Langkah 9 - Konfigurasi Server untuk Menambahkan Klien

Sekarang, kita perlu menambahkan konfigurasi klien ke server lagi untuk memberitahukannya tentang klien.

Hentikan layanan Wireguard terlebih dahulu.

$ sudo systemctl stop [email protected]

Buka file wg0.conf untuk diedit.

$ sudo nano /etc/wireguard/wg0.conf

Tambahkan kode berikut di akhir file.

[Peer] 
## client VPN public key ## 
PublicKey = dmfO9pirB315slXOgxXtmrBwAqPy07C57EvPks1IKzA=  

## client VPN IP address (note /32 subnet) ## 
AllowedIPs = 192.168.10.2/32

Tekan Ctrl + W untuk menutup file dan memasukkan Y saat diminta untuk menyimpan file.

[Peer] bagian menentukan anggota lain dari jaringan VPN. Anda dapat menambahkan sebanyak yang diperlukan.

Mereka berisi kunci publik mereka, yang harus cocok dengan kunci pribadi rekan-rekan di [Interface] bagian.

Perhatikan bahwa koneksi masuk apa pun pertama-tama diautentikasi terhadap salah satu kunci publik. Jika koneksi bukan dari rekan yang diverifikasi, paket yang masuk akan diabaikan secara diam-diam. Karena koneksi dari host yang tidak memiliki kunci pribadi yang cocok tidak dijawab sama sekali, VPN WireGuard tidak hanya menyediakan komunikasi terenkripsi, tetapi juga tetap tersembunyi dari orang luar.

Mulai layanan Wireguard lagi.

$ sudo systemctl start [email protected]

Langkah 10 - Uji

Mari kita periksa apakah klien dan server terhubung dengan aman menggunakan VPN. Untuk menguji koneksi, jalankan perintah berikut di klien Anda.

$ ping -c 192.168.10.1
PING 192.168.10.1 (192.168.10.1) 56(84) bytes of data.
64 bytes from 192.168.10.1: icmp_seq=1 ttl=64 time=44.2 ms
64 bytes from 192.168.10.1: icmp_seq=2 ttl=64 time=45.8 ms
64 bytes from 192.168.10.1: icmp_seq=3 ttl=64 time=46.7 ms
64 bytes from 192.168.10.1: icmp_seq=4 ttl=64 time=44.1 ms

--- 192.168.10.1 ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 2800ms
rtt min/avg/max/mdev = 41.729/47.829/48.953/5.046 ms

$ sudo wg
interface: wg0
  public key: dmfO9pirB315slXOgxXtmrBwAqPy07C57EvPks1IKzA= 
  private key: (hidden)
  listening port: 
 
peer: VWndJ4oB7ZJwC/7UOm++OLDrbAxMPsR2yd0cl3sEkUI=
  endpoint: 203.1.114.98:37822
  allowed ips: 192.168.10.0/24
  latest handshake: 1 minute, 40 seconds ago
  transfer: 938 B received, 45.67 KiB sent
  persistent: keepalive: every 15 seconds

Kesimpulan

Itu saja yang ada untuk tutorial ini. Anda sekarang harus memiliki server VPN berbasis Wireguard yang berbasis Server CentOS 8. Jika Anda memiliki pertanyaan, tanyakan di komentar di bawah.


Cent OS
  1. Cara Mengatur VPN WireGuard di Ubuntu 20.04

  2. Cara Mengatur VPN WireGuard di Ubuntu (Panduan Langkah-demi-Langkah)

  3. Mengatur Server DHCP di CentOS 8 - Bagaimana Caranya?

  1. Cara mengatur/mengubah nama host di CentOS 7 Linux

  2. Cara Mengatur Lokal Sistem di CentOS 7

  3. Cara Mengatur VPN WireGuard di CentOS 8

  1. Cara Mengatur VPN WireGuard di Ubuntu 18.04

  2. Cara Mengatur VPN WireGuard di Ubuntu 20.04

  3. Cara Mengatur VPN WireGuard di CentOS 8