Pular para o conteúdo principal

Transformando seu computador em um ponto de acesso de rede sem fio

Você irá precisar de uma placa de rede sem fio instalada e reconhecida pelo seu Linux. Por quê? Eu não entrarei nos detalhes de como fazer seu linux reconhecer sua placa de rede, pois para cada placa de rede funciona diferente.

Primeiro vamos ver se a sua placa aceita ser configurada como ponto de acesso. Para isto precisamos do comando iw. Vamos aproveitar e instalar também o wireless-tools que permite verificar outras informações da rede sem fio.

$ sudo apt-get -y update
$ sudo apt-get install -i iw wireless-tools
$ sudo apt-get install -i hostapd
A terceira linha acima instala o hostapd. O site com a documentação oficial do hostapd pode ser visto clicando neste link. O hostapd é o programa no linux que cria um ponto de acesso sem fio compatível com o protocolo IEEE 802.11 que é utilizado pelos wifi.

Então vamos fazer a verificação. O comando ifconfig mostra as interfaces.
$ ifconfig
eth0      Link encap:Ethernet  Endereço de HW b0:aa:ab:ab:ac:03  
          UP BROADCAST MULTICAST  MTU:1500  Métrica:1
          pacotes RX:0 erros:0 descartados:0 excesso:0 quadro:0
          Pacotes TX:0 erros:0 descartados:0 excesso:0 portadora:0
          colisões:0 txqueuelen:1000 
          RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)

lo        Link encap:Loopback Local  
          inet end.: 127.0.0.1  Masc:255.0.0.0
          endereço inet6: ::1/128 Escopo:Máquina
          UP LOOPBACK RUNNING  MTU:65536  Métrica:1
          pacotes RX:9225 erros:0 descartados:0 excesso:0 quadro:0
          Pacotes TX:9225 erros:0 descartados:0 excesso:0 portadora:0
          colisões:0 txqueuelen:1 
          RX bytes:153959932 (153.9 MB) TX bytes:153959932 (153.9 MB)

wlan0     Link encap:Ethernet  Endereço de HW b0:aa:ab:ab:ac:03  
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Métrica:1
          pacotes RX:196245 erros:0 descartados:0 excesso:0 quadro:0
          Pacotes TX:195998 erros:0 descartados:0 excesso:0 portadora:0
          colisões:0 txqueuelen:1000 
          RX bytes:286319091 (286.3 MB) TX bytes:23147473 (23.1 MB)
No nosso caso já conseguimos identificar a interface de rede que é wlan0. Você pode mandar listar um arquivo de sistema que mostra também informações de rede.

$ cat /proc/net/dev
Inter-|   Receive                                                |  Transmit
 face |bytes    packets errs drop fifo frame compressed multicast|bytes    packets errs drop fifo colls carrier compressed
    lo: 153959932    9225    0    0    0     0          0         0 153959932    9225    0    0    0     0       0          0
 wlan0: 286319091  196245    0    0    0     0          0         0 23147473  195998    0    0    0     0       0          0
  eth0:       0       0    0    0    0     0          0         0        0       0    0    0    0     0       0          0
Que permite ver também as interfaces detectadas e criadas pelo linux.

Agora que já sabemos o nome da interface podemos verificar se ela suporta funcionar como AP.

$ iw phy
Wiphy phy0
 Band 1:
 Supported interface modes:
   * IBSS
   * managed
   * AP
   * AP/VLAN
   * WDS
   * monitor
   * mesh point
   * P2P-client
   * P2P-GO
   * Unknown mode (11)
Usamos o comando iw para obter a informação mostrada acima. Notem que o comando iw retorna muito mais informação que a mostrada acima. De propósito retiramos diversas linhas para não ficar muito grande e para ficar mais fácil mostrar onde está a informação desejada. Como vemos em "Supported interface modes" que AP está listado, então sabemos que podemos utilizar nossa placa para criar um ponto de acesso. E se a saída de seu comando não mostra isto? Então você pode precisar instalar outro driver ou até mesmo trocar de placa.

