内网穿透的背景有点复杂,它是互联网IPv4协议没有解决的问题,内网穿透就算是一个解决方案。坦克访问入口支持内网穿透功能。我把我知道的关于内网穿透的知识尽力写出来告诉读者,并且,我会教你如何使用坦克访问入口部署内网穿透解决方案。想知道如何,请阅读这篇文章。
## 网络划分技术的出现
![坦克访问入口之网络背景.png](https://static.golangjob.cn/230521/d93b582a1f18d4da6f524de31417b107.png "坦克访问入口之网络背景")
互联网上有很多电脑主机,电脑通信就需要IP地址。如果把互联网当作一个网络,那这个范围就太大了,一个网络容纳几十亿台电脑,数据传输一次,就要遍历几十亿个端口,找到对的,然后发送出去。为了提高数据传输速度,提高转发效率,这时就会出现网络划分,把网络划分为很多子网络,网络与网络之间有一个网关,数据发送出去到达网关后,网关根据目标IP的归属,确定IP属于那个子网,然后发送到它的子网,如果子网再划分子网,继续上面的程序,一直到达目的IP。这样,网络就会提高了效率。
网络划分了,到了边界,不同的子网就会出现相同的IP,比如,我的局域网有192.168.2.1这个IP,你的局域网也有这过IP。
公网访问局域网192.168.2.1这个IP,网关不知道它属于那个子网。所以无法到达。
反过来,局域网可以访问公网,因为公网IP是唯一的。
## 内网穿透技术
![内网穿透.png](https://static.golangjob.cn/230521/897df6355ca98b132efa494ea3e90d69.png "内网穿透")
对互联网来说,用户是无法访问你的局域网服务的,为了解决这个问题,就需要内网穿透功能。内网穿透功能就像上面的图一样,这是一个简单的原理图。公网服务器与内网服务器连起来,当用户通过互联网访问公网服务器,公网服务器会发送一个消息给局域网服务器 **(本身公网服务器无法发送数据到局域网服务器的,它能够发送是因为局域网服务器启动的时候,与公网服务器建立了一个链接,并且永远不断开这个链接,即使断开也要自动重新链接上去。)** ,局域网服务器收到消息后解析里面的内容,查看它访问的资源路径(通过URI),然后拿到后端资源,响应给公网服务器,公网服务器再响应给用户。
这条链接永远保持生存,原理就是这样。
## 坦克访问入口的内网穿透解决方案
内网穿透原理就是这么简单,实现内网穿透原理的软件也有很多,本篇文章在这部分讲解坦克访问入口(简称:坦克AW/Access Way)。在AWS弹性云服务器上部署坦克AW来实施内网穿透解决方案。这个方案同时也适合其它云服务提供商。这篇文章不会讲解AWS EC2安装配置,这篇文章需要你具备下列技能:
* **AWS账号**
* **AWS EC2实例(已经绑定弹性IP)**
* **域名**
* **[Tconf配置文件格式](https://www.tankprint.online/2023/02/11/TCONF%E6%A0%BC%E5%BC%8F%E4%BB%8B%E7%BB%8D.html)**
![坦克内网穿透.png](https://static.golangjob.cn/230521/f82715022210b6699f42abd9b7c86ab8.png "坦克内网穿透")
你已经具备了上面列出的条件,我开始讲解一些配置知识给你,这篇文章不会带你看一遍坦克AW的安装与配置过程,我认为那样你学不到知识。我会在这篇文章讲解所有坦克AW的内网穿透知识。坦克AW的知识就在配置文件里面,所以,接下来我用配置文件来讲解知识点。
下面是坦克AW的配置文件
文件名:`生产环境.tconf` ,你先不要去看如何安装程序,先听我讲讲这些知识。它很容易的,我是官方,你可以完全信任我。
```
,,=《{》}#“"”"
语言=zh-CN
虚拟机《
目录=虚拟机
HTTPS证书目录=虚拟机/HTTPS证书
HTTPS根证书目录=虚拟机/HTTPS证书/根证书
》
#如果你把tankaw用作内网穿透服务器,可以把下面这行的两个#删除,坦克aw不能同时运行为《内网穿透服务器》和《内网穿透客户端》,所以,当你设置为服务器的时候就需要把客户端注释掉。
##成为内网穿透服务器《
内网穿透端口=9098
》
#如果你把tankaw用作内网穿透客户端,可以把下面这行的两个#删除,坦克aw不能同时运行为《内网穿透服务器》和《内网穿透客户端》,所以,当你设置为客户端的时候就需要把服务器注释掉。
##成为内网穿透客户端《
内网穿透端口=9098
内网穿透远程地址=0.0.0.0 #需要设置
#请把后端对象里配置的域名解析到内网穿透服务器的IP地址
后端《
tankaw.tankprint.online=127.0.0.1:9098
》
》
```
坦克AW开始运行就会读取这个配置文件,这个文件主要有三部分:第一部分是网站虚拟机。第二,第三部分是内网穿透,第二部分是内网穿透服务器,第三部分是内网穿透客户端。所以,只需要知道第二,第三部分就可以了,很简单的。先从第二部分开始。
## 内网穿透服务器的知识
```
#如果你把tankaw用作内网穿透服务器,可以把下面这行的两个#删除,坦克aw不能同时运行为《内网穿透服务器》和《内网穿透客户端》,所以,当你设置为服务器的时候就需要把客户端注释掉。
##成为内网穿透服务器《
内网穿透端口=9098
》
```
回想上面的第二张图,以及那一段内容,你应该回忆起它的原理了,服务器只做接收互联网用户的访问,然后发送一个消息给内网穿透客户端。然后等待内网穿透客户端返回消息,再返回互联网用户。
所以服务器的配置只有一行。把`##成为内网穿透服务器`前面的两个井号删除就可以了,重启坦克AW,它就成为内网穿透服务器了。同时,它不会影响网站服务器任何功能。关于**端口**,这个**端口**是给内网穿透客户端链接使用的。所以,等下配置内网穿透客户端的时候需要配置一个一样的**端口**。既然客户端要访问过来了,你就需要打开**安全组入口端口**。
记住,是打开**安全组入口端口**
## 内网穿透客户端的知识
```
#如果你把tankaw用作内网穿透客户端,可以把下面这行的两个#删除,坦克aw不能同时运行为《内网穿透服务器》和《内网穿透客户端》,所以,当你设置为客户端的时候就需要把服务器注释掉。服务端的知识就到这里了。
##成为内网穿透客户端《
内网穿透端口=9098
内网穿透远程地址=0.0.0.0 #需要设置
#请把后端对象里配置的域名解析到内网穿透服务器的IP地址
后端《
tankaw.tankprint.online=127.0.0.1:9098
》
》
```
你回忆一下上面的图和内网穿透原理,客户端启动的时候就会和内网穿透服务器建立链接,链接需要知道内网穿透服务器的地址和端口。所以就有这两行:
```
内网穿透端口=9098
内网穿透远程地址=0.0.0.0 #需要设置
```
这个`0.0.0.0`需要改成内网穿透服务器的IP地址,只要这个配置好,内网穿透客户端就可以与内网穿透服务器链接了。上面的知识就是内网穿透的所有知识了。
### 配置内网穿透虚拟机
这个独立拿出来说,因为它与网站虚拟机一样。就像你在公有云配置网站虚拟机一样。
客户端和服务器链接起来了,那么,互联网访问你的什么服务?你需要把什么服务提供给互联网用户?这就需要配置一个后端《》对象,就有了这个:
```
#请把后端对象里配置的域名解析到内网穿透服务器的IP地址
后端《
tankaw.tankprint.online=127.0.0.1:4000
》
```
你现在在局域网有一个网站服务运行在`4000`端口,你希望互联网用户通过`tankaw.tankprint.online`这个域名访问你的网站服务。只要在后端对象里面添加一行:`tankaw.tankprint.online=127.0.0.1:4000`,如果还有其它服务,只要把域名和地址端口继续添加新行就可以了。
最后,你感觉还有什么,现在内网穿透成了黑盒子,你配置了后端虚拟机,还有什么,你想想。那就是域名解析了,对吧。**把后端对象里的所有域名解析到公网的内网穿透服务器就OK了。**
记得把`##成为内网穿透客户端`前面的两个#号删除。
知识给大家讲完了,很遗憾没有给你展示安装配置过程,但你懂得上面的知识后,我相信你会搞定它。祝你好运,我是官方。
## 总结
前半篇文章与大家讲解了互联网网络划分的背景,还有内网穿透原理,后半篇文章讲解坦克AW内网穿透的3个知识点。
有疑问加站长微信联系(非本文作者))