GNU/Linux >> Belajar Linux >  >> Debian

Siapkan OpenConnect VPN Server (ocserv) di Debian 11 Bullseye

Tutorial ini akan menunjukkan cara menjalankan server VPN Anda sendiri dengan menginstal server OpenConnect VPN di Debian 11 Bullseye . Server VPN OpenConnect, alias ocserv , adalah implementasi sumber terbuka dari protokol VPN Cisco AnyConnnect, yang banyak digunakan di bisnis dan universitas. AnyConnect adalah protokol VPN berbasis SSL yang memungkinkan pengguna individu terhubung ke jaringan jarak jauh.

Mengapa Mengatur Server VPN Anda Sendiri?

  • Mungkin Anda adalah penyedia layanan VPN atau administrator sistem, yang mengharuskan Anda untuk menyiapkan server VPN Anda sendiri.
  • Anda tidak memercayai kebijakan larangan masuk dari penyedia layanan VPN, jadi Anda memilih rute hosting sendiri.
  • Anda dapat menggunakan VPN untuk menerapkan kebijakan keamanan jaringan. Misalnya, jika Anda menjalankan server email Anda sendiri, Anda dapat meminta pengguna untuk masuk hanya dari alamat IP server VPN dengan membuat daftar putih alamat IP di firewall. Dengan demikian, server email Anda dikeraskan untuk mencegah aktivitas peretasan.
  • Mungkin Anda hanya ingin tahu cara kerja server VPN.

Fitur server VPN OpenConnect

  • Ringan dan cepat. Dalam pengujian saya, saya dapat menonton video YouTube 4K dengan OpenConnect VPN. YouTube diblokir di negara saya (China).
  • Berjalan di Linux dan sebagian besar server BSD.
  • Kompatibel dengan klien Cisco AnyConnect
  • Ada perangkat lunak klien OpenConnect untuk Linux, macOS, Windows, dan OpenWRT. Untuk Android dan iOS, Anda dapat menggunakan Cisco AnyConnect Client.
  • Mendukung otentikasi kata sandi dan otentikasi sertifikat
  • Mendukung akuntansi RADIUS.
  • Mudah disiapkan untuk administrator sistem
  • Proses penyiapan yang mudah untuk pengguna akhir.
  • OpenConnect VPN dapat dikonfigurasi untuk beroperasi pada port TCP 443 dan menggunakan protokol TLS standar untuk mengenkripsi lalu lintas jaringan. Sepertinya protokol HTTPS standar, yang membuatnya sulit untuk diblokir.

Saya sangat menyukai fakta bahwa dibandingkan dengan teknologi VPN lainnya, sangat mudah dan nyaman bagi pengguna akhir untuk menggunakan OpenConnect VPN. Setiap kali saya menginstal distro Linux di komputer saya dan ingin membuka blokir situs web atau menyembunyikan alamat IP saya dengan cepat, saya menginstal klien OpenConnect dan terhubung ke server hanya dengan dua baris perintah:

sudo apt install openconnect

sudo openconnect -b vpn.mydomain.com

Ada juga klien VPN OpenConnect untuk Fedora, RHEL, CentOS, Arch Linux, dan OpenSUSE. Anda dapat menginstalnya dengan mudah dengan manajer paket Anda.

sudo dnf install openconnect
sudo yum install openconnect
sudo pacman -S openconnect

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 11 Bullseye, ikuti petunjuk di bawah ini.

Anda juga memerlukan nama domain untuk mengaktifkan HTTPS untuk OpenConnect VPN. Saya mendaftarkan nama domain saya dari NameCheap karena harganya murah dan mereka memberikan perlindungan privasi whois gratis seumur hidup.

Langkah 1:Instal OpenConnect VPN Server di Debian 11 Bullseye

Masuk ke server Debian 11 Bullseye Anda melalui SSH. Kemudian gunakan apt untuk menginstal ocserv paket dari repositori Debian.

sudo apt update
sudo apt install ocserv

