--------------- <> -----------------
--- KHOA HỌC - CÔNG NGHỆ - GIÁO DỤC - VIỆC LÀM ---
--- Học để đi cùng bà con trên thế giới ---

Tìm kiếm trong Blog

He thong quan ly tap tin NTFS - 7 - Attribute



(Tiếp theo của He thong quan ly tap tin NTFS - 6 - MFT - MFT entry)


Attribute


Attribute là một cấu trúc dữ liệu, được sử dụng để chứa nội dung của tập tin, chứa các thông tin liên quan đến tập tin, thư mục,…v.v trong hệ thống NTFS.

Có nhiều loại attribute, mỗi loại có cấu trúc tổ chức riêng, có một mã loại (type ID) riêng. Mã loại là một số nguyên. Microsoft sắp xếp thứ tự các attribute trong mỗi MFT entry theo chiều tăng dần của mã loại, nghĩa là, attribute nào có mã loại nhỏ sẽ đứng trước, attribute nào có mã loại lớn sẽ đứng sau.

Các attribute quan trọng thường sử dụng mã loại mặc định, tuy nhiên mã này có thể được định nghĩa lại trong siêu tập tin $AttrDef.

Mỗi loại attribute cũng có một tên gọi riêng, tên gọi được viết hoa toàn bộ, bắt đầu bằng kí hiệu $.

Bảng sau liệt kê một số loại attribute.

Mã loại (hệ 10)
Loại attribute
Mô tả
16
$STANDARD_INFORMATION
Chứa thông tin chung, ví dụ: các cờ, thời gian tạo, thời gian truy cập mới nhất, thời gian ghi mới nhất, người sở hữu, định danh bảo mật (security ID).
32
$ATTRIBUTE_LIST
Cho biết vị trí các attribute của một tập tin.
48
$FILE_NAME
Chứa tên tập tin (dạng Unicode), thời gian tạo, thời điểm ghi tập tin mới nhất, thời điểm truy cập mới nhất.
64
$VOLUME_VERSION
Chứa thông tin về ổ đĩa. Chỉ có ở phiên  bản 1.2
64
$OBJECT_ID
Chứa định danh duy nhất của tập tin hoặc thư mục. Chỉ có ở phiên bản 3.0 trở về sau.
80
$SECURITY_DESCRIPTOR
Chứa thông tin về bảo mật và thông tin kiểm soát truy cập của tập tin.
96
$VOLUME_NAME
Chứa tên ổ đĩa logic.
112
$VOLUME_INFORMATION
Chứa thông tin về phiên bản của hệ thống quản lý tập tin và các cờ hiệu.
128
$DATA
Chứa nội dung của tập tin.
144
$INDEX_ROOT
Chứa nút gốc (root node) của cây chỉ mục (index tree).
160
$INDEX_ALLOCATION
Chứa các nút của cây chỉ mục (index tree) có gốc thuộc attribute $INDEX_ROOT.
176
$BITMAP
Chứa bitmap cho siêu tập tin $MFT và cho các chỉ mục.
192
$SYMBOLIC_LINK
Chứa thông tin liên kết mềm. Chỉ có ở phiên bản 1.2
192
$REPARSE_POINT
Chứa thông tin liên kết mềm. Có ở các phiên bản 3.0 về sau.
208
$EA_INFORMATION
Chứa thông tin đảm bảo việc tương thích với các ứng dụng trên nền OS/2.
224
$EA
Chứa thông tin đảm bảo việc tương thích với các ứng dụng trên nền OS/2.
256
$LOGGED_UTILITY_STREAM
Chứa khóa (key) và thông tin mã hóa attribute (encrypted attribute) trong các phiên bản từ 3.0 về sau.

Với hệ thống quản lý tập tin FAT32, có thao tác đọc và ghi nội dung tập tin. Tuy nhiên, đối với hệ thống NTFS, thao tác đọc và ghi nội dung tập tin được thay thế bằng thao tác đọc và ghi các attribute.

Cấu trúc của một attribute gồm hai phần: header của attribute và nội dung của attribute. Xem Hình 24 dưới đây.




Header của attribute

Header của attribute là phần đầu của mỗi attribute, có kích thước 16 byte. Header chứa thông tin về: mã loại, kích thước và tên của attribute. Header cũng chứa cờ báo cho biết attribute có được nén hay không? có được mã hóa hay không?

