frp(内网穿透)

一、简介

frp 是一个可用于内网穿透的高性能的反向代理应用,支持多种协议类型

  • frp 为 C/S (客户端/服务端)架构
  • 服务端的配置文件名为 frps.ini (公网)
  • 客户端的配置文件名为 frpc.ini (内网)

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

官方文档:
中文:https://gofrp.org/docs/
中文:https://github.com/fatedier/frp/blob/master/README_zh.md
英文:https://github.com/fatedier/frp#configuration-files

文件介绍

frpc		    #  客户端二进制文件
frpc_full.ini	#  客户端配置文件完整示例
frpc.ini		#  客户端配置文件

frps		    #  服务端二进制文件
frps_full.ini	#  服务端配置文件完整示例
frps.ini		#  服务端配置文件

实验环境
VMware 15

  • kali-1 IP:192.168.0.190(桥接模式,代替公网)
  • kali-2 IP:192.168.201.152(NAT模式,内网)
二、常用参数

frps.ini(服务端,用于公网)

[common]		#  共同配置,必需有该配置(请勿修改该代理名)
bind_addr = 0.0.0.0	    #  绑定的 IP
bind_port = 7000	    #  服务端监听的端口
vhost_http_port = 80	#  为代理的 http 设置一个监听端口(通过域名访问网页时须使用此处设置的端口访问)
vhost_https_port = 443	#  为代理的 https 设置一个监听端口(通过域名访问网页时须使用此处设置的端口访问)

#  安全
token = 123		#  设置身份验证
log_file = ./frps.log	#  指定日志路径
log_level = info		#  指定日志级别(trace(跟踪)、debug(调试)、info(信息)、warn(警告)、error(错误)
log_max_days = 3	    #  指定日志记录最大天数
max_ports_per_client = 0	#  最大端口可用(默认为 0 ,表示无限制)
allow_ports = 2000-3000,3001,3003,4000-5000	#  端口白名单

#  传输
tls_only = false	#  指定是否指接受 TLS 加密(默认为 false)
tcp_mux = true	#  开启 tcp 流多路复用(默认为 true)

frpc.ini(客户端,用于内网)

[common]			#  共同配置,必需有该配置(请勿修改该代理名)
server_add = 192.168.0.190	#  服务端 IP(需和服务端的 IP 配置为一致)
server_port = 7000		#  服务端端口(需和服务端的端口配置为一致)
dns_server = 8.8.8.8	#  指定 DNS 服务器
start = ssh,web			#  启用代理名称为 ssh 跟 web 的代理(默认为空格,表示启用所有代理)
user = test_name		#  连接时在代理名称前面添加 test_name. (如当前代理名称为 common ,则 test_name.common)

#  安全
token = 123		        #  设置身份验证(必须与服务端相同)
log_file = ./frpc.log	#  指定日志路径(如指定了日志文件,则控制台不会显示相关信息(会显示在日志文件里))
log_level = info		#  指定日志级别(trace(跟踪)、debug(调试)、info(信息)、warn(警告)、error(错误)
log_max_days = 3	    #  指定日志记录最大天数

#  传输
login_faile_exit = true	#  首次跟服务器连接失败时退出程序,如为 false 则失败后重新尝试连接(默认为 true)
protocol = tcp		    #  用于连接服务器的通信协议(支持 tcp、kcp、websocket,默认为 tcp)
tls_enable = true		#  通过 tls 连接服务端
tcp_mux = true		    #  开启 tcp 流多路复用(默认为 true,必须与服务端相同)

[ssh]			        #  代理名称
type = tcp		        #  协议型
local_ip = 127.0.0.1
local_port = 22		    #  需代理的端口
remote_port = 6000	    #  远程端口(远程访问时使用此端口,如为 0 则服务端随机分配一个端口)
bandwidth_limit = 1MB	#  限制此代理的宽带(单位为 KB 和 MB)
use_encryption = true	#  如为 true 则与服务端的通信会被加密(默认为 false)
use_compression = false	#  如为 true 则消息将被压缩

