FRP内网穿透

发布于:2025-09-10 ⋅ 阅读:(26) ⋅ 点赞:(0)

什么是 FRP?

FRP(Fast Reverse Proxy) 是一款由国人开发的高性能反向代理应用,主要用于内网穿透。它可以让位于 内网或防火墙后的机器,通过一台有公网 IP 的服务器,安全地暴露服务(HTTP、HTTPS、SSH、RDP 等)到公网。


 核心原理

FRP 分为 服务端(frps)客户端(frpc)

  • frps:运行在公网服务器上,拥有公网 IP。

  • frpc:运行在内网机器上,主动连接 frps,并将本地端口映射到公网服务器。

这样就能实现:

  • 在公司/家庭内网运行的服务(如 Web、MySQL、SSH),可以从外网访问。

  • 不需要做复杂的 NAT、端口映射或运营商支持。


常见使用场景

  1. 内网穿透

    • 家庭 NAS、网站、博客对外访问。

    • 远程访问家里电脑的桌面(RDP)、SSH、MySQL。

  2. 远程办公

    • 远程调试公司内网服务,免去 VPN。

  3. 反向代理

    • 将多个内网服务映射到不同的公网端口或域名。

  4. 安全隧道

    • 支持 TLS 加密、身份验证,适合需要安全访问的场景。


FRP 的优势

高性能:基于 Go 语言开发,跨平台,性能优秀。

安全:支持 TLS、密码认证、Token 校验。

多协议支持

TCP

UDP

HTTP / HTTPS

STCP(安全 TCP,仅在内网可见)

XTCP(点对点直连,降低延迟)

域名映射:支持自定义域名访问内网 Web 服务。

监控界面:自带 Web UI,可以查看连接情况。


FRP部署

前期准备 

拥有公网ip的服务器 阿里云,腾讯云,以及其他拥有公网ip的服务器
需要内网穿透的服务器 这里可以是家庭 NAS、本地服务器

frp下载地址
Releases · fatedier/frp · GitHub

服务端配置(拥有公网IP的服务器)

tar -zxvf frp_0.61.1_linux_amd64.tar.gz

mkdir -p /usr/local/frp/

mv frp_0.61.1_linux_amd64/* /usr/local/frp

文件配置

cd /usr/local/frp/
vim frps.toml

[common]
# 服务端绑定的端口,用于客户端与服务端通信的核心端口。需要确保该端口对外网开放。
bind_port = 7000

# 密钥,是自定义的,想怎么填写就怎么填写,但客户端和服务端必须保持一致,确保安全通信。
token = "Frp20250905"

# 仪表板端口,用于查看 frps 服务端的运行状态和管理客户端连接。访问地址:服务器IP:7600
dashboard_port = 7600

启动服务端

./frps -c frps.toml

访问可视化web界面 公网IP+7600端口

将frps服务添加到systemd管理

cat <<EOF > /etc/systemd/system/frps.service
[Unit]
Description=FRP Server
After=network-online.target
Wants=network-online.target

[Service]
WorkingDirectory=/usr/local/frp
ExecStart=/usr/local/frp/frps -c /usr/local/frp/frps.toml
Environment=FRP_LOG_LEVEL=info
Restart=always
RestartSec=5s
StandardOutput=journal
StandardError=journal

[Install]
WantedBy=multi-user.target
EOF

systemctl daemon-reload

systemctl start frps

systemctl enable frps

客户端配置(需要内网穿透的服务器)

tar -zxvf frp_0.61.1_linux_amd64.tar.gz

mkdir -p /usr/local/frp/

mv frp_0.61.1_linux_amd64/* /usr/local/frp

文件配置

以下配置仅适用于6.0及以下版本

cd /usr/local/frp/
vim frpc.toml

server_addr = "x.x.x.x"   # 你的 frps 服务器公网 IP
server_port = 7000        # frps 服务监听端口
token = "Frp20250905"

[[proxies]]      #这里自定义
name = "qwe"     #这里自定义
type = "tcp"              #这里写tcp协议
local_ip = "127.0.0.1"     #这里使用本机IP不用更改
local_port = 80            #这里写自己需要暴露的端口
remote_port = 9090         #这里写自己需要映射的端口

以下配置使用于6.0以上版本

# 服务端地址和端口
serverAddr = "x.x.x.x"   # 你的 frps 服务器公网 IP
serverPort = 7000        # frps 服务监听端口

# 认证(如果服务端启用了 token)
auth.method = "token"
auth.token = "Frp20250905"

# 代理配置
[[proxies]]
name = "test"
type = "tcp"
localIP = "127.0.0.1"
localPort = 80
remotePort = 9090

启动客户端

./frpc -c frpc.toml

查看服务端管理界面配置情况

将frpc服务添加到systemd管理

cat <<EOF > /etc/systemd/system/frpc.service
[Unit]
Description=FRP Server
After=network-online.target
Wants=network-online.target

[Service]
WorkingDirectory=/usr/local/frp
ExecStart=/usr/local/frp/frpc -c /usr/local/frp/frpc.toml
Environment=FRP_LOG_LEVEL=info
Restart=always
RestartSec=5s
StandardOutput=journal
StandardError=journal

[Install]
WantedBy=multi-user.target
EOF

systemctl daemon-reload

systemctl  start frpc

systemctl  enable frpc

现在通过公网IP+9090端口就可以访问内网80端口的服务了


网站公告

今日签到

点亮在社区的每一天
去签到