Saturday, November 20, 2010

[Access Control List] Wildcard mask

Phần này sẽ giới thiệu về một khái niệm khá quan trọng trong ACL là Wildcard 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ả.

No comments:

Post a Comment