Бір жолмен ғана ерекшеленетін екі профиль сол хостта екінші клиент іске қосылған сәтте басқаша әрекет етеді. Біреуі 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 клиенті жоғары жергілікті порт пен конфигурацияланған алыс портты көрсетеді, бұл күтілетін пішін. Сервер өзінің конфигурацияланған портында тыңдаушы сокетті көрсетеді, ал егер бұл сокет жоқ болса, профиль не тыңдаушы емес, не байланыстыра алмады. Ағын бар болса да пакеттер қайтпаса, профильді өңдеуге кіріспес бұрын таңдалған бастапқы портты жолдағы кез келген порт сүзгісімен салыстырыңыз. Бір нәрсені өзгертіңіз, қайта қосылыңыз және сокетті қайта оқыңыз.

Қатысты мақалалар