首页 文章

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

提问于
浏览
0

虽然Azure Connect正在退役,而Azure虚拟网络提供类似功能且速度更快,但我注意到了一些缺点 .

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

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

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

谢谢!

2 回答

  • 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());
    
  • 0

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

相关问题