ECAL: usando un viejo computador con Ubuntu como router

Enviado por clbustos el Dom, 22/10/2006 - 01:05.

Una de las grandes cosas de cambiarse con tu novia es que puedes abrazarla al dormir. Una de las malas es abandonar tu querida y cómoda conexión pppoe por una de cable estática. Claro, la dirección IP es fija, pero estás obligado a usar un router para darle acceso al resto de los computadores.

Como no tengo el presupuesto (todavía) para comprar un router, me puse a buscar en internet soluciones de router por software, tanto para windoze como para linux. Para la ventanita, lo mejor que pille fue 602Lan Suite, que la s tiene todas y es freeware para 5 usuarios o menos: proxy, nat, firewall, servidor http, dns, pop3, smtp.... Todas. Y funciona bastante bien, les diré.

Pero como somos amantes del pingüino, obviamente estarán esperando como hacer un router con linux. En los siguientes párrafos entregaré las indicaciones para el servidor; si alguien lo necesita, después puedo dar algunas sugerencias para los clientes

Lo primero, compren una tarjera de red extra, para dar acceso a su LAN. Aquí en chile, pueden encontrar una decente a menos de $4.000 (6 dólares).

Después, les recomiendo cambiar sus configuraciones de udev para que la designación de eth0, eth1 y demases sea constante. Para ello, deben crear un archivo en /etc/udev/rules.d, el cual yo llamé 10-network_names.rules, con el siguiente contenido

KERNEL=="eth*",SYSFS{address}=="MAC_TARJETA_INTERNET",NAME="eth0"
KERNEL=="eth*",SYSFS{address}=="MAC_TARJETA_LAN",NAME="eth1"

Las mac de sus tarjetas las pueden encontrar haciendo un ifconfig con la cuenta de root. Por ejemplo:

# ifconfig

eth0      Link encap:Ethernet  HWaddr 00:E0:4C:97:7D:B2  
          inet addr:192.168.1.2  Bcast:192.168.1.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:1117472 errors:0 dropped:0 overruns:0 frame:0
          TX packets:1364999 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:700780937 (668.3 Mb)  TX bytes:852627881 (813.1 Mb)
          Interrupt:18 Base address:0xa000 

lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
          RX packets:5179 errors:0 dropped:0 overruns:0 frame:0
          TX packets:5179 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:1842022 (1.7 Mb)  TX bytes:1842022 (1.7 Mb)

La mac de mi tarjeta eth0 es la que aparece después de HWaddr, la cual sería 00:E0:4C:97:7D:B2

Después, es muy conveniete leer el artículo gentooniano en http://www.gentoo.org/doc/en/home-router-howto.xml.

Para facilitar las cosas, cree un script para /etc/init.d/, llamado iptables.sh, el cual muestro a continuación

#!/bin/bash
### BEGIN INIT INFO
# Provides:     iptables
# Required-Start: networking
# Required-Stop: networking
# Default-Start:        6
# Default-Stop:
# Short-Description: Set iptables
# Description: Set rules for iptables
### END INIT INFO
#
#Version: @(#)iptables.sh 0.1 21-oct-2006 clbustos@_NO_SPAM_htmail.com
#

export WAN=eth0
export LAN=eth1
export ROUTER=192.168.1.1
export CLIENTE1=192.168.1.2

# Función para crear un puerto de reenvío

iptables_forward () {

iptables -t nat -A PREROUTING -p tcp --dport $1 -i ${WAN} -j DNAT --to $2
iptables -t nat -A PREROUTING -p udp --dport $1 -i ${WAN} -j DNAT --to $2
}

