jueves, septiembre 22, 2005

CONECTAR FREEBSD VIA DSL DE TELMEX

Bueno este articulo lo baje de otro sitio Freebsd mexico.ahi les va...........

Conexión DSL de Telmex en FreeBSD
Alejandro Acosta
acosta@freebsd.org.mx

2002/06/22



CONEXION DSL DE TELMEX CON FREEBSD
1. Introducción
Ahora que Teléfonos de México ha liberado su servicio de conexión de banda ancha para usuarios caseros y corporativos vía DSL se puede tener acceso permanente a la red mediante una computadora que cumpla las funciones de servidor de enlace, y que mejor plataforma para manejar el trafico de la red que FreeBSD con todas las bondades que nos ofrece. Este documento se enfocará a la conexión mas típica, que es brindada por modem con autoasignación de la dirección ip al momento de marcado.


--------------------------------------------------------------------------------

2. Requerimientos
Se espera contar con lo siguiente:

El modem ADSL debe ser para conexión ethernet, no USB.

Una tarjeta de red compatible

Los datos de la conexión: usr,pass, DNS


--------------------------------------------------------------------------------

3. Creación de un nuevo kernel
Para empezar necesitamos agregar algunas opciones al kernel y recompilarlo para tener soporte PPPoE en nuestro equipo. Primero realizamos una copia del kernel genérico a un archivo y lo editamos para agregarle las opciones necesarias.

demonios# cd /sys/i386/conf
demonios# cp GENERIC DSL
demonios# ee DSL

Y agregamos las opciones:

options NETGRAPH

options NETGRAPH_PPPOE

options NETGRAPH_SOCKET

options NETGRAPH_ETHER

Despues de salvar el archivo podemos continuar con el proceso de construcción del kernel:

demonios# config DSL
demonios# cd ../../compile/DSL
demonios# make depend
demonios# make
demonios# make install

El proceso de compilación dependerá de la rapidez del equipo en cuestión.


--------------------------------------------------------------------------------

4. Configuración de los archivos de conexión
Ahora que ya tenemos soporte para PPPoE en el kernel solo nos falta realizar algunos cambios en los archivos de enlace PPP para conectarnos:

demonios# cd /etc/ppp
demonios# ee ppp.conf

El archivo ppp.conf debe contener algo como esto:

#################################################################
# Archivo de enlace PPP
#
# Vea /usr/share/examples/ppp/ para algunos ejemplos
#
# $FreeBSD: src/etc/ppp/ppp.conf,v 1.2.2.5 2001/07/13 10:55:23 brian Exp $
#################################################################

default:
set log CBCP Phase Chat LCP IPCP CCP tun command
ident user-ppp VERSION (built COMPILATIONDATE)

# En este caso estamos utilizando una tarjeta 3com pci
set device PPPoE:xl0:infinitum

set speed sync
set mru 1492
set mtu 1492
set ctsrts off
enable lqr
add default HISADDR
set timeout 0
set redial 0 0

#Habilitar dns en resolv.conf
enable dns

infinitum:
#
# Cambie las claves por las suyas

set authname mi-usuario
set authkey mi-clave

#Fin de archivo

Guarde el archivo y pasemos a modificar /etc/rc.conf que debe incluir lo siguiente

network_interfaces="lo0 xl0"
ifconfig_xl0="media 10baseT/UTP up" # cambie xl0 por su id de interfaz de red
ppp_enable="YES"
ppp_mode="ddial"
ppp_profile="infinitum"

Si se desea que la máquina brinde servicios de NAT debe agregar las directivas:

ppp_nat="YES"
gateway_enable="YES"

Ahora edite el archivo /etc/resolv.conf y agregue las direcciones de DNS que le corresponden, o mejor aún puede crear un DNS de solo cacheo para el equipo.

Salve el archivo y reinicie el equipo, el enlace se realizará automaticamente al iniciar.


--------------------------------------------------------------------------------

