OpenMandriva: Mageia (Mageia 9) 20/Agosto/2023 - Anuncio, Descargas.
Blogdrake recomienda descargar las imágenes de instalación (iso) vía torrent para evitar corrupción de datos, aprovechar mejor su ancho de banda y mejorar la difusión de las distribuciones.
NAT y Videoconferencia con MSN Messenger (Soporte para Mandriva)
Resulta que mi máquina actúa como pasarela para dos ordenadores más, cuyos usuarios utilizan diariamente la videoconferencia del MSN Messenger. Y también resulta que dicho cliente requiere de una pasarela UPnP (Universal Plug And Play), algo de lo que mi Mandriva carece a priori. Combinando estos dos factores tenemos mi cabeza como un bombo de quejas diarias, así que me puse a remediar la situación, encontrando a mi salvador (siempre hay alguien que ha tenido tu mismo problema antes) en Linux Internet Gateway Device.
Me bajo el .tgz y empiezo la faena, cuyo proceso narro a continuación por si a alguien le puede ser útil:
- 1. Bajar el .tgz del Linux UPnP SDK versión 1.04 (OJO CON ESTO), que está aquí
- 2. Desempaquetar el upnpsdk-1.04.tar.gz
- 3. Instalar las dependencias del UPnP SDK
$ urpmi glibc-devel $ urpmi e2fsprogs libext2fs2-devel
- 4. En las fuentes del upnpsdk, modificar el archivo src/ssdp/ssdplib.c en la linea 406:
Donde pone - 5. Mmmhhh, sí:
[iraillo@quearte upnpsdk]$ make [root@quearte upnpsdk]$ make install
(dio vieho que nive, se compila como los leone ;)
- 6. Ahora lo mismo pero para linux-igd
[iraillo@quearte linux-igd]$ make [root@quearte linux-igd]$ make install
(ole ole, otra ve nique, si es que me sargo der pellejo, canijo)
SelfAddr.sin_addr.s_addr = inet_addr(SSDP_IP);
cambiar por
SelfAddr.sin_addr.s_addr = htonl(INADDR_ANY);
Ahora ya tenemos un ejecutable llamado upnpd en /usr/bin. Se invoca de la forma
$ upnpd {interfaz_externo} {interfaz_interno}
y para que funcione bien hace falta incluir una ruta de dirección multicast en la red local
$ route add -net 239.0.0.0 netmask 255.0.0.0 {interfaz_interno}
Yo tengo eth0 conectado al cablemodem, y eth1 con la red local. Por tanto, en mi caso sería:
$ route add -net 239.0.0.0 netmask 255.0.0.0 eth1 $ upnpd eth0 eth1
Pero claro, esto vale hasta que haya que reiniciar, así que vamos a establecer la ruta como permanente y a registrar el demonio como un servicio del sistema (aquí ya entramos con el porculeo de versiones según las distribuciones).
- 7a. Establecer ruta permanente 'forma tocatelosgüebo':
Crea o añade a un fichero /etc/sysconfig/networking/devices/{interfaz_interno}.route
(en mi caso se llama eth1.route)
El contenido debería ser algo parecido a:************************************** ADDRESS0=239.0.0.0 GATEWAY0="" NETMASK0=255.0.0.0 **************************************
- 7b. Establecer ruta permanente 'forma de grati':
Usa el webmin (herramienta creada para nuestro goce y disfrute por angelitos del cielo)
- 8. Creación de un script llamado upnpd en /etc/rc.d/init.d. Este archivo está hecho a base de copy & paste, y seguramente sea mejorable.
- 9. Dar permiso de ejecución al script
[root@quearte init.d]$ chmod u+x upnpd
- 10. Registrar el script con chkconfig
[root@quearte init.d]$ chkconfig --add upnpd
- 11. Probar que funciona la ruta:
[root@quearte ~]$ service network restart [root@quearte ~]$ route
- 12. Probar que funciona el servicio:
[root@quearte ~]$ service upnpd start|status|stop|restart
***************************************************************** #!/bin/bash # # chkconfig: 2345 66 34 # description: upnpd arranca el demonio que da soporte UPnP # para videoconferencia en MSN Messenger # ########################## # Interfaz de red externo ########################## EXT_IF=eth0 ########################## # Interfaz de red interno ########################## INT_IF=eth1 #################################################### # Origen de la biblioteca de funciones de init.d #################################################### if [ -f /etc/init.d/functions ] ; then . /etc/init.d/functions elif [ -f /etc/rc.d/init.d/functions ] ; then . /etc/rc.d/init.d/functions else exit 0 fi RETVAL=0 start() { status upnpd > /dev/null RETVAL=$? if [ $RETVAL -gt 0 ]; then gprintf "Comenzando upnpd: " daemon upnpd $EXT_IF $INT_IF RETVAL=$? echo [ $RETVAL -eq 0 ] && touch /var/lock/subsys/upnpd || \ RETVAL=1 return $RETVAL fi } stop() { status upnpd > /dev/null RETVAL=$? if [ $RETVAL -eq 0 ]; then gprintf "Parando upnpd: " killproc upnpd RETVAL=$? echo [ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/upnpd return $RETVAL fi } restart() { stop start } mdkstatus() { status upnpd } case "$1" in start) start ;; stop) stop ;; restart) restart ;; status) mdkstatus ;; condrestart) [ -f /var/lock/subsys/upnpd ] && restart || : ;; *) echo "Uso: $0 {start|stop|restart|condrestart|status}" exit 1 esac exit $? *****************************************************************
En EXT_IF se pone el interfaz externo y en INT_IF el interno.
Respecto a la linea
# chkconfig: 2345 66 34
indica que el servicio se registra para los niveles de ejecución 2,3,4 y 5, y que tiene prioridad 66 en el arranque del sistema y 34 para matarlo en el apagado. Estos valores son a gusto del consumidor y de tu sistema.
Si en la ventana de configuración de los ordenadores con el MSN Messenger en Windows aparece algo como UPnP Firewall, significa que todo va yendo como debería. Tan sólo queda probar la videoconferencia.
Pues nada, espero que esto le pueda servir a alguien. Si alguno encuentra errores (de bulto o detallitos) o tiene críticas, se agradecerán los comentarios.
- Blog de yurupuqui
- Entra a tu cuenta o crea una para poder comentar.
BOFH
# 18819 Usa las etiquetas "code" en
Usa las etiquetas "code" en lugar de "pre", se verá mejor el artículo :-)
Gracias :-)
¿Cómo enviar un BUG?
Documentación
El Blog de Pacho