首页 > 其他分享 >FRP实现内网穿透

FRP实现内网穿透

时间:2025-01-08 23:04:17浏览次数:3  
标签:frps 实现 frp sudo 穿透 FRP frpc 服务器

文章目录

一、FRP 基础概念

FRP(Fast Reverse Proxy)是一款高性能的反向代理应用,主要用于内网穿透,可以将内网中的服务暴露到公网。其核心组件包括:

  • frps(FRP Server):部署在有公网 IP 的服务器上,负责管理和转发客户端的连接。
  • frpc(FRP Client):部署在需要暴露服务的内网机器上,通过 frps 进行连接和转发。

二、系统架构与角色定位

  • A:本地 Windows 机器,可能需要通过中转服务器访问目标服务器 C。
  • B:中转服务器,运行 CentOS,IP 为 117.62.206.56,部署 frps
  • C:目标服务器,运行 Ubuntu,部署 frpc,需要将其服务通过 frps 暴露给 A。

三、下载与解压 FRP

1. 在 B 服务器(CentOS)上下载 FRP Server

# 登录到 B 服务器
ssh your_user@117.62.206.56

# 下载 FRP
wget https://github.com/fatedier/frp/releases/download/v0.61.0/frp_0.61.0_linux_amd64.tar.gz

# 解压压缩包
tar -zxvf frp_0.61.0_linux_amd64.tar.gz

