Kiến trúc TCP/IP và mạng Internet/Intranet: Thiết kế, Cài đặt và Vận hành

Cuốn sách này được biên soạn dựa trên kinh nghiệm nhiều năm giảng dạy và thực hành các môn liên quan đến mạng máy tính. Nội dung cuốn sách đề cập đến các vấn đề lý thuyết và thực hành mạng TCP/IP, từ các kỹ thuật cơ bản ban đầu đến các công nghệ mạng tiến tiến hiện nay. Các vấn đề lý thuyết phức tạp được tác giả cố gắng giải thích bằng ví dụ minh họa dễ hiểu. Mục đích của cuốn sách là cung cấp một môi trường tự học cho các bạn sinh viên chuyên ngành Mạng máy tính & Truyền thông trường Đại học Bách Khoa Hà Nội. Các bạn sinh viên có thể đi theo các chỉ dẫn trong cuốn sách và tự mình khám phá những bí ẩn kỳ thú bên trong hệ thống mạng Internet mà chúng ta vẫn sử dụng hàng ngày.

Mọi nội dung trong cuốn sách có thể được sử dụng miễn phí với mục đích học thuật, phi thương mại. Yêu cầu ghi rõ nguồn tài liệu khi trích dẫn các nội dung trong sách.

Tác giả: Phạm Huy Hoàng
Giảng viên bộ môn Mạng máy tính và Truyền thông
Viện Công nghệ thông tin và Truyền thông
Trường Đại học Bách Khoa Hà Nội
Email: hoangph@soict.hust.edu.vn
Thanks for comming. you are my sivit number: free counter

Mục lục

Chương 1: Internet & kết nối liên mạng với giao thức IP

1.1      Quá trình hình thành và phát triển mạng Internet
1.1.1     ARPANET
1.1.2     NSFNET
1.1.3     Thương mại hóa mạng Internet
1.1.4     Internet thế hệ 2
1.2      Mô hình TCP/IP & kết nối liên mạng (internetworking)
1.2.1     Kết nối liên mạng (internetworking)
1.2.2     Kiến trúc phân tầng TCP/IP
1.3      Giải pháp kết nối liên mạng tại tầng Internet
1.3.1     Địa chỉ IP
1.3.2     Phân chia & quản lý mạng con
1.3.3     Tìm đường trên tầng IP - IP routing
1.3.4     Giao thức IP (Internet Protocol)
1.3.4.1    Gói tin IP (IP datagram)
1.3.4.2    Vấn đề phân mảnh gói  tin IP
1.3.5     Giao thức ICMP
1.3.5.1    Cấu trúc gói tin ICMP và phương pháp hoạt động
1.3.5.2    Ứng dụng ICMP trong phần mềm ping
1.3.5.3    Ứng dụng ICMP trong phần mềm traceroute
1.4      Các giao thức định tuyến (routing protocols)
1.4.1     Khái niệm hệ thống tự trị (autonomous system)
1.4.2     Các giải thuật định tuyến (routing algorithms)
1.4.2.1    Định tuyến tĩnh (static routing)
1.4.2.2    Phương pháp véc tơ khoảng cách (distance vector) & giao thức RIP
1.4.2.3    Phương pháp Link state (trạng thái kết nối) & giao thức OSPF
1.5      Các bài thực hành kết nối liên mạng
1.5.1     Bài số 1: Cấu hình liên mạng với các router
1.5.1.1    Bước 1: Chuẩn bị các máy ảo CentOS và giải lập mạng vật lý
1.5.1.2    Bước 2: Cấu hình địa chỉ IP cho các router
1.5.1.3    Bước 3: Cấu hình bảng routing tĩnh cho các router
1.5.1.4    Bước 4: Kiểm tra kết nối liên mạng
1.5.2     Bài số 2: Bắt gói tin với iptables và phân tích hoạt động lệnh ping
1.5.2.1    Bước 1: Thiết lập luật log gói tin với iptables
1.5.2.2    Bước 2: Thực thi kịch bản ping và bắt các gói tin ICMP
1.5.2.3    Bước 3: Sử dụng công cụ phân tích gói tin Wireshark
1.5.3     Bài số 3: Bắt gói tin và phân tích hoạt động của lệnh traceroute
1.5.4     Bài số 4: Cấu hình router tự động bằng giao thức chọn đường RIP
1.5.4.1    Bước 1: Cài đặt quagga trên các router
1.5.4.2    Bước 2: cấu hình các service zebraripd
1.5.4.3    Bước 3: Vận hành hệ thống & kiểm tra kết nối
1.5.4.4    Bước 4: kiểm tra tính đáp ứng kết nối mạng của RIP
1.5.5     Bài số 5: Cấu hình router tự động bằng giao thức chọn đường OSPF
1.5.5.1    Bước 1: Cấu hình OSPF trên các router:
1.5.5.2    Bước 2: Vận hành OSPF và kiểm tra kết nối
1.5.5.3    Bước 3: Tìm hiểu thêm về OSPF database

