iptables -t nat -A PREROUTING -p tcp --dport 5222:5230 -j DNAT --to-destination 10.9.8.6
Are you sure that your client gets this ip everytime?
If over VPN all everything is working and not iCloud, then might be iCloud have some limitation or detection of using VPN?