frp-0.59-点对点和安全暴露服务-二合一配置案例：

背景

目前需要使用自建的内网穿透工具，就选择了 frp，frp 也分很多版本，我之前使用的是 frp_0.51.2_windows_386 版本，现在升级版本为 frp_0.59.0_windows_amd64，主要使用这个 frp 功能有，点对点内网穿透（p2p）、安全地暴露内网服务 和 服务端作为代理进行穿透的三种方式。准备使用点对点或安全的暴露服务方式，之前使用的一直是服务器代理的方式进行内网穿透，这样直接将自己的机器暴露在公网上，非常不安全，有一次我检查服务器日志，发现很多请求我服务器暴露的这个端口，意识到可能被盯上了，就改换了其他端口。现在加强安全意识，就换用点对点或者安全的暴露方式，攻击者的扫描和入侵。建议不使用服务提供的默认端口，自行进行修改。

目前使用的用途有：远程连接 window 电脑、web 服务暴露在公网上。

一、准备工作

官方下载地址：https://github.com/fatedier/frp/releases/tag/v0.59.0

这里我提供两个下载地址：

123 网盘：https://www.123pan.com/s/tB5A-psnYd.html? 提取码: TA7T

蓝奏网盘：https://nxg.lanzoul.com/b03ivhzl1i 密码：7ijd

frp_0.59.0_linux_amd64.tar.gz ====》用于上传到 linux 服务器上

frp_0.59.0_windows_amd64.zip ====》 用于在 window 本地启动的

注意：下载 linux 版的会 window 系统会报毒，自行在设置中放行 (排除) 下载目录即可下载，并上传到服务器上。
在官网下载同样是会报毒的，可以自行验证。

二、配置服务端

2.1 上传 frp 和配置 frp

先上传 frp_0.59.0_linux_amd64.tar.gz 压缩包到自定义目录下，这里我以 /root/frp 目录为例：

Copy
tar -zxvf frp_0.59.0_linux_amd64.tar.gz

位置：/root/frp/frp_0.59.0_linux_amd64

frps.toml 修改配置端口:

Copy
bindPort = 7002

至此服务配置就配置好了

2.2 安装 systemd

Copy
yum install systemd

2.3 创建并编辑 frps.service 文件（使用 vim 编辑器）

Copy
vim /etc/systemd/system/frps-59.service

2.4 写入内容

Copy
[Unit]
# 服务名称，可自定义
Description = frp_0.59.0_linux_amd64 server
After = network.target syslog.target
Wants = network.target

[Service]
Type = simple
# 启动frps的命令，需修改为您的frps的安装路径
ExecStart =/root/frp/frp_0.59.0_linux_amd64/frps -c /root/frp/frp_0.59.0_linux_amd64/frps.toml

[Install]
WantedBy = multi-user.target

注意：/root/frp/frp_0.59.0_linux_amd64/frps 对应的 frps 文件，也就是你上传到服务器后，并解压后的一个文件。

上面三步可以参考：https://gofrp.org/docs/setup/systemd/

然后刷新一下：

Copy
systemctl daemon-reload
# 如果上面的命令没有生效，就使用下面的命令试一试
systemctl daemon-reexec

2.5 启动和关闭命令

不是 root 管理员权限时，需要使用到 sudo，如你是管理员权限，就可以不是 sudo 命令，直接 systemctl start frps-59

Copy

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

设置开机自启：

Copy
sudo systemctl enable frps-59

三、配置客户端

安全暴露服务

1、被访问者机器（目标机器）

解压 frp_0.59.0_windows_amd64.zip 文件：

位置：D:\programTool\frp\frp_0.59.0_windows_amd64

frpc.toml 修改配置：

Copy
serverAddr = "服务器公网ip地址"
serverPort = 7002

# 安全暴露服务
[[proxies]]
name = "rdp_stcp_test"
type = "stcp"
# 只有与此处设置的 secretKey 一致的用户才能访问此服务
secretKey = "7G5Y2QW9X312PYWQWE67"
localIP = "127.0.0.1"
localPort = 3389

# 点对点访问服务
[[proxies]]
name = "p2p_rdp_test"
type = "xtcp"
# 只有共享密钥 (secretKey) 与服务器端一致的用户才能访问该服务
secretKey = "AAAA5Y2QW9X312PYWQWE67"
localIP = "127.0.0.1"
localPort = 3389

这是要被访问的机器，即 目标机器

cmd 启动命令：

Copy
.\frpc.exe -c .\frpc.toml

2、访问者机器

解压 frp_0.59.0_windows_amd64.zip 文件：

位置：D:\tool\technology\frp\frp_0.59.0_windows_amd64

修改 frpc.toml 配置：

Copy
serverAddr = "101.133.238.75"
serverPort = 7002

# 安全暴露服务
[[visitors]]
name = "rdp_tcp_visitor"
type = "stcp"
# 要访问的 stcp 代理的名字
serverName = "rdp_stcp_test"
# 只有与此处设置的 secretKey 一致的用户才能访问此服务
secretKey = "7G5Y2QW9X312PYWQWE67"
bindAddr = "127.0.0.1"
bindPort = 7003

# 点对点访问服务
[[visitors]]
name = "p2p_rdp_visitor"
type = "xtcp"
# 要访问的 P2P 代理的名称
serverName = "p2p_rdp_test"
secretKey = "AAAA5Y2QW9X312PYWQWE67"
# 绑定本地端口以访问 SSH 服务
bindAddr = "127.0.0.1"
bindPort = 7004
# 如果需要自动保持隧道打开，将其设置为 true
keepTunnelOpen = true

这是访问者的机器，即，从这台机器去访问上一台配置好的机器。

cmd 启动命令：

Copy
.\frpc.exe -c .\frpc.toml

访问者机器 连接 被访问者

安全暴露服务：

使用 window 自带的远程连接工具：127.0.0.1:7003 输入电脑用户名和密码，即可访问目标机器

点对点访问服务:

使用 window 自带的远程连接工具：127.0.0.1:7004 输入电脑用户名和密码，即可访问目标机器