Skip to content

Commit

Permalink
update config format (#68)
Browse files Browse the repository at this point in the history
  • Loading branch information
fatedier committed Oct 18, 2023
1 parent 5d069dd commit 40313fc
Show file tree
Hide file tree
Showing 23 changed files with 450 additions and 542 deletions.
2 changes: 1 addition & 1 deletion content/zh-cn/docs/Features/_index.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,5 +2,5 @@
title: "功能特性"
weight: 5
description: >
了解 frp 所支持的一些功能特性
了解 frp 支持的各种功能特性
---
61 changes: 31 additions & 30 deletions content/zh-cn/docs/Features/common/authentication.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,44 +3,45 @@ title: "身份认证"
weight: 3
---

目前 frpc 和 frps 之间支持两种身份验证方式,`token``oidc`,默认为 `token`
目前 frpc 和 frps 之间支持两种身份验证方式,`token``oidc`,默认为 `token`这些认证方式允许您验证客户端与服务端之间的通信,并确保只有授权用户能够建立连接。

通过 `frpc.ini``frps.ini``[common]` 段落中配置 `authentication_method` 来指定要使用的身份验证方式。
## Token

只有通过身份验证的客户端(frpc)才能成功连接 frps。
Token 身份认证是一种简单的身份认证方式,只需要在 frp 的客户端 frpc 和服务端 frps 配置文件中配置相同的 token 即可

## Token
### 配置示例

```toml
# frps.toml
bindPort = 7000
auth.token = "abc"
```

基于 Token 的身份验证方式比较简单,需要在 frpc 和 frps 的 `[common]` 段落中配置上相同的 `token` 参数即可。
```toml
# frpc.toml
auth.token = "abc"
```

## OIDC
## OIDC (OpenID Connect) 身份认证

OIDC `OpenID Connect` 的简称,验证流程参考 [Client Credentials Grant](https://tools.ietf.org/html/rfc6749#section-4.4)
OIDC 身份认证是一种基于开放标准的身份认证方式,它通过使用 OIDC 提供者进行身份验证

启用这一验证方式,参考配置如下:
验证流程参考 [Client Credentials Grant](https://tools.ietf.org/html/rfc6749#section-4.4)

```ini
# frps.ini
[common]
authentication_method = oidc
oidc_issuer = https://example-oidc-issuer.com/
oidc_audience = https://oidc-audience.com/.default
```
### 配置示例

```ini
# frpc.ini
[common]
authentication_method = oidc
oidc_client_id = 98692467-37de-409a-9fac-bb2585826f18 # Replace with OIDC client ID
oidc_client_secret = oidc_secret
oidc_audience = https://oidc-audience.com/.default
oidc_token_endpoint_url = https://example-oidc-endpoint.com/oauth2/v2.0/token
```toml
# frps.toml
auth.method = "oidc"
auth.oidc.issuer = "https://example-oidc-issuer.com/"
auth.oidc.audience = "https://oidc-audience.com/.default"
```

## 参数说明

| 类型 | 描述 |
| :--- | :--- |
| authentication_method | 身份验证方式,token 或 oidc,默认为 token。 |
| authenticate_heartbeats | 在每一个心跳包中附加上身份认证信息,客户端服务端需要一致。 |
| authenticate_new_work_conns | 在每次创建工作连接时附加上身份认证信息,客户端服务端需要一致。 |
```toml
# frpc.toml
auth.method = "oidc"
auth.oidc.clientID = "98692467-37de-409a-9fac-bb2585826f18"
auth.oidc.clientSecret = "oidc_secret"
auth.oidc.audience = "https://oidc-audience.com/.default"
auth.oidc.tokenEndpointURL = "https://example-oidc-endpoint.com/oauth2/v2.0/token"
```
103 changes: 16 additions & 87 deletions content/zh-cn/docs/Features/common/client-plugin.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,98 +3,27 @@ title: "客户端插件"
weight: 11
---

默认情况下,frpc 只会转发请求到本地 TCP 或 UDP 端口,也就是通过 `local_ip``local_port` 指定的本地服务地址。
默认情况下,frpc 仅会将请求转发到本地 TCP 或 UDP 端口,即通过 `localIP``localPort` 指定的本地服务地址。

通过客户端插件的功能将一些简单的本地服务内置在 frpc 中,可以帮助用户在只启动 frpc 的情况下实现原本需要额外启动其他服务才能实现的功能
通过启用客户端插件功能,可以在仅启动 frpc 的情况下内置一些简单的本地服务,从而实现通常需要额外启动其他服务才能实现的功能

在每一个代理的配置中,通过 `plugin` 指定需要使用的插件,插件的配置参数都以 `plugin_` 开头。当启用客户端插件后,`local_ip` `local_port` 不再需要配置
在每个代理的配置中,你可以通过 `plugin` 来配置要使用的插件和相关参数。启用客户端插件后,无需再配置 `localIP` `localPort`

客户端插件可以被应用在任意类型的代理中,但是需要插件本身的协议能够支持。例如静态文件访问插件可以通过 TCP 或者 HTTP 的代理暴露出去
客户端插件可用于各种类型的代理,前提是插件本身支持的协议。例如,静态文件访问插件可以通过 TCP HTTP 代理进行暴露

使用 `http_proxy` 插件的示例:
以下是使用 `http_proxy` 插件的示例

```ini
# frpc.ini
[http_proxy]
type = tcp
remote_port = 6000
plugin = http_proxy
plugin_http_user = abc
plugin_http_passwd = abc
```toml
[[proxies]]
name = "http_proxy"
type = "tcp"
remotePort = 6000
[proxies.plugin]
type = "http_proxy"
httpUser = "abc"
httpPassword = "abc"
```

`plugin_http_user``plugin_http_passwd` 即为 `http_proxy` 插件可选的配置参数。
`httpUser``httpPassword` 即为 `http_proxy` 插件可选的配置参数。

## http_proxy

HTTP 代理插件,用于将内网机器作为 HTTP 代理暴露给其他服务,可以通过此代理访问到此内网机器能够访问到的其他服务。

| 参数 | 可选 | 描述 |
| :--- | :--- | :--- |
| plugin_http_user || HTTP 代理用户名 |
| plugin_http_passwd || HTTP 代理密码 |

## socks5

SOCKS5 代理。

| 参数 | 可选 | 描述 |
| :--- | :--- | :--- |
| plugin_user || 连接代理的用户名 |
| plugin_passwd || 连接代理的密码 |


## static_file

静态文件浏览服务,通过暴露一个简单的 HTTP 服务查看指定的目录下的文件。

| 参数 | 可选 | 描述 |
| :--- | :--- | :--- |
| plugin_local_path || 要对外暴露的文件目录 |
| plugin_strip_prefix || 用户请求的 URL 路径会被映射到本地文件,如果希望去除用户访问文件的前缀,需要配置此参数 |
| plugin_http_user || HTTP BasicAuth 用户名 |
| plugin_http_passwd || HTTP BasicAuth 密码 |

## unix_domain_socket

代理本地 Unix 域套接字的服务。

| 参数 | 可选 | 描述 |
| :--- | :--- | :--- |
| plugin_unix_path || 本地 Unix 域套接字地址 |


## http2https

将本地的 HTTPS 服务以 HTTP 的形式暴露出去。

| 参数 | 可选 | 描述 |
| :--- | :--- | :--- |
| plugin_local_addr || 本地服务地址 |
| plugin_host_header_rewrite || 如果配置,发送给本地服务的请求的 Host 字段会被修改 |
| plugin_header_{header name} || 发送给本地服务的请求会被加上指定的 header 字段 |


## https2http

将本地的 HTTP 服务以 HTTPS 的形式暴露出去。

| 参数 | 可选 | 描述 |
| :--- | :--- | :--- |
| plugin_local_addr || 本地服务地址 |
| plugin_crt_path || HTTPS 所需的证书文件,如果 crt 和 key 都为空,则使用自动生成的证书 |
| plugin_key_path || HTTPS 所需的密钥文件 |
| plugin_host_header_rewrite || 如果配置,发送给本地服务的请求的 Host 字段会被修改 |
| plugin_header_{header name} || 发送给本地服务的请求会被加上指定的 header 字段 |

## https2https

将本地的 HTTPS 服务以 HTTPS 的形式暴露出去。

| 参数 | 可选 | 描述 |
| :--- | :--- | :--- |
| plugin_local_addr || 本地服务地址 |
| plugin_crt_path || HTTPS 所需的证书文件,如果 crt 和 key 都为空,则使用自动生成的证书 |
| plugin_key_path || HTTPS 所需的密钥文件 |
| plugin_host_header_rewrite || 如果配置,发送给本地服务的请求的 Host 字段会被修改 |
| plugin_header_{header name} || 发送给本地服务的请求会被加上指定的 header 字段 |
其他插件和相关配置请参考 [Reference](../../../reference/) 中的内容。
44 changes: 19 additions & 25 deletions content/zh-cn/docs/Features/common/client.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,45 +3,39 @@ title: "客户端"
weight: 9
---

## 热加载配置文件
## 动态配置更新

当修改了 frpc 中的代理配置,可以通过 frpc reload 命令来动态加载配置文件,通常会在 10 秒内完成代理的更新
当你需要修改 frpc 的代理配置时,你可以使用 `frpc reload` 命令来实现动态加载配置文件,通常在数秒内完成代理的更新

启用此功能需要在 frpc 中启用 admin 端口,用于提供 API 服务。配置如下:
要启用此功能,需要在 frpc 中启用 webServer,以提供 API 服务。配置如下:

```ini
# frpc.ini
[common]
admin_addr = 127.0.0.1
admin_port = 7400
```toml
webServer.addr = "127.0.0.1"
webServer.port = 7400
```

之后执行重启命令
然后执行以下命令来重载配置

`frpc reload -c ./frpc.ini`
`frpc reload -c ./frpc.toml`

等待一段时间后客户端会根据新的配置文件创建、更新、删除代理。

需要注意的是,[common] 中的参数除了 start 外目前无法被修改。
等待一段时间后,客户端将根据新的配置文件创建、更新或删除代理。需要注意的是,非代理相关的公共部分的参数除了 start 外目前无法被修改。

## 命令行查看代理状态

frpc 支持通过 `frpc status -c ./frpc.ini` 命令查看代理的状态信息,此功能需要在 frpc 中配置 admin 端口
frpc 支持通过 `frpc status -c ./frpc.ini` 命令查看代理的状态信息,此功能需要在 frpc 中启用 webServer

## 通过代理连接 frps
## 使用代理连接 frps

在只能通过代理访问外网的环境内,frpc 支持通过 HTTP 或 SOCKS5 代理和 frps 建立连接。
在只能通过代理访问外部网络的环境中,frpc 支持通过 HTTP 或 SOCKS5 代理与 frps 建立连接。

可以通过设置 `HTTP_PROXY` 系统环境变量或者通过在 frpc 的配置文件中设置 `http_proxy` 参数来使用此功能。
你可以通过设置系统环境变量 `HTTP_PROXY` 或在 frpc 的配置文件中设置 `transport.proxyURL` 参数来使用此功能。

仅在 `protocol = tcp` 时生效。
仅在 `transport.protocol = "tcp"` 时生效。

```ini
# frpc.ini
[common]
server_addr = x.x.x.x
server_port = 7000
http_proxy = http://user:[email protected]:8080
```toml
serverAddr = "x.x.x.x"
serverPort = 7000
transport.proxyURL = "http://user:[email protected]:8080"
```

`http_proxy` 设置为 `socks5://user:[email protected]:8080` 也可以连接到 SOCKS5 代理。
`transport.proxyURL` 设置为 `socks5://user:[email protected]:8080` 也可以连接到 SOCKS5 代理。
Loading

0 comments on commit 40313fc

Please sign in to comment.