I tried this with:
Public node: (public IP)
Private Node: NAT LAN IP (SSH port, and port 8006 forwarded to it)
When I try create the cluster and let Proxmox figure it out, it can't.
The public node tries to ping the LAN IP, which obviously fails.
I edited the Private Node's IP to be it's router's public IP.
But then Proxmox shows this error in the log
corosync[4962]: [KNET ] heartbeat: Unable to send ping (sock: 30) packet (sendto): 22 Invalid argument. recorded src ip: src port: 5405 dst ip: dst port: 5405
Because Proxmox is trying to ping from the interface that has that IP, but none of it's interfaces have the public IP.
I came up with a workaround, which works for short periods of time only.
In a nutshell it involves incrementing the corosync.conf files to the SAME new version number, then leave the LAN IP in the private node's conf, but put the private node's router's public IP in the public node's conf.
Please note, everywhere where I've said "IP" concerning the private node, is actually my router's dyndns hostname, not an IP, because it's a dynamic IP.
Steps to reproduce: (do everything below on both nodes)
1. systemctl stop pve-ha-crm; systemctl restart pve-ha-lrm; systemctl stop corosync pve-cluster; systemctl stop pve-cluster
2. edit /etc/corosync/corosync.conf (on both)
3. On the computer with the public IP, set the ring0_addr to the public IP (of the router) of your remote node.
3. On your node that has a private LAN IP behind a NAT router, set it's own ring0_addr to the LAN IP.
4. set config_version:to a higher number than it was, make it the same for both, so that they don't overwrite each other.
5. systemctl restart pve-ha-crm; systemctl restart pve-ha-lrm; systemctl restart corosync pve-cluster; systemctl restart pve-cluster
When I restart everything as above, it works. The nodes sync to each other. I can control the one Proxmox by connecting to the web interface of the other, etc. Then I go away, come back hours/days later, they're disconnected. Restart everything, they connect.
So my above solution is not working completely yet.
I've got more urgent things to work on so I'm not investigating further right now.
But I would love to see Proxmox staff comment on the above.
EDIT: Oops! I noticed I had posted my comments about this in an inappropriate thread.
I've moved them here now.