iwd (Português)
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.
Uso
O pacote iwd fornece o programa cliente iwctl
, o daemon e a ferramenta de monitoramento Wi-Fi .
fornece um front-end GUI para o iwd e um ícone (de bandeja) indicador.
Inicie/habilite para que possa ser controlado por meio do comando iwctl
ou do .
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]#
.
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
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
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 saída para ver como fornecer as opções corretas para o comando .
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, fornece um front-end GUI por meio do qual o iwd pode ser controlado.
A execução de 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 .
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 :
- 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 que é colocado em 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 . O arquivo de configuração é nomeado como onde rede é o SSID da rede e tipo é o tipo da rede, dentre .open, .psk ou .8021x. O arquivo é usado para guardar o criptografado e opcionalmente a 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 .
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":
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 ) ou . Veja wpa_supplicant#Connecting with wpa_passphrase para mais detalhes.
EAP-PWD
Para conectar-se a um ponto de acesso corporativo protegido por EAP-PWD, é necessário criar um arquivo chamado: no diretório com o seguinte conteúdo:
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 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:
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 , não pressione . O hash resultante precisa ser armazenado dentro da chave .
TTLS-PAP
Como o EAP-PWD, você também precisa criar um arquivo 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 |
um de Config.servers | |
EAP-PEAP-Phase2-Identity | username@ |
Outros casos
Mais exemplos de testes podem ser encontrados nos casos de teste do repositório upstream.
Configuração opcional
O arquivo pode ser usado para a configuração principal. Veja .
Desativar a conexão automática para uma rede específica
Criar/editar o arquivo . Adicione a seguinte seção a ele:
Desativar verificação periódica para redes disponíveis
Por padrão, quando estiver desconectado, ele verifica periodicamente as redes disponíveis. Para desativar a verificação periódica (para sempre verificar manualmente), criar/editar o arquivo 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 e adicione a seguinte seção a ele:
Também é possível definir métricas de rota com :
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:
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 . Por exemplo:
Selecione o gerenciador de DNS
No momento, o iwd suporta dois gerenciadores de DNS -systemd-resolved e resolvconf.
Adicione a seguinte seção ao para :
Para resolvconf
:
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:
Verifique os logs do iwd posteriormente executando como root.
Reiniciando iwd.service após a inicialização do sistema
Em algumas máquinas, é relatado que o precisa ser reiniciado para funcionar após a inicialização. Veja 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 :
Como resultado, o nome do link sem fio é 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.
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 () de 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 . Durante a inicialização, ele é carregado por systemd-modules-load.service(8) usando , e esse não será o caso se o iwd acabou de ser instalado.
Se mensagens como 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
- Network Configuration Settings
- 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