『瀚思彼岸』» 智能家居技术论坛

 找回密码
 立即注册
查看: 391|回复: 13

[技术探讨] 利用CF实现无公网v4ip但是又v6ip实现公网访问

[复制链接]

19

主题

208

帖子

1416

积分

论坛DIY达人

积分
1416
金钱
1183
HASS币
100
发表于 2024-5-10 21:26:41 | 显示全部楼层 |阅读模式
本帖最后由 zro22 于 2024-5-11 10:49 编辑

好多功能需要HA可以公网访问,但是大家毕竟都是基本没有公网v4 IP的,好在一般都有v6ip。
注册一个域名,然后套上CF,就可以实现让CF帮忙从v4公网转到v6再到内网v4访问的效果。
具体方法

# 1 CF注册
电子邮件和密码注册,注意密码规则
![](

                               
登录/注册后可看大图
)
注册完毕点击 Add a website or application
(

                               
登录/注册后可看大图
)
填写你的域名,点击Continue
(

                               
登录/注册后可看大图
)
Free 肯定选择Free。
然后会出现当前域名的解析结果,读取完毕后点击Continue。
(

                               
登录/注册后可看大图
)
然后会自动跳到填写的域名控制面板,提示还未激活,记录下来CF给的两个DNS服务器。
(

                               
登录/注册后可看大图
)

接下来需要到你的域名提供商去设定,比如我的是阿里云的域名。
(

                               
登录/注册后可看大图
)
登录阿里云之后,打开控制台,点击域名,在想要加到CF的域名后面点击管理
(

                               
登录/注册后可看大图
)
左边选择DNS修改
(

                               
登录/注册后可看大图
)
点击修改DNS服务器
(

                               
登录/注册后可看大图
)
修改为刚才CF提供的两个服务器后点击确定,然后过一会儿去CF刷新看看域名是否激活成功。
这个修改DNS服务器的具体步骤CF也有说明。
至此CF的设定告一段落,可以开始配置Lucky。

如果不用Lucky可以直接跳到<a href="#5step">第5步</a>和第6步用CF的Zero Trust同样实现公网访问。

# 2 Lucky安装
Lucky负责DDNS以及反代,DDNS功能和DDNS-go一样,可以省掉DDNS-go。
Lucky采用docker安装,如下命令安装,注意修改一下映射卷的地址
> docker run -d --name lucky --restart always --net=host -v /volume2/docker/goodluck:/goodluck gdy666/lucky

------------

安装完毕后端口16601打开,默认用户名666密码666.登录后记得修改密码。


# 3 Lucky配置DDNS
打开lucky修改完密码后,左边选择动态域名->添加任务
  (

                               
登录/注册后可看大图
)
服务商选择Cloudflare
类型选择ipv6,因为没有ipv4公网IP,如果有v4公网,可以把v4也选上。
域名列表填写自己的域名以及*.域名两条*
  (

                               
登录/注册后可看大图
)
这里面需要填写CF的token,直接点击创建令牌->编辑区域DNS(使用模板)会跳到CF网站创建API令牌界面。
(

                               
登录/注册后可看大图
)
点击创建令牌后,点击编辑区域DNS后面的使用模板。
(

                               
登录/注册后可看大图
)
然后区域资源里面的特定资源后面select下拉框选择对应的域名。然后点击继续以显示摘要
(

                               
登录/注册后可看大图
)
这个时候会出现摘要信息,包含指定域名的DNS修改权限,点击创建令牌。
(

                               
登录/注册后可看大图
)
接下来会出现你的访问令牌,这个令牌以后不会在显示,可以复制保存下来。
(

                               
登录/注册后可看大图
)
接着回到Lucy界面,把这个令牌填入,然后点击添加任务
(

                               
登录/注册后可看大图
)
稍等片刻回到CF控制台DNS->记录,应该可以看到Lucky添加的两条DNS记录,对应V6地址。

                               
登录/注册后可看大图

这时候IP后面的代理状态应该是仅DNS,图标是灰色的云朵。点击需要代理的域名右边编辑,代理状态下面的勾打开,然后保存。
(

                               
登录/注册后可看大图
)
这时候域名IP后面应该变成黄色云朵 已代理。
至此CF以及Lucky DDNS已经设定完毕。可以试试域名加端口看能否访问相应的服务。
这里需要注意CF只支持以下端口
HTTP 80 8080 8880 2052 2082 2086 2095
HTTPS 443 2053 2083 2087 2096 8443
如果访问正常,就已经通过CF实现了公网V4转V6的访问。
如果客户端有v6的时候能打开,但是没有v6的时候打不开,就是没成功。
(

                               
登录/注册后可看大图
)


# 4 Lucky反代实现不同子域名同一个端口转到不同主机:端口的服务
上面已经实现了无v4情况下通过CF外网访问的效果,但是CF提供的端口有限,所以需要用Lucky反代的功能实现更多访问
打开Lucky界面,左边选择web服务->添加web服务规则
(

                               
登录/注册后可看大图
)
名称随意,监听选择tcp6,因为没有v4公网ip,从CF过来的都是v6。端口选择上面CF支持的HTTP端口,这里8880示意。
(

                               
登录/注册后可看大图
)
然后点击添加web服务子规则
(

                               
登录/注册后可看大图
)
名称无所谓,服务类型反向代理前端地址自己随意定义子域名,比如想要访问jellyfin,前端地址添加a.youdomain.com 这里域名需要修改为自己的。
后端地址是内网访问jellyfin的地址。
万事大吉启用。然后点击下面的添加web服务规则。
至此一条反代就实现了,可以试试访问a.youdomain.com:8880 看能否打开jellyfin界面。

