内网穿透工具 Frp 配置文件示例(中文翻译版)

内网穿透工具 Frp 配置文件示例(中文翻译版)

若有错误,恳请指正
cicii翻译于2024年5月19日
GitHub - fatedier/frp

服务端配置文件 frps.toml

# frps.toml
# 此配置文件仅供参考。请不要直接使用此配置来运行程序,因为它可能存在各种问题。

# 必须包含IPv6的文本地址或主机名在方括号中,例如 [::1]:80 、 [IPv6-host]:http 或 [IPv6-host%zone]:80 。对于单个 bindAddr 字段,不需要方括号,例如 bindAddr = "::" 。
bindAddr = "0.0.0.0"
bindPort = 7000

# 用于KCP协议的UDP端口,它可以与 bindPort 相同。如果未设置,则在frp中禁用KCP协议。
kcpBindPort = 7000

# 用于QUIC协议的UDP端口。如果未设置,则QUIC将在frp中禁用。
# quicBindPort = 7002

# 指定代理将监听的地址,默认值与 bindAddr 相同。
# proxyBindAddr = "127.0.0.1"

# QUIC协议选项
# transport.quic.keepalivePeriod = 10
# transport.quic.maxIdleTimeout = 30
# transport.quic.maxIncomingStreams = 100000

# 心跳配置,不建议修改默认值, heartbeatTimeout 的默认值为90,设置负值以禁用它。
# transport.heartbeatTimeout = 90

# 每个代理中的池计数将保留不超过 maxPoolCount 。
transport.maxPoolCount = 5

# 如果使用TCP多路复用技术,则默认值为 true 。
# transport.tcpMux = true

# 指定TCP多路复用的保活间隔,仅当 tcpMux 为 true 时才有效。
# transport.tcpMuxKeepaliveInterval = 60

# tcpKeepalive 指定frpc和frps之间活动网络连接的保活探测器之间的间隔。如果为负数,则禁用保活探测器。
# transport.tcpKeepalive = 7200

# transport.tls.force 指定是否仅接受TLS加密的连接。默认情况下,该值为 false 。
transport.tls.force = false

# transport.tls.certFile = "server.crt"
# transport.tls.keyFile = "server.key"
# transport.tls.trustedCaFile = "ca.crt"

# 如果要支持虚拟主机,则必须设置用于监听的HTTP端口(可选)。注意:HTTP端口和HTTPS端口可以和 bindPort 一样。
vhostHTTPPort = 80
vhostHTTPSPort = 443

# vhostHTTP服务器的响应标头超时(秒),默认为60秒。
# vhostHTTPTimeout = 60

# tcpmuxHTTPConnectPort 指定服务器监听HTTP连接请求的TCP端口。
# 如果该值为0,则服务器不会在一个端口上TCP多路复用请求。
# 如果该值不为0,它将监听HTTP连接请求的TCP端口。默认情况下,此值为0。
# tcpmuxHTTPConnectPort = 1337

# 如果 tcpmuxPassthrough 为 true ,则frps不会对流量进行任何更新。
# tcpmuxPassthrough = false

# 配置Web服务器以启用frps仪表板。仪表板仅当设置了 webServer.port 时才可用。
webServer.addr = "127.0.0.1"
webServer.port = 7500
webServer.user = "admin"
webServer.password = "admin"

# webServer.tls.certFile = "server.crt"
# webServer.tls.keyFile = "server.key"

# 仪表板资产目录(仅适用于调试模式)
# webServer.assetsDir = "./static"

# 在仪表板监听器中启用golang pprof处理程序。必须先设置仪表板端口。
webServer.pprofEnable = false

# enablePrometheus 将在 /metrics api 中导出 webServer 上的 prometheus 指标。
enablePrometheus = true

# 控制台或实际日志文件路径,如 ./frps.log 。
log.to = "./frps.log"

# 跟踪、调试、信息、警告、错误
# trace, debug, info, warn, error
log.level = "info"
log.maxDays = 3

# log.to 为控制台时是否禁用日志颜色,默认为 false 。
log.disablePrintColor = false

# DetailedErrorsToClient 定义是否将特定错误(带有调试信息)发送到frpc。默认情况下,此值为 true 。
detailedErrorsToClient = true

