Како проверити сервер OpenVPN профила пре импорта
Прво прочитајте у текст едитору remote уносе, транспортни слој и иглице поверења; разрешење имена доказује доступност, никад власништво.
Неко вам пошаље профил, ви га увезете и тридесет секунди касније клијент позива одредиште које нико није проверио. Прво прочитајте датотеку у текст едитору, јер све важно стаје у шаку директива: remote, proto, port, ca, cert, tls-crypt и verify-x509-name. Све остало су подразумеване вредности и управо ту живе изненађења.
Наведите сваку крајњу тачку коју датотека може да користи
Почните од крајњих тачака, јер један профил може да садржи неколико. grep -nE '^[[:space:]]*(remote|proto|port|remote-random|connection)' profile.ovpn исписује сваког кандидата по редоследу датотеке, укључујући оне угнежђене у уграђене <connection> блокове.
Када директива изостави порт, клијент се враћа на подразумевану вредност слушаоца, па само remote vpn.example.com значи порт 1194 са било којим proto који се појави касније у датотеци. Неколико обичних линија remote су алтернативе: клијент их проба по реду, осим ако их remote-random не измеша, и никада тихо не замењује домаћин другог оператера. Две линије remote на неповезаним доменима је тачка где се зауставите и питате која је била намењена.
Обратите пажњу и на писање proto. tcp се прихвата као синоним за tcp-client на страни клијента, али tcp-server у клијентском профилу је конфигурацијска грешка која чешће виси него што чисто не успе.
Прво потврдите име, затим порт
dig +short vpn.example.com вам каже да ли име постоји и које адресе враћа, а крајња тачка са више адреса или иза посредника може легитимно да врати неколико. Разрешење имена је предуслов, не доказ власништва; свако може да усмери име на адресу, а једна адреса може да одговара за много имена.
Затим проверите слушаоца на пронађеном порту, у складу са транспортом. Преко TCP openssl s_client -connect vpn.example.com:1194 -servername vpn.example.com исписује ланац који сервер представља. Преко UDP потребан вам је DTLS: openssl s_client -dtls1_2 -connect vpn.example.com:1194 изводи исти руковање преко датаграма. Завршено руковање доказује да нешто слуша и држи сертификат, што је више него што ping показује и мање него што захтевају саме поставке поверења профила.
Када руковање не успе, а домаћин одговара на ping, порт је вероватно погрешан или филтриран. Узмите то као разлог да затражите тачан порт, а не као позив да преметете оближње. nc -vzu такође на неким стековима пријављује успех и када ништа не слуша, па гола UDP провера не значи ништа без руковања иза ње.
Иглице поверења читајте одвојено од адресе
Адреса одлучује куда клијент иде; блок поверења одлучује коме верује када стигне. verify-x509-name "vpn.example.com" name причвршћује опште име субјекта, а remote-cert-tls server захтева проширену употребу кључа за аутентификацију сервера. Профил који вам даје оператер треба да носи обоје.
Потражите ca, уграђени <ca> блок и или tls-crypt или tls-auth. Профилу са tls-auth потребан је key-direction 1 на клијенту када страна сервера користи смер 0, а неусклађеност обара руковање TLS грешком која се чита као дефект сертификата. Уграђени CA који не припада оператеру чије сте име управо разрешили значи да је датотека састављена из два извора, и то је случај који вреди одлучно одбити.
verify-x509-name прихвата режиме name, name-prefix или subject, а последњи очекује пуно препознатљиво име у тачном редоследу којим га сервер исписује. Изаберите режим који одговара облику вредности, јер клијент одбија сваку везу уместо да упозори на близак промашај. За датотеку коју нисте написали, name са једноставним именом домаћина је најмање изненађујући избор.
Проверите опције које тихо не успевају
OpenVPN 2.6 преговара шифре преко data-ciphers, а профил који носи само стару линију cipher AES-256-CBC може да заврши контролни канал и затим стане на подацима. Читање те вредности каже вам да ли је датотека старија од сервера којем се придружујете; страница приручника за 2.6 наводи редослед преговора ако треба да је цитирате оператеру.
auth-user-pass без имена датотеке значи да ће клијент да пита, па профил који изгледа самодовољно ипак тражи акредитиве. auth-user-pass credentials.txt значи да очекује датотеку која вам вероватно није послата. nobind и resolv-retry infinite су уобичајени и безопасни, док је explicit-exit-notify само за UDP и бесмислен преко TCP.
Ништа од овога не мења где се профил повезује, али свако мења да ли ће се уопште повезати, и ништа од тога није видљиво у дијалогу за увоз клијента.
Одлучите, затим запишите шта сте одлучили
После овог читања постоје три исхода и само један је увоз. Када се крајња тачка и иглице поклапају са упутствима добијеним другим каналом, увезите га. Када крајња тачка изгледа тачно, али иглице или CA не одговарају, затражите исправљену датотеку. Када датотека меша крајње тачке или CA материјал из различитих извора, избришите је и затражите свежу копију.
Запишите хеш који сте прегледали, да следећа особа зна да ли се датотека променила: sha256sum profile.ovpn, залепљен поред крајње тачке у вашим белешкама. Профил је целовит распоред, не списак адреса, па никада не умећите радни remote у туђ блок поверења задржавајући њихове акредитиве.
Држите приватне кључеве и лозинке ван снимака екрана и чет нити док поредите белешке. Крајња тачка и не-тајне опције довољне су за прецизно питање, а остатак припада датотеци.
Ако га ипак увезете и први покушај не успе, покрените клијент са --verb 3 и прочитајте првих десет линија: разрешена remote адреса, договорени proto и TLS грешка појављују се тим редом, што вам каже коју сте од провера горе прескочили.