ifconfig-noexec не выратуе вашу SSH-сесію: што ён робіць
Ён спыняе ўласную наладку адрасу інтэрфейса OpenVPN. Ён не рэзервуе маршрут адказу для SSH, не адключае ўсе змены маршрутаў і не пастаўляе адсутны адрас.
Недзе ў тэме на форуме ifconfig-noexec прапануюць як выпраўленне, што захоўвае SSH-сесію жывой, калі тунэль уздымаецца. Разважанне выглядае праўдападобным, пакуль не праверыце, чаго датычыцца гэтая опцыя. Яна перашкаджае OpenVPN наладжваць адрас інтэрфейса тунэля і перадае гэтыя значэнні скрыптам; пра тое, куды ідуць адказы на ваша кіраўнічае злучэнне, яна нічога не кажа. Калі думаць інакш, атрымаеце тунэль без прыдатнага адрасу і SSH-сесію, якая ўсё роўна памірае.
Што опцыя насамрэч дэлегуе
Па змаўчанні кліент уздымае прыладу тунэля і прызначае лакальны і аддалены адрасы, якія даў сервер. Калі ўсталяваная ifconfig-noexec, гэты крок прапускаецца, а ўзгодненыя значэнні экспартуюцца ў асяроддзе скрыпта, каб нешта іншае іх прымяніла.
Уласнасць пераходзіць. На яе месцы нічога не выдумляецца.
Такім чынам, пытанне, на якое адказвае опцыя, — хто наладжвае інтэрфейс, а пытанне, на якое яна не адказвае, — як пакеты знаходзяць шлях назад да вас. Трымайце гэта асобна, інакш правядзяце вечар за рэдагаваннем маршрутаў, каб кампенсаваць інтэрфейс без адрасу.
Тры падобныя опцыі з рознымі задачамі
Гэтае сямейства лёгка блытаць, бо назвы адрозніваюцца адным словам, а сімптомы перакрываюцца. Прачытайце, што кожная з іх спыняе, перш чым выбраць якую-небудзь.
| Опцыя | Што перастае адбывацца |
|---|---|
ifconfig-noexec | Уласная наладка адрасу тунэля OpenVPN; значэнні замест гэтага ідуць у скрыпты |
route-noexec | Аўтаматычнае даданне і выдаленне маршрутаў; звесткі пра маршрут ідуць у скрыпт |
route-nopull | Маршруты, якія праштурхоўвае сервер, і звязаныя опцыі, такія як DNS, адхіляюцца |
Гэта альтэрнатывы, якія трэба разумець паасобку, а не набор для сумеснай устаўкі. Спыненне наладкі адрасу не спыняе змены маршрутаў, правілы файрвола або праштурхоўваемыя опцыі, што нясуць DNS. Дэлегаваны скрыпт таксама вольны змяняць маршруты, і гэта рашэнне, якое вы перадаяце, а не пазбягаеце.
Калі кліент пастаўшчыка абгортвае рухавік, выкарыстоўвайце яго падтрыманую інтэграцыю замест таго, каб кідаць нізкаўзроўневую дырэктыву ў профіль і спадзявацца, што абгортка яе паважае. Абгорткі часта перагенеруюць профіль пры падключэнні, таму ручная правака знікае без памылкі. Праверце, дзе кліент захоўвае свае налады, перш чым праводзіць вечар над файлам. Гэта датычыцца кожнага радка ў табліцы, а не толькі таго, за якім вы прыйшлі.
SSH-сесія, якую вы меліся абараніць
SSH-злучэнне мае адрас крыніцы, адрас прызначэння і шлях адказу. На серверы, які толькі што ўсталяваў поўны тунэль па змаўчанні, адказ на ваш публічны адрас супадае з тунэлем, і VPN-шлюз яго адкідае.
Нішто ў наладзе адрасу інтэрфейса тунэля гэтага не змяняе.
Выпраўляе гэта больш канкрэтны маршрут для вашага кіраўнічага адрасу праз шлюз да тунэля, або правіла палітыкі, якое накіроўвае гэты трафік, плюс тыя налады фільтра, што прымяняе ваш хост. Дзве праблемы часам з'яўляюцца разам, і менавіта так адну прымаюць за лекі ад другой. Праверце іх паасобку: уздыміце тунэль без опцыі, паглядзіце на адрас інтэрфейса і шлях адказу, затым вырашыце, якая з дзвюх сапраўды зламаная.
Што дэлегаваны скрыпт мусіць узяць на сябе
Калі вы сапраўды хочаце, каб іншы ўласнік наладзіў інтэрфейс, пералічыце работу: прымяніце лакальны і аддалены адрас, уздыміце прыладу, аднавіце або выдаліце адрасаванне пры разборцы і зрабіце тое ж самае пасля паўторнага падключэння. Значэнні адной паспяховай сесіі нельга жорстка зафіксоўваць, бо сервер можа выдаць іншую пару наступным разам.
Зменныя асяроддзя, якія экспартуе кліент, — адзіны падтрыманы ўваход для гэтай работы.
env | grep -E '^ifconfig_|^route_'Унутры скрыпта route-up гэтыя зменныя даступныя; з задання cron або ручной абалонкі — не. Пераканайцеся, які кручок жыццёвага цыклу выкарыстоўвае ваша версія, і што гэты кручок выконваецца з дастатковымі прывілеямі для змены інтэрфейса, бо кліент можа ўжо апынуцца пад непрывілеяваным карыстальнікам.
Праверце ўвесь жыццёвы цыкл, а не адну сесію
Уздыміце тунэль, праверце адрас на прыладзе, затым падключыцеся наноў і праверце яго зноў. Канфігурацыя, якая працуе адзін раз і зрываецца пры другой спробе, звычайна азначае, што дэлегаваны крок выконваецца толькі пры першым падключэнні.
Затым праверце абедзве крытэрыі прыёмкі разам: свежае SSH-злучэнне праз прызначаны кіраўнічы шлях працуе, а дазволеная праграма выкарыстоўвае тунэль правільна.
Старая SSH-сесія, якая выпадкова выжывае, калі тунэль без адрасу, — не поспех, і гэта менавіта стан, які гэтая опцыя стварае, калі ніхто не бярэ работу на сябе. Спачатку праверце адрас інтэрфейса, затым кіраўнічы шлях адказу, затым праграму. Калі два з трох няправільныя, опцыя перамясціла работу, не даўшы ёй уласніка.