用树莓派搭建低成本VOIP电话系统

在研究了一些为小企业提供VoIP(Voice over Internet Protocol)和IP电话服务,包括支持新趋势 UC(统一通信)的技术解决方案之后,我个人认为用树莓派提供一个非常低成本的解决方案是完全可行的。相对于100美元的投资和一个专用的 VoIP/UC 服务器解决方案,树莓派和相应配件在成本方面的优势是无法比拟的。

树莓派的解决方案是通过在 Raspbian 系统上运行 Asterisk VoIP/UC 软件来实现的。这个开源解决方案提供了高度灵活的配置项,当然也可以用于许多不同的领域和应用。

本文说明了 VoIP/UC 的解决方案并不一定是高风险的,在实施的时候也不一定是需要很高投入的。

简介

在过去的几十年中,电话技术发展迅速,从模拟通信迁移到了基于VoIP的数字通信和IP电话。这也让统一通信成为了可能,统一通信是对实时通信服务,例如即时消息(聊天),电话,数据共享,视频会议,语音识别等和非实时通信服务,例如语音信箱,电子邮件、短信和传真等的集成。统一通信并不是指某一个单一的产品,而是一系列提供了一致的,统一的,跨多个设备和媒体类型的用户界面和用户体验的产品。

(http://en.wikipedia.org/wiki/Unified_communications)

VoIP 是利用某个网络协议,比如SIP协议 (Session Initiation Protocol) 和 RTP协议 (Real-time Transport Protocol) 等,从而实现通过因特网来传输声音。

基础

要实现一个 VoIP/UC 解决方案,系统必须满足各种行业标准,而且网络设备也必须能够区分出对语音视频数据和其他类型数据的使用。

基本组件

本方案对硬件和软件的要求很简单。你需要做的可能只是下载软件而已。

硬件:

  • 树莓派B或者B+
  • 4 GB SD卡 (最低配置)
  • 1A 电源
  • 网线
  • 可选的 SIP 电话或者 SIP适配器(本文使用 Dlink DPH-150SE)

软件:

  • Raspbian
  • Asterisk 通信软件
  • LinPhone 虚拟电话软件 (支持 iOS, Android, Blackberry, Linux, Windows and OSX)。你可以通过下面链接下载。http://www.linphone.org

安装

初始安装设置的时候,你可能需要使用一个USB键盘和鼠标连接到 Raspberry Pi 上,再连上一个显示器。配置成功以后,树莓派就可以不需要这些而自己运行了。

获取 Asterisk 软件最好的和最容易的方法是从这个网站 (http://www.raspberry-asterisk.org/downloads)下载最新的 SD 卡映像文件,它是一个预装了 Asterisk 通信软件和 FreePBX 图形用户界面的 Raspbian 系统。

该映像文件是通过在这个网页上(http://www.raspberrypi.org/documentation/installation/installing-images/)的步骤被写到SD卡上的。

当系统启动后,用 root 身份和 raspberry 密码登陆。如果愿意,你也可以远程登陆树莓派系统。在 Windows 上安装 PuTTY SSH 客户端并用 root@raspbx 连接树莓派。如果是苹果的 Mac,只需简单的打开终端,输入命令 SSH root@raspbx.local 。

你可能以后会想禁止通过 SSH 登陆 root 用户,因为这有可能造成一个安全漏洞。当你登录系统以后,你需要运行的第一个命令是:

raspbx-upgrade

这个命令将更新所有的软件到最新版本,包括 Raspbian 和 Linux 内核。

接下来你需要做的是配置静态IP地址。你需要在你的路由器或者猫上指定你想使用的静态IP地址,网络掩码和网关。命令:

ifconfig

将提供你当前的IP地址,网络掩码。你的新的静态IP地址的前三个字节应该跟你当前的IP相同,最后一个字节必须在你的路由器当前已使用的动态IP地址范围之外。如果想查找网关地址,请输入:

netstat -r

通过下面的命令编辑 interface 文件:

nano /etc/network/interfaces

编辑好的 interface 文件应该看起来跟下面截图中的一样。

注意你需要将 eth0 那一行上的 “dhcp” 替换为 “static”, 并确保你使用的是 <Tab> 键来达到需要的缩进。

保存这个文件以后,重启树莓派让新的网络设置生效。现在开始,你就可以使用新的静态IP或者 raspbx 主机名了。例如我现在就可以使用 PuTTY 通过静态IP来连接树莓派: root@172.31.15.11 。

Asterisk的配置

我们现在要通过 FreePBX 的图形用户界面来配置 Asterisk 软件。这样可以让整个配置过程变得简单和容易。FreePBX 是已经在我们下载的那个映像文件里预装好了的软件。

如下所示的是一个示例架构图:

要运行 FreePBX,请打开浏览器并在地址栏输入 http://raspbx 或者树莓派的静态 IP 地址。(对于苹果的 Mac,你需要输入 http://raspbx.local)。这样就打开了 FreePBX 的管理界面。

这里有三个选项:

  1. FreePBX Administration 用于配置 Asterisk
  2. User Control Panel 供用户调整他们的个人设置
  3. Get Support 将打开 FreePBX 的官方网站

点击 FreePBX Administration, 默认的登录名是 admin,登陆密码也是 admin。这个软件的菜单有多种选项,包括分机(Extensions),会议(Conferences)和响铃组(Ring Groups)等。请点击分机(Extensions)。

由于当前没有分机存在,所以你将添加一个新的分机。Device 选项请选择 Generic SIP Device,然后点击提交(Submit)进入下一个页面。这个页面也有很多的选项,但我们只需要设置用户分机号码为 300,显示名称为 Walberto 和密码为 ext300。单击 Submit 添加该扩展。

在屏幕的右边,点击300来查看你刚刚添加的分机。验证端口(port)选项被设置为5060。点击Submit提交,然后点击那个红色的 Apply Config 按钮来保存所做的更改。

重复这个过程添加其它你需要的分机号,在这里我添加了301和302分机。

现在,我们需要配置 IP 电话。这个过程根据你的电话设备的型号而不同,在这里我们将使用 Dlink DPH-150SE 作为一个示例。

最重要的设置是禁用 DHCP 选项,确认 SIP 电话端口号为 5060,还有注册的服务器是你的树莓派的 IP 地址。在后面的章节中,我们将通过 Proxy 选项来启用服务器注册。

对于 SIP Account 设置选项,我们需要输入之前通过 FreePBX 添加分机时使用的数据。Authentication User Name 就是之前添加的分机号码,而 Authentication Password 就是我们之前设定的那个密码(即ext300)。

虚拟电话配置

启动 Linphone 并在 Options 菜单中选择 Preferences。确认网络设置如下图所示。

在 Multimedia settings 选项中, 确认 Echo cancellation 被选上。在 Manage SIP Accounts 选项中输入你的显示名称。在我的例子中,虚拟电话的分机号为302, 所以用户名也为 302。由此而生成的 SIP 地址为<sip:302@172.31.15.7>。单击 Add 按钮在 Asterisk 上注册该分机的帐号。

按照下图所示,输入你的 SIP identity 和 SIP Proxy address(即你的树莓派的 IP地址)。

然后你将被要求输入密码。对于302分机,我设定的密码是 ext302。单击确定,注册就完成了。

通过 FreePBX 和 Asterisk 可以实现各种服务,如会议室,IVR(交互式语音应答),呼叫组等,还可以通过普通的PSTN电话,SIP中继线或互联网进行呼入和呼出。

未来

VoIP和互联网通讯的发展正在推动统一通信系统融合成一个整体的系统和环境。 FreePBX 和 Asterisk 是一个非常好的例子,它演示了如何用很低的成本来实现复杂的通讯系统。

来自:https://www.jianshu.com/p/4789d030fee3

想要更多,请欢迎关注“IoT前哨站”微信公众号或微博

从树莓派到Microbit,中国IT启蒙教育比英国缺点什么?

前段时间,笔者一直在用英国产的“Micro:bit”。这是一款由BBC主导,微软、三星、ARM、英国兰卡斯特大学、巴克莱银行等合作伙伴共同开发的嵌入式编程设备。

它可以通过计算机、手机、平板编程,也可以用图形化的方式编程。支持Scratch、Python、JavaScript三种语言。一块小小的电路板,集成了重力传感器、磁力传感器、温度感测、蓝牙等多个模块。如图所示。

不用安装任何复杂的IDE和运行环境,只要一根USB线和一个主流浏览器就能写入代码,让这块小电路板进行各种有趣的项目和实验。如图所示。

这块小型电路板的背后,是一项名为Make it Digital的计划,旨在推进英国的数字化进程。

该计划从2015年秋季开始,让英国11岁左右的学生都免费获得“Micro:Bit”进行编程学习。

BBC此举意在提高年轻人的数字化技能,并填补未来这方面人才的空缺。据估计,未来五年内,英国将需要约140万的专业IT人士,但现实是目前这方面人才紧缺。BBC希望将这个基于ARM处理器的微型设备作为一个跳板,让学生掌握基础编程知识之后再去使用更复杂的设备,毕业以后可以成为精通此类技能的IT人才。

目前主流的英国中学,编程已经和科学、技术、工程、数学一起,成为学生的基础课程。而且从树莓派到Micro:Bit这类开源硬件不断涌现,也证明了英国教育界和产业界融合之深入,协同之到位。

我国早在1984年,邓老爷子曾就在上海提出过“计算机的普及要从娃娃做起”。计算机课程在该年首次进入上海的高中课堂,翌年成为高中阶段的必修课。

随后计算机教育在我国的发展也如火如荼。但十分可惜的是,与计算机启蒙教育相关的配套硬件却一直没有发展起来。大部分时候,学生都是直接使用进口的非开源商业计算机进行学习。而商业计算机大多是美国标准,一批批学生成年后又继续按这套标准教育新的学生,培训新的员工。间接导致了相关软件业一度被迫向美国看齐,让出了相关领域与美国一较高下的机会。

这虽然和我国的IT基础产业发展较晚有关,但我国没有对青少年计算机启蒙教育进行系统的,持续的,深入的定制和推广也有关系。

比如笔者在初中开始进行系统计算机课程学习。但一开始学的不是编程,而是五笔字型和办公软件。高中时期,学校教授模拟电路和数字电路,很少有机会实战。直至考入大学的电子专业后,才第一次接触嵌入式设备的真机开发,此时不仅动手能力不如少年时期,而且学习计算机编程最好的时光已一去不返。

反观现在的英国青少年,在初中时候便有良好的环境学习Micro:bit这样的简易电路板,高中时候可以进阶到Raspberry Pi这样功能更强的微型电脑实战。可以预想,大学以后,他们基于之前的功底便可轻松进入各种高级的电子、计算机研究领域。

大规模持续的非盈利教育活动,是一个国家国民素质提高的有效手段。而孩童时期又是人们最热衷探索和创新的时候,这个时候如果能给予正确的方向和足够的教育支持。对整个国家综合国力的发展大有裨益。

规模化的IT启蒙,现阶段我国软硬件发展跟的上吗?

2000年左右,中国近乎全民Windows。所幸最近十年大力发展Linux为主的开源软件,让我国在相关领域没有落后于欧美先进国家。

而硬件方面,像树莓派、Micro:bit所采用的低功耗芯片,国内有“全志”、“瑞芯微”可以满足。相关的开源电路板,迅龙的“Orange Pi”和方糖科技的“CubieBoard”已在业界小有名气。

我国东部地区的一些学校,近几年均已经开始中小学的编程训练以提高学生的“STEAM”能力。民间的很多培训班也如雨后春笋般涌现出来。

以上可见,基础已备。中国现阶段缺的,就是一家类似BBC这样有公信力的机构来牵头成立相关的教育基金会,整合国内外一流的资源,建立有益青少年IT教育的体系。同时协调各方设计“能让适龄青少年迅速上手的可编程设备“,推出趣味性和实用性并存的计算机课程,降低整个国民IT学习的成本,让更多的孩子有机会受到良好的计算机启蒙教育,让他们能迈出扎实的第一步。

随着IoT、区块链、AI时代的到来,中国今后的IT需求十分巨大。相关产业的高速发展急需人才推动。希望中国也能借鉴英国的成功经验,普及国民IT教育,填补相关产业的人才缺口,以免在未来失去竞争力。

我们的树莓派受Meltdown或Spectre漏洞影响吗?

2018年刚开了个头,Meltdown 和 Specter 这两组CPU漏洞就被公布出来,在业内引起轩然大波。波及了几乎所有由英特尔、AMD或ARM在过去十年制造的CPU。

前者对应CVE-2017-5754(乱序执行缓存污染),影响Intel CPU和部分ARM CPU。

后者对应CVE-2017-5753(边界检查绕过)与CVE-2017-5715(分支目标注入),影响Intel CPU和AMD CPU,以及主流的ARM CPU。

目前主流的PC、手机以及服务器,几乎都受到这两组硬件漏洞的影响。这些漏洞将允许恶意程序窃取机器上的任意数据。

关于该漏洞细节网上已经有很多内容,各大厂商也纷纷表示已推出补丁修复。

但不管怎样,了解一下自己的机器是否受影响还是有必要的。

一位名叫Stéphane Lesimple的开发者写了个很好用的脚本,然后一群热心网友又帮着完善了代码。方便了大家的检测。

这里我先试一下自己的DELL游戏笔记本 ,系统是Ubuntu 17.04,处理器是Intel 酷睿i7-6700HQ。

把脚本下载到本地,用root的权限执行。

检测脚本下载地址:https://raw.githubusercontent.com/speed47/spectre-meltdown-checker/master/spectre-meltdown-checker.sh

结果两组漏洞,三个CVE,全中。

这意味着这台笔记本目前仍处在危险之中。

之前有消息说所有树莓派都没有受到最近披露的Meltdown 和 Spectre漏洞影响。但有些厂商似乎又在发布针对树莓派的补丁。

那咱们ARM芯片的树莓派,情况到底怎么样?

接着我试了一下Raspberry Pi 3B ,系统是Raspbian 9,处理器是博通BCM2835(板载标识BCM2837)。

结果还算让人满意,至少咱们的树莓派3B不受这两组漏洞威胁了。

因为修补这些漏洞,多少会降低系统的性能。而树莓派作为低功耗的IoT代表,本来就不怎么快,再降低性能就太可怜了。

想要更多,请关注“IoT前哨站”微博或微信公众号