Cấu trúc cụ thể của header được minh họa trong bảng sau.

Byte thứ
Mô tả
0 – 3
Mã loại của attribute (type ID)
4 – 7
Kích thước của attribute
8 – 8
Cờ báo non-resident
9 – 9
Chiều dài của tên attribute
10 – 11
Vị trí (offset) chứa tên của attribute
12 – 13
Các cờ báo
14 – 15
Định danh của attribute (định danh này là duy nhất trong phạm vi một MFT entry)

Một MFT entry có thể chứa nhiều attribute cùng loại. Mỗi attribute có một mã định danh riêng (identifier) để phân biệt, mã định danh cần đảm bảo tính duy nhất trong phạm vi mỗi MFT entry.

Đọc nội dung header của attribute

Hình 25 dưới đây minh họa việc đọc header của attribute.



Từ header của MFT entry, địa chỉ (offset) 0x14 -> 0x15 cho biết nơi bắt đầu của các attribute (đơn vị tính là byte). Giá trị của trường này là 0x0038, đổi sang hệ thập phân là 56. Nghĩa là, trong MFT entry này, các attribute sẽ được bắt đầu từ byte thứ 56.

Đọc 16 byte, bắt đầu từ byte thứ 56 sẽ là header của attribute đầu tiên, phần tô màu xanh lá cây trong Hình 25.

Giá trị cụ thể các trường của header được thể hiện trong bảng sau.

Byte thứ
Giá trị (Hệ 16 – Hệ 10)
Mô tả
0 – 3
0x00000010 – 16
Mã loại là 16: $STANDARD_INFORMATION
4 – 7
0x00000060 – 96
Kích thước của attribute là 96 byte
8 – 8
0x00 – 0
Attribute thuộc kiểu resident
9 – 9
0x00 – 0
Attribute này không được đặt tên, nên không có giá trị chiều dài của tên.
10 – 11
0x0000 – 0
Attribute này không được đặt tên, nên không có thông tin về vị trí của tên.
12 – 13
0x0000 – 0
Giá trị cờ báo
14 – 15
0x0000 – 0
Định danh của attribute (attribute ID) là 0.

Nội dung của attribute

Phần nội dung của attribute được sử dụng để chứa dữ liệu ở định dạng bất kì, với kích thước bất kì. Ví dụ, attribute chứa nội dung của một tập tin có thể có kích thước từ vài MB tới hàng GB. Tuy nhiên, kích thước của một MFT entry chỉ là 1024 byte, nên việc chứa toàn bộ nội dung của attribute trong MFT entry là không thực tế.

Để giải quyết vấn đề này, hệ thống NTFS cung cấp hai tùy chọn để lưu nội dung của attribute:

-         lưu trực tiếp trong MFT entry,

-         và lưu ở ngoài MFT entry.

Attribute có phần nội dung được lưu ngay trong MFT entry được gọi là resident attribute (attribute thường trú), thường áp dụng với các attribute có kích thước phần nội dung nhỏ.

Attribute lưu phần nội dung ở các cluster bên ngoài MFT entry được gọi là non-resident attribute (attribute không thường trú).

Trong header của attribute có trường cho biết attribute đó là resident hay non-resident. Nếu attribute thuộc loại resident, phần nội dung sẽ được đặt ngay sau header của attribute, ngược lại, nếu attribute thuộc loại non-resident, header sẽ cung cấp địa chỉ của cluster. Xem hình minh họa sau đây, Hình 25: attribute thứ nhất, thứ hai thuộc loại resident, attribute thứ ba thuộc loại non-resident.



Tổ chức cụ thể của một attribute kiểu non-resident sẽ được trình bày sau.

Phần này sẽ trình bày về tổ chức của một attribute kiểu resident. Cấu trúc của một attribute kiểu resident được minh họa trong bảng sau.

Byte thứ
Mô tả
0 - 15
Cấu trúc header chuẩn (có trong tất cả các loại attribute – Hình 25).
16 – 19
Cho biết kích thước phần nội dung của attribute.
20 - 21
Cho biết nơi bắt đầu (offset) của phần nội dung.

Tùy thuộc vào mỗi loại attribute, phần nội dung của attribute sẽ có cấu trúc tổ chức khác nhau.

Để hiểu rõ hơn về cấu trúc của attribute, phần tiếp theo sẽ trình bày chi tiết về các attribute: $STANDARD_INFORMATION, $FILE_NAME, $DATA.

