Compartiendo tu conexión a Internet con Linux
El tip de la semana: cómo darle Internet a tu familia para que puedan perder el tiempo con los acertijos de bootlog. O más bien, cómo hacerlo a través de Linux sin tener que pagar por un router!
Asumo que ya tienes los tarros conectados a través de un hub o switch, o de un cable de red cruzado, y que Internet llega vía módem a tu fiel tarro linuxero. Bueno, como todo con el pinguïno, hay más de una forma de hacerlo: vía consola o vía clicks. Yo voto por la primera, porque no hay que instalar nada adicional. Pero si estás buscando la forma fácil de hacerlo, entonces:
- Instala el paquete Firestarter (con Synaptic o apt-get) y sigue los pasos del wizard! Firestarter es básicamente un frontend para IPTables, el poderoso firewall que es parte del kernel de Linux.
- Para abrir algunos puertos (si quieres montar un servidor web, por ejemplo), usa los “policies” de Firestarter. En allow service, elige el puerto que quieras abrir y para quién (para todos, sólo dentro de la red local, o a un rango de IP’s).
- Eso es todo! Asegúrate de que el Gateway del otro computador sea la IP que quedó asignada para la segunda tarjeta de red del tarro Linux (la tarjeta que distribuye Internet, no la que recibe).
Y si te sientes valiente como para hacerlo vía consola (directamente con Iptables), sigue leyendo.
Los tres comandos mágicos. Fíjate en lo que viene después, porque quizás tengas que cambiar algunos parámetros.
$ sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
$ sudo iptables -A INPUT -s 192.168.0.0/24 -i eth1 -j ACCEPT
$ sudo echo “1” >/proc/sys/net/ipv4/ip_forward
Como decía, ojo, aquí tienes que reemplazar tres cosas: eth0 por la tarjeta que recibe Internet, eth1 por la que esté conectada a la red interna, y 192.168.0.0 por el rango de IP’s que vas a usar en esta misma red, que depende del IP que le hayas asignado a la segunda tarjeta. Si no lo has hecho, hazlo ahora (puedes hacerlo en Administración > Redes), o bien a través de este comando:
$ sudo ifconfig eth1 192.168.0.1 netmask 255.255.255.0 up
Para redes internas, el rango 192.168.0.0 es el más usado y va desde 192.168.0.1 a 192.168.0.254. Ahora, si quieres abrir puertos hazlo así:
$ sudo iptables -I INPUT -p tcp –dport (PUERTO QUE QUIERAS ABRIR) -j ACCEPT
Por ejemplo, para abrir el puerto 80 (servidor web):
$ sudo iptables -I INPUT -p tcp –dport 80 -j ACCEPT
O si quieres un mayor grado de control:
$ sudo iptables -A INPUT -s (IP/WILDCARD DE ORIGEN) -i (INTERFAZ DE RED) -p tcp -m tcp –dport (PUERTO DE DESTINO) -j ACCEPT
Por ejemplo, para abrir el mismo puerto (80, que es lo mismo que “www”) pero sólo para la red local, y cuando venga a través de la conexión en eth1:
$ sudo iptables -A INPUT -s 192.168.0.0/24 -i eth1 -p tcp -m tcp –dport www -j ACCEPT
¿Todo bien? También puedes ver el listado de reglas de iptables con el comando:
$ sudo iptables -L
Y para guardar tus nuevas reglas:
$ sudo iptables-save
Al igual que antes, asegúrate de configurar el otro computador para que su gateway sea el IP de la tarjeta de red que distribuye Internet. Veamos un ejemplo básico:
1. Computador con Linux que comparte Internet
Primera tarjeta de Red » Conectada a Internet, recibe el IP dinámicamente por DHCP
Segunda tarjeta de Red » Conectada a la red interna, IP 192.168.0.1
2. Cualquier otro tarro que esté conectado a la red interna (Windows, Linux o Mac, da lo mismo)
IP: 192.168.0.2
Puerta de Enlace (Gateway): 192.168.0.1
DNS: Fija los DNS que tenga el primer tarro, se pueden ver en la configuración de red o en /etc/resolv.conf
Eso es todo. ¿Con ganas de aprender más? Aquí hay unos ejemplos de reglas con iptables que te pueden servir. Y por acá un listado los puertos más comunes, entre los que están:
FTP: 21
SSH: 22
Telnet: 23
SMTP (mail): 25
DNS: 53
DHCP: 68
WWW: 80
POP3: 110
Samba (para compartir redes Windows): 139
IMAP: 143
BitTorrent: 6881
Emule: 1213
¿Todavía sigues ahí? ¡Felicitaciones! Bueno, si andas con tiempo, puedes probar qué tal quedó tu firewall con FTester. Para más información sobre cómo compartir internet (llamado IP Masquerading) y sobre Iptables, te recomiendo el Howto del Linux Documentation Project. Otra buena referencia es el Wiki de Ubuntu.


