Ці павінен ваш кліент OpenVPN выкарыстоўваць nobind ці фіксаваны порт?
nobind дазваляе ядру выбіраць порт крыніцы для кліента, які злучаецца звонку. Тры ўмовы вызначаюць, ці хочаце вы гэтага, ці лепш замацаваны лакальны порт.
Два профілі, якія адрозніваюцца адным радком, паводзяць сябе па-рознаму ў той момант, калі на тым жа хаспе запускаецца другі кліент. Адзін змяшчае 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 паказвае высокі лакальны порт і наладжаны выдалены порт, што і ёсць чаканая форма. Сервер паказвае сокет, што слухае, на сваім наладжаным порце, і калі гэтага сокета няма, профіль або не слухач, або не змог прывязацца. Калі паток ёсць, але пакеты не вяртаюцца, параўнайце выбраны порт крыніцы з любым фільтрам партоў на шляху, перш чым рэдагаваць профіль. Змяніце адно, перападключыцеся і зноў прачытайце сокет.