frp内网穿透工具
用户——》frps(公网)——》frpc
下载
[root@vm ~]# wget -c https://github.com/fatedier/frp/releases/download/v0.53.2/frp_0.53.2_linux_amd64.tar.gz
[root@vm ~]# tar -xvf frp_0.53.2_linux_amd64.tar.gz
[root@vm ~]# ls frp_0.53.2_linux_amd64
frpc frpc.toml frps frps.toml LICENSE
# 注意: frps* server端相关 frpc*client端相关
#0.52开始配置文件变化很大,参考搭建文档时注意版本
[root@vm ~]# ls frp_0.48.0_linux_amd64
frpc frpc_full.ini frpc.ini frps frps_full.ini frps.ini LICENSE
[root@vm ~]# mv frp_0.53.2_linux_amd64 /opt/frp
[root@vm ~]# cd /opt/frp
[root@vm frp]# mkdir client server
[root@vm frp]# mv frpc* client
[root@vm frp]# mv frps* server
[root@vm frp]# cd server
配置frp服务端
[root@vm server]# vim frps.toml
[common]
# frp监听的端口,默认是7000,可以改成其他的
bind_port = 7000
# 授权码
auth.method = "token"
auth.token = "xZuNX6fJdhjIlvKgv"
# frp管理后台端口,请按自己需求更改
dashboard_port = 7500
# frp管理后台用户名和密码,请改成自己的
dashboard_user = admin
dashboard_pwd = admin
enable_prometheus = true
# frp日志配置
log_file = /var/log/frps.log
log_level = info
log_max_days = 3
vim /usr/lib/systemd/system/frps.service
[Unit]
Description=frps
After=network.target
[Service]
Type=simple
ExecStart=/opt/frp/server/frps -c /opt/frp/server/frps.toml
ExecStop=/bin/kill $MAINPID
Restart=always
RestartSec=15s
[Install]
WantedBy=multi-user.target
systemctl daemon-reload && systemctl enable frps --now && systemctl status frps
检查服务端口
[root@vm ~]# ss -antlp | egrep "7000|7500|8080" #8080由frpc定义,且启动成功后打开
LISTEN 0 1024 [::]:7500 [::]:* users:(("frps",pid=11428,fd=7))
LISTEN 0 1024 [::]:7000 [::]:* users:(("frps",pid=11428,fd=8))
配置frp客户端
[root@vm client]# vim frpc.toml
[common]
server_addr =139.159.235.221 # frps的IP
server_port = 7000 # frps的端口
auth.method = "token" # 授权码
auth.token = "xZuNX6fJdhjIlvKgv"
# 配置需要穿透服务
[nginx] #为服务名称,唯一
type = tcp #为连接的类型,此处为tcp
local_ip = 127.0.0.1 #为中转客户端实际访问的IP 这里以本机的nginx为例
local_port = 80 #为中转客户端实际访问的端口
remote_port = 8080 #当frpc启动成功时,这个端口会在frps上打开的,为远程访问端口
# 因为安全问题 网络一定要打通
最终访问server_addr:remote_port 实际服务
vim /usr/lib/systemd/system/frpc.service
[Unit]
Description=frpc
After=network.target
[Service]
Type=simple
ExecStart=/opt/frp/client/frpc -c /opt/frp/client/frpc.toml
ExecStop=/bin/kill $MAINPID
Restart=always
RestartSec=15s
[Install]
WantedBy=multi-user.target
[root@vm client]# systemctl daemon-reload && systemctl enable frpc --now && systemctl status frpc
frpc端链接检查
[root@vm client]# ss | grep 139.159.235.221
tcp ESTAB 0 0 10.3.0.142:36818 139.159.235.221:afs3-fileserver
frps 端端口检查
[root@ecs-5e7d-0002-fadc ~]# ss -antlp | egrep "7000|7500|8080"
LISTEN 0 1024 [::]:7500 [::]:* users:(("frps",pid=11428,fd=7))
LISTEN 0 1024 [::]:8080 [::]:* users:(("frps",pid=11428,fd=10))
LISTEN 0 1024 [::]:7000 [::]:* users:(("frps",pid=11428,fd=8))
client上准备个nginx用于测试
[root@vm client]# yum -y install nginx && systemctl enable nginx --now
[root@vm client]# ss -antlp | egrep 80
访问 139.159.235.221:8080 为nginx服务
参考文档,其他功能
https://github.com/fatedier/frp/releases
https://gofrp.org/zh-cn/docs/examples/
通过 SSH 访问内网机器
多个 SSH 服务复用同一端口
通过自定义域名访问内网的 Web 服务
转发 DNS 查询请求
转发 Unix 域套接字
对外提供简单的文件访问服务
为本地 HTTP 服务启用 HTTPS
安全地暴露内网服务