[web]			#  代理名称
type = http		#  类型
local_ip = 127.0.0.1
local_port = 80		    #  需代理的端口
use_encryption = true	#  如为 true 则与服务端的通信会被加密(默认为 false)
use_compression = false	#  如为 true 则消息将被压缩
http_user = admin	    #  访问网页时需要的用户名
http_pwd = passwd	    #  密码
subdomain = test.com	#  子域名
custom_domains = www.test.com	#  域名

三、基于 SSH

1、由于是基于 ssh 的,所以需开启内网的 ssh 确保能正常连接( kali 默认关闭 ssh )

  • 1)ssh 配置文件默认路径为 /etc/ssh/sshd_config
    找到图中的两个地方,并修改为一样的即可

在这里插入图片描述
在这里插入图片描述

  • 2)修改完后需重启服务:sudo systemctl restart ssh

2、配置服务端 frps.ini

[common]            #  共同配置,必需有该配置(请勿修改该代理名)
bind_port = 7000    #  frps 监听的端口

启动服务:sudo ./frps -c ./frps.ini

3、配置客户端 frpc.ini

[common]          #  共同配置,必需有该配置(请勿修改该代理名)
server_addr = 192.168.0.190     #  服务端 IP(需和服务端的 IP 配置为一致)
server_port = 7000              #  服务端端口(需和服务端的端口配置为一致)

[ssh]                   #  代理名称
type = tcp              #  协议类型
local_ip = 127.0.0.1
local_port = 22         #  需代理的本地端口(需能正常访问)
remote_port = 6000      #  远程端口(远程访问时使用的端口)

启动服务 sudo ./frpc -c ./frpc.ini

4、使用 xshell 进行连接
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述


四、基于 WEB

1、提供简单的文件访问服务

  • 1)配置服务端 frps.ini
[common]            #  共同配置,必需有该配置(请勿修改该代理名)
bind_port = 7000    #  frps 监听的端口

启动服务:sudo ./frps -c ./frps.ini

  • 2)配置客户端 frpc.ini
[common]        #  共同配置,必需有该配置(请勿修改该代理名)
server_addr = 192.168.0.190 #  服务端 IP(需和服务端的 IP 配置为一致)
server_port = 7000          #  服务端端口(需和服务端的端口配置为一致)

[plugin_static_file]        #  代理名称
type = tcp                  #  协议类型
remote_port = 6002          #  远程端口(远程访问时使用的端口)
plugin = static_file        #  加载 static_file 插件
plugin_local_path = /var    #  须访问的路径
plugin_http_user = admin    #  用户名
plugin_http_passwd = passwd #  密码

启动服务:sudo ./frpc -c ./frpc.ini

  • 3)服务端使用浏览器访问
    在这里插入图片描述
    在这里插入图片描述

2、基于 IP 访问 http

  • 1)配置服务端 frps.ini
[common]            #  共同配置,必需有该配置(请勿修改该代理名)
bind_port = 7000    #  frps 监听的端口
vhost_http_port = 2333      #  为代理的 http 设置一个监听端口(通过域名访问网页时须使用此处设置的端口访问)

启动服务:sudo ./frps -c ./frps.ini

  • 2)配置客户端 frpc.ini
[common]            #  共同配置,必需有该配置(请勿修改该代理名)
server_addr = 192.168.0.190     #  服务端 IP(需和服务端的 IP 配置为一致)
server_port = 7000              #  服务端端口(需和服务端的端口配置为一致)

[web]                   #  代理名称
type = tcp              #  协议类型
local_ip = 127.0.0.1
local_port = 80         #  需代理的本地端口(需能正常访问)
remote_port = 7890      #  远程端口(通过 IP 访问网页时须使用此处设置的端口访问)

启动服务:sudo ./frpc -c ./frpc.ini

或客户端 frpc.ini 配置文件内容为

[common]            #  共同配置,必需有该配置(请勿修改该代理名)
server_addr = 192.168.0.190     #  服务端 IP(需和服务端的 IP 配置为一致)
server_port = 7000              #  服务端端口(需和服务端的端口配置为一致)

