117 lines
4.7 KiB
Plaintext
117 lines
4.7 KiB
Plaintext
|
|
|
|
Still under construction...
|
|
|
|
|
|
---------------------------------------------------------------------------
|
|
Q: What softphone work with siproxd?
|
|
|
|
A: The goal is that every softphone (that is SIP compliant) should be
|
|
able to work via siproxd. Tested and/or reported to work so far:
|
|
- linphone (0.9.0)
|
|
- kphone (1.0.2)
|
|
---------------------------------------------------------------------------
|
|
Q: Siproxd's RTP proxying does only work for incomming RTP audio data.
|
|
Should it not also proxy outgoing RTP data?
|
|
|
|
A: Curently (0.2.0) that is the correct behaviour. Incomming RTP traffic
|
|
is handled by siproxd's RTP proxy. However, outgoing RTP traffic has
|
|
to be handled by the firewall (IP masquerading).
|
|
---------------------------------------------------------------------------
|
|
Q: How do I setup IP masquerading for the outgoing RTP traffic?
|
|
|
|
A: if you are using 'ipchains' it is a firewall rule like the following:
|
|
|
|
# ipchains -A forward -i ppp0 -j MASQ -s 10.0.0.0/24 -d 0.0.0.0/0
|
|
|
|
This will set up IP masquerading for all local hostx (10.x.x.x) to
|
|
the Internet (connected on ppp0). Read the ipchains documentation
|
|
for details.
|
|
More recent Linux Kernels (2.4.x) may use 'iptables' instead of
|
|
'ipchains'. Check the corresponding documentation for details
|
|
how to configure IP masquerading there.
|
|
---------------------------------------------------------------------------
|
|
Q: Is it possible from a remote computer to call the inbound computer?
|
|
|
|
A: Yes, see also next question.
|
|
---------------------------------------------------------------------------
|
|
Q: What SIP address must the remote computer use to make a call?
|
|
|
|
A: Scenario
|
|
--------
|
|
|
|
private IP address range : Internet
|
|
10.0.0.x : (publich IP address range)
|
|
:
|
|
: foo.bar.org xxx.org
|
|
+-------------+ +--------------+ +-------------+
|
|
! !.10 .1 ! masquerading ! publicIP ! !
|
|
! IntHost !-------------! Firewall !------------>>! externalHost!
|
|
! ! eth0! !ppp0 ! !
|
|
+-------------+ +--------------+ +-------------+
|
|
user: johndoe user: test
|
|
|
|
- IntHost is running an SIP softphone (like linphone, kphone)
|
|
|
|
- The SIP address used by IntHost is sip:johndoe@foo.bar.org
|
|
|
|
- The softphone on IntHost is configured to register at siproxd
|
|
running on the firewall host (10.0.0.1) as sip:johndoe@foo.bar.org
|
|
|
|
- foo.bar.org is the domain name corresponding to the public IP address
|
|
of the firewall (eg use some dynamic DNS service [1])
|
|
|
|
- externalHost does *not* register at siproxd running on the firewall host.
|
|
|
|
|
|
The relevant part of the configuration (linphone) of IntHost
|
|
then looks like ($HOME/gnome/linphone):
|
|
|
|
[sip]
|
|
sip_port=5060
|
|
use_registrar=1
|
|
username=johndoe
|
|
hostname=foo.bar.org
|
|
registrar=sip:10.0.0.1
|
|
reg_passwd=
|
|
addr_of_rec=sip:johndoe@foo.bar.org
|
|
reg_expires=900
|
|
as_proxy=1
|
|
as_redirect=0
|
|
as_outbound=1
|
|
|
|
To make an outgoing call from IntHost simply use the SIP address of the
|
|
target ( -> sip:test@xxx.org).
|
|
|
|
test@xxx.org can make a incomming calls - it simply has to use the registered
|
|
SIP address of the softphone running on IntHost (sip:johndoe@foo.bar.org).
|
|
Siproxd will then rewrite and forward the incomming request to Inthost.
|
|
|
|
The externalHost does not need to know anything about the proxy. For the
|
|
user sip:test@xxx.org it looks as he directly sends the traffic to
|
|
foo.bar.org, siproxd then takes care about where to send it from there.
|
|
|
|
---------------------------------------------------------------------------
|
|
Q: How does the registration and mapping of inbound clients work?
|
|
|
|
A: The mapping mechanism of SIP addresses works basically like:
|
|
|
|
Inthost sends a registration to siproxd with:
|
|
- a 'To:' address of the address to be registered (sip:johndoe@foo.bar.org)
|
|
(lets call this address the 'masqueraded' or 'public' address)
|
|
|
|
- a 'Contact:' address of the *true* address (sip:johndoe@10.0.0.10)
|
|
|
|
Siproxd then will basically 'just' substitute the true address by the
|
|
masqueraded address and vice versa. That means you can have multiple
|
|
IntHosts (each of them using a different user name) running at the
|
|
same time.
|
|
|
|
For an incomming call, siproxd will search its registration table for
|
|
the requested SIP address and so finds the internal host that belong to it.
|
|
|
|
This of course *requires* that the username part of the SIP address is
|
|
unique for each softphone that registers a the proxy (So this is more or
|
|
less the mechanism that you mentioned in your mail).
|
|
---------------------------------------------------------------------------
|