Tag: podcast

Resumen 2023

Reading time: 14 – 22 minutes

El 2023 comenzó con una sensación de renovación y optimismo. Tras un período marcado por la pandemia, este año se presentó como un lienzo en blanco, lleno de posibilidades y nuevas experiencias. Aunque el COVID-19 ya no domina nuestras vidas como antes, su impacto sigue siendo palpable en cómo vemos el mundo y en cómo nos relacionamos los unos con los otros. Este año ha sido un viaje de redescubrimiento, desde encuentros más íntimos y significativos hasta eventos más grandes y festivos. Hemos pasado de una realidad de restricciones y cautela a una de mayor libertad y celebración. Y, al igual que el año pasado, este 2023 ha estado lleno de momentos memorables, como la fiesta de fin de años en Agres, que han marcado un regreso a las tradiciones y alegrías que tanto extrañábamos. Compartiendo estos momentos con seres queridos, como Xavi y su familia, he redescubierto el valor de la conexión humana y la alegría de estar juntos.

Aprendizajes

En este 2023, he acumulado una serie de lecciones que, en mi opinión, resumen los aspectos más esenciales que la vida me ha enseñado este año. No me detendré a analizar la diferencia entre aprender e interiorizar, aunque es un tema fascinante. Sin embargo, quiero destacar que el proceso de aprender, y más aún el de re-aprender, es una constante en la vida. A menudo, nos encontramos con lecciones que necesitamos experimentar varias veces antes de que realmente se asienten en nuestra comprensión y comportamiento. A continuación, comparto las lecciones más significativas que he aprendido este año, las cuales han requerido tiempo y reflexión para integrarlas plenamente en mi vida.

  1. He desarrollado una mayor conciencia de mis limitaciones personales en cuanto a la concentración y el tiempo necesario para absorber e interiorizar información clave. Al adentrarme en el mundo del trading, esta experiencia me ha obligado a ser aún más disciplinado con mi tiempo y energía, enseñándome a valorar cada momento y a utilizarlo sabiamente. A su vez, he comprendido que existe un delicado equilibrio entre el tiempo que se necesita para aprender y el tiempo para ejecutar. Esta comprensión ha sido crucial para planificar mejor mis proyectos y tareas, asegurándome de dedicar suficiente tiempo tanto a la fase de aprendizaje como a la acción necesaria para alcanzar mis objetivos.
  2. Delegar Trabajo a los Estudiantes. He aprendido la importancia de dejar que los estudiantes trabajen de manera independiente. Me di cuenta de que, al soltar las riendas, ellos pueden sorprenderte con su capacidad de resolver problemas y su creatividad. Este enfoque no solo les beneficia a ellos en su aprendizaje, sino que también me ha permitido enfocarme en otros aspectos cruciales de mi labor educativa.
  3. He tomado conciencia de la importancia de una alimentación saludable y el autocuidado, aunque aún estoy lejos de lograrlo plenamente. Este año, he aprendido profundamente que sin salud no hay nada; es nuestro bien más preciado. A pesar de no haber alcanzado aún mis objetivos en este aspecto, reconozco que el cuidado de la salud es fundamental y estoy comprometido a trabajar hacia un bienestar físico y mental más sólido.

Proyectos y marca personal

El único libro no técnico que he tenido la oportunidad de leer este año ha sido “Manifest per als herois de cada dia” de Robin Sharma. Como suele suceder con este autor, el libro me ha llevado a reflexionar y trabajar en aspectos personales profundos, recordándome la importancia de centrarse en lo que realmente importa en la vida. Todavía recuerdo esos días de verano en la playa disfrutando de la compañía de este gran libro.l

En el ámbito más cercano a lo profesional, quiero destacar “Industria 4.0, la transformación digital en la industria” de Jaume Martínez Aguiló. Tuve el placer de almorzar con él y recibir una dedicatoria en su libro. Leer a alguien con una perspectiva de diferente sobre temas que domino siempre es una oportunidad para replantear mi comprensión y, aunque en ocasiones no comparta completamente su visión, su libro ha sido una fuente valiosa de conocimiento. Muy interesante poder ver la Industria 4.0 des de la óptica de un director financiero.

Por otro lado, debido a la carga de trabajo hacia finales de año, he tenido que reducir mi actividad en redes sociales y en mi marca personal oriolrius.me. Simplemente, no he podido manejar el volumen de trabajo que tenía. Suerte de la ayuda de Fátima y la paciencia de mi familia.

Sin embargo, el proyecto que llevo adelante como hobby, de carácter más técnico y que me permite profundizar en temas de dudosa rentabilidad, sigue creciendo poco a poco. Me refiero a Industry 4.0 systems, un proyecto que me apasiona y en el que invierto mi tiempo libre.

Finalmente, este año ha estado marcado por una pérdida muy significativa. El adiós a Leonard Janer, una figura y mentor fundamental en mi vida. Fue una excelente persona, un profesor incomparable, un técnico apasionado y un amigo inigualable. Su partida ha dejado un vacío irremplazable, y siempre estaré agradecido por todo lo que me enseñó y compartió conmigo. GRACIAS POR TODO, LEONARD.

Familia y temas personales

El año ha estado marcado por un proyecto que nos ha mantenido muy ocupados: la reforma de la cocina y el comedor. Tomamos la decisión de unir ambos espacios, creando un único y acogedor lugar en nuestro hogar. Desde el primer día del año, nos hemos sumergido en un torbellino de planificación, diseño, selección de materiales, toma de decisiones, contrataciones y revisiones.

Ha sido un proceso intenso, lleno de detalles y decisiones importantes. Durante los meses de obras, nuestro refugio fue el apartamento en la playa. Aquí, las visitas a restaurantes se convirtieron en algo frecuente, tanto que terminamos haciéndonos socios del Club Marítimo de Cubelles. Esto no solo nos benefició con descuentos, sino que también abrió una nueva puerta para Roc, quien comenzó su aventura en el mundo de la vela.

Para seguir hablemos un poco de los viajes que hemos podido disfrutar este año.

En enero, nos aventuramos a Gran Canaria para visitar a la familia de Oriol y Gemma. Nos maravillamos con lugares inesperados en Canarias. Nunca imaginamos que había zonas húmedas y montañosas; como Teror y Artenara, donde Oriol tiene la base.

En Semana Santa, vivimos la magia de Eurodisney, una experiencia inolvidable llena de diversión y fantasía. Realmente fue un viaje que me sorprendió muy positivamente. Más allá de las atracciones, todo el montaje y la logística que supone un parque de atracciones como este es algo deslumbrante. Además, ver a toda la familia disfrutar el sueño de vivir momentos mágicos juntos, no tiene precio.

En el puente de la purísima, viajamos al sur de Francia con los cuñados viendo varios mercados navideños, sumergiéndonos en un ambiente navideño y lleno de tradición. Concretamente visitamos: Peyriac-de-Mer, Barcares, Perpignan, Carcasonne, Narbona, Beziers y Collioure. Itensidad a tope y rincones preciosos en cuatro días para entrar en las fiestas navideñas por todo lo alto.

Y en cuanto al hockey, tanto Roc como Nil siguen con una motivación desbordante. Este año, junto con otros padres, nos involucramos más en la junta del club C.E. Torrelavit para preservar el hockey patines, una actividad que podría haber desaparecido. Fue un esfuerzo que valió la pena, ya que el equipo ha tenido una temporada excepcional, terminando invictos y en primera posición en la primera parte de la liga. Ha sido un año de desafíos, pero también de grandes satisfacciones y nuevos descubrimientos.

Charlas y escuelas de negocios

Este año también tuve el honor de participar en el podcast de Walker Reynolds, un referente en Industria 4.0, gracias a la intervención de Marc Pous. Poder compartir en este espacio ha sido una experiencia enriquecedora y una oportunidad para profundizar en temas que me apasionan.

Este ha sido mi segundo año como profesor en ESADE, he continuado impartiendo clases en las asignaturas de Digital Technology, Digital LABs y Capstone Projects II. Además este año he podido vivir la primera graduación de mis estudiantes. Verlos alcanzar sus objetivos ha sido enormemente motivador y un verdadero orgullo para mí.

