Bài 11: Network cơ bản và DNS

Bài 11: Network cơ bản và DNS

Bài này giúp anh debug kết nối mạng theo lớp: IP, route, DNS, port, HTTP response.

Sau bài này anh sẽ biết:

  • Kiểm tra IP, route, DNS.
  • Phân biệt lỗi DNS, firewall, service và application.
  • Dùng ping, curl, dig, traceroute.

Chốt ý nhanh

Chủ đề Điểm cần nhớ
Debug network Đi theo lớp: DNS → IP → route → port → service → application.
DNS Lỗi domain không phải lúc nào cũng là lỗi web server.
HTTP test curl, dig, ss, nc là bộ công cụ nền tảng.

1. Tư duy debug network

Khi website không vào được, đừng kết luận ngay. Hãy đi theo lớp: DNS → IP route → port/firewall → service → application.

2. Lệnh kiểm tra IP và route

ip addr
ip route
ping -c 4 8.8.8.8
ping -c 4 google.com

Nếu ping IP được nhưng domain không được, nghi DNS. Nếu cả IP không được, nghi network/route/firewall.

3. Kiểm tra DNS

dig example.com
nslookup example.com
dig +short example.com

dig +short giúp xem nhanh domain trỏ về IP nào.

4. Kiểm tra HTTP/HTTPS

curl -I http://example.com
curl -I https://example.com
curl -v https://example.com

-I lấy header. -v xem chi tiết kết nối, TLS, response.

5. Tình huống thực tế

Domain trỏ sai IP nên user vào website cũ. Anh dùng dig +short domain để xác nhận IP, sau đó kiểm tra DNS record tại provider.

6. Debug port

ss -tulpn
nc -vz example.com 443
curl -I --connect-timeout 5 https://example.com

nc -vz kiểm tra port có mở từ client không.

7. Checklist network troubleshooting

  1. DNS resolve đúng IP chưa?
  2. Server có route ra ngoài không?
  3. Service có listen đúng port không?
  4. Firewall/security group có mở không?
  5. HTTP response là 200/301/403/404/500?

8. Lỗi thường gặp

  • Nhầm lỗi DNS với lỗi web server.
  • Quên cache DNS/TTL.
  • Chỉ test từ server, không test từ ngoài Internet.

9. Bài tập

  1. Chạy dig với 3 domain.
  2. Dùng curl -I xem status code.
  3. Viết quy trình debug website không truy cập được.

Phần thực hành mở rộng: troubleshooting network có trình tự

Khi website không vào được, người mới rất hay nhảy cóc tới kết luận sai. Bài này cần tạo thói quen debug theo lớp, vì đó là cách tiết kiệm thời gian nhất trong thực tế.

Lab 1: Phân biệt lỗi mạng và lỗi DNS

ping -c 4 8.8.8.8
ping -c 4 google.com
ip addr
ip route

Nếu ping IP được mà ping domain không được, khả năng cao là DNS. Nếu cả hai đều không ổn, cần xem route hoặc connectivity cơ bản.

Lab 2: Dùng dig để đọc record rõ ràng

dig example.com
 dig +short example.com
 dig NS example.com
 dig MX example.com

Lab này giúp người học phân biệt A record, NS, MX và biết domain đang trỏ đi đâu thật.

Lab 3: Đọc HTTP response thay vì chỉ “mở trình duyệt thấy lỗi”

curl -I http://example.com
curl -I https://example.com
curl -v https://example.com

Hãy tập nhìn:

  • HTTP status code
  • redirect đi đâu
  • TLS handshake có vấn đề gì không
  • server header và response time

Lab 4: Kiểm tra port theo hướng client

nc -vz example.com 80
nc -vz example.com 443
curl -I --connect-timeout 5 https://example.com

Mục tiêu là hiểu “service up trên server” chưa chắc đồng nghĩa “client ngoài Internet truy cập được”.

Tình huống thực tế

Một domain mới trỏ DNS nhưng vẫn vào site cũ vì TTL cache chưa hết. Nếu không hiểu DNS propagation, người vận hành rất dễ đổi cấu hình sai chỗ trong khi nguyên nhân thực chỉ là thời gian cache.

Lỗi phổ biến

  • Nhầm lỗi DNS với lỗi Nginx/app.
  • Chỉ test từ trong server, không test từ bên ngoài.
  • Không nhìn status code và redirect chain.
  • Không để ý TTL khi sửa record.

Kết bài

Sau bài này, anh nên có một khung debug network đủ chắc để không hoảng khi website “không vào được”. Chỉ cần đi đúng lớp, rất nhiều sự cố sẽ bớt mơ hồ ngay lập tức. Từ đây, anh có thể bước sang Nginx và reverse proxy với nền tảng mạng rõ ràng hơn nhiều.

Tác giả: Mạnh Hoàng

Tôi là Hoàng Mạnh, người sáng lập blog SysadminSkills.com. Tôi viết về quản trị hệ thống, bảo mật máy chủ, DevOps và cách ứng dụng AI để tự động hóa công việc IT. Blog này là nơi tôi chia sẻ những gì đã học được từ thực tế – đơn giản, ngắn gọn và áp dụng được ngay.

Để lại một bình luận

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *