长亭百川云 - 文章详情

内网穿透之frp搭建与使用

唐哥

65

2024-07-28

1. frp简介

frp 是一款简单、高效的内网穿透工具,它支持多种代理类型以及 P2P 通信,为不同场景下的需求提供丰富的解决方案。

frp 支持 TCP、UDP、HTTP、HTTPS 等多种协议,并且还支持 P2P 通信;可以将内网服务以安全、便捷的方式通过具有固定公网 IP 地址的服务器进行中转,最终将服务映射到公网访问。

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

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

2. 安装配置frp服务端

2.1 测试环境

操作系统:CentOS7.6最小化安装;

服务说明:为了更好的模拟真实效果,本次使用一台腾讯云云服务器进行部署。

关于防火墙和SELinux;

2.2 下载frp

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

当前下载版本:v0.59.0

下载地址:

https://github.com/fatedier/frp/releases/download/v0.59.0/frp_0.59.0_linux_amd64.tar.gz

2.3 部署frp

解压缩下载的压缩包。

tar -zxf frp_0.59.0_linux_amd64.tar.gz

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

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

mkdir /usr/share/frps
cp frp_0.59.0_linux_amd64/frps* /usr/share/frps/

frps:启动程序

frps.toml:主配置文件

2.4 启动服务

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

临时启动:

cd /usr/share/frps
./frps -c .frps.toml  #启动服务端

使用systemd启动:

vi /etc/systemd/system/frps.service

#写入以下内容

[Unit]
Description = frp server
After = network.target syslog.target
Wants = network.target
[Service]
Type = simple
ExecStart = /usr/share/frps/frps -c /usr/share/frps/frps.toml
[Install]
WantedBy = multi-user.target

启动命令:

systemctl start frps

设置开机自启:

systemctl enable frps

服务启动后,默认监听7000端口,可以通过修改配置文件进行修改。

3. 安装配置frp客户端

3.1 客户端环境

操作系统:CentOS7.6最小化安装;

关于防火墙和SELinux;

穿透说明:访问服务端的6000端口,转发到客户端的22端口上。

3.2 下载frp

客户端与服务端使用的是同一安装包。

下载地址:

https://github.com/fatedier/frp/releases/download/v0.59.0/frp_0.59.0_linux_amd64.tar.gz

3.3 部署frp

解压缩下载的压缩包

tar -zxf frp_0.59.0_linux_amd64.tar.gz

内网服务器只需要拷贝 frpc* 文件即可。

mkdir /usr/share/frpc
cp frp_0.59.0_linux_amd64/frpc* /usr/share/frpc/

frpc:启动程序

frpc.toml:主配置文件

3.4 修改配置文件

vi /usr/share/frpc/frpc.toml

#修改后内容如下

serverAddr = "43.133.213.44"
serverPort = 7000
[[proxies]]
name = "ssh01"
type = "tcp"
localIP = "192.168.211.101"
localPort = 80
remotePort = 6000

重点参数说明:

localIP 和 localPort  配置为本地需要暴露到公网的服务地址和端口;

remotePort 表示在 frp 服务端监听的端口,访问此端口的流量将会被转发到本地服务对应的端口。

3.5 启动服务

将客户端也配置为systemd启动:

vi /etc/systemd/system/frpc.service

#写入以下内容

[Unit]
Description = frp client
After = network.target syslog.target
Wants = network.target
[Service]
Type = simple
ExecStart = /usr/share/frpc/frpc -c /usr/share/frpc/frpc.toml
[Install]
WantedBy = multi-user.target

启动命令:

systemctl start frpc

设置开机自启:

systemctl enable frpc

4. 访问测试

在一台终端上frp服务端的IP地址+6000端口测试是否可以SSH登录到内网服务器上:

访问正常,内网穿透配置成功。

5. 增加服务端与客户端之间的认证

按照以上配置,服务端不需要认证客户端即可以接入,这样非常不安全,下面增加服务端与客户端之间的认证,保证客户是合法用户。

5.1 修改服务端配置

vi /usr/share/frps/frps.toml

#修改后内容如下

bind_port = 7000
auth.token = "Aa123456"

增加token的配置,密码自定义;

重启服务:

systemctl restart frps

服务端配置token,而客户端没有配置token,客户端则会掉线,提示如下信息:

reconnect to server error: token in login doesn't match token from configur...nother retry

5.2 修改客户端配置

vi /usr/share/frpc/frpc.toml

#修改后内容如下

serverAddr = "43.133.213.44"
serverPort = 7000
auth.token = "Aa123456"
[[proxies]]
name = "ssh01"
type = "tcp"
localIP = "192.168.211.101"
localPort = 22
remotePort = 6000

增加token的配置,密码与服务端保持一致;

重启服务:

systemctl restart frpc

6. 总结

frp其实还有很多用法,可以穿透内网网站、配置web界面查看 frp 的状态以及代理统计信息等,更多玩法参考官方手册。

相关推荐
关注或联系我们
添加百川云公众号,移动管理云安全产品
咨询热线:
4000-327-707
百川公众号
百川公众号
百川云客服
百川云客服

Copyright ©2024 北京长亭科技有限公司
icon
京ICP备 2024055124号-2