#  访问时使用服务端 vhost_http_port 参数设置的端口进行访问
[web]                   #  代理名称
type = http             #  协议类型
local_ip = 127.0.0.1
local_port = 80         #  需代理的本地端口(需能正常访问)
custom_domains = 192.168.0.190  #  服务端 IP
  • 3)服务端使用浏览器访问
    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-k6ZKqxvZ-1599717651601)(./tupian/http/http_ip-2.png)]

3、基于域名访问 http

  • 1)配置服务端 frps.ini
[common]            #  共同配置,必需有该配置(请勿修改该代理名)
bind_port = 7000    #  frp 监听的端口
vhost_http_port = 2333      #  为代理的 http 设置一个监听端口(通过域名访问网页时须使用此处设置的端口访问)

启动服务:sudo ./frps -c ./frps.ini

  • 2)配置客户端 frpc.ini
[common]        #  共同配置,必需有该配置(请勿修改该代理名)
server_addr = 192.168.0.190     #  服务端 IP(需和服务端的 IP 配置为一致)
server_port = 7000              #  服务端端口(需和服务端的端口配置为一致)

[web]                   #  代理名称
type = http             #  协议类型
local_ip = 127.0.0.1
local_port = 80         #  需代理的本地端口(需能正常访问)
remote_port = 7890      #  远程端口(通过 IP 访问网页时须使用此处设置的端口访问)
custom_domains = www.test.com   #  设置需代理的域名(需能正常访问)

启动服务:sudo ./frps -c ./frps.ini

  • 3)由于是基于域名访问的所以须在服务端创建相应的域名记录
    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-a9XfbWI9-1599717651602)(./tupian/http/http.png)]

  • 4)服务端使用浏览器访问
    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-IOwNvPkv-1599717651603)(./tupian/http/http-2.png)]

4、基于域名访问 https
此处环境更改为:
VMware 15

  • kali-1(服务端) IP:192.168.0.190(桥接模式,代替公网)
  • Centos(客户端,搭建了 DNS、https 服务) IP:192.168.201.152(NAT模式,内网)

- 1)配置服务端 frps.ini
[common]            #  共同配置,必需有该配置(请勿修改该代理名)
bind_port = 7000            #  服务端 frp 监听的端口
vhost_https_port = 4433     #  为代理的 https 设置一个监听端口(通过域名访问网页时须使用此处设置的端口访问)

启动服务:sudo ./frps -c ./frps.ini

  • 2)配置客户端 frpc.ini
[common]            #  共同配置,必需有该配置(请勿修改该代理名)
server_addr = 192.168.0.190     #  服务端 IP(需和服务端的 IP 配置为一致)
server_port = 7000              #  服务端端口(需和服务端的端口配置为一致)

[https]                         #  代理名称
type = https                    #  协议类型
custom_domains = www.test.com   #  设置需代理的域名(需能正常访问)
plugin = https2http             #  加载 https2http 插件
plugin_local_addr = 127.0.0.1
plugin_crt_path = /etc/pki/tls/certs/localhost.crt      #  设置本地证书
plugin_key_path = /etc/pki/tls/private/localhost.key    #  设置本地密钥
plugin_host_header_rewrite = 127.0.0.1
plugin_header_X-From-Where = frp

启动服务:sudo ./frpc -c ./frpc.ini

  • 3)由于是基于域名访问的所以须在服务端创建相应的域名记录
    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-3rIrv0q0-1599717651604)(./tupian/https/hosts.png)]
  • 4)服务端使用浏览器访问
    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-pAWzydAL-1599717651604)(./tupian/https/https.png)]

5、仪表盘(检查 frp 状态和代理信息的统计)

  • 1)配置服务端 frps.ini
[common]       #  共同配置,必需有该配置(请勿修改该代理名)
bind_port = 7000            #  服务端 frp 监听的端口
dashboard_port = 7500       #  仪表盘监听的端口
dashboard_user = admin      #  仪表盘的用户名
dashboard_pwd = passwd      #  仪表盘的密码
max_pool_count = 5          #  创建地址池连接上限
vhost_http_port = 2333      #  为代理的 http 设置一个监听端口

启动服务:sudo ./frps -c ./frps.ini

  • 2)使用浏览器访问并输入用户名跟密码
    在这里插入图片描述
    在这里插入图片描述

