Páginas

Buscar este blog

domingo, 3 de noviembre de 2013

Mover Sistema a disco nuevo

Mover FreeBSD a disco nuevo

Moveri instalación FreeeBSD (9.1) desde un disco duro a otro utilizando las herramientas dump/restore.

Saber más: todo sobre particionado freebsd

Disco duro nuevo (ada1). Disco duro viejo (ada0)

Para cambiar un disco duro por otro nuevo:

Particionado perzonalizado del disco ada0

/dev/ada0a 10GB ufs  /
/dev/ada0b 4GB  none swap
/dev/ada0e 2GB  ufs  /var
/dev/ada0f 30GB ufs /usr

1) Particionado (manual) del nuevo disco (ada1):

/dev/ada1a 10GB ufs  /
/dev/ada1b 4GB  none swap
/dev/ada1e 2GB  ufs  /var
/dev/ada1f 80GB ufs  /usr

2) Hacer una mínima instalación de FreeBSD en el nuevo disco con las mismas particiones del disco antiguo.

3) Asegurarse de que el nuevo disco sea bootable y comprobarlo.

4) Conectar el disco antiguo en el sistema como master y el nuevo como esclavo.

5) Arrancar con el disco duro Master (desde la Bios)

6) Iniciar el sistema en modo single user.

Pulsar la barra espaciadora en la cuenta atrás de 10 segundos y luego pulsar 6 (single user)

Presionar Intro para la shell por defecto.

Desde el símbolo del sistema teclear:

# fsck -p
# mount -u /
# mount -a
# swapon -a
# adjkerntz -i

A continuación, asegúrese de que tiene los archivos de dispositivos creados para montar las particiones del disco esclavo:
# ls /dev
....
/dev/ada1a
/dev/ada1e
/dev/ada1f
.....

Ahora creamos los puntos de montaje para las particiones de la nueva unidad de disco (ada1):

Teclear:
# mkdir /backup
# mkdir /backup/root
# mkdir /backup/usr
# mkdir /backup/var

Por último:

1 - Crear nuevos sistemas de ficheros
2 - Montar las particiones
3 - Volcar los datos del disco duro antiguo (ada0), y restaurarlos en el nuevo disco (ada1)
4 - Desmontar las particiones de la nueva unidad
5 - Permitir softupdates en la nueva unidad

newfs /dev/ada1a
newfs /dev/ada1e
newfs /dev/ada1f

mount /dev/ada1a /backup/root
mount /dev/ada1e /backup/var
mount /dev/ada1f /backup/usr

( dump -0fv - / ) | ( cd /backup/root ; restore -rf - )
( dump -0fv - /var ) | ( cd /backup/var ; restore -rf - )
( dump -0fv - /usr ) | ( cd /backup/usr ; restore -rf - )

umount /backup/root
umount /backup/var
umount /backup/usr

tunefs -n enable /dev/ada1a
tunefs -n enable /dev/ada1e
tunefs -n enable /dev/ada1f

Llegados a este punto, todo lo que tiene que hacer es apagar el sistema, quitar el disco viejo, colocar la nueva unidad como master e iniciar el sistema. Su sistema iniciará ahora su vieja instalación de FreeBSD en su nuevo disco duro.

http://www.freebsd.org/doc/handbook/
http://www.geekvenue.net/chucktips/

Unix es genial!.

martes, 8 de octubre de 2013

Copia de seguridad local remota rsync

rsync es una poderosa utilidad que facilita la transferencia y sincronización de datos entre sistemas locales y remotos. En primer lugar desde la red local a un servidor FreeBSD y en segundo lugar de manera local y remota hacia un servidor Synology.

Conguración de rsync en el servidor FreeBSD:

Entramos al servidor desde la LAN via SSH:
$ ssh -l carlos -p 20243 192.168.3.1
password:
$ su
password:
# ee /usr/local/etc/rsyncd.conf

# Edit this file before running rsync daemon!!


Crear el usuario que será utlizado para realizar las copias de seguridad, y que sólo tendrá permisos de lectura sobre los datos a copiar:

