解决用IPV6+DDNS访问UNRAID webui周期性失效的问题,smb不能访问的问题

我使用的unraid系统使用ddns(DDNSGO)绑定域名(阿里域名)与主机的ipv6地址进行远程访问,unraid是6.12.8。

遇到的问题是,配置当时是没问题的,但是过几天就会失效,无法通过域名访问webui了。这种情况在之前使用威联通的NAS的时候没有遇到过。但是docker里面的应用还是正常的,通过这个现象基本锁定是nginx的问题了。

通过看nginx的配置文件(/etc/nginx/conf.d/servers.conf),这个配置文件是unraid自动生产的,会直接把当前的ipv6地址写到配置里面:

自动生产的nginx配置文件

只有匹配了地址才能正常访问,但是一旦IPV6地址变更了,系统又不会自动更新,就不能通过webui访问了。而且在使用的过程中,发现一旦IPV6地址变更,系统自带的SMB共享功能也不能通过IPV6进行访问了。

解决这个问题的方法有好几个:

1、安装zerotier,映射到内网,通过内网IP地址访问,同时在unraid里面添加对应的虚拟网卡:

​在uraid的网络配置里面加入zerotier的虚拟网卡

系统会自动把这个网段加入到nginx的配置里面。由于zerotier的地址是内网地址,而且不会变更,所以这个问题可以一定程度的解决这个问题,但是要求访问的设备也装zerotier,这个不方便。

2、周期性重启nginx和smb服务

定期执行/etc/rc.d/rc.nginx -restart 可以重新生产nginx配置文件,并应用。

同理,定期执行/etc/rc.d/rc.samba -restart 也可以恢复samba的访问。

但问题是,重启周期是多少?太短,如一分钟,那么webui和samba每分钟都会断开;太长,则IPV6地址变更到重启的间隔之内,都不能访问到,问题没有很好的解决。

3、通过优化nginx配置,并监测nginx文件是否变化,在变化后更新配置。这种是我目前正在使用的方式,优点是灵活,空窗期比较短,缺点是你得自己写代码。

首先优化nginx的配置。不要使用IPV6绑定访问,而是使用域名绑定访问:

 

注意这个修改在全文有两三个地方,都要改好了。

然后把conf文件存在/boot/下面,这个文件夹是在启动盘里面的,不会随着重启而消失。

后面就简单了,写个python,监控/etc/nginx/conf.d/servers.conf 是否和改好的 conf 一致,若不一致,复制一份覆盖过去,并重启nginx和samba:

#nginx的维护程序
def mtNginx():logger.info('执行nginx维护')global nginxNeedReload#检查nginx的配置缓存文件是否存在.if not(os.path.exists(NGINX_CONF_CACHE)):logger.warning('nginx配置缓存不存在,复制缓存到制定位置.')os.system(f'cp {NGINX_CONF_SOURCE} {NGINX_CONF_CACHE}')    #检查nginx的配置文件是否需要更新if os.path.getsize(NGINX_CONF_CACHE) != os.path.getsize(NGINX_CONF):logger.warning('nginx配置文件异常,执行更新.')os.system(f'cp {NGINX_CONF_CACHE} {NGINX_CONF}')  #重启samba服务os.system(f'/etc/rc.d/rc.samba -restart') nginxNeedReload = True#检查nginx配置是否需要更新if nginxNeedReload:res = os.popen('nginx -s reload').read()if res == '':logger.warning('enginx配置更新成功.')nginxNeedReload = Falseelse:logger.warning('enginx配置更新失败.')     

上面的代码块里面先复制了一份文件到内存中,避免对启动盘的重复访问。然后检测配置文件是否被更改,如果更改(网络变更的时候,有时候会触发nginx配置文件的自动变更),那就重新覆盖一份,并重启smaba。并让nginx重新使用新的应用新的配置文件。注意此处不能使用rc.nginx -restart 的方式重启nginx,因为这样conf文件就会重新生成,达不到想要的效果。

上述代码可以使用定时任务的形式周期执行(例如一分钟一次),当conf文件异常才会触发服务的重置。

也可以使用nobup在后台托管的形式(我使用这种方式,因为这个脚本还带读取硬盘温度,调整主机风扇转速的功能)。