Además de ESADE, este año he tenido la oportunidad de impartir clases en otras instituciones. En Tecnocampus Mataró, di una clase sobre IoT, mientras que en EAE Business School me centré en Key Enabling Technologies. También impartí clases para Damm y Simon en ISDI y repetí mi clase sobre Cloud en UCAM (Universidad Católica de Murcia).

En cuanto a charlas, este año he participado en varios eventos destacados. El 16 de mayo estuve en Feceminte hablando sobre las oportunidades de negocio de la Industria 4.0. El 25 de septiembre participé en una jornada de comercio y empresa organizada por el ayuntamiento de Sant Fruitós de Bages, y el 10 de noviembre tuve la oportunidad de estar en la 2ª Convención del Salou Congress.

Cada una de estas experiencias ha contribuido a mi crecimiento profesional y personal, permitiéndome compartir conocimientos y aprender de otros expertos en el campo.

Proyectos profesionales

Ha sido un año donde me he encontrado completamente inmerso en mis responsabilidades como consultor y mentor. Ha sido un reto significativo compaginar esta actividad con mis labores de docencia y formación. Mi agenda ha estado bastante saturada, dedicando cuatro días a la semana a tres clientes fijos, lo que ha limitado mi disponibilidad para otros proyectos.

Sin embargo, lo destacable de esta experiencia ha sido el enorme placer y aprendizaje que he obtenido trabajando con estos clientes: Sàbat, Nexiona e i2cat. Más que clientes, los considero compañeros de un viaje de aprendizaje mutuo. En cada paso que damos juntos, nos retroalimentamos, lo cual se refleja en el crecimiento conjunto y en la calidad de nuestro trabajo.

Quiero aprovechar para expresar mi más sincera gratitud a estos clientes por la confianza depositada en mí. Su apoyo no solo ha contribuido a mi desarrollo profesional, sino que también ha enriquecido mi carrera de maneras que no había imaginado. Este año ha sido un testimonio del valor del trabajo en equipo, el aprendizaje constante y la colaboración efectiva.

Aprendizajes técnicos, ymbihq y otros derivados

Mi interés en el mundo del blockchain me llevó a realizar un curso de smart contracts (Solidity) en Lytryum. Este aprendizaje me ha proporcionado una base sólida y un entendimiento más profundo de las posibilidades que ofrece esta tecnología. Además de permitirme adentrar de lleno en el mundo crypto.

Sin embargo, el tema dominante del año ha sido la inteligencia artificial. En este campo, el aprendizaje más destacado ha sido con Langchain, una de esas librerías revolucionarias que cambian la forma en que entendemos y trabajamos con la IA.

En el ámbito del hardware y la infraestructura de red, he realizado cambios significativos en mi casa, implementando VLANs con nuevos switches y cableado. Además, he instalado una nueva red wifi basada en Ubiquiti (UDM Pro – Dream Machine), lo que ha mejorado notablemente la conectividad en el hogar. Resumiendo he pasado de tener 5 redes diferentes en casa con cada una de sus infraestructuras independientes a una sola red física que multiplexa las 5 redes virtuales aprovechando el mismo hardware.

En cuanto a software, he continuado mi aprendizaje y profundización en Kubernetes, Docker y Ansible, aumentando mi expertise en estas tecnologías.

Bajando a un tema muy concreto que vale la pena destacar; os comparto que al instalar las placas solares me pusieron dos smart meters de la marca Wibeee. Después de varios problemas de conectividad y de muchísimas horas de investigación junto al equipo del fabricante. Tengo que resaltar que estuve especialmente satisfecho con el nivel de conocimiento adquirido sobre cómo ha sido fabricado el smart meter Wibeee que tengo instalado. Y agradecer profundamente el soporte recibido por parte del equipo de Wibeee, simplemente excelente.

Gracias a mis clientes, también he tenido la oportunidad de aprender mucho sobre vídeo volumétrico, una tecnología emergente con un gran potencial en diversos campos. Realmente conocer este tema en cuanto a codec y tecnologías de transporte futuras como 6G es una delicia.

Finalmente, he profundizado en el ecosistema de servicios de Cloudflare, ampliando mi conocimiento en soluciones de nube y seguridad en línea.

Conclusión y cierre