Vamos garantir que o NetworkManager não irá utilizar esta interface. Para isto é necessário alterar o arquivo /etc/NetworkManager/NetworkManager.conf e acrescentar as seguintes linhas:

[keyfile]
unmanaged-devices=mac:b0:aa:ab:ab:ac:03
Estas duas linhas indicam a seção do arquivo de configuração (que já pode existir no seu caso, confira antes de simplesmente inserir uma nova linha). A segunda linha indica para o NetworkManager que ele não deve controlar a interface com o endereço MAC indicado. Note que este endereço é indicado no comando ifconfig (veja a saída dele acima).

Precisamos criar um arquivo de configuração básico. O local padrão para colocarmos este arquivo é em /etc/hostapd. Vamos ver como criar um ponto de acesso simples com autenticação WPA2-PSK, isto é, um ponto de acesso normal com a maior segurança atual e que usa uma senha para o usuário conectar. Você pode usar o seu editor favorito, lembrando que o arquivo deverá ser criado em /etc/hostapd com o nome hostapd.conf.

interface=wlan0
driver=nl80211
ignore_broadcast_ssid=0
hw_mode=g
channel=1
ssid=meussid
# habilita WPA PSK
wpa=2
wpa_key_mgmt=WPA-PSK
wpa_pairwise=TKIP
rsn_pairwise=CCMP
wpa_passphrase=senhadecriptografia
wme_enabled=1
Os pontos que você deverá verificar estão marcados de outra cor no exemplo acima. Em rosa está o nome da sua interface, normalmente wlan0. Em vermelho é o nome da sua rede sem fio (aquela que suas estações irão ver para se conectar). E em azul é a senha, que você deverá alterar para conter o texto que você achar melhor. O canal indica qual a frequência que seu ponto de acesso irá atuar. Por exemplo, para 2.4GHz os canais no Brasil vão de 1 a 11. Escolha um destes.

Veja se seu Ubuntu ao instalar o hostapd criou também o script de inicialização em /etc/init.d.
Se não criou, você precisar criar algo como mostrado abaixo. Use seu editor favorito, mas lembre que este diretório é acessado pelo root.
#!/bin/sh

### BEGIN INIT INFO
# Provides:  hostapd
# Required-Start: $remote_fs
# Required-Stop: $remote_fs
# Should-Start:  $network
# Should-Stop:
# Default-Start: 2 3 4 5
# Default-Stop:  0 1 6
# Short-Description: Advanced IEEE 802.11 management daemon
# Description:  Userspace IEEE 802.11 AP and IEEE 802.1X/WPA/WPA2/EAP
#   Authenticator
### END INIT INFO

PATH=/sbin:/bin:/usr/sbin:/usr/bin
DAEMON_SBIN=/usr/sbin/hostapd
DAEMON_DEFS=/etc/default/hostapd
DAEMON_CONF=
NAME=hostapd
DESC="advanced IEEE 802.11 management"
PIDFILE=/var/run/hostapd.pid

[ -x "$DAEMON_SBIN" ] || exit 0
[ -s "$DAEMON_DEFS" ] && . /etc/default/hostapd
[ -n "$DAEMON_CONF" ] || exit 0

DAEMON_OPTS="-B -P $PIDFILE $DAEMON_OPTS $DAEMON_CONF"

. /lib/lsb/init-functions

case "$1" in
  start)
 log_daemon_msg "Starting $DESC" "$NAME"
 start-stop-daemon --start --oknodo --quiet --exec "$DAEMON_SBIN" \
  --pidfile "$PIDFILE" -- $DAEMON_OPTS >/dev/null
 log_end_msg "$?"
 ;;
  stop)
 log_daemon_msg "Stopping $DESC" "$NAME"
 start-stop-daemon --stop --oknodo --quiet --exec "$DAEMON_SBIN" \
  --pidfile "$PIDFILE"
 log_end_msg "$?"
 ;;
  reload)
   log_daemon_msg "Reloading $DESC" "$NAME"
 start-stop-daemon --stop --signal HUP --exec "$DAEMON_SBIN" \
  --pidfile "$PIDFILE"
 log_end_msg "$?"
 ;;
  restart|force-reload)
   $0 stop
 sleep 8
 $0 start
 ;;
  status)
 status_of_proc "$DAEMON_SBIN" "$NAME"
 exit $?
 ;;
  *)
 N=/etc/init.d/$NAME
 echo "Usage: $N {start|stop|restart|force-reload|reload|status}" >&2
 exit 1
 ;;
