martes, 8 de agosto de 2017

Servidor PXE en Ubuntu 16.04

Escenario.

Es un entorno para arrancar e instalar el SO a través de la red.  PXE, (Preboot eXecution Enviroment)
La idea es que las máquinas que arranquen por red, instalen Ubuntu 16.04 con el disco cifrado y de forma desatendida.

Trabajando con VB, máquina server con dos interfaces:
- enp0s3 hacia internet con ip 10.2.0.15
- enp0s8 hacia la red de clientes 192.168.1.1/24

Cliente:
- arranque por red

Instalación de servicios.


En primer lugar se deberían instalar servidores DHCP, TFTP, Apache2.

Utilizamos el servidor DHCP para gestionar las peticiones de los clientes, por otro lado utilizaremos TFTP para la descarga de archivos de configuración. Y Apache2 para servir el SO a los clientes.

Configuración de ficheros

En primer lugar hay que editar el archivo de configuración de tftp, y añadir la siguentes lineas:

/etc/defatul/tftpd-hpa

RUN_DAEMON ="yes"
OPTIONS = "-l -s /var/lib/tftpboot"




Editamos el archivo /etc/inetd.conf, y añadimos la siguiente linea:

tftp dgram udp wait root /usr/sbin/in.tftpd /usr/sbin/in.tftpd -s /var/lib/tftpboot

#Si utilizan ipv6, deberán cambiar udp por upd4

Reiniciamos el sevicio tftpd-hpa y comprobamos su estado 




Descargamos la imagen de la web de ubuntu y la montamos en /mnt/

mount -o loop ubuntu-16.04.3-server-amd64.iso /mnt/

Necesitamos el contenido de netboot referente a nuestra imagen, podemos obtenerlo de la web de ubuntu





Descomprimimos netboot y copiamos su contenido a /var/lib/tftpboot/

