需求背景

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

内网转外网

顾名思义:就是想办法把自己的内网机器 可以直接 让外网可以访问。由于我们互联网技术不是我们国家发明的,在加入互联网之后我们分配到的公网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. Django之auth模块

    http://www.cnblogs.com/liwenzhou/p/9030211.html 1.首先导入auth模块 from django.contrib import auth 2.创建aut ...

  2. SQL数据插入

    T-SQL中提供了多个将数据插入到表中的语句:insert values.insert select.insert exec.select into和Bulk insert: 1.  insert v ...

  3. c4b和c4f的区别

    1. cc.c4b的参数直接填rgba的值. 2 .cc.c4f(r,g,b,透明度),把rgb值填进去,会发现颜色不对,需要把rgb值除以255,所以最终转换公式是: cc.c3b(r,g,b) = ...

  4. CentOS7上部署taiga项目管理软件

    作者:waringid 一.简介 Taiga 是一个免费开源,而且功能非常强大的项目管理平台,用于初创企业和敏捷开发团队.提供一个简单.漂亮的项目管理工具.Taiga 采用 Python Django ...

  5. matplotlib坐标轴刻度-【老鱼学matplotlib】

    本节主要讲述如何对坐标轴的刻度字体大小以及背景色进行修改. 例如: import numpy as np import pandas as pd import matplotlib.pyplot as ...

  6. NOIP2011 D2T3 观光公交 做题笔记

    目录 归纳题目的性质 算法 60分 100分 code 大家来找茬 总结 归纳题目的性质 每一个加速器效果相同(1) 车子等到所有人上车之后才会发车, 这个最早发车时间不由加速器的配比决定(2) 要优 ...

  7. 【C语言程序】基因编码

    输入一个长为n=2k(k≤8)01串s,按照"ABC编码规则"进行编码,ABC编码规则是: A                      //若s串全是0 T(s)=        ...

  8. Spring MVC 原理探秘 - 容器的创建过程

    1.简介 在上一篇文章中,我向大家介绍了 Spring MVC 是如何处理 HTTP 请求的.Spring MVC 可对外提供服务时,说明其已经处于了就绪状态.再次之前,Spring MVC 需要进行 ...

  9. react中constructor()和super()的具体含义以及如何使用

    1.constructor()---super( )的基本含义 constructor()--构造方法 这是ES6对类的默认方法,通过new命令生成对象实例时自动调用该方法.并且,该方法是类中必须有的 ...

  10. centos7-- sbt的安装使用

    sbt是一款类似于maven的构建工具 安装sbt curl https://bintray.com/sbt/rpm/rpm > bintray-sbt-rpm.repo mv bintray- ...