【网络】手动部署并测试内网穿透

发布于:2025-03-19 ⋅ 阅读:(18) ⋅ 点赞:(0)

📢博客主页:https://blog.csdn.net/2301_779549673
📢博客仓库:https://gitee.com/JohnKingW/linux_test/tree/master/lesson
📢欢迎点赞 👍 收藏 ⭐留言 📝 如有错误敬请指正!
📢本文由 JohnKi 原创,首发于 CSDN🙉
📢未来很长,值得我们全力奔赴更美好的生活✨

在这里插入图片描述

在这里插入图片描述


📢前言

内网穿透​(NAT Traversal 或 Port Forwarding)是一种技术手段,用于让外部网络(如互联网)的设备访问位于内网(如家庭或企业局域网)中的服务或设备。它的核心目的是绕过内网环境中的网络限制​(如路由器NAT、防火墙等),实现内外网络的互联互通。

这里笔者将通过 腾讯云LInux-UbuntuXMware虚拟机-Ubuntu 以及 本地window 模拟一下内网穿透。


🏳️‍🌈一、获取内网穿透的源码

frp下载: https://github.com/fatedier/frp/releases/tag/v0.58.1

在这里插入图片描述
下载好后是这样的一个压缩包,我们先放到win桌面上,然后直接拖到腾讯云
在这里插入图片描述
然后解压
在这里插入图片描述

🏳️‍🌈二、验证win与虚拟机之间的联系

使用虚拟机的命令行窗口
在这里插入图片描述
输入 ifconfig 来获取ipv4地址,192.168.245.128
在这里插入图片描述
如果没法使用 ifconfig,可以使用sudo apt update && sudo apt install net-tools来安装一下ifconfig命令

因为等等要使用scp命令将frp压缩包传到虚拟机上,需要用到ssh命令,所以我们需要先安装相关命令,然后再启动

sudo apt install openssh-server		# 安装 SSH 服务
sudo systemctl start ssh    		# 启动 SSH 服务(Ubuntu 使用服务名 `ssh`,不是 `sshd`)
sudo systemctl enable ssh   		# 设置开机自启
sudo systemctl status ssh   		# 检查服务是否运行

出现 active(running)就代表可以使用了
在这里插入图片描述
如果系统启用了防火墙(如 ufw),放行 22 端口:

sudo ufw allow 22    # 允许 SSH 端口
sudo ufw reload      # 重载防火墙规则

紧接着我们使用win的命令行窗口使用ping命令验证一下两者之间的联系
在这里插入图片描述
进入下载的安装包所在的文件夹中,远程拷贝这个frp安装包到虚拟机中

在这里插入图片描述
在这里插入图片描述
传输成功
在这里插入图片描述
解压出来
在这里插入图片描述

🏳️‍🌈三、运行腾讯云服务器服务端

这里做一个简单的测试,我们将frps.toml里的端口号从7000改成8888,再运行一下frps文件,会发现还是使用的是7000端口号

wzy@VM-20-5-ubuntu:~/lesson/lesson90/frp/frp_0.58.1_linux_amd64$ ./frps
2025-03-18 10:55:48.590 [I] [frps/root.go:107] frps uses command line arguments for config
2025-03-18 10:55:48.790 [I] [server/service.go:237] frps tcp listen on 0.0.0.0:7000
2025-03-18 10:55:48.790 [I] [frps/root.go:114] frps started successfully

所以这里推荐大家使用 -c 操作指定配置文件启动服务

wzy@VM-20-5-ubuntu:~/lesson/lesson90/frp/frp_0.58.1_linux_amd64$ ./frps -c ./frps.toml
2025-03-18 10:57:18.446 [I] [frps/root.go:105] frps uses config file: ./frps.toml
2025-03-18 10:57:18.549 [I] [server/service.go:237] frps tcp listen on 0.0.0.0:8888
2025-03-18 10:57:18.549 [I] [frps/root.go:114] frps started successfully

