The NAT problem: SDP contains private IPs
SIP setup works across NAT — the SIP proxy forwards messages and NAT translates source ports. But the SDP body inside the INVITE contains Alice's private IP address for RTP: c=IN IP4 192.168.1.10.
NAT doesn't understand SIP — it translates IP headers, not SDP text. Bob receives Alice's private IP, tries to send RTP there, and it vanishes. The call connects (you hear ringtone) but there's no audio.