Nên xem phần trước khi xem bài này:
Ôn lại cách xác định IP cho trước thuộc lớp mạng nào
Ví dụ: xác định ip 192.168.0.158/28 thuộc lớp mạng nào
Giải:
- Xét octet thứ 4 của subnet mask có: 4 bit mạng và 4 bit host-NNNNHHHH (/28: mượn 4 bit)
- Số lớp mạng: 2n = 24 = 16 subnet
- Số host trên mỗi subnet: 2h=8-n = 28-4=4 =16, chỉ có 16 - 2 = 14 (bỏ đi 1 địa chỉ mạng và 1 địa chỉ broadcast) có thể sử dụng
- Bước nhảy là 16, lấy 158 chia bước nhảy (16) được 9 còn dư (trường hợp này chúng ta không xét số dư), lấy 9 nhân bước nhảy (16) = 144.
Vậy host này thuộc lớp mạng 192.168.0.144/28 (có thể dùng tool để kiểm tra, tham khảo tại đây)
Xem ví dụ ACL trên route:
Router#show access-lists
Standard IP access list 1
10 permit 192.168.1.0, wildcard bits 0.0.0.255
20 permit 192.168.2.0, wildcard bits 0.0.0.255
30 deny 172.16.0.1
40 permit 172.16.0.0, wildcard bits 0.0.255.255
50 permit 10.0.0.0, wildcard bits 0.255.255.255
Wildcard mask/bits được đi kèm với 1 subnet hay 1 IP để kiểm tra và chọn ra những IP áp dụng vào cấu hình cài đặt. Trong cisco được sử dụng có 1 số trường hợp như:
- Dynamic Routing (chỉ ra size của network hay subnet routing vd: OSPF);
- Access Control List: chỉ IP, dãy IP sẽ được permit hay deny.
Các trường hợp của wildcard:1. Lấy tất cả các địa chỉ IP liên tục trong 1 subnet Cơ bản wildcard bit là nghịch đảo subnet mask.
Ví dụ: Tính wildcard bit của lớp mạng 192.168.1.0/24
Cách tính:
- Ghi subnet mask dưới dạng thập phân (1)
- Chuyển subnet mask sang dạng nhị phân (2)
- Nghịch đảo các bit: nghĩa là nếu bít nào bằng 1 thì chuyển thành 0, và ngược lại nếu bít nào bằng 0 thì chuyển thành 1 (3)
- Đổi kết quả của (3) sang thập phân (4)
Subnet Mask /24 | 255 | 255 | 255 | 0 |
Binary Equivalent | 11111111 | 11111111 | 11111111 | 00000000 |
Inverts to a Wildcard Mask | 00000000 | 00000000 | 00000000 | 11111111 |
Wildcard Mask (Dec) | 0 | 0 | 0 | 255 |
Vậy wildcard cần tìm là 0.0.0.255
Ví dụ 2:
Subnet Mask /25 | 255 | 255 | 255 | 128 |
Binary Equivalent | 11111111 | 11111111 | 11111111 | 10000000 |
Inverts to a Wildcard Mask | 00000000 | 00000000 | 00000000 | 01111111 |
Wildcard Mask (Dec) | 0 | 0 | 0 | 127 |
Vậy wildcard là 0.0.0.127
Ví dụ 3:
Subnet Mask /27 | 255 | 255 | 255 | 224 |
Binary Equivalent | 11111111 | 11111111 | 11111111 | 11100000 |
Inverts to a Wildcard Mask | 00000000 | 00000000 | 00000000 | 00011111 |
Wildcard Mask (Dec) | 0 | 0 | 0 | 31 |
Vậy wildcard là 0.0.0.31
Noted: Cũng có thể tính nhanh bằng cách lấy broadcast(255) TRỪ subnet mask (nhưng chưa chắc đúng trong 1 số trường hợp)
Broadcast Address | 255 | 255 | 255 | 255 |
Subnet Mask | 255 | 255 | 255 | 0 |
Wildcard Mask | 0 | 0 | 0 | 255 |
Danh sách wildcard:
Slash | Netmask | Wildcard Mask |
---|---|---|
/32 | 255.255.255.255 | 0.0.0.0 |
/31 | 255.255.255.254 | 0.0.0.1 |
/30 | 255.255.255.252 | 0.0.0.3 |
/29 | 255.255.255.248 | 0.0.0.7 |
/28 | 255.255.255.240 | 0.0.0.15 |
/27 | 255.255.255.224 | 0.0.0.31 |
/26 | 255.255.255.192 | 0.0.0.63 |
/25 | 255.255.255.128 | 0.0.0.127 |
/24 | 255.255.255.0 | 0.0.0.255 |
/23 | 255.255.254.0 | 0.0.1.255 |
/22 | 255.255.252.0 | 0.0.3.255 |
/21 | 255.255.248.0 | 0.0.7.255 |
/20 | 255.255.240.0 | 0.0.15.255 |
/19 | 255.255.224.0 | 0.0.31.255 |
/18 | 255.255.192.0 | 0.0.63.255 |
/17 | 255.255.128.0 | 0.0.127.255 |
/16 | 255.255.0.0 | 0.0.255.255 |
/15 | 255.254.0.0 | 0.1.255.255 |
/14 | 255.252.0.0 | 0.3.255.255 |
/13 | 255.248.0.0 | 0.7.255.255 |
/12 | 255.240.0.0 | 0.15.255.255 |
/11 | 255.224.0.0 | 0.31.255.255 |
/10 | 255.192.0.0 | 0.63.255.255 |
/9 | 255.128.0.0 | 0.127.255.255 |
/8 | 255.0.0.0 | 0.255.255.255 |
/7 | 254.0.0.0 | 1.255.255.255 |
/6 | 252.0.0.0 | 3.255.255.255 |
/5 | 248.0.0.0 | 7.255.255.255 |
/4 | 240.0.0.0 | 15.255.255.255 |
/3 | 224.0.0.0 | 31.255.255.255 |
/2 | 192.0.0.0 | 63.255.255.255 |
/1 | 128.0.0.0 | 127.255.255.255 |
/0 | 0.0.0.0 | 255.255.255.255 |
* Quy tắc match của wildcard mask:
Wildcard Mask được ghi ở dạng IP nhưng trúc khá đặc biệt, khi đổi ra nhị nhân các bit của IP sẽ tương ứng với từng bit của wildcard mask, những bit nào của wildcard mask:
- Bằng 0 thì bit của IP tương ứng sẽ được giữ nguyên (fixed cố định);
- Bằng 1 thì bit của IP được phép thay đổi trong khoảng 0 hoặc 1Ví dụ 4:
IP Address: 172.16.1.0 | 10101100 | 00010000 | 00000001 | 00000000 |
Wildcard Mask: 0.0.0.255 | 00000000 | 00000000 | 00000000 | 11111111 |
Với nguyên tắc trên ta thấy tất cả các bit trong octet cuối cùng của wildcard mask là 1 nên các bit tương ứng của IP sẽ thay đổi.
172.16.1.0 | 10101100 | 00010000 | 00000001 | 00000000 |
172.16.1.1 | 10101100 | 00010000 | 00000001 | 00000001 |
172.16.1.2 | 10101100 | 00010000 | 00000001 | 00000010 |
172.16.1.3 | 10101100 | 00010000 | 00000001 | 00000011 |
172.16.1.4 | 10101100 | 00010000 | 00000001 | 00000100 |
172.16.1.5 | 10101100 | 00010000 | 00000001 | 00000101 |
172.16.1.6 | 10101100 | 00010000 | 00000001 | 00000110 |
… | .. | … | … | … |
… | … | … | … | … |
… | … | … | … | … |
172.16.1.253 | 10101100 | 00010000 | 00000001 | 11111100 |
172.16.1.254 | 10101100 | 00010000 | 00000001 | 11111110 |
172.16.1.255 | 10101100 | 00010000 | 00000001 | 11111111 |
Các IP address sẽ được lấy ra và đưa vào vùng cài đặt sẽ là từ: 172.16.1.0 đến 172.16.1.0.255
Ví dụ 5:
IP Address: 172.16.1.32 | 10101100 | 00010000 | 00000001 | 00100000 |
Wildcard Mask: 0.0.0.5 | 00000000 | 00000000 | 00000000 | 00000101 |
Ta thấy chỉ có bít cuối cùng và bit thứ 6 của wildcard bằng 1, có nghĩa là bit cuối cùng và bit thứ 6 của ip sẽ được phép thay đổi, các bit còn lại là giữ nguyên.
Ban đầu chúng ta liệt kê tất cả các ip từ bit thứ 6 đến bit thứ 8 (cuối cùng).
172.16.1.32 | 00100000 | ||||
172.16.1.33 | 00100001 | ||||
172.16.1.34 | 00100010 | Loại | |||
172.16.1.35 | 00100011 | Loại | |||
172.16.1.36 | 00100100 | ||||
172.16.1.37 | 00100101 | ||||
172.16.1.38 | 00100110 | Loại | |||
172.16.1.39 | 00100111 | Loại |
Theo yêu cầu bit thứ 7 của IP sẽ cố định, nên các IP address sẽ được lấy ra và đưa vào vùng cài đặt sẽ là:
+ 172.16.1.32
+ 172.16.1.33
+ 172.16.1.36
+ 172.16.1.37
Để biết IP/subnet chẵn hay lẻ ta căn cứ vào bit cuối cùng của chúng trong octet ở dạng thập phân là chẵn hay lẻ
Ví dụ:
§ IP lẻ: 172.16.1.1
§ IP chẵn: 172.16.1.2
Ví dụ:
§ Subnet lẻ: 192.168.1.0
§ Subnet chẵn: 192.168.2.0
Và khi convert sang nhị phân bit cuối cùng của octet nếu là:
§ 1 => IP lẻ
§ 0 => IP chẵn
Ví dụ 6:
Lấy tất cả subnet lẻ của danh sách subnet mask:
192.168.0.0/24
192.168.1.0/24
192.168.2.0/24
192.168.3.0/24
192.168.4.0/24
192.168.5.0/24
192.168.6.0/24
192.168.7.0/24
192.168.8.0/24
Viết chúng dưới dạng nhị phân:
192.168.0.0 | 1100 0000 | 1010 1000 | 0000 0000 | 0000 0000 |
192.168.1.0 | 1100 0000 | 1010 1000 | 0000 0001 | 0000 0000 |
192.168.2.0 | 1100 0000 | 1010 1000 | 0000 0010 | 0000 0000 |
192.168.3.0 | 1100 0000 | 1010 1000 | 0000 0011 | 0000 0000 |
192.168.4.0 | 1100 0000 | 1010 1000 | 0000 0100 | 0000 0000 |
192.168.5.0 | 1100 0000 | 1010 1000 | 0000 0101 | 0000 0000 |
192.168.6.0 | 1100 0000 | 1010 1000 | 0000 0110 | 0000 0000 |
192.168.7.0 | 1100 0000 | 1010 1000 | 0000 0111 | 0000 0000 |
192.168.8.0 | 1100 0000 | 1010 1000 | 0000 1000 | 0000 0000 |
Ta thấy 2 octet đầu tiên là cố định, octet thứ 3 là có sự thay đổi. Có thể viết lại octet thứ 3 làm 2 bảng như sau:
Tất cả các subnet chẵn
0 | 0000 0000 |
2 | 0000 0010 |
4 | 0000 0100 |
6 | 0000 0110 |
8 | 0000 1000 |
1 | 0000 0001 |
3 | 0000 0011 |
5 | 0000 0101 |
7 | 0000 0111 |
Nhận xét:
+ Hai octet đầu tiên của IP luôn cố định nên chúng ta sử dụng wildcard là: 0000 0000.0000 0000
+ Octet thứ 3 có sự thay đổi nên wildcard 1111 1111 (/24 nên tất cả các bit trong octet này phải bằng 1), vì bit cuối cùng của octet này cố định, theo phân tích trên là bít cuối cùng của 2 bảng trên cố định nên wildcard dùng cho trường hợp này là 1111 1110 (254)
+ Octet thứ 4 là dãy các ip chạy từ 0 -> 255 (thay đổi) nên tất cả các bit của octet này là 1111 1111 (255)
Vậy wildcard dùng trong trường hợp này sẽ là: 0.0.254.255
Ví dụ 7: Lấy tất cả các địa chỉ IP chẵn của lớp mạng 172.16.1.128/26
Subnet Mask /26 | 255 | 255 | 255 | 192 |
Binary Equivalent | 11111111 | 11111111 | 11111111 | 11000000 |
Inverts to a Wildcard (a) | 00000000 | 00000000 | 00000000 | 00111111 |
Khi xét tính chẵn lẻ trong wildcard thì bit cuối của octet cần xét phải là 0, nên kết quả (a) bảng trên ta viết lại là: 00111110.
Inverts to a Wildcard | 00000000 | 00000000 | 00000000 | 00111110 |
Wildcard Mask (Dec) | 0 | 0 | 0 | 62 |
Vậy để lấy tất cả các IP theo yêu cầu, ta sử dụng:
Address: 172.16.1.128
Wildcard: 0.0.0.62
3. Lấy địa chỉ IP trong nhiều subnet
Ví dụ 8:
Tính wildcard mask cho dãy địa chỉ từ 172.16.1.0 đến 172.16.1.68
Thực tế không có một wildcard mask có thể lấy match được tất cả các IP nằm trong dãy IP từ 0->68 nên ta phải chia ra thành từng mạng nhỏ (subnet) và sau đó tính wildcard mask cho từng subnet đó.
- 172.16.1.0 -> 172.16.1.63 (I)
- 172.16.1.64 -> 172.16.1.67 (II)
- 172.16.1.68 (III)
Cách 1:
(I):
Subnet Mask /26 | 255 | 255 | 255 | 192 |
Binary Equivalent | 11111111 | 11111111 | 11111111 | 11000000 |
Inverts to a Wildcard Mask | 00000000 | 00000000 | 00000000 | 00111111 |
Wildcard Mask (Dec) | 0 | 0 | 0 | 63 |
(II):
Subnet Mask /30 | 255 | 255 | 255 | 252 |
Binary Equivalent | 11111111 | 11111111 | 11111111 | 1111100 |
Inverts to a Wildcard Mask | 00000000 | 00000000 | 00000000 | 00000011 |
Wildcard Mask (Dec) | 0 | 0 | 0 | 3 |
(III):
Subnet Mask /32 | 255 | 255 | 255 | 255 |
Binary Equivalent | 11111111 | 11111111 | 11111111 | 1111111 |
Inverts to a Wildcard Mask | 00000000 | 00000000 | 00000000 | 00000000 |
Wildcard Mask (Dec) | 0 | 0 | 0 | 0 |
Cách 2:
(I): là dãy IP từ 172.16.1.0 -> 172.16.1.63 có dạng 172.16.1.00xxxxxx
=> wildcard mask của (I): 172.16.1.0 0.0.0.63
(II): là dãy IP từ 172.16.1.64 -> 172.16.1.67 có dạng 172.16.1.010000xx
=> wildcard mask của (II): 172.16.1.64 0.0.0.3
(III):172.16.1.68 là một host
=> wildcard mask của dãy (III):: 172.16.1.68 0.0.0.0
Tóm lại:
Để tính wildcard chúng ta có thể:
1. Nghịch đảo subnet mask
2. Nếu xét tính chẵn lẻ thì căn cứ vào bit cuối cùng và tuân theo quy tắc match
3. Quy tắc match:
- Bằng 0 thì bit của IP tương ứng sẽ được giữ nguyên (fixed cố định);
- Bằng 1 thì bit của IP được phép thay đổi trong khoảng 0 hoặc 1Tham khảo thêm tại đây
Công cụ hỗ trợ hoặc IP-subnet
Xong!