Thinking on hiring me?

Please read

Fernando Guillén

a Freelance Web Developer

cabecera decorativa

software development as an artistic expression

Archive for the ‘gentoo’ Category

Jueves, Septiembre 18th, 2008

Port Forwarding: accediendo a las máquinas de una intranet desde una sóla máquina pública.

Las redes de los clientes son celosas y normalmente sólo se puede acceder a las máquinas de su red desde dentro de la red misma. Lo que viene a llamarse una intranet.

Pero muchas de mis tareas de mantenimiento requieren acceso a varias máquinas de una intranet y desplazarme al cliente no lo veo una opción factible ni acorde con nuestros tiempos.

Una de las soluciones que más me ha gustado es pedirle al cliente un sólo acceso, una sola máquina con IP pública.

Para dar seguridad se puede configurar para que sólo se pueda acceder desde la IP estática de tu oficina, y, para ofrecer flexibilidad, que también se pueda acceder desde la IP estática de tu servidor en un datacenter. Pero bueno todo este párrafo te lo puedes saltar si no hay mucho inconveniente con la seguridad.

La máquina con la IP pública mola que sea linux, más que nada porque si no lo es ya no hace falta que sigas leyendo pues el resto del artículo sobreentiende esta premisa.

Lo que vamos a hacer es lo que se ve en la ilustración.

port forwarding

Aquí me ves a mí con más pelo y sin barba deseando acceder a todos los servicios de las máquinas de la intranet 10.10.10.* y sin embargo sólo pudiendo acceder a la máquina con la IP pública 205.205.205.205.

Lo que necesito tiene un nombre y este es Port Forwarding, y la implementación de esto más sencilla que he visto se hace mediante IP Tables.

Va a ser más rápido escribir los comandos que hay que ejecutar para que esto funcione que toda la charla previa que te he contado.

Mi máquina con acceso público tiene la distribución de linux Gentoo así que los ejemplos son para esta distro pero no deberían variar mucho para otras distros.

Instalamos iptables (si no está ya)

# emerge iptables

Le decimos al kernel que permita ip-forwarding

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

Flasheamos toda la configuración de iptables que haya por defecto

# iptables -F
# iptables -t nat -F

Permitimos el forward desde iptables (eth0 es la interface pública)

# iptables -A FORWARD -i eth0 -j ACCEPT
# iptables -A FORWARD -o eth0 -j ACCEPT

Esto hace que las ips se enmascaren para no liar a los routes y saltarse posibles filtros de seguridad por IP

# iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

Y aquí por fín las reglas del Port Forwarding

# iptables -t nat -A PREROUTING -p tcp -i eth0 --dport 213306 -j DNAT --to-destination 10.10.10.21:3306
# iptables -t nat -A PREROUTING -p tcp -i eth0 --dport 2180 -j DNAT --to-destination 10.10.10.21:80
# iptables -t nat -A PREROUTING -p tcp -i eth0 --dport 2280 -j DNAT --to-destination 10.10.10.22:80
# iptables -t nat -A PREROUTING -p tcp -i eth0 --dport 2221 -j DNAT --to-destination 10.10.10.22:21
# iptables -t nat -A PREROUTING -p tcp -i eth0 --dport 2322 -j DNAT --to-destination 10.10.10.23:22

Guardamos la configuración de iptables actual para que no haya que reescribirla al reiniciar

# /etc/init.d/iptables save

Ponemos el servicio de iptables para que arranque al inicio

# rc-update add iptables default

Creo que esto también hay que hacerlo

# vim /etc/sysctl.conf

Añadir/descomentar las siguientes líneas:

net.ipv4.ip_forward = 1
net.ipv4.conf.default.rp_filter = 1

Y ya debería funcionar. Si me voy a mi máquina en mi oficina y accedo a:

$ mysql -h205.205.205.205 -P 213306

Me encontraré con la mysql de la máquina 10.10.10.21.

Si accedo con un navegador a:

http://205.205.205.205:2280

Me encuentro con el Apache de la máquina 10.10.10.22.

Si no te funciona revisa la linkografía:

Martes, Enero 15th, 2008

Me paso a Ubuntu

(Hace tiempo que debería haber escrito este post pero no me he animado hasta ahora).

He notado un pequeño click en la cabeza. Siempre me ha gustado cacharrear, conocer el porqué de las cosas, por eso me he enamorado de Linux, también me gusta que las cosas funcionen y que funcionen bien, Linux es una excelente tecnología para servidores pero montarte un desktop siempre ha sido un suplicio y nunca he conseguido un escritorio robusto, compacto, con todos los componente integrados.

Al principio mi inquietud por cacharrear consolaba mi frustración por lo costoso que era hacer que el escritorio funcionara. Luego empecé a desesperarme: necesitaba más que nunca que las cosas funcionasen a la primera, que el ordenador se convirtiera en mi herramienta no en mi objetivo.

En ningún momento pensé en volver a Windows, no adelantaba nada: perdía el control sobre el sistema y no había garantías de que el escritorio funcionase, por lo menos más allá del primer mes post-instalación.

Ahora he conocido Ubuntu y todo funciona, se instala en un plis, me lo detecta todo, las herramientas se comunican entre ellas, las impresoras aparecen por arte de magia, los plugins se los come como caramelos y el sistema de paquetes es endiabladamente sencillo.

Echaré de menos alguna vez mi querido Gentoo, pero no creo que vuelva.

a Freelance Web Developer is proudly powered by WordPress
Entries (RSS) and Comments (RSS).

Creative Commons License
Fernando Guillen's blog by Fernando Guillen is licensed under a Creative Commons Attribution-NoDerivs 3.0 Unported License.