Páginas

lunes, 26 de mayo de 2014

NFS Servidor FreeBSD


NFS FreeBSD

El Sistema de archivos de red o NFS, es la forma estándar para compartir archivos de UNIX a través de una red. Los usuarios del sistema NFS pueden acceder a ficheros ubicados físicamente en máquinas remotas de forma transparente, como si de ficheros locales se tratara.

Mi servidor ejecuta FreeBSD 9.1 con dos tarjetas de red:

em0 = 192.168.3.1 LAN
em1 = 192.168.1.250 WAN

La configuración de NFS es relativamente sencilla.

El servidor NFS debe ejecutar los demonios: nfsd, mountd, portmap (rpcbind); mountd se ejecuta de forma automática cuando se activa el servidor NFS.

Para que estos procesos se ejecuten en tiempo de arranque del sistema se incluyen las siguientes entradas en el archivo /etc/rc.conf:

inetd_enable="YES"
nfs_server_enable="YES"
nfs_server_flags="-u -t -n 4"
rpcbind_enable="YES"
mountd_flags="-r"
mountd_enable="YES"

Algunos cambios en el archivo /etc/hosts.allow

# Rpcbind is used for all RPC services; protect your NFS!
rpcbind : ALL EXCEPT 192.168.3.0/24 : deny

Archivo /etc/inetd.conf


El archivo /etc/exports especifica los directorios o sistemas de archivos exportados al exterior por NFS. Cada línea especifica un sistema de ficheros y que máquinas tienen derechos de acceso sobre dicho sistema. Existen muchas opciones, consulte man exports.

La siguiente línea exporta el directorio /datan de forma que puedan acceder a dicho directorio máquinas situadas en el mismo dominio.

La opción -maproot=root permite que el usuario root de la máquina cliente modifique los datos del sistema de ficheros en red como si fuera el usuario root del servidor.

La opción -alldirs permite a los clientes remotos montar cualquier directorio del sistema de archivos directamente. Sin esta opción, los clientes remotos sólo pueden montar el directorio raíz de la sistema de archivos exportado

La opción -network restringe el acceso a los sistemas de la red especificada.

# ee /etc/exports
/datan -maproot=root -alldirs -network 192.168.3.0

Iniciar NFS en el servidor FreeBSD:
# rpcbind
# nfsd -u -t -n 4
# mountd -r

Una vez realice cambios en el archivo /etc/exports necesita reiniciar el demonio mountd:
# kill -HUP `cat /var/run/mountd.pid`

Ejecutar NFS En cliente FreeBSD:

Fichero /etc/rc.conf

nfs_client_enable="YES"
nfs_client_flags="-n 4"
rpc_lockd_enable="YES"
rpc_statd_enable="YES"

Desde el cliente:
# nfsiod -n 4

Crear el punto de montaje:
# mkdir /media/datan

Nos interesa que el directorio pertenezca al grupo carles:
# chown carles /media/datan/

# ls -ld /media/datan/
drwxr-x---  2 root  carles  512 24 may 08:36 /media/datan/

Otorgar permisos rw al grupo propietario del directorio montado
# chmod 770 /media/datan
$ ls -ld /media/datan/
drwxrwx---  2 root  carles  512 24 may 08:00 /media/datan/

En este punto debería estar listo para anclar el sistema de ficheros remoto en la máquina cliente:
# mount_nfs 192.168.3.1:/datan /media/datan/

Montar automáticamente directorio compartido NFS:
teclee la siguiente línea a /etc/fstab:

freebsdsvr:/datan  /media/datan  nfs rw,bg,hard  0  0

Donde bg significa que si un primer intento de contacto con el servidor falla, seguirá intentando el montaje en segundo plano y hard quiere decir que si el servidor no responde, hacer que las operaciones que intenten accederlo se bloqueen hasta que el servidor esté activo (El cliente debe esperar hasta que el sistema exportado por el servidor este disponible.)

Ya puede copiar y pegar utilizando el navegador de archivos Nautilus.

http://www.freebsd.org/doc/es/books/handbook/network-nfs.html

Unix es genial!.

martes, 20 de mayo de 2014

FreeBSD Server NAT IPFW


FreeBSD Server NAT IPFW

Nuestro servidor FreeBSD está dotado con dos tarjetas de red.

em0 interface LAN IP 192.168.3.1/24
em1 interface WAN (internet) 192.168.1.250/24

Algunos pasos adicionales son necesarios para que el servidor FreeBSD se convierta en router intermedario entre Internet y la red interna.

Después de intalar FreeBSD 9.1-RELEASE tendremos que recompilar el KERNEL para Habilitar NAT + FIREWALL, no sin antes tener las fuentes del núcleo instaladas.

