Criando VLANs entre namespaces de rede

7

Eu quero implementar a topologia mostrada na figura abaixo usando namespaces de rede (ns1 a ns4).

EupossoimplementaratopologiaacimasemdividiraredeemduasVLANsdiferentesusandoosseguintescomandos(combasenesteartigo,intitulado: Introduzindo Namespaces de Rede Linux ):

sudo ip netns add ns1
sudo ip netns add ns2
sudo ip netns add ns3
sudo ip netns add ns4

sudo ip link add veth1 type veth peer name veth11
sudo ip link add veth2 type veth peer name veth12
sudo ip link add veth3 type veth peer name veth13
sudo ip link add veth4 type veth peer name veth14

sudo ip link set veth11 netns ns1
sudo ip link set veth12 netns ns2
sudo ip link set veth13 netns ns3
sudo ip link set veth14 netns ns4

sudo ip netns exec ns1  ifconfig lo up
sudo ip netns exec ns2  ifconfig lo up
sudo ip netns exec ns3  ifconfig lo up
sudo ip netns exec ns4  ifconfig lo up

sudo ifconfig veth1 10.1.11.1/24 up
sudo ifconfig veth2 10.1.12.1/24 up
sudo ifconfig veth3 10.1.13.1/24 up
sudo ifconfig veth4 10.1.14.1/24 up

sudo ip netns exec ns1 ifconfig veth11 10.1.11.2/24 up
sudo ip netns exec ns2 ifconfig veth12 10.1.12.2/24 up
sudo ip netns exec ns3 ifconfig veth13 10.1.13.2/24 up
sudo ip netns exec ns4 ifconfig veth14 10.1.14.2/24 up

sudo ip netns exec ns1 route add default gw 10.1.11.1 veth11
sudo ip netns exec ns2 route add default gw 10.1.12.1 veth12
sudo ip netns exec ns3 route add default gw 10.1.13.1 veth13
sudo ip netns exec ns4 route add default gw 10.1.14.1 veth14

Com base na configuração acima, todos podem fazer ping em todos os outros. Agora eu quero isolar ns1 e ns3 em uma VLAN, e ns2 e ns4 em outra. Para implementar as VLANs, estou tentando usar algo como o seguinte:

sudo vconfig add veth1 11
sudo vconfig add veth3 11
sudo vconfig add veth11 12
sudo vconfig add veth13 12

No entanto, ainda assim todos podem fazer ping em todos os outros, o que significa que a rede não está dividida em duas LANS diferentes. Como posso conseguir o que estou tentando? Existe um método diferente para marcação de VLAN para interfaces virtuais?

    
por Vasilis 23.01.2014 / 03:16

1 resposta

4

Várias coisas estão misturadas:

  1. Em seu gráfico, você deixa o "namespace padrão" parecer com um switch, mas você o configurou para um roteador.
  2. Com um roteador no meio, vlan1 e o outro vlan1 são diferentes. Eles não compartilham a mesma LAN, por isso não podem estar na mesma VLAN.
  3. Suas chamadas vconfig não encontrarão veth11 ou veth13, porque elas não estão no namespace padrão. - Você não recebeu nenhum erro!?
  4. veth1 e veth11 são um "pipe". Por que você atribui diferentes IDs de VLAN?
  5. Por que você não coloca uma extremidade do pipe em ns1 (você faz isso) e a outra extremidade em ns3 (em vez do namespace padrão). - Você pode rotear ou fazer a ponte entre eles, sem misturá-lo com ns2 e ns4.
  6. Ou, em outras palavras: não misture tudo no namespace padrão, apenas para dividi-los novamente mais tarde ...
  7. Você também pode fazer isso da maneira mostrada no diagrama, mas não funciona com roteamento ou endereços IP (e, em seguida, VLANs no topo!?!): Coloque duas pontes no namespace padrão, conecte um lado de cada “Cano” em uma das pontes. - Uma bridge (desta vez configurada com VLANS) também faria isso. Ainda não verifiquei se o código de ponte do Linux é compatível com VLAN. Provavelmente é.
  8. Seus nomes de veth são confusos. Por que não "eth1a" junto com "eth1b" ou algo semelhante de maneira simétrica?
  9. ip obsoletes ifconfig e vconfig
por 22.03.2014 / 06:50