# 5 tarjetas wifi virtuales (AP1, AP2, AP3, vecino y PC)
sudo modprobe mac80211_hwsim radios=5
# Las dos cajas
sudo ip netns add aps
sudo ip netns add pc
# Mover una radio a una caja (usa tus números de phy)
sudo iw phy phy1 set netns name aps
# Arrancar los 4 APs de una vez (terminal 2)
sudo ip netns exec aps hostapd hostapd_ap1.conf hostapd_ap2.conf hostapd_ap3.conf hostapd_vecino.conf
# Arrancar el cliente (terminal 3)
sudo ip netns exec pc wpa_supplicant -i wifi_pc -c wpa_pc.conf
Mirar
# A qué AP está conectado el PC y en qué frecuencia
sudo wpa_cli -p /run/wpa_lab -i wifi_pc status
# Señal y velocidad del enlace
sudo wpa_cli -p /run/wpa_lab -i wifi_pc signal_poll
# Clientes de un AP
sudo hostapd_cli -p /run/hostapd_lab -i wifi_ap1 all_sta
# Escanear y analizar
sudo wpa_cli -p /run/wpa_lab -i wifi_pc scan
sudo ip netns exec pc iw dev wifi_pc scan dump | python3 analizador_wifi.py LAB_WIFI
Tocar
# "Mover" el PC: cambiar la potencia de un AP (en mBm: 1000 = 10 dBm)
sudo ip netns exec aps iw dev wifi_ap1 set txpower fixed 1000
# Cambiar de canal sin desconectar a nadie (frecuencia = 2407 + 5 × canal)
sudo hostapd_cli -p /run/hostapd_lab -i wifi_ap2 chan_switch 5 2437 ht
# Roaming a mano
sudo wpa_cli -p /run/wpa_lab -i wifi_pc roam 02:33:33:33:33:33
# El AP echa al PC
sudo hostapd_cli -p /run/hostapd_lab -i wifi_ap1 deauthenticate 02:aa:aa:aa:aa:aa
# 802.11v: "vete al AP2, por favor"
sudo hostapd_cli -p /run/hostapd_lab -i wifi_ap1 bss_tm_req 02:aa:aa:aa:aa:aa pref=1 abridged=1 neighbor=02:22:22:22:22:22,0x0000,81,6,7
Limpiar
sudo ip netns del pc
sudo ip netns del aps
sudo modprobe -r mac80211_hwsim
Límites del simulador
Lo que el simulador NO hace
Cómo se suple
No hay metros: la señal es siempre potencia − 50 (de -30 a -50 dBm)
La distancia se imita cambiando la potencia de cada AP; mapa_aps.py da las potencias para cada metro
No simula canales solapados ni que el aire se llene
Se calcula con mapa_aps.py y calculadora_velocidad.py (el mismo modelo que esta web)
El AP oye al PC igual desde todos los APs
Se baja la potencia del PC y se configura el rechazo solo en un AP
Nunca baja de -50 dBm, así que Linux nunca hace roaming solo
Es justo el cliente pegajoso: se fuerza con roam, deauthenticate o 802.11v
El siguiente paso, si quieres simular posiciones e interferencias de verdad, es wmediumd: un "medio de radio" para mac80211_hwsim con coordenadas, pérdidas por distancia e interferencias.