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

📢博客主页: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命令,所以我们需要先安装相关命令,然后再启动

cpp 复制代码
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 端口:

cpp 复制代码
sudo ufw allow 22    # 允许 SSH 端口
sudo ufw reload      # 重载防火墙规则

紧接着我们使用win的命令行窗口使用ping命令验证一下两者之间的联系

进入下载的安装包所在的文件夹中,远程拷贝这个frp安装包到虚拟机中



传输成功

解压出来

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

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

cpp 复制代码
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 操作指定配置文件启动服务

cpp 复制代码
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的服务已经启动了

cpp 复制代码
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

至于下面的

cpp 复制代码
localPort = 22
remotePort = 6000

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

cpp 复制代码
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号端口就得到了虚拟机上网页的内容


👥总结

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

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

相关推荐
渗透测试老鸟-九青14 分钟前
区块链 智能合约安全 | 整型溢出漏洞
网络·经验分享·安全·web安全·区块链·智能合约·代码审计
nihuhui66614 分钟前
NAT技术-初级总结
服务器·网络·智能路由器
噼里啪啦啦.2 小时前
计算机网络原理
服务器·网络·计算机网络
A__tao2 小时前
SSE vs WebSocket,谁更适合实时文本传输?
网络·websocket·网络协议
无职转生真好看3 小时前
TCP怎么保证可靠传输
服务器·网络·tcp/ip
饶了我吧,放了我吧3 小时前
密码协议与网络安全——引言
网络·安全·web安全
Do vis.5764 小时前
网络编程中客户端与服务器的搭建与协议包应用
运维·服务器·网络
Dream Algorithm7 小时前
光猫 和 全光 WiFi
网络·智能路由器
D-海漠8 小时前
西门子自动化冗余系统通过多层次冗余设计
网络