Setelah diinstal, server OpenConnect VPN secara otomatis dimulai. Anda dapat memeriksa statusnya dengan:

systemctl status ocserv

Contoh keluaran:

 ocserv.service - OpenConnect SSL VPN server
     Loaded: loaded (/lib/systemd/system/ocserv.service; enabled; vendor preset: enabled)
     Active: active (running) since Sat 2021-09-25 21:35:29 EDT; 8s ago
       Docs: man:ocserv(8)
   Main PID: 52509 (ocserv-main)
      Tasks: 2 (limit: 1095)
     Memory: 2.0M
        CPU: 12ms
     CGroup: /system.slice/ocserv.service
             ├─52509 ocserv-main
             └─52519 ocserv-sm

Petunjuk:Jika perintah di atas tidak segera berhenti, Anda dapat menekan tombol Q kunci untuk mendapatkan kembali kendali terminal.

Jika tidak berjalan, Anda dapat memulainya dengan:

sudo systemctl start ocserv

Secara default, server VPN OpenConnect mendengarkan pada port TCP dan UDP 443. Jika port 443 digunakan oleh server web, server VPN mungkin tidak dapat memulai. Kita akan melihat cara mengubah port di file konfigurasi OpenConnect VPN nanti.

Langkah 2:Instal UFW Firewall

Ada beberapa solusi firewall yang tersedia untuk Linux. Saya akan menggunakan UFW, yang merupakan ujung depan firewall iptables dan mudah dikelola. Instal UFW di Debian dengan:

sudo apt install ufw

Pertama, Anda harus mengizinkan lalu lintas SSH.

sudo ufw allow 22/tcp

Maka Anda perlu membuka port TCP 80 dan 443.

sudo ufw allow 80,443/tcp

Selanjutnya, aktifkan UFW.

sudo ufw enable

Langkah 3:Instal Let's Encrypt Client (Certbot) di Debian 11 Bullseye Server

gnutls-bin paket diinstal bersama dengan ocserv menyediakan alat untuk membuat CA dan sertifikat server Anda sendiri, tetapi kami akan memperoleh dan menginstal Let's Encrypt sertifikat. Keuntungan menggunakan sertifikat Let's Encrypt adalah gratis, lebih mudah disiapkan, dan dipercaya oleh perangkat lunak klien VPN.

Jalankan perintah berikut untuk menginstal klien Let's Encrypt (certbot) di Debian 11.

sudo apt install certbot

Untuk memeriksa nomor versi, jalankan

certbot --version

Contoh keluaran:

certbot 1.12.0

Langkah 4:Dapatkan Sertifikat TLS Tepercaya dari Let's Encrypt

Anda dapat menggunakan standalone , apache , atau nginx plugin untuk mendapatkan sertifikat TLS. Dalam teks berikut, Anda harus mengganti example.com dengan nama domain asli Anda.

Plugin Mandiri

Jika tidak ada server web yang berjalan di server Debian 11 Bullseye Anda dan Anda ingin server OpenConnect VPN menggunakan port 443, maka Anda dapat menggunakan plugin mandiri untuk mendapatkan sertifikat TLS dari Let's Encrypt. Setel catatan DNS A untuk vpn.example.com di situs web registrar domain Anda, lalu jalankan perintah berikut untuk mendapatkan sertifikat.

sudo certbot certonly --standalone --preferred-challenges http --agree-tos --email [email protected] -d vpn.example.com

Penjelasan:

  • certonly :Dapatkan sertifikat tetapi jangan menginstalnya.
  • --standalone :Gunakan plugin mandiri untuk mendapatkan sertifikat
  • --preferred-challenges http :Lakukan tantangan http-01 untuk memvalidasi domain kami, yang akan menggunakan port 80.
  • --agree-tos :Setuju dengan persyaratan layanan Let's Encrypt.
  • --email :Alamat email digunakan untuk pendaftaran dan pemulihan akun.
  • -d :Tentukan nama domain Anda.

Seperti yang Anda lihat dari tangkapan layar berikut, saya berhasil mendapatkan sertifikat.