Reflexionando sobre todo lo vivido en este 2023, puedo afirmar que ha sido un año de continuo crecimiento y aprendizaje. Desde las enseñanzas personales hasta los logros profesionales, cada experiencia ha contribuido a mi desarrollo integral como individuo y profesional.

Este año me ha enseñado el valor de la adaptación y la importancia de abrazar el cambio, tanto en el ámbito personal como en el profesional. He reafirmado mi pasión por enseñar, compartir conocimientos y aprender de otros, y cada clase, charla o proyecto ha sido una oportunidad para expandir mi visión y habilidades.

Los proyectos familiares, como la reforma de nuestra casa, y los viajes realizados, han reforzado los lazos con mis seres queridos y me han recordado que los momentos más valiosos se encuentran en las experiencias compartidas. Al mismo tiempo, mi compromiso con mis clientes y mi labor como consultor y mentor han reforzado mi convicción de que el trabajo en equipo y la colaboración son esenciales para el éxito.

En términos de aprendizaje técnico, he explorado nuevas fronteras en el mundo de la inteligencia artificial, la infraestructura de red y las tecnologías emergentes, lo que ha ampliado mi horizonte tecnológico y me ha preparado para los desafíos del futuro.

Este año también ha tenido sus momentos de melancolía, especialmente con la pérdida de un mentor y amigo querido. Su legado y enseñanzas seguirán siendo una fuente de inspiración y guía en mi camino.

En resumen, el 2023 ha sido un año de transformación y enriquecimiento. Me siento agradecido por cada experiencia vivida, por las personas que han formado parte de mi viaje y por todo lo que he aprendido. Con estos aprendizajes y experiencias, miro hacia el futuro con optimismo y entusiasmo, listo para abrazar los nuevos retos y oportunidades que traerá el 2024.

Podcast Zetatesters

Reading time: 2 – 3 minutes

Hace unos días tube la suerte de comer con Javier Moreno (@ciberado) a pesar de considerlo un buen amigo no tengo la suerte de poder compartir un ratito de conversación con él muy a menudo.

Durante la comida me propuso participar en uno de los podcast de Marc Alier. La verdad, el tema de los podcast lo tenía muy frio estos últimos años y realmente ha sido un placer excepcional poder disfrutar de grabarlo.

Primero por el formato en si que me encanta. Pero lo más relevante porqué creo que Marc es una persona fantástica y un ser humano excepcional. Realmente me siento muy conectado con él. Es de esas personas que a los dos minutos de conocerlo ya me daba la sensación que hacía muchos años que eramos amigos.

Así pues, me he enganchado a sus podcast y no descarto colaborar próximamente con él en “Mossegant la poma”. A ver si lo agendo pronto. Antes de cerrar estos elogios hacia Marc, recomendaros:

Finalmente obviamente referenciaros el podcast que grabamos:

Sabeis lo más dibertido que de todo lo que le quería contar a Marc para el podcast no hablé de nada, o casi nada, pero salieron temas y anécdotas buenísimas y súper dibertidas. Así pues, creo que podeis pasar un buen rato escuchando el podcast. Ya me direis si os ha gustado.

El Podcast disponible al directori d’iTunes

Reading time: < 1 minute Després de que diverses persones m'ho demanessin fa un mes més o menys em vaig donar d'alta al directori de podcasts del iTunes. Així doncs, els que tingueu un iPhone, iPad o qualsevol altre andromina compatible amb iTunes podrà localitar el meu podcast buscant simplement 'oriolrius.cat', l'enllaç cap a la pàgina del podcast:

screenshot oriolrius.cat a iTunes

Podcast 2×04: SSH avançat

Reading time: 56 – 93 minutes

El podcast

[display_podcast]

