Friday, November 1, 2024

Backup cấu hình của các thiết bị Cisco bằng container

-

1. Tổng quan.

Cisco là một công ty đa quốc gia của Mỹ chuyên sản xuất và cung cấp các thiết bị và dịch vụ mạng, viễn thông và công nghệ thông tin. Cisco được biết đến nhiều nhất với các sản phẩm mạng như các thiết bị định tuyến (router), chuyển mạch (switch), bộ định tuyến không dây (wireless router), thiết bị bảo mật mạng (firewall), và các giải pháp hạ tầng mạng.

Việc backup định kỳ file cấu hình của Cisco là một thủ tục quan trọng để đảm bảo tính an toàn, dự phòng, và khôi phục trong mạng thông tin của bạn.

  • Đảm bảo an toàn dữ liệu: File cấu hình chứa các thiết lập và cấu hình của thiết bị mạng. Việc backup định kỳ giúp đảm bảo rằng dữ liệu này được sao lưu an toàn và có thể khôi phục khi cần thiết. Nếu xảy ra sự cố như hỏng phần cứng, lỗi cấu hình, tấn công độc hại hoặc lỗi người dùng, bạn có thể khôi phục các thiết lập mạng từ bản sao lưu.
  • Dự phòng và khôi phục: Backup định kỳ là một phần quan trọng trong chiến lược dự phòng và khôi phục. Nó giúp đảm bảo rằng bạn có một bản sao lưu của cấu hình hiện tại và bạn có thể phục hồi hệ thống nhanh chóng sau sự cố.
  • Quản lý thiết bị: Việc backup định kỳ cho phép bạn quản lý và kiểm soát các cấu hình trên các thiết bị mạng của mình. Nếu bạn thay đổi cấu hình mạng hoặc thêm mới các tính năng, bạn có thể lưu trữ bản sao lưu trước và phục hồi lại nếu cần.
  • Nghiên cứu và phân tích: Backup cấu hình cũng hỗ trợ các hoạt động nghiên cứu và phân tích. Nếu bạn muốn nghiên cứu sự thay đổi trong cấu hình hoặc phân tích hiệu suất mạng theo thời gian, có các bản sao lưu cấu hình trước đó là vô cùng hữu ích.
  • Tuân thủ và bảo mật: Trong môi trường mạng doanh nghiệp, việc backup cấu hình cũng có thể là yêu cầu bởi chính sách bảo mật và tuân thủ của tổ chức. Nó giúp đảm bảo tính bảo mật và tuân thủ các quy định về dữ liệu và cấu hình mạng.

2. Thực hiện backup cấu hình Cisco bằng Docker Container.

Lý do mình thực hiện Backup bằng Docker là vì việc sử dụng container mang lại nhiều ưu điểm vượt trội, và một trong những ưu điểm quan trọng nhất của container là tính di động và độc lập với môi trường. Có nghĩa là không giới hạn hệ điều hành, bạn có thể sử dụng Linux, Windows,… miễn là bạn có thể cài được Docker là nó chạy được.

Container là một công nghệ cho phép bạn đóng gói ứng dụng và các phụ thuộc của nó (thư viện, môi trường thực thi, các file cấu hình) vào một gói đơn nhất. Các container cô lập ứng dụng và các thành phần của chúng khỏi hệ thống máy chủ và các container khác, nhưng chia sẻ hạt nhân của hệ điều hành. Điều này làm cho việc triển khai ứng dụng linh hoạt, di động, và dễ dàng.

Docker là một công cụ mã nguồn mở dùng để tạo, triển khai và quản lý các container. Nó cung cấp môi trường chạy đa nền tảng và đơn giản hóa quá trình đóng gói và triển khai ứng dụng. Docker đã giúp thúc đẩy sự phát triển của container và là một trong những công nghệ container phổ biến nhất trên thị trường.

Bước 1– Cài đặt Docker.

Nếu bạn sử dụng Ubuntu thì hãy cài đặt Docker theo hướng dẫn https://wiki.hoanghd.com/cai-dat-docker-tren-ubuntu/.

Nếu bạn dùng hệ điều hành khách thì hãy Google hoặc xem trang chủ https://docs.docker.com/engine/install/

