## 简介
**内网穿透**,也即 NAT 穿透,进行 NAT 穿透是为了使具有某一个特定源 IP 地址和源端口号的数据包不被 NAT 设备屏蔽而正确路由到内网主机。简易示意如下:
![](http://picture.gotarget.top/%E5%9B%BE%E7%89%87/typero/image-20220324133939591.png)
**可以把内网穿透当成是由公网设备为内网设备和网络用户之间的中间人,使得网络用户可以直接访问原本不可能访问得的内网资源。**
### 常见用法
- 远程桌面(3389端口代理-tcp)
- 远程shell管理(22端口代理-tcp)
- 本地网站公网映射(-http)
- 其余玩法自己去发掘
## 个人搭建
### 预备资源
- 目前个人搭建的内网穿透常使用**frp**项目,这也是目前很稳定适用的一款内网穿透工具
- 准备资源
- frp项目源地址:[GitHub传送门](https://github.com/fatedier/frp)
- frp安装资料:
- windows:[下载](https://owncloud.gotarget.top/Windows/%E5%BC%80%E5%8F%91%E5%B7%A5%E5%85%B7/FRP%E5%86%85%E7%BD%91%E7%A9%BF%E9%80%8F/frp_windows.exe)
- Linux :[下载](https://owncloud.gotarget.top/Linux/%E5%86%85%E7%BD%91%E7%A9%BF%E9%80%8F/frp_linux.zip)
**注意**:如果你是在linux上部署服务端,而在windows上启动客户端,那么请下载linux和windows的安装资料,分别使用linux的frps文件、windows的frpc作为服务端和客户端执行程序。
### 项目部署
#### 服务端
##### 初步部署
- 第一步:先下载自己需求的对应压缩包
- 第二步:将解压后的压缩包中的frps和frpc文件分类,前者对应服务端使用,后者对应客户端使用
- 第三步:将frpc的文件保存在本地,其余文件上传到服务器中
- 第四步:打开服务器的6000和7000端口(云服务器需要到服务器的安全组中开启)
- 第五步:终端进入frp的文件保存目录,执行
- `./frps -c ./frps.ini` ——(Linux启动命令)
- `frps.exe - c frps.ini`——(windows启动命令)
- 启动成功
![image-20220324140512615](http://picture.gotarget.top/%E5%9B%BE%E7%89%87/typero/image-20220324140512615.png)
- 当然,这只是很简单的使用其默认配置,它的配置文件在**frps_full.ini**中,自己如有需求,参照官方的资料和其他资料都是可以的
- 官方资料:[传送门](https://github.com/fatedier/frp)
- 个人参考:[传送门](https://juejin.cn/post/7039649963814420517#heading-6)
- 比较重要的是,需要将配置文件中的默认token修改一下(默认token为12345678),而后客户端链接时也需要修改**frpc_full.ini**中的token值才能正常链接
##### 服务端后台自运行
- 因为服务端是通过终端启动,所有当终端关闭后,服务端也将随之关闭。那我们就需要一种方法使得服务端可以长期保活。
- 使用环境
- 腾讯云
- Centos7
- 宝塔面板
- 使用宝塔的Supervisor管理器(软件商店免费)进行后台保活
- **名称**随意,**运行目录**填写frp文件所在地
- 执行命令,建议使用文件的绝对路径(使用./frps - c ./frps.ini 命令启动失败)
```
命令示例:
frps绝对路径 -c frps.ini绝对路径
/www/wwwroot/frps -c /www/wwwroot/frps.ini
```
![image-20220324143133042](http://picture.gotarget.top/%E5%9B%BE%E7%89%87/typero/image-20220324143133042.png)
#### 客户端
##### 配置连接
- 修改frpc.ini文件内容
```
[common]
server_addr = xx.xx.xx.xx(填写你的服务器端IP地址)
server_port = 7000
[ssh]
type = tcp(代理方式)
local_ip = 127.0.0.1
local_port = 22
remote_port = 6000(所有数据由6000端口进行传递,服务器6000端口也承担着数据接收和传递的工作)
```
- 配置token值(frpc_full.ini)
```
# auth token
token = 12345678(更改为自己先前修改的token,同步frps_full.ini)
```
##### 启动代理
- 第一步:终端到达frpc存放文件目录下
- 第二步:执行启动指令
- windows——`frpc -c frpc.ini`
- lilnux——`./frpc -c ./frpc.ini`
- 启动成功
![image-20220324144451398](http://picture.gotarget.top/%E5%9B%BE%E7%89%87/typero/image-20220324144451398.png)
#### 测试运用
- 测试环境
- centos虚拟机(ip地址:192.168.109.133)
- 代理配置
```
[common]
server_addr = 42.192.0.129
server_port = 7000
[ssh]
type = tcp
local_ip = 192.168.109.133
local_port = 22
remote_port = 6000
```
- 穿透成功(内网的Centos虚拟机成功的由公网进行链接)
- 至于更多的操作,就看个人发挥了哦。
- 注意,进行链接操作时,远程服务器是由6000端口进行数据服务的!(后续进行操作时,公网端口一致填6000)
![image-20220324145245209](http://picture.gotarget.top/%E5%9B%BE%E7%89%87/typero/image-20220324145245209.png)
## 其他内网穿透产品
- **花生壳**:[传送门](https://hsk.oray.com/)
- http需认证(6元)
- tcp代理动态端口(可购买固定端口)
- 每月免费1GB流量,学生认证每月5GB流量
- 一个免费的三级域名(还有一个30天会过期)
- 使用他们的应用程序便可以直接使用,方便使用
- **ngrok**(未使用过):[传送门](https://ngrok.com/)
- 不限流量
- 国外项目(国内可用)
- 据传不太稳定
- **网云穿**(未使用过):[传送门](https://xiaomy.net/)
- **natapp**(未使用过):[传送门](https://natapp.cn/)
- **蜻蜓映射**(未使用过):[传送门](https://flynat.51miaole.com/)
内网穿透搭建及使用