VLSM và tổng hợp tuyến cho mạng nhiều phòng ban

Chia một /24 theo nhu cầu phòng ban, giữ vùng dự phòng và kiểm tra chồng lấn. Phân biệt gộp prefix chính xác với aggregate hút thêm lưu lượng.
Một chi nhánh được giao 192.168.20.0/24. Phòng người dùng cần 90 endpoint, kỹ thuật cần 45, khách cần 20, quản trị cần 10 và còn hai liên kết router. Chia đều thành /26 không đủ cho phòng lớn nhất; cấp /24 riêng cho từng phòng lại vượt khối được giao. VLSM giải quyết bài toán bằng các subnet có kích thước khác nhau, nhưng tính đủ số host mới chỉ là bước đầu.
Bài này lập một phương án địa chỉ cho tình huống giả định, kiểm tra chồng lấn bằng Python và phân tích khi nào có thể quảng bá tuyến tổng hợp. Các con số là yêu cầu học tập được chọn riêng, không phải khảo sát doanh nghiệp. Không có lệnh thay đổi router production; cấu hình route chỉ được trình bày như ví dụ cần đối chiếu trước khi dùng.
1. Chốt nhu cầu địa chỉ trước khi chia khối
Số người dùng chưa bằng số địa chỉ cần cấp. Một phòng có thể có máy tính, điện thoại, máy in, thiết bị IoT và interface phục vụ gateway dự phòng. Ngược lại, AP có thể chỉ cần một địa chỉ quản trị ở VLAN khác, còn client Wi-Fi dùng pool riêng. Cần liệt kê theo VLAN và interface thực tế thay vì cộng mọi thiết bị vật lý vào một hàng.
Để giữ phép tính rõ, yêu cầu 90, 45, 20 và 10 trong bài là số endpoint chưa bao gồm một địa chỉ gateway của mỗi LAN. Chưa triển khai HSRP/VRRP, nên tạm tính thêm đúng một gateway; trong thiết kế có hai interface router và một IP ảo phải dự trù thêm. Đây là điều kiện của phương án, không phải mức dự phòng áp dụng cho mọi mạng.
Hướng dẫn subnetting/VLSM của Cisco là nguồn đối chiếu cách chia kích thước khác nhau. Phần bản đồ địa chỉ dưới đây là phương án biên tập mới. Không chép bảng trong PDF vì nhu cầu, biên khối và kế hoạch mở rộng phải đi cùng một ví dụ nhất quán.
| Phân đoạn | Endpoint + gateway | Khối chọn | Host thông thường |
|---|---|---|---|
| Người dùng | 90 + 1 = 91 | /25 | 126 |
| Kỹ thuật | 45 + 1 = 46 | /26 | 62 |
| Khách | 20 + 1 = 21 | /27 | 30 |
| Quản trị | 10 + 1 = 11 | /28 | 14 |
| Hai link point-to-point | 2 endpoint/link | 2 × /30 | 2/link |
/30 được chọn cho ví dụ để dễ thấy network, hai host và broadcast. /31 là lựa chọn có thể dùng trên point-to-point khi hai đầu hỗ trợ theo RFC 3021. Không chọn chỉ vì tiết kiệm hai địa chỉ mà bỏ qua hỗ trợ thiết bị, quy trình quản lý hoặc khả năng công cụ giám sát.
2. Cấp khối lớn trước, giữ đúng ranh giới mạng
Phòng người dùng nhận 192.168.20.0/25, chiếm .0–.127. Phòng kỹ thuật nhận 192.168.20.128/26, chiếm .128–.191. Phòng khách nhận 192.168.20.192/27, chiếm .192–.223. Phòng quản trị nhận 192.168.20.224/28, chiếm .224–.239. Bốn khối đi từ lớn tới nhỏ và đều bắt đầu tại biên hợp lệ.
Hai link router lấy 192.168.20.240/30 và 192.168.20.244/30. Các địa chỉ .248–.255 được giữ lại thành 192.168.20.248/29, chưa dùng cho LAN hoặc link nào. Dự phòng này chỉ có 8 địa chỉ tổng; không thể hứa đủ cho một phòng 20 người sẽ xuất hiện sau. Nếu nhu cầu tăng lớn, cần xin khối rộng hơn hoặc đổi phương án từ đầu.