Jika Anda menemukan kesalahan berikut, itu berarti ada server web yang sudah menggunakan port 80, jadi Anda harus menggunakan plugin webroot untuk mendapatkan sertifikat TLS.

Problem binding to port 80: Could not bind to IPv4 or IPv6.

Menggunakan Plugin webroot

Jika server Debian 11 Bullseye Anda memiliki server web yang mendengarkan pada port 80 dan 443, maka sebaiknya gunakan plugin webroot untuk mendapatkan sertifikat karena plugin webroot berfungsi dengan hampir semua server web dan kami tidak perlu menginstal sertifikat di server web.

Pertama, Anda perlu membuat host virtual untuk vpn.example.com.

Apache

Jika Anda menggunakan Apache web server, maka Anda perlu menginstal plugin Certbot Apache.

sudo apt install python3-certbot-apache

Buat host virtual di bawah /etc/apache2/sites-available/ direktori.

sudo nano /etc/apache2/sites-available/vpn.example.com.conf

Dan rekatkan baris berikut ke dalam file.

<VirtualHost *:80>        
        ServerName vpn.example.com

        DocumentRoot /var/www/ocserv
</VirtualHost>

Simpan dan tutup file. Kemudian buat direktori root web.

sudo mkdir /var/www/ocserv

Tetapkan www-data (pengguna Apache) sebagai pemilik root web.

sudo chown www-data:www-data /var/www/ocserv -R

Aktifkan host virtual ini.

sudo a2ensite vpn.example.com

Muat ulang Apache agar perubahan diterapkan.

sudo systemctl reload apache2

Setelah virtual host dibuat dan diaktifkan, jalankan perintah berikut untuk mendapatkan sertifikat Let's Encrypt menggunakan plugin apache.

sudo certbot certonly -a apache --agree-tos --email [email protected] -d vpn.example.com

Nginx

Jika Anda menggunakan Nginx web server, maka Anda perlu menginstal plugin Certbot Nginx.

sudo apt install python3-certbot-nginx

buat host virtual di bawah /etc/nginx/conf.d/ .

sudo nano /etc/nginx/conf.d/vpn.example.com.conf

Rekatkan baris berikut ke dalam file.

server {
      listen 80;
      server_name vpn.example.com;

      root /var/www/ocserv/;

      location ~ /.well-known/acme-challenge {
         allow all;
      }
}

Simpan dan tutup file. Kemudian buat direktori root web.

sudo mkdir /var/www/ocserv

Tetapkan www-data (pengguna Nginx) sebagai pemilik root web.

sudo chown www-data:www-data /var/www/ocserv -R

Muat ulang Nginx agar perubahan diterapkan.

sudo systemctl reload nginx

Setelah virtual host dibuat dan diaktifkan, jalankan perintah berikut untuk mendapatkan sertifikat Let's Encrypt menggunakan plugin Certbot Nginx.

sudo certbot certonly -a nginx --agree-tos --email [email protected] -d vpn.example.com

Langkah 5:Edit File Konfigurasi Server VPN OpenConnect

Edit file konfigurasi ocserv.

sudo nano /etc/ocserv/ocserv.conf

Pertama, kita perlu mengkonfigurasi otentikasi kata sandi. Secara default, otentikasi kata sandi melalui PAM (Modul Otentikasi Pluggable) diaktifkan, yang memungkinkan Anda menggunakan akun sistem Debian untuk masuk dari klien VPN. Perilaku ini dapat dinonaktifkan dengan mengomentari baris berikut.

auth = "pam[gid-min=1000]"

Jika kami ingin pengguna menggunakan akun VPN terpisah alih-alih akun sistem untuk masuk, kami perlu menambahkan baris berikut untuk mengaktifkan otentikasi kata sandi dengan file kata sandi.

auth = "plain[passwd=/etc/ocserv/ocpasswd]"

Pada langkah 6, kita akan menggunakan ocpasswd alat untuk menghasilkan /etc/ocserv/ocpasswd file, yang berisi daftar nama pengguna dan sandi yang disandikan.

