Hướng dẫn cài và sử dụng netkit năm 2024

i LỜI NÓI ĐẦU Trong chương trình đào tạo kỹ sư Công nghệ thông tin, môn học Mạng máy tính có mã học phần là CT112. Nhiệm vụ chính của Mạng máy tính CT112 là cung cấp các nguyên lý nền tảng về mạng máy tính, cách thức hoạt động và vận hành của một mạng máy tính hay một ứng dụng mạng, nguyên tắc thiết kế phân tầng trong hệ thống mạng máy tính và các giao thức thường đư ợc sử dụng trong mạng máy tính. Đ ể thực hiện nhiệm vụ này, việc giảng dạy Mạng máy tính CT112 được chia thành 30 tiết lý thuyết và 30 tiết thực hành. Trong đó, 30 tiết thực hành tương đương với 6 buổi rèn luyện tại phòng máy tính chuyên ngành có nhiệm vụ cụ thể là giới thiệu, hướng dẫn và làm rõ những kiến thức lý thuyết đã được trình bày thông qua các bài tập thực hành được biên soạn theo chủ đề và có hướng dẫn cụ thể. Việc triển khai thực hành Mạng máy tính CT112 được thực hiện chủ yếu dựa trên các nền tảng ảo hóa và mô phỏng mà không phải là một hệ thống mạng thực sự nhằm giúp giảm thiểu chi phí, độ phức tạp cũng như đảm bảo được an ninh mạng, phù hợp với môi trường đào tạo kỹ sư Công nghệ thông tin. Chính vì vậy, công cụ mô phỏng mạng Kathará trên nền tảng Docker đã được lựa chọn để biên soạn các bài tập thực hành. Sử dụng nền tảng ảo hóa Docker mang lại các lợi thế như: linh đ ộng, nhanh, nhẹ, đ ồng nhất và đóng gói. Bên cạnh đó, Kathará được giới thiệu như một công cụ mô phỏng mạng có chi phí thấp nhưng hiệu năng cao, cực kỳ phù hợp với minh họa và giảng dạy các vấn đề liên quan đến Mạng máy tính. Ngoài ra, không thể không đề cập đến Wireshark, một công cụ cực kỳ quen thuộc trong việc theo dõi, giám sát và phân tích giao thông trong một hệ thống mạng. Docker, Kathará và Wireshark là các công nghệ hữu ích và có xu hướng được sử dụng ngày càng rộng rãi trong nhiều mục đích khác nhau: nghiên cứu, thực hiện dự án, thử nghiệm, giáo dục...Đối với các trường đại học tại Việt Nam thì việc đưa các công nghệ này vào giới thiệu như là một phương thức hỗ trợ giảng dạy và học tập vẫn chưa được phổ biến và thiếu đi nguồn tài liệu tham khảo hữu ích bằng tiếng Việt. Chính vì vậy, chúng tôi đã thực hiện biên soạn tài liệu học tập “Hướng dẫn thực hành Mạng máy tính CT112” bằng tiếng Việt này nhằm mục đích: hỗ trợ cho học phần Mạng máy tính CT112; thống nhất nội dung giảng dạy thực hành giữa các nhóm học phần Mạng máy tính CT112; và cuối cùng là bổ sung nguồn tài liệu tham khảo về Mạng máy tính và các lĩnh vực liên quan khác. Tài liệu học tập này đặc biệt hướng đến độc giả là sinh viên chuyên ngành công nghệ thông tin và các chuyên ngành khác có Mạng máy tính CT112 là học phần cơ sở. Nội dung của tài liệu học tập sẽ hệ thống lại cho người

iii biệt giữa định tuyến liên miền và nội miền; giới thiệu giao thức BGP trên dịch vụ Quagga, các bài tập thực hành tổng hợp và ôn tập các kiến thức, kỹ năng đã được giới thiệu trong các chương trước. Nội dung của tài liệu học tập này được biên soạn dựa trên giả thuyết là độc giả đã có kiến thức cơ bản về Mạng máy tính hoặc đã hoàn thành số buổi lên lớp cho phần Lý thuyết của môn học Mạng máy tính CT112. Ngoài ra, độc giả có kỹ năng về sử dụng hệ điều hành Linux, cụ thể là Ubuntu 18 là một lợi thế đáng kể vì các công cụ thực hành được cài đặt và sử dụng chủ yếu trên hệ điều hành này. Chúng tôi gửi lời cảm ơn sâu sắc đến quý Thầy Cô khoa Công nghệ thông tin và Truyền thông đã nhiệt tình góp ý cho nội dung của giáo trình này. Do đây là phiên bản đầu tiên của tài liệu học tập nên sẽ không tránh khỏi những thiếu sót. Chúng tôi mong nhận được sự góp ý chân thành từ quý độc giả để quyển giáo trình ngày càng hoàn thiện hơn. Cần Thơ, tháng 08 năm 201 9 NHÓM TÁC GIẢ TS. NGÔ BÁ HÙNG & THSỄN HỮU VÂN LONG

