Blog de Daniel Zegarra Rotating Header Image

network

Proxy Web sobre SSH (2da parte)

Parametros de configuracion avanzados de Firefox

Hace unos dias publique un minituto para usar una conexion ssh cualquiera para salir por ella a internet. Lo que no explique en ese post es que hacer cuando el proxy que nos bloquea el acceso libre a internet tambien funciona como un servidor DNS.

Advertencia: Yo supongo que vienes de leer el post Proxy Web sobre SSH. Si tienes dudas sobre algun paso lee este post anterior. No empieces a hacer cambios en tu maquina si no sabes lo que estas haciendo.

Si el computador que usamos utiliza el servidor proxy como servidor DNS entonces es probable que sigamos sin poder navegar libremente ya que si bien los paquetes de datos estan viajando a traves de nuestro tunel encriptado, la resolucion de nombres de dominio (lo que permite convertir www.google.com en 66.102.7.99) sigue realizandose como antes.

Para probar si tenemos salida a internet enganando al proxy podemos hacer lo siguiente:

  1. Buscate una pagina que no puedas entrar, por ejemplo: www.youtube.com o www.facebook.com.
    Usando el terminal de putty hazle un ping a esta direccion para obtener el IP resultante.

    ping www.youtube.com -c 1

    Haciendo un ping a www.google.com

    Nota: Utilizo el argumento -c 1 para realizar un solo intento. El comando ping de linux no tiene limite de intentos por defecto. Si no le pones un limite o lo detienes manualmente no parara hasta cerrarse la sesion.

  2. Apunta y escribe el IP en tu navegador y presiona <Enter>. Si se abre la pagina prohibida significa que solo necesitas usar tu tunel SSH para resolver nombres de dominio. Sigue leyendo para aprender como hacerlo.

Resolver nombres de dominio usando un servidor remoto

Esto es un poco complicado puesto que, como es de esperarse, el servidor proxy este acompanado a su vez de un cortafuegos y este no permite hacer solicitudes de DNS hacia fuera. Y si no utilizas un proxy transparente (osea que debes configurar manualmente la direccion del proxy en Opciones de Internet) Windows no te permitira configurar un proxy a travez de otro proxy.

La solucion mas simple es instalar y usar Firefox.

Mozilla Firefox tiene una opcion que te permite resolver DNSs a travez del proxy que este configurado. Para actvarla sigue estos pasos:

  1. Escribe about:config en la barra de direcciones y presiona <Enter>.
  2. Veras una advertencia de Firefox informandote que puedes joder el browser si te pones a jugar en esta area. Si te riges al tuto no pasara nada, solo no toques lo que no entiendas. Presiona en el unico boton de la advertencia y a continuacion el editor de parametros.
  3. Escribe network.proxy.socks_remote_dns en el filtro para ubicar el parametro que debemos modifcar.

    Parametros de configuracion avanzados de Firefox

    Parametros de configuracion avanzados de Firefox

  4. Como se trata de un parametro de tipo booleano, has doble clic sobre el para alternar entre TRUE o FALSE. Por defecto es FALSE y por lo tanto resuelve nombres usando el gateway configurado en Windows. Si es TRUE, enviara toda peticion de resolucion de nombres por el proxy configurado.

Esta configuracion solo afectara a Firefox. Todas las demas aplicaciones seguiran resolviendo nombres de forma local.

Si deseas restaurar este cambio, realiza los mismos pasos y devuelve el estado FALSE al parametro para dejarlo como estaba al inicio.

Configurando un gateway de red con Ubuntu

Ya había explicado lo simple que era compartir nuestra conexión a internet con Windows, ahora explicare como hacerlo con Ubuntu.

Para lograrlo necesitamos dos cosas:

  • Instalar y configurar el servicio dhcp. Para entregarle la configuración a los demás equipos de la red.
  • Configurar las iptables del equipo con conexión a internet para que funcione como gateway.
  • Definir la configuración de red del servidor gateway.

El servicio dhcp

Para instalarlo abres el terminal y escribes:

sudo apt-get install dhcp3-server

Ahora, debes decirle al servidor dhcp en que dispositivo de red debe trabajar. Si no sabes cual elegir el comando ifconfig te dará un listado de todos los dispositivos de red instalados. Asegurate de identificar el que necesitas.Los que inician con eth# son las tarjetas de red por cable y los wlan# las tarjetas inalámbricas. Los ppp# suelen ser dispositivos modem.

Una vez que lo tengas identificado abre y edita el archivo /etc/default/dhcp3-server con el siguiente comando:

sudo gedit /etc/default/dhcp3-server

En este ejemplo estoy usando gedit como editor de textos. Puedes usar otro como nano o vi si no cuentas con un entorno grafico.

Cambia eth0 por el que necesites, por ejemplo:

INTERFACES="wlan0"

Luego, abres y editas el archivo /etc/dhcp3/dhcpd.conf de la misma manera que el fichero anterior. Reemplaza el contenido del archivo con el siguiente texto:

default-lease-time 600;
max-lease-time 7200;
option subnet-mask 255.255.255.0;
option broadcast-address 192.168.0.255;
option routers 192.168.0.1;

#DNS's de tu proveedor de internet
option domain-name-servers 213.158.199.1, 213.158.199.5;

subnet 192.168.0.0 netmask 255.255.255.0 {
    range 192.168.0.150 192.168.0.200;
}

En este ejemplo se define una red de clase C (192.168.###.###) y se darán IPs del 192.168.0.150 al 192.168.0.200. En option domain-name-servers se definen los servidores DNS’s. Debes reemplazarlos con los que tu proveedor de internet te asigna. Pueden encontrarlos en el fichero /etc/resolv.conf.

Para probarlo, ejecuta el siguiente comando para detener el servicio (si ya estuviera ejecutándose) y volverlo a iniciar:

sudo /etc/init.d/dhcp3-server restart

Nota: Debes asegurarte que el dispositivo de red donde dhcp3-server va ha trabajar esta conectado a la red. De lo contrario el servicio podría no iniciar.

Configurar los iptables

Abre el fichero /etc/sysctl.conf y retira el comentario de la siguiente linea:

net.ipv4.ip_forward=1

Nota: Las lineas comentadas llevan el signo # para ser ignoradas por el sistema.

Luego ejecuta el siguiente comando para aplicar los cambios efectuados:

sudo sysctl -p

Ahora, el siguiente comando configurara las iptables para que enmascaren los paquetes recibidos desde la nat hasta el dispositivo ppp0. Reemplaza ppp0 por el dispositivo de red que configuraste con el servicio dhcp:

sudo iptables -t nat -A POSTROUTING -s 192.168.0.0/16 -o ppp0 -j MASQUERADE

Si deseas que el gateway este disponible en cada inicio del sistema agrega al fichero /etc/rc.local el ultimo comando ignorando el “sudo” inicial para que quede de la siguiente manera:

iptables -t nat -A POSTROUTING -s 192.168.0.0/16 -o ppp0 -j MASQUERADE
exit 0

Configurando manualmente nuestra conexión a la red local

Si cuentas con un entorno gráfico lo puedes hacer usando el administrador de redes que tiene Ubuntu. De lo contrario, debes configurar tu red desde la consola. Para ello abre el fichero /etc/network/interfaces.

El paso siguiente depende si esta ya configurado el dispositivo de red y como lo esta. Reemplaza los #### con el nombre del dispositivo conectado a la red local (el mismo al que el servicio dhcp esta sirviendo).

Si encuentras la linea iface #### inet dhcp elimínala.

Si encuentras la linea iface #### inet static suprimes desde esta linea hasta antes de empezar el siguiente iface... o hasta el final del archivo.

Una vez que ya no este definida una configuración para este dispositivo de red escribir lo siguiente:

iface #### inet static
address 192.168.0.1
netmask 255.255.255.0
gateway 192.168.0.1

Guardar el archivo y corres el siguiente comando para aplicar la nueva configuración a los dispositivos de red:

sudo /etc/init.d/networking restart

Con esto ya tienes tu gateway y servidor dhcp configurado y funcionando.