SIP über TCP

448 views
Skip to first unread message

Bernd Wagner

unread,
Nov 30, 2017, 2:06:47 AM11/30/17
to gs3-users
Hallo,
ist es möglich GS3 in den Routen ein GW einzurichten das sich beim Registrar mit TCP verbindet?,
Hintergrund ist die t-com macht an Ihren SIP-Anlagenanschlüssen ausschließlich TCP !
Wo werden Anpassungen notwendig sein, sip.conf > tcpenable=yes, tcpbindaddr=0.0.0.0 soweit klar, welche Änderungen brauchen die entspr. Datenbanken?

vielen Dank und Gruß
Bernd


j.b...@iunds.com

unread,
Feb 26, 2018, 5:20:29 AM2/26/18
to gs3-users
An der Beantwortung dieser Frage bin ich auch sehr interessiert.
Durch die Kündigungen der Telekom wird das Thema brandaktuell.

Im Moment lösen wir das Problem durch eine SIP2SIP Lösung von Beronet, was aber nicht unbedingt das gelbe vom Ei ist, weil wieder Hardware verbaut ist.

LG, Jan.

Dean Martin

unread,
Jun 23, 2018, 5:23:20 AM6/23/18
to gs3-users
Hallo Jan,

ich habe genau dasselbe Problem... GS3->Telekom SIP-Trunk

Würde mich genauer interessieren was das für ein Gerät ist (SIP2SIP von Beronet).
Ich brauche nämlich für 8 gleichzeitige Gespräche.

Danke und Gruss
Dean

Dirk Markwardt

unread,
Jun 23, 2018, 5:41:03 AM6/23/18
to gs3-...@googlegroups.com

Hallo!

 

Die Beronet-Geräte sind ursprünglich VoIP-Gateways, also von ISDN oder Analog auf SIP oder umgekehrt. Dies tun sie seit Jahren sehr zuverlässig, bei recht einfacher Konfiguration. Der Modus SIP2SIP spricht SIP nach außen zum Provider und baut dann eine neue SIP-Verbindung nach intern auf. Damit erschlägt man dann z.B. die Umsetzung von TCP nach UDP. Außerdem macht dieser Modus die Box zu einem Session-Border-Controller (SBC). Es werden alle SIP-Verbindungen hier terminiert und dann in der Folge neu aufgebaut. Umsetzungen der Rufnummer usw… können hier dann auch erfolgen.

 

Das ganze geht auch mit Routern von Lancom. Falls nicht ohnehin vorhanden kann man in den Geräten die VoIP-Option (kostenpflichtig) aktivieren, dann klappt damit auch eine Umsetzung von TCP-SIP nach UDP. Vorteile hier:

  • Kein Port-Forwarding mehr erforderlich, da der Router in der Regel auch die Internetverbindung selber herstellt.
  • Die Lancom-Lösung kümmert sich auch gleich um das Bandbreiten-Management und reserviert für VoIP-Telefonate entsprechende Up- und Downstream-Bandbreite automatisch.

 

--

Mit freundlichen Grüßen

Dirk Markwardt

D.Mar...@Markwardt-Software.de

Markwardt Software GmbH

Schmalbachstr. 9

38112 Braunschweig

Telefon 0531 210910

Telefax 0531 2109131

Handelsregister Braunschweig HRB 2428

Geschäftsführer: Dirk Markwardt

Dean Martin

unread,
Jun 26, 2018, 11:22:56 AM6/26/18
to gs3-users
Hallo zusammen,

ich habe nach dieser Anleitung geschaft die GS3 und Asterisk 1.8.32.x zu konfigurieren.

Gruss Dean

Am Donnerstag, 30. November 2017 08:06:47 UTC+1 schrieb Bernd Wagner:

TW

unread,
Jun 26, 2018, 4:51:46 PM6/26/18
to gs3-users

Hallo Bernd,

an der Datenbank ist keine Änderung notwendig, jedoch müssen neben der sip.conf einige andere Dateien angepasst werden.
Die beiden Dateien müssen so angepasst werden:

/opt/gemeinschaft/htdocs/gui/mod/routing_gws-sip.php
/opt/gemeinschaft/etc/asterisk/sip-nodes.conf.php

sodass danach die sip-nodes.conf.php folgendes für den Telekom SIP-Truk auswirft:

[gw_1_telekomsiptrunk]
type
= peer
sendrpid
=no
host
= reg.sip-trunk.telekom.de
defaultuser
= 55XXXXXXXXXX
secret
= XXXXXXXXXX
fromdomain
= sip-trunk.telekom.de
session
-timers = refuse
directmedia
= no
videosupport
= no
transport
= tcp
usereqphone
= yes
srvlookup
= yes
insecure
= port,invite
nat
= force_rport,comedia
canreinvite
= no
dtmfmode
= rfc2833
call
-limit = 0
registertimeout
= 60
setvar
=__is_from_gateway=1
context
= from-gg-telekom-sip-trunk
qualify
= yes
maxexpiry
= 185
defaultexpiry
= 145
disallow
= all
language
= de
allow
= g722
allow
= alaw



Die Datei /opt/gemeinschaft/etc/asterisk/sip-register.conf.php muss ebenfalls angepasst werden, sodass hiernach folgender Eintrag generiert wird:

              
   Rufnummer mit Durchwal 0  Telefonie-Passwort   Zugangsnummer                           Rufnummer mit Durchwal 0      
register => tcp://+49XXX...@sip-trunk.telekom.de:XXXXXXXXXX:55XXXX...@reg.sip-trunk.telekom.de:5060/+49XXXXXXXXXXXXX~480



Ich habe den Codec g722 als Standard verwendet, da die Telekom dies ebenfalls macht,
das "srvlookup = yes" hat bei uns nur richtig funktioniert, wenn wir einen Telekom DNS-Server in der /etc/resolv.conf hinterlegt haben.

Ausgehend erwartet die Telekom immer die vollständige Rufnummer +49VorwahlNummerDurchwahl

Mit all diesen Änderungen läuft der SIP-Trunk der Telekom bei uns seit mehreren Wochen problemlos.

Grüße Tobias

Am Donnerstag, 30. November 2017 08:06:47 UTC+1 schrieb Bernd Wagner:

Markus Neubauer

unread,
Jul 25, 2018, 1:02:24 PM7/25/18
to gs3-users
Hallo Tobias,

welche Änderungen muss an
/opt/gemeinschaft/htdocs/gui/mod/routing_gws-sip.php
Ausgeführt werden (g722)? Ich denke darüber nach die Parameter in die gate_param einzupflegen und von dort zu laden.

Unsicher bin ich mir auch über die Bedeutung von  der Tilde 480 am Ende, welche Funktion hat das?
register => tcp://+49XXX...@sip-trunk.telekom.de:XXXXXXXXXX:55XXXX...@reg.sip-trunk.telekom.de:5060/+49XXXXXXXXXXXXX~480

Gruß Markus

TW

unread,
Jul 26, 2018, 11:02:39 AM7/26/18
to gs3-users
Hallo Markus,

ich hatte dir bereits die Patch-Files geschickt. Schau mal in dein Postfach ob die ankamen.
Hier die Änderung:
--- ../../htdocs/gui/mod/routing_gws-sip.php 2018-07-24 18:29:36.507747072 +0200
+++ /opt/gemeinschaft/htdocs/gui/mod/routing_gws-sip.php 2018-06-04 23:01:56.703174818 +0200
@@ -387,6 +387,10 @@ ORDER BY `title`'
  if (@$gw_params['nat'] === 'no') echo ' checked="checked"';
  echo ' />',"\n";
  echo '<label for="ipt-gw-param-nat-no">', htmlEnt(__('nein')) ,'</label>',"\n";
+        echo '<input type="radio" name="gw-param-nat" id="ipt-gw-param-nat-force" value="force_rport,comedia"';
+        if (@$gw_params['nat'] === 'force_rport,comedia') echo ' checked="checked"';
+        echo ' />',"\n";
+        echo '<label for="ipt-gw-param-nat-force">', htmlEnt(__('force_rport')) ,'</label>',"\n";
  echo ' &nbsp; <small>(', htmlEnt(__('Standard')) ,': ', htmlEnt(__('ja')) ,')</small>',"\n";
  echo '</td>',"\n";
  echo '<td class="transp xs gray"><code>nat = </code><code>yes</code> | <code>no</code></td>',"\n";
@@ -457,6 +461,7 @@ ORDER BY `title`'
  echo '<th>', __('Codecs') ,':</th>',"\n";
  echo '<td>',"\n";
  $codecs = array(
+ 'g722'   => 'G.722',
  'alaw'   => 'G.711a',
  'ulaw'   => 'G.711u',
  'gsm'    => 'GSM',

Die Tile 480 setzt den Timeout auf 480 Sekunden, mit den Standardwerten schlug die Registrierung bei der Telekom fehl.

Grüße Tobias

Am Mittwoch, 25. Juli 2018 19:02:24 UTC+2 schrieb Markus Neubauer:
Hallo Tobias,

welche Änderungen muss an
/opt/gemeinschaft/htdocs/gui/mod/routing_gws-sip.php
Ausgeführt werden (g722)? Ich denke darüber nach die Parameter in die gate_param einzupflegen und von dort zu laden.

Unsicher bin ich mir auch über die Bedeutung von  der Tilde 480 am Ende, welche Funktion hat das?
register => tcp://+49XXXXXXXXX@sip-trunk.telekom.de:XXXXXXXXXX:55XXXX...@reg.sip-trunk.telekom.de:5060/+49XXXXXXXXXXXXX~480

Gruß Markus

Sven Neukirchner

unread,
Aug 8, 2018, 9:01:51 AM8/8/18
to gs3-users
Hallo,
ich versuche auch gerade einen Telekom Trunk einzubinden.
könnte mir jemand das Patchfile zusenden?

Wie müssen die Änderungen in dersip-nodes.conf.php aussehen?

Könnte mir auch jemand mal die Ausgabe von

sip show peer gw_xx_telekomtrunk posten um zu sehen wie die Parameter aussehen?

Danke
Sven

Daniel Auerbach

unread,
Aug 10, 2018, 10:09:38 AM8/10/18
to gs3-users
Hallo zusammen,

mir geht es genauso. Der Sip-Trunk der Telekom ist durch TCP nicht ohne Weiteres in Gemeinschaft nutzbar.
Ich hätte -wie mein Vorredner auch- Interesse an den Patch-Files. Vielleicht kann mir da jemand helfen?

Vielen Dank und viele Grüße
Daniel

sup...@cgm.de

unread,
Aug 10, 2018, 11:39:53 AM8/10/18
to gs3-users
Und hier: sip show peer gw_xxx

  * Name       : gw_19_telekom
  Realtime peer: No
  Secret       : <Set>
  MD5Secret    : <Not set>
  Remote Secret: <Not set>
  Context      : from-gg-telekom
  Subscr.Cont. : default
  Language     : de
  AMA flags    : Unknown
  Transfer mode: open
  CallingPres  : Presentation Allowed, Not Screened
  FromDomain   : sip-trunk.telekom.de Port 5060
  Callgroup    :
  Pickupgroup  :
  MOH Suggest  :
  Mailbox      :
  VM Extension : voicemail
  LastMsgsSent : 32767/65535
  Call limit   : 8
  Max forwards : 0
  Dynamic      : No
  Callerid     : "" <>
  MaxCallBR    : 384 kbps
  Expire       : -1
  Insecure     : port,invite
  Force rport  : No
  ACL          : No
  DirectMedACL : No
  T.38 support : No
  T.38 EC mode : Unknown
  T.38 MaxDtgrm: 4294967295
  DirectMedia  : No
  PromiscRedir : No
  User=Phone   : Yes
  Video Support: No
  Text Support : No
  Ign SDP ver  : No
  Trust RPID   : No
  Send RPID    : No
  TrustIDOutbnd: Legacy
  Subscriptions: Yes
  Overlap dial : No
  DTMFmode     : rfc2833
  Timer T1     : 500
  Timer B      : 32000
  ToHost       : reg.sip-trunk.telekom.de
  Addr->IP     : 217.0.26.195:5060
  Defaddr->IP  : (null)
  Prim.Transp. : TCP
  Allowed.Trsp : TCP
  Def. Username: 551129838406
  SIP Options  : 100rel histinfo timer
  Codecs       : 0x8 (alaw)
  Codec Order  : (alaw:20)
  Auto-Framing : No
  Status       : OK (30 ms)
  Useragent    :
  Reg. Contact :
  Qualify Freq : 60000 ms
  Variables    :
                 __is_from_gateway = 1
  Sess-Timers  : Refuse
  Sess-Refresh : uas
  Sess-Expires : 1800 secs
  Min-Sess     : 90 secs
  RTP Engine   : asterisk
  Parkinglot   :
  Use Reason   : No
  Encryption   : No

sup...@cgm.de

unread,
Aug 10, 2018, 11:39:53 AM8/10/18
to gs3-users
Hi

bei mir läuft der Trunk der Telekom erfolgreich mit folgenden Einstellungen.

Hier das sip-register.conf.php

<?php

define( 'GS_VALID', true );  /// this is a parent file

ini_set('implicit_flush', 1);
ob_implicit_flush(1);

error_reporting(0);

require_once( dirName(__FILE__) .'/../../inc/conf.php' );
require_once( GS_DIR .'inc/util.php' );
require_once( GS_DIR .'inc/log.php' );
set_error_handler('err_handler_quiet');

if (! gs_get_conf('GS_INSTALLATION_TYPE_SINGLE')) {

        require_once( GS_DIR .'inc/get-listen-to-ids.php' );
        require_once( GS_DIR .'inc/gs-lib.php' );
        include_once( GS_DIR .'inc/gs-fns/gs_hosts_get.php' );

        $our_ids = @ gs_get_listen_to_ids();
        if (! is_array($our_ids)) $our_ids = array();
        //echo 'OUR IDS: ', implode(', ', $our_ids), "\n";

        $hosts = @ gs_hosts_get();
        if (isGsError( $hosts )) $hosts = array();
        if (! $hosts)            $hosts = array();
        //echo "HOSTS:\n"; print_r($hosts);

        $min_our_ids = (count($our_ids) > 0) ? min($our_ids) : 0;
        if ($min_our_ids < 1) {
                gs_log(GS_LOG_WARNING, 'This server is not configured to be a Gemeinschaft node. Not registering to other nodes.');
        } else {
                $outUser = 'gs-'. str_pad( $min_our_ids, 4, '0', STR_PAD_LEFT );

                $out = '';
                foreach ($hosts as $host) {
                        if (in_array( (int)$host['id'], $our_ids )) {
                                //echo "SKIPPING ", $host['id'], "\n";
                                continue;
                        } else {
                                //echo "DOING ", $host['id'], "\n";
                        }

                        # it's one of the other nodes

                        $inUser = 'gs-'. str_pad( $host['id'], 4, '0', STR_PAD_LEFT );
                        $inPass = 'thiS is rEally seCret.';
                        $inPass = subStr( str_replace(
                                array( '+', '/', '=' ),
                                array( '', '', ''  ),
                                base64_encode( $inPass )
                        ), 0, 25 );
                        $outPass = $inPass;

                        $name = str_pad( $host['id'], 4, '0', STR_PAD_LEFT );
                        $out .= 'register => '. $outUser .'@gs-'. $name .'/'. $inUser ."\n";
                }
                echo "\n", $out;
        }

}
echo "\n";



# get gateways from DB
#
require_once( GS_DIR .'inc/db_connect.php' );
$DB = gs_db_master_connect();
if (! $DB) {
        exit(1);
}
$rs = $DB->execute(
'SELECT
        `g`.`name`, `g`.`host`, `g`.`proxy`, `g`.`user`, `g`.`authuser`, `g`.`pwd`,
        `gg`.`name` `gg_name`
FROM
        `gates` `g` JOIN
        `gate_grps` `gg` ON (`gg`.`id`=`g`.`grp_id`)
WHERE
        `g`.`type`=\'sip\' AND
        `g`.`host` IS NOT NULL AND
        `g`.`register`= 1
ORDER BY `g`.`id`'
);
while ($gw = $rs->fetchRow()) {
        if ($gw['host'] != '' && $gw['user'] != '') {
            if ($gw['host'] == 'sip-trunk.telekom.de') {
                echo 'register => tcp://';
                echo $gw['user'];
                echo '@';
                echo $gw['host'];
                echo ':';
                echo $gw['pwd'];
                echo ':';
                echo $gw['authuser'];
                echo '@';
                echo $gw['proxy'];
                echo ':5060/';
                echo $gw['user'];
                echo "\n";
            } else {

                if ($gw['proxy'] == null || $gw['proxy'] === $gw['host']) {
                        $gw['proxy'] = null;
                }

                // Format for registration is user[:secret[:authuser]]@host[:port][/contact]

                if (preg_match('/@([^@]*)$/', $gw['user'], $m)) {
                        $gw['fromdomain'] = $m[1];  # domain for the From header. like
                                                    # setting fromdomain in the peer definition
                        $gw['user'] = subStr($gw['user'], 0, -(strLen($gw['fromdomain'])+1) );
                } else {
                        $gw['fromdomain'] = '';
                }

                echo 'register => ', $gw['user'];  # user
                if ($gw['fromdomain'] != '') {
                        echo '@', $gw['fromdomain'];   # domain
                }
                if ($gw['pwd'] != '') {
                        echo ':', $gw['pwd'];          # password
                        if ($gw['user'] != '') {
                                echo ':', $gw['user'];     # authuser
                        }
                }
                echo '@';
                //echo $gw['name'];             # peer definition
                if ($gw['proxy'] == null) {
                        echo $gw['host'];             # host
                } else {
                        echo $gw['proxy'];             # proxy
                }
                if ($gw['user'] != '') {
                        echo '/', $gw['user'];         # contact
                }
                echo "\n";
        }
   }

}
echo "\n";


?>



Hier das sip-nodes.conf.php

#!/usr/bin/php -q
<?php

define( 'GS_VALID', true );  /// this is a parent file

ini_set('implicit_flush', 1);
ob_implicit_flush(1);

error_reporting(0);

require_once( dirName(__FILE__) .'/../../inc/conf.php' );
require_once( GS_DIR .'inc/util.php' );
set_error_handler('err_handler_quiet');
require_once( GS_DIR .'inc/log.php' );
require_once( GS_DIR .'inc/langhelper.php' );

if (! gs_get_conf('GS_INSTALLATION_TYPE_SINGLE')) {

        require_once( GS_DIR .'inc/get-listen-to-ids.php' );
        require_once( GS_DIR .'inc/gs-lib.php' );
        include_once( GS_DIR .'inc/gs-fns/gs_hosts_get.php' );

        $our_ids = @ gs_get_listen_to_ids();
        if (! is_array($our_ids)) $our_ids = array();
        //echo 'OUR IDS: ', implode(', ', $our_ids), "\n";

        $hosts = @ gs_hosts_get();
        if (isGsError( $hosts )) $hosts = array();
        if (! $hosts)            $hosts = array();
        //echo "HOSTS:\n"; print_r($hosts);

        $min_our_ids = (count($our_ids) > 0) ? min($our_ids) : 0;
        $outUser = 'gs-'. str_pad( $min_our_ids, 4, '0', STR_PAD_LEFT );

        $out = '';
        foreach ($hosts as $host) {
                if (in_array( (int)$host['id'], $our_ids )) {
                        //echo "SKIPPING ", $host['id'], "\n";
                        continue;
                } else
                        //echo "DOING ", $host['id'], "\n";

                # it's one of the other nodes

                $inUser = 'gs-'. str_pad( $host['id'], 4, '0', STR_PAD_LEFT );
                $inPass = 'thiS is rEally seCret.';
                $inPass = subStr( str_replace(
                        array( '+', '/', '=' ),
                        array( '', '', ''  ),
                        base64_encode( $inPass )
                ), 0, 25 );
                $outPass = $inPass;

                $name = str_pad( $host['id'], 4, '0', STR_PAD_LEFT );
                $out .= '
[gs-'. $name .'](node-user)
host='. $host['host'] .'
defaultip='. $host['host'] .'
username='. $inUser .'
secret='. $inPass .'
setvar=__from_node=yes

[gs-'. $name .'](node-peer)
host='. 'dynamic' .'
defaultip='. $host['host'] .'
username='. $outUser .'
fromuser='. $outUser .'
secret='. $outPass .'
setvar=__from_node=yes
';
        }
        echo $out;

}
echo "\n";



# get gateways from DB
#
require_once( GS_DIR .'inc/db_connect.php' );
$DB = gs_db_master_connect();
if (! $DB) {
        exit(1);
}
$rs = $DB->execute(
'SELECT
        `g`.`id`, `g`.`name`, `g`.`host`, `g`.`proxy`, `g`.`user`, `g`.`authuser`, `g`.`pwd`,
        `gg`.`name` `gg_name`
FROM
        `gates` `g` JOIN
        `gate_grps` `gg` ON (`gg`.`id`=`g`.`grp_id`)
WHERE
        `g`.`type`=\'sip\' AND
        `g`.`host` IS NOT NULL
ORDER BY `g`.`id`'
);
while ($gw = $rs->fetchRow()) {
        if ($gw['name'] == '') continue;
        if ($gw['host'] == '') continue;

        $params = array();
        $params['transport'     ] = 'tcp';
        $params['nat'           ] = 'force_rport,comedia';
        $params['canreinvite'   ] = 'no';
        $params['defaultuser'   ] = $gw['authuser'];
        $params['fromdomain'    ] = $gw['host'];
        $params['secret'        ] = $gw['pwd'];
        $params['insecure'      ] = 'port,invite';
        $params['directmedia'   ] = 'no';

        $params['port'          ] = 5060;
        $params['call-limit'    ] = 0;
        $params['qualify'       ] = 'yes';
        $params['dtmfmode'      ] = 'rfc2833';
        $params['session-timers'] = 'refuse';
//        $params['registertimeout'] = '60';
        $params['registertimeout'] = '480';
        $params['maxexpiry'     ] =  185;
        $params['defaultexpiry' ] =  145;
        $params['permit'        ] = null;

        $codecs_allow = array();
        $codecs_allow['g722'   ] = true;
        $codecs_allow['alaw'   ] = true;
        $codecs_allow['ulaw'   ] = false;


        if ($gw['proxy'] == null || $gw['proxy'] === $gw['host']) {
                $gw['proxy'] = null;
        }


        $params_override = array();
        $params_rs = $DB->execute( 'SELECT `param`, `value` FROM `gate_params` WHERE `gate_id`='.$gw['id'] );
        while ($param = $params_rs->fetchRow()) {
                $params_override[$param['param']] = $param['value'];
        }

        if (array_key_exists('port'          , $params_override)) {
        //&&  (int)$params_override['port'          ] != 0) {
                $params['port'          ] = $params_override['port'          ];
        }
        if (array_key_exists('canreinvite'   , $params_override)) {
                $params['canreinvite'   ] = $params_override['canreinvite'   ];
        }
        if (array_key_exists('qualify'       , $params_override)) {
                $params['qualify'       ] = $params_override['qualify'       ];
        }
        if (array_key_exists('call-limit'    , $params_override)) {
                $params['call-limit'    ] = $params_override['call-limit'    ];
        }
        if (array_key_exists('dtmfmode'      , $params_override)) {
                $params['dtmfmode'      ] = $params_override['dtmfmode'      ];
        }
        if (array_key_exists('allow'         , $params_override)) {
                foreach ($codecs_allow as $codec => $allow) {
                        $codecs_allow[$codec] = false;
                }

                $params_override_codecs = preg_split('/\s*,\s*/', trim($params_override['allow']));
                foreach ($params_override_codecs as $codec) {
                        $codecs_allow[$codec] = true;
                }

                $num_allowed_codecs = 0;
                foreach ($codecs_allow as $codec => $allow) {
                        if ($allow) ++$num_allowed_codecs;
                }
                if ($num_allowed_codecs < 1) {
                        gs_log( GS_LOG_WARNING, 'You did not allow any codecs for gateway '. $gw['name'] .'. Allowing G.711a by default.' );
                        $codecs_allow['alaw'   ] = true;
                }
        }
        if (array_key_exists('permit'        , $params_override)
        &&  'x'.$params_override['permit'        ] != 'x'.'0.0.0.0/0') {
                $params['permit'        ] = $params_override['permit'        ];
        }
        echo '[', $gw['name'] ,']' ,"\n";
        echo 'context = '         , 'from-gg-'.$gw['gg_name' ] ,"\n";
        echo 'type = '            , 'peer' ,"\n";
        echo 'host = '            , $gw['proxy'              ] ,"\n";
        echo 'transport = '       , $params['transport'      ] ,"\n";
        echo 'sendrpid = '        , 'no'                                           ,"\n";
        echo 'nat = '             , $params['nat'            ] ,"\n";
        echo 'defaultuser = '     , $params['defaultuser'    ] ,"\n";
        echo 'fromdomain = '      , $params['fromdomain'     ] ,"\n";
        echo 'secret = '          , $gw['pwd'                ] ,"\n";
        echo 'insecure = '        , $params['insecure'       ] ,"\n";
        echo 'directmedia = '     , 'no'                                           ,"\n";
        echo 'videosupport = '    , 'no'                                           ,"\n";
        echo 'usereqphone = '     , 'yes'                                          ,"\n";
        echo 'srvlookup = '       , 'yes'                                          ,"\n";
        echo 'canreinvite = '     , $params['canreinvite'    ] ,"\n";
        echo 'dtmfmode = '        , $params['dtmfmode'       ] ,"\n";
        echo 'call-limit = '      , $params['call-limit'     ] ,"\n";
        echo 'session-timers = '  , $params['session-timers' ] ,"\n";
        echo 'registertimeout = ' , $params['registertimeout'] ,"\n";
        echo 'maxexpiry = '       , $params['maxexpiry']           ,"\n";
        echo 'defaultexpiry = '   , $params['defaultexpiry']   ,"\n";
        echo 'setvar=__is_from_gateway=1'                                          ,"\n";
        echo 'qualify = '         , $params['qualify'        ] ,"\n";
        echo 'disallow = '        , 'all'                                          ,"\n";
        echo 'language = '        , 'de'                                           ,"\n";

        foreach ($codecs_allow as $codec => $allowed) {
                if ($allowed) {
                        echo 'allow = ', $codec ,"\n";
                }
        }

        if ($params['permit'        ] != null
        &&  'x'.$params['permit'        ] != 'x'.'0.0.0.0/0') {
                echo 'deny = '            ,'0.0.0.0/0.0.0.0' ,"\n";  # deny all
                echo 'permit = '          , $params['permit'        ] ,"\n";
        }
        echo "\n";
}

?>


Am Freitag, 10. August 2018 16:09:38 UTC+2 schrieb Daniel Auerbach:

Daniel Auerbach

unread,
Sep 8, 2018, 1:16:34 AM9/8/18
to gs3-users
Vielen Dank für die Scripts. Dazu habe ich eine Frage:

Woher kommt der `g`.`authuser` in der sip-nodes.conf.php bei der SQL-Abfrage her? Diese Spalte scheint es in der Tabelle in Gemeinschaft 3.1 nicht zu geben. Habt ihr da die Datenbank geändert?
Denn sobald der `g`.`authuser`-Eintrag in der sip-nodes.conf.php drinsteht, wird der SIP-Header nicht mehr erzeugt. Es kommt nur eine Leerausgabe anstelle:

register => tcp://+49XXXXXXXXX@sip-trunk.telekom.de:XXXXXXXXXX:55XXXX...@reg.sip-trunk.telekom.de:5060/+49XXXXXXXXXXXXX~480

VG Daniel

Am Donnerstag, 30. November 2017 08:06:47 UTC+1 schrieb Bernd Wagner:

sup...@cgm.de

unread,
Sep 8, 2018, 2:51:15 AM9/8/18
to gs3-users
Hallo Daniel,

Ja, wir haben eine neues Feld in der Datenbank->gates:
11      varchar(35)  
utf8_unicode_ci   

Ja    
NULL




Am Samstag, 8. September 2018 07:16:34 UTC+2 schrieb Daniel Auerbach:
Vielen Dank für die Scripts. Dazu habe ich eine Frage:

Woher kommt der `g`.`authuser` in der sip-nodes.conf.php bei der SQL-Abfrage her? Diese Spalte scheint es in der Tabelle in Gemeinschaft 3.1 nicht zu geben. Habt ihr da die Datenbank geändert?
Denn sobald der `g`.`authuser`-Eintrag in der sip-nodes.conf.php drinsteht, wird der SIP-Header nicht mehr erzeugt. Es kommt nur eine Leerausgabe anstelle:


Daniel Auerbach

unread,
Sep 11, 2018, 7:55:16 AM9/11/18
to gs3-users
Vielen Dank für Deine Hilfe.

Nun klappt die Registrierung bei der Telekom am SIP-Trunk.
Leider wird keine Sprache übertragen. Abgehend kann gewählt werden und beim Gegenüber klingelt das Telefon. Nach dem Abheben läuft die Verbindung, allerdings wird keine Sprache übertragen, totale Stille.
Kommend ist noch keine Einwahl möglich, da kommt das Besetzt-Zeichen.

Ich tippe darauf, dass es am Router davor liegt. Hat jemand noch einen heißen Tipp oder was man beachten muss?

VG Daniel

sup...@cgm.de

unread,
Sep 12, 2018, 4:01:27 AM9/12/18
to gs3-users
Ich würde Anlage mal auf DMZ kurz stellen und dann nochmal testen.
Auch in der sip.conf externip richtig stellen.

Daniel Auerbach

unread,
Sep 12, 2018, 2:59:40 PM9/12/18
to gs3-users
Besten Dank für die zwei Tipps. Die DMZ habe ich jetzt mal probiert, aber leider ohne Veränderung.
Die sip.conf habe ich bisher noch nicht verändert. Ich weiß auch nicht so recht anwelcher Stelle die externe IP rein soll. Anbei mal meine sip.conf, vielleicht fällt Euch ein grober Schnitzer auf?

[general]
callerid=gemeinschaft
allowguest=no
autocreatepeer=no
realm=gemeinschaft.local
#exec /opt/gemeinschaft/etc/asterisk/bindaddr.conf.php sip

pedantic=yes
minexpiry=65
defaultexpiry=145
maxexpiry=185
disallow=all
allow=alaw
allow=h261
allow=h263
allow=h263p
mohinterpret=default
#exec "/opt/gemeinschaft/etc/asterisk/gs-lang.conf.php"
relaxdtmf=yes
rfc2833compensate=yes
trustrpid=no
sendrpid=yes
progressinband=no
useragent=Asterisk Gemeinschaft
usereqphone = no
dtmfmode=rfc2833
compactheaders=yes
callevents=no
alwaysauthreject = yes
g726nonstandard=no
rtptimeout=30
rtpholdtimeout=200
rtpkeepalive=15
limitonpeers=yes
#exec /opt/gemeinschaft/etc/asterisk/sip-nat.conf.php
canreinvite = nonat
rtsavesysname=no
rtupdate=no
ignoreregexpire=yes
#exec /opt/gemeinschaft/etc/asterisk/sip-reg-updates.conf.php
jbenable = no
notifycid = ignore-context
qualify = yes
switch => Realtime
#exec /opt/gemeinschaft/etc/asterisk/sip-register.conf.php
type = friend
port = 5060
nat = no
sendrpid = yes
trustrpid = yes
qualify = yes
insecure = port
usereqphone = no
canreinvite = yes
call-limit = 0
context = from-node
registertimeout = 55
type=user
type=peer
#exec /opt/gemeinschaft/etc/asterisk/sip-nodes.conf.php

Danke und viele Grüße
Daniel

beckerch...@gmail.com

unread,
Sep 13, 2018, 3:46:24 AM9/13/18
to gs3-users
Hallo Daniel,
was ich geändert habe:

minexpiry=65
defaultexpiry=480
maxexpiry=600

was für eine GS version benutzt du?
viele Grüße
Bernd

Daniel Auerbach

unread,
Sep 13, 2018, 7:09:41 AM9/13/18
to gs3-users
Vielen Dnak für Eure Hilfe. Ich werde es mal ausprobieren...

Hallo Bernd,

ich habe Version 3.1 mit Asterisk 1.6.

VG Daniel

Dieter S

unread,
Nov 27, 2018, 8:19:48 AM11/27/18
to gs3-users
Hallo sup...@cgm.de

ich versuche auch gerade eine GS3.2 genauer gesagt Asterisk 1.8.28.2 an einen Telekom-Trink anzubinden.
Leider bisher erfolglos. Ich habe deine Scripts verwendet und die sip.conf um die tcpenable Eintrage ergänzt.
Weiterhin habe ich in der Datenbank den authuser ergänzt.Wen ich sie-register.conf.php im Terminal eingebe, erhalte ich:
register => tcp://+49206...@sip-trunk.telekom.de:xxxxx:5511x...@reg.sip-trunk.telekom.de:5060/+492064xxxxx

Trotzdem findet keine Registrierung statt. Was könnte ich noch überprüfen?

Übrigens habe ich zur Zeit ein Beronet Gateway als SBC zur Anbindung an den Telekom-Trunk im Einsatz.
Die Verbindungsqualität ist gruselig. An der PBX kann es nicht liegen da eine Anbindung an einem Sipgate-Trunk keine Probleme bereitet.

Gruß
Dieter
Reply all
Reply to author
Forward
0 new messages