Linux - Faça o Hotspot sem interligar o acesso à internet com dongle wi-fi usb secundário

0

Situação:
Raspberry Pi 3 (Mini PC de placa única) com distribuição baseada no Debian (Raspbian), com 2 cartões wi-fi, um interno (wlan0), outro externo (wlan1), na Internet de recepção interna do meu roteador doméstico.

O que eu quero:
O outro cartão wi-fi (wlan1 - o externo sb) faz uma conexão entre certos dispositivos que não requerem acesso à internet (ESP8266 Devices) no meu caso e o Raspberry Pi, então ele irá criar um access point / hotspot

Mas como posso arquivar isso?

Como posso configurar um ponto de acesso sem acesso à Internet no wlan1?

    
por DiogoSaraiva 30.09.2016 / 22:35

1 resposta

1

A solução é um pouco longa.

  1. Use hostapd para criar um ponto de acesso em wlan1 . Existem guias sobre como fazer isso em toda a Internet, você pode encontrar qualquer um que você gosta. Você pode omitir a declaração bridge = br0 conforme a sugestão de Daniel B.

  2. Agora, você pode fornecer um endereço IP à sua interface e apresentá-lo:

    ip addr add 192.168.1.111/24 dev wlan1
    ip link set dev wlan1 up
    

    onde 192.168.1.111 é um endereço fora do seu pool DHCP do roteador, mas dentro da mesma sub-rede.

  3. Agora temos que decidir sobre um intervalo de endereços IP para os clientes do seu hotspot. Isso é necessário não por motivos de DHCP, mas por causa de roteamento (veja o próximo marcador). Escolha uma pequena sub-rede da sua LAN principal que não seja não usada pelo seu roteador principal. Por exemplo, se o roteador distribui endereços IP no intervalo 192.168.1.2-192.168.1.100 , você pode usar algo como 192.168.1.112/28 , que inclui todos os endereços em o intervalo 192.168.1.112-192.168.127 .

  4. Agora adicione a rota importantíssima :

    ip route add 192.168.1.112/28 dev wlan1
    

    Isso instrui seu kernel a enviar pacotes para seus clientes wifi através da interface correta, não através de sua interface padrão wlan0 onde você tem uma regra

    ip route add 192.168.1.0/24 dev wlan0
    

    que vem do seu DHCP. Deixe-me repetir, porque é importante: a primeira rota tem precedência sobre a segunda porque é mais específica, então seu kernel saberá como alcançar seus clientes wifi usando a interface wlan1 .

  5. Agora você precisa configurar o dnsmasq para trabalhar na interface wlan1 para distribuir endereços no intervalo 192.168.1.112/28 ; use o seguinte arquivo /etc/dnsmasq.conf :

    domain-needed
    bogus-priv
    dhcp-authoritative
    interface=wlan1
    server=8.8.8.8
    server=8.8.4.4
    expand-hosts
    domain=YourLanName.lan
    dhcp-range=192.168.1.112,192.168.1.127,12h
    dhcp-option=3,192.168.1.1
    dhcp-host=4C:E6:76:00:11:22,PC_NAME,192.168.1.119,12h
    

    que deve ser autoexplicativo. A próxima linha até a última instrução instrui dnsmasq a passar como o gateway não o IP da máquina na qual dnsmasq está em execução, mas o endereço IP do roteador / gateway true de sua LAN. Se você não quiser que os clientes de Wi-Fi possam acessar a Internet, você pode pular a linha de penúltimo. Inicie o dnsmasq,

     systemctl start dnsmasq
    

    Eu presumo que você está no systemd, caso contrário, o acima deve ser substituído por

    service dnsmasq start
    

    A última linha mostra como distribuir endereços reservados (= estáticos). Se você deseja atribuir a um dos seus clientes wifi e endereço IP fora do intervalo 192.168.1.112/28 , você pode fazê-lo, lembre-se de instruir o kernel onde esse endereço pode ser encontrado: por exemplo ,

    ip route add 192.168.1.200/32 dev wlan1
    
  6. Lembre-se de permitir o tráfego IPv4 através de suas interfaces,

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

    e para MASQUERADE seu tráfego,

    iptables -t nat -A POSTROUTING -o wlan0 -j MASQUERADE
    

    Este último comando assegura que todo o tráfego que sai da interface wlan0 parece ter se originado do seu RPI, o que significa que seus clientes obterão as respostas às suas consultas; não se preocupe em saber quais pacotes retornados pertencem ao RPI e quais para um dos clientes, o kernel faz isso automaticamente para você.

  7. Por fim, permitimos somente o tráfego IP entre wlan0 e wlan1 (este é o significado do encaminhamento IPv4), o que exclui os protocolos da Camada 2, como o ARP . Se desejar compensar essa deficiência, você pode usar o proxy-arp :

    echo 1 > /proc/sys/net/ipv4/conf/wlan0/proxy_arp
    echo 1 > /proc/sys/net/ipv4/conf/wlan1/proxy_arp
    
por 01.10.2016 / 15:15