GNU/Linux >> Belajar Linux >  >> Panels >> Docker

Cara menginstal dan menghosting server OpenVPN dengan Docker

Ringkasan

Posting ini mencakup prosedur cara menginstal dan meng-host server OpenVPN dengan Docker. Artinya, kita akan dapat menggunakan Docker untuk menginstal server OpenVPN dan menjalankannya sebagai layanan, menghasilkan konfigurasi dan sertifikat koneksi klien, yang kemudian dapat kita gunakan untuk menghubungkan beberapa klien di server VPN kita. Metode ini bekerja pada semua distro Linux yang telah menginstal dan menjalankan Docker.

CATATAN – Pengaturan ini untuk lingkungan tanpa kata sandi, artinya – klien tidak akan menggunakan nama pengguna dan kata sandi untuk terhubung di server, melainkan sertifikat klien pengguna untuk terhubung.

Jika Anda tidak menyukai solusi atau lebih memilih metode lain, kami juga membahas proses yang sama dengan Wireguard dan Docker. Anda dapat memeriksanya di postingan ini.

Prasyarat:

– Docker terinstal dan berjalan – jika tidak terinstal, periksa posting ini untuk instruksi menginstal Docker di Debian dan Ubuntu

– Wadah Docker yang akan kita gunakan – LINK (lihat juga untuk info lebih lanjut jika diperlukan)

Pemasangan wadah Docker server OpenVPN

1. Langkah pertama adalah membuat wadah volume data untuk OpenVPN, sehingga dapat menyimpan semua data, file konfigurasi, dan sertifikat. Disarankan untuk menambahkan awalan "ovpn-data-" dan kemudian menambahkan kata lain yang Anda inginkan di akhir. Sebagai contoh, seharusnya terlihat seperti ini – ovpn-data-example. Dan Anda mengganti kata contoh dengan apa pun yang Anda inginkan.

Jadi di terminal jalankan perintah:

OVPN_DATA="ovpn-data-example"

Sekarang kita akan membuat wadah volume data:

docker volume create --name $OVPN_DATA

Catatan – jika Anda belum menambahkan Docker hak istimewa yang lebih tinggi pada host Linux Anda, maka Anda harus menambahkan sudo setiap kali Anda ingin menjalankan perintah buruh pelabuhan.

2. Kemudian unduh file gambar buruh pelabuhan OpenVPN dengan argumen untuk mengaturnya agar menggunakan alamat IP publik server Anda (host) atau nama domain Anda melalui protokol UDP (juga dapat menggunakan protokol TCP):

docker run -v $OVPN_DATA:/etc/openvpn --log-driver=none --rm kylemanna/openvpn ovpn_genconfig -u udp://VPN.SERVERNAME.COM

Ganti VPN.SERVENAME.COM dengan alamat IP publik Anda atau dengan nama domain yang Anda daftarkan dan tunjuk ke server Anda. Ini adalah pengaturan jika Anda menghosting server Anda di cloud (Seperti di AWS, Azure, UpCloud, Digital Ocean, Linode, dll...).

Untuk opsi self-hosting di rumah – ini juga berlaku jika Anda memiliki alamat IP publik statis, ditambah lagi Anda harus melakukan port-forwarding pada router (modem) Anda untuk menunjuk ke host (server) Anda. Jika Anda tidak memiliki alamat IP statis, Anda harus menggunakan DNS Dinamis.

Membuat dan mengambil sertifikat CA dan sertifikat klien

3. Sekarang kita perlu memulai sistem PKI kita untuk menghasilkan sertifikat CA untuk server kita dan juga untuk menghasilkan sertifikat klien:

docker run -v $OVPN_DATA:/etc/openvpn --log-driver=none --rm -it kylemanna/openvpn ovpn_initpki

Ikuti petunjuk. Jika Anda berencana untuk menginstal OpenVPN pada server cloud yang memiliki sumber daya terbatas (misalnya, 1 CPU dan 1 GB RAM), maka diperlukan beberapa saat untuk menghasilkan sertifikat server CA (kira-kira 15 menit).

Saat Anda memulai PKI untuk OpenVPN, pertama-tama ia akan meminta Anda untuk memberikan kata sandi untuk sertifikat CA.

CATATAN PENTING – Catat di suatu tempat frasa sandi CA, Anda akan memerlukannya nanti selama proses penyiapan dan setiap kali Anda membuat sertifikat klien.

Selanjutnya akan meminta Anda untuk memberikan nama untuk CA. Anda dapat memasukkan apa saja.

Proses pembuatan CA akan memakan waktu cukup lama.

Setelah selesai, itu akan menghasilkan kunci pribadi dan akan meminta lagi untuk memberikan frasa sandi CA yang Anda masukkan sebelumnya. Ini akan meminta Anda 2 kali untuk memasukkan kata sandi.

Sertifikat CA yang dihasilkan akan berlaku selama 3 tahun ke depan.

Mulai layanan server OpenVPN

4. Jalankan perintah Docker untuk memulai wadah OpenVPN:

docker run -v $OVPN_DATA:/etc/openvpn -d -p 1194:1194/udp --cap-add=NET_ADMIN kylemanna/openvpn

Catatan – argumen dalam perintah -p 1194:1194/udp – juga merupakan bagian penting dari pengaturan ini. Argumen ini akan mengatur OpenVNP kita pada port mana yang akan didengarkan dan digunakan untuk membangun komunikasi antara server dan klien. Pada perintah di atas diatur untuk menggunakan port 1194 (nomor kiri untuk container Docker dan nomor kanan untuk server host), karena OpenVPN secara default menggunakan nomor port 1194 melalui protokol UDP. Ubah nomor ini jika Anda berencana menggunakan nomor port yang berbeda.