# 移动到 /usr/local/frp 目录
sudo mkdir -p /usr/local/frp
sudo mv frp_0.61.0_linux_amd64/* /usr/local/frp/

# 切换到 frp 目录
cd /usr/local/frp

在 B 服务器上的目录结构如下:

.
├── /usr/local/frp/
│   ├── frps
│   ├── frps.toml
│   └── logs/
│       └── frps.log

2. 在 C 服务器(Ubuntu)上下载 FRP Client

# 登录到 C 服务器
ssh your_user@your_ubuntu_server_ip

# 下载 FRP
wget https://github.com/fatedier/frp/releases/download/v0.61.0/frp_0.61.0_linux_amd64.tar.gz

# 解压压缩包
tar -zxvf frp_0.61.0_linux_amd64.tar.gz

# 移动到 /usr/local/frp 目录
sudo mkdir -p /usr/local/frp
sudo mv frp_0.61.0_linux_amd64/* /usr/local/frp/

# 切换到 frp 目录
cd /usr/local/frp

在 C 服务器上的目录结构如下:

.
├── /usr/local/frp/
│   ├── frpc
│   ├── frpc.toml
│   └── logs/
│       └── frpc.log

四、配置 FRP

1. 配置 frps(在 B 服务器)

/usr/local/frp 目录下创建或编辑 frps.toml 配置文件:

bindPort = 7000

>>>>>>>>>>>>>>>>下面配置不要用,我自己的参考备注,写法还有点问题,你也可以自己调一下>>>>>>>>>>>>>>>>

# /usr/local/frp/frps.toml

[common]
bind_port = 7000                # frps 监听的端口
dashboard_port = 7500           # FRP Dashboard 管理界面端口(可选)
dashboard_user = "admin"        # Dashboard 用户名
dashboard_pwd = "your_secure_password"  # Dashboard 密码
vhost_http_port = 8080          # HTTP 类型的虚拟主机端口(可选)
vhost_https_port = 8443         # HTTPS 类型的虚拟主机端口(可选)

# 日志相关配置
log_file = "/usr/local/frp/logs/frps.log"    # 指定日志文件的位置
log_level = "info"                            # 可选值: "trace", "debug", "info", "warn", "error"
log_max_days = 3                              # 日志文件保留的最大天数

# 可选:开启 TLS
# enable_tls = true

<<<<<<<<<<<<<<<<上面配置不要用,我自己的参考备注,写法还有点问题,你也可以自己调一下<<<<<<<<<<<<<<<

2. 配置 frpc(在 C 服务器)

/usr/local/frp 目录下创建或编辑 frpc.toml 配置文件:

serverAddr = "117.62.206.56"  # 此处换成自己的IP即可
serverPort = 7000

[[proxies]]
name = "test-tcp"
type = "tcp"
localIP = "127.0.0.1"
localPort = 22
remotePort = 6000

>>>>>>>>>>>>>>>>下面配置不要用,我自己的参考备注,写法还有点问题,你也可以自己调一下>>>>>>>>>>>>>>>>

# /usr/local/frp/frpc.toml

[common]
server_addr = "117.62.206.56"    # frps 服务器的 IP 地址
server_port = 7000               # frps 服务器监听的端口
# 日志相关配置
log_file = "/usr/local/frp/logs/frpc.log"
log_level = "info"    # 可以是 "trace", "debug", "info", "warn", "error"
log_max_days = 3      # 日志保存的最大天数

# 示例:将 C 服务器的 SSH 服务通过 frps 暴露
[ssh]
type = "tcp"
local_ip = "127.0.0.1"
local_port = 22
remote_port = 6000               # A 通过 B 的 6000 端口访问 C 的 SSH

# 示例:将 C 服务器的 Web 服务通过 frps 暴露
[web]
type = "http"
local_port = 80
custom_domains = ["domain.com"]

<<<<<<<<<<<<<<<<上面配置不要用,我自己的参考备注,写法还有点问题,你也可以自己调一下<<<<<<<<<<<<<<<

3. 端口关系说明

  • frps 监听端口:7000(在 B 服务器开放)
  • frps Dashboard 端口:7500(可选,需开放)
  • A 访问 C 的 SSH 端口:通过 B 服务器的 6000 端口
  • A 访问 C 的 Web 服务:通过 B 服务器的 8080(HTTP)或 8443(HTTPS)端口

五、配置安全组与防火墙

1. 在 B 服务器(CentOS)上配置防火墙

假设使用 firewalld

# 开放 frps 监听端口 7000
sudo firewall-cmd --permanent --add-port=6000/tcp

# 开放 frps 监听端口 7000
sudo firewall-cmd --permanent --add-port=7000/tcp

# 开放 Dashboard 端口 7500(如果启用)
sudo firewall-cmd --permanent --add-port=7500/tcp

# 开放 HTTP 和 HTTPS 虚拟主机端口(如果配置)
sudo firewall-cmd --permanent --add-port=8080/tcp
sudo firewall-cmd --permanent --add-port=8443/tcp

# 重新加载防火墙规则
sudo firewall-cmd --reload

2. 在 C 服务器(Ubuntu)上配置防火墙

假设使用 ufw

# 启用 ufw(如果未启用)
sudo ufw enable

# 允许 frpc 连接到 frps(通常不需要额外开放,因为是出站连接)

# 允许本地需要暴露的服务端口(如 SSH 和 HTTP)
sudo ufw allow 22/tcp
sudo ufw allow 80/tcp

# 重新加载 ufw 规则
sudo ufw reload

3. 安全组配置(如果 B 服务器在云服务商上)

确保在云服务商的控制台中,为 B 服务器的安全组添加以下入站规则:

  • TCP 7000:允许 A 连接到 B 的 frps
  • TCP 7500:允许访问 Dashboard(如果需要)
  • TCP 8080、8443:允许 HTTP/HTTPS 流量(根据需要)
  • 在这里插入图片描述

六、设置 FRP 为系统服务

1. 在 B 服务器(CentOS)上设置 frps 为系统服务

创建 frps.service 文件在 /etc/systemd/system/ 目录下:

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

添加以下内容:

[Unit]
Description=FRP Server Service
After=network.target

[Service]
Type=simple
ExecStart=/usr/local/frp/frps -c /usr/local/frp/frps.toml
Restart=on-failure
User=root
# 如果不想以 root 用户运行,可以创建一个专用用户,如 frp

[Install]
WantedBy=multi-user.target

然后,重新加载 systemd 并启动服务:

# 重新加载 systemd
sudo systemctl daemon-reload

# 启动 frps 服务
sudo systemctl start frps

# 设置开机自启
sudo systemctl enable frps

# 检查服务状态
sudo systemctl status frps

在 B 服务器上的目录结构如下:

.
├── /usr/local/frp/
│   ├── frps
│   ├── frps.toml
│   └── logs/
│       └── frps.log
└── /etc/systemd/system/
    └── frps.service

2. 在 C 服务器(Ubuntu)上设置 frpc 为系统服务

创建 frpc.service 文件在 /etc/systemd/system/ 目录下:

sudo vim /etc/systemd/system/frpc.service

添加以下内容:

[Unit]
Description=FRP Client Service
After=network.target

[Service]
Type=simple
ExecStart=/usr/local/frp/frpc -c /usr/local/frp/frpc.toml
Restart=on-failure
User=root
# 如果不想以 root 用户运行,可以创建一个专用用户,如 frp

[Install]
WantedBy=multi-user.target

然后,重新加载 systemd 并启动服务:

# 重新加载 systemd
sudo systemctl daemon-reload

# 启动 frpc 服务
sudo systemctl start frpc

# 设置开机自启
sudo systemctl enable frpc

# 检查服务状态
sudo systemctl status frpc

在 C 服务器上的目录结构如下:

.
├── /usr/local/frp/
│   ├── frpc
│   ├── frpc.toml
│   └── logs/
│       └── frpc.log
└── /etc/systemd/system/
    └── frpc.service

七、在 A(Windows)访问 C 服务器的服务

1. 访问 C 服务器的 SSH

假设你在 A 上使用 SSH 客户端(如 PuTTY),可以连接到 B 服务器的 IP 和远程端口 6000:

ssh -p 6000 username@117.62.206.56

其中117.62.206.56B的IP,usernameC的用户名

这将通过 FRP 隧道连接到 C 服务器的 SSH 服务。

2. 访问 C 服务器的 Web 服务

在浏览器中访问 http://117.62.206.56:8080,即可访问 C 服务器上通过 FRP 暴露的 Web 服务。

八、删除所有配置

在某些情况下,您可能需要完全移除 FRP 的配置。以下是删除配置的步骤:

1. 停止并禁用系统服务

在 B 服务器(CentOS)上:
# 停止 frps 服务
sudo systemctl stop frps

# 禁用 frps 开机自启
sudo systemctl disable frps

# 移除 frps.service 文件
sudo rm /etc/systemd/system/frps.service

# 重新加载 systemd
sudo systemctl daemon-reload
在 C 服务器(Ubuntu)上:
# 停止 frpc 服务
sudo systemctl stop frpc

# 禁用 frpc 开机自启
sudo systemctl disable frpc

# 移除 frpc.service 文件
sudo rm /etc/systemd/system/frpc.service

# 重新加载 systemd
sudo systemctl daemon-reload

2. 删除 FRP 文件和目录

在 B 服务器(CentOS)上:
# 删除 FRP 目录
sudo rm -rf /usr/local/frp

# 删除 FRP 日志(如果存在于其他位置)
# sudo rm -rf /path/to/other/logs
在 C 服务器(Ubuntu)上:
# 删除 FRP 目录
sudo rm -rf /usr/local/frp

# 删除 FRP 日志(如果存在于其他位置)
# sudo rm -rf /path/to/other/logs

3. 移除防火墙规则

在 B 服务器(CentOS)上:
# 移除 frps 监听端口 6000
sudo firewall-cmd --permanent --remove-port=6000/tcp

# 移除 frps 监听端口 7000
sudo firewall-cmd --permanent --remove-port=7000/tcp

# 移除 Dashboard 端口 7500(如果启用)
sudo firewall-cmd --permanent --remove-port=7500/tcp

# 移除 HTTP 和 HTTPS 虚拟主机端口
sudo firewall-cmd --permanent --remove-port=8080/tcp
sudo firewall-cmd --permanent --remove-port=8443/tcp

# 重新加载防火墙规则
sudo firewall-cmd --reload
在 C 服务器(Ubuntu)上:
# 移除允许的服务端口
sudo ufw delete allow 22/tcp
sudo ufw delete allow 80/tcp

# 如果有其他规则,按需删除
# sudo ufw delete allow <port>/tcp

# 重新加载 ufw 规则
sudo ufw reload

4. 移除安全组规则(如果适用)

如果 B 服务器位于云服务商上,确保在云服务商的控制台中,删除之前添加的安全组入站规则:

  • TCP 7000
  • TCP 7500
  • TCP 8080、8443

九、注意事项

  1. 安全性:确保 FRP 的配置文件中使用了强密码,尤其是 Dashboard 部分。建议开启 TLS 加密,提升传输安全性。
  2. 日志管理:FRP 会生成日志文件,您可以在配置文件中配置日志路径和日志级别,以便进行问题排查。
  3. 更新 FRP:定期检查 FRP 的更新,获取最新的功能和安全补丁。
  4. 监控:使用 FRP Dashboard 可以实时监控连接状态和流量,帮助您了解 FRP 的运行情况。

十、完整示例配置文件

frps.toml(B 服务器)

# /usr/local/frp/frps.toml

[common]
bind_port = 7000
dashboard_port = 7500
dashboard_user = "admin"
dashboard_pwd = "your_secure_password"
vhost_http_port = 8080
vhost_https_port = 8443
# enable_tls = true

frpc.toml(C 服务器)

# /usr/local/frp/frpc.toml

[common]
server_addr = "117.62.206.56"
server_port = 7000

[ssh]
type = "tcp"
local_ip = "127.0.0.1"
local_port = 22
remote_port = 6000

[web]
type = "http"
local_port = 80
custom_domains = ["yourdomain.com"]

请根据您的实际需求调整配置文件中的端口和域名。

十一、总结

通过上述步骤,您可以在 A(本地 Windows)、B(中转服务器 CentOS)和 C(目标服务器 Ubuntu)之间配置 FRP,实现内网穿透和服务的远程访问。同时,指南中提供了完整的删除操作,确保您能够在需要时彻底移除 FRP 配置。请在配置过程中注意安全性,合理设置防火墙和安全组,保障系统的安全运行。

标签:frps,实现,frp,sudo,穿透,FRP,frpc,服务器
From: https://blog.csdn.net/weixin_51524504/article/details/145008761

相关文章