ไคลเอนต์ AnyConnect ขึ้นมาบนซับเน็ตผิด หรือเซิร์ฟเวอร์ DHCP ไม่ยอมแจกอะไรเลย ทั้งที่นโยบายกลุ่มดูถูกต้องเมื่อมองแวบแรก บน ASA มีสองฟิลด์ในสองตำแหน่งที่ฟังดูเหมือน «ที่อยู่มาจากไหน» และการตั้งฟิลด์ผิดก็ให้ผลแบบนี้พอดี โปรไฟล์การเชื่อมต่อระบุชื่อเซิร์ฟเวอร์ DHCP ส่วนนโยบายกลุ่มระบุซับเน็ตที่เซิร์ฟเวอร์นั้นต้องเลือกจาก ทั้งสองอย่างไม่ได้สร้างพูล.

สามออบเจ็กต์ สามคำถาม

แยกโมเดลการจัดสรรออกจากพูลก่อน เพราะสองโมเดลไม่ได้ใช้การกำหนดค่าร่วมกัน ถ้า ASA แจกที่อยู่เอง คุณจะกำหนดพูลโลคอลและชี้นโยบายกลุ่มไปที่พูลนั้น ถ้าเซิร์ฟเวอร์ DHCP ภายนอกเป็นผู้แจก โปรไฟล์การเชื่อมต่อจะระบุชื่อเซิร์ฟเวอร์นั้น และนโยบายกลุ่มจะให้คำใบ้เรื่อง scope การผสมสองแบบเข้าด้วยกันคือสาเหตุปกติที่ที่อยู่ไม่เคยปรากฏ

IntentObjects involved
ASA allocates from its own poolip local pool plus the group policy's address-pool
External DHCP allocatesdhcp-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 กำหนดเส้นทางไปจริงหรือไม่

บทความที่เกี่ยวข้อง