# chmod 640 /usr/local/etc/rsyncd.conf
# pw useradd -n backup -G operator -m -h 0
# mkdir /backup
# chown backup:backup /backup

Falta crear el archivo rsyncd.secrets
# ee /usr/local/etc/rsyncd.secrets
backup:km+RBqGwpT2IMnF1

Guardar y salir

# rsync --daemon
# ps auwx |grep rsync
root   9087   0.0  0.1  12056  1984 ??  Is    8:05PM    0:00.00 /usr/local/bin/rsync --daemon

Solo root podrá leerlo:
# chmod 600 /usr/local/etc/rsyncd.secrets

Comprobar que puedo conectarme al demonio:


El cliente debe tener instalado rsync

--dry-run para visualizar qué se va a copiar antes crear la copia.
--dry-run realizar una prueba sin hacer cambios
--stats dar algunas estadísticas de transferencia de archivos
-z comprimir los datos del archivo durante la transferencia

La opción -a, ejecuta "-rlptgoD":

-r: recursivo
-l: copia los links simbólicos, como eso, links simbólicos
-p: conserva los permisos
-t: conserva los tiempos de modificación
-g: conserva el grupo
-o: conserva el propietario
-D: conserva los ficheros de dispositivo (–devices) así como los ficheros especiales (–specials)

$ rsync -avz --dry-run --stats -e 'ssh -p 20243' /home/carles backup@192.168.3.1:backup

$ rsync -avz --stats -e 'ssh -p 20243' /home/carles backup@192.168.3.1:backup

$ rsync -avz --stats -e 'ssh -p 20243' /mnt/freebdades backup@192.168.3.1:backup

Vamos a crear dos directorios llamados /tmp/source /tmp/destiny, generar archivos ficticios dentro del primero y crear un enlace directo.

mkdir /tmp/source /tmp/destiny
for i in `seq 1 50`; do touch /tmp/foo/file$i; done
ln -s /home/carles/rules_pfsense /tmp/source



El siguiente comando trasfiere archivos en modo "archive", lo que garantiza que los enlaces simbólicos, dispositivos, atributos, permisos, propiedad, etc. son conservados en la transferencia. Debido a que estos indicadores se utilizan con tanta frecuencia, la opción -a eqivalente a -rltpgoD actúa como un alias que los incluye a todos:

# rsync -av --stats /tmp/source/ /tmp/destiny

Hay una diferencia entre incluir una barra inclinada (/) al final de la ruta de origen, y su omisión, el primero trasladará todos los archivos dentro del directorio especificado, mientras que el segundo transferirá el propio directorio con todos los archivos dentro. El flag -v (feedback, verbose) para ver el estado de la transferencia incluido un resumen al final. --stats nos dará más datos estadísticos y -q (silencioso, quiet) suprime toda la salida; útil para los scripts cuando no se requiere retroalimentación.


Transferencia remota rscync

La sintaxis de rsync es similar a la de scp en transferencias remotas donde h = human-readable.

Otras opciones interesantes:

--exclude-from

Excluye archivos de la lista de un archivo, en líneas separadas

--exclude=".*/"

Excluye los archivos ocultos

--update

Actualiza los archivos en el destino sólo si la copia origen ha sido modificada.

Synology debe tener activado rsync, copia de seguridad remota y los puertos abiertos tanto en el router VDSL o ADSL como en el firewall que está antes de la red interna (LAN), así como un dominio DDNS configurado (si carece de una ip estática). Esto ya lo he explicado en entradas anteriores. Synology ofrece 1 dominio DDNS por equipo y para el servidor FreeBSD utilizo dnsdynamic.org:

No conectamos desde otra red para realizar la prueba. El puerto por defecto de SSH (22) no hace falta indicarlo, si es diferente sí.:

Transferir clave SSH

susi@linux-a95o:~> ssh -p 22 admin@naslinuxesgenial.synology.me

The authenticity of host 'naslinuxesgenial.synoogy.me (95.23.148.14)' can't be established.

ECDSA key fingerprint is ea:10:a6:80:97:46:63:20:45:63:3a:28:77:90:cd:19.

Are you sure you want to continue connecting (yes/no)? yes

