VoIP通话-基于SIP协议的Asterisk(一)-实现流程

news2024/11/19 7:33:21

文章首发及后续更新:https://mwhls.top/4122.html,无图/无目录/格式错误/更多相关请至首发页查看。
新的更新内容请到mwhls.top查看。
欢迎提出任何疑问及批评,非常感谢!

VoIP通话-基于SIP协议的Asterisk

该篇仅包含实现流程,各步骤的原因见该系列后续文章。

目录
项目说明
项目内容
项目目标
项目成果
Ubuntu 22.04 安装于 WSL
说明
下载与安装
进入与退出
报错
换 163 源
GCC 安装
Asterisk 安装
配置 sip.conf
配置 extensions.conf
WSL 端口映射
重启并检查
IP 电话安装
ZoiPer
Linphone
IP 通话
账户添加
信息汇总
通话

项目说明

项目内容

  • 基于 Linux 编译并搭建 oSIP 系统并通过 IP 电话通信测试

项目目标

  • 在 Linux 中编译安装 oSIP 或 eXosip。
  • 安装 mysql。
  • 使用 IP 电话通信测试。

项目成果

  • 于 Windows 子系统(WSL)的 Ubuntu22.04 中安装 Asterisk 作为 SIP 服务器,并于 Windows 中使用 ZoiPer 与 Linphone 相互通信。

Ubuntu 22.04 安装于 WSL

说明

  • WSL 即 Windows Subsystem for Linux,微软开发的安装于 Windows 中的 Linux 系统。
  • WSL 可以安装桌面,但我这里用不到,所以没安装。

下载与安装

  • 微软商店下载:https://www.microsoft.com/store/apps/9PN20MSR04DW

进入与退出

  • 命令行输入 wsl 进入 WSL。
  • exit 退出至 Windows 环境。

报错

  • 参考的对象类型不支持尝试的操作。
    • 卸载小黑盒加速器。
  • 安装其中一个文件系统时出现错误。有关详细信息,请运行'dmesg'。
    • 网上说 wsl --update 然后 wsl --shutdown 即可,但我没成功。
    • 我用 Tabby 里的 WSL 运行起来了,它似乎是运行了 C:\Windows\system32\wsl.exe 文件。

换 163 源

  • 参考:https://blog.csdn.net/xiangxianghehe/article/details/122856771
  • 说明:使用 163 的源,阿里源和清华源在我这里没效。
  • 执行:
    • cd /etc/apt
    • sudo vim s,按 a 进入输入模式,粘贴下载源,按 esc 进入模式选择,输入冒号,输入 wq 保存退出。
    • sudo cp sources.list sources.list.bak,备份下载源
    • sudo mv s sources.list,覆盖下载源,一个个删不如覆盖来的快。
  • 更新 apt
    • sudo apt update
    • sudo apt upgrade
deb http://mirrors.163.com/ubuntu/ jammy main restricted universe multiverse
deb http://mirrors.163.com/ubuntu/ jammy-security main restricted universe multiverse
deb http://mirrors.163.com/ubuntu/ jammy-updates main restricted universe multiverse
deb http://mirrors.163.com/ubuntu/ jammy-proposed main restricted universe multiverse
deb http://mirrors.163.com/ubuntu/ jammy-backports main restricted universe multiverse
deb-src http://mirrors.163.com/ubuntu/ jammy main restricted universe multiverse
deb-src http://mirrors.163.com/ubuntu/ jammy-security main restricted universe multiverse
deb-src http://mirrors.163.com/ubuntu/ jammy-updates main restricted universe multiverse
deb-src http://mirrors.163.com/ubuntu/ jammy-proposed main restricted universe multiverse
deb-src http://mirrors.163.com/ubuntu/ jammy-backports main restricted universe multiverse

GCC 安装

  • 说明:或许不安装也行。
  • 参考:https://blog.csdn.net/wjl18270365476/article/details/122659969
  • 安装:sudo apt install build-essential

Asterisk 安装

  • 参考:
    • 自己动手搭建免费VoIP服务器
    • 官方教程:http://www.asterisk.org.cn/asterisk-cn-doc/doc/295240.html
  • 安装:
  • sudo apt install asterisk
  • 备份配置文件:
    • sudo cp /etc/asterisk/sip.conf /etc/asterisk/sip.conf.backup
    • sudo cp /etc/asterisk/extensions.conf /etc/asterisk/extensions.conf.backup

