Sau mỗi ca tác động, câu hỏi đầu tiên luôn là: cấu hình đã thay đổi đúng như CR chưa? Cách chắc chắn nhất là so sánh cấu hình router (hoặc switch) giữa bản lấy trước giờ tác động và bản lấy ngay sau khi xong. Nếu so bằng mắt hoặc bằng công cụ diff dòng thông thường, bạn sẽ chìm trong hàng trăm dòng khác nhau vô nghĩa: mốc thời gian, bộ đếm, thứ tự khối bị đảo. Bài này đưa ra quy trình 5 bước mà đội vận hành có thể áp dụng ngay.
Bước 1. Lấy bản cấu hình trước và sau, cùng một lệnh
Hai bản phải được lấy bằng cùng một lệnh, cùng tùy chọn, nếu không phần khác nhau sẽ toàn là do định dạng. Nhớ tắt phân trang trước khi xuất để không bị cắt mất dòng.
| Hãng | Tắt phân trang | Xuất cấu hình |
|---|---|---|
| Cisco IOS / IOS-XE / NX-OS | terminal length 0 | show running-config |
| Huawei VRP | screen-length 0 temporary | display current-configuration |
| Juniper Junos | set cli screen-length 0 | show configuration | display set | no-more |
| Nokia SR OS (classic) | environment no more | admin display-config |
| Nokia SR OS (MD-CLI) | environment more false | admin show configuration |
| ZTE ZXR10 | terminal length 0 | show running-config |
Đặt tên file theo mẫu <tên-node>_truoc_<ngày>.txt và <tên-node>_sau_<ngày>.txt để sau này tra lại dễ. Bảng lệnh đầy đủ cho nhiều hãng có trong bài lệnh xuất cấu hình router, switch theo từng hãng.
Bước 2. Bỏ các dòng nhiễu
Có những dòng lần nào xuất cũng khác dù cấu hình không đổi. Nếu không lọc, chúng che mất thay đổi thật:
- Dòng ghi thời điểm:
! Last configuration change at …,! NVRAM config last updated …, phần đầu file của Huawei/Nokia ghi ngày giờ xuất. - Dòng
Building configuration…,Current configuration : … bytes. - Mật khẩu đã mã hóa: một số thiết bị sinh lại chuỗi băm mỗi lần lưu, nên hai bản luôn khác dù mật khẩu không đổi.
- Khoảng trắng cuối dòng, dòng trống, dấu
!hay#ngăn cách.
Description của cổng là trường hợp tùy: nếu CR có đổi description thì giữ lại, còn không thì có thể bỏ qua để bảng so gọn hơn.
Bước 3. So theo khối, không so theo dòng
Cấu hình router có cấu trúc khối: interface, vlan, router bgp, router ospf, vrf… Công cụ diff dòng (như diff hay so sánh văn bản thông thường) chỉ thấy dòng thêm/bớt, không biết dòng đó thuộc cổng nào. Khi thiết bị in lại khối theo thứ tự khác, diff dòng báo sai hàng loạt.
So theo khối nghĩa là ghép từng khối của bản trước với khối cùng tên ở bản sau, rồi mới so phần bên trong. Kết quả đọc được ngay dạng: interface GigabitEthernet0/0/1: thêm dòng service-policy output QOS-OUT. Đây cũng là cách để đối chiếu từng dòng với nội dung CR đã duyệt.
Một số hệ điều hành có sẵn lệnh so sánh trên thiết bị, nên tận dụng khi được:
- Juniper: trong chế độ cấu hình,
show | comparecho thấy thay đổi chưa commit;show | compare rollback 1so với bản commit trước. - Cisco IOS có tính năng Configuration Archive:
show archive config differencesso hai bản cấu hình đã lưu.
Nhưng lệnh trên thiết bị chỉ so được với bản chính thiết bị đó lưu. Khi cần so hàng chục node, hay so với bản sao lưu từ tuần trước, vẫn phải lấy file về so ở ngoài.
Bước 4. Sinh lệnh áp dụng và lệnh rollback
Từ bảng khác nhau theo khối, có thể sinh hai bộ lệnh:
- Lệnh áp dụng: biến bản trước thành bản sau. Dùng để rà lại script đã chạy, hoặc chạy cho node khác cùng cấu hình.
- Lệnh rollback: biến bản sau trở về bản trước. Với dòng được thêm thì sinh dạng phủ định (
no …trên Cisco/ZTE,undo …trên Huawei,delete …với Junos dạng set); với dòng bị xóa thì thêm lại.
Lệnh rollback sinh tự động chỉ là bản nháp. Một số thay đổi không đảo ngược được bằng cách thêm no (ví dụ đổi IP trên cổng đang dùng để quản lý, đổi AS number). Luôn đọc lại và thử trên lab nếu có. Với Junos, commit confirmed kèm số phút là lưới an toàn tốt: nếu mất kết nối và không xác nhận lại, thiết bị tự quay về bản cũ.
Bước 5. Lưu hồ sơ cùng CR
Đính kèm vào hồ sơ CR ba thứ: file trước, file sau và bảng so sánh (HTML hoặc Excel). Lần sau có sự cố, chỉ cần mở lại để biết chính xác ca nào đã đổi dòng nào. Nhiều đội còn lưu bản sau làm "bản chuẩn" để lần tác động kế tiếp so với nó, phát hiện thay đổi ngoài CR (cấu hình ai đó sửa tay).
Lỗi hay gặp khi so sánh cấu hình
- Lấy bản trước bằng
show running-confignhưng bản sau bằngshow startup-config: khác nhau vì chưa lưu, không phải vì tác động. - Quên tắt phân trang, file bị chèn
--More--giữa chừng. - Copy từ phần mềm terminal bị ngắt dòng dài, làm một lệnh thành hai dòng.
- So bản trước của node A với bản sau của node B do đặt tên file lộn xộn.
Công cụ So sánh cấu hình mạng (trước / sau) làm sẵn bước 2 đến bước 4: so theo khối interface/vlan/router, bỏ dòng thời gian và description, gợi ý lệnh áp dụng và lệnh rollback, xuất HTML hai cột để đính kèm CR. Muốn soạn cả hồ sơ CR thì xem Soạn CR tác động mạng, và soát định tuyến nhiều router sau tác động thì dùng Soát định tuyến BGP/OSPF/VRF.
Câu hỏi thường gặp
Tại sao so sánh cấu hình bằng diff thông thường lại báo quá nhiều khác biệt?
Vì diff so theo dòng nên tính cả dòng thời gian, mật khẩu băm lại và các khối bị in theo thứ tự khác. So theo khối (interface, vlan, router…) và bỏ dòng nhiễu trước sẽ chỉ còn thay đổi thật.
Juniper so sánh cấu hình với bản trước thế nào?
Trong chế độ cấu hình gõ show | compare để xem thay đổi chưa commit, hoặc show | compare rollback 1 để so với bản đã commit trước đó.
Lệnh rollback sinh tự động có chạy thẳng được không?
Nên coi là bản nháp. Một số thay đổi như đổi IP quản lý hay AS number không quay lại được chỉ bằng no/undo. Hãy đọc lại, thử trên lab nếu có, và với Junos dùng commit confirmed làm lưới an toàn.