iwd (Português)

Status de tradução:
Esse artigo é uma tradução de
iwd
. Data da última tradução: 2022-08-09. Você pode ajudar a sincronizar a tradução, se houver
alterações
na versão em inglês.
Artigos relacionados
Configuração de rede
Configuração de rede sem fio
wpa_supplicant
O
iwd
(iNet wireless daemon) é um daemon sem fio para Linux escrito pela Intel. O objetivo principal do projeto é otimizar a utilização de recursos, não dependendo de nenhuma biblioteca externa e, em vez disso, utilizando os recursos fornecidos pelo Kernel Linux na máxima extensão possível.
O iwd pode funcionar no modo autônomo ou em combinação com gerentes de rede abrangentes, como
ConnMan
,
systemd-networkd
e
NetworkManager
.
Nota
Não siga as instruções desta página quando estiver usando o iwd por meio de um
gerenciador de rede
, a menos que seja explicitamente orientado do contrário no artigo daquele gerenciador de rede.
Instalação
Instale
o pacote
iwd
.
Uso
O pacote
iwd
fornece o programa cliente
iwctl
, o daemon
iwd
e a ferramenta de monitoramento Wi-Fi
iwmon
.
iwgtk
AUR
fornece um front-end GUI para o iwd e um ícone (de bandeja) indicador.
Inicie/habilite
iwd.service
para que possa ser controlado por meio  do comando
iwctl
ou do
iwgtk
.
Nota
A partir da versão 1.23, apenas o root e os membros do
grupo de usuários
netdev
ou
wheel
podem interagir com
iwd
. Para usar
iwctl
ou
iwgtk
, você precisa
adicionar seu usuário a um desses grupos
.
iwctl
Para obter um prompt interativo, faça:
$ iwctl
O prompt interativo é exibido com um prefixo de
[iwd]#
.
Dica
No prompt
iwctl
você pode concluir automaticamente os comandos e nomes de dispositivos pressionando
Tab
.
Para sair do prompt interativo, envie
EOF
pressionando
Ctrl+d
.
Você pode usar todos os comandos como argumentos de linha de comando sem inserir um prompt interativo. Por exemplo:
iwctl device wlan0 show
.
Para listar todos os comandos disponíveis:
[iwd]# help
Conectar a uma rede
Primeiro, se você não souber o nome do seu dispositivo sem fio, liste todos os dispositivos Wi-Fi:
[iwd]# device list
Em seguida, para iniciar a procura por redes (observe que esse comando vai emitir nenhuma saída):
[iwd]# station
dispositivo
scan
Você pode listar todas as redes disponíveis:
[iwd]# station
dispositivo
get-networks
Por fim, para conectar-se a uma rede:
[iwd]# station
dispositivo
connect
SSID
Dica
A interface do usuário suporta preenchimento automático, ao digitar
station
e
Tab
Tab
, os dispositivos disponíveis são mostrados, digite a primeiras letras do dispositivo e
Tab
para completar. Do mesmo modo, digite
connect
e
Tab
Tab
para ver a lista de redes disponíveis. Então, digite as primeiras letras da rede desejada seguida de
Tab
para completar o comando.
Se uma senha for necessária, você será solicitado a digitá-la. Como alternativa, você pode fornece-la como argumento da linha de comando:
$ iwctl --passphrase
senha
station
dispositivo
connect
SSID
Nota
O
iwd
armazena automaticamente as senhas da rede no diretório
/var/lib/iwd
e os usa para se conectar automaticamente no futuro. Veja
#Configuração de rede
.
Para conectar-se a uma rede com espaços no SSID, o nome da rede deve estar entre aspas duplas.
O iwd suporta apenas senhas PSK de 8 a 63 caracteres codificados em ASCII. A seguinte mensagem de erro será fornecida se os requisitos não forem atendidos:
PMK generation failed.  Ensure Crypto Engine is properly configured
.
Conecte-se a uma rede usando WPS/WSC
Se sua rede estiver configurada de forma que você possa conectar-se a ela pressionando um botão (
Wikipedia:Wi-Fi Protected Setup
), verifique primeiro se o seu dispositivo de rede também é capaz de usar este procedimento de configuração.
[iwd]# wsc list
Então, desde que seu dispositivo apareça na lista acima,
[iwd]# wsc
dispositivo
push-button
e pressione o botão no seu roteador. O procedimento também funciona se o botão foi pressionado antes, menos de 2 minutos antes.
Se sua rede precisar validar um número PIN para conectar-se dessa maneira, verifique o comando
help
saída para ver como fornecer as opções corretas para o comando
wsc
.
Desconectar de uma rede
Para desconectar-se de uma rede:
[iwd]# station
dispositivo
disconnect
Mostrar informações do dispositivo e da conexão
Para exibir os detalhes de um dispositivo Wi-Fi, como endereço MAC:
[iwd]# device
dispositivo
show
Para exibir o estado da conexão, incluindo a rede conectada de um dispositivo Wi-Fi:
[iwd]# station
dispositivo
show
Gerenciar redes conhecidas
Para listar as redes às quais você se conectou anteriormente:
[iwd]# known-networks list
Para esquecer uma rede conhecida:
[iwd]# known-networks
SSID
forget
iwgtk
Alternativamente,
iwgtk
AUR
fornece um front-end GUI por meio do qual o iwd pode ser controlado.
A execução de
iwgtk
sem nenhum argumento inicia a janela do aplicativo, que pode ser usada para ativar/desativar seus adaptadores e dispositivos, alterar seus modos de operação, visualizar redes disponíveis, conectar-se a redes disponíveis e gerenciar redes conhecidas.
Ícone indicador
Para iniciar o daemon de ícone indicador (na bandeja do sistema) do iwgtk, execute:
$ iwgtk -i
Se o ícone indicador não aparecer, sua bandeja do sistema provavelmente não tem suporte para a API StatusNotifierItem, caso em que você precisa executar uma camada de compatibilidade como
snixembed-git
AUR
.
As seguintes bandejas do sistema têm suporte a StatusNotifierItem e, portanto, funcionam por padrão:
KDE Plasma
swaybar
xfce4-panel
As bandejas a seguir têm suporte apenas a XEmbed e, portanto, exigem
snixembed-git
AUR
:
AwesomeWM
i3bar
Inicialização automática
O caso de uso mais comum para o iwgtk é iniciar o daemon do indicador toda vez que você efetuar login em sua área de trabalho. Se o seu ambiente de desktop for compatível com o padrão
XDG Autostart
, isso deve acontecer automaticamente devido ao arquivo
iwgtk-indicator.desktop
que é colocado em
/etc/xdg/autostart/
pelo pacote AUR.
Alternativamente, um arquivo unit do systemd para iniciar o daemon do indicador é fornecido pelo pacote do AUR. Se o seu ambiente de desktop tiver suporte à unit
graphical-session.target
do systemd, então o iwgtk pode ser iniciado automaticamente via systemd
habilitando
a
unit de usuário
iwgtk.service
.
Configuração de rede
Por padrão,
iwd
guarda a configuração de rede no diretório
/var/lib/iwd
. O arquivo de configuração é nomeado como
rede
.
tipo
onde
rede
é o SSID da rede e
tipo
é o tipo da rede, dentre
.open
,
.psk
ou
.8021x
. O arquivo é usado para guardar o
PreSharedKey
criptografado e opcionalmente a
Passphrase
e também pode ser criada pelo usuário sem invocar o
iwctl
. O arquivo também pode ser usado para outras configurações referentes àquele SSID. Para mais configurações, veja
iwd.network(5)
.
Nota
Em valores de string, incluindo identidades e senhas, certos caracteres podem ter escape de barra invertida. Espaços à esquerda, \n, \r e barras invertidas literais devem ser escapados. Veja
iwd.network(5)
.
WPA-PSK
Um exemplo pequeno de arquivo para se conectar a uma rede protegida por WPA-PSK ou WPA2-PSK com o SSID "spaceship" e senha "test1234":
/var/lib/iwd/spaceship.psk
[Security]
PreSharedKey=aafb192ce2da24d8c7805c956136f45dd612103f086034c402ed266355297295
Nota
O SSID da rede é usado como nome de arquivo somente quando contém apenas caracteres alfanuméricos ou um de
- _
. Se contiver outros caracteres, o nome será um caractere
=
seguido pela versão codificada em hexadecimal do SSID.
Para calcular a chave pré-compartilhada da senha, um destes dois métodos pode ser usado:
Inserir a senha em texto simples no arquivo de configuração:
/var/lib/iwd/spaceship.psk
[Security]
Passphrase=test1234
A chave pré-compartilhada será anexada ao arquivo na primeira conexão:
/var/lib/iwd/spaceship.psk
[Security]
Passphrase=test1234
PreSharedKey=aafb192ce2da24d8c7805c956136f45dd612103f086034c402ed266355297295
Ou a chave pré-compartilhada pode ser calculada do SSID e a senha usando
wpa_passphrase
(do
wpa_supplicant
) ou
wpa-psk
AUR
. Veja
wpa_supplicant#Connecting with wpa_passphrase
para mais detalhes.
WPA Empresarial
EAP-PWD
Para conectar-se a um ponto de acesso corporativo protegido por EAP-PWD, é necessário criar um arquivo chamado:
essid
.8021x
no diretório
/var/lib/iwd
com o seguinte conteúdo:
/var/lib/iwd/
essid
.8021x
[Security]
EAP-Method=PWD
EAP-Identity=
seu_e-mail_empresarial
EAP-Password=
sua_senha
[Settings]
AutoConnect=True
Se você não deseja se conectar automaticamente ao ponto de acesso, defina a opção como False e conecte manualmente ao ponto de acesso via
iwctl
. O mesmo se aplica à senha, se você não quiser armazená-la em texto sem formatação, deixe a opção fora do arquivo e apenas conecte-se ao AP da empresa.
EAP-PEAP
Como o EAP-PWD, você também precisa criar um arquivo
essid
.8021x
no diretório. Antes de prosseguir com a gravação do arquivo de configuração, este também é um bom momento para descobrir qual certificado CA sua organização usa. Este é um arquivo de configuração de exemplo que usa autenticação de senha MSCHAPv2:
/var/lib/iwd/
essid
.8021x
[Security]
EAP-Method=PEAP
EAP-Identity=anonymous@realm.edu
EAP-PEAP-CACert=/path/to/root.crt
EAP-PEAP-ServerDomainMask=radius.realm.edu
EAP-PEAP-Phase2-Method=MSCHAPV2
EAP-PEAP-Phase2-Identity=johndoe@realm.edu
EAP-PEAP-Phase2-Password=hunter2

