内网穿透
准备
- 先购买一个云服务器
- 安装frps的相关的文件 --其中服务器上和本地都要安装对应的文件
参考官方文档:https://gofrp.org/
步骤
1.本地下载客户端
链接地址:https://github.com/fatedier/frp/tags
我下载的文件名称:frp_0.44.0_windows_amd64
2.下载文件到对应的服务器上
我下载的文件名称:frp_0.44.0_linux_amd64.tar.gz
使用的远程连接的软件是FinalShell
文件下载到的目录为 /opt 下
3.具体Linux上文件的操作
- 解压文件:
tar -zxvf frp_0.44.0_linux_amd64.tar.gz
- 重新命名文件:
mv frp_0.44.0_linux_amd64 frp
- 进入文件,编写配置文件frps.ini
vim frps.ini
- 配置文件内容:
[common]
bind_port = 7000
token=hjz123456
[common]
dashboard_port = 7500
dashboard_user = admin
dashboard_pwd = hjz123456
- 第一个是服务器映射的端口
- 第二个是一个可视化界面的端口
- 将frp设置成Linux系统的服务,基于systemd方式管理
vim /usr/lib/systemd/system/frps.service
内容如下:
[Unit]
Description=frps daemon
After=syslog.target network.target
Wants=network.target
[Service]
Type=simple
#此处的路劲地址根据自己的实际放置的地址进行修改
ExecStart=/opt/frp/frps -c /opt/frp/frps.ini
Restart=always
RestartSec=1min
[Install]
WantedBy=multi-user.target
将frp设置成开机自启动
systemctl enable frps
systemctl start frps
systemctl status frps
firewall-cmd --state
6.服务器开放端口
firewall-cmd --add-port=7000/tcp --permanent
firewall-cmd --add-port=7500/tcp --permanent
查看端口的状态:
lsof -i:7500
重启防火墙
firewall-cmd --reload
4.云服务器上的操作
我使用的是阿里的云服务器,需要添加安全组
登录阿里云---网络与安全--安全组--手动添加-入方向
| 端口范围 | 授权对象 | 描述 |
|---|---|---|
| 9080/9099 | 0.0.0.0/0 | 内网穿透测试 |
| 7500/7500 | 0.0.0.0/0 | fprs-首页 |
| 7000/7000 | 0.0.0.0/0 | fprs |
这里服务器上的基本操作就已经完成了
测试一下你的配置:在浏览器上访问你的服务器:
这个是可视化的界面http://106.15.65.147:7500/
服务器的ip地址 + 端口
5.配置本地的文件操作
进入frp_0.44.0_windows_amd64文件夹,配置frpc.ini文件
[common]
server_addr = 106.15.65.147
server_port = 7000
token = hjz123456
[test]
type = tcp
local_ip = 127.0.0.1
local_port = 8080
remote_port = 9080
这里因为添加了本地访问的测试端口是8080,而访问服务器的端口是9080,就需要在服务器上开放对应的端口9080:
firewall-cmd --add-port=9080/tcp --permanent
再次重启防火墙
firewall-cmd --reload
6.打开你的本地的后端的服务
我这里测试的是FastAPI的一个二维码的例子:
from typing import Dict, Union
import uvicorn
from pydantic import BaseModel
import qrcode
import json
from fastapi import FastAPI
from fastapi.responses import StreamingResponse
import time
app = FastAPI()
#测试的实体类
class Data(BaseModel):
body:Union[Dict[str,object],None]=None
@app.post("/getImg")
def update_item(data: Data):
#转换json数据
json_str = json.dumps(data.body,indent=2, sort_keys=False, ensure_ascii=False)
#生产二维码
qrc = qrcode.make(json_str)
#图片的名字
img_name = '%s.png' % time.strftime("%Y-%m-%d-%H-%M-%S", time.localtime())
#保存图片成二维码
qrc.save(img_name)
#读取文件
file_like = open(img_name, mode="rb")
#返回页面
return StreamingResponse(file_like, media_type="image/png")
@app.post("/postData")
def update_data(data:Data):
if data!="":
print(data.body)
return data.body
if __name__ == '__main__':
#测试环境配置
uvicorn.run('main:app', reload=True, host='127.0.0.1', port=8080)
7.启动本地的frp的服务
先进入对应的文件目录:要在PowerShell中运行
./frpc -c ./frpc.ini
浙公网安备 33010602011771号