August 26th, 2008 - Categorias: Optimización, Redes, Ubuntu | 0
Vote
Si disponemos de una linea baja y tenemos varios PC’s en nuestra LAN lo normal es que nos vaya lenta la navegación, en este punto, podemos instalar un proxy que nos cachee las paginas de tal manera que si un ordenador accede a una pagina web se guarde localmente de tal manera, que si se vuelve a cargar la pagina, no se baje de nuevo de Internet si no del disco duro local, de esta manera, aceleramos la carga de paginas.
Yo me he decidido pro squid ya que es el que mas he usado. Para instalar squid nos dirigimos a un terminal y tecleamos:
$ sudo aptitude install squid
Una vez instalado squid lo configuramos para que funcione como proxy cache en el archivo /etc/squid/squid.conf. Yo lo que he modificado es lo siguiente:
cache_mem 200 MB
cache_dir ufs /var/spool/squid 10000 16 256
cache_store_log none
cache_swap_low 80
cache_swap_high 100
cache_mem es la directiva que le dice al squid la cantidad de memoria RAM (en MB) a usar. Una manera de calcular dicha memoria según los autores es 1/3 de la memoria RAM total, en mi caso como tengo 2000MB le puse 200MB ya que me parece demasiado
.
cache_dir es la directiva que especifica la memoria (en MB) que tomara squid en disco como la estructura de la cache. Su sintaxis es: cache_dir type Directory-Name Mbytes L1 L2 [options].
cache_store_log nos permite almacenar los sucesos de los objetos cacheados o rechazados en disco, es conveniente deshabilitar para optimizar el proxy.
cache_swap_low y cache_swap_high indica el nivel en porcentaje de capacidad mínima aceptada por squid y el nivel máximo para mantener los objetos en cache.
Lo siguiente a configurar sera los permisos de las maquinas que podran usar el proxy, en mi caso voy a permitir usar el proxy a mi red local que trabaja en la red 10.10.10.0/24:
acl lan src 10.10.10.0/24
http_access allow lan
acl es la directiva de squid que significa en español “lista de control de accesos“, lan es un nombre cualquiera para crear la regla, lo siguiente sera la red que en mi caso es 10.10.10.0/24.
http_access es una directiva de squid que define el permiso de accesos al proxy puede ser allow (permitir) o deny (denegar) seguido de el nombre que asignemos, en mi caso lan.
Ahora según esta configurado el squid tendríamos que ir a cada PC de nuestra LAN y configurar el proxy colocando la IP de la maquina donde esta el proxy y el puerto (3128), pero puede ser algo engorroso si disponemos de muchas maquinas, tendríamos que ir pc a pc para configurar los clientes, la otra manera es hacerlo transparente a los clientes, para ellos, vamos a redireccionar las peticiones dirigidas a la web (que sera normalmente el puerto 80) al proxy squid (por defecto es 3128):
$ sudo iptables -t nat -A PREROUTING -i ath0 -p tcp –dport 80 -j REDIRECT –to-port 3128
ath0 es el interfaz que uso para comunicarme con los ordenadores de mi LAN, sustituir según convenga. Ahora, necesitamos editar el archivo squid.conf y añadir transparent a la directiva http_port quedando asi:
http_port 3128 transparent
Salvo los cambios y reinicio el servidor para que se carguen los nuevos valores:
$ sudo /etc/init.d/squid restart
Para comprobar que funciona podemos leer el archivo /var/log/squid/access.log que esta definido por defecto en el archivo squid.conf con la directiva access_log y ver los resultados de esta manera:
$ sudo tail -f /var/log/squid/access.log
Un saludo
August 20th, 2008 - Categorias: Ubuntu, scripts, varios | 0
Vote
Por fin he logrado hacer funcionar correctamente el buscador de google en el eggdrop, concretamente el modulo incith:google que me lo baje de http://www.egghelp.org .
incith:google es un script tcl que suelo usar en eggdrop para realizar búsquedas desde el IRC, el problema que tenia es que los resultados los sacaba sin quitar el formato, concretamente , parseaba mal en la cadena de búsqueda sacandome la etiqueta <em>. Por ejemplo, si buscaba OpenDNS me sacaba lo siguiente:
!google OpenDNS
<em>OpenDNS</em>, un servicio de DNS alternativo @ http://www.genbeta.com/2006/07/11-opendns-un-servicio-de-dns-alternativo [...]
Después de releer el código y probar diferentes opciones en el script tcl sin éxito, al final opte por meter un parse para quitar esas etiquetas tan molestas de la siguiente manera:
regsub -all "\<em\>" $desc "" desc
regsub -all "\</em\>" $desc "" desc
Luego, recargue la configuración para que el eggdrop lea los cambios desde una sesión telnet:
.rehash
El resultado ahora es el esperado:
!google OpenDNS
OpenDNS, un servicio de DNS alternativo @ http://www.genbeta.com/2006/07/11-opendns-un-servicio-de-dns-alternativo [...]
Un saludo
August 14th, 2008 - Categorias: Ubuntu, juegos, varios | 0
Vote

Bueno, hoy me aburría y decidí meter de nuevo el quake3 en Linux
(por que no), me lo baje de la red Bittorrent con Azureus.
La instalación fue simple, como me lo baje para Linux no tuve que meter el Point Release de Linux, lo que hice fue copiarlo a la carpeta /usr/local/games/quake3 el contenido ya que el script quake3 buscaba esa ruta:
$ sudo mkdir /usr/local/games/quake3
$ sudo cp -fp /path/quake3 /usr/local/games/quake3
$ sudo chown -R $USER:$USER /usr/local/games/quake3
Al intentar iniciar el script quake3 para empezar a jugar no me dejaba ya que no era ejecutable, entonces:
$ sudo chmod +x /usr/local/games/quake3/quake3*
El otro problema fue que no localizaba la librería libGL.so, por lo que hice un enlace simbólico:
$ sudo ln -s /usr/lib32/libGL.so.1 /usr/local/games/quake3/quake3/libGL.so
Ahora si, iniciaba pero no el sonido, por lo que hice fue lo siguiente:
$ sudo echo “quake3.x86 0 0 direct” > /proc/asound/card0/pcm0p/oss
$ sudo chmod o+rw /dev/dsp
El ultimo cambio no se guarda al reiniciar el ordenador, por lo que lo metí en /etc/rc.local para que se cargara de nuevo:
$ sudo -s
# sed -ie “s/exit 0//g” /etc/rc.local
# echo ‘echo “quake3.x86 0 0 direct” > /proc/asound/card0/pcm0p/oss’ >> /etc/rc.local
# echo “exit 0″ >> /etc/rc.local
Y con esto se acabo
, ahora a viciarse como en los viejos tiempos … Por cierto, si tenéis el Quake3 de Windows os vale para Linux, solo tenéis que crear la carpeta baseq3 y copiar los archivos de el cd/dvd a dicha carpeta y después instalar el parche “Point Release Linux”, lo demás ya sabéis …
Un saludo
July 28th, 2008 - Categorias: Redes, Ubuntu, software | 5
Vote
Ultimamente estoy teniendo problemas al conectar al servidor del MSN, me salia el siguiente error:

Comprobe si era por el firewall y no era así, mirando en las preferencias del amsn, me dio por conectar usando el protocolo HTTP ( por el puerto 80) y si, conecto:

La verdad, no entiendo por que pasa esto, pero ahora me conecta sin problemas.
Un saludo
July 15th, 2008 - Categorias: Redes, Trucos, Ubuntu, Wireless, scripts | 4
Vote

Por fin tengo mi AP (Access Point) corriendo en Linux después de dar mil vueltas por las tiendas ya que lo la encontraba, me compre una de http://www.ciudadwireless.com y al parecer estaba averiada, la tarjeta que uso ahora es una TP-LINK con chipset Atheros (AR5212/AR5213), explico lo que hice para crear un AP en Linux con WPA-PSK+ACL.
Primero, como uso Ubuntu Hardy 8.04 deshabilite el controlador privativo que tiene Ubuntu para que no me cargara el modulo:
$ gksudo jockey-gtk

Para compilar madwifi necesitamos las herramientas basicas de compilación y las fuentes del kernel, por lo tanto:
$ sudo aptitude install build-essential linux-headers-`uname -r`
Ahora, me bajo las fuentes de madwifi que serán los drivers para las tarjetas con chipset Atheros y el paquete HostAP que nos servirá para crear nuestro AP seguro bajo WPA:
$ wget http://snapshots.madwifi.org/madwifi-trunk-current.tar.gz
$ wget http://hostap.epitest.fi/releases/hostapd-0.4.7.tar.gz
lo siguiente es descomprimir ambos archivos en /usr/src y compile primero madwifi:
$ sudo tar -xvzf madwifi-trunk-current.tar.gz -C /usr/src/madwifi
$ sudo tar -xvzf hostapd-0.4.7.tar.gz -C /usr/src/hostap
$ cd /usr/src/madwifi
$ make clean && make && sudo make install
Ahora toca compilar hostap, pero antes de compilar, hay que crear un archivo llamado .config con las propiedades de nuestro punto de acceso:
$ cd /usr/src/hostapd
$ cat >> .config << EOF
CONFIG_DRIVER_MADWIFI=y
CFLAGS += -I/usr/src/madwifi
CONFIG_IAPP=y
CONFIG_RSN_PREAUTH=y
CONFIG_EAP=y
CONFIG_EAP_MD5=y
CONFIG_EAP_TLS=y
CONFIG_EAP_MSCHAPV2=y
CONFIG_EAP_PEAP=y
CONFIG_EAP_GTC=y
CONFIG_EAP_TTLS=y
CONFIG_PKCS12=y
CONFIG_RADIUS_SERVER=y
EOF
Una vez creado el archivo, compilamos hostap:
$ make clean && make && sudo make install
Ahora, creamos nuestra clave de paso usando wpa_passphrase, por ejemplo:
$ wpa_passphrase
usage: wpa_passphrase <ssid> [passphrase]
$ wpa_passphrase chakal^-^ 08121973
network={
ssid="chakal^-^”
#psk=”08121973″
psk=933fbdc7182ced947a1a669e353c8ec5c6c81d54c2ac220038bb488239492119
}
Lo siguiente, sera crear el archivo de configuración para hostap teniendo en cuenta el valor anterior psk que sera la clave que tenemos que meter y el valor essid que sera el nombre de la red que usa el AP:
$ cat >> hostapd.conf << EOF
interface=ath0
driver=madwifi
logger_syslog=-1
logger_syslog_level=2
logger_stdout=--1
logger_stdout_level=2
debug=0
ctrl_interface_group=0
#macaddr_acl=0
#auth_algs=1
#eapol_key_index_workaround=0
#eap_server=0
dump_file=/tmp/hostapd.dump
ssid=chakal^-^
wpa=1
wpa_psk=933fbdc7182ced947a1a669e353c8ec5c6c81d54c2ac220038bb488239492119
wpa_key_mgmt=WPA-PSK
wpa_pairwise=TKIP
EOF
Antes de lanzar hostap, yo cree un archivo en /etc/modprobe.d para que al cargar el modulo de la wifi se levantara en modo master:
$ cat /etc/modprobe.d/madwifi
options ath_pci autocreate=ap
Para crear listas de control de acceso por MAC (ACL) hago lo siguiente, primero cargo el modulo de la WLAN y borro posibles MAC’s anteriores
$ sudo modprobe ath_pci
$ sudo iwpriv ath0 maccmd 3
Ahora inicio el chequeo de mac con el siguiente comando:
$ sudo iwpriv ath0 maccmd 1
Lo siguiente sera agregar mac que de no ser asi, no se podria asociar ningun cliente, por ejemplo,
voy a permitir a la MAC 00:11:22:33:44:55:
$ sudo iwpriv ath0 addmac 00:11:22:33:44:55
Yo como uso el firewall de linux, permito el trafico entrante por el AP que es ath0, el + indica un valor cualquiera:
$ sudo iptables -I INPUT -i ath+ -j ACCEPT
Ahora, tenemos que compartir Internet para que las estaciones salgan a Internet, para ello enmascaro y activo el bit forwarding para el reenvió de paquetes IP, en mi caso, eth0 es la interfaz que esta conectado a la WAN:
$ sudo iptables -t nat -I POSTROUTING -o eth0 -j MASQUERADE
$ sudo -s
# echo 1 > /proc/sys/net/ipv4/ip_forward
Meto una IP al interfaz ath0, dicha ip sera la puerta de enlace que los clientes usaran, en mi caso use la red 10.10.10.0/24:
$ sudo ifconfig ath0 10.10.10.1 netmask 255.255.255.0 broadcast 10.10.10.255
Y para finalizar, ejecuto hostapd:
$ sudo hostapd -B /etc/hostapd.conf
Podemos comprobar los datos ejecutando:
$ iwconfig
Para ver que clientes estan conectados:
$ cat /proc/net/madwifi/ath0/associated_sta
En los clientes, los datos segun esto seran:
ESSID=chakal^-^
MODO: WPA-PSK
CLAVE: 08121973
Cada vez que agregemos un cliente al AP tenemos que meter estos datos y tenemos que agregar la MAC del cliente de esta manera:
$ sudo iwpriv ath0 addmac XX:XX:XX:XX:XX
Donde las x seran la MAC del cliente. Todo esto esta bien, pero al reiniciar se pierden los datos, tenemos 2 opciones, crear un script y meterlo en los rc o editar el archivo /etc/network/interfaces, yo prefiero la 2 manera
:
$ sudo -s
# cat >> /etc/network/interfaces < < EOF
auto ath0
iface ath0 inet static
address 10.10.10.1
netmask 255.255.255.0
network 10.10.10.0
broadcast 10.10.10.255
pre-up iwpriv ath0 maccmd 3
pre-up iwpriv ath0 maccmd 1
pre-up iwpriv ath0 addmac 00:1C:BF:B2:40:B3
pre-up iptables -t nat -I POSTROUTING -o eth0 -j MASQUERADE
pre-up iptables -I INPUT -i ath+ -j ACCEPT
pre-up echo 1 > /proc/sys/net/ipv4/ip_forward
post-up hostapd -B /etc/hostapd.conf
post-down killall -9 hostapd
post-down ifconfig ath0 down
post-down iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE
post-down iptables -D INPUT -i ath+ -j ACCEPT
post-down echo 0 > /proc/sys/net/ipv4/ip_forward
EOF
Ahora vamos a configurar nuestro AP para que asigne la configuracion de red automaticamente usando DHCP. Primero instalamos el paquete:
$ sudo aptitude install dhcp3-server
A continuacion, configuramos el servicio DHCP, en mi caso tengo lo siguiente para la red 10.10.10.0/24:
$ cat /etc/dhcp3/dhcpd.conf
INTERFACES="ath0";
option domain-name "wifi-chakal.org";
default-lease-time 1200;
max-lease-time 5000;
subnet 10.10.10.0 netmask 255.255.255.0 {
range 10.10.10.2 10.10.10.254;
option broadcast-address 10.10.10.255;
option routers 10.10.10.1;
option subnet-mask 255.255.255.0;
option domain-name-servers 80.58.61.254;
}
Donde:
domain-name sera el nombre de nuestro DHCP.
default-lease-time es el periodo de tiempo valido de los valores asignados.
max-lease-time especifica el tiempo masimo de asignacion.
broadcast-address es la direccion broadcast de la red
routers es la pasarela/s o puerta de enlace/s.
subnet-mask sera la mascara de la red
domain-name-servers sera el/los dns/s de nuestra red asignada por el ISP o un servidor DNS local.
Y terminamos con el servidor DHCP iniciandolo si no estuviera ya iniciado o reiniciandolo para recargar los cambios:
$ sudo /etc/init.d/dhcp3-server restart
Ahora en el momento que un cliente se asocie al punto de ascceso se le asignara una IP en mi caso en el rango 10.10.10.2 a 10.10.10.254 (menos la 10.10.10.1 que sera la pasarela de los clientes), la puerta de enlace y DNS siempre y cuando la MAC del cliente este permitida y la clave WPA sea la correcta …
Un saludo