ECAL: usando un viejo computador con Ubuntu como router
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
- 10123 lecturas

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
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.
darle permiso de ejecución quizás?
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.....
En eso sí te puedo ayudar yo. Justo lo acabo de hacer, y funciona.
Creé un archivo que se llama "puente" en /etc/init.d. Se puede llamar "cucurrucucupaloma", si es tu gusto, pero tiene que estar en ese directorio. Como tengo ubuntu y algo de práctica, abrí una terminal y tipeé esto:
sudo vim /etc/init.d/puente, pero en vez de vim puedes usar tu editor de texto preferido. El equivalente de sudo es su en fedora y suse.
De todas maneras, aquí es donde está el sabor. Para los efectos, ppp0 es la conexión de mi adaptador de banda ancha móvil, 192.168.10.1 es el IP de la conexión br0 (puedes poner otra si quieres, no es obligado) y eth0 mi conexión lan, a la que conecto el cable rj45. Y el archivo "cucurrucucupaloma" dice así:
#!/bin/bash
#Creacion del Puente
brctl addbr br0
brctl addif br0 eth0
ifconfig eth0 down
ifconfig eth0 0.0.0.0 up
ifconfig br0 192.168.10.1 netmask 255.255.255.0 up
route add default gateway 192.168.10.1
#Compartiendo internet
iptables --flush
iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE
iptables -A FORWARD -i br0 -j ACCEPT
# iptables -A FORWARD -i eth0 -j ACCEPT
echo 1 > /proc/sys/net/ipv4/ip_forward
...eso es todo lo que tienes que poner en el archivo. Al grabar y salir, tienes que hacer este archivo ejecutable, de nuevo como superusuario. Y dice:
sudo chmod +x /etc/init.d/puente
sino no se te ejecuta más nuuuunnnncaaaaaaa!!!
Configuras el router para que conecte a WAN para que acepte un IP estático. Tu cable rj45 irá desde la respectiva conexión de la computadora, alias eth0, a la conexión WAN del router, la del proveedor de servicio. Esto no lo digo por tí (que sé que no necesitas estas aclaratorias), recuerda que hay una gran cantidad de gente necesitando estas ayudas, y que no están familiarizados con los nombres de los dispositivos como los conocemos los linuxeros curtidos. La conexión LAN que provee tu router, la dejo a tu gusto. Reinicias el router para que hagan efecto los cambios.
Ahora vamos al mambo. Conectas el adaptador usb (que una vez conectado será ppp0) y enlazas a la red móvil. Conectas el cable rj45 (en realidad podía haber estado conectado antes, no cambia nada). Toda conexión a la red cableada debe ser desconectada en el administrador de red (en ubuntu puede ser el Network Manager), sobretodo las que se conectan automáticamente. Ahora sí, vas a la terminal y POR FIN, escribes:
sudo /etc/init.d/cucurrucucupaloma (me imagino que así llamaste al archivo, pudiste haberle puesto "puente", que es más sencillo), y si no te indica ningún error, ya estás compartiendo internet.
Dale las gracias al código de la conexión puente a los muchachos de este post:
http://ubuntuforums.org/showthread.php?t=1305049
La carpintería sí fué mía.
¡Que te aproveche!
Enviar un comentario nuevo