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

 找回密码
 立即注册
查看: 789|回复: 6

[技术探讨] 使用ipv6+ddns+Nginx实现公网访问HA折腾记录

[复制链接]

20

主题

134

帖子

1000

积分

金牌会员

Rank: 6Rank: 6

积分
1000
金钱
866
HASS币
0
发表于 2024-9-24 01:08:56 | 显示全部楼层 |阅读模式
本帖最后由 levkan 于 2024-9-24 01:34 编辑

本文记录我实现远程访问HA的过程,供大家参考。首次折腾openwrt、nginx,如有不足还请大佬们指出,感谢!

之前一直用花生壳的免费版内网穿透,为什么不用其他方法?问就是对于小白而言这是最简单的实现远程访问的方法,HTTPS域名免费提供无需自己设置,只需在HA主机上安装软件包生成SN码,然后在网页上绑定设备并设置好内网IP端口,即可直接使用花生壳提供的域名远程访问HA。然而近期花生壳却对免费用户增加加载页,导致使用体验变得非常差,无奈只能选择其他方法。易有云的DDNSTO经常要登录扫码,根本无法日常使用;隧道打洞类的客户端也要安装软件感觉比较麻烦;于是就选择使用IPv6+DDNS来实现,缺点是客户端也需支持ipv6,不过使用移动数据应该都是支持的。我用的方案是使用dnspod解析域名到openwrt,然后使用nginx反代到HA
屏幕截图 2024-09-23 204836.png     IMG_20240923_205212.jpg


路由器
无线路由器用的是小米的,小米路由器的ipv6防火墙只能开关不能规则放行,全部暴露其他智能设备到公网不太安全,这也是阻碍我之前就使用ipv6的原因。因此两百多买了个友善r3s当主路由跑openwrt和nginx(配置更低的r2s某宝某拼仍要两百出头,而r4/r5系列就要贵得多)。为了绕开光猫的防火墙,在早之前就已经将宽带改为路由器拨号,软路由到了之后就接替小米路由进行拨号任务
IMG_20240923_220456.jpg

域名
虽然花生壳免费提供域名,但不好记且带https的域名每年都会到期需要更换,恰巧发现Spaceship网站有部分xyz后缀的纯数字域名低至每年不到5元,续满十年也就不到50元,于是就买了一个

dnspod
花生壳不支持添加其他服务商的域名,因此使用dnspod做ddns服务。在dnspod登录腾讯云账号,添加自己的域名,并根据提示将dnspod的DNS服务器填入域名服务商的设置中,然后进入账号中心->API密钥->DNSPod Token中创建密钥,记录ID和Token备用

openwrt
设置好路由器的基本功能之后,就开始设置防火墙,将常规设置的入站和转发改为拒绝,新建一条通信规则设置一个端口允许从wan口入站。openwrt的动态dns服务没有预置dnspod,需要在系统->软件包下载ddns-scripts-dnspod,然后在服务->动态DNS中添加新服务,然后进行编辑,主机名填入主域名,域名我使用的是二级域名,如:ha.123456.xyz,用户名和密码分别填入前面记录的ID和Token,高级设置选择的是自动生成的wan_6接口。保存应用后,点击一次重新加载就会自动在dnspod上生成解析记录,之后就会自动更新ipv6地址到dnspod
屏幕截图 2024-09-23 222405.png    屏幕截图 2024-09-23 223032.png    屏幕截图 2024-09-23 234827.png    屏幕截图 2024-09-24 000503.png

nginx
在openwrt的docker中安装nginxWebUI,该插件提供图形化设置界面,并支持自动续签SSL证书,对小白比较友好,安装方法可参考github.com/cym1102/nginxWebUI。安装完成注册后,先进入证书注册,根据提示格式输入泛域名,提交后点击获取DNS记录,将显示的记录填写至ddns服务商之中,然后点击申请获取证书,并打开续签开关。然后进入反向代理添加代理,监听端口填入防火墙开放的端口,监听域名填入前面设置的二级域名,开启ssl并选择内置证书,添加代理目标并填入HA的内网地址,反代HA需开启websocket,其他选项可参考下图。最后进入启用配置页面,依次点击校验文件、替换文件、重新装载。全部完成之后就可以通过 https://二级域名:开放的端口号 来进行访问HA了,如:https://ha.123456.xyz:64983
屏幕截图 2024-09-24 002308.png     屏幕截图 2024-09-24 003159.png    屏幕截图 2024-09-24 003459.png

反代其他服务
如果还有其他服务需要远程访问,可自行在ddns服务商上添加一条CNAME记录,记录值填入在动态DNS中使用的二级域名。然后在nginx中克隆一条反向代理,修改域名和目标网址,即可使用如:nas.123456.xyz:64983 来访问其他的服务了
屏幕截图 2024-09-24 012349.png







回复

使用道具 举报

20

主题

134

帖子

1000

积分

金牌会员

Rank: 6Rank: 6

积分
1000
金钱
866
HASS币
0
 楼主| 发表于 2024-9-24 01:15:53 来自手机 | 显示全部楼层
2楼。。。。。
回复

使用道具 举报

20

主题

122

帖子

790

积分

高级会员

Rank: 4

积分
790
金钱
668
HASS币
0
发表于 2024-9-24 11:49:09 | 显示全部楼层
我用frpc这个方案也还行
回复

使用道具 举报

21

主题

519

帖子

3151

积分

论坛元老

Rank: 8Rank: 8

积分
3151
金钱
2632
HASS币
30
发表于 2024-9-24 13:59:10 | 显示全部楼层
我用的是openvpn,但现在情况很诡异,暂时我自己也没搞定……
两个住处,分别各有一台ikuai路由,通过openvpn成功连接
大部分smb共享、内网服务都可以访问
A住处有一台unraid主机,里面跑了两个虚拟机,一个就是ha,另一个是个ubuntu,跑了一些我自己的服务
我在另一个住处B,可以正常访问ubuntu和里面的服务,但是unraid宿主机连不上,ha也连不上……
回复

使用道具 举报

2

主题

28

帖子

658

积分

高级会员

Rank: 4

积分
658
金钱
630
HASS币
0
发表于 2024-9-26 22:05:55 | 显示全部楼层
能实现https访问吗
回复

使用道具 举报

0

主题

27

帖子

416

积分

中级会员

Rank: 3Rank: 3

积分
416
金钱
389
HASS币
0
发表于 2024-9-26 22:26:40 来自手机 | 显示全部楼层
直接小米路由器开ssh,安装lucky完事
回复

使用道具 举报

20

主题

134

帖子

1000

积分

金牌会员

Rank: 6Rank: 6

积分
1000
金钱
866
HASS币
0
 楼主| 发表于 2024-9-28 09:42:21 | 显示全部楼层
C哩C哩 发表于 2024-9-26 22:05
能实现https访问吗

可以,申请ssl证书就是为了https
回复

使用道具 举报

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

本版积分规则

Archiver|手机版|小黑屋|Hassbian

GMT+8, 2024-11-21 20:22 , Processed in 1.247588 second(s), 31 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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