Hotspot manager para extender una conexión Router ISP Wireless desde una máquina Linux con una sola tarjeta WiFi.
La máquina actúa simultáneamente como cliente WiFi (conectada al Router ISP Wireless) y como punto de acceso, usando una interfaz virtual ap0 sobre la misma tarjeta física.
- Linux (Ubuntu/Debian)
- Una tarjeta WiFi que soporte modo
AP(verificable coniw list) hostapd,dnsmasq,iptables-persistent
sudo apt update && sudo apt install -y hostapd dnsmasq iptables-persistentsudo iw dev wlp1s0 interface add ap0 type __ap
sudo ip link set ap0 up
sudo ip addr add 192.168.10.1/24 dev ap0Sustituye
wlp1s0por el nombre de tu interfaz WiFi si es diferente.
sudo nano /etc/hostapd/hostapd.confContenido:
interface=ap0
driver=nl80211
ssid=NombreDeTuRed
hw_mode=g
channel=6
ieee80211n=1
wmm_enabled=1
macaddr_acl=0
auth_algs=1
ignore_broadcast_ssid=1
wpa=2
wpa_passphrase=TuContraseña
wpa_key_mgmt=WPA-PSK
rsn_pairwise=CCMP
ignore_broadcast_ssid=1hace la red oculta. Cambia a0si quieres que sea visible.
Luego indica la ruta del config:
sudo nano /etc/default/hostapdCambia #DAEMON_CONF="" por:
DAEMON_CONF="/etc/hostapd/hostapd.conf"sudo mv /etc/dnsmasq.conf /etc/dnsmasq.conf.bak
sudo nano /etc/dnsmasq.confContenido:
interface=ap0
dhcp-range=192.168.10.50,192.168.10.150,255.255.255.0,12h
dhcp-option=3,192.168.10.1
dhcp-option=6,8.8.8.8,8.8.4.4echo 1 | sudo tee /proc/sys/net/ipv4/ip_forward
echo "net.ipv4.ip_forward=1" | sudo tee -a /etc/sysctl.conf
sudo iptables -t nat -A POSTROUTING -o wlp1s0 -j MASQUERADE
sudo iptables -A FORWARD -i ap0 -o wlp1s0 -j ACCEPT
sudo iptables -A FORWARD -i wlp1s0 -o ap0 -m state --state RELATED,ESTABLISHED -j ACCEPT
sudo netfilter-persistent savesudo nano /etc/systemd/system/ap0-create.serviceContenido:
[Unit]
Description=Crear interfaz virtual ap0
Before=hostapd.service
After=network.target
[Service]
Type=oneshot
RemainAfterExit=yes
ExecStart=/bin/bash -c '/usr/sbin/iw dev ap0 del 2>/dev/null; /usr/sbin/iw dev wlp1s0 interface add ap0 type __ap'
ExecStart=/usr/sbin/ip link set ap0 up
ExecStart=/usr/sbin/ip addr add 192.168.10.1/24 dev ap0
ExecStop=/usr/sbin/iw dev ap0 del
[Install]
WantedBy=multi-user.targetsudo systemctl daemon-reload
sudo systemctl enable ap0-create
sudo systemctl start ap0-createsudo mkdir -p /etc/systemd/system/hostapd.service.d
sudo nano /etc/systemd/system/hostapd.service.d/fix-ip.confContenido:
[Service]
ExecStartPost=/bin/bash -c '/usr/sbin/ip addr add 192.168.10.1/24 dev ap0 2>/dev/null || true'
ExecStartPost=/bin/systemctl restart dnsmasqsudo systemctl daemon-reloadsudo systemctl unmask hostapd
sudo systemctl enable hostapd dnsmasq
sudo systemctl start hostapd dnsmasqsudo cp ergoproxy /usr/local/bin/ergoproxy
sudo chmod +x /usr/local/bin/ergoproxysudo nano /etc/hotspot-aliasesFormato:
aa:bb:cc:dd:ee:ff Nombre del dispositivo
ergoproxy start # Inicia el hotspot
ergoproxy stop # Detiene el hotspot
ergoproxy status # Muestra estado y dispositivos conectados en tiempo real
ergoproxy alias <mac> <nombre> # Añade o actualiza un alias- La red es oculta por defecto. Al conectar manualmente en Android activar la opción "Red oculta".
- En Android, desactivar la MAC aleatoria por red para que los aliases sean estables: Ajustes → WiFi → (mantener pulsada la red) → Privacidad MAC → MAC del dispositivo.
- Si el Router/ISP se cae y vuelve, internet se recupera solo sin intervención.
- Los leases de dnsmasq duran 12h, por eso
ergoproxy statuspuede mostrar dispositivos ya desconectados en el archivo de leases, pero el status en tiempo real usaiw dev ap0 station dumppara mostrar solo los realmente conectados.