Configurando um hotspot wifi com brctl e hostapd

2

Estou tentando configurar um hotspot wifi usando brctl e hostapd no Debian GNU / Linux, mas parece que não funciona. As etapas a seguir são as seguintes:

echo 1 > /proc/sys/net/ipv4/ip_forward
brctl addbr br0
brctl addif br0 eth0
dhclient br0

Até agora, ele funciona e eu posso navegar na web usando a conexão com fio. Então eu lanço hostapd. Ele é adicionado wlan0à ponte e a conexão com fio para de funcionar: não consigo navegar na Web e o smartphone (com Android) é capaz de se autenticar com o hotspot, mas não obtém um endereço IP e diz "Conexão limitada".

Li vários guias e instruções, mas não consigo encontrar uma solução. Alguma sugestão?

Gilberto T.
fonte
Uma resposta baseada em / etc / networks com bridging estaria bem? Eu tenho uma configuração funcional posso compartilhar
Journeyman Geek
Eu prefiro configurá-lo manualmente pelo console, mas postar sua configuração aqui, thx.
Gilberto T.
Uma ponte é algo que tem duas extremidades. Adicionar apenas uma interface à ponte faz com que uma ponte pare no meio do rio.
ceving 31/10/19

Respostas:

3

Existem alguns pontos-chave a serem considerados:

  1. Você deve desativar o gerenciador de rede:

    sudo service network-manager stop
    
  2. Você deve iniciar o hostapd antes da ponte:

    sudo hostapd -B /etc/hostapd/hostapd.conf
    
  3. Agora você acabou de adicionar eth0 a uma ponte existente:

    sudo brctl addif br0 eth0
    
  4. e você coloca sua ponte na rede:

    sudo dhclient br0
    
  5. Agora você deve verificar se sua tabela de roteamento está funcionando:

    sudo add -net 0.0.0.0/0 gw IP_address_of_your_router dev br0
    sudo del -net 0.0.0.0/0 gw IP_address_of_your_router dev eth0
    
  6. Agora você adiciona servidores de nome ao /etc/resolv.conf: as sudo,

    echo nameserver 8.8.8.8 >> /etc/resolv.conf
    echo nameserver 8.8.4.4 >> /etc/resolv.conf
    

O meu funciona como acima: estou escrevendo neste momento.

MariusMatutiae
fonte
assumindo que ele usa o gerenciador de rede. Eu também acho que ele pode precisar incluir wlan0 na ponte, não é?
Journeyman Geek
@JourneymanGeek Não, ele não iria: o arquivo de configuração do hostapd mmust deve conter uma instrução bridge = br0 , que criará a ponte para ele. E, claro, o mesmo arquivo conf conterá uma interface de instrução = wlan0 . Mas já o faz, porque o OP alega que o serviço hostap foi iniciado corretamente e os clientes podem se conectar.
MariusMatutiae
Eu tentei. Nesse caso, "dhclient br0" não funciona.
Gilberto T.
@GilbertoT. O que você quer dizer com isso não funciona? Você não recebe uma oferta de DHCP?
MariusMatutiae
Sim, não recebo uma oferta de DHCP para br0.
Gilberto T.
1

Acabei escolhendo outra maneira de fazer a mesma coisa, com base no guia aqui - usar / hosts / networks é provavelmente melhor se você precisar de um AP sempre no hostapd, mas provavelmente menos usará o contrário.

Aqui está o meu arquivo / etc / networks - eu configurei o wlan0 como manual e fiz a ponte com eth0.

# wireless wlan0
allow-hotplug wlan0
iface wlan0 inet manual

# eth0 connected to the ISP router
allow-hotplug eth0
iface eth0 inet manual
#iface eth0 inet6 auto
# Setup bridge
iface br0 inet static
    bridge_ports wlan0 eth0
    address 192.168.1.127
    netmask 255.255.255.0
    network 192.168.1.0
    gateway 192.168.1.1
    dns-nameservers 192.168.1.1

Seu hostapd.conf também pode ser interessante por lá - esta é uma versão simplificada da minha, já que eu escolhi editar a versão 'estoque'. Eu suspeito que é bem provável que seu problema possa estar lá.

### Wireless network name ###
interface=wlan0
### Set your bridge name ###
bridge=br0
driver=nl80211

###CHANGE ANYTHING BELOW THIS TO SUIT!###

### (IN == INDIA, UK == United Kingdom, US == United Stats and so on ) ###
country_code=SG
hw_mode=g
channel=6
wpa=2
## Key management algorithms ##
wpa_key_mgmt=WPA-PSK

## Set cipher suites (encryption algorithms) ##
## TKIP = Temporal Key Integrity Protocol
## CCMP = AES in Counter mode with CBC-MAC
wpa_pairwise=TKIP
rsn_pairwise=CCMP

## Shared Key Authentication ##
auth_algs=1

## Accept all MAC address ###
macaddr_acl=0
Journeyman Geek
fonte
Eu não uso "country_code =" "macaddr_acl =". O restante do arquivo de configuração é semelhante.
Gilberto T.