A1: Mô phỏng hệ thống bằng công cụ máy ảo

Hệ thống mạng và máy chủ, máy trạm phục vụ các bài thực hành về lý thuyết có cấu trúc như hình vẽ trên. Các router kết nối với nhau theo qui tắc phân mạng nào đó và nối với các máy chủ hoặc máy trạm. Người quản trị có thể ngồi trên một máy trạm và tạo các phiên làm việc ssh đến các router hoặc server. Môi trường logic nêu trên được giả lập bằng hệ thống máy ảo chạy hệ điều hành CentOS trong một máy vật lý (máy host) chạy hệ điều hành Windows, MacOS, Linux, v.v.. với công cụ ảo hóa Oracle VirtualBox. Các máy ảo CentOS này thực hiện các chức năng của router, server hoặc các máy trạm làm việc.

1. Oracle VirtualBox

Cho phép tạo ra nhiều máy ảo chạy trên máy tính bạn đang sử dụng. Oracle VirtualBox có chức năng tương tự VMWare nhưng là phiên bản mã nguồn mở và được Oracle cung cấp miễn phí. VirtualBox có thể được download miễn phí tại đây: https://www.virtualbox.org/
Sau khi cài đặt và tạo các máy ảo, giao diện của VirtualBox có dạng như sau:

2. VirtualBox Image

Mỗi máy ảo tạo ra trong VirtualBox có thể được thiết lập thông số cấu hình như một máy vật lý bình thường, bao gồm tốc độ CPU, dung lượng bộ nhớ, số giao diện kết nối mạng, v.v.. Sau khi thiết lập các thông số này, cũng như một máy vật lý thông thường, cần cài đặt hệ điều hành cho máy ảo. Trong các bài thực hành, router hoặc các máy chủ, máy trạm đều sử dụng hệ điều hành CentOS phiên bản 6.6. Để không mất thời gian cài đặt hệ điều hành, có thể download các image có sẵn trên trang web sau:

http://www.osboxes.org/virtualbox-images/

Khuyến cáo nên sử dụng image máy ảo CentOS 6.6 minimal x86_64 vì có kích thược gọn (323 Mbytes), không làm máy ảo nặng nề chiếm dụng quá nhiều tài nguyên của máy host (lưu ý là cùng một lúc, để giả lập hệ thống mạng như thực tế, cần rất nhiều máy ảo cùng hoạt động với các vai trò khác nhau như router, máy chủ, máy trạm). Sau khi import các image này vào VirtualBox và khởi động máy ảo, ta nhận được giao diện sử dụng dòng lệnh (command line) của các máy ảo này:

Cũng có thể cài đặt thêm các hỗ trợ giao diện đồ họa cho máy ảo để dễ dàng hơn cho các thao tác vận hành. Thông thường, máy ảo với chức năng là trạm làm việc của admin cần có giao diện đồ họa để làm việc song song trên nhiều cửa sổ. Với các máy ảo router hoặc server, chỉ cần giao diện dòng lệnh và có thể kết nối ssh từ máy trạm admin đến các máy ảo này. Hình vẽ bên dưới là một máy trạm của admin sử dụng giao diện đồ họa GNOME kết nối ssh đến nhiều máy chủ và router.

3. Tạo các máy ảo CentOS và thiết lập cấu hình vật lý

Import từ image CentOS-6.6 để tạo các máy ảo. Các máy ảo chú ý cần thiết lập cấu hình đủ cho năng lực tính toán. Tuy nhiên, cấu hình máy ảo không được vượt cấu hình máy host, nếu không sẽ xảy ra tình trạng hệ thống host bị quá tải. Khi cấu hình các thông số cho máy ảo như Memory, Processor, v.v.. khoảng thông số màu xanh là khoảng an toàn.

Chú ý khi import cần thiết lập lại các địa chỉ MAC của card mạng để tránh hiện tượng các máy ảo có cùng địa chỉ MAC. Mỗi máy ảo cần có 1 card mạng cấu hình kiểu NAT để cho phép kết nối ra Internet thông qua đường mạng của máy host Windows. Ta sẽ cần kết nối Internet này để cài đặt thêm các gói phần mềm trong quá trình sử dụng.
Để dễ theo dõi, nên đặt tên các máy ảo CentOS theo chức năng thay vì dùng tên mặc định localhost. Sửa đổi tham số HOSTNAME trong file /etc/sysconfig/network và reboot máy ảo. Lưu ý rằng khi khởi động máy ảo, card mạng thường được đặt tên là eth0 (sử dụng lệnh ifconfig -a để xem thông tin tất cả card mạng). Do địa chỉ MAC của card mạng đã được thay đổi nên file cấu hình card mạng eth0 có sẵn trong image CentOS-6.6 (/etc/sysconfig/network-scripts/ifcfg-eth0) chứa địa chỉ MAC không còn đúng với địa chỉ MAC mới của card mạng. Hệ điều hành CentOS kiểm tra địa chỉ MAC trong file cấu hình và của card mạng máy chủ, thấy khôn khớp nhau sẽ tự động đổi lại tên của card mạng này (thường là thành eth1). Để card mạng eth1 này nhận được địa chỉ IP theo cơ chế NAT từ host Windows, cần tạo file cấu hình tương ứng /etc/sysconfig/network-scripts/ifcfg-eth1 như sau (có thể copy từ file cấu hình cho eth0):

