FreeSWITCH入门到精通系列(二):FreeSWITCH的安装与配置

FreeSWITCH入门到精通系列(二):FreeSWITCH的安装与配置

前言

在上一篇博客中,我们了解了FreeSWITCH的基本概念和特点。本篇文章将详细介绍FreeSWITCH的安装与配置过程,确保您能够顺利搭建一个基础的FreeSWITCH环境,并了解其基本配置。除了使用包管理器安装FreeSWITCH外,我们还会详细讲解如何从源码编译安装FreeSWITCH,以及如何进行并发和连接优化。

FreeSWITCH的安装

FreeSWITCH支持多种操作系统,包括Linux、Windows和macOS。本文将以Ubuntu 20.04为例,详细介绍FreeSWITCH的安装步骤。

1. 使用包管理器安装FreeSWITCH
更新系统

在安装FreeSWITCH之前,首先要确保系统软件包是最新的。打开终端并运行以下命令:

sudo apt update
sudo apt upgrade -y
安装必要的软件包

安装FreeSWITCH需要一些依赖软件包:

sudo apt install -y gnupg2 wget lsb-release
添加FreeSWITCH软件源

将FreeSWITCH的公钥添加到系统,并添加FreeSWITCH的APT源:

wget -O - https://files.freeswitch.org/repo/deb/debian/freeswitch_archive_g0.pub | sudo apt-key add -
echo "deb http://files.freeswitch.org/repo/deb/debian/ $(lsb_release -sc) main" | sudo tee /etc/apt/sources.list.d/freeswitch.list
安装FreeSWITCH

更新APT源并安装FreeSWITCH:

sudo apt update
sudo apt install -y freeswitch-meta-all
启动FreeSWITCH

安装完成后,启动FreeSWITCH并设置为开机自启动:

sudo systemctl start freeswitch
sudo systemctl enable freeswitch
2. 从源码编译安装FreeSWITCH

具体安装方式,参考另外一篇 【freeswitch-1.10.5 安装详细记录】

安装依赖

在安装FreeSWITCH之前,需要安装编译所需的依赖包:

sudo apt update
sudo apt install -y git autoconf automake libtool g++ pkg-config \
                     libssl-dev libpcre3-dev libspeex-dev libspeexdsp-dev \
                     libsqlite3-dev libcurl4-openssl-dev libedit-dev \
                     libldns-dev libopus-dev libsndfile1-dev libtiff5-dev \
                     libjpeg-dev libavformat-dev libswscale-dev libavresample-dev \
                     libx264-dev libmp3lame-dev libshout3-dev libshout-dev \
                     libspandsp-dev libmyodbc libunbound-dev libb64-dev \
                     libvpx-dev libcodec2-dev libunbound-dev \
                     libmariadb-dev-compat libmariadb-dev libtool-bin \
                     yasm nasm libopencore-amrnb-dev libopencore-amrwb-dev \
                     libopenjpeg-dev
下载FreeSWITCH源码

使用git克隆FreeSWITCH的源码到本地:

git clone https://github.com/signalwire/freeswitch.git
cd freeswitch
编译FreeSWITCH

运行以下命令进行编译和安装:

./bootstrap.sh
./configure
make
sudo make install
sudo make sounds-install moh-install
sudo make cd-sounds-install cd-moh-install
安装FreeSWITCH服务脚本
sudo cp debian/freeswitch-init /etc/init.d/freeswitch
sudo chmod +x /etc/init.d/freeswitch
sudo update-rc.d freeswitch defaults
启动FreeSWITCH

启动FreeSWITCH服务:

sudo service freeswitch start

配置FreeSWITCH

FreeSWITCH的配置文件位于/usr/local/freeswitch/conf/目录下。初始配置包括全局配置、SIP配置和拨号计划等。

1. 配置全局变量

编辑/usr/local/freeswitch/conf/vars.xml文件,配置系统的全局变量:

<variables>
  <X-PRE-PROCESS cmd="set" data="domain=$${local_ip_v4}"/>
  <X-PRE-PROCESS cmd="set" data="realm=$${domain}"/>
  <X-PRE-PROCESS cmd="set" data="internal_sip_port=5060"/>
  <X-PRE-PROCESS cmd="set" data="external_sip_port=5080"/>
  <X-PRE-PROCESS cmd="set" data="external_rtp_ip=$${local_ip_v4}"/>
  <X-PRE-PROCESS cmd="set" data="internal_rtp_ip=$${local_ip_v4}"/>
</variables>

这些变量定义了系统的基本网络配置,如SIP端口和RTP IP地址。

2. 配置SIP账号

SIP账号配置文件位于/usr/local/freeswitch/conf/directory/default/目录下。创建或编辑一个SIP账号文件,如1000.xml

<include>
  <user id="1000">
    <params>
      <param name="password" value="1234"/>
    </params>
    <variables>
      <variable name="toll_allow" value="domestic,international,local"/>
      <variable name="accountcode" value="1000"/>
      <variable name="user_context" value="default"/>
      <variable name="effective_caller_id_name" value="Extension 1000"/>
      <variable name="effective_caller_id_number" value="1000"/>
      <variable name="outbound_caller_id_name" value="FreeSWITCH"/>
      <variable name="outbound_caller_id_number" value="0000000000"/>
      <variable name="callgroup" value="techsupport"/>
    </variables>
  </user>
</include>

此文件定义了一个ID为1000的SIP用户,其密码为1234,并设置了一些呼叫变量。

3. 配置拨号计划

拨号计划定义了如何处理呼入和呼出的电话。编辑/usr/local/freeswitch/conf/dialplan/default.xml文件,添加一个简单的拨号计划:

<extension name="HelloWorld">
  <condition field="destination_number" expression="^1000$">
    <action application="answer"/>
    <action application="sleep" data="1000"/>
    <action application="playback" data="ivr/ivr-welcome_to_freeswitch.wav"/>
    <action application="hangup"/>
  </condition>
</extension>

这个拨号计划定义了当拨打1000时,接听电话、等待1秒、播放欢迎语音文件,然后挂断电话。

4. 重载配置

每次修改配置文件后,需要重载FreeSWITCH的配置使其生效:

/usr/local/freeswitch/bin/fs_cli -x "reloadxml"

配置示例:基本呼叫功能

现在,我们将配置一个基本的呼叫功能示例,包括注册SIP设备和进行基本呼叫。

1. 注册SIP设备

确保您已经配置了SIP账号(如上文的1000.xml)。现在,使用软电话(如Zoiper或X-Lite)注册SIP设备。

  1. 打开软电话应用。
  2. 创建一个新的SIP账户,输入以下信息:
    • 账户名称:随意填写
    • SIP服务器:FreeSWITCH服务器的IP地址
    • 用户名:1000
    • 密码:1234
  3. 保存并应用设置。
2. 进行基本呼叫
  1. 在软电话中拨打1000。
  2. FreeSWITCH会接听电话、等待1秒、播放欢迎语音文件,然后挂断电话。

配置FreeSWITCH模块

FreeSWITCH通过模块扩展功能,以下是几个常用模块的配置示例:

1. mod_sofia

mod_sofia是FreeSWITCH的核心SIP模块。其配置文件位于/usr/local/freeswitch/conf/autoload_configs/sofia.conf.xml

默认配置已足够满足基本需求,但可以根据需要进行调整:

<configuration name="sofia.conf" description="sofia Endpoint">
  <global_settings>
    <param name="log-level" value="0"/>
    <param name="debug-presence" value="0"/>
  </global_settings>
  <profiles>
    <profile name="internal">
      <gateways/>
      <domains/>
      <settings>
        <param name="debug" value="0"/>
        <param name="sip-trace" value="no"/>
      </settings>
    </profile>
  </profiles>
</configuration>
2. mod_conference

