什么是内网穿透
内网穿透,又称为NAT穿透。
NAT穿透技术是让NAT背后的设备,先访问指定的外网服务器,由指定的外网服务器搭建桥梁,打通内、外网设备的访问通道,实现外网设备访问到内网设备。
总之就是内网可以连公网,公网可以连公网和内网,但内网和内网无法连,但在中间加一个公网的中转服就能实现穿透!

目前内网穿透技术有很多,比如收费的花生壳、向日葵、神卓互联、ngrok等等。
当然如果你不想数据掌握在别人手中,且有自己的服务器,那么可以通过开源技术自己搭建一个,比如frp
frp服务器
下载软件包
下载服务器端程序,选择合适的版本即可,比如我的服务器是intel的处理器,且是linux系统

下载到服务器之后,解压。
tar -xzvf frp_0.51.3_linux_386.tar.gz

可以看到有很多文件,因为frp根据平台来区分不同版本,但是把客户端和服务端都压缩到一个文件包中了。
其中frps就是frp server端的部分;frpc 是frp client端的部分。这里我们只需要关心Server端。
可以直接删掉frpc、frpc_full.ini、frpc.ini三个文件,节省硬盘空间。
find . -name 'frpc*' -exec rm {} \;
移动至 /usr/local(非必须 但是个好习惯)
在/usr/local/下创建一个frp文件夹。 /usr/local目录类似于windows系统的C:/Progrem Files/。用户自己编译的软件默认会安装到这个目录下。
mkdir /usr/local/frp
将frp_0.44.0_linux_amd64移动到 /usr/local/frp 里面
mv ./frp_0.51.3_linux_386/* /usr/local/frp/
最终如下

配置软件
服务端配置文件:frps.ini
[common]
bind_port = 7000
vhost_http_port = 7003
【bind_port】:frp server 绑定的端口
【vhost_http_port】:设置 http 访问端口
启动
./frps -c frps.ini

frp客户端
我的服务端在windows上,当然有的人服务端可能在安卓上、ios上或者linux上都有可能
下载软件包

配置软件
客户端配置文件:frps.ini
[common]
server_addr = xx.xx.xx.xx(你服务器ip)
server_port = 7000
vhost_http_port = 7003
[web]
type = http
local_ip = 0.0.0.0
local_port = 8888
custom_domains = xxx.com(你的域名或对应的ip)
【server_addr】:frps云服务的公网ip地址,这里的47.99.x.x是我购买的云服务器ECS的公网ip
【server_port】:frps云服务的端口
【vhost_http_port 】: frps云服务中 设置的 http 访问端口
【type】:请求类型,建议用http,https需要证书。
【local_port】:本地服务器需要暴露到公网上的服务端口(即本地http端口)
【custom_domains】:自定义域名。必须设置。建议新手先直接用ip。设置成功之后再改域名。用域名的话还需要配置域名解析和域名
启动
进入软件包中,使用命令行工具打开(比如cmd或powershell)
.\frpc.exe -c .\frpc.ini

成果
启动一个端口为8888的http服务

然后使用公网访问试试

参考
https://zhuanlan.zhihu.com/p/632560790
https://blog.csdn.net/weixin_43906500/article/details/116403724
https://zhuanlan.zhihu.com/p/612377399?utm_id=0