Phones won't stay registered

I am currently running asterisk 1.6.1.1. I have 2 sip phones on my local network, behind a NAT, that are registering to my asterisk box, which has a public IP. I have nat=yes, qualify=yes, host=dynamic for each phone. The phones register with asterisk, and I can see them with sip show peers. I watched packets coming into my home network and could see my asterisk server sending the SIP OPTIONS packets for keep-alives. Each time asterisk sent one to one of the phones, that phone responded immediately with a 200 OK packet. Then, randomly, asterisk stopped sending the OPTIONS packets. Now, when I do a sip show peers, I get Unspecified for host and unknown for status. I counted how many keep-alives were sent, and 18 were sent to phone1 while 27 were sent to phone2.

I took one of the phones out of the mix, and it seems as though the phone that is left stays registered. It seems as though the fact that I have two phones coming from the same nat’d IP address, somehow this is causing them both to fail. They use different ports for SIP; one uses 5060 one uses 5062, and this is reflected when they register.

I am not even sure where to begin because I don’t fully understand what could be causing the problem. Any suggestions would be fantastic.