Копирајте профил на таблет, повежите се, и лаптоп отпадне. Додајте duplicate-cn, оба остану повезана, и проблем изгледа решен — све док се два уређаја не почну свађати око исте адресе тунела или изгубљени таблет не избаци цео налог из мреже. Ова опција мења једну ствар и само једну: да ли сервер дозвољава другу сесију под именом које је већ видео. Све што људи очекују да поправи — од независности уређаја преко адресирања по уређају до селективног опозивања — и даље се ради преко идентитета, а идентитет је овде сертификат.

Мит: друга сесија је други идентитет

Интуиција каже да две везе морају бити два клијента, а два клијента треба да буду два уређаја са својим правима. Сервер то не моделује тако. Он види заједничко име и, са укљученим duplicate-cn, прихвата више од једне живе сесије са тим именом, и свака добија своје стање сесије у демону.

Ништа у том прихватању не дотиче проверу сертификата. Исти сертификат остаје акредитив, исти кључ остаје приватни кључ, и свака политика везана за субјекат сертификата и даље се два пута разрешава на исту вредност. Друга сесија је други сокет, не други идентитет.

Та разлика је невидљива док све ради. Постаје врло видљива у тренутку када треба да разликујете два уређаја, а то је обично дан када се један од њих изгуби.

Шта се заиста мења када две сесије деле име

Без опције, нова веза под заједничким именом које је већ повезано потискује претходну сесију. Зато лаптоп отпадне када се таблет повеже, и то је намерна заштита од двосмислености, не грешка. Са опцијом, обе сесије остају живе и сервер их прати одвојено по сесији, не по уређају.

Свака сесија и даље добија своју спољну везу и своје договорене кључеве, тако да је паралелна пропусност заиста паралелна. Оно што деле је све што произлази из акредитива: претраге политика, конфигурација специфична за клијента, идентитет у дневницима и опозивање. Стање сесије припада вези и умире са њом, док факти на нивоу акредитива остају за обе. Зато излаз стања може двапут навести исто име, а бројачи остају одвојени.

Проверите шта ваша изградња заиста ради пре него што пројектујете на основу ње, јер ефекат опције одређује сама опција, а не предања:

grep -n 'duplicate-cn\|client-config-dir\|username-as-common-name' /etc/openvpn/server.conf

Статична адреса за коју сте мислили да сте је доделили

Конфигурација по клијенту тражи се по имену, и ту је замка. Датотека client-config-dir названа по заједничком имену примењује се на сваки уређај који користи то име, па ifconfig-push у њој даје обема уређајима исту адресу тунела. Друга сесија се или не успоставља, или се судара тако да изгледа као квар рутирања.

Динамички базен понаша се боље случајно, јер се свакој сесији адреса из базена додељује независно. То вам и даље не даје стабилну адресу по уређају, и сигурно вам не даје политику по уређају везану за ту адресу.

Ако распоређивање користи username-as-common-name, кључ претраге постаје аутентификовано корисничко име уместо субјекта сертификата, и иста колизија погађа свакога ко се пријави двапут. Име које покреће конфигурацију мора бити јединствено по уређају да би конфигурација по уређају имала смисла.

Шта заједнички идентитет не може при уклањању

Опозивање делује на сертификат, не на приказано име и не на сесију. Опозовите тај сертификат и сваки уређај који држи копију одмах губи приступ, укључујући онај у канцеларији који нико не жели да узнемирава. Задржите га и изгубљени уређај наставља да ради, јер га ништа у протоколу не разликује од одобрене копије.

Дневници наслеђују исту двосмисленост. Излаз стања приказује заједничко име и стварну адресу, и обоје могу припадати било ком од два уређаја. Преглед инцидента који треба да зна која машина је шта урадила не може да одговори на то питање из сопствених записа VPN-а, колико год детаља ниво дневника даје.

Нема криптографског заобилазног пута за ово. Два уређаја која представе исти сертификат су за сервер исти учесник двапут, и свака шема која тврди супротно је конвенција именовања, а не контрола.

Када је дељење исправно и како га ограничити

Дељење има легитимне употребе: лабораторијски налог који користи неколико тест машина, или домаћинство у ком се уређајима управља заједно и детаљност опозивања није важна. У тим случајевима укључите опцију намерно, држите заједнички акредитив изван политике по уређају и дајте базену простора да се сесије не сударе на адреси.

За све што тражи одвојене адресе, одвојене дневнике или одвојено уклањање, издајте одвојене сертификате уобичајеним путем регистрације. То даје сваком даљем систему посебан објекат на који може да се ослони, и опција престаје да буде важна јер су имена већ јединствена.

Који год пут изаберете, тестирајте модел управљања, а не пријаву. Повежите оба уређаја, потврдите да имају различите адресе, затим симулирајте губитак и проверите да ли можете да уклоните тачно један од њих. Приручник openvpn(8) одређује обим опције; ваша процедура уклањања одређује да ли је дељење заиста прихватљиво.

Повезани чланци