frps端:
[common]
bind_addr = 0.0.0.0
#bind_port frp链接的端口 首先必须在安全组开放端口,其次,访问时 客户端要和服务端一致
bind_port = 7000
#vhost_http_port :是自定义的 与客户端无关 如果定义为8000,首先必须在安全组开放端口,其次,访问时 要加端口8000 ,80默认不写
vhost_http_port = 9092
dashboard_port = 7500
dashboard_pwd = admin
tcp_mux=true
max_pool_count=10
[web01]
type = stcp #协议
auth_token = admin #默认admin
custom_domains = sz1.lysxrj.com #frps服务器解析的域名
[web02]
type = stcp #协议
auth_token = admin #默认admin
custom_domains = sz2.lysxrj.com #frps服务器解析的域名
frpc端,这里测试的是本地redis映射到外网,所以frpc安装在我本地
# [common] is integral section
[common]
# A literal address or host name for IPv6 must be enclosed
# in square brackets, as in "[::1]:80", "[ipv6-host]:http" or "[ipv6-host%zone]:80"
#要和frps ip保持一致
server_addr = 123.56.179.131
#frps的链接端口7000
server_port = 7000
# Resolve your domain names to [server_addr] so you can use http://web01.yourdomain.com to browse web01 and http://web02.yourdomain.com to browse web02
[web02]
type = tcp #协议
local_ip = 127.0.0.1 #本地redis ip
local_port = 6380 #本地redis 端口
remote_port = 16380 #暴露给外网的端口
custom_domains = sz2.lysxrj.com #frps服务解析的域名
#可以配置多个 web0XX...... 域名区分
#经过测试,域名可以用同一个,端口不一样就可以
#这里还有一个坑,虽然16380是配置在客户端 frpc所在服务器的,但是,如果frps端所在服务器没有开放16380,是无法穿透成功的
个人理解是,内网穿透redis访问16380时,通过域名找到[web01] [web02](域名相同的情况下),通过端口确定是[web02],接着穿透到16380 frpc所在服务器
如果不同域名,根据域名就直接可以确定往哪一台frpc所在服务器穿透请求
windows 启动服务:
frps.exe -c frps_full.ini ,可以写成脚本
linux启动服务:
./frps -c frps.ini (这里注意,千万别弄错了,还有一个frps_full.ini是windows用的)
windows启动客户端:
frpc.exe -c frpc_full.ini ,可以写成脚本
linux启动客户端:
./frpc -c frpc.ini (这里注意,千万别弄错了,还有一个frpc_full.ini是windows用的)
在linux里 ./frp..启动默认是前台运行,关闭窗口服务就关了,所以改为
nohup ./frps -c frps.ini
nohup ./frpc -c frpc.ini
这样启动,是后台运行。问题来了,前台运行关闭,只需要ctrl+c,那nohup运行起来,如何关闭重启呢?
1.先找到这个进程
ps -aux|grep frp| grep -v grep
2.kill -9 pid杀死进程
3.nohup ./frp....
可以写成sh脚本
-----------------------------------
用到现在,总结一下frp的穿透原理:
客户端通过 [web01] [web02] 向服务端frps进行连接
服务端访问时