My whole configuration is:
[Sip clients] < = > Kamailio 3.2 <=> Asterisk servers (behind Kamailio)
Asterisk servers have only local IP addresses, and I use t_relay instead of forward.
Kamailio runs on same server as rtpproxy.
Everything is fine if clients connect to Kamailio with its IP address - global, or if they are behind Kamailio with local address.
When clients connect to Kamailio using, then call (video also) is OK, but ACK and BYE do not work.
BYE receives not here (404), and ACK die somewhere.
I forward BYE and ACK in case when src_ip==$td to Asterisk server.

If one of clients use IP - then calls initiated from it are OK (BYE/ACK - are going correctly - to Asterisk and to other client also). But calls from other client have problems with BYE and ACK.

To use - I put:

route[ACKBYE] {
#!ifdef WITH_PSTN
if (is_method("BYE|ACK"))
xlog("L_ALERT","AB $rm $sht(forw=>$ft) $td");
#I have to rewrite du - messages loop in Kamailio, I store in $sht(forw=>$ft) $du which I use during INVITE.
xlog("L_ALERT","ACK,Bye Not me");