У меня есть приложение "Java клиент на PostgreSQL сервер".
Когда клиент подключается, он выполняет запрос SELECT inet_client_addr();
и получает его IP.
Затем ищет интерфейс с возвращенным IP-адресом и использует
NetworkInterface networkInterface = NetworkInterface.getByInetAddress(inetAddress);
byte[] mac = networkInterface.getHardwareAddress();
для получения адреса MA C сетевой карты.
Проблема возникает, когда клиентский компьютер использует VPN для подключения к локальная сеть, поэтому вместо реального IP-адреса интерфейса inet_client_addr()
возвращает свой VPN-специфический c адрес, а NetworkInterface.getByInetAddress()
явно не работает.
Есть ли способ, кроме привязки каждого интерфейса к сокету и попытки подключиться к серверу?