内网穿透 篇三:通过 frp 内网穿透 实现公网访问内网服务
本文首发于只抄博客,欢迎点击原文链接了解更多内容。
前言
frp 是一个专注于内网穿透的高性能的反向代理应用,支持 TCP、UDP、HTTP、HTTPS 等多种协议,且支持 P2P 通信。可以将内网服务以安全、便捷的方式通过具有公网 IP 节点的中转暴露到公网。
与 Tailscale、ZeroTier 之类的异地组网工具不同,frp 是把内网的服务穿透在公网上,让所有人都可以访问。因此,部署 frp 的前提是有一台具有公网 IP 的服务器。
下载
首先,我们需要去 Github 的下载最新版本的 frp,根据自身的系统以及架构下载正确的版本,常见有 amd64、arm64 等,下载时注意区分。下载完成后,分为 frps 与 frpc 文件,其中 frps 为服务端,用于具有公网 IP 的服务器;frpc 为客户端,用于内网服务器,而对应 toml 文件则是其配置文件。
从 v0.52.0 版本开始,frp 支持 toml, yaml, json 作为配置文件,ini 将被废弃
服务端
基本配置
将 frps 文件上传至
/opt/frp
目录,并添加运行权限chmod +x frps
创建一个配置文件
vim /opt/frp/frps.yaml
bindPort: frp 服务端监听端口
token: 用于验证客户端
webServer: frp 面板配置
更多配置项可以查看官方文档 - 服务端配置
bindPort: 7000
auth:
token: password
webServer:
addr: 0.0.0.0
port: 7500
user: admin
password: password
通过
./frps -c ./frps.yaml
运行,输出以下内容就代表运行成功
2024-04-16 19:00:08.773 [I] [frps/root.go:105] frps uses config file: ./frps.yaml
2024-04-16 19:00:09.022 [I] [server/service.go:237] frps tcp listen on 0.0.0.0:7000
2024-04-16 19:00:09.022 [I] [frps/root.go:114] frps started successfully
2024-04-16 19:00:09.023 [I] [server/service.go:350] dashboard listen on 0.0.0.0:7500
访问 7500 端口,就可以进入 frp 面板了
服务端完成以上配置即可,具体穿透的端口只需要在客户端配置
后台运行
通过
./frps -c ./frps.yaml
运行,一般只用于测试,实际使用还需要使用 systemd 来让 frp 在后台运行创建
/etc/systemd/system/frps.service
文件,用于描述 frps 服务的配置
[Unit]
Description=frps service
After=network.target NetworkManager.service systemd-networkd.service iwd.service
[Service]
Type=simple
Restart=always
ExecStart=/opt/frp/frps -c /opt/frp/frps.yaml
[Install]
WantedBy=multi-user.target
启动 frps 服务
systemctl enable frps
systemctl start frps
客户端
基本配置
将 frpc 文件上传至
/opt/frp
目录,并添加运行权限chmod +x frpc
创建一个配置文件
vim /opt/frp/frpc.yaml
serverAddr: 服务器的公网 IP
serverPort: 服务器 frp 端口
token: 与 frps.yaml 保持一致
proxies: 需要穿透的服务,以 AList 为例
更多配置项可以查看官方文档 - 客户端配置
serverAddr: x.x.x.x
serverPort: 7000
auth:
token: password
proxies:
- name: AList
type: tcp
localPort: 5244
remotePort: 5244
通过
./frpc -c ./frpc.yaml
运行,输出以下内容就代表运行成功
2024-04-16 19:13:44.111 [I] [sub/root.go:142] start frpc service for config file [./frpc.yaml]
2024-04-16 19:13:44.112 [I] [client/service.go:294] try to connect to server...
2024-04-16 19:13:44.549 [I] [client/service.go:286] [b997b2af10c6f8dd] login to server success, get run id [b997b2af10c6f8dd]
2024-04-16 19:13:44.551 [I] [proxy/proxy_manager.go:173] [b997b2af10c6f8dd] proxy added: [AList]
2024-04-16 19:13:44.693 [I] [client/control.go:170] [b997b2af10c6f8dd] [AList] start proxy success
再次打开 frp 面板,就可以看到,Client Counts 变为 1
点击左侧的 Proxies -> TCP,还可以看到具体的每一项,此时,访问服务器的 5244 端口,就可以直接打开 AList
后台运行
通过
./frpc -c ./frpc.yaml
运行,一般只用于测试,实际使用还需要使用 systemd 来让 frp 在后台运行创建
/etc/systemd/system/frpc.service
文件,用于描述 frpc 服务的配置
[Unit]
Description=frpc service
After=network.target NetworkManager.service systemd-networkd.service iwd.service
[Service]
Type=simple
Restart=always
ExecStart=/opt/frp/frpc -c /opt/frp/frpc.yaml
[Install]
WantedBy=multi-user.target
启动 frpc 服务
systemctl enable frpc
systemctl start frpc
轩辕昱诚
校验提示文案
轩辕昱诚
校验提示文案
003大叔
校验提示文案
mia0x75
校验提示文案
wintsa123
校验提示文案
抽奖不会中
校验提示文案
liyongc
校验提示文案
liyongc
校验提示文案
抽奖不会中
校验提示文案
wintsa123
校验提示文案
mia0x75
校验提示文案
003大叔
校验提示文案
轩辕昱诚
校验提示文案
轩辕昱诚
校验提示文案