FRP内网穿透搭建
2023-10-24 16:06:32
Intro
FRP(Fast Reverse Proxy)是Go语言开发的一款免费开源的用于内网穿透的反向代理工具,支持TCP、UDP、HTTP、HTTPS等协议。
项目官网👉https://github.com/fatedier/frp
工作原理:
- 服务端有公网IP,监听一个主端口X,等待客户端连接
- 客户端连接到服务端的主端口X,告诉服务端要监听的端口和转发类型
- 服务端fork新进程监听客户端指定的端口Y
- 外网用户连接到服务端的端口Y,服务端通过和客户端的连接将数据转发给客户端
- 客户端进程再将数据转发到本地服务,从而实现内外对外网暴露服务的能力
下面的配置基于我本机虚拟机Kali作为客户端,我的VPS作为服务端
Config
Server Side
- 下载frp压缩包
1 | wget https://github.com/fatedier/frp/releases/download/v0.51.3/frp_0.51.3_linux_amd64.tar.gz |
- 解压frp压缩包
1 | tar -zxvf frp_0.51.3_linux_amd64.tar.gz |
- 修改配置文件
1 | cd frp_0.51.3_linux_amd64 |
1 | [common] |
- bind_port: frp监听的端口,默认7000
- token:授权码,客户端会用到
- dashboard_port:frp管理后台的端口
- enable_prometheus:
http://{dashboard_addr}/metrics可以获取到Prometheus的监控数据
- 设置和启动frp服务
1 | mkdir -p /etc/frp |
/lib/systemd/system/frps.service填入如下内容
1 | [Unit] |
systemctl start frps启动frpssystemctl status frps查看frps状态systemctl restart frps重启frpssystemctl stop frps停止frps
访问管理员页面验证是否启动成功
Client Side
客户端的配置和服务端的类似,不过是把frps改成frpc
1 | vim frpc.ini |
1 | [common] |
- server_addr:服务端ip
- server_port:服务端监听的主端口
- token:与frps.ini中token一致
ssh
设置ssh连接
1 | vim /etc/ssh/sshd_config |
修改两条配置,取消注释
1 | PermitRootLogin yes |
重启ssh服务
1 | /etc/init.d/ssh restart |
生成ssh密钥对,并将公钥添加到authorized_keys
1 | ssh-keygen |
本机测试连接
现在通过frp连接,客户端启动frp
1 | ./frpc -c frpc.ini |
连接成功!(注意这里的连接ip和连接端口)
frp控制台同样可以看到连接情况
http
需要服务端的配置增加一个vhost_http_port字段,外网通过这个端口访问
1 | vhost_http_port = 8081 |
客户端配置:
1 | [http1] |
这里的local_ip可以换成内网的其他ip,比如我的宿主机ip 192.168.92.1
随便开一个Flask应用
访问http://vps_ip:8081/,成功返回
socks
若想通过nc连接,得配置socks代理。
客户端配置:remote_port为服务端TCP监听的端口
1 | [socks] |
kali上配置proxychains
1 | vim /etc/proxychains.conf |
填上服务端ip和监听端口5000
这时候就可以用nc去连接内网了。
1 | proxychains nc 192.168.92.1 7777 |
泰裤辣!







