[Решено] Ejabberd не проходит авторизация при коннекте на внешний ip

Автор gardarea51, 11 мая 2016, 14:42:20

« назад - далее »

0 Пользователи и 1 гость просматривают эту тему.

gardarea51

Друзья, добрый день!
Есть работающий ejabberd, которым пользуются клиенты локальной сети. Возникла надобность подключиться извне, но в логах ругается на то, что авторизация провалена. Подскажите что не так в моем конфиге: override_global.
override_local.
override_acls.

{loglevel, 4}.
{hosts, ["gw.urfu-nsk", "5.x.x.8"]}.
{s2s_default_policy, deny}.

{listen,
[
  {5222, ejabberd_c2s, [
                        {access, c2s},
                        {shaper, c2s_shaper},
                        {max_stanza_size, 65536},
                        {certfile, "/etc/ejabberd/ejabberd.pem"},
                        starttls
                       ]},
%  {5269, ejabberd_s2s_in, [
%                          {shaper, s2s_shaper},
%                          {max_stanza_size, 131072}
%                         ]},
  {5280, ejabberd_http, [
                         %%{request_handlers,
                         %% [
                         %%  {["pub", "archive"], mod_http_fileserver}
                         %% ]},
                         captcha,
                         http_bind,
                         http_poll,
                         %%register,
                         web_admin
                        ]}
]}.

%{s2s_use_starttls, true}.
%{s2s_certfile, "/etc/ejabberd/server.pem"}.

{auth_method, internal}.
{shaper, normal, {maxrate, 1000}}.
{shaper, fast, {maxrate, 50000}}.
{max_fsm_queue, 1000}.

{acl, admin, {user, "gard", "gw.urfu-nsk"}}.
{acl, local, {user_regexp, ""}}.

{access, max_user_sessions, [{10, all}]}.                             
{access, max_user_offline_messages, [{5000, admin}, {100, all}]}.     
{access, local, [{allow, local}]}.                                   
{access, c2s, [{deny, blocked}, {allow, all}]}.                   
{access, c2s_shaper, [{none, admin}, {normal, all}]}.
%{access, s2s_shaper, [{fast, all}]}.                                   
{access, announce, [{allow, admin}]}.                                   
{access, configure, [{allow, admin}]}.                                 
{access, muc_admin, [{allow, admin}]}.                                 
{access, muc_create, [{allow, local}]}.                               
{access, muc, [{allow, all}]}.                                       
{access, pubsub_createnode, [{allow, local}]}.                       
{access, register, [{deny, all}]}.                                 


{language, "ru"}.

{modules,
[
  {mod_adhoc,    []},
  {mod_announce, [{access, announce}]},
  {mod_caps,     []},
  {mod_configure,[]}, %требует mod_adhoc
  {mod_disco,    []},
  %{mod_http_bind, []},
  {mod_last,     []},
  %{mod_muc,      [
  %               {host, "rooms.smb.urfu-nsk"},
  %               {access, muc},
  %               {access_create, muc_create},
  %               {access_persistent, muc_create},
  %               {access_admin, muc_admin}
  %              ]},
  {mod_offline,  [{access_max_user_messages, max_user_offline_messages}]},
  {mod_ping,     []},
  {mod_privacy,  []},
  {mod_private,  []},
  %{mod_register, [
  %               {welcome_message, {"Здравствуйте!","Добро пожаловать на наш jabber-сервер."}},
  %               {registration_watchers, ["gard@smb.urfu-nsk"]},
  %               {ip_access, [{allow, "192.168.2.0/24"}, {deny, "0.0.0.0/0"}]},
  %               {access, register}
  %              ]},
  {mod_roster,   []},
  {mod_shared_roster,[]},
  {mod_stats,    []},
  {mod_time,     []},
  {mod_vcard,    []},
  {mod_version,  []}
]}.


При попытке подключения к серверу как gard@5.x.x.8 принимаю сертификат, а потом получаю ошибку авторизации. В логах ejabberd следующее:=INFO REPORT==== 2016-05-11 10:49:49 ===
I(<0.386.0>:ejabberd_listener:281) : (#Port<0.2123>) Accepted connection {{5,199,193,231},62144} -> {{5,x,x,8},5222}

=INFO REPORT==== 2016-05-11 10:49:51 ===
I(<0.1037.0>:ejabberd_c2s:802) : ({socket_state,tls,{tlssock,#Port<0.2123>,#Port<0.2125>},<0.1036.0>}) Failed authentication for gard@5.x.x.8

=INFO REPORT==== 2016-05-11 10:49:52 ===
I(<0.1037.0>:ejabberd_c2s:649) : ({socket_state,tls,{tlssock,#Port<0.2123>,#Port<0.2125>},<0.1036.0>}) Failed authentication for gard@5.x.x.8


Как же к нему подключиться? =)

oermolaev

может не все необходимые порты открыты/проброшены?
5222, 5223, 5269 ?

gardarea51

#2
Открыты в том и дело, только что добавил порт 5269 как написали вы:
Chain tcp_allow (1 references)
target     prot opt source               destination
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0            multiport dports 5222,5223,5269

Но все равно не авторизуется :(

Cообщение объединено 12 мая 2016, 08:25:36

В общем разобрался, все дело в этом: {hosts, ["gw.urfu-nsk", "5.x.x.8"]}.
Раз я подключаюсь извне, то указываю при подключении другой хост и для него нужно было зарегистрировать пользователя, уже другого.
Трабл в том, что не могу общаться с пользователями с хоста gw.urfu-nsk, ростер пуст.

endru

gardarea51, я использую Openfire, и проблема точно такие же, поэтому все пользователи у меня заведены по имени внешнего хоста, никаких подключений по IP адресу.

а у тебя получается все подключались по IP адресу локальной сети? как вариант перенаправляй трафик iptables на нужный интерфейс и нужный порт. но это костыль к сожалению...

oermolaev

#4
У меня работает как по ip, так и по имени (dns потому что), сам сервер внутри сети на виртуальной машине, порты проброшены с помощью iptables (почему костыль?)
hosts прописан по доменному имени:
{hosts, ["domenname.net"]}.

gardarea51

#5
У нас есть внешний белый IP, а вот полного доменного имени нет.
Потому юзал я локальную днс-зону.

Сейчас в админке ejabberd есть у меня два виртуальных хоста: gw.urfu-nsk (к которому подключены пользователи конторы) и 5.х.х.8 (внешний белый IP, к которому подключен я чеез созданную новую учетку). Не могу сообразить как я gard@5.x.x.8 могу общаться скажем с юзером user@gw.urfu-nsk.

Как вариант перерегать всех юзеров на новый вирт. хост по IP.

ps: в админке заметил, что в обоих виртуальных хостах есть пункт "Узлы" и в обоих хостах "Работающие узлы ejabberd@gw).

oermolaev

#6
Я делал так. Виртуальный хост у меня один единственный. Но общаться я могу и с пользователями других серверов, например jabber.ru

gardarea51

#7
А у меня вот получается два хоста, и как юзерам с одного хоста общаться с юзерами другого непонятно.
Изначально жабер делался для общения только в пределах локальной сети, так и появился хост gw.urfu-nsk.
Теперича надо подключиться к чату не из локальной сети, а из внехи. Вот так и нарисовался второй хост - белый IP.

Cообщение объединено 12 мая 2016, 11:46:56

oermolaev, спасибо, точно-ж!
Добавил в хостс на своем ноутбуке адрес с алиасом gw.urfu-nsk и спокойно подключился к жаберу в соответствующий вирт. хост.