--------------------

Tài liệu đã tham khảo:
Brian Carrie, File System Forensic Analysis, Addison Wesley Professional, 2005
-------------------
Cập nhật 2014/5/29
-----------------------
Đọc thêm
He thong quan ly tap tin NTFS - 8 - Attribute
$STANDARD_INFORMATION 
-----
Bạn muốn tự học HTML bài bản? Xem thêm

W2K8 - 2 - Tong quan ve AD DS (tt)



(tiếp theo của W2K8 - 1 - Tong quan ve AD DS)

Domain và Domain Tree


Trong một forest, AD dựa vào hai khái niệm là domain tree và domain để tạo ra các vùng quản trị nhỏ hơn. Cơ sở dữ liệu của AD ở mức forest sẽ được quản lý bởi các domain tree và domain.

Domain (đầy đủ là active directory domain) là một tập hợp các đối tượng trong một hệ thống mạng dựa trên AD. Các đối tượng gồm người dùng, nhóm, máy tính, máy tin. Thông tin về các đối tượng được lưu trong một cơ sở dữ liệu tập trung trên máy DC. Tên của domain được đặt theo chuẩn DNS.

Domain tree là tập hợp gồm một hoặc nhiều domain có quan hệ với nhau theo cấu trúc cha-con. Một forest có thể có một hoặc nhiều domain tree.

Hình 1 minh họa một domain tree đơn giản gồm một domain cha (congty.com) và hai domain con (dalat.congty.com và saigon.congty.com).


Mỗi một domain sẽ có một domain partition (tên gọi khác là domain naming context). Domain partition chứa thông tin về các đối tượng trong domain, gồm: người dùng, nhóm người dùng, máy tính, máy tin, OU,...v.v. 

Các thông tin của domain partition sẽ được đồng bộ tới tất cả các DC trong cùng một domain. Tất nhiên, các DC cũng nhận được thông tin đồng bộ ở mức forest là schema partition và configuration partition.

Việc đồng bộ các thông tin của domain partition giúp thực hiện: dự phòng kiểu dư thừa (redundancy), thiết lập hệ thống chịu lỗi (fault tolerance), cân bằng tải (load balancing) trong một domain.

Mặc dù không được xem là một partition chính thức, nhưng global catalog cũng được đồng bộ ở mức forest. Không giống như domain partition, global catalog không được đồng bộ tới tất cả DC, mà nó chỉ được đồng bộ tới các DC đã được cấu hình là một global catalog server. Global catalog server là DC mà có chứa global catalog.

Từ Windows Server 2003, AD sẽ có thêm partition thứ tư là application partition. Dựa trên application partition, người quản trị mạng có thể lựa chọn thông tin để thực hiện đồng bộ. Ví dụ, có thể thiết lập chế độ đồng bộ DomainDNSZones tới tất cả các DNS server trong một domain, hoặc đồng bộ ForestDNSZones tới tất cả các DNS server trong một forest.

Ví dụ, hệ thống mạng ở Hình 1 sẽ có các thông tin sau đây được đồng bộ:
-          Mỗi DC trong domain congty.com sẽ có bản sao của schema partition, configuration partition và domain partition của congty.com.
-          Mỗi DC trong domain dalat.congty.com sẽ có bản sao của schema partition, configuration partition và domain partition của dalat.congty.com.
-           Mỗi DC trong domain saigon.congty.com sẽ có bản sao của schema partition, configuration partition và domain partition của saigon.congty.com.
-          Mỗi DC trong toàn bộ forest mà được cấu hình là global catalog server sẽ có bản sao của global catalog.

 

OU (Organization Unit)


OU (đơn vị tổ chức) là một đối tượng trong AD, được sử dụng để chứa các tài nguyên mạng như người dùng, nhóm người dùng, máy tính …v.v. Các tài nguyên này có yêu cầu về bảo mật và quản lý tương tự nhau.

Sử dụng OU để chia nhỏ các tài nguyên trong hệ thống mạng giúp dễ quản trị. Một domain có thể có một hoặc nhiều OU.

Trong OU có thể tạo một hoặc nhiều OU con, các OU được tổ chức theo cấu trúc phân cấp và có quan hệ theo kiểu cha – con. Tuy nhiên, việc tổ chức OU thành quá nhiều cấp có thể gây ra khó khăn cho công việc quản trị.

