From 5d069dda65bbc47e22f8c8be5694b77e942debbb Mon Sep 17 00:00:00 2001 From: fatedier Date: Fri, 13 Oct 2023 11:16:57 +0800 Subject: [PATCH] update some doc to toml config format (#67) --- content/zh-cn/docs/Concepts/_index.md | 36 ++++---- content/zh-cn/docs/Examples/_index.md | 2 +- content/zh-cn/docs/Examples/dns.md | 51 ++++++----- content/zh-cn/docs/Examples/https2http.md | 52 ++++++----- .../Examples/multiple-ssh-over-same-port.md | 79 +++++++++------- content/zh-cn/docs/Examples/ssh.md | 50 ++++++----- content/zh-cn/docs/Examples/static-file.md | 60 +++++++------ content/zh-cn/docs/Examples/stcp.md | 75 +++++++++------- .../zh-cn/docs/Examples/unix-domain-socket.md | 45 ++++++---- content/zh-cn/docs/Examples/vhost-http.md | 59 +++++++----- content/zh-cn/docs/Examples/xtcp.md | 90 ++++++++++--------- content/zh-cn/docs/Overview/_index.md | 24 ++--- content/zh-cn/docs/Setup/_index.md | 22 +++-- content/zh-cn/docs/Setup/systemd.md | 40 +++++---- 14 files changed, 393 insertions(+), 292 deletions(-) diff --git a/content/zh-cn/docs/Concepts/_index.md b/content/zh-cn/docs/Concepts/_index.md index a704f74..95a0fb0 100644 --- a/content/zh-cn/docs/Concepts/_index.md +++ b/content/zh-cn/docs/Concepts/_index.md @@ -2,32 +2,30 @@ title: "概念" weight: 3 description: > - 一些概念,理解它们有助于您更好地了解和使用 frp。 + 了解以下概念有助于更好地理解和使用 frp。 --- -## 原理 +## 工作原理 -frp 主要由 **客户端(frpc)** 和 **服务端(frps)** 组成,服务端通常部署在具有公网 IP 的机器上,客户端通常部署在需要穿透的内网服务所在的机器上。 +frp 主要由两个组件组成:客户端(frpc) 和 服务端(frps)。通常情况下,服务端部署在具有公网 IP 地址的机器上,而客户端部署在需要穿透的内网服务所在的机器上。 -内网服务由于没有公网 IP,不能被非局域网内的其他用户访问。 - -用户通过访问服务端的 frps,由 frp 负责根据请求的端口或其他信息将请求路由到对应的内网机器,从而实现通信。 +由于内网服务缺乏公网 IP 地址,因此无法直接被非局域网内的用户访问。用户通过访问服务端的 frps,frp 负责根据请求的端口或其他信息将请求路由到相应的内网机器,从而实现通信。 ## 代理 -在 frp 中一个代理对应一个需要暴露的内网服务。一个客户端支持同时配置多个代理。 +在 frp 中,一个代理对应一个需要公开访问的内网服务。一个客户端可以同时配置多个代理,以满足不同的需求。 ## 代理类型 -frp 支持多种代理类型来适配不同的使用场景。 - -| 类型 | 描述 | -| :--- | :--- | -| tcp | 单纯的 TCP 端口映射,服务端会根据不同的端口路由到不同的内网服务。 | -| udp | 单纯的 UDP 端口映射,服务端会根据不同的端口路由到不同的内网服务。 | -| http | 针对 HTTP 应用定制了一些额外的功能,例如修改 Host Header,增加鉴权。 | -| https | 针对 HTTPS 应用定制了一些额外的功能。 | -| stcp | 安全的 TCP 内网代理,需要在被访问者和访问者的机器上都部署 frpc,不需要在服务端暴露端口。 | -| sudp | 安全的 UDP 内网代理,需要在被访问者和访问者的机器上都部署 frpc,不需要在服务端暴露端口。 | -| xtcp | 点对点内网穿透代理,功能同 stcp,但是流量不需要经过服务器中转。 | -| tcpmux | 支持服务端 TCP 端口的多路复用,通过同一个端口访问不同的内网服务。 | +frp 支持多种代理类型,以适应不同的使用场景。以下是一些常见的代理类型: + +- **TCP**:提供纯粹的 TCP 端口映射,使服务端能够根据不同的端口将请求路由到不同的内网服务。 +- **UDP**:提供纯粹的 UDP 端口映射,与 TCP 代理类似,但用于 UDP 流量。 +- **HTTP**:专为 HTTP 应用设计,支持修改 Host Header 和增加鉴权等额外功能。 +- **HTTPS**:类似于 HTTP 代理,但专门用于处理 HTTPS 流量。 +- **STCP**:提供安全的 TCP 内网代理,要求在被访问者和访问者的机器上都部署 frpc,不需要在服务端暴露端口。 +- **SUDP**:提供安全的 UDP 内网代理,与 STCP 类似,需要在被访问者和访问者的机器上都部署 frpc,不需要在服务端暴露端口。 +- **XTCP**:点对点内网穿透代理,与 STCP 类似,但流量不需要经过服务器中转。 +- **TCPMUX**:支持服务端 TCP 端口的多路复用,允许通过同一端口访问不同的内网服务。 + +每种代理类型适用于不同的使用情境,您可以根据需求选择合适的代理类型来配置 frp。 diff --git a/content/zh-cn/docs/Examples/_index.md b/content/zh-cn/docs/Examples/_index.md index ec59924..2f5ef58 100755 --- a/content/zh-cn/docs/Examples/_index.md +++ b/content/zh-cn/docs/Examples/_index.md @@ -2,5 +2,5 @@ title: "示例" weight: 4 description: > - 这里包括多个常见的使用场景和配置示例,你可以用来亲自部署和体验这些示例。 + 在这里,您将找到多个常见的使用场景和配置示例,可供您用来亲自部署和体验这些示例。 --- diff --git a/content/zh-cn/docs/Examples/dns.md b/content/zh-cn/docs/Examples/dns.md index 9ef74e0..e716fa7 100644 --- a/content/zh-cn/docs/Examples/dns.md +++ b/content/zh-cn/docs/Examples/dns.md @@ -2,36 +2,47 @@ title: "转发 DNS 查询请求" weight: 20 description: > - 这个示例通过简单配置 UDP 类型的代理转发 DNS 查询请求。 + 本示例演示如何通过简单配置 UDP 类型的代理来实现 DNS 查询请求的转发。 --- -DNS 查询请求通常使用 UDP 协议,frp 支持对内网 UDP 服务的穿透,配置方式和 TCP 基本一致。 +DNS 查询请求通常使用 UDP 协议,而 frp 支持对内网 UDP 服务的穿透,配置方式与 TCP 类似。 -1. frps.ini 内容如下: +### 步骤 - ```ini - [common] - bind_port = 7000 +1. **配置 frps.toml** + + 在 frps.toml 文件中添加以下内容: + + ```toml + bindPort = 7000 ``` -2. frpc.ini 内容如下: +2. **配置 frpc.toml** + + 在 frpc.toml 文件中添加以下内容: - ```ini - [common] - server_addr = x.x.x.x - server_port = 7000 + ```toml + serverAddr = "x.x.x.x" + serverPort = 7000 - [dns] - type = udp - local_ip = 8.8.8.8 - local_port = 53 - remote_port = 6000 + [[proxies]] + name = "dns" + type = "udp" + localIP = "8.8.8.8" + localPort = 53 + remotePort = 6000 ``` - 这里反代了 Google 的 DNS 查询服务器的地址,仅仅用于测试 UDP 代理,并无实际意义。 + 请注意,这里示例中反代了 Google 的 DNS 查询服务器的地址,仅用于测试 UDP 代理,并没有实际意义。 + +3. **启动 frps 和 frpc** + + 分别启动 frps 和 frpc。 -3. 分别启动 frps 和 frpc。 +4. **测试 DNS 查询请求** -4. 通过 dig 测试 UDP 包转发是否成功,预期会返回 `www.baidu.com` 域名的解析结果。 + 使用以下命令通过 `dig` 工具测试 UDP 包转发是否成功,预期会返回 `www.baidu.com` 域名的解析结果: - `dig @x.x.x.x -p 6000 www.baidu.com` + ```bash + dig @x.x.x.x -p 6000 www.baidu.com + ``` diff --git a/content/zh-cn/docs/Examples/https2http.md b/content/zh-cn/docs/Examples/https2http.md index 2e94ea3..b75818c 100644 --- a/content/zh-cn/docs/Examples/https2http.md +++ b/content/zh-cn/docs/Examples/https2http.md @@ -2,38 +2,46 @@ title: "为本地 HTTP 服务启用 HTTPS" weight: 35 description: > - 通过 `https2http` 插件可以让本地 HTTP 服务转换成 HTTPS 服务对外提供。 + 使用 `https2http` 插件将本地 HTTP 服务转换为 HTTPS 服务,以供外部访问。 --- -1. frps.ini 内容如下: +### 步骤 - ```ini - [common] - bind_port = 7000 - vhost_https_port = 443 +1. **配置 frps.toml** + + ```toml + bindPort = 7000 + vhostHTTPSPort = 443 ``` -2. frpc.ini 内容如下: +2. **配置 frpc.toml** - ```ini - [common] - server_addr = x.x.x.x - server_port = 7000 + ```toml + serverAddr = "x.x.x.x" + serverPort = 7000 - [test_htts2http] - type = https - custom_domains = test.yourdomain.com + [[proxies]] + name = "test_htts2http" + type = "https" + customDomains = ["test.yourdomain.com"] - plugin = https2http - plugin_local_addr = 127.0.0.1:80 + [proxies.plugin] + type = "https2http" + localAddr = "127.0.0.1:80" # HTTPS 证书相关的配置 - plugin_crt_path = ./server.crt - plugin_key_path = ./server.key - plugin_host_header_rewrite = 127.0.0.1 - plugin_header_X-From-Where = frp + crtPath = "./server.crt" + keyPath = "./server.key" + hostHeaderRewrite = "127.0.0.1" + requestHeaders.set.x-from-where = "frp" ``` -3. 分别启动 frps 和 frpc。 + 请注意,您需要根据您的域名和证书路径自行更改上述配置。 + +3. **启动 frps 和 frpc** + +4. **访问 HTTPS 服务** + + 打开您的 Web 浏览器,访问 `https://test.yourdomain.com`。 -4. 通过浏览器访问 `https://test.yourdomain.com`。 +通过按照以上步骤进行配置,您将能够为本地 HTTP 服务启用 HTTPS,以实现安全的外部访问。 diff --git a/content/zh-cn/docs/Examples/multiple-ssh-over-same-port.md b/content/zh-cn/docs/Examples/multiple-ssh-over-same-port.md index f6cdc93..954a6cc 100644 --- a/content/zh-cn/docs/Examples/multiple-ssh-over-same-port.md +++ b/content/zh-cn/docs/Examples/multiple-ssh-over-same-port.md @@ -2,51 +2,66 @@ title: "多个 SSH 服务复用同一端口" weight: 10 description: > - 这个示例通过 tcpmux 类型的代理,实现多个 ssh 服务通过同一个端口暴露。与此类似,只要是能够支持 HTTP Connect 代理连接方式的客户端,都可以通过这种方式来实现对端口的复用。 + 通过使用 tcpmux 类型的代理,您可以实现多个 SSH 服务通过同一端口进行暴露。这种方法还适用于任何支持 HTTP Connect 代理连接方式的客户端,以实现端口的复用。 --- -1. 在具有公网 IP 的机器上部署 frps,修改 frps.ini 文件,这里使用了最简化的配置: +### 步骤 - ```ini - [common] - bind_port = 7000 - tcpmux_httpconnect_port = 5002 +1. **在具有公网 IP 的机器上部署 frps** + + 修改 frps.toml 文件以包含以下内容(这里使用了最简化的配置): + + ```toml + bindPort = 7000 + tcpmuxHTTPConnectPort = 5002 ``` -2. 在内网机器 A 上部署 frpc,配置文件: +2. **在内网机器 A 上部署 frpc** - ```ini - [common] - server_addr = x.x.x.x - server_port = 7000 + 创建 frpc 配置文件,例如 frpc.ini,然后将以下内容添加到配置文件中: - [ssh1] - type = tcpmux - multiplexer = httpconnect - custom_domains = machine-a.example.com - local_ip = 127.0.0.1 - local_port = 22 + ```toml + serverAddr = "x.x.x.x" + serverPort = 7000 + + [[proxies]] + name = "ssh1" + type = "tcpmux" + multiplexer = "httpconnect" + customDomains = ["machine-a.example.com"] + localIP = "127.0.0.1" + localPort = 22 ``` -3. 在内网机器 B 上部署另一个 frpc,配置文件: +3. **在内网机器 B 上部署另一个 frpc** + + 创建 frpc 配置文件,例如 frpc.toml,然后将以下内容添加到配置文件中: - ```ini - [common] - server_addr = x.x.x.x - server_port = 7000 + ```toml + serverAddr = "x.x.x.x" + serverPort = 7000 - [ssh2] - type = tcpmux - multiplexer = httpconnect - custom_domains = machine-b.example.com - local_ip = 127.0.0.1 - local_port = 22 + [[proxies]] + name = "ssh2" + type = "tcpmux" + multiplexer = "httpconnect" + customDomains = ["machine-b.example.com"] + localIP = "127.0.0.1" + localPort = 22 ``` -4. 通过 SSH ProxyCommand 访问内网机器 A,假设用户名为 test: +4. **通过 SSH ProxyCommand 访问内网机器 A** - `ssh -o 'proxycommand socat - PROXY:x.x.x.x:machine-a.example.com:22,proxyport=5002' test@machine-a` + 使用 SSH ProxyCommand 访问内网机器 A,假设用户名为 test。使用以下命令: - 访问内网机器 B,区别只在于域名不同,假设用户名为 test: + ```bash + ssh -o 'proxycommand socat - PROXY:x.x.x.x:machine-a.example.com:22,proxyport=5002' test@machine-a + ``` + + 要访问内网机器 B,只需更改域名,假设用户名仍然为 test: + + ```bash + ssh -o 'proxycommand socat - PROXY:x.x.x.x:machine-b.example.com:22,proxyport=5002' test@machine-b + ``` - `ssh -o 'proxycommand socat - PROXY:x.x.x.x:machine-b.example.com:22,proxyport=5002' test@machine-b` +通过按照以上步骤进行配置,您可以实现多个 SSH 服务复用同一端口,以便在具有公网 IP 的机器上进行访问。 diff --git a/content/zh-cn/docs/Examples/ssh.md b/content/zh-cn/docs/Examples/ssh.md index 4b32e1c..7ee0ee4 100644 --- a/content/zh-cn/docs/Examples/ssh.md +++ b/content/zh-cn/docs/Examples/ssh.md @@ -2,36 +2,46 @@ title: "通过 SSH 访问内网机器" weight: 5 description: > - 这个示例通过简单配置 TCP 类型的代理让用户访问到内网的服务器。 + 通过简单配置 TCP 类型的代理,使用户能够访问内网服务器。 --- -1. 在具有公网 IP 的机器上部署 frps,修改 frps.ini 文件,这里使用了最简化的配置,设置了 frp 服务器用户接收客户端连接的端口: +### 步骤 - ```ini - [common] - bind_port = 7000 +1. **在具有公网 IP 的机器上部署 frps** + + 部署 frps 并编辑 frps.toml 文件。以下是简化的配置,其中设置了 frp 服务器用于接收客户端连接的端口: + + ```toml + bindPort = 7000 ``` -2. 在需要被访问的内网机器上(SSH 服务通常监听在 22 端口)部署 frpc,修改 frpc.ini 文件,假设 frps 所在服务器的公网 IP 为 x.x.x.x: +2. **在需要被访问的内网机器上部署 frpc** + + 部署 frpc 并编辑 frpc.toml 文件,假设 frps 所在服务器的公网 IP 地址为 x.x.x.x。以下是示例配置: - ```ini - [common] - server_addr = x.x.x.x - server_port = 7000 + ```toml + serverAddr = "x.x.x.x" + serverPort = 7000 - [ssh] - type = tcp - local_ip = 127.0.0.1 - local_port = 22 - remote_port = 6000 + [[proxies]] + name = "ssh" + type = "tcp" + localIP = "127.0.0.1" + localPort = 22 + remotePort = 6000 ``` - `local_ip` 和 `local_port` 配置为本地需要暴露到公网的服务地址和端口。`remote_port` 表示在 frp 服务端监听的端口,访问此端口的流量将会被转发到本地服务对应的端口。 + * `localIP` 和 `localPort` 配置为需要从公网访问的内网服务的地址和端口。 + * `remotePort` 表示在 frp 服务端监听的端口,访问此端口的流量将被转发到本地服务的相应端口。 -3. 分别启动 frps 和 frpc。 +3. **启动 frps 和 frpc** -4. 通过 SSH 访问内网机器,假设用户名为 test: +4. **通过 SSH 访问内网机器** - `ssh -oPort=6000 test@x.x.x.x` + 使用以下命令通过 SSH 访问内网机器,假设用户名为 test: + + ```bash + ssh -o Port=6000 test@x.x.x.x + ``` - frp 会将请求 `x.x.x.x:6000` 的流量转发到内网机器的 22 端口。 + frp 将请求发送到 `x.x.x.x:6000` 的流量转发到内网机器的 22 端口。 diff --git a/content/zh-cn/docs/Examples/static-file.md b/content/zh-cn/docs/Examples/static-file.md index 1b1898b..9110ed6 100644 --- a/content/zh-cn/docs/Examples/static-file.md +++ b/content/zh-cn/docs/Examples/static-file.md @@ -2,37 +2,47 @@ title: "对外提供简单的文件访问服务" weight: 30 description: > - 这个示例通过配置 `static_file` 客户端插件来将本地文件暴露在公网上供其他人访问。 + 通过配置 `static_file` 客户端插件,您可以将本地文件暴露在公网上,以供其他人访问。 --- -通过 `static_file` 插件可以对外提供一个简单的基于 HTTP 的文件访问服务。 +通过使用 `static_file` 插件,您可以轻松地提供一个基于 HTTP 的文件访问服务,让其他人可以访问您指定的文件。 -1. frps.ini 内容如下: +### 步骤 - ```ini - [common] - bind_port = 7000 +1. **配置 frps.toml** + + 在 frps.toml 文件中添加以下内容: + + ```toml + bindPort = 7000 ``` -2. frpc.ini 内容如下: - - ```ini - [common] - server_addr = x.x.x.x - server_port = 7000 - - [test_static_file] - type = tcp - remote_port = 6000 - plugin = static_file - # 要对外暴露的文件目录 - plugin_local_path = /tmp/file - # 用户访问 URL 中会被去除的前缀,保留的内容即为要访问的文件路径 - plugin_strip_prefix = static - plugin_http_user = abc - plugin_http_passwd = abc +2. **配置 frpc.toml** + + 在 frpc.toml 文件中添加以下内容,确保设置合适的文件路径、用户名和密码: + + ```toml + serverAddr = "x.x.x.x" + serverPort = 7000 + + [[proxies]] + name = "test_static_file" + type = "tcp" + remotePort = 6000 + [proxies.plugin] + type = "static_file" + # 本地文件目录,对外提供访问 + localPath = "/tmp/file" + # URL 中的前缀,将被去除,保留的内容即为要访问的文件路径 + stripPrefix = "static" + httpUser = "abc" + httpPassword = "abc" ``` -3. 分别启动 frps 和 frpc。 + 请根据实际情况修改 `localPath`、`stripPrefix`、`httpUser` 和 `httpPassword`。 + +3. **启动 frps 和 frpc** + +4. **通过浏览器访问文件** -4. 通过浏览器访问 `http://x.x.x.x:6000/static/` 来查看位于 `/tmp/file` 目录下的文件,会要求输入已设置好的用户名和密码。 + 使用浏览器访问 `http://x.x.x.x:6000/static/`,以查看位于 `/tmp/file` 目录下的文件。系统会要求输入您设置的用户名和密码。 diff --git a/content/zh-cn/docs/Examples/stcp.md b/content/zh-cn/docs/Examples/stcp.md index 72fb548..7d3c753 100644 --- a/content/zh-cn/docs/Examples/stcp.md +++ b/content/zh-cn/docs/Examples/stcp.md @@ -2,54 +2,61 @@ title: "安全地暴露内网服务" weight: 40 description: > - 这个示例将会创建一个只有自己能访问到的 SSH 服务代理。 + 通过创建一个只有授权用户能够访问的 SSH 服务代理,实现内网服务的安全暴露。 --- -对于某些服务来说如果直接暴露于公网上将会存在安全隐患。 +某些内网服务,如果直接暴露在公网上,可能存在安全风险。使用 `stcp(secret tcp)` 类型的代理可以让您安全地将内网服务暴露给经过授权的用户,这需要访问者也部署 frpc 客户端。 -使用 `stcp(secret tcp)` 类型的代理可以避免让任何人都能访问到要穿透的服务,但是访问者也需要运行另外一个 frpc 客户端。 +### 步骤 -1. frps.ini 内容如下: +1. **配置 frps.toml** - ```ini - [common] - bind_port = 7000 + 在 frps.toml 文件中添加以下内容: + + ```toml + bindPort = 7000 ``` -2. 在需要暴露到外网的机器上部署 frpc,且配置如下: +2. **部署 frpc 客户端并配置** + + 在需要将内网服务暴露到公网的机器上部署 frpc,并创建如下配置: - ```ini - [common] - server_addr = x.x.x.x - server_port = 7000 + ```toml + serverAddr = "x.x.x.x" + serverPort = 7000 - [secret_ssh] - type = stcp - # 只有 sk 一致的用户才能访问到此服务 - sk = abcdefg - local_ip = 127.0.0.1 - local_port = 22 + [[proxies]] + name = "secret_ssh" + type = "stcp" + # 只有与此处设置的 secretKey 一致的用户才能访问此服务 + secretKey = "abcdefg" + localIP = "127.0.0.1" + localPort = 22 ``` -3. 在想要访问内网服务的机器上也部署 frpc,且配置如下: +3. **在访问者机器上部署并配置 frpc** - ```ini - [common] - server_addr = x.x.x.x - server_port = 7000 + 在想要访问内网服务的机器上也部署 frpc,并创建如下配置: - [secret_ssh_visitor] - type = stcp - # stcp 的访问者 - role = visitor + ```toml + serverAddr = "x.x.x.x" + serverPort = 7000 + + [[visitors]] + name = "secret_ssh_visitor" + type = "stcp" # 要访问的 stcp 代理的名字 - server_name = secret_ssh - sk = abcdefg - # 绑定本地端口用于访问 SSH 服务 - bind_addr = 127.0.0.1 - bind_port = 6000 + serverName = "secret_ssh" + secretKey = "abcdefg" + # 绑定本地端口以访问 SSH 服务 + bindAddr = "127.0.0.1" + bindPort = 6000 ``` -4. 通过 SSH 访问内网机器,假设用户名为 test: +4. **通过 SSH 访问内网机器** + + 使用以下命令通过 SSH 访问内网机器,假设用户名为 test: - `ssh -oPort=6000 test@127.0.0.1` + ```bash + ssh -o Port=6000 test@127.0.0.1 + ``` diff --git a/content/zh-cn/docs/Examples/unix-domain-socket.md b/content/zh-cn/docs/Examples/unix-domain-socket.md index f50baf3..53c8932 100644 --- a/content/zh-cn/docs/Examples/unix-domain-socket.md +++ b/content/zh-cn/docs/Examples/unix-domain-socket.md @@ -2,32 +2,41 @@ title: "转发 Unix 域套接字" weight: 25 description: > - 这个示例通过配置 Unix域套接字客户端插件来通过 TCP 端口访问内网的 Unix域套接字服务,例如 Docker Daemon。 + 通过配置 Unix 域套接字客户端插件,您可以使用 TCP 端口访问内网的 Unix 域套接字服务,例如 Docker Daemon。 --- -1. frps.ini 内容如下: +### 步骤 - ```ini - [common] - bind_port = 7000 +1. **配置 frps.toml** + + 在 frps.toml 文件中添加以下内容: + + ```toml + bindPort = 7000 ``` -2. frpc.ini 内容如下: +2. **配置 frpc.toml** + + 在 frpc.toml 文件中添加以下内容,确保设置正确的 Unix 域套接字路径: - ```ini - [common] - server_addr = x.x.x.x - server_port = 7000 + ```toml + serverAddr = "x.x.x.x" + serverPort = 7000 - [unix_domain_socket] - type = tcp - remote_port = 6000 - plugin = unix_domain_socket - plugin_unix_path = /var/run/docker.sock + [[proxies]] + name = "unix_domain_socket" + type = "tcp" + remotePort = 6000 + [proxies.plugin] + type = "unix_domain_socket" + # Unix 域套接字路径 + unixPath = "/var/run/docker.sock" ``` -3. 分别启动 frps 和 frpc。 +3. **启动 frps 和 frpc** -4. 通过 curl 命令查看 docker 版本信息 +4. **使用 curl 查看 Docker 版本信息** - `curl http://x.x.x.x:6000/version` + ```bash + curl http://x.x.x.x:6000/version + ``` diff --git a/content/zh-cn/docs/Examples/vhost-http.md b/content/zh-cn/docs/Examples/vhost-http.md index 473904a..7cd6efd 100644 --- a/content/zh-cn/docs/Examples/vhost-http.md +++ b/content/zh-cn/docs/Examples/vhost-http.md @@ -2,43 +2,54 @@ title: "通过自定义域名访问内网的 Web 服务" weight: 15 description: > - 这个示例通过简单配置 HTTP 类型的代理让用户访问到内网的 Web 服务。 + 通过简单配置 HTTP 类型的代理,您可以让用户通过自定义域名访问内网的 Web 服务。 --- -HTTP 类型的代理相比于 TCP 类型,不仅在服务端只需要监听一个额外的端口 `vhost_http_port` 用于接收 HTTP 请求,还额外提供了基于 HTTP 协议的诸多功能。 +HTTP 类型的代理非常适合将内网的 Web 服务通过自定义域名提供给外部用户。相比于 TCP 类型代理,HTTP 代理不仅可以复用端口,还提供了基于 HTTP 协议的许多功能。 HTTPS 与此类似,但是需要注意,frp 的 https 代理需要本地服务是 HTTPS 服务,frps 端不会做 TLS 终止。也可以结合 https2http 插件来实现将本地的 HTTP 服务以 HTTPS 协议暴露出去。 -1. 修改 frps.ini 文件,设置监听 HTTP 请求端口为 8080: +### 步骤 - ```ini - [common] - bind_port = 7000 - vhost_http_port = 8080 +1. **配置 frps.toml** + + 在 frps.toml 文件中添加以下内容,以指定 HTTP 请求的监听端口为 8080: + + ```toml + bindPort = 7000 + vhostHTTPPort = 8080 ``` - https 代理的话需要配置 `vhost_https_port`。 + 如果需要配置 HTTPS 代理,还需要设置 `vhostHTTPSPort`。 + +2. **配置 frpc.toml** -2. 修改 frpc.ini 文件,假设 frps 所在的服务器的 IP 为 x.x.x.x,`local_port` 为本地机器上 Web 服务监听的端口, 绑定自定义域名为 `custom_domains`。 + 在 frpc.toml 文件中添加以下内容,确保设置了正确的服务器 IP 地址、本地 Web 服务监听端口和自定义域名: - ```ini - [common] - server_addr = x.x.x.x - server_port = 7000 + ```toml + serverAddr = "x.x.x.x" + serverPort = 7000 - [web] - type = http - local_port = 80 - custom_domains = www.yourdomain.com + [[proxies]] + name = "web" + type = "http" + localPort = 80 + customDomains = ["www.yourdomain.com"] - [web2] - type = http - local_port = 8080 - custom_domains = www.yourdomain2.com + [[proxies]] + name = "web2" + type = "http" + localPort = 8080 + customDomains = ["www.yourdomain2.com"] ``` -3. 分别启动 frps 和 frpc。 +3. **启动 frps 和 frpc** + +4. **域名解析** + + 将 `www.yourdomain.com` 和 `www.yourdomain2.com` 的域名 A 记录解析到服务器的 IP 地址 `x.x.x.x`。如果服务器已经有对应的域名,您还可以将 CNAME 记录解析到原始域名。另外,通过修改 HTTP 请求的 Host 字段也可以实现相同的效果。 + -4. 将 `www.yourdomain.com` 和 `www.yourdomain2.com` 的域名 A 记录解析到 IP `x.x.x.x`,如果服务器已经有对应的域名,也可以将 CNAME 记录解析到服务器原先的域名。或者可以通过修改 HTTP 请求的 Host 字段来实现同样的效果。 +5. **通过浏览器访问** -5. 通过浏览器访问 `http://www.yourdomain.com:8080` 即可访问到处于内网机器上 80 端口的服务,访问 `http://www.yourdomain2.com:8080` 则访问到内网机器上 8080 端口的服务。 + 使用浏览器访问 `http://www.yourdomain.com:8080` 即可访问内网机器上的 80 端口服务,访问 `http://www.yourdomain2.com:8080` 可以访问内网机器上的 8080 端口服务。 diff --git a/content/zh-cn/docs/Examples/xtcp.md b/content/zh-cn/docs/Examples/xtcp.md index 3071169..22769be 100644 --- a/content/zh-cn/docs/Examples/xtcp.md +++ b/content/zh-cn/docs/Examples/xtcp.md @@ -2,55 +2,63 @@ title: "点对点内网穿透" weight: 45 description: > - 这个示例将会演示一种不通过服务器中转流量的方式来访问内网服务。 + 这个示例将演示如何通过点对点 (P2P) 连接来访问内网服务,流量不会通过服务器中转。 --- -frp 提供了一种新的代理类型 `xtcp` 用于应对在希望传输大量数据且流量不经过服务器的场景。 +frp 提供了一种新的代理类型 `xtcp`,用于在需要传输大量数据且不希望流量经过服务器的情况下实现内网穿透。 -使用方式同 `stcp` 类似,需要在两边都部署上 frpc 用于建立直接的连接。 +与 `stcp` 类似,使用 `xtcp` 需要在两端都部署 frpc 以建立直接连接。 -**XTCP 并不能穿透所有类型的 NAT 设备,穿透失败时可以尝试 `stcp` 的方式。** +需要注意的是,`xtcp` 并不适用于所有类型的 NAT 设备,如果穿透失败,可以尝试使用 `stcp` 代理。 -1. 在需要暴露到外网的机器上部署 frpc,且配置如下: +### 步骤 - ```ini - [common] - server_addr = x.x.x.x - server_port = 7000 - # 当默认的 stun server 不可用时,可以配置一个新的 - # nat_hole_stun_server = xxx +1. **配置需要暴露到外网的机器上的 frpc.toml 文件** - [p2p_ssh] - type = xtcp - # 只有 sk 一致的用户才能访问到此服务 - sk = abcdefg - local_ip = 127.0.0.1 - local_port = 22 - ``` + 在 frpc.toml 文件中添加以下内容,确保设置了正确的服务器地址和端口以及共享密钥 (`secretKey`),以及本地服务的 IP 地址和端口: + + ```toml + serverAddr = "x.x.x.x" + serverPort = 7000 + # 如果默认的 STUN 服务器不可用,可以配置一个新的 STUN 服务器 + # natHoleStunServer = "xxx" -2. 在想要访问内网服务的机器上也部署 frpc,且配置如下: - - ```ini - [common] - server_addr = x.x.x.x - server_port = 7000 - # 当默认的 stun server 不可用时,可以配置一个新的 - # nat_hole_stun_server = xxx - - [p2p_ssh_visitor] - type = xtcp - # xtcp 的访问者 - role = visitor - # 要访问的 xtcp 代理的名字 - server_name = p2p_ssh - sk = abcdefg - # 绑定本地端口用于访问 ssh 服务 - bind_addr = 127.0.0.1 - bind_port = 6000 - # 当需要自动保持隧道打开时,设置为 true - # keep_tunnel_open = false + [[proxies]] + name = "p2p_ssh" + type = "xtcp" + # 只有共享密钥 (secretKey) 与服务器端一致的用户才能访问该服务 + secretKey = "abcdefg" + localIP = "127.0.0.1" + localPort = 22 ``` -3. 通过 SSH 访问内网机器,假设用户名为 test: +2. **在想要访问内网服务的机器上部署 frpc** + + 在 frpc.toml 文件中添加以下内容,确保设置了正确的服务器地址和端口,共享密钥 (`secretKey`) 以及要访问的 P2P 代理的名称: + + ```toml + serverAddr = "x.x.x.x" + serverPort = 7000 + # 如果默认的 STUN 服务器不可用,可以配置一个新的 STUN 服务器 + # natHoleStunServer = "xxx" + + [[visitors]] + name = "p2p_ssh_visitor" + type = "xtcp" + # 要访问的 P2P 代理的名称 + serverName = "p2p_ssh" + secretKey = "abcdefg" + # 绑定本地端口以访问 SSH 服务 + bindAddr = "127.0.0.1" + bindPort = 6000 + # 如果需要自动保持隧道打开,将其设置为 true + # keepTunnelOpen = false + - `ssh -oPort=6000 test@127.0.0.1` +3. **通过 SSH 访问内网机器** + + 使用 SSH 命令访问内网机器,假设用户名为 `test`: + + ``` + ssh -oPort=6000 test@127.0.0.1 + ``` diff --git a/content/zh-cn/docs/Overview/_index.md b/content/zh-cn/docs/Overview/_index.md index e363032..b6dce5c 100644 --- a/content/zh-cn/docs/Overview/_index.md +++ b/content/zh-cn/docs/Overview/_index.md @@ -7,22 +7,22 @@ description: > ## frp 是什么? -frp 是一个专注于内网穿透的高性能的反向代理应用,支持 TCP、UDP、HTTP、HTTPS 等多种协议,且支持 P2P 通信。可以将内网服务以安全、便捷的方式通过具有公网 IP 节点的中转暴露到公网。 +frp 是一款高性能的反向代理应用,专注于内网穿透。它支持多种协议,包括 TCP、UDP、HTTP、HTTPS 等,并且具备 P2P 通信功能。使用 frp,您可以安全、便捷地将内网服务暴露到公网,通过拥有公网 IP 的节点进行中转。 -## 为什么使用 frp? +## 为什么选择 frp? -通过在具有公网 IP 的节点上部署 frp 服务端,可以轻松地将内网服务穿透到公网,同时提供诸多专业的功能特性,这包括: +通过在具有公网 IP 的节点上部署 frp 服务端,您可以轻松地将内网服务穿透到公网,并享受以下专业特性: -* 客户端服务端通信支持 TCP、QUIC、KCP 以及 Websocket 等多种协议。 -* 采用 TCP 连接流式复用,在单个连接间承载更多请求,节省连接建立时间,降低请求延迟。 +* 多种协议支持:客户端服务端通信支持 TCP、QUIC、KCP 和 Websocket 等多种协议。 +* TCP 连接流式复用:在单个连接上承载多个请求,减少连接建立时间,降低请求延迟。 * 代理组间的负载均衡。 -* 端口复用,多个服务通过同一个服务端端口暴露。 -* 支持 P2P 通信,流量不经过服务器中转,充分利用带宽资源。 -* 多个原生支持的客户端插件(静态文件查看,HTTPS/HTTP 协议转换,HTTP、SOCK5 代理等),便于独立使用 frp 客户端完成某些工作。 -* 高度扩展性的服务端插件系统,易于结合自身需求进行功能扩展。 -* 服务端和客户端 UI 页面。 +* 端口复用:多个服务可以通过同一个服务端端口暴露。 +* P2P 通信:流量不必经过服务器中转,充分利用带宽资源。 +* 客户端插件:提供多个原生支持的客户端插件,如静态文件查看、HTTPS/HTTP 协议转换、HTTP、SOCKS5 代理等,以便满足各种需求。 +* 服务端插件系统:高度可扩展的服务端插件系统,便于根据自身需求进行功能扩展。 +* 用户友好的 UI 页面:提供服务端和客户端的用户界面,使配置和监控变得更加方便。 ## 下一步? -* [安装](/docs/setup/):安装 frp。 -* [示例](/docs/examples/):通过简单示例了解 frp 的应用场景。 +* [安装](/docs/setup/):了解如何安装 frp。 +* [示例](/docs/examples/):通过简单示例了解 frp 的不同应用场景。 diff --git a/content/zh-cn/docs/Setup/_index.md b/content/zh-cn/docs/Setup/_index.md index df9096d..0c1b588 100644 --- a/content/zh-cn/docs/Setup/_index.md +++ b/content/zh-cn/docs/Setup/_index.md @@ -6,26 +6,32 @@ description: > --- {{% pageinfo %}} -frp 采用 Golang 编写,支持跨平台,仅需下载对应平台的二进制文件即可执行,没有额外依赖。 +frp 采用 Go 语言编写,支持跨平台,只需下载适用于您平台的二进制文件即可执行,无需额外依赖。 {{% /pageinfo %}} ## 系统需求 -由于采用 Golang 编写,所以系统需求和最新的 Golang 对系统和平台的要求一致,具体可以参考 [Golang System requirements](https://golang.org/doc/install#requirements)。 - +由于采用 Go 语言编写,因此系统需求与最新的 Go 语言对系统和平台的要求一致,具体请参考 [Golang System requirements](https://golang.org/doc/install#requirements)。 ## 下载 -目前可以在 Github 的 [Release](https://github.com/fatedier/frp/releases) 页面中下载到最新版本的客户端和服务端二进制文件,所有文件被打包在一个压缩包中。 +您可以从 GitHub 的 [Release](https://github.com/fatedier/frp/releases) 页面中下载最新版本的客户端和服务器二进制文件。所有文件都打包在一个压缩包中,还包含了一份完整的配置参数说明。 ## 部署 -解压缩下载的压缩包,将其中的 frpc 拷贝到内网服务所在的机器上,将 frps 拷贝到具有公网 IP 的机器上,放置在任意目录。 +1. 解压下载的压缩包。 +2. 将 `frpc` 复制到内网服务所在的机器上。 +3. 将 `frps` 复制到拥有公网 IP 地址的机器上,并将它们放在任意目录。 ## 开始使用! -编写配置文件,先通过 `./frps -c ./frps.ini` 启动服务端,再通过 `./frpc -c ./frpc.ini` 启动客户端。如果需要在后台长期运行,建议结合其他工具使用,例如 [systemd](/docs/setup/systemd/) 和 `supervisor`。 +1. 编写配置文件,目前支持的文件格式包括 TOML/YAML/JSON,旧的 INI 格式仍然支持,但已经不再推荐。 +2. 使用以下命令启动服务器:`./frps -c ./frps.toml`。 +3. 使用以下命令启动客户端:`./frpc -c ./frpc.toml`。 +4. 如果需要在后台长期运行,建议结合其他工具,如 [systemd](/docs/setup/systemd/) 和 `supervisor`。 + +如果您是 Windows 用户,需要在命令提示符中执行相同的命令。 -如果是 Windows 用户,需要在 cmd 终端中执行命令。 +有关如何编写配置文件,请参考 [示例](../examples/) 部分中的内容。 -配置文件如何编写可以参考 [示例](/docs/examples/) 中的内容。 +完整的配置项说明,请参考 [Reference](../reference/) 中的内容。 diff --git a/content/zh-cn/docs/Setup/systemd.md b/content/zh-cn/docs/Setup/systemd.md index dfe4ac7..56fc26b 100644 --- a/content/zh-cn/docs/Setup/systemd.md +++ b/content/zh-cn/docs/Setup/systemd.md @@ -2,27 +2,33 @@ title: "使用 systemd" weight: 1 description: > - 这个示例将会演示在 Linux 系统下使用 systemd 控制 frps 及配置开机自启。 + 此示例演示如何在 Linux 系统下使用 systemd 来管理 frps 服务,包括启动、停止、配置后台运行和设置开机自启动。 --- -在 Linux 系统下,使用`systemd` 可以方便地控制 frp 服务端 `frps` 的启动和停止、配置后台运行和开启自启。 +在 Linux 系统下,使用 `systemd` 可以方便地控制 frps 服务端的启动、停止、配置后台运行以及开机自启动。 -要使用 `systemd` 来控制 `frps`,需要先安装 `systemd`,然后在 `/etc/systemd/system` 目录下创建一个 frps.service 文件。 +以下是具体的操作步骤: -1. 如Linux服务端上没有安装 `systemd`,可以使用 `yum` 或 `apt` 等命令安装 `systemd`。 +1. **安装 systemd** + + 如果您的 Linux 服务器上尚未安装 systemd,可以使用包管理器如 `yum`(适用于 CentOS/RHEL)或 `apt`(适用于 Debian/Ubuntu)来安装它: ```bash - # yum + # 使用 yum 安装 systemd(CentOS/RHEL) yum install systemd - # apt + + # 使用 apt 安装 systemd(Debian/Ubuntu) apt install systemd ``` -2. 使用文本编辑器,如 `vim` 创建并编辑 `frps.service` 文件。 +2. **创建 frps.service 文件** + + 使用文本编辑器 (如 vim) 在 `/etc/systemd/system` 目录下创建一个 `frps.service` 文件,用于配置 frps 服务。 ```bash - $ vim /etc/systemd/system/frps.service + $ sudo vim /etc/systemd/system/frps.service ``` + 写入内容 ```ini [Unit] @@ -34,27 +40,29 @@ description: > [Service] Type = simple # 启动frps的命令,需修改为您的frps的安装路径 - ExecStart = /path/to/frps -c /path/to/frps.ini + ExecStart = /path/to/frps -c /path/to/frps.toml [Install] WantedBy = multi-user.target ``` -3. 使用 `systemd` 命令,管理 frps。 +3. **使用 systemd 命令管理 frps 服务** ```bash # 启动frp - systemctl start frps + sudo systemctl start frps # 停止frp - systemctl stop frps + sudo systemctl stop frps # 重启frp - systemctl restart frps + sudo systemctl restart frps # 查看frp状态 - systemctl status frps + sudo systemctl status frps ``` -4. 配置 frps 开机自启。 +4. **设置 frps 开机自启动** ```bash - systemctl enable frps + sudo systemctl enable frps ``` + +通过遵循上述步骤,您可以轻松地使用 systemd 来管理 frps 服务,实现启动、停止、自动运行和开机自启动。确保替换路径和配置文件名称以匹配您的实际安装。