Como conectar e desconectar manualmente uma rede no terminal?

113

Como o gerente de rede está me incomodando tanto, quero substituí-lo (possivelmente wicdou NMdo ppa: volanin ).

Não sei como conectar e desconectar a rede através do terminal sem usar o gerenciador de rede.

Gostaria de uma maneira da linha de comando de gerenciar a rede.

user7048
fonte
2
Se você estiver mexendo com o gerenciador de conexões de rede do seu sistema, recomendo que você o faça enquanto estiver conectado via Ethernet com fio, com menor probabilidade de perder a conexão e mais fácil de configurar a partir da linha de comando, se necessário.
Ryan Thompson
Eu uso wicd-curses, que considero de longe a interface de usuário mais fácil. Você precisa usar o <kbd> → </kbd> (tecla de seta para a direita ->) para definir configurações; tudo o resto é óbvio nas instruções na tela.
Isomorphismes

Respostas:

139

Isso se aplica a 12.04+, pois esses são os que eu poderia testar, mas também podem ser usados ​​em versões mais antigas. Separei este guia em várias partes, que consistem em:

  • Parte 1 Roteadores sem fio sem senha ou chave WEP
  • Parte 2 Roteadores sem fio com chave de segurança WPA ou WPA2
    • Parte 2.1 Conectando a um roteador WPA com wpa_supplicant
    • Parte 2.2 Conectando a um roteador WPA com o Network Manager
  • Parte 3 Conexão Fácil Via nmcli
  • Parte 4 Desconectando de um roteador sem fio
  • Parte 5 Excluindo uma conexão (incluindo arquivo de configuração)
  • Parte 6 Conexão automática ao fazer login
  • Bônus Como encontrar o nome da sua interface de rede via GUI

As seguintes linhas de comando podem ser usadas para conectar e desconectar, dependendo das configurações da placa sem fio, segurança sem fio e roteador sem fio. Antes de continuar, verifique se o serviço de rede está ativado (nos casos em que você pode iniciar o Ubuntu usando o modo de recuperação):

Dependendo da sua versão do Ubuntu, você precisaria iniciá-la usando uma das seguintes maneiras:

Se estiver usando o SystemD (desde 14.10+):

sudo systemctl start networking

Se estiver usando o caminho init.d legado: sudo /etc/init.d/networking restart

Se você estiver usando a maneira Legacy Upstart: sudo service network-manager restart

Parte 1: Roteadores sem fio sem senha ou chave WEP

Nos casos em que o roteador sem fio não possui senha ou segurança WEP, faça o seguinte:

  1. Abra o terminal e procure a conexão sem fio:

    iwlist wlan0 s  
    

    (O s é para Digitalizar. Wlan0 é minha placa de rede sem fio, mas pode ser diferente para cada usuário. Alguns possuem eth0, outros wlan2 .. Você precisa sudoexecutar esta opção. Para descobrir o nome da sua placa de rede sem fio, digite iwlist e pressione TAB. Isso deve preencher automaticamente a linha com o nome da placa de rede. Você também pode digitar iwconfige encontrar o nome na lista que será exibida.)

    Se você não souber o nome do seu dispositivo sem fio, digite: o iwconfigque mostrará seus dispositivos com ou sem fio e seus nomes. Eles podem ser algo como wlan0, wlan1, eth1, eth2 ..

  2. A pesquisa mostrará todos os pontos de acesso possíveis (AP) visíveis para você. Depois de ver o seu roteador na lista, tente conectar-se a ele:

    Se não tiver uma senha, faça o seguinte:

    iwconfig wlan0 essid NAME_OF_ACCESS_POINT  
    

    Por exemplo

    iwconfig wlan0 essid CYREX  
    

    depois disso, certifique-se de usar dhclientpara obter um IP dinâmico caso não seja atribuído um pelo roteador. Isso deve deixar você conectado ao roteador CYREX.

    Se tiver uma senha, faça:

    iwconfig wlan0 essid CYREX key PASSWORD
    

    Isso deve se conectar usando a PASSWORD que você deu lá.

    Novamente, dhclientapós a conexão, verifique se você recebeu um IP atribuído.

  3. Certificar-se de que você está conectado corretamente é sempre bom; portanto, execute-o iwconfigpara garantir que sua placa sem fio esteja conectada ao SSID mencionado acima. Ele deve mostrar seu dispositivo conectado e o IP atribuído a você. Se isso não ocorrer e ocorrer um erro como o Interface não suporta verificação, tente as 2 opções a seguir:

    • Teste se sua interface está ACIMA: sudo ifconfig wlan0 up
    • Tente adicionar sudoao fazer a verificação:sudo iwlist wlan0 s
    • Tente derrubar o dispositivo e faça o backup:

      sudo ifconfig wlan0 down  
      sudo ifconfig wlan0 up
      