# auth.method 指定使用哪种认证方式对frpc与frps之间进行认证。
# 如果指定了 token ,令牌将被读入登录消息中。
# 如果指定了 oidc ,将使用OIDC设置颁发OIDC令牌。默认情况下,此值为 token 。
auth.method = "token"

# auth.additionalScopes 指定包含其他范围的身份验证信息,可选值为 HeartBeats 、 NewWorkConns 。
# auth.additionalScopes = ["HeartBeats", "NewWorkConns"]

# 身份验证令牌
auth.token = "12345678"

# OIDC颁发者指定用于验证OIDC令牌的颁发者。
auth.oidc.issuer = ""
# oidc audience 指定验证时OIDC令牌应包含的受众。
auth.oidc.audience = ""
# oidc skipExpiryCheck 指定是否跳过检查OIDC令牌是否过期。
auth.oidc.skipExpiryCheck = false
# oidc skipIssuerCheck 指定是否跳过检查OIDC令牌的颁发者声明是否与 OidcIssuer 中指定的颁发者匹配。
auth.oidc.skipIssuerCheck = false

# userConnTimeout 指定等待工作连接的最长时间。
# userConnTimeout = 10

# 只允许frpc绑定你列出的端口。默认情况下,不会有任何限制。
allowPorts = [
  { start = 2000, end = 3000 },
  { single = 3001 },
  { single = 3003 },
  { start = 4000, end = 50000 }
]

# 每个客户端可以使用的最大端口数,默认值为0表示没有限制。
maxPortsPerClient = 0

# 如果 subDomainHost 不为空,则可以在frpc的配置文件中设置 type 为 http 或 https 时的 subdomain 。
# 当子域为 test 时,路由使用的主机为 test.frps.com 。
subDomainHost = "frps.com"

# HTTP请求的自定义404页面。
# custom404Page = "/path/to/404.html"

# 指定UDP数据包大小,单位为字节。如果未设置,则默认值为1500。客户端和服务器之间的参数应该相同。它会影响UDP和SUDP代理。
udpPacketSize = 1500

# NAT打孔分析数据的保留时间。
natholeAnalysisDataReserveHours = 168

# SSH隧道网关
# 如果要启用此功能,则 bindPort 参数是必需的,而其他参数是可选的。
# 默认情况下,此功能处于禁用状态。如果 bindPort 大于0,则启用它。
# sshTunnelGateway.bindPort = 2200
# sshTunnelGateway.privateKeyFile = "/home/frp-user/.ssh/id_rsa"
# sshTunnelGateway.autoGenPrivateKeyPath = ""
# sshTunnelGateway.authorizedKeysFile = "/home/frp-user/.ssh/authorized_keys"

[[httpPlugins]]
name = "user-manager"
addr = "127.0.0.1:9000"
path = "/handler"
ops = ["Login"]

[[httpPlugins]]
name = "port-manager"
addr = "127.0.0.1:9001"
path = "/handler"
ops = ["NewProxy"]

客户端配置文件 frpc.toml

# frpc.toml
# 此配置文件仅供参考。请不要直接使用此配置来运行程序,因为它可能存在各种问题。

# 您的代理名称将更改为 {user}.{proxy} 。
user = "your_name"

# 必须包含IPv6的文本地址或主机名在方括号中,例如 [::1]:80 、 [IPv6-host]:http 或 [IPv6-host%zone]:80 。对于单个 serverAddr 字段,不需要方括号,例如 serverAddr = "::" 。
serverAddr = "0.0.0.0"
serverPort = 7000

# STUN服务器帮助穿透NAT孔。
# natHoleStunServer = "stun.easyvoip.com:3478"

# 决定首次登录失败时是否退出程序,否则连续重新登录frps,默认值为 true 。
loginFailExit = true

# 控制台或实际日志文件路径,如 ./frpc.log 。
log.to = "./frpc.log"

# 跟踪、调试、信息、警告、错误
# trace, debug, info, warn, error
log.level = "info"
log.maxDays = 3

# log.to为控制台时是否禁用日志颜色,默认为 false 。
log.disablePrintColor = false

auth.method = "token"
# auth.additionalScopes 指定包含其他范围的身份验证信息,可选值为 HeartBeats 、 NewWorkConns 。
# auth.additionalScopes = ["HeartBeats", "NewWorkConns"]

# 身份验证令牌
auth.token = "12345678"

