Core Cookbook 核心配置手册
版本: Kamailio SIP 服务器 v6.0.x (稳定版)
概述
本教程收集了 Kamailio 核心导出到配置文件的功能和参数。
注意: 本页参数未按字母顺序排列。
结构
kamailio.cfg
的结构可分为三部分:
- 全局参数
- 模块设置
- 路由块
建议按此顺序排列以保持清晰和易于维护,但部分内容可混合使用。
全局参数部分
这是配置文件的第一部分,包含 Kamailio 核心参数及自定义全局参数。
通常形式为 name=value
,若名称不匹配核心参数,Kamailio 将启动失败并报错。
示例:
log_facility=LOG_LOCAL0
children=4
disable_tcp=yes
alias="sip.mydomain.com"
listen=udp:10.0.0.10:5060
模块设置部分
第二部分包含加载模块和设置模块参数的指令,主要使用 loadmodule
和 modparam
。
示例:
loadmodule "debugger.so"
...
modparam("debugger", "cfgtrace", 1)
路由块部分
最后部分包含处理 SIP 流量的路由逻辑。
唯一必需的路由块是 request_route
,用于决策 SIP 请求的路由。
示例:
request_route {
# 每个请求的初始检查
route(REQINIT);
...
}
branch_route[MANAGE_BRANCH] {
xdbg("新分支 [$T_branch_idx] 到 $ru\n");
route(NATMANAGE);
}
通用元素
注释
- 行注释以
#
或//
开头。 - 块注释以
/*
开始,以*/
结束。
示例:
# 这是行注释
// 另一种行注释
/* 这是
块注释 */
配置预处理器指令
include_file
包含文件内容到配置中,路径可为相对或绝对路径。
示例:
include_file "/etc/kamailio/checks.cfg"
define
控制配置文件的执行部分,类似 C 语言的宏定义。
示例:
#!define TESTBED_MODE
#!ifdef TESTBED_MODE
debug=5
#!else
debug=2
#!endif
核心关键字
af
: 地址族 (IPv4/IPv6)method
: SIP 方法 (如 INVITE, REGISTER)proto
: 传输协议 (UDP, TCP, TLS)uri
: 请求 URImyself
: 本地域名列表
示例:
if (method == "INVITE") {
log("这是 INVITE 请求\n");
}
核心参数
网络与进程
listen
: 监听地址和协议 (如udp:10.0.0.10:5060
)children
: UDP 子进程数disable_tcp
: 禁用 TCPlog_stderror
: 输出日志到标准错误
示例:
listen=udp:10.0.0.10:5060 advertise "sip.dns.example.com":5060
children=16
内存与性能
shm_mem_size
: 共享内存大小 (MB)memlog
: 内存日志级别
示例:
shm_mem_size=256
memlog=3
DNS 参数
use_dns_cache
: 启用 DNS 缓存dns_retr_time
: DNS 重试时间dns_try_ipv6
: 启用 IPv6 DNS 查询
示例:
use_dns_cache=yes
dns_retr_time=3
路由块类型
- request_route: 处理所有 SIP 请求
- branch_route: 处理每个请求分支
- failure_route: 处理事务失败
- reply_route: 处理 SIP 响应
- event_route: 处理特定事件
示例:
request_route {
if (is_method("OPTIONS")) {
sl_send_reply("200", "OK");
exit;
}
}
脚本语句
条件与循环
if-else
: 条件判断switch
: 多分支选择while
: 循环
示例:
if ($ru =~ "sip:.*@kamailio.org") {
log("目标为 kamailio.org 用户\n");
}
switch ($rU) {
case "1001":
log("目标用户 1001\n");
break;
default:
log("未知用户\n");
}
命令行参数
-f
: 指定配置文件-l
: 监听地址-n
: 子进程数-d
: 调试级别
示例:
kamailio -f /etc/kamailio/kamailio.cfg -l udp:0.0.0.0:5060 -d 3
日志引擎
使用 --log-engine=json
输出 JSON 格式日志。
示例:
{ "level": "DEBUG", "module": "core", "message": "收到请求: $rm" }
总结
本手册详细介绍了 Kamailio v6.0.x 的核心配置要素,包括全局参数、模块设置、路由逻辑及脚本语法。正确配置这些参数和路由块,可高效管理 SIP 流量并优化服务器性能。