iptables bridge redirect também está redirecionando outras interfaces

1

Execução de uma máquina servidor Ubuntu 14.04LTS. Eu tenho pequeno dispositivo IOT que envia mensagens HTTP para um servidor web remoto que eu quero redirecionar para um processo local (basicamente interceptar as mensagens para o meu próprio processo local). O servidor está usando eth0 (porta ethernet embutida), o dispositivo IOT está em eth1, que é um dongle ethernet USB. Eu criei uma ponte em / etc / network / interfaces

auto eth0 
iface eth0 inet dhcp 
auto eth1 
iface eth1 inet manual 
auto br0 
iface br0 inet dhcp    
   bridge_ports eth0 eth1

Eu usei a seguinte regra iptables para redirecionar o tráfego da ponte para a porta local 22041. Isso funciona bem.

iptables -t nat -A PREROUTING -i br0 -p tcp --dport 80 -j REDIRECT --to-port 22041

O problema é que ele também parece estar redirecionando o tráfego da porta 80 para o servidor quando qualquer coisa na rede local tenta acessar uma página da web. Se eu executar o 'firefox link ' do servidor, ele funcionará bem. Se eu executar o 'firefox httpt: // server_ip / page' de outra máquina na rede local, ele será redirecionado para a porta 22041.

Eu achei que o '-i br0' só aplicaria essa regra ao tráfego vindo da ponte, mas obviamente não é isso que está acontecendo. Como faço para impedir que o iptables redirecione o tráfego externo para a porta 22041?

Obrigado antecipadamente, TD

    
por TD22057 15.09.2017 / 18:36

1 resposta

0

Eu acredito que encontrei minha própria resposta em outro post. Se eu usar o physdev para corresponder à eth1 em vez de corresponder na bridge, parece funcionar e não para o meu tráfego regular.

iptables -t nat -A PREROUTING -m physdev --physdev-in eth1 -p tcp --dport 80 -j REDIRECT --to-port 22041
    
por 15.09.2017 / 20:23