内网穿透

准备

  • 先购买一个云服务器
  • 安装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上文件的操作

  1. 解压文件:
tar -zxvf frp_0.44.0_linux_amd64.tar.gz 
  1. 重新命名文件:
 mv frp_0.44.0_linux_amd64 frp
  1. 进入文件,编写配置文件frps.ini
vim frps.ini 
  1. 配置文件内容:
[common]
bind_port = 7000
token=hjz123456

[common]
dashboard_port = 7500
dashboard_user = admin
dashboard_pwd = hjz123456
  • 第一个是服务器映射的端口
  • 第二个是一个可视化界面的端口
  1. 将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
posted on 2022-07-28 11:04  Steam残酷  阅读(328)  评论(0)    收藏  举报