最近购买了一个域名muzing.top,通过阿里云的DNS服务解析到了我的阿里云服务器上,从此访问我的云服务器变得非常简单。
那就利用一下这个服务器,通过frp把本地服务器上的服务传到云服务器上,实现内网穿透
一、什么是frp
项目GitHub地址
官方文档
摘自项目README
frp 是一个专注于内网穿透的高性能的反向代理应用,支持 TCP、UDP、HTTP、HTTPS 等多种协议。可以将内网服务以安全、便捷的方式通过具有公网 IP 节点的中转暴露到公网。
二、安装frp
转到frp的GitHub Releases页面下载最新的发行版
1. 安装frp服务端(frps)到阿里云服务器
可以通过wget 下载最新的版本
1
| root@XXXX:/opt# wget https://github.com/fatedier/frp/releases/download/v0.34.0/frp_0.34.0_linux_arm64.tar.gz
|
如果直接wget下载太慢,可以现在本地电脑上通过IDM等工具快速下载,然后通过ssh把压缩包上传至云服务器:
1
| muzing@muzing-PC:~/Downloads$ scp /home/muzing/Downloads/frp_0.34.0_linux_amd64.tar.gz root@121.XX.XXX.XXX:/opt/
|
解压
1 2
| root@XXXX:/opt# tar -zxvf frp_0.34.0_linux_arm64.tar.gz root@XXXX:/opt# cd frp_0.34.0_linux_amd64/
|
进入刚刚解压出来的文件夹,ls查看里面的内容
1 2
| root@XXXX:/opt/frp_0.34.0_linux_amd64# ls frpc frpc_full.ini frpc.ini frps frps_full.ini frps.ini LICENSE systemd
|
frps为服务器端使用,frpc为客户端使用,这里删掉所有frpc,以免干扰
1
| root@XXXX:/opt/frp_0.34.0_linux_amd64# rm frpc frpc_full.ini frpc.ini
|
然后编辑 frps.ini 配置文件
1
| root@XXXX:/opt/frp_0.34.0_linux_amd64# vim frps.ini
|
文件内容如下
1 2 3 4
| [common] bind_port = 7000 token = 5678 vhost_http_port = 80
|
2. 设置阿里云防火墙
由于阿里云的安全设置,7000端口是默认不允许的,需要我们在控制台中手动设置
3.本地机器上安装客户端(frpc)
我的本地服务器是一台安装deepen v20系统的低功耗x86主机,解压等操作可以直接通过图形界面完成,这里还是把命令行方法写一下
1 2 3 4 5 6
| muzing@muzing-PC:~/Downloads$ sudo mv frp_0.34.0_linux_amd64.tar.gz /opt/ muzing@muzing-PC:~/Downloads$ cd /opt/ muzing@muzing-PC:/opt$ sudo tar -zxvf frp_0.34.0_linux_amd64.tar.gz muzing@muzing-PC:/opt$ cd frp_0.34.0_linux_amd64/ muzing@muzing-PC:/opt/frp_0.34.0_linux_amd64$ sudo rm frps frps_full.ini frps.ini muzing@muzing-PC:/opt/frp_0.34.0_linux_amd64$ sudo vim frpc.ini
|
frpc.ini 文件内容如下
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| [common] server_addr = 121.XX.XXX.XXX server_port = 7000 token = 5678 和刚才设置的保持一致
[ssh] type = tcp local_ip = 192.168.3.11 local_port = 22 本地服务器用来ssh连接的端口号,默认为22 remote_port = 6000 通过远程服务器的6000端口访问
[web] type = http local_port = 4000 remote_port = 80 custom_domains = muzing.top
|
三、启动frp
启动服务端
1 2 3 4 5
| root@XXXX:/opt/frp_0.34.0_linux_amd64# ./frps -c ./frps.ini
2020/09/22 11:46:11 [I] [service.go:190] frps tcp listen on 0.0.0.0:7000 2020/09/22 11:46:11 [I] [service.go:232] http service listen on 0.0.0.0:80 2020/09/22 11:46:11 [I] [root.go:212] start frps success
|
此时服务器端已经成功启动,可以看到在本机的7000端口上等待连接frps tcp,在80端口上等待连接http
启动客户端
1 2 3 4 5 6
| muzing@muzing-PC:/opt/frp_0.34.0_linux_amd64$ ./frpc -c frpc.ini
2020/09/22 11:57:16 [I] [service.go:288] [9298fee2521f691b] login to server success, get run id [9298fee2521f691b], server udp port [0] 2020/09/22 11:57:16 [I] [proxy_manager.go:144] [9298fee2521f691b] proxy added: [web ssh] 2020/09/22 11:57:16 [I] [control.go:180] [9298fee2521f691b] [ssh] start proxy success 2020/09/22 11:57:16 [I] [control.go:180] [9298fee2521f691b] [web] start proxy success
|
可以看到成功启动了frp,并与服务器建立连接,ssh和web都成功启动了
而此时云服务器也输出了正确的信息
1 2 3 4 5
| 2020/09/22 11:57:16 [I] [service.go:444] [9298fee2521f691b] client login info: ip [XXX.XX.XXX.XXX:41226] version [0.34.0] hostname [] os [linux] arch [amd64] 2020/09/22 11:57:16 [I] [tcp.go:63] [9298fee2521f691b] [ssh] tcp proxy listen port [6000] 2020/09/22 11:57:16 [I] [control.go:446] [9298fee2521f691b] new proxy [ssh] success 2020/09/22 11:57:16 [I] [http.go:92] [9298fee2521f691b] [web] http proxy listen for host [muzing.top] location [] group [] 2020/09/22 11:57:16 [I] [control.go:446] [9298fee2521f691b] new proxy [web] success
|
四、验证效果
见证奇迹的时刻:
ssh
现在我的笔记本电脑和内网服务器不在同一局域网下,但也能够ssh连接了
注意ssh连接到指定端口的方法
出门在外也能ssh调试宿舍里的服务器,nice
web
成功把我在本地服务器4000端口运行的hexo博客穿透到了服务器的80端口,直接浏览器中输入域名即可访问
五、后台运行、开机自启动
待补充……
1
| nohup ./frps -c ./frps.ini &
|