Subnet, CIDR notation, Subneting
Subnet
Subnet (Mạng con) là kỹ thuật chia một mạng lớn thành nhiều mạng nhỏ hơn nhằm quản lý hiệu quả tài nguyên địa chỉ IP và tối ưu hóa hiệu suất mạng. Subnet được áp dụng trong cả IPv4 và IPv6, tuy nhiên, phương pháp chia subnet giữa hai phiên bản có sự khác biệt. Việc tính toán chia subnet đóng vai trò quan trọng và cần thiết trong quá trình cấu hình thiết bị, cấp phát địa chỉ IP, cập nhật định tuyến, kiểm tra kết nối, thiết lập bảo mật và giám sát mạng, đảm bảo hệ thống hoạt động ổn định.
Ví dụ, thay vì có một mạng lớn với 1.000 thiết bị, ta có thể chia thành 4 mạng nhỏ với 250 thiết bị mỗi mạng. Điều này giúp:
- Giảm tắc nghẽn mạng (do giới hạn số lượng thiết bị trong mỗi subnet).
- Tăng cường bảo mật (các subnet có thể cô lập với nhau).
- Tối ưu địa chỉ IP (tránh lãng phí dải địa chỉ IP).
Các thành phần của một subnet
Khi chia subnet, mỗi subnet sẽ có 4 thành phần chính:
Thành phần | Ý nghĩa | Ví dụ với mạng 192.168.1.0/26 | Ví dụ với mạng 192.168.1.0/24 |
---|---|---|---|
Network ID (Địa chỉ mạng) | Xác định subnet, tất cả thiết bị trong subnet có cùng Network ID. | 192.168.1.0 | 192.168.1.0 |
Host ID (Địa chỉ thiết bị) | Xác định từng thiết bị trong subnet. | 192.168.1.1 → 192.168.1.62 | 192.168.1.1 → 192.168.1.254 |
Broadcast Address | Địa chỉ cuối cùng của subnet, dùng để gửi dữ liệu đến tất cả thiết bị trong subnet. | 192.168.1.63 | 192.168.1.255 |
Subnet Mask | Xác định phần Network ID và Host ID trong địa chỉ IP. | 255.255.255.192 (hoặc /26) | 255.255.255.0 (hoặc /24) |
Giải nghĩa ví dụ trên:
-
Subnet mask
/26
có 26 bit đầu là 1 (phần mạng), còn lại là 0 (phần host):
255.255.255.192 =11111111.11111111.11111111.11000000
- Network ID:
192.168.1.0
- Host ID:
192.168.1.1 → 192.168.1.62
(IP khả dụng) - Broadcast Address:
192.168.1.63
- Network ID:
-
Subnet mask
/24
có 24 bit đầu là 1 (phần mạng), còn lại là 0 (phần host):
255.255.255.0 =11111111.11111111.11111111.00000000
- Network ID:
192.168.1.0
- Host ID:
192.168.1.1 → 192.168.1.254
(IP khả dụng) - Broadcast Address:
192.168.1.255
- Network ID:
Subnet Mask
Một địa chỉ IPv4 có 32 bit, chia thành 4 phần (octet), mỗi phần 8 bit, ví dụ:
192.168.1.10 = 11000000.10101000.00000001.00001010
Subnet Mask cũng là 32 bit, dùng để phân biệt phần Network ID và Host ID trong 1 địa chỉ IP.
- Network ID: Xác định mạng, tất cả các thiết bị trong cùng mạng có chung Network ID.
- Host ID: Xác định thiết bị trong mạng đó.
Subnet Mask | Dạng CIDR | Network ID (Số bit) | Host ID (Số bit) |
---|---|---|---|
255.255.255.0 | /24 | 24 | 8 |
255.255.255.128 | /25 | 25 | 7 |
255.255.255.192 | /26 | 26 | 6 |
255.255.255.224 | /27 | 27 | 5 |
255.255.255.240 | /28 | 28 | 4 |
- Lưu ý: Số bit Host ID = 32 - CIDR
CIDR Notation
CIDR (Classless Inter-Domain Routing) là cách viết địa chỉ IP gọn hơn bằng cách sử dụng dấu "/" để biểu thị số bit thuộc phần network của subnet mask.
Ví dụ: Thay vì viết đầy đủ subnet mask như 255.255.255.0, ta có thể viết địa chỉ IP theo dạng CIDR:
192.168.1.10/24 tương đương với Subnet Mask: 255.255.255.0
Subneting - Cách chia Subnet
Công thức tính nhanh
Số lượng ip của mạng = 2^(số bit host)
Số lượng mạng con = 2^(số bit mượn)
Số host khả dụng = 2^(số bit host) − 2(trừ địa chỉ mạng và broadcast).
- Số bit host là số bit còn lại sau khi đã xác định phần mạng. Từ số bit host tính ra số lượng ip thực tế của mạng mới.
- Số bit mượn là số bit được lấy từ phần host để tạo subnet nhỏ hơn. Từ số bit mượn tính ra subnet mask mới.
ví dụ: chia mạng 192.168.1.0/24 thành 7 mạng con, mỗi mạng có số ip là 29
- Số lượng ip của mạng = 2^(số bit host), ở đây là 29 -> 2^5 >= 29, vậy số bit host hợp lý là 5
- Số lượng mạng con = 2^(số bit mượn), ở đây là 7 -> 2^3 >= 7 => mượn 3 bit
- Subnet mask mới: /24 + 3(mượn 3 bit) = /27
Ví dụ 1: chia mạng 192.168.1.0/24 thành 2 mạng con, mỗi mạng có 128 IP
Bước 1: Xác định mạng ban đầu
- Mạng gốc là 192.168.1.0/24
- Subnet mask: 255.255.255.0
- Có 256 địa chỉ IP (
2^(32-24) = 256
), trong đó 254 địa chỉ khả dụng (trừ 2 địa chỉ cho Network ID và Broadcast).
Bước 2: Xác định số bit cần mượn
- Mạng ban đầu
/24
→ có 256 địa chỉ (2^8
). - Cần chia thành 2 subnet, vậy cần mượn 1 bit (vì
2^1 = 2
). - Subnet mask mới là
/24
+ 1(mượn 1 bit) =/25
hoặc 255.255.255.128(128 trong nhị phân là 10000000, nghĩa là 1 bit đầu mượn từ host).
Bước 3: Xác định dải mạng con
- Khoảng cách giữa các subnet:
2^(32-25) = 128
- Mỗi dải có 126 IP khả dụng
Subnet | Network ID | Dải IP khả dụng | Broadcast |
---|---|---|---|
Subnet 1 | 192.168.1.0/25 | 192.168.1.1 → 192.168.1.126 | 192.168.1.127 |
Subnet 2 | 192.168.1.128/25 | 192.168.1.129 → 192.168.1.254 | 192.168.1.255 |
Ví dụ 2: chia subnet từ mạng 192.168.1.0/24 thành 4 mạng con, mỗi mạng có 64 IP
Bước 1: Xác định mạng ban đầu
- Mạng gốc là 192.168.1.0/24
- Subnet mask: 255.255.255.0
- Có 256 địa chỉ IP (
2^(32-24) = 256
), trong đó 254 địa chỉ khả dụng (trừ 2 địa chỉ cho Network ID và Broadcast).
Bước 2: Xác định số bit cần mượn
- Mạng ban đầu
/24
→ có 256 địa chỉ (2^8
). - Cần chia thành 4 subnet, vậy cần mượn 2 bit (vì
2^2 = 4
). - Subnet mask mới là
/24
+ 2(mượn 2 bit) =/26
hoặc 255.255.255.192(192 trong nhị phân là 11000000, nghĩa là 2 bit đầu mượn từ host).
Bước 3: Xác định dải mạng con
- Khoảng cách giữa các subnet:
2^(32-26) = 64
- Mỗi dải có 62 IP khả dụng
Subnet | Network ID | Dải IP khả dụng | Broadcast |
---|---|---|---|
Subnet 1 | 192.168.1.0/26 | 192.168.1.1 → 192.168.1.62 | 192.168.1.63 |
Subnet 2 | 192.168.1.64/26 | 192.168.1.65 → 192.168.1.126 | 192.168.1.127 |
Subnet 3 | 192.168.1.128/26 | 192.168.1.129 → 192.168.1.190 | 192.168.1.191 |
Subnet 4 | 192.168.1.192/26 | 192.168.1.193 → 192.168.1.254 | 192.168.1.255 |
Subneting thì liên quan gì tới devops
Trong các môi trường như Kubernetes, AWS, và Azure, subnetting đóng vai trò quan trọng trong việc quản lý các dịch vụ mạng, phân bổ địa chỉ IP, và đảm bảo khả năng mở rộng linh hoạt của hệ thống.
Kubernetes Subnetting
Trong Kubernetes, mạng (network) là một yếu tố quan trọng, đặc biệt khi bạn triển khai các ứng dụng phân tán trong môi trường đa pod. Kubernetes sử dụng các CNI plugins (Container Network Interface) để quản lý mạng giữa các pod, service, và các thành phần khác.
- Pod Networking: Các pod trong Kubernetes cần có địa chỉ IP riêng để giao tiếp với nhau. Subnetting giúp phân bổ không gian địa chỉ IP cho các pod, đảm bảo rằng mỗi pod có địa chỉ IP duy nhất trong một mạng con (subnet).
- Service Networking: Kubernetes sử dụng một IP riêng cho mỗi service. Subnetting sẽ xác định phạm vi IP cho các service, giúp dễ dàng quản lý và mở rộng các service khi cần thiết.
Ví dụ:
- Mỗi cluster Kubernetes có thể có một subnet riêng cho các pod (
192.168.0.0/16
) và một subnet riêng cho các service (10.96.0.0/12
). - Cách phân chia subnet giúp đảm bảo rằng các pod có thể giao tiếp với nhau mà không gặp phải xung đột IP.
Subnetting trong AWS (Amazon Web Services)
AWS sử dụng VPC (Virtual Private Cloud) để triển khai hạ tầng mạng ảo. VPC cho phép bạn định nghĩa các mạng con (subnets), từ đó có thể triển khai các tài nguyên như EC2 instances, RDS, và Kubernetes clusters.
- VPC: Đây là môi trường mạng ảo, nơi bạn có thể kiểm soát địa chỉ IP, subnets, và cách các tài nguyên giao tiếp với nhau.
- Subnets: Trong AWS, bạn chia VPC thành nhiều subnets (có thể là public hoặc private). Mỗi subnet sẽ có dải IP riêng, giúp phân bổ tài nguyên mạng hiệu quả.
Ví dụ:
- Bạn có một VPC với CIDR
10.0.0.0/16
và muốn chia nó thành các subnets riêng biệt:10.0.1.0/24
cho các tài nguyên public và10.0.2.0/24
cho các tài nguyên private. - Với cách chia này, các tài nguyên trong public subnet có thể giao tiếp với internet, trong khi các tài nguyên trong private subnet được bảo vệ khỏi internet.
Subnetting trong Azure
Trong Azure, mạng ảo (Virtual Network - VNet) đóng vai trò tương tự như VPC trong AWS. Bạn có thể chia VNet thành các subnet để triển khai các tài nguyên như Virtual Machines, Kubernetes clusters, và các dịch vụ khác.
- VNet: Cung cấp môi trường mạng ảo trong Azure, nơi bạn có thể xác định phạm vi địa chỉ IP và chia thành các subnet.
- Subnets: Mỗi subnet trong VNet có thể chứa các tài nguyên Azure và có thể được cấu hình với các chính sách bảo mật và quản lý truy cập khác nhau.
Ví dụ:
- Bạn có một VNet với CIDR
10.1.0.0/16
và muốn tạo các subnet:10.1.1.0/24
cho các máy ảo (VMs) và10.1.2.0/24
cho các Kubernetes nodes. - Mỗi subnet sẽ có dải IP riêng, giúp quản lý và bảo mật các tài nguyên.
Túm lại
- Subnet giúp quản lý mạng hiệu quả hơn, giảm tắc nghẽn và tăng bảo mật.
- CIDR Notation giúp xác định subnet mask, chia nhỏ mạng hợp lý.
- Quy tắc chia subnet: Mượn bit từ Host ID để tạo thêm mạng con.
- Khi chia subnet: Xác định số mạng con cần có, số thiết bị trong mỗi subnet, rồi áp dụng công thức
2^n
để tính số bit cần mượn.
All rights reserved
Bình luận