do_start () {

# Borrar todas las configuraciones
iptables -F
iptables -t nat -F

# Políticas por defecto
iptables -P INPUT ACCEPT
iptables -P OUTPUT ACCEPT
iptables -P FORWARD DROP


#Bloquear servicios que sólo deben ser accessibles desde la LAN

iptables -I INPUT 1 -i ${LAN} -j ACCEPT
iptables -I INPUT 1 -i lo -j ACCEPT
iptables -A INPUT -p UDP --dport bootps -i ! ${LAN} -j REJECT
iptables -A INPUT -p UDP --dport domain -i ! ${LAN} -j REJECT

# Servicios que deben ser aceptados en el servidor. En este caso, puerto ssh y 80 (http)

iptables -A INPUT -p TCP --dport ssh -i ${WAN} -j ACCEPT
iptables -A INPUT -p TCP --dport 80 -i ${WAN} -j ACCEPT

# Botar paquetes TCP / UDP en los puertos privilegiados

iptables -A INPUT -p TCP -i ! ${LAN} -d 0/0 --dport 0:1023 -j DROP
iptables -A INPUT -p UDP -i ! ${LAN} -d 0/0 --dport 0:1023 -j DROP

# Agregar reglas para NAT
iptables -I FORWARD -i ${LAN} -d 192.168.0.0/255.255.0.0 -j DROP
iptables -A FORWARD -i ${LAN} -s 192.168.0.0/255.255.0.0 -j ACCEPT
iptables -A FORWARD -i ${WAN} -d 192.168.0.0/255.255.0.0 -j ACCEPT

iptables -t nat -A POSTROUTING -o ${WAN} -j MASQUERADE

# Avisarle al kernel que el reenvío ip es algo bueno
echo 1 > /proc/sys/net/ipv4/ip_forward
for f in /proc/sys/net/ipv4/conf/*/rp_filter ; do echo 1 > $f ; done

# Forward
# Todos los paquetes que se envíen al puerto 50000 se enviarán 
# directamente al computador CLIENTE1
iptables_forward 50000 ${CLIENTE1}

}

do_stop () {
iptables -F
iptables -t nat -F
}

case "$1" in
        start)
                do_start
                ;;
        stop)
                do_stop
                ;;
        *)
                echo "Usage: $0 start|stop" >&2
                exit 3
                ;;
esac

Ven? Nada del otro mundo (claro!). En gentoo, pueden hacer un

rc-update add iptables.sh default

Mientras que en debian / ubuntu se puede ocupar

update-rc.d iptables.sh defaults 95 95

Para que se ejecute automáticamente al iniciarse el computador. Si lo quieren iniciar de inmediato, para probarlo, basta hacer

# /etc/init.d/iptables.sh start

Y, voila! tienen su router rápidamente en linux

Imagen de Tatan

todo me resulta, menos la ejecución del script mediante:

# /etc/init.d/iptables.sh start

Muestra:

sudo /etc/init.d/iptables.sh start
sudo: /etc/init.d/iptables.sh: command not found

A ver si me puedes ayudar porfavor,

Salu2

Buena guía.

PD, uso Ubuntu 8.04

Enviado por Tatan (no verificado) el Lun, 21/07/2008 - 14:12.
Imagen de clbustos

Bueno, no guardaste el archivo en /etc/init.d/iptables.sh

La verdad, puedes ponerle el nombre que quieras, pero debe estar si o si en /etc/init.d para que funcione como servicio. Es recomendable, claro está, probarlo en tu home hasta que esté listo.

Enviado por clbustos el Lun, 21/07/2008 - 15:30.
Imagen de leo_

darle permiso de ejecución quizás?

Enviado por leo_ (no verificado) el Mié, 10/09/2008 - 08:47.
Imagen de waldo

bueno no se haber si me podéis ayudar ... he visto en algunos foros ... que es posible realizar esta clase de configuracion... bueno aquí explico ...

Internet accede por un----->usb receptor-->conectado al PC------->Ubuntu como router o (slackware, u otros cdlive)---->tarjeta ethernet rj45-------->Internet sale por cable (directo)----->accede al puerto WAN de un AP o Router físico------->luego Internet puede ser distribuido por wifi o cable.........

pregunto? como hacer esto ...me podeis ayudar ....muchas gracias ...o que me envieis algun tutorial.....
y gracias por vuestro tiempo.....

Enviado por waldo (no verificado) el Mié, 30/12/2009 - 21:11.

Enviar un comentario nuevo

El contenido de este campo se mantiene como privado y no se muestra públicamente.
If you have a Gravatar account, used to display your avatar.
  • Allowed HTML tags: <a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd>
  • Saltos automáticos de líneas y de párrafos.

Más información sobre opciones de formato