Eu preciso colocar a interface wifi no estado adicional do monitor.
$ iw dev wlan0 interface add mon0 type monitor
neste caso, não tenho nenhum problema e tudo funciona. Eu posso ver a interface mon0 na saída do iwconfig.
mon0 IEEE 802.11 Mode:Monitor Frequency:2.412 GHz
Retry short limit:7 RTS thr:off Fragment thr:off
Power Management:on
wlan0 IEEE 802.11 ESSID:off/any
Mode:Managed Access Point: Not-Associated
Retry short limit:7 RTS thr:off Fragment thr:off
Encryption key:off
Power Management:on
Arquivo 70-wireless.rule:
SUBSYSTEM=="net", ACTION=="add", ATTRS{address}=="xx:xx:xx:xx:xx:xx", NAME="wbrd0"
$ iw dev wbrd0 interface add mon0 type monitor
Neste caso, a saída do iwconfig tem esta aparência:
rename4 IEEE 802.11 Mode:Monitor Frequency:2.412 GHz
Retry short limit:7 RTS thr:off Fragment thr:off
Power Management:on
wbrd0 IEEE 802.11 ESSID:off/any
Mode:Managed Access Point: Not-Associated
Retry short limit:7 RTS thr:off Fragment thr:off
Encryption key:off
Power Management:on
Como você pode ver, não há uma interface mon0 e, em vez disso, ela é renomeada como rename4 . Eu acho que é por causa da regra do udev, o udev está tentando nomear a nova interface do monitor como wbrd0 ao invés de mon0 . Provavelmente há algo que estou perdendo na documentação do udev. Embora eu saiba que funciona com regras padrão do udev, mas não consigo encontrar um lugar onde esteja.
Eu tenho uma solução alternativa, posso apenas renomear a interface rename4 com:
$ ip link set rename4 name mon0
Mas é muito sujo, deve haver uma maneira melhor.
Então, minha pergunta é como escrever a regra do udev que criará uma interface de monitor a partir do wbrd0 existente?
OR
Como encontrar um lugar na regra do udev padrão que está renomeando a interface do monitor para mon0 quando não estou usando minha regra de 70 sem fio?