Notes sobre el podcast

  • -L: connecta per SSH a un HOST Un cop allà obre una connexió TCP a un altre HOST:PORT i obre un port TCP local que al connectar-hi ens envia al HOST:PORT anteriors, o sigui, portforwarding.
    • -L [bind_address:]port:host:hostport]
  • -W: connecta per SSH a un HOST un cop allà obre una connexió TCP a un altre HOST:PORT i ens retorna a la stdin/stdout el contingut d’aquest darrer enllaç TCP
    • -W host:hostport
  • -R publicar un port: connecta per SSH a un host i un cop allà publica un port TCP, quan un client es connecta a aquest port TCP accedeix per SSH a la màquina que ha llença l’enllaç SSH i obre un altre enllaç TCP a una altre IP:PORT.
    • -R[bind_address:]port:host:hostport
  • -D socks5: connecta per SSH a un HOST i després publica un port SOCKS5/TCP, és a dir, que podem connectar a aquest port local i sortir a internet a través de la IP del HOST on hem connectat per SSH
    • -D [bind_address:]port
  • -w tunel: connecta per SSH a un HOST i el socket que s’ha usat per fer l’enllaç SSH es connecta a dues interficies de tipus TUN, una a cada extrem del socket. Així doncs, si configurem les corresponents IPs a les interficies TUN tenim un tunel/VPN montada entre els extrems.
    • -w local_tun[:remote_tun]

HPN-SSH

La web de: HPN-SSH -> especialment interessant: Dynamic Windows and None Cipher

  • treballa amb mida de finestra dinàmica
  • treballa sense xifrat quan un enllaç no té terminal associat, sovint usat per pas de fitxers

Les proves:

  • Openssh 5.3p1 + hpn-13 (només el patch: Dynamic Windows and None Cipher)
  • després d’aplicar el patch: openssh5.3-dynwindow_noneswitch.diff.gz
  • modifiquem el fitxer: sshconnect2.c
<br><pre>linia: 366<br>- 		if (!tty_flag) /* no null on tty sessions */<br>+ 		if (1) /* no null on tty sessions */</pre><br>

així podem fer SSH sense xifrar només després d’haver fet el login.

exemple ampla de banada d’un SSH amb xifrat aes128-ctr, usant finestra dinàmica:

scp -v -oNoneEnabled=no -oNoneSwitch=yes fitxer root@127.0.0.1:/tmp/ssh
o
ssh -v -oNoneEnabled=no -oNoneSwitch=yes root@127.0.0.1 "dd if=/dev/zero"|pv > /dev/null

velocitat de transferència:  <strong>13.7MB/s</strong>
  • debug ciphers, una única negociació de ciphers:
debug1: AUTH STATE IS 0
debug1: REQUESTED ENC.NAME is '<strong>aes128-ctr</strong>'
debug1: kex: server-><strong>client</strong> aes128-ctr hmac-md5 none
debug1: REQUESTED ENC.NAME is '<strong>aes128-ctr</strong>'
debug1: kex: client-><strong>server</strong> aes128-ctr hmac-md5 none

exemple sense xifrat, usant finestra dinàmica:

scp -v -oNoneEnabled=yes -oNoneSwitch=yes fitxer root@127.0.0.1:/tmp/ssh
o
ssh -v -oNoneEnabled=yes -oNoneSwitch=yes root@127.0.0.1 "dd if=/dev/zero"|pv > /dev/null

velocitat de transferència:  <strong>37.4MB/s</strong>
  • abans del pass de login:
debug1: <strong>AUTH</strong> STATE IS <strong>0</strong>
debug1: REQUESTED ENC.NAME is '<strong>aes128-ctr</strong>'
debug1: kex: server-><strong>client</strong> aes128-ctr hmac-md5 none
debug1: REQUESTED ENC.NAME is '<strong>aes128-ctr</strong>'
debug1: kex: client-><strong>server</strong> aes128-ctr hmac-md5 none
  • després d’autenticar-se:
debug1: <strong>AUTH</strong> STATE IS <strong>1</strong>
debug1: REQUESTED ENC.NAME is '<strong>none</strong>'
debug1: Requesting NONE. Authflag is 1
debug1: None requested post authentication.
debug1: kex: server-><strong>client</strong> none hmac-md5 none
debug1: REQUESTED ENC.NAME is '<strong>none</strong>'
debug1: Requesting NONE. Authflag is 1
debug1: None requested post authentication.
debug1: kex: client-><strong>server</strong> none hmac-md5 none

Podcast 2×03: eines per jugar amb SOCKS5

Reading time: 1 – 2 minutes

Finalment l’última entrega de la trilogia de podcasts sobre SOCKS. Com indica el títol i podeu veure amb els links aquest parla d’eines per montar servidors SOCKS i wrappers per montar clients SOCKS5.

