Já recebi vários e-mails de pessoas que conseguiram fazer seus servidores Openfire funcionarem perfeitamente na rede local, mas que com o passar do tempo tem a necessidade de que os mesmos possam ser utilizados via Internet, mas não sabem o que precisa ser feito para resolver tal situação.

Assim, resolvi escrever esse post, discutindo alguns métodos e requerimentos para que isso funcione corretamente.

Existem três cenários que são os mais comuns (pelo que tenho percebido):

  • O Servidor Openfire está rodando no mesmo servidor que o roteador/firewall.
  • O Servidor Openfire está rodando em um outro servidor dentro da rede interna mas o mesmo não possui um IP “público”. Saiba mais sobre IPs de redes privadas aqui.
  • O Servidor Openfire está rodando em outro servidor da rede interna, mas o mesmo possui um IP “público”.
Em todos os casos citados existem premissas básicas para que o acesso via Internet funcione:
  1. O domínio configurado no Openfire deve ser resolvido via DNS, tanto na rede interna quanto na Internet. Já vi várias pessoas que configuram o domínio como o IP do servidor na rede interna. Isso obviamente impede o uso via Internet, pois tal IP não é roteável. O mais indicado é que você use um nome como jabber.dominio.com.br, e que esse nome seja resolvido ou para o IP “público” do roteador/firewall ou para o IP do Servidor Openfire, caso ele possui um IP “público”. Nos casos onde se usa ADSL com IP dinâmico, uma dica é registrar um DNS dinâmico no no-ip ou no dyndns e depois pedir a empresa que cuida de seu DNS para configurar o jabber.dominio.com.br para ser um CNAME desse nome registrado.
  2. Em quaisquer das situações será necessário alterar as políticas de firewall de sua rede. Estou partindo do princípio que você tem acesso ao firewall de sua rede. Como trabalho com Linux, estou também supondo que você tenha conhecimento da ferramenta iptables.
  3. Caso você use um link ADSL, o ideal é que você tenha um modem que funcione em bridge, e que sua operadora utilize o protocolo PPPoE. Assim você poderá se livrar do NAT no modem, e não será necessário configurar o mesmo. Caso não seja seu caso, tal post não tem intenção de debater configurações de modens, por isso consulte a documentação de seu equipamento. Cabe citar que o fato de não ser PPPoE não quer dizer que não vá funcionar, mas sim que isso poderá envolver outros passos e técnicas que não serão discutidos aqui, para que seu acesso externo funcione.

Caso 1 – O Servidor Openfire está rodando no mesmo servidor que é o roteador/firewall.

Nessa situação, basta apenas liberar o acesso de entrada das portas que serão necessárias em seu servidor. Supondo que o domínio do Openfire configurado seja jabber.dominio.com.br você pode fazer isso com os seguintes comandos:

# XMPP e XMPP SSL
iptables -A INPUT -d jabber.dominio.com.br -p tcp –dport 5222:5223 -j ACCEPT
# Server 2 Server
iptables -A INPUT -d jabber.dominio.com.br -p tcp –dport 5269 -j ACCEPT

Caso 2 – O Servidor Openfire está rodando em um outro servidor dentro da rede interna mas o mesmo não possui um IP “público”.

Supondo que seu servidor Openfire esteja rodando na rede interna no IP 192.168.0.10, e que o domínio do Openfire configurado seja jabber.dominio.com.br podemos usar as seguintes regras pra desviar todo o tráfego vindo para as portas XMPP para o destino.

iptables -A FORWARD -d jabber.dominio.com.br -p tcp –dport 5222:5223 -j ACCEPT
iptables -A FORWARD -d jabber.dominio.com.br -p tcp –dport 5269 -j ACCEPT

iptables -t nat -A PREROUTING -d jabber.dominio.com.br -p tcp –dport 5222:5223 -j DNAT –to-destination 192.168.0.10
iptables -t nat -A PREROUTING -d jabber.dominio.com.br -p tcp –dport 5269 -j DNAT –to-destination 192.168.0.10

Caso 3 – O Servidor Openfire está rodando em outro servidor da rede interna, mas o mesmo possui um IP “público”.

