---
id: ccna-routing-gateway
title: "Gateway, routing table và longest match"
track: fundamentals
trackTitle: "IP, subnet và routing table"
order: 3
level: core
status: published
estimatedMinutes: 35
prerequisites:
  - ccna-ip-subnet
next: ccna-nat-snat
reviewedAgainst: 2026-10-29
sources:
  - title: "Linux ip-route2"
    url: https://man7.org/linux/man-pages/man8/ip-route.8.html
---

# Gateway, routing table và longest match

Logic giống trên router, trên Linux (`ip route`) và trên cloud (route table / effective routes) — khác chỗ sửa, cùng quy tắc longest prefix match.

## Để làm gì

Đọc được “packet đi cửa nào”, và phân biệt lỗi **không tới gateway** với **gateway ok nhưng xa không tới**.

## Gồm những gì

Cùng subnet thì ARP thẳng tới host; khác subnet thì frame gửi tới MAC của default gateway, IP đích vẫn giữ nguyên. Router chọn cổng ra bằng longest prefix match.

## Dùng khi nào

VM không ra Internet, UDR “lạ”, VPN lên nhưng subnet peer không ping được.

<div class="net-flow">
<div class="net-step" style="--layer:#ffedd5"><b>10.1.1.10/24</b><span>→ 10.1.1.20: cùng LAN</span></div>
<div class="net-arrow">|</div>
<div class="net-step" style="--layer:#fef3c7"><b>10.1.1.10/24</b><span>→ 10.2.0.5: MAC của 10.1.1.1 (gateway)</span></div>
</div>

Ví dụ bảng:

| Destination | Next hop | Ghi chú |
| --- | --- | --- |
| `10.2.0.0/16` | VPN | Toàn bộ `10.2.x` |
| `10.2.1.0/24` | LAN | `/24` dài hơn → **thắng** cho `10.2.1.x` |
| `0.0.0.0/0` | Internet | Chỉ khi không có route cụ thể hơn |

```bash
ip route show
ip route get 10.2.1.44
```

Trên Azure, xem **effective routes** trên NIC trước khi đụng NSG — UDR và BGP nằm ở đó.

## Thực hành

1. `ip route get` tới một IP public và một IP private — so sánh gateway.
2. Ping gateway fail: dừng, chưa cần traceroute xa.
3. Một dòng effective route trên cloud VM — chỉ route dài nhất tới IP test.

## Checklist

- [ ] Không nhầm “default route có” với “tới được subnet peer”.
- [ ] Sửa route trước, mở thêm port sau (trừ khi chắc chắn chỉ là ACL).

## Thẻ ôn

### ccna-routing-gateway-longest
kind: distinguish
cue: "/8 vs /24" cùng bảng

Q: `10.0.0.0/8` qua VPN và `10.0.1.0/24` qua LAN — gói tới `10.0.1.50` đi đâu?

A: LAN `/24` vì longest match.

### ccna-routing-gateway-offsubnet
kind: command
cue: "khác subnet" + MAC

Q: Host gửi tới IP ngoài subnet local — MAC đích trên frame là gì?

A: MAC của default gateway, không phải MAC của IP đích cuối.

## Tiếp theo

[NAT, SNAT và DNAT](../nat-hybrid/01-nat-snat.md)
