I have recently had the requirement to put a NAT router performing NAT overload between an ESXi server and it's respective vCenter server. According to VMware KB1010652 this is an unsupported configuration!
In my setup the vCenter server was appearing on the "LAN" side of the router and ESXi on the "WAN" which you would expect to not be a problem considering you add the ESXi IP address inside vCenter.
In first connection this initially worked, as I'd expected it to. However problems begin after approximately one minute, the host simply dropped offline. I could still ping it fine, and communicate with it using the standalone vCenter client. I could even reconnect it in vCenter however it would only last another minute or so before it dropped. The issue is with heartbeat between vCenter and ESXi.
Within ESXi modify this file:
<serverIp>10.0.0.1</serverIp> directive to contain the WAN (outside) NAT address of the NAT router instead of the vCenter server IP.
Also add the following line:
<preserveServerIp>true</preserveServerIp> otherwise the IP you just entered will be overwritten.
Restart the vpxa management agents on the host with
The host should now be online within vCenter and should stay online!