分类: LINUX
2008-12-10 23:28:30
4. 网守基本配置
网守的行为完全由命令行选项和配置文件来决定。有些命令行选项会覆盖配置文件的设定。例如,选项-l会覆盖配置文件中TimeToLive的设定。
4.1 命令行选项
几乎所有的选项都有长短格式,如-c等价于--config
基本
-h --help
显示所有有效的选项,然后退出程序。
-c --config filename
指定使用的配置文件
-s --section section
指定配置文件的主要section。默认是[Gatekeeper::Main]。
-i --interface IP
指定网守监听的IP地址。你应该忽略该选项,而让网守自动侦测需要监听的IP地址,除非你想网守绑定指定的IP地址。
-l --timetolive n
指定终端注册的生存时间。它会覆盖配置文件中TimeToLive的设置。
-b --bandwidth n
指定网关公共有效带宽。如果没有指定,带宽管理默认被禁用。
--pid filename
指定pid文件,仅在Unix有效。
-u --user name
以用户name的身份运行网守,仅在Unix有效。
--core n
仅在Unix有效。当程序崩溃的时候,开启core dump。core dump文件最多不会超过n字节。如何n被设置为unlimited,则不会对文件大小有限制。
网守模式
该选项会覆盖配置文件中[RoutedMode]的设定。
-d --direct
使用终端直接呼叫模式。
-r --routed
使用网守路由呼叫信令模式。
-rr --h245routed
使用网守路由呼叫信令和H.245控制信道模式。
调试信息
-o --output filename
写跟踪日志到指定文件
-t --trace
设置跟踪等级。你加的-t越多,输出就越详细。例如:使用-ttttt来设置跟踪等级5。
4.2配置文件
配置文件是标准的文本文件,格式如下:
[Section String]
Key Name=Value String
在行首以井号(#)或分号(;)开头是注释符号。
complete.ini包含了GnuGk所有有效的section。大多情况下,一次全部使用所有section 没有意义的。该文件仅仅是许多设置示例的集合。
配置文件可以在运行时修改。一旦你修改完配置文件后,你可以通过状态端口使用reload命令,或者发送HUP信号给网守(仅对Unix有效)。例如:
kill -HUP ‘cat /var/run/gnugk.pid’
4.3[Gatekeeper::Main]
l Fortytwo=42
默认:N/A
该设置仅仅用来测试当前的配置文件。如果没有,则会产生一个警告。请确保该项处于配置文件之中。
l Name=OpenH323GK
默认:OpenH323GK
网守的标识。网守仅仅会响应目的ID是自己的GRQ。在发送消息到终端的时候,也会用到此ID。
l Home=192.168.1.1
默认:
网守将会在要求监听的IP地址上进行监听。默认网守会监听主机上所有IP地址。你应该忽略该选项,而让网守自动侦测需要监听的IP地址,除非你想网守绑定指定的IP地址。可以指定由分好(;)或逗号(,)间隔的多个IP地址。
l NetworkInterfaces=192.168.1.1/24,
默认:N/A
指定网守的网络接口。默认情况下,网守会自动侦测主机上所有的接口。以下情况你会需要指定这个选项。一个是自动侦测失败。如果你在NAT之后使用GnuGk,那么你应该使用ExternalIP。ExternalIP会被自动设定GnuGk并以此代替,使得GnuGk就像在NAT上运行一样。
l EndpointIDSuffix=_endp
默认:_endp
网守会为每一个注册的终端分配唯一的标识。该选项用来指定为终端标识添加的后缀。这仅在有多个网守的时候有用。
l TimeToLive=300
默认:-1
注册到网守的终端有一个有限的生存周期。网守会在RCF中包含timeToLive字段,并指定注册的生存周期。到达截止时间时,注册会失效。终端应该周期的发送包含keepAlive 位的RRQ来重置截止时间。在H.225.0的消息中可以只包含这些信息。它被叫做轻量级RRQ。
该配置指定生存时间,单位是秒。注意,终端可能在发送给网守的RRQ中请求一个很短的生存时间。为了防止过多的RRQ消息,如果该项低于60秒,则网守会自动将其调整为60秒。
到了截止时间之后,网守会连续发送两个IRQ消息来询问终端是否在线。如果终端用IRR来应答,注册会被延长。否则网守会发送原因为ttlExpired 的URQ给终端。之后,终端必须用一个完整的RRQ消息来重新注册。
设为-1,该特性将被禁用。
l TotalBandwidth=100000
默认:-1
可供终端使用的总共有效带宽。默认该特性是关闭的。使用该项的时候要特别小心,因为不少终端对此实现有缺陷。
l RedirectGK=Endpoints > 100 || Calls > 50
默认:N/A
该项允许你当网守负荷过大的时候,将终端重定向到备用网守上。例如,使用上面设置的情况下,当终端数量超过100时会拒绝RRQ,当呼叫并发达到50个时会拒绝ARQ。
此外,你可以明确的设定所有终端的重定向是临时的还是永久的。网守会返回一个带有备用网守列表的RAS拒绝消息,这些网守在AlternateGKs定义。需要注意的是,永久重定向意味着终端不会在到此网守注册,同时也要注意这个功能仅仅对符合H.323v4的终端有效。
l AlternateGKs=
默认:N/A
我们允许使用另外一个网守来实现冗余。它是以一种active-active方式来实现的。
实际上,你可能会陷入这种情形之中:一些终端在第一个网守注册,而另外一些终端在第二个网守注册。你甚至可以使用两个网守来实现负载均衡(虽然没有测试过:-))。如果你看到“主网守”,表示你正在配置的网守,而“备用网守”是指另外一个。主网守在RCF中会包含一个字段来告诉终端备用网守的IP地址和网守标识。但是备用网守需要知道每一个在主网守注册了的终端,否则它会拒绝呼入。因此,我们的网守可以转发每一个RRQ到备用IP地址上。
主网守的RCF包含了AlternateGKs指定的字段。第一个和第二个字段分别定义了要转发的的IP地址和端口。第三个字段是告诉终端在呼叫之前它是否需要注册到备用网守上。一般来说不需要如此,因为我们已经转发了它的RRQ,所以它们已经注册到备用网守上了。第四个字段用来指定备用网守的优先级。值越小,优先级越高,通常情况下,主GK的优先级设为1。最后一个字段是备用网守的标识。
l SendTo=
默认:N/A
虽然这些信息已经包含在AlternateGKs中,但是你仍必须指定转发RRQ的目的地。这个地址可能会和AlternateGK's中的地址不一致,所以需要分别设定(想想多个Home地址的计算机)。
l SkipForwards=
默认:N/A
为了防止转发回环,你不应该转发来自其他网守的RRQ(不管是主网守还是备用网守均是如此)。有两种机制来识别是否应该转发。第一个是看RRQ中的标记。既然少数终端会实现这个标记,我们也需要第二种更可靠的办法:在此列表中指定其他网守的IP地址。
l StatusPort=7000
默认:7000
监控网守的状态端口。具体请参考13. Monitoring the Gatekeeper。
l StatusTraceLevel=2
默认:2
默认仅输出客户端的的新状态。具体请参考13. Monitoring the Gatekeeper。
l TimestampFormat=ISO8601
默认:Cisco
设定网守生成时间字符串的默认格式。该选项会影响[SqlAcct],[RadAcct],[FileAcct] 和其他模块,但[CallTable]除外。你可以在每个模块的TimestampFormat 中进一步定制时间戳的格式。
下面是4种预定义的格式:
RFC822 - 一种网守使用的默认格式(例如:Wed, 10 Nov 2004 16:02:01 +0100)
ISO8601 - ISO标准格式(例如:
Cisco - 思科设备使用的格式(例如:16:02:01.534 CET Wed Nov 10 2004)
MySQL - 能让MySQL的识别的简单格式(例如:2004-11-10 16:02:01)
如果需要其他格式,你可以使用C语言中strftime函数的规则来创建格式字符串(具体请参考man和MSDN)。一般来说,格式表达式由百分号跟着格式字符和格式代码组成。例如:“%Y-%m-%d and percent %%”能得到“
%a - 周的简写
%A - 周的全称
%b - 月份的简写
%B - 月份的全称
%d - 月当中的第几天
%H - 小时(24时制)
%I - 小时(12时制)
%m - 月份
%M - 分钟
%S - 秒
%Y - 年
%u - 微妙(GnuGk的扩展)
%z - 时区的简写(+0100)
%Z - 时区的名称
%% - 百分号
l EncryptAllPasswords=1
默认:0
加密配置文件中所有密码(SQL的密码、RADUIS的密码、[Password]的密码、[GkStatus::Auth]的密码)。如果启用,所以的密码必须使用addpasswd来进行加密,否则只有[Password]和[GkStatus::Auth]中的密码被加密。
l KeyFilled=0
默认:N/A
在全局定义一个在加密和解密时使用的填充位。在实际的配置项中它可以被重新设定。通常你不需要改变这个选项。
大多数用户永远不会改变下面参数设定的值。它们主要用于测试和一些诡异的应用。
l UseBroadcastListener=0
默认:1
定义是否监听RAS的广播请求。该选项绑定计算机的所有接口,所以如果你想在计算机上运行多个网守,就应该关闭该项。
l UnicastRasPort=1719
默认:1719
广播RAS的TSAP标识。
l MulticastPort=1718
默认:1718
多播RAS的TSAP标识。
l MulticastGroup=224.0.1.41
默认:224.0.1.41
RAS的多播组。
l EndpointSignalPort=1720
默认:1720
终端呼叫信令默认端口。
l ListenQueueLength=1024
默认:1024
接收TCP连接的队列长度。
l SignalReadTimeout=1000
默认:1000
呼叫信令(Q931)的读超时时间,单位是毫秒。
l StatusReadTimeout=3000
默认:3000
状态连接的读超时时间,单位是毫秒。
l StatusWriteTimeout=5000
默认:5000
状态连接的写超时时间,单位是毫秒。
l ExternalIP=myip.no-ip.com
默认:NA/
当GnuGk被放置在NAT之后时,你可以指定GK的外部IP地址。这样可以使得外部终端和和其他网守可以连接到NAT之后的GK。为了使其正常运行,你必须为GK设置好端口映射或者把GK放入NAT设备的DMZ中。
l ExternalIsDynamic=1
默认:0
外部IP是否是动态的,这要求通过查询来保持外部IP是最新的。为了使其正常运行,你需要将ExternalIP设置为一个域名,并且该域名由DDNS服务器来维护。例如: 或。
l DefaultDomain=gnugk.org
默认:NA/
的时候,如果该地址的域名和选项一致,则会删掉地址中的域名,并想一个普通用户一样处理其请求。当处理基于全URI路由策略的内部的域名呼叫的时候,这就非常有用。配合[RasSrv::RewriteAlias],它也可以用来把URI转换成E.164号码。
l Authenticators=H.235.1,CAT
默认:NA/
选择指定的认证服务器来进行终端认证。默认选项是:H.235.1(HMAC、SHA1、旧的H235AnnexD),MD5(数字摘要认证)和CAT(Cisco Access Tokens ie RADIUS)。如果该选项被忽略,所有认证服务将会按默认来进行加载。如果你使用了认证插件,那么你就可以禁用默认认证服务,使用更适合的安全认证。注意:H.235.1需要带OpenSSL的GnuGk。
4.5 [GkStatus::Auth]
定义一系列允许连接状态端口的规则。任何人一旦连接到状态端口就能够完全控制网守。请确保设置正确。
l rule=allow
默认:forbid
可能的值是:
forbid - 不允许任何连接。
allow - 允许任何连接
explicit - 读取参数IP=值,IP是客户端的IP地址,值为0、1或者allow、forbid或者yes、no。如果没有参数列表,则使用参数default 。
regex - 匹配客户端IP的正则表达式。
例如:允许来自195.71.129.0/24和195.71.131.0/24的客户端:
regex=^195\.71\.(129|131)\.[0-9]+$
password - 用户使用正确的用户名和密码来登录. 用户名和密码的格式和 [SimplePasswordAuth]一样。
此外,这些规则可以使用"|" 或 "&"来组合。例如:
rule=explicit | regex
客户端IP地址必须符合explicit 或regex规则。
rule=regex & password
客户端IP地址必须符号regex规则,并且使用用户名和密码进行登录。
l default=allow
默认:forbid
仅在rule=explicit的时候有效。
l Shutdown=forbid
默认:allow
是否允许通过状态端口关闭网守。
l DelayReject=5
默认:0
通过状态端口登录时,输入无效的用户名/密码之后延长时间,单位是秒。
4.5 [GkStatus::Filtering]
具体请参考13.4 对状态端口进行过滤。
4.6 [LogFile]
该选项定义了跟日志相关的参数。现在,你可以设定日志的回滚选项。
l Rotate=Hourly | Daily | Weekly | Monthly
默认:N/A
如果设置了该项,日志会根据此进行回滚。Hourly使得日志每小时回滚一次,daily - 每天一次,weekly - 每周一次,monthly - 每月一次。除此之外,还可以通过设置RotateDay和RotateTime来指定精确的回滚时间。回滚期间,现存日志会被重命名为当前文件名.YYYYMMDD-HHMMSS,YYYYMMDD-HHMMSS是当时的时间戳。新的日志会记录在一个空的文件当中。不设置Rotate或者将其设为0均可以将此功能禁用。
示例1 - 每小时回滚一次()00:45,01:45,...,23:45):
[LogFile]
Rotate=Hourly
RotateTime=45
示例2- 在每天的23点回滚:
[LogFile]
Rotate=Daily
RotateTime=23:00
示例3 - 每周日00:59回滚:
[LogFile]
Rotate=Weekly
RotateDay=Sun
RotateTime=00:59
示例4 - 每个月的最后一天回滚:
[LogFile]
Rotate=Monthly
RotateDay=31
RotateTime=23:00