Кліент адмаўляецца запускацца і скардзіцца, што не можа прывязаць лакальны адрас, а відавочнае рашэнне выглядае так: накіраваць яго на адрас тунеля, які ён спадзяецца атрымаць. Гэта не можа спрацаваць, і прычыну варта зразумець: пакуль тунель не існуе, унутранага адраса няма, а сокет, які звязваецца з серверам, павінен існаваць раней. Задзейнічаны два розныя адрасы, і толькі адзін з іх можна выбраць лакальна.

Памылка прывязвання называе лакальны адрас

Калі OpenVPN паведамляе, што не можа прывязаць лакальны адрас, гаворка ідзе пра транспартны сокет: канчатковы пункт UDP або TCP, які нясе шыфраванае злучэнне да партнёра.

Яўная дырэктыва local просіць дэман прывязаць гэты сокет да пэўнага лакальнага адраса. Адрас павінен існаваць у прасторы імёнаў сеткі, дзе працуе працэс, і павінен быць прызначальным у момант запуску кліента.

Публічны адрас, ператвораны на маршрутызатары або на мяжы воблака, не з’яўляецца лакальным адрасам, які дэман можа прывязаць, нават калі менавіта яго бачыць сервер. Гэтае адрозненне тлумачыць, чаму адзін профіль працуе дома і зрываецца на воблачным інстансе. Яно таксама тлумачыць, чаму даданне публічнага адраса на інтэрфейс loopback не дапамагае: транспарт тады пачнецца з адраса, на які сетка не можа вярнуць адказ. Прачытайце спіс інтэрфейсаў перад рэдагаваннем профілю.

Што насамрэч выбіраюць local і remote

remote называе партнёра, з якім трэба злучыцца. local прывязвае бліжні канец таго ж сокета. nobind дазваляе аперацыйнай сістэме выбраць і лакальны адрас, і порт, таму кліенты за хатнімі маршрутызатарамі звычайна працуюць без абедзвюх дырэктыў.

Ні адна з дырэктыў не мае дачынення да адраса ўнутры тунеля.

У кантэйнеры або прасторы імёнаў сеткі дзейнічае тое ж правіла, але з вузейшымі межамі: адрасы хоста ўнутры не прысутнічаюць, таму радок local, скапіяваны з канфігурацыі хоста, зрываецца з зусім іншай прычыны, чым няправільны адрас.

ip -brief address show
ip route get 203.0.113.10

Унутраны адрас прыходзіць ад сервера

Адрас унутры тунеля ўзгадняецца або прызначаецца пасля ўстанаўлення кантрольнага канала. У дынамічным пуле сервер вырашае гэта падчас злучэння, а пры канфігурацыі, спецыфічнай для кліента, ён можа быць фіксаваным для кожнай асобы.

Калі запісаць local з унутраным адрасам, гэта не просіць сервер выдзеліць такі адрас. У лепшым выпадку прывязванне зрываецца; у горшым кліент знаходзіць незвязаны адрас хоста з тым жа значэннем і пачынае выкарыстоўваць яго для транспарту.

Інтэрфейсы, якія трэба чытаць, таксама розныя. Параметры ifconfig і канфігурацыя пула апісваюць унутранае, а remote, local, proto і nobind апісваюць знешняе. Калі трымаць два спісы асобна, становіцца зразумелым амаль кожны заблытаны прыклад, які вы знойдзеце на форуме. Дапаможнік OpenVPN 2.6 менавіта таму апісвае іх у асобных раздзелах.

Пастка: поўны тунель, які захоплівае ўласны транспарт

Пасля таго як тунель узняты і нясе маршрут па змаўчанні, пакеты, якія яго падтрымліваюць, не павінны накіроўвацца ўнутр яго. Гэта праблема маршрутызацыі, а не адрасацыі, і дэман вырашае яе, усталёўваючы больш канкрэтны маршрут да ўласнага адраса сервера праз зыходны шлюз.

Калі замацаваць транспарт за пэўным лакальным адрасам і потым змяніць шлях, які гэты адрас выкарыстоўвае, знешняе злучэнне можа збіцца з дарогі, пакуль унутранае застаецца наладжаным. Тунель працягвае паведамляць, што злучаны, бо ўнутры ўсё добра. Зламаны толькі транспарт, і менавіта таму журналы чытаюцца як супярэчнасці.

Тады сімптомы выглядаюць як тунель, што злучаецца і замірае, або як тунель, што ў цыкле перападключаецца без карыснай памылкі. Праверце маршрут да адраса партнёра раней, чым правяраць што-небудзь унутры тунеля, і пераканайцеся, што прывязаны лакальны адрас па-ранейшаму належыць чаканаму інтэрфейсу.

Звычка, якая адганяе блытаніну

Прачытайце кожны адрас у профілі і вырашыце, да якога ўзроўню ён належыць, перш чым яго рэдагаваць.

Калі ён называе далёкі канец транспарту або прывязвае яго блізкі канец, гэта знешні адрас, і ён павінен існаваць да запуску. Калі ён апісвае тое, што адбываецца ўнутры тунеля, ён паходзіць ад сервера або ад тапалогіі, і ніякая лакальная дырэктыва не можа яго замяніць.

Запішыце два спісы ў нататкі пра разгортванне побач з профілем. Тады наступная сесія пошуку няспраўнасцей пачнецца з узроўню, а не з здагадкі.

Падобныя артыкулы