ลดความยุ่งยากในการใช้คลาวด์ พูดคุยกับเจ้าหน้าที่

ย้าย DNS มาที่ Cloudflare โดยเว็บไม่ล่ม
Home ย้าย DNS มาที่ Cloudflare โดยเว็บไม่ล่ม

ย้าย DNS มาที่ Cloudflare โดยเว็บไม่ล่ม

Cloudflare ให้บริการ DNS ที่เร็วและฟรี พร้อมความสามารถเพิ่ม เช่น การซ่อน IP จริงของเซิร์ฟเวอร์ การแคชไฟล์คงที่ทั่วโลก และการป้องกันการโจมตีแบบ DDoS

ความเสี่ยงของการย้ายคือระเบียน DNS ที่ตกหล่น ซึ่งทำให้บริการบางอย่างหยุดทำงานโดยไม่มีใครสังเกตทันที โดยเฉพาะอีเมลที่มักพังเงียบ ๆ คู่มือนี้เน้นขั้นตอนตรวจสอบให้ครบก่อนสับเปลี่ยน

สิ่งที่ต้องเตรียม

  • บัญชี Cloudflare
  • สิทธิ์เปลี่ยน Name Server ที่ผู้รับจดทะเบียนโดเมน
  • รายการระเบียน DNS ปัจจุบันทั้งหมด

ขั้นตอนที่ 1: บันทึกระเบียนปัจจุบันให้ครบ

ขั้นตอนนี้สำคัญที่สุด Cloudflare จะสแกนและนำเข้าให้อัตโนมัติ แต่มักไม่ครบ โดยเฉพาะระเบียนที่ไม่ใช่ชื่อมาตรฐาน

#!/bin/bash
D=example.com
for t in A AAAA CNAME MX TXT NS SOA CAA SRV; do
  echo "=== $t"
  dig +noall +answer "$D" "$t"
done

echo "=== ซับโดเมนที่ใช้บ่อย"
for s in www mail smtp imap pop ftp webmail cpanel autodiscover autoconfig \
         vpn remote api app cdn static blog shop staging dev; do
  r=$(dig +short "$s.$D")
  [ -n "$r" ] && printf '%-16s %s\n' "$s" "$r"
done

echo "=== TXT ที่ใช้ยืนยันบริการต่าง ๆ"
for p in _dmarc _domainkey default._domainkey google._domainkey \
         selector1._domainkey selector2._domainkey _acme-challenge; do
  r=$(dig +short TXT "$p.$D")
  [ -n "$r" ] && printf '%-28s %s\n' "$p" "$r"
done

เก็บผลลัพธ์ทั้งหมดไว้เป็นไฟล์ นี่คือรายการที่ต้องตรวจสอบหลังย้าย

bash check-dns.sh > /tmp/dns-before.txt

หากผู้ให้บริการเดิมส่งออกเป็นไฟล์โซนได้ ให้ส่งออกมาด้วย จะครบถ้วนที่สุด

ขั้นตอนที่ 2: เพิ่มโดเมนใน Cloudflare

ล็อกอิน Cloudflare กด Add a Site ใส่ชื่อโดเมน เลือกแผน Free แล้วรอให้ระบบสแกนระเบียน

อย่ากด Continue ทันที ให้เทียบรายการที่สแกนได้กับไฟล์ที่บันทึกไว้ทีละรายการ เพิ่มที่ขาดด้วยมือ

ระเบียนที่มักตกหล่น

  • ระเบียน TXT ที่ใช้ยืนยันบริการ เช่น Google Workspace และ Microsoft 365
  • ระเบียน DKIM ที่ชื่อยาวและมีจุดหลายจุด
  • ซับโดเมนที่ไม่ได้ถูกอ้างถึงจากที่ไหน
  • ระเบียน SRV สำหรับบริการต่าง ๆ
  • ระเบียน CAA ที่กำหนดผู้ออกใบรับรอง

