RedHat Certified System Administrator 7 (RHCSA 7) – Sistemas en Funcionamiento II

Continuando con el post anterior (Redhat Certified System Administrator 7 Sistemas en Funcionamiento I) donde tratamos los primeros 3 puntos del segundo requerimiento del examen RHCSA.

A continuación continuaremos con el siguiente punto de forma sintética:

Identificar los procesos que hacen un uso intensivo de la CPU y de la memoria, ajustar la prioridad de los procesos con renice y eliminar procesos

Tradicionalmente, en cualquier unix ‘ps’ es el comando para identificar los procesos con sus respectivas características, cualidades y estados. Este tradicional comando, en los sistemas GNUs soporta 3 tipos de sintaxis para los parámetros, a saber: UNIX, BSD, y GNU. Para simplificar en este post utilizaremos la sintaxis UNIX la cual permite agrupar las distintas opciones y require un -.
Por ejemplo:

ps -aux

Cabe recalcar, ps a no es igual a ps -a.

Process Snapshot (ps)

El comando ps listará los procesos dependiendo de los parámetros modificadores que la pasemos.

Repasemos los mas pertinentes:
-e / -A  Listar todos los procesos
-x        Lista procesos que estén asociados a una terminal (TTY)-U       Lista los procesos asociados a un o varios usuarios
-o       Permite determinar que características del proceso se listaran

Los parámetros mas interesantes para -o son los siguientes:

%cpu        %CPU      cpu utilization of the process in "##.#" format. 
%mem        %MEM      ratio of the process's resident set size  to the physical memory on the machine, expressed as a percentage
args        COMMAND   command with all its arguments as a string. Modifications to the arguments may be shown.
cgroup      CGROUP    display control groups to which the process belongs.
ni          NI        nice value. This ranges from 19 (nicest) to -20 (not nice to others)
pid         PID       a number representing the process ID
ppid        PPID      parent process ID

Podemos entonces, combinar estos parámetros en una salida como la siguiente:

ps -e -o pid,%cpu,%mem,args

La cuál nos brindaría el pid, el porcentaje de CPU utilizado, el porcentaje de memoria utilizado y los argumentos con los cuales se ejecuto el programa. Otro parámetro interesante es cgroup, ya que desde que tenemos systemd, todos los procesos se ejecutan bajo el control de un grupo (control group).

Pueden encontrar estos parámetros y muchos mas haciendo ‘man ps’, en la sección STANDARD FORMAT SPECIFIERS

El último tip, es el siguiente: para poder ordenar la salida, utilizamos –sort, y especificamos en base a que parámetro queremos ordenar la salida.

Por ejemplo ordenaremos por porcentaje de procesamiento del CPU:

ps -e -o pid,%cpu,command --sort %cpu

Table of Process (top)

Otro comando clásico de los UNIXs, nos listara en tiempo real la table de procesos y su consumo de recursos. Así mismo, por defecto top ordena los procesos por su consumo de CPU, lo que nos facilita encontrar cuáles son los programas que mas recursos consumen.
Presionando r se podrá cambiar el número de prioridad de un proceso y con k podemos enviar una señal para matar al proceso.
Podrán encontrar un buen post sobre top aquí

Nice & renice

Los sistemas UNIXs permiten establecer prioridades de procesamiento para que el CPU se ‘concentre’ mayormente en ciertas tareas y relegue otras.
Nice permite ejecutar un comando con una prioridad determinada:

nice -n 5 comando --argumento

Si el proceso ya estuviese corriendo, podemos reasignarle la prioridad con renice referenciando su pid:

renice -n 4 2345

Kill y sus derivados

Finalmente, para eliminar un proceso, tenemos el comando kill.
Unix establece distintas señales que podemos enviarle a un proceso, las mas comunes son SIGHUP (1) (morir y volver a ejecutarse), SIGTERM (15) (le avisa al proceso que tiene que terminar su ejecución, pero le da tiempo de que cierre los file descriptors y mate a sus hijos) y SIGKILL (9) (termina el proceso inmediatamente)l.

Así, podemos enviarle estas señales utilizando el PID y el numero de señal:

kill -s 9 2345

Killall  y pkill nos permiten hacer lo mismo, pero buscando el proceso por nombre:

killall -s 9 xchat

Otro post interesante sobre el tema, aqui

Conclusión

Estos temas son básicos para cualquier administrador linux/unix, por lo que simplemente hicimos un brevisimo repaso, no hay diferencias en Red Hat 7 de lo que ya conocemos en este punto.

Saludos!

~have fun

Primeros pasos con NetBSD II

En el primer post vimos algunos aspectos básicos de NetBSD, suficiente como para que los curiosos se adentren a explorar este OS. En este post veremos una configuración que nos permite utilizar NetBSD como router, esta configuración no escapa de ser básica, pero puede ser muy útil.

NetBSD como router

Uno de los usos mas básicos que podemos darle a un NetBSD es utilizarlo como router. Aunque quizás  en primera instancia pensaríamos en OpenBSD o Linux para dicha tarea, puede ser que tengamos guardada alguna PC muy vieja donde es mas dificil instalar OpenBSD y muy chica para Linux. En la lista de productos basados en NetBSD que mencionamos en el post anterior, podemos encontrar algunos routers desarrollados en base a este OS.
Otra razón para hacer esto es simplemente por que podemos, y nos gusta experimentar.

Escenario:

Tenemos una pc (o cualquier bicho que pueda correr NetBSD) con dos conexiones. netbsd-router
Una de las cuales tiene conexión a la Internet y la otra a la intranet a la cual proveeremos de acceso a internet. El nombre de la interfaz conectada a internet será wm0 y la interfaz conectada a la intranet será wm1.

Consideraremos en otro momento , un escenario donde la conexión a internet se realiza mediante una conexión DSL.

Configuración de las interfaces

IP Estatica

Como ya mencionamos en el post anterior, la configuración de las interfaces es muy simple.
Para poder saber las interfaces (los nombres de las interfaces dependen del driver utilizado en los kernels *BSD) disponibles utilizamos ifconfig:

ifconfig -a

Por cada interfaz disponible obtendremos un resultado similar al siguiente:

wm0: flags=8802<BROADCAST,SIMPLEX,MULTICAST> mtu 1500
 capabilities=2bf80<TSO4,IP4CSUM_Rx,IP4CSUM_Tx,TCP4CSUM_Rx,TCP4CSUM_Tx,UDP4CSUM_Rx,UDP4CSUM_Tx,TCP6CSUM_Tx,UDP6CSUM_Tx>
 enabled=0
 address: 56:43:13:45:4d:af
 media: Ethernet autoselect (1000baseT full-duplex)
 status: active
wm1: flags=8843<BROADCAST,SIMPLEX,MULTICAST> mtu 1500
 capabilities=2bf80<TSO4,IP4CSUM_Rx,IP4CSUM_Tx,TCP4CSUM_Rx,TCP4CSUM_Tx,UDP4CSUM_Rx,UDP4CSUM_Tx,TCP6CSUM_Tx,UDP6CSUM_Tx>
 enabled=0
 address: 03:34:31:43:55:ff
 media: Ethernet autoselect (1000baseT full-duplex)
 status: active

Al igual que en GNU/Linux y demases unix podemos configurar temporalmente la interfaz utilizando:

ifconfig wm0 10.0.0.1 netmask 255.255.255.0
ifconfig wm1 192.168.1.1 netmask 255.255.255.0

Pero para poder configurar de forma definitiva la interfaz, debemos crear (si no existe ya) el archivo /etc/ifconfig.wm0 y el /etc/ifconfig.wm1. En este archivo, simplemente añadiremos en cada linea los argumentos que queremos que ifconfig ejecute. Por ejemplo, lo primero a hacer es levantar la interfaz con un:

ifconfig wm0 up

Por lo que la primer linea del archivo será un ‘up’.
Luego configuraremos la ip y el archivo quedará de la siguiente manera:

NetBSD Lab # cat /etc/ifconfig.wm1
up
192.168.1.1 netmask 255.255.255.0
NetBSD Lab # cat /etc/ifconfig.wm0
up
10.0.0.1 netmask 255.255.255.0

De esta manera configuramos ambas interfaces de forma estatica.

DHCP cliente

En caso de que la interfaz con acceso a internet deba ser configurada con DHCP, el archivo de configuración se verá de la siguiente forma:

NetBSD Lab # cat /etc/ifconfig.wm0
up
dhcp

Donde wm0 es la interfaz que utliza dhcp.
Para utilizar DHCP en la interfaz sin reiniciar utilizar /etc/rc.d/networking stop/start, podemos utilizar:

# dhclient wm0

Packet Forwarding

Para habilitar el reenvio de paquetes, fundamental para un router ejecutamos lo siguiente:

# sysctl -w net.inet.ip.forwarding=1

Y para guardar esta configuración de forma permanente agregamos la siguiente variable a /etc/sysctl.conf:

# net.inet.ip.forwarding=1

Pero el reenvio de paquetes es sólo el primer paso, ya que necesitamos hacer NAT para que los paquetes puedan regresar correctamente, esto lo hacemos modificando el archivo /etc/ipnat.conf.
Si no existe, lo creamos de la siguiente manera:

NetBSD Lab # cat << EOF > /etc/ipnat.conf 
map wm0 192.168.1.0/24 -> 0/32 
EOF

Servicios del Router

DNS y DHCP

Para proveer un servicio de dns y dhcp a la red interna, instalaremos dnsmasq

NetBSD Lab # pkg_add -v dnsmasq
pkg_add: Warning: package `dnsmasq-2.67nb1' was built for a platform:
pkg_add: NetBSD/x86_64 6.0 (pkg) vs. NetBSD/x86_64 6.1.5 (this host)
Running install with PRE-INSTALL for dnsmasq-2.67nb1.
dnsmasq-2.67nb1: Creating group ``dnsmasq''
dnsmasq-2.67nb1: Creating user ``dnsmasq''
useradd: Warning: home directory `/nonexistent' doesn't exist, and -m was not specified
man/man8/dnsmasq.8
sbin/dnsmasq
share/examples/dnsmasq/dnsmasq.conf.example
share/examples/rc.d/dnsmasq
Running install with PRE-INSTALL for dnsmasq-2.67nb1.
dnsmasq-2.67nb1: copying /usr/pkg/share/examples/dnsmasq/dnsmasq.conf.example to /usr/pkg/etc/dnsmasq.conf
===========================================================================
The following files should be created for dnsmasq-2.67nb1:

/etc/rc.d/dnsmasq (m=0755)
 [/usr/pkg/share/examples/rc.d/dnsmasq]

===========================================================================
Package dnsmasq-2.67nb1 registered in /var/db/pkg/dnsmasq-2.67nb1

Luego, copiamos el script de inicio y el de configuración:

NetBSD Lab # cp /usr/pkg/share/examples/rc.d/dnsmasq /etc/rc.d/
NetBSD Lab # cp /usr/pkg/share/examples/dnsmasq/dnsmasq.conf.example /etc/dnsmasq.conf

Para activar el inicio de dnsmasq en el booteo, agregamos la siguientes lineas al /etc/rc.conf:

dnsmaq=YES
dnsmasq_flags="-C /etc/dnsmasq.conf"

Una vez hecho esto, debemos modificar las siguientes variables dentro de /etc/dnsmasq.conf

interface=wm1
bind-interfaces
expand-hosts
domain=netsecure.com.ar
dhcp-range=192.168.1.2,192.168.1.20,24h

En la variable interface utilizaremos la interfaz sobre la cual daremos internet a la red interna.
Como pueden ver, con esta simple configuración, dnsmasq brinda servicio de dns (forwarding) y dhcp.
Y comenzamos a disfrutar de los servicios de dnsmasq iniciandoló:

NetBSD Lab #  /etc/rc.d/dnsmasq start
Starting dnsmasq.

Firewall

NetBSD trae por defecto a PF como su firewall, PF (Packet Filter), es un firewall mantenido por el equipo de desarrollo de OpenBSD, uno de los sistemas mas seguros (el mas seguro?). Por esto y mucho mas, PF se ha granjeado su fama como excelente firewall, ademas de ser muy simple en su sintaxis, algo que su competencia (iptables/netfilter) no puede superar.
Para habilitar el uso de PF, modificamos el /etc/rc.conf:

pf=YES

Y luego deberemos configurar el funcionamiento en sí de pf en el /etc/pf.conf
Si bien la configuración del firewall es algo bastante personal (intimo diría yo), un ejemplo de un firewall básico podría ser el siguiente (manual de PF aquí)

#Bloqueamos todo por defecto
block in  all
block out all

#Lista de puestos permitidos para la red interna
allowed_tcp_ports = "{ 22 }"
allowed_udp_ports = "{ 53, 67, 68 }"

#Reglas para permitir el acceso a los puertos desde la red interna
pass in  on wm1 from 192.168.1.0/24 to 192.168.1.1 tcp port $allowed_tcp_ports
pass in  on wm1 from 192.168.1.0/24 to 192.168.1.1 tcp port $allowed_udp_ports
pass out on wm1 from 192.168.1.1 to 192.168.1.0/24 tcp port $allowed_tcp_ports
pass out on wm1 from 192.168.1.1 to 192.168.1.0/24 tcp port $allowed_udp_ports

Herramientas Adicionales

Finalmente, podemos instalar algunas herramientas utilizando (pkg_add) que pueden servirnos para controlar nuestra red:

  • fping (scanner icmp)
  • bmon (Para visualizar el ancho de banda en cada interfaz)
  • trafshow (Para visualizar las conexiones en tiempo real)
  • tinc (Para crear VPNs)
  • tcpdump (sniffer)

Conclusiones

Con esta configuración básica como router, tenemos la base para transformar nuestro NetBSD en un firewall bastion, en un proxy, un punto de control, etc. Una de las mayores ventajas de utilizar NetBSD como router es que puede ser instalado en muchos dispositivos, por lo que quizas puedas utilizar este OS en un router, en una PC o vaya a saber en que aparatejo. La liviandad del OS lo transforma ideal para correr en hardware reducido, pero al mismo tiempo proveer muchas funcionalidades.

EFI Devices Mapping

Esta es una pequeña explicación de la nomenclatura utilizada por intel en la EFI Shell.

Un ejemplo, es cuando utilizamos el comando map, una de las entradas se vería algo así:

fs0 : Acpi(HWP0002,100)/Pci(1|0)/Scsi(Pun0,Lun0)/HD(Part1,Sig8E89981A-0B97-11D7-9C4C-AF87605217DA)

Explicación:

Acpi(HWP0002,100):

  • Tipo de dispositivo HWP0002 (= Logical Block Address (LBA) device)
  • PCI número de host 100 (“ROPE“ = circuitry handling I/O for PCI; defines I/O card slot)

Pci(1|0):

  • device/slot número 1
  • función numero 0

Scsi(Pun0,Lun0):

  • Pun: Physical Unit (SCSI address)
  • Lun: Logical Unit

HD(PartX,SigY):

  • Partición X
  • Disco con código Y

Aclaración sobre que es Unix

Al igual que el último post (PCs y Servidores), quiero hacer una excepción en la temática general de mi blog, y escribir un tema sobre el que veo mucha confusión. Aunque principalmente se da en los usuarios nuevos de linux, hay muchos usuarios avanzados de linux y *BSD que también están des informados al respecto, y cuando alguien pregunta sobre UNIX se dicen barbaridades.

Que es UNIX®?

Para contestar, hay que explicar primero que existen dos respuestas válidas, pero muchas veces mal entendidas o interpretadas:

El histórico sistema operativo Unix: Escuetamente podemos decir que en 1969, un par de  geeks de los ‘Bell labs’ de AT&T desarrollaron un sistema operativo básico, al que llamaron UNICS al principio y luego UNIX. AT&T distribuyo este sistema en algunas universidades (que era donde había computadoras en aquellos momentos), posteriormente la universidad de California, con sede en Berkeley, sacaba su versión bajo licencia BSD.
AT&T siguió desarrollando versiones de Unix y comercializandolas. En 1993 Unix pasó a manos de Novell, y en 1995 a SCO. La última versión de este antiquísimo sistema operativo se llama UnixWare 7.1.4… Pero la verdad es que nadie le presta mucha atención.

Unix como estándar: Existe un estándar basado en Unix, se llama Single Unix Specification (SUS). Este estándar es manejado por el OpenGroup, cuyos Patinium partners son HP, IBM, Oracle y Philips. La última versión de la SUS es la “UNIX 03” y los sistemas operativos certificados como “UNIX 03” son:

Apple Inc. Mac OS X 10.5 y 10.6
HP-UX 11i V3 Release B.11.31 y posteriores
IBM AIX 5L V5.3 (y V5.2 con ciertas actualizaciones) y 6 v6.1.2 SP1
Sun (y Fujitsu) Solaris 10, versiones de 32 y 64 bits para SPARC y para Intel x86

Es decir estos sistemas operativos son los famosos Unix like.
Tambien existen otras versiones anteriores a la “UNIX 03” en la cual otros sistemas operativos están certificados (vean los links de abajo).

Para que sirve el estándar? Para que un programa/sistema que utilice los métodos sugeridos por el estándar pueda ser fácilmente portado de un sistema a otro.

Ahora bien, existe algo así como un equivalente abierto, este es POSIX. POSIX es una serie de estándares definido por la IEEE. Actualmente la SUS UNIX 03 tiene como base la POSIX y son casi lo mismo, aunque UNIX03 abarca un poco mas.

Mas especificamente: POSIX:2008 = IEEE Std. 1003.1-2008 = SUSv4 = The Open Group Specification Issue 7.

Vale aclarar:
Un sistema UNIX 03, es POSIX.
Un sistema POSIX no necesariamente es un UNIX 03
Certificar POSIX o UNIX 03 es caro.
UnixWare, el heredero directo del sistema operativo Unix, no esta certificado como Unix03!!!

Vamos a las conclusiones y preguntas mas frecuentes…

Conclusiones

Cuando hablamos propiamente, un sistema Unix, es solo aquel que certifica con OpenGroup, actualmente AIX, HP-UX, Solaris y Mac OS (en sus versiones mas recientes).
Y Linux?
Linux es un sistema que se adhiere casi completamente POSIX, esto depende de la distribución, y aunque alguna distribución pueda ser 100% probablemente no este certificada como POSIX ya que cuesta mucho dinero.
Y *BSD?
Esta en la misma situación que linux.
Yo quiero saber Unix para ser un hacker, como hago?
Linux y *BSD son mas que suficiente para tí. Cuando conozcas bien Linux, o mejor aún *BSD, conocerás bastante sobre Unix.
Quiero saber Unix para programar sistemas portables en Unix, que hago?
En el caso de quien quiere programar, le vale estudiar un poco mas los estándares, pero para comenzar Linux y *BSD le sobran. Luego estudia sobre POSIX.

Links de interés para ahondar mucho mas:
Sitio del estandar UNIX 03: http://www.unix.org/
Listado de partners de Open Group: http://reports.opengroup.org/membership_report_all.pdf
Productos registrados bajo UNIX 03: http://www.opengroup.org/openbrand/register/xy.htm
Especificaciones SUS: http://www.unix.org/what_is_unix/single_unix_specification.html
Mas sobre POSIX: http://es.wikipedia.org/wiki/POSIX

~ have fun!

Primeros pasos con NetBSD – I

Que es NetBSD?

NetBSD logo NetBSD es un Unix con estilo, cualquiera que quiera aprender ‘Unix Basics’ esta invitado a utilizar NetBSD, es simple, es liviano, es portable, es seguro, su codigo es muy elegante, y su flexibilidad nos permitirá utilizarlo como un desktop o como un router/firewall dedicado, o incluso hacerlo andar en un celular… En lo siguiente haremos una introducción somera sobre NetBSD y luego nos iremos adentrando en algunas configuraciones básicas. En caso de necesitar ayuda con la instalación te recomiendo este turorial.

Historia

NetBSD es spin off the 386BSD 0.1, fundado por Chris Demetriou, Theo de Raadt, Adam Glass y Charles M. Hannum, estuvo orientado desde sus origenes a ser portable a muchas plataformas. Al dia de hoy, NetBSD se publica oficialmente para 53 plataformas, por lo que puede correr en una PC, en un SPARC, en una consola de juegos Dreamcast, o en un flamante servidor IBM o HP. De hecho su eslogan es “of course it runs NetBSD” ( han hecho correr NetBSD en una tostadora)

Para que me sirve?

Una respuesta un poco intrépida pero bastante certera, es que NetBSD sirve para todo. Claro, tiene sus limitaciones, en algunos sentidos, pero NetBSD tiene un punto muy fuerte, y es su portabilidad. Esta le permite que pueda ser OS indicado para proyectos donde se necesita un sistema operativo que tenga minimos requerimientos, y brinde grandes prestaciones, por ejemplo para sistemas con software embebido puede llegar a ser una de las pocas alternativas.

En mi experiencia, recomiendo NetBSD para:

– PCs antiguas donde un linux 2.6 o 3.0 les queda grande, NetBSD 6.0 es mas liviano.
– Experimentos que requieran software tipo embebido, seguramente NetBSD tiene un port.
– Estudiantes de Unix: NetBSD conserva mucho de los unix originales (*BSD), en mi opinion es mejor empezar con algo mas unix like que windows like.
Existe una gran cantidad de productos basados en NetBSD, podes verificarla aca.

Configuración básica

La guia de configuración de NetBSD, ya sea en pdf o en html, puede evacuar seguramente el 99% de tus dudas. En este post haremos un primer acercamiento con  algunas de las explicaciones y configuraciones minimas que facilitan el comienzo en NetBSD.

Inicio: El inicio de NetBSD esta controlado por el rc.conf, este inicio no tiene runlevels como en el caso de los sistemas que utilizan system v. Para determinar los servicios que se ejecutaran en tiempo de booteo, debemos editar el rc.conf. Por ejemplo la variable sshd=YES, habilita el servidor ssh. Para mas info, man rc.conf.

Si bien la configuración inicial es casi optima, en caso de que no estemos usando NetBSD como un servidor productivo, podemos hacer algunos pequeños cambios que aceleraran el incio. Esto sirve sobre todo en maquinas muy chicas, ya que de por si NetBSD incia muy rápido. Abrimos el rc.conf con el vi, y agregamos las siguientes lineas:

#Para que no borre el tmp en cada booteo. 
clear_tmp=NO 
#Para que no verifique los limites de quotas
quota=NO 
#Para que no utilice genere volcados de memoria del kernel en caso de un crash.
savecore=NO
#Para que no inicie el postfix. 
postfix=NO
#Para que no mande notificación en caso de encontrar algún archivo mal cerrado por vi.
virecover=NO

Disco: El particionado de BSD es distinto que en Linux. Lo que en Linux llamamos particiones (por ejemplo /dev/hda, /dev/hdb etc), en BSD se llaman ‘slices’ . Al instalar NetBSD habremos definido una slice donde se encontrará el esquema de particionado llamado disklabel. El estandar de etiquetas (labels) dice que:

a       Contiene al root file system
b       Contiene la particion swap
c       No se monta, y es un puntero a toda la slice
d       Usualmente apunta a todo el disco
El resto de las particiones son para disponer a gusto (por ejemplo se pueden destinar para el tmp, el usr etc)
Para listar los discos utilizamos fdisk a secas:

Vipper# fdisk
Disk: /dev/rwd0d
NetBSD disklabel disk geometry:
cylinders: 10402, heads: 16, sectors/track: 63 (1008 sectors/cylinder)
total sectors: 10485760

BIOS disk geometry:
cylinders: 652, heads: 255, sectors/track: 63 (16065 sectors/cylinder)
total sectors: 10485760

Partitions aligned to 2048 sector boundaries, offset 2048

Partition table:
0: NetBSD (sysid 169)
start 2048, size 10483712 (5119 MB, Cyls 0-652/180/40), Active
1: <UNUSED>
2: <UNUSED>
3: <UNUSED>
Bootselector disabled.
First active partition: 0

Para ver las particions BSD usamos disklabel:

Vipper# disklabel /dev/wd0
# /dev/wd0d:
type: unknown
disk: ROOTDISK
label: 
flags:
bytes/sector: 512
sectors/track: 63
tracks/cylinder: 16
sectors/cylinder: 1008
cylinders: 10402
total sectors: 10485760
rpm: 3600
interleave: 1
trackskew: 0
cylinderskew: 0
headswitch: 0		# microseconds
track-to-track seek: 0	# microseconds
drivedata: 0 

16 partitions:
#        size    offset     fstype [fsize bsize cpg/sgs]
 a:   4362624      2048     4.2BSD   2048 16384     0  # (Cyl.      2*-   4330*)
 b:   1049328   4364672       swap                     # (Cyl.   4330*-   5371*)
 c:  10483712      2048     unused      0     0        # (Cyl.      2*-  10402*)
 d:  10485760         0     unused      0     0        # (Cyl.      0 -  10402*)
 e:   2973600   5414000     4.2BSD   2048 16384     0  # (Cyl.   5371*-   8321*)
 f:   2098160   8387600     4.2BSD   2048 16384     0  # (Cyl.   8321*-  10402*)