Warning: Permanently added 'naslinuxesgenial.synology.me,95.23.148.14' (ECDSA) to the list of known hosts.

admin@naslinuxesgenial.synology.me's password:

BusyBox v1.16.1 (2013-04-16 20:15:54 CST) built-in shell (ash)

Enter 'help' for a list of built-in commands.


ds112plus> exit

susi@linux-a95o:~> mkdir /tmp/source /tmp/destiny susi@linux-a95o:~> for i in `seq 1 100`;do touch /tmp/source/file$i;done susi@linux-a95o:~> rsync -av /tmp/source/ /tmp/destiny susi@linux-a95o:~> ln -s /home/susi/Documentos/wlan_13
Enviar datos al servidor remoto synology

susi@linux-a95o:~> rsync -avz --stats /tmp/destiny/ \
admin@naslinuxesgenial.synology.me:/volume1/freebsd_all/source/

admin@naslinuxesgenial.synology.me's password:

sending incremental file list

.
source/

source/file1
source/file10
.
.
source/file95
source/file96
source/file97
source/file98
source/file99
source/wlan_13 -> /home/susi/Documentos/wlan_13

Number of files: 103
Number of files transferred: 100
Total file size: 29 bytes
Total transferred file size: 0 bytes
Literal data: 0 bytes
Matched data: 0 bytes
File list size: 837
File list generation time: 0.001 seconds
File list transfer time: 0.000 seconds
Total bytes sent: 4460
Total bytes received: 1922
sent 4460 bytes  received 1922 bytes  750.82 bytes/sec
total size is 29  speedup is 0.00

susi@linux-a95o:~> rsync -avhz -e 'ssh -p 22' --stats /tmp/destiny/ admin@naslinuxesgenial.synology.me:/volume1/freebsd_all/source/

admin@naslinuxesgenial.synology.me's password:

sending incremental file list
Number of files: 103
Number of files transferred: 0
Total file size: 29 bytes
Total transferred file size: 0 bytes
Literal data: 0 bytes
Matched data: 0 bytes

File list size: 837
File list generation time: 0.001 seconds
File list transfer time: 0.000 seconds
Total bytes sent: 851
Total bytes received: 13

sent 851 bytes  received 13 bytes  101.65 bytes/sec
total size is 29  speedup is 0.03

susi@linux-a95o:~>

Desde un servidor remoto a local

susi@linux-a95o:~> rsync -azv admin@naslinuxesgenial.synology.me:/volume1/freebsd_all/source/ /tmp/destiny/

Si el servidor es FreeBSD el archivo /etc/rc.d/sshd_config debe incluir implicitamente al usuario backup, de lo contrario no será posible proseguir con la copia:

AllowUsers carles@192.168.3.60 backup@192.168.3.60

