Tutorial ini akan menunjukkan kepada Anda bagaimana menjalankan server VPN Anda sendiri dengan menginstal server OpenConnect VPN di Debian 10 Buster. 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
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 buster Debian 10, 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 10 Buster
Masuk ke server Debian 10 Buster 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 Thu 2017-11-30 05:45:07 UTC; 11s ago Docs: man:ocserv(8) Main PID: 19235 (ocserv-main) CGroup: /system.slice/ocserv.service ├─19235 ocserv-main └─19242 ocserv-secm
Petunjuk:Jika perintah di atas tidak segera berhenti, Anda dapat menekan tombol Q 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 sedang digunakan oleh server web, maka server VPN tidak dapat dimulai. Kita akan melihat cara mengubah port di file konfigurasi OpenConnect VPN nanti.
Jika ada firewall yang berjalan di server Anda, maka Anda harus membuka port 80 dan 443. Misalnya, jika Anda menggunakan UFW, jalankan perintah berikut.
sudo ufw allow 80/tcp sudo ufw allow 443/tcp
Langkah 2:Instal Let's Encrypt Client (Certbot) di Debian 10 Buster Server
gnutls-bin
paket diinstal bersama dengan ocserv
menyediakan alat untuk membuat sertifikat CA dan server Anda sendiri, tetapi kami akan memperoleh dan menginstal sertifikat Let's Encrypt. 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 10.
sudo apt install certbot
Untuk memeriksa nomor versi, jalankan
certbot --version
Contoh keluaran:
certbot 0.31.0
Langkah 3:Dapatkan Sertifikat TLS Tepercaya dari Let's Encrypt
Saya sarankan menggunakan standalone
atau webroot
plugin untuk mendapatkan sertifikat TLS.
Plugin Mandiri
Jika tidak ada server web yang berjalan di server Debian 10 Buster 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 data DNS A untuk vpn.domainanda.com di situs pendaftar 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.
Menggunakan Plugin webroot
Jika server Debian 10 Buster 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 server web 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 webroot.
sudo certbot certonly --webroot --agree-tos --email [email protected] -d vpn.example.com -w /var/www/ocserv/
Nginx
Jika Anda menggunakan server web 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 webroot.
sudo certbot certonly --webroot --agree-tos --email [email protected] -d vpn.example.com -w /var/www/ocserv/
Langkah 4:Edit File Konfigurasi Server VPN OpenConnect
Edit file konfigurasi ocserv.
sudo nano /etc/ocserv/ocserv.conf
Pertama, konfigurasikan 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]"
Setelah selesai mengedit file konfigurasi ini, kita akan melihat cara 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
Ubah alamat penyelesai DNS. Anda dapat menggunakan server DNS publik Google.
dns = 8.8.8.8 dns = 8.8.4.4
atau server DNS publik Cloudflare.
dns = 1.1.1.1 dns = 1.0.0.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 mulai ulang server VPN agar perubahan diterapkan.
sudo systemctl restart ocserv
Langkah 5: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 6: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 opsi akan memuat pengaturan sysctl dari /etc/sysctl.conf mengajukan. Perintah ini akan mempertahankan perubahan kami di seluruh reboot sistem.
sudo sysctl -p
Langkah 7:Konfigurasi Penyamaran IP di Firewall
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.
ip addr
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.
# NAT table rules *nat :POSTROUTING ACCEPT [0:0] -A POSTROUTING -s 10.10.10.0/24 -o ens3 -j MASQUERADE # End each table with the 'COMMIT' line or these rules won't be processed COMMIT
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.
# 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 aktifkan UFW.
sudo ufw enable
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.
UFW memerlukan waktu untuk memproses aturan firewall. Jika aturan penyamaran tidak muncul, maka mulai ulang UFW lagi (sudo systemctl restart ufw
).
Langkah 8: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; };
Cara Menginstal dan Menggunakan klien VPN OpenConnect di Debian 10 Buster 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
danWants=network-online.target
buat layanan ini berjalan setelah jaringan aktif.- Pada kenyataannya, layanan ini masih dapat berjalan sebelum jaringan aktif. Kami menambahkan
Restart=always
danRestartSec=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 keopenconnect
perintah. KillSignal
direktif memberitahu Systemd untuk mengirimSIGINT
memberi sinyal saatsystemctl 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.
OpenConnect GUI Client untuk Windows dan MacOS
Mereka dapat diunduh dari Halaman Github OpenConnect GUI.
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 Kamatera VPS, berarti 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 OpenConnect VPN, 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/ sudo mkdir /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.
Cara Menjalankan Beberapa Instance ocserv
Satu proses ocserv hanya dapat mengikat satu port TCP atau UDP di server Anda. Jika Anda ingin mengizinkan ocserv untuk mengikat ke beberapa port TCP atau UDP, maka Anda perlu menjalankan beberapa proses ocserv. Ini sangat sederhana. Salin /lib/systemd/system/ocserv.service
ke file baru.
sudo cp /lib/systemd/system/ocserv.service /etc/systemd/system/ocserv2.service
Kemudian edit file baru.
sudo nano /etc/systemd/system/ocserv2.service
Ubah
/etc/ocserv/ocserv.conf
untuk
/etc/ocserv/ocserv2.conf
Simpan dan tutup file. Selanjutnya, Anda dapat mengedit /etc/ocserv/ocserv2.conf
file dan tambahkan konfigurasi khusus Anda. Setelah selesai, mulai layanan ocserv kedua.
sudo systemctl start ocserv2