配置 sip.conf

  • sudo vim /etc/asterisk/sip.conf
  • 说明:这里和参考的那篇不同,因为我看到后面有重复设置,为了避免被后面设置项覆盖,我选择修改后增加内容,而非博主的直接增加。
  • 修改
    • context=default
    • tcpenable = yes
  • 添加
[general]
bindport = 5060
bindaddr = 0.0.0.0
tcpbindaddr = 0.0.0.0

[1001]
type = friend
username = 1001
secret=1001
host=dynamic
disallow = all
allow = ulaw
transport = udp
context=from-1001

[1002]
type = friend
username = 1002
secret = 1002
host = dynamic
disallow = all
allow = ulaw
transport = udp
context=from-1002

OSIP2.pngOSIP2.png

配置 extensions.conf

  • sudo vim /etc/asterisk/extensions.conf
  • 说明:同样与参考的那篇不同,我发现已经有该参数了,所以省去。
  • 添加
[from-1001]
exten => 1001,1,Answer()
exten => 1001,n,Dial(SIP/${EXTEN},20,tr)
exten => 1001,n,Hangup

[from-1002]
exten => 1002,1,Answer()
exten => 1002,n,Dial(SIP/${EXTEN},20,tr)
exten => 1002,n,Hangup

OSIP3.pngOSIP3.png