El podcast:

[display_podcast]

Referències:

Podcast 2×02: SOCKS5 Bytestreams (XEP-0065)

Reading time: 116 – 194 minutes

La segona part sobre la trilogia de SOCKS5.

El podcast:

[display_podcast]

Exemples extrets del XEP-0065:

Example 1. Initiator Sends Service Discovery Request to Target

<iq type='get'
    from='initiator@example.com/foo'
    to='target@example.org/bar'
    id='hello'>
  <query xmlns='http://jabber.org/protocol/disco#info'/>
</iq>

Example 2. Target Replies to Service Discovery Request

<iq type='result'
    from='target@example.org/bar'
    to='initiator@example.com/foo'
    id='hello'>
  <query xmlns='http://jabber.org/protocol/disco#info'>
    <identity
        category='proxy'
        type='bytestreams'
        name='SOCKS5 Bytestreams Service'/>
    <feature var='http://jabber.org/protocol/bytestreams'/>
  </query>
</iq>

Example 3. Initiator Sends Service Discovery Request to Server

<iq type='get'
    from='initiator@example.com/foo'
    to='example.com'
    id='server_items'>
  <query xmlns='http://jabber.org/protocol/disco#items'/>
</iq>

Example 4. Server Replies to Service Discovery Request

<iq type='result'
    from='example.com'
    to='initiator@example.com/foo'
    id='server_items'>
  <query xmlns='http://jabber.org/protocol/disco#items'>
    <item jid='streamhostproxy.example.net' name='Bytestreams Proxy'/>
  </query>
</iq>

Example 5. Initiator Sends Service Discovery Request to Proxy

<iq type='get'
    from='initiator@example.com/foo'
    to='streamhostproxy.example.net'
    id='proxy_info'>
  <query xmlns='http://jabber.org/protocol/disco#info'/>
</iq>

Example 6. Server Replies to Service Discovery Request

<iq type='result'
    from='streamhostproxy.example.net'
    to='initiator@example.com/foo'
    id='proxy_info'>
  <query xmlns='http://jabber.org/protocol/disco#info'>
    <identity category='proxy'
              type='bytestreams'
              name='SOCKS5 Bytestreams Service'/>
    <feature var='http://jabber.org/protocol/bytestreams'/>
  </query>
</iq>

Example 7. Initiator Requests Network Address from Proxy

<iq type='get'
    from='initiator@example.com/foo'
    to='streamhostproxy.example.net'
    id='discover'>
  <query xmlns='http://jabber.org/protocol/bytestreams'
         sid='vxf9n471bn46'/>
</iq>

Example 8. Proxy Informs Initiator of Network Address

<iq type='result'
    from='streamhostproxy.example.net'
    to='initiator@example.com/foo'
    id='discover'>
  <query xmlns='http://jabber.org/protocol/bytestreams'>
         sid='vxf9n471bn46'>
    <streamhost
        jid='streamhostproxy.example.net'
        host='24.24.24.1'
        p
        zeroconf='_jabber.bytestreams'/>
  </query>
</iq>

Example 9. Proxy Returns Error to Initiator

<iq type='error'
    from='initiator@example.com/foo'
    to='streamhostproxy.example.net'
    id='discover'>
  <query xmlns='http://jabber.org/protocol/bytestreams'
         sid='vxf9n471bn46'/>
  <error code='403' type='auth'>
    <forbidden xmlns='urn:ietf:params:xml:ns:xmpp-stanzas'/>
  </error>
</iq>

Example 10. Proxy Returns Error to Initiator

<iq type='error'
    from='initiator@example.com/foo'
    to='streamhostproxy.example.net'
    id='discover'>
  <query xmlns='http://jabber.org/protocol/bytestreams'
         sid='vxf9n471bn46'/>
  <error code='405' type='cancel'>
    <not-allowed xmlns='urn:ietf:params:xml:ns:xmpp-stanzas'/>
  </error>
</iq>

Example 11. Initiation of Interaction