[Settings]
AutoConnect=true
As senhas MsCHAPv2 também podem ser armazenadas como um hash criptografado. O hash md4 correto pode ser calculado com:
$ iconv -t utf16le | openssl md4
Insira um fim de arquivo
(EOF)
após sua senha pressionando
Ctrl+d
, não pressione
Enter
. O hash resultante precisa ser armazenado dentro da chave
EAP-PEAP-Phase2-Password-Hash
.
Dica
Se você planeja usar
eduroam
, veja também
#eduroam
.
TTLS-PAP
Como o EAP-PWD, você também precisa criar um arquivo
essid
.8021x
no diretório. Antes de prosseguir com a gravação do arquivo de configuração, este também é um bom momento para descobrir qual certificado CA sua organização usa. Este é um exemplo de arquivo de configuração que usa autenticação de senha PAP:
/var/lib/iwd/
essid
.8021x
[Security]
EAP-Method=TTLS
EAP-Identity=anonymous@uni-test.de
EAP-TTLS-CACert=cert.pem
EAP-TTLS-ServerDomainMask=*.uni-test.de
EAP-TTLS-Phase2-Method=Tunneled-PAP
EAP-TTLS-Phase2-Identity=user
EAP-TTLS-Phase2-Password=password

[Settings]
AutoConnect=true
eduroam
eduroam oferece uma
configuration assistant tool (CAT)
, que infelizmente não suporta iwd. No entanto, o instalador, que você pode baixar clicando no botão de download e selecionando sua universidade, é apenas um script Python. É fácil extrair as opções de configuração necessárias, incluindo o certificado e a máscara de domínio do servidor.
A tabela a seguir contém um mapeamento das opções de configuração do iwd para variáveis de script de instalação do CAT eduroam.
Opção de configuração de Iwd
Variável de Script CAT
nome do arquivo
um de
Config.ssids
EAP-Method
Config.eap_outer
EAP-Identity
Config.anonymous_identity
EAP-PEAP-CACert
Config.CA
EAP-PEAP-ServerDomainMask
um de
Config.servers
EAP-PEAP-Phase2-Method
Config.eap_inner
EAP-PEAP-Phase2-Identity
username@
Config.user_realm
Nota
EAP-Identity
pode não ser necessário pelo seu provedor eduroam; nesse caso, você pode ter que usar
anonymous@
config.realm_do_usuário
nesta área.
Se sua
EAP-PEAP-ServerDomainMask
começa com
DNS:
, somente use a parte depois do
DNS:
.
Outros casos
Mais exemplos de testes podem ser
encontrados nos casos de teste
do repositório upstream.
Configuração opcional
O arquivo
/etc/iwd/main.conf
pode ser usado para a configuração principal. Veja
iwd.config(5)
.
Desativar a conexão automática para uma rede específica
Criar/editar o arquivo
/var/lib/iwd/
rede
.
tipo
. Adicione a seguinte seção a ele:
/var/lib/iwd/spaceship.psk (por exemplo)
[Settings]
AutoConnect=false
Desativar verificação periódica para redes disponíveis
Por padrão, quando
iwd
estiver desconectado, ele verifica periodicamente as redes disponíveis. Para desativar a verificação periódica (para sempre verificar manualmente), criar/editar o arquivo
/etc/iwd/main.conf
e adicione a seguinte seção a ele:
/etc/iwd/main.conf
[Scan]
DisablePeriodicScan=true
Ativar configuração de rede embutida
Desde a versão 0.19, o iwd pode atribuir endereços IP e configurar rotas usando um cliente DHCP embutido ou com configuração estática. É uma boa alternativa para
clientes DHCP independentes
.
Para ativar o recurso de configuração de rede do iwd, crie/edite o arquivo
/etc/iwd/main.conf
e adicione a seguinte seção a ele:
/etc/iwd/main.conf
[General]
EnableNetworkConfiguration=true
Também é possível definir métricas de rota com
RoutePriorityOffset
:
/etc/iwd/main.conf
[Network]
RoutePriorityOffset=300
IPv6 support
Desde a versão 1.10, iwd suporta IPv6, mas isso é desabilitado por padrão. Para habilitar, adicione a seguinte linha no arquivo de configuração:
/etc/iwd/main.conf
[Network]
EnableIPv6=true
Esta configuração é necessária caso queira usar o DHCPv6 ou IPv6 estático. Pode também ser configurado para redes em específico.
Definindo o endereço IP estático na configuração de rede
Adicione a seguinte seção ao arquivo
/var/lib/iwd/
rede
.
tipo
. Por exemplo:
/var/lib/iwd/spaceship.psk
[IPv4]
Address=192.168.1.10
Netmask=255.255.255.0
Gateway=192.168.1.1
Broadcast=192.168.1.255
DNS=192.168.1.1
Selecione o gerenciador de DNS
No momento, o iwd suporta dois gerenciadores de DNS -
systemd-resolved
e
resolvconf
.
Adicione a seguinte seção ao
/etc/iwd/main.conf
para
systemd-resolved
:
/etc/iwd/main.conf
[Network]
NameResolvingService=systemd
Para
resolvconf
:
/etc/iwd/main.conf
[Network]
NameResolvingService=resolvconf
Nota
Se não especificado,
systemd-resolved
é usado por padrão.
Permitir que qualquer usuário leia informações de status
Se você quiser permitir que qualquer usuário leia as informações de status, mas sem poder modificar, você pode criar o seguinte arquivo de configuração do
D-Bus
:
/etc/dbus-1/system.d/iwd-allow-read.conf
<!-- Allow any user to read iwd status information. Overrides some part
     of /usr/share/dbus-1/system.d/iwd-dbus.conf. -->

