• Về minhduy.vn
  • Đăng ký Hosting
  • Thiết kế Website
  • Khuyến mãi HOT
Hướng Dẫn Sử Dụng Dịch Vụ - Minh Duy Solutions
  • Trang chủ
  • Hosting
    • Hướng dẫn Hosting cPanel
    • Hướng dẫn Hosting DirectAdmin
  • Tên miền
  • Website
    • Hướng dẫn WordPress
    • Hướng dẫn Webmaster
  • Email Doanh Nghiệp
    • Office 365
    • Google Work Space
    • Email Zimbra
  • VPS – Máy chủ
    • Hướng dẫn Linux
    • Hướng dẫn DirectAdmin
  • Hướng dẫn chung
  • Góc ICT
No Result
View All Result
  • Trang chủ
  • Hosting
    • Hướng dẫn Hosting cPanel
    • Hướng dẫn Hosting DirectAdmin
  • Tên miền
  • Website
    • Hướng dẫn WordPress
    • Hướng dẫn Webmaster
  • Email Doanh Nghiệp
    • Office 365
    • Google Work Space
    • Email Zimbra
  • VPS – Máy chủ
    • Hướng dẫn Linux
    • Hướng dẫn DirectAdmin
  • Hướng dẫn chung
  • Góc ICT
No Result
View All Result
Hướng Dẫn Sử Dụng Dịch Vụ - Minh Duy Solutions
No Result
View All Result
Home Hướng dẫn Website Hướng dẫn Webmaster

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

Minh Duy Solutions by Minh Duy Solutions
01/02/2023
Reading Time: 6 mins read
A A
0
5358fe1a7da72ce25dc1c40fb518359a
547
SHARES
1.8k
VIEWS
Share on FacebookShare on Twitter

Contents

  1. 1. Ping kiểm tra server frontend
  2. 2. Thay đổi DNS Cloudflare qua API
5/5 - (200 bình chọn)

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:

 
1
yum install monit

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

 
1
nano /etc/monit.d/ping

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

 
1
2
3
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 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.

#!/usr/bin/env bash
 
# Step 1: Fill in EMAIL, TOKEN, DOMAIN and SUBDOMAIN. Your API token is here: https://dash.cloudflare.com/profile/api-tokens
#         Make sure the token is the Global token, or has these permissions: #zone:read, #dns_record:read, #dns_records:edit
#         If you want to set the root domain instead of a subdomain, set SUBDOMAIN to "@"
# Step 2: Create an A record on Cloudflare with the subdomain you chose
# Step 3: Run "./ddns.sh -l" to get the zone_id and rec_id of the record you created.
#         Fill in ZONE_ID and REC_ID below
#         This step is optional, but will save you 2 requests every time you run this script
# Step 4: Run "./ddns.sh". It should tell you that record was updated or that it didn't need updating.
# Step 5: Run it every hour with cron. Use the '-s' flag to silence normal output
#         0 * * * * /path/to/ddns.sh -s
 
 
EMAIL=''
TOKEN=''
DOMAIN=''
SUBDOMAIN=''
ZONE_ID=''
REC_ID=''
 
 
 
set -euo pipefail
 
VERBOSE="true"
LOOKUP="false"
 
while getopts ":lsd" opt; do
  case ${opt} in
    l ) LOOKUP="true" ;;
    s ) VERBOSE="false" ;;
    d ) set -x ;; # for debugging
    ? ) echo -e "Usage: $(basename "$0") [-l] [-s] [-d]nRead the script source for detailed instructions" && exit 1 ;;
  esac
done
 
[[ "$SUBDOMAIN" = "@" ]] && FULL_DOMAIN="$DOMAIN" || FULL_DOMAIN="$SUBDOMAIN.$DOMAIN"
 
API_URL="https://api.cloudflare.com/client/v4"
CURL="curl -s 
  -H Content-Type:application/json 
  -H X-Auth-Key:$TOKEN 
  -H X-Auth-Email:$EMAIL "
 
 
if [ -z "$ZONE_ID" ] || $LOOKUP; then
  ZONE_ID="$($CURL "$API_URL/zones?name=$DOMAIN" | sed -e 's/[{}]/n/g' | grep '"name":"'"$DOMAIN"'"' | sed -e 's/,/n/g' | grep '"id":"' | cut -d'"' -f4)"
  $VERBOSE && echo "ZONE_ID='$ZONE_ID'"
fi
 
if [ -z "$REC_ID" ] || $LOOKUP; then
  #REC_ID="$($CURL "$API_URL/zones/$ZONE_ID/dns_records" | grep -C 5 '"name": "'"$FULL_DOMAIN"'"' |  grep '"id": "' | cut -d'"' -f4)"
  REC_ID="$($CURL "$API_URL/zones/$ZONE_ID/dns_records" | sed -e 's/[{}]/n/g' | grep '"name":"'"$FULL_DOMAIN"'"' | sed -e 's/,/n/g' | grep '"id":"' | cut -d'"' -f4)"
 
  $VERBOSE && echo "REC_ID='$REC_ID'"
fi
 
$LOOKUP && exit 0
 
set +e
for IP_URL in "http://ifconfig.me/ip" "http://ipv4.icanhazip.com"; do
  IP="$(curl -s "$IP_URL")"
  [ -n "$IP" ] && break
done
set -e
 
if [ -z "$IP" ]; then
  echo "Could not get external IP"
  exit 1
fi
 
