Asterisk as UA on public IP - trouble registering

I have an asterisk box that should register with a SIP server as UA. I am using uri register => username:secret@sip.provider

When the Asterisk is on a NAT ip it is registering with the SIP provider. But not when it is on a public IP. I can make calls fine in the former case only, but not in the latter. The sip settings are ditto . I have not used any NAT settings at all in the asterisk sip.conf.

Please advise how can I succeed in registering * as ua when on a public IP, everyone seems to have the reverse trouble generally.