登录
注册
写文章
发现
工具
frp内网穿透
_3t3lfz KEKfID
编辑文章
frp内网穿透
asfx站长
2020.08.28 12:12:14
阅读
1925
- frp 是一个可用于内网穿透的高性能的反向代理应用,支持 tcp, udp 协议,为 http 和 https 应用协议提供了额外的能力,且尝试性支持了点对点穿透。 - [官方文档](https://github.com/fatedier/frp/blob/master/README_zh.md "官方文档") - [frps(服务端)和frpc(客户端)下载地址](https://github.com/fatedier/frp/releases "frps(服务端)和frpc(客户端)下载地址") 利用frp的内网穿透特性,本地搭建的web服务就可以用域名去访问了,方便开发、测试阶段调试bug或者接入第三方服务前的本地沙箱调试。 #### 部署准备: 1.公网服务器一台(这里我用的是linux centos7) 2.内网服务器一台(这里我用的是win10) #下面的部署方式已经过时了,>>[最新的参照这个](http://www.asfx.xyz/p/aa14367cec6c4eb198e19442d8f78994 "最新的参照这个")<< #### 开始部署: ##### 注意:为了避免一些未知错误,请尽量保持frp的客户端与服务端的版本一致!! 目前服务端最新的是v0.20.0版本,所以客户端也用这个版本! ##### 1.部署frp服务端 ```shell # 在线下载脚本 wget --no-check-certificate https://raw.githubusercontent.com/clangcn/onekey-install-shell/master/frps/install-frps.sh -O ./install-frps.sh # 赋权限 chmod 700 ./install-frps.sh # 开始安装 ./install-frps.sh install ``` 根据提示,一般都敲回车选择使用默认值,这里我把vhost http port(http监听端口,默认80)设置为了8888,vhost https port(https监听端口,默认443)设置为了10443 当最后提示所有选项都为Done!的时候才算结束且服务端已经成功启动了!(若没有成功可以尝试再次安装,有时候可能由于网络下载安装中途失败了) 并且提示如下: ```shell Congratulations, frps install completed! ============================================== You Server IP : 服务器公网ip Bind port : 5443 KCP support : true vhost http port : 8888 vhost https port : 10443 Dashboard port : 6443 token : 服务端默认token密码 tcp_mux : true Max Pool count : 50 Log level : info Log max days : 3 Log file : enable ============================================== frps Dashboard : http://服务器公网ip:6443/ Dashboard user : admin Dashboard password : 控制面板默认密码 ============================================== frps status manage : frps {start|stop|restart|status|config|version} Example: start: frps start stop: frps stop restart: frps restart ``` 然后把提示内容复制保存下来,以便后续查阅使用! 此时可以使用下面的查看状态命令来确认上面部署的服务端的状态是否有正常启动:/etc/init.d/frps status,若没有则可以手动去尝试启动! 服务端常用命令: ```shell # 启动 /etc/init.d/frps start # 停止 /etc/init.d/frps stop # 重启 /etc/init.d/frps restart # 查看服务端状态 /etc/init.d/frps status # 查看服务端配置 /etc/init.d/frps config # 查看服务端版本 /etc/init.d/frps version ``` 更新和卸载命令: ```shell # 更新 ./install-frps.sh update # 卸载 ./install-frps.sh uninstall ``` 配置nginx: 要想使用域名直接访问frp穿透的内网服务,需要对nginx做如下配置。 前提:在域名商配置。 1)在域名控制台,“主机”处填写@或者留空,解析到你的服务器 2)“主机”处填写 * ,将所有(二级域名)记录解析到你的服务器上 ```nginx # 定义参数获取客户端的唯一ip地址 map $http_x_forwarded_for $clientRealip { "" $remote_addr; ~^(?P<firstAddr>[0-9\.]+),?.*$ $firstAddr; } ## 这里假设你的域名为frp.com # 管理平台 server { listen 80; server_name manage.frp.com; #为frp的控制台绑定一个域名,这样你就可以用http://manage.frp.com访问你的控制台了 location / { proxy_pass http://127.0.0.1:6443; #此处的6443就是你安装frp时设置的dashboard_port端口 proxy_set_header Host $host; proxy_set_header X-Real-IP $clientRealip; # $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } } # 其他frp访问地址使用的子域名 server { listen 80; server_name *.frp.com; #将所有的frp.com子域名都绑定,这样就不用客户端填写一个你设置一个了,这样你可以用http://lisi-route.frp.com或http://zhangsan-route.frp.com访问你的穿透服务了。 location / { proxy_pass http://127.0.0.1:8888; #此处的8888就是你安装frp时设置的vhost_http_port端口 proxy_set_header Host $host; proxy_set_header X-Real-IP $clientRealip; # $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } } ``` 对了,注意开启服务器的[端口访问权限](http://www.asfx.xyz/p/f229ac93e2eb449c8b4b9104b40ce420 "端口访问权限"),5443(服务端与客户端的通信绑定端口),6443(服务端控制面板访问端口) 好了,现在可以使用 http://manage.frp.com 去访问你的控制面板界面了,用上面的默认用户名和密码去登录。 ##### 2.部署frp客户端,这里以win10为例 这里选用当下和服务端适配的稳定版客户端[frp v0.20.0](https://github.com/fatedier/frp/releases/tag/v0.20.0 "frp v0.20.0") 下载对应的win64的zip包,解压到某个目录,修改frpc.ini这个配置文件(下面配置文件中的注释请自行删除,如不删除可能会启动不了客户端) ``` [common] server_addr = 你的服务器公网ip server_port = 5443 # 上面默认指定的客户端与服务端通信用的绑定端口号 token = 上面默认指定的token [你的应用app名,随意定义,例如 api] type = http local_port = 你的应用端口,例如 8080 custom_domains = 公网访问的二级子域名,例如 api.frp.com # 远程桌面访问配置 [RemoteDesktop] type = tcp local_port = 3389 # 本地随便定的未被使用的端口号 remote_port = 3390 # 服务端的远程端口号,需要服务器开启该端口的访问权限 ``` 用cmd命令开启frp的客户端服务: 进入frp客户端目录,例如我的目录是:C:\dev\frp_0.20.0_windows_amd64 在地址栏输入cmd敲回车,快速进入当下目录的dos窗口,输入下面这行命令进行启动。 ``` frpc.exe -c frpc.ini ``` 提示[api] start proxy success 就表示客户端和服务端已经正常建立连接通信了。其他错误提示可能是由于服务端的端口未开放访问权限或者其他配置错误。 ###### 打开浏览器输入地址 http://api.frp.com ,看看是不是就能访问到你本机的8080端口对应的服务了~~~ 同时远程桌面连接也可以通过ip+端口来访问了。 首先你的本地需要先设置允许远程连接到此计算机,如图 ![设置远程桌面访问权限](//www.asfx.xyz/statics/images/bg/202008/28/696090ed2b704665a23c33fb299d7cb6.png "设置远程桌面访问权限") 点击确定之后,win键+R键,输入 mstsc 敲回车,进入连接界面,计算机的地方输入,你的公网ip:3390 敲回车,输入管理员的用户名和密码(如有设置管理员的用户名密码)就可以进行远程桌面访问了! 好了,到这里算是全部部署完成了。愉快的使用吧~~
我的主页
退出