Centos7 公网安装freeswitch1.10.2 阿里,腾讯,华为等云服务器均因nat失败

一. FS NAT穿透问题

团队自己写的WebRtc网页,用来做呼叫中心。私有网络: 怎么都能通。公网: 软电话经过nat穿透可以通话,但是webRtC网页端不可以,原因: sip拨号成功,但所有RTP包都发给了云的私网地址,通不了。而后,再看SDP,服务器发过来的就是私网地址, 网上基本都是说设置ext-rtp-ip和ext-sip-ip为公网地址就可以,还有其他各种配置文件, 但没有效果!
只能剑走偏锋, 技术搞不定,寻找硬件。条件缺一不可:
1.有公网IP
2.公网IP与私网IP必须为同一个
3.具备和私网相同的环境

二.云服务器寻找

市面上主流的云服务都试过了,无一例外都失败了,还克了许多金,心疼.到此不得不夸一下三丰云厂商.(跳转链接)免费试用,关键是满足以上需求,牛。服务器找到了开干!
Centos7 公网安装freeswitch1.10.2 阿里,腾讯,华为等云服务器均因nat失败_第1张图片

三.搭建FS

1. 环境要求
操作系统:64位的centos7.9  (厂商最高提供7.6,需要手动update)
Freeswitch版本:freeswitch1.10.2
检查网络的连通性:能正常访问外网(ping www.baidu.com)
2.依赖包
x264
libks
signalwire-c
libav

可在官网下载,这里我提供所有的依赖包: 点击下载

3.关闭防火墙相关操作

CentOS7防火墙设置,关闭SELinux和端口相关操作

4.安装依赖

安装noarch

cd /usr/local/src/ 
wget http://files.freeswitch.org/freeswitch-release-1-6.noarch.rpm
yum install -y freeswitch-release-1-6.noarch.rpm	 

处理安装源

cd /etc/yum.repos.d/
rm -rf freeswitch*
yum clean all 
yum makecache 
yum -y update

安装依赖

yum install -y libatomic
yum install -y git alsa-lib-devel autoconf automake bison broadvoice-devel bzip2 curl-devel libdb4-devel e2fsprogs-devel erlang flite-devel g722_1-devel gcc-c++ gdbm-devel gnutls-devel ilbc2-devel ldns-devel libcodec2-devel libcurl-devel libedit-devel libidn-devel libjpeg-devel libmemcached-devel libogg-devel libsilk-devel libsndfile-devel libtheora-devel libtiff-devel libtool libuuid-devel libvorbis-devel libxml2-devel lua-devel lzo-devel mongo-c-driver-devel ncurses-devel net-snmp-devel openssl-devel opus-devel pcre-devel perl perl-ExtUtils-Embed pkgconfig portaudio-devel postgresql-devel python-devel python-devel soundtouch-devel speex-devel sqlite-devel unbound-devel unixODBC-devel wget which yasm zlib-devel libshout-devel libmpg123-devel lame-devel

安装cmake 点击下载

yum remove cmake
wget https://cmake.org/files/v3.14/cmake-3.14.0.tar.gz
tar -zxvf cmake-3.14.0.tar.gz
cd cmake-3.14.0
./configure
make && make install

安装libks 点击下载

cd /usr/local/src/
git clone https://github.com/signalwire/libks.git
cd libks
cmake .
make
make install

安装signalwire-c 点击下载

 cd /usr/local/src/
 git clone https://github.com/signalwire/signalwire-c.git
 cd signalwire-c/
 cmake .
 make
 make install
 ln -sf /usr/local/lib64/pkgconfig/signalwire_client.pc /usr/lib64/pkgconfig/signalwire_client.pc

安装x264 点击下载

cd /usr/local/src/
git clone http://git.videolan.org/git/x264.git
cd x264
./configure  --disable-asm
make && make install   

安装mod_av 点击下载

 cd /usr/local/src/
 wget http://download1.rpmfusion.org/free/el/updates/7/x86_64/x/x264-libs-0.148-24.20170521gitaaa9aa8.el7.x86_64.rpm
 wget http://download1.rpmfusion.org/free/el/updates/7/x86_64/x/x264-devel-0.148-24.20170521gitaaa9aa8.el7.x86_64.rpm
 rpm -hiv x264-libs-0.148-24.20170521gitaaa9aa8.el7.x86_64.rpm
 rpm -hiv x264-devel-0.148-24.20170521gitaaa9aa8.el7.x86_64.rpm

安装 libpng 点击下载

 git clone https://freeswitch.org/stash/scm/sd/libpng.git
 cd libpng
./configure
make && make install
cp /usr/local/lib/pkgconfig/libpng* /usr/lib64/pkgconfig/

安装libav 点击下载

cd /usr/local/src/
git clone https://gitee.com/nwaycn/libav.git
cd libav
./configure --enable-pic --enable-shared  --enable-libx264 --enable-gpl --extra-libs="-ldl"
make && make install
cp /usr/local/lib/pkgconfig/libavcodec.pc    /usr/lib64/pkgconfig/
cp /usr/local/lib/pkgconfig/libavdevice.pc   /usr/lib64/pkgconfig/
cp /usr/local/lib/pkgconfig/libavfilter.pc   /usr/lib64/pkgconfig/
cp /usr/local/lib/pkgconfig/libavformat.pc   /usr/lib64/pkgconfig/
cp /usr/local/lib/pkgconfig/libavresample.pc /usr/lib64/pkgconfig/
cp /usr/local/lib/pkgconfig/libavutil.pc     /usr/lib64/pkgconfig/
cp /usr/local/lib/pkgconfig/libswscale.pc    /usr/lib64/pkgconfig/

重新安装opus 点击下载

git clone https://freeswitch.org/stash/scm/sd/opus.git
cd opus
./autogen.sh 
./configure --libdir=/home/opp/pjsiprel/lib/
make && make install

安装sofia-sip 点击下载

git clone https://github.com/freeswitch/sofia-sip
cd sofia-sip
./bootstrap.sh
./configure
make && make install

安装spandsp 点击下载

git clone https://github.com/freeswitch/spandsp
cd spandsp
./bootstrap.sh
./configure
make && make install
export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig

安装libopus-devel rmp包 点击下载

vim /etc/yum.repos.d/linuxtech.repo
[linuxtech]
name=LinuxTECH
baseurl=http://pkgrepo.linuxtech.net/el6/release/
enabled=1
gpgcheck=1
gpgkey=http://pkgrepo.linuxtech.net/el6/release/RPM-GPG-KEY-LinuxTECH.NET

# 创建仓库,重新安装
 yum install libopus-devel

安装Freeswitch 点击下载

cd /usr/local/src/ 
wget http://files.freeswitch.org/freeswitch-1.10.2.-release.tar.gz
tar vzxf freeswitch-1.10.2.-release.tar.gz
cd freeswitch-1.10.2.-release
./configure 
make && make install  #编译时间很长
ln -sf /usr/local/freeswitch/bin/freeswitch /usr/bin/
ln -sf /usr/local/freeswitch/bin/fs_cli /usr/bin/
# 如有依赖报错,缺什么安装什么

FS 基本操作命令

# 后台启动freeswitch服务
freeswitch -nc -rp
freeswitch -nonat -nc -rp  //不检查路由穿透行,加上此参数后会启动很快
freeswitch -stop
fs_cli
# freeswitch -help
	-help                  -- 显示本帮助信息
	-version               -- 显示版本信息
	-rp                    -- 开启高优先级(实时)设置
	
	-nosql                 -- 不使用SQL,show channels 类的命令将不能显示结果
	-nonat                 -- 如果路由器支持uPnP或NAT-PMP,则FreeSWITCH可以自动解决NAT穿越问题。如果路由器不支持,则该选项可以使启动更快
	
	-stop                  -- 关闭 FreeSWITCH,它会在run目录中查找 PID文件
	-nc                    -- 启动到后台模式,没有控制台

你可能感兴趣的:([linux操作系统笔记],服务器,阿里云,腾讯云,freeswitch,fs)