Bueno, y si hay más equipos, o quieres invitar a los amigos y ahorrarte las configuraciones… Falta el How-To para configurar el servidor DHCP. Aunque si tienen conectado un router/switch a la salida que tenga servidor, se ahorran la molestia…
Y ojo! Que si el equipo que está haciendo de router funciona también como Proxy Transparente, el acceso a internet se realiza en “forma local”, legalizando compartir la conexión con extraños…
Cierto, falta el how to configurar DHCP.
Yo en lo personal recomiendo el Dnsmasq (emerge -va dnsmasq -Gentoo- ) que es mas configurable y a mi me dio mejores resultados que el DHCPD. Por logro hacer que la IP de mi desktop sea siempre 192.168.1.100 aunque tenga activado el DHCP, esto mediante una configuracion del dnsmasq que con el nombre de la PC (en este caso Chii-PC) automaticamente le asigna una IP determinada, util cuando tienes varias pcs en linux y quieres estar entrando a ellas, pero con el dhcp activado tienden a cambiar XD.
sí, para la próxima vendrá DHCP.
eso sí, usé el DNSMasq un tiempo, pero a la larga me di cuenta que no lo necesitaba, ni tampoco DHCPD. fijando los IPs del gateway y los DNSs todo bien. :)
Tomas: Excelente. era justo lo q necesitaba. sabia hacerlo con el PF de OpenBSD, pero nunca habia probado el iptables.
Muchas Gracias por tu aporte.
Es muy util tener DHCp porque asi si el resto de los usuarios no tiene muchos conocimientos computacionales no tendrá quec ambiar nada en la configuración de su equipo.
Excelente post, justo que en unos días más tengo que hacer esto mismo.
Ojo con el
echo “1” >/proc/sys/net/ipv4/ip_forward
Siempre se me olvidaba y sin eso nunca tendrán internet mis hermanos.
Saludos.
Para solucionar el problema de tener que escribir “echo “1” >/proc/sys/net/ipv4/ip_forward” les recomiendo que en su “/etc/sysctl.conf” agreguen esta linea:
net.ipv4.ip_forward = 1
O si ya la tienen por defecto, viene con “0″ solo cambienla a “1″
siempre he leido buenos comentarios sobre firestarter, lastima que requiera librerias de gnome.
desearia un rango de puertos para iptablas , para la configuración de un servidor que limite salidas a siertas paginas como el Kazaa y Emule.
Especialmente con el comando DROP
iptables -A INPUT -s 0.0.0.0/0 -p tcp -dport 1:1024 -j DROP
iptables -A INPUT -s 0.0.0.0/0 -p udp -dport 1:1024 -j DROP
este comando nos genera un error en el 1:1024
esperamos su gentil respuesta.
Xubuntu (IV): Compartir Internet…
El cuarto post de la serie sobre Xubuntu: esta vez, sobre mis desventuras tratando de compartir mi conexión a internet
……
hice todo y no me funcionó, es muy facilya q como usted dice son solo 3 comandos, pero lamentablemente no me funciona.
sirve harto este minitutorial… y otra cosacomo consejo instalen el bind de esa manera no tendran que escribir manualmente los dns, claro qu eso si tendran que descomentar la liena del servidor dhcp :
#option definitions common to all supported networks…
option domain-name “MINIROUTER”;
option domain-name-servers 192.168.0.1,192.168.0.1;
Ojo que tratando de escribir una sola ip a mi no me funciona, deben de dejar la ip que usa el servidor dhcp como enlace predeterminado, ami me fuciona asi XD..
Muy linda la página y muy buena la explicación, pero tengo dos problemillas:
(1) debo montar el “router” en un SuSE 6.3 con núcleo 2.2.13, donde todavia no está Netfilter/iptables… tienes una idea de como seria la configuración equivalente? intenté con “route” e “ipchains” pero no parece ser tan facil como iptables.
(2) por algun motivo cuando quiero “routear” la eth0 -que está conectada a internet y q deberia tomar la ip dinámicamente por DHCP- con:
route add default eth0
me aparece un mensaje que dice “device not found”
a pesar de que la tarjeta esta instalada, y si hago
ifconfig
aparece en el listado (junto con la eth1, que por otro lado si es reconocida)
tienes una idea de que puedo estar haciendo mal?
ante todo muchas gracias.
Hola! estuve leyendo el artículo y resultam muy interesante.
Lo que yo estoy intentando hacer es la forma inversa.
Te cuento, tengo el ordenador con Win XP en mi casa y es de uso familiar, para mi uso personal tengo la portátil con linux, entonces, tendría que poder compartir internet desde el Window$ hacia el linux.
Me podrias asistir a como hacer esto?
Muchisimas Gracias!
Damian.
Necesito su colaboracion, estoy comenzando a conocer el linux, ahora bien me han pedido configurar dos ISP de entrada en mi server con una sola red interna, de manera a tener una opcion en caso de que el servicio de conectividad de internet de un ISP no funcione. Agradeceria mucho sus comentarios
Hola, alguien me puede decir, en donde queda el o los archivos de configuracion del Firestarter, asi como un .conf o algo asi…,
chido.. muy facil y util si tienes una conecion en mexico x prodigy puedes agregar los dns 200.52.12.131 y 200.52.12.132
/etc/resolv.conf como comentas arriba. gracias.
es interesante la buena musica de blogmusik
blogmusik es una buena opcion en musica la escuchas muy bien y es excelente
@dubi: Algo tarde pero te comento que utilizando en un pc viejo pfSense (un freebsd dedicado para estas cosas fácil de usar y poderoso) haces eso en dos tiros, se instala, arranca y luego de eso lo accesas por una interfaz web, tal cual un router de esos comerciales, en este tengo el balanceador de carga entre los 2 ISP, aunque por limitaciones actuales del pfsense los modems de los 2 isp están detrás de un router cada uno, eso o configuras los modems para que funcionen como routers porque se necesitan direcciones de gateway estaticas y la solución es fácilmente escalable además del montón de funciones que le puedes agregar :D
He leido el articulo. Mas o menos, orienta en el dificil proceso de conectar un windows via Lan a un Linux server. Si embargo, despues de practicar lo que aqui se indica, yo le he intentado en Debian sarge, y no ha funcionado.
Yo tengo un Linksys wrt50g, y dos Pc. El Linux lo tengo conectado al Linksys por una eth1, y el Pc Windows a la eth2. Linksys con 10.0.0.22, mientras que Windows con 192.168.1.100, y solo navega Linux, desde windows no lo consigo, incluso despues de haber intantado compartir una carpeta, que veo Samba Linux, cuando deseo entrar y es escribir uan contraseña no me deja, y tampoco me deja escribir o abrir documento, asi que no se que estare haciendo mal. En windos me defiendo bien, pero en Linux estoy desde hace tiempo aprendiendo. Asi que me iri bien un tutorial (Muy sencillo, para tontos) que me explique como hacer estas dos simples cosas.
Gracias
no recuerdo bien, donde lo oi o lei o vi:
las cosas comienzan a existir cuando pensamos en ellas. Ejercicio: Piensa en alguien cercano que no hayas vistos por varios dias. simplemente piensa en esa persona. ?cuanto tiempo pasa hasta saber de ella?
quiero que me expliquen paso a paso como configuro el acceso a internet via LAN en LINUX por favor
hola… buen dia.. me gusto y me parece bien.. pero yo necesito ayuda… tengo kubuntu 7 y lo instale en una red donde todos son win… pero lo k quiero es poner a linux como servidor… hay una carpeta de archivos k tengo k compartir para k las demas se conecten como unidades de red.. k son aplicacion y la bases de datos… samba se instalo de manera utomatica en kubuntu pero a la hora de compartir me dice k falta instalacion nfs y otro k no recuerdo… yo puedo visualizar perfectamente toda la red.. y otra cosa es como le agrego al grupo de red… espero podeis ayudarme.. mandarme algun correo.. gracias por su ayuda… salu2
Con Fedora 8 no logré dar servicio de internet a una red 3 usuarios de windows. ¿Falta alguna instrucción para este Sistema?
[...] entiende. Yo logr? darle internet a uno de los dos, al PC2 siguiendo los pasos de este tutorial : Compartiendo tu conexión a Internet con Linux | bootlog Se podr?a decir que "dupliqu?" los pasos, haciendolos para una y otra interfaz ethernet. [...]
Super, me funcionó de maravillas, gracias gente linda de linux
buenas . soy nuevo con esto de linux y kisiera saber como pasar internet de un pc con xp a uno con ubuntu via cable de red , he leido muchos articulos y en ninguno he visto lo ke necesito , ai alguien puede ayudarme le estaria muy agradecido .
hola a todos, gracias por el aporte. solo tengo un problema para hacer que funcione en mi red, en mi caso no recibo el internet por una NIC sino por un modem con una conexion usb (pppO), probe pero en la linea de comando me da una traba “$ sudo pppO “1” >/proc/sys/net/ipv4/ip_forward” dice: bash: pppO: orden no encontrada. favor si alguno sabe como solucionar mi peq problema favor ayudarme. gracias y larga vida al pinguino tux.