Bước 2 – Khởi tạo một thư mục lưu trữ file backup.

mkdir -p /home/cisco-backup-config

Bước 3 – Thực hiện Docker run.

Image này do mình tự build với 2 phiên bản.

  • hoanghd164/backup-cisco:1.0.1: chạy Ubuntu 20.04.
  • hoanghd164/backup-cisco:1.0.2: chạy Ubuntu 18.04.

Mình có lời khuyên hãy sử dụng version 1.0.2 nếu các thiết bị Cisco của bạn là thiết bị đời cũ vì phiên bản ssh trên Ubuntu 18.04 tương thích với các thiết bị cũ nhiều hơn.

Nếu bạn nào sử dụng các thiết bị Cisco đời mới có thể sử dụng version 1.0.1 chạy Ubuntu 20.04.

Cú pháp:

docker run --name=cisco-backup-config --rm \
    -e USERNAME=<username> \
    -e PASSWD=<password> \
    -e TIMEOUT=10 \
    -e ARRAY='<danh sách địa chỉ IP phân biệt bằng khoảng trắng>' \
    -v <thư mục lưu file backup>:/backup-cisco \
    hoanghd164/backup-cisco:1.0.2

Ví dụ:

docker run --name=cisco-backup-config --rm \
    -e USERNAME=hoanghd \
    -e PASSWD=Hoanghd164 \
    -e TIMEOUT=10 \
    -e ARRAY='192.168.123.2 192.168.100.1 192.168.100.2 192.168.100.3 192.168.100.4 192.168.100.5 192.168.100.6 192.168.100.7 192.168.100.8' \
    -v /home/cisco-backup-config:/backup-cisco \
    hoanghd164/backup-cisco:1.0.2

Lệnh Docker trên có chức năng chạy một container từ image hoanghd164/backup-cisco:1.0.2 để sao lưu cấu hình của các thiết bị mạng Cisco. Dưới đây là giải thích ý nghĩa các tham số:

  • docker run: Lệnh để chạy một container từ image.
  • --name=cisco-backup-config: Đặt tên cho container là “cisco-backup-config”.
  • --rm: Khi container kết thúc, tự động xóa container đi, để giải phóng tài nguyên.
  • -e USERNAME=hoanghd: Thiết lập biến môi trường USERNAME trong container là “hoanghd”.
  • -e PASSWD=Hoanghd164: Thiết lập biến môi trường PASSWD trong container là “Hoanghd164”.
  • -e TIMEOUT=10: Thiết lập biến môi trường TIMEOUT trong container là 10, có thể dùng để xác định thời gian timeout khi kết nối tới các thiết bị mạng.
  • -e ARRAY='192.168.123.2 192.168.100.1 192.168.100.2 ...': Thiết lập biến môi trường ARRAY trong container là danh sách các địa chỉ IP của các thiết bị mạng Cisco cần sao lưu cấu hình. Danh sách các địa chỉ IP được cách nhau bằng khoảng trắng.
  • -v /home/cisco-backup-config:/backup-cisco: Gắn thư mục /home/cisco-backup-config trên máy host với thư mục /backup-cisco trong container. Điều này cho phép sao lưu cấu hình được lưu trong thư mục /home/cisco-backup-config trên máy host.
  • hoanghd164/backup-cisco:1.0.2: Tên và phiên bản của image được sử dụng để chạy container.

Với cấu hình này, container được tạo ra để thực hiện sao lưu cấu hình của các thiết bị mạng Cisco được liệt kê trong biến ARRAY. Sau khi container hoàn thành công việc, nó sẽ tự động bị xóa bỏ khỏi hệ thống. Kết quả của sao lưu cấu hình sẽ được lưu trong thư mục /home/cisco-backup-config trên máy host.

Lưu ý: Hai trường USERNAME và PASSWD chính là thông tin Username và Password SSH của thiết bị.

Dưới đây là hình ảnh chụp quá trình chạy và nơi chứa file cấu hình mà bạn đã chọn.

Bước 4 – Kiếm tra kết quả sau khi chạy backup

Mình sẽ cho cách bạn xem danh sách cây thư mục và file sau khi backup xong.

