Една услужна IP адреса на секој OpenVPN јазол: што таа не прави
Резервирајте приватна /32 на секој јазол за клиентот да стигне до серверот што го избрал. Адресата не префрла при дефект, не пренесува сесии и не избира здрав јазол.
Клиент се поврзува со еден од неколкуте OpenVPN сервери и потоа му треба мала услуга што работи на тој јазол: страница за состојба, метричка крајна точка, агент за резервни копии. Давање иста приватна услужна адреса на секој јазол ја прави конфигурацијата на клиентот идентична без оглед на тоа на кој сервер слетал. Таа погодност е вистинска, и лесно е да се прочита премногу: споделената адреса кажува до кој јазол стигнавте, а не дека нешто е излишно.
Зошто истата адреса на секој јазол функционира
Секој јазол ја поседува адресата локално и одговара за неа, па клиентот што ја достигнува преку својот тековен тунел ја добива услугата на другиот крај од тој тунел. Ништо не се координира меѓу јазлите и никаков сообраќај не преминува од еден јазол на друг.
Адресата е локална ознака, повторена, а не реплицирана. Секој јазол одговара само за себе и ниту еден од нив не проследува сообраќај за адресата во името на друг јазол. Тоа одржува една клиентска конфигурација важечка додека серверите остануваат независни. Тоа е и причината зошто дизајнот не бара никаква координација меѓу јазлите.
Затоа истата конфигурација работи на секој сервер без рутирачки протокол меѓу нив. Тоа е и причината зошто дизајнот не кажува ништо за здравјето: адресата постои на болен јазол исто како на здрав, зашто е врзана за домаќинот, а не за тоа што услугата е корисна.
Доделете ја на loopback, а не на тунелот
Ставањето на адресата на loopback интерфејс ја одвојува од животниот век на кој било тунелски уред, па повторното поврзување или повторното вчитување на конфигурацијата не ја отстранува. Адресата постои додека постои домаќинот.
Адреса на lo не е филтер. Услугата сепак мора да слуша на неа, и огнениот ѕид на домаќинот сепак ја оценува вистинската влезна патека, која пристигнува на тунелскиот интерфејс. Секој што претпоставува дека loopback значи само локално, на крајот или блокира легитимни клиенти или изложува нешто што не го намерил.
Направете ја доделбата трајна преку мрежната конфигурација на домаќинот наместо повторно да ја додавате од кука. Кука за поставување нема да се активира на јазол каде што не се крена никаков тунел, а услужната адреса не треба да зависи од активноста на тунелот. Ставете ја адресата во конфигурацијата на интерфејсот што ја поседува вашата дистрибуција, потоа еднаш рестартирајте и проверете ја. Рестартирањето е единствениот тест што преживува подоцнежна промена на конфигурацијата.
ip address show dev lo | grep 10.250.0.1
ip address add 10.250.0.1/32 dev loТурнете една рута и мислете на една дестинација
На клиентот му треба домаќинска рута за адресата, понудена од серверот со кој се поврзува. Бидејќи секој сервер ја нуди истата дестинација, профилот не се менува кога клиентот се преместува.
Проверете што инсталирал клиентот пред да ја обвините услугата.
ip route get 10.250.0.1За HTTP услуга, дајте ѝ на адресата име и сертификат за тоа име. Споделената IP не е идентитет, и не го отстранува TLS проверувањето, ниту го оправдува копирањето на еден приватен клуч на секој јазол. Име што се резолвира на споделената адреса ја одржува приказната за сертификатот вообичаена и ви дозволува да задржите идентитет по јазол ако ви треба.
Што не може споделената адреса
Таа не обезбедува префрлање при дефект. Ако избраниот јазол умре, адресата умира со него, а клиентот мора да се поврзе одново на друго место.
Таа не мигрира жива TCP сесија, зашто нова врска завршува на друг домаќин што не знае ништо за старата.
Таа не избира здрав јазол, не балансира оптоварување и не синхронизира податоци меѓу јазлите. Секое од нив е одделен механизам со свои режими на дефект, а преправањето дека трикот со адресирање ги покрива е патот по кој едноставен дизајн добива незаслужена репутација за издржливост. Ако два тунела се активни истовремено, значењето на дестинацијата станува двосмислено, затоа држете ја претпоставката за еден активен тунел експлицитна.
Задржете го идентитетот на услугата со името
Запишете што значи адресата: таа ја достигнува услугата на јазолот со кој клиентот е тековно поврзан. Таа една реченица го спречува најголемиот дел од недоразбирањето што го привлекува оваа шема.
Потоа документирајте ги деловите заедно: адресата, интерфејсот на кој живее, рутата што ја турка серверот, и името и сертификатот што ги прикажува услугата. Четири мали факти што иден читател може да ги провери, по редоследот по кој ќе ги проверува.
Ако барањето е стабилна дестинација за услуга локална на јазолот, шемата одговара и речиси ништо не чини.
Ако барањето е достапност, качете се едно ниво повисоко: балансер на оптоварување, име на услуга со здравствени проверки или оркестрациски систем што веќе знае како да замени јазол.
Одлучувањето за тоа рано ја задржува споделената адреса она што е, пригодна ознака, наместо компонента од која тивко се очекува да врши работа за која никогаш не била проектирана.