Tatlong bagay ang dapat magtugma bago magdala ng trapiko ang isang Kerio tunnel: ang address sa kvnet interface, ang value na naitala ng client, at ang inaasahan ng patakaran ng server o ng DHCP. Kapag hindi sila nagtugma, nagpapatunay pa rin ang tunnel at umaangat pa rin, at iyon mismo ang nagpapagulo sa kabiguan. Ginagawa ang interface sa bawat koneksyon, kaya ang address na itinakda sa kamay ay pag-aari lamang ng session na iyon at wala nang iba. Ito ang hugis ng problema, at ang solusyon ay isang hook at hindi isang configuration file. Ang natitira ay kung saan babasahin ang value at kung saan ito ilalapat.

Bakit paulit-ulit na bumabalik ang address

kvnet ay isang virtual adapter na ginagawa ng client kapag nagsisimula ang koneksyon at inaalis kapag nagtatapos ito. Kaya ang manwal na ip link set ay nabubuhay nang eksaktong kasingtagal ng session kung saan ito inilapat, at ang susunod na koneksyon ay nagsisimula sa kung ano ang itinatakda ng client. Sa isang makina kung saan hindi magawang ilapat ng client ang inaasahang address, muling ipinapasok ng bawat muling pagkonekta ang parehong pagkakaiba, at tinatanggihan muli ng panuntunan ng lease o access ang device.

Ang pattern na iyon ay diagnostic sa sarili nito. Ang tunnel na gumagana sa isang session at nabigo sa susunod ay hindi problema sa kredensyal, dahil hindi nagbabago ang kredensyal sa pagitan ng mga koneksyon.

Basahin ang value mula sa client, hindi sa interface

Isinusulat ng Linux client ang mga detalye ng negosasyon sa debug log nito, at lumilitaw doon ang address na balak nitong gamitin bilang huling token na hugis address sa pagkakasunod-sunod ng koneksyon. Ihambing ito sa aktwal na hawak ng kernel, na isang readlink ang layo: cat /sys/class/net/kvnet/address.

Kung magkaiba ang dalawa, alam ng client ang tamang value at nabigong ilapat ito, at isang hook na naglalapat nito pagkatapos umiral ang interface ang nagsasara ng puwang na iyon. Kung wala talagang address sa log, mas maaga ang problema at kabilang ito sa bersyon ng client o profile ng server, hindi sa isang script.

Ilapat ito pagkatapos umiral ang interface

Maaaring maglagay ang mga gumagamit ng NetworkManager ng script sa dispatcher directory nito at kumilos lamang kapag umaangat ang VPN interface. Ang client na pinamamahalaan ng systemd ay nangangailangan ng mas maraming pag-iingat: ang drop-in na tumatakbo sa pagsisimula ng serbisyo ay karaniwang nag-a-activate bago pa umiral ang adapter, kaya kailangang hintayin ng hook ang interface sa halip na ipagpalagay ito. Itakda ang address noon, at kung tatanggi ang kernel habang nakataas ang link, ibaba ito, itakda ang address, at itaas muli. Basahin muli ang na-extract na token sa pamamagitan ng MAC pattern bago ito ipasa sa ip link, upang ang hindi inaasahang log line ay hindi maging argumento.

Anumang tumatakbo bilang root mula sa log ng client ay karapat-dapat sa makitid na pagmamay-ari: isang file na pag-aari ng root, hindi maisusulat ng iba, at walang shell interpolation na lampas sa validated na address. Panatilihin ang pattern check sa loob ng script. Huwag hayaang magpasya ang nilalaman ng log kung aling command ang tatakbo.

I-verify ang lease, hindi ang link

ip -4 -o addr show dev kvnet ay dapat magpakita ng address sa inaasahang saklaw, ip neigh show dev kvnet ay dapat magpakita ng gateway, at isang serbisyo sa likod ng VPN ay dapat tumugon. Pagkatapos ay idiskonekta at muling kumonekta nang isang beses; kung bumalik ang address, ang hook ay nagpapaputok sa maling event o hindi nagpapaputok talaga.

Ang interface na lumilitaw na may tamang address at hindi kailanman nakakakuha ng lease ay tumuturo sa panig ng server. Iyon ay ibang pagsusuri at karaniwang ibang koponan. Kumpirmahin na pinapayagan ang account at mayroon pang address ang pool bago i-edit muli ang hook.

Balikan ang workaround pagkatapos ng upgrade

Ang build ng client na wastong nagtatakda ng address ay nag-iiwan sa iyong hook na naglalapat ng lipas na value, na isang bagong depekto na idinulot ng isang pagwawasto. Huwag ding kopyahin ang MAC mula sa ibang makina o post sa forum; gamitin ang value na itinatala ng client na ito para sa account na ito, at itala ang petsang na-verify mo ito.

Panatilihing sapat na maikli ang script upang mabasa sa isang upuan. Ang mga workaround na nag-parse ng log ay pansamantala ayon sa kalikasan. Ang mga nananatili ay yaong nauunawaan ng isang mambabasa sa hinaharap nang walang orihinal na thread.

Kaugnay na mga artikulo