$ tree /home/cisco-backup-config
/home/cisco-backup-config
├── 192.168.100.1
│   └── 2023-07-21
│       ├── config_192.168.100.1.conf
│       └── vlan_192.168.100.1.conf
├── 192.168.100.2
│   └── 2023-07-21
│       ├── config_192.168.100.2.conf
│       └── vlan_192.168.100.2.conf
├── 192.168.100.3
│   └── 2023-07-21
│       ├── config_192.168.100.3.conf
│       └── vlan_192.168.100.3.conf
├── 192.168.100.4
│   └── 2023-07-21
│       ├── config_192.168.100.4.conf
│       └── vlan_192.168.100.4.conf
├── 192.168.100.5
│   └── 2023-07-21
│       ├── config_192.168.100.5.conf
│       └── vlan_192.168.100.5.conf
├── 192.168.100.6
│   └── 2023-07-21
│       ├── config_192.168.100.6.conf
│       └── vlan_192.168.100.6.conf
├── 192.168.100.7
│   └── 2023-07-21
│       ├── config_192.168.100.7.conf
│       └── vlan_192.168.100.7.conf
├── 192.168.100.8
│   └── 2023-07-21
│       ├── config_192.168.100.8.conf
│       └── vlan_192.168.100.8.conf
├── 192.168.123.2
│   └── 2023-07-21
│       ├── config_192.168.123.2.conf
│       └── vlan_192.168.123.2.conf
└── note.sh

18 directories, 19 files

Đây là ví dụ hình ảnh nội dung backup thông tin Vlan, mình sẽ không backup file vlan.dat mà sẽ lấy thông tin vlanid và tên của vlan và thêm nó vào 1 file như dưới. Sau này khi đưa sang thiết bị mới mình chỉ cần copy dán là xong.

Còn đây là file config.

Bước 5 – Tạo lịch backup hàng ngày.

Hãy nhìn lên cây thư mục trên bạn cũng có thể thấy bản backup sẽ phân chia theo ngày nên mình khuyên các bạn hãy đưa nó vào Crontab (trên Linux) hoặc Task Scheduler (trên Windows) để lập lịch cho nó chạy hàng ngày.

Mình không có máy Windows nên mình sẽ hướng dẫn sử dụng Crontab trên Linux.

Hãy xem lại bài https://wiki.hoanghd.com/20-vi-du-de-hieu-ve-crontab-tren-he-dieu-hanh-linux/ của mình để hiểu hơn về Crontab nếu bạn chưa biết nó là gì.

Hãy tạo file script và dán nội dung đoạn Docker run ví dụ như sau.

cat > /home/cisco-backup-config.sh << 'OEF'
#!/bin/bash
docker run --name=cisco-backup-config --rm \
    -e USERNAME=hoanghd \
    -e PASSWD=Hoanghd164 \
    -e TIMEOUT=10 \
    -e ARRAY='192.168.123.2 192.168.100.1 192.168.100.2 192.168.100.3 192.168.100.4 192.168.100.5 192.168.100.6 192.168.100.7 192.168.100.8' \
    -v /home/cisco-backup-config:/backup-cisco \
    hoanghd164/backup-cisco:1.0.2
OEF

Phân quyền thực thi cho file này.

chmod +x /home/cisco-backup-config.sh

Để thêm một tác vụ cron hàng ngày, bạn có thể sử dụng lệnh crontab -e hoặc dùng vi để mở file /etc/crontab để mở bảng lệnh cron và sau đó thêm tác vụ vào đó.

vi /etc/crontab

Thêm vào nội dung này, ý nghĩa của nó là tác vụ trong file cron sẽ chạy một lần hàng ngày vào lúc 1 giờ sáng theo múi giờ của máy chủ. Bạn có thể thay đổi giờ và phút để định cấu hình thời gian chạy theo nhu cầu của bạn.

0 0 * * * root ./home/cisco-backup-config.sh

Nhớ khởi động lại dịch vụ Crontab.

systemctl restart cron

Chúc các bạn thành công.

LEAVE A REPLY

Please enter your comment!
Please enter your name here

4,956FansLike
256FollowersFollow
223SubscribersSubscribe
spot_img

Related Stories