关于内网穿透,主要针对什么是公网和内网?NAT转化技术等引出内网穿透方法。
本文主要技术是利用frp部署内网穿透、以及nagix部署web服务。
测试环境:
- 服务器:Linux云服务
- 内网:用本地WM充当内网
- 云服务器Linux:验证内网穿透
什么是公网和内网?
为了搞清楚什么是公网和内网,就要从IP地址谈起。我们现在用的网络层协议大部分是IPV4,当然也存在IPV6(IPv6不存在内容穿透,这里不做讨论)。
IPv4的地址是以32位bit,在当今的发展下,如果为每一台主机都偶配一个独一无二的ip地址,是不可能的。更别说IP地址会被划分成好几类,能够真正被我们使用的地址少之又少。
因此一种技术将IP地址分成全局和局部的地址被人们认可。
规定在全局的网络地址是不可重复的,而处于局部的地址是相较于全局的地址是可以重复的?
什么意思呢?假如说有俩个局域网,俩个局域网同时存在192.168.1.1这台主机地址,是被允许的。因为它们在全局上不会以192.168.1.1来展示自己,这里涉及到NAT转化,后续介绍。
所以再来重新理解一下公网和内网。
- 内网IP:用户在使用局域网时候,由局域网网关分配的 IP地址,每一个内网IP可以映射到当前局域网网关的对应接口(IP+端口号共同组成),处于同一局域网下的设备是可以被互相访问到的。
- 公网IP :用户向访问非局域网上的资源必须经过公网,自己也会存在公网IP,这是由NAT转换技术提供的,每一个公网IP都可以在全局中被定位到。
举例:
在学校中,校园网通常就是一个局域网。每一个连接校园网的设备在内都有ip地址,但是访问外界资源时,又会存在全局的ip地址。这个ip地址是单向的,只能由内到外。所以不在校园网的设备想要直接访问校园网是不可能,因为局域网下的Ip是不可被直接知道的。
NAT转化技术
NAT技术就是全局地址的复用,即在局域网的设备公用一个地址。
常见的NAT转化技术有三种:静态、动态、端口多用等。
- 静态转化:内网IP直接转化为公网IP,形成一一对应
- 动态转化:从ip池中选择一个空闲的ip作为公网的IP。即每次重新经过转化的公网IP是不相同的 。
- 端口复用:对外表现为ip相同,不同的是端口号
内网穿透的原理
内网向公网建立连接时,就会进行NAT转化,把转化的结果保存在NAT转化表中,就打通了内网到服务器这一端。同时服务器到内网的请求,都会在NAT转化表从公网IP转化为内网IP。所以这是互相打通的。
这时候服务器和公网是建立连接的,如果另一个局域网的机器B想给内网机器A发消息。
可以先和服务器建立连接,然后通过服务器,将主机B发送的转发到内网主机B上,这样就实现了内网穿透。
手工部署内网穿透
用来测试的机器WM,模拟在校园网内的机器。
服务器+FRP负责消息转发的技术。
CLient:利用Linux作为访问内网的机器。
1.将frp文件上传到Linux服务端
2.在需要被穿透的机器上传frp文件
3.配置服务器端frp文件
vim 打开服务器配置文件
vim frps.toml
在配置文件中,会看到绑定端口 ,这个端口号是给待穿透的客户端看的。
用于建立服务器到客户端的连接。
4.配置待穿透机器的配置文件
vim frpc.toml
- 第一行server需要被设置为服务器的地址:我的云服务器地址是"118.126.95.41"
- 第二行为服务器配置文件中设置的端口号
proxies:
由于我要验证的是ssh登录,所以localport选择22
远程登录端口:这个端口是给另一个客户端看的,告诉服务器,如果我往8089发的消息,需要被转发到内网中的主机A。
5.启动服务端并且加载配置文件
./frps -c frps.toml
6.启动客户端并且加载配置文件
./frpc -c frpc.toml
验证SSH
新建一个linux用户,主机IP为云服务器的ip,端口为客户端配置过的端口8089
内网穿透就完成,通过内网主机A的账号+密码,就能访问其内部的资源。
创建的test文件就能在虚拟机中看到,做到了访问局域网。
连接nagix
如果你的机器没有安装nagix
sudo sudo apt-get install nginx
修改客户端配置文件
frp支持转发多个端口
部署nagix转发,将8087转发为nagix
将本地localport改为80,因为nagix的默认服务端口就是80
启动服务器,启动客户端
在浏览器中访问118.126.95.41这个服务就会被服务器转发给内网的主机A并且转发到80号端口的服务上。就完成了Web服务的部署。