OpenVPNдин бир нече --up скрипт тууралуу эскертүүсү: бир гана иштейт
Эки up сапты кайра иреттөө экөөнү тең иштетпейт. OpenVPN ар бир баскычка бир буйрук сактайт, ошондуктан эки аныктаманы тең таап, ишке бир кирүү чекитин бериңиз.
Бир нече скрипт тууралуу эскертүү пландоо боюнча кайрылуудай угулат, ошондуктан ачык чечим — саптарды ал жок болгонго чейин кайра иреттөө. Бирок бул пландоо боюнча кайрылуу эмес. Кийинки --up аныктамасы ошол баскыч үчүн мурун сакталган буйрукту алмаштырат, жана талдоочу ушундай дейт, башкача айтканда эки скриптиңизден так бирөө гана иштеген. Экинчиси анын артында кезекте турбайт; ал жок болду.
Ошондуктан эскертүү өлүмгө алып келбесе да көңүл бурууга татыктуу: ал тынч токтогон DNS жаңыртуусун же маршрут өзгөрүүсүн алдын ала айтат.
Эскертүү тартип тууралуу эмес
OpenVPN up баскычы үчүн бир гана колдонуучу скриптинин буйругун сактайт. Талдоочу башка аныктамага туш келгенде, профилден, кошулган файлдан же буйрук сабынан, ал мурун кармап турганын алмаштырат жана эскертүү чыгарат. Эч нерсе бириктирилбейт, эч нерсе эки жолу иштебейт жана тартип тууралуу суроо жок. Тири калган буйрук — талдоочу акыркы көргөн буйрук, ошондуктан сапты жылдыруу жеңүүчүнү өзгөртүп, экинчи скрипт өлүк бойдон калышы мүмкүн.
Ушул эле үлгү скрипттин башка баскычтарына да тиешелүү: ар бирине бир буйрук. Эгер эки иш экөө тең аткарылышы керек болсо, аларга тизмеге окшош эки көрсөтмө эмес, бир кирүү чекити керек.
Эки аныктаманы чыныгы ишке киргизүүдөн табыңыз
Оңдогон профилден эмес, демон чындап алган нерседен баштаңыз. ps -ef жана бирдиктин ExecStart буйрук сабын көрсөтөт, ага контейнердин кирүү чекитинен же каптоочудан --up кошулушу мүмкүн; дистрибутивдин init файлы да ушундай кыла алат. systemctl cat openvpn-server@server кызматтын өзү эмне кошоорун ачат, ал эми конфигурация каталогундагы рекурсивдүү grep файл деңгээлиндеги аныктамаларды табат. Көчүрмөлөр адатта түрдүү катмарлардан келет, ошондуктан бир файлды оңдоо эч нерсени өзгөртпөйт.
Скрипти башка каталогго көчүрүү же атын өзгөртүү да көрсөтмөнү жок кылбайт. Талдоочу файлдарды эмес, аныктамаларды эсептейт.
Ишти бир hook ээлесин
Туруктуу чечим — эки аракетти ойлонулган тартипте аткарган жалгыз диспетчер. set -eu бар кыска shell скрипти керектүү интеграцияны, анан жергиликтүү аракетти чакырат жана аргумент чектери сакталышы үчүн "$@" берет; мына ушундай жүрүм-турум текшериле турган бир жерде калат. Аргументтерди берүү аларды гана сактайт; ал эки жардамчынын бирдей интерфейсти күтөрүн далилдебейт, ошондуктан ар биринин келишимин окуңуз. Ийгиликсиздик эмне кылышы керектигин жана жарым-жартылай өзгөрүүлөрдү кайтаруу керекпи экенин чечиңиз.
Эгер иштеткич колдоого алынган кеңейтүү hook-ун сунуштаса, аны кол менен курулган чынжырдан артык көрүңүз. Контейнер образынын же жеткирүүчү пакеттин кошумча иш үчүн документтелген орду болот, жана аны колдонуу жаңыртуунун диспетчериңизди кайра жазышын болтурбайт.
Тазалоо тиешелүү down баскычына таандык. DNS-ти кайра жазуучу же маршруттарды кошуучу up аракети документтелген кайтарууну талап кылат, ал эми ишке киргизүүнү гана башкарган диспетчер — жарым дизайн.
Интеграцияны ырастаңыз, тынчтыкты гана эмес
Кайталанма эскертүүнү алып салуу — жеңил бөлүгү; интеграция дагы эле иштеши керек. Туташкандан кийин resolvectl status аркылуу же /etc/resolv.conf окуп чечүүчүнүн абалын текшериңиз, маршруттарды ip route аркылуу ырастаңыз. Анан ажыратып кайра туташыңыз, анткени шашылыш туташтырылган hook мурунку сессиядан бир нерсе калтырат. journalctl -u openvpn-server@server -b диспетчериңиздин иштегенин жана эмне басып чыгарганын көрсөтөт.
hook-тун артыкчылыктарын тиешелүү жерде кармаңыз. script-security көтөрүү же демонду көбүрөөк укук менен иштетүү алмаштырылган hook үчүн чечим эмес; ал ар бир келечектеги скрипттин, анын ичинде кол салган адам атай турган скрипттин, эмне кыла аларын кеңейтет.
Оңдоонун чыныгы экендигинин белгиси — журналдагы тынчтык эмес. Бул DNS жообу, маршрут жазуусу жана тазалоо, алар эки жолу кайра туташкандан кийин туура иштейт.