Adicione uma etiqueta VLAN ao tráfego específico da porta UDP

1

Estou executando um aplicativo no Ubuntu12.04 que eu escrevi que faz algum gerenciamento de switch remoto. Eu tenho apenas um único NIC conectado à rede de switches gerenciados, eth0 que é definido com o IPv4 10.0.0.1/24. Este endereço IPv4 é o único endereço que esta máquina Ubuntu pode usar, já que este é o único endereço roteado "globalmente" atribuído à máquina Ubuntu (devido a alguma administração da rede, não devido a problemas técnicos ...)

Eu preciso do tráfego de gerenciamento do switch (NetConf sobre SSH, usando a porta UDP 830) para incluir uma tag VLAN 802.1q com VLAN ID 444), ao enviar os quadros NetConf e as respostas serão recebidas também com essa tag. Todos os outros tráfegos (http, ftp, dhcp, snmp, etc.) usarão eth0 sem a tag VLAN.

Eu tentei usar uma interface de VLAN eth0.444 na eth0, mas parece que o tráfego enviado não inclui a tag de VLAN.

Posso (e como) usar ebtables / iptables para adicionar uma tag de VLAN específica a um tráfego de porta UDP específico? A solução ebtables / iptables funcionará também para o caminho de recepção?

Obrigado!

David

    
por DaGN 22.11.2014 / 20:18

2 respostas

5

iptables e ebtables não podem definir tags de VLAN em pacotes. É para isso que as subinterfaces da VLAN são.

Existe um artigo no wiki do Ubunut que discute as VLANs que você provavelmente deveria revisar. Em resumo, você quer:

  • Verifique se o módulo 802.1q está carregado com modprobe 8021q .

  • Crie a subinterface da VLAN com vconfig add eth0 444 .

  • Adicione um endereço IP e uma máscara de sub-rede da sub-rede usada na VLAN 444 à sub-interface eth0.444 com ip addr add x.x.x.x/z dev eth0.444

Você também precisará configurar a porta do switch à qual o servidor está conectado para aceitar quadros marcados para a VLAN 444. Você não menciona sua marca de switch, por isso não posso dar muita orientação lá, mas você está provavelmente procurando uma porta "trunk" ou "geral" configurada como um membro marcado da VLAN 444 e um membro não marcado de qualquer VLAN é usado pela sub-rede atribuída à interface eth0 .

Esteja ciente de que tcpdump pode ter problemas exibindo as tags de VLAN , portanto, não necessariamente assuma que os quadros não estão sendo marcados se você estiver usando apenas tcpdump no próprio host para verificar se os quadros estão marcados.

Editar:

Normalmente, há um relacionamento um-para-um entre VLANs e sub-redes IP. Seria extremamente atípico se o switch tivesse uma interface de gerenciamento na VLAN 444 que fosse a mesma sub-rede IP de qualquer VLAN em que sua atual porta eth0 estivesse localizada.

    
por 22.11.2014 / 20:42
3

A tag 802.1Q é inserida no cabeçalho MAC, e o kernel não a decodificará se a sua interface não estiver marcada com VLAN. Portanto, mesmo que você pudesse manipular os pacotes de saída, o tráfego de entrada com a tag VLAN permaneceria ignorado.

O que você precisa fazer é criar uma interface marcada com VLAN, assim como você fez, e adicionar um IP a ela dentro da mesma raiva que o IP do switch que você está tentando acessar está dentro.

    
por 22.11.2014 / 20:43