Повторно поврзување на OpenVPN клиент: три контроли, три опфати
Отфрлањето на една сесија, известувањето на секој UDP клиент и рестартирањето на демонот се различни операции. Прво одредете го опфатот, потоа проверете ја новата сесија.
Некој бара VPN клиентот повторно да се поврзе, а тоа барање може да значи три различни работи. Може да значи отфрлање на една автентицирана сесија, известување на секој клиент дека UDP серверот заминува или рестартирање на самиот демон. Секоја има различен радиус на влијание, а погрешниот избор ја претвора поправката за еден корисник во прекин на услугата. Опфатот е одлуката, а командата произлегува од неа.
Прашајте кого треба да зафати пред да прашате која контрола да се користи.
Една инстанца: управувачкиот интерфејс
Конфигуриран управувачки интерфејс може да ги наброи поврзаните инстанци и да отфрли точно една од нив. Секоја сесија носи идентификатор на клиентот, а client-kill CID цели кон тој идентификатор наместо кон заедничко име. Читајте го живиот идентификатор од тековниот излез на состојбата, бидејќи вредност копирана од постар дневник се однесува на сесија што веќе не постои. Отфрлањето на инстанцата ја завршува таа врска и ништо друго.
Тоа не гарантира нова врска. Дали клиентот ќе се врати зависи од неговите поставки за повторен обид, преостанатите далечински записи, барањата за автентикација и од тоа дали надзорната апликација уште работи. Клиентот што се враќа добива нов идентификатор, и затоа споредувањето идентификатори е единствениот сигурен начин да се разликува старото од новото.
UDP известувањето за излез не е команда по клиент
explicit-exit-notify е конфигурациска директива за настаните на излез и рестартирање. На UDP клиент таа му соопштува на другата страна дека сесијата завршува, а нумеричкиот аргумент контролира колку пати известувањето се повторува. Кога серверот работи преку UDP, тој испраќа контролна порака за рестартирање до своите поврзани клиенти, а документираните вредности го разликуваат повторното поврзување со истиот сервер од преминот кон друг далечински запис. Тоа е сигнал за животниот циклус со широка публика.
Ништо во него не избира произволен клиент во произволен момент. Третирањето како копче за повторно поврзување ги достигнува сите поврзани сесии одеднаш.
Сигналите делуваат на процесот, не на сесијата
SIGUSR1 бара од процесот што работи да го рестартира своето поврзување без повторно читање на конфигурацијата, а опциите за постојаност одлучуваат што ќе го преживее тоа рестартирање. SIGHUP оди понатаму: ја чита конфигурациската датотека повторно и ги отвора своите ресурси повторно. SIGTERM и SIGINT бараат уредно исклучување. Тоа се операции на ниво на процес: на сервер со многу клиенти тие влијаат на секоја сесија што ја носи процесот, не на онаа наведена во тикетот.
Кога процесот работи под менаџер на услуги, користете го сопственото управување на менаџерот наместо да испраќате сигнал до PID што сте го нашле во список на процеси. Прочитајте ја единицата за да видите кој сигнал го испраќа менаџерот, бидејќи рестартирањето и повторното вчитување прават различни работи на истиот демон.
Одредете го опфатот пред да ја изберете контролата
Три прашања го решаваат. Кого треба да зафати: еден корисник, сите клиенти на еден сервер или демонот и сето она што го носи. Што треба да преживее: конфигурацијата, состојбата на тунелот или ништо. Кој е овластен за тоа: интеграцијата за управување, сопственикот на услугата или мрежниот оператор што го контролира известувањето за излез. Одговорете на тие и одговара само една контрола.
Додавањето неавтентициран управувачки слушател за да се добие копче за повторно поврзување му дава на секој што може да го достигне портот многу повеќе од тоа копче.
Проверете ја новата сесија, не исклучувањето
Настанот на исклучување докажува дека старата сесија завршила. Тој не кажува ништо за нова сесија што се автентицира, добива адреса, инсталира рути или го достигнува ресурсот што му бил потребен на корисникот. Проверете го новиот идентификатор, потоа состојбата на тунелот, потоа еден вистински ресурс. Тие три чекори се разликата помеѓу повторно поврзување и врска што работи.
Запишете го опфатот во записот за промени. „Повторно го поврзав клиентот“ не е опис кога клиентот бил еден од четириесет на споделен сервер.