在多个网络中使用 kamailio sip 服务器,无法正常工作
Use kamailio sip server with more than one network, is not working
我需要配置 kamailio 以在不同网络和互联网上工作。我尝试了很多配置,但 none 有效。
我按照 link 所示配置了 kamailio!但不起作用,我查看了 tcp 转储:
>>14:49:20.328121 IP 192.168.10.8.sip > 187.95.131.xxx.sip: SIP: REGISTER sip:187.95.131.166 SIP/2.0
>>14:49:24.331926 IP 192.168.10.8.sip > 187.95.131.xxx.sip: SIP: REGISTER sip:187.95.131.xxx SIP/2.0
kamailio 不响应客户端。
kamailio的配置是:
>> WITH_MYSQL
>> WITH_AUTH
>> WITH_USRLOCDB
>> WITH_NAT
>>...
>>alias=187.95.131.xxx:5060
>>...
一切都像 link 所说的那样。
当 kamailio 调用时,rtpproxy 是 运行:
>>13:39:35 firewall /usr/sbin/kamailio[15886]: INFO: rtpproxy [rtpproxy.c:1598]: rtpp_test(): rtp proxy <unix:/var/run/rtpproxy/rtpproxy.sock> found, support for it enabled
我的网络设置是:
互联网 <---->(带 kamailio 的防火墙)<---->(LAN0、LAN1、LAN2)
LAN0 = 192.168.2.0/24
LAN1 = 192.168.3.0/24
LAN3 = 192.168.10.0/24
局域网不与其他人交谈。 (防火墙规则除外)
如果将 kamailio 设置为绑定所有 lan 接口,则 voip 仅在呼叫者与接收者位于同一 lan 上时才有效,但在不同的 lan 中或通过互联网,sip 注册但没有语音。
对于测试,所有 incoming/outcoming 互联网接口上的 udp 连接以及局域网和互联网接口之间的所有 udp 转发都被接受。
已解决!
转发(带伪装)规则在 kamailio 上效果不佳,我被迫将 kamailio 配置为绑定所有接口,而不是将内部数据包重定向到外部接口。但只是为了确保,在没有 rtpproxy 的 sussesfull 测试之后,我用 opensips 替换了 kamailio,这个比 kamailio 有更好的记录。
rtpproxy 配置为侦听本地主机而不是套接字文件。
基本上 opensips.cfg 的设置如下所示:
auto_aliases=no
listen=udp:EXTERNAL_IP:5060
...
modparam("nathelper", "sipping_from", "sip:pinger@EXTERNAL_IP")
...
loadmodule "rtpproxy.so"
modparam("rtpproxy", "rtpproxy_sock", "udp:localhost:12221")
*值得注意的是,即使将 opensips 配置为仅侦听外部 IP,它也会侦听其他接口。
rtpproxy 是用以下参数启动的:
rtpproxy -l EXTERNAL_IP -s udp:127.0.0.1:12221 -u rtpproxy rtpproxy
rtpproxy opensips 启动后。
最后,在 tcpdump 的帮助下进行了一些测试,显示 rtpproxy 使用 30000 - 65000 的端口范围强制语音数据包通过 opensips 服务器,然后实施了以下防火墙规则:
iptables -A INPUT -p udp -m udp --dport 5060:5070 -j ACCEPT
iptables -A OUTPUT -p udp -m udp --sport 5060:5070 -j ACCEPT
iptables -A INPUT -p udp -m udp --dport 30000:65000 -j ACCEPT
iptables -A OUTPUT -p udp -m udp --sport 30000:65000 -j ACCEPT
我需要配置 kamailio 以在不同网络和互联网上工作。我尝试了很多配置,但 none 有效。
我按照 link 所示配置了 kamailio!但不起作用,我查看了 tcp 转储:
>>14:49:20.328121 IP 192.168.10.8.sip > 187.95.131.xxx.sip: SIP: REGISTER sip:187.95.131.166 SIP/2.0
>>14:49:24.331926 IP 192.168.10.8.sip > 187.95.131.xxx.sip: SIP: REGISTER sip:187.95.131.xxx SIP/2.0
kamailio 不响应客户端。
kamailio的配置是:
>> WITH_MYSQL
>> WITH_AUTH
>> WITH_USRLOCDB
>> WITH_NAT
>>...
>>alias=187.95.131.xxx:5060
>>...
一切都像 link 所说的那样。
当 kamailio 调用时,rtpproxy 是 运行:
>>13:39:35 firewall /usr/sbin/kamailio[15886]: INFO: rtpproxy [rtpproxy.c:1598]: rtpp_test(): rtp proxy <unix:/var/run/rtpproxy/rtpproxy.sock> found, support for it enabled
我的网络设置是:
互联网 <---->(带 kamailio 的防火墙)<---->(LAN0、LAN1、LAN2)
LAN0 = 192.168.2.0/24
LAN1 = 192.168.3.0/24
LAN3 = 192.168.10.0/24
局域网不与其他人交谈。 (防火墙规则除外)
如果将 kamailio 设置为绑定所有 lan 接口,则 voip 仅在呼叫者与接收者位于同一 lan 上时才有效,但在不同的 lan 中或通过互联网,sip 注册但没有语音。
对于测试,所有 incoming/outcoming 互联网接口上的 udp 连接以及局域网和互联网接口之间的所有 udp 转发都被接受。
已解决!
转发(带伪装)规则在 kamailio 上效果不佳,我被迫将 kamailio 配置为绑定所有接口,而不是将内部数据包重定向到外部接口。但只是为了确保,在没有 rtpproxy 的 sussesfull 测试之后,我用 opensips 替换了 kamailio,这个比 kamailio 有更好的记录。
rtpproxy 配置为侦听本地主机而不是套接字文件。
基本上 opensips.cfg 的设置如下所示:
auto_aliases=no
listen=udp:EXTERNAL_IP:5060
...
modparam("nathelper", "sipping_from", "sip:pinger@EXTERNAL_IP")
...
loadmodule "rtpproxy.so"
modparam("rtpproxy", "rtpproxy_sock", "udp:localhost:12221")
*值得注意的是,即使将 opensips 配置为仅侦听外部 IP,它也会侦听其他接口。
rtpproxy 是用以下参数启动的:
rtpproxy -l EXTERNAL_IP -s udp:127.0.0.1:12221 -u rtpproxy rtpproxy
rtpproxy opensips 启动后。
最后,在 tcpdump 的帮助下进行了一些测试,显示 rtpproxy 使用 30000 - 65000 的端口范围强制语音数据包通过 opensips 服务器,然后实施了以下防火墙规则:
iptables -A INPUT -p udp -m udp --dport 5060:5070 -j ACCEPT
iptables -A OUTPUT -p udp -m udp --sport 5060:5070 -j ACCEPT
iptables -A INPUT -p udp -m udp --dport 30000:65000 -j ACCEPT
iptables -A OUTPUT -p udp -m udp --sport 30000:65000 -j ACCEPT