【问题标题】:C# Is current network my domainC# 当前网络是我的域
【发布时间】:2023-03-09 20:18:01
【问题描述】:

我正在为 Office 构建一个插件,在其中我要打开浏览器并导航到一个内部站点,该站点也通过 dns 公开,以便可以从网络/域外部访问它。

现在,为了访问这个站点,我需要知道我是在域网络内部还是外部。如果我在里面,我需要通过内部 ip 访问,否则通过暴露的 dns 地址访问。 这就是我问堆栈溢出的聪明人的地方,如果你们中的任何人知道一种方法来查看计算机当前连接的网络是否确实是计算机/用户所属域的网络?

我一直在关注Environment.UserDomainNameDomain.GetComputerDomain。理论上,这两个都可以帮助我找到域名(未经测试,但希望它可以工作),但它们都不能帮助我确定当前网络是否是域网络。

非常感谢任何建设性的反馈!

编辑 在某些时候,这个附加组件应该被出售给不同的客户,所以我不能依赖像 IP 以特定方式查找这样简单的东西。 无论计算机连接到何种网络,解决方案都必须能够工作。

【问题讨论】:

  • 某人在 a 域中,并不一定意味着他们在您感兴趣的 域中(除非这超出了您的系统的使用方式)
  • 我完全意识到这一点,这就是为什么我在我的问题中专门写了以下内容:“如果计算机当前连接到的网络,确实是该域的网络计算机/用户属于?”澄清一下,我想知道我当前的网络连接是否与我的域网络相同。
  • 但是从外部连接到该系统的用户的性质是什么 - 他们目前是否有可能坐在另一个组织内,使用连接到 that 组织的域?这种情况是否有效?
  • 这确实是一个有效的情况。它既可以是我们组织网络中的某个人,也可以是例如访问另一个组织的推销员通过此应用程序设置某些内容,这些内容必须保存在他自己组织的数据库中;保存我在问题中提到的内部网站信息的数据库。

标签: c# .net active-directory network-programming


【解决方案1】:

如果您的网络为计算机提供了唯一名称,您可以通过以下方式检查计算机名称

Dns.GetHostName();

或者,如果您的网络有一个特别唯一的 IP 标头(所有 IP 都以 10.1 开头,或者它们都在 IP 以 198.2 开头的 Belkin 路由器上),您可以使用

获取所有 IP 地址
IPAddress[] addr = Dns.GetHostAddresses(Dns.GetHostName());

更新:

显示我公司网络的是它的 DNS 后缀。这对你有用吗?

 NetworkInterface[] adapters = NetworkInterface.GetAllNetworkInterfaces();
            foreach (NetworkInterface adapter in adapters)
            {
                IPInterfaceProperties properties = adapter.GetIPProperties();
                Console.WriteLine(adapter.Description);
                Console.WriteLine("  DNS suffix................................. :{0}",
                properties.DnsSuffix);
                Console.WriteLine("  DNS enabled ............................. : {0}",
                properties.IsDnsEnabled);
                Console.WriteLine("  Dynamically configured DNS .............. : {0}",
                properties.IsDynamicDnsEnabled);
            }

【讨论】:

  • 我知道你来自哪里,当然这是我的错,因为我没有指定在某个时候这个附加组件应该出售给不同的客户。所以我不能依赖于以特定方式查看 IP 这么简单的东西。我将使用此信息更新问题。
  • 贵公司的DNS后缀是什么
  • 如果我没有完全记错的话,我们的后缀是 thorvalddata.com(当我通过电缆连接到我们的网络时,就会出现这种情况)。但是为了在分布式应用程序中使用它(不像在可伸缩性分布中那样分布式),它必须存储在某个地方(不是在应用程序中),后缀是什么,以便将其与当前网络和/或域进行比较.
  • 哦,您的问题听起来像我们需要担心的唯一网络是您自己的公司而不是客户的网络。但这应该还是没问题的。只需动态获取客户的网站并进行比较。此时你要求我编写你的整个程序。
  • 从我对您的回答的第一反应开始:“我知道您来自哪里,当然这是我的错,因为我没有指定在某个时候这个附加组件应该被出售给各种客户。”不,我不要求你编写整个程序。我在问是否有人知道将当前连接的网络与计算机/用户的注册域进行比较的方法。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-12-18
相关资源
最近更新 更多