春节期间找到一篇文章,需要 fg 才能看到:
https://medium.com/@tumalevich/kamailio-registration-replication-without-dmq-65e225f9a8a7
kamailio1 192.168.56.115
kamailio2 192.168.56.116
kamailio3 192.168.56.117
route[HANDLE_REPLICATION] {if(route(FROM_REPLICATION_PEER)) {if(is_method("REGISTER")) {add_rcv_param();msg_apply_changes();if(!save("location", "0x02")) {xlog("L_ERROR", "Replication from $si error");}exit;}if(is_method("INVITE")) {record_route();route(LOCATION);}}
}
route[FROM_REPLICATION_PEER] {if(src_ip == myself) {exit;}if(($si == '192.168.56.115') || ($si == '192.168.56.116') || ($si == '192.168.56.117')) {return 1;}return -1;
}
route[REPLICATE] {forward('192.168.56.115', 5060);forward('192.168.56.116', 5060);forward('192.168.56.117', 5060);
}
修改处理 REGISTER 的路由块:
route[REGISTRAR] {if (!is_method("REGISTER")) return;if(isflagset(FLT_NATS)) {setbflag(FLB_NATB);# do SIP NAT pingingsetbflag(FLB_NATSIPPING);}if (!save("location")) {sl_reply_error();}route(REPLICATE); // 新增exit;
}
修改 request_route 路由块:
request_route {# per request initial checksroute(REQINIT);# NAT detectionroute(NATDETECT);# CANCEL processingif (is_method("CANCEL")) {if (t_check_trans()) {route(RELAY);}exit;}# handle retransmissionsif (!is_method("ACK")) {if(t_precheck_trans()) {t_check_trans();exit;}t_check_trans();}# handle requests within SIP dialogsroute(WITHINDLG);### only initial requests (no To tag)route(HANDLE_REPLICATION); // 新增# authenticationroute(AUTH);...