Sip phones hold key does not work


When I try to use hold key to transfer a call or hold the call, asterisk tries to reply to the right IP address but wrong sip port. I am using sip phones with stun server. my asterisk has public ip address and the phones are bihind nat. Any idea why hold doesnt work?