Traffic Shaping (simule o atraso e a perda de pacotes) no ponto de acesso do Linux Wi-FI

1

Eu tenho uma configuração Pi 3 B + como ponto de acesso Wi-Fi e gostaria de simular atrasos de pacotes e perda de pacotes para dispositivos conectados que se comunicam através do AP. Eu pensei que eu poderia conseguir isso usando tc e iptables para causar jitter de pacotes e perda de dispositivos conectados se comunicando através do AP, mas esses pacotes não são afetados. Os únicos pacotes afetados são os pacotes de um dispositivo conectado, cujo IP de destino são os pacotes AP ou AP cujo destino é o IP de destino, que é um dispositivo conectado. Qualquer insight sobre como afetar os dispositivos conectados que se comunicam através do AP seria muito apreciado. Também não posso modificar o software ou a configuração nos dispositivos conectados ao AP. Eu tentei comandos semelhantes aos abaixo no AP sem sucesso.

tc qdisc altera dev wlan0 raiz netem demora 100ms 10ms

tc qdisc troca dev wlan0 raiz netem perda 0.1

iptables -D INPUT -m estatística --mode random --probabilidade 0.2 -j DROP

iptables -D OUTPUT -m estatística --mode random --probabilidade 0.2 -j DROP

iptables -D FORWARD -m estatística --mode random --probabilidade 0.2 -j DROP

    
por user9773452 11.05.2018 / 00:47

1 resposta

1

Você deve poder usar o netem para este propósito, sem precisar de iptables. Você pode combinar o atraso e a perda necessários em uma única instância de rede.

No entanto, cada qdisc só lida com tráfego de saída em sua interface por padrão. O tráfego de entrada envolve um caminho diferente e você precisa colocar um qdisc separado nesse caminho para influenciá-los. Você pode anexar uma segunda instância de netem à interface Ethernet ou direcionar o tráfego de ingresso Wifi para passar por um dispositivo intermediário virtual. Este último requer:

ifconfig ifb0 up
tc qdisc add dev wlan0 handle ffff: ingress
tc filter add dev wlan0 parent ffff: protocol all u32 match u32 0 0 action mirred egress redirect dev ifb0
tc qdisc add dev ifb0 root netem ...

Um motivo pelo qual o iptables pode não estar funcionando para você é que, por padrão, o tráfego em ponte não passa por ele por motivos de eficiência, apenas o tráfego roteado o faz. Existe uma opção de configuração de kernel em tempo de compilação para enviar tráfego em ponte através do iptables também, mas eu não acho que seja necessário no seu caso.

    
por 11.05.2018 / 01:09