Parte 2: Roteadores sem fio com chave de segurança WPA ou WPA2

Nos casos em que o roteador sem fio possui uma senha WPA / WPA2, existem algumas maneiras de fazer isso. Vou mencionar os 2 mais populares:

  1. Abra o terminal e procure a conexão sem fio:

    iwlist wlan0 s  
    

    (O s é para Digitalizar. Wlan0 é minha placa de rede sem fio, mas pode ser diferente para cada usuário. Alguns possuem eth0, outros wlan2 .. Você precisa sudoexecutar esta opção. Para descobrir o nome da sua placa de rede sem fio, digite iwlist e pressione TAB. Isso deve preencher automaticamente a linha com o nome da placa de rede. Você também pode digitar iwconfige encontrar o nome na lista que será exibida.)

    Se você não souber o nome do seu dispositivo sem fio, digite: o iwconfigque mostrará seus dispositivos com ou sem fio e seus nomes. Eles podem ser algo como wlan0, wlan1, eth1, eth2 ..

  2. A pesquisa mostrará todos os pontos de acesso possíveis (AP) visíveis para você. Depois de ver o seu roteador na lista, tente conectar-se a ele:

Parte 2.1 GUIA DO FORNECEDOR WPA: Conexão a um roteador WPA com wpa_supplicant

  1. Digite o seguinte no terminal (Supondo que você tenha o wpasupplicantpacote instalado, que instala todos os comandos necessários, usaremos aqui):

    wpa_passphrase SSID PASSWORD > CONFIG_FILE
    

    Exemplo: wpa_passphrase Virus LinuxFTW > wpa.conf

    Onde Virus é o nome do meu roteador, LinuxFTW é minha senha e wpa.confé o arquivo no qual desejo armazenar todas essas informações. Observe que você pode salvar o arquivo em outro local, muitos usuários salvam o arquivo em /etc/wpa_supplicant.confvez de wpa.conf. Os dados do arquivo wpa.conf devem ser algo assim:

    network={  
            ssid="Virus"  
            #psk="LinuxFTW"  
            psk=1d538d505f48205589ad25b2ca9f52f9cbb67687e310c58a8dd940ccc03fbfae  
    }  
    
  2. Até este ponto, devemos saber o nome da nossa interface de placa sem fio (por exemplo: Wlan0, eth2, Wlan2 ...). Agora precisamos saber qual driver está em uso. para isso, digitamos:

    wpa_supplicant
    

    Ele deve nos mostrar muitas informações, mas haverá uma seção chamada ** Drivers *, que mostra todos os drivers disponíveis (estes estão disponíveis na compilação wpa_supplicant). No meu caso, é assim:

    drivers:  
      wext = Linux wireless extensions (generic)  
      nl80211 = Linux nl80211/cfg80211  
      wired = Wired Ethernet driver  
      none = no driver (RADIUS server/WPS ER)  
    

    A lista inteira é hostap, hermes, madwifi, wext, broadcom, wired, roboswitch, bsd, ndis. Isso pode mudar dependendo de como wpa_supplicantfoi compilado, mas o que é exibido para mim deve ser semelhante ao do seu sistema. A maioria dos usuários seleciona o wextdriver.

  3. Portanto, agora que temos o nome da placa de interface sem fio e o nome do driver, continuamos a conectar a ela usando o arquivo de configuração já criado, usando o seguinte formato:

    wpa_supplicant -iINTERFACE_NAME -cCONFIGURATION_FILE -DDRIVER_NAME
    

    Por exemplo:

    wpa_supplicant -iwlan0 -c/etc/wpa_supplicant.conf -Dwext
    

    Onde -iestá o nome da sua placa de interface, -conde está o arquivo de configuração e -Do nome do driver que você usará para se conectar. Se ele se conectar corretamente, pressione CTRL+ Cpara cancelá-lo e, em seguida, execute a linha novamente, mas desta vez a enviamos para segundo plano, -Bpara que possamos continuar usando o terminal:

    wpa_supplicant -B -iwlan0 -c/etc/wpa_supplicant.conf -Dwext  
    

    Depois disso, basta fazer um sudo dhclient wlan0para obter um IP do roteador.

  4. Alguns usuários relataram remover o Hash e deixar apenas a senha na configuração, por exemplo:

         network={  
                ssid="Virus"  
                psk="LinuxFTW"  
        }  
    

    Outros adicionaram o ssid_scan ao arquivo de configuração:

        network={  
                ssid="Virus"
                scan_ssid=1  
                #psk="LinuxFTW"  
                psk=1d538d505f48205589ad25b2ca9f52f9cbb67687e310c58a8dd940ccc03fbfae  
        }  
    

    Ou até mesmo adicionando o tipo de chave:

        network={  
                ssid="Virus"
                scan_ssid=1  
                key_mgmt=WPA-PSK
                #psk="LinuxFTW"  
                psk=1d538d505f48205589ad25b2ca9f52f9cbb67687e310c58a8dd940ccc03fbfae  
        }  
    

    Mais informações sobre isso em man wpa_supplicant.conf

