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

VoIP通话-基于SIP协议的Asterisk

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

项目说明

项目内容

  • 基于 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 可以安装桌面,但我这里用不到,所以没安装。

下载与安装

进入与退出

  • 命令行输入 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 安装

Asterisk 安装

配置 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.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.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.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.png OSIP5.png OSIP6.png

Linphone

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 地址 协议 联系方式
1001 1001 172.31.220.163:5060 UDP 1001@172.31.208.1:5060
1002 1002 172.31.220.163:5060 UDP 1002@172.31.208.1:5060
Asterisk 配置 Asterisk 配置 ip 由 WSL 的 ifconfig 得知
端口由 Asterisk 配置
Asterisk 配置 ip 由 Windows 的 ipconfig 得知
这里指的是其它账户联系该账户的地址

通话

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

You may also like...

发表回复

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

上传图片
CAPTCHAis initialing...