Я пытаюсь привязать Java-процесс к конкретному виртуальному интерфейсу с IP-адресом <myIFaddr>
следующим образом:
export BIND_ADDR=<myIFaddr> LD_PRELOAD=./bind.so
exec java -jar ppp.jar
Программа ppp.jar
просто делает запрос на HTTP-сервере, который в ответ отправляет обратно IP-адрес клиента, выводя этот адрес на стандартный вывод.
В результате программа на Java выводит IP-адрес «физического интерфейса» (не виртуального, имеющего другой IP-адрес).
Есть ли способ решить эту проблему, применив правильную / другую привязку?
Спасибо
Если вы используете сокет Java в своем приложении, вы можете использовать функцию привязки следующим образом:
mysocket=new Socket();
mysocket.bind(new InetSocketAddress(<myIFaddr>, port));
естественно, вам нужно изменить код, чтобы он вводился в ваше приложение Java.