Supondo que seu servidor Openfire esteja rodando em um servidor que tem IP “público” (mas que não é o mesmo servidor roteador/firewall) e que o domínio do Openfire configurado seja jabber.dominio.com.br e ainda que esse nome resolva para o IP do servidor que roda o Openfire, podemos usar as seguintes regras pra aceitar todo o tráfego vindo para as portas XMPP do mesmo.

iptables -A FORWARD -d jabber.dominio.com.br -p tcp –dport 5222:5223 -j ACCEPT
iptables -A FORWARD -d jabber.dominio.com.br -p tcp –dport 5269 -j ACCEPT

Acredito que com as dicas acima você consiga fazer com que seu servidor Openfire possa ser usado pela Internet. Caso seu cenário seja diferente, ou você tenha alguma dúvida, fique à vontade para postar nos comentários.

Até a próxima.

Usando seu servidor Openfire através da Internet
  • Boa dica, eu estou usando a 4 meses o serviço<br />http://www.dnsexit.com/ e com ele estou conseguindo hospedar com endereço dinãmico sem problemas rodando no ubuntu 8.04 server, o bom dele que tem um pequeno script que atualiza seu ip cada vêz que reinicia o serviço, vc pode fazer o registro do dns direto no registro.br no caso

  • Anonymous

    meu problema é o seguinte tenho o openfire num servidor linux e tenho um ip no servidor linux para acesso externo porem quando os clientes externos vao acessar a audio conferencia da prblema no firewall

  • O seu IP de Internet está no próprio servidor Openfire e ele está direto na Internet (ou seja, o firewall dele é local) ?<br /><br />[]s

  • Marcelo veja se pode me ajudar, o caso que mais se enquadra no meu é o caso 2, servidor na rede interna sem ip publico. Minha duvida é a seguinte o servidor que esta rodando é empresa.local diferente do dominio da internet empresa.com.br. <br />nesse caso como publicar o CNAME no registro.br ?

  • Olá.<br /><br />Como você já está com o servidor em produção eu faria tal alteração da seguinte forma: <br /><br />* Configure o domínio no Openfire como xmpp.empresa.com.br (os JIDs dos usuários vão se alterar para user@xmpp.empresa.com.br, e tu vai ter de ajustar os contatos (roster) no DB – é o mais rápido e prático). <br /><br />* Crie uma entrada em seu DNS que aponte o xmpp.empresa.com.br

  • Bom dia Marcelo, excelente topico!<br />Comecei a utilizar o open fire mas em ambiente windows.<br />Atualmente ja tenho um TS configurado, atraves do dyndns com o nome empresa.dyndns.org , atraves deste endereço eu acesso o TS interno aqui na empresa que tenho o plugin do DYNDNS instalado.<br /><br />Minha duvida é a seguinte: Posso instalar o plugin do DYNDNS em outro servidor e configurar no

  • Você precisa que o IP que responde pelo endereço empresa.dyndns.org também responda pelas portas do Openfire (5222,5223 e principalmente 5269). <br /><br />Se o IP vai ficar direto no servidor ou se você vai usar NAT é outra questão. Mas como você já tem o IP em outro servidor creio que terá de fazer um redirecionamento de porta para teu servidor Openfire.<br /><br />Infelizmente não tenho nada

  • Anonymous

    Boa Tarde Marcelo,<br />Minha aplicação está funcionando, porém fui habilitar voz e não está funcionando. Minha situação se aplica ao caso 2. Já liberei na filter as portas 3478 e 3479 (Primária e Secundária no stun)… tem alguma idéia?

  • Olá.<br /><br />Infelizmente nunca precisei utilizar os recursos de voz então não tenho como te dar alguma dica a respeito.<br /><br />[]s

  • Ola Marcelo, a minha necessidade é liberar o acesso externo apenas para alguns usuarios do openfire é possivel fazer isso ? conexoes vindas da rede interna todos os usuarios se conectao ao servidor openfire ja na rede externa (internet) penas os usuarios que forem necessarios…. obrgido desde ja

  • Tche,<br /><br />nunca ouvi falar de tal recurso para o Openfire, mas talvez alguem tenha desenvolvido um plugin para isso.<br /><br />Se o mesmo existir voce podera encontra-lo nos foruns da comunidade do Openfire no site da Ignite Realtime.<br /><br />[]s

Animated Social Media Icons by Acurax Responsive Web Designing Company
Optimization WordPress Plugins & Solutions by W3 EDGE
%d blogueiros gostam disto: