Proxy server con marcado bajo demanda


Proxy Server con marcado bajo demanda
Fernando Carrasco Castrillón
 

Copyright (c) 2.003 Fernando Carrasco Castrillón

 

Permission is granted to copy, distribute and/or modify this document
under the terms of the GNU Free Documentation License, Version 1.2
or any later version published by the Free Software Foundation;
with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts.
A copy of the license is included in the section entitled “GNU
Free Documentation License”.

 

Introducción

Preliminares

A lo largo de todo el artículo, el autor parte de las siguientes suposiciones:

  • Se va a trabajar con una distribución SuSE 7.0, aunque probablemente haya muy pocas diferencias con otras distribuciones.
  • Se asume que el kernel es de la familia 2.2.x, concretamente un 2.2.16.
  • Se asume que la conexión a Internet es vía modem analógico y que es la conocida conexión gratuita con el ISP Trovator, válida para todo el territorio español.
  • Los números de teléfono, nombres de usuarios, contraseñas y direcciones IP correspondientes al acceso a Internet son auténticos y se distribuyen públicamente por el anteriormente citado ISP desde su página Web.
  • Se asume que se dispone de dos ordenadores en una red privada de dirección 192.168.30.0 y que verifican:
    • Un ordenador tiene una tarjeta de red Ethernet con dirección IP 192.168.30.1, un modem USRobotics 56K conectado al COM1 (ttyS0) y corre bajo SuSE 7.0.
    • El otro ordenador tiene una tarjeta de red Ethernet con dirección IP 192.168.30.2 y corre bajo MS Windows Professional SP2.

Compilación del Kernel

Hay que comprobar que se tiene un kernel con las siguientes opciones activadas:

  • Soporte SLIP
  • Soporte PPP
  • Prompt for development and/or incomplete code drivers
  • Enable loadable module support
  • Networking support
  • Sysctl support
  • Packet socket
  • Kernel/user netlink socket
  • Desactivar Routing messages
  • Network firewalls
  • Socket filtering
  • UNIX domain sockets
  • TCP/IP networking
  • IP: advanced router
  • Desactivar IP: policy routing
  • Desactivar IP: equal cost multipath
  • Desactivar IP: use TOS value as routing key
  • IP: verbose route monitoring
  • Desactivar IP: large routing tables
  • Desactivar IP: kernel level autoconfiguration
  • IP: firewalling
  • Desactivar IP: transparent proxy support
  • IP: masquerading
  • IP: ICMP masquerading
  • IP: masquerading special modules support
  • Desactivar IP: ipautofw masq support
  • IP: ipportfw masq support
  • Desactivar IP: tunneling
  • Desactivar IP: GRE tunnels over IP
  • IP: TCP SYN cookie support
  • IP: allow large windows
  • IP always defragment
  • Network device support
  • IP: optimize as router not host
  • Dummy net driver support
  • /proc filesystem support

Marcado bajo demanda

El control de la conexión en sí, lo realizan dos herramientas:

  • chat, que se encarga físicamente de comunicarse con el modem.
  • pppd, que se entiende con el kernel.

Ahora, se debe crear un archivo llamado ip-up.ppp en el directorio /etc/ppp, al que posteriormente se le cambiará la máscara de permisos a 755 y cuyo contenido es el siguiente:

#!/bin/bash

/usr/sbin/pppd file /etc/ppp/internet.ppp ttyS0 57600 -d

Con esta línea se realiza la conexión a Internet y se supone que el modem se encuentra conectado al ttyS0 (COM1) con dicho puerto configurado (a través de YaST, en SuSE). Como puede verse, desde este fichero se hace una llamada al archivo /etc/ppp/internet.ppp, cuyo contenido es el siguiente:

connect /etc/ppp/infovia.chat

modem

defaultroute

noipdefault # activa el DHCP client

ipcp-accept-local

ipcp-accept-remote

lock

usepeerdns

user lo_que_sea@trovator.com # Formato < username>@< proveedorISP>

password lo_que_sea

remotename infovia

demand

holdoff 60

idle 120

Las tres últimas líneas son necesarias únicamente en el caso de que se quiera configurar, no sólo un acceso a Internet, sino que la máquina conectada a Internet actúe como Proxy. Estas líneas permiten, respectivamente, activar un marcado bajo demanda (para que cualquier máquina de la red que desee conectarse a Internet le haga la petición al Proxy, y si éste no está conectado a Internet, que marque el teléfono y lo haga), que espere hasta 1 minuto para obtener conexión y por último que cuando el enlace no haya sido usado durante 2 minutos, que se cuelgue el teléfono automáticamente. El marcado bajo demanda funciona muy bien con pppd 2.3 ó superior.

Asimismo, puede verse que el fichero /etc/ppp/internet.ppp, hace referencia al /etc/ppp/infovia.chat, cuya máscara de permisos debe ser 755 y cuyo contenido es el siguiente:

#!/bin/bash

/usr/sbin/chat “” “ATZ” “OK\r” “\p\Patdp908274230” “CONNECT”

El primer parámetro de chat indica que da igual la señal con la que conteste el modem.

Para poder colgar el teléfono, se debe tener un script de desconexión (/etc/ppp/ip-down.ppp), con máscara de permisos 755 y cuyo contenido sea el siguiente:

#!/bin/bash

killall pppd

Una vez configurado todo el acceso telefónico y el marcado y desconexión bajo demanda, sólo resta activar el IP Masquerading, si es que se desea que la máquina que tenga conectado el modem actúe como Proxy.

Configuración del cliente DNS

Para que todo esto funcione bien se debe tener en el archivo /etc/resolv.conf una línea como la que sigue:

nameserver 212.85.32.4 # Dirección IP del DNS

Por último, hay que tener mucho cuidado con el archivo /etc/host.conf, que debe incluir la línea:

order hosts, bind

…muy importante, ya que si no está, el DNS especificado en /etc/resolv.conf no resolverá.

Configuración del IP Masquerading

Por último, hay que configurar las reglas para el firewall ipchains que activen el IP masquerading. Estas reglas se van a configurar dentro de un archivo /etc/ppp/rc.firewall, al que habrá que dar una máscara de permisos 700. Su contenido es el siguiente:

#!/bin/bash

# Carga todos los módulos pendientes

/sbin/depmod -a

# Masquerading de FTP

/sbin/modprobe ip_masq_ftp

# Habilita IP Forwarding

echo “1” > /proc/sys/net/ipv4/ip_forward

# Habilita desfragmentado automático

echo “1” > /proc/sys/net/ipv4/ip_always_defrag

# Si se captura la IP por DHCP

echo “1” > /proc/sys/net/ipv4/ip_dynaddr

# Masquerading timeouts

/sbin/ipchains -M -S 7200 10 160

# Habilita IP Forwarding y masquerading

/sbin/ipchains -P forward DENY

# Esta regla habilitaría el acceso a toda la red 192.168.30.0

#/sbin/ipchains -A forward -s 192.168.30.0/24 -j MASQ

# Estas reglas habilitan el acceso a dos máquinas concretas:

/sbin/ipchains -A forward -s 192.168.30.1/32 -j MASQ

/sbin/ipchains -A forward -s 192.168.30.2/32 -j MASQ

Clientes para el Proxy

Para finalizar la configuración, hace falta indicar, en las máquinas cliente, cómo debe configurarse la pila TCP/IP. En cada máquina perteneciente a la red interna, se deben realizar las siguientes tareas:

  • La IP de la máquina debe ser privada, y en el rango indicado en las reglas para el firewall anteriormente expuestas.
  • El DNS primario debe ser la IP del DNS del proveedor de Internet.
  • El gateway por defecto debe ser la IP privada correspondiente a la máquina que tenga conectado el modem.
  • Si el navegador a utilizar es Netscape, configurar el Proxy como acceso directo a Internet.
  • Si el navegador a utilizar es MS Internet Explorer, hacer que el Proxy sea el indicado por el proveedor de Internet (proxy.trovator.com:8080).

Final

Cuando se complete la conexión desde cualquier máquina cliente, se podrá comprobar, mediante la ejecución de ifconfig, que habrá aparecido un nuevo interface (ppp0) en la máquina que tiene conectado el modem, con una
dirección IP válida suministrada por el ISP.

Cualquier duda al respecto de lo aquí expuesto será atendida por el autor en la dirección de correo arriba indicada.