<!DOCTYPE busconfig PUBLIC "-//freedesktop//DTD D-BUS Bus Configuration 1.0//EN"
 "http://www.freedesktop.org/standards/dbus/1.0/busconfig.dtd">
<busconfig>

  <policy context="default">
    <deny send_destination="net.connman.iwd"/>
    <allow send_destination="net.connman.iwd" send_interface="org.freedesktop.DBus.Properties" send_member="GetAll" />
    <allow send_destination="net.connman.iwd" send_interface="org.freedesktop.DBus.Properties" send_member="Get" />
    <allow send_destination="net.connman.iwd" send_interface="org.freedesktop.DBus.ObjectManager" send_member="GetManagedObjects" />
    <allow send_destination="net.connman.iwd" send_interface="net.connman.iwd.Device" send_member="RegisterSignalLevelAgent" />
    <allow send_destination="net.connman.iwd" send_interface="net.connman.iwd.Device" send_member="UnregisterSignalLevelAgent" />
  </policy>

</busconfig>
Solução de problemas
Depuração detalhada do TLS
Isso pode ser útil se você tiver problemas para configurar o MSCHAPv2 ou TTLS. Você pode definir o seguinte
variável de ambiente
via
trecho drop-in
:
/etc/systemd/system/iwd.service.d/tls-debug.conf
[Service]
Environment=IWD_TLS_DEBUG=TRUE
Verifique os logs do iwd posteriormente executando
journalctl -u iwd.service
como root.
Reiniciando iwd.service após a inicialização do sistema
Em algumas máquinas, é relatado que o
iwd.service
precisa ser reiniciado para funcionar após a inicialização. Veja
FS#63912
e o
tópico 251432
. Isso provavelmente ocorre porque o kernel e os serviços do Linux iniciam muito cedo e o
iwd
é iniciado antes que a placa de rede sem fio seja ligada. Como solução alternativa,
estenda a unit
para adicionar um atraso:
[Service]
ExecStartPre=/usr/bin/sleep 2
Então
recarregue
a configuração do gerenciador do
systemd
.
Problemas de conexão após a reinicialização
Um pool de baixa entropia pode causar problemas de conexão, particularmente perceptíveis após a reinicialização. Veja
Random number generation
para sugestões para incrementar o pool de entropia.
O dispositivo sem fio não é renomeado pelo udev
Desde a versão 1.0, iwd desabilita a renomeação do dispositivo sem fio. Ele instala o seguinte arquivo de configuração de rede do systemd que previne udev de renomear a interface para
wlp#s#
:
/usr/lib/systemd/network/80-iwd.link
[Match]
Type=wlan

