树莓派应用之家庭网络中部署一台可在公网提供服务的低功耗服务器
2016-03-07 00:13
453 查看
最近开始研究研究树莓派有哪些应用场景。
首先想到的就是在内网部署一台可在公网提供服务的低功耗服务器,可以提供哪些功能呢?比如Web服务,SVN服务,FTP服务,远程家庭网络检测服务,便携式漏洞扫描设备等等。这些都是很有意思的应用场景。Web服务
通常公网的Web服务都是要交费的,阿里云最便宜的一台云服务器也要60多块钱一个月的。树莓派部署在家里,就是一个免费的公网服务器了,只是电信把80端口关了,那其实也没事,可以绑定8080端口。现在家庭宽带都比较大了。我家现在是24M的宽带,现在上传带宽已经有1M多了,这个还是相当可观的。有这么一台免费的公网服务器可以放一些自己的小Web应用也是非常不错的。远程家庭网络监测服务
这个就是最有研究价值的一个服务了。简单的就是在手机上可以随时查看家里面有多少WIFI链接,有多少人在家,哪个电视开着等等。如果家里放到摄像头的话,还可以在手机端随时查看家里的摄像头。再后面,如果其他家电也是智能化,可联网的话,那就可以通过这个树莓派实时的控制了。
便携式漏洞扫描设备
准备一个太阳能充电器+无线网卡+再加上这个树莓派就可以随时进入一个网吧,咖啡厅等等公共的环境,接入内网,就能对内网中的设备进行安全监测了。想想也是非常不错的哦。说了这么多了,那么应该如何部署呢?接下来我们就开始吧。
第一步:树莓派安装Debian系统
1、操作系统下载树莓派官方 Raspbian 系统下载:http://www.raspberrypi.org/downloads
或直接下载 http://downloads.raspberrypi.org/raspbian_latest.torrent 最新版的 BT 种子。
还有一个选择是由国人制作的超级精简版,更低内存占用:http://pan.baidu.com/share/link?shareid=167943&uk=1412008571
2、系统安装
所谓“安装系统”其实不如说是“恢复”下载到的系统镜像到内存卡上,这个过程也没什么难度,就是看内存卡的速度,慢慢等而已。需要注意的是,市面上部分 4G 的内存卡,实际大小才 3.6G 多,会提示空间不足,所以还是直接购买 8G 吧,也差不了几块钱。
在 Windows 下可以使用 Win32 Disk Imager 进行镜像恢复,非常方便,也是树莓派官方推荐的方法。官方下载地址:http://sourceforge.net/projects/win32diskimager/
3、环境配置
登录tplink路由器,查看客户端列表就可以看到树莓派的IP地址,然后就是SSH登录到小服务器上随便倒腾了。
第二步:配置固定IP
树莓派安装好后,默认是DHCP的网卡配置。因为后面要配置IP端口映射,所以需要配置固定的IP地址。接下来我们就开始配置吧。
auto eth0
iface eth0 inet static
address 192.168.9.250
netmask 255.255.255.0
gateway 192.168.9.1
第三步:IP端口映射
这不是最关键的一步,也是最核心的一步。只有完成了这一步,才能实现从外网直接访问内网的设备。在Tplink上的配置方法如下:
使以上条目生效后,就可以通过访问PPPoE的公网IP进行端口转发,映射到内网的树莓派服务器上面了。
这步完成后,基本上就可以实现我们想要达到的目的了,可以通过外网访问家庭内网的树莓派服务器,进而可以访问家里面的任何一台网络设备,比如机顶盒,路由器等等。
第四步:花生壳动态域名解析
大家都知道PPPoE的公网IP地址是随机的,这样就会导致今天这个IP可以访问,明天也许就需要重新登到路由器上查看PPPOE的IP了。这样需要人工重复劳动的事,肯定不是我们追求的最佳解决方案。那我们就会想到能否实现一个动态DNS解析,就是将一个域名动态的解析到路由器的公网IP上。
TPLinke正好提供这样的一个功能。
注册一个花生壳账号,就可以实现域名动态绑定家庭网络的公网IP了。这个方法在以前是一直可以使用的,但是最近发现电信又不知道再搞什么鬼,怎么连都连不上。开始以为是这几个端口是不是都被电信给封了,最后才发现原因:对外访问的IP和对内访问的IP不一样。
电信也是坑了,居然这么搞。通过ping花生壳提供的动态域名,发现绑定的是对外访问的公网IP地址,那就没有办法通过花生壳提供的现成解决方案来实现了。那么怎么办呢,难不倒我们,那我们就自己实现一个动态域名解析方案。
第五步:Dnspod动态域名解析
提供这个功能的基础,主要是因为dnspod提供API接口让我们实现自动化的修改或增加A记录的功能。那么我们就通过这个接口自己实现动态域名解析方案吧。
1、获取路由器的PPPoE的公网IP
Shell代码如下:
value=$( curl -u test:test http://192.168.9.1/userRpm/StatusRpm.htm | grep ’0, “0C-82-68-A1-EC-5B”, “‘ | awk ‘{print $3}’ | awk ‘{sub(/["]+/, “”); print}’ | awk ‘{sub(/["]+/, “”); print}’ | awk ‘{sub(/[,]+/, “”); print}’ )
2、判断动态域名的IP是否变更,如果变更则修改Dnspod记录
完整代码如下:
#! /bin/sh
#
# Provides: ddnsUpdate.sh
# Description: ddnsUpdate
#
# Author: Shenjie <aiharry2007@163.com>
#
# Usage:
# ddnsUpdate.sh
#
#
#
arMail=”Dnspod账号”
arPass=”Dnspod密码”
domainId=”域名Id”
recordId=”记录Id”
subDomain=”ddns”
recordType=”A”
recordLine=”%E9%BB%98%E8%AE%A4″
if [ ! -e /home/homeip ]; then
touch /home/homeip
fi
oldValue=$( cat /home/homeip )
value=$( curl -u 路由器用户名:路由器密码 http://路由器地址/userRpm/StatusRpm.htm | grep ’0, “0C-82-68-A1-EC-5B”, “‘ | awk ‘{print $3}’ | awk ‘{sub(/["]+/, “”); print}’ | awk ‘{sub(/["]+/, “”); print}’ | awk ‘{sub(/[,]+/, “”); print}’ )
if [ "$oldValue" = "$value" ]; then
echo “home ip is the same, do not have to update dnspod”
echo “[`date`] home ip is the same, do not have to update dnspod, IP: ${value}” >> /var/log/ddnsUpdate.log
exit 1
fi
echo $value > /home/homeip
mx=”0″
ttl=”600″
agent=”AnripDdns/5.07(mail@anrip.com)”
url=”https://dnsapi.cn/Record.Modify”
param=”login_email=${arMail}&login_password=${arPass}&login_code=&format=json&domain_id=${domainId}&record_id=${recordId}&sub_domain=${subDomain}&record_type=${recordType}&record_line=${recordLine}&value=${value}&mx=${mx}&ttl=${ttl}”
echo “current deivce ip: ${value}”
echo $param
echo “start to connect to dnspod ……”
wget –quiet –no-check-certificate –output-document=- –user-agent=$agent –post-data $param $url
echo ” ”
echo “ddnsUpdate run success”
echo “[`date`] ddnsUpdate run success, IP: ${value}” >> /var/log/ddnsUpdate.log
这个里面的账号部分请自行修改,如有疑问,可以加我的QQ:782200272咨询。
第六步:将Shell脚本加入到contab计划任务中,没6小时执行一次
一切工作就绪后,把这个脚本加入到contab计划任务中,就可以实现动态域名解析功能了。至此,我们已经实现了完整在的在家庭内网中部署一台可在公网提供各种服务的服务器了。
为什么叫低功耗服务器呢?
因为树莓派是最适合当做家庭内部的轻量型服务器的。
如果用主机的话,成本太高,耗电量也大。如果用笔记本的话,耗电量也很大,而且对笔记本的损耗太大了,不合算。
树莓派的功耗:3.5W,也没看错,才3.5W的功率。相当于一个LED灯的功率,非常节能环保吧。
今天就到这里吧。下次再介绍树莓派的其他部署和应用。
相关文章推荐
- 安卓第七天笔记--网络编程一
- https握手过程
- ios企业账号发布,没有https服务器解决方案
- AFNetworking网络监听
- 实现TCP连接的AT指令
- 厦门巨游网络科技有限公司(HOTPOWER)承接游戏UI外包
- Genymotion无法创建虚拟机提示: HTTP status code 0
- Xcode7 网络请求报错:The resource could not be loaded because the App Transport Security policy...
- HTTP无状态协议分析与Cookie的关系
- Windows开启网络对时方法
- Linux下网络流量实时监控工具 大全
- springMVC前端请求找不到资源路径(HTTP Status 404)问题
- 【网络流】poj1087
- 网络多线程(pthread , NSThread,GCD ,NSOperation)
- Http 请求
- AsyncHttpClient
- httpurlconnection
- okhttp
- linux网络编程 第18章
- Node建立HTTP服务器