Không còn nghi ngờ gì nữa, Cloudflare là dịch vụ DNS tốt nhất thế giới bạn nên dùng.
Với việc hỗ trợ API, chúng ta còn có thể làm được nhiều trò hơn nữa để tối ưu cho phù hợp với nhu cầu sử dụng.

Mình có sử dụng nameserver của Cloudflare từ những ngày đầu ra mắt để quản lý DNS, tốc độ cập nhật nhanh chóng, hỗ trợ nhiều loại record và nhất là khả năng kích hoạt Proxy để bảo vệ server khỏi những cuộc tấn công DDoS vừa và nhỏ rất tốt.
Thường thì mình không bật Proxy lên, chỉ khi nào có tấn công thì mới dùng mà thôi. Những website quan trọng thì không bao giờ để lộ IP backend mà chạy Nginx reverse proxy dùng một server khác làm fronend kết nối tới. Server frontend có chết thì backend vẫn hoạt động được bình thường, hoặc nếu cần thì nhân lên nhiều server frontend để chạy.
Do hôm vừa rồi bị DDoS tống tiền mà không có đủ tiền trả, nên mình có tìm được cách này hay quá, tự động thay đổi cấu hình DNS của Cloudflare để trỏ đến IP mong muốn, rồi có thể kích hoạt Proxy nếu muốn nữa.
Có 2 thao tác mình sử dụng, chia sẻ lại hết nếu bạn nào cần thì dùng hoặc chỉnh lại.
1. Ping kiểm tra server frontend
Server backend mình kiểm tra liên tục frontend coi có hoạt động hay không bằng cách ping. Công cụ theo dõi sử dụng monit
.
Lệnh cài đặt monit trên CentOS:
yum install monit
Thêm cấu hình cho monit theo dõi trong thư mục /etc/monit.d/
, ví dụ:
nano /etc/monit.d/ping
Dán nội dung file này vào, thay lại IP của bạn.
check host 1.2.3.4 with address 1.2.3.4 if failed icmp type echo count 3 with timeout 3 seconds for 2 cycles then exec "/bin/bash -c /root/monit/proxy.sh" else if succeeded for 2 cycles then exec "/bin/bash -c /root/monit/native.sh"
Ý nghĩa đoạn code trên như sau:
- Nếu ping 2 chu kỳ liên tiếp không được, mỗi chu kì 3 lần ping với thời gian timeout 3 giây, thì chạy file bash kia
/root/monit/proxy.sh
- Nếu ping ok thì chạy lại file bash
/root/monit/native.sh
proxy.sh
mình dùng đổi IP và kích hoạt Proxy, thường thì bạn chỉ cần kích hoạt Proxy là xong. native.sh
sẽ đổi lại IP frontend nếu cuộc tấn công kết thúc. Nội dung file thì bạn theo dõi bước tiếp theo.
2. Thay đổi DNS Cloudflare qua API
Đoạn code thay đổi DNS Cloudflare thì mình có lấy ở đây, lưu lại làm 2 file tương ứng như đoạn code trên nhé. Ví dụ với file proxy.sh
trước tiên.
Cách cấu hình script đó như sau:
- Bước 1: Điền EMAIL, TOKEN, DOMAIN và SUBDOMAIN. Token API lấy ở đây: https://dash.cloudflare.com/profile/api-tokens. Nếu đổi IP cho tên miền chính thì đặt SUBDOMAIN là @, nên test trước khi áp dụng chính thức.
- Bước 2: Tạo A record với subdomain bạn đã chọn trên Cloudflare
- Bước 3: Phân quyền
chmod +x proxy.sh
rồi chạy file đó cùng tham sốproxy.sh -l
để lấy zone_id và rec_id rồi điền lại vào script - Bước 4: Chạy lại file script
proxy.sh
bạn sẽ nhận được thông báo đổi IP thành công hoặc IP không cần update nếu đã cập nhật từ trước rồi, vậy là ok.
Lưu ý dòng lệnh thực thi việc cập nhật DNS ở gần cuối file mình có chỉnh sửa lại một chút cho phù hợp, thêm thông số TTL thành như sau:
$CURL -X PUT "$API_URL/zones/$ZONE_ID/dns_records/$REC_ID" --data '{"type":"A","name":"'"$SUBDOMAIN"'","content":"'"$IP"'","ttl":"120","proxied":false}' 1>/dev/null
TTL chỉnh thành 120 giây để máy của khách truy cập cập nhật lại IP cho nhanh nếu có đổi. Proxied bạn đổi thành true/false
nếu muốn kích hoạt hoặc không nhé.
Kết hợp với bước 1 bên trên vậy là bạn đã có kịch bản tự động cập nhật IP cho tên miền trên Cloudflare nếu server gặp sự cố rồi đấy.
- Nguồn: canhme.com