我是靠谱客的博主 健康宝马,最近开发中收集的这篇文章主要介绍基于frp实现外网访问个人本地服务器,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

适用对象

想要通过frp实现内网服务被外网访问的人。

关键词描述

内网:内网指的是局域网,几台或者几十台电脑之间互访,也叫私网。

外网:指的是我们上的Internet网络,也叫公网。

需要具备的知识基础和条件

1:外网服务器一台(还是需要有个公网ip的,一般推荐云服务器,对应云服务器会分配一个公网ip)

2:内网服务器一台

3:frp包以及基础的配置知识

主体流程图如下

我们可以看出,公网用户想要访问到我们内网的服务,还是需要有一个公网的服务器(此处用的云服务器)做转发,才能实现的。而我们frp技术就是链接公网服务器和内网服务器的。这样,用户访问了公网服务器(云服务器),然后公网把对应请求处理转发给内网,内网服务器回复给了公网服务器,然后公网服务器转回给用户。

frp服务实现流程

gitHub下载地址:点击此处下载:https://github.com/fatedier/frp/releases

一定要注意:ubuntu linux 下载的是amd 不是 arm 后缀

服务器端部署

1将Linux版frp上传至服务器,解压文件

tar -zxvf frp_0.46.1_linux_amd64.tar.gz

2进入解压后frp目录,编辑frps.ini配置文件,创建日志目录

注意这次操作的是frps 后缀是s

cd frp_0.46.1_linux_amd64
vim frps.init
# 这个需要和下面的日志输出路径对应
mkdir -p /opt/frp/log/  

做如下配置并且保存:

# 绑定服务端端口,给客户端连接的通道,都是7000 等熟悉了自己再调整
bind_port = 7000
# 设置客户端token,对应的客户端,也需要配置,有一定的安全保证,加上
token = !QAZ@WSX#EDC
# 日志 -- 这个可以查看转发和客户端是否链接成功,是排除错误的关键。可以用cat命令监听
log_file = /opt/frp/log/frps.log
log_level = info
# 日志最多保存天数
log_max_days = 3

保存:

按住esc后  输入 qw:  回车保存

3启动服务端

在当前目录执行: nohup  ./frps -c ./frps.init &

4核对服务是否成功启动

cat /opt/frp/log/frps.log

能看到 7000 successful 就可以了,7002是我配置的别的端口

客户端部署

下载对应平台的frp包,我的客户端也是ubuntu,所以我用之前下号包frp_0.46.1_linux_amd64.tar.gz 就可以了

1将Linux版frp上传至服务器,解压文件

tar -zxvf frp_0.46.1_linux_amd64.tar.gz

2进入解压后frp目录,编辑frpc.ini配置文件,创建日志目录

注意这次操作的是frpc 后缀是c

cd frp_0.46.1_linux_amd64
vim frpc.init

编辑frpc.ini 初始化文件

[common]
# 把 **.**.**.**  换成你服务器的ip
server_addr = **.**.**.**
# 这个和服务器common标签下的保持一致
server_port = 7000
# 和服务器的token保持一致
token = !QAZ@WSX#EDC

[ssh]
type = tcp
local_ip = 127.0.0.1
local_port = 22
remote_port = 6000

# 自定义端口,定义后,frps 服务端会自动启动且监听对应端口
[ubuntu-web]
# 有些地方在用https,https只是针对https有针对扩展,tcp模式同样可以进行 https 和 http 转发
type = tcp
# 如果是你本地其他电脑的服务,可以换成192.168.31.11等本地地址,若果服务和frpc在同一电脑地址下,用127.0.0.1
local_ip = 127.0.0.1
local_port = 443
remote_port = 8082

3启动服务端

注意这次操作的是frpc 后缀是c

在当前目录执行: nohup  ./frpc -c ./frpc.init &

4核对服务是否成功启动

注意:现在要去 服务器端 看握手,现在换到服务器frps 所在的后台执行命令

cat /opt/frp/log/frps.log

应该可以看到在 服务器端 激活了 客户端 配置的端口 8082

正常情况下所有操作都结束了,可以愉快访问服务器了,但是通常结果是不正常,所以我给大家列一下常见问题

1通过telnet **.**.**.** 端口号 确认端口可用,如果不可用看看是不是云服务器安全组没有放开对应端口

2去服务器log下核对当前异常问题,核对服务器init 客户端init文件是不是有错别字

3postman如果请求失败,用浏览器试一试是否可以。(我是开始postman一致失败,浏览器可以,可能配置问题)

小建议

成功运行了后,你再考虑什么https 配置,nginx 转发之类的操作,不然只会更懵逼。

1:为什么有了公网服务器,还需要这么麻烦,用内网部署,再公网转发?

主要是云服务器很贵,其实我们可以用本地的高配置,加上公网的转发,把自己的本地高配服务通过低配云服务器暴露在公网,达到成本最小化的目的。

例如:

本地常规电脑配置通常达到:16G内存 + 1T硬盘

云服务器购买最低配置:2G内存+40G硬盘

2:服务可控,例如花生壳之类的,总体价格会贵近百块,而且我们可以针对购买的云服务器有更多的操作(云服务买新客优惠的买一年)。

其他的好处欢迎留言补充。

最后

以上就是健康宝马为你收集整理的基于frp实现外网访问个人本地服务器的全部内容,希望文章能够帮你解决基于frp实现外网访问个人本地服务器所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(61)

评论列表共有 0 条评论

立即
投稿
返回
顶部