Loading... ##简介 有些小伙伴可能想在家里建站或者使用NAS等一系列用途,但是苦于没有公网IP,所以这篇文章将会比较详细的介绍Frp的搭建教程。 ##架构 ![][1] ##Frp的作用 1. 利用处于内网或防火墙后的机器,对外网环境提供 http 或 https 服务。 2. 对于 http, https 服务支持基于域名的虚拟主机,支持自定义域名绑定,使多个域名可以共用一个80端口。 3. 利用处于内网或防火墙后的机器,对外网环境提供 tcp 和 udp 服务,例如在家里通过 ssh 访问处于公司内网环境内的主机。 ##准备 1. 外网服务器 X1 2. 内网服务器 X1 3. 域名一个(一二级域名均可) ##安装Frp 1. 公网服务器与内网服务器都需要安装Frp 2. 公网服务器(服务端),内网服务器(服务端) 3. 项目地址:<button class=" btn m-b-xs btn-success btn-addon" onclick=''><i class="glyphicon glyphicon-file"></i><span class="external-link"><a class="no-external-link" href="https://github.com/fatedier/frp" target="_blank"><i data-feather="external-link"></i>Frp</a></span></button> 4. 根据自己的系统来选择相应版本,例如`X64`的`Linux`就安装`frp_0.21.0_linux_amd64.tar.gz` 或者直接wget下载 ``` wget https://github.com/fatedier/frp/releases/download/v0.21.0/frp_0.21.0_linux_amd64.tar.gz ``` 当下载完成后,cd到压缩包所在的目录 输入此命令解压压缩包`tar -zxvf frp_0.21.0_linux_amd64.tar.gz` cd到解压出来的文件夹,可以看到有多个文件 外网服务器只需要保留`frps` `frps.ini`两个文件,其他可以删除 内网服务器只需要保留`frpc` `frpc.ini`两个文件,其他可以删除 ##配置 这里只介绍常用的两种,其他配置请见作者文档 <button class=" btn m-b-xs btn-primary " onclick=''><span class="external-link"><a class="no-external-link" href="https://github.com/fatedier/frp/blob/master/README_zh.md" target="_blank"><i data-feather="external-link"></i>中文文档</a></span></button> <div class="tip inlineBlock success"> 从 v0.10.0 版本开始,所有 proxy 配置全部放在客户端(也就是之前版本的特权模式),服务端和客户端的 common 配置中的 token 参数一致则身份验证通过。 </div> ##【例一】通过 ssh 访问公司内网机器 修改 `frps.ini` 文件,这里使用了最简化的配置: [common] bind_port = 7000 #与客户端绑定的进行通信的端口 token = abcd123 #身份验证 修改完成后在此此文件目录下启动服务 执行此命令 前台启动 `./frps -c ./frps.ini` 后台启动 `nohup ./frps -c ./frps.ini &` 修改 `frpc.ini` 文件,假设 frps 所在服务器的公网 IP 为 x.x.x.x [common] server_addr = x.x.x.x #公网服务器ip server_port = 7000 #与服务端bind_port一致 token = abcd123 #身份验证 [ssh] type = tcp #连接协议 local_ip = 127.0.0.1 #内网服务器IP local_port = 22 #ssh默认端口号 remote_port = 6000 #自定义访问内部ssh端口号 修改完成后在此此文件目录下启动服务 执行此命令 前台启动 `./frpc -c ./frpc.ini` 后台启动 `nohup ./frpc -c ./frpc.ini &` 通过 ssh 访问内网机器,假设用户名为 root `ssh -oPort=6000 root@x.x.x.x` ##【例二】通过自定义域名访问部署于内网的 web 服务 有时想要让其他人通过域名访问或者测试我们在本地搭建的 web 服务,但是由于本地机器没有公网 IP,无法将域名解析到本地的机器,通过 frp 就可以实现这一功能 以下示例为 http 服务,https 服务配置方法相同, vhost_http_port 替换为 vhost_https_port, type 设置为 https 即可。 修改 `frps.ini` 文件,设置 http 访问端口为 8080 [common] bind_port = 7000 #与客户端绑定的进行通信的端口 vhost_http_port = 8080 #访问客户端web服务自定义的端口号 token = abcd123 #身份验证 修改完成后在此此文件目录下启动服务 执行此命令 前台启动 `./frps -c ./frps.ini` 后台启动 `nohup ./frps -c ./frps.ini &` 修改 `frpc.ini` 文件,假设 frps 所在的服务器的 IP 为 x.x.x.x,local_port 为本地机器上 web 服务对应的端口, 绑定自定义域名 www.yourdomain.com: [common] server_addr = x.x.x.x #公网服务器ip server_port = 7000 #与服务端bind_port一致 token = abcd123 #身份验证 [web] type = http #访问协议 local_port = 80 #内网web服务的端口号 custom_domains = www.yourdomain.com #解析到公网服务器的域名 修改完成后在此此文件目录下启动服务 执行此命令 **前台启动** `./frps -c ./frps.ini` **后台启动** `nohup ./frps -c ./frps.ini &` 通过浏览器访问 http://www.yourdomain.com:8080 即可访问到处于内网机器上的 web 服务。 ##测试 ![][2] [1]: https://mikuac.com/usr/uploads/2018/10/3880603045.png [2]: https://mikuac.com/usr/uploads/2018/10/219006229.png 最后修改:2020 年 09 月 16 日 © 允许规范转载 打赏 赞赏作者 支付宝微信 赞 0 如果觉得我的文章对你有用,请随意赞赏
5 条评论
请问一下,博主你的代码块的样式是怎么做的呀~
感谢
用这个穿透,传输速度会受制于公网服务器么..
比如,我内网服务器有1MB/S的上传
但是公网服务器只有100KB/S..
实际访问最大下载速度是100KB/S还是..1MB/S?
100kb/s,如果公网上行带宽比内网上行带宽小的情况下,最大速度取决于公网带宽,反之取决于内网上行带宽
学习了~