cp -fr ./netboot/* /var/lib/tftpboot/


Muestro los archivos que contiene mi netboot:


Necesitamos copiar los archivos del SO, anteriormente montado en /mnt/ en los ficheros de apache.

cp -fr /mnt/* /var/www/html/ubuntu/


Hay que añadir las siguientes lineas al archivo /var/lib/tftpboot/pxelinux.cfg/default

label linux
kernel ubuntu-installer/amd64/linux
append ks=http://dirección_servidor/preseed.cfg vga=normal initrd=ubuntu-installer/amd64/initrd.gz preseed/url=http://direccion_servidor/preseed.cfg preseed/interactive=false
ramdisk_size=16432 root=/dev/rd/0 rw --

Esto nos genera una nueva opción dentro del menú de instalación, e indica de donde tirar para los archivos de arranque.

Configuración de red.

Para evitar realizar un mirror en local, realizaremos un puente entre las dos interfaces del servidor, para que los clientes consulten directamente a es.archive.ubuntu.com
Para ello lo configuraremos mediante iptables.
Limpiamos todas las rutas que pudiera contener:

iptables -F
iptables -X
iptables -t nat -F
iptables -t nat -X
iptables -t mangle -F
iptables -t mangle -F
iptables -t INPUT ACCEPT
iptables -t FORWARD ACCEPT
iptables -t OUTPUT ACCEPT

Y verificamos con
iptables -L

Para activar ip_forward:
echo "1" > /proc/sys/net/ipv4/ip_forward
(esto se desactiva en cada reinicio, para evitarlo, hacer lo siguiente)

Editar el archivo /etc/sysctl.conf
y descomentar

net.ipv4.ip_forward=1

A continuación creamos la ruta:
iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o enp0s3 -j SNAT --to 10.0.2.15

-A POSTROUTING: añade una regla de la cadena POSTROUTING
-s 192.168.1.0/24: Se aplica a los paquete que provienen de 192.168.1.0/24
-o enp0s3: paquetes que se entrega a traves de enp0s3, que es la interface de la red cliente
-j SNAT --to 10.0.2.15. Destino


Hay que indicar el rango y la red correspondientes.


Debemos reiniciar el servicio dhcp.

Archivo pressed.

Se utiliza para una instalación desatendida. Mi archivo es el siguiente:

d-i debian-installer/locale string es_ES.UTF-8
d-i console-setup/ask_detect boolean false
d-i keyboard-configuration/xkb-keymap select es
d-i netcfg/choose_interface select auto
d-i netcfg/get_hostname string unassigned-hostname
d-i netcfg/get_domain string unassigned-domain
d-i netcfg/wireless_wep string
d-i mirror/country string manual
d-i mirror/http/hostname string es.archive.ubuntu.com
d-i mirror/http/directory string /ubuntu
d-i passwd/user-fullname string *nombre_completo*
d-i passwd/username string *nombre_usuario*
d-i passwd/user-password password *clave_usuario*
d-i passwd/user-password-again password  *clave_usuario*
d-i user-setup/allow-password-weak boolean true
d-i user-setup/encrypt-home boolean false
d-i clock-setup/utc boolean true
d-i time/zone string Europe/Madrid
d-i clock-setup/ntp boolean true
d-u partman-auto/disk string /dev/sda
d-i partman-lvm/confirm boolean true
d-i partman-auto-lvm/guided_size string max
d-i partman-auto/method string crypto
d-i partman-crypto/passphrase password *clave_cifrado*
d-i partman-crypto/passphrase-again password *clave_cifrado*
d-i partman-crypto/weak_passphrase boolean true
d-i partman-lvm/device_remove_lvm boolean true
d-i partman-md/device_remove_md boolean true
d-i partman-auto/choose_recipe select boot-crypto
d-i partman-auto-lvm/new_vg_name string crypt
d-i partman-partitioning/confirm_write_new_label boolean true
d-i partman/choose_partition select finish
d-i partman/confirm boolean true
d-i partman/confirm_nooverwrite boolean true
tasksel tasksel/first multiselect ubuntu-desktop
d-i grub-installer/bootdev string /dev/sda
d-i grub-installer/only_debian boolean true
d-i grub-installer/with_other_os boolean true
d-i pkgsel/include string libpam-cracklib curl bash-completion
d-i preseed/late_command string \
cryptsetup luksAddKey /dev/sda5; \
cryptsetup luksAddKey /dev/sda5; \
echo "password        required        pam_cracklib.so retry=3 minlen=10 difok=3 dcredit=1 ucredit=1 lcredit=1 ocredit=1" >> /target/etc/pam.d/common-password; \
echo "auth              required        pam_tally2.so   deny=5  unlock_time=600" >> /target/etc/pam.d/common-auth;\
sed -i -e 's/PASS_MAX_DAYS.*/PASS_MAX_DAYS\ 100/g' /target/etc/login.defs; \
sed -i -e 's/PASS_WARN_AGE.*/PASS_WARN_AGE\ 20/g' /target/etc/login.defs; \
echo "" > /target/etc/apt/apt.conf
d-i finish-install/reboot_in_progress note

Realizará una instalación desatendida, y cifrará el disco con la clave que indiquemos, nos creará el usuario que indiquemos y su clave.
Este archivo lo he incluido en /var/www/html/

#Tuve problemas para coger el mirror a través de internet, añadí manualmente la dirección es.archive.ubuntu.com en el fichero /etc/hosts del servidor.

Por último debemos configurar la máquina para que arranque por red. Yo estoy utilizando Vbox


miércoles, 1 de octubre de 2014

Bonding

Introducción.

El controlador bonding, originalmente creado por Donald Becker, está incluido en prácticamente todas las distribuciones de GNU/Linux y permite sumar las capacidades de varias interfaces físicas de red con objeto de crear una interfaz lógica. Esto se lleva a cabo con el objeto de contar con redundancia o bien balanceo de carga.

Procedimientos.

Archivo de configuración.

En CentOS 5 y Red Hat Enterprise Linux 5 se debe editar el archivo /etc/modprobe.conf:
vi /etc/modprobe.conf
En ALDOS 1.4CentOS 6 y Red Hat Enterprise Linux 6 se debe crear un archivo que puede denominarse arbitrariamente como/etc/modprobe.d/bonding.conf:
vi /etc/modprobe.d/bonding.conf
En cualquiera de los dos casos mencionados, se debe añadirse lo siguiente para asociar el controlador bonding a la interfaz bond0 del siguiente modo:
alias bonding bond0
El controlador puede llevar además opciones que permiten modificar su funcionamiento, de entre los cuales los más importantes sonmode y miimon. A fin de obtener un buen funcionamiento, es importante configurar al menos estas dos opciones.
Para fines generales, se puede puede utilizar lo siguiente:
alias bond0 bonding
options bonding mode=0 miimon=0
El valor de la opción mode establece la política de balanceo de carga y tolerancia a fallos y el valor de la opción miimon establece al tipo de supervisión de MII, donde 0 corresponde la configuración más común.
Al terminar con el archivo /etc/modprobe.conf, es importante utilizar el mandato depmod con la opción -a para regenerar el archivomodules.dep, el cual es utilizado como el mapa de dependencias de los controladores utilizados por el núcleo del sistema.
depmod -a
Lo anterior solo debe devolver el símbolo de sistemas después de unos segundos.

Opción mode.

Se utiliza para establecer la política baja la cual se hará trabajar las tarjetas en conjunto. Los posibles valores son:
0 (cero): Establece una política de Round-Robin, que es un algoritmo que asigna una carga equitativa y ordenada a cada proceso, para proporcionar tolerancia a fallos y balanceo de carga entre los miembros del arreglo de dispositivos. Todas las transmisiones de datos son enviadas y recibidas de forma secuencial en cada interfaz esclava del arreglo empezando con la primera que esté disponible. Es la política predeterminada del controlador y la que funciona para la mayoría de los casos.
1 (uno): Establece una política de respaldo activo que proporciona tolerancia a fallos. Todo el tráfico se transmite a través de una tarjeta y solo se utilizará la otra en caso de que falle la primera.
2 (dos): Establece una política XOR (exclusive-or, exclusiva-o) para proporcionar tolerancia a fallos y balanceo de carga. Este algoritmo compara las solicitudes entrantes de las direcciones MAC hasta que coinciden para la dirección MAC (Media Access Control) de una de las tarjetas esclavas. Una vez que se establece el enlace, las transmisiones de datos de datos son enviadas en forma secuencial empezando con la primera interfaz disponible.
3 (tres): Establece una política de Round-Robin, para proporcionar tolerancia a fallos y balanceo de carga. Todas las transmisiones de datos son enviadas de forma secuencial en cada interfaz esclava del arreglo empezando con la primera que esté disponible.
En el siguiente ejemplo se establece la política 0 (cero):
options bonding mode=0

Opción miimon.

Se utiliza para especificar cada cuantos milisegundos se debe supervisar el enlace MII (Media Independent Interface). Se utiliza cuando se necesita alta disponibilidad para verificar si la interfaz está activa y verificar si hay un cable de red conectado. En el siguiente ejemplo se establecen 100 milisegundos:
options bonding mode=0 miimon=100
Se requiere que todos los controladores del arreglo de tarjetas tengan soporte para MII. Para verificar si el controlador de la tarjeta tiene soporte para MII, se utiliza el mandato ethtool, donde la salida debe devolver Link Detected con el valor yes. Ejemplo:
ethtool eth0
Lo anterior debe devolver algo similar a lo siguiente:
Settings for eth0:
 Supported ports: [ TP MII ]
 Supported link modes:   10baseT/Half 10baseT/Full 
                         100baseT/Half 100baseT/Full 
 Supports auto-negotiation: Yes
 Advertised link modes:  10baseT/Half 10baseT/Full 
                         100baseT/Half 100baseT/Full 
 Advertised auto-negotiation: Yes
 Speed: 100Mb/s
 Duplex: Half
 Port: MII
 PHYAD: 32
 Transceiver: internal
 Auto-negotiation: on
 Supports Wake-on: pumbg
 Wake-on: d
 Current message level: 0x00000007 (7)
 Link detected: yes
