2 giờ sáng. Điện thoại rung. Lead dev nhắn: “Server không kết nối được database, check network đi”. Mình ngồi bật dậy, SSH vào jump host — máy cơ bản, không cài tool gì ngoài bash. Nghi ngờ subnet overlap giữa VLAN mới thêm hôm qua và dải IP cũ.
Quản lý network cho office 50 người kèm datacenter nhỏ, kiểu tình huống này xảy ra đúng lúc kém chuẩn bị nhất — đêm khuya, máy không có tool, deadline đang chạy. Bài này chia thẳng những công cụ online đã bookmark sẵn, dùng được ngay khi chỉ có browser.
Quick Start: 3 tool dùng ngay trong 5 phút
1. Subnet Calculator — giải quyết ngay bài toán CIDR
Cái mình mở đầu tiên khi nghi ngờ subnet conflict là Subnet Calculator. Tool này tính ngay network range, broadcast address, số host khả dụng từ một IP/CIDR bất kỳ.
Mình dùng ToolCraft Subnet Calculator — giao diện gọn, chạy 100% trên browser không gửi gì lên server. Quan trọng khi phải nhập IP của production environment mà không muốn lộ topology nội bộ.
Ví dụ: server database ở 10.10.20.5/24, app server ở 10.10.20.100/24. Nhập vào và thấy ngay:
Network: 10.10.20.0
Broadcast: 10.10.20.255
Host range: 10.10.20.1 — 10.10.20.254
Usable: 254 hosts
Hai cái cùng /24, cùng subnet, route nội bộ. Vậy lỗi không phải ở đây. Chuyển sang check DNS.
2. DNS Lookup — khi hostname resolve về IP sai
Connection string trong code dùng hostname thay vì IP thẳng. dnschecker.org là cái mình mở tiếp theo — nhập hostname, nó query từ 20+ location toàn cầu cùng lúc. Cực kỳ đắc lực ngay sau khi đổi DNS record, vì thấy được ngay đâu đã propagate, đâu vẫn còn cache cũ.
Kết quả: hostname database đang trỏ về IP cũ chưa update sau lần migrate server tuần trước. Case closed lúc 2:23 sáng.
3. IP / Subnet Mask Converter — khi team dùng nhiều notation khác nhau
Hay gặp tình huống: firewall rule viết dạng 10.10.20.0/255.255.255.0, còn AWS security group yêu cầu CIDR 10.10.20.0/24. Convert subnet mask ↔ CIDR prefix là việc mình làm thường xuyên khi config cross-platform.
Nhanh nhất là dùng Subnet Calculator luôn — nhập một dạng, nó output cả hai. Không cần mở thêm tab.
Đào sâu hơn: Dùng từng tool đúng lúc, đúng việc
Subnet Calculator — dùng đúng cách
Tính /24 hay /16 chỉ là use case cơ bản nhất. Mấy bài toán thực tế hay gặp hơn:
- Chia subnet (subnetting): Có dải
192.168.10.0/24, cần chia thành 4 VLAN. Tính /26 → mỗi subnet 62 host, 4 subnets vừa đủ. - Check overlap: Hai route có overlap không? Nhập từng cái, so sánh host range là biết.
- VLSM planning: Cấp subnet size khác nhau cho từng department — accounting cần 10 host, dev cần 50 host, chọn prefix phù hợp cho từng nhóm.
Với ToolCraft, nhập IP + subnet mask hoặc CIDR notation, tool tự convert và hiển thị đủ: network address, broadcast, first/last host, wildcard mask, binary representation.
Phần binary nhìn có vẻ dư thừa. Nhưng khi cần giải thích cho junior team tại sao /24 chỉ có 254 host chứ không phải 256 — mở binary lên, chỉ thẳng vào 8 bit host, dễ hiểu hơn nhiều so với giải thích miệng.
DNS Lookup — biết dùng đúng loại tool
Ba tình huống khác nhau cần ba tool khác nhau — dùng nhầm là mất thêm 5 phút debug vô ích:
- Check record cụ thể:
dighoặcnslookuptừ terminal là nhanh nhất. Khi không có CLI, dùng nslookup.io — nhập domain, chọn record type (A, MX, TXT, CNAME), query từ custom DNS server tùy chọn. - Check DNS propagation: Vừa đổi record, cần xem đã propagate chưa — dnschecker.org query từ nhiều location, thấy đâu chưa update.
- Debug mail server: MX record, SPF, DKIM, DMARC — mxtoolbox.com có suite đầy đủ nhất, check blacklist luôn thể.
Khi đang troubleshoot và cần query DNS nhanh từ terminal:
# Query A record
dig A db.internal.company.com
# Query từ specific DNS server
dig @8.8.8.8 A db.internal.company.com
# Check MX record
dig MX company.com +short
# Reverse lookup (PTR)
dig -x 10.10.20.5
# Check TTL còn lại
dig A hostname.com +ttlid
IP Converter — những conversion hay gặp
- Subnet mask ↔ CIDR prefix:
255.255.255.0=/24,255.255.254.0=/23,255.255.252.0=/22 - IP decimal ↔ hex: Đọc log thiết bị cũ hoặc Cisco config xuất hex
- IPv4-mapped IPv6: Server dual-stack log ra
::ffff:10.10.20.5— cần biết đây thực ra là IPv4
Subnet mask ↔ CIDR thì Subnet Calculator trên ToolCraft xử lý luôn khi nhập vào. Còn hex conversion, Python nhanh hơn bất kỳ tool online nào:
import ipaddress
# IP sang integer và hex
ip = ipaddress.ip_address('10.10.20.5')
print(int(ip)) # 168497157
print(hex(int(ip))) # 0xa0a1405
# Parse network, tính host range
net = ipaddress.ip_network('10.10.20.0/24')
print(f"Usable hosts: {net.num_addresses - 2}")
print(f"First host: {next(net.hosts())}")
print(f"Last host: {list(net.hosts())[-1]}")
print(f"Broadcast: {net.broadcast_address}")
Nâng cao: Kết hợp các tool khi troubleshoot
Script check subnet overlap tự động
Khi thêm VLAN mới vào hệ thống, mình chạy script check overlap trước khi config router:
import ipaddress
def check_overlap(networks):
"""Trả về danh sách các cặp subnet bị overlap"""
nets = [ipaddress.ip_network(n, strict=False) for n in networks]
conflicts = []
for i, n1 in enumerate(nets):
for n2 in nets[i+1:]:
if n1.overlaps(n2):
conflicts.append((str(n1), str(n2)))
return conflicts
# Danh sách subnet đang dùng
existing = [
"10.10.10.0/24", # VLAN10 - Office
"10.10.20.0/24", # VLAN20 - Servers
"10.10.30.0/24", # VLAN30 - DMZ
"192.168.1.0/24", # Management
]
new_subnet = "10.10.20.128/25" # Subnet mới cần thêm
conflicts = check_overlap(existing + [new_subnet])
if conflicts:
print("CONFLICT DETECTED:")
for c in conflicts:
print(f" {c[0]} overlaps {c[1]}")
else:
print("No conflicts. Safe to add.")
Workflow debug connectivity
Khi nhận ticket “không kết nối được”, mình đi theo flow này:
- Layer check: Ping IP trực tiếp được không? Nếu được → DNS/app layer. Không được → network layer.
- Subnet check: Source và destination cùng subnet không? Nếu khác subnet, gateway có route không?
- DNS check: Hostname resolve về IP nào? Đúng không? Từ nhiều location không?
- Port check: Service đang listen không?
#!/bin/bash
# Quick network debug — log kết quả vào file
TARGET="db.internal.company.com"
PORT=5432
LOGFILE="/tmp/netdebug-$(date +%Y%m%d-%H%M).log"
{
echo "=== $(date) ==="
echo "--- DNS ---"
dig A $TARGET +short
echo "--- Ping ---"
ping -c 3 $TARGET 2>&1
echo "--- Port $PORT ---"
nc -zv $TARGET $PORT 2>&1
echo "--- Route ---"
ip route get $(dig A $TARGET +short | head -1) 2>&1
} | tee $LOGFILE
echo "Log saved: $LOGFILE"
Cái tee cuối giúp vừa xem realtime vừa lưu log. Sáng hôm sau viết incident report có đủ data, không phải nhớ lại.
Tips thực tế
Bookmark sẵn trước khi cần
Tạo một folder bookmark “Network Tools” với 4-5 tool đã dùng quen. Lúc 2 giờ sáng không phải mò Google giữa đống quảng cáo.
Folder bookmark của mình:
- ToolCraft Subnet Calculator — subnet/CIDR/wildcard, chạy offline, không lo lộ IP nội bộ
- dnschecker.org — DNS propagation từ nhiều location
- mxtoolbox.com — debug mail, SPF/DKIM/DMARC, blacklist check
- nslookup.io — DNS query từ custom server
Ưu tiên tool client-side khi nhập IP nhạy cảm
Trước khi nhập IP hoặc hostname production vào tool online, hỏi: dữ liệu này có gửi lên server của họ không? ToolCraft chạy toàn bộ tính toán bằng JavaScript ngay trên browser — không có request nào gửi ra ngoài. Phù hợp khi cần nhập dải IP nội bộ hoặc topology nhạy cảm.
DNS checker thì ngược lại — bản chất phải query từ nhiều location nên hostname đi qua server của họ. Không sao với public domain, nhưng tránh dùng cho internal hostname.
CLI vẫn nhanh hơn cho một số việc
Tool online tiện khi không có môi trường chuẩn. Nhưng khi đã SSH vào server, ipcalc nhanh hơn switch tab browser:
# Cài ipcalc
apt install ipcalc # Debian/Ubuntu
yum install ipcalc # CentOS/RHEL
# Dùng — output tương đương Subnet Calculator online
ipcalc 10.10.20.5/24
# Output:
# Address: 10.10.20.5
# Netmask: 255.255.255.0 = 24
# Network: 10.10.20.0/24
# HostMin: 10.10.20.1
# HostMax: 10.10.20.254
# Broadcast: 10.10.20.255
# Hosts/Net: 254
Hai cái cho ra kết quả giống nhau. Tool online dùng khi không có CLI, ipcalc dùng khi đã ở trong server.

