美文网首页
frp 实现内网穿透

frp 实现内网穿透

作者: book_02 | 来源:发表于2024-12-29 19:57 被阅读0次

注意frp使用的配置文件的格式在老版本和新版本有差别,之前是ini文件,现在是toml文件,字段和字段格式有些变化

本文是以0.61.1版本为例说明,使用的是toml配置文件格式

1. 服务端搭建

1.1 下载frp库

mkdir frp
cd frp
wget https://github.com/fatedier/frp/releases/download/v0.61.1/frp_0.61.1_linux_amd64.tar.gz

根据自己客户端的平台来选择,这里下载的是linux_amd64的

1.2 解压frp压缩包

tar -zxvf frp_0.61.1_linux_amd64.tar.gz

1.3 进入该解压目录打开配置文件:

cd frp_0.61.1_linux_amd64/
vi frps.toml

1.4 修改配置文件内容

使用vim编辑frps.toml,打开后输入i插入,然后修改内容,然后按esc,输入:wq退出,内容如下:

#服务绑定的端口,设置 HTTP 类型代理监听的端口
bindPort = 7000
vhostHTTPPort = 8080

#web dashboard配置  外网访问 服务器后台
webServer.addr = "0.0.0.0"
webServer.port = 7500
webServer.user = "admin"
webServer.password = "admin"

#启用prometheus监控指标
enablePrometheus = true

#token权限验证,需与客户端配置一致
auth.method = "token"
auth.token = "123456"

1.5 编写Service文件

这个地方可以根据自己需要来,如果想要开机自启动,就编写,否则直接./frps -c frps.toml就可以运行服务了

首先编写文件frps.service,注意位置

vi /etc/systemd/system/frps.service

打开后输入i插入,然后修改内容,然后按esc,输入:wq退出,内容如下:

[Unit]
# 服务名称,可自定义
Description = frp server
After = network.target syslog.target
Wants = network.target

[Service]
Type = simple
# 启动frps的命令,需修改为您的frps的安装路径
ExecStart = /app/frp/frps -c /app/frp/frps.toml

[Install]
WantedBy = multi-user.target

1.6 设置和启动frp服务

##启动服务
sudo systemctl daemon-reload
sudo systemctl enable frps
sudo systemctl start frps

1.7 防火墙开放端口

sudo firewall-cmd --permanent --add-port=8080/tcp
# 添加监听端口
sudo firewall-cmd --permanent --add-port=7000/tcp
# 添加管理后台端口
sudo firewall-cmd --permanent --add-port=7500/tcp
sudo firewall-cmd --reload

根据自己本机要开放的端口来设置

不同linux发行版,请使用配套工具放行端口。

1.8 网络安全组设置

根据自己的云服务器来设定。

跟上一步功能一致,这里如果是在云服务器上运行,则需要设置安全组

1.9 登录后台管理界面来验证是否启动成功

访问 http://yourip:7500
用户名和密码分别对应frps.ini文件中的dashboard_user和dashboard_pwd

2. 客户端配置

2.1 下载frp库

mkdir frp
cd frp
wget https://github.com/fatedier/frp/releases/download/v0.61.1/frp_0.61.1_linux_amd64.tar.gz

根据自己客户端的平台来选择,这里下载的是linux_amd64的

2.2 解压frp压缩包

tar -zxvf frp_0.61.1_linux_amd64.tar.gz

2.3 进入该解压目录打开配置文件:

cd frp_0.61.1_linux_amd64/
vi frpc.toml

注意客户端是 frpc.toml

2.4 修改配置文件内容

#配置公网服务器上frp服务的IP与端口
serverAddr = "x.x.x.x"
serverPort = 7000

#web dashboard配置, 这个是设置客户端管理界面,http://127.0.0.1:7400
webServer.addr = "127.0.0.1"
webServer.port = 7400
webServer.user = "admin"
webServer.password = "admin"

#token权限验证,需与服务端配置一致
auth.method = "token"
auth.token = "123456"

[[proxies]]
name = "web"                #名称
type = "http"               #代理类型
localIP = "127.0.0.1"       #本地IP
localPort = 8080            #内网服务监听的端口
customDomains = ["xxxx"]    # 填写域名,没有域名就直接填写ip

