kamailio中Core Cookbook 核心配置手册

发布于:2025-02-19 ⋅ 阅读:(28) ⋅ 点赞:(0)

Core Cookbook 核心配置手册

版本: Kamailio SIP 服务器 v6.0.x (稳定版)

概述

本教程收集了 Kamailio 核心导出到配置文件的功能和参数。

注意: 本页参数未按字母顺序排列。

结构

kamailio.cfg 的结构可分为三部分:

  1. 全局参数
  2. 模块设置
  3. 路由块

建议按此顺序排列以保持清晰和易于维护,但部分内容可混合使用。


全局参数部分

这是配置文件的第一部分,包含 Kamailio 核心参数及自定义全局参数。
通常形式为 name=value,若名称不匹配核心参数,Kamailio 将启动失败并报错。

示例:

log_facility=LOG_LOCAL0  
children=4  
disable_tcp=yes  
alias="sip.mydomain.com"  
listen=udp:10.0.0.10:5060  

模块设置部分

第二部分包含加载模块和设置模块参数的指令,主要使用 loadmodulemodparam

示例:

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: 请求 URI
  • myself: 本地域名列表

示例:

if (method == "INVITE") {  
    log("这是 INVITE 请求\n");  
}  

核心参数

网络与进程
  • listen: 监听地址和协议 (如 udp:10.0.0.10:5060)
  • children: UDP 子进程数
  • disable_tcp: 禁用 TCP
  • log_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  

路由块类型

  1. request_route: 处理所有 SIP 请求
  2. branch_route: 处理每个请求分支
  3. failure_route: 处理事务失败
  4. reply_route: 处理 SIP 响应
  5. 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 流量并优化服务器性能。


网站公告

今日签到

点亮在社区的每一天
去签到