Cách tính và ý nghĩa của Wildcard mask trong mạng

Phần này sẽ giới thiệu về một khái niệm khá quan trọng trong ACLWildcard mask.
ACLs kiểm tra các packets bằng cách xem xét IP, UDP, TCP header của packet.Extended ACL thì kiểm tra cả source/dest IP address cũng như source/dest port và một số thông tin chi tiết khác. Trong khi đó thì standard ACL chỉ kiểm tra dựa trên source IP.

Gỉa sử ta có 2 trường hợp như sau:
  •     TH1: ta muốn kiểm tra 1 host xác định. Lúc này ta đã biết IP của host, khi đó ACL sẽ kiểm tra toàn bộ thông tin IP của host- tức là xem xét cả 4 octet của IP address để đảm bảo rằng host đó đúng là host cần

  •     TH2: ta muốn kiểm tra cả 1 subnet. Lúc này, khi các host ở trong cùng 1 subnet thì tức là chúng sẽ có số bit dành cho phần netID trong IP add giống nhau. Muốn kiểm tra thì chỉ cần kiểm tra các bit của phần netID.
Wildcard mask là thông tin mà ACL sẽ dựa vào đó để xác định xem sẽ kiểm tra phần nào trong packet header.Nó nói cho ACL biết, nên kiểm tra phần nào của packets.
Cấu trúc của wildcard mask cũng khá giống so với subnet mask. Chia ra thành 4 octet như IPv4. Đối với wildcard mask thì bit 0 có nghĩa là kiểm tra, còn bit 1 thì sẽ bỏ qua.
Ví dụ ta có 1 subnet là 192.168.1.0/24 cần được kiểm tra. Với subnet này, ta chỉ cần quan tâm đến 3 octet đầu và kiểm tra chúng. Dựa vào quy tắc trên thì ta sẽ có một wildcard mask như sau: 0.0.0.255.Còn nếu muốn kiểm tra một host xác định thì wildcard mask sẽ là 0.0.0.0. Khi đó, ACL sẽ check tất cả 4 octet của IP.

Ví dụ với hình trên. Gỉa sử ta muốn kiểm tra các packet đi từ host của Jerry. Khi đó, để có thể xác định chính xác packet đi ra từ host của Jerry(172.16.3.9) thì ta phải kiểm tra toàn bộ cả 4 octet. Khi đó wildcard mask sẽ là 0.0.0.0. Còn nếu ta muốn kiểm tra cả mạng của SW13 thì ta sẽ sử dụng wildcard mask phụ thuộc vào subnet của sw13. Ở đây ta để ý thấy rằng 3 octet đầu đều giống nhau, vì vậy ta có thể sử dụng wildcard mask là 0.0.0.255.

Cách chuyển đổi nhanh wildcard mask từ subnet mask.
Ví dụ ta có một subnet: 192.168.1.0/25. Để tìm được wildcard mask cho subnet thì ta có thể làm theo các bước sau:
    -Tính subnet mask của subnet. Với subnet trên thì subnet mask là 255.255.255.128.
    -Sử dụng công thức để tính wildcard mask:
    wildcard mask =255.255.255.255 - subnet mask
    Với công thức trên thì ta sẽ tính được wildcard mask cho subnet trên là: 0.0.0.127.

Lưu ý rằng: không phải lúc nào công thức trên cũng đúng
Một ví dụ khác:
với 1 địa chỉ mạng 192.168.1.0/24, nếu người quản trị mạng muốn áp đặt 1 policy nào đó với tất cả những địa chỉ lẻ trong mạng này (192.168.1.1; 192.168.1.3; 192.168.1.5; ....192.168.1.253) thì wildcard mask phải là bao nhiêu ? 
 Đối với bài toán trên, thoạt nhìn, ta sẽ ngay kết quả là 0.0.0.255.Nhưng nếu ta sử dụng công thức mà tôi đưa ra ở trên thì sẽ bị sai.
Đối với tất cả các địa chỉ lẻ của mạng thì octet cuối sẽ có dạng là 2^n + 1. Tức là bit cuối luôn được "bật" lên 1. Thử biểu diễn 2 địa chỉ là 192.168.1.1 và 192.168.1.3 dưới dạng nhị phân ta sẽ thấy rõ:
192.168.1.1:x.x.x.0000001
192.168.1.3:x.x.x.0000011
192.168.1.5:x.x.x.0000101
192.168.1.7:x.x.x.0000111

....
Như vậy, bit cuối luôn được "bật". Nếu dựa vào công thức mà tôi đưa ở trên, ta sẽ có wildcard mask là 0.0.0.255. Nhưng như vậy, bit cuối cùng sẽ bị "lọt" qua wildcard mask.
Vậy wildcard mask đúng là 0.0.0.254.

Lưu ý rằng: Wildcard mask cần phải đi cùng một địa chỉ ip. Nếu đứng một mình sẽ không có nghĩa lý gì cả.

 Ví dụ ta có IP 192.168.1.32 và Wildcard Mask là 0.0.0.5
192.168.1.32 : 11000000.10101000.00000001.00100000
0.0.0.5          : 00000000.00000000.00000000.00000101
bit nào trên IP tương ứng với bit 0 của Wildcard Mask thì sẽ được giữ lại, còn bit nào trên IP tương ứng với bit 1 của Wildcard Mask thì có thể thay đổi 1 hoặc 0. Vậy ta có những IP sau thỏa mản Wildcard Mask:
11000000.10101000.00000001.00000000 (192.168.1.32)
11000000.10101000.00000001.00100001 (192.168.1.33)
11000000.10101000.00000001.00100100 (192.168.1.36)
11000000.10101000.00000001.00100101 (192.168.1.37)

