
Tenho um Pi com 2 interfaces wireless, 1 está conectada ao gateway da rede, a outra que funciona como ponto de acesso graças aohostapd.
O AP não está executando nenhum software DHCP ou NAT, simplesmente executando o hostapt para permitir que vários dispositivos se conectem a ele.
Estou tentando conectar meu laptop a este ponto de acesso.
Usando o endereço IP estático e inserindo manualmente o endereço do gateway, DNS, etc., funciona perfeitamente bem.
No entanto, quando tento conectar-me usando DHCP, ele não funciona. No wireshark, posso ver que o pacote DHCP Discover inicial é enviado ao ponto de acesso ao tentar conectar-se. No entanto, este pacote não é encaminhado para fora da interface conectada ao gateway, apesar de eu ter algum software de ponte que escrevi em python rodando no Pi.
O software simplesmente envia pacotes na interface oposta em que foram recebidos (uma simplificação exagerada do que faz, mas essa é a ideia geral para este cenário, é uma ponte de rede). Portanto, a interface AP deve receber o pacote DHCP e encaminhá-lo para o gateway, que deverá responder com a oferta DHCP, etc.
O software funciona porque posso ver outras mensagens de informação de DHCP em meu laptop que passaram pelo software de ponte, bem como outras descobertas/ofertas/solicitações/reconhecimentos de DHCP que o software de ponte está enviando para meu laptop no momento devido a eles serem transmissões.
Estou me perguntando se o motivo pelo qual esses pacotes DHCP Discover não estão sendo encaminhados para o gateway é devido a alguma configuração ou recurso do ponto de acesso hostapd.
Estou confiante de que o problema não está no código que escrevi, pois funciona perfeitamente para DNS e similares.
Além disso, se eu criar manualmente um pacote DHCP Discovery, ele será encaminhado e enviado pela interface conectada ao gateway sem problemas, os pacotes DHCP só não serão encaminhados quando forem enviados automaticamente pelo meu laptop tentando obter um endereço IP do ponto de acesso ao qual está tentando se conectar.
Eu diria que o ponto de acesso não precisa fornecer o endereço IP diretamente, mas pode entrar em contato com o servidor DHCP real na rede para atribuir um corretamente.
Se alguém tiver alguma idéia de por que o pacote parece ser absorvido pelo ponto de acesso antes de poder ser encaminhado para a outra interface, por favor me avise!
Responder1
Presumo que você esteja usando WPA2 no lado "uplink". Isso não funcionará, pois o WPA2 está vinculado ao endereço MAC durante a criptografia. Portanto, retransmitir pacotes não funcionará.
Você precisaria construir algo com proxy arp ou encaminhamento de IP.
Se você tentar reinventar a roda em python, não se preocupe, tudo está no kernel do Linux. Mas lembre-se: DHCP Discover é uma transmissão e a resposta é um unicast de camada 2 para o MAC remetente. Então, se você traduzir aqui, precisará reescrever dentro dos pacotes. Pode ser mais fácil experimentar uma configuração de relé DHCP, já que o Raspi seria um switch que faria exatamente isso.
Minha primeira recomendação seria fazer com que a configuração funcionasse com o servidor NAT e DHCP na caixa intermediária e, em seguida, como uma segunda etapa, trabalhar em direção a uma caixa intermediária mais transparente.