Chương 2: Kết nối tầng Giao vận và tầng Ứng dụng

2.1      Vai trò của tầng Giao vận (Transport) trong kiến trúc TCP/IP
2.2      Hoạt động của tầng Transport
2.2.1     Khái niệm socket và cổng
2.2.1.1    Cổng TCP/UDP
2.2.1.2    Khái niệm về Sockets và Socket APIs
2.2.2     Transmission Control Protocol (TCP)
2.2.2.1    Mộ số tính chất cơ bản của TCP
2.2.2.2    Cơ chế cửa sổ trượt (sliding window)
2.2.2.3    Cấu trúc phân mảnh TCP
2.2.2.4    Sơ đồ chuyển trạng thái (TCP state transition diagram)
2.2.2.5    Một số trường hợp truyền dữ liệu TCP điển hình
2.2.2.6    Thuật toán điều khiển tắc nghẽn trong TCP
2.2.3     User Datagram Protocol (UDP)
2.3      Tầng Ứng dụng (Application)
2.3.1     Khái niệm tầng ứng dụng trong mô hình phân tầng
2.3.2     Ứng dụng mạng nội bộ - Mô hình Intranet
2.3.3     Các mô hình triển khai mạng Intranet
2.3.3.1    Intranet như là một Internet phía sau bức tường lửa
2.3.3.2    Intranet & Extranet
2.3.3.3    Intranet & Cloud
2.4      Các bài thực hành
2.4.1     Bài số 1: Vận hành một ứng dụng client/server trên mạng TCP/IP
2.4.1.1    Bước 1: Cài đặt ứng dụng iperf3 trên máy client và server
2.4.1.2    Bước 2: Chạy ứng dụng iperf3 trên server và client
2.4.1.3    Bước 3: Quan sát quá trình vận hành liên kết TCP với Wireshark
2.4.2     Bài số 2: Xây dựng ứng dụng Intranet với TCP Socket
2.4.2.1    Bước 1: Xây dựng các chương trình server và client
2.4.2.2    Bước 2: Copy các chương trình vào các máy ảo CentOS
2.4.2.3    Bước 3: Cài đặt công cụ tcpdump
2.4.2.4    Bước 4: Thực hiện kết nối client/server và phân tích gói tin với tcpdump
2.4.3     Bài số 3: Xây dựng ứng dụng Intranet với UDP Socket
2.4.3.1    Bước 1: Xây dựng chương trình client và server
2.4.3.2    Bước 2: Vận hành chương trình
2.4.3.3    Bước 3: Bắt gói tin với tcpdump và phân tích

Chương 3. Kết nối Intranet và Internet: DHCP, Gateway, NAT & Port Forwarding


