内网穿透frp详细安装使用教程
-
目录
frp 是一款高性能的反向代理工具,主要用于实现内网穿透,让外网能够访问内网中的服务(如 Web 服务、SSH、远程桌面等)。下面是 frp 的详细安装和使用教程。
一、准备工作
-
环境要求
- 一台具有公网 IP 的服务器(云服务器或 VPS):作为 frp 服务端(frps),负责接收外网请求并转发到内网。
- 内网设备(如电脑、路由器、树莓派等):作为 frp 客户端(frpc),负责将内网服务通过 frp 转发到服务端。
- 网络环境:服务端需开放相关端口(通过防火墙和安全组),客户端需能访问互联网。
-
下载 frp
从 frp 官方 GitHub 仓库 下载对应版本(根据设备架构选择,如 Linux 64 位为frp_xxx_linux_amd64.tar.gz
,Windows 64 位为frp_xxx_windows_amd64.zip
)。
二、服务端(公网服务器)配置
以 Linux 系统为例(假设公网 IP 为
1.2.3.4
):1. 安装 frp
# 下载最新版本(请替换为实际版本号) wget https://github.com/fatedier/frp/releases/download/v0.51.3/frp_0.51.3_linux_amd64.tar.gz # 解压 tar -zxvf frp_0.51.3_linux_amd64.tar.gz cd frp_0.51.3_linux_amd64
2. 配置服务端(frps.ini)
服务端核心配置文件为
frps.ini
,基础配置如下:[common] # 服务端监听客户端连接的端口(必须开放,默认7000) bind_port = 7000 # 可选:设置认证token(客户端需与服务端一致,增强安全性) token = your_token_here # 可选:控制台端口(用于查看frp状态,默认7500) dashboard_port = 7500 # 控制台账号密码 dashboard_user = admin dashboard_pwd = admin123 # 可选:日志配置 log_file = ./frps.log log_level = info log_max_days = 3
3. 启动服务端
-
临时启动(测试用,关闭终端后停止):
./frps -c ./frps.ini
-
后台启动(推荐):
# 使用nohup在后台运行 nohup ./frps -c ./frps.ini & # 查看日志确认是否启动成功 tail -f frps.log
-
设置开机自启(以 systemd 为例):
创建服务文件:sudo vim /etc/systemd/system/frps.service
写入内容:
[Unit] Description=frp server After=network.target [Service] Type=simple ExecStart=/path/to/frp_0.51.3_linux_amd64/frps -c /path/to/frp_0.51.3_linux_amd64/frps.ini Restart=always [Install] WantedBy=multi-user.target
启动并设置自启:
sudo systemctl daemon-reload sudo systemctl start frps sudo systemctl enable frps
4. 开放端口
在服务端的防火墙(如
ufw
)和云服务商安全组中开放以下端口:bind_port
(如 7000):客户端与服务端通信的端口。dashboard_port
(如 7500):控制台端口(可选)。- 后续需要穿透的服务端口(如 SSH 用 6000,Web 用 8080 等)。
三、客户端(内网设备)配置
以内网 Linux 设备为例(假设要穿透 SSH 服务,内网 IP 为
192.168.1.100
,SSH 端口默认 22):1. 安装 frp
下载与服务端同版本的 frp(注意匹配客户端操作系统),解压后进入目录。
2. 配置客户端(frpc.ini)
客户端核心配置文件为
frpc.ini
,基础配置如下:[common] # 服务端公网IP server_addr = 1.2.3.4 # 服务端bind_port(与服务端一致) server_port = 7000 # 认证token(与服务端一致) token = your_token_here # 配置SSH穿透(名称自定义,如[ssh]) [ssh] # 穿透类型(TCP协议) type = tcp # 内网服务的IP(本地填127.0.0.1) local_ip = 127.0.0.1 # 内网服务的端口(SSH默认22) local_port = 22 # 服务端开放的端口(外网通过此端口访问内网SSH) remote_port = 6000
其他常见服务配置示例:
- Web 服务(假设内网 Web 端口为 80):
[web] type = http local_ip = 192.168.1.100 local_port = 80 # 外网访问的域名(需解析到服务端IP,可选) custom_domains = your_domain.com
- 远程桌面(Windows RDP)(默认端口 3389):
[rdp] type = tcp local_ip = 192.168.1.101 local_port = 3389 remote_port = 33890
3. 启动客户端
-
临时启动:
./frpc -c ./frpc.ini
-
后台启动(Linux):
nohup ./frpc -c ./frpc.ini &
-
Windows 后台启动:
创建批处理文件start_frp.bat
:@echo off start /b frpc.exe -c frpc.ini
双击运行即可在后台启动(或通过任务计划程序设置开机自启)。
四、测试穿透效果
-
SSH 穿透测试
在外网设备上,通过服务端 IP 和remote_port
连接内网 SSH:# 格式:ssh 内网用户名@服务端公网IP -p 服务端remote_port ssh user@1.2.3.4 -p 6000
-
Web 服务测试
若配置了 Web 穿透,外网访问http://服务端公网IP:remote_port
或http://your_domain.com
(需域名解析)即可访问内网 Web 服务。 -
控制台查看状态
访问http://服务端公网IP:7500
,输入配置的账号密码,可查看所有穿透服务的运行状态。
五、常见问题排查
-
连接失败
- 检查服务端和客户端的
token
是否一致。 - 确认服务端端口(
bind_port
、remote_port
)已开放(防火墙+安全组)。 - 检查客户端
server_addr
和server_port
是否正确指向服务端。
- 检查服务端和客户端的
-
服务频繁断开
- 可能是网络不稳定,可在
[common]
中添加heartbeat_interval = 30
(心跳检测间隔)和heartbeat_timeout = 90
(超时时间)。
- 可能是网络不稳定,可在
-
控制台无法访问
- 检查
dashboard_port
是否开放,以及账号密码是否正确。
- 检查
六、安全建议
- 务必设置
token
认证,避免未授权设备连接。 - 限制
remote_port
的范围,仅开放必要端口。 - 定期更新 frp 到最新版本,修复可能的安全漏洞。
通过以上步骤,即可实现稳定的内网穿透,方便外网访问内网服务。
-