Chào bạn, tôi là một Kỹ sư DevOps. Trong quản trị hệ thống, việc lựa chọn DNS (Domain Name System) không chỉ đơn thuần là phân giải tên miền thành địa chỉ IP. Nó là lớp lá chắn đầu tiên cho hệ thống của bạn. Một sai lầm nhỏ trong cấu hình DNS có thể dẫn đến lộ IP gốc (Origin IP), gây ra các cuộc tấn công DDoS trực diện hoặc làm gián đoạn dịch vụ.
Bài viết này tôi sẽ phân tích chuyên sâu giữa việc sử dụng Cloudflare DNS và DNS của nhà cung cấp (Domain Provider DNS), đồng thời hướng dẫn cấu hình Server để tối ưu hóa bảo mật khi sử dụng Cloudflare.
1. Yêu cầu chuẩn bị
Để đảm bảo hệ thống vận hành ổn định và bảo mật, tôi khuyến nghị cấu hình tối thiểu như sau:
- Hệ điều hành: Ubuntu 22.04 LTS hoặc Ubuntu 24.04 LTS (Ưu tiên các bản Long Term Support để đảm bảo tính ổn định).
- Phần cứng: Tối thiểu 1 vCPU, 1GB RAM.
- Quyền hạn: Quyền
roothoặc người dùng có quyềnsudo. - Tên miền: Đã được đăng ký và có quyền quản trị.
2. Cảnh báo quan trọng
LƯU Ý TRƯỚC KHI THỰC HIỆN:
- Backup dữ liệu: Luôn tạo Snapshot cho VPS trước khi thay đổi cấu hình DNS hoặc Web Server.
- Thời gian cập nhật DNS (Propagation): Việc thay đổi NameServers có thể mất từ 1 giờ đến 24 giờ để cập nhật hoàn toàn trên toàn cầu.
- SSL/TLS: Nếu chuyển sang Cloudflare, bạn cần lưu ý chế độ SSL (Flexible/Full/Strict) để tránh lỗi vòng lặp chuyển hướng (Redirect Loop).
3. So sánh chi tiết: Cloudflare DNS vs DNS Nhà cung cấp
| Tiêu chí | DNS Nhà cung cấp (GoDaddy, NameSilo, v.v.) | Cloudflare DNS (Proxy Mode) |
|---|---|---|
| Bảo mật | Thấp. Lộ IP gốc của Server. | Cao. Ẩn IP gốc qua Proxy của Cloudflare. |
| Tốc độ | Trung bình. Phụ thuộc vào vị trí của Nameserver nhà cung cấp. | Rất nhanh. Sử dụng Anycast mạng lưới toàn cầu. |
| Chống DDoS | Không có hoặc rất hạn chế. | Có sẵn (Layer 3, 4 và Layer 7). |
| Tính năng phụ | Chỉ phân giải bản ghi (A, CNAME, MX…). | Cung cấp WAF, CDN, Tối ưu hóa hình ảnh, Caching. |
| Độ ổn định | Cao (tùy nhà cung cấp). | Rất cao (uptime gần như 100%). |
Lời khuyên của chuyên gia: Luôn sử dụng Cloudflare ở chế độ “Proxied” (Đám mây màu cam) để bảo vệ server khỏi các cuộc tấn công trực tiếp vào IP.
4. Hướng dẫn cấu hình Server tối ưu cho Cloudflare
Khi sử dụng Cloudflare Proxy, Web Server của bạn (Nginx/Apache) sẽ thấy toàn bộ traffic đến từ địa chỉ IP của Cloudflare, không phải IP thật của người dùng. Điều này gây khó khăn cho việc quản lý log và bảo mật (fail2ban).
Dưới đây là các bước cấu hình Nginx để nhận diện IP thực của khách hàng.
Bước 1: Cập nhật hệ thống
sudo apt update && sudo apt upgrade -y
Bước 2: Cài đặt Nginx
sudo apt install nginx -y
Bước 3: Cấu hình nhận diện Real IP từ Cloudflare
Chúng ta sẽ tạo một tệp cấu hình để Nginx tự động cập nhật dải IP của Cloudflare và lấy IP thực thông qua Header CF-Connecting-IP.
sudo nano /etc/nginx/conf.d/cloudflare_real_ip.conf
Dán nội dung sau vào file (Đây là dải IP IPv4 hiện tại của Cloudflare, bạn nên kiểm tra lại định kỳ):
# Cloudflare IPv4
set_real_ip_from 173.245.48.0/20;
set_real_ip_from 103.21.244.0/22;
set_real_ip_from 103.22.200.0/22;
set_real_ip_from 103.31.4.0/22;
set_real_ip_from 141.101.64.0/18;
set_real_ip_from 108.162.192.0/18;
set_real_ip_from 190.93.240.0/20;
set_real_ip_from 188.114.96.0/20;
set_real_ip_from 197.234.240.0/22;
set_real_ip_from 198.41.128.0/17;
set_real_ip_from 162.158.0.0/15;
set_real_ip_from 104.16.0.0/13;
set_real_ip_from 104.24.0.0/14;
set_real_ip_from 172.64.0.0/13;
set_real_ip_from 131.0.72.0/22;
# Sử dụng header do Cloudflare gửi tới để lấy IP thật
real_ip_header CF-Connecting-IP;
Bước 4: Cấu hình Virtual Host mẫu (Bảo mật cao)
Tạo file cấu hình cho website của bạn:
sudo nano /etc/nginx/sites-available/yourdomain.com
Nội dung file cấu hình chuẩn (Security-first):
server {
listen 80;
server_name yourdomain.com www.yourdomain.com;
# Chuyển hướng mọi traffic HTTP sang HTTPS
return 301 https://$host$request_uri;
}
server {
listen 443 ssl http2;
server_name yourdomain.com;
# Đường dẫn chứng chỉ (Nên dùng Cloudflare Origin CA)
ssl_certificate /etc/nginx/ssl/cert.pem;
ssl_certificate_key /etc/nginx/ssl/key.pem;
# Cấu hình SSL bảo mật tuyệt đối
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH;
ssl_prefer_server_ciphers on;
location / {
proxy_pass http://localhost:3000; # Hoặc thư mục web của bạn
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
# Chặn truy cập vào các file ẩn .env, .git
location ~ /. {
deny all;
}
}
Bước 5: Kích hoạt cấu hình và kiểm tra
# Tạo link liên kết
sudo ln -s /etc/nginx/sites-available/yourdomain.com /etc/nginx/sites-enabled/
# Kiểm tra cú pháp cấu hình (Cực kỳ quan trọng)
sudo nginx -t
# Nếu báo "syntax is ok", hãy khởi động lại Nginx
sudo systemctl restart nginx
5. Kiểm tra hoạt động (Verify)
Sau khi cấu hình, hãy thực hiện các bước kiểm tra sau để đảm bảo tính chính xác:
- Kiểm tra Header: Sử dụng lệnh
curlđể xem website đã nhận IP thực chưa.curl -I https://yourdomain.com - Kiểm tra Log: Truy cập website và xem file log của Nginx. Nếu thấy IP của bạn hiện ra thay vì IP của Cloudflare là thành công.
tail -f /var/log/nginx/access.log - Kiểm tra Proxy: Vào trang quản trị Cloudflare, mục DNS, đảm bảo biểu tượng đám mây là Màu cam (Proxied).
6. Xử lý sự cố (Troubleshooting)
Trong quá trình quản trị, bạn có thể gặp các lỗi sau:
- Lỗi 502 Bad Gateway:
- Nguyên nhân: Dịch vụ phía sau (Backend như Node.js, PHP-FPM) chưa chạy hoặc Nginx cấu hình sai cổng.
- Xử lý: Kiểm tra service bằng
sudo systemctl status <service_name>.
- Lỗi 403 Forbidden:
- Nguyên nhân: Quyền truy cập thư mục web sai (Permission denied) hoặc bạn vô tình chặn IP của Cloudflare trong Firewall (
ufwhoặciptables). - Xử lý: Cấp quyền lại:
sudo chown -R www-data:www-data /var/www/html. Mở port 80/443:sudo ufw allow 80,443/tcp.
- Nguyên nhân: Quyền truy cập thư mục web sai (Permission denied) hoặc bạn vô tình chặn IP của Cloudflare trong Firewall (
- Lỗi Redirect Loop (Too many redirects):
- Nguyên nhân: Bạn để chế độ SSL trên Cloudflare là “Flexible” trong khi Server đã cấu hình tự động redirect sang HTTPS.
- Xử lý: Chuyển chế độ SSL trên Cloudflare thành “Full” hoặc “Full (Strict)”.
Là một quản trị viên hệ thống, lời khuyên cuối cùng của tôi dành cho bạn: Đừng bao giờ tin tưởng vào cấu hình mặc định. Hãy luôn kiểm tra lại logs và thắt chặt Firewall để chỉ cho phép các dải IP của Cloudflare truy cập vào cổng 80/443 trên Server của bạn.
Chúc bạn xây dựng một hệ thống ổn định và bảo mật!
See more: So sánh Cloudflare DNS và DNS nhà cung cấp.
Discover: Python Trick.
