2012/04/23

FreeBSD Updating and Upgrading

Introduccion:

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

2012/04/18

VirtualBox

Introduccion:

Instrucciones de como crear una maquina virtual para instalar FreeBSD 9.0 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
FreeBSD_AMD64

OS Type
Operanting System: BSD
                   Version: FreeBSD (64 bit)

Continue

Memory

512 MB

Continue

* Start-up Disk
* Create new hard disk

Continue

* VDI (VirtualBox Disk Image)

Continue

* Fixed size

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

En la instalacion de FreeBSD 9.0 AMD64 sobre VirtualBox en Mac

Al llegar al comentario

(expulsa el CD y reinicia desde el disco duro)

como estamos desde VirtualBox, no expulsa el CD y nos inicia nuevamente como si fuerammos a iniciar la instalacion de nuevo, debemos esperar a que termine de cargar y cerrar la maquina virtual, con lo que se envia una señal de apagado

You want to:

* Send the shutdown signal

OK

Cuando este cerrada la maquina virtual, retiramos el CD de la unidad e iniciamos la maquina virtual normalmente, nos muestra el asistente de primer inicio, continuamos y finalmente nos inicia nuestro FreeBSD virtualmente.

Si queremos que el FreeBSD se comporte como un equipo mas y use la tarjeta WiFi del host, cambiamos en VirtualBox las siguientes opciones:
Seleccionamos nuestra maquina virtual "FreeBSD_AMD64", luego Settings / Network /
En Adapter 1, cambiamos NAT por Bridged Adapter y en Name: en1: WiFi (AirPort), OK.
En el FreeBSD hospedado editamos el archivo /etc/rc.conf y en la linea
ifconfig_em0=" inet 192.168.1.2 netmask 255.255.255.0"
para que use una IP y mascara en el rango de la red LAN, tambien debemos ajustar la linea
defaultrouter="192.168.1.1"
para que use la IP de salida de la red LAN.
Hay que notar que estamos usando en la red LAN un proxy transparente, por esto no hay que colocar ningun otro parametro.

FreeBSD

Introduccion:

Instalar FreeBSD 9.1-RELEASE AMD64 -> FreeBSD 10.0-RELEASE AMD64

Requerimientos:

* Conexion a Internet
* Disco de instalacion de FreeBSD
* Leer este tutorial

El proceso:

Iniciar el equipo con el disco de FreeBSD

FreeBSD Installer

Welcome
Welcome to FreeBSD! Would you
like to begin an installation
or use the live CD?

<Install>


Would you like to set a
non-default key mapping
for your keyboard?

<No>   <- Cuando mi teclado es English
<Yes>  <- Cuando mi teclado es Spanish o Latin America

Latin American

Spanish ISO-8859-1

Set Hostname
Please choose a hostname for this machine.

If you are running on managed network, please
ask your network administrator for an appropriate
name.

freebsd.example.com

<OK>

Distribution Select
Choose optional system components to install:
[ * ] doc        Additional documentation
[    ] games   Games (fortune, etc.)
[    ] lib32     32-bit compatibility libraries
[ * ] ports     Ports tree
[ * ] src        System source code

<OK>

Partitioning
Would you like to use the guided
partitioning tool (recommended for
beginners) or to set up partitions
manually (experts)? You can also open a
shell and set up partitions entirely by
hand.

<Manuall>

Partition Editor
Create partitions for FreeBSD. No changes will be
made until you select Finish.

ada0                      298 GB

<Create>

GPT      GUID Partition Table

<OK>

The partition table has been
successfully created. Please
press Create again to create
partitions.

<OK>

ada0                      298 GB    GPT

<Create>

Type:      freebsd-boot
Size:      512K
Mountpoint:
Label:

<OK>

ada0                      298 GB    GPT
    ada0p1              512 kb   freebsd-boot

<Create>

Type:      freebsd-ufs
Size:      16GB
Mountpoint: /
Label: exrootfs

<OK>

ada0                      298 GB    GPT
    ada0p1              512 kb   freebsd-boot
    ada0p2              16.0 GB   freebsd-ufs  /

<Create>

Type:      freebsd-swap
Size:      32GB
Mountpoint:
Label: exswap

<OK>

ada0                      298 GB    GPT
    ada0p1              512 kb   freebsd-boot
    ada0p2              16.0 GB   freebsd-ufs  /
    ada0p3              32.0 GB   freebsd-swap none

<Create>

Type:      freebsd-ufs
Size:      64GB
Mountpoint: /var
Label: exvarfs

<OK>

ada0                      298 GB    GPT
    ada0p1              512 kb   freebsd-boot
    ada0p2              16.0 GB   freebsd-ufs  /
    ada0p3              32.0 GB   freebsd-swap none
    ada0p4              64.0 GB   freebsd-ufs  /var

<Create>

Type:      freebsd-ufs
Size:      16GB
Mountpoint: /tmp
Label: extmpfs

<OK>

ada0                      298 GB    GPT
    ada0p1              512 kb   freebsd-boot
    ada0p2              16.0 GB   freebsd-ufs  /
    ada0p3              32.0 GB   freebsd-swap none
    ada0p4              64.0 GB   freebsd-ufs  /var
    ada0p5              16.0 GB  freebsd-ufs /tmp

<Create>

Type:      freebsd-ufs
Size:      XXGB          <- lo que quede disponible
Mountpoint: /usr
Label: exusrfs

<OK>

ada0                      298 GB    GPT
    ada0p1              512 kb   freebsd-boot
    ada0p2              16.0 GB   freebsd-ufs  /
    ada0p3              32.0 GB   freebsd-swap none
    ada0p4              64.0 GB   freebsd-ufs  /var
    ada0p5              16.0 GB  freebsd-ufs /tmp
    ada0p6              XX.0 GB freebsd-ufs /usr

<Finish>

Confirmation
Your changes will now written to disk. If you
have chosen to overwrite existing data, it will
be PERMANENTLY ERASED. Are you sure you want to
commit your changes?

<Commit>

(inicia particionado e instalacion)

FreeBSD Installer
========================

Please select a password for the system management account (root):
Changing local password for root
New Password: ********
Retype New Password: ********


Network Configuration
Please select a network interface to configure:

em0 Intel(R) PRO/1000 Legacy Network Connection 1.0.3
em1 Intel(R) PRO/1000 Legacy Network Connection 1.0.3
em2 Intel(R) PRO/1000 Legacy Network Connection 1.0.3
em3 Intel(R) PRO/1000 Legacy Network Connection 1.0.3

<OK>

Network Configuration
Would you like to
configure IPv4 for this
interface?

<Yes>

Network Configuration
Would you like to use
DHCP to configure this
interface?

<No>

Network Configuration
Static Network Interface Configuration

IP Address   192.168.0.2
Subnet Mask 255.255.255.0
Default Router 192.168.0.1

<OK>

Network Configuration
Would you like to
configure IPv6 for this
interface?

<Yes>

Network Configuration
Would you like to try

stateless address
autoconfiguration
(SLAAC)?

<Yes>

Network Configuration
Resolver Configuration
Search            example.com
IPv6 DNS #1   2001:4860:4860::8888
IPv6 DNS #2   2001:4860:4860::8844
IPv4 DNS #1   8.8.8.8
IPv4 DNS #2   8.8.4.4

<OK>

Nota:
En nuestro caso estamos usando los DNS publicos de Google (IPv4 8.8.8.8 8.8.4.4 IPv6 2001:4860:4860::8888 2001:4860:4860::8844), mas informacion aqui https://developers.google.com/speed/public-dns/
 
Select local or UTC (Greenwich Mean Time) clock
Is this machine´s CMOS clock set to UTC? If it is set to local time,
or you don´t know, please choose NO here!

<No>

Time Zone Selector
Select a region

2 America -- North and South

Countries in America -- North and South

14 Colombia

<OK>

Does the abbreviation `COT´ look reasonable?

<Yes>

System Configuration
Choose the services you would like to be started at
boot:
[*] sshd       Secure shell daemon
[  ] moused PS/2 mouse pointer on console
[  ] ntpd      Synchronize system and network time
[  ] powerd Adjust CPU frequency dynamically

<OK>

Dumpdev Configuration
Would you like to enable crash dumps?
If you start having problems with the
system it can help the FreeBSD
developers debug the problem. But the
crash dumps can take up a lot of disk
space in /var.

<Yes>

Add User Accounts
Would you like to add
users to the installed
system now?

<Yes>

FreeBSD Installer
==================
Add Users

Username: john
Full name: John Doe
Uid (Leave empty for default):
Login group [john]:
Login group is john. Invite john into other groups? []:
Shell (sh csh tcsh nologin) [sh]:
Home directory [/home/john]:
Home directory permissions (Leave empty for default):
Use password-based authentication? [yes]:
Use an empty password? (yes/no) [no]:
Use a randon password? (yes/no) [no]:
Enter password: ********
Enter password again:  ********
Lock out the account after creation? [no]:
Username          : john
Password           : ********
Full Name         : John Doe
Uid                    : 1001
Class                 :
Groups              : john
Home                : /home/john
Home Mode     :
Shell                 : /bin/sh
Locked             : no
OK? (yes/no)   : yes
adduser: INFO : Successfully added (john) to the user database.
Add another user? (yes/no): no
Goodbye!

Final Configuration
Setup of your FreeBSD system is nearly complete. You can now
modify your configuration choices. After this screen, you will
have an opportunity to make more complex changes using a shell

Exit             Apply configuration and exit installer

<OK>

Manual Configuration
The installation is now finished.
Before exiting the installer, would
you like to open a shell in the new
system to make any final manual
modification?

<No>

Complete
Installation of FreeBSD
complete! Would you like
to reboot into the
installed system now?

<Reboot>

(retirar el CD/DVD en el reinicio para iniciar desde el disco duro)

Aplicar los ultimos parches

# freebsd-update fetch
# freebsd-update install
# reboot

Eso es todo, al iniciar tenemos nuestro FreeBSD funcionando!

Es buen momento para hacer que FreeBSD este con archivos actualizados, para esto agregamos en /etc/crontab las lineas asi:

00 06 * * * root /usr/sbin/freebsd-update cron

Con esa linea se ejecuta un proceso a las 06:00 horas y la ultima parte hace un aleatorio entre 1 y 3600 segundos para no saturar el servidor remoto.

Si luego queremos ajustar parametros de la instalacion:

# edit /etc/rc.conf

hostname="freebsd.example.com"
ifconfig_em0="inet 192.168.0.2 netmask 255.255.255.0"
defaultrouter="192.168.0.1"
ifconfig_em0_ipv6="inet6 accept_rtadv"
ssh_ennable="YES"
# Set dumpdev to "AUTO" to enable crash dumps, "NO" to disable
dumpdev="AUTO"

# Ajustar el idioma del teclado (solo activar una, si ninguna esta activa queda en English)
#keymap="spanish.iso.kbd"
keymap="latinamerican.kbd"

# edit /etc/resolv.conf

nameserver 8.8.8.8
nameserver 8.8.4.4

# edit /etc/hosts

::1             localhost localhost.my.domain
127.0.0.1  localhost localhost.my.domain

Para apagar nuestro FreeBSD instalado, usamos el comando:

# shutdown -h now

Para reiniciarlo

# shutdown -r now

Quien es John Doe? http://en.wikipedia.org/wiki/John_Doe

Para hacer la instalacion en un RAID1 http://www.unix.ck.ua/content/sozdaem-programmnyi-raid1-freebsd-90 

Nota:
FreeBSD envia automaticamente reportes de estado al usuario root y solo los vemos si iniciamos localmente con este usuario, pero podemos hacer que estos reportes sean enviados a una cuenta en otro lugar, por ejemplo a nuestra cuenta en Gmail, para hacer esto debemos:

# edit /etc/mail/aliases

 Buscamos una linea que dice

# root: me@my.domain

Y luego de esa creamos una nueva con nuestro mail
root:   micorreo@gmail.com

Guardamos los cambios en el editor y ejecutamos el comando

# cd /etc/mail && make

FreeBSD nos permite conectar por SSH a nuestro servidor, pero por seguridad no se puede hacer con el usuario root, entonces primero nos conectamos con el usuario john y luego podemos usar el comando su para subir a root, pero para que john pueda subir, hay que darle permisos a este usuario, para esto

# edit /etc/group

y la linea original

wheel:*:0:root

la dejamos asi

wheel:*:0:root, john

Guardamos cambios y ya podemos conectarnos, ejemplo desde otro equipo con FreeBSD desde el terminal

$ ssh john@IPMISERVIDOR
Password: ******** <- la clave del usuario john
$
Para subir a root escribimos su
$ su
Password: ********  <- la clave del usuario root
freebsd#

2012/04/17

VPN Service Providers

Algunas APP de Google Play (Android Market anteriormente) estan bloqueadas para muchos paises, tambien pueden ser paginas web las bloqueadas por gobiernos totalitarios o simplemente otros servicios...

Para saltar estos bloqueos, hay que usar VPN's, basicamente la informacion es solicitada a la web por la empresa que nos suministra el servicio de VPN, luego la encripta y nos la envia hasta nuestro telefono, con esto la web detecta que es una direccion IP de USA por ejemplo y nos permite bajar lo que necesitamos, desafortunadamente la mayoria de empresas que nos pueden prestar este servicio lo cobran.

Un listado muy completo
http://www.vpnsp.com

El mas barato que encontre
http://unblockvpn.com/features.html

Instrucciones (PPTP VPN)
http://unblockvpn.com/support/how-to-set-up-unblock-vpn-on-the-android.html

Como configurar VPN en Android I.C.S 4.0.4
Menu / System settings / More... / VPN / Add VPN network

PPTP VPN vs OpenVPN
http://strongvpn.com/compare.shtml

PPTP vs L2TP vs OpenVPN
http://www.ivpn.net/knowledgebase/62/PPTP-vs-L2TP-vs-OpenVPN.html
Por solicitud de "TheBestVPN" incluiré una comparativa donde ellos hacen su comparación https://thebestvpn.com/pptp-l2tp-openvpn-sstp-ikev2


BlackVPN
https://www.blackvpn.com/support/android-openvpn
Este ultimo funciona con “OpenVPN for Android by ARNE SCHWABE” y solo requiere tun, ya que tap no esta disponible en ningun cliente para Android aun.

Actualizaciones:

Hay un nuevo cliente para OpenVPN que ya soporta tun y tap y que fuel el primero en dar dicho soporte https://play.google.com/store/apps/details?id=it.colucciweb.openvpn