#!/bin/bash # ---------------------------------------------------------- # wifi_bridge.sh – Crea un puente NAT entre Wi-Fi y Ethernet # Compatible con Debian 12/13 (Bookworm/Trixie) # ---------------------------------------------------------- # Interfaces WIFI_IF="wlp3s0" ETH_IF="enp0s25" # IP interna para la red compartida LAN_IP="192.168.137.1" LAN_NET="192.168.137.0/24" echo "[*] Configurando reenvío IPv4..." echo 1 | tee /proc/sys/net/ipv4/ip_forward >/dev/null # Aplicar persistencia en sysctl if ! grep -q '^net.ipv4.ip_forward=1' /etc/sysctl.conf; then echo 'net.ipv4.ip_forward=1' >> /etc/sysctl.conf fi echo "[*] Asignando IP local a $ETH_IF..." ip addr flush dev "$ETH_IF" ip addr add "$LAN_IP/24" dev "$ETH_IF" ip link set "$ETH_IF" up echo "[*] Limpiando reglas iptables anteriores..." iptables -t nat -F iptables -F iptables -X echo "[*] Configurando NAT y reenvío..." iptables -t nat -A POSTROUTING -o "$WIFI_IF" -j MASQUERADE iptables -A FORWARD -i "$ETH_IF" -o "$WIFI_IF" -j ACCEPT iptables -A FORWARD -i "$WIFI_IF" -o "$ETH_IF" -m state --state RELATED,ESTABLISHED -j ACCEPT # Guardar reglas if command -v iptables-save &>/dev/null; then mkdir -p /etc/iptables iptables-save > /etc/iptables/rules.v4 echo "[*] Reglas iptables guardadas en /etc/iptables/rules.v4" else echo "[!] iptables-save no encontrado. Instala iptables-persistent si querés guardar reglas." fi # Opcional: iniciar dnsmasq si existe if command -v dnsmasq &>/dev/null; then echo "[*] Verificando configuración DHCP (dnsmasq)..." if ! grep -q "interface=$ETH_IF" /etc/dnsmasq.conf 2>/dev/null; then echo -e "\ninterface=$ETH_IF\ndhcp-range=192.168.137.10,192.168.137.100,12h" >> /etc/dnsmasq.conf fi systemctl restart dnsmasq echo "[*] dnsmasq configurado y reiniciado." else echo "[!] dnsmasq no instalado. Los clientes deberán usar IP manual o instalá dnsmasq." fi echo "[✔] Puente Wi-Fi ↔ Ethernet activado correctamente." echo " Wi-Fi: $WIFI_IF → Ethernet: $ETH_IF" echo " Red interna: $LAN_NET (Gateway: $LAN_IP)"