Configuração de rede /etc/config/network
Veja também: IPv4 configuration, IPv6 configuration, Static routes, WAN interface protocols, Network scripting, DHCP client scripting
Visão geral
O padrão de rede roteador doméstico típico OpenWrt se parece com isto:
LuCI → Rede | Comentário | Exemplo | |||||||
---|---|---|---|---|---|---|---|---|---|
Firewall | Regras para tráfego entre zonas | Regras de encaminhamento, regras de tráfego, regras personalizadas | |||||||
Firewall / Interfaces | Configuração de zona de rede | WAN (Zona) | LAN (Zona) | ||||||
Interfaces → Interfaces | Configuração de IP | WAN | WAN6 | LAN | |||||
Interfaces → Devices | Configuração de dispositivos e bridge | eth0 | br-lan (configuração bridge) | ||||||
Switch / Wireless | VLANs e SSIDs sem fio | VLAN 2 (eth0.2) | VLAN 1 (eth0.1) | OpenWrt | OpenWrt | ||||
Switch / Wireless | Etiquetas de conectores internos e etiquetas de rádio | WAN (Interface) | LAN 1 | LAN 2 | LAN 3 | LAN 4 | radio0 | radio1 | |
- | Etiquetas comuns de fornecedores na parte traseira de um dispositivo | “Internet” | “1” | “2” | “3” | “4” | “n/ac” | “b/g/n” |
Os recursos ou o esquema de numeração do seu dispositivo podem variar ligeiramente.
Uma configuração mínima de rede para um roteador geralmente consiste em pelo menos duas interfaces (lan
e wan
) e seus respectivos dispositivos (br-lan
e eth0
), bem como uma seção switch, se aplicável.
Observe que os rótulos WAN e LAN podem ter significados diferentes dependendo do contexto.
Gerenciando a configuração
A configuração central da rede é gerenciada pelo subsistema UCI network e armazenada no arquivo /etc/config/network
.
Este subsistema UCI é responsável por definir switch VLANs, configurações de interface e rotas de rede.
Após a personalização da configuração de rede, você precisa recarregar ou reiniciar o serviço network
para aplicar as alterações.
O serviço network
gerencia redes com e sem fio com netifid e wifi, respectivamente.
Interfaces individuais podem ser ativadas com ifup name
ou desativadas com ifdown name
, onde name corresponde ao nome da interface lógica da seção config interface
correspondente.
Lembre-se de que “ifup” normalmente é suficiente para recarregar uma interface, pois inclui “ifdown”.
Observe que as interfaces sem fio são gerenciadas externamente e “ifup” pode interromper a conexão com as pontes existentes. Nesse caso, é necessário executar “wifi up” após “ifup” para restabelecer a conexão da ponte.
# Soft network reload service network reload # Hard network restart service network restart # Reconnect interface ifdown wan6 ifup wan6 # Wireless reload wifi down wifi up # List interfaces ubus list network.interface.* # Status information ifstatus wan6
Exemplo de configuração
Aqui está um exemplo de subsistema UCI de rede com configurações padrão para um TL-WR1043ND:
config interface 'loopback' option device 'lo' option proto 'static' option ipaddr '127.0.0.1' option netmask '255.0.0.0' config globals 'globals' option ula_prefix 'fd27:70fa:5c1d::/48' config device 'lan_br' option name 'br-lan' option type 'bridge' list ports 'eth0.1' config interface 'lan' option device 'br-lan' option proto 'static' option netmask '255.255.255.0' option ip6assign '60' option ipaddr '192.168.1.1' config interface 'wan' option device 'eth0.2' option proto 'dhcp' config interface 'wan6' option device 'eth0.2' option proto 'dhcpv6' config switch option name 'switch0' option reset '1' option enable_vlan '1' config switch_vlan option device 'switch0' option vlan '1' option ports '1 2 3 4 5t' config switch_vlan option device 'switch0' option vlan '2' option ports '0 5t'
Seção "globais"
A seção “globais” contém opções independentes de interface que afetam a configuração geral da rede.
config globals 'globals' option ula_prefix 'fd27:70fa:5c1d::/48'
Nome | Tipo | Obrigatório | Padrão | Descrição |
---|---|---|---|---|
ula_prefix | IPv6-prefix or auto | não | (nenhum) | Prefixo IPv6 ULA para este dispositivo: auto - gera automaticamente um novo prefixo ULA |
packet_steering | number | não | 0 | Usa cada CPU para lidar com o tráfego de pacotes. 0 - desabilitado, 1 - habilitado, 2 - habilitado para todas as CPUs |
tcp_l3mdev | boolean | não | 0 | Alterna a flag net.ipv4.tcp_l3mdev_accept (para VRF) |
udp_l3mdev | boolean | não | 0 | Alterna a flag net.ipv4.udp_l3mdev_accept (para VRF) |
Seção "dispositivo"
A seção “dispositivo” é opcional quando L2 e L3 são o mesmo dispositivo, ou seja, MAC e IP na mesma interface física.
config device 'lan_br' option name 'br-lan' option type 'bridge' list ports 'eth0.1'
Outro exemplo: habilitar controle de fluxo para interface eth2:
config device option name 'eth2' option rxpause '1' option txpause '1'
Nome | Tipo | Obrigatório | Padrão | Descrição |
---|---|---|---|---|
name | string | sim | (nenhum) | Nome do dispositivo L3. Precisa corresponder à opção device da respectiva seção interface |
macaddr | string | não | (nenhum) | Endereço MAC substituindo o padrão para este dispositivo, por exemplo, 62:11:22:aa:bb:cc |
type | string | não | (nenhum) | Se definido como bridge , cria uma bridge do name fornecido usando dispositivos L2 listados em ports e interfaces sem fio atribuídas usando a opção network na configuração sem fio |
ifname | string | não(*) | (nenhum) | O dispositivo L2 base necessário ao usar o tipo de dispositivo macvlan . Instale o pacote kmod-macvlan, se necessário. |
ports | list | não | (nenhum) | Lista de nomes de dispositivos L2. |
rxpause | string | não | (nenhum) | Controla o controle de fluxo de recepção (RX). Defini-lo como 1 habilita quadros de pausa RX, o que permite que a interface sinalize o remetente para pausar a transmissão quando sobrecarregada por dados de entrada. |
txpause | string | não | (nenhum) | Controla o fluxo de transmissão (TX). Definir o valor como 1 habilita quadros de pausa de TX, permitindo que a interface interrompa temporariamente o envio de dados quando o receptor indicar sobrecarga. |
autoneg | string | não | (nenhum) | Definir como 1 habilita a negociação automática, que determina se a interface negociará automaticamente os melhores parâmetros de link (como velocidade, modo duplex) com o dispositivo conectado. |
table | string | não | 10 | Quando type estiver definido como vrf , defina o nome ou número da tabela de roteamento aqui. |
TODO: mover tudo relacionado a pontes e à camada 2 para cá.
Seção "interface"
Seções do tipo interface
declaram redes lógicas que servem como contêineres para configurações de endereço IP, aliases, rotas, nomes de interface física e regras de firewall — elas desempenham um papel central no conceito de configuração do OpenWrt.
Uma declaração mínima de interface consiste nas seguintes linhas:
config 'interface' 'wan' option 'proto' 'dhcp' option 'device' 'eth0.2'
wan
é um nome de interface lógica exclusivodhcp
especifica o protocolo de interface, DHCP neste exemploeth0.2
é a interface física associada a esta seção
O kernel Linux limita o comprimento do nome da interface física a no máximo 14 caracteres utilizáveis, incluindo o prefixo adicionado automaticamente para alguns protocolos (por exemplo, 6in4
, pppoa-
, pppoe-
, gre4t-
) ou com pontes (br-
).
Dependendo do tipo de protocolo, o nome da interface lógica pode ser limitado a apenas 8 caracteres.
Por exemplo, abcde6789
é um nome de interface válido para uma interface normal usando DHCP, mas não para uma interface PPPoE, onde o nome final seria pppoe-abcde6789
, que tem mais de 14 caracteres.
Se estiver usando a notação .VLAN, 5 caracteres adicionais podem ser necessários, limitando o nome da interface “pai” a 3 caracteres para protocolos como GRE.
abcd.NNNN
⇒ gre4t-abc.NNNN
para 14 caracteres.
Usar um nome muito longo levará a erros silenciosos, com a criação ou modificação da interface falhando. Um exemplo desse erro silencioso ao usar br- e notações .VLAN de comprimento diferente pode ser visto no fórum em https://forum.openwrt.org/t/network-interface-warning-has-a-issue/182420/14
O protocolo de interface pode ser um dos seguintes:
Protocolo | Descrição | Programa |
---|---|---|
static | Configuração estática com endereço e máscara de rede fixos | ip /ifconfig |
dhcp | Endereço e máscara de rede atribuídos por DHCP | udhcpc (Busybox) |
dhcpv6 | Endereço e máscara de rede atribuídos por DHCPv6 | odhcpc6c |
ppp | Protocolo PPP - conexões de modem discado | pppd |
pppoe | PPP sobre Ethernet - conexão de banda larga DSL | pppd + plugin rp-pppoe.so |
pppoa | PPP sobre ATM - conexão DSL usando um modem integrado | pppd + plugin ... |
3g | Conexão CDMA, UMTS ou GPRS usando um modem 3G estilo AT | comgt |
qmi | Modems USB usando protocolo QMI | uqmi |
ncm | Modems USB usando protocolo NCM | comgt-ncm + ? |
wwan | Modems USB com autodetecção de protocolo | wwan |
hnet | Rede doméstica autogerenciada (HNCP) | hnet-full |
pptp | Conexão via VPN PPtP | ? |
6in4 | Túnel IPv6 em IPv4 para uso com Tunnel Brokers como HE.net | ? |
aiccu | Túnel “tudo em tudo” | aiccu |
6to4 | IPv6 sem estado sobre transporte IPv4 | ? |
6rd | Implantação rápida de IPv6 | 6rd |
dslite | Dual-Stack Lite | ds-lite |
l2tp | PPP sobre L2TP Pseudo túnel com fio | xl2tpd |
relay | Retransmitir pseudo-bridge | relayd |
gre , gretap | GRE over IPv4 | gre + kmod-gre |
grev6 , grev6tap | GRE sobre IPv6 | gre + kmod-gre6 |
vti | VTI sobre IPv4 | vti + kmod-ip_vti |
vtiv6 | VTI sobre IPv6 | vti + kmod-ip6_vti |
vxlan | Protocolo VXLAN para camada 2 virtualização, consulte aqui para obter mais informações e um exemplo de configuração. | vxlan + kmod-vxlan + ip-full |
none | Protocolo não especificado, portanto, todas as outras configurações de interface serão ignoradas (como desabilitar a configuração). | - |
Dependendo do protocolo de interface utilizado, várias outras opções podem ser necessárias para uma declaração completa da interface. As opções correspondentes para cada protocolo estão listadas abaixo. As opções marcadas como “sim” na coluna “Obrigatório” devem ser definidas na seção de interface se o protocolo correspondente for utilizado. As opções marcadas como “não” podem ser definidas, mas também podem ser omitidas.
Se uma seção de interface não tiver um protocolo definido (nem mesmo “nenhum”), as outras configurações serão completamente ignoradas.
O resultado é que, se a seção de interface mencionar uma interface de rede física (por exemplo, eth0), ela estará inativa mesmo se um cabo estiver conectado (com proto “nenhum”, a interface estará ativa).
Opções comuns
Opções comuns: opções válidas para todos os tipos de protocolo.
Nome | Tipo | Obrigatório | Padrão | Descrição |
---|---|---|---|---|
device | string | sim(*) | (nenhum) | Nome do dispositivo L3, como eth0.1 , eth2 , tun0 , br-lan , etc.Precisa corresponder à opção name da respectiva seção device .network em configuração sem fio.Esta opção pode estar vazia ou ausente se apenas uma interface sem fio fizer referência a esta rede ou se o protocolo for pptp , pppoa , 6in4 , etc. |
mtu | number | não | (nenhum) | Substituir o MTU padrão nesta interface |
auto | boolean | não | 0 for proto none , else 1 | Especifica se a interface deve ser ativada na inicialização |
ipv6 | boolean | não | 1 | Especifica se o IPv6 deve ser habilitado (1) ou desabilitado (0) nesta interface (somente para o Barrier Breaker e versões posteriores) |
force_link | boolean | não | 1 for protocol static , else 0 | Especifica se o endereço IP, a rota e, opcionalmente, o gateway são atribuídos à interface independentemente de o link estar ativo ('1') ou somente após o link se tornar ativo ('0'); quando definido como '1', os eventos de detecção de portadora não invocam manipuladores hotplug |
disabled | boolean | não | 0 | Habilitar ou desabilitar a seção de interface |
ip4table | string | não | (nenhum) | Tabela de roteamento IPv4 para rotas desta interface, consulte: ip rule show; ip route show table <ip4table> |
ip6table | string | não | (nenhum) | Tabela de roteamento IPv6 para rotas desta interface, consulte: ip -6 rule show; ip -6 route show table <ip6table> |
Opções de ponte
Todas as configurações de ponte são opcionais.
Nome | Tipo | Padrão | Faixa | Descrição |
---|---|---|---|---|
bridge_empty | boolean | 0 | 0 , 1 | Permite a criação de pontes vazias |
vlan_filtering | boolean | 0 | 0 , 1 | Habilita o modo de ponte com reconhecimento de VLAN |
igmp_snooping | boolean | 0 | 0 , 1 | Habilita o snooping IGMP na ponte, uma otimização que envia tráfego multicast apenas para portas com clientes ou roteadores multicast |
multicast_querier | boolean | (igmp_snooping setting) | 0 , 1 | IGMP Habilita a ponte como um querier multicast, o que mantém os mapeamentos de grupo multicast para porta atualizados. Apenas um querier é eleito por sub-rede. |
query_interval | number | 12500 | - | IGMP Intervalo em 1/100 segundos entre as consultas gerais do querier (portanto, o padrão é 125 segundos). |
query_response_interval | number | 1000 | (less than query_interval ) | IGMP Tempo máximo em 1/100 segundos para o envio de respostas a consultas (aumente para tornar o IGMP menos intermitente). |
last_member_interval | number | 100 | - | IGMP Tempo máximo em 1/100 segundos para respostas a consultas após mensagens de “sair do grupo” (a latência de saída). |
hash_max | number | 512 | - | IGMP Tamanho da tabela de hash multicast do kernel (maior para evitar colisões que desabilitam o snooping). |
robustness | number | 2 | - | IGMP Define a Contagem de Consultas de Inicialização e a Contagem dos Últimos Membros. Também combinado com query_interval e query_response_interval para calcular o Intervalo de Associação ao Grupo e o tempo limite de “outro querier” (ambos os outros valores devem ser definidos). |
stp | boolean | 0 | 0 , 1 | Habilita o Protocolo Spanning Tree (STP) que previne loops de rede (e tempestades de pacotes resultantes) |
forward_delay | number | 2 | 2 - 30 | STP Atraso em segundos entre as transições de estado da porta de Escuta → Aprendizado → Encaminhamento (ou seja, as portas de ponte serão bloqueadas por 2x este valor quando ativadas)2 está abaixo do padrão mínimo 802.1D de 4 , e o STP será ignorado pelos switches em conformidade. Defina como pelo menos 4 para funcionar com switches não OpenWrt! |
hello_time | number | 2 | 1 - 10 | STP Segundos entre pacotes STP |
priority | number | 32767 | 0 - 65535 | STP Prioridade da Ponte. A ponte de menor prioridade torna-se a Raiz da Árvore de Extensão; a maioria dos switches assume como padrão 32768 |
ageing_time | number | 300 | 10 - 1000000 | STP Expira em segundos para entradas MAC dinâmicas no Banco de Dados de Filtragem |
max_age | number | 20 | 6 - 40 | STP Após a ausência da Ponte Raiz atual por tantos segundos, tenta se tornar a Ponte Raiz (afeta a velocidade de identificação de uma ponte inativa) |
Configuração do switch (DSA / bridge-vlan)
Isso se aplica apenas ao OpenWrt 21.02 e versões posteriores e somente para destinos que migraram para um driver DSA.
, consulte:
Rede DSA
Configuração do switch (swconfig legado)
A partir do OpenWrt 21.02, o swconfig está sendo descontinuado e substituído pelo DSA.
Este guia se aplica a todas as versões do OpenWrt anteriores à 21.02. Também se aplica a destinos não DSA no OpenWrt 21.02.
Para muitos usuários, a configuração padrão do switch é suficiente.
Caso o usuário precise configurar o switch de forma diferente, LuCI, UCI ou a edição direta de /etc/config/network
podem ser usados para obter configurações diferentes.
Antes de qualquer reconfiguração do switch, é importante entender a configuração padrão.
Por exemplo, alguns dispositivos têm uma única interface conectada ao switch e outros têm duas ou mais.
Veja também:
- Documentação do Switch (Conteúdo mais antigo, mas discute a configuração de interface única)
O identificador do(s) switch(es) pode ser obtido usando:
# swconfig list
Found: switch0 - ag71xx-mdio.0
Com o identificador conhecido, a configuração pode ser visualizada:
# swconfig dev switch0 show Global attributes: enable_vlan: 1 enable_mirror_rx: 0 enable_mirror_tx: 0 mirror_monitor_port: 0 mirror_source_port: 0 arl_age_time: 300 arl_table: address resolution table [...]
Existem três tipos de estrofes de configuração relacionadas ao switch: switch
, switch_vlan
e switch_port
.
Nem todas as opções estão disponíveis em todos os hardwares.
Algumas limitações podem ser encontradas com swconfig dev <dev> help
.
Após fazer as alterações, verifique a saída de swconfig
para determinar se a configuração foi aceita pelo hardware do switch.
: A lista de opções pode estar incompleta.
Os detalhes de cada opção precisam de descoberta e documentação adicionais, incluindo a verificação do código subjacente.
A fonte das restrições nos intervalos de valores ainda não foi identificada.
Os valores válidos devem ser confirmados no código.
Seção "switch"
Option Name | Type | Required | Default | Impact | Notes |
---|---|---|---|---|---|
name | string | yes | (none) | defines which switch to configure | |
reset | boolean | 1 | |||
enable_vlan | boolean | 1 | Default may differ by hardware | ||
enable_mirror_rx | boolean | no | 0 | Mirror received packets from the mirror_source_port to the mirror_monitor_port | |
enable_mirror_tx | boolean | no | 0 | Mirror transmitted packets from the mirror_source_port to the mirror_monitor_port | |
mirror_monitor_port | integer | no | 0 | Switch port to which packets are mirrored | |
mirror_source_port | integer | no | 0 | Switch port from which packets are mirrored | |
arl_age_time | integer | no | 300 | Adjust the address-resolution (MAC) table's aging time (seconds) | Default may differ by hardware |
igmp_snooping | boolean | no | 0 | Enable IGMP snooping | Unconfirmed if can be set. Unknown how it interacts with interface- or port-level IGMP snooping. |
igmp_v3 | boolean | no | 0 | Unconfirmed if can be set. Unknown how it interacts with interface- or port-level IGMP snooping. |
Seção "switch_vlan"
Option Name | Type | Required | Default | Impact | Notes |
---|---|---|---|---|---|
description | string | no | (none) | A human-readable description of the VLAN configuration | |
device | string | yes | (none) | defines which switch to configure | |
vlan | integer | yes | (none) | The vlan “table index” to configure | May be limited to 127 or another number. See the output of swconfig dev <dev> help for limit. Sets defaults for VLAN tag and PVID. |
vid | integer | no | vlan | The VLAN tag number to use | See the output of swconfig dev <dev> help for limit. VLANs 0 and 4095 are often considered “special use”. |
ports | string | yes | (none) | A string of space-separated port indicies that should be associated with the VLAN. Adding the suffix t to a port indicates that egress packets should be tagged, for example '0 1 3t 5t ' | The suffixes * and u are referred to in docs:guide-user:network:switch with reference to certain Broadcom switches in the context of older releases. |
Seção "switch_port"
Option Name | Type | Required | Default | Impact | Notes |
---|---|---|---|---|---|
device | string | yes | (none) | defines which switch to configure | |
port | integer | yes | (none) | The port index to configure | |
pvid | integer | no | † | Port PVID; the VLAN tag†† to assign to untagged ingress packets | †Typically defaults one of the VLAN tags associated with the port. Logic not clear when there are multiple VLANs on the port. '0' can occur. Certain values have been rejected; logic not clear on limitations. ††May refer to the VLAN “index” rather than the VLAN tag itself (unconfirmed). |
enable_eee | boolean | no | 0 | Enable “energy saving” features | |
igmp_snooping | boolean | no | 0 | Enable IGMP snooping | Unconfirmed if can be set. Unknown how it interacts with interface- or switch-level IGMP snooping. |
igmp_v3 | boolean | no | 0 | Unconfirmed if can be set. Unknown how it interacts with interface- or switch-level IGMP snooping. |