Catatan :Ocserv mendukung otentikasi sertifikat klien, tetapi Let's Encrypt tidak mengeluarkan sertifikat klien. Jika Anda ingin mengaktifkan autentikasi sertifikat, Anda perlu menyiapkan CA Anda sendiri untuk menerbitkan sertifikat klien.

Selanjutnya, jika Anda tidak ingin ocserv menggunakan TCP dan UDP port 443 (ada web server yang menggunakan port 443), cari dua baris berikut dan ubah nomor port. Jika tidak, biarkan mereka sendiri.

tcp-port = 443
udp-port = 443

Kemudian temukan dua baris berikut. Kita perlu mengubahnya.

server-cert = /etc/ssl/certs/ssl-cert-snakeoil.pem
server-key = /etc/ssl/private/ssl-cert-snakeoil.key

Ganti pengaturan default dengan jalur Let's Encrypt server certificate dan server key file.

server-cert = /etc/letsencrypt/live/vpn.example.com/fullchain.pem
server-key = /etc/letsencrypt/live/vpn.example.com/privkey.pem

Kemudian, atur jumlah maksimal klien. Standarnya adalah 128. Setel ke nol untuk tidak terbatas.

max-clients = 128

Setel jumlah perangkat yang dapat digunakan pengguna untuk masuk secara bersamaan. Standarnya adalah 2. Setel ke nol untuk tidak terbatas.

max-same-clients = 2

Secara default, paket keepalive dikirim setiap 300 detik (5 menit). Saya lebih suka menggunakan waktu yang singkat (30 detik) untuk mengurangi kemungkinan putusnya koneksi VPN.

keepalive = 30

Selanjutnya, cari baris berikut. Ubah false untuk true untuk mengaktifkan penemuan MTU.

try-mtu-discovery = false

Anda dapat mengatur waktu klien diizinkan untuk tetap diam sebelum diputuskan melalui dua parameter berikut. Jika Anda lebih suka klien tetap terhubung tanpa batas, beri komentar pada dua parameter ini.

idle-timeout=1200
mobile-idle-timeout=1800

Setelah itu, setel domain default ke vpn.example.com.

default-domain = vpn.example.com

Konfigurasi jaringan IPv4 adalah sebagai berikut secara default. Ini akan menyebabkan masalah karena sebagian besar router rumah juga menyetel rentang jaringan IPv4 ke 192.168.1.0/24 .

ipv4-network = 192.168.1.0
ipv4-netmask = 255.255.255.0

Kita dapat menggunakan rentang alamat IP pribadi lainnya (seperti 10.10.10.0/24) untuk menghindari tabrakan alamat IP, jadi ubah nilai ipv4-network untuk

ipv4-network = 10.10.10.0

Sekarang batalkan komentar pada baris berikut untuk menyalurkan semua kueri DNS melalui VPN.

tunnel-all-dns = true

Secara default, ocserv menggunakan server DNS publik 8.8.8.8 (Google) dan 1.1.1.1 (Cloudflare), yang tidak masalah.

dns = 8.8.8.8
dns = 1.1.1.1

Catatan :Jika Anda adalah penyedia layanan VPN, menjalankan resolver DNS Anda sendiri merupakan praktik yang baik. Jika ada resolver DNS yang berjalan di server yang sama, tentukan DNS sebagai

dns = 10.10.10.1

10.10.10.1 adalah alamat IP server OpenConnect VPN di LAN VPN. Ini akan sedikit mempercepat pencarian DNS untuk klien karena latensi jaringan antara server VPN dan resolver DNS dihilangkan.

