需求背景

在上一个章节我们讲究了私有云的部署,但是会有一个问题,我如果在外面,如何访问家里电脑上部署的私有云服务?其实这个问题在扩大化说 就是 如何可以在家庭网络以外 可以访问到 家庭网络:公网 访问 内网。

内网转外网

顾名思义:就是想办法把自己的内网机器 可以直接 让外网可以访问。由于我们互联网技术不是我们国家发明的,在加入互联网之后我们分配到的公网IP也不多,不像美国人口少IP还多,基本每家都有公网IP(好羡慕)。

在我们国家需要公网IP必须要购买服务器或者家里安装电信网络。而我家的情况安装了电信公司提供的网络服务有一个 不固定的公网IP。我们的文章我主要解释我家里的网络情况。后面会介绍几种非网络服务商提供的公网IP的方式。

电信网络公网IP

如上图,通过ip138可以查询到,我的出口IP是上图。切记非电信供应商截图的IP不一定是通过你家,可能是通过多种路由设备转入到你家,这种就不行的。可以看到电信猫的管理界面IP和 ip138查询的一样,就说明我家的IP是公网IP

如上图,我家里的网络是 电信提供的猫 接入了一个 TP-LINK。家里的所有上网设备都是接入 TP-LINK进行上网。

网络请求转发

最上面是TP-LINK的管理界面,下面是电信猫的管理界面。我会设置所有从 外网请求 的所有流量都转发到 TP-LINK这个设备。

我举个例子,假如我的公网IP是 a.b.c.d。你通过任何方式的TCP和UDP协议 访问这个IP的任何端口数据包,都会转发到 TP-LINK这个路由设备。

为什么要设置这个东西?

因为我们的私有云电脑是属于TP-LINK 局域网的。如果我们想要通过访问公网IP或者域名 可以访问到这个服务,就必须进行 数据包转发。需要从电信猫转发到TP-LINK,然后TP-LINK在转发到对应的私有云电脑上就可以了。

如上图,最上面的截图是nextcloud需要一个网址,可以看到我的网址是 http://xxx.home.54php.cn。   可以看到我将 home.54php.cn(54php.cn是我个人注册的) 所有子域名都解析到了我的公网ip上了(这里有个问题,就是电信的IP有时候会变的,如何解决这个问题会讲解的)

我们可以想象一下,通过访问 http://xxx.home.54php.cn:10000  也就是 a.b.c.d 这个公网IP的 10000端口。首先 a.b.c.d 所有的请求都会转发到TP-LINK,然后TP-LINK管理界面有 虚拟服务器的功能【上面有截图】,可以看到通过TP-LINK 按照端口 将请求再次转发到对应机器。只要请求到了具体服务器上了指定端口(例如80),那就是服务器上的各种服务配合的事情了。例如通过nginx做web服务器转发到对应服务,例如php,python等等。

通过如上的操作 我就可以通过一个域名(其实也是IP,因为域名解析要做的事情就是找到对应的IP,也就是DNS服务的功能)。不知道是否给大家讲解清楚了,如果大家还有不明白的可以直接加入我们技术交流群进行交流【QQ群:325264502】。这块大家弄清楚了就非常容易理解了。就是多个局域网相互转发数据包。

为什么不能80或者443 默认端口?

因为电信公司非正规在电信公司备案企业或者个人,是不会开启默认服务端口,例如80,443,22等

公网IP经常变怎么办?

其实这也是为什么不用IP直接访问的原因,因为我的域名是不会变的,如果IP变了,我只需要通过一个方式将域名和IP的对应关系更新下就可以了。接下来就是DDNS登场了。我们经常听说DNS,前面在加上一个D是什么玩意。这里多的一个D是动态的意思。一般我们理解的一个域名和IP的对应关系是定死的。DDNS就是在自己知道自己的IP变了之后可以去更新域名的解析IP地址的。

大家可以看到我的*.home.54php.cn 全部到解析到家里了。为了达到我们的目的我们要使用一个能够提供ddns服务的dns服务商。我这里选择的是 DNSPOD。

目前在github上有人提供脚本:https://github.com/apanly/ArDNSPod。大致原理 就是 通过类似ip138这类网站获取目前自己的外网ip,然后在获取域名解析的IP,如果两个IP不一样通过调用DNSPOD提供的接口更改域名绑定IP。

非电信网络获得公网IP

原理其实和电信网络差不多,只是不同于电信服务商提供的公网IP,而是其他人提供了一个公网IP,然后通过别人家的公网IP服务转发到 我们内网机器上。或者你可以理解 有一个人按照了电信网络然后通个了一种技术手段 可以让我们访问一个他们指定的域名 然后 可以转发到自己内网的机器上。

这种内网转外网的服务其实非常多,例如经常听到的花生壳,Ngrok,NAT。我记得我博客就有讲解过:Ngrok NatApp 微信本地化调试利器

如何获得这样的公网IP。你可以去任何服务器供应商购买服务器 就会获取一个免费或者付费的IP。例如我的 博客 就是在腾讯云购买的(为什么买腾讯云,因为当时做活动便宜,所以不要争论为什么不用阿里云,网易云等等)。然后在自己服务器上搭建各种内网转外网的服务端服务。

如果是购买服务器搭建内网转外网的服务,这种比较考验大家的功底,需要掌握的知识相对要求较高。

如果是别人搭建好了内网转外网的服务,你只需要搭建别人指定好的客户端软件进行设置就可以了。

如果是别人搭建好的,一般这种网站都会要求注册会员,然后进行一定免费 + 付费的方式给大家提供服务,并且这种一般有种缺点,只能有一个域名。不像我个人电信IP 可以绑定多个域名,多个端口,支持多种服务。但是好处是 可以是 80端口。

