需求背景

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

内网转外网

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

    一.字段 常用字段: AutoField:int自增列,必须填入参数 primary_key=True.当model中如果没有自增列,则自动会创建一个列名为id的列. IntergerField:一个 ...

  2. JavaWeb - apache和tomcat是如何配合工作的

    ref: https://jingyan.baidu.com/article/47a29f246f354ec0142399dc.html 网上有很多的介绍apache和tomcat的区别,但大部分都是 ...

  3. Django组件-用户认证

    用户认证 一.auth模块 from django.contrib import auth django.contrib.auth中提供了许多方法,这里主要介绍其中的三个: 1.1 .authenti ...

  4. HTTP协议12-HTTPS

    1)HTTP的缺点 通信使用明文(不加密),内容可能会被窃听 不验证通信方的身份,因此有可能遭遇伪装 无法证明报文的完整性,所有有可能已被篡改 1.1 通信使用明文可能会被窃听 由于HTTP本身不具备 ...

  5. [Ynoi2018]末日时在做什么?有没有空?可以来拯救吗?

    这道题真的超级...毒瘤 + 卡常 + 耗 RP 啊... 传送门 noteskey 题解看 shadowice 大仙 的 code 如果发现自己 T 掉了,别心急,洗把脸再交一遍试试... //by ...

  6. jarvis level6_x64堆溢出unlink拾遗

    level6 32位的我没有调出来,貌似32位的堆结构和64位不太一样,嘤嘤嘤?,所以做了一下这个64位的,题目地址,level6_x64 首先看一下程序的结构体 struct list //0x18 ...

  7. ROS-十步完成ROS-indigo安装

    Ubuntu 版本是14.04.5.(这个版本的ubuntu的内核是V4.4的内核,长期维护到2019年,是14代比较稳定的,反正用这个安装就没有什么依赖的头疼的问题,安装ROS很方便,可以去清华的网 ...

  8. Java面试题复习笔记(数据库)

    1.数据库分类? 关系型数据库和非关系型. 常用关系型:Myspl.Oracle.SQLServer 非关系型:Redis.Hadoop.Memcache.Mogobd 2.关系数据库三范式? 范式就 ...

  9. Flask开发微电影网站(四)

    会员中心页面,如下图所示 用户登录后,修改密码页面,如下图所示 用户查看自己的评论页面,如下图所示 用户查看自己的登录日志页面,如下图所示 用户查看自己收藏的电影的页面,如下图所示 1. 定义用户主页 ...

  10. jmeter测试wordpress使用base64进行鉴权

    1.下载插件 对密码进行加密 2.安装插件 3.使用插件 4.使用base64对上面获取到的密码进行二次加密 echo -n "用户:密码" | base64 将以上命令键入lin ...