Jalankan OpenVPN di Docker dalam 2 detik

Halo, warga Habrovsk! Pernahkah Anda mengalami situasi di mana Anda benar-benar ingin melakukan perjalanan ke kota, negara, atau benua lain? Saya memiliki kebutuhan seperti itu cukup sering, sehingga kesempatan untuk memiliki server VPN saya sendiri, yang dapat dimulai di mana saja, dalam beberapa detik, cukup akut.Pada artikel ini saya ingin berbicara tentang proyek saya, yang saya rencanakan ketika saya mencari solusi yang sudah jadi, dalam hal ini, buruh pelabuhan sebuah gambar yang memungkinkan Anda untuk dengan cepat meningkatkan server OpenVPN, dengan pengaturan minimum dan tingkat keamanan yang dapat diterima.


Latar belakang

Kemampuan untuk menjalankan layanan pada mesin apa pun: apakah itu server fisik, atau server pribadi virtual, atau, secara umum, ruang kontainer di dalam sistem manajemen wadah lain - sangat penting. Pandangan saya langsung jatuh pada Docker. Pertama, layanan ini semakin populer, dan karena itu, semakin banyak penyedia menyediakan solusi turnkey dengan pra-instalasinya; kedua - ada repositori terpusat dari gambar, dari mana Anda dapat mengunduh dan memulai layanan dengan satu perintah di terminal. Gagasan bahwa proyek seperti itu seharusnya sudah ada, mengunjungi saya dan saya terus mencari. Tetapi, sebagian besar proyek yang saya temukan terlalu rumit (perlu membuat wadah untuk penyimpanan data permanen dan menjalankan wadah beberapa kali dengan aplikasi dengan parameter yang berbeda), baik tanpa dokumentasi yang waras, atau benar-benar ditinggalkan. Tidak menemukan apa pun yang dapat diterima, saya mulai kerjakan proyek Anda. Menjelang malam tanpa tidur mempelajari dokumentasi, menulis kode dan debugging, tetapi pada akhirnya, layanan saya melihat cahaya dan bermain dalam semua warna panel LED monokrom pada router. Jadi, tolong cinta dan nikmatilah - Docker-OpenVPN . Saya bahkan datang dengan logo (di atas, di depan potongan), tetapi jangan menilai dengan ketat, karena saya bukan seorang desainer (sudah). Ketika saya mengimplementasikan proyek ini, saya fokus pada kecepatan penyebaran, pengaturan minimum dan tingkat keamanan yang dapat diterima. Dengan coba-coba, saya menemukan keseimbangan optimal kriteria ini, meskipun di beberapa tempat saya harus mengorbankan kecepatan penyebaran untuk keamanan, dan saya harus membayar portabilitas untuk pengaturan minimum: dalam konfigurasi saat ini, wadah yang pernah dibuat pada satu server tidak dapat ditransfer dan dijalankan pada yang lain. Misalnya, semua sertifikat klien dan server dihasilkan ketika layanan dimulai dan ini membutuhkan waktu sekitar 2 detik. Namun, pembuatan file Defy Hellman harus dihapus dalam waktu pembuatan: dibuat selama pembuatan gambar buruh pelabuhan dan dapat bertahan hingga 10 menit. Saya ingin sekali menerima audit keamanan dari solusi semacam itu dari komunitas yang dihormati.

Luncurkan

Untuk memulai layanan kami memerlukan beberapa hal:
  1. Server: fisik atau virtual. Secara teoritis, Anda dapat berjalan dalam mode docker-in-docker, tetapi saya belum melakukan pengujian ekstensif terhadap opsi ini;
  2. Sebenarnya buruh pelabuhan. Banyak penyedia hosting menyediakan solusi siap pakai dengan Docker "on board";
  3. Alamat IP publik.
Jika semua detail sudah ada, maka kami tetap menjalankan perintah berikut di konsol server Anda:
docker run --cap-add=NET_ADMIN \ -it -p 1194:1194/udp -p 80:8080/tcp \ -e HOST_ADDR=$(curl -s https://api.ipify.org) \ alekslitvinenk/openvpn 
Pembaca yang penuh perhatian dapat memperhatikan fakta bahwa alamat IP server secara otomatis ditentukan menggunakan ipify.org . Jika karena alasan tertentu ini tidak berhasil, maka Anda dapat menentukan alamat secara manual. Jika semua langkah sebelumnya selesai dengan benar, maka kita akan melihat sesuatu yang serupa di konsol:
 Sun Jun 9 08:56:11 2019 Initialization Sequence Completed Sun Jun 9 08:56:12 2019 Client.ovpn file has been generated Sun Jun 9 08:56:12 2019 Config server started, download your client.ovpn config at http://example.com/ Sun Jun 9 08:56:12 2019 NOTE: After you download you client config, http server will be shut down! 
Kami dekat dengan tujuannya: sekarang kami perlu menyalin example.com (dalam kasus Anda akan ada alamat server Anda) dan menempelkannya ke bilah alamat browser. Setelah Anda menekan Enter, file client.ovpn akan diunduh, dan server http itu sendiri akan dilupakan. Jika solusi ini diragukan, maka Anda dapat menggunakan trik berikut: jalankan perintah sebelumnya dan tambahkan flag dan kata sandi zp . Sekarang, jika Anda menempelkan tautan yang dibuat ke jendela browser, Anda akan menerima arsip zip dengan kata sandi. Ketika Anda memiliki file dengan konfigurasi klien, Anda dapat menggunakan klien yang sesuai. Saya menggunakan Tunnelblick untuk Mac.

Video tutorial

Video tutorial ini berisi instruksi terperinci untuk menggunakan layanan ke DigitalOcean. NB Jika Anda menganggap proyek ini bermanfaat, maka beri asterisk pada GitHub, bercabang dan beri tahu teman-teman Anda. Kontributor dan audit keamanan juga diterima secara luas. PPS Jika artikel ini mengenai Habr, maka saya berencana untuk menulis yang berikut tentang bagaimana saya meluncurkan buruh pelabuhan di pelabuhan dan buruh pelabuhan di pelabuhan, untuk apa yang saya lakukan dan apa yang terjadi.
EDIT1:
  1. Kesalahan yang diperbaiki dalam publikasi,
  2. Menanggapi komentar, saya memutuskan untuk menaruh informasi ini di sini: - bendera pribadi diperlukan untuk bekerja dengan iptables

EDIT2:
  1. Perintah peluncuran gambar yang ditingkatkan: sekarang tidak memerlukan flag --privileged
  2. Menambahkan tautan ke panduan video berbahasa Rusia: youtu.be/A8zvrHsT9A0

Source: https://habr.com/ru/post/id458606/


All Articles