Посмотрите на класс NetworkInterface. У него есть методы для получения всех сетевых интерфейсов машины, включая виртуальные. Вы можете посмотреть на InetAddress для каждого интерфейса и использовать inetAddress.getAddress().length
, чтобы проверить количество байтов в IP, чтобы различать IPv4 и IPv6.