frp内网穿透搭建教程

frp是一个可用于内网穿透的高性能反向代理应用,支持TCP、UDP、HTTP、HTTPS等多种协议。利用frp可以轻松地将内网服务暴露到公网,实现远程访问内网设备的目的。
本教程将详细介绍如何在云服务器和内网主机上分别配置frp服务端(frps)和客户端(frpc)。

一、云服务器frps配置

1. 下载并解压缩

首先,前往frp官方GitHub仓库下载对应版本的资源包:

1
2
wget https://github.com/fatedier/frp/releases/download/v0.61.1/frp_0.61.1_linux_amd64.tar.gz
tar -xzvf frp_0.61.1_linux_amd64.tar.gz

2. 删除多余配置并移到指定目录

1
2
3
4
cd frp_0.61.1_linux_amd64
sudo rm frpc frpc.toml frpc_full.toml
cd
mv download/frp_0.61.1_linux_amd64 frp

3. 修改frps.toml配置文件

修改公网服务器上的服务端配置文件 frps.toml,基本配置如下:

1
2
# frp服务端端口(必须)
bind_port = 7000

注意:这是最基本的配置,您可以根据需要添加更多配置项,如认证信息、日志设置等。

4. 后台运行frps服务

进入frp目录并启动服务:

1
2
cd frp
nohup ./frps -c ./frps.toml > /dev/null 2>&1 &

二、内网主机frpc配置

1. 下载并解压缩

1
2
wget https://github.com/fatedier/frp/releases/download/v0.61.1/frp_0.61.1_linux_amd64.tar.gz
tar -xzvf frp_0.61.1_linux_amd64.tar.gz

2. 删除多余配置并移到指定目录

1
2
3
4
cd frp_0.61.1_linux_amd64
sudo rm frps frps.toml frps_full.toml
cd
mv download/frp_0.61.1_linux_amd64 frp

3. 修改frpc.toml配置文件

修改内网目标主机的客户端配置文件 frpc.toml,示例配置如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
# frp服务端地址,必须是公网ip或者域名
serverAddr = "xxx.xxx.xxx.xxx"
# frp服务端端口,即填写服务端配置中的 bind_port
serverPort = 7000

# SSH服务转发配置
[[proxies]]
# 代理名称,确保唯一性
name = "xxxx_ssh"
# 连接类型,填tcp或udp
type = "tcp"
# 本地IP地址
localIP = "127.0.0.1"
# 需要转发的本地端口,SSH端口是22
localPort = 22
# frp服务端的远程监听端口
# 访问服务端的此端口就相当于访问客户端的local_port
# 如果填0则会随机分配一个端口
remotePort = 6000

# Web界面服务转发配置
[[proxies]]
name = "xxxx_webui"
type = "tcp"
localIP = "127.0.0.1"
# 需要转发的本地Web服务端口
localPort = 11100
# 服务端远程监听端口
remotePort = 6001

三、设置开机自启动

1. 创建systemd服务脚本

1
sudo vim /usr/lib/systemd/system/frpc.service

写入以下内容(注意替换用户名和实际路径):

1
2
3
4
5
6
7
8
9
10
11
12
13
[Unit]
Description=frpc service
After=network-online.target network.target syslog.target
Wants=network-online.target

[Service]
Type=simple
ExecStart=/home/用户名/tools/frp/frpc -c /home/用户名/tools/frp/frpc.toml
Restart=on-failure
RestartSec=3

[Install]
WantedBy=multi-user.target

2. 启用并设置开机自启

1
2
sudo systemctl start frpc
sudo systemctl enable frpc

四、安全配置

1. 开放云服务器端口

在云服务器控制台的安全组或防火墙设置中,开放以下端口:

  • frp服务端口(默认7000)
  • 所有在frpc.toml中配置的remotePort端口

2. 安全建议

  • 建议在frps.toml中配置身份验证
  • 使用非标准端口
  • 定期更新frp版本以获取安全补丁

五、验证连接

配置完成后,可以通过以下方式验证连接是否成功:

1
2
3
4
5
6
# SSH连接测试
ssh -p 6000 用户名@服务器公网IP

# Web服务测试
# 在浏览器中访问
http://服务器公网IP:6001

总结

通过以上步骤,您已经成功搭建了基于frp的内网穿透服务。现在您可以从公网访问内网的各种服务了。如需更多高级配置,请参考frp官方文档