Adicione uma tag VLAN ao tráfego de porta UDP específico

Adicione uma tag VLAN ao tráfego de porta UDP específico

Estou executando um aplicativo no Ubuntu12.04 que escrevi que faz algum gerenciamento remoto de switch. Tenho apenas uma única NIC conectada à rede de switches gerenciados, eth0 que está configurada com IPv4 10.0.0.1/24. Este endereço IPv4 é o único endereço que esta máquina Ubuntu pode usar, pois este é o único endereço roteável "globalmente" atribuído à máquina Ubuntu (devido a alguma administração de rede, não devido a problemas técnicos...)

Preciso que o tráfego de gerenciamento do switch (NetConf sobre SSH, usando porta UDP 830) inclua uma tag VLAN 802.1q com VLAN ID 444), ao enviar os frames NetConf e as respostas serão recebidas também com esta tag. Todo o outro tráfego (http, ftp, dhcp, snmp, etc.) usará eth0 sem a tag VLAN.

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

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

Obrigado!

Davi

Responder1

iptablese ebtablesnão é possível definir tags VLAN em pacotes. É para isso que servem as subinterfaces VLAN.

Há umaartigo no wiki do Ubunut que discute VLANsque você provavelmente deveria revisar. Em resumo, porém, você deseja:

  • Certifique-se de que o módulo 802.1q esteja carregado com um arquivo modprobe 8021q.

  • Crie a subinterface 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 à eth0.444subinterface comip 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 VLAN 444. Você não menciona a marca do switch, então não posso dar muita orientação sobre isso, mas provavelmente você está procurando por uma porta "tronco" ou "geral" configurada como um membro marcado da VLAN 444 e um membro não marcado de qualquer VLAN usada pela sub-rede atribuída à eth0interface.

Esteja ciente de que tcpdumppodetem problemas para exibir as tags VLANportanto, não presuma necessariamente que os frames não estão sendo marcados se você estiver apenas usando tcpdumpo próprio host para verificar se os frames 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 eth0porta atual esteja localizada.

Responder2

A tag 802.1Q é inserida no cabeçalho MAC e o kernel não a decodificará se sua interface não estiver marcada como 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 faixa do IP do switch que você está tentando acessar.

informação relacionada