คู่มือนี้แนะนำวิธีใช้ iptables NAT Redirect traffic จากเซิร์ฟเวอร์เก่าไปเซิร์ฟเวอร์ใหม่ ระหว่างย้ายเว็บไซต์ (Migration) รอ DNS Propagate
สถานการณ์
- เว็บไซต์ย้ายไปเซิร์ฟเวอร์ใหม่ IP:
122.164.34.240 - DNS ยังชี้ไปเซิร์ฟเวอร์เก่า (รอ Propagation)
- ต้องการ Forward traffic Port 80 จากเซิร์ฟเวอร์เก่า → ใหม่
ขั้นตอน 1: เปิด IP Forwarding
# echo 1 > /proc/sys/net/ipv4/ip_forward
# หรือถาวร: เพิ่มใน /etc/sysctl.conf
net.ipv4.ip_forward = 1
# ใช้งานทันที: sysctl -p
ขั้นตอน 2: DNAT (Destination NAT) - Redirect Incoming
# iptables -t nat -A PREROUTING -p tcp --dport 80 -j DNAT --to-destination 122.164.34.240
-t nat- ใช้ NAT tablePREROUTING- ก่อน Routing decision--dport 80- Port 80 (HTTP)DNAT- เปลี่ยน Destination IP
ขั้นตอน 3: SNAT/MASQUERADE - Rewrite Source IP
# iptables -t nat -A POSTROUTING -p tcp -d 122.164.34.240 --dport 80 -j MASQUERADE
POSTROUTING- หลัง Routing decisionMASQUERADE- ซ่อน Source IP กลายเป็น IP ของเซิร์ฟเวอร์เก่า- สำคัญ: ไม่ทำขั้นตอนนี้ เซิร์ฟเวอร์ใหม่จะเห็น Request มาจาก IP เซิร์ฟเวอร์เก่า (ไม่ใช่ Client จริง) → Log ผิด, GeoIP ผิด, Rate limit ผิด
บันทึกกฎอย่างถาวร
# Ubuntu/Debian
apt install iptables-persistent
netfilter-persistent save
# CentOS/RHEL/Fedora
service iptables save
# หรือ
iptables-save > /etc/sysconfig/iptables
ล้างกฎ (Rollback)
# iptables -t nat -F
# iptables -F
ขยาย: Redirect หลาย Port
# HTTP + HTTPS
for port in 80 443; do
iptables -t nat -A PREROUTING -p tcp --dport $port -j DNAT --to-destination 122.164.34.240
iptables -t nat -A POSTROUTING -p tcp -d 122.164.34.240 --dport $port -j MASQUERADE
done
เทคนิคนี้ช่วยให้ Migration ไปได้ราบรื่น ไม่มี Downtime ระหว่างรอ DNS