You might be able to reduce the DNS downtime by reducing the TTL (Time-To-Live) value of the entries before changing them, if your name server service provider allows that. A fair warning, though - not all name servers between your client and the authoritative (origin) name server will enforce your TTL, they might have their own caching time.
There's no guaranteed way to force the user to clear the DNS cache, and it is often done by their ISP on top of their OS.
Is there anyway to force this DNS cache to refresh so it'll be transparent for our final users?
/proc/sys/net/ipv4/ip_forward iptables -t nat -A PREROUTING -d [OLD_IP] -p tcp --dport 80 -j DNAT --to-destination [NEW_IP]:80 iptables -t nat -A PREROUTING -d [OLD_IP] -p tcp --dport 443 -j DNAT --to-destination [NEW_IP]:443 iptables -t nat -A POSTROUTING -j MASQUERADE If both of your servers are using WHM, I think we can reduce the time to nil.
So if your ISP is say telstra and it hasn't propagated or updated you can specify an alternate service providers dns there.
if that isp dns is updated before your native one hey presto you will see new site.
It shouldn't take more than 24 hours for the updated DNS to propagate.
Your best option is to make the transition seamless to the user by using something like mod_proxy with Apache to create a reverse proxy to your new server.