Caddy2学习笔记——Caddy2反向代理Frp内网穿透和反向代理PVE
创始人
2024-05-30 21:45:04

一、环境概述

  1. 本人拥有一个国内云服务商的云主机和一个备案好的域名,通过caddy2来作为web服务器。

  2. 我的云主机是公网ip,地址为:43.126.100.78;我备案好的域名是:hotgirl.com 。后面的文章都以上述的ip和域名来进行讲解。

  3. 域名 hotgirl.com 已经通过云服务商的域名解析功能,解析到43.126.100.78。

二、安装Frp服务端

我这里安装的是docker版本的frps。

  1. 创建目录
#创建frps目录
mkdir -p /docker/frps
  1. 配置文件
[common]
bind_port = 1600 
kcp_bind_port = 1600
token = YU&*JB%
dashboard_port = 2500 
dashboard_user = root 
dashboard_pwd = root vhost_http_port = 8108
vhost_https_port = 4334authentication_timeout=0
privilege_mode=truemax_pool_count = 50
tcp_mux=true
log_file = ./frps.log  
log_level = info
log_max_days = 3subdomain_host = frp.hotgirl.com

上述配置文件存为frps.ini ,然后放入/docker/frps 路径内。

  1. docker-compose.yaml文件
version: '3'
services:frps:restart: alwaysnetwork_mode: hostvolumes:- './frps.ini:/etc/frp/frps.ini'container_name: frpsimage: snowdreamtech/frps
  1. 创建容器
    cd到“/docker/frps”这个目录下,执行“docker-compose up -d” 命令。
cd /docker/frpsdocker-compose up -d

三、解析域名和开放端口

  1. 域名解析
    这里我们用“frp.hotgirl.com” 来作为内网frp穿透的服务地址。首先在域名服务商的解析服务中,添加A记录,将把 “frp.hotgirl.com” 解析到云主机的公网ip43.126.100.78。然后将*.frp 用CNAME解析到“frp.hotgirl.com”。如下图所示:
    在这里插入图片描述
    2.开发端口
    需要在你的云服务器的防火墙,放行 frps.ini 这个文件中包含的 所有端口。
firewall-cmd --add-port=1600/tcp --permanentfirewall-cmd --add-port=2500/tcp --permanentfirewall-cmd --add-port=8108/tcp --permanentfirewall-cmd --add-port=4334/tcp --permanent#重启防火墙
firewall-cmd --reload

然后在云主机的“配置安全组规则” 中,手动添加上述四个端口,这里我就不截图了,可以参考 Caddy2反向代理docker版本的headscale 这篇文章中的第四部分内容。

四、Frp客户端配置

客户端根据自己的平台来选择服务安装或者docker安装,都一样。这里贴一下配置:

[common]
server_addr = 43.126.100.78 #远程frp服务器IP
server_port = 1600 #远程frp服务器端口
token = YU&*JB% #远程frp服务器token#穿透内网的OpenWRT
[http_OpenWRT]
type = http
local_ip = 192.168.1.1 #根据自己内网网段修改
local_port = 80 #OpenWRT管理地址的端口
remote_port = 8108 #远程frp服务器的http服务端口号
#custom_domains = 自定义配置的域名
#我这里用的子域名模式,只需要在服务端配置了“subdomain_host = frp.hotgirl.com”
#后面客户端只需要填写subdomain = XXX
#就可以通过 XXX.frp.hotgirl.com 来访问内网的web服务了
subdomain = opt #匹配服务端配置的subdomain_host,随后通过opt.frp.hotgirl.com 来访问内网的OpenWRT#穿透内网的NAS
[http_Nas]
type = http
local_ip = 192.168.1.7 #根据自己内网网段修改
local_port = 5000 #nas管理地址的端口
remote_port = 8108 #远程frp服务器的http服务端口号
#custom_domains = 自定义配置的域名
#我这里用的子域名模式,只需要在服务端配置了“subdomain_host = frp.hotgirl.com”
#后面客户端只需要填写subdomain = XXX
#就可以通过 XXX.frp.hotgirl.com 来访问内网的web服务了
subdomain = nas #匹配服务端配置的subdomain_host,随后通过nas.frp.hotgirl.com 来访问内网的nas

五、Caddy2反向代理Frp

根据我前面的文章 Caddy2的安装、部署和编译小白教程 这篇文章中讲解的,修改Caddyfile这个文件:

vim /etc/caddy/Caddyfile

加入以下代码:

*.frp.hotgirl.com {tls {dns alidns {access_key_id "ali key_id"access_key_secret "ali key_secret"}}reverse_proxy 127.0.0.1:8108{header_up X-Real-IP {http.request.remote}header_up X-Forwarded-For {http.request.remote}header_up X-Forwarded-Port {http.request.port}header_up X-Forwarded-Proto {http.request.scheme}}
}

因为我内网的web服务多,所以我就用“ *.frp.hotgirl.com ”这种简便的方式,但是这种泛域名需要用caddy的dns插件实现,需要自行编译,编译的教程已经在Caddy2的安装、部署和编译小白教程 这篇文章中讲过了,不明的同学可以回看一下。当然如果,你的内网的web服务不是很多,也没有自行编译caddy,用的还是官方标准版本,那么还可以一个web服务一个web服务的写,比如内网的OpenWRT和内网的nas,就可以这样写:

opt.frp.hotgirl.com {tls  112244@qq.comreverse_proxy 127.0.0.1:8108{header_up X-Real-IP {http.request.remote}header_up X-Forwarded-For {http.request.remote}header_up X-Forwarded-Port {http.request.port}header_up X-Forwarded-Proto {http.request.scheme}}
}nas.frp.hotgirl.com {tls  112244@qq.comreverse_proxy 127.0.0.1:8108{header_up X-Real-IP {http.request.remote}header_up X-Forwarded-For {http.request.remote}header_up X-Forwarded-Port {http.request.port}header_up X-Forwarded-Proto {http.request.scheme}}
}

六、Caddy2反向代理Frp内网PVE

  1. 说明
    大家都知道,内网PVE的管理端口是8006,而且是https,如果直接用上面反代Frp的方式是不行的。

  2. 用Frp中的TCP模式
    那么修改后的客户端的frpc.ini配置文件如下:

[common]
server_addr = 43.126.100.78 #远程frp服务器IP
server_port = 1600 #远程frp服务器端口
token = YU&*JB% #远程frp服务器token#穿透内网的OpenWRT
[http_OpenWRT]
type = http
local_ip = 192.168.1.1 #根据自己内网网段修改
local_port = 80 #OpenWRT管理地址的端口
remote_port = 8108 #远程frp服务器的http服务端口号
#custom_domains = 自定义配置的域名
#我这里用的子域名模式,只需要在服务端配置了“subdomain_host = frp.hotgirl.com”
#后面客户端只需要填写subdomain = XXX
#就可以通过 XXX.frp.hotgirl.com 来访问内网的web服务了
subdomain = opt #匹配服务端配置的subdomain_host,随后通过opt.frp.hotgirl.com 来访问内网的OpenWRT#穿透内网的NAS
[http_Nas]
type = http
local_ip = 192.168.1.7 #根据自己内网网段修改
local_port = 5000 #nas管理地址的端口
remote_port = 8108 #远程frp服务器的http服务端口号
#custom_domains = 自定义配置的域名
#我这里用的子域名模式,只需要在服务端配置了“subdomain_host = frp.hotgirl.com”
#后面客户端只需要填写subdomain = XXX
#就可以通过 XXX.frp.hotgirl.com 来访问内网的web服务了
subdomain = nas #匹配服务端配置的subdomain_host,随后通过nas.frp.hotgirl.com 来访问内网的nas#穿透内网的PVE
[tcp]
type = tcp
local_ip = 192.168.1.2 #PVE的管理页面地址
local_port = 8006      #PVE的管理页面的端口
remote_port = 8777     #映射到云服务器上

上面这个 “8777” 端口,可以自定义,根据自己需要修改。但是还是需要再云服务器上,放行这个端口:

firewall-cmd --add-port=8777/tcp --permanent#重启防火墙
firewall-cmd --reload

然后在云主机的“配置安全组规则” 中,手动添加上述8777端口,这里我就不截图了,可以参考 Caddy2反向代理docker版本的headscale 这篇文章中的第四部分内容。

  1. 解析PVE的域名
    在域名服务商的解析服务中,添加A记录,将把 “pve.hotgirl.com” 解析到云主机的公网ip43.126.100.78。这一步万不能漏掉,因为在caddy中,每一个代理都需要域名指向明确的公网IP地址。
  2. 再次修改Caddyfile
    根据我前面的文章 Caddy2的安装、部署和编译小白教程 这篇文章中讲解的,修改Caddyfile这个文件:
vim /etc/caddy/Caddyfile

修改为以下代码:

opt.frp.hotgirl.com {tls  112244@qq.comreverse_proxy 127.0.0.1:8108{header_up X-Real-IP {http.request.remote}header_up X-Forwarded-For {http.request.remote}header_up X-Forwarded-Port {http.request.port}header_up X-Forwarded-Proto {http.request.scheme}}
}nas.frp.hotgirl.com {tls  112244@qq.comreverse_proxy 127.0.0.1:8108{header_up X-Real-IP {http.request.remote}header_up X-Forwarded-For {http.request.remote}header_up X-Forwarded-Port {http.request.port}header_up X-Forwarded-Proto {http.request.scheme}}
}pve.hotgirl.com {encode gziptls 112244@qq.comreverse_proxy  https://127.0.0.1:8777{transport http {tls_insecure_skip_verify}}
}

不出意外,输入“https://pve.hotgirl.com” 就可以访问内网的PVE了。
在这里插入图片描述

相关内容

热门资讯

北京的名胜古迹 北京最著名的景... 北京从元代开始,逐渐走上帝国首都的道路,先是成为大辽朝五大首都之一的南京城,随着金灭辽,金代从海陵王...
北京的名胜古迹 北京最著名的景... 北京从元代开始,逐渐走上帝国首都的道路,先是成为大辽朝五大首都之一的南京城,随着金灭辽,金代从海陵王...
苗族的传统节日 贵州苗族节日有... 【岜沙苗族芦笙节】岜沙,苗语叫“分送”,距从江县城7.5公里,是世界上最崇拜树木并以树为神的枪手部落...
世界上最漂亮的人 世界上最漂亮... 此前在某网上,选出了全球265万颜值姣好的女性。从这些数量庞大的女性群体中,人们投票选出了心目中最美...
长白山自助游攻略 吉林长白山游... 昨天介绍了西坡的景点详细请看链接:一个人的旅行,据说能看到长白山天池全凭运气,您的运气如何?今日介绍...