Como posso bloquear todo o tráfego de / para uma interface em ponte, permitindo o DHCP?

2

Eu tenho um PC (rodando o Fedora 20) que está sendo usado como um "switch de software" para controlar a conectividade de rede de alguns dispositivos externos. Existem oito desses dispositivos; o PC possui duas placas Ethernet de 4 portas, além de sua própria conexão Ethernet com o mundo externo. Por padrão, as oito interfaces do dispositivo são encaminhadas para a interface externa sem filtragem.

A funcionalidade desejada é a capacidade de bloquear todo o tráfego para e de um determinado dispositivo. Atualmente, estamos fazendo isso usando bridge link set dev <device> state 0 , que define o estado da ponte do dispositivo como "desativado". No entanto, isso parece também bloquear o tráfego DHCP do dispositivo. O servidor DHCP da rede é acessível por meio da interface externa, portanto, parece que a bridge está bloqueando esse tráfego, o que significa que, se o dispositivo tentar renovar seu IP, isso falhará; isso é problemático em termos dos testes que estou tentando realizar no dispositivo.

O que eu gostaria de fazer é bloquear todo o tráfego exceto DHCP pela ponte, para um determinado dispositivo. Parece que o comando bridge não pode fazer isso, então eu provavelmente gostaria de deixar o estado da ponte como "encaminhamento" permanentemente. Tendo feito alguma pesquisa, parece que ebtables é a ferramenta que eu preciso, mas a configuração parece precisar de mais conhecimento de DHCP e rede do que eu! Da leitura de alguns tutoriais ebtables , acho que preciso permitir o tráfego nas portas 67 e 68 (acredito que essas são as únicas portas usadas para o DHCP?) E bloquear todo o tráfego restante.

Então, minhas perguntas são:

  1. É possível configurar ebtables para fazer o que eu quero?
  2. O ebtables é a melhor ferramenta para o trabalho e / ou há camadas de abstração sobre ele que facilitam a configuração? (Estou pensando em ferm para iptables .)
  3. Supondo que estou indo na direção certa, como eu configuraria ebtables para bloquear toda a barra de tráfego DHCP?
por Allan Lewis 13.01.2015 / 12:22

1 resposta

3

Sim, você precisa de ebtables para aplicar as regras do netfilter em uma ponte.

A regra de correspondência é ip com os parâmetros --ip-source-port e --ip-destination-port .

Você configuraria ebtables para permitir o tráfego desejado e, em seguida, uma queda explícita para qualquer outro tráfego.

A porta do cliente DHCP é UDP 68, a porta do servidor DHCP é UDP 67.

Acredito que a sintaxe e a ordem corretas do comando seriam:

ebtables -I INPUT -i eth0 -o eth0 -p ip -j DROP
ebtables -I INPUT -i eth0 -o eth0 -p ip --ip-protocol udp --ip-source-port 67 -j ACCEPT
ebtables -I INPUT -i eth0 -o eth0 -p ip --ip-protocol udp --ip-source-port 68 -j ACCEPT
ebtables -I INPUT -i eth0 -o eth0 -p ip --ip-protocol udp --ip-destination-port 67 -j ACCEPT
ebtables -I INPUT -i eth0 -o eth0 -p ip --ip-protocol udp --ip-destination-port 68 -j ACCEPT
ebtables-save
    
por 16.01.2015 / 12:20