Fexyn
Fexyn
All posts

VLESS vs WireGuard: hız sansür direnciyle buluştuğunda

Fexyn Team··9 min read

WireGuard muhtemelen kısıtlanmamış ağlar için tasarlanmış en iyi VPN protokolü. VLESS Reality muhtemelen birinin seni durdurmaya aktif olarak çalıştığı ağlar için en iyi protokol. Bunlar farklı sorunlar ve onları çözen protokoller birbirine benzemiyor.

Çoğu karşılaştırma makalesi bir kazanan seçiyor. Biz seçmeyeceğiz, çünkü cevap nerede olduğuna ve seninle sunucu arasındaki ağın nasıl göründüğüne bağlı. Fexyn'de bu sebep için her iki protokolü de gönderiyoruz ve aralarında otomatik geçiş yapıyoruz. (Bir VPN protokolünün gerçekte ne olduğuna yüksek seviye bakış için, oradan başla.)

İşte aralarında seçim yaparken gerçekte önemli olan.

WireGuard: neden varsayılan oldu

WireGuard itibarını kazandı. Tüm protokol kabaca 4.000 satır kernel kodu. Karşılaştırma için, OpenVPN 100.000 satırın üzerinde. IPsec implementasyonları daha da uzun çalışıyor. Daha küçük codebase'ler, bug'ların saklanacağı daha az yer demek, ki bu güvenlik-kritik yazılım için muazzam derecede önemli.

Kriptografik seçimler görüşlü ve sabit: simetrik şifreleme için ChaCha20-Poly1305, key exchange için Curve25519, hashing için BLAKE2s. Cipher müzakeresi yok, konfigürasyon matrisi yok, "favori algoritmanı seç" menüsü yok. Bu Jason Donenfeld'in kasıtlı bir tasarım kararı ve konfigüre edilebilir cipher suite'leri olan protokolleri rahatsız eden bir downgrade saldırı sınıfını ortadan kaldırıyor.

