<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>TUX-ES.com &#187; sip</title>
	<atom:link href="http://www.tux-es.com/project1/tag/sip/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.tux-es.com/project1</link>
	<description></description>
	<lastBuildDate>Wed, 26 May 2010 14:53:41 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>es</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Asterisk 1.4.x &#8211; Trunk SIP</title>
		<link>http://www.tux-es.com/project1/2009/11/asterisk-1-4-x-trunk-sip/</link>
		<comments>http://www.tux-es.com/project1/2009/11/asterisk-1-4-x-trunk-sip/#comments</comments>
		<pubDate>Thu, 19 Nov 2009 08:40:02 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[asterisk]]></category>
		<category><![CDATA[sip]]></category>

		<guid isPermaLink="false">http://www.tux-es.com/project1/?p=548</guid>
		<description><![CDATA[Lo que me ha llevado a escribir este artículo ha sido la numerosas veces que he buscado información sobre esto. Quizás sea problema de mi forma de buscar, aunque finalmente comprendí que esta tipo de configuraciones se consideran también como &#8220;Asterisk as sip client&#8221;, pero en cualquier caso con los pedacitos de información que he [...]]]></description>
			<content:encoded><![CDATA[<p>Lo que me ha llevado a escribir este artículo ha sido la numerosas veces que he buscado información sobre esto. Quizás sea problema de mi forma de buscar, aunque finalmente comprendí que esta tipo de configuraciones se consideran también como &#8220;Asterisk as sip client&#8221;, pero en cualquier caso con los pedacitos de información que he ido encontrando, quería poner un ejemplo concreto para configurar un TRUNK SIP entre dos Asterisk.</p>
<div class="wp-caption aligncenter" style="width: 148px"><a href="http://www.asterisk.org/"><img title="Logo Asterisk PBX" src="http://www.asterisk.org/themes/newAsterisk/images/logo.jpg" alt="Asterisk PBX" width="138" height="79" /></a><p class="wp-caption-text">Asterisk PBX</p></div>
<p><span id="more-548"></span></p>
<pre>
### AsteriskPBX_A
;register =&gt; user[:secret[:authuser]]@host[:port][/extension]
;register =&gt; fromuser@fromdomain:secret@host
;register =&gt; fromuser@fromdomain:secret:authuser@host:port/extension
;;
;; register se utiliza para dos cosas:
;; si <strong>a)</strong> queremos ser llamados, y <strong>b)</strong> si aparecemos en el otro extremo como <em>dynamic</em> en la parte de <em>host</em>.
;;
register =&gt; userB:passwordB@ipB/contextA
;; contextA - indica la extensión del Asterisk en A para recepción de llamadas.

[authentication]

[contextA]
type=friend
secret=passwordA
context=default
host=dynamic
username=userA
fromuser=ServerB
disallow=all
allow=alaw
qualify=yes
canreinvite=no
nat=no
insecure=port,invite

### AsteriskPBX_B

;; register =&gt; user[:secret[:authuser]]@host[:port][/extension]
register =&gt; userA:passwordA@ipA/contextB

[authentication]

[contextB]
type=friend
secret=passwordB
context=default
host=dynamic
username=userB
fromuser=ServerA
disallow=all
allow=alaw
qualify=yes
canreinvite=no
nat=no
insecure=port,invite
</pre>
<p>Comandos de Asterisk CLI de utilidad:</p>
<p>*CLI&gt; sip show registry<br />
*CLI&gt; sip show peer<br />
*CLII&gt; sip show peer</p>
<p>Las opciones que más me llaman la atención son (quizás me llamen la atención porque fueron las menos intuitivas):</p>
<p><span style="background-color: #ffffff; ">### insecure</span></p>
<p><span style="background-color: #ffffff; ">Esta opción indica si por cada llamada se debe autenticar o validar algún valor.</span></p>
<p><span style="background-color: #ffffff; ">Acepta los valores de very, yes,port:</span></p>
<p>insecure=yes ; To match a peer based by IP address only and not port<br />
insecure=very ; To allow registered hosts to call without re-authenticating<br />
port: ignore the port number where request came from<br />
invite: don&#8217;t require authentication of incoming INVITEs<br />
port,invite: don&#8217;t require initial INVITE to authenticate and ignore the port where the request came from</p>
<p>### canreinvite</p>
<p>Este parámetro tiene que ver con la forma en SIP/RTP trabaja. Asterisk no es un proxy sip, es decir Asterisk debe preocuparse por algo más que la señalización [SIP], debe preocuparse por el media [RTP - real time protocol]. Asterisk debe permanecer en medio de las conexiones para poder aportar características como grabación de llamadas, canal espía, etc&#8230; Con este parámetro indicamos si en algunos caso podemos delegar RTP a los dos peers de una llamada [teléfono - teléfono]. El SIP seguiría pasando a través de Asterisk, pero el RTP sería &#8220;punto a punto&#8221;.</p>
<p>El concepto de reinvite viene del método SIP INVITE, que es el que lanza Asterisk contra con SIP Phone para establecer una llamada, con este INVITE indicamos al SIP Phone varios parámetros: codecs, cual es la ip del otro extremo, etc&#8230; Normalmente le envíamos la IP de la centralita para que SIP/RTP pasen por ella, pero Asterisk puede enviar un re-INVITE para indicarle nuevos parámetros, como la IP del otro SIP Phone, y dejarles todo el trabajo RTP a ellos.</p>
<p>Esto es adecuado sobre todo en conexiones con NAT, y sobre todo cuando queramos tener todo el control de la llamada en Asterisk.</p>
<p>canreinvite = yes &#8220;allow RTP media direct&#8221;<br />
canreinvite = no &#8220;deny re-invites&#8221;<br />
canreinvite = nonat &#8220;allow reinvite when local, deny reinvite when NAT&#8221;<br />
canreinvite = update &#8220;use UPDATE instead of INVITE&#8221;<br />
canreinvite = update,nonat &#8220;use UPDATE when local, deny when NAT&#8221;</p>
<p>El <strong>canreinvite=no </strong>nos facilita la vida a los administradores de Firewall porque solo tendríamos que añadir las siguientes reglas de firewall:</p>
<p>SRC=Redes_SIP_Phones DST=PBX-Asterisk PORT=5060 PROTO=UDP &#8211; ACCEPT</p>
<p>SRC=Redes_SIP_Phones DST=PBX-Asterisk PORT-RANGE=10000:20000 PROTO=UDP &#8211; ACCEPT</p>
<p>De la otra forma tendríamos que abrir estos mismos puertos entre todas las redes de telefonía, que cuando son redes de usuario (porque utilizan softphone) nos puede fastidiar la política de seguridad. Siempre recomendaría hacer VLAN&#8217;s, sean softphone o hardphones. Los protocolos SIP/RTP siguen siendo muy débiles por si mismos.</p>
<p><span style="background-color: #ffffff; ">Referencias: <a href="http://www.voip-info.org/wiki/view/Asterisk+config+sip.conf" target="_blank">http://www.voip-info.org/wiki/view/Asterisk+config+sip.conf</a></span></p>
<p><span style="background-color: #ffffff; ">Referencias: <a href="http://www.voip.unam.mx/mediawiki/index.php/Conectando_dos_Asterisk_mediante_el_protocolo_SIP">http://www.voip.unam.mx/mediawiki/index.php/Conectando_dos_Asterisk_mediante_el_protocolo_SIP</a></span></p>
]]></content:encoded>
			<wfw:commentRss>http://www.tux-es.com/project1/2009/11/asterisk-1-4-x-trunk-sip/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
	</channel>
</rss>