> cat /etc/sysconfig/network-scripts/ifcfg-eth1
DEVICE=eth1
BOOTPROTO=dhcp
ONBOOT=yes

Khởi động lại máy ảo và dùng ifconfig -a để kiểm tra địa chỉ IP đã được gán đúng cho card mạng. Nếu thành công, card mạng sẽ được cấu hình địa chỉ tự động dạng 10.0.2.x và dùng ping có thể kiểm tra kết nối từ máy ảo đến một máy bất kỳ trên mạng Internet.
Nếu cần thiết, có thể sử dụng lệnh /sbin/ip để thiết lập lại tên các card mạng theo qui tắc nào đó để việc quản lý dễ dàng hơn:

[root@localhost ~]# ip link set eth1 down
[root@localhost ~]# ip link set eth1 name eth0
[root@localhost ~]# ip link set eth0 up
[root@localhost ~]# ifconfig -a
eth0      Link encap:Ethernet  HWaddr 08:00:27:76:80:1E
inet addr:10.0.2.15  Bcast:10.0.2.255  Mask:255.255.255.0
inet6 addr: fe80::a00:27ff:fe76:801e/64 Scope:Link
UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
RX packets:5316 errors:0 dropped:0 overruns:0 frame:0
TX packets:2744 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:6437192 (6.1 MiB)  TX bytes:152811 (149.2 KiB)

4. Thiết lập các kết nối mạng ảo

Đối với các card mạng để kết nối giữa các máy ảo, có thể chọn loại Internal Network hoặc Host-only Adapter. Với  Host-only Adapter, tất cả các card mạng này sẽ được kết nối với duy nhất một mạng LAN ảo. Có nghĩa là một frame ở tầng 2 gửi đi từ một card mạng trong một máy ảo sẽ nhận được ở các card mạng trên tất cả các máy ảo khác. Trường hợp Internal Network, cần đưa thêm thông số “Name” khi cấu hình card mạng này để thiết lập mạng LAN ảo. Nguyên tắc là khi 2 card mạng Internal Network trên 2 máy cấu hình với cùng một Name tức là 2 máy này được kết nối vào cùng một LAN. Nếu 2 card mạng Internal Network trên 2 máy được cấu hình với 2 Name khác nhau có nghĩa là 2 máy này được nối vào 2 mạng LAN riêng biệt.
Trong các bài thực hành, trừ các kết nối ra Internet (sử dụng NAT) và các kết nối để máy ảo liên lạc được với máy host (sử dụng Host-only Adapter), tất cả các card mạng của các máy ảo đều được cấu hình kiểu Internal Network cùng với thông số Name phù hợp để các máy ảo này được kết nối vào các mạng LAN theo đúng sơ đồ vật lý.
Để cấu hình cho phép kết nối giữa máy ảo và máy host, cấu hình network cho máy ảo bằng cách thêm một card mạng thứ hai thuộc kiểu Host-only Adapter. Khi chọn cấu hình này, máy host windows sẽ được tự động tạo thêm một card mạng (ảo) có tên Ethernet adapter VirtualBox Host-Only Network. Mở command line của windows và dùng lệnh ipconfig /all để xem địa chỉ IP của card mạng này (thường là 192.168.56.1). Vào máy ảo CentOS và đặt địa chỉ IP cho card mạng này một cách phù hợp (giả sử là 192.168.56.2). Có thể thiết lập địa chỉ IP mặc định cho máy ảo CentOS bằng cách tạo mới hoặc sửa đổi file cấu hình /etc/sysconfig/network-scripts/ifcfg-eth1 với nội dung như sau:

DEVICE="eth1"
IPADDR=192.168.56.2
NETMASK=255.255.255.0

Khởi động lại máy ảo CentOS và sử dụng lệnh ping để kiểm tra kết nối giữa các máy ảo với nhau và giữa máy ảo với máy host.

5. Thiết lập băng thông giới hạn cho các đường mạng ảo

Thiết lập băng thông giới hạn cho các card mạng (cần thiết khi thực hiện các bài thực hành liên quan đến QoS) cần sử dụng VBoxManage command line trên máy host. Ví dụ sau thiết lập giới hạn băng thông 10Mbps cho 2 card mạng số 3 và số 4 của máy ảo có tên R4:

VBoxManage bandwidthctl "R4" add Limit10m --type network --limit 10m

VBoxManage modifyvm "R4" --nicbandwidthgroup3 Limit10m