RECORD_IP="$($CURL "$API_URL/zones/$ZONE_ID/dns_records/$REC_ID" | grep -o '"content":"[^"]+' | cut -d '"' -f4)"
 
if [ "$IP" == "$RECORD_IP" ]; then
  $VERBOSE && echo "IP Unchanged"
  exit 0
fi
 
$VERBOSE && echo "Setting IP to $IP"
 
$CURL -X PUT "$API_URL/zones/$ZONE_ID/dns_records/$REC_ID" --data '{"type":"A","name":"'"$SUBDOMAIN"'","content":"'"$IP"'","proxied":false}' 1>/dev/null
 
exit 0

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 để 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

Tags: cloudflareddostấn công
Share219Tweet137
Minh Duy Solutions

Minh Duy Solutions

Bài viết liên quan

stop wordpress user registration spam
Hướng dẫn WordPress

Hướng dẫn xoá hàng loạt user spam trên WordPress

23/05/2025
1.5k
Hướng dẫn Webmaster

Hướng dẫn tạo mật khẩu ứng dụng (app password) trên Gmail

27/03/2025
1.5k
Cach De Tang Toc Website WordPress Khi Su Dung Shared Hosting
Hướng dẫn Webmaster

Cách Để Tăng Tốc Website WordPress Khi Sử Dụng Shared Hosting

28/10/2024
1.5k
thanh top woo c
Hướng dẫn Website

Hướng dẫn ẩn thanh Edit Product che mất tùy chọn khi đăng sản phẩm của WooComerce

24/09/2024
1.5k
flatsome theme 1
Hướng dẫn Website

Hướng dẫn tắt UXBuilder ở 1 số post type theme Flatsome

24/09/2024
1.5k
flatsome theme 1
Hướng dẫn Website

Bật UX Builder cho Custom post type trên theme Flatsome

24/09/2024
1.7k

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

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 *

This site uses Akismet to reduce spam. Learn how your comment data is processed.

No Result
View All Result

Recommended.

f35501c9ef4a8235356c5372c5d71cc4

Cách xử lý khi website WordPress nhiễm mã độc

15/06/2023
1.7k
what is cpanel

Hướng dẫn cài đặt mã nguồn Joomla trên hosting tại Minh Duy Solutions.

22/09/2021
1.5k

Trending.

cach tao doi quoc gia cho tai khoan google 4082

Cách tạo (đổi quốc gia) cho tài khoản Google

24/01/2024
18k
cach tao doi quoc gia cho tai khoan google 4082

Cách xóa hồ sơ thanh toán tài khoản Google

24/01/2024
4.5k
57acc582dde37df0a76107d2fb2448d8

Cách Ngắt Link Ảnh Trong Adobe Illustrator, Đơn Giản, Hiệu Quả

04/10/2022
15.1k
huong dan cai dat laragon moi truong phat trien website de dang va nhanh chong tren windows 4053 2

Hướng dẫn cài đặt Laragon – Môi trường phát triển website dễ dàng và nhanh chóng trên Windows

07/12/2023
5.5k
cach sua loi co ve nhu ban o quoc gia khac voi nguoi quan ly gia dinh google 4097 3

Cách sửa lỗi Có vẻ như bạn ở quốc gia khác với người quản lý gia đình Google

24/01/2024
2.3k
Wiki Minh Duy Solutions

WIKI.MINHDUY.VN

Chuyên trang hướng dẫn sử dụng dịch vụ của Minh Duy Solutions

DMCA.com Protection Status

Danh mục

  • aaPanel
  • Góc ICT
  • Thiết Kế Đồ Hoạ
  • SEO
  • Hướng dẫn WHMCS
  • Hướng dẫn Hosting
  • Hướng dẫn WordPress
  • Email Zimbra
  • Hướng dẫn DirectAdmin
  • Hướng dẫn Hosting cPanel
  • Office 365
  • Hướng dẫn Website
  • Hướng dẫn Linux
  • Hướng dẫn Hosting DirectAdmin
  • Google Work Space
  • Hướng dẫn Webmaster
  • Hướng dẫn máy chủ
  • Hướng dẫn Email Doanh Nghiệp
  • Hướng dẫn Tên miền
  • Hướng dẫn chung
  • Uncategorized

Thẻ

AFC apt-get update apt-get upgrade category chủ thể cPanel debian DirectAdmin email doanh nghiệp Environment Variables giải nén Google Workspace G Suite hosting ioncube khôi phục mật khẩu linux nginx nmap nodejs npm Office 365 OneDrive Outlook out of memory path Paypal phpmyadmin SMTP. GMail SSH sudo swap Symbolic Link tar tar.gz thông báo tên miền tên miền ubuntu user whois WooCommerce WordPress wordpress cơ bản wp rocket Zimbra
  • Về minhduy.vn
  • Đăng ký Hosting
  • Thiết kế Website
  • Khuyến mãi HOT

Copyright © 2021 Hướng dẫn Minh Duy Solutions

Welcome Back!

Login to your account below

Forgotten Password?

Retrieve your password

Please enter your username or email address to reset your password.

Log In

Add New Playlist

×
    No Result
    View All Result
    • Trang chủ
    • Hosting
      • Hướng dẫn Hosting cPanel
      • Hướng dẫn Hosting DirectAdmin
    • Tên miền
    • Website
      • Hướng dẫn WordPress
      • Hướng dẫn Webmaster
    • Email Doanh Nghiệp
      • Office 365
      • Google Work Space
      • Email Zimbra
    • VPS – Máy chủ
      • Hướng dẫn Linux
      • Hướng dẫn DirectAdmin
    • Hướng dẫn chung
    • Góc ICT

    Copyright © 2021 Hướng dẫn Minh Duy Solutions