SNMP Protocol ใช้ในการทำระบบ NMS(Network Management System)
SNMP ย่อมาจาก Simple Network Management Protocol คือ ข้อกำหนดของวิธีการที่ใช้ในการจัดการอุปกรณ์ทางด้าน Network ในระบบเครือข่ายที่ติดต่อกันด้วย IP address
ซึ่งการทำงานจะประกอบไปด้วยมาตรฐานหลายส่วน ประกอบกันจนเป็น SNMP เพื่อให้เป็นข้อกำหนดให้ผู้ผลิตอุปกรณ์ Network ต่างๆนำไปใช้ในอุปกรณ์ของตนเอง
การติดต่อกันของอุปกรณ์ที่ใช้ SNMP Protocol อธิบายตามรูปด้านบนคือ จะมีอยู่ 2 ส่วนหลักๆ
1. คือ ส่วนการจัดการ : Network Management System (NMS)
2. คือ ส่วนที่รอการจัดการ : Managed Network Element
อธิบายเพิ่มเติมดังนี้
1. ส่วนการจัดการ คือ NMS หรือที่เรียกว่า Network Management System จะเป็นระบบที่เอาไว้ควบคุม สั่งการอุปกรณ์ รอรับข้อมูล และดึงข้อมูล Statistic ต่างๆของอุปกรณ์ Network เช่น Router , Switch , Server
2. ส่วนที่รอการจัดการ เรียกง่ายๆว่า SNMP Agent ( SNMP Server ) หรือเรียกว่า Managed Network Element คือ อุปกรณ์ Network ต่างๆ เช่น Router , Switch , Server ซึ่งเมื่ออุปกรณ์ทำงานแล้วนั้น อุปกรณ์ Network เหล่าๆนี้ จะเก็บค่า Statistic ต่างๆหรือค่า Configs ต่างๆ ซึ่งเราจะเรียกว่า Object เช่น hostname / in,out traffic / physical speed และอื่นๆ เก็บลงใน Database ของตนเอง ซึ่งเราจะเรียกว่า MIB ( Management Information Base ) ใน MIB นี้ จะประกอบด้วยเลข Index เพื่อเอาไว้ใช้แยกแยะข้อมูล (Object) เป็นส่วนๆ และเพื่อใช้ในการระบุตำแหน่งข้อมูลของ Object ที่เราต้องการได้ถูกต้อง ซึ่งเลขเหล่านี้ เราเรียกว่า OID ( Object Identifier ) ซึ่งเลข OID ที่ใช้ระบุตำแหน่ง Object ใน MIB นั้นจะเป็นไปตามมาตรฐานที่ระบุในเอกสาร RFC1213 ( อ่านรายละเอียดได้ที่ https://datatracker.ietf.org/doc/html/rfc1213 )โดยเลข OID นั้นจะใช้รูปแบบ Tree Structure ซึ่งก็คือโครงสร้างแบบลำดับชั้น
ที่มาที่ไปของเลข OID ( Object Identifier )
แนวคิดของ OID เริ่มต้นขึ้นในช่วงทศวรรษ 1980 ตอนต้น โดยมีพื้นฐานจากความต้องการการระบุวัตถุใดๆ ให้มีความชัดเจน และเพื่อให้รองรับการสื่อสารผ่านระบบคอมพิวเตอร์ในทุกๆ รูปแบบ
สหภาพโทรคมนาคมระหว่างประเทศ ภาคการกําหนดมาตรฐานโทรคมนาคม (International Telecommunication Union Telecommunication Standardization Sector: ITU-T) และ องค์การระหว่างประเทศว่าด้วย การมาตรฐาน / คณะกรรมาธิการระว่างประเทศว่าด้วยมาตรฐานสาขาอิเล็กทรอนิกส์ (International Organization for Standardization / International Electrotechnical Commission: ISO/IEC) จึงได้ร่วมกันพัฒนามาตรฐานที่เกี่ยวข้องกับ OID ขึ้นในปี ค.ศ. 1984 การทํางานของ OID มีพื้นฐานจากโครงสร้างของชื่อ แบบมีลําดับชั้นและสามารถเพิ่มขยายได้ไม่จํากัดหรือที่เรียกว่า OID tree ทั้งนี้ข้อเสนอแนะของ ITU-T (ITU-T Recommendations) และมาตรฐานสากลของ ISO/IEC ส่วนใหญ่ได้กําหนดให้การระบุถึงสิ่งใดๆ จะต้องมีความชัดเจน ไม่คลุมเครือ
สําหรับการจัดสรรหมายเลข OID นั้น มีวิธีที่ไม่ซับซ้อน กล่าวคือมีหน่วยงานรับจดทะเบียนหมายเลย OID (Registration Authority: RA) ทําหน้าที่รับจดทะเบียนและบริหารหมายเลข OID ภายใต้กิ่งที่ได้รับการจัดสรร
โครงสร้างหมายเลข OID ระดับบนสุด มี 3 ค่า คือ
0 เป็นโหนดที่เกี่ยวข้องกับงานด้านข้อเสนอแนะของ ITU-T
1 เป็นโหนดที่เกี่ยวข้องกับงานด้านมาตรฐาน ISO
2 เป็นโหนดของ object ที่เกี่ยวข้องกับงานมาตรฐาน ISO และ ITU-T
ตัวอย่างการใช้ OID อ้างข้อมูลประเภทต่างๆ
- ชื่อประเทศ ชื่อองค์กรหรือหน่วยงาน
- กําหนด MIB-2 (1) ในการใช้งานร่วมกับโปรโตคอล SNMP เพื่อบริหารจัดการ- อุปกรณ์เครือข่าย
- อัลกอริธึมการเข้ารหัส
จากรูป OID Tree ด้านบน จะเห็นว่า OID ที่ใช้เข้าถึงตำแหน่งของ Object ใน MIB-2 (RFC1213) จะใช้ OID : 1.3.6.1.2.1.x.x. ซึ่ง x หมายถึงเลขที่จะระบุต่อไปว่าจะเข้าถึง Object ใดของ MIB-2 ที่เก็บ Statistic และค่า Config ต่างๆของอุปกรณ์ Networks
โปรแกรมที่ใช้ในการทำระบบ NMS นั้นมีให้ใช้มากมาย มีทั้งแบบเสียค่าใช้จ่าย และ แบบฟรี จากรูป Network Diagram ด้านบน ตัวระบบ NMS นั้นได้ใช้โปรแกรม CACTI ซึ่งเป็น Open Source ใช้งานได้ฟรี
อุปกรณ์ Network ที่เปิดใช้งาน SNMP Server นั้น หรือที่เรียกว่าเป็นตัว SNMP Agent จะทำการเก็บค่า Statistic / Configs ต่างๆลงใน MIB โดยจะไม่ส่งข้อมูลข้อมูลออกไปหา NMS จนกว่า NMS จะร้องขอเข้ามา (SNMP Get Request)
เมื่อ NMS ได้ทำการ Get Request โดยระบุ OID ไปยัง IP ของอุปกรณ์นั้นๆ โดยใช้ Destination UDP Port 161 เมื่อ SNMP Agent ได้รับ Get Request แล้วจะนำ OID เพื่อนำข้อมูลของ Object ที่ OID ระบุ จากนั้นจะส่งข้อมูลกลับไปด้วย SNMP Get Response
และในฝั่งของ NMS เมื่อได้รับ Get Response กลับมา จะนำข้อมูลบันทึกลง MIB ของตนเอง เพื่อนำข้อมูลไปใช้ต่อไป ก็ขึ้นอยู่ความสามารถของ Software ที่นำมาใช้ เช่น CACTI , Zabbix สามารถนำข้อมูลมาสร้างเป็น Graphs ได้ เพื่อให้ผู้ดูแลระบบสามารถเข้าใจข้อมูลได้ง่ายมากขึ้นนั่นเอง
SNMP Server หรือ SNMP Agent นั้น จะส่งข้อมูลไปให้ NMS ด้วยตัวเองได้คือเมื่อ Object ใดๆนั้น Down ลง เช่น Interface Down จะทำให้ SNMP Agent ส่งข้อมูลผ่านทาง TRAP/INFORM โดยใช้ Destination UDP Port 162 เพื่อให้ NMS ได้รับทราบ โดยที่ทาง NMS ไม่ต้องส่ง GET Request มาให้ก่อน
ตัวอย่างการเข้าถึงข้อมูลใน MIB ภายใน SNMP Server
ผู้เขียนจะใช้โปรแกรม ManageEngine MIB Browser free tool บน Windows OS ( สามารถ Download ได้ที่ https://www.manageengine.com/products/mibbrowser-free-tool/download-confirm.html สามารถทำการติดตั้งตามปกติเหมือนโปรแกรมทั่วไปในวินโดวได้เลย ) เพื่อทำการส่ง Get Request เพื่อร้องขอข้อมูล Object ใน MIB จาก SNMP Agent ของตัวอุปกรณ์ Network จากรูป Network Diagram คือตัว Mikrotik Router นั่นเอง
ก่อนที่จะเข้าถึง Object ใน MIB ของ Mikrotik Router ในฝั่ง Mikrotik Router หรือ SNMP Agent นั้น เราต้องไปทำการ Enable SNMP เพื่อให้ใช้งานรอรับคำสั่ง Get Request ได้ก่อน สำหรับ Mikrotik Router มีขั้นตอนดังนี้
จากรูปด้านบน ให้ทำการ login เข้าไปตั้งค่า Mikrotik router เพื่อทำการเปิดใช้งาน SNMP Agent ซึ่งตัวอย่างการตั้งค่าในรูปด้านบนคือ Mikrotik router รุ่น hAP Lite ตาม Network diagram ที่ได้ออกแบบไว้
ซึ่งผู้เขียนขอข้ามขั้นตอนการตั้งค่าใช้งานของ mikrotik การเข้าคอนฟิก mikrotik จะใช้โปรแกรม winbox ของ mikrotik เอง
การเปิดใช้งาน SNMP ให้เข้าไปที่เมนู IP SNMP เลือก Enable Communities + ตั้งชื่อให้ communitiy เลือก Read Access เท่านั้น OK
กลับมาที่หน้าต่าง SNMP Settings ให้เลือก Trap Community : ที่เรา Add เข้ามา จากนั้นให้เลือก Trap Version : 2 จากนั้นกด OK ตามรูปด้านบน เป็นอันเสร็จขั้นตอนการเปิดใช้งาน SNMP Server ( SNMP Agent ) ของ Router Mikrotik
จากนั้นให้เข้าโปรแกรม ManageEngine MIB Browser free tool
1. กรอกข้อมูลเพื่อทำการระบุปลายทางไปยัง SNMP Agent
- Host : ให้กรอก IP Address ของ Mikrotik router
- Port : 161
- Community : ใส่ community string ที่เรากำหนดในส่วนของ SNMP บน Mikrotik router
2. กดเลือกเมนูหลัก RFC1213-MIB โดยกดเลือกไล่เรียงลงมาตามข้อมูลของ OID Tree คือ org -> dod -> internet -> mgmt -> mib-2 -> interfaces -> ifTable -> ifEntry -> ifOperStatus ซึ่งเลข OID Object ที่ได้คือ 1.3.6.1.2.1.2.2.1.8 ซึ่งก็คือ iso(1).org(3).dod(6).internet(1).mgmt(2).mib-2(1).interfaces(2).ifTable(2).ifEntry(1).ifOperStatus(8)
จากนั้นคลิกขวาเลือก GET จะเป็นการส่ง Get request จากนั้น SNMP Agent บน Mikrotik Router เมื่อได้รับ Get request ก็จะส่ง Get response กลับมาที่ NMS จะได้รับข้อมูล Status ของแต่ละ Interface ตามรูปด้านบน
ด้วยข้อกำหนดต่างๆของ SNMP Protocol นี้ ทางผู้พัฒนา Software NMS ต่างๆ ไม่ว่าจะเป็น CACTI , Zabbix , PRTG หรืออื่นๆ ก็ใช้หลักการนี้ในการดึงข้อมูล Statistic จากอุปกรณ์ Network เพื่อนำมาใช้ในรูปแบบของตนเองไม่ว่าจะเป็นการนำมา Plot เป็น Graphs หรือนำมาสร้างเงื่อนๆในการแจ้ง Warning , Alert ได้ต่อไป
สำหรับบทความ ทำความเข้าใจเบื้องต้นเกี่ยวกับ SNMP Protocol เพื่อใช้ในการทำระบบ NMS ( Network Management System ) ทางผู้เขียนขอจบเนื้อหาเพียงเท่านี้ หากท่านผู้อ่านมีข้อแนะนำใดๆเพิ่มเติม หรือทางผู้เขียนนั้นได้ให้ข้อมูลผิดพลาด ทางผู้อ่านสามารถคอมเม้นท์แนะนำ ติชมได้ เพื่อที่ผู้เขียนจะนำมาแก้ไขต่อไปครับขอบคุณครับ