Performans mimariden geliyor. WireGuard kernel seviyesinde (ya da boringtun üzerinden userspace'te) çalışıyor, paketleri minimal context switching ile işliyor. UDP transport TCP'nin head-of-line blocking sorununu tamamen önlüyor. 500 Mbps fiber bağlantıda, WireGuard testlerimizde tutarlı olarak yaklaşık 480 Mbps veriyor. Bu temel throughput'un %96'sı. Şifreleme için zar zor vergi ödüyorsun.

Bağlantı kurulumu da hızlı. Bir WireGuard handshake'i tek bir round trip: initiator şifrelenmiş mesaj gönderir, responder geri gönderir ve tunnel canlı. Fexyn'in Windows implementasyonunda "kullanıcı bağlan'a basıyor"dan "trafik tunnel üzerinden akıyor"a tam bağlantı sırası ortalama yaklaşık 611 milisaniye. O zamanın çoğu protokolün kendisini beklemekte değil, TUN adapter'ı kurmak ve route'ları konfigüre etmekte geçiyor.

Çoğu ağdaki çoğu kullanıcı için WireGuard doğru seçim. Hızlı, basit ve Linux, Windows, macOS, iOS ve Android'de yıllarca üretim sertleştirmesi var.

148-byte sorunu

WireGuard'ın hiçbir akıllı mühendisliğin düzeltemeyeceği bir zafiyeti var, çünkü protokolün tasarım felsefesinin doğrudan sonucu.

Her WireGuard handshake initiation mesajı tam olarak 148 byte uzunluğunda. İlk byte 0x01 (mesaj tipi 1: handshake initiation). Sonraki üç byte 0x00 0x00 0x00 (rezerve, her zaman sıfır). Bunu 4-byte sender index ve sonra 32-byte şifrelenmemiş geçici Curve25519 public key takip ediyor.

Bu yapı asla değişmiyor. Değişemiyor; protokol spesifikasyonu bunu gerektiriyor.

Deep packet inspection sistemleri bunu sömürüyor. Tespit mantığı utanç verecek kadar basit. İşte dünya çapında ağ ekipmanı vendor'ları tarafından kullanılan açık kaynak DPI kütüphanesi nDPI'nın gerçekte kontrol ettiği:

if (message_type == 1 && packet_length == 148)
    → WireGuard olarak sınıflandır

İşte bu. Bir conditional. Önde 0x01 0x00 0x00 0x00 ile 148-byte handshake başka hiçbir protokolün üretmediği eşsiz bir fingerprint. Makine öğrenmesine ya da istatistiksel analize ihtiyacın yok. Birinci sınıf bir networking öğrencisi bu filtreyi yazabilir.

Rusya'nın TSPU'su (Tehditlere Karşı Mücadele Teknik Sistemi) 2024 ortasından beri WireGuard'ı neredeyse %100 doğrulukla blokluyor. Throttle değil, bozma değil. Bloklama. WireGuard handshake'leri taşıyan UDP paketleri basitçe kayboluyor. Çin'in Great Firewall'u aynı şeyi yapıyor. İran blokluyor. Modern DPI ekipmanı çalıştıran herhangi bir hükümet WireGuard'ı bir öğleden sonra blocklist'ine ekleyebilir.

WireGuard projesi bunun farkında. Bu bug değil. Protokol stealth için değil hız ve basitlik için tasarlandı. Handshake'i değişken-uzunluklu yapmak ya da padding eklemek protokolü karmaşıklaştırır ve minimal karmaşıklığın temel tasarım prensibini ihlal eder. Bunlar WireGuard'ın hedeflediği tehdit modeli için makul takas'lar. Sadece, birinin trafiği aktif olarak incelediği bir ağdaysan WireGuard yanlış araç anlamına geliyor.

AmneziaWG: kısmi bir düzeltme

AmneziaWG 2.0 WireGuard paketlerine rastgele padding ekleyerek, dinamik header'lar kullanarak ve junk paketler enjekte ederek fingerprint'leme sorununu ele almaya çalışıyor. Tespiti zorlaştırıyor. Ama hâlâ WireGuard'ın UDP-bazlı çerçevesinde çalışıyor, yani sansürcüler paket boyutu dağılımı, timing aralıkları ve entropi karakteristiklerine istatistiksel analiz uygulayabilir. Bilinen herhangi bir protokolle eşleşmeyen UDP trafiği ağır sansürlü ortamlarda varsayılan olarak şüpheli.

AmneziaWG ileri bir adım. Temel soruna çözüm değil.

VLESS Reality: göz önünde saklanmak

VLESS WireGuard'ın neredeyse her bakımdan ters yaklaşımı alıyor. WireGuard eşsiz wire format'lı amaca yönelik inşa edilmiş bir VPN protokolüyken, VLESS şifrelemesini tamamen TLS 1.3'e devreden bir proxy protokolü. VLESS header'ının kendisi sadece 25 ila 50 byte overhead ekliyor, sürüm byte'ı, authentication için bir UUID ve routing bilgisi içeriyor.

Protokol sadece bir TLS bağlantısının içinde anlam kazanıyor. TLS'i çıkar ve VLESS'in şifrelemesi yok, integrity koruması yok, hiçbir şey yok. Bu TLS'e bağımlılık sıkça zayıflık olarak eleştiriliyor. Aslında VLESS'in en büyük gücünün kaynağı.

Vision flow ile VLESS Reality temel protokolü gerçekten normal HTTPS trafiğinden ayırt edilemez bağlantı yapan bir kamuflaj sistemiyle genişletiyor. Reality+Vision kullanarak bir Fexyn sunucusuna bağlandığında, sunucu www.microsoft.com gibi gerçek bir web sitesiyle gerçek TLS handshake yapıyor ve o sitenin meşru sertifikasını client'ına forward ediyor. Client'ın Chrome ya da Firefox'un göndereceğiyle byte-byte aynı bir ClientHello mesajı üretmek için uTLS kütüphanesini kullanıyor.

Sansürcü sunucuyu probe ederse, gerçek microsoft.com'a forward ediliyor. Gerçek sertifika. Gerçek içerik. Gerçek HTTP header'ları. Simulasyon yok. Sunucu authenticated olmayan bağlantılar için şeffaf bir reverse proxy ve authenticated olanlar için VLESS tunnel olarak işliyor.

Sonuç pasif DPI sisteminin VLESS Reality oturumunu Microsoft web sitesini gezen birinden ayıramamasıdır. Aktif probing de başarısız oluyor çünkü probe gerçek bir web sitesinden gerçek yanıtlar alıyor. Tespit, sansürcünün "microsoft.com'u ziyaret eden bir kullanıcı" ile "microsoft.com'a proxy yapan bir Reality sunucusu" arasında bir şekilde fark etmesini gerektirirdi, ki ağ perspektifinden aynı şey.

Bu Rusya'da çalışıyor. Çin'de çalışıyor. İran'da çalışıyor. Teorik değil. Şu anda, üretimde, gerçek kullanıcılar için.

VLESS neyi feragat ediyor

VLESS Reality bedava değil. O görünmezliği elde etmek için takas yapıyorsun.

En büyük maliyet TCP. VLESS TCP üzerinden çalışıyor (TLS aracılığıyla), yani TCP'nin head-of-line blocking sorununu miras alıyor. Tek bir paket kaybedilirse, o TCP stream'deki sonraki her paket retransmission'ı bekliyor. WireGuard UDP'de çalışarak bunu önlüyor. Loss'lı bağlantılarda, kalabalık Wi-Fi ya da spotty kapsamlı mobil ağlarda aldığın türde, fark ölçülebilir. VLESS aynı zamanda sadece TCP, nokta. XHTTP (XRay-core'da yeni bir transport seçeneği) multiplexing ekliyor ama altta yatan TCP kısıtlamasını değiştirmiyor. Gerçek-zamanlı ses ya da gecikmenin güvenilirlikten daha önemli olduğu oyunlar için WireGuard'ın UDP transport'u daha uygun.

