本文最后更新于2023年8月7日,已超过 1 年没有更新,如果文章内容失效,请 反馈 给我们,谢谢!
第一步:公网安装frps
- wget https://code.aliyun.com/MvsCode/frps-onekey/raw/master/install-frps.sh -O ./install-frps.sh
- chmod 700 ./install-frps.sh
- ./install-frps.sh install
或者是
- wget https://raw.githubusercontent.com/MvsCode/frps-onekey/master/install-frps.sh -O ./install-frps.sh
- chmod 700 ./install-frps.sh
- ./install-frps.sh install
安装过程中会让你手动选择一些参数:
- Please input frps bind_port [1-65535](Default Server Port: 5443):
- #输入frp提供服务的端口,用于服务器端和客户端通信,按Enter键表示默认5443,否则手动输入新端口
- Please input frps dashboard_port [1-65535](Default dashboard_port: 6443):
- #输入frp的控制台服务端口,用于查看frp工作状态,按Enter键表示默认6443,否则手动输入新端口
- Please input frps vhost_http_port [1-65535](Default vhost_http_port: 80):
- #输入frp进行http穿透的http服务端口,按Enter键表示默认80,否则手动输入新端口
- Please input frps vhost_https_port [1-65535](Default vhost_https_port: 443):
- #输入frp进行https穿透的https服务端口,按Enter键表示默认443,否则手动输入新端口
- Please input privilege_token (Default: xxxxxxxxx):
- #输入frp服务器和客户端通信的密码,默认是随机生成的,按Enter键表示按默认来,否则手动输入。frpc客户端需要这个接头暗号
- 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]):
- #设置日志等级,4个选项,默认是info
- Please input frps log_max_days [1-30] (Default log_max_days: 3 day):
- #设置日志保留天数,范围是1到30天,默认保留3天。
- ##### Please select log_file #####
- 1: enable
- 2: disable
- #####################################################
- Enter your choice (1, 2 or exit. default [1]):
- #设置是否开启日志记录,默认开启,开启后日志等级及保留天数生效,否则等级和保留天数无效
安装完成后会给出一些信息,建议复制出来保存在记事本上,配置FRPC需要用到
- Congratulations, frps install completed!
- ==============================================
- You Server IP : x.x.x.x
- Bind port : 5443
- KCP support : true
- vhost http port : 80
- vhost https port : 443
- Dashboard port : 6443
- token : xxxxxxxxx
- tcp_mux : true
- Max Pool count : 50
- Log level : info
- Log max days : 30
- Log file : enable
- ==============================================
- frps Dashboard : http://x.x.x.x:6443/
- Dashboard user : admin
- Dashboard password : xxxxxxxx
- ==============================================
- frps status manage :frps {start|stop|restart|status|config|version}
注意,如果安装完成后,上面这个链接打不开的,请注意检查一下服务器的防火墙是不是没有放行端口,比如:5443、6443、80、443等。到此,frp的服务端就安装完成了。
常用功能命令:
常用功能命令:
- 运行程序:frps start
- 停止程序:frps stop
- 重启程序:frps restart
- 运行状态:frps status
- 配置程序:frps config
- 程序版本:frps version
- 更新命令:./install-frps.sh update
- 卸载命令:./install-frps.sh uninstall
安装文件默认位于/usr/local/frps/,里面有frps程序以及frps.ini配置文件。这个配置文件一般安装时就填写好了对应的服务器不用修改。
第二步:内网安装frpc
打开网址:https://github.com/fatedier/frp/releases选择相应版本下载,版本在安装frps结束时会有提到,没注意可以看前文的命令程序版本。
因为我的内网主机是windows所以我选择的是frp_0.51.1_windows_amd64,下载完成后只保留以frpc开头的文件,随便找一个目录保存,目录格式如下(myfrp是我自己随便取的):
因为我的内网主机是windows所以我选择的是frp_0.51.1_windows_amd64,下载完成后只保留以frpc开头的文件,随便找一个目录保存,目录格式如下(myfrp是我自己随便取的):
myfrp/frpc/frpc.exe
myfrp/frpc.ini
myfrp/frpc_full.ini
myfrp/便捷启动.bat
myfrp/frpc.ini
myfrp/frpc_full.ini
myfrp/便捷启动.bat
便捷启动里面的代码如下:
- @echo off
- cd /d %~dp0
- :: 获取管理员权限,不需要可删除或注释掉。
- %1 start "" mshta vbscript:createobject("shell.application").shellexecute("""%~0""","::",,"runas",1)(window.close)&exit
- title -- FRPC 便捷启动脚本 --
- MODE con: COLS=60 lines=18
- color 0a
- :begin
- cls
- MODE con: COLS=60 lines=18
- echo.
- %~dp0\frpc\frpc.exe -v >%~dp0\frpc\version.txt
- FOR /F %%i IN (%~dp0\frpc\version.txt) DO (
- echo. ===FRPC便捷启动脚本^(当前frpc.exe版本:%%i^)===
- )
- echo.
- echo. --[1]--启动并隐藏窗口
- echo. --[2]--安装开机自启动服务(管理员权限)
- echo. --[3]--卸载开机自启动服务(管理员权限)
- echo. --[4]--关闭frpc进程
- echo. --[5]--临时启动并显示进程信息
- echo. --[6]--退出脚本并清理临时文件
- echo.
- echo.
- echo. --注意--使用前应先修改frpc.ini中对应的配置信息
- echo. --注意--临时启动中测试正常后再安装为自启动服务
- echo. --注意--如需升级版本仅需要替换frpc\frpc.exe文件
- echo.
- choice /c 123456 /n /m "请选择【1-6】:"
- if %errorlevel% == 1 goto set_1
- if %errorlevel% == 2 goto set_2
- if %errorlevel% == 3 goto set_3
- if %errorlevel% == 4 goto set_4
- if %errorlevel% == 5 goto set_5
- if %errorlevel% == 6 goto end
- :set_1
- MODE con: COLS=80 lines=17
- taskkill /im frpc.exe /f 1>nul 2>nul
- ping localhost -n 3 > nul
- cls
- echo.
- echo.
- echo. 程序正在启动中....
- echo.
- echo. --[正在更新启动脚本]--
- echo.set ws=WScript.CreateObject("WScript.Shell")>%~dp0\frpc\start2hide.vbs
- echo.ws.Run "%~dp0\frpc\frpc.exe -c %~dp0\frpc.ini",^0>>%~dp0\frpc\start2hide.vbs
- echo.
- ping localhost -n 3 > nul
- echo. --[正在启动后台进程]--
- echo.
- %~dp0\frpc\start2hide.vbs
- ping localhost -n 2 > nul
- tasklist /fi "imagename eq frpc.exe"
- echo.
- echo. 启动成功,按任意键隐藏窗口!
- pause>nul
- exit
- :set_2
- MODE con: COLS=60 lines=12
- taskkill /im frpc.exe /f 1>nul 2>nul
- ping localhost -n 3 > nul
- cls
- echo.
- echo.
- echo. 正在获取【管理员权限】,请在弹出菜单中点【是】
- ping localhost -n 5 > nul
- echo.
- echo. --[正在生成配置文件]--
- echo.^<service^>>%~dp0\frpc\frpc-service.xml
- echo.^<id^>frpc^</id^>>>%~dp0\frpc\frpc-service.xml
- echo.^<name^>Frpc Service^</name^>>>%~dp0\frpc\frpc-service.xml
- echo.^<description^>Frpc Service^</description^>>>%~dp0\frpc\frpc-service.xml
- echo.^<executable^>%~dp0\frpc\frpc.exe^</executable^>>>%~dp0\frpc\frpc-service.xml
- echo.^<arguments^>-c %~dp0\frpc.ini^</arguments^>>>%~dp0\frpc\frpc-service.xml
- echo.^<logmode^>reset^</logmode^>>>%~dp0\frpc\frpc-service.xml
- echo.^</service^>>>%~dp0\frpc\frpc-service.xml
- echo.
- ping localhost -n 3 > nul
- echo. --[正在安装服务]--
- echo.
- %~dp0\frpc\frpc-service.exe install 1>nul 2>nul
- echo.
- echo. 服务安装成功!按【任意键】启动服务 请在弹出菜单中点【是】
- pause>nul
- MODE con: COLS=80 lines=9
- %~dp0\frpc\frpc-service.exe start 1>nul 2>nul
- echo.
- ping localhost -n 2 > nul
- tasklist /fi "imagename eq frpc.exe"
- echo.
- echo. 服务启动成功,按任意键返回开始菜单!
- pause>nul
- goto begin
- :set_3
- MODE con: COLS=60 lines=9
- taskkill /im frpc.exe /f 1>nul 2>nul
- ping localhost -n 3 > nul
- cls
- echo.
- echo.
- echo. 正在获取【管理员权限】 请在弹出菜单中点【是】
- ping localhost -n 5 > nul
- echo.
- echo. --[正在卸载自启动服务]--
- %~dp0\frpc\frpc-service.exe uninstall 1>nul 2>nul
- echo.
- echo. 卸载成功,按任意键返回开始菜单!
- pause>nul
- goto begin
- :set_4
- MODE con: COLS=80 lines=9
- cls
- echo.
- echo.
- echo. 关闭frpc后台(服务)进程....
- echo.
- echo. --[正在关闭frpc进程]--
- taskkill /im frpc.exe /f 1>nul 2>nul
- echo.
- echo. 关闭成功,按任意键返回开始菜单!
- pause>nul
- goto begin
- :set_5
- MODE con: COLS=140 lines=13
- taskkill /im frpc.exe /f 1>nul 2>nul
- ping localhost -n 3 > nul
- cls
- echo.
- echo.
- echo. - [关闭窗口停止解析]域名解析中....(每行以success结尾说明解析成功,否则请修改frpc.ini中错误项)
- echo. - 请确保本地相关服务(如网站)已开启,否则访问域名时会端口报错。
- echo.
- %~dp0\frpc\frpc.exe -c %~dp0\frpc.ini
- pause>nul
- goto begin
- :end
- MODE con: COLS=60 lines=9
- cls
- echo.
- echo.
- echo.
- echo. ===正在清理临时文件===
- del %~dp0\frpc\frpc-service.err.log 2>nul
- del %~dp0\frpc\frpc-service.out.log 2>nul
- del %~dp0\frpc\frpc-service.wrapper.log 2>nul
- del %~dp0\frpc\start2hide.vbs 2>nul
- del %~dp0\frpc\version.txt 2>nul
- echo.
- echo. 清理已完成,正在关闭脚本....
- ping localhost -n 2 > nul
- exit
[common]配置项目
客户端管理界面 打开浏览器通过 http://127.0.0.1:7400 访问 Admin UI。
- admin_addr = 127.0.0.1
- admin_port = 7400
- admin_user = admin
- admin_pwd = admin
- <div class="alert bs_tips" role="alert">如果想要在外网环境访问 Admin UI,可以将 7400 端口通过 frp 映射出去即可,但需要重视安全风险。</div>
- <h2>frps.ini完整参数</h2>
- <pre class="prettyprint linenums" >
- [common]
- # nat_hole_stun_server = stun.easyvoip.com:3478 //STUN服务器帮助穿透NAT孔。默认关闭
- # dial_server_timeout = 10 //等待连接完成的最长时间。默认值为 10 秒。
- # dial_server_keepalive = 7200 //用来设置frpc和frps之间活动网络连接的保活探测间隔的。每7200秒(2小时)进行一次保活探测。
- # http_proxy = http://user:passwd@192.168.1.128:8080 //设置了一个HTTP代理,使用的是基本的HTTP身份验证。其中,user是用户名,passwd是密码,192.168.1.128是代理服务器的IP地址,8080是代理服务器的端口号。
- # http_proxy = socks5://user:passwd@192.168.1.128:1080 //设置了一个SOCKS5代理,同样使用了基本的身份验证。与第一行代码类似,只是使用了不同的代理协议(SOCKS5)和端口号(1080)。
- # http_proxy = ntlm://user:passwd@192.168.1.128:2080 //设置了一个NTLM代理,同样使用了基本的身份验证。与前两行代码类似,只是使用了不同的代理协议(NTLM)和端口号(2080)。
- #以上三个代理配置可以根据实际情况进行修改,以适应你的网络环境和代理服务器的设置。默认关闭不需要代理。
- log_file = ./frpc.log //日志保存位置及名称
- log_level = info //日志级别,可选的日志级别包括"trace"、"debug"、"warn"和"error"。不同的日志级别代表了不同的详细程度,"info"级别是一种中等详细程度的日志输出。默认为info
- log_max_days = 3 //日志保存天数,默认为3天
- disable_log_color = false //设置当日志文件为控制台时是否禁用日志颜色。disable_log_color被设置为false,表示不禁用日志颜色,可以使用颜色来区分不同级别的日志信息,使其更易读。
- token = 12345678 //认证令牌,需要和frpc.ini中填的一样
- authentication_method = //身份验证方式,token 或 oidc,默认为 token。
- authenticate_heartbeats = false //在每一个心跳包中附加上身份认证信息,客户端服务端需要一致。默认为false
- authenticate_new_work_conns = false //在每次创建工作连接时附加上身份认证信息,客户端服务端需要一致。默认为false
- oidc_client_id = //指定在 OIDC 身份验证中获取令牌时使用的客户端 ID。
- oidc_client_secret = //指定在 OIDC 身份验证中用于获取令牌的客户端密钥。
- oidc_audience =
- oidc_scope =
- oidc_token_endpoint_url =
- #上面默认即可
- pool_count = 1 //适合有大量短连接请求时开启。首先可以在 frps.ini 中设置每个代理可以创建的连接池上限,避免大量资源占用,客户端设置超过此配置后会被调整到当前值:
- # tcp_mux = true //TCP 多路复用 客户端和服务器端之间的连接支持多路复用,不再需要为每一个用户请求创建一个连接,使连接建立的延迟降低,并且避免了大量文件描述符的占用,使 frp 可以承载更高的并发数。该功能默认启用,如需关闭,可以在 frps.ini 和 frpc.ini 中配置,该配置项在服务端和客户端必须一致。
- # tcp_mux_keepalive_interval = 60 //设置TCP多路复用(tcp_mux)的保活间隔。每60秒发送一次TCP多路复用的保活消息。只有当tcp_mux参数设置为true时,tcp_mux_keepalive_interval参数才有效。
- user = your_name //设置frpc连接到frps时使用的用户名,如果设置了在frpc和frps的配置文件中使用相同的用户名进行匹配。
- login_fail_exit = true //连接失败退出,希望frpc在登录失败时继续运行,可以将login_fail_exit设置为false。默认true
- protocol = tcp //设置与服务器建立连接时使用的通信协议。设置为"tcp",表示使用TCP协议与服务器建立连接。其他可选的协议包括"kcp"、"quic"、"websocket"和"wss"。TCP是最常用的协议,适用于大多数网络环境。KCP是一种可靠的UDP协议,适用于高丢包和延迟较高的网络环境。QUIC是一种基于UDP的快速传输协议,适用于对性能有较高要求的场景。Websocket和WSS是在Web应用中使用的协议,可以穿越HTTP代理。根据你的实际需求和网络环境,你可以相应地调整protocol的值。
- connect_server_local_ip = 0.0.0.0 //指定连接服务器时使用的本地IP地址, 设置为"0.0.0.0",表示使用所有可用的本地IP地址进行连接服务器。这是一个通配符地址,表示可以使用任何可用的本地IP地址。该设置仅在protocol参数设置为"tcp"或"websocket"时才会生效。
- # quic_keepalive_period = 10 //每10秒发送一次QUIC保活消息。
- # quic_max_idle_timeout = 30 //如果连接在30秒内没有活动,将被视为超时。
- # quic_max_incoming_streams = 100000 //允许同时接收的最大流数量为100000。
- #以上三行参数仅在使用QUIC协议时才会生效。如果你不使用QUIC协议,可以忽略这些参数。
- tls_enable = true //设置是否启用TLS加密来连接frps。tls_enable被设置为true,表示启用TLS加密来连接frps。这意味着frpc将使用TLS协议来与frps建立安全的加密连接。
- # tls_cert_file = client.crt //表示证书文件名为"client.crt"。
- # tls_key_file = client.key //私钥文件名为"client.key"。
- # tls_trusted_ca_file = ca.crt /受信任的CA证书文件名为"ca.crt"。
- # tls_server_name = example.com /服务器的名称为"example.com"。
- #上面四行用于设置TLS的证书和密钥文件,以及受信任的CA证书文件和服务器名称。
- # dns_server = 8.8.8.8 //用于设置frpc使用的DNS服务器。
- # start = ssh,dns //用于设置要启动的代理名称。start参数用于指定要启动的代理的名称,多个代理名称之间使用逗号分隔。start被设置为"ssh,dns",表示要启动名为"ssh"和"dns"的两个代理。默认情况下,start参数为空,意味着启动所有的代理。确保指定的代理名称与你的配置文件中定义的代理名称相匹配。
- # heartbeat_interval = 30
- # heartbeat_timeout = 90
- #默认情况下,heartbeat_interval的默认值为10,heartbeat_timeout的默认值为90。如果要禁用心跳检测,可以将这些值设置为负数。不建议修改默认值,因此,如果不需要特别的配置,建议保持默认值不变。
- meta_var1 = 123 //用于为客户端添加额外的元信息
- meta_var2 = 234 //用于为客户端添加额外的元信息
- udp_packet_size = 1500 //指定UDP数据包的大小,单位为字节。如果未设置该参数,则默认值为1500字节。该参数需要在客户端和服务器端保持一致。它会影响UDP和SUDP代理的工作方式。
- disable_custom_tls_first_byte = true //是否在启用TLS时,frpc与frps建立连接时使用自定义的第一个字节。
- pprof_enable = false //是否在管理员监听器中启用Golang pprof处理程序。
- [ssh]
- type = tcp //代理的类型,可以是tcp、udp、http、https、stcp或xtcp,默认为tcp。
- local_ip = 127.0.0.1 //本地IP地址,代理将监听该地址上的连接。
- local_port = 22 //本地端口号,代理将监听该端口上的连接。
- bandwidth_limit = 1MB //限制该代理的带宽,单位可以是KB或MB。
- bandwidth_limit_mode = client //带宽限制的模式,可以是'client'或'server',默认为'client'。
- use_encryption = false //是否启用加密,如果设置为true,frps和frpc之间的消息将被加密,默认为false。
- use_compression = false //是否启用压缩,如果设置为true,消息将被压缩。
- remote_port = 6001 //frps监听的远程端口号。
- group = test_group //代理所属的组名,用于负载均衡。
- group_key = 123456 //组的密钥,用于验证组成员的身份。
- health_check_type = tcp //健康检查的类型,目前支持tcp和http。
- health_check_timeout_s = 3 //健康检查的超时时间,单位为秒。
- health_check_max_failed = 3 //连续失败的最大次数,达到该次数后代理将从frps中移除。
- health_check_interval_s = 10 //健康检查的间隔时间,单位为秒。
- meta_var1 = 123 //为该代理添加的额外元信息。
- meta_var2 = 234 //为该代理添加的额外元信息。
- #以下是一个简单的示例
- [ssh_random]
- type = tcp
- local_ip = 127.0.0.1
- local_port = 22
- remote_port = 0
- #定义一组多个代理。通过在部分名称前添加'range:'前缀,可以指定要公开的多个端口。在这个示例中,代理的名称是'tcp_port',并且包含了一组多个端口范围。local_port和remote_port参数使用逗号和连字符来指定多个端口。
- [range:tcp_port]
- type = tcp
- local_ip = 127.0.0.1
- local_port = 6010-6020,6022,6024-6028 //本地端口范围可以使用连字符和逗号指定多个端口。
- remote_port = 6010-6020,6022,6024-6028 /远程端口范围,与local_port相对应,用于指定在frps上公开的端口。
- use_encryption = false
- use_compression = false
- #定义名为'dns'的代理
- [dns]
- type = udp //代理的类型,这里是udp,表示使用UDP协议。
- local_ip = 114.114.114.114
- local_port = 53 /本地端口号
- remote_port = 6002 //远程端口号
- use_encryption = false //是否启用加密
- use_compression = false //是否启用压缩
- [range:udp_port]
- type = udp
- local_ip = 127.0.0.1
- local_port = 6010-6020
- remote_port = 6010-6020
- use_encryption = false
- use_compression = false
- #配置一个web01的服务
- [web01]
- type = http //代理的类型,这里是http,表示使用HTTP协议。
- local_ip = 127.0.0.1 //本地IP地址,代理将监听该地址上的连接。
- local_port = 80 //本地端口号,代理将监听该端口上的连接。
- use_encryption = false //是否启用加密,如果设置为true,frps和frpc之间的消息将被加密,默认为false。
- use_compression = true //是否启用压缩,如果设置为true,消息将被压缩。
- http_user = admin //用于HTTP协议的安全认证,如果设置了这两个参数,访问该代理时需要提供相应的用户名和密码。
- http_pwd = admin
- subdomain = web01 //子域名,用于访问该代理。例如,如果设置为'web01',则可以通过URL http://web01.frps.com 访问该代理。
- custom_domains = web01.yourdomain.com /自定义域名,用于访问该代理。例如,设置为'web01.yourdomain.com',则可以通过该域名访问该代理。
- locations = /,/pic //仅适用于HTTP类型的代理,用于指定不同的URL路径对应的后端服务。
- host_header_rewrite = example.com //重写HTTP请求的Host头部字段,可以将其修改为指定的值。
- header_X-From-Where = frp //用于更新HTTP请求头部的参数,将会添加到请求头中。
- health_check_type = http //健康检查的类型,这里是http,表示使用HTTP协议进行健康检查。
- health_check_url = /status //用于健康检查的URL路径,frpc将发送GET请求到本地的HTTP服务进行检查。
- health_check_interval_s = 10 //健康检查的间隔时间,单位为秒。
- health_check_max_failed = 3 //连续失败的最大次数,达到该次数后代理将被标记为不健康。
- health_check_timeout_s = 3 //健康检查的超时时间,单位为秒。
- #配置一个web02的服务
- [web02]
- type = https //指定服务类型为https。
- local_ip = 127.0.0.1 //指定本地服务的IP地址为127.0.0.1。
- local_port = 8000 //指定本地服务的端口号为8000。
- use_encryption = false //设置是否使用加密
- use_compression = false //设置是否使用压缩
- subdomain = web02 //指定子域名为web02。
- custom_domains = web02.yourdomain.com //指定自定义域名为web02.yourdomain.com。
- proxy_protocol_version = v2 /如果不为空,frpc将使用代理协议将连接信息传输到本地服务,这里设置为v2版本。
- #配置一个名为plugin_unix_domain_socket的插件
- [plugin_unix_domain_socket]
- type = tcp //指定插件类型为tcp。
- remote_port = 6003 //指定远程端口号为6003。
- plugin = unix_domain_socket //指定插件名称为unix_domain_socket。
- plugin_unix_path = /var/run/docker.sock //指定插件需要的参数,即Unix域套接字的路径为/var/run/docker.sock。
- #这些参数用于配置frp插件,该插件可以处理来自frps的连接。在这个例子中,插件会使用Unix域套接字与Docker守护进程进行通信,实现与Docker容器的交互。
- [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
- [plugin_https2http]
- type = https
- custom_domains = test.yourdomain.com
- plugin = https2http
- plugin_local_addr = 127.0.0.1:80
- plugin_crt_path = ./server.crt
- plugin_key_path = ./server.key
- plugin_host_header_rewrite = 127.0.0.1
- plugin_header_X-From-Where = frp //请求头中会添加一个名为X-From-Where的参数,并将其值设置为frp。后端服务可以通过读取该请求头参数来判断请求是否来自frp。
- [plugin_https2https]
- type = https
- custom_domains = test.yourdomain.com
- plugin = https2https
- plugin_local_addr = 127.0.0.1:443
- plugin_crt_path = ./server.crt
- plugin_key_path = ./server.key
- plugin_host_header_rewrite = 127.0.0.1
- plugin_header_X-From-Where = frp
- #配置一个名为secret_tcp的服务
- [secret_tcp]
- type = stcp /指定服务类型为stcp,即Secret TCP。
- sk = abcdefg //指定用于访问者身份验证的共享密钥(Secret Key)为abcdefg。
- local_ip = 127.0.0.1 //指定本地服务的IP地址为127.0.0.1。
- local_port = 22 //指定本地服务的端口号为22。
- use_encryption = false //设置是否使用加密
- use_compression = false //设置是否使用压缩
- allow_users = * //如果不为空,只有来自指定用户的访问者可以连接,这里设置为*,表示允许所有用户连接。
- #这些参数用于配置frp的Secret TCP功能,允许通过访问者身份验证来访问本地服务。访问者需要使用与配置文件中指定的共享密钥相匹配的密钥进行身份验证。允许所有用户连接的配置意味着任何用户都可以连接到该服务。
- #配置一个名为secret_tcp_visitor的访问者角色
- [secret_tcp_visitor]
- role = visitor //指定角色为访问者
- type = stcp //指定服务类型为stcp,即Secret TCP。
- server_name = secret_tcp //指定要访问的服务器名称为secret_tcp。
- sk = abcdefg //指定用于身份验证的共享密钥(Secret Key)为abcdefg。
- bind_addr = 127.0.0.1 //指定访问者stcp服务器绑定的IP地址为127.0.0.1。
- bind_port = 9000 //指定访问者stcp服务器绑定的端口号为9000。如果bind_port小于0,则表示不绑定到端口,只接收从其他访问者重定向的连接。
- use_encryption = false
- use_compression = false
- #这些参数用于配置frp的访问者角色,访问者可以连接到指定的服务器进行通信。访问者需要使用与服务器配置文件中指定的共享密钥相匹配的密钥进行身份验证。访问者stcp服务器将绑定到指定的IP地址和端口上,以接收来自服务器的连接。
- #配置一个名为p2p_tcp的服务。
- [p2p_tcp]
- type = xtcp //指定服务类型为xtcp,即P2P TCP。
- sk = abcdefg //指定用于访问者身份验证的共享密钥(Secret Key)为abcdefg。
- local_ip = 127.0.0.1 //指定本地服务的IP地址为127.0.0.1。
- local_port = 22 //指定本地服务的端口号为22。
- use_encryption = false
- use_compression = false
- allow_users = user1, user2 /如果不为空,只有来自指定用户的访问者可以连接,这里设置为user1和user2,表示只允许这两个用户连接。
- #这些参数用于配置frp的P2P TCP功能,允许通过访问者身份验证来访问本地服务。访问者需要使用与配置文件中指定的共享密钥相匹配的密钥进行身份验证。只有指定的用户才能连接到该服务。
- #配置一个名为p2p_tcp_visitor的访问者角色
- [p2p_tcp_visitor]
- role = visitor
- type = xtcp
- server_user = user1 //指定服务器使用的用户为user1。
- server_name = p2p_tcp //指定要访问的服务器名称为p2p_tcp。
- sk = abcdefg
- bind_addr = 127.0.0.1
- bind_port = 9001 //指定访问者xtcp服务器绑定的端口号为9001。如果bind_port小于0,则表示不绑定到端口,只接收从其他访问者重定向的连接。
- use_encryption = false
- use_compression = false
- keep_tunnel_open = false //当需要自动隧道持久性时,将其设置为true。
- max_retries_an_hour = 8 //当keep_tunnel_open设置为true时,每小时尝试穿透的次数为8次。
- min_retry_interval = 90 //当keep_tunnel_open设置为true时,每次重试的最小间隔为90秒。
- # fallback_to = stcp_visitor //可选参数,用于指定在无法建立P2P连接时的备用连接方式。设置为stcp_visitor,表示如果无法建立P2P连接,将回退到使用stcp_visitor的方式进行连接。
- # fallback_timeout_ms = 500 //可选参数,用于指定回退连接的超时时间,单位为毫秒。设置为500毫秒,表示如果无法建立P2P连接,则在500毫秒后尝试回退连接。
- #这些参数用于配置frp的访问者角色,访问者可以连接到指定的服务器进行通信。访问者需要使用与服务器配置文件中指定的共享密钥相匹配的密钥进行身份验证。访问者xtcp服务器将绑定到指定的IP地址和端口上,以接收来自服务器或其他访问者的连接。可选的参数可以用于配置自动隧道持久性和穿透尝试的设置。
- #配置一个名为tcpmuxhttpconnect的服务
- [tcpmuxhttpconnect]
- type = tcpmux //指定服务类型为tcpmux,即TCP多路复用。
- multiplexer = httpconnect //指定使用的多路复用器为httpconnect。
- local_ip = 127.0.0.1 //指定本地服务的IP地址为127.0.0.1。
- local_port = 10701 //指定本地服务的端口号为10701。
- custom_domains = tunnel1 //指定自定义域名为tunnel1。
- # route_by_http_user = user1 //只有来自名为user1的HTTP用户的请求才会被路由到该服务。这可以用于实现基于用户的请求转发或负载均衡。请注意,要使此功能生效,需要在frp的HTTP代理中配置相应的用户规则。
- #这些参数用于配置frp的TCP多路复用功能,通过使用httpconnect多路复用器来实现。TCP多路复用可以将多个TCP连接复用到同一个端口上,提高网络资源利用率。在这个例子中,配置了一个本地服务,将通过TCP多路复用的方式提供服务,并使用自定义域名tunnel1进行访问。
一个简单的客户端frpc配置示例
- [common]
- #服务端IP
- server_addr = 123.345.12.12
- #通信端口
- server_port = 5443
- #通信令牌
- token = 123456
- #设置frps预先建立的连接池数量。增加连接池的数量可以提高并发连接的处理能力,但也会占用更多的系统资源。
- pool_count = 5
- #下面是构建客户端面板:http://127.0.0.1:7400
- admin_addr = 127.0.0.1
- admin_port = 7400
- admin_user = admin
- admin_pwd = admin
- [web01]
- type = http
- local_ip = 127.0.0.1
- local_port = 80
- custom_domains = test.test.com
- use_encryption = true //将 frpc 与 frps 之间的通信内容加密传输,将会有效防止传输内容被截取。
- use_compression = true //对传输内容进行压缩,可以有效减小 frpc 与 frps 之间的网络流量,加快流量转发速度,但是会额外消耗一些 CPU 资源。
一个简单的frps配置示例
- [common]
- #frps绑定的IP地址,0.0.0.0表示绑定所有可用的IP地址。
- bind_addr = 0.0.0.0
- #frps绑定的端口号,用于接收来自frpc的请求(需要一致)。
- bind_port = 5443
- #用于KCP协议的UDP端口,如果不设置,则KCP将被禁用。
- kcp_bind_port = 5443
- #dashboard的端口号,用于通过dashboard配置或重新加载frps。
- dashboard_port = 6443
- # dashboard的用户名和密码。
- dashboard_user = admin
- dashboard_pwd = 123456
- #指定frps的dashboard所使用的静态文件目录。
- # assets_dir = ./static
- #主机的HTTP和HTTPS端口号
- vhost_http_port = 80
- vhost_https_port = 443
- # 日志文件的路径。
- log_file = ./frps.log
- # 日志级别,可选的值有debug、info、warn和error。以及最大保存天数
- log_level = info
- log_max_days = 3
- # 用于身份验证的令牌(需要一致)。
- token = 123456
- # 当多人共享一个frps服务器时,可以使用子域名配置来区分不同的HTTP和HTTPS类型。
- subdomain_host = 123.345.12.12
- # frps将允许frpc绑定的端口范围为从1到65535之间的所有端口。这意味着frpc可以绑定任何可用的端口进行通信。
- #allow_ports = 1-65535
- # 每个代理可以创建的连接池上限,用于避免资源占用过多。
- max_pool_count = 2
- # 是否使用TCP流复用,默认为true。
- tcp_mux = true