Para desactivar esta función, se utiliza el valor 0 (cero). Ejemplo:
options bonding mode=0 miimon=0

Archivo de configuración /etc/sysconfig/network-scripts/bond0.

Este se configura con las mismas variables de un dispositivo de red regular. Requiere las variables ONBOOTBOOTPROTODEVICE,IPADDRPREFIX (o bien NETMASK en CentOS 5 y Red Hat™ Enterprise Linux 5) y GATEWAY.
En el siguiente ejemplo se configura la interfaz bond0 con la dirección IP estática 192.168.0.1, máscara de subred de 24 bits (255.255.255.0), puerta de enlace 192.168.0.254 y la interfaz inicia junto con el sistema creando el archivo /etc/sysconfig/network-scripts/ifcfg-bond0 con el siguiente contenido:
DEVICE=bond0
ONBOOT=yes
BOOTPROTO=static
IPADDR=192-168.0.1
PREFIX=24
GATEWAY=192.168.0.254
Las interfaces de red a utilizar como esclavas se configuran de la siguiente forma, considerando que se tiene eth0 y eth1, el contenido del archivo /etc/sysconfig/network-scripts/ifcfg-eth0 sería:
DEVICE=eth0
BOOTPROTO=none
ONBOOT=no
SLAVE=yes
MASTER=bond0
Y el contenido del archivo /etc/sysconfig/network-scripts/ifcfg-eth1 sería:
DEVICE=eth1
BOOTPROTO=none
ONBOOT=no
SLAVE=yes
MASTER=bond0

Iniciar, detener y reiniciar el servicio network.

Para ejecutar por primera vez el servicio network tras configurar el acoplamiento de tarjetas, utilice:
service network start
Para hacer que los cambios hechos tras modificar la configuración surtan efecto, utilice:
service network restart
Para detener el servicio network utilice:
service network stop

Comprobaciones.

Para verificar que la interfaz lógica quedó configurada, en el caso de haber utilizado las interfaces eth0 y eth1, utilice:
ip addr list
Lo anterior debe devolver algo similar a lo siguiente:
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue 
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: eth1: <BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master bond0 qlen 1000
    link/ether 00:06:4f:80:0d:92 brd ff:ff:ff:ff:ff:ff
3: eth0: <BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master bond0 qlen 1000
    link/ether 00:06:4f:80:0d:92 brd ff:ff:ff:ff:ff:ff
4: sit0: <NOARP> mtu 1480 qdisc noop 
    link/sit 0.0.0.0 brd 0.0.0.0
5: bond0: <BROADCAST,MULTICAST,MASTER,UP,LOWER_UP> mtu 1500 qdisc noqueue 
    link/ether 00:06:4f:80:0d:92 brd ff:ff:ff:ff:ff:ff
    inet 192.168.0.1/24 brd 192.168.1.255 scope global bond0
    inet6 fe80::206:4fff:fe80:d92/64 scope link tentative 
       valid_lft forever preferred_lft forever
Para verificar que las interfaces de red están funcionando correctamente y que hay un cable de red conectado a éstas, se utiliza el mandato ethtool del siguiente modo:
ethtool eth0 |grep "Link detected"
ethtool eth1 |grep "Link detected"
Si ambas tarjetas tiene soporte para MII, lo anterior debe devolver lo siguiente:
 Link detected: yes
 Link detected: yes

Autor: Joel Barrios

miércoles, 4 de junio de 2014

Instalar Domjudge en Debian


DOMJUDGE


En primero lugar necesitamos al menos dos equipos, uno sera el DOMSERVER, y otro el JUDGEHOST. En primer lugar configuraremos el DOMSERVER.

Instalamos paquetes necesarios.

apt-get install gcc g++ make libcurl4-gnutls-dev mysql-server apache2 php5 php5-cli libapache2-mod-php5 php5-mysql php-geshi ntp sudo procps sharutils phpmyadmin xsltproc libboost-regex-dev libgmp3-dev linuxdoc-tools transfig texlive-latex-extra textlive-fonts-recommended gcj-doc openjdk-6-jre-headless openjdk-6-jdk ghc fp-compiler

