From f954bd84181595f1845daaa27ab654f96b0f326c Mon Sep 17 00:00:00 2001 From: Thomas Ries Date: Wed, 8 Dec 2004 18:49:28 +0000 Subject: [PATCH] - started with 0.5.10 --- README | 95 ++++++++++++++++++++++++++++++++----------------- RELNOTES | 15 +++----- configure.in | 2 +- siproxd.spec.in | 3 +- 4 files changed, 70 insertions(+), 45 deletions(-) diff --git a/README b/README index 54e23aa..4124714 100644 --- a/README +++ b/README @@ -6,21 +6,24 @@ complete. This is still considered an alpha release. OVERVIEW ======== -Siproxd is an proxy/masquerading daemon for the SIP protocol. +Siproxd is a proxy/masquerading daemon for the SIP protocol. It handles registrations of SIP clients on a private IP network and performs rewriting of the SIP message bodies to make SIP -connections possible via an masquerading firewall. +connections work via an masquerading firewall (NAT). It allows SIP software clients (like kphone, linphone) or SIP hardware clients (Voice over IP phones which are SIP-compatible, such as those from Cisco, Grandstream or Snom) to work behind -an IP masquerading firewall or router. +an IP masquerading firewall or NAT router. SIP (Session Initiation Protocol, RFC3261) is the protocol of -choiche for most VoIP (Voice over IP) phones to initiate +choice for most VoIP (Voice over IP) phones to initiate communication. By itself, SIP does not work via masquerading firewalls as the transfered data contains IP addresses and -port numbers. - +port numbers. There do exist other solutions to traverse NAT existing +(like STUN, or SIP aware NAT routers), but such a solutions has its +disadvantages or may not be applied to a given situation. +Siproxd does not aim to be a replacement for these solutions, +however in some situations siproxd may bring advantages. PREREQUISITES @@ -28,7 +31,9 @@ PREREQUISITES - OS of either: * Linux (preferred kernel 2.2.x or 2.4.x) * FreeBSD - * Solaris (porting is being worked on but you may try it) + * OpenBSD + * SunOS + * Mac OS X - libosip2 package (http://www.fsf.org/software/osip/) @@ -37,6 +42,8 @@ PREREQUISITES HOW TO GET STARTED ================== - make sure libosip2 is installed + If your libposip2 libraries are installed in + /usr/local/lib, be sure to include this library path to /etc/ld.so.conf - ./configure For Flifl: see doc/FLI4L_HOWTO.txt @@ -74,7 +81,7 @@ The easiest way to generate a debug log is: 2) start siproxd: $ ./siproxd -d -1 2>debug.log 3) reproduce the error -4) include the debug.log in your error report. +4) include the file debug.log in your error report. If siproxd crashes, a stack backtrace usually is helpful to me: 1) start siproxd in the debugger (daemonize set to 0): @@ -94,30 +101,28 @@ If siproxd crashes, a stack backtrace usually is helpful to me: rtld_fini=0x4000a350 <_dl_fini>, stack_end=0xbffffc4c) at ../sysdeps/generic/libc-start.c:78 (gdb) -4) copy-paste all the output and include it in your problem report. +4) copy-paste all the output and include it in your error report. SENDING A PATCH =============== If you send a patch, please make the diff using "diff -Naur" and -include the version of siproxd you used to patch. It makes it a lot +include the version of siproxd you used to patch. This makes it a lot easier for me to merge it. WHAT SIPROXD DOES ================= -Siproxd's purpose is to act as an SIP proxy for softphones located -in private IP ranges. Therefore it will rewrite SIP messages to allow a -softphone to communicate to a counterpart that is located in the Internet. -There usually will be a masquerading firewall in between to 'hide' the -private IP range (either via NAT - network address translation or -masquerading). Check the scenario drawn below. +Siproxd's purpose is to act as an SIP proxy for SIP softphones/hardphones +located behind an masquerading router (NAT). It will rewrite SIP messages +to allow a SIP phone to communicate to a counterpart that is located in +the Internet. Check the scenarios drawn below. -Scenario --------- +Scenario 1 +---------- private IP address range : Internet 10.0.0.x : (public IP address range) @@ -130,33 +135,59 @@ Scenario +-------------+ +--------------+ eth0 : ppp0 + - The Firewall does IP masquerading (NAT) and is running siproxd + - IntHost is running an SIP phone (like linphone, kphone) - - The Firewall does IP masquerading and is running siproxd + - The SIP address used by the SIP phone is sip:johndoe@foo.bar.org - - IntHost is running an SIP softphone (like linphone, kphone) - - - The SIP address used by the softphone is sip:johndoe@foo.bar.org - - - The softphone is configured to register itself at siproxd + - The SIP phone is configured to register itself 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 (e.g. use some dynamic DNS service [1]) + +Scenario 2 +---------- + + private IP address range : Internet + 10.0.0.x : (public IP address range) + : + : foo.bar.org + +-------------+ +--------------+ +--------------+ + ! !.10 .1 ! masquerading ! publicIP ! external SIP ! + ! IntHost !---------------! Firewall !------------>>! Registrar ! + ! ! ! ! ! ! + +-------------+ +--------------+ +--------------+ + eth0 : ppp0 + + - The Firewall does IP masquerading (NAT) and is running siproxd + + - IntHost is running an SIP phone (like linphone, kphone) + + - The SIP address used by the SIP phone is sip:johndoe@foo.bar.org + + - The SIP phone is configured to register itself at the external
+ registrar as sip:johndoe@foo.bar.org + + - foo.bar.org is the domain name corresponding to the public IP address + of the firewall (e.g. use some dynamic DNS service [1]) + + IPCHAINS: Firewall rules for incoming traffic: - $ ipchains -A input --proto udp --dport 5060 --log -j ACCEPT - $ ipchains -A input --proto udp --dport 7070:7080 -j ACCEPT + # ipchains -A input --proto udp --dport 5060 --log -j ACCEPT + # ipchains -A input --proto udp --dport 7070:7080 -j ACCEPT IPTABLES: Firewall rules for incoming traffic: - $iptables -A INPUT -i ppp0 -p udp -m udp --dport 5060 -j ACCEPT - $iptables -A INPUT -i ppp0 -p udp -m udp --dport 7070:7080 -j ACCEPT + # iptables -A INPUT -i ppp0 -p udp -m udp --dport 5060 -j ACCEPT + # iptables -A INPUT -i ppp0 -p udp -m udp --dport 7070:7080 -j ACCEPT - The first line will allow incoming SIP traffic. The second line will - allow incoming RTP traffic on the ports 7070 - 7080 (the default port - range used by siproxd for incoming RTP traffic). + The first line will allow incoming SIP traffic (UDP port 5060). The second + line will allow incoming RTP traffic on the ports 7070-7080 (the default port + range used by siproxd for incoming RTP traffic).

REFERENCES @@ -199,7 +230,7 @@ Thomas Ries (tries@gmx.net) GnuPG: pub 1024D/87BCDC94 2000-03-19 Thomas Ries - Fingerprint = 13D1 19F5 77D0 4CEC 8D3F A24E 09FC C18A 87BC DC94 - Key via pgp.openpkg.org / http://www.ries.ch.vu/87BCDC94.pub -VoIP: sip:17476691342@proxy01.sipphone.com | sip:thomas@ries.homeip.net +VoIP: sip:17476691342@proxy01.sipphone.com | sip:431783@fwd.pulver.com CREDITS diff --git a/RELNOTES b/RELNOTES index 5a057ef..456003d 100644 --- a/RELNOTES +++ b/RELNOTES @@ -1,7 +1,7 @@ -Release Notes for siproxd-0.5.9 +Release Notes for siproxd-0.5.10 =============================== -Major changes since 0.5.8: +Major changes since 0.5.9: Several bugfixes and better support for Record-Route headers. General Overview: @@ -80,16 +80,9 @@ distribution I'd be happy to get a short notice. ----- -md5sum for siproxd-0.5.9.tar.gz: 7428bc04eb8d60a5741d68190b06f10b +md5sum for siproxd-0.5.10.tar.gz: -GnuPG signature for siproxd-0.5.9.tar.gz archive: ------BEGIN PGP SIGNATURE----- -Version: GnuPG v1.2.3 (GNU/Linux) - -iD8DBQBBiU0nCfzBioe83JQRAr7zAKCmGQSmgigXuZewX7TAn5qt0PcYsACfbE4H -J351yL2YttRZXxnd6C2HSSU= -=Xoms ------END PGP SIGNATURE----- +GnuPG signature for siproxd-0.5.10.tar.gz archive: GnuPG: pub 1024D/87BCDC94 2000-03-19 Thomas Ries diff --git a/configure.in b/configure.in index b822fcc..a35555c 100644 --- a/configure.in +++ b/configure.in @@ -43,7 +43,7 @@ dnl Release Version dnl SPD_MAJOR_VERSION=0 SPD_MINOR_VERSION=5 -SPD_MICRO_VERSION=9 +SPD_MICRO_VERSION=10 SPD_VERSION=$SPD_MAJOR_VERSION.$SPD_MINOR_VERSION.$SPD_MICRO_VERSION diff --git a/siproxd.spec.in b/siproxd.spec.in index ef5f09d..135a345 100644 --- a/siproxd.spec.in +++ b/siproxd.spec.in @@ -12,7 +12,8 @@ Name: %{name} Summary: A SIP masquerading proxy with RTP support Version: %{ver} Release: %{release} -Copyright: GPL +Copyright: (c) 2002-2004 Thomas Ries +License: GPL Group: Applications/Communications Source0: %{name}-%{ver}.tar.gz