frp内网穿透搭建与使用

Milktea 发布于 2024-12-22 414 次阅读 1233 字 最后更新于 2024-12-22


frp 是一款简单、高效的内网穿透工具,它支持多种代理类型以及 P2P 通信,为不同场景下的需求提供丰富的解决方案。frp 支持 TCP、UDP、HTTP、HTTPS 等多种协议,并且还支持 P2P 通信;可以将内网服务以安全、便捷的方式通过具有固定公网 IP 地址的服务器进行中转,最终将服务映射到公网访问。

更多功能介绍参考官方文档:

https://gofrp.org/zh-cn/docs/

安装配置

测试环境

操作系统:Debian 11.7

服务说明:为了真实实现内网穿透效果,使用一台云服务器部署。

下载frp

github地址:https://github.com/fatedier/frp/releases

1.下载安装frp(适用于服务端和客户端)

首先查询自己linux系统架构,比如x86_64

uname -a

如下图,我这里就应该下载的是linux_amd64架构的

当前下载版本:v0.61.0

PS:这里可以下载到本机然后上传到linux云服务器上,但是本机杀毒软件可能会报毒,可能被杀掉

将其中 frpc* 是客户端程序,需要拷贝到内网服务所在的机器上;

而 frps* 拷贝到具有公网 IP 的机器上,任意目录位置均可。

frp*:启动程序

frp*.toml:主配置文件

frp服务端部署配置

正常流程需要将修改配置文件后再启动,这里只说明如何启动,后续为根据需求修改配置文件。

临时启动命令:

/路径/frps -c /路径/frps.toml  #启动服务端

服务端启动配置

编辑frps配置文件

vim frps.toml

进入frps.toml之后按i进入编辑模式,粘贴以下内容并保存(具体服务端配置信息查看文档:https://gofrp.org/zh-cn/docs/reference/server-configures/

#客户端与服务连接端口
bindPort = 7000

#配置 Web 服务器以启用 frps 的仪表板。
#仅当设置了 webserver.port 时,仪表板才可用。
webServer.addr="0.0.0.0"
webServer.port= 7500
webServer.user="admin"
webServer.password="admin"


# 配置 token 认证,frpc 客户端需指定frps一样的token
auth.method="token"
auth.token="自定义token"

# 只允许frpc绑定指定ports.
allowPorts= [
 { start =10000, end =100200}
]

配置内容中可根据自己需求自行修改。

配置完成后可以访问一下web管理界面(ip的7500端口),查看是否成功启动,显示如下为成功启动服务

开机自启

为方便后续使用,这里使用systemd配置管理frps服务端并设置开机自启

安装systemd,如果您的系统上未安装systemd服务,可以选择以下指令进行安装(一般系统默认自带systemd)

# 使用 yum 安装 systemd(CentOS/RHEL)
yum install systemd
# 使用 apt 安装 systemd(Debian/Ubuntu)
apt install systemd

创建frps.service 文件

在/etc/systemd/system目录下创建一个frp s.service文件,用于配置frps服务。

vim /etc/systemd/system/frps.service

如果不会使用vim 也可以使用nano进行文件创建(nano使用ctrl+x结束编辑,输入y保存)

nano /etc/systemd/system/frps.service

按i进入编辑模式,写入以下内容

[Unit]
# 服务名称,可自定义
Description = frp server
After = network.target syslog.target
Wants = network.target
[Service]
Type = simple

# 启动frps的命令,需修改为您的frps的安装路径
ExecStart = /路径/frps -c /路径/frps.toml
[Install]
WantedBy = multi-user.target

esc退出编辑模式:wq保存

然后使用systemd命令管理frps服务

# 启动frp
sudo systemctl start frps
# 停止frp
sudo systemctl stop frps
# 重启frp
sudo systemctl restart frps
# 查看frp状态
sudo systemctl status frps
#设置frps开机自启
sudo systemctl enable frps

启动后使用sudo systemctl status frps指令可以查看是否启动成功,如下则为成功,否则失败。

frp客户端部署配置

下载目标客户端对应的架构文件,我这里使用另外一台云服务器实现(真实情况为内网服务器)。

这里使用的服务器架构同样为linux_amd64。

同上,进入frpc.toml之后按i进入编辑模式,粘贴以下内容并保存(具体客户端配置信息查看文档:https://gofrp.org/zh-cn/docs/reference/client-configures/

serverAddr = "服务器的公网IP"
serverPort = 7000

auth.method = "token"
auth.token = "自定义token"
transport.protocol = "tcp"

[[proxies]]
name = "plugin_socks5"
type = "tcp"
remotePort = 10000
[proxies.plugin]
type = "socks5"
username = "自定义"
password = "自定义"

此处内容对照上面服务端自行配置。

将frpc与frpc.toml上传至目标服务器中,为frpc添加权限运行。

chmod +x frpc./frps -c ./frps.toml

真实情况下可执行后台执行操作,命令如下

nohup ./frpc -c ./frpc.toml &

成功执行后如下图所示

操作成功后,使用proxifier进行流量代理

此时隧道就成功搭建,可以访问内网。

此作者没有提供个人介绍
最后更新于 2024-12-22