kamailio NAT后配置公网IP

工作中比较常用的SIP服务器是kamailio,为何用kamailio,是因为简单方便,尤其是在Ubuntu下使用的时候,一条命令就能搞定。

sudo apt install -y kamailio

默认安装后的配置,就可以不用添加任何装好,无密码认证注册,对于VOIP相关的开发来说,非常的省事,可以去做更多关注的事情。但是最近遇到一个情况。大体情况是这样的,我用vmware安装了一台虚拟机,由于工作环境缘故,没有更多的可分配IP,因此我虚拟机里面就设置了NAT上网的形式,也就是说我整台的虚拟机都在NAT后。

这就出现一种情况了,我需要注册到我这台虚拟机的kamailio上,肯定是注册失败的,因此kamailio并不知道自己的“公网IP”。因此需要对kamailio的配置做个修订。

vim /etc/kamailio/kamailio.cfg

修改的是这个配置,特地确认了下,默认Ubuntu/CentOS都是使用的这个配置文件。打开后,搜索listen,可以看到默认配置是注释掉的,并且相关注释如下:

/* uncomment and configure the following line if you want Kamailio to
   bind on a specific interface/port/proto (default bind on all available) */
#listen=udp:10.0.0.10:5060

默认是监听所有IP上的5060端口。如果要告知kamailio其公网IP是多少,可以这样配置:

/* uncomment and configure the following line if you want Kamailio to
 * bind on a specific interface/port/proto (default bind on all available) */
# listen=udp:10.0.0.10:5060
listen=0.0.0.0:5060 advertise 192.168.66.211:5060
listen=0.0.0.0:5060 advertise 192.168.78.211:5060
listen=0.0.0.0:5060 advertise 192.168.88.211:5060

由于我自己宿主机的IP比较多,我又想要这些IP都可以正常注册上去,好在其是支持多实例配置的,我这边配置也是监听全0,并且没有细分UDP/TCP,也就是都可以正常注册上来,格式如下:

listen=udp:PRIVATEIP:5060 advertise PUBLICIP:5060

重启下kamailio的系统服务,就可以生效了!

sudo systemctl restart kamailio.servic

这样我就可以愉快的把在NAT后的虚拟机里面的kamailio用起来了!

转载请注明: 转载自elkPi.com

本文链接地址: kamailio NAT后配置公网IP

2 Comments

  1. 小狼
    2018年10月27日

    大神你用的什么版本的kamailio,我的用NAT后照你的修改了下cfg文件但还是报错了
    Oct 27 10:41:21 iZ25advxmeoZ kamailio: INFO: [tcp_main.c:4836]: init_tcp(): init_tcp: using epoll_lt as the io watch method (auto detected)
    Oct 27 10:41:21 iZ25advxmeoZ ./kamailio[2064]: INFO: rr [../outbound/api.h:54]: ob_load_api(): Failed to import bind_ob
    Oct 27 10:41:21 iZ25advxmeoZ ./kamailio[2064]: INFO: rr [rr_mod.c:159]: mod_init(): outbound module not available
    Oct 27 10:41:21 iZ25advxmeoZ ./kamailio[2064]: INFO: usrloc [hslot.c:53]: ul_init_locks(): locks array size 512
    Oct 27 10:41:21 iZ25advxmeoZ ./kamailio[2064]: INFO: auth [auth_mod.c:350]: mod_init(): auth: qop set, but nonce-count (nc_enabled) support disabled
    Oct 27 10:41:22 iZ25advxmeoZ ./kamailio[2064]: ERROR: domain [domain.c:460]: reload_tables(): did at row is empty string
    Oct 27 10:41:22 iZ25advxmeoZ ./kamailio[2064]: CRITICAL: domain [domain_mod.c:266]: mod_init(): domain reload failed
    Oct 27 10:41:22 iZ25advxmeoZ ./kamailio[2064]: ERROR: [sr_module.c:970]: init_mod(): init_mod(): Error while initializing module domain (/opt/kamailio/lib64/kamailio/modules/domain.so)

    回复
    1. 米鹿π
      2018年10月28日

      ubuntu 18.04自带的版本,apt install 安装的。版本号是5.1.2

      回复

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注

Scroll to top