Parte 2.2 GUIA DO GERENCIADOR DE REDE: Conexão a um roteador WPA com o Network Manager

O bom do gerenciador de rede é que ele vem com alguns scripts e ferramentas interessantes. Duas delas são nmclie create_connection(Neat Python 3 roteiro) que vamos usar neste caso.

  1. Depois de executar as etapas mencionadas anteriormente para encontrar o nome SSID do seu roteador (lembre-se da parte iwlistacima), fazemos o seguinte:

    sudo /usr/share/checkbox/scripts/create_connection -S SECURITY_TYPE -K PASSWORD SSID_NAME
    

    Onde SECURITY é o tipo de segurança que o roteador usa (WPA, WEP), PASSWORD é .. well..the senha e SSID_NAME é o nome SSID do roteador. Por exemplo:

    sudo /usr/share/checkbox/scripts/create_connection -S wpa -K LinuxFTW Virus
    

    Irá criar uma conexão para o Network Manager que deve ser algo como isto:

      $ sudo /usr/share/checkbox/scripts/create_connection -S wpa -K LinuxFTW Virus
      [sudo] password for cyrex: 
      Connection Virus registered
      Connection Virus activated.
    
  2. Depois disso, você deve receber um IP atribuído do roteador. Caso contrário, simplesmente faça sudo dhclient wlan0(supondo que wlan0 é o nome da sua interface). Você também pode verificar as conexões do seu gerente de rede usando nmcli como este: o nmcli cque deve mostrar algo como isto:

     $ nmcli c
      NAME                      UUID                                   TYPE              TIMESTAMP-REAL                    
      Xcentral                  f51a5a64-8a91-47d6-897c-28efcd84d2b0   802-11-wireless   Fri 22 Mar 2013 02:25:54 PM VET   
      Realtek                   9ded7740-ad29-4c8f-861f-84ec4da87f8d   802-3-ethernet    Tue 05 Mar 2013 01:18:31 AM VET   
      Intel                     e25b1fd8-c4ff-41ac-a6bc-22620296f01c   802-3-ethernet    Fri 05 Apr 2013 10:04:05 PM VET   
      Virus                     3f8ced55-507b-4558-a70b-0d260441f570   802-11-wireless   Tue 09 Apr 2013 06:31:10 AM VET   
    