3.1      Kết nối nội bộ Intranet và Gateway
3.1.1     Kết nối mạng bên trong Intranet
3.1.2     Intranet Gateway
3.1.3     Vai trò và hoạt động của Gateway
3.2      Qui hoạch và gán địa chỉ IP động với DHCP
3.2.1     Cấu trúc gói tin DHCP
3.2.2     Các kiểu thông điệp DHCP
3.2.3     Hoạt động của giao thức DHCP
3.2.4     Vận hành một server DHCP
3.3      Network Address Translation & Port Forwarding
3.3.1     Giới thiệu chung về NAT
3.3.2     NAT tĩnh (static NAT)
3.3.3     NAT động - Network Address Port Translation (NAPT)
3.3.4     Cơ chế chuyển tiếp theo cổng (Port Forwarding)
3.3.5     Hạn chế của NAT
3.4      Tìm hiểu về chức năng NAT trong iptables
3.4.1     Xử lý gói tin trong iptables
3.4.2     Làm việc với table nat
3.5      Các bài thực hành
3.5.1     Bài số 1: Thiết lập mạng Intranet nội bộ
3.5.1.1    Bước 1: Cấu hình mạng cho các trạm kết nối vào cùng một mạng LAN
3.5.1.2    Bước 2: Kết nối giữa hai trạm bằng lệnh ping và phân tích gói tin
3.5.2     Bài số 2: Làm việc với DHCP
3.5.2.1    Bước 1: cài đặt & cấu hình DHCP server
3.5.2.2    Bước 2: thiết lập DHCP client
3.5.2.3    Bước 3: Tương tác DHCP client-server
3.5.2.4    Bước 4: Kịch bản tương tranh nhiều DHCP server
3.5.3     Bài số 3: Qui hoạch Gateway cho mạng Intranet
3.5.3.1    Bước 1: Cấu hình router R1
3.5.3.2    Bước 2: Cấu hình máy trạm cho LAN1
3.5.3.3    Bước 3: Cấu hình router R2 và R3
3.5.3.4    Bước 4: Cấu hình máy trạm cho LAN3
3.5.3.5    Bước 5: Kiểm tra hệ thống
3.5.3.6    Bước 6: Xử lý tình huống Redirect Host
3.5.4     Bài số 4: Thiết lập NAT cho Gateway
3.5.4.1    Bước 1: Kiểm tra kết nối Internet từ R3
3.5.4.2    Bước 2: Thiết lập NAT trên R3 với iptables
3.5.5     Bài số 5: Thiết lập Port forwarding cho NAT Gateway
3.5.5.1    Bước 1: Kiểm tra kết nối ngược từ Internet vào R3
3.5.5.2    Bước 2: Kết nối ứng dụng client-server từ máy host VirtualBox vào R3
3.5.5.3    Bước 3: Thiết lập Port forwarding trên R3 bằng iptables

Chương 4.   Các dịch vụ TCP/IP cơ bản