iv MỤC LỤC

vi

  • Hình 4 Thông tin file BT12_router1 hiển thị trên Wireshark
  • Hình 4 Hủy đi kết nối giữa router1 và router3 thông qua nhánh mạng G
  • Hình 4 Mô hình mạng sử dụng trong Bài tập
  • Hình 4 Các thư mục con và tệp tin trong thư mục router1 (và các router khác).....
  • Hình 4 Thông tin vạch đường được lưu trữ trong dịch vụ ospfd của router2
  • Hình 4 Thông tin file BT13_router1 hiển thị trên Wireshark
  • Hình 4 Mô hình mạng sử dụng trong Bài tập
  • Hình 5 Cấu trúc thông điệp request kiểu GET được gửi đi của slient....................
  • Hình 5 Cấu trúc thông điệp response được gửi đi của server
  • Hình 5 Minh họa triển khai hệ thống DNS của tổ chức X.....................................
  • Hình 5 Hệ thống thư điện tử của tổ chức X trên cùng một vùng đụng độ..............
  • Hình 5 Mô hình mạng sử dụng trong Bài tập
  • Hình 5 Các thư mục con và tệp tin trong thư mục BaiTap15
  • Hình 5 Thông tin file BT15_webserver hiển thị trên Wireshark
  • Hình 5 Các thư mục con và tệp tin trong thư mục BaiTap16
  • Hình 5 Cấu trúc thư mục máy ảo pc1 và nội dung file resolv........................
  • Hình 5 Các thư mục con và tệp tin trong thư mục /etc/bind của dịch vụ bind......
  • Hình 5 Sequence diagram mô tả hoạt động của dịch vụ DNS trong tổ chức X
  • Hình 5 Các thư mục con và tệp tin trong thư mục BaiTap17
  • Hình 5 Các thư mục con và tệp tin trong thư mục dnslug/etc/.............................
  • Hình 5 Các thư mục con và tệp tin trong thư mục shared/usr/.............................
  • Hình 5 Giao diện Main Menu của phần mềm pine
  • Hình 5 Thông điệp mẫu giao tiếp giữa pc1 (C) và MTA (S). Nguồn: Wikipedia
  • Hình 5 Thông điệp mẫu giao tiếp giữa pc2 (C) và MX (S). Nguồn: Wikipedia
  • Hình 6 Mô hình mạng sử dụng trong Bài tập
  • Hình 6 Mô hình mạng sử dụng trong Bài tập
  • Hình 6 Mô hình mạng sử dụng trong Bài tập
  • Hình 6 Các thư mục con và tệp tin trong thư mục BaiTap20

vii DANH MỤC BẢNG Bảng 1 Nhóm lệnh v-commands và l-commands của Kathará ................................ 6 Bảng 3 Cấu trúc một Mac Learning Table trên Transparent Bridge ...................... 29 Bảng 4 Các lệnh thông dụng để thao tác với dịch vụ Quagga................................ 44 Bảng 5 Bảng mô tả chức năng các thành phần trong hệ thống DNS của tổ chức ... 62 Bảng 6 Bảng so sánh các đặc trưng của Định tuyến nội miền và liên miền ........... 79