5. Conclusiones
Como se puede apreciar, realizar una conexión DSL es bastante rápido y fácil, además el sistema nos da la oportunidad de brindar salida a otros equipos. Aunque las conexiones de tipo DSL son usadas en su mayoría por usuarios caseros, si la suya es una conexión de tipo empresarial puede tener en el mismo equipo otros servicios para la red interna. Les invito a que lean el handbook y las páginas del manual en línea del sistema para mejorar la seguridad, ahora que están conectados en forma permanente es tiempo de pensar un poco más en la seguridad. Dudas, comentarios y sugerencias:


autor: alejandro acosta

Publica: Frankiller

lunes, septiembre 12, 2005

PROXY-SQUID EN FREEBSD 5.2 Release



Bueno para mi camarada anibal lo prometido es deuda...Hace poco entre mis intentos de poder montar un servidor proxy lo logre...Lo publico con el fin de que se interesen en el tema, y por que hay personas que publican informacion y si no por ellas no lo hubiese logrado. La informacion para que yo montara el proxy-squid la encontre en sitio de freebsd en mexico.




Antes de meter las manos a la candela vamos a revisar algunos detalles para la instalación.

Cuantos Megabytes de trasferencia esperamos tener hacia el cache? Cuantos usuarios estarán conectados concurrentemente? Cuanto tiempo estarán disponibles los objetos en el cache?


Vamos a crear un escenario en donde contamos con una red de 50 usuarios con una conexión dedicada a 512 k/s, de estos 50 usuarios 10 no tienen acceso a internet, 20 son navegantes moderados y bajan un promedio de 5 Mbytes, 15 son navegantes promedio con 10 Mbytes y 5 son del tipo navegante obsesivo con 30 Mbytes al día, esto arroja 400 Mbytes de trasferencia al día.


Con 400 Mb guardándose en el disco, si tuviéramos 2 Gb de espacio de caché los objetos estarían 5 días en el cache antes de ser sobrescritos por los nuevos objetos que se vayan bajando, cuanto más grande sea el cache más tiempo podrán permanecer los objetos en el servidor aumentando con esto la posibilidad de incrementar los hits al cache. Pero un disco enorme no es por regla general mejor, un mayor rendimiento del cache se logra cuando se comparte entre varios discos, con esto mejoramos la tasa de trasferencia y las respuestas por segundo que podemos manejar simultáneamente. Por ejemplo con 3 discos con un tiempo de acceso (seek time)de X segundos con una tasa de 1000 peticiones por segundo tendría la posibilidad de soportar Z peticiones por segundo:


1000 peticiones/ (12 ms seek time)/(3 discos)=1000/4=250 peticiones/segundo



Y ahora pasemos la memoria, de esto solo hay una regla: siempre se puede usar más memoria RAM ¡, pero ya hablando un poco más en serio, Squid es un programa que hace uso activamente de la memoria del sistema, y las llamadas al swap se traducen en un alentamiento de las respuestas a las peticiones, esto se produce porque para manejar los objetos del cache se crean unos índices de acceso, cada objeto utiliza aproximadamente 75 bytes de memoria, si cada objeto utiliza aproximadamente 13 kb en el disco y tenemos asignado digamos 8 GB al caché, necesitaríamos 48 Mb de memoria RAM solo para los índices del cache, aparte de la que se necesita para los procesos del Sistema.


Con todo lo anterior ya podemos calcular los requerimientos de nuestro servicio de proxy a la medida de nuestra red, pero también hay que pensar un poco en el futuro, así que mientras más espacio de crecimiento le dejemos será mejor.
CONFIGURACION



Partiremos de una instalación básica del sistema, sin X-Windows, etc. Con una maquina configurada con 2 tarjetas de red. Lo primero que debemos hacer bajar los archivos del Squid e instalarlos, para eso solo nos tenemos que pasar al directorio de los ports y desde ahí realizar el proceso:



fbsd-mx-proxy# cd /usr/ports/www/squid24

fbsd-mx-proxy# make fetch



Ahora podemos editar el archivo de Makefile para incluir algunas opciones que nos pueden ser útiles:





CONFIGURE_ARGS= --bindir=${PREFIX}/sbin --sysconfdir=${PREFIX}/etc/squid
--localstatedir=${PREFIX}/squid
--enable-storeio="ufs diskd null"
--enable-removal-policies="lru heap"


#agregamos

--enable-delay-pools
--enable-snmp
--enable-ipf-transparent
--disable-ident-lookups
--enable-cache-digests


con esto logramos:

Activar el control de ancho de banda para usuarios
Activar la información de snmp del servidor proxy
La posibilidad de configurar el cache en modo transparente (se necesita ademas ipfilter instalado y configurado)
Desactivamos el código que realiza idents (RFC 931) para reducir la posibilidad de ataques de negación de servicio (DoS)
Activamos el método de compresión para los índices de contenido de los objetos de cache y con eso incrementamos un poco el tiempo de respuesta
Ahora solo compilamos normalmente:





fbsd-mx-proxy# make

fbsd-mx-proxy# make install



Y listo, ya tenemos el programa instalado, necesitamos crear un usuario squid con grupo de trabajo squid para ejecutar el proceso y cambiar los permisos del directorio de cache y de los logs a este usuario.



fbsd-mx-proxy# adduser

fbsd-mx-proxy# touch /usr/local/squid/logs/access.log

fbsd-mx-proxy# touch /usr/local/squid/logs/cache.log

fbsd-mx-proxy# touch /usr/local/squid/logs/store.log

fbsd-mx-proxy# chown –R squid:squid /usr/local/squid





Pasemos a editar el archivo principal de configuración del squid para especificar la ubicación de nuestro cache y el tamaño y los accesos de los usuarios:



fbsd-mx-proxy# ee /usr/local/etc/squid/squid.conf



http_port 3128 # default

cache_mem 64 MB # dependiendo del tamaño del cache

maximum_object_size 8192 KB # autoexplicatorio

cache_dir ufs /usr/local/squid/cache 8000 16 256 # cache de 8GB

cache_access_log /usr/local/squid/logs/access.log

cache_log /usr/local/squid/logs/cache.log

cache_store_log /usr/local/squid/logs/store.log

emulate_httpd_log on # para emular el formato de los logs de apache

#default

acl all src 0.0.0.0/0.0.0.0

acl manager proto cache_object

acl localhost src 127.0.0.1/255.255.255.255

acl SSL_ports port 443 563

acl Safe_ports port 80 # http

acl Safe_ports port 21 # ftp

acl Safe_ports port 443 563 # https, snews

acl Safe_ports port 70 # gopher

acl Safe_ports port 210 # wais

acl Safe_ports port 1025-65535 # unregistered ports

acl Safe_ports port 280 # http-mgmt

acl Safe_ports port 488 # gss-http

acl Safe_ports port 591 # filemaker

acl Safe_ports port 777 # multiling http

acl CONNECT method CONNECT

http_access allow all # activar la salida para todos los usuarios

cache_mgr acosta@freebsd.org.mx # administrador del cache

cache_effective_user squid # usuario:grupo para el proceso


cache_effective_group squid

La ubicación del cache puede ser en cualquier parte del filesystem siempre y cuando se tengan permisos de escritura para el usuario que ejecuta el proceso de Squid, y se pueden tener tantos caches como sea necesario:



cache_dir ufs /usr/local/squid/cache 8000 16 256

cache_dir ufs /squid/cache 8000 16 256

cache_dir ufs /disco3/proxy 17000 32 256






Lo que necesitamos por último es inicializar el directorio de cache para que esté listo a almacenar los objetos, esto puede tardar un poco dependiendo del tamaño del cache.



fbsd-mx-proxy# squid –z

2002/01/23 12:00:46| Creating Swap Directories



Ya está listo! Solo tenemos que levantarlo



fbsd-mx-proxy# squid



Podemos revisar el archivo de cache.log para asegurarnos que el proceso levantó correctamente, de ser así nos debe mostrar algo como esto:



fbsd-mx-proxy# more /usr/local/squid/logs/cache.log

2002/01/25 09:27:43| Starting Squid Cache version 2.4.STABLE3 for i386--freebsd4.3...

2002/01/25 09:27:43| Process ID 23362

2002/01/25 09:27:43| With 2088 file descriptors available

2002/01/25 09:27:43| Performing DNS Tests...

2002/01/25 09:27:43| Successful DNS name lookup tests...

2002/01/25 09:27:43| DNS Socket created on FD 4

2002/01/25 09:27:43| Adding nameserver 192.168.1.179 from /etc/resolv.conf

2002/01/25 09:27:43| Adding nameserver 192.168.1.145 from /etc/resolv.conf

2002/01/25 09:27:43| Unlinkd pipe opened on FD 9

2002/01/25 09:27:43| Swap maxSize 1024000 KB, estimated 78769 objects

2002/01/25 09:27:43| Target number of buckets: 3938

2002/01/25 09:27:43| Using 8192 Store buckets

2002/01/25 09:27:43| Max Mem size: 16384 KB

2002/01/25 09:27:43| Max Swap size: 1024000 KB

2002/01/25 09:27:43| Rebuilding storage in /usr/local/squid/cache (CLEAN)

2002/01/25 09:27:43| Using Least Load store dir selection

2002/01/25 09:27:43| Set Current Directory to /usr/local/squid/cache

2002/01/25 09:27:43| Loaded Icons.

2002/01/25 09:27:43| Accepting HTTP connections at 0.0.0.0, port 3128, FD 11.

2002/01/25 09:27:43| Accepting ICP messages at 0.0.0.0, port 3130, FD 12.

2002/01/25 09:27:43| Accepting SNMP messages on port 3401, FD 13.

2002/01/25 09:27:43| WCCP Disabled.

2002/01/25 09:27:43| Ready to serve requests.



Los clientes que quieran utilizar el servicio de proxy deben apuntarse a la dirección del servidor en el puerto 3128 para navegar.



Conexión en modo transparente

Y que si tenemos 200 maquinas y no queremos ponernos a configurar una por una? Bueno, para eso también hay mas de una forma de pelar un cochino, pero se necesita que la máquina donde estemos ejecutando el squid tenga levantado algún método de NAT, en cuyo caso solo necesitamos modificar un poco la configuración que ya tenemos para agregar algunas opciones necesarias en squid.conf:



httpd_accel_port 80 # para crear conexiones trasparentes

httpd_accel_host virtual

httpd_accel_with_proxy on

httpd_accel_uses_host_header on


En el archivo de configuración del servicio de NAT debemos agregar las reglas para que las peticiones dirigidas a tráfico web que lleguen las mande automáticamente al puerto donde está escuchando el squid, en lo personal prefiero usar ipfilter para NAT, así que en este caso el archivo a modificar es /etc/ipnat.rules:





rdr sis0 0.0.0.0/0 port 80 -> 127.0.0.1 port 3128 tcp

rdr sis0 0.0.0.0/0 port 443 -> 127.0.0.1 port 3128 tcp



Por supuesto hay que reiniciar los servicios de squid y de NAT para que la nueva configuración surta efecto:





fbsd-mx-proxy# squid –k shutdown

fbsd-mx-proxy# squid

fbsd-mx-proxy# ipnat –CFf /etc/ipnat.rules





Ahora ya no necesitamos configurar ningún cliente, todo el tráfico web que ocurra a través de nuestro servidor será instantáneamente redirigido a squid.


Squid es un excelente servidor proxy que puede ser utilizado en forma simple o de manera encadenada con otros servidores proxy para una mayor eficacia.

Este documento es autoria del Alejandro Acosta