4.1      Mô hình các ứng dụng TCP/IP
4.1.1     Mô hình client/server (chủ/khách)
4.1.2     Giao thức tầng ứng dụng
4.2      Dịch vụ DNS
4.2.1     Một số khái niệm cơ bản
4.2.2     Kiến trúc dịch vụ DNS
4.2.3     Mô hình hoạt động của hệ thống DNS
4.2.3.1    Giao thức DNS
4.2.3.2    Cấu trúc dữ liệu DNS – Resource Record (RR)
4.2.3.3    Các loại câu truy vấn DNS
4.2.3.4    Cập nhật dữ liệu zone
4.2.3.5    Các chế độ hoạt động của máy chủ DNS
4.2.3.6    Vấn đề an ninh trong dịch vụ DNS
4.2.4     Giải pháp cân bằng tài (Load Balancing) thông qua dịch vụ DNS
4.3      Dịc vụ thư điện tử Email
4.3.1     Giới thiệu chung về dịch vụ Email
4.3.2     Các giao thức chính tham gia vào dịch vụ email
4.3.3     Bài toán định tuyến email bằng dịch vụ DNS
4.3.4     Giao thức Simple Mail Transfer Protocol (SMTP)
4.3.5     Cấu trúc Email & chuẩn MIME
4.3.5.1    Cấu trúc cơ bản của một mail
4.3.5.2    Multipurpose Internet Mail Extensions (MIME)
4.3.6     Post Office Protocol (POP)
4.3.7     Internet Message Access Protocol (IMAP4)
4.4      Dịch vụ World Wide Web
4.4.1     Quá trình hình thành và phát triển
4.4.2     Giao thức HTTP
4.4.3     Kỹ thuật Web
4.4.4     Dữ liệu Web
4.4.5     Dịch vụ Web
4.4.6     Một số vấn đề của Web
4.5      Dịch vụ FTP
4.5.1     Giao thức FTP
4.5.2     Bảo mật và xác nhận người dùng
4.5.3     NAT and firewall traversal
4.5.4     Một số điểm khác biệt so với HTTP
4.6      Các bài thực hành
4.6.1     Bài số 1: Cài đặt & cấu hình BIND cùng các DNS tool (dig, nslookup)
4.6.1.1    Bước 1: Tải phần mềm BIND và cài đặt
4.6.1.2    Bước 2: Cài đặt và sử dụng lệnh dig
4.6.1.3    Bước 3: Cài đặt và sử dụng lệnh nslookup
4.6.2     Bài số 2: Xây dựng một DNS server nội bộ với BIND
4.6.2.1    Bước 1: Cầu hình máy chủ BIND
4.6.2.2    Bước 2: Vận hành và kiểm tra dịch vụ DNS
4.6.3     Bài số 3: Kết nối DNS trên Internet
4.6.3.1    Bước 1: Cấu hình DNS “mydomain.vn”
4.6.3.2    Bước 2: Cấu hình DNS “vn”
4.6.3.3    Bước 3: Cấu hình DNS hỗ trợ các zone bên ngoài
4.6.4     Bài số 4: Master & Slave DNS
4.6.4.1    Bước 1: Cấu hình máy chủ DNS master & slave
4.6.4.2    Bước 2: Kiểm tra vận hành hệ thống
4.6.5     Bài số 5: Thiết lập hệ thống email cho một domain
4.6.5.1    Bước 1: Cấu hình Email server Postfix
4.6.5.2    Bước 2: Cài đặt Email client mail hoặc mutt
4.6.5.3    Bước 3: Vận hành và kiểm tra hệ thống
4.6.5.4    Bước 4: Sử dụng các bí danh (aliases)
4.6.6     Bài số 6: Thiết lập hệ thống email giữa 2 domain
4.6.6.1    Bước 1: Kiểm tra hệ thống hàng đợi mail
4.6.6.2    Bước 2: Kết nối với hệ thống DNS
4.6.6.3    Bước 3: Kiểm tra và vận hành hệ thống
4.6.7     Bài 7: Thiết lập dịch vụ Web
4.6.7.1    Bước 1: Cài đặt và khởi động máy chủ web apache
4.6.7.2    Bước 2: Chuẩn bị dữ liệu Web trong DocumentRoot
4.6.7.3    Bước 3: Sử dụng phương pháp URL mapping
4.6.7.4    Bước 4: Thiết lập vùng Intranet trên Web site

Chương 5. Đảm bảo an ninh mạng nội bộ Intranet

5.1    Một số khái niệm cơ bản về an ninh mạng
5.1.1    Bảo mật máy tính
5.1.1.1       Lỗ hổng bảo mật, mối đe dọa và  mô hình kiểm soát
5.1.1.2       Các dạng đe dọa bảo mật máy tính
5.1.2    Tấn công mạng máy tính
5.1.2.1       Tấn công bị động
5.1.2.2       Tấn công chủ động
5.1.2.3       Tấn công từ chối dịch vụ - Denial of Service (DoS) và Distributed DoS (DDoS)
5.1.2.4       Tấn công giả mạo (spoofing attacks)
5.1.2.5       Tấn công cướp phiên làm việc (session hijacking)
5.2    Bảo vệ mạng nội bộ bằng tường lửa (Firewall)
5.2.1    Khái niệm chung về tường lửa
5.2.2    Mô hình thiết kế
5.2.3    Phân loại tường lửa
5.2.3.1       Tường lửa kiểu cổng lọc gói tin (packet filtering gateway)
5.2.3.2       Tường lửa dựa trên trạng thái (stateful inspection firewall)
5.2.3.3       Tường lửa kiểu bảo vệ (guard)
5.2.3.4       Tường lửa cá nhân (personal firewall)
5.2.4    Kết nối tưởng lửa với các vùng bảo vệ (zone)
5.3    Hệ thống phát hiện xâm nhập (IDS) và chống xâm nhập (IPS)
5.3.1    Tại sao cần hệ thống IDS
5.3.2    Cơ chế hoạt động
5.3.3    Phương pháp dựa trên dấu hiệu nhận biết
5.3.4    Phương pháp dựa trên hành vi bất thường
5.4    Các bài thực hành
5.4.1    Bài 1: Cài đặt và thiết lập cấu hình Firewall
5.4.1.1    Bước 1: Chuẩn bị cài đặt firewall
5.4.1.2    Bước 2: Cài đặt và thiết lập cấu hình IPFire
5.4.1.3    Bước 3: Bắt đầu làm việc với IPFire qua giao diện Web
5.4.1.4    Bước 4: Mở cổng ssh để kết nối từ một trạm vùng green
5.4.2    Bài 2: Thiết lập rule cho các vùng orange, green và blue
5.4.2.1    Bước 1: Kiểm tra kết nối giữa các vùng
5.4.2.2    Bước 2: Kiểm tra kết nối đi ra Internet với cơ chế NAT
5.4.2.3    Bước 3: Thiết lập cho phép kết nối từ Internet vào vùng DMZ
5.4.3    Bài 3: Xây dựng hệ thống IDS với Snort
5.4.3.1    Bước 1: Cài đặt Snort
5.4.3.2    Bước 2: Vận hành Snort chế độ IDS
5.4.3.3    Bước 3: Luật đơn giản cảnh báo truy nhập từ bên ngoài
5.4.3.4    Bước 4: Cảnh báo truy nhập từ bên trong đến một nội dung nhạy cảm
5.4.3.5    Bước 5: Cảnh báo quét cổng (port scan) với preprocessor sfportscan
5.4.4    Bài 4: Intrusion Prevention System (IPS) = IDS + Firewall
5.4.4.1    Bước 1: Cập nhật phiên bản mới cho IPFire và cài đặt Addon Guardian
5.4.4.2    Bước 2: Lựa chọn luật (rule) và kích hoạt IDS
5.4.4.3    Bước 3: Thiết lập ngưỡng cảnh báo và kích hoạt IPS

