frp内网穿透技术
FRP
FRP(Fast Reverse Proxy)是一个高性能的内网穿透工具,用于帮助内网服务通过公网访问。它主要适用于无法直接从外部访问的内网环境,比如家庭网络、企业内部网络等。
FRP 可以帮助你将内网的各种服务(如HTTP、SSH等)映射到外网上,方便远程访问。
主要特性
- 反向代理:FRP 支持 TCP、UDP、HTTP、HTTPS 等多种协议的反向代理。
- 配置灵活:通过配置文件可以灵活地设定不同的转发规则和监听端口。
- 安全性:支持通过密钥认证的方式确保连接的安全性。
- 多用户支持:可以为不同的用户配置不同的权限和资源限制
工作原理
FRP 包括两个部分:frps(服务端)和 frpc(客户端)。服务端部署在具有公网 IP 的服务器上,客户端部署在需要进行内网穿透的本地机器上。
客户端(frpc):在内网机器上配置要映射到外网的服务,然后连接到服务端。
服务端(frps):接收来自客户端的连接请求,根据配置将请求转发到指定的内网服务上。
快速部署
公网部署服务端
- 编写服务端配置
1
2
3
4
5
6
7
8
9
10
11cat << EOF > frps.toml
[common]
bind_port = 7000
authentication_method = token
设置 token,客户端连接时需要提供这个 token
token = ILoveChinese
dashboard_port = 7001
dashboard_user = admin
dashboard_pwd = admin123
EOF - 编写frps的docker-compose文件
1
2
3
4
5
6
7
8
9version: '3'
services:
frps:
image: snowdreamtech/frps:latest
container_name: frps
restart: always
network_mode: host
volumes:
- './frps.toml:/etc/frp/frps.toml' - 部署服务
1
docker-compose up -d
- 验证
1
http://${IP}:7001
内网部署客户端
代理到内网的其他机器上,在本机器充当客户端
编写客户端配置文件
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21cat << EOF > frpc.toml
[common]
server_addr = <公网服务器的IP地址>
server_port = 7000 # frps配置的bind_port
token = ILoveChinese
代理内网HTTP服务
[https_server]
type = tcp
local_ip = 192.168.5.208 # 假设内网服务部署在192.168.5.208:8843
local_port = 8843 # 代理服务的访问端口
remote_port = 7888 # 外网IP:该端口 就可以访问该服务 访问外网IP:7888 即可
代理内网hub仓库
[https_hub]
type = tcp
local_ip = 192.168.5.190 # 假设内网hub服务是部署在192.168.5.190,并且使用了自签证书使用https访问
local_port = 443
remote_port = 9001
使用: docker login -u username -p password http://外网IP:9001/
EOF注意:
如果docker登录报错如下:1
2WARNING! Using --password via the CLI is insecure. Use --password-stdin.
Error response from daemon: Get "https://外网IP:9001/v2/": tls: failed to verify certificate: x509: cannot validate certificate for 外网IP because it doesn't contain any IP SANs解决方案:
编辑docker的daemon.json文件,insecure-registries
增加外网IP和Port即可,"外网IP:9001"
,重启docker服务编写frpc的docker-compose文件
1
2
3
4
5
6
7
8
9
10version: '3'
services:
frps:
image: snowdreamtech/frpc:latest
container_name: frpsc
restart: always
network_mode: host
volumes:
- './frpc.toml:/etc/frp/frpc.toml'部署服务
1
docker-compose up -d
验证
通过访问外网IP:被代理的端口
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Erebus's Blog!
评论