Có thể dựa trên mô hình tổ chức của công ty để tạo các OU. Ví dụ, mỗi phòng ban là một OU. Cũng có thể dựa vào nhu cầu sử dụng các tài nguyên mạng của người dùng để tạo các OU, ví dụ, tất cả người dùng sử dụng tài nguyên giống nhau sẽ được nằm trong cùng một OU.

Sử dụng OU giúp việc quản trị dễ dàng hơn. Cụ thể bạn chỉ cần thiết lập chính sách liên quan đến bảo mật một lần cho một OU, sau đó, các chính sách này sẽ tác động lên các OU con, các tài khoản người dùng và tài khoản máy tính trong OU đó (lưu ý: không tác động trên nhóm người dùng).

Để giảm bớt một số công việc cho nhà quản trị hệ thống mạng, nhà quản trị mạng có thể ủy quyền cho một ai đó trong OU, thay mặt nhà quản trị mạng thực hiện một số công việc đơn giản như: thiết lập lại mật khẩu người dùng, thay đổi thời gian đăng nhập hệ thống …v.v. Trong OU cho phép làm việc này bằng chức năng ủy quyền quản trị (delegation of control).

Các đối tượng OU có thể chứa gồm:
-          User (tài khoản người dùng).
-          Group (nhóm người dùng).
-          Contact ().
-          Printer (máy in).
-          Shared folder (các thư mục chia sẻ).
-          Computer (tài khoản máy tính).
-          OU (các OU con).
-          InetOrgPerson().

 

Schema (giản đồ)


Schema trong AD được sử dụng để định nghĩa các loại đối tượng, giúp phân biệt được các loại đối tượng khác nhau trong AD. Ví dụ: một tài khoản người dùng, nhóm người dùng cần những thông tin gì để mô tả các đối tượng? Mặc định, AD có một schema cơ sở, tùy theo nhu cầu sử dụng có thể mở rộng hoặc thay đổi các thuộc tính (thông tin mô tả) của schema này.

Mỗi tài nguyên trong AD được xem là một đối tượng (object), mỗi đối tượng có một tập các thuộc tính (attribute) đi kèm, schema sẽ định nghĩa các đối tượng này. Như vậy, schema là một cơ sở dữ liệu quan trọng, nó định nghĩa tất cả các đối tượng trong AD, và có thể xem schema chính là hình hài của AD.

Schema gồm hai thành phần: lớp đối tượng (object class) và  các thuộc tính (attribute). Ví dụ, người dùng KeToan1 là thể hiện của lớp đối tượng user, máy in MayLaser là thể hiện của lớp đối tượng printer.

Mỗi lớp đối tượng sẽ được định nghĩa bằng danh sách các thuộc tính, nhằm phân biệt các lớp đối tượng khác trong schema. Các thuộc tính sẽ được schema định nghĩa một lần duy nhất, tuy nhiên, thuộc tính này sẽ được sử dụng nhiều lần ở các lớp đối tượng khác nhau.

Có hai loại thuộc tính: thuộc tính bắt buộc (required), ví dụ tên đăng nhập của người dùng và thuộc tính tùy chọn (optional), ví dụ: địa chỉ, số điện thoại của người dùng.

Một số lớp đối tượng được tạo sẵn khi cài đặt AD:
-          Users
-          Groups
-          Computers
-          Domain controllers
-          Printers

Một số thuộc tính quan trọng giúp phân biệt các đối tượng với nhau là:
-          Unique name (định danh duy nhất), được sử dụng để xác định tính duy nhất của đối tượng trong cơ sở dữ liệu. Định danh này được cấp khi đối tượng được tạo ra.
-          GUID (Globally Unique Identifier), là một số hệ 16 có độ dài 128 bít, được AD cấp cho mỗi đối tượng, khi đối tượng được tạo ra. Đây là số duy nhất trong phạm vi một forest. Số này không bị thay đổi giá trị, kể cả trong trường hợp đối tượng bị thay đổi tên. Số này cũng không được sử dụng lại, ngay cả trong trường hợp đối tượng đã bị xóa và được tạo lại với tên giống với tên ban đầu.
-          Các thuộc tính bắt buộc phải có của đối tượng, là các thuộc tính cần thiết cho việc sử dụng, ví dụ tài khoản người dùng phải có tên duy nhất và phải có mật khẩu khi được tạo ra.
-          Các thuộc tính tùy chọn của đối tượng, đây là các thông tin bổ sung cho đối tượng nó không liên quan đến chức năng chính của đối tượng. Đây là thông tin thuộc loại “có thì tốt” mà “không có thì cũng không sao”. Ví dụ số điện thoại, địa chỉ của một tài khoản người dùng.

Schema cho phép bổ sung hoặc thay đổi các đối tượng cũng như các thuộc tính. Tuy nhiên, các đối tượng trong schema được bảo vệ bằng ACL, do vậy chỉ có người có quyền hợp lệ mới được phép truy cập và thay đổi. Administrator có toàn quyền quản lý ACL này.

 

Active Directory Site và Subnet


Site (theo định nghĩa) là một hoặc nhiều subnet IP được kết nối bằng đường truyền có tốc độ cao. Trong nhiều trường hợp, người ta coi tất cả các máy tính nằm trong một mạng LAN là một site. Trong môi trường AD, site được sử dụng để tối ưu việc đồng bộ thông tin của AD trong một phạm vi địa lý cụ thể.

Tất cả các DC trong cùng một site sẽ được đồng bộ hóa bằng chức năng đồng bộ hóa nội site (intrasite), việc đồng bộ hóa giúp các DC cập nhật những thay đổi đối với AD. Administrator sẽ thiết lập thời gian đồng bộ hóa nội site theo chu kì tùy ý. Mô hình (topo) đồng bộ hóa được tạo ra và duy trì bởi tiến trình KCC (Knowledge Consistency Checker). KCC hoạt động dựa trên các thông tin được khai báo trong Active Directory Sites and Services.

 
 ---------------------------
Tài liệu đã tham khảo:
Windows Server 2008 Active Directory Configuration, Exam 70-640, Microsoft.
--------------------------------
Cập nhập: 2014/4/30


Chuyen doi dia chi mang - NAT (Network Address Translation) 1



Chuyển đổi địa chỉ mạng

(NAT-Network Address Translation)

Mục đích:

-          Hiểu về quá trình NAT.
-          Thực hành quan sát quá trình NAT bằng Packet Tracer.

NAT

NAT là một giải pháp nhằm đối phó với tình trạng cạn kiệt địa chỉ IPv4. Tình trạng cạn kiệt của IPv4 đã được cảnh báo vào cuối những năm 1980, và tới năm 2011 tình trạng này đã xảy ra ở một số nơi[1].

Để đơn giản, phần này sẽ mô tả hoạt động của NAT trên thiết bị modem ADSL tại hộ gia đình hoặc một công ty nhỏ. Tất nhiên NAT có thể được tích hợp trên nhiều thiết bị mạng khác.

Modem ADSL ngoài chức năng chuyển đối tín hiệu từ dạng số sang dạng tương tự và ngược lại, nó còn được tích hợp thêm nhiều chức năng khác như DHCP, NAT…v.v.



Quan sát Hình 1, modem ADSL có hai loại cổng: cổng phía trong, và cổng phía ngoài.

-          Cổng phía trong là cổng được sử dụng để trao đổi dữ liệu với các thiết bị bên trong nhà hay trong công ty. Cổng này được gán một địa chỉ IP nội bộ (private IP). Ví dụ, 192.168.1.1/24.

-          Cổng phía ngoài là cổng được sử dụng để trao đổi dữ liệu với hệ thống mạng Internet thông qua nhà cung cấp dịch vụ Internet (ISP). Cổng này thường được gán một địa chỉ IP công cộng (public IP) do nhà cung cấp dịch vụ cấp phát. Ví dụ, 123.28.124.11/16.

Tình huống giả định: người sử dụng đang ngồi tại máy tính có địa chỉ IP là 192.168.1.3 gửi yêu cầu truy cập trang web www.google.com, và yêu cầu này tới được máy www.google.com. Khi nhận được yêu cầu, máy server của Google sẽ gửi nội dung trang web cho máy tính có địa chỉ IP là 192.168.1.3, tuy nhiên, trên thế giới hiện nay có hàng ngàn máy tính đang được gán địa chỉ IP là 192.168.1.3, vậy Google biết gửi nội dung trang web cho máy tính nào? Đây chính là lý do hệ thống mạng sẽ không cho phép các gói tin có địa chỉ IP nguồn và IP đích là địa chỉ IP nội bộ được phép truyền đi trực tiếp trên hệ thống mạng Internet.