<a id="5step"> - </a>
# 5 开启HTTPS访问
首先到CF控制台SSL/TLS->概述,右边选择完全。
(

                               
登录/注册后可看大图
)
然后到边缘证书看,应该有CF管理的域名对应的证书。
(

                               
登录/注册后可看大图
)
到Lucky上和第四步一样添加web规则,但是打开TLS,并且选择CF支持的HTTPS端口,比如8443.同样添加自规则后测试是否https可以访问
(

                               
登录/注册后可看大图
)

# 6 不用Lucky用CF的Zero Trust实现访问的方法
依靠CF的Zero Trust同样实现公网访问的目的,并且地址不用端口号。http和https双协议访问。
按照上篇文章注册好域名和CF设置好之后。
回到CF控制台首页,点击Zero Trust
(

                               
登录/注册后可看大图
)
然后Networks,选择Tunnels
(

                               
登录/注册后可看大图
)
点击Create a tunnel
(

                               
登录/注册后可看大图
)
选择Cloudflared然后点击下一步
(

                               
登录/注册后可看大图
)
名字随意,点击Save tunnel
(

                               
登录/注册后可看大图
)
创建完tunnel后,需要在内网找一台电脑运行cloudflare的客户端,具体方法可以参照这个页面
(

                               
登录/注册后可看大图
)
客户端成功运行后,可以在Connectors下面发现运行的设备。
(

                               
登录/注册后可看大图
)
然后进入Public Hostnames页面就可以创建服务了。
比如内网服务地址为http://192.168.1.1:8123 的Homeassistant。按照如下配置
Subdomain 自己随便写,自己好记的,比如ha。
Domain为自己的域名,下拉框选择。
Path可以空着。
Type选择http,如果内网是https就选择https
URL写192.168.1.1:8123
然后点Save tunnel(

                               
登录/注册后可看大图
)
然后就可以通过http://ha.youdomain.com 或者 https://ha.youdomain.com 访问内网的HA服务了。
同样的不同的二级域名可以添加想要外网访问的不同服务。
后期的的入口在这里 Configure
(

                               
登录/注册后可看大图
)


评分

参与人数 3金钱 +34 收起 理由
jjcs + 12 注意一下域名
ghostist + 20 感谢楼主分享!
vectseven + 2 高手,这是高手!

查看全部评分

回复

使用道具 举报

1

主题

104

帖子

571

积分

高级会员

Rank: 4

积分
571
金钱
467
HASS币
0
发表于 2024-5-10 21:53:17 | 显示全部楼层
不管怎么样!!先顶一下!!空了试试!!
回复

使用道具 举报

19

主题

462

帖子

2028

积分

金牌会员

Rank: 6Rank: 6

积分
2028
金钱
1566
HASS币
0
发表于 2024-5-10 22:05:09 | 显示全部楼层
Zero Trust的方案比较好
只要本地部署一个容器
回复

使用道具 举报

1

主题

19

帖子

541

积分

高级会员

Rank: 4

积分
541
金钱
522
HASS币
0
发表于 2024-5-10 22:08:28 | 显示全部楼层
二级域名可以套吗
回复

使用道具 举报

0

主题

132

帖子

1022

积分

金牌会员

Rank: 6Rank: 6

积分
1022
金钱
890
HASS币
0
发表于 2024-5-10 22:19:51 | 显示全部楼层
不错,感谢分享,占时还有IPV4公网,等备用
回复

使用道具 举报

4

主题

47

帖子

1220

积分

论坛技术达人

积分
1220
金钱
1173
HASS币
0
发表于 2024-5-10 23:01:34 | 显示全部楼层
公网访问,请注意安全。尤其是安装了摄像头的
回复

使用道具 举报

39

主题

180

帖子

795

积分

高级会员

Rank: 4

积分
795
金钱
615
HASS币
0
发表于 2024-5-10 23:37:24 | 显示全部楼层
“创建完tunnel后,需要在内网找一台电脑运行cloudflare的客户端”

HA有第三方的cloudflare tunnel插件,不需要找另一台电脑。
回复

使用道具 举报

39

主题

180

帖子

795

积分

高级会员

Rank: 4

积分
795
金钱
615
HASS币
0
发表于 2024-5-10 23:38:28 | 显示全部楼层

可以使用二级域名访问HA,但是要把所属的一级域名的DNS服务器改成cloudflare的
回复

使用道具 举报

39

主题

2081

帖子

7830

积分

元老级技术达人

积分
7830
金钱
5734
HASS币
110
发表于 2024-5-11 08:58:16 | 显示全部楼层
收藏备用
IPV4公网宽带成传家宝了....
回复

使用道具 举报

43

主题

1367

帖子

5712

积分

论坛元老

Rank: 8Rank: 8

积分
5712
金钱
4335
HASS币
40
发表于 2024-5-11 09:02:09 来自手机 | 显示全部楼层
域名已经暴露,请注意图片
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|Hassbian

GMT+8, 2024-6-2 14:18 , Processed in 4.184130 second(s), 33 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表