Как я могу вызвать 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, когда вам нужно.

Другие вопросы по тегам