New Setup, NAT on both ends, Google Voice, RTP is not established

Hey FreePBX Community,

I picked up a Raspberry Pi and installed Asterisk Pi on it with the intention of routing all my cell phone calls through my Google Voice number. I can make and receive calls when my cell phone is on my local WiFi network, but when I take my phone to work and use my work’s WiFi, no luck. Both CSipSimple and SipDroid will register to my server at home (I set up a dyndns name, and forwarded TCP and UDP on 5060 through the firewall), and both can place and receive calls (both ends can initiate a call, and both ends will ring if the other end initiates), but when SIP hands off to RTP, I get timeouts. The Asterisk logs report “NOTICE[19963] chan_sip.c: Disconnecting call ‘SIP/701-00000026’ for lack of RTP activity in 31 seconds”. I started by forwarding ports 10000-20000 through to the RPi device; I have since reduced that to 10000-10250 (and changed the config in FreePBX as well). I tested that the forward worked with a simple echo server. The iptables rules on the RPi are all blank.

So it seems like something relating to NAT to me. I configured CSipSimple to use a STUN server (stun.stunprotocol.org). I also selected the “Enable ICE” checkbox. Within FreePBX I said “yes” to “icesupport” and nat on the Google Voice extension.

Still no luck, I turned to tshark, and captured the traffic from when I placed a call from my cell phone while on my work network. These are the first 2 pages of the capture:

http://imgur.com/G5xqp3y
http://imgur.com/114cfuf

The 10.10.1.15 address is the internal address of my RPi.
67...58 is the external address of my work NAT device
74.125.142.127 is the Google server

FreePBX does appear to be correctly using my external IP address in its SIP/SDP “Status: 200 OK” message. A screenshot of that is here:

http://imgur.com/HLKskin

174...52 is the external IP to which my dyndns (also redacted) name resolves.

I can get the same thing happening when I attempt to place a call using a different phone with the same CSipSimple setup, where this phone has a cellular data plan, and is not on WiFi. Once again I can place calls and the destination phones will ring, and once again the RTP session fails to get established.

At this point … I am out of ideas. And it’s driving me crazy! Any help is appreciated, and if you need more information, I’m happy to oblige. Thanks in advance.

Note: I ran the capture from the RPi device.