คำตอบสั้น ๆ: วางระบบที่ทำให้โดเมนไม่มีวันหมดอายุโดยไม่มีใครรู้ตัว ทั้งการตั้งต่ออายุอัตโนมัติ การเฝ้าดูจากภายนอก และขั้นตอนกู้เมื่อพลาด
คู่มือนี้อธิบาย Domain ทีละขั้นตอน พร้อมคำสั่งที่ใช้ได้จริงและปัญหาที่พบบ่อย
โดเมนหมดอายุคือเหตุการณ์ที่ทำให้ทั้งเว็บไซต์และอีเมลขององค์กรหยุดทำงานพร้อมกันในวินาทีเดียว และในกรณีที่แย่ที่สุดคือมีคนอื่นจดต่อไปแล้วขายคืนในราคาสูง
สาเหตุแทบทุกครั้งเหมือนกันคือ อีเมลแจ้งเตือนส่งไปยังบัญชีของพนักงานที่ลาออกไปแล้ว หรือบัตรเครดิตที่ผูกไว้หมดอายุ คู่มือนี้วางระบบที่ทำให้เรื่องนี้ไม่เกิดขึ้น
สิ่งที่ต้องเตรียม
- รายการโดเมนทั้งหมดขององค์กร รวมถึงที่จดไว้แต่ยังไม่ได้ใช้
- สิทธิ์เข้าถึงบัญชีผู้รับจดทะเบียนทุกราย
- อีเมลกลางขององค์กรสำหรับรับการแจ้งเตือน
ขั้นตอนที่ 1: ทำบัญชีรายการโดเมนทั้งหมด
องค์กรจำนวนมากไม่รู้ว่าตัวเองมีโดเมนกี่ชื่อ เพราะจดกระจายกันหลายคนหลายที่
#!/bin/bash
# ตรวจวันหมดอายุของโดเมนในรายการ
for d in example.com example.co.th example.net brand.co.th; do
exp=$(whois "$d" 2>/dev/null \
| grep -iE 'expir|Exp date|paid-till' \
| head -1 | grep -oE '[0-9]{4}-[0-9]{2}-[0-9]{2}|[0-9]{2}-[A-Za-z]{3}-[0-9]{4}')
reg=$(whois "$d" 2>/dev/null | grep -i 'Registrar:' | head -1 | cut -d: -f2- | xargs)
printf '%-24s %-14s %s\n' "$d" "${exp:-ไม่ทราบ}" "${reg:-ไม่ทราบ}"
done
บันทึกผลลงเอกสารกลางพร้อมข้อมูลเหล่านี้
- ชื่อโดเมนและวันหมดอายุ
- ผู้รับจดทะเบียนและบัญชีที่ใช้จัดการ
- ผู้รับผิดชอบในองค์กร
- ระบบที่พึ่งพาโดเมนนั้น เช่น เว็บหลัก อีเมล หรือ API
ขั้นตอนที่ 2: ย้ายอีเมลผู้ติดต่อไปที่บัญชีกลาง
นี่คือการแก้ที่ต้นเหตุที่แท้จริง ตั้งอีเมลผู้ติดต่อของทุกโดเมนเป็นบัญชีกลางที่ไม่ผูกกับตัวบุคคล
[email protected]
[email protected]
ตั้งให้อีเมลนี้ส่งต่อไปยังหลายคน อย่างน้อยสองคนที่รับผิดชอบ และตรวจว่าอีเมลนี้ยังทำงานอยู่จริง
whois example.com | grep -iE 'registrant email|admin email|tech email'
อย่าใช้อีเมลที่ใช้โดเมนเดียวกันเป็นผู้ติดต่อเพียงอย่างเดียว เพราะเมื่อโดเมนหมดอายุ อีเมลก็หยุดทำงานด้วย จึงไม่ได้รับการแจ้งเตือน ให้ใช้อีเมลสำรองจากโดเมนอื่นหรือบริการภายนอกเป็นผู้ติดต่อสำรอง
ขั้นตอนที่ 3: เปิดต่ออายุอัตโนมัติและตรวจบัตร
เปิดที่ผู้รับจดทะเบียนทุกราย แล้วตรวจว่าบัตรเครดิตที่ผูกไว้ยังไม่หมดอายุ
บัตรเครดิตมีอายุ 3-5 ปี ในขณะที่โดเมนอาจต่ออายุทุก 1-10 ปี จึงเกิดกรณีที่เปิดต่ออายุอัตโนมัติไว้แต่ชำระเงินไม่สำเร็จเพราะบัตรหมดอายุ
ตั้งเตือนในปฏิทินให้ตรวจบัตรทุก 6 เดือน และพิจารณาต่ออายุโดเมนสำคัญล่วงหน้าหลายปีในครั้งเดียว ซึ่งลดจำนวนครั้งที่ต้องต่อและยังส่งสัญญาณความน่าเชื่อถือต่อเครื่องมือค้นหา
ขั้นตอนที่ 4: ล็อกโดเมน
whois example.com | grep -i status
สถานะที่ควรเห็น
clientTransferProhibitedป้องกันการย้ายผู้รับจดทะเบียนโดยไม่ได้รับอนุญาตclientUpdateProhibitedป้องกันการแก้ไขข้อมูลclientDeleteProhibitedป้องกันการลบ
เปิดทั้งสามได้ในหน้าจัดการโดเมน สำหรับโดเมนที่สำคัญมาก พิจารณาใช้บริการล็อกระดับรีจิสทรีเพิ่ม ซึ่งต้องยืนยันตัวตนหลายขั้นก่อนแก้ไขใด ๆ
เปิดการยืนยันตัวตนสองขั้นตอนสำหรับบัญชีที่ผู้รับจดทะเบียนด้วย บัญชีที่ถูกเจาะหมายถึงโดเมนถูกย้ายออกไป ซึ่งกู้คืนยากกว่าการหมดอายุมาก
ขั้นตอนที่ 5: ตั้งระบบเฝ้าดูจากภายนอก
อย่าพึ่งการแจ้งเตือนจากผู้รับจดทะเบียนอย่างเดียว ตั้งระบบของตัวเองที่ตรวจสอบอิสระ
#!/bin/bash
# /usr/local/bin/check-domain-expiry.sh
set -uo pipefail
DOMAINS="example.com example.co.th example.net"
WARN_DAYS=60
ALERT=""
for d in $DOMAINS; do
raw=$(whois "$d" 2>/dev/null | grep -iE 'expir|paid-till' | head -1)
date_str=$(echo "$raw" | grep -oE '[0-9]{4}-[0-9]{2}-[0-9]{2}')
[ -z "$date_str" ] && { ALERT="$ALERT\n$d: อ่านวันหมดอายุไม่ได้"; continue; }
exp_epoch=$(date -d "$date_str" +%s 2>/dev/null) || continue
now_epoch=$(date +%s)
days=$(( (exp_epoch - now_epoch) / 86400 ))
printf '%-24s หมดอายุ %s (อีก %d วัน)\n' "$d" "$date_str" "$days"
if [ "$days" -lt "$WARN_DAYS" ]; then
ALERT="$ALERT\n$d หมดอายุในอีก $days วัน ($date_str)"
fi
done
if [ -n "$ALERT" ]; then
echo -e "$ALERT" | mail -s "เตือน: โดเมนใกล้หมดอายุ" [email protected]
fi
sudo chmod +x /usr/local/bin/check-domain-expiry.sh
sudo /usr/local/bin/check-domain-expiry.sh
ตั้งรันทุกวันด้วย systemd Timer และส่งผลเข้าแชทของทีมด้วย ไม่ใช่แค่อีเมล