个人推荐如果只是玩玩 可以在网上找一些别人提供好的服务来体验下就可以了。可以搜索引擎搜索关键词:内网转外网 。

如果大家担心被骗,可以加入我们的QQ群,几个人合伙买个服务器(可以按月按年),搭建一个内网转外网的服务。到时候我可以技术支持。

参考资料

原文地址:AIROBOT系统 之 网络配置
标签:airobot   网络   ngrok   frp   花生壳

智能推荐

AIROBOT系统 之 网络配置的更多相关文章

  1. Linux系统基本网络配置之ifconfig命令

    Linux系统基本网络配置之ifconfig命令 一.Linux系统的网络配置基本包括:网络IP的配置.网关路由的配置.主机DNS的配置.主机名的配置等,本篇注重介绍网络IP的配置. 二.Linux系 ...

  2. (转)Linux系统基础网络配置老鸟精华篇

    Linux系统基础网络配置老鸟精华篇 原文:http://blog.51cto.com/oldboy/784625 对于linux高手看似简单的网络配置问题,也许要说出所以然来也并不轻松,因此仍然有太 ...

  3. linux系统基础网络配置

    1.修改主机名 临时方法: 退出当前shell重新登录即可生效.此法只能临时修改生效.重启系统后失效. 提示:很多人使用hostname主机名来修改,其实这个只是作为暂时的.重启后将恢复到配置前的主机 ...

  4. centos系统修改网络配置注意事项

    这也是无意之中发现的,我在做一个远程修改工控机网络配置的程序, 网络配置参数/etc/sysconfig/network-scripts/ifcfg-enp1s0下面,当然名字可能不一样ifcfg-e ...

  5. Linux系统基础网络配置老鸟精华篇

    对于linux高手看似简单的网络配置问题,也许要说出所以然来也并不轻松,因此仍然有太多的初学者徘徊在门外就不奇怪了,这里,老男孩老师花了一些时间总结了这个文档小结,也还不够完善,欢迎大家补充,交流.谢 ...

  6. 【原创】ubuntu14.04 LTS系统VMware虚拟机内Windows server 2008 r2系统的网络配置

    主系统:ubuntu14.04 LTS 虚拟机:VMware 内系统:Windows server 2008 r2 主系统IP:任何IP 内系统IP:192.168.202.128(自动获取,如果不是 ...

  7. 虚拟机安装Linux系统的网络配置

    1. 进入配置文件配置.如果不知道ifcfg 后的内容.使用ifconfig vi /etc/sysconfig/network-scripts/ifcfg-ens33 如果不知道网关怎样配置就找到这 ...

  8. AIROBOT系统 之 踏浪而来

    缘由 为什么要做AIROBOT?其实自从我知道智能家居这个领域之后,就一直想打造一个自己的智能家居控制平台,算是我的一个梦.最开始的项目还是在安居客当时工作的时候做的,项目地址:https://git ...

  9. AIROBOT系统 之 私人存储 和 DLNA 智能电视云

    需求背景 工作多年之后发现有太多的电子资料到处存放.个人电脑是Mac,硬盘都不大,放不了太多东西.并且有时候想随时随地存放一些东西.所有就有了大家一个私有存储的需求 个人休息在家经常喜欢看电影电视剧, ...

随机推荐

  1. 20175204 张湲祯 2018-2019-2《Java程序设计》第三周学习总结

    20175204 张湲祯 2018-2019-2<Java程序设计>第三周学习总结 教材学习内容总结 -第四章类与对象要点: -面向对象语言三个特性:封装性:继承:多态: -类:1.类是组 ...

  2. MySQL建表规范

    一.基础规范 (1)必须使用InnoDB存储引擎 解读:支持事务.行级锁.并发性能更好.CPU及内存缓存页优化使得资源利用率更高 (2)必须使用UTF8字符集 解读:万国码,无需转码,无乱码风险,节省 ...

  3. 3D Slicer中文教程(一)—下载及安装方法

    3D Slicer是用于医学图像信息学,图像处理和三维可视化的开源软件平台. 通过国家卫生研究院和全球开发人员社区的支持,二十多年来,Slicer为医生,研究人员和公众提供了免费,强大的跨平台加工工具 ...

  4. css之自定义滚动条

    <div class="alertbox index-rulebox" style="display:none"> <div class=&q ...

  5. 可持久化并(xian)查(duan)集(shu)

    随便地点开了这道可持久化并查集,发现了真相...这和并查集有 PI 关系哦.除了find_father(而且还不能路径压缩),全都是线段树0.0 题目链接: luogu.org 题目没什么描述,就是三 ...

  6. Python-Django 路由控制器

    1 路由的基本使用: # url是个函数,有四个参数,第一个参数要传正则表达式,第二参数传函数内存地址,第三个参数传默认参数,第四个是路由的别名 url(r'^liuqingzheng/article ...

  7. java入门需了解的历史

    1991年,Sun公司的Green项目,Oak 1995年,推出Java测试版 1996年,JDK1.0 1997年,JDK1.1 1998年,JDK1.2,大大改进了早期版本的缺陷,是一个革命性的版 ...

  8. uni-app调用原生的文件系统管理器(可选取附件上传)

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  9. Linux安装与基本命令

    安装centos镜像 #下载地址https://www.centos.org/download/ http://isoredirect.centos.org/centos/7/isos/x86_64/ ...

  10. Python学习笔记六

    Python课堂笔记六 常用模块已经可以在单位实际项目中使用,可以实现运维自动化.无需手工备份文件,数据库,拷贝,压缩. 常用模块 time模块 time.time time.localtime ti ...