使用场景:
在公司用电脑敲代码,环境都是localhost,有时候你要接第三方接口比如支付、或者企业微信的事件回调等,都需要一个公网地址,因为这时候是开发阶段,你即想要公司电脑上运行的环境又想要回调能找到你的公司电脑。
首先,在公司的所有电脑连wifi或者有线,都是共用一个公网ip对外访问,所以公司肯定不会给你一个单独的公网ip放你电脑上啦。
用frp搞个内网穿透,步骤提要:
1 自己的云服务器(公网ip),
买服务器就不教了,有钱啥配置都能买,没钱就买最低配置,仅做学习用。
如何远程连接云服务器_坐等夕阳落time的博客-CSDN博客_如何访问云服务器
2 下载frp
3 自己的云服务器配置frp服务端
4 自己公司电脑配置frp客户端
1 下载frp
ps: 要把自己电脑上的杀毒软件,xx管家关了,否则下载不了的哦。
frp是一个开源项目,所以,你们别被收费了。
https://github.com/fatedier/frp
frp下载地址
Releases · fatedier/frp · GitHub
下载完了解压
2 介绍文件
介绍一下解压包里的各个文件
文件名带full,没有被使用,可以说它是一个配置参考文档,里面含着所有配置,你需要的时候可以去里面找,里面用英文介绍了每条配置的意思,但是英语不好的缺配置的时候,还是上网搜索吧。
3 开始使用
文档 | frp
能力强的小伙伴可以自己看着官方文档弄,这个能力是一定要自己掌握的,所以我的文章都会放上官方的文档链接。
1 自己的云服务器配置 frp服务端
主要是有公网ip的配置frp服务端,这样才能做到内网穿透,访问公网ip相当于访问到你的内网机子。
1.1 服务端配置编写 --- frps.ini 文件
我用的:
[common]
# frp服务端监听的端口,默认是7000
bind_port = 7000
# 身份验证令牌,在客户端使用
token = 52010
# frp管理后台端口,可修改
dashboard_port = 7500
# frp管理后台用户名和密码,可修改
dashboard_user = admin
dashboard_pwd = admin
# 开启监控
enable_prometheus = true
# frp日志配置
log_file = /var/log/frps.log
log_level = info
log_max_days = 3
编写完配置,我们就把这个linux的frp文件夹上传到云服务器
1.2 在云服务器启动frp的服务端服务 ---- frps
1.2.1 关闭frps服务
因为我的服务器上已经启动过frps服务了,所以我先把它关一下
# linux 上查看运行的服务列表
netstat -lntp
# linux 上关闭frps
sudo systemctl stop frps
1.2.2 启动frps服务
我以前下的版本里会有frps.service文件,现在这个0.45.0版本没有了
但是官方文档有教程
使用 systemd | frp
主要是ExecStart,填写frps的安装路径
因为为了做好备份,所以,不建议直接填写安装包文件夹的路径(就是你上传到服务器的那个文件夹frp_0.45.0_linux_amd64),主要还是规范,当然你可以随意。
所以参照frp以前旧版本中的frps.service,我们把frps文件复制放到 /usr/bin,把frps.ini复制放在 /etc/frp(这些文件操作我都是用WinSCP搞的,熟linux命令的可以直接命令弄哈)
最后一步:把你写好的 frps.service 文件复制到 /etc/systemd/system 或 /usr/lib/systemd/system/
[Unit]
Description=Frp Server Service
After=network.target
[Service]
Type=simple
User=nobody
Restart=on-failure
RestartSec=5s
ExecStart=/usr/bin/frps -c /etc/frp/frps.ini
[Install]
WantedBy=multi-user.target
使用 systemd
命令,管理 frps,一般执行linux命令,都会加个sudo 超管身份执行
# 启动frp
systemctl start frps
# 停止frp
systemctl stop frps
# 重启frp
systemctl restart frps
# 查看frp状态
systemctl status frps
# 配置 frps 开机自启
systemctl enable frps
# 启动frp
sudo systemctl start frps
1.2.3 查看frps服务成功没有
# 查看frp状态
systemctl status frps
不使用 systemd
,单独运行 /usr/bin/frps -c /etc/frp/frps.ini 看看
/usr/bin/frps -c /etc/frp/frps.ini
Permission denied 是因为ftps文件没有执行权限,给加上执行权限
一定要注意你执行命令时候的目录,因为路径错了,命令就执行失败,ftps文件放在了 /usr/bin ,执行 chmod 777 frps,加上权限
chmod 777 frps
1.2.4 再去访问一下frps的管理后台
如果你运行启动命令时,没报错误,你就访问之前服务端配置文件 frps.ini 里设置的后台
ps: 云服务器记得防火墙开一下端口,不然访问不到
ip+端口( frps.init 里配的7500)
2 自己公司电脑配置 frp客户端 (内网)
公网frp服务端启动好了,开始内网frp客户端的配置,我用的是公司电脑,所以是windows系统的步骤和配置frp服务端一样。
ps: 要把自己电脑上的杀毒软件,xx管家关了。
1.1 客户端配置编写 --- frpc.ini 文件
我用的:
[common]
server_addr = 云服务器ip(公网ip)
server_port = 7000
# frps.init 上配置的身份令牌
token = 52010
# 配置ssh服务
# [ssh]
# type = tcp
# local_ip = 127.0.0.1
# local_port = 22
# 自定义
# remote_port = 20202
# 配置http服务,可用于小程序开发、远程调试等
# [web]
# type = http
# local_ip = 127.0.0.1
# local_port = 8080
# web域名
# subdomain = xxx.xxx.cn
# 自定义
# remote_port = 8080
# 上面的两个服务我都用不到,写在那里万一以后用到了
# 我主要用的下面这个服务[自定义命名],[ssh]这样的名称必须全局唯一,可以[ssh1]
[company_pc]
type = tcp
local_ip = 127.0.0.1
# 我本机跑的后端服务端口(springboot)
local_port = 9500
# 自定义,之后就是云服务器ip加这个remote_port,就能访问到你本机
remote_port = 13389
ps: 云服务器记得防火墙开一下remote_port填写的端口,不然访问不到
1.2 在自己公司电脑启动frp的客户端服务 ---- frpc
1.2.1 关闭frpc服务
我电脑之前跑过服务,先关了。 ctrl+alt+delete 选择任务管理器,然后 ctrl+f 输入frp 就找到了frpc服务, 鼠标右键结束任务就行。
1.2.2 启动frpc服务
打开下载的frp文件夹,在路径栏,输入cmd,回车:
命令行窗口运行:
cmd /c frpc.exe -c frpc.ini
想后台运行frpc服务:
创建一个frpc.vbs文件
Set ws = CreateObject("Wscript.Shell")
ws.run "cmd /c frpc.exe -c frpc.ini",vbhide
鼠标双击运行即可。
3 开始试试,用公网ip能不能调用内网的服务
启一个9500服务:
apifox 调接口:
成功访问到了!之后用来在内网环境开发时,第三方的接口回调地址,比如支付、企业微信事件回调等
参考
使用frp配置内网访问(穿透)教程(超详细,简单)_*Lisen的博客-CSDN博客_frp内网穿透
使用 systemd | frp
【Linux】使用 systemd 管理 frp 服务_chensuanfa的博客-CSDN博客_frp systemd
【frp内网穿透工具】服务端frps和客户端frpc在Linux和Windows下开机启动并隐藏启动的方法 – 星星芦苇
Frp穿透技术_冰羽呐的博客-CSDN博客