自学内容网 自学内容网

手动部署并测试内网穿透


img

手动部署并测试内网穿透

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  830 22:03 ./
drwxrwxrwx 30 ynu ynu 4096  830 20:27 ../
drwxr-xr-x  4 ynu ynu 4096  914 21:18 data/
drwxr-xr-x  2 ynu ynu 4096  919 12:02 frp_0.58.1_linux_amd64/ # 下载解压好的文件
drwxrwxr-x  3 ynu ynu 4096  913 21:12 .idea/
drwxrwxr-x  4 ynu ynu 4096  729 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  919 12:02 ./
drwxrwxr-x 6 ynu ynu     4096  830 22:03 ../
-rwxr-xr-x 1 ynu ynu 14471320  531 14:37 frpc*
-rw-r--r-- 1 ynu ynu      153  831 19:09 frpc.toml
-rwxr-xr-x 1 ynu ynu 18239640  531 14:37 frps*
-rw-r--r-- 1 ynu ynu       16  830 12:46 frps.toml
-rw-r--r-- 1 ynu ynu    11358  531 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主页


原文地址:https://blog.csdn.net/qq_44121078/article/details/142406474

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!