Incoming Behind a NAT

I have issue with incoming on a public IP
the call is coming to the server but not able to forward to extension

if the phone is registered with local IP it works but with public IP no avail
below are the settings for the trunks.

host=xx.xx.xx.xx
type=peer
disallow=all
allow=alaw
nat=yes
insecure=very

Incoming

host=xx.xx.xx.xx
type=peer
context=from-trunk
qualify=yes