frp使用

frp使用

frp介绍

frp 是一个专注于内网穿透的高性能的反向代理应用,支持 TCP、UDP、HTTP、HTTPS 等多种协议。可以将内网服务以安全、便捷的方式通过具有公网 IP 节点的中转暴露到公网。

端口映射

工具:frp

原理功能:

可以把ip1的port1转发到ip2的port2上,例子就是把本地的ssh22端口转发到公网vps的某某端口上实现远程访问内网机器

具体实现:

frps.ini

[common]
# 服务器开放给客户端的frp端口
bind_port = 20080
# http端口
vhost_http_port = 20081
# https端口
vhost_https_port = 20082
dashboard_addr = 0.0.0.0
# 控制面板端口,用户名,密码
dashboard_port = 20083
dashboard_user = admin
dashboard_pwd = your_passwd
# 自己用于frp服务的域名
subdomain_host = www.viewofthai.link
# frps服务token,拥有此token的客户端才允许连接
token = yourtoken

可以看到frps只规定了管理口和连接口(业务口),以及token

frpc.ini

[common]
# frps服务器地址,可用域名,即服务端的frp.yourdomain.com
server_addr = 8.129.42.140
# 上面frps.ini配置的端口
server_port = 20080
# frps服务token
token = yourtoken

[tcp]
type = tcp
local_ip = 127.0.0.1
local_port = 22
remote_port = 20084

[vnc]
type = tcp
local_ip = 127.0.0.1
local_port = 5900
remote_port = 20085

可以看到frpc规定了要转发的ip1和port1,注意token要一致

正向代理

工具:frp+proxifier

原理:

就是把内网流量转发到一个vps上再让其请求互联网,这样对外只显示这个vps的ip,造成服务端不知道客户端真实ip的情况,举例就是用vpn访问谷歌:

image-20230409140154228

(起因是有个公网机器它的白名单只包含了我的vps,所以我必须通过vps当作跳板机访问)

具体实现:

frps.ini (和之前的一样)

[common]
# 服务器开放给客户端的frp端口
bind_port = 20080
# http端口
vhost_http_port = 20081
# https端口
vhost_https_port = 20082
dashboard_addr = 0.0.0.0
# 控制面板端口,用户名,密码
dashboard_port = 20083
dashboard_user = admin
dashboard_pwd = your_passwd
# 自己用于frp服务的域名
subdomain_host = www.viewofthai.link
# frps服务token,拥有此token的客户端才允许连接
token = yourtoken

可以看到frps只规定了管理口和连接口(业务口),以及token

frpc.ini

[common]
server_addr = 8.129.42.140
server_port = 20080
token = yourtoken

[proxy]
type = tcp
remote_port = 20086
plugin = http_proxy
use_encryption = true   
use_compression = true

[socks5_proxy]
remote_port = 20087
plugin = socks5
use_encryption = true   
use_compression = true

然后proxifier要配置一下

image-20230409141509049

这个是转发http的

image-20230409145012535

这个是转发socks5的

尝试转发一下,抓包可以看到请求的确是从这个机器出来的

image-20230908113816325

反向代理

工具:frp+proxifier

​ frp+proxychain

原理功能:

当你需要访问一片内网时,你需要把DMZ的某个机器当作跳板机,让跳板机转发你的流量。还有就是nginx反代负载均衡的问题,也是nginx转发了你请求的流量(可以把它看作跳板机),由于只知道会发生转发但不知道转发到哪,导致客户端不知道哪个服务器是在处理你的业务,此时这些服务器对外就表现为一个服务器

image-20230409141945124

frps.ini

[common]
bind_addr = 192.168.107.6
bind_port = 8000    
dashboard_addr = 0.0.0.0        
dashboard_port = 7600       
dashboard_user = root       
dashboard_pwd  = yourpasswd   
token = yourtoken             
heartbeat_timeout = 90     
max_pool_count = 5  

可以看到frps只规定了管理口和连接口(业务口),以及token

frpc.ini

[common]
tls_enable = true
server_addr = 192.168.107.6
server_port = 8000 
token = yourtoken      
pool_count = 5
protocol = tcp
health_check_type = tcp
health_check_interval_s = 100
[proxies]
remote_port = 6000
plugin = socks5
use_encryption = true   
use_compression = true

proxifier

image-20230409142144316

proxychains

当你需要sockets5代理转发流量时,比如说nmap扫描等等

vim /etc/proxychains4.conf 

image-20230409143057617

代理总结

共同点:

socks5都是填frps那里的server_addr和frpc的remote_port (本质都在frps所在的服务器上)

不同点:

正代是 a-b间通信,a填的是b的ip:port

反代是 a-b间通信,c填的是b的ip:port

其实不用刻意区分异同点,要用的时候复制黏贴就行

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