1.实验工具和平台
2.软件下载、安装
3.配置软件
frps.ini的配置
#[common]是不可分割的部分
[共同]
#必须包含IPv6的文字地址或主机名
#在方括号中,如“[:: 1]:80”,“[ipv6-host]:http”或“[ipv6-host%zone]:80”
bind_addr = 0.0.0.0
bind_port = 7000
#udp port帮助让udp孔穿透nat
bind_udp_port = 7001
#udp port用于kcp协议,它可以与'bind_port'相同
#如果未设置,则在frps中禁用kcp
kcp_bind_port = 7000
#指定哪个地址代理将侦听,默认值与bind_addr相同
#proxy_bind_addr = 127.0.0.1
#如果要支持虚拟主机,必须设置http端口进行监听(可选)
#注意:http端口和https端口可以与bind_port相同
vhost_http_port = 80
vhost_https_port = 443
#set dashboard_addr和dashboard_port查看frps的仪表板
#smsboard_addr的默认值与bind_addr相同
仅当设置了dashboard_port时,#dashboard才可用
dashboard_addr = 0.0.0.0
dashboard_port = 7500
#msmsboard用户和passwd用于基本身份验证保护,如果未设置,则默认值均为admin
dashboard_user = admin
dashboard_pwd = admin
#spamboard assets目录(仅适用于调试模式)
#assets_dir = ./static
#console或真正的logFile路径,如./frps.log
log_file = ./frps.log
#trace,debug,info,warn,error
log_level = info
log_max_days = 3
#auth令牌
token = 12345678
#heartbeat configure,不建议修改默认值
#hearbeat_timeout的默认值为90
#heartbeat_timeout = 90
#只允许frpc绑定你列出的端口,如果你没有设置,就不会有任何限制
allow_ports = 2000-3000,3001,3003,4000-50000
如果每个代理中的#pool_count超过最大值,则会更改为max_pool_count
max_pool_count = 5
#max ports可用于每个客户端,默认值为0表示无限制
max_ports_per_client = 0
#cognification_timeout表示frpc连接frps时的超时间隔(秒)
#iify authentication_timeout为零,时间未验证,默认为900s
authentication_timeout = 900
#if subdomain_host不为空,可以在frpc配置文件中键入http或https时设置子域
#子域名测试时,路由使用的主机是test.frps.com
subdomain_host = frps.com
#if如果使用tcp stream multiplexing,则默认为true
tcp_mux = true
frpc.ini
#[common]是不可分割的部分
[共同]
#必须包含IPv6的文字地址或主机名
#在方括号中,如“[:: 1]:80”,“[ipv6-host]:http”或“[ipv6-host%zone]:80”
server_addr = 0.0.0.0
server_port = 7000
#如果要通过http代理或socks5代理连接frps,可以在此处或在全局环境变量中设置http_proxy
#它仅在协议为tcp时有效
#http_proxy = http:// user:passwd@192.168.1.128:8080
#http_proxy = socks5:// user:passwd@192.168.1.128:1080
#console或真正的logFile路径,如./frpc.log
log_file = ./frpc.log
#trace,debug,info,warn,error
log_level = info
log_max_days = 3
#用于身份验证
token = 12345678
#设置管理地址,用于通过http api控制frpc的动作,如重新加载
admin_addr = 127.0.0.1
admin_port = 7400
admin_user = admin
admin_passwd = admin
#connections将提前建立,默认值为零
pool_count = 5
#if如果使用tcp stream multiplexing,默认为true,它必须与frps相同
tcp_mux = true
#您的代理名称将更改为{user}。{proxy}
user = your_name
#决定首次登录失败时退出程序,否则连续重新登录到frps
#default为true
login_fail_exit = true
#用于连接服务器的通信协议
#现在它支持tcp和kcp,默认是tcp
protocol = tcp
#指定一个dns服务器,因此frpc将使用它而不是默认值
#dn_server = 8.8.8.8
#您要开始的代理名称除以','
#default为空,表示所有代理
#start = ssh,dns
#heartbeat configure,不建议修改默认值
#hearbeat_interval的默认值为10,heartbeat_timeout为90
#heartbeat_interval = 30
#heartbeat_timeout = 90
#'ssh'是唯一的代理名称
#如果[common]部分中的用户不为空,则会更改为{user}。{proxy},例如'your_name.ssh'
[SSH]
#tcp | udp | http | https | stcp | xtcp,默认为tcp
type = tcp
local_ip = 127.0.0.1
local_port = 22
#true或false,如果为true,frps和frpc之间的消息将被加密,默认为false
use_encryption = false
#if如果为true,将压缩消息
use_compression = false
#remout端口通过frps监听
remote_port = 6001
#frps将为同一组中的代理加载平衡连接
group = test_group
#group应该具有相同的组密钥
group_key = 123456
[ssh_random]
type = tcp
local_ip = 127.0.0.1
local_port = 22
#if remote_port为0时,frps将为您分配一个随机端口
remote_port = 0
#如果要公开多个端口,请在节名称中添加“range:”前缀
#frpc将生成多个代理,例如'tcp_port_6010','tcp_port_6011'等。
[范围:TCP_PORT]
type = tcp
local_ip = 127.0.0.1
local_port = 6010-6020,6022,6024-6028
remote_port = 6010-6020,6022,6024-6028
use_encryption = false
use_compression = false
[DNS]
type = udp
local_ip = 114.114.114.114
local_port = 53
remote_port = 6002
use_encryption = false
use_compression = false
[范围:udp_port]
type = udp
local_ip = 127.0.0.1
local_port = 6010-6020
remote_port = 6010-6020
use_encryption = false
use_compression = false
#将您的域名解析为[server_addr],以便您可以使用http://web01.yourdomain.com浏览web01和http://web02.yourdomain.com来浏览web02
[WEB01]
type = http
local_ip = 127.0.0.1
local_port = 80
use_encryption = false
use_compression = true
#http用户名和密码是http协议的安全认证
#如果未设置,您可以在没有认证的情况下访问此custom_domains
http_user = admin
http_pwd = admin
#如果frps的域名是frps.com,那么您可以通过URL http://test.frps.com访问[web01]代理
subdomain = web01
custom_domains = web02.yourdomain.com
#locations仅适用于http类型
locations = /,/ pic
host_header_rewrite = example.com
带有前缀“header_”的#params将用于更新http请求标头
header_X-From-Where = frp
[web02]
type = https
local_ip = 127.0.0.1
local_port = 8000
use_encryption = false
use_compression = false
subdomain = web01
custom_domains = web02.yourdomain.com
[plugin_unix_domain_socket]
type = tcp
remote_port = 6003
#if如果定义了插件,local_ip和local_port就没用了
#lugin将处理从frps获得的连接
plugin = unix_domain_socket
#params前缀为“plugin_”,插件需要
plugin_unix_path = /var/run/docker.sock
[plugin_http_proxy]
type = tcp
remote_port = 6004
plugin = http_proxy
plugin_http_user = abc
plugin_http_passwd = abc
[plugin_socks5]
type = tcp
remote_port = 6005
plugin = socks5
plugin_user = abc
plugin_passwd = abc
[plugin_static_file]
type = tcp
remote_port = 6006
plugin = static_file
plugin_local_path = / var / www / blog
plugin_strip_prefix = static
plugin_http_user = abc
plugin_http_passwd = abc
[secret_tcp]
#如果类型是秘密tcp,则remote_port是无用的
#谁想要连接本地端口应该使用stcp代理部署另一个frpc,角色是访问者
type = stcp
#sk用于访问者的身份验证
sk = abcdefg
local_ip = 127.0.0.1
local_port = 22
use_encryption = false
use_compression = false
#pcpc的用户在stcp服务器和stcp访问者中应该相同
[secret_tcp_visitor]
#frpc角色访问者 - > frps - > frpc角色服务器
role = visitor
type = stcp
#您要访问的服务器名称
server_name = secret_tcp
sk = abcdefg
#将此地址连接到访问者stcp服务器
bind_addr = 127.0.0.1
bind_port = 9000
use_encryption = false
use_compression = false
[p2p_tcp]
type = xtcp
sk = abcdefg
local_ip = 127.0.0.1
local_port = 22
use_encryption = false
use_compression = false
[p2p_tcp_visitor]
role = visitor
type = xtcp
server_name = p2p_tcp
sk = abcdefg
bind_addr = 127.0.0.1
bind_port = 9001
use_encryption = false
use_compression = false
4.运行、测试