使用FRP搭建内网穿透工具

什么是FRP

frp 是什么?

frp 是一款高性能的反向代理应用,专注于内网穿透。它支持多种协议,包括 TCP、UDP、HTTP、HTTPS 等,并且具备 P2P 通信功能。使用 frp,您可以安全、便捷地将内网服务暴露到公网,通过拥有公网 IP 的节点进行中转。

为什么选择 frp?

通过在具有公网 IP 的节点上部署 frp 服务端,您可以轻松地将内网服务穿透到公网,并享受以下专业特性:

  • 多种协议支持:客户端服务端通信支持 TCP、QUIC、KCP 和 Websocket 等多种协议。
  • TCP 连接流式复用:在单个连接上承载多个请求,减少连接建立时间,降低请求延迟。
  • 代理组间的负载均衡。
  • 端口复用:多个服务可以通过同一个服务端端口暴露。
  • P2P 通信:流量不必经过服务器中转,充分利用带宽资源。
  • 客户端插件:提供多个原生支持的客户端插件,如静态文件查看、HTTPS/HTTP 协议转换、HTTP、SOCKS5 代理等,以便满足各种需求。
  • 服务端插件系统:高度可扩展的服务端插件系统,便于根据自身需求进行功能扩展。
  • 用户友好的 UI 页面:提供服务端和客户端的用户界面,使配置和监控变得更加方便。

官网:https://gofrp.org/zh-cn/docs/overview/

开源地址:https://github.com/fatedier/frp/releases

安装步骤

1、首先需要备一个具备公网IP 的云服务器

2、然后在该服务器上安装FRP 服务端

Bash 复制代码
# 使用wget命令下载服务端压缩包
wget https://github.com/fatedier/frp/releases/download/v0.65.0/frp_0.65.0_linux_amd64.tar.gz

# 解压到 /usr/local
tar -zxvf frp_0.59.0_linux_amd64.tar.gz -C /usr/local

进入 /etc/systemd/system/ 目录建立新的文件 frps.service 配置成Systemd服务

frps.service 中填写如下内容:

Bash 复制代码
# frps.service
[Unit]
Description=frps service
After=network.target syslog.target
Wants=network.target
[Service]
Type=simple
#Restart=always
Restart=on-failure
RestartSec=5s
#启动服务的命令
ExecStart=/usr/local/frp_0.65.0_linux_amd64/frps -c /usr/local/frp_0.65.0_linux_amd64/frps.toml
[Install]
WantedBy=multi-user.target

注意,云服务器中要配置安全规则,放行7000,7500,7001, 6000等端口。

然后配置frps.toml文件

Bash 复制代码
[common]
bind_port = 7000
kcp_bind_port = 7000
vhost_https_port = 7001
dashboard_addr = 0.0.0.0
dashboard_port = 7500
dashboard_user = admin
dashboard_pwd = admin
log_file = ./frps.log
log_level = info
log_max_days = 3
authentication_timeout = 900
token=mowangmowang
allow_ports = 2000-3000,3001,3003,4000-50000,3362
max_pool_count = 50
max_ports_per_client = 0

最后设置系统自动启动frp

Bash 复制代码
# 设为开机自启
sudo systemctl enable frps
# 启动frp
sudo systemctl start frps
# 查看启动日志 
sudo systemctl status frps 
# 重启frp服务
sudo systemctl restart frps 
# 关闭frp服务
sudo systemctl stop frps 

3、配置需要被内网穿透的服务器

同样在**/etc/systemd/system/** 目录建立新的文件 frpc.service 配置成Systemd服务

配置内容如下:

Bash 复制代码
# frps.service
[Unit]
Description=frpc service
After=network.target syslog.target
Wants=network.target
[Service]
Type=simple
#Restart=always
Restart=on-failure
RestartSec=5s
#启动服务的命令
ExecStart=/usr/local/frp_0.65.0_linux_amd64/frpc -c /usr/local/frp_0.65.0_linux_amd64/frpc.toml
[Install]
WantedBy=multi-user.target

然后根据需求映射需要穿透的端口。这样以ssh工具为例,ssh 使用服务器的22号端口。所以这里我要映射内网的22端口到云服务器的6000端口。

配置 frpc.toml 文件,内容如下:

Bash 复制代码
[common]
server_addr = 14.103.242.86
server_port = 7000
token = "mowangmowang"

[[proxies]]
name = "web"
type = "tcp"
local_ip = "127.0.0.1"
local_port  = 22
remote_port  = 6000

其中14.103.242.86 为云服务的公网地址。

local_port = 22 配置内网服务器要映射出去的端口。

remote_port = 6000 配置云服务器对应的端口。

这样配置后,意味着访问云服务器6000端口的流量会被转发到内网服务器的22号端口。

最后设置frp自动启动。

Bash 复制代码
# 设为开机自启
sudo systemctl enable frpc
# 启动frp
sudo systemctl start frpc
# 查看启动日志 
sudo systemctl status frpc
# 重启frp服务
sudo systemctl restart frpc
# 关闭frp服务
sudo systemctl stop frpc 

使用映射的ssh

使用如下命令来通过ssh访问内网服务器:

Bash 复制代码
ssh -o Port=6000 ws@14.103.242.86

其中ws 为内网服务器的用户名

14.103.242.86 为云服务器的公网IP。

获取详细的错误日志

这是最关键的第一步,系统日志通常会直接告诉您失败的原因。

Bash 复制代码
sudo journalctl -u frps -n 50 --no-pager

或者查看系统日志:

Bash 复制代码
sudo tail -n 50 /var/log/syslog | grep frps

参考

https://blog.loli.wang/blog/2024-08-17-frpinit/doc/

相关推荐
SoStraw5 天前
无公网IP远程访问设备,不用frp也能实现99.9%连通率
frp·内网穿透·p2p·远程访问·webrpc·无公网ip·file2file
ZeroNews内网穿透5 天前
企业 NAS 本地目录安全对外公网访问方案:ZeroNews LFS 文件空间特性与落地场景
内网穿透·权限管理·文件共享·nas·公网访问·企业文件服务器·zeronews lfs
ZeroNews内网穿透6 天前
内网部署 Halo 建站,用 ZeroNews 免费内网穿透安全发布到公网(无公网 IP 也能 HTTPS 访问)
docker·https·内网穿透·nas·反向代理·halo·zeronews
微学AI9 天前
飞牛 NAS 部署 prompts.chat:自建提示词库、导入社区内容,再配置固定公网访问
数据库·内网穿透
TechWJ10 天前
没有公网 IP 也想远程连 PostgreSQL?从本地数据库到固定 TCP 地址完整配置
大数据·数据库·网络安全·postgresql·内网穿透
Dachui_112211 天前
内网穿透 Webhook 告警实战:客户端离线、应用探测、资源删除全覆盖
运维·远程工作·内网穿透·devops·webhook·服务器监控·应用探测
倔强的石头10614 天前
远程运维环境搭建实战:节点小宝实现远程桌面 + 异地组网 + 文件挂载 + 内网穿透(附详细配置步骤)
内网穿透·p2p·远程桌面·远程运维·异地组网·wake-on-lan·工具教程
专家大圣16 天前
Grafana 远程访问实战:本地 3000 端口跑通后,再配置固定公网入口
网络·内网穿透
jackletter1 个月前
使用 frp 自建服务 内网穿透实现远程访问局域网电脑
frp·内网穿透·远程桌面
专家大圣1 个月前
给自己搭一个 PDF 工具站:Stirling-PDF 部署、格式转换与远程访问实战
网络·pdf·内网穿透