HỒ CHÍ MINH TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN KHOA MẠNG MÁY TÍNH VÀ TRUYỀN THÔNG BÁO CÁO THỰC TẬP COMPILE DỊCH VỤ TRÊN HỆ ĐIỀU HÀNH LINUX Giảng viên hướng dẫn: ThS... Hồ Chí Minh với
Trang 1ĐẠI HỌC QUỐC GIA TP HỒ CHÍ MINH TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN
KHOA MẠNG MÁY TÍNH VÀ TRUYỀN THÔNG
BÁO CÁO THỰC TẬP
COMPILE DỊCH VỤ TRÊN HỆ ĐIỀU HÀNH LINUX
Giảng viên hướng dẫn: ThS LÊ ĐÌNH VIỆT HẢI
Sinh viên thực hiện:
Huỳnh Đắc Nhân 10520334 Nguyễn Đăng Khoa 10520 467
Lê Đoàn Thành Tâm 10520468 Hồng Minh Nhân 10520615
TP Hồ Chí Minh, tháng 8 năm 2014
Trang 2LỜI CẢM ƠN
Để có được những kiến thức và kinh nghiệm như ngày hôm nay, nhóm em xin gửi lời cám
ơn chân thành và sâu sắc tới các thầy, các cô trong Trường Đại Học Công nghệ Thông Tin nói chung cùng các thầy cô trong khoa Mạng Máy Tính và Truyền Thông nói riêng đã tận tình giảng dạy, truyền đạt cho nhóm em những kiến thức, kinh nghiệm quý báu trong suốt thời gian qua
Đặc biệt, nhóm em xin gởi lời cảm ơn chân thành đến Ths.Lê Đình Việt Hải - người đã trực tiếp hướng dẫn nhóm thực hiện đề tài này Trong quá trình thực tập và làm việc với thầy, nhóm em không ngừng tiếp thu thêm nhiều kiến thức bổ ích, những bài học đạo đức quý giá và có thể tự tin hoàn thành tốt đề tài của mình
Sau cùng, nhóm chúng em xin gửi lời cảm ơn chân thành tới bạn bè đã có những đóng góp
ý kiến và giúp đỡ trong quá trình thực hiện đề tài này
Mọi lời góp ý của thầy nhóm xin chân thành lắng nghe và tiếp thu
Một lần nữa, nhóm em xin chân thành cảm ơn!
TP Hồ Chí Minh, tháng 8/2014 Nhóm thực hiện đề tài
Trang 3NHẬN XÉT
(Cơ quan thực tập)
TP Hồ Chí Minh, tháng 8/2014
Trang 5Mục lục
CHƯƠNG 1: GIỚI THIỆU CÔNG VIỆC THỰC TẬP 1
1.1 Giới thiệu về trung tâm mạng ĐH Quốc Gia TP HCM 1
1.2 Nhiệm vụ, dịch vụ của trung tâm mạng ĐH Quốc Gia TP HCM 1
1.3 Giới thiệu về công việc thực tập 2
1.3.1 Thời gian thực tập 2
1.3.2 Công việc thực tập 2
CHƯƠNG 2: NỘI DUNG THỰC TẬP 3
2.1 Nhiệm vụ 3
2.2 Nội dung thực tập 3
2.2.1 Tìm hiểu về Hệ điều hành Linux 3
2.2.2 Compile kernel trên Linux 6
2.2.3 Compile một số dịch vụ trên trên Linux 11
2.3 Các công nghệ tiếp cận 14
2.3.1 Sơ lược về ảo hóa 14
2.3.2 Tổng quan về VMware ESX Server 15
CHƯƠNG 3: KẾT LUẬN 24
TÀI LIỆU THAM KHẢO 25
Trang 61
CHƯƠNG 1: GIỚI THIỆU CÔNG VIỆC THỰC TẬP
1.1 Giới thiệu về trung tâm mạng ĐH Quốc Gia TP HCM
Ban được thành lập trực thuộc Nhà Điều Hành ĐHQG, đặt tại lầu 4, phòng 401 toà Nhà Điều Hành ĐHQG TP Hồ Chí Minh với các quyền và nghĩa vụ sau:
Thực hiện công tác quản lý mạng Đại Học Quốc Gia Tp.HCM bao gồm: quản lý các thiết bị mạng máy tính, mạng điện thoại, hệ thống cáp mạng, trình Ban Giám Hiệu các báo cáo định kỳ về tình trạng hoạt động của chúng, đề nghị hướng giải quyết sự cố liên quan đ ến chúng
Thiết lập, theo dõi và duy trì hoạt động 24 giờ / ngày liên tục trong năm đối với dịch vụ mạng trường Phối hợp với các mạng đơn vị trong trường đảm bảo tốt cho hoạt động các dịch vụ mạng trường, bảo vệ thông tin dữ liệu trong mạng trường
1.2 Nhiệm vụ, dịch vụ của trung tâm mạng ĐH Quốc Gia TP HCM
Trung tâm mạng Đại học Quốc Gia TP Hồ Chí Minh cung cấp và quản lý các dịch
vụ mạng một cách hiệu quả cho các trường thành viên trong khối Đại học Quốc Gia như:
Cung cấp các dịch vụ mạng máy tính tin cậy và hiệu quả cho các đơn vị và cá nhân trong trường, bao gồm: thực hiện các hoạt động thường xuyên và định kỳ như duy trì, sửa chữa và cập nhật tài liệu kiến trúc mạng máy tính trường như hệ thống chuyển mạch tại trung tâm và các chi nhánh, hệ thống máy chủ mạng trường, hệ thống cáp truyền dẫn, xử lý các yêu cầu về di chuyển, thêm, thay đổi, tài khoản sử dụng mạng trường hoặc các máy tính hay các hệ thống mạng của các đơn vị
Cung cấp các dịch vụ điện thoại tin cậy và hiệu quả cho các đơn vị và cá nhân trong trường, bao gồm: thực hiện các hoạt động thường xuyên và định kỳ bao gồm duy trì, sửa chữa, và cập nhật tài liệu kiến trúc mạng điện thoại như tổng đài điện thoại nội bộ, hệ thống cáp điện thoại, xử lý các yêu cầu về di chuyển, thêm, thay đổi, sửa chữa cũng như hóa đơn cước, danh bạ điện thoại, …
Hỗ trợ kỹ thuật về CNTT cho mọi đối tượng trong Đại Học Quốc Gia Tp.HCM bao gồm: thiết kế và dự toán kinh phí xây dựng các hệ thống mạng cục bộ của các đơn vị, triển khai các ứng dụng mạng, giúp nhà trường trong công tác tổ chức các lớp tập huấn CNTT cho cán bộ công nhân viên, sửa chữa và cài đặt máy vi tính
Phối hợp với các đơn vị chức năng giúp nhà trường hoạch định kế hoạch phát triển về CNTT trong trường Đại Học Quốc Gia TP HCM bao gồm: quy hoạch
Trang 7 Quản lý, phân bổ dịch vụ mạng công bằng, hợp lý Trực tiếp phân bổ dịch vụ mạng, ban hành các biểu mẫu liên quan, tạo điều kiện dễ dàng cho các đơn vị và
cá nhân trong trường đăng ký, thay đổi hay hủy bỏ việc sử dụng các dịch vụ mạng, tiến tới thực hiện trực tuyến qua mạng máy tính trong trường
Phối hợp với quản trị mạng các đơn vị trường trong Đại Học Quốc Gia Tp.HCM
để duy trì các kết nối mạng trường và các dịch vụ mạng Đại Học Quốc Gia Tp.HCM và các mạng cục bộ đơn vị
1.3 Giới thiệu về công việc thực tập
Trang 83
CHƯƠNG 2: NỘI DUNG THỰC TẬP
2.1 Nhiệm vụ
Tìm hiểu các tập lệnh cơ bản trong Linux
Tìm hiểu Công nghệ ảo hóa Vmware trên Client và trên Cloud…
Tìm hiểu và thực hiện Compile kernel trên Máy ảo và trên Server
Nghiên cứu về IPTables, cách cấu hình mạng căn bản trong Linux
Tìm hiểu về các dịch vụ trên Linux, cấu hình một số dịch vụ cơ bản
(OpenSSL, OpenSSH…) trên Linux 2.2 Nội dung thực tập
2.2.1 Tìm hiểu về Hệ điều hành Linux
2.2.1.1 Sơ lược
Linux là một hệ thống Unix tự do được hình thành từ một đồ án giải trí của một sinh viên người Phần Lan : Linus Torvalds, lấy nguồn cảm hứng từ Minix, một hệ thống Unix nhỏ do Andy Tanenbaum thiết kế Tháng 10/1991 Linus Torvalds công bố version chính thức đầu tiên của Linux (version 0.02)
Ngày nay, Linux là một hệ thống 32-bits, multi-tasking, multi-user,
mạng nó được cài trên phần lớn máy PC (có thể chung với những hệ điều hành khác) Nó hỗ trợ đủ loại chương trình khác nhau như X Windows, TCP/IP, C/C++GNU và những công cụ khác của GNU, thư điện tử, những công cụ với LateX hoặc những tiện ích cho văn phòng (ApplixWare, StartOffice)
Sự thành công của Linux dựa vào nhiều yếu tố như :
o Linux là hệ điều hành mã nguồn mở, tương thích với một số lớn các chuẩn của Unix ở mức độ mã nguồn, bao gồm những đặc tính của POSIX, system V, và BSD
o Linux là một hệ điều hành UNIX tiêu biểu với các đặc trưng là đa người dùng, đa chương trình và đa xử lý
o Linux có giao diện đồ hoạ (GUI) thừa hưởng từ hệthống X-Window Linux hỗ trợ nhiều giao thức mạng, bắt nguồn và phát triển từ dòng BSD Thêm vào đó, Linux còn hỗ trợ tính toán thời gian thực
o Linux khá mạnh và chạy rất nhanh ngay cảkhi nhiều quá trình hoặc nhiều cửa sổ
o Linux hỗ trợ tốt cho tính toán song song và máy tính cụm (PC-cluster)
là một hướng nghiên cứu triển khai ứng dụng nhiều triển vọng hiện nay…
Trang 9 Thư viện hệ thống xác định một tập chuẩn các hàm để các ứng dụng tương tác với nhân, và thi hành nhiều chức năng của hệ thống nhưng không cần có các đặc quyền của mô đun thuộc nhân Một hệ thống con điển hình được thi hành dựa trên thư viên hệ thống là hệ thống file Linux
Tiện ích hệ thống là các chương trình thi hành các nhiệm vụ quản lý riêng rẽ, chuyên biệt Một số tiện ích hệ thống được gọi ra chỉ một lần để khởi động
và cấu hình phương tiện hệ thống, một số tiện ích khác, theo thuật ngữ UNIX được gọi là trình chạy ngầm (daemon), có thể chạy một cách thường xuyên (thường theo chu kỳ), điều khiển các bài toán như chấp nhận các kết nối mạng mới đến, tiếp nhận yêu cầu logon, hoặc cập nhật các file log…
2.2.1.3 Giới thiệu về Shell và Shell Scripts trong Linux
Mục đích
Shell có 3 mục đích chính như sau:
o Tương tác (interactive use)
o Đặt biến môi trường với mỗi người sử dụng
o Lập trình
Trong đó, tương tác được coi là đơn giản và sử dụng nhiều nhất, shell sẽ đợi
người sử dụng gõ các lệnh tạo dấu nhắc, sau đó gửi tới hệ thống yêu cầu từ lệnh nhận được
Trang 105
Thiết lập biến môi trường: Unix shell xác định các biến để điều khiển môi
trường của người sử dụng đối với mỗi phiên sử dụng Việc đặt này sẽ xác định với hệ thống những tham số như thư mục nào sẽ được sử dụng làm thư mục chính, nơi đặt mail, những thư mục nào được sự dụng mặc định khi người dùng gọi đến các lệnh Unix,… Một số biến hệ thống có thể được đặt trong tệp khởi động (Start-up file) và được đọc khi người dùng đăng nhập
Lập trình: Shell cung cấp tập lệnh đặc biệt mà từ đó có thể tạo nên những
chương trình, khi đó được gọi là Shell script Trên thực tế hầu hết các lệnh này có thể sử dụng trong cửa sổ lệnh của Unix và ngược lại, các lệnh trong Unix đều có thể sử dụng để viết trong shell script Shell script rất tiện lợi trong việc gộp nhiều lệnh độc lập thành một và thực hiện nhiều lần
Ngoài các lệnh đơn giản của hệ thống Linux, shell còn được bổ sung thêm các cấu trúc phức tạp như điều khiển rẽ nhánh (if/case), vòng lặp(for/while) Thông thường, các hệ thống có ít nhất một loại shell và chủ yếu Bourne shell được sử dụng để viết script
Tập tin /etc/passwd sẽ xác định loại shell nào sẽ được sử dụng mặc định trong hệ thống cho mỗi phiên làm việc Trong phần cuối của dòng lệnh chứa tên người dùng là thông tin về loại shell được sử dụng Thông tin có thể gồm một trong các dạng sau:
/bin/sh Bourne shell /bin/jsh Bourne shell kết hợp thêm module điều khiển tác vụ /bin/ksh Korn shell
/bin/csh C shell
Việc viết shell (hay lập trình shell scripts) cũng dựa trên các lệnh cơ bản, các quy tắc lập trình cơ bản của ngôn ngữ C
Trang 116
2.2.2 Compile kernel trên Linux
2.2.2.1 Tổng quan về Kernel trong Linux
Kernel linux (hạt nhân hệ điều hành Linux) là trung tâm điều khiển của hệ điều hành Linux, chứa các mã nguồn điều khiển hoạt động của toàn bộ hệ thống Hạt nhân được phát triển không ngừng, thường có 2 phiên bản mới nhất, một bản dạng phát triển mới nhất và một bản ổn định mới nhất Kernel được thiết kế theo dạng modules, do vậy kích thước thật sự của Kernel rất nhỏ Chúng chỉ tải những bộ phận cần thiết lên bộ nhớ, các bộ phận khác sẽ được tải lên nếu có yêu cầu sử dụng Nhờ vậy so với các hệ điều hành khác Linux không sử dụng lãng phí bộ nhớ nhờ không tải mọi thứ lên mà không cần quan tâm nó có sử dụng không Kernel được xem là trái tim của hệ điều hành Linux, ban đầu phát triển cho các CPU Intel 80386 Điểm mạnh của loại CPU này là khả năng quản lý bộ nhớ Kernel của Linux có thể truy xuất tới toàn bộ tính năng phần cứng của máy
2.2.2.2 Tại sao phải biên dịch (compile) Kernel ?
Cập nhật phiên bản Kernel mới hơn
Thêm các tính năng,các module mới
Bỏ bớt các tính năng không cần thiết của kernel cũ
Tạo 1 custom kernel
Tận dụng hết khả năng của CPU
Tăng cường khả năng bảo mật cho máy chủ Linux của bạn
2.2.2.3 Biên dịch kernel cho Hệ điều hành Linux
cd linux-2.4.19
Trang 127
Bước 2:Chọn cấu hình biên dịch
Có 2 phương án lựa chọn:
Make config: là phương tiện đơn giản và không đòi hỏi thêm bất cứ thư
viện nào khác để chạy công cụ
Make menuconfig: là công cụ cần tạo GUI đơn giản
Make xconfig: là phương tiện được dùng rộng rãi cho những hệ thống chạy
X Windows
Trang 138
Bước 3: Xây dựng kernel
Lần lượt thực hiện các lệnh sau:
• make dep: tạo dependency và các includes cần thiết cho kernel
• make clean: để dọn dẹp những “objects” vụn vặt, không cần thiết
• make bzImage: tạo kernel image
Hình minh họa lệnh make bzImage
Bước 4: Tạo và cài đặt kernel modules
Lần lượt thực hiện các lệnh sau:
• make modules: biên dịch và tạo ra các module
• make module_install: cài đặt các module vừa được biên dịch vào thư
mục /lib/modules/<kernel_version>
Trang 149
• Hoặc gom chung thành một lệnh: make modules modules_install
Hình minh họa lệnh make modules modules_install
Bước 5: Cài đặt kernel
Có 2 lựa chọn:
Cài đặt Kernel tự động
make install: thực hiện các thao tác cần thiết để thiết lập kernel mới
trên hệ thống Để cài Linux kernel mới, thực hiện lệnh:
#make install: ở chế độ super user tại thư mục chứa mã nguồn của
Linux kernel
Cài đặt Kernel thủ công
- Tạo initrd: là công cụ để tải các driver cần thiết cho kernel trong
quá trình khởi động Cú pháp:
#/sbin/mkinitrd /boot/initrd-<kerne_v>.img<kernel_v>
- Sao chép kernel và System.map
Lần lượt thực hiện các lệnh sau:
#cp /<source>/arch/i386/boot/bzImage /boot/bzImage-2.6.23
#cp /<source>/System.map-2.6.23 /boot/System.map-2.6.23
Trang 1611
2.2.3 Compile một số dịch vụ trên trên Linux
2.2.3.1 Giới thiệu về dịch vụ SSH
SSH (Secure Shell) là một chương trình để đăng nhập vào một máy tính thông qua mạng và thực thi các lệnh, đồng thời có thể do chuyển file SSH cung cấp một cơ chế chứng thực mạnh và đảm bảo an toàn trong liên lạc trên những kênh không an toàn Nó được thiết kế như một giải pháp thay thế cho rlogin, rsh, rcp
và rdist…
2.2.3.2 Các đặc điểm của dịch vụ OpenSSH
Tính bí mật (Privacy) của dữ liệu thông qua việc mã hóa mạnh mẽ
Tính toàn vẹn (Integrity) của thôn tin truyền, đảm bảo những thông tin này không bị biến đổi
Chứng minh xác thực (Authentication) nghĩa là bằng chứng để nhận dạng bên gửi và bên nhận
Giấy phép (Authorization) dùng để điều khiển truy cập đến tài khoản
Chuyển tiếp (Forwarding) hoặc tạo đường hầm để mã hóa những phiên khác dựa trên giao thức TCP/IP
2.2.3.3 Các bước chuẩn bị cài đặt
Phải cài đặt SSL, SSL cần để chạy OpenSSH trên hệ thống
Download package source từ http://www.openssh.com
Trang 1712
2.2.3.4 Tiến hành compile và cài đặt dịch vụ OpenSSH trên Linux
Bước 1: Copy source được download về vào thư mục /var/tmp trước khi giải nén
Lệnh để thực hiện
[root@deep /]#cp openssh-version.tar.gz /var/tmp/
[root@deep /]#cd /var/tmp/
[root@deep tmp]#tar xzpf openssh-version.tar.gz
Bước 2: OpenSSH cần UID và GID đúng để chạy trên hệ thống nhưng UID/GID
không thể chạy dưới quyền root, vì vậy cần tạo ra một một người dùng đặt biệt không có đặc quyền trên hệ thống để chạy sshd
Lệnh đối với OpenNA Linux
[root@deep tmp]#groupadd -g 39 sshd > /dev/null 2>&1 || : [root@deep tmp]#useradd -c "SSH Server" -d /var/empty -g 39 –s /bin/false -u 39 sshd > /dev/null 2>&1 || :
Lệnh đối với Red Hat Linux
[root@deep tmp]#groupadd -g 39 sshd > /dev/null 2>&1 || : [root@deep tmp]#useradd -u 39 -g 39 -s /bin/false -M -r -d var/empty sshd > /dev/null 2>&1 || :
Bước 3: Hiệu chỉnh lại tập tin shells (vi /etc/shells), thêm một shell “/bin/false”
Lệnh thực hiện
[root@deep tmp]# vi /etc/shells /bin/bash2
/bin/bash /bin/sh
/bin/false ← shell được thêm vào
Bước 4: Di chuyển lại thư mục chứa source để tiến hành cấu hình và tối ưu SSH
trên hệ thống
Lệnh thực hiện di chuyển lại thư mục chứa source
[root@deep tmp]#cd openssh-3.4p1/
Trang 1813
Lệnh thực hiện cấu hình và tối ưu OpenSSH
CFLAGS="-O2 -march=i686 -funroll-loops"; export CFLAGS ./configure \
prefix=/usr \ sysconfdir=/etc/ssh \ libexecdir=/usr/libexec/openssh \ mandir=/usr/share/man \
with-pam \ with-ipaddr-display \ with-ipv4-default \ with-md5-passwords \ with-zlib
Lệnh trên cho OpenSSH biết được các cấu hình đặc biệt:
Cho phép tính năng hỗ trợ PAM
Sử dụng địa chỉ IP thay vì tên máy
Sử dụng IPv4 bởi các kết nối
Bước 6: Giải phóng không gian đĩa xóa các tập tin tar của chương trình và thư