一、安装frps服务端:
1、新建一个存放目录
1 # mkdir frps
2、拉取一键搭建脚本
# wget --no-check-certificate https://raw.githubusercontent.com/clangcn/onekey-install-shell/master/frps/install-frps.sh -O ./install-frps.sh
3、增加脚本权限
# chmod 700 ./install-frps.sh
4、安装
1 # ./install-frps.sh install
之后他会让你输一些参数,全部参数都有默认值,直接回车就是输入默认值:
Please input frps bind_port [1-65535](Default Server Port: 5443): #输入frp提供服务的端口,用于服务器端和客户端通信,默认即可
Please input frps vhost_http_port [1-65535](Default vhost_http_port: 80): #输入frp进行http穿透的http服务端口,建议选择其他端口,默认的80端口给Nignx,然后用Nginx代理frp的http端口
Please input frps vhost_https_port [1-65535](Default vhost_https_port: 443): #输入frp进行https穿透的https服务端口,同上面的80端口类似,建议分配其他端口,然后通过Nginx代理此端口
Please input frps dashboard_port [1-65535](Default dashboard_port: 6443):#输入frp的控制台服务端口,用于查看frp工作状态,默认即可
Please input dashboard_user (Default: admin):#登录控制台的用户名,默认即可
Please input dashboard_pwd (Default: arepR7VZ):#登录控制台的密码,如果记不住默认的建议修改
Please input privilege_token (Default: 9e2UAeWa6hxrwdc):#输入frp服务器和客户端通信的密码,默认是随机生成的,默认即可
Please input frps max_pool_count [1-200](Default max_pool_count: 50):#设置每个代理可以创建的连接池上限,默认50
##### Please select log_level #####
1: info
2: warn
3: error
4: debug
#####################################################
Enter your choice (1, 2, 3, 4 or exit. default [1]): 默认即可
Please input frps log_max_days [1-30](Default log_max_days: 3 day): 默认即可
##### Please select log_file #####
1: enable
2: disable
#####################################################
Enter your choice (1, 2 or exit. default [1]):默认即可
安装完毕后会弹出以下内容,标明了具体信息,到此服务端操作全部完成。
==============================================
You Server IP : X.X.X.X
Bind port : 5443
KCP support : true
vhost http port : 8085
vhost https port : 4435
Dashboard port : 6443
token : 9e2UAeWa6hxrwdc
tcp_mux : true
Max Pool count : 50
Log level : info
Log max days : 3
Log file : enable
==============================================
frps Dashboard : http://X.X.X.X:6443/
Dashboard user : admin
Dashboard password : admin
==============================================
frps status manage : frps {start|stop|restart|status|config|version}
Example:
start: frps start # 启动frps命令
stop: frps stop # 停止frps命令
restart: frps restart # 重启frps命令
[root@root frps]#
至此,安装完成,可以访问ip地址+控制台端口查看(如果是阿里云腾讯云的服务器或者服务器已安装宝塔面板的,记得在安全组放行以上的配置的端口,否则无法访问),见下图
[common]
server_addr = 127.0.0.1
server_port = 5443
token = 9e2UAeWa6hxrwdc
# 通过tcp的方式可以不使用域名的情况下进行内网穿透,直接访问http://127.0.0.1:8080即可
# tcp穿透需要设置remote_port(为将服务器的8080端口绑定到你的穿透服务,此处的8080端口也需要在防火墙中放开访问权限)
[mock-tcp]
type = tcp
local_ip = 172.18.50.59
local_port = 8089
remote_port = 8080
# custom_domains = mock.frp.test.com
[mock-http]
type = http
local_ip = 172.18.50.59
local_port = 8089
custom_domains = mock.frp.test.com
[web]
type = http
local_ip = 172.18.50.59
local_port = 8091
custom_domains = api.frp.test.com
修改完成后,保存。然后启动 frpc
./frpc -c ./frpc.ini ---- ini文件与执行文件在同一目录
frpc.exe -c ./frpc.ini
注意:frp.test.com这个二级域名需要提前在域名解析中进行A记录解析,见下图:
通过浏览器访问 http://mock.frp.test.com:8085 即可访问到处于内网机器上的 web 服务。
我们通过服务器控制台就可以看到有客户端已经连接了,见下图:
到此就完成了frp的客户端搭建和连接,完成了内网穿透服务。
四、设置客户端自启动:
Linux下添加frp内网穿透工具开机启动
在/etc/rc.local里面添加/home/frp/frps -c /home/frp/frps.ini (文件的具体路径根据实际情况填写),终端里面输入下面的命令,或者把文件下载回本地修改后重新上传覆盖源文件。
vim /etc/rc.local
Windows系统下添加frp内网穿透工具为开机启动项
set ws=WScript.CreateObject("WScript.Shell")
ws.Run "d:\frpc.exe -c d:\frpc_net.ini",0
五、自定义域名访问:
vim frps.conf
# frps内网穿透服务--测试服务为mock服务
server{
listen 80;
listen 8086;
listen 443 ssl http2;
server_name mock.frp.test.com;
location /{
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_read_timeout 300;
proxy_pass http://127.0.0.1:8085;
access_log /www/wwwlogs/access8085.log;
error_log /www/wwwlogs/access_error8085.log;
}
}
这样Nginx 将接管域名的绑定工作,监听到80端口的网站后,会将网站转发到 本机的frp 8085 端口
六、frp进阶配置(未实际测试,摘抄于原作者):
1 [common]
2 server_addr = 180.28.83.22 #这里是服务器的IP
3 server_port = 5443 #服务器的连接端口
4 token = LnDeMkeiIedDeDw #服务器的连接Token
5
6 [dns]
7 type = udp
8 local_ip = 8.8.8.8
9 local_port = 53
10 remote_port = 6000
1 [common]
2 server_addr = 180.28.83.22 #这里是服务器的IP
3 server_port = 5443 #服务器的连接端口
4 token = LnDeMkeiIedDeDw #服务器的连接Token
5
6 [unix_domain_socket]
7 type = tcp
8 remote_port = 6000
9 plugin = unix_domain_socket
10 plugin_unix_path = /var/run/docker.sock
1 [common]
2 server_addr = 180.28.83.22 #这里是服务器的IP
3 server_port = 5443 #服务器的连接端口
4 token = LnDeMkeiIedDeDw #服务器的连接Token
5
6 [dns]
7 type = tcp
8 local_ip = 127.0.0.1
9 local_port = 3389
10 remote_port = 33890