2.5 编写Service文件

这个地方可以根据自己需要来,如果想要开机自启动,就编写,否则直接./frpc -c frpc.toml就可以运行服务了

首先编写文件frpc.service,注意位置

vi /etc/systemd/system/frpc.service

打开后输入i插入,然后修改内容,然后按esc,输入:wq退出,内容如下:

[Unit]
# 服务名称,可自定义
Description = frp client
After = network.target syslog.target
Wants = network.target

[Service]
Type = simple
# 启动frpc的命令,需修改为您的frpc的安装路径
ExecStart = /app/frp/frpc -c /app/frp/frpc.toml

[Install]
WantedBy = multi-user.target

2.6 设置和启动frp服务

##启动服务
sudo systemctl daemon-reload
sudo systemctl enable frpc
sudo systemctl start frpc

2.7 防火墙开放端口

sudo firewall-cmd --permanent --add-port=8080/tcp
sudo firewall-cmd --reload

根据自己本机要开放的端口来设置

2.8 访问本地管理后台

访问 http://127.0.0.1:7400
账号和密码是frpc.toml里的webServer.userwebServer.password

3. 测试穿透是否配置成功

如果已经有网站,则通过域名或者ip去访问,看是否能访问成功

这里用streamlit来测试

streamlit_test.py

import streamlit as st

st.header('st.button')

if st.button('Say hello'):
     st.write('Why hello there')
else:
     st.write('Goodbye')

本地 streamlit run streamlit_test.py

然后看 http://ip:8501 是否可以访问到

4. 排错步骤

4.1 看公网ip是否能ping通
4.2 启动服务端后台查看服务端状态
4.3 检查服务端的端口是否都放通
4.4 启动客户端后台查看链接状况
4.5 检查客户端的端口是否都放通

5. 一些字段说明

5.1 customDomains 和 subdomain的区别

customDomains:用于配置完整的自定义域名,适合已有域名的情况。
subdomain:用于配置子域名,适合需要动态分配子域名的场景。
subdomain的使用参考 https://gofrp.org/zh-cn/docs/features/http-https/subdomain/

对于http和https服务,两个必填1个,否则会报错
否则报错: proxy web: subdomain and custom domains should not be both empty

相关文章

  • Springboot实现跨域

    为了实现内网穿透,使用的frp。 请求链路:localhost前端—>云端服务器—>经frp穿透内网到localh...

  • 【附下载】带你使用frp实现内网穿透详细教程!

    frp实现内网穿透 项目地址:https://github.com/fatedier/frp/releases[h...

  • (五)frp内网穿透安全配置

    frp的安装介绍 已经在第一节文章有介绍请参考 (一)frp内网穿透ssh登录内网ip服务器 frp 内网穿透安全...

  • frp 实现内网穿透

    一、准备 公网服务器 内网服务器(自己本地服务器) 二、安装frp服务端 2.1 公网服务器执行下面四条命令 2....

  • Frp 实现内网穿透

    首先你要有一台公网服务器如果没有公网服务器,可以用NATAPP,请参见这篇教程之前一直想用ngrok来实现,奈何交...

  • frp实现内网穿透

    因为有在外面访问家里 NAS 的需求,群晖自带的动态域名解析访问又太慢。所以需要用内网穿透技术来实现通过其他公网 ...

  • frp实现内网穿透

    frp简介 FRP 项目地址https://github.com/fatedier/frp/blob/master...

  • frp实现内网穿透

    没有公网IP是一件很不方便的事情,尤其是在国内的网络环境。例如在校园网情况下想要使用远程桌面,只能使用第三方远程桌...

  • frp实现内网穿透

    github项目[https://github.com/fatedier/frp/tree/dev] 目标 从公网...

  • frp实现内网穿透

    一、准备工作 使用场景 因为疫情的原因,最近在家无法返校。无法访问实验室的工作站的话就没法干活了(跑深度学习实验)...

网友评论

      本文标题:frp 实现内网穿透

      本文链接:https://www.haomeiwen.com/subject/bdooejtx.html