无将你家里的电脑连上广域网标题文章

将你家里的电脑连上广域网


作者: 小胡子哥 2015-11-07 12:12:14
分类: 网络技术 标签: DDNS 评论数: 暂无评论
很多人买电脑半年一年之后,都会遇到这样一个问题:硬盘已经装不下?尤其是有些爱折腾的朋友喜欢安装多个系统,或者爱把各种美剧批量下载到本地,渐渐地,也只好去网上搜罗个硬盘。现在四五百就能买到一个 1TB 的硬盘,也不算很贵,可是电脑边上总挂着一坨东西,不仅不方便也不好看。
有同事给我推荐 NAS,我觉得是相当不错的一个方案,包括硬盘在内,一般用户配置可以控制在 2000-5000 人民币。喜欢折腾的也可以考虑 GEN8,价格在 1500-3000 人民币,得自己搞系统,NAS 对小白用户很和谐的地方是,DMZ 有一个中央系统,并且提供了 Web 控制界面,相当于以 NAS 硬盘作为储存中心,WebOS 上操作。
如果我选了 NAS/GEN8 估计也不会写这篇文章了。既然家里有闲置的电脑,而自己也有硬盘,就没有必要再去购买其他网络设备搭建远程操控环境了~
解决 DDNS 的问题
能够从万千网络中定位一台机器,估计也就只有 IP 了,家里安装的是电信的宽带,不像教育网分配了固定的网段,电信这种拨号方式上网的方式每次分配到的 IP 是动态变化的。为了能够拿到 IP,我们必须把变化的 IP 存在一个位置去,有三种方案:
如果你有一台服务器(如阿里云主机),你可以将本地 IP 每隔一分钟告知云主机,让与主机记住 IP 地址
如果你有一个域名,你可以将域名解析服务器迁移到 DNSPod 提供的 NS,然后新增一个子域名添加 A 记录到任意 IP,接着通过 DNSPod 提供的接口实时修改 A 记录的 IP 地址
如果你既没有服务器,也没有自己的域名,可以在花生壳上注册一个域名,然后在你的路由器上(如果支持)配置花生壳,如果你的路由器不支持花生壳动态域名配置,你得下载一个花生壳的客户端,在客户端上配置。最终的结果同上,花生壳提供给你的免费域名会指向你的本地 IP。

我的博客托管在 github 提供的静态文本服务中,之前买的主机也到期了,所以就选择了方案二。
1. 先拿到本地 IP
在命令行输入 ifconfig/ipconfig
只能拿到路由器 DHCP 分配的地址,如 192.168.0.110,想拿到 IP,必须跟外网打交道,比如:curl ipinfo.io

➜ ddns git:(master) ✗ curl ipinfo.io{ "ip": "115...", "hostname": "No Hostname", "city": "Hangzhou", "region": "Zhejiang Sheng", "country": "CN", "loc": "30.,120.", "org": ""}%

如上所示,通过 ipinfo.io 提供的服务,我们可以很方便拿到外网。
2. 推到 DNSPod
如果你在其他域名提供商购买的域名,你需要将你的域名解析从提供商迁移到 DNSPod,这方面的迁移网上资料很多,可以搜索一下。DNSPod 相比其他提供商的域名解析服务,要更加优质,而且提供了 D监控,实时为你的域名解析保驾护航,有问题会及时邮件、短信警报。
接着在你的 DNSPod 上添加一个二级域名,比如我就随便搞了一个proxy.barretlee.com
,将它 A记录到任意地址,如 8.8.8.8。

DNSPod proxy.barretlee.com

这一步完成之后,你就可以通过 DNSPod 提供的接口修改 A 记录了。具体用到了三个接口:

  1. https://dnsapi.cn/Domain.List

curl -k https://dnsapi.cn/Domain.List -d "login_email=YOUR_REGISTER_EMAIL&login_password=YOUR_PASSWORD&format=json"

我在后面加了一个参数 format=json
,默认是 xml 格式。在这里可以拿到 Domain 信息,比如我就拿到了在 DNSPod 上的两个域名信息,一个是 barret.cc 的具体信息,一个是 barretlee.com 的具体信息。这里有用的是 barretlee.com 中的 id 字段,我拿到的值为 25348135。

  1. https://dnsapi.cn/Record.List

curl -k https://dnsapi.cn/Record.List -d "login_email=YOUR_REGISTER_EMAIL&login_password=YOUR_PASSWORD&format=json&domain_id=25348135"

通过这个接口,可以拿到 barretlee.com 所有子域名的信息,proxy.barretlee.com
对应的 record 的 id 字段值为 126112527。

  1. https://dnsapi.cn/Record.Ddns
    ,https://dnsapi.cn/Record.Modify

查询 proxy.barretlee.com 域名对应的 A 记录curl -X POST https://dnsapi.cn/Record.Ddns -d 'login_email=YOUR_REGISTER_EMAIL&login_password=YOUR_PASSWORD&format=json&domain_id=25348135&record_id=126112527&record_line=默认&sub_domain=proxy'## 修改 proxy.barretlee.com 域名对应的 A 记录curl -X POST https://dnsapi.cn/Record.Modify -d 'login_email=YOUR_REGISTER_EMAIL&login_password=YOUR_PASSWORD&format=json&domain_id=25348135&record_id=126112527&sub_domain=proxy&record_line=默认&record_type=A&value=YOUR_LOCAL_IP'

前两个请求是 GET 方式,而这里的请求是 POST 方式,具体文档在 这里。有人用 pythonphp 都写了工具,我就没有重复早轮了,后面 php 那个稍微靠谱点,但是查询本地外网 IP 用了他自己提供的服务,我做了点修改(改成使用 ipinfo.io 提供的服务,稍微靠谱点),可以戳这里:
Github:https://github.com/barretlee/ddns
3. 定时推
前文提到,IP 是会变化的,为了保证 proxy.barretlee.com 能够准确解析到本机,IP 变化的时候需要快速更新 A 记录,为了简洁,可以设置定时任务,每隔 1 分钟推送一次:

执行crontab -e # 写入任务* * * * * php path/to/ddns/index.php

使用 crontab 创建一个定时任务,实时推送。可以通过 crontab -l
查看任务列表。

验证效果ping proxy.barretlee.com

以上就能够通过 proxy.barretlee.com 获取到家里机器的 IP 地址了。需要注意的是,你们家电信宽带服务可能并不是通过路由拨号上网的,当你访问 proxy.barretlee.com 或者拿到的 IP 时,你会看到如下登录提示:

login

这个时候你就致电 10000,选择人工服务器,让电信帮你设置为通过路由器登录吧~(生效时间估计得二十多分钟,需要重启猫、路由等设备)
让外网可以访问到路由内网的机器
上面我们只是解决了,将本机外网的 IP (也就是路由器的 IP)推到 DNSPod,而路由器上是没有装什么软件的,我们不能通过路由器访问到这个小局域网中的任何设备。需要登录到路由器进行一些设置。
一般的路由器都提供了 web 控制界面,在这里我们需要执行如下操作:
1. 将局域网内的某个固定 IP 绑定你的电脑
路由器也是使用 DHCP 随机分配一个 IP 给你的电脑,为了让路由器能够找到你的电脑,可以将电脑的 MAC 地址和 IP 地址对应起来:
bind mac and ip

路由器一般都会有 “IP与MAC绑定这一项”,找到之后,绑定二者,如图中,我的本机 IP 目前为 192.168.0.110。
2. 将本机 IP 作为对外设备
DMZ 主机也是路由器自带的,通过DMZ主机功能,广域网中的设备可直接访问局域网中的DMZ主机
DMZ

如果要让局域网中 IP 地址为 192.168.1.110 的主机能够被广域网中的设备直接访问,则可以开启 DMZ 主机功能,在“DMZ主机IP地址”处填入 192.168.1.110 保存即可。
这个操作相当于将路由的 IP 直接赋予给你的电脑。如果你觉得风险过大,可以通过路由提供的虚拟服务器转发端口,比如外网过来的 10002 端口转发到内网的 80 端口,也就是:
虚拟服务器

这样,通过 proxy.barretlee.com:10002
就能访问到 192.168.1.110 机器提供的 web 服务了。
开始远程控制之旅
1. 防火墙
不管是 windows 还是 mac,先查看下你的防火墙,比如你开启了 apache 服务器,就去防火墙看看,这个服务是否允许外部访问,如果不允许,就得设置过来,或者干脆直接关闭防火墙。mac 的防火墙设置在这里:
mac 防火墙

2. 开启服务
如果你只需要远程登录到 mac,可以 enable ssh server
,相当于打开 ssh 的服务器,让机器可以被 ssh 。你也可以在电脑上安装 apache/nginx/nodejs 等等各种服务和程序,你也可以在电脑上设置 vpn server,让电脑作为代理被使用,想怎么折腾就怎么折腾。
小结
如果你理解整个流程都在做什么,以上操作可以在一小时内搞定。本文,简单点说,就是教你如何把自己的电脑变成一台可访问的服务器。
关于网速:取决于两端链接的最小网速;
关于稳定性:不断网的话,貌似 IP 也不会变化太快,1 分钟推一次的频率很频繁了;
关于安全:我只给我的电脑开了一个 ssh 的口子,除非 mac 系统本身有漏洞或者 ssh 有漏洞,想黑进来也不是件容易的事情。

好吧,写了一堆,希望给爱折腾的你提供点帮助。
本文链接:http://www.barretlee.com/blog/2015/11/07/put-your-computer-to-internet/

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 157,198评论 4 359
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 66,663评论 1 290
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 106,985评论 0 237
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,673评论 0 202
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 51,994评论 3 285
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,399评论 1 211
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,717评论 2 310
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,407评论 0 194
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,112评论 1 239
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,371评论 2 241
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 31,891评论 1 256
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,255评论 2 250
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 32,881评论 3 233
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,010评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,764评论 0 192
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,412评论 2 269
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,299评论 2 260

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,087评论 18 139
  • 名词延伸 通俗的说,域名就相当于一个家庭的门牌号码,别人通过这个号码可以很容易的找到你。如果把IP地址比作一间房子...
    杨大虾阅读 20,383评论 2 57
  • 从三月份找实习到现在,面了一些公司,挂了不少,但最终还是拿到小米、百度、阿里、京东、新浪、CVTE、乐视家的研发岗...
    时芥蓝阅读 42,003评论 11 349
  • 作为男人,第一次有了想滴泪的感觉,TMD
    若水阳光阅读 167评论 0 0
  • 上一篇结尾写道,即使如曹操这般强悍的人物,如果“任性妄为”,也要付出代价。那么这一篇就来看看曹操因为“任性妄为”都...
    胆小的鳄鱼阅读 663评论 3 5