Comunicacion entre dos servidores ejabberd privados

Contenido archivado

El contenido de la web se encuentra archivado y no se podrá crear nuevo contenido. Más información.

Tagged:

Hola,
soy novato en este tema y necesito un poco de ayuda. Tengo dos servidores ejabberd cada uno en una oficina funcionando en local, y necesito que entre los servidores haya comunicación ya que al añadir en mi cliente nuevos clientes del otro servidor me dice "remote server not found". No tengo dominio ni nada de eso, lo estoy haciendo a partir de direcciones ip para ver si funciona.
Mi cliente es Coccinella. En principio es el que tengo que utilizar ya que es el que le ha gustado a todo el mundo.
Un saludo y gracias de antemano.

Comentarios

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.

La comunicación entre

La comunicación entre servidores Jabber se llama S2S, utiliza el puerto 5269 y ambos servidores deben tener direcciones accesibles en internet (nada de direcciones locales como jabber.localhost).

Quieres tener conexiones S2S entre unos pocos servidores bien conocidos, pero impedir el resto de conexiones S2S.

En ejabberd aún no es posible restringir conexiones S2S en base al servidor. O se permiten todas, o no se permite ninguna.

Aunque quizá con el módulo mod_filter convenientemente instalado y configurado en ambos servidores se pueda restringir el tráfico a solo tus dos servidores. Pero recuerda que esto sirve para restringir: tus servidores deben estar conectados entre sí previamente, y para eso han de usar nombres de internet, no locales.

Gracias por contestar tan

Gracias por contestar tan rapido.
Lo que quiero es que se comuniquen los dos servidores, da igual si se permiten todas las conexiones s2s, lo que quiero es que por lo menos funcione dicha comunicación.
El puerto 5269 lo tengo abierto en los dos routers (el de mi oficina y el de la otra), y lo que me falta es saber como se pueden configurar mediante direcciones ip publicas los dos servidores.
Supongo que a lo mejor no se puede hacer porque según me dices tengo que poner un nombre de dominio de internet, pero si se pudiese hacer sin hacer esto me evitaría todo el problema de dns de servidores.
Pero bueno, si no se puede asi, entonces me gustaria saber como hacer para poder poner un nombre en internet, y si tendría que poner dos, uno para cada servidor ejabberd.
Un saludo.

Si las direcciones IP de los

Si las direcciones IP de los servidores son fijas, y a tus usuarios no les importa tener cuentas tan horribles como pepe@82.200.81.120, pues puedes usar las direcciones IP de los servidores como nombre de los servidores Jabber (y así no tienes que configurar nada de DNS):

Si la IP del servidor es 1.2.3.4, en ejabberd.cfg puedes poner:
{hosts, ["1.2.3.4"]}.

Pero claro, si hasta ahora el servidor Jabber se llamaba "localhost", tus usuarios tendrán que crearse las cuentas de nuevo, y añadirse entre ellos de nuevo...

Si, el nombre de las cuentas

Si, el nombre de las cuentas sería horrible, por lo que mi pregunta era si se podría establecer la comunicacion de los servidores sin tener que cambiar el nombre de las cuentas ni su dominio.
Pienso que eso se debe de establecer en el archivo ejabberd.cfg, diciendole de alguna manera que cuando se quiera añadir un contacto del otro servidor, le dijese la ip publica que tiene y asi se podrían comunicar. Lo que pasa es que el archivo este no vienen muchos ejemplos para que supiese con exactitud como se tendría que hacer.
Ya te digo, si es imposible hacerlo asi, pues tendré que preguntarte haber como se hace con dominios de internet.
Un saludo y gracias de antemano.

Supongamos que los

Supongamos que los servidores se llaman "serv1" y "serv2", y las cuentas Jabber son del estilo pepe@serv1. Quizá una solución sea decirle al sistema operativo de la máquina que hospeda serv1 dónde puede encontrar al servidor serv2. Por ejemplo editando el fichero /etc/hosts o algo similar. Así no tendrías que modificar los servidores ni las cuentas, ni poner DNS.

Mis ips son estaticas, y las

