miércoles, 8 de julio de 2009

Servidor hogareño - versión OpenSolaris

En este artículo veremos cómo hacer un servidor hogareño con OpenSolaris.
La versión que se está utilizando en esta oportunidad, es la 2009.06, desde su repositorio de release (no se está usando la versión dev).

Servidor DHCP

Una vez instalado el sistema operativo, y ejecutado como root un "pkg refresh --full", procederemos a la instalación y configuración del servidor DHCP.
Para ello, ejecutamos:

# pkg install SUNWdhcs SUNWdhcm

Con eso quedan instalados tanto los binarios del dhcp server, como los del DHCP Manager, una herramienta gráfica para administrar DHCP basada en Java, que nunca pensé que podría haber sido tan útil sino hasta que tuve que usarla.
Para configurar el dhcp server, tengamos en cuenta algunos detalles importantes:
a) Basaré mi configuración en archivos, no en NIS, ni en DNS.
b) Guardaré dicha configuración en el directorio /var/dhcp
c) El rango de IP's de mi red estará en 10.100.100.0.
d) La dirección IP de mi servidor será 10.100.100.2
e) Necesito que uno de mis equipos obtenga siempre la misma dirección IP, que será la 10.100.100.4. La MAC address de este equipo será la 00:16:D4:0E:1C:A9.
f) Mi default router será el 10.100.100.1, y mis DNS's serán 200.42.0.111, 200.42.97.111, 200.42.0.110 y 200.42.97.110.
Con estos datos en mente, vamos a comenzar con la configuración del servidor DHCP.

1) Configurar archivos como fuente de información, /var/dhcp como directorio para poder los archivos de configuración, DNS servers, dominio, y lease time:

# dhcpconfig -D -r SUNWfiles -p /var/dhcp -a 200.42.0.111,200.42.97.111,200.42.0.110,200.42.97.110 -d hecsa.com.ar -h files -l 86400

2) Configurar la red, su máscara, y el default gateway:

# dhcpconfig -N 10.100.100.0 -m 255.255.255.0 -t 10.100.100.1

3) Configurar una dirección para un equipo en base a su MAC address, agregándolo al macro generado para la red 10.100.100.0:

# pntadm -A 10.100.100.4 -c "Battlelloyd" -f MANUAL -i 010016D40E1CA9 -m 10.100.100.0 -y 10.100.100.0

Nótese que en este caso, se ha agregado un "01" a la MAC address que queremos configurar.

4) Agregar direcciones IP al pool disponible para otros equipos, éstos dinámicos:

# pntadm -A 10.100.100.200 -m 10.100.100.0 -y 10.100.100.0
# pntadm -A 10.100.100.201 -m 10.100.100.0 -y 10.100.100.0
# pntadm -A 10.100.100.202 -m 10.100.100.0 -y 10.100.100.0
# pntadm -A 10.100.100.203 -m 10.100.100.0 -y 10.100.100.0
# pntadm -A 10.100.100.204 -m 10.100.100.0 -y 10.100.100.0
# pntadm -A 10.100.100.205 -m 10.100.100.0 -y 10.100.100.0
# pntadm -A 10.100.100.206 -m 10.100.100.0 -y 10.100.100.0
# pntadm -A 10.100.100.207 -m 10.100.100.0 -y 10.100.100.0
# pntadm -A 10.100.100.208 -m 10.100.100.0 -y 10.100.100.0
# pntadm -A 10.100.100.209 -m 10.100.100.0 -y 10.100.100.0
# pntadm -A 10.100.100.210 -m 10.100.100.0 -y 10.100.100.0

5) Reiniciamos el servidor DHCP para que tome los cambios realizados:

# svcadm restart dhcp-server

6) Abrimos el DHCP Manager, y configuramos los DNS's en forma correcta (no sé si esto es un bug, o algo que no configuré bien, pero debí hacerlo para que todo funcione):

$ pfexec dhcpmgr (nótese que en este caso no uso la cuenta de root, sino que hago un pfexec, para poder levantar la interface gráfica java)

La interface gráfica que levanto es la siguiente:



Ahora selecciono la solapa de Macros, dentro de la que elijo el Macro 10.100.100.0.
Ahora, del menú superior (Edit), selecciono la opción "Properties", y agrego la siguiente:
Option Name: DNSserv
Option Value: 200.42.0.111 200.42.97.111 200.42.0.110 200.42.97.110
Presiono el botón "Add", y lo confirmo con "OK".
Finalmente, reinicio los servicios de DHCP con el mismo DHCP manager, seleccionando, el menú superior, "Service", luego "Restart".
Salgo del DHCP Manager sencillamente con "File" - "Exit".

Listo! Ya ha quedado configurado el servidor DHCP, y está alimentando de direcciones IP al resto de mi red.

Servidor SAMBA

La siguiente fase de esta implementación es la de permitir que el sistema pueda compartir archivos con los demás clientes de la red. Para eso, elegimos el servidor SAMBA.
Para instalarlo, ejecutamos:

# pkg install SUNWsmba

Para los que están acostumbrados a GNU/Linux, algunos tips sobre los lugares donde encontraremos los archivos más comunes:
a) Archivos de configuración:
1) smb.conf: /etc/sfw/smb.conf
b) Archivos de log:
1) Por una cuestión de simplicidad, decidí poner los archivos de log en /var/log/samba, por lo cual debí generar ese directorio. Por omisión no lo genera, lógico!

Configuración del archivo smb.conf:

[global]
workgroup = HECSAGRP
netbios name = DSHECSA1
server string = %h server
obey pam restrictions = Yes
passdb backend = tdbsam
passwd program = /usr/bin/passwd %u
passwd chat = *Enter\snew\sUNIX\spassword:* %n\n *Retype\snew\sUNIX\spassword:* %n\n .
log level = 2
log file = /var/log/samba/log.%m
max log size = 1000
socket options = TCP_NODELAY IPTOS_LOWDELAY SO_SNDBUF=8192 SO_RCVBUF=8192
add user script = /usr/sbin/useradd -m %u
delete user script = /usr/sbin/userdel -r %u
add group script = /usr/sbin/groupadd %g
delete group script = /usr/sbin/groupdel %g
add user to group script = /usr/sbin/usermod -G %g %u
add machine script = /usr/sbin/useradd -d /var/lib/nobody -s /bin/false -M %u
logon script = %U.cmd
domain logons = Yes
os level = 65
domain master = Yes
dns proxy = No
wins support = Yes
ldap ssl = no
panic action = /usr/share/samba/panic-action %d
invalid users = bin, daemon, sys, man, postfix, mail, ftp
admin users = @wheel smbadmin
interfaces = 10.100.100.2 127.0.0.1
hosts deny = 10.100.100.1/255.255.255.255
hosts allow = 10.100.100.0/255.255.255.0

[homes]
comment = Home Directories
valid users = %S
read only = No
create mask = 0700
directory mask = 0700
browseable = No
dont descend = profile

[netlogon]
comment = Network Logon Service
path = /export/home/samba/netlogon
share modes = No

[printers]
comment = All Printers
path = /tmp
create mask = 0700
printable = Yes
browseable = No

[print$]
comment = Printer Drivers
path = /var/lib/samba/printers

[hecsarchive]
comment = Directorio Archivos de HeCSa
path = /archivos/hecsa
valid users = @interno, root
read only = No
create mask = 0770
directory mask = 0770
browseable = No

Agrego el usuario hecsa, mi usuario dentro de la red SAMBA, ya existente en OpenSolaris a nivel Unix:

# smbpasswd -a hecsa
New SMB password:
Retype new SMB password:
Added user hecsa.

Genero el path donde los usuarios del grupo "interno" podrán depositar sus archivos. Entre estos usuarios, tendré al usuario "hecsa":

# mkdir -p /archivos/hecsa
# groupadd interno

Ahora, modifico la línea correspondiente al archivo "/etc/group" para que el usuario "hecsa" forme parte de él:

interno::100:hecsa

Cambio los permisos del directorio a compartir:

# chgrp -R interno /archivos/hecsa

Para probar si todo funcionó bien, relanzo los procesos de Samba:

# svcadm restart samba

Desde mi PC intento levantar el path //10.100.100.2/hesarchive, y funciona perfectamente! Eso quiere decir que mi servidor de archivos ha quedado funcionando.
Victoria!