Compartir internet entre dos máquinas.

2008 Julio 12
by Overclock_Orange

Bien, en este post, intentare explicar una forma rapida y sencilla de compartir Internet entre dos PC’s (ambas con GNU Linux). Nuestro esquema de red es el siguiente: tenemos 2 PC’s, una (PC #1) con dos placas de red ethernet (eth0 y eth1), y otra (PC #2) con una sola placa de red ethernet (eth0), un modem-router ADSL (actuando como router) con iface eth0.

Bien ¿es bastante sencillo verdad?, dos maquinas conectadas por cable UTP, entre ellas y el router conectado por UTP a una de las maquinas (PC #1) que actuara como servidor.
Lo primero que haremos es configurar los DNS (suponiendo que PC #1 se encuentra andando y conectada), los configuramos en PC #2, para ello con Vim o cualquier otro editor de textos, abrimos el archivo /etc/resolv.conf.

#:vim /etc/resolv.conf

Y agregamos los DNS del ISP que tengamos contratado (o los que usemos), en mi caso Speedy, para ello agregue lo siguiente:

nameserver 200.51.211.7
nameserver 200.51.212.7

Guardamos, y vamos a seguir configunrando el IP de las placas de red.
El esquema es el siguiente:

Router ADSL:
eth0: 192.168.1.1 Subnet: 255.255.255.0

PC #1:
eth0: 192.168.1.2 Subnet: 255.255.255.0
Gateway: 192.168.1.1
eth1: 192.168.2.1 Subnet: 255.255.255.0

PC #2:
eth0: 192.168.2.2 Subnet: 255.255.255.0
Gateway: 192.168.1.1

Para ello, en el PC server, debemos configurar eth1 (ya que eth0 ya se encuentra funcionado), asi que hacemos:

#: ifconfig eth1 up
#: ifconfig eth1 192.168.2.1/24
#: route add default gw 192.168.1.1

Bien ahora, pasamos a las reglas de IP Tables, para que PC #1 haga el forwarding a PC #2, para ello, en la shell:

#: if [ -e /proc/sys/net/ipv4/ip_forward ]; then echo 1 > /proc/sys/net/ipv4/ip_forward; fi

Este condicional, en caso de que exista /proc/sys/net/ipv4/ip_forward, envia el flag 1 (true), para asi, activar el ip_forward del kernel.
Podemos simplificarlo y hacerlo asi (si ya sabemos que existe):

#: echo 1 > /proc/sys/net/ipv4/ip_forward

Ahora vamos a aceptar por IP Tables el forward, osea aplicamos la politica ACCEPT, para ello:

#: iptables -P FORWARD ACCEPT

Y introducimos estas dos reglas en la tabla nat:

#: iptables -t nat -P PREROUTING ACCEPT
#: iptables -t nat -P POSTROUTING ACCEPT
#: iptables -t nat -A POSTROUTING -j MASQUERADE

Ahora vamos a configurar la nic (placa de red) de PC #2, asi que simplemente, repetimos lo mismo que hicimos con la iface de PC #1:

#: ifconfig eth0 up
#: ifconfig eth0 192.168.2.2/24

Listo a esta altura si hacemos un ping desde PC #2 a Google, deberia salirnos:

#: ping www.google.com
PING www.l.google.com (64.233.161.103) 56(84) bytes of data.
64 bytes from od-in-f103.google.com (64.233.161.103): icmp_seq=1 ttl=237 time=245 ms
64 bytes from od-in-f103.google.com (64.233.161.103): icmp_seq=2 ttl=236 time=241 ms
64 bytes from od-in-f103.google.com (64.233.161.103): icmp_seq=3 ttl=236 time=240 ms

Por lo cual ambas máquinas comparten Internet.
Cabe destacar que es importantisimo que el Router ADSL tenga NAT activado, para poder realizar el enmascaramiento de los paquetes.
También es importante que el cable UTP que utilizen para conectar eth1 de PC #1 con eth0 de PC #2 sea un pathcord cruzado, ya que no hay ningun cocentrador (router o switch), para poder hacer el cruzamiento. Aunque cabe destacar que hay algunas placas de red, que soportan pathcord derechos para conexiones PC a PC.

2 comentarios dejar un →
  1. 2008 Agosto 24

    vee… y que yo uso el forwarding solo para hacer ataques MiM :P .. Ahora ya le tengo otro uso :)

  2. 2009 Marzo 25

    Hola. Esto sirve para FreeBSD?

    Estoy buscabdo hacer precisamente esto en FreeBSD. ¿podrias publicar uno igual para FreeBSD pero sencillito por favor?.

    Muchas gracias.

Escribe un comentario

Nota: Puede usar XHTML básico en sus comentarios. Su dirección de correo electrónico nunca será publicada.

Subscripción al comentario vía RSS