此时我们使用 netstat -nltp 能够看到端口号为8888的服务已经启动了

wzy@VM-20-5-ubuntu:~$ netstat -nltp
(Not all processes could be identified, non-owned process info
 will not be shown, you would have to be root to see it all.)
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp        0      0 127.0.0.53:53           0.0.0.0:*               LISTEN      -                   
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      -                   
tcp        0      0 127.0.0.1:6010          0.0.0.0:*               LISTEN      -                   
tcp        0      0 127.0.0.1:6011          0.0.0.0:*               LISTEN      -                   
tcp6       0      0 :::8888                 :::*                    LISTEN      509917/./frps       
tcp6       0      0 ::1:6010                :::*                    LISTEN      -                   
tcp6       0      0 ::1:6011                :::*                    LISTEN      -                   
tcp6       0      0 :::22                   :::*                    LISTEN      -    

🏳️‍🌈四、运行虚拟机客户端

首先我们需要配置一下虚拟机客户端的配置信息,也就是frpc.toml
在这里插入图片描述
里面的服务端地址和端口号目前都不匹配,所以更改一下
具体服务端地址就是腾讯云服务器的ip地址
端口号就是刚刚更改的8888
在这里插入图片描述
至于下面的

localPort = 22
remotePort = 6000

我们可以按上图理解,也就是服务端可以通过6000端口来访问客户端的22号端口(sshd),也就能建立好链接

wzy@wzy-virtual-machine:~/frp/frp_0.58.1_linux_amd64$ sudo netstat -nltp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp        0      0 127.0.0.53:53           0.0.0.0:*               LISTEN      661/systemd-resolve 
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      1020/sshd: /usr/sbi 
tcp        0      0 127.0.0.1:631           0.0.0.0:*               LISTEN      989/cupsd           
tcp6       0      0 :::22                   :::*                    LISTEN      1020/sshd: /usr/sbi 
tcp6       0      0 ::1:631                 :::*                    LISTEN      989/cupsd   

🏳️‍🌈五、建立连接

腾讯云服务器端运行服务端程序,指定配置文件
虚拟机运行客户端程序,指定配置文件

两者都运行后就能连接好了
在这里插入图片描述

在这里插入图片描述
然后需要重新建立一个连接上虚拟机的会话
在这里插入图片描述
双击运行后,输入已存在的用户名和密码就登陆上了虚拟机了
在这里插入图片描述

🏳️‍🌈六、测试ssh工具

然后我们就可以发现我们的服务端已经可以运程访问到虚拟机的信息,我们再在桌面上创建一个txt文件试试看,创立成功了!
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

🏳️‍🌈七、测试网络

然后我们需要验证一下frp能否使得开远程访问虚拟机网络

这是一般条件下虚拟机的网页
在这里插入图片描述

我们额外在frpc.toml中添加一个http的映射(frp允许多个映射关系)

在这里插入图片描述
然后重启服务端、客户端,并使用netstat -nltp重新看一下端口使用情况
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
然后在网页中输入 服务器ip:8082 就能够远程连接到虚拟机的网页中
在这里插入图片描述

我们其实这里访问的就是 nginx 的默认页面,我们可以更改一下里面的内容
在这里插入图片描述
提示:没有写入权限的话用sudo

在这里插入图片描述
在这里插入图片描述

重新启动客户端,再刷新一下浏览器
在这里插入图片描述

解释一下,为什么这里能在win上面获取到虚拟机的网页

因为我们的linux服务器是起到中转站的作用,他先获取到了虚拟机上的内容,然后我们在win网页上通过ip地址获取到服务器上的内容,然后借用8082端口映射到虚拟机上80号端口就得到了虚拟机上网页的内容


👥总结

本篇博文对 手动部署并测试内网穿透 做了一个较为详细的介绍,不知道对你有没有帮助呢

觉得博主写得还不错的三连支持下吧!会继续努力的~

请添加图片描述


网站公告

今日签到

点亮在社区的每一天
去签到