VPN кардарын скрипттөө: сырсөзгө чейин катмарды тандаңыз
Жеткирүүчүнүн CLI, rasdial, колдонмо ниети же интерфейсти автоматташтыруу ар бири башкача ийгиликсиз болот. Катмарды тандаңыз, сырды argv сыртында кармаңыз жана чыгуу коддорун эмес, абалды күтүңүз.
Скрипттер VPN кардарларын автор тандаган катмарда иштетет, жана бул катмар тапшырмага керек болгон катмар сейрек болот. Жеткирүүчүнүн буйрук сабы, операциялык системанын чалуучусу жана мобилдик колдонмо ниети туташуунун жашоосунун ар кайсы учурларында кайтат. Алар сырды да ар башкача иштетет, жана бул айырма сырсөздүн машинедеги ар бир колдонуучуга көрүнүшүн аныктайт. Скрипттин биринчи сабын жазганга чейин катмарды тандаңыз.
Катмар 1: жеткирүүчүнүн буйрук сабы
Көпчүлүк десктоп кардарлары профиль атын жана өтө көп учурда сырсөздү кабыл алган буйрук сабын сунуштайт. Cisco'нун эски кардары колдонуучу жана сырсөз аргументтери менен connect этишин кабыл алган; macOS курулган кызматты networksetup аркылуу сунуштайт; NetworkManager nmcli'ге жооп берет. Бул чакыруулар буйрук бүткөндө кайтат, бул туннель колдонууга жарактуу болгон учур эмес. Жайгаштырган версияңыз үчүн жеткирүүчүнүн документтерин окуңуз, анткени бул интерфейстер өзгөрөт жана кээ бирлери толугу менен алынат.
nmcli connection up "Work VPN"
networksetup -connectpppoeservice "Work VPN"
Артыкчылыгы — жеткирүүчү өзүнүн профиль кампасын билет, ошондуктан чакыруу GUI колдонгон конфигурацияны колдонот. Кемчилиги — ар бир жеткирүүчү өз этиштерин ойлоп табат, жана бир кардар үчүн жазылган скрипт экинчисине өтпөйт. Кардар бекитилген жана версия кадалган кезде бул катмарды эң кыска жол деп караңыз.
Катмар 2: операциялык системанын өз кызматы
Windows'то чалуучу операциялык системанын бөлүгү жана жеткирүүчүнүн профиль кампасынын ордуна телефон китепчесиндеги жазуу менен иштейт. Бул аны кардарлар арасында ташууга ыңгайлуу жана кызмат эсебинен скрипттөөгө жеңил кылат. Бул ошондой эле туташуу бир жерде болуп, экинчисинде болбошу мүмкүн экенин билдирет, бул туура эмес тизмеге карагандарды адаштырат.
rasdial "Work VPN" user pass
Get-VpnConnection -Name "Work VPN" | Select-Object ConnectionStatus
Жазууну чалуунун ордуна аны түзүү же өчүрүү керек болгондо PowerShell бетини колдонуңуз. WMI жана cmdlet катмарлары бирдей объектилерди ар башка аттар менен сунуштайт, ал эми өчүрүү ажыратуудан өзүнчө операция. Бир гана чалуучу скрипт көчүрүүдөн кийин эскирген жазууларды калтырат. Тазалоо болорун убада кылганга чейин автоматташтырууңуз кайсы кампага жазарын текшериңиз.
Remove-VpnConnection -Name "Old VPN" -Force
Get-VpnConnection
macOS'то эквиваленти — тармак кызматтарынын тизмеси, мында бар кызмат ат боюнча туташат, ал эми заматта түзүлбөйт.
Каттоо маалыматтары ар бир катмарда агып кетет, ошондуктан каналды тандаңыз
Буйрук сабында бергениңиздин баары ар бир жергиликтүү колдонуучу үчүн процесс таблицасында көрүнөт жана адатта кабык тарыхында да сакталат. OpenVPN колдогон альтернатива — сырды файлдан окуу --askpass менен, ал эми файлдын өзүнө ага арткан ишенимге туура келген уруксаттар керек. Аталган түтүк сырды дискке жазуудан качат, бирок аны ача алган ар кандай процесске ал жерге жазууга мүмкүндүк берет. Windows'то сырды каттоо маалыматтары менеджеринде же кызмат эсеби гана окуй алган файлда сактаңыз, жана эч качан batch файлында литерал катары калтырбаңыз.
openvpn --config /etc/openvpn/work.conf --askpass /etc/openvpn/work.secret --auth-nocache --daemon
ls -l /etc/openvpn/work.secret
Ошол эле эреже токендер жана бир жолу колдонулуучу коддор үчүн да жарактуу: эгер автоматташтырууга алар керек болсо, автоматташтырууга буйрук сабынын аргументи болуп саналбаган канал керек. Механизмди өзгөрткөндө сырды айландырыңыз, анткени эски маани бир жерде журналда жаткан. Иштеп, агып кеткен скрипт — иштеген скрипт эмес.
Абалды күтүңүз, анан бир ээсин көзөмөлдөңүз
Бул чакыруулардын ар бири туннель даяр боло электе кайтат, ошондуктан кардар сунуштаган абалды сураңыз же анын ичиндеги багытты убакыт чеги менен текшериңиз. Туташуу чакыруусунан кийин дароо файлдарды көчүрүү же маалымат базасынын туташуусун ачуу — жарыш, жана ал тармак бузулушуна окшош түрдө мезгил-мезгили менен ийгиликсиз болот.
ip link show tun0
nmcli -t -f GENERAL.STATE connection show "Work VPN"
curl -sS --max-time 5 https://app.internal.example/health -o /dev/null
Ажыратуунун карама-каршы багытта ушундай эле көйгөйү бар: процесс маршруттар жоголбой туруп чыгышы мүмкүн. Кардардын илгичтерин бар жерде колдонуңуз, мисалы OpenVPN үчүн up жана down скрипттери же systemd бирдигинин ExecStartPost, анткени алар сизге чындап маанилүү чекитте аткарылат. Илгичтер аларды чакырган нерсенин артыкчылыктары менен аткарылат, ошондуктан тармакты кайра иштеткен илгич божомолдун ордуна так эрежени талап кылат. Туташуунун жашоосу бою так бир ээсин кармаңыз.
Эки көзөмөлчү бир профилди иштетип, токтоткондо, натыйжа — жеткирүүчүнүн үзгүлтүгү катары окулган кайра туташуу цикли. Runbook катмар документтелгенде, сырдын argv эмес каналы болгондо, күтүү шарты убакыт чеги менен абалды текшерүү болгондо жана жашоо циклин бир процесс ээлегенде бүтөт.