FRP 内网穿透工具使用笔记(v0.51.3)
一、FRP 的作用
- 功能:
FRP 是一款内网穿透工具,允许通过公网服务器(如阿里云)访问内网服务(如 Jenkins、Web 应用、SSH 等)。 - 核心场景:
- 外网访问家庭 NAS、摄像头等内网设备。
- 开发调试时暴露本地服务到公网。
- 绕过无公网 IP 的限制,实现服务远程访问。
- 工作原理:
- 服务端(公网服务器):监听端口,接收外网请求并转发到内网客户端。
- 客户端(内网服务器):主动连接服务端,建立隧道,将内网服务映射到公网端口。
二、安装与配置步骤
1. 服务端配置(阿里云服务器)
下载并解压
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
编辑服务端配置
vi frps.ini
输入以下内容(按需修改端口和 Token):
[common]
bind_port = 7000 # 服务端监听端口
token = 123456 # 客户端连接密码(可选)
启动服务端
./frps -c frps.ini
2. 客户端配置(内网服务器)
下载并解压
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
编辑客户端配置
vi frpc.ini
输入以下内容(替换实际参数):
[common]
server_addr = 111.111.111.111 # 阿里云公网IP
server_port = 7000 # 服务端端口
token = 123456 # 需与服务端一致(如配置了 Token)
[jenkins] # 自定义服务名称
type = tcp # 协议类型
local_ip = 127.0.0.1 # 内网服务IP
local_port = 8080 # 内网服务端口(如 Jenkins)
remote_port = 8080 # 外网访问端口
启动客户端
./frpc -c frpc.ini
三、通过 Systemctl 管理服务
1. 服务端(阿里云)
创建服务文件
sudo vi /etc/systemd/system/frps.service
输入以下内容:
[Unit]
Description=Frp Server
After=network.target
[Service]
Type=simple
ExecStart=/path/to/frps -c /path/to/frps.ini
Restart=on-failure
[Install]
WantedBy=multi-user.target
启动并设置开机自启
sudo systemctl daemon-reload
sudo systemctl enable frps
sudo systemctl start frps
2. 客户端(内网)
创建服务文件
sudo vi /etc/systemd/system/frpc.service
输入以下内容:
[Unit]
Description=Frp Client
After=network.target
[Service]
Type=simple
ExecStart=/path/to/frpc -c /path/to/frpc.ini
Restart=on-failure
[Install]
WantedBy=multi-user.target
启动并设置开机自启
sudo systemctl daemon-reload
sudo systemctl enable frpc
sudo systemctl start frpc
四、验证与测试
1. 检查服务状态
# 服务端(阿里云)
sudo systemctl status frps
# 客户端(内网)
sudo systemctl status frpc
2. 查看日志
# 服务端日志
journalctl -u frps -f
# 客户端日志
journalctl -u frpc -f
3. 外网访问测试
浏览器访问 http://阿里云公网IP:8080
,若显示内网服务(如 Jenkins),则穿透成功。
五、防火墙与安全组
阿里云安全组:放行
TCP:7000
(服务端端口)和TCP:8080
(外网访问端口)。内网服务器防火墙:
sudo firewall-cmd --add-port=8080/tcp --permanent sudo firewall-cmd --reload
六、常用命令
操作 | 命令 |
---|---|
启动服务 | sudo systemctl start frps |
停止服务 | sudo systemctl stop frps |
重启服务 | sudo systemctl restart frps |
查看服务状态 | sudo systemctl status frps |
禁用开机自启 | sudo systemctl disable frps |
七、故障排查
端口占用:
sudo netstat -tulnp | grep 7000
Token 不匹配:确保服务端和客户端的
token
完全一致。连接超时:检查阿里云安全组和内网防火墙是否放行端口。
通过以上步骤,您可以通过 systemctl
方便地管理 FRP 服务,并实现稳定的内网穿透。