前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >内网穿透工具frp简易教程

内网穿透工具frp简易教程

作者头像
乐百川
发布2019-07-02 10:53:10
2.4K0
发布2019-07-02 10:53:10
举报

版权声明:本文为博主原创文章,转载请注明出处。 https://cloud.tencent.com/developer/article/1454288

如果你想把家里的电脑当做服务器用,做一个网站或者游戏服务器什么的,肯定会遇到一个问题:由于没有公网IP,而且有家里的路由器把关,导致其他地方的人完全无法连接到服务器。这时候就需要内网穿透和端口映射工具了,这样的工具有很多,我列举常用的几个:

  • 花生壳
  • nat123
  • ngrok

不过这几个工具虽然都算是挺好用的,但是都是收费的,虽然都有免费版,但是免费版功能实在太少,基本上只能绑定一个应用,端口号还是随机的。临时玩玩倒是可以,真正要用的话还是不行。经过一番寻找,最后我锁定了frp这个工具,它的优点就是完全开源免费,自定义配置;缺点是不提供服务,也就是说我们需要自己买个服务器在上面搭建。

下载

frp也是托管在Github上的开源项目,直接到Release页面下载即可,链接如下:

代码语言:javascript
复制
https://github.com/fatedier/frp/releases

下载解压之后是一个文件夹,里面包含了frpc、frps可执行程序,以及它们对应的示例配置文件,前者是客户端程序,后者是服务端程序。运行frp需要同时运行客户端和服务端程序才行。full和min分别是最大和最小配置文件,如果需要参考的话可以打开看看,最大配置文件中列出了frp支持的所有选项。

服务端配置

首先我们看看如何配置frp的服务端。服务端配置比较简单,如果不使用高级功能的话,只需要两三行就可以了。

代码语言:javascript
复制
# frps.ini
[common]
bind_port = 7000
token = 123456

bind_port是服务端与客户端之间通信使用的端口号,默认就可以。token用于验证连接,只有服务端和客户端token相同的时候才能正常访问。如果不使用token,那么所有人都可以直接连接上,所以我建议大家在使用的时候还是把token加上。

配置完毕后就可以启动服务端了,启动命令也很简单:

代码语言:javascript
复制
frps -c frps.ini

一般情况下服务端这么配置就可以了,大部分配置都是在客户端的配置文件中处理。作者这样设计还是挺合理的,将来如果有改动的话,只需要修改客户端配置文件,服务端一般情况下不需要改动。

端口转发

下面来看看客户端配置,frp可以实现很多常用功能,都是在客户端配置文件中完成配置。首先来看看最基本的端口转发配置。

代码语言:javascript
复制
# frpc.ini
[common]
server_addr = x.x.x.x
server_port = 7000
token = 123456
[ssh]
type = tcp
local_ip = 127.0.0.1
local_port = 22
remote_port = 6000

首先是common下的配置项,需要和服务端配置文件相同。然后是ssh下的配置,type是连接类型,大部分应用都是tcp协议的,所以这里就写tcp就好;local_ip是本地ip,默认127.0.0.1即可;local_port是要转发的端口号,官方实例中这里是远程转发SSH,所以端口号是22,如果你想做游戏服务器的话,改成对应的端口号即可;remote_port是端口转发之后暴露在外网的端口号。

客户端配置完毕之后,就可以启动了,启动命令类似:

代码语言:javascript
复制
frpc -c frpc.ini

如果你想简单把本地部署的网站开放出去,也可以以这种方式直接将本地80端口转发出去。如果你购买了域名,希望别人通过域名访问本地网站,还可以使用接下来要介绍的,专门的web转发功能。

转发web服务

首先是服务端,需要添加vhost_http_port参数:

代码语言:javascript
复制
# frps.ini
[common]
bind_port = 7000
vhost_http_port = 80

然后是客户端,注意web下的参数,type是协议类型,http或者https,local_port是本地网站的端口号,custom_domains是购买的网站域名,需要注意这个网站域名需要事先在域名服务商那里设置好域名解析才能正常使用。

代码语言:javascript
复制
# frpc.ini
[common]
server_addr = x.x.x.x
server_port = 7000
[web]
type = http
local_port = 8080
custom_domains = www.yourdomain.com

配置完成后,访问服务器网址http://x.x.x.x即可看到部署在本地http://localhost:8080上的网站。如果需要https的话,只要把vhost_http_port改成vhost_https_port,再把客户端web下type设置为https即可。

仪表盘

frp还支持仪表盘功能,可以从网页查看运行的流量等信息。开启仪表盘需要在服务端进行设置。

代码语言:javascript
复制
# frps.ini
[common]
dashboard_port = 7500
# dashboard 用户名密码,默认都为 admin
dashboard_user = admin
dashboard_pwd = admin

设置完毕后,在浏览器中访问服务端地址:端口号并输入用户名与密码即可查看仪表盘。

以上就是frp的一些介绍,如果有需要的请查看官方中文文档,详细列出了frp支持的各项功能,还可以参考frpc_full.ini与frps_full.ini,查看完整配置文件支持的选项。文档地址:

代码语言:javascript
复制
https://github.com/fatedier/frp/blob/master/README_zh.md

太阳神三国杀游戏服务器搭建

以前我也了解过frp,不过基本没用过。这几天和同学玩三国杀,我突然想到以前经常玩的太阳神三国杀,后来因为没有公网IP,再也没有和同学联机过。有了frp,我就可以让同学连接到我的游戏主机上。

服务端配置仍然是非常简单的那几行,就不说了。重点是客户端配置,其实也很简单,太阳神三国杀游戏使用的端口号是9527,所以直接把端口号改为9527即可。然后连接的时候输入服务器IP即可。

代码语言:javascript
复制
[common]
server_addr = xxxx
server_port = 7000
token = xxxxx

[ssh]
type = tcp
local_ip = 127.0.0.1
local_port = 9527
remote_port = 9527
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019年02月15日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 下载
  • 服务端配置
  • 端口转发
  • 转发web服务
  • 仪表盘
  • 太阳神三国杀游戏服务器搭建
相关产品与服务
弹性公网 IP
弹性公网 IP(Elastic IP,EIP)是可以独立购买和持有,且在某个地域下固定不变的公网 IP 地址,可以与 CVM、NAT 网关、弹性网卡和高可用虚拟 IP 等云资源绑定,提供访问公网和被公网访问能力;还可与云资源的生命周期解耦合,单独进行操作;同时提供多种计费模式,您可以根据业务特点灵活选择,以降低公网成本。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档