Chương 6: Bảo mật và an toàn mạng - kỹ thuật và ứng dụng

6.1      Đặt vấn đề
6.2      Giải pháp bảo mật mạng tầng IP - IPSec
6.2.1     Kiến trúc IPSec
6.2.2     Encapsulating Security Payload (ESP)
6.2.2.1    Cấu trúc gói tin ESP
6.2.2.2    Hoạt động của ESP
6.2.3     Authentication Header (AH)
6.2.4     Internet Key Exchange
6.2.5     Các mô hình triển khai IPSec
6.2.5.1    Chế độ transport
6.2.5.2    Chế độ tunnel
6.3      Giải pháp bảo mật tầng Transport
6.3.1     Giao thức Secure Sockets Layer (SSL)
6.3.2     Giao thức Transport Layer Security (TLS)
6.4      Một số mô hình ứng dụng bảo mật
6.4.1     Hạ tầng khóa công khai PKI và chữ ký điện tử
6.4.1.1    Nguyên tắc hoạt động
6.4.1.2    Chữ ký điện tử
6.4.2     Mạng riêng ảo – Virtual Private Network (VPN)
6.4.2.1    Mô hình VPN dạng host-to-net
6.4.2.2    Mô hình VPN dạng net-to-net
6.5      Các bài thực hành
6.5.1     Bài số 1: Thiết lập IPSec cơ chế transport
6.5.1.1    Bước 1: Tạo khóa cho kết nối giữa C0 và C2
6.5.1.2    Bước 2: Thiết lập cơ sở dữ liệu SPD và SAD
6.5.1.3    Bước 3: Kiểm tra các dòng dữ liệu
6.5.2     Bài số 2: Thiếp lập IPSec cơ chế tunnel
6.5.2.1    Bước 1: thiết lập môi trường & cấu hình IPSec trên R1&R2
6.5.2.2    Bước 2: Kiểm tra các dòng dữ liệu
6.5.3     Bài số 3: Làm việc với IKE
6.5.3.1    Bước 1: Thiệt lập cấu hình IPSec IKE trên các trạm
6.5.3.2    Bước 2: Kiểm tra các dòng dữ liệu
6.5.3.3    Bước 3: Thiết lập cấu hình IKE trên các router để áp dụng chế độ tunnel
6.5.4     Bài 4: Làm việc với HTTPS, SSL & TLS
6.5.4.1    Bước 1: Cài đặt và cấu hình máy chủ web apache
6.5.4.2    Bước 2: Thiếp lập thư mục bảo mật trên máy chủ web
6.5.4.3    Bước 3: Cấu hình chứng thư kỹ thuật số cho máy chủ
6.5.5     Bài 5: Cài đặt host-to-net VPN với OpenVPN
6.5.5.1    Bước 1: Download, cài đặt OpenVPN Access Server
6.5.5.2    Bước 2: Download, cài đặt OpenVPN client
6.5.5.3    Bước 3: Kết nối VPN
6.5.6     Bài 6: Cài đặt net-to-net VPN với OpenSWAN
6.5.6.1    Bước 1: Kiểm tra cấu hình kết nối mạng khi chưa có VPN
6.5.6.2    Bước 2: Cài đặt openswan trên các router R4 và R6