VBoxManage modifyvm "R4" --nicbandwidthgroup4 Limit10m

Để hủy giới hạn băng thông đã thiết lập cho các card mạng:


VBoxManage modifyvm "R4" --nicbandwidthgroup3 none

VBoxManage modifyvm "R4" --nicbandwidthgroup4 none

6. Cài đặt giao diện đồ họa GNOME

Để cài đặt giao diện đồ họa GNOME cho CentOS, sử dụng trình điều khiển cài đặt yum:


[root@localhost ~]# yum groupinstall -y “Desktop” “Fonts”

Chạy GNOME bằng lệnh startx. Thiết lập lại phần font fix của GNOME là terminus để tránh hiện tượng chữ bị chồng lên nhau trong GNOME Terminal
Để xử lý tăng độ phân giải màn hình và chia sẻ clipboard giữa các máy ảo CentOS với máy host Windows, cần cài đặt thêm một số package (Extension Pack) cho các máy ảo. Các package này được cung cấp theo Live CD/DVD (hình vẻ bên dưới) hoặc có thể download trên VirtualBox web site rồi đưa vào Optical Drive. Trước khi cài đặt phần Extentoin Pack này, cần chuẩn bị một số package trong máy ảo CentOS:


[root@localhost ~]# yum update
-- để tải các phiên bản mới nhất cho các phần mềm hệ thống đã cài trong máy ảo CentOS

[root@localhost ~]# yum install dkms perl

[root@localhost ~]# reboot
-- để các package vừa cài đặt được cập nhật vào hệ thống

Đưa “đĩa CD” Extension Pack vào ổ đỉa của máy ảo, CD sẽ được mount trong thư mục /media/…

Vào thư mục này và chạy lệnh install Extension Pack. Cuối cùng, cần khởi động lại máy ảo để hoàn tất cài đặt phần Extension Pack.


[root@localhost ~]# cd /media/VBOXADDITIONS_5.1.0_108607

[root@localhost ~]# ./VBoxLinuxAdditions.run

[root@localhost ~]# reboot

Sau khi khởi động máy ảo và login, xóa bỏ file cấu hình GNOME cũ để hệ thống tự cập nhật cấu hình mới với card màn hình vừa được cài đặt theo Extension Pack. Sau khi khởi động GNOME, máy sẽ tự động nhận màn hình với độ phân giải tối đa. Ngoài ra, chức năng share clipboard giữa máy ảo và máy host cũng có hiệu lực.


[root@localhost ~]# cd /etc/X11

[root@localhost ~]# mv ./xorg.conf ./xorg.conf-backup

[root@localhost ~]# startx

Để hỗ trợ tính năng chụp màn hình, cần cài đặt thêm package gnome-utils

[root@localhost ~]# yum install gnome-utils

7. Cài đặt XServer & XClient

GNOME là một cài đặt dựa trên kiến trúc XWindows. Đây là một kiến trúc kết nối client-server, cho phép các máy XClient kết nối đến máy XServer và thực thi các chương trình có giao diện đồ họa trên XServer. Thông thường, XClient là các máy đã được thiết lập đầy đủ giao diện đồ họa (ví dụ GNOME) trong khi XServer là các máy chủ yếu đảm nhiệm công việc tính toán hoặc là Gateway kết nối mạng và không được cấu hình giao diện đồ họa, thậm chí là không có màn hình. Khi thực thi các chương trình trên XServer, tiến trình chạy trên máy server này như một tiến trình bình thường, tuy nhiên toàn bộ dữ liệu giao diện sẽ được chuyển về XClient và hiển thị trên một cửa sổ của chương trình này.
Tại máy XServer cần cấp phép kết nối từ XClient. Có thể cấp phép theo từng địa chỉ IP cho từng trạm XClient, hoặc cho phép kết nối từ bất cứ máy XClient nào:

[root@R2 ~]# xhost +
access control disabled, clients can connect from any host

Trên máy server, cần cài đặt các gói phần mềm hỗ trợ kết nối XClient:

[root@C1 ~]# yum install xorg-x11-xauth xorg-x11-utils xorg-x11-fonts-*

Sau khi đã cài đặt các phần mềm cần thiết, mở một kết nối ssh từ máy XClient đến máy XServer với tham số -X. Tham số này thông báo ssh tự động thiết lập các cầu hình cần thiết để khi thực thi một ứng dụng đồ họa trên server trong phiên ssh, giao diện đồ họa sẽ được hiển thị trên máy client. Sau khi kết nối ssh, kiểm tra biến môi trường DISPLAY đã được tự động thiết lập:

[root@R2 ~]# ssh fec2::7 -X
root@fec1::7's password:

[root@R1 ~]# echo $DISPLAY
localhost:10.0

Có thể cài đặt một ứng dụng đồ họa đơn giản như máy tính cá nhân trên XServer rồi thực thi nó để thấy giao diện đồ họa đã được hiển thị trên XClient.