Kamailio

出自 高山 Linux

Kamailio (前身 OpenSER) 是一个在 GPL 许可下发布的开源 SIP 服务器,能够处理每秒数千次的呼叫建立。 其功能包括:异步 TCP、UDP 和 SCTP,通过 TLS 进行 VoIP(语音、视频)安全通信,SIMPLE 即时消息和在线状态,ENUM,最低成本路由,负载均衡,路由故障转移,计费,针对 MySQL、Postgres、Oracle、Radius、LDAP 的身份验证和授权,XMLRPC 控制接口,SNMP 监控。 它可以用于构建大型 VoIP 服务平台,或扩展 SIP 到 PSTN 网关、PBX 系统或媒体服务器,如 Asterisk、FreeSWITCH 或 SEMS。

本文档将是一个快速的复制/粘贴指南,用于在高山 Linux 3.3 上设置 Kamailio 4.3.4,并假设您已经安装了高山 Linux 基础系统。

升级安装

apk upgrade -U

安装 Postgresql

apk add postgresql postgresql-client

  • 设置 postgresql

rc-service postgresql setup

将日志信息定向到 syslog

默认行为是将活动记录到 postmaster.log,但不进行轮换。 这可能导致大型日志文件填满 ramdisk。 编辑 postgresql.conf 文件以启用将日志信息发送到 syslog(日志将出现在 /var/log/messages 中,该文件会被轮换,较旧的日志会自动删除)。

以下命令将正确更新文件。

sed "/^[# ]*log_destination/clog_destination = 'syslog'" -i /var/lib/postgresql/9.0/data/postgresql.conf

启动 postgresql 并启用自动启动

rc-service postgresql start rc-update add postgresql

创建文件以便 Kamailio 在启动时 pg-restore 后启动

echo 'rc_after=pg-restore' > /etc/conf.d/kamailio

安装 SIP 路由器 (Kamailio)

安装 Kamailio

apk add kamailio kamailio-presence kamailio-postgres kamailio-json

Kamailio 配置

编辑 kamctlrc 文件 - 取消注释和/或更改以下变量。 请注意,在您的生产环境中,建议自定义用户名和密码(应尽可能避免使用下面使用的默认值)以增加安全性。

sed "/^[# ]*SIP_DOMAIN/cSIP_DOMAIN=sip.<DOMAIN>.net" -i /etc/kamailio/kamctlrc sed '/^[# ]*DBENGINE/cDBENGINE=PGSQL' -i /etc/kamailio/kamctlrc sed '/^[# ]*DBHOST/cDBHOST=localhost' -i /etc/kamailio/kamctlrc sed '/^[# ]*DBNAME/cDBNAME=openser' -i /etc/kamailio/kamctlrc sed '/^[# ]*DBRWUSER/cDBRWUSER=openser' -i /etc/kamailio/kamctlrc sed '/^[# ]*DBRWPW/cDBRWPW="openser"' -i /etc/kamailio/kamctlrc sed '/^[# ]*DBROUSER/cDBROUSER=openserro' -i /etc/kamailio/kamctlrc sed '/^[# ]*DBROPW/cDBROPW=openserro' -i /etc/kamailio/kamctlrc sed '/^[# ]*DBROOTUSER/cDBROOTUSER="postgres" ' -i /etc/kamailio/kamctlrc

创建 Kamailio 数据库

echo postgres > /root/.pgpass chmod 600 /root/.pgpass kamdbctl create openser

启动 Kamailio 并设置开机自动启动

rc-service kamailio start rc-update add kamailio echo 'rc_after=postgresql' >> /etc/conf.d/kamailio

创建一些 SIP 路由器用户(分机)

注意: 您可以使用此命令添加任意数量的分机:kamctl extension 和 password。

示例

kamctl add 5000 5000 kamctl add 5001 5001

Xlite(或其他基于软件的 IP 电话)可以用于此初步测试。 您可以使用帐户 "5000" 和密码 "5000" 注册一个软电话或 sip 电话,使用 SIP 路由器 aip 作为 "domain",并使用另一个帐户 "5001" 互相呼叫。