需要在GO文件里面配置开机运行。

感觉unraid的最大卖点就是硬盘的利用率,但是它的使用习惯,以及自己DIY的难度,比OMV那些难不少,主要是安装的包啥的重启后全部没了,这点太不方便了,希望官方能改改吧。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/690611.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Maven高级(一)

文章目录 Maven高级(一)1. 分模块设计与开发1.1 介绍1.2 实践1.2.1 分析1.2.2 实现 1.3 总结 2. 继承与聚合2.1 继承2.1.1 继承关系2.1.1.1 思路分析2.1.1.2 实现 2.1.2 版本锁定2.1.2.1 场景2.1.2.2 介绍2.1.2.3 实现2.1.2.4 属性配置 2.2 聚合2.2.1 介…

扫码即可快速协作:草料二维码底部协作面板功能详解

功能介绍 在二维码上添加 底部协作面板 功能后 ,扫码后不仅可以阅读设备信息、产品资料等基本信息,还可以在二维码底部输入内容评论并他人快速协作,支持添加图文、语言、手写签名等操作。 底部协作面板是提供给组织内部成员快速协作的功能&…

《汇编语言》- 读书笔记 - 第10章-CALL 和 RET 指令

《汇编语言》- 读书笔记 - 第10章-CALL 和 RET 指令 10.1 ret 和 retf检测点 10.1 10.2 call 指令10.3 依据位移进行转移的 call 指令检测点 10.2 10.4 转移的目的地址在指令中的 call 指令检测点 10.3 10.5 转移地址在寄存器中的 call 指令10.6 转移地址在内存中的 call 指令检…

数据模型概念