6、管理界面(用于管理客户端,可实现热加载)

  • 1)配置服务端 frps.ini
[common]            #  共同配置,必需有该配置(请勿修改该代理名)
bind_port = 7000    #  frp 监听的端口

启动服务 sudo ./frps -c ./frps.ini

  • 2)配置客户端 frpc.ini
[common]        #  共同配置,必需有该配置(请勿修改该代理名)
server_addr = 192.168.0.190     #  服务端 IP(需和服务端的 IP 配置为一致)
server_port = 7000              #  服务端端口(需和服务端的端口配置为一致)
admin_addr = 127.0.0.1          #  管理地址
admin_port = 7400               #  监听的端口
admin_user = admin              #  访问时的用户名
admin_pwd = passwd              #  访问时的密码

#  管理界面默认只能本地访问,所以需将端口代理出去实现公网访问
[web_admin]                   #  代理名称
type = tcp                    #  协议类型
local_ip = 127.0.0.1      
local_port = 7400             #  需代理的本地端口(需能正常访问)
remote_port = 7400            #  远程端口(访问时使用的端口)

启动服务 sudo ./frpc -c ./frpc.ini

  • 3) 服务端使用浏览器访问
    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-juWi0STw-1599717651607)(./tupian/http/http_admin.png)]

五、基于 DNS

1、配置服务端 frps.ini

[common]        #  共同配置,必需有该配置(请勿修改该代理名)
bind_port = 7000        #  服务端 frp 监听的端口

启动服务:sudo ./frps -c ./frps.ini

2、配置客户端 frpc.ini

[common]            #  共同配置,必需有该配置(请勿修改该代理名)
server_addr = 192.168.0.190     #  服务端 IP(需和服务端的 IP 配置为一致)
server_port = 7000              #  服务端端口(需和服务端的端口配置为一致)

[ssh]                   #  代理名称
type = tcp              #  协议类型
local_ip = 127.0.0.1
local_port = 22         #  需代理的本地端口(需能正常访问)
remote_port = 6000      #  远程端口(访问时使用的端口)

[DNS]                   #  代理名称
type = udp              #  协议类型
local_ip = 127.0.0.1
local_port = 53         #  需代理的本地端口(需能正常访问)
remote_port = 5333      #  远程端口(访问时使用的端口)

启动服务:sudo ./frpc -c ./frpc.ini

3、在服务端使用 dig @192.168.0.190 -p 5333 -x 192.168.201.147 查看与 192.168.201.147 相关的域名解析

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-3WpSg8r9-1599717651607)(./tupian/dns/dns-2.png)]


六、socks5

1、配置服务端 frps.ini

[common]            #  共同配置,必需有该配置(请勿修改该代理名)
bind_port = 7000    #  frp 监听的端口

启动服务:sudo ./frps -c ./frps.ini

2、配置客户端 frpc.ini

[common]                #  共同配置,必需有该配置(请勿修改该代理名)
server_addr = 192.168.0.190 #  服务端 IP(需和服务端的 IP 配置为一致)
server_port = 7000          #  服务端端口(需和服务端的端口配置为一致)

[plugin_socks]              #  代理名称
type = tcp                  #  协议类型
remote_port = 8899          #  远程端口(服务端连接时使用此端口,如为 0 则服务端随机分配一个端口)
plugin = socks5             #  加载 socks5 插件
plugin_user = admin         #  用户名
plugin_passwd = passwd      #  密码
use_encryption = true       #  如为 true 则与服务端的通信会被加密(默认为 false)
use_compression = true      #  如为 true 则消息将被压缩

启动服务:sudo ./frpc -c ./frpc.ini

3、使用 Proxifier 进行连接
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-kdm3FNHh-1599717651608)(./tupian/socks5/lianjie-1.png)]

4、点击检查测试是否能正常连接
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-6RKqxUub-1599717651609)(./tupian/socks5/lianjie-2.png)]

5、代理完成
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Q2gk2Gx6-1599717651609)(./tupian/socks5/lianjie-3.png)]

  • 8
    点赞
  • 45
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值