我们已经准备好了,你呢?

2024我们与您携手共赢,为您的企业形象保驾护航!

本文主要介绍IPv6配置DDNS解析和SSL证书申请工具的开发流程和相关知识。 该工具是使用.NET 开发的并且是开源的。 目前该工具的域名解析仅支持阿里云。 文中提到或使用到的.NET开源项目:(DDNS、SSL证书申请工具)、(内网穿透工具)、(ACME证书申请库)、(命令行解析库)

背景

前几天,我正在使用.NET玩物联网设备,我拿出了角落里积满灰尘的Nano。 我最近买了一堆传感器,它们还在路上。 我打算拿到之后和他们一起玩。 至于Nano设备,虽然它不是一直开机的,但它连接到智能插座,随时可以使用。

在这里我忍不住吐槽一下小艾。 我将插座命名为“Nano”,然后随心所欲地称呼它,但小爱同学就是没有反应。 好吧,我只能叫他“二蛋”,啊不,“小电脑”(然后时不时也叫“手电筒”)。

为了让后期随时随地使用更加方便,网络处理是必不可少的。

如何从外网访问内网服务

如果你也有一个树莓派或者设备,想让它对外网提供服务,一般有以下几种方式:

1、在路由器中将设备设置为DMZ区域 2、在路由器中配置虚拟主机 3、使用其他第三方内网穿透工具

因为现在普遍使用光纤宽带,前两种需要获取光模式的管理员帐号,而且帐号需要费点功夫。 除非你有桥接网络并使用自己的路由器拨号。

第三,如果有外部服务器,可以使用开源项目[1]来实现隧道。 这是.NET开发的开源内网渗透工具。 当然,你也可以使用其他第三方内网渗透工具,这里就不举例了。

虽然工具很好,但是如果公网带宽不能全速使用,那么它并不是一个完美的解决方案。 那么有没有更好的解决方案呢? 当然,现在IPv6这么流行,我来看看:

动态域名解析 排名_域名解析动态排名怎么设置_域名动态解析

它确实不仅仅是沙子,别骗我。 但当我拿出之前的项目,修改了IP监控,然后饶有兴致地用手机浏览器访问这个IPv6站点时,我不禁开始怀疑自己的人生。 即使无法访问服务,也无法ping通。 在与计算机防火墙进行了一番斗争并以管理员身份激活之后,已经是午夜了。 我只好躺在床上简单地寻找答案,然后去找周公商量到底是怎么回事。

第二天,当我再次打开电脑时,我发现我无法熬夜了。 我监控的IP居然是0.0.0.0,也就是IPv4! 对 IPv6 使用 ::。 这次再用手机数据访问网站,竟然流畅多了。 不需要任何计算机防火墙打开入站规则。 管理员需要删除权限。 可以直接访问。

知识点:

1. 包含端口号 [0:0:0:0:0:ffff:4137:270a]:9080/2 的 IPv6 地址。 IPv6监听::相当于IPv4 0.0.0.0 3. IPv6监听::1相当于IPv4的127.0.0.1,都是环回接口

什么是动态域名解析

我想大家应该知道什么是域名解析,就是把一个难记的IPv4地址变成一个好记的域名。 DDNS,顾名思义,就是将我们老化的宽带IP变成固定的域名进行访问。

我们之前得到过这么长的IPv6地址。 分配的IP不仅会随着时间的推移而变化,而且也很难记住。

这时候我们除了使用常见的DDNS服务商的服务之外,还可以使用我们程序员之前给女朋友买的域名,那些女朋友不喜欢的便宜的,好处当然是是我们自己的。 您自己选择域名,并且可以按照您想要的方式解析前缀。

好吧,那么假设你有一个阿里云域名(必须注册),我们就可以通过解析管理接口轻松地自己做一个DDNS服务了[2]。

SSL证书自动申请

由于DDNS需要自己处理,所以之前写的自动域名证书续订服务也可以直接集成到其中,成为一个新的工具。 毕竟现在每个网站都使用https。

证书自动申请使用[3]库来实现Let's证书的自动续订。