##En la instalacion nos pedira contraseñas para mysql y phpmyadmin.

Cambiamos el hostname de nuestra maquina para diferenciarlas
nano /etc/hostname
DOMSERVER

Creamos un usuario DOMJUDGE

Descargamos paquete domjudge de su pagina oficial
Una vez descargado nos situamos en el directorio de descarga y descomprimimos.
tar -xczf domjudge.tar.gz

Entramos en el directorio que se descomprime
cd domjudge

Instalamos el DOMSERVER en el directorio que queramos, yo lo instalare en /usr/local/domjudge
./configure -prefix = /usr/local/domjudge
make domserver
make install-domserver

Entramos en el directorio donde instalamos el DOMSERVER.
cd /usr/local/domjudge
./dj-setup-database -u root -r install
(introducir contraseña de root en mysql)

Una vez hecho esto podemos entrar.
mysql -u root -p
exit;

Editamos el fichero de mysql, cambiamos las siguientes lineas
nano /etc/mysql/my.cfg
bind-address 192.168.1.1 (Direccion IP DOMSERVER)
max_connections = 1000
max_allow_packet = 128M


Reiniciams servicio mysql
service mysql restart


Vemos si mysql escucha por todos los puertos (*)
netstat -tlpn

Volvemos a entrar en mysql, y ejecutamos las siguientes sentencias
mysql -u root -p

grant all privileges on *.* to 'domjudge'@'192.168.1.1' IDENTIFIED BY “domjudge”
grant all privileges on *.* to 'domjudge'@'192.168.1.2' IDENTIFIED BY “domjudge”
grant all privileges on *.* to 'root'@'192.168.1.1' IDENTIFIED BY “toor01”
grant all privileges on *.* to 'root'@'192.168.1.2' IDENTIFIED BY “toor01”


Salimos y establecemos la siguiente ruta
iptables -A INPUT -i interfaz salida -s 'IPjudgehost' -ptcp - -destination-port 3306 -j ACCEPT
iptables -A INPUT -i eth1 -s '192.168.1.2' -ptcp - -destination-port 3306 -j ACCEPT

Reiniciamos mysql
Service mysql restart

En este paso, debemos tener el segundo equipo preparado en la misma red que el DOMSERVER, unicamente, debemos tener instalados los mismos paquetes que en DOMSERVER.
Desde JUDGEHOST probaremos el acceso remoto a mysql. Una vez hecho volveremos al DOMSERVER
mysql -u root -h 192.168.1.1 -p



En el directorio donde instalamos de DOMSERVER hay un archivo de configuracion de apache que sustituiremos por el que esta usando.
cp /usr/local/domjudge/domserver/etc/apache.conf /etc/apache2/sites-available/domjudge.conf

Lo editamos y añadimos
NameVirtualHost domjudge.com (sera la direccion por la que accederemos atraves del navegador)
<Virtual Host *>
Server Name domjudge.com
DocumentRoot /usr/local/domjudge/domserver/www
</Virtual Host>

Activamos sitio
a2ensite domjudge.conf

Reiniciamos servidor apache
service apache2 restart

Haremos una prueba en Local, y remota del entorno grafico
-Local (desde DOMSERVER)
Prueba a poner en la barra del navegador...
domjudge.com/public
domjudge.com/team
domjudge.com/jury


-Remota (desde JUDGEHOST)
Prueba a poner en la barra del navegador...
http://192.168.1.1/domjudge.com/public

**Si nos da algun fallo haciendo esta operación, podemos solucionar el problema editando el fichero dbpassword.secret y cambiamos el usuario domjudge por root y su contraseña, hecho esto podremos acceder**


Creacion de Jueces

Nos situamos en el siguiente directorio
cd /usr/local/domjudge/domserver/etc

Cambiamos la contraseña del adminitrador total domjudge_ jury
htpasswd htpasswd-jury domjudge_jury

Creamos un juez normal
htpasswd thpasswd-jury (nombre que queramos)


