ยินดีต้อนรับสู่ show running-config ครับ

บล็อก show running-config นี้สร้างไว้เพื่อเป็นแหล่งรวบรวมเทคนิคการตั้งค่าอุปกรณ์เครือข่าย Cisco ไม่ว่าจะเป็น Cisco IOS Router, Cisco Catalyst Swtich, Cisco ASA Firewall, Cisco Mars เป็นต้น รวมทั้งอาจจะมีเทคนิคการตั้งค่าอุปกรณ์ในยี่ห้ออื่น ๆ บ้างเล็กน้อยครับ

ซึ่งบทความในบล็อกนี้ก็จะรวบรวมมาจากประสบการณ์ส่วนตัวของกระผมเองครับ (หากมีข้อผิดพลาดก็ขออภัยไว้ล่วงหน้าเลยละกันนะครับ) และก็อยากใช้พื้นที่แห่งนี้เป็นแหล่งในการแลกเปลี่ยนความรู้ รวมไปถึงวิธีการหรือเทคนิคการตั้งค่าอุปกรณ์เครือข่าย กับทุก ๆ คนครับ

Wednesday, July 30, 2014

ทำความรู้จักกับ Embedded Packet Capture (EPC)


          ในกรณีที่ต้องการตรวจสอบหรือวิเคราะห์ปัญหาที่เกิดขึ้นบนระบบเครือข่ายด้วยการดักจับแพ็คเก็ตที่ใช้งานผ่านอยู่บนอุปกรณ์ ถ้าเป็นสวิตซ์ก็จะสามารถทำการตั้งค่า SPAN บนสวิตซ์ เพื่อทำการ mirroring ทราฟิกจากอินเทอร์เฟสหนึ่งไปยังอีกอินเทอร์เฟสหนึ่ง และใช้เครื่องมืออย่างเช่น wireshark ในการดักจับแพ็คเก็ตเพื่อมาวิเคราะห์ข้อมูลได้ แต่ในกรณีที่ต้องการดักจับแพ็คเก็ตที่ผ่านบนเราเตอร์ ที่โดยทั่วไปแล้วจะไม่สามารถทำการตั้งค่า SPAN ได้ (ยกเว้นในกรณีที่เป็น switchport ) ก็จะต้องใช้คุณสมบัติ EPC (Embedded Packet Capture) เพื่อดักจับแพ็คเก็ตที่ส่งต่อโดยเราเตอร์แทน


          EPC จะช่วยให้ผู้ดูแลระบบสามารถดักจับแพ็คเก็ตที่ถูกส่งต่อโดยเราเตอร์ได้โดยตรง โดยที่ไม่ต้องมีการตั้งค่าบนสวิตซ์ หรือเชื่อมต่อสายเคเบิ้ลใด ๆ เพิ่มเติม เนื่องจาก ECP จะทำการดักจับแพ็คเก็ตไปเก็บไว้บน buffer บนตัวเราเตอร์ และสามารถเรียกดูได้ทันทีผ่านการใช้ CLI บนตัวเราเตอร์ หรือสามารถส่งออกมาในรูปแบบ PCAP ไปยังโฮสต์ปลายทาง ผ่านโปรโตคอล อย่างเช่น TFTP หรือ FTP จากนั้นก็ใช้เครื่องมืออย่างเช่น wireshark ในการอ่านไฟล์ที่ดักจับมาได้

          การใช้งาน EPC จะช่วยอำนวยความสะดวกในการวิเคราะห์ทราฟิกได้ง่ายขึ้น แม้แต่ในกรณีที่ต้องการดักจับทราฟิกบนอุปกรณ์ที่ติดตั้งอยู่ในระยะไกล อย่างเช่น ตามสาขาที่อยู่ต่างจังหวัด โดยสามารถดักจับแพ็คเก็ตเพื่อมาตรวจสอบได้ง่าย โดยที่ไม่ต้องทำการเปลี่ยนแปลงทาง physical หรือเชื่อมต่อสายสัญญาณใด ๆ เพิ่มเติม

EPC จะมีคุณสมบัติดังนี้

  • เพิ่มความสามารถในการดักจับแพ็คเก็ตข้อมูลทั้ง IPv4 และ IPv6 ที่ใช้งานผ่าน CEF switching path
  • สามารถกำหนดชนิดและขนาดของ buffer ได้ตามต้องการ
  • สามารถดักจับแพ็คเก็ตได้ ด้วยการใช้คำสั่งบน exec mode
  • สามารถเรียกดูข้อมูลที่ดักจับได้ทันทีผ่านการใช้ CLI บนอุปกรณ์เราเตอร์
  • สามารถส่งออกข้อมูลที่ดักจับออกมาได้ ในรูปแบบ PCAP และใช้เครื่องมืออย่างเช่น wireshark ในการวิเคราะห์ข้อมูล
  • รองรับบน Cisco IOS ตั้งแต่ Release 12.4(20) T  และ Cisco IOS-XE 3.7 - 15.2(4)S เป็นต้นมา
  • สามารถดักจับแพ็คเก็ตได้บนอินเทอร์เฟสแบบ physical, sub-interface และ tunnel interface
  • แพ็คเก็ตที่ buffer ไว้ จะถูกเก็บไว้บน DRAM ซึ่งจะหายไปเมื่อมีการ reload อุปกรณ์เราเตอร์
  • การตั้งค่า EPC จะไม่ได้เก็บไว้บน NVRAM ซึ่งจะหายไปเมื่อมีการ reload อุปกรณ์เราเตอร์

