Xin chào ! Nếu đây là lần đầu tiên bạn đến với diễn đàn, xin vui lòng danh ra một phút bấm vào đây để đăng kí và tham gia thảo luận cùng VnPro.

Announcement

Collapse
No announcement yet.

Lab : Sử dụng NETCONF kết nối đến thiết bị IOS XE ( Phần 1 )

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • Lab : Sử dụng NETCONF kết nối đến thiết bị IOS XE ( Phần 1 )

    Sơ đồ :



    Bảng địa chỉ :


    Mục tiêu :
    • Part 1: Xây dựng mạng và kiểm tra kết nối
    • Part 2: Sử dụng NETCONF Session để thu thập thông tin
    • Part 3: Sử dụng ncclient để kết nối NETCONF
    • Part 4: Sử dụng ncclient để lấy cấu hình
    • Part 5: Sử dụng ncclient để cấu hình
    • Part 6: Sửa đổi chương trình được sử dụng trong lab này
    Bối cảnh/ Kịch bản

    Giao thức cấu hình mạng (NETCONF), được xác định trong RFC 4741 và 6241, sử dụng các mô hình dữ liệu YANG để liên lạc với các thiết bị khác nhau trên mạng. YANG (một thế hệ tiếp theo khác) là một ngôn ngữ mô hình hóa dữ liệu. Ngôn ngữ này xác định dữ liệu được gửi qua các giao thức quản lý mạng, như NETCONF. Khi sử dụng NETCONF để truy cập thiết bị IOS XE, dữ liệu được trả về ở định dạng XML.
    Trong lab này, chúng ta sẽ sử dụng NETCONF client, ncclient, là mô-đun Python để tạo kịch bản (script) phía client. Dùng ncclient để xác minh NETCONF đã được cấu hình, truy xuất cấu hình thiết bị và sửa đổi cấu hình thiết bị.


    Các tài nguyên cần thiết :
    • 1 Router (Cisco 4221 with Cisco IOS XE Release 16.9.4 universal image or comparable)
    • 1 Switch
    • 1 PC (Choice of operating system with Cisco Networking Academy CCNP VM running in a virtual machine client and terminal emulation program)
    • Cáp Ethernet
    Hướng dẫn :

    Part 1 : ​​​​​​Xây dựng mạng và kiểm tra kết nối

    Ghi chú: Bỏ qua Phần 1 nếu bạn đã hoàn thành nó trong lab trước đó. Tuy nhiên, hãy chắc chắn máy ảo CCNP của bạn có thể ping R1.
    Trong Phần 1, bạn sẽ nối cáp các thiết bị, khởi động CCNP VM, cấu hình R1 để truy cập NETCONF và RESTCONF qua kết nối SSH. Sau đó, bạn sẽ xác minh kết nối giữa CCNP VM và R1 cũng như kiểm tra kết nối SSH với R1.

    Step 1: Cáp mạng như được hiển thị trong cấu trúc liên kết.

    Kết nối các thiết bị như sơ đồ cấu trúc liên kết và cáp nếu cần.

    Step 2: Mở máy ảo CCNP VM.

    Lưu ý: Nếu bạn chưa hoàn thành Lab - Cài đặt Máy ảo CCNP, hãy thực hiện ngay trước khi tiếp tục với lab này.
    a. Mở VirtualBox. Khởi động máy ảo CCNP VM.
    b. Nhập mật khẩu StudentPass để đăng nhập VM nếu cần.

    Step 3: Cấu hình R1.

    Đi vào R1 và dán cấu hình sau vào CLI để cấu hình các cài đặt cơ bản và bật NETCONF, RESTCONF và SSH.
    Code:
    [FONT=Courier New]enable[/FONT]
    [FONT=Courier New]configure terminal[/FONT]
    [FONT=Courier New]hostname R1[/FONT]
    [FONT=Courier New]no ip domain lookup[/FONT]
    [FONT=Courier New]line con 0[/FONT]
    [FONT=Courier New]logging synchronous[/FONT]
    [FONT=Courier New]exec-timeout 0 0[/FONT]
    [FONT=Courier New]logging synchronous[/FONT]
    [FONT=Courier New]line vty 0 15[/FONT]
    [FONT=Courier New]exec-t 0 0[/FONT]
    [FONT=Courier New]logg sync[/FONT]
    [FONT=Courier New]login local[/FONT]
    [FONT=Courier New]transport input ssh[/FONT]
    [FONT=Courier New]ip domain name example.netacad.com[/FONT]
    [FONT=Courier New]crypto key generate rsa modulus 2048[/FONT]
    [FONT=Courier New]username cisco priv 15 password cisco123![/FONT]
    [FONT=Courier New]interface GigabitEthernet0/0/1[/FONT]
    [FONT=Courier New]description Link to PC[/FONT]
    [FONT=Courier New]ip address 192.168.1.1 255.255.255.0[/FONT]
    [FONT=Courier New]no shutdown[/FONT]
    [FONT=Courier New]ip dhcp excluded-address 192.168.1.1 192.168.1.10[/FONT]
    [FONT=Courier New]!Configure a DHCP server to assign IPv4 addressing to the CCNP VM[/FONT]
    [FONT=Courier New]ip dhcp pool LAN[/FONT]
    [FONT=Courier New]network 192.168.1.0 /24[/FONT]
    [FONT=Courier New]default-router 192.168.1.1[/FONT]
    [FONT=Courier New]domain-name example.netacad.com[/FONT]
    [FONT=Courier New]end[/FONT]
    [FONT=Courier New]copy run start[/FONT]
    Step 4: Xác minh CCNP VM có thể ping default gateway.

    a. Trong CCNP VM, mở cửa sổ terminal
    b. Xác minh CCNP VM được kết nối với R1 bằng cách nhập địa chỉ IP để xác minh rằng CCNP VM đã nhận địa chỉ IP từ máy chủ DHCP, hoặc đơn giản bằng cách ping R1 ở 192.168.1.1. Nhập Ctrl + C để thoát ra khỏi ping, như thể hiện trong ví dụ bên dưới.
    Code:
    [FONT=Courier New]student@CCNP:~$ [B]ip address[/B][/FONT]
    [FONT=Courier New]1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000[/FONT]
    [FONT=Courier New]link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00[/FONT]
    [FONT=Courier New]inet 127.0.0.1/8 scope host lo[/FONT]
    [FONT=Courier New]valid_lft forever preferred_lft forever[/FONT]
    [FONT=Courier New]inet6 ::1/128 scope host[/FONT]
    [FONT=Courier New]valid_lft forever preferred_lft forever[/FONT]
    [FONT=Courier New]2: ens160: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000[/FONT]
    [FONT=Courier New]link/ether 00:50:56:b3:72:3b brd ff:ff:ff:ff:ff:ff[/FONT]
    [FONT=Courier New]inet 192.168.1.15/24 brd 192.168.1.255 scope global dynamic noprefixroute ens160[/FONT]
    [FONT=Courier New]valid_lft 79564sec preferred_lft 79564sec[/FONT]
    [FONT=Courier New]inet6 fe80::1ae4:952f:402d:6b1/64 scope link noprefixroute[/FONT]
    [FONT=Courier New]valid_lft forever preferred_lft forever[/FONT]
    [FONT=Courier New]3: ens192: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000[/FONT]
    [FONT=Courier New]link/ether 00:50:56:b3:26:b6 brd ff:ff:ff:ff:ff:ff[/FONT]
    [FONT=Courier New]inet 192.168.50.183/24 brd 192.168.50.255 scope global dynamic noprefixroute ens192[/FONT]
    [FONT=Courier New]valid_lft 70687sec preferred_lft 70687sec[/FONT]
    [FONT=Courier New]inet6 fe80::4c87:a2b3:aa9:5470/64 scope link noprefixroute[/FONT]
    [FONT=Courier New]valid_lft forever preferred_lft forever[/FONT]
    
    [FONT=Courier New]student@CCNP:~$ [B]ping 192.168.1.1[/B][/FONT]
    [FONT=Courier New]PING 192.168.1.1 (192.168.1.1) 56(84) bytes of data.[/FONT]
    [FONT=Courier New]64 bytes from 192.168.1.1: icmp_seq=1 ttl=255 time=0.703 ms[/FONT]
    [FONT=Courier New]64 bytes from 192.168.1.1: icmp_seq=2 ttl=255 time=0.748 ms[/FONT]
    [FONT=Courier New]64 bytes from 192.168.1.1: icmp_seq=3 ttl=255 time=0.757 ms[/FONT]
    [FONT=Courier New]^C[/FONT]
    [FONT=Courier New]--- 192.168.1.1 ping statistics ---[/FONT]
    [FONT=Courier New]3 packets transmitted, 3 received, 0% packet loss, time 2033ms[/FONT]
    [FONT=Courier New]rtt min/avg/max/mdev = 0.703/0.736/0.757/0.023 ms[/FONT]
    c. Nếu máy ảo CCNP chưa nhận được địa chỉ IPv4, hãy kiểm tra các kết nối vật lý của bạn giữa PC chủ và R1. Ngoài ra, xác minh rằng R1 được cấu hình đúng theo bước trước.

    Step 5: Thiết lập kết nối SSH trên R1.

    a. Mở PuTTY SSH Client.
    b. NHập địa chỉ IP cho default gateway, 192.168.1.1, va nhấn Open.
    c. Chúng ta có thể đăng nhập với username cisco và password cisco123!. Nếu không kiểm tra lại phần cấu hình SSH trên R1.
    d. Giữ phiên PUTTY mở.


    Part 2: Sử dụng NETCONF Session để thu thập thông tin

    Trong Phần 2, bạn sẽ kiểm tra xem NETCONF đã chạy chưa, bật NETCONF nếu không và xác minh rằng NETCONF đã sẵn sàng cho kết nối SSH. Sau đó, bạn sẽ kết nối quy trình NETCONF, bắt đầu phiên NETCONF, thu thập thông tin giao diện và đóng phiên.

    Step 1: Kiểm tra NETCONF đang chạy trên R1.
    ​​​​​​
    a. NETCONF có thể đã chạy nếu một người khác kích hoạt nó hoặc nếu phiên bản iOS mới hơn kích hoạt nó theo mặc định. Từ thiết bị đầu cuối PuTTY, sử dụng lệnh quy trình quản lý yang phần mềm nền tảng chương trình để xem daemon NETCONF SSH (ncsshd) có đang chạy không.
    Code:
    [FONT=Courier New]R1# [B]show platform software yang-management process[/B][/FONT]
    [FONT=Courier New]confd : Not Running[/FONT]
    [FONT=Courier New]nesd : Not Running[/FONT]
    [FONT=Courier New]syncfd : Not Running[/FONT]
    [FONT=Courier New]ncsshd : Not Running[/FONT]
    [FONT=Courier New]dmiauthd : Not Running[/FONT]
    [FONT=Courier New]nginx : Running[/FONT]
    [FONT=Courier New]ndbmand : Not Running[/FONT]
    [FONT=Courier New]pubd : Not Running[/FONT]
    b. Nếu NETCONF không chạy như hiển thị trong đầu ra ở trên, hãy nhập lệnh cấu hình netconf-yang.
    Code:
    [FONT=Courier New]R1# [B]config t[/B][/FONT]
    [FONT=Courier New]R1(config)# [B]netconf-yang[/B][/FONT]
    c. Bây giờ kiểm tra lại NETCONF đang chạy chưa.
    Code:
    [FONT=Courier New]R1# [B]show platform software yang-management process[/B][/FONT]
    [FONT=Courier New]confd : Running[/FONT]
    [FONT=Courier New]nesd : Running[/FONT]
    [FONT=Courier New]syncfd : Running[/FONT]
    [FONT=Courier New]ncsshd : Running[/FONT]
    [FONT=Courier New]dmiauthd : Running[/FONT]
    [FONT=Courier New]nginx : Running[/FONT]
    [FONT=Courier New]ndbmand : Running[/FONT]
    [FONT=Courier New]pubd : Running[/FONT]
    Step 2: Truy nhập tiến trình NETCONF qua SSH terminal.

    Bạn có thể thiết lập phiên SSH với R1 bằng PuTTY. Tuy nhiên, chức năng sao chép và dán trong cửa sổ thiết bị đầu cuối PuTTY bên trong CCNP VM có thể gặp vấn đề. Do đó, sử dụng cửa sổ dòng lệnh để bắt đầu phiên SSH với R1.

    a. Nhập lệnh sau trong cửa sổ terminal. Sau đó nhập cisco123! làm mật khẩu. Nếu bạn nhập lệnh không chính xác, hãy sử dụng phím mũi tên lên để gọi lại lệnh bạn nhập, sau đó tìm và chỉnh sửa lỗi của bạn.
    Code:
    [FONT=Courier New]student@CCNP:~$ [B]ssh -oHostKeyAlgorithms=+ssh-dss cisco@192.168.1.1 -p 830 -s netconf[/B][/FONT]
    [FONT=Courier New]cisco@192.168.1.1's password:[/FONT]
    b. R1 sẽ trả lời bằng một tin nhắn xin chào bao gồm tất cả các capabilities của nó. Phần cuối của tin nhắn được xác định bằng ]]>]]>.
    Code:
    [FONT=Courier New]<?xml version="1.0" encoding="UTF-8"?>[/FONT]
    [FONT=Courier New]<hello xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">[/FONT]
    [FONT=Courier New]<capabilities>[/FONT]
    [FONT=Courier New]<capability>urn:ietf:params:netconf:base:1.0</capability>[/FONT]
    [FONT=Courier New]<capability>urn:ietf:params:netconf:base:1.1</capability>[/FONT]
    [FONT=Courier New]<capability>urn:ietf:params:netconf:capability:wri table-running:1.0</capability>[/FONT]
    [FONT=Courier New]<capability>urn:ietf:params:netconf:capability:xpa th:1.0</capability>[/FONT]
    [FONT=Courier New]<capability>urn:ietf:params:netconf:capability:val idate:1.0</capability>[/FONT]
    [FONT=Courier New]<capability>urn:ietf:params:netconf:capability:val idate:1.1</capability>[/FONT]
    [FONT=Courier New]<capability>urn:ietf:params:netconf:capability:rol lback-on-error:1.0</capability>[/FONT]
    [FONT=Courier New]<capability>urn:ietf:params:netconf:capability:not ification:1.0</capability>[/FONT]
    [FONT=Courier New]<capability>urn:ietf:params:netconf:capability:int erleave:1.0</capability>[/FONT]
    [FONT=Courier New]<capability>urn:ietf:params:netconf:capability:wit h-defaults:1.0?basic-mode=explicit&amp;also-supported=report-all-tagged</capability>[/FONT]
    [FONT=Courier New]<capability>urn:ietf:params:netconf:capability:yan g-library:1.0?revision=2016-06-21&amp;module-set-id=d26d4d9ff23c0afcad7994ca2b832a9b</capability>[/FONT]
    [FONT=Courier New]<capability>http://tail-f.com/ns/netconf/actions/1.0</capability>[/FONT]
    [FONT=Courier New]<capability>http://tail-f.com/ns/netconf/extensions</capability>[/FONT]
    [FONT=Courier New](output omitted)[/FONT]
    [FONT=Courier New]<capability>urn:ietf:params:xml:ns:yang:ietf-netconf-with-defaults?module=ietf-netconf-with-defaults&amp;revision=2011-06-01</capability>[/FONT]
    [FONT=Courier New]<capability>[/FONT]
    [FONT=Courier New]urn:ietf:params:netconf:capability:notification:1. 1[/FONT]
    [FONT=Courier New]<output omitted>[/FONT]
    [FONT=Courier New]</capability>[/FONT]
    [FONT=Courier New]</capabilities>[/FONT]
    [FONT=Courier New]<session-id>20</session-id></hello>]]>]]>[/FONT]
    Step 3: Bắt đầu phiên NETCONF bằng cách gửi tin nhắn xin chào từ client.

    Để bắt đầu một phiên NETCONF, khách hàng cần gửi tin nhắn xin chào của riêng mình. Thông báo xin chào phải bao gồm phiên bản capabilities cơ bản của NETCONF mà khách hàng muốn sử dụng.

    a. Sao chép và dán mã XML sau vào phiên SSH. Lưu ý rằng phần cuối của thông điệp xin chào của client được xác định bằng ]]>]]>.
    Code:
    [FONT=Courier New]<hello xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">[/FONT]
    [FONT=Courier New]<capabilities>[/FONT]
    [FONT=Courier New]<capability>urn:ietf:params:netconf:base:1.0</capability>[/FONT]
    [FONT=Courier New]</capabilities>[/FONT]
    [FONT=Courier New]</hello>[/FONT]
    [FONT=Courier New]]]>]]>[/FONT]
    b. Trên R1, sử dụng lệnh show netconf-yang sessions để kiểm tra phiên NETCONF đã được bắt đầu.
    Code:
    [FONT=Courier New]R1# [B]show netconf-yang sessions[/B][/FONT]
    [FONT=Courier New]R: Global-lock on running datastore[/FONT]
    [FONT=Courier New]C: Global-lock on candidate datastore[/FONT]
    [FONT=Courier New]S: Global-lock on startup datastore[/FONT]
    
    [FONT=Courier New]Number of sessions : 1[/FONT]
    
    [FONT=Courier New]session-id transport username source-host global-lock[/FONT]
    [FONT=Courier New]-------------------------------------------------------------------------------[/FONT]
    [FONT=Courier New]20 netconf-ssh cisco 192.168.1.12 None[/FONT]
    Step 4: Gửi tin nhắn RPC đến thiết bị IOS XE.

    Trong phiên SSH, NETCONF client có thể dùng tin nhắn Remote Procedure Call (RPC) để gửi NETCONF operations đến thiết bị IOS XE. Bảng sau sẽ liệt kê những NETCONF operations thường được sử dụng.



    a. Sao chép và dán RPC sau nhận mã XML thông báo vào phiên SSH cuối cùng để truy xuất thông tin về các giao diện trên R1.
    Code:
    [FONT=Courier New]<rpc message-id="103" xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">[/FONT]
    [FONT=Courier New]<get>[/FONT]
    [FONT=Courier New]<filter>[/FONT]
    [FONT=Courier New]<interfaces xmlns="urn:ietf:params:xml:ns:yang:ietf-interfaces"/>[/FONT]
    [FONT=Courier New]</filter>[/FONT]
    [FONT=Courier New]</get>[/FONT]
    [FONT=Courier New]</rpc>
    ]]>]]>[/FONT]
    b. Hãy nhớ lại rằng XML không yêu cầu thụt lề hoặc khoảng trắng. Do đó, R1 sẽ trả về một chuỗi dữ liệu XML dài.
    Code:
    <?xml version="1.0" encoding="UTF-8"?>
    <rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="103"><data><interfaces xmlns="urn:ietf:params:xml:ns:yang:ietf-interfaces"><interface><name>GigabitEthernet0</name><type xmlns:ianaift="urn:ietf:params:xml:ns:yang:iana-if-type">ianaift:ethernetCsmacd</type><enabled>true</enabled><ipv4 xmlns="urn:ietf:params:xml:ns:yang:ietf-ip"></ipv4><ipv6 xmlns="urn:ietf:params:xml:ns:yang:ietf-ip"></ipv6></interface><interface><name>GigabitEthernet0/0/0</name><type xmlns:ianaift="urn:ietf:params:xml:ns:yang:iana-if-type">ianaift:ethernetCsmacd</type><enabled>true</enabled><ipv4 xmlns="urn:ietf:params:xml:ns:yang:ietf-ip"></ipv4><ipv6 xmlns="urn:ietf:params:xml:ns:yang:ietf-ip"></ipv6></interface><interface><name>GigabitEthernet0/0/1</name><description>Link to PC</description><type xmlns:ianaift="urn:ietf:params:xml:ns:yang:iana-if-type">ianaift:ethernetCsmacd</type><enabled>true</enabled><ipv4 xmlns="urn:ietf:params:xml:ns:yang:ietf-ip"><address><ip>192.168.1.1</ip><netmask>255.255.255.0</netmask></address></ipv4><ipv6 xmlns="urn:ietf:params:xml:ns:yang:ietf-ip"></ipv6></interface></interfaces></data></rpc-reply>]]>]]>
    Code:
    [SIZE=16px][/SIZE]

    c. Sao chép XML đã được trả về, nhưng không bao gồm các ký tự cuối cùng]]>]]>. Các ký tự này không phải là một phần của XML được bộ định tuyến trả về.
    d. Tìm kiếm trên internet để cải thiện XML dễ nhìn hơn. Tìm một trang web phù hợp và sử dụng công cụ của nó để chuyển đổi XML sang định dạng dễ đọc hơn, chẳng hạn như sau:
    Code:
    [FONT=Courier New]<?xml version="1.0" encoding="UTF-8"?>[/FONT]
    [FONT=Courier New]<rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="103">[/FONT]
    [FONT=Courier New]<data>[/FONT]
    [FONT=Courier New]<interfaces xmlns="urn:ietf:params:xml:ns:yang:ietf-interfaces">[/FONT]
    [FONT=Courier New]<interface>[/FONT]
    [FONT=Courier New]<name>GigabitEthernet0</name>[/FONT]
    [FONT=Courier New]<type xmlns:ianaift="urn:ietf:params:xml:ns:yang:iana-if-type">ianaift:ethernetCsmacd</type>[/FONT]
    [FONT=Courier New]<enabled>true</enabled>[/FONT]
    [FONT=Courier New]<ipv4 xmlns="urn:ietf:params:xml:ns:yang:ietf-ip" />[/FONT]
    [FONT=Courier New]<ipv6 xmlns="urn:ietf:params:xml:ns:yang:ietf-ip" />[/FONT]
    [FONT=Courier New]</interface>[/FONT]
    [FONT=Courier New]<interface>[/FONT]
    [FONT=Courier New]<name>GigabitEthernet0/0/0</name>[/FONT]
    [FONT=Courier New]<type xmlns:ianaift="urn:ietf:params:xml:ns:yang:iana-if-type">ianaift:ethernetCsmacd</type>[/FONT]
    [FONT=Courier New]<enabled>true</enabled>[/FONT]
    [FONT=Courier New]<ipv4 xmlns="urn:ietf:params:xml:ns:yang:ietf-ip" />[/FONT]
    [FONT=Courier New]<ipv6 xmlns="urn:ietf:params:xml:ns:yang:ietf-ip" />[/FONT]
    [FONT=Courier New]</interface>[/FONT]
    [FONT=Courier New]<interface>[/FONT]
    [FONT=Courier New]<name>GigabitEthernet0/0/1</name>[/FONT]
    [FONT=Courier New]<description>Link to PC</description>[/FONT]
    [FONT=Courier New]<type xmlns:ianaift="urn:ietf:params:xml:ns:yang:iana-if-type">ianaift:ethernetCsmacd</type>[/FONT]
    [FONT=Courier New]<enabled>true</enabled>[/FONT]
    [FONT=Courier New]<ipv4 xmlns="urn:ietf:params:xml:ns:yang:ietf-ip">[/FONT]
    [FONT=Courier New]<address>[/FONT]
    [FONT=Courier New]<ip>192.168.1.1</ip>[/FONT]
    [FONT=Courier New]<netmask>255.255.255.0</netmask>[/FONT]
    [FONT=Courier New]</address>[/FONT]
    [FONT=Courier New]</ipv4>[/FONT]
    [FONT=Courier New]<ipv6 xmlns="urn:ietf:params:xml:ns:yang:ietf-ip" />[/FONT]
    [FONT=Courier New]</interface>[/FONT]
    [FONT=Courier New]</interfaces>[/FONT]
    [FONT=Courier New]</data>[/FONT]
    [FONT=Courier New]</rpc-reply>[/FONT]
    Step 5: Đóng phiên NETCONF.

    Để đóng phiên NETCONF, client cần gửi tin nhắn RPC như sau:
    Code:
    [FONT=Courier New]<rpc message-id="9999999" xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">[/FONT]
    [FONT=Courier New]<close-session />[/FONT]
    [FONT=Courier New]</rpc>[/FONT]
    Chúng ta sẽ được đưa trở lại dấu nhắc terminal. Quay trở lại dấu nhắc của router và hiển thị các phiên netconf đang mở. Chúng ta sẽ thấy rằng phiên đã được đóng lại.


    Part 3: Sử dụng ncclient để kết nối NETCONF

    Làm việc với NETCONF không yêu cầu làm việc với các thông điệp RPC và XML thô của NETCONF. Trong Phần 3, bạn sẽ tìm hiểu cách sử dụng mô-đun Python ncclient để dễ dàng tương tác với các thiết bị mạng bằng NETCONF. Ngoài ra, bạn sẽ tìm hiểu cách xác định mô hình YANG nào được thiết bị hỗ trợ. Thông tin này hữu ích khi xây dựng hệ thống tự động hóa mạng sản xuất yêu cầu các mô hình YANG cụ thể được hỗ trợ bởi thiết bị mạng đã cho.

    Step 1: Kiểm tra thư viện nccleint đã được cài đặt và sẵn sàng để sử dụng.

    Nhập lệnh danh sách pip3 --format = cột để xem tất cả các mô-đun Python hiện được cài đặt trong CCNP VM. Đầu ra của bạn có thể khác với sau đây. Nhưng bạn sẽ thấy ncclient được liệt kê, như được hiển thị. Nếu không, sử dụng lệnh sudo pip3 install ncclient để cài đặt nó.
    Code:
    [FONT=Courier New]student@CCNP:~$ [B]pip3 list --format=columns[/B][/FONT]
    [FONT=Courier New]Package Version [/FONT]
    [FONT=Courier New]--------------------- -------------------[/FONT]
    [FONT=Courier New]apturl 0.5.2 [/FONT]
    [FONT=Courier New]asn1crypto 0.24.0 [/FONT]
    [FONT=Courier New](output omitted)[/FONT]
    [FONT=Courier New]ncclient 0.6.7 [/FONT]
    [FONT=Courier New]netifaces 0.10.4 [/FONT]
    [FONT=Courier New]netmiko 3.0.0 [/FONT]
    [FONT=Courier New]oauth 1.0.1 [/FONT]
    [FONT=Courier New]olefile 0.45.1 [/FONT]
    [FONT=Courier New]paramiko 2.7.1 [/FONT]
    [FONT=Courier New]pexpect 4.2.1 [/FONT]
    [FONT=Courier New]Pillow 5.1.0 [/FONT]
    [FONT=Courier New]pip 9.0.1 [/FONT]
    [FONT=Courier New](output omitted)[/FONT]
    [FONT=Courier New]requests 2.22.0 [/FONT]
    [FONT=Courier New]requests-unixsocket 0.1.5 [/FONT]
    [FONT=Courier New]scp 0.13.2 [/FONT]
    [FONT=Courier New](output omitted)[/FONT]
    [FONT=Courier New]xmltodict 0.12.0 [/FONT]
    [FONT=Courier New]zope.interface 4.3.2 [/FONT]
    Step 2: Tạo script sử dụng ncclient để kết nối đến dịch vụ NETCONF.

    Mô đun ncclient cung cấp một lớp trình quản lý với phương thức connect () để thiết lập các kết nối NETCONF từ xa. Sau khi kết nối thành công, đối tượng được trả về biểu thị kết nối NETCONF cho thiết bị từ xa.
    a. Trong Python IDLE, tạo một tệp script Python mới được gọi là ncclient-netconf.py.
    b. Trong trình soạn thảo script Python mới, nhập lớp quản lý từ mô đun ncclient. Sau đó tạo một biến m để biểu diễn phương thức connection (). connection() bao gồm tất cả các thông tin được yêu cầu để kết nối với dịch vụ NETCONF chạy trên R1. Lưu ý rằng cổng là 830 cho NETCONF.
    Code:
    [FONT=Courier New]from ncclient import manager[/FONT]
    
    [FONT=Courier New]m = manager.connect([/FONT]
    [FONT=Courier New]host="192.168.1.1",[/FONT]
    [FONT=Courier New]port=830,[/FONT]
    [FONT=Courier New]username="cisco",[/FONT]
    [FONT=Courier New]password="cisco123!",[/FONT]
    [FONT=Courier New]hostkey_verify=False[/FONT]
    [FONT=Arial])[/FONT]
    Nếu hostkey_verify được đặt thành True, R1 sẽ yêu cầu bạn xác minh dấu vân tay SSH. Trong lab này, chúng ta sẽ đặt giá trị này thành False, như đã thực hiện ở trên.
    c. Lưu và chạy chương trình để xác minh rằng không có lỗi. Bạn sẽ không thấy bất kỳ đầu ra nào. Nhưng bạn có thể xác minh rằng phiên NETCONF đang hoạt động trên R1 bằng cách nhập lệnh hiển thị phiên netconf-yang
    Code:
    [FONT=Courier New]================= RESTART: /home/student/ncclient-netconf.py =================[/FONT]
    [FONT=Courier New]>>>[/FONT]
    Step 3: Thêm chức năng in vào script để capabilities NETCONF cho R1 được liệt kê.

    Đối tượng m được trả về bởi hàm manager.connect () đại diện cho phiên từ xa NETCONF. Như bạn đã thấy trong Phần 2, trong mỗi phiên NETCONF, trước tiên máy chủ sẽ gửi danh sách capabilities của nó là một danh sách, ở định dạng XML của các mô hình YANG được hỗ trợ. Với mô đun ncclient, danh sách capabilities nhận được được lưu trữ trong danh sách m.server_capabilities.
    a. Sử dụng vòng lặp for và chức năng in để hiển thị capabilities của thiết bị:
    Code:
    [FONT=Courier New]print("#Supported Capabilities (YANG models):")[/FONT]
    [FONT=Courier New]for capability in m.server_capabilities:[/FONT]
    [FONT=Courier New]print(capability)[/FONT]
    b. Lưu và chạy chương trình. Đầu ra là cùng một đầu ra mà bạn nhận được từ việc gửi tin nhắn xin chào phức tạp trong Part 2, Step 3, nhưng không có thẻ XML mở và đóng <capability> trên mỗi dòng.
    Code:
    [FONT=Courier New]================= RESTART: /home/student/ncclient-netconf.py =================[/FONT]
    [FONT=Courier New]#Supported Capabilities (YANG models):[/FONT]
    [FONT=Courier New]urn:ietf:params:netconf:base:1.0[/FONT]
    [FONT=Courier New]urn:ietf:params:netconf:base:1.1[/FONT]
    [FONT=Courier New]urn:ietf:params:netconf:capability:writable-running:1.0[/FONT]
    [FONT=Courier New]urn:ietf:params:netconf:capability:xpath:1.0[/FONT]
    [FONT=Courier New]urn:ietf:params:netconf:capability:validate:1.0[/FONT]
    [FONT=Courier New]urn:ietf:params:netconf:capability:validate:1.1[/FONT]
    [FONT=Courier New]urn:ietf:params:netconf:capability:rollback-on-error:1.0[/FONT]
    [FONT=Courier New]urn:ietf:params:netconf:capability:notification:1. 0[/FONT]
    [FONT=Courier New]Urn:ietf:params:netconf:capability:interleave:1.0[/FONT]
    [FONT=Courier New]<output omitted>[/FONT]
    Hết phần 1.

    Trong phần tiếp theo chúng ta sẽ tìm hiểu cách sử dụng ncclient để lấy cấu hình cũng như là cấu hình cho thiết bị.

    Thank you.
    Nguồn : VNPRO
Working...
X