WSL 端口映射

  • 安装 net-tools
    • sudo apt install net-tools
  • 查看 WSL ip 地址:
    • ifconfig
    • 即 eth0 的 inet,172.31.220.163
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 172.31.220.163  netmask 255.255.240.0  broadcast 172.31.223.255
        inet6 fe80::215:5dff:feb5:9751  prefixlen 64  scopeid 0x20<link>
        ether 00:15:5d:b5:97:51  txqueuelen 1000  (Ethernet)
        RX packets 23127  bytes 30204687 (30.2 MB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 15749  bytes 1157545 (1.1 MB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
  • 端口映射
    • netsh interface portproxy add v4tov4 listenport=5060 listenaddress=0.0.0.0 connectport=5060 connectaddress=172.31.220.163
    • 检查:netsh interface portproxy show all

OSIP4.pngOSIP4.png

重启并检查

  • sudo /etc/init.d/asterisk restart
  • 查看 Linux 端口:
    • sudo lsof -i:5060
    • 有 asterisk 进程。
  • 查看 Windows 端口:
    • netstat -aon| findstr 5060
    • 输出: TCP 0.0.0.0:5060 0.0.0.0:0 LISTENING 5824

IP 电话安装

ZoiPer

  • 官网:https://www.zoiper.com/

  • 启动,选择免费账户运行。

  • 用户名及密码输入 1001,ip 172.31.220.163:5060(前文 WSL 的 ifconfig 命令获得)

  • oSIP1.pngoSIP1.pngOSIP5.pngOSIP5.pngOSIP6.pngOSIP6.png

Linphone

  • 官网:https://www.linphone.org/
  • SIP 账户登录,用户密码为 1002,ip 同上,协议选择 UDP

IP 通话

  • 查询 WSL 于 Windows 中的 IP:
    • Windows 下,ipconfig,找到 WSL 对应的 ip,我这里为 172.31.208.1

账户添加

  • ZoiPer 添加联系人 1002,通话地址为 1002@172.31.208.1:5060
  • Linphone 添加联系人 1001,通话地址为 1001@172.31.208.1:5060

信息汇总

账号密码SIP 地址协议联系方式
10011001172.31.220.163:5060UDP1001@172.31.208.1:5060
10021002172.31.220.163:5060UDP1002@172.31.208.1:5060
Asterisk 配置Asterisk 配置ip 由 WSL 的 ifconfig 得知
端口由 Asterisk 配置
Asterisk 配置ip 由 Windows 的 ipconfig 得知
这里指的是其它账户联系该账户的地址

通话

  • 下图为 ZoiPer 的1001账户向 Linphone 的1002账户拨打
  • OSIP8.pngOSIP8.png
  • 下图为 Linphone 的1002账户向ZoiPer 的1001账户拨打
  • OSIP9.pngOSIP9.png
  • 下图为两个软件的拨打历史
  • OSIP10.pngOSIP10.png
  • 下图为两个软件的拨打时的截图,当我说话时,有声音
  • OSIP11.pngOSIP11.png
  • 拨打六分钟后的通话记录
  • OSIP12.pngOSIP12.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/80969.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

实验12 动态查找2022

A. DS二叉排序树之创建和插入 给出一个数据序列&#xff0c;建立二叉排序树&#xff0c;并实现插入功能 对二叉排序树进行中序遍历&#xff0c;可以得到有序的数据序列 输入 第一行输入t&#xff0c;表示有t个数据序列 第二行输入n&#xff0c;表示首个序列包含n个数据 第…

Vue 基础详解 | 系统性学习 | 无知的我费曼笔记

无知的我正在复盘Vue 该笔记特点是 重新整理了涉及资料的一些语言描述、排版而使用了自己的描述对一些地方做了补充说明。比如解释专有名词、类比说明、对比说明、注意事项提升了总结归纳性。尽可能在每个知识点上都使用一句话 || 关键词概括更注重在实际上怎么应用提出并回答…

spring——AOP面向切面编程—— 自动代理——根据 Bean 名称创建代理对象根据切面中信息创建代理对象...

自动代理 在前面的案例中&#xff0c;所有目标对象(Target Bean)的代理对象(Proxy Bean)都是在 XML 配置中通过 ProxyFactoryBean 创建的。 但在实际开发中&#xff0c;一个项目中往往包含非常多的 Bean&#xff0c; 如果每个 Bean 都通过 ProxyFactoryBean 创建&#xff0c;那…

MySQL~InnoDB关键特性(插入缓存、俩次写、自适应哈希索引、异步IO

一般情况下&#xff0c;主键是行唯一的标识符。通常应用程序中行记录的插入顺序是按照主键递增的顺序进行插入的。因此&#xff0c;插入聚集索引一般是顺序的&#xff0c;不需要磁盘的随机读取。因为&#xff0c;对于此类情况下的插入&#xff0c;速度还是非常快的。 如果索引…

Selenium4+Python3系列 - 测试框架的设计与开发

框架搭建 整个框架的实现&#xff0c;大约也就1.5天&#xff0c;关于框架的开发并不是很难&#xff0c;主要难在测试报告增加失败自动截图功能和echart的饼子图统计功能&#xff0c;两者的整合花了近半天的时间吧。 效果&#xff1a; 1、核心思想 延续使用Page Object和Page …

RabbitMQ入门(三)消息应答与发布确认

前言&#xff1a; 消息应答与发布确认都是保证消息不丢失。而重复消费问题则是消息幂等性。&#xff08;之后会说幂等性&#xff09; 消息应答&#xff1a; 应答功能属于消费者&#xff0c;消费者在接收到消息并且处理该消息之后&#xff0c;告诉 rabbitmq 它已经处理了&…

深度学习——残差网络(ResNet)笔记

残差网络&#xff1a;经常使用的网络之一 1.随着神经网络的不断加深能改进精度吗&#xff1f; 不一定 ①蓝色五角星表示最优值&#xff0c;Fi闭合区域表示函数&#xff0c;闭合区域的面积代表函数的复杂程度。在这个区域能够找到一个最优的模型&#xff08;区域中的一个点表…

「重学JS」带你一文吃透作用域与闭包

前言 学习了这么久前端&#xff0c;发现自己对于基础知识的掌握并没有那么通透&#xff0c;于是打算重新学一遍JS&#xff0c;借用经济学的一句话&#xff1a;JS基础决定能力高度&#x1f926;&#x1f3fb; 基础很重要&#xff0c;只有基础好才会很少出 bug&#xff0c;大多数…

二叉树的性质

由于二叉树的结构特殊&#xff0c;会有一系列的数学性质 性质一&#xff1a;对于一棵二叉树&#xff0c;第i层的最大结点数量为 个&#xff0c;比如二叉树的第一层只有一个根结点&#xff0c;而二叉树的第三层可以有 个结点。 性质二&#xff1a;对于一棵深度为k的二叉树&am…

【Python】函数

文章目录1. 函数介绍2. 函数的定义与调用3. 函数参数4. 函数返回值5. 变量作用域6. 函数执行过程7. 链式调用8. 嵌套调用9. 函数递归10. 参数默认值11关键字参数1. 函数介绍 编程中的函数不同于数学中的函数&#xff1a; 数学上的函数&#xff0c;比如 y sin x&#xff0c;x…

Vue快速上门|了解MVVM

1.1、先了解下MVVM VUE是基于MVVM思想实现的,❓那什么是MVVM呢?—— MVVM,是Model-View-ViewModel的缩写,是一种软件架构模式。其核心思想就是分离视图、数据、逻辑,VUE框架解决了数据Model到视图View的双向绑定,我们只关注业务逻辑ViewModel即可,极大的提高的编程效率…

BadUSB超详细制作, 实现CobaltStrike远控上线

前言 在2014年美国黑帽大会上&#xff0c;安全研究人员JakobLell和独立安全研究人员Karsten Nohl展示了他们称为“BadUSB”的攻击方法&#xff0c;这种攻击方法让USB安全和几乎所有和USB相关的设备(包括具有USB端口的电脑)都陷入相当危险的状态 现在的USB设备很多&#xff0c…

高级篇之ENC1当作采集卡使用方案推荐

高级篇之ENC1当作采集卡使用0 背景&#xff1a;1 准备工作2 连接示意图3 配置步骤&#xff1a;3.1 在笔记本电脑上安装NDI4工具3.2 ENC1设备连接3.3 配置电脑的USB网卡的IP地址3.4 配置ENC1设备3.5 打开NDI工具的虚拟输入功能0 背景&#xff1a; HDMI视频采集卡分为内嵌式采集…

【GCC编译优化系列】宏定义名称与函数同名是一种什么骚操作?

作者简介 *架构师李肯&#xff08;全网同名&#xff09;**&#xff0c;一个专注于嵌入式IoT领域的架构师。有着近10年的嵌入式一线开发经验&#xff0c;深耕IoT领域多年&#xff0c;熟知IoT领域的业务发展&#xff0c;深度掌握IoT领域的相关技术栈&#xff0c;包括但不限于主流…

​全网最牛的Fiddler系列文章(一):fiddler的介绍及安装​

Fiddler(1)&#xff1a;fiddler的介绍及安装 Fiddler简介 Fiddler是比较好用的web代理调试工具之一&#xff0c;它能记录并检查所有客户端与服务端的HTTP/HTTPS请求&#xff0c;能够设置断点&#xff0c;篡改及伪造Request/Response的数据&#xff0c;修改hosts&#xff0c;限…

【UEFI实战】Redfish的BIOS实现1

Redfish的BIOS实现 EDK2提供了Redfish框架&#xff0c;用来实现带外的BIOS配置&#xff0c;其基本框架如下&#xff1a; 通过RedfishPkg中提供的Driver&#xff0c;可以实现BIOS与BMC或者其它的软件进行通信。它主要分为两个部分&#xff0c;分别是Client和Foundation。Client…

[论文解析]DREAMFUSION: TEXT-TO-3D USING 2D DIFFUSION

code links&#xff1a;dreamfusion3d.github.io 文章目录OverviewWhat problem is addressed in the paper?What is the key to the solution?What is the main contribution?What can we learn from ablation studies&#xff1f;Potential fundamental flaws; how this w…

MATLB|基于粒子群算法的能源管理系统EMS(考虑光伏、储能 、柴油机系统)

&#x1f4a5;&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️❤️&#x1f4a5;&#x1f4a5;&#x1f4a5;&#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清…

原子操作类之18罗汉增强

原子操作类之18罗汉增强 是什么 都是java.util.concurrent.atomic包下的 有红框圈起来的&#xff0c;也有蓝框圈起来的&#xff0c;为什么&#xff1f; 阿里巴巴Java开发手册 为什么说18罗汉增强&#xff0c;却只有16个 再分类 基本类型原子类 AtomicInteger AtomicBoolea…

wpa_supplicant工具移植到嵌入式设备

1、wpa_supplicant源码下载 (1)源码下载地址&#xff1a;http://w1.fi/releases/&#xff1b; (2)本文是以wpa_supplicant-2.6.tar.gz版本进行移植&#xff1b; 2、编译openssl 2.1、确定适配的openssl版本 Optional libraries for EAP-TLS, EAP-PEAP, and EAP-TTLS: - OpenS…