Две профили што се разликуваат по еден ред се однесуваат поинаку во моментот кога на истиот хост стартува втор клиент. Едната носи nobind и зема кој и да е локален порт што ќе го даде јадрото; другата резервира 1194, а втората инстанца умира со адреса што веќе се користи. Тој ред одлучува кој го избира изворниот порт, што пак одлучува дали профилот може да постои заедно со што било друго на машината. Три прашања го решаваат тоа, а првото одговара на повеќето профили пред да стигнете до другите две.

Што всушност прескокнува nobind

Стандардно клиентот врзува локален сокет пред да се јави, а локалниот порт е 1194 освен ако профилот не каже поинаку. nobind ја отстранува таа резервација, па стекот доделува неискористен порт при поврзувањето. Тоа е исклучок, а не стандард, и клиент без редот држи 1194, што е точно причината зошто неприкачена втора инстанца се судира. Повеќето испорачани клиентски профили ја носат директивата токму поради тоа, а тоа што пример-датотека прави нешто не е исто како механизмот да го прави тоа стандардно.

Она што не се менува е далечната страна. Серверот сѐ уште слуша таму каде што профилот вели дека слуша, а целниот порт во конфигурацијата сѐ уште е целниот порт. Динамичниот изворен порт ја менува повратната адреса на вашиот сопствен сокет и ништо од онаа на серверот.

Исто така не крие ништо. Вашата јавна адреса е она во што ја преведува патеката, пакетот сѐ уште ја преминува локалната мрежа, и кој и да ја управува таа мрежа сѐ уште гледа тек. nobind не е ниту функција за приватност ниту заобиколување на огнен ѕид.

Три услови што го одлучуваат

Едно прашање ги одлучува другите две, затоа одговорете на него пред да уредувате нешто. Ако партнерот се јавува нанадвор, останатите прашања само ја дотеруваат веќе донесената одлука. Ако прима влезни врски, никакво подесување на локалниот порт не го прави достапен.

Дали овој партнер ја започнува врската? Ако се јавува нанадвор, динамичен изворен порт е безопасен и обично попожелен, бидејќи одговорот се враќа по истиот тек. Ако чека влезни врски, динамичен порт го прави недостапен освен ако нешто пред него не го објави портот. Тој еден одговор го одделува секој клиентски профил од секој серверски.

Дали патеката филтрира по изворен порт? Строго правило напишано за еден познат порт бара експлицитен локален порт, а профилот треба да запише кое правило го задоволува. Повеќето мрежи филтрираат само по дестинација, па овој услов е поредок од првиот. Каде што се применува, тоа ја надминува претпочитата за динамичен порт.

Дали неколку инстанци го делат хостот? Еден фиксен порт не може да им служи на две од нив, а рестартирана инстанца може да најде 1194 сѐ уште во состојба на затворање. Динамичните порти го отстрануваат тој конфликт без да менуваат нешто друго. Ако не можете сигурно да одговорите на ова, претпоставете да и оставете го јадрото да избере.

Каде закачен порт е правилниот одговор

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

Инаку закачениот порт купува неволја: два клиенти на една машина не можат и двата да држат 1194, а вториот паѓа со грешка што покажува на портот, а не на профилот. Контејнер што брзо се рестартира удира во истиот ѕид. Поправката е директивата што испорачаните профили веќе ја содржеа.

Серверот и клиентот не се симетрични

прирачникот OpenVPN 2.6 го става nobind покрај lport, што е аргументот во еден ред: едната опција вели дека јадрото избира, другата вели дека вие. Динамичен локален порт работи само за партнерот што се јавува нанадвор, бидејќи страната што одговара не може однапред да го знае портот. Затоа копирањето на клиентски профил на сервер создава слушач до кој никој не може да стигне.

На хост со повеќе мрежни интерфејси адресата е одделна одлука од портот. Врзување конкретна локална адреса и врзување конкретен порт се две различни поставки, а сервер со два горни линка обично ги закачува двете. Клиент што ги закачува двете ја презема истата вкочанетост без никаква корист.

Резимето е за улогите, а не за безбедноста: оној што се јавува може да биде флексибилен за сопствениот извор, а оној што одговара не може. Ниту еден избор не менува што другата страна дознава за вашиот идентитет. Затоа директивата се појавува во клиентските примери и речиси никогаш во серверските.

Проверете го портот што го избрало јадрото

По поврзувањето читајте го сокетот, а не конфигурацијата, бидејќи конфигурацијата ја кажува намерата, а сокетот што се случило. Фактите што вреди да се запишат се локалниот порт, далечната крајна точка и дали сѐ уште нешто слуша. На Linux хост сите три се на една команда оддалеченост.

ss -unp | grep openvpn
ss -lunp | grep openvpn
sudo lsof -nP -i | grep openvpn

Клиент со nobind покажува висок локален порт и конфигурираниот далечен порт, што е очекуваната форма. Серверот покажува сокет што слуша на неговиот конфигуриран порт, и ако тој сокет недостига, профилот или не е слушач или не успеал да се врзе. Кога постои тек но пакетите не се враќаат, споредете го избраниот изворен порт со кој и да е филтер за порти на патеката пред да го уредите профилот. Сменете едно нешто, поврзете се повторно и прочитајте го сокетот повторно.

Поврзани статии