Mis ips son estaticas, y las cuentas son del estilo pepe@serv1, como has descrito antes.
Al utilizar windows en los dos servidores no tengo idea de como decirle como encontrar al serv2.
Si pudieses echarme un cable te lo agradecería muchisimo.
Gracias por todo lo que me estas ayudando porque ando bastante perdido.

¿serv1 es una ip local (del

¿serv1 es una ip local (del tipo 192.168.x.x o 10.x.x.x)?
En ese caso como no sea con alguna vpn o crear alguna ruta especial en el router.........

Asegúrate también de que no hay ningún firewall bloqueando el tráfico por el puerto 5269 entre los servidores

serv1 tiene una ip local del

serv1 tiene una ip local del tipo 192.168.x.x
Y supuestamente no hay nada que bloquee el trafico, ya que en los routers esta abierto el 5269 y en el firewall de windows 5222.
He inentado en c:/windows/system32/drivers/etc poner :
192.168.x.x serv1 #ip privada
80.x.x.x serv2 #ip publica

y no funciona tampoco. Conque no se si podreis hecharme un cable.
Un saludo.

Eso puede ser problemático,

Eso puede ser problemático, porque si tienes cuentas usuario@192.168.x.x cuando desde el otro servidor intentes acceder al primer servidor, lo intentará accediendo a la IP 192.168.x.x que en este caso seguramente corresponderá a un equipo local, y no encontrará el servidor con las cuentas correctas ahí. 192.168.x.x es uno de los rangos reservados para crear redes locales, es decir que ese rango de IP no es usado en ninguna IP pública y, por tanto, el servidor Jabber no puede acceder a ningún servidor en Internet así.

La mejor solución sería usar cuentas usuario@dominio para obtener siempre la ip correcta usando DNS.

Otra solución más chapucera supongo que podría ser, si en el segundo servidor no usan 192.168.x.x como ips locales, crear una ruta en la puerta de enlace para que reenviara las consultas a la ip pública del primer servidor, o si usa 192.168.x.x quizás usar iptables o algo así (en la máquina local, de la red del segundo servidor, que tiene la ip del primer servidor) para enrutar las conexiones a la ip pública del primer servidor.....

A lo mejor me tengo que

A lo mejor me tengo que explicar mejor...
Las cuentas no son del tipo: usuario@192.168.x.x
Yo tengo usuarios del tipo:
- juan@serv1 #los usuarios que pertenecen al servidor ejabberd 1,siendo serv1 el nombre del servidor de mi oficina.
- pepe@serv2 #los usuarios que pertenecen al servidor ejabberd 2, siendo serv2 el nombre del servidor de otra oficina.
Las dos oficinas independientemente funcionan bien en local, pero cuando yo que me conecto como juan@serv1 en el servidor serv1, y quiero añadir un usuario de la otra oficina como pepe@serv2 perteneciente al servidor serv2, me dice: "remote server not found".
Tanto los puertos 5269 en routers y 5222 en clientes estan abiertos.
O sea, que se tiene que establecer una comunicación entre servidores para que cuando yo añada con mi usuario juan@serv1, cuentas del serv2 como pepe@serv2 le pudiese indicar la ip publica 80.x.x.x del router2 y puerto 5269,o algo asi.

Ya estuvimos hablando en la

Ya estuvimos hablando en la sala, ¿lo arreglaste al final?

Todavia no lo he arreglado.

Todavia no he podido probar mas cosas. El lunes te cuento.
Un saludo.

Solucionado, o eso creo.

Bueno, parece ser que funciona. Lo último que hice fue poner en el archivo hosts que se encuentra en la ruta:

c:/windows/system32/drivers/etc/hosts

las ip publica de mi oficina en serv2 y la ip publica de la otra oficina en mi servidor que es serv1.
No se porque el otro dia que hice lo mismo no funcionaba, supongo yo que sería porque tendría que reiniciar el pc.
Bueno sigo haciendo pruebas haber si consigo averiguar todos los pasos para tener una documentación para si a alguien le vuelve a pasar poder pasársela.
Un saludo y gracias por todo.

Si las ips son dinámicas

Si las ips son dinámicas (cambian cada X tiempo) y solo vais a usarlo para jabber, podéis usar algún sistema de DNS dinámico como los de dyndns. Si queréis algo que parezca más profesional, porque lo va a usar gente de fuera de la empresa, yo cogería IP estática y un dominio normal.