Switches — SP
Switches — SP
Documentacao dos switches do cluster CPPS em SP, do UniFi Network Controller que os gerencia e dos procedimentos de acesso/operacao via terminal.
Cobertura:
- US-16-XG (Ubiquiti, 10G) — backbone do plano LINSTOR
- USW Pro Aggregation (Ubiquiti, 10G) — distribui o backbone para ippri-11/12
- TP-Link SG2218 (1G) — intranet gerencial / acesso dos workstations
- UniFi Network Controller (self-hosted em pve-ippri-31) — adocao e configuracao
Inventario fisico
| Switch | Modelo | Portas | IP mgmt | Funcao |
|---|---|---|---|---|
| US-16-XG | Ubiquiti USXG | 12x SFP+ 10G + 4x RJ45 10GbaseT | 10.10.20.2/24 | LAGs LINSTOR (ippri-31, ippri-32) + uplink ao Pro Agg |
| USW Pro Aggregation | Ubiquiti USAGGPRO | 28x SFP+ 10G + 4x SFP28 25G | 10.10.20.3/24 | LAGs LINSTOR (ippri-11, ippri-12) + downlink ao XG |
| TP-Link SG2218 | TL-SG2218 (L2 managed) | 16x RJ45 1G + 2x SFP 1G | 192.168.10.1/24 (nao mudar para /23 — switch nao aceita) | Intranet 1G, LAN principal |
UniFi — identificacao detalhada
Saida de info via mca-cli-op (terminal do switch):
US-16-XG: Model: US-16-XG Version: 7.4.1.16850 MAC Address: 74:83:c2:07:05:25 IP Address: 10.10.20.2 Hostname: USXG16 Status: Connected (http://10.10.20.31:8080/inform)
USW Pro Aggregation: Model: USW-Pro-Aggregation Version: 7.4.1.16850 MAC Address: 9c:05:d6:51:a3:cf IP Address: 10.10.20.3 Hostname: USWProAggregation Status: Connected (http://10.10.20.31:8080/inform)Credenciais SSH dos switches UniFi: inventory/vault.yaml
(vault_unifi_switch_user, vault_unifi_switch_password). Nao commitadas.
Topologia do backbone 10G
ippri-31 (controller UniFi, 10.10.20.31/24 em bond1) │ │ LAG 1 = 2×10G = 20 GbE │ (bond1: enp5s0f0+enp5s0f1 → XG 15+16) ▼ US-16-XG ─── LAG 3 (ports 11/12) ──── ippri-32 (bond1) 10.10.20.2 10.10.20.32 │ │ LAG 2 = 3×10G = 30 GbE │ (XG 2/4/6 ↔ Pro Agg 26/27/28) ▼ USW Pro Aggregation ─── port 23 ─── ippri-11 (ens3f0) 10.10.20.11 10.10.20.3 ─── port 25 ─── ippri-12 (ens6f1) 10.10.20.12Observacoes:
- As “uplink speed” exibidas pelo controller (
20 GbEno XG,30 GbEno Pro Agg) refletem o LAG em direcao ao controller desde cada switch — nao sao inconsistencia. - LAG 3 foi dimensionada com 2 links porque o ippri-32 so tem 2 NICs 10G disponiveis no bond. LAG 2 tem 3 links para evitar gargalo quando ippri-11 e ippri-12 somam ~20G simultaneos.
Mapa de portas
US-16-XG (10.10.20.2)
| Porta | Conexao | Modo | LAG | Observacao |
|---|---|---|---|---|
| 2 | USW Pro Agg porta 26 | aggregate | LAG 2 | |
| 4 | USW Pro Agg porta 27 | aggregate | LAG 2 | |
| 6 | USW Pro Agg porta 28 | aggregate | LAG 2 | |
| 7 | — | — | Desativada 2026-04-20 (mgmt migrou p/ 10.10.10.0/24) | |
| 11 | ippri-32 bond1 slave | aggregate | LAG 3 | |
| 12 | ippri-32 bond1 slave | aggregate | LAG 3 | |
| 13 | ippri-33 enp5s0f0 | aggregate | LAG 4 | Habilitada 2026-04-22 (era disabled de 21/04 a 22/04) |
| 14 | ippri-33 enp5s0f1 | aggregate | LAG 4 | Habilitada 2026-04-22 (era disabled de 21/04 a 22/04) |
| 15 | ippri-31 enp5s0f0 | aggregate | LAG 1 | Port Profile: Native VLAN = default |
| 16 | ippri-31 enp5s0f1 | aggregate | LAG 1 | Port Profile: Native VLAN = default |
USW Pro Aggregation (10.10.20.3)
| Porta | Conexao | Modo | LAG |
|---|---|---|---|
| 23 | ippri-11 ens3f0 | switch (access) | — |
| 25 | ippri-12 ens6f1 | switch (access) | — |
| 26 | US-16-XG porta 2 | aggregate | LAG 2 |
| 27 | US-16-XG porta 4 | aggregate | LAG 2 |
| 28 | US-16-XG porta 6 | aggregate | LAG 2 |
TP-Link SG2218
Nao documentado em detalhe ainda — acesso por SSH/CLI pendente (ver TP-Link SG2218 abaixo).
UniFi Network Controller
Instalado em pve-ippri-31 para gerenciar US-16-XG e USW Pro Aggregation. Instalacao self-hosted (nao depende de Cloud Key nem UniFi OS).
Detalhes da instalacao
| Aspecto | Valor |
|---|---|
| Host | pve-ippri-31 |
| Pacote | unifi 10.2.105-33556-1 (deb oficial) |
| Servico | unifi.service (systemd, enabled) |
| Java | OpenJDK 25.0.2 (Debian 1deb13u2) |
| Banco | MongoDB 7.0.31 (mongodb-org-server) |
| Bind | 0.0.0.0 em todas as portas — acessivel via LAN e via 10G |
| Portas | 8080 (inform), 8443 (Web UI HTTPS), 8843, 8880, 27117 (Mongo local) |
| Dados | /var/lib/unifi (owner unifi:unifi) |
| Binarios | /usr/lib/unifi |
| Backups | Na tela Settings → System → Backup da Web UI |
Parametros da JVM (do systemd unit):
-Xmx1024M-XX:+UseParallelGC-XX:+ExitOnOutOfMemoryError-XX:+CrashOnOutOfMemoryErrorMongo roda embutido como subprocesso (--bind_ip 127.0.0.1 --port 27117, cache 256M).
Instalacao (procedimento oficial)
Repositorio oficial do UniFi no Debian/Proxmox 13:
# 1. Chave GPG e repocurl -fsSL https://dl.ui.com/unifi/unifi-repo.gpg \ | gpg --dearmor -o /etc/apt/trusted.gpg.d/unifi-repo.gpgecho 'deb https://www.ui.com/downloads/unifi/debian stable ubiquiti' \ > /etc/apt/sources.list.d/100-ubnt-unifi.list
# 2. MongoDB 7 (pre-requisito do UniFi 10.x em Debian 13)curl -fsSL https://www.mongodb.org/static/pgp/server-7.0.asc \ | gpg --dearmor -o /etc/apt/trusted.gpg.d/mongodb-server-7.0.gpgecho 'deb https://repo.mongodb.org/apt/debian bookworm/mongodb-org/7.0 main' \ > /etc/apt/sources.list.d/mongodb-org-7.0.list
# 3. Instalacaoapt updateapt install -y unifisystemctl enable --now unifi
# 4. Acesso inicial# Abrir https://<IP-do-host>:8443 na LAN — wizard cria conta admin localConfiguracao do controller
Uma vez aberto o wizard:
- Controller Name:
cpps-sp(ou qualquer identificador) - Criar conta local (nao vincular a Ubiquiti Cloud) — assim o controller
nao precisa de internet para operar os switches. Conta local fica em
/var/lib/unifi/data/db. - Adopcao dos switches:
- Os switches UniFi aparecem em Devices → Pending Adoption assim que
enxergarem o controller via rede (ver secao
set-informabaixo). - Clicar em “Adopt” em cada switch.
- Os switches UniFi aparecem em Devices → Pending Adoption assim que
enxergarem o controller via rede (ver secao
- Site default basta — nao e necessario criar sites adicionais.
- Settings → System → Updates: manter em “manual” evita upgrades automaticos de firmware nos switches.
IP forwarding (roteamento entre LANs)
Como o controller vive em ippri-31 e escuta em 0.0.0.0, ele atende tanto
a LAN principal (192.168.10.31) quanto a rede 10G (10.10.20.31). Para que os
switches em 10.10.20.0/24 consigam consultar DNS/NTP externo via ippri-31,
e para garantir roteamento consistente, o IP forward esta habilitado:
# Ja aplicado em pve-ippri-31:cat /etc/sysctl.d/99-linstor-forward.conf# net.ipv4.ip_forward=1
sysctl net.ipv4.ip_forward # = 1Rede de inform
Depois de adotados, cada switch guarda o inform URL localmente e continua
falando com o controller por esse endereco, mesmo que o IP mude em ambos os
lados. Se o switch for migrado para outra rede e o inform URL ficar incorreto,
use o procedimento set-inform descrito na secao
Acesso via terminal.
Valor atual (switches em 10.10.20.0/24): inform URL = http://10.10.20.31:8080/informAcesso via terminal
Matriz de metodos
| Metodo | Origem | Destino | Exemplo |
|---|---|---|---|
| UniFi Web UI | Workstation/LAN | Controller | https://192.168.10.31:8443 |
| SSH direto | Node LINSTOR (11/12/31/32) | Switch UniFi | ssh <user>@10.10.20.2 |
| SSH ProxyJump | Workstation | Switch UniFi | ssh -J root@192.168.10.11 <user>@10.10.20.2 |
mca-cli-op | Dentro do SSH do switch | Shell UniFi interno | mca-cli-op → info / set-inform |
| Script set-inform | Workstation | Switch UniFi | uv run config/scripts/unifi-set-inform.py <ip> <url> |
SSH aos switches UniFi
As credenciais SSH sao configuradas pelo controller (Settings → System →
Advanced → Device Authentication). Ficam armazenadas em inventory/vault.yaml:
vault_unifi_switch_user: <user>vault_unifi_switch_password: <pass>De qualquer node LINSTOR (ippri-11, 12, 31, 32):
ssh <user>@10.10.20.2 # US-16-XGssh <user>@10.10.20.3 # USW Pro AggregationDe workstation (fora da rede 10G), via ProxyJump por qualquer node LINSTOR.
Adicionar em ~/.ssh/config:
Host unifi-xg HostName 10.10.20.2 User <user> ProxyJump root@192.168.10.11
Host unifi-aggpro HostName 10.10.20.3 User <user> ProxyJump root@192.168.10.11Depois: ssh unifi-xg ou ssh unifi-aggpro.
Comandos uteis nos switches UniFi
O shell SSH padrao do switch e uma versao limitada de busybox. Comandos
uteis disponiveis diretamente (sem entrar em mca-cli-op):
# Estado das portas (link, rate, LAG, STP)swctrl port show
# MACs aprendidos por porta (com IP se o switch conseguir associar)swctrl mac show
# Dump da config efetiva (arquivo em /tmp/system.cfg)cat /tmp/system.cfg | less
# Uptime, versao, memoriauname -acat /proc/meminfo | head -5Para comandos privilegiados de gerencia (reboot, set-inform, adocao manual),
entre no shell mca-cli-op:
mca-cli-opUniFi# info # versao, IP, status, inform URLUniFi# set-inform http://10.10.20.31:8080/inform # reaponta informUniFi# reboot # reinicializa o switchUniFi# exitScript helper: unifi-set-inform.py
Arquivo: config/scripts/unifi-set-inform.py.
Reaponta o inform URL de um switch UniFi sem expor senha em command line —
le credenciais de inventory/vault.yaml e usa SSH via jump host.
uv run config/scripts/unifi-set-inform.py <switch_ip> <inform_url> [--jump <host>]
# Exemplos:uv run config/scripts/unifi-set-inform.py 10.10.20.2 http://10.10.20.31:8080/informuv run config/scripts/unifi-set-inform.py 10.10.20.3 http://10.10.20.31:8080/inform \ --jump 192.168.10.11Uso tipico: apos migrar o switch de rede de mgmt, o inform URL antigo
para de funcionar (o controller mudou de IP ou o switch mudou de subnet).
O script entra no shell mca-cli-op, executa set-inform, valida com
info e retorna 0 se o novo URL apareceu no output.
TP-Link SG2218
Informacoes conhecidas:
- IP mgmt: 192.168.10.1/24 (na LAN principal).
- Subnet mask nao pode ser alterada para /23 (limitacao do firmware TP-Link nesse modelo — aceita apenas /24 no mgmt).
- Workstations e LAN principal sao /23 (192.168.10.0/23), entao o switch so enxerga metade do range. Isso nao tira funcionalidade L2 (a comutacao acontece em hw, independente da mask), mas impede acesso direto ao Web UI a partir de IPs em 192.168.11.x — esses precisam vir via o gateway (192.168.10.5) ou por algum nó com IP em 192.168.10.0/24.
Estado atual do acesso (teste em 2026-04-21):
$ ping 192.168.10.1 0% reply (sem resposta ARP nem ICMP)
$ nmap -p 22,23,80,443 192.168.10.1 all ports filtered/closedPossibilidades que justificariam isso:
- Switch pode estar desligado ou com link down no momento do teste.
- ACL/firewall no switch restringindo o mgmt a determinadas VLANs/portas.
- Mgmt IP pode ter sido movido e 192.168.10.1 ja nao e mais o IP correto.
Proximo passo sugerido (quando o switch estiver acessivel):
- Descobrir IP real —
arp-scan 192.168.10.0/23a partir de um host em 192.168.10.x e procurar MAC OUI da TP-Link (inicios comuns:50:C7:BF,14:CC:20,AC:84:C6,70:4F:57,98:DA:C4,E4:C3:2A,30:DE:4B). - Verificar se o console serial esta acessivel — o modelo tem porta console RJ45 com baud 38400/8N1. Permite reset do admin via menu.
- Documentar aqui: credenciais (vault), habilitar SSH (esta desabilitado por padrao — precisa ir em System → Access Security → SSH Config → Enable na Web UI), registrar firmware e config.
Ate o acesso ser recuperado, operar o switch via console/Web UI fisicamente.
Operacao e troubleshooting
Verificar estado dos switches UniFi
# Estado de LAGs e portas em um unico ssh:ssh <user>@10.10.20.2 "swctrl port show" # US-16-XGssh <user>@10.10.20.3 "swctrl port show" # Pro Aggregation
# Ler a coluna "LAG" — ex "LAG 1(U)" = agregada e Up.# O prefixo A/AU na primeira coluna indica Aggregated (A) + Uplink (U).Do lado do host, validar LACP do bond1 do ippri-31/32:
cat /proc/net/bonding/bond1
# O que procurar:# Number of ports: 2 (ambas NICs ativas no aggregator)# Partner Mac Address: 74:83:c2:07:05:25 (MAC do XG — nao zerado)# Partner Churn State: monitoring ou none (nunca 'churned')Verificar estado do controller
# Em pve-ippri-31:systemctl status unifiss -tlnp | grep -E '(:8080|:8443|:27117)'
# Logs:journalctl -u unifi -ftail -f /usr/lib/unifi/logs/server.logTroubleshooting comum
| Sintoma | Diagnostico | Acao |
|---|---|---|
| Switch “Disconnected” na Web UI | info mostra inform URL antigo | set-inform http://10.10.20.31:8080/inform |
| Switch sem IP de mgmt | DHCP cai ou IP estatico errado | Reset de fabrica (botao ~10s) → re-adocao |
| Bond sem partner (LACP 00:00:…) | Portas do switch nao estao em LAG | UniFi Web UI → Devices → switch → Port Manager → Aggregate |
LAG com Native VLAN None | Frames chegam tagged VLAN 1 (ver bug resolvido em rede-10g-sp.md) | Port Profile da LAG → Native VLAN: default |
| Upgrades automaticos indesejados | Politica default do site e “auto” | Settings → System → Updates → Manual |
| Web UI lenta | Mongo DB inchado com logs antigos | mongo --port 27117 ace → limpar coleções *.log |
| Firmware do switch nao atualiza | Cache local estragado | Devices → switch → Config → Force Provision |
Runbook: migrar mgmt de switches UniFi para outra rede
Procedimento usado em 2026-04-20 para mover mgmt de 192.168.1.0/24 (rede isolada L2) para 10.10.20.0/24 (rede 10G compartilhada). Replicavel em outros clusters e util apos reset de fabrica dos switches.
Pre-requisitos:
- Controller UniFi self-hosted em execucao.
- Rede alvo (ex: 10.10.20.0/24) ja presente nas portas fisicas dos switches.
- Gateway na rede alvo disponivel e escutando o controller em
0.0.0.0:8080. - Credenciais SSH dos switches em
inventory/vault.yaml.
Passo 1 — IP forwarding no gateway (ippri-31):
sysctl -w net.ipv4.ip_forward=1echo 'net.ipv4.ip_forward=1' > /etc/sysctl.d/99-linstor-forward.confPasso 2 — Mudar IP de mgmt via UniFi Web UI:
Para cada switch em Devices → <switch> → Settings → Network:
IP Address: 10.10.20.X (.2 para XG, .3 para Pro Agg)Subnet Mask: 255.255.255.0Gateway: 10.10.20.31DNS: 10.10.20.31Ao salvar, o switch fica Disconnected — ele aplica o novo IP mas continua
com o inform URL antigo apontando para o IP antigo do controller.
Passo 3 — Validar alcance:
ssh root@pve-ippri-11 "ping -c 3 10.10.20.X"Passo 4 — Apontar inform para o novo endereco:
uv run config/scripts/unifi-set-inform.py 10.10.20.2 http://10.10.20.31:8080/informuv run config/scripts/unifi-set-inform.py 10.10.20.3 http://10.10.20.31:8080/informEsperado: Status: Connected (http://10.10.20.31:8080/inform) no output do
info. Web UI agora mostra o switch Online.
Passo 5 — Atualizar inventario Ansible (inventory/hosts.yaml):
usw-pro-aggregation: ansible_host: 10.10.20.3 unifi_switch_jump_host: pve-ippri-11us-16-xg: ansible_host: 10.10.20.2 unifi_switch_jump_host: pve-ippri-11Passo 6 — Limpar a rede mgmt antiga (opcional):
# Em pve-ippri-31, se a mgmt antiga usava uma NIC dedicada (ex: enp8s0):ip link set enp8s0 down# Editar /etc/network/interfaces:# Comentar 'auto enp8s0', trocar 'iface enp8s0 inet static' por 'inet manual'.Historico de mudancas
| Data | Mudanca |
|---|---|
| 2026-04-20 | Mgmt dos UniFi migrado de 192.168.1.0/24 (isolado) para 10.10.10.0/24 (rede 10G) |
| 2026-04-20 | enp8s0 do ippri-31 desativado (era a NIC da mgmt antiga) |
| 2026-04-21 | LAG do ippri-31 no XG movido das portas 13/14 para 15/16 |
| 2026-04-21 | Bug “VLAN 1 tagged nos LAGs” resolvido (Native VLAN: None → default em LAG 1 e LAG 3) |
| 2026-04-21 | Sub-interface bond1.1 (workaround) removida dos ippri-31/32 — IP voltou direto em bond1 |
| 2026-04-22 | Portas 13/14 do XG reativadas como LAG 4 para ippri-33 (bond1, 10.10.10.33) |
| 2026-04-22 | ippri-33 enp9s0 voltou a 1 Gbps (antes estava a 100 Mbps por problema de cabo) |
Referencias cruzadas
rede-10g-sp.md— topologia 10G, performance, LINSTOR/DRBDproxmox-inventario.md— hardware dos nodes PVEconfig/scripts/unifi-set-inform.py— helper de set-informinventory/hosts.yaml— grupos Ansible e IPs