Eu tenho um NFQUEUE, para pacotes IPv6 ligados à cadeia PREROUTING da tabela mangle em ip6tables.
Depois de receber um pacote no aplicativo do usuário, modifiquei o cabeçalho. Infact, modificou o cabeçalho de IPv6 para IPv4 e reinjectou o pacote. Mas, a partir dos logs, vejo que o pacote IPv4 está sendo tratado como um pacote IPv6.
-
Como cada NFQUEUE é mapeado para AF_INET ou AF_INET6, é possível que um único NFQUEUE manipule os pacotes IPv4 e IPv6?
-
É possível receber o pacote de uma fila, mas injetar em uma fila diferente? Não faz sentido, mas gostaria de injetar um pacote na pilha IP diretamente com o cabeçalho IP formatado no espaço do usuário.
- Não é aconselhável usar soquetes brutos com IPv6 de acordo com a RFC 3542.
- Não consigo usar o dispositivo TUN para problemas de desempenho. Muitos pacotes estão sendo descartados com dispositivos TUN.
-
Você pode usar uma única fila para IPv4 e IPv6 vinculando-se a ambos.
por exemplo,
nfq_bind_pf(h, AF_INET)
então
nfq_bind_pf(h, AF_INET6)
Em seguida, a fila vai lidar com os dois e seis, você ainda precisa tornar o seu aplicativo 4/6 ciente para que ele possa analisar os cabeçalhos IP apropriadamente.
-
Você pode passar o pacote para outra fila.
Definindo NF_QUEUE
juntamente com o número da fila em nfq_set_verdict
. (os 16 bits altos do valor do veredicto são usados quando o bit inferior fornece o valor NF_QUEUE
).
por
09.06.2014 / 13:09