Hướng dẫn tự động đổi record DNS khi dùng Cloudflare HA IP

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:

Thêm cấu hình cho monit theo dõi trong thư mục /etc/monit.d/, ví dụ:

Dán nội dung file này vào, thay lại IP của bạn.

Ý 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 bên dưới, 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:

TTL chỉnh thành 120 giây để khách truy cập lấy IP mới 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.

Trong quá trình làm theo nếu cần hỗ trợ thêm hoặc gặp sự cố gì hãy comment bên dưới để được trợ giúp nha. Nếu có ý tưởng gì hay hơn các bạn cũng comment góp ý nhé.

Chúc bạn thành công.

 

Tham khảo: Luân trần

Trả Lời