# Switches

### O que é?

O Switch (ou comutador) é um dispositivo de hardware inteligente que opera primariamente na **Camada 2 (Enlace)** do modelo OSI. Ele é responsável por conectar dispositivos em uma rede local e encaminhar os dados apenas para o destinatário específico.

### Para que serve?

Sua função é organizar o tráfego de rede, eliminando colisões e aumentando a segurança e a eficiência. Diferente do hub, o switch cria "canais dedicados" temporários entre a porta de origem e a porta de destino, impedindo que outros dispositivos vejam dados que não lhes pertencem.

### Como funciona?

O switch baseia seu funcionamento na **Tabela CAM (Content Addressable Memory)**, também conhecida como Tabela de Endereços MAC:

1. **Aprendizado:** Quando um dispositivo envia um frame, o switch lê o endereço MAC de origem e o associa à porta física onde o cabo está conectado.
2. **Consulta:** O switch lê o endereço MAC de destino no frame.
3. **Encaminhamento (Forwarding):** Se o MAC de destino estiver na Tabela CAM, o switch envia o dado apenas para a porta correspondente.
4. **Inundação (Flooding):** Se o destino for desconhecido (ou um Broadcast), o switch envia para todas as portas (agindo como um hub momentaneamente) até descobrir onde o destino está.

```mermaid
graph TD
    subgraph CAM_Logic [Lógica da Tabela CAM]
        Table{{Tabela de Endereços MAC}}
        Table --- T1[Porta 1: AA:BB:CC]
        Table --- T2[Porta 2: DD:EE:FF]
    end

    Frame[Frame Entrando na Porta 1] -->|Passo 1: Aprendizado| Table
    
    subgraph Decision [Processo de Encaminhamento]
        D{MAC Destino está na Tabela?}
        D -->|Sim: Unicast| F1[Envia APENAS para a porta do destino]
        D -->|Não: Flooding| F2[Envia para TODAS as portas exceto a de origem]
    end

    Table -->|Passo 2: Consulta| D
```

### Por que funciona?

Funciona porque ele isola os **domínios de colisão**. Cada porta do switch é seu próprio domínio de colisão. Isso é possível graças aos circuitos integrados de aplicação específica (**ASIC**), que processam os frames em nível de hardware em altíssima velocidade, permitindo comunicações simultâneas sem interferência.

```mermaid
flowchart TB
    subgraph Hub_Network [Domínio de Colisão Único - HUB]
        direction TB
        H1[PC 1] --- HUB((HUB))
        H2[PC 2] --- HUB
        H3[PC 3] --- HUB
        note1[<b>Nota:</b> Uma colisão afeta TODOS]
    end

    subgraph Switch_Network [Micro-Segmentação - SWITCH]
        direction TB
        S1[PC A] --- SW[[SWITCH]]
        S2[PC B] --- SW
        S3[PC C] --- SW
        note2[<b>Nota:</b> Colisões isoladas por porta]
    end
```

***

### Diferenças Cruciais: Hub vs. Switch

| Característica   | Hub                    | Switch                       |
| ---------------- | ---------------------- | ---------------------------- |
| **Camada OSI**   | Camada 1 (Física)      | Camada 2 (Enlace)            |
| **Inteligência** | Nenhuma (Repetidor)    | Alta (Tabela MAC)            |
| **Tráfego**      | Broadcast (para todos) | Unicast (direcionado)        |
| **Segurança**    | Baixa (Sniffing fácil) | Alta (Requer ataques ativos) |

***

## Tipos de Switches de Rede

### O que é?

Embora todos os switches compartilhem a função básica de encaminhar frames baseados em endereços MAC, eles são classificados de acordo com sua capacidade de configuração, processamento e em qual camada do modelo OSI operam. Os principais tipos são: **Unmanaged**, **Managed (L2)** e **Layer 3 (L3)**.

### Para que serve?

