使用frp工具实现内网穿透
本文使用frp的docker镜像 + JSON格式配置,以http服务为例
一、达到的目的
希望通过已有的公网服务器,直接访问内网中运行的http服务
二、所需条件
/**
* 公网服务器 ip
* eg: 8.0.0.0 阿里云
*/
/**
* 绑定到公网服务器的域名
* eg: network.com 阿里云
*/
/**
* 内网http服务
* eg: 192.168.1.3:6600
*/
三、服务端
下载docker镜像
# 使用的镜像是 snowdreamtech/frps
# 查找镜像 frps
docker search frps
# 拉取镜像
docker pull snowdreamtech/frps
配置frps.json
// frps配置文件本地路径 eg: /var/local/frp/frps.json
{
"bindPort": 7000, // 供客户端连接的端口
"vhostHTTPPort": 7700, // http协议穿透访问端口 - http穿透时,必须开启
"auth": {
"token": "your_token" // 客户端连接时的认证token
},
// 看板服务的配置
"webServer": {
"addr": "0.0.0.0",
"port": 7500,
"user": "admin",
"password": "123456"
}
}
运行frps容器
docker run -d --name frps -p 7000:7000 -p 7500:7500 -p 7700:7700 -v /var/local/frp/frps.json:/frp/frps.json snowdreamtech/frps -c /frp/frps.json
检查运行结果
# 查看frps容器日志
docker logs frps
# 如果有以下日志就是服务已经注册成功了
# 2024-11-12 05:53:51.174 [I] [frps/root.go:105] frps uses config file: /frp/frps.json
# 2024-11-12 05:53:51.427 [I] [server/service.go:237] frps tcp listen on 0.0.0.0:7000
# 2024-11-12 05:53:51.427 [I] [server/service.go:305] http service listen on 0.0.0.0:7700
# 2024-11-12 05:53:51.427 [I] [frps/root.go:114] frps started successfully
# 2024-11-12 05:53:51.427 [I] [server/service.go:351] dashboard listen on 0.0.0.0:7500
访问dashboard
# 阿里云安全组 - 入方向 放开7000, 7500, 7700 的端口访问
# 浏览器访问 http://network.com:7500 会提示输入账号密码,然后就可以看到看板页面了
四、客户端
# 使用的镜像是 snowdreamtech/frpc
# 查找镜像 frpc
docker search frpc
# 拉取镜像
docker pull snowdreamtech/frpc
// frpc配置文件本地路径 eg: /var/local/frp/frpc.json
{
"serverAddr": "8.0.0.0",
"serverPort": 7000,
"auth": {
"token": "your_token"
},
"proxies": [
{
"name": "abc",
"type": "http",
"localIP": "192.168.1.3", // 客户端所在设备可以访问的内网ip地址
"localPort": 6600, // 内网端口
"transport": {
"useEncryption": true,
"useCompression": true
},
"customDomains": ["abc.frp.network.com"]
}
]
}
运行frpc容器
docker run -d --name frpc -v /var/local/frp/frpc.json:/frp/frpc.json snowdreamtech/frpc -c /frp/frpc.json
检查运行结果
# 查看frps容器日志
docker logs frpc
# 或者到dashboard页面看 proxies 中的http有没有映射
访问项目
# 域名配置 - 阿里云域名管理中 添加域名解析规则 frp, *.frp
# 浏览器访问 http://abc.frp.network.com:7700 就可以访问到内网项目
# 在阿里云ssh连接中,使用curl -I http://abc.frp.network.com:7700 也可以测试
到此,整体结束了
五、参考文档
- frp文档: https://gofrp.org/zh-cn/docs/