一、概念 (1) 定义 在数据库系统中针对不同的使用对象和应用目的,采用不同的数据模型。根据模型的应用的不同目的,可以将这些模型划分为两类: (2) 分类 A:概念数据模型 它也称信息模型它是按用户的观点(观念世界&…

JVM(2)实战篇

1 内存调优 1.1 内存溢出和内存泄漏 内存泄漏(memory leak):在Java中如果不再使用一个对象,但是该对象依然在GC ROOT的引用链上,这个对象就不会被垃圾回收器回收,这种情况就称之为内存泄漏。 内存泄漏绝…

单调队列和优先队列

本篇记录下一下关于单调队列和优先队列(堆)的方法以及解题思路. 文章目录 一. 单调队列1. 绝对差不超过限制得最长连续子数组2. 跳跃游戏 VI3. 设计自助结算系统4. 和至少为k的最短子数组5. 满足不等式的最大值 二. 优先队列1. 最后一块石头的重量2. 数据…

十二:枚举与注解

文章目录 01、枚举类的使用1.1、枚举类的理解1.2、自定义枚举类1.3、使用enum关键字定义枚举类1.4、Enum类中的常用方法1.5、使用enum关键字定义的枚举类实现接口 02、注解的使用2.1、注解的理解2.3、如何自定义注解2.4、jdk中4个基本的元注解的使用12.5、jdk中4个基本的元注解…

uniapp 适配鸿蒙next调研

1.官方的一些回答 DCloud有资源第一时间得到鸿蒙无apk手机的上市计划。我们和华为保持着紧密沟通,会把握好节奏,不用担心。大家可以观察一个信号,等微信的鸿蒙next版敲定了,鸿蒙无apk手机就可以明确上市计划了。鸿蒙的开发语言是a…

数据结构:动态内存分配+内存分区+宏+结构体

一、作业 1.定义一个学生结构体&#xff0c;包含结构体成员&#xff1a;身高&#xff0c;姓名&#xff0c;成绩&#xff1b;定义一个结构体数组有7个成员&#xff0c;要求终端输入结构体成员的值&#xff0c;根据学生成绩&#xff0c;进行冒泡排序。 #include <stdio.h>…

UE蓝图 Cast节点和源码

系列文章目录 UE蓝图 Cast节点和源码 文章目录 系列文章目录Cast节点功能一、Cast节点用法二、Cast节点使用场景三、Cast节点实现步骤四、Cast节点源码 Cast节点功能 在Unreal Engine&#xff08;UE&#xff09;中&#xff0c;Cast节点是一种蓝图系统中的节点&#xff0c;用于…

【性能测试入门必看】性能测试理论知识

一、性能测试理论知识 1、常用的七种性能测试方法 (1) 后端性能测试&#xff1a;其实&#xff0c;你平时听到的性能测试&#xff0c;大多数情况下指的是后端性能测试&#xff0c;也就是服务器端性能测试。后端性能测试&#xff0c;是通过性能测试工具模拟大量的并发用户请求&…

linux系统Grafana关联zabbix显示

Grafana关联zabbix 服务器下载浏览器配置开启zabbix插件配置zabbix数据源可视化Zabbix数据 服务器下载 grafana-cli plugins list-remote grafana-cli plugins list-remote|grep -i zabbix grafana-cli plugins install alexanderzobnin-zabbix-appsystemctl restart grafana-…

HBase 进阶

参考来源: B站尚硅谷HBase2.x 目录 Master 架构RegionServer 架构写流程MemStore Flush读流程HFile 结构读流程合并读取数据优化 StoreFile CompactionRegion Split预分区&#xff08;自定义分区&#xff09;系统拆分 Master 架构 Master详细架构 1&#xff09;Meta 表格介…

Vue | (一)Vue核心(上) | 尚硅谷Vue2.0+Vue3.0全套教程

文章目录 &#x1f4da;Vue简介&#x1f4da;初识Vue&#x1f4da;模板语法&#x1f4da;数据绑定&#x1f4da;MVVM模型&#x1f4da;数据代理&#x1f407;回顾Object.defineproperty方法&#x1f407;何为数据代理&#x1f407;Vue中的数据代理 &#x1f4da;事件处理&#…

基于java的眼镜店仓库管理系统

源码获取&#xff0c;加V&#xff1a;qq2056908377 摘要&#xff1a; 随着电子商务的兴起&#xff0c;越来越多的商家选择在线销售他们的产品。眼镜店作为零售业的一种&#xff0c;也不例外。随着市场需求的不断增加&#xff0c;眼镜店需要更加高效的管理他们的仓库和库存&…

Mysql 权限与安全管理

0 引言 MySQL是一个多用户数据库&#xff0c;具有功能强大的访问控制系统&#xff0c;可以为不同用户指定允许的权限。MySQL用户可以分为普通用户和root用户。root用户是超级管理员&#xff0c;拥有所有权限&#xff0c;包括创建用户、删除用户和修改用户的密码等管理权限&…

LeetCode21.合并两个有序链表

题目 将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 示例 &#xff1a; 输入&#xff1a;l1 [1,2,4], l2 [1,3,4] 输出&#xff1a;[1,1,2,3,4,4] 思路 创建一个新的链表头节点&#xff08;dummyNode&#xff09;和一个…

RegExp正则表达式左限定右限定左右限定,预查询,预查寻,断言 : (?<= , (?= , (?<! , (?!

RegExp正则表达式左限定右限定左右限定,预查询,预查寻,断言 : (?< , (? , (?<! , (?! 有好多种称呼 (?< , (? , (?<! , (?! 有好多种称呼 , 我称为: 左限定, 右限定, 左否定, 右否定 (?<左限定)    (?右限定)(?<!左否定)    (?!右限定) 再…

阿里云个人建站笔记

导航 一、购买ECS服务器二、配置mysql&#xff08;一&#xff09;安装Mysql步骤一&#xff1a;安装mysql步骤二&#xff1a;配置MySQL步骤三&#xff1a;远程访问MySQL数据库 &#xff08;二&#xff09;给实例配置安全组策略&#xff08;三&#xff09;设置防火墙 一、购买ECS…

.ma1x0勒索病毒解密方法|勒索病毒解决|勒索病毒恢复|数据库修复

尊敬的读者&#xff1a; 数据安全问题备受关注。而勒索病毒是其中一种最为恶劣的威胁之一。其中&#xff0c;.ma1x0勒索病毒备受人们担忧&#xff0c;因其可将用户的数据文件加密&#xff0c;并要求支付赎金以解密文件。本文将介绍.ma1x0勒索病毒的特征、预防方法以及如何恢复…