2012/12/10
Migracion usuarios
Supongamos que tenemos un servidor FreeBSD que comparte contenidos mediante Samba y necesitamos hacer una instalacion nueva, el /home esta en un ZFS RAID-Z lo que nos facilitara la migracion, pero no deseamos crear nuevamente a cada uno de los usuarios en el nuevo FreeBSD (tanto los de FreeBSD como los de Samba).
Este tutorial tambien es valido en caso de un cambio a un nuevo servidor (osea, a otro hadware) en este caso existen comandos adicionales requeridos y se ve claramente con el comando en color rojo, si no esta migrando a un nuevo servidor se deben omitir y continuar con el comando siguiente.
Requerimientos:
* FreeBSD instalado
* Leer este manual
El proceso:
En el FreeBSD que vamos a quitar
Hacer un backups de los archivos
¡Los comandos asumen que se tiene un ZFS RAID-Z para el directorio /home, pero puede guardar los datos en otro lugar!
# mkdir /storage/migracion
# tar -cvzf /storage/migracion/FreeBSD.tar.gz /etc/passwd /etc/master.passwd /etc/group
# tar -cvzf /storage/migracion/Samba.tar.gz /usr/local/etc/samba/passdb.tdb /usr/local/etc/samba/secrets.tdb /usr/local/etc/smb.conf
# tar -cvzf /storage/migracion/mail.tar.gz /var/mail
# tar -cvzf /storage/migracion/home.tar.gz /storage/home
# cp -rp /usr/ports/distfiles /storage/migracion <- este es opcional
En el FreeBSD recien instalado actualizado y con el arbol de ports al dia
Instalamos el port de Samba y hacemos que se active al iniciar el sistema
# cd /usr/ports/net/samba36 && make config-recursive && make install clean
# echo '# Samba' >> /etc/rc.conf
# echo 'samba_enable="YES"' >> /etc/rc.conf
Ahora nos falta darle soporte a FreeBSD para que pueda usar el arreglo de discos en ZFS RAID-Z, lea la parte del manual que inicia con "Ahora supongamos que luego de mucho tiempo queremos..." y luego continue en transferir los datos y restaurar el backups.
Transferir los datos por SSH mediante scp al nuevo servidor
# mkdir /storage/migracion
# scp usuario@IPSERVER:/storage/migracion/FreeBSD.tar.gz /storage/migracion
# scp usuario@IPSERVER:/storage/migracion/Samba.tar.gz /storage/migracion
# scp usuario@IPSERVER:/storage/migracion/mail.tar.gz /storage/migracion
# scp usuario@IPSERVER:/storage/migracion/home.tar.gz /storage/migracion
# scp -rp usuario@IPSERVER:/storage/migracion/distfiles /storage/migracion <- este es opcional
"usuario" es un usuario existente en el servidor FreeBSD que vamos a quitar
"IPSERVER" es la direccion IP del servidor FreeBSD que vamos a quitar
Restaurar el backups
# cd /
# tar -xvzf /storage/migracion/FreeBSD.tar.gz
# tar -xvzf /storage/migracion/Samba.tar.gz
# tar -xvzf /storage/migracion/mail.tar.gz
# pwd_mkdb -p /etc/master.passwd
# tar -xvzf /storage/migracion/home.tar.gz
# cp -rp /storage/migracion/distfiles /usr/ports <- este es opcional
# rm -rf /storage/migracion
# reboot
Listo, al entrar nuevamente debemos tener los mismos usuarios y nuestra informacion de la misma forma que la teniamos en el viejo.
2012/11/28
FreeBSD The Z File System (ZFS)
Introduccion:
Teniendo FreeBSD ya instalado y funcionando, le vamos a crear una unidad formada por varios discos y usaremos ZFS RAID-Z para guardar los datos de home y los contenidos de los usuarios que vamos creando.
Wikipedia ZFS:
ZFS es un sistema de archivos desarrollado por Sun Microsystems para su
sistema operativo Solaris. El significado original era 'Zettabyte File System'
, pero ahora es un acrónimo recursivo.
El anuncio oficial de ZFS se produjo en Septiembre de 2004.1 El código fuente del producto final se integró en la rama principal de desarrollo de Solaris el 31 de octubre de 20052 y fue lanzado el 16 de noviembre de 2005 como parte del build 27 de OpenSolaris.
ZFS fue diseñado e implementado por un equipo de Sun liderado por Jeff Bonwick.
ZFS destaca por su gran capacidad, integración de los conceptos
anteriormente separados de sistema de ficheros y administrador de
volúmenes en un solo producto, nueva estructura sobre el disco, sistemas de
archivos ligeros y una administración de espacios de almacenamiento
sencilla."
Wikipedia Storage pools:
A diferencia de los sistemas de ficheros tradicionales que residen encima de un sólo dispositivo subyacente y por lo tanto requieren un gestor de volúmenes separado si se precisa un sistema de archivos mayor que el dispositivo, ZFS se apoya en espacios de almacenamiento virtuales (virtual storage pools). Los espacios se construyen a partir de uno o más dispositivos virtuales (vdevs), de los que cada uno es o bien un raw device, un mirror (RAID 1) de uno o más dispos todos los vdevs esa disponible para todos los sistemas de archivos del zpool.
Requerimientos:
* FreeBSD instalado
* Leer este manual
Distribucion de los discos:
0 ad10 ada0 }=> FreeBSD: /, /swap, /var, /tmp, /usr
1 ad12 ada1
2 ad14 ada2
}=> ZFS RAID-Z: /storage/home
3 ad16 ada3
4 ad18 ada4
ada0 tendra nuestro FreeBSD y las particiones necesarias como se describe en Example 3-3. Creating Traditional Split Filesystem Partitions
ada1, 2, 3 y 4 seran los discos que usaremos para crear nuestro ZFS RAID-Z
El proceso:
Luego de conectar los discos para el RAID-Z y encender nuestro FreeBSD, miramos como estan los discos:
# cat /var/run/dmesg.boot | grep ada
En la salida nos muestra que efectivamente tenemos ada1, ada2, ada3 y ada4.
Segun el handbook:
http://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/filesystems-zfs.html
Hacemos que se carguen los modulos al iniciar FreeBSD:
# echo '# The Z File System (ZFS)' >> /boot/loader.conf
# echo 'vm.kmem_size="512M"' >> /boot/loader.conf
# echo 'vm.kmem_size_max="512M"' >> /boot/loader.conf
# echo 'vfs.zfs.arc_max="40M"' >> /boot/loader.conf
# echo 'vfs.zfs.vdev.cache.size="5M"' >> /boot/loader.conf
Si tengo menos de 4GB de RAM se pone tambien esta otra linea:
# echo 'vfs.zfs.prefetch_disable="0"' >> /boot/loader.conf
Nota
Las lineas de arriba son diferentes a las que estan en el handbook ya que unos mensajes al cargar FreeBSD recomiendan dichos valores.
Hacemos que se active ZFS al iniciar FreeBSD:
# echo '# Using ZFS' >> /etc/rc.conf
# echo 'zfs_enable="YES"' >> /etc/rc.conf
Iniciamos ZFS
# /etc/rc.d/zfs start
Creamos el pool con los discos y lo llamaremos "storage":
# zpool create storage raidz ada1 ada2 ada3 ada4
si da un error, usar la opcion -f, algo asi "zpool create -f storage ..."
Creamos el ZFS y lo llamaremos "home"
# zfs create storage/home
Copiamos el contenido de home, borramos las viejas rutas y creamos las nuevas:
# cp -rp /home/* /storage/home
# rm -rf /home /usr/home
# ln -s /storage/home /home
# ln -s /storage/home /usr/home
Reiniciamos FreeBSD:
# reboot
Al entrar nuevamente a FreeBSD, miramos como esta la cosa:
# df -h
Filesystem Size Used Avail Capacity Mounted on
...
storage 2.7T 45k 2.7T 0% /storage
storage/home 2.7T 54k 2.7T 0% /storage/home <- Nuestro ZFS RAID-Z :-)
# mount
...
storage on /storage (zfs, local, nfsv4acls)
storage/home on /storage/home (zfs, local, nfsv4acls)
Activamos el reporte diario del estado del ZFS:
# echo '# The ZFS' >> /etc/periodic.conf
# echo 'daily_status_zfs_enable="YES"' >> /etc/periodic.conf
Ver estado del raid:
# zpool status
pool: storage
state: ONLINE
scan: none requested
config:
NAME STATE READ WRITE CKSUM
storage ONLINE 0 0 0
raidz1-0 ONLINE 0 0 0
ada1 ONLINE 0 0 0
ada2 ONLINE 0 0 0
ada3 ONLINE 0 0 0
ada4 ONLINE 0 0 0
errors: No known data errors
# zpool status -x
all pools are healthy
Ejemplo de como recuperar nuestro RAID si uno de los discos se daña (se copia del handbook y se ajustan los nombres "ad" por "ada"):
21.2.2.3 Recovering RAID-Z
pool: storage
state: DEGRADED
status: One or more devices has been taken offline by the administrator.
Sufficient replicas exist for the pool to continue functioning in a
degraded state.
action: Online the device using 'zpool online' or replace the device with
'zpool replace'.
scrub: none requested
config:
NAME STATE READ WRITE CKSUM
storage DEGRADED 0 0 0
raidz1-0 DEGRADED 0 0 0
ada1 OFFLINE 0 0 0 <- El disco ada1 malo
ada2 ONLINE 0 0 0
ada3 ONLINE 0 0 0
ada4 ONLINE 0 0 0
errors: No known data errors
Sacamos ada1 del arreglo:
# zpool offline storage ada1
Apagamos el equipo:
# shutdown -h now
Cambiamos el disco ada1 malo por uno bueno y encendemos el equipo
Agregamos el disco ada1 al arreglo:
# zpool replace storage ada1
Verificamos:
# zpool status storage
pool: storage
state: ONLINE
scrub: resilver completed with 0 errors on Sat Aug 30 19:44:11 2008
config:
NAME STATE READ WRITE CKSUM
storage ONLINE 0 0 0
raidz1-0 ONLINE 0 0 0
ada1 ONLINE 0 0 0
ada2 ONLINE 0 0 0
ada3 ONLINE 0 0 0
ada4 ONLINE 0 0 0
errors: No known data errors
# zpool status -x
all pools are healthy
Si queremos eliminar el POOL y el ZFS que tenemos hasta el momento:
Cuidado, los dos comandos siguientes eliminan el arreglo y los datos!
Eliminar el ZFS:
# zfs destroy storage/home
Eliminar el pool:
# zpool destroy storage
Bueno, ya tenemos nuestro arreglo de discos en ZFS RAID-Z, pero una de las cosas interesantes de todo esto son las quotas de disco para los usuarios que se conectaran desde la red por Samba...
21.2.2.5 ZFS Quotas
Crear el ZFS para jdoe:
# zfs create storage/home/jdoe
Crearle una quota de 10G a jdoe:
# zfs set quota=10G storage/home/jdoe
Reporte de la quota:
# zfs get quota storage/home/jdoe
NAME PROPERTY VALUE SOURCE
storage/home/jdoe quota 10G local
Ejemplo de como quitarle la quota a jdoe:
# zfs set quota=none storage/home/jdoe
Reporte de la quota (para ver si se la quito):
# zfs get quota storage/home/jdoe
NAME PROPERTY VALUE SOURCE
storage/home/jdoe quota none local
Ahora ya podemos crear el usuario "jdoe":
# adduser
Username: jdoe
Full name: John Doe
...
Por defecto al agregar el usuario se crea la carpeta /home/jdoe y esta gracias al link que ya tenemos se creara en storage/home/jdoe
Ahora supongamos que luego de mucho tiempo queremos hacer una instalacion completamente nueva de FreeBSD en ada0 y logicamente queremos continuar usando nuestro ZFS RAID-Z y los datos que en ese lugar tenemos...
En el FreeBSD recien instalado
Cargar las opciones en el loader.conf:
# echo '# The Z File System (ZFS)' >> /boot/loader.conf
# echo 'vm.kmem_size="512M"' >> /boot/loader.conf
# echo 'vm.kmem_size_max="512M"' >> /boot/loader.conf
# echo 'vfs.zfs.arc_max="40M"' >> /boot/loader.conf
# echo 'vfs.zfs.vdev.cache.size="5M"' >> /boot/loader.conf
Si tengo menos de 4GB de RAM se pone esta otra linea:
# echo 'vfs.zfs.prefetch_disable="0"' >> /boot/loader.conf
Cargar las opciones en el rc.conf:
# echo '# Using ZFS' >> /etc/rc.conf
# echo 'zfs_enable="YES"' >> /etc/rc.conf
# /etc/rc.d/zfs start
Importar el pool:
# zpool import storage
Activamos el reporte diario del estado del ZFS:
# echo '# The ZFS' >> /etc/periodic.conf
# echo 'daily_status_zfs_enable="YES"' >> /etc/periodic.conf
Eliminar las rutas viejas y crear las nuevas para el storage:
# rm -rf /home /usr/home
# ln -s /storage/home /home
# ln -s /storage/home /usr/home
Listo, si reiniciamos el FreeBSD, debemos poder ver todo bien.
Este manual se hizo con FreeBSD 9.0 RELEASE.
Actualizacion 2014/10/09
Recientemente instale FreeBSD 10.0 con la nueva opcion ZFS (experimental) para usar ese sistema de archivos tambien para FreeBSD.
Ya no se agrega nada relacionado con el soporte a ZFS en /etc/rc.conf, tampoco hay que agregar parametros en /boot/loader.conf pues en el nuevo instalador de FreeBSD 10.0 ya deja todo listo.
Hay que eliminar el volumen zroot/usr/home para poder montar /storage/home
# umount /usr/home
# zfs destroy zroot/usr/home
# rm /home
# zpool import storage
# ln -s /storage/home /home
# ln -s /storage/home /usr/home
2012/10/18
Android y como pagar menos en llamadas internacionales
Por fortuna tenemos a las
Yo les quiero contar un secreto muy interesante, ¡Se puede llamar por muchisimo menos! Ahorrandonos un dinero que podemos usar en otras cosas, como comprarnos un magnifico telefono con Android como el Samsung Galaxy Nexus GT-I9250 GSM/HSPA+, comprarlo en Amazon.com libre por un buen precio o hasta en el operador Tigo de Colombia en reposicion con permanencia de 2 años por unos $500.000 pesos en el plan "Arma tu Plan 70" o totalmente libre, miren aqui.
Bueno, retomando lo de las llamadas mas baratas...
Para llamar a otros paises se puede usar una cuenta SIP, es algo similar a un messenger pero que en lugar de enviar mensajes de texto se habla pagando algo de dinero, se puede crear una cuenta SIP en alguna de las empresas que prestan ese servicio, yo uso una muy economica llamada DiamondCard, tiene buenos precios, basicamente es un sistema prepago, se compra un saldo por unos 20 dolares, que se pagan con una tarjeta de credito, es muy facil, se crea una cuenta con usuario y clave y luego compramos algo de saldo. Al terminar de crear nuestra cuenta SIP nos dan unos datos similares a estos:
(1) Login y Password para entrar en la web por https://www.diamondcard.us/login en donde podemos ver nuestro registro de llamadas y cargar mas saldo.
Login: john
Account ID: 471234
Server: sip.diamondcard.us
(los datos de arriba son ficticios para ejemplo)
Nota:
La informacion de "Account ID" y "PIN code" siempre la podremos ver en la web luego de loguearnos (en la parte superior derecha donde esta tambien nuestro saldo).
Al tener ya nuestra cuenta SIP con saldo, ya podemos empezar a usarla, para eso tenemos dos opciones, el tradicional computador (aburrido y ya poco practico) o con nuestro magnifico Galaxy Nexus con Android (esta es mi preferida), que nos permite estar en cualquier lugar y ya sea con WiFi o con algun plan de datos 3G, hacer llamadas por menos de 50 pesos el minuto (ver precios).
Si aun no tenemos un telefono "NEXUS", podemos ir a comprarlo, mientras lo compramos, podemos usar nuestro coputador y descargar he instalar el programa de DiamondCard que se baja de aqui para Windows, o si ya cansados de los problemas con Window tenemos un MacBook, le descargamos algun cliente como LinPhone.
Si somos los felices poseedores de un telefono con Android como el Galaxy ACE igualmente le tenemos que instalar LinPhone que esta en la tienda de Google Play Store gratis y en el programita ingresar los datos suministrados por DiamodCard de nuestra cuenta SIP, ya que dicho telefono viene con Android 2.3 y este aun no tiene cliente nativo para cuentas SIP.
Si tenemos el magnifico Galaxy Nexus, con Android 4.0.4 o superior, no tendremos que bajar nada, pues Android 4.0.4 ya tiene cliente nativo para cuentas SIP, para configurarlo y como es el telefono que tengo, les dare las instrucciones paso a paso...
Configurar tu cuenta SIP en el Samsung Galaxy Nexus:
1 Abrimos el marcador como si fueramos a escribir algun numero para llamar
2 Nos vamos a Settings (seleccionando los tres punticos)
3 Bajamos hasta donde dice "INTERNET CALL SETTINGS" Accounts
4 Seleccionamos "ADD ACCOUNT"
5 Ingresamos los datos requeridos:
Username
471234 <- escribir el "Account ID"
Password
123456789012 <- escribir el "PIN code"
Server
sip.diamondcard.us
6 Seleccionamos "SAVE"
Listo, ya debemos ver nuestra cuenta creada, se ve algo asi:
471234@sip.diamondcard.us
Ahora debemos decirle a nuestro telefono que nos pregunte en cada llamada si queremos llamar usando al operador celular o llamar por Internet usando nuestra cuenta SIP y el saldo que compramos en DiamondCard.us, para hacer esto nos vamos de forma similar que en las instrucciones anteriores:
1 Abrimos el marcador como si fueramos a escribir algun numero para llamar
2 Nos vamos a Settings (seleccionando los tres punticos)
3 Bajamos hasta donde dice "Use Interned calling" y activamos "Ask for each call.
Ahora vamos a llamar a nuestro primer contacto llamado "Pepe Cortisona" que vive en USA y que cariñosamente apodamos "saco de plomo", para hacerlo, debemos tener o crear un contacto y colocarle el telefono de USA, ya sea celular o fijo, por ejemplo:
(codpais codciudad telefono)
1 646 362 1234
Guardamos los datos de "saco de plomo" y ya lo podemos llamar para hacer nuestra prueba, al seleccionar nuestro contacto, nos sale una ventanita
Place call
Cell phone call
Internet call
Tocamos "Internet call" y en unos segundo timbrara la llamada y nos podra contestar nuestro amigo en USA.
2014/11/20 Actualizacion:
Configurar tu cuenta SIP en el LG Nexus 5:
1 Abrimos el marcador como si fueramos a llamar
2 Nos vamos a Settings (seleccionando los tres punticos)
3 Calls
4 Calling accounts
5 SIP accounts
6 "ADD ACCOUNT"
7 Ingresamos los datos requeridos:
Username
471234 <- escribir el "Account ID"
Password
123456789012 <- escribir el "PIN code"
Server
sip.diamondcard.us
8 Seleccionamos "SAVE"
Ahora debemos decirle a nuestro telefono que nos pregunte en cada llamada si queremos llamar usando al operador celular o llamar por Internet usando nuestra cuenta SIP y el saldo que compramos en DiamondCard.us, para hacer esto nos vamos de forma similar que en las instrucciones anteriores:
1 Abrimos el marcador como si fueramos a llamar
2 Nos vamos a Settings (seleccionando los tres punticos)
3 Calls
4 Calling accounts
5 Make calls with
TIGO -> Ask first
6 Use SIP calling
Only for SIP calls -> For all calls
Listo, ahora al llamar nos preguntara si usa TIGO o SIP
2012/09/26
Samsung Galaxy Nexus GT-I9250 Google Factory Images
- Samsung Galaxy Nexus GT-I9250 GSM/HSPA+ "maguro" de 16GB, dependiendo de donde se compre puede venir con el firmware llamado "takju" (con Google Wallet para USA) o con "yakju" (sin Google Wallet para todos los demas paises).
- Galaxy Nexus SCH-i515 CDMA/LTE "toro" de 32GB, es el modelo que vende Verizon Wireless.
- Galaxy Nexus LTE 700 CDMA/LTE "toroplus" de 32GB, es el modelo que vende Sprint.
Los telefonos "NEXUS" son los que Google manda a hacer con alguno de los fabricantes, Samsung en el caso del Galaxy Nexus, por eso Google es quien nos proporciona las actualizaciones directamente si lo compramos en la tienda Google Play Store o en alguna otra tienda libre.
Si compramos nuestro "NEXUS" con algun operador, viene con un firmware de Android "ajustado" por Samsung y hasta puede venir con algunas aplicaciones del operador, en este caso las actualizaciones se demoran mas, mientras Samsung ajusta la nueva version de Android y las aplicaciones solicitadas del operador. Esto logicamente genera demoras!
Si tenemos un "NEXUS" y Google nos da las imagenes de fabrica, podemos flashear nuestro equipo con el Android y ya seguir recibiendo las actualizaciones directamente via "OTA" (Over-The-Air) sin tener que esperar a Samsung y/o al operador.
Las imagenes se pueden ver aqui https://developers.google.com/android/nexus/images
Contar con la ultima version de Android nos puede brindar muchas cosas buenas, correccion de errores, nuevas funcionalidades y optimizaciones. Lo ideal es poder disfrutar de esos beneficios durante el tiempo de vida del telefono mientras Google le saque actualizaciones (el modelo anterior llamado Nexus S tiene casi 3 años y aun le sacan actualizaciones).
Otro tema y que por fortuna no afecta a los "NEXUS", es una capa que los fabricantes le ponen a Android para que se vea diferente, dicha capa puede hacer aun mas demorada la actualizacion de Android, algunos ejemplos son el "TouchWiz" de Samsung, el "Motoblur" de Motorola, el "Sense" de HTC. Todo eso es mas trabajo de programacion, es costoso, quita tiempo y que con las ultimas versiones de Andriod ya no son necesarias.
En el caso del Galaxy Nexus GT-I9250 GSM/HSPA+, todos los equipos son iguales en hardware denominado "maguro", y que vienen con alguna variante de Android "yakju" para los que se venden en Europa o "takju" para los que se venden en Estados Unidos y que vienen con el Google Wallet.
Para saber si nuestro equipo recibe las actualizaciones directamente de Google o de Samsung, podemos mirar los datos de "Baseband version" vemos que puede tener algo como esto:
I9250XXLA2 <- version de Samsung para Latino America
I9250XXLF1 <- version de Google para Estados Unidos
Para ver estos datos, vamos a Settings -> About phone
Al instalarle a nuestro telefono la imagen de fabrica, es como si se lo compraramos directamente a Google en lugar de a el operador! Por eso al eliminar la dependencia Samsung y operador, las actualizacines nos llegaran mas rapido, para hacer esto, debemos flashear el equipo...
Flashear un equipo es algo delicado, se debe hacer con cuidado y bien o nos podemos quedar con un ladrillito en lugar de un telefono!
Si se hace bien no debemos tener problemas, pero todo tiene un minimo de riesgo y puede que la garantia no lo cubra si lo dañamos haciendo mal el proceso, las instrucciones de abajo son de como yo lo hice, pero no puedo garantizar que les funcione o que el telefono no tenga que pasar por el centro de servicio si usted lo hace mal, es bajo su responsabilidad.
Para realizar el flasheo, se necesita de un computador Mac, tambien se puede hacer desde un computador con Windows, pero yo no tengo este ultimo (no me gusta Windows) y en Windows se requiere la descarga de otras cosas...
El proceso de flasheo elimina toda informacion del equipo como son fotos y musica, los contactos se almacenan en la cuenta de Google con lo que al iniciar nuevamente luego del flasheo se sincronizaran automaticamente. Por esto debemos hacer backup de nuestas fotos y musica!
Las imagenes para la version GSM/HSPA+ son:
Factory Images "yakju" for Galaxy Nexus "maguro" (GSM/HSPA+)
https://developers.google.com/android/nexus/images#yakju
Factory Images "takju" for Galaxy Nexus "maguro" (GSM/HSPA+) (with Google Wallet)
https://developers.google.com/android/nexus/images#takju
Se pueden usar "yakju" o "takju" indistintamente siempre que nuestro equipo sea "maguro", osea la version GT-I9250 GSM/HSPA+ ;-)
Actualizacion manual a 4.1.1 (JRO03C) <- Jelly Bean para "yakju":
2 Descomprimir el archivo .tgz en el home de nuestro usuario de Mac OS X
3 Descargar el fastboot de aqui ADT Bundle http://dl.google.com/android/adt/22.6.2/adt-bundle-mac-x86_64-20140321.zip tambien de aqui Google Drive
4 Descomprimir el archivo .zip y meterlo dentro de la carpeta yakju-jro03c creada en el paso 2
5 Apagar el telefono
6 Encenderlo en "FASTBOOT MODE" presionar volumen arriba + volumen abajo + power
FASTBOOT MODE
LOCK STATE - UNLOCKED <- si vemos esto podemos continuar, en caso contrario, mirar las notas al final
7 Abrimos el terminal
8 Darle permisos de ejecucion al archivo fastboot
$ chmod +x ~/yakju-jro03c/fastboot
9 Darle permisos de ejecucion al archivo flash-all.sh
$ chmod +x ~/yakju-jro03c/flash-all.sh
10 Con el editor del computador editamos el archivo llamado flash-all.sh para ajustar los path (rutas) y guardar los cambios, la parte de las rutas se ven asi:
...
~/yakju-jro03c/fastboot flash bootloader bootloader-maguro-primelc03.img
~/yakju-jro03c/fastboot reboot-bootloader
sleep 5
~/yakju-jro03c/fastboot flash radio radio-maguro-i9250xxlf1.img
~/yakju-jro03c/fastboot reboot-bootloader
sleep 5
~/yakju-jro03c/fastboot -w update image-yakju-jro03c.zip
11 Entrar al directorio donde tenemos el archivo fastboot junto con los archivos de la imagen
$ cd ~/yakju-jro03c
12 Correr el script
$ ~/yakju-jro03c/flash-all.sh
...
sending 'bootloader' (2308 KB)... OKAY
writing 'bootloader'... OKAY
rebooting into bootloader... OKAY
sending 'radio' (12288 KB)... OKAY
writing 'radio'... OKAY
rebooting into bootloader... OKAY
archive does not contain 'boot.sig'
archive does not contain 'recovery.sig'
archive does not contain 'system.sig'
--------------------------------------------
Bootloader Version...: PRIMELC03
Baseband Version.....: I9250XXLF1
Serial Number........: 015y73651A122021 <- he cambiado esto para no publicar mi IMEI
--------------------------------------------
checking product... OKAY
checking version-bootloader... OKAY
checking version-baseband... OKAY
sending 'boot' (4366 KB)... OKAY
writing 'boot'... OKAY
sending 'recovery' (4708 KB)... OKAY
writing 'recovery'... OKAY
sending 'system' (396675 KB)... OKAY
writing 'system'... OKAY
erasing 'userdata'... OKAY
erasing 'cache'... OKAY
rebooting...
Nuestro telefono se re-inicia solito y ya lo podemos usar metiendo los datos de nuestra cuenta y clave de Google.
Si todo lo hicimos correctamente, al mirar nuestro telefono, nos debe mostar algo como esto ;-)
Es posible que luego cada que encendemos el equipo, nos muestre un cadadito abierto, para que el telefono no quede con el candadito abierto luego de hacer la actualizacion, seguimos los pasos 5, 6 y ejecutamos el comando de las notas y lo re-iniciamos.
Notas:
LOCK STATE - LOCKED para cambiarlo
$ ~/yakju-jro03c/fastboot oem unlock
volumen arriba + power para cambiarlo
$ ~/yakju-jro03c/fastboot oem lock
-------------------------------------------------------------
Actualizacion:
Hoy (10/10/2012) salio la version 4.1.2 (JZO54K) <- Jelly Bean, siguiendo el manual y ajustando los nombres para la nueva version, he usado la imagen "Factory Images "takju" for Galaxy Nexus "maguro" (GSM/HSPA+) (with Google Wallet)" https://dl.google.com/dl/android/aosp/takju-jzo54k-factory-92830c0b.tgz sin ningun problema para actualizar mi telefono.
Al correr el script en el paso 12, nos muestra unos errores, pero no es importante, vemos algo como esto:
...
ERROR: could not get pipe properties
sending 'bootloader' (2308 KB)... OKAY
writing 'bootloader'... OKAY
ERROR: could not get pipe properties
rebooting into bootloader... OKAY
ERROR: could not get pipe properties
sending 'radio' (12288 KB)... OKAY
writing 'radio'... OKAY
ERROR: could not get pipe properties
rebooting into bootloader... OKAY
archive does not contain 'boot.sig'
archive does not contain 'recovery.sig'
archive does not contain 'system.sig'
ERROR: could not get pipe properties
--------------------------------------------
Bootloader Version...: PRIMELC03
Baseband Version.....: I9250XXLF1
Serial Number........: 015y73651A122021
--------------------------------------------
checking product... OKAY
checking version-bootloader... OKAY
checking version-baseband... OKAY
sending 'boot' (4368 KB)... OKAY
writing 'boot'... OKAY
sending 'recovery' (4710 KB)... OKAY
writing 'recovery'... OKAY
sending 'system' (407055 KB)... OKAY
writing 'system'... OKAY
erasing 'userdata'... OKAY
erasing 'cache'... OKAY
rebooting...
al mirar nuestro telefono, nos debe mostar algo como esto ;-)
2012/05/25
ICINGA
Instalar ICINGA en FreeBSD
Requerimientos:
* Conexion a Internet
* FreeBSD instalado
* Apache22 instalado
* Leer este manual
Documentacion de Icinga:
http://docs.icinga.org/latest/en/index.html
El proceso:
Actualizar el arbol de ports
# csup -h cvsup16.us.FreeBSD.org -g -L 2 /usr/share/examples/cvsup/ports-supfile
Instalar el port icinga
# cd /usr/ports/net-mgmt/icinga
# make config
Options for icinga 1.7.0_2
[X] EMBEDDED_PERL Enable embedded Perl
[X] IDOUTILS Enable IDOUtils
<OK>
# make install clean
Options for libdbi-drivers 0.8.3.1_5
[X] MYSQL With MySQL Driver
[X] PGSQL With PostgreSQL Driver
[ ] SQLITE3 With SQLite 3 Driver <- Desactivo esta, no quiero sqlite
pw: unknown group `icinga'
You need a "icinga" group.
Would you like me to create it [YES]? YES
Done.
pw: no such user `icinga'
You need a "icinga" user.
Would you like me to create it [YES]? YES
Hacer que inicie con el sistema editando /etc/rc.conf
# edit /etc/rc.conf
Agregar la linea
icinga_enable="YES"
Instalar el port nagios-plugins
# cd /usr/ports/net-mgmt/nagios-plugins
# make install clean
Instalar los logos para Icinga
# cd /usr/local/www/icinga/images/logos
# fetch https://www.monitoringexchange.org/attachment/download/Artwork/Image-Packs/Base-Images/imagepak-base.tar.tar
# tar -xvzf imagepak-base.tar.tar
# mv base/* /usr/local/www/icinga/images/logos/
# rm -rf base
# rm imagepak-base.tar.tar
# fetch https://www.monitoringexchange.org/attachment/download/Artwork/Image-Packs/Network-Symbols/symbols-v1.1.tar.gz
# tar -xvzf symbols-v1.1.tar.gz
# mv symbols/* /usr/local/www/icinga/images/logos/
# rm symbols-v1.1.tar.gz
# rm -rf symbols
Otros logos se pueden descargar de aqui (opcional)
https://www.monitoringexchange.org/inventory/Artwork/Image-Packs
Crear el archivo htpasswd.users
# touch /usr/local/etc/icinga/htpasswd.users
Agregar los usuarios y las claves
# htpasswd -c /usr/local/etc/icinga/htpasswd.users icingaadmin
New password: miclavesecreta
Re-type new password: miclavesecreta
Adding password for user isingaadmin
El password que escribio lo debe anotar, osea que creamos icingaadmin/miclavesecreta
Note que en el primer comando tenemos -c para crear el archivo y en el siguiente no!
# htpasswd /usr/local/etc/icinga/htpasswd.users guest
New password: guest
Re-type new password: guest
Adding password for user guest
El password que escribio lo debe anotar, osea que creamos guest/guest
Note que hemos creado dos usuarios icingaadmin con su respectiva clave y el usuario guest con clave guest
Editar el archivo de Apache para el sitio de icinga
# edit /usr/local/etc/apache22/httpd.conf
Agregar las lineas
# Modificacion para ICINGA inicio
<Directory /usr/local/www/icinga>
Order deny,allow
Options -Indexes
Deny from all
Allow from all
# Autenticacion inicio
AuthName "Icinga Access"
AuthType Basic
AuthUserFile /usr/local/etc/icinga/htpasswd.users
Require valid-user
# Autenticacion fin
</Directory>
<Directory /usr/local/www/icinga/cgi-bin>
Options ExecCGI
# Autenticacion inicio
AuthName "Icinga Access"
AuthType Basic
AuthUserFile /usr/local/etc/icinga/htpasswd.users
Require valid-user
# Autenticacion fin
</Directory>
ScriptAlias /icinga/cgi-bin/ /usr/local/www/icinga/cgi-bin/
Alias /icinga /usr/local/www/icinga/
# Modificacion para ICINGA fin
Reiniciar Apache para que tome los cambios
# /usr/local/etc/rc.d/apache22 restart
Creamos los archivos a partir de los de ejemplo
# cp /usr/local/etc/icinga/cgi.cfg-sample /usr/local/etc/icinga/cgi.cfg
# cp /usr/local/etc/icinga/cgiauth.cfg-sample /usr/local/etc/icinga/cgiauth.cfg
# cp /usr/local/etc/icinga/icinga.cfg-sample /usr/local/etc/icinga/icinga.cfg
# cp /usr/local/etc/icinga/resource.cfg-sample /usr/local/etc/icinga/resource.cfg
# cp /usr/local/etc/icinga/objects/commands.cfg-sample /usr/local/etc/icinga/objects/commands.cfg
# cp /usr/local/etc/icinga/objects/contacts.cfg-sample /usr/local/etc/icinga/objects/contacts.cfg
# cp /usr/local/etc/icinga/objects/notifications.cfg-sample /usr/local/etc/icinga/objects/notifications.cfg
# cp /usr/local/etc/icinga/objects/templates.cfg-sample /usr/local/etc/icinga/objects/templates.cfg
# cp /usr/local/etc/icinga/objects/timeperiods.cfg-sample /usr/local/etc/icinga/objects/timeperiods.cfg
Verificar las lineas o ajustarlas (note que agregamos ,guest al final, en las lineas 260 y 261)
# edit /usr/local/etc/icinga/cgi.cfg
authorized_for_all_services=icingaadmin,guest
authorized_for_all_hosts=icingaadmin,guest
Editar el archivo de Cinga
# edit /usr/local/etc/icinga/icinga.cfg
Comentar la linea colocando un # al inicio, queda asi:
#cfg_file=/usr/local/etc/icinga/objects/localhost.cfg
Crear el archivo con los equipos de nuestra compañia (abajo hay un link en Google Drive desde donde puede descargarlo)
# edit /usr/local/etc/icinga/conf.d/equipment.cfg
Editar el archivo de contactos de Icinga
# edit /usr/local/etc/icinga/objects/contacts.cfg
Ajustamos la linea
email icinga@localhost ; <<***** CHANGE THIS TO YOUR EMAIL ADDRESS ******
Por un email valido
email micorreo@gmail.com ; <<***** CHANGE THIS TO YOUR EMAIL ADDRESS ******
Verificar que todo esta bien en la configuracion de icinga
# icinga -v /usr/local/etc/icinga/icinga.cfg
Iniciar Icinga si la verificacion pasa sin errores
# /usr/local/etc/rc.d/icinga start
Performing sanity check of icinga configuration: OK
Starting icinga.
Para ver el log (luego para parar de ver el log use las teclas Ctl + C)
# tail -f /var/log/icinga/icinga.log
Otro comando util
# icingastats -c /usr/local/etc/icinga/conf.d/equipment.cfg
Ahora que Icinga esta corriendo, para velo, entramos a:
http://<ipdemiserver>/icinga
le pedira entrar el usuario guest y la clave guest con los que se puede monitorear los equipos, si inincia con el usuario icingaadmin y la clave miclavesecreta se pueden hacer otros ajustes mas delicados desde el navegador (desactivar alarmas y otras cosas).
Caputuras de Icinga funcionando :-)
Icinga Tactical Overview
Icinga Map
Notas:
En el port icinga 1.7.0_2 se solucionaron unos errores en rutas y permisos que originalmente se detectaron el el port 1.7.0 :-)
Si quiere aqui estan los archivos de configuracion "equipment.cfg" y "commands.cfg", pero tenga en cuenta que en el primero hay comandos que requieren de nuevos comandos agregados posteriormente en "commands.cfg", por esto si va a usar el primer archivo tambien debe remplazar el archivo original "commands.cfg" de Icinga, baje ambos archivos del siguiente link:
Google Drive
Adicionalmente se puede modificar en la opcion "notification_period" el valor "24x7" por "workhours" y luego editamos el archivo /usr/local/etc/icinga/objects/timeperiods.cfg para ajustar workhours a nuestro horario de trabajo.
Opcional (en pruebas):
Icinga puede guardar la informacion del estado de los equipos en un DB que puede ser MySQL o PostgreSQL, si queremos hacerlo...
Hay que tener un montor de DB, en nuestro caso usaremos MySQL
Para activar el soporte de MySQL, al instalar el port debe activar tambien la opcion
[X] MYSQL "Depend on MySQL"
Si siguio paso a paso este manual no lo tendra activado. Para activarlo puede parar el servicio, entrar al port, desinstalarlo, activar la opcion e instalarlo nuevamente sin problema
# /usr/local/etc/rc.d/icinga stop
# cd /usr/ports/net-mgmt/icinga
# make deinstall clean
# make config
Options for icinga 1.7.0_2
Activamos las siguientes opciones
[X] EMBEDDED_PERL "Enable embedded Perl"
[X] IDOUTILS "Enable IDOUtils"
[X] MYSQL "Depend on MySQL"
# make install clean
Note que los comandos que al inicio tienen el $ se ejecutan con un usuario diferente del root
Crear la DB llamada icinga
$ mysqladmin -uroot create icinga
Le damos permisos al usuario icinga con clave icinga en la DB llamada icinga
$ mysql -uroot -e"GRANT ALL ON icinga.* TO icinga@localhost IDENTIFIED BY 'icinga'" icinga
Creamos los archivos a partir de los de ejemplo
# cp /usr/local/etc/icinga/idomod.cfg-sample /usr/local/etc/icinga/idomod.cfg
# cp /usr/local/etc/icinga/ido2db.cfg-sample /usr/local/etc/icinga/ido2db.cfg
Activar el modulo broker de icinga editando el archivo
# edit /usr/local/etc/icinga/icinga.cfg
La linea original (esta opcion esta en la linea 269)
#broker_module=/usr/local/lib/idomod.so config_file=/usr/local/etc/icinga/idomod.cfg
La activamos quitando el # del principio, de modo que queda asi
broker_module=/usr/local/lib/idomod.so config_file=/usr/local/etc/icinga/idomod.cfg
Importar el esquema de la DB para icinga
Note que los comandos que al inicio tienen el $ se ejecutan con un usuario diferente del root
$ mysql --user=icinga --password=icinga icinga < /usr/local/share/examples/icinga/idoutils/db/mysql/mysql.sql
Hacer que inicie con el sistema editando /etc/rc.conf
# edit /etc/rc.conf
Agregar la linea
ido2db_enable="YES"
Iniciar ido2db
# /usr/local/etc/rc.d/ido2db start
Si nos regresa este error
Could not bind socket: Address already in use
Borrar el archivo /var/spool/icinga/ido.sock
# rm /var/spool/icinga/ido.sock
Y tratar de iniciar el servicio nuevamente
# /usr/local/etc/rc.d/ido2db start
Iniciar Icinga
# /usr/local/etc/rc.d/icinga start
Hacer backup de la DB icinga
# mysqldump --user=icinga --password=icinga icinga > /usr/home/backups/icinga.sql
Importarlo, note que los comandos que al inicio tienen el $ se ejecutan con un usuario diferente del root
$ mysql --user=icinga --password=icinga icinga < /usr/home/backups/icinga.sql
Algunos ajustes opcionales:
statusmap http://docs.icinga.org/latest/en/configcgi.html
# edit /usr/local/etc/icinga/cgi.cfg
ajustamos la linea
default_statusmap_layout=5
la podemos cambiar por 3 (Balanced tree) para que siempre nos muestre de esa forma el mapa.
Actualizacion
Luego de un tiempo se necesito que dos elementos en icinga reportaran a un email diferente, para hacer esto
# edit /usr/local/etc/icinga/objects/contacts.cfg
En la seccion CONTATS agrego al final de icingaadmin las entradas
...
define contact{
contact_name jdoe
use generic-contact
alias John Doe (Sistemas)
email john.doe@gmail.com
}
define contact{
contact_name jsmith
use generic-contact
alias John Smith (Sistemas)
email john.smith@gmail.com
}
define contact{
contact_name jroe
use generic-contact
alias Jane Roe (Ingenieria)
email jane.roe@gmail.com
}
En la seccion CONTACT GROUPS agrego al final de admins las entradas
...
define contactgroup{
contactgroup_name sistemas
alias Soporte Sistemas
members jdoe, jsmith
}
define contactgroup{
contactgroup_name ingenieria
alias Ingenieria
members jroe
}
Ejemplo de la entrada para un equipo
# edit /usr/local/etc/icinga/conf.d/equipment.cfg
define host{
host_name alpha
alias HP ProLiant ML370G4
icon_image freebsd40.png
icon_image_alt FreeBSD
vrml_image freebsd40.png
statusmap_image freebsd40.gd2 ; El que se ve en el mapa (.gd2 o .png)
#2d_coords x_coord,y_coord ; Example 100,250
2d_coords 100,125
notes Servidor principal
notes_url /glpi
action_url /public
address 192.168.16.1
#parents
hostgroups network-server
check_command check-host-alive
check_interval 5
retry_interval 1
max_check_attempts 5
check_period 24x7
process_perf_data 0
retain_nonstatus_information 0
#contact_groups admins
contact_groups sistemas ; Este solo reporta a sistemas
notification_interval 30
notification_period 24x7
notification_options d,u,r
}
Si quiero que reporte a sistemas y a ingenieria, la linea contact_groups es asi
contact_groups sistemas, ingenieria
O si solo reporta a ingenieria, la linea es
contact_groups ingenieria
2012/05/22
PHP5
Instalar PHP5 en FreeBSD para Apache
Requerimientos:
* Conexion a Internet
* FreeBSD instalado
* Apache instalado
* Leer este manual
El proceso:
Actualizar el arbol de ports
# csup -h cvsup16.us.FreeBSD.org -g -L 2 /usr/share/examples/cvsup/ports-supfile
Instalar el por php5
# cd /usr/ports/lang/php5
# make config
Activar la opcion
[X] APACHE Build Apache module
[ OK ]
# make install clean
Crear el archivo test.php
# edit /usr/local/www/apache22/data/test.php
Agregar las siguientes lineas:
<?php
phpinfo();
?>
Gerenar el archivo de configuracion a partir del de ejemplo
# cp /usr/local/etc/php.ini-production /usr/local/etc/php.ini
Editar el archivo de apache para activarle PHP
# edit /usr/local/etc/apache22/httpd.conf
Desactivo las siguientes lineas:
#<IfModule dir_module>
#DirectoryIndex index.html
#</IfModule>
Agregamos las nuevas:
# Lineas agregadas para PHP inicio
<IfModule mod_php5.c>
DirectoryIndex default.php index.html index.php login.php
</IfModule>
<IfModule mod_php5.c>
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps
</IfModule>
# Lineas agregadas para PHP fin
Reiniciar Apache
# /usr/local/etc/rc.d/apache22 restart
Verificar el soporte de PHP en Apache
Entrar con el navegador a:
http://<serverip>/test.php
2012/05/19
Apache
Instalar Apache en FreeBSD
Requerimientos:
* Conexion a Internet
* FreeBSD instalado
* Leer este manual
El proceso:
Actualizar el arbol de ports
# csup -h cvsup15.us.FreeBSD.org -g -L 2 /usr/share/examples/cvsup/ports-supfile
Instalar el port de Apache
# cd /usr/ports/www/apache22
# make config
Desactive esta opcion, es un modulo tocapelotas (quite la X), queda asi:
[ ] UNIQUE_ID Enable mod_unique_id
# make install clean
Activar el inicio de Apache con el sistema editando /etc/rc.conf
# edit /etc/rc.conf
Agregar la linea
apache22_enable="YES"
Iniciar apache
# /usr/local/etc/rc.d/apache22 start
El archivo de configuracion donde se crean los sitios
# edit /usr/local/etc/apache22/httpd.conf
Los comandos de apache son:
# /usr/local/etc/rc.d/apache22 start|stop|restart
Otro comando muy util para hacer que apache relea el httpd.conf luego de hacer un cambio
# apachectl graceful
Los logs de apache los puede ver asi
# tail -f /var/log/httpd-error.log
# tail -f /var/log/httpd-access.log
Ahora vamos a crear nuestro primer sitio en apache, crearemos misitio
Editamos el archivo httpd.conf de apache
# edit /usr/local/etc/apache22/httpd.conf
Al final del archivo agregamos
# Modificacion para MISITIO inicio
<Directory /usr/local/www/misitio>
Order deny,allow
Options -Indexes
Deny from all
Allow from all
Alias /misitio /usr/local/www/misitio/
# Modificacion para MISITIO fin
Reiniciamos apache
# /usr/local/etc/rc.d/apache22 restart
Creamos el directorio
# mkdir /usr/local/www/misitio
Creamos un codigo html basico dentro de misitio
# edit /usr/local/www/misitio/index.html
Le agregamos un contenido muy basico
<p>Hola mundo!</p>
Le asignamos el usuario www y grupo www al directorio y su contenido
# chown -R www:www /usr/local/www/misitio
Le damos los permisos correctos al directorio y su contenido
# chmod -R 0755 /usr/local/www/misitio
# chmod 0644 /usr/local/www/misitio/index.html
Aqui hay mas informacion sobre los permisos
http://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/permissions.html
Para verificar que el sitio este funcionando, entramos a
http://<IPSERVER>/misitio
Listo, al entrar debemos ver nuestro Hola mundo!
2012/05/18
Proxy Squid-cache
Instalar Squid-cache en FreeBSD y dejarlo trabajando en modo intercept (transparente)
Requerimientos:
* Conexion a Internet
* FreeBSD instalado
* Firewall PF (para proxy transparente)
* Leer este manual
El proceso:
Actualizar el arbol de ports
# csup -h cvsup15.us.FreeBSD.org -g -L 2 /usr/share/examples/cvsup/ports-supfile
# cd /usr/ports/www/squid32
# make config
IMPORTANTE!
Para usar proxy transparente se deben desactivar AUTHENTICATION e IPv6
Options for squid 3.2.3_2
[X] ARP_ACL Enable ARP/MAC/EUI based authentification
[X] FS_AUFS Enable AUFS (async-io) support
[X] HTCP Enable HTCP support
[X] IDENT Enable Ident lookups (RFC 931)
[X] KQUEUE Enable kqueue(2) support
[X] SNMP Enable SNMP support
[X] TP_PF Enable transparent proxying with PF
[X] WCCP Enable Web Cache Coordination Protocol
[X] WCCPV2 Enable Web Cache Coordination Protocol v2
[ OK ]
# make install clean
Para que Squid-cache pueda trabajar en modo intercept necesita poder leer /dev/pf
Por defecto /dev/pf solo es accesible para el usuario root
Verificamos los permisos actuales de /dev/pf
# ls -al /dev/pf
crw------- 1 root wheel 0, 108 Oct 26 11:01 /dev/pf
Para darle acceso a Squid-cache
# edit /etc/devfs.conf
Agregamos la linea
# Allow Squid read acess to /dev/pf
own pf root:squid
perm pf 0640
Reiniciamos devfs
# /etc/rc.d/devfs restart
Verificamos los permisos nuevos de /dev/pf
# ls -al /dev/pf
crw-r----- 1 root squid 0, 108 Oct 26 11:01 /dev/pf
El archivo de configuracion se ve asi:
# grep -vE '^#|^;|^$' /usr/local/etc/squid/squid.conf
acl localnet src 10.0.0.0/8 # RFC1918 possible internal network
acl localnet src 172.16.0.0/12 # RFC1918 possible internal network
acl localnet src 192.168.0.0/16 # RFC1918 possible internal network
acl localnet src fc00::/7 # RFC 4193 local private network range
acl localnet src fe80::/10 # RFC 4291 link-local (directly plugged) machines
acl SSL_ports port 443
acl Safe_ports port 80 # http
acl Safe_ports port 21 # ftp
acl Safe_ports port 443 # https
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 localhost manager
http_access deny manager
http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports
http_access allow localnet
http_access allow localhost
http_access deny all
http_port 3128
http_port 3129 intercept
cache_dir ufs /var/squid/cache/squid 1000 16 256
coredump_dir /var/squid/cache/squid
refresh_pattern ^ftp: 1440 20% 10080
refresh_pattern ^gopher: 1440 0% 1440
refresh_pattern -i (/cgi-bin/|\?) 0 0% 0
refresh_pattern . 0 20% 4320
access_log daemon:/var/log/squid/access.log squid
Crear el directorio
# mkdir -p /var/squid/cache/squid
Asignar el directorio al usuario squid
# chown -R squid:squid /var/squid
Inicializar el cache
# squid -z
# 2012/12/04 14:04:45 kid1| Creating Swap Directories
2012/12/04 14:04:45 kid1| /var/squid/cache/squid exists
2012/12/04 14:04:45 kid1| Making directories in /var/squid/cache/squid/00
2012/12/04 14:04:45 kid1| Making directories in /var/squid/cache/squid/01
2012/12/04 14:04:45 kid1| Making directories in /var/squid/cache/squid/02
2012/12/04 14:04:45 kid1| Making directories in /var/squid/cache/squid/03
2012/12/04 14:04:45 kid1| Making directories in /var/squid/cache/squid/04
2012/12/04 14:04:45 kid1| Making directories in /var/squid/cache/squid/05
2012/12/04 14:04:45 kid1| Making directories in /var/squid/cache/squid/06
2012/12/04 14:04:45 kid1| Making directories in /var/squid/cache/squid/07
2012/12/04 14:04:45 kid1| Making directories in /var/squid/cache/squid/08
2012/12/04 14:04:45 kid1| Making directories in /var/squid/cache/squid/09
2012/12/04 14:04:46 kid1| Making directories in /var/squid/cache/squid/0A
2012/12/04 14:04:46 kid1| Making directories in /var/squid/cache/squid/0B
2012/12/04 14:04:46 kid1| Making directories in /var/squid/cache/squid/0C
2012/12/04 14:04:46 kid1| Making directories in /var/squid/cache/squid/0D
2012/12/04 14:04:46 kid1| Making directories in /var/squid/cache/squid/0E
2012/12/04 14:04:47 kid1| Making directories in /var/squid/cache/squid/0F
Poner la linea para que squid inicie con el sistema
# echo '# Squid-cache' >> /etc/rc.conf
# echo 'squid_enable="YES"' >> /etc/rc.conf
Verificar el squid.conf
# squid -k parse
Iniciar squid
# /usr/local/etc/rc.d/squid start
Ver opciones de squid
# squid -v
Un ejemplo para PF en FreeBSD
Colocar la linea en la seccion de NAT de nuestro firewall PF:
# Redirect and allow outgoing to WWW requests to the squid, but
# not from LAN to my server
rdr pass on $int_if proto tcp from any to !$int_if port www \
-> 127.0.0.1 port 3129
Para ver el log de navegacion de squid use el comando:
# tail -f /var/log/squid/access.log
Para verificar otras cosas, por ejemplo si squid inicia bien
# tail -f /var/log/squid/cache.log
Los comandos de squid son:
# /usr/local/etc/rc.d/squid stop|start|restart|reload
Si quiere aqui estan los archivos de configuracion:
Google Drive
Firewall PF
Requerimientos:
* Conexion a Internet
* FreeBSD instalado
* Leer este manual
Diagrama:
ISP---(ext_if)-[FreeBSD]-(int_if)---Switch---LAN
\
'-(dmz_if)
El proceso:
Hacer que PF se cargue con el sistema editando /etc/rc.conf
# edit /etc/rc.conf
Agregar las lineas
# Activamos OpenBSD Packet Filter (PF)
pf_enable="YES" # Enable PF (load module if required)
pf_rules="/etc/pf.conf" # rules definition file for pf
pf_flags="" # additional flags for pfctl startup
pflog_enable="YES" # start pflogd(8)
pflog_logfile="/var/log/pflog" # where pflogd should store the logfile
pflog_flags="" # additional flags for pflogd startup
gateway_enable="YES" # Enable as LAN gateway (PF)
Activar el enrutamiento en el FreeBSD
# sysctl net.inet.ip.forwarding=1
Crear el archivo con las politicas usando el de ejemplo
# cp /usr/share/examples/pf/pf.conf /etc
Editelo y ajuste las macros de red
# edit /etc/pf.conf
Debe quedar similar a este
# egrep -v '#|^ *$' /etc/pf.conf
ext_if="bge0"
int_if="bge1"
table <spamd-white> persist
set skip on lo
scrub in
nat-anchor "ftp-proxy/*"
rdr-anchor "ftp-proxy/*"
nat on $ext_if from !($ext_if) -> ($ext_if:0)
rdr pass on $int_if proto tcp to port ftp -> 127.0.0.1 port 8021
no rdr on $ext_if proto tcp from <spamd-white> to any port smtp
anchor "ftp-proxy/*"
block in
pass out
pass quick on $int_if no state
antispoof quick for { lo $int_if }
pass in on $ext_if proto tcp to ($ext_if) port ssh
pass in log on $ext_if proto tcp to ($ext_if) port smtp
pass out log on $ext_if proto tcp from ($ext_if) to port smtp
pass in on $ext_if inet proto icmp from any to ($ext_if) icmp-type { unreach, redir, timex }
Nota:
Al final de este manual esta el link para descargar un pf.conf muy completo
Cargar el modulo PF
# /etc/rc.d/pf start
Los comandos basicos son:
Verifica el archivo sin aplicar las reglas
# pfctl -nf /etc/pf.conf
Verifica el archivo y muestra como si aplicara las reglas sin hacerlo
# pfctl -nvf /etc/pf.conf
Cargar las reglas
# pfctl -f /etc/pf.conf
Muestra las reglas actuales de filtrado
# pfctl -sr
Muestra las reglas actuales de nat
# pfctl -sn
Recuerde que si hace cambios en /etc/pf.conf debe recargar PF
# pfctl -f /etc/pf.conf
Si quiere aqui estan los archivos de configuracion:
Google Drive
2012/05/15
Nagios
Instalar Nagios en FreeBSD
Requerimientos:
* Conexion a Internet
* FreeBSD instalado
* Apache22 instalado
* PHP 5.4 instalado
* Leer este manual
El proceso:
Actualizar el arbol de ports
# csup -h cvsup16.us.FreeBSD.org -g -L 2 /usr/share/examples/cvsup/ports-supfile
Instalar el port de Nagios
# cd /usr/ports/net-mgmt/nagios
# make install clean
Hacer que inicie con el sistema editando /etc/rc.conf
# edit /etc/rc.conf
Agregar la linea
nagios_enable="YES"
Instalar los plugins de Nagios
# cd /usr/ports/net-mgmt/nagios-plugins
# make config
[X] NETSNMP SNMP support (check_snmp)
[X] IPv6 support
OK
# make install clean
Instalar los logos para Nagios
# cd /usr/local/www/nagios/images/logos
# wget --no-check-certificate https://www.monitoringexchange.org/attachment/download/Artwork/Image-Packs/Base-Images/imagepak-base.tar.tar
# tar -xvzf imagepak-base.tar.tar
# mv base/* /usr/local/www/nagios/images/logos/
# rm -rf base
# rm imagepak-base.tar.tar
Otros logos se pueden descargar de aqui
https://www.monitoringexchange.org/inventory/Artwork/Image-Packs
# cd /usr/ports/misc/nagios-base-logos
# make install clean
Nota:
De aqui se pueden bajar mas logos http://exchange.nagios.org/directory/Images-and-Logos
se deben descomprimir en la carpeta /usr/local/www/nagios/images/logos/
Crear el archivo htpasswd.users
# touch /usr/local/etc/nagios/htpasswd.users
Agregar los usuarios y las claves
# htpasswd -c /usr/local/etc/nagios/htpasswd.users nagiosadmin
New password: ******
Re-type new password: ******
Adding password for user nagiosadmin
# htpasswd /usr/local/etc/nagios/htpasswd.users guest
New password: ******
Re-type new password: ******
Adding password for user guest
Agregar las entradas en Apache en el archivo
# edit /usr/local/etc/apache22/httpd.conf
# Modificacion para NAGIOS inicio
<Directory /usr/local/www/nagios>
Order deny,allow
Options -Indexes
Deny from all
Allow from all
php_flag engine on
php_admin_value open_basedir /usr/local/www/nagios/:/var/spool/nagios/
# Autenticacion inicio
AuthName "Nagios Access"
AuthType Basic
AuthUserFile /usr/local/etc/nagios/htpasswd.users
Require valid-user
# Autenticacion fin
</Directory>
<Directory /usr/local/www/nagios/cgi-bin>
Options ExecCGI
# Autenticacion inicio
AuthName "Nagios Access"
AuthType Basic
AuthUserFile /usr/local/etc/nagios/htpasswd.users
Require valid-user
# Autenticacion fin
</Directory>
ScriptAlias /nagios/cgi-bin/ /usr/local/www/nagios/cgi-bin/
Alias /nagios/ /usr/local/www/nagios/
# Modificacion para NAGIOS fin
Reiniciar Apache para que tome los cambios
# /usr/local/etc/rc.d/apache22 restart
Creamos los archivos a partir de los de ejemplo
# cp /usr/local/etc/nagios/cgi.cfg-sample /usr/local/etc/nagios/cgi.cfg
# cp /usr/local/etc/nagios/resource.cfg-sample /usr/local/etc/nagios/resource.cfg
# cp /usr/local/etc/nagios/nagios.cfg-sample /usr/local/etc/nagios/nagios.cfg
# cp /usr/local/etc/nagios/objects/commands.cfg-sample /usr/local/etc/nagios/objects/commands.cfg
# cp /usr/local/etc/nagios/objects/contacts.cfg-sample /usr/local/etc/nagios/objects/contacts.cfg
# cp /usr/local/etc/nagios/objects/templates.cfg-sample /usr/local/etc/nagios/objects/templates.cfg
# cp /usr/local/etc/nagios/objects/timeperiods.cfg-sample /usr/local/etc/nagios/objects/timeperiods.cfg
Verificar las lineas o ajustarlas
# edit /usr/local/etc/nagios/cgi.cfg
authorized_for_all_services=nagiosadmin,guest
authorized_for_all_hosts=nagiosadmin,guest
Editar el archivo de Nagios
# edit /usr/local/etc/nagios/nagios.cfg
Comentar la linea colocando un # al inicio, queda asi:
#cfg_file=/usr/local/etc/nagios/objects/localhost.cfg
Agregar la linea al archivo de nuestros equipos
cfg_file=/usr/local/etc/nagios/objects/equipment.cfg
Crear el archivo con los equipos de nuestra compañia (al final del manual lo puede descargar)
# edit /usr/local/etc/nagios/objects/equipment.cfg
Editar el archivo de contactos de Nagios
# edit /usr/local/etc/nagios/objects/contacts.cfg
Ajustamos la linea
email nagios@localhost ; <<***** CHANGE THIS TO YOUR EMAIL ADDRESS ******
Por un email valido
email micorreo@gmail.com ; <<***** CHANGE THIS TO YOUR EMAIL ADDRESS ******
Nagios requiere un ajuste denominado timezones en php.ini
# edit /usr/local/etc/php.ini
Cambiar la linea
;date.timezone =
Por
date.timezone = America/Bogota
Reiniciar Apache22
# /usr/local/etc/rc.d/apache22 restart
Un listado completo de timezones http://co.php.net/manual/en/timezones.php
Iniciar Nagios
# /usr/local/etc/rc.d/nagios start
Para ver el log
# tail -f /var/spool/nagios/nagios.log
Caputuras de Nagios funcionando :-)
Nagios Tactical Overview
Nagios Map
Notas:
En nuestro archivo /usr/local/etc/nagios/objects/commands.cfg podemos agregar nuevos comandos
Si quiere aqui estan los archivos de configuracion:
Google Drive
2012/05/03
Ubuntu
Instalar Ubuntu 12.04 LTS AMD64
Requerimientos:
* Conexion a Internet
* Disco de instalacion de Ubuntu
* Leer este tutorial
El proceso:
Iniciar el equipo con el disco de Ubuntu
Install Ubuntu
Continue
* Something else
Continue
/dev/sda
New Partition Table...
Continue
free space
Add...
* Primary
1024
* Beginning
Ext4 journaling file system
/boot
OK
free space
Add...
* Primary
10240
* Beginning
Ext4 journaling file system
/
OK
free space
Add...
* Primary
2048
* Beginning
Swap area
OK
free space
Add...
* Primary
8495
* Beginning
Ext4 journaling file system
/home
OK
Install Now
Bogota
Continue
Spanish / Spanish
Continue
angel
angel-Desktop
angel
********
********
* Require my password to log in
Continue
Installation is complete. You need to restart the computer in order to use the
new installation.
Restart Now
Actualizar las fuentes
En el terminal ejecutamos:
$ sudo su
*********
# sudo apt-get update
Instalar algun programa
En el terminal ejecutamos:
$ sudo su
*********
# apt-get install apache2
Do you want to continue [Y/n]? Y
Controlar un programa
Apache:
# /etc/init.d/apache2 start|stop|restart|status
VirtualBox (Ubuntu)
Instrucciones de como crear una maquina virtual para instalar Ubuntu 12.04 LTS correctamente.
Requerimientos:
* Descargar el instalador de VirtualBox https://www.virtualbox.org/wiki/Downloads
* Seguir estos pasos
El proceso:
Oracle VM VirtualBox Manager
New
Continue
Name
Ubuntu_Desktop_AMD64
OS Type
Operating System: Linux
Version: Ubuntu (64 bit)
Continue
Memory
512MB
Continue
* Start-up Disk
* Create new hard disk
Continue
* VDI (VirtualBox Disk Image)
Continue
* Fixed size
Continue
20.31 GB
Continue
Create
Create
Settings
Network
Adapter 1
* Enable Network Adpater
Attached to NAT
Adapter 2
* Enable Network Adpater
Attached to Internal Network
Adapter3
* Enable Network Adpater
Attached to Internal Network
Adapter 4
* Enable Network Adpater
Attached to Internal Network
OK
Si queremos que el Ubuntu se comporte como un equipo mas y use la tarjeta WiFi del host, cambiamos en VirtualBox las siguientes opciones:
Seleccionamos nuestra maquina virtual "Ubuntu_Desktop_AMD64", luego Settings / Network /
En Adapter 1, cambiamos NAT por Bridged Adapter y en Name: en1: WiFi (AirPort), OK.
Hay que notar que estamos usando en la red LAN un proxy transparente, por esto no hay que colocar ningun otro parametro.
2012/04/23
FreeBSD Updating and Upgrading
Vamos a sincronizar y/o actualizar las fuentes de FreeBSD (Kernel + World) con csup, con esto podemos tener un FreeBSD con las ultimas actualizacion dentro de RELEASE o para pasar de una version a otra.
Requerimientos:
* FreeBSD instalado
* Conexion a Internet
Chapter 24 Updating and Upgrading FreeBSD
25.7 Rebuilding “world”
25.8 Deleting Obsolete Files, Directories and Libraries
Proceso:
Como root ejecutamos los siguientes comandos y esperamos a que terminen:
# csup -h cvsup15.us.FreeBSD.org -g -L 2 /usr/share/examples/cvsup/standard-supfile
# csup -h cvsup16.us.FreeBSD.org -g -L 2 /usr/share/examples/cvsup/ports-supfile
# csup -h cvsup17.us.FreeBSD.org -g -L 2 /usr/share/examples/cvsup/doc-supfile
FreeBSD Updating Upgrading
Rebuilding “world”
http://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/makeworld.html
Nota:
Buen momento para poner sopurte de CUPS en /etc/make.conf
# edit /etc/make.conf
agregar las siguientes lineas:
# 7 Fine Tuning CUPS-Related Ports
# http://www.freebsd.org/doc/en/articles/cups/article.html
#
WITH_CUPS=YES
CUPS_OVERWRITE_BASE=YES
WITHOUT_LPR=YES
#
# Qt 4 can be built with optional support for:
# - Common UNIX Printing System (CUPS)
# - Network Audio System (NAS)
# - Qt style that renders using GTK (QGTKSTYLE)
QT4_OPTIONS= CUPS NAS QGTKSTYLE
En este punto nos encontramos con dos opciones, podemos construir un kernel GENERIC o uno Custom (personalizado) en donde podemos adicionarle o quitarle modulos al kernel. Mire que hay comandos que son comunes para ambos y otros que estan separados en columnas, ejecute segun lo que este compilando.
1. # cd /usr/src
2. # make buildworld
Building a
GENERIC Kernel or Custom Kernel (comandos extras o diferentes)
# cd /usr/src/sys/amd64/conf
# mkdir /root/kernels
# cp GENERIC /root/kernels/MYKERNEL
# ln -s /root/kernels/MYKERNEL
# cd /usr/src
# edit /root/kernels/MYKERNEL
cambie la linea:
ident GENERIC
por:
ident MYKERNEL
(agrege sus opciones, ejemplo: options QUOTA)
3. # make buildkernel # make buildkernel KERNCONF=MYKERNEL
Installing a
GENERIC Kernel or Custom Kernel (comandos extras o diferentes)
4. # make installkernel # make installkernel KERNCONF=MYKERNEL
5. # shutdown -r now <- Opcional, si no reinicia continue en el paso 6.
After installkernel finishes successfully, you should boot in single user mode
(i.e., using boot -s from the loader prompt). Then run:
# fsck -p
# mount -u /
# mount -a -t ufs
# swapon -a
# adjkerntz -i
6. # mergemaster -p
How should I deal with this? [Leave it for later]
(i upgrade lo recomendado, d mantener archivo viejito si le hice cambios)
...
*** Comparison complete
Do you wish to delete what is left of /var/tmp/temproot? [no] (enter)
How should I deal with this? [Leave it for later] (enter)
(i upgrade lo recomendado, d mantener archivo viejito si le hice cambios)
7. # make installworld
8. # mergemaster
How should I deal with this? [Use the existing /var/tmp/temproot] (enter)
...
*** Comparison complete
Do you wish to delete what is left of /var/tmp/temproot? [no] (enter)
...
*** You installed a new aliases file, so make sure that you run
Would you like to run it now? y or n [n] (enter)
9. # reboot
25.8 Deleting Obsolete Files, Directories and Libraries
http://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/make-delete-old.html
10. # cd /usr/src
11. # make check-old
12. # yes|make delete-old
13. # make delete-old-libs
---------------------------------------
Si algo sale mal y el nuevo kernel no funciona bien, puedo regresar al anterior...
Al iniciar el equipo nos muestra el listado de opciones de inicio de FreeBSD
6. Escape to loader prompt
Type '?' for a list of commands, 'help' for more detailed help.
OK
(escribimos)
unload kernel (enter)
(escribimos)
boot /boot/kernel.old/kernel (enter)
Luego podemos renombrar el kernel problematico y renombrar el kernel anterior que funciona (kernel.old)
# mv /boot/kernel /boot/kernel.bad
# mv /boot/kernel.old /boot/kernel
---------------------------------------
Instalar nuestro primer port "portmaster"
Es un programa para mantener todos los ports actualizados
# whereis portmaster
portmaster: /usr/ports/ports-mgmt/portmaster
# cd /usr/ports/ports-mgmt/portmaster
# make install clean
Suele pasar que luego de instalar algun port, al ejecutar el comando, nos muestre
"Command not found."
Para que detecte el nuevo port instalado ejecutamos:
# rehash
Comandos basicos de portmaster:
# portmaster -L <- Lista los ports y las actualizaciones disponibles
# portmaster -a <- Actualiza todos los ports instalados
# portmaster -af <- Actualiza y recompila todos los ports instalados
# portmaster -a -x nombreport <- Actualiza todos los port excepto nombreport, para agregar otros ports -x nombreport -x nombreport2
Una opcion muy util es "-d always clean distfiles" con eso simpre mantendra nuestro directorio distfiles con los fuentes de las versiones de los ports instalados y borrara los fuentes de ports viejos. Lo contrario (mantener los fuentes de los ports viejos y nuevos) seria "-D no cleaning of distfiles".
Nota:
En el comando
# csup -h cvsup15.us.FreeBSD.org -g -L 2 /usr/share/examples/cvsup/standard-supfile
Estamos usando el archivo standard-supfile que nos mantiene en la misma version, si queremos cambiar a otra, por ejemplo de 8.2 RELEASE a 8.3 RELEASE, debemos compiar ese archivo y modificar la linea "tag=RELENG_8_2", se haria asi:
# cp /usr/share/examples/cvsup/ports-supfile /root
# edit /root/ports-supfile
Cambiar la linea:
*default release=cvs tag=RELENG_8_2
por
*default release=cvs tag=RELENG_8_3
Salir del editor y guardar los cambios (en edit, con "Esc" main menu, "a" leave editor, "a" save changes)
Ejecutar el comando usando el nuevo archivo
# csup -h cvsup15.us.FreeBSD.org -g -L 2 /root/ports-supfile
Para ver el listado de servidores desde donde podemos descargar las fuentes entre a:
http://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/cvsup.html#CVSUP-MIRRORS
Para mantenernos en FreeBSD 8.2 RELEASE usamos el tag=RELENG_8_2
Para cambiarnos a FreeBSD 8.3 usariamos el tag=RELENG_8_3
Para ver el listado de tags entre a:
http://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/cvs-tags.html
Cuando se hace un cambio entre versiones de FreeBSD (por ejemplo de 8.2 a 8.3) es necesario recompilar e instalar todos los ports que ya teniamos instalados, para hacer esto usamos el comando:
# portmaster -af
Ejemplos utiles:
Buscar informacion de varios ports
# pkg_info | egrep 'hal|cdrtools|dvd\+rw-tools'
cdrtools-3.00_2 CD/DVD/BluRay and ISO-9660 image creation and extraction to
dvd+rw-tools-7.1 DVD burning software
hal-0.5.14_20 Hardware Abstraction Layer for simplifying device access
Reinstalar un port
# portmaster hal-0.5.14_20
Limpiar los fuentes descargados en /usr/ports/distfiles de ports que ya no tenemos instalados
# portmaster -y --clean-distfiles