[Link]
NamePolicy=keep kernel
Como resultado, o nome do link sem fio
wlan#
é mantido após a inicialização. Isto resolve uma condição de corrida entre
iwd
e
udev
na renomeação da interface como explicado em
iwd udev interface renaming
[
link inativo
2024-10-12 ⓘ]
.
Se isso resultar em problemas, tente mascará-lo com:
# ln -s /dev/null /etc/systemd/network/80-iwd.link
Sem DHCP no modo AP
Os clientes podem não receber um endereço IP via DHCP ao conectar-se a
iwd
no modo de ponto de acesso (AP). Portanto, é necessário habilitar a configuração de rede por
iwd
nas interfaces gerenciadas:
/etc/iwd/main.conf
[General]
EnableNetworkConfiguration=True
O arquivo mencionado deve ser criado se ainda não existir.
Wifi fica desconectando por causa de travamentos no iwd
Alguns usuários experimentam desconexões com WiFi, reconectando-se continuamente, mas se estabilizando eventualmente e conseguindo se conectar.
Os usuários relatam falhas (
[1]
) de
iwd.service
em seu
journal
.
O principal problema é ter vários serviços conflitantes para gerenciar suas conexões de rede. Para corrigir esse problema, verifique eles foram
habilitados
ao mesmo tempo por você.
Erro ao carregar a chave privada do cliente
Para carregar arquivos de chave, o
iwd
requer o
módulo de kernel
pkcs8_key_parser
. Durante a inicialização, ele é carregado por
systemd-modules-load.service(8)
usando
/usr/lib/modules-load.d/pkcs8.conf
, e esse não será o caso se o
iwd
acabou de ser instalado.
Se mensagens como
Error loading client private key
/caminho/da/chave
aparecerem no
journal
ao tentar se conectar a redes WPA Empresariais, carregue manualmente o módulo:
# modprobe pkcs8_key_parser
Veja também
Getting Started with iwd
[
link inativo
2024-10-12 ⓘ]
Network Configuration Settings
[
link inativo
2024-10-12 ⓘ]
Mais exemplos para WPA empresarial
O tópico do IWD nos fóruns do Arch Linux
2017 Update on new WiFi daemon for Linux by Marcel Holtmann - YouTube
The New Wi-Fi Experience for Linux - Marcel Holtmann, Intel - YouTube
How to set up a simple access point with iwd
[
link inativo
2024-10-12 ⓘ]