mod_conference模块用于创建和管理多方会议。配置文件位于/usr/local/freeswitch/conf/autoload_configs/conference.conf.xml

<configuration name="conference.conf" description="Conference Module">
  <settings>
    <param name="caller-controls" value="conf-control"/>
    <param name="energy-level" value="100"/>
    <param name="comfort-noise" value="true"/>
  </

settings>
</configuration>

FreeSWITCH的安全性配置

确保FreeSWITCH的安全性是至关重要的。以下是一些基本的安全配置:

1. 网络安全

使用防火墙限制访问,确保只有信任的IP地址可以访问FreeSWITCH服务:

sudo ufw allow proto tcp from <trusted_ip> to any port 5060
sudo ufw allow proto udp from <trusted_ip> to any port 5060
sudo ufw enable
2. 认证和加密

启用SRTP加密,确保媒体流的安全:

编辑/usr/local/freeswitch/conf/sip_profiles/internal.xml,添加SRTP配置:

<param name="rtp_secure_media" value="optional"/>
<param name="srtp-suite" value="AES_CM_128_HMAC_SHA1_80"/>
3. 禁用不必要的模块

减少攻击面,禁用不必要的模块:

编辑/usr/local/freeswitch/conf/autoload_configs/modules.conf.xml,注释掉不需要的模块:

<!--<load module="mod_some_unused_module"/>-->

并发与连接优化

优化FreeSWITCH的并发和连接处理能力可以显著提高系统的稳定性和性能。以下是一些常见的优化措施:

1. 调整Linux系统参数

编辑/etc/sysctl.conf文件,增加或修改以下参数:

# 增加文件描述符限制
fs.file-max = 100000

# 调整TCP/IP参数
net.core.somaxconn = 1024
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_fin_timeout = 30
net.ipv4.ip_local_port_range = 10000 65000

# 增加网络缓冲区大小
net.core.rmem_max = 16777216
net.core.wmem_max = 16777216
net.ipv4.tcp_rmem = 4096 87380 16777216
net.ipv4.tcp_wmem = 4096 65536 16777216

使这些修改生效:

sudo sysctl -p
2. 增加文件描述符限制

编辑/etc/security/limits.conf文件,增加以下内容:

* soft nofile 100000
* hard nofile 100000

编辑/etc/pam.d/common-session/etc/pam.d/common-session-noninteractive文件,增加以下内容:

session required pam_limits.so
3. 调整FreeSWITCH的并发参数

编辑FreeSWITCH的主配置文件/usr/local/freeswitch/conf/autoload_configs/switch.conf.xml,增加或修改以下参数:

<settings>
  <param name="max-sessions" value="2000"/>
  <param name="sessions-per-second" value="30"/>
  <param name="max-db-handles" value="50"/>
  <param name="db-handle-timeout" value="30"/>
</settings>

优化与性能调优

优化FreeSWITCH的性能,可以提高系统的处理能力和稳定性:

1. 硬件优化
  • 使用高性能的CPU和足够的内存。
  • 配置高效的磁盘I/O,避免性能瓶颈。
2. 网络优化
  • 确保低延迟和高带宽的网络环境。
  • 使用有线连接而非无线连接,确保网络的稳定性。
3. 配置优化
  • 调整SIP和RTP参数,优化内存和线程使用。
  • 使用专用服务器运行FreeSWITCH,避免资源竞争。

结语

在本篇博客中,我们详细介绍了FreeSWITCH的安装与配置,包括基础配置、SIP账号配置、拨号计划配置以及模块和安全配置。通过这些步骤,您应该能够成功搭建一个基础的FreeSWITCH环境,并开始进行简单的呼叫操作。在下一篇博客中,我们将探讨FreeSWITCH的基础概念和架构,进一步FreeSWITCH的整体情况。敬请期待!

如果您有任何问题或建议,请在评论区留言,我将尽快回复。感谢您的阅读!

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

黄宝良

你的鼓励是我不懈努力的动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值