Isso é normal. Por padrão, o Wi-Fi é destinado a fornecer uma camada MAC compatível com Ethernet (compatível com 802.3). Do IEEE 802.11-2016 ( livre através do IEEE GET ):
4.2.5 Interaction with other IEEE 802® layers
IEEE Std 802.11 is required to appear to higher layers [logical link control (LLC)] as a general-purpose IEEE 802 LAN.
Portanto, é normal que os protocolos de camada superior tratem o Wi-Fi como Ethernet e o sistema operacional reescreve de forma transparente o cabeçalho L2 em um quadro de dados. Isso permite que os APs (como o roteador doméstico) interliguem de maneira transparente o Wi-Fi à Ethernet sem nenhum esforço adicional.
Para acessar recursos específicos de Wi-Fi (por exemplo, autenticação WPA por wpa_supplicant), o Linux fornece APIs de Netlink (nl80211) e WOCT ioctls obsoletos. Veja o código-fonte de iw
, wpa_supplicant
e iwd
para exemplos - ou, de fato, considere se você pode fazer o que quiser usando a própria API do wpa_supplicant.
Para enviar e receber quadros real 802.11, ative o modo monitor para a interface:
iw phy phy0 interface add mon0 type monitor
iw dev mon0 set monitor control otherbss
iw dev mon0 set channel 11
ip link set mon0 up
Resultado:
8: mon0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000
link/ieee802.11/radiotap 48:5d:60:e8:65:8f brd ff:ff:ff:ff:ff:ff
Veja documentação do aircrack-ng para uma possível ferramenta de injeção de pacotes.
Note que não todos adaptadores WLAN suportam a injeção de pacotes, ou mesmo o modo monitor em geral. (Você terá mais sorte com dispositivos "SoftMAC", como o ath9k, do que com o "FullMAC", pois eles lidam com tudo no firmware. Ainda não descobri como fazer meus quadros de beacon de exibição iwlwifi.)