NAT là một trong những giải pháp giúp các máy tính đang được gán địa chỉ IP nội bộ có thể trao đổi dữ liệu với các máy tính khác trên mạng Internet, và vẫn đảm bảo tính duy nhất của các địa chỉ IP. Như trong Hình 1, tất cả các gói tin đi ra ngoài Internet qua modem ADSL sẽ có địa chỉ IP nguồn là 123.28.124.11 và tất cả các gói tin đi từ Internet tới các máy phía trong modem ADSL sẽ có địa chỉ IP đích là 123.28.124.11.

Có thể hiểu một cách đơn giản là, các máy tính phía trong modem ADLS đã mượn địa chỉ IP công cộng (địa chỉ IP đầu ngoài) của modem ADSL để giao tiếp với các máy tính khác trong mạng Internet. Vấn đề ở đây là, khi nhận được gói tin chuyển về từ Internet, làm sao modem ADSL biết được chính xác gói tin đó là của máy tính nào ở bên trong? Để làm được việc này modem ADSL sử dụng một Bảng NAT (NAT translation table) để lưu vết, nhằm chuyển tiếp gói tin cho các máy tính ở bên trong.

Để hiểu về hoạt động của NAT và Bảng NAT, xem xét lại ví dụ: máy tính có địa chỉ IP 192.168.1.3  (gọi tắt là máy client) gửi yêu cầu truy cập trang web www.google.com, cổng 80, địa chỉ IP của máy Google (gọi tắt là máy server) là 74.125.128.99. Chi tiết các bước (xem thêm ở Hình 1):

-          Bước 1, máy client sẽ tạo một gói tin với địa chỉ IP nguồn là 192.168.1.3, port nguồn là 3345 (giá trị của port nguồn là một số tùy ý trong miền giá trị cho trước); địa chỉ IP đích là 74.125.128.99, port đích là 80. Client sẽ gửi gói tin này tới modem ADSL.

-          Bước 2, modem ADSL nhận gói tin từ client, thay đổi giá trị port nguồn thành 5001 (modem ADSL có thể sử dụng một giá trị port nguồn bất kì, miễn là chưa tồn tại trong Bảng NAT), và thay đổi địa chỉ IP nguồn thành 123.28.124.11. Modem ADSL cũng tạo thêm một hàng trong Bảng NAT để lưu trữ thông tin về địa chỉ IP nguồn và port nguồn trước (LAN side) và sau (WAN side) khi thay đổi. Đây chính là thông tin lưu vết, giúp cho việc chuyển tiếp gói tin tới máy client khi server gửi gói tin trả lời. Modem ADSL chuyển tiếp gói tin tới máy server.

-          Bước 3, máy server nhận được gói tin yêu cầu nội dung trang web từ modem ADSL, thực tế là yêu cầu của máy client, tuy nhiên, máy server không quan tâm tới điều này. Server sẽ gửi nội dung trang web về cho modem ADSL với thông tin địa chỉ: IP nguồn là 77.125.128.99, port 80; IP đích là 123.28.124.11, port 5001.

-          Bước 4, khi modem ADSL nhận được gói tin trả lời từ server, nó sẽ tham chiếu đến thông tin đã được lưu trong Bảng NAT để thay đổi lại thông tin địa chỉ trên gói tin và gửi về đúng máy client. Cụ thể IP nguồn là 77.125.128.99, port 89; IP đích là 192.168.1.3, port 3345.

 

Một số vấn đề liên quan đến NAT


NAT đã được sử dụng rộng rãi trong những năm gần đây (2014), tuy nhiên, vẫn có những ý kiến phản đối trong cộng đồng IEFT, một số lý do phản đối liên quan đến:

-          Khái niệm port (port number) đã được sử dụng như một loại địa chỉ ở mức tiến trình, nhưng trong NAT lại được sử dụng để xác định địa chỉ cho một host.

-          Router hay các thiết bị có chức năng giống như router chỉ làm việc với các gói tin cao nhất là ở tầng 3, trong khi NAT có thao tác với giá trị port nằm ở tầng 4.

