lOMoARcPSD| 58507440
BỘ GIÁO DỤC VÀ ĐÀO TẠO
TRƯỜNG ĐẠI HỌC CẦN THƠ
Tài liệu học tập
HƯỚNG DẪN THỰC HÀNH MẠNG MÁY
TÍNH CT112
(A GUIDE TO PRACTICE COMPUTER NETWORK
CT112)
TS. NGÔ BÁ HÙNG (Chủ biên)
ThS. NGUYỄN HỮU VÂN LONG
2019
lOMoARcPSD| 58507440
LỜI GIỚI THIỆU
Nhm góp phần làm phong phú nguồnliệu phục vụ nghiên cứu, học tập cho
bạn đọc và sinh viên Khoa Công nghệ thông tin và Truyền thông – Trường Đại
học Cần Thơ, Nhà xuất bản Đại học Cần Thơ ấn hành giới thiệu cùng bạn
đọc tài liệu học tập “Hướng dẫn thực hành Mạng máy tính CT112” do Tiến
Ngô Bá Hùng và Thạc sĩ Nguyên Hữu Vân Long biên soạn.
Nội dung tài liệu học tập bao gồm 6 chương tương ứng với thời lượng
thực hành 6 buổi (30 tiết) được quy định trong Đề cương môn học Mạng máy
tính CT112. Nội dung chính của mỗi chương hướng dẫn chi tiết các công
việc cần thực hiện trong một buổi thực hành. Các công việc chính lần lượt sẽ
là: củng cố kiến thức thuyết đã được giới thiệu trong học phần Mạng máy
tính CT112 qua các câu hỏi vận dụng; làm quen một số công cụ hỗ trợ học tập
nghiên cứu về mạng máy tính; áp dụng thuyết qua các bài tập thực hành
với nhiều mức độ khác nhau.
Tài liệu học tập “Hướng dẫn thực hành Mạng máy tính CT112” được biên soạn
để phục vụ, hỗ trcho việc giảng dạy học phần Mạng máy tính CT112, vì vậy
những kiến thức chính tài liệu sẽ trình bày bao gồm: khái niệm và nguyên
bản của mạng máy tính, hình tham khảo OSI chức năng của các
tầng trong hình, chuẩn công nghệ Ethernet II bộ giao thức IPv4. Công
cụ hỗ trchính cho các buổi thực hành được sử dụng Kathará trên nền tảng
Docker và Wireshark.
Nhà xuất bản Đại học Cần Thơ chân thành cảm ơn các tác giả sự đóng
góp ý kiến của quý thầy cô trong Hội đồng thm định trường Đại hc Cần Thơ
để tài liệu học tập “Hướng dẫn thực hành Mạng máy tính CT112” được ra mắt
bạn đọc.
Nhà xuất bản Đại học Cần Thơ trân trọng giới thiệu đến sinh viên, giảng viên
và bạn đọc tài liệu học tập này.
NHÀ XUẤT BẢN ĐẠI HỌC CẦN THƠ
lOMoARcPSD| 58507440
LỜI NÓI ĐẦU
Trong chương trình đào tạo kỹ Công nghthông tin, môn học Mạng máy
tính học phần CT112. Nhiệm vụ chính của Mạng máy tính CT112
cung cấp các nguyên nền tảng về mạng máy tính, cách thức hoạt động vận
hành của một mạng 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 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
nhiệm vụ cthể là giới thiệu, hướng dẫn làm những kiến thức 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 mô phỏng không phải 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ậy, công cụ 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 đóng gói. Bên cạnh đó,
Kathará được giới thiệu như một công cụ phỏng mạng chi phí thấp nhưng
hiệu năng cao, cực kphù 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 phân tích giao thông trong
một hthố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 cu,
thực hiện dự án, thnghiệ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ư một phương thức hỗ tr
giảng dạy học tập vẫn chưa được phổ biến 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 ni
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;
cuối cùng bổ sung nguồn tài liệu tham khảo về Mạng máy tính 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 gisinh
viên chuyên ngành ng nghthông tin các chuyên ngành khá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 đọc các kiến thức nền tảng, cốt lõi của Mạng máy tính CT112 bằng
lOMoARcPSD| 58507440
những bài thực hành trên mạng ảo Kathará của Docker chứ không bao phủ hết
tất cả các chi tiết đã được trình bày. Hoàn thành các bài tập thực hành trong tài
liệu học tập này, người đọc sẽ được một sự khởi đầu vững chắc đối với Mạng
máy tính, qua đó việc tìm hiểu sâu hơn về các lĩnh vực khác như Thiết kế
cài đặt mạng, bảo mật mạng máy tính, quản trị mạng hoặc xây dựng ứng dụng
mạng sẽ có nhiều thuận lợi và ddàng.
Nội dung ca tài liu học tập được chia thành 6 chương tương ứng với
6 buổi thực hành như sau, được trình bày theo trình tmà người đọc nên tiếp
cận:
Chương 1 Buổi thực hành số 1: Giới thiệu về công cụ htr
phỏng mạng Kathará trên nền tảng ảo hóa Docker, bao gồm các nội
dung chính: các công cụ quản trị mạng thường dùng trên Linux, các
đặc trưng chính của Docker, Kathará trên Docker h thng tập
lệnh của Kathará, hướng dẫn cài đặt Docker triển khai máy o
Kathará. Trọng tâm của chương các bài tập thực hành làm quen
với Kathará trên Docker và các công cụ quản trị mạng.
Chương 2 Buổi thực hành số 2: Giới thiệu về Wireshark vai tr
của Wireshark trong thực hành Mạng máy tính CT112. Các nội dung
chính trong chương bao gồm: tổng quan về ch sử dụng Wireshark,
sự kết hợp giữa Wireshark Kathará, các bài tập thực hành nhằm
làm rõ hot động của giao thức IPv4 với ARP và ICMP.
Chương 3 – Buổi thực hành số 3: Giới thiệu về cầu nối Bridge, thiết
bị chuyển mạch Switch, dịch vụ Linux Bridge trên máy ảo Kathará,
các bài tập thực hành khảo sát hoạt động của Switch qua cơ chế học
địa chỉ MAC, kết hợp giữa Router và Switch trong mạng.
Chương 4 – Buổi thực hành số 4: Giới thiệu về Định tuyến nội miền
trong một miền tự trị AS, giao thức định tuyến nội miền RIPv2
OSPFv2 trên dịch vụ Quagga, các bài tập thực hành ứng dụng RIPv2
và OSPFv2 trong vch đường động ca một AS.
Chương 5 – Buổi thực hành số 5: Giới thiệu một số giao thức thuộc
tầng ứng dụng như: HTTP với hình Client Server đơn giản, dịch
vụ tên DNS trong một tổ chc, dịch vụ thư điện tử với giao thc
SMTP, POP3 IMAP trong cùng tổ chc đã xây dựng DNS, các bài
tập thực hành khảo sát những giao thức trên với những câu hỏi ôn
tập về tầng ứng dụng, tầng vận chuyển.
Chương 6 – Buổi thực hành số 6: Giới thiệu về Định tuyến liên miền
giữa các AS, cơ sở hình thành mạng Internet, những đặc trưng khác
ii
lOMoARcPSD| 58507440
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 vQuagga, 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 gii thiệu trong các chương trước.
Nội dung ca tài liệu hc tập này được biên soạn dựa trên giả thuyết là độc gi
đã kiến thứ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 thuyết của môn học Mạng y tính CT112. Ngoài ra, độc giả
kỹ năng về sử dụng hđiều hành Linux, cụ thUbuntu 18.04 một lợi thế
đáng kể vì các công cụ thc 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 qThầy khoa Công nghệ thông tin
và Truyền thông đã nhit 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 2019
NHÓM TÁC GIẢ
TS. NGÔ BÁ HÙNG & THS.NGUYỄN HỮU VÂN LONG
lOMoARcPSD| 58507440
MỤC LỤC
iv
lOMoARcPSD| 58507440
DANH MỤC HÌNH ẢNH
Hình 1.1 Mô hình môi trường mạng ảo Kathará trên Docker. Nguồn: Kathará .......... 2
Hình 1.2 Hình thái mạng ảo cần mô phỏng được dựng trên Netkit Lab Generator ..... 3
Hình 1.3 Danh sách các ảnh được cung cấp bởi Docker Hub. Nguồn: Docker Hub ... 4
Hình 1.4 Ứng dụng triển khai trên Docker và máy ảo truyền thống. Nguồn: Docker . 7
Hình 1.5 Kết quả thực thi lệnh docker run hello-world ............................................... 8
Hình 1.6 Kết quả thực thi lệnh docker images ............................................................. 9
Hình 1.7 Kết quả thực thi lệnh vstart --eth 0:A pc1 ................................................... 10
Hình 1.8 Mô hình mạng sử dụng cho Bài tập 1 và Bài tập 2 ..................................... 10
Hình 1.9 Kết quả thực thi lệnh ifconfig trên máy ảo pc1 ........................................... 11
Hình 1.10 Các thư mục con và tệp tin trong thư mục BaiTap2 .................................. 13
Hình 1.11 Mô hình mạng sử dụng trong Bài tập 3 ..................................................... 14
Hình 1.12 Các thư mục con và tệp tin trong thư mục BaiTap3 .................................. 15
Hình 1.13 Mô hình mạng sử dụng trong Bài tập 4 ..................................................... 16
Hình 2.1 Giao diện tương tác chính trên Wireshark ................................................... 18
Hình 2.2 Cách thức áp dụng Wireshark trong thực hành Mạng máy tính CT112 ...... 19
Hình 2.3 Mô hình mạng sử dụng trong Bài tập 5 ....................................................... 19
Hình 2.4 Các thư mục con và tệp tin trong thư mục BaiTap5 .................................... 20
Hình 2.5 Mô hình mạng của Bài tập 6 ....................................................................... 23
Hình 2.6 Các thư mục con và tệp tin trong thư mục BaiTap6 .................................... 23
Hình 2.7 Sơ đồ tuần tự biểu diễn hoạt động của giao thức ARP từ pc1 đến pc3 ....... 26
Hình 2.8 Mô hình mạng sử dụng trong Bài tập 7 ....................................................... 28
Hình 3.1 Minh hoạt hoạt động của Bridge trong việc chuyển tiếp khung vật lý ....... 29
Hình 3.2 Hoạt động của các Bridge khi gửi khung từ N1 sang N6 (chiều đi) ........... 31
Hình 3.3 Đa giao tiếp cùng lúc giữa các máy bằng giàn hoàn chuyển trên Switch ... 32
Hình 3.4 Linux Bridge trong mạng ảo Kathará và mạng thực ................................... 32
Hình 3.5 Mô hình mạng sử dụng trong Bài tập 8 ....................................................... 33
Hình 3.6 Các thư mục con và tệp tin trong thư mục BaiTap8 .................................... 34
Hình 3.7 Mô hình mạng sử dụng trong Bài tập 9 ....................................................... 37
Hình 3.8 Mô hình mạng sử dụng trong Bài tập 10 ..................................................... 40
Hình 3.9 Các thư mục con và tệp tin trong thư mục BaiTap10 .................................. 41
Hình 3.10 Mô hình mạng sử dụng trong Bài tập 11 ................................................... 41
Hình 4.1 Kiến trúc dịch vụ quagga (zebra) trên Linux kernel. Nguồn: netkit.org ..... 43
Hình 4.2 Mô hình mạng sử dụng trong Bài tập 12 ..................................................... 45
Hình 4.3 Các thư mục con và tệp tin trong thư mục BaiTap12 .................................. 46
Hình 4.4 Các thư mục con và tệp tin trong thư mục router1 (và các router khác) ..... 46
Hình 4.5 Thông tin vạch đường được lưu trữ trong dịch vụ ripd của router2 ............ 49
Hình 4.6 Thông tin file BT12_router1.pcap hiển thị trên Wireshark ......................... 50
lOMoARcPSD| 58507440
Hình 4.7 Hủy đi kết nối giữa router1 và router3 thông qua nhánh mạng G ...............50
Hình 4.8 Mô hình mạng sử dụng trong Bài tập 13 .....................................................52
Hình 4.9 Các thư mục con và tệp tin trong thư mục router1 (và các router khác) .....53
Hình 4.10 Thông tin vạch đường được lưu trữ trong dịch vụ ospfd của router2........55
Hình 4.11 Thông tin file BT13_router1.pcap hiển thị trên Wireshark .......................56
Hình 4.12 Mô hình mạng sử dụng trong Bài tập 14 ...................................................57
Hình 5.1 Cấu trúc thông điệp request kiểu GET được gửi đi của slient .....................60
Hình 5.2 Cấu trúc thông điệp response được gửi đi của server ..................................60
Hình 5.3 Minh họa triển khai hệ thống DNS của tổ chức X ......................................61
Hình 5.4 Hệ thống thư điện tử của tổ chức X trên cùng một vùng đụng độ...............62
Hình 5.5 Mô hình mạng sử dụng trong Bài tập 15 .....................................................63
Hình 5.6 Các thư mục con và tệp tin trong thư mục BaiTap15 ..................................63
Hình 5.7 Thông tin file BT15_webserver.pcap hiển thị trên Wireshark .....................65
Hình 5.8 Các thư mục con và tệp tin trong thư mục BaiTap16 ..................................67
Hình 5.9 Cấu trúc thư mục máy ảo pc1 và nội dung file resolv.conf .........................67
Hình 5.10 Các thư mục con và tệp tin trong thư mục /etc/bind của dịch vụ bind ......67
Hình 5.11 Sequence diagram mô tả hoạt động của dịch vụ DNS trong tổ chức X ....69
Hình 5.12 Các thư mục con và tệp tin trong thư mục BaiTap17 ................................71
Hình 5.13 Các thư mục con và tệp tin trong thư mục dnslug/etc/ ..............................71
Hình 5.14 Các thư mục con và tệp tin trong thư mục shared/usr/ ..............................72
Hình 5.15 Giao diện Main Menu của phần mềm pine ................................................72
Hình 5.16 Thông điệp mẫu giao tiếp giữa pc1 (C) và MTA (S). Nguồn: Wikipedia ..73
Hình 5.17 Thông điệp mẫu giao tiếp giữa pc2 (C) và MX (S). Nguồn: Wikipedia ...76
Hình 6.1 Mô hình mạng sử dụng trong Bài tập 18 .....................................................78
Hình 6.2 Mô hình mạng sử dụng trong Bài tập 19 .....................................................80
Hình 6.3 Mô hình mạng sử dụng trong Bài tập 20 .....................................................81
Hình 6.4 Các thư mục con và tệp tin trong thư mục BaiTap20 ..................................82
vi
lOMoARcPSD| 58507440
DANH MỤC BẢNG
Bảng 1.1 Nhóm lệnh v-commands và l-commands của Kathará ................................6
Bảng 3.1 Cấu trúc một Mac Learning Table trên Transparent Bridge ...................... 29
Bảng 4.1 Các lệnh thông dụng để thao tác với dịch vụ Quagga................................ 44
Bảng 5.1 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.1 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
lOMoARcPSD| 58507440
DANH MỤC THUẬT NGỮ TIẾNG ANH
AS
Autonomous System
Miền tự tr
Collision Domain
Vùng đụng độ trong LAN
Container
Vật chứa
Containerized Application
Ứng dụng hướng vật chứa
GUI
Graphical User Interface
Giao diện đồ họa tương tác người dùng
Host Machine
Máy thực
Image
Ảnh dùng để khởi tạo máy ảo
Internetworking
Liên mạng
LAN
Local Area Nework Mạng
cục bộ
LAN Segment
Nhánh hoặc đoạn mạng trong LAN
MAC address
Medium Access Control address
Địa chỉ vật lý làm định danh của thiết bị
Mac Lookup Table
Bảng đối chiếu địa chỉ MAC của switch
Network Emulator
Bộ mô phỏng mạng ảo
Network Interface
Giao diện mạng
Network Topology
Hình thái mạng
Node
Nút mạng
OSI model
Open Systems Interconnection
Mô hình tham chiếu kết nối các hệ
thống mở
Packet Sniffer and Analyzer
Bộ bắt và phân tích gói tin trong mạng
Protocol
Giao thức
Routing Table
Bảng vạch đường
Terminal
Giao diện d ng lệnh
UML
User Mode Linux
Hệ điều hành Linux dùng d ng lệnh
Virtual Machine
Máy ảo
Virtualization
Sự ảo hóa
viii
lOMoARcPSD| 58507440
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.04) công cụ hỗ trợ phỏng
mạng Kathará trên nền tảng ảo hóa Docker. Trọng tâm của chương sẽ
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 phỏng mạng máy
tính.
1.1 CÔNG CỤ QUẢN TRỊ MẠNG TRÊN LINUX
- 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 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
cha thông điệp ICMP - Internet Control Message Protocol.
- ifconfig: công ccho phép cấu hình giao diện mạng (network interface) ca
máy, ví dụ: đặt địa chỉ IP và netmask, tắt hoặc mở giao diện mạng.
- tcpdump: công ccho 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, packet sniffing
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 ca dliu luân chuyển qua host.
1.2 CÔNG CỤ MÔ PHỎNG MẠNG KATHARÁ
Kathará là một công cmã 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á phiên bản nâng
cao của Netkit, một công cụ phỏng mạng cũng đã đạt được những thành công
trong hỗ trdạy học Mạng máy tính tại các Trường Đại họ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...dưới dạng các máy ảo Linux chỉ có giao diện d ng lệnh.
lOMoARcPSD| 58507440
Các thiết bị mạng (máy ảo) này hoạt động dưới hình thức các bộ chứa (Container)
được quản lý bi Docker. Một số ưu điểm nổi bật của môi trường ảo hóa dựa trên
các bộ chứa Docker đem lại đó là: linh động, nhanh, nhẹ, đồng nhất đóng
gói. Các máy ảo được tạo ra 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 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 bi Kathará trên nền tảng Docker được miêu tả trong hình 1.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 thực
thi...). Chính 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 sử dụng Kathará 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á để phỏng mạng có thể được hỗ trthêm bởi công cụ
Netkit Lab Generator
1
. Đây là công cụ được phát triển kèm theo Kathará với mục
đích cung cấp môi trường đồ họa làm giảm tính phức tạp trong việc xây dựng
hình mạng dưới dạng các máy ảo. Hình 1.2 dưới đây mô tả một mạng ảo được xây
dựng bởi công cụ Netkit Lab Generator:
1
http://www.kathara.org/tools/nlg/.
lOMoARcPSD| 58507440
Hình 1.2 Hình thái mạng ảo cần mô phỏng được dựng trên Netkit Lab Generator
1.2.1 Các đặc điểm chính của Kathará
- Hot động trên nền tảng ảo hóa Docker.
- Máy thực (host machine) triển khai Katha có thể chạy hệ điều hành Linux,
Window hoặc MacOS. Tuy nhiên, i trường phù hợp nhất được khuyến
khích triển khai Kathará đó là Linux.
- Các máy o (virtual machine) được xem 1 nút (node) trong nh mạng
được mô phỏng.
- Các máy ảo được tạo ra dưới dạng UML (User Mode Linux) được quản
như 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 người dùng xây dựng lại theo nhu cầu sử dụng. Docker cung cấp
2
https://www.docker.com/resources/what-container
lOMoARcPSD| 58507440
thư viện ảnh tại Docker Hub
3
rất phong phú và sẵn dùng. Hình 1.3 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óaDocker. Ngoài ra, các máy ảo UML cũng thể kết
nối đến máy thực cc 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 phỏng mạng ảo với hình thái
trc (bus topology) sdụng chuẩn Ethernet II.
1.2.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 l-
commands. 2 tập lệnh này được sử dụng trên màn hình điều khiển (terminal) ca
máy thực. Trong đó:
3
https://hub.docker.com/u/kathara/
lOMoARcPSD| 58507440
- 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 trên các máy ảo qua hthống thư mục chứa các file thiết lập
cấu hình (configuration files) Katha 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 l-commands được trình bày
trong Bảng 1.1
v-commands
l-commands
start
Khi động 1 máy ảo.
Ví d: vstart --eth 0:A pc1
Khi độ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 không
quan tâm đến các hoạt động bên
trong 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 khi
động.
Ví d: vcrash pc1
Dừng (forcefully) một hoặc nhiều
máy ảo trong mạng. dụ:
lcrash pc1
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 khi
động.
Ví d: vhalt pc1
Dừng (gracefully stopped) một
hoặc nhiều máy ảo.
Ví d: lhalt
lOMoARcPSD| 58507440
clean
Dừng hoạt động của các máy o
các kết nối liên quan đến các
máy ảo đó. Tài nguyên cấp phát
cho các máy ảo bị thu hồi.
Ví d: lclean
config
Không có
list
Không có
wipe
Lệnh sử dụng tương tự như lệnh
lclean. Ví dụ: lwipe
restart
Khi động lại một hoặc nhiều máy
ảo trong mạng.
Ví d: lrestart pc1
Bảng 1.1 Nhóm lệnh v-commands và l-commands của Kathará
1.2.3 Cài đặt Docker và 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,
Kathará đạt được những đánh giá tốt theo nhiều tiêu chí khác nhau (về hiệu sut
sử dụng CPU, tiêu hao bộ nhớ, thời gian khởi động thực thi...). Chính 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 Katha 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.
- Đối với hệ điều hành Ubuntu 18.04, các thao tác cài đặt phải được thực hiện
bằng tài khoản người dùng có thẩm quyn.
lOMoARcPSD| 58507440
- Các lệnh cài đặt được thực hiện trên terminal của Ubuntu 18.04.
- 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ậy sinh viên không
cần phải thc hiện lại các công việc dưới đây.
- Tài khoản người dùng sinh viên được phép thao tác trên Ubuntu 18.04
student. Lưu ý: Đây không phải tài khoản quyền cài đặt các gói phần
mềm lên hthống.
1) Cài đặt Docker trên Ubuntu 18.04 (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 skhác biệt trong cách thức quản
các ứng dụng kiểu Containerized Application trên Docker vi ứ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 vi vic cài đặt và thực thi Docker:
- Khi động Docker 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 thay vào
đó sẽ sử dụng các tài khoản đã được thêm vào nhóm người dùng quyền
4
https://docs.docker.com/install/linux/docker-ce/ubuntu/
5
https://docs.docker.com/config/daemon/systemd/
lOMoARcPSD| 58507440
thao tác trên Docker. Lệnh thêm 1 người ng (user) vào nhóm quyn
thao tác trên Docker như sau:
sudo usermod -aG docker your-user
- thể kiểm tra thử hoạt động của Docker bằng cách khởi động một
Containerized Application từ ảnh hello-world. Ảnh này không sẵn trên
máy cài đặt Docker, chính vì vậy Docker sẽ kết nối đến Docker Hub để tải
ảnh về sử dụng để khi động Containerized Application. Lệnh sử dụng
để thc thi công việc này là:
docker run hello-world
Hình 1.5 Kết quả thực thi lệnh docker run hello-world
- Nếu người dùng có nhu cầu thực thi một ứng dụng hay dịch vụ nào đó, chẳng hạn
hệ điều hành Ubuntu trên một Containerized Application, thì thể tìm kiếm
phiên bản phù hợp ca ứng dụng và thực thi giống như hướng dẫn trên.
docker search ubuntu
2) Cài đặt Python 3 (trường hợp sử dụng phiên bản thấp hơn 18.04) bằng lệnh:
sudo apt-install python3
3) Đặt Python 3 thay thế cho Python 2.7 có sẵn bằng lệnh sau:
alias python=python3
4) Trường hợp Python bị thiếu thư viện ipaddress thì có thể tiến hành cài đặt trực
tiếp như sau:
lOMoARcPSD| 58507440
pip install ipaddress
5) Cài đặt Wrapper để đảm bảo tín an ninh (security) và riêng(privilege) trong
vận hành giữa các mạng ảo trên Docker. Ngoài ra Wrapper c n rất cần thiết
trong việc mở rộng sử dụng Kathará giữa các máy tính thực chia sẻ tài nguyên
với nhau (shared computer).
sudo apt install build-essential
6) Cài đặt Xterm terminal để cho phép truy cập vào các máy ảo và điều khiển trực
tiếp chúng. Xterm thường đã cài đặt sẵn trên các phiên bản của Ubuntu.
sudo apt install xterm
7) Truy cập: https://github.com/KatharaFramework/Kathara/releases. Chọn tải về
Source code (zip). Giải nén file .zip đã ti về, được thư mục Kathara-
0.36.1
8) Sao chép thư mục Kathara-0.36.1 vào trong thư mục /home của máy thc.
Đặt lại tên cho thư mục vừa sao chép được là KatharaMMT/
9) Mở file bashrc của người dùng hiện hành trên máy thực bằng lệnh: nano
~/.bashrc. Di chuyển đến cuối file .bashrcthêm vào nội dung sau đây để
đặt biến môi trường cho Kathará:
export NETKIT_HOME=~/KatharaMMT/bin
export PATH=$PATH:$NETKIT_HOME export
MANPATH=:$NETKIT_HOME/man
10) Thc thi việc cài đặt Kathará lên Docker bằng lệnh sau đây:
$NETKIT_HOME/install
11) Sau khi hoàn tất quá trình cài đặt, Docker trên máy cục bộ đã có thông tin ca
ảnh mà Kathará dùng để tạo ra các máy ảo. Kiểm tra thông tin ảnh đang đưc
quản lý bởi Docker bằng lệnh:
docker images
Hình 1.6 Kết quả thực thi lệnh docker images
12) Khi động 1 máy ảo để thnghiệm việc cài đặt. Nếu y ảo được khởi động
thành công nghĩa là quá trình cài đặt đã hoàn tt chính xác. Lệnh để khi động
1 máy ảo (đặt tên là pc1) như sau:
lOMoARcPSD| 58507440
vstart --eth 0:A pc1
Hình 1.7 Kết quả thực thi lệnh vstart --eth 0:A pc1
13) Trên máy thực, tắt và xóa máy ảo bằng lệnh:
vclean pc1
1.3 BÀI TẬP THỰC HÀNH
Các thao tác trong phần hướng dẫn thực hành được diễn giải theo từng bước một.
Căn cứ vào công việc cụ thtrong nội dung thực hành, sinh viên ththực hiện
1 trong 2 cách sau: 1) sử dụng lệnh qua terminal hoặc 2) sử dụng thao tác trên GUI
của Linux; hoặc kết hợp cả 2 cách. Các phần hướng dẫn thực hành được trình bày
dưới đây sẽ sử dụng cách 1).
1.3.1 Bài tập 1
Hình 1.8 Mô hình mạng sử dụng cho Bài tập 1 và Bài tập 2
Mục tiêu: Xây dựng một mạng LAN đơn giản theo Phương pháp 1. Các bước thc
hiện Bài tập 1 được trình bày chi tiết như sau:

