Зашто много веза апликација дели једну OpenVPN сесију
Један спољашњи UDP разговор носи сваки унутрашњи ток који руте шаљу у њега. Унутрашњи портови и протоколи опстају; фиксна остаје само спољашња петорка.
Замислите прегледач који учитава HTTPS страницу док SSH клијент достиже други сервер и резолвер одговара на упит, све кроз једну OpenVPN сесију. На физичком интерфејсу видите један разговор; унутар тунела видите три. Оба погледа су тачна, а знање зашто је разлика између корисног и збуњујућег снимка. Пратите један унутрашњи ток од сокета до жице и слојевитост престаје да буде апстрактна.
Један спољашњи разговор, много унутрашњих токова
Свака апликација отвара свој сокет, а језгро му даје петорку од изворне адресе, изворног порта, одредишне адресе, одредишног порта и протокола. Те петорке постоје пре него што се укључи било који тунел. Затим рутирање одлучује да сви они излазе кроз уређај тунела, па пакет предат OpenVPN још увек носи оригинална заглавља у себи. OpenVPN шифрује тај унутрашњи пакет и резултат умотава у један спољашњи UDP или TCP разговор са партнером. Дакле спољашњи разговор је један, а токови унутар њега су онолико колико је апликација отворено.
Ништа се не урушава. Унутрашње петорке опстају од краја до краја, и зато далека страна још увек разликује три тока.
Порт који остаје фиксан
Стална остаје спољашња петорка: ваша адреса, локални порт који је клијент везао, адреса партнера и конфигурисани порт услуге. Управо ту петорку мора да пропусти заштитни зид или NAT на путу, и управо њу ће показати снимак на узлазној вези. Она се и мења после поновног повезивања или промене мреже, јер клијент може да веже други локални порт. Један тунел не значи један стални изворни порт заувек.
Унутрашњи портови су оно што је важно крајњим тачкама. HTTPS ток задржава одредишни порт 443 унутар тунела, иако спољашњи транспорт седи на порту који је оператер конфигурисао. Крајње тачке апликације никада не сазнају за спољашњи.
Шта декапсулација мења на далеком крају
Код партнера спољашњи слој се уклања, а остаје унутрашњи пакет. Одатле се прослеђивање и политика приступа примењују на унутрашње одредиште и протокол. Веб сервер још увек прима HTTPS везу, SSH демон још увек прима SSH, а резолвер још увек прима упит.
Зато правило које дозвољава спољашњи транспорт није исто правило као дозвола унутрашње услуге. Прво описује пут; друго описује овлашћење.
Спољашњи TCP значи један ток, а не једну везу
Када је спољашњи транспорт UDP, судбина сваког унутрашњег тока је независна: изгубљени датаграм утиче на један пренос до његовог сопственог поновног слања. Када је спољашњи транспорт TCP, сви унутрашњи токови деле један поуздан ток бајтова.
Тај заједнички ток је део који људи превиде. Опоравак се дешава једном, за све, па један изгубљени сегмент одлаже саобраћај сваке унутра мултиплексиране апликације. И даље има много веза на крајњим тачкама и једна веза на жици, и управо на жици живи ефекат блокирања главе реда. Број портова који слушају не говори ништа о томе, и зато је бројање портова лош начин размишљања о перформансама тунела.
Опишите своју поставку прецизно
Именујте изабрани унутрашњи саобраћај и конкретан спољашњи транспорт који га носи, уместо да кажете да машина шаље све кроз један порт. Локалне услуге, други тунел и друга фамилија адреса стварају токове који никада не улазе у овај разговор. Снимак на узлазној вези показује спољашњу петорку; снимак унутар тунела показује унутрашње.
Узмите оба и ставите временске ознаке једну уз другу. Ако треба да докажете која је апликација створила који унутрашњи ток, табела сокета на домаћину је боље средство, јер повезује портове директно са процесима. Затим запишите посматрану спољашњу петорку и тренутак када сте је посматрали, јер следећи снимак после поновног повезивања може сасвим законито да покаже друге бројеве.