Como compartir Internet en Ubuntu


En Ubuntu puedes compartir Internet de dos maneras, por el NetworkManager (NM) o por linea de comandos.

Por NetworkManager (ideal para uso temporal)

  • Clic derecho sobre el icono del NM, y seleccionar “Editar conexiones…”

image

  • Seleccionar la conexion cableada y poner editar, o hacerle doble clic

image

  • En la ficha “Configuración IPv4” en Método seleccionar “Compartida con otros computadores”

image

  • Poner Aplicar e ingresar la contraseña.
  • A los equipos que se conecten se les dará una IP 10.0.0.0/8 (algo así, no recuerdo la IP exacta)

Por línea de comandos (para uso permanente)

  • Si quieres que se asigne una IP automáticamente a los equipos que se conecten debes instalar un servidor DHCP, aquí usaré dnsmasq que es muy sencillo e incluye servidor DNS y TFTP, asi no necesitas instalar además el servidor DNS (y TFTP si quieres bootear equipos por red).
  • sudo apt-get install dnsmasq
  • Asignar una IP estatica, mediante NM o editando /etc/network/intefaces (si cambias la subred, debes usar la misma para el DHCP)
  • iface eth0 inet static
    address 192.168.1.1
    netmask 255.255.255.0
    gateway 192.168.1.1

  • Luego editar el archivo /etc/dnsmasq.conf, y activar las opciones DHCP
    • Para que solo asigne IP’s por la interfaz cableada descomenta esta línea y cambiala por la interfaz correspondiente si no es eth0: interface=eth0
    • Descomentar: bind-interfaces
    • Descomentar y si quieres editar el intervalo de IP que se asignaran a los clientes (IP inicial, IP final, tiempo lease): dhcp-range=192.168.1.50,192.168.1.150,12h
    • Descomentar: dhcp-authoritative
  • Iniciar el servicio: sudo /etc/init.d/dnsmasq start
  • Si editaste la IP (por /etc/network/interfaces) debes reiniciar la red: sudo /etc/init.d/networking restart
  • Ahora que los equipos tienen IP falta que haya acceso a Internet, para eso ejecuta estos dos comandos como root para activar la redirección de paquetes del Kernel y el NAT.
    • echo 1 > /proc/sys/net/ipv4/ip_forward
    • iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -j MASQUERADE
  • Para que los cambios no se pierdan al reiniciar, debes crear un script (puesto abajo) con los comandos, guardarlo en /etc/init.d/compartirinternet y ejecutar sudo update-rc.d compartirinternet defaults
  • #!/bin/bash
    echo 1 > /proc/sys/net/ipv4/ip_forward
    iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -j MASQUERADE

    Información adicional

    • Para hacer reglas iptables que solo operen para los equipos de la red y no para el equipo local se debe usar la opción FORWARD. Este ejemplo bloquea Facebook solo para la red local excepto el servidor

    iptables -A FORWARD -d 65.201.208.24/29 -j REJECT
    iptables -A FORWARD -d 65.204.104.128/28 -j REJECT
    iptables -A FORWARD -d 66.93.78.176/29 -j REJECT
    iptables -A FORWARD -d 66.92.180.48/28 -j REJECT
    iptables -A FORWARD -d 67.200.105.48/30 -j REJECT
    iptables -A FORWARD -d 69.63.176.0/20 -j REJECT
    iptables -A FORWARD -d 69.171.224.0/19 -j REJECT
    iptables -A FORWARD -d 74.119.76.0/22 -j REJECT
    iptables -A FORWARD -d 204.15.20.0/22 -j REJECT
    iptables -A FORWARD -d 204.15.20.0/22 -j REJECT
    iptables -A FORWARD -d 66.220.144.0/20 -j REJECT
    iptables -A FORWARD -d 173.252.64.0/18 -j REJECT