esac

exit 0

Rode service hostapd start para iniciar o AP.
Pronto as suas estações sem fio (notebook, celular, tablet, etc) já podem continuar.

Para que seu computador funcione como um AP completo ainda temos que fazer duas coisas:

  • instalar e configurar um DHCP server, que fornecerá o endereço IP para suas estações
  • instalar e configurar um firewall com NAT para permitir que as estações naveguem.


Comentários

Postagens mais visitadas deste blog

Como colocar o PyCharm no launcher do Ubuntu

Atualizei recentemente meu pycharm para a versão 2018.1. A atualização basicamente consiste em baixar do site da Jetbrains  dedicado ao PyCharm, e depois do download basta descompactar e mover o diretório criado para você você achar mais adequado. No meu caso está em ~/bin/pycharm. Para rodar o pycharm é só executar o script pycharm.sh que está no diretório bin dentro do diretório do pycharm, isto é, no meu caso ~/bin/pycharm/bin/pycharm.sh. Eu queria ter o ícone do pycharm no launcher (aquela barra lateral do Ubuntu) para ficar mais fácil chamá-lo. O PyCharm pode criar seu próprio ícone de lançador, contudo ele não é cria por padrão. A gente tem que executar alguns comandos: 1) Comece chamando o PyCharm em um terminal. 2) No menu Ferramentas, selecione "Criar entrada da área de trabalho ..." 3) Se você já tem o PyCharm, ele irá perguntar se você quer reaproveitar as configurações da versão anterior: 4) Marque a caixa correspondente, se você quiser o lanç

Resetando a senha do administrador local no Windows Server 2012

Existem diversas formas de redefinir a senha em seu servidor Windows 2012 quando você esqueceu ela. Neste post mostraremos como alterar a senha do usuário administrador, quando você tem acesso físico à ele. Você precisará do DVD de instalação do Windows para fazer isto. São os seguintes passos: 1-) Reinicie o seu computador dando boot pelo DVD do Microsoft Windows Server 2012 (pode ser outra versão) 2-) No menu Instalação do Windows (mostrado abaixo), clique em "Avançar". 3-) Selecione "Reparar seu computador" Como estamos utilizando o DVD do Windows 2008 para reparar um Windows 2012, o seguinte aviso é mostrado. Concorde clicando em Next. 4-) Clique em "Aviso de comando" para abrir uma janela de comandos. 5-) No prompt de comando, execute os seguintes comandos: d: cd windows\system32 ren Utilman.exe Utilman.exe.old copy cmd.exe Utilman.exe 5-) Feche o prompt de comando e clique em "Reiniciar". 6-) O serv

Configurar a ação do Ubuntu 20 ao fechar a tela do notebook

Este post mostra como alterar a ação quando a tampa do laptop é fechada no Ubuntu 20.04 - por exemplo, desligar, hibernar, não fazer nada ou travar a tela. A ação padrão do Ubuntu é suspender a atividade do notebook. Até onde eu sei, até o momento deste post não existe uma opção gráfica para fazer esta configuração, portanto você precisa editar o arquivo logind.conf para alterar a ação. Esta configuração deve funcionar em instalações tipo desktop ou servidor do Ubuntu. Você precisa abrir o terminal (normalmente isto pode ser feito pressionando simultaneamente Ctrl + Alt + T). Com o terminal aberto você pode utilizar um editor para alterar as linhas que controlam a ação. Por exemplo, digite na linha de comando: sudo vi /etc/systemd/logind.conf No arquivo procure a linha (note the # indica que a linha está comentada) # HandleLidSwitch = suspend e altere-a para uma das seguintes opções (note que agora a linha não começa mais com #) - trava o desktop quando a tampa está fechada: HandleLidS