Bağlantı yolu da daha karmaşık. Bir VLESS Reality oturumu TLS 1.3 handshake (1-RTT veya 0-RTT), VLESS protokol müzakeresi ve potansiyel olarak tun2socks routing ile TUN adapter kurulumunu içeriyor. WireGuard'ın tek-roundtrip handshake'inden daha çok hareketli parça. Sunucu tarafında, Reality kamuflaj hedefiyle TLS bağlantısını sürdürüyor ve authenticated olmayan bağlantılar için proxy mantığını yönetiyor. Bu, WireGuard'ın kernel-space paket işlemesinden client başına daha fazla bellek ve CPU tutuyor. Ölçekte fark sunucu operatörleri için birikiyor.

Sonra denetlenebilirlik var. WireGuard'ın 4.000 satır kodu resmi olarak doğrulandı ve geniş çapta denetlendi. XRay-core önemli ölçüde daha fazla yüzey alanına sahip büyük bir Go codebase. Temel VLESS protokolü basit, ama çevreleyen implementasyon (Reality, uTLS fingerprint'leme, birden fazla transport modu) aynı seviyede bağımsız güvenlik incelemesi almadı.

Bunlar gerçek maliyetler. Alternatif bağlantının bloklanması olduğunda kabul edilebilir. Ödememen gerektiğinde ödemen gereken maliyetler değil.

Kafa kafaya: Fexyn'in performans rakamları

Aynı donanımda, aynı sunucuda, aynı ağ koşullarında her iki protokolü test ettik. Windows 11, 500 Mbps fiber, Frankfurt sunucumuza bağlanıyor. Bu rakamlar otomatik benchmark'lardan, cherry-pick'lenmiş çalışmalardan değil.

Metrik WireGuard VLESS Reality
Soğuk bağlanma süresi ~611 ms ~627 ms
Sıcak yeniden bağlanma süresi Yok ~42 ms
Bağlantı kesme süresi ~108 ms ~100 ms
Throughput (500 Mbps temel) ~480 Mbps (%96) Daha düşük (TCP overhead)
Transport UDP TCP (TLS 1.3)
Handshake roundu 1 round trip 1-RTT TLS + VLESS header
DPI tespit edilebilir Evet, kolayca Hayır, Reality ile
Paket başına protokol overhead ~32 byte (Poly1305 tag + counter) 25-50 byte (VLESS) + TLS record

Bağlanma süreleri çoğu insanın beklediğinden daha yakın. Soğuk bağlantı için 611 ms ile 627 ms arasındaki 16 milisaniye fark kullanıcının algılayacağı bir şey değil. İki durumda da o zamanın çoğu protokol-seviyesi gecikme değil, adapter kurulumu, route konfigürasyonu ve doğrulamada geçiyor.

VLESS'in sıcak yeniden bağlanmalarda ilginç bir avantajı var. Çünkü XRay-core bağlantılar arasında kalıcı bir süreç olarak çalıştırılabilir, yeniden bağlanma (sunucuları değiştirmek ya da ağ değişikliğinden kurtulmak) sadece TLS oturumunu yeniden kurmayı gerektiriyor. Bu testlerimizde yaklaşık 42 milisaniye sürüyor. WireGuard yeniden bağlantıları da hızlı ama Windows implementasyonumuzda tam adapter teardown ve yeniden oluşturma döngüsü aynı sıcak-yol optimizasyonuna sahip değil.

