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
|
Manager 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.