如何修改FusionPBX / Freeswitch的SIP绑定IP地址?

时间:2019-01-29 12:23:20

标签: sip voip freeswitch fusionpbx

我目前在带有PostgreSQL的CentOS 7上运行FusionPBX 4.4。

我用一个IP地址安装了系统,例如192.168.201.201,现在要将系统移至新的IP地址,例如10.65.208.2。可以通过修改/ etc / sysconfig / network-scripts / ifcfg-enoX中的设置来完成此操作,并且我确保可以访问新IP地址。

此后,通过在高级>域下将域从旧值更改为新值来处理特定于域的配置。我无需指定admin@192.168.201.201即可使用新IP地址登录系统。

但是,我当前的问题是我无法使SIP应用程序绑定到新的IP地址。如果我运行 netstat 来检查绑定,则只能找到IPv6地址。

[root@pbx ~]# netstat -an | grep 5060
tcp6       0      0 ::1:5060                :::*                    LISTEN
udp6       0      0 ::1:5060                :::***

如果我打开 fs_cli 并尝试评估存在的变量,则似乎Freeswitch也已注册使用新IP地址。

freeswitch@pbx.local> eval $${local_ip_v4}
10.65.208.2
freeswitch@pbx.local> eval $${external_sip_ip}
10.65.208.2
freeswitch@pbx.local> eval $${external_rtp_ip}
10.65.208.2
freeswitch@pbx.local>

仍然 /var/log/freeswitch/freeswitch.log ,告诉我以下内容(请注意,它试图绑定到旧IP地址,这会导致错误):

2019-01-29 07:06:47.075924 [NOTICE] sofia.c:5949 Started Profile external [sofia_reg_external]
2019-01-29 07:06:47.075924 [DEBUG] sofia.c:3046 Creating agent for external
2019-01-29 07:06:47.075924 [ERR] sofia.c:3146 Error Creating SIP UA for profile: external (sip:mod_sofia@192.168.201.201:5080;maddr=192.168.201.201;transport=udp,tcp) ATTEMPT 1 (RETRY IN 5 SEC)
2019-01-29 07:06:47.075924 [INFO] switch_time.c:1423 Timezone reloaded 530 definitions
2019-01-29 07:06:52.075998 [ERR] sofia.c:3146 Error Creating SIP UA for profile: external (sip:mod_sofia@192.168.201.201:5080;maddr=192.168.201.201;transport=udp,tcp) ATTEMPT 2 (RETRY IN 5 SEC)
2019-01-29 07:06:57.076030 [ERR] sofia.c:3146 Error Creating SIP UA for profile: external (sip:mod_sofia@192.168.201.201:5080;maddr=192.168.201.201;transport=udp,tcp) ATTEMPT 3 (RETRY IN 5 SEC)
2019-01-29 07:06:57.076030 [ERR] sofia.c:3156 Error Creating SIP UA for profile: external (sip:mod_sofia@192.168.201.201:5080;maddr=192.168.201.201;transport=udp,tcp)
The likely causes for this are:
1) Another application is already listening on the specified address.
2) The IP the profile is attempting to bind to is not local to this system.

我只定义了一个网络接口(eno2)。安装期间使用的另一个界面被禁用。

[root@pbx freeswitch]# ifconfig
eno2: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 10.65.208.2  netmask 255.255.254.0  broadcast 10.65.209.255
        inet6 fe80::21a:c7d6:cd98:5e88  prefixlen 64  scopeid 0x20<link>
        ether ac:1f:6b:73:7e:b5  txqueuelen 1000  (Ethernet)
        RX packets 23943  bytes 3534910 (3.3 MiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 71471  bytes 95115547 (90.7 MiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
        device memory 0xf7c00000-f7c7ffff    
lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10<host>
        loop  txqueuelen 1000  (Local Loopback)
        RX packets 166592  bytes 48338476 (46.0 MiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 166592  bytes 48338476 (46.0 MiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

如果我启动eno1接口并将IP地址设置为旧的(192.168.201.201),Freeswitch不会给我任何错误,并且我能够绑定到旧的地址。

freeswitch@pbx.local> sofia status                                                                 
                     Name          Type                                       Data      State      
=================================================================================================  
            external-ipv6       profile                   sip:mod_sofia@[::1]:5080      RUNNING (0)
                 external       profile         sip:mod_sofia@192.168.201.201:5080      RUNNING (0)
            internal-ipv6       profile                   sip:mod_sofia@[::1]:5060      RUNNING (0)
                 internal       profile         sip:mod_sofia@192.168.201.201:5060      RUNNING (0)
=================================================================================================  
4 profiles 0 aliases                                                                               

从netstat中,我们还可以看到freeswitch已开始侦听旧IP地址上的TCP / 5060。

[root@pbx ~]# netstat -an | grep 5060                                     
tcp        0      0 192.168.201.201:5060    0.0.0.0:*               LISTEN
tcp6       0      0 ::1:5060                :::*                    LISTEN
udp        0      0 192.168.201.201:5060    0.0.0.0:*                     
udp6       0      0 ::1:5060                :::*                          

这使我想到了问题;

使用哪个变量进行绑定(即旧的192.168.201.201地址存储在哪里),如何修改它以便FusionPBX / Freeswitch理解要使用的IP地址?

2 个答案:

答案 0 :(得分:1)

您应该能够在高级下改变SIP_PROFILE IP地址>变量,取决于它如何最初安装。

答案 1 :(得分:0)

freeswitch/vars.xml 包含所有变量,如 $${external_rtp_ip} 、 $${external_sip_ip} 、$${local_ip_v4} 。如果您有多个接口,freeswitch 不知道它应该绑定到哪个接口。在您的情况下,您是说它正在侦听旧 IP。在 vars.xml 中手动输入您的本地 ip 地址变量并重新启动 freeswitch。

<X-PRE-PROCESS cmd="set" data="local_ip_v4=<your ip address>"/>  

如果您在 sipprofile 中使用 $${local_ip_v4} 变量,它应该开始监听您的本地 IP 地址。