FRP 内网穿透
原创2025/6/6大约 4 分钟
Azure 虚拟机部署
在某些网络环境下,Azure 访问速度可能较慢。
创建 Azure 虚拟机
- 在校大学生可以在 Azure 平台上申请学生认证,申请通过后可以获得 100$ 的试用额度(有效期一年)
- 在首页选择新建资源->创建虚拟机
- 选择你的订阅和合适的区域(中国用户建议选择 Asia Pacific 中的 East Asia)
- 小型内网穿透虚拟机建议选择较小的镜像文件,如 Ubuntu Minimal 20.04 LTS
- 虚拟机大小选择 Standard_B1ls - 1 vcpu、0.5 GiB 内存 (US$5.33/月)
- 输入你的密钥对名称和公共入站端口(初次配置虚拟机建议开放 22 端口,并使用 SSH 进行连接)
- 其他选项按照需要进行配置即可,通常默认值即可满足需求
- 点击页面下方的查看+创建,创建虚拟机
连接到虚拟机
- 将创建虚拟机时生成的私钥文件拷贝到你主机的SSH文件夹内
- 使用
ssh -i ~/.ssh/密钥名.pem azureuser@服务器ip
连接到刚才创建好的虚拟机
安装 frp
使用以下命令拉取frp预编译二进制文件。
wget https://github.com/fatedier/frp/releases/download/v0.61.2/frp_0.61.2_linux_amd64.tar.gz
解压二进制文件并进入解压后的文件夹。
tar -zxvf frp_0.61.2_linux_amd64.tar.gz
cd frp_0.61.2_linux_amd64
文件夹内的frps.toml
是frp服务器端的配置文件,打开后将其修改如下。
bindPort = 7000
# 接收http请求
vhostHTTPPort = 7001
# 客户端需要配置对应的token才允许映射
auth.token = "szhh@frp"
subdomainHost = "lionhao.top"
# 仅允许服务器上的指定端口/端口范围 避免滥用端口
allowPorts = [
# 范围指定
{ start = 5000, end = 5100 },
# 单独指定
# { single = 80 },
]
# 仪表盘配置
# The default value is 127.0.0.1. Change it to 0.0.0.0 when you want to access it from a public network.
webServer.addr = "0.0.0.0"
webServer.port = 7002
# dashboard's username and password are both optional
webServer.user = "用户名"
webServer.password = "密码"
bindPort
:frp用于连接内网服务的端口,需要在Azure的虚拟机网络管理中开放该端口auth.token
:用于和客户端鉴权的token,需要与frpc配置中保持一致allowPorts
:允许用于暴露内网服务的端口,对应frpc配置中的remotePort
webServer.addr
:填写0.0.0.0
,即为本机IPwebServer.port
:仪表盘 web 的端口,需要在Azure的虚拟机网络管理中开放该端口才能正常访问
接下来将frps部署为系统服务,在 /etc/systemd/system
下新建一个 frps.service
文件,用于配置 frps
服务。
sudo vim /etc/systemd/system/frps.service
向这个文件中写入以下内容。
[Unit]
# 服务名称,可自定义
Description = frp server
After = network.target syslog.target
Wants = network.target
[Service]
Type = simple
# 启动frps的命令,需修改为你的frps的安装路径
ExecStart = /path/to/frps -c /path/to/frps.toml
[Install]
WantedBy = multi-user.target
接下来可以使用 systemctl
管理 frps 服务。
# 启动frp
sudo systemctl start frps
# 停止frp
sudo systemctl stop frps
# 重启frp
sudo systemctl restart frps
# 查看frp状态
sudo systemctl status frps
# 设置 frps 开机自启动
sudo systemctl enable frps
安装 Caddy
使用官方文档中提供的命令将 Caddy 安装到服务器上。
sudo apt install -y debian-keyring debian-archive-keyring apt-transport-https curl
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/gpg.key' | sudo gpg --dearmor -o /usr/share/keyrings/caddy-stable-archive-keyring.gpg
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/debian.deb.txt' | sudo tee /etc/apt/sources.list.d/caddy-stable.list
sudo apt update
sudo apt install caddy
在Ubuntu系统中使用上述命令安装 Caddy 后,Caddy 会作为系统服务自动启动。
使用 vim 或其他文本编辑器修改 /etc/caddy
目录下的 Caddyfile 文件。
sudo vim /etc/caddy/Caddyfile
向文本文件中添加以下内容。
你的域名1 {
reverse_proxy localhost:5001
}
你的域名2 {
reverse_proxy localhost:5002
}
- 可以为多个域名添加 A 记录,指向该服务器,并使用 Caddy 进行反向代理,将不同域名的流量转发到不同端口的服务上
reverse_proxy
:与 frpc 中设置的remotePort
相同 保存配置文件后,使用sudo systemctl restart caddy
重启 Caddy 服务。
内网 frpc 服务部署
内网服务器为威联通 Nas,已安装 Container Workstation
在 Nas 的一个固定文件夹下,创建 frpc.toml
文件,并写入以下内容。
serverAddr = "100.0.0.0" # 服务器公网 IP
serverPort = 7000
auth.token = "yourtoken" # 鉴权 token
[[proxies]]
name = "dify-web" # 服务名称,穿透成功后可以在服务器的 Dashboard 上看到
type = "tcp"
localIP = "0.0.0.0" # 内网服务端口
localPort = 80 # 内网服务端口
remotePort = 5001
登录 Nas 管理界面,打开 Container Workstation,使用以下配置创建应用程序。
name: frpc
services:
frpc:
restart: always
network_mode: host
volumes:
- /share/Server/frpc/frpc.toml:/etc/frp/frpc.toml
container_name: frpc
image: snowdreamtech/frpc
以上步骤全部配置成功后,即可通过你的域名访问内网服务。