* **Unmanaged (Não Gerenciável):** Serve para redes domésticas ou pequenos escritórios onde a simplicidade é prioridade. Não permite configurações.
* **Managed (Gerenciável L2):** Serve para redes corporativas que exigem controle sobre o tráfego, criação de VLANs e monitoramento de portas.
* **Layer 3 (L3):** Serve para interconectar diferentes sub-redes, unindo as funções de um switch e de um roteador em um único hardware de alta performance.

### Como funciona?

* **Unmanaged:** Funciona de forma fixa. Ele possui uma tabela CAM automática e não aceita intervenção humana. Se ele sofrer um ataque de MAC Flooding, ele simplesmente falha e vira um hub.
* **Managed (L2):** Oferece uma interface (Web, CLI ou SNMP) para configuração. Ele permite definir permissões por porta (Port Security), criar redes virtuais (VLANs) e espelhar o tráfego de uma porta para outra (Port Mirroring/SPAN) para análise.
* **Layer 3 (L3):** Além de olhar para o endereço MAC (Camada 2), ele consegue inspecionar o endereço IP (Camada 3). Ele toma decisões de roteamento entre redes diferentes usando hardware especializado (ASIC), sendo muito mais rápido que um roteador comum baseado em software.

```mermaid
flowchart TD
    In((Frame Chega)) --> L2{MAC Destino é o do Switch?}
    
    L2 -- Não --> L2_Forward[Encaminhamento L2: Usa Tabela CAM]
    L2 -- Sim --> L3_Check{IP Destino é Local?}
    
    L3_Check -- Sim --> Internal[Processamento Interno / Gerência]
    L3_Check -- Não --> L3_Route[Encaminhamento L3: Usa Tabela de Roteamento]
    
    L2_Forward --> Out((Saída Porta X))
    L3_Route --> Out
```

### Por que funciona?

Funciona devido à separação entre o **Data Plane** (plano de dados), que encaminha os pacotes, e o **Control Plane** (plano de controle), que decide para onde os pacotes devem ir. Nos modelos gerenciáveis e L3, o atacante tem uma superfície de ataque maior porque pode tentar comprometer o plano de controle.

***

## Switch Layer 3 em Data Centers

### Para que serve?

Sua principal função é realizar o **Inter-VLAN Routing** (roteamento entre redes diferentes) em altíssima velocidade. Em Data Centers, ele serve para:

1. Eliminar gargalos de roteamento (evitando que todo o tráfego precise subir para um roteador externo).
2. Segmentar milhares de servidores em sub-redes distintas.
3. Implementar protocolos de roteamento dinâmico (como OSPF ou BGP) dentro da própria rede local.

### Como funciona?

Diferente de um roteador comum, que usa processamento via software (CPU), o Switch L3 utiliza hardware especializado chamado **ASIC (Application-Specific Integrated Circuit)**.

1. **Primeiro Pacote:** Quando um pacote chega, a CPU do switch analisa o destino e determina a rota.
2. **Programação do Hardware:** O switch "instala" essa rota diretamente nos chips ASIC.
3. **Encaminhamento em "Wire-Speed":** Os pacotes seguintes para o mesmo destino são processados instantaneamente pelo chip, sem passar pela CPU, atingindo velocidades de Terabits por segundo.

### Por que usar L3 em vez de apenas L2 e cabos?

O uso de redes puramente Camada 2 (L2) em Data Centers apresenta três falhas fatais que o L3 resolve:

#### 1. Fim do Problema do Spanning Tree (STP)

* **Em L2:** Para evitar loops de rede, o protocolo STP bloqueia caminhos redundantes. Isso significa que você paga por dois cabos de fibra óptica, mas só usa um; o outro fica "desligado" esperando uma falha.
* **Em L3:** O roteamento permite o uso de todos os links simultaneamente através de **ECMP (Equal-Cost Multi-Path)**. O tráfego é distribuído entre todos os cabos, dobrando ou quadruplicando a largura de banda disponível.

#### 2. Redução do Domínio de Broadcast

* **Em L2:** Quanto mais servidores você conecta, mais mensagens de "broadcast" (como ARP) poluem a rede. Em um Data Center com 10.000 servidores L2, a rede "morreria" apenas processando ruído de fundo.
* **Em L3:** O broadcast é confinado a cada sub-rede pequena. O switch L3 "barra" esse ruído, mantendo a performance estável.

#### 3. Escalabilidade "Leaf-Spine"

* O cenário atual utiliza a arquitetura **Leaf-Spine**, onde cada Switch L3 está conectado a todos os outros switches de núcleo. Isso garante que qualquer servidor esteja a apenas "dois saltos" de distância de qualquer outro, algo impossível de gerenciar apenas com cabos e switches burros.

***

#### Importância para o Cenário Atual (Cloud e Virtualização)

No cenário de computação em nuvem (AWS, Azure, Google Cloud), o Switch L3 é vital por causa da **Mobilidade de Máquinas Virtuais (VMs)**. Através de protocolos como **VXLAN**, o Switch L3 consegue criar uma "Rede Virtual Camada 2" por cima de uma "Infraestrutura Física Camada 3". Isso permite que um servidor mude de um rack para outro, ou de um país para outro, mantendo o mesmo IP, enquanto o Switch L3 cuida de rotear os pacotes pelo caminho mais rápido através da internet ou fibra privada.

***

#### Comparativo para Pentesters

| Tipo          | Vulnerável a MAC Flooding | Suporta VLANs | Possui IP de Gerência | Alvo de Ataque                     |
| ------------- | ------------------------- | ------------- | --------------------- | ---------------------------------- |
| **Unmanaged** | Sim (Fácil)               | Não           | Não                   | Tráfego de usuários                |
| **Managed**   | Depende (Port Security)   | Sim           | Sim                   | Credenciais de Admin, VLAN Hopping |
| **Layer 3**   | Raramente                 | Sim           | Sim                   | Tabelas de Roteamento, ACLs        |

***

## Configuração de Switches

### O que é?

A configuração de um switch é o processo de definir os parâmetros de operação do dispositivo, que podem variar desde o básico (atribuição de IP para gerência) até o avançado (segurança de porta e segmentação de redes virtuais).

### Para que serve?

Serve para garantir que o switch não seja apenas um "repassador de pacotes" (como o hub), mas um controlador de tráfego que aplica políticas de segurança, isola departamentos (VLANs) e impede ataques básicos de Camada 2.

### Como funciona?

A configuração geralmente ocorre via **CLI (Command Line Interface)** através de um cabo console (RS-232/USB) ou protocolos de rede (SSH/Telnet). O switch processa essas instruções e as armazena na sua memória NVRAM (Non-Volatile RAM).

#### Exemplo de Configuração Básica (Padrão Cisco IOS):

```bash
# Entrar no modo de configuração global
enable
configure terminal

# Configurar uma senha para o modo privilegiado
enable secret SENHA_FORTE

# Criar uma VLAN e dar um nome
vlan 10
name FINANCEIRO

# Atribuir uma porta do switch para essa VLAN
interface fastEthernet 0/1
switchport mode access
switchport access vlan 10
```

### Por que funciona?

Funciona porque o switch utiliza o **Software de Gerenciamento** para instruir o **Hardware (ASIC)** sobre como tratar os frames. Quando você configura uma VLAN ou um limite de endereços MAC por porta, você está alterando a lógica que o switch usa para consultar sua Tabela CAM antes de encaminhar cada bit de dado.

***

## Configurações de Segurança (Defesa)

Para evitar os ataques mencionados anteriormente, um switch deve ser configurado com:

1. **Port Security:** Limita quantos endereços MAC podem se conectar a uma única porta. Se um segundo MAC aparecer (tentativa de ataque), a porta desliga automaticamente.
2. **Desativação de Portas Não Utilizadas:** Portas vazias devem ser mantidas em estado `shutdown`.
3. **DHCP Snooping:** Impede que um atacante conecte um servidor DHCP falso na rede para roubar o tráfego.

***

## Configuração para o Pentester (Ataque/Auditoria)

Se você está realizando um teste de invasão, sua "configuração" envolve preparar sua interface para enganar o switch.

#### 1. Configurando o Port Mirroring (SPAN)

Se você tiver acesso administrativo ao switch e quiser capturar tráfego de outra porta sem fazer barulho:

```bash
# Configura a porta 1 como origem e a porta 10 (sua) como destino
monitor session 1 source interface fa0/1
monitor session 1 destination interface fa0/10
```

#### 2. Configurando o Ataque de MAC Flooding

Para transformar o switch em um hub via software (usando a ferramenta `macof` do pacote dsniff):

```bash
# Envia milhares de endereços MAC aleatórios pela sua interface eth0
sudo macof -i eth0 -n 100000
```

#### 3. Configurando Bypass de Port Security

Se o switch limita o acesso a um MAC específico, você deve configurar sua máquina para clonar o MAC da vítima:

```bash
# Altera o endereço MAC da sua placa de rede
sudo ip link set dev eth0 down
sudo ip link set dev eth0 address AA:BB:CC:DD:EE:FF
sudo ip link set dev eth0 up
```

***

## Configurações Avançadas: VLANs (Tagged, Untagged e PVID)

```mermaid
graph TD
    subgraph Host_A [Host Origem - VLAN 10]
        A[NIC: Frame Padrão] -->|Payload + EtherType| B(Porta de Acesso)
    end

    subgraph Switch_1 [Switch de Ingress]
        B --> C{Processo Tagging}
        C -->|Consulta PVID| D[Inserção 802.1Q Tag]
        D -->|Recálculo FCS| E[Frame Modificado: 1522 bytes]
    end

    subgraph Trunk_Link [Link Trunk IEEE 802.1Q]
        E -->|Encaminhamento via VID| F[Transporte de Tags]
        note1[Tag: 0x8100 + ID 10] --- F
    end

    subgraph Switch_2 [Switch de Egress]
        F --> G{Processo Untagging}
        G -->|Valida VLAN ID| H[Remoção da Tag]
        H -->|Restaura EtherType| I[Frame Original: 1518 bytes]
    end

    subgraph Host_B [Host Destino - VLAN 10]
        I --> J(Porta de Acesso)
        J --> K[NIC: Recebe Frame Original]
    end
```

### O que é?

Em nível avançado, uma VLAN não é apenas uma "divisão de rede", mas uma instrução de manipulação de cabeçalho no **Frame Ethernet**. O switch utiliza o padrão **IEEE 802.1Q** para inserir uma etiqueta (Tag) de 4 bytes entre o endereço MAC de origem e o campo *EtherType*.

```ruby
ESTRUTURA DO FRAME ETHERNET (COMPARATIVO)

[ FRAME ETHERNET PADRÃO (Untagged) ]
+----------+----------+-----------+----------------------+----------+
| MAC DEST | MAC ORIG | ETHERTYPE |        PAYLOAD       |   FCS    |
| (6 bytes)| (6 bytes)| (2 bytes) |    (Dados Layer 3)   | (4 bytes)|
+----------+----------+-----------+----------------------+----------+
                      ^
                      | 0x0800 (IPv4)
                      

[ FRAME ETHERNET 802.1Q (Tagged) ]
+----------+----------+-----------+----------------------+----------------------+----------+
| MAC DEST | MAC ORIG | 802.1Q TAG|      ETHERTYPE       |        PAYLOAD       |   FCS* |
| (6 bytes)| (6 bytes)| (4 bytes) |      (2 bytes)       |    (Dados Layer 3)   | (4 bytes)|
+----------+----------+-----------+----------------------+----------------------+----------+
                      |
                      |__ [ ESTRUTURA DA TAG VLAN ]
                          +-------------------+-------+---+--------------------+
                          | TPID (ID Tag)     | PCP   |DEI| VLAN ID            |
                          | 16 bits (0x8100)  | 3 bits|1 b| 12 bits (0-4094)   |
                          +-------------------+-------+---+--------------------+

*O campo FCS (Frame Check Sequence) é recalculado após a inserção da Tag.
```

***

#### Exemplo de Representação em Hexadecimal

Se estivéssemos analisando um pacote na **VLAN 10** (Hex: `0x00A`) com prioridade padrão, o cabeçalho sofreria a seguinte mutação:

* **Antes (EtherType IPv4):** `... 08 00`
* **Depois (Inserção 802.1Q):** `... 81 00 00 0A 08 00`

> **Legenda do Código:**
>
> * `81 00`: O novo **TPID** (Tag Protocol Identifier) que avisa ao switch: "Pare! O que vem a seguir é uma Tag VLAN".
> * `00 0A`: Os 16 bits seguintes que contêm a Prioridade (000), o bit DEI (0) e o ID da VLAN (0000 0000 1010 em binário = 10 em decimal).
> * `08 00`: O EtherType original, agora "empurrado" para a direita.

### Para que serve?

Serve para permitir que o switch identifique a qual grupo lógico um pacote pertence enquanto ele transita por caminhos compartilhados (como cabos que ligam dois switches). Isso permite:

1. **Isolamento de Broadcast:** Impede que um sinal de "procura" da rede financeira chegue à rede de visitantes.
2. **Segurança de Camada 2:** Cria barreiras que exigem um roteador (Camada 3) para serem atravessadas.
3. **Priorização (QoS):** A etiqueta da VLAN também carrega bits de prioridade para tráfego sensível, como voz (VoIP).

### Como funciona?

O funcionamento depende de como a porta do switch é configurada para tratar a "etiqueta" (Tag):

#### 1. VLAN Untagged (Portas de Acesso)

* **Envio (Egress):** O switch remove a etiqueta antes de enviar o frame para o dispositivo final (computador, impressora). O dispositivo recebe um frame Ethernet padrão.
* **Recebimento (Ingress):** Quando o dispositivo envia um dado sem etiqueta, o switch o marca internamente com o **PVID (Port VLAN ID)** configurado naquela porta.

#### 2. VLAN Tagged (Portas Tronco/Híbridas)

* **Envio (Egress):** O switch mantém a etiqueta de 4 bytes no frame. O próximo dispositivo (outro switch ou servidor com suporte a VLAN) lê o ID para saber para onde encaminhar.
* **Recebimento (Ingress):** O switch lê a etiqueta do frame recebido. Se o ID da VLAN estiver na lista de "VLANs permitidas" daquela porta, o frame é aceito; caso contrário, é descartado.

#### 3. PVID (Port VLAN ID)

É o identificador de VLAN atribuído a frames que chegam a uma porta **sem etiqueta**. Toda porta *Untagged* deve ter um PVID definido para que o switch saiba a qual rede aquele tráfego pertence.

### Por que funciona?

Funciona devido ao hardware especializado do switch (**ASIC**). Quando um frame entra no switch:

1. O ASIC consulta a regra da porta: "Esta porta aceita Tags?".
2. Se o frame tem Tag e a porta permite aquela VLAN, ele consulta a **Tabela CAM** específica daquela VLAN.
3. Se o frame não tem Tag, ele aplica o PVID da porta. O isolamento é físico no nível do processamento: os dados de uma VLAN são logicamente invisíveis para os circuitos que processam outra VLAN, a menos que haja uma regra de roteamento explícita.

***

## Configurações Avançadas: Trunking (802.1Q)

```mermaid
graph LR
    subgraph LAN_LOCAL [Segmentos Locais - Switch A]
        V10[Host VLAN 10] -- Frame Padrão --> SA(Switch A)
        V20[Host VLAN 20] -- Frame Padrão --> SA
        VN[VLAN Nativa 99] -- Frame Padrão --> SA
    end

    subgraph TRUNK_LINK [Porta Trunk - IEEE 802.1Q]
        SA ==> T1{Multiplexador}
        T1 -- "Tag ID:10" --> T2((Link Físico Único))
        T1 -- "Tag ID:20" --> T2
        T1 -- "Untagged (Nativa)" --> T2
    end

    subgraph LAN_REMOTA [Segmentos Remotos - Switch B]
        T2 ==> SB(Switch B)
        SB -- Remove Tag 10 --> R10[Host VLAN 10]
        SB -- Remove Tag 20 --> R20[Host VLAN 20]
        SB -- Encaminha Direto --> RN[VLAN Nativa 99]
    end

```

### O que é?

O **Trunk** (ou Tronco) é uma configuração de porta de rede que permite a passagem de tráfego de múltiplas VLANs através de um único link físico. Ele utiliza o protocolo **IEEE 802.1Q** para identificar a qual VLAN cada frame pertence enquanto ele transita entre dispositivos de infraestrutura.

### Para que serve?

Serve para interconectar switches, roteadores e servidores de virtualização (como VMware ou Proxmox) sem a necessidade de dedicar um cabo físico para cada rede lógica. Sem o Trunk, a segmentação por VLANs ficaria limitada a um único switch físico, impedindo a expansão da rede por um edifício ou data center.

### Como funciona?

O Trunk opera através de um processo de **Encapsulamento** e **Decapsulamento**:

1. **Etiquetagem (Tagging):** Quando um frame de uma VLAN (ex: VLAN 10) precisa atravessar o Trunk, o switch insere um cabeçalho 802.1Q de 4 bytes no frame original.
2. **Identificador de VLAN (VID):** Dentro dessa etiqueta, existe um campo de 12 bits que armazena o ID da VLAN (permitindo até 4096 VLANs distintas).
3. **VLAN Nativa (Native VLAN):** É a única exceção ao tagging. Por padrão, frames pertencentes à VLAN Nativa atravessam o Trunk **sem etiqueta**. Se um switch recebe um frame sem tag em uma porta Trunk, ele assume automaticamente que o dado pertence à VLAN Nativa.
4. **Permissões (Allowed List):** Um administrador pode configurar quais VLANs têm permissão para atravessar o tronco, bloqueando as demais por segurança.

### Por que funciona?

Funciona porque o protocolo 802.1Q é um padrão da indústria reconhecido por quase todos os fabricantes de hardware. O switch de destino lê o cabeçalho, identifica o ID da VLAN e sabe exatamente para quais portas deve (ou não) replicar aquele sinal, mantendo o isolamento lógico mesmo em um meio físico compartilhado.

***

#### Configurações de Segurança e Riscos (Pentest)

| Configuração               | Descrição                                      | Risco de Segurança                                                                               |
| -------------------------- | ---------------------------------------------- | ------------------------------------------------------------------------------------------------ |
| **DTP (Dynamic Trunking)** | Negocia o tronco automaticamente.              | Um atacante pode fingir ser um switch e forçar um tronco para capturar todas as VLANs.           |
| **Native VLAN 1**          | Uso do padrão de fábrica para tráfego sem tag. | Facilita ataques de **VLAN Double Tagging**.                                                     |
| **Trunk Pruning**          | Remove VLANs desnecessárias do tronco.         | Se não configurado, o tráfego de broadcast de VLANs sensíveis viaja por caminhos desnecessários. |


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://0xmorte.gitbook.io/bibliadopentestbr/conceitos/redes/dispositivos-de-rede/switches.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