Mencionei o caminho do Network Manager, porque há alguns casos em que o uso wpa_supplicantsimplesmente não funciona (problemas entre o roteador e a placa sem fio, problemas de segurança etc.). No meu caso, todas as tentativas de uso wpa_supplicantem um PC não funcionaram, mas em outro funcionou na primeira vez que tentei. Então, estou postando os dois métodos para ajudar em cada caso e facilitar para os usuários decidirem qual deles querem.

Parte 3: Conexão fácil via nmcli

Embora tenhamos falado sobre as maneiras de conectar-se a ele sem um gerenciador de rede, também existe o caso de usar o nmcli (versão CLI do gerenciador de rede) quando aplicável. Para fazer isso, fazemos o seguinte:

  1. Verifique para ver qual ESSID podemos ver:

    nmcli dev wifi
    
  2. Verifique o nome do ESSID e continuamos a usá-lo na próxima linha, incluindo a senha necessária (incluindo as senhas do tipo WEP e WPA):

    nmcli dev wifi connect ESSID_NAME password ESSID_PASSWORD
    

    Aqui está um exemplo de eu me conectando ao ESSID Linux5G

    captura de tela

    Se você possui vários dispositivos sem fio no seu computador, pode especificar qual deles usar usando o ifnameparâmetro da seguinte maneira:

    nmcli dev wifi conectar senha ESSID_NAME ESSID_PASSWORD ifname WIRELESS_DEVICE_NAME

    Por exemplo, no meu caso, o nome do dispositivo é, wlp9s0portanto, eu usaria essa linha para especificar o dispositivo que utilizarei para conectar:

    captura de tela

Mais informações sobre nmcli podem ser obtidas usando o parâmetro help. Por exemplo, se você quiser saber sobre nmcli devvocê, digite nmcli dev help. Se você quiser saber mais nmcli dev wifi, digite nmcli dev wifi helpe assim por diante.

Parte 4: Desconectando de um roteador sem fio

Existem várias maneiras de conseguir isso:

  • Desconecte por "força": sudo ifconfig wlan0 down

    Isso desativará a interface da placa sem fio (o driver será desativado). Para ativar, basta digitar ifconfig wlan0 upseguido de a sudo dhclient wlan0. Ele ainda aparecerá como conectado se exibido pelo Network Manager, mas na verdade não haverá conexão com o roteador. Tentar pinglançar um connect: Network is unreachableerro.

  • Libere o IP do DHCP: sudo dhclient -r wlan0

    Lembre-se de fazer sudo dhclient wlan0para atribuir a si mesmo um IP novamente.

  • Desconecte usando o Network Manager: nmcli nm enable false

    Onde nm é o parâmetro de nmcli que gerencia e define os estados do Network Manager. A opção enablepode ser verdadeira ou falsa , ou seja, se configurada como falsa , todas as conexões de rede gerenciadas pelo Network Manager serão desconectadas. Observe que o nmcli não precisa de permissões de root.

Para ver o status do tipo Network Manager nmcli nm, ele deve mostrar algo semelhante a este:

      $ nmcli nm
      RUNNING         STATE           WIFI-HARDWARE   WIFI       WWAN-HARDWARE   WWAN      
      running         connected       enabled         enabled    enabled         enabled   

Outra maneira de ativar ou desativar a conexão (conectar / desconectar) é fazer o seguinte:

nmcli c down id NAME` - Will disconnect the connection NAME  

nmcli c up id NAME` - Will connect the connection NAME

Parte 5: Excluindo uma conexão

Excluir uma conexão existente é bastante fácil. Primeiro tipo no terminal:

nmcli c

Ele produzirá algo como isto:

$ nmcli c
NAME                      UUID                                   TYPE              TIMESTAMP-REAL                    
Realtek                   9ded7740-ad29-4c8f-861f-84ec4da87f8d   802-3-ethernet    Tue 05 Mar 2013 01:18:31 AM VET   
PrivateSys                86b2b37d-4835-44f1-ba95-46c4b747140f   802-11-wireless   Sun 21 Apr 2013 07:52:57 PM VET   
pepe                      9887664b-183a-45c0-a81f-27d5d0e6d9d8   802-11-wireless   Thu 18 Apr 2013 02:43:05 AM VET   
Virus                     3f8ced55-507b-4558-a70b-0d260441f570   802-11-wireless   Tue 16 Apr 2013 11:33:24 AM VET   
Intel                     e25b1fd8-c4ff-41ac-a6bc-22620296f01c   802-3-ethernet    Sun 21 Apr 2013 08:12:29 PM VET   
Xcentral                  f51a5a64-8a91-47d6-897c-28efcd84d2b0   802-11-wireless   Fri 22 Mar 2013 02:25:54 PM VET  

Agora, digamos que queremos excluir o Xcentral , prosseguimos com o seguinte comando:

nmcli c delete id Xcentral

Depois de fazer isso, deve ser algo como isto:

$ nmcli c delete id Xcentral
$ nmcli c
NAME                      UUID                                   TYPE              TIMESTAMP-REAL                    
Realtek                   9ded7740-ad29-4c8f-861f-84ec4da87f8d   802-3-ethernet    Tue 05 Mar 2013 01:18:31 AM VET   
PrivateSys                86b2b37d-4835-44f1-ba95-46c4b747140f   802-11-wireless   Sun 21 Apr 2013 07:52:57 PM VET   
pepe                      9887664b-183a-45c0-a81f-27d5d0e6d9d8   802-11-wireless   Thu 18 Apr 2013 02:43:05 AM VET   
Virus                     3f8ced55-507b-4558-a70b-0d260441f570   802-11-wireless   Tue 16 Apr 2013 11:33:24 AM VET   
Intel                     e25b1fd8-c4ff-41ac-a6bc-22620296f01c   802-3-ethernet    Sun 21 Apr 2013 08:12:29 PM VET   

Todas as conexões são armazenadas em /etc/NetworkManager/system-connections/

Se eu olhasse nessa pasta agora, veria os seguintes arquivos:

$ ls /etc/NetworkManager/system-connections
Intel  pepe  PrivateSys  Realtek  Virus

Isso ocorre apenas no caso de você desejar editar / excluir / adicionar uma conexão manualmente.

Parte 6: Conexão automática ao fazer login

Para os casos em que você deseja fazer login automaticamente em um roteador sem fio, seguem as etapas:

  1. Abra o interfacearquivo:

    sudo nano /etc/network/interfaces
    
  2. Adicione as seguintes informações (supondo que sua interface seja chamada wlan0):

    auto wlan0
    iface wlan0 inet static
    address ASSIGNED_IP
    netmask 255.255.255.0
    gateway THE_GATEWAY
    wireless-essid YOURSSID
    wireless-key WIRELESSKEY_HERE
    
  3. Salve o arquivo e reinicie o computador. Observe que isso será salvo em um arquivo de texto simples que pode ser acessado no mesmo computador.

Bônus: encontre o nome GUI da sua conexão sem fio

  1. Clique no Network Manager e vá para Connection Information

    captura de tela

  2. Vá para a guia que contém sua placa de rede sem fio

    captura de tela

Nesta imagem, esta placa de rede é nomeada eth1 (dentro dos parênteses), mas isso pode ser diferente para cada usuário. Normalmente, seria uma wlan (como wlan0, wlan1, wlan2 ...), mas também pode ser eth1, eth2, etc. Então você precisa ver qual nome tem.

Outra maneira de encontrar o nome rapidamente é digitando o iwconfigque mostrará toda a placa de rede sem fio disponível.

