一. 什么是内网穿透
内网穿透是一种技术,它能让处于内网(比如家庭网络或企业内部网络)中的设备,在不直接暴露于公网的情况下,通过一些特殊的设置和工具,让外部网络中的设备也能访问到内网中的设备或服务。
打个比方,你家就像一个内网,家里的电脑、手机等设备组成了这个内网中的 “小世界”。通常情况下,这些设备通过家里的路由器连接到互联网,但它们在互联网上是隐藏的,外部的人无法直接访问你家设备上的东西。
现在,假设你在家里搭建了一个私人的照片分享网站,只希望让一些特定的朋友能访问到这个网站,查看你分享的照片。但因为你家的设备在内网,朋友们从外面的互联网无法直接访问到。这时候,你就可以使用内网穿透技术。通过在内网穿透平台上进行一些设置,你可以获得一个公网的地址(就好像给你家的照片分享网站在互联网上开了一个 “窗口”),然后把这个地址告诉朋友们,他们就能通过这个地址访问到你家里的照片分享网站了,就像这个网站直接放在互联网上一样,这就是内网穿透的作用。
二. 部署内网穿透的步骤
1.下载frp https://github.com/fatedier/frp/releases/tag/v0.58.1
2.下载Watt Toolkit https://steampp.net/
避免访问github时过慢,可以下载这个软件用来加速。
三.测试
1. ssh的远程登陆
(1)所需设备
需要一台虚拟机作为被远程登陆的客户端,准备一台有公有ip的云服务用来做为服务端。
(2)将下好的压缩包包直接导入虚拟机与云服务器
(3) tar -xzf 解压压缩包
用tar -xzf + 压缩包名字 解压.tar.gz文件,获取蓝色的文件,内部自带服务端frps(服务端)与frpc(客户端)的可执行程序。
(4) 改变服务端 提供 listen端口
- vim frps.toml
这里可以随便改,也可以不改,改成8888方便记忆。
(5)启动服务端可执行程序
输入命令 ./frps -c frps.toml
这里要带 -c 才使用配置文件运行 才会使用到自己设置的端口号8888作为 listen套接字获取连接
(6)修改被远程登陆客户端配置文件
vim frpc.toml
将remotePort 改为8081端口(该端口为服务端8081号端口,用来映射自己的私有Ip端口),连接的服务端地址改成 服务器 的公有ip,服务端端口改为修改好的8888端口。
(7) 启动被远程登陆客户端可执行程序
./frpc -c frpc.toml
此时可以看到服务器有一条新的消息,服务器8081号端口被启动了。
(8)此时再用xshell启用一个客户端 只不过端口改为8081号端口
点击确定 再 连接
此时该客户端已经远程登陆上了我们的虚拟机了。
我们可以用Xshell上的客户端 进入 Desktop 文件 touch 一个文件,此时远程的虚拟机桌面上就会多出一个自己所 touch 出来的文件。
此时就完成了 远程登陆 测试模块。
2. nginx远程访问
1. 安装一个nginx代理服务器
sudo yum install nginx # centos 安装
sudo apt install nginx # ubuntu 安装
#启动
$ nginx
#暂停
# nginx -s stop
安装好后启动
2. 启动后查看nginx所使用到的端口号
这里可以看到nginx所使用的端口是80号端口,此时在虚拟机客户端修改frpc.toml配置文件
再添加一个字段 对应 服务器的8082号端口。
nginx 首页默认 apt 安装之后,首页是:/var/www/html/XXX(index.nginx-debian.html)
此时这里使用到了http服务,我们用浏览器浏览 服务器公有Ip 加 8082端口号 即可看到 Nginx 所提供的http服务了。
由于我修改了 .html 文件所以界面就是这个样子,正常的华一般是 hello Nginx 的界面。
四.将客户端与服务端放置后台运行
nohup ./frpc -c ./frpc.toml &> /dev/null &
nohup ./frps -c ./frps.toml &> /dev/null &
&> /dev/null:这是重定向操作,用于将命令的标准输出(stdout)和标准错误(stderr)都重定向到/dev/null。/dev/null 是一个特殊的设备文件,向它写入的内容都会被丢弃,读取它则会立即返回文件结束。因此,这个操作的作用是忽略命令的所有输出信息。