Lėtas pralaidumas per tunelį ir mašina, įstrigusi laukdama atsitiktinių skaičių, duoda labai skirtingą patirtį, tačiau jie registruojami po tuo pačiu skundu. Vienas pasirodo kaip pauzė prieš pradedant ką nors veikti. Kitas pasirodo kaip ryšys, kuris veikia ir lėtai perkelia duomenis, kol jį stebite. Nustatyti, kurį turite, užtrunka dešimt minučių ir sutaupo savaitę spėlionių.

Du panašiai atrodantys simptomai

Paslauga, kuri užstringa po naujo paleidimo, dar nepriėmusi nė vieno ryšio, kažko laukia. Tunelis, kuris greitai užmezgamas ir tada perduoda mažesne nei tikėtasi sparta, ribojamas kažko kito. Žodis šifravimas pasirodo abiejose istorijose, todėl jos sujungiamos. Atskirkite jas prieš liesdami konfigūracijos failą.

Uždėkite laiko žymes aplink paleidimą, autentifikaciją, raktų pakartotinį derinimą ir patį perdavimą. Ilgas delsimas, kol tunelis taps naudojamas, nėra maža pastovi sparta, o abiejų suvidurkinimas į vieną skaičių sunaikina įrodymus.

systemd-analyze blame | head -10
journalctl -u [email protected] -o short-precise | head -40
cat /proc/sys/kernel/random/entropy_avail

Pirmos dvi komandos paleidimo darbą padeda į laiko ašį. Trečioji atspausdina branduolio entropijos apskaitos reikšmę, kuri naudinga kaip vienas duomenų taškas ir nenaudinga kaip pralaidumo matuoklis.

Kaip iš tikrųjų atrodo atsitiktinių skaičių laukimas

Saugių atsitiktinių baitų užklausa gali užblokuoti, kol branduolys inicijuos savo atsitiktinį šaltinį. Tai svarbiausia virtualiose mašinose ir mažose įterptosiose plokštėse anksti paleidžiant, kai surenkama mažai aplinkos triukšmo. Iš to neišplaukia, kad kiekvienas užšifruotas baitas sunaudoja naują entropiją.

Šiuolaikiniai generatoriai apsėjami vieną kartą, o paskui generuoja išvestį iš deterministinės konstrukcijos, persėdami pagal savo grafiką. Masinis perdavimas neištuština baseino baitas po baito, todėl maža baseino reikšmė lėto perdavimo metu nieko neįrodo apie priežastį.

strace -f -e trace=getrandom -p $(pidof openvpn) 2>&1 | head -20
dmesg | grep -i 'random\|crng'

Pirmoji komanda rodo, ar procesas sėdi atsitiktinių skaičių iškvietime, kol stebite. Antroji rodo paties branduolio inicijavimo pranešimus, ir būtent ten ankstyvo paleidimo užstrigimas tampa matomas.

Užrašykite branduolio versiją ir biblioteką, su kuria paslauga iš tikrųjų susieta, nes elgsena skiriasi tarp realizacijų ir tarp leidimų. Pėdsakas, paimtas po atkūrimo, paprastai visiškai praleidžia pauzę.

Kaip iš tikrųjų atrodo nuolatinis lėtumas

Tunelis, kuris visą laiką perduoda lėtai, ribojamas duomenų kelio. Vienas prisotintas srautas, išorinių paketų praradimas, pakartotiniai perdavimai ar pilnos lizdų eilės kiekvienas sukuria tą modelį, ir kiekvienas turi savo pataisymą. Suvestinis CPU procentas paslepia vieną užimtą srautą, ir tai dažniausiai neteisingas skaitymas. Pažiūrėkite į laiką vienam srautui prieš žiūrėdami į bendrą apkrovą.

Matuokite abiem kryptimis su palyginama baze ir stebėkite sąsajos skaitiklius, o ne pačios programos ataskaitą.

ss -tin dst 203.0.113.10
nstat -az | grep -i 'drop\|retrans'
ethtool -S eth0 | grep -i 'drop\|error'

Pirmoji komanda rodo eilės ir perkrovos būseną vienam partneriui. Antroji ir trečioji praneša apie numetimus ir pakartotinius perdavimus kamino ir sąsajos lygmenyje, kur priežastis paprastai pasirodo pirmoji.

Pasirinkite pataisymą išmatuotai kliūčiai

Jei įrodymai rodo ankstyvą paleidimo inicijavimą, pažiūrėkite į platformos palaikomą sėjos kelią, kuris virtualioje mašinoje gali apimti šeimininko teikiamą atsitiktinį įrenginį. Sėklos atvaizdas, nukopijuotas nepakeistas į daugybę svečių, nepakeičia nepriklausomo inicijavimo.

Jei įrodymai rodo duomenų kelią, suderinkite tai, į ką nurodo skaitikliai. Buferių dydžiai padeda, kai eilės persipildo, ir nieko nedaro, kai vienas srautas prisotintas. Entropijos demono įdiegimas skaitikliui pakelti nėra pralaidumo taisymas, o sėjos prielaidų keitimas, kad grafikas atrodytų geriau, iškeičia saugumo savybę į skaičių.

Priimkite pakeitimą tik tada, kai tas pats matavimas pagerėja tomis pačiomis sąlygomis. Didesnis skaitiklis nėra rezultatas; trumpesnis išmatuotas laukimas arba greitesnis perdavimas su nustatyta priežastimi yra rezultatas.

Susiję straipsniai