WireGuard'ın açıkça önde olduğu yer throughput. Kernel seviyesi (ya da yüksek-performans userspace) paket işlemesiyle UDP transport WireGuard'a özellikle yüksek-bandwidth bağlantılarında ölçülebilir bir avantaj veriyor. TCP'nin retransmission davranışının gecikme sıçramaları eklediği loss'lı ağlarda boşluk genişliyor.

Hangisini ne zaman kullanmalı

Bu makalenin geri kalanının önerebileceğinden daha basit.

WireGuard kullan VPN trafiğinin bloklu ya da throttle olmadığı bir ağdaysan. Çoğu Batı ülkesindeki ev interneti, VPN kullanımına izin veren ofis ağları, aktif sansürü olmayan ülkelerdeki mobil ağlar. WireGuard sana en iyi throughput, en düşük gecikme ve en basit bağlantı modelini veriyor. Doğru varsayılan.

VLESS Reality kullan VPN protokollerini bloklayan ya da bozan bir ağdaysan. WireGuard'ı bloklayan üniversite ağları. Sadece port 443'te HTTPS'e izin veren kurumsal güvenlik duvarları. DPI-bazlı kısıtlamalı halka açık Wi-Fi. Ve tabii ki Rusya, Çin, İran ya da aktif internet sansürü olan diğer ülkelerde her yerde. VLESS Reality test ettiğimiz ve bunların hepsinden güvenilir geçen tek üretim protokolü.

Otomatik rotasyonu kullan her iki ortam arasında seyahat ediyorsan ya da ağının neye izin verdiğinden emin değilsen. Bu Fexyn'in varsayılan modu: hız için önce WireGuard'ı dene, WireGuard başarısız olursa VLESS Reality'ye düş, sonra son çare olarak OpenVPN'e düş. Geçiş kill switch korumasını düşürmeden otomatik oluyor.

Fexyn neden ikisini de gönderiyor

Çoğu VPN sağlayıcı bir protokol gönderiyor ve belki legacy fallback olarak OpenVPN sunuyor. NordVPN'in NordLynx'i NAT katmanlı WireGuard (Fexyn vs NordVPN tam ayrıntı için). ExpressVPN'in Lightway'i hâlâ DPI tespit edilebilir custom bir protokol. Büyük Batılı VPN sağlayıcılarının hiçbiri VLESS Reality göndermiyor çünkü esas olarak Çince konuşan ve resmi spesifikasyonu olmayan bir codebase ile derin aşinalık gerektiren XRay/V2Ray ekosisteminden geliyor.

VPN'in her yerde çalışması gerektiğini düşünüyoruz. Hiçbir şeyin seni bloklamadığı evindeki Wi-Fi'da, evet. Ayrıca TSPU çalıştıran Moskova'daki otel ağında. Sadece HTTPS'e izin veren üniversite kampüsünde. UDP'yi tamamen bloklayan kafe Wi-Fi'sında.

Bu, farklı özelliklere sahip birden fazla protokol gerektiriyor. Hiçbir şey yolda olmadığında hız için WireGuard. Bir şey olduğunda görünmezlik için VLESS Reality. Hiçbirinin çalışmadığı ama legacy TLS-bazlı VPN trafiğine hâlâ izin verilen nadir ağlar için OpenVPN.

Fexyn'in protokol rotasyon motoru bağlantı modu ayarına göre onları sırayla deniyor. "Speed first" WireGuard ile başlıyor. "Stealth first" VLESS Reality ile başlıyor. Her iki şekilde de bağlanmış olarak bitiyorsun. Protokol seçimi otomatik, kill switch rotasyon sırasında aktif kalıyor ve kullanıcının bu makalede açıklanan farkların hiçbirini anlaması gerekmiyor.

Sadece internetlerinin çalışmasına ihtiyacı var. Birisi çalışmamasını sağlamaya çalışıyor olsa bile.

İki protokolü de bugün Fexyn aboneliğiyle deneyebilirsin.

VLESS vs WireGuard: hız sansür direnciyle buluştuğunda | Fexyn VPN