Configurações de VLANs
1. Configurações da VM-01_RT1 roteador da rede.
O RT1 atua como gateway das quatro redes VLAN, utilizando a interface eth1 como enlace para o segmento que transporta as VLANs. Foram criadas subinterfaces VLAN distintas, cada uma associada a uma rede e ao seu respectivo gateway.
Além do endereçamento, o roteador realiza o encaminhamento de tráfego entre as VLANs e a rede externa, aplica NAT para acesso à Internet e utiliza nftables para impedir a comunicação direta entre as quatro VLANs, mantendo os segmentos logicamente isolados.
A estrutura abaixo representa a relação entre as subinterfaces do roteador, suas respectivas redes e o acesso à rede externa.

Criei quatro subinterfaces VLAN para cada uma das 4 redes distintas.
ip link add link eth1 name eth1.10 type vlan id 10
ip link add link eth1 name eth1.20 type vlan id 20
ip link add link eth1 name eth1.30 type vlan id 30
ip link add link eth1 name eth1.40 type vlan id 40
Configurei cada subinterface com seus respectivos endereços IP e mascara.
ip addr add 10.0.10.1/29 dev eth1.10
ip addr add 10.0.20.1/29 dev eth1.20
ip addr add 10.0.30.1/29 dev eth1.30
ip addr add 10.0.40.1/29 dev eth1.40
Habilitei todas as interfaces.
ip link set eth1.10 up
ip link set eth1.20 up
ip link set eth1.30 up
ip link set eth1.40 up
Via nftables fiz a configuração de encaminhamento de pacotes entre a interface com conexão com a internet e as subinterfaces das VLANs.
nft add rule inet firewall forward iifname "eth1.10" oifname "eth0" accept
nft add rule inet firewall forward iifname "eth1.20" oifname "eth0" accept
nft add rule inet firewall forward iifname "eth1.30" oifname "eth0" accept
nft add rule inet firewall forward iifname "eth1.40" oifname "eth0" accept
nft add rule inet firewall forward iifname "eth0" oifname "eth1.10" accept
nft add rule inet firewall forward iifname "eth0" oifname "eth1.20" accept
nft add rule inet firewall forward iifname "eth0" oifname "eth1.30" accept
nft add rule inet firewall forward iifname "eth0" oifname "eth1.40" acceptAgora a configuração NAT permitindo a tradução de endereços.
nft add rule ip nat postrouting oifname "eth0" ip saddr 10.0.10.0/29 masquerade
nft add rule ip nat postrouting oifname "eth0" ip saddr 10.0.20.0/29 masquerade
nft add rule ip nat postrouting oifname "eth0" ip saddr 10.0.30.0/29 masquerade
nft add rule ip nat postrouting oifname "eth0" ip saddr 10.0.40.0/29 masqueradeRealizei a configuração de firewall impedindo a comunicação entre as VLANs.
nft add rule inet filter forward iifname "eth1.10" oifname "eth1.20" drop
nft add rule inet filter forward iifname "eth1.10" oifname "eth1.30" drop
nft add rule inet filter forward iifname "eth1.10" oifname "eth1.40" drop
nft add rule inet filter forward iifname "eth1.20" oifname "eth1.10" drop
nft add rule inet filter forward iifname "eth1.20" oifname "eth1.30" drop
nft add rule inet filter forward iifname "eth1.20" oifname "eth1.40" drop
nft add rule inet filter forward iifname "eth1.30" oifname "eth1.10" drop
nft add rule inet filter forward iifname "eth1.30" oifname "eth1.20" drop
nft add rule inet filter forward iifname "eth1.30" oifname "eth1.40" drop
nft add rule inet filter forward iifname "eth1.40" oifname "eth1.10" drop
nft add rule inet filter forward iifname "eth1.40" oifname "eth1.20" drop
nft add rule inet filter forward iifname "eth1.40" oifname "eth1.30" drop2. Configurações da VM-02_SW1 switch da rede.
O SW1 foi implementado utilizando Open vSwitch (OVS), atuando como switch de camada 2 para segmentar as estações em quatro VLANs distintas. O switch possui um uplink trunk conectado ao RT1, responsável pelo transporte das VLANs 10, 20, 30 e 40, enquanto suas portas de acesso foram distribuídas entre os quatro segmentos da rede.

Após ter criado um overlay da imagem base do sistema e instalado o OVS (Open vSwitch), habilitei o serviço do OVS.
rc-update add ovs-vswitchd Adicionei um barramento e 30 nics conectadas a ele no script de execução da VM, cada qual escutando via sockets QEMU onde todas as estações da rede irão se conectar.
-device pci-bridge,id=SW1-bus1,chassis_nr=1 \
-netdev socket,id=SW1-nic01,listen=:10101 -device virtio-net-pci,bus=SW1-bus1,netdev=SW1-nic01,mac=BA:AA:AA:01:01:01 \
-netdev socket,id=SW1-nic02,listen=:10102 -device virtio-net-pci,bus=SW1-bus1,netdev=SW1-nic02,mac=BA:AA:AA:01:01:02 \
-netdev socket,id=SW1-nic03,listen=:10103 -device virtio-net-pci,bus=SW1-bus1,netdev=SW1-nic03,mac=BA:AA:AA:01:01:03 \
-netdev socket,id=SW1-nic04,listen=:10104 -device virtio-net-pci,bus=SW1-bus1,netdev=SW1-nic04,mac=BA:AA:AA:01:01:04 \
-netdev socket,id=SW1-nic05,listen=:10105 -device virtio-net-pci,bus=SW1-bus1,netdev=SW1-nic05,mac=BA:AA:AA:01:01:05 \
-netdev socket,id=SW1-nic06,listen=:10106 -device virtio-net-pci,bus=SW1-bus1,netdev=SW1-nic06,mac=BA:AA:AA:01:01:06 \
-netdev socket,id=SW1-nic07,listen=:10107 -device virtio-net-pci,bus=SW1-bus1,netdev=SW1-nic07,mac=BA:AA:AA:01:01:07 \
-netdev socket,id=SW1-nic08,listen=:10108 -device virtio-net-pci,bus=SW1-bus1,netdev=SW1-nic08,mac=BA:AA:AA:01:01:08 \
-netdev socket,id=SW1-nic09,listen=:10109 -device virtio-net-pci,bus=SW1-bus1,netdev=SW1-nic09,mac=BA:AA:AA:01:01:09 \
-netdev socket,id=SW1-nic10,listen=:10110 -device virtio-net-pci,bus=SW1-bus1,netdev=SW1-nic10,mac=BA:AA:AA:01:01:10 \
-netdev socket,id=SW1-nic11,listen=:10111 -device virtio-net-pci,bus=SW1-bus1,netdev=SW1-nic11,mac=BA:AA:AA:01:01:11 \
-netdev socket,id=SW1-nic12,listen=:10112 -device virtio-net-pci,bus=SW1-bus1,netdev=SW1-nic12,mac=BA:AA:AA:01:01:12 \
-netdev socket,id=SW1-nic13,listen=:10113 -device virtio-net-pci,bus=SW1-bus1,netdev=SW1-nic13,mac=BA:AA:AA:01:01:13 \
-netdev socket,id=SW1-nic14,listen=:10114 -device virtio-net-pci,bus=SW1-bus1,netdev=SW1-nic14,mac=BA:AA:AA:01:01:14 \
-netdev socket,id=SW1-nic15,listen=:10115 -device virtio-net-pci,bus=SW1-bus1,netdev=SW1-nic15,mac=BA:AA:AA:01:01:15 \
-netdev socket,id=SW1-nic16,listen=:10116 -device virtio-net-pci,bus=SW1-bus1,netdev=SW1-nic16,mac=BA:AA:AA:01:01:16 \
-netdev socket,id=SW1-nic17,listen=:10117 -device virtio-net-pci,bus=SW1-bus1,netdev=SW1-nic17,mac=BA:AA:AA:01:01:17 \
-netdev socket,id=SW1-nic18,listen=:10118 -device virtio-net-pci,bus=SW1-bus1,netdev=SW1-nic18,mac=BA:AA:AA:01:01:18 \
-netdev socket,id=SW1-nic19,listen=:10119 -device virtio-net-pci,bus=SW1-bus1,netdev=SW1-nic19,mac=BA:AA:AA:01:01:19 \
-netdev socket,id=SW1-nic20,listen=:10120 -device virtio-net-pci,bus=SW1-bus1,netdev=SW1-nic20,mac=BA:AA:AA:01:01:20 \
-netdev socket,id=SW1-nic21,listen=:10121 -device virtio-net-pci,bus=SW1-bus1,netdev=SW1-nic21,mac=BA:AA:AA:01:01:21 \
-netdev socket,id=SW1-nic22,listen=:10122 -device virtio-net-pci,bus=SW1-bus1,netdev=SW1-nic22,mac=BA:AA:AA:01:01:22 \
-netdev socket,id=SW1-nic23,listen=:10123 -device virtio-net-pci,bus=SW1-bus1,netdev=SW1-nic23,mac=BA:AA:AA:01:01:23 \
-netdev socket,id=SW1-nic24,listen=:10124 -device virtio-net-pci,bus=SW1-bus1,netdev=SW1-nic24,mac=BA:AA:AA:01:01:24 \
-netdev socket,id=SW1-nic25,listen=:10125 -device virtio-net-pci,bus=SW1-bus1,netdev=SW1-nic25,mac=BA:AA:AA:01:01:25 \
-netdev socket,id=SW1-nic26,listen=:10126 -device virtio-net-pci,bus=SW1-bus1,netdev=SW1-nic26,mac=BA:AA:AA:01:01:26 \
-netdev socket,id=SW1-nic27,listen=:10127 -device virtio-net-pci,bus=SW1-bus1,netdev=SW1-nic27,mac=BA:AA:AA:01:01:27 \
-netdev socket,id=SW1-nic28,listen=:10128 -device virtio-net-pci,bus=SW1-bus1,netdev=SW1-nic28,mac=BA:AA:AA:01:01:28 \
-netdev socket,id=SW1-nic29,listen=:10129 -device virtio-net-pci,bus=SW1-bus1,netdev=SW1-nic29,mac=BA:AA:AA:01:01:29 \
-netdev socket,id=SW1-nic30,listen=:10130 -device virtio-net-pci,bus=SW1-bus1,netdev=SW1-nic30,mac=BA:AA:AA:01:01:30 \
Deixei todas as interfaces do switch como UP para que o OVS consiga gerenciar os frames Ethernet.
ip link set eth0 up
ip link set eth1 up
ip link set eth2 up
ip link set eth3 up
ip link set eth4 up
ip link set eth5 up
ip link set eth6 up
ip link set eth7 up
ip link set eth8 up
ip link set eth9 up
ip link set eth10 up
ip link set eth11 up
ip link set eth12 up
ip link set eth13 up
ip link set eth14 up
ip link set eth15 up
ip link set eth16 up
ip link set eth17 up
ip link set eth18 up
ip link set eth19 up
ip link set eth20 up
Criei o bridge do switch onde o OVS gerencia todos os frames Ethernet que entram e saem do switch
ovs-vsctl add-br sw1
Adicionei o uplink para o RT1
ovs-vsctl add-port sw1 eth0
Fiz o trunk entre as VLANs na eth0
ovs-vsctl set port eth0 trunks=10,20,30,40
E atribui cada nic ao bridge sw1 cada qual em sua determinada VLAN.
# Setor A - VLAN 10
ovs-vsctl add-port sw1 eth1 tag=10
ovs-vsctl add-port sw1 eth2 tag=10
ovs-vsctl add-port sw1 eth3 tag=10
ovs-vsctl add-port sw1 eth4 tag=10
ovs-vsctl add-port sw1 eth5 tag=10
# Setor B - VLAN 20
ovs-vsctl add-port sw1 eth6 tag=20
ovs-vsctl add-port sw1 eth7 tag=20
ovs-vsctl add-port sw1 eth8 tag=20
ovs-vsctl add-port sw1 eth9 tag=20
ovs-vsctl add-port sw1 eth10 tag=20
# Setor C, VLAN 30
ovs-vsctl add-port sw1 eth11 tag=30
ovs-vsctl add-port sw1 eth12 tag=30
ovs-vsctl add-port sw1 eth13 tag=30
ovs-vsctl add-port sw1 eth14 tag=30
ovs-vsctl add-port sw1 eth15 tag=30
# Setor D, VLAN 40
ovs-vsctl add-port sw1 eth16 tag=40
ovs-vsctl add-port sw1 eth17 tag=40
ovs-vsctl add-port sw1 eth18 tag=40
ovs-vsctl add-port sw1 eth19 tag=40
ovs-vsctl add-port sw1 eth20 tag=403. Exemplo de configuração das estações das redes.
Esse é um exemplo de como os scripts de execução das VMs atuando como estações da rede estão, nesse caso é a estação A-01 que se conecta no switch pelo socket QEMU 10101 e internamente na nic eth1.
#!/bin/bash
qemu-system-x86_64 \
-enable-kvm \
-m 256 \
-smp 1 \
-drive file=/home/nathan/infra/imagens/base_alpine.qcow2,format=qcow2 \
-virtfs local,path=.,mount_tag=scripts_config,security_model=none \
--snapshot \
-netdev socket,id=A-01,connect=:10101 -device virtio-net-pci,netdev=A-01,mac=BA:AA:AA:01:02:01Esse é um script de configurações de rede que é executado em cada VM, nesse caso é o da A-01 também.
ip addr add 10.0.10.2/29 dev eth0
ip link set eth0 up
ip route add default via 10.0.10.1
echo "nameserver 8.8.8.8" > /etc/resolv.confSegue um vídeo abaixo no qual é possivel ver as configurações diretamente nos terminais das VMs, faço alguns testes em VMs aletórias para o vídeo não ficar longo.
4. Próximo passo configurar um servidor Proxmox e serviço SMB.
- Configurar servidor Proxmox
- Habilitar serviço SMB.