Как я могу вызвать getsockopt в Java, чтобы получить SO_ORIGINAL_DST
Кто-нибудь знает, существует ли существующая библиотека, которая позволит мне сделать вызов getsockopt, чтобы получить IP-адрес назначения для сокета, который iptables перенаправил через мое Java-приложение?
Вот аналогичный вопрос в списке рассылки Netty, который остался без ответа.
Вызов в c будет выглядеть примерно так:
getsockopt(ctx->client.fd, SOL_IP,
SO_ORIGINAL_DST, &SANY_ADDR(addr), &SANY_LEN(addr))
Пример того, как это сделать с JNI, также приветствуется.
2 ответа
Вы не можете сделать это на Java. Вы можете сделать это в JNI точно так же, как вы написали, если вы можете получить сокет FD, который находится в SocketImpl
из Socket
,
Вы не можете сделать это в Java. Однако вы можете добавить параметр заголовка запроса, в котором хранится original_dst. Таким образом, вы можете использовать его из заголовка http, когда вам нужно.