ขั้นตอนที่ 3: ตั้งสถานะ Proxy ให้ถูกต้อง

ไอคอนเมฆสีส้มคือเปิด Proxy ซึ่งซ่อน IP จริงและผ่านเครือข่ายของ Cloudflare ส่วนเมฆสีเทาคือส่งต่อ DNS อย่างเดียว

เปิด Proxy ได้ สำหรับระเบียนที่เป็นเว็บ เช่น @ และ www

ต้องปิด Proxy เสมอ สำหรับ

  • ระเบียน MX และชื่อที่ MX ชี้ไป เพราะอีเมลไม่ได้วิ่งผ่าน HTTP
  • mail, smtp, imap, pop และชื่ออื่นที่ใช้กับอีเมล
  • ชื่อที่ใช้กับ SSH, FTP, VPN และฐานข้อมูล
  • ชื่อที่ใช้ยืนยันใบรับรองแบบ DNS challenge

การเปิด Proxy ให้ระเบียนอีเมลเป็นความผิดพลาดที่พบบ่อยที่สุดและทำให้รับส่งอีเมลไม่ได้ทันที

ขั้นตอนที่ 4: ลด TTL และรอ ก่อนเปลี่ยน Name Server

ที่ผู้ให้บริการ DNS เดิม ลด TTL ของทุกระเบียนลงเหลือ 300 วินาที แล้วรออย่างน้อย 24 ชั่วโมงก่อนเปลี่ยน Name Server

ขั้นตอนนี้ทำให้การเปลี่ยนมีผลเร็วและย้อนกลับได้เร็วหากมีปัญหา

ขั้นตอนที่ 5: เปลี่ยน Name Server

Cloudflare จะแสดง Name Server สองตัวที่ต้องใช้ นำไปใส่ที่ผู้รับจดทะเบียนโดเมน

# ตรวจว่าเปลี่ยนแล้ว
dig NS example.com +short
whois example.com | grep -i 'name server'

ใช้เวลาตั้งแต่ไม่กี่นาทีถึง 24 ชั่วโมง Cloudflare จะส่งอีเมลแจ้งเมื่อตรวจพบ

ระหว่างช่วงเปลี่ยนผ่าน อย่าปิดหรือลบโซนเดิมที่ผู้ให้บริการเก่า เพราะผู้ใช้บางส่วนยังถูกส่งไปที่นั่น เก็บไว้อย่างน้อยหนึ่งสัปดาห์

ขั้นตอนที่ 6: ตั้งค่า SSL ให้ถูกต้อง

ไปที่ SSL/TLS แล้ว Overview เลือกโหมด

  • Full (strict) คือค่าที่ควรใช้ Cloudflare เชื่อมต่อไปเซิร์ฟเวอร์ด้วย HTTPS และตรวจใบรับรอง ต้องมีใบรับรองที่ถูกต้องบนเซิร์ฟเวอร์
  • Full เชื่อมต่อด้วย HTTPS แต่ไม่ตรวจใบรับรอง ใช้ชั่วคราวได้หากใบรับรองเป็นแบบลงนามเอง
  • Flexible ห้ามใช้ เพราะการเชื่อมต่อระหว่าง Cloudflare กับเซิร์ฟเวอร์เป็น HTTP ธรรมดา ข้อมูลรวมถึงรหัสผ่านวิ่งโดยไม่เข้ารหัส และมักทำให้เกิดการวนซ้ำของการเปลี่ยนเส้นทาง

เปิด Always Use HTTPS และ Automatic HTTPS Rewrites ในหน้า Edge Certificates

ขั้นตอนที่ 7: ตรวจสอบหลังย้าย

# รันสคริปต์เดิมแล้วเทียบ
bash check-dns.sh > /tmp/dns-after.txt
diff /tmp/dns-before.txt /tmp/dns-after.txt