Cuộn ngang khi cần, hoặc chạm sơ đồ để mở ảnh gốc.
Lý do cấp khối lớn trước là giảm phân mảnh không gian địa chỉ khi xây phương án mới. Nó không phải thuật toán luôn tối ưu mọi hệ thống: mạng đã có địa chỉ cố định, yêu cầu tổng hợp theo tầng hoặc nhiều chi nhánh có thể cần ràng buộc khác. Quy trình tốt là kiểm tra đồng thời dung lượng, khả năng vận hành và cấu trúc định tuyến.
Ví dụ không được đặt LAN kỹ thuật thành .160/26 chỉ vì .160 còn trống khi nhìn bằng mắt. /26 cần biên bội của 64 ở octet cuối; .160 nằm trong .128/26. Địa chỉ host nằm trong một khối không tạo được một subnet mới cùng prefix. Hãy dùng chế độ kiểm tra nghiêm để bắt sai biên.
3. Lập sổ cấp phát có gateway, broadcast và chủ sở hữu
Bảng phân bổ phải đủ cho người triển khai và người xử lý sự cố. Ngoài CIDR, cần có dải host, gateway, DHCP scope hoặc IP tĩnh, VLAN, thiết bị và mục đích. Một địa chỉ đang không ping được chưa đủ để kết luận chưa ai dùng. Nguồn cấp phát chính thức, DHCP reservation và cấu hình hiện hữu cần được đối chiếu.
| Subnet | Host dùng được | Gateway/endpoint | Broadcast |
|---|---|---|---|
| .0/25 | .1–.126 | Gateway .1 | .127 |
| .128/26 | .129–.190 | Gateway .129 | .191 |
| .192/27 | .193–.222 | Gateway .193 | .223 |
| .224/28 | .225–.238 | Gateway .225 | .239 |
| .240/30 | .241–.242 | Hai đầu link thứ nhất | .243 |
| .244/30 | .245–.246 | Hai đầu link thứ hai | .247 |
Mọi địa chỉ trong bảng đều có tiền tố 192.168.20. Với mỗi LAN, gateway đã chiếm một vị trí trong dải host. Nếu dùng DHCP, không để server cấp trùng gateway hoặc địa chỉ tĩnh đã dành cho thiết bị khác. Không tự kết luận scope phải bằng toàn bộ dải host; có thể cần vùng dự phòng và reservation theo chính sách.

Cuộn ngang khi cần, hoặc chạm sơ đồ để mở ảnh gốc.
Vùng .248/29 còn trống không đồng nghĩa đã cấu hình một VLAN dự phòng. Giữ nó trong sổ như tài nguyên chưa cấp, kèm người chịu trách nhiệm phê duyệt. Khi thêm yêu cầu mới, kiểm tra lại kế hoạch tổng thể trước khi lấy địa chỉ tiếp theo theo thói quen.
4. Kiểm tra đúng biên, không chồng lấn và đủ dung lượng
Đoạn Python 3 sau kiểm tra những điều kiện số học của phương án. Nó không gửi gói hoặc sửa network interface. Dùng strict=True để lỗi sai biên không bị âm thầm chuẩn hóa, và overlaps để phát hiện subnet giao nhau.
from ipaddress import ip_network
from itertools import combinations
parent = ip_network("192.168.20.0/24")
blocks = [ip_network(x, strict=True) for x in [
"192.168.20.0/25", "192.168.20.128/26",
"192.168.20.192/27", "192.168.20.224/28",
"192.168.20.240/30", "192.168.20.244/30",
"192.168.20.248/29",
]]
assert all(n.subnet_of(parent) for n in blocks)
assert all(not a.overlaps(b) for a, b in combinations(blocks, 2))
assert sum(n.num_addresses for n in blocks) == parent.num_addresses
assert [n.num_addresses - 2 for n in blocks[:4]] == [126, 62, 30, 14]
Các assert đã chạy đạt trong kiểm tra biên tập. Chúng chứng minh phân bổ địa chỉ trong ví dụ là nhất quán, không chứng minh switch đã đặt đúng VLAN, router có route hoặc DHCP scope đã được cấu hình. Tài liệu ipaddress giải thích rõ thao tác trên network và cách xử lý /31, /32.
Bổ sung một kiểm tra theo nhu cầu: số host khả dụng trừ gateway phải ít nhất bằng số endpoint dự kiến. Nếu có gateway dự phòng, sửa mô hình nhu cầu trước khi chạy lại. Một chương trình tính đúng dựa trên đầu vào thiếu vẫn cho ra phương án không đáp ứng thực tế.
5. Tổng hợp tuyến cần chung prefix và đúng nơi sở hữu
Chia subnet đi từ khối lớn xuống các khối nhỏ; tổng hợp tuyến đi theo hướng ngược lại nhưng không được tùy ý gộp mọi địa chỉ gần nhau. Các khối phải được bao phủ bởi prefix chung, có biên đúng, và việc quảng bá phải phù hợp khả năng chuyển tiếp của router. RFC 4632 là nền tảng cho cách tư duy aggregate classless này.
Hai mạng 192.168.20.0/25 và 192.168.20.128/25 ghép chính xác thành 192.168.20.0/24. Nhưng .64/26 và .128/26 không ghép chính xác thành một /25: chúng nằm hai phía của ranh giới /25. Prefix bao phủ cả hai sẽ là /24 và kéo thêm các địa chỉ không thuộc hai khối. Đó là phần dư cần đánh giá, không phải một phép rút gọn vô hại.

Cuộn ngang khi cần, hoặc chạm sơ đồ để mở ảnh gốc.
Với chi nhánh trong bài, quảng bá /24 về phía trung tâm có thể hợp lý nếu R1 là điểm nhận lưu lượng cho toàn khối và các subnet con nằm phía sau nó. Việc còn vùng chưa cấp không tự cấm tổng hợp, nhưng R1 phải xử lý đích không tồn tại trong aggregate sao cho không tạo vòng lặp, đồng thời không hút lưu lượng của địa điểm khác.
Một tuyến discard phù hợp có thể là một phần thiết kế chống vòng lặp cho aggregate; cách cấu hình và điều kiện phát sinh summary tùy giao thức. Không thêm Null0 chỉ vì thấy ví dụ trên Internet. Cần kiểm tra các route cụ thể, default route, quyền sở hữu và tác động khi một nhánh bị mất.
6. Phân biệt aggregate với quyết định chọn tuyến cụ thể
Nếu router đã cài cả 192.168.20.0/24 và 192.168.20.128/26, gói tới .150 khớp /26 cụ thể hơn. Administrative distance không được dùng để ưu tiên /24 ít cụ thể hơn chỉ vì nguồn route “đáng tin” hơn. AD giúp chọn nguồn cho cùng prefix trong quá trình cài route; forwarding nhìn các route đã có và chọn longest prefix match.
Đây là điểm được làm rõ trong tài liệu lựa chọn route của Cisco. Bài routing sau sẽ đi sâu next hop, metric và default. Ở bước lập địa chỉ, cần hiểu summary không xóa ý nghĩa của subnet con và không tự bảo đảm đường về từ mọi điểm.
Khi một nhánh hỏng mà aggregate vẫn còn được quảng bá, traffic có thể tiếp tục đến router tổng hợp rồi bị loại. Đây có thể là hành vi có chủ đích để giữ ổn định phần còn lại, nhưng cần giám sát đúng. Không dùng “route vẫn tồn tại” làm bằng chứng mọi host phía sau vẫn truy cập được.
Trước thay đổi, lập danh sách route sẽ quảng bá, route chi tiết giữ lại và hướng đi/đường về. So sánh kết quả tra tuyến cho một địa chỉ trong mỗi subnet và một địa chỉ chưa cấp. Nếu kết quả chỉ đúng cho một phòng, chưa đủ để xác nhận toàn bộ phương án VLSM đã triển khai thành công.
7. Đưa phương án vào hồ sơ thay đổi và tự đánh giá
Đối với mạng mới, cần phê duyệt bảng cấp phát, gán VLAN/interface, dựng scope DHCP và kiểm tra route trước khi đưa người dùng vào. Với mạng đang hoạt động, đổi prefix có thể làm mất phiên quản trị, ngắt dịch vụ và yêu cầu renew cấu hình trên client; phải có cửa sổ thay đổi, bản sao cấu hình và đường quay lại phù hợp.
Không cần thực hiện các thay đổi đó để hoàn thành bài học này. Hãy lấy bảng và tự trả lời: phòng kỹ thuật thêm 20 endpoint thì /26 còn đủ không? 45 + 20 + 1 = 66 vượt 62, nên không đủ. Vùng /29 cuối khối cũng không giải quyết bằng cách thêm vài IP vào subnet cũ; cần thiết kế lại hoặc có khối bổ sung.
Câu tiếp theo: .64/26 và .128/26 có gộp chính xác thành /25 không? Không, vì khác cha /25. Khi giải thích được cả bài toán dung lượng lẫn biên aggregate, bạn có thể đọc tiếp IPv6 trong lộ trình 28 bài. Nếu vẫn nhầm biên mạng với host, trở lại bài IPv4/subnetting và kiểm chứng từng khối bằng AND nhị phân.