Buat sertifikat klien dan ekstrak file konfigurasi klien dari wadah ke host

5. Jalankan perintah ini untuk membuat sertifikat untuk perangkat klien:

docker run -v $OVPN_DATA:/etc/openvpn --log-driver=none --rm -it kylemanna/openvpn easyrsa build-client-full CLIENTNAME nopass

Argumen CLIENTNAME pada perintah di atas dapat Anda ganti dengan yang Anda inginkan. Itu untuk nama file sertifikat dan untuk identifikasi klien. Perintah juga akan menghasilkan sertifikat tanpa kata sandi. Sertifikat akan ditempatkan di direktori home pengguna pada sistem file host (nama pengguna yang Anda gunakan untuk login di host melalui SSH) BUKAN pada wadah Docker.

Saat membuat sertifikat klien, OpenVPN akan meminta Anda untuk memberikan frasa sandi CA.

CATATAN – Sertifikat yang dihasilkan, seperti yang terlihat pada gambar, akan bertahan selama 3 tahun sejak Anda membuatnya.

6. Jalankan perintah ini untuk mengkompilasi file konfigurasi koneksi OpenVPN dan mengambilnya dari wadah Docker ke server host

docker run -v $OVPN_DATA:/etc/openvpn --log-driver=none --rm kylemanna/openvpn ovpn_getclient CLIENTNAME > CLIENTNAME.ovpn

Setelah itu, Anda memerlukan klien FTP, SFTP, atau SCP untuk terhubung di server host Anda dan mengunduh file OpenVPN dan menggunakannya untuk terhubung ke server VPN Anda.

Hubungkan ke server OpenVPN Anda

Untuk terhubung ke server VPN Anda, Anda harus menginstal klien OpenVPN. Ada aplikasi klien untuk Windows dan Android – Koneksi OpenVPN. Di aplikasi, cukup impor file openvpn sebagai profil baru dan sambungkan.

Tentu saja ada klien untuk linux. Manajer jaringan di Linux mendukung OpenVPN tetapi meminta untuk mengimpor semua sertifikat secara terpisah. Jadi, untuk kesederhanaan, saya sarankan untuk menginstal klien aplikasi juga. Di distro Debian dan Ubuntu:

$ sudo apt install openvpn

Setelah terinstal, navigasikan ke lokasi di mana file sertifikat ditempatkan dan jalankan perintah:

$ sudo openvpn ./CLIENTNAME.ovpn

Hasil koneksi yang berhasil akan terlihat seperti ini

Pastikan untuk membuka port yang sesuai ke server Anda

Juga catatan penting agar ini berfungsi. Jika Anda berencana untuk menghosting ini di cloud atau jika Anda telah menginstal firewall di server Anda, Anda perlu membuka dan mengizinkan port yang Anda tetapkan untuk server OpenVPN Anda.

Dalam hal ini, server berada di cloud dan saya perlu membuka port 1194 untuk protokol UDP di firewall.

Hubungkan beberapa klien

Anda dapat menghubungkan beberapa klien dengan pengaturan ini. Salah satu metodenya adalah menggunakan satu sertifikat di beberapa perangkat, tetapi metode ini kurang aman. Untuk ini, Anda perlu mengakses file konfigurasi server OpenVPN yang terletak di wadah Docker dan menambahkan argumen:

duplicate-cn

Saya merekomendasikan untuk mengeluarkan/menghasilkan sertifikat terpisah baru untuk setiap klien. Untuk mencapai ini, Anda perlu mengulangi beberapa perintah:

Mulai ulang volume buruh pelabuhan untuk OpenVPN.

OVPN_DATA="ovpn-data-example"
docker volume create --name $OVPN_DATA

Kemudian buat sertifikat klien baru tetapi gunakan nama yang berbeda sebagai ganti CLIENTNAME:

docker run -v $OVPN_DATA:/etc/openvpn --log-driver=none --rm -it kylemanna/openvpn easyrsa build-client-full CLIENTNAME nopass

dan tentu saja ambil file konfigurasi OpenVPN dan unduh file tersebut:

docker run -v $OVPN_DATA:/etc/openvpn --log-driver=none --rm kylemanna/openvpn ovpn_getclient CLIENTNAME > CLIENTNAME.ovpn

Ringkasan

Kami membahas proses cara menginstal OpenVPN dengan Docker, cara menghosting OpenVPN dengan Docker, menjalankan sistem PKI, membuat sertifikat CA dan sertifikat klien, serta cara menghubungkan. Saya pribadi menyukai setup ini, pertama karena kemudahan penggunaan, manajemen dan bagaimana setup memiliki keamanan yang cukup tinggi baik di sisi server maupun client. Semua properti dan pujian untuk KyleManna karena telah membangun citra Docker yang luar biasa.


Docker
  1. Cara menginstal dan mengatur Debian 8 Docker Host minimalis

  2. Cara menginstal dan mengkonfigurasi Server OpenVPN di Debian 10

  3. Bagaimana dan Mengapa Menggunakan Host Docker Jarak Jauh

  1. Cara Menginstal Klien dan Server NFS di Ubuntu 20.04

  2. Instal server Wireguard VPN dengan Docker

  3. Cara Menginstal Jenkins dengan Docker

  1. Cara Menginstal dan Menggunakan Docker Compose di CentOS

  2. Cara Menginstal Nextcloud dengan Docker di Server Linux Anda

  3. Cara Menginstal OpenVPN di Ubuntu 18.04