ความต่างที่ยอมรับได้คือระเบียน NS และ SOA ส่วนระเบียนอื่นควรให้ผลเหมือนเดิม ยกเว้นระเบียนที่เปิด Proxy ซึ่งจะแสดง IP ของ Cloudflare แทน

ตรวจอีเมลเป็นพิเศษ

dig MX example.com +short
dig +short TXT example.com | grep spf
dig +short TXT default._domainkey.example.com

# ส่งอีเมลทดสอบทั้งขาเข้าและขาออก
echo "ทดสอบหลังย้าย DNS" | mail -s "ทดสอบ" [email protected]

ส่งอีเมลจากภายนอกเข้ามาที่โดเมนด้วย เพื่อยืนยันว่า MX ทำงาน

ขั้นตอนที่ 8: ให้เว็บเห็น IP จริงของผู้ใช้

เมื่อเปิด Proxy เว็บเซิร์ฟเวอร์จะเห็น IP ของ Cloudflare แทน IP จริงของผู้ใช้ ซึ่งทำให้ Log ไม่มีประโยชน์และระบบจำกัดอัตราทำงานผิด

sudo nano /etc/nginx/conf.d/cloudflare.conf
real_ip_header CF-Connecting-IP;

# ดึงรายการ IP ล่าสุดจาก https://www.cloudflare.com/ips/
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;
# ... รายการเต็มจากเว็บไซต์ Cloudflare
# สร้างไฟล์อัตโนมัติ
{
  echo 'real_ip_header CF-Connecting-IP;'
  curl -s https://www.cloudflare.com/ips-v4 | sed 's/^/set_real_ip_from /; s/$/;/'
  curl -s https://www.cloudflare.com/ips-v6 | sed 's/^/set_real_ip_from /; s/$/;/'
} | sudo tee /etc/nginx/conf.d/cloudflare.conf

sudo nginx -t && sudo systemctl reload nginx

ปิดกั้นไม่ให้เข้าเซิร์ฟเวอร์ตรงโดยข้าม Cloudflare ด้วยการอนุญาตเฉพาะ IP ของ Cloudflare ที่พอร์ต 80 และ 443

ปัญหาที่พบบ่อย

อีเมลรับส่งไม่ได้หลังย้าย

สาเหตุอันดับหนึ่งคือเปิด Proxy ให้ระเบียนที่เกี่ยวกับอีเมล ปิดเมฆสีส้มให้เป็นสีเทาสำหรับ MX และชื่อโฮสต์ของเมล

เว็บขึ้นข้อผิดพลาดการเปลี่ยนเส้นทางวนซ้ำ

ใช้โหมด Flexible ร่วมกับเว็บที่บังคับ HTTPS อยู่แล้ว เปลี่ยนเป็น Full (strict)

ขึ้นข้อผิดพลาด 521 หรือ 522

Cloudflare เชื่อมต่อเซิร์ฟเวอร์ไม่ได้ ตรวจว่าเซิร์ฟเวอร์ทำงานอยู่และ Firewall อนุญาต IP ของ Cloudflare

curl -sI --resolve example.com:443:203.0.113.10 https://example.com | head -1

ขอใบรับรอง Let's Encrypt ไม่ได้

การยืนยันแบบ HTTP challenge ถูก Proxy ขวางไว้ ปิด Proxy ชั่วคราวระหว่างขอ หรือเปลี่ยนไปใช้การยืนยันแบบ DNS challenge ซึ่งไม่กระทบ

ต้องการให้ทีมงานช่วยย้าย DNS โดยไม่มีช่วงบริการหยุด ติดต่อ THAI DATA CLOUD ได้ที่ https://thaidata.cloud/contact/

ผู้ให้บริการคลาวด์ไทย
เพื่อธุรกิจของคนไทย

"มุ่งมั่น" และ "มั่นคง"
พร้อมรับมือทุกการเติบโต
Trust Cloud
คลาว์ที่ปลอดภัย
คือรากฐานที่มั่นคง
cloud security