iwd (Português) - ArchWiki

Jump to content

# iwd (Português)

From ArchWiki

Status de tradução: Este 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`.

iwgtkAUR 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, iwgtkAUR 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-gitAUR.

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-gitAUR:

- 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-pskAUR. 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 ⓘ]

Categories:

- Wireless networking (Português)
- Network configuration (Português)

Hidden category:

- Pages with dead links

iwd (Português)
Add topic