<iq type='set'
    from='initiator@example.com/foo'
    to='target@example.org/bar'
    id='initiate'>
  <query xmlns='http://jabber.org/protocol/bytestreams'
         sid='vxf9n471bn46'
         mode='tcp'>
    <streamhost
        jid='initiator@example.com/foo'
        host='192.168.4.1'
        port='5086'/>
    <streamhost
        jid='streamhostproxy.example.net'
        host='24.24.24.1'
        zeroconf='_jabber.bytestreams'/>
  </query>
</iq>

Example 12. Target Refuses Bytestream

<iq type='error'
    from='target@example.org/bar'
    to='initiator@example.com/foo'
    id='initiate'>
  <error code='406' type='auth'>
    <not-acceptable xmlns='urn:ietf:params:xml:ns:xmpp-stanzas'/>
  </error>
</iq>

Example 13. Target Is Unable to Connect to Any StreamHost and Wishes to End Transaction

<iq type='error'
    from='target@example.org/bar'
    to='initiator@example.com/foo'
    id='initiate'>
  <error code='404' type='cancel'>
    <item-not-found xmlns='urn:ietf:params:xml:ns:xmpp-stanzas'/>
  </error>
</iq>

Example 16. Target Notifies Initiator of Connection

<iq type='result'
    from='target@example.org/bar'
    to='initiator@example.com/foo'
    id='initiate'>
  <query xmlns='http://jabber.org/protocol/bytestreams'
         sid='vxf9n471bn46'>
    <streamhost-used jid='streamhostproxy.example.net'/>
  </query>
</iq>

Example 19. Initiator Requests Activation of Bytestream

<iq type='set'
    from='initiator@example.com/foo'
    to='streamhostproxy.example.net'
    id='activate'>
  <query xmlns='http://jabber.org/protocol/bytestreams'
         sid='vxf9n471bn46'>
    <activate>target@example.org/bar</activate>
  </query>
</iq>

Example 20. Proxy Informs Initiator of Activation

<iq type='result'
    from='streamhostproxy.example.net'
    to='initiator@example.com/foo'
    id='activate'/>

Referències:

<iq type=’get’
from=’initiator@example.com/foo’
to=’target@example.org/bar’
id=’hello’>
<query xmlns=’http://jabber.org/protocol/disco#info’/>
</iq>

Podcast 2×01: introudcció i descripció detallada del protcol SOCKS5

Reading time: 3 – 4 minutes

Després de moltes hores de feina estudiant el protocol SOCKS he decidit publicar un podcast que expliqui el seu RFC, el podcast pretent fer una introducció des de la part meś conceptual fins endinsar-se en el fluxe de paquets, els camps de les peticions llençades arribant a explicacions de nivell de bit. Amb l’ajuda dels diagrames adjunts a aquest article, l’RFC1928 i l’explicació del podcast després hauriem d’estar capacitats per implementar un client/servidor SOCKS5.

El podcast:

[display_podcast]

Esquemes que ajuden a seguir el podcast

esquema 1: petició d’un client SOCKS5 al servidor

                   +----+----------+----------+
                   |VER | NMETHODS | METHODS  |
                   +----+----------+----------+
                   | 1  |    1     | 1 to 255 |
                   +----+----------+----------+

esquema 2: resposta del servidor SOCKS5 al client

                         +----+--------+
                         |VER | METHOD |
                         +----+--------+
                         | 1  |   1    |
                         +----+--------+

mètodes d’autenticació

  • X’00’ NO AUTHENTICATION REQUIRED
  • X’01’ GSSAPI
  • X’02’ USERNAME/PASSWORD
  • X’03’ to X’7F’ IANA ASSIGNED
  • X’80’ to X’FE’ RESERVED FOR PRIVATE METHODS
  • X’FF’ NO ACCEPTABLE METHODS

esquema 3: el client SOCKS5 envia una comanda al servidor

        +----+-----+-------+------+----------+----------+
        |VER | CMD |  RSV  | ATYP | DST.ADDR | DST.PORT |
        +----+-----+-------+------+----------+----------+
        | 1  |  1  | X'00' |  1   | Variable |    2     |
        +----+-----+-------+------+----------+----------+

camp: ATYP -> address type

  • IP V4 address: X’01’
  • DOMAINNAME: X’03’
  • IP V6 address: X’04’