# oidc.clientID 指定用于获取OIDC认证令牌的客户端ID。
# auth.oidc.clientID = ""
# oidc.clientSecret 指定用于在OIDC身份验证中获取令牌的客户端密钥。
# auth.oidc.clientSecret = ""
# oidc.audience 指定OIDC身份验证中令牌的受众。
# auth.oidc.audience = ""
# 如果 AuthenticationMethod == "oidc" , oidc.scope 指定令牌在OIDC身份验证中的权限。默认情况下,此值为 "" 。
# auth.oidc.scope = ""
# oidc.tokenEndpointURL 指定实现OIDC Token Endpoint的URL。它将用于获取OIDC令牌。
# auth.oidc.tokenEndpointURL = ""

# oidc.additionalEndpointParams 指定要发送到OIDC Token Endpoint的其他参数。
# 例如,如果要指定 audience 参数,可以设置如下。
# frp会将 audience=<value> 、 var1=<value> 添加到附加参数中。
# auth.oidc.additionalEndpointParams.audience = "https://dev.auth.com/api/v2/"
# auth.oidc.additionalEndpointParams.var1 = "foobar"

# 通过http api设置控制frpc操作的管理员地址,例如重新加载。
webServer.addr = "127.0.0.1"
webServer.port = 7400
webServer.user = "admin"
webServer.password = "admin"
# 管理员资产目录。默认情况下,这些资产与frpc绑在一起。
# webServer.assetsDir = "./static"

# 在管理员监听器中启用golang pprof处理程序。
webServer.pprofEnable = false

# 拨号到服务器等待连接完成的最长时间。默认值为10秒。
# transport.dialServerTimeout = 10

# dialServerKeepalive 指定frpc和frps之间活动网络连接的保活探测器之间的间隔。如果为负数,则禁用保活探测器。
# transport.dialServerKeepalive = 7200

# 连接会提前建立,默认值为0。
transport.poolCount = 5

# 如果使用TCP多路复用技术,则默认值为 true ,它必须与frps相同
# transport.tcpMux = true

# 指定TCP多路复用的保活间隔,仅当 tcpMux 为 true 时才有效。
# transport.tcpMuxKeepaliveInterval = 60

# 用于连接服务器的通信协议。
# 现在支持TCP、KCP、QUIC、WEBSOCKET和WSS,默认为TCP。
transport.protocol = "tcp"

# 连接服务器时设置客户端绑定IP,默认为空。
# 仅当 protocol = tcp 或 protocol = websocket 时,才会使用该值。
transport.connectServerLocalIP = "0.0.0.0"

# 如果要通过HTTP代理或SOCKS5代理或NTLM代理连接frps, 您可以在此处或在全局环境变量中设置 proxyURL 。它仅在 protocol 为TCP时才有效。
# transport.proxyURL = "http://user:passwd@192.168.1.128:8080"
# transport.proxyURL = "socks5://user:passwd@192.168.1.128:1080"
# transport.proxyURL = "ntlm://user:passwd@192.168.1.128:2080"

# QUIC协议选项
# transport.quic.keepalivePeriod = 10
# transport.quic.maxIdleTimeout = 30
# transport.quic.maxIncomingStreams = 100000

# 如果 tls.enable 为 true ,则frpc将通过TLS连接frps。
# 从v0.50.0开始,默认值已更改为 true ,并且默认启用TLS。
transport.tls.enable = true

# transport.tls.certFile = "client.crt"
# transport.tls.keyFile = "client.key"
# transport.tls.trustedCaFile = "ca.crt"
# transport.tls.serverName = "example.com"

# 如果 disableCustomTLSFirstByte 设置为 false , 当启用TLS时,frpc将使用第一个自定义字节与frps建立连接。
# 从v0.50.0开始,默认值已更改为 true ,并且默认禁用第一个自定义字节。
# transport.tls.disableCustomTLSFirstByte = true

# 心跳配置,不建议修改默认值。
# heartbeatInterval 默认值为10, heartbeatTimeout 默认值为90。设置负值以禁用它。
# transport.heartbeatInterval = 30
# transport.heartbeatTimeout = 90

# 指定DNS服务器,frpc将使用它而不是使用默认的。
# dnsServer = "8.8.8.8"

# 你想要启动的代理名称。默认值为空,表示所有代理。
# start = ["ssh", "dns"]

