文章目录
- 手动部署并测试内网穿透
- 1、原理
- 2、下载 frp 文件
- 3、配置对应的配置文件
- 4、启动 frp 服务
- 5、效果
手动部署并测试内网穿透
1、原理
原理就是让你需要访问的内网可以被其他内网访问到。
其实就是让内网经过一个公网服务器的转发,使得能够被访问。
这里我们需要用到 frp:
FRP(Fast Reverse Proxy)是一款开源的反向代理工具,通常用于内网穿透。它可以让处于防火墙或NAT后的设备对外提供服务,允许外网用户访问位于内网中的服务器或服务。
步骤:
- 先让公网服务器下载一个 frp 文件,配置其对应的配置文件并启动,这里作为服务器端。
- 再让需要被访问的内网对你的服务器进行连接,进行对应的 IP 地址和端口映射(这里也需要配置对应的配置文件)。
- 接下来发送到你服务器的对应端口的数据就会被转发到该内网中对应的 IP 和映射端口。
- 同理,内网中对应的 IP 和端口的数据也可以发送到访问它的 IP 中。
2、下载 frp 文件
frp 文件的下载链接
3、配置对应的配置文件
我们下载好对应的文件,对其进行解压缩,分别放到云服务器(有公网 IP )和需要访问的内网主机上。
下面是举例访问内网的 ssh 服务器
云服务器端:
xp2@Xpccccc:~$ ll total 76 drwxr-xr-x 9 xp2 xp2 4096 Sep 19 12:09 ./ drwxr-xr-x 5 root root 4096 Aug 31 18:34 ../ -rw------- 1 xp2 xp2 9335 Sep 19 12:09 .bash_history -rw-r--r-- 1 xp2 xp2 220 Feb 25 2020 .bash_logout -rw-r--r-- 1 xp2 xp2 3106 Aug 31 18:35 .bashrc drwx------ 4 xp2 xp2 4096 Sep 1 21:28 .cache/ drwxrwxr-x 3 xp2 xp2 4096 Sep 1 20:28 .dotnet/ drwxr-xr-x 2 xp2 xp2 4096 Sep 19 12:09 frp_0.58.1_linux_amd64/ # 下载解压好的文件 -rw-rw-r-- 1 xp2 xp2 50 Sep 10 16:04 .gitconfig drwxrwxr-x 4 xp2 xp2 4096 Sep 6 11:13 items/ drwxrwxr-x 4 xp2 xp2 4096 Sep 10 16:02 Items/ -rw------- 1 xp2 xp2 34 Sep 4 01:59 .mysql_history -rw-r--r-- 1 xp2 xp2 161 Aug 31 18:35 .profile -rw-r--r-- 1 xp2 xp2 0 Sep 3 20:28 .sudo_as_admin_successful drwxrwxr-x 4 xp2 xp2 4096 Sep 6 10:16 third_part/ -rw------- 1 xp2 xp2 2558 Sep 19 12:09 .viminfo drwxrwxr-x 5 xp2 xp2 4096 Sep 10 12:42 .vscode-server/ -rw-rw-r-- 1 xp2 xp2 183 Sep 1 20:26 .wget-hsts xp2@Xpccccc:~$
进入 frp 文件进行配置:
xp2@Xpccccc:~$ cd frp_0.58.1_linux_amd64/ xp2@Xpccccc:~/frp_0.58.1_linux_amd64$ ll total 31980 drwxr-xr-x 2 xp2 xp2 4096 Sep 19 12:09 ./ drwxr-xr-x 9 xp2 xp2 4096 Sep 19 12:09 ../ -rwxr-xr-x 1 xp2 xp2 14471320 May 31 14:37 frpc* -rw-r--r-- 1 xp2 xp2 142 May 31 14:40 frpc.toml -rwxr-xr-x 1 xp2 xp2 18239640 May 31 14:37 frps* -rw-r--r-- 1 xp2 xp2 16 Aug 31 19:08 frps.toml -rw-r--r-- 1 xp2 xp2 11358 May 31 14:40 LICENSE xp2@Xpccccc:~/frp_0.58.1_linux_amd64$
这里是服务器端,那我们配置
frps.toml
文件(s -> server):xp2@Xpccccc:~/frp_0.58.1_linux_amd64$ vim frps.toml
bindPort = 7777 // 这个是对应的内网主机访问云服务器的端口号,建立TCP连接
内网服务器主机端:
(base) ynu@3090ti:/data/runcode/xp$ ll 总计 24 drwxrwxr-x 6 ynu ynu 4096 8月 30 22:03 ./ drwxrwxrwx 30 ynu ynu 4096 8月 30 20:27 ../ drwxr-xr-x 4 ynu ynu 4096 9月 14 21:18 data/ drwxr-xr-x 2 ynu ynu 4096 9月 19 12:02 frp_0.58.1_linux_amd64/ # 下载解压好的文件 drwxrwxr-x 3 ynu ynu 4096 9月 13 21:12 .idea/ drwxrwxr-x 4 ynu ynu 4096 7月 29 14:57 venv/ (base) ynu@3090ti:/data/runcode/xp$
进入 frp 文件进行配置
(base) ynu@3090ti:/data/runcode/xp/frp_0.58.1_linux_amd64$ ll 总计 31980 drwxr-xr-x 2 ynu ynu 4096 9月 19 12:02 ./ drwxrwxr-x 6 ynu ynu 4096 8月 30 22:03 ../ -rwxr-xr-x 1 ynu ynu 14471320 5月 31 14:37 frpc* -rw-r--r-- 1 ynu ynu 153 8月 31 19:09 frpc.toml -rwxr-xr-x 1 ynu ynu 18239640 5月 31 14:37 frps* -rw-r--r-- 1 ynu ynu 16 8月 30 12:46 frps.toml -rw-r--r-- 1 ynu ynu 11358 5月 31 14:40 LICENSE
这里是客户端,那我们配置
frpc.toml
文件(c -> client):(base) ynu@3090ti:/data/runcode/xp/frp_0.58.1_linux_amd64$ vim frpc.toml
serverAddr = "101.126.70.48" serverPort = 7777 // 访问云服务器的端口号 ,建立TCP连接 [[proxies]] name = "new_ssh-service" // 名称 type = "tcp" // 代理类型 localIP = "127.0.0.1" // 本地IP localPort = 22 // 内网服务监听的端口,也就是ssh服务 ,即7778映射22号端口 remotePort = 7778 // #需要在公网服务器上监听的端口,其他人未来可以通过这个端口访问,我们的本地的 22 号服务
4、启动 frp 服务
服务器和客户端都可以这样在后台启动
云服务器端:让其在后台运行(成为守护进程)
xp2@Xpccccc:~/frp_0.58.1_linux_amd64$ nohup ./frps -c ./frps.toml &>/dev/null &
被访问的内网主机端:
(base) ynu@3090ti:/data/runcode/xp/frp_0.58.1_linux_amd64$ nohup ./frpc -c ./frpc.toml &>/dev/null &
&> /dev/null
:这是重定向操作,用于将命令的标准输出(stdout)和标准错误(stderr)都重定向到/dev/null。/dev/null 是一个特殊的设备文件,向它写入的内容都会被丢弃,读取它则会立即返回文件结束。因此,这个操作的作用是忽略命令的所有输出信息。
5、效果
OKOK,手动部署并测试内网穿透就到这里。如果你对Linux和C++也感兴趣的话,可以看看我的主页哦。下面是我的github主页,里面记录了我的学习代码和leetcode的一些题的题解,有兴趣的可以看看。
Xpccccc的github主页