Instalar las fuentes del kernel:
Si el directorio /usr/src/sys no existe quiere decir que las fuentes del kernel no están instaladas.

# fetch ftp://ftp.freebsd.org/pub/FreeBSD/releases/amd64/9.1-RELEASE/src.txz

Descomprimir el archivo en /usr/src:

# tar -C / -xvzf src.txz

Ahora desde el directorio arch/conf copiar el archivo de configuración GENERIC utilizando cualquier nombre:

# cp /usr/src/sys/amd64/conf/GENERIC /usr/src/amd64/conf/MYKERNEL

Añadir las siguientes opciones a /usr/src/sys/amd64/conf/MYKERNEL
# ee /usr/src/sys/amd64/conf/MYKERNEL
...
options    IPFIREWALL
options    IPFIREWALL_VERBOSE
options    IPFIREWALL_VERBOSE_LIMIT=5
options    IPFIREWALL_DEFAULT_TO_ACCEPT
options    IPDIVERT
...

Recompilar el kernel:
# cd /usr/src
# make buildkernel KERNCONF=MYKERNEL
# make installkernel KERNCONF=MYKERNEL

El nuevo kernel se copiará al directorio raíz como /kernel y el viejo kernel tendrá de nombre kernel.old.

Reiniciar el sistema con el nuevo kernel.

Nos conectamos vía SSH para comprobar el nuevo kernel:
$ ssh -p 2222 remoto@freebsdsvr
Password:

$ hostname
freebsdsvr.linux.bcn

$ uname -a


Archivos de configuración:

$ cat /etc/rc.conf
gateway_enable="YES"     # igual que net.inet.ip.forwarding=1
natd_enable="YES" # Habilita NAT
natd_interface="em1" # nombre de la interfaz NIC conecta a Internet
natd_flags="-dynamic -m" # -m = preserve port numbers; additional
firewall_enable="YES"    # activa ipfw firewall
firewall_type="simple"   # protege red interna (LAN)
firewall_logging="YES"   # habilita log
firewall_script="/etc/rc.firewall" # path scrip IPFW

$ cat /boot/loader.conf
ipfw_load="YES"
ipdivert_load="YES"
autoboot_delay="2"
loader_color="YES"

FreeBSD - The power to Serve!

http://www.pl.freebsd.org/doc/handbook/firewalls-ipfw.html

Unix es genial!.

jueves, 8 de mayo de 2014

Actualizar FreeBSD a STABLE


Actualizando FreeBSD a la última -STABLE version.

FreeBSD cambia todo el tiempo, y los cambios en la fuente se comprueban todos los días. La actualización a la última versión -STABLE ofrece todo este nuevo código sin romper programas instalados.

El nombre de "estable" se entiende mal a menudo. Esto no significa sólido o constante. -STABLE significa que mientras que el código se puede cambiar, el ABI (Application Binary Interface) se mantiene estable y no cambia. Programas compilados para ejecutar en FreeBSD 9.0-RELEASE, o 9.1-RELEASE, o 9.2-RELEASE continuarán trabajando en FreeBSD-STABLE 9.

Subversion debe estar instalado antes de que pueda ser utilizado para revisar el contenido de cualquiera de los repositorios. Instalar subversion como un paquete:
# pkg_add -r subversion

El FreeBSD código fuente en /usr/src es actualizado con svn desde el port devel/subversion. En este caso el directorio /usr/src existe y no fué creado con svn, por lo que hay que eliminar o renombrar:

# mv /usr/src /usr/src-old

Obtener el código fuente. svn conecta al mirror y descarga todo el source stable/9 al directorio /usr/src:

# svn checkout https://svn0.eu.freebsd.org/base/stable/9 /usr/src


Verifique la huella digital del servidor con las huellas dactilares que aparecen en los mirrors enlazados con anterioridad .

La comprobación sólo hay que hacer una vez. Después, la fuente se puede actualizar de forma rápida a la última versión en el repositorio Subversion con un comando de actualización:

# svn up /usr/src

Ahora que!

# rm -rf /usr/obj    
# cd /usr/src
# make buildworld
   
# make kernel  

Protesta!, falta el usuario auditdistd.



Creando el usuario auditdistd:

# pw useradd -n auditdistd -g audit -c "Auditdistd unprivileged user" -d /var/empty -s /usr/sbin/nologin

# make installworld  

Antes de utilizar mergemaster, se recomienda copiar el actual directorio /etc en algún lugar seguro. Incluya -R que hace una copia recursiva y -p que conserva los tiempos y las titularidades de los archivos:

# cp -Rp /etc /etc.old

# mergemaster -Ui  

# shutdown -r now
# cd /usr/src
# make check-old

Fuente: www.wonkity.com Warren Block
http://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/makeworld.html


Unix es genial!.