ขั้นตอนการตั้งค่า EPC บน Cisco IOS

  1. ทำการสร้างและกำหนดรายละเอียดของ capture buffer
  2. (ทางเลือก) ทำการกำหนด access-list เพื่อ filter ทราฟิกที่ต้องการ
  3. ทำการสร้างและกำหนดรายละเอียดของ capture point 
  4. ทำการเชื่อมโยง capture point เข้ากับ capture buffer
  5. การเปิดการทำงานของ capture point
  6. การปิดการทำงานของ capture point
  7. ตรวจสอบการตั้งค่า และทราฟิกที่ดักจับข้อมูลมา
  8. การส่งออกข้อมูลที่ดักจับมาไปยังโฮสต์ปลายทาง


ตัวอย่างการตั้งค่า EPC บน Cisco IOS

          จากตัวอย่างด้านล่าง ต้องการที่จะดักจับทราฟิกที่รับ-ส่งกันระหว่างโฮสต์ 172.16.100.1 และ 172.16.200.1 ที่ถูกส่งต่อไปโดยเราเตอร์ R1 จากนั้นให้ส่งออกแพ็คเก็ตที่ดักจับได้มายัง TFTP Server เพื่อนำมาตรวจสอบต่อไป


ขั้นตอนที่ 1 สร้างและกำหนดรายละเอียดของ capture buffer

ตัวอย่างการตั้งค่า
R1#monitor capture buffer Capture-Buffer size 512 max-size 1024 circular

จากตัวอย่างด้านบน เป็นการสร้าง buffer ที่ชื่อว่า Capture-Buffer และทำการกำหนดค่าพารามิเตอร์ต่าง ๆ ดังนี้

  • buffer ที่ใช้ในการเก็บข้อมูลจะมีขนาดสูงสุด 512 Kbyte
  • ขนาดของแพ็คเก็ตสูงสุดที่จะเก็บลง buffer เท่ากับ 1024 bytes
  • ให้ดักจับแพ็ตเก็ตอย่างต่อเนื่อง แม้ว่าจะมีขนาด buffer เท่ากับ 512 Kbyte ที่ตั้งไว้แล้วก็ตาม โดยจะทำการเขียนทับข้อมูลที่ดักจับไว้ก่อนหน้า


ขั้นตอนที่ 2 ในกรณีที่ต้องการเลือกเฉพาะข้อมูลที่สนใจ สามารถทำได้ด้วยการใช้ access-list ในการ filter ทราฟิก

ตัวอย่างการตั้งค่า
R1(config)#ip access-list extended Capture-Filter
R1(config-ext-nacl)#permit ip host 172.16.100.1 host 172.16.200.1
R1(config-ext-nacl)#permit ip host 172.16.200.1 host 172.16.100.1
R1(config-ext-nacl)#end

R1#monitor capture buffer Capture-Buffer filter access-list Capture-Filter
Filter Association succeeded

          จากตัวอย่างด้านบน เป็นการสร้าง access-list ที่มีชื่อว่า "Capture-Filter" โดยจะสนใจเฉพาะทราฟิกที่รับ-ส่งกันระหว่างโฮสต์ 172.16.100.1 และ 172.16.200.1 เท่านั้น จากนั้นก็จะเป็นการนำ access-list ไปใช้งานกับ Buffer ที่ได้สร้างไว้ก่อนหน้านี้

ขั้นตอนที่ 3 ทำการสร้างและกำหนดรายละเอียดของ capture point

ตัวอย่างการตั้งค่า
R1#monitor capture point ip cef Capture-Point FastEthernet 0/0 both
*Jul 30 22:02:21.171: %BUFCAP-6-CREATE: Capture Point Capture-Point created.

          จากตัวอย่างด้านบน เป็นการสร้าง capture point ที่มีชื่อว่า Capture-Point โดยจะทำการดักจับทราฟิกบนอินเทอร์เฟส Fa0/0 ทั้งในทิศทางขาเข้าและขาออกจากอินเทอร์เฟส

ขั้นตอนที่ 4 ทำการเชื่อมโยง capture point เข้ากับ capture buffer ที่สร้างขึ้น

R1#monitor capture point associate Capture-Point Capture-Buffer

ขั้นตอนที่ 5 เปิดการทำงานของ capture point

          เมื่อเชื่อมโยง capture point เข้ากับ capture buffer เรียบร้อยแล้ว และต้องการเริ่มดักจับทราฟิก ก็สามารถทำได้ด้วยการใช้คำสั่ง "monitor capture point start" ตามตัวอย่างด้านล่างครับ

R1#monitor capture point start Capture-Point
*Jul 30 22:03:27.879: %BUFCAP-6-ENABLE: Capture Point Capture-Point enabled.

ขั้นตอนที่ 6 ปิดการทำงานของ capture point

          เมื่อทำการดักจับทราฟิกได้ตามต้องการ และต้องการที่จะหยุดการดักจับทราฟิก ก็สามารถทำได้ด้วยการใช้คำสั่ง "monitor capture point stop" ตามตัวอย่างด้านล่างครับ

R1#monitor capture point stop Capture-Point
*Jul 30 22:07:56.015: %BUFCAP-6-DISABLE: Capture Point Capture-Point disabled.

ขั้นตอนที่ 7 การตรวจสอบการตั้งค่าและเรียกดูทราฟิกที่ดักจับมาบน CLI

          เมือ่ทำการดักจับแพ็คเก็ตเรียบร้อยแล้ว สามารถตรวจสอบการตั้งค่าได้ด้วยการใช้คำสั่ง "show monitor capture buffer" ตามตัวอย่างด้านล่างครับ

R1#show monitor capture buffer all parameters
Capture buffer Capture-Buffer (circular buffer)
Buffer Size : 524288 bytes, Max Element Size : 1024 bytes, Packets : 126
Allow-nth-pak : 0, Duration : 0 (seconds), Max packets : 0, pps : 0
Associated Capture Points:
Name : Capture-Point, Status : Active
Configuration:
monitor capture buffer Capture-Buffer size 512 max-size 1024 circular
monitor capture point associate Capture-Point Capture-Buffer
monitor capture buffer Capture-Buffer filter access-list Capture-Filter

          และในกรณีที่ต้องการเรียกดูทราฟิกแบบคร่าว ๆ บนเราเตอร์ ก็สามารถทำได้ด้วยการใช้คำสั่ง "show monitor capture buffer Capture-Buffer <name>" ครับ

R1#show monitor capture buffer Capture-Buffer
22:04:05.455 UTC Jul 30 2014 : IPv4 CEF Turbo  : Fa0/1 Fa0/0

22:04:05.527 UTC Jul 30 2014 : IPv4 CEF Turbo  : Fa0/0 None

22:04:05.551 UTC Jul 30 2014 : IPv4 CEF Turbo  : Fa0/1 Fa0/0

22:04:05.567 UTC Jul 30 2014 : IPv4 CEF Turbo  : Fa0/1 Fa0/0

          ถ้าหากต้องการดูทราฟิกแบบละเอียด (เกินไป) คือดู dump ที่เป็นเลขฐาน 16 ของแพ็คเก็ตที่ใช้งานผ่านไปบนเราเตอร์ ก็สามารถทำได้ด้วยการใช้คำสั่ง "show monitor capture buffer <name> dump" ครับ

R1#show monitor capture buffer Capture-Buffer dump
22:04:05.455 UTC Jul 30 2014 : IPv4 CEF Turbo  : Fa0/1 Fa0/0

66160740: CA011F44 0008CA03 1F440008 080045C0  J..D..J..D....E@
66160750: 002CAEC5 0000FE06 8922AC10 6401AC10  .,.E..~..",.d.,.
66160760: C801BCBC 0017B2C2 D1E80000 00006002  H.<<..2BQh....`.
66160770: 1020C5FF 00000204 02180000 00        . E..........

22:04:05.527 UTC Jul 30 2014 : IPv4 CEF Turbo  : Fa0/0 None

66160740: CA031F44 0008CA01 1F440008 080045C0  J..D..J..D....E@
66160750: 002C8D44 0000FD06 ABA3AC10 C801AC10  .,.D..}.+#,.H.,.
66160760: 64010017 BCBC224B 664BB2C2 D1E96012  d...<<"KfK2BQi`.
66160770: 10203D58 00000204 021800             . =X.......

ขั้นตอนที่ 8 การส่งออกข้อมูลที่ดักจับออกมายังโฮสต์ปลายทาง

          จะเห็นว่าข้อมูลที่แสดงด้วยการใช้คำสั่งบน CLI นั้น ยากต่อการเข้าใจ (ของมนุษย์) เป็นอย่างมาก ดังนั้นเราจึงควร (เป็นอย่างยิ่ง) ที่จะส่งออกข้อมูลที่ดักจับออกมายังโฮสต์ภายนอก และใช้งานเครื่องมืออย่างเช่น Wireshark ในการเปิดไฟล์เพื่อวิเคราห์ข้อมูลตามต้องการ

ตัวอย่างการตั้งค่า
R1#monitor capture buffer Capture-Buffer export tftp://192.168.81.1/capture-traffic.pcap


ตัวอย่างการตรวจสอบทราฟิกที่ทำการดักจับมาด้วยการใช้ Wireshark



ตัวอย่างการตั้งค่า EPC บน Cisco IOS-XE ครับ

monitor capture PCAP interface GigabitEthernet0/3/0 both
monitor capture PCAP match ipv4 protocol tcp any any
monitor capture PCAP start
monitor capture PCAP stop

No comments:

Post a Comment