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