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協(xié)議,它可以與'bind_port'相同
#如果未設置,則在frps中禁用kcp
kcp_bind_port = 7000
#指定哪個地址代理將偵聽,默認值與bind_addr相同
#proxy_bind_addr = 127.0.0.1
#如果要支持虛擬主機,必須設置http端口進行監(jiān)聽(可選)
#注意: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,可以在此處或在全局環(huán)境變量中設置http_proxy
#它僅在協(xié)議為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
#決定首次登錄失敗時退出程序,否則連續(xù)重新登錄到frps
#default為true
login_fail_exit = true
#用于連接服務器的通信協(xié)議
#現(xiàn)在它支持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監(jiān)聽
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
#如果要公開多個端口,請在節(jié)名稱中添加“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協(xié)議的安全認證
#如果未設置,您可以在沒有認證的情況下訪問此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.運行、測試