📄 tutorial.sgml
字号:
<sect>Getting Started (Tutorial)<p><sect1>A first simple experiment<p>To see that all components are up and running, get2 Linux workstations, both connected to the LAN.Make sure you have at least version 1.1 of OpenH323 and OhPhone installed.On the first machine run the gatekeeper and ohphone (ondifferent consoles):<tscreen><verb>jan@machine1 > gnugk -ttt</verb></tscreen>Now the gatekeeper is running in direct mode.The "<tt/-ttt/" option tells the gatekeeper to do a lot of debug outputon the console (you can direct that output to a file with "<tt/-o logfile/").<tscreen><verb>jan@machine1 > ohphone -l -a -u jan</verb></tscreen>Now this OhPhone is listening (<tt/-l/) for calls and will automaticallyaccept them (<tt/-a/). It has registered as user jan with the gatekeeperthat it will automatically detect. (If the auto detect fails for somereason use "<tt/-g 1.2.3.4/" to specify the IP number the gatekeeperis running on.)On the second machine run ohphone only:<tscreen><verb>peter@machine2 > ohphone -u peter jan</verb></tscreen>The second instance of OhPhone registers with the auto detectedgatekeeper as user peter and tries to call user jan.The gatekeeper will resolve the username to the IP number fromwhere user jan has registered (machine1 in this case) and OhPhonewill call the other instance of OhPhone on machine one.The first instance of OhPhone will accept that call and Peter and Jan can chat.<sect1>Using the Status interface to monitor the gatekeeper<p>Now we try to see which messages are handled by the gatekeeper.On a new console on machine1 we use telnet to connect to the gatekeeper:<tscreen><verb>jan@machine1 > telnet machine1 7000</verb></tscreen>Most probably we'll get an "Access forbidden!" message, becausenot everybody is allowed to spy.Now we create a file called <tt/gatekeeper.ini/ and put it in thedirectory where we start the gatekeeper.<tt/gatekeeper.ini/ only contains 4 lines:<tscreen><verb>[Gatekeeper::Main]Fourtytwo=42[GkStatus::Auth]rule=allow</verb></tscreen>Stop the gatekeeper with Ctrl-C and restart it.When we do the telnet again, we stay connected with the gatekeeper.Now repeat the first experiment where Peter calls Jan and see whichmessages are handled by the gatekeeper in non-routed mode.There is a number of commands that can be issued in this telnet session:Type "help" to see them.To end the telnet session with the gatekeeper type "quit" and hit Enter.But this is very insecure - everyboy could connect to the status interface and see this.Lets change the the configuration file to<tscreen><verb>[Gatekeeper::Main]Fourtytwo=42[GkStatus::Auth]rule=passwordgkadmin=QC7VyAo5jEw=</verb></tscreen>The 5th line is added by addpasswd utility, it creates a user "gkadmin" with password "secret" which will limit access to the status port.Restart the gatekeeper with this new configuration and do the telnet again.Now you will be asked for a username and password before you can login.Take a look at the <ref id="gkstatusauth" name="GkStatus::Auth"> section for more details on securing the status ports.<sect1>Starting the gatekeeper in routed mode<p>Starting the gatekeeper in routed mode means that the gatekeeperuses "gatekeeper routed signalling" for all calls. In thismode the gatekeeper all signalling messages go through the gatekeeperand it has much greater control over the calls.<tscreen><verb>jan@machine1 > gnugk -r</verb></tscreen>Now the gatekeeper is running in routed mode. Telnet to the status portand make a call to see what messages are now handled by the gatekeeper.Note that all media packets (audio and video) are still sentdirectly between the endpoints (the 2 instances of ohphone).Since gatekeeper routed signalling is much more complicated you aremuch more likely to hit a bug n the gatekeeper in this mode.But if it breaks, you get to keep the pieces. ;-)<p><sect1>A virtual PBX: Disconnecting calls<p>Until now the gatekeeper has only acted as a mechanismto resolve symbolic names to IP addresses. Thats an importantfunction but hardly exciting.Since the gatekeeper has a lot of control over the calls,it can terminate them for example. When we areconnected to the status port, we can list all active callswith "<tt/PrintCurrentCalls/". To terminate a call, we cansay "<tt/Disconnectip 1.2.3.4/" for one of its endpoints.One could for example write a simple script that connects tothe status port and listens for all ongoing calls and terminatesthem after 5 minutes, so no user can over use system resources.Take a look at the other telephony functions like TransferCall to see what else is available.<sect1>Routing calls over a gateway to reach external users<p>Without using a gateway you can only call other people with anIP phone over the Internet. To reach people with ordinary telephonesyou must use a gateway.<tscreen><verb>_________________ ______________| endpoint "jan"| | || 192.168.88.35 |--------->| Gatekeeper ||_______________| | |_________________ | || gateway "gw1" | outgoing | || 192.168.88.37 |<---------|____________||_______________|</verb></tscreen>The gatekeeper has to know which calls are supposed to be routedover the gateway and what numbers shall be called directly.Use the [RasSrv::GWPrefixes] section of the config file to tellthe gatekeeper the prefix of numbers that shall be routed over thegateway.<tscreen><verb>[RasSrv::GWPrefixes]gw1=0</verb></tscreen>This entry tells the gatekeeper to route all calls to E.164 numbersstarting with 0 to the gateway that has registered with the H.323alias "gw1". If there is no registered gateway with that alias thecall will fail. (Note that you must use the gateway alias - youcan't just tell the gatekeeper the IP number of the gateway.)<p>A prefix can contain digits <tt/0-9/, <tt/#/ and <tt/*/. It can alsocontain a special character <tt/./ (a dot) that matches any digitand can be prefixed with <tt/!/ (an exclamation mark) to disable the prefix.Prefix matching is done accordingly to the longest matching prefix rule,with ! rules having higher priority if lengths are equal. Some examples:<tscreen><verb>[RasSrv::GWPrefixes]; This entry will route numbers starting with 0048 (but not with 004850 and 004860); to the gw1gw1=0048,!004850,!004860; This entry will match only 001 with 10 digits followinggw2=001..........</verb></tscreen><sect1>Rewriting E.164 numbers<p>When using a gateway you often have to use different numbers internallyand rewrite them before sending them over a gateway into the telephonenetwork. You can use the <ref id="rewrite" name="RasSrv::RewriteE164">section to configure that.Example:You want to call number 12345 with you IP Phone and would like toreach number 08765 behind a gateway called "gw1".<tscreen><verb>[RasSrv::GWPrefixes]gw1=0[RasSrv::RewriteE164]12345=08765</verb></tscreen>You can also configure rewriting of E.164 numbers based on which gatewayyou are receiving a call from or sending a call to using the<ref id="gwrewrite" name="RasSrv::GWRewriteE164"> section.Example:You have two different gateways ("gw1" and "gw2") which you are sendingcalls with prefix 0044 to, but which require a different prefix to beadded to the number after the routing has selected the gateway. Thismight be for identification purposes for example.<tscreen><verb>[RasSrv::GWPrefixes]gw1=0044gw2=0044[RasSrv::GWRewriteE164]gw1=out=0044=77770044gw2=out=0044=88880044</verb></tscreen>Example:You want to identify calls from a particular gateway "gw1" with a specificprefix before passing these calls to another gateway "gw2".<tscreen><verb>[RasSrv::GWPrefixes]gw2=1[RasSrv::GWRewriteE164]gw1=in=00=123400</verb></tscreen>Rewrite expressions accept dot <tt/'.'/ and percent sign <tt/'%'/ wildcardcharacters to allow building more general rules. The dot character can occurat both left and right hand sides of expressions, the percent sign can occuronly at the left side only. Use <tt/'.'/ to match any character and copy itto the rewritten string and <tt/'%'/ to match any character and skip it.A few simple examples:<tscreen><verb>[RasSrv::RewriteE164]; Rewrite 0044 + min. 7 digits to 44 + min. 7 digits0044.......=44.......; Rewrite numbers starting with 11 + 4 digits + 11 to 22 + 4 digits + 22; (like 11333311 => 22333322, 110000112345 => 220000222345)11....11=22....22; strip the first four digits from all numbers (11114858345 => 4858345); this is equivalent of 10 rules %%%%1=1, %%%%2=2, ... %%%%.=.; insert two zeros in the middle of the number (111148581234 => 11110048581234)....48=....0048; even this is possible (415161 => 041051061)4.5.6=04.05.06</verb></tscreen>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -