WireGuard geleceğin harika VPN'i mi?

WireGuard geleceğin harika VPN'i mi?

VPN'in artık sakallı sistem yöneticilerinin egzotik aracı olmadığı zaman geldi. Kullanıcıların farklı görevleri vardır ancak gerçek şu ki herkesin bir VPN'e ihtiyacı vardır.

Mevcut VPN çözümleriyle ilgili sorun, bunların doğru şekilde yapılandırılmasının zor olması, bakımının pahalı olması ve kalitesi şüpheli eski kodlarla dolu olmasıdır.

Birkaç yıl önce Kanadalı bilgi güvenliği uzmanı Jason A. Donenfeld artık bu kadarına karar verdi ve üzerinde çalışmaya başladı. WireGuard. WireGuard şu anda Linux çekirdeğine dahil edilmeye hazırlanıyor ve hatta birçok kişiden övgü bile aldı. Linus Torvalds ve ABD Senatosu.

WireGuard'ın diğer VPN çözümlerine göre iddia edilen avantajları:

  • Kullanımı kolaydır.
  • Modern kriptografiyi kullanır: Gürültü protokolü çerçevesi, Curve25519, ChaCha20, Poly1305, BLAKE2, SipHash24, HKDF, vb.
  • Kompakt, okunabilir kod, güvenlik açıklarının araştırılması daha kolaydır.
  • Yüksek performans.
  • Açık ve ayrıntılı Şartname.

Gümüş bir kurşun bulundu mu? OpenVPN ve IPSec'i gömmenin zamanı geldi mi? Bununla ilgilenmeye karar verdim ve aynı zamanda bunu da yaptım. kişisel bir VPN sunucusunu otomatik olarak kurmak için komut dosyası.

Iş prensipleri

Çalışma prensipleri şu şekilde tanımlanabilir:

  • Bir WireGuard arayüzü oluşturulur ve ona özel bir anahtar ve IP adresi atanır. Diğer eşlerin ayarları yüklenir: ortak anahtarları, IP adresleri vb.
  • WireGuard arayüzüne gelen tüm IP paketleri UDP'de kapsüllenir ve güvenli bir şekilde teslim edildi diğer akranlar.
  • İstemciler, ayarlarda sunucunun genel IP adresini belirtir. Sunucu, istemcilerden doğru şekilde kimliği doğrulanmış veriler alındığında istemcilerin harici adreslerini otomatik olarak tanır.
  • Sunucu, çalışmasını kesintiye uğratmadan genel IP adresini değiştirebilir. Aynı zamanda bağlı istemcilere bir uyarı gönderecek ve onlar da yapılandırmalarını anında güncelleyecekler.
  • Yönlendirme kavramı kullanılır Kripto Anahtar Yönlendirme. WireGuard, eşin genel anahtarına göre paketleri kabul eder ve gönderir. Sunucu, kimliği doğrulanmış bir paketin şifresini çözdüğünde, src alanı kontrol edilir. Yapılandırmayla eşleşiyorsa allowed-ips kimliği doğrulanmış eş, paket WireGuard arayüzü tarafından alınır. Giden bir paket gönderilirken ilgili prosedür uygulanır: paketin dst alanı alınır ve buna göre karşılık gelen eş seçilir, paket kendi anahtarıyla imzalanır, eşin anahtarıyla şifrelenir ve uzak uç noktaya gönderilir. .

WireGuard'ın tüm temel mantığı 4 bin satırdan az kod kaplarken, OpenVPN ve IPSec yüz binlerce satıra sahiptir. Modern şifreleme algoritmalarını desteklemek için Linux çekirdeğine yeni bir şifreleme API'sinin dahil edilmesi önerilmektedir. çinko. Şu anda bunun iyi bir fikir olup olmadığı konusunda bir tartışma sürüyor.

Proizvoditelnost

WireGuard burada bir çekirdek modülü olarak uygulandığından, maksimum performans avantajı (OpenVPN ve IPSec ile karşılaştırıldığında) Linux sistemlerinde fark edilecektir. Ek olarak, macOS, Android, iOS, FreeBSD ve OpenBSD desteklenir, ancak bunlarda WireGuard, ortaya çıkan tüm performans sonuçlarıyla birlikte kullanıcı alanında çalışır. Windows desteğinin yakın gelecekte eklenmesi bekleniyor.

Sonuçları şununla karşılaştırın: resmi sitesi:

WireGuard geleceğin harika VPN'i mi?