-          NAT đã vi phạm nguyên tắc làm việc end-to-end. Nguyên tắc này cho rằng, hai host sẽ trao đổi dữ liệu trực tiếp với nhau mà không bị can thiệp vào phần nội dung gói tin dẫn đến việc bị thay đổi địa chỉ IP và giá trị port như trong quá trình NAT.

-          Việc cạn kiệt địa chỉ IP có thể giải quyết bằng giải pháp lâu dài là sử dụng địa chỉ IPv6, chứ không phải là một giải pháp tình thế như NAT.

Ngoài ra, NAT còn gây trở ngại cho các ứng dụng chạy trên nền tảng P2P, ví dụ: chia sẻ tập tin, Voice-over-IP. Trong một ứng dụng chạy trên nền tảng P2P, một peer bất kì (ví dụ peer A) phải có khả năng thiết lập kết nối TCP với các peer khác (ví dụ peer B). Tuy nhiên, nếu peer B nằm sau NAT, nó sẽ không thể hoạt động giống như một server thực thụ và peer A sẽ không thể khởi tạo được kết nối TCP với peer B. Nếu peer A không nằm sau NAT thì vẫn có một số giải pháp để vượt qua trở ngại này. Tìm hiểu thêm về NAT traversal.

 

Thực hành quan sát quá trình NAT trên Packet Tracer


Sử dụng Packet Tracer ở chế độ Simulation (mô phỏng) để quan sát header của gói IP khi gói tin này đi qua router biên đã được thiết lập chế độ NAT.

Mô hình mạng.


Tải bài thực hành D2_PTAct_4_2_3_3.pka trên mạng Internet hoặc tại đường dẫn http://www.mediafire.com/download/bd6uui6r2mt58pw/D2_PTAct_4_2_3_3.pka

Bước 1: kiểm tra mô hình để đảm bảo tất cả các thiết bị đều có thể gửi và nhận gói tin ở chế độ Simulation. Nếu tất cả các đèn báo trạng thái liên kết đều có màu xanh là được, nếu còn có đèn báo màu hổ phách, thực hiện chuyển đổi qua lại giữa hai chế độ Simulation và Realtime một vài lần để đèn báo chuyển sang màu xanh.

Bước 2: ở chế độ Simulation, thực hiện gửi một yêu cầu duyệt web (HTTP request) từ một máy trong mạng tới máy web server.
  1. Chọn máy tính Customer PC, chọn Desktop, chọn Web Browser. Tại đường dẫn URL, nhập địa chỉ của trang web www.ispserver.com. Bấm nút Go.
  2. Quan sát trong cửa sổ Event List, thấy hàng đợi của máy Customer PC đang có hai gói tin là DNS request, và ARP request. Xem nội dung của gói tin ARP request bằng cách bấm vào biểu tượng gói tin trên mô hình mạng hoặc bấm vào biểu tượng gói tin ở dưới cột Info trong cửa sổ Event List.
  3. Quan sát trong cửa sổ PDU Information at Device: Customer PC, cho biết máy Customer PC gửi broadcast một ARP request để tìm địa chỉ MAC tương ứng cho địa chỉ IP nào? Tại sao phải tìm địa chỉ MAC của máy đó? (trả lời: 192.168.1.20; đây là địa chỉ IP của máy DNS server trong mạng nội bộ, máy Customer PC cần có địa chỉ IP của www.ispserver.com nên phải nhờ DNS server tìm giúp, muốn gửi được yêu cầu tới máy DNS server thì phải có địa chỉ MAC của DNS server).
  4. Trong cửa sổ Event List, bấm nút Capture/Forward hai lần. Cho biết thiết bị nào đã trả lời cho gói ARP request xuất phát từ máy Customer PC? Giá trị của địa chỉ MAC? (trả lời: máy www.customerserver.com; Giá trị của MAC là 00E0.B0EA.BDAB)
  5. Trong cửa sổ Event List, bấm nút Capture/Forward hai lần. Máy Customer PC nhận gói trả lời ARP (ARP reply) và tạo gói tin mới. Giao thức của gói tin mới tạo là gì? Có thể bấm vào thẻ Outbound PDU Details của gói tin mới tạo để xem thêm các thông tin chi tiết. (trả lời: DNS, cụ thể là một gói DNS query: tìm địa chỉ IP cho một tên miền).
  6. Trong cửa sổ Event List, bấm nút Capture/Forward hai lần. Bấm vào gói tin tại máy www.customerserver.com. Sau đó bấm vào thẻ Outbound PDU Details. Cuộn xuống dưới để quan sát dữ liệu của tầng Application (Application Layer). Cho biết địa chỉ IP của ISP server (hay www.ispserver.com)? (trả lời: 209.165.202.131; xem trong DNS ANSWER)
  7. Trong cửa sổ Event List, bấm nút Capture/Forward hai lần. Sẽ thấy máy tính Customer PC tạo một ARP request mới. Mục đích của ARP request mới này là gì? (trả lời: máy Customer PC đã biết địa chỉ IP của máy www.ispserver.com, tuy nhiên đây là một địa chỉ IP ở mạng khác, do vậy, nó phải nhờ đến máy server/router/…v.v đóng vai trò là Default Gateway chuyển tiếp gói tin của nó ra ngoài. Trong cạc mạng của máy Customer PC có khai báo Gateway là 192.168.1.1, vì vậy, để gửi gói tin đến Gateway thì cần phải có địa chỉ MAC của nó. Muốn có địa chỉ MAC khi đã biết địa chỉ IP thì phải sử dụng gói ARP request của giao thức ARP).
  8. Trong cửa sổ Event List, bấm nút Capture/Forward 10 lần cho tới khi máy Customer PC đã có đủ thông tin để thiết lập một gói tin yêu cầu nội dung trang web từ máy www.ispserver.com. Gói tin có tên HTTP request.
  9. Trong cửa sổ Event List, bấm nút Capture/Forward ba lần. Bấm vào gói tin tại Customer Router, đây là một router biên đã được thiết lập chế độ NAT. Quan sát nội dung của gói tin tại Customer Router và cho biết địa chỉ inside local và địa chỉ inside global là gì? (trả lời: địa chỉ inside local là 192.168.1.10 và địa chỉ inside global là 209.165.201.2).
