Este es mi blog personal. Hablo de casi cualquier cosa pero en especial, Linux, aviones, algo de política y en general, mi opinión de las cosas que vivo diariamente.
Apreciaré tus comentarios (buenos o malos) sin embargo, debo moderarlos, no quisiera que esto se convirtiera en un sitio de insultos. Simplemente, se educad@
Este post no pretende ser la guía definitiva para hacer túneles de ssh, lo que si pretende es mostrar algunas situaciones que tengo que vivir a diario y que, con túneles de ssh, pueden hacerse más llevaderas.
Para empezar, la mayoría de los administradores de sistemas tenemos que acceder a servidores remotos para realizar nuestro trabajo diario. Estos servidores, la mayoría de las veces, no son alcanzables directamente desde nuestra estación de trabajo, por lo tanto, necesitamos acceder a ellos mediante otro servidor al que llamamos de diferentes maneras, jump server, servidor de salto, máquina de administración, etc, etc.
Los administradores de unix nos sentimos muy afortunados cuando este jump server es unix (generalmente Linux) ya que se nos hace la vida muchísimo más fácil.
Voy a poner varias situaciones que se me presentan diariamente y que gracias a los túneles de ssh puedo afrontar de una manera cómoda.
1.- Ejecutar una aplicación gráfica en un servidor remoto
Cuando hay que pasar por un jump server, la cosa ya no es tan fácil como poner "-X" al ssh. Es aquí donde el túnel de ssh hace su magia.
La cuestión es la siguiente: hacer un túnel desde la estación de trabajo, que pase por el jump server y finalice en el servidor remoto de manera que pueda iniciar una sesión de ssh que haga X forwarding (-X) y pueda ejecutar la aplicación gráfica en el servidor de destino y que se muestre en mi estación de trabajo.
El dibujo de abajo lo explica mejor:
Para realizar esto debemos asumir lo siguiente:
A.- El jump server tiene un servidor ssh.
B.- En nuestra estación de trabajo tenemos un servidor X.
C.- El servidor de destino tiene ssh.
Los comandos serían como lo siguiente:
Establecer el túnel: [ estacion ] ssh -L 2222:servidor:22 usuario-jumpserver@jump_server
Conectarse y ejecutar la aplicación gráfica: [ estacion ] ssh -X -p 2222 usuario-servidor@localhost [ servidor ] appX
Explicación: ssh -L 2222:servidor:22 Estamos abriendo un túnel que va desde nuestra estación de trabajo en el puerto 2222 y termina en "servidor" en el puerto 22
usuario-jumpserver@jump_server Aquí estamos entrando en "jump_server" con el usuario "usuario-jumpserver", de esta manera el túnel se realiza desde nuestra estación de trabajo, a través del jump server y finaliza en "servidor"
ssh -X -p 2222 usuario-servidor@localhost Aquí estamos iniciando una sessión de ssh con "XForwarding" (-X) en el puerto 2222 (-p 2222) de nuestra estación de trabajo (el inicio del túnel) con el usuario "usuario-servidor" que debe ser un usuario válido en "servidor"
appX Ejecutar la aplicación en el servidor "servidor"
2.- Conectarse por remote desktop a un servidor windows a través del jump server
Alguna vez hemos tenido que conectarnos por rdesktop a una máquina con windows. Utilizando un tunel de ssh podemos conectarnos a ese servidor windows con la herramienta rdesktop de una manera sencilla:
Explicación: ssh -L 3389:servidor:3389 Creamos un túnel de ssh en nuestra estación de trabajo que escuchará en el puerto 3389 cuyo extremo será el servidor "servidor" en el puerto 3389
usuario@jumpserver El túnel pasará a través de "jumpserver" autenticándonos como "usuario"
Ahora solo hay que hacer lo siguiente en nuestra estación de trabajo
[ estacion ] rdesktop localhost
3.- Túnel reverso de ssh
ADVERTENCIA: Esto puede meterte en problemas con tu administrador de redes/sistemas. No me hago responsable del uso que se haga de esto. Esto es solo una demostración de concepto.
Analicemos el siguiente escenario. Se tiene una estación de trabajo detrás de una red corporativa. Desde esta estación de trabajo se puede hacer ssh a una máquina en Internet. La estación de trabajo no es accesible desde internet.
Pues bien, con ssh es posible establecer un túnel desde la estación de trabajo hasta esta "máquina en Internet" y luego poder conectarse desde esa "máquina en Internet" a la estación de trabajo y así poder operar desde "Internet" como si se estuviese en el lugar de trabajo.
Esto es "ideal" para trabajar desde la casa sin molestos clientes de VPN que solo sirven en windows o en ciertas "versiones de Linux".
Nota: Se asume que el router de la casa está configurado para hacer posible la conexión a "desktop.home" por ssh desde fuera. No es objetivo de este post mostrar como realizar esto.
Explicación: ssh -R 2022:localhost:22 Establezco un túnel que va desde desktop.home en el puerto 2022 a estacion en el puerto 22
usuario-home@desktop.home usuario y nombre de la "máquina de Internet".
4.- Túnel de ssh multi saltos (multihop)
Aquí rizamos el rizo :) En este caso, necesitamos acceder a un servidor mediante varios jump servers. Aplicamos lo que he explicado anteriormente pero con recursividad :)
Este dibujo trata de explicar el escenario que propongo.
Como se ve, "Servidor" solo es alcanzable desde "Jump Server 2" y aunque bastaría con llegar a "Jump Server 2" para tener una sesión de ssh, abrir una aplicación gráfica en "Servidor", que se mostrara en nuestra estación de trabajo, sería imposible.
Para hacerlo posible, creamos dos túneles de ssh, el segundo "dentro" o utilizando el primero.
Primer túnel, desde la estación de trabajo hasta "Jump Server 2" utilizando a "Jump Server 1"
Pues si, el día domingo 6 de octubre de 2013 aprobé el exámen práctico para la obtención de la licencia de piloto privado de avión, PPL (A), en Madrid, España.
¿Qué es PPL?, es, literalmente, Private Pilot License, es una licencia que te permite, según el reglamento de la Unión Europea Nº 1178/2011 del 3 de noviembre de 2011, sección 2, FCL.205.A (a), hacer lo siguiente:
"Las atribuciones del titular de una PPL(A) son actuar sin remuneración como piloto al mando o copiloto en aviones o TMG que participen en operaciones no comerciales."
TMG significa motovelero de turismo.
En cristiano, que puedo alquilarme una avionetica tipo Cessna 172 y darme un paseo.
¿Para qué obtener esta licencia? ¿qué hago con eso? Desde muy pequeño siempre me ha gustado la aviación, recuerdo que en 4º de primaria ya leía libros sobre aviones caza. Recuerdo también que los "simuladores" de la empresa Microprose hacían preguntas para poder acceder al juego, las preguntas consistían en que te ponían la silueta de algún caza y debías responder a qué avión pertenecía. Nunca necesité "la hoja de claves" del juego, siempre me resultó muy facil identificar correctamente la silueta.
La primera vez que me monté en un avión ligero fue en Puerto Rico en 2005, un gran piloto (y mejor persona), Pedro Fernández, me invitó a dar una vuelta en una Cessna 177 RG Cardenal. Aquello no fue normal, otra cosa, tenía ya horas de "vuelo" en flight simulator, pero aquello fue tocar el cielo.
La experiencia se repitió una vez más y qué puedo decir, fue lo máximo.
Cuando llegué a España, y gracias a un regalo de mi novia (hoy mi esposa), pude hacerme un vuelo de bautizo en un ULM (ultraligero motorizado), una Tecnam P96 en el aeródromo de Casarubios del Monte (LEMT). Otra vez tocando el cielo, esta vez pude llevar el ULM con ayuda del instructor.
A pesar de tener la licencia de ULM, la escuela requería que hiciese un depósito de 1000 € y aprobar otro exámen interno para poder alquilarme el ULM a mi solo e irme por los pueblos de España. Esa situación me hizo plantearme hacer el curso del PPL ya que:
Podría despegar y aterrizar en aeropuertos controlados.
Podría meterme en espacios aéreos VFR (todos menos el A).
Podría volar solo (sin instructor) cuando tuviese mi licencia.
Podría volar aviones más "grandes".
Pues bien, las condiciones económicas estaban dadas para poder pagarme el curso, así que comencé a averiguar en qué escuela hacerlo. Después de leer varios foros y varias opiniones, me fuí a el aeródromo de Cuatro Vientos (LECU) en Madrid a preguntar en las diferentes escuelas que existían, tal y como me lo habían sugerido en los foros.
Como era de esperarse, múltiples impresiones, cantidad de información, precios, opciones, etc. Al final me decidí por Aerofan por varias razones, por precio, flexibilidad de horarios en las clases teóricas, podía asistir a tantas clases como quisiera, no tenían restricción de tiempo para hacer el curso aparte de los que pone la Agencia Estatal de Seguridad Aérea (AESA) y Aviación Civil.
Requisitos
Para poder optar a la licencia de piloto privado hay que tener 16 años y un certificado médico, al menos Clase II. Ambos requisitos los cumplía. Por ese lado estaba bien, sin problemas para comenzar el curso.
Material
El material que debía tener para comenzar el curso es el siguiente:
Un plotter.
Un CR3.
Carta aeronáutica. Yo compré la Jeppesen LE-2 1:500000 vfr+gps.
Dos lápices grasos (rojo y negro).
Piernógrafo.
Drenador.
Los "libros de Adsuar" (opcional, ojo con esto).
El piernógrafo y el drenador son exclusivamente para hacer las prácticas, así que, si como yo, se quiere dejar los vuelos para el final, no es necesario que se compren a la primera.
Sobre los libros de Adsuar, yo compré la colección completa para el PPL y ahora no estoy seguro si fue una decición acertada y me explico. Con todo respeto para el señor Adsuar, los libros para el PPL están redactados de una manera bastante enrevesada, pareciera que el autor lo que quiere es demostrar que sabe mucho (lo cual no dudo) pero a nivel pedagógico, en mi humilde opinión, deja bastante que desear. He leido "algún" libro técnico a lo largo de mi vida y opino que este señor debería revisar su redacción para que fuese más clara, concisa y con menos adornos literarios, al final son libros técnicos, no ensayos de prosa.
Sin embargo, los libros de Adsuar sirven y mucho, como libros de consulta una vez que ya se ha aprendido el temario. En resúmen, no son libros para aprender desde cero, son libros de consulta para aclarar alguna duda.
Si, me he quedado a gusto :) es mi blog :)
El curso de PPL
El curso lo comencé el 12 de septiembre de 2011, las clases teóricas eran de 7:00 pm a 9:00 pm, así que salía de la oficina a las 5:00 para no comerme el tráfico de la M-30 y el del Paseo de Extremadura. Llegaba a Cuatro Vientos temprano, así que me daba tiempo de poner la frecuencia de la torre en el scanner o de echarme una pequeña ciesta en el carro ;).
El curso de PPL consta de 9 materias teóricas:
Principios de vuelo.
Procedimientos operacionales.
Comunicaciones VFR.
Conocimiento general de la Aeronave (CGA).
Performance y planificación del vuelo.
Navegación.
Meteorología.
Derecho aeronáutico.
Factores humanos.
Mi primera clase teórica fue principios de vuelo. Es física básicamente, aerodinámica. El instructor muy dedicado, explicaba muy bien, me dió muy buena impresión.
A lo largo de todo el curso todos los instructores que me tocaron (cinco en total) en las teóricas, se esmeraron por enseñarnos las cosas, desde aquí se los agradezco de corazón. Sé lo que es dar cursos y a esas horas del día, con los alumnos bastante "espesos", es de admirar.
A los que se inician en esto, mi recomendación es que acudan a clase, no es lo mismo leerse un libro (y menos los de Adsuar) a que te expliquen con una pizarra y te aclaren las dudas. Reitero, hay que ir a clase!!!!
Exámenes teóricos
Llegó el día en el que me tenía que presentar a exámen. Solo había tenido tiempo para preparar tres materias, me presenté a principios de vuelo, comunicaciones y procedimientos operacionales.
A mi me tocó la época de la transición entre el sistema de exámenes por convocatoria y los exámenes "electrónicos" en SENASA (Servicios y Estudios para la Navegación Aérea y la Seguridad Aeronáutica S.A.). Las tres primeras materias las presenté en la modalidad de convocatorias. El lugar era el mismo Cuatro Vientos que se llenaba de gente de todas partes de España que venían dos o tres días a presentar exámenes (arcaico completamente, pero hay más).
Aprobé las tres materias, ya me había quitado tres de encima.
La próxima vez que fuí a presentar exámenes fue ya en la nueva modalidad que consistía en ir a SENASA y presentar exámenes en una computadora (como cualquier exámen de certificación de HP-UX, Cisco, etc). Aquello fue un caos al principio, en teoría se usaban los bancos de preguntas europeos, pero luego en la práctica y según contaba la gente, en los exámenes de PPL(A) salían preguntas de ATPL (Air Transport Pilot Licese), del PPL de helicóptero, preguntas mal formuladas, mal traducidas, no dejaban usar calculadora a los PPL's, etc., etc. Al final los problemas se resolvieron y la cosa comenzó a funcionar "decentemente", sin embargo, la gente tenía (y tiene al momento de escribir este post) que seguir viniendo a Madrid a presentar unos exámenes, eso si, en unas Sparc.... siglo XXI....
Preparación de los exámenes
Como me tocó presentar en dos modalidades diferentes, la preparación de los exámenes también fue algo diferente.
Modalidad de convocatorias
Para esta modalidad conseguí una cantidad enorme de test's. En teoría, eran preguntas que habían salido en exámenes anteriores, el problema es que algunas estaban mal redactadas, aveces una misma pregunta tenía respuestas diferentes como buena, al final dependes de la memoria de la persona que haya tenido la amabilidad de recordar la pregunta y las respuestas. Sin embargo, pude estudiar así.
La cuestión con los test's es que no puedes estudiar solo con ellos, hay que estudiar el tema, entenderlo, ir a clases y ya luego, para fijar conocimientos, los test's.
Pues bien, para principios de vuelo, comunicaciones y procedimientos operacionales fui a todas las clases, investigué por internet, usé los libros de Adsuar (OMG!!!!), me leí varios anexos al convenio de Chicago y al final si, muchos test's para reafirmar conocimientos y para ir viendo más o menos el tiempo que demoraba en contestar. El resultado, las tres aprobadas :)
Modalidad "SENASA"
Ya para cuando me tocó presentar con esta modalidad, habían muchas personas contando sus experiencias en el foro de extracrew.com (hilo de las preguntas que han salido en el PPL). Recomiendo leer este hilo y recopilar todas las preguntas (y respuestas) que los foristas amablemente colocan. Son un recurso de incalculable valor. También, en la lista interna que tenemos algunos alumnos de la escuela, habían experiencias previas con SENASA (desde aquí mil gracias a todos).
Aquí lo mismo, asistir a clases, investigar por internet, recopilar las preguntas de otros, hacer test's y.... me quedó performance la primera vez que me presenté en la modalidad "SENASA". ¿Por qué? porque la materia se llama performance y planificación del vuelo y en el libro de Adsuar (OMFG!!!!), de planificación del vuelo nada, en clase nos dieron algunas nociones y en el exámen me salieron preguntas "curiosas" del "trip fuel" del demonio que jamás había visto. Pues nada, a preguntar a los instructores, a comentarlas en el foro y en la lista y si, se encontró respuesta :)
Después de esta tanda hice un parón, resulta que me invitaron a una boda (la mía) y tuve que dejar de estudiar por razones obvias.
Después que pasó todo el asunto de la boda, retomé el estudio y decidí tratar de sacarme el resto de materias en dos tandas. En la primera iría "contra" performance porque esa espinita me la sacaba yo porque si.
Pues bien, "cayó" performance y también cayeron las demás. La última tanda la terminé en enero del 2013
Como consejo reitero, pasarse por el foro de extracrew y recopilar todas las preguntas del hilo del PPL, estudiar concienzudamente y asistir a clase.
Fase práctica
Al quitarme de encima las teóricas (son una verdadera losa), llegaba el momento "dulce". Ahora solo me tocaba volar y volar las 45 horas que me exigen para la obtención de la licencia.
Si uno piensa que ya ha pasado el tiempo de estudiar, mejor pensar de nuevo. Hay que estudiar y mucho, hay que leerse el manual del avión, el análisis de maniobras, poner en práctica todo lo que, en teoría, has aprendido de las nueve materias, hay que aprenderse el circuito de LECU, hay que aprender a hablar en la frecuencia común, hay que quitarse el miedo de hablar con los ATC's, etc., etc., pero se hace con un gusto...
Las primeras clases prácticas son realmente abrumadoras, la cantidad de información que debes procesar no es normal pero bueno, para eso uno está ahí, ¿no? ¿quién dijo miendo?. Yo venía de volar ULM's, pero es muy muy diferente volar una C172, para que se me entienda, es como andar en bicicleta y luego en un camión.
La Cessna 172 me parecía pesadísima, muy grande, estaba acostumbrado a que, con el ULM, metes gases y enseguida sube y con la 172 nanai nanai, como no se tire de los cuernos después de meter gases, no se sube. A la hora de la recogida con full flaps, aquello era un ladrillo, era cómico escuchar al instructor hablando del efecto suelo, WTF???!!!!! si aquello se caía como una piedra!!!!!!
Siempre iba "por detrás" del avión, pero bueno, se está aprendiendo... aún hoy no creo que yo vaya muy "por delante" ;)
Las horas transcurren más rápido de lo que uno piensa (y quiere) y llega el día de la suelta, el momento en que debes demostrar lo que has aprendido (básicamente porque de ello depende tu vida ;) ).
Después de la suelta vienen los vuelos solos "supervisados", donde el instructor de turno le reza a todos los santos para que no te pase nada, te reportes sobre S (sierra) y traigas el avión en una pieza. Lo digo por experiencia, vi a una instructora hacer un abismo en Operaciones de la escuela, caminando de lado a lado esperando esa frase ansiada "Cuatro Vientos torre, Aerofan XXX sobre S, instrucciones para el circuito".
En esos solos supervisados es donde ya uno comienza a sentirse piloto, el asiento de al lado está vacío, el avión pesa menos y no hay nadie para salvarte el c.... si haces algo mal... y se disfruta un mundo.
Luego viene el triangular, el mío fue LECU - LEVD - LEMT - LECU. Segunda vez que cruzaba la sierra de Madrid, primera vez que subía a 8500 ft. Entrar en Valladolid es interesante, fue la primera vez que entraba en una pista de 3 km. Que el controlador de torre te "recite" el METAR estando acostumbrado al ATIS de LECU hace la experiencia más peculiar si se quiere y ya encontrarse el aeropuerto desierto... bueno, no, estaba el señor de la cafetería..... en fin, el tema político-aeroportuario lo discutiré en otro post... o no.
Después del triangular, el tiempo comienza a pasar muy muy rápido, quedan pocas horas para el exámen práctico y quieres que el tiempo retroceda pero no la (poca) experiencia adquirida.
Mi recomendación, "comprimir" lo más que se pueda las horas para estar "suelto" en el momento del exámen. Hay que tratar de colocar las sesiones lo más seguidas que se pueda (aunque la meteo te lo ponga difícil). En mi caso puse 3 horas el sábado y el domingo me examiné.
El exámen práctico
Es el momento más raro de todo el curso, quieres que llegue pero estás c...., asustado. Sentía que no sabía nada (tampoco es que sepa mucho en realidad), que no estaba listo para el exámen, en cristiano, que estaba muy pichón.
Le pregunté a los instructores cómo me veían y me decían que bien, que no me preocupara... no sirvió de nada, de sábado para domingo la intranquilidad aumentó :(
Pero bueno, traté de distraerme y de pensar en lo que había dicho "Eddie" Malacara sobre el exámen práctico, así que la suerte estaba echada. Aquí les dejo el video, lo recomiendo (está en inglés).
El exámen transcurrió tranquilamente, el examinador, ese si es pedagógico, intenta hacerte sentir tranquilo y al final las cosas salen. No fue muy diferente de una clase, creo que los instructores nos preparan correctamente para el exámen.
Si estás cerca de examinarte en la parte práctica, mira el video de Eddie y confía en tus instructores.
El papeleo
Después de aprobar el práctico viene el pago de tasas, entregar la hoja del triangular donde las oficinas ARO pusieron el sellito y esperar a que llamen de la escuela para decirte que tu licencia ha llegado.
¿Y ahora qué?
Yo me encuentro en esta etapa, tengo mi licencia, no me sobra el tiempo y tampoco el dinero y las ganas de volar están en su máximo nivel (¿tienen un mínimo? ;) ). Afortunadamente, hay personas que como yo, escriben cosas en su blog para que luego puedan servir a los que vienen detrás, es el caso de Gonzalo. En su blog el relata cómo fue su etapa "post licencia" y aunque mal de muchos consuelo de tontos, es últil saber que no estamos solos y que si se puede volar después. Desde aquí un saludo a Gonzalo.
Vencimientos y plazos
Otra cosa que hay que tener muy en cuenta después que se tiene una licencia (PPL en mi caso) es el tema de los plazos de renovación. Según el reglamento de la Unión Europea Nº 1178/2011 el período de validez de la habilitación de clase monomotor de un solo piloto es de 2 años. Por si hay duda, colocaré la sección:
"FCL.740 Validez y renovación de las habilitaciones de clase y tipo
(a) El período de validez de las habilitaciones de clase y tipo será de 1 año, excepto para las habilitaciones de clase monomotor de un solo piloto, que tendrán un período de validez de 2 años, a menos que se determine otra cosa de acuerdo con los datos de idoneidad operacional, establecidos de acuerdo con la Parte 21."
Por lo tanto, después que nos dan la licencia, tenemos 2 años para revalidar la habilitación.
La revalidación viene descrita en el siguiente apartado que copio literalmente:
FCL.740.A Revalidación de habilitaciones de clase y tipo-aviones
b) Revalidación de habilitaciones de clase monomotor de un solo piloto.
1)
Habilitaciones
de clase de avión monomotor de pistón y TMG. Para la revalidación de
una habilitación de clase de avión monomotor de pistón de un solo piloto
o la habilitación de clase TMG, el solicitante tendrá que:
i)
superar
una verificación de competencia en la clase correspondiente de acuerdo
con el apéndice 9 de la presente Parte con un examinador en los 3 meses
precedentes a la fecha de caducidad de la habilitación; o
ii)
completar
12 horas de vuelo en la clase correspondiente en los 12 meses
anteriores a la fecha de caducidad de la habilitación, incluidas:
—
6 horas como piloto al mando;
—
12 despegues y 12 aterrizajes, y
—
un
curso de actualización de al menos 1 hora con un instructor de vuelo
(FI) o un instructor de habilitación de clase (CRI). Los solicitantes
estarán exentos de esta formación de actualización si han superado una
verificación de competencia de habilitación de clase o tipo o una prueba
de pericia o evaluación de competencia en cualquier otra clase o tipo
de avión.
Creo que está claro, no tengo nada que agregar.
Sobre la experiencia reciente, la norma dice lo siguiente:
FCL.060 Experiencia reciente
b) Aviones, helicópteros, aeronaves de despegue vertical, dirigibles y planeadores. Un piloto no operará una aeronave en transporte aéreo comercial o transporte de pasajeros:
1) como piloto al mando o copiloto a menos que haya llevado a cabo, en los 90 días anteriores, al menos 3 despegues, aproximaciones y aterrizajes en una aeronave del mismo tipo o clase o un FFS que represente dicho tipo o clase. Los 3 despegues y aterrizajes deben llevarse a cabo en operaciones multipiloto o monopiloto, dependiendo de las atribuciones del piloto
Este último punto también depende de las normas internas de la escuela/aeroclub donde se alquile el avión, es posible que sean más restrictivos.
Este post es solo un ejemplo simple de configuración de Apache Traffic Server como proxy inverso (reverse proxy).
Wikipedia tiene esta definición para proxy inverso:
Un proxy inverso (reverse proxy en inglés) es un servidor proxy situado en el alojamiento de uno o más servidores web. Todo el tráfico procedente de Internet y con destino en alguno de esos servidores web es recibido por el servidor proxy. Hay varias razones para ello:
Seguridad: el servidor proxy es una capa adicional de defensa y por lo tanto protege a los servidores web.
Cifrado / Aceleración SSL: cuando se crea un sitio web seguro, habitualmente el cifrado SSL no lo hace el mismo servidor web, sino que es realizado en un equipo ajeno equipado incluso con hardware de aceleración SSL/TLS.
Distribución de Carga: el proxy puede distribuir la carga entre varios servidores web. En ese caso puede ser necesario reescribir la URL de cada página web (traducción de la URL externa a la URL interna correspondiente, según en qué servidor se encuentre la información solicitada).
Caché de contenido estático: Un proxy inverso puede descargar de trabajo a los servidores web almacenando contenido estático como imágenes u otro contenido gráfico. También puede almacenar contenido generado dinámicamente pero que pueda ser en alguna medida reutilizable.
No tengo nada que agregar a la definición :)
En este post voy a poner un ejemplo de configuración de Apache Traffic Server (ATS) como proxy inverso para caché de contenido estático.
Entorno de prueba
El entorno de prueba que utilicé es una máquina virtual con Debian Wheezy donde correrán los dos bloques funcionales que utilizaré, el ATS y apache como servidor web. Lo siguiente es un resúmen del entorno de pruebas para que quede claro:
ATS escuchando en el puerto 8080
Apache escuchando en el puerto 80
ATS necesita al menos un servidor DNS así que tuve que montar uno sencillo en la máquina de prueba. No voy a describir el proceso porque no es el objetivo de este post, lo que describiré es la configuración básica.
Zona "int" con un registro A (ats.int) apuntado a 127.0.0.1
La zona inversa ya viene configurada con el paquete bind9
Con el servidor DNS funcionando (hay que asegurarse de que funciona) proseguimos con la instalación.
Instlación
Instalamos ATS con el siguiente comando:
# aptitude install trafficserver
ATS es un producto un poco "raro", no se maneja ni se configura como cualquier otro producto de software libre. Tiene varios archivos de configuración con un formato muy poco usual. Para esta demostración de concepto necesitamos "tocar" los siguientes archivos (o saber que existen):
records.config: Es el archivo principal de configuración y contiene las directivas principales que gobiernan el comportamiento de ATS.
remap.config: En este archivo están las redirecciones a los servidores "reales".
splitdns.config: Aquí es donde le indicamos los servidores DNS que vamos a utilizar además de configurar el comportamiento en lo que a resolución de nombres se refiere para cada dominio.
Para esta prueba vamos a dejar muchas configuraciones por defecto y solo modificaremos las que nos interesan, insisto, _para esta prueba_. En cristiano, que hay que leerse el manual, esto no es " la guía definitiva de ATS".
Con el ATS instalado, el siguiente paso es arrancarlo. Editamos el archivo /etc/default/trafficserver y colocamos la variable TC_START en "yes"
TC_START=yes
Ahora arrancamos ATS
# /etc/init.d/trafficserver start
En /var/log/syslog debería aparecer algo como esto:
traffic_cop[10778]: --- Cop Starting [Version: Apache Traffic Server - traffic_cop - 3.0.5 - (build # 5918 on Jun 9 2012 at 18:37:39)] ---
traffic_cop[10778]: can't get passwd entry for the admin user
traffic_cop[10778]: can't get passwd entry for the admin user
traffic_cop[10778]: traffic_manager not running, making sure traffic_server is dead
traffic_cop[10778]: spawning traffic_manager
traffic_manager[10779]: NOTE: --- Manager Starting ---
traffic_manager[10779]: NOTE: Manager Version: Apache Traffic Server - traffic_manager - 3.0.5 - (build # 5918 on Jun 9 2012 at 18:33:34)
traffic_server[10789]: NOTE: --- Server Starting ---
traffic_server[10789]: NOTE: Server Version: Apache Traffic Server - traffic_server - 3.0.5 - (build # 5918 on Jun 9 2012 at 18:36:30)
traffic_server[10789]: {1081143632} STATUS: opened /var/log/trafficserver/diags.log
Ok, ahora toca configurarlo, para eso utilizaremos el comando traffic_line (ya dije que ATS era muy raro).
Configuración
Cambiamos el propietario del estos archivos de manera temporal.
# cd /etc/trafficserver
# chown trafficserver records.config remap.config splitdns.config
Le diremos a ATS es que no guarde copias de los archivos de configuración (esto es una prueba)
Ahora es cuando le indicamos a ATS lo que va a hacer con las peticiones, es decir, las reglas que debe seguir para manejar las peticiones que vienen desde "afuera". Para esto editamos el archivo /etc/trafficserver/remap.config y colocamos lo siguiente al final del archivo:
map http://ats.int:8080 http://ats.int
Resolución DNS
ATS usa los servidores DNS del /etc/resolv.conf, en este caso, para que use nuestro servidor DNS que es donde tenemos la zona de pruebas "int", debemos editar el archivo /etc/trafficserver/splitdns.config y colocar lo siguiente:
Es importante verificar la cadena "[cMsSfW]" del encabezado Via que nos está diciendo:
cM: cache miss (el objeto no está en el caché)
sS: served (el objeto lo proporcionó el "servidor original")
fW: writen (el objeto fue escrito en el caché)
En cristiano, que el archivo prueba.html no estaba en el caché, que lo fue a buscar en el servidor, lo encontró, lo mandó al cliente http y lo guardó en caché. Es lo que se esperaba, no?
Ahora volvemos a ejecutar el mismo comando:
$ GET -Ue http://ats.int:8080/prueba.html
GET http://ats.int:8080/prueba.html
User-Agent: lwp-request/6.03 libwww-perl/6.04
200 OK
Connection: close
Date: Tue, 10 Sep 2013 13:22:28 GMT
Via: http/1.1 murphy (ApacheTrafficServer/3.0.5 [cHs f ])
Accept-Ranges: bytes
Age: 317
ETag: "4e-4b-4e6073106eb8b"
Server: ATS/3.0.5
Vary: Accept-Encoding
Content-Length: 75
Content-Type: text/html
Last-Modified: Tue, 10 Sep 2013 13:07:48 GMT
Client-Date: Tue, 10 Sep 2013 13:27:45 GMT
Client-Peer: 127.0.0.1:8080
Client-Response-Num: 1
<html>
<head>Prueba</head>
<body>
hola, esto es una prueba
</body>
</html>
Observemos de nuevo el encabezado Via, tiene la siguiente cadena "[cHs f ]" y vemos que tiene un cH, es decir un cache Hit, que quiere decir que el objeto pedido está en el caché y de ahí lo envió al cliente http sin irlo a buscar al servidor original. Es lo que se esperaba de un proxy caché, no?
Se puede seguir haciendo pruebas, por ejemplo, limpiar el caché (ver documentación), hacer un tail -f al access.log de apache y verificar que el apache registra la primera petición del objeto (normal, no está en el caché) y que en posteriores peticiones, no se registra nada en el access.log de apache.
En este post voy a tratar de explicar con una demostración de concepto, como dotar de alta disponibilidad a las sesiones de una aplicación web.
Debido a mis limitaciones técnicas, voy a utilizar lo siguiente:
nginx como balanceador web
php como lenguaje de programación
apache como servidor web
memcached, la estrella en todo esto.
todo esto sobre Debian Wheezy.
Cuando se tiene una granja de servidores web para una aplicación, se requiere que la información almacenada en la sesión de usuario se mantenga y pueda ser accedida por cualquiera de los servidores, incluso, cuando alguno de ellos falla. Existen varias técnicas, algunas más complicadas que otras. Yo voy a hablar de como hacerlo con memcached.
Escenario
El escenario descrito como bloques funcionales será el siguiente:
Un balanceador web (nginx)
Dos servidores web (apache + php)
Tres instancias de memcached
El blanceador (nginx) tendrá como servidores de backend a los dos apaches que son los que alojarán el código php del supuesto sitio web. Para efectos de esta demostración de concepto, todos estos bloques funcionales estarán corriendo en la misma máquina :) Espero que esto no lleve a confusión.
Comenzamos con la instalación y configuración de los bloques funcionales.
Balanceador web (nginx)
Instalamos nginx de la siguiente manera:
# aptitude install nginx
Nos vamos al directorio /etc/nginx/sites-available y creamos el archivo mem-test que tendrá la configuración de nuestro balanceador. Este es el contenido del archivo:
upstream mem-test {
server 127.0.0.1:8081;
server 127.0.0.1:8082;
}
server {
listen 8080;
location / {
proxy_pass http://mem-test;
}
}
Como se aprecia, voy a tener dos servidores web escuchando en los puertos 8081 y 8082. Será mi "granja" que después configuraré. La sección siguiente le dice a nginx que escuche en el puerto 8080 (mi blanceador) y que todo lo que llegue lo pase a los servidores descritos arriba.
Nos vamos al directorio /etc/nginx/sites-enabled, creamos un link simbólico que apunte al archivo creado
# cd /etc/nginx/sites-enabled
# ln -s /etc/nginx/sites-aviable/mem-test
y borramos el link "default".
Listo, ya tenemos nginx configurado como balanceador, nos queda arrancarlo:
# service start nginx
No deberían salir errores si se siguieron los pasos descritos.
al archivo /etc/apache2/ports.conf y creamos dos archivos de configuración llamados server01 y server02 en /etc/apache2/sites-available. Estos son los que yo creé: server01
y en el archivo /etc/php5/apache2/conf.d/20-memcache.ini añadir:
memcache.session_redundancy=4
Nota muy importante, el valor de memcache.session_redundancy debe ser igual al número de instancias de memcached +1.
Reiniciamos el apache:
# service apache2 stop
# service apache2 start
Solo falta escribir un código de prueba. En cada uno de los DocumentRoot de los virtualhosts, creamos un archivo llamado index.php como el siguiente para comenzar:
Hay que tener en cuenta que cada index.php debe reflejar el nombre de su respectivo servidor virtual.
Ahora, con cualquier navegador (yo usé lynx) podemos probar con la URL
http://localhost:8080
y recargamos la página varias veces.
Esta prueba debe mostrar _siempre_ que la variable "contador" está vacía lo cual es lógico. Lo único que debería variar es el nombre del servidor, que debe alternarse entre server01 y server02 con lo que sabemos que el balanceador está funcionando.
Una vez confirmado esto, modificamos el index.php de server02 para que quede de esta manera:
Al recargar la URL debemos observar como el contador comienza a incrementarse después de haber contactado a server02.
Para probar que se mantienen las sesiones al ocurrir un fallo, procedemos a parar las instancias de memcached teniendo en cuenta que hay que dejar el menos una corriendo.
# /etc/init.d/memcached stop inst01
Al recargar la URL deberíamos observar que el contador se sigue incrementando demostrando así que tenemos alta disponibilidad con las sesiones web.
Esto es solo una demostración de concepto pero se evidencia la flexibilidad y redundancia de memcached para guardar y mantener la información de las sesiones web.
El día de la suelta para un alumno piloto es un gran día, es el momento en el cual sus instructores estiman (ilusos ellos) que el alumno tiene las habilidades mínimas necesarias como para no matarse viajando solo en un avión.
Es un día especial donde la emoción y el susto se combinan para que tengas una sensación que nadie ha podido definir aún.
Este es el relato de mi día de la suelta.
Me había programado para volar el sábado temprano (9:00 a.m) porque en verano me gusta volar a primera hora de la mañana, así me evito turbulencias producidas por térmicas y el avión tiene mejor performance (aire más frío).
Volar a primera hora también tiene sus contras, tienes que pararte más temprano, tienes que ir con prisas para llegar a la oficina ARO de Cuatro Vientos (abren a las 8:30) y tienes que ser Usain Bolt para llegar rápido a la plataforma de la escuela que queda "llegando a Coslada" para ver si no te agarra el "atasco" en el punto de espera que parece la A6 en hora pico.
Para palear un poco estos contras, lo que hago es meter el plan de vuelo el día anterior por la tarde, así llego directo al control de seguridad el día del vuelo y me ahorro un poquito de tiempo (solo un poquito).
Pues bien, el viernes en la tarde veo la página de programación de la escuela que, aunque la información que sale ahí no es oficial sino hasta las 8 de la noche, a las 3 de la tarde es muy probable que esa información ya sea la definitiva (iluso pequeño saltamontes).
A eso de las 4 de la tarde y por "no dejar", reviso de nuevo la página de programación de la escuela y .... oh sorpresa, me habían cambiado al instructor y ahora decía "check". Por supuesto, puse cara de "ponchao", eso de check no lo había visto nunca y pensé que debían ser las nuevas políticas de la escuela que ahora te hacen chequeos teóricos frecuentemente.
No me parece mal, así te obligan a repasar la teoría siempre.
Pues bien, con eso en mente salgo de la oficina hacia Cuatro Vientos (LECU de ahora en adelante) a meter mi plan de vuelo para el sábado un poco preocupado porque, para que coloquen en la programación que me van a hacer un "check", pues debe ser importante, así que ya me veía yo llegando a la casa a estudiar y perderme las finales del viernes del mundial de natación Barcelona 2013.
Llego a LECU, estaciono delante de la terminal y vuelvo a intentar verificar la programación de la escuela, no fuese a ser que cambiara de nuevo. En eso recibo una llamada, es este nuevo instructor que me han colocado diciéndome que me va a hacer un chequeo y que me prepare un routing El Alamo, Illescas, me parece raro, muy corto. Le pido que me confirme que es El Alamo, Illescas y nos devolvemos a Cuatro Vientos y me dice que si y que ponga la EOBT a las 9:15 locales y que me esperará en operaciones a las 8:30.
Sin problemas, me voy a la oficina ARO, meto mi plan de vuelo, consulto NOTAMS para el sábado y listo, sale mi plan de vuelo aprobado por la impresora y me voy para mi casa.
El camino de vuelta fue una elucubración constante, el routing era muy corto, seguro que era para evaluarme el timing en los puntos de referencia... uffff me toca afinar bastante en el cálculo de tiempos, y siendo tan corto, seguro me iba a freir con teoría....
Pienso también que.... y si es la suelta? OMG!!!!! .... no, no creo, estoy muy "pichón" pero igualito "huele mal".
Llego a las casa con "cara de circunstancias", mi esposa me pregunta que qué me pasa y le cuento lo del "check". Ella me dice que no me preocupe, que me lo tome con calma, que siempre me tomo las cosas muy a pecho. Tiene razón pero cuando llevas eso en el "firmware" poco se puede hacer....
Total que me pongo manos a la obra, saco mis "macundales" y me pongo a hacer el routing. Es tan pero tan corto que solo alcanzo a colocar un punto intermedio en cada tramo para llevar el timing... pienso que aquí está la "trampa", ve van a joder con eso.
Termino de hacer mis garabatos sobre la carta 1:500000, agarro el manual del avión y comienzo a leerme los fallos de motor, los fuegos, velocidades características, etc, etc.
Mi esposa, al verme así, me dice que me va a hacer la cena, que no me preocupe y siga estudiando :)
Termina la natación (damn it!!!! no vi casi nada), termino de cenar y agarro el "análisis de maniobras" que seguro me pone a hacer mil pérdidas y tres mil fallos de motor... "mínime!!!!!!"
Ya preocupado por la hora, me voy a dormir temprano para estar "despierto" al día siguiente.
Suena el despertador y partida!!!!!!! a bañarme, desayunar, sacar la meteo y los NOTAM's y "ráspalo" pa' LECU.
Llego a la terminal (casi vacía), paso el control de seguridad y "rumbo a Coslada".
Cuando llego a la plataforma de la escuela, veo al avión que me toca con las puertas abiertas, full flaps.... que raro.... será que me equivoqué de avión?? Bien bueno pues.....
Entro a la oficina y está extrañamente "llena", dos instructores, tres alumnos (WTF??!!). En fin, se presenta mi instructor (primera vez que lo veo), confirma mi nombre y me dice, "siéntate ahí"... listo, comienza "el parto".
Me pide certificado médico, tarjeta de alumno, plan de vuelo, meteo, plan de vuelo operacional, ruting, NOTAM's, nombre y pedigree de la mascota de mi hermana... (ok, se me fue la mano ;) ).
Me bombardea de preguntas e intento responderlas lo mejor que puedo y cuando terminamos me dice: vamos a avolar..... ajá!!!! aquí está la trampa!!!!! no he hecho la carga y centrado ni la exterior!!! pues nada, se lo digo al instructor y me dice que la exterior la hizo el y la hoja de carga y centrado también.
Lo miro con desconfianza y le insisto, "pero seguro"? y me responde el con mirada de "ya estamos con el mequetrefe este", si, ya lo hice yo, vámonos ya.
Ok, con esa capacidad de convencimiento, nos dirigimos al avión, doy una "ojeada rápida" por si las moscas y comenzamos con la checklist.
Todo perfecto, me dispongo a rodar y el instructorme dice "mío el avión", perfecto, agarra el avión como si fuese una bicicleta, lo saca de plataforma y me lo da. Me dice que me apure para que no nos agarre "el atasco". Bien, pruebo mis frenos y listo, el primer regaño, "no frenes así, no estás probado el ABS", ok, lo tendré en cuenta (uffff bonito comienzo)..
Seguimos hasta el punto de espera de la 28 y el instructor se pone a hablarme del anti skid..... fine.... a ver si se me olvidan los chequeos de brújula , direccional, bastón y bola.... le interrumpo diciéndole que voy a hacer las pruebas y me dice que ok...
Ya en el punto de espera con briefing's y prueba de motor lista, nos autorizan a despegar por la 28, viento en calma (muy bien!!!!).
Estando en viento en cara me dice el instructor que vamos a hacer 2 tomas y despegues, que hable con la torre en viendo en cola.... ok, perfecto, la torre nos autoriza y uffff, a ver como me sale esta toma, las últimas con full flaps me han salido un poco flojas, en cambio, con dos puntos de flaps, esas si me salen chéveres.
Pues bien, ya con toma asegurada y en la cabecera de la 28 con las que te conté de corbata, intento hacer una toma "buena".... uffff un poco dura... ya estamos.... sin embargo el instructor me dice que la toma bien, pero que tengo que rotar a 55 KIAS y no a 60 como siempre he practicado, pero bueno, que lo tenga en cuenta.
Seguimos con la segunda toma y la torre me dice que alargue el viento en cola y autoriza a un tráfico, que estaba en el punto de espera, a despegar.
El tráfico se demora un poco y el instructor me dice: "ves? cuando digas listo salida es listo salida porque haces esperar a los demás tráficos".
Entendido... ya me estaba poniendo nervioso porque ese viento en cola estaba llegando a Vallecas ( no es cierto ;) ) cuando veo que el tráfico despega. Viro a base y la torre nos autoriza a aterrizar.
Como el final fue "largo", me dió tiempo a colocarme bien y a "pensar mucho" en esa toma.... no meter flap's tan pronto que quedaba bastante tiempo, calma...
Ya con toma asegururada y full flap's presento el avión, comienzo la recogida tratando de que esta toma si fuese "buena".... suena la bocina de pérdida y pack, toma suave... coño!!! seguro tomé con 2 puntos de flaps... Verifico los flap's y no, están en full.... pues nada, limpiar el avión, full gases y nos vamos!!!.
Al menos esta toma si había salido como a mi me gusta.
Total que nos dirigimos a W, le comento como voy a hacer el routing, preparo frecuencias, carta, etc, notificamos en W, ponemos rumbo al Alamo y "saludamos" en aire-aire.
El instructor sigue hablándome no se si para distraerme o porque el es así, al menos el vuelo sería "entretenido".
Ya rumbo a Illescas comenzaron las "gracias", fallos de motor, preguntas trampa a ver si sabía en donde estaba pero lo más importante, consejos de "aviación práctica", no la que sale en los libros, la que me va a salvar la vida, cosa que se agradece mucho.
Así transcurrió el vuelo, más fallos de motor, más consejos prácticos, más fallos de alternador, batería, etc etc etc (creo que falló todo lo que tenía que fallar!!!!!).
Ya entrando en al circuito de LECU, escucho en frecuecia la frase "toma intermedia para suelta de alumno"..... de otros tráficos :( dos que recuerde.
Viendo que me quedaba mucho tiempo, le pregunté si esta era toma final o podíamos hacer más tomas y despegues, el me dice que llevará las comunicaciones y que yo me centre en el avión, pues bien, cada vez que el hablaba con la torre yo no escuchaba nada (medio fallo de radio!!!! lo que faltaba!!!!). Le dije que no lo escuchaba cuando hablaba con la torre y el me contestó de lo más tranquilo: "si, yo tampoco te escucho a ti cuando notificas, tengo que verte para saber que estás diciendo (WTF!!!!!!!!!???????????)
Seguimos en aproximación, tomo y le pregunto de nuevo "qué hacemos? plataforma?". No me contesta, liberamos pista, torre nos pasa con rodadura, el instructor sigue hablando con la controladora y yo nada que escucho, (fuck!!!!). Le insisto de nuevo " ya?, no vamos a hacer tomas y despegues?" y el me responde con : "quieres volar solo"? (WHAT!!!!!!!!) - eehhhmmmm mmmmm si... pero..... - y me sigue diciendo: "bueno, ahora llegamos a plataforma y te vas tu solo.... (OMFG!!!!!!!!!!!!!!!!!).
Seguimos a plataforma y antes de llegar a los caribou's me dice, mío el avión, hace un 360 y me dice, "lo agarras desde aquí, aprovecha el día que está muy bueno y no vengas antes de una hora" (GOOOOOOOOOOOOD!!!!!)
Por supuesto, no tenía routing de nada aparte del que había preparado así que le digo, bueno, a ver dónde me voy ahora, el me sugiere Toledo y me parece bien.
Me gusta mucho Toledo y ya la había sobrevolado una vez y es espectacular, así que con autorización, hasta punto de espera de la 28 y a Toledo....
Creo que todavía no me daba cuenta de que era mi suelta, estaba pendiente de checklist's, la ruta que iba a seguir, altitud, tráficos, etc... ya en W y en frecuencia aire-aire notifico que voy al Bosque de Batres, 3000 ft, al ratico notifican 2 tráficos que están cerca del bosque de Batres y que van a S.
Desde operaciones de la escuela "advierten" que estoy en mi suelta y que si pueden, amablemente, subirse 500 ft =) Los tráficos aceptaron sin problemas (desde aquí mil gracias por facilitarme las cosas), sin embargo, ya los tenía a la vista así que los podía evadir.
Ya con el Bosque de Batres a mi izquierda, notifico que voy rumbo sur a Recas, 3000 ft. Que sorpresa, otro tráfico estaba sobre Recas a 3000 ft y rumbo a Toledo, bien bueno pues, hoy es el día de ir a Toledo me dije :)
Decido entonces notificar cuado llegue a Lomichar, así saben que el rookie de la suelta anda por ahí. Escucho a otro tráfico sobre Chozas de Canales y creo recordar que iba hacia Casarrubios, perfecto, más gente para la fiesta.
Abro los ojos lo más que puedo y comienzo a hacer el scan del cielo a ver si aparece "algo"... nada.... ya sobre Lomichar vuelvo a notificar y escucho a mi precedente sobre Olias del Rey... bien, vamos en caravana...
Como ven, de disfrutar poco, siempre pendiente de los tráficos, la altitud, el mapa, los pueblos.... ufffff.
Por fin en Recas, notifico y mi precedente dice que está en Toledo y que se sube a 4500 ft, bien, parece que podré orbitar sobre Toledo sin problemas...
La cosa se relaja un poco sobre Olías del Rey, ya tenía a Toledo en el morro y nadie se había reportado por la zona, hora de descansar orbitando sobre el oeste de Toledo..... el casco histórico es impresionante desde 3000 ft... esta es parte de la recompensa después de haber sufrido a Adsuar.
No se cuantas vueltas di al oeste de Toledo, creo que no me canso de verla :), para asegurarme el disfrute reporté que iba a estar orbitando sobre Toledo, así sabrían que había alguien por ahí.
Miré la hora y decidí regresarme, justo en ese momento se reporta un tráfico que venía de Recas a Toledo, no se si se había reportado antes, yo estaba muy "ocupado" :)
Notifiqué que abanonaba Toledo rumbo Olías del Rey y me aparté un poco a la derecha por si las moscas.
El tramo de vuelta fue tranquilo, la frecuencia estaba callada y fue ahí donde me di cuenta que estaba volando yo solo y que era el día de mi suelta.
En este post voy a colocar los pasos que seguí para construir un receptor ADS-B con linux.
Primero, algo de teoría, aunque si estás leyendo este post, probablemente ya sepas que es ADS-B, sin embargo, algo de teoría no cae mal.
Según skybrary, ADS-B son unas siglas que significan Automatic Dependent Surveillance Broadcast. Es un sistema mediante el cual los aviones o cualquier vehículo aeroportuario emiten información generada en sus sistemas de abordo mediante radiodifución (Skybrary, ADS-B).
Existen en el mercado varios receptores para estas emisiones, por ejemplo, el SBS-3 de Kinetic Avionics que cuesta alrededor de £ 500.
En el sitio Flightradar24 se puede apreciar un ejemplo de la data que pueden recopilar estos receptores y de lo que se puede hacer con ella.
Como £ 500 es realmente mucho y existen opciones más baratas disponibles, voy a hablar de una opción que cae en el grupo de las baratas (aproximadamente 8 € !!!!!!!!!).
Hardware
El aparatico que hace la magia es un receptor de radio y televisión digital USB. Según he leido, este es un dispositivo que entra en la categoría de SDR (Radio de software) y lo interesante es que se puede sintonizar a la frecuencia de 1090 MHz que es la frecuencia en la cual se transmite la información ADS-B.
Uno de los modelos más populares de este "dongle" son los que están basados en los chips RTL2832U+R820T.
Este "dongle" viene con una antena que hace un trabajo bastante bueno y que sirve para iniciarse en el mundo del radiospotting.
Esta es la salida de lsusb montrando al "dongle"
Bus 001 Device 003: ID 0bda:2838 Realtek Semiconductor Corp. RTL2838 DVB-T
Y esta es lo que muestra el syslog cuando el "dongle" se conecta al puerto USB
kernel: [ 167.908218] usb 1-8: new high-speed USB device number 3 using ehci_hcd
kernel: [ 168.052057] usb 1-8: New USB device found, idVendor=0bda, idProduct=2838
kernel: [ 168.052067] usb 1-8: New USB device strings: Mfr=1, Product=2, SerialNumber=3
kernel: [ 168.052075] usb 1-8: Product: RTL2838UHIDIR
kernel: [ 168.052081] usb 1-8: Manufacturer: Realtek
kernel: [ 168.052087] usb 1-8: SerialNumber: 00000001
Aparte del "dongle", se necesita una computadora con un puerto USB 2.0.
Software
Sistema operativo: En mi caso utilicé Debian Wheezy.
SDR: Para la sintonización utilicé las utilidades rtl-sdr.
Decodificador ADS-B (Opcional pero muy recomendado): Como decodificador adicional de ADS-B utilicé dump1090 que es una herramienta muy útil a la hora de visualizar los tráficos de una manera amigable.
Manos a la obra
Lo primero que hay que hacer es preparar el sistema operativo para compilar, ya que ninguno de estos programas (rtl-sdr y dump1090) están precompilados en los repositorios oficiales de debian.
Ahora hay que bajarse el software para compilarlo.
rtl-sdr
# cd /usr/local/src
# git clone git://git.osmocom.org/rtl-sdr.git
# mkdir -p rtl-sdr/build
# cd rtl-sdr/build
# cmake -DINSTALL_UDEV_RULES=ON ../
# make
# make install
Ya con esto deberíamos tener rtl-sdr instalado. Los binarios estarán en /usr/local/bin.
Ahora hay que probar que podemos trabajar con el "dongle", para esto, lo insertamos en un puerto USB y ejecutamos los siguiente (Ctrl+c para volver al prompt):
# rtl_test
Esta es la salida que obtengo yo:
Found 1 device(s):
0: ezcap USB 2.0 DVB-T/DAB/FM dongle
Using device 0: ezcap USB 2.0 DVB-T/DAB/FM dongle
Found Rafael Micro R820T tuner
Supported gain values (29): 0.0 0.9 1.4 2.7 3.7 7.7 8.7 12.5 14.4 15.7 16.6 19.7 20.7
22.9 25.4 28.0 29.7 32.8 33.8 36.4 37.2 38.6 40.2 42.1 43.4 43.9 44.5 48.0 49.6
Info: This tool will continuously read from the device, and report if
samples get lost. If you observe no further output, everything is fine.
Reading samples in async mode...
lost at least 68 bytes
No me preocupo por los bytes perdidos, lo que interesa es que el dispositivo está reconocido y más aún, que reconoció el radio Rafael Micro R820T.
Ahora hay que conectar la antena (si es que ya no está conectada) y probar si recibimos data ADS-B.
Si es posible colocar la antena cerca de la ventana y tener visión del cielo sin obstáculos, mejor.
En mi caso, como las pruebas las estoy haciendo en una laptop, me es fácil ubicarme cerca de una ventana.
Ejecutamos lo siguiente (Crtl+c para volver al prompt):
# rtl_adsb -V
Y deberíamos tener una salida como esta
Found 1 device(s):
0: Realtek, RTL2838UHIDIR, SN: 00000001
Using device 0: ezcap USB 2.0 DVB-T/DAB/FM dongle
Found Rafael Micro R820T tuner
Tuner gain set to automatic.
Tuned to 1090000000 Hz.
Sampling at 2000000 Hz.
Exact sample rate is: 2000000.052982 Hz
*8d405f1391404839a80495d13bdd;
DF=17 CA=5
ICAO Address=405f13
PI=0xd13bdd
Type Code=18 S.Type/Ant.=1
--------------
*8d505ec162b98399033c73ba8256;
DF=17 CA=5
ICAO Address=505ec1
PI=0xba8256
Type Code=12 S.Type/Ant.=2
--------------
*8d34150e9901650a80b296f522d3;
DF=17 CA=5
ICAO Address=34150e
PI=0xf522d3
Type Code=19 S.Type/Ant.=1
--------------
*8597c521e0e38161319e05f52f61;
DF=16 CA=5
ICAO Address=97c521
PI=0xf52f61
Type Code=28 S.Type/Ant.=0
--------------
*8e44ce719910e92280809106d31b;
DF=17 CA=6
ICAO Address=44ce71
PI=0x06d31b
Type Code=19 S.Type/Ant.=1
--------------
Señores, ahí están los tráficos!!!!!!!, el receptor funciona y tenemos información. Las líneas que salen como "ICAO Address" son la identificación de los tráficos que tienen transponders en Modo S. Más información Aquí.
Por supuesto, esta representación no nos dice mucho, lo que realmente queremos es ver los tráficos en un mapa y conocer su altitud, velocidad, heading, call sign, tipo de avión, etc, etc, etc, y para eso se necesita un visualizador.
Para linux he encontrado dos, el dump1090 que es decodificador y visualizador y el Virtual Radar Server que está escrito en C# (Mono) y aseguran que corre en linux. Yo solo lo he probado en windows y dada mi nula habilidad en ese sistema operativo, poco puedo aportar, salvo que me ha dado uns resultados bastante "aceptables" pero me sigo sintiendo "incómodo". Por esa razón, solo voy a hablar de dump1090 que si corre bien en linux y además de decodificador es visualizador.
dump1090
Dump1090 es muy versátil, permite decodificar la información ADS-B, mostrarla en modo texto de una manera amigable y además tiene un servidor web en el que se pueden ver los tráficos al estilo Flightradar24.
En mi caso, con la antena que viene el "dongle", dentro del apartamento (1° piso) y con una visión sin obstáculos de un sector "pequeño" del norte de Madrid, he podido seguir tráficos a altitudes de entre 5000 ft y FL380 (Madrid está a 2000 ft aproximadamente) y a una distancia de 110 NM.
Ye que le he hecho tanta propaganda a dump1090, hay que compilarlo:
# cd /usr/local/src
# git clone https://github.com/antirez/dump1090.git
# cd dump1090
# make
Esto genera el binario dump1090. Ahora solo resta copiar el binario y el archivo gmap.html a un directorio apropiado.
Entre las opciones que tiene dump1090 están, la visualización en modo texto (--interactive), la visualización por web y la posibilidad de compartir la data decodificada con otros visualizadores.
Para conocer todas las opciones de dump1090 hay que ejecutar:
# ./dump1090 -h
Dejo unas capturas de dump1090 en funcionamiento.
dump1090 en modo texto:
Visualización de la data en modo web proporcionada por dump1090:
Este es un post más sobre como usar el DNI electrónico en linux en una distribución diferente a las que tiene listadas la policía, en este caso es en Debian Wheezy de 32 bits.
Hardware
Una de las cosas importantes es contar con un lector de tarjetas inteligentes compatible con linux. Hay varios en el mercado, yo compré este:
Es un lector marca bit4id usb. Esto es lo que sale de un lsusb:
Bus 005 Device 003: ID 072f:90cc Advanced Card Systems, Ltd ACR38 SmartCard Reader
y esto es parte de lo que sale cuando conecto el lector en el puerto USB
usb 5-1: new full-speed USB device number 3 using uhci_hcd
usb 5-1: New USB device found, idVendor=072f, idProduct=90cc
usb 5-1: New USB device strings: Mfr=1, Product=2, SerialNumber=0
usb 5-1: Product: CCID USB Reader
usb 5-1: Manufacturer: ACS
Esta compañía tiene un sitio web donde tienen algo de información para linux
Nota: Cuando hice la prueba de insertar el DNI, el led no permaneció encendido 15 segundos, pero si 5.
Instalación de software
Esta es la parte "complicada" porque no hay paquetes de opensc para wheezy ni en la página de la policía ni en los repositorios oficiales de Debian que sea capaces de leer el DNIe.
La gente de opendnie tiene un .deb de opensc que es una modificación del "oficial" de Debian y es esta modificación la que hace que opensc funcione con el DNI electrónico. Todo esto al momento de escribir este post (24 de Febrero de 2013)
A continuación coloco los pasos que seguí para el DNIe funcionara en wheezy:
Verificar que se tienen estos paquetes instalados:
# cd /usr/local/src
# wget https://forja.cenatic.es/frs/download.php/file/1305/opensc_0.12.1-1-svn385_i386.deb
# dpkg -i opensc_0.12.1-1-svn385_i386.deb
Instalar los paquetes pcscd y pcsc-tools
# aptitude install pcscd pcsc-tools
Como instalamos un opensc que no es el oficial, debemos evitar que se actualice cuando hagamos un aptitude upgrade.
# aptitude hold opensc
Creamos un enlace simbólico para libpcsclite.so.1
# cd /usr/lib
# ln -s /usr/lib/i386-linux-gnu/libpcsclite.so.1
Instalar los siguientes paquetes para tener algunas utilidades importantes para trabajar con cualquier tarjeta inteligente
aptitude install pinentry-gtk2 libnss3-tools
Hasta aquí la instalación de software.
Verificación
Para verificar que todo está correcto, utilizamos el programa pcsc_scan y así comprobar que el lector funciona y lee el DNIe.
Insertamos el lector en un puerto usb y en un terminal ejecutamos
pcsc_scan
Deberíamos obtener una salida parecida a esta:
$ pcsc_scan
PC/SC device scanner
V 1.4.20 (c) 2001-2011, Ludovic Rousseau <ludovic.rousseau@free.fr>
Compiled with PC/SC lite version: 1.8.3
Using reader plug'n play mechanism
Scanning present readers..
0: ACS AET65 00 00
Sun Feb 24 11:09:37 2013
Reader 0: ACS AET65 00 00
Card state: Card removed,
El programa no devuelve prompt, así que no se susten.
Insertamos el DNIe en el lector y deberíamos ver como salen una serie de mensajes en el terminal. Las últimas líneas deberían ser algo como esto:
DNI electronico (Spanish electronic ID card)
http://www.dnielectronico.es
Si esto es así, el sistema operativo reconoce al lector y es posible usar el DNIe en wheezy, si no es así, revisar los pasos anteriores.
Ya podemos salirnos del terminal y desconectar el lector.
Configuración de Firefox para utilizar el DNIe.
En esta sección describiré como hacer funcionar el DNIe con firefox ya que es lo interesante, entrar a los sitios como el banco o hacienda (es interesante entrar en el sitio de hacienda?????) para realizar operaciones que requieran nuestra identificación.
Básicamente, lo que haremos es bajar e instalar el certificado raíz de la policía, decirle a firefox que use el DNIe como dispositivo de seguridad e instalar el plugin de java de Sun ya que con el icedtea no me funcionó la petición de PIN que hace el banco para identificar a alguien con DNIe.
Nota importante: El paso en el que le decimos a firefox que use el DNIe como un dispositivo de seguridad requiere que firefox no esté corriendo.
Buscamos y elegimos el certificado descargado ACRAIZ-SHA2.crt.
Nos saldrá una ventana preguntándonos para qué porpósitos vamos a confiar en este certificado y seleccionaremos todas las opciones.
Hacemos click en OK y listo, ya tenemos la CA de la policía en nuestro repositorio de certificados de firefox.
Ahora viene un paso muy muy importante y es necesario cerrar firefox, por lo tanto, hay que copiar el siguiente comando en algún lado y ejecutarlo como usuario "normal" (no como root) solo cuando firefox esté cerrado. En este paso le diremos a firefox que use al DNIe como dispositivo de seguridad.
Repito, este comando debe ejecutarse cuando firefox no esté corriendo. Cuando firefox esté cerrado, ejecutarlo como usuario, no como root.
Conectamos de nuevo el lector de tarjetas inteligentes
Abrimos firefox y vamos a
Edit -> Preferences -> Advanced -> Encryption -> Security Devices
y deberíamos obtener algo como esto:
Si no obtenemos esto, es probable que no se hayan seguido los pasos anteriores. Habría que cerrar firefox, desconectar el lector, reiniciar pcscd, conectar el lector y ejecutar firefox.
No se si es un bug, pero el lector tiene que estar conectado antes de ejecutar firefox (la mayoría de las veces).
Instalación del plugin de java de SUN
Solo resta instalar el plugin de java de SUN (Oracle). No coloco las instrucciones porque hay muchos sitios que ya lo hacen.
A mi no me funcionó el icedtea, cada vez que un sitio me iba a pedir el PIN me salía el mensaje de error "changing the securitymanager is not allowed".