לקוחות VPN של ASA מקבלים כתובות ממאגר DHCP שגוי
קראו את dhcp-server ואת dhcp-network-scope ב-ASA כשני שדות שונים, הגדירו את ה-scope לכתובת ניתנת לניתוב מחוץ למאגר, ואז אמתו את המסלול.
לקוחות AnyConnect עולים על תת-הרשת הלא נכונה, או ששרת ה-DHCP מסרב לחלק דבר בכלל, בעוד שמדיניות הקבוצה נראית תקינה במבט ראשון. ב-ASA יש שני שדות בשני מקומות ששניהם נשמעים כמו «מאיפה מגיעות הכתובות», והגדרת השדה הלא נכון מפיקה בדיוק את זה. פרופיל החיבור נוקב בשם שרת ה-DHCP; מדיניות הקבוצה נוקבת בתת-רשת שממנה אותו שרת אמור לבחור. שניהם אינם יוצרים מאגר.
שלושה אובייקטים, שלוש שאלות
הפרידו תחילה את מודל ההקצאה מהמאגר, משום ששני המודלים אינם חולקים תצורה. אם ה-ASA מחלק כתובות בעצמו, מגדירים מאגר מקומי ומפנים אליו את מדיניות הקבוצה. אם שרת DHCP חיצוני מחלק אותן, פרופיל החיבור נוקב בשם אותו שרת ומדיניות הקבוצה מספקת רמז scope. ערבוב השניים הוא הסיבה הרגילה לכך שכתובת לעולם אינה מופיעה.
| Intent | Objects involved |
|---|---|
| ASA allocates from its own pool | ip local pool plus the group policy's address-pool |
| External DHCP allocates | dhcp-server on the tunnel group, dhcp-network-scope on the group policy |
קראו את הערכים היעילים לפני שמשנים אחד
שורה שהושמטה אינה זהה ל-none מפורש. התצורה הפועלת מציגה מה הקלדתם; show run all group-policy מציג למה המדיניות באמת מתייחסת, כולל ברירות מחדל בירושה. בדקו את שניהם לפני שתחליטו שה-scope שגוי, משום שמדיניות קבוצה שיורשת ממדיניות ברירת מחדל עשויה לספק ערך שלעולם אינו מופיע ברשימה הקצרה.
show running-config group-policy RemoteStaff
show run all group-policy RemoteStaff
show running-config tunnel-group RemoteStaff
group-policy RemoteStaff attributes
dhcp-network-scope ?
? שווה קריאה בגרסה המותקנת אצלכם, משום שהערכים המתקבלים וטקסט העזרה שלהם שונים בין גרסאות. תיעוד העזר של Cisco ASA 9.24 למדיניות קבוצה מתאר את המאפיין ככתובת ניתנת לניתוב בתת-הרשת הרצויה, מחוץ למאגר ההקצאה, עם עדיפות לכתובת ממשק. זה אינו טווח המאגר, וזה אינו מספר הרשת.
הגדירו את ה-scope לכתובת, לא לטווח
נניח שהמאגר שתרצו שהשרת ישתמש בו הוא 10.50.30.50 עד 10.50.30.200 על /24, ושממשק ה-ASA באותו מקטע הוא 10.50.30.1. ערך ה-scope הוא 10.50.30.1. כתיבת 10.50.30.0 נכשלת משום שזה מספר הרשת, וכתיבת הטווח נכשלת משום שהמאפיין מקבל כתובת אחת. אם הכתובת שתבחרו אינה כתובת ממשק, היא זקוקה למסלול סטטי כדי שתגובת שרת ה-DHCP תגיע אליה.
group-policy RemoteStaff attributes
dhcp-network-scope 10.50.30.1
הקטע הזה עושה דבר אחד בלבד. הוא אינו מגדיר את שרת ה-DHCP, אינו יוצר שם מאגר, ואינו הופך פרופיל גישה מרחוק חלקי לכזה שעובד. ההתנהגות המתועדת כאן היא IPv4 בלבד; אל תצפו שהיא תתווה DHCPv6 או האצלת קידומת.
שנו אותו עם נקודת החזרה
צלמו snapshot תחילה, כדי שההחזרה תהיה פקודה ולא בנייה מחדש. שמרו את התצורה הרלוונטית לקובץ לפני העריכה, ודעו מה no משחזר בגרסה שלכם: הוא מחזיר את המאפיין לערך ברירת המחדל או לערך בירושה, שאולי הוא none ולא המדיניות שמעליו.
copy running-config flash:pre-dhcp-scope.cfg
conf t
group-policy RemoteStaff attributes
no dhcp-network-scope
dhcp-network-scope 10.50.30.1
end
write memory
הסרת המאפיין היא גם שלב אבחון. כשה-scope אינו מוגדר, שרת ה-DHCP מחפש במאגרים שלו כתובת שאינה מוקצית, ולכן הלקוח עלול לנחות במקום בלתי צפוי אבל לפחות מתחבר. התוצאה הזו אומרת שמסלול הבקשה עובד ושבחירת המאגר היא מה שנכשל.
אמתו את הכתובת, את המסלול ואת ההרשאות
קראו את ההקצאה מטבלת הסשנים ולא מתיבת הדו-שיח של הלקוח, ואז אשרו שהכתובת ניתנת לניתוב בחזרה למנהרה ושמסנני מדיניות הקבוצה מתירים את התעבורה שאתם מצפים לה. החלטת הקצאה אינה החלטת ניתוב, ולקוח שמקבל כתובת מהמאגר הנכון עדיין עלול להיכשל בכל בקשה.
show vpn-sessiondb detail anyconnect filter name testuser
show ip local pool
show route | include 10.50.30
ping 10.50.30.61 source inside
אם הסשן מציג את הכתובת שהתכוונתם אליה אך התעבורה מתה, ה-scope סיים כחשוד. הביטו במסלול החזרה, בהגדרות split-tunnel או במסננים של מדיניות הקבוצה, ובשאלה אם ה-scope של DHCP יושב במקטע שה-ASA באמת מנתב אליו.