Получение виртуального IP-адреса сеанса Windows Server с помощью Java - PullRequest
0 голосов
/ 14 февраля 2019

Я столкнулся с проблемой при извлечении виртуального IP-адреса, назначенного сеансу пользователя, когда Windows Server (WS) 2012/2016 и программное обеспечение на основе Java.

Когда я запускаю приведенный ниже фрагмент кода, возвращаетсяФизический IP-адрес Windows Server Machine, а не виртуальный IP-адрес сеанса.

Inet4Address.getLocalHost()

Я также попробовал следующий фрагмент кода:

Enumeration<NetworkInterface> interfaces = NetworkInterface.getNetworkInterfaces();
InetAddress localhost = InetAddress.getByName("127.0.0.1");

while (interfaces.hasMoreElements()) {
    NetworkInterface ifc = interfaces.nextElement();
    Enumeration<InetAddress> addressesOfAnInterface = ifc.getInetAddresses();

    while (addressesOfAnInterface.hasMoreElements()) {
        InetAddress address = addressesOfAnInterface.nextElement();

        if (!address.equals(localhost) && !address.toString().contains(":")) {
            System.out.println("FOUND ADDRESS ON INTERFACE: '" + ifc.getName() + "' - IS_VIRTUAL: '" + ifc.isVirtual() + "' - IS_LOOPBACK: '" + ifc.isLoopback() + "' - HOST_ADDRESS: '" + address.getHostAddress() + "' - HOSTNAME: '" + address.getHostName() + "' - CANONICALNAME: '" + address.getCanonicalHostName() + "'");
        }
    }
}

Учитывая последний фрагмент, Java печатает мне Виртуальный IP (vIP) сеанса плюс vIP всехдругие сеансы и физический IP машины.Проблема в том, что я не могу отфильтровать его, чтобы определить, какой из этих vIP принадлежит моему сеансу.

Есть ли какое-либо решение этой проблемы?Во время своих исследований я обнаружил много сообщений об этой проблеме в службу поддержки JDK и Windows, но не смог найти решение о том, как получить правильный vIP.

Некоторые ссылки с похожими / связанными проблемами:

Та же проблема, с которой сталкиваются в Windows Server 2016 с Java: https://social.technet.microsoft.com/Forums/ie/en-US/c164587b-c21a-4261-9245-76fcec8cb7f7/rds-2016-and-java-with-virtual-ip?forum=winserverTS

JDK Проблема с getaddrinfo: https://bugs.openjdk.java.net/browse/JDK-7101059

Статья Citrix о виртуальном IP-управлении Windows Resposability: https://docs.citrix.com/en-us/xenapp-and-xendesktop/7-15-ltsr/manage-deployment/virtual-ip-virtual-loopback.html

Windows Server 2008 Проблема: https://support.microsoft.com/en-us/help/2621067/the-first-returned-ip-address-is-incorrect-when-you-use-the-getaddrinf

...