Kemudian beri komentar semua parameter rute (tambahkan # karakter di awal baris berikut), yang akan menetapkan server sebagai gateway default untuk klien.

#route = 10.0.0.0/8
#route = 172.16.0.0/12
#route = 192.168.0.0/16
#route = fd00::/8
#route = default

#no-route = 192.168.5.0/255.255.255.0

Simpan dan tutup file Kemudian restart server VPN agar perubahan diterapkan.

sudo systemctl restart ocserv

Langkah 6:Membuat Akun VPN

Sekarang gunakan alat ocpasswd untuk membuat akun VPN.

sudo ocpasswd -c /etc/ocserv/ocpasswd username

Anda akan diminta untuk mengatur kata sandi untuk pengguna dan informasinya akan disimpan ke /etc/ocserv/ocpasswd mengajukan. Untuk mengatur ulang kata sandi, jalankan kembali perintah di atas.

Langkah 7:Aktifkan Penerusan IP di Kernel Linux

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 option akan memuat pengaturan sysctl dari /etc/sysctl.conf mengajukan. Perintah ini akan mempertahankan perubahan kami di seluruh reboot sistem.

sudo sysctl -p

Langkah 8:Konfigurasi Penyamaran IP di Firewall

Kita perlu mengatur penyamaran IP di firewall server, sehingga server menjadi router virtual untuk klien VPN. Temukan nama antarmuka jaringan utama server Anda.

ip -c a

Seperti yang Anda lihat, namanya eth0 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. Di editor teks Nano, Anda dapat pergi ke akhir file dengan menekan Ctrl+W , lalu tekan Ctrl+V .

# NAT table rules
*nat
:POSTROUTING ACCEPT [0:0]
-A POSTROUTING -s 10.10.10.0/24 -o eth0 -j MASQUERADE

# End each table with the 'COMMIT' line or these rules won't be processed
COMMIT

Ganti eth0 dengan nama antarmuka jaringan Anda sendiri.

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.

# allow forwarding for trusted network
-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 mulai 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.

UFW memerlukan waktu untuk memproses aturan firewall. Jika aturan penyamaran tidak muncul, maka mulai ulang UFW lagi (sudo systemctl restart ufw ).

Langkah 9:Buka Port 443 di Firewall

Jalankan perintah berikut untuk membuka port TCP dan UDP 443. Jika Anda mengonfigurasi port yang berbeda untuk ocserv, ubah 443 ke port yang dikonfigurasi.

sudo ufw allow 443/tcp
sudo ufw allow 443/udp

Sekarang server VPN OpenConnect siap menerima koneksi klien.

Bagi Anda yang menjalankan resolver DNS lokal, jika Anda menetapkan 10.10.10.1 sebagai server DNS untuk klien VPN, maka Anda harus mengizinkan klien VPN untuk terhubung ke port 53 dengan aturan UFW berikut.

sudo ufw insert 1 allow in from 10.10.10.0/24

Anda juga perlu mengedit konfigurasi server DNS BIND agar klien VPN dapat mengirim kueri DNS rekursif seperti di bawah ini.

allow-recursion { 127.0.0.1; 10.10.10.0/24; };

OpenConnect GUI Client untuk Windows dan macOS

Mereka dapat diunduh dari Halaman Github OpenConnect GUI.

Cara Menginstal dan Menggunakan klien VPN OpenConnect di Debian 11 Bullseye Desktop

Jalankan perintah berikut untuk menginstal klien baris perintah OpenConnect VPN di desktop Debian.

sudo apt install openconnect

Anda dapat Terhubung ke VPN dari baris perintah seperti di bawah ini. -b flag akan membuatnya berjalan di latar belakang setelah koneksi dibuat.

sudo openconnect -b vpn.example.com

Secara default, klien openconnect akan menghubungi port 443 server. Jika Anda mengonfigurasi port yang berbeda untuk server, Anda dapat menambahkan nomor port.

sudo openconnect -b vpn.example.com:port-number

Anda akan diminta untuk memasukkan nama pengguna dan kata sandi VPN. Jika koneksi berhasil dibuat, Anda akan melihat pesan berikut.

Got CONNECT response: HTTP/1.1 200 CONNECTED
CSTP connected. DPD 60, Keepalive 300
Connected as 10.10.10.139, using SSL + LZ4, with DTLS + LZ4 in progress
Continuing in background; pid 17050

Jika koneksi gagal, Anda dapat memeriksa log ocserv untuk mengetahui alasannya. (Mungkin Anda tidak memasukkan kata sandi dengan benar.)

sudo journaltcl -eu ocserv

Untuk menghentikan koneksi, jalankan:

sudo pkill openconnect

Untuk menjalankan klien secara non-interaktif, gunakan sintaks berikut.

echo -n password | sudo openconnect -b vpn.example.com -u username --passwd-on-stdin

Jika Anda ingin menggunakan Pengelola Jaringan untuk mengelola koneksi VPN, Anda perlu menginstal paket-paket ini.

sudo apt install network-manager-openconnect network-manager-openconnect-gnome

Jika Anda berhasil terhubung ke server VPN, tetapi alamat IP publik Anda tidak berubah, itu karena penerusan IP atau penyamaran IP tidak berfungsi. Saya pernah salah ketik pada perintah iptables saya, yang menyebabkan komputer saya tidak dapat menjelajah Internet.

Hubungkan Otomatis pada Startup Sistem

Agar klien OpenConnect VPN secara otomatis terhubung ke server saat boot, kita dapat membuat unit layanan systemd.

sudo nano /etc/systemd/system/openconnect.service

Letakkan baris berikut ke file. Ganti teks merah.

[Unit]
  Description=OpenConnect VPN Client
  After=network-online.target
  Wants=network-online.target

[Service]
  Type=simple
  ExecStart=/bin/bash -c '/bin/echo -n password | /usr/sbin/openconnect vpn.example.com -u username --passwd-on-stdin'
  KillSignal=SIGINT
  Restart=always
  RestartSec=2

[Install]
  WantedBy=multi-user.target

Simpan dan tutup file. Kemudian aktifkan layanan ini sehingga akan dimulai saat boot.

sudo systemctl enable openconnect.service

Penjelasan isi file:

  • After=network-online.target dan Wants=network-online.target buat layanan ini berjalan setelah jaringan aktif.
  • Pada kenyataannya, layanan ini masih dapat berjalan sebelum jaringan aktif. Kami menambahkan Restart=always dan RestartSec=2 untuk memulai kembali layanan ini setelah 2 detik jika layanan ini gagal.
  • Systemd tidak mengenali pengalihan pipa. Jadi di ExecStart direktif, kami membungkus perintah dalam tanda kutip tunggal dan menjalankannya dengan shell Bash.
  • Karena klien VPN OpenConnect akan berjalan sebagai layanan systemd, yang berjalan di latar belakang, tidak perlu menambahkan -b tandai ke openconnect perintah.
  • KillSignal direktif memberitahu Systemd untuk mengirim SIGINT memberi sinyal saat systemctl stop openconnect perintah dikeluarkan. Ini akan melakukan shutdown bersih dengan log sesi, dan memulihkan pengaturan server DNS dan tabel perutean kernel Linux.

Untuk segera memulai layanan Systemd ini, jalankan

sudo systemctl start openconnect

Untuk menghentikan layanan Systemd ini, jalankan

sudo systemctl stop openconnect

Mulai Ulang Otomatis Saat Koneksi VPN Putus

Terkadang koneksi VPN terputus karena berbagai alasan. Untuk membuat klien VPN dimulai ulang secara otomatis, edit file crontab pengguna root.

sudo crontab -e

Tambahkan baris berikut di akhir file ini.

* * * * * ping -c 10 10.10.10.1 > /dev/null || systemctl restart openconnect

Pekerjaan Cron ini akan berjalan setiap menit untuk memeriksa apakah klien VPN dapat melakukan ping ke alamat IP pribadi server VPN (10.10.10.1). Jika ping tidak berhasil, maka perintah di sebelah kanan akan dijalankan untuk me-restart klien VPN. || adalah operator OR di Bash. Itu mengeksekusi perintah di sebelah kanan hanya jika perintah di sebelah kiri menghasilkan kesalahan.

Simpan dan tutup file.

Kecepatan

OpenConnect VPN cukup cepat. Saya dapat menggunakannya untuk menonton video 4k di YouTube. Seperti yang Anda lihat, kecepatan koneksi 63356 Kbps , yang diterjemahkan menjadi 61 Mbit/s .

Dan inilah hasil tesnya di speedtest.net.

Optimalisasi Kecepatan

OpenConnect secara default menggunakan protokol TLS over UDP (DTLS) untuk mencapai kecepatan yang lebih cepat, tetapi UDP tidak dapat menyediakan transmisi yang andal. TCP lebih lambat dari UDP tetapi dapat menyediakan transmisi yang andal. Satu tip pengoptimalan yang dapat saya berikan kepada Anda adalah menonaktifkan DTLS, gunakan TLS standar (melalui TCP), lalu aktifkan TCP BBR untuk meningkatkan kecepatan TCP.

Untuk menonaktifkan DTLS, beri komentar (tambahkan simbol # di awal) baris berikut di file konfigurasi ocserv.

udp-port = 443

Simpan dan tutup file. Kemudian restart layanan ocserv.

sudo systemctl restart ocserv.service

Untuk mengaktifkan TCP BBR, silakan lihat tutorial berikut. Perhatikan bahwa Anda perlu menonaktifkan DTLS di ocserv, atau TCP BBR tidak akan berfungsi.

  • Cara meningkatkan Performa Jaringan Debian dengan mudah dengan mengaktifkan TCP BBR

Dalam pengujian saya, TLS standar dengan TCP BBR diaktifkan dua kali lebih cepat daripada DTLS.

Faktor lain yang sangat penting yang mempengaruhi kecepatan adalah seberapa baik koneksi antara komputer lokal Anda dan server VPN. Jika Anda tinggal di timur tengah dan server VPN berlokasi di AS, kecepatannya akan lambat. Pilih pusat data yang dekat dengan tempat tinggal Anda.

Perpanjang Otomatis Let's Encrypt Certificate

Edit file crontab pengguna root.

sudo crontab -e

Tambahkan baris berikut di akhir file untuk menjalankan pekerjaan Cron setiap hari. Jika sertifikat akan kedaluwarsa dalam 30 hari, certbot akan mencoba memperbarui sertifikat. Layanan ocserv perlu dimulai ulang agar server VPN dapat mengambil sertifikat dan file kunci baru.

@daily certbot renew --quiet && systemctl restart ocserv

Kiat Pemecahan Masalah

Perhatikan bahwa jika Anda menggunakan OpenVZ VPS, pastikan Anda mengaktifkan perangkat jaringan virtual TUN di panel kontrol VPS. (Jika Anda menggunakan Vultr VPS, maka Anda memiliki VPS berbasis KVM, jadi Anda tidak perlu khawatir tentang hal ini.)

Jika Anda mengalami masalah, periksa log server OpenConnect VPN.

sudo journalctl -eu ocserv.service

Saya menemukan bahwa jika saya mengubah port 443 ke port lain, firewall hebat China akan memblokir koneksi VPN ini.

Jika ocserv memberi tahu Anda bahwa itu tidak dapat memuat /etc/ocserv/ocserv.conf file, Anda dapat menghentikan ocserv.

sudo systemctl stop ocserv

Kemudian jalankan di latar depan dengan debugging diaktifkan.

sudo /usr/sbin/ocserv --foreground --pid-file /run/ocserv.pid --config /etc/ocserv/ocserv.conf --debug=10

Kemudian output mungkin memberi Anda beberapa petunjuk mengapa ocserv tidak berfungsi.

Membuat Server VPN OpenConnect dan Server Web Menggunakan Port 443 Secara Bersamaan

Silakan baca artikel berikut:

  • Jalankan OpenConnect VPN Server &Apache/Nginx pada Kotak yang Sama dengan HAProxy

Cara Menonaktifkan TLS 1.0 dan TLS 1.1 di ocserv

Dewan PCI tidak lagi menggunakan TLS 1.0 pada 30 Juni 2018 dan browser web arus utama akan menonaktifkan TLS 1.0 dan TLS 1.1 pada tahun 2020. Kita harus melakukan hal yang sama dengan server VPN. Edit file konfigurasi utama.

sudo nano /etc/ocserv/ocserv.conf

Temukan baris berikut:

tls-priorities = "NORMAL:%SERVER_PRECEDENCE:%COMPAT:-RSA:-VERS-SSL3.0:-ARCFOUR-128"

Untuk menonaktifkan TLS 1.0 dan TLS 1.1 di server VPN OpenConnect, cukup tambahkan -VERS-TLS1.0 dan -VERS-TLS1.1 di baris.

tls-priorities = "NORMAL:%SERVER_PRECEDENCE:%COMPAT:-RSA:-VERS-SSL3.0:-ARCFOUR-128:-VERS-TLS1.0:-VERS-TLS1.1"

Simpan dan tutup file. Kemudian restart ocserv.

sudo systemctl restart ocserv

Sekarang ocserv hanya akan menerima TLS 1.3 dan TLS 1.2. Untuk informasi lebih lanjut tentang mengonfigurasi parameter TLS di ocserv, silakan lihat string prioritas GnuTLS.

Untuk memeriksa apakah TLS 1.0 didukung di server VPN OpenConnect Anda, jalankan perintah berikut.

openssl s_client -connect vpn.your-domain.com:443 -tls1

Dan periksa TLS 1.1

openssl s_client -connect vpn.your-domain.com:443 -tls1_1

Jika Anda melihat pesan berikut di output, itu berarti versi TLS tidak didukung.

New, (NONE), Cipher is (NONE)
Secure Renegotiation IS NOT supported

Konfigurasi Per-Pengguna atau Per Grup

Ocserv memungkinkan konfigurasi per pengguna dan per grup. Untuk mengaktifkan fitur ini, batalkan komentar pada dua baris berikut di /etc/ocserv/ocserv.conf berkas.

config-per-user = /etc/ocserv/config-per-user/
config-per-group = /etc/ocserv/config-per-group/

Simpan dan tutup file. Kemudian buat direktori konfigurasi per pengguna dan per grup.

sudo mkdir /etc/ocserv/config-per-user/ /etc/ocserv/config-per-group/

Selanjutnya, Anda dapat membuat file di bawah dua direktori ini. Misalnya, buat user1 file untuk mengizinkan konfigurasi khusus untuk user1 .

sudo nano /etc/ocserv/config-per-user/user1

Anda juga dapat membuat group1 file untuk mengizinkan konfigurasi khusus untuk grup bernama group1 .

sudo nano /etc/ocserv/config-per-group/group1

Anda dapat menambahkan sesuatu seperti di bawah ini ke dalam file.

route = 10.10.10.0/255.255.255.0

Artinya setelah user1 sambungkan ke server VPN ini, hanya lalu lintas ke 10.10.10.0/24 jaringan akan dirutekan melalui server VPN. Lalu lintas ke alamat IP lain dirutekan melalui gateway asli. Ini dikenal sebagai tunneling terpisah, yang berguna ketika:

  • Anda hanya ingin klien VPN dapat menelusuri sumber daya internal dan tidak ingin semua lalu lintas melalui server VPN.
  • Anda perlu membangun jaringan pribadi untuk server awan.
  • Klien perlu terhubung ke beberapa VPN. Satu VPN dapat menggunakan tunneling terpisah dan VPN lainnya menggunakan tunnel penuh.

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


Debian
  1. Cara mengatur server SFTP di Server Debian 11

  2. Cara Mengatur Server OpenVPN di Debian 10

  3. Siapkan Server Mail dengan PostfixAdmin di Debian 9

  1. Siapkan server VPN di PC Linux Anda

  2. Cara Mengatur Server Samba di Debian 10 Buster

  3. Cara Mengatur VPN WireGuard di Debian 10

  1. Cara Mengatur Server OpenVPN di Debian 9

  2. Cara Setup Server Rsyslog di Debian 11 (Bullseye)

  3. Cara Mengatur Server Minecraft di Debian 10