Адреса партнера је промењена усред сесије: шта ради OpenVPN float
float омогућава аутентификованом партнеру да промени своју спољашњу адресу усред сесије. Он не открива крајње тачке, не отвара поново мртву везу и не прескаче провере идентитета.
Лаптоп прелази са канцеларијског Wi-Fi на мобилни хотспот, тунел се држи још неколико секунди, а затим саобраћај стане док интерфејс и даље тврди да је повезан. На серверу листа стања и даље приказује стару јавну адресу. То је ситуација због које постоји float, а уједно и ситуација у којој људи од њега очекују много више него што чини. Исправно разумевање границе претвара збуњујуће застајање или у промену конфигурације у једном реду или у сасвим другу истрагу.
Шта float олакшава, а шта никада не олакшава
Обично сесија наставља да разговара са оном спољашњом адресом и портом са којима је почела, а пакети који пристижу било одакле другде се игноришу. Опција float уклања то строго везивање након што се партнер већ доказао, па измењено мапирање извора може да настави исту сесију уместо да буде одбачено. Ништа се у криптографским проверама не мења: кључеви, сертификати и било која HMAC заштита остају тачно онако како су конфигурисани.
Ово је одлука по пакету, а не политика о томе ко сме да се повеже. Непозната машина која пошаље пакет са нове адресе није ништа доказала и њен пакет се одбацује као и сав други неаутентификовани саобраћај. Само саобраћај који прође сопствену аутентификацију сесије може да помери забележену адресу партнера, и зато је безбедно оставити float укључен у окружењима у којима клијенти лутају.
Такође не говори ништа о унутрашњем тунелу. Померена спољашња адреса не додељује нову адресу тунела, не мења базен и не даје партнеру приступ нечему новом. Унутар тунела важе исти идентитет и исте гурнуте руте пре и после премештања. Лутање такође поново не преговара податни канал, па договорена шифра и кључеви настављају.
Пакет који помера сесију мора да се аутентификује
Започните сесију на уобичајен начин према конфигурисаном удаљеном крају, а float се бави оним што се дешава када се мапирање промени. Мобилни оператер који пренумерише усред тока, NAT пролаз који преписује своје мапирање порта или лаптоп који промени горњу везу сви дају исти облик: аутентификовани пакети из нове торке, који пристижу у сесију која још верује у стару.
Када вас питају да ли float ради, користан доказ је завршено руковање и након тога прихваћена промена извора, а не линија у дневнику само о адреси. Повежите стару и нову спољашњу адресу са сесијом која је остала жива, а затим потврдите да је саобраћај заиста настављен кроз тунел.
Ако сесија умре уместо да се помери, пакет који је стигао са нове адресе вероватно није прошао аутентификацију или уопште није стигао. Оба случаја са стране клијента изгледају исто. На серверу, снимак на јавном интерфејсу каже вам који од њих имате пре него што дотакнете било какву конфигурацију.
Откривање је сасвим одвојен механизам
float не разрешава имена по тајмеру и не прати динамички DNS запис. Ако име хоста сервера почне да се разрешава на нову адресу, неактивни клијент нема разлога то да примети и нема пакет са нове крајње тачке који би аутентификовао. Тај проблем припада логици поновног повезивања, сопственом понашању клијента при поновном покушају и DNS-у, а не float-у.
Додавање опције још једном не може да надокнади недостатак руте до нове адресе. Не помаже ни када партнер ћути, јер ћутљиви партнер никада не шаље аутентификовани пакет који би нешто померио.
Доњи заштитни зид такође има реч. Правило које дозвољава само стару спољашњу крајњу тачку блокира измењену адресу пре него што је OpenVPN уопште види, и никаква клијентска конфигурација то не исправља. Прегледајте животни циклус дозвољених адреса као засебан задатак; проширење правила на било који извор мења мали проблем за велики.
Када профил поседује NetworkManager
Профил из командне линије и увезена веза су одвојене конфигурације, а уређивање једне не дира другу. Пре него што претпоставите да опција није подржана, утврдите који тип прикључка заиста користи сачувани профил и где живе његове вредности. UUID профила је идентификатор који је важан када нешто прегледате или мењате.
Прегледајте сачувану везу, а не оригиналну датотеку увоза. Ред који преживи у .ovpn датотеци ништа не доказује ако га активни менаџер никада није применио, а уређивач без поља за означавање за дату опцију такође ништа не доказује о могућностима протокола.
Не закрпујте спаковани прикључак да бисте додали понашање, посебно не diff-ом написаним за историјску верзију неповезане компоненте. Ако инсталирана интеграција заиста не може да изрази то подешавање, прави корак је подржани профил или други клијентски пут који одобри власник распоређивања.
Докажите прелаз уместо да га претпостављате
Спроведите тест онако како квар настаје. Повежите се, проверите саобраћај кроз тунел, приморајте спољашњу адресу да се промени и затим проверите три ствари: сесија још постоји, забележена адреса партнера се померила и стварни захтев још стиже до одредишта. Све мање од све три је делимичан одговор.
Држите приступ за опоравак доступним док тестирате, јер експерименти са лутањем имају обичај да оставе заглављену машину са које радите. Серијска конзола или ванпојасна рута претвара неуспешан тест у петоминутни опоравак уместо посете локацији.
На крају, опишите само случај који сте испитали. Успешна промена адресе током сесије није доказ да ће се DNS миграције, друга клијентска имплементација или поново изграђен профил понашати исто. Документација за link-options тачно наводи обим опције; ваш дневник теста треба да наведе који део тог обима сте заиста покрили.