iptables não parece estar aplicando SNAT a pacotes enviados em um soquete bruto

0

Estou escrevendo pacotes de um programa de espaço do usuário para minha interface sem fio wlan0. Eu configurei uma regra SNAT com o iptables da seguinte forma

iptables -t nat -A POSTROUTING -o wlan0 -j SNAT --to 192.168.1.3

E funciona para todo o tráfego normal que sai da minha máquina.

Estou trabalhando em um programa que usa soquetes brutos na camada 2 (ether). O Iptables não está aplicando o SNAT aos pacotes enviados por este programa.

Existe alguma maneira de escrever pacotes no espaço do usuário a partir da camada 2 e ainda ter NAT aplicado a eles?

    
por Conor Patrick 06.08.2014 / 05:04

1 resposta

0

sockets raw obtêm uma cópia do pacote original antes da modificação (entrada). Na saída, é revertido.

Então, na realidade, o iptables é ignorado como sockets Raw, basicamente a pilha IP e, portanto, o iptables, porque é onde ele mora e passa o pacote diretamente para o aplicativo. então diretamente de volta para o que estiver conectado a.

Então, em resposta à sua pergunta, não, você não pode ter o NAT aplicado a eles, pois eles nunca passam pelo iptables para que a regra seja aplicada

    
por 06.08.2014 / 14:14