Frp的简单理解与执行的前提条件
有设备A,想访问处于局域网的设备C时,可以通过处在公网的设备B进行转发
前提条件:一个有公网IP的电脑,云服务器、有公网IPV4/6的设备均可,如果使用ipv6模式,那么设备BC都必须支持ipv6才行,ipv6地址除了bind_addr和server_addr,都要用[]括起来
本文基于:v0.48.0版本
官网: 官网地址
Girhub:Github地址,windows下载amd64版本就行,386是x86
服务器端(有公网IP的电脑)最简易配置
frps.ini(//注释请删掉)
[common]bind_addr = 0.0.0.0//监听地址,默认0.0.0.0就行bind_port = 7000//frps与frpc交互用的端口,记得打开防火墙
新建一个Start.bat,内容:fprs -c frps.ini
双击就可以启动
客户端(内网电脑)最简易配置
frpc.ini(//注释请删掉)
[common]server_addr = 114.514.191.981//服务器的公网ip,网址也行server_port = 7000//frps与frpc交互用的端口,记得打开防火墙[test]//随便起个隧道名字,支持中文local_ip = 127.0.0.1//被访问的IPlocal_port = 3389//被访问的端口,3389就是远程桌面端口remote_port = 7100//监听端口,当frps的这个端口收到请求后,会转发到上面的127.0.0.1:3389里//frpc告诉服务端的frps,你收到7100端口的东西发到我127.0.0.1的3389端口里//端口批量映射需要隧道名以range:开头,用1000-1010格式,,分隔//可同时转发多个,配置同上[test2]......
新建一个Start.bat,内容:fprc -c frpc.ini
双击就可以启动
自此,配置完成,其中的端口记得在防火墙入站规则里打开,或者给exe加上防火墙入站规则也行
进阶配置(多了些常用参数)
frps.ini
[common]bind_addr = 0.0.0.0//监听地址,默认0.0.0.0就行bind_port = 7000//frps与frpc交互用的端口,记得打开防火墙token = 12345678//设置tokenlog_file = ./frps.log//日志路径log_level = info//日志级别:trace(追踪), debug(调试), info(信息), warn(警告), error(错误)log_max_days = 3//日志保存天数max_pool_count = 5//连接池数量,如果有很多链接最好弄高点,默认5//后台仪表盘,登录后可查看frp状态dashboard_addr = 0.0.0.0//监听IPdashboard_port = 7500//监听端口dashboard_user = admin//登录账号dashboard_pwd = admin//登录密码//HTTP协议vhost_http_port = 80//监听http协议的端口,可以与bind_port相同vhost_https_port = 443//监听https协议的端口,可以与bind_port相同vhost_http_timeout = 60//http协议超时时间(秒)
frpc.ini
[common]server_addr = 114.514.191.981//服务器的公网ip,网址也行server_port = 7000//frps与frpc交互用的端口,记得打开防火墙token = 12345678//设置token,对应frpslog_file = ./frps.log//日志路径log_level = info//日志级别:trace(追踪), debug(调试), info(信息), warn(警告), error(错误)log_max_days = 3//日志保存天数[test]type = tcp//连接类型,tcp | udp | http | https | stcp | xtcp//默认TCPlocal_ip = 127.0.0.1//被访问的IPlocal_port = 3389//被访问的端口remote_port = 7100//监听的服务器端的端口use_encryption = true//是否加密信息use_compression = true//是否压缩信息bandwidth_limit = 1MB//限制该隧道的带宽,单位为KB或MBbandwidth_limit_mode = client//限制带宽的位置,client或server,默认client(服务端)
相对完整配置(基本用不上)
frps.ini
[common]bind_addr = 0.0.0.0//[必填]服务器IP,0.0.0.0表示监听所有,支持ipv6bind_port = 7000//[必填]frps与frpc交互的端口(与你转发的端口无关)bind_udp_port = 7001//UDP协议监听端口kcp_bind_port = 7000//KPC协议的UDP监听端口//QUIC协议的UDP设置quic_bind_port = 7002//监听的端口,想使用必填quic_keepalive_period = 10//有效期quic_max_idle_timeout = 30//最大超时时间quic_max_incoming_streams = 100000//最大传输流?//网络代理proxy_bind_addr = 127.0.0.1//代理的监听地址//HTTP协议vhost_http_port = 80//监听http协议的端口,可以与bind_port相同vhost_https_port = 443//监听https协议的端口,可以与bind_port相同vhost_http_timeout = 60//http协议超时时间(秒)//?tcpmux_httpconnect_port = 1337//监听TPC Http请求,默认0,如果是0,将不会监听tcpmux_passthrough = false//如果是true,不会对流量进行更新//后台仪表盘,查看frp状态dashboard_addr = 0.0.0.0//监听IPdashboard_port = 7500//监听端口dashboard_user = admin//登录账号dashboard_pwd = admin//登录密码dashboard_tls_mode = false//是都开启仪表盘的tls模式(Https)dashboard_tls_cert_file = server.crt//Https需要的crtdashboard_tls_key_file = server.key//Https需要的keypprof_enable = false//在仪表盘中是否启用golang-proff处理程序//内部监控,使用Dashboard(后台仪表盘)的地址enable_prometheus = true//可通过 http://后台仪表盘的IP和端口/metrics 进行访问assets_dir = ./static//后台仪表盘资源目录(仅限debug模式)//日志log_file = ./frps.log//日志路径log_level = info//日志级别:trace(追踪), debug(调试), info(信息), warn(警告), error(错误)log_max_days = 3//日志保存天数disable_log_color = false//当log_file为控制台时禁用日志颜色,默认值为falsedetailed_errors_to_client = true//是否向frpc端发送错误消息//验证authentication_method = token//用何种方式进行验证,token和oidc(开放ID连接)authenticate_heartbeats = false//是否要在发送给frps端的心跳包中包含身份验证令牌authenticate_new_work_conns = false//是否要在发送给frps的新连接中包含身份令牌token = 12345678//设置tokenoidc_issuer =//oidc令牌,默认空oidc_audience =//oidc受众,默认空oidc_skip_expiry_check = false//如果是false,则会检查令牌是否过期oidc_skip_issuer_check = false//如果是false,则会检查颁发者是否与oidc_issuer中指定的颁发者匹配//其他heartbeat_timeout = 90//心跳值,负数禁用,不建议改动user_conn_timeout = 10//用户连接超时时间,不建议改动allow_ports = 2000-3000,3001,3003,4000-50000//只允许frpc绑定这里列出来的端口,不设置则无限制max_pool_count = 5//连接池数量,如果有很多链接最好弄高点,默认5max_ports_per_client = 0//每个客户端可使用的最大端口,0则无限制tls_only = false//是否只允许tls(Https)tls_cert_file = server.crt//tls的crttls_key_file = server.key//tls的keytls_trusted_ca_file = ca.crt//信任crt路径subdomain_host = frps.com//自定义二级域名,设置后,frpc端只要设置subdomain就行,例如frpc的subdomain = test,将自动补全为test.frps.comtcp_mux = true//是都开启TPC复用,开启后不需要一个用户一个连接,降低延迟节省开销tcp_mux_keepalive_interval = 60//TPC复用的保活时间tcp_keepalive = 7200//客户端与服务端的保活探测间隔custom_404_page = /path/to/404.html//自定义404页面路径udp_packet_size = 1500//指定UDP数据包大小,客户端服务端要一样
frpc.ini
配置服务器参数[common]server_addr = 0.0.0.0//[必填]服务器公网IPserver_port = 7000//[必填]frps与frpc交互的端口(与你转发的端口无关)dial_server_timeout = 10//连接超时时间dial_server_keepalive = 7200//客户端与服务端的保活探测间隔//使用代理去链接frps,这里支持3种链接,仅限TPC模式http_proxy = http://user:passwd@192.168.1.128:8080http_proxy = socks5://user:passwd@192.168.1.128:1080http_proxy = ntlm://user:passwd@192.168.1.128:2080//日志log_file = ./frps.log//日志路径log_level = info//日志级别:trace(追踪), debug(调试), info(信息), warn(警告), error(错误)log_max_days = 3//日志保存天数disable_log_color = false//当log_file为控制台时禁用日志颜色,默认值为false//验证token = 12345678//frps上对应的tokenauthentication_method = token//用何种方式进行验证,token和oidc(开放ID连接)authenticate_heartbeats = false//是否要在发送给frps端的心跳包中包含身份验证令牌authenticate_new_work_conns = false//是否要在发送给frps的新连接中包含身份令牌//oidc相关配置oidc_client_id =oidc_client_secret =oidc_audience =oidc_scope =oidc_token_endpoint_url =oidc_additional_audience = https://dev.auth.com/api/v2/oidc_additional_var1 = foobar//通过http操作frpc时的配置admin_addr = 127.0.0.1//IPadmin_port = 7400//端口admin_user = admin//用户名admin_pwd = admin//密码assets_dir = ./static//资源目录pprof_enable = false//在仪表盘中是否启用golang-proff处理程序//QUIC协议的UDP设置quic_keepalive_period = 10//有效期quic_max_idle_timeout = 30//最大超时时间quic_max_incoming_streams = 100000//最大传输流?//其他tls_enable = true//如果为true,frpc将用tls(Https)的方式连接frpstls_cert_file = server.crt//tls的crttls_key_file = server.key//tls的keytls_trusted_ca_file = ca.crt//信任crt路径tls_server_name = example.com//tls服务器名disable_custom_tls_first_byte = false//若为true,并启用了tls,将用第一个自定义字节连接frpsdns_server = 8.8.8.8//设置frpc使用的DNS服务器start = ssh,dns//设置代理名称,用,分割,默认空表示所有代理pool_count = 5//提前建立链接,默认0tcp_mux = true//是否开始TPC复用,值要与frps相同tcp_mux_keepalive_interval = 60//TPC复用保活间隔user = your_name//修改代理名称,将改为{user}.{proxy}login_fail_exit = true//首次链接失败是否退出程序protocol = tcp//连接到frps的通信协议connect_server_local_ip = 0.0.0.0//protocol为TPC和websocket时设置的本地IPudp_packet_size = 1500//指定UDP数据包大小includes = ./confd/*.ini//包括代理的其他配置文件。//心跳设置,不建议修改heartbeat_interval = 30//间隔时间heartbeat_timeout = 90//超时时间//服务器端的其他元数据信息meta_var1 = 123meta_var2 = 234配置客户端参数[隧道名称]//隧道名称,[ssh]名字只能有一个type = tcp//连接类型,tcp | udp | http | https | stcp | xtcp//默认TCPlocal_ip = 127.0.0.1//转发的IPlocal_port = 22//转发的本机端口remote_port = 6001//监听的frps服务器的端口bandwidth_limit = 1MB//限制该隧道的带宽,单位为KB或MBbandwidth_limit_mode = client//限制带宽的位置,client或server,默认client(服务端)use_encryption = false//是否加密信息use_compression = false//是否压缩信息//建立组,frps会对相同组内连接进行负载均衡,组秘钥需要一致group = test_group//组命group_key = 123456//组秘钥//后端健康检查,检查连接健康度health_check_type = tcphealth_check_timeout_s = 3//检查连接超时health_check_max_failed = 3//失败次数,连接失败次数达到后,将从frps中删除该隧道health_check_interval_s = 10//检查间隔,秒subdomain = web01//子域名custom_domains = web01.yourdomain.com//主域名//其他元数据信息meta_var1 = 123meta_var2 = 234
来源地址:https://blog.csdn.net/qq_42690327/article/details/129467480