Ядроның кездейсоқтығының сарқылуы — баяу VPN үшін тартымды түсініктеме және адамдар хабарлайтын симптом үшін әрдайым дерлік қате түсініктеме. Кездейсоқ шығысты күтіп тұрған хост белгілі бір сәтте тоқтайды, әдетте жүктелудің басында немесе кілттерді өңдеу кезінде. жылдам қосылып, содан кейін баяу тасымалдайтын туннель оның орнына өткізу қабілетін сипаттайды. Оқып бітірмеген санды түзету үшін демон орнатпас бұрын осы екі бақылауды бөліңіз.

Миф неге өмір сүреді

Екі мәселе де нақты және алыстан бірдей көрінеді. Жаңа жүктелген виртуалды машинадағы іске қосу тоқтаулары шынымен болады, ал баяу орнатылған туннель де сондай нақты. Қате — екіншісі біріншіден туындайды деп болжау, себебі криптография екі әңгімеде де бір жерде кездеседі. Шифрлау сөзінде тасымалданған әр байт қоршаған орта шуының жаңа байтын тұтынады деген мағына жоқ.

Бұл генераторлар олай жұмыс істемейді. Криптографиялық кітапхана тұқыммен құрылған генераторды ұстайды және одан шығыс алады, өз саясаты бойынша қайта тұқымдайды, сондықтан қымбат сәт — тұқымдау, тұрақты тасымалдау емес.

Генератор әр пакетке не істейді

OpenSSL 3-те әдепкі генератор иерархиясы конфигурация мен күйге сәйкес тұқымдайтын және қайта тұқымдайтын DRBG даналарынан құрылады. OpenVPN 2.6-да AEAD деректер жолы өзінің nonce мәнін пакеттің реттік нөмірінен сессияға тән жасырын мәнмен бірге алады, ал ескі CBC жолы әр пакетке псевдокездейсоқ IV алады. Екі үлгі де гигабайтты жылжыту ядро шуының жаңа гигабайтын тұтынады деген ережені қолдамайды. Екеуі де кілт генерациясы мен қол алысулар тұқымдау маңызды болатын орын деген идеяны қолдайды.

CBC жағдайын атап өткен жөн, өйткені ол мифке ұқсайды және ол емес: оның әр пакетке IV мәні кітапхананың өзіндегі қайта тұқымдау кестесі бойынша кітапхана генераторынан келеді, ешқашан әр пакетке ядро шақыруынан келмейді. Біреу байтқа энтропия құнын келтірсе, қай кітапхана нұсқасын және қай код жолын өлшегенін сұраңыз.

Күту шын мәнінде қайда көрінеді

Уақыт белгілерін сессияның айналасына емес, кезеңдердің айналасына қойыңыз: іске қосу, аутентификация, кілт ауыстыру және тасымалдау. Туннель пайдалануға жарамды болғанға дейінгі күту — төмен тұрақты жылдамдықтан өзге шағым, және олардың тек біреуі ғана кездейсоқтыққа нұсқайды. Linux-те қарапайым getrandom() сұранысы ядроның кездейсоқ көзі инициализацияланғанша блокталуы мүмкін, сондықтан бұл мәселенің жүктелу кезіндегі нұсқасы басында пулды қоректендіретін аз нәрсесі бар виртуалды машиналар мен кіріктірілген тақталарда шынайы.

КезеңНені іске қосу керекКүтуді білдіретін көрсеткішӨткізу қабілетін білдіретін көрсеткіш
Жүктелу, кез келген туннельге дейінsystemd-analyze critical-chainтуннель басталғанға дейін секундтар бойы отыратын бірлікқолданылмайды, әлі ештеңе тасымалданбайды
Қол алысуjournalctl -u openvpn-server@server -bинициализация тізбегі аяқталғанға дейінгі ұзақ үзілісқолданылмайды, туннель көтерілмеген
Орнатылған тасымалдауss -tin қасында sar -n DEV 1бос сокет кезектерімен блокталған процесстолы кезектер, қайта жіберулер және бір бос емес ағын

Осы жинақтың басында екі арзан пәрмен тұруы керек және олар кесте қажет болмай тұрып жеңіл сұрақтарды шешеді. Олар оқитын есептегіш — энтропия есебі, өткізу қабілетінің өлшегіші емес, және бір сурет процесс блокталғанын, қанша күткенін немесе кітапханасы қай интерфейсті шақыратынын көрсете алмайды. Қалпына келтіргеннен кейін алынған үлгі тоқтауды мүлдем өткізіп жібереді, сондықтан ядро нұсқасын оқылымның қасында ұстаңыз.

cat /proc/sys/kernel/random/entropy_avail
uname -r

Түзетуді оқылымға сәйкестендіріңіз

Егер ядро шынымен инициализацияны күтіп тұрса, туннельге емес, платформаның қолдайтын тұқымдау жолына қараңыз. Виртуалды машинаға хост ұсынған кездейсоқ құрылғыны беруге болады, мысалы virtio-rng, және бейнені дайындау маңызды, өйткені көптеген қонақтарға өзгеріссіз көшірілген тұқым тәуелсіз инициализация емес. Егер кітапхана жүктелуден кейін тұқымдау сәтсіздіктерін хабарласа, ядро параметрлерін өзгертудің орнына оның конфигурацияланған көзін және жеткізушінің әрекетін тексеріңіз.

ss -tin dst 203.0.113.7
sar -n DEV 1 5

OpenSSL генераторының құжаттамасы бұл иерархияның кірісті қалай алатынын және қайта тұқымдау қашан болатынын сипаттайды, бұл мифтен әлдеқайда тар тұжырым және тек сол іске асыруға қатысты. Энтропия демоны — әмбебап жылдамдық жөндеуі емес, және оны есептегішті көтеру үшін орнату кідірісті дәлелдемей-ақ қауіпсіздік болжамын өзгертеді. Өткізу қабілеті үшін деректер жолын ұстаныңыз: бір қаныққан ағын, қайта жіберулер, сыртқы жоғалту және кезектердің тасталуы әрқайсысына бөлек түзету керек, ал буфер өлшемдері сокет буферлеуін өз кезек дәлелдерімен шешеді.

Қатысты мақалалар