没有公网IP是一件很不方便的事情,尤其是在国内的网络环境,学校和小区内的用户通常都没有公网IP。为了解决这个问题,则需要内网穿透,而内网穿透的方法有很多种,例如使用花生壳、ngrok等,本文介绍的是使用frp让实现内网穿透。
frp 是一个高性能的反向代理应用,可以帮助您轻松地进行内网穿透,对外网提供服务,支持 tcp, http, https 等协议类型,并且 web 服务支持根据域名进行路由转发。
一、服务器端(frps)
1、SSH连接上外网主机后,使用wget指令下载frp。(这里以系统CentOS,frp版本v0.10.0为例),其他系统自行到这里(https://github.com/fatedier/frp/releases)下载相对以的系统版本。
wget https://github.com/fatedier/frp/releases/download/v0.10.0/frp_0.10.0_linux_amd64.tar.gz
使用tar指令解压tar.gz文件
tar -zxvf frp_0.10.0_linux_amd64.tar.gz
使用cd指令进入解压出来的文件夹
cd frp_0.10.0_linux_amd64
外网主机作为服务端,可以删掉不必要的客户端文件,使用rm指令删除文件。
rm -f frpc
rm -f frpc.ini
接下来要修改服务器配置文件,即frps.ini文件。使用vi指令对目标文件进行编辑。
vi frps.ini
也可以直接把frps.ini文件下载到本地修改。改动说明如下(图),frp版本v0.10.0为例,采用特权模式,最方便简单方式:
保存上面的配置后,就可以使用以下指令启动frp服务端。
nohup ./frps -c ./frps.ini &
服务端的工作就到此结束了。(命令执行后是没有反应的,但已经可以了,如还不行看log。)可以访问IP+dashboard_port访问控制面板,如:127.0.0.1:7500
注:使用nohup指令
nohup指令的使用方法相对简单,只需要在nohup后面加上frp的运行指令即可。下面示范的指令是运行frp客户端。(同样,如果之前断开了SSH连接,记得用cd指令进入frp的目录先。)
二、客户端(frpc)
这里说得客户端有两种:一种是路由器,一种是群晖等。
1、而路由器的话就相对比较简单,因为多数的智能的路由器都有集成frp或者有插件(如:老毛子、梅林、hiwifi),直接配置frpc.ini文件就行了,所以我们现在就想说说路由器的配置(注意看箭头):
代码:
[common] server_addr = 127.0.0.1 server_port = 7000 privilege_token = admin [web] privilege_mode = true remote_port = 6000 type = http local_ip = 192.168.1.1 local_port = 80 use_gzip = true subdomain = test custom_domains = frp.xxx.com
custom_domains = frp.xxx.com 就是图1下方绑定的域名,在这里要注意解析泛域名,如:*.frp.xxx.com。绑定后就可以通过域名:test.frp.xxx.com:8080访问了。注:这里的8080端口就是在服务端(frps)所填写的vhost_http_port,而域名前缀test就是客户端(frpc)的subdomain = test
保存配置frpc.ini,就OK了。
2、群晖NAS配置的客户端前面的操作和服务端是一模一样的,这里不一一解释。
wget https://github.com/fatedier/frp/releases/download/v0.10.0/frp_0.10.0_linux_386.tar.gz tar -zxvf frp_0.10.0_linux_386.tar.gz cd frp_0.10.0_linux_386 rm -f frps rm -f frps.ini vi frpc.ini
客户端的配置如下:
[common] server_addr = x.x.x.x server_port = 7000 auth_token = 123 [ssh] local_port = 22 [nas] type = http local_port = 5000 [web] type = http local_port = 80
里面有更多玩法,如:通过密码保护你的 web 服务,修改 Host Header,加密与压缩等等。
原文链接:https://www.vvso.cn/xlbk/15221.html