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

Siapkan Server VPN WireGuard Anda Sendiri di CentOS/RHEL

Tutorial ini akan menunjukkan kepada Anda cara mengatur server VPN WireGuard Anda sendiri di CentOS/RHEL. 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 CentOS/Alma Linux/Rocky Linux, ikuti petunjuk di bawah ini.

Tutorial ini mengasumsikan bahwa server VPN dan klien VPN keduanya menjalankan CentOS/RHEL sistem operasi.

Langkah 1:Instal WireGuard di CentOS/RHEL Server dan Desktop

Masuk ke server CentOS/RHEL Anda, lalu jalankan perintah berikut untuk menginstal WireGuard.

CentOS 8

sudo dnf install elrepo-release epel-release -ysudo dnf install kmod-wireguard wireguard-tools -y

RHEL 8

sudo dnf install https://www.elrepo.org/elrepo-release-8.el8.elrepo.noarch.rpmsudo dnf install https://dl.fedoraproject.org/pub/epel/epel-release-latest -8.noarch.rpmsudo dnf install kmod-wireguard wireguard-tools -y

CentOS/RHEL 7

sudo yum install epel-release https://www.elrepo.org/elrepo-release-7.el7.elrepo.noarch.rpmsudo yum install yum-plugin-elreposudo yum install kmod-wireguard wireguard-tools -y 

Kemudian gunakan perintah yang sama untuk menginstal WireGuard di komputer CentOS/RHEL lokal Anda (klien VPN).

Langkah 2:Buat Pasangan Kunci Publik/Pribadi

Server

Buat direktori untuk WireGuard.

sudo mkdir -p /etc/wireguard/

Jalankan perintah berikut di server CentOS/RHEL 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

Buat direktori untuk WireGuard.

sudo mkdir -p /etc/wireguard/

Jalankan perintah berikut untuk membuat pasangan kunci publik/pribadi di komputer CentOS/RHEL 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 CentOS/RHEL. wg0 akan menjadi nama antarmuka jaringan.

sudo dnf install nanosudo 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 CentOS/RHEL 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=[Peer]PublicKey =vxyo4l4I3jWK+KZIP =. 51820PersistentKeepalive =25

Dimana:

  • 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

Jalankan perintah berikut untuk mengaktifkan penyamaran IP untuk 10.10.10.0/24 subnet di firewall server.

sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="10.10.10.0/24" masquerade'sudo systemctl reload firewalld

Ini akan menyembunyikan jaringan VPN 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.

Jika CentOS/RHEL Anda tidak dapat menemukan firewall-cmd perintah, Anda perlu menginstal firewalld dan memulai layanan.

sudo dnf install firewalldsudo systemctl start firewalld

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 dnf install bind

Mulai BIND 9 dengan:

sudo systemctl start bernama

Dan aktifkan mulai otomatis saat boot:

sudo systemctl aktifkan bernama

Anda dapat memeriksa statusnya dengan:

status systemctl bernama

Contoh keluaran:

● bernama.service - Berkeley Internet Name Domain (DNS) Dimuat:dimuat (/usr/lib/systemd/system/named.service; diaktifkan; preset vendor:nonaktifkan> Aktif:aktif (berjalan) sejak Minggu 2020-05 -17 11:07:34 EDT; 9 detik yang lalu Proses:7203 ExecStop=/bin/sh -c /usr/sbin/rndc stop>
 /dev/null 2>&1 || /bin/kill -TE> Proses:7218 ExecStart =/usr/sbin/named -u bernama -c ${NAMEDCONF} $OPTIONS (kode=keluar,> Proses:7215 ExecStartPre=/bin/bash -c if [ ! "$DISABLE_ZONE_CHECKING" =="ya" ];> PID Utama:7220 (bernama) Tugas:4 (batas:5045) Memori:55,5M CGroup:/system.slice/named.service 7220 /usr/sbin/named -u bernama -c /etc/named.conf -4

Petunjuk:Jika perintah di atas tidak segera berhenti, tekan Q.

Edit file konfigurasi utama BIND /etc/named.conf .

sudo nano /etc/named.conf

Di options klausa, Anda dapat menemukan dua baris berikut.

mendengarkan port 53 { 127.0.0.1; };dengarkan-di-v6 port 53 { ::1; };

Ini membuat named dengarkan di localhost saja. Jika Anda ingin mengizinkan klien di jaringan yang sama untuk menanyakan nama domain, beri komentar pada dua baris ini. (tambahkan garis miring ganda di awal setiap baris)

// mendengarkan port 53 { 127.0.0.1; };// listen-on-v6 port 53 { ::1; };

Temukan baris berikut.

allow-query { localhost; };

Tambahkan rentang jaringan 10.10.10.0/24 sehingga klien VPN dapat mengirim kueri DNS. Perhatikan bahwa Anda harus mengakhiri setiap rentang jaringan dengan titik koma.

allow-query { localhost; 10.10.10.0/24; };

Simpan dan tutup file. Mulai ulang BIND9 agar perubahan diterapkan.

sudo systemctl restart bernama

Kemudian Anda perlu menjalankan perintah berikut untuk mengizinkan klien VPN terhubung ke port 53.

sudo firewall-cmd --zone=public --permanent --add-rich-rule='rule family="ipv4" source address="10.10.10.0/24" accept'

Langkah 7:Buka Port WireGuard di Firewall

Jalankan perintah berikut untuk membuka port UDP 51820 di server.

sudo firewall-cmd --permanent --add-port=51820/udpsudo systemctl reload firewalld

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]

Jika awal gagal, Anda harus memeriksa log untuk mencari tahu apa yang salah.

sudo journalctl -eu [dilindungi email]

Aktifkan mulai otomatis pada waktu boot sistem dengan perintah berikut.

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]

Jika awal gagal, Anda harus memeriksa log untuk mencari tahu apa yang salah.

sudo journalctl -eu [dilindungi email]

Jika Anda melihat kesalahan berikut di log, Anda dapat mencoba me-reboot OS.

RTNETLINK menjawab:Operasi tidak didukung

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

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 terowongan VPN berhasil dibuat, tetapi alamat IP publik klien tidak berubah, itu karena penyamaran di firewall tidak berfungsi. Saya pernah salah ketik pada aturan firewall, 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.

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 dnf update

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:

[Alamat]Alamat =10.10.10.1/24PrivateKey =UIFH+XXjJ0g0uAZJ6vPqsbb/o68SYVQdmYJpy/FlGFA=ListenPort =51820[Peer]PublicKey =75VNV7HqFh+3QIT5OHZkcjWf. 1Z/3rtl0i7cJorcinB7T4UOIzScifPNEIESFD8=AllowedIPs =10.10.10.3/32[Peer]PublicKey =EVstHZc6QamzPgefDGPLFEjGyedJk6SZbCJttpzcvC8=10.pre10.10.4/32.

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 di komputer klien, dan kita harus menghentikan koneksi VPN terlebih dahulu.

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 LOCAL -j REJECT[Peer]PublicKey =RaoAdsIEIwgV9DHNSSubxWVG+nZ1GP/c3OU6A/efBJ0I=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]

Cent OS
  1. Cara mengatur VPN Wireguard di CentOS 8

  2. Siapkan Server SysLog di CentOS 6 / RHEL 6

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

  1. Siapkan server VPN di PC Linux Anda

  2. Cara mengatur server SFTP di Server Rocky Linux/CentOS 8

  3. Cara Mengatur VPN WireGuard di CentOS 8

  1. Cara Mengatur VPN WireGuard di CentOS 8

  2. Cara Mengatur Server OpenVPN di CentOS 7

  3. Cara Menginstal OpenLiteSpeed ​​Web Server di CentOS 8/RHEL 8