Azure虚拟网络指向站点(例如Azure Connect)名称解析

时间:2013-07-08 09:47:38

标签: networking azure name-resolution

虽然Azure Connect正在退役,而Azure Virtual Network提供类似功能并且速度更快,但我注意到了一些缺点。

使用Azure Connect netbios远程共享/计算机连接工作完美,以及名称解析。使用Windows Azure虚拟网络,名称解析将需要DNS,否则将无法正常工作。如果至少存在某种连接客户端及其IP的列表,我就可以幸存下来,这些列表不可用,并且每次重新连接时都会分配不同的IP。因此,如果没有事先知道他们当前的IP,就不可能有2个客户端相互连接。

最大的问题是,无论什么(我可以ping和访问远程计算机的任何端口)netbios似乎不起作用。

当我在IP上执行tracert时,我可以看到计算机名称。但它不接受ping与计算机名称。

谢谢!

2 个答案:

答案 0 :(得分:0)

我使用nbtstat解决了这个问题。 nbtstat将返回与给定的ip adres相对应的NetBios计算机名称。

举个例子:nbtstat -A 10.0.0.5

在Java中,我创建了一个循环,用于检查给定的ip是否可达。我的Azure VPN范围是10.0.0.x.所以我的循环将检查ip 10.0.0.1直到10.0.0.20。如果可以访问IP,它将查找计算机名称。如果计算机名是我正在寻找的计算机名,那么我有ip adres连接到。我使用可达(ping)来加速进程。

示例代码:使用循环检查ip是否可访问。与ping类似:

for (byte i = 1; i <= 20; i++)
            {
                inet = InetAddress.getByAddress(new byte[] { 10, 0, 0, i });
                System.out.println("Sending Ping Request to " + inet);
                reachable = inet.isReachable(pingTimeOut);
                System.out.println(reachable ? "Host is reachable" : "Host is NOT reachable");

                if (reachable)
                {
                    System.out.println("Name resolve " + inet.getHostAddress());
                    trace = GetNameByIp(inet.getHostAddress());
                    if (trace.contains(computerName)) return "10.0.0." + Byte.toString(i);
                }
            }

了解Netbios名称:

        Process traceRt;
        System.out.println("nbtstat -A " + address);
        traceRt = Runtime.getRuntime().exec("nbtstat -A " + address);

        // read the output from the command
        route = convertStreamToString(traceRt.getInputStream());

答案 1 :(得分:0)

我通过编辑hosts文件解决了这个问题。我正在测试WCF服务,我将azure webserver vm和azure域控制器的ip地址和服务器名称添加到主机文件中。务必以管理员身份编辑hosts文件。