前言
动态域名解析(DNSR)通常用于解析 IP 地址经常变化的域名。 电信网络提供公共IP,给程序员远程工作和内容共享带来极大的便利。 但公网IP是动态的,经常变化,因此通过IP访问非常不友好。 因此,有必要引入“花生壳”等动态域名解析工具。 这些解析工具有很多限制。 例如,免费版只能使用指定的二级域名、解析类型很少、对域名数量有限制等。
幸运的是我们有.NET! (借助阿里云)只需几行.NET代码即可轻松完成动态域名解析。
动态域名解析过程获取自己的IP地址
如今,互联网上有很多网站、服务或API可以快速获取您的IP地址。 比如你在百度上就可以轻松找到,国外也有其他的服务,非常好用。 这些服务也可以在 .NET 中完成,只需几行简短的代码,然后部署到服务器:
async Task Main()
{
await WebHost
.CreateDefaultBuilder()
.UseStartup<UserQuery>()
.Build()
.RunAsync();
}
public void ConfigureServices(IServiceCollection services) {}
public void Configure(IApplicationBuilder app) =>
app.Run(ctx => ctx.Response.WriteAsync(ctx.Connection.RemoteIpAddress.ToString()));
我已将代码部署到服务器上。 域名为:供有需要的朋友测试。
更新 DNS 解析值
各大域名网站都有自己的DNS解析API或SDK,阿里云也不例外。 我可以使用几行简短的 C# 代码来更新 DNS 解析值:
// 安装NuGet包:aliyun-net-sdk-alidns
string currentIp = new WebClient().DownloadString("https://echo-ip.starworks.cc/");
var client = new DefaultAcsClient(DefaultProfile.GetProfile("", Util.GetPassword("aliyun_dns_access_key"), Util.GetPassword("aliyun_dns_secret_key")));
var domainRecords = client.GetAcsResponse(new DescribeDomainRecordsRequest
{
DomainName = "starworks.cc",
RRKeyWord = "cool",
}).DomainRecords;
DescribeDomainRecordsResponse.DescribeDomainRecords_Record homeRecord = domainRecords.First(x => x.RR == "cool");
if (homeRecord._Value != currentIp)
{
client.GetAcsResponse(new UpdateDomainRecordRequest
{
RecordId = homeRecord.RecordId,
RR = homeRecord.RR,
Type = homeRecord.Type,
_Value = currentIp,
});
}
然后把这个脚本添加到电脑的启动项中,这样我每次打开电脑时都能保证拥有最新的本地IP。
阿里云的SDK设计有点棘手。 客户端只有一种方法:(T)。 这很不方便。 很难一眼看出到底调用了哪些方法。 其次,也会让调用者感到困惑。 这显然是一个更新操作。 为什么要调用Get?
相比之下,虽然我的域名是绑定阿里云的,但腾讯云提供的SDK就方便很多了。
如果不是80端口怎么办?
默认情况下,80/443端口不允许对外开放。 因此,即使有绑定了动态域名,以后发送给客户时,URL中也会包含很长的端口名,如:44300。在DNS记录类型中,有很多方法可以解决这个问题。 您可以指定 SRV 或显式 URL 或隐式 URL 来解决此问题:
这个过程可以通过C#代码完成,代码如下:
client.GetAcsResponse(new AddDomainRecordRequest
{
DomainName = "starworks.cc",
RR = "cool",
Type = "SRV",
_Value = "0 5 44403 home.starworks.cc",
}
这样,只要在浏览器中输入:,就会自动显示my:44403的内容:
总结
文章中的“祖典”链接如下。 您可以随意下载并使用。 打开它:
使用时只需将我的域名替换为你的域名即可。
管理界面操作如下:
说实话,我不太关心.NET 未来会发展成什么样子。 相比之下,我更关心我可以立即使用 .NET 做什么。 ..0已经发布了,我还没来得及仔细看看它的新特性,但是.NET现在能提供给我的想象力已经很丰富了。 这或许就是我心中的“自由”:只要探索,总会有新的东西。 发现。
扫一扫在手机端查看
-
Tags : 域名解析免费版和收费版的区别_用.NET做动态域名解析
我们凭借多年的网站建设经验,坚持以“帮助中小企业实现网络营销化”为宗旨,累计为4000多家客户提供品质建站服务,得到了客户的一致好评。如果您有网站建设、网站改版、域名注册、主机空间、手机网站建设、网站备案等方面的需求,请立即点击咨询我们或拨打咨询热线: 13761152229,我们会详细为你一一解答你心中的疑难。