nerdemma

airlinkd

Oct 29th, 2025
389
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Bash 2.10 KB | Software | 0 0
  1. #!/bin/bash
  2. # ----------------------------------------------------------
  3. # wifi_bridge.sh – Crea un puente NAT entre Wi-Fi y Ethernet
  4. # Compatible con Debian 12/13 (Bookworm/Trixie)
  5. # ----------------------------------------------------------
  6.  
  7. # Interfaces
  8. WIFI_IF="wlp3s0"
  9. ETH_IF="enp0s25"
  10.  
  11. # IP interna para la red compartida
  12. LAN_IP="192.168.137.1"
  13. LAN_NET="192.168.137.0/24"
  14.  
  15. echo "[*] Configurando reenvío IPv4..."
  16. echo 1 | tee /proc/sys/net/ipv4/ip_forward >/dev/null
  17.  
  18. # Aplicar persistencia en sysctl
  19. if ! grep -q '^net.ipv4.ip_forward=1' /etc/sysctl.conf; then
  20.     echo 'net.ipv4.ip_forward=1' >> /etc/sysctl.conf
  21. fi
  22.  
  23. echo "[*] Asignando IP local a $ETH_IF..."
  24. ip addr flush dev "$ETH_IF"
  25. ip addr add "$LAN_IP/24" dev "$ETH_IF"
  26. ip link set "$ETH_IF" up
  27.  
  28. echo "[*] Limpiando reglas iptables anteriores..."
  29. iptables -t nat -F
  30. iptables -F
  31. iptables -X
  32.  
  33. echo "[*] Configurando NAT y reenvío..."
  34. iptables -t nat -A POSTROUTING -o "$WIFI_IF" -j MASQUERADE
  35. iptables -A FORWARD -i "$ETH_IF" -o "$WIFI_IF" -j ACCEPT
  36. iptables -A FORWARD -i "$WIFI_IF" -o "$ETH_IF" -m state --state RELATED,ESTABLISHED -j ACCEPT
  37.  
  38. # Guardar reglas
  39. if command -v iptables-save &>/dev/null; then
  40.     mkdir -p /etc/iptables
  41.     iptables-save > /etc/iptables/rules.v4
  42.     echo "[*] Reglas iptables guardadas en /etc/iptables/rules.v4"
  43. else
  44.     echo "[!] iptables-save no encontrado. Instala iptables-persistent si querés guardar reglas."
  45. fi
  46.  
  47. # Opcional: iniciar dnsmasq si existe
  48. if command -v dnsmasq &>/dev/null; then
  49.     echo "[*] Verificando configuración DHCP (dnsmasq)..."
  50.     if ! grep -q "interface=$ETH_IF" /etc/dnsmasq.conf 2>/dev/null; then
  51.         echo -e "\ninterface=$ETH_IF\ndhcp-range=192.168.137.10,192.168.137.100,12h" >> /etc/dnsmasq.conf
  52.     fi
  53.     systemctl restart dnsmasq
  54.     echo "[*] dnsmasq configurado y reiniciado."
  55. else
  56.     echo "[!] dnsmasq no instalado. Los clientes deberán usar IP manual o instalá dnsmasq."
  57. fi
  58.  
  59. echo "[✔] Puente Wi-Fi ↔ Ethernet activado correctamente."
  60. echo "    Wi-Fi: $WIFI_IF  →  Ethernet: $ETH_IF"
  61. echo "    Red interna: $LAN_NET (Gateway: $LAN_IP)"
  62.  
Advertisement
Add Comment
Please, Sign In to add comment