FRP 内网穿透部署教程
部署前提
公网服务器(VPS):需具备公网 IP,用于部署 frps(服务端)。
内网服务器:可访问公网,用于部署 frpc(客户端)。
网络权限:VPS 防火墙需开放 frps 监听端口(如 7000)和穿透服务端口(如 10022)。
VPS 部署 frps(服务端)
下载并解压 FRP
进入工作目录并下载指定版本的 FRP:
1
2
3
4
cd ~
wget https://github.com/fatedier/frp/releases/download/v0.58.0/frp_0.58.0_linux_amd64.tar.gz
tar -zxvf frp_0.58.0_linux_amd64.tar.gz
cd frp_0.58.0_linux_amd64
创建服务端配置文件
创建 frps.toml 配置文件:
1
2
3
4
5
6
7
8
9
10
11
12
cat > frps.toml << 'EOF'
bindPort = 7000
[auth]
token = "your-secret-token-here"
[webServer]
bindAddr = "0.0.0.0"
port = 7500
user = "admin"
password = "your-web-password"
EOF
bindPort:frpc 连接 frps 的通信端口。
token:认证密钥,需与客户端保持一致。
webServer 部分为可选配置,用于启用管理面板。
启动 frps
执行以下命令启动服务端:
正常启动后,日志中应包含 frps started successfully。
设置开机自启(systemd)
创建 systemd 服务文件:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
sudo tee /etc/systemd/system/frps.service << EOF
[Unit]
Description=FRP Server Daemon
After=network.target
[Service]
Type=simple
User=your-username
WorkingDirectory=/home/your-username/frp_0.58.0_linux_amd64
ExecStart=/home/your-username/frp_0.58.0_linux_amd64/frps -c /home/your-username/frp_0.58.0_linux_amd64/frps.toml
Restart=on-failure
RestartSec=5
LimitNOFILE=65536
[Install]
WantedBy=multi-user.target
EOF
启用并启动服务:
1
2
3
sudo systemctl daemon-reload
sudo systemctl enable frps
sudo systemctl start frps
查看服务状态:
1
sudo systemctl status frps
确保状态为 active (running)。
内网服务器部署 frpc(客户端)
下载并解压 FRP
在内网服务器上执行:
1
2
3
4
cd ~
wget https://github.com/fatedier/frp/releases/download/v0.58.0/frp_0.58.0_linux_amd64.tar.gz
tar -zxvf frp_0.58.0_linux_amd64.tar.gz
cd frp_0.58.0_linux_amd64
创建客户端配置文件
创建 frpc.toml:
1
2
3
4
5
6
7
8
9
10
11
12
13
cat > frpc.toml << 'EOF'
serverAddr = "your-vps-public-ip"
serverPort = 7000
auth.token = "your-secret-token-here"
[[proxies]]
name = "ssh-to-internal"
type = "tcp"
localIP = "127.0.0.1"
localPort = 22
remotePort = 10022
EOF
serverAddr:替换为 VPS 的公网 IP。
auth.token:必须与 frps.toml 中的 token 一致。
localPort:根据内网服务实际端口修改(如 SSH 服务为 2255,则此处改为 2255)。
remotePort:VPS 上对外暴露的端口。
测试连接
运行以下命令测试连接:
若输出中包含 login to server success 和 start proxy success,则表示连接成功。按 Ctrl+C 退出测试。
设置开机自启
创建 systemd 服务文件:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
sudo tee /etc/systemd/system/frpc.service << EOF
[Unit]
Description=FRP Client Daemon
After=network.target
[Service]
Type=simple
User=your-username
WorkingDirectory=/home/your-username/frp_0.58.0_linux_amd64
ExecStart=/home/your-username/frp_0.58.0_linux_amd64/frpc -c /home/your-username/frp_0.58.0_linux_amd64/frpc.toml
Restart=on-failure
RestartSec=5
LimitNOFILE=65536
[Install]
WantedBy=multi-user.target
EOF
启用服务:
1
2
3
sudo systemctl daemon-reload
sudo systemctl enable frpc
sudo systemctl start frpc
检查状态:
1
sudo systemctl status frpc
从公网连接内网服务
配置 VPS 防火墙
在 VPS 管理控制台添加安全组规则,放行以下端口:
7000:frps 通信端口
10022:SSH 穿透端口(或自定义的 remotePort)
建立 SSH 连接
使用以下命令连接内网服务器:
1
ssh -p 10022 your-username@your-vps-public-ip
your-username:内网服务器的登录用户名。
your-vps-public-ip:VPS 的公网 IP 地址。
常见问题排查
连接被拒绝(connection refused)
检查 VPS 防火墙是否放行 7000 和 remotePort。
Token 认证失败
确保 frps.toml 和 frpc.toml 中的 token 完全一致。
连接后立即关闭(Connection closed by …)
检查 frpc.toml 中的 localPort 是否正确,以及内网服务是否正在运行。
端口已被占用
若启动 frps 时报错 address already in use,说明端口被占用,可通过 netstat -tuln | grep 7000 查看并终止占用进程。
进阶建议
安全加固
使用强密码和 SSH 密钥认证,避免使用弱口令。
高可用性
通过 systemd 配置自动重启策略,确保服务异常退出后能自动恢复。
多服务穿透
可在 frpc.toml 中添加多个 [[proxies]] 配置,实现 Web 服务、数据库等多协议穿透。
状态监控
启用 webServer 配置后,可通过浏览器访问 http://<VPS_IP>:7500 查看客户端连接状态和流量信息。
参考资料
Licensed under CC BY-NC-SA 4.0