Let's 是一个证书颁发机构 (CA)。 要获得Let's网站域名的证书,您只需证明对该域名的实际控制权即可。 验证方式有两种,通过域名解析添加TXT记录,或者在网站上添加指定验证文件(只需访问指定地址并返回所需字符串,但不支持带通配符的应用)。

那么假设你有一个域名,通过接口解析和管理这也是很容易实现的。

将这两个功能整合成一个小工具,我将其命名为,开源地址:。

依托.NET的跨平台特性,可以方便地在各种服务器上使用。

作为控制台应用程序,使用命令行解析库[4]进行参数解析。 该库提供了简洁明了的API用于操作命令行参数和相关任务,并提供了帮助界面。

域名动态解析_动态域名解析 排名_域名解析动态排名怎么设置

包含两个工具:

•服务器DDNS工具,用于内网服务动态域名解析,支持IPv6 •服务器SSL证书申请工具

目前仅支持阿里云。 其他云服务的实现可以自行添加。

提供linux-x64、linux-arm、linux-arm64、win-x64的独立下载[5]。 其他平台可以自行通过源码编译发布。

一般来说,这个服务的启动不需要一直运行。 DDNS 可以在设备开机时检测一次,然后每隔一段时间(例如一小时)检测一次。 申请SSL证书,您可以在每天0:00查询一次。 当证书即将过期时,程序会自动续订并更新证书。 注意nginx等服务需要重新加载证书,可以配置:成功申请并调用您指定的脚本文件。

使用工具可以通过传入不同的参数和配置文件来实现不同的功能。 DDNS和SSL证书申请都是工具。 您只需根据自己的需要设置计划任务即可。 下面介绍这两个函数的基本使用。

动态域名服务器

参数说明:

范围

阐明

-C, -

。 设置 json 文件。

设置配置文件路径

- 延迟

(: 0) 有多少次延误?

启动后延迟多少秒进行检查和处理,默认为0,防止过早启动引起的一些问题

--删除

(: false) 是DDNS吗?

删除配置文件中设置的DDNS域名解析。 默认为 false。 如果是,请尝试删除并退出。

--v6

(: false) 是ipv6吗?

默认使用IPv6解析获取IPv4。

--ip

(: ) 如果设置将被使用。 。

你可以设置'',它会从''检查来获取你的IP。

默认为空字符。 如果传入指定的IP,则使用该IP进行解析。

可以传入''值,表示通过网络获取网络出口IP进行解析。

例如:使用本地 IPv6 进行 DDNS 设置

SangServerTool ddns -c "test.json" --v6=1

例如:删除DDNS的域名解析

SangServerTool ddns -c "test.json" --del=1

该功能的配置文件使用和DDNS两段。