Luis Alvarado
fonte
3
Se você encontrou outra maneira de linha de comando para encontrar o nome da interface sem fio. depois de digitar iwlistpressione tab duas vezes e o terminal irá digitar automaticamente o nome da interface depoisiwilst
Suhaib
2
Eu poderia adivinhar corretamente o autor olhando para a completude da resposta.
Jobin
11
@douglaswalrath Você poderia usar aspas, como em "fadas açúcar"
Luis Alvarado
Obrigado pelo extenso guia! Gostaria de saber se existem outras maneiras de vincular a uma conexão sem fio na inicialização sem ter a senha escrita em texto sem formatação em um arquivo ... Você tem alguma ideia?
Michele
11
@Michele esta outra resposta dá orientações sobre como evitar que a senha seja salva sobre a história askubuntu.com/a/279333/237654
Hector Correa
36

É bem fácil se você souber como fazê-lo.

Mostrar pontos de acesso wlan disponíveis:

nmcli dev wifi

Conecte-se ao ponto de acesso:

nmcli dev wifi connect $ACCESS_POINT password $PASSWORD
Ikem Krueger
fonte
2
Isso é muito melhor do que a resposta votada de Alvarado, que não funcionou no meu caso (Linux Mint 17.1). Mas isso é bem simples e funciona!
Thorben
11
trabalhou para mim em Linux Mint 17
David Okwii
Esta é a resposta vencedora para mim. Apenas rápido, fácil e seguro. Obrigado!.
GTRONICK
3
@ Thorben IMHO, esta não é a resposta aceita, porque network manager command line interfacenão responde à pergunta original How to connect without a network manager.
Vorac 5/05
+1 porque esta resposta, embora não se aplique à pergunta, ajudaria alguém no modo de recuperação e economizaria tempo. Excelente trabalho user82110.
Luis Alvarado
13

O wicd vem com 2 utilitários de linha de comando: wicd-curses e wicd-cli (eles podem exigir uma instalação separada) O wicd-curse permite configurar / conectar desconectar de forma interativa as redes (com ou sem fio), o wicd-cli oferece a mesma funcionalidade, mas através Somente opções de linha de comando (úteis para scripts) Eu o uso em um trabalho cron para solucionar alguns erros de conexão automática:

wicd-cli -y -c -m MY_NETWORK_SSID

Além disso, você pode "apenas" ter uma configuração wpa_supplicant semelhante a:

/ etc / network / interface:

auto wlan0 
iface wlan0 inet dhcp 
wpa-conf /etc/wpa.conf

e (como um exemplo WPA) /etc/wpa.conf:

network={
  ssid="MY_NETWORK_SSID"
  proto=RSN
  key_mgmt=WPA_PSK
  pairwise=CCMP_TKIP
  group=CCMP_TKIP
  psk="my network key in the clear"
}

existem muitas considerações sobre isso, das quais a preocupação de segurança de ter a chave pré-compartilhada em texto não criptografado (wpa_supplicant pode permitir que você apresente uma chave criptografada ou talvez apenas ofuscada, consulte a página de manual), além de tornar esse arquivo de propriedade e legível pela raiz é uma atenuação.

Eu acho que ter várias seções de rede permitiria conectar várias redes, por ordem de prioridade.

Philippe
fonte
O wicd não está instalado por padrão, não tem certeza se é compatível com o gerenciador de rede.
guntbert
é incompatível. Você pode seguir help.ubuntu.com/community/WICD
tr33hous
5

Eu uso wicd-curses, que considero de longe a interface de usuário mais fácil.

maldições

Você precisa usar a (tecla de seta para a direita ->) para definir configurações; tudo o resto é óbvio nas instruções na tela.

Claro que você precisa encontrar uma maneira de acessar a Internet sem wicd; Suponho que você já tenha resolvido isso ou não estaria postando.

(Isso não é oportuno para o OP, basta postar para a posteridade, pois essa pergunta ainda aparece no Google. Para os buscadores do Google: se você está lendo isso em um café ou no computador de um amigo ou algo assim, talvez possa usar um fio em algum lugar para wicd-cursesinstalar sudo apt-get install wicd-curses; depois, teste-o em uma rede conhecida por funcionar antes de sair!)

isomorfismos
fonte