Merhaba Habrites! Kendinizi sanal olarak başka bir şehre, ülkeye veya kıtaya ışınlamak istediğiniz bir durumla hiç karşılaştınız mı? Benim bu ihtiyacım oldukça sık oluyor, bu yüzden saniyeler içinde herhangi bir yerde başlatabileceğim kendi VPN sunucuma sahip olma yeteneği oldukça önemliydi. Bu yazıda, hazır bir çözüm ararken aklıma gelen bir projeyi paylaşmak istiyorum; bu durumda, hızlı bir şekilde kurmama olanak sağlayacak bir Docker imajı. OpenVPN Minimum ayarlara ve kabul edilebilir bir güvenlik seviyesine sahip sunucu.
tarih öncesi
Hizmeti herhangi bir makinede (fiziksel bir sunucu, sanal bir özel sunucu, hatta başka bir konteyner yönetim sistemi içindeki bir konteyner alanı) çalıştırabilme yeteneği kritik öneme sahipti. Bakışlarım hemen Docker'a düştü. Birincisi, bu hizmet popülerlik kazanıyor ve bu nedenle giderek daha fazla sağlayıcı ön kurulumuyla hazır çözümler sunuyor; ikincisi, terminaldeki tek bir komutu kullanarak hizmeti indirip çalıştırabileceğiniz merkezi bir görüntü depolama alanı vardır. Böyle bir projenin zaten olması gerektiği fikri aklıma geldi ve çok araştırdım. Ancak bulduğum projelerin çoğu ya çok hantaldı (kalıcı veri depolama için bir kapsayıcı oluşturmanız ve uygulamayla birlikte kapsayıcıyı farklı parametrelerle birkaç kez başlatmanız gerekiyordu) ya da makul belgeler yoktu ya da tamamen terk edilmişti. , projeniz üzerinde çalışmaya başladım. Belgeleri incelemek, kod yazmak ve hata ayıklamak için uykusuz geceler geçirdik ama sonunda hizmetim gün ışığına çıktı ve yönlendiricinin tek renkli LED panelinin tüm renkleriyle ışıldamaya başladı. Bu yüzden sizden sevmenizi ve iltifat etmenizi rica ediyorum - . Hatta bir logo bile buldum (yukarıda, kesilmeden önce), ancak bunu kesinlikle yargılamayın çünkü ben bir tasarımcı değilim (artık). Bu projeyi uyguladığımda, minimum dağıtım hızına öncelik verdim. ayarları ve kabul edilebilir bir güvenlik düzeyi. Deneme yanılma yoluyla bu kriterlerin en uygun dengesini buldum, ancak bazı yerlerde güvenlik uğruna dağıtım hızından fedakarlık etmek zorunda kaldım ve minimum ayarlar için taşınabilirlik için ödeme yapmak zorunda kaldım: mevcut yapılandırmada, bir bir sunucuda oluşturulan konteyner başka bir sunucuya aktarılamaz ve başlatılamaz. Örneğin tüm istemci ve sunucu sertifikaları hizmet başlatıldığında oluşturulur ve bu işlem yaklaşık 2 saniye sürer. Ancak Hellman Defi dosyasının oluşturulmasının derleme süresine dahil edilmesi gerekiyordu: docker görüntüsünün oluşturulması sırasında oluşturulur ve 10 dakikaya kadar sürebilir. Saygın topluluktan böyle bir çözümün güvenlik denetimini almayı gerçekten çok isterim.
Başlatmak
Hizmeti başlatmak için birkaç şeye ihtiyacımız var:
- Sunucu: fiziksel veya sanal. Docker-içinde-docker modunda çalıştırmak teorik olarak mümkündür, ancak bu seçeneği kapsamlı bir şekilde test etmedim;
- Aslında Docker. Birçok barındırma sağlayıcısı, Docker'ı yerleşik olarak hazır çözümler sunar;
- Genel IP adresi.
Tüm ayrıntılar yerli yerindeyse tek yapmamız gereken sunucunuzun konsolunda aşağıdaki komutu çalıştırmaktır:
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/openvpnDikkatli bir okuyucu, sunucu IP adresinin otomatik olarak belirlendiğini fark etmiş olabilir. ipify.org. Herhangi bir nedenle bu işe yaramazsa, adresi manuel olarak belirleyebilirsiniz. Önceki adımların tümü doğru şekilde tamamlandıysa, konsolda benzer bir şey görmeliyiz:
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!Hedefe yaklaştık: şimdi kopyalamamız gerekiyor (sizin durumunuzda sunucunuzun adresi olacaktır) ve tarayıcınızın adres çubuğuna yapıştırın. Enter'a bastıktan sonra client.ovpn dosyası indirilecek ve http sunucusunun kendisi unutulmaya yüz tutacaktır. Bu çözümden şüphe duyuyorsanız aşağıdaki yöntemi kullanabilirsiniz: önceki komutu çalıştırın ve bayrak ekleyin zp ve şifre. Artık, oluşturulan bağlantıyı bir tarayıcı penceresine yapıştırırsanız, şifreli bir zip arşivi alacaksınız. Bir istemci yapılandırma dosyasına sahip olduğunuzda, uygun herhangi bir istemciyi kullanabilirsiniz. Mac için Tunnelblick'i kullanıyorum.
Video öğretici
Bu video eğitimi, hizmetin DigitalOcean'da dağıtımına ilişkin ayrıntılı talimatlar içerir.

EDIT1:
- Yayındaki hatalar düzeltildi,
- Yorumlara yanıt olarak şu bilgiyi buraya koymaya karar verdim: iptables ile çalışmak için —ayrıcalıklı bayrağı gereklidir
EDIT2:
- Görüntü başlatma komutu iyileştirildi: artık –ayrıcalıklı bayrağını gerektirmiyor
- Rusça video kılavuzuna bir bağlantı eklendi:
Kaynak: habr.com