# 指定UDP数据包大小,单位为字节。如果未设置,则默认值为1500。此参数在客户端和服务器之间应相同。它会影响UDP和SUDP代理。
udpPacketSize = 1500

# 客户端的其他 metadatas 。
metadatas.var1 = "abc"
metadatas.var2 = "123"

# 包含其他的代理配置文件。
# includes = ["./confd/*.ini"]

[[proxies]]
# ssh 是唯一的代理名称。如果全局 user 不为空,它将更改为 {user}.{proxy} 如 your_name.ssh 。
name = "ssh"
type = "tcp"
localIP = "127.0.0.1"
localPort = 22
# 限制此代理的带宽,单位为KB和MB。
transport.bandwidthLimit = "1MB"
# 限制带宽的位置,可以是 client 或 server ,默认为 client 。
transport.bandwidthLimitMode = "client"
# 如果为 true ,则此代理的流量将被加密,默认为 false 。
transport.useEncryption = false
# 如果为 true ,则流量将被压缩。
transport.useCompression = false
# 远程frps上的监听端口
remotePort = 6001
# frps将对同一组中的代理的连接进行负载均衡。
loadBalancer.group = "test_group"
# 组应具有相同的组密钥
loadBalancer.groupKey = "123456"
# 后端服务开启健康检查,现在支持 tcp 和 http 。
# frpc将连接本地服务端口以检测其运行状态。
healthCheck.type = "tcp"
# 健康检查连接超时
healthCheck.timeoutSeconds = 3
# 如果连续失败3次,代理将从frps中移除。
healthCheck.maxFailed = 3
# 每10秒做一次健康检查。
healthCheck.intervalSeconds = 10
# 每个代理的其他 metadatas 。它将被传递给服务器端插件以供使用。
metadatas.var1 = "abc"
metadatas.var2 = "123"
# 你可以通过注解给代理添加一些额外的信息。这些注解会显示在frps仪表盘上。
[proxies.annotations]
key1 = "value1"
"prefix/key2" = "value2"

[[proxies]]
name = "ssh_random"
type = "tcp"
localIP = "192.168.31.100"
localPort = 22
# 如果 remotePort 为0,frps会随机为你分配一个端口。
remotePort = 0

[[proxies]]
name = "dns"
type = "udp"
localIP = "114.114.114.114"
localPort = 53
remotePort = 6002

# 将您的域名解析为 serverAddr 。因此,您可以使用 http://web01.yourdomain.com 浏览Web01和 http://web02.yourdomain.com 浏览Web02。
[[proxies]]
name = "web01"
type = "http"
localIP = "127.0.0.1"
localPort = 80
# httpUser 和 httpPassword 是HTTP协议的安全认证。
# 如果没有设置,你可以在没有证书的情况下访问这个 customDomains 。
httpPassword = "admin"
# 如果给frps设置的域名为frps.com,那么你可以通过URL访问 [web01]代理(http://web01.frps.com)。
subdomain = "web01"
customDomains = ["web01.yourdomain.com"]
# locations 仅适用于HTTP类型。
locations = ["/", "/pic"]
# 如果HTTP基本认证的用户名是abc,则将请求路由到这个服务。
# routeByHTTPUser = abc
hostHeaderRewrite = "example.com"
requestHeaders.set.x-from-where = "frp"
responseHeaders.set.foo = "bar"
healthCheck.type = "http"
#frpc将会向本地的HTTP服务发送一个GET请求,请求的路径是 /status 。
# 当HTTP服务返回 2xx HTTP响应状态码时,它处于活动状态。
healthCheck.path = "/status"
healthCheck.intervalSeconds = 10
healthCheck.maxFailed = 3
healthCheck.timeoutSeconds = 3
# 设置健康检查头
healthCheck.httpHeaders=[
    { name = "x-from-where", value = "frp" }
]

[[proxies]]
name = "web02"
type = "https"
localIP = "127.0.0.1"
localPort = 8000
subdomain = "web02"
customDomains = ["web02.yourdomain.com"]
# 如果不是空的,frpc将使用代理协议将连接信息传输到你的本地服务。
# v1 或 v2 或 "" (空)
transport.proxyProtocolVersion = "v2"