Desde el cliente con IP 192.168.3.60 (freebsd) y usuario backup (creado con anterioridad) ejecutamos rsync:
$ rsync -avz --stats /home/carles/datancp/* backup@freebsdsvr.linux.bcn:/backup/



Automatizar proceso mediante un script:

#############################
#!/bin/sh

# Simple rsync "driver" script.  (Uses SSH as the transport layer.)
# http://www.scrounge.org/linux/rsync.html

# Modificado y traducido al español por Crowley (http://www.mexicoextremo.com.mx)
# Debe poder trabajar con Linux y otros Unix, incluyendo Mac OS

# Sincroniza dos carpetas con sólo ejecutarlo. Sólo necesita cambiar los
# parámetros para tenerlo funcionando

# Nombre o IP de la máquina de destino
DEST="respaldos.servidor.com"

# Usuario que se conectará al servidor
# Puede ser root, pero no se recomienda
USER="root"

# Directorio de origen
BACKDIR="/carpeta/del/usuario/"

# Directorio de destino (remoto)
DESTDIR="/carpeta/de/destino/"

# Archivo de exclusiones. Contiene comodines de los archivos a excluir
# por ejemplo, *~, *.bak, etc.  Una especificación por línea.
# Se debe crear este archivo y descomentar la línea. Opcional
# EXCLUDES=/root/bin/excludes

# Opciones de prueba.  Despliega las acciones, pero no las realiza.
# OPTS="-n -vv -u -a --rsh=ssh --exclude-from=$EXCLUDES --stats --progress"
# Realiza la copia, mostrando a detalle lo que hace.
OPTS="-v -u -a --rsh=ssh --exclude-from=$EXCLUDES --stats"
# Realiza la copia, pero no manda ningún mensaje.
#OPTS="--archive --update --rsh=ssh --exclude-from=$EXCLUDES --quiet"

# Variables de ambiente, en caso de necesitarlas cron
export PATH=$PATH:/bin:/usr/bin:/usr/local/bin

# Se ejecuta sólo si el $DEST responde.
VAR=`ping -s 1 -c 1 $DEST > /dev/null; echo $?`
if [ $VAR -eq 0 ]; then

    rsync $OPTS $BACKDIR $USER@$DEST:$DESTDIR
else
    echo "No puedo conectarme a $DEST."
fi
#############################
http://www.horus.es/ss/blog/copias-de-seguridad-con-rsync/
https://rsync.samba.org/ftp/rsync/rsyncd.conf.html
http://kb.liquidweb.com/
http://www.freebsddiary.org/rsync.


Unix es genial!.

martes, 6 de agosto de 2013

dhcp-server dnsmasq squid FreeBSD

Créditos:  freebsd faq
 how to dnsmasq

Las máquinas cliente:
1 - Portatil de trabajo Ip fija = 192.168.3.60
2 - Pc sobremesa Ip obtenida mediante DHCP
ip servidor freebsd 192.168.3.1
En la parte final se comprobarán los puertos abiertos
y los clientes conectados con el comando sockstat
El servidor freebsd dispone de dos tarjetas de red.
Lan - red interna = em0
Wan - externa = em1
Ip Lan - 192.168.3.1 (router default Lan)
Ip Wan - 192.168.1.250
Firewall servidor - ipfw
sshd habilitado en el servidor
Entrar por sshd como user normal desde Lan
$ ssh -l carlos -p 2222 192.168.3.1
$ hostname
$ freebsdserver.linux.bcn
$ su
Password:
#

Intalar y configurar dhcp-server

# pkg_add -r isc-dhcp41-server
Fetching ftp://ftp.freebsd.org/pub/FreeBSD/ports/amd64/packages-9.1-release/Latest/isc-dhcp41-server.tbz... Done.
===> Creating users and/or groups.
Creating group 'dhcpd' with gid '136'.
Creating user 'dhcpd' with uid '136'.

Así quedará el archivo dhcpd.conf:

# sed -e '/^[ ]*#/d' -e '/^$/d' /usr/local/etc/dhcpd.conf
option domain-name "linux.bcn";
option domain-name-servers 192.168.3.1;
option subnet-mask 255.255.255.0;
default-lease-time 3600;
max-lease-time 86400;
ddns-update-style none;
subnet 192.168.3.0 netmask 255.255.255.0 { 
 range 192.168.3.40 192.168.3.50;
 option routers 192.168.3.1;

}
Para iniciar dhcp-server con el sistema
agregar al archivo rc.conf:
dhcpd_enable="YES" # dhcpd enabled?
dhcpd_flags="-q" # command option(s)
dhcpd_conf="/usr/local/etc/dhcpd.conf" # configuration file
dhcpd_ifaces="em0"    # ethernet interface(s)
dhcpd_withumask="022"   # file creation mask 
 
Iniciar el servidor dhcp:
# /usr/local/etc/rc.d/isc-dhcpd start
Starting dhcpd.

Instalar dnsmasq

$cd /usr/ports
$ make search name=dnsmasq
$ cd /usr/ports/dns/dnsmasq/
# make install clean

Archivo de configuración dnsmasq.conf

Filtrando dnsmasq.conf con grep para eliminar líneas que empiezan con un espacio, líneas que comienzan con almohadilla y líneas vacías.
grep -v '#' /etc/dnsmasq.conf
port=53
domain-needed
bogus-priv
strict-order
interface=em0
listen-address=127.0.0.1
expand-hosts
domain=linux.bcn

Iniciar dnsmasq con el sistema

 agregar esta línea al archivo /etc/rc.conf
dnsmasq_enable="YES"


Archivo resolv.conf del servidor

#permite a las maquinas locales obtener información DNS.
nameserver 127.0.0.1
 
#OpenDNS
nameserver 208.67.222.222
nameserver 208.67.220.220
 
# Otra opcion es utilizar los DNS del proveedor ISP.
 
# nameserver 192.168.1.1

Impedir cambios en el fichero resolv.conf

Añadir esta línea al archivo de configuración de resolv.conf (resolvconf.conf)
# ee /etc/resolvconf.conf
resolv_conf="/dev/null"

Archivo resolv.conf de las máquinas cliente: $ cat /etc/resolv.conf
# Archivo inmutable resolv.conf
search linux.bcn
nameserver 192.168.3.1

Realizar consultas desde un cliente

Instalar squid como paquete

# pkg_add -r squid
# squid -v
Version 2.7.STABLE9

Archivo de configuración squid.conf

Copiar archivo squid.conf
# cp /usr/local/etc/squid/squid.conf.default /usr/local/etc/squid/squid.conf Filtrando el archivo /usr/local/etc/squid/squid.conf para ver las opciones del archivo de configuración de squid.:
# sed -e '/^[ ]*#/d' -e '/^$/d' /usr/local/etc/squid/squid.conf
acl all src all
acl manager proto cache_object
acl localhost src 127.0.0.1/32
acl to_localhost dst 127.0.0.0/8 0.0.0.0/32
acl localnet src 10.0.0.0/8 # RFC1918 possible internal network
acl localnet src 172.16.0.0/12 # RFC1918 possible internal network
acl localnet src 192.168.0.0/16 # RFC1918 possible internal network
acl SSL_ports port 443
acl Safe_ports port 80  # http
acl Safe_ports port 21  # ftp
acl Safe_ports port 443  # https
acl Safe_ports port 70  # gopher
acl Safe_ports port 210  # wais
acl Safe_ports port 1025-65535 # unregistered ports
acl Safe_ports port 280  # http-mgmt
acl Safe_ports port 488  # gss-http
acl Safe_ports port 591  # filemaker
acl Safe_ports port 777  # multiling http
acl CONNECT method CONNECT
http_access allow manager localhost
http_access deny manager
http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports
http_access allow localnet
http_access deny all
icp_access allow localnet
icp_access deny all
http_port 192.168.3.1:3128 transparent
hierarchy_stoplist cgi-bin ?
access_log /var/squid/logs/access.log squid
refresh_pattern ^ftp:  1440 20% 10080
refresh_pattern ^gopher: 1440 0% 1440
refresh_pattern -i (/cgi-bin/|\?) 0 0% 0
refresh_pattern .  0 20% 4320
acl shoutcast rep_header X-HTTP09-First-Line ^ICY.[0-9]
upgrade_http0.9 deny shoutcast
acl apache rep_header Server ^Apache
broken_vary_encoding allow apache
coredump_dir /var/squid/cache
cache_log /var/squid/logs/cache.log
logfile_rotate 10
minimum_object_size 0 KB
maximum_object_size 1024 MB
request_body_max_size 0
cache_dir ufs /var/squid/cache 200 16 256
cache_mem 32 MB
visible_hostname freebsdserver.linux.bcn
acl ips src 192.168.3.0/255.255.255.0
acl hora time MTWHF 8:00-22:00
acl todas src 0.0.0.0/0.0.0.0
http_access allow ips
http_access deny !hora
http_access deny todas


Crear los directorios swap

# squid -z


Desactivar test DNS inicial

# squid -D


Iniciar con el sistema.

Agregar al archivo /etc/rc.conf
squid_enable="YES"

El proxy ha sido configurado como transparent de manera que no hace falta configurar el navegador de los clientes:
Comprobar puertos abiertos:
# sockstat -4


FreeBSD es genial!

jueves, 25 de julio de 2013

Dynamic DNS Comtrend VR-3025u


Mucha gente está teniendo problemas para configurar Dynamic DNS a través del nuevo router VR-3025u de Jazztel 30MB, para habilitar el acceso remoto al servidor u otra máquina dentro de la red interna.

El origen de la confusión es que solo aparecen en la configuración del router (DNS -Dynamic DNS - Add Dynamic DNS) las opciones DynDNS.org y TZO.

Configurar Dynamic DNS utilizando una cuenta de synology.

(Tampoco presenta ninguna dificultad la configuración de dnsdynamic.org)

Dispongo de una cuenta DDNS en synology que utilizo para acceder remotamente al servidor synology y otra en noip para acceder a un segundo servidor freebsd interno a través del firewall pfsense. Como el proceso es similar solo configuraremos el de acceso al servidor synology utilizando https puerto 7001, que veremos más adelante, o un número de puerto secreto si el servidor no tiene servicios públicos accesibles desde Internet, como un servidor web.

Abrir puertos en el router:

DDNS synology:
Acceder desde una red externa al servidor utilizando el puerto 7001:

FreeBSD es genial!.

sábado, 20 de julio de 2013

Backup sistema FreeBSD bsdtar


El objetivo es realizar una copia de respaldo del sistema completo en un disco duro externo. Los datos, que residen en otra partición, (/dev/ads0s2) quedan respaldados con rsync directamente en el servidor local.

El sistema es un portátil  (Dell Inspiron) con freeBSD RELEASE-9.1 y gnome2 instalado. FreeBSD sistema operativo con excelente documentación utilizado principalmente en servidores de pequeñas, medianas y grandes empresas pero que funciona perfectamente en pc's de sobremesa y portátiles cuyo hardware sea soportado por FreeBSD.


Iniciar el sistema en modo single user.

Pulsar la barra espaciadora en la cuenta atrás y luego pulsar 6 (single user)

Presionar Intro para la shell por defecto y teclear la contraseña de root si fuera necesario.

Copia de seguridad del sistema

En el símbolo del sistema teclear:

# fsck -p
# mount -u /
# mount -a
# swapon -a
# adjkerntz -i

Nota: El disco externo usb (ada0) al que se copiará el archivo tar.gz (archivo tar comprimido) ha sido particionado utilizando fdisk desde la consola del sistema. La partición a respaldar es /dev/ada0s4a.

Crear sistema de archivos
# newfs -U /dev/da0s1

Montar primera particion (a) del primer disco
# mount -t ufs -o ro /dev/ada0s4a /media

Montar primera (a) del disco duro externo (usb).
# mount -t ufs -o rw /dev/da0s1 /mnt

Nuevo directorio donde se guardará el archivo tar.gz
# mkdir -p /mnt/%backup%/ada0s4a-20-7-2013/

Cambiar a directorio raiz (partición a respaldar)
# cd /

Hacer respaldo, excluir home (es solo un enlace a /usr/home)
# bsdtar cvfz /mnt/%backup%/ada0s4a-20-7-2013/freebsd-system.tar.gz --exclude=home *

# cd /
# umount /mnt
# umount /media
# reboot

Restaurar copia de seguridad:
Iniciar el sistema en modo single user.

Pulsar la barra espaciadora en la cuenta atrás y luego pulsar 6 (single user).

Presionar Intro para la shell por defecto.

En el símbolo del sistema teclear:

# fsck -p
# mount -u /
# mount -a
# swapon -a
# adjkerntz -i
Formatear el sistema de ficheros a restaurar
# newfs -U /dev/ada0s4a

Montar particiones
# mount -t ufs -o rw /dev/ada0s4a /media
# mount -t ufs -o ro /dev/da0s1 /mnt
# cd /mnt/media

Emperar la restauración
# bsdtar xvzf /mnt/%backup%/ada0s4a-20-7-2013/freebsd-system.tar.gz
# cd /

Desmontar partición
# umount /mnt /media

Reiniciar
# reboot

Fuente: http://www.freebsd.org/doc/es_ES.ISO8859-1/books/handbook/backup-basics.html

Los programadores de freebsd recuerdan:
"No hacer nada" no es un programa, pero es la estrategia de respaldo más extendida. No tiene coste. No hay un calendario de respaldos a seguir. Simplemente hay que decir que no. Si algo le sucediera a sus datos sonría y acostúmbrese a su nueva situación."

FreeBSD es genial!.