{ "Access": { "AK": "阿里云 AccessKeyId", //AccessKeyId "SK": "阿里云 AccessKeySecret" //AccessKeySecret }, "DDNS": { "ddns": "xxx.domain.com", // DDNS要解析的域名 "basedomain": "domain.com" // 主域名 }}

这个功能的核心其实就是获取电脑网卡的IP。 需要确定网卡的类型并排除环回和临时和本地 IPv6 地址(临时 IPv6 不会是其上的第一个 ())。

/// /// 获取电脑网卡IP/// /// 是获取IPv6/// public static string? CurrentIPAddress(bool isV6 = false){    var family = isV6? AddressFamily.InterNetworkV6 : AddressFamily.InterNetwork;    List exps = new List { "docker0", "lo", "l4tbr0" };    var ips = NetworkInterface.GetAllNetworkInterfaces()    .Where(p => !exps.Contains(p.Name)) // 排除docker、lo等    .Select(p => p.GetIPProperties())    .SelectMany(p => p.UnicastAddresses)    .Where(p => p.Address.AddressFamily == family && !IPAddress.IsLoopback(p.Address));    //IPv6 时去除本地的    if (family == AddressFamily.InterNetworkV6)    {        ips = ips.Where(p => !p.Address.IsIPv6LinkLocal);    }    return ips.FirstOrDefault()?.Address.ToString();}

SSL协议

参数说明:

范围

阐明

-C, -

。 设置 json 文件。

设置配置文件路径

- 重试

(:2) 有多少?

验证域名时重试多少次,默认2次

- 延迟

(: 10) 重试多少次?

验证域名时重试之间的秒数,默认为10秒

例如:申请域名重试3次

SangServerTool ssl -c "test.json" --retry=3

该功能的配置文件使用ACME和CSR。 本文不详细介绍配置文件。 详细的配置文件说明可以在仓库中找到。

配置信息时:

•如果是新应用程序,只需配置证书和证书私钥的存储路径,程序会自行生成。 如果已有证书,则会配置私钥并自动更新其位置或使用现有私钥。 •支持多个域名,以空格分隔。 •证书更新后执行的脚本文件。 如果服务器无法热加载证书,记得通过脚本文件进行配置并重启服务。

配置ACME信息时:

•如果您是第一次使用,只需填写您的电子邮件地址和存储ACME帐户的私钥文件的位置。 如果证书过期,您将收到一封电子邮件提醒。 •如果您之前已有账户,可以使用已有的账户私钥并进行配置

至于CSR,匹配不匹配并不重要。 毕竟是免费证书,不会生效。 它只是验证域名的所有权。

DDNS配置使用示例

下面以Nano为例,演示其DDNS功能的配置和使用。 系统可以通过“任务计划程序”执行类似的操作。

1、首先到仓库的下载程序上传到Nano,然后添加执行权限。 2. 按照说明编写自己的配置文件 3. 编写启动服务

sudo vi /etc/systemd/system/ddns.service

文件内容如下:

[Unit]Description=SangServerTool DDNSAfter=network.targetConditionPathExists=/home/sangsq/.tools/SangServerTool
[Service]Type=forkingExecStart=/home/sangsq/.tools/SangServerTool ddns -c /home/sangsq/.tools/config.json --v6=1 --delay=30TimeoutSec=0StandardOutput=journal+consoleRemainAfterExit=yes
[Install]WantedBy=multi-user.target

就是刚刚上传的程序文件的地址。 该服务仅在存在时才会启动。

这里需要写出程序和配置文件的完整路径。 这里我使用IPv6地址来进行分析。 为了安全起见,服务会延迟 30 秒后启动。 主要原因是接口查询需要访问阿里云服务器。 首次启动时,如果直接运行可能会报DNS解析错误。 也许使用 After=- 。 可以解决问题,但是没有测试。 这。

1.设置启动服务

sudo systemctl enable ddns.service

1.添加定时任务

除了开机之外,我们还可以安排任务执行以下程序半个小时,检查IP是否发生变化。

sudo crontab -e

添加计划任务

*/30  *  *  *  * /home/sangsq/.tools/SangServerTool ddns -c /home/sangsq/.tools/config.json --v6=1

这里去掉了延迟检测,因为它不是刚上电的。

1.其他

SSL证书申请也可以通过定时任务处理,每天0点检查。 如果服务器无法热加载证书,请记得在配置文件中配置以重新启动Web服务器。

后记

这篇文章随着软件的开发不断迭代修改,最终告一段落。 以后我会把这台小电脑盘活一下,再加上一些其他的硬件设备。

目前手机网络应该都有IPv6地址,但如果你使用的网络只能访问IPv4,那么你就无法访问纯IPv6服务器。 如果运营商支持但您的路由器不支持,您将无法使用 IPv6 网络。 如果您想检查您的 IPv6 可用性,可以访问此 IPv6 检测网站[6]。

[1]:

[2]解析管理接口:

[3]:

[4]:

[5]linux-x64、linux-arm、linux-arm64、win-x64下载:

[6]IPv6检测网站:

二维码
扫一扫在手机端查看

本文链接:https://by928.com/531.html     转载请注明出处和本文链接!请遵守 《网站协议》
我们凭借多年的网站建设经验,坚持以“帮助中小企业实现网络营销化”为宗旨,累计为4000多家客户提供品质建站服务,得到了客户的一致好评。如果您有网站建设、网站改版、域名注册、主机空间、手机网站建设、网站备案等方面的需求,请立即点击咨询我们或拨打咨询热线: 13761152229,我们会详细为你一一解答你心中的疑难。

项目经理在线

我们已经准备好了,你呢?

2020我们与您携手共赢,为您的企业形象保驾护航!

在线客服
联系方式

热线电话

13761152229

上班时间

周一到周五

公司电话

二维码
微信
线