---
id: ccna-ip-subnet
title: "IPv4, CIDR và thiết kế subnet"
track: fundamentals
trackTitle: "IP, subnet và routing table"
order: 2
level: core
status: published
estimatedMinutes: 40
prerequisites:
  - ccna-scope
next: ccna-routing-gateway
reviewedAgainst: 2026-10-29
sources:
  - title: "RFC 1918 — Address Allocation for Private Internets"
    url: https://www.rfc-editor.org/rfc/rfc1918
---

# IPv4, CIDR và thiết kế subnet

Peering Azure báo **Connected** mà ping không qua — đôi khi không phải firewall, mà hai bên cùng dùng `10.0.1.0/24`. Terraform vẫn apply được; traffic mới không đi đúng. Bài này để tránh lỗi đó và đọc được bảng route.

## Để làm gì

Chọn dải IP cho VNet, subnet node, pod CIDR (nếu tách), và kiểm tra không đè lên office LAN hay VPN đang chạy.

## Gồm những gì

CIDR, RFC1918, VLSM ở mức *thiết kế* (không luyện tính nhẩm subnet cho thi). Lệnh xem địa chỉ/route trên Linux và effective routes trên cloud.

## Dùng khi nào

Mở dự án mới, thêm cluster, nối site-on-prem, hoặc review PR đụng `address_space`.

Prefix dài hơn thì mạng nhỏ hơn: `/24` là 256 ô (thực tế thường trừ gateway). `/28` chỉ 16 ô — dễ hết chỗ khi autoscale.

Private hay gặp:

| CIDR | Ghi chú DevOps |
| --- | --- |
| `10.0.0.0/8` | Rộng, dễ chia VNet lớn |
| `172.16.0.0/12` | Hay dùng cho Docker default bridge (tránh trùng cluster) |
| `192.168.0.0/16` | Lab, office LAN |

<div class="pkt"><div class="w-ip">VNet 10.20.0.0/16<div class="w-tcp">Subnet nodes 10.20.1.0/24<div class="w-http">Subnet pods 10.20.64.0/18 — riêng CIDR, route riêng trên một số CNI</div></div></div></div>

Hai site cùng một dải usable thì router chọn path theo longest match — packet có thể im luôn hoặc đi nhầm cửa. Mở NSG lúc đó không cứu được.

Usable host (subnet kiểu classful): cỡ `2^(32-prefix) - 2`. Cloud thường dùng gần hết range, chỉ giữ gateway.

```bash
# Linux — xem địa chỉ và prefix
ip -4 addr show dev eth0
# Azure CLI — effective routes (cần extension)
az network nic show-effective-route-table -g RG -n NIC_NAME -o table
```

## Thực hành

1. Vẽ bảng: site A, site B, VNet, pod CIDR — không dòng nào overlap.
2. Với `/24` node subnet và 50 node + 100 pod/node overlay, ước lượng có cần subnet pod riêng không.
3. Trên VM lab: `ip route get 8.8.8.8` — ghi gateway và interface.

## Checklist

- [ ] Mọi nơi join mạng (VPN, peering, mesh) có một bảng CIDR master.
- [ ] Pod/service CIDR documented trước khi mở ticket network.
- [ ] Biết prefix của subnet đích khi đọc route table.

## Thẻ ôn

### ccna-ip-subnet-overlap
kind: trap
cue: "peering OK" + "no traffic" → overlap CIDR

Q: Peering Azure hiển thị Connected, ping subnet đối diện fail, không có deny rule — nghi gì đầu tiên?

A: Trùng/overlap CIDR hoặc thiếu route cụ thể; kiểm bảng địa chỉ hai bên trước khi mở port.

### ccna-ip-subnet-prefix
kind: default
cue: "/28 subnet" + "many pods"

Q: Gắn 80 pod vào subnet `/28` node-only — vấn đề?

A: `/28` quá nhỏ; pod CIDR hoặc node subnet phải scale theo CNI, không nhét pod IP vào subnet node nếu model tách CIDR.

## Tiếp theo

[Default gateway và routing table](./02-routing-gateway.md)