esquema 4: resposta del servidor SOCKS5 a la comanda del client

        +----+-----+-------+------+----------+----------+
        |VER | REP |  RSV  | ATYP | BND.ADDR | BND.PORT |
        +----+-----+-------+------+----------+----------+
        | 1  |  1  | X'00' |  1   | Variable |    2     |
        +----+-----+-------+------+----------+----------+

camp: REP -> reply

  • X’00’ succeeded
  • X’01’ general SOCKS server failure
  • X’02’ connection not allowed by ruleset
  • X’03’ Network unreachable
  • X’04’ Host unreachable
  • X’05’ Connection refused
  • X’06’ TTL expired
  • X’07’ Command not supported
  • X’08’ Address type not supported
  • X’09’ to X’FF’ unassigned

esquema 5: encapsulaments per enviaments de paquets UDP

      +-----+----+-----+------------------------+------+
      | ... | IP | UDP | SOCKS5 UDP ASSOCIATION | DATA |
      +-----+----+-----+------------------------+------+

esquema 6: camps de l’encapsulament: UDP ASSOCIATION

      +----+------+------+----------+----------+----------+
      |RSV | FRAG | ATYP | DST.ADDR | DST.PORT |   DATA   |
      +----+------+------+----------+----------+----------+
      | 2  |  1   |  1   | Variable |    2     | Variable |
      +----+------+------+----------+----------+----------+

Referències d’utilitat

  • Apunts per fer el podcast: fitxer .txt amb la llista de coses que havia de comentar al podcast és una barreja de català, castellà i anglès… però pot servir-vos per entendre el que intento explicar
  • Wikipedia: SOCKS
  • RFC’s:
    • RFC1928: SOCKS Protocol v5
    • RFC1929: Username/Password Authentication for SOCKS V5
    • RFC1961: GSS-API Authentication Method for SOCKS V5

podcast 1×13: desafio networking [la solución]

Reading time: < 1 minute A pesar de que la solución se alcanzó y aplico durante los meses de agosto y septiembre, hasta hoy no he podido grabar la solución en este podcast. Espero que haya sabido explicarla bien y que quede claro como se ha hecho para solucionar el problema, sinó preguntad.

podcast 1×12: mail-gateway (GatV2)

Reading time: 2 – 4 minutes

GatV2 es un servidor de correo para hacer smart-relay o para que se entienda mejor el concepto para usar como frontend del servidor de correo de la empresa o del ISP (backend). GatV2 nos filtra todo el correo UCE y nos ofrece una herramienta de gestión del SPAM.

El siguiente esquema ofrece una idea de donde estaría el GatV2:

GatV2 network schema

A través del podcast podreis seguir cual es el proceso que sigue un correo para pasar através del GatV2. Obviamente no es sencillo entender a la primera todo lo que hace pero a través de este gráfico (pinchar encima para zoom), de la explicación y de la documentación de la web del proyecto espero que podais comprender mejor el proceso.

inside GatV2 process

Para ver las capturas de pantalla a las que se habla durante el podcast pasarós por la documentación del proyeco GatV2.

Finalmente el podcast:

[display_podcast]

El podcast dur alrededor de 1h, así pues Jorge me ha ayudado a hacer una tabla de contenidos del mismo así pues, podeis ir directamente al minuto que os interesa del podcast gracias a la siguiente información:

  • Presentación: 0-1m44s
  • Historia: 1m44s – 3m
  • En que consiste: 3m – 8m15s
  • Los componentes: 8m15s – 24m20s
  • Como funciona: 24m20s – 42m49s
  • WebUI del DSPAM: 42m49 – 55m55s
  • Despedida y cierre: 55m55s – 56m56s

En los próximos dias publicaremos (Jorge y yo) el podcast dividido en pequeños MP3 en l página del proyecto GatV2 para mayor comodidad de los interesados en el proyecto.

podcast 1×11: desafio networking [el problema]

Reading time: < 1 minute Hablando sobre el problema del articulo sobre el desafio de networking. También aprovecho para enlazar una buena referencia sobre como comprender los problemas de secuencias TCP:

Espero haberme explicado bien y haber podido describir el problema algo mejor que en el articulo anterior, ya que no es sencillo describir un problema tan inusual.

[display_podcast]

Scroll to Top