Tổng quan giao thức SNMP
Simple Network Mangement Protocol(SNMP) hoạt động ở lớp ứng dụng, chạy cổng 160, 161, 162 trên UDP. SNMP dùng để quản lý các thiết bị trong mạng như router, server,… SNMP không chỉ cho phép kiểm soát việc hoạt độngcủa các thiết bị mạng mà còn có thể quản lý các thiết bị mạng từ xa. SNMP có khả năng theo dõi, lấy thông tin, đưa ra thông báo và tác động đến các hoạt động hệ thống mạng theo ý muốn của người quản trị. Ví dụ: SNMP có thể theo dõi tốc độ đường truyền,tự động gửi thông báo cho người quản trị khicó một cổng trên router bị tắt, xem thông tin ổ cứng của server,…
SNMP có các phiên bản: SNMPv1 (RFC 1155, RFC 1157), SNMPv2c(RFC 1901, RFC 1905, RFC 1906, RFC2578), SNMPv2u ( RFC 1909, RFC 1910) và SNMPv3 (RFC 1905, RFC 1906, RFC 3411, RFC 3412, RFC 3414, RFC 3415). Một hệ thống sử dụng SNMP bao gồm 2 thành phần cơ bản: NMS (Network Management Station) và NE (Network Element)
- NMS (SNMP manager) là một máy tính chạy phần mềm quản lý SNMP (PRTG, Solarwinds) để thực hiện giám sát và điều khiển tập trung các SNMP agent.
- NE (SNMP agent) là các thiết bị mạng hỗ trợ SNMP và chịu sự quản lý của các SNMP manager.
Một SNMPmanager có thể quản lý nhiềuSNMP agent và ngược lại một SNMP agent có thể chịu sự quản lý của nhiều SNMP manager.
Một số khái niệm cơ bản của giao thức SNMP:
- Object:
Ø Mỗi thiết bị có hỗ trợ SNMP cung cấp nhiều thông tin khác nhau, mỗi thông tin đó được gọi là object. Ví dụ: router có các thông tin về tổng số card, tổng số cổng, tổng số bit đã truyền/nhận, tên router, trạng thái tắt/mở của các cổng.
Ø Mỗi object có một tên gọi riêng và một mã số Oject ID (OID) để nhận dạng object đó. Ví dụ: tên thiết bị được gọi là sysName, OID là 1.3.6.1.2.1.1.5.
Ø Mỗi oject chỉ có duy nhất một OID nhưng có thể có nhiều tên gọi nên người ta sử dụng một chỉ số sub-id dể phân biệt các object. Ví dụ: Tên thiết bị được gọi là sysName, OID là 1.3.6.1.2.1.1.5; nếu thiết bị có 2 tên thì chúng sẽ được gọi là sysName.0 và sysName.1 và có OID lần lượt là 1.3.6.1.2.1.1.5.0 và 1.3.6.1.2.1.1.5.1.
Ø Một số object phổ biến thì được chuẩn hóa OID, riêng các object mới được tạo ra theo yêu cầu của cá nhân thì phải được mô tả OID. Để lấy một thông tin có OID đã chuẩn hóa thì ứng dụng SNMP phải gửi một gói tin SNMP có chứa OID của object đó cho SNMP agent, SNMP agent khi nhận được thì nó phải trả lời bằng thông tin ứng với OID đó.
Ø Object access quy định quyền truy cập của mỗi object là READ_ONLY (chỉ cho phép đọc object) hoặc READ_WRITE (cho phép đọc và thay đổi giá trị object). Ví dụ: tên của một thiết bị (sysName) thì ta có thể thay đổi nên có quyền READ_WRITE, còn giá tổng số cổng của thiết bị (ifNumber) là READ_ONLY thì khổng thể đổi.
- MIB (Management Information Base) là một cấu trúc dữ liệu gồm các object được quản lý, được dùng cho việc quản lý các thiết bị chạy trên nền TCP/IP. MIB được thể hiện thành 1 tập tin (MIB file) và có thể biểu diễn thành 1 cây (MIB tree). Muốn hiểu được một OID thì cần có tập tin MIB mô tả OID đó. Các thiết bị được quản lý bằng SNMP chỉ khi các ứng dụng SNMP manager và SNMP agent cùng hỗ trợ một MIB. Các ứng dụng này cũng có thể hỗ trợ cùng lúc nhiều MIB.
Phương thức hoạt động của SNMP
SNMPv2 hoạt động dựa trên 7 loại thông điệp
SNMPv2 PDU | Mô tả tác dụng |
GetRequest | Manager gửi GetRequest (chứa một hoặc nhiều OID) đến agent để lấy một hoặc nhiều giá trị của object trong MIB. |
GetNextRequest | Manager gửi GetNextRequest đến agent dùng để lấy giá trị của object nằm kế tiếp object được chỉ ra trong MIB. |
GetBulkRequest | Manager gửi GetBulkRequest đến agent để lấy nhiều giá trị của nhiều object. |
InformRequest | Agent gửi InformRequest đến manager nhằm trao đổi thông tin với nhau. |
SetRequest | Manager gửi SetRequest đến agent để thiết lập giá trị cho oject dựa vào OID. Chỉ những oject có quyền READ_WRITE mới có thể thiết lập giá trị được. |
SetResponse | Sau khi Agent nhận được các thông điệp GetRequest, GetNextRequest hay SetRequest thì nó sẽ gửi GetResponse để trả lời. Trong GetResponse có chứa OID của object được yêu cầu và giá trị của object đó. |
Trap | Trap được agent tự động gửi đến manager để thông báo trong agent có sự kiện hay biến cố xảy ra. Ví dụ: khi có một cổng bị tắt, người dùng đăng nhập thất bại. Việc gửi hay không gửi khi biến cố xảy ra do hãng sản xuất thiết bị agent quy định. SNMP request/reponse dùng để quản lý còn SNMP trap dùng để cảnh báo. Nguồn gửi trap được gọi là Trap Sender và nơi nhận trap được gọi là Trap Receiver. Mỗi trap sender có thể gửi nhiều trap đến nhiều trap receiver cùng lúc. Trap gồm 2 loại chính: generic trap (được qui định trong các chuẩn SNMP) và specific trap (do hãng sản xuất tự định nghĩa). Có thể phân biệt loại trap dựa vào mã số là một số nguyên chứa trong gói tin trap. Theo SNMPv1, generic trap có 7 loại sau: coldStart(0), warmStart(1), linkDown(2), linkUp(3), authenticationFailure(4), egpNeighborloss(5), enterpriseSpecific(6). |
Hình 1. Mô tả phương thức hoạt động của SNMPv2
Cấu trúc gói tin SNMP
Để hiểu rõ hơn về phương thức hoạt động của SNMP cần nắm được cấu trúc gói tin SNMP qua hình 2
Hình 2. Cấu trúc gói tin SNMP
Theo cấu trúc trên:
- Get/set header:
Ø Request id: ID của request được manager gửi đến cho agent.
Ø Error status: có các giá trị noError(0), tooBig(1), noSuchName(2), badValue(3), readOnly(4), genErr(5). Giá trị noError(0) là gửi thành công.
Ø Error index: số thứ tự của OID có lỗi (nếu có).
- Variables to get/set: chứa danh sách các cặp OID/value cần lấy thông tin.
- Trap header:
Ø Enterprise: nhận dạng thiết bị gửi trap (nhận dạng chi tiết hãng sản xuất, chủng loại, model).
Ø Agent address: địa chỉ IP của nguồn gửi trap.
Ø Trap type hay generic trap: kiểu giá trị của loại trap.
Ø Specific trap: kiểu giá trị của trap do người dùng định nghĩa.
Ø Time stamp: thời gian từ lúc thiết bị khởi động đến khi gửi gói tin trap, tính bằng centi giây.
Ø Trap information hay variable-bidings: các cặp OID/value của các object có liên quan đến trap.
Cấu trúc gói tin SNMP GetRequest:
Hình 3. Gói tin SNMP-GetRequest
Các trường của gói tin SNMP-GetRequest trên phần mềmWireshark trong hình 9.10:
- Version: phiên bản là 1
- Community: chuổi xác thực manager gửi agent là “private”. Chuổi này có 3 dạng: read community (chứa trong GetRequest/GetNextRequest PDU), write community (chứa trong SetRequest PDU) và trap community (chứa trong Trap PDU).
- request – id: id của request là 13438.
- error-status: có giá trị 0 – không có lỗi, manager gửi GetRequest thành công.
- error-index: có giá trị 0 – không có OID bị lỗi.
- variable – bindings: 1 item tương đương 1 cặp OID – value.
- OID = 1.3.6.1.2.1.1.2.0 (tên object là sysObjectID). Value của request ban đầu không có giá trị.
Cấu trúcgói tin SNMP GetReponse:
Hình 4 Gói tin SNMP GetReponse
Các trường của gói tin SNMP-GetReponsetrên phần mềmWireshark trong hình 9.11:
- Version: phiên bản là 1.
- Community: chuổi xác thực giữa manager và agent là “private”.
- request – id: id của request là 2731.
- error-status: có giá trị 0 nghĩa là không có lỗi, gữi trả lời về cho request thành công.
- error-index: có giá trị 0 nghĩa là không có OID bị lỗi.
- variable-bindings: 1 cặp OID/value. OID bằng 1.3.6.1.2.1.1.2.0 và value bằng 1.3.6.1.4.1.9.1.222của agent gửi về cho manager.
0 Nhận xét