1 BUỔI THỰC HÀNH SỐ 1 Chương này giới thiệu về các công cụ quản trị mạng thường dùng trong hệ điều hành Linux (phiên bản Ubuntu 18) và công cụ hỗ trợ mô phỏng mạng Kathará trên nền tảng ảo hóa Docker. Trọng tâm của chương sẽ là các bài thực hành đơn giản được hướng dẫn chi tiết từng bước nhằm giúp sinh viên làm quen với việc sử dụng Kathará trong mô phỏng mạng máy tính. 1 C ÔNG CỤ QUẢN TRỊ MẠNG TRÊN L INUX

  • ping: công cụ cho phép gửi 1 gói tin đến từ địa chỉ IP máy nguồn đến địa chỉ IP máy đích. Nếu như địa chỉ IP máy đích là tồn tại, ping trên máy đích sẽ tự động hồi đáp bằng 1 gói tin ngược lại máy nguồn. Cả 2 gói tin ping này đều chứa thông điệp ICMP - Internet Control Message Protocol.
  • ifconfig: công cụ cho phép cấu hình giao diện mạng (network interface) của máy, ví dụ: đặt địa chỉ IP và netmask, tắt hoặc mở giao diện mạng.
  • tcpdump: công cụ cho phép bắt các gói tin luân chuyển qua một hoặc nhiều giao diện mạng. Công cụ này cung cấp 2 chức năng lớn, là packet sniffing và packet analyze với thư viện lệnh phong phú.
  • route: công cụ cho phép xem bảng dẫn đường hiện tại của host.
  • traceroute: công cụ cho phép lần vết của dữ liệu luân chuyển qua host. 1 C ÔNG CỤ MÔ PHỎNG MẠNG KATHARÁ Kathará là một công cụ mã nguồn mở có chi phí thấp, hiệu suất cao được triển khai trên nền tảng ảo hóa Docker nhằm thực hiện giả lập (emulate) một hoặc nhiều hệ thống mạng từ đơn giản cho đến phức tạp. Thực chất Kathará là phiên bản nâng cao của Netkit, một công cụ mô phỏng mạng cũng đã đạt được những thành công trong hỗ trợ dạy và học Mạng máy tính tại các Trường Đại học có đào tạo chuyên ngành Công nghệ thông tin. Điểm nổi trội của Kathará so với người tiền nhiệm của nó là nhờ vào nền tảng ảo hóa Docker để mô phỏng các thiết bị thường gặp trong mạng như Router, Switch, Web Server, DNS Server..ưới dạng các máy ảo Linux chỉ có giao diện dòng lệnh. Các thiết bị mạng (máy ảo) này hoạt động dưới hình thức là các bộ chứa (Container) được quản lý bởi Docker. Một số ưu điểm nổi bật

2 của môi trường ảo hóa dựa trên các bộ chứa mà Docker đem lại đó là: linh động, nhanh, nhẹ, đồng nhất và đóng gói. Các máy ảo được tạo ra có thể dễ dàng được tùy chỉnh (customize) lại theo ý đồ của người quản trị mạng. Chẳng hạn, triển khai Apache Spark cho các hệ thống ứng dụng tính toán dữ liệu lớn (Big Data). Mô hình tổng quan của môi trường mạng ảo được mô phỏng bởi Kathará trên nền tảng Docker được miêu tả trong hình 1. Hình 1. 1 Mô hình môi trường mạng ảo Kathará trên Docker. Nguồn: Kathará Trong các đánh giá về hiệu năng hoạt động của các phần mềm mô phỏng mạng ảo (Network Emulator), Kathará đạt được những đánh giá tốt theo nhiều tiêu chí khác nhau (về hiệu suất sử dụng CPU, tiêu hao bộ nhớ, thời gian khởi động và thực thi...). Chính vì vậy, trong tài liệu hướng dẫn thực hành Mạng máy tính CT112, chúng tôi lựa chọn giới thiệu và sử dụng Kathará mô phỏng các hệ thống mạng minh họa cho kiến thức lý thuyết về Mạng máy tính đã giảng dạy. Việc sử dụng Kathará để mô phỏng mạng có thể được hỗ trợ thêm bởi công cụ Netkit Lab Generator 1. Đây là công cụ được phát triển kèm theo 1 kathara/tools/nlg/.

4

  • Các máy ảo được tạo ra dưới dạng UML (User Mode Linux) và được quản lý như là các Containerized Applications 2 trên nền tảng Docker của máy thực. Các máy ảo này chiếm rất ít tài nguyên máy thực (CPU, Mem...)
  • Các máy ảo UML mặc nhiên được tạo ra từ cùng 1 ảnh (image) có sẵn hoặc từ các ảnh mà người dùng xây dựng lại theo nhu cầu sử dụng. Docker cung cấp thư viện ảnh tại Docker Hub 3 rất phong phú và sẵn dùng. Hình 1 là danh sách các ảnh thông dụng mà Docker Hub cung cấp: Hình 1. 3 Danh sách các ảnh được cung cấp bởi Docker Hub. Nguồn: Docker Hub
  • Các máy ảo UML liên thông, kết nối với nhau dễ dàng do cùng hoạt động trong một môi trường ảo hóa là Docker. Ngoài ra, các máy ảo UML cũng có thể kết nối đến máy thực cục bộ (local machine) hoặc đến các máy thực ở xa (remote machine).
  • Tại thời điểm hiện tại, Kathará chỉ cho phép mô phỏng mạng ảo với hình thái trục (bus topology) sử dụng chuẩn Ethernet II. 2 docker/resources/what-container 3 hub.docker/u/kathara/

5

1.2 Hệ thống tập lệnh trong Kathará Kathará cung cấp 2 tập lệnh với phần tiếp đầu ngữ (prefix) là: v-commands và l-commands. 2 tập lệnh này được sử dụng trên màn hình điều khiển (terminal) của máy thực. Trong đó:

  • v-commands được sử dụng để tương tác với một máy ảo đơn lẻ và tất cả các liên kết mạng tới nó. Tập lệnh này chủ yếu bao gồm các lệnh như: chạy (run), dừng (stop), xóa bỏ (remove), truy vấn (info).
  • l-commands được sử dụng để tương tác với nhiều hoặc tất cả các máy ảo cùng một lúc trong một mô hình mạng ảo. Tập lệnh này cho phép tự động hóa nhiều thao tác quản lý trên các máy ảo qua hệ thống thư mục chứa các file thiết lập cấu hình (configuration files) mà Kathará quy định. Hầu hết các lệnh được cung cấp bởi v-commands đều có trong l-commands. Một số lệnh thông dụng trong tập lệnh v-commands và l-commands được trình bày trong Bảng 1. v-commands l-commands start Khởi động 1 máy ảo. Ví dụ: vstart --eth 0:A pc Khởi đ ộng một hoặc nhiều máy ảo trong 1 mạng ảo. Ví dụ: lstart crash Dừng (forcefully stopped) 1 máy ảo. Máy ảo đó sẽ dừng mà không quan tâm đ ến các hoạt đ ộng bên trong máy ảo đã hoàn thành hay chưa. Tài nguyên cấp phát cho máy ảo vẫn duy trì đ ể tái khởi động. Ví dụ: vcrash pc Dừng (forcefully) một hoặc nhiều máy ảo trong mạng. Ví dụ: lcrash pc halt Dừng (gracefully stopped) 1 máy ảo. Máy ảo đó sẽ dừng khi tất cả các hoạt đ ộng bên trong đã hoàn thành. Tài nguyên cấp phát cho máy ảo vẫn duy trì đ ể tái khởi động. Ví dụ: vhalt pc Dừng (gracefully stopped) một hoặc nhiều máy ảo. Ví dụ: lhalt

7

  • Docker, Python3 cũng như các thiết lập cần thiết cho môi trường thực hành Mạng máy tính CT112 đã được hoàn tất tại các phòng thực hành chuyên sâu về Mạng máy tính của khoa CNTT&TT, Đại học Cần Thơ. Vì vậy sinh viên không cần phải thực hiện lại các công việc dưới đây.
  • Tài khoản người dùng mà sinh viên được phép thao tác trên Ubuntu 18. là student. Lưu ý: Đây không ph ải là tài khoản có quyền cài đặt các gói phần mềm lên hệ thống.
  • Cài đặt Docker trên Ubuntu 18 (hoặc mới hơn) có thể tham khảo trong tài liệu này 4. Hình 1. 4 dưới đây thể hiển rõ sự khác biệt trong cách thức quản lý các ứng dụng kiểu Containerized Application trên Docker với ứng dụng trên máy ảo truyền thống. Hình 1. 4 Ứng dụng triển khai trên Docker và máy ảo truyền thống. Nguồn: Docker Một số lưu ý đối với việc cài đặt và thực thi Docker:
  • Khởi động Docker là bắt buộc để chạy Kathará. Để khởi động Docker bằng tay (manually) có thể dùng lệnh systemctl hoặc service. Ngoài ra Docker có thể khởi động tự động cùng hệ điều hành (automatically) 5.
  • Mặc nhiên chỉ có người dùng gốc (root) mới có quyền thao tác trên Docker. Tuy nhiên, sử dụng tài khoản root là không được khuyến khích mà thay vào đó sẽ sử dụng các tài khoản đã được thêm vào nhóm người dùng có quyền 4 docs.docker/install/linux/docker-ce/ubuntu/ 5 docs.docker/config/daemon/systemd/

8 thao tác trên Docker. Lệnh thêm 1 người dùng (user) vào nhóm có quyền thao tác trên Docker như sau: sudo usermod - aG docker your-user