edit: descobri que esta é uma duplicata de Por que a resposta ARP somente quando o adaptador de rede está no modo promíscuo? .
Eu uso um Raspberry Pi 3B+ com Rasbian Stretch e o configuro com proxy arp seguindo o tutorial do Debian: Bridging Network Connections with Proxy ARP to "bridge" eth0 to wlan0. De acordo com isso, é fácil configurar o proxy arp com:
rpi3 ~# echo 1 > /proc/sys/net/ipv4/conf/all/proxy_arp
rpi3 ~# echo 1 > /proc/sys/net/ipv4/ip_forward
rpi3 ~# ip route add 192.168.10.60/32 dev eth0
192.168.10.60
é o cliente em eth0 que deve ser "ligado" a wlan0.
Mas não funciona. Eu tenho que habilitar o modo promíscuo em wlan0 para fazê-lo funcionar, mas não consegui encontrar nenhuma dica para fazer isso.
rpi3 ~# ip link set wlan0 promisc on
O modo promíscuo é necessário para Stretch
? Se não, como posso evitar?
atualizações:
verificado que rp_filter
está definido como 0.
hostapd
não está instalado. wlan0
está no modo cliente e gerenciado por wpa_supplicant
.
Aparentemente, não é possível fazer a ponte entre quadros ethernet sem fio no modo cliente e ethernet. por exemplo, não vai funcionar.
Além disso, tome cuidado ao injetar quadros de outras fontes em uma infraestrutura de AP como cliente.
Parece ser apenas um problema no wi-fi do Raspberry Pi. Também uma pergunta duplicada Por que a resposta ARP somente quando o adaptador de rede está no modo promíscuo? usa um Raspberry Pi. Em nenhum outro lugar em qualquer tutorial pode ser encontrada uma nota para habilitar o modo promíscuo para proxy arp. Eu verifiquei no meu laptop onde o proxy arp funciona sem o modo promíscuo.
Acho que esse problema só pode ser corrigido pela RASPBERRY PI FOUNDATION e/ou seu fabricante de driver de código fechado. Até lá temos que conviver com isso.
Ponte usando proxy ARP com modo promisc
É possível "ponte" conexões de WiFi para LAN (por exemplo, em um Raspberry Pi Zero W com adaptador microUSB-LAN) tendo todos os dispositivos na mesma sub -rede (intervalo de IP) usando proxy ARP com modo promisc .
• Esquema:
[Router] <---WiFi---> [RasPi wlan0 <---bridge---> eth0] <---Cabo LAN---> [Dispositivo com fio, por exemplo, computador]
• Dicas: As soluções fornecidas são baseadas nestas fontes excelentes
Fonte nº 1 de Pascal Geiser
Fonte nº 2 de Will Haley
• Hardware/SO usado nestes exemplos:
Raspberry Pi Zero W com adaptador microUSB para LAN
Raspbian Stretch Lite (2019-04-08) + Atualizações
Solução #1 - ARP-proxy via INTERFACES (configuração manual)
Nota: Isso depende se o seu roteador WiFi suporta "Solução IP Layer 3" (camada de rede)
1) Supondo que a conexão WiFi do Raspberry Pi com o roteador já esteja configurada e conectada
2) Instalar pacotes
3) Edite e adicione as seguintes linhas:
Assuming
4) Habilite o encaminhamento de pacotes:
5) Configure DHCP Relay
O auxiliar DHCP irá capturar as solicitações e encaminhá-las para o servidor DHCP "real":
6) Configurar o AVAHI A
ativação do "modo refletor" permitirá que os clientes naveguem por todos os serviços conectados à ponte:
7) Reinicialize o RasPi
Após a reinicialização, via eth0 / LAN, o dispositivo conectado deve obter acesso à mesma rede do roteador WiFi.
Nota: A solução de trabalho depende se o seu roteador WiFi suporta "Solução IP Layer 3" (camada de rede)
Solução nº 2 - ARP-proxy via SERVICES (solução de script automatizada)
Nota: Isso depende se o seu roteador WiFi suporta "Solução IP Layer 3" (camada de rede)
1) Crie um script bash com este conteúdo:
2) Execute o script bash (verifique se há erros na saída):
3) Reinicie o RasPi
Após a reinicialização via eth0 / LAN, o dispositivo conectado deve obter acesso à mesma rede do roteador WiFi. Nota: Isso depende se o seu roteador WiFi suporta "Solução IP Layer 3"
Notas gerais:
na seção Modos de interface suportados
Se o WDS não estiver claramente listado aqui, o WDS não é compatível com o chip WiFi (o Raspberry Pi Zero W não oferece suporte ao WDS).