Ubuntu服务器(公网)- Ubuntu客户端(内网)的FRP内网穿透配置教程

以下是为Ubuntu服务器(公网)- Ubuntu客户端(内网)的FRP内网穿透配置教程,基于最新版本(2025年6月,使用frp_0.61.1_linux_amd64)整理:
一、服务端配置(公网Ubuntu服务器)
1. 下载与安装
# 下载FRP(版本需与客户端一致)
wget https://github.com/fatedier/frp/releases/download/v0.61.1/frp_0.61.1_linux_amd64.tar.gz
tar -zxvf frp_0.61.1_linux_amd64.tar.gz -C /usr/local/
mv /usr/local/frp_0.61.1_linux_amd64 /usr/local/frp
cd /usr/local/frp
rm -f frpc* # 删除客户端文件3 4
2. 配置文件 frps.toml
[common]
bind_port = 7000 # 客户端连接端口
token = your_token_123 # 认证密钥(需客户端一致)
dashboard_port = 7500 # 监控面板端口
dashboard_user = admin
dashboard_pwd = your_dashboard_pwd
log_file = ./frps.log
log_level = info
3. 启动服务端
# 临时启动(测试用)
./frps -c frps.toml
# 配置systemctl开机启动
sudo tee /etc/systemd/system/frps.service << EOF
[Unit]
Description=Frp Server
After=network.target
[Service]
User=root
WorkingDirectory=/usr/local/frp
ExecStart=/usr/local/frp/frps -c /usr/local/frp/frps.toml
Restart=on-failure
[Install]
WantedBy=multi-user.target
EOF
# 启动并设置开机自启
sudo systemctl daemon-reload
sudo systemctl start frps
sudo systemctl enable frps
4. 防火墙放行端口
sudo ufw allow 7000/tcp # 客户端连接端口4
sudo ufw allow 7500/tcp # 监控面板端口
二、客户端配置(内网Ubuntu机器)
1. 下载与安装
wget https://github.com/fatedier/frp/releases/download/v0.61.1/frp_0.61.1_linux_amd64.tar.gz
tar -zxvf frp_0.61.1_linux_amd64.tar.gz -C /usr/local/
mv /usr/local/frp_0.61.1_linux_amd64 /usr/local/frp
cd /usr/local/frp
rm -f frps* # 删除服务端文件3 4
2. 配置文件 frpc.toml
[common]
server_addr = 公网服务器IP # 替换为实际IP
server_port = 7000
token = your_token_123 # 与服务端一致
[ssh] # 暴露SSH服务(示例)
type = tcp
local_ip = 127.0.0.1
local_port = 22
remote_port = 6000 # 公网访问的端口2 4
3. 启动客户端
# 临时启动(测试用)
./frpc -c frpc.toml
# 配置systemctl开机启动
sudo tee /etc/systemd/system/frpc.service << EOF
[Unit]
Description=Frp Client
After=network.target
[Service]
User=root
WorkingDirectory=/usr/local/frp
ExecStart=/usr/local/frp/frpc -c /usr/local/frp/frpc.toml
Restart=on-failure
[Install]
WantedBy=multi-user.target
EOF
sudo systemctl daemon-reload
sudo systemctl start frpc
sudo systemctl enable frpc
三、连接验证
- SSH访问内网机器(通过公网IP):
ssh -p 6000 你的内网用户名@公网服务器IP
-
查看监控面板: 浏览器访问
http://公网服务器IP:7500,输入用户名admin和密码your_dashboard_pwd。 -
日志排查:
- 服务端日志:
tail -f /usr/local/frp/frps.log - 客户端日志:
tail -f /usr/local/frp/frpc.log
- 服务端日志:
四、高级配置
1. HTTPS穿透(Web服务)
# frps.toml配置:
bindPort = 7000 # 客户端连接端口
vhostHTTPPort = 80 # http 访问端口
vhostHTTPSPort = 443 # 添加了这行,https 访问端口。
auth.method = "token"
auth.token = your_token_123 # 认证密钥(需与客户端一致)
webServer.port = 7500 # 面板端口
webServer.addr="0.0.0.0"
webServer.user="admin" # 面板用户名
webServer.password= your_dashboard_pwd # 面板密码
log_file = ./frps.log
log_level = info
serverAddr = "10.12.13.14" # 公网 IP
serverPort = 7000 # 与客户端连接的端口
auth.method = "token"
auth.token = your_token_123 # 认证密钥(需与服务端一致)
# HTTPS 访问,以下顺序不能打乱
[[proxies]]
name = "wp-https"
type = "https"
localPort = 8001 # 本地端口与下一项的域名绑定,在公网上是 443 端口访问的
customDomains = ["wps.example.cn"]
[proxies.plugin]
type = "https2http" # 用的插件,不能写错
localAddr = "127.0.0.1:8001"
crtPath = "/usr/local/frp/fullchain.cer"
keyPath = "/usr/local/frp/example.cn.key"
# 这行代理,wordpress 重定向错误,注释了,如果应用需要接受的是本地访问,可以打开。
#hostHeaderRewrite = "127.0.0.1"
[proxies.plugin.requestHeaders]
# 如果后端应用需要浏览器信息,设置代理信息,不要可以不写,要写成一行,否则报错。
set = { x-from-where = "frp", Host = "wps.example.cn", X-Forwarded-Proto = "https", X-Forwarded-Host = "wps.example.cn", X-Forwarded-Port = "443" }
2. XTCP点对点穿透(减少服务器带宽占用):
# 服务端启用 xtcp 支持
[common]
bind_udp_port = 7001 # 新增配置
# 客户端配置(客户端A与B均需配置)
[p2p_ssh]
type = xtcp
sk = your_secret_key # 双方密钥相同
local_ip = 127.0.0.1
local_port = 22
五、注意事项
-
安全配置:
- 修改默认的
token和仪表盘密码。 - 建议非必要不开放
dashboard_port到公网。
- 修改默认的
-
端口管理:
- 若使用公共服务器,可能需通过工单申请端口(如中国科技大学试验环境要求)。
-
版本一致性:服务端与客户端需使用相同FRP版本。
如需其他协议(如HTTP/UDP)或插件支持,可参考FRP官方文档。










