frp内网穿透服务搭建与使用
1、frp简介
frp 是一个专注于内网穿透的高性能的反向代理应用,支持 TCP、UDP、HTTP、HTTPS 等多种协议。
可以将内网服务以安全、便捷的方式通过具有公网 IP 节点的中转暴露到公网。
frp工作原理
服务端运行,监听一个主端口,等待客户端的连接;
客户端连接到服务端的主端口,同时告诉服务端要监听的端口和转发类型;
服务端fork新的进程监听客户端指定的端口;
外网用户连接到客户端指定的端口,服务端通过和客户端的连接将数据转发到客户端;
客户端进程再将数据转发到本地服务,从而实现内网对外暴露服务的能力。
2、frp下载
准备一个公网服务器,以腾讯云为例,准备安装frp服务端,准备一台电脑安装frp客户端。
所以这里需要下载Linux版本和windows版本
链接:https://pan.baidu.com/s/1f8NMY8zc1eKbZa7twgQPEg
提取码:hj50
3、解压安装
这里frp服务端安装在Linux上,frp客户端安装在Windows上。将下载的Linux压缩包上传到服务器上解压。
tar -zxvf frp_0.34.3_linux_386.tar.gz
解压之后目录结构如下,这里可以选择把客户端没有的程序和配置删掉,也可不删。
文件中所有显示frps的都是服务端文件,显示frpc的都是客户端文件。
下载Windows版本的frp解压到本地,删除所有服务端文件。
4、修改配置
修改服务端配置
vim frps.ini
[common]
#内网穿透服务器端监听的IP地址,可以省略,默认为127.0.0.1
bind_addr = 0.0.0.0
# 默认端口7000,就是客户端和服务端通信的端口,不是你转发的那个端口,如果要改端口,
# 客户端和服务端两边的配置文件都要改
bind_port = 7000
# 控制台配置,frp的web管理控制台的用户名和密码,可以通过服务端ip+7001端口登录
# frp管理后台端口,请按自己需求更改
dashboard_port = 7001
# 管理后台用户名和密码,请改成自己的
dashboard_user = ***
dashboard_pwd = ***
# 这个token之后在客户端会用到
token = ***
# frp日志配置
log_file = /var/log/frps.log
log_level = info
log_max_days = 3
修改客户端配置
[common]
#frps服务端所在的公网IP
server_addr = 43.25.36.22
# 默认端口7000,就是客户端和服务端通信的端口,不是你转发的那个端口,如果要改端口,
# 客户端和服务端两边的配置文件都要改 与frps.ini的bind_port一致
server_port = 7000
# 如果服务端设置了token,则客户端也需要设置token 与frps.ini的token一致
token = ***
# frp内网穿透通道的名称,一定要唯一
[httpWeb]
type = tcp # 连接类型
local_ip = 127.0.0.1 # 本地的地址
local_port = 9008 # 穿透到本地内网的端口号,本地应用的端口号,按照实际应用工作在本机的端口号填写即可。
remote_port = 7002 # 本次TCP服务要监听的端口,就是外网服务器要监听的端口,该条规则在服务端开放的端口号
5、开放端口
腾讯云服务器端口是没有开放的,所以我们需要先在腾讯云防火墙中开放7000(frp客户端和服务端通信端口),
7002(服务器端要监听的端口),7001(这是frp面板的端口,下面会提到)这三个端口
6、启动服务
服务端
在frp安装目录下执行
[root@VM-20-16-centos frp]# ./frps -c frps.ini
客户端
在frp安装目录下执行
.\frpc.exe -c .\frpc.ini
7、查看面板管理
frp穿透服务已经成功了,我们再查看下frp面板,浏览器地址栏输入:服务器公网IP+7001
8、访问内网应用
本地nginx代理
9、利用frp 进行远程桌面控制
腾讯云服务器的防火墙中开放7003端口,用于映射本地远程桌面的应用端口3389
在frp客户端配置文件frpc.ini中增加配置
# 规则名称,自己定义,便于查询
[RDP]
# 转发的协议类型
type = tcp
local_ip = 127.0.0.1
# 本地应用的端口号
local_port = 3389
# 该条规则在服务端开放的端口号
remote_port = 7003
重启客户端服务如下:
测试windows远程桌面链接:
windows远程桌面连接成功!
10、利用frp 内网穿透,连接内网linux服务器
下载linux版本的frp,解压到服务器
修改客户端配置
在公网服务器放行端口:7004
启动客户端服务
在公网服务器使用以下命令通过 SSH 访问内网机器
ssh -o Port=7004 root@43.185.32.46
ssh root@43.185.32.46 -p 7004
ssh 连接成功!