vpncli -s מול ממשק גרפי: התחברות ל-Cisco Secure Client
vpncli -s קורא קובץ תשובות מוכן, ואילו הממשק הגרפי קורא אדם. השוו מתי הסקריפט משתלם, מה הקובץ צריך וכיצד להוכיח זאת.
Cisco Secure Client מציע שתי דרכים לענות על אותן בקשות התחברות: אדם שמקליד בתוך vpnui.exe, או סקריפט שמזרים תשובות אל vpncli.exe דרך הקלט התקני עם -s. הדרך השנייה מאפשרת חיבורים מתוזמנים בלי לקרוא את מסך הממשק הגרפי, והיא גם הופכת התחברות לקובץ שצריך להגן עליו כמו על אישור גישה. איזו מהן תרצו תלוי בשאלה אם יש אדם ליד המחשב ובתדירות שבה הסיסמה מתחלפת. אף אחת מהאפשרויות לא משנה מה השער מבקש, רק מי עונה.
שני המסלולים מסתיימים באותה מנהרה, ולכן ההשוואה היא של תפעול, לא של פרוטוקול.
שתי דרכים לענות על אותן בקשות
מסלול הממשק הגרפי הוא אינטראקטיבי מעצם התכנון: הלקוח שואל, מישהו עונה, וההפעלה נמשכת כל עוד האדם הזה משאיר אותה לנפשה. זו הבחירה הנכונה במחשב נייד שאדם משתמש בו, מפני שהבקשות מתאימות את עצמן לשיטת האימות של השער ואיש לא חייב להחזיק סיסמה בטקסט גלוי על הדיסק.
מסלול הסקריפט מתאים לקיוסק, למחשב מעבדה או למשימה מתוזמנת שבה אין מי שיקליד. ההחלפה מפורשת: אתם מקבלים קובץ אישורי גישה על הדיסק בתמורה לחיבור ללא השגחה. אם השער מציע אימות בתעודה או ב-SAML, ההחלפה הזו בדרך כלל אינה משתלמת, מפני שהקובץ קיים רק כדי לענות לבקשות ששיטה חזקה יותר הייתה נמנעת מהן.
אל תערבבו את השתיים על אותו מחשב בו-זמנית. שורת הפקודה והלקוח הגרפי מתחרים על אותו מצב הפעלה, וזו הבעיה של הקטע הבא.
מה חייב להיות בקובץ התשובות
הלקוח שואל לפי הסדר — שער, לפעמים בחירת קבוצה, שם משתמש, סיסמה וכל אישור באנר. קובץ שעונה לכולם נראה כך, עם ערכים אמיתיים במקומם:
connect vpn.example.com
MyGroup
alice
correct-horse-battery
yהדרך האמינה לבנות את הקובץ הזה היא להתחבר פעם אחת ביד, לרשום כל שורה שאתם מקלידים וכל לחיצת Enter, ואז לשחזר בדיוק את הרצף הזה. פריסות ששומרות את הקבוצה ואת שם המשתמש בפרופיל עשויות להזדקק לשורות ריקות במקום שבו הבקשות האלה כבר לא מופיעות, והשורה האחרונה עדיין צריכה מעבר שורה משלה. קובץ שחסרה בו שורה אחת נתקע בדרך כלל בבקשה האחרונה במקום להיכשל בשגיאה ברורה, וזו הסיבה שמאשימים את הרשת. השוו את הקובץ לתמליל שלכם פעמיים, פעם אחת לסדר ופעם אחת לשורות הריקות.
שמרו את הקובץ מחוץ לכל תיקייה מסונכרנת, ושהוא יהיה קריא רק לחשבון שמריץ את המשימה. הסיסמה הזו היא טקסט גלוי, ולכן הקובץ הוא אישור גישה: בלי מאגר, בלי דיסק משותף, בלי קובץ מצורף בכרטיס. הלקוח לא יזהר אתכם מכל זה.
למה הממשק הגרפי חייב לפרוש ראשון
התחילו את הסקריפט בסיום תהליך הממשק הגרפי, ואז הריצו את ה-CLI מתיקיית ההתקנה שלו עצמו, מפני שגם תיקיית העבודה וגם גרסת הלקוח חשובות. מעטפת להמחשה:
@echo off
taskkill /IM vpnui.exe /F >nul 2>&1
cd /d "%PROGRAMFILES(x86)%\Cisco\Cisco Secure Client"
vpncli.exe -s < C:\secure\login.txtקודי יציאה אינם כאן אות הצלחה אמין. הלקוח מדפיס את ההתקדמות ומחזיק את המנהרה בתהליך נפרד, ולכן קראו בפלט את שורת מצב החיבור ורק אחר כך התחילו את העבודה שתלויה ב-VPN.
אם תדלגו על סגירת הממשק הגרפי, הסקריפט עשוי להיראות פועל בשעה שההפעלה הקיימת נשארת במצב שבו המשתמש השאיר אותה. התקלה הזו נראית לסירוגין, וזה בדיוק סוג הבאג ששורד שבוע של ניחושים.
אמתו הפעלה, אל תניחו אותה
לאחר שהסקריפט חוזר, בדקו משהו שקיים רק בתוך המנהרה — מארח פנימי, או סיומת DNS שרק הפותר הארגוני עונה עליה. קראו גם את שורת מצב החיבור בפלט הלקוח, והתייחסו לכל דבר אחר כאל כישלון ולא כאל הצלחה איטית. הרצה חוזרת של הקובץ כשההפעלה כבר פעילה עלולה להשאיר את הלקוח מוגדר למחצה, ולכן או התנתקו קודם או דלגו על ההתחברות כשההפעלה קיימת.
לאחר מכן החליטו מי אחראי על חיבור מחדש. לולאה שעושה פינג לכתובת פנימית ומריצה שוב את ההתחברות יכולה להחזיק קיוסק מחובר חודשים, והיא גם עלולה לנעול חשבון בפעם הראשונה שהסיסמה מתחלפת. הגבילו את מספר הניסיונות, התריעו כשהם נגמרים, ותנו לצוות הזהויות להחליף את הקובץ במקום להשאיר סיסמה ישנה מנסה שוב עד לנעילה.
vpnclient.exe הישן אינו אותו כלי
אותה אוטומציה מופיעה תחת שם ישן יותר, והשניים אינם מחליפים זה את זה. לקוח ה-Cisco IPsec שהוצא משימוש השתמש ב-vpnclient.exe עם ארגומנטים בשורה, כמו פועל connect, שם פרופיל, משתמש וסיסמה בשורת פקודה אחת, ואילו vpncli.exe מצפה לרצף בקשות בקלט התקני עם -s. לכן העתקת סקריפט פורום ישן למחשב מודרני מייצרת פקודה שרצה, לא עושה דבר נראה לעין, והשער מקבל את האשמה.
לפני עריכת ארגומנט כלשהו, בדקו איזה לקוח מותקן ומי הלקוח שהסקריפט באמת קורא לו. ההבדל בשם קטן מספיק כדי לפספס במשימה מתוזמנת, וזה הדבר הראשון שצריך לוודא כשסקריפט שעבר בירושה מפסיק לעבוד לאחר שדרוג.