-         Địa chỉ inside local là địa chỉ IP nội bộ (private IP) được gán cho các host phía trong của thiết bị NAT.
-         Địa chỉ inside global là địa chỉ IP công cộng (public IP) được cấp bởi nhà quản lý địa chỉ IP (ví dụ ISP), là địa chỉ đại diện cho một hay nhiều địa chỉ IP nội bộ khi trao đổi dữ liệu với các thiết bị trên Internet (ví dụ: địa chỉ IP đầu ngoài của modem ADSL đã trình bày ở phần lý thuyết về NAT). Đơn giản hơn, inside global là địa chỉ IP của cổng phía ngoài thiết bị NAT.
  1. Trong cửa sổ Event List, bấm nút Capture/Forward bảy lần cho tới khi gói HTTP trả lời (HTTP reply) tới được thiết bị Customer Router. Xem xét nội dung của gói HTTP reply để kiểm tra địa chỉ inside local và địa chỉ inside global đã được đổi lại nhằm chuyển tiếp gói tin HTTP reply tới máy Customer PC.
Bước 3: gửi một gói tin HTTP (HTTP request) từ một host bên ngoài tới máy web server ở bên trong thiết bị NAT.

Máy Customer Server cung cấp dịch vụ web cho các máy tính bên ngoài với tên miền là www.customerserver.com. Thực hiện duyệt web từ máy tính ISP Workstation (máy này có địa chỉ IP public) để quan sát hoạt động của NAT. Chuyển Packet Tracer sang chế độ Simulation.
  1. Chọn máy tính ISP Workstation, chọn Desktop, chọn Web Browser, tại đường dẫn URL nhập địa chỉ trang web là www.customerserver.com. Bấm nút Go.
  2. Có thể bấm vào Auto Capture/Play hoặc Capture/Forward để chạy qua các bước liên quan tới ARP và DNS. Dừng lại khi gói HTTP request được tạo ra tại máy ISP Workstation.
  3. Khi gói tin HTTP request đến Customer Router, kiểm tra nội dung của gói tin và cho biết địa chỉ inside local và inside global? (trả lời: địa chỉ inside local là 192.168.1.20; địa chỉ inside global là 209.165.201.5).

Tài liệu đã tham khảo

- Kurose, Ross, “Computer Networking, A top-Down Approach”, Sixth edition, 2013, p349
- Cisco, Lab 4.2.3.3: Examining Network Address Translation (NAT)


[1] http://en.wikipedia.org/wiki/IPv4_address_exhaustion
-------------------------
Cập nhật 2014/4/25