Configurar la red: Sin duda lo primero que querras hacer una vez instalado NetBSD, es tener acceso a internet. Si tu red no usa DHCP (edita el rc.conf agregando dhclient=NO), podes seguir estos pasos para configurar la red. En la instalación el hostname queda configurado en el /etc/rc.conf en la variable ‘hostname’ y el dominio en la variable ‘domainname’. Sin embargo es mas prolijo utilizar otros archivos fuera del rc.conf:
Para el hostname:

echo "hostname-elegido" >  /etc/myname

Para el dominio:

echo "dominio-elegido" > /etc/defaultdomain

Para la puerta de enlace por defecto (o gateway):

echo "puerta de enlace por defecto" > /etc/mygate

Para configurar cada interfaz: Hemos de crear un archivo llamado /etc/ifconfig.iface-name por cada interfaz (en mi caso wm0, quedaria como /etc/ifconfig.wm0), en este archivo colocaremos parámetros de ifconfig que serán ejecutados contra la interfaz, un ejemplo sencillo sería:

up
192.168.1.1 netmask 255.255.255.0

Estas lineas haran que se ejecuten los siguientes comandos:

ifconfig wm0 up
ifconfig wm0 192.168.1.1 netmask 255.255.255.0

Software: NetBSD utiliza un sistema de paquetes precompilados. Para poder utilizarlo, hay que setear la variable PKG_PATH, la cual contiene el url del mirror del repositorio. En caso de un NetBSD  6.1 sobre i386 esta configuración sería válida.

 PKG_PATH=ftp://ftp.NetBSD.org/pub/pkgsrc/packages/NetBSD/i386/6.1/All

Para no hacer un ‘export PKG_PATH=…’ cada vez que necesitemos instalar un paquete, simplemente copiamos este comando en el .profile para que quede así:

export PKG_PATH=ftp://ftp.NetBSD.org/pub/pkgsrc/packages/NetBSD/i386/6.1/All

Al abrir una nueva terminal, podremos verificar con el comando ‘env’ que la variable queda definida. En caso de que haya que pasar por un proxy, hay que setear la variable FTP_PROXY con el proxy correspondiente.
Finalmente para agregar software a nuestro OS, utilizamos pkg_add.
Aca van un par de ejemplos de soft que siempre utilizo

pkg_add -v nmap
pkg_add -v wget
pkg_add -v links
pkg_add -v fping

Con pkg_info podemos listar los paquetes instalados y obtener información de cada paquete:

Vipper# pkg_info
pcre-8.33           Perl Compatible Regular Expressions library
fontconfig-2.10.93nb2 Library for configuring and customizing font access
nmap-6.25nb3        Network/port scanner with OS detection
fluxbox-1.3.2nb5    Window Manager for X based on Blackbox
sessreg-1.0.8       Manage utmp/wtmp entries for xdm
libXft-2.3.1nb3     Library for configuring and customizing font access
xdm-1.1.11nb4       X Display Manager from modular X.org
libidn-1.27         Internationalized Domain Names command line tool
wget-1.14nb3        Retrieve files from the 'net via HTTP and FTP
links-2.7nb1        Lynx-like text WWW browser
fping-2.4b2nb1      Quickly ping many hosts w/o flooding the network
pkgfind-20111022    Find packages by package name in pkgsrc

Vipper# pkg_info fping-2.4b2nb1
Information for fping-2.4b2nb1:

Comment:
Quickly ping many hosts w/o flooding the network

Description:
A tool to quickly ping N number of hosts to determine their reachability
without flooding the network.

     fping is different from ping in that you can specify any number of
	 hosts on the command line, or specify a file containing the lists
	 of hosts to ping. Instead of trying one host until it timeouts or
	 replies, fping will send out a ping packet and move on to the next
	 host in a round-robin fashion. If a host replies, it is noted and
	 removed from the list of hosts to check. If a host does not respond
	 within a certain time limit and/or retry limit it will be considered
	 unreachable.

     Unlike ping, fping is meant to be used in scripts and its
     output is easy to parse.

Homepage:
http://www.fping.com/

Bien, hasta aquí con este post, en el siguiente veremos con configurar este OS como un firewall/router y como configurar el desktop. Espero que les sirva como punta de ovillo. Cualquier duda será bien recibida.

~ have fun!