Criando um Access Point

Thiago Paes, mrprompt@gmail.com

2007-09-21 03:55:31

Introdução Adquiri recentemente, uma placa Wireless 108G PCI Adapter - DWL-G520 da Dlink, pra por no micro que já faz o roteamento da rede cabeada aqui de casa e poder utilizar o wireless do meu notebook. Imaginei que fosse uma tarefa simples, afinal, "é só mais uma placa de rede".

Eu penei pra conseguir configurar, foram dois dias fuçando manuais e buscas no Google, para enfim, chegar a essa receita de bolo.

A DWL-G520 vem com chipset Atheros, que é suportado nativamente pelo Linux com o madwifi, não necessitando então do ndiswrapper, que é uma espécia de Wine para drivers wireless se entendi bem.

A intenção é mesclar as redes ethernet e wireless, atribuindo IP aos clientes via dhcp, autenticando os usuários da rede wi-fi com a chave WEP.

Com as três placas de rede fisicamente instaladas na máquina que irá fazer o roteamento, aqui um K6-2 366MHz com 386Mb de RAM e Debian 4.0.

Dando um "lspci" obtenho a seguinte saída:

  # lspci
  00:09.0 Ethernet controller: Atheros Communications, Inc. AR5212 802.11abg NIC (rev 01)
  00:0a.0 Ethernet controller: VIA Technologies, Inc. VT6105 [Rhine-III] (rev 8b)
  00:0b.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL-8139/8139C/8139C+ (rev 10)

Instalando Vamos então a instalação dos pacotes via apt-get:

  # apt-get install bridge-utils dhcp3-client dhcp3-common dhcp3-server wireless-tools
  # apt-get install ifupdown iptables madwifi-tools madwifi-source module-assistant

Com a placa de rede reconhecida, e os drivers instalados, agora vamos configurar as placas de rede, no Debian, as configurações ficam no diretório "/etc/network/interfaces".

  # /etc/network/interfaces
  # Interface de Local/Loopback
  auto lo
  iface lo inet loopback```
  
  # Primeira placa de rede, ligada ao switch
  auto eth0
  allow-hotplug eth0
  iface eth0 inet static
  address 192.168.1.1
  netmask 255.255.255.0
  
  # Segunda placa de rede, ligada ao modem
  auto eth1
  allow-hotplug eth1
  iface eth1 inet dhcp
  
  # Terceira placa de rede, wireless, habilitada via wlanconfig para trabalhar como Access Point (AP)
  auto ath0
  iface ath0 inet static
  address 192.168.1.2
  netmask 255.255.255.0
  pre-up wlanconfig ath0 destroy
  pre-up wlanconfig ath0 create wlandev wifi0 wlanmode ap
  pre-up iwconfig ath0 essid "Casa" rate auto
  pre-up iwconfig ath0 txpower auto
  pre-up iwconfig ath0 channel 5
  pre-up iwconfig ath0 key restricted xxxxxxxxxxxxxxxxxxxxxxxxxxxx
  wireless-mode master

Para a chave WEP, você deve utilizar uma sequencia em hexadecimal de 26 caracteres. Reinicie o micro, ou levante as placas de rede manualmente:

  # ifconfig eth0 up
  # ifconfig eth1 up
  # ifconfig ath0 up

Agora, todas as placas de rede possuem um IP interno e já se comunicam, se em algum outro micro - no meu caso, a partir do notebook - eu rodar o iwlist, já será possível encontrar a rede wireless.

  # iwlist scan
  lo        Interface doesn't support scanning.```
  eth0      Interface doesn't support scanning.
  eth1      Scan completed :
  Cell 01 - Address: 00:19:5B:3C:CF:29
  ESSID:"BobMarley"
  Protocol:IEEE 802.11bg
  Mode:Master
  Channel:5
  Frequency:2.432 GHz (Channel 5)
  Encryption key:on
  Bit Rates:1 Mb/s; 2 Mb/s; 5.5 Mb/s; 11 Mb/s; 6 Mb/s
  9 Mb/s; 12 Mb/s; 18 Mb/s; 24 Mb/s; 36 Mb/s
  48 Mb/s; 54 Mb/s
  Quality=99/100  Signal level=-23 dBm  Noise level=-23 dBm
  Extra: Last beacon: 92ms ago

Agora vamos habilitar o DHCP para a rede. Edite o /etc/default/dhcp3-server para podermos informar ao servidor daemon do DHCP, quais interfaces ele irá ouvir.

  # /etc/default/dhcp3-server
  INTERFACES="eth0 ath0"

Configuramos agora, o daemon propriamente dito, uma configuração básica é sugerida abaixo, e deve ser salva no arquivo /etc/dhcp3/dhcpd.conf.

  # /etc/dhcp3/dhcpd.conf
  ddns-update-style none;
  default-lease-time 600;
  max-lease-time 7200;
  authoritative;
  log-facility local7;```
  subnet 192.168.1.0 netmask 255.255.255.0 {
      range 192.168.1.3 192.168.1.30;
      option domain-name-servers 192.168.1.1,200.247.141.11,200.247.141.12;
      option domain-name "fln.virtua.com.br";
      option routers 192.168.1.1;
      default-lease-time 600;
      max-lease-time 7200;
  }

Reinicie o servidor DHCP e pronto

  # /etc/init.d/dhcp3-server restart

Pronto, com isso, os micros conectados ao switch/hub já recebem um IP automaticamente, para os clientes da rede Wireless também receberem um IP e conseguir navegar, precisamos criar uma ponte, entre a placa de rede interna (eth0) e a placa wireless (ath0):

  # ifconfig eth0 0.0.0.0 up
  # ifconfig ath0 0.0.0.0 up
  # brctl addbr br0
  # brctl setfd br0 0
  # brctl addif br0 eth0
  # brctl addif br0 ath0
  # ifconfig br0 192.168.1.1

A rede agora está quase pronta, faltando apenas habilitar o NAT no servidor, para que todos os micros possam utilizar a internet, para isso, vamos utilizar o iptables.

Primeiro carregamos o módulo iptable_nat

  # modprobe iptable_nat

Limpamos quaisquer regras que existam na tabela do iptables

  # iptables -F
  # iptables -t nat -F
  # iptables -t mangle -F
  # iptables -X

Ativamos o ip forward

  # echo 1 > /proc/sys/net/ipv4/ip_forward

Habilitando o NAT, lembrando que a eth1 é a placa de rede que está ligada ao modem

  # iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE

Você também pode pegar os comandos que criam a interface de ponte (bridge) e do iptables, e inserir no seu rc.local, no diretório etc, para poder rodar sempre que o micro for iniciado.

How-To corrido, escrito em menos de 20min, mas ao menos tá documentado pra galera não ficar dois dias quebrando cabeça como eu ;)