Các phép tính Wildcard Mask

Wildcard Mask match 1 host:
VD: Tính Wildcard Mask match host 192.168.1.1
Theo nguyên tắc: bit 0 kiểm tra, bit 1 bỏ qua
=> Địa chỉ IP: 192.168.1.1 0.0.0.0

Wildcard Mask match tất cả địa chỉ IP:
Theo nguyên tắc: bit 0 kiểm tra, bit 1 bỏ qua
=> Địa chỉ IP: 0.0.0.0 255.255.255.255

Wildcard Mask match 1 subnet:
VD: Tính Wildcard Mask match subnet 192.168.1.0/24
Cách tính: Lấy 255.255.255.255 trừ đi subnet mask của subnet
=> Địa chỉ IP: 192.168.1.1 0.0.0.255

Tính Wildcard Mask match dãy địa chỉ IP liên tục:
VD: Tính Wildcard Mask match range192.168.2.0 - 192.168.4.255
Cách tính: Lấy địa chỉ cuối trừ địa chỉ đầu
=> Địa chỉ IP: 192.168.2.0 0.0.2.255

Tính Wildcard Mask match 1 số IP trong dãy:
VD: Cho địa chỉ IP 192.168.1.0, tính Wildcard Mask match N host đầu tiên
=> Dải địa chỉ cần match: 192.168.1.0 - 192.168.1.N
=> Wildcard Mask: 0.0.0.N (lấy địa chỉ cuối trừ địa chỉ đầu)
=> Địa chỉ IP: 192.168.1.0 0.0.0.N

Tính Wildcard Mask match IP lẻ, hoặc IP chẵn:
1 địa chỉ IP lẻ hay chẳn là địa chỉ có octet cuối cùng dạng thập phân là số lẻ hay chẳn
VD:     IP lẻ - 192.168.1.1
            IP chẵn - 192.168.1.2
Ta có bit cuối cùng của IP lẻ luôn là bit 1, bit cuối cùng của IP chẵn luôn là bit 0. Vậy Wildcard Mask thỏa mãn phải tạo ra một dãi IP có bit cuối của octet cuối không đổi bằng 0 hoặc 1 (tương ứng với chẳn hoặc lẻ).
Để match bit cuối của octet cuối của IP, bit tương ứng trên Wildcard Mask phải là bit 0

VD1: Cho địa chỉ IP: 192.168.1.0, tính Wildcard Mask match tất cả IP chẵn:
=> Wildcard Mask: 0.0.0.254 (00000000.00000000.00000000.11111110)
=> Địa chỉ IP: 192.168.1.0 0.0.0.254 (IP chẵn có bit cuối luôn bằng 0)

VD2: Cho địa chỉ IP: 192.168.1.0, tính Wildcard Mask match tất cả IP lẻ
=> Wildcard Mask: 0.0.0.254 (00000000.00000000.00000000.11111110)
=> Địa chỉ IP: 192.168.1.1 0.0.0.254 (IP lẻ có bit cuối luôn bằng 1)

Tính Wildcard Mask match 1 dãy IP address không liên tục:
Đây là dạng Wildcard Mask phức tạp nhất vì chúng ta không thể sử dụng chỉ 1 Wildcard Mask để tạo thành địa chỉ IP match tất cả dãy IP ban đầu.

VD: Tính Wildcard Mask match dãy: 192.168.1.12 => 192.168.1.75
Đây là một dãy IP không liên tục, không có 1 Wildcard Mask nào có thể thỏa mãn dãy này. Vì vậy cần chia nhỏ dãy này thành nhiều dãy IP liên tục.

Mỗi bit trong octet phần host đại diện cho một nhóm các host gọi là một block size. Bit cuối cùng là block size 1 vì nó thể hiện 1 host, tương tự bit đầu tiên là block size 128. Và, mỗi block size chúng ta luôn tìm được 1 Wildcard Mask thỏa mãn.

Chia dải thành các block size:
- 192.168.1.12 => 15 có dạng 192.168.1.000011xx (1)
- 192.168.1.16 => 31 có dạng 192.168.1.0001xxxx (2)
- 192.168.1.32 => 63 có dạng 192.168.1.001xxxxx (3)
- 192.168.1.64 => 75 có dạng 192.168.1.01xxxxxx (4)

Tính Wildcard Mask cho mỗi block size:
- (1): 192.168.1.12 0.0.0.3
- (2): 192.168.1.16 0.0.0.15
- (3): 192.168.1.32 0.0.0.31
- (4): Chưa có Wildcard Mask phù hợp, ta phân tích dạng nhị phân octet cuối để tách tiếp Wildcard Mask:

192.168.1.64 => 71 có dạng 01000xxx (5)
192.168.1.72 => 75 có dạng 010010xx (6)
- (5): 192.168.1.64 0.0.0.7
- (6): 192.168.1.72 0.0.0.3

Mình xin chia sẻ với các bạn một công cụ online để kiểm tra lại Wildcard Mask: Wildcard Mask Calculator

Post a Comment

أحدث أقدم