freebsd, unix, openbsd, servidores, bsd, redes, linux, mikrotik, synology, zfs,
Páginas
Buscar este blog
domingo, 3 de noviembre de 2013
Mover Sistema 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
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_13Enviar 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: 1922sent 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/
#############################
#!/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
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.confdnsmasq_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.confsquid_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!.





