Kullanım deneyimim

Ben bir VPN uzmanı değilim. Bir keresinde OpenVPN'i manuel olarak kurmuştum ve bu çok sıkıcıydı ve IPSec'i denemedim bile. Verilecek çok fazla karar var, kendini ayağından vurmak çok kolay. Bu nedenle sunucuyu yapılandırmak için her zaman hazır scriptler kullandım.

Yani benim açımdan WireGuard genel olarak kullanıcı için idealdir. Tüm düşük seviyeli kararlar spesifikasyonda verildiğinden, tipik bir VPN altyapısının hazırlanma süreci yalnızca birkaç dakika sürer. Yapılandırmada hile yapmak neredeyse imkansızdır.

Yükleme işlemi ayrıntılı olarak anlatıldı resmi web sitesinde mükemmel olanı ayrı ayrı belirtmek isterim OpenWRT desteği.

Şifreleme anahtarları yardımcı program tarafından oluşturulur wg:

SERVER_PRIVKEY=$( wg genkey )
SERVER_PUBKEY=$( echo $SERVER_PRIVKEY | wg pubkey )
CLIENT_PRIVKEY=$( wg genkey )
CLIENT_PUBKEY=$( echo $CLIENT_PRIVKEY | wg pubkey )

Daha sonra bir sunucu yapılandırması oluşturmanız gerekir /etc/wireguard/wg0.conf aşağıdaki içerikle:

[Interface]
Address = 10.9.0.1/24
PrivateKey = $SERVER_PRIVKEY
[Peer]
PublicKey = $CLIENT_PUBKEY
AllowedIPs = 10.9.0.2/32

ve tüneli bir komut dosyasıyla yükseltin wg-quick:

sudo wg-quick up /etc/wireguard/wg0.conf

Systemd'li sistemlerde bunun yerine bunu kullanabilirsiniz sudo systemctl start [email protected].

İstemci makinede bir yapılandırma oluşturun /etc/wireguard/wg0.conf:

[Interface]
PrivateKey = $CLIENT_PRIVKEY
Address = 10.9.0.2/24
[Peer]
PublicKey = $SERVER_PUBKEY
AllowedIPs = 0.0.0.0/0
Endpoint = 1.2.3.4:51820 # Внешний IP сервера
PersistentKeepalive = 25 

Ve tüneli aynı şekilde yükseltin:

sudo wg-quick up /etc/wireguard/wg0.conf

Geriye kalan tek şey, istemcilerin İnternet'e erişebilmesi için sunucudaki NAT'ı yapılandırmaktır ve işlem tamamdır!

Kod tabanının bu kullanım kolaylığı ve kompaktlığı, anahtar dağıtım işlevselliğinin ortadan kaldırılmasıyla sağlandı. Karmaşık bir sertifika sistemi yok ve tüm bu kurumsal korkular var; kısa şifreleme anahtarları SSH anahtarları gibi dağıtılıyor. Ancak bu bir sorun teşkil ediyor: WireGuard'ın mevcut bazı ağlara uygulanması o kadar kolay olmayacak.

Dezavantajları arasında, aktarım olarak yalnızca UDP protokolü mevcut olduğundan WireGuard'ın bir HTTP proxy aracılığıyla çalışmayacağını belirtmekte fayda var. Şu soru ortaya çıkıyor: Protokolü gizlemek mümkün olacak mı? Elbette bu bir VPN'in doğrudan görevi değildir, ancak örneğin OpenVPN için kendisini HTTPS olarak gizlemenin yolları vardır, bu da totaliter ülke sakinlerinin İnternet'i tam olarak kullanmasına yardımcı olur.

Bulgular

Özetlemek gerekirse, bu çok ilginç ve gelecek vaat eden bir proje, bunu zaten kişisel sunucularda kullanabilirsiniz. Kâr nedir? Linux sistemlerde yüksek performans, kurulum ve destek kolaylığı, kompakt ve okunabilir kod tabanı. Ancak karmaşık bir altyapıyı WireGuard'a aktarmak için acele etmek için henüz çok erken, Linux çekirdeğine dahil edilmesini beklemeye değer.

Benim (ve sizin) zamanınızdan tasarruf etmek için şunu geliştirdim: WireGuard otomatik yükleyici. Onun yardımıyla, hiçbir şey anlamadan kendiniz ve arkadaşlarınız için kişisel bir VPN kurabilirsiniz.

Kaynak: habr.com

Yorum ekle