Bir VPN'in entropisi tükenir mi? entropy_avail gerçekte ne gösterir
Açılıştaki takılma ile yavaş kurulmuş tünel iki farklı arızadır. Rastgeleliği suçlamadan önce aşamayı, sayacın gerçek anlamını ve kuyruğu okuyun.
Çekirdeğin rastgeleliğinin tükenmesi yavaş bir VPN için çekici bir açıklamadır ve insanların bildirdiği belirti için neredeyse her zaman yanlış olandır. Rastgele çıktı bekleyen bir ana makine belirli bir anda takılır, genellikle açılışın başında veya anahtar işleme sırasında. Bir tünel hızlı bağlanıp sonra yavaş aktarıyorsa bu, bunun yerine aktarım hızını anlatır. Okumayı bitirmediğiniz bir sayıyı düzeltmek için daemon kurmadan önce bu iki gözlemi ayırın.
Efsane neden yaşıyor
İki sorun da gerçektir ve uzaktan benzer görünürler. Yeni açılmış bir sanal makinede başlangıç takılmaları gerçekten olur ve yavaş kurulmuş tünel de aynı derecede gerçektir. Hata, her iki hikâyede de bir yerde kriptografi geçtiği için ikincinin birinciden kaynaklandığını varsaymaktır. Şifreleme kelimesinde, aktarılan her baytın yeni bir ortam gürültüsü baytı tükettiğine dair hiçbir anlam yoktur.
Bu üreteçler böyle çalışmaz. Bir kriptografik kitaplık tohumlanmış bir üreteç tutar ve ondan çıktı alır, kendi politikasına göre yeniden tohumlar, bu yüzden pahalı an tohumlama, sürekli aktarım değildir.
Bir üreteç paket başına ne yapar
OpenSSL 3'te varsayılan üreteç hiyerarşisi, yapılandırmaya ve duruma göre tohumlayan ve yeniden tohumlayan DRBG örneklerinden kurulur. OpenVPN 2.6'da AEAD veri yolu nonce değerini paketin sıra numarasıyla oturum başına örtük bir değeri birleştirerek türetir, eski CBC yolu ise paket başına sözde rastgele bir IV alır. Hiçbir desen, bir gigabayt taşımanın bir gigabayt taze çekirdek gürültüsü tükettiği kuralını desteklemez. İkisi de tohumlamanın önemli olduğu yerin anahtar üretimi ve el sıkışmalar olduğu fikrini destekler.
CBC vakası adlandırılmaya değer çünkü efsaneye benziyor ve değil: paket başına IV'ü kitaplığın kendi yeniden tohumlama takvimine göre kitaplık üretecinden gelir, asla paket başına çekirdek çağrısından gelmez. Biri bayt başına entropi maliyetinden söz ettiğinde, hangi kitaplık sürümünü ve hangi kod yolunu ölçtüklerini sorun.
Bekleme gerçekte nerede görünür
Zaman damgalarını oturumun değil aşamaların çevresine koyun: başlangıç, kimlik doğrulama, anahtar değişimi ve aktarım. Tünel kullanılabilir olmadan önceki bekleme, düşük sabit hızdan farklı bir şikâyettir ve yalnızca biri rastgeleliğe işaret eder. Linux'ta normal bir getrandom() isteği çekirdeğin rastgele kaynağı başlatılana kadar bloke olabilir, bu yüzden bu sorunun açılış sürümü, başlangıçta havuzu besleyecek az şeyi olan sanal makinelerde ve gömülü kartlarda gerçektir.
| Aşama | Ne çalıştırılmalı | Bekleme anlamına gelen okuma | Aktarım hızı anlamına gelen okuma |
|---|---|---|---|
| Açılış, herhangi bir tünelden önce | systemd-analyze critical-chain | tünel başlamadan önce saniyelerce oturan birim | geçerli değil, henüz hiçbir şey aktarılmıyor |
| El sıkışma | journalctl -u openvpn-server@server -b | başlatma dizisi tamamlanmadan önceki uzun boşluk | geçerli değil, tünel ayakta değil |
| Kurulmuş aktarım | ss -tin yanında sar -n DEV 1 | boş soket kuyruklarıyla bloke olmuş süreç | dolu kuyruklar, yeniden iletimler ve tek meşgul iş parçacığı |
İki ucuz komut o toplamanın başına aittir ve tablo gerekmeden önce kolay soruları çözerler. Okudukları sayaç bant genişliği ölçer değil entropi muhasebesidir ve tek bir anlık görüntü bir sürecin bloke olduğunu, ne kadar beklediğini veya kitaplığının hangi arayüzü çağırdığını gösteremez. Kurtarmadan sonra alınan örnek genellikle takılmayı tamamen kaçırır, bu yüzden çekirdek sürümünü okumanın yanında tutun.
cat /proc/sys/kernel/random/entropy_avail
uname -rDüzeltmeyi okumayla eşleştirin
Çekirdek gerçekten başlatmayı bekliyorsa tünele değil, platformun desteklediği tohumlama yoluna bakın. Bir sanal makineye ana makinenin sağladığı rastgele aygıt verilebilir, örneğin virtio-rng, ve imaj hazırlığı önemlidir çünkü birçok misafire değiştirilmeden kopyalanan tohum bağımsız başlatma değildir. Bir kitaplık açılıştan sonra tohumlama hataları bildirirse, çekirdek ayarlarını değiştirmek yerine yapılandırılmış kaynağını ve sağlayıcı davranışını inceleyin.
ss -tin dst 203.0.113.7
sar -n DEV 1 5OpenSSL üreteç belgeleri bu hiyerarşinin girdiyi nasıl aldığını ve yeniden tohumlamanın ne zaman olduğunu açıklar; bu, efsaneden çok daha dar bir iddiadır ve yalnızca o uygulama için geçerlidir. Entropi daemon'u evrensel bir hız onarımı değildir ve bir sayacı yükseltmek için kurmak, gecikme göstermeden bir güvenlik varsayımını değiştirir. Aktarım hızı için veri yolunu izleyin: tek doymuş iş parçacığı, yeniden iletimler, dış kayıp ve kuyruk düşmeleri her biri farklı bir düzeltme gerektirir ve tampon boyutları soket tamponlamasını kendi kuyruk kanıtıyla ele alır.