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

Зашто иста адреса на сваком чвору функционише

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

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

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

Доделите је loopback-у, а не тунелу

Стављање адресе на loopback интерфејс одваја је од животног века било ког тунелског уређаја, па је поновно повезивање или поновно учитавање конфигурације не уклања. Адреса постоји док постоји host.

Адреса на lo није филтер. Услуга ипак мора да слуша на њој, и заштитни зид host-а и даље оцењује стварни долазни пут, који долази на тунелски интерфејс. Ко претпостави да loopback значи само локално, на крају или блокира легитимне клијенте или излаже нешто што није намеравао.

Учините доделу трајном кроз мрежну конфигурацију host-а уместо да је поново додајете из hook-а. Hook за подешавање се неће покренути на чвору где се ниједан тунел није подигао, а сервисна адреса не би смела да зависи од активности тунела. Ставите адресу у конфигурацију интерфејса коју поседује ваша дистрибуција, затим једном поново покрените и проверите је. Поновно покретање једини је тест који преживи каснију промену конфигурације.

ip address show dev lo | grep 10.250.0.1
ip address add 10.250.0.1/32 dev lo

Гурните једну руту и мислите једно одредиште

Клијенту треба host рута за адресу, коју нуди сервер са којим се повезује. Пошто сваки сервер нуди исто одредиште, профил се не мења кад се клијент премести.

Проверите шта је клијент инсталирао пре него што оптужите услугу.

ip route get 10.250.0.1

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

Шта дељена адреса не може

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

Не мигрира живу TCP сесију, јер нова веза завршава на другом host-у који не зна ништа о старој.

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

Задржите идентитет услуге уз име

Запишите шта адреса значи: дохвата услугу на чвору са којим је клијент тренутно повезан. Та једна реченица спречава већину неспоразума које овај образац привлачи.

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

Ако је захтев стабилно одредиште за услугу локалну на чвору, образац одговара и готово ништа не кошта.

Ако је захтев доступност, померите се ниво више: уравнотеживач оптерећења, име услуге са здравственим проверама или оркестрациони систем који већ зна како да замени чвор.

Одлучити то рано задржава дељену адресу оним што јесте, прикладном ознаком, уместо компонентом од које се тихо очекује да обави посао за који никада није пројектована.

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