frp实现基于反向代理的内网穿透
个人博客主页: xzajyjs.cn
frp是什么
简单地说,frp就是一个反向代理软件,它体积轻量但功能很强大,可以使处于内网或防火墙后的设备对外界提供服务,它支持HTTP、TCP、UDP等众多协议。
实验环境
- 一台拥有公网IP的VPS(Linux)
- 需要进行内网穿透的实验机Windows(暂不支持macOS)
三种服务样例
1. ssh服务
在Linux上和Win上分别下载对应的最新Release版本(点我跳转)
tar -zxv frp_0.38.0_linux_amd64.tar.gz
cd frp_0.38.0_linux_amd64
在我们的公网服务器 Server A上配置 frps.ini
设置通信端口
# frps.ini
[common]
bind_port = 7000
启动服务
./frps -c frps.ini
接着配置我们Windows端的 frpc.ini
(这次我们实验使用默认的ssh类型即可)
# frpc.ini
[common]
server_addr = x.x.x.x
server_port = 7000
[ssh]
type = tcp
local_ip = 127.0.0.1
local_port = 22
remote_port = 7890
server_addr 填入我们的公网IP
server_port 刚刚的通信端口
local_ip 需要进行内网穿透的主机ip
local_port 是需要进行映射的端口
remote_port 是映射至公网服务器的端口
配置好后开启服务连接
.\frpc.exe -c frpc.ini
此时就可以通过公网IP+端口(7890)
连接我们windows的22端口了
2. http服务
配置vps的frps.ini
# frps.ini
[common]
bind_port = 7000
vhost_http_port = 8080
配置win的frpc.ini
# frpc.ini
[common]
server_addr = x.x.x.x
server_port = 7000
[web]
type = http
local_port = 80
custom_domains = www.example.com
此时通过访问公网IP+8080
端口访问到我们部署在win上80端口的web服务
3. dns服务
配置frps.ini
# frps.ini
[common]
bind_port = 7000
配置frpc.ini
# frpc.ini
[common]
server_addr = x.x.x.x
server_port = 7000
[dns]
type = udp
local_ip = 8.8.8.8
local_port = 53
remote_port = 6000
使用dig进行测试
dig @[公网IP] -p 6000 www.bing.com
其他
frp支持远远不止这些服务,当然也可以自定义服务。具体可阅读手册