VPN клиентийг скриптлэх: нууц үгээс өмнө давхаргыг сонгоно уу
Нийлүүлэгчийн CLI, rasdial, апп-ийн санаа эсвэл UI автоматжуулалт тус бүр өөрөөр бүтэлгүйтдэг. Давхаргыг сонгож, нууцыг 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 дээр эквивалент нь сүлжээний үйлчилгээний жагсаалт бөгөөд одоо байгаа үйлчилгээ нэрээр холбогддог, шууд үүсгэгддэггүй.
Итгэмжлэлийн мэдээлэл давхарга бүр дээр алдагддаг тул сувгийг сонгоно уу
Командын мөрөнд дамжуулсан бүхэн орон нутгийн хэрэглэгч бүрийн процессын хүснэгтэд харагдах бөгөөд ихэвчлэн shell-ийн түүхэнд ч үлддэг. 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 биш сувагтай, хүлээх нөхцөл нь хугацааны хязгаартай төлөв шалгалт, амьдралын мөчлөгийг нэг процесс эзэмших үед дуусна.