JUDGEHOST

Nos situamos en el segundo equipo, el JUDGEHOST. Este equipo tendra instalados los mismo paquetes que el DOMSERVER. creamos un usuario JUEZ, que ejecutara el demonio. Con el paquete del domjudge descargado, lo descomprimimos e instalamos
./configure prefix = /usr/local/domjudge
make judgehost
make install-judgehost

Cambiamos el hostname de nuestra maquina para diferenciarlas
nano /etc/hostname
DOMJUDGE

Como root...
useradd -d /noexistent -g group -s /bin/false domjudge-run
dj-make-chroot /usr/local/var/lib/domjudge/chroot i386

esperar....


Editamos el siguiente fichero, y modificamos las lineas.
nano /usr/local/domjudge/judgehost/etc/judgehost-config.php

('CHROOT_SCRIPT', '') por ('CHROOT_SCRIPT', 'chroot-startstop.sh')

Editamos el siguiente fichero y cambiamos las lineas
/usr/local/domjudge/judgehost/etc/chroot-startstop.sh
CHROOTORIGINAL=”/usr/local/domjudge/judgehost/chroot”



visudo
añadimos
juez ALL= (root) NOPASSWD: /bin/mount -n -t proc - -bind /proc proc
juez ALL= (root) NOPASSWD: /bin/umount /*/proc
juez ALL= (root) NOPASSWD: /bin/mount - -bind /usr/local/var/lib/domjudge/chroot/*
juez ALL= (root) NOPASSWD: /bin/umount /usr/local/var/lib/domjudge/judgings/*

Editamos /etc/mysql/my.cfg
buscamos max_allowed_packet y ponemos 128M


Instalamos el servicio ssh en ambas maquinas y copiamos las contraseñas de un equipo a otro
scp domjudge@192.168.1.1: /usr/local/etc/domjudge/dbpasswords.secret /usr/local/etc/domjudge

El demonio que ejecutaremos se llama JUDGEDAEMON, cambiaremos su propietario
chwon juez /usr/local/bin/judgedaemon
chwon 600 /usr/local/etc/domjudge/dbpassword.secret
chwon juez /usr/local/etc/domjudge/dbpassword.secret

Probamos a entrar con el usuario juez
su juez

Editamos el fichero y cambiamos la IP por la de DOMSERVER
nano dbpasword.secret

Ejecutamos el demonio
judgedaemon

En el DOMSERVER, entramos como juez, y veremos como en el menu judgehost, se unio un nuevo judgehost.

sábado, 22 de febrero de 2014

Sistema de archivos NFS

Sistema de archivos NFS

Permite montar sistemas de archivos sobre la red y otros equipos puedan acceder como si estuvieran montados localmente.

Partiendo de tener configurado un servidor y un cliente en la misma red. Se instalan en los dos equipos los siguientes paquetes:
apt-get install nfs-kernel-server 
apt-get install nfs-common

En el servidor creamos en raiz, el directorio Compartido

Editamos el fichero exports
nano /etc/exports

Añadimos una linea al final,  la carpeta que hemos compartido, seguida de alguna de las opciones que se puede añadir:

- rw/ro exporta en modo lectura/escritura o sólo lectura

- root_squash mapea los requerimientos del UID/GID 0 al usuario anónimo (por defecto                                                    usuarionobody, con UID/GID 65534); es la opción por defecto

- no_root_squash no mapea root al usuario anónimo

- all_squash mapea todos los usuarios al usuario anónimo

- squash_uids/squash_gids especifica una lista de UIDs o GIDs que se deberían trasladar al usuario anónimo

- anonuid/anongid fija el UID/GID del usuario anónimo (por defecto 65534)

- subtree_check/no_subtree_check con subtree_check, si se exporta un subdirectorio el servidor comprueba que el fichero solicitado por el cliente esté en el subdirectorio exportado; con no_subtree_check (opción por defecto) se deshabilita ese chequeo

- sync  requiere que todas las escrituras se completen antes de continuar, por defecto

- async  no requiere que todas las escrituras se completen; más rápido, pero puede provocar pérdida de datos en una caída

- secure los requerimientos deben provenir de un puerto por debajo de 1024

- insecure los requerimientos pueden provenir de cualquier puertp

la sintaxis es la siguiente. Por ejemplo:
(ruta subdirectorio) (usuarios, grupos) (opciones)
/nfs  *(rw, insecure)

Exportamos la carpeta mediante;
exportsfs -ra

Y para ver las carpetas exportadas ejecutamos

exportfs
E iniciamos el servicio

service nfs-kernel-server start

Nos situamos en el cliente

Montamos la carpeta compartida del servidor en el directorio /mnt con la siguiente sintaxis

mount -t nfs (ipdelServidor):(ruta de la carpeta) (donde lo queramos montar)

mount -t nfs 192.168.10.1:/nfs /mnt

Si el cliente tiene permisos sobre esa carpeta podra crear y modificar en ella

Montar la carpeta mediante fstab

Para ello editamos el fichero fstab, y añadimos una linea

192.168.10.1:/nfs /mnt

Servicio DHCP Relay


DHCP RELAY

Es un servidor conectado a dos redes que recibe una solicitud de DHCP y consigue enviarla a un verdadero servidor DHCP.

Configuracion e instalacion de Servicios

Instalaremos en el servidor principapl el servicio DHCP


apt-get install isc-dchp-server

Editamos fichero dhcpd.conf y determinaremos dos rangos en los que el primero se refiere a la subred que hay entre servidores, que aunque no asigne direcciones IP a esos servidores, necesita saber cual es el camino hasta la subred a la que dara direccion. Y para ello tambien definimos la subred que hay entre el servidor "RELAY" y su cliente. En primer lugar definimos la subred mas lejana



subnet 192.168.11.0 netmask 255.255.255.0{
range 192.168.11.10 192.168.11.20;
option routers 192.168.10.1;
...
...
}



subnet 192.168.10.0 netmask 255.255.255.0{
range 192.168.10.10 192.168.10.20;
option routers 192.168.10.1;
...
...
}

Reiniciamos servicio.

Necesitamos que el servidor relay, tenga un puente hecho entre las dos subredes

Una vez hecho el puente procedemos a instalar el servicio dhcp relay


 apt-get install isc-dhcp-relay

En el menu que nos aparece configuramos la ip del servidor real de DHCP, la interfaz por la que escucha y establecemos el parametro -a


Para ejecutar el servicio:

dhcrelay (dirección del equipo) -i (interfaz del equipo)
dhcrelay 192.168.10.1 -i eth0

En el servidor principal estableceremos la siguiente ruta:

route add -net (Dirección de subred) netmask (Máscara de subred) (interfaz).
route add -net 192.168.10.0 netmask 255.255.255.0 eth0


Reiniciamos servicios



jueves, 13 de febrero de 2014

Fichero FSTAB

Montar ficheros mediante FSTAB

Conoceremos la esctrura de fstab antes de editarlo

<file system> indica donde esta la carpeta
<mount point> indica el punto de montaje
<type> tipo de datos: ext2, ext3, nfs, xfs, smbfs, ntfs... seguido de :
auto que se monte automaticamente como el disco duro
noauto que se monte cuando este disponible como el cdrom
exec ejecutar binarios
no exec no ejecutar binarios
ro solo lectura
rw lectura y escritura
sync sincrona
async asincrona
user quien lo puede montar
nouser solo puedo montar y desmontar root
defaults valores por defecto (rw,suid,dev,exec,auto,nouser,async)


<dump> se establecen valores 0 o 1, para crear copias de seguridad
<pass> se establece valores 0, 1 o 2, donde 2 se utilizar para la maxima prioridad y 0 para la minima


- Montar carpeta samba
nano fstab
al final
Por ejemplo:

<filesystem>                      <mount point> <type><options>      <dump><pass>
//192.168.10.1/compartida   /mnt                 cifs     username=user01   0           0

mount -a para montar todo


- Montar carpeta NFS
nano fstab
al final
Por ejemplo:

<filesystem>                      <mount point> <type><options>      <dump><pass>
192.168.10.1:/compartida   /mnt                 cifs     username=user01   0           0

mount -a para montar todo

Hay un riesgo de que un usuario lea el usuario y la contraseña que introducimos en fstab para ello podemos crear un archivo por ejemplo llamado credentials en /etc el que contendra
username=user01
passwd=12345

Y en fstab ponemos el fichero y su ruta credentials=/etc/credentials

<filesystem>                      <mount point> <type><options>                           <dump><pass>
192.168.10.1:/compartida   /mnt                 cifs     credentials=/etc/credentials   0           0



Servicio Samba

Servicio Samba

En el servidor instalamos el paquete
apt-get install samba smbclient

Creamos en la raiz un directorio llamado samba
mkdir samba

Editamos el fichero de configuracio de samba alojado en /etc/samba/
nano smb.conf

Dentro de este fichero podemos configurar entre otras cosas:
En la pestaña global

El grupo de trabajo entre servidor y cliente
workgroup= workgorup

security= user (pedira usuario y contraseña) share (todos).

En la pestaña Share Definitions

homes net logan proflies

Ahora lo unico que nos interesa es compartir el recurso
Nos fijamos en la linea que viene entre corchetes, ese sera el nombre, por el que conoceran los equipos el recurso compartido. Con las siguientes opciones...

paht=/samba
comment=carpeta comparrida
guest_ok = yes invitados
browseables=yes
crate mask= 0700
directory mask= 0600

Dentro de la carpeta que creamos con anterioridad en la raiz, creamos un fichero para comprobar que se comparte
Si solo permitimos el acceso mediante usuario y contraseña, a samba solo se puede acceder con usuarios dados de alta en el propio samba, para ello:
smbpasswd -a usuario 

Para eliminar usuario
smbpasswd -x usuario

Reiniciamos servicio
samba restart

En el cliente Windows, escribimos en el explorador de archivos
// 192.168.1.1(direccion ip del servidor) 

Para poder acceder a traves del navegador instalamos un paquete
apt-get install cifs-utils

Y accederemos de la siguiente manera
smb://192.168.1.1/




miércoles, 12 de febrero de 2014

Servicio FTP

Intercambiar ficheros mediante el servicio FTP

Utilizan por defecto el puerto 20 y 21

Supongamos que tenemos dos equipos, cliente y servidor.

En el servidor instalamos el servicio


apt-get install vsftpd

Y editamos su fichero de configuracion


nano /etc/vstpd.conf

Dentro de este fichero de configuracion podemos configurarlo para:

       -Que escuche o no el servidor


LISTEN = Yes

      -Habilitar usuarios (Podran conectarse al ftp los usuarios que este definidos en el servidor).


LOCAL_ENABLE = Yes

     -Si pueden escribir o no


WRITE_ENABLE = Yes

     -Permisos que se obtendran


LOCAL_UMASK = 022

Reiniciamos servicio


service vstfpd restart

En el cliente instalamos filezilla un cliente ftp
apt-get install filezilla

Ejecutamos la aplicacion y podremos hacer una prueba de conexion al servidor FTP
Comprobamos que directamente nos enjaula en la carpeta personal del usuario que hemos introducido.

Podemos entrar como uusarios anonimos descomentando la linea del fichero vsftpd.conf

ANONYMOUS_ENABLE=Yes

El usuario anonimo se enjaula en la carpeta /srv/ftp/

Para la subida de archivos, y subida con un determinado propietarios se descomentan las lineas

CHOWN_UPLOADS=YES
CHOWN_USERNAME=administrador (o usuario que queramos)


install atftpd o tftpd-hpa
configuracion /etc/default/ tftpd.conf
rundaemon =yes

cliente instalar el cliente tftp

tftp (direccion servidor)

conecta al servidor 
para copiar el get  y fichero que queramos

 

Servidor PXE en Ubuntu 16.04

Escenario. Es un entorno para arrancar e instalar el SO a través de la red.  PXE, (Preboot eXecution Enviroment) La idea es que las máqui...