iptables Endereço de broadcast DNAT

1

Estou tendo problemas para usar o iptables para alterar o endereço de destino de um pacote de transmissão. Eu li vários lugares que o iptables / Linux não encaminha pacotes transmitidos, então estou procurando alternativas.

Minha rede está configurada como / 30, portanto, o tráfego de broadcast está sendo enviado para mim em x.x.x.3. Eu tentei abrir a sub-rede na minha máquina local para que xxx3 não seja mais meu endereço de broadcast, mas o endereço MAC de destino do pacote é ff: ff: ff: ff: ff: ff: xx: xx: xx: xx: xx: xx: xx: xx, então acredito que ainda esteja sendo interpretado como um pacote de difusão.

Existe uma maneira de alterar o endereço MAC de destino de um pacote?

Existem outras ferramentas além do iptables que executarão esta operação?

Se eu não conseguir encontrar uma maneira de contornar isso, estou pensando em aceitar este pacote localmente e escrever um programa que enviaria os dados do pacote para o destinatário desejado. Existe alguma razão que não deva funcionar?

Obrigado!

    
por Michael 17.12.2015 / 22:47

2 respostas

0

Usar uma bridge teria funcionado se eu quisesse passar todo o tráfego de uma interface para outra, no entanto, eu precisava manter algum tráfego localmente.

Tanto quanto eu posso dizer, é impossível usar o iptables para encaminhar um pacote de broadcast. Acabei de escrever um programa que retransmite pacotes recebidos em uma interface diferente.

    
por 01.02.2016 / 18:19
0

Você deseja conectar duas redes idênticas. Você precisa fazer SNAT e DNAT, para que a rede A veja a rede B como tendo endereços diferentes. Mas por que você quer encaminhar pacotes de broadcast? Se for para fazer protocolos como SMB e protocolos de detecção automática funcionarem, provavelmente eles não funcionarão de qualquer maneira quando receberem respostas de fora da rede para a qual estavam transmitindo.

Se você deseja ter endereços exclusivos, sem NAT, o que você deseja é chamado de ponte. Quinze anos atrás eu fiz isso usando o OpenBSD. Eu queria inserir um firewall entre dois conjuntos de computadores que estavam na mesma sub-rede. Foi fácil e funcionou bem. O Linux não era capaz disso na época (unindo sim, mas não com um firewall), hoje acho que deveria ser possível.

    
por 17.12.2015 / 23:39