
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
iptables
e ebtables
nã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.444
subinterface 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 à eth0
interface.
Esteja ciente de que tcpdump
podetem problemas para exibir as tags VLANportanto, não presuma necessariamente que os frames não estão sendo marcados se você estiver apenas usando tcpdump
o 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 eth0
porta 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.