Добрый день. Ковырять Asterisk стало скучно и задумался на тему построения полноценного кластера. В роли SBC выбрал Opensips. У меня получилось его настроить на проксирование в сторону астериска, но проблема том, что opensips не проксирует ответы обратно клиенту. Как только я не пытался решить эту проблему, ничего не выходит. В трассировке все в порядке, в логах я вижу: DBG:tm:t_lookup_request: no transaction found DBG:sipmsgops:has_totag: no totag
Мой конфиг:
route {
if (!mf_process_maxfwd_header(10)) {
sl_send_reply(483, "Too Many Hops");
exit;
}
if ( is_method("CANCEL") ) {
if ( t_check_trans() )
t_relay();
exit;
}
if (is_method("OPTIONS")) {
sl_send_reply(200, "OK");
exit;
}
record_route();
# Initial INVITE processing
if (is_method("INVITE") && !has_totag()) {
route(INVITE);
}
if (is_method("REGISTER")) {
route(REGISTER);
}
if (!lookup("location")) {
send_reply(404, "Not Found");
exit;
}
if (loose_route()) {
route(relay);
exit;
}
t_check_trans();
route(relay);
}
route[REGISTER] {
if (is_method("REGISTER")) {
if (!www_authorize("", "subscriber")) {
www_challenge("", "auth");
exit;
}
if (!save("location")) {
sl_reply_error();
}
exit;
}
exit;
}
route[relay] {
if(!t_relay()){
send_reply(500,"Server Error");
}
exit;
}
route[INVITE] {
if (!has_totag()) {
xlog("INVITE from $fu to $ru - proxying to Asterisk\n");
$du = "sip:1.1.1.1:5060";
t_on_branch("BRANCH_OPS");
t_on_reply("REPLY_OPS");
t_on_failure("FAIL_OPS");
force_rport();
fix_nated_register();
# NAT handling
if (nat_uac_test(19)) {
fix_nated_contact();
}
# Record-Route
record_route();
if (!t_relay() && t_newtran()) {
sl_reply_error();
}
exit;
}
}
branch_route[BRANCH_OPS] {
xlog("Proxying call to Asterisk branch: $ru\n");
}
onreply_route[REPLY_OPS] {
xlog("Received $rs reply from Asterisk\n");
}
failure_route[FAIL_OPS] {
xlog("Call failed with status $rc\n");
if (t_was_cancelled()) {
xlog("Call was cancelled\n");
}
}
route[handle_response] {
xlog("Response $rs code received\n");
}
Пока что я просто пытаюсь настроить проксирование, без проверки регистрации