[[proxies]]
name = "tcpmuxhttpconnect"
type = "tcpmux"
multiplexer = "httpconnect"
localIP = "127.0.0.1"
localPort = 10701
customDomains = ["tunnel1"]
# routeByHTTPUser = "user1"

[[proxies]]
name = "plugin_unix_domain_socket"
type = "tcp"
remotePort = 6003
# 如果定义了插件,则 localIP 和 localPort 是无效的。插件将处理从frps获取的连接。
[proxies.plugin]
type = "unix_domain_socket"
unixPath = "/var/run/docker.sock"

[[proxies]]
name = "plugin_http_proxy"
type = "tcp"
remotePort = 6004
[proxies.plugin]
type = "http_proxy"
httpUser = "abc"
httpPassword = "abc"

[[proxies]]
name = "plugin_socks5"
type = "tcp"
remotePort = 6005
[proxies.plugin]
type = "socks5"
username = "abc"
password = "abc"

[[proxies]]
name = "plugin_static_file"
type = "tcp"
remotePort = 6006
[proxies.plugin]
type = "static_file"
localPath = "/var/www/blog"
stripPrefix = "static"
httpUser = "abc"
httpPassword = "abc"

[[proxies]]
name = "plugin_https2http"
type = "https"
customDomains = ["test.yourdomain.com"]
[proxies.plugin]
type = "https2http"
localAddr = "127.0.0.1:80"
crtPath = "./server.crt"
keyPath = "./server.key"
hostHeaderRewrite = "127.0.0.1"
requestHeaders.set.x-from-where = "frp"

[[proxies]]
name = "plugin_https2https"
type = "https"
customDomains = ["test.yourdomain.com"]
[proxies.plugin]
type = "https2https"
localAddr = "127.0.0.1:443"
crtPath = "./server.crt"
keyPath = "./server.key"
hostHeaderRewrite = "127.0.0.1"
requestHeaders.set.x-from-where = "frp"

[[proxies]]
name = "plugin_http2https"
type = "http"
customDomains = ["test.yourdomain.com"]
[proxies.plugin]
type = "http2https"
localAddr = "127.0.0.1:443"
hostHeaderRewrite = "127.0.0.1"
requestHeaders.set.x-from-where = "frp"

[[proxies]]
name = "secret_tcp"
# 如果类型为 secret tcp ,则 remotePort 无效。
# 想要连接本地端口的人应该使用STCP代理部署另一个frpc,角色是 visitors 。
type = "stcp"
# secretKey 用于访客身份验证。
secretKey = "abcdefg"
localIP = "127.0.0.1"
localPort = 22
# 如果不为空,则只有指定用户的访客才能连接。
# 否则,来自同一 user 的 visitors 可以连接。 "*" 表示允许所有用户。
allowUsers = ["*"]

[[proxies]]
name = "p2p_tcp"
type = "xtcp"
secretKey = "abcdefg"
localIP = "127.0.0.1"
localPort = 22
# 如果不为空,则只有指定用户的访客才能连接。
# 否则,来自同一 user 的 visitors 才可以连接。 "*" 表示允许所有用户。
allowUsers = ["user1", "user2"]

# frpc role visitor -> frps -> frpc role server
[[visitors]]
name = "secret_tcp_visitor"
type = "stcp"
# the server name you want to visitor
serverName = "secret_tcp"
secretKey = "abcdefg"
# 将此地址连接到访客STCP服务器。
bindAddr = "127.0.0.1"
# bindPort 可以小于0,这意味着不要绑定到端口,而只接收从其他访问者重定向的连接。(SUDP现在不支持此功能)
bindPort = 9000

[[visitors]]
name = "p2p_tcp_visitor"
type = "xtcp"
# 如果未设置 serverUser ,则默认为当前用户。
serverUser = "user1"
serverName = "p2p_tcp"
secretKey = "abcdefg"
bindAddr = "127.0.0.1"
# bindPort 可以小于0,这意味着不要绑定到端口,而只接收从其他访问者重定向的连接。(SUDP现在不支持此功能)
bindPort = 9001
# 当需要自动隧道持久化时,设置为 true 。
keepTunnelOpen = false
# 当 keepTunnelOpen 设置为 true 时有效,每小时尝试穿孔的次数。
maxRetriesAnHour = 8
minRetryInterval = 90
# fallbackTo = "stcp_visitor"
# fallbackTimeoutMs = 500
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

cicii1022

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值