Chương 7: IPv6

7.1      Giới thiệu chung về IPv6
7.2      Cấu trúc gói tin IPv6
7.2.1     Next header và header mở rộng trong gói tin IPv6
7.2.2     Địa chỉ IPv6
7.2.3     Traffic class
7.2.4     Flow labels
7.3      ICMPv6
7.3.1     Neighbor Discovery
7.3.1.1    Các thông điệp chính của Neighbor Dícovery
7.3.1.2    Một số kịch bản kết nối mạng điển hình với Neighbor Discovery
7.3.2     Multicast Listener Discovery
7.4      Hoạt động của IPv6
7.4.1     IPv6 Routing
7.4.2     Inter-Domain Routing
7.4.3     IPv6 multicast
7.4.3.1    Một số thuật toán cài đặt multicast routing protocol
7.4.3.2    Các giao thức định tuyến multicast dựa trên unicast
7.4.3.3    Giao thức định tuyến độc lập Protocol-Independent Multicast (PIM)
7.4.4     IPv6 QoS
7.4.4.1    Một số khái niệm QoS
7.4.4.2    Làm việc với Traffic Class & Flow Label
7.4.4.3    Đảm bảo Traffic Class bằng Linux Traffic Control
7.4.5     Hỗ trợ di động (Mobility Support)
7.4.5.1    Kiến trúc Mobile IPv6
7.4.5.2    Hoạt động của Mobile IPv6
7.5      Các bài thực hành
7.5.1     Bài 1: Thiết lập môi trường IPv6 và cấu hình routing tĩnh
7.5.1.1    Bước 1: Kiểm tra các thông số hệ thống hỗ trợ IPv6 trên hệ điều hành CentOS
7.5.1.2    Bước 2: Thiết lập các thông số cho router IPv6
7.5.1.3    Bước 3: Kiểm tra kết nối giữa các trạm
7.5.2     Bài 2: Kết nối BGP giữa các AS IPv6
7.5.2.1    Bước 1: Cài đặt XORP cho các router
7.5.2.2    Bước 2: Thiết lập cấu hình các router XORP
7.5.2.3    Bước 3: Vận hành BGP với router XORP
7.5.3     Bài 3: IPv6 Muticast
7.5.3.1    Bước 1: Cấu hình XORP cho các router với phương pháp cố định RP
7.5.3.2    Bước 2: Cấu hình XORP với phương pháp RP động dựa trên bootstrap
7.5.3.3    Bước 3: Sử dụng ssmping để kiểm tra kết nối multicast
7.5.4     Bài 4: QoS
7.5.4.1    Bước 1: Kiểm tra băng thông các dòng dữ liệu cạnh tranh
7.5.4.2    Bước 2: Cấu hình Traffic Control cho các router để xử lý ưu tiên các dòng
7.5.4.3    Bước 3: Kiểm tra tính chất QoS của hệ thống
7.5.4.4    Bước 4: Áp dụng trường Traffic Class trong IPv6
7.5.4.5    Bước 5: Áp dụng trường Flow Label trong IPv6
7.5.5     Bài 5: Mobile IPv6
7.5.5.1    Bước 1: Thiết lập hệ thống mạng chuẩn bị cho Mobile IPv6
7.5.5.2    Bước 2: Thiếp lập cơ chế gán địa chỉ tự động tại các mạng lạ
7.5.5.3    Bước 3: Cấu hình Mobile IPv6 trên HA và MN
7.5.5.4    Bước 4: Tiến hành kịch bản di động
7.5.5.5    Bước 5: Sử dụng đường hầm bảo mật IPSec

Phụ lục A: Chuẩn bị môi trường thực hành

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