frp V2使用教程

发布于:2024-04-24 ⋅ 阅读:(23) ⋅ 点赞:(0)

教程适合小白,按照步骤操作即可

使用 systemd

安装

# 使用 yum 安装 systemd(CentOS/RHEL)
yum install systemd

# 使用 apt 安装 systemd(Debian/Ubuntu)
apt install systemd

创建 frps.service 文件

使用文本编辑器 (如 vim) 在 /etc/systemd/system 目录下创建一个 frps.service 文件,用于配置 frps 服务。

$ sudo vim /etc/systemd/system/frps.service

写入内容

[Unit]
# 服务名称,可自定义
Description = frp server
After = network.target syslog.target
Wants = network.target

[Service]
Type = simple
# 启动frps的命令,需修改为您的frps的安装路径
ExecStart = /path/to/frps -c /path/to/frps.toml

[Install]
WantedBy = multi-user.target

使用 systemd 命令管理 frps 服务

# 启动frp
sudo systemctl start frps
# 停止frp
sudo systemctl stop frps
# 重启frp
sudo systemctl restart frps
# 查看frp状态
sudo systemctl status frps

设置 frps 开机自启动

sudo systemctl enable frps

通过遵循上述步骤,您可以轻松地使用 systemd 来管理 frps 服务,实现启动、停止、自动运行和开机自启动。确保替换路径和配置文件名称以匹配您的实际安装。

代理类型

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。

示例

在这里,您将找到多个常见的使用场景和配置示例,可供您用来亲自部署和体验这些示例。

通过 SSH 访问内网机器

步骤

  1. 在具有公网 IP 的机器上部署 frps

部署 frps 并编辑 frps.toml 文件。以下是简化的配置,其中设置了 frp 服务器用于接收客户端连接的端口:

bindPort = 7000
  1. 在需要被访问的内网机器上部署 frpc

部署 frpc 并编辑 frpc.toml 文件,假设 frps 所在服务器的公网 IP 地址为 x.x.x.x。以下是示例配置:

serverAddr = "x.x.x.x"
serverPort = 7000

[[proxies]]
name = "ssh"
type = "tcp"
localIP = "127.0.0.1"
localPort = 22
remotePort = 6000
  • localIP 和 localPort 配置为需要从公网访问的内网服务的地址和端口。
  • remotePort 表示在 frp 服务端监听的端口,访问此端口的流量将被转发到本地服务的相应端口。
    启动 frps 和 frpc
  1. 通过 SSH 访问内网机器

使用以下命令通过 SSH 访问内网机器,假设用户名为 test:

ssh -o Port=6000 test@x.x.x.x

frp 将请求发送到 x.x.x.x:6000 的流量转发到内网机器的 22 端口。

多个 SSH 服务复用同一端口

通过使用 tcpmux 类型的代理,您可以实现多个 SSH 服务通过同一端口进行暴露。这种方法还适用于任何支持 HTTP Connect 代理连接方式的客户端,以实现端口的复用。
步骤

  1. 在具有公网 IP 的机器上部署 frps

修改 frps.toml 文件以包含以下内容(这里使用了最简化的配置):

bindPort = 7000
tcpmuxHTTPConnectPort = 5002
  1. 在内网机器 A 上部署 frpc

创建 frpc 配置文件,例如 frpc.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
  1. 在内网机器 B 上部署另一个 frpc

创建 frpc 配置文件,例如 frpc.toml,然后将以下内容添加到配置文件中:

serverAddr = "x.x.x.x"
serverPort = 7000

[[proxies]]
name = "ssh2"
type = "tcpmux"
multiplexer = "httpconnect"
customDomains = ["machine-b.example.com"]
localIP = "127.0.0.1"
localPort = 22
  1. 通过 SSH ProxyCommand 访问内网机器 A

使用 SSH ProxyCommand 访问内网机器 A&