SaRP is a SIP and RTP proxy designed specifically to handle the problems inherit in NAT and SIP.
The current implementation is written in Perl but a cross-platform C++ version is being worked on.
- Allow hosts behind a NATing firewall/router to make and receive SIP calls. (done)
- Allow more than on phone/computer/user to receive SIP calls on one real world IP. (done)
- Be compatible with as many SIP implementations as possible. (work in progress)
- Hide any internal IP addresses from the outside world. (done)
- Avoid as much as possible the interia of a SIP call to allow as direct as possible communication between the UAs.
- Completely define and control all ports used so as to allow easy configuration of firewalls, etc. (done)
- Security! (i.e. by default drop any packets that aren’t recognised instead of replying and leaking information.) (will never be finished 🙁 )
- Be cross-platform to allow Windows users access to a simple SIP proxy. (functional but no fancy gui or config)
Okay, this is the simple plan for starters.
External
networks Preferably has
| .- Dynamic DNS entry
.-- | / for real world IP
| NAT router <-'
Optional -->| |
| | <---- DNAT of ports to proxy
`-- |
| --.
SIP/RTP proxy |
/ | \ | Must have ability
/ | \ |<-- to talk directly
UA1 UA2 UAn | without NAT or firewall
--'
UA = User Agent
SIP = control channel
RTP = data channel
Required configuration for SIP proxy:
* DNS name / real world IP for external traffic
* Specific list of ports that it will listen/send on
* address of Internal network