Preview text:

lOMoAR cPSD| 58507440
BỘ GIÁO DỤC VÀ ĐÀO TẠO
TRƯỜNG ĐẠI HỌC CẦN THƠ
Tài liệu học tập
HƯỚNG DẪN THỰC HÀNH MẠNG MÁY TÍNH CT112
(A GUIDE TO PRACTICE COMPUTER NETWORK CT112)
TS. NGÔ BÁ HÙNG (Chủ biên)
ThS. NGUYỄN HỮU VÂN LONG 2019 lOMoAR cPSD| 58507440 LỜI GIỚI THIỆU
Nhằm góp phần làm phong phú nguồn tư liệu phục vụ nghiên cứu, học tập cho
bạn đọc và sinh viên Khoa Công nghệ thông tin và Truyền thông – Trường Đại
học Cần Thơ, Nhà xuất bản Đại học Cần Thơ ấn hành và giới thiệu cùng bạn
đọc tài liệu học tập “Hướng dẫn thực hành Mạng máy tính CT112” do Tiến sĩ
Ngô Bá Hùng và Thạc sĩ Nguyên Hữu Vân Long biên soạn.
Nội dung tài liệu học tập bao gồm 6 chương tương ứng với thời lượng
thực hành là 6 buổi (30 tiết) được quy định trong Đề cương môn học Mạng máy
tính CT112. Nội dung chính của mỗi chương là hướng dẫn chi tiết các công
việc cần thực hiện trong một buổi thực hành. Các công việc chính lần lượt sẽ
là: củng cố kiến thức lý thuyết đã được giới thiệu trong học phần Mạng máy
tính CT112 qua các câu hỏi vận dụng; làm quen một số công cụ hỗ trợ học tập
và nghiên cứu về mạng máy tính; áp dụng lý thuyết qua các bài tập thực hành
với nhiều mức độ khác nhau.
Tài liệu học tập “Hướng dẫn thực hành Mạng máy tính CT112” được biên soạn
để phục vụ, hỗ trợ cho việc giảng dạy học phần Mạng máy tính CT112, vì vậy
những kiến thức chính mà tài liệu sẽ trình bày bao gồm: khái niệm và nguyên
lý cơ bản của mạng máy tính, mô hình tham khảo OSI và chức năng của các
tầng trong mô hình, chuẩn công nghệ Ethernet II và bộ giao thức IPv4. Công
cụ hỗ trợ chính cho các buổi thực hành được sử dụng là Kathará trên nền tảng Docker và Wireshark.
Nhà xuất bản Đại học Cần Thơ chân thành cảm ơn các tác giả và sự đóng
góp ý kiến của quý thầy cô trong Hội đồng thẩm định trường Đại học Cần Thơ
để tài liệu học tập “Hướng dẫn thực hành Mạng máy tính CT112” được ra mắt bạn đọc.
Nhà xuất bản Đại học Cần Thơ trân trọng giới thiệu đến sinh viên, giảng viên
và bạn đọc tài liệu học tập này.
NHÀ XUẤT BẢN ĐẠI HỌC CẦN THƠ lOMoAR cPSD| 58507440 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 đọc các kiến thức nền tảng, cốt lõi của Mạng máy tính CT112 bằng lOMoAR cPSD| 58507440
những bài thực hành trên mạng ảo Kathará của Docker chứ không bao phủ hết
tất cả các chi tiết đã được trình bày. Hoàn thành các bài tập thực hành trong tài
liệu học tập này, người đọc sẽ có được một sự khởi đầu vững chắc đối với Mạng
máy tính, qua đó việc tìm hiểu sâu hơn về các lĩnh vực khác như Thiết kế và
cài đặt mạng, bảo mật mạng máy tính, quản trị mạng hoặc xây dựng ứng dụng
mạng sẽ có nhiều thuận lợi và dễ dàng.
Nội dung của tài liệu học tập được chia thành 6 chương tương ứng với
6 buổi thực hành như sau, được trình bày theo trình tự mà người đọc nên tiếp cận:
Chương 1 – Buổi thực hành số 1: Giới thiệu về công cụ hỗ trợ mô
phỏng mạng Kathará trên nền tảng ảo hóa Docker, bao gồm các nội
dung chính: các công cụ quản trị mạng thường dùng trên Linux, các
đặc trưng chính của Docker, Kathará trên Docker và hệ thống tập
lệnh của Kathará, hướng dẫn cài đặt Docker và triển khai máy ảo
Kathará. Trọng tâm của chương là các bài tập thực hành làm quen
với Kathará trên Docker và các công cụ quản trị mạng.
Chương 2 – Buổi thực hành số 2: Giới thiệu về Wireshark và vai tr
của Wireshark trong thực hành Mạng máy tính CT112. Các nội dung
chính trong chương bao gồm: tổng quan về cách sử dụng Wireshark,
sự kết hợp giữa Wireshark và Kathará, các bài tập thực hành nhằm
làm rõ hoạt động của giao thức IPv4 với ARP và ICMP.
Chương 3 – Buổi thực hành số 3: Giới thiệu về cầu nối Bridge, thiết
bị chuyển mạch Switch, dịch vụ Linux Bridge trên máy ảo Kathará,
các bài tập thực hành khảo sát hoạt động của Switch qua cơ chế học
địa chỉ MAC, kết hợp giữa Router và Switch trong mạng.
Chương 4 – Buổi thực hành số 4: Giới thiệu về Định tuyến nội miền
trong một miền tự trị AS, giao thức định tuyến nội miền RIPv2 và
OSPFv2 trên dịch vụ Quagga, các bài tập thực hành ứng dụng RIPv2
và OSPFv2 trong vạch đường động của một AS.
Chương 5 – Buổi thực hành số 5: Giới thiệu một số giao thức thuộc
tầng ứng dụng như: HTTP với mô hình Client – Server đơn giản, dịch
vụ tên DNS trong một tổ chức, dịch vụ thư điện tử với giao thức
SMTP, POP3 và IMAP trong cùng tổ chức đã xây dựng DNS, các bài
tập thực hành khảo sát những giao thức trên với những câu hỏi ôn
tập về tầng ứng dụng, tầng vận chuyển.
Chương 6 – Buổi thực hành số 6: Giới thiệu về Định tuyến liên miền
giữa các AS, cơ sở hình thành mạng Internet, những đặc trưng khác ii lOMoAR cPSD| 58507440
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.04 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 2019 NHÓM TÁC GIẢ
TS. NGÔ BÁ HÙNG & THS.NGUYỄN HỮU VÂN LONG lOMoAR cPSD| 58507440 MỤC LỤC iv lOMoAR cPSD| 58507440 DANH MỤC HÌNH ẢNH
Hình 1.1 Mô hình môi trường mạng ảo Kathará trên Docker. Nguồn: Kathará .......... 2
Hình 1.2 Hình thái mạng ảo cần mô phỏng được dựng trên Netkit Lab Generator ..... 3
Hình 1.3 Danh sách các ảnh được cung cấp bởi Docker Hub. Nguồn: Docker Hub ... 4
Hình 1.4 Ứng dụng triển khai trên Docker và máy ảo truyền thống. Nguồn: Docker . 7
Hình 1.5 Kết quả thực thi lệnh docker run hello-world ............................................... 8
Hình 1.6 Kết quả thực thi lệnh docker images ............................................................. 9
Hình 1.7 Kết quả thực thi lệnh vstart --eth 0:A pc1 ................................................... 10
Hình 1.8 Mô hình mạng sử dụng cho Bài tập 1 và Bài tập 2 ..................................... 10
Hình 1.9 Kết quả thực thi lệnh ifconfig trên máy ảo pc1 ........................................... 11
Hình 1.10 Các thư mục con và tệp tin trong thư mục BaiTap2 .................................. 13
Hình 1.11 Mô hình mạng sử dụng trong Bài tập 3 ..................................................... 14
Hình 1.12 Các thư mục con và tệp tin trong thư mục BaiTap3 .................................. 15
Hình 1.13 Mô hình mạng sử dụng trong Bài tập 4 ..................................................... 16
Hình 2.1 Giao diện tương tác chính trên Wireshark ................................................... 18
Hình 2.2 Cách thức áp dụng Wireshark trong thực hành Mạng máy tính CT112 ...... 19
Hình 2.3 Mô hình mạng sử dụng trong Bài tập 5 ....................................................... 19
Hình 2.4 Các thư mục con và tệp tin trong thư mục BaiTap5 .................................... 20
Hình 2.5 Mô hình mạng của Bài tập 6 ....................................................................... 23
Hình 2.6 Các thư mục con và tệp tin trong thư mục BaiTap6 .................................... 23
Hình 2.7 Sơ đồ tuần tự biểu diễn hoạt động của giao thức ARP từ pc1 đến pc3 ....... 26
Hình 2.8 Mô hình mạng sử dụng trong Bài tập 7 ....................................................... 28
Hình 3.1 Minh hoạt hoạt động của Bridge trong việc chuyển tiếp khung vật lý ....... 29
Hình 3.2 Hoạt động của các Bridge khi gửi khung từ N1 sang N6 (chiều đi) ........... 31
Hình 3.3 Đa giao tiếp cùng lúc giữa các máy bằng giàn hoàn chuyển trên Switch ... 32
Hình 3.4 Linux Bridge trong mạng ảo Kathará và mạng thực ................................... 32
Hình 3.5 Mô hình mạng sử dụng trong Bài tập 8 ....................................................... 33
Hình 3.6 Các thư mục con và tệp tin trong thư mục BaiTap8 .................................... 34
Hình 3.7 Mô hình mạng sử dụng trong Bài tập 9 ....................................................... 37
Hình 3.8 Mô hình mạng sử dụng trong Bài tập 10 ..................................................... 40
Hình 3.9 Các thư mục con và tệp tin trong thư mục BaiTap10 .................................. 41
Hình 3.10 Mô hình mạng sử dụng trong Bài tập 11 ................................................... 41
Hình 4.1 Kiến trúc dịch vụ quagga (zebra) trên Linux kernel. Nguồn: netkit.org ..... 43
Hình 4.2 Mô hình mạng sử dụng trong Bài tập 12 ..................................................... 45
Hình 4.3 Các thư mục con và tệp tin trong thư mục BaiTap12 .................................. 46
Hình 4.4 Các thư mục con và tệp tin trong thư mục router1 (và các router khác) ..... 46
Hình 4.5 Thông tin vạch đường được lưu trữ trong dịch vụ ripd của router2 ............ 49
Hình 4.6 Thông tin file BT12_router1.pcap hiển thị trên Wireshark ......................... 50 lOMoAR cPSD| 58507440
Hình 4.7 Hủy đi kết nối giữa router1 và router3 thông qua nhánh mạng G ...............50
Hình 4.8 Mô hình mạng sử dụng trong Bài tập 13 .....................................................52
Hình 4.9 Các thư mục con và tệp tin trong thư mục router1 (và các router khác) .....53
Hình 4.10 Thông tin vạch đường được lưu trữ trong dịch vụ ospfd của router2........55
Hình 4.11 Thông tin file BT13_router1.pcap hiển thị trên Wireshark .......................56
Hình 4.12 Mô hình mạng sử dụng trong Bài tập 14 ...................................................57
Hình 5.1 Cấu trúc thông điệp request kiểu GET được gửi đi của slient .....................60
Hình 5.2 Cấu trúc thông điệp response được gửi đi của server ..................................60
Hình 5.3 Minh họa triển khai hệ thống DNS của tổ chức X ......................................61
Hình 5.4 Hệ thống thư điện tử của tổ chức X trên cùng một vùng đụng độ...............62
Hình 5.5 Mô hình mạng sử dụng trong Bài tập 15 .....................................................63
Hình 5.6 Các thư mục con và tệp tin trong thư mục BaiTap15 ..................................63
Hình 5.7 Thông tin file BT15_webserver.pcap hiển thị trên Wireshark .....................65
Hình 5.8 Các thư mục con và tệp tin trong thư mục BaiTap16 ..................................67
Hình 5.9 Cấu trúc thư mục máy ảo pc1 và nội dung file resolv.conf .........................67
Hình 5.10 Các thư mục con và tệp tin trong thư mục /etc/bind của dịch vụ bind ......67
Hình 5.11 Sequence diagram mô tả hoạt động của dịch vụ DNS trong tổ chức X ....69
Hình 5.12 Các thư mục con và tệp tin trong thư mục BaiTap17 ................................71
Hình 5.13 Các thư mục con và tệp tin trong thư mục dnslug/etc/ ..............................71
Hình 5.14 Các thư mục con và tệp tin trong thư mục shared/usr/ ..............................72
Hình 5.15 Giao diện Main Menu của phần mềm pine ................................................72
Hình 5.16 Thông điệp mẫu giao tiếp giữa pc1 (C) và MTA (S). Nguồn: Wikipedia ..73
Hình 5.17 Thông điệp mẫu giao tiếp giữa pc2 (C) và MX (S). Nguồn: Wikipedia ...76
Hình 6.1 Mô hình mạng sử dụng trong Bài tập 18 .....................................................78
Hình 6.2 Mô hình mạng sử dụng trong Bài tập 19 .....................................................80
Hình 6.3 Mô hình mạng sử dụng trong Bài tập 20 .....................................................81
Hình 6.4 Các thư mục con và tệp tin trong thư mục BaiTap20 ..................................82 vi lOMoAR cPSD| 58507440 DANH MỤC BẢNG
Bảng 1.1 Nhóm lệnh v-commands và l-commands của Kathará ................................6
Bảng 3.1 Cấu trúc một Mac Learning Table trên Transparent Bridge ...................... 29
Bảng 4.1 Các lệnh thông dụng để thao tác với dịch vụ Quagga................................ 44
Bảng 5.1 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.1 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 lOMoAR cPSD| 58507440
DANH MỤC THUẬT NGỮ TIẾNG ANH AS Autonomous System Miền tự trị Collision Domain Vùng đụng độ trong LAN Container Vật chứa Containerized Application
Ứng dụng hướng vật chứa GUI Graphical User Interface
Giao diện đồ họa tương tác người dùng Host Machine Máy thực Image
Ảnh dùng để khởi tạo máy ảo Internetworking Liên mạng LAN Local Area Nework Mạng cục bộ LAN Segment
Nhánh hoặc đoạn mạng trong LAN MAC address Medium Access Control address
Địa chỉ vật lý làm định danh của thiết bị Mac Lookup Table
Bảng đối chiếu địa chỉ MAC của switch Network Emulator Bộ mô phỏng mạng ảo Network Interface Giao diện mạng Network Topology Hình thái mạng Node Nút mạng OSI model Open Systems Interconnection
Mô hình tham chiếu kết nối các hệ thống mở Packet Sniffer and Analyzer
Bộ bắt và phân tích gói tin trong mạng Protocol Giao thức Routing Table Bảng vạch đường Terminal Giao diện d ng lệnh UML User Mode Linux
Hệ điều hành Linux dùng d ng lệnh Virtual Machine Máy ảo Virtualization Sự ảo hóa viii lOMoAR cPSD| 58507440
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.04) 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.1 CÔNG CỤ QUẢN TRỊ MẠNG TRÊN LINUX
- 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.2 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...dưới dạng các máy ảo Linux chỉ có giao diện d ng lệnh. lOMoAR cPSD| 58507440
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 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.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 Generator1. Đây là công cụ được phát triển kèm theo Kathará với mục
đích cung cấp môi trường đồ họa làm giảm tính phức tạp trong việc xây dựng mô
hình mạng dưới dạng các máy ảo. Hình 1.2 dưới đây mô tả một mạng ảo được xây
dựng bởi công cụ Netkit Lab Generator:
1 http://www.kathara.org/tools/nlg/. lOMoAR cPSD| 58507440
Hình 1.2 Hình thái mạng ảo cần mô phỏng được dựng trên Netkit Lab Generator
1.2.1 Các đặc điểm chính của Kathará
- Hoạt động trên nền tảng ảo hóa Docker.
- Máy thực (host machine) triển khai Kathará có thể chạy hệ điều hành Linux,
Window hoặc MacOS. Tuy nhiên, môi trường phù hợp nhất và được khuyến
khích triển khai Kathará đó là Linux.
- Các máy ảo (virtual machine) được xem là 1 nút (node) trong mô hình mạng được mô phỏng.
- 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 Applications2 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
2 https://www.docker.com/resources/what-container lOMoAR cPSD| 58507440
thư viện ảnh tại Docker Hub3 rất phong phú và sẵn dùng. Hình 1.3 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.
1.2.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 đó:
3 https://hub.docker.com/u/kathara/ lOMoAR cPSD| 58507440
- 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.1 v-commands l-commands
start Khởi động 1 máy ảo.
Khởi động một hoặc nhiều máy ảo
Ví dụ: vstart --eth 0:A pc1 trong 1 mạng ảo. Ví dụ: lstart
crash Dừng (forcefully stopped) 1 máy Dừng (forcefully) một hoặc nhiều
ảo. Máy ảo đó sẽ dừng mà không máy ảo trong mạng. Ví dụ:
quan tâm đến các hoạt động bên lcrash pc1
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 pc1 halt
Dừng (gracefully stopped) 1 máy Dừng (gracefully stopped) một
ảo. Máy ảo đó sẽ dừng khi tất cả hoặc nhiều máy ảo.
các hoạt động bên trong đã hoàn Ví dụ: lhalt
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 pc1 lOMoAR cPSD| 58507440
clean Dừng hoạt động của máy ảo và Dừng hoạt động của các máy ảo
các kết nối liên quan đến máy ảo và các kết nối liên quan đến các
đó. Tài nguyên cấp phát cho máy máy ảo đó. Tài nguyên cấp phát ảo bị thu hồi.
cho các máy ảo bị thu hồi. Ví dụ: vclean pc1 Ví dụ: lclean
config Giúp người dùng tạo ra các liên Không có
kết mới trên máy ảo (post
creation) sau khi máy ảo đã khởi động.
Ví dụ: vconfig --eth 2:C pc1
list Giúp người dùng quan sát được Không có
cái thông số hữu ích liên quan đến
hoạt động của máy ảo trên máy thực (% CPU, %Mem...) Ví dụ: vlist pc1 wipe Không có
Lệnh sử dụng tương tự như lệnh lclean. Ví dụ: lwipe restart Không có
Khởi động lại một hoặc nhiều máy ảo trong mạng. Ví dụ: lrestart pc1
Bảng 1.1 Nhóm lệnh v-commands và l-commands của Kathará
1.2.3 Cài đặt Docker và 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,
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.
- Đối với hệ điều hành Ubuntu 18.04, các thao tác cài đặt phải được thực hiện
bằng tài khoản người dùng có thẩm quyền. lOMoAR cPSD| 58507440
- Các lệnh cài đặt được thực hiện trên terminal của Ubuntu 18.04.
- 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.04 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.
1) Cài đặt Docker trên Ubuntu 18.04 (hoặc mới hơn) có thể tham khảo trong tài
liệu này4. 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 https://docs.docker.com/install/linux/docker-ce/ubuntu/
5 https://docs.docker.com/config/daemon/systemd/ lOMoAR cPSD| 58507440
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
- Có thể kiểm tra thử hoạt động của Docker bằng cách khởi động một
Containerized Application từ ảnh là hello-world. Ảnh này không có sẵn trên
máy cài đặt Docker, chính vì vậy Docker sẽ kết nối đến Docker Hub để tải
ảnh về và sử dụng để khởi động Containerized Application. Lệnh sử dụng
để thực thi công việc này là: docker run hello-world
Hình 1.5 Kết quả thực thi lệnh docker run hello-world
- Nếu người dùng có nhu cầu thực thi một ứng dụng hay dịch vụ nào đó, chẳng hạn
hệ điều hành Ubuntu trên một Containerized Application, thì có thể tìm kiếm
phiên bản phù hợp của ứng dụng và thực thi giống như hướng dẫn trên. docker search ubuntu
2) Cài đặt Python 3 (trường hợp sử dụng phiên bản thấp hơn 18.04) bằng lệnh: sudo apt-install python3
3) Đặt Python 3 thay thế cho Python 2.7 có sẵn bằng lệnh sau: alias python=python3
4) Trường hợp Python bị thiếu thư viện ipaddress thì có thể tiến hành cài đặt trực tiếp như sau: lOMoAR cPSD| 58507440 pip install ipaddress
5) Cài đặt Wrapper để đảm bảo tín an ninh (security) và riêng tư (privilege) trong
vận hành giữa các mạng ảo trên Docker. Ngoài ra Wrapper c n rất cần thiết
trong việc mở rộng sử dụng Kathará giữa các máy tính thực chia sẻ tài nguyên với nhau (shared computer).
sudo apt install build-essential
6) Cài đặt Xterm terminal để cho phép truy cập vào các máy ảo và điều khiển trực
tiếp chúng. Xterm thường đã cài đặt sẵn trên các phiên bản của Ubuntu. sudo apt install xterm
7) Truy cập: https://github.com/KatharaFramework/Kathara/releases. Chọn tải về
Source code (zip). Giải nén file .zip đã tải về, được thư mục Kathara- 0.36.1
8) Sao chép thư mục Kathara-0.36.1 vào trong thư mục /home của máy thực.
Đặt lại tên cho thư mục vừa sao chép được là KatharaMMT/
9) Mở file bashrc của người dùng hiện hành trên máy thực bằng lệnh: nano
~/.bashrc. Di chuyển đến cuối file .bashrc và thêm vào nội dung sau đây để
đặt biến môi trường cho Kathará:
export NETKIT_HOME=~/KatharaMMT/bin
export PATH=$PATH:$NETKIT_HOME export MANPATH=:$NETKIT_HOME/man
10) Thực thi việc cài đặt Kathará lên Docker bằng lệnh sau đây: $NETKIT_HOME/install
11) Sau khi hoàn tất quá trình cài đặt, Docker trên máy cục bộ đã có thông tin của
ảnh mà Kathará dùng để tạo ra các máy ảo. Kiểm tra thông tin ảnh đang được
quản lý bởi Docker bằng lệnh: docker images
Hình 1.6 Kết quả thực thi lệnh docker images
12) Khởi động 1 máy ảo để thử nghiệm việc cài đặt. Nếu máy ảo được khởi động
thành công nghĩa là quá trình cài đặt đã hoàn tất chính xác. Lệnh để khởi động
1 máy ảo (đặt tên là pc1) như sau: lOMoAR cPSD| 58507440 vstart --eth 0:A pc1
Hình 1.7 Kết quả thực thi lệnh vstart --eth 0:A pc1
13) Trên máy thực, tắt và xóa máy ảo bằng lệnh: vclean pc1
1.3 BÀI TẬP THỰC HÀNH
Các thao tác trong phần hướng dẫn thực hành được diễn giải theo từng bước một.
Căn cứ vào công việc cụ thể trong nội dung thực hành, sinh viên có thể thực hiện
1 trong 2 cách sau: 1) sử dụng lệnh qua terminal hoặc 2) sử dụng thao tác trên GUI
của Linux
; hoặc kết hợp cả 2 cách. Các phần hướng dẫn thực hành được trình bày
dưới đây sẽ sử dụng cách 1). 1.3.1 Bài tập 1
Hình 1.8 Mô hình mạng sử dụng cho Bài tập 1 và Bài tập 2
Mục tiêu: Xây dựng một mạng LAN đơn giản theo Phương pháp 1. Các bước thực
hiện Bài tập 1 được trình bày chi tiết như sau: