18 de mai de 2012

nm-tool


As configurações de rede de uma máquina Linux podem parecer complexas em um primeiro momento, mas quando nos aproximamos das configurações e identificamos o problema, percebemos que as soluções são simples e elegante. Por exemplo, identifiquei uma máquina cujas configurações de rede foram colocadas manualmente no arquivo /etc/netword/interfaces. Sem qualquer problema para acesso internet via browser ou testes de ping, tudo ok e funcional. No entanto, alguns aplicativos, como o evolution [1] ou pidgin [2] somente se conectavam quando utilizando a opção --force-online (evolution --force-online , pidgin --force-online). Então o diagnóstico éra simples: a maquina estava configurada corretamente, encontrava internet pelos testes de ping e navegação, mas alguns aplicativos não localizava rede para estabelecer a conexão. 

Solução:

No caso do Linux, este problema acontece porque o NetworkManager reporta a rede como não disponível (ou unavailable). Isto acontece porque o arquivo de configuração /etc/NetworkManager/NetworkManager.conf está com a entrada managed=false, como no exemplo abaixo:

[main]
plugins=ifupdown,keyfile


[ifupdown]
managed=false

Com a configuração do NetworkManager desta forma, temos a seguinte informação com saída do comando nm-tool:

#nm-tool
nm-tool
saída do comando nm-tool

Identificado este ponto da configuração, podemos alterar o arquivo/etc/NetworkManager/NetworkManager.conf managed=false, para managed=true. Após restartar o network-manager (# /etc/init.d/network-manager restart), podemos observar a nova saída do comando nm-tool:

[main]
plugins=ifupdown,keyfile


[ifupdown]
managed=true

nm-tool
saída do comando nm-tool com a opção managed=true
Assim, para os aplicativos que "olham" para o status da rede, a solução está definida. Observe o State e as demais informarmções, como a presença do ip, gateway e DNS.

Observações: além do nm-tool, temos também o nmcli  e nm-online que tem as seguintes funções:

nmcli
#nmcli            -> mostra as opções
#nmcli nm      -> lê e apresenta o estado das configurações de rede
#nmcli con     -> lê e apresenta as redes presentes no diretório /etc/NetworkManager/system-connections
#nmcli dev     -> lê e apresenta o estado das configurações e atividade da rede (similar ao nmcli nm, mas em coluna)

nm-online
#nm-online
A função desta ferramenta é checar o status da rede quando online, perguntando ao NetworkManager seu estado de conexão. Pode ser útil, por exemplo, em scripts que precisem exatidão quanto a disponibilidade de rede para troca de dados por exemplo. O resultado do nm-online é 0 para sucesso (online) ou 1 para erro de rede (offline). 
Para saber o resultado de um comando, neste caso o nm-online, podemos usar o echo $?, e colocar este resultado em um teste dentro de um shell script, por exemplo.

 nm-online | echo $?
0

Referências:
[1] evolution  -  groupware suite for GNOME containing e-mail, calendar, addressbook, to-do list and